diff --git a/.yarn/patches/playwright-npm-1.58.2-0c12daad27.patch b/.yarn/patches/playwright-npm-1.58.2-0c12daad27.patch new file mode 100644 index 00000000000..959ce60b8eb --- /dev/null +++ b/.yarn/patches/playwright-npm-1.58.2-0c12daad27.patch @@ -0,0 +1,13 @@ +diff --git a/lib/transform/transform.js b/lib/transform/transform.js +index 715bcce88b2bcc5647718f3c58bb1ebdd9585fa0..df097ca05160c58185b2b277f45a3f2aeb667ed7 100644 +--- a/lib/transform/transform.js ++++ b/lib/transform/transform.js +@@ -179,7 +179,7 @@ function resolveHook(filename, specifier) { + function shouldTransform(filename) { + if (_externalMatcher(filename)) + return false; +- return !(0, import_compilationCache.belongsToNodeModules)(filename); ++ return !(0, import_compilationCache.belongsToNodeModules)(filename) || filename.includes('@protontech'); + } + let transformData; + function setTransformData(pluginName, value) { diff --git a/.yarn/releases/yarn-4.13.0.cjs b/.yarn/releases/yarn-4.13.0.cjs deleted file mode 100755 index dc3067ee3b9..00000000000 --- a/.yarn/releases/yarn-4.13.0.cjs +++ /dev/null @@ -1,940 +0,0 @@ -#!/usr/bin/env node -/* eslint-disable */ -//prettier-ignore -(()=>{var gje=Object.create;var tU=Object.defineProperty;var dje=Object.getOwnPropertyDescriptor;var mje=Object.getOwnPropertyNames;var yje=Object.getPrototypeOf,Eje=Object.prototype.hasOwnProperty;var Ie=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof require<"u"?require:t)[r]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var Ze=(e,t)=>()=>(e&&(t=e(e=0)),t);var G=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Yt=(e,t)=>{for(var r in t)tU(e,r,{get:t[r],enumerable:!0})},Ije=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of mje(t))!Eje.call(e,a)&&a!==r&&tU(e,a,{get:()=>t[a],enumerable:!(s=dje(t,a))||s.enumerable});return e};var et=(e,t,r)=>(r=e!=null?gje(yje(e)):{},Ije(t||!e||!e.__esModule?tU(r,"default",{value:e,enumerable:!0}):r,e));var Ai={};Yt(Ai,{SAFE_TIME:()=>lX,S_IFDIR:()=>KP,S_IFLNK:()=>JP,S_IFMT:()=>_f,S_IFREG:()=>bB});var _f,KP,bB,JP,lX,cX=Ze(()=>{_f=61440,KP=16384,bB=32768,JP=40960,lX=456789e3});var or={};Yt(or,{EBADF:()=>Go,EBUSY:()=>Cje,EEXIST:()=>bje,EINVAL:()=>Bje,EISDIR:()=>Dje,ENOENT:()=>vje,ENOSYS:()=>wje,ENOTDIR:()=>Sje,ENOTEMPTY:()=>xje,EOPNOTSUPP:()=>kje,EROFS:()=>Pje,ERR_DIR_CLOSED:()=>rU});function wc(e,t){return Object.assign(new Error(`${e}: ${t}`),{code:e})}function Cje(e){return wc("EBUSY",e)}function wje(e,t){return wc("ENOSYS",`${e}, ${t}`)}function Bje(e){return wc("EINVAL",`invalid argument, ${e}`)}function Go(e){return wc("EBADF",`bad file descriptor, ${e}`)}function vje(e){return wc("ENOENT",`no such file or directory, ${e}`)}function Sje(e){return wc("ENOTDIR",`not a directory, ${e}`)}function Dje(e){return wc("EISDIR",`illegal operation on a directory, ${e}`)}function bje(e){return wc("EEXIST",`file already exists, ${e}`)}function Pje(e){return wc("EROFS",`read-only filesystem, ${e}`)}function xje(e){return wc("ENOTEMPTY",`directory not empty, ${e}`)}function kje(e){return wc("EOPNOTSUPP",`operation not supported, ${e}`)}function rU(){return wc("ERR_DIR_CLOSED","Directory handle was closed")}var zP=Ze(()=>{});var sl={};Yt(sl,{BigIntStatsEntry:()=>aE,DEFAULT_MODE:()=>sU,DirEntry:()=>nU,StatEntry:()=>oE,areStatsEqual:()=>oU,clearStats:()=>ZP,convertToBigIntStats:()=>Rje,makeDefaultStats:()=>uX,makeEmptyStats:()=>Qje});function uX(){return new oE}function Qje(){return ZP(uX())}function ZP(e){for(let t in e)if(Object.hasOwn(e,t)){let r=e[t];typeof r=="number"?e[t]=0:typeof r=="bigint"?e[t]=BigInt(0):iU.types.isDate(r)&&(e[t]=new Date(0))}return e}function Rje(e){let t=new aE;for(let r in e)if(Object.hasOwn(e,r)){let s=e[r];typeof s=="number"?t[r]=BigInt(Math.floor(s)):iU.types.isDate(s)&&(t[r]=new Date(s))}return t.atimeNs=t.atimeMs*BigInt(1e6)+BigInt(Math.floor(e.atimeMs%1*1e3))*BigInt(1e3),t.mtimeNs=t.mtimeMs*BigInt(1e6)+BigInt(Math.floor(e.mtimeMs%1*1e3))*BigInt(1e3),t.ctimeNs=t.ctimeMs*BigInt(1e6)+BigInt(Math.floor(e.ctimeMs%1*1e3))*BigInt(1e3),t.birthtimeNs=t.birthtimeMs*BigInt(1e6)+BigInt(Math.floor(e.birthtimeMs%1*1e3))*BigInt(1e3),t}function oU(e,t){if(e.atimeMs!==t.atimeMs||e.birthtimeMs!==t.birthtimeMs||e.blksize!==t.blksize||e.blocks!==t.blocks||e.ctimeMs!==t.ctimeMs||e.dev!==t.dev||e.gid!==t.gid||e.ino!==t.ino||e.isBlockDevice()!==t.isBlockDevice()||e.isCharacterDevice()!==t.isCharacterDevice()||e.isDirectory()!==t.isDirectory()||e.isFIFO()!==t.isFIFO()||e.isFile()!==t.isFile()||e.isSocket()!==t.isSocket()||e.isSymbolicLink()!==t.isSymbolicLink()||e.mode!==t.mode||e.mtimeMs!==t.mtimeMs||e.nlink!==t.nlink||e.rdev!==t.rdev||e.size!==t.size||e.uid!==t.uid)return!1;let r=e,s=t;return!(r.atimeNs!==s.atimeNs||r.mtimeNs!==s.mtimeNs||r.ctimeNs!==s.ctimeNs||r.birthtimeNs!==s.birthtimeNs)}var iU,sU,nU,oE,aE,aU=Ze(()=>{iU=et(Ie("util")),sU=33188,nU=class{constructor(){this.name="";this.path="";this.mode=0}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&61440)===16384}isFIFO(){return!1}isFile(){return(this.mode&61440)===32768}isSocket(){return!1}isSymbolicLink(){return(this.mode&61440)===40960}},oE=class{constructor(){this.uid=0;this.gid=0;this.size=0;this.blksize=0;this.atimeMs=0;this.mtimeMs=0;this.ctimeMs=0;this.birthtimeMs=0;this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=0;this.ino=0;this.mode=sU;this.nlink=1;this.rdev=0;this.blocks=1}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&61440)===16384}isFIFO(){return!1}isFile(){return(this.mode&61440)===32768}isSocket(){return!1}isSymbolicLink(){return(this.mode&61440)===40960}},aE=class{constructor(){this.uid=BigInt(0);this.gid=BigInt(0);this.size=BigInt(0);this.blksize=BigInt(0);this.atimeMs=BigInt(0);this.mtimeMs=BigInt(0);this.ctimeMs=BigInt(0);this.birthtimeMs=BigInt(0);this.atimeNs=BigInt(0);this.mtimeNs=BigInt(0);this.ctimeNs=BigInt(0);this.birthtimeNs=BigInt(0);this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=BigInt(0);this.ino=BigInt(0);this.mode=BigInt(sU);this.nlink=BigInt(1);this.rdev=BigInt(0);this.blocks=BigInt(1)}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&BigInt(61440))===BigInt(16384)}isFIFO(){return!1}isFile(){return(this.mode&BigInt(61440))===BigInt(32768)}isSocket(){return!1}isSymbolicLink(){return(this.mode&BigInt(61440))===BigInt(40960)}}});function Lje(e){let t,r;if(t=e.match(Nje))e=t[1];else if(r=e.match(Oje))e=`\\\\${r[1]?".\\":""}${r[2]}`;else return e;return e.replace(/\//g,"\\")}function Mje(e){e=e.replace(/\\/g,"/");let t,r;return(t=e.match(Tje))?e=`/${t[1]}`:(r=e.match(Fje))&&(e=`/unc/${r[1]?".dot/":""}${r[2]}`),e}function XP(e,t){return e===fe?AX(t):lU(t)}var PB,vt,Er,fe,K,fX,Tje,Fje,Nje,Oje,lU,AX,ol=Ze(()=>{PB=et(Ie("path")),vt={root:"/",dot:".",parent:".."},Er={home:"~",nodeModules:"node_modules",manifest:"package.json",lockfile:"yarn.lock",virtual:"__virtual__",pnpJs:".pnp.js",pnpCjs:".pnp.cjs",pnpData:".pnp.data.json",pnpEsmLoader:".pnp.loader.mjs",rc:".yarnrc.yml",env:".env"},fe=Object.create(PB.default),K=Object.create(PB.default.posix);fe.cwd=()=>process.cwd();K.cwd=process.platform==="win32"?()=>lU(process.cwd()):process.cwd;process.platform==="win32"&&(K.resolve=(...e)=>e.length>0&&K.isAbsolute(e[0])?PB.default.posix.resolve(...e):PB.default.posix.resolve(K.cwd(),...e));fX=function(e,t,r){return t=e.normalize(t),r=e.normalize(r),t===r?".":(t.endsWith(e.sep)||(t=t+e.sep),r.startsWith(t)?r.slice(t.length):null)};fe.contains=(e,t)=>fX(fe,e,t);K.contains=(e,t)=>fX(K,e,t);Tje=/^([a-zA-Z]:.*)$/,Fje=/^\/\/(\.\/)?(.*)$/,Nje=/^\/([a-zA-Z]:.*)$/,Oje=/^\/unc\/(\.dot\/)?(.*)$/;lU=process.platform==="win32"?Mje:e=>e,AX=process.platform==="win32"?Lje:e=>e;fe.fromPortablePath=AX;fe.toPortablePath=lU});async function $P(e,t){let r="0123456789abcdef";await e.mkdirPromise(t.indexPath,{recursive:!0});let s=[];for(let a of r)for(let n of r)s.push(e.mkdirPromise(e.pathUtils.join(t.indexPath,`${a}${n}`),{recursive:!0}));return await Promise.all(s),t.indexPath}async function pX(e,t,r,s,a){let n=e.pathUtils.normalize(t),c=r.pathUtils.normalize(s),f=[],p=[],{atime:h,mtime:E}=a.stableTime?{atime:hd,mtime:hd}:await r.lstatPromise(c);await e.mkdirpPromise(e.pathUtils.dirname(t),{utimes:[h,E]}),await cU(f,p,e,n,r,c,{...a,didParentExist:!0});for(let C of f)await C();await Promise.all(p.map(C=>C()))}async function cU(e,t,r,s,a,n,c){let f=c.didParentExist?await hX(r,s):null,p=await a.lstatPromise(n),{atime:h,mtime:E}=c.stableTime?{atime:hd,mtime:hd}:p,C;switch(!0){case p.isDirectory():C=await _je(e,t,r,s,f,a,n,p,c);break;case p.isFile():C=await Gje(e,t,r,s,f,a,n,p,c);break;case p.isSymbolicLink():C=await qje(e,t,r,s,f,a,n,p,c);break;default:throw new Error(`Unsupported file type (${p.mode})`)}return(c.linkStrategy?.type!=="HardlinkFromIndex"||!p.isFile())&&((C||f?.mtime?.getTime()!==E.getTime()||f?.atime?.getTime()!==h.getTime())&&(t.push(()=>r.lutimesPromise(s,h,E)),C=!0),(f===null||(f.mode&511)!==(p.mode&511))&&(t.push(()=>r.chmodPromise(s,p.mode&511)),C=!0)),C}async function hX(e,t){try{return await e.lstatPromise(t)}catch{return null}}async function _je(e,t,r,s,a,n,c,f,p){if(a!==null&&!a.isDirectory())if(p.overwrite)e.push(async()=>r.removePromise(s)),a=null;else return!1;let h=!1;a===null&&(e.push(async()=>{try{await r.mkdirPromise(s,{mode:f.mode})}catch(S){if(S.code!=="EEXIST")throw S}}),h=!0);let E=await n.readdirPromise(c),C=p.didParentExist&&!a?{...p,didParentExist:!1}:p;if(p.stableSort)for(let S of E.sort())await cU(e,t,r,r.pathUtils.join(s,S),n,n.pathUtils.join(c,S),C)&&(h=!0);else(await Promise.all(E.map(async x=>{await cU(e,t,r,r.pathUtils.join(s,x),n,n.pathUtils.join(c,x),C)}))).some(x=>x)&&(h=!0);return h}async function Hje(e,t,r,s,a,n,c,f,p,h){let E=await n.checksumFilePromise(c,{algorithm:"sha1"}),C=420,S=f.mode&511,x=`${E}${S!==C?S.toString(8):""}`,I=r.pathUtils.join(h.indexPath,E.slice(0,2),`${x}.dat`),T;(ae=>(ae[ae.Lock=0]="Lock",ae[ae.Rename=1]="Rename"))(T||={});let O=1,U=await hX(r,I);if(a){let ie=U&&a.dev===U.dev&&a.ino===U.ino,ue=U?.mtimeMs!==Uje;if(ie&&ue&&h.autoRepair&&(O=0,U=null),!ie)if(p.overwrite)e.push(async()=>r.removePromise(s)),a=null;else return!1}let Y=!U&&O===1?`${I}.${Math.floor(Math.random()*4294967296).toString(16).padStart(8,"0")}`:null,te=!1;return e.push(async()=>{if(!U&&(O===0&&await r.lockPromise(I,async()=>{let ie=await n.readFilePromise(c);await r.writeFilePromise(I,ie)}),O===1&&Y)){let ie=await n.readFilePromise(c);await r.writeFilePromise(Y,ie);try{await r.linkPromise(Y,I)}catch(ue){if(ue.code==="EEXIST")te=!0,await r.unlinkPromise(Y);else throw ue}}a||await r.linkPromise(I,s)}),t.push(async()=>{U||(await r.lutimesPromise(I,hd,hd),S!==C&&await r.chmodPromise(I,S)),Y&&!te&&await r.unlinkPromise(Y)}),!1}async function jje(e,t,r,s,a,n,c,f,p){if(a!==null)if(p.overwrite)e.push(async()=>r.removePromise(s)),a=null;else return!1;return e.push(async()=>{let h=await n.readFilePromise(c);await r.writeFilePromise(s,h)}),!0}async function Gje(e,t,r,s,a,n,c,f,p){return p.linkStrategy?.type==="HardlinkFromIndex"?Hje(e,t,r,s,a,n,c,f,p,p.linkStrategy):jje(e,t,r,s,a,n,c,f,p)}async function qje(e,t,r,s,a,n,c,f,p){if(a!==null)if(p.overwrite)e.push(async()=>r.removePromise(s)),a=null;else return!1;return e.push(async()=>{await r.symlinkPromise(XP(r.pathUtils,await n.readlinkPromise(c)),s)}),!0}var hd,Uje,uU=Ze(()=>{ol();hd=new Date(456789e3*1e3),Uje=hd.getTime()});function ex(e,t,r,s){let a=()=>{let n=r.shift();if(typeof n>"u")return null;let c=e.pathUtils.join(t,n);return Object.assign(e.statSync(c),{name:n,path:void 0})};return new xB(t,a,s)}var xB,gX=Ze(()=>{zP();xB=class{constructor(t,r,s={}){this.path=t;this.nextDirent=r;this.opts=s;this.closed=!1}throwIfClosed(){if(this.closed)throw rU()}async*[Symbol.asyncIterator](){try{let t;for(;(t=await this.read())!==null;)yield t}finally{await this.close()}}read(t){let r=this.readSync();return typeof t<"u"?t(null,r):Promise.resolve(r)}readSync(){return this.throwIfClosed(),this.nextDirent()}close(t){return this.closeSync(),typeof t<"u"?t(null):Promise.resolve()}closeSync(){this.throwIfClosed(),this.opts.onClose?.(),this.closed=!0}}});function dX(e,t){if(e!==t)throw new Error(`Invalid StatWatcher status: expected '${t}', got '${e}'`)}var mX,tx,yX=Ze(()=>{mX=Ie("events");aU();tx=class e extends mX.EventEmitter{constructor(r,s,{bigint:a=!1}={}){super();this.status="ready";this.changeListeners=new Map;this.startTimeout=null;this.fakeFs=r,this.path=s,this.bigint=a,this.lastStats=this.stat()}static create(r,s,a){let n=new e(r,s,a);return n.start(),n}start(){dX(this.status,"ready"),this.status="running",this.startTimeout=setTimeout(()=>{this.startTimeout=null,this.fakeFs.existsSync(this.path)||this.emit("change",this.lastStats,this.lastStats)},3)}stop(){dX(this.status,"running"),this.status="stopped",this.startTimeout!==null&&(clearTimeout(this.startTimeout),this.startTimeout=null),this.emit("stop")}stat(){try{return this.fakeFs.statSync(this.path,{bigint:this.bigint})}catch{let r=this.bigint?new aE:new oE;return ZP(r)}}makeInterval(r){let s=setInterval(()=>{let a=this.stat(),n=this.lastStats;oU(a,n)||(this.lastStats=a,this.emit("change",a,n))},r.interval);return r.persistent?s:s.unref()}registerChangeListener(r,s){this.addListener("change",r),this.changeListeners.set(r,this.makeInterval(s))}unregisterChangeListener(r){this.removeListener("change",r);let s=this.changeListeners.get(r);typeof s<"u"&&clearInterval(s),this.changeListeners.delete(r)}unregisterAllChangeListeners(){for(let r of this.changeListeners.keys())this.unregisterChangeListener(r)}hasChangeListeners(){return this.changeListeners.size>0}ref(){for(let r of this.changeListeners.values())r.ref();return this}unref(){for(let r of this.changeListeners.values())r.unref();return this}}});function lE(e,t,r,s){let a,n,c,f;switch(typeof r){case"function":a=!1,n=!0,c=5007,f=r;break;default:({bigint:a=!1,persistent:n=!0,interval:c=5007}=r),f=s;break}let p=rx.get(e);typeof p>"u"&&rx.set(e,p=new Map);let h=p.get(t);return typeof h>"u"&&(h=tx.create(e,t,{bigint:a}),p.set(t,h)),h.registerChangeListener(f,{persistent:n,interval:c}),h}function gd(e,t,r){let s=rx.get(e);if(typeof s>"u")return;let a=s.get(t);typeof a>"u"||(typeof r>"u"?a.unregisterAllChangeListeners():a.unregisterChangeListener(r),a.hasChangeListeners()||(a.stop(),s.delete(t)))}function dd(e){let t=rx.get(e);if(!(typeof t>"u"))for(let r of t.keys())gd(e,r)}var rx,fU=Ze(()=>{yX();rx=new WeakMap});function Wje(e){let t=e.match(/\r?\n/g);if(t===null)return IX.EOL;let r=t.filter(a=>a===`\r -`).length,s=t.length-r;return r>s?`\r -`:` -`}function md(e,t){return t.replace(/\r?\n/g,Wje(e))}var EX,IX,yp,Hf,yd=Ze(()=>{EX=Ie("crypto"),IX=Ie("os");uU();ol();yp=class{constructor(t){this.pathUtils=t}async*genTraversePromise(t,{stableSort:r=!1}={}){let s=[t];for(;s.length>0;){let a=s.shift();if((await this.lstatPromise(a)).isDirectory()){let c=await this.readdirPromise(a);if(r)for(let f of c.sort())s.push(this.pathUtils.join(a,f));else throw new Error("Not supported")}else yield a}}async checksumFilePromise(t,{algorithm:r="sha512"}={}){let s=await this.openPromise(t,"r");try{let n=Buffer.allocUnsafeSlow(65536),c=(0,EX.createHash)(r),f=0;for(;(f=await this.readPromise(s,n,0,65536))!==0;)c.update(f===65536?n:n.slice(0,f));return c.digest("hex")}finally{await this.closePromise(s)}}async removePromise(t,{recursive:r=!0,maxRetries:s=5}={}){let a;try{a=await this.lstatPromise(t)}catch(n){if(n.code==="ENOENT")return;throw n}if(a.isDirectory()){if(r){let n=await this.readdirPromise(t);await Promise.all(n.map(c=>this.removePromise(this.pathUtils.resolve(t,c))))}for(let n=0;n<=s;n++)try{await this.rmdirPromise(t);break}catch(c){if(c.code!=="EBUSY"&&c.code!=="ENOTEMPTY")throw c;nsetTimeout(f,n*100))}}else await this.unlinkPromise(t)}removeSync(t,{recursive:r=!0}={}){let s;try{s=this.lstatSync(t)}catch(a){if(a.code==="ENOENT")return;throw a}if(s.isDirectory()){if(r)for(let a of this.readdirSync(t))this.removeSync(this.pathUtils.resolve(t,a));this.rmdirSync(t)}else this.unlinkSync(t)}async mkdirpPromise(t,{chmod:r,utimes:s}={}){if(t=this.resolve(t),t===this.pathUtils.dirname(t))return;let a=t.split(this.pathUtils.sep),n;for(let c=2;c<=a.length;++c){let f=a.slice(0,c).join(this.pathUtils.sep);if(!this.existsSync(f)){try{await this.mkdirPromise(f)}catch(p){if(p.code==="EEXIST")continue;throw p}if(n??=f,r!=null&&await this.chmodPromise(f,r),s!=null)await this.utimesPromise(f,s[0],s[1]);else{let p=await this.statPromise(this.pathUtils.dirname(f));await this.utimesPromise(f,p.atime,p.mtime)}}}return n}mkdirpSync(t,{chmod:r,utimes:s}={}){if(t=this.resolve(t),t===this.pathUtils.dirname(t))return;let a=t.split(this.pathUtils.sep),n;for(let c=2;c<=a.length;++c){let f=a.slice(0,c).join(this.pathUtils.sep);if(!this.existsSync(f)){try{this.mkdirSync(f)}catch(p){if(p.code==="EEXIST")continue;throw p}if(n??=f,r!=null&&this.chmodSync(f,r),s!=null)this.utimesSync(f,s[0],s[1]);else{let p=this.statSync(this.pathUtils.dirname(f));this.utimesSync(f,p.atime,p.mtime)}}}return n}async copyPromise(t,r,{baseFs:s=this,overwrite:a=!0,stableSort:n=!1,stableTime:c=!1,linkStrategy:f=null}={}){return await pX(this,t,s,r,{overwrite:a,stableSort:n,stableTime:c,linkStrategy:f})}copySync(t,r,{baseFs:s=this,overwrite:a=!0}={}){let n=s.lstatSync(r),c=this.existsSync(t);if(n.isDirectory()){this.mkdirpSync(t);let p=s.readdirSync(r);for(let h of p)this.copySync(this.pathUtils.join(t,h),s.pathUtils.join(r,h),{baseFs:s,overwrite:a})}else if(n.isFile()){if(!c||a){c&&this.removeSync(t);let p=s.readFileSync(r);this.writeFileSync(t,p)}}else if(n.isSymbolicLink()){if(!c||a){c&&this.removeSync(t);let p=s.readlinkSync(r);this.symlinkSync(XP(this.pathUtils,p),t)}}else throw new Error(`Unsupported file type (file: ${r}, mode: 0o${n.mode.toString(8).padStart(6,"0")})`);let f=n.mode&511;this.chmodSync(t,f)}async changeFilePromise(t,r,s={}){return Buffer.isBuffer(r)?this.changeFileBufferPromise(t,r,s):this.changeFileTextPromise(t,r,s)}async changeFileBufferPromise(t,r,{mode:s}={}){let a=Buffer.alloc(0);try{a=await this.readFilePromise(t)}catch{}Buffer.compare(a,r)!==0&&await this.writeFilePromise(t,r,{mode:s})}async changeFileTextPromise(t,r,{automaticNewlines:s,mode:a}={}){let n="";try{n=await this.readFilePromise(t,"utf8")}catch{}let c=s?md(n,r):r;n!==c&&await this.writeFilePromise(t,c,{mode:a})}changeFileSync(t,r,s={}){return Buffer.isBuffer(r)?this.changeFileBufferSync(t,r,s):this.changeFileTextSync(t,r,s)}changeFileBufferSync(t,r,{mode:s}={}){let a=Buffer.alloc(0);try{a=this.readFileSync(t)}catch{}Buffer.compare(a,r)!==0&&this.writeFileSync(t,r,{mode:s})}changeFileTextSync(t,r,{automaticNewlines:s=!1,mode:a}={}){let n="";try{n=this.readFileSync(t,"utf8")}catch{}let c=s?md(n,r):r;n!==c&&this.writeFileSync(t,c,{mode:a})}async movePromise(t,r){try{await this.renamePromise(t,r)}catch(s){if(s.code==="EXDEV")await this.copyPromise(r,t),await this.removePromise(t);else throw s}}moveSync(t,r){try{this.renameSync(t,r)}catch(s){if(s.code==="EXDEV")this.copySync(r,t),this.removeSync(t);else throw s}}async lockPromise(t,r){let s=`${t}.flock`,a=1e3/60,n=Date.now(),c=null,f=async()=>{let p;try{[p]=await this.readJsonPromise(s)}catch{return Date.now()-n<500}try{return process.kill(p,0),!0}catch{return!1}};for(;c===null;)try{c=await this.openPromise(s,"wx")}catch(p){if(p.code==="EEXIST"){if(!await f())try{await this.unlinkPromise(s);continue}catch{}if(Date.now()-n<60*1e3)await new Promise(h=>setTimeout(h,a));else throw new Error(`Couldn't acquire a lock in a reasonable time (via ${s})`)}else throw p}await this.writePromise(c,JSON.stringify([process.pid]));try{return await r()}finally{try{await this.closePromise(c),await this.unlinkPromise(s)}catch{}}}async readJsonPromise(t){let r=await this.readFilePromise(t,"utf8");try{return JSON.parse(r)}catch(s){throw s.message+=` (in ${t})`,s}}readJsonSync(t){let r=this.readFileSync(t,"utf8");try{return JSON.parse(r)}catch(s){throw s.message+=` (in ${t})`,s}}async writeJsonPromise(t,r,{compact:s=!1}={}){let a=s?0:2;return await this.writeFilePromise(t,`${JSON.stringify(r,null,a)} -`)}writeJsonSync(t,r,{compact:s=!1}={}){let a=s?0:2;return this.writeFileSync(t,`${JSON.stringify(r,null,a)} -`)}async preserveTimePromise(t,r){let s=await this.lstatPromise(t),a=await r();typeof a<"u"&&(t=a),await this.lutimesPromise(t,s.atime,s.mtime)}async preserveTimeSync(t,r){let s=this.lstatSync(t),a=r();typeof a<"u"&&(t=a),this.lutimesSync(t,s.atime,s.mtime)}},Hf=class extends yp{constructor(){super(K)}}});var Gs,Ep=Ze(()=>{yd();Gs=class extends yp{getExtractHint(t){return this.baseFs.getExtractHint(t)}resolve(t){return this.mapFromBase(this.baseFs.resolve(this.mapToBase(t)))}getRealPath(){return this.mapFromBase(this.baseFs.getRealPath())}async openPromise(t,r,s){return this.baseFs.openPromise(this.mapToBase(t),r,s)}openSync(t,r,s){return this.baseFs.openSync(this.mapToBase(t),r,s)}async opendirPromise(t,r){return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(t),r),{path:t})}opendirSync(t,r){return Object.assign(this.baseFs.opendirSync(this.mapToBase(t),r),{path:t})}async readPromise(t,r,s,a,n){return await this.baseFs.readPromise(t,r,s,a,n)}readSync(t,r,s,a,n){return this.baseFs.readSync(t,r,s,a,n)}async writePromise(t,r,s,a,n){return typeof r=="string"?await this.baseFs.writePromise(t,r,s):await this.baseFs.writePromise(t,r,s,a,n)}writeSync(t,r,s,a,n){return typeof r=="string"?this.baseFs.writeSync(t,r,s):this.baseFs.writeSync(t,r,s,a,n)}async closePromise(t){return this.baseFs.closePromise(t)}closeSync(t){this.baseFs.closeSync(t)}createReadStream(t,r){return this.baseFs.createReadStream(t!==null?this.mapToBase(t):t,r)}createWriteStream(t,r){return this.baseFs.createWriteStream(t!==null?this.mapToBase(t):t,r)}async realpathPromise(t){return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(t)))}realpathSync(t){return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(t)))}async existsPromise(t){return this.baseFs.existsPromise(this.mapToBase(t))}existsSync(t){return this.baseFs.existsSync(this.mapToBase(t))}accessSync(t,r){return this.baseFs.accessSync(this.mapToBase(t),r)}async accessPromise(t,r){return this.baseFs.accessPromise(this.mapToBase(t),r)}async statPromise(t,r){return this.baseFs.statPromise(this.mapToBase(t),r)}statSync(t,r){return this.baseFs.statSync(this.mapToBase(t),r)}async fstatPromise(t,r){return this.baseFs.fstatPromise(t,r)}fstatSync(t,r){return this.baseFs.fstatSync(t,r)}lstatPromise(t,r){return this.baseFs.lstatPromise(this.mapToBase(t),r)}lstatSync(t,r){return this.baseFs.lstatSync(this.mapToBase(t),r)}async fchmodPromise(t,r){return this.baseFs.fchmodPromise(t,r)}fchmodSync(t,r){return this.baseFs.fchmodSync(t,r)}async chmodPromise(t,r){return this.baseFs.chmodPromise(this.mapToBase(t),r)}chmodSync(t,r){return this.baseFs.chmodSync(this.mapToBase(t),r)}async fchownPromise(t,r,s){return this.baseFs.fchownPromise(t,r,s)}fchownSync(t,r,s){return this.baseFs.fchownSync(t,r,s)}async chownPromise(t,r,s){return this.baseFs.chownPromise(this.mapToBase(t),r,s)}chownSync(t,r,s){return this.baseFs.chownSync(this.mapToBase(t),r,s)}async renamePromise(t,r){return this.baseFs.renamePromise(this.mapToBase(t),this.mapToBase(r))}renameSync(t,r){return this.baseFs.renameSync(this.mapToBase(t),this.mapToBase(r))}async copyFilePromise(t,r,s=0){return this.baseFs.copyFilePromise(this.mapToBase(t),this.mapToBase(r),s)}copyFileSync(t,r,s=0){return this.baseFs.copyFileSync(this.mapToBase(t),this.mapToBase(r),s)}async appendFilePromise(t,r,s){return this.baseFs.appendFilePromise(this.fsMapToBase(t),r,s)}appendFileSync(t,r,s){return this.baseFs.appendFileSync(this.fsMapToBase(t),r,s)}async writeFilePromise(t,r,s){return this.baseFs.writeFilePromise(this.fsMapToBase(t),r,s)}writeFileSync(t,r,s){return this.baseFs.writeFileSync(this.fsMapToBase(t),r,s)}async unlinkPromise(t){return this.baseFs.unlinkPromise(this.mapToBase(t))}unlinkSync(t){return this.baseFs.unlinkSync(this.mapToBase(t))}async utimesPromise(t,r,s){return this.baseFs.utimesPromise(this.mapToBase(t),r,s)}utimesSync(t,r,s){return this.baseFs.utimesSync(this.mapToBase(t),r,s)}async lutimesPromise(t,r,s){return this.baseFs.lutimesPromise(this.mapToBase(t),r,s)}lutimesSync(t,r,s){return this.baseFs.lutimesSync(this.mapToBase(t),r,s)}async mkdirPromise(t,r){return this.baseFs.mkdirPromise(this.mapToBase(t),r)}mkdirSync(t,r){return this.baseFs.mkdirSync(this.mapToBase(t),r)}async rmdirPromise(t,r){return this.baseFs.rmdirPromise(this.mapToBase(t),r)}rmdirSync(t,r){return this.baseFs.rmdirSync(this.mapToBase(t),r)}async rmPromise(t,r){return this.baseFs.rmPromise(this.mapToBase(t),r)}rmSync(t,r){return this.baseFs.rmSync(this.mapToBase(t),r)}async linkPromise(t,r){return this.baseFs.linkPromise(this.mapToBase(t),this.mapToBase(r))}linkSync(t,r){return this.baseFs.linkSync(this.mapToBase(t),this.mapToBase(r))}async symlinkPromise(t,r,s){let a=this.mapToBase(r);if(this.pathUtils.isAbsolute(t))return this.baseFs.symlinkPromise(this.mapToBase(t),a,s);let n=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),t)),c=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(a),n);return this.baseFs.symlinkPromise(c,a,s)}symlinkSync(t,r,s){let a=this.mapToBase(r);if(this.pathUtils.isAbsolute(t))return this.baseFs.symlinkSync(this.mapToBase(t),a,s);let n=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),t)),c=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(a),n);return this.baseFs.symlinkSync(c,a,s)}async readFilePromise(t,r){return this.baseFs.readFilePromise(this.fsMapToBase(t),r)}readFileSync(t,r){return this.baseFs.readFileSync(this.fsMapToBase(t),r)}readdirPromise(t,r){return this.baseFs.readdirPromise(this.mapToBase(t),r)}readdirSync(t,r){return this.baseFs.readdirSync(this.mapToBase(t),r)}async readlinkPromise(t){return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(t)))}readlinkSync(t){return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(t)))}async truncatePromise(t,r){return this.baseFs.truncatePromise(this.mapToBase(t),r)}truncateSync(t,r){return this.baseFs.truncateSync(this.mapToBase(t),r)}async ftruncatePromise(t,r){return this.baseFs.ftruncatePromise(t,r)}ftruncateSync(t,r){return this.baseFs.ftruncateSync(t,r)}watch(t,r,s){return this.baseFs.watch(this.mapToBase(t),r,s)}watchFile(t,r,s){return this.baseFs.watchFile(this.mapToBase(t),r,s)}unwatchFile(t,r){return this.baseFs.unwatchFile(this.mapToBase(t),r)}fsMapToBase(t){return typeof t=="number"?t:this.mapToBase(t)}}});var jf,CX=Ze(()=>{Ep();jf=class extends Gs{constructor(t,{baseFs:r,pathUtils:s}){super(s),this.target=t,this.baseFs=r}getRealPath(){return this.target}getBaseFs(){return this.baseFs}mapFromBase(t){return t}mapToBase(t){return t}}});function wX(e){let t=e;return typeof e.path=="string"&&(t.path=fe.toPortablePath(e.path)),t}var BX,Yn,Ed=Ze(()=>{BX=et(Ie("fs"));yd();ol();Yn=class extends Hf{constructor(t=BX.default){super(),this.realFs=t}getExtractHint(){return!1}getRealPath(){return vt.root}resolve(t){return K.resolve(t)}async openPromise(t,r,s){return await new Promise((a,n)=>{this.realFs.open(fe.fromPortablePath(t),r,s,this.makeCallback(a,n))})}openSync(t,r,s){return this.realFs.openSync(fe.fromPortablePath(t),r,s)}async opendirPromise(t,r){return await new Promise((s,a)=>{typeof r<"u"?this.realFs.opendir(fe.fromPortablePath(t),r,this.makeCallback(s,a)):this.realFs.opendir(fe.fromPortablePath(t),this.makeCallback(s,a))}).then(s=>{let a=s;return Object.defineProperty(a,"path",{value:t,configurable:!0,writable:!0}),a})}opendirSync(t,r){let a=typeof r<"u"?this.realFs.opendirSync(fe.fromPortablePath(t),r):this.realFs.opendirSync(fe.fromPortablePath(t));return Object.defineProperty(a,"path",{value:t,configurable:!0,writable:!0}),a}async readPromise(t,r,s=0,a=0,n=-1){return await new Promise((c,f)=>{this.realFs.read(t,r,s,a,n,(p,h)=>{p?f(p):c(h)})})}readSync(t,r,s,a,n){return this.realFs.readSync(t,r,s,a,n)}async writePromise(t,r,s,a,n){return await new Promise((c,f)=>typeof r=="string"?this.realFs.write(t,r,s,this.makeCallback(c,f)):this.realFs.write(t,r,s,a,n,this.makeCallback(c,f)))}writeSync(t,r,s,a,n){return typeof r=="string"?this.realFs.writeSync(t,r,s):this.realFs.writeSync(t,r,s,a,n)}async closePromise(t){await new Promise((r,s)=>{this.realFs.close(t,this.makeCallback(r,s))})}closeSync(t){this.realFs.closeSync(t)}createReadStream(t,r){let s=t!==null?fe.fromPortablePath(t):t;return this.realFs.createReadStream(s,r)}createWriteStream(t,r){let s=t!==null?fe.fromPortablePath(t):t;return this.realFs.createWriteStream(s,r)}async realpathPromise(t){return await new Promise((r,s)=>{this.realFs.realpath(fe.fromPortablePath(t),{},this.makeCallback(r,s))}).then(r=>fe.toPortablePath(r))}realpathSync(t){return fe.toPortablePath(this.realFs.realpathSync(fe.fromPortablePath(t),{}))}async existsPromise(t){return await new Promise(r=>{this.realFs.exists(fe.fromPortablePath(t),r)})}accessSync(t,r){return this.realFs.accessSync(fe.fromPortablePath(t),r)}async accessPromise(t,r){return await new Promise((s,a)=>{this.realFs.access(fe.fromPortablePath(t),r,this.makeCallback(s,a))})}existsSync(t){return this.realFs.existsSync(fe.fromPortablePath(t))}async statPromise(t,r){return await new Promise((s,a)=>{r?this.realFs.stat(fe.fromPortablePath(t),r,this.makeCallback(s,a)):this.realFs.stat(fe.fromPortablePath(t),this.makeCallback(s,a))})}statSync(t,r){return r?this.realFs.statSync(fe.fromPortablePath(t),r):this.realFs.statSync(fe.fromPortablePath(t))}async fstatPromise(t,r){return await new Promise((s,a)=>{r?this.realFs.fstat(t,r,this.makeCallback(s,a)):this.realFs.fstat(t,this.makeCallback(s,a))})}fstatSync(t,r){return r?this.realFs.fstatSync(t,r):this.realFs.fstatSync(t)}async lstatPromise(t,r){return await new Promise((s,a)=>{r?this.realFs.lstat(fe.fromPortablePath(t),r,this.makeCallback(s,a)):this.realFs.lstat(fe.fromPortablePath(t),this.makeCallback(s,a))})}lstatSync(t,r){return r?this.realFs.lstatSync(fe.fromPortablePath(t),r):this.realFs.lstatSync(fe.fromPortablePath(t))}async fchmodPromise(t,r){return await new Promise((s,a)=>{this.realFs.fchmod(t,r,this.makeCallback(s,a))})}fchmodSync(t,r){return this.realFs.fchmodSync(t,r)}async chmodPromise(t,r){return await new Promise((s,a)=>{this.realFs.chmod(fe.fromPortablePath(t),r,this.makeCallback(s,a))})}chmodSync(t,r){return this.realFs.chmodSync(fe.fromPortablePath(t),r)}async fchownPromise(t,r,s){return await new Promise((a,n)=>{this.realFs.fchown(t,r,s,this.makeCallback(a,n))})}fchownSync(t,r,s){return this.realFs.fchownSync(t,r,s)}async chownPromise(t,r,s){return await new Promise((a,n)=>{this.realFs.chown(fe.fromPortablePath(t),r,s,this.makeCallback(a,n))})}chownSync(t,r,s){return this.realFs.chownSync(fe.fromPortablePath(t),r,s)}async renamePromise(t,r){return await new Promise((s,a)=>{this.realFs.rename(fe.fromPortablePath(t),fe.fromPortablePath(r),this.makeCallback(s,a))})}renameSync(t,r){return this.realFs.renameSync(fe.fromPortablePath(t),fe.fromPortablePath(r))}async copyFilePromise(t,r,s=0){return await new Promise((a,n)=>{this.realFs.copyFile(fe.fromPortablePath(t),fe.fromPortablePath(r),s,this.makeCallback(a,n))})}copyFileSync(t,r,s=0){return this.realFs.copyFileSync(fe.fromPortablePath(t),fe.fromPortablePath(r),s)}async appendFilePromise(t,r,s){return await new Promise((a,n)=>{let c=typeof t=="string"?fe.fromPortablePath(t):t;s?this.realFs.appendFile(c,r,s,this.makeCallback(a,n)):this.realFs.appendFile(c,r,this.makeCallback(a,n))})}appendFileSync(t,r,s){let a=typeof t=="string"?fe.fromPortablePath(t):t;s?this.realFs.appendFileSync(a,r,s):this.realFs.appendFileSync(a,r)}async writeFilePromise(t,r,s){return await new Promise((a,n)=>{let c=typeof t=="string"?fe.fromPortablePath(t):t;s?this.realFs.writeFile(c,r,s,this.makeCallback(a,n)):this.realFs.writeFile(c,r,this.makeCallback(a,n))})}writeFileSync(t,r,s){let a=typeof t=="string"?fe.fromPortablePath(t):t;s?this.realFs.writeFileSync(a,r,s):this.realFs.writeFileSync(a,r)}async unlinkPromise(t){return await new Promise((r,s)=>{this.realFs.unlink(fe.fromPortablePath(t),this.makeCallback(r,s))})}unlinkSync(t){return this.realFs.unlinkSync(fe.fromPortablePath(t))}async utimesPromise(t,r,s){return await new Promise((a,n)=>{this.realFs.utimes(fe.fromPortablePath(t),r,s,this.makeCallback(a,n))})}utimesSync(t,r,s){this.realFs.utimesSync(fe.fromPortablePath(t),r,s)}async lutimesPromise(t,r,s){return await new Promise((a,n)=>{this.realFs.lutimes(fe.fromPortablePath(t),r,s,this.makeCallback(a,n))})}lutimesSync(t,r,s){this.realFs.lutimesSync(fe.fromPortablePath(t),r,s)}async mkdirPromise(t,r){return await new Promise((s,a)=>{this.realFs.mkdir(fe.fromPortablePath(t),r,this.makeCallback(s,a))})}mkdirSync(t,r){return this.realFs.mkdirSync(fe.fromPortablePath(t),r)}async rmdirPromise(t,r){return await new Promise((s,a)=>{r?this.realFs.rmdir(fe.fromPortablePath(t),r,this.makeCallback(s,a)):this.realFs.rmdir(fe.fromPortablePath(t),this.makeCallback(s,a))})}rmdirSync(t,r){return this.realFs.rmdirSync(fe.fromPortablePath(t),r)}async rmPromise(t,r){return await new Promise((s,a)=>{r?this.realFs.rm(fe.fromPortablePath(t),r,this.makeCallback(s,a)):this.realFs.rm(fe.fromPortablePath(t),this.makeCallback(s,a))})}rmSync(t,r){return this.realFs.rmSync(fe.fromPortablePath(t),r)}async linkPromise(t,r){return await new Promise((s,a)=>{this.realFs.link(fe.fromPortablePath(t),fe.fromPortablePath(r),this.makeCallback(s,a))})}linkSync(t,r){return this.realFs.linkSync(fe.fromPortablePath(t),fe.fromPortablePath(r))}async symlinkPromise(t,r,s){return await new Promise((a,n)=>{this.realFs.symlink(fe.fromPortablePath(t.replace(/\/+$/,"")),fe.fromPortablePath(r),s,this.makeCallback(a,n))})}symlinkSync(t,r,s){return this.realFs.symlinkSync(fe.fromPortablePath(t.replace(/\/+$/,"")),fe.fromPortablePath(r),s)}async readFilePromise(t,r){return await new Promise((s,a)=>{let n=typeof t=="string"?fe.fromPortablePath(t):t;this.realFs.readFile(n,r,this.makeCallback(s,a))})}readFileSync(t,r){let s=typeof t=="string"?fe.fromPortablePath(t):t;return this.realFs.readFileSync(s,r)}async readdirPromise(t,r){return await new Promise((s,a)=>{r?r.recursive&&process.platform==="win32"?r.withFileTypes?this.realFs.readdir(fe.fromPortablePath(t),r,this.makeCallback(n=>s(n.map(wX)),a)):this.realFs.readdir(fe.fromPortablePath(t),r,this.makeCallback(n=>s(n.map(fe.toPortablePath)),a)):this.realFs.readdir(fe.fromPortablePath(t),r,this.makeCallback(s,a)):this.realFs.readdir(fe.fromPortablePath(t),this.makeCallback(s,a))})}readdirSync(t,r){return r?r.recursive&&process.platform==="win32"?r.withFileTypes?this.realFs.readdirSync(fe.fromPortablePath(t),r).map(wX):this.realFs.readdirSync(fe.fromPortablePath(t),r).map(fe.toPortablePath):this.realFs.readdirSync(fe.fromPortablePath(t),r):this.realFs.readdirSync(fe.fromPortablePath(t))}async readlinkPromise(t){return await new Promise((r,s)=>{this.realFs.readlink(fe.fromPortablePath(t),this.makeCallback(r,s))}).then(r=>fe.toPortablePath(r))}readlinkSync(t){return fe.toPortablePath(this.realFs.readlinkSync(fe.fromPortablePath(t)))}async truncatePromise(t,r){return await new Promise((s,a)=>{this.realFs.truncate(fe.fromPortablePath(t),r,this.makeCallback(s,a))})}truncateSync(t,r){return this.realFs.truncateSync(fe.fromPortablePath(t),r)}async ftruncatePromise(t,r){return await new Promise((s,a)=>{this.realFs.ftruncate(t,r,this.makeCallback(s,a))})}ftruncateSync(t,r){return this.realFs.ftruncateSync(t,r)}watch(t,r,s){return this.realFs.watch(fe.fromPortablePath(t),r,s)}watchFile(t,r,s){return this.realFs.watchFile(fe.fromPortablePath(t),r,s)}unwatchFile(t,r){return this.realFs.unwatchFile(fe.fromPortablePath(t),r)}makeCallback(t,r){return(s,a)=>{s?r(s):t(a)}}}});var bn,vX=Ze(()=>{Ed();Ep();ol();bn=class extends Gs{constructor(t,{baseFs:r=new Yn}={}){super(K),this.target=this.pathUtils.normalize(t),this.baseFs=r}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.target)}resolve(t){return this.pathUtils.isAbsolute(t)?K.normalize(t):this.baseFs.resolve(K.join(this.target,t))}mapFromBase(t){return t}mapToBase(t){return this.pathUtils.isAbsolute(t)?t:this.pathUtils.join(this.target,t)}}});var SX,Gf,DX=Ze(()=>{Ed();Ep();ol();SX=vt.root,Gf=class extends Gs{constructor(t,{baseFs:r=new Yn}={}){super(K),this.target=this.pathUtils.resolve(vt.root,t),this.baseFs=r}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.pathUtils.relative(vt.root,this.target))}getTarget(){return this.target}getBaseFs(){return this.baseFs}mapToBase(t){let r=this.pathUtils.normalize(t);if(this.pathUtils.isAbsolute(t))return this.pathUtils.resolve(this.target,this.pathUtils.relative(SX,t));if(r.match(/^\.\.\/?/))throw new Error(`Resolving this path (${t}) would escape the jail`);return this.pathUtils.resolve(this.target,t)}mapFromBase(t){return this.pathUtils.resolve(SX,this.pathUtils.relative(this.target,t))}}});var cE,bX=Ze(()=>{Ep();cE=class extends Gs{constructor(r,s){super(s);this.instance=null;this.factory=r}get baseFs(){return this.instance||(this.instance=this.factory()),this.instance}set baseFs(r){this.instance=r}mapFromBase(r){return r}mapToBase(r){return r}}});var Id,al,Xh,PX=Ze(()=>{Id=Ie("fs");yd();Ed();fU();zP();ol();al=4278190080,Xh=class extends Hf{constructor({baseFs:r=new Yn,filter:s=null,magicByte:a=42,maxOpenFiles:n=1/0,useCache:c=!0,maxAge:f=5e3,typeCheck:p=Id.constants.S_IFREG,getMountPoint:h,factoryPromise:E,factorySync:C}){if(Math.floor(a)!==a||!(a>1&&a<=127))throw new Error("The magic byte must be set to a round value between 1 and 127 included");super();this.fdMap=new Map;this.nextFd=3;this.isMount=new Set;this.notMount=new Set;this.realPaths=new Map;this.limitOpenFilesTimeout=null;this.baseFs=r,this.mountInstances=c?new Map:null,this.factoryPromise=E,this.factorySync=C,this.filter=s,this.getMountPoint=h,this.magic=a<<24,this.maxAge=f,this.maxOpenFiles=n,this.typeCheck=p}getExtractHint(r){return this.baseFs.getExtractHint(r)}getRealPath(){return this.baseFs.getRealPath()}saveAndClose(){if(dd(this),this.mountInstances)for(let[r,{childFs:s}]of this.mountInstances.entries())s.saveAndClose?.(),this.mountInstances.delete(r)}discardAndClose(){if(dd(this),this.mountInstances)for(let[r,{childFs:s}]of this.mountInstances.entries())s.discardAndClose?.(),this.mountInstances.delete(r)}resolve(r){return this.baseFs.resolve(r)}remapFd(r,s){let a=this.nextFd++|this.magic;return this.fdMap.set(a,[r,s]),a}async openPromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.openPromise(r,s,a),async(n,{subPath:c})=>this.remapFd(n,await n.openPromise(c,s,a)))}openSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.openSync(r,s,a),(n,{subPath:c})=>this.remapFd(n,n.openSync(c,s,a)))}async opendirPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.opendirPromise(r,s),async(a,{subPath:n})=>await a.opendirPromise(n,s),{requireSubpath:!1})}opendirSync(r,s){return this.makeCallSync(r,()=>this.baseFs.opendirSync(r,s),(a,{subPath:n})=>a.opendirSync(n,s),{requireSubpath:!1})}async readPromise(r,s,a,n,c){if((r&al)!==this.magic)return await this.baseFs.readPromise(r,s,a,n,c);let f=this.fdMap.get(r);if(typeof f>"u")throw Go("read");let[p,h]=f;return await p.readPromise(h,s,a,n,c)}readSync(r,s,a,n,c){if((r&al)!==this.magic)return this.baseFs.readSync(r,s,a,n,c);let f=this.fdMap.get(r);if(typeof f>"u")throw Go("readSync");let[p,h]=f;return p.readSync(h,s,a,n,c)}async writePromise(r,s,a,n,c){if((r&al)!==this.magic)return typeof s=="string"?await this.baseFs.writePromise(r,s,a):await this.baseFs.writePromise(r,s,a,n,c);let f=this.fdMap.get(r);if(typeof f>"u")throw Go("write");let[p,h]=f;return typeof s=="string"?await p.writePromise(h,s,a):await p.writePromise(h,s,a,n,c)}writeSync(r,s,a,n,c){if((r&al)!==this.magic)return typeof s=="string"?this.baseFs.writeSync(r,s,a):this.baseFs.writeSync(r,s,a,n,c);let f=this.fdMap.get(r);if(typeof f>"u")throw Go("writeSync");let[p,h]=f;return typeof s=="string"?p.writeSync(h,s,a):p.writeSync(h,s,a,n,c)}async closePromise(r){if((r&al)!==this.magic)return await this.baseFs.closePromise(r);let s=this.fdMap.get(r);if(typeof s>"u")throw Go("close");this.fdMap.delete(r);let[a,n]=s;return await a.closePromise(n)}closeSync(r){if((r&al)!==this.magic)return this.baseFs.closeSync(r);let s=this.fdMap.get(r);if(typeof s>"u")throw Go("closeSync");this.fdMap.delete(r);let[a,n]=s;return a.closeSync(n)}createReadStream(r,s){return r===null?this.baseFs.createReadStream(r,s):this.makeCallSync(r,()=>this.baseFs.createReadStream(r,s),(a,{archivePath:n,subPath:c})=>{let f=a.createReadStream(c,s);return f.path=fe.fromPortablePath(this.pathUtils.join(n,c)),f})}createWriteStream(r,s){return r===null?this.baseFs.createWriteStream(r,s):this.makeCallSync(r,()=>this.baseFs.createWriteStream(r,s),(a,{subPath:n})=>a.createWriteStream(n,s))}async realpathPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.realpathPromise(r),async(s,{archivePath:a,subPath:n})=>{let c=this.realPaths.get(a);return typeof c>"u"&&(c=await this.baseFs.realpathPromise(a),this.realPaths.set(a,c)),this.pathUtils.join(c,this.pathUtils.relative(vt.root,await s.realpathPromise(n)))})}realpathSync(r){return this.makeCallSync(r,()=>this.baseFs.realpathSync(r),(s,{archivePath:a,subPath:n})=>{let c=this.realPaths.get(a);return typeof c>"u"&&(c=this.baseFs.realpathSync(a),this.realPaths.set(a,c)),this.pathUtils.join(c,this.pathUtils.relative(vt.root,s.realpathSync(n)))})}async existsPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.existsPromise(r),async(s,{subPath:a})=>await s.existsPromise(a))}existsSync(r){return this.makeCallSync(r,()=>this.baseFs.existsSync(r),(s,{subPath:a})=>s.existsSync(a))}async accessPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.accessPromise(r,s),async(a,{subPath:n})=>await a.accessPromise(n,s))}accessSync(r,s){return this.makeCallSync(r,()=>this.baseFs.accessSync(r,s),(a,{subPath:n})=>a.accessSync(n,s))}async statPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.statPromise(r,s),async(a,{subPath:n})=>await a.statPromise(n,s))}statSync(r,s){return this.makeCallSync(r,()=>this.baseFs.statSync(r,s),(a,{subPath:n})=>a.statSync(n,s))}async fstatPromise(r,s){if((r&al)!==this.magic)return this.baseFs.fstatPromise(r,s);let a=this.fdMap.get(r);if(typeof a>"u")throw Go("fstat");let[n,c]=a;return n.fstatPromise(c,s)}fstatSync(r,s){if((r&al)!==this.magic)return this.baseFs.fstatSync(r,s);let a=this.fdMap.get(r);if(typeof a>"u")throw Go("fstatSync");let[n,c]=a;return n.fstatSync(c,s)}async lstatPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.lstatPromise(r,s),async(a,{subPath:n})=>await a.lstatPromise(n,s))}lstatSync(r,s){return this.makeCallSync(r,()=>this.baseFs.lstatSync(r,s),(a,{subPath:n})=>a.lstatSync(n,s))}async fchmodPromise(r,s){if((r&al)!==this.magic)return this.baseFs.fchmodPromise(r,s);let a=this.fdMap.get(r);if(typeof a>"u")throw Go("fchmod");let[n,c]=a;return n.fchmodPromise(c,s)}fchmodSync(r,s){if((r&al)!==this.magic)return this.baseFs.fchmodSync(r,s);let a=this.fdMap.get(r);if(typeof a>"u")throw Go("fchmodSync");let[n,c]=a;return n.fchmodSync(c,s)}async chmodPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.chmodPromise(r,s),async(a,{subPath:n})=>await a.chmodPromise(n,s))}chmodSync(r,s){return this.makeCallSync(r,()=>this.baseFs.chmodSync(r,s),(a,{subPath:n})=>a.chmodSync(n,s))}async fchownPromise(r,s,a){if((r&al)!==this.magic)return this.baseFs.fchownPromise(r,s,a);let n=this.fdMap.get(r);if(typeof n>"u")throw Go("fchown");let[c,f]=n;return c.fchownPromise(f,s,a)}fchownSync(r,s,a){if((r&al)!==this.magic)return this.baseFs.fchownSync(r,s,a);let n=this.fdMap.get(r);if(typeof n>"u")throw Go("fchownSync");let[c,f]=n;return c.fchownSync(f,s,a)}async chownPromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.chownPromise(r,s,a),async(n,{subPath:c})=>await n.chownPromise(c,s,a))}chownSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.chownSync(r,s,a),(n,{subPath:c})=>n.chownSync(c,s,a))}async renamePromise(r,s){return await this.makeCallPromise(r,async()=>await this.makeCallPromise(s,async()=>await this.baseFs.renamePromise(r,s),async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),async(a,{subPath:n})=>await this.makeCallPromise(s,async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},async(c,{subPath:f})=>{if(a!==c)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return await a.renamePromise(n,f)}))}renameSync(r,s){return this.makeCallSync(r,()=>this.makeCallSync(s,()=>this.baseFs.renameSync(r,s),()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),(a,{subPath:n})=>this.makeCallSync(s,()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},(c,{subPath:f})=>{if(a!==c)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return a.renameSync(n,f)}))}async copyFilePromise(r,s,a=0){let n=async(c,f,p,h)=>{if(a&Id.constants.COPYFILE_FICLONE_FORCE)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${f}' -> ${h}'`),{code:"EXDEV"});if(a&Id.constants.COPYFILE_EXCL&&await this.existsPromise(f))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${f}' -> '${h}'`),{code:"EEXIST"});let E;try{E=await c.readFilePromise(f)}catch{throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${f}' -> '${h}'`),{code:"EINVAL"})}await p.writeFilePromise(h,E)};return await this.makeCallPromise(r,async()=>await this.makeCallPromise(s,async()=>await this.baseFs.copyFilePromise(r,s,a),async(c,{subPath:f})=>await n(this.baseFs,r,c,f)),async(c,{subPath:f})=>await this.makeCallPromise(s,async()=>await n(c,f,this.baseFs,s),async(p,{subPath:h})=>c!==p?await n(c,f,p,h):await c.copyFilePromise(f,h,a)))}copyFileSync(r,s,a=0){let n=(c,f,p,h)=>{if(a&Id.constants.COPYFILE_FICLONE_FORCE)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${f}' -> ${h}'`),{code:"EXDEV"});if(a&Id.constants.COPYFILE_EXCL&&this.existsSync(f))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${f}' -> '${h}'`),{code:"EEXIST"});let E;try{E=c.readFileSync(f)}catch{throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${f}' -> '${h}'`),{code:"EINVAL"})}p.writeFileSync(h,E)};return this.makeCallSync(r,()=>this.makeCallSync(s,()=>this.baseFs.copyFileSync(r,s,a),(c,{subPath:f})=>n(this.baseFs,r,c,f)),(c,{subPath:f})=>this.makeCallSync(s,()=>n(c,f,this.baseFs,s),(p,{subPath:h})=>c!==p?n(c,f,p,h):c.copyFileSync(f,h,a)))}async appendFilePromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.appendFilePromise(r,s,a),async(n,{subPath:c})=>await n.appendFilePromise(c,s,a))}appendFileSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.appendFileSync(r,s,a),(n,{subPath:c})=>n.appendFileSync(c,s,a))}async writeFilePromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.writeFilePromise(r,s,a),async(n,{subPath:c})=>await n.writeFilePromise(c,s,a))}writeFileSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.writeFileSync(r,s,a),(n,{subPath:c})=>n.writeFileSync(c,s,a))}async unlinkPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.unlinkPromise(r),async(s,{subPath:a})=>await s.unlinkPromise(a))}unlinkSync(r){return this.makeCallSync(r,()=>this.baseFs.unlinkSync(r),(s,{subPath:a})=>s.unlinkSync(a))}async utimesPromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.utimesPromise(r,s,a),async(n,{subPath:c})=>await n.utimesPromise(c,s,a))}utimesSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.utimesSync(r,s,a),(n,{subPath:c})=>n.utimesSync(c,s,a))}async lutimesPromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.lutimesPromise(r,s,a),async(n,{subPath:c})=>await n.lutimesPromise(c,s,a))}lutimesSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.lutimesSync(r,s,a),(n,{subPath:c})=>n.lutimesSync(c,s,a))}async mkdirPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.mkdirPromise(r,s),async(a,{subPath:n})=>await a.mkdirPromise(n,s))}mkdirSync(r,s){return this.makeCallSync(r,()=>this.baseFs.mkdirSync(r,s),(a,{subPath:n})=>a.mkdirSync(n,s))}async rmdirPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.rmdirPromise(r,s),async(a,{subPath:n})=>await a.rmdirPromise(n,s))}rmdirSync(r,s){return this.makeCallSync(r,()=>this.baseFs.rmdirSync(r,s),(a,{subPath:n})=>a.rmdirSync(n,s))}async rmPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.rmPromise(r,s),async(a,{subPath:n})=>await a.rmPromise(n,s))}rmSync(r,s){return this.makeCallSync(r,()=>this.baseFs.rmSync(r,s),(a,{subPath:n})=>a.rmSync(n,s))}async linkPromise(r,s){return await this.makeCallPromise(s,async()=>await this.baseFs.linkPromise(r,s),async(a,{subPath:n})=>await a.linkPromise(r,n))}linkSync(r,s){return this.makeCallSync(s,()=>this.baseFs.linkSync(r,s),(a,{subPath:n})=>a.linkSync(r,n))}async symlinkPromise(r,s,a){return await this.makeCallPromise(s,async()=>await this.baseFs.symlinkPromise(r,s,a),async(n,{subPath:c})=>await n.symlinkPromise(r,c))}symlinkSync(r,s,a){return this.makeCallSync(s,()=>this.baseFs.symlinkSync(r,s,a),(n,{subPath:c})=>n.symlinkSync(r,c))}async readFilePromise(r,s){return this.makeCallPromise(r,async()=>await this.baseFs.readFilePromise(r,s),async(a,{subPath:n})=>await a.readFilePromise(n,s))}readFileSync(r,s){return this.makeCallSync(r,()=>this.baseFs.readFileSync(r,s),(a,{subPath:n})=>a.readFileSync(n,s))}async readdirPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.readdirPromise(r,s),async(a,{subPath:n})=>await a.readdirPromise(n,s),{requireSubpath:!1})}readdirSync(r,s){return this.makeCallSync(r,()=>this.baseFs.readdirSync(r,s),(a,{subPath:n})=>a.readdirSync(n,s),{requireSubpath:!1})}async readlinkPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.readlinkPromise(r),async(s,{subPath:a})=>await s.readlinkPromise(a))}readlinkSync(r){return this.makeCallSync(r,()=>this.baseFs.readlinkSync(r),(s,{subPath:a})=>s.readlinkSync(a))}async truncatePromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.truncatePromise(r,s),async(a,{subPath:n})=>await a.truncatePromise(n,s))}truncateSync(r,s){return this.makeCallSync(r,()=>this.baseFs.truncateSync(r,s),(a,{subPath:n})=>a.truncateSync(n,s))}async ftruncatePromise(r,s){if((r&al)!==this.magic)return this.baseFs.ftruncatePromise(r,s);let a=this.fdMap.get(r);if(typeof a>"u")throw Go("ftruncate");let[n,c]=a;return n.ftruncatePromise(c,s)}ftruncateSync(r,s){if((r&al)!==this.magic)return this.baseFs.ftruncateSync(r,s);let a=this.fdMap.get(r);if(typeof a>"u")throw Go("ftruncateSync");let[n,c]=a;return n.ftruncateSync(c,s)}watch(r,s,a){return this.makeCallSync(r,()=>this.baseFs.watch(r,s,a),(n,{subPath:c})=>n.watch(c,s,a))}watchFile(r,s,a){return this.makeCallSync(r,()=>this.baseFs.watchFile(r,s,a),()=>lE(this,r,s,a))}unwatchFile(r,s){return this.makeCallSync(r,()=>this.baseFs.unwatchFile(r,s),()=>gd(this,r,s))}async makeCallPromise(r,s,a,{requireSubpath:n=!0}={}){if(typeof r!="string")return await s();let c=this.resolve(r),f=this.findMount(c);return f?n&&f.subPath==="/"?await s():await this.getMountPromise(f.archivePath,async p=>await a(p,f)):await s()}makeCallSync(r,s,a,{requireSubpath:n=!0}={}){if(typeof r!="string")return s();let c=this.resolve(r),f=this.findMount(c);return!f||n&&f.subPath==="/"?s():this.getMountSync(f.archivePath,p=>a(p,f))}findMount(r){if(this.filter&&!this.filter.test(r))return null;let s="";for(;;){let a=r.substring(s.length),n=this.getMountPoint(a,s);if(!n)return null;if(s=this.pathUtils.join(s,n),!this.isMount.has(s)){if(this.notMount.has(s))continue;try{if(this.typeCheck!==null&&(this.baseFs.statSync(s).mode&Id.constants.S_IFMT)!==this.typeCheck){this.notMount.add(s);continue}}catch{return null}this.isMount.add(s)}return{archivePath:s,subPath:this.pathUtils.join(vt.root,r.substring(s.length))}}}limitOpenFiles(r){if(this.mountInstances===null)return;let s=Date.now(),a=s+this.maxAge,n=r===null?0:this.mountInstances.size-r;for(let[c,{childFs:f,expiresAt:p,refCount:h}]of this.mountInstances.entries())if(!(h!==0||f.hasOpenFileHandles?.())){if(s>=p){f.saveAndClose?.(),this.mountInstances.delete(c),n-=1;continue}else if(r===null||n<=0){a=p;break}f.saveAndClose?.(),this.mountInstances.delete(c),n-=1}this.limitOpenFilesTimeout===null&&(r===null&&this.mountInstances.size>0||r!==null)&&isFinite(a)&&(this.limitOpenFilesTimeout=setTimeout(()=>{this.limitOpenFilesTimeout=null,this.limitOpenFiles(null)},a-s).unref())}async getMountPromise(r,s){if(this.mountInstances){let a=this.mountInstances.get(r);if(!a){let n=await this.factoryPromise(this.baseFs,r);a=this.mountInstances.get(r),a||(a={childFs:n(),expiresAt:0,refCount:0})}this.mountInstances.delete(r),this.limitOpenFiles(this.maxOpenFiles-1),this.mountInstances.set(r,a),a.expiresAt=Date.now()+this.maxAge,a.refCount+=1;try{return await s(a.childFs)}finally{a.refCount-=1}}else{let a=(await this.factoryPromise(this.baseFs,r))();try{return await s(a)}finally{a.saveAndClose?.()}}}getMountSync(r,s){if(this.mountInstances){let a=this.mountInstances.get(r);return a||(a={childFs:this.factorySync(this.baseFs,r),expiresAt:0,refCount:0}),this.mountInstances.delete(r),this.limitOpenFiles(this.maxOpenFiles-1),this.mountInstances.set(r,a),a.expiresAt=Date.now()+this.maxAge,s(a.childFs)}else{let a=this.factorySync(this.baseFs,r);try{return s(a)}finally{a.saveAndClose?.()}}}}});var er,nx,xX=Ze(()=>{yd();ol();er=()=>Object.assign(new Error("ENOSYS: unsupported filesystem access"),{code:"ENOSYS"}),nx=class e extends yp{static{this.instance=new e}constructor(){super(K)}getExtractHint(){throw er()}getRealPath(){throw er()}resolve(){throw er()}async openPromise(){throw er()}openSync(){throw er()}async opendirPromise(){throw er()}opendirSync(){throw er()}async readPromise(){throw er()}readSync(){throw er()}async writePromise(){throw er()}writeSync(){throw er()}async closePromise(){throw er()}closeSync(){throw er()}createWriteStream(){throw er()}createReadStream(){throw er()}async realpathPromise(){throw er()}realpathSync(){throw er()}async readdirPromise(){throw er()}readdirSync(){throw er()}async existsPromise(t){throw er()}existsSync(t){throw er()}async accessPromise(){throw er()}accessSync(){throw er()}async statPromise(){throw er()}statSync(){throw er()}async fstatPromise(t){throw er()}fstatSync(t){throw er()}async lstatPromise(t){throw er()}lstatSync(t){throw er()}async fchmodPromise(){throw er()}fchmodSync(){throw er()}async chmodPromise(){throw er()}chmodSync(){throw er()}async fchownPromise(){throw er()}fchownSync(){throw er()}async chownPromise(){throw er()}chownSync(){throw er()}async mkdirPromise(){throw er()}mkdirSync(){throw er()}async rmdirPromise(){throw er()}rmdirSync(){throw er()}async rmPromise(){throw er()}rmSync(){throw er()}async linkPromise(){throw er()}linkSync(){throw er()}async symlinkPromise(){throw er()}symlinkSync(){throw er()}async renamePromise(){throw er()}renameSync(){throw er()}async copyFilePromise(){throw er()}copyFileSync(){throw er()}async appendFilePromise(){throw er()}appendFileSync(){throw er()}async writeFilePromise(){throw er()}writeFileSync(){throw er()}async unlinkPromise(){throw er()}unlinkSync(){throw er()}async utimesPromise(){throw er()}utimesSync(){throw er()}async lutimesPromise(){throw er()}lutimesSync(){throw er()}async readFilePromise(){throw er()}readFileSync(){throw er()}async readlinkPromise(){throw er()}readlinkSync(){throw er()}async truncatePromise(){throw er()}truncateSync(){throw er()}async ftruncatePromise(t,r){throw er()}ftruncateSync(t,r){throw er()}watch(){throw er()}watchFile(){throw er()}unwatchFile(){throw er()}}});var $h,kX=Ze(()=>{Ep();ol();$h=class extends Gs{constructor(t){super(fe),this.baseFs=t}mapFromBase(t){return fe.fromPortablePath(t)}mapToBase(t){return fe.toPortablePath(t)}}});var Vje,AU,Yje,mo,QX=Ze(()=>{Ed();Ep();ol();Vje=/^[0-9]+$/,AU=/^(\/(?:[^/]+\/)*?(?:\$\$virtual|__virtual__))((?:\/((?:[^/]+-)?[a-f0-9]+)(?:\/([^/]+))?)?((?:\/.*)?))$/,Yje=/^([^/]+-)?[a-f0-9]+$/,mo=class e extends Gs{static makeVirtualPath(t,r,s){if(K.basename(t)!=="__virtual__")throw new Error('Assertion failed: Virtual folders must be named "__virtual__"');if(!K.basename(r).match(Yje))throw new Error("Assertion failed: Virtual components must be ended by an hexadecimal hash");let n=K.relative(K.dirname(t),s).split("/"),c=0;for(;c{pU=et(Ie("buffer")),RX=Ie("url"),TX=Ie("util");Ep();ol();ix=class extends Gs{constructor(t){super(fe),this.baseFs=t}mapFromBase(t){return t}mapToBase(t){if(typeof t=="string")return t;if(t instanceof URL)return(0,RX.fileURLToPath)(t);if(Buffer.isBuffer(t)){let r=t.toString();if(!Kje(t,r))throw new Error("Non-utf8 buffers are not supported at the moment. Please upvote the following issue if you encounter this error: https://github.com/yarnpkg/berry/issues/4942");return r}throw new Error(`Unsupported path type: ${(0,TX.inspect)(t)}`)}}});var UX,qo,Ip,e0,sx,ox,uE,Qu,Ru,NX,OX,LX,MX,kB,_X=Ze(()=>{UX=Ie("readline"),qo=Symbol("kBaseFs"),Ip=Symbol("kFd"),e0=Symbol("kClosePromise"),sx=Symbol("kCloseResolve"),ox=Symbol("kCloseReject"),uE=Symbol("kRefs"),Qu=Symbol("kRef"),Ru=Symbol("kUnref"),kB=class{constructor(t,r){this[MX]=1;this[LX]=void 0;this[OX]=void 0;this[NX]=void 0;this[qo]=r,this[Ip]=t}get fd(){return this[Ip]}async appendFile(t,r){try{this[Qu](this.appendFile);let s=(typeof r=="string"?r:r?.encoding)??void 0;return await this[qo].appendFilePromise(this.fd,t,s?{encoding:s}:void 0)}finally{this[Ru]()}}async chown(t,r){try{return this[Qu](this.chown),await this[qo].fchownPromise(this.fd,t,r)}finally{this[Ru]()}}async chmod(t){try{return this[Qu](this.chmod),await this[qo].fchmodPromise(this.fd,t)}finally{this[Ru]()}}createReadStream(t){return this[qo].createReadStream(null,{...t,fd:this.fd})}createWriteStream(t){return this[qo].createWriteStream(null,{...t,fd:this.fd})}datasync(){throw new Error("Method not implemented.")}sync(){throw new Error("Method not implemented.")}async read(t,r,s,a){try{this[Qu](this.read);let n,c;return ArrayBuffer.isView(t)?typeof r=="object"&&r!==null?(n=t,c=r?.offset??0,s=r?.length??n.byteLength-c,a=r?.position??null):(n=t,c=r??0,s??=0):(n=t?.buffer??Buffer.alloc(16384),c=t?.offset??0,s=t?.length??n.byteLength-c,a=t?.position??null),s===0?{bytesRead:s,buffer:n}:{bytesRead:await this[qo].readPromise(this.fd,Buffer.isBuffer(n)?n:Buffer.from(n.buffer,n.byteOffset,n.byteLength),c,s,a),buffer:n}}finally{this[Ru]()}}async readFile(t){try{this[Qu](this.readFile);let r=(typeof t=="string"?t:t?.encoding)??void 0;return await this[qo].readFilePromise(this.fd,r)}finally{this[Ru]()}}readLines(t){return(0,UX.createInterface)({input:this.createReadStream(t),crlfDelay:1/0})}async stat(t){try{return this[Qu](this.stat),await this[qo].fstatPromise(this.fd,t)}finally{this[Ru]()}}async truncate(t){try{return this[Qu](this.truncate),await this[qo].ftruncatePromise(this.fd,t)}finally{this[Ru]()}}utimes(t,r){throw new Error("Method not implemented.")}async writeFile(t,r){try{this[Qu](this.writeFile);let s=(typeof r=="string"?r:r?.encoding)??void 0;await this[qo].writeFilePromise(this.fd,t,s)}finally{this[Ru]()}}async write(...t){try{if(this[Qu](this.write),ArrayBuffer.isView(t[0])){let[r,s,a,n]=t;return{bytesWritten:await this[qo].writePromise(this.fd,r,s??void 0,a??void 0,n??void 0),buffer:r}}else{let[r,s,a]=t;return{bytesWritten:await this[qo].writePromise(this.fd,r,s,a),buffer:r}}}finally{this[Ru]()}}async writev(t,r){try{this[Qu](this.writev);let s=0;if(typeof r<"u")for(let a of t){let n=await this.write(a,void 0,void 0,r);s+=n.bytesWritten,r+=n.bytesWritten}else for(let a of t){let n=await this.write(a);s+=n.bytesWritten}return{buffers:t,bytesWritten:s}}finally{this[Ru]()}}readv(t,r){throw new Error("Method not implemented.")}close(){if(this[Ip]===-1)return Promise.resolve();if(this[e0])return this[e0];if(this[uE]--,this[uE]===0){let t=this[Ip];this[Ip]=-1,this[e0]=this[qo].closePromise(t).finally(()=>{this[e0]=void 0})}else this[e0]=new Promise((t,r)=>{this[sx]=t,this[ox]=r}).finally(()=>{this[e0]=void 0,this[ox]=void 0,this[sx]=void 0});return this[e0]}[(qo,Ip,MX=uE,LX=e0,OX=sx,NX=ox,Qu)](t){if(this[Ip]===-1){let r=new Error("file closed");throw r.code="EBADF",r.syscall=t.name,r}this[uE]++}[Ru](){if(this[uE]--,this[uE]===0){let t=this[Ip];this[Ip]=-1,this[qo].closePromise(t).then(this[sx],this[ox])}}}});function QB(e,t){t=new ix(t);let r=(s,a,n)=>{let c=s[a];s[a]=n,typeof c?.[fE.promisify.custom]<"u"&&(n[fE.promisify.custom]=c[fE.promisify.custom])};{r(e,"exists",(s,...a)=>{let c=typeof a[a.length-1]=="function"?a.pop():()=>{};process.nextTick(()=>{t.existsPromise(s).then(f=>{c(f)},()=>{c(!1)})})}),r(e,"read",(...s)=>{let[a,n,c,f,p,h]=s;if(s.length<=3){let E={};s.length<3?h=s[1]:(E=s[1],h=s[2]),{buffer:n=Buffer.alloc(16384),offset:c=0,length:f=n.byteLength,position:p}=E}if(c==null&&(c=0),f|=0,f===0){process.nextTick(()=>{h(null,0,n)});return}p==null&&(p=-1),process.nextTick(()=>{t.readPromise(a,n,c,f,p).then(E=>{h(null,E,n)},E=>{h(E,0,n)})})});for(let s of HX){let a=s.replace(/Promise$/,"");if(typeof e[a]>"u")continue;let n=t[s];if(typeof n>"u")continue;r(e,a,(...f)=>{let h=typeof f[f.length-1]=="function"?f.pop():()=>{};process.nextTick(()=>{n.apply(t,f).then(E=>{h(null,E)},E=>{h(E)})})})}e.realpath.native=e.realpath}{r(e,"existsSync",s=>{try{return t.existsSync(s)}catch{return!1}}),r(e,"readSync",(...s)=>{let[a,n,c,f,p]=s;return s.length<=3&&({offset:c=0,length:f=n.byteLength,position:p}=s[2]||{}),c==null&&(c=0),f|=0,f===0?0:(p==null&&(p=-1),t.readSync(a,n,c,f,p))});for(let s of Jje){let a=s;if(typeof e[a]>"u")continue;let n=t[s];typeof n>"u"||r(e,a,n.bind(t))}e.realpathSync.native=e.realpathSync}{let s=e.promises;for(let a of HX){let n=a.replace(/Promise$/,"");if(typeof s[n]>"u")continue;let c=t[a];typeof c>"u"||a!=="open"&&r(s,n,(f,...p)=>f instanceof kB?f[n].apply(f,p):c.call(t,f,...p))}r(s,"open",async(...a)=>{let n=await t.openPromise(...a);return new kB(n,t)})}e.read[fE.promisify.custom]=async(s,a,...n)=>({bytesRead:await t.readPromise(s,a,...n),buffer:a}),e.write[fE.promisify.custom]=async(s,a,...n)=>({bytesWritten:await t.writePromise(s,a,...n),buffer:a})}function ax(e,t){let r=Object.create(e);return QB(r,t),r}var fE,Jje,HX,jX=Ze(()=>{fE=Ie("util");FX();_X();Jje=new Set(["accessSync","appendFileSync","createReadStream","createWriteStream","chmodSync","fchmodSync","chownSync","fchownSync","closeSync","copyFileSync","linkSync","lstatSync","fstatSync","lutimesSync","mkdirSync","openSync","opendirSync","readlinkSync","readFileSync","readdirSync","readlinkSync","realpathSync","renameSync","rmdirSync","rmSync","statSync","symlinkSync","truncateSync","ftruncateSync","unlinkSync","unwatchFile","utimesSync","watch","watchFile","writeFileSync","writeSync"]),HX=new Set(["accessPromise","appendFilePromise","fchmodPromise","chmodPromise","fchownPromise","chownPromise","closePromise","copyFilePromise","linkPromise","fstatPromise","lstatPromise","lutimesPromise","mkdirPromise","openPromise","opendirPromise","readdirPromise","realpathPromise","readFilePromise","readdirPromise","readlinkPromise","renamePromise","rmdirPromise","rmPromise","statPromise","symlinkPromise","truncatePromise","ftruncatePromise","unlinkPromise","utimesPromise","writeFilePromise","writeSync"])});function GX(e){let t=Math.ceil(Math.random()*4294967296).toString(16).padStart(8,"0");return`${e}${t}`}function qX(){if(hU)return hU;let e=fe.toPortablePath(WX.default.tmpdir()),t=le.realpathSync(e);return process.once("exit",()=>{le.rmtempSync()}),hU={tmpdir:e,realTmpdir:t}}var WX,Tu,hU,le,VX=Ze(()=>{WX=et(Ie("os"));Ed();ol();Tu=new Set,hU=null;le=Object.assign(new Yn,{detachTemp(e){Tu.delete(e)},mktempSync(e){let{tmpdir:t,realTmpdir:r}=qX();for(;;){let s=GX("xfs-");try{this.mkdirSync(K.join(t,s))}catch(n){if(n.code==="EEXIST")continue;throw n}let a=K.join(r,s);if(Tu.add(a),typeof e>"u")return a;try{return e(a)}finally{if(Tu.has(a)){Tu.delete(a);try{this.removeSync(a)}catch{}}}}},async mktempPromise(e){let{tmpdir:t,realTmpdir:r}=qX();for(;;){let s=GX("xfs-");try{await this.mkdirPromise(K.join(t,s))}catch(n){if(n.code==="EEXIST")continue;throw n}let a=K.join(r,s);if(Tu.add(a),typeof e>"u")return a;try{return await e(a)}finally{if(Tu.has(a)){Tu.delete(a);try{await this.removePromise(a)}catch{}}}}},async rmtempPromise(){await Promise.all(Array.from(Tu.values()).map(async e=>{try{await le.removePromise(e,{maxRetries:0}),Tu.delete(e)}catch{}}))},rmtempSync(){for(let e of Tu)try{le.removeSync(e),Tu.delete(e)}catch{}}})});var RB={};Yt(RB,{AliasFS:()=>jf,BasePortableFakeFS:()=>Hf,CustomDir:()=>xB,CwdFS:()=>bn,FakeFS:()=>yp,Filename:()=>Er,JailFS:()=>Gf,LazyFS:()=>cE,MountFS:()=>Xh,NoFS:()=>nx,NodeFS:()=>Yn,PortablePath:()=>vt,PosixFS:()=>$h,ProxiedFS:()=>Gs,VirtualFS:()=>mo,constants:()=>Ai,errors:()=>or,extendFs:()=>ax,normalizeLineEndings:()=>md,npath:()=>fe,opendir:()=>ex,patchFs:()=>QB,ppath:()=>K,setupCopyIndex:()=>$P,statUtils:()=>sl,unwatchAllFiles:()=>dd,unwatchFile:()=>gd,watchFile:()=>lE,xfs:()=>le});var Dt=Ze(()=>{cX();zP();aU();uU();gX();fU();yd();ol();ol();CX();yd();vX();DX();bX();PX();xX();Ed();kX();Ep();QX();jX();VX()});var ZX=G((_bt,zX)=>{zX.exports=JX;JX.sync=Zje;var YX=Ie("fs");function zje(e,t){var r=t.pathExt!==void 0?t.pathExt:process.env.PATHEXT;if(!r||(r=r.split(";"),r.indexOf("")!==-1))return!0;for(var s=0;s{t$.exports=$X;$X.sync=Xje;var XX=Ie("fs");function $X(e,t,r){XX.stat(e,function(s,a){r(s,s?!1:e$(a,t))})}function Xje(e,t){return e$(XX.statSync(e),t)}function e$(e,t){return e.isFile()&&$je(e,t)}function $je(e,t){var r=e.mode,s=e.uid,a=e.gid,n=t.uid!==void 0?t.uid:process.getuid&&process.getuid(),c=t.gid!==void 0?t.gid:process.getgid&&process.getgid(),f=parseInt("100",8),p=parseInt("010",8),h=parseInt("001",8),E=f|p,C=r&h||r&p&&a===c||r&f&&s===n||r&E&&n===0;return C}});var i$=G((Gbt,n$)=>{var jbt=Ie("fs"),lx;process.platform==="win32"||global.TESTING_WINDOWS?lx=ZX():lx=r$();n$.exports=gU;gU.sync=e6e;function gU(e,t,r){if(typeof t=="function"&&(r=t,t={}),!r){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(s,a){gU(e,t||{},function(n,c){n?a(n):s(c)})})}lx(e,t||{},function(s,a){s&&(s.code==="EACCES"||t&&t.ignoreErrors)&&(s=null,a=!1),r(s,a)})}function e6e(e,t){try{return lx.sync(e,t||{})}catch(r){if(t&&t.ignoreErrors||r.code==="EACCES")return!1;throw r}}});var f$=G((qbt,u$)=>{var AE=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",s$=Ie("path"),t6e=AE?";":":",o$=i$(),a$=e=>Object.assign(new Error(`not found: ${e}`),{code:"ENOENT"}),l$=(e,t)=>{let r=t.colon||t6e,s=e.match(/\//)||AE&&e.match(/\\/)?[""]:[...AE?[process.cwd()]:[],...(t.path||process.env.PATH||"").split(r)],a=AE?t.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",n=AE?a.split(r):[""];return AE&&e.indexOf(".")!==-1&&n[0]!==""&&n.unshift(""),{pathEnv:s,pathExt:n,pathExtExe:a}},c$=(e,t,r)=>{typeof t=="function"&&(r=t,t={}),t||(t={});let{pathEnv:s,pathExt:a,pathExtExe:n}=l$(e,t),c=[],f=h=>new Promise((E,C)=>{if(h===s.length)return t.all&&c.length?E(c):C(a$(e));let S=s[h],x=/^".*"$/.test(S)?S.slice(1,-1):S,I=s$.join(x,e),T=!x&&/^\.[\\\/]/.test(e)?e.slice(0,2)+I:I;E(p(T,h,0))}),p=(h,E,C)=>new Promise((S,x)=>{if(C===a.length)return S(f(E+1));let I=a[C];o$(h+I,{pathExt:n},(T,O)=>{if(!T&&O)if(t.all)c.push(h+I);else return S(h+I);return S(p(h,E,C+1))})});return r?f(0).then(h=>r(null,h),r):f(0)},r6e=(e,t)=>{t=t||{};let{pathEnv:r,pathExt:s,pathExtExe:a}=l$(e,t),n=[];for(let c=0;c{"use strict";var A$=(e={})=>{let t=e.env||process.env;return(e.platform||process.platform)!=="win32"?"PATH":Object.keys(t).reverse().find(s=>s.toUpperCase()==="PATH")||"Path"};dU.exports=A$;dU.exports.default=A$});var m$=G((Vbt,d$)=>{"use strict";var h$=Ie("path"),n6e=f$(),i6e=p$();function g$(e,t){let r=e.options.env||process.env,s=process.cwd(),a=e.options.cwd!=null,n=a&&process.chdir!==void 0&&!process.chdir.disabled;if(n)try{process.chdir(e.options.cwd)}catch{}let c;try{c=n6e.sync(e.command,{path:r[i6e({env:r})],pathExt:t?h$.delimiter:void 0})}catch{}finally{n&&process.chdir(s)}return c&&(c=h$.resolve(a?e.options.cwd:"",c)),c}function s6e(e){return g$(e)||g$(e,!0)}d$.exports=s6e});var y$=G((Ybt,yU)=>{"use strict";var mU=/([()\][%!^"`<>&|;, *?])/g;function o6e(e){return e=e.replace(mU,"^$1"),e}function a6e(e,t){return e=`${e}`,e=e.replace(/(?=(\\+?)?)\1"/g,'$1$1\\"'),e=e.replace(/(?=(\\+?)?)\1$/,"$1$1"),e=`"${e}"`,e=e.replace(mU,"^$1"),t&&(e=e.replace(mU,"^$1")),e}yU.exports.command=o6e;yU.exports.argument=a6e});var I$=G((Kbt,E$)=>{"use strict";E$.exports=/^#!(.*)/});var w$=G((Jbt,C$)=>{"use strict";var l6e=I$();C$.exports=(e="")=>{let t=e.match(l6e);if(!t)return null;let[r,s]=t[0].replace(/#! ?/,"").split(" "),a=r.split("/").pop();return a==="env"?s:s?`${a} ${s}`:a}});var v$=G((zbt,B$)=>{"use strict";var EU=Ie("fs"),c6e=w$();function u6e(e){let r=Buffer.alloc(150),s;try{s=EU.openSync(e,"r"),EU.readSync(s,r,0,150,0),EU.closeSync(s)}catch{}return c6e(r.toString())}B$.exports=u6e});var P$=G((Zbt,b$)=>{"use strict";var f6e=Ie("path"),S$=m$(),D$=y$(),A6e=v$(),p6e=process.platform==="win32",h6e=/\.(?:com|exe)$/i,g6e=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function d6e(e){e.file=S$(e);let t=e.file&&A6e(e.file);return t?(e.args.unshift(e.file),e.command=t,S$(e)):e.file}function m6e(e){if(!p6e)return e;let t=d6e(e),r=!h6e.test(t);if(e.options.forceShell||r){let s=g6e.test(t);e.command=f6e.normalize(e.command),e.command=D$.command(e.command),e.args=e.args.map(n=>D$.argument(n,s));let a=[e.command].concat(e.args).join(" ");e.args=["/d","/s","/c",`"${a}"`],e.command=process.env.comspec||"cmd.exe",e.options.windowsVerbatimArguments=!0}return e}function y6e(e,t,r){t&&!Array.isArray(t)&&(r=t,t=null),t=t?t.slice(0):[],r=Object.assign({},r);let s={command:e,args:t,options:r,file:void 0,original:{command:e,args:t}};return r.shell?s:m6e(s)}b$.exports=y6e});var Q$=G((Xbt,k$)=>{"use strict";var IU=process.platform==="win32";function CU(e,t){return Object.assign(new Error(`${t} ${e.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${t} ${e.command}`,path:e.command,spawnargs:e.args})}function E6e(e,t){if(!IU)return;let r=e.emit;e.emit=function(s,a){if(s==="exit"){let n=x$(a,t);if(n)return r.call(e,"error",n)}return r.apply(e,arguments)}}function x$(e,t){return IU&&e===1&&!t.file?CU(t.original,"spawn"):null}function I6e(e,t){return IU&&e===1&&!t.file?CU(t.original,"spawnSync"):null}k$.exports={hookChildProcess:E6e,verifyENOENT:x$,verifyENOENTSync:I6e,notFoundError:CU}});var vU=G(($bt,pE)=>{"use strict";var R$=Ie("child_process"),wU=P$(),BU=Q$();function T$(e,t,r){let s=wU(e,t,r),a=R$.spawn(s.command,s.args,s.options);return BU.hookChildProcess(a,s),a}function C6e(e,t,r){let s=wU(e,t,r),a=R$.spawnSync(s.command,s.args,s.options);return a.error=a.error||BU.verifyENOENTSync(a.status,s),a}pE.exports=T$;pE.exports.spawn=T$;pE.exports.sync=C6e;pE.exports._parse=wU;pE.exports._enoent=BU});var N$=G((ePt,F$)=>{"use strict";function w6e(e,t){function r(){this.constructor=e}r.prototype=t.prototype,e.prototype=new r}function Cd(e,t,r,s){this.message=e,this.expected=t,this.found=r,this.location=s,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Cd)}w6e(Cd,Error);Cd.buildMessage=function(e,t){var r={literal:function(h){return'"'+a(h.text)+'"'},class:function(h){var E="",C;for(C=0;C0){for(C=1,S=1;C>",b=ur(">>",!1),y=">&",F=ur(">&",!1),z=">",Z=ur(">",!1),$="<<<",se=ur("<<<",!1),xe="<&",Fe=ur("<&",!1),ut="<",Ct=ur("<",!1),qt=function(N){return{type:"argument",segments:[].concat(...N)}},ir=function(N){return N},Pt="$'",dn=ur("$'",!1),Pr="'",Ir=ur("'",!1),Or=function(N){return[{type:"text",text:N}]},on='""',li=ur('""',!1),So=function(){return{type:"text",text:""}},ns='"',so=ur('"',!1),Do=function(N){return N},ji=function(N){return{type:"arithmetic",arithmetic:N,quoted:!0}},oo=function(N){return{type:"shell",shell:N,quoted:!0}},bo=function(N){return{type:"variable",...N,quoted:!0}},RA=function(N){return{type:"text",text:N}},hf=function(N){return{type:"arithmetic",arithmetic:N,quoted:!1}},hh=function(N){return{type:"shell",shell:N,quoted:!1}},gh=function(N){return{type:"variable",...N,quoted:!1}},ao=function(N){return{type:"glob",pattern:N}},Gn=/^[^']/,Ns=zi(["'"],!0,!1),lo=function(N){return N.join("")},iu=/^[^$"]/,su=zi(["$",'"'],!0,!1),ou=`\\ -`,TA=ur(`\\ -`,!1),FA=function(){return""},ua="\\",fa=ur("\\",!1),NA=/^[\\$"`]/,gr=zi(["\\","$",'"',"`"],!1,!1),Po=function(N){return N},Ue="\\a",au=ur("\\a",!1),Cr=function(){return"a"},gf="\\b",OA=ur("\\b",!1),LA=function(){return"\b"},lu=/^[Ee]/,cu=zi(["E","e"],!1,!1),ac=function(){return"\x1B"},we="\\f",Nt=ur("\\f",!1),lc=function(){return"\f"},Oi="\\n",co=ur("\\n",!1),Tt=function(){return` -`},Qn="\\r",Aa=ur("\\r",!1),Gi=function(){return"\r"},Li="\\t",ja=ur("\\t",!1),mn=function(){return" "},Zn="\\v",uu=ur("\\v",!1),dh=function(){return"\v"},Ga=/^[\\'"?]/,qa=zi(["\\","'",'"',"?"],!1,!1),Wa=function(N){return String.fromCharCode(parseInt(N,16))},$e="\\x",Va=ur("\\x",!1),df="\\u",cc=ur("\\u",!1),vn="\\U",pa=ur("\\U",!1),MA=function(N){return String.fromCodePoint(parseInt(N,16))},UA=/^[0-7]/,ha=zi([["0","7"]],!1,!1),xl=/^[0-9a-fA-f]/,Mt=zi([["0","9"],["a","f"],["A","f"]],!1,!1),Rn=If(),ga="{}",Ya=ur("{}",!1),is=function(){return"{}"},uc="-",fu=ur("-",!1),fc="+",Ka=ur("+",!1),Mi=".",Bs=ur(".",!1),kl=function(N,J,re){return{type:"number",value:(N==="-"?-1:1)*parseFloat(J.join("")+"."+re.join(""))}},mf=function(N,J){return{type:"number",value:(N==="-"?-1:1)*parseInt(J.join(""))}},Ac=function(N){return{type:"variable",...N}},Bi=function(N){return{type:"variable",name:N}},Tn=function(N){return N},pc="*",Je=ur("*",!1),ot="/",St=ur("/",!1),lr=function(N,J,re){return{type:J==="*"?"multiplication":"division",right:re}},ee=function(N,J){return J.reduce((re,ge)=>({left:re,...ge}),N)},ye=function(N,J,re){return{type:J==="+"?"addition":"subtraction",right:re}},Oe="$((",mt=ur("$((",!1),Et="))",bt=ur("))",!1),tr=function(N){return N},pn="$(",ci=ur("$(",!1),qi=function(N){return N},Fn="${",Ja=ur("${",!1),Iy=":-",q1=ur(":-",!1),xo=function(N,J){return{name:N,defaultValue:J}},Cy=":-}",mh=ur(":-}",!1),W1=function(N){return{name:N,defaultValue:[]}},ko=":+",yh=ur(":+",!1),Eh=function(N,J){return{name:N,alternativeValue:J}},Au=":+}",Ih=ur(":+}",!1),Rg=function(N){return{name:N,alternativeValue:[]}},Tg=function(N){return{name:N}},Fg="$",wy=ur("$",!1),yf=function(N){return t.isGlobPattern(N)},Qo=function(N){return N},Ql=/^[a-zA-Z0-9_]/,Ch=zi([["a","z"],["A","Z"],["0","9"],"_"],!1,!1),Ng=function(){return Dy()},Rl=/^[$@*?#a-zA-Z0-9_\-]/,Tl=zi(["$","@","*","?","#",["a","z"],["A","Z"],["0","9"],"_","-"],!1,!1),By=/^[()}<>$|&; \t"']/,_A=zi(["(",")","}","<",">","$","|","&",";"," "," ",'"',"'"],!1,!1),vy=/^[<>&; \t"']/,Sy=zi(["<",">","&",";"," "," ",'"',"'"],!1,!1),HA=/^[ \t]/,jA=zi([" "," "],!1,!1),W=0,xt=0,GA=[{line:1,column:1}],Ro=0,Ef=[],yt=0,pu;if("startRule"in t){if(!(t.startRule in s))throw new Error(`Can't start parsing from rule "`+t.startRule+'".');a=s[t.startRule]}function Dy(){return e.substring(xt,W)}function Og(){return Cf(xt,W)}function V1(N,J){throw J=J!==void 0?J:Cf(xt,W),qA([Lg(N)],e.substring(xt,W),J)}function wh(N,J){throw J=J!==void 0?J:Cf(xt,W),mi(N,J)}function ur(N,J){return{type:"literal",text:N,ignoreCase:J}}function zi(N,J,re){return{type:"class",parts:N,inverted:J,ignoreCase:re}}function If(){return{type:"any"}}function za(){return{type:"end"}}function Lg(N){return{type:"other",description:N}}function hu(N){var J=GA[N],re;if(J)return J;for(re=N-1;!GA[re];)re--;for(J=GA[re],J={line:J.line,column:J.column};reRo&&(Ro=W,Ef=[]),Ef.push(N))}function mi(N,J){return new Cd(N,null,null,J)}function qA(N,J,re){return new Cd(Cd.buildMessage(N,J),N,J,re)}function Za(){var N,J,re;for(N=W,J=[],re=kt();re!==r;)J.push(re),re=kt();return J!==r?(re=da(),re===r&&(re=null),re!==r?(xt=N,J=n(re),N=J):(W=N,N=r)):(W=N,N=r),N}function da(){var N,J,re,ge,Ke;if(N=W,J=Bh(),J!==r){for(re=[],ge=kt();ge!==r;)re.push(ge),ge=kt();re!==r?(ge=Mg(),ge!==r?(Ke=Xa(),Ke===r&&(Ke=null),Ke!==r?(xt=N,J=c(J,ge,Ke),N=J):(W=N,N=r)):(W=N,N=r)):(W=N,N=r)}else W=N,N=r;if(N===r)if(N=W,J=Bh(),J!==r){for(re=[],ge=kt();ge!==r;)re.push(ge),ge=kt();re!==r?(ge=Mg(),ge===r&&(ge=null),ge!==r?(xt=N,J=f(J,ge),N=J):(W=N,N=r)):(W=N,N=r)}else W=N,N=r;return N}function Xa(){var N,J,re,ge,Ke;for(N=W,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r)if(re=da(),re!==r){for(ge=[],Ke=kt();Ke!==r;)ge.push(Ke),Ke=kt();ge!==r?(xt=N,J=p(re),N=J):(W=N,N=r)}else W=N,N=r;else W=N,N=r;return N}function Mg(){var N;return e.charCodeAt(W)===59?(N=h,W++):(N=r,yt===0&&wt(E)),N===r&&(e.charCodeAt(W)===38?(N=C,W++):(N=r,yt===0&&wt(S))),N}function Bh(){var N,J,re;return N=W,J=WA(),J!==r?(re=Ug(),re===r&&(re=null),re!==r?(xt=N,J=x(J,re),N=J):(W=N,N=r)):(W=N,N=r),N}function Ug(){var N,J,re,ge,Ke,pt,dr;for(N=W,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r)if(re=by(),re!==r){for(ge=[],Ke=kt();Ke!==r;)ge.push(Ke),Ke=kt();if(ge!==r)if(Ke=Bh(),Ke!==r){for(pt=[],dr=kt();dr!==r;)pt.push(dr),dr=kt();pt!==r?(xt=N,J=I(re,Ke),N=J):(W=N,N=r)}else W=N,N=r;else W=N,N=r}else W=N,N=r;else W=N,N=r;return N}function by(){var N;return e.substr(W,2)===T?(N=T,W+=2):(N=r,yt===0&&wt(O)),N===r&&(e.substr(W,2)===U?(N=U,W+=2):(N=r,yt===0&&wt(Y))),N}function WA(){var N,J,re;return N=W,J=wf(),J!==r?(re=_g(),re===r&&(re=null),re!==r?(xt=N,J=te(J,re),N=J):(W=N,N=r)):(W=N,N=r),N}function _g(){var N,J,re,ge,Ke,pt,dr;for(N=W,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r)if(re=gu(),re!==r){for(ge=[],Ke=kt();Ke!==r;)ge.push(Ke),Ke=kt();if(ge!==r)if(Ke=WA(),Ke!==r){for(pt=[],dr=kt();dr!==r;)pt.push(dr),dr=kt();pt!==r?(xt=N,J=ie(re,Ke),N=J):(W=N,N=r)}else W=N,N=r;else W=N,N=r}else W=N,N=r;else W=N,N=r;return N}function gu(){var N;return e.substr(W,2)===ue?(N=ue,W+=2):(N=r,yt===0&&wt(ae)),N===r&&(e.charCodeAt(W)===124?(N=de,W++):(N=r,yt===0&&wt(Ae))),N}function du(){var N,J,re,ge,Ke,pt;if(N=W,J=Dh(),J!==r)if(e.charCodeAt(W)===61?(re=Ce,W++):(re=r,yt===0&&wt(Ee)),re!==r)if(ge=VA(),ge!==r){for(Ke=[],pt=kt();pt!==r;)Ke.push(pt),pt=kt();Ke!==r?(xt=N,J=g(J,ge),N=J):(W=N,N=r)}else W=N,N=r;else W=N,N=r;else W=N,N=r;if(N===r)if(N=W,J=Dh(),J!==r)if(e.charCodeAt(W)===61?(re=Ce,W++):(re=r,yt===0&&wt(Ee)),re!==r){for(ge=[],Ke=kt();Ke!==r;)ge.push(Ke),Ke=kt();ge!==r?(xt=N,J=Se(J),N=J):(W=N,N=r)}else W=N,N=r;else W=N,N=r;return N}function wf(){var N,J,re,ge,Ke,pt,dr,vr,_n,yi,vs;for(N=W,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r)if(e.charCodeAt(W)===40?(re=Be,W++):(re=r,yt===0&&wt(me)),re!==r){for(ge=[],Ke=kt();Ke!==r;)ge.push(Ke),Ke=kt();if(ge!==r)if(Ke=da(),Ke!==r){for(pt=[],dr=kt();dr!==r;)pt.push(dr),dr=kt();if(pt!==r)if(e.charCodeAt(W)===41?(dr=ce,W++):(dr=r,yt===0&&wt(X)),dr!==r){for(vr=[],_n=kt();_n!==r;)vr.push(_n),_n=kt();if(vr!==r){for(_n=[],yi=qn();yi!==r;)_n.push(yi),yi=qn();if(_n!==r){for(yi=[],vs=kt();vs!==r;)yi.push(vs),vs=kt();yi!==r?(xt=N,J=De(Ke,_n),N=J):(W=N,N=r)}else W=N,N=r}else W=N,N=r}else W=N,N=r;else W=N,N=r}else W=N,N=r;else W=N,N=r}else W=N,N=r;else W=N,N=r;if(N===r){for(N=W,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r)if(e.charCodeAt(W)===123?(re=Qe,W++):(re=r,yt===0&&wt(it)),re!==r){for(ge=[],Ke=kt();Ke!==r;)ge.push(Ke),Ke=kt();if(ge!==r)if(Ke=da(),Ke!==r){for(pt=[],dr=kt();dr!==r;)pt.push(dr),dr=kt();if(pt!==r)if(e.charCodeAt(W)===125?(dr=_,W++):(dr=r,yt===0&&wt(tt)),dr!==r){for(vr=[],_n=kt();_n!==r;)vr.push(_n),_n=kt();if(vr!==r){for(_n=[],yi=qn();yi!==r;)_n.push(yi),yi=qn();if(_n!==r){for(yi=[],vs=kt();vs!==r;)yi.push(vs),vs=kt();yi!==r?(xt=N,J=Ne(Ke,_n),N=J):(W=N,N=r)}else W=N,N=r}else W=N,N=r}else W=N,N=r;else W=N,N=r}else W=N,N=r;else W=N,N=r}else W=N,N=r;else W=N,N=r;if(N===r){for(N=W,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r){for(re=[],ge=du();ge!==r;)re.push(ge),ge=du();if(re!==r){for(ge=[],Ke=kt();Ke!==r;)ge.push(Ke),Ke=kt();if(ge!==r){if(Ke=[],pt=mu(),pt!==r)for(;pt!==r;)Ke.push(pt),pt=mu();else Ke=r;if(Ke!==r){for(pt=[],dr=kt();dr!==r;)pt.push(dr),dr=kt();pt!==r?(xt=N,J=ke(re,Ke),N=J):(W=N,N=r)}else W=N,N=r}else W=N,N=r}else W=N,N=r}else W=N,N=r;if(N===r){for(N=W,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r){if(re=[],ge=du(),ge!==r)for(;ge!==r;)re.push(ge),ge=du();else re=r;if(re!==r){for(ge=[],Ke=kt();Ke!==r;)ge.push(Ke),Ke=kt();ge!==r?(xt=N,J=be(re),N=J):(W=N,N=r)}else W=N,N=r}else W=N,N=r}}}return N}function Os(){var N,J,re,ge,Ke;for(N=W,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r){if(re=[],ge=Pi(),ge!==r)for(;ge!==r;)re.push(ge),ge=Pi();else re=r;if(re!==r){for(ge=[],Ke=kt();Ke!==r;)ge.push(Ke),Ke=kt();ge!==r?(xt=N,J=je(re),N=J):(W=N,N=r)}else W=N,N=r}else W=N,N=r;return N}function mu(){var N,J,re;for(N=W,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r?(re=qn(),re!==r?(xt=N,J=Re(re),N=J):(W=N,N=r)):(W=N,N=r),N===r){for(N=W,J=[],re=kt();re!==r;)J.push(re),re=kt();J!==r?(re=Pi(),re!==r?(xt=N,J=Re(re),N=J):(W=N,N=r)):(W=N,N=r)}return N}function qn(){var N,J,re,ge,Ke;for(N=W,J=[],re=kt();re!==r;)J.push(re),re=kt();return J!==r?(ct.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&wt(Me)),re===r&&(re=null),re!==r?(ge=ss(),ge!==r?(Ke=Pi(),Ke!==r?(xt=N,J=P(re,ge,Ke),N=J):(W=N,N=r)):(W=N,N=r)):(W=N,N=r)):(W=N,N=r),N}function ss(){var N;return e.substr(W,2)===w?(N=w,W+=2):(N=r,yt===0&&wt(b)),N===r&&(e.substr(W,2)===y?(N=y,W+=2):(N=r,yt===0&&wt(F)),N===r&&(e.charCodeAt(W)===62?(N=z,W++):(N=r,yt===0&&wt(Z)),N===r&&(e.substr(W,3)===$?(N=$,W+=3):(N=r,yt===0&&wt(se)),N===r&&(e.substr(W,2)===xe?(N=xe,W+=2):(N=r,yt===0&&wt(Fe)),N===r&&(e.charCodeAt(W)===60?(N=ut,W++):(N=r,yt===0&&wt(Ct))))))),N}function Pi(){var N,J,re;for(N=W,J=[],re=kt();re!==r;)J.push(re),re=kt();return J!==r?(re=VA(),re!==r?(xt=N,J=Re(re),N=J):(W=N,N=r)):(W=N,N=r),N}function VA(){var N,J,re;if(N=W,J=[],re=Bf(),re!==r)for(;re!==r;)J.push(re),re=Bf();else J=r;return J!==r&&(xt=N,J=qt(J)),N=J,N}function Bf(){var N,J;return N=W,J=yn(),J!==r&&(xt=N,J=ir(J)),N=J,N===r&&(N=W,J=Hg(),J!==r&&(xt=N,J=ir(J)),N=J,N===r&&(N=W,J=jg(),J!==r&&(xt=N,J=ir(J)),N=J,N===r&&(N=W,J=os(),J!==r&&(xt=N,J=ir(J)),N=J))),N}function yn(){var N,J,re,ge;return N=W,e.substr(W,2)===Pt?(J=Pt,W+=2):(J=r,yt===0&&wt(dn)),J!==r?(re=En(),re!==r?(e.charCodeAt(W)===39?(ge=Pr,W++):(ge=r,yt===0&&wt(Ir)),ge!==r?(xt=N,J=Or(re),N=J):(W=N,N=r)):(W=N,N=r)):(W=N,N=r),N}function Hg(){var N,J,re,ge;return N=W,e.charCodeAt(W)===39?(J=Pr,W++):(J=r,yt===0&&wt(Ir)),J!==r?(re=vf(),re!==r?(e.charCodeAt(W)===39?(ge=Pr,W++):(ge=r,yt===0&&wt(Ir)),ge!==r?(xt=N,J=Or(re),N=J):(W=N,N=r)):(W=N,N=r)):(W=N,N=r),N}function jg(){var N,J,re,ge;if(N=W,e.substr(W,2)===on?(J=on,W+=2):(J=r,yt===0&&wt(li)),J!==r&&(xt=N,J=So()),N=J,N===r)if(N=W,e.charCodeAt(W)===34?(J=ns,W++):(J=r,yt===0&&wt(so)),J!==r){for(re=[],ge=Fl();ge!==r;)re.push(ge),ge=Fl();re!==r?(e.charCodeAt(W)===34?(ge=ns,W++):(ge=r,yt===0&&wt(so)),ge!==r?(xt=N,J=Do(re),N=J):(W=N,N=r)):(W=N,N=r)}else W=N,N=r;return N}function os(){var N,J,re;if(N=W,J=[],re=To(),re!==r)for(;re!==r;)J.push(re),re=To();else J=r;return J!==r&&(xt=N,J=Do(J)),N=J,N}function Fl(){var N,J;return N=W,J=Xr(),J!==r&&(xt=N,J=ji(J)),N=J,N===r&&(N=W,J=Sh(),J!==r&&(xt=N,J=oo(J)),N=J,N===r&&(N=W,J=KA(),J!==r&&(xt=N,J=bo(J)),N=J,N===r&&(N=W,J=Sf(),J!==r&&(xt=N,J=RA(J)),N=J))),N}function To(){var N,J;return N=W,J=Xr(),J!==r&&(xt=N,J=hf(J)),N=J,N===r&&(N=W,J=Sh(),J!==r&&(xt=N,J=hh(J)),N=J,N===r&&(N=W,J=KA(),J!==r&&(xt=N,J=gh(J)),N=J,N===r&&(N=W,J=Py(),J!==r&&(xt=N,J=ao(J)),N=J,N===r&&(N=W,J=vh(),J!==r&&(xt=N,J=RA(J)),N=J)))),N}function vf(){var N,J,re;for(N=W,J=[],Gn.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&wt(Ns));re!==r;)J.push(re),Gn.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&wt(Ns));return J!==r&&(xt=N,J=lo(J)),N=J,N}function Sf(){var N,J,re;if(N=W,J=[],re=Nl(),re===r&&(iu.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&wt(su))),re!==r)for(;re!==r;)J.push(re),re=Nl(),re===r&&(iu.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&wt(su)));else J=r;return J!==r&&(xt=N,J=lo(J)),N=J,N}function Nl(){var N,J,re;return N=W,e.substr(W,2)===ou?(J=ou,W+=2):(J=r,yt===0&&wt(TA)),J!==r&&(xt=N,J=FA()),N=J,N===r&&(N=W,e.charCodeAt(W)===92?(J=ua,W++):(J=r,yt===0&&wt(fa)),J!==r?(NA.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&wt(gr)),re!==r?(xt=N,J=Po(re),N=J):(W=N,N=r)):(W=N,N=r)),N}function En(){var N,J,re;for(N=W,J=[],re=Fo(),re===r&&(Gn.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&wt(Ns)));re!==r;)J.push(re),re=Fo(),re===r&&(Gn.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&wt(Ns)));return J!==r&&(xt=N,J=lo(J)),N=J,N}function Fo(){var N,J,re;return N=W,e.substr(W,2)===Ue?(J=Ue,W+=2):(J=r,yt===0&&wt(au)),J!==r&&(xt=N,J=Cr()),N=J,N===r&&(N=W,e.substr(W,2)===gf?(J=gf,W+=2):(J=r,yt===0&&wt(OA)),J!==r&&(xt=N,J=LA()),N=J,N===r&&(N=W,e.charCodeAt(W)===92?(J=ua,W++):(J=r,yt===0&&wt(fa)),J!==r?(lu.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&wt(cu)),re!==r?(xt=N,J=ac(),N=J):(W=N,N=r)):(W=N,N=r),N===r&&(N=W,e.substr(W,2)===we?(J=we,W+=2):(J=r,yt===0&&wt(Nt)),J!==r&&(xt=N,J=lc()),N=J,N===r&&(N=W,e.substr(W,2)===Oi?(J=Oi,W+=2):(J=r,yt===0&&wt(co)),J!==r&&(xt=N,J=Tt()),N=J,N===r&&(N=W,e.substr(W,2)===Qn?(J=Qn,W+=2):(J=r,yt===0&&wt(Aa)),J!==r&&(xt=N,J=Gi()),N=J,N===r&&(N=W,e.substr(W,2)===Li?(J=Li,W+=2):(J=r,yt===0&&wt(ja)),J!==r&&(xt=N,J=mn()),N=J,N===r&&(N=W,e.substr(W,2)===Zn?(J=Zn,W+=2):(J=r,yt===0&&wt(uu)),J!==r&&(xt=N,J=dh()),N=J,N===r&&(N=W,e.charCodeAt(W)===92?(J=ua,W++):(J=r,yt===0&&wt(fa)),J!==r?(Ga.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&wt(qa)),re!==r?(xt=N,J=Po(re),N=J):(W=N,N=r)):(W=N,N=r),N===r&&(N=yu()))))))))),N}function yu(){var N,J,re,ge,Ke,pt,dr,vr,_n,yi,vs,JA;return N=W,e.charCodeAt(W)===92?(J=ua,W++):(J=r,yt===0&&wt(fa)),J!==r?(re=ma(),re!==r?(xt=N,J=Wa(re),N=J):(W=N,N=r)):(W=N,N=r),N===r&&(N=W,e.substr(W,2)===$e?(J=$e,W+=2):(J=r,yt===0&&wt(Va)),J!==r?(re=W,ge=W,Ke=ma(),Ke!==r?(pt=Ls(),pt!==r?(Ke=[Ke,pt],ge=Ke):(W=ge,ge=r)):(W=ge,ge=r),ge===r&&(ge=ma()),ge!==r?re=e.substring(re,W):re=ge,re!==r?(xt=N,J=Wa(re),N=J):(W=N,N=r)):(W=N,N=r),N===r&&(N=W,e.substr(W,2)===df?(J=df,W+=2):(J=r,yt===0&&wt(cc)),J!==r?(re=W,ge=W,Ke=Ls(),Ke!==r?(pt=Ls(),pt!==r?(dr=Ls(),dr!==r?(vr=Ls(),vr!==r?(Ke=[Ke,pt,dr,vr],ge=Ke):(W=ge,ge=r)):(W=ge,ge=r)):(W=ge,ge=r)):(W=ge,ge=r),ge!==r?re=e.substring(re,W):re=ge,re!==r?(xt=N,J=Wa(re),N=J):(W=N,N=r)):(W=N,N=r),N===r&&(N=W,e.substr(W,2)===vn?(J=vn,W+=2):(J=r,yt===0&&wt(pa)),J!==r?(re=W,ge=W,Ke=Ls(),Ke!==r?(pt=Ls(),pt!==r?(dr=Ls(),dr!==r?(vr=Ls(),vr!==r?(_n=Ls(),_n!==r?(yi=Ls(),yi!==r?(vs=Ls(),vs!==r?(JA=Ls(),JA!==r?(Ke=[Ke,pt,dr,vr,_n,yi,vs,JA],ge=Ke):(W=ge,ge=r)):(W=ge,ge=r)):(W=ge,ge=r)):(W=ge,ge=r)):(W=ge,ge=r)):(W=ge,ge=r)):(W=ge,ge=r)):(W=ge,ge=r),ge!==r?re=e.substring(re,W):re=ge,re!==r?(xt=N,J=MA(re),N=J):(W=N,N=r)):(W=N,N=r)))),N}function ma(){var N;return UA.test(e.charAt(W))?(N=e.charAt(W),W++):(N=r,yt===0&&wt(ha)),N}function Ls(){var N;return xl.test(e.charAt(W))?(N=e.charAt(W),W++):(N=r,yt===0&&wt(Mt)),N}function vh(){var N,J,re,ge,Ke;if(N=W,J=[],re=W,e.charCodeAt(W)===92?(ge=ua,W++):(ge=r,yt===0&&wt(fa)),ge!==r?(e.length>W?(Ke=e.charAt(W),W++):(Ke=r,yt===0&&wt(Rn)),Ke!==r?(xt=re,ge=Po(Ke),re=ge):(W=re,re=r)):(W=re,re=r),re===r&&(re=W,e.substr(W,2)===ga?(ge=ga,W+=2):(ge=r,yt===0&&wt(Ya)),ge!==r&&(xt=re,ge=is()),re=ge,re===r&&(re=W,ge=W,yt++,Ke=xy(),yt--,Ke===r?ge=void 0:(W=ge,ge=r),ge!==r?(e.length>W?(Ke=e.charAt(W),W++):(Ke=r,yt===0&&wt(Rn)),Ke!==r?(xt=re,ge=Po(Ke),re=ge):(W=re,re=r)):(W=re,re=r))),re!==r)for(;re!==r;)J.push(re),re=W,e.charCodeAt(W)===92?(ge=ua,W++):(ge=r,yt===0&&wt(fa)),ge!==r?(e.length>W?(Ke=e.charAt(W),W++):(Ke=r,yt===0&&wt(Rn)),Ke!==r?(xt=re,ge=Po(Ke),re=ge):(W=re,re=r)):(W=re,re=r),re===r&&(re=W,e.substr(W,2)===ga?(ge=ga,W+=2):(ge=r,yt===0&&wt(Ya)),ge!==r&&(xt=re,ge=is()),re=ge,re===r&&(re=W,ge=W,yt++,Ke=xy(),yt--,Ke===r?ge=void 0:(W=ge,ge=r),ge!==r?(e.length>W?(Ke=e.charAt(W),W++):(Ke=r,yt===0&&wt(Rn)),Ke!==r?(xt=re,ge=Po(Ke),re=ge):(W=re,re=r)):(W=re,re=r)));else J=r;return J!==r&&(xt=N,J=lo(J)),N=J,N}function YA(){var N,J,re,ge,Ke,pt;if(N=W,e.charCodeAt(W)===45?(J=uc,W++):(J=r,yt===0&&wt(fu)),J===r&&(e.charCodeAt(W)===43?(J=fc,W++):(J=r,yt===0&&wt(Ka))),J===r&&(J=null),J!==r){if(re=[],ct.test(e.charAt(W))?(ge=e.charAt(W),W++):(ge=r,yt===0&&wt(Me)),ge!==r)for(;ge!==r;)re.push(ge),ct.test(e.charAt(W))?(ge=e.charAt(W),W++):(ge=r,yt===0&&wt(Me));else re=r;if(re!==r)if(e.charCodeAt(W)===46?(ge=Mi,W++):(ge=r,yt===0&&wt(Bs)),ge!==r){if(Ke=[],ct.test(e.charAt(W))?(pt=e.charAt(W),W++):(pt=r,yt===0&&wt(Me)),pt!==r)for(;pt!==r;)Ke.push(pt),ct.test(e.charAt(W))?(pt=e.charAt(W),W++):(pt=r,yt===0&&wt(Me));else Ke=r;Ke!==r?(xt=N,J=kl(J,re,Ke),N=J):(W=N,N=r)}else W=N,N=r;else W=N,N=r}else W=N,N=r;if(N===r){if(N=W,e.charCodeAt(W)===45?(J=uc,W++):(J=r,yt===0&&wt(fu)),J===r&&(e.charCodeAt(W)===43?(J=fc,W++):(J=r,yt===0&&wt(Ka))),J===r&&(J=null),J!==r){if(re=[],ct.test(e.charAt(W))?(ge=e.charAt(W),W++):(ge=r,yt===0&&wt(Me)),ge!==r)for(;ge!==r;)re.push(ge),ct.test(e.charAt(W))?(ge=e.charAt(W),W++):(ge=r,yt===0&&wt(Me));else re=r;re!==r?(xt=N,J=mf(J,re),N=J):(W=N,N=r)}else W=N,N=r;if(N===r&&(N=W,J=KA(),J!==r&&(xt=N,J=Ac(J)),N=J,N===r&&(N=W,J=hc(),J!==r&&(xt=N,J=Bi(J)),N=J,N===r)))if(N=W,e.charCodeAt(W)===40?(J=Be,W++):(J=r,yt===0&&wt(me)),J!==r){for(re=[],ge=kt();ge!==r;)re.push(ge),ge=kt();if(re!==r)if(ge=uo(),ge!==r){for(Ke=[],pt=kt();pt!==r;)Ke.push(pt),pt=kt();Ke!==r?(e.charCodeAt(W)===41?(pt=ce,W++):(pt=r,yt===0&&wt(X)),pt!==r?(xt=N,J=Tn(ge),N=J):(W=N,N=r)):(W=N,N=r)}else W=N,N=r;else W=N,N=r}else W=N,N=r}return N}function Df(){var N,J,re,ge,Ke,pt,dr,vr;if(N=W,J=YA(),J!==r){for(re=[],ge=W,Ke=[],pt=kt();pt!==r;)Ke.push(pt),pt=kt();if(Ke!==r)if(e.charCodeAt(W)===42?(pt=pc,W++):(pt=r,yt===0&&wt(Je)),pt===r&&(e.charCodeAt(W)===47?(pt=ot,W++):(pt=r,yt===0&&wt(St))),pt!==r){for(dr=[],vr=kt();vr!==r;)dr.push(vr),vr=kt();dr!==r?(vr=YA(),vr!==r?(xt=ge,Ke=lr(J,pt,vr),ge=Ke):(W=ge,ge=r)):(W=ge,ge=r)}else W=ge,ge=r;else W=ge,ge=r;for(;ge!==r;){for(re.push(ge),ge=W,Ke=[],pt=kt();pt!==r;)Ke.push(pt),pt=kt();if(Ke!==r)if(e.charCodeAt(W)===42?(pt=pc,W++):(pt=r,yt===0&&wt(Je)),pt===r&&(e.charCodeAt(W)===47?(pt=ot,W++):(pt=r,yt===0&&wt(St))),pt!==r){for(dr=[],vr=kt();vr!==r;)dr.push(vr),vr=kt();dr!==r?(vr=YA(),vr!==r?(xt=ge,Ke=lr(J,pt,vr),ge=Ke):(W=ge,ge=r)):(W=ge,ge=r)}else W=ge,ge=r;else W=ge,ge=r}re!==r?(xt=N,J=ee(J,re),N=J):(W=N,N=r)}else W=N,N=r;return N}function uo(){var N,J,re,ge,Ke,pt,dr,vr;if(N=W,J=Df(),J!==r){for(re=[],ge=W,Ke=[],pt=kt();pt!==r;)Ke.push(pt),pt=kt();if(Ke!==r)if(e.charCodeAt(W)===43?(pt=fc,W++):(pt=r,yt===0&&wt(Ka)),pt===r&&(e.charCodeAt(W)===45?(pt=uc,W++):(pt=r,yt===0&&wt(fu))),pt!==r){for(dr=[],vr=kt();vr!==r;)dr.push(vr),vr=kt();dr!==r?(vr=Df(),vr!==r?(xt=ge,Ke=ye(J,pt,vr),ge=Ke):(W=ge,ge=r)):(W=ge,ge=r)}else W=ge,ge=r;else W=ge,ge=r;for(;ge!==r;){for(re.push(ge),ge=W,Ke=[],pt=kt();pt!==r;)Ke.push(pt),pt=kt();if(Ke!==r)if(e.charCodeAt(W)===43?(pt=fc,W++):(pt=r,yt===0&&wt(Ka)),pt===r&&(e.charCodeAt(W)===45?(pt=uc,W++):(pt=r,yt===0&&wt(fu))),pt!==r){for(dr=[],vr=kt();vr!==r;)dr.push(vr),vr=kt();dr!==r?(vr=Df(),vr!==r?(xt=ge,Ke=ye(J,pt,vr),ge=Ke):(W=ge,ge=r)):(W=ge,ge=r)}else W=ge,ge=r;else W=ge,ge=r}re!==r?(xt=N,J=ee(J,re),N=J):(W=N,N=r)}else W=N,N=r;return N}function Xr(){var N,J,re,ge,Ke,pt;if(N=W,e.substr(W,3)===Oe?(J=Oe,W+=3):(J=r,yt===0&&wt(mt)),J!==r){for(re=[],ge=kt();ge!==r;)re.push(ge),ge=kt();if(re!==r)if(ge=uo(),ge!==r){for(Ke=[],pt=kt();pt!==r;)Ke.push(pt),pt=kt();Ke!==r?(e.substr(W,2)===Et?(pt=Et,W+=2):(pt=r,yt===0&&wt(bt)),pt!==r?(xt=N,J=tr(ge),N=J):(W=N,N=r)):(W=N,N=r)}else W=N,N=r;else W=N,N=r}else W=N,N=r;return N}function Sh(){var N,J,re,ge;return N=W,e.substr(W,2)===pn?(J=pn,W+=2):(J=r,yt===0&&wt(ci)),J!==r?(re=da(),re!==r?(e.charCodeAt(W)===41?(ge=ce,W++):(ge=r,yt===0&&wt(X)),ge!==r?(xt=N,J=qi(re),N=J):(W=N,N=r)):(W=N,N=r)):(W=N,N=r),N}function KA(){var N,J,re,ge,Ke,pt;return N=W,e.substr(W,2)===Fn?(J=Fn,W+=2):(J=r,yt===0&&wt(Ja)),J!==r?(re=hc(),re!==r?(e.substr(W,2)===Iy?(ge=Iy,W+=2):(ge=r,yt===0&&wt(q1)),ge!==r?(Ke=Os(),Ke!==r?(e.charCodeAt(W)===125?(pt=_,W++):(pt=r,yt===0&&wt(tt)),pt!==r?(xt=N,J=xo(re,Ke),N=J):(W=N,N=r)):(W=N,N=r)):(W=N,N=r)):(W=N,N=r)):(W=N,N=r),N===r&&(N=W,e.substr(W,2)===Fn?(J=Fn,W+=2):(J=r,yt===0&&wt(Ja)),J!==r?(re=hc(),re!==r?(e.substr(W,3)===Cy?(ge=Cy,W+=3):(ge=r,yt===0&&wt(mh)),ge!==r?(xt=N,J=W1(re),N=J):(W=N,N=r)):(W=N,N=r)):(W=N,N=r),N===r&&(N=W,e.substr(W,2)===Fn?(J=Fn,W+=2):(J=r,yt===0&&wt(Ja)),J!==r?(re=hc(),re!==r?(e.substr(W,2)===ko?(ge=ko,W+=2):(ge=r,yt===0&&wt(yh)),ge!==r?(Ke=Os(),Ke!==r?(e.charCodeAt(W)===125?(pt=_,W++):(pt=r,yt===0&&wt(tt)),pt!==r?(xt=N,J=Eh(re,Ke),N=J):(W=N,N=r)):(W=N,N=r)):(W=N,N=r)):(W=N,N=r)):(W=N,N=r),N===r&&(N=W,e.substr(W,2)===Fn?(J=Fn,W+=2):(J=r,yt===0&&wt(Ja)),J!==r?(re=hc(),re!==r?(e.substr(W,3)===Au?(ge=Au,W+=3):(ge=r,yt===0&&wt(Ih)),ge!==r?(xt=N,J=Rg(re),N=J):(W=N,N=r)):(W=N,N=r)):(W=N,N=r),N===r&&(N=W,e.substr(W,2)===Fn?(J=Fn,W+=2):(J=r,yt===0&&wt(Ja)),J!==r?(re=hc(),re!==r?(e.charCodeAt(W)===125?(ge=_,W++):(ge=r,yt===0&&wt(tt)),ge!==r?(xt=N,J=Tg(re),N=J):(W=N,N=r)):(W=N,N=r)):(W=N,N=r),N===r&&(N=W,e.charCodeAt(W)===36?(J=Fg,W++):(J=r,yt===0&&wt(wy)),J!==r?(re=hc(),re!==r?(xt=N,J=Tg(re),N=J):(W=N,N=r)):(W=N,N=r)))))),N}function Py(){var N,J,re;return N=W,J=Gg(),J!==r?(xt=W,re=yf(J),re?re=void 0:re=r,re!==r?(xt=N,J=Qo(J),N=J):(W=N,N=r)):(W=N,N=r),N}function Gg(){var N,J,re,ge,Ke;if(N=W,J=[],re=W,ge=W,yt++,Ke=bh(),yt--,Ke===r?ge=void 0:(W=ge,ge=r),ge!==r?(e.length>W?(Ke=e.charAt(W),W++):(Ke=r,yt===0&&wt(Rn)),Ke!==r?(xt=re,ge=Po(Ke),re=ge):(W=re,re=r)):(W=re,re=r),re!==r)for(;re!==r;)J.push(re),re=W,ge=W,yt++,Ke=bh(),yt--,Ke===r?ge=void 0:(W=ge,ge=r),ge!==r?(e.length>W?(Ke=e.charAt(W),W++):(Ke=r,yt===0&&wt(Rn)),Ke!==r?(xt=re,ge=Po(Ke),re=ge):(W=re,re=r)):(W=re,re=r);else J=r;return J!==r&&(xt=N,J=lo(J)),N=J,N}function Dh(){var N,J,re;if(N=W,J=[],Ql.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&wt(Ch)),re!==r)for(;re!==r;)J.push(re),Ql.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&wt(Ch));else J=r;return J!==r&&(xt=N,J=Ng()),N=J,N}function hc(){var N,J,re;if(N=W,J=[],Rl.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&wt(Tl)),re!==r)for(;re!==r;)J.push(re),Rl.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&wt(Tl));else J=r;return J!==r&&(xt=N,J=Ng()),N=J,N}function xy(){var N;return By.test(e.charAt(W))?(N=e.charAt(W),W++):(N=r,yt===0&&wt(_A)),N}function bh(){var N;return vy.test(e.charAt(W))?(N=e.charAt(W),W++):(N=r,yt===0&&wt(Sy)),N}function kt(){var N,J;if(N=[],HA.test(e.charAt(W))?(J=e.charAt(W),W++):(J=r,yt===0&&wt(jA)),J!==r)for(;J!==r;)N.push(J),HA.test(e.charAt(W))?(J=e.charAt(W),W++):(J=r,yt===0&&wt(jA));else N=r;return N}if(pu=a(),pu!==r&&W===e.length)return pu;throw pu!==r&&W!1}){try{return(0,O$.parse)(e,t)}catch(r){throw r.location&&(r.message=r.message.replace(/(\.)?$/,` (line ${r.location.start.line}, column ${r.location.start.column})$1`)),r}}function hE(e,{endSemicolon:t=!1}={}){return e.map(({command:r,type:s},a)=>`${fx(r)}${s===";"?a!==e.length-1||t?";":"":" &"}`).join(" ")}function fx(e){return`${gE(e.chain)}${e.then?` ${SU(e.then)}`:""}`}function SU(e){return`${e.type} ${fx(e.line)}`}function gE(e){return`${bU(e)}${e.then?` ${DU(e.then)}`:""}`}function DU(e){return`${e.type} ${gE(e.chain)}`}function bU(e){switch(e.type){case"command":return`${e.envs.length>0?`${e.envs.map(t=>cx(t)).join(" ")} `:""}${e.args.map(t=>PU(t)).join(" ")}`;case"subshell":return`(${hE(e.subshell)})${e.args.length>0?` ${e.args.map(t=>TB(t)).join(" ")}`:""}`;case"group":return`{ ${hE(e.group,{endSemicolon:!0})} }${e.args.length>0?` ${e.args.map(t=>TB(t)).join(" ")}`:""}`;case"envs":return e.envs.map(t=>cx(t)).join(" ");default:throw new Error(`Unsupported command type: "${e.type}"`)}}function cx(e){return`${e.name}=${e.args[0]?wd(e.args[0]):""}`}function PU(e){switch(e.type){case"redirection":return TB(e);case"argument":return wd(e);default:throw new Error(`Unsupported argument type: "${e.type}"`)}}function TB(e){return`${e.subtype} ${e.args.map(t=>wd(t)).join(" ")}`}function wd(e){return e.segments.map(t=>xU(t)).join("")}function xU(e){let t=(s,a)=>a?`"${s}"`:s,r=s=>s===""?"''":s.match(/[()}<>$|&;"'\n\t ]/)?s.match(/['\t\p{C}]/u)?s.match(/'/)?`"${s.replace(/["$\t\p{C}]/u,S6e)}"`:`$'${s.replace(/[\t\p{C}]/u,M$)}'`:`'${s}'`:s;switch(e.type){case"text":return r(e.text);case"glob":return e.pattern;case"shell":return t(`$(${hE(e.shell)})`,e.quoted);case"variable":return t(typeof e.defaultValue>"u"?typeof e.alternativeValue>"u"?`\${${e.name}}`:e.alternativeValue.length===0?`\${${e.name}:+}`:`\${${e.name}:+${e.alternativeValue.map(s=>wd(s)).join(" ")}}`:e.defaultValue.length===0?`\${${e.name}:-}`:`\${${e.name}:-${e.defaultValue.map(s=>wd(s)).join(" ")}}`,e.quoted);case"arithmetic":return`$(( ${Ax(e.arithmetic)} ))`;default:throw new Error(`Unsupported argument segment type: "${e.type}"`)}}function Ax(e){let t=a=>{switch(a){case"addition":return"+";case"subtraction":return"-";case"multiplication":return"*";case"division":return"/";default:throw new Error(`Can't extract operator from arithmetic expression of type "${a}"`)}},r=(a,n)=>n?`( ${a} )`:a,s=a=>r(Ax(a),!["number","variable"].includes(a.type));switch(e.type){case"number":return String(e.value);case"variable":return e.name;default:return`${s(e.left)} ${t(e.type)} ${s(e.right)}`}}var O$,L$,v6e,M$,S6e,U$=Ze(()=>{O$=et(N$());L$=new Map([["\f","\\f"],[` -`,"\\n"],["\r","\\r"],[" ","\\t"],["\v","\\v"],["\0","\\0"]]),v6e=new Map([["\\","\\\\"],["$","\\$"],['"','\\"'],...Array.from(L$,([e,t])=>[e,`"$'${t}'"`])]),M$=e=>L$.get(e)??`\\x${e.charCodeAt(0).toString(16).padStart(2,"0")}`,S6e=e=>v6e.get(e)??`"$'${M$(e)}'"`});var H$=G((hPt,_$)=>{"use strict";function D6e(e,t){function r(){this.constructor=e}r.prototype=t.prototype,e.prototype=new r}function Bd(e,t,r,s){this.message=e,this.expected=t,this.found=r,this.location=s,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Bd)}D6e(Bd,Error);Bd.buildMessage=function(e,t){var r={literal:function(h){return'"'+a(h.text)+'"'},class:function(h){var E="",C;for(C=0;C0){for(C=1,S=1;Cue&&(ue=Y,ae=[]),ae.push(Me))}function tt(Me,P){return new Bd(Me,null,null,P)}function Ne(Me,P,w){return new Bd(Bd.buildMessage(Me,P),Me,P,w)}function ke(){var Me,P,w,b;return Me=Y,P=be(),P!==r?(e.charCodeAt(Y)===47?(w=n,Y++):(w=r,de===0&&_(c)),w!==r?(b=be(),b!==r?(te=Me,P=f(P,b),Me=P):(Y=Me,Me=r)):(Y=Me,Me=r)):(Y=Me,Me=r),Me===r&&(Me=Y,P=be(),P!==r&&(te=Me,P=p(P)),Me=P),Me}function be(){var Me,P,w,b;return Me=Y,P=je(),P!==r?(e.charCodeAt(Y)===64?(w=h,Y++):(w=r,de===0&&_(E)),w!==r?(b=ct(),b!==r?(te=Me,P=C(P,b),Me=P):(Y=Me,Me=r)):(Y=Me,Me=r)):(Y=Me,Me=r),Me===r&&(Me=Y,P=je(),P!==r&&(te=Me,P=S(P)),Me=P),Me}function je(){var Me,P,w,b,y;return Me=Y,e.charCodeAt(Y)===64?(P=h,Y++):(P=r,de===0&&_(E)),P!==r?(w=Re(),w!==r?(e.charCodeAt(Y)===47?(b=n,Y++):(b=r,de===0&&_(c)),b!==r?(y=Re(),y!==r?(te=Me,P=x(),Me=P):(Y=Me,Me=r)):(Y=Me,Me=r)):(Y=Me,Me=r)):(Y=Me,Me=r),Me===r&&(Me=Y,P=Re(),P!==r&&(te=Me,P=x()),Me=P),Me}function Re(){var Me,P,w;if(Me=Y,P=[],I.test(e.charAt(Y))?(w=e.charAt(Y),Y++):(w=r,de===0&&_(T)),w!==r)for(;w!==r;)P.push(w),I.test(e.charAt(Y))?(w=e.charAt(Y),Y++):(w=r,de===0&&_(T));else P=r;return P!==r&&(te=Me,P=x()),Me=P,Me}function ct(){var Me,P,w;if(Me=Y,P=[],O.test(e.charAt(Y))?(w=e.charAt(Y),Y++):(w=r,de===0&&_(U)),w!==r)for(;w!==r;)P.push(w),O.test(e.charAt(Y))?(w=e.charAt(Y),Y++):(w=r,de===0&&_(U));else P=r;return P!==r&&(te=Me,P=x()),Me=P,Me}if(Ae=a(),Ae!==r&&Y===e.length)return Ae;throw Ae!==r&&Y{j$=et(H$())});var Sd=G((dPt,vd)=>{"use strict";function q$(e){return typeof e>"u"||e===null}function P6e(e){return typeof e=="object"&&e!==null}function x6e(e){return Array.isArray(e)?e:q$(e)?[]:[e]}function k6e(e,t){var r,s,a,n;if(t)for(n=Object.keys(t),r=0,s=n.length;r{"use strict";function FB(e,t){Error.call(this),this.name="YAMLException",this.reason=e,this.mark=t,this.message=(this.reason||"(unknown reason)")+(this.mark?" "+this.mark.toString():""),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}FB.prototype=Object.create(Error.prototype);FB.prototype.constructor=FB;FB.prototype.toString=function(t){var r=this.name+": ";return r+=this.reason||"(unknown reason)",!t&&this.mark&&(r+=" "+this.mark.toString()),r};W$.exports=FB});var K$=G((yPt,Y$)=>{"use strict";var V$=Sd();function kU(e,t,r,s,a){this.name=e,this.buffer=t,this.position=r,this.line=s,this.column=a}kU.prototype.getSnippet=function(t,r){var s,a,n,c,f;if(!this.buffer)return null;for(t=t||4,r=r||75,s="",a=this.position;a>0&&`\0\r -\x85\u2028\u2029`.indexOf(this.buffer.charAt(a-1))===-1;)if(a-=1,this.position-a>r/2-1){s=" ... ",a+=5;break}for(n="",c=this.position;cr/2-1){n=" ... ",c-=5;break}return f=this.buffer.slice(a,c),V$.repeat(" ",t)+s+f+n+` -`+V$.repeat(" ",t+this.position-a+s.length)+"^"};kU.prototype.toString=function(t){var r,s="";return this.name&&(s+='in "'+this.name+'" '),s+="at line "+(this.line+1)+", column "+(this.column+1),t||(r=this.getSnippet(),r&&(s+=`: -`+r)),s};Y$.exports=kU});var Ps=G((EPt,z$)=>{"use strict";var J$=dE(),T6e=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],F6e=["scalar","sequence","mapping"];function N6e(e){var t={};return e!==null&&Object.keys(e).forEach(function(r){e[r].forEach(function(s){t[String(s)]=r})}),t}function O6e(e,t){if(t=t||{},Object.keys(t).forEach(function(r){if(T6e.indexOf(r)===-1)throw new J$('Unknown option "'+r+'" is met in definition of "'+e+'" YAML type.')}),this.tag=e,this.kind=t.kind||null,this.resolve=t.resolve||function(){return!0},this.construct=t.construct||function(r){return r},this.instanceOf=t.instanceOf||null,this.predicate=t.predicate||null,this.represent=t.represent||null,this.defaultStyle=t.defaultStyle||null,this.styleAliases=N6e(t.styleAliases||null),F6e.indexOf(this.kind)===-1)throw new J$('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')}z$.exports=O6e});var Dd=G((IPt,X$)=>{"use strict";var Z$=Sd(),gx=dE(),L6e=Ps();function QU(e,t,r){var s=[];return e.include.forEach(function(a){r=QU(a,t,r)}),e[t].forEach(function(a){r.forEach(function(n,c){n.tag===a.tag&&n.kind===a.kind&&s.push(c)}),r.push(a)}),r.filter(function(a,n){return s.indexOf(n)===-1})}function M6e(){var e={scalar:{},sequence:{},mapping:{},fallback:{}},t,r;function s(a){e[a.kind][a.tag]=e.fallback[a.tag]=a}for(t=0,r=arguments.length;t{"use strict";var U6e=Ps();$$.exports=new U6e("tag:yaml.org,2002:str",{kind:"scalar",construct:function(e){return e!==null?e:""}})});var ree=G((wPt,tee)=>{"use strict";var _6e=Ps();tee.exports=new _6e("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(e){return e!==null?e:[]}})});var iee=G((BPt,nee)=>{"use strict";var H6e=Ps();nee.exports=new H6e("tag:yaml.org,2002:map",{kind:"mapping",construct:function(e){return e!==null?e:{}}})});var dx=G((vPt,see)=>{"use strict";var j6e=Dd();see.exports=new j6e({explicit:[eee(),ree(),iee()]})});var aee=G((SPt,oee)=>{"use strict";var G6e=Ps();function q6e(e){if(e===null)return!0;var t=e.length;return t===1&&e==="~"||t===4&&(e==="null"||e==="Null"||e==="NULL")}function W6e(){return null}function V6e(e){return e===null}oee.exports=new G6e("tag:yaml.org,2002:null",{kind:"scalar",resolve:q6e,construct:W6e,predicate:V6e,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})});var cee=G((DPt,lee)=>{"use strict";var Y6e=Ps();function K6e(e){if(e===null)return!1;var t=e.length;return t===4&&(e==="true"||e==="True"||e==="TRUE")||t===5&&(e==="false"||e==="False"||e==="FALSE")}function J6e(e){return e==="true"||e==="True"||e==="TRUE"}function z6e(e){return Object.prototype.toString.call(e)==="[object Boolean]"}lee.exports=new Y6e("tag:yaml.org,2002:bool",{kind:"scalar",resolve:K6e,construct:J6e,predicate:z6e,represent:{lowercase:function(e){return e?"true":"false"},uppercase:function(e){return e?"TRUE":"FALSE"},camelcase:function(e){return e?"True":"False"}},defaultStyle:"lowercase"})});var fee=G((bPt,uee)=>{"use strict";var Z6e=Sd(),X6e=Ps();function $6e(e){return 48<=e&&e<=57||65<=e&&e<=70||97<=e&&e<=102}function eGe(e){return 48<=e&&e<=55}function tGe(e){return 48<=e&&e<=57}function rGe(e){if(e===null)return!1;var t=e.length,r=0,s=!1,a;if(!t)return!1;if(a=e[r],(a==="-"||a==="+")&&(a=e[++r]),a==="0"){if(r+1===t)return!0;if(a=e[++r],a==="b"){for(r++;r=0?"0b"+e.toString(2):"-0b"+e.toString(2).slice(1)},octal:function(e){return e>=0?"0"+e.toString(8):"-0"+e.toString(8).slice(1)},decimal:function(e){return e.toString(10)},hexadecimal:function(e){return e>=0?"0x"+e.toString(16).toUpperCase():"-0x"+e.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})});var hee=G((PPt,pee)=>{"use strict";var Aee=Sd(),sGe=Ps(),oGe=new RegExp("^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function aGe(e){return!(e===null||!oGe.test(e)||e[e.length-1]==="_")}function lGe(e){var t,r,s,a;return t=e.replace(/_/g,"").toLowerCase(),r=t[0]==="-"?-1:1,a=[],"+-".indexOf(t[0])>=0&&(t=t.slice(1)),t===".inf"?r===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:t===".nan"?NaN:t.indexOf(":")>=0?(t.split(":").forEach(function(n){a.unshift(parseFloat(n,10))}),t=0,s=1,a.forEach(function(n){t+=n*s,s*=60}),r*t):r*parseFloat(t,10)}var cGe=/^[-+]?[0-9]+e/;function uGe(e,t){var r;if(isNaN(e))switch(t){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(t){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(t){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(Aee.isNegativeZero(e))return"-0.0";return r=e.toString(10),cGe.test(r)?r.replace("e",".e"):r}function fGe(e){return Object.prototype.toString.call(e)==="[object Number]"&&(e%1!==0||Aee.isNegativeZero(e))}pee.exports=new sGe("tag:yaml.org,2002:float",{kind:"scalar",resolve:aGe,construct:lGe,predicate:fGe,represent:uGe,defaultStyle:"lowercase"})});var RU=G((xPt,gee)=>{"use strict";var AGe=Dd();gee.exports=new AGe({include:[dx()],implicit:[aee(),cee(),fee(),hee()]})});var TU=G((kPt,dee)=>{"use strict";var pGe=Dd();dee.exports=new pGe({include:[RU()]})});var Iee=G((QPt,Eee)=>{"use strict";var hGe=Ps(),mee=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),yee=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function gGe(e){return e===null?!1:mee.exec(e)!==null||yee.exec(e)!==null}function dGe(e){var t,r,s,a,n,c,f,p=0,h=null,E,C,S;if(t=mee.exec(e),t===null&&(t=yee.exec(e)),t===null)throw new Error("Date resolve error");if(r=+t[1],s=+t[2]-1,a=+t[3],!t[4])return new Date(Date.UTC(r,s,a));if(n=+t[4],c=+t[5],f=+t[6],t[7]){for(p=t[7].slice(0,3);p.length<3;)p+="0";p=+p}return t[9]&&(E=+t[10],C=+(t[11]||0),h=(E*60+C)*6e4,t[9]==="-"&&(h=-h)),S=new Date(Date.UTC(r,s,a,n,c,f,p)),h&&S.setTime(S.getTime()-h),S}function mGe(e){return e.toISOString()}Eee.exports=new hGe("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:gGe,construct:dGe,instanceOf:Date,represent:mGe})});var wee=G((RPt,Cee)=>{"use strict";var yGe=Ps();function EGe(e){return e==="<<"||e===null}Cee.exports=new yGe("tag:yaml.org,2002:merge",{kind:"scalar",resolve:EGe})});var See=G((TPt,vee)=>{"use strict";var bd;try{Bee=Ie,bd=Bee("buffer").Buffer}catch{}var Bee,IGe=Ps(),FU=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= -\r`;function CGe(e){if(e===null)return!1;var t,r,s=0,a=e.length,n=FU;for(r=0;r64)){if(t<0)return!1;s+=6}return s%8===0}function wGe(e){var t,r,s=e.replace(/[\r\n=]/g,""),a=s.length,n=FU,c=0,f=[];for(t=0;t>16&255),f.push(c>>8&255),f.push(c&255)),c=c<<6|n.indexOf(s.charAt(t));return r=a%4*6,r===0?(f.push(c>>16&255),f.push(c>>8&255),f.push(c&255)):r===18?(f.push(c>>10&255),f.push(c>>2&255)):r===12&&f.push(c>>4&255),bd?bd.from?bd.from(f):new bd(f):f}function BGe(e){var t="",r=0,s,a,n=e.length,c=FU;for(s=0;s>18&63],t+=c[r>>12&63],t+=c[r>>6&63],t+=c[r&63]),r=(r<<8)+e[s];return a=n%3,a===0?(t+=c[r>>18&63],t+=c[r>>12&63],t+=c[r>>6&63],t+=c[r&63]):a===2?(t+=c[r>>10&63],t+=c[r>>4&63],t+=c[r<<2&63],t+=c[64]):a===1&&(t+=c[r>>2&63],t+=c[r<<4&63],t+=c[64],t+=c[64]),t}function vGe(e){return bd&&bd.isBuffer(e)}vee.exports=new IGe("tag:yaml.org,2002:binary",{kind:"scalar",resolve:CGe,construct:wGe,predicate:vGe,represent:BGe})});var bee=G((NPt,Dee)=>{"use strict";var SGe=Ps(),DGe=Object.prototype.hasOwnProperty,bGe=Object.prototype.toString;function PGe(e){if(e===null)return!0;var t=[],r,s,a,n,c,f=e;for(r=0,s=f.length;r{"use strict";var kGe=Ps(),QGe=Object.prototype.toString;function RGe(e){if(e===null)return!0;var t,r,s,a,n,c=e;for(n=new Array(c.length),t=0,r=c.length;t{"use strict";var FGe=Ps(),NGe=Object.prototype.hasOwnProperty;function OGe(e){if(e===null)return!0;var t,r=e;for(t in r)if(NGe.call(r,t)&&r[t]!==null)return!1;return!0}function LGe(e){return e!==null?e:{}}kee.exports=new FGe("tag:yaml.org,2002:set",{kind:"mapping",resolve:OGe,construct:LGe})});var yE=G((MPt,Ree)=>{"use strict";var MGe=Dd();Ree.exports=new MGe({include:[TU()],implicit:[Iee(),wee()],explicit:[See(),bee(),xee(),Qee()]})});var Fee=G((UPt,Tee)=>{"use strict";var UGe=Ps();function _Ge(){return!0}function HGe(){}function jGe(){return""}function GGe(e){return typeof e>"u"}Tee.exports=new UGe("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:_Ge,construct:HGe,predicate:GGe,represent:jGe})});var Oee=G((_Pt,Nee)=>{"use strict";var qGe=Ps();function WGe(e){if(e===null||e.length===0)return!1;var t=e,r=/\/([gim]*)$/.exec(e),s="";return!(t[0]==="/"&&(r&&(s=r[1]),s.length>3||t[t.length-s.length-1]!=="/"))}function VGe(e){var t=e,r=/\/([gim]*)$/.exec(e),s="";return t[0]==="/"&&(r&&(s=r[1]),t=t.slice(1,t.length-s.length-1)),new RegExp(t,s)}function YGe(e){var t="/"+e.source+"/";return e.global&&(t+="g"),e.multiline&&(t+="m"),e.ignoreCase&&(t+="i"),t}function KGe(e){return Object.prototype.toString.call(e)==="[object RegExp]"}Nee.exports=new qGe("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:WGe,construct:VGe,predicate:KGe,represent:YGe})});var Uee=G((HPt,Mee)=>{"use strict";var mx;try{Lee=Ie,mx=Lee("esprima")}catch{typeof window<"u"&&(mx=window.esprima)}var Lee,JGe=Ps();function zGe(e){if(e===null)return!1;try{var t="("+e+")",r=mx.parse(t,{range:!0});return!(r.type!=="Program"||r.body.length!==1||r.body[0].type!=="ExpressionStatement"||r.body[0].expression.type!=="ArrowFunctionExpression"&&r.body[0].expression.type!=="FunctionExpression")}catch{return!1}}function ZGe(e){var t="("+e+")",r=mx.parse(t,{range:!0}),s=[],a;if(r.type!=="Program"||r.body.length!==1||r.body[0].type!=="ExpressionStatement"||r.body[0].expression.type!=="ArrowFunctionExpression"&&r.body[0].expression.type!=="FunctionExpression")throw new Error("Failed to resolve function");return r.body[0].expression.params.forEach(function(n){s.push(n.name)}),a=r.body[0].expression.body.range,r.body[0].expression.body.type==="BlockStatement"?new Function(s,t.slice(a[0]+1,a[1]-1)):new Function(s,"return "+t.slice(a[0],a[1]))}function XGe(e){return e.toString()}function $Ge(e){return Object.prototype.toString.call(e)==="[object Function]"}Mee.exports=new JGe("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:zGe,construct:ZGe,predicate:$Ge,represent:XGe})});var NB=G((GPt,Hee)=>{"use strict";var _ee=Dd();Hee.exports=_ee.DEFAULT=new _ee({include:[yE()],explicit:[Fee(),Oee(),Uee()]})});var ote=G((qPt,OB)=>{"use strict";var Cp=Sd(),Kee=dE(),e5e=K$(),Jee=yE(),t5e=NB(),r0=Object.prototype.hasOwnProperty,yx=1,zee=2,Zee=3,Ex=4,NU=1,r5e=2,jee=3,n5e=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,i5e=/[\x85\u2028\u2029]/,s5e=/[,\[\]\{\}]/,Xee=/^(?:!|!!|![a-z\-]+!)$/i,$ee=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function Gee(e){return Object.prototype.toString.call(e)}function qf(e){return e===10||e===13}function xd(e){return e===9||e===32}function ll(e){return e===9||e===32||e===10||e===13}function EE(e){return e===44||e===91||e===93||e===123||e===125}function o5e(e){var t;return 48<=e&&e<=57?e-48:(t=e|32,97<=t&&t<=102?t-97+10:-1)}function a5e(e){return e===120?2:e===117?4:e===85?8:0}function l5e(e){return 48<=e&&e<=57?e-48:-1}function qee(e){return e===48?"\0":e===97?"\x07":e===98?"\b":e===116||e===9?" ":e===110?` -`:e===118?"\v":e===102?"\f":e===114?"\r":e===101?"\x1B":e===32?" ":e===34?'"':e===47?"/":e===92?"\\":e===78?"\x85":e===95?"\xA0":e===76?"\u2028":e===80?"\u2029":""}function c5e(e){return e<=65535?String.fromCharCode(e):String.fromCharCode((e-65536>>10)+55296,(e-65536&1023)+56320)}var ete=new Array(256),tte=new Array(256);for(Pd=0;Pd<256;Pd++)ete[Pd]=qee(Pd)?1:0,tte[Pd]=qee(Pd);var Pd;function u5e(e,t){this.input=e,this.filename=t.filename||null,this.schema=t.schema||t5e,this.onWarning=t.onWarning||null,this.legacy=t.legacy||!1,this.json=t.json||!1,this.listener=t.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function rte(e,t){return new Kee(t,new e5e(e.filename,e.input,e.position,e.line,e.position-e.lineStart))}function Tr(e,t){throw rte(e,t)}function Ix(e,t){e.onWarning&&e.onWarning.call(null,rte(e,t))}var Wee={YAML:function(t,r,s){var a,n,c;t.version!==null&&Tr(t,"duplication of %YAML directive"),s.length!==1&&Tr(t,"YAML directive accepts exactly one argument"),a=/^([0-9]+)\.([0-9]+)$/.exec(s[0]),a===null&&Tr(t,"ill-formed argument of the YAML directive"),n=parseInt(a[1],10),c=parseInt(a[2],10),n!==1&&Tr(t,"unacceptable YAML version of the document"),t.version=s[0],t.checkLineBreaks=c<2,c!==1&&c!==2&&Ix(t,"unsupported YAML version of the document")},TAG:function(t,r,s){var a,n;s.length!==2&&Tr(t,"TAG directive accepts exactly two arguments"),a=s[0],n=s[1],Xee.test(a)||Tr(t,"ill-formed tag handle (first argument) of the TAG directive"),r0.call(t.tagMap,a)&&Tr(t,'there is a previously declared suffix for "'+a+'" tag handle'),$ee.test(n)||Tr(t,"ill-formed tag prefix (second argument) of the TAG directive"),t.tagMap[a]=n}};function t0(e,t,r,s){var a,n,c,f;if(t1&&(e.result+=Cp.repeat(` -`,t-1))}function f5e(e,t,r){var s,a,n,c,f,p,h,E,C=e.kind,S=e.result,x;if(x=e.input.charCodeAt(e.position),ll(x)||EE(x)||x===35||x===38||x===42||x===33||x===124||x===62||x===39||x===34||x===37||x===64||x===96||(x===63||x===45)&&(a=e.input.charCodeAt(e.position+1),ll(a)||r&&EE(a)))return!1;for(e.kind="scalar",e.result="",n=c=e.position,f=!1;x!==0;){if(x===58){if(a=e.input.charCodeAt(e.position+1),ll(a)||r&&EE(a))break}else if(x===35){if(s=e.input.charCodeAt(e.position-1),ll(s))break}else{if(e.position===e.lineStart&&Cx(e)||r&&EE(x))break;if(qf(x))if(p=e.line,h=e.lineStart,E=e.lineIndent,ls(e,!1,-1),e.lineIndent>=t){f=!0,x=e.input.charCodeAt(e.position);continue}else{e.position=c,e.line=p,e.lineStart=h,e.lineIndent=E;break}}f&&(t0(e,n,c,!1),LU(e,e.line-p),n=c=e.position,f=!1),xd(x)||(c=e.position+1),x=e.input.charCodeAt(++e.position)}return t0(e,n,c,!1),e.result?!0:(e.kind=C,e.result=S,!1)}function A5e(e,t){var r,s,a;if(r=e.input.charCodeAt(e.position),r!==39)return!1;for(e.kind="scalar",e.result="",e.position++,s=a=e.position;(r=e.input.charCodeAt(e.position))!==0;)if(r===39)if(t0(e,s,e.position,!0),r=e.input.charCodeAt(++e.position),r===39)s=e.position,e.position++,a=e.position;else return!0;else qf(r)?(t0(e,s,a,!0),LU(e,ls(e,!1,t)),s=a=e.position):e.position===e.lineStart&&Cx(e)?Tr(e,"unexpected end of the document within a single quoted scalar"):(e.position++,a=e.position);Tr(e,"unexpected end of the stream within a single quoted scalar")}function p5e(e,t){var r,s,a,n,c,f;if(f=e.input.charCodeAt(e.position),f!==34)return!1;for(e.kind="scalar",e.result="",e.position++,r=s=e.position;(f=e.input.charCodeAt(e.position))!==0;){if(f===34)return t0(e,r,e.position,!0),e.position++,!0;if(f===92){if(t0(e,r,e.position,!0),f=e.input.charCodeAt(++e.position),qf(f))ls(e,!1,t);else if(f<256&&ete[f])e.result+=tte[f],e.position++;else if((c=a5e(f))>0){for(a=c,n=0;a>0;a--)f=e.input.charCodeAt(++e.position),(c=o5e(f))>=0?n=(n<<4)+c:Tr(e,"expected hexadecimal character");e.result+=c5e(n),e.position++}else Tr(e,"unknown escape sequence");r=s=e.position}else qf(f)?(t0(e,r,s,!0),LU(e,ls(e,!1,t)),r=s=e.position):e.position===e.lineStart&&Cx(e)?Tr(e,"unexpected end of the document within a double quoted scalar"):(e.position++,s=e.position)}Tr(e,"unexpected end of the stream within a double quoted scalar")}function h5e(e,t){var r=!0,s,a=e.tag,n,c=e.anchor,f,p,h,E,C,S={},x,I,T,O;if(O=e.input.charCodeAt(e.position),O===91)p=93,C=!1,n=[];else if(O===123)p=125,C=!0,n={};else return!1;for(e.anchor!==null&&(e.anchorMap[e.anchor]=n),O=e.input.charCodeAt(++e.position);O!==0;){if(ls(e,!0,t),O=e.input.charCodeAt(e.position),O===p)return e.position++,e.tag=a,e.anchor=c,e.kind=C?"mapping":"sequence",e.result=n,!0;r||Tr(e,"missed comma between flow collection entries"),I=x=T=null,h=E=!1,O===63&&(f=e.input.charCodeAt(e.position+1),ll(f)&&(h=E=!0,e.position++,ls(e,!0,t))),s=e.line,CE(e,t,yx,!1,!0),I=e.tag,x=e.result,ls(e,!0,t),O=e.input.charCodeAt(e.position),(E||e.line===s)&&O===58&&(h=!0,O=e.input.charCodeAt(++e.position),ls(e,!0,t),CE(e,t,yx,!1,!0),T=e.result),C?IE(e,n,S,I,x,T):h?n.push(IE(e,null,S,I,x,T)):n.push(x),ls(e,!0,t),O=e.input.charCodeAt(e.position),O===44?(r=!0,O=e.input.charCodeAt(++e.position)):r=!1}Tr(e,"unexpected end of the stream within a flow collection")}function g5e(e,t){var r,s,a=NU,n=!1,c=!1,f=t,p=0,h=!1,E,C;if(C=e.input.charCodeAt(e.position),C===124)s=!1;else if(C===62)s=!0;else return!1;for(e.kind="scalar",e.result="";C!==0;)if(C=e.input.charCodeAt(++e.position),C===43||C===45)NU===a?a=C===43?jee:r5e:Tr(e,"repeat of a chomping mode identifier");else if((E=l5e(C))>=0)E===0?Tr(e,"bad explicit indentation width of a block scalar; it cannot be less than one"):c?Tr(e,"repeat of an indentation width identifier"):(f=t+E-1,c=!0);else break;if(xd(C)){do C=e.input.charCodeAt(++e.position);while(xd(C));if(C===35)do C=e.input.charCodeAt(++e.position);while(!qf(C)&&C!==0)}for(;C!==0;){for(OU(e),e.lineIndent=0,C=e.input.charCodeAt(e.position);(!c||e.lineIndentf&&(f=e.lineIndent),qf(C)){p++;continue}if(e.lineIndentt)&&p!==0)Tr(e,"bad indentation of a sequence entry");else if(e.lineIndentt)&&(CE(e,t,Ex,!0,a)&&(I?S=e.result:x=e.result),I||(IE(e,h,E,C,S,x,n,c),C=S=x=null),ls(e,!0,-1),O=e.input.charCodeAt(e.position)),e.lineIndent>t&&O!==0)Tr(e,"bad indentation of a mapping entry");else if(e.lineIndentt?p=1:e.lineIndent===t?p=0:e.lineIndentt?p=1:e.lineIndent===t?p=0:e.lineIndent tag; it should be "scalar", not "'+e.kind+'"'),C=0,S=e.implicitTypes.length;C tag; it should be "'+x.kind+'", not "'+e.kind+'"'),x.resolve(e.result)?(e.result=x.construct(e.result),e.anchor!==null&&(e.anchorMap[e.anchor]=e.result)):Tr(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")):Tr(e,"unknown tag !<"+e.tag+">");return e.listener!==null&&e.listener("close",e),e.tag!==null||e.anchor!==null||E}function I5e(e){var t=e.position,r,s,a,n=!1,c;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap={},e.anchorMap={};(c=e.input.charCodeAt(e.position))!==0&&(ls(e,!0,-1),c=e.input.charCodeAt(e.position),!(e.lineIndent>0||c!==37));){for(n=!0,c=e.input.charCodeAt(++e.position),r=e.position;c!==0&&!ll(c);)c=e.input.charCodeAt(++e.position);for(s=e.input.slice(r,e.position),a=[],s.length<1&&Tr(e,"directive name must not be less than one character in length");c!==0;){for(;xd(c);)c=e.input.charCodeAt(++e.position);if(c===35){do c=e.input.charCodeAt(++e.position);while(c!==0&&!qf(c));break}if(qf(c))break;for(r=e.position;c!==0&&!ll(c);)c=e.input.charCodeAt(++e.position);a.push(e.input.slice(r,e.position))}c!==0&&OU(e),r0.call(Wee,s)?Wee[s](e,s,a):Ix(e,'unknown document directive "'+s+'"')}if(ls(e,!0,-1),e.lineIndent===0&&e.input.charCodeAt(e.position)===45&&e.input.charCodeAt(e.position+1)===45&&e.input.charCodeAt(e.position+2)===45?(e.position+=3,ls(e,!0,-1)):n&&Tr(e,"directives end mark is expected"),CE(e,e.lineIndent-1,Ex,!1,!0),ls(e,!0,-1),e.checkLineBreaks&&i5e.test(e.input.slice(t,e.position))&&Ix(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&Cx(e)){e.input.charCodeAt(e.position)===46&&(e.position+=3,ls(e,!0,-1));return}if(e.position"u"&&(r=t,t=null);var s=nte(e,r);if(typeof t!="function")return s;for(var a=0,n=s.length;a"u"&&(r=t,t=null),ite(e,t,Cp.extend({schema:Jee},r))}function w5e(e,t){return ste(e,Cp.extend({schema:Jee},t))}OB.exports.loadAll=ite;OB.exports.load=ste;OB.exports.safeLoadAll=C5e;OB.exports.safeLoad=w5e});var xte=G((WPt,HU)=>{"use strict";var MB=Sd(),UB=dE(),B5e=NB(),v5e=yE(),hte=Object.prototype.toString,gte=Object.prototype.hasOwnProperty,S5e=9,LB=10,D5e=13,b5e=32,P5e=33,x5e=34,dte=35,k5e=37,Q5e=38,R5e=39,T5e=42,mte=44,F5e=45,yte=58,N5e=61,O5e=62,L5e=63,M5e=64,Ete=91,Ite=93,U5e=96,Cte=123,_5e=124,wte=125,Wo={};Wo[0]="\\0";Wo[7]="\\a";Wo[8]="\\b";Wo[9]="\\t";Wo[10]="\\n";Wo[11]="\\v";Wo[12]="\\f";Wo[13]="\\r";Wo[27]="\\e";Wo[34]='\\"';Wo[92]="\\\\";Wo[133]="\\N";Wo[160]="\\_";Wo[8232]="\\L";Wo[8233]="\\P";var H5e=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"];function j5e(e,t){var r,s,a,n,c,f,p;if(t===null)return{};for(r={},s=Object.keys(t),a=0,n=s.length;a0?e.charCodeAt(n-1):null,S=S&&cte(c,f)}else{for(n=0;ns&&e[C+1]!==" ",C=n);else if(!wE(c))return wx;f=n>0?e.charCodeAt(n-1):null,S=S&&cte(c,f)}h=h||E&&n-C-1>s&&e[C+1]!==" "}return!p&&!h?S&&!a(e)?vte:Ste:r>9&&Bte(e)?wx:h?bte:Dte}function K5e(e,t,r,s){e.dump=function(){if(t.length===0)return"''";if(!e.noCompatMode&&H5e.indexOf(t)!==-1)return"'"+t+"'";var a=e.indent*Math.max(1,r),n=e.lineWidth===-1?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-a),c=s||e.flowLevel>-1&&r>=e.flowLevel;function f(p){return q5e(e,p)}switch(Y5e(t,c,e.indent,n,f)){case vte:return t;case Ste:return"'"+t.replace(/'/g,"''")+"'";case Dte:return"|"+ute(t,e.indent)+fte(lte(t,a));case bte:return">"+ute(t,e.indent)+fte(lte(J5e(t,n),a));case wx:return'"'+z5e(t,n)+'"';default:throw new UB("impossible error: invalid scalar style")}}()}function ute(e,t){var r=Bte(e)?String(t):"",s=e[e.length-1]===` -`,a=s&&(e[e.length-2]===` -`||e===` -`),n=a?"+":s?"":"-";return r+n+` -`}function fte(e){return e[e.length-1]===` -`?e.slice(0,-1):e}function J5e(e,t){for(var r=/(\n+)([^\n]*)/g,s=function(){var h=e.indexOf(` -`);return h=h!==-1?h:e.length,r.lastIndex=h,Ate(e.slice(0,h),t)}(),a=e[0]===` -`||e[0]===" ",n,c;c=r.exec(e);){var f=c[1],p=c[2];n=p[0]===" ",s+=f+(!a&&!n&&p!==""?` -`:"")+Ate(p,t),a=n}return s}function Ate(e,t){if(e===""||e[0]===" ")return e;for(var r=/ [^ ]/g,s,a=0,n,c=0,f=0,p="";s=r.exec(e);)f=s.index,f-a>t&&(n=c>a?c:f,p+=` -`+e.slice(a,n),a=n+1),c=f;return p+=` -`,e.length-a>t&&c>a?p+=e.slice(a,c)+` -`+e.slice(c+1):p+=e.slice(a),p.slice(1)}function z5e(e){for(var t="",r,s,a,n=0;n=55296&&r<=56319&&(s=e.charCodeAt(n+1),s>=56320&&s<=57343)){t+=ate((r-55296)*1024+s-56320+65536),n++;continue}a=Wo[r],t+=!a&&wE(r)?e[n]:a||ate(r)}return t}function Z5e(e,t,r){var s="",a=e.tag,n,c;for(n=0,c=r.length;n1024&&(E+="? "),E+=e.dump+(e.condenseFlow?'"':"")+":"+(e.condenseFlow?"":" "),kd(e,t,h,!1,!1)&&(E+=e.dump,s+=E));e.tag=a,e.dump="{"+s+"}"}function eqe(e,t,r,s){var a="",n=e.tag,c=Object.keys(r),f,p,h,E,C,S;if(e.sortKeys===!0)c.sort();else if(typeof e.sortKeys=="function")c.sort(e.sortKeys);else if(e.sortKeys)throw new UB("sortKeys must be a boolean or a function");for(f=0,p=c.length;f1024,C&&(e.dump&&LB===e.dump.charCodeAt(0)?S+="?":S+="? "),S+=e.dump,C&&(S+=MU(e,t)),kd(e,t+1,E,!0,C)&&(e.dump&&LB===e.dump.charCodeAt(0)?S+=":":S+=": ",S+=e.dump,a+=S));e.tag=n,e.dump=a||"{}"}function pte(e,t,r){var s,a,n,c,f,p;for(a=r?e.explicitTypes:e.implicitTypes,n=0,c=a.length;n tag resolver accepts not "'+p+'" style');e.dump=s}return!0}return!1}function kd(e,t,r,s,a,n){e.tag=null,e.dump=r,pte(e,r,!1)||pte(e,r,!0);var c=hte.call(e.dump);s&&(s=e.flowLevel<0||e.flowLevel>t);var f=c==="[object Object]"||c==="[object Array]",p,h;if(f&&(p=e.duplicates.indexOf(r),h=p!==-1),(e.tag!==null&&e.tag!=="?"||h||e.indent!==2&&t>0)&&(a=!1),h&&e.usedDuplicates[p])e.dump="*ref_"+p;else{if(f&&h&&!e.usedDuplicates[p]&&(e.usedDuplicates[p]=!0),c==="[object Object]")s&&Object.keys(e.dump).length!==0?(eqe(e,t,e.dump,a),h&&(e.dump="&ref_"+p+e.dump)):($5e(e,t,e.dump),h&&(e.dump="&ref_"+p+" "+e.dump));else if(c==="[object Array]"){var E=e.noArrayIndent&&t>0?t-1:t;s&&e.dump.length!==0?(X5e(e,E,e.dump,a),h&&(e.dump="&ref_"+p+e.dump)):(Z5e(e,E,e.dump),h&&(e.dump="&ref_"+p+" "+e.dump))}else if(c==="[object String]")e.tag!=="?"&&K5e(e,e.dump,t,n);else{if(e.skipInvalid)return!1;throw new UB("unacceptable kind of an object to dump "+c)}e.tag!==null&&e.tag!=="?"&&(e.dump="!<"+e.tag+"> "+e.dump)}return!0}function tqe(e,t){var r=[],s=[],a,n;for(UU(e,r,s),a=0,n=s.length;a{"use strict";var Bx=ote(),kte=xte();function vx(e){return function(){throw new Error("Function "+e+" is deprecated and cannot be used.")}}Wi.exports.Type=Ps();Wi.exports.Schema=Dd();Wi.exports.FAILSAFE_SCHEMA=dx();Wi.exports.JSON_SCHEMA=RU();Wi.exports.CORE_SCHEMA=TU();Wi.exports.DEFAULT_SAFE_SCHEMA=yE();Wi.exports.DEFAULT_FULL_SCHEMA=NB();Wi.exports.load=Bx.load;Wi.exports.loadAll=Bx.loadAll;Wi.exports.safeLoad=Bx.safeLoad;Wi.exports.safeLoadAll=Bx.safeLoadAll;Wi.exports.dump=kte.dump;Wi.exports.safeDump=kte.safeDump;Wi.exports.YAMLException=dE();Wi.exports.MINIMAL_SCHEMA=dx();Wi.exports.SAFE_SCHEMA=yE();Wi.exports.DEFAULT_SCHEMA=NB();Wi.exports.scan=vx("scan");Wi.exports.parse=vx("parse");Wi.exports.compose=vx("compose");Wi.exports.addConstructor=vx("addConstructor")});var Tte=G((YPt,Rte)=>{"use strict";var nqe=Qte();Rte.exports=nqe});var Nte=G((KPt,Fte)=>{"use strict";function iqe(e,t){function r(){this.constructor=e}r.prototype=t.prototype,e.prototype=new r}function Qd(e,t,r,s){this.message=e,this.expected=t,this.found=r,this.location=s,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Qd)}iqe(Qd,Error);Qd.buildMessage=function(e,t){var r={literal:function(h){return'"'+a(h.text)+'"'},class:function(h){var E="",C;for(C=0;C0){for(C=1,S=1;C({[mt]:Oe})))},ue=function(ee){return ee},ae=function(ee){return ee},de=Ga("correct indentation"),Ae=" ",Ce=mn(" ",!1),Ee=function(ee){return ee.length===lr*St},g=function(ee){return ee.length===(lr+1)*St},Se=function(){return lr++,!0},Be=function(){return lr--,!0},me=function(){return Aa()},ce=Ga("pseudostring"),X=/^[^\r\n\t ?:,\][{}#&*!|>'"%@`\-]/,De=Zn(["\r",` -`," "," ","?",":",",","]","[","{","}","#","&","*","!","|",">","'",'"',"%","@","`","-"],!0,!1),Qe=/^[^\r\n\t ,\][{}:#"']/,it=Zn(["\r",` -`," "," ",",","]","[","{","}",":","#",'"',"'"],!0,!1),_=function(){return Aa().replace(/^ *| *$/g,"")},tt="--",Ne=mn("--",!1),ke=/^[a-zA-Z\/0-9]/,be=Zn([["a","z"],["A","Z"],"/",["0","9"]],!1,!1),je=/^[^\r\n\t :,]/,Re=Zn(["\r",` -`," "," ",":",","],!0,!1),ct="null",Me=mn("null",!1),P=function(){return null},w="true",b=mn("true",!1),y=function(){return!0},F="false",z=mn("false",!1),Z=function(){return!1},$=Ga("string"),se='"',xe=mn('"',!1),Fe=function(){return""},ut=function(ee){return ee},Ct=function(ee){return ee.join("")},qt=/^[^"\\\0-\x1F\x7F]/,ir=Zn(['"',"\\",["\0",""],"\x7F"],!0,!1),Pt='\\"',dn=mn('\\"',!1),Pr=function(){return'"'},Ir="\\\\",Or=mn("\\\\",!1),on=function(){return"\\"},li="\\/",So=mn("\\/",!1),ns=function(){return"/"},so="\\b",Do=mn("\\b",!1),ji=function(){return"\b"},oo="\\f",bo=mn("\\f",!1),RA=function(){return"\f"},hf="\\n",hh=mn("\\n",!1),gh=function(){return` -`},ao="\\r",Gn=mn("\\r",!1),Ns=function(){return"\r"},lo="\\t",iu=mn("\\t",!1),su=function(){return" "},ou="\\u",TA=mn("\\u",!1),FA=function(ee,ye,Oe,mt){return String.fromCharCode(parseInt(`0x${ee}${ye}${Oe}${mt}`))},ua=/^[0-9a-fA-F]/,fa=Zn([["0","9"],["a","f"],["A","F"]],!1,!1),NA=Ga("blank space"),gr=/^[ \t]/,Po=Zn([" "," "],!1,!1),Ue=Ga("white space"),au=/^[ \t\n\r]/,Cr=Zn([" "," ",` -`,"\r"],!1,!1),gf=`\r -`,OA=mn(`\r -`,!1),LA=` -`,lu=mn(` -`,!1),cu="\r",ac=mn("\r",!1),we=0,Nt=0,lc=[{line:1,column:1}],Oi=0,co=[],Tt=0,Qn;if("startRule"in t){if(!(t.startRule in s))throw new Error(`Can't start parsing from rule "`+t.startRule+'".');a=s[t.startRule]}function Aa(){return e.substring(Nt,we)}function Gi(){return Wa(Nt,we)}function Li(ee,ye){throw ye=ye!==void 0?ye:Wa(Nt,we),df([Ga(ee)],e.substring(Nt,we),ye)}function ja(ee,ye){throw ye=ye!==void 0?ye:Wa(Nt,we),Va(ee,ye)}function mn(ee,ye){return{type:"literal",text:ee,ignoreCase:ye}}function Zn(ee,ye,Oe){return{type:"class",parts:ee,inverted:ye,ignoreCase:Oe}}function uu(){return{type:"any"}}function dh(){return{type:"end"}}function Ga(ee){return{type:"other",description:ee}}function qa(ee){var ye=lc[ee],Oe;if(ye)return ye;for(Oe=ee-1;!lc[Oe];)Oe--;for(ye=lc[Oe],ye={line:ye.line,column:ye.column};OeOi&&(Oi=we,co=[]),co.push(ee))}function Va(ee,ye){return new Qd(ee,null,null,ye)}function df(ee,ye,Oe){return new Qd(Qd.buildMessage(ee,ye),ee,ye,Oe)}function cc(){var ee;return ee=MA(),ee}function vn(){var ee,ye,Oe;for(ee=we,ye=[],Oe=pa();Oe!==r;)ye.push(Oe),Oe=pa();return ye!==r&&(Nt=ee,ye=n(ye)),ee=ye,ee}function pa(){var ee,ye,Oe,mt,Et;return ee=we,ye=xl(),ye!==r?(e.charCodeAt(we)===45?(Oe=c,we++):(Oe=r,Tt===0&&$e(f)),Oe!==r?(mt=Tn(),mt!==r?(Et=ha(),Et!==r?(Nt=ee,ye=p(Et),ee=ye):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r),ee}function MA(){var ee,ye,Oe;for(ee=we,ye=[],Oe=UA();Oe!==r;)ye.push(Oe),Oe=UA();return ye!==r&&(Nt=ee,ye=h(ye)),ee=ye,ee}function UA(){var ee,ye,Oe,mt,Et,bt,tr,pn,ci;if(ee=we,ye=Tn(),ye===r&&(ye=null),ye!==r){if(Oe=we,e.charCodeAt(we)===35?(mt=E,we++):(mt=r,Tt===0&&$e(C)),mt!==r){if(Et=[],bt=we,tr=we,Tt++,pn=ot(),Tt--,pn===r?tr=void 0:(we=tr,tr=r),tr!==r?(e.length>we?(pn=e.charAt(we),we++):(pn=r,Tt===0&&$e(S)),pn!==r?(tr=[tr,pn],bt=tr):(we=bt,bt=r)):(we=bt,bt=r),bt!==r)for(;bt!==r;)Et.push(bt),bt=we,tr=we,Tt++,pn=ot(),Tt--,pn===r?tr=void 0:(we=tr,tr=r),tr!==r?(e.length>we?(pn=e.charAt(we),we++):(pn=r,Tt===0&&$e(S)),pn!==r?(tr=[tr,pn],bt=tr):(we=bt,bt=r)):(we=bt,bt=r);else Et=r;Et!==r?(mt=[mt,Et],Oe=mt):(we=Oe,Oe=r)}else we=Oe,Oe=r;if(Oe===r&&(Oe=null),Oe!==r){if(mt=[],Et=Je(),Et!==r)for(;Et!==r;)mt.push(Et),Et=Je();else mt=r;mt!==r?(Nt=ee,ye=x(),ee=ye):(we=ee,ee=r)}else we=ee,ee=r}else we=ee,ee=r;if(ee===r&&(ee=we,ye=xl(),ye!==r?(Oe=Ya(),Oe!==r?(mt=Tn(),mt===r&&(mt=null),mt!==r?(e.charCodeAt(we)===58?(Et=I,we++):(Et=r,Tt===0&&$e(T)),Et!==r?(bt=Tn(),bt===r&&(bt=null),bt!==r?(tr=ha(),tr!==r?(Nt=ee,ye=O(Oe,tr),ee=ye):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r),ee===r&&(ee=we,ye=xl(),ye!==r?(Oe=is(),Oe!==r?(mt=Tn(),mt===r&&(mt=null),mt!==r?(e.charCodeAt(we)===58?(Et=I,we++):(Et=r,Tt===0&&$e(T)),Et!==r?(bt=Tn(),bt===r&&(bt=null),bt!==r?(tr=ha(),tr!==r?(Nt=ee,ye=O(Oe,tr),ee=ye):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r),ee===r))){if(ee=we,ye=xl(),ye!==r)if(Oe=is(),Oe!==r)if(mt=Tn(),mt!==r)if(Et=fu(),Et!==r){if(bt=[],tr=Je(),tr!==r)for(;tr!==r;)bt.push(tr),tr=Je();else bt=r;bt!==r?(Nt=ee,ye=O(Oe,Et),ee=ye):(we=ee,ee=r)}else we=ee,ee=r;else we=ee,ee=r;else we=ee,ee=r;else we=ee,ee=r;if(ee===r)if(ee=we,ye=xl(),ye!==r)if(Oe=is(),Oe!==r){if(mt=[],Et=we,bt=Tn(),bt===r&&(bt=null),bt!==r?(e.charCodeAt(we)===44?(tr=U,we++):(tr=r,Tt===0&&$e(Y)),tr!==r?(pn=Tn(),pn===r&&(pn=null),pn!==r?(ci=is(),ci!==r?(Nt=Et,bt=te(Oe,ci),Et=bt):(we=Et,Et=r)):(we=Et,Et=r)):(we=Et,Et=r)):(we=Et,Et=r),Et!==r)for(;Et!==r;)mt.push(Et),Et=we,bt=Tn(),bt===r&&(bt=null),bt!==r?(e.charCodeAt(we)===44?(tr=U,we++):(tr=r,Tt===0&&$e(Y)),tr!==r?(pn=Tn(),pn===r&&(pn=null),pn!==r?(ci=is(),ci!==r?(Nt=Et,bt=te(Oe,ci),Et=bt):(we=Et,Et=r)):(we=Et,Et=r)):(we=Et,Et=r)):(we=Et,Et=r);else mt=r;mt!==r?(Et=Tn(),Et===r&&(Et=null),Et!==r?(e.charCodeAt(we)===58?(bt=I,we++):(bt=r,Tt===0&&$e(T)),bt!==r?(tr=Tn(),tr===r&&(tr=null),tr!==r?(pn=ha(),pn!==r?(Nt=ee,ye=ie(Oe,mt,pn),ee=ye):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)}else we=ee,ee=r;else we=ee,ee=r}return ee}function ha(){var ee,ye,Oe,mt,Et,bt,tr;if(ee=we,ye=we,Tt++,Oe=we,mt=ot(),mt!==r?(Et=Mt(),Et!==r?(e.charCodeAt(we)===45?(bt=c,we++):(bt=r,Tt===0&&$e(f)),bt!==r?(tr=Tn(),tr!==r?(mt=[mt,Et,bt,tr],Oe=mt):(we=Oe,Oe=r)):(we=Oe,Oe=r)):(we=Oe,Oe=r)):(we=Oe,Oe=r),Tt--,Oe!==r?(we=ye,ye=void 0):ye=r,ye!==r?(Oe=Je(),Oe!==r?(mt=Rn(),mt!==r?(Et=vn(),Et!==r?(bt=ga(),bt!==r?(Nt=ee,ye=ue(Et),ee=ye):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r),ee===r&&(ee=we,ye=ot(),ye!==r?(Oe=Rn(),Oe!==r?(mt=MA(),mt!==r?(Et=ga(),Et!==r?(Nt=ee,ye=ue(mt),ee=ye):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r),ee===r))if(ee=we,ye=uc(),ye!==r){if(Oe=[],mt=Je(),mt!==r)for(;mt!==r;)Oe.push(mt),mt=Je();else Oe=r;Oe!==r?(Nt=ee,ye=ae(ye),ee=ye):(we=ee,ee=r)}else we=ee,ee=r;return ee}function xl(){var ee,ye,Oe;for(Tt++,ee=we,ye=[],e.charCodeAt(we)===32?(Oe=Ae,we++):(Oe=r,Tt===0&&$e(Ce));Oe!==r;)ye.push(Oe),e.charCodeAt(we)===32?(Oe=Ae,we++):(Oe=r,Tt===0&&$e(Ce));return ye!==r?(Nt=we,Oe=Ee(ye),Oe?Oe=void 0:Oe=r,Oe!==r?(ye=[ye,Oe],ee=ye):(we=ee,ee=r)):(we=ee,ee=r),Tt--,ee===r&&(ye=r,Tt===0&&$e(de)),ee}function Mt(){var ee,ye,Oe;for(ee=we,ye=[],e.charCodeAt(we)===32?(Oe=Ae,we++):(Oe=r,Tt===0&&$e(Ce));Oe!==r;)ye.push(Oe),e.charCodeAt(we)===32?(Oe=Ae,we++):(Oe=r,Tt===0&&$e(Ce));return ye!==r?(Nt=we,Oe=g(ye),Oe?Oe=void 0:Oe=r,Oe!==r?(ye=[ye,Oe],ee=ye):(we=ee,ee=r)):(we=ee,ee=r),ee}function Rn(){var ee;return Nt=we,ee=Se(),ee?ee=void 0:ee=r,ee}function ga(){var ee;return Nt=we,ee=Be(),ee?ee=void 0:ee=r,ee}function Ya(){var ee;return ee=kl(),ee===r&&(ee=fc()),ee}function is(){var ee,ye,Oe;if(ee=kl(),ee===r){if(ee=we,ye=[],Oe=Ka(),Oe!==r)for(;Oe!==r;)ye.push(Oe),Oe=Ka();else ye=r;ye!==r&&(Nt=ee,ye=me()),ee=ye}return ee}function uc(){var ee;return ee=Mi(),ee===r&&(ee=Bs(),ee===r&&(ee=kl(),ee===r&&(ee=fc()))),ee}function fu(){var ee;return ee=Mi(),ee===r&&(ee=kl(),ee===r&&(ee=Ka())),ee}function fc(){var ee,ye,Oe,mt,Et,bt;if(Tt++,ee=we,X.test(e.charAt(we))?(ye=e.charAt(we),we++):(ye=r,Tt===0&&$e(De)),ye!==r){for(Oe=[],mt=we,Et=Tn(),Et===r&&(Et=null),Et!==r?(Qe.test(e.charAt(we))?(bt=e.charAt(we),we++):(bt=r,Tt===0&&$e(it)),bt!==r?(Et=[Et,bt],mt=Et):(we=mt,mt=r)):(we=mt,mt=r);mt!==r;)Oe.push(mt),mt=we,Et=Tn(),Et===r&&(Et=null),Et!==r?(Qe.test(e.charAt(we))?(bt=e.charAt(we),we++):(bt=r,Tt===0&&$e(it)),bt!==r?(Et=[Et,bt],mt=Et):(we=mt,mt=r)):(we=mt,mt=r);Oe!==r?(Nt=ee,ye=_(),ee=ye):(we=ee,ee=r)}else we=ee,ee=r;return Tt--,ee===r&&(ye=r,Tt===0&&$e(ce)),ee}function Ka(){var ee,ye,Oe,mt,Et;if(ee=we,e.substr(we,2)===tt?(ye=tt,we+=2):(ye=r,Tt===0&&$e(Ne)),ye===r&&(ye=null),ye!==r)if(ke.test(e.charAt(we))?(Oe=e.charAt(we),we++):(Oe=r,Tt===0&&$e(be)),Oe!==r){for(mt=[],je.test(e.charAt(we))?(Et=e.charAt(we),we++):(Et=r,Tt===0&&$e(Re));Et!==r;)mt.push(Et),je.test(e.charAt(we))?(Et=e.charAt(we),we++):(Et=r,Tt===0&&$e(Re));mt!==r?(Nt=ee,ye=_(),ee=ye):(we=ee,ee=r)}else we=ee,ee=r;else we=ee,ee=r;return ee}function Mi(){var ee,ye;return ee=we,e.substr(we,4)===ct?(ye=ct,we+=4):(ye=r,Tt===0&&$e(Me)),ye!==r&&(Nt=ee,ye=P()),ee=ye,ee}function Bs(){var ee,ye;return ee=we,e.substr(we,4)===w?(ye=w,we+=4):(ye=r,Tt===0&&$e(b)),ye!==r&&(Nt=ee,ye=y()),ee=ye,ee===r&&(ee=we,e.substr(we,5)===F?(ye=F,we+=5):(ye=r,Tt===0&&$e(z)),ye!==r&&(Nt=ee,ye=Z()),ee=ye),ee}function kl(){var ee,ye,Oe,mt;return Tt++,ee=we,e.charCodeAt(we)===34?(ye=se,we++):(ye=r,Tt===0&&$e(xe)),ye!==r?(e.charCodeAt(we)===34?(Oe=se,we++):(Oe=r,Tt===0&&$e(xe)),Oe!==r?(Nt=ee,ye=Fe(),ee=ye):(we=ee,ee=r)):(we=ee,ee=r),ee===r&&(ee=we,e.charCodeAt(we)===34?(ye=se,we++):(ye=r,Tt===0&&$e(xe)),ye!==r?(Oe=mf(),Oe!==r?(e.charCodeAt(we)===34?(mt=se,we++):(mt=r,Tt===0&&$e(xe)),mt!==r?(Nt=ee,ye=ut(Oe),ee=ye):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)),Tt--,ee===r&&(ye=r,Tt===0&&$e($)),ee}function mf(){var ee,ye,Oe;if(ee=we,ye=[],Oe=Ac(),Oe!==r)for(;Oe!==r;)ye.push(Oe),Oe=Ac();else ye=r;return ye!==r&&(Nt=ee,ye=Ct(ye)),ee=ye,ee}function Ac(){var ee,ye,Oe,mt,Et,bt;return qt.test(e.charAt(we))?(ee=e.charAt(we),we++):(ee=r,Tt===0&&$e(ir)),ee===r&&(ee=we,e.substr(we,2)===Pt?(ye=Pt,we+=2):(ye=r,Tt===0&&$e(dn)),ye!==r&&(Nt=ee,ye=Pr()),ee=ye,ee===r&&(ee=we,e.substr(we,2)===Ir?(ye=Ir,we+=2):(ye=r,Tt===0&&$e(Or)),ye!==r&&(Nt=ee,ye=on()),ee=ye,ee===r&&(ee=we,e.substr(we,2)===li?(ye=li,we+=2):(ye=r,Tt===0&&$e(So)),ye!==r&&(Nt=ee,ye=ns()),ee=ye,ee===r&&(ee=we,e.substr(we,2)===so?(ye=so,we+=2):(ye=r,Tt===0&&$e(Do)),ye!==r&&(Nt=ee,ye=ji()),ee=ye,ee===r&&(ee=we,e.substr(we,2)===oo?(ye=oo,we+=2):(ye=r,Tt===0&&$e(bo)),ye!==r&&(Nt=ee,ye=RA()),ee=ye,ee===r&&(ee=we,e.substr(we,2)===hf?(ye=hf,we+=2):(ye=r,Tt===0&&$e(hh)),ye!==r&&(Nt=ee,ye=gh()),ee=ye,ee===r&&(ee=we,e.substr(we,2)===ao?(ye=ao,we+=2):(ye=r,Tt===0&&$e(Gn)),ye!==r&&(Nt=ee,ye=Ns()),ee=ye,ee===r&&(ee=we,e.substr(we,2)===lo?(ye=lo,we+=2):(ye=r,Tt===0&&$e(iu)),ye!==r&&(Nt=ee,ye=su()),ee=ye,ee===r&&(ee=we,e.substr(we,2)===ou?(ye=ou,we+=2):(ye=r,Tt===0&&$e(TA)),ye!==r?(Oe=Bi(),Oe!==r?(mt=Bi(),mt!==r?(Et=Bi(),Et!==r?(bt=Bi(),bt!==r?(Nt=ee,ye=FA(Oe,mt,Et,bt),ee=ye):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)))))))))),ee}function Bi(){var ee;return ua.test(e.charAt(we))?(ee=e.charAt(we),we++):(ee=r,Tt===0&&$e(fa)),ee}function Tn(){var ee,ye;if(Tt++,ee=[],gr.test(e.charAt(we))?(ye=e.charAt(we),we++):(ye=r,Tt===0&&$e(Po)),ye!==r)for(;ye!==r;)ee.push(ye),gr.test(e.charAt(we))?(ye=e.charAt(we),we++):(ye=r,Tt===0&&$e(Po));else ee=r;return Tt--,ee===r&&(ye=r,Tt===0&&$e(NA)),ee}function pc(){var ee,ye;if(Tt++,ee=[],au.test(e.charAt(we))?(ye=e.charAt(we),we++):(ye=r,Tt===0&&$e(Cr)),ye!==r)for(;ye!==r;)ee.push(ye),au.test(e.charAt(we))?(ye=e.charAt(we),we++):(ye=r,Tt===0&&$e(Cr));else ee=r;return Tt--,ee===r&&(ye=r,Tt===0&&$e(Ue)),ee}function Je(){var ee,ye,Oe,mt,Et,bt;if(ee=we,ye=ot(),ye!==r){for(Oe=[],mt=we,Et=Tn(),Et===r&&(Et=null),Et!==r?(bt=ot(),bt!==r?(Et=[Et,bt],mt=Et):(we=mt,mt=r)):(we=mt,mt=r);mt!==r;)Oe.push(mt),mt=we,Et=Tn(),Et===r&&(Et=null),Et!==r?(bt=ot(),bt!==r?(Et=[Et,bt],mt=Et):(we=mt,mt=r)):(we=mt,mt=r);Oe!==r?(ye=[ye,Oe],ee=ye):(we=ee,ee=r)}else we=ee,ee=r;return ee}function ot(){var ee;return e.substr(we,2)===gf?(ee=gf,we+=2):(ee=r,Tt===0&&$e(OA)),ee===r&&(e.charCodeAt(we)===10?(ee=LA,we++):(ee=r,Tt===0&&$e(lu)),ee===r&&(e.charCodeAt(we)===13?(ee=cu,we++):(ee=r,Tt===0&&$e(ac)))),ee}let St=2,lr=0;if(Qn=a(),Qn!==r&&we===e.length)return Qn;throw Qn!==r&&we"u"?!0:typeof e=="object"&&e!==null&&!Array.isArray(e)?Object.keys(e).every(t=>Ute(e[t])):!1}function jU(e,t,r){if(e===null)return`null -`;if(typeof e=="number"||typeof e=="boolean")return`${e.toString()} -`;if(typeof e=="string")return`${Lte(e)} -`;if(Array.isArray(e)){if(e.length===0)return`[] -`;let s=" ".repeat(t);return` -${e.map(n=>`${s}- ${jU(n,t+1,!1)}`).join("")}`}if(typeof e=="object"&&e){let[s,a]=e instanceof Sx?[e.data,!1]:[e,!0],n=" ".repeat(t),c=Object.keys(s);a&&c.sort((p,h)=>{let E=Ote.indexOf(p),C=Ote.indexOf(h);return E===-1&&C===-1?ph?1:0:E!==-1&&C===-1?-1:E===-1&&C!==-1?1:E-C});let f=c.filter(p=>!Ute(s[p])).map((p,h)=>{let E=s[p],C=Lte(p),S=jU(E,t+1,!0),x=h>0||r?n:"",I=C.length>1024?`? ${C} -${x}:`:`${C}:`,T=S.startsWith(` -`)?S:` ${S}`;return`${x}${I}${T}`}).join(t===0?` -`:"")||` -`;return r?` -${f}`:`${f}`}throw new Error(`Unsupported value type (${e})`)}function cl(e){try{let t=jU(e,0,!1);return t!==` -`?t:""}catch(t){throw t.location&&(t.message=t.message.replace(/(\.)?$/,` (line ${t.location.start.line}, column ${t.location.start.column})$1`)),t}}function aqe(e){return e.endsWith(` -`)||(e+=` -`),(0,Mte.parse)(e)}function cqe(e){if(lqe.test(e))return aqe(e);let t=(0,Dx.safeLoad)(e,{schema:Dx.FAILSAFE_SCHEMA,json:!0});if(t==null)return{};if(typeof t!="object")throw new Error(`Expected an indexed object, got a ${typeof t} instead. Does your file follow Yaml's rules?`);if(Array.isArray(t))throw new Error("Expected an indexed object, got an array instead. Does your file follow Yaml's rules?");return t}function cs(e){return cqe(e)}var Dx,Mte,oqe,Ote,Sx,lqe,_te=Ze(()=>{Dx=et(Tte()),Mte=et(Nte()),oqe=/^(?![-?:,\][{}#&*!|>'"%@` \t\r\n]).([ \t]*(?![,\][{}:# \t\r\n]).)*$/,Ote=["__metadata","version","resolution","dependencies","peerDependencies","dependenciesMeta","peerDependenciesMeta","binaries"],Sx=class{constructor(t){this.data=t}};cl.PreserveOrdering=Sx;lqe=/^(#.*(\r?\n))*?#\s+yarn\s+lockfile\s+v1\r?\n/i});var _B={};Yt(_B,{parseResolution:()=>px,parseShell:()=>ux,parseSyml:()=>cs,stringifyArgument:()=>PU,stringifyArgumentSegment:()=>xU,stringifyArithmeticExpression:()=>Ax,stringifyCommand:()=>bU,stringifyCommandChain:()=>gE,stringifyCommandChainThen:()=>DU,stringifyCommandLine:()=>fx,stringifyCommandLineThen:()=>SU,stringifyEnvSegment:()=>cx,stringifyRedirectArgument:()=>TB,stringifyResolution:()=>hx,stringifyShell:()=>hE,stringifyShellLine:()=>hE,stringifySyml:()=>cl,stringifyValueArgument:()=>wd});var Bc=Ze(()=>{U$();G$();_te()});var jte=G(($Pt,GU)=>{"use strict";var uqe=e=>{let t=!1,r=!1,s=!1;for(let a=0;a{if(!(typeof e=="string"||Array.isArray(e)))throw new TypeError("Expected the input to be `string | string[]`");t=Object.assign({pascalCase:!1},t);let r=a=>t.pascalCase?a.charAt(0).toUpperCase()+a.slice(1):a;return Array.isArray(e)?e=e.map(a=>a.trim()).filter(a=>a.length).join("-"):e=e.trim(),e.length===0?"":e.length===1?t.pascalCase?e.toUpperCase():e.toLowerCase():(e!==e.toLowerCase()&&(e=uqe(e)),e=e.replace(/^[_.\- ]+/,"").toLowerCase().replace(/[_.\- ]+(\w|$)/g,(a,n)=>n.toUpperCase()).replace(/\d+(\w|$)/g,a=>a.toUpperCase()),r(e))};GU.exports=Hte;GU.exports.default=Hte});var Gte=G((ext,fqe)=>{fqe.exports=[{name:"Agola CI",constant:"AGOLA",env:"AGOLA_GIT_REF",pr:"AGOLA_PULL_REQUEST_ID"},{name:"Appcircle",constant:"APPCIRCLE",env:"AC_APPCIRCLE"},{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN"},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"TF_BUILD",pr:{BUILD_REASON:"PullRequest"}},{name:"Bamboo",constant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT",pr:"BITBUCKET_PR_ID"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITRISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDDY_EXECUTION_PULL_REQUEST_ID"},{name:"Buildkite",constant:"BUILDKITE",env:"BUILDKITE",pr:{env:"BUILDKITE_PULL_REQUEST",ne:"false"}},{name:"CircleCI",constant:"CIRCLE",env:"CIRCLECI",pr:"CIRCLE_PULL_REQUEST"},{name:"Cirrus CI",constant:"CIRRUS",env:"CIRRUS_CI",pr:"CIRRUS_PR"},{name:"Codefresh",constant:"CODEFRESH",env:"CF_BUILD_ID",pr:{any:["CF_PULL_REQUEST_NUMBER","CF_PULL_REQUEST_ID"]}},{name:"Codemagic",constant:"CODEMAGIC",env:"CM_BUILD_ID",pr:"CM_PULL_REQUEST"},{name:"Codeship",constant:"CODESHIP",env:{CI_NAME:"codeship"}},{name:"Drone",constant:"DRONE",env:"DRONE",pr:{DRONE_BUILD_EVENT:"pull_request"}},{name:"dsari",constant:"DSARI",env:"DSARI"},{name:"Earthly",constant:"EARTHLY",env:"EARTHLY_CI"},{name:"Expo Application Services",constant:"EAS",env:"EAS_BUILD"},{name:"Gerrit",constant:"GERRIT",env:"GERRIT_PROJECT"},{name:"Gitea Actions",constant:"GITEA_ACTIONS",env:"GITEA_ACTIONS"},{name:"GitHub Actions",constant:"GITHUB_ACTIONS",env:"GITHUB_ACTIONS",pr:{GITHUB_EVENT_NAME:"pull_request"}},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI",pr:"CI_MERGE_REQUEST_ID"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"Google Cloud Build",constant:"GOOGLE_CLOUD_BUILD",env:"BUILDER_OUTPUT"},{name:"Harness CI",constant:"HARNESS",env:"HARNESS_BUILD_ID"},{name:"Heroku",constant:"HEROKU",env:{env:"NODE",includes:"/app/.heroku/node/bin/node"}},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"LayerCI",constant:"LAYERCI",env:"LAYERCI",pr:"LAYERCI_PULL_REQUEST"},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Nevercode",constant:"NEVERCODE",env:"NEVERCODE",pr:{env:"NEVERCODE_PULL_REQUEST",ne:"false"}},{name:"Prow",constant:"PROW",env:"PROW_JOB_ID"},{name:"ReleaseHub",constant:"RELEASEHUB",env:"RELEASE_BUILD_ID"},{name:"Render",constant:"RENDER",env:"RENDER",pr:{IS_PULL_REQUEST:"true"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Screwdriver",constant:"SCREWDRIVER",env:"SCREWDRIVER",pr:{env:"SD_PULL_REQUEST",ne:"false"}},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Sourcehut",constant:"SOURCEHUT",env:{CI_NAME:"sourcehut"}},{name:"Strider CD",constant:"STRIDER",env:"STRIDER"},{name:"TaskCluster",constant:"TASKCLUSTER",env:["TASK_ID","RUN_ID"]},{name:"TeamCity",constant:"TEAMCITY",env:"TEAMCITY_VERSION"},{name:"Travis CI",constant:"TRAVIS",env:"TRAVIS",pr:{env:"TRAVIS_PULL_REQUEST",ne:"false"}},{name:"Vela",constant:"VELA",env:"VELA",pr:{VELA_PULL_REQUEST:"1"}},{name:"Vercel",constant:"VERCEL",env:{any:["NOW_BUILDER","VERCEL"]},pr:"VERCEL_GIT_PULL_REQUEST_ID"},{name:"Visual Studio App Center",constant:"APPCENTER",env:"APPCENTER_BUILD_ID"},{name:"Woodpecker",constant:"WOODPECKER",env:{CI:"woodpecker"},pr:{CI_BUILD_EVENT:"pull_request"}},{name:"Xcode Cloud",constant:"XCODE_CLOUD",env:"CI_XCODE_PROJECT",pr:"CI_PULL_REQUEST_NUMBER"},{name:"Xcode Server",constant:"XCODE_SERVER",env:"XCS"}]});var Rd=G(ql=>{"use strict";var Wte=Gte(),xs=process.env;Object.defineProperty(ql,"_vendors",{value:Wte.map(function(e){return e.constant})});ql.name=null;ql.isPR=null;Wte.forEach(function(e){let r=(Array.isArray(e.env)?e.env:[e.env]).every(function(s){return qte(s)});if(ql[e.constant]=r,!!r)switch(ql.name=e.name,typeof e.pr){case"string":ql.isPR=!!xs[e.pr];break;case"object":"env"in e.pr?ql.isPR=e.pr.env in xs&&xs[e.pr.env]!==e.pr.ne:"any"in e.pr?ql.isPR=e.pr.any.some(function(s){return!!xs[s]}):ql.isPR=qte(e.pr);break;default:ql.isPR=null}});ql.isCI=!!(xs.CI!=="false"&&(xs.BUILD_ID||xs.BUILD_NUMBER||xs.CI||xs.CI_APP_ID||xs.CI_BUILD_ID||xs.CI_BUILD_NUMBER||xs.CI_NAME||xs.CONTINUOUS_INTEGRATION||xs.RUN_ID||ql.name));function qte(e){return typeof e=="string"?!!xs[e]:"env"in e?xs[e.env]&&xs[e.env].includes(e.includes):"any"in e?e.any.some(function(t){return!!xs[t]}):Object.keys(e).every(function(t){return xs[t]===e[t]})}});var ni,In,Td,qU,bx,Vte,WU,VU,Px=Ze(()=>{(function(e){e.StartOfInput="\0",e.EndOfInput="",e.EndOfPartialInput=""})(ni||(ni={}));(function(e){e[e.InitialNode=0]="InitialNode",e[e.SuccessNode=1]="SuccessNode",e[e.ErrorNode=2]="ErrorNode",e[e.CustomNode=3]="CustomNode"})(In||(In={}));Td=-1,qU=/^(-h|--help)(?:=([0-9]+))?$/,bx=/^(--[a-z]+(?:-[a-z]+)*|-[a-zA-Z]+)$/,Vte=/^-[a-zA-Z]{2,}$/,WU=/^([^=]+)=([\s\S]*)$/,VU=process.env.DEBUG_CLI==="1"});var st,BE,xx,YU,kx=Ze(()=>{Px();st=class extends Error{constructor(t){super(t),this.clipanion={type:"usage"},this.name="UsageError"}},BE=class extends Error{constructor(t,r){if(super(),this.input=t,this.candidates=r,this.clipanion={type:"none"},this.name="UnknownSyntaxError",this.candidates.length===0)this.message="Command not found, but we're not sure what's the alternative.";else if(this.candidates.every(s=>s.reason!==null&&s.reason===r[0].reason)){let[{reason:s}]=this.candidates;this.message=`${s} - -${this.candidates.map(({usage:a})=>`$ ${a}`).join(` -`)}`}else if(this.candidates.length===1){let[{usage:s}]=this.candidates;this.message=`Command not found; did you mean: - -$ ${s} -${YU(t)}`}else this.message=`Command not found; did you mean one of: - -${this.candidates.map(({usage:s},a)=>`${`${a}.`.padStart(4)} ${s}`).join(` -`)} - -${YU(t)}`}},xx=class extends Error{constructor(t,r){super(),this.input=t,this.usages=r,this.clipanion={type:"none"},this.name="AmbiguousSyntaxError",this.message=`Cannot find which to pick amongst the following alternatives: - -${this.usages.map((s,a)=>`${`${a}.`.padStart(4)} ${s}`).join(` -`)} - -${YU(t)}`}},YU=e=>`While running ${e.filter(t=>t!==ni.EndOfInput&&t!==ni.EndOfPartialInput).map(t=>{let r=JSON.stringify(t);return t.match(/\s/)||t.length===0||r!==`"${t}"`?r:t}).join(" ")}`});function Aqe(e){let t=e.split(` -`),r=t.filter(a=>a.match(/\S/)),s=r.length>0?r.reduce((a,n)=>Math.min(a,n.length-n.trimStart().length),Number.MAX_VALUE):0;return t.map(a=>a.slice(s).trimRight()).join(` -`)}function Vo(e,{format:t,paragraphs:r}){return e=e.replace(/\r\n?/g,` -`),e=Aqe(e),e=e.replace(/^\n+|\n+$/g,""),e=e.replace(/^(\s*)-([^\n]*?)\n+/gm,`$1-$2 - -`),e=e.replace(/\n(\n)?\n*/g,(s,a)=>a||" "),r&&(e=e.split(/\n/).map(s=>{let a=s.match(/^\s*[*-][\t ]+(.*)/);if(!a)return s.match(/(.{1,80})(?: |$)/g).join(` -`);let n=s.length-s.trimStart().length;return a[1].match(new RegExp(`(.{1,${78-n}})(?: |$)`,"g")).map((c,f)=>" ".repeat(n)+(f===0?"- ":" ")+c).join(` -`)}).join(` - -`)),e=e.replace(/(`+)((?:.|[\n])*?)\1/g,(s,a,n)=>t.code(a+n+a)),e=e.replace(/(\*\*)((?:.|[\n])*?)\1/g,(s,a,n)=>t.bold(a+n+a)),e?`${e} -`:""}var KU,Yte,Kte,JU=Ze(()=>{KU=Array(80).fill("\u2501");for(let e=0;e<=24;++e)KU[KU.length-e]=`\x1B[38;5;${232+e}m\u2501`;Yte={header:e=>`\x1B[1m\u2501\u2501\u2501 ${e}${e.length<75?` ${KU.slice(e.length+5).join("")}`:":"}\x1B[0m`,bold:e=>`\x1B[1m${e}\x1B[22m`,error:e=>`\x1B[31m\x1B[1m${e}\x1B[22m\x1B[39m`,code:e=>`\x1B[36m${e}\x1B[39m`},Kte={header:e=>e,bold:e=>e,error:e=>e,code:e=>e}});function wa(e){return{...e,[HB]:!0}}function Wf(e,t){return typeof e>"u"?[e,t]:typeof e=="object"&&e!==null&&!Array.isArray(e)?[void 0,e]:[e,t]}function Qx(e,{mergeName:t=!1}={}){let r=e.match(/^([^:]+): (.*)$/m);if(!r)return"validation failed";let[,s,a]=r;return t&&(a=a[0].toLowerCase()+a.slice(1)),a=s!=="."||!t?`${s.replace(/^\.(\[|$)/,"$1")}: ${a}`:`: ${a}`,a}function jB(e,t){return t.length===1?new st(`${e}${Qx(t[0],{mergeName:!0})}`):new st(`${e}: -${t.map(r=>` -- ${Qx(r)}`).join("")}`)}function Fd(e,t,r){if(typeof r>"u")return t;let s=[],a=[],n=f=>{let p=t;return t=f,n.bind(null,p)};if(!r(t,{errors:s,coercions:a,coercion:n}))throw jB(`Invalid value for ${e}`,s);for(let[,f]of a)f();return t}var HB,wp=Ze(()=>{kx();HB=Symbol("clipanion/isOption")});var Yo={};Yt(Yo,{KeyRelationship:()=>Vf,TypeAssertionError:()=>i0,applyCascade:()=>WB,as:()=>Qqe,assert:()=>Pqe,assertWithErrors:()=>xqe,cascade:()=>Nx,fn:()=>Rqe,hasAtLeastOneKey:()=>r_,hasExactLength:()=>$te,hasForbiddenKeys:()=>Zqe,hasKeyRelationship:()=>YB,hasMaxLength:()=>Fqe,hasMinLength:()=>Tqe,hasMutuallyExclusiveKeys:()=>Xqe,hasRequiredKeys:()=>zqe,hasUniqueItems:()=>Nqe,isArray:()=>Rx,isAtLeast:()=>e_,isAtMost:()=>Mqe,isBase64:()=>Vqe,isBoolean:()=>Iqe,isDate:()=>wqe,isDict:()=>Sqe,isEnum:()=>ks,isHexColor:()=>Wqe,isISO8601:()=>qqe,isInExclusiveRange:()=>_qe,isInInclusiveRange:()=>Uqe,isInstanceOf:()=>bqe,isInteger:()=>t_,isJSON:()=>Yqe,isLiteral:()=>zte,isLowerCase:()=>Hqe,isMap:()=>vqe,isNegative:()=>Oqe,isNullable:()=>Jqe,isNumber:()=>XU,isObject:()=>Zte,isOneOf:()=>$U,isOptional:()=>Kqe,isPartial:()=>Dqe,isPayload:()=>Cqe,isPositive:()=>Lqe,isRecord:()=>Fx,isSet:()=>Bqe,isString:()=>SE,isTuple:()=>Tx,isUUID4:()=>Gqe,isUnknown:()=>ZU,isUpperCase:()=>jqe,makeTrait:()=>Xte,makeValidator:()=>Wr,matchesRegExp:()=>qB,softAssert:()=>kqe});function ii(e){return e===null?"null":e===void 0?"undefined":e===""?"an empty string":typeof e=="symbol"?`<${e.toString()}>`:Array.isArray(e)?"an array":JSON.stringify(e)}function vE(e,t){if(e.length===0)return"nothing";if(e.length===1)return ii(e[0]);let r=e.slice(0,-1),s=e[e.length-1],a=e.length>2?`, ${t} `:` ${t} `;return`${r.map(n=>ii(n)).join(", ")}${a}${ii(s)}`}function n0(e,t){var r,s,a;return typeof t=="number"?`${(r=e?.p)!==null&&r!==void 0?r:"."}[${t}]`:pqe.test(t)?`${(s=e?.p)!==null&&s!==void 0?s:""}.${t}`:`${(a=e?.p)!==null&&a!==void 0?a:"."}[${JSON.stringify(t)}]`}function zU(e,t,r){return e===1?t:r}function mr({errors:e,p:t}={},r){return e?.push(`${t??"."}: ${r}`),!1}function yqe(e,t){return r=>{e[t]=r}}function Yf(e,t){return r=>{let s=e[t];return e[t]=r,Yf(e,t).bind(null,s)}}function GB(e,t,r){let s=()=>(e(r()),a),a=()=>(e(t),s);return s}function ZU(){return Wr({test:(e,t)=>!0})}function zte(e){return Wr({test:(t,r)=>t!==e?mr(r,`Expected ${ii(e)} (got ${ii(t)})`):!0})}function SE(){return Wr({test:(e,t)=>typeof e!="string"?mr(t,`Expected a string (got ${ii(e)})`):!0})}function ks(e){let t=Array.isArray(e)?e:Object.values(e),r=t.every(a=>typeof a=="string"||typeof a=="number"),s=new Set(t);return s.size===1?zte([...s][0]):Wr({test:(a,n)=>s.has(a)?!0:r?mr(n,`Expected one of ${vE(t,"or")} (got ${ii(a)})`):mr(n,`Expected a valid enumeration value (got ${ii(a)})`)})}function Iqe(){return Wr({test:(e,t)=>{var r;if(typeof e!="boolean"){if(typeof t?.coercions<"u"){if(typeof t?.coercion>"u")return mr(t,"Unbound coercion result");let s=Eqe.get(e);if(typeof s<"u")return t.coercions.push([(r=t.p)!==null&&r!==void 0?r:".",t.coercion.bind(null,s)]),!0}return mr(t,`Expected a boolean (got ${ii(e)})`)}return!0}})}function XU(){return Wr({test:(e,t)=>{var r;if(typeof e!="number"){if(typeof t?.coercions<"u"){if(typeof t?.coercion>"u")return mr(t,"Unbound coercion result");let s;if(typeof e=="string"){let a;try{a=JSON.parse(e)}catch{}if(typeof a=="number")if(JSON.stringify(a)===e)s=a;else return mr(t,`Received a number that can't be safely represented by the runtime (${e})`)}if(typeof s<"u")return t.coercions.push([(r=t.p)!==null&&r!==void 0?r:".",t.coercion.bind(null,s)]),!0}return mr(t,`Expected a number (got ${ii(e)})`)}return!0}})}function Cqe(e){return Wr({test:(t,r)=>{var s;if(typeof r?.coercions>"u")return mr(r,"The isPayload predicate can only be used with coercion enabled");if(typeof r.coercion>"u")return mr(r,"Unbound coercion result");if(typeof t!="string")return mr(r,`Expected a string (got ${ii(t)})`);let a;try{a=JSON.parse(t)}catch{return mr(r,`Expected a JSON string (got ${ii(t)})`)}let n={value:a};return e(a,Object.assign(Object.assign({},r),{coercion:Yf(n,"value")}))?(r.coercions.push([(s=r.p)!==null&&s!==void 0?s:".",r.coercion.bind(null,n.value)]),!0):!1}})}function wqe(){return Wr({test:(e,t)=>{var r;if(!(e instanceof Date)){if(typeof t?.coercions<"u"){if(typeof t?.coercion>"u")return mr(t,"Unbound coercion result");let s;if(typeof e=="string"&&Jte.test(e))s=new Date(e);else{let a;if(typeof e=="string"){let n;try{n=JSON.parse(e)}catch{}typeof n=="number"&&(a=n)}else typeof e=="number"&&(a=e);if(typeof a<"u")if(Number.isSafeInteger(a)||!Number.isSafeInteger(a*1e3))s=new Date(a*1e3);else return mr(t,`Received a timestamp that can't be safely represented by the runtime (${e})`)}if(typeof s<"u")return t.coercions.push([(r=t.p)!==null&&r!==void 0?r:".",t.coercion.bind(null,s)]),!0}return mr(t,`Expected a date (got ${ii(e)})`)}return!0}})}function Rx(e,{delimiter:t}={}){return Wr({test:(r,s)=>{var a;let n=r;if(typeof r=="string"&&typeof t<"u"&&typeof s?.coercions<"u"){if(typeof s?.coercion>"u")return mr(s,"Unbound coercion result");r=r.split(t)}if(!Array.isArray(r))return mr(s,`Expected an array (got ${ii(r)})`);let c=!0;for(let f=0,p=r.length;f{var n,c;if(Object.getPrototypeOf(s).toString()==="[object Set]")if(typeof a?.coercions<"u"){if(typeof a?.coercion>"u")return mr(a,"Unbound coercion result");let f=[...s],p=[...s];if(!r(p,Object.assign(Object.assign({},a),{coercion:void 0})))return!1;let h=()=>p.some((E,C)=>E!==f[C])?new Set(p):s;return a.coercions.push([(n=a.p)!==null&&n!==void 0?n:".",GB(a.coercion,s,h)]),!0}else{let f=!0;for(let p of s)if(f=e(p,Object.assign({},a))&&f,!f&&a?.errors==null)break;return f}if(typeof a?.coercions<"u"){if(typeof a?.coercion>"u")return mr(a,"Unbound coercion result");let f={value:s};return r(s,Object.assign(Object.assign({},a),{coercion:Yf(f,"value")}))?(a.coercions.push([(c=a.p)!==null&&c!==void 0?c:".",GB(a.coercion,s,()=>new Set(f.value))]),!0):!1}return mr(a,`Expected a set (got ${ii(s)})`)}})}function vqe(e,t){let r=Rx(Tx([e,t])),s=Fx(t,{keys:e});return Wr({test:(a,n)=>{var c,f,p;if(Object.getPrototypeOf(a).toString()==="[object Map]")if(typeof n?.coercions<"u"){if(typeof n?.coercion>"u")return mr(n,"Unbound coercion result");let h=[...a],E=[...a];if(!r(E,Object.assign(Object.assign({},n),{coercion:void 0})))return!1;let C=()=>E.some((S,x)=>S[0]!==h[x][0]||S[1]!==h[x][1])?new Map(E):a;return n.coercions.push([(c=n.p)!==null&&c!==void 0?c:".",GB(n.coercion,a,C)]),!0}else{let h=!0;for(let[E,C]of a)if(h=e(E,Object.assign({},n))&&h,!h&&n?.errors==null||(h=t(C,Object.assign(Object.assign({},n),{p:n0(n,E)}))&&h,!h&&n?.errors==null))break;return h}if(typeof n?.coercions<"u"){if(typeof n?.coercion>"u")return mr(n,"Unbound coercion result");let h={value:a};return Array.isArray(a)?r(a,Object.assign(Object.assign({},n),{coercion:void 0}))?(n.coercions.push([(f=n.p)!==null&&f!==void 0?f:".",GB(n.coercion,a,()=>new Map(h.value))]),!0):!1:s(a,Object.assign(Object.assign({},n),{coercion:Yf(h,"value")}))?(n.coercions.push([(p=n.p)!==null&&p!==void 0?p:".",GB(n.coercion,a,()=>new Map(Object.entries(h.value)))]),!0):!1}return mr(n,`Expected a map (got ${ii(a)})`)}})}function Tx(e,{delimiter:t}={}){let r=$te(e.length);return Wr({test:(s,a)=>{var n;if(typeof s=="string"&&typeof t<"u"&&typeof a?.coercions<"u"){if(typeof a?.coercion>"u")return mr(a,"Unbound coercion result");s=s.split(t),a.coercions.push([(n=a.p)!==null&&n!==void 0?n:".",a.coercion.bind(null,s)])}if(!Array.isArray(s))return mr(a,`Expected a tuple (got ${ii(s)})`);let c=r(s,Object.assign({},a));for(let f=0,p=s.length;f{var n;if(Array.isArray(s)&&typeof a?.coercions<"u")return typeof a?.coercion>"u"?mr(a,"Unbound coercion result"):r(s,Object.assign(Object.assign({},a),{coercion:void 0}))?(s=Object.fromEntries(s),a.coercions.push([(n=a.p)!==null&&n!==void 0?n:".",a.coercion.bind(null,s)]),!0):!1;if(typeof s!="object"||s===null)return mr(a,`Expected an object (got ${ii(s)})`);let c=Object.keys(s),f=!0;for(let p=0,h=c.length;p{if(typeof a!="object"||a===null)return mr(n,`Expected an object (got ${ii(a)})`);let c=new Set([...r,...Object.keys(a)]),f={},p=!0;for(let h of c){if(h==="constructor"||h==="__proto__")p=mr(Object.assign(Object.assign({},n),{p:n0(n,h)}),"Unsafe property name");else{let E=Object.prototype.hasOwnProperty.call(e,h)?e[h]:void 0,C=Object.prototype.hasOwnProperty.call(a,h)?a[h]:void 0;typeof E<"u"?p=E(C,Object.assign(Object.assign({},n),{p:n0(n,h),coercion:Yf(a,h)}))&&p:t===null?p=mr(Object.assign(Object.assign({},n),{p:n0(n,h)}),`Extraneous property (got ${ii(C)})`):Object.defineProperty(f,h,{enumerable:!0,get:()=>C,set:yqe(a,h)})}if(!p&&n?.errors==null)break}return t!==null&&(p||n?.errors!=null)&&(p=t(f,n)&&p),p}});return Object.assign(s,{properties:e})}function Dqe(e){return Zte(e,{extra:Fx(ZU())})}function Xte(e){return()=>e}function Wr({test:e}){return Xte(e)()}function Pqe(e,t){if(!t(e))throw new i0}function xqe(e,t){let r=[];if(!t(e,{errors:r}))throw new i0({errors:r})}function kqe(e,t){}function Qqe(e,t,{coerce:r=!1,errors:s,throw:a}={}){let n=s?[]:void 0;if(!r){if(t(e,{errors:n}))return a?e:{value:e,errors:void 0};if(a)throw new i0({errors:n});return{value:void 0,errors:n??!0}}let c={value:e},f=Yf(c,"value"),p=[];if(!t(e,{errors:n,coercion:f,coercions:p})){if(a)throw new i0({errors:n});return{value:void 0,errors:n??!0}}for(let[,h]of p)h();return a?c.value:{value:c.value,errors:void 0}}function Rqe(e,t){let r=Tx(e);return(...s)=>{if(!r(s))throw new i0;return t(...s)}}function Tqe(e){return Wr({test:(t,r)=>t.length>=e?!0:mr(r,`Expected to have a length of at least ${e} elements (got ${t.length})`)})}function Fqe(e){return Wr({test:(t,r)=>t.length<=e?!0:mr(r,`Expected to have a length of at most ${e} elements (got ${t.length})`)})}function $te(e){return Wr({test:(t,r)=>t.length!==e?mr(r,`Expected to have a length of exactly ${e} elements (got ${t.length})`):!0})}function Nqe({map:e}={}){return Wr({test:(t,r)=>{let s=new Set,a=new Set;for(let n=0,c=t.length;ne<=0?!0:mr(t,`Expected to be negative (got ${e})`)})}function Lqe(){return Wr({test:(e,t)=>e>=0?!0:mr(t,`Expected to be positive (got ${e})`)})}function e_(e){return Wr({test:(t,r)=>t>=e?!0:mr(r,`Expected to be at least ${e} (got ${t})`)})}function Mqe(e){return Wr({test:(t,r)=>t<=e?!0:mr(r,`Expected to be at most ${e} (got ${t})`)})}function Uqe(e,t){return Wr({test:(r,s)=>r>=e&&r<=t?!0:mr(s,`Expected to be in the [${e}; ${t}] range (got ${r})`)})}function _qe(e,t){return Wr({test:(r,s)=>r>=e&&rt!==Math.round(t)?mr(r,`Expected to be an integer (got ${t})`):!e&&!Number.isSafeInteger(t)?mr(r,`Expected to be a safe integer (got ${t})`):!0})}function qB(e){return Wr({test:(t,r)=>e.test(t)?!0:mr(r,`Expected to match the pattern ${e.toString()} (got ${ii(t)})`)})}function Hqe(){return Wr({test:(e,t)=>e!==e.toLowerCase()?mr(t,`Expected to be all-lowercase (got ${e})`):!0})}function jqe(){return Wr({test:(e,t)=>e!==e.toUpperCase()?mr(t,`Expected to be all-uppercase (got ${e})`):!0})}function Gqe(){return Wr({test:(e,t)=>mqe.test(e)?!0:mr(t,`Expected to be a valid UUID v4 (got ${ii(e)})`)})}function qqe(){return Wr({test:(e,t)=>Jte.test(e)?!0:mr(t,`Expected to be a valid ISO 8601 date string (got ${ii(e)})`)})}function Wqe({alpha:e=!1}){return Wr({test:(t,r)=>(e?hqe.test(t):gqe.test(t))?!0:mr(r,`Expected to be a valid hexadecimal color string (got ${ii(t)})`)})}function Vqe(){return Wr({test:(e,t)=>dqe.test(e)?!0:mr(t,`Expected to be a valid base 64 string (got ${ii(e)})`)})}function Yqe(e=ZU()){return Wr({test:(t,r)=>{let s;try{s=JSON.parse(t)}catch{return mr(r,`Expected to be a valid JSON string (got ${ii(t)})`)}return e(s,r)}})}function Nx(e,...t){let r=Array.isArray(t[0])?t[0]:t;return Wr({test:(s,a)=>{var n,c;let f={value:s},p=typeof a?.coercions<"u"?Yf(f,"value"):void 0,h=typeof a?.coercions<"u"?[]:void 0;if(!e(s,Object.assign(Object.assign({},a),{coercion:p,coercions:h})))return!1;let E=[];if(typeof h<"u")for(let[,C]of h)E.push(C());try{if(typeof a?.coercions<"u"){if(f.value!==s){if(typeof a?.coercion>"u")return mr(a,"Unbound coercion result");a.coercions.push([(n=a.p)!==null&&n!==void 0?n:".",a.coercion.bind(null,f.value)])}(c=a?.coercions)===null||c===void 0||c.push(...h)}return r.every(C=>C(f.value,a))}finally{for(let C of E)C()}}})}function WB(e,...t){let r=Array.isArray(t[0])?t[0]:t;return Nx(e,r)}function Kqe(e){return Wr({test:(t,r)=>typeof t>"u"?!0:e(t,r)})}function Jqe(e){return Wr({test:(t,r)=>t===null?!0:e(t,r)})}function zqe(e,t){var r;let s=new Set(e),a=VB[(r=t?.missingIf)!==null&&r!==void 0?r:"missing"];return Wr({test:(n,c)=>{let f=new Set(Object.keys(n)),p=[];for(let h of s)a(f,h,n)||p.push(h);return p.length>0?mr(c,`Missing required ${zU(p.length,"property","properties")} ${vE(p,"and")}`):!0}})}function r_(e,t){var r;let s=new Set(e),a=VB[(r=t?.missingIf)!==null&&r!==void 0?r:"missing"];return Wr({test:(n,c)=>Object.keys(n).some(h=>a(s,h,n))?!0:mr(c,`Missing at least one property from ${vE(Array.from(s),"or")}`)})}function Zqe(e,t){var r;let s=new Set(e),a=VB[(r=t?.missingIf)!==null&&r!==void 0?r:"missing"];return Wr({test:(n,c)=>{let f=new Set(Object.keys(n)),p=[];for(let h of s)a(f,h,n)&&p.push(h);return p.length>0?mr(c,`Forbidden ${zU(p.length,"property","properties")} ${vE(p,"and")}`):!0}})}function Xqe(e,t){var r;let s=new Set(e),a=VB[(r=t?.missingIf)!==null&&r!==void 0?r:"missing"];return Wr({test:(n,c)=>{let f=new Set(Object.keys(n)),p=[];for(let h of s)a(f,h,n)&&p.push(h);return p.length>1?mr(c,`Mutually exclusive properties ${vE(p,"and")}`):!0}})}function YB(e,t,r,s){var a,n;let c=new Set((a=s?.ignore)!==null&&a!==void 0?a:[]),f=VB[(n=s?.missingIf)!==null&&n!==void 0?n:"missing"],p=new Set(r),h=$qe[t],E=t===Vf.Forbids?"or":"and";return Wr({test:(C,S)=>{let x=new Set(Object.keys(C));if(!f(x,e,C)||c.has(C[e]))return!0;let I=[];for(let T of p)(f(x,T,C)&&!c.has(C[T]))!==h.expect&&I.push(T);return I.length>=1?mr(S,`Property "${e}" ${h.message} ${zU(I.length,"property","properties")} ${vE(I,E)}`):!0}})}var pqe,hqe,gqe,dqe,mqe,Jte,Eqe,bqe,$U,i0,VB,Vf,$qe,ul=Ze(()=>{pqe=/^[a-zA-Z_][a-zA-Z0-9_]*$/;hqe=/^#[0-9a-f]{6}$/i,gqe=/^#[0-9a-f]{6}([0-9a-f]{2})?$/i,dqe=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,mqe=/^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$/i,Jte=/^(?:[1-9]\d{3}(-?)(?:(?:0[1-9]|1[0-2])\1(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])\1(?:29|30)|(?:0[13578]|1[02])(?:\1)31|00[1-9]|0[1-9]\d|[12]\d{2}|3(?:[0-5]\d|6[0-5]))|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)(?:(-?)02(?:\2)29|-?366))T(?:[01]\d|2[0-3])(:?)[0-5]\d(?:\3[0-5]\d)?(?:Z|[+-][01]\d(?:\3[0-5]\d)?)$/;Eqe=new Map([["true",!0],["True",!0],["1",!0],[1,!0],["false",!1],["False",!1],["0",!1],[0,!1]]);bqe=e=>Wr({test:(t,r)=>t instanceof e?!0:mr(r,`Expected an instance of ${e.name} (got ${ii(t)})`)}),$U=(e,{exclusive:t=!1}={})=>Wr({test:(r,s)=>{var a,n,c;let f=[],p=typeof s?.errors<"u"?[]:void 0;for(let h=0,E=e.length;h1?mr(s,`Expected to match exactly a single predicate (matched ${f.join(", ")})`):(c=s?.errors)===null||c===void 0||c.push(...p),!1}});i0=class extends Error{constructor({errors:t}={}){let r="Type mismatch";if(t&&t.length>0){r+=` -`;for(let s of t)r+=` -- ${s}`}super(r)}};VB={missing:(e,t)=>e.has(t),undefined:(e,t,r)=>e.has(t)&&typeof r[t]<"u",nil:(e,t,r)=>e.has(t)&&r[t]!=null,falsy:(e,t,r)=>e.has(t)&&!!r[t]};(function(e){e.Forbids="Forbids",e.Requires="Requires"})(Vf||(Vf={}));$qe={[Vf.Forbids]:{expect:!1,message:"forbids using"},[Vf.Requires]:{expect:!0,message:"requires using"}}});var at,s0=Ze(()=>{wp();at=class{constructor(){this.help=!1}static Usage(t){return t}async catch(t){throw t}async validateAndExecute(){let r=this.constructor.schema;if(Array.isArray(r)){let{isDict:a,isUnknown:n,applyCascade:c}=await Promise.resolve().then(()=>(ul(),Yo)),f=c(a(n()),r),p=[],h=[];if(!f(this,{errors:p,coercions:h}))throw jB("Invalid option schema",p);for(let[,C]of h)C()}else if(r!=null)throw new Error("Invalid command schema");let s=await this.execute();return typeof s<"u"?s:0}};at.isOption=HB;at.Default=[]});function fl(e){VU&&console.log(e)}function tre(){let e={nodes:[]};for(let t=0;t{if(t.has(s))return;t.add(s);let a=e.nodes[s];for(let c of Object.values(a.statics))for(let{to:f}of c)r(f);for(let[,{to:c}]of a.dynamics)r(c);for(let{to:c}of a.shortcuts)r(c);let n=new Set(a.shortcuts.map(({to:c})=>c));for(;a.shortcuts.length>0;){let{to:c}=a.shortcuts.shift(),f=e.nodes[c];for(let[p,h]of Object.entries(f.statics)){let E=Object.prototype.hasOwnProperty.call(a.statics,p)?a.statics[p]:a.statics[p]=[];for(let C of h)E.some(({to:S})=>C.to===S)||E.push(C)}for(let[p,h]of f.dynamics)a.dynamics.some(([E,{to:C}])=>p===E&&h.to===C)||a.dynamics.push([p,h]);for(let p of f.shortcuts)n.has(p.to)||(a.shortcuts.push(p),n.add(p.to))}};r(In.InitialNode)}function r9e(e,{prefix:t=""}={}){if(VU){fl(`${t}Nodes are:`);for(let r=0;rE!==In.ErrorNode).map(({state:E})=>({usage:E.candidateUsage,reason:null})));if(h.every(({node:E})=>E===In.ErrorNode))throw new BE(t,h.map(({state:E})=>({usage:E.candidateUsage,reason:E.errorMessage})));s=s9e(h)}if(s.length>0){fl(" Results:");for(let n of s)fl(` - ${n.node} -> ${JSON.stringify(n.state)}`)}else fl(" No results");return s}function i9e(e,t,{endToken:r=ni.EndOfInput}={}){let s=n9e(e,[...t,r]);return o9e(t,s.map(({state:a})=>a))}function s9e(e){let t=0;for(let{state:r}of e)r.path.length>t&&(t=r.path.length);return e.filter(({state:r})=>r.path.length===t)}function o9e(e,t){let r=t.filter(S=>S.selectedIndex!==null),s=r.filter(S=>!S.partial);if(s.length>0&&(r=s),r.length===0)throw new Error;let a=r.filter(S=>S.selectedIndex===Td||S.requiredOptions.every(x=>x.some(I=>S.options.find(T=>T.name===I))));if(a.length===0)throw new BE(e,r.map(S=>({usage:S.candidateUsage,reason:null})));let n=0;for(let S of a)S.path.length>n&&(n=S.path.length);let c=a.filter(S=>S.path.length===n),f=S=>S.positionals.filter(({extra:x})=>!x).length+S.options.length,p=c.map(S=>({state:S,positionalCount:f(S)})),h=0;for(let{positionalCount:S}of p)S>h&&(h=S);let E=p.filter(({positionalCount:S})=>S===h).map(({state:S})=>S),C=a9e(E);if(C.length>1)throw new xx(e,C.map(S=>S.candidateUsage));return C[0]}function a9e(e){let t=[],r=[];for(let s of e)s.selectedIndex===Td?r.push(s):t.push(s);return r.length>0&&t.push({...ere,path:rre(...r.map(s=>s.path)),options:r.reduce((s,a)=>s.concat(a.options),[])}),t}function rre(e,t,...r){return t===void 0?Array.from(e):rre(e.filter((s,a)=>s===t[a]),...r)}function Wl(){return{dynamics:[],shortcuts:[],statics:{}}}function nre(e){return e===In.SuccessNode||e===In.ErrorNode}function n_(e,t=0){return{to:nre(e.to)?e.to:e.to>=In.CustomNode?e.to+t-In.CustomNode+1:e.to+t,reducer:e.reducer}}function l9e(e,t=0){let r=Wl();for(let[s,a]of e.dynamics)r.dynamics.push([s,n_(a,t)]);for(let s of e.shortcuts)r.shortcuts.push(n_(s,t));for(let[s,a]of Object.entries(e.statics))r.statics[s]=a.map(n=>n_(n,t));return r}function qs(e,t,r,s,a){e.nodes[t].dynamics.push([r,{to:s,reducer:a}])}function DE(e,t,r,s){e.nodes[t].shortcuts.push({to:r,reducer:s})}function Ba(e,t,r,s,a){(Object.prototype.hasOwnProperty.call(e.nodes[t].statics,r)?e.nodes[t].statics[r]:e.nodes[t].statics[r]=[]).push({to:s,reducer:a})}function Ox(e,t,r,s,a){if(Array.isArray(t)){let[n,...c]=t;return e[n](r,s,a,...c)}else return e[t](r,s,a)}var ere,c9e,i_,Vl,s_,Lx,Mx=Ze(()=>{Px();kx();ere={candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,path:[],positionals:[],options:[],remainder:null,selectedIndex:Td,partial:!1,tokens:[]};c9e={always:()=>!0,isOptionLike:(e,t)=>!e.ignoreOptions&&t!=="-"&&t.startsWith("-"),isNotOptionLike:(e,t)=>e.ignoreOptions||t==="-"||!t.startsWith("-"),isOption:(e,t,r,s)=>!e.ignoreOptions&&t===s,isBatchOption:(e,t,r,s)=>!e.ignoreOptions&&Vte.test(t)&&[...t.slice(1)].every(a=>s.has(`-${a}`)),isBoundOption:(e,t,r,s,a)=>{let n=t.match(WU);return!e.ignoreOptions&&!!n&&bx.test(n[1])&&s.has(n[1])&&a.filter(c=>c.nameSet.includes(n[1])).every(c=>c.allowBinding)},isNegatedOption:(e,t,r,s)=>!e.ignoreOptions&&t===`--no-${s.slice(2)}`,isHelp:(e,t)=>!e.ignoreOptions&&qU.test(t),isUnsupportedOption:(e,t,r,s)=>!e.ignoreOptions&&t.startsWith("-")&&bx.test(t)&&!s.has(t),isInvalidOption:(e,t)=>!e.ignoreOptions&&t.startsWith("-")&&!bx.test(t)},i_={setCandidateState:(e,t,r,s)=>({...e,...s}),setSelectedIndex:(e,t,r,s)=>({...e,selectedIndex:s}),setPartialIndex:(e,t,r,s)=>({...e,selectedIndex:s,partial:!0}),pushBatch:(e,t,r,s)=>{let a=e.options.slice(),n=e.tokens.slice();for(let c=1;c{let[,s,a]=t.match(WU),n=e.options.concat({name:s,value:a}),c=e.tokens.concat([{segmentIndex:r,type:"option",slice:[0,s.length],option:s},{segmentIndex:r,type:"assign",slice:[s.length,s.length+1]},{segmentIndex:r,type:"value",slice:[s.length+1,s.length+a.length+1]}]);return{...e,options:n,tokens:c}},pushPath:(e,t,r)=>{let s=e.path.concat(t),a=e.tokens.concat({segmentIndex:r,type:"path"});return{...e,path:s,tokens:a}},pushPositional:(e,t,r)=>{let s=e.positionals.concat({value:t,extra:!1}),a=e.tokens.concat({segmentIndex:r,type:"positional"});return{...e,positionals:s,tokens:a}},pushExtra:(e,t,r)=>{let s=e.positionals.concat({value:t,extra:!0}),a=e.tokens.concat({segmentIndex:r,type:"positional"});return{...e,positionals:s,tokens:a}},pushExtraNoLimits:(e,t,r)=>{let s=e.positionals.concat({value:t,extra:Vl}),a=e.tokens.concat({segmentIndex:r,type:"positional"});return{...e,positionals:s,tokens:a}},pushTrue:(e,t,r,s)=>{let a=e.options.concat({name:s,value:!0}),n=e.tokens.concat({segmentIndex:r,type:"option",option:s});return{...e,options:a,tokens:n}},pushFalse:(e,t,r,s)=>{let a=e.options.concat({name:s,value:!1}),n=e.tokens.concat({segmentIndex:r,type:"option",option:s});return{...e,options:a,tokens:n}},pushUndefined:(e,t,r,s)=>{let a=e.options.concat({name:t,value:void 0}),n=e.tokens.concat({segmentIndex:r,type:"option",option:t});return{...e,options:a,tokens:n}},pushStringValue:(e,t,r)=>{var s;let a=e.options[e.options.length-1],n=e.options.slice(),c=e.tokens.concat({segmentIndex:r,type:"value"});return a.value=((s=a.value)!==null&&s!==void 0?s:[]).concat([t]),{...e,options:n,tokens:c}},setStringValue:(e,t,r)=>{let s=e.options[e.options.length-1],a=e.options.slice(),n=e.tokens.concat({segmentIndex:r,type:"value"});return s.value=t,{...e,options:a,tokens:n}},inhibateOptions:e=>({...e,ignoreOptions:!0}),useHelp:(e,t,r,s)=>{let[,,a]=t.match(qU);return typeof a<"u"?{...e,options:[{name:"-c",value:String(s)},{name:"-i",value:a}]}:{...e,options:[{name:"-c",value:String(s)}]}},setError:(e,t,r,s)=>t===ni.EndOfInput||t===ni.EndOfPartialInput?{...e,errorMessage:`${s}.`}:{...e,errorMessage:`${s} ("${t}").`},setOptionArityError:(e,t)=>{let r=e.options[e.options.length-1];return{...e,errorMessage:`Not enough arguments to option ${r.name}.`}}},Vl=Symbol(),s_=class{constructor(t,r){this.allOptionNames=new Map,this.arity={leading:[],trailing:[],extra:[],proxy:!1},this.options=[],this.paths=[],this.cliIndex=t,this.cliOpts=r}addPath(t){this.paths.push(t)}setArity({leading:t=this.arity.leading,trailing:r=this.arity.trailing,extra:s=this.arity.extra,proxy:a=this.arity.proxy}){Object.assign(this.arity,{leading:t,trailing:r,extra:s,proxy:a})}addPositional({name:t="arg",required:r=!0}={}){if(!r&&this.arity.extra===Vl)throw new Error("Optional parameters cannot be declared when using .rest() or .proxy()");if(!r&&this.arity.trailing.length>0)throw new Error("Optional parameters cannot be declared after the required trailing positional arguments");!r&&this.arity.extra!==Vl?this.arity.extra.push(t):this.arity.extra!==Vl&&this.arity.extra.length===0?this.arity.leading.push(t):this.arity.trailing.push(t)}addRest({name:t="arg",required:r=0}={}){if(this.arity.extra===Vl)throw new Error("Infinite lists cannot be declared multiple times in the same command");if(this.arity.trailing.length>0)throw new Error("Infinite lists cannot be declared after the required trailing positional arguments");for(let s=0;s1)throw new Error("The arity cannot be higher than 1 when the option only supports the --arg=value syntax");if(!Number.isInteger(s))throw new Error(`The arity must be an integer, got ${s}`);if(s<0)throw new Error(`The arity must be positive, got ${s}`);let f=t.reduce((p,h)=>h.length>p.length?h:p,"");for(let p of t)this.allOptionNames.set(p,f);this.options.push({preferredName:f,nameSet:t,description:r,arity:s,hidden:a,required:n,allowBinding:c})}setContext(t){this.context=t}usage({detailed:t=!0,inlineOptions:r=!0}={}){let s=[this.cliOpts.binaryName],a=[];if(this.paths.length>0&&s.push(...this.paths[0]),t){for(let{preferredName:c,nameSet:f,arity:p,hidden:h,description:E,required:C}of this.options){if(h)continue;let S=[];for(let I=0;I`:`[${x}]`)}s.push(...this.arity.leading.map(c=>`<${c}>`)),this.arity.extra===Vl?s.push("..."):s.push(...this.arity.extra.map(c=>`[${c}]`)),s.push(...this.arity.trailing.map(c=>`<${c}>`))}return{usage:s.join(" "),options:a}}compile(){if(typeof this.context>"u")throw new Error("Assertion failed: No context attached");let t=tre(),r=In.InitialNode,s=this.usage().usage,a=this.options.filter(f=>f.required).map(f=>f.nameSet);r=Fu(t,Wl()),Ba(t,In.InitialNode,ni.StartOfInput,r,["setCandidateState",{candidateUsage:s,requiredOptions:a}]);let n=this.arity.proxy?"always":"isNotOptionLike",c=this.paths.length>0?this.paths:[[]];for(let f of c){let p=r;if(f.length>0){let S=Fu(t,Wl());DE(t,p,S),this.registerOptions(t,S),p=S}for(let S=0;S0||!this.arity.proxy){let S=Fu(t,Wl());qs(t,p,"isHelp",S,["useHelp",this.cliIndex]),qs(t,S,"always",S,"pushExtra"),Ba(t,S,ni.EndOfInput,In.SuccessNode,["setSelectedIndex",Td]),this.registerOptions(t,p)}this.arity.leading.length>0&&(Ba(t,p,ni.EndOfInput,In.ErrorNode,["setError","Not enough positional arguments"]),Ba(t,p,ni.EndOfPartialInput,In.SuccessNode,["setPartialIndex",this.cliIndex]));let h=p;for(let S=0;S0||S+1!==this.arity.leading.length)&&(Ba(t,x,ni.EndOfInput,In.ErrorNode,["setError","Not enough positional arguments"]),Ba(t,x,ni.EndOfPartialInput,In.SuccessNode,["setPartialIndex",this.cliIndex])),qs(t,h,"isNotOptionLike",x,"pushPositional"),h=x}let E=h;if(this.arity.extra===Vl||this.arity.extra.length>0){let S=Fu(t,Wl());if(DE(t,h,S),this.arity.extra===Vl){let x=Fu(t,Wl());this.arity.proxy||this.registerOptions(t,x),qs(t,h,n,x,"pushExtraNoLimits"),qs(t,x,n,x,"pushExtraNoLimits"),DE(t,x,S)}else for(let x=0;x0)&&this.registerOptions(t,I),qs(t,E,n,I,"pushExtra"),DE(t,I,S),E=I}E=S}this.arity.trailing.length>0&&(Ba(t,E,ni.EndOfInput,In.ErrorNode,["setError","Not enough positional arguments"]),Ba(t,E,ni.EndOfPartialInput,In.SuccessNode,["setPartialIndex",this.cliIndex]));let C=E;for(let S=0;S=0&&t{let c=n?ni.EndOfPartialInput:ni.EndOfInput;return i9e(s,a,{endToken:c})}}}}});function sre(){return Ux.default&&"getColorDepth"in Ux.default.WriteStream.prototype?Ux.default.WriteStream.prototype.getColorDepth():process.env.FORCE_COLOR==="0"?1:process.env.FORCE_COLOR==="1"||typeof process.stdout<"u"&&process.stdout.isTTY?8:1}function ore(e){let t=ire;if(typeof t>"u"){if(e.stdout===process.stdout&&e.stderr===process.stderr)return null;let{AsyncLocalStorage:r}=Ie("async_hooks");t=ire=new r;let s=process.stdout._write;process.stdout._write=function(n,c,f){let p=t.getStore();return typeof p>"u"?s.call(this,n,c,f):p.stdout.write(n,c,f)};let a=process.stderr._write;process.stderr._write=function(n,c,f){let p=t.getStore();return typeof p>"u"?a.call(this,n,c,f):p.stderr.write(n,c,f)}}return r=>t.run(e,r)}var Ux,ire,are=Ze(()=>{Ux=et(Ie("tty"),1)});var _x,lre=Ze(()=>{s0();_x=class e extends at{constructor(t){super(),this.contexts=t,this.commands=[]}static from(t,r){let s=new e(r);s.path=t.path;for(let a of t.options)switch(a.name){case"-c":s.commands.push(Number(a.value));break;case"-i":s.index=Number(a.value);break}return s}async execute(){let t=this.commands;if(typeof this.index<"u"&&this.index>=0&&this.index1){this.context.stdout.write(`Multiple commands match your selection: -`),this.context.stdout.write(` -`);let r=0;for(let s of this.commands)this.context.stdout.write(this.cli.usage(this.contexts[s].commandClass,{prefix:`${r++}. `.padStart(5)}));this.context.stdout.write(` -`),this.context.stdout.write(`Run again with -h= to see the longer details of any of those commands. -`)}}}});async function fre(...e){let{resolvedOptions:t,resolvedCommandClasses:r,resolvedArgv:s,resolvedContext:a}=pre(e);return va.from(r,t).runExit(s,a)}async function Are(...e){let{resolvedOptions:t,resolvedCommandClasses:r,resolvedArgv:s,resolvedContext:a}=pre(e);return va.from(r,t).run(s,a)}function pre(e){let t,r,s,a;switch(typeof process<"u"&&typeof process.argv<"u"&&(s=process.argv.slice(2)),e.length){case 1:r=e[0];break;case 2:e[0]&&e[0].prototype instanceof at||Array.isArray(e[0])?(r=e[0],Array.isArray(e[1])?s=e[1]:a=e[1]):(t=e[0],r=e[1]);break;case 3:Array.isArray(e[2])?(t=e[0],r=e[1],s=e[2]):e[0]&&e[0].prototype instanceof at||Array.isArray(e[0])?(r=e[0],s=e[1],a=e[2]):(t=e[0],r=e[1],a=e[2]);break;default:t=e[0],r=e[1],s=e[2],a=e[3];break}if(typeof s>"u")throw new Error("The argv parameter must be provided when running Clipanion outside of a Node context");return{resolvedOptions:t,resolvedCommandClasses:r,resolvedArgv:s,resolvedContext:a}}function ure(e){return e()}var cre,va,hre=Ze(()=>{Px();Mx();JU();are();s0();lre();cre=Symbol("clipanion/errorCommand");va=class e{constructor({binaryLabel:t,binaryName:r="...",binaryVersion:s,enableCapture:a=!1,enableColors:n}={}){this.registrations=new Map,this.builder=new Lx({binaryName:r}),this.binaryLabel=t,this.binaryName=r,this.binaryVersion=s,this.enableCapture=a,this.enableColors=n}static from(t,r={}){let s=new e(r),a=Array.isArray(t)?t:[t];for(let n of a)s.register(n);return s}register(t){var r;let s=new Map,a=new t;for(let p in a){let h=a[p];typeof h=="object"&&h!==null&&h[at.isOption]&&s.set(p,h)}let n=this.builder.command(),c=n.cliIndex,f=(r=t.paths)!==null&&r!==void 0?r:a.paths;if(typeof f<"u")for(let p of f)n.addPath(p);this.registrations.set(t,{specs:s,builder:n,index:c});for(let[p,{definition:h}]of s.entries())h(n,p);n.setContext({commandClass:t})}process(t,r){let{input:s,context:a,partial:n}=typeof t=="object"&&Array.isArray(t)?{input:t,context:r}:t,{contexts:c,process:f}=this.builder.compile(),p=f(s,{partial:n}),h={...e.defaultContext,...a};switch(p.selectedIndex){case Td:{let E=_x.from(p,c);return E.context=h,E.tokens=p.tokens,E}default:{let{commandClass:E}=c[p.selectedIndex],C=this.registrations.get(E);if(typeof C>"u")throw new Error("Assertion failed: Expected the command class to have been registered.");let S=new E;S.context=h,S.tokens=p.tokens,S.path=p.path;try{for(let[x,{transformer:I}]of C.specs.entries())S[x]=I(C.builder,x,p,h);return S}catch(x){throw x[cre]=S,x}}break}}async run(t,r){var s,a;let n,c={...e.defaultContext,...r},f=(s=this.enableColors)!==null&&s!==void 0?s:c.colorDepth>1;if(!Array.isArray(t))n=t;else try{n=this.process(t,c)}catch(E){return c.stdout.write(this.error(E,{colored:f})),1}if(n.help)return c.stdout.write(this.usage(n,{colored:f,detailed:!0})),0;n.context=c,n.cli={binaryLabel:this.binaryLabel,binaryName:this.binaryName,binaryVersion:this.binaryVersion,enableCapture:this.enableCapture,enableColors:this.enableColors,definitions:()=>this.definitions(),definition:E=>this.definition(E),error:(E,C)=>this.error(E,C),format:E=>this.format(E),process:(E,C)=>this.process(E,{...c,...C}),run:(E,C)=>this.run(E,{...c,...C}),usage:(E,C)=>this.usage(E,C)};let p=this.enableCapture&&(a=ore(c))!==null&&a!==void 0?a:ure,h;try{h=await p(()=>n.validateAndExecute().catch(E=>n.catch(E).then(()=>0)))}catch(E){return c.stdout.write(this.error(E,{colored:f,command:n})),1}return h}async runExit(t,r){process.exitCode=await this.run(t,r)}definition(t,{colored:r=!1}={}){if(!t.usage)return null;let{usage:s}=this.getUsageByRegistration(t,{detailed:!1}),{usage:a,options:n}=this.getUsageByRegistration(t,{detailed:!0,inlineOptions:!1}),c=typeof t.usage.category<"u"?Vo(t.usage.category,{format:this.format(r),paragraphs:!1}):void 0,f=typeof t.usage.description<"u"?Vo(t.usage.description,{format:this.format(r),paragraphs:!1}):void 0,p=typeof t.usage.details<"u"?Vo(t.usage.details,{format:this.format(r),paragraphs:!0}):void 0,h=typeof t.usage.examples<"u"?t.usage.examples.map(([E,C])=>[Vo(E,{format:this.format(r),paragraphs:!1}),C.replace(/\$0/g,this.binaryName)]):void 0;return{path:s,usage:a,category:c,description:f,details:p,examples:h,options:n}}definitions({colored:t=!1}={}){let r=[];for(let s of this.registrations.keys()){let a=this.definition(s,{colored:t});a&&r.push(a)}return r}usage(t=null,{colored:r,detailed:s=!1,prefix:a="$ "}={}){var n;if(t===null){for(let p of this.registrations.keys()){let h=p.paths,E=typeof p.usage<"u";if(!h||h.length===0||h.length===1&&h[0].length===0||((n=h?.some(x=>x.length===0))!==null&&n!==void 0?n:!1))if(t){t=null;break}else t=p;else if(E){t=null;continue}}t&&(s=!0)}let c=t!==null&&t instanceof at?t.constructor:t,f="";if(c)if(s){let{description:p="",details:h="",examples:E=[]}=c.usage||{};p!==""&&(f+=Vo(p,{format:this.format(r),paragraphs:!1}).replace(/^./,x=>x.toUpperCase()),f+=` -`),(h!==""||E.length>0)&&(f+=`${this.format(r).header("Usage")} -`,f+=` -`);let{usage:C,options:S}=this.getUsageByRegistration(c,{inlineOptions:!1});if(f+=`${this.format(r).bold(a)}${C} -`,S.length>0){f+=` -`,f+=`${this.format(r).header("Options")} -`;let x=S.reduce((I,T)=>Math.max(I,T.definition.length),0);f+=` -`;for(let{definition:I,description:T}of S)f+=` ${this.format(r).bold(I.padEnd(x))} ${Vo(T,{format:this.format(r),paragraphs:!1})}`}if(h!==""&&(f+=` -`,f+=`${this.format(r).header("Details")} -`,f+=` -`,f+=Vo(h,{format:this.format(r),paragraphs:!0})),E.length>0){f+=` -`,f+=`${this.format(r).header("Examples")} -`;for(let[x,I]of E)f+=` -`,f+=Vo(x,{format:this.format(r),paragraphs:!1}),f+=`${I.replace(/^/m,` ${this.format(r).bold(a)}`).replace(/\$0/g,this.binaryName)} -`}}else{let{usage:p}=this.getUsageByRegistration(c);f+=`${this.format(r).bold(a)}${p} -`}else{let p=new Map;for(let[S,{index:x}]of this.registrations.entries()){if(typeof S.usage>"u")continue;let I=typeof S.usage.category<"u"?Vo(S.usage.category,{format:this.format(r),paragraphs:!1}):null,T=p.get(I);typeof T>"u"&&p.set(I,T=[]);let{usage:O}=this.getUsageByIndex(x);T.push({commandClass:S,usage:O})}let h=Array.from(p.keys()).sort((S,x)=>S===null?-1:x===null?1:S.localeCompare(x,"en",{usage:"sort",caseFirst:"upper"})),E=typeof this.binaryLabel<"u",C=typeof this.binaryVersion<"u";E||C?(E&&C?f+=`${this.format(r).header(`${this.binaryLabel} - ${this.binaryVersion}`)} - -`:E?f+=`${this.format(r).header(`${this.binaryLabel}`)} -`:f+=`${this.format(r).header(`${this.binaryVersion}`)} -`,f+=` ${this.format(r).bold(a)}${this.binaryName} -`):f+=`${this.format(r).bold(a)}${this.binaryName} -`;for(let S of h){let x=p.get(S).slice().sort((T,O)=>T.usage.localeCompare(O.usage,"en",{usage:"sort",caseFirst:"upper"})),I=S!==null?S.trim():"General commands";f+=` -`,f+=`${this.format(r).header(`${I}`)} -`;for(let{commandClass:T,usage:O}of x){let U=T.usage.description||"undocumented";f+=` -`,f+=` ${this.format(r).bold(O)} -`,f+=` ${Vo(U,{format:this.format(r),paragraphs:!1})}`}}f+=` -`,f+=Vo("You can also print more details about any of these commands by calling them with the `-h,--help` flag right after the command name.",{format:this.format(r),paragraphs:!0})}return f}error(t,r){var s,{colored:a,command:n=(s=t[cre])!==null&&s!==void 0?s:null}=r===void 0?{}:r;(!t||typeof t!="object"||!("stack"in t))&&(t=new Error(`Execution failed with a non-error rejection (rejected value: ${JSON.stringify(t)})`));let c="",f=t.name.replace(/([a-z])([A-Z])/g,"$1 $2");f==="Error"&&(f="Internal Error"),c+=`${this.format(a).error(f)}: ${t.message} -`;let p=t.clipanion;return typeof p<"u"?p.type==="usage"&&(c+=` -`,c+=this.usage(n)):t.stack&&(c+=`${t.stack.replace(/^.*\n/,"")} -`),c}format(t){var r;return((r=t??this.enableColors)!==null&&r!==void 0?r:e.defaultContext.colorDepth>1)?Yte:Kte}getUsageByRegistration(t,r){let s=this.registrations.get(t);if(typeof s>"u")throw new Error("Assertion failed: Unregistered command");return this.getUsageByIndex(s.index,r)}getUsageByIndex(t,r){return this.builder.getBuilderByIndex(t).usage(r)}};va.defaultContext={env:process.env,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr,colorDepth:sre()}});var KB,gre=Ze(()=>{s0();KB=class extends at{async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.definitions(),null,2)} -`)}};KB.paths=[["--clipanion=definitions"]]});var JB,dre=Ze(()=>{s0();JB=class extends at{async execute(){this.context.stdout.write(this.cli.usage())}};JB.paths=[["-h"],["--help"]]});function Hx(e={}){return wa({definition(t,r){var s;t.addProxy({name:(s=e.name)!==null&&s!==void 0?s:r,required:e.required})},transformer(t,r,s){return s.positionals.map(({value:a})=>a)}})}var o_=Ze(()=>{wp()});var zB,mre=Ze(()=>{s0();o_();zB=class extends at{constructor(){super(...arguments),this.args=Hx()}async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.process(this.args).tokens,null,2)} -`)}};zB.paths=[["--clipanion=tokens"]]});var ZB,yre=Ze(()=>{s0();ZB=class extends at{async execute(){var t;this.context.stdout.write(`${(t=this.cli.binaryVersion)!==null&&t!==void 0?t:""} -`)}};ZB.paths=[["-v"],["--version"]]});var a_={};Yt(a_,{DefinitionsCommand:()=>KB,HelpCommand:()=>JB,TokensCommand:()=>zB,VersionCommand:()=>ZB});var Ere=Ze(()=>{gre();dre();mre();yre()});function Ire(e,t,r){let[s,a]=Wf(t,r??{}),{arity:n=1}=a,c=e.split(","),f=new Set(c);return wa({definition(p){p.addOption({names:c,arity:n,hidden:a?.hidden,description:a?.description,required:a.required})},transformer(p,h,E){let C,S=typeof s<"u"?[...s]:void 0;for(let{name:x,value:I}of E.options)f.has(x)&&(C=x,S=S??[],S.push(I));return typeof S<"u"?Fd(C??h,S,a.validator):S}})}var Cre=Ze(()=>{wp()});function wre(e,t,r){let[s,a]=Wf(t,r??{}),n=e.split(","),c=new Set(n);return wa({definition(f){f.addOption({names:n,allowBinding:!1,arity:0,hidden:a.hidden,description:a.description,required:a.required})},transformer(f,p,h){let E=s;for(let{name:C,value:S}of h.options)c.has(C)&&(E=S);return E}})}var Bre=Ze(()=>{wp()});function vre(e,t,r){let[s,a]=Wf(t,r??{}),n=e.split(","),c=new Set(n);return wa({definition(f){f.addOption({names:n,allowBinding:!1,arity:0,hidden:a.hidden,description:a.description,required:a.required})},transformer(f,p,h){let E=s;for(let{name:C,value:S}of h.options)c.has(C)&&(E??(E=0),S?E+=1:E=0);return E}})}var Sre=Ze(()=>{wp()});function Dre(e={}){return wa({definition(t,r){var s;t.addRest({name:(s=e.name)!==null&&s!==void 0?s:r,required:e.required})},transformer(t,r,s){let a=c=>{let f=s.positionals[c];return f.extra===Vl||f.extra===!1&&cc)}})}var bre=Ze(()=>{Mx();wp()});function u9e(e,t,r){let[s,a]=Wf(t,r??{}),{arity:n=1}=a,c=e.split(","),f=new Set(c);return wa({definition(p){p.addOption({names:c,arity:a.tolerateBoolean?0:n,hidden:a.hidden,description:a.description,required:a.required})},transformer(p,h,E,C){let S,x=s;typeof a.env<"u"&&C.env[a.env]&&(S=a.env,x=C.env[a.env]);for(let{name:I,value:T}of E.options)f.has(I)&&(S=I,x=T);return typeof x=="string"?Fd(S??h,x,a.validator):x}})}function f9e(e={}){let{required:t=!0}=e;return wa({definition(r,s){var a;r.addPositional({name:(a=e.name)!==null&&a!==void 0?a:s,required:e.required})},transformer(r,s,a){var n;for(let c=0;c{Mx();wp()});var he={};Yt(he,{Array:()=>Ire,Boolean:()=>wre,Counter:()=>vre,Proxy:()=>Hx,Rest:()=>Dre,String:()=>Pre,applyValidator:()=>Fd,cleanValidationError:()=>Qx,formatError:()=>jB,isOptionSymbol:()=>HB,makeCommandOption:()=>wa,rerouteArguments:()=>Wf});var kre=Ze(()=>{wp();o_();Cre();Bre();Sre();bre();xre()});var XB={};Yt(XB,{Builtins:()=>a_,Cli:()=>va,Command:()=>at,Option:()=>he,UsageError:()=>st,formatMarkdownish:()=>Vo,run:()=>Are,runExit:()=>fre});var Vt=Ze(()=>{kx();JU();s0();hre();Ere();kre()});var Qre=G((akt,A9e)=>{A9e.exports={name:"dotenv",version:"16.3.1",description:"Loads environment variables from .env file",main:"lib/main.js",types:"lib/main.d.ts",exports:{".":{types:"./lib/main.d.ts",require:"./lib/main.js",default:"./lib/main.js"},"./config":"./config.js","./config.js":"./config.js","./lib/env-options":"./lib/env-options.js","./lib/env-options.js":"./lib/env-options.js","./lib/cli-options":"./lib/cli-options.js","./lib/cli-options.js":"./lib/cli-options.js","./package.json":"./package.json"},scripts:{"dts-check":"tsc --project tests/types/tsconfig.json",lint:"standard","lint-readme":"standard-markdown",pretest:"npm run lint && npm run dts-check",test:"tap tests/*.js --100 -Rspec",prerelease:"npm test",release:"standard-version"},repository:{type:"git",url:"git://github.com/motdotla/dotenv.git"},funding:"https://github.com/motdotla/dotenv?sponsor=1",keywords:["dotenv","env",".env","environment","variables","config","settings"],readmeFilename:"README.md",license:"BSD-2-Clause",devDependencies:{"@definitelytyped/dtslint":"^0.0.133","@types/node":"^18.11.3",decache:"^4.6.1",sinon:"^14.0.1",standard:"^17.0.0","standard-markdown":"^7.1.0","standard-version":"^9.5.0",tap:"^16.3.0",tar:"^6.1.11",typescript:"^4.8.4"},engines:{node:">=12"},browser:{fs:!1}}});var Nre=G((lkt,Bp)=>{var Rre=Ie("fs"),c_=Ie("path"),p9e=Ie("os"),h9e=Ie("crypto"),g9e=Qre(),u_=g9e.version,d9e=/(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/mg;function m9e(e){let t={},r=e.toString();r=r.replace(/\r\n?/mg,` -`);let s;for(;(s=d9e.exec(r))!=null;){let a=s[1],n=s[2]||"";n=n.trim();let c=n[0];n=n.replace(/^(['"`])([\s\S]*)\1$/mg,"$2"),c==='"'&&(n=n.replace(/\\n/g,` -`),n=n.replace(/\\r/g,"\r")),t[a]=n}return t}function y9e(e){let t=Fre(e),r=Ws.configDotenv({path:t});if(!r.parsed)throw new Error(`MISSING_DATA: Cannot parse ${t} for an unknown reason`);let s=Tre(e).split(","),a=s.length,n;for(let c=0;c=a)throw f}return Ws.parse(n)}function E9e(e){console.log(`[dotenv@${u_}][INFO] ${e}`)}function I9e(e){console.log(`[dotenv@${u_}][WARN] ${e}`)}function l_(e){console.log(`[dotenv@${u_}][DEBUG] ${e}`)}function Tre(e){return e&&e.DOTENV_KEY&&e.DOTENV_KEY.length>0?e.DOTENV_KEY:process.env.DOTENV_KEY&&process.env.DOTENV_KEY.length>0?process.env.DOTENV_KEY:""}function C9e(e,t){let r;try{r=new URL(t)}catch(f){throw f.code==="ERR_INVALID_URL"?new Error("INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenv.org/vault/.env.vault?environment=development"):f}let s=r.password;if(!s)throw new Error("INVALID_DOTENV_KEY: Missing key part");let a=r.searchParams.get("environment");if(!a)throw new Error("INVALID_DOTENV_KEY: Missing environment part");let n=`DOTENV_VAULT_${a.toUpperCase()}`,c=e.parsed[n];if(!c)throw new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${n} in your .env.vault file.`);return{ciphertext:c,key:s}}function Fre(e){let t=c_.resolve(process.cwd(),".env");return e&&e.path&&e.path.length>0&&(t=e.path),t.endsWith(".vault")?t:`${t}.vault`}function w9e(e){return e[0]==="~"?c_.join(p9e.homedir(),e.slice(1)):e}function B9e(e){E9e("Loading env from encrypted .env.vault");let t=Ws._parseVault(e),r=process.env;return e&&e.processEnv!=null&&(r=e.processEnv),Ws.populate(r,t,e),{parsed:t}}function v9e(e){let t=c_.resolve(process.cwd(),".env"),r="utf8",s=!!(e&&e.debug);e&&(e.path!=null&&(t=w9e(e.path)),e.encoding!=null&&(r=e.encoding));try{let a=Ws.parse(Rre.readFileSync(t,{encoding:r})),n=process.env;return e&&e.processEnv!=null&&(n=e.processEnv),Ws.populate(n,a,e),{parsed:a}}catch(a){return s&&l_(`Failed to load ${t} ${a.message}`),{error:a}}}function S9e(e){let t=Fre(e);return Tre(e).length===0?Ws.configDotenv(e):Rre.existsSync(t)?Ws._configVault(e):(I9e(`You set DOTENV_KEY but you are missing a .env.vault file at ${t}. Did you forget to build it?`),Ws.configDotenv(e))}function D9e(e,t){let r=Buffer.from(t.slice(-64),"hex"),s=Buffer.from(e,"base64"),a=s.slice(0,12),n=s.slice(-16);s=s.slice(12,-16);try{let c=h9e.createDecipheriv("aes-256-gcm",r,a);return c.setAuthTag(n),`${c.update(s)}${c.final()}`}catch(c){let f=c instanceof RangeError,p=c.message==="Invalid key length",h=c.message==="Unsupported state or unable to authenticate data";if(f||p){let E="INVALID_DOTENV_KEY: It must be 64 characters long (or more)";throw new Error(E)}else if(h){let E="DECRYPTION_FAILED: Please check your DOTENV_KEY";throw new Error(E)}else throw console.error("Error: ",c.code),console.error("Error: ",c.message),c}}function b9e(e,t,r={}){let s=!!(r&&r.debug),a=!!(r&&r.override);if(typeof t!="object")throw new Error("OBJECT_REQUIRED: Please check the processEnv argument being passed to populate");for(let n of Object.keys(t))Object.prototype.hasOwnProperty.call(e,n)?(a===!0&&(e[n]=t[n]),s&&l_(a===!0?`"${n}" is already defined and WAS overwritten`:`"${n}" is already defined and was NOT overwritten`)):e[n]=t[n]}var Ws={configDotenv:v9e,_configVault:B9e,_parseVault:y9e,config:S9e,decrypt:D9e,parse:m9e,populate:b9e};Bp.exports.configDotenv=Ws.configDotenv;Bp.exports._configVault=Ws._configVault;Bp.exports._parseVault=Ws._parseVault;Bp.exports.config=Ws.config;Bp.exports.decrypt=Ws.decrypt;Bp.exports.parse=Ws.parse;Bp.exports.populate=Ws.populate;Bp.exports=Ws});var Lre=G((ckt,Ore)=>{"use strict";Ore.exports=(e,...t)=>new Promise(r=>{r(e(...t))})});var Nd=G((ukt,f_)=>{"use strict";var P9e=Lre(),Mre=e=>{if(e<1)throw new TypeError("Expected `concurrency` to be a number from 1 and up");let t=[],r=0,s=()=>{r--,t.length>0&&t.shift()()},a=(f,p,...h)=>{r++;let E=P9e(f,...h);p(E),E.then(s,s)},n=(f,p,...h)=>{rnew Promise(h=>n(f,h,...p));return Object.defineProperties(c,{activeCount:{get:()=>r},pendingCount:{get:()=>t.length}}),c};f_.exports=Mre;f_.exports.default=Mre});function Kf(e){return`YN${e.toString(10).padStart(4,"0")}`}function jx(e){let t=Number(e.slice(2));if(typeof Br[t]>"u")throw new Error(`Unknown message name: "${e}"`);return t}var Br,Gx=Ze(()=>{Br=(Ue=>(Ue[Ue.UNNAMED=0]="UNNAMED",Ue[Ue.EXCEPTION=1]="EXCEPTION",Ue[Ue.MISSING_PEER_DEPENDENCY=2]="MISSING_PEER_DEPENDENCY",Ue[Ue.CYCLIC_DEPENDENCIES=3]="CYCLIC_DEPENDENCIES",Ue[Ue.DISABLED_BUILD_SCRIPTS=4]="DISABLED_BUILD_SCRIPTS",Ue[Ue.BUILD_DISABLED=5]="BUILD_DISABLED",Ue[Ue.SOFT_LINK_BUILD=6]="SOFT_LINK_BUILD",Ue[Ue.MUST_BUILD=7]="MUST_BUILD",Ue[Ue.MUST_REBUILD=8]="MUST_REBUILD",Ue[Ue.BUILD_FAILED=9]="BUILD_FAILED",Ue[Ue.RESOLVER_NOT_FOUND=10]="RESOLVER_NOT_FOUND",Ue[Ue.FETCHER_NOT_FOUND=11]="FETCHER_NOT_FOUND",Ue[Ue.LINKER_NOT_FOUND=12]="LINKER_NOT_FOUND",Ue[Ue.FETCH_NOT_CACHED=13]="FETCH_NOT_CACHED",Ue[Ue.YARN_IMPORT_FAILED=14]="YARN_IMPORT_FAILED",Ue[Ue.REMOTE_INVALID=15]="REMOTE_INVALID",Ue[Ue.REMOTE_NOT_FOUND=16]="REMOTE_NOT_FOUND",Ue[Ue.RESOLUTION_PACK=17]="RESOLUTION_PACK",Ue[Ue.CACHE_CHECKSUM_MISMATCH=18]="CACHE_CHECKSUM_MISMATCH",Ue[Ue.UNUSED_CACHE_ENTRY=19]="UNUSED_CACHE_ENTRY",Ue[Ue.MISSING_LOCKFILE_ENTRY=20]="MISSING_LOCKFILE_ENTRY",Ue[Ue.WORKSPACE_NOT_FOUND=21]="WORKSPACE_NOT_FOUND",Ue[Ue.TOO_MANY_MATCHING_WORKSPACES=22]="TOO_MANY_MATCHING_WORKSPACES",Ue[Ue.CONSTRAINTS_MISSING_DEPENDENCY=23]="CONSTRAINTS_MISSING_DEPENDENCY",Ue[Ue.CONSTRAINTS_INCOMPATIBLE_DEPENDENCY=24]="CONSTRAINTS_INCOMPATIBLE_DEPENDENCY",Ue[Ue.CONSTRAINTS_EXTRANEOUS_DEPENDENCY=25]="CONSTRAINTS_EXTRANEOUS_DEPENDENCY",Ue[Ue.CONSTRAINTS_INVALID_DEPENDENCY=26]="CONSTRAINTS_INVALID_DEPENDENCY",Ue[Ue.CANT_SUGGEST_RESOLUTIONS=27]="CANT_SUGGEST_RESOLUTIONS",Ue[Ue.FROZEN_LOCKFILE_EXCEPTION=28]="FROZEN_LOCKFILE_EXCEPTION",Ue[Ue.CROSS_DRIVE_VIRTUAL_LOCAL=29]="CROSS_DRIVE_VIRTUAL_LOCAL",Ue[Ue.FETCH_FAILED=30]="FETCH_FAILED",Ue[Ue.DANGEROUS_NODE_MODULES=31]="DANGEROUS_NODE_MODULES",Ue[Ue.NODE_GYP_INJECTED=32]="NODE_GYP_INJECTED",Ue[Ue.AUTHENTICATION_NOT_FOUND=33]="AUTHENTICATION_NOT_FOUND",Ue[Ue.INVALID_CONFIGURATION_KEY=34]="INVALID_CONFIGURATION_KEY",Ue[Ue.NETWORK_ERROR=35]="NETWORK_ERROR",Ue[Ue.LIFECYCLE_SCRIPT=36]="LIFECYCLE_SCRIPT",Ue[Ue.CONSTRAINTS_MISSING_FIELD=37]="CONSTRAINTS_MISSING_FIELD",Ue[Ue.CONSTRAINTS_INCOMPATIBLE_FIELD=38]="CONSTRAINTS_INCOMPATIBLE_FIELD",Ue[Ue.CONSTRAINTS_EXTRANEOUS_FIELD=39]="CONSTRAINTS_EXTRANEOUS_FIELD",Ue[Ue.CONSTRAINTS_INVALID_FIELD=40]="CONSTRAINTS_INVALID_FIELD",Ue[Ue.AUTHENTICATION_INVALID=41]="AUTHENTICATION_INVALID",Ue[Ue.PROLOG_UNKNOWN_ERROR=42]="PROLOG_UNKNOWN_ERROR",Ue[Ue.PROLOG_SYNTAX_ERROR=43]="PROLOG_SYNTAX_ERROR",Ue[Ue.PROLOG_EXISTENCE_ERROR=44]="PROLOG_EXISTENCE_ERROR",Ue[Ue.STACK_OVERFLOW_RESOLUTION=45]="STACK_OVERFLOW_RESOLUTION",Ue[Ue.AUTOMERGE_FAILED_TO_PARSE=46]="AUTOMERGE_FAILED_TO_PARSE",Ue[Ue.AUTOMERGE_IMMUTABLE=47]="AUTOMERGE_IMMUTABLE",Ue[Ue.AUTOMERGE_SUCCESS=48]="AUTOMERGE_SUCCESS",Ue[Ue.AUTOMERGE_REQUIRED=49]="AUTOMERGE_REQUIRED",Ue[Ue.DEPRECATED_CLI_SETTINGS=50]="DEPRECATED_CLI_SETTINGS",Ue[Ue.PLUGIN_NAME_NOT_FOUND=51]="PLUGIN_NAME_NOT_FOUND",Ue[Ue.INVALID_PLUGIN_REFERENCE=52]="INVALID_PLUGIN_REFERENCE",Ue[Ue.CONSTRAINTS_AMBIGUITY=53]="CONSTRAINTS_AMBIGUITY",Ue[Ue.CACHE_OUTSIDE_PROJECT=54]="CACHE_OUTSIDE_PROJECT",Ue[Ue.IMMUTABLE_INSTALL=55]="IMMUTABLE_INSTALL",Ue[Ue.IMMUTABLE_CACHE=56]="IMMUTABLE_CACHE",Ue[Ue.INVALID_MANIFEST=57]="INVALID_MANIFEST",Ue[Ue.PACKAGE_PREPARATION_FAILED=58]="PACKAGE_PREPARATION_FAILED",Ue[Ue.INVALID_RANGE_PEER_DEPENDENCY=59]="INVALID_RANGE_PEER_DEPENDENCY",Ue[Ue.INCOMPATIBLE_PEER_DEPENDENCY=60]="INCOMPATIBLE_PEER_DEPENDENCY",Ue[Ue.DEPRECATED_PACKAGE=61]="DEPRECATED_PACKAGE",Ue[Ue.INCOMPATIBLE_OS=62]="INCOMPATIBLE_OS",Ue[Ue.INCOMPATIBLE_CPU=63]="INCOMPATIBLE_CPU",Ue[Ue.FROZEN_ARTIFACT_EXCEPTION=64]="FROZEN_ARTIFACT_EXCEPTION",Ue[Ue.TELEMETRY_NOTICE=65]="TELEMETRY_NOTICE",Ue[Ue.PATCH_HUNK_FAILED=66]="PATCH_HUNK_FAILED",Ue[Ue.INVALID_CONFIGURATION_VALUE=67]="INVALID_CONFIGURATION_VALUE",Ue[Ue.UNUSED_PACKAGE_EXTENSION=68]="UNUSED_PACKAGE_EXTENSION",Ue[Ue.REDUNDANT_PACKAGE_EXTENSION=69]="REDUNDANT_PACKAGE_EXTENSION",Ue[Ue.AUTO_NM_SUCCESS=70]="AUTO_NM_SUCCESS",Ue[Ue.NM_CANT_INSTALL_EXTERNAL_SOFT_LINK=71]="NM_CANT_INSTALL_EXTERNAL_SOFT_LINK",Ue[Ue.NM_PRESERVE_SYMLINKS_REQUIRED=72]="NM_PRESERVE_SYMLINKS_REQUIRED",Ue[Ue.UPDATE_LOCKFILE_ONLY_SKIP_LINK=73]="UPDATE_LOCKFILE_ONLY_SKIP_LINK",Ue[Ue.NM_HARDLINKS_MODE_DOWNGRADED=74]="NM_HARDLINKS_MODE_DOWNGRADED",Ue[Ue.PROLOG_INSTANTIATION_ERROR=75]="PROLOG_INSTANTIATION_ERROR",Ue[Ue.INCOMPATIBLE_ARCHITECTURE=76]="INCOMPATIBLE_ARCHITECTURE",Ue[Ue.GHOST_ARCHITECTURE=77]="GHOST_ARCHITECTURE",Ue[Ue.RESOLUTION_MISMATCH=78]="RESOLUTION_MISMATCH",Ue[Ue.PROLOG_LIMIT_EXCEEDED=79]="PROLOG_LIMIT_EXCEEDED",Ue[Ue.NETWORK_DISABLED=80]="NETWORK_DISABLED",Ue[Ue.NETWORK_UNSAFE_HTTP=81]="NETWORK_UNSAFE_HTTP",Ue[Ue.RESOLUTION_FAILED=82]="RESOLUTION_FAILED",Ue[Ue.AUTOMERGE_GIT_ERROR=83]="AUTOMERGE_GIT_ERROR",Ue[Ue.CONSTRAINTS_CHECK_FAILED=84]="CONSTRAINTS_CHECK_FAILED",Ue[Ue.UPDATED_RESOLUTION_RECORD=85]="UPDATED_RESOLUTION_RECORD",Ue[Ue.EXPLAIN_PEER_DEPENDENCIES_CTA=86]="EXPLAIN_PEER_DEPENDENCIES_CTA",Ue[Ue.MIGRATION_SUCCESS=87]="MIGRATION_SUCCESS",Ue[Ue.VERSION_NOTICE=88]="VERSION_NOTICE",Ue[Ue.TIPS_NOTICE=89]="TIPS_NOTICE",Ue[Ue.OFFLINE_MODE_ENABLED=90]="OFFLINE_MODE_ENABLED",Ue[Ue.INVALID_PROVENANCE_ENVIRONMENT=91]="INVALID_PROVENANCE_ENVIRONMENT",Ue))(Br||{})});var $B=G((Akt,Ure)=>{var x9e="2.0.0",k9e=Number.MAX_SAFE_INTEGER||9007199254740991,Q9e=16,R9e=250,T9e=["major","premajor","minor","preminor","patch","prepatch","prerelease"];Ure.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:Q9e,MAX_SAFE_BUILD_LENGTH:R9e,MAX_SAFE_INTEGER:k9e,RELEASE_TYPES:T9e,SEMVER_SPEC_VERSION:x9e,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var e2=G((pkt,_re)=>{var F9e=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{};_re.exports=F9e});var bE=G((vp,Hre)=>{var{MAX_SAFE_COMPONENT_LENGTH:A_,MAX_SAFE_BUILD_LENGTH:N9e,MAX_LENGTH:O9e}=$B(),L9e=e2();vp=Hre.exports={};var M9e=vp.re=[],U9e=vp.safeRe=[],rr=vp.src=[],nr=vp.t={},_9e=0,p_="[a-zA-Z0-9-]",H9e=[["\\s",1],["\\d",O9e],[p_,N9e]],j9e=e=>{for(let[t,r]of H9e)e=e.split(`${t}*`).join(`${t}{0,${r}}`).split(`${t}+`).join(`${t}{1,${r}}`);return e},Kr=(e,t,r)=>{let s=j9e(t),a=_9e++;L9e(e,a,t),nr[e]=a,rr[a]=t,M9e[a]=new RegExp(t,r?"g":void 0),U9e[a]=new RegExp(s,r?"g":void 0)};Kr("NUMERICIDENTIFIER","0|[1-9]\\d*");Kr("NUMERICIDENTIFIERLOOSE","\\d+");Kr("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${p_}*`);Kr("MAINVERSION",`(${rr[nr.NUMERICIDENTIFIER]})\\.(${rr[nr.NUMERICIDENTIFIER]})\\.(${rr[nr.NUMERICIDENTIFIER]})`);Kr("MAINVERSIONLOOSE",`(${rr[nr.NUMERICIDENTIFIERLOOSE]})\\.(${rr[nr.NUMERICIDENTIFIERLOOSE]})\\.(${rr[nr.NUMERICIDENTIFIERLOOSE]})`);Kr("PRERELEASEIDENTIFIER",`(?:${rr[nr.NUMERICIDENTIFIER]}|${rr[nr.NONNUMERICIDENTIFIER]})`);Kr("PRERELEASEIDENTIFIERLOOSE",`(?:${rr[nr.NUMERICIDENTIFIERLOOSE]}|${rr[nr.NONNUMERICIDENTIFIER]})`);Kr("PRERELEASE",`(?:-(${rr[nr.PRERELEASEIDENTIFIER]}(?:\\.${rr[nr.PRERELEASEIDENTIFIER]})*))`);Kr("PRERELEASELOOSE",`(?:-?(${rr[nr.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${rr[nr.PRERELEASEIDENTIFIERLOOSE]})*))`);Kr("BUILDIDENTIFIER",`${p_}+`);Kr("BUILD",`(?:\\+(${rr[nr.BUILDIDENTIFIER]}(?:\\.${rr[nr.BUILDIDENTIFIER]})*))`);Kr("FULLPLAIN",`v?${rr[nr.MAINVERSION]}${rr[nr.PRERELEASE]}?${rr[nr.BUILD]}?`);Kr("FULL",`^${rr[nr.FULLPLAIN]}$`);Kr("LOOSEPLAIN",`[v=\\s]*${rr[nr.MAINVERSIONLOOSE]}${rr[nr.PRERELEASELOOSE]}?${rr[nr.BUILD]}?`);Kr("LOOSE",`^${rr[nr.LOOSEPLAIN]}$`);Kr("GTLT","((?:<|>)?=?)");Kr("XRANGEIDENTIFIERLOOSE",`${rr[nr.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);Kr("XRANGEIDENTIFIER",`${rr[nr.NUMERICIDENTIFIER]}|x|X|\\*`);Kr("XRANGEPLAIN",`[v=\\s]*(${rr[nr.XRANGEIDENTIFIER]})(?:\\.(${rr[nr.XRANGEIDENTIFIER]})(?:\\.(${rr[nr.XRANGEIDENTIFIER]})(?:${rr[nr.PRERELEASE]})?${rr[nr.BUILD]}?)?)?`);Kr("XRANGEPLAINLOOSE",`[v=\\s]*(${rr[nr.XRANGEIDENTIFIERLOOSE]})(?:\\.(${rr[nr.XRANGEIDENTIFIERLOOSE]})(?:\\.(${rr[nr.XRANGEIDENTIFIERLOOSE]})(?:${rr[nr.PRERELEASELOOSE]})?${rr[nr.BUILD]}?)?)?`);Kr("XRANGE",`^${rr[nr.GTLT]}\\s*${rr[nr.XRANGEPLAIN]}$`);Kr("XRANGELOOSE",`^${rr[nr.GTLT]}\\s*${rr[nr.XRANGEPLAINLOOSE]}$`);Kr("COERCEPLAIN",`(^|[^\\d])(\\d{1,${A_}})(?:\\.(\\d{1,${A_}}))?(?:\\.(\\d{1,${A_}}))?`);Kr("COERCE",`${rr[nr.COERCEPLAIN]}(?:$|[^\\d])`);Kr("COERCEFULL",rr[nr.COERCEPLAIN]+`(?:${rr[nr.PRERELEASE]})?(?:${rr[nr.BUILD]})?(?:$|[^\\d])`);Kr("COERCERTL",rr[nr.COERCE],!0);Kr("COERCERTLFULL",rr[nr.COERCEFULL],!0);Kr("LONETILDE","(?:~>?)");Kr("TILDETRIM",`(\\s*)${rr[nr.LONETILDE]}\\s+`,!0);vp.tildeTrimReplace="$1~";Kr("TILDE",`^${rr[nr.LONETILDE]}${rr[nr.XRANGEPLAIN]}$`);Kr("TILDELOOSE",`^${rr[nr.LONETILDE]}${rr[nr.XRANGEPLAINLOOSE]}$`);Kr("LONECARET","(?:\\^)");Kr("CARETTRIM",`(\\s*)${rr[nr.LONECARET]}\\s+`,!0);vp.caretTrimReplace="$1^";Kr("CARET",`^${rr[nr.LONECARET]}${rr[nr.XRANGEPLAIN]}$`);Kr("CARETLOOSE",`^${rr[nr.LONECARET]}${rr[nr.XRANGEPLAINLOOSE]}$`);Kr("COMPARATORLOOSE",`^${rr[nr.GTLT]}\\s*(${rr[nr.LOOSEPLAIN]})$|^$`);Kr("COMPARATOR",`^${rr[nr.GTLT]}\\s*(${rr[nr.FULLPLAIN]})$|^$`);Kr("COMPARATORTRIM",`(\\s*)${rr[nr.GTLT]}\\s*(${rr[nr.LOOSEPLAIN]}|${rr[nr.XRANGEPLAIN]})`,!0);vp.comparatorTrimReplace="$1$2$3";Kr("HYPHENRANGE",`^\\s*(${rr[nr.XRANGEPLAIN]})\\s+-\\s+(${rr[nr.XRANGEPLAIN]})\\s*$`);Kr("HYPHENRANGELOOSE",`^\\s*(${rr[nr.XRANGEPLAINLOOSE]})\\s+-\\s+(${rr[nr.XRANGEPLAINLOOSE]})\\s*$`);Kr("STAR","(<|>)?=?\\s*\\*");Kr("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");Kr("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var qx=G((hkt,jre)=>{var G9e=Object.freeze({loose:!0}),q9e=Object.freeze({}),W9e=e=>e?typeof e!="object"?G9e:e:q9e;jre.exports=W9e});var h_=G((gkt,Wre)=>{var Gre=/^[0-9]+$/,qre=(e,t)=>{let r=Gre.test(e),s=Gre.test(t);return r&&s&&(e=+e,t=+t),e===t?0:r&&!s?-1:s&&!r?1:eqre(t,e);Wre.exports={compareIdentifiers:qre,rcompareIdentifiers:V9e}});var Ko=G((dkt,Jre)=>{var Wx=e2(),{MAX_LENGTH:Vre,MAX_SAFE_INTEGER:Vx}=$B(),{safeRe:Yre,t:Kre}=bE(),Y9e=qx(),{compareIdentifiers:PE}=h_(),g_=class e{constructor(t,r){if(r=Y9e(r),t instanceof e){if(t.loose===!!r.loose&&t.includePrerelease===!!r.includePrerelease)return t;t=t.version}else if(typeof t!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof t}".`);if(t.length>Vre)throw new TypeError(`version is longer than ${Vre} characters`);Wx("SemVer",t,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let s=t.trim().match(r.loose?Yre[Kre.LOOSE]:Yre[Kre.FULL]);if(!s)throw new TypeError(`Invalid Version: ${t}`);if(this.raw=t,this.major=+s[1],this.minor=+s[2],this.patch=+s[3],this.major>Vx||this.major<0)throw new TypeError("Invalid major version");if(this.minor>Vx||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>Vx||this.patch<0)throw new TypeError("Invalid patch version");s[4]?this.prerelease=s[4].split(".").map(a=>{if(/^[0-9]+$/.test(a)){let n=+a;if(n>=0&&n=0;)typeof this.prerelease[n]=="number"&&(this.prerelease[n]++,n=-2);if(n===-1){if(r===this.prerelease.join(".")&&s===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(a)}}if(r){let n=[r,a];s===!1&&(n=[r]),PE(this.prerelease[0],r)===0?isNaN(this.prerelease[1])&&(this.prerelease=n):this.prerelease=n}break}default:throw new Error(`invalid increment argument: ${t}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};Jre.exports=g_});var Od=G((mkt,Zre)=>{var zre=Ko(),K9e=(e,t,r=!1)=>{if(e instanceof zre)return e;try{return new zre(e,t)}catch(s){if(!r)return null;throw s}};Zre.exports=K9e});var $re=G((ykt,Xre)=>{var J9e=Od(),z9e=(e,t)=>{let r=J9e(e,t);return r?r.version:null};Xre.exports=z9e});var tne=G((Ekt,ene)=>{var Z9e=Od(),X9e=(e,t)=>{let r=Z9e(e.trim().replace(/^[=v]+/,""),t);return r?r.version:null};ene.exports=X9e});var ine=G((Ikt,nne)=>{var rne=Ko(),$9e=(e,t,r,s,a)=>{typeof r=="string"&&(a=s,s=r,r=void 0);try{return new rne(e instanceof rne?e.version:e,r).inc(t,s,a).version}catch{return null}};nne.exports=$9e});var ane=G((Ckt,one)=>{var sne=Od(),eWe=(e,t)=>{let r=sne(e,null,!0),s=sne(t,null,!0),a=r.compare(s);if(a===0)return null;let n=a>0,c=n?r:s,f=n?s:r,p=!!c.prerelease.length;if(!!f.prerelease.length&&!p)return!f.patch&&!f.minor?"major":c.patch?"patch":c.minor?"minor":"major";let E=p?"pre":"";return r.major!==s.major?E+"major":r.minor!==s.minor?E+"minor":r.patch!==s.patch?E+"patch":"prerelease"};one.exports=eWe});var cne=G((wkt,lne)=>{var tWe=Ko(),rWe=(e,t)=>new tWe(e,t).major;lne.exports=rWe});var fne=G((Bkt,une)=>{var nWe=Ko(),iWe=(e,t)=>new nWe(e,t).minor;une.exports=iWe});var pne=G((vkt,Ane)=>{var sWe=Ko(),oWe=(e,t)=>new sWe(e,t).patch;Ane.exports=oWe});var gne=G((Skt,hne)=>{var aWe=Od(),lWe=(e,t)=>{let r=aWe(e,t);return r&&r.prerelease.length?r.prerelease:null};hne.exports=lWe});var vc=G((Dkt,mne)=>{var dne=Ko(),cWe=(e,t,r)=>new dne(e,r).compare(new dne(t,r));mne.exports=cWe});var Ene=G((bkt,yne)=>{var uWe=vc(),fWe=(e,t,r)=>uWe(t,e,r);yne.exports=fWe});var Cne=G((Pkt,Ine)=>{var AWe=vc(),pWe=(e,t)=>AWe(e,t,!0);Ine.exports=pWe});var Yx=G((xkt,Bne)=>{var wne=Ko(),hWe=(e,t,r)=>{let s=new wne(e,r),a=new wne(t,r);return s.compare(a)||s.compareBuild(a)};Bne.exports=hWe});var Sne=G((kkt,vne)=>{var gWe=Yx(),dWe=(e,t)=>e.sort((r,s)=>gWe(r,s,t));vne.exports=dWe});var bne=G((Qkt,Dne)=>{var mWe=Yx(),yWe=(e,t)=>e.sort((r,s)=>mWe(s,r,t));Dne.exports=yWe});var t2=G((Rkt,Pne)=>{var EWe=vc(),IWe=(e,t,r)=>EWe(e,t,r)>0;Pne.exports=IWe});var Kx=G((Tkt,xne)=>{var CWe=vc(),wWe=(e,t,r)=>CWe(e,t,r)<0;xne.exports=wWe});var d_=G((Fkt,kne)=>{var BWe=vc(),vWe=(e,t,r)=>BWe(e,t,r)===0;kne.exports=vWe});var m_=G((Nkt,Qne)=>{var SWe=vc(),DWe=(e,t,r)=>SWe(e,t,r)!==0;Qne.exports=DWe});var Jx=G((Okt,Rne)=>{var bWe=vc(),PWe=(e,t,r)=>bWe(e,t,r)>=0;Rne.exports=PWe});var zx=G((Lkt,Tne)=>{var xWe=vc(),kWe=(e,t,r)=>xWe(e,t,r)<=0;Tne.exports=kWe});var y_=G((Mkt,Fne)=>{var QWe=d_(),RWe=m_(),TWe=t2(),FWe=Jx(),NWe=Kx(),OWe=zx(),LWe=(e,t,r,s)=>{switch(t){case"===":return typeof e=="object"&&(e=e.version),typeof r=="object"&&(r=r.version),e===r;case"!==":return typeof e=="object"&&(e=e.version),typeof r=="object"&&(r=r.version),e!==r;case"":case"=":case"==":return QWe(e,r,s);case"!=":return RWe(e,r,s);case">":return TWe(e,r,s);case">=":return FWe(e,r,s);case"<":return NWe(e,r,s);case"<=":return OWe(e,r,s);default:throw new TypeError(`Invalid operator: ${t}`)}};Fne.exports=LWe});var One=G((Ukt,Nne)=>{var MWe=Ko(),UWe=Od(),{safeRe:Zx,t:Xx}=bE(),_We=(e,t)=>{if(e instanceof MWe)return e;if(typeof e=="number"&&(e=String(e)),typeof e!="string")return null;t=t||{};let r=null;if(!t.rtl)r=e.match(t.includePrerelease?Zx[Xx.COERCEFULL]:Zx[Xx.COERCE]);else{let p=t.includePrerelease?Zx[Xx.COERCERTLFULL]:Zx[Xx.COERCERTL],h;for(;(h=p.exec(e))&&(!r||r.index+r[0].length!==e.length);)(!r||h.index+h[0].length!==r.index+r[0].length)&&(r=h),p.lastIndex=h.index+h[1].length+h[2].length;p.lastIndex=-1}if(r===null)return null;let s=r[2],a=r[3]||"0",n=r[4]||"0",c=t.includePrerelease&&r[5]?`-${r[5]}`:"",f=t.includePrerelease&&r[6]?`+${r[6]}`:"";return UWe(`${s}.${a}.${n}${c}${f}`,t)};Nne.exports=_We});var Mne=G((_kt,Lne)=>{"use strict";Lne.exports=function(e){e.prototype[Symbol.iterator]=function*(){for(let t=this.head;t;t=t.next)yield t.value}}});var _ne=G((Hkt,Une)=>{"use strict";Une.exports=On;On.Node=Ld;On.create=On;function On(e){var t=this;if(t instanceof On||(t=new On),t.tail=null,t.head=null,t.length=0,e&&typeof e.forEach=="function")e.forEach(function(a){t.push(a)});else if(arguments.length>0)for(var r=0,s=arguments.length;r1)r=t;else if(this.head)s=this.head.next,r=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var a=0;s!==null;a++)r=e(r,s.value,a),s=s.next;return r};On.prototype.reduceReverse=function(e,t){var r,s=this.tail;if(arguments.length>1)r=t;else if(this.tail)s=this.tail.prev,r=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var a=this.length-1;s!==null;a--)r=e(r,s.value,a),s=s.prev;return r};On.prototype.toArray=function(){for(var e=new Array(this.length),t=0,r=this.head;r!==null;t++)e[t]=r.value,r=r.next;return e};On.prototype.toArrayReverse=function(){for(var e=new Array(this.length),t=0,r=this.tail;r!==null;t++)e[t]=r.value,r=r.prev;return e};On.prototype.slice=function(e,t){t=t||this.length,t<0&&(t+=this.length),e=e||0,e<0&&(e+=this.length);var r=new On;if(tthis.length&&(t=this.length);for(var s=0,a=this.head;a!==null&&sthis.length&&(t=this.length);for(var s=this.length,a=this.tail;a!==null&&s>t;s--)a=a.prev;for(;a!==null&&s>e;s--,a=a.prev)r.push(a.value);return r};On.prototype.splice=function(e,t,...r){e>this.length&&(e=this.length-1),e<0&&(e=this.length+e);for(var s=0,a=this.head;a!==null&&s{"use strict";var qWe=_ne(),Md=Symbol("max"),Dp=Symbol("length"),xE=Symbol("lengthCalculator"),n2=Symbol("allowStale"),Ud=Symbol("maxAge"),Sp=Symbol("dispose"),Hne=Symbol("noDisposeOnSet"),Vs=Symbol("lruList"),Nu=Symbol("cache"),Gne=Symbol("updateAgeOnGet"),E_=()=>1,C_=class{constructor(t){if(typeof t=="number"&&(t={max:t}),t||(t={}),t.max&&(typeof t.max!="number"||t.max<0))throw new TypeError("max must be a non-negative number");let r=this[Md]=t.max||1/0,s=t.length||E_;if(this[xE]=typeof s!="function"?E_:s,this[n2]=t.stale||!1,t.maxAge&&typeof t.maxAge!="number")throw new TypeError("maxAge must be a number");this[Ud]=t.maxAge||0,this[Sp]=t.dispose,this[Hne]=t.noDisposeOnSet||!1,this[Gne]=t.updateAgeOnGet||!1,this.reset()}set max(t){if(typeof t!="number"||t<0)throw new TypeError("max must be a non-negative number");this[Md]=t||1/0,r2(this)}get max(){return this[Md]}set allowStale(t){this[n2]=!!t}get allowStale(){return this[n2]}set maxAge(t){if(typeof t!="number")throw new TypeError("maxAge must be a non-negative number");this[Ud]=t,r2(this)}get maxAge(){return this[Ud]}set lengthCalculator(t){typeof t!="function"&&(t=E_),t!==this[xE]&&(this[xE]=t,this[Dp]=0,this[Vs].forEach(r=>{r.length=this[xE](r.value,r.key),this[Dp]+=r.length})),r2(this)}get lengthCalculator(){return this[xE]}get length(){return this[Dp]}get itemCount(){return this[Vs].length}rforEach(t,r){r=r||this;for(let s=this[Vs].tail;s!==null;){let a=s.prev;jne(this,t,s,r),s=a}}forEach(t,r){r=r||this;for(let s=this[Vs].head;s!==null;){let a=s.next;jne(this,t,s,r),s=a}}keys(){return this[Vs].toArray().map(t=>t.key)}values(){return this[Vs].toArray().map(t=>t.value)}reset(){this[Sp]&&this[Vs]&&this[Vs].length&&this[Vs].forEach(t=>this[Sp](t.key,t.value)),this[Nu]=new Map,this[Vs]=new qWe,this[Dp]=0}dump(){return this[Vs].map(t=>$x(this,t)?!1:{k:t.key,v:t.value,e:t.now+(t.maxAge||0)}).toArray().filter(t=>t)}dumpLru(){return this[Vs]}set(t,r,s){if(s=s||this[Ud],s&&typeof s!="number")throw new TypeError("maxAge must be a number");let a=s?Date.now():0,n=this[xE](r,t);if(this[Nu].has(t)){if(n>this[Md])return kE(this,this[Nu].get(t)),!1;let p=this[Nu].get(t).value;return this[Sp]&&(this[Hne]||this[Sp](t,p.value)),p.now=a,p.maxAge=s,p.value=r,this[Dp]+=n-p.length,p.length=n,this.get(t),r2(this),!0}let c=new w_(t,r,n,a,s);return c.length>this[Md]?(this[Sp]&&this[Sp](t,r),!1):(this[Dp]+=c.length,this[Vs].unshift(c),this[Nu].set(t,this[Vs].head),r2(this),!0)}has(t){if(!this[Nu].has(t))return!1;let r=this[Nu].get(t).value;return!$x(this,r)}get(t){return I_(this,t,!0)}peek(t){return I_(this,t,!1)}pop(){let t=this[Vs].tail;return t?(kE(this,t),t.value):null}del(t){kE(this,this[Nu].get(t))}load(t){this.reset();let r=Date.now();for(let s=t.length-1;s>=0;s--){let a=t[s],n=a.e||0;if(n===0)this.set(a.k,a.v);else{let c=n-r;c>0&&this.set(a.k,a.v,c)}}}prune(){this[Nu].forEach((t,r)=>I_(this,r,!1))}},I_=(e,t,r)=>{let s=e[Nu].get(t);if(s){let a=s.value;if($x(e,a)){if(kE(e,s),!e[n2])return}else r&&(e[Gne]&&(s.value.now=Date.now()),e[Vs].unshiftNode(s));return a.value}},$x=(e,t)=>{if(!t||!t.maxAge&&!e[Ud])return!1;let r=Date.now()-t.now;return t.maxAge?r>t.maxAge:e[Ud]&&r>e[Ud]},r2=e=>{if(e[Dp]>e[Md])for(let t=e[Vs].tail;e[Dp]>e[Md]&&t!==null;){let r=t.prev;kE(e,t),t=r}},kE=(e,t)=>{if(t){let r=t.value;e[Sp]&&e[Sp](r.key,r.value),e[Dp]-=r.length,e[Nu].delete(r.key),e[Vs].removeNode(t)}},w_=class{constructor(t,r,s,a,n){this.key=t,this.value=r,this.length=s,this.now=a,this.maxAge=n||0}},jne=(e,t,r,s)=>{let a=r.value;$x(e,a)&&(kE(e,r),e[n2]||(a=void 0)),a&&t.call(s,a.value,a.key,e)};qne.exports=C_});var Sc=G((Gkt,Jne)=>{var B_=class e{constructor(t,r){if(r=VWe(r),t instanceof e)return t.loose===!!r.loose&&t.includePrerelease===!!r.includePrerelease?t:new e(t.raw,r);if(t instanceof v_)return this.raw=t.value,this.set=[[t]],this.format(),this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=t.trim().split(/\s+/).join(" "),this.set=this.raw.split("||").map(s=>this.parseRange(s.trim())).filter(s=>s.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let s=this.set[0];if(this.set=this.set.filter(a=>!Yne(a[0])),this.set.length===0)this.set=[s];else if(this.set.length>1){for(let a of this.set)if(a.length===1&&$We(a[0])){this.set=[a];break}}}this.format()}format(){return this.range=this.set.map(t=>t.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(t){let s=((this.options.includePrerelease&&ZWe)|(this.options.loose&&XWe))+":"+t,a=Vne.get(s);if(a)return a;let n=this.options.loose,c=n?Al[Sa.HYPHENRANGELOOSE]:Al[Sa.HYPHENRANGE];t=t.replace(c,cVe(this.options.includePrerelease)),Si("hyphen replace",t),t=t.replace(Al[Sa.COMPARATORTRIM],KWe),Si("comparator trim",t),t=t.replace(Al[Sa.TILDETRIM],JWe),Si("tilde trim",t),t=t.replace(Al[Sa.CARETTRIM],zWe),Si("caret trim",t);let f=t.split(" ").map(C=>eVe(C,this.options)).join(" ").split(/\s+/).map(C=>lVe(C,this.options));n&&(f=f.filter(C=>(Si("loose invalid filter",C,this.options),!!C.match(Al[Sa.COMPARATORLOOSE])))),Si("range list",f);let p=new Map,h=f.map(C=>new v_(C,this.options));for(let C of h){if(Yne(C))return[C];p.set(C.value,C)}p.size>1&&p.has("")&&p.delete("");let E=[...p.values()];return Vne.set(s,E),E}intersects(t,r){if(!(t instanceof e))throw new TypeError("a Range is required");return this.set.some(s=>Kne(s,r)&&t.set.some(a=>Kne(a,r)&&s.every(n=>a.every(c=>n.intersects(c,r)))))}test(t){if(!t)return!1;if(typeof t=="string")try{t=new YWe(t,this.options)}catch{return!1}for(let r=0;re.value==="<0.0.0-0",$We=e=>e.value==="",Kne=(e,t)=>{let r=!0,s=e.slice(),a=s.pop();for(;r&&s.length;)r=s.every(n=>a.intersects(n,t)),a=s.pop();return r},eVe=(e,t)=>(Si("comp",e,t),e=nVe(e,t),Si("caret",e),e=tVe(e,t),Si("tildes",e),e=sVe(e,t),Si("xrange",e),e=aVe(e,t),Si("stars",e),e),Da=e=>!e||e.toLowerCase()==="x"||e==="*",tVe=(e,t)=>e.trim().split(/\s+/).map(r=>rVe(r,t)).join(" "),rVe=(e,t)=>{let r=t.loose?Al[Sa.TILDELOOSE]:Al[Sa.TILDE];return e.replace(r,(s,a,n,c,f)=>{Si("tilde",e,s,a,n,c,f);let p;return Da(a)?p="":Da(n)?p=`>=${a}.0.0 <${+a+1}.0.0-0`:Da(c)?p=`>=${a}.${n}.0 <${a}.${+n+1}.0-0`:f?(Si("replaceTilde pr",f),p=`>=${a}.${n}.${c}-${f} <${a}.${+n+1}.0-0`):p=`>=${a}.${n}.${c} <${a}.${+n+1}.0-0`,Si("tilde return",p),p})},nVe=(e,t)=>e.trim().split(/\s+/).map(r=>iVe(r,t)).join(" "),iVe=(e,t)=>{Si("caret",e,t);let r=t.loose?Al[Sa.CARETLOOSE]:Al[Sa.CARET],s=t.includePrerelease?"-0":"";return e.replace(r,(a,n,c,f,p)=>{Si("caret",e,a,n,c,f,p);let h;return Da(n)?h="":Da(c)?h=`>=${n}.0.0${s} <${+n+1}.0.0-0`:Da(f)?n==="0"?h=`>=${n}.${c}.0${s} <${n}.${+c+1}.0-0`:h=`>=${n}.${c}.0${s} <${+n+1}.0.0-0`:p?(Si("replaceCaret pr",p),n==="0"?c==="0"?h=`>=${n}.${c}.${f}-${p} <${n}.${c}.${+f+1}-0`:h=`>=${n}.${c}.${f}-${p} <${n}.${+c+1}.0-0`:h=`>=${n}.${c}.${f}-${p} <${+n+1}.0.0-0`):(Si("no pr"),n==="0"?c==="0"?h=`>=${n}.${c}.${f}${s} <${n}.${c}.${+f+1}-0`:h=`>=${n}.${c}.${f}${s} <${n}.${+c+1}.0-0`:h=`>=${n}.${c}.${f} <${+n+1}.0.0-0`),Si("caret return",h),h})},sVe=(e,t)=>(Si("replaceXRanges",e,t),e.split(/\s+/).map(r=>oVe(r,t)).join(" ")),oVe=(e,t)=>{e=e.trim();let r=t.loose?Al[Sa.XRANGELOOSE]:Al[Sa.XRANGE];return e.replace(r,(s,a,n,c,f,p)=>{Si("xRange",e,s,a,n,c,f,p);let h=Da(n),E=h||Da(c),C=E||Da(f),S=C;return a==="="&&S&&(a=""),p=t.includePrerelease?"-0":"",h?a===">"||a==="<"?s="<0.0.0-0":s="*":a&&S?(E&&(c=0),f=0,a===">"?(a=">=",E?(n=+n+1,c=0,f=0):(c=+c+1,f=0)):a==="<="&&(a="<",E?n=+n+1:c=+c+1),a==="<"&&(p="-0"),s=`${a+n}.${c}.${f}${p}`):E?s=`>=${n}.0.0${p} <${+n+1}.0.0-0`:C&&(s=`>=${n}.${c}.0${p} <${n}.${+c+1}.0-0`),Si("xRange return",s),s})},aVe=(e,t)=>(Si("replaceStars",e,t),e.trim().replace(Al[Sa.STAR],"")),lVe=(e,t)=>(Si("replaceGTE0",e,t),e.trim().replace(Al[t.includePrerelease?Sa.GTE0PRE:Sa.GTE0],"")),cVe=e=>(t,r,s,a,n,c,f,p,h,E,C,S,x)=>(Da(s)?r="":Da(a)?r=`>=${s}.0.0${e?"-0":""}`:Da(n)?r=`>=${s}.${a}.0${e?"-0":""}`:c?r=`>=${r}`:r=`>=${r}${e?"-0":""}`,Da(h)?p="":Da(E)?p=`<${+h+1}.0.0-0`:Da(C)?p=`<${h}.${+E+1}.0-0`:S?p=`<=${h}.${E}.${C}-${S}`:e?p=`<${h}.${E}.${+C+1}-0`:p=`<=${p}`,`${r} ${p}`.trim()),uVe=(e,t,r)=>{for(let s=0;s0){let a=e[s].semver;if(a.major===t.major&&a.minor===t.minor&&a.patch===t.patch)return!0}return!1}return!0}});var i2=G((qkt,tie)=>{var s2=Symbol("SemVer ANY"),b_=class e{static get ANY(){return s2}constructor(t,r){if(r=zne(r),t instanceof e){if(t.loose===!!r.loose)return t;t=t.value}t=t.trim().split(/\s+/).join(" "),D_("comparator",t,r),this.options=r,this.loose=!!r.loose,this.parse(t),this.semver===s2?this.value="":this.value=this.operator+this.semver.version,D_("comp",this)}parse(t){let r=this.options.loose?Zne[Xne.COMPARATORLOOSE]:Zne[Xne.COMPARATOR],s=t.match(r);if(!s)throw new TypeError(`Invalid comparator: ${t}`);this.operator=s[1]!==void 0?s[1]:"",this.operator==="="&&(this.operator=""),s[2]?this.semver=new $ne(s[2],this.options.loose):this.semver=s2}toString(){return this.value}test(t){if(D_("Comparator.test",t,this.options.loose),this.semver===s2||t===s2)return!0;if(typeof t=="string")try{t=new $ne(t,this.options)}catch{return!1}return S_(t,this.operator,this.semver,this.options)}intersects(t,r){if(!(t instanceof e))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new eie(t.value,r).test(this.value):t.operator===""?t.value===""?!0:new eie(this.value,r).test(t.semver):(r=zne(r),r.includePrerelease&&(this.value==="<0.0.0-0"||t.value==="<0.0.0-0")||!r.includePrerelease&&(this.value.startsWith("<0.0.0")||t.value.startsWith("<0.0.0"))?!1:!!(this.operator.startsWith(">")&&t.operator.startsWith(">")||this.operator.startsWith("<")&&t.operator.startsWith("<")||this.semver.version===t.semver.version&&this.operator.includes("=")&&t.operator.includes("=")||S_(this.semver,"<",t.semver,r)&&this.operator.startsWith(">")&&t.operator.startsWith("<")||S_(this.semver,">",t.semver,r)&&this.operator.startsWith("<")&&t.operator.startsWith(">")))}};tie.exports=b_;var zne=qx(),{safeRe:Zne,t:Xne}=bE(),S_=y_(),D_=e2(),$ne=Ko(),eie=Sc()});var o2=G((Wkt,rie)=>{var fVe=Sc(),AVe=(e,t,r)=>{try{t=new fVe(t,r)}catch{return!1}return t.test(e)};rie.exports=AVe});var iie=G((Vkt,nie)=>{var pVe=Sc(),hVe=(e,t)=>new pVe(e,t).set.map(r=>r.map(s=>s.value).join(" ").trim().split(" "));nie.exports=hVe});var oie=G((Ykt,sie)=>{var gVe=Ko(),dVe=Sc(),mVe=(e,t,r)=>{let s=null,a=null,n=null;try{n=new dVe(t,r)}catch{return null}return e.forEach(c=>{n.test(c)&&(!s||a.compare(c)===-1)&&(s=c,a=new gVe(s,r))}),s};sie.exports=mVe});var lie=G((Kkt,aie)=>{var yVe=Ko(),EVe=Sc(),IVe=(e,t,r)=>{let s=null,a=null,n=null;try{n=new EVe(t,r)}catch{return null}return e.forEach(c=>{n.test(c)&&(!s||a.compare(c)===1)&&(s=c,a=new yVe(s,r))}),s};aie.exports=IVe});var fie=G((Jkt,uie)=>{var P_=Ko(),CVe=Sc(),cie=t2(),wVe=(e,t)=>{e=new CVe(e,t);let r=new P_("0.0.0");if(e.test(r)||(r=new P_("0.0.0-0"),e.test(r)))return r;r=null;for(let s=0;s{let f=new P_(c.semver.version);switch(c.operator){case">":f.prerelease.length===0?f.patch++:f.prerelease.push(0),f.raw=f.format();case"":case">=":(!n||cie(f,n))&&(n=f);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${c.operator}`)}}),n&&(!r||cie(r,n))&&(r=n)}return r&&e.test(r)?r:null};uie.exports=wVe});var pie=G((zkt,Aie)=>{var BVe=Sc(),vVe=(e,t)=>{try{return new BVe(e,t).range||"*"}catch{return null}};Aie.exports=vVe});var ek=G((Zkt,mie)=>{var SVe=Ko(),die=i2(),{ANY:DVe}=die,bVe=Sc(),PVe=o2(),hie=t2(),gie=Kx(),xVe=zx(),kVe=Jx(),QVe=(e,t,r,s)=>{e=new SVe(e,s),t=new bVe(t,s);let a,n,c,f,p;switch(r){case">":a=hie,n=xVe,c=gie,f=">",p=">=";break;case"<":a=gie,n=kVe,c=hie,f="<",p="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(PVe(e,t,s))return!1;for(let h=0;h{x.semver===DVe&&(x=new die(">=0.0.0")),C=C||x,S=S||x,a(x.semver,C.semver,s)?C=x:c(x.semver,S.semver,s)&&(S=x)}),C.operator===f||C.operator===p||(!S.operator||S.operator===f)&&n(e,S.semver))return!1;if(S.operator===p&&c(e,S.semver))return!1}return!0};mie.exports=QVe});var Eie=G((Xkt,yie)=>{var RVe=ek(),TVe=(e,t,r)=>RVe(e,t,">",r);yie.exports=TVe});var Cie=G(($kt,Iie)=>{var FVe=ek(),NVe=(e,t,r)=>FVe(e,t,"<",r);Iie.exports=NVe});var vie=G((eQt,Bie)=>{var wie=Sc(),OVe=(e,t,r)=>(e=new wie(e,r),t=new wie(t,r),e.intersects(t,r));Bie.exports=OVe});var Die=G((tQt,Sie)=>{var LVe=o2(),MVe=vc();Sie.exports=(e,t,r)=>{let s=[],a=null,n=null,c=e.sort((E,C)=>MVe(E,C,r));for(let E of c)LVe(E,t,r)?(n=E,a||(a=E)):(n&&s.push([a,n]),n=null,a=null);a&&s.push([a,null]);let f=[];for(let[E,C]of s)E===C?f.push(E):!C&&E===c[0]?f.push("*"):C?E===c[0]?f.push(`<=${C}`):f.push(`${E} - ${C}`):f.push(`>=${E}`);let p=f.join(" || "),h=typeof t.raw=="string"?t.raw:String(t);return p.length{var bie=Sc(),k_=i2(),{ANY:x_}=k_,a2=o2(),Q_=vc(),UVe=(e,t,r={})=>{if(e===t)return!0;e=new bie(e,r),t=new bie(t,r);let s=!1;e:for(let a of e.set){for(let n of t.set){let c=HVe(a,n,r);if(s=s||c!==null,c)continue e}if(s)return!1}return!0},_Ve=[new k_(">=0.0.0-0")],Pie=[new k_(">=0.0.0")],HVe=(e,t,r)=>{if(e===t)return!0;if(e.length===1&&e[0].semver===x_){if(t.length===1&&t[0].semver===x_)return!0;r.includePrerelease?e=_Ve:e=Pie}if(t.length===1&&t[0].semver===x_){if(r.includePrerelease)return!0;t=Pie}let s=new Set,a,n;for(let x of e)x.operator===">"||x.operator===">="?a=xie(a,x,r):x.operator==="<"||x.operator==="<="?n=kie(n,x,r):s.add(x.semver);if(s.size>1)return null;let c;if(a&&n){if(c=Q_(a.semver,n.semver,r),c>0)return null;if(c===0&&(a.operator!==">="||n.operator!=="<="))return null}for(let x of s){if(a&&!a2(x,String(a),r)||n&&!a2(x,String(n),r))return null;for(let I of t)if(!a2(x,String(I),r))return!1;return!0}let f,p,h,E,C=n&&!r.includePrerelease&&n.semver.prerelease.length?n.semver:!1,S=a&&!r.includePrerelease&&a.semver.prerelease.length?a.semver:!1;C&&C.prerelease.length===1&&n.operator==="<"&&C.prerelease[0]===0&&(C=!1);for(let x of t){if(E=E||x.operator===">"||x.operator===">=",h=h||x.operator==="<"||x.operator==="<=",a){if(S&&x.semver.prerelease&&x.semver.prerelease.length&&x.semver.major===S.major&&x.semver.minor===S.minor&&x.semver.patch===S.patch&&(S=!1),x.operator===">"||x.operator===">="){if(f=xie(a,x,r),f===x&&f!==a)return!1}else if(a.operator===">="&&!a2(a.semver,String(x),r))return!1}if(n){if(C&&x.semver.prerelease&&x.semver.prerelease.length&&x.semver.major===C.major&&x.semver.minor===C.minor&&x.semver.patch===C.patch&&(C=!1),x.operator==="<"||x.operator==="<="){if(p=kie(n,x,r),p===x&&p!==n)return!1}else if(n.operator==="<="&&!a2(n.semver,String(x),r))return!1}if(!x.operator&&(n||a)&&c!==0)return!1}return!(a&&h&&!n&&c!==0||n&&E&&!a&&c!==0||S||C)},xie=(e,t,r)=>{if(!e)return t;let s=Q_(e.semver,t.semver,r);return s>0?e:s<0||t.operator===">"&&e.operator===">="?t:e},kie=(e,t,r)=>{if(!e)return t;let s=Q_(e.semver,t.semver,r);return s<0?e:s>0||t.operator==="<"&&e.operator==="<="?t:e};Qie.exports=UVe});var pi=G((nQt,Nie)=>{var R_=bE(),Tie=$B(),jVe=Ko(),Fie=h_(),GVe=Od(),qVe=$re(),WVe=tne(),VVe=ine(),YVe=ane(),KVe=cne(),JVe=fne(),zVe=pne(),ZVe=gne(),XVe=vc(),$Ve=Ene(),eYe=Cne(),tYe=Yx(),rYe=Sne(),nYe=bne(),iYe=t2(),sYe=Kx(),oYe=d_(),aYe=m_(),lYe=Jx(),cYe=zx(),uYe=y_(),fYe=One(),AYe=i2(),pYe=Sc(),hYe=o2(),gYe=iie(),dYe=oie(),mYe=lie(),yYe=fie(),EYe=pie(),IYe=ek(),CYe=Eie(),wYe=Cie(),BYe=vie(),vYe=Die(),SYe=Rie();Nie.exports={parse:GVe,valid:qVe,clean:WVe,inc:VVe,diff:YVe,major:KVe,minor:JVe,patch:zVe,prerelease:ZVe,compare:XVe,rcompare:$Ve,compareLoose:eYe,compareBuild:tYe,sort:rYe,rsort:nYe,gt:iYe,lt:sYe,eq:oYe,neq:aYe,gte:lYe,lte:cYe,cmp:uYe,coerce:fYe,Comparator:AYe,Range:pYe,satisfies:hYe,toComparators:gYe,maxSatisfying:dYe,minSatisfying:mYe,minVersion:yYe,validRange:EYe,outside:IYe,gtr:CYe,ltr:wYe,intersects:BYe,simplifyRange:vYe,subset:SYe,SemVer:jVe,re:R_.re,src:R_.src,tokens:R_.t,SEMVER_SPEC_VERSION:Tie.SEMVER_SPEC_VERSION,RELEASE_TYPES:Tie.RELEASE_TYPES,compareIdentifiers:Fie.compareIdentifiers,rcompareIdentifiers:Fie.rcompareIdentifiers}});var Lie=G((iQt,Oie)=>{"use strict";function DYe(e,t){function r(){this.constructor=e}r.prototype=t.prototype,e.prototype=new r}function _d(e,t,r,s){this.message=e,this.expected=t,this.found=r,this.location=s,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,_d)}DYe(_d,Error);_d.buildMessage=function(e,t){var r={literal:function(h){return'"'+a(h.text)+'"'},class:function(h){var E="",C;for(C=0;C0){for(C=1,S=1;C{switch(Fe[1]){case"|":return xe|Fe[3];case"&":return xe&Fe[3];case"^":return xe^Fe[3]}},$)},S="!",x=Ne("!",!1),I=function($){return!$},T="(",O=Ne("(",!1),U=")",Y=Ne(")",!1),te=function($){return $},ie=/^[^ \t\n\r()!|&\^]/,ue=ke([" "," ",` -`,"\r","(",")","!","|","&","^"],!0,!1),ae=function($){return t.queryPattern.test($)},de=function($){return t.checkFn($)},Ae=Re("whitespace"),Ce=/^[ \t\n\r]/,Ee=ke([" "," ",` -`,"\r"],!1,!1),g=0,Se=0,Be=[{line:1,column:1}],me=0,ce=[],X=0,De;if("startRule"in t){if(!(t.startRule in s))throw new Error(`Can't start parsing from rule "`+t.startRule+'".');a=s[t.startRule]}function Qe(){return e.substring(Se,g)}function it(){return Me(Se,g)}function _($,se){throw se=se!==void 0?se:Me(Se,g),b([Re($)],e.substring(Se,g),se)}function tt($,se){throw se=se!==void 0?se:Me(Se,g),w($,se)}function Ne($,se){return{type:"literal",text:$,ignoreCase:se}}function ke($,se,xe){return{type:"class",parts:$,inverted:se,ignoreCase:xe}}function be(){return{type:"any"}}function je(){return{type:"end"}}function Re($){return{type:"other",description:$}}function ct($){var se=Be[$],xe;if(se)return se;for(xe=$-1;!Be[xe];)xe--;for(se=Be[xe],se={line:se.line,column:se.column};xe<$;)e.charCodeAt(xe)===10?(se.line++,se.column=1):se.column++,xe++;return Be[$]=se,se}function Me($,se){var xe=ct($),Fe=ct(se);return{start:{offset:$,line:xe.line,column:xe.column},end:{offset:se,line:Fe.line,column:Fe.column}}}function P($){gme&&(me=g,ce=[]),ce.push($))}function w($,se){return new _d($,null,null,se)}function b($,se,xe){return new _d(_d.buildMessage($,se),$,se,xe)}function y(){var $,se,xe,Fe,ut,Ct,qt,ir;if($=g,se=F(),se!==r){for(xe=[],Fe=g,ut=Z(),ut!==r?(e.charCodeAt(g)===124?(Ct=n,g++):(Ct=r,X===0&&P(c)),Ct===r&&(e.charCodeAt(g)===38?(Ct=f,g++):(Ct=r,X===0&&P(p)),Ct===r&&(e.charCodeAt(g)===94?(Ct=h,g++):(Ct=r,X===0&&P(E)))),Ct!==r?(qt=Z(),qt!==r?(ir=F(),ir!==r?(ut=[ut,Ct,qt,ir],Fe=ut):(g=Fe,Fe=r)):(g=Fe,Fe=r)):(g=Fe,Fe=r)):(g=Fe,Fe=r);Fe!==r;)xe.push(Fe),Fe=g,ut=Z(),ut!==r?(e.charCodeAt(g)===124?(Ct=n,g++):(Ct=r,X===0&&P(c)),Ct===r&&(e.charCodeAt(g)===38?(Ct=f,g++):(Ct=r,X===0&&P(p)),Ct===r&&(e.charCodeAt(g)===94?(Ct=h,g++):(Ct=r,X===0&&P(E)))),Ct!==r?(qt=Z(),qt!==r?(ir=F(),ir!==r?(ut=[ut,Ct,qt,ir],Fe=ut):(g=Fe,Fe=r)):(g=Fe,Fe=r)):(g=Fe,Fe=r)):(g=Fe,Fe=r);xe!==r?(Se=$,se=C(se,xe),$=se):(g=$,$=r)}else g=$,$=r;return $}function F(){var $,se,xe,Fe,ut,Ct;return $=g,e.charCodeAt(g)===33?(se=S,g++):(se=r,X===0&&P(x)),se!==r?(xe=F(),xe!==r?(Se=$,se=I(xe),$=se):(g=$,$=r)):(g=$,$=r),$===r&&($=g,e.charCodeAt(g)===40?(se=T,g++):(se=r,X===0&&P(O)),se!==r?(xe=Z(),xe!==r?(Fe=y(),Fe!==r?(ut=Z(),ut!==r?(e.charCodeAt(g)===41?(Ct=U,g++):(Ct=r,X===0&&P(Y)),Ct!==r?(Se=$,se=te(Fe),$=se):(g=$,$=r)):(g=$,$=r)):(g=$,$=r)):(g=$,$=r)):(g=$,$=r),$===r&&($=z())),$}function z(){var $,se,xe,Fe,ut;if($=g,se=Z(),se!==r){if(xe=g,Fe=[],ie.test(e.charAt(g))?(ut=e.charAt(g),g++):(ut=r,X===0&&P(ue)),ut!==r)for(;ut!==r;)Fe.push(ut),ie.test(e.charAt(g))?(ut=e.charAt(g),g++):(ut=r,X===0&&P(ue));else Fe=r;Fe!==r?xe=e.substring(xe,g):xe=Fe,xe!==r?(Se=g,Fe=ae(xe),Fe?Fe=void 0:Fe=r,Fe!==r?(Se=$,se=de(xe),$=se):(g=$,$=r)):(g=$,$=r)}else g=$,$=r;return $}function Z(){var $,se;for(X++,$=[],Ce.test(e.charAt(g))?(se=e.charAt(g),g++):(se=r,X===0&&P(Ee));se!==r;)$.push(se),Ce.test(e.charAt(g))?(se=e.charAt(g),g++):(se=r,X===0&&P(Ee));return X--,$===r&&(se=r,X===0&&P(Ae)),$}if(De=a(),De!==r&&g===e.length)return De;throw De!==r&&g{var{parse:PYe}=Lie();tk.makeParser=(e=/[a-z]+/)=>(t,r)=>PYe(t,{queryPattern:e,checkFn:r});tk.parse=tk.makeParser()});var _ie=G((oQt,Uie)=>{"use strict";Uie.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var T_=G((aQt,jie)=>{var l2=_ie(),Hie={};for(let e of Object.keys(l2))Hie[l2[e]]=e;var hr={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};jie.exports=hr;for(let e of Object.keys(hr)){if(!("channels"in hr[e]))throw new Error("missing channels property: "+e);if(!("labels"in hr[e]))throw new Error("missing channel labels property: "+e);if(hr[e].labels.length!==hr[e].channels)throw new Error("channel and label counts mismatch: "+e);let{channels:t,labels:r}=hr[e];delete hr[e].channels,delete hr[e].labels,Object.defineProperty(hr[e],"channels",{value:t}),Object.defineProperty(hr[e],"labels",{value:r})}hr.rgb.hsl=function(e){let t=e[0]/255,r=e[1]/255,s=e[2]/255,a=Math.min(t,r,s),n=Math.max(t,r,s),c=n-a,f,p;n===a?f=0:t===n?f=(r-s)/c:r===n?f=2+(s-t)/c:s===n&&(f=4+(t-r)/c),f=Math.min(f*60,360),f<0&&(f+=360);let h=(a+n)/2;return n===a?p=0:h<=.5?p=c/(n+a):p=c/(2-n-a),[f,p*100,h*100]};hr.rgb.hsv=function(e){let t,r,s,a,n,c=e[0]/255,f=e[1]/255,p=e[2]/255,h=Math.max(c,f,p),E=h-Math.min(c,f,p),C=function(S){return(h-S)/6/E+1/2};return E===0?(a=0,n=0):(n=E/h,t=C(c),r=C(f),s=C(p),c===h?a=s-r:f===h?a=1/3+t-s:p===h&&(a=2/3+r-t),a<0?a+=1:a>1&&(a-=1)),[a*360,n*100,h*100]};hr.rgb.hwb=function(e){let t=e[0],r=e[1],s=e[2],a=hr.rgb.hsl(e)[0],n=1/255*Math.min(t,Math.min(r,s));return s=1-1/255*Math.max(t,Math.max(r,s)),[a,n*100,s*100]};hr.rgb.cmyk=function(e){let t=e[0]/255,r=e[1]/255,s=e[2]/255,a=Math.min(1-t,1-r,1-s),n=(1-t-a)/(1-a)||0,c=(1-r-a)/(1-a)||0,f=(1-s-a)/(1-a)||0;return[n*100,c*100,f*100,a*100]};function xYe(e,t){return(e[0]-t[0])**2+(e[1]-t[1])**2+(e[2]-t[2])**2}hr.rgb.keyword=function(e){let t=Hie[e];if(t)return t;let r=1/0,s;for(let a of Object.keys(l2)){let n=l2[a],c=xYe(e,n);c.04045?((t+.055)/1.055)**2.4:t/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92,s=s>.04045?((s+.055)/1.055)**2.4:s/12.92;let a=t*.4124+r*.3576+s*.1805,n=t*.2126+r*.7152+s*.0722,c=t*.0193+r*.1192+s*.9505;return[a*100,n*100,c*100]};hr.rgb.lab=function(e){let t=hr.rgb.xyz(e),r=t[0],s=t[1],a=t[2];r/=95.047,s/=100,a/=108.883,r=r>.008856?r**(1/3):7.787*r+16/116,s=s>.008856?s**(1/3):7.787*s+16/116,a=a>.008856?a**(1/3):7.787*a+16/116;let n=116*s-16,c=500*(r-s),f=200*(s-a);return[n,c,f]};hr.hsl.rgb=function(e){let t=e[0]/360,r=e[1]/100,s=e[2]/100,a,n,c;if(r===0)return c=s*255,[c,c,c];s<.5?a=s*(1+r):a=s+r-s*r;let f=2*s-a,p=[0,0,0];for(let h=0;h<3;h++)n=t+1/3*-(h-1),n<0&&n++,n>1&&n--,6*n<1?c=f+(a-f)*6*n:2*n<1?c=a:3*n<2?c=f+(a-f)*(2/3-n)*6:c=f,p[h]=c*255;return p};hr.hsl.hsv=function(e){let t=e[0],r=e[1]/100,s=e[2]/100,a=r,n=Math.max(s,.01);s*=2,r*=s<=1?s:2-s,a*=n<=1?n:2-n;let c=(s+r)/2,f=s===0?2*a/(n+a):2*r/(s+r);return[t,f*100,c*100]};hr.hsv.rgb=function(e){let t=e[0]/60,r=e[1]/100,s=e[2]/100,a=Math.floor(t)%6,n=t-Math.floor(t),c=255*s*(1-r),f=255*s*(1-r*n),p=255*s*(1-r*(1-n));switch(s*=255,a){case 0:return[s,p,c];case 1:return[f,s,c];case 2:return[c,s,p];case 3:return[c,f,s];case 4:return[p,c,s];case 5:return[s,c,f]}};hr.hsv.hsl=function(e){let t=e[0],r=e[1]/100,s=e[2]/100,a=Math.max(s,.01),n,c;c=(2-r)*s;let f=(2-r)*a;return n=r*a,n/=f<=1?f:2-f,n=n||0,c/=2,[t,n*100,c*100]};hr.hwb.rgb=function(e){let t=e[0]/360,r=e[1]/100,s=e[2]/100,a=r+s,n;a>1&&(r/=a,s/=a);let c=Math.floor(6*t),f=1-s;n=6*t-c,c&1&&(n=1-n);let p=r+n*(f-r),h,E,C;switch(c){default:case 6:case 0:h=f,E=p,C=r;break;case 1:h=p,E=f,C=r;break;case 2:h=r,E=f,C=p;break;case 3:h=r,E=p,C=f;break;case 4:h=p,E=r,C=f;break;case 5:h=f,E=r,C=p;break}return[h*255,E*255,C*255]};hr.cmyk.rgb=function(e){let t=e[0]/100,r=e[1]/100,s=e[2]/100,a=e[3]/100,n=1-Math.min(1,t*(1-a)+a),c=1-Math.min(1,r*(1-a)+a),f=1-Math.min(1,s*(1-a)+a);return[n*255,c*255,f*255]};hr.xyz.rgb=function(e){let t=e[0]/100,r=e[1]/100,s=e[2]/100,a,n,c;return a=t*3.2406+r*-1.5372+s*-.4986,n=t*-.9689+r*1.8758+s*.0415,c=t*.0557+r*-.204+s*1.057,a=a>.0031308?1.055*a**(1/2.4)-.055:a*12.92,n=n>.0031308?1.055*n**(1/2.4)-.055:n*12.92,c=c>.0031308?1.055*c**(1/2.4)-.055:c*12.92,a=Math.min(Math.max(0,a),1),n=Math.min(Math.max(0,n),1),c=Math.min(Math.max(0,c),1),[a*255,n*255,c*255]};hr.xyz.lab=function(e){let t=e[0],r=e[1],s=e[2];t/=95.047,r/=100,s/=108.883,t=t>.008856?t**(1/3):7.787*t+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,s=s>.008856?s**(1/3):7.787*s+16/116;let a=116*r-16,n=500*(t-r),c=200*(r-s);return[a,n,c]};hr.lab.xyz=function(e){let t=e[0],r=e[1],s=e[2],a,n,c;n=(t+16)/116,a=r/500+n,c=n-s/200;let f=n**3,p=a**3,h=c**3;return n=f>.008856?f:(n-16/116)/7.787,a=p>.008856?p:(a-16/116)/7.787,c=h>.008856?h:(c-16/116)/7.787,a*=95.047,n*=100,c*=108.883,[a,n,c]};hr.lab.lch=function(e){let t=e[0],r=e[1],s=e[2],a;a=Math.atan2(s,r)*360/2/Math.PI,a<0&&(a+=360);let c=Math.sqrt(r*r+s*s);return[t,c,a]};hr.lch.lab=function(e){let t=e[0],r=e[1],a=e[2]/360*2*Math.PI,n=r*Math.cos(a),c=r*Math.sin(a);return[t,n,c]};hr.rgb.ansi16=function(e,t=null){let[r,s,a]=e,n=t===null?hr.rgb.hsv(e)[2]:t;if(n=Math.round(n/50),n===0)return 30;let c=30+(Math.round(a/255)<<2|Math.round(s/255)<<1|Math.round(r/255));return n===2&&(c+=60),c};hr.hsv.ansi16=function(e){return hr.rgb.ansi16(hr.hsv.rgb(e),e[2])};hr.rgb.ansi256=function(e){let t=e[0],r=e[1],s=e[2];return t===r&&r===s?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(r/255*5)+Math.round(s/255*5)};hr.ansi16.rgb=function(e){let t=e%10;if(t===0||t===7)return e>50&&(t+=3.5),t=t/10.5*255,[t,t,t];let r=(~~(e>50)+1)*.5,s=(t&1)*r*255,a=(t>>1&1)*r*255,n=(t>>2&1)*r*255;return[s,a,n]};hr.ansi256.rgb=function(e){if(e>=232){let n=(e-232)*10+8;return[n,n,n]}e-=16;let t,r=Math.floor(e/36)/5*255,s=Math.floor((t=e%36)/6)/5*255,a=t%6/5*255;return[r,s,a]};hr.rgb.hex=function(e){let r=(((Math.round(e[0])&255)<<16)+((Math.round(e[1])&255)<<8)+(Math.round(e[2])&255)).toString(16).toUpperCase();return"000000".substring(r.length)+r};hr.hex.rgb=function(e){let t=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!t)return[0,0,0];let r=t[0];t[0].length===3&&(r=r.split("").map(f=>f+f).join(""));let s=parseInt(r,16),a=s>>16&255,n=s>>8&255,c=s&255;return[a,n,c]};hr.rgb.hcg=function(e){let t=e[0]/255,r=e[1]/255,s=e[2]/255,a=Math.max(Math.max(t,r),s),n=Math.min(Math.min(t,r),s),c=a-n,f,p;return c<1?f=n/(1-c):f=0,c<=0?p=0:a===t?p=(r-s)/c%6:a===r?p=2+(s-t)/c:p=4+(t-r)/c,p/=6,p%=1,[p*360,c*100,f*100]};hr.hsl.hcg=function(e){let t=e[1]/100,r=e[2]/100,s=r<.5?2*t*r:2*t*(1-r),a=0;return s<1&&(a=(r-.5*s)/(1-s)),[e[0],s*100,a*100]};hr.hsv.hcg=function(e){let t=e[1]/100,r=e[2]/100,s=t*r,a=0;return s<1&&(a=(r-s)/(1-s)),[e[0],s*100,a*100]};hr.hcg.rgb=function(e){let t=e[0]/360,r=e[1]/100,s=e[2]/100;if(r===0)return[s*255,s*255,s*255];let a=[0,0,0],n=t%1*6,c=n%1,f=1-c,p=0;switch(Math.floor(n)){case 0:a[0]=1,a[1]=c,a[2]=0;break;case 1:a[0]=f,a[1]=1,a[2]=0;break;case 2:a[0]=0,a[1]=1,a[2]=c;break;case 3:a[0]=0,a[1]=f,a[2]=1;break;case 4:a[0]=c,a[1]=0,a[2]=1;break;default:a[0]=1,a[1]=0,a[2]=f}return p=(1-r)*s,[(r*a[0]+p)*255,(r*a[1]+p)*255,(r*a[2]+p)*255]};hr.hcg.hsv=function(e){let t=e[1]/100,r=e[2]/100,s=t+r*(1-t),a=0;return s>0&&(a=t/s),[e[0],a*100,s*100]};hr.hcg.hsl=function(e){let t=e[1]/100,s=e[2]/100*(1-t)+.5*t,a=0;return s>0&&s<.5?a=t/(2*s):s>=.5&&s<1&&(a=t/(2*(1-s))),[e[0],a*100,s*100]};hr.hcg.hwb=function(e){let t=e[1]/100,r=e[2]/100,s=t+r*(1-t);return[e[0],(s-t)*100,(1-s)*100]};hr.hwb.hcg=function(e){let t=e[1]/100,s=1-e[2]/100,a=s-t,n=0;return a<1&&(n=(s-a)/(1-a)),[e[0],a*100,n*100]};hr.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]};hr.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]};hr.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]};hr.gray.hsl=function(e){return[0,0,e[0]]};hr.gray.hsv=hr.gray.hsl;hr.gray.hwb=function(e){return[0,100,e[0]]};hr.gray.cmyk=function(e){return[0,0,0,e[0]]};hr.gray.lab=function(e){return[e[0],0,0]};hr.gray.hex=function(e){let t=Math.round(e[0]/100*255)&255,s=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return"000000".substring(s.length)+s};hr.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]}});var qie=G((lQt,Gie)=>{var rk=T_();function kYe(){let e={},t=Object.keys(rk);for(let r=t.length,s=0;s{var F_=T_(),FYe=qie(),QE={},NYe=Object.keys(F_);function OYe(e){let t=function(...r){let s=r[0];return s==null?s:(s.length>1&&(r=s),e(r))};return"conversion"in e&&(t.conversion=e.conversion),t}function LYe(e){let t=function(...r){let s=r[0];if(s==null)return s;s.length>1&&(r=s);let a=e(r);if(typeof a=="object")for(let n=a.length,c=0;c{QE[e]={},Object.defineProperty(QE[e],"channels",{value:F_[e].channels}),Object.defineProperty(QE[e],"labels",{value:F_[e].labels});let t=FYe(e);Object.keys(t).forEach(s=>{let a=t[s];QE[e][s]=LYe(a),QE[e][s].raw=OYe(a)})});Wie.exports=QE});var ik=G((uQt,Zie)=>{"use strict";var Yie=(e,t)=>(...r)=>`\x1B[${e(...r)+t}m`,Kie=(e,t)=>(...r)=>{let s=e(...r);return`\x1B[${38+t};5;${s}m`},Jie=(e,t)=>(...r)=>{let s=e(...r);return`\x1B[${38+t};2;${s[0]};${s[1]};${s[2]}m`},nk=e=>e,zie=(e,t,r)=>[e,t,r],RE=(e,t,r)=>{Object.defineProperty(e,t,{get:()=>{let s=r();return Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0}),s},enumerable:!0,configurable:!0})},N_,TE=(e,t,r,s)=>{N_===void 0&&(N_=Vie());let a=s?10:0,n={};for(let[c,f]of Object.entries(N_)){let p=c==="ansi16"?"ansi":c;c===t?n[p]=e(r,a):typeof f=="object"&&(n[p]=e(f[t],a))}return n};function MYe(){let e=new Map,t={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};t.color.gray=t.color.blackBright,t.bgColor.bgGray=t.bgColor.bgBlackBright,t.color.grey=t.color.blackBright,t.bgColor.bgGrey=t.bgColor.bgBlackBright;for(let[r,s]of Object.entries(t)){for(let[a,n]of Object.entries(s))t[a]={open:`\x1B[${n[0]}m`,close:`\x1B[${n[1]}m`},s[a]=t[a],e.set(n[0],n[1]);Object.defineProperty(t,r,{value:s,enumerable:!1})}return Object.defineProperty(t,"codes",{value:e,enumerable:!1}),t.color.close="\x1B[39m",t.bgColor.close="\x1B[49m",RE(t.color,"ansi",()=>TE(Yie,"ansi16",nk,!1)),RE(t.color,"ansi256",()=>TE(Kie,"ansi256",nk,!1)),RE(t.color,"ansi16m",()=>TE(Jie,"rgb",zie,!1)),RE(t.bgColor,"ansi",()=>TE(Yie,"ansi16",nk,!0)),RE(t.bgColor,"ansi256",()=>TE(Kie,"ansi256",nk,!0)),RE(t.bgColor,"ansi16m",()=>TE(Jie,"rgb",zie,!0)),t}Object.defineProperty(Zie,"exports",{enumerable:!0,get:MYe})});var $ie=G((fQt,Xie)=>{"use strict";Xie.exports=(e,t=process.argv)=>{let r=e.startsWith("-")?"":e.length===1?"-":"--",s=t.indexOf(r+e),a=t.indexOf("--");return s!==-1&&(a===-1||s{"use strict";var UYe=Ie("os"),ese=Ie("tty"),Dc=$ie(),{env:Qs}=process,o0;Dc("no-color")||Dc("no-colors")||Dc("color=false")||Dc("color=never")?o0=0:(Dc("color")||Dc("colors")||Dc("color=true")||Dc("color=always"))&&(o0=1);"FORCE_COLOR"in Qs&&(Qs.FORCE_COLOR==="true"?o0=1:Qs.FORCE_COLOR==="false"?o0=0:o0=Qs.FORCE_COLOR.length===0?1:Math.min(parseInt(Qs.FORCE_COLOR,10),3));function O_(e){return e===0?!1:{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function L_(e,t){if(o0===0)return 0;if(Dc("color=16m")||Dc("color=full")||Dc("color=truecolor"))return 3;if(Dc("color=256"))return 2;if(e&&!t&&o0===void 0)return 0;let r=o0||0;if(Qs.TERM==="dumb")return r;if(process.platform==="win32"){let s=UYe.release().split(".");return Number(s[0])>=10&&Number(s[2])>=10586?Number(s[2])>=14931?3:2:1}if("CI"in Qs)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some(s=>s in Qs)||Qs.CI_NAME==="codeship"?1:r;if("TEAMCITY_VERSION"in Qs)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(Qs.TEAMCITY_VERSION)?1:0;if("GITHUB_ACTIONS"in Qs)return 1;if(Qs.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in Qs){let s=parseInt((Qs.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(Qs.TERM_PROGRAM){case"iTerm.app":return s>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(Qs.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(Qs.TERM)||"COLORTERM"in Qs?1:r}function _Ye(e){let t=L_(e,e&&e.isTTY);return O_(t)}tse.exports={supportsColor:_Ye,stdout:O_(L_(!0,ese.isatty(1))),stderr:O_(L_(!0,ese.isatty(2)))}});var ise=G((pQt,nse)=>{"use strict";var HYe=(e,t,r)=>{let s=e.indexOf(t);if(s===-1)return e;let a=t.length,n=0,c="";do c+=e.substr(n,s-n)+t+r,n=s+a,s=e.indexOf(t,n);while(s!==-1);return c+=e.substr(n),c},jYe=(e,t,r,s)=>{let a=0,n="";do{let c=e[s-1]==="\r";n+=e.substr(a,(c?s-1:s)-a)+t+(c?`\r -`:` -`)+r,a=s+1,s=e.indexOf(` -`,a)}while(s!==-1);return n+=e.substr(a),n};nse.exports={stringReplaceAll:HYe,stringEncaseCRLFWithFirstIndex:jYe}});var cse=G((hQt,lse)=>{"use strict";var GYe=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,sse=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,qYe=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,WYe=/\\(u(?:[a-f\d]{4}|{[a-f\d]{1,6}})|x[a-f\d]{2}|.)|([^\\])/gi,VYe=new Map([["n",` -`],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e","\x1B"],["a","\x07"]]);function ase(e){let t=e[0]==="u",r=e[1]==="{";return t&&!r&&e.length===5||e[0]==="x"&&e.length===3?String.fromCharCode(parseInt(e.slice(1),16)):t&&r?String.fromCodePoint(parseInt(e.slice(2,-1),16)):VYe.get(e)||e}function YYe(e,t){let r=[],s=t.trim().split(/\s*,\s*/g),a;for(let n of s){let c=Number(n);if(!Number.isNaN(c))r.push(c);else if(a=n.match(qYe))r.push(a[2].replace(WYe,(f,p,h)=>p?ase(p):h));else throw new Error(`Invalid Chalk template style argument: ${n} (in style '${e}')`)}return r}function KYe(e){sse.lastIndex=0;let t=[],r;for(;(r=sse.exec(e))!==null;){let s=r[1];if(r[2]){let a=YYe(s,r[2]);t.push([s].concat(a))}else t.push([s])}return t}function ose(e,t){let r={};for(let a of t)for(let n of a.styles)r[n[0]]=a.inverse?null:n.slice(1);let s=e;for(let[a,n]of Object.entries(r))if(Array.isArray(n)){if(!(a in s))throw new Error(`Unknown Chalk style: ${a}`);s=n.length>0?s[a](...n):s[a]}return s}lse.exports=(e,t)=>{let r=[],s=[],a=[];if(t.replace(GYe,(n,c,f,p,h,E)=>{if(c)a.push(ase(c));else if(p){let C=a.join("");a=[],s.push(r.length===0?C:ose(e,r)(C)),r.push({inverse:f,styles:KYe(p)})}else if(h){if(r.length===0)throw new Error("Found extraneous } in Chalk template literal");s.push(ose(e,r)(a.join(""))),a=[],r.pop()}else a.push(E)}),s.push(a.join("")),r.length>0){let n=`Chalk template literal is missing ${r.length} closing bracket${r.length===1?"":"s"} (\`}\`)`;throw new Error(n)}return s.join("")}});var NE=G((gQt,gse)=>{"use strict";var c2=ik(),{stdout:U_,stderr:__}=rse(),{stringReplaceAll:JYe,stringEncaseCRLFWithFirstIndex:zYe}=ise(),{isArray:sk}=Array,fse=["ansi","ansi","ansi256","ansi16m"],FE=Object.create(null),ZYe=(e,t={})=>{if(t.level&&!(Number.isInteger(t.level)&&t.level>=0&&t.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let r=U_?U_.level:0;e.level=t.level===void 0?r:t.level},H_=class{constructor(t){return Ase(t)}},Ase=e=>{let t={};return ZYe(t,e),t.template=(...r)=>hse(t.template,...r),Object.setPrototypeOf(t,ok.prototype),Object.setPrototypeOf(t.template,t),t.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},t.template.Instance=H_,t.template};function ok(e){return Ase(e)}for(let[e,t]of Object.entries(c2))FE[e]={get(){let r=ak(this,j_(t.open,t.close,this._styler),this._isEmpty);return Object.defineProperty(this,e,{value:r}),r}};FE.visible={get(){let e=ak(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:e}),e}};var pse=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(let e of pse)FE[e]={get(){let{level:t}=this;return function(...r){let s=j_(c2.color[fse[t]][e](...r),c2.color.close,this._styler);return ak(this,s,this._isEmpty)}}};for(let e of pse){let t="bg"+e[0].toUpperCase()+e.slice(1);FE[t]={get(){let{level:r}=this;return function(...s){let a=j_(c2.bgColor[fse[r]][e](...s),c2.bgColor.close,this._styler);return ak(this,a,this._isEmpty)}}}}var XYe=Object.defineProperties(()=>{},{...FE,level:{enumerable:!0,get(){return this._generator.level},set(e){this._generator.level=e}}}),j_=(e,t,r)=>{let s,a;return r===void 0?(s=e,a=t):(s=r.openAll+e,a=t+r.closeAll),{open:e,close:t,openAll:s,closeAll:a,parent:r}},ak=(e,t,r)=>{let s=(...a)=>sk(a[0])&&sk(a[0].raw)?use(s,hse(s,...a)):use(s,a.length===1?""+a[0]:a.join(" "));return Object.setPrototypeOf(s,XYe),s._generator=e,s._styler=t,s._isEmpty=r,s},use=(e,t)=>{if(e.level<=0||!t)return e._isEmpty?"":t;let r=e._styler;if(r===void 0)return t;let{openAll:s,closeAll:a}=r;if(t.indexOf("\x1B")!==-1)for(;r!==void 0;)t=JYe(t,r.close,r.open),r=r.parent;let n=t.indexOf(` -`);return n!==-1&&(t=zYe(t,a,s,n)),s+t+a},M_,hse=(e,...t)=>{let[r]=t;if(!sk(r)||!sk(r.raw))return t.join(" ");let s=t.slice(1),a=[r.raw[0]];for(let n=1;n{"use strict";bc.isInteger=e=>typeof e=="number"?Number.isInteger(e):typeof e=="string"&&e.trim()!==""?Number.isInteger(Number(e)):!1;bc.find=(e,t)=>e.nodes.find(r=>r.type===t);bc.exceedsLimit=(e,t,r=1,s)=>s===!1||!bc.isInteger(e)||!bc.isInteger(t)?!1:(Number(t)-Number(e))/Number(r)>=s;bc.escapeNode=(e,t=0,r)=>{let s=e.nodes[t];s&&(r&&s.type===r||s.type==="open"||s.type==="close")&&s.escaped!==!0&&(s.value="\\"+s.value,s.escaped=!0)};bc.encloseBrace=e=>e.type!=="brace"||e.commas>>0+e.ranges>>0?!1:(e.invalid=!0,!0);bc.isInvalidBrace=e=>e.type!=="brace"?!1:e.invalid===!0||e.dollar?!0:!(e.commas>>0+e.ranges>>0)||e.open!==!0||e.close!==!0?(e.invalid=!0,!0):!1;bc.isOpenOrClose=e=>e.type==="open"||e.type==="close"?!0:e.open===!0||e.close===!0;bc.reduce=e=>e.reduce((t,r)=>(r.type==="text"&&t.push(r.value),r.type==="range"&&(r.type="text"),t),[]);bc.flatten=(...e)=>{let t=[],r=s=>{for(let a=0;a{"use strict";var dse=ck();mse.exports=(e,t={})=>{let r=(s,a={})=>{let n=t.escapeInvalid&&dse.isInvalidBrace(a),c=s.invalid===!0&&t.escapeInvalid===!0,f="";if(s.value)return(n||c)&&dse.isOpenOrClose(s)?"\\"+s.value:s.value;if(s.value)return s.value;if(s.nodes)for(let p of s.nodes)f+=r(p);return f};return r(e)}});var Ese=G((yQt,yse)=>{"use strict";yse.exports=function(e){return typeof e=="number"?e-e===0:typeof e=="string"&&e.trim()!==""?Number.isFinite?Number.isFinite(+e):isFinite(+e):!1}});var Pse=G((EQt,bse)=>{"use strict";var Ise=Ese(),Hd=(e,t,r)=>{if(Ise(e)===!1)throw new TypeError("toRegexRange: expected the first argument to be a number");if(t===void 0||e===t)return String(e);if(Ise(t)===!1)throw new TypeError("toRegexRange: expected the second argument to be a number.");let s={relaxZeros:!0,...r};typeof s.strictZeros=="boolean"&&(s.relaxZeros=s.strictZeros===!1);let a=String(s.relaxZeros),n=String(s.shorthand),c=String(s.capture),f=String(s.wrap),p=e+":"+t+"="+a+n+c+f;if(Hd.cache.hasOwnProperty(p))return Hd.cache[p].result;let h=Math.min(e,t),E=Math.max(e,t);if(Math.abs(h-E)===1){let T=e+"|"+t;return s.capture?`(${T})`:s.wrap===!1?T:`(?:${T})`}let C=Dse(e)||Dse(t),S={min:e,max:t,a:h,b:E},x=[],I=[];if(C&&(S.isPadded=C,S.maxLen=String(S.max).length),h<0){let T=E<0?Math.abs(E):1;I=Cse(T,Math.abs(h),S,s),h=S.a=0}return E>=0&&(x=Cse(h,E,S,s)),S.negatives=I,S.positives=x,S.result=$Ye(I,x,s),s.capture===!0?S.result=`(${S.result})`:s.wrap!==!1&&x.length+I.length>1&&(S.result=`(?:${S.result})`),Hd.cache[p]=S,S.result};function $Ye(e,t,r){let s=G_(e,t,"-",!1,r)||[],a=G_(t,e,"",!1,r)||[],n=G_(e,t,"-?",!0,r)||[];return s.concat(n).concat(a).join("|")}function e7e(e,t){let r=1,s=1,a=Bse(e,r),n=new Set([t]);for(;e<=a&&a<=t;)n.add(a),r+=1,a=Bse(e,r);for(a=vse(t+1,s)-1;e1&&f.count.pop(),f.count.push(E.count[0]),f.string=f.pattern+Sse(f.count),c=h+1;continue}r.isPadded&&(C=s7e(h,r,s)),E.string=C+E.pattern+Sse(E.count),n.push(E),c=h+1,f=E}return n}function G_(e,t,r,s,a){let n=[];for(let c of e){let{string:f}=c;!s&&!wse(t,"string",f)&&n.push(r+f),s&&wse(t,"string",f)&&n.push(r+f)}return n}function r7e(e,t){let r=[];for(let s=0;st?1:t>e?-1:0}function wse(e,t,r){return e.some(s=>s[t]===r)}function Bse(e,t){return Number(String(e).slice(0,-t)+"9".repeat(t))}function vse(e,t){return e-e%Math.pow(10,t)}function Sse(e){let[t=0,r=""]=e;return r||t>1?`{${t+(r?","+r:"")}}`:""}function i7e(e,t,r){return`[${e}${t-e===1?"":"-"}${t}]`}function Dse(e){return/^-?(0+)\d/.test(e)}function s7e(e,t,r){if(!t.isPadded)return e;let s=Math.abs(t.maxLen-String(e).length),a=r.relaxZeros!==!1;switch(s){case 0:return"";case 1:return a?"0?":"0";case 2:return a?"0{0,2}":"00";default:return a?`0{0,${s}}`:`0{${s}}`}}Hd.cache={};Hd.clearCache=()=>Hd.cache={};bse.exports=Hd});var V_=G((IQt,Ose)=>{"use strict";var o7e=Ie("util"),Qse=Pse(),xse=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),a7e=e=>t=>e===!0?Number(t):String(t),q_=e=>typeof e=="number"||typeof e=="string"&&e!=="",u2=e=>Number.isInteger(+e),W_=e=>{let t=`${e}`,r=-1;if(t[0]==="-"&&(t=t.slice(1)),t==="0")return!1;for(;t[++r]==="0";);return r>0},l7e=(e,t,r)=>typeof e=="string"||typeof t=="string"?!0:r.stringify===!0,c7e=(e,t,r)=>{if(t>0){let s=e[0]==="-"?"-":"";s&&(e=e.slice(1)),e=s+e.padStart(s?t-1:t,"0")}return r===!1?String(e):e},kse=(e,t)=>{let r=e[0]==="-"?"-":"";for(r&&(e=e.slice(1),t--);e.length{e.negatives.sort((c,f)=>cf?1:0),e.positives.sort((c,f)=>cf?1:0);let r=t.capture?"":"?:",s="",a="",n;return e.positives.length&&(s=e.positives.join("|")),e.negatives.length&&(a=`-(${r}${e.negatives.join("|")})`),s&&a?n=`${s}|${a}`:n=s||a,t.wrap?`(${r}${n})`:n},Rse=(e,t,r,s)=>{if(r)return Qse(e,t,{wrap:!1,...s});let a=String.fromCharCode(e);if(e===t)return a;let n=String.fromCharCode(t);return`[${a}-${n}]`},Tse=(e,t,r)=>{if(Array.isArray(e)){let s=r.wrap===!0,a=r.capture?"":"?:";return s?`(${a}${e.join("|")})`:e.join("|")}return Qse(e,t,r)},Fse=(...e)=>new RangeError("Invalid range arguments: "+o7e.inspect(...e)),Nse=(e,t,r)=>{if(r.strictRanges===!0)throw Fse([e,t]);return[]},f7e=(e,t)=>{if(t.strictRanges===!0)throw new TypeError(`Expected step "${e}" to be a number`);return[]},A7e=(e,t,r=1,s={})=>{let a=Number(e),n=Number(t);if(!Number.isInteger(a)||!Number.isInteger(n)){if(s.strictRanges===!0)throw Fse([e,t]);return[]}a===0&&(a=0),n===0&&(n=0);let c=a>n,f=String(e),p=String(t),h=String(r);r=Math.max(Math.abs(r),1);let E=W_(f)||W_(p)||W_(h),C=E?Math.max(f.length,p.length,h.length):0,S=E===!1&&l7e(e,t,s)===!1,x=s.transform||a7e(S);if(s.toRegex&&r===1)return Rse(kse(e,C),kse(t,C),!0,s);let I={negatives:[],positives:[]},T=Y=>I[Y<0?"negatives":"positives"].push(Math.abs(Y)),O=[],U=0;for(;c?a>=n:a<=n;)s.toRegex===!0&&r>1?T(a):O.push(c7e(x(a,U),C,S)),a=c?a-r:a+r,U++;return s.toRegex===!0?r>1?u7e(I,s):Tse(O,null,{wrap:!1,...s}):O},p7e=(e,t,r=1,s={})=>{if(!u2(e)&&e.length>1||!u2(t)&&t.length>1)return Nse(e,t,s);let a=s.transform||(S=>String.fromCharCode(S)),n=`${e}`.charCodeAt(0),c=`${t}`.charCodeAt(0),f=n>c,p=Math.min(n,c),h=Math.max(n,c);if(s.toRegex&&r===1)return Rse(p,h,!1,s);let E=[],C=0;for(;f?n>=c:n<=c;)E.push(a(n,C)),n=f?n-r:n+r,C++;return s.toRegex===!0?Tse(E,null,{wrap:!1,options:s}):E},fk=(e,t,r,s={})=>{if(t==null&&q_(e))return[e];if(!q_(e)||!q_(t))return Nse(e,t,s);if(typeof r=="function")return fk(e,t,1,{transform:r});if(xse(r))return fk(e,t,0,r);let a={...s};return a.capture===!0&&(a.wrap=!0),r=r||a.step||1,u2(r)?u2(e)&&u2(t)?A7e(e,t,r,a):p7e(e,t,Math.max(Math.abs(r),1),a):r!=null&&!xse(r)?f7e(r,a):fk(e,t,1,r)};Ose.exports=fk});var Use=G((CQt,Mse)=>{"use strict";var h7e=V_(),Lse=ck(),g7e=(e,t={})=>{let r=(s,a={})=>{let n=Lse.isInvalidBrace(a),c=s.invalid===!0&&t.escapeInvalid===!0,f=n===!0||c===!0,p=t.escapeInvalid===!0?"\\":"",h="";if(s.isOpen===!0||s.isClose===!0)return p+s.value;if(s.type==="open")return f?p+s.value:"(";if(s.type==="close")return f?p+s.value:")";if(s.type==="comma")return s.prev.type==="comma"?"":f?s.value:"|";if(s.value)return s.value;if(s.nodes&&s.ranges>0){let E=Lse.reduce(s.nodes),C=h7e(...E,{...t,wrap:!1,toRegex:!0});if(C.length!==0)return E.length>1&&C.length>1?`(${C})`:C}if(s.nodes)for(let E of s.nodes)h+=r(E,s);return h};return r(e)};Mse.exports=g7e});var jse=G((wQt,Hse)=>{"use strict";var d7e=V_(),_se=uk(),OE=ck(),jd=(e="",t="",r=!1)=>{let s=[];if(e=[].concat(e),t=[].concat(t),!t.length)return e;if(!e.length)return r?OE.flatten(t).map(a=>`{${a}}`):t;for(let a of e)if(Array.isArray(a))for(let n of a)s.push(jd(n,t,r));else for(let n of t)r===!0&&typeof n=="string"&&(n=`{${n}}`),s.push(Array.isArray(n)?jd(a,n,r):a+n);return OE.flatten(s)},m7e=(e,t={})=>{let r=t.rangeLimit===void 0?1e3:t.rangeLimit,s=(a,n={})=>{a.queue=[];let c=n,f=n.queue;for(;c.type!=="brace"&&c.type!=="root"&&c.parent;)c=c.parent,f=c.queue;if(a.invalid||a.dollar){f.push(jd(f.pop(),_se(a,t)));return}if(a.type==="brace"&&a.invalid!==!0&&a.nodes.length===2){f.push(jd(f.pop(),["{}"]));return}if(a.nodes&&a.ranges>0){let C=OE.reduce(a.nodes);if(OE.exceedsLimit(...C,t.step,r))throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.");let S=d7e(...C,t);S.length===0&&(S=_se(a,t)),f.push(jd(f.pop(),S)),a.nodes=[];return}let p=OE.encloseBrace(a),h=a.queue,E=a;for(;E.type!=="brace"&&E.type!=="root"&&E.parent;)E=E.parent,h=E.queue;for(let C=0;C{"use strict";Gse.exports={MAX_LENGTH:1024*64,CHAR_0:"0",CHAR_9:"9",CHAR_UPPERCASE_A:"A",CHAR_LOWERCASE_A:"a",CHAR_UPPERCASE_Z:"Z",CHAR_LOWERCASE_Z:"z",CHAR_LEFT_PARENTHESES:"(",CHAR_RIGHT_PARENTHESES:")",CHAR_ASTERISK:"*",CHAR_AMPERSAND:"&",CHAR_AT:"@",CHAR_BACKSLASH:"\\",CHAR_BACKTICK:"`",CHAR_CARRIAGE_RETURN:"\r",CHAR_CIRCUMFLEX_ACCENT:"^",CHAR_COLON:":",CHAR_COMMA:",",CHAR_DOLLAR:"$",CHAR_DOT:".",CHAR_DOUBLE_QUOTE:'"',CHAR_EQUAL:"=",CHAR_EXCLAMATION_MARK:"!",CHAR_FORM_FEED:"\f",CHAR_FORWARD_SLASH:"/",CHAR_HASH:"#",CHAR_HYPHEN_MINUS:"-",CHAR_LEFT_ANGLE_BRACKET:"<",CHAR_LEFT_CURLY_BRACE:"{",CHAR_LEFT_SQUARE_BRACKET:"[",CHAR_LINE_FEED:` -`,CHAR_NO_BREAK_SPACE:"\xA0",CHAR_PERCENT:"%",CHAR_PLUS:"+",CHAR_QUESTION_MARK:"?",CHAR_RIGHT_ANGLE_BRACKET:">",CHAR_RIGHT_CURLY_BRACE:"}",CHAR_RIGHT_SQUARE_BRACKET:"]",CHAR_SEMICOLON:";",CHAR_SINGLE_QUOTE:"'",CHAR_SPACE:" ",CHAR_TAB:" ",CHAR_UNDERSCORE:"_",CHAR_VERTICAL_LINE:"|",CHAR_ZERO_WIDTH_NOBREAK_SPACE:"\uFEFF"}});var Jse=G((vQt,Kse)=>{"use strict";var y7e=uk(),{MAX_LENGTH:Wse,CHAR_BACKSLASH:Y_,CHAR_BACKTICK:E7e,CHAR_COMMA:I7e,CHAR_DOT:C7e,CHAR_LEFT_PARENTHESES:w7e,CHAR_RIGHT_PARENTHESES:B7e,CHAR_LEFT_CURLY_BRACE:v7e,CHAR_RIGHT_CURLY_BRACE:S7e,CHAR_LEFT_SQUARE_BRACKET:Vse,CHAR_RIGHT_SQUARE_BRACKET:Yse,CHAR_DOUBLE_QUOTE:D7e,CHAR_SINGLE_QUOTE:b7e,CHAR_NO_BREAK_SPACE:P7e,CHAR_ZERO_WIDTH_NOBREAK_SPACE:x7e}=qse(),k7e=(e,t={})=>{if(typeof e!="string")throw new TypeError("Expected a string");let r=t||{},s=typeof r.maxLength=="number"?Math.min(Wse,r.maxLength):Wse;if(e.length>s)throw new SyntaxError(`Input length (${e.length}), exceeds max characters (${s})`);let a={type:"root",input:e,nodes:[]},n=[a],c=a,f=a,p=0,h=e.length,E=0,C=0,S,x={},I=()=>e[E++],T=O=>{if(O.type==="text"&&f.type==="dot"&&(f.type="text"),f&&f.type==="text"&&O.type==="text"){f.value+=O.value;return}return c.nodes.push(O),O.parent=c,O.prev=f,f=O,O};for(T({type:"bos"});E0){if(c.ranges>0){c.ranges=0;let O=c.nodes.shift();c.nodes=[O,{type:"text",value:y7e(c)}]}T({type:"comma",value:S}),c.commas++;continue}if(S===C7e&&C>0&&c.commas===0){let O=c.nodes;if(C===0||O.length===0){T({type:"text",value:S});continue}if(f.type==="dot"){if(c.range=[],f.value+=S,f.type="range",c.nodes.length!==3&&c.nodes.length!==5){c.invalid=!0,c.ranges=0,f.type="text";continue}c.ranges++,c.args=[];continue}if(f.type==="range"){O.pop();let U=O[O.length-1];U.value+=f.value+S,f=U,c.ranges--;continue}T({type:"dot",value:S});continue}T({type:"text",value:S})}do if(c=n.pop(),c.type!=="root"){c.nodes.forEach(Y=>{Y.nodes||(Y.type==="open"&&(Y.isOpen=!0),Y.type==="close"&&(Y.isClose=!0),Y.nodes||(Y.type="text"),Y.invalid=!0)});let O=n[n.length-1],U=O.nodes.indexOf(c);O.nodes.splice(U,1,...c.nodes)}while(n.length>0);return T({type:"eos"}),a};Kse.exports=k7e});var Xse=G((SQt,Zse)=>{"use strict";var zse=uk(),Q7e=Use(),R7e=jse(),T7e=Jse(),Yl=(e,t={})=>{let r=[];if(Array.isArray(e))for(let s of e){let a=Yl.create(s,t);Array.isArray(a)?r.push(...a):r.push(a)}else r=[].concat(Yl.create(e,t));return t&&t.expand===!0&&t.nodupes===!0&&(r=[...new Set(r)]),r};Yl.parse=(e,t={})=>T7e(e,t);Yl.stringify=(e,t={})=>zse(typeof e=="string"?Yl.parse(e,t):e,t);Yl.compile=(e,t={})=>(typeof e=="string"&&(e=Yl.parse(e,t)),Q7e(e,t));Yl.expand=(e,t={})=>{typeof e=="string"&&(e=Yl.parse(e,t));let r=R7e(e,t);return t.noempty===!0&&(r=r.filter(Boolean)),t.nodupes===!0&&(r=[...new Set(r)]),r};Yl.create=(e,t={})=>e===""||e.length<3?[e]:t.expand!==!0?Yl.compile(e,t):Yl.expand(e,t);Zse.exports=Yl});var f2=G((DQt,noe)=>{"use strict";var F7e=Ie("path"),Jf="\\\\/",$se=`[^${Jf}]`,bp="\\.",N7e="\\+",O7e="\\?",Ak="\\/",L7e="(?=.)",eoe="[^/]",K_=`(?:${Ak}|$)`,toe=`(?:^|${Ak})`,J_=`${bp}{1,2}${K_}`,M7e=`(?!${bp})`,U7e=`(?!${toe}${J_})`,_7e=`(?!${bp}{0,1}${K_})`,H7e=`(?!${J_})`,j7e=`[^.${Ak}]`,G7e=`${eoe}*?`,roe={DOT_LITERAL:bp,PLUS_LITERAL:N7e,QMARK_LITERAL:O7e,SLASH_LITERAL:Ak,ONE_CHAR:L7e,QMARK:eoe,END_ANCHOR:K_,DOTS_SLASH:J_,NO_DOT:M7e,NO_DOTS:U7e,NO_DOT_SLASH:_7e,NO_DOTS_SLASH:H7e,QMARK_NO_DOT:j7e,STAR:G7e,START_ANCHOR:toe},q7e={...roe,SLASH_LITERAL:`[${Jf}]`,QMARK:$se,STAR:`${$se}*?`,DOTS_SLASH:`${bp}{1,2}(?:[${Jf}]|$)`,NO_DOT:`(?!${bp})`,NO_DOTS:`(?!(?:^|[${Jf}])${bp}{1,2}(?:[${Jf}]|$))`,NO_DOT_SLASH:`(?!${bp}{0,1}(?:[${Jf}]|$))`,NO_DOTS_SLASH:`(?!${bp}{1,2}(?:[${Jf}]|$))`,QMARK_NO_DOT:`[^.${Jf}]`,START_ANCHOR:`(?:^|[${Jf}])`,END_ANCHOR:`(?:[${Jf}]|$)`},W7e={alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"};noe.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:W7e,REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:F7e.sep,extglobChars(e){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${e.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}},globChars(e){return e===!0?q7e:roe}}});var A2=G(pl=>{"use strict";var V7e=Ie("path"),Y7e=process.platform==="win32",{REGEX_BACKSLASH:K7e,REGEX_REMOVE_BACKSLASH:J7e,REGEX_SPECIAL_CHARS:z7e,REGEX_SPECIAL_CHARS_GLOBAL:Z7e}=f2();pl.isObject=e=>e!==null&&typeof e=="object"&&!Array.isArray(e);pl.hasRegexChars=e=>z7e.test(e);pl.isRegexChar=e=>e.length===1&&pl.hasRegexChars(e);pl.escapeRegex=e=>e.replace(Z7e,"\\$1");pl.toPosixSlashes=e=>e.replace(K7e,"/");pl.removeBackslashes=e=>e.replace(J7e,t=>t==="\\"?"":t);pl.supportsLookbehinds=()=>{let e=process.version.slice(1).split(".").map(Number);return e.length===3&&e[0]>=9||e[0]===8&&e[1]>=10};pl.isWindows=e=>e&&typeof e.windows=="boolean"?e.windows:Y7e===!0||V7e.sep==="\\";pl.escapeLast=(e,t,r)=>{let s=e.lastIndexOf(t,r);return s===-1?e:e[s-1]==="\\"?pl.escapeLast(e,t,s-1):`${e.slice(0,s)}\\${e.slice(s)}`};pl.removePrefix=(e,t={})=>{let r=e;return r.startsWith("./")&&(r=r.slice(2),t.prefix="./"),r};pl.wrapOutput=(e,t={},r={})=>{let s=r.contains?"":"^",a=r.contains?"":"$",n=`${s}(?:${e})${a}`;return t.negated===!0&&(n=`(?:^(?!${n}).*$)`),n}});var foe=G((PQt,uoe)=>{"use strict";var ioe=A2(),{CHAR_ASTERISK:z_,CHAR_AT:X7e,CHAR_BACKWARD_SLASH:p2,CHAR_COMMA:$7e,CHAR_DOT:Z_,CHAR_EXCLAMATION_MARK:X_,CHAR_FORWARD_SLASH:coe,CHAR_LEFT_CURLY_BRACE:$_,CHAR_LEFT_PARENTHESES:e4,CHAR_LEFT_SQUARE_BRACKET:eKe,CHAR_PLUS:tKe,CHAR_QUESTION_MARK:soe,CHAR_RIGHT_CURLY_BRACE:rKe,CHAR_RIGHT_PARENTHESES:ooe,CHAR_RIGHT_SQUARE_BRACKET:nKe}=f2(),aoe=e=>e===coe||e===p2,loe=e=>{e.isPrefix!==!0&&(e.depth=e.isGlobstar?1/0:1)},iKe=(e,t)=>{let r=t||{},s=e.length-1,a=r.parts===!0||r.scanToEnd===!0,n=[],c=[],f=[],p=e,h=-1,E=0,C=0,S=!1,x=!1,I=!1,T=!1,O=!1,U=!1,Y=!1,te=!1,ie=!1,ue=!1,ae=0,de,Ae,Ce={value:"",depth:0,isGlob:!1},Ee=()=>h>=s,g=()=>p.charCodeAt(h+1),Se=()=>(de=Ae,p.charCodeAt(++h));for(;h0&&(me=p.slice(0,E),p=p.slice(E),C-=E),Be&&I===!0&&C>0?(Be=p.slice(0,C),ce=p.slice(C)):I===!0?(Be="",ce=p):Be=p,Be&&Be!==""&&Be!=="/"&&Be!==p&&aoe(Be.charCodeAt(Be.length-1))&&(Be=Be.slice(0,-1)),r.unescape===!0&&(ce&&(ce=ioe.removeBackslashes(ce)),Be&&Y===!0&&(Be=ioe.removeBackslashes(Be)));let X={prefix:me,input:e,start:E,base:Be,glob:ce,isBrace:S,isBracket:x,isGlob:I,isExtglob:T,isGlobstar:O,negated:te,negatedExtglob:ie};if(r.tokens===!0&&(X.maxDepth=0,aoe(Ae)||c.push(Ce),X.tokens=c),r.parts===!0||r.tokens===!0){let De;for(let Qe=0;Qe{"use strict";var pk=f2(),Kl=A2(),{MAX_LENGTH:hk,POSIX_REGEX_SOURCE:sKe,REGEX_NON_SPECIAL_CHARS:oKe,REGEX_SPECIAL_CHARS_BACKREF:aKe,REPLACEMENTS:Aoe}=pk,lKe=(e,t)=>{if(typeof t.expandRange=="function")return t.expandRange(...e,t);e.sort();let r=`[${e.join("-")}]`;try{new RegExp(r)}catch{return e.map(a=>Kl.escapeRegex(a)).join("..")}return r},LE=(e,t)=>`Missing ${e}: "${t}" - use "\\\\${t}" to match literal characters`,t4=(e,t)=>{if(typeof e!="string")throw new TypeError("Expected a string");e=Aoe[e]||e;let r={...t},s=typeof r.maxLength=="number"?Math.min(hk,r.maxLength):hk,a=e.length;if(a>s)throw new SyntaxError(`Input length: ${a}, exceeds maximum allowed length: ${s}`);let n={type:"bos",value:"",output:r.prepend||""},c=[n],f=r.capture?"":"?:",p=Kl.isWindows(t),h=pk.globChars(p),E=pk.extglobChars(h),{DOT_LITERAL:C,PLUS_LITERAL:S,SLASH_LITERAL:x,ONE_CHAR:I,DOTS_SLASH:T,NO_DOT:O,NO_DOT_SLASH:U,NO_DOTS_SLASH:Y,QMARK:te,QMARK_NO_DOT:ie,STAR:ue,START_ANCHOR:ae}=h,de=P=>`(${f}(?:(?!${ae}${P.dot?T:C}).)*?)`,Ae=r.dot?"":O,Ce=r.dot?te:ie,Ee=r.bash===!0?de(r):ue;r.capture&&(Ee=`(${Ee})`),typeof r.noext=="boolean"&&(r.noextglob=r.noext);let g={input:e,index:-1,start:0,dot:r.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:c};e=Kl.removePrefix(e,g),a=e.length;let Se=[],Be=[],me=[],ce=n,X,De=()=>g.index===a-1,Qe=g.peek=(P=1)=>e[g.index+P],it=g.advance=()=>e[++g.index]||"",_=()=>e.slice(g.index+1),tt=(P="",w=0)=>{g.consumed+=P,g.index+=w},Ne=P=>{g.output+=P.output!=null?P.output:P.value,tt(P.value)},ke=()=>{let P=1;for(;Qe()==="!"&&(Qe(2)!=="("||Qe(3)==="?");)it(),g.start++,P++;return P%2===0?!1:(g.negated=!0,g.start++,!0)},be=P=>{g[P]++,me.push(P)},je=P=>{g[P]--,me.pop()},Re=P=>{if(ce.type==="globstar"){let w=g.braces>0&&(P.type==="comma"||P.type==="brace"),b=P.extglob===!0||Se.length&&(P.type==="pipe"||P.type==="paren");P.type!=="slash"&&P.type!=="paren"&&!w&&!b&&(g.output=g.output.slice(0,-ce.output.length),ce.type="star",ce.value="*",ce.output=Ee,g.output+=ce.output)}if(Se.length&&P.type!=="paren"&&(Se[Se.length-1].inner+=P.value),(P.value||P.output)&&Ne(P),ce&&ce.type==="text"&&P.type==="text"){ce.value+=P.value,ce.output=(ce.output||"")+P.value;return}P.prev=ce,c.push(P),ce=P},ct=(P,w)=>{let b={...E[w],conditions:1,inner:""};b.prev=ce,b.parens=g.parens,b.output=g.output;let y=(r.capture?"(":"")+b.open;be("parens"),Re({type:P,value:w,output:g.output?"":I}),Re({type:"paren",extglob:!0,value:it(),output:y}),Se.push(b)},Me=P=>{let w=P.close+(r.capture?")":""),b;if(P.type==="negate"){let y=Ee;if(P.inner&&P.inner.length>1&&P.inner.includes("/")&&(y=de(r)),(y!==Ee||De()||/^\)+$/.test(_()))&&(w=P.close=`)$))${y}`),P.inner.includes("*")&&(b=_())&&/^\.[^\\/.]+$/.test(b)){let F=t4(b,{...t,fastpaths:!1}).output;w=P.close=`)${F})${y})`}P.prev.type==="bos"&&(g.negatedExtglob=!0)}Re({type:"paren",extglob:!0,value:X,output:w}),je("parens")};if(r.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(e)){let P=!1,w=e.replace(aKe,(b,y,F,z,Z,$)=>z==="\\"?(P=!0,b):z==="?"?y?y+z+(Z?te.repeat(Z.length):""):$===0?Ce+(Z?te.repeat(Z.length):""):te.repeat(F.length):z==="."?C.repeat(F.length):z==="*"?y?y+z+(Z?Ee:""):Ee:y?b:`\\${b}`);return P===!0&&(r.unescape===!0?w=w.replace(/\\/g,""):w=w.replace(/\\+/g,b=>b.length%2===0?"\\\\":b?"\\":"")),w===e&&r.contains===!0?(g.output=e,g):(g.output=Kl.wrapOutput(w,g,t),g)}for(;!De();){if(X=it(),X==="\0")continue;if(X==="\\"){let b=Qe();if(b==="/"&&r.bash!==!0||b==="."||b===";")continue;if(!b){X+="\\",Re({type:"text",value:X});continue}let y=/^\\+/.exec(_()),F=0;if(y&&y[0].length>2&&(F=y[0].length,g.index+=F,F%2!==0&&(X+="\\")),r.unescape===!0?X=it():X+=it(),g.brackets===0){Re({type:"text",value:X});continue}}if(g.brackets>0&&(X!=="]"||ce.value==="["||ce.value==="[^")){if(r.posix!==!1&&X===":"){let b=ce.value.slice(1);if(b.includes("[")&&(ce.posix=!0,b.includes(":"))){let y=ce.value.lastIndexOf("["),F=ce.value.slice(0,y),z=ce.value.slice(y+2),Z=sKe[z];if(Z){ce.value=F+Z,g.backtrack=!0,it(),!n.output&&c.indexOf(ce)===1&&(n.output=I);continue}}}(X==="["&&Qe()!==":"||X==="-"&&Qe()==="]")&&(X=`\\${X}`),X==="]"&&(ce.value==="["||ce.value==="[^")&&(X=`\\${X}`),r.posix===!0&&X==="!"&&ce.value==="["&&(X="^"),ce.value+=X,Ne({value:X});continue}if(g.quotes===1&&X!=='"'){X=Kl.escapeRegex(X),ce.value+=X,Ne({value:X});continue}if(X==='"'){g.quotes=g.quotes===1?0:1,r.keepQuotes===!0&&Re({type:"text",value:X});continue}if(X==="("){be("parens"),Re({type:"paren",value:X});continue}if(X===")"){if(g.parens===0&&r.strictBrackets===!0)throw new SyntaxError(LE("opening","("));let b=Se[Se.length-1];if(b&&g.parens===b.parens+1){Me(Se.pop());continue}Re({type:"paren",value:X,output:g.parens?")":"\\)"}),je("parens");continue}if(X==="["){if(r.nobracket===!0||!_().includes("]")){if(r.nobracket!==!0&&r.strictBrackets===!0)throw new SyntaxError(LE("closing","]"));X=`\\${X}`}else be("brackets");Re({type:"bracket",value:X});continue}if(X==="]"){if(r.nobracket===!0||ce&&ce.type==="bracket"&&ce.value.length===1){Re({type:"text",value:X,output:`\\${X}`});continue}if(g.brackets===0){if(r.strictBrackets===!0)throw new SyntaxError(LE("opening","["));Re({type:"text",value:X,output:`\\${X}`});continue}je("brackets");let b=ce.value.slice(1);if(ce.posix!==!0&&b[0]==="^"&&!b.includes("/")&&(X=`/${X}`),ce.value+=X,Ne({value:X}),r.literalBrackets===!1||Kl.hasRegexChars(b))continue;let y=Kl.escapeRegex(ce.value);if(g.output=g.output.slice(0,-ce.value.length),r.literalBrackets===!0){g.output+=y,ce.value=y;continue}ce.value=`(${f}${y}|${ce.value})`,g.output+=ce.value;continue}if(X==="{"&&r.nobrace!==!0){be("braces");let b={type:"brace",value:X,output:"(",outputIndex:g.output.length,tokensIndex:g.tokens.length};Be.push(b),Re(b);continue}if(X==="}"){let b=Be[Be.length-1];if(r.nobrace===!0||!b){Re({type:"text",value:X,output:X});continue}let y=")";if(b.dots===!0){let F=c.slice(),z=[];for(let Z=F.length-1;Z>=0&&(c.pop(),F[Z].type!=="brace");Z--)F[Z].type!=="dots"&&z.unshift(F[Z].value);y=lKe(z,r),g.backtrack=!0}if(b.comma!==!0&&b.dots!==!0){let F=g.output.slice(0,b.outputIndex),z=g.tokens.slice(b.tokensIndex);b.value=b.output="\\{",X=y="\\}",g.output=F;for(let Z of z)g.output+=Z.output||Z.value}Re({type:"brace",value:X,output:y}),je("braces"),Be.pop();continue}if(X==="|"){Se.length>0&&Se[Se.length-1].conditions++,Re({type:"text",value:X});continue}if(X===","){let b=X,y=Be[Be.length-1];y&&me[me.length-1]==="braces"&&(y.comma=!0,b="|"),Re({type:"comma",value:X,output:b});continue}if(X==="/"){if(ce.type==="dot"&&g.index===g.start+1){g.start=g.index+1,g.consumed="",g.output="",c.pop(),ce=n;continue}Re({type:"slash",value:X,output:x});continue}if(X==="."){if(g.braces>0&&ce.type==="dot"){ce.value==="."&&(ce.output=C);let b=Be[Be.length-1];ce.type="dots",ce.output+=X,ce.value+=X,b.dots=!0;continue}if(g.braces+g.parens===0&&ce.type!=="bos"&&ce.type!=="slash"){Re({type:"text",value:X,output:C});continue}Re({type:"dot",value:X,output:C});continue}if(X==="?"){if(!(ce&&ce.value==="(")&&r.noextglob!==!0&&Qe()==="("&&Qe(2)!=="?"){ct("qmark",X);continue}if(ce&&ce.type==="paren"){let y=Qe(),F=X;if(y==="<"&&!Kl.supportsLookbehinds())throw new Error("Node.js v10 or higher is required for regex lookbehinds");(ce.value==="("&&!/[!=<:]/.test(y)||y==="<"&&!/<([!=]|\w+>)/.test(_()))&&(F=`\\${X}`),Re({type:"text",value:X,output:F});continue}if(r.dot!==!0&&(ce.type==="slash"||ce.type==="bos")){Re({type:"qmark",value:X,output:ie});continue}Re({type:"qmark",value:X,output:te});continue}if(X==="!"){if(r.noextglob!==!0&&Qe()==="("&&(Qe(2)!=="?"||!/[!=<:]/.test(Qe(3)))){ct("negate",X);continue}if(r.nonegate!==!0&&g.index===0){ke();continue}}if(X==="+"){if(r.noextglob!==!0&&Qe()==="("&&Qe(2)!=="?"){ct("plus",X);continue}if(ce&&ce.value==="("||r.regex===!1){Re({type:"plus",value:X,output:S});continue}if(ce&&(ce.type==="bracket"||ce.type==="paren"||ce.type==="brace")||g.parens>0){Re({type:"plus",value:X});continue}Re({type:"plus",value:S});continue}if(X==="@"){if(r.noextglob!==!0&&Qe()==="("&&Qe(2)!=="?"){Re({type:"at",extglob:!0,value:X,output:""});continue}Re({type:"text",value:X});continue}if(X!=="*"){(X==="$"||X==="^")&&(X=`\\${X}`);let b=oKe.exec(_());b&&(X+=b[0],g.index+=b[0].length),Re({type:"text",value:X});continue}if(ce&&(ce.type==="globstar"||ce.star===!0)){ce.type="star",ce.star=!0,ce.value+=X,ce.output=Ee,g.backtrack=!0,g.globstar=!0,tt(X);continue}let P=_();if(r.noextglob!==!0&&/^\([^?]/.test(P)){ct("star",X);continue}if(ce.type==="star"){if(r.noglobstar===!0){tt(X);continue}let b=ce.prev,y=b.prev,F=b.type==="slash"||b.type==="bos",z=y&&(y.type==="star"||y.type==="globstar");if(r.bash===!0&&(!F||P[0]&&P[0]!=="/")){Re({type:"star",value:X,output:""});continue}let Z=g.braces>0&&(b.type==="comma"||b.type==="brace"),$=Se.length&&(b.type==="pipe"||b.type==="paren");if(!F&&b.type!=="paren"&&!Z&&!$){Re({type:"star",value:X,output:""});continue}for(;P.slice(0,3)==="/**";){let se=e[g.index+4];if(se&&se!=="/")break;P=P.slice(3),tt("/**",3)}if(b.type==="bos"&&De()){ce.type="globstar",ce.value+=X,ce.output=de(r),g.output=ce.output,g.globstar=!0,tt(X);continue}if(b.type==="slash"&&b.prev.type!=="bos"&&!z&&De()){g.output=g.output.slice(0,-(b.output+ce.output).length),b.output=`(?:${b.output}`,ce.type="globstar",ce.output=de(r)+(r.strictSlashes?")":"|$)"),ce.value+=X,g.globstar=!0,g.output+=b.output+ce.output,tt(X);continue}if(b.type==="slash"&&b.prev.type!=="bos"&&P[0]==="/"){let se=P[1]!==void 0?"|$":"";g.output=g.output.slice(0,-(b.output+ce.output).length),b.output=`(?:${b.output}`,ce.type="globstar",ce.output=`${de(r)}${x}|${x}${se})`,ce.value+=X,g.output+=b.output+ce.output,g.globstar=!0,tt(X+it()),Re({type:"slash",value:"/",output:""});continue}if(b.type==="bos"&&P[0]==="/"){ce.type="globstar",ce.value+=X,ce.output=`(?:^|${x}|${de(r)}${x})`,g.output=ce.output,g.globstar=!0,tt(X+it()),Re({type:"slash",value:"/",output:""});continue}g.output=g.output.slice(0,-ce.output.length),ce.type="globstar",ce.output=de(r),ce.value+=X,g.output+=ce.output,g.globstar=!0,tt(X);continue}let w={type:"star",value:X,output:Ee};if(r.bash===!0){w.output=".*?",(ce.type==="bos"||ce.type==="slash")&&(w.output=Ae+w.output),Re(w);continue}if(ce&&(ce.type==="bracket"||ce.type==="paren")&&r.regex===!0){w.output=X,Re(w);continue}(g.index===g.start||ce.type==="slash"||ce.type==="dot")&&(ce.type==="dot"?(g.output+=U,ce.output+=U):r.dot===!0?(g.output+=Y,ce.output+=Y):(g.output+=Ae,ce.output+=Ae),Qe()!=="*"&&(g.output+=I,ce.output+=I)),Re(w)}for(;g.brackets>0;){if(r.strictBrackets===!0)throw new SyntaxError(LE("closing","]"));g.output=Kl.escapeLast(g.output,"["),je("brackets")}for(;g.parens>0;){if(r.strictBrackets===!0)throw new SyntaxError(LE("closing",")"));g.output=Kl.escapeLast(g.output,"("),je("parens")}for(;g.braces>0;){if(r.strictBrackets===!0)throw new SyntaxError(LE("closing","}"));g.output=Kl.escapeLast(g.output,"{"),je("braces")}if(r.strictSlashes!==!0&&(ce.type==="star"||ce.type==="bracket")&&Re({type:"maybe_slash",value:"",output:`${x}?`}),g.backtrack===!0){g.output="";for(let P of g.tokens)g.output+=P.output!=null?P.output:P.value,P.suffix&&(g.output+=P.suffix)}return g};t4.fastpaths=(e,t)=>{let r={...t},s=typeof r.maxLength=="number"?Math.min(hk,r.maxLength):hk,a=e.length;if(a>s)throw new SyntaxError(`Input length: ${a}, exceeds maximum allowed length: ${s}`);e=Aoe[e]||e;let n=Kl.isWindows(t),{DOT_LITERAL:c,SLASH_LITERAL:f,ONE_CHAR:p,DOTS_SLASH:h,NO_DOT:E,NO_DOTS:C,NO_DOTS_SLASH:S,STAR:x,START_ANCHOR:I}=pk.globChars(n),T=r.dot?C:E,O=r.dot?S:E,U=r.capture?"":"?:",Y={negated:!1,prefix:""},te=r.bash===!0?".*?":x;r.capture&&(te=`(${te})`);let ie=Ae=>Ae.noglobstar===!0?te:`(${U}(?:(?!${I}${Ae.dot?h:c}).)*?)`,ue=Ae=>{switch(Ae){case"*":return`${T}${p}${te}`;case".*":return`${c}${p}${te}`;case"*.*":return`${T}${te}${c}${p}${te}`;case"*/*":return`${T}${te}${f}${p}${O}${te}`;case"**":return T+ie(r);case"**/*":return`(?:${T}${ie(r)}${f})?${O}${p}${te}`;case"**/*.*":return`(?:${T}${ie(r)}${f})?${O}${te}${c}${p}${te}`;case"**/.*":return`(?:${T}${ie(r)}${f})?${c}${p}${te}`;default:{let Ce=/^(.*?)\.(\w+)$/.exec(Ae);if(!Ce)return;let Ee=ue(Ce[1]);return Ee?Ee+c+Ce[2]:void 0}}},ae=Kl.removePrefix(e,Y),de=ue(ae);return de&&r.strictSlashes!==!0&&(de+=`${f}?`),de};poe.exports=t4});var doe=G((kQt,goe)=>{"use strict";var cKe=Ie("path"),uKe=foe(),r4=hoe(),n4=A2(),fKe=f2(),AKe=e=>e&&typeof e=="object"&&!Array.isArray(e),Xi=(e,t,r=!1)=>{if(Array.isArray(e)){let E=e.map(S=>Xi(S,t,r));return S=>{for(let x of E){let I=x(S);if(I)return I}return!1}}let s=AKe(e)&&e.tokens&&e.input;if(e===""||typeof e!="string"&&!s)throw new TypeError("Expected pattern to be a non-empty string");let a=t||{},n=n4.isWindows(t),c=s?Xi.compileRe(e,t):Xi.makeRe(e,t,!1,!0),f=c.state;delete c.state;let p=()=>!1;if(a.ignore){let E={...t,ignore:null,onMatch:null,onResult:null};p=Xi(a.ignore,E,r)}let h=(E,C=!1)=>{let{isMatch:S,match:x,output:I}=Xi.test(E,c,t,{glob:e,posix:n}),T={glob:e,state:f,regex:c,posix:n,input:E,output:I,match:x,isMatch:S};return typeof a.onResult=="function"&&a.onResult(T),S===!1?(T.isMatch=!1,C?T:!1):p(E)?(typeof a.onIgnore=="function"&&a.onIgnore(T),T.isMatch=!1,C?T:!1):(typeof a.onMatch=="function"&&a.onMatch(T),C?T:!0)};return r&&(h.state=f),h};Xi.test=(e,t,r,{glob:s,posix:a}={})=>{if(typeof e!="string")throw new TypeError("Expected input to be a string");if(e==="")return{isMatch:!1,output:""};let n=r||{},c=n.format||(a?n4.toPosixSlashes:null),f=e===s,p=f&&c?c(e):e;return f===!1&&(p=c?c(e):e,f=p===s),(f===!1||n.capture===!0)&&(n.matchBase===!0||n.basename===!0?f=Xi.matchBase(e,t,r,a):f=t.exec(p)),{isMatch:!!f,match:f,output:p}};Xi.matchBase=(e,t,r,s=n4.isWindows(r))=>(t instanceof RegExp?t:Xi.makeRe(t,r)).test(cKe.basename(e));Xi.isMatch=(e,t,r)=>Xi(t,r)(e);Xi.parse=(e,t)=>Array.isArray(e)?e.map(r=>Xi.parse(r,t)):r4(e,{...t,fastpaths:!1});Xi.scan=(e,t)=>uKe(e,t);Xi.compileRe=(e,t,r=!1,s=!1)=>{if(r===!0)return e.output;let a=t||{},n=a.contains?"":"^",c=a.contains?"":"$",f=`${n}(?:${e.output})${c}`;e&&e.negated===!0&&(f=`^(?!${f}).*$`);let p=Xi.toRegex(f,t);return s===!0&&(p.state=e),p};Xi.makeRe=(e,t={},r=!1,s=!1)=>{if(!e||typeof e!="string")throw new TypeError("Expected a non-empty string");let a={negated:!1,fastpaths:!0};return t.fastpaths!==!1&&(e[0]==="."||e[0]==="*")&&(a.output=r4.fastpaths(e,t)),a.output||(a=r4(e,t)),Xi.compileRe(a,t,r,s)};Xi.toRegex=(e,t)=>{try{let r=t||{};return new RegExp(e,r.flags||(r.nocase?"i":""))}catch(r){if(t&&t.debug===!0)throw r;return/$^/}};Xi.constants=fKe;goe.exports=Xi});var yoe=G((QQt,moe)=>{"use strict";moe.exports=doe()});var Jo=G((RQt,woe)=>{"use strict";var Ioe=Ie("util"),Coe=Xse(),zf=yoe(),i4=A2(),Eoe=e=>e===""||e==="./",xi=(e,t,r)=>{t=[].concat(t),e=[].concat(e);let s=new Set,a=new Set,n=new Set,c=0,f=E=>{n.add(E.output),r&&r.onResult&&r.onResult(E)};for(let E=0;E!s.has(E));if(r&&h.length===0){if(r.failglob===!0)throw new Error(`No matches found for "${t.join(", ")}"`);if(r.nonull===!0||r.nullglob===!0)return r.unescape?t.map(E=>E.replace(/\\/g,"")):t}return h};xi.match=xi;xi.matcher=(e,t)=>zf(e,t);xi.isMatch=(e,t,r)=>zf(t,r)(e);xi.any=xi.isMatch;xi.not=(e,t,r={})=>{t=[].concat(t).map(String);let s=new Set,a=[],n=f=>{r.onResult&&r.onResult(f),a.push(f.output)},c=new Set(xi(e,t,{...r,onResult:n}));for(let f of a)c.has(f)||s.add(f);return[...s]};xi.contains=(e,t,r)=>{if(typeof e!="string")throw new TypeError(`Expected a string: "${Ioe.inspect(e)}"`);if(Array.isArray(t))return t.some(s=>xi.contains(e,s,r));if(typeof t=="string"){if(Eoe(e)||Eoe(t))return!1;if(e.includes(t)||e.startsWith("./")&&e.slice(2).includes(t))return!0}return xi.isMatch(e,t,{...r,contains:!0})};xi.matchKeys=(e,t,r)=>{if(!i4.isObject(e))throw new TypeError("Expected the first argument to be an object");let s=xi(Object.keys(e),t,r),a={};for(let n of s)a[n]=e[n];return a};xi.some=(e,t,r)=>{let s=[].concat(e);for(let a of[].concat(t)){let n=zf(String(a),r);if(s.some(c=>n(c)))return!0}return!1};xi.every=(e,t,r)=>{let s=[].concat(e);for(let a of[].concat(t)){let n=zf(String(a),r);if(!s.every(c=>n(c)))return!1}return!0};xi.all=(e,t,r)=>{if(typeof e!="string")throw new TypeError(`Expected a string: "${Ioe.inspect(e)}"`);return[].concat(t).every(s=>zf(s,r)(e))};xi.capture=(e,t,r)=>{let s=i4.isWindows(r),n=zf.makeRe(String(e),{...r,capture:!0}).exec(s?i4.toPosixSlashes(t):t);if(n)return n.slice(1).map(c=>c===void 0?"":c)};xi.makeRe=(...e)=>zf.makeRe(...e);xi.scan=(...e)=>zf.scan(...e);xi.parse=(e,t)=>{let r=[];for(let s of[].concat(e||[]))for(let a of Coe(String(s),t))r.push(zf.parse(a,t));return r};xi.braces=(e,t)=>{if(typeof e!="string")throw new TypeError("Expected a string");return t&&t.nobrace===!0||!/\{.*\}/.test(e)?[e]:Coe(e,t)};xi.braceExpand=(e,t)=>{if(typeof e!="string")throw new TypeError("Expected a string");return xi.braces(e,{...t,expand:!0})};woe.exports=xi});var voe=G((TQt,Boe)=>{"use strict";Boe.exports=({onlyFirst:e=!1}={})=>{let t=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(t,e?void 0:"g")}});var gk=G((FQt,Soe)=>{"use strict";var pKe=voe();Soe.exports=e=>typeof e=="string"?e.replace(pKe(),""):e});function Doe(e){return Number.isSafeInteger(e)&&e>=0}var boe=Ze(()=>{});function Poe(e){return e!=null&&typeof e!="function"&&Doe(e.length)}var xoe=Ze(()=>{boe()});function Pc(e){return e==="__proto__"}var h2=Ze(()=>{});function ME(e){switch(typeof e){case"number":case"symbol":return!1;case"string":return e.includes(".")||e.includes("[")||e.includes("]")}}var dk=Ze(()=>{});function UE(e){return typeof e=="string"||typeof e=="symbol"?e:Object.is(e?.valueOf?.(),-0)?"-0":String(e)}var mk=Ze(()=>{});function Ou(e){let t=[],r=e.length;if(r===0)return t;let s=0,a="",n="",c=!1;for(e.charCodeAt(0)===46&&(t.push(""),s++);s{});function ba(e,t,r){if(e==null)return r;switch(typeof t){case"string":{if(Pc(t))return r;let s=e[t];return s===void 0?ME(t)?ba(e,Ou(t),r):r:s}case"number":case"symbol":{typeof t=="number"&&(t=UE(t));let s=e[t];return s===void 0?r:s}default:{if(Array.isArray(t))return hKe(e,t,r);if(Object.is(t?.valueOf(),-0)?t="-0":t=String(t),Pc(t))return r;let s=e[t];return s===void 0?r:s}}}function hKe(e,t,r){if(t.length===0)return r;let s=e;for(let a=0;a{h2();dk();mk();_E()});function s4(e){return e!==null&&(typeof e=="object"||typeof e=="function")}var koe=Ze(()=>{});function HE(e){return e==null||typeof e!="object"&&typeof e!="function"}var Ek=Ze(()=>{});function Ik(e,t){return e===t||Number.isNaN(e)&&Number.isNaN(t)}var o4=Ze(()=>{});function Gd(e){return Object.getOwnPropertySymbols(e).filter(t=>Object.prototype.propertyIsEnumerable.call(e,t))}var Ck=Ze(()=>{});function qd(e){return e==null?e===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}var wk=Ze(()=>{});var Bk,jE,GE,qE,Wd,vk,Sk,Dk,bk,Pk,Qoe,xk,WE,Roe,kk,Qk,Rk,Tk,Fk,Toe,Nk,Ok,Lk,Foe,Mk,Uk,_k=Ze(()=>{Bk="[object RegExp]",jE="[object String]",GE="[object Number]",qE="[object Boolean]",Wd="[object Arguments]",vk="[object Symbol]",Sk="[object Date]",Dk="[object Map]",bk="[object Set]",Pk="[object Array]",Qoe="[object Function]",xk="[object ArrayBuffer]",WE="[object Object]",Roe="[object Error]",kk="[object DataView]",Qk="[object Uint8Array]",Rk="[object Uint8ClampedArray]",Tk="[object Uint16Array]",Fk="[object Uint32Array]",Toe="[object BigUint64Array]",Nk="[object Int8Array]",Ok="[object Int16Array]",Lk="[object Int32Array]",Foe="[object BigInt64Array]",Mk="[object Float32Array]",Uk="[object Float64Array]"});function VE(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}var Hk=Ze(()=>{});function Noe(e,t){return l0(e,void 0,e,new Map,t)}function l0(e,t,r,s=new Map,a=void 0){let n=a?.(e,t,r,s);if(n!=null)return n;if(HE(e))return e;if(s.has(e))return s.get(e);if(Array.isArray(e)){let c=new Array(e.length);s.set(e,c);for(let f=0;f{Ck();wk();_k();Ek();Hk()});function Ooe(e){return l0(e,void 0,e,new Map,void 0)}var Loe=Ze(()=>{a4()});function Moe(e,t){return Noe(e,(r,s,a,n)=>{let c=t?.(r,s,a,n);if(c!=null)return c;if(typeof e=="object")switch(Object.prototype.toString.call(e)){case GE:case jE:case qE:{let f=new e.constructor(e?.valueOf());return a0(f,e),f}case Wd:{let f={};return a0(f,e),f.length=e.length,f[Symbol.iterator]=e[Symbol.iterator],f}default:return}})}var Uoe=Ze(()=>{a4();_k()});function c0(e){return Moe(e)}var l4=Ze(()=>{Uoe()});function jk(e,t=Number.MAX_SAFE_INTEGER){switch(typeof e){case"number":return Number.isInteger(e)&&e>=0&&e{dKe=/^(?:0|[1-9]\d*)$/});function g2(e){return e!==null&&typeof e=="object"&&qd(e)==="[object Arguments]"}var u4=Ze(()=>{wk()});function d2(e,t){let r;if(Array.isArray(t)?r=t:typeof t=="string"&&ME(t)&&e?.[t]==null?r=Ou(t):r=[t],r.length===0)return!1;let s=e;for(let a=0;a{dk();c4();u4();_E()});function A4(e){return typeof e=="object"&&e!==null}var _oe=Ze(()=>{});function Hoe(e){return typeof e=="symbol"||e instanceof Symbol}var joe=Ze(()=>{});function Goe(e,t){return Array.isArray(e)?!1:typeof e=="number"||typeof e=="boolean"||e==null||Hoe(e)?!0:typeof e=="string"&&(yKe.test(e)||!mKe.test(e))||t!=null&&Object.hasOwn(t,e)}var mKe,yKe,qoe=Ze(()=>{joe();mKe=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,yKe=/^\w*$/});function u0(e,t){if(e==null)return!0;switch(typeof t){case"symbol":case"number":case"object":{if(Array.isArray(t))return Woe(e,t);if(typeof t=="number"?t=UE(t):typeof t=="object"&&(Object.is(t?.valueOf(),-0)?t="-0":t=String(t)),Pc(t))return!1;if(e?.[t]===void 0)return!0;try{return delete e[t],!0}catch{return!1}}case"string":{if(e?.[t]===void 0&&ME(t))return Woe(e,Ou(t));if(Pc(t))return!1;try{return delete e[t],!0}catch{return!1}}}}function Woe(e,t){let r=ba(e,t.slice(0,-1),e),s=t[t.length-1];if(r?.[s]===void 0)return!0;if(Pc(s))return!1;try{return delete r[s],!0}catch{return!1}}var p4=Ze(()=>{yk();h2();dk();mk();_E()});function Voe(e){return e==null}var Yoe=Ze(()=>{});var Koe,Joe=Ze(()=>{o4();Koe=(e,t,r)=>{let s=e[t];(!(Object.hasOwn(e,t)&&Ik(s,r))||r===void 0&&!(t in e))&&(e[t]=r)}});function zoe(e,t,r,s){if(e==null&&!s4(e))return e;let a=Goe(t,e)?[t]:Array.isArray(t)?t:typeof t=="string"?Ou(t):[t],n=e;for(let c=0;c{h2();Joe();c4();qoe();mk();koe();_E()});function Vd(e,t,r){return zoe(e,t,()=>r,()=>{})}var h4=Ze(()=>{Zoe()});function Xoe(e,t=0,r={}){typeof r!="object"&&(r={});let s=null,a=null,n=null,c=0,f=null,p,{leading:h=!1,trailing:E=!0,maxWait:C}=r,S="maxWait"in r,x=S?Math.max(Number(C)||0,t):0,I=ue=>(s!==null&&(p=e.apply(a,s)),s=a=null,c=ue,p),T=ue=>(c=ue,f=setTimeout(te,t),h&&s!==null?I(ue):p),O=ue=>(f=null,E&&s!==null?I(ue):p),U=ue=>{if(n===null)return!0;let ae=ue-n,de=ae>=t||ae<0,Ae=S&&ue-c>=x;return de||Ae},Y=ue=>{let ae=n===null?0:ue-n,de=t-ae,Ae=x-(ue-c);return S?Math.min(de,Ae):de},te=()=>{let ue=Date.now();if(U(ue))return O(ue);f=setTimeout(te,Y(ue))},ie=function(...ue){let ae=Date.now(),de=U(ae);if(s=ue,a=this,n=ae,de){if(f===null)return T(ae);if(S)return clearTimeout(f),f=setTimeout(te,t),I(ae)}return f===null&&(f=setTimeout(te,t)),p};return ie.cancel=()=>{f!==null&&clearTimeout(f),c=0,n=s=a=f=null},ie.flush=()=>f===null?p:O(Date.now()),ie}var $oe=Ze(()=>{});function g4(e,t=0,r={}){let{leading:s=!0,trailing:a=!0}=r;return Xoe(e,t,{leading:s,maxWait:t,trailing:a})}var eae=Ze(()=>{$oe()});function d4(e){if(e==null)return"";if(typeof e=="string")return e;if(Array.isArray(e))return e.map(d4).join(",");let t=String(e);return t==="0"&&Object.is(Number(e),-0)?"-0":t}var tae=Ze(()=>{});function m4(e){if(!e||typeof e!="object")return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype||Object.getPrototypeOf(t)===null?Object.prototype.toString.call(e)==="[object Object]":!1}var rae=Ze(()=>{});function nae(e,t,r){return m2(e,t,void 0,void 0,void 0,void 0,r)}function m2(e,t,r,s,a,n,c){let f=c(e,t,r,s,a,n);if(f!==void 0)return f;if(typeof e==typeof t)switch(typeof e){case"bigint":case"string":case"boolean":case"symbol":case"undefined":return e===t;case"number":return e===t||Object.is(e,t);case"function":return e===t;case"object":return y2(e,t,n,c)}return y2(e,t,n,c)}function y2(e,t,r,s){if(Object.is(e,t))return!0;let a=qd(e),n=qd(t);if(a===Wd&&(a=WE),n===Wd&&(n=WE),a!==n)return!1;switch(a){case jE:return e.toString()===t.toString();case GE:{let p=e.valueOf(),h=t.valueOf();return Ik(p,h)}case qE:case Sk:case vk:return Object.is(e.valueOf(),t.valueOf());case Bk:return e.source===t.source&&e.flags===t.flags;case Qoe:return e===t}r=r??new Map;let c=r.get(e),f=r.get(t);if(c!=null&&f!=null)return c===t;r.set(e,t),r.set(t,e);try{switch(a){case Dk:{if(e.size!==t.size)return!1;for(let[p,h]of e.entries())if(!t.has(p)||!m2(h,t.get(p),p,e,t,r,s))return!1;return!0}case bk:{if(e.size!==t.size)return!1;let p=Array.from(e.values()),h=Array.from(t.values());for(let E=0;Em2(C,x,void 0,e,t,r,s));if(S===-1)return!1;h.splice(S,1)}return!0}case Pk:case Qk:case Rk:case Tk:case Fk:case Toe:case Nk:case Ok:case Lk:case Foe:case Mk:case Uk:{if(typeof Buffer<"u"&&Buffer.isBuffer(e)!==Buffer.isBuffer(t)||e.length!==t.length)return!1;for(let p=0;p{rae();Ck();wk();_k();o4()});function sae(){}var oae=Ze(()=>{});function y4(e,t){return nae(e,t,sae)}var aae=Ze(()=>{iae();oae()});function lae(e){return VE(e)}var cae=Ze(()=>{Hk()});function uae(e){if(typeof e!="object"||e==null)return!1;if(Object.getPrototypeOf(e)===null)return!0;if(Object.prototype.toString.call(e)!=="[object Object]"){let r=e[Symbol.toStringTag];return r==null||!Object.getOwnPropertyDescriptor(e,Symbol.toStringTag)?.writable?!1:e.toString()===`[object ${r}]`}let t=e;for(;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}var fae=Ze(()=>{});function Aae(e){if(HE(e))return e;if(Array.isArray(e)||VE(e)||e instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&e instanceof SharedArrayBuffer)return e.slice(0);let t=Object.getPrototypeOf(e),r=t.constructor;if(e instanceof Date||e instanceof Map||e instanceof Set)return new r(e);if(e instanceof RegExp){let s=new r(e);return s.lastIndex=e.lastIndex,s}if(e instanceof DataView)return new r(e.buffer.slice(0));if(e instanceof Error){let s=new r(e.message);return s.stack=e.stack,s.name=e.name,s.cause=e.cause,s}if(typeof File<"u"&&e instanceof File)return new r([e],e.name,{type:e.type,lastModified:e.lastModified});if(typeof e=="object"){let s=Object.create(t);return Object.assign(s,e)}return e}var pae=Ze(()=>{Ek();Hk()});function E4(e,...t){let r=t.slice(0,-1),s=t[t.length-1],a=e;for(let n=0;n{l4();h2();pae();Ek();Ck();u4();_oe();fae();cae()});function I4(e,...t){if(e==null)return{};let r=Ooe(e);for(let s=0;s{p4();Loe()});function Yd(e,...t){if(Voe(e))return{};let r={};for(let s=0;s{yk();f4();h4();xoe();Yoe()});function mae(e){return e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()}var yae=Ze(()=>{});function E2(e){return mae(d4(e))}var Eae=Ze(()=>{yae();tae()});var Jl=Ze(()=>{eae();aae();l4();yk();f4();hae();gae();dae();h4();p4();Eae();_E()});var Ge={};Yt(Ge,{AsyncActions:()=>B4,BufferStream:()=>w4,CachingStrategy:()=>xae,DefaultStream:()=>v4,allSettledSafe:()=>Lu,assertNever:()=>b4,bufferStream:()=>KE,buildIgnorePattern:()=>SKe,convertMapsToIndexableObjects:()=>Wk,dynamicRequire:()=>xp,escapeRegExp:()=>IKe,getArrayWithDefault:()=>C2,getFactoryWithDefault:()=>Zl,getMapWithDefault:()=>P4,getSetWithDefault:()=>Pp,groupBy:()=>PKe,isIndexableObject:()=>C4,isPathLike:()=>DKe,isTaggedYarnVersion:()=>EKe,makeDeferred:()=>Dae,mapAndFilter:()=>zl,mapAndFind:()=>f0,mergeIntoTarget:()=>Qae,overrideType:()=>CKe,parseBoolean:()=>w2,parseDuration:()=>Yk,parseInt:()=>JE,parseOptionalBoolean:()=>kae,plural:()=>qk,prettifyAsyncErrors:()=>YE,prettifySyncErrors:()=>x4,releaseAfterUseAsync:()=>BKe,replaceEnvVariables:()=>Vk,sortMap:()=>Ys,toMerged:()=>bKe,tryParseOptionalBoolean:()=>k4,validateEnum:()=>wKe});function EKe(e){return!!(Bae.default.valid(e)&&e.match(/^[^-]+(-rc\.[0-9]+)?$/))}function qk(e,{one:t,more:r,zero:s=r}){return e===0?s:e===1?t:r}function IKe(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function CKe(e){}function b4(e){throw new Error(`Assertion failed: Unexpected object '${e}'`)}function wKe(e,t){let r=Object.values(e);if(!r.includes(t))throw new st(`Invalid value for enumeration: ${JSON.stringify(t)} (expected one of ${r.map(s=>JSON.stringify(s)).join(", ")})`);return t}function zl(e,t){let r=[];for(let s of e){let a=t(s);a!==vae&&r.push(a)}return r}function f0(e,t){for(let r of e){let s=t(r);if(s!==Sae)return s}}function C4(e){return typeof e=="object"&&e!==null}async function Lu(e){let t=await Promise.allSettled(e),r=[];for(let s of t){if(s.status==="rejected")throw s.reason;r.push(s.value)}return r}function Wk(e){if(e instanceof Map&&(e=Object.fromEntries(e)),C4(e))for(let t of Object.keys(e)){let r=e[t];C4(r)&&(e[t]=Wk(r))}return e}function Zl(e,t,r){let s=e.get(t);return typeof s>"u"&&e.set(t,s=r()),s}function C2(e,t){let r=e.get(t);return typeof r>"u"&&e.set(t,r=[]),r}function Pp(e,t){let r=e.get(t);return typeof r>"u"&&e.set(t,r=new Set),r}function P4(e,t){let r=e.get(t);return typeof r>"u"&&e.set(t,r=new Map),r}async function BKe(e,t){if(t==null)return await e();try{return await e()}finally{await t()}}async function YE(e,t){try{return await e()}catch(r){throw r.message=t(r.message),r}}function x4(e,t){try{return e()}catch(r){throw r.message=t(r.message),r}}async function KE(e){return await new Promise((t,r)=>{let s=[];e.on("error",a=>{r(a)}),e.on("data",a=>{s.push(a)}),e.on("end",()=>{t(Buffer.concat(s))})})}function Dae(){let e,t;return{promise:new Promise((s,a)=>{e=s,t=a}),resolve:e,reject:t}}function bae(e){return I2(fe.fromPortablePath(e))}function Pae(path){let physicalPath=fe.fromPortablePath(path),currentCacheEntry=I2.cache[physicalPath];delete I2.cache[physicalPath];let result;try{result=bae(physicalPath);let freshCacheEntry=I2.cache[physicalPath],dynamicModule=eval("module"),freshCacheIndex=dynamicModule.children.indexOf(freshCacheEntry);freshCacheIndex!==-1&&dynamicModule.children.splice(freshCacheIndex,1)}finally{I2.cache[physicalPath]=currentCacheEntry}return result}function vKe(e){let t=Iae.get(e),r=le.statSync(e);if(t?.mtime===r.mtimeMs)return t.instance;let s=Pae(e);return Iae.set(e,{mtime:r.mtimeMs,instance:s}),s}function xp(e,{cachingStrategy:t=2}={}){switch(t){case 0:return Pae(e);case 1:return vKe(e);case 2:return bae(e);default:throw new Error("Unsupported caching strategy")}}function Ys(e,t){let r=Array.from(e);Array.isArray(t)||(t=[t]);let s=[];for(let n of t)s.push(r.map(c=>n(c)));let a=r.map((n,c)=>c);return a.sort((n,c)=>{for(let f of s){let p=f[n]f[c]?1:0;if(p!==0)return p}return 0}),a.map(n=>r[n])}function SKe(e){return e.length===0?null:e.map(t=>`(${Cae.default.makeRe(t,{windows:!1,dot:!0}).source})`).join("|")}function Vk(e,{env:t}){let r="",s=0,a=0,n=e.matchAll(/\\(?[\\$}])|\$\{(?[a-zA-Z]\w*)(?:-|-|(?=\}))|(?\$\{)|\}/g),c=()=>{let f=a;for(let{0:p,index:h,groups:{variable:E}={}}of n)if(E)a++;else if(p==="}"&&--a0)throw new st(`Incomplete variable substitution in input: ${e}`);return r+e.slice(s)}function w2(e){switch(e){case"true":case"1":case 1:case!0:return!0;case"false":case"0":case 0:case!1:return!1;default:throw new Error(`Couldn't parse "${e}" as a boolean`)}}function kae(e){return typeof e>"u"?e:w2(e)}function k4(e){try{return kae(e)}catch{return null}}function DKe(e){return!!(fe.isAbsolute(e)||e.match(/^(\.{1,2}|~)\//))}function Qae(e,...t){let r=c=>({value:c}),s=r(e),a=t.map(c=>r(c)),{value:n}=E4(s,...a,(c,f)=>{if(Array.isArray(c)&&Array.isArray(f)){for(let p of f)c.find(h=>y4(h,p))||c.push(p);return c}});return n}function bKe(...e){return Qae({},...e)}function PKe(e,t){let r=Object.create(null);for(let s of e){let a=s[t];r[a]??=[],r[a].push(s)}return r}function JE(e){return typeof e=="string"?Number.parseInt(e,10):e}function Yk(e,t){let r=xKe.exec(e)?.groups;if(!r)throw new Error(`Couldn't parse "${e}" as a duration`);if(r.unit===void 0)return parseFloat(r.num);let s=S4[r.unit];if(!s)throw new Error(`Invalid duration unit "${r.unit}"`);return parseFloat(r.num)*s/S4[t]}var Cae,wae,Bae,D4,vae,Sae,w4,B4,v4,I2,Iae,xae,S4,xKe,xc=Ze(()=>{Dt();Vt();Jl();Cae=et(Jo()),wae=et(Nd()),Bae=et(pi()),D4=Ie("stream");vae=Symbol();zl.skip=vae;Sae=Symbol();f0.skip=Sae;w4=class extends D4.Transform{constructor(){super(...arguments);this.chunks=[]}_transform(r,s,a){if(s!=="buffer"||!Buffer.isBuffer(r))throw new Error("Assertion failed: BufferStream only accept buffers");this.chunks.push(r),a(null,null)}_flush(r){r(null,Buffer.concat(this.chunks))}};B4=class{constructor(t){this.deferred=new Map;this.promises=new Map;this.limit=(0,wae.default)(t)}set(t,r){let s=this.deferred.get(t);typeof s>"u"&&this.deferred.set(t,s=Dae());let a=this.limit(()=>r());return this.promises.set(t,a),a.then(()=>{this.promises.get(t)===a&&s.resolve()},n=>{this.promises.get(t)===a&&s.reject(n)}),s.promise}reduce(t,r){let s=this.promises.get(t)??Promise.resolve();this.set(t,()=>r(s))}async wait(){await Promise.all(this.promises.values())}},v4=class extends D4.Transform{constructor(r=Buffer.alloc(0)){super();this.active=!0;this.ifEmpty=r}_transform(r,s,a){if(s!=="buffer"||!Buffer.isBuffer(r))throw new Error("Assertion failed: DefaultStream only accept buffers");this.active=!1,a(null,r)}_flush(r){this.active&&this.ifEmpty.length>0?r(null,this.ifEmpty):r(null)}},I2=eval("require");Iae=new Map;xae=(s=>(s[s.NoCache=0]="NoCache",s[s.FsTime=1]="FsTime",s[s.Node=2]="Node",s))(xae||{});S4={ms:1,s:1e3,m:60*1e3,h:60*60*1e3,d:24*60*60*1e3,w:7*24*60*60*1e3},xKe=new RegExp(`^(?\\d*\\.?\\d+)(?${Object.keys(S4).join("|")})?$`)});var zE,Q4,R4,Rae=Ze(()=>{zE=(r=>(r.HARD="HARD",r.SOFT="SOFT",r))(zE||{}),Q4=(s=>(s.Dependency="Dependency",s.PeerDependency="PeerDependency",s.PeerDependencyMeta="PeerDependencyMeta",s))(Q4||{}),R4=(s=>(s.Inactive="inactive",s.Redundant="redundant",s.Active="active",s))(R4||{})});var pe={};Yt(pe,{LogLevel:()=>$k,Style:()=>zk,Type:()=>gt,addLogFilterSupport:()=>S2,applyColor:()=>si,applyHyperlink:()=>XE,applyStyle:()=>Kd,json:()=>Jd,jsonOrPretty:()=>RKe,mark:()=>L4,pretty:()=>jt,prettyField:()=>Zf,prettyList:()=>O4,prettyTruncatedLocatorList:()=>Xk,stripAnsi:()=>ZE.default,supportsColor:()=>Zk,supportsHyperlinks:()=>N4,tuple:()=>Mu});function Tae(e){let t=["KiB","MiB","GiB","TiB"],r=t.length;for(;r>1&&e<1024**r;)r-=1;let s=1024**r;return`${Math.floor(e*100/s)/100} ${t[r-1]}`}function Kk(e,t){if(Array.isArray(t))return t.length===0?si(e,"[]",gt.CODE):si(e,"[ ",gt.CODE)+t.map(r=>Kk(e,r)).join(", ")+si(e," ]",gt.CODE);if(typeof t=="string")return si(e,JSON.stringify(t),gt.STRING);if(typeof t=="number")return si(e,JSON.stringify(t),gt.NUMBER);if(typeof t=="boolean")return si(e,JSON.stringify(t),gt.BOOLEAN);if(t===null)return si(e,"null",gt.NULL);if(typeof t=="object"&&Object.getPrototypeOf(t)===Object.prototype){let r=Object.entries(t);return r.length===0?si(e,"{}",gt.CODE):si(e,"{ ",gt.CODE)+r.map(([s,a])=>`${Kk(e,s)}: ${Kk(e,a)}`).join(", ")+si(e," }",gt.CODE)}if(typeof t>"u")return si(e,"undefined",gt.NULL);throw new Error("Assertion failed: The value doesn't seem to be a valid JSON object")}function Mu(e,t){return[t,e]}function Kd(e,t,r){return e.get("enableColors")&&r&2&&(t=v2.default.bold(t)),t}function si(e,t,r){if(!e.get("enableColors"))return t;let s=kKe.get(r);if(s===null)return t;let a=typeof s>"u"?r:F4.level>=3?s[0]:s[1],n=typeof a=="number"?T4.ansi256(a):a.startsWith("#")?T4.hex(a):T4[a];if(typeof n!="function")throw new Error(`Invalid format type ${a}`);return n(t)}function XE(e,t,r){return e.get("enableHyperlinks")?QKe?`\x1B]8;;${r}\x1B\\${t}\x1B]8;;\x1B\\`:`\x1B]8;;${r}\x07${t}\x1B]8;;\x07`:t}function jt(e,t,r){if(t===null)return si(e,"null",gt.NULL);if(Object.hasOwn(Jk,r))return Jk[r].pretty(e,t);if(typeof t!="string")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof t}`);return si(e,t,r)}function O4(e,t,r,{separator:s=", "}={}){return[...t].map(a=>jt(e,a,r)).join(s)}function Jd(e,t){if(e===null)return null;if(Object.hasOwn(Jk,t))return Jk[t].json(e);if(typeof e!="string")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof e}`);return e}function RKe(e,t,[r,s]){return e?Jd(r,s):jt(t,r,s)}function L4(e){return{Check:si(e,"\u2713","green"),Cross:si(e,"\u2718","red"),Question:si(e,"?","cyan")}}function Zf(e,{label:t,value:[r,s]}){return`${jt(e,t,gt.CODE)}: ${jt(e,r,s)}`}function Xk(e,t,r){let s=[],a=[...t],n=r;for(;a.length>0;){let h=a[0],E=`${Vr(e,h)}, `,C=M4(h).length+2;if(s.length>0&&nh).join("").slice(0,-2);let c="X".repeat(a.length.toString().length),f=`and ${c} more.`,p=a.length;for(;s.length>1&&nh).join(""),f.replace(c,jt(e,p,gt.NUMBER))].join("")}function S2(e,{configuration:t}){let r=t.get("logFilters"),s=new Map,a=new Map,n=[];for(let C of r){let S=C.get("level");if(typeof S>"u")continue;let x=C.get("code");typeof x<"u"&&s.set(x,S);let I=C.get("text");typeof I<"u"&&a.set(I,S);let T=C.get("pattern");typeof T<"u"&&n.push([Fae.default.matcher(T,{contains:!0}),S])}n.reverse();let c=(C,S,x)=>{if(C===null||C===0)return x;let I=a.size>0||n.length>0?(0,ZE.default)(S):S;if(a.size>0){let T=a.get(I);if(typeof T<"u")return T??x}if(n.length>0){for(let[T,O]of n)if(T(I))return O??x}if(s.size>0){let T=s.get(Kf(C));if(typeof T<"u")return T??x}return x},f=e.reportInfo,p=e.reportWarning,h=e.reportError,E=function(C,S,x,I){switch(c(S,x,I)){case"info":f.call(C,S,x);break;case"warning":p.call(C,S??0,x);break;case"error":h.call(C,S??0,x);break}};e.reportInfo=function(...C){return E(this,...C,"info")},e.reportWarning=function(...C){return E(this,...C,"warning")},e.reportError=function(...C){return E(this,...C,"error")}}var v2,B2,Fae,ZE,gt,zk,F4,Zk,N4,T4,kKe,zo,Jk,QKe,$k,kc=Ze(()=>{Dt();v2=et(NE()),B2=et(Rd());Vt();Fae=et(Jo()),ZE=et(gk());Gx();Zo();gt={NO_HINT:"NO_HINT",ID:"ID",NULL:"NULL",SCOPE:"SCOPE",NAME:"NAME",RANGE:"RANGE",REFERENCE:"REFERENCE",NUMBER:"NUMBER",STRING:"STRING",BOOLEAN:"BOOLEAN",PATH:"PATH",URL:"URL",ADDED:"ADDED",REMOVED:"REMOVED",CODE:"CODE",INSPECT:"INSPECT",DURATION:"DURATION",SIZE:"SIZE",SIZE_DIFF:"SIZE_DIFF",IDENT:"IDENT",DESCRIPTOR:"DESCRIPTOR",LOCATOR:"LOCATOR",RESOLUTION:"RESOLUTION",DEPENDENT:"DEPENDENT",PACKAGE_EXTENSION:"PACKAGE_EXTENSION",SETTING:"SETTING",MARKDOWN:"MARKDOWN",MARKDOWN_INLINE:"MARKDOWN_INLINE"},zk=(t=>(t[t.BOLD=2]="BOLD",t))(zk||{}),F4=B2.default.GITHUB_ACTIONS?{level:2}:v2.default.supportsColor?{level:v2.default.supportsColor.level}:{level:0},Zk=F4.level!==0,N4=Zk&&!B2.default.GITHUB_ACTIONS&&!B2.default.CIRCLE&&!B2.default.GITLAB,T4=new v2.default.Instance(F4),kKe=new Map([[gt.NO_HINT,null],[gt.NULL,["#a853b5",129]],[gt.SCOPE,["#d75f00",166]],[gt.NAME,["#d7875f",173]],[gt.RANGE,["#00afaf",37]],[gt.REFERENCE,["#87afff",111]],[gt.NUMBER,["#ffd700",220]],[gt.STRING,["#b4bd68",32]],[gt.BOOLEAN,["#faa023",209]],[gt.PATH,["#d75fd7",170]],[gt.URL,["#d75fd7",170]],[gt.ADDED,["#5faf00",70]],[gt.REMOVED,["#ff3131",160]],[gt.CODE,["#87afff",111]],[gt.SIZE,["#ffd700",220]]]),zo=e=>e;Jk={[gt.ID]:zo({pretty:(e,t)=>typeof t=="number"?si(e,`${t}`,gt.NUMBER):si(e,t,gt.CODE),json:e=>e}),[gt.INSPECT]:zo({pretty:(e,t)=>Kk(e,t),json:e=>e}),[gt.NUMBER]:zo({pretty:(e,t)=>si(e,`${t}`,gt.NUMBER),json:e=>e}),[gt.IDENT]:zo({pretty:(e,t)=>$i(e,t),json:e=>fn(e)}),[gt.LOCATOR]:zo({pretty:(e,t)=>Vr(e,t),json:e=>gl(e)}),[gt.DESCRIPTOR]:zo({pretty:(e,t)=>oi(e,t),json:e=>hl(e)}),[gt.RESOLUTION]:zo({pretty:(e,{descriptor:t,locator:r})=>D2(e,t,r),json:({descriptor:e,locator:t})=>({descriptor:hl(e),locator:t!==null?gl(t):null})}),[gt.DEPENDENT]:zo({pretty:(e,{locator:t,descriptor:r})=>U4(e,t,r),json:({locator:e,descriptor:t})=>({locator:gl(e),descriptor:hl(t)})}),[gt.PACKAGE_EXTENSION]:zo({pretty:(e,t)=>{switch(t.type){case"Dependency":return`${$i(e,t.parentDescriptor)} \u27A4 ${si(e,"dependencies",gt.CODE)} \u27A4 ${$i(e,t.descriptor)}`;case"PeerDependency":return`${$i(e,t.parentDescriptor)} \u27A4 ${si(e,"peerDependencies",gt.CODE)} \u27A4 ${$i(e,t.descriptor)}`;case"PeerDependencyMeta":return`${$i(e,t.parentDescriptor)} \u27A4 ${si(e,"peerDependenciesMeta",gt.CODE)} \u27A4 ${$i(e,Pa(t.selector))} \u27A4 ${si(e,t.key,gt.CODE)}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${t.type}`)}},json:e=>{switch(e.type){case"Dependency":return`${fn(e.parentDescriptor)} > ${fn(e.descriptor)}`;case"PeerDependency":return`${fn(e.parentDescriptor)} >> ${fn(e.descriptor)}`;case"PeerDependencyMeta":return`${fn(e.parentDescriptor)} >> ${e.selector} / ${e.key}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${e.type}`)}}}),[gt.SETTING]:zo({pretty:(e,t)=>(e.get(t),XE(e,si(e,t,gt.CODE),`https://yarnpkg.com/configuration/yarnrc#${t}`)),json:e=>e}),[gt.DURATION]:zo({pretty:(e,t)=>{if(t>1e3*60){let r=Math.floor(t/1e3/60),s=Math.ceil((t-r*60*1e3)/1e3);return s===0?`${r}m`:`${r}m ${s}s`}else{let r=Math.floor(t/1e3),s=t-r*1e3;return s===0?`${r}s`:`${r}s ${s}ms`}},json:e=>e}),[gt.SIZE]:zo({pretty:(e,t)=>si(e,Tae(t),gt.NUMBER),json:e=>e}),[gt.SIZE_DIFF]:zo({pretty:(e,t)=>{let r=t>=0?"+":"-",s=r==="+"?gt.REMOVED:gt.ADDED;return si(e,`${r} ${Tae(Math.max(Math.abs(t),1))}`,s)},json:e=>e}),[gt.PATH]:zo({pretty:(e,t)=>si(e,fe.fromPortablePath(t),gt.PATH),json:e=>fe.fromPortablePath(e)}),[gt.MARKDOWN]:zo({pretty:(e,{text:t,format:r,paragraphs:s})=>Vo(t,{format:r,paragraphs:s}),json:({text:e})=>e}),[gt.MARKDOWN_INLINE]:zo({pretty:(e,t)=>(t=t.replace(/(`+)((?:.|[\n])*?)\1/g,(r,s,a)=>jt(e,s+a+s,gt.CODE)),t=t.replace(/(\*\*)((?:.|[\n])*?)\1/g,(r,s,a)=>Kd(e,a,2)),t),json:e=>e})};QKe=!!process.env.KONSOLE_VERSION;$k=(a=>(a.Error="error",a.Warning="warning",a.Info="info",a.Discard="discard",a))($k||{})});var Nae=G($E=>{"use strict";Object.defineProperty($E,"__esModule",{value:!0});$E.splitWhen=$E.flatten=void 0;function TKe(e){return e.reduce((t,r)=>[].concat(t,r),[])}$E.flatten=TKe;function FKe(e,t){let r=[[]],s=0;for(let a of e)t(a)?(s++,r[s]=[]):r[s].push(a);return r}$E.splitWhen=FKe});var Oae=G(eQ=>{"use strict";Object.defineProperty(eQ,"__esModule",{value:!0});eQ.isEnoentCodeError=void 0;function NKe(e){return e.code==="ENOENT"}eQ.isEnoentCodeError=NKe});var Lae=G(tQ=>{"use strict";Object.defineProperty(tQ,"__esModule",{value:!0});tQ.createDirentFromStats=void 0;var _4=class{constructor(t,r){this.name=t,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function OKe(e,t){return new _4(e,t)}tQ.createDirentFromStats=OKe});var Hae=G(us=>{"use strict";Object.defineProperty(us,"__esModule",{value:!0});us.convertPosixPathToPattern=us.convertWindowsPathToPattern=us.convertPathToPattern=us.escapePosixPath=us.escapeWindowsPath=us.escape=us.removeLeadingDotSegment=us.makeAbsolute=us.unixify=void 0;var LKe=Ie("os"),MKe=Ie("path"),Mae=LKe.platform()==="win32",UKe=2,_Ke=/(\\?)([()*?[\]{|}]|^!|[!+@](?=\()|\\(?![!()*+?@[\]{|}]))/g,HKe=/(\\?)([()[\]{}]|^!|[!+@](?=\())/g,jKe=/^\\\\([.?])/,GKe=/\\(?![!()+@[\]{}])/g;function qKe(e){return e.replace(/\\/g,"/")}us.unixify=qKe;function WKe(e,t){return MKe.resolve(e,t)}us.makeAbsolute=WKe;function VKe(e){if(e.charAt(0)==="."){let t=e.charAt(1);if(t==="/"||t==="\\")return e.slice(UKe)}return e}us.removeLeadingDotSegment=VKe;us.escape=Mae?H4:j4;function H4(e){return e.replace(HKe,"\\$2")}us.escapeWindowsPath=H4;function j4(e){return e.replace(_Ke,"\\$2")}us.escapePosixPath=j4;us.convertPathToPattern=Mae?Uae:_ae;function Uae(e){return H4(e).replace(jKe,"//$1").replace(GKe,"/")}us.convertWindowsPathToPattern=Uae;function _ae(e){return j4(e)}us.convertPosixPathToPattern=_ae});var Gae=G((lFt,jae)=>{jae.exports=function(t){if(typeof t!="string"||t==="")return!1;for(var r;r=/(\\).|([@?!+*]\(.*\))/g.exec(t);){if(r[2])return!0;t=t.slice(r.index+r[0].length)}return!1}});var Vae=G((cFt,Wae)=>{var YKe=Gae(),qae={"{":"}","(":")","[":"]"},KKe=function(e){if(e[0]==="!")return!0;for(var t=0,r=-2,s=-2,a=-2,n=-2,c=-2;tt&&(c===-1||c>s||(c=e.indexOf("\\",t),c===-1||c>s)))||a!==-1&&e[t]==="{"&&e[t+1]!=="}"&&(a=e.indexOf("}",t),a>t&&(c=e.indexOf("\\",t),c===-1||c>a))||n!==-1&&e[t]==="("&&e[t+1]==="?"&&/[:!=]/.test(e[t+2])&&e[t+3]!==")"&&(n=e.indexOf(")",t),n>t&&(c=e.indexOf("\\",t),c===-1||c>n))||r!==-1&&e[t]==="("&&e[t+1]!=="|"&&(rr&&(c=e.indexOf("\\",r),c===-1||c>n))))return!0;if(e[t]==="\\"){var f=e[t+1];t+=2;var p=qae[f];if(p){var h=e.indexOf(p,t);h!==-1&&(t=h+1)}if(e[t]==="!")return!0}else t++}return!1},JKe=function(e){if(e[0]==="!")return!0;for(var t=0;t{"use strict";var zKe=Vae(),ZKe=Ie("path").posix.dirname,XKe=Ie("os").platform()==="win32",G4="/",$Ke=/\\/g,eJe=/[\{\[].*[\}\]]$/,tJe=/(^|[^\\])([\{\[]|\([^\)]+$)/,rJe=/\\([\!\*\?\|\[\]\(\)\{\}])/g;Yae.exports=function(t,r){var s=Object.assign({flipBackslashes:!0},r);s.flipBackslashes&&XKe&&t.indexOf(G4)<0&&(t=t.replace($Ke,G4)),eJe.test(t)&&(t+=G4),t+="a";do t=ZKe(t);while(zKe(t)||tJe.test(t));return t.replace(rJe,"$1")}});var rle=G(jr=>{"use strict";Object.defineProperty(jr,"__esModule",{value:!0});jr.removeDuplicateSlashes=jr.matchAny=jr.convertPatternsToRe=jr.makeRe=jr.getPatternParts=jr.expandBraceExpansion=jr.expandPatternsWithBraceExpansion=jr.isAffectDepthOfReadingPattern=jr.endsWithSlashGlobStar=jr.hasGlobStar=jr.getBaseDirectory=jr.isPatternRelatedToParentDirectory=jr.getPatternsOutsideCurrentDirectory=jr.getPatternsInsideCurrentDirectory=jr.getPositivePatterns=jr.getNegativePatterns=jr.isPositivePattern=jr.isNegativePattern=jr.convertToNegativePattern=jr.convertToPositivePattern=jr.isDynamicPattern=jr.isStaticPattern=void 0;var nJe=Ie("path"),iJe=Kae(),q4=Jo(),Jae="**",sJe="\\",oJe=/[*?]|^!/,aJe=/\[[^[]*]/,lJe=/(?:^|[^!*+?@])\([^(]*\|[^|]*\)/,cJe=/[!*+?@]\([^(]*\)/,uJe=/,|\.\./,fJe=/(?!^)\/{2,}/g;function zae(e,t={}){return!Zae(e,t)}jr.isStaticPattern=zae;function Zae(e,t={}){return e===""?!1:!!(t.caseSensitiveMatch===!1||e.includes(sJe)||oJe.test(e)||aJe.test(e)||lJe.test(e)||t.extglob!==!1&&cJe.test(e)||t.braceExpansion!==!1&&AJe(e))}jr.isDynamicPattern=Zae;function AJe(e){let t=e.indexOf("{");if(t===-1)return!1;let r=e.indexOf("}",t+1);if(r===-1)return!1;let s=e.slice(t,r);return uJe.test(s)}function pJe(e){return rQ(e)?e.slice(1):e}jr.convertToPositivePattern=pJe;function hJe(e){return"!"+e}jr.convertToNegativePattern=hJe;function rQ(e){return e.startsWith("!")&&e[1]!=="("}jr.isNegativePattern=rQ;function Xae(e){return!rQ(e)}jr.isPositivePattern=Xae;function gJe(e){return e.filter(rQ)}jr.getNegativePatterns=gJe;function dJe(e){return e.filter(Xae)}jr.getPositivePatterns=dJe;function mJe(e){return e.filter(t=>!W4(t))}jr.getPatternsInsideCurrentDirectory=mJe;function yJe(e){return e.filter(W4)}jr.getPatternsOutsideCurrentDirectory=yJe;function W4(e){return e.startsWith("..")||e.startsWith("./..")}jr.isPatternRelatedToParentDirectory=W4;function EJe(e){return iJe(e,{flipBackslashes:!1})}jr.getBaseDirectory=EJe;function IJe(e){return e.includes(Jae)}jr.hasGlobStar=IJe;function $ae(e){return e.endsWith("/"+Jae)}jr.endsWithSlashGlobStar=$ae;function CJe(e){let t=nJe.basename(e);return $ae(e)||zae(t)}jr.isAffectDepthOfReadingPattern=CJe;function wJe(e){return e.reduce((t,r)=>t.concat(ele(r)),[])}jr.expandPatternsWithBraceExpansion=wJe;function ele(e){let t=q4.braces(e,{expand:!0,nodupes:!0,keepEscaping:!0});return t.sort((r,s)=>r.length-s.length),t.filter(r=>r!=="")}jr.expandBraceExpansion=ele;function BJe(e,t){let{parts:r}=q4.scan(e,Object.assign(Object.assign({},t),{parts:!0}));return r.length===0&&(r=[e]),r[0].startsWith("/")&&(r[0]=r[0].slice(1),r.unshift("")),r}jr.getPatternParts=BJe;function tle(e,t){return q4.makeRe(e,t)}jr.makeRe=tle;function vJe(e,t){return e.map(r=>tle(r,t))}jr.convertPatternsToRe=vJe;function SJe(e,t){return t.some(r=>r.test(e))}jr.matchAny=SJe;function DJe(e){return e.replace(fJe,"/")}jr.removeDuplicateSlashes=DJe});var ole=G((AFt,sle)=>{"use strict";var bJe=Ie("stream"),nle=bJe.PassThrough,PJe=Array.prototype.slice;sle.exports=xJe;function xJe(){let e=[],t=PJe.call(arguments),r=!1,s=t[t.length-1];s&&!Array.isArray(s)&&s.pipe==null?t.pop():s={};let a=s.end!==!1,n=s.pipeError===!0;s.objectMode==null&&(s.objectMode=!0),s.highWaterMark==null&&(s.highWaterMark=64*1024);let c=nle(s);function f(){for(let E=0,C=arguments.length;E0||(r=!1,p())}function x(I){function T(){I.removeListener("merge2UnpipeEnd",T),I.removeListener("end",T),n&&I.removeListener("error",O),S()}function O(U){c.emit("error",U)}if(I._readableState.endEmitted)return S();I.on("merge2UnpipeEnd",T),I.on("end",T),n&&I.on("error",O),I.pipe(c,{end:!1}),I.resume()}for(let I=0;I{"use strict";Object.defineProperty(nQ,"__esModule",{value:!0});nQ.merge=void 0;var kJe=ole();function QJe(e){let t=kJe(e);return e.forEach(r=>{r.once("error",s=>t.emit("error",s))}),t.once("close",()=>ale(e)),t.once("end",()=>ale(e)),t}nQ.merge=QJe;function ale(e){e.forEach(t=>t.emit("close"))}});var cle=G(eI=>{"use strict";Object.defineProperty(eI,"__esModule",{value:!0});eI.isEmpty=eI.isString=void 0;function RJe(e){return typeof e=="string"}eI.isString=RJe;function TJe(e){return e===""}eI.isEmpty=TJe});var kp=G(Xo=>{"use strict";Object.defineProperty(Xo,"__esModule",{value:!0});Xo.string=Xo.stream=Xo.pattern=Xo.path=Xo.fs=Xo.errno=Xo.array=void 0;var FJe=Nae();Xo.array=FJe;var NJe=Oae();Xo.errno=NJe;var OJe=Lae();Xo.fs=OJe;var LJe=Hae();Xo.path=LJe;var MJe=rle();Xo.pattern=MJe;var UJe=lle();Xo.stream=UJe;var _Je=cle();Xo.string=_Je});var ple=G($o=>{"use strict";Object.defineProperty($o,"__esModule",{value:!0});$o.convertPatternGroupToTask=$o.convertPatternGroupsToTasks=$o.groupPatternsByBaseDirectory=$o.getNegativePatternsAsPositive=$o.getPositivePatterns=$o.convertPatternsToTasks=$o.generate=void 0;var Uu=kp();function HJe(e,t){let r=ule(e,t),s=ule(t.ignore,t),a=fle(r),n=Ale(r,s),c=a.filter(E=>Uu.pattern.isStaticPattern(E,t)),f=a.filter(E=>Uu.pattern.isDynamicPattern(E,t)),p=V4(c,n,!1),h=V4(f,n,!0);return p.concat(h)}$o.generate=HJe;function ule(e,t){let r=e;return t.braceExpansion&&(r=Uu.pattern.expandPatternsWithBraceExpansion(r)),t.baseNameMatch&&(r=r.map(s=>s.includes("/")?s:`**/${s}`)),r.map(s=>Uu.pattern.removeDuplicateSlashes(s))}function V4(e,t,r){let s=[],a=Uu.pattern.getPatternsOutsideCurrentDirectory(e),n=Uu.pattern.getPatternsInsideCurrentDirectory(e),c=Y4(a),f=Y4(n);return s.push(...K4(c,t,r)),"."in f?s.push(J4(".",n,t,r)):s.push(...K4(f,t,r)),s}$o.convertPatternsToTasks=V4;function fle(e){return Uu.pattern.getPositivePatterns(e)}$o.getPositivePatterns=fle;function Ale(e,t){return Uu.pattern.getNegativePatterns(e).concat(t).map(Uu.pattern.convertToPositivePattern)}$o.getNegativePatternsAsPositive=Ale;function Y4(e){let t={};return e.reduce((r,s)=>{let a=Uu.pattern.getBaseDirectory(s);return a in r?r[a].push(s):r[a]=[s],r},t)}$o.groupPatternsByBaseDirectory=Y4;function K4(e,t,r){return Object.keys(e).map(s=>J4(s,e[s],t,r))}$o.convertPatternGroupsToTasks=K4;function J4(e,t,r,s){return{dynamic:s,positive:t,negative:r,base:e,patterns:[].concat(t,r.map(Uu.pattern.convertToNegativePattern))}}$o.convertPatternGroupToTask=J4});var gle=G(iQ=>{"use strict";Object.defineProperty(iQ,"__esModule",{value:!0});iQ.read=void 0;function jJe(e,t,r){t.fs.lstat(e,(s,a)=>{if(s!==null){hle(r,s);return}if(!a.isSymbolicLink()||!t.followSymbolicLink){z4(r,a);return}t.fs.stat(e,(n,c)=>{if(n!==null){if(t.throwErrorOnBrokenSymbolicLink){hle(r,n);return}z4(r,a);return}t.markSymbolicLink&&(c.isSymbolicLink=()=>!0),z4(r,c)})})}iQ.read=jJe;function hle(e,t){e(t)}function z4(e,t){e(null,t)}});var dle=G(sQ=>{"use strict";Object.defineProperty(sQ,"__esModule",{value:!0});sQ.read=void 0;function GJe(e,t){let r=t.fs.lstatSync(e);if(!r.isSymbolicLink()||!t.followSymbolicLink)return r;try{let s=t.fs.statSync(e);return t.markSymbolicLink&&(s.isSymbolicLink=()=>!0),s}catch(s){if(!t.throwErrorOnBrokenSymbolicLink)return r;throw s}}sQ.read=GJe});var mle=G(A0=>{"use strict";Object.defineProperty(A0,"__esModule",{value:!0});A0.createFileSystemAdapter=A0.FILE_SYSTEM_ADAPTER=void 0;var oQ=Ie("fs");A0.FILE_SYSTEM_ADAPTER={lstat:oQ.lstat,stat:oQ.stat,lstatSync:oQ.lstatSync,statSync:oQ.statSync};function qJe(e){return e===void 0?A0.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},A0.FILE_SYSTEM_ADAPTER),e)}A0.createFileSystemAdapter=qJe});var yle=G(X4=>{"use strict";Object.defineProperty(X4,"__esModule",{value:!0});var WJe=mle(),Z4=class{constructor(t={}){this._options=t,this.followSymbolicLink=this._getValue(this._options.followSymbolicLink,!0),this.fs=WJe.createFileSystemAdapter(this._options.fs),this.markSymbolicLink=this._getValue(this._options.markSymbolicLink,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0)}_getValue(t,r){return t??r}};X4.default=Z4});var zd=G(p0=>{"use strict";Object.defineProperty(p0,"__esModule",{value:!0});p0.statSync=p0.stat=p0.Settings=void 0;var Ele=gle(),VJe=dle(),$4=yle();p0.Settings=$4.default;function YJe(e,t,r){if(typeof t=="function"){Ele.read(e,e3(),t);return}Ele.read(e,e3(t),r)}p0.stat=YJe;function KJe(e,t){let r=e3(t);return VJe.read(e,r)}p0.statSync=KJe;function e3(e={}){return e instanceof $4.default?e:new $4.default(e)}});var wle=G((wFt,Cle)=>{var Ile;Cle.exports=typeof queueMicrotask=="function"?queueMicrotask.bind(typeof window<"u"?window:global):e=>(Ile||(Ile=Promise.resolve())).then(e).catch(t=>setTimeout(()=>{throw t},0))});var vle=G((BFt,Ble)=>{Ble.exports=zJe;var JJe=wle();function zJe(e,t){let r,s,a,n=!0;Array.isArray(e)?(r=[],s=e.length):(a=Object.keys(e),r={},s=a.length);function c(p){function h(){t&&t(p,r),t=null}n?JJe(h):h()}function f(p,h,E){r[p]=E,(--s===0||h)&&c(h)}s?a?a.forEach(function(p){e[p](function(h,E){f(p,h,E)})}):e.forEach(function(p,h){p(function(E,C){f(h,E,C)})}):c(null),n=!1}});var t3=G(lQ=>{"use strict";Object.defineProperty(lQ,"__esModule",{value:!0});lQ.IS_SUPPORT_READDIR_WITH_FILE_TYPES=void 0;var aQ=process.versions.node.split(".");if(aQ[0]===void 0||aQ[1]===void 0)throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`);var Sle=Number.parseInt(aQ[0],10),ZJe=Number.parseInt(aQ[1],10),Dle=10,XJe=10,$Je=Sle>Dle,eze=Sle===Dle&&ZJe>=XJe;lQ.IS_SUPPORT_READDIR_WITH_FILE_TYPES=$Je||eze});var ble=G(cQ=>{"use strict";Object.defineProperty(cQ,"__esModule",{value:!0});cQ.createDirentFromStats=void 0;var r3=class{constructor(t,r){this.name=t,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function tze(e,t){return new r3(e,t)}cQ.createDirentFromStats=tze});var n3=G(uQ=>{"use strict";Object.defineProperty(uQ,"__esModule",{value:!0});uQ.fs=void 0;var rze=ble();uQ.fs=rze});var i3=G(fQ=>{"use strict";Object.defineProperty(fQ,"__esModule",{value:!0});fQ.joinPathSegments=void 0;function nze(e,t,r){return e.endsWith(r)?e+t:e+r+t}fQ.joinPathSegments=nze});var Tle=G(h0=>{"use strict";Object.defineProperty(h0,"__esModule",{value:!0});h0.readdir=h0.readdirWithFileTypes=h0.read=void 0;var ize=zd(),Ple=vle(),sze=t3(),xle=n3(),kle=i3();function oze(e,t,r){if(!t.stats&&sze.IS_SUPPORT_READDIR_WITH_FILE_TYPES){Qle(e,t,r);return}Rle(e,t,r)}h0.read=oze;function Qle(e,t,r){t.fs.readdir(e,{withFileTypes:!0},(s,a)=>{if(s!==null){AQ(r,s);return}let n=a.map(f=>({dirent:f,name:f.name,path:kle.joinPathSegments(e,f.name,t.pathSegmentSeparator)}));if(!t.followSymbolicLinks){s3(r,n);return}let c=n.map(f=>aze(f,t));Ple(c,(f,p)=>{if(f!==null){AQ(r,f);return}s3(r,p)})})}h0.readdirWithFileTypes=Qle;function aze(e,t){return r=>{if(!e.dirent.isSymbolicLink()){r(null,e);return}t.fs.stat(e.path,(s,a)=>{if(s!==null){if(t.throwErrorOnBrokenSymbolicLink){r(s);return}r(null,e);return}e.dirent=xle.fs.createDirentFromStats(e.name,a),r(null,e)})}}function Rle(e,t,r){t.fs.readdir(e,(s,a)=>{if(s!==null){AQ(r,s);return}let n=a.map(c=>{let f=kle.joinPathSegments(e,c,t.pathSegmentSeparator);return p=>{ize.stat(f,t.fsStatSettings,(h,E)=>{if(h!==null){p(h);return}let C={name:c,path:f,dirent:xle.fs.createDirentFromStats(c,E)};t.stats&&(C.stats=E),p(null,C)})}});Ple(n,(c,f)=>{if(c!==null){AQ(r,c);return}s3(r,f)})})}h0.readdir=Rle;function AQ(e,t){e(t)}function s3(e,t){e(null,t)}});var Mle=G(g0=>{"use strict";Object.defineProperty(g0,"__esModule",{value:!0});g0.readdir=g0.readdirWithFileTypes=g0.read=void 0;var lze=zd(),cze=t3(),Fle=n3(),Nle=i3();function uze(e,t){return!t.stats&&cze.IS_SUPPORT_READDIR_WITH_FILE_TYPES?Ole(e,t):Lle(e,t)}g0.read=uze;function Ole(e,t){return t.fs.readdirSync(e,{withFileTypes:!0}).map(s=>{let a={dirent:s,name:s.name,path:Nle.joinPathSegments(e,s.name,t.pathSegmentSeparator)};if(a.dirent.isSymbolicLink()&&t.followSymbolicLinks)try{let n=t.fs.statSync(a.path);a.dirent=Fle.fs.createDirentFromStats(a.name,n)}catch(n){if(t.throwErrorOnBrokenSymbolicLink)throw n}return a})}g0.readdirWithFileTypes=Ole;function Lle(e,t){return t.fs.readdirSync(e).map(s=>{let a=Nle.joinPathSegments(e,s,t.pathSegmentSeparator),n=lze.statSync(a,t.fsStatSettings),c={name:s,path:a,dirent:Fle.fs.createDirentFromStats(s,n)};return t.stats&&(c.stats=n),c})}g0.readdir=Lle});var Ule=G(d0=>{"use strict";Object.defineProperty(d0,"__esModule",{value:!0});d0.createFileSystemAdapter=d0.FILE_SYSTEM_ADAPTER=void 0;var tI=Ie("fs");d0.FILE_SYSTEM_ADAPTER={lstat:tI.lstat,stat:tI.stat,lstatSync:tI.lstatSync,statSync:tI.statSync,readdir:tI.readdir,readdirSync:tI.readdirSync};function fze(e){return e===void 0?d0.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},d0.FILE_SYSTEM_ADAPTER),e)}d0.createFileSystemAdapter=fze});var _le=G(a3=>{"use strict";Object.defineProperty(a3,"__esModule",{value:!0});var Aze=Ie("path"),pze=zd(),hze=Ule(),o3=class{constructor(t={}){this._options=t,this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!1),this.fs=hze.createFileSystemAdapter(this._options.fs),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,Aze.sep),this.stats=this._getValue(this._options.stats,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0),this.fsStatSettings=new pze.Settings({followSymbolicLink:this.followSymbolicLinks,fs:this.fs,throwErrorOnBrokenSymbolicLink:this.throwErrorOnBrokenSymbolicLink})}_getValue(t,r){return t??r}};a3.default=o3});var pQ=G(m0=>{"use strict";Object.defineProperty(m0,"__esModule",{value:!0});m0.Settings=m0.scandirSync=m0.scandir=void 0;var Hle=Tle(),gze=Mle(),l3=_le();m0.Settings=l3.default;function dze(e,t,r){if(typeof t=="function"){Hle.read(e,c3(),t);return}Hle.read(e,c3(t),r)}m0.scandir=dze;function mze(e,t){let r=c3(t);return gze.read(e,r)}m0.scandirSync=mze;function c3(e={}){return e instanceof l3.default?e:new l3.default(e)}});var Gle=G((TFt,jle)=>{"use strict";function yze(e){var t=new e,r=t;function s(){var n=t;return n.next?t=n.next:(t=new e,r=t),n.next=null,n}function a(n){r.next=n,r=n}return{get:s,release:a}}jle.exports=yze});var Wle=G((FFt,u3)=>{"use strict";var Eze=Gle();function qle(e,t,r){if(typeof e=="function"&&(r=t,t=e,e=null),!(r>=1))throw new Error("fastqueue concurrency must be equal to or greater than 1");var s=Eze(Ize),a=null,n=null,c=0,f=null,p={push:T,drain:Qc,saturated:Qc,pause:E,paused:!1,get concurrency(){return r},set concurrency(ue){if(!(ue>=1))throw new Error("fastqueue concurrency must be equal to or greater than 1");if(r=ue,!p.paused)for(;a&&c=r||p.paused?n?(n.next=de,n=de):(a=de,n=de,p.saturated()):(c++,t.call(e,de.value,de.worked))}function O(ue,ae){var de=s.get();de.context=e,de.release=U,de.value=ue,de.callback=ae||Qc,de.errorHandler=f,c>=r||p.paused?a?(de.next=a,a=de):(a=de,n=de,p.saturated()):(c++,t.call(e,de.value,de.worked))}function U(ue){ue&&s.release(ue);var ae=a;ae&&c<=r?p.paused?c--:(n===a&&(n=null),a=ae.next,ae.next=null,t.call(e,ae.value,ae.worked),n===null&&p.empty()):--c===0&&p.drain()}function Y(){a=null,n=null,p.drain=Qc}function te(){a=null,n=null,p.drain(),p.drain=Qc}function ie(ue){f=ue}}function Qc(){}function Ize(){this.value=null,this.callback=Qc,this.next=null,this.release=Qc,this.context=null,this.errorHandler=null;var e=this;this.worked=function(r,s){var a=e.callback,n=e.errorHandler,c=e.value;e.value=null,e.callback=Qc,e.errorHandler&&n(r,c),a.call(e.context,r,s),e.release(e)}}function Cze(e,t,r){typeof e=="function"&&(r=t,t=e,e=null);function s(E,C){t.call(this,E).then(function(S){C(null,S)},C)}var a=qle(e,s,r),n=a.push,c=a.unshift;return a.push=f,a.unshift=p,a.drained=h,a;function f(E){var C=new Promise(function(S,x){n(E,function(I,T){if(I){x(I);return}S(T)})});return C.catch(Qc),C}function p(E){var C=new Promise(function(S,x){c(E,function(I,T){if(I){x(I);return}S(T)})});return C.catch(Qc),C}function h(){if(a.idle())return new Promise(function(S){S()});var E=a.drain,C=new Promise(function(S){a.drain=function(){E(),S()}});return C}}u3.exports=qle;u3.exports.promise=Cze});var hQ=G(Xf=>{"use strict";Object.defineProperty(Xf,"__esModule",{value:!0});Xf.joinPathSegments=Xf.replacePathSegmentSeparator=Xf.isAppliedFilter=Xf.isFatalError=void 0;function wze(e,t){return e.errorFilter===null?!0:!e.errorFilter(t)}Xf.isFatalError=wze;function Bze(e,t){return e===null||e(t)}Xf.isAppliedFilter=Bze;function vze(e,t){return e.split(/[/\\]/).join(t)}Xf.replacePathSegmentSeparator=vze;function Sze(e,t,r){return e===""?t:e.endsWith(r)?e+t:e+r+t}Xf.joinPathSegments=Sze});var p3=G(A3=>{"use strict";Object.defineProperty(A3,"__esModule",{value:!0});var Dze=hQ(),f3=class{constructor(t,r){this._root=t,this._settings=r,this._root=Dze.replacePathSegmentSeparator(t,r.pathSegmentSeparator)}};A3.default=f3});var d3=G(g3=>{"use strict";Object.defineProperty(g3,"__esModule",{value:!0});var bze=Ie("events"),Pze=pQ(),xze=Wle(),gQ=hQ(),kze=p3(),h3=class extends kze.default{constructor(t,r){super(t,r),this._settings=r,this._scandir=Pze.scandir,this._emitter=new bze.EventEmitter,this._queue=xze(this._worker.bind(this),this._settings.concurrency),this._isFatalError=!1,this._isDestroyed=!1,this._queue.drain=()=>{this._isFatalError||this._emitter.emit("end")}}read(){return this._isFatalError=!1,this._isDestroyed=!1,setImmediate(()=>{this._pushToQueue(this._root,this._settings.basePath)}),this._emitter}get isDestroyed(){return this._isDestroyed}destroy(){if(this._isDestroyed)throw new Error("The reader is already destroyed");this._isDestroyed=!0,this._queue.killAndDrain()}onEntry(t){this._emitter.on("entry",t)}onError(t){this._emitter.once("error",t)}onEnd(t){this._emitter.once("end",t)}_pushToQueue(t,r){let s={directory:t,base:r};this._queue.push(s,a=>{a!==null&&this._handleError(a)})}_worker(t,r){this._scandir(t.directory,this._settings.fsScandirSettings,(s,a)=>{if(s!==null){r(s,void 0);return}for(let n of a)this._handleEntry(n,t.base);r(null,void 0)})}_handleError(t){this._isDestroyed||!gQ.isFatalError(this._settings,t)||(this._isFatalError=!0,this._isDestroyed=!0,this._emitter.emit("error",t))}_handleEntry(t,r){if(this._isDestroyed||this._isFatalError)return;let s=t.path;r!==void 0&&(t.path=gQ.joinPathSegments(r,t.name,this._settings.pathSegmentSeparator)),gQ.isAppliedFilter(this._settings.entryFilter,t)&&this._emitEntry(t),t.dirent.isDirectory()&&gQ.isAppliedFilter(this._settings.deepFilter,t)&&this._pushToQueue(s,r===void 0?void 0:t.path)}_emitEntry(t){this._emitter.emit("entry",t)}};g3.default=h3});var Vle=G(y3=>{"use strict";Object.defineProperty(y3,"__esModule",{value:!0});var Qze=d3(),m3=class{constructor(t,r){this._root=t,this._settings=r,this._reader=new Qze.default(this._root,this._settings),this._storage=[]}read(t){this._reader.onError(r=>{Rze(t,r)}),this._reader.onEntry(r=>{this._storage.push(r)}),this._reader.onEnd(()=>{Tze(t,this._storage)}),this._reader.read()}};y3.default=m3;function Rze(e,t){e(t)}function Tze(e,t){e(null,t)}});var Yle=G(I3=>{"use strict";Object.defineProperty(I3,"__esModule",{value:!0});var Fze=Ie("stream"),Nze=d3(),E3=class{constructor(t,r){this._root=t,this._settings=r,this._reader=new Nze.default(this._root,this._settings),this._stream=new Fze.Readable({objectMode:!0,read:()=>{},destroy:()=>{this._reader.isDestroyed||this._reader.destroy()}})}read(){return this._reader.onError(t=>{this._stream.emit("error",t)}),this._reader.onEntry(t=>{this._stream.push(t)}),this._reader.onEnd(()=>{this._stream.push(null)}),this._reader.read(),this._stream}};I3.default=E3});var Kle=G(w3=>{"use strict";Object.defineProperty(w3,"__esModule",{value:!0});var Oze=pQ(),dQ=hQ(),Lze=p3(),C3=class extends Lze.default{constructor(){super(...arguments),this._scandir=Oze.scandirSync,this._storage=[],this._queue=new Set}read(){return this._pushToQueue(this._root,this._settings.basePath),this._handleQueue(),this._storage}_pushToQueue(t,r){this._queue.add({directory:t,base:r})}_handleQueue(){for(let t of this._queue.values())this._handleDirectory(t.directory,t.base)}_handleDirectory(t,r){try{let s=this._scandir(t,this._settings.fsScandirSettings);for(let a of s)this._handleEntry(a,r)}catch(s){this._handleError(s)}}_handleError(t){if(dQ.isFatalError(this._settings,t))throw t}_handleEntry(t,r){let s=t.path;r!==void 0&&(t.path=dQ.joinPathSegments(r,t.name,this._settings.pathSegmentSeparator)),dQ.isAppliedFilter(this._settings.entryFilter,t)&&this._pushToStorage(t),t.dirent.isDirectory()&&dQ.isAppliedFilter(this._settings.deepFilter,t)&&this._pushToQueue(s,r===void 0?void 0:t.path)}_pushToStorage(t){this._storage.push(t)}};w3.default=C3});var Jle=G(v3=>{"use strict";Object.defineProperty(v3,"__esModule",{value:!0});var Mze=Kle(),B3=class{constructor(t,r){this._root=t,this._settings=r,this._reader=new Mze.default(this._root,this._settings)}read(){return this._reader.read()}};v3.default=B3});var zle=G(D3=>{"use strict";Object.defineProperty(D3,"__esModule",{value:!0});var Uze=Ie("path"),_ze=pQ(),S3=class{constructor(t={}){this._options=t,this.basePath=this._getValue(this._options.basePath,void 0),this.concurrency=this._getValue(this._options.concurrency,Number.POSITIVE_INFINITY),this.deepFilter=this._getValue(this._options.deepFilter,null),this.entryFilter=this._getValue(this._options.entryFilter,null),this.errorFilter=this._getValue(this._options.errorFilter,null),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,Uze.sep),this.fsScandirSettings=new _ze.Settings({followSymbolicLinks:this._options.followSymbolicLinks,fs:this._options.fs,pathSegmentSeparator:this._options.pathSegmentSeparator,stats:this._options.stats,throwErrorOnBrokenSymbolicLink:this._options.throwErrorOnBrokenSymbolicLink})}_getValue(t,r){return t??r}};D3.default=S3});var yQ=G($f=>{"use strict";Object.defineProperty($f,"__esModule",{value:!0});$f.Settings=$f.walkStream=$f.walkSync=$f.walk=void 0;var Zle=Vle(),Hze=Yle(),jze=Jle(),b3=zle();$f.Settings=b3.default;function Gze(e,t,r){if(typeof t=="function"){new Zle.default(e,mQ()).read(t);return}new Zle.default(e,mQ(t)).read(r)}$f.walk=Gze;function qze(e,t){let r=mQ(t);return new jze.default(e,r).read()}$f.walkSync=qze;function Wze(e,t){let r=mQ(t);return new Hze.default(e,r).read()}$f.walkStream=Wze;function mQ(e={}){return e instanceof b3.default?e:new b3.default(e)}});var EQ=G(x3=>{"use strict";Object.defineProperty(x3,"__esModule",{value:!0});var Vze=Ie("path"),Yze=zd(),Xle=kp(),P3=class{constructor(t){this._settings=t,this._fsStatSettings=new Yze.Settings({followSymbolicLink:this._settings.followSymbolicLinks,fs:this._settings.fs,throwErrorOnBrokenSymbolicLink:this._settings.followSymbolicLinks})}_getFullEntryPath(t){return Vze.resolve(this._settings.cwd,t)}_makeEntry(t,r){let s={name:r,path:r,dirent:Xle.fs.createDirentFromStats(r,t)};return this._settings.stats&&(s.stats=t),s}_isFatalError(t){return!Xle.errno.isEnoentCodeError(t)&&!this._settings.suppressErrors}};x3.default=P3});var R3=G(Q3=>{"use strict";Object.defineProperty(Q3,"__esModule",{value:!0});var Kze=Ie("stream"),Jze=zd(),zze=yQ(),Zze=EQ(),k3=class extends Zze.default{constructor(){super(...arguments),this._walkStream=zze.walkStream,this._stat=Jze.stat}dynamic(t,r){return this._walkStream(t,r)}static(t,r){let s=t.map(this._getFullEntryPath,this),a=new Kze.PassThrough({objectMode:!0});a._write=(n,c,f)=>this._getEntry(s[n],t[n],r).then(p=>{p!==null&&r.entryFilter(p)&&a.push(p),n===s.length-1&&a.end(),f()}).catch(f);for(let n=0;nthis._makeEntry(a,r)).catch(a=>{if(s.errorFilter(a))return null;throw a})}_getStat(t){return new Promise((r,s)=>{this._stat(t,this._fsStatSettings,(a,n)=>a===null?r(n):s(a))})}};Q3.default=k3});var $le=G(F3=>{"use strict";Object.defineProperty(F3,"__esModule",{value:!0});var Xze=yQ(),$ze=EQ(),eZe=R3(),T3=class extends $ze.default{constructor(){super(...arguments),this._walkAsync=Xze.walk,this._readerStream=new eZe.default(this._settings)}dynamic(t,r){return new Promise((s,a)=>{this._walkAsync(t,r,(n,c)=>{n===null?s(c):a(n)})})}async static(t,r){let s=[],a=this._readerStream.static(t,r);return new Promise((n,c)=>{a.once("error",c),a.on("data",f=>s.push(f)),a.once("end",()=>n(s))})}};F3.default=T3});var ece=G(O3=>{"use strict";Object.defineProperty(O3,"__esModule",{value:!0});var b2=kp(),N3=class{constructor(t,r,s){this._patterns=t,this._settings=r,this._micromatchOptions=s,this._storage=[],this._fillStorage()}_fillStorage(){for(let t of this._patterns){let r=this._getPatternSegments(t),s=this._splitSegmentsIntoSections(r);this._storage.push({complete:s.length<=1,pattern:t,segments:r,sections:s})}}_getPatternSegments(t){return b2.pattern.getPatternParts(t,this._micromatchOptions).map(s=>b2.pattern.isDynamicPattern(s,this._settings)?{dynamic:!0,pattern:s,patternRe:b2.pattern.makeRe(s,this._micromatchOptions)}:{dynamic:!1,pattern:s})}_splitSegmentsIntoSections(t){return b2.array.splitWhen(t,r=>r.dynamic&&b2.pattern.hasGlobStar(r.pattern))}};O3.default=N3});var tce=G(M3=>{"use strict";Object.defineProperty(M3,"__esModule",{value:!0});var tZe=ece(),L3=class extends tZe.default{match(t){let r=t.split("/"),s=r.length,a=this._storage.filter(n=>!n.complete||n.segments.length>s);for(let n of a){let c=n.sections[0];if(!n.complete&&s>c.length||r.every((p,h)=>{let E=n.segments[h];return!!(E.dynamic&&E.patternRe.test(p)||!E.dynamic&&E.pattern===p)}))return!0}return!1}};M3.default=L3});var rce=G(_3=>{"use strict";Object.defineProperty(_3,"__esModule",{value:!0});var IQ=kp(),rZe=tce(),U3=class{constructor(t,r){this._settings=t,this._micromatchOptions=r}getFilter(t,r,s){let a=this._getMatcher(r),n=this._getNegativePatternsRe(s);return c=>this._filter(t,c,a,n)}_getMatcher(t){return new rZe.default(t,this._settings,this._micromatchOptions)}_getNegativePatternsRe(t){let r=t.filter(IQ.pattern.isAffectDepthOfReadingPattern);return IQ.pattern.convertPatternsToRe(r,this._micromatchOptions)}_filter(t,r,s,a){if(this._isSkippedByDeep(t,r.path)||this._isSkippedSymbolicLink(r))return!1;let n=IQ.path.removeLeadingDotSegment(r.path);return this._isSkippedByPositivePatterns(n,s)?!1:this._isSkippedByNegativePatterns(n,a)}_isSkippedByDeep(t,r){return this._settings.deep===1/0?!1:this._getEntryLevel(t,r)>=this._settings.deep}_getEntryLevel(t,r){let s=r.split("/").length;if(t==="")return s;let a=t.split("/").length;return s-a}_isSkippedSymbolicLink(t){return!this._settings.followSymbolicLinks&&t.dirent.isSymbolicLink()}_isSkippedByPositivePatterns(t,r){return!this._settings.baseNameMatch&&!r.match(t)}_isSkippedByNegativePatterns(t,r){return!IQ.pattern.matchAny(t,r)}};_3.default=U3});var nce=G(j3=>{"use strict";Object.defineProperty(j3,"__esModule",{value:!0});var Zd=kp(),H3=class{constructor(t,r){this._settings=t,this._micromatchOptions=r,this.index=new Map}getFilter(t,r){let s=Zd.pattern.convertPatternsToRe(t,this._micromatchOptions),a=Zd.pattern.convertPatternsToRe(r,Object.assign(Object.assign({},this._micromatchOptions),{dot:!0}));return n=>this._filter(n,s,a)}_filter(t,r,s){let a=Zd.path.removeLeadingDotSegment(t.path);if(this._settings.unique&&this._isDuplicateEntry(a)||this._onlyFileFilter(t)||this._onlyDirectoryFilter(t)||this._isSkippedByAbsoluteNegativePatterns(a,s))return!1;let n=t.dirent.isDirectory(),c=this._isMatchToPatterns(a,r,n)&&!this._isMatchToPatterns(a,s,n);return this._settings.unique&&c&&this._createIndexRecord(a),c}_isDuplicateEntry(t){return this.index.has(t)}_createIndexRecord(t){this.index.set(t,void 0)}_onlyFileFilter(t){return this._settings.onlyFiles&&!t.dirent.isFile()}_onlyDirectoryFilter(t){return this._settings.onlyDirectories&&!t.dirent.isDirectory()}_isSkippedByAbsoluteNegativePatterns(t,r){if(!this._settings.absolute)return!1;let s=Zd.path.makeAbsolute(this._settings.cwd,t);return Zd.pattern.matchAny(s,r)}_isMatchToPatterns(t,r,s){let a=Zd.pattern.matchAny(t,r);return!a&&s?Zd.pattern.matchAny(t+"/",r):a}};j3.default=H3});var ice=G(q3=>{"use strict";Object.defineProperty(q3,"__esModule",{value:!0});var nZe=kp(),G3=class{constructor(t){this._settings=t}getFilter(){return t=>this._isNonFatalError(t)}_isNonFatalError(t){return nZe.errno.isEnoentCodeError(t)||this._settings.suppressErrors}};q3.default=G3});var oce=G(V3=>{"use strict";Object.defineProperty(V3,"__esModule",{value:!0});var sce=kp(),W3=class{constructor(t){this._settings=t}getTransformer(){return t=>this._transform(t)}_transform(t){let r=t.path;return this._settings.absolute&&(r=sce.path.makeAbsolute(this._settings.cwd,r),r=sce.path.unixify(r)),this._settings.markDirectories&&t.dirent.isDirectory()&&(r+="/"),this._settings.objectMode?Object.assign(Object.assign({},t),{path:r}):r}};V3.default=W3});var CQ=G(K3=>{"use strict";Object.defineProperty(K3,"__esModule",{value:!0});var iZe=Ie("path"),sZe=rce(),oZe=nce(),aZe=ice(),lZe=oce(),Y3=class{constructor(t){this._settings=t,this.errorFilter=new aZe.default(this._settings),this.entryFilter=new oZe.default(this._settings,this._getMicromatchOptions()),this.deepFilter=new sZe.default(this._settings,this._getMicromatchOptions()),this.entryTransformer=new lZe.default(this._settings)}_getRootDirectory(t){return iZe.resolve(this._settings.cwd,t.base)}_getReaderOptions(t){let r=t.base==="."?"":t.base;return{basePath:r,pathSegmentSeparator:"/",concurrency:this._settings.concurrency,deepFilter:this.deepFilter.getFilter(r,t.positive,t.negative),entryFilter:this.entryFilter.getFilter(t.positive,t.negative),errorFilter:this.errorFilter.getFilter(),followSymbolicLinks:this._settings.followSymbolicLinks,fs:this._settings.fs,stats:this._settings.stats,throwErrorOnBrokenSymbolicLink:this._settings.throwErrorOnBrokenSymbolicLink,transform:this.entryTransformer.getTransformer()}}_getMicromatchOptions(){return{dot:this._settings.dot,matchBase:this._settings.baseNameMatch,nobrace:!this._settings.braceExpansion,nocase:!this._settings.caseSensitiveMatch,noext:!this._settings.extglob,noglobstar:!this._settings.globstar,posix:!0,strictSlashes:!1}}};K3.default=Y3});var ace=G(z3=>{"use strict";Object.defineProperty(z3,"__esModule",{value:!0});var cZe=$le(),uZe=CQ(),J3=class extends uZe.default{constructor(){super(...arguments),this._reader=new cZe.default(this._settings)}async read(t){let r=this._getRootDirectory(t),s=this._getReaderOptions(t);return(await this.api(r,t,s)).map(n=>s.transform(n))}api(t,r,s){return r.dynamic?this._reader.dynamic(t,s):this._reader.static(r.patterns,s)}};z3.default=J3});var lce=G(X3=>{"use strict";Object.defineProperty(X3,"__esModule",{value:!0});var fZe=Ie("stream"),AZe=R3(),pZe=CQ(),Z3=class extends pZe.default{constructor(){super(...arguments),this._reader=new AZe.default(this._settings)}read(t){let r=this._getRootDirectory(t),s=this._getReaderOptions(t),a=this.api(r,t,s),n=new fZe.Readable({objectMode:!0,read:()=>{}});return a.once("error",c=>n.emit("error",c)).on("data",c=>n.emit("data",s.transform(c))).once("end",()=>n.emit("end")),n.once("close",()=>a.destroy()),n}api(t,r,s){return r.dynamic?this._reader.dynamic(t,s):this._reader.static(r.patterns,s)}};X3.default=Z3});var cce=G(e8=>{"use strict";Object.defineProperty(e8,"__esModule",{value:!0});var hZe=zd(),gZe=yQ(),dZe=EQ(),$3=class extends dZe.default{constructor(){super(...arguments),this._walkSync=gZe.walkSync,this._statSync=hZe.statSync}dynamic(t,r){return this._walkSync(t,r)}static(t,r){let s=[];for(let a of t){let n=this._getFullEntryPath(a),c=this._getEntry(n,a,r);c===null||!r.entryFilter(c)||s.push(c)}return s}_getEntry(t,r,s){try{let a=this._getStat(t);return this._makeEntry(a,r)}catch(a){if(s.errorFilter(a))return null;throw a}}_getStat(t){return this._statSync(t,this._fsStatSettings)}};e8.default=$3});var uce=G(r8=>{"use strict";Object.defineProperty(r8,"__esModule",{value:!0});var mZe=cce(),yZe=CQ(),t8=class extends yZe.default{constructor(){super(...arguments),this._reader=new mZe.default(this._settings)}read(t){let r=this._getRootDirectory(t),s=this._getReaderOptions(t);return this.api(r,t,s).map(s.transform)}api(t,r,s){return r.dynamic?this._reader.dynamic(t,s):this._reader.static(r.patterns,s)}};r8.default=t8});var fce=G(nI=>{"use strict";Object.defineProperty(nI,"__esModule",{value:!0});nI.DEFAULT_FILE_SYSTEM_ADAPTER=void 0;var rI=Ie("fs"),EZe=Ie("os"),IZe=Math.max(EZe.cpus().length,1);nI.DEFAULT_FILE_SYSTEM_ADAPTER={lstat:rI.lstat,lstatSync:rI.lstatSync,stat:rI.stat,statSync:rI.statSync,readdir:rI.readdir,readdirSync:rI.readdirSync};var n8=class{constructor(t={}){this._options=t,this.absolute=this._getValue(this._options.absolute,!1),this.baseNameMatch=this._getValue(this._options.baseNameMatch,!1),this.braceExpansion=this._getValue(this._options.braceExpansion,!0),this.caseSensitiveMatch=this._getValue(this._options.caseSensitiveMatch,!0),this.concurrency=this._getValue(this._options.concurrency,IZe),this.cwd=this._getValue(this._options.cwd,process.cwd()),this.deep=this._getValue(this._options.deep,1/0),this.dot=this._getValue(this._options.dot,!1),this.extglob=this._getValue(this._options.extglob,!0),this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!0),this.fs=this._getFileSystemMethods(this._options.fs),this.globstar=this._getValue(this._options.globstar,!0),this.ignore=this._getValue(this._options.ignore,[]),this.markDirectories=this._getValue(this._options.markDirectories,!1),this.objectMode=this._getValue(this._options.objectMode,!1),this.onlyDirectories=this._getValue(this._options.onlyDirectories,!1),this.onlyFiles=this._getValue(this._options.onlyFiles,!0),this.stats=this._getValue(this._options.stats,!1),this.suppressErrors=this._getValue(this._options.suppressErrors,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!1),this.unique=this._getValue(this._options.unique,!0),this.onlyDirectories&&(this.onlyFiles=!1),this.stats&&(this.objectMode=!0),this.ignore=[].concat(this.ignore)}_getValue(t,r){return t===void 0?r:t}_getFileSystemMethods(t={}){return Object.assign(Object.assign({},nI.DEFAULT_FILE_SYSTEM_ADAPTER),t)}};nI.default=n8});var wQ=G((sNt,pce)=>{"use strict";var Ace=ple(),CZe=ace(),wZe=lce(),BZe=uce(),i8=fce(),Rc=kp();async function s8(e,t){_u(e);let r=o8(e,CZe.default,t),s=await Promise.all(r);return Rc.array.flatten(s)}(function(e){e.glob=e,e.globSync=t,e.globStream=r,e.async=e;function t(h,E){_u(h);let C=o8(h,BZe.default,E);return Rc.array.flatten(C)}e.sync=t;function r(h,E){_u(h);let C=o8(h,wZe.default,E);return Rc.stream.merge(C)}e.stream=r;function s(h,E){_u(h);let C=[].concat(h),S=new i8.default(E);return Ace.generate(C,S)}e.generateTasks=s;function a(h,E){_u(h);let C=new i8.default(E);return Rc.pattern.isDynamicPattern(h,C)}e.isDynamicPattern=a;function n(h){return _u(h),Rc.path.escape(h)}e.escapePath=n;function c(h){return _u(h),Rc.path.convertPathToPattern(h)}e.convertPathToPattern=c;let f;(function(h){function E(S){return _u(S),Rc.path.escapePosixPath(S)}h.escapePath=E;function C(S){return _u(S),Rc.path.convertPosixPathToPattern(S)}h.convertPathToPattern=C})(f=e.posix||(e.posix={}));let p;(function(h){function E(S){return _u(S),Rc.path.escapeWindowsPath(S)}h.escapePath=E;function C(S){return _u(S),Rc.path.convertWindowsPathToPattern(S)}h.convertPathToPattern=C})(p=e.win32||(e.win32={}))})(s8||(s8={}));function o8(e,t,r){let s=[].concat(e),a=new i8.default(r),n=Ace.generate(s,a),c=new t(a);return n.map(c.read,c)}function _u(e){if(![].concat(e).every(s=>Rc.string.isString(s)&&!Rc.string.isEmpty(s)))throw new TypeError("Patterns must be a string (non empty) or an array of strings")}pce.exports=s8});var Ln={};Yt(Ln,{checksumFile:()=>vQ,checksumPattern:()=>SQ,makeHash:()=>fs});function fs(...e){let t=(0,BQ.createHash)("sha512"),r="";for(let s of e)typeof s=="string"?r+=s:s&&(r&&(t.update(r),r=""),t.update(s));return r&&t.update(r),t.digest("hex")}async function vQ(e,{baseFs:t,algorithm:r}={baseFs:le,algorithm:"sha512"}){let s=await t.openPromise(e,"r");try{let n=Buffer.allocUnsafeSlow(65536),c=(0,BQ.createHash)(r),f=0;for(;(f=await t.readPromise(s,n,0,65536))!==0;)c.update(f===65536?n:n.slice(0,f));return c.digest("hex")}finally{await t.closePromise(s)}}async function SQ(e,{cwd:t}){let s=(await(0,a8.default)(e,{cwd:fe.fromPortablePath(t),onlyDirectories:!0})).map(f=>`${f}/**/*`),a=await(0,a8.default)([e,...s],{cwd:fe.fromPortablePath(t),onlyFiles:!1});a.sort();let n=await Promise.all(a.map(async f=>{let p=[Buffer.from(f)],h=K.join(t,fe.toPortablePath(f)),E=await le.lstatPromise(h);return E.isSymbolicLink()?p.push(Buffer.from(await le.readlinkPromise(h))):E.isFile()&&p.push(await le.readFilePromise(h)),p.join("\0")})),c=(0,BQ.createHash)("sha512");for(let f of n)c.update(f);return c.digest("hex")}var BQ,a8,y0=Ze(()=>{Dt();BQ=Ie("crypto"),a8=et(wQ())});var j={};Yt(j,{allPeerRequests:()=>O2,areDescriptorsEqual:()=>yce,areIdentsEqual:()=>Q2,areLocatorsEqual:()=>R2,areVirtualPackagesEquivalent:()=>RZe,bindDescriptor:()=>kZe,bindLocator:()=>QZe,convertDescriptorToLocator:()=>DQ,convertLocatorToDescriptor:()=>c8,convertPackageToLocator:()=>bZe,convertToIdent:()=>DZe,convertToManifestRange:()=>jZe,copyPackage:()=>x2,devirtualizeDescriptor:()=>k2,devirtualizeLocator:()=>sI,ensureDevirtualizedDescriptor:()=>PZe,ensureDevirtualizedLocator:()=>xZe,getIdentVendorPath:()=>p8,isPackageCompatible:()=>QQ,isVirtualDescriptor:()=>Qp,isVirtualLocator:()=>Hu,makeDescriptor:()=>Mn,makeIdent:()=>xa,makeLocator:()=>Ks,makeRange:()=>xQ,parseDescriptor:()=>E0,parseFileStyleRange:()=>_Ze,parseIdent:()=>Pa,parseLocator:()=>Rp,parseRange:()=>Xd,prettyDependent:()=>U4,prettyDescriptor:()=>oi,prettyIdent:()=>$i,prettyLocator:()=>Vr,prettyLocatorNoColors:()=>M4,prettyRange:()=>aI,prettyReference:()=>F2,prettyResolution:()=>D2,prettyWorkspace:()=>N2,renamePackage:()=>u8,slugifyIdent:()=>l8,slugifyLocator:()=>oI,sortDescriptors:()=>lI,stringifyDescriptor:()=>hl,stringifyIdent:()=>fn,stringifyLocator:()=>gl,tryParseDescriptor:()=>T2,tryParseIdent:()=>Ece,tryParseLocator:()=>PQ,tryParseRange:()=>UZe,unwrapIdentFromScope:()=>qZe,virtualizeDescriptor:()=>f8,virtualizePackage:()=>A8,wrapIdentIntoScope:()=>GZe});function xa(e,t){if(e?.startsWith("@"))throw new Error("Invalid scope: don't prefix it with '@'");return{identHash:fs(e,t),scope:e,name:t}}function Mn(e,t){return{identHash:e.identHash,scope:e.scope,name:e.name,descriptorHash:fs(e.identHash,t),range:t}}function Ks(e,t){return{identHash:e.identHash,scope:e.scope,name:e.name,locatorHash:fs(e.identHash,t),reference:t}}function DZe(e){return{identHash:e.identHash,scope:e.scope,name:e.name}}function DQ(e){return{identHash:e.identHash,scope:e.scope,name:e.name,locatorHash:e.descriptorHash,reference:e.range}}function c8(e){return{identHash:e.identHash,scope:e.scope,name:e.name,descriptorHash:e.locatorHash,range:e.reference}}function bZe(e){return{identHash:e.identHash,scope:e.scope,name:e.name,locatorHash:e.locatorHash,reference:e.reference}}function u8(e,t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.locatorHash,reference:t.reference,version:e.version,languageName:e.languageName,linkType:e.linkType,conditions:e.conditions,dependencies:new Map(e.dependencies),peerDependencies:new Map(e.peerDependencies),dependenciesMeta:new Map(e.dependenciesMeta),peerDependenciesMeta:new Map(e.peerDependenciesMeta),bin:new Map(e.bin)}}function x2(e){return u8(e,e)}function f8(e,t){if(t.includes("#"))throw new Error("Invalid entropy");return Mn(e,`virtual:${t}#${e.range}`)}function A8(e,t){if(t.includes("#"))throw new Error("Invalid entropy");return u8(e,Ks(e,`virtual:${t}#${e.reference}`))}function Qp(e){return e.range.startsWith(P2)}function Hu(e){return e.reference.startsWith(P2)}function k2(e){if(!Qp(e))throw new Error("Not a virtual descriptor");return Mn(e,e.range.replace(bQ,""))}function sI(e){if(!Hu(e))throw new Error("Not a virtual descriptor");return Ks(e,e.reference.replace(bQ,""))}function PZe(e){return Qp(e)?Mn(e,e.range.replace(bQ,"")):e}function xZe(e){return Hu(e)?Ks(e,e.reference.replace(bQ,"")):e}function kZe(e,t){return e.range.includes("::")?e:Mn(e,`${e.range}::${iI.default.stringify(t)}`)}function QZe(e,t){return e.reference.includes("::")?e:Ks(e,`${e.reference}::${iI.default.stringify(t)}`)}function Q2(e,t){return e.identHash===t.identHash}function yce(e,t){return e.descriptorHash===t.descriptorHash}function R2(e,t){return e.locatorHash===t.locatorHash}function RZe(e,t){if(!Hu(e))throw new Error("Invalid package type");if(!Hu(t))throw new Error("Invalid package type");if(!Q2(e,t)||e.dependencies.size!==t.dependencies.size)return!1;for(let r of e.dependencies.values()){let s=t.dependencies.get(r.identHash);if(!s||!yce(r,s))return!1}return!0}function Pa(e){let t=Ece(e);if(!t)throw new Error(`Invalid ident (${e})`);return t}function Ece(e){let t=e.match(TZe);if(!t)return null;let[,r,s]=t;return xa(typeof r<"u"?r:null,s)}function E0(e,t=!1){let r=T2(e,t);if(!r)throw new Error(`Invalid descriptor (${e})`);return r}function T2(e,t=!1){let r=t?e.match(FZe):e.match(NZe);if(!r)return null;let[,s,a,n]=r;if(n==="unknown")throw new Error(`Invalid range (${e})`);let c=typeof s<"u"?s:null,f=typeof n<"u"?n:"unknown";return Mn(xa(c,a),f)}function Rp(e,t=!1){let r=PQ(e,t);if(!r)throw new Error(`Invalid locator (${e})`);return r}function PQ(e,t=!1){let r=t?e.match(OZe):e.match(LZe);if(!r)return null;let[,s,a,n]=r;if(n==="unknown")throw new Error(`Invalid reference (${e})`);let c=typeof s<"u"?s:null,f=typeof n<"u"?n:"unknown";return Ks(xa(c,a),f)}function Xd(e,t){let r=e.match(MZe);if(r===null)throw new Error(`Invalid range (${e})`);let s=typeof r[1]<"u"?r[1]:null;if(typeof t?.requireProtocol=="string"&&s!==t.requireProtocol)throw new Error(`Invalid protocol (${s})`);if(t?.requireProtocol&&s===null)throw new Error(`Missing protocol (${s})`);let a=typeof r[3]<"u"?decodeURIComponent(r[2]):null;if(t?.requireSource&&a===null)throw new Error(`Missing source (${e})`);let n=typeof r[3]<"u"?decodeURIComponent(r[3]):decodeURIComponent(r[2]),c=t?.parseSelector?iI.default.parse(n):n,f=typeof r[4]<"u"?iI.default.parse(r[4]):null;return{protocol:s,source:a,selector:c,params:f}}function UZe(e,t){try{return Xd(e,t)}catch{return null}}function _Ze(e,{protocol:t}){let{selector:r,params:s}=Xd(e,{requireProtocol:t,requireBindings:!0});if(typeof s.locator!="string")throw new Error(`Assertion failed: Invalid bindings for ${e}`);return{parentLocator:Rp(s.locator,!0),path:r}}function hce(e){return e=e.replaceAll("%","%25"),e=e.replaceAll(":","%3A"),e=e.replaceAll("#","%23"),e}function HZe(e){return e===null?!1:Object.entries(e).length>0}function xQ({protocol:e,source:t,selector:r,params:s}){let a="";return e!==null&&(a+=`${e}`),t!==null&&(a+=`${hce(t)}#`),a+=hce(r),HZe(s)&&(a+=`::${iI.default.stringify(s)}`),a}function jZe(e){let{params:t,protocol:r,source:s,selector:a}=Xd(e);for(let n in t)n.startsWith("__")&&delete t[n];return xQ({protocol:r,source:s,params:t,selector:a})}function fn(e){return e.scope?`@${e.scope}/${e.name}`:`${e.name}`}function GZe(e,t){return e.scope?xa(t,`${e.scope}__${e.name}`):xa(t,e.name)}function qZe(e,t){if(e.scope!==t)return e;let r=e.name.indexOf("__");if(r===-1)return xa(null,e.name);let s=e.name.slice(0,r),a=e.name.slice(r+2);return xa(s,a)}function hl(e){return e.scope?`@${e.scope}/${e.name}@${e.range}`:`${e.name}@${e.range}`}function gl(e){return e.scope?`@${e.scope}/${e.name}@${e.reference}`:`${e.name}@${e.reference}`}function l8(e){return e.scope!==null?`@${e.scope}-${e.name}`:e.name}function oI(e){let{protocol:t,selector:r}=Xd(e.reference),s=t!==null?t.replace(WZe,""):"exotic",a=gce.default.valid(r),n=a!==null?`${s}-${a}`:`${s}`,c=10;return e.scope?`${l8(e)}-${n}-${e.locatorHash.slice(0,c)}`:`${l8(e)}-${n}-${e.locatorHash.slice(0,c)}`}function $i(e,t){return t.scope?`${jt(e,`@${t.scope}/`,gt.SCOPE)}${jt(e,t.name,gt.NAME)}`:`${jt(e,t.name,gt.NAME)}`}function kQ(e){if(e.startsWith(P2)){let t=kQ(e.substring(e.indexOf("#")+1)),r=e.substring(P2.length,P2.length+vZe);return`${t} [${r}]`}else return e.replace(VZe,"?[...]")}function aI(e,t){return`${jt(e,kQ(t),gt.RANGE)}`}function oi(e,t){return`${$i(e,t)}${jt(e,"@",gt.RANGE)}${aI(e,t.range)}`}function F2(e,t){return`${jt(e,kQ(t),gt.REFERENCE)}`}function Vr(e,t){return`${$i(e,t)}${jt(e,"@",gt.REFERENCE)}${F2(e,t.reference)}`}function M4(e){return`${fn(e)}@${kQ(e.reference)}`}function lI(e){return Ys(e,[t=>fn(t),t=>t.range])}function N2(e,t){return $i(e,t.anchoredLocator)}function D2(e,t,r){let s=Qp(t)?k2(t):t;return r===null?`${oi(e,s)} \u2192 ${L4(e).Cross}`:s.identHash===r.identHash?`${oi(e,s)} \u2192 ${F2(e,r.reference)}`:`${oi(e,s)} \u2192 ${Vr(e,r)}`}function U4(e,t,r){return r===null?`${Vr(e,t)}`:`${Vr(e,t)} (via ${aI(e,r.range)})`}function p8(e){return`node_modules/${fn(e)}`}function QQ(e,t){return e.conditions?SZe(e.conditions,r=>{let[,s,a]=r.match(mce),n=t[s];return n?n.includes(a):!0}):!0}function O2(e){let t=new Set;if("children"in e)t.add(e);else for(let r of e.requests.values())t.add(r);for(let r of t)for(let s of r.children.values())t.add(s);return t}var iI,gce,dce,P2,vZe,mce,SZe,bQ,TZe,FZe,NZe,OZe,LZe,MZe,WZe,VZe,Zo=Ze(()=>{iI=et(Ie("querystring")),gce=et(pi()),dce=et(Mie());kc();y0();xc();Zo();P2="virtual:",vZe=5,mce=/(os|cpu|libc)=([a-z0-9_-]+)/,SZe=(0,dce.makeParser)(mce);bQ=/^[^#]*#/;TZe=/^(?:@([^/]+?)\/)?([^@/]+)$/;FZe=/^(?:@([^/]+?)\/)?([^@/]+?)(?:@(.+))$/,NZe=/^(?:@([^/]+?)\/)?([^@/]+?)(?:@(.+))?$/;OZe=/^(?:@([^/]+?)\/)?([^@/]+?)(?:@(.+))$/,LZe=/^(?:@([^/]+?)\/)?([^@/]+?)(?:@(.+))?$/;MZe=/^([^#:]*:)?((?:(?!::)[^#])*)(?:#((?:(?!::).)*))?(?:::(.*))?$/;WZe=/:$/;VZe=/\?.*/});var Ice,Cce=Ze(()=>{Zo();Ice={hooks:{reduceDependency:(e,t,r,s,{resolver:a,resolveOptions:n})=>{for(let{pattern:c,reference:f}of t.topLevelWorkspace.manifest.resolutions){if(c.from&&(c.from.fullName!==fn(r)||t.configuration.normalizeLocator(Ks(Pa(c.from.fullName),c.from.description??r.reference)).locatorHash!==r.locatorHash)||c.descriptor.fullName!==fn(e)||t.configuration.normalizeDependency(Mn(Rp(c.descriptor.fullName),c.descriptor.description??e.range)).descriptorHash!==e.descriptorHash)continue;return a.bindDescriptor(t.configuration.normalizeDependency(Mn(e,f)),t.topLevelWorkspace.anchoredLocator,n)}return e},validateProject:async(e,t)=>{for(let r of e.workspaces){let s=N2(e.configuration,r);await e.configuration.triggerHook(a=>a.validateWorkspace,r,{reportWarning:(a,n)=>t.reportWarning(a,`${s}: ${n}`),reportError:(a,n)=>t.reportError(a,`${s}: ${n}`)})}},validateWorkspace:async(e,t)=>{let{manifest:r}=e;r.resolutions.length&&e.cwd!==e.project.cwd&&r.errors.push(new Error("Resolutions field will be ignored"));for(let s of r.errors)t.reportWarning(57,s.message)}}}});var Ii,$d=Ze(()=>{Ii=class e{static{this.protocol="workspace:"}supportsDescriptor(t,r){return!!(t.range.startsWith(e.protocol)||r.project.tryWorkspaceByDescriptor(t)!==null)}supportsLocator(t,r){return!!t.reference.startsWith(e.protocol)}shouldPersistResolution(t,r){return!1}bindDescriptor(t,r,s){return t}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){return[s.project.getWorkspaceByDescriptor(t).anchoredLocator]}async getSatisfying(t,r,s,a){let[n]=await this.getCandidates(t,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(t,r){let s=r.project.getWorkspaceByCwd(t.reference.slice(e.protocol.length));return{...t,version:s.manifest.version||"0.0.0",languageName:"unknown",linkType:"SOFT",conditions:null,dependencies:r.project.configuration.normalizeDependencyMap(new Map([...s.manifest.dependencies,...s.manifest.devDependencies])),peerDependencies:new Map([...s.manifest.peerDependencies]),dependenciesMeta:s.manifest.dependenciesMeta,peerDependenciesMeta:s.manifest.peerDependenciesMeta,bin:s.manifest.bin}}}});var Fr={};Yt(Fr,{SemVer:()=>Dce.SemVer,clean:()=>KZe,getComparator:()=>vce,mergeComparators:()=>h8,satisfiesWithPrereleases:()=>eA,simplifyRanges:()=>g8,stringifyComparator:()=>Sce,validRange:()=>dl});function eA(e,t,r=!1){if(!e)return!1;let s=`${t}${r}`,a=wce.get(s);if(typeof a>"u")try{a=new Tp.default.Range(t,{includePrerelease:!0,loose:r})}catch{return!1}finally{wce.set(s,a||null)}else if(a===null)return!1;let n;try{n=new Tp.default.SemVer(e,a)}catch{return!1}return a.test(n)?!0:(n.prerelease&&(n.prerelease=[]),a.set.some(c=>{for(let f of c)f.semver.prerelease&&(f.semver.prerelease=[]);return c.every(f=>f.test(n))}))}function dl(e){if(e.indexOf(":")!==-1)return null;let t=Bce.get(e);if(typeof t<"u")return t;try{t=new Tp.default.Range(e)}catch{t=null}return Bce.set(e,t),t}function KZe(e){let t=YZe.exec(e);return t?t[1]:null}function vce(e){if(e.semver===Tp.default.Comparator.ANY)return{gt:null,lt:null};switch(e.operator){case"":return{gt:[">=",e.semver],lt:["<=",e.semver]};case">":case">=":return{gt:[e.operator,e.semver],lt:null};case"<":case"<=":return{gt:null,lt:[e.operator,e.semver]};default:throw new Error(`Assertion failed: Unexpected comparator operator (${e.operator})`)}}function h8(e){if(e.length===0)return null;let t=null,r=null;for(let s of e){if(s.gt){let a=t!==null?Tp.default.compare(s.gt[1],t[1]):null;(a===null||a>0||a===0&&s.gt[0]===">")&&(t=s.gt)}if(s.lt){let a=r!==null?Tp.default.compare(s.lt[1],r[1]):null;(a===null||a<0||a===0&&s.lt[0]==="<")&&(r=s.lt)}}if(t&&r){let s=Tp.default.compare(t[1],r[1]);if(s===0&&(t[0]===">"||r[0]==="<")||s>0)return null}return{gt:t,lt:r}}function Sce(e){if(e.gt&&e.lt){if(e.gt[0]===">="&&e.lt[0]==="<="&&e.gt[1].version===e.lt[1].version)return e.gt[1].version;if(e.gt[0]===">="&&e.lt[0]==="<"){if(e.lt[1].version===`${e.gt[1].major+1}.0.0-0`)return`^${e.gt[1].version}`;if(e.lt[1].version===`${e.gt[1].major}.${e.gt[1].minor+1}.0-0`)return`~${e.gt[1].version}`}}let t=[];return e.gt&&t.push(e.gt[0]+e.gt[1].version),e.lt&&t.push(e.lt[0]+e.lt[1].version),t.length?t.join(" "):"*"}function g8(e){let t=e.map(JZe).map(s=>dl(s).set.map(a=>a.map(n=>vce(n)))),r=t.shift().map(s=>h8(s)).filter(s=>s!==null);for(let s of t){let a=[];for(let n of r)for(let c of s){let f=h8([n,...c]);f!==null&&a.push(f)}r=a}return r.length===0?null:r.map(s=>Sce(s)).join(" || ")}function JZe(e){let t=e.split("||");if(t.length>1){let r=new Set;for(let s of t)t.some(a=>a!==s&&Tp.default.subset(s,a))||r.add(s);if(r.size{Tp=et(pi()),Dce=et(pi()),wce=new Map;Bce=new Map;YZe=/^(?:[\sv=]*?)((0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?)(?:\s*)$/});function bce(e){let t=e.match(/^[ \t]+/m);return t?t[0]:" "}function Pce(e){return e.charCodeAt(0)===65279?e.slice(1):e}function ka(e){return e.replace(/\\/g,"/")}function RQ(e,{yamlCompatibilityMode:t}){return t?k4(e):typeof e>"u"||typeof e=="boolean"?e:null}function xce(e,t){let r=t.search(/[^!]/);if(r===-1)return"invalid";let s=r%2===0?"":"!",a=t.slice(r);return`${s}${e}=${a}`}function d8(e,t){return t.length===1?xce(e,t[0]):`(${t.map(r=>xce(e,r)).join(" | ")})`}var kce,Ut,cI=Ze(()=>{Dt();Bc();kce=et(pi());$d();xc();Fp();Zo();Ut=class e{constructor(){this.indent=" ";this.name=null;this.version=null;this.os=null;this.cpu=null;this.libc=null;this.type=null;this.packageManager=null;this.private=!1;this.license=null;this.main=null;this.module=null;this.browser=null;this.languageName=null;this.bin=new Map;this.scripts=new Map;this.dependencies=new Map;this.devDependencies=new Map;this.peerDependencies=new Map;this.workspaceDefinitions=[];this.dependenciesMeta=new Map;this.peerDependenciesMeta=new Map;this.resolutions=[];this.files=null;this.publishConfig=null;this.installConfig=null;this.preferUnplugged=null;this.raw={};this.errors=[]}static{this.fileName="package.json"}static{this.allDependencies=["dependencies","devDependencies","peerDependencies"]}static{this.hardDependencies=["dependencies","devDependencies"]}static async tryFind(t,{baseFs:r=new Yn}={}){let s=K.join(t,"package.json");try{return await e.fromFile(s,{baseFs:r})}catch(a){if(a.code==="ENOENT")return null;throw a}}static async find(t,{baseFs:r}={}){let s=await e.tryFind(t,{baseFs:r});if(s===null)throw new Error("Manifest not found");return s}static async fromFile(t,{baseFs:r=new Yn}={}){let s=new e;return await s.loadFile(t,{baseFs:r}),s}static fromText(t){let r=new e;return r.loadFromText(t),r}loadFromText(t){let r;try{r=JSON.parse(Pce(t)||"{}")}catch(s){throw s.message+=` (when parsing ${t})`,s}this.load(r),this.indent=bce(t)}async loadFile(t,{baseFs:r=new Yn}){let s=await r.readFilePromise(t,"utf8"),a;try{a=JSON.parse(Pce(s)||"{}")}catch(n){throw n.message+=` (when parsing ${t})`,n}this.load(a),this.indent=bce(s)}load(t,{yamlCompatibilityMode:r=!1}={}){if(typeof t!="object"||t===null)throw new Error(`Utterly invalid manifest data (${t})`);this.raw=t;let s=[];if(this.name=null,typeof t.name=="string")try{this.name=Pa(t.name)}catch{s.push(new Error("Parsing failed for the 'name' field"))}if(typeof t.version=="string"?this.version=t.version:this.version=null,Array.isArray(t.os)){let n=[];this.os=n;for(let c of t.os)typeof c!="string"?s.push(new Error("Parsing failed for the 'os' field")):n.push(c)}else this.os=null;if(Array.isArray(t.cpu)){let n=[];this.cpu=n;for(let c of t.cpu)typeof c!="string"?s.push(new Error("Parsing failed for the 'cpu' field")):n.push(c)}else this.cpu=null;if(Array.isArray(t.libc)){let n=[];this.libc=n;for(let c of t.libc)typeof c!="string"?s.push(new Error("Parsing failed for the 'libc' field")):n.push(c)}else this.libc=null;if(typeof t.type=="string"?this.type=t.type:this.type=null,typeof t.packageManager=="string"?this.packageManager=t.packageManager:this.packageManager=null,typeof t.private=="boolean"?this.private=t.private:this.private=!1,typeof t.license=="string"?this.license=t.license:this.license=null,typeof t.languageName=="string"?this.languageName=t.languageName:this.languageName=null,typeof t.main=="string"?this.main=ka(t.main):this.main=null,typeof t.module=="string"?this.module=ka(t.module):this.module=null,t.browser!=null)if(typeof t.browser=="string")this.browser=ka(t.browser);else{this.browser=new Map;for(let[n,c]of Object.entries(t.browser))this.browser.set(ka(n),typeof c=="string"?ka(c):c)}else this.browser=null;if(this.bin=new Map,typeof t.bin=="string")t.bin.trim()===""?s.push(new Error("Invalid bin field")):this.name!==null?this.bin.set(this.name.name,ka(t.bin)):s.push(new Error("String bin field, but no attached package name"));else if(typeof t.bin=="object"&&t.bin!==null)for(let[n,c]of Object.entries(t.bin)){if(typeof c!="string"||c.trim()===""){s.push(new Error(`Invalid bin definition for '${n}'`));continue}let f=Pa(n);this.bin.set(f.name,ka(c))}if(this.scripts=new Map,typeof t.scripts=="object"&&t.scripts!==null)for(let[n,c]of Object.entries(t.scripts)){if(typeof c!="string"){s.push(new Error(`Invalid script definition for '${n}'`));continue}this.scripts.set(n,c)}if(this.dependencies=new Map,typeof t.dependencies=="object"&&t.dependencies!==null)for(let[n,c]of Object.entries(t.dependencies)){if(typeof c!="string"){s.push(new Error(`Invalid dependency range for '${n}'`));continue}let f;try{f=Pa(n)}catch{s.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=Mn(f,c);this.dependencies.set(p.identHash,p)}if(this.devDependencies=new Map,typeof t.devDependencies=="object"&&t.devDependencies!==null)for(let[n,c]of Object.entries(t.devDependencies)){if(typeof c!="string"){s.push(new Error(`Invalid dependency range for '${n}'`));continue}let f;try{f=Pa(n)}catch{s.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=Mn(f,c);this.devDependencies.set(p.identHash,p)}if(this.peerDependencies=new Map,typeof t.peerDependencies=="object"&&t.peerDependencies!==null)for(let[n,c]of Object.entries(t.peerDependencies)){let f;try{f=Pa(n)}catch{s.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}(typeof c!="string"||!c.startsWith(Ii.protocol)&&!dl(c))&&(s.push(new Error(`Invalid dependency range for '${n}'`)),c="*");let p=Mn(f,c);this.peerDependencies.set(p.identHash,p)}typeof t.workspaces=="object"&&t.workspaces!==null&&t.workspaces.nohoist&&s.push(new Error("'nohoist' is deprecated, please use 'installConfig.hoistingLimits' instead"));let a=Array.isArray(t.workspaces)?t.workspaces:typeof t.workspaces=="object"&&t.workspaces!==null&&Array.isArray(t.workspaces.packages)?t.workspaces.packages:[];this.workspaceDefinitions=[];for(let n of a){if(typeof n!="string"){s.push(new Error(`Invalid workspace definition for '${n}'`));continue}this.workspaceDefinitions.push({pattern:n})}if(this.dependenciesMeta=new Map,typeof t.dependenciesMeta=="object"&&t.dependenciesMeta!==null)for(let[n,c]of Object.entries(t.dependenciesMeta)){if(typeof c!="object"||c===null){s.push(new Error(`Invalid meta field for '${n}`));continue}let f=E0(n),p=this.ensureDependencyMeta(f),h=RQ(c.built,{yamlCompatibilityMode:r});if(h===null){s.push(new Error(`Invalid built meta field for '${n}'`));continue}let E=RQ(c.optional,{yamlCompatibilityMode:r});if(E===null){s.push(new Error(`Invalid optional meta field for '${n}'`));continue}let C=RQ(c.unplugged,{yamlCompatibilityMode:r});if(C===null){s.push(new Error(`Invalid unplugged meta field for '${n}'`));continue}Object.assign(p,{built:h,optional:E,unplugged:C})}if(this.peerDependenciesMeta=new Map,typeof t.peerDependenciesMeta=="object"&&t.peerDependenciesMeta!==null)for(let[n,c]of Object.entries(t.peerDependenciesMeta)){if(typeof c!="object"||c===null){s.push(new Error(`Invalid meta field for '${n}'`));continue}let f=E0(n),p=this.ensurePeerDependencyMeta(f),h=RQ(c.optional,{yamlCompatibilityMode:r});if(h===null){s.push(new Error(`Invalid optional meta field for '${n}'`));continue}Object.assign(p,{optional:h})}if(this.resolutions=[],typeof t.resolutions=="object"&&t.resolutions!==null)for(let[n,c]of Object.entries(t.resolutions)){if(typeof c!="string"){s.push(new Error(`Invalid resolution entry for '${n}'`));continue}try{this.resolutions.push({pattern:px(n),reference:c})}catch(f){s.push(f);continue}}if(Array.isArray(t.files)){this.files=new Set;for(let n of t.files){if(typeof n!="string"){s.push(new Error(`Invalid files entry for '${n}'`));continue}this.files.add(n)}}else this.files=null;if(typeof t.publishConfig=="object"&&t.publishConfig!==null){if(this.publishConfig={},typeof t.publishConfig.access=="string"&&(this.publishConfig.access=t.publishConfig.access),typeof t.publishConfig.main=="string"&&(this.publishConfig.main=ka(t.publishConfig.main)),typeof t.publishConfig.module=="string"&&(this.publishConfig.module=ka(t.publishConfig.module)),t.publishConfig.browser!=null)if(typeof t.publishConfig.browser=="string")this.publishConfig.browser=ka(t.publishConfig.browser);else{this.publishConfig.browser=new Map;for(let[n,c]of Object.entries(t.publishConfig.browser))this.publishConfig.browser.set(ka(n),typeof c=="string"?ka(c):c)}if(typeof t.publishConfig.registry=="string"&&(this.publishConfig.registry=t.publishConfig.registry),typeof t.publishConfig.provenance=="boolean"&&(this.publishConfig.provenance=t.publishConfig.provenance),typeof t.publishConfig.bin=="string")this.name!==null?this.publishConfig.bin=new Map([[this.name.name,ka(t.publishConfig.bin)]]):s.push(new Error("String bin field, but no attached package name"));else if(typeof t.publishConfig.bin=="object"&&t.publishConfig.bin!==null){this.publishConfig.bin=new Map;for(let[n,c]of Object.entries(t.publishConfig.bin)){if(typeof c!="string"){s.push(new Error(`Invalid bin definition for '${n}'`));continue}this.publishConfig.bin.set(n,ka(c))}}if(Array.isArray(t.publishConfig.executableFiles)){this.publishConfig.executableFiles=new Set;for(let n of t.publishConfig.executableFiles){if(typeof n!="string"){s.push(new Error("Invalid executable file definition"));continue}this.publishConfig.executableFiles.add(ka(n))}}}else this.publishConfig=null;if(typeof t.installConfig=="object"&&t.installConfig!==null){this.installConfig={};for(let n of Object.keys(t.installConfig))n==="hoistingLimits"?typeof t.installConfig.hoistingLimits=="string"?this.installConfig.hoistingLimits=t.installConfig.hoistingLimits:s.push(new Error("Invalid hoisting limits definition")):n=="selfReferences"?typeof t.installConfig.selfReferences=="boolean"?this.installConfig.selfReferences=t.installConfig.selfReferences:s.push(new Error("Invalid selfReferences definition, must be a boolean value")):s.push(new Error(`Unrecognized installConfig key: ${n}`))}else this.installConfig=null;if(typeof t.optionalDependencies=="object"&&t.optionalDependencies!==null)for(let[n,c]of Object.entries(t.optionalDependencies)){if(typeof c!="string"){s.push(new Error(`Invalid dependency range for '${n}'`));continue}let f;try{f=Pa(n)}catch{s.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=Mn(f,c);this.dependencies.set(p.identHash,p);let h=Mn(f,"unknown"),E=this.ensureDependencyMeta(h);Object.assign(E,{optional:!0})}typeof t.preferUnplugged=="boolean"?this.preferUnplugged=t.preferUnplugged:this.preferUnplugged=null,this.errors=s}getForScope(t){switch(t){case"dependencies":return this.dependencies;case"devDependencies":return this.devDependencies;case"peerDependencies":return this.peerDependencies;default:throw new Error(`Unsupported value ("${t}")`)}}hasConsumerDependency(t){return!!(this.dependencies.has(t.identHash)||this.peerDependencies.has(t.identHash))}hasHardDependency(t){return!!(this.dependencies.has(t.identHash)||this.devDependencies.has(t.identHash))}hasSoftDependency(t){return!!this.peerDependencies.has(t.identHash)}hasDependency(t){return!!(this.hasHardDependency(t)||this.hasSoftDependency(t))}getConditions(){let t=[];return this.os&&this.os.length>0&&t.push(d8("os",this.os)),this.cpu&&this.cpu.length>0&&t.push(d8("cpu",this.cpu)),this.libc&&this.libc.length>0&&t.push(d8("libc",this.libc)),t.length>0?t.join(" & "):null}ensureDependencyMeta(t){if(t.range!=="unknown"&&!kce.default.valid(t.range))throw new Error(`Invalid meta field range for '${hl(t)}'`);let r=fn(t),s=t.range!=="unknown"?t.range:null,a=this.dependenciesMeta.get(r);a||this.dependenciesMeta.set(r,a=new Map);let n=a.get(s);return n||a.set(s,n={}),n}ensurePeerDependencyMeta(t){if(t.range!=="unknown")throw new Error(`Invalid meta field range for '${hl(t)}'`);let r=fn(t),s=this.peerDependenciesMeta.get(r);return s||this.peerDependenciesMeta.set(r,s={}),s}setRawField(t,r,{after:s=[]}={}){let a=new Set(s.filter(n=>Object.hasOwn(this.raw,n)));if(a.size===0||Object.hasOwn(this.raw,t))this.raw[t]=r;else{let n=this.raw,c=this.raw={},f=!1;for(let p of Object.keys(n))c[p]=n[p],f||(a.delete(p),a.size===0&&(c[t]=r,f=!0))}}exportTo(t,{compatibilityMode:r=!0}={}){if(Object.assign(t,this.raw),this.name!==null?t.name=fn(this.name):delete t.name,this.version!==null?t.version=this.version:delete t.version,this.os!==null?t.os=this.os:delete t.os,this.cpu!==null?t.cpu=this.cpu:delete t.cpu,this.type!==null?t.type=this.type:delete t.type,this.packageManager!==null?t.packageManager=this.packageManager:delete t.packageManager,this.private?t.private=!0:delete t.private,this.license!==null?t.license=this.license:delete t.license,this.languageName!==null?t.languageName=this.languageName:delete t.languageName,this.main!==null?t.main=this.main:delete t.main,this.module!==null?t.module=this.module:delete t.module,this.browser!==null){let n=this.browser;typeof n=="string"?t.browser=n:n instanceof Map&&(t.browser=Object.assign({},...Array.from(n.keys()).sort().map(c=>({[c]:n.get(c)}))))}else delete t.browser;this.bin.size===1&&this.name!==null&&this.bin.has(this.name.name)?t.bin=this.bin.get(this.name.name):this.bin.size>0?t.bin=Object.assign({},...Array.from(this.bin.keys()).sort().map(n=>({[n]:this.bin.get(n)}))):delete t.bin,this.workspaceDefinitions.length>0?this.raw.workspaces&&!Array.isArray(this.raw.workspaces)?t.workspaces={...this.raw.workspaces,packages:this.workspaceDefinitions.map(({pattern:n})=>n)}:t.workspaces=this.workspaceDefinitions.map(({pattern:n})=>n):this.raw.workspaces&&!Array.isArray(this.raw.workspaces)&&Object.keys(this.raw.workspaces).length>0?t.workspaces=this.raw.workspaces:delete t.workspaces;let s=[],a=[];for(let n of this.dependencies.values()){let c=this.dependenciesMeta.get(fn(n)),f=!1;if(r&&c){let p=c.get(null);p&&p.optional&&(f=!0)}f?a.push(n):s.push(n)}s.length>0?t.dependencies=Object.assign({},...lI(s).map(n=>({[fn(n)]:n.range}))):delete t.dependencies,a.length>0?t.optionalDependencies=Object.assign({},...lI(a).map(n=>({[fn(n)]:n.range}))):delete t.optionalDependencies,this.devDependencies.size>0?t.devDependencies=Object.assign({},...lI(this.devDependencies.values()).map(n=>({[fn(n)]:n.range}))):delete t.devDependencies,this.peerDependencies.size>0?t.peerDependencies=Object.assign({},...lI(this.peerDependencies.values()).map(n=>({[fn(n)]:n.range}))):delete t.peerDependencies,t.dependenciesMeta={};for(let[n,c]of Ys(this.dependenciesMeta.entries(),([f,p])=>f))for(let[f,p]of Ys(c.entries(),([h,E])=>h!==null?`0${h}`:"1")){let h=f!==null?hl(Mn(Pa(n),f)):n,E={...p};r&&f===null&&delete E.optional,Object.keys(E).length!==0&&(t.dependenciesMeta[h]=E)}if(Object.keys(t.dependenciesMeta).length===0&&delete t.dependenciesMeta,this.peerDependenciesMeta.size>0?t.peerDependenciesMeta=Object.assign({},...Ys(this.peerDependenciesMeta.entries(),([n,c])=>n).map(([n,c])=>({[n]:c}))):delete t.peerDependenciesMeta,this.resolutions.length>0?t.resolutions=Object.assign({},...this.resolutions.map(({pattern:n,reference:c})=>({[hx(n)]:c}))):delete t.resolutions,this.files!==null?t.files=Array.from(this.files):delete t.files,this.preferUnplugged!==null?t.preferUnplugged=this.preferUnplugged:delete t.preferUnplugged,this.scripts!==null&&this.scripts.size>0){t.scripts??={};for(let n of Object.keys(t.scripts))this.scripts.has(n)||delete t.scripts[n];for(let[n,c]of this.scripts.entries())t.scripts[n]=c}else delete t.scripts;return t}}});function ZZe(e){return typeof e.reportCode<"u"}var Qce,Rce,zZe,_t,yo,Tc=Ze(()=>{Jl();Qce=Ie("stream"),Rce=Ie("string_decoder"),zZe=15,_t=class extends Error{constructor(r,s,a){super(s);this.reportExtra=a;this.reportCode=r}};yo=class{constructor(){this.cacheHits=new Set;this.cacheMisses=new Set;this.reportedInfos=new Set;this.reportedWarnings=new Set;this.reportedErrors=new Set}getRecommendedLength(){return 180}reportCacheHit(t){this.cacheHits.add(t.locatorHash)}reportCacheMiss(t,r){this.cacheMisses.add(t.locatorHash)}static progressViaCounter(t){let r=0,s,a=new Promise(p=>{s=p}),n=p=>{let h=s;a=new Promise(E=>{s=E}),r=p,h()},c=(p=0)=>{n(r+1)},f=async function*(){for(;r{r=c}),a=g4(c=>{let f=r;s=new Promise(p=>{r=p}),t=c,f()},1e3/zZe),n=async function*(){for(;;)await s,yield{title:t}}();return{[Symbol.asyncIterator](){return n},hasProgress:!1,hasTitle:!0,setTitle:a}}async startProgressPromise(t,r){let s=this.reportProgress(t);try{return await r(t)}finally{s.stop()}}startProgressSync(t,r){let s=this.reportProgress(t);try{return r(t)}finally{s.stop()}}reportInfoOnce(t,r,s){let a=s&&s.key?s.key:r;this.reportedInfos.has(a)||(this.reportedInfos.add(a),this.reportInfo(t,r),s?.reportExtra?.(this))}reportWarningOnce(t,r,s){let a=s&&s.key?s.key:r;this.reportedWarnings.has(a)||(this.reportedWarnings.add(a),this.reportWarning(t,r),s?.reportExtra?.(this))}reportErrorOnce(t,r,s){let a=s&&s.key?s.key:r;this.reportedErrors.has(a)||(this.reportedErrors.add(a),this.reportError(t,r),s?.reportExtra?.(this))}reportExceptionOnce(t){ZZe(t)?this.reportErrorOnce(t.reportCode,t.message,{key:t,reportExtra:t.reportExtra}):this.reportErrorOnce(1,t.stack||t.message,{key:t})}createStreamReporter(t=null){let r=new Qce.PassThrough,s=new Rce.StringDecoder,a="";return r.on("data",n=>{let c=s.write(n),f;do if(f=c.indexOf(` -`),f!==-1){let p=a+c.substring(0,f);c=c.substring(f+1),a="",t!==null?this.reportInfo(null,`${t} ${p}`):this.reportInfo(null,p)}while(f!==-1);a+=c}),r.on("end",()=>{let n=s.end();n!==""&&(t!==null?this.reportInfo(null,`${t} ${n}`):this.reportInfo(null,n))}),r}}});var uI,m8=Ze(()=>{Tc();Zo();uI=class{constructor(t){this.fetchers=t}supports(t,r){return!!this.tryFetcher(t,r)}getLocalPath(t,r){return this.getFetcher(t,r).getLocalPath(t,r)}async fetch(t,r){return await this.getFetcher(t,r).fetch(t,r)}tryFetcher(t,r){let s=this.fetchers.find(a=>a.supports(t,r));return s||null}getFetcher(t,r){let s=this.fetchers.find(a=>a.supports(t,r));if(!s)throw new _t(11,`${Vr(r.project.configuration,t)} isn't supported by any available fetcher`);return s}}});var em,y8=Ze(()=>{Zo();em=class{constructor(t){this.resolvers=t.filter(r=>r)}supportsDescriptor(t,r){return!!this.tryResolverByDescriptor(t,r)}supportsLocator(t,r){return!!this.tryResolverByLocator(t,r)}shouldPersistResolution(t,r){return this.getResolverByLocator(t,r).shouldPersistResolution(t,r)}bindDescriptor(t,r,s){return this.getResolverByDescriptor(t,s).bindDescriptor(t,r,s)}getResolutionDependencies(t,r){return this.getResolverByDescriptor(t,r).getResolutionDependencies(t,r)}async getCandidates(t,r,s){return await this.getResolverByDescriptor(t,s).getCandidates(t,r,s)}async getSatisfying(t,r,s,a){return this.getResolverByDescriptor(t,a).getSatisfying(t,r,s,a)}async resolve(t,r){return await this.getResolverByLocator(t,r).resolve(t,r)}tryResolverByDescriptor(t,r){let s=this.resolvers.find(a=>a.supportsDescriptor(t,r));return s||null}getResolverByDescriptor(t,r){let s=this.resolvers.find(a=>a.supportsDescriptor(t,r));if(!s)throw new Error(`${oi(r.project.configuration,t)} isn't supported by any available resolver`);return s}tryResolverByLocator(t,r){let s=this.resolvers.find(a=>a.supportsLocator(t,r));return s||null}getResolverByLocator(t,r){let s=this.resolvers.find(a=>a.supportsLocator(t,r));if(!s)throw new Error(`${Vr(r.project.configuration,t)} isn't supported by any available resolver`);return s}}});var fI,E8=Ze(()=>{Dt();Zo();fI=class{supports(t){return!!t.reference.startsWith("virtual:")}getLocalPath(t,r){let s=t.reference.indexOf("#");if(s===-1)throw new Error("Invalid virtual package reference");let a=t.reference.slice(s+1),n=Ks(t,a);return r.fetcher.getLocalPath(n,r)}async fetch(t,r){let s=t.reference.indexOf("#");if(s===-1)throw new Error("Invalid virtual package reference");let a=t.reference.slice(s+1),n=Ks(t,a),c=await r.fetcher.fetch(n,r);return await this.ensureVirtualLink(t,c,r)}getLocatorFilename(t){return oI(t)}async ensureVirtualLink(t,r,s){let a=r.packageFs.getRealPath(),n=s.project.configuration.get("virtualFolder"),c=this.getLocatorFilename(t),f=mo.makeVirtualPath(n,c,a),p=new jf(f,{baseFs:r.packageFs,pathUtils:K});return{...r,packageFs:p}}}});var TQ,Tce=Ze(()=>{TQ=class e{static{this.protocol="virtual:"}static isVirtualDescriptor(t){return!!t.range.startsWith(e.protocol)}static isVirtualLocator(t){return!!t.reference.startsWith(e.protocol)}supportsDescriptor(t,r){return e.isVirtualDescriptor(t)}supportsLocator(t,r){return e.isVirtualLocator(t)}shouldPersistResolution(t,r){return!1}bindDescriptor(t,r,s){throw new Error('Assertion failed: calling "bindDescriptor" on a virtual descriptor is unsupported')}getResolutionDependencies(t,r){throw new Error('Assertion failed: calling "getResolutionDependencies" on a virtual descriptor is unsupported')}async getCandidates(t,r,s){throw new Error('Assertion failed: calling "getCandidates" on a virtual descriptor is unsupported')}async getSatisfying(t,r,s,a){throw new Error('Assertion failed: calling "getSatisfying" on a virtual descriptor is unsupported')}async resolve(t,r){throw new Error('Assertion failed: calling "resolve" on a virtual locator is unsupported')}}});var AI,I8=Ze(()=>{Dt();$d();AI=class{supports(t){return!!t.reference.startsWith(Ii.protocol)}getLocalPath(t,r){return this.getWorkspace(t,r).cwd}async fetch(t,r){let s=this.getWorkspace(t,r).cwd;return{packageFs:new bn(s),prefixPath:vt.dot,localPath:s}}getWorkspace(t,r){return r.project.getWorkspaceByCwd(t.reference.slice(Ii.protocol.length))}}});function L2(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Fce(e){return typeof e>"u"?3:L2(e)?0:Array.isArray(e)?1:2}function B8(e,t){return Object.hasOwn(e,t)}function $Ze(e){return L2(e)&&B8(e,"onConflict")&&typeof e.onConflict=="string"}function eXe(e){if(typeof e>"u")return{onConflict:"default",value:e};if(!$Ze(e))return{onConflict:"default",value:e};if(B8(e,"value"))return e;let{onConflict:t,...r}=e;return{onConflict:t,value:r}}function Nce(e,t){let r=L2(e)&&B8(e,t)?e[t]:void 0;return eXe(r)}function pI(e,t){return[e,t,Oce]}function v8(e){return Array.isArray(e)?e[2]===Oce:!1}function C8(e,t){if(L2(e)){let r={};for(let s of Object.keys(e))r[s]=C8(e[s],t);return pI(t,r)}return Array.isArray(e)?pI(t,e.map(r=>C8(r,t))):pI(t,e)}function w8(e,t,r,s,a){let n,c=[],f=a,p=0;for(let E=a-1;E>=s;--E){let[C,S]=e[E],{onConflict:x,value:I}=Nce(S,r),T=Fce(I);if(T!==3){if(n??=T,T!==n||x==="hardReset"){p=f;break}if(T===2)return pI(C,I);if(c.unshift([C,I]),x==="reset"){p=E;break}x==="extend"&&E===s&&(s=0),f=E}}if(typeof n>"u")return null;let h=c.map(([E])=>E).join(", ");switch(n){case 1:return pI(h,new Array().concat(...c.map(([E,C])=>C.map(S=>C8(S,E)))));case 0:{let E=Object.assign({},...c.map(([,T])=>T)),C=Object.keys(E),S={},x=e.map(([T,O])=>[T,Nce(O,r).value]),I=XZe(x,([T,O])=>{let U=Fce(O);return U!==0&&U!==3});if(I!==-1){let T=x.slice(I+1);for(let O of C)S[O]=w8(T,t,O,0,T.length)}else for(let T of C)S[T]=w8(x,t,T,p,x.length);return pI(h,S)}default:throw new Error("Assertion failed: Non-extendable value type")}}function Lce(e){return w8(e.map(([t,r])=>[t,{".":r}]),[],".",0,e.length)}function M2(e){return v8(e)?e[1]:e}function FQ(e){let t=v8(e)?e[1]:e;if(Array.isArray(t))return t.map(r=>FQ(r));if(L2(t)){let r={};for(let[s,a]of Object.entries(t))r[s]=FQ(a);return r}return t}function S8(e){return v8(e)?e[0]:null}var XZe,Oce,Mce=Ze(()=>{XZe=(e,t,r)=>{let s=[...e];return s.reverse(),s.findIndex(t,r)};Oce=Symbol()});var NQ={};Yt(NQ,{getDefaultGlobalFolder:()=>b8,getHomeFolder:()=>hI,isFolderInside:()=>P8});function b8(){if(process.platform==="win32"){let e=fe.toPortablePath(process.env.LOCALAPPDATA||fe.join((0,D8.homedir)(),"AppData","Local"));return K.resolve(e,"Yarn/Berry")}if(process.env.XDG_DATA_HOME){let e=fe.toPortablePath(process.env.XDG_DATA_HOME);return K.resolve(e,"yarn/berry")}return K.resolve(hI(),".yarn/berry")}function hI(){return fe.toPortablePath((0,D8.homedir)()||"/usr/local/share")}function P8(e,t){let r=K.relative(t,e);return r&&!r.startsWith("..")&&!K.isAbsolute(r)}var D8,OQ=Ze(()=>{Dt();D8=Ie("os")});var Hce=G((TNt,_ce)=>{"use strict";var x8=Ie("https"),k8=Ie("http"),{URL:Uce}=Ie("url"),Q8=class extends k8.Agent{constructor(t){let{proxy:r,proxyRequestOptions:s,...a}=t;super(a),this.proxy=typeof r=="string"?new Uce(r):r,this.proxyRequestOptions=s||{}}createConnection(t,r){let s={...this.proxyRequestOptions,method:"CONNECT",host:this.proxy.hostname,port:this.proxy.port,path:`${t.host}:${t.port}`,setHost:!1,headers:{...this.proxyRequestOptions.headers,connection:this.keepAlive?"keep-alive":"close",host:`${t.host}:${t.port}`},agent:!1,timeout:t.timeout||0};if(this.proxy.username||this.proxy.password){let n=Buffer.from(`${decodeURIComponent(this.proxy.username||"")}:${decodeURIComponent(this.proxy.password||"")}`).toString("base64");s.headers["proxy-authorization"]=`Basic ${n}`}this.proxy.protocol==="https:"&&(s.servername=this.proxy.hostname);let a=(this.proxy.protocol==="http:"?k8:x8).request(s);a.once("connect",(n,c,f)=>{a.removeAllListeners(),c.removeAllListeners(),n.statusCode===200?r(null,c):(c.destroy(),r(new Error(`Bad response: ${n.statusCode}`),null))}),a.once("timeout",()=>{a.destroy(new Error("Proxy timeout"))}),a.once("error",n=>{a.removeAllListeners(),r(n,null)}),a.end()}},R8=class extends x8.Agent{constructor(t){let{proxy:r,proxyRequestOptions:s,...a}=t;super(a),this.proxy=typeof r=="string"?new Uce(r):r,this.proxyRequestOptions=s||{}}createConnection(t,r){let s={...this.proxyRequestOptions,method:"CONNECT",host:this.proxy.hostname,port:this.proxy.port,path:`${t.host}:${t.port}`,setHost:!1,headers:{...this.proxyRequestOptions.headers,connection:this.keepAlive?"keep-alive":"close",host:`${t.host}:${t.port}`},agent:!1,timeout:t.timeout||0};if(this.proxy.username||this.proxy.password){let n=Buffer.from(`${decodeURIComponent(this.proxy.username||"")}:${decodeURIComponent(this.proxy.password||"")}`).toString("base64");s.headers["proxy-authorization"]=`Basic ${n}`}this.proxy.protocol==="https:"&&(s.servername=this.proxy.hostname);let a=(this.proxy.protocol==="http:"?k8:x8).request(s);a.once("connect",(n,c,f)=>{if(a.removeAllListeners(),c.removeAllListeners(),n.statusCode===200){let p=super.createConnection({...t,socket:c});r(null,p)}else c.destroy(),r(new Error(`Bad response: ${n.statusCode}`),null)}),a.once("timeout",()=>{a.destroy(new Error("Proxy timeout"))}),a.once("error",n=>{a.removeAllListeners(),r(n,null)}),a.end()}};_ce.exports={HttpProxyAgent:Q8,HttpsProxyAgent:R8}});var T8,jce,Gce,qce=Ze(()=>{T8=et(Hce(),1),jce=T8.default.HttpProxyAgent,Gce=T8.default.HttpsProxyAgent});var Op=G((Np,LQ)=>{"use strict";Object.defineProperty(Np,"__esModule",{value:!0});var Wce=["Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"];function rXe(e){return Wce.includes(e)}var nXe=["Function","Generator","AsyncGenerator","GeneratorFunction","AsyncGeneratorFunction","AsyncFunction","Observable","Array","Buffer","Blob","Object","RegExp","Date","Error","Map","Set","WeakMap","WeakSet","ArrayBuffer","SharedArrayBuffer","DataView","Promise","URL","FormData","URLSearchParams","HTMLElement",...Wce];function iXe(e){return nXe.includes(e)}var sXe=["null","undefined","string","number","bigint","boolean","symbol"];function oXe(e){return sXe.includes(e)}function gI(e){return t=>typeof t===e}var{toString:Vce}=Object.prototype,U2=e=>{let t=Vce.call(e).slice(8,-1);if(/HTML\w+Element/.test(t)&&Pe.domElement(e))return"HTMLElement";if(iXe(t))return t},hi=e=>t=>U2(t)===e;function Pe(e){if(e===null)return"null";switch(typeof e){case"undefined":return"undefined";case"string":return"string";case"number":return"number";case"boolean":return"boolean";case"function":return"Function";case"bigint":return"bigint";case"symbol":return"symbol";default:}if(Pe.observable(e))return"Observable";if(Pe.array(e))return"Array";if(Pe.buffer(e))return"Buffer";let t=U2(e);if(t)return t;if(e instanceof String||e instanceof Boolean||e instanceof Number)throw new TypeError("Please don't use object wrappers for primitive types");return"Object"}Pe.undefined=gI("undefined");Pe.string=gI("string");var aXe=gI("number");Pe.number=e=>aXe(e)&&!Pe.nan(e);Pe.bigint=gI("bigint");Pe.function_=gI("function");Pe.null_=e=>e===null;Pe.class_=e=>Pe.function_(e)&&e.toString().startsWith("class ");Pe.boolean=e=>e===!0||e===!1;Pe.symbol=gI("symbol");Pe.numericString=e=>Pe.string(e)&&!Pe.emptyStringOrWhitespace(e)&&!Number.isNaN(Number(e));Pe.array=(e,t)=>Array.isArray(e)?Pe.function_(t)?e.every(t):!0:!1;Pe.buffer=e=>{var t,r,s,a;return(a=(s=(r=(t=e)===null||t===void 0?void 0:t.constructor)===null||r===void 0?void 0:r.isBuffer)===null||s===void 0?void 0:s.call(r,e))!==null&&a!==void 0?a:!1};Pe.blob=e=>hi("Blob")(e);Pe.nullOrUndefined=e=>Pe.null_(e)||Pe.undefined(e);Pe.object=e=>!Pe.null_(e)&&(typeof e=="object"||Pe.function_(e));Pe.iterable=e=>{var t;return Pe.function_((t=e)===null||t===void 0?void 0:t[Symbol.iterator])};Pe.asyncIterable=e=>{var t;return Pe.function_((t=e)===null||t===void 0?void 0:t[Symbol.asyncIterator])};Pe.generator=e=>{var t,r;return Pe.iterable(e)&&Pe.function_((t=e)===null||t===void 0?void 0:t.next)&&Pe.function_((r=e)===null||r===void 0?void 0:r.throw)};Pe.asyncGenerator=e=>Pe.asyncIterable(e)&&Pe.function_(e.next)&&Pe.function_(e.throw);Pe.nativePromise=e=>hi("Promise")(e);var lXe=e=>{var t,r;return Pe.function_((t=e)===null||t===void 0?void 0:t.then)&&Pe.function_((r=e)===null||r===void 0?void 0:r.catch)};Pe.promise=e=>Pe.nativePromise(e)||lXe(e);Pe.generatorFunction=hi("GeneratorFunction");Pe.asyncGeneratorFunction=e=>U2(e)==="AsyncGeneratorFunction";Pe.asyncFunction=e=>U2(e)==="AsyncFunction";Pe.boundFunction=e=>Pe.function_(e)&&!e.hasOwnProperty("prototype");Pe.regExp=hi("RegExp");Pe.date=hi("Date");Pe.error=hi("Error");Pe.map=e=>hi("Map")(e);Pe.set=e=>hi("Set")(e);Pe.weakMap=e=>hi("WeakMap")(e);Pe.weakSet=e=>hi("WeakSet")(e);Pe.int8Array=hi("Int8Array");Pe.uint8Array=hi("Uint8Array");Pe.uint8ClampedArray=hi("Uint8ClampedArray");Pe.int16Array=hi("Int16Array");Pe.uint16Array=hi("Uint16Array");Pe.int32Array=hi("Int32Array");Pe.uint32Array=hi("Uint32Array");Pe.float32Array=hi("Float32Array");Pe.float64Array=hi("Float64Array");Pe.bigInt64Array=hi("BigInt64Array");Pe.bigUint64Array=hi("BigUint64Array");Pe.arrayBuffer=hi("ArrayBuffer");Pe.sharedArrayBuffer=hi("SharedArrayBuffer");Pe.dataView=hi("DataView");Pe.enumCase=(e,t)=>Object.values(t).includes(e);Pe.directInstanceOf=(e,t)=>Object.getPrototypeOf(e)===t.prototype;Pe.urlInstance=e=>hi("URL")(e);Pe.urlString=e=>{if(!Pe.string(e))return!1;try{return new URL(e),!0}catch{return!1}};Pe.truthy=e=>!!e;Pe.falsy=e=>!e;Pe.nan=e=>Number.isNaN(e);Pe.primitive=e=>Pe.null_(e)||oXe(typeof e);Pe.integer=e=>Number.isInteger(e);Pe.safeInteger=e=>Number.isSafeInteger(e);Pe.plainObject=e=>{if(Vce.call(e)!=="[object Object]")return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.getPrototypeOf({})};Pe.typedArray=e=>rXe(U2(e));var cXe=e=>Pe.safeInteger(e)&&e>=0;Pe.arrayLike=e=>!Pe.nullOrUndefined(e)&&!Pe.function_(e)&&cXe(e.length);Pe.inRange=(e,t)=>{if(Pe.number(t))return e>=Math.min(0,t)&&e<=Math.max(t,0);if(Pe.array(t)&&t.length===2)return e>=Math.min(...t)&&e<=Math.max(...t);throw new TypeError(`Invalid range: ${JSON.stringify(t)}`)};var uXe=1,fXe=["innerHTML","ownerDocument","style","attributes","nodeValue"];Pe.domElement=e=>Pe.object(e)&&e.nodeType===uXe&&Pe.string(e.nodeName)&&!Pe.plainObject(e)&&fXe.every(t=>t in e);Pe.observable=e=>{var t,r,s,a;return e?e===((r=(t=e)[Symbol.observable])===null||r===void 0?void 0:r.call(t))||e===((a=(s=e)["@@observable"])===null||a===void 0?void 0:a.call(s)):!1};Pe.nodeStream=e=>Pe.object(e)&&Pe.function_(e.pipe)&&!Pe.observable(e);Pe.infinite=e=>e===1/0||e===-1/0;var Yce=e=>t=>Pe.integer(t)&&Math.abs(t%2)===e;Pe.evenInteger=Yce(0);Pe.oddInteger=Yce(1);Pe.emptyArray=e=>Pe.array(e)&&e.length===0;Pe.nonEmptyArray=e=>Pe.array(e)&&e.length>0;Pe.emptyString=e=>Pe.string(e)&&e.length===0;var AXe=e=>Pe.string(e)&&!/\S/.test(e);Pe.emptyStringOrWhitespace=e=>Pe.emptyString(e)||AXe(e);Pe.nonEmptyString=e=>Pe.string(e)&&e.length>0;Pe.nonEmptyStringAndNotWhitespace=e=>Pe.string(e)&&!Pe.emptyStringOrWhitespace(e);Pe.emptyObject=e=>Pe.object(e)&&!Pe.map(e)&&!Pe.set(e)&&Object.keys(e).length===0;Pe.nonEmptyObject=e=>Pe.object(e)&&!Pe.map(e)&&!Pe.set(e)&&Object.keys(e).length>0;Pe.emptySet=e=>Pe.set(e)&&e.size===0;Pe.nonEmptySet=e=>Pe.set(e)&&e.size>0;Pe.emptyMap=e=>Pe.map(e)&&e.size===0;Pe.nonEmptyMap=e=>Pe.map(e)&&e.size>0;Pe.propertyKey=e=>Pe.any([Pe.string,Pe.number,Pe.symbol],e);Pe.formData=e=>hi("FormData")(e);Pe.urlSearchParams=e=>hi("URLSearchParams")(e);var Kce=(e,t,r)=>{if(!Pe.function_(t))throw new TypeError(`Invalid predicate: ${JSON.stringify(t)}`);if(r.length===0)throw new TypeError("Invalid number of values");return e.call(r,t)};Pe.any=(e,...t)=>(Pe.array(e)?e:[e]).some(s=>Kce(Array.prototype.some,s,t));Pe.all=(e,...t)=>Kce(Array.prototype.every,e,t);var Ht=(e,t,r,s={})=>{if(!e){let{multipleValues:a}=s,n=a?`received values of types ${[...new Set(r.map(c=>`\`${Pe(c)}\``))].join(", ")}`:`received value of type \`${Pe(r)}\``;throw new TypeError(`Expected value which is \`${t}\`, ${n}.`)}};Np.assert={undefined:e=>Ht(Pe.undefined(e),"undefined",e),string:e=>Ht(Pe.string(e),"string",e),number:e=>Ht(Pe.number(e),"number",e),bigint:e=>Ht(Pe.bigint(e),"bigint",e),function_:e=>Ht(Pe.function_(e),"Function",e),null_:e=>Ht(Pe.null_(e),"null",e),class_:e=>Ht(Pe.class_(e),"Class",e),boolean:e=>Ht(Pe.boolean(e),"boolean",e),symbol:e=>Ht(Pe.symbol(e),"symbol",e),numericString:e=>Ht(Pe.numericString(e),"string with a number",e),array:(e,t)=>{Ht(Pe.array(e),"Array",e),t&&e.forEach(t)},buffer:e=>Ht(Pe.buffer(e),"Buffer",e),blob:e=>Ht(Pe.blob(e),"Blob",e),nullOrUndefined:e=>Ht(Pe.nullOrUndefined(e),"null or undefined",e),object:e=>Ht(Pe.object(e),"Object",e),iterable:e=>Ht(Pe.iterable(e),"Iterable",e),asyncIterable:e=>Ht(Pe.asyncIterable(e),"AsyncIterable",e),generator:e=>Ht(Pe.generator(e),"Generator",e),asyncGenerator:e=>Ht(Pe.asyncGenerator(e),"AsyncGenerator",e),nativePromise:e=>Ht(Pe.nativePromise(e),"native Promise",e),promise:e=>Ht(Pe.promise(e),"Promise",e),generatorFunction:e=>Ht(Pe.generatorFunction(e),"GeneratorFunction",e),asyncGeneratorFunction:e=>Ht(Pe.asyncGeneratorFunction(e),"AsyncGeneratorFunction",e),asyncFunction:e=>Ht(Pe.asyncFunction(e),"AsyncFunction",e),boundFunction:e=>Ht(Pe.boundFunction(e),"Function",e),regExp:e=>Ht(Pe.regExp(e),"RegExp",e),date:e=>Ht(Pe.date(e),"Date",e),error:e=>Ht(Pe.error(e),"Error",e),map:e=>Ht(Pe.map(e),"Map",e),set:e=>Ht(Pe.set(e),"Set",e),weakMap:e=>Ht(Pe.weakMap(e),"WeakMap",e),weakSet:e=>Ht(Pe.weakSet(e),"WeakSet",e),int8Array:e=>Ht(Pe.int8Array(e),"Int8Array",e),uint8Array:e=>Ht(Pe.uint8Array(e),"Uint8Array",e),uint8ClampedArray:e=>Ht(Pe.uint8ClampedArray(e),"Uint8ClampedArray",e),int16Array:e=>Ht(Pe.int16Array(e),"Int16Array",e),uint16Array:e=>Ht(Pe.uint16Array(e),"Uint16Array",e),int32Array:e=>Ht(Pe.int32Array(e),"Int32Array",e),uint32Array:e=>Ht(Pe.uint32Array(e),"Uint32Array",e),float32Array:e=>Ht(Pe.float32Array(e),"Float32Array",e),float64Array:e=>Ht(Pe.float64Array(e),"Float64Array",e),bigInt64Array:e=>Ht(Pe.bigInt64Array(e),"BigInt64Array",e),bigUint64Array:e=>Ht(Pe.bigUint64Array(e),"BigUint64Array",e),arrayBuffer:e=>Ht(Pe.arrayBuffer(e),"ArrayBuffer",e),sharedArrayBuffer:e=>Ht(Pe.sharedArrayBuffer(e),"SharedArrayBuffer",e),dataView:e=>Ht(Pe.dataView(e),"DataView",e),enumCase:(e,t)=>Ht(Pe.enumCase(e,t),"EnumCase",e),urlInstance:e=>Ht(Pe.urlInstance(e),"URL",e),urlString:e=>Ht(Pe.urlString(e),"string with a URL",e),truthy:e=>Ht(Pe.truthy(e),"truthy",e),falsy:e=>Ht(Pe.falsy(e),"falsy",e),nan:e=>Ht(Pe.nan(e),"NaN",e),primitive:e=>Ht(Pe.primitive(e),"primitive",e),integer:e=>Ht(Pe.integer(e),"integer",e),safeInteger:e=>Ht(Pe.safeInteger(e),"integer",e),plainObject:e=>Ht(Pe.plainObject(e),"plain object",e),typedArray:e=>Ht(Pe.typedArray(e),"TypedArray",e),arrayLike:e=>Ht(Pe.arrayLike(e),"array-like",e),domElement:e=>Ht(Pe.domElement(e),"HTMLElement",e),observable:e=>Ht(Pe.observable(e),"Observable",e),nodeStream:e=>Ht(Pe.nodeStream(e),"Node.js Stream",e),infinite:e=>Ht(Pe.infinite(e),"infinite number",e),emptyArray:e=>Ht(Pe.emptyArray(e),"empty array",e),nonEmptyArray:e=>Ht(Pe.nonEmptyArray(e),"non-empty array",e),emptyString:e=>Ht(Pe.emptyString(e),"empty string",e),emptyStringOrWhitespace:e=>Ht(Pe.emptyStringOrWhitespace(e),"empty string or whitespace",e),nonEmptyString:e=>Ht(Pe.nonEmptyString(e),"non-empty string",e),nonEmptyStringAndNotWhitespace:e=>Ht(Pe.nonEmptyStringAndNotWhitespace(e),"non-empty string and not whitespace",e),emptyObject:e=>Ht(Pe.emptyObject(e),"empty object",e),nonEmptyObject:e=>Ht(Pe.nonEmptyObject(e),"non-empty object",e),emptySet:e=>Ht(Pe.emptySet(e),"empty set",e),nonEmptySet:e=>Ht(Pe.nonEmptySet(e),"non-empty set",e),emptyMap:e=>Ht(Pe.emptyMap(e),"empty map",e),nonEmptyMap:e=>Ht(Pe.nonEmptyMap(e),"non-empty map",e),propertyKey:e=>Ht(Pe.propertyKey(e),"PropertyKey",e),formData:e=>Ht(Pe.formData(e),"FormData",e),urlSearchParams:e=>Ht(Pe.urlSearchParams(e),"URLSearchParams",e),evenInteger:e=>Ht(Pe.evenInteger(e),"even integer",e),oddInteger:e=>Ht(Pe.oddInteger(e),"odd integer",e),directInstanceOf:(e,t)=>Ht(Pe.directInstanceOf(e,t),"T",e),inRange:(e,t)=>Ht(Pe.inRange(e,t),"in range",e),any:(e,...t)=>Ht(Pe.any(e,...t),"predicate returns truthy for any value",t,{multipleValues:!0}),all:(e,...t)=>Ht(Pe.all(e,...t),"predicate returns truthy for all values",t,{multipleValues:!0})};Object.defineProperties(Pe,{class:{value:Pe.class_},function:{value:Pe.function_},null:{value:Pe.null_}});Object.defineProperties(Np.assert,{class:{value:Np.assert.class_},function:{value:Np.assert.function_},null:{value:Np.assert.null_}});Np.default=Pe;LQ.exports=Pe;LQ.exports.default=Pe;LQ.exports.assert=Np.assert});var Jce=G((NNt,F8)=>{"use strict";var MQ=class extends Error{constructor(t){super(t||"Promise was canceled"),this.name="CancelError"}get isCanceled(){return!0}},UQ=class e{static fn(t){return(...r)=>new e((s,a,n)=>{r.push(n),t(...r).then(s,a)})}constructor(t){this._cancelHandlers=[],this._isPending=!0,this._isCanceled=!1,this._rejectOnCancel=!0,this._promise=new Promise((r,s)=>{this._reject=s;let a=f=>{this._isPending=!1,r(f)},n=f=>{this._isPending=!1,s(f)},c=f=>{if(!this._isPending)throw new Error("The `onCancel` handler was attached after the promise settled.");this._cancelHandlers.push(f)};return Object.defineProperties(c,{shouldReject:{get:()=>this._rejectOnCancel,set:f=>{this._rejectOnCancel=f}}}),t(a,n,c)})}then(t,r){return this._promise.then(t,r)}catch(t){return this._promise.catch(t)}finally(t){return this._promise.finally(t)}cancel(t){if(!(!this._isPending||this._isCanceled)){if(this._cancelHandlers.length>0)try{for(let r of this._cancelHandlers)r()}catch(r){this._reject(r)}this._isCanceled=!0,this._rejectOnCancel&&this._reject(new MQ(t))}}get isCanceled(){return this._isCanceled}};Object.setPrototypeOf(UQ.prototype,Promise.prototype);F8.exports=UQ;F8.exports.CancelError=MQ});var zce=G((O8,L8)=>{"use strict";Object.defineProperty(O8,"__esModule",{value:!0});function pXe(e){return e.encrypted}var N8=(e,t)=>{let r;typeof t=="function"?r={connect:t}:r=t;let s=typeof r.connect=="function",a=typeof r.secureConnect=="function",n=typeof r.close=="function",c=()=>{s&&r.connect(),pXe(e)&&a&&(e.authorized?r.secureConnect():e.authorizationError||e.once("secureConnect",r.secureConnect)),n&&e.once("close",r.close)};e.writable&&!e.connecting?c():e.connecting?e.once("connect",c):e.destroyed&&n&&r.close(e._hadError)};O8.default=N8;L8.exports=N8;L8.exports.default=N8});var Zce=G((U8,_8)=>{"use strict";Object.defineProperty(U8,"__esModule",{value:!0});var hXe=zce(),gXe=Number(process.versions.node.split(".")[0]),M8=e=>{let t={start:Date.now(),socket:void 0,lookup:void 0,connect:void 0,secureConnect:void 0,upload:void 0,response:void 0,end:void 0,error:void 0,abort:void 0,phases:{wait:void 0,dns:void 0,tcp:void 0,tls:void 0,request:void 0,firstByte:void 0,download:void 0,total:void 0}};e.timings=t;let r=c=>{let f=c.emit.bind(c);c.emit=(p,...h)=>(p==="error"&&(t.error=Date.now(),t.phases.total=t.error-t.start,c.emit=f),f(p,...h))};r(e),e.prependOnceListener("abort",()=>{t.abort=Date.now(),(!t.response||gXe>=13)&&(t.phases.total=Date.now()-t.start)});let s=c=>{t.socket=Date.now(),t.phases.wait=t.socket-t.start;let f=()=>{t.lookup=Date.now(),t.phases.dns=t.lookup-t.socket};c.prependOnceListener("lookup",f),hXe.default(c,{connect:()=>{t.connect=Date.now(),t.lookup===void 0&&(c.removeListener("lookup",f),t.lookup=t.connect,t.phases.dns=t.lookup-t.socket),t.phases.tcp=t.connect-t.lookup},secureConnect:()=>{t.secureConnect=Date.now(),t.phases.tls=t.secureConnect-t.connect}})};e.socket?s(e.socket):e.prependOnceListener("socket",s);let a=()=>{var c;t.upload=Date.now(),t.phases.request=t.upload-(c=t.secureConnect,c??t.connect)};return(typeof e.writableFinished=="boolean"?e.writableFinished:e.finished&&e.outputSize===0&&(!e.socket||e.socket.writableLength===0))?a():e.prependOnceListener("finish",a),e.prependOnceListener("response",c=>{t.response=Date.now(),t.phases.firstByte=t.response-t.upload,c.timings=t,r(c),c.prependOnceListener("end",()=>{t.end=Date.now(),t.phases.download=t.end-t.response,t.phases.total=t.end-t.start})}),t};U8.default=M8;_8.exports=M8;_8.exports.default=M8});var iue=G((ONt,G8)=>{"use strict";var{V4MAPPED:dXe,ADDRCONFIG:mXe,ALL:nue,promises:{Resolver:Xce},lookup:yXe}=Ie("dns"),{promisify:H8}=Ie("util"),EXe=Ie("os"),dI=Symbol("cacheableLookupCreateConnection"),j8=Symbol("cacheableLookupInstance"),$ce=Symbol("expires"),IXe=typeof nue=="number",eue=e=>{if(!(e&&typeof e.createConnection=="function"))throw new Error("Expected an Agent instance as the first argument")},CXe=e=>{for(let t of e)t.family!==6&&(t.address=`::ffff:${t.address}`,t.family=6)},tue=()=>{let e=!1,t=!1;for(let r of Object.values(EXe.networkInterfaces()))for(let s of r)if(!s.internal&&(s.family==="IPv6"?t=!0:e=!0,e&&t))return{has4:e,has6:t};return{has4:e,has6:t}},wXe=e=>Symbol.iterator in e,rue={ttl:!0},BXe={all:!0},_Q=class{constructor({cache:t=new Map,maxTtl:r=1/0,fallbackDuration:s=3600,errorTtl:a=.15,resolver:n=new Xce,lookup:c=yXe}={}){if(this.maxTtl=r,this.errorTtl=a,this._cache=t,this._resolver=n,this._dnsLookup=H8(c),this._resolver instanceof Xce?(this._resolve4=this._resolver.resolve4.bind(this._resolver),this._resolve6=this._resolver.resolve6.bind(this._resolver)):(this._resolve4=H8(this._resolver.resolve4.bind(this._resolver)),this._resolve6=H8(this._resolver.resolve6.bind(this._resolver))),this._iface=tue(),this._pending={},this._nextRemovalTime=!1,this._hostnamesToFallback=new Set,s<1)this._fallback=!1;else{this._fallback=!0;let f=setInterval(()=>{this._hostnamesToFallback.clear()},s*1e3);f.unref&&f.unref()}this.lookup=this.lookup.bind(this),this.lookupAsync=this.lookupAsync.bind(this)}set servers(t){this.clear(),this._resolver.setServers(t)}get servers(){return this._resolver.getServers()}lookup(t,r,s){if(typeof r=="function"?(s=r,r={}):typeof r=="number"&&(r={family:r}),!s)throw new Error("Callback must be a function.");this.lookupAsync(t,r).then(a=>{r.all?s(null,a):s(null,a.address,a.family,a.expires,a.ttl)},s)}async lookupAsync(t,r={}){typeof r=="number"&&(r={family:r});let s=await this.query(t);if(r.family===6){let a=s.filter(n=>n.family===6);r.hints&dXe&&(IXe&&r.hints&nue||a.length===0)?CXe(s):s=a}else r.family===4&&(s=s.filter(a=>a.family===4));if(r.hints&mXe){let{_iface:a}=this;s=s.filter(n=>n.family===6?a.has6:a.has4)}if(s.length===0){let a=new Error(`cacheableLookup ENOTFOUND ${t}`);throw a.code="ENOTFOUND",a.hostname=t,a}return r.all?s:s[0]}async query(t){let r=await this._cache.get(t);if(!r){let s=this._pending[t];if(s)r=await s;else{let a=this.queryAndCache(t);this._pending[t]=a,r=await a}}return r=r.map(s=>({...s})),r}async _resolve(t){let r=async h=>{try{return await h}catch(E){if(E.code==="ENODATA"||E.code==="ENOTFOUND")return[];throw E}},[s,a]=await Promise.all([this._resolve4(t,rue),this._resolve6(t,rue)].map(h=>r(h))),n=0,c=0,f=0,p=Date.now();for(let h of s)h.family=4,h.expires=p+h.ttl*1e3,n=Math.max(n,h.ttl);for(let h of a)h.family=6,h.expires=p+h.ttl*1e3,c=Math.max(c,h.ttl);return s.length>0?a.length>0?f=Math.min(n,c):f=n:f=c,{entries:[...s,...a],cacheTtl:f}}async _lookup(t){try{return{entries:await this._dnsLookup(t,{all:!0}),cacheTtl:0}}catch{return{entries:[],cacheTtl:0}}}async _set(t,r,s){if(this.maxTtl>0&&s>0){s=Math.min(s,this.maxTtl)*1e3,r[$ce]=Date.now()+s;try{await this._cache.set(t,r,s)}catch(a){this.lookupAsync=async()=>{let n=new Error("Cache Error. Please recreate the CacheableLookup instance.");throw n.cause=a,n}}wXe(this._cache)&&this._tick(s)}}async queryAndCache(t){if(this._hostnamesToFallback.has(t))return this._dnsLookup(t,BXe);try{let r=await this._resolve(t);r.entries.length===0&&this._fallback&&(r=await this._lookup(t),r.entries.length!==0&&this._hostnamesToFallback.add(t));let s=r.entries.length===0?this.errorTtl:r.cacheTtl;return await this._set(t,r.entries,s),delete this._pending[t],r.entries}catch(r){throw delete this._pending[t],r}}_tick(t){let r=this._nextRemovalTime;(!r||t{this._nextRemovalTime=!1;let s=1/0,a=Date.now();for(let[n,c]of this._cache){let f=c[$ce];a>=f?this._cache.delete(n):f("lookup"in r||(r.lookup=this.lookup),t[dI](r,s))}uninstall(t){if(eue(t),t[dI]){if(t[j8]!==this)throw new Error("The agent is not owned by this CacheableLookup instance");t.createConnection=t[dI],delete t[dI],delete t[j8]}}updateInterfaceInfo(){let{_iface:t}=this;this._iface=tue(),(t.has4&&!this._iface.has4||t.has6&&!this._iface.has6)&&this._cache.clear()}clear(t){if(t){this._cache.delete(t);return}this._cache.clear()}};G8.exports=_Q;G8.exports.default=_Q});var aue=G((LNt,q8)=>{"use strict";var vXe=typeof URL>"u"?Ie("url").URL:URL,SXe="text/plain",DXe="us-ascii",sue=(e,t)=>t.some(r=>r instanceof RegExp?r.test(e):r===e),bXe=(e,{stripHash:t})=>{let r=e.match(/^data:([^,]*?),([^#]*?)(?:#(.*))?$/);if(!r)throw new Error(`Invalid URL: ${e}`);let s=r[1].split(";"),a=r[2],n=t?"":r[3],c=!1;s[s.length-1]==="base64"&&(s.pop(),c=!0);let f=(s.shift()||"").toLowerCase(),h=[...s.map(E=>{let[C,S=""]=E.split("=").map(x=>x.trim());return C==="charset"&&(S=S.toLowerCase(),S===DXe)?"":`${C}${S?`=${S}`:""}`}).filter(Boolean)];return c&&h.push("base64"),(h.length!==0||f&&f!==SXe)&&h.unshift(f),`data:${h.join(";")},${c?a.trim():a}${n?`#${n}`:""}`},oue=(e,t)=>{if(t={defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0,...t},Reflect.has(t,"normalizeHttps"))throw new Error("options.normalizeHttps is renamed to options.forceHttp");if(Reflect.has(t,"normalizeHttp"))throw new Error("options.normalizeHttp is renamed to options.forceHttps");if(Reflect.has(t,"stripFragment"))throw new Error("options.stripFragment is renamed to options.stripHash");if(e=e.trim(),/^data:/i.test(e))return bXe(e,t);let r=e.startsWith("//");!r&&/^\.*\//.test(e)||(e=e.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,t.defaultProtocol));let a=new vXe(e);if(t.forceHttp&&t.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(t.forceHttp&&a.protocol==="https:"&&(a.protocol="http:"),t.forceHttps&&a.protocol==="http:"&&(a.protocol="https:"),t.stripAuthentication&&(a.username="",a.password=""),t.stripHash&&(a.hash=""),a.pathname&&(a.pathname=a.pathname.replace(/((?!:).|^)\/{2,}/g,(n,c)=>/^(?!\/)/g.test(c)?`${c}/`:"/")),a.pathname&&(a.pathname=decodeURI(a.pathname)),t.removeDirectoryIndex===!0&&(t.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(t.removeDirectoryIndex)&&t.removeDirectoryIndex.length>0){let n=a.pathname.split("/"),c=n[n.length-1];sue(c,t.removeDirectoryIndex)&&(n=n.slice(0,n.length-1),a.pathname=n.slice(1).join("/")+"/")}if(a.hostname&&(a.hostname=a.hostname.replace(/\.$/,""),t.stripWWW&&/^www\.([a-z\-\d]{2,63})\.([a-z.]{2,5})$/.test(a.hostname)&&(a.hostname=a.hostname.replace(/^www\./,""))),Array.isArray(t.removeQueryParameters))for(let n of[...a.searchParams.keys()])sue(n,t.removeQueryParameters)&&a.searchParams.delete(n);return t.sortQueryParameters&&a.searchParams.sort(),t.removeTrailingSlash&&(a.pathname=a.pathname.replace(/\/$/,"")),e=a.toString(),(t.removeTrailingSlash||a.pathname==="/")&&a.hash===""&&(e=e.replace(/\/$/,"")),r&&!t.normalizeProtocol&&(e=e.replace(/^http:\/\//,"//")),t.stripProtocol&&(e=e.replace(/^(?:https?:)?\/\//,"")),e};q8.exports=oue;q8.exports.default=oue});var uue=G((MNt,cue)=>{cue.exports=lue;function lue(e,t){if(e&&t)return lue(e)(t);if(typeof e!="function")throw new TypeError("need wrapper function");return Object.keys(e).forEach(function(s){r[s]=e[s]}),r;function r(){for(var s=new Array(arguments.length),a=0;a{var fue=uue();W8.exports=fue(HQ);W8.exports.strict=fue(Aue);HQ.proto=HQ(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return HQ(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return Aue(this)},configurable:!0})});function HQ(e){var t=function(){return t.called?t.value:(t.called=!0,t.value=e.apply(this,arguments))};return t.called=!1,t}function Aue(e){var t=function(){if(t.called)throw new Error(t.onceError);return t.called=!0,t.value=e.apply(this,arguments)},r=e.name||"Function wrapped with `once`";return t.onceError=r+" shouldn't be called more than once",t.called=!1,t}});var Y8=G((_Nt,hue)=>{var PXe=V8(),xXe=function(){},kXe=function(e){return e.setHeader&&typeof e.abort=="function"},QXe=function(e){return e.stdio&&Array.isArray(e.stdio)&&e.stdio.length===3},pue=function(e,t,r){if(typeof t=="function")return pue(e,null,t);t||(t={}),r=PXe(r||xXe);var s=e._writableState,a=e._readableState,n=t.readable||t.readable!==!1&&e.readable,c=t.writable||t.writable!==!1&&e.writable,f=function(){e.writable||p()},p=function(){c=!1,n||r.call(e)},h=function(){n=!1,c||r.call(e)},E=function(I){r.call(e,I?new Error("exited with error code: "+I):null)},C=function(I){r.call(e,I)},S=function(){if(n&&!(a&&a.ended))return r.call(e,new Error("premature close"));if(c&&!(s&&s.ended))return r.call(e,new Error("premature close"))},x=function(){e.req.on("finish",p)};return kXe(e)?(e.on("complete",p),e.on("abort",S),e.req?x():e.on("request",x)):c&&!s&&(e.on("end",f),e.on("close",f)),QXe(e)&&e.on("exit",E),e.on("end",h),e.on("finish",p),t.error!==!1&&e.on("error",C),e.on("close",S),function(){e.removeListener("complete",p),e.removeListener("abort",S),e.removeListener("request",x),e.req&&e.req.removeListener("finish",p),e.removeListener("end",f),e.removeListener("close",f),e.removeListener("finish",p),e.removeListener("exit",E),e.removeListener("end",h),e.removeListener("error",C),e.removeListener("close",S)}};hue.exports=pue});var mue=G((HNt,due)=>{var RXe=V8(),TXe=Y8(),K8=Ie("fs"),_2=function(){},FXe=/^v?\.0/.test(process.version),jQ=function(e){return typeof e=="function"},NXe=function(e){return!FXe||!K8?!1:(e instanceof(K8.ReadStream||_2)||e instanceof(K8.WriteStream||_2))&&jQ(e.close)},OXe=function(e){return e.setHeader&&jQ(e.abort)},LXe=function(e,t,r,s){s=RXe(s);var a=!1;e.on("close",function(){a=!0}),TXe(e,{readable:t,writable:r},function(c){if(c)return s(c);a=!0,s()});var n=!1;return function(c){if(!a&&!n){if(n=!0,NXe(e))return e.close(_2);if(OXe(e))return e.abort();if(jQ(e.destroy))return e.destroy();s(c||new Error("stream was destroyed"))}}},gue=function(e){e()},MXe=function(e,t){return e.pipe(t)},UXe=function(){var e=Array.prototype.slice.call(arguments),t=jQ(e[e.length-1]||_2)&&e.pop()||_2;if(Array.isArray(e[0])&&(e=e[0]),e.length<2)throw new Error("pump requires two streams per minimum");var r,s=e.map(function(a,n){var c=n0;return LXe(a,c,f,function(p){r||(r=p),p&&s.forEach(gue),!c&&(s.forEach(gue),t(r))})});return e.reduce(MXe)};due.exports=UXe});var Eue=G((jNt,yue)=>{"use strict";var{PassThrough:_Xe}=Ie("stream");yue.exports=e=>{e={...e};let{array:t}=e,{encoding:r}=e,s=r==="buffer",a=!1;t?a=!(r||s):r=r||"utf8",s&&(r=null);let n=new _Xe({objectMode:a});r&&n.setEncoding(r);let c=0,f=[];return n.on("data",p=>{f.push(p),a?c=f.length:c+=p.length}),n.getBufferedValue=()=>t?f:s?Buffer.concat(f,c):f.join(""),n.getBufferedLength=()=>c,n}});var Iue=G((GNt,mI)=>{"use strict";var HXe=mue(),jXe=Eue(),GQ=class extends Error{constructor(){super("maxBuffer exceeded"),this.name="MaxBufferError"}};async function qQ(e,t){if(!e)return Promise.reject(new Error("Expected a stream"));t={maxBuffer:1/0,...t};let{maxBuffer:r}=t,s;return await new Promise((a,n)=>{let c=f=>{f&&(f.bufferedData=s.getBufferedValue()),n(f)};s=HXe(e,jXe(t),f=>{if(f){c(f);return}a()}),s.on("data",()=>{s.getBufferedLength()>r&&c(new GQ)})}),s.getBufferedValue()}mI.exports=qQ;mI.exports.default=qQ;mI.exports.buffer=(e,t)=>qQ(e,{...t,encoding:"buffer"});mI.exports.array=(e,t)=>qQ(e,{...t,array:!0});mI.exports.MaxBufferError=GQ});var wue=G((WNt,Cue)=>{"use strict";var GXe=new Set([200,203,204,206,300,301,308,404,405,410,414,501]),qXe=new Set([200,203,204,300,301,302,303,307,308,404,405,410,414,501]),WXe=new Set([500,502,503,504]),VXe={date:!0,connection:!0,"keep-alive":!0,"proxy-authenticate":!0,"proxy-authorization":!0,te:!0,trailer:!0,"transfer-encoding":!0,upgrade:!0},YXe={"content-length":!0,"content-encoding":!0,"transfer-encoding":!0,"content-range":!0};function tm(e){let t=parseInt(e,10);return isFinite(t)?t:0}function KXe(e){return e?WXe.has(e.status):!0}function J8(e){let t={};if(!e)return t;let r=e.trim().split(/,/);for(let s of r){let[a,n]=s.split(/=/,2);t[a.trim()]=n===void 0?!0:n.trim().replace(/^"|"$/g,"")}return t}function JXe(e){let t=[];for(let r in e){let s=e[r];t.push(s===!0?r:r+"="+s)}if(t.length)return t.join(", ")}Cue.exports=class{constructor(t,r,{shared:s,cacheHeuristic:a,immutableMinTimeToLive:n,ignoreCargoCult:c,_fromObject:f}={}){if(f){this._fromObject(f);return}if(!r||!r.headers)throw Error("Response headers missing");this._assertRequestHasHeaders(t),this._responseTime=this.now(),this._isShared=s!==!1,this._cacheHeuristic=a!==void 0?a:.1,this._immutableMinTtl=n!==void 0?n:24*3600*1e3,this._status="status"in r?r.status:200,this._resHeaders=r.headers,this._rescc=J8(r.headers["cache-control"]),this._method="method"in t?t.method:"GET",this._url=t.url,this._host=t.headers.host,this._noAuthorization=!t.headers.authorization,this._reqHeaders=r.headers.vary?t.headers:null,this._reqcc=J8(t.headers["cache-control"]),c&&"pre-check"in this._rescc&&"post-check"in this._rescc&&(delete this._rescc["pre-check"],delete this._rescc["post-check"],delete this._rescc["no-cache"],delete this._rescc["no-store"],delete this._rescc["must-revalidate"],this._resHeaders=Object.assign({},this._resHeaders,{"cache-control":JXe(this._rescc)}),delete this._resHeaders.expires,delete this._resHeaders.pragma),r.headers["cache-control"]==null&&/no-cache/.test(r.headers.pragma)&&(this._rescc["no-cache"]=!0)}now(){return Date.now()}storable(){return!!(!this._reqcc["no-store"]&&(this._method==="GET"||this._method==="HEAD"||this._method==="POST"&&this._hasExplicitExpiration())&&qXe.has(this._status)&&!this._rescc["no-store"]&&(!this._isShared||!this._rescc.private)&&(!this._isShared||this._noAuthorization||this._allowsStoringAuthenticated())&&(this._resHeaders.expires||this._rescc["max-age"]||this._isShared&&this._rescc["s-maxage"]||this._rescc.public||GXe.has(this._status)))}_hasExplicitExpiration(){return this._isShared&&this._rescc["s-maxage"]||this._rescc["max-age"]||this._resHeaders.expires}_assertRequestHasHeaders(t){if(!t||!t.headers)throw Error("Request headers missing")}satisfiesWithoutRevalidation(t){this._assertRequestHasHeaders(t);let r=J8(t.headers["cache-control"]);return r["no-cache"]||/no-cache/.test(t.headers.pragma)||r["max-age"]&&this.age()>r["max-age"]||r["min-fresh"]&&this.timeToLive()<1e3*r["min-fresh"]||this.stale()&&!(r["max-stale"]&&!this._rescc["must-revalidate"]&&(r["max-stale"]===!0||r["max-stale"]>this.age()-this.maxAge()))?!1:this._requestMatches(t,!1)}_requestMatches(t,r){return(!this._url||this._url===t.url)&&this._host===t.headers.host&&(!t.method||this._method===t.method||r&&t.method==="HEAD")&&this._varyMatches(t)}_allowsStoringAuthenticated(){return this._rescc["must-revalidate"]||this._rescc.public||this._rescc["s-maxage"]}_varyMatches(t){if(!this._resHeaders.vary)return!0;if(this._resHeaders.vary==="*")return!1;let r=this._resHeaders.vary.trim().toLowerCase().split(/\s*,\s*/);for(let s of r)if(t.headers[s]!==this._reqHeaders[s])return!1;return!0}_copyWithoutHopByHopHeaders(t){let r={};for(let s in t)VXe[s]||(r[s]=t[s]);if(t.connection){let s=t.connection.trim().split(/\s*,\s*/);for(let a of s)delete r[a]}if(r.warning){let s=r.warning.split(/,/).filter(a=>!/^\s*1[0-9][0-9]/.test(a));s.length?r.warning=s.join(",").trim():delete r.warning}return r}responseHeaders(){let t=this._copyWithoutHopByHopHeaders(this._resHeaders),r=this.age();return r>3600*24&&!this._hasExplicitExpiration()&&this.maxAge()>3600*24&&(t.warning=(t.warning?`${t.warning}, `:"")+'113 - "rfc7234 5.5.4"'),t.age=`${Math.round(r)}`,t.date=new Date(this.now()).toUTCString(),t}date(){let t=Date.parse(this._resHeaders.date);return isFinite(t)?t:this._responseTime}age(){let t=this._ageValue(),r=(this.now()-this._responseTime)/1e3;return t+r}_ageValue(){return tm(this._resHeaders.age)}maxAge(){if(!this.storable()||this._rescc["no-cache"]||this._isShared&&this._resHeaders["set-cookie"]&&!this._rescc.public&&!this._rescc.immutable||this._resHeaders.vary==="*")return 0;if(this._isShared){if(this._rescc["proxy-revalidate"])return 0;if(this._rescc["s-maxage"])return tm(this._rescc["s-maxage"])}if(this._rescc["max-age"])return tm(this._rescc["max-age"]);let t=this._rescc.immutable?this._immutableMinTtl:0,r=this.date();if(this._resHeaders.expires){let s=Date.parse(this._resHeaders.expires);return Number.isNaN(s)||ss)return Math.max(t,(r-s)/1e3*this._cacheHeuristic)}return t}timeToLive(){let t=this.maxAge()-this.age(),r=t+tm(this._rescc["stale-if-error"]),s=t+tm(this._rescc["stale-while-revalidate"]);return Math.max(0,t,r,s)*1e3}stale(){return this.maxAge()<=this.age()}_useStaleIfError(){return this.maxAge()+tm(this._rescc["stale-if-error"])>this.age()}useStaleWhileRevalidate(){return this.maxAge()+tm(this._rescc["stale-while-revalidate"])>this.age()}static fromObject(t){return new this(void 0,void 0,{_fromObject:t})}_fromObject(t){if(this._responseTime)throw Error("Reinitialized");if(!t||t.v!==1)throw Error("Invalid serialization");this._responseTime=t.t,this._isShared=t.sh,this._cacheHeuristic=t.ch,this._immutableMinTtl=t.imm!==void 0?t.imm:24*3600*1e3,this._status=t.st,this._resHeaders=t.resh,this._rescc=t.rescc,this._method=t.m,this._url=t.u,this._host=t.h,this._noAuthorization=t.a,this._reqHeaders=t.reqh,this._reqcc=t.reqcc}toObject(){return{v:1,t:this._responseTime,sh:this._isShared,ch:this._cacheHeuristic,imm:this._immutableMinTtl,st:this._status,resh:this._resHeaders,rescc:this._rescc,m:this._method,u:this._url,h:this._host,a:this._noAuthorization,reqh:this._reqHeaders,reqcc:this._reqcc}}revalidationHeaders(t){this._assertRequestHasHeaders(t);let r=this._copyWithoutHopByHopHeaders(t.headers);if(delete r["if-range"],!this._requestMatches(t,!0)||!this.storable())return delete r["if-none-match"],delete r["if-modified-since"],r;if(this._resHeaders.etag&&(r["if-none-match"]=r["if-none-match"]?`${r["if-none-match"]}, ${this._resHeaders.etag}`:this._resHeaders.etag),r["accept-ranges"]||r["if-match"]||r["if-unmodified-since"]||this._method&&this._method!="GET"){if(delete r["if-modified-since"],r["if-none-match"]){let a=r["if-none-match"].split(/,/).filter(n=>!/^\s*W\//.test(n));a.length?r["if-none-match"]=a.join(",").trim():delete r["if-none-match"]}}else this._resHeaders["last-modified"]&&!r["if-modified-since"]&&(r["if-modified-since"]=this._resHeaders["last-modified"]);return r}revalidatedPolicy(t,r){if(this._assertRequestHasHeaders(t),this._useStaleIfError()&&KXe(r))return{modified:!1,matches:!1,policy:this};if(!r||!r.headers)throw Error("Response headers missing");let s=!1;if(r.status!==void 0&&r.status!=304?s=!1:r.headers.etag&&!/^\s*W\//.test(r.headers.etag)?s=this._resHeaders.etag&&this._resHeaders.etag.replace(/^\s*W\//,"")===r.headers.etag:this._resHeaders.etag&&r.headers.etag?s=this._resHeaders.etag.replace(/^\s*W\//,"")===r.headers.etag.replace(/^\s*W\//,""):this._resHeaders["last-modified"]?s=this._resHeaders["last-modified"]===r.headers["last-modified"]:!this._resHeaders.etag&&!this._resHeaders["last-modified"]&&!r.headers.etag&&!r.headers["last-modified"]&&(s=!0),!s)return{policy:new this.constructor(t,r),modified:r.status!=304,matches:!1};let a={};for(let c in this._resHeaders)a[c]=c in r.headers&&!YXe[c]?r.headers[c]:this._resHeaders[c];let n=Object.assign({},r,{status:this._status,method:this._method,headers:a});return{policy:new this.constructor(t,n,{shared:this._isShared,cacheHeuristic:this._cacheHeuristic,immutableMinTimeToLive:this._immutableMinTtl}),modified:!1,matches:!0}}}});var WQ=G((VNt,Bue)=>{"use strict";Bue.exports=e=>{let t={};for(let[r,s]of Object.entries(e))t[r.toLowerCase()]=s;return t}});var Sue=G((YNt,vue)=>{"use strict";var zXe=Ie("stream").Readable,ZXe=WQ(),z8=class extends zXe{constructor(t,r,s,a){if(typeof t!="number")throw new TypeError("Argument `statusCode` should be a number");if(typeof r!="object")throw new TypeError("Argument `headers` should be an object");if(!(s instanceof Buffer))throw new TypeError("Argument `body` should be a buffer");if(typeof a!="string")throw new TypeError("Argument `url` should be a string");super(),this.statusCode=t,this.headers=ZXe(r),this.body=s,this.url=a}_read(){this.push(this.body),this.push(null)}};vue.exports=z8});var bue=G((KNt,Due)=>{"use strict";var XXe=["destroy","setTimeout","socket","headers","trailers","rawHeaders","statusCode","httpVersion","httpVersionMinor","httpVersionMajor","rawTrailers","statusMessage"];Due.exports=(e,t)=>{let r=new Set(Object.keys(e).concat(XXe));for(let s of r)s in t||(t[s]=typeof e[s]=="function"?e[s].bind(e):e[s])}});var xue=G((JNt,Pue)=>{"use strict";var $Xe=Ie("stream").PassThrough,e$e=bue(),t$e=e=>{if(!(e&&e.pipe))throw new TypeError("Parameter `response` must be a response stream.");let t=new $Xe;return e$e(e,t),e.pipe(t)};Pue.exports=t$e});var kue=G(Z8=>{Z8.stringify=function e(t){if(typeof t>"u")return t;if(t&&Buffer.isBuffer(t))return JSON.stringify(":base64:"+t.toString("base64"));if(t&&t.toJSON&&(t=t.toJSON()),t&&typeof t=="object"){var r="",s=Array.isArray(t);r=s?"[":"{";var a=!0;for(var n in t){var c=typeof t[n]=="function"||!s&&typeof t[n]>"u";Object.hasOwnProperty.call(t,n)&&!c&&(a||(r+=","),a=!1,s?t[n]==null?r+="null":r+=e(t[n]):t[n]!==void 0&&(r+=e(n)+":"+e(t[n])))}return r+=s?"]":"}",r}else return typeof t=="string"?JSON.stringify(/^:/.test(t)?":"+t:t):typeof t>"u"?"null":JSON.stringify(t)};Z8.parse=function(e){return JSON.parse(e,function(t,r){return typeof r=="string"?/^:base64:/.test(r)?Buffer.from(r.substring(8),"base64"):/^:/.test(r)?r.substring(1):r:r})}});var Fue=G((ZNt,Tue)=>{"use strict";var r$e=Ie("events"),Que=kue(),n$e=e=>{let t={redis:"@keyv/redis",rediss:"@keyv/redis",mongodb:"@keyv/mongo",mongo:"@keyv/mongo",sqlite:"@keyv/sqlite",postgresql:"@keyv/postgres",postgres:"@keyv/postgres",mysql:"@keyv/mysql",etcd:"@keyv/etcd",offline:"@keyv/offline",tiered:"@keyv/tiered"};if(e.adapter||e.uri){let r=e.adapter||/^[^:+]*/.exec(e.uri)[0];return new(Ie(t[r]))(e)}return new Map},Rue=["sqlite","postgres","mysql","mongo","redis","tiered"],X8=class extends r$e{constructor(t,{emitErrors:r=!0,...s}={}){if(super(),this.opts={namespace:"keyv",serialize:Que.stringify,deserialize:Que.parse,...typeof t=="string"?{uri:t}:t,...s},!this.opts.store){let n={...this.opts};this.opts.store=n$e(n)}if(this.opts.compression){let n=this.opts.compression;this.opts.serialize=n.serialize.bind(n),this.opts.deserialize=n.deserialize.bind(n)}typeof this.opts.store.on=="function"&&r&&this.opts.store.on("error",n=>this.emit("error",n)),this.opts.store.namespace=this.opts.namespace;let a=n=>async function*(){for await(let[c,f]of typeof n=="function"?n(this.opts.store.namespace):n){let p=await this.opts.deserialize(f);if(!(this.opts.store.namespace&&!c.includes(this.opts.store.namespace))){if(typeof p.expires=="number"&&Date.now()>p.expires){this.delete(c);continue}yield[this._getKeyUnprefix(c),p.value]}}};typeof this.opts.store[Symbol.iterator]=="function"&&this.opts.store instanceof Map?this.iterator=a(this.opts.store):typeof this.opts.store.iterator=="function"&&this.opts.store.opts&&this._checkIterableAdaptar()&&(this.iterator=a(this.opts.store.iterator.bind(this.opts.store)))}_checkIterableAdaptar(){return Rue.includes(this.opts.store.opts.dialect)||Rue.findIndex(t=>this.opts.store.opts.url.includes(t))>=0}_getKeyPrefix(t){return`${this.opts.namespace}:${t}`}_getKeyPrefixArray(t){return t.map(r=>`${this.opts.namespace}:${r}`)}_getKeyUnprefix(t){return t.split(":").splice(1).join(":")}get(t,r){let{store:s}=this.opts,a=Array.isArray(t),n=a?this._getKeyPrefixArray(t):this._getKeyPrefix(t);if(a&&s.getMany===void 0){let c=[];for(let f of n)c.push(Promise.resolve().then(()=>s.get(f)).then(p=>typeof p=="string"?this.opts.deserialize(p):this.opts.compression?this.opts.deserialize(p):p).then(p=>{if(p!=null)return typeof p.expires=="number"&&Date.now()>p.expires?this.delete(f).then(()=>{}):r&&r.raw?p:p.value}));return Promise.allSettled(c).then(f=>{let p=[];for(let h of f)p.push(h.value);return p})}return Promise.resolve().then(()=>a?s.getMany(n):s.get(n)).then(c=>typeof c=="string"?this.opts.deserialize(c):this.opts.compression?this.opts.deserialize(c):c).then(c=>{if(c!=null)return a?c.map((f,p)=>{if(typeof f=="string"&&(f=this.opts.deserialize(f)),f!=null){if(typeof f.expires=="number"&&Date.now()>f.expires){this.delete(t[p]).then(()=>{});return}return r&&r.raw?f:f.value}}):typeof c.expires=="number"&&Date.now()>c.expires?this.delete(t).then(()=>{}):r&&r.raw?c:c.value})}set(t,r,s){let a=this._getKeyPrefix(t);typeof s>"u"&&(s=this.opts.ttl),s===0&&(s=void 0);let{store:n}=this.opts;return Promise.resolve().then(()=>{let c=typeof s=="number"?Date.now()+s:null;return typeof r=="symbol"&&this.emit("error","symbol cannot be serialized"),r={value:r,expires:c},this.opts.serialize(r)}).then(c=>n.set(a,c,s)).then(()=>!0)}delete(t){let{store:r}=this.opts;if(Array.isArray(t)){let a=this._getKeyPrefixArray(t);if(r.deleteMany===void 0){let n=[];for(let c of a)n.push(r.delete(c));return Promise.allSettled(n).then(c=>c.every(f=>f.value===!0))}return Promise.resolve().then(()=>r.deleteMany(a))}let s=this._getKeyPrefix(t);return Promise.resolve().then(()=>r.delete(s))}clear(){let{store:t}=this.opts;return Promise.resolve().then(()=>t.clear())}has(t){let r=this._getKeyPrefix(t),{store:s}=this.opts;return Promise.resolve().then(async()=>typeof s.has=="function"?s.has(r):await s.get(r)!==void 0)}disconnect(){let{store:t}=this.opts;if(typeof t.disconnect=="function")return t.disconnect()}};Tue.exports=X8});var Lue=G(($Nt,Oue)=>{"use strict";var i$e=Ie("events"),VQ=Ie("url"),s$e=aue(),o$e=Iue(),$8=wue(),Nue=Sue(),a$e=WQ(),l$e=xue(),c$e=Fue(),H2=class e{constructor(t,r){if(typeof t!="function")throw new TypeError("Parameter `request` must be a function");return this.cache=new c$e({uri:typeof r=="string"&&r,store:typeof r!="string"&&r,namespace:"cacheable-request"}),this.createCacheableRequest(t)}createCacheableRequest(t){return(r,s)=>{let a;if(typeof r=="string")a=eH(VQ.parse(r)),r={};else if(r instanceof VQ.URL)a=eH(VQ.parse(r.toString())),r={};else{let[C,...S]=(r.path||"").split("?"),x=S.length>0?`?${S.join("?")}`:"";a=eH({...r,pathname:C,search:x})}r={headers:{},method:"GET",cache:!0,strictTtl:!1,automaticFailover:!1,...r,...u$e(a)},r.headers=a$e(r.headers);let n=new i$e,c=s$e(VQ.format(a),{stripWWW:!1,removeTrailingSlash:!1,stripAuthentication:!1}),f=`${r.method}:${c}`,p=!1,h=!1,E=C=>{h=!0;let S=!1,x,I=new Promise(O=>{x=()=>{S||(S=!0,O())}}),T=O=>{if(p&&!C.forceRefresh){O.status=O.statusCode;let Y=$8.fromObject(p.cachePolicy).revalidatedPolicy(C,O);if(!Y.modified){let te=Y.policy.responseHeaders();O=new Nue(p.statusCode,te,p.body,p.url),O.cachePolicy=Y.policy,O.fromCache=!0}}O.fromCache||(O.cachePolicy=new $8(C,O,C),O.fromCache=!1);let U;C.cache&&O.cachePolicy.storable()?(U=l$e(O),(async()=>{try{let Y=o$e.buffer(O);if(await Promise.race([I,new Promise(ae=>O.once("end",ae))]),S)return;let te=await Y,ie={cachePolicy:O.cachePolicy.toObject(),url:O.url,statusCode:O.fromCache?p.statusCode:O.statusCode,body:te},ue=C.strictTtl?O.cachePolicy.timeToLive():void 0;C.maxTtl&&(ue=ue?Math.min(ue,C.maxTtl):C.maxTtl),await this.cache.set(f,ie,ue)}catch(Y){n.emit("error",new e.CacheError(Y))}})()):C.cache&&p&&(async()=>{try{await this.cache.delete(f)}catch(Y){n.emit("error",new e.CacheError(Y))}})(),n.emit("response",U||O),typeof s=="function"&&s(U||O)};try{let O=t(C,T);O.once("error",x),O.once("abort",x),n.emit("request",O)}catch(O){n.emit("error",new e.RequestError(O))}};return(async()=>{let C=async x=>{await Promise.resolve();let I=x.cache?await this.cache.get(f):void 0;if(typeof I>"u")return E(x);let T=$8.fromObject(I.cachePolicy);if(T.satisfiesWithoutRevalidation(x)&&!x.forceRefresh){let O=T.responseHeaders(),U=new Nue(I.statusCode,O,I.body,I.url);U.cachePolicy=T,U.fromCache=!0,n.emit("response",U),typeof s=="function"&&s(U)}else p=I,x.headers=T.revalidationHeaders(x),E(x)},S=x=>n.emit("error",new e.CacheError(x));this.cache.once("error",S),n.on("response",()=>this.cache.removeListener("error",S));try{await C(r)}catch(x){r.automaticFailover&&!h&&E(r),n.emit("error",new e.CacheError(x))}})(),n}}};function u$e(e){let t={...e};return t.path=`${e.pathname||"/"}${e.search||""}`,delete t.pathname,delete t.search,t}function eH(e){return{protocol:e.protocol,auth:e.auth,hostname:e.hostname||e.host||"localhost",port:e.port,pathname:e.pathname,search:e.search}}H2.RequestError=class extends Error{constructor(e){super(e.message),this.name="RequestError",Object.assign(this,e)}};H2.CacheError=class extends Error{constructor(e){super(e.message),this.name="CacheError",Object.assign(this,e)}};Oue.exports=H2});var Uue=G((rOt,Mue)=>{"use strict";var f$e=["aborted","complete","headers","httpVersion","httpVersionMinor","httpVersionMajor","method","rawHeaders","rawTrailers","setTimeout","socket","statusCode","statusMessage","trailers","url"];Mue.exports=(e,t)=>{if(t._readableState.autoDestroy)throw new Error("The second stream must have the `autoDestroy` option set to `false`");let r=new Set(Object.keys(e).concat(f$e)),s={};for(let a of r)a in t||(s[a]={get(){let n=e[a];return typeof n=="function"?n.bind(e):n},set(n){e[a]=n},enumerable:!0,configurable:!1});return Object.defineProperties(t,s),e.once("aborted",()=>{t.destroy(),t.emit("aborted")}),e.once("close",()=>{e.complete&&t.readable?t.once("end",()=>{t.emit("close")}):t.emit("close")}),t}});var Hue=G((nOt,_ue)=>{"use strict";var{Transform:A$e,PassThrough:p$e}=Ie("stream"),tH=Ie("zlib"),h$e=Uue();_ue.exports=e=>{let t=(e.headers["content-encoding"]||"").toLowerCase();if(!["gzip","deflate","br"].includes(t))return e;let r=t==="br";if(r&&typeof tH.createBrotliDecompress!="function")return e.destroy(new Error("Brotli is not supported on Node.js < 12")),e;let s=!0,a=new A$e({transform(f,p,h){s=!1,h(null,f)},flush(f){f()}}),n=new p$e({autoDestroy:!1,destroy(f,p){e.destroy(),p(f)}}),c=r?tH.createBrotliDecompress():tH.createUnzip();return c.once("error",f=>{if(s&&!e.readable){n.end();return}n.destroy(f)}),h$e(e,n),e.pipe(a).pipe(c).pipe(n),n}});var nH=G((iOt,jue)=>{"use strict";var rH=class{constructor(t={}){if(!(t.maxSize&&t.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");this.maxSize=t.maxSize,this.onEviction=t.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_set(t,r){if(this.cache.set(t,r),this._size++,this._size>=this.maxSize){if(this._size=0,typeof this.onEviction=="function")for(let[s,a]of this.oldCache.entries())this.onEviction(s,a);this.oldCache=this.cache,this.cache=new Map}}get(t){if(this.cache.has(t))return this.cache.get(t);if(this.oldCache.has(t)){let r=this.oldCache.get(t);return this.oldCache.delete(t),this._set(t,r),r}}set(t,r){return this.cache.has(t)?this.cache.set(t,r):this._set(t,r),this}has(t){return this.cache.has(t)||this.oldCache.has(t)}peek(t){if(this.cache.has(t))return this.cache.get(t);if(this.oldCache.has(t))return this.oldCache.get(t)}delete(t){let r=this.cache.delete(t);return r&&this._size--,this.oldCache.delete(t)||r}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}*keys(){for(let[t]of this)yield t}*values(){for(let[,t]of this)yield t}*[Symbol.iterator](){for(let t of this.cache)yield t;for(let t of this.oldCache){let[r]=t;this.cache.has(r)||(yield t)}}get size(){let t=0;for(let r of this.oldCache.keys())this.cache.has(r)||t++;return Math.min(this._size+t,this.maxSize)}};jue.exports=rH});var sH=G((sOt,Vue)=>{"use strict";var g$e=Ie("events"),d$e=Ie("tls"),m$e=Ie("http2"),y$e=nH(),Qa=Symbol("currentStreamsCount"),Gue=Symbol("request"),Fc=Symbol("cachedOriginSet"),yI=Symbol("gracefullyClosing"),E$e=["maxDeflateDynamicTableSize","maxSessionMemory","maxHeaderListPairs","maxOutstandingPings","maxReservedRemoteStreams","maxSendHeaderBlockLength","paddingStrategy","localAddress","path","rejectUnauthorized","minDHSize","ca","cert","clientCertEngine","ciphers","key","pfx","servername","minVersion","maxVersion","secureProtocol","crl","honorCipherOrder","ecdhCurve","dhparam","secureOptions","sessionIdContext"],I$e=(e,t,r)=>{let s=0,a=e.length;for(;s>>1;r(e[n],t)?s=n+1:a=n}return s},C$e=(e,t)=>e.remoteSettings.maxConcurrentStreams>t.remoteSettings.maxConcurrentStreams,iH=(e,t)=>{for(let r of e)r[Fc].lengtht[Fc].includes(s))&&r[Qa]+t[Qa]<=t.remoteSettings.maxConcurrentStreams&&Wue(r)},w$e=(e,t)=>{for(let r of e)t[Fc].lengthr[Fc].includes(s))&&t[Qa]+r[Qa]<=r.remoteSettings.maxConcurrentStreams&&Wue(t)},que=({agent:e,isFree:t})=>{let r={};for(let s in e.sessions){let n=e.sessions[s].filter(c=>{let f=c[rm.kCurrentStreamsCount]{e[yI]=!0,e[Qa]===0&&e.close()},rm=class e extends g$e{constructor({timeout:t=6e4,maxSessions:r=1/0,maxFreeSessions:s=10,maxCachedTlsSessions:a=100}={}){super(),this.sessions={},this.queue={},this.timeout=t,this.maxSessions=r,this.maxFreeSessions=s,this._freeSessionsCount=0,this._sessionsCount=0,this.settings={enablePush:!1},this.tlsSessionCache=new y$e({maxSize:a})}static normalizeOrigin(t,r){return typeof t=="string"&&(t=new URL(t)),r&&t.hostname!==r&&(t.hostname=r),t.origin}normalizeOptions(t){let r="";if(t)for(let s of E$e)t[s]&&(r+=`:${t[s]}`);return r}_tryToCreateNewSession(t,r){if(!(t in this.queue)||!(r in this.queue[t]))return;let s=this.queue[t][r];this._sessionsCount{Array.isArray(s)?(s=[...s],a()):s=[{resolve:a,reject:n}];let c=this.normalizeOptions(r),f=e.normalizeOrigin(t,r&&r.servername);if(f===void 0){for(let{reject:E}of s)E(new TypeError("The `origin` argument needs to be a string or an URL object"));return}if(c in this.sessions){let E=this.sessions[c],C=-1,S=-1,x;for(let I of E){let T=I.remoteSettings.maxConcurrentStreams;if(T=T||I[yI]||I.destroyed)continue;x||(C=T),O>S&&(x=I,S=O)}}if(x){if(s.length!==1){for(let{reject:I}of s){let T=new Error(`Expected the length of listeners to be 1, got ${s.length}. -Please report this to https://github.com/szmarczak/http2-wrapper/`);I(T)}return}s[0].resolve(x);return}}if(c in this.queue){if(f in this.queue[c]){this.queue[c][f].listeners.push(...s),this._tryToCreateNewSession(c,f);return}}else this.queue[c]={};let p=()=>{c in this.queue&&this.queue[c][f]===h&&(delete this.queue[c][f],Object.keys(this.queue[c]).length===0&&delete this.queue[c])},h=()=>{let E=`${f}:${c}`,C=!1;try{let S=m$e.connect(t,{createConnection:this.createConnection,settings:this.settings,session:this.tlsSessionCache.get(E),...r});S[Qa]=0,S[yI]=!1;let x=()=>S[Qa]{this.tlsSessionCache.set(E,O)}),S.once("error",O=>{for(let{reject:U}of s)U(O);this.tlsSessionCache.delete(E)}),S.setTimeout(this.timeout,()=>{S.destroy()}),S.once("close",()=>{if(C){I&&this._freeSessionsCount--,this._sessionsCount--;let O=this.sessions[c];O.splice(O.indexOf(S),1),O.length===0&&delete this.sessions[c]}else{let O=new Error("Session closed without receiving a SETTINGS frame");O.code="HTTP2WRAPPER_NOSETTINGS";for(let{reject:U}of s)U(O);p()}this._tryToCreateNewSession(c,f)});let T=()=>{if(!(!(c in this.queue)||!x())){for(let O of S[Fc])if(O in this.queue[c]){let{listeners:U}=this.queue[c][O];for(;U.length!==0&&x();)U.shift().resolve(S);let Y=this.queue[c];if(Y[O].listeners.length===0&&(delete Y[O],Object.keys(Y).length===0)){delete this.queue[c];break}if(!x())break}}};S.on("origin",()=>{S[Fc]=S.originSet,x()&&(T(),iH(this.sessions[c],S))}),S.once("remoteSettings",()=>{if(S.ref(),S.unref(),this._sessionsCount++,h.destroyed){let O=new Error("Agent has been destroyed");for(let U of s)U.reject(O);S.destroy();return}S[Fc]=S.originSet;{let O=this.sessions;if(c in O){let U=O[c];U.splice(I$e(U,S,C$e),0,S)}else O[c]=[S]}this._freeSessionsCount+=1,C=!0,this.emit("session",S),T(),p(),S[Qa]===0&&this._freeSessionsCount>this.maxFreeSessions&&S.close(),s.length!==0&&(this.getSession(f,r,s),s.length=0),S.on("remoteSettings",()=>{T(),iH(this.sessions[c],S)})}),S[Gue]=S.request,S.request=(O,U)=>{if(S[yI])throw new Error("The session is gracefully closing. No new streams are allowed.");let Y=S[Gue](O,U);return S.ref(),++S[Qa],S[Qa]===S.remoteSettings.maxConcurrentStreams&&this._freeSessionsCount--,Y.once("close",()=>{if(I=x(),--S[Qa],!S.destroyed&&!S.closed&&(w$e(this.sessions[c],S),x()&&!S.closed)){I||(this._freeSessionsCount++,I=!0);let te=S[Qa]===0;te&&S.unref(),te&&(this._freeSessionsCount>this.maxFreeSessions||S[yI])?S.close():(iH(this.sessions[c],S),T())}}),Y}}catch(S){for(let x of s)x.reject(S);p()}};h.listeners=s,h.completed=!1,h.destroyed=!1,this.queue[c][f]=h,this._tryToCreateNewSession(c,f)})}request(t,r,s,a){return new Promise((n,c)=>{this.getSession(t,r,[{reject:c,resolve:f=>{try{n(f.request(s,a))}catch(p){c(p)}}}])})}createConnection(t,r){return e.connect(t,r)}static connect(t,r){r.ALPNProtocols=["h2"];let s=t.port||443,a=t.hostname||t.host;return typeof r.servername>"u"&&(r.servername=a),d$e.connect(s,a,r)}closeFreeSessions(){for(let t of Object.values(this.sessions))for(let r of t)r[Qa]===0&&r.close()}destroy(t){for(let r of Object.values(this.sessions))for(let s of r)s.destroy(t);for(let r of Object.values(this.queue))for(let s of Object.values(r))s.destroyed=!0;this.queue={}}get freeSessions(){return que({agent:this,isFree:!0})}get busySessions(){return que({agent:this,isFree:!1})}};rm.kCurrentStreamsCount=Qa;rm.kGracefullyClosing=yI;Vue.exports={Agent:rm,globalAgent:new rm}});var aH=G((oOt,Yue)=>{"use strict";var{Readable:B$e}=Ie("stream"),oH=class extends B$e{constructor(t,r){super({highWaterMark:r,autoDestroy:!1}),this.statusCode=null,this.statusMessage="",this.httpVersion="2.0",this.httpVersionMajor=2,this.httpVersionMinor=0,this.headers={},this.trailers={},this.req=null,this.aborted=!1,this.complete=!1,this.upgrade=null,this.rawHeaders=[],this.rawTrailers=[],this.socket=t,this.connection=t,this._dumped=!1}_destroy(t){this.req._request.destroy(t)}setTimeout(t,r){return this.req.setTimeout(t,r),this}_dump(){this._dumped||(this._dumped=!0,this.removeAllListeners("data"),this.resume())}_read(){this.req&&this.req._request.resume()}};Yue.exports=oH});var lH=G((aOt,Kue)=>{"use strict";Kue.exports=e=>{let t={protocol:e.protocol,hostname:typeof e.hostname=="string"&&e.hostname.startsWith("[")?e.hostname.slice(1,-1):e.hostname,host:e.host,hash:e.hash,search:e.search,pathname:e.pathname,href:e.href,path:`${e.pathname||""}${e.search||""}`};return typeof e.port=="string"&&e.port.length!==0&&(t.port=Number(e.port)),(e.username||e.password)&&(t.auth=`${e.username||""}:${e.password||""}`),t}});var zue=G((lOt,Jue)=>{"use strict";Jue.exports=(e,t,r)=>{for(let s of r)e.on(s,(...a)=>t.emit(s,...a))}});var Xue=G((cOt,Zue)=>{"use strict";Zue.exports=e=>{switch(e){case":method":case":scheme":case":authority":case":path":return!0;default:return!1}}});var efe=G((fOt,$ue)=>{"use strict";var EI=(e,t,r)=>{$ue.exports[t]=class extends e{constructor(...a){super(typeof r=="string"?r:r(a)),this.name=`${super.name} [${t}]`,this.code=t}}};EI(TypeError,"ERR_INVALID_ARG_TYPE",e=>{let t=e[0].includes(".")?"property":"argument",r=e[1],s=Array.isArray(r);return s&&(r=`${r.slice(0,-1).join(", ")} or ${r.slice(-1)}`),`The "${e[0]}" ${t} must be ${s?"one of":"of"} type ${r}. Received ${typeof e[2]}`});EI(TypeError,"ERR_INVALID_PROTOCOL",e=>`Protocol "${e[0]}" not supported. Expected "${e[1]}"`);EI(Error,"ERR_HTTP_HEADERS_SENT",e=>`Cannot ${e[0]} headers after they are sent to the client`);EI(TypeError,"ERR_INVALID_HTTP_TOKEN",e=>`${e[0]} must be a valid HTTP token [${e[1]}]`);EI(TypeError,"ERR_HTTP_INVALID_HEADER_VALUE",e=>`Invalid value "${e[0]} for header "${e[1]}"`);EI(TypeError,"ERR_INVALID_CHAR",e=>`Invalid character in ${e[0]} [${e[1]}]`)});var pH=G((AOt,afe)=>{"use strict";var v$e=Ie("http2"),{Writable:S$e}=Ie("stream"),{Agent:tfe,globalAgent:D$e}=sH(),b$e=aH(),P$e=lH(),x$e=zue(),k$e=Xue(),{ERR_INVALID_ARG_TYPE:cH,ERR_INVALID_PROTOCOL:Q$e,ERR_HTTP_HEADERS_SENT:rfe,ERR_INVALID_HTTP_TOKEN:R$e,ERR_HTTP_INVALID_HEADER_VALUE:T$e,ERR_INVALID_CHAR:F$e}=efe(),{HTTP2_HEADER_STATUS:nfe,HTTP2_HEADER_METHOD:ife,HTTP2_HEADER_PATH:sfe,HTTP2_METHOD_CONNECT:N$e}=v$e.constants,ea=Symbol("headers"),uH=Symbol("origin"),fH=Symbol("session"),ofe=Symbol("options"),YQ=Symbol("flushedHeaders"),j2=Symbol("jobs"),O$e=/^[\^`\-\w!#$%&*+.|~]+$/,L$e=/[^\t\u0020-\u007E\u0080-\u00FF]/,AH=class extends S$e{constructor(t,r,s){super({autoDestroy:!1});let a=typeof t=="string"||t instanceof URL;if(a&&(t=P$e(t instanceof URL?t:new URL(t))),typeof r=="function"||r===void 0?(s=r,r=a?t:{...t}):r={...t,...r},r.h2session)this[fH]=r.h2session;else if(r.agent===!1)this.agent=new tfe({maxFreeSessions:0});else if(typeof r.agent>"u"||r.agent===null)typeof r.createConnection=="function"?(this.agent=new tfe({maxFreeSessions:0}),this.agent.createConnection=r.createConnection):this.agent=D$e;else if(typeof r.agent.request=="function")this.agent=r.agent;else throw new cH("options.agent",["Agent-like Object","undefined","false"],r.agent);if(r.protocol&&r.protocol!=="https:")throw new Q$e(r.protocol,"https:");let n=r.port||r.defaultPort||this.agent&&this.agent.defaultPort||443,c=r.hostname||r.host||"localhost";delete r.hostname,delete r.host,delete r.port;let{timeout:f}=r;if(r.timeout=void 0,this[ea]=Object.create(null),this[j2]=[],this.socket=null,this.connection=null,this.method=r.method||"GET",this.path=r.path,this.res=null,this.aborted=!1,this.reusedSocket=!1,r.headers)for(let[p,h]of Object.entries(r.headers))this.setHeader(p,h);r.auth&&!("authorization"in this[ea])&&(this[ea].authorization="Basic "+Buffer.from(r.auth).toString("base64")),r.session=r.tlsSession,r.path=r.socketPath,this[ofe]=r,n===443?(this[uH]=`https://${c}`,":authority"in this[ea]||(this[ea][":authority"]=c)):(this[uH]=`https://${c}:${n}`,":authority"in this[ea]||(this[ea][":authority"]=`${c}:${n}`)),f&&this.setTimeout(f),s&&this.once("response",s),this[YQ]=!1}get method(){return this[ea][ife]}set method(t){t&&(this[ea][ife]=t.toUpperCase())}get path(){return this[ea][sfe]}set path(t){t&&(this[ea][sfe]=t)}get _mustNotHaveABody(){return this.method==="GET"||this.method==="HEAD"||this.method==="DELETE"}_write(t,r,s){if(this._mustNotHaveABody){s(new Error("The GET, HEAD and DELETE methods must NOT have a body"));return}this.flushHeaders();let a=()=>this._request.write(t,r,s);this._request?a():this[j2].push(a)}_final(t){if(this.destroyed)return;this.flushHeaders();let r=()=>{if(this._mustNotHaveABody){t();return}this._request.end(t)};this._request?r():this[j2].push(r)}abort(){this.res&&this.res.complete||(this.aborted||process.nextTick(()=>this.emit("abort")),this.aborted=!0,this.destroy())}_destroy(t,r){this.res&&this.res._dump(),this._request&&this._request.destroy(),r(t)}async flushHeaders(){if(this[YQ]||this.destroyed)return;this[YQ]=!0;let t=this.method===N$e,r=s=>{if(this._request=s,this.destroyed){s.destroy();return}t||x$e(s,this,["timeout","continue","close","error"]);let a=c=>(...f)=>{!this.writable&&!this.destroyed?c(...f):this.once("finish",()=>{c(...f)})};s.once("response",a((c,f,p)=>{let h=new b$e(this.socket,s.readableHighWaterMark);this.res=h,h.req=this,h.statusCode=c[nfe],h.headers=c,h.rawHeaders=p,h.once("end",()=>{this.aborted?(h.aborted=!0,h.emit("aborted")):(h.complete=!0,h.socket=null,h.connection=null)}),t?(h.upgrade=!0,this.emit("connect",h,s,Buffer.alloc(0))?this.emit("close"):s.destroy()):(s.on("data",E=>{!h._dumped&&!h.push(E)&&s.pause()}),s.once("end",()=>{h.push(null)}),this.emit("response",h)||h._dump())})),s.once("headers",a(c=>this.emit("information",{statusCode:c[nfe]}))),s.once("trailers",a((c,f,p)=>{let{res:h}=this;h.trailers=c,h.rawTrailers=p}));let{socket:n}=s.session;this.socket=n,this.connection=n;for(let c of this[j2])c();this.emit("socket",this.socket)};if(this[fH])try{r(this[fH].request(this[ea]))}catch(s){this.emit("error",s)}else{this.reusedSocket=!0;try{r(await this.agent.request(this[uH],this[ofe],this[ea]))}catch(s){this.emit("error",s)}}}getHeader(t){if(typeof t!="string")throw new cH("name","string",t);return this[ea][t.toLowerCase()]}get headersSent(){return this[YQ]}removeHeader(t){if(typeof t!="string")throw new cH("name","string",t);if(this.headersSent)throw new rfe("remove");delete this[ea][t.toLowerCase()]}setHeader(t,r){if(this.headersSent)throw new rfe("set");if(typeof t!="string"||!O$e.test(t)&&!k$e(t))throw new R$e("Header name",t);if(typeof r>"u")throw new T$e(r,t);if(L$e.test(r))throw new F$e("header content",t);this[ea][t.toLowerCase()]=r}setNoDelay(){}setSocketKeepAlive(){}setTimeout(t,r){let s=()=>this._request.setTimeout(t,r);return this._request?s():this[j2].push(s),this}get maxHeadersCount(){if(!this.destroyed&&this._request)return this._request.session.localSettings.maxHeaderListSize}set maxHeadersCount(t){}};afe.exports=AH});var cfe=G((pOt,lfe)=>{"use strict";var M$e=Ie("tls");lfe.exports=(e={},t=M$e.connect)=>new Promise((r,s)=>{let a=!1,n,c=async()=>{await p,n.off("timeout",f),n.off("error",s),e.resolveSocket?(r({alpnProtocol:n.alpnProtocol,socket:n,timeout:a}),a&&(await Promise.resolve(),n.emit("timeout"))):(n.destroy(),r({alpnProtocol:n.alpnProtocol,timeout:a}))},f=async()=>{a=!0,c()},p=(async()=>{try{n=await t(e,c),n.on("error",s),n.once("timeout",f)}catch(h){s(h)}})()})});var ffe=G((hOt,ufe)=>{"use strict";var U$e=Ie("net");ufe.exports=e=>{let t=e.host,r=e.headers&&e.headers.host;return r&&(r.startsWith("[")?r.indexOf("]")===-1?t=r:t=r.slice(1,-1):t=r.split(":",1)[0]),U$e.isIP(t)?"":t}});var hfe=G((gOt,gH)=>{"use strict";var Afe=Ie("http"),hH=Ie("https"),_$e=cfe(),H$e=nH(),j$e=pH(),G$e=ffe(),q$e=lH(),KQ=new H$e({maxSize:100}),G2=new Map,pfe=(e,t,r)=>{t._httpMessage={shouldKeepAlive:!0};let s=()=>{e.emit("free",t,r)};t.on("free",s);let a=()=>{e.removeSocket(t,r)};t.on("close",a);let n=()=>{e.removeSocket(t,r),t.off("close",a),t.off("free",s),t.off("agentRemove",n)};t.on("agentRemove",n),e.emit("free",t,r)},W$e=async e=>{let t=`${e.host}:${e.port}:${e.ALPNProtocols.sort()}`;if(!KQ.has(t)){if(G2.has(t))return(await G2.get(t)).alpnProtocol;let{path:r,agent:s}=e;e.path=e.socketPath;let a=_$e(e);G2.set(t,a);try{let{socket:n,alpnProtocol:c}=await a;if(KQ.set(t,c),e.path=r,c==="h2")n.destroy();else{let{globalAgent:f}=hH,p=hH.Agent.prototype.createConnection;s?s.createConnection===p?pfe(s,n,e):n.destroy():f.createConnection===p?pfe(f,n,e):n.destroy()}return G2.delete(t),c}catch(n){throw G2.delete(t),n}}return KQ.get(t)};gH.exports=async(e,t,r)=>{if((typeof e=="string"||e instanceof URL)&&(e=q$e(new URL(e))),typeof t=="function"&&(r=t,t=void 0),t={ALPNProtocols:["h2","http/1.1"],...e,...t,resolveSocket:!0},!Array.isArray(t.ALPNProtocols)||t.ALPNProtocols.length===0)throw new Error("The `ALPNProtocols` option must be an Array with at least one entry");t.protocol=t.protocol||"https:";let s=t.protocol==="https:";t.host=t.hostname||t.host||"localhost",t.session=t.tlsSession,t.servername=t.servername||G$e(t),t.port=t.port||(s?443:80),t._defaultAgent=s?hH.globalAgent:Afe.globalAgent;let a=t.agent;if(a){if(a.addRequest)throw new Error("The `options.agent` object can contain only `http`, `https` or `http2` properties");t.agent=a[s?"https":"http"]}return s&&await W$e(t)==="h2"?(a&&(t.agent=a.http2),new j$e(t,r)):Afe.request(t,r)};gH.exports.protocolCache=KQ});var dfe=G((dOt,gfe)=>{"use strict";var V$e=Ie("http2"),Y$e=sH(),dH=pH(),K$e=aH(),J$e=hfe(),z$e=(e,t,r)=>new dH(e,t,r),Z$e=(e,t,r)=>{let s=new dH(e,t,r);return s.end(),s};gfe.exports={...V$e,ClientRequest:dH,IncomingMessage:K$e,...Y$e,request:z$e,get:Z$e,auto:J$e}});var yH=G(mH=>{"use strict";Object.defineProperty(mH,"__esModule",{value:!0});var mfe=Op();mH.default=e=>mfe.default.nodeStream(e)&&mfe.default.function_(e.getBoundary)});var Cfe=G(EH=>{"use strict";Object.defineProperty(EH,"__esModule",{value:!0});var Efe=Ie("fs"),Ife=Ie("util"),yfe=Op(),X$e=yH(),$$e=Ife.promisify(Efe.stat);EH.default=async(e,t)=>{if(t&&"content-length"in t)return Number(t["content-length"]);if(!e)return 0;if(yfe.default.string(e))return Buffer.byteLength(e);if(yfe.default.buffer(e))return e.length;if(X$e.default(e))return Ife.promisify(e.getLength.bind(e))();if(e instanceof Efe.ReadStream){let{size:r}=await $$e(e.path);return r===0?void 0:r}}});var CH=G(IH=>{"use strict";Object.defineProperty(IH,"__esModule",{value:!0});function eet(e,t,r){let s={};for(let a of r)s[a]=(...n)=>{t.emit(a,...n)},e.on(a,s[a]);return()=>{for(let a of r)e.off(a,s[a])}}IH.default=eet});var wfe=G(wH=>{"use strict";Object.defineProperty(wH,"__esModule",{value:!0});wH.default=()=>{let e=[];return{once(t,r,s){t.once(r,s),e.push({origin:t,event:r,fn:s})},unhandleAll(){for(let t of e){let{origin:r,event:s,fn:a}=t;r.removeListener(s,a)}e.length=0}}}});var vfe=G(q2=>{"use strict";Object.defineProperty(q2,"__esModule",{value:!0});q2.TimeoutError=void 0;var tet=Ie("net"),ret=wfe(),Bfe=Symbol("reentry"),net=()=>{},JQ=class extends Error{constructor(t,r){super(`Timeout awaiting '${r}' for ${t}ms`),this.event=r,this.name="TimeoutError",this.code="ETIMEDOUT"}};q2.TimeoutError=JQ;q2.default=(e,t,r)=>{if(Bfe in e)return net;e[Bfe]=!0;let s=[],{once:a,unhandleAll:n}=ret.default(),c=(C,S,x)=>{var I;let T=setTimeout(S,C,C,x);(I=T.unref)===null||I===void 0||I.call(T);let O=()=>{clearTimeout(T)};return s.push(O),O},{host:f,hostname:p}=r,h=(C,S)=>{e.destroy(new JQ(C,S))},E=()=>{for(let C of s)C();n()};if(e.once("error",C=>{if(E(),e.listenerCount("error")===0)throw C}),e.once("close",E),a(e,"response",C=>{a(C,"end",E)}),typeof t.request<"u"&&c(t.request,h,"request"),typeof t.socket<"u"){let C=()=>{h(t.socket,"socket")};e.setTimeout(t.socket,C),s.push(()=>{e.removeListener("timeout",C)})}return a(e,"socket",C=>{var S;let{socketPath:x}=e;if(C.connecting){let I=!!(x??tet.isIP((S=p??f)!==null&&S!==void 0?S:"")!==0);if(typeof t.lookup<"u"&&!I&&typeof C.address().address>"u"){let T=c(t.lookup,h,"lookup");a(C,"lookup",T)}if(typeof t.connect<"u"){let T=()=>c(t.connect,h,"connect");I?a(C,"connect",T()):a(C,"lookup",O=>{O===null&&a(C,"connect",T())})}typeof t.secureConnect<"u"&&r.protocol==="https:"&&a(C,"connect",()=>{let T=c(t.secureConnect,h,"secureConnect");a(C,"secureConnect",T)})}if(typeof t.send<"u"){let I=()=>c(t.send,h,"send");C.connecting?a(C,"connect",()=>{a(e,"upload-complete",I())}):a(e,"upload-complete",I())}}),typeof t.response<"u"&&a(e,"upload-complete",()=>{let C=c(t.response,h,"response");a(e,"response",C)}),E}});var Dfe=G(BH=>{"use strict";Object.defineProperty(BH,"__esModule",{value:!0});var Sfe=Op();BH.default=e=>{e=e;let t={protocol:e.protocol,hostname:Sfe.default.string(e.hostname)&&e.hostname.startsWith("[")?e.hostname.slice(1,-1):e.hostname,host:e.host,hash:e.hash,search:e.search,pathname:e.pathname,href:e.href,path:`${e.pathname||""}${e.search||""}`};return Sfe.default.string(e.port)&&e.port.length>0&&(t.port=Number(e.port)),(e.username||e.password)&&(t.auth=`${e.username||""}:${e.password||""}`),t}});var bfe=G(vH=>{"use strict";Object.defineProperty(vH,"__esModule",{value:!0});var iet=Ie("url"),set=["protocol","host","hostname","port","pathname","search"];vH.default=(e,t)=>{var r,s;if(t.path){if(t.pathname)throw new TypeError("Parameters `path` and `pathname` are mutually exclusive.");if(t.search)throw new TypeError("Parameters `path` and `search` are mutually exclusive.");if(t.searchParams)throw new TypeError("Parameters `path` and `searchParams` are mutually exclusive.")}if(t.search&&t.searchParams)throw new TypeError("Parameters `search` and `searchParams` are mutually exclusive.");if(!e){if(!t.protocol)throw new TypeError("No URL protocol specified");e=`${t.protocol}//${(s=(r=t.hostname)!==null&&r!==void 0?r:t.host)!==null&&s!==void 0?s:""}`}let a=new iet.URL(e);if(t.path){let n=t.path.indexOf("?");n===-1?t.pathname=t.path:(t.pathname=t.path.slice(0,n),t.search=t.path.slice(n+1)),delete t.path}for(let n of set)t[n]&&(a[n]=t[n].toString());return a}});var Pfe=G(DH=>{"use strict";Object.defineProperty(DH,"__esModule",{value:!0});var SH=class{constructor(){this.weakMap=new WeakMap,this.map=new Map}set(t,r){typeof t=="object"?this.weakMap.set(t,r):this.map.set(t,r)}get(t){return typeof t=="object"?this.weakMap.get(t):this.map.get(t)}has(t){return typeof t=="object"?this.weakMap.has(t):this.map.has(t)}};DH.default=SH});var PH=G(bH=>{"use strict";Object.defineProperty(bH,"__esModule",{value:!0});var oet=async e=>{let t=[],r=0;for await(let s of e)t.push(s),r+=Buffer.byteLength(s);return Buffer.isBuffer(t[0])?Buffer.concat(t,r):Buffer.from(t.join(""))};bH.default=oet});var kfe=G(nm=>{"use strict";Object.defineProperty(nm,"__esModule",{value:!0});nm.dnsLookupIpVersionToFamily=nm.isDnsLookupIpVersion=void 0;var xfe={auto:0,ipv4:4,ipv6:6};nm.isDnsLookupIpVersion=e=>e in xfe;nm.dnsLookupIpVersionToFamily=e=>{if(nm.isDnsLookupIpVersion(e))return xfe[e];throw new Error("Invalid DNS lookup IP version")}});var xH=G(zQ=>{"use strict";Object.defineProperty(zQ,"__esModule",{value:!0});zQ.isResponseOk=void 0;zQ.isResponseOk=e=>{let{statusCode:t}=e,r=e.request.options.followRedirect?299:399;return t>=200&&t<=r||t===304}});var Rfe=G(kH=>{"use strict";Object.defineProperty(kH,"__esModule",{value:!0});var Qfe=new Set;kH.default=e=>{Qfe.has(e)||(Qfe.add(e),process.emitWarning(`Got: ${e}`,{type:"DeprecationWarning"}))}});var Tfe=G(QH=>{"use strict";Object.defineProperty(QH,"__esModule",{value:!0});var Di=Op(),aet=(e,t)=>{if(Di.default.null_(e.encoding))throw new TypeError("To get a Buffer, set `options.responseType` to `buffer` instead");Di.assert.any([Di.default.string,Di.default.undefined],e.encoding),Di.assert.any([Di.default.boolean,Di.default.undefined],e.resolveBodyOnly),Di.assert.any([Di.default.boolean,Di.default.undefined],e.methodRewriting),Di.assert.any([Di.default.boolean,Di.default.undefined],e.isStream),Di.assert.any([Di.default.string,Di.default.undefined],e.responseType),e.responseType===void 0&&(e.responseType="text");let{retry:r}=e;if(t?e.retry={...t.retry}:e.retry={calculateDelay:s=>s.computedValue,limit:0,methods:[],statusCodes:[],errorCodes:[],maxRetryAfter:void 0},Di.default.object(r)?(e.retry={...e.retry,...r},e.retry.methods=[...new Set(e.retry.methods.map(s=>s.toUpperCase()))],e.retry.statusCodes=[...new Set(e.retry.statusCodes)],e.retry.errorCodes=[...new Set(e.retry.errorCodes)]):Di.default.number(r)&&(e.retry.limit=r),Di.default.undefined(e.retry.maxRetryAfter)&&(e.retry.maxRetryAfter=Math.min(...[e.timeout.request,e.timeout.connect].filter(Di.default.number))),Di.default.object(e.pagination)){t&&(e.pagination={...t.pagination,...e.pagination});let{pagination:s}=e;if(!Di.default.function_(s.transform))throw new Error("`options.pagination.transform` must be implemented");if(!Di.default.function_(s.shouldContinue))throw new Error("`options.pagination.shouldContinue` must be implemented");if(!Di.default.function_(s.filter))throw new TypeError("`options.pagination.filter` must be implemented");if(!Di.default.function_(s.paginate))throw new Error("`options.pagination.paginate` must be implemented")}return e.responseType==="json"&&e.headers.accept===void 0&&(e.headers.accept="application/json"),e};QH.default=aet});var Ffe=G(W2=>{"use strict";Object.defineProperty(W2,"__esModule",{value:!0});W2.retryAfterStatusCodes=void 0;W2.retryAfterStatusCodes=new Set([413,429,503]);var cet=({attemptCount:e,retryOptions:t,error:r,retryAfter:s})=>{if(e>t.limit)return 0;let a=t.methods.includes(r.options.method),n=t.errorCodes.includes(r.code),c=r.response&&t.statusCodes.includes(r.response.statusCode);if(!a||!n&&!c)return 0;if(r.response){if(s)return t.maxRetryAfter===void 0||s>t.maxRetryAfter?0:s;if(r.response.statusCode===413)return 0}let f=Math.random()*100;return 2**(e-1)*1e3+f};W2.default=cet});var K2=G(Un=>{"use strict";Object.defineProperty(Un,"__esModule",{value:!0});Un.UnsupportedProtocolError=Un.ReadError=Un.TimeoutError=Un.UploadError=Un.CacheError=Un.HTTPError=Un.MaxRedirectsError=Un.RequestError=Un.setNonEnumerableProperties=Un.knownHookEvents=Un.withoutBody=Un.kIsNormalizedAlready=void 0;var Nfe=Ie("util"),Ofe=Ie("stream"),uet=Ie("fs"),I0=Ie("url"),Lfe=Ie("http"),RH=Ie("http"),fet=Ie("https"),Aet=Zce(),pet=iue(),Mfe=Lue(),het=Hue(),get=dfe(),det=WQ(),lt=Op(),met=Cfe(),Ufe=yH(),yet=CH(),_fe=vfe(),Eet=Dfe(),Hfe=bfe(),Iet=Pfe(),Cet=PH(),jfe=kfe(),wet=xH(),C0=Rfe(),Bet=Tfe(),vet=Ffe(),TH,Eo=Symbol("request"),$Q=Symbol("response"),II=Symbol("responseSize"),CI=Symbol("downloadedSize"),wI=Symbol("bodySize"),BI=Symbol("uploadedSize"),ZQ=Symbol("serverResponsesPiped"),Gfe=Symbol("unproxyEvents"),qfe=Symbol("isFromCache"),FH=Symbol("cancelTimeouts"),Wfe=Symbol("startedReading"),vI=Symbol("stopReading"),XQ=Symbol("triggerRead"),w0=Symbol("body"),V2=Symbol("jobs"),Vfe=Symbol("originalResponse"),Yfe=Symbol("retryTimeout");Un.kIsNormalizedAlready=Symbol("isNormalizedAlready");var Det=lt.default.string(process.versions.brotli);Un.withoutBody=new Set(["GET","HEAD"]);Un.knownHookEvents=["init","beforeRequest","beforeRedirect","beforeError","beforeRetry","afterResponse"];function bet(e){for(let t in e){let r=e[t];if(!lt.default.string(r)&&!lt.default.number(r)&&!lt.default.boolean(r)&&!lt.default.null_(r)&&!lt.default.undefined(r))throw new TypeError(`The \`searchParams\` value '${String(r)}' must be a string, number, boolean or null`)}}function Pet(e){return lt.default.object(e)&&!("statusCode"in e)}var NH=new Iet.default,xet=async e=>new Promise((t,r)=>{let s=a=>{r(a)};e.pending||t(),e.once("error",s),e.once("ready",()=>{e.off("error",s),t()})}),ket=new Set([300,301,302,303,304,307,308]),Qet=["context","body","json","form"];Un.setNonEnumerableProperties=(e,t)=>{let r={};for(let s of e)if(s)for(let a of Qet)a in s&&(r[a]={writable:!0,configurable:!0,enumerable:!1,value:s[a]});Object.defineProperties(t,r)};var As=class extends Error{constructor(t,r,s){var a;if(super(t),Error.captureStackTrace(this,this.constructor),this.name="RequestError",this.code=r.code,s instanceof oR?(Object.defineProperty(this,"request",{enumerable:!1,value:s}),Object.defineProperty(this,"response",{enumerable:!1,value:s[$Q]}),Object.defineProperty(this,"options",{enumerable:!1,value:s.options})):Object.defineProperty(this,"options",{enumerable:!1,value:s}),this.timings=(a=this.request)===null||a===void 0?void 0:a.timings,lt.default.string(r.stack)&<.default.string(this.stack)){let n=this.stack.indexOf(this.message)+this.message.length,c=this.stack.slice(n).split(` -`).reverse(),f=r.stack.slice(r.stack.indexOf(r.message)+r.message.length).split(` -`).reverse();for(;f.length!==0&&f[0]===c[0];)c.shift();this.stack=`${this.stack.slice(0,n)}${c.reverse().join(` -`)}${f.reverse().join(` -`)}`}}};Un.RequestError=As;var eR=class extends As{constructor(t){super(`Redirected ${t.options.maxRedirects} times. Aborting.`,{},t),this.name="MaxRedirectsError"}};Un.MaxRedirectsError=eR;var tR=class extends As{constructor(t){super(`Response code ${t.statusCode} (${t.statusMessage})`,{},t.request),this.name="HTTPError"}};Un.HTTPError=tR;var rR=class extends As{constructor(t,r){super(t.message,t,r),this.name="CacheError"}};Un.CacheError=rR;var nR=class extends As{constructor(t,r){super(t.message,t,r),this.name="UploadError"}};Un.UploadError=nR;var iR=class extends As{constructor(t,r,s){super(t.message,t,s),this.name="TimeoutError",this.event=t.event,this.timings=r}};Un.TimeoutError=iR;var Y2=class extends As{constructor(t,r){super(t.message,t,r),this.name="ReadError"}};Un.ReadError=Y2;var sR=class extends As{constructor(t){super(`Unsupported protocol "${t.url.protocol}"`,{},t),this.name="UnsupportedProtocolError"}};Un.UnsupportedProtocolError=sR;var Ret=["socket","connect","continue","information","upgrade","timeout"],oR=class extends Ofe.Duplex{constructor(t,r={},s){super({autoDestroy:!1,highWaterMark:0}),this[CI]=0,this[BI]=0,this.requestInitialized=!1,this[ZQ]=new Set,this.redirects=[],this[vI]=!1,this[XQ]=!1,this[V2]=[],this.retryCount=0,this._progressCallbacks=[];let a=()=>this._unlockWrite(),n=()=>this._lockWrite();this.on("pipe",h=>{h.prependListener("data",a),h.on("data",n),h.prependListener("end",a),h.on("end",n)}),this.on("unpipe",h=>{h.off("data",a),h.off("data",n),h.off("end",a),h.off("end",n)}),this.on("pipe",h=>{h instanceof RH.IncomingMessage&&(this.options.headers={...h.headers,...this.options.headers})});let{json:c,body:f,form:p}=r;if((c||f||p)&&this._lockWrite(),Un.kIsNormalizedAlready in r)this.options=r;else try{this.options=this.constructor.normalizeArguments(t,r,s)}catch(h){lt.default.nodeStream(r.body)&&r.body.destroy(),this.destroy(h);return}(async()=>{var h;try{this.options.body instanceof uet.ReadStream&&await xet(this.options.body);let{url:E}=this.options;if(!E)throw new TypeError("Missing `url` property");if(this.requestUrl=E.toString(),decodeURI(this.requestUrl),await this._finalizeBody(),await this._makeRequest(),this.destroyed){(h=this[Eo])===null||h===void 0||h.destroy();return}for(let C of this[V2])C();this[V2].length=0,this.requestInitialized=!0}catch(E){if(E instanceof As){this._beforeError(E);return}this.destroyed||this.destroy(E)}})()}static normalizeArguments(t,r,s){var a,n,c,f,p;let h=r;if(lt.default.object(t)&&!lt.default.urlInstance(t))r={...s,...t,...r};else{if(t&&r&&r.url!==void 0)throw new TypeError("The `url` option is mutually exclusive with the `input` argument");r={...s,...r},t!==void 0&&(r.url=t),lt.default.urlInstance(r.url)&&(r.url=new I0.URL(r.url.toString()))}if(r.cache===!1&&(r.cache=void 0),r.dnsCache===!1&&(r.dnsCache=void 0),lt.assert.any([lt.default.string,lt.default.undefined],r.method),lt.assert.any([lt.default.object,lt.default.undefined],r.headers),lt.assert.any([lt.default.string,lt.default.urlInstance,lt.default.undefined],r.prefixUrl),lt.assert.any([lt.default.object,lt.default.undefined],r.cookieJar),lt.assert.any([lt.default.object,lt.default.string,lt.default.undefined],r.searchParams),lt.assert.any([lt.default.object,lt.default.string,lt.default.undefined],r.cache),lt.assert.any([lt.default.object,lt.default.number,lt.default.undefined],r.timeout),lt.assert.any([lt.default.object,lt.default.undefined],r.context),lt.assert.any([lt.default.object,lt.default.undefined],r.hooks),lt.assert.any([lt.default.boolean,lt.default.undefined],r.decompress),lt.assert.any([lt.default.boolean,lt.default.undefined],r.ignoreInvalidCookies),lt.assert.any([lt.default.boolean,lt.default.undefined],r.followRedirect),lt.assert.any([lt.default.number,lt.default.undefined],r.maxRedirects),lt.assert.any([lt.default.boolean,lt.default.undefined],r.throwHttpErrors),lt.assert.any([lt.default.boolean,lt.default.undefined],r.http2),lt.assert.any([lt.default.boolean,lt.default.undefined],r.allowGetBody),lt.assert.any([lt.default.string,lt.default.undefined],r.localAddress),lt.assert.any([jfe.isDnsLookupIpVersion,lt.default.undefined],r.dnsLookupIpVersion),lt.assert.any([lt.default.object,lt.default.undefined],r.https),lt.assert.any([lt.default.boolean,lt.default.undefined],r.rejectUnauthorized),r.https&&(lt.assert.any([lt.default.boolean,lt.default.undefined],r.https.rejectUnauthorized),lt.assert.any([lt.default.function_,lt.default.undefined],r.https.checkServerIdentity),lt.assert.any([lt.default.string,lt.default.object,lt.default.array,lt.default.undefined],r.https.certificateAuthority),lt.assert.any([lt.default.string,lt.default.object,lt.default.array,lt.default.undefined],r.https.key),lt.assert.any([lt.default.string,lt.default.object,lt.default.array,lt.default.undefined],r.https.certificate),lt.assert.any([lt.default.string,lt.default.undefined],r.https.passphrase),lt.assert.any([lt.default.string,lt.default.buffer,lt.default.array,lt.default.undefined],r.https.pfx)),lt.assert.any([lt.default.object,lt.default.undefined],r.cacheOptions),lt.default.string(r.method)?r.method=r.method.toUpperCase():r.method="GET",r.headers===s?.headers?r.headers={...r.headers}:r.headers=det({...s?.headers,...r.headers}),"slashes"in r)throw new TypeError("The legacy `url.Url` has been deprecated. Use `URL` instead.");if("auth"in r)throw new TypeError("Parameter `auth` is deprecated. Use `username` / `password` instead.");if("searchParams"in r&&r.searchParams&&r.searchParams!==s?.searchParams){let x;if(lt.default.string(r.searchParams)||r.searchParams instanceof I0.URLSearchParams)x=new I0.URLSearchParams(r.searchParams);else{bet(r.searchParams),x=new I0.URLSearchParams;for(let I in r.searchParams){let T=r.searchParams[I];T===null?x.append(I,""):T!==void 0&&x.append(I,T)}}(a=s?.searchParams)===null||a===void 0||a.forEach((I,T)=>{x.has(T)||x.append(T,I)}),r.searchParams=x}if(r.username=(n=r.username)!==null&&n!==void 0?n:"",r.password=(c=r.password)!==null&&c!==void 0?c:"",lt.default.undefined(r.prefixUrl)?r.prefixUrl=(f=s?.prefixUrl)!==null&&f!==void 0?f:"":(r.prefixUrl=r.prefixUrl.toString(),r.prefixUrl!==""&&!r.prefixUrl.endsWith("/")&&(r.prefixUrl+="/")),lt.default.string(r.url)){if(r.url.startsWith("/"))throw new Error("`input` must not start with a slash when using `prefixUrl`");r.url=Hfe.default(r.prefixUrl+r.url,r)}else(lt.default.undefined(r.url)&&r.prefixUrl!==""||r.protocol)&&(r.url=Hfe.default(r.prefixUrl,r));if(r.url){"port"in r&&delete r.port;let{prefixUrl:x}=r;Object.defineProperty(r,"prefixUrl",{set:T=>{let O=r.url;if(!O.href.startsWith(T))throw new Error(`Cannot change \`prefixUrl\` from ${x} to ${T}: ${O.href}`);r.url=new I0.URL(T+O.href.slice(x.length)),x=T},get:()=>x});let{protocol:I}=r.url;if(I==="unix:"&&(I="http:",r.url=new I0.URL(`http://unix${r.url.pathname}${r.url.search}`)),r.searchParams&&(r.url.search=r.searchParams.toString()),I!=="http:"&&I!=="https:")throw new sR(r);r.username===""?r.username=r.url.username:r.url.username=r.username,r.password===""?r.password=r.url.password:r.url.password=r.password}let{cookieJar:E}=r;if(E){let{setCookie:x,getCookieString:I}=E;lt.assert.function_(x),lt.assert.function_(I),x.length===4&&I.length===0&&(x=Nfe.promisify(x.bind(r.cookieJar)),I=Nfe.promisify(I.bind(r.cookieJar)),r.cookieJar={setCookie:x,getCookieString:I})}let{cache:C}=r;if(C&&(NH.has(C)||NH.set(C,new Mfe((x,I)=>{let T=x[Eo](x,I);return lt.default.promise(T)&&(T.once=(O,U)=>{if(O==="error")T.catch(U);else if(O==="abort")(async()=>{try{(await T).once("abort",U)}catch{}})();else throw new Error(`Unknown HTTP2 promise event: ${O}`);return T}),T},C))),r.cacheOptions={...r.cacheOptions},r.dnsCache===!0)TH||(TH=new pet.default),r.dnsCache=TH;else if(!lt.default.undefined(r.dnsCache)&&!r.dnsCache.lookup)throw new TypeError(`Parameter \`dnsCache\` must be a CacheableLookup instance or a boolean, got ${lt.default(r.dnsCache)}`);lt.default.number(r.timeout)?r.timeout={request:r.timeout}:s&&r.timeout!==s.timeout?r.timeout={...s.timeout,...r.timeout}:r.timeout={...r.timeout},r.context||(r.context={});let S=r.hooks===s?.hooks;r.hooks={...r.hooks};for(let x of Un.knownHookEvents)if(x in r.hooks)if(lt.default.array(r.hooks[x]))r.hooks[x]=[...r.hooks[x]];else throw new TypeError(`Parameter \`${x}\` must be an Array, got ${lt.default(r.hooks[x])}`);else r.hooks[x]=[];if(s&&!S)for(let x of Un.knownHookEvents)s.hooks[x].length>0&&(r.hooks[x]=[...s.hooks[x],...r.hooks[x]]);if("family"in r&&C0.default('"options.family" was never documented, please use "options.dnsLookupIpVersion"'),s?.https&&(r.https={...s.https,...r.https}),"rejectUnauthorized"in r&&C0.default('"options.rejectUnauthorized" is now deprecated, please use "options.https.rejectUnauthorized"'),"checkServerIdentity"in r&&C0.default('"options.checkServerIdentity" was never documented, please use "options.https.checkServerIdentity"'),"ca"in r&&C0.default('"options.ca" was never documented, please use "options.https.certificateAuthority"'),"key"in r&&C0.default('"options.key" was never documented, please use "options.https.key"'),"cert"in r&&C0.default('"options.cert" was never documented, please use "options.https.certificate"'),"passphrase"in r&&C0.default('"options.passphrase" was never documented, please use "options.https.passphrase"'),"pfx"in r&&C0.default('"options.pfx" was never documented, please use "options.https.pfx"'),"followRedirects"in r)throw new TypeError("The `followRedirects` option does not exist. Use `followRedirect` instead.");if(r.agent){for(let x in r.agent)if(x!=="http"&&x!=="https"&&x!=="http2")throw new TypeError(`Expected the \`options.agent\` properties to be \`http\`, \`https\` or \`http2\`, got \`${x}\``)}return r.maxRedirects=(p=r.maxRedirects)!==null&&p!==void 0?p:0,Un.setNonEnumerableProperties([s,h],r),Bet.default(r,s)}_lockWrite(){let t=()=>{throw new TypeError("The payload has been already provided")};this.write=t,this.end=t}_unlockWrite(){this.write=super.write,this.end=super.end}async _finalizeBody(){let{options:t}=this,{headers:r}=t,s=!lt.default.undefined(t.form),a=!lt.default.undefined(t.json),n=!lt.default.undefined(t.body),c=s||a||n,f=Un.withoutBody.has(t.method)&&!(t.method==="GET"&&t.allowGetBody);if(this._cannotHaveBody=f,c){if(f)throw new TypeError(`The \`${t.method}\` method cannot be used with a body`);if([n,s,a].filter(p=>p).length>1)throw new TypeError("The `body`, `json` and `form` options are mutually exclusive");if(n&&!(t.body instanceof Ofe.Readable)&&!lt.default.string(t.body)&&!lt.default.buffer(t.body)&&!Ufe.default(t.body))throw new TypeError("The `body` option must be a stream.Readable, string or Buffer");if(s&&!lt.default.object(t.form))throw new TypeError("The `form` option must be an Object");{let p=!lt.default.string(r["content-type"]);n?(Ufe.default(t.body)&&p&&(r["content-type"]=`multipart/form-data; boundary=${t.body.getBoundary()}`),this[w0]=t.body):s?(p&&(r["content-type"]="application/x-www-form-urlencoded"),this[w0]=new I0.URLSearchParams(t.form).toString()):(p&&(r["content-type"]="application/json"),this[w0]=t.stringifyJson(t.json));let h=await met.default(this[w0],t.headers);lt.default.undefined(r["content-length"])&<.default.undefined(r["transfer-encoding"])&&!f&&!lt.default.undefined(h)&&(r["content-length"]=String(h))}}else f?this._lockWrite():this._unlockWrite();this[wI]=Number(r["content-length"])||void 0}async _onResponseBase(t){let{options:r}=this,{url:s}=r;this[Vfe]=t,r.decompress&&(t=het(t));let a=t.statusCode,n=t;n.statusMessage=n.statusMessage?n.statusMessage:Lfe.STATUS_CODES[a],n.url=r.url.toString(),n.requestUrl=this.requestUrl,n.redirectUrls=this.redirects,n.request=this,n.isFromCache=t.fromCache||!1,n.ip=this.ip,n.retryCount=this.retryCount,this[qfe]=n.isFromCache,this[II]=Number(t.headers["content-length"])||void 0,this[$Q]=t,t.once("end",()=>{this[II]=this[CI],this.emit("downloadProgress",this.downloadProgress)}),t.once("error",f=>{t.destroy(),this._beforeError(new Y2(f,this))}),t.once("aborted",()=>{this._beforeError(new Y2({name:"Error",message:"The server aborted pending request",code:"ECONNRESET"},this))}),this.emit("downloadProgress",this.downloadProgress);let c=t.headers["set-cookie"];if(lt.default.object(r.cookieJar)&&c){let f=c.map(async p=>r.cookieJar.setCookie(p,s.toString()));r.ignoreInvalidCookies&&(f=f.map(async p=>p.catch(()=>{})));try{await Promise.all(f)}catch(p){this._beforeError(p);return}}if(r.followRedirect&&t.headers.location&&ket.has(a)){if(t.resume(),this[Eo]&&(this[FH](),delete this[Eo],this[Gfe]()),(a===303&&r.method!=="GET"&&r.method!=="HEAD"||!r.methodRewriting)&&(r.method="GET","body"in r&&delete r.body,"json"in r&&delete r.json,"form"in r&&delete r.form,this[w0]=void 0,delete r.headers["content-length"]),this.redirects.length>=r.maxRedirects){this._beforeError(new eR(this));return}try{let p=Buffer.from(t.headers.location,"binary").toString(),h=new I0.URL(p,s),E=h.toString();decodeURI(E),h.hostname!==s.hostname||h.port!==s.port?("host"in r.headers&&delete r.headers.host,"cookie"in r.headers&&delete r.headers.cookie,"authorization"in r.headers&&delete r.headers.authorization,(r.username||r.password)&&(r.username="",r.password="")):(h.username=r.username,h.password=r.password),this.redirects.push(E),r.url=h;for(let C of r.hooks.beforeRedirect)await C(r,n);this.emit("redirect",n,r),await this._makeRequest()}catch(p){this._beforeError(p);return}return}if(r.isStream&&r.throwHttpErrors&&!wet.isResponseOk(n)){this._beforeError(new tR(n));return}t.on("readable",()=>{this[XQ]&&this._read()}),this.on("resume",()=>{t.resume()}),this.on("pause",()=>{t.pause()}),t.once("end",()=>{this.push(null)}),this.emit("response",t);for(let f of this[ZQ])if(!f.headersSent){for(let p in t.headers){let h=r.decompress?p!=="content-encoding":!0,E=t.headers[p];h&&f.setHeader(p,E)}f.statusCode=a}}async _onResponse(t){try{await this._onResponseBase(t)}catch(r){this._beforeError(r)}}_onRequest(t){let{options:r}=this,{timeout:s,url:a}=r;Aet.default(t),this[FH]=_fe.default(t,s,a);let n=r.cache?"cacheableResponse":"response";t.once(n,p=>{this._onResponse(p)}),t.once("error",p=>{var h;t.destroy(),(h=t.res)===null||h===void 0||h.removeAllListeners("end"),p=p instanceof _fe.TimeoutError?new iR(p,this.timings,this):new As(p.message,p,this),this._beforeError(p)}),this[Gfe]=yet.default(t,this,Ret),this[Eo]=t,this.emit("uploadProgress",this.uploadProgress);let c=this[w0],f=this.redirects.length===0?this:t;lt.default.nodeStream(c)?(c.pipe(f),c.once("error",p=>{this._beforeError(new nR(p,this))})):(this._unlockWrite(),lt.default.undefined(c)?(this._cannotHaveBody||this._noPipe)&&(f.end(),this._lockWrite()):(this._writeRequest(c,void 0,()=>{}),f.end(),this._lockWrite())),this.emit("request",t)}async _createCacheableRequest(t,r){return new Promise((s,a)=>{Object.assign(r,Eet.default(t)),delete r.url;let n,c=NH.get(r.cache)(r,async f=>{f._readableState.autoDestroy=!1,n&&(await n).emit("cacheableResponse",f),s(f)});r.url=t,c.once("error",a),c.once("request",async f=>{n=f,s(n)})})}async _makeRequest(){var t,r,s,a,n;let{options:c}=this,{headers:f}=c;for(let U in f)if(lt.default.undefined(f[U]))delete f[U];else if(lt.default.null_(f[U]))throw new TypeError(`Use \`undefined\` instead of \`null\` to delete the \`${U}\` header`);if(c.decompress&<.default.undefined(f["accept-encoding"])&&(f["accept-encoding"]=Det?"gzip, deflate, br":"gzip, deflate"),c.cookieJar){let U=await c.cookieJar.getCookieString(c.url.toString());lt.default.nonEmptyString(U)&&(c.headers.cookie=U)}for(let U of c.hooks.beforeRequest){let Y=await U(c);if(!lt.default.undefined(Y)){c.request=()=>Y;break}}c.body&&this[w0]!==c.body&&(this[w0]=c.body);let{agent:p,request:h,timeout:E,url:C}=c;if(c.dnsCache&&!("lookup"in c)&&(c.lookup=c.dnsCache.lookup),C.hostname==="unix"){let U=/(?.+?):(?.+)/.exec(`${C.pathname}${C.search}`);if(U?.groups){let{socketPath:Y,path:te}=U.groups;Object.assign(c,{socketPath:Y,path:te,host:""})}}let S=C.protocol==="https:",x;c.http2?x=get.auto:x=S?fet.request:Lfe.request;let I=(t=c.request)!==null&&t!==void 0?t:x,T=c.cache?this._createCacheableRequest:I;p&&!c.http2&&(c.agent=p[S?"https":"http"]),c[Eo]=I,delete c.request,delete c.timeout;let O=c;if(O.shared=(r=c.cacheOptions)===null||r===void 0?void 0:r.shared,O.cacheHeuristic=(s=c.cacheOptions)===null||s===void 0?void 0:s.cacheHeuristic,O.immutableMinTimeToLive=(a=c.cacheOptions)===null||a===void 0?void 0:a.immutableMinTimeToLive,O.ignoreCargoCult=(n=c.cacheOptions)===null||n===void 0?void 0:n.ignoreCargoCult,c.dnsLookupIpVersion!==void 0)try{O.family=jfe.dnsLookupIpVersionToFamily(c.dnsLookupIpVersion)}catch{throw new Error("Invalid `dnsLookupIpVersion` option value")}c.https&&("rejectUnauthorized"in c.https&&(O.rejectUnauthorized=c.https.rejectUnauthorized),c.https.checkServerIdentity&&(O.checkServerIdentity=c.https.checkServerIdentity),c.https.certificateAuthority&&(O.ca=c.https.certificateAuthority),c.https.certificate&&(O.cert=c.https.certificate),c.https.key&&(O.key=c.https.key),c.https.passphrase&&(O.passphrase=c.https.passphrase),c.https.pfx&&(O.pfx=c.https.pfx));try{let U=await T(C,O);lt.default.undefined(U)&&(U=x(C,O)),c.request=h,c.timeout=E,c.agent=p,c.https&&("rejectUnauthorized"in c.https&&delete O.rejectUnauthorized,c.https.checkServerIdentity&&delete O.checkServerIdentity,c.https.certificateAuthority&&delete O.ca,c.https.certificate&&delete O.cert,c.https.key&&delete O.key,c.https.passphrase&&delete O.passphrase,c.https.pfx&&delete O.pfx),Pet(U)?this._onRequest(U):this.writable?(this.once("finish",()=>{this._onResponse(U)}),this._unlockWrite(),this.end(),this._lockWrite()):this._onResponse(U)}catch(U){throw U instanceof Mfe.CacheError?new rR(U,this):new As(U.message,U,this)}}async _error(t){try{for(let r of this.options.hooks.beforeError)t=await r(t)}catch(r){t=new As(r.message,r,this)}this.destroy(t)}_beforeError(t){if(this[vI])return;let{options:r}=this,s=this.retryCount+1;this[vI]=!0,t instanceof As||(t=new As(t.message,t,this));let a=t,{response:n}=a;(async()=>{if(n&&!n.body){n.setEncoding(this._readableState.encoding);try{n.rawBody=await Cet.default(n),n.body=n.rawBody.toString()}catch{}}if(this.listenerCount("retry")!==0){let c;try{let f;n&&"retry-after"in n.headers&&(f=Number(n.headers["retry-after"]),Number.isNaN(f)?(f=Date.parse(n.headers["retry-after"])-Date.now(),f<=0&&(f=1)):f*=1e3),c=await r.retry.calculateDelay({attemptCount:s,retryOptions:r.retry,error:a,retryAfter:f,computedValue:vet.default({attemptCount:s,retryOptions:r.retry,error:a,retryAfter:f,computedValue:0})})}catch(f){this._error(new As(f.message,f,this));return}if(c){let f=async()=>{try{for(let p of this.options.hooks.beforeRetry)await p(this.options,a,s)}catch(p){this._error(new As(p.message,t,this));return}this.destroyed||(this.destroy(),this.emit("retry",s,t))};this[Yfe]=setTimeout(f,c);return}}this._error(a)})()}_read(){this[XQ]=!0;let t=this[$Q];if(t&&!this[vI]){t.readableLength&&(this[XQ]=!1);let r;for(;(r=t.read())!==null;){this[CI]+=r.length,this[Wfe]=!0;let s=this.downloadProgress;s.percent<1&&this.emit("downloadProgress",s),this.push(r)}}}_write(t,r,s){let a=()=>{this._writeRequest(t,r,s)};this.requestInitialized?a():this[V2].push(a)}_writeRequest(t,r,s){this[Eo].destroyed||(this._progressCallbacks.push(()=>{this[BI]+=Buffer.byteLength(t,r);let a=this.uploadProgress;a.percent<1&&this.emit("uploadProgress",a)}),this[Eo].write(t,r,a=>{!a&&this._progressCallbacks.length>0&&this._progressCallbacks.shift()(),s(a)}))}_final(t){let r=()=>{for(;this._progressCallbacks.length!==0;)this._progressCallbacks.shift()();if(!(Eo in this)){t();return}if(this[Eo].destroyed){t();return}this[Eo].end(s=>{s||(this[wI]=this[BI],this.emit("uploadProgress",this.uploadProgress),this[Eo].emit("upload-complete")),t(s)})};this.requestInitialized?r():this[V2].push(r)}_destroy(t,r){var s;this[vI]=!0,clearTimeout(this[Yfe]),Eo in this&&(this[FH](),!((s=this[$Q])===null||s===void 0)&&s.complete||this[Eo].destroy()),t!==null&&!lt.default.undefined(t)&&!(t instanceof As)&&(t=new As(t.message,t,this)),r(t)}get _isAboutToError(){return this[vI]}get ip(){var t;return(t=this.socket)===null||t===void 0?void 0:t.remoteAddress}get aborted(){var t,r,s;return((r=(t=this[Eo])===null||t===void 0?void 0:t.destroyed)!==null&&r!==void 0?r:this.destroyed)&&!(!((s=this[Vfe])===null||s===void 0)&&s.complete)}get socket(){var t,r;return(r=(t=this[Eo])===null||t===void 0?void 0:t.socket)!==null&&r!==void 0?r:void 0}get downloadProgress(){let t;return this[II]?t=this[CI]/this[II]:this[II]===this[CI]?t=1:t=0,{percent:t,transferred:this[CI],total:this[II]}}get uploadProgress(){let t;return this[wI]?t=this[BI]/this[wI]:this[wI]===this[BI]?t=1:t=0,{percent:t,transferred:this[BI],total:this[wI]}}get timings(){var t;return(t=this[Eo])===null||t===void 0?void 0:t.timings}get isFromCache(){return this[qfe]}pipe(t,r){if(this[Wfe])throw new Error("Failed to pipe. The response has been emitted already.");return t instanceof RH.ServerResponse&&this[ZQ].add(t),super.pipe(t,r)}unpipe(t){return t instanceof RH.ServerResponse&&this[ZQ].delete(t),super.unpipe(t),this}};Un.default=oR});var J2=G(ju=>{"use strict";var Tet=ju&&ju.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r),Object.defineProperty(e,s,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),Fet=ju&&ju.__exportStar||function(e,t){for(var r in e)r!=="default"&&!Object.prototype.hasOwnProperty.call(t,r)&&Tet(t,e,r)};Object.defineProperty(ju,"__esModule",{value:!0});ju.CancelError=ju.ParseError=void 0;var Kfe=K2(),OH=class extends Kfe.RequestError{constructor(t,r){let{options:s}=r.request;super(`${t.message} in "${s.url.toString()}"`,t,r.request),this.name="ParseError"}};ju.ParseError=OH;var LH=class extends Kfe.RequestError{constructor(t){super("Promise was canceled",{},t),this.name="CancelError"}get isCanceled(){return!0}};ju.CancelError=LH;Fet(K2(),ju)});var zfe=G(MH=>{"use strict";Object.defineProperty(MH,"__esModule",{value:!0});var Jfe=J2(),Net=(e,t,r,s)=>{let{rawBody:a}=e;try{if(t==="text")return a.toString(s);if(t==="json")return a.length===0?"":r(a.toString());if(t==="buffer")return a;throw new Jfe.ParseError({message:`Unknown body type '${t}'`,name:"Error"},e)}catch(n){throw new Jfe.ParseError(n,e)}};MH.default=Net});var UH=G(B0=>{"use strict";var Oet=B0&&B0.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r),Object.defineProperty(e,s,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),Let=B0&&B0.__exportStar||function(e,t){for(var r in e)r!=="default"&&!Object.prototype.hasOwnProperty.call(t,r)&&Oet(t,e,r)};Object.defineProperty(B0,"__esModule",{value:!0});var Met=Ie("events"),Uet=Op(),_et=Jce(),aR=J2(),Zfe=zfe(),Xfe=K2(),Het=CH(),jet=PH(),$fe=xH(),Get=["request","response","redirect","uploadProgress","downloadProgress"];function eAe(e){let t,r,s=new Met.EventEmitter,a=new _et((c,f,p)=>{let h=E=>{let C=new Xfe.default(void 0,e);C.retryCount=E,C._noPipe=!0,p(()=>C.destroy()),p.shouldReject=!1,p(()=>f(new aR.CancelError(C))),t=C,C.once("response",async I=>{var T;if(I.retryCount=E,I.request.aborted)return;let O;try{O=await jet.default(C),I.rawBody=O}catch{return}if(C._isAboutToError)return;let U=((T=I.headers["content-encoding"])!==null&&T!==void 0?T:"").toLowerCase(),Y=["gzip","deflate","br"].includes(U),{options:te}=C;if(Y&&!te.decompress)I.body=O;else try{I.body=Zfe.default(I,te.responseType,te.parseJson,te.encoding)}catch(ie){if(I.body=O.toString(),$fe.isResponseOk(I)){C._beforeError(ie);return}}try{for(let[ie,ue]of te.hooks.afterResponse.entries())I=await ue(I,async ae=>{let de=Xfe.default.normalizeArguments(void 0,{...ae,retry:{calculateDelay:()=>0},throwHttpErrors:!1,resolveBodyOnly:!1},te);de.hooks.afterResponse=de.hooks.afterResponse.slice(0,ie);for(let Ce of de.hooks.beforeRetry)await Ce(de);let Ae=eAe(de);return p(()=>{Ae.catch(()=>{}),Ae.cancel()}),Ae})}catch(ie){C._beforeError(new aR.RequestError(ie.message,ie,C));return}if(!$fe.isResponseOk(I)){C._beforeError(new aR.HTTPError(I));return}r=I,c(C.options.resolveBodyOnly?I.body:I)});let S=I=>{if(a.isCanceled)return;let{options:T}=C;if(I instanceof aR.HTTPError&&!T.throwHttpErrors){let{response:O}=I;c(C.options.resolveBodyOnly?O.body:O);return}f(I)};C.once("error",S);let x=C.options.body;C.once("retry",(I,T)=>{var O,U;if(x===((O=T.request)===null||O===void 0?void 0:O.options.body)&&Uet.default.nodeStream((U=T.request)===null||U===void 0?void 0:U.options.body)){S(T);return}h(I)}),Het.default(C,s,Get)};h(0)});a.on=(c,f)=>(s.on(c,f),a);let n=c=>{let f=(async()=>{await a;let{options:p}=r.request;return Zfe.default(r,c,p.parseJson,p.encoding)})();return Object.defineProperties(f,Object.getOwnPropertyDescriptors(a)),f};return a.json=()=>{let{headers:c}=t.options;return!t.writableFinished&&c.accept===void 0&&(c.accept="application/json"),n("json")},a.buffer=()=>n("buffer"),a.text=()=>n("text"),a}B0.default=eAe;Let(J2(),B0)});var tAe=G(_H=>{"use strict";Object.defineProperty(_H,"__esModule",{value:!0});var qet=J2();function Wet(e,...t){let r=(async()=>{if(e instanceof qet.RequestError)try{for(let a of t)if(a)for(let n of a)e=await n(e)}catch(a){e=a}throw e})(),s=()=>r;return r.json=s,r.text=s,r.buffer=s,r.on=s,r}_H.default=Wet});var iAe=G(HH=>{"use strict";Object.defineProperty(HH,"__esModule",{value:!0});var rAe=Op();function nAe(e){for(let t of Object.values(e))(rAe.default.plainObject(t)||rAe.default.array(t))&&nAe(t);return Object.freeze(e)}HH.default=nAe});var oAe=G(sAe=>{"use strict";Object.defineProperty(sAe,"__esModule",{value:!0})});var jH=G(Oc=>{"use strict";var Vet=Oc&&Oc.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r),Object.defineProperty(e,s,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),Yet=Oc&&Oc.__exportStar||function(e,t){for(var r in e)r!=="default"&&!Object.prototype.hasOwnProperty.call(t,r)&&Vet(t,e,r)};Object.defineProperty(Oc,"__esModule",{value:!0});Oc.defaultHandler=void 0;var aAe=Op(),Nc=UH(),Ket=tAe(),cR=K2(),Jet=iAe(),zet={RequestError:Nc.RequestError,CacheError:Nc.CacheError,ReadError:Nc.ReadError,HTTPError:Nc.HTTPError,MaxRedirectsError:Nc.MaxRedirectsError,TimeoutError:Nc.TimeoutError,ParseError:Nc.ParseError,CancelError:Nc.CancelError,UnsupportedProtocolError:Nc.UnsupportedProtocolError,UploadError:Nc.UploadError},Zet=async e=>new Promise(t=>{setTimeout(t,e)}),{normalizeArguments:lR}=cR.default,lAe=(...e)=>{let t;for(let r of e)t=lR(void 0,r,t);return t},Xet=e=>e.isStream?new cR.default(void 0,e):Nc.default(e),$et=e=>"defaults"in e&&"options"in e.defaults,ett=["get","post","put","patch","head","delete"];Oc.defaultHandler=(e,t)=>t(e);var cAe=(e,t)=>{if(e)for(let r of e)r(t)},uAe=e=>{e._rawHandlers=e.handlers,e.handlers=e.handlers.map(s=>(a,n)=>{let c,f=s(a,p=>(c=n(p),c));if(f!==c&&!a.isStream&&c){let p=f,{then:h,catch:E,finally:C}=p;Object.setPrototypeOf(p,Object.getPrototypeOf(c)),Object.defineProperties(p,Object.getOwnPropertyDescriptors(c)),p.then=h,p.catch=E,p.finally=C}return f});let t=(s,a={},n)=>{var c,f;let p=0,h=E=>e.handlers[p++](E,p===e.handlers.length?Xet:h);if(aAe.default.plainObject(s)){let E={...s,...a};cR.setNonEnumerableProperties([s,a],E),a=E,s=void 0}try{let E;try{cAe(e.options.hooks.init,a),cAe((c=a.hooks)===null||c===void 0?void 0:c.init,a)}catch(S){E=S}let C=lR(s,a,n??e.options);if(C[cR.kIsNormalizedAlready]=!0,E)throw new Nc.RequestError(E.message,E,C);return h(C)}catch(E){if(a.isStream)throw E;return Ket.default(E,e.options.hooks.beforeError,(f=a.hooks)===null||f===void 0?void 0:f.beforeError)}};t.extend=(...s)=>{let a=[e.options],n=[...e._rawHandlers],c;for(let f of s)$et(f)?(a.push(f.defaults.options),n.push(...f.defaults._rawHandlers),c=f.defaults.mutableDefaults):(a.push(f),"handlers"in f&&n.push(...f.handlers),c=f.mutableDefaults);return n=n.filter(f=>f!==Oc.defaultHandler),n.length===0&&n.push(Oc.defaultHandler),uAe({options:lAe(...a),handlers:n,mutableDefaults:!!c})};let r=async function*(s,a){let n=lR(s,a,e.options);n.resolveBodyOnly=!1;let c=n.pagination;if(!aAe.default.object(c))throw new TypeError("`options.pagination` must be implemented");let f=[],{countLimit:p}=c,h=0;for(;h{let n=[];for await(let c of r(s,a))n.push(c);return n},t.paginate.each=r,t.stream=(s,a)=>t(s,{...a,isStream:!0});for(let s of ett)t[s]=(a,n)=>t(a,{...n,method:s}),t.stream[s]=(a,n)=>t(a,{...n,method:s,isStream:!0});return Object.assign(t,zet),Object.defineProperty(t,"defaults",{value:e.mutableDefaults?e:Jet.default(e),writable:e.mutableDefaults,configurable:e.mutableDefaults,enumerable:!0}),t.mergeOptions=lAe,t};Oc.default=uAe;Yet(oAe(),Oc)});var pAe=G((Lp,uR)=>{"use strict";var ttt=Lp&&Lp.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r),Object.defineProperty(e,s,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),fAe=Lp&&Lp.__exportStar||function(e,t){for(var r in e)r!=="default"&&!Object.prototype.hasOwnProperty.call(t,r)&&ttt(t,e,r)};Object.defineProperty(Lp,"__esModule",{value:!0});var rtt=Ie("url"),AAe=jH(),ntt={options:{method:"GET",retry:{limit:2,methods:["GET","PUT","HEAD","DELETE","OPTIONS","TRACE"],statusCodes:[408,413,429,500,502,503,504,521,522,524],errorCodes:["ETIMEDOUT","ECONNRESET","EADDRINUSE","ECONNREFUSED","EPIPE","ENOTFOUND","ENETUNREACH","EAI_AGAIN"],maxRetryAfter:void 0,calculateDelay:({computedValue:e})=>e},timeout:{},headers:{"user-agent":"got (https://github.com/sindresorhus/got)"},hooks:{init:[],beforeRequest:[],beforeRedirect:[],beforeRetry:[],beforeError:[],afterResponse:[]},cache:void 0,dnsCache:void 0,decompress:!0,throwHttpErrors:!0,followRedirect:!0,isStream:!1,responseType:"text",resolveBodyOnly:!1,maxRedirects:10,prefixUrl:"",methodRewriting:!0,ignoreInvalidCookies:!1,context:{},http2:!1,allowGetBody:!1,https:void 0,pagination:{transform:e=>e.request.options.responseType==="json"?e.body:JSON.parse(e.body),paginate:e=>{if(!Reflect.has(e.headers,"link"))return!1;let t=e.headers.link.split(","),r;for(let s of t){let a=s.split(";");if(a[1].includes("next")){r=a[0].trimStart().trim(),r=r.slice(1,-1);break}}return r?{url:new rtt.URL(r)}:!1},filter:()=>!0,shouldContinue:()=>!0,countLimit:1/0,backoff:0,requestLimit:1e4,stackAllItems:!0},parseJson:e=>JSON.parse(e),stringifyJson:e=>JSON.stringify(e),cacheOptions:{}},handlers:[AAe.defaultHandler],mutableDefaults:!1},GH=AAe.default(ntt);Lp.default=GH;uR.exports=GH;uR.exports.default=GH;uR.exports.__esModule=!0;fAe(jH(),Lp);fAe(UH(),Lp)});var nn={};Yt(nn,{Method:()=>EAe,del:()=>ltt,get:()=>VH,getNetworkSettings:()=>yAe,post:()=>YH,put:()=>att,request:()=>z2});async function qH(e){return Zl(gAe,e,()=>le.readFilePromise(e).then(t=>(gAe.set(e,t),t)))}function ott({statusCode:e,statusMessage:t},r){let s=jt(r,e,gt.NUMBER),a=`https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/${e}`;return XE(r,`${s}${t?` (${t})`:""}`,a)}async function fR(e,{configuration:t,customErrorMessage:r}){try{return await e}catch(s){if(s.name!=="HTTPError")throw s;let a=r?.(s,t)??s.response.body?.error;a==null&&(s.message.startsWith("Response code")?a="The remote server failed to provide the requested resource":a=s.message),s.code==="ETIMEDOUT"&&s.event==="socket"&&(a+=`(can be increased via ${jt(t,"httpTimeout",gt.SETTING)})`);let n=new _t(35,a,c=>{s.response&&c.reportError(35,` ${Zf(t,{label:"Response Code",value:Mu(gt.NO_HINT,ott(s.response,t))})}`),s.request&&(c.reportError(35,` ${Zf(t,{label:"Request Method",value:Mu(gt.NO_HINT,s.request.options.method)})}`),c.reportError(35,` ${Zf(t,{label:"Request URL",value:Mu(gt.URL,s.request.requestUrl)})}`)),s.request.redirects.length>0&&c.reportError(35,` ${Zf(t,{label:"Request Redirects",value:Mu(gt.NO_HINT,O4(t,s.request.redirects,gt.URL))})}`),s.request.retryCount===s.request.options.retry.limit&&c.reportError(35,` ${Zf(t,{label:"Request Retry Count",value:Mu(gt.NO_HINT,`${jt(t,s.request.retryCount,gt.NUMBER)} (can be increased via ${jt(t,"httpRetry",gt.SETTING)})`)})}`)});throw n.originalError=s,n}}function yAe(e,t){let r=[...t.configuration.get("networkSettings")].sort(([c],[f])=>f.length-c.length),s={enableNetwork:void 0,httpsCaFilePath:void 0,httpProxy:void 0,httpsProxy:void 0,httpsKeyFilePath:void 0,httpsCertFilePath:void 0},a=Object.keys(s),n=typeof e=="string"?new URL(e):e;for(let[c,f]of r)if(WH.default.isMatch(n.hostname,c))for(let p of a){let h=f.get(p);h!==null&&typeof s[p]>"u"&&(s[p]=h)}for(let c of a)typeof s[c]>"u"&&(s[c]=t.configuration.get(c));return s}async function z2(e,t,{configuration:r,headers:s,jsonRequest:a,jsonResponse:n,method:c="GET",wrapNetworkRequest:f}){let p={target:e,body:t,configuration:r,headers:s,jsonRequest:a,jsonResponse:n,method:c},h=async()=>await ctt(e,t,p),E=typeof f<"u"?await f(h,p):h;return await(await r.reduceHook(S=>S.wrapNetworkRequest,E,p))()}async function VH(e,{configuration:t,jsonResponse:r,customErrorMessage:s,wrapNetworkRequest:a,...n}){let c=()=>fR(z2(e,null,{configuration:t,wrapNetworkRequest:a,...n}),{configuration:t,customErrorMessage:s}).then(p=>p.body),f=await(typeof a<"u"?c():Zl(hAe,e,()=>c().then(p=>(hAe.set(e,p),p))));return r?JSON.parse(f.toString()):f}async function att(e,t,{customErrorMessage:r,...s}){return(await fR(z2(e,t,{...s,method:"PUT"}),{customErrorMessage:r,configuration:s.configuration})).body}async function YH(e,t,{customErrorMessage:r,...s}){return(await fR(z2(e,t,{...s,method:"POST"}),{customErrorMessage:r,configuration:s.configuration})).body}async function ltt(e,{customErrorMessage:t,...r}){return(await fR(z2(e,null,{...r,method:"DELETE"}),{customErrorMessage:t,configuration:r.configuration})).body}async function ctt(e,t,{configuration:r,headers:s,jsonRequest:a,jsonResponse:n,method:c="GET"}){let f=typeof e=="string"?new URL(e):e,p=yAe(f,{configuration:r});if(p.enableNetwork===!1)throw new _t(80,`Request to '${f.href}' has been blocked because of your configuration settings`);if(f.protocol==="http:"&&!WH.default.isMatch(f.hostname,r.get("unsafeHttpWhitelist")))throw new _t(81,`Unsafe http requests must be explicitly whitelisted in your configuration (${f.hostname})`);let h={headers:s,method:c};h.responseType=n?"json":"buffer",t!==null&&(Buffer.isBuffer(t)||!a&&typeof t=="string"?h.body=t:h.json=t);let E=r.get("httpTimeout"),C=r.get("httpRetry"),S=r.get("enableStrictSsl"),x=p.httpsCaFilePath,I=p.httpsCertFilePath,T=p.httpsKeyFilePath,{default:O}=await Promise.resolve().then(()=>et(pAe())),U=x?await qH(x):void 0,Y=I?await qH(I):void 0,te=T?await qH(T):void 0,ie={rejectUnauthorized:S,ca:U,cert:Y,key:te},ue={http:p.httpProxy?new jce({proxy:p.httpProxy,proxyRequestOptions:ie}):itt,https:p.httpsProxy?new Gce({proxy:p.httpsProxy,proxyRequestOptions:ie}):stt},ae=O.extend({timeout:{socket:E},retry:C,agent:ue,https:{rejectUnauthorized:S,certificateAuthority:U,certificate:Y,key:te},...h});return r.getLimit("networkConcurrency")(()=>ae(f))}var dAe,mAe,WH,hAe,gAe,itt,stt,EAe,AR=Ze(()=>{Dt();qce();dAe=Ie("https"),mAe=Ie("http"),WH=et(Jo());Tc();kc();xc();hAe=new Map,gAe=new Map,itt=new mAe.Agent({keepAlive:!0}),stt=new dAe.Agent({keepAlive:!0});EAe=(a=>(a.GET="GET",a.PUT="PUT",a.POST="POST",a.DELETE="DELETE",a))(EAe||{})});var Ui={};Yt(Ui,{availableParallelism:()=>JH,getArchitecture:()=>Z2,getArchitectureName:()=>htt,getArchitectureSet:()=>KH,getCaller:()=>ytt,major:()=>utt,openUrl:()=>ftt});function ptt(){if(process.platform!=="linux")return null;let e;try{e=le.readFileSync(Att)}catch{}if(typeof e<"u"){if(e&&(e.includes("GLIBC")||e.includes("GNU libc")||e.includes("GNU C Library")))return"glibc";if(e&&e.includes("musl"))return"musl"}let r=(process.report?.getReport()??{}).sharedObjects??[],s=/\/(?:(ld-linux-|[^/]+-linux-gnu\/)|(libc.musl-|ld-musl-))/;return f0(r,a=>{let n=a.match(s);if(!n)return f0.skip;if(n[1])return"glibc";if(n[2])return"musl";throw new Error("Assertion failed: Expected the libc variant to have been detected")})??null}function Z2(){return CAe=CAe??{os:(process.env.YARN_IS_TEST_ENV?process.env.YARN_OS_OVERRIDE:void 0)??process.platform,cpu:(process.env.YARN_IS_TEST_ENV?process.env.YARN_CPU_OVERRIDE:void 0)??process.arch,libc:(process.env.YARN_IS_TEST_ENV?process.env.YARN_LIBC_OVERRIDE:void 0)??ptt()}}function htt(e=Z2()){return e.libc?`${e.os}-${e.cpu}-${e.libc}`:`${e.os}-${e.cpu}`}function KH(){let e=Z2();return wAe=wAe??{os:[e.os],cpu:[e.cpu],libc:e.libc?[e.libc]:[]}}function mtt(e){let t=gtt.exec(e);if(!t)return null;let r=t[2]&&t[2].indexOf("native")===0,s=t[2]&&t[2].indexOf("eval")===0,a=dtt.exec(t[2]);return s&&a!=null&&(t[2]=a[1],t[3]=a[2],t[4]=a[3]),{file:r?null:t[2],methodName:t[1]||"",arguments:r?[t[2]]:[],line:t[3]?+t[3]:null,column:t[4]?+t[4]:null}}function ytt(){let t=new Error().stack.split(` -`)[3];return mtt(t)}function JH(){return typeof pR.default.availableParallelism<"u"?pR.default.availableParallelism():Math.max(1,pR.default.cpus().length)}var pR,utt,IAe,ftt,Att,CAe,wAe,gtt,dtt,hR=Ze(()=>{Dt();pR=et(Ie("os"));gR();xc();utt=Number(process.versions.node.split(".")[0]),IAe=new Map([["darwin","open"],["linux","xdg-open"],["win32","explorer.exe"]]).get(process.platform),ftt=typeof IAe<"u"?async e=>{try{return await zH(IAe,[e],{cwd:K.cwd()}),!0}catch{return!1}}:void 0,Att="/usr/bin/ldd";gtt=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||\/|[a-z]:\\|\\\\).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,dtt=/\((\S*)(?::(\d+))(?::(\d+))\)/});function rj(e,t,r,s,a){let n=M2(r);if(s.isArray||s.type==="ANY"&&Array.isArray(n))return Array.isArray(n)?n.map((c,f)=>ZH(e,`${t}[${f}]`,c,s,a)):String(n).split(/,/).map(c=>ZH(e,t,c,s,a));if(Array.isArray(n))throw new Error(`Non-array configuration settings "${t}" cannot be an array`);return ZH(e,t,r,s,a)}function ZH(e,t,r,s,a){let n=M2(r);switch(s.type){case"ANY":return FQ(n);case"SHAPE":return wtt(e,t,r,s,a);case"MAP":return Btt(e,t,r,s,a)}if(n===null&&!s.isNullable&&s.default!==null)throw new Error(`Non-nullable configuration settings "${t}" cannot be set to null`);if("values"in s&&s.values?.includes(n))return n;let f=(()=>{if(s.type==="BOOLEAN"&&typeof n!="string")return w2(n);if(typeof n!="string")throw new Error(`Expected configuration setting "${t}" to be a string, got ${typeof n}`);let p=Vk(n,{env:e.env});switch(s.type){case"ABSOLUTE_PATH":{let h=a,E=S8(r);return E&&E[0]!=="<"&&(h=K.dirname(E)),K.resolve(h,fe.toPortablePath(p))}case"LOCATOR_LOOSE":return Rp(p,!1);case"NUMBER":return parseInt(p);case"LOCATOR":return Rp(p);case"BOOLEAN":return w2(p);case"DURATION":return Yk(p,s.unit);default:return p}})();if("values"in s&&s.values&&!s.values.includes(f))throw new Error(`Invalid value, expected one of ${s.values.join(", ")}`);return f}function wtt(e,t,r,s,a){let n=M2(r);if(typeof n!="object"||Array.isArray(n))throw new st(`Object configuration settings "${t}" must be an object`);let c=nj(e,s,{ignoreArrays:!0});if(n===null)return c;for(let[f,p]of Object.entries(n)){let h=`${t}.${f}`;if(!s.properties[f])throw new st(`Unrecognized configuration settings found: ${t}.${f} - run "yarn config" to see the list of settings supported in Yarn`);c.set(f,rj(e,h,p,s.properties[f],a))}return c}function Btt(e,t,r,s,a){let n=M2(r),c=new Map;if(typeof n!="object"||Array.isArray(n))throw new st(`Map configuration settings "${t}" must be an object`);if(n===null)return c;for(let[f,p]of Object.entries(n)){let h=s.normalizeKeys?s.normalizeKeys(f):f,E=`${t}['${h}']`,C=s.valueDefinition;c.set(h,rj(e,E,p,C,a))}return c}function nj(e,t,{ignoreArrays:r=!1}={}){switch(t.type){case"SHAPE":{if(t.isArray&&!r)return[];let s=new Map;for(let[a,n]of Object.entries(t.properties))s.set(a,nj(e,n));return s}case"MAP":return t.isArray&&!r?[]:new Map;case"ABSOLUTE_PATH":return t.default===null?null:e.projectCwd===null?Array.isArray(t.default)?t.default.map(s=>K.normalize(s)):K.isAbsolute(t.default)?K.normalize(t.default):t.isNullable?null:void 0:Array.isArray(t.default)?t.default.map(s=>K.resolve(e.projectCwd,s)):K.resolve(e.projectCwd,t.default);case"DURATION":return Yk(t.default,t.unit);default:return t.default}}function mR(e,t,r){if(t.type==="SECRET"&&typeof e=="string"&&r.hideSecrets)return Ctt;if(t.type==="ABSOLUTE_PATH"&&typeof e=="string"&&r.getNativePaths)return fe.fromPortablePath(e);if(t.isArray&&Array.isArray(e)){let s=[];for(let a of e)s.push(mR(a,t,r));return s}if(t.type==="MAP"&&e instanceof Map){if(e.size===0)return;let s=new Map;for(let[a,n]of e.entries()){let c=mR(n,t.valueDefinition,r);typeof c<"u"&&s.set(a,c)}return s}if(t.type==="SHAPE"&&e instanceof Map){if(e.size===0)return;let s=new Map;for(let[a,n]of e.entries()){let c=t.properties[a],f=mR(n,c,r);typeof f<"u"&&s.set(a,f)}return s}return e}function vtt(){let e={};for(let[t,r]of Object.entries(process.env))t=t.toLowerCase(),t.startsWith(yR)&&(t=(0,vAe.default)(t.slice(yR.length)),e[t]=r);return e}function $H(){let e=`${yR}rc_filename`;for(let[t,r]of Object.entries(process.env))if(t.toLowerCase()===e&&typeof r=="string")return r;return ej}async function BAe(e){try{return await le.readFilePromise(e)}catch{return Buffer.of()}}async function Stt(e,t){return Buffer.compare(...await Promise.all([BAe(e),BAe(t)]))===0}async function Dtt(e,t){let[r,s]=await Promise.all([le.statPromise(e),le.statPromise(t)]);return r.dev===s.dev&&r.ino===s.ino}async function Ptt({configuration:e,selfPath:t}){let r=e.get("yarnPath");return e.get("ignorePath")||r===null||r===t||await btt(r,t)?null:r}var vAe,Mp,SAe,DAe,bAe,XH,Ett,X2,Itt,Up,yR,ej,Ctt,SI,PAe,tj,ER,dR,btt,ze,$2=Ze(()=>{Dt();Bc();vAe=et(jte()),Mp=et(Rd());Vt();SAe=et(Nre()),DAe=Ie("module"),bAe=et(Nd()),XH=Ie("stream");Cce();cI();m8();y8();E8();Tce();I8();$d();Mce();OQ();kc();y0();AR();xc();hR();Fp();Zo();Ett=function(){if(!Mp.GITHUB_ACTIONS||!process.env.GITHUB_EVENT_PATH)return!1;let e=fe.toPortablePath(process.env.GITHUB_EVENT_PATH),t;try{t=le.readJsonSync(e)}catch{return!1}return!(!("repository"in t)||!t.repository||(t.repository.private??!0))}(),X2=new Set(["@yarnpkg/plugin-constraints","@yarnpkg/plugin-exec","@yarnpkg/plugin-interactive-tools","@yarnpkg/plugin-stage","@yarnpkg/plugin-typescript","@yarnpkg/plugin-version","@yarnpkg/plugin-workspace-tools"]),Itt=new Set(["isTestEnv","injectNpmUser","injectNpmPassword","injectNpm2FaToken","zipDataEpilogue","cacheCheckpointOverride","cacheVersionOverride","lockfileVersionOverride","osOverride","cpuOverride","libcOverride","binFolder","version","flags","profile","gpg","ignoreNode","wrapOutput","home","confDir","registry","ignoreCwd"]),Up=/^(?!v)[a-z0-9._-]+$/i,yR="yarn_",ej=".yarnrc.yml",Ctt="********",SI=(C=>(C.ANY="ANY",C.BOOLEAN="BOOLEAN",C.ABSOLUTE_PATH="ABSOLUTE_PATH",C.LOCATOR="LOCATOR",C.LOCATOR_LOOSE="LOCATOR_LOOSE",C.NUMBER="NUMBER",C.STRING="STRING",C.DURATION="DURATION",C.SECRET="SECRET",C.SHAPE="SHAPE",C.MAP="MAP",C))(SI||{}),PAe=gt,tj=(c=>(c.MILLISECONDS="ms",c.SECONDS="s",c.MINUTES="m",c.HOURS="h",c.DAYS="d",c.WEEKS="w",c))(tj||{}),ER=(r=>(r.JUNCTIONS="junctions",r.SYMLINKS="symlinks",r))(ER||{}),dR={lastUpdateCheck:{description:"Last timestamp we checked whether new Yarn versions were available",type:"STRING",default:null},yarnPath:{description:"Path to the local executable that must be used over the global one",type:"ABSOLUTE_PATH",default:null},ignorePath:{description:"If true, the local executable will be ignored when using the global one",type:"BOOLEAN",default:!1},globalFolder:{description:"Folder where all system-global files are stored",type:"ABSOLUTE_PATH",default:b8()},cacheFolder:{description:"Folder where the cache files must be written",type:"ABSOLUTE_PATH",default:"./.yarn/cache"},compressionLevel:{description:"Zip files compression level, from 0 to 9 or mixed (a variant of 9, which stores some files uncompressed, when compression doesn't yield good results)",type:"NUMBER",values:["mixed",0,1,2,3,4,5,6,7,8,9],default:0},virtualFolder:{description:"Folder where the virtual packages (cf doc) will be mapped on the disk (must be named __virtual__)",type:"ABSOLUTE_PATH",default:"./.yarn/__virtual__"},installStatePath:{description:"Path of the file where the install state will be persisted",type:"ABSOLUTE_PATH",default:"./.yarn/install-state.gz"},immutablePatterns:{description:"Array of glob patterns; files matching them won't be allowed to change during immutable installs",type:"STRING",default:[],isArray:!0},rcFilename:{description:"Name of the files where the configuration can be found",type:"STRING",default:$H()},enableGlobalCache:{description:"If true, the system-wide cache folder will be used regardless of `cache-folder`",type:"BOOLEAN",default:!0},cacheMigrationMode:{description:"Defines the conditions under which Yarn upgrades should cause the cache archives to be regenerated.",type:"STRING",values:["always","match-spec","required-only"],default:"always"},enableColors:{description:"If true, the CLI is allowed to use colors in its output",type:"BOOLEAN",default:Zk,defaultText:""},enableHyperlinks:{description:"If true, the CLI is allowed to use hyperlinks in its output",type:"BOOLEAN",default:N4,defaultText:""},enableInlineBuilds:{description:"If true, the CLI will print the build output on the command line",type:"BOOLEAN",default:Mp.isCI,defaultText:""},enableMessageNames:{description:"If true, the CLI will prefix most messages with codes suitable for search engines",type:"BOOLEAN",default:!0},enableProgressBars:{description:"If true, the CLI is allowed to show a progress bar for long-running events",type:"BOOLEAN",default:!Mp.isCI,defaultText:""},enableTimers:{description:"If true, the CLI is allowed to print the time spent executing commands",type:"BOOLEAN",default:!0},enableTips:{description:"If true, installs will print a helpful message every day of the week",type:"BOOLEAN",default:!Mp.isCI,defaultText:""},preferInteractive:{description:"If true, the CLI will automatically use the interactive mode when called from a TTY",type:"BOOLEAN",default:!1},preferTruncatedLines:{description:"If true, the CLI will truncate lines that would go beyond the size of the terminal",type:"BOOLEAN",default:!1},progressBarStyle:{description:"Which style of progress bar should be used (only when progress bars are enabled)",type:"STRING",default:void 0,defaultText:""},defaultLanguageName:{description:"Default language mode that should be used when a package doesn't offer any insight",type:"STRING",default:"node"},defaultProtocol:{description:"Default resolution protocol used when resolving pure semver and tag ranges",type:"STRING",default:"npm:"},enableTransparentWorkspaces:{description:"If false, Yarn won't automatically resolve workspace dependencies unless they use the `workspace:` protocol",type:"BOOLEAN",default:!0},supportedArchitectures:{description:"Architectures that Yarn will fetch and inject into the resolver",type:"SHAPE",properties:{os:{description:"Array of supported process.platform strings, or null to target them all",type:"STRING",isArray:!0,isNullable:!0,default:["current"]},cpu:{description:"Array of supported process.arch strings, or null to target them all",type:"STRING",isArray:!0,isNullable:!0,default:["current"]},libc:{description:"Array of supported libc libraries, or null to target them all",type:"STRING",isArray:!0,isNullable:!0,default:["current"]}}},enableMirror:{description:"If true, the downloaded packages will be retrieved and stored in both the local and global folders",type:"BOOLEAN",default:!0},enableNetwork:{description:"If false, Yarn will refuse to use the network if required to",type:"BOOLEAN",default:!0},enableOfflineMode:{description:"If true, Yarn will attempt to retrieve files and metadata from the global cache rather than the network",type:"BOOLEAN",default:!1},httpProxy:{description:"URL of the http proxy that must be used for outgoing http requests",type:"STRING",default:null},httpsProxy:{description:"URL of the http proxy that must be used for outgoing https requests",type:"STRING",default:null},unsafeHttpWhitelist:{description:"List of the hostnames for which http queries are allowed (glob patterns are supported)",type:"STRING",default:[],isArray:!0},httpTimeout:{description:"Timeout of each http request",type:"DURATION",unit:"ms",default:"1m"},httpRetry:{description:"Retry times on http failure",type:"NUMBER",default:3},networkConcurrency:{description:"Maximal number of concurrent requests",type:"NUMBER",default:50},taskPoolConcurrency:{description:"Maximal amount of concurrent heavy task processing",type:"NUMBER",default:JH()},taskPoolMode:{description:"Execution strategy for heavy tasks",type:"STRING",values:["async","workers"],default:"workers"},networkSettings:{description:"Network settings per hostname (glob patterns are supported)",type:"MAP",valueDefinition:{description:"",type:"SHAPE",properties:{httpsCaFilePath:{description:"Path to file containing one or multiple Certificate Authority signing certificates",type:"ABSOLUTE_PATH",default:null},enableNetwork:{description:"If false, the package manager will refuse to use the network if required to",type:"BOOLEAN",default:null},httpProxy:{description:"URL of the http proxy that must be used for outgoing http requests",type:"STRING",default:null},httpsProxy:{description:"URL of the http proxy that must be used for outgoing https requests",type:"STRING",default:null},httpsKeyFilePath:{description:"Path to file containing private key in PEM format",type:"ABSOLUTE_PATH",default:null},httpsCertFilePath:{description:"Path to file containing certificate chain in PEM format",type:"ABSOLUTE_PATH",default:null}}}},httpsCaFilePath:{description:"A path to a file containing one or multiple Certificate Authority signing certificates",type:"ABSOLUTE_PATH",default:null},httpsKeyFilePath:{description:"Path to file containing private key in PEM format",type:"ABSOLUTE_PATH",default:null},httpsCertFilePath:{description:"Path to file containing certificate chain in PEM format",type:"ABSOLUTE_PATH",default:null},enableStrictSsl:{description:"If false, SSL certificate errors will be ignored",type:"BOOLEAN",default:!0},logFilters:{description:"Overrides for log levels",type:"SHAPE",isArray:!0,concatenateValues:!0,properties:{code:{description:"Code of the messages covered by this override",type:"STRING",default:void 0},text:{description:"Code of the texts covered by this override",type:"STRING",default:void 0},pattern:{description:"Code of the patterns covered by this override",type:"STRING",default:void 0},level:{description:"Log level override, set to null to remove override",type:"STRING",values:Object.values($k),isNullable:!0,default:void 0}}},enableTelemetry:{description:"If true, telemetry will be periodically sent, following the rules in https://yarnpkg.com/advanced/telemetry",type:"BOOLEAN",default:!0},telemetryInterval:{description:"Minimal amount of time between two telemetry uploads",type:"DURATION",unit:"d",default:"7d"},telemetryUserId:{description:"If you desire to tell us which project you are, you can set this field. Completely optional and opt-in.",type:"STRING",default:null},enableHardenedMode:{description:"If true, automatically enable --check-resolutions --refresh-lockfile on installs",type:"BOOLEAN",default:Mp.isPR&&Ett,defaultText:""},enableScripts:{description:"If true, packages are allowed to have install scripts by default",type:"BOOLEAN",default:!0},enableStrictSettings:{description:"If true, unknown settings will cause Yarn to abort",type:"BOOLEAN",default:!0},enableImmutableCache:{description:"If true, the cache is reputed immutable and actions that would modify it will throw",type:"BOOLEAN",default:!1},enableCacheClean:{description:"If false, disallows the `cache clean` command",type:"BOOLEAN",default:!0},checksumBehavior:{description:"Enumeration defining what to do when a checksum doesn't match expectations",type:"STRING",default:"throw"},injectEnvironmentFiles:{description:"List of all the environment files that Yarn should inject inside the process when it starts",type:"ABSOLUTE_PATH",default:[".env.yarn?"],isArray:!0},packageExtensions:{description:"Map of package corrections to apply on the dependency tree",type:"MAP",valueDefinition:{description:"The extension that will be applied to any package whose version matches the specified range",type:"SHAPE",properties:{dependencies:{description:"The set of dependencies that must be made available to the current package in order for it to work properly",type:"MAP",valueDefinition:{description:"A range",type:"STRING"}},peerDependencies:{description:"Inherited dependencies - the consumer of the package will be tasked to provide them",type:"MAP",valueDefinition:{description:"A semver range",type:"STRING"}},peerDependenciesMeta:{description:"Extra information related to the dependencies listed in the peerDependencies field",type:"MAP",valueDefinition:{description:"The peerDependency meta",type:"SHAPE",properties:{optional:{description:"If true, the selected peer dependency will be marked as optional by the package manager and the consumer omitting it won't be reported as an error",type:"BOOLEAN",default:!1}}}}}}}};btt=process.platform==="win32"?Stt:Dtt;ze=class e{constructor(t){this.isCI=Mp.isCI;this.projectCwd=null;this.plugins=new Map;this.settings=new Map;this.values=new Map;this.sources=new Map;this.invalid=new Map;this.env={};this.limits=new Map;this.packageExtensions=null;this.startingCwd=t}static{this.deleteProperty=Symbol()}static{this.telemetry=null}static create(t,r,s){let a=new e(t);typeof r<"u"&&!(r instanceof Map)&&(a.projectCwd=r),a.importSettings(dR);let n=typeof s<"u"?s:r instanceof Map?r:new Map;for(let[c,f]of n)a.activatePlugin(c,f);return a}static async find(t,r,{strict:s=!0,usePathCheck:a=null,useRc:n=!0}={}){let c=vtt();delete c.rcFilename;let f=new e(t),p=await e.findRcFiles(t),h=await e.findFolderRcFile(hI());h&&(p.find(de=>de.path===h.path)||p.unshift(h));let E=Lce(p.map(ae=>[ae.path,ae.data])),C=vt.dot,S=new Set(Object.keys(dR)),x=({yarnPath:ae,ignorePath:de,injectEnvironmentFiles:Ae})=>({yarnPath:ae,ignorePath:de,injectEnvironmentFiles:Ae}),I=({yarnPath:ae,ignorePath:de,injectEnvironmentFiles:Ae,...Ce})=>{let Ee={};for(let[g,Se]of Object.entries(Ce))S.has(g)&&(Ee[g]=Se);return Ee},T=({yarnPath:ae,ignorePath:de,...Ae})=>{let Ce={};for(let[Ee,g]of Object.entries(Ae))S.has(Ee)||(Ce[Ee]=g);return Ce};if(f.importSettings(x(dR)),f.useWithSource("",x(c),t,{strict:!1}),E){let[ae,de]=E;f.useWithSource(ae,x(de),C,{strict:!1})}if(a){if(await Ptt({configuration:f,selfPath:a})!==null)return f;f.useWithSource("",{ignorePath:!0},t,{strict:!1,overwrite:!0})}let O=await e.findProjectCwd(t);f.startingCwd=t,f.projectCwd=O;let U=Object.assign(Object.create(null),process.env);f.env=U;let Y=await Promise.all(f.get("injectEnvironmentFiles").map(async ae=>{let de=ae.endsWith("?")?await le.readFilePromise(ae.slice(0,-1),"utf8").catch(()=>""):await le.readFilePromise(ae,"utf8");return(0,SAe.parse)(de)}));for(let ae of Y)for(let[de,Ae]of Object.entries(ae))f.env[de]=Vk(Ae,{env:U});if(f.importSettings(I(dR)),f.useWithSource("",I(c),t,{strict:s}),E){let[ae,de]=E;f.useWithSource(ae,I(de),C,{strict:s})}let te=ae=>"default"in ae?ae.default:ae,ie=new Map([["@@core",Ice]]);if(r!==null)for(let ae of r.plugins.keys())ie.set(ae,te(r.modules.get(ae)));for(let[ae,de]of ie)f.activatePlugin(ae,de);let ue=new Map([]);if(r!==null){let ae=new Map;for(let[Ce,Ee]of r.modules)ae.set(Ce,()=>Ee);let de=new Set,Ae=async(Ce,Ee)=>{let{factory:g,name:Se}=xp(Ce);if(!g||de.has(Se))return;let Be=new Map(ae),me=X=>{if((0,DAe.isBuiltin)(X))return xp(X);if(Be.has(X))return Be.get(X)();throw new st(`This plugin cannot access the package referenced via ${X} which is neither a builtin, nor an exposed entry`)},ce=await YE(async()=>te(await g(me)),X=>`${X} (when initializing ${Se}, defined in ${Ee})`);ae.set(Se,()=>ce),de.add(Se),ue.set(Se,ce)};if(c.plugins)for(let Ce of c.plugins.split(";")){let Ee=K.resolve(t,fe.toPortablePath(Ce));await Ae(Ee,"")}for(let{path:Ce,cwd:Ee,data:g}of p)if(n&&Array.isArray(g.plugins))for(let Se of g.plugins){let Be=typeof Se!="string"?Se.path:Se,me=Se?.spec??"",ce=Se?.checksum??"";if(X2.has(me))continue;let X=K.resolve(Ee,fe.toPortablePath(Be));if(!await le.existsPromise(X)){if(!me){let it=jt(f,K.basename(X,".cjs"),gt.NAME),_=jt(f,".gitignore",gt.NAME),tt=jt(f,f.values.get("rcFilename"),gt.NAME),Ne=jt(f,"https://yarnpkg.com/getting-started/qa#which-files-should-be-gitignored",gt.URL);throw new st(`Missing source for the ${it} plugin - please try to remove the plugin from ${tt} then reinstall it manually. This error usually occurs because ${_} is incorrect, check ${Ne} to make sure your plugin folder isn't gitignored.`)}if(!me.match(/^https?:/)){let it=jt(f,K.basename(X,".cjs"),gt.NAME),_=jt(f,f.values.get("rcFilename"),gt.NAME);throw new st(`Failed to recognize the source for the ${it} plugin - please try to delete the plugin from ${_} then reinstall it manually.`)}let De=await VH(me,{configuration:f}),Qe=fs(De);if(ce&&ce!==Qe){let it=jt(f,K.basename(X,".cjs"),gt.NAME),_=jt(f,f.values.get("rcFilename"),gt.NAME),tt=jt(f,`yarn plugin import ${me}`,gt.CODE);throw new st(`Failed to fetch the ${it} plugin from its remote location: its checksum seems to have changed. If this is expected, please remove the plugin from ${_} then run ${tt} to reimport it.`)}await le.mkdirPromise(K.dirname(X),{recursive:!0}),await le.writeFilePromise(X,De)}await Ae(X,Ce)}}for(let[ae,de]of ue)f.activatePlugin(ae,de);if(f.useWithSource("",T(c),t,{strict:s}),E){let[ae,de]=E;f.useWithSource(ae,T(de),C,{strict:s})}return f.get("enableGlobalCache")&&(f.values.set("cacheFolder",`${f.get("globalFolder")}/cache`),f.sources.set("cacheFolder","")),f}static async findRcFiles(t){let r=$H(),s=[],a=t,n=null;for(;a!==n;){n=a;let c=K.join(n,r);if(le.existsSync(c)){let f,p;try{p=await le.readFilePromise(c,"utf8"),f=cs(p)}catch{let h="";throw p?.match(/^\s+(?!-)[^:]+\s+\S+/m)&&(h=" (in particular, make sure you list the colons after each key name)"),new st(`Parse error when loading ${c}; please check it's proper Yaml${h}`)}s.unshift({path:c,cwd:n,data:f})}a=K.dirname(n)}return s}static async findFolderRcFile(t){let r=K.join(t,Er.rc),s;try{s=await le.readFilePromise(r,"utf8")}catch(n){if(n.code==="ENOENT")return null;throw n}let a=cs(s);return{path:r,cwd:t,data:a}}static async findProjectCwd(t){let r=null,s=t,a=null;for(;s!==a;){if(a=s,le.existsSync(K.join(a,Er.lockfile)))return a;le.existsSync(K.join(a,Er.manifest))&&(r=a),s=K.dirname(a)}return r}static async updateConfiguration(t,r,s={}){let a=$H(),n=K.join(t,a),c=le.existsSync(n)?cs(await le.readFilePromise(n,"utf8")):{},f=!1,p;if(typeof r=="function"){try{p=r(c)}catch{p=r({})}if(p===c)return!1}else{p=c;for(let h of Object.keys(r)){let E=c[h],C=r[h],S;if(typeof C=="function")try{S=C(E)}catch{S=C(void 0)}else S=C;E!==S&&(S===e.deleteProperty?delete p[h]:p[h]=S,f=!0)}if(!f)return!1}return await le.changeFilePromise(n,cl(p),{automaticNewlines:!0}),!0}static async addPlugin(t,r){r.length!==0&&await e.updateConfiguration(t,s=>{let a=s.plugins??[];if(a.length===0)return{...s,plugins:r};let n=[],c=[...r];for(let f of a){let p=typeof f!="string"?f.path:f,h=c.find(E=>E.path===p);h?(n.push(h),c=c.filter(E=>E!==h)):n.push(f)}return n.push(...c),{...s,plugins:n}})}static async updateHomeConfiguration(t){let r=hI();return await e.updateConfiguration(r,t)}activatePlugin(t,r){this.plugins.set(t,r),typeof r.configuration<"u"&&this.importSettings(r.configuration)}importSettings(t){for(let[r,s]of Object.entries(t))if(s!=null){if(this.settings.has(r))throw new Error(`Cannot redefine settings "${r}"`);this.settings.set(r,s),this.values.set(r,nj(this,s))}}useWithSource(t,r,s,a){try{this.use(t,r,s,a)}catch(n){throw n.message+=` (in ${jt(this,t,gt.PATH)})`,n}}use(t,r,s,{strict:a=!0,overwrite:n=!1}={}){a=a&&this.get("enableStrictSettings");for(let c of["enableStrictSettings",...Object.keys(r)]){let f=r[c],p=S8(f);if(p&&(t=p),typeof f>"u"||c==="plugins"||t===""&&Itt.has(c))continue;if(c==="rcFilename")throw new st(`The rcFilename settings can only be set via ${`${yR}RC_FILENAME`.toUpperCase()}, not via a rc file`);let h=this.settings.get(c);if(!h){let C=hI(),S=t[0]!=="<"?K.dirname(t):null;if(a&&!(S!==null?C===S:!1))throw new st(`Unrecognized or legacy configuration settings found: ${c} - run "yarn config" to see the list of settings supported in Yarn`);this.invalid.set(c,t);continue}if(this.sources.has(c)&&!(n||h.type==="MAP"||h.isArray&&h.concatenateValues))continue;let E;try{E=rj(this,c,f,h,s)}catch(C){throw C.message+=` in ${jt(this,t,gt.PATH)}`,C}if(c==="enableStrictSettings"&&t!==""){a=E;continue}if(h.type==="MAP"){let C=this.values.get(c);this.values.set(c,new Map(n?[...C,...E]:[...E,...C])),this.sources.set(c,`${this.sources.get(c)}, ${t}`)}else if(h.isArray&&h.concatenateValues){let C=this.values.get(c);this.values.set(c,n?[...C,...E]:[...E,...C]),this.sources.set(c,`${this.sources.get(c)}, ${t}`)}else this.values.set(c,E),this.sources.set(c,t)}}get(t){if(!this.values.has(t))throw new Error(`Invalid configuration key "${t}"`);return this.values.get(t)}getSpecial(t,{hideSecrets:r=!1,getNativePaths:s=!1}){let a=this.get(t),n=this.settings.get(t);if(typeof n>"u")throw new st(`Couldn't find a configuration settings named "${t}"`);return mR(a,n,{hideSecrets:r,getNativePaths:s})}getSubprocessStreams(t,{header:r,prefix:s,report:a}){let n,c,f=le.createWriteStream(t);if(this.get("enableInlineBuilds")){let p=a.createStreamReporter(`${s} ${jt(this,"STDOUT","green")}`),h=a.createStreamReporter(`${s} ${jt(this,"STDERR","red")}`);n=new XH.PassThrough,n.pipe(p),n.pipe(f),c=new XH.PassThrough,c.pipe(h),c.pipe(f)}else n=f,c=f,typeof r<"u"&&n.write(`${r} -`);return{stdout:n,stderr:c}}makeResolver(){let t=[];for(let r of this.plugins.values())for(let s of r.resolvers||[])t.push(new s);return new em([new TQ,new Ii,...t])}makeFetcher(){let t=[];for(let r of this.plugins.values())for(let s of r.fetchers||[])t.push(new s);return new uI([new fI,new AI,...t])}getLinkers(){let t=[];for(let r of this.plugins.values())for(let s of r.linkers||[])t.push(new s);return t}getSupportedArchitectures(){let t=Z2(),r=this.get("supportedArchitectures"),s=r.get("os");s!==null&&(s=s.map(c=>c==="current"?t.os:c));let a=r.get("cpu");a!==null&&(a=a.map(c=>c==="current"?t.cpu:c));let n=r.get("libc");return n!==null&&(n=zl(n,c=>c==="current"?t.libc??zl.skip:c)),{os:s,cpu:a,libc:n}}isInteractive({interactive:t,stdout:r}){return r.isTTY?t??this.get("preferInteractive"):!1}async getPackageExtensions(){if(this.packageExtensions!==null)return this.packageExtensions;this.packageExtensions=new Map;let t=this.packageExtensions,r=(s,a,{userProvided:n=!1}={})=>{if(!dl(s.range))throw new Error("Only semver ranges are allowed as keys for the packageExtensions setting");let c=new Ut;c.load(a,{yamlCompatibilityMode:!0});let f=C2(t,s.identHash),p=[];f.push([s.range,p]);let h={status:"inactive",userProvided:n,parentDescriptor:s};for(let E of c.dependencies.values())p.push({...h,type:"Dependency",descriptor:E});for(let E of c.peerDependencies.values())p.push({...h,type:"PeerDependency",descriptor:E});for(let[E,C]of c.peerDependenciesMeta)for(let[S,x]of Object.entries(C))p.push({...h,type:"PeerDependencyMeta",selector:E,key:S,value:x})};await this.triggerHook(s=>s.registerPackageExtensions,this,r);for(let[s,a]of this.get("packageExtensions"))r(E0(s,!0),Wk(a),{userProvided:!0});return t}normalizeLocator(t){return dl(t.reference)?Ks(t,`${this.get("defaultProtocol")}${t.reference}`):Up.test(t.reference)?Ks(t,`${this.get("defaultProtocol")}${t.reference}`):t}normalizeDependency(t){return dl(t.range)?Mn(t,`${this.get("defaultProtocol")}${t.range}`):Up.test(t.range)?Mn(t,`${this.get("defaultProtocol")}${t.range}`):t}normalizeDependencyMap(t){return new Map([...t].map(([r,s])=>[r,this.normalizeDependency(s)]))}normalizePackage(t,{packageExtensions:r}){let s=x2(t),a=r.get(t.identHash);if(typeof a<"u"){let c=t.version;if(c!==null){for(let[f,p]of a)if(eA(c,f))for(let h of p)switch(h.status==="inactive"&&(h.status="redundant"),h.type){case"Dependency":typeof s.dependencies.get(h.descriptor.identHash)>"u"&&(h.status="active",s.dependencies.set(h.descriptor.identHash,this.normalizeDependency(h.descriptor)));break;case"PeerDependency":typeof s.peerDependencies.get(h.descriptor.identHash)>"u"&&(h.status="active",s.peerDependencies.set(h.descriptor.identHash,h.descriptor));break;case"PeerDependencyMeta":{let E=s.peerDependenciesMeta.get(h.selector);(typeof E>"u"||!Object.hasOwn(E,h.key)||E[h.key]!==h.value)&&(h.status="active",Zl(s.peerDependenciesMeta,h.selector,()=>({}))[h.key]=h.value)}break;default:b4(h)}}}let n=c=>c.scope?`${c.scope}__${c.name}`:`${c.name}`;for(let c of s.peerDependenciesMeta.keys()){let f=Pa(c);s.peerDependencies.has(f.identHash)||s.peerDependencies.set(f.identHash,Mn(f,"*"))}for(let c of s.peerDependencies.values()){if(c.scope==="types")continue;let f=n(c),p=xa("types",f),h=fn(p);s.peerDependencies.has(p.identHash)||s.peerDependenciesMeta.has(h)||s.dependencies.has(p.identHash)||(s.peerDependencies.set(p.identHash,Mn(p,"*")),s.peerDependenciesMeta.set(h,{optional:!0}))}return s.dependencies=new Map(Ys(s.dependencies,([,c])=>hl(c))),s.peerDependencies=new Map(Ys(s.peerDependencies,([,c])=>hl(c))),s}getLimit(t){return Zl(this.limits,t,()=>(0,bAe.default)(this.get(t)))}async triggerHook(t,...r){for(let s of this.plugins.values()){let a=s.hooks;if(!a)continue;let n=t(a);n&&await n(...r)}}async triggerMultipleHooks(t,r){for(let s of r)await this.triggerHook(t,...s)}async reduceHook(t,r,...s){let a=r;for(let n of this.plugins.values()){let c=n.hooks;if(!c)continue;let f=t(c);f&&(a=await f(a,...s))}return a}async firstHook(t,...r){for(let s of this.plugins.values()){let a=s.hooks;if(!a)continue;let n=t(a);if(!n)continue;let c=await n(...r);if(typeof c<"u")return c}return null}}});var qr={};Yt(qr,{EndStrategy:()=>aj,ExecError:()=>IR,PipeError:()=>ev,execvp:()=>zH,pipevp:()=>Gu});function im(e){return e!==null&&typeof e.fd=="number"}function ij(){}function sj(){for(let e of sm)e.kill()}async function Gu(e,t,{cwd:r,env:s=process.env,strict:a=!1,stdin:n=null,stdout:c,stderr:f,end:p=2}){let h=["pipe","pipe","pipe"];n===null?h[0]="ignore":im(n)&&(h[0]=n),im(c)&&(h[1]=c),im(f)&&(h[2]=f);let E=(0,oj.default)(e,t,{cwd:fe.fromPortablePath(r),env:{...s,PWD:fe.fromPortablePath(r)},stdio:h});sm.add(E),sm.size===1&&(process.on("SIGINT",ij),process.on("SIGTERM",sj)),!im(n)&&n!==null&&n.pipe(E.stdin),im(c)||E.stdout.pipe(c,{end:!1}),im(f)||E.stderr.pipe(f,{end:!1});let C=()=>{for(let S of new Set([c,f]))im(S)||S.end()};return new Promise((S,x)=>{E.on("error",I=>{sm.delete(E),sm.size===0&&(process.off("SIGINT",ij),process.off("SIGTERM",sj)),(p===2||p===1)&&C(),x(I)}),E.on("close",(I,T)=>{sm.delete(E),sm.size===0&&(process.off("SIGINT",ij),process.off("SIGTERM",sj)),(p===2||p===1&&I!==0)&&C(),I===0||!a?S({code:lj(I,T)}):x(new ev({fileName:e,code:I,signal:T}))})})}async function zH(e,t,{cwd:r,env:s=process.env,encoding:a="utf8",strict:n=!1}){let c=["ignore","pipe","pipe"],f=[],p=[],h=fe.fromPortablePath(r);typeof s.PWD<"u"&&(s={...s,PWD:h});let E=(0,oj.default)(e,t,{cwd:h,env:s,stdio:c});return E.stdout.on("data",C=>{f.push(C)}),E.stderr.on("data",C=>{p.push(C)}),await new Promise((C,S)=>{E.on("error",x=>{let I=ze.create(r),T=jt(I,e,gt.PATH);S(new _t(1,`Process ${T} failed to spawn`,O=>{O.reportError(1,` ${Zf(I,{label:"Thrown Error",value:Mu(gt.NO_HINT,x.message)})}`)}))}),E.on("close",(x,I)=>{let T=a==="buffer"?Buffer.concat(f):Buffer.concat(f).toString(a),O=a==="buffer"?Buffer.concat(p):Buffer.concat(p).toString(a);x===0||!n?C({code:lj(x,I),stdout:T,stderr:O}):S(new IR({fileName:e,code:x,signal:I,stdout:T,stderr:O}))})})}function lj(e,t){let r=xtt.get(t);return typeof r<"u"?128+r:e??1}function ktt(e,t,{configuration:r,report:s}){s.reportError(1,` ${Zf(r,e!==null?{label:"Exit Code",value:Mu(gt.NUMBER,e)}:{label:"Exit Signal",value:Mu(gt.CODE,t)})}`)}var oj,aj,ev,IR,sm,xtt,gR=Ze(()=>{Dt();oj=et(vU());$2();Tc();kc();aj=(s=>(s[s.Never=0]="Never",s[s.ErrorCode=1]="ErrorCode",s[s.Always=2]="Always",s))(aj||{}),ev=class extends _t{constructor({fileName:t,code:r,signal:s}){let a=ze.create(K.cwd()),n=jt(a,t,gt.PATH);super(1,`Child ${n} reported an error`,c=>{ktt(r,s,{configuration:a,report:c})}),this.code=lj(r,s)}},IR=class extends ev{constructor({fileName:t,code:r,signal:s,stdout:a,stderr:n}){super({fileName:t,code:r,signal:s}),this.stdout=a,this.stderr=n}};sm=new Set;xtt=new Map([["SIGINT",2],["SIGQUIT",3],["SIGKILL",9],["SIGTERM",15]])});function kAe(e){xAe=e}function tv(){return typeof cj>"u"&&(cj=xAe()),cj}var cj,xAe,uj=Ze(()=>{xAe=()=>{throw new Error("Assertion failed: No libzip instance is available, and no factory was configured")}});var QAe=G((CR,Aj)=>{var Qtt=Object.assign({},Ie("fs")),fj=function(){var e=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(e=e||__filename),function(t){t=t||{};var r=typeof t<"u"?t:{},s,a;r.ready=new Promise(function(Je,ot){s=Je,a=ot});var n={},c;for(c in r)r.hasOwnProperty(c)&&(n[c]=r[c]);var f=[],p="./this.program",h=function(Je,ot){throw ot},E=!1,C=!0,S="";function x(Je){return r.locateFile?r.locateFile(Je,S):S+Je}var I,T,O,U;C&&(E?S=Ie("path").dirname(S)+"/":S=__dirname+"/",I=function(ot,St){var lr=Ue(ot);return lr?St?lr:lr.toString():(O||(O=Qtt),U||(U=Ie("path")),ot=U.normalize(ot),O.readFileSync(ot,St?null:"utf8"))},T=function(ot){var St=I(ot,!0);return St.buffer||(St=new Uint8Array(St)),Se(St.buffer),St},process.argv.length>1&&(p=process.argv[1].replace(/\\/g,"/")),f=process.argv.slice(2),h=function(Je){process.exit(Je)},r.inspect=function(){return"[Emscripten Module object]"});var Y=r.print||console.log.bind(console),te=r.printErr||console.warn.bind(console);for(c in n)n.hasOwnProperty(c)&&(r[c]=n[c]);n=null,r.arguments&&(f=r.arguments),r.thisProgram&&(p=r.thisProgram),r.quit&&(h=r.quit);var ie=0,ue=function(Je){ie=Je},ae;r.wasmBinary&&(ae=r.wasmBinary);var de=r.noExitRuntime||!0;typeof WebAssembly!="object"&&ns("no native wasm support detected");function Ae(Je,ot,St){switch(ot=ot||"i8",ot.charAt(ot.length-1)==="*"&&(ot="i32"),ot){case"i1":return je[Je>>0];case"i8":return je[Je>>0];case"i16":return gh((Je>>1)*2);case"i32":return ao((Je>>2)*4);case"i64":return ao((Je>>2)*4);case"float":return hf((Je>>2)*4);case"double":return hh((Je>>3)*8);default:ns("invalid type for getValue: "+ot)}return null}var Ce,Ee=!1,g;function Se(Je,ot){Je||ns("Assertion failed: "+ot)}function Be(Je){var ot=r["_"+Je];return Se(ot,"Cannot call unknown function "+Je+", make sure it is exported"),ot}function me(Je,ot,St,lr,ee){var ye={string:function(qi){var Fn=0;if(qi!=null&&qi!==0){var Ja=(qi.length<<2)+1;Fn=Bi(Ja),it(qi,Fn,Ja)}return Fn},array:function(qi){var Fn=Bi(qi.length);return Ne(qi,Fn),Fn}};function Oe(qi){return ot==="string"?De(qi):ot==="boolean"?!!qi:qi}var mt=Be(Je),Et=[],bt=0;if(lr)for(var tr=0;tr=St)&&Re[lr];)++lr;return X.decode(Re.subarray(Je,lr))}function Qe(Je,ot,St,lr){if(!(lr>0))return 0;for(var ee=St,ye=St+lr-1,Oe=0;Oe=55296&&mt<=57343){var Et=Je.charCodeAt(++Oe);mt=65536+((mt&1023)<<10)|Et&1023}if(mt<=127){if(St>=ye)break;ot[St++]=mt}else if(mt<=2047){if(St+1>=ye)break;ot[St++]=192|mt>>6,ot[St++]=128|mt&63}else if(mt<=65535){if(St+2>=ye)break;ot[St++]=224|mt>>12,ot[St++]=128|mt>>6&63,ot[St++]=128|mt&63}else{if(St+3>=ye)break;ot[St++]=240|mt>>18,ot[St++]=128|mt>>12&63,ot[St++]=128|mt>>6&63,ot[St++]=128|mt&63}}return ot[St]=0,St-ee}function it(Je,ot,St){return Qe(Je,Re,ot,St)}function _(Je){for(var ot=0,St=0;St=55296&&lr<=57343&&(lr=65536+((lr&1023)<<10)|Je.charCodeAt(++St)&1023),lr<=127?++ot:lr<=2047?ot+=2:lr<=65535?ot+=3:ot+=4}return ot}function tt(Je){var ot=_(Je)+1,St=qa(ot);return St&&Qe(Je,je,St,ot),St}function Ne(Je,ot){je.set(Je,ot)}function ke(Je,ot){return Je%ot>0&&(Je+=ot-Je%ot),Je}var be,je,Re,ct,Me,P,w,b,y,F;function z(Je){be=Je,r.HEAP_DATA_VIEW=F=new DataView(Je),r.HEAP8=je=new Int8Array(Je),r.HEAP16=ct=new Int16Array(Je),r.HEAP32=P=new Int32Array(Je),r.HEAPU8=Re=new Uint8Array(Je),r.HEAPU16=Me=new Uint16Array(Je),r.HEAPU32=w=new Uint32Array(Je),r.HEAPF32=b=new Float32Array(Je),r.HEAPF64=y=new Float64Array(Je)}var Z=r.INITIAL_MEMORY||16777216,$,se=[],xe=[],Fe=[],ut=!1;function Ct(){if(r.preRun)for(typeof r.preRun=="function"&&(r.preRun=[r.preRun]);r.preRun.length;)Pt(r.preRun.shift());Ns(se)}function qt(){ut=!0,Ns(xe)}function ir(){if(r.postRun)for(typeof r.postRun=="function"&&(r.postRun=[r.postRun]);r.postRun.length;)Pr(r.postRun.shift());Ns(Fe)}function Pt(Je){se.unshift(Je)}function dn(Je){xe.unshift(Je)}function Pr(Je){Fe.unshift(Je)}var Ir=0,Or=null,on=null;function li(Je){Ir++,r.monitorRunDependencies&&r.monitorRunDependencies(Ir)}function So(Je){if(Ir--,r.monitorRunDependencies&&r.monitorRunDependencies(Ir),Ir==0&&(Or!==null&&(clearInterval(Or),Or=null),on)){var ot=on;on=null,ot()}}r.preloadedImages={},r.preloadedAudios={};function ns(Je){r.onAbort&&r.onAbort(Je),Je+="",te(Je),Ee=!0,g=1,Je="abort("+Je+"). Build with -s ASSERTIONS=1 for more info.";var ot=new WebAssembly.RuntimeError(Je);throw a(ot),ot}var so="data:application/octet-stream;base64,";function Do(Je){return Je.startsWith(so)}var ji="data:application/octet-stream;base64,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QCAAKAJIIgEgASADaiADEAcaAkAgAyAAKAJsIgFNBEAgACABIANrNgJsDAELIABCADcCbAsgACAAKAJoIANrIgE2AmggACAAKAJYIANrNgJYIAEgACgChC5JBEAgACABNgKELgsgAEH8gAEoAgARAwAgAiADaiECCwJAIAAoAgAiASgCBCIERQ0AIAAoAjwhBSAAIAIgBCACIARJGyICBH8gACgCSCAAKAJoaiAFaiEFIAEgBCACazYCBAJAAkACQAJAIAEoAhwiBCgCFEEBaw4CAQACCyAEQaABaiAFIAEoAgAgAkHcgAEoAgARCAAMAgsgASABKAIwIAUgASgCACACQcSAASgCABEEADYCMAwBCyAFIAEoAgAgAhAHGgsgASABKAIAIAJqNgIAIAEgASgCCCACajYCCCAAKAI8BSAFCyACaiICNgI8AkAgACgChC4iASACakEDSQ0AIAAoAmggAWshAQJAIAAoAnRBgQhPBEAgACAAIAAoAkggAWoiAi0AACACLQABIAAoAnwRAAA2AlQMAQsgAUUNACAAIAFBAWsgACgChAERAgAaCyAAKAKELiAAKAI8IgJBAUZrIgRFDQAgACABIAQgACgCgAERBQAgACAAKAKELiAEazYChC4gACgCPCECCyACQYUCSw0AIAAoAgAoAgRFDQAgACgCMCEBDAELCwJAIAAoAkQiAiAAKAJAIgNNDQAgAAJ/IAAoAjwgACgCaGoiASADSwRAIAAoAkggAWpBACACIAFrIgNBggIgA0GCAkkbIgMQGSABIANqDAELIAFBggJqIgEgA00NASAAKAJIIANqQQAgAiADayICIAEgA2siAyACIANJGyIDEBkgACgCQCADags2AkALC50CAQF/AkAgAAJ/IAAoAqAuIgFBwABGBEAgACgCBCAAKAIQaiAAKQOYLjcAACAAQgA3A5guIAAgACgCEEEIajYCEEEADAELIAFBIE4EQCAAKAIEIAAoAhBqIAApA5guPgAAIAAgAEGcLmo1AgA3A5guIAAgACgCEEEEajYCECAAIAAoAqAuQSBrIgE2AqAuCyABQRBOBEAgACgCBCAAKAIQaiAAKQOYLj0AACAAIAAoAhBBAmo2AhAgACAAKQOYLkIQiDcDmC4gACAAKAKgLkEQayIBNgKgLgsgAUEISA0BIAAgACgCECIBQQFqNgIQ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KAJUIgEEfyABQQAgARAiEBkgACgCVAVBAAsQBiAAQQA2AlQLC9wMAgl/AX4jAEFAaiIGJAACQAJAAkACQAJAIAEoAjBBABAjIgVBAkZBACABKAI4QQAQIyIEQQFGGw0AIAVBAUZBACAEQQJGGw0AIAVBAkciAw0BIARBAkcNAQsgASABLwEMQYAQcjsBDEEAIQMMAQsgASABLwEMQf/vA3E7AQxBACEFIANFBEBB9eABIAEoAjAgAEEIahBpIgVFDQILIAJBgAJxBEAgBSEDDAELIARBAkcEQCAFIQMMAQtB9cYBIAEoAjggAEEIahBpIgNFBEAgBRAcDAILIAMgBTYCAAsgASABLwEMQf7/A3EgAS8BUiIFQQBHcjsBDAJAAkACQAJAAn8CQAJAIAEpAyhC/v///w9WDQAgASkDIEL+////D1YNACACQYAEcUUNASABKQNIQv////8PVA0BCyAFQYECa0H//wNxQQNJIQdBAQwBCyAFQYECa0H//wNxIQQgAkGACnFBgApHDQEgBEEDSSEHQQALIQkgBkIcEBciBEUEQCAAQQhqIgAEQCAAQQA2AgQgAEEONgIACyADEBwMBQsgAkGACHEhBQJAAkAgAkGAAnEEQAJAIAUNACABKQMgQv////8PVg0AIAEpAyhCgICAgBBUDQMLIAQgASkDKBAYIAEpAyAhDAwBCwJAAkACQCAFDQAgASkDIEL/////D1YNACABKQMoIgxC/////w9WDQEgASkDSEKAgICAEFQNBAsgASkDKCIMQv////8PVA0BCyAEIAwQGAsgASkDICIMQv////8PWgRAIAQgDBAYCyABKQNIIgxC/////w9UDQELIAQgDBAYCyAELQAARQRAIABBCGoiAARAIABBADYCBCAAQRQ2AgALIAQQCCADEBwMBQtBASEKQQEgBC0AAAR+IAQpAxAFQgALp0H//wNxIAYQRyEFIAQQCCAFIAM2AgAgBw0BDAILIAMhBSAEQQJLDQELIAZCBxAXIgRFBEAgAEEIaiIABEAgAEEANgIEIABBDjYCAAsgBRAcDAMLIARBAhANIARBhxJBAhAsIAQgAS0AUhBwIAQgAS8BEBANIAQtAABFBEAgAEEIaiIABEAgAEEANgIEIABBFDYCAAsgBBAIDAILQYGyAkEHIAYQRyEDIAQQCCADIAU2AgBBASELIAMhBQsgBkIuEBciA0UEQCAAQQhqIgAEQCAAQQA2AgQgAEEONgIACyAFEBwMAgsgA0GjEkGoEiACQYACcSIHG0EEECwgB0UEQCADIAkEf0EtBSABLwEIC0H//wNxEA0LIAMgCQR/QS0FIAEvAQoLQf//A3EQDSADIAEvAQwQDSADIAsEf0HjAAUgASgCEAtB//8DcRANIAYgASgCFDYCPAJ/IAZBPGoQjQEiCEUEQEEAIQlBIQwBCwJ/IAgoAhQiBEHQAE4EQCAEQQl0DAELIAhB0AA2AhRBgMACCyEEIAgoAgRBBXQgCCgCCEELdGogCCgCAEEBdmohCSAIKAIMIAQgCCgCEEEFdGpqQaDAAWoLIQQgAyAJQf//A3EQDSADIARB//8DcRANIAMCfyALBEBBACABKQMoQhRUDQEaCyABKAIYCxASIAEpAyAhDCADAn8gAwJ/AkAgBwRAIAxC/v///w9YBEAgASkDKEL/////D1QNAgsgA0F/EBJBfwwDC0F/IAxC/v///w9WDQEaCyAMpwsQEiABKQMoIgxC/////w8gDEL/////D1QbpwsQEiADIAEoAjAiBAR/IAQvAQQFQQALQf//A3EQDSADIAEoAjQgAhBsIAVBgAYQbGpB//8DcRANIAdFBEAgAyABKAI4IgQEfyAELwEEBUEAC0H//wNxEA0gAyABLwE8EA0gAyABLwFAEA0gAyABKAJEEBIgAyABKQNIIgxC/////w8gDEL/////D1QbpxASCyADLQAARQRAIABBCGoiAARAIABBADYCBCAAQRQ2AgALIAMQCCAFEBwMAgsgACAGIAMtAAAEfiADKQMQBUIACxAbIQQgAxAIIARBf0wNACABKAIwIgMEQCAAIAMQYUF/TA0BCyAFBEAgACAFQYAGEGtBf0wNAQsgBRAcIAEoAjQiBQRAIAAgBSACEGtBAEgNAgsgBw0CIAEoAjgiAUUNAiAAIAEQYUEATg0CDAELIAUQHAtBfyEKCyAGQUBrJAAgCgtNAQJ/IAEtAAAhAgJAIAAtAAAiA0UNACACIANHDQADQCABLQABIQIgAC0AASIDRQ0BIAFBAWohASAAQQFqIQAgAiADRg0ACwsgAyACawvcAwICfgF/IAOtIQQgACkDmC4hBQJAIAACfyAAAn4gACgCoC4iBkEDaiIDQT9NBEAgBCAGrYYgBYQMAQsgBkHAAEYEQCAAKAIEIAAoAhBqIAU3AAAgACgCEEEIagwCCyAAKAIEIAAoAhBqIAQgBq2GIAWENwAAIAAgACgCEEEIajYCECAGQT1rIQMgBEHAACAGa62ICyIENwOYLiAAIAM2AqAuIANBOU4EQCAAKAIEIAAoAhBqIAQ3AAAgACAAKAIQQQhqNgIQDAILIANBGU4EQCAAKAIEIAAoAhBqIAQ+AAAgACAAKAIQQQRqNgIQIAAgACkDmC5CIIgiBDcDmC4gACAAKAKgLkEgayIDNgKgLgsgA0EJTgR/IAAoAgQgACgCEGogBD0AACAAIAAoAhBBAmo2AhAgACkDmC5CEIghBCAAKAKgLkEQawUgAwtBAUgNASAAKAIQCyIDQQFqNgIQIAAoAgQgA2ogBDwAAAsgAEEANgKgLiAAQgA3A5guIAAoAgQgACgCEGogAjsAACAAIAAoAhBBAmoiAzYCECAAKAIEIANqIAJBf3M7AAAgACAAKAIQQQJqIgM2AhAgAgRAIAAoAgQgA2ogASACEAcaIAAgACgCECACajYCEAsLrAQCAX8BfgJAIAANACABUA0AIAMEQCADQQA2AgQgA0ESNgIAC0EADwsCQAJAIAAgASACIAMQiQEiBEUNAEEYEAkiAkUEQCADBEAgA0EANgIEIANBDjYCAAsCQCAEKAIoIgBFBEAgBCkDGCEBDAELIABBADYCKCAEKAIoQgA3AyAgBCAEKQMYIgUgBCkDICIBIAEgBVQbIgE3AxgLIAQpAwggAVYEQANAIAQoAgAgAadBBHRqKAIAEAYgAUIBfCIBIAQpAwhUDQALCyAEKAIAEAYgBCgCBBAGIAQQBgwBCyACQQA2AhQgAiAENgIQIAJBABABNgIMIAJBADYCCCACQgA3AgACf0E4EAkiAEUEQCADBEAgA0EANgIEIANBDjYCAAtBAAwBCyAAQQA2AgggAEIANwMAIABCADcDICAAQoCAgIAQNwIsIABBADoAKCAAQQA2AhQgAEIANwIMIABBADsBNCAAIAI2AgggAEEkNgIEIABCPyACQQBCAEEOQSQRDAAiASABQgBTGzcDGCAACyIADQEgAigCECIDBEACQCADKAIoIgBFBEAgAykDGCEBDAELIABBADYCKCADKAIoQgA3AyAgAyADKQMYIgUgAykDICIBIAEgBVQbIgE3AxgLIAMpAwggAVYEQANAIAMoAgAgAadBBHRqKAIAEAYgAUIBfCIBIAMpAwhUDQALCyADKAIAEAYgAygCBBAGIAMQBgsgAhAGC0EAIQALIAALiwwBBn8gACABaiEFAkACQCAAKAIEIgJBAXENACACQQNxRQ0BIAAoAgAiAiABaiEBAkAgACACayIAQciEASgCAEcEQCACQf8BTQRAIAAoAggiBCACQQN2IgJBA3RB3IQBakYaIAAoAgwiAyAERw0CQbSEAUG0hAEoAgBBfiACd3E2AgAMAwsgACgCGCEGAkAgACAAKAIMIgNHBEAgACgCCCICQcSEASgCAEkaIAIgAzYCDCADIAI2AggMAQsCQCAAQRRqIgIoAgAiBA0AIABBEGoiAigCACIEDQBBACEDDAELA0AgAiEHIAQiA0EUaiICKAIAIgQNACADQRBqIQIgAygCECIEDQALIAdBADYCAAsgBkUNAgJAIAAgACgCHCIEQQJ0QeSGAWoiAigCAEYEQCACIAM2AgAgAw0BQbiEAUG4hAEoAgBBfiAEd3E2AgAMBAsgBkEQQRQgBigCECAARhtqIAM2AgAgA0UNAwsgAyAGNgIYIAAoAhAiAgRAIAMgAjYCECACIAM2AhgLIAAoAhQiAkUNAiADIAI2AhQgAiADNgIYDAILIAUoAgQiAkEDcUEDRw0BQbyEASABNgIAIAUgAkF+cTYCBCAAIAFBAXI2AgQgBSABNgIADwsgBCADNgIMIAMgBDYCCAsCQCAFKAIEIgJBAnFFBEAgBUHMhAEoAgBGBEBBzIQBIAA2AgBBwIQBQcCEASgCACABaiIBNgIAIAAgAUEBcjYCBCAAQciEASgCAEcNA0G8hAFBADYCAEHIhAFBADYCAA8LIAVByIQBKAIARgRAQciEASAANgIAQbyEAUG8hAEoAgAgAWoiATYCACAAIAFBAXI2AgQgACABaiABNgIADwsgAkF4cSABaiEBAkAgAkH/AU0EQCAFKAIIIgQgAkEDdiICQQN0QdyEAWpGGiAEIAUoAgwiA0YEQEG0hAFBtIQBKAIAQX4gAndxNgIADAILIAQgAzYCDCADIAQ2AggMAQsgBSgCGCEGAkAgBSAFKAIMIgNHBEAgBSgCCCICQcSEASgCAEkaIAIgAzYCDCADIAI2AggMAQsCQCAFQRRqIgQoAgAiAg0AIAVBEGoiBCgCACICDQBBACEDDAELA0AgBCEHIAIiA0EUaiIEKAIAIgINACADQRBqIQQgAygCECICDQALIAdBADYCAAsgBkUNAAJAIAUgBSgCHCIEQQJ0QeSGAWoiAigCAEYEQCACIAM2AgAgAw0BQbiEAUG4hAEoAgBBfiAEd3E2AgAMAgsgBkEQQRQgBigCECAFRhtqIAM2AgAgA0UNAQsgAyAGNgIYIAUoAhAiAgRAIAMgAjYCECACIAM2AhgLIAUoAhQiAkUNACADIAI2AhQgAiADNgIYCyAAIAFBAXI2AgQgACABaiABNgIAIABByIQBKAIARw0BQbyEASABNgIADwsgBSACQX5xNgIEIAAgAUEBcjYCBCAAIAFqIAE2AgALIAFB/wFNBEAgAUEDdiICQQN0QdyEAWohAQJ/QbSEASgCACIDQQEgAnQiAnFFBEBBtIQBIAIgA3I2AgAgAQwBCyABKAIICyECIAEgADYCCCACIAA2AgwgACABNgIMIAAgAjYCCA8LQR8hAiAAQgA3AhAgAUH///8HTQRAIAFBCHYiAiACQYD+P2pBEHZBCHEiBHQiAiACQYDgH2pBEHZBBHEiA3QiAiACQYCAD2pBEHZBAnEiAnRBD3YgAyAEciACcmsiAkEBdCABIAJBFWp2QQFxckEcaiECCyAAIAI2AhwgAkECdEHkhgFqIQcCQAJAQbiEASgCACIEQQEgAnQiA3FFBEBBuIQBIAMgBHI2AgAgByAANgIAIAAgBzYCGAwBCyABQQBBGSACQQF2ayACQR9GG3QhAiAHKAIAIQMDQCADIgQoAgRBeHEgAUYNAiACQR12IQMgAkEBdCECIAQgA0EEcWoiB0EQaigCACIDDQALIAcgADYCECAAIAQ2AhgLIAAgADYCDCAAIAA2AggPCyAEKAIIIgEgADYCDCAEIAA2AgggAEEANgIYIAAgBDYCDCAAIAE2AggLC1gCAX8BfgJAAn9BACAARQ0AGiAArUIChiICpyIBIABBBHJBgIAESQ0AGkF/IAEgAkIgiKcbCyIBEAkiAEUNACAAQQRrLQAAQQNxRQ0AIABBACABEBkLIAALQwEDfwJAIAJFDQADQCAALQAAIgQgAS0AACIFRgRAIAFBAWohASAAQQFqIQAgAkEBayICDQEMAgsLIAQgBWshAwsgAwsUACAAEEAgACgCABAgIAAoAgQQIAutBAIBfgV/IwBBEGsiBCQAIAAgAWshBgJAAkAgAUEBRgRAIAAgBi0AACACEBkMAQsgAUEJTwRAIAAgBikAADcAACAAIAJBAWtBB3FBAWoiBWohACACIAVrIgFFDQIgBSAGaiECA0AgACACKQAANwAAIAJBCGohAiAAQQhqIQAgAUEIayIBDQALDAILAkACQAJAAkAgAUEEaw4FAAICAgECCyAEIAYoAAAiATYCBCAEIAE2AgAMAgsgBCAGKQAANwMADAELQQghByAEQQhqIQgDQCAIIAYgByABIAEgB0sbIgUQByAFaiEIIAcgBWsiBw0ACyAEIAQpAwg3AwALAkAgBQ0AIAJBEEkNACAEKQMAIQMgAkEQayIGQQR2QQFqQQdxIgEEQANAIAAgAzcACCAAIAM3AAAgAkEQayECIABBEGohACABQQFrIgENAAsLIAZB8ABJDQADQCAAIAM3AHggACADNwBwIAAgAzcAaCAAIAM3AGAgACADNwBYIAAgAzcAUCAAIAM3AEggACADNwBAIAAgAzcAOCAAIAM3ADAgACADNwAoIAAgAzcAICAAIAM3ABggACADNwAQIAAgAzcACCAAIAM3AAAgAEGAAWohACACQYABayICQQ9LDQALCyACQQhPBEBBCCAFayEBA0AgACAEKQMANwAAIAAgAWohACACIAFrIgJBB0sNAAsLIAJFDQEgACAEIAIQBxoLIAAgAmohAAsgBEEQaiQAIAALXwECfyAAKAIIIgEEQCABEAsgAEEANgIICwJAIAAoAgQiAUUNACABKAIAIgJBAXFFDQAgASgCEEF+Rw0AIAEgAkF+cSICNgIAIAINACABECAgAEEANgIECyAAQQA6AAwL1wICBH8BfgJAAkAgACgCQCABp0EEdGooAgAiA0UEQCACBEAgAkEANgIEIAJBFDYCAAsMAQsgACgCACADKQNIIgdBABAUIQMgACgCACEAIANBf0wEQCACBEAgAiAAKAIMNgIAIAIgACgCEDYCBAsMAQtCACEBIwBBEGsiBiQAQX8hAwJAIABCGkEBEBRBf0wEQCACBEAgAiAAKAIMNgIAIAIgACgCEDYCBAsMAQsgAEIEIAZBCmogAhAtIgRFDQBBHiEAQQEhBQNAIAQQDCAAaiEAIAVBAkcEQCAFQQFqIQUMAQsLIAQtAAAEfyAEKQMQIAQpAwhRBUEAC0UEQCACBEAgAkEANgIEIAJBFDYCAAsgBBAIDAELIAQQCCAAIQMLIAZBEGokACADIgBBAEgNASAHIACtfCIBQn9VDQEgAgRAIAJBFjYCBCACQQQ2AgALC0IAIQELIAELYAIBfgF/AkAgAEUNACAAQQhqEF8iAEUNACABIAEoAjBBAWo2AjAgACADNgIIIAAgAjYCBCAAIAE2AgAgAEI/IAEgA0EAQgBBDiACEQoAIgQgBEIAUxs3AxggACEFCyAFCyIAIAAoAiRBAWtBAU0EQCAAQQBCAEEKEA4aIABBADYCJAsLbgACQAJAAkAgA0IQVA0AIAJFDQECfgJAAkACQCACKAIIDgMCAAEECyACKQMAIAB8DAILIAIpAwAgAXwMAQsgAikDAAsiA0IAUw0AIAEgA1oNAgsgBARAIARBADYCBCAEQRI2AgALC0J/IQMLIAMLggICAX8CfgJAQQEgAiADGwRAIAIgA2oQCSIFRQRAIAQEQCAEQQA2AgQgBEEONgIAC0EADwsgAq0hBgJAAkAgAARAIAAgBhATIgBFBEAgBARAIARBADYCBCAEQQ42AgALDAULIAUgACACEAcaIAMNAQwCCyABIAUgBhARIgdCf1cEQCAEBEAgBCABKAIMNgIAIAQgASgCEDYCBAsMBAsgBiAHVQRAIAQEQCAEQQA2AgQgBEERNgIACwwECyADRQ0BCyACIAVqIgBBADoAACACQQFIDQAgBSECA0AgAi0AAEUEQCACQSA6AAALIAJBAWoiAiAASQ0ACwsLIAUPCyAFEAZBAAuBAQEBfwJAIAAEQCADQYAGcSEFQQAhAwNAAkAgAC8BCCACRw0AIAUgACgCBHFFDQAgA0EATg0DIANBAWohAwsgACgCACIADQALCyAEBEAgBEEANgIEIARBCTYCAAtBAA8LIAEEQCABIAAvAQo7AQALIAAvAQpFBEBBwBQPCyAAKAIMC1cBAX9BEBAJIgNFBEBBAA8LIAMgATsBCiADIAA7AQggA0GABjYCBCADQQA2AgACQCABBEAgAyACIAEQYyIANgIMIAANASADEAZBAA8LIANBADYCDAsgAwvuBQIEfwV+IwBB4ABrIgQkACAEQQhqIgNCADcDICADQQA2AhggA0L/////DzcDECADQQA7AQwgA0G/hig2AgggA0EBOgAGIANBADsBBCADQQA2AgAgA0IANwNIIANBgIDYjXg2AkQgA0IANwMoIANCADcDMCADQgA3AzggA0FAa0EAOwEAIANCADcDUCABKQMIUCIDRQRAIAEoAgAoAgApA0ghBwsCfgJAIAMEQCAHIQkMAQsgByEJA0AgCqdBBHQiBSABKAIAaigCACIDKQNIIgggCSAIIAlUGyIJIAEpAyBWBEAgAgRAIAJBADYCBCACQRM2AgALQn8MAwsgAygCMCIGBH8gBi8BBAVBAAtB//8Dca0gCCADKQMgfHxCHnwiCCAHIAcgCFQbIgcgASkDIFYEQCACBEAgAkEANgIEIAJBEzYCAAtCfwwDCyAAKAIAIAEoAgAgBWooAgApA0hBABAUIQYgACgCACEDIAZBf0wEQCACBEAgAiADKAIMNgIAIAIgAygCEDYCBAtCfwwDCyAEQQhqIANBAEEBIAIQaEJ/UQRAIARBCGoQNkJ/DAMLAkACQCABKAIAIAVqKAIAIgMvAQogBC8BEkkNACADKAIQIAQoAhhHDQAgAygCFCAEKAIcRw0AIAMoAjAgBCgCOBBiRQ0AAkAgBCgCICIGIAMoAhhHBEAgBCkDKCEIDAELIAMpAyAiCyAEKQMoIghSDQAgCyEIIAMpAyggBCkDMFENAgsgBC0AFEEIcUUNACAGDQAgCEIAUg0AIAQpAzBQDQELIAIEQCACQQA2AgQgAkEVNgIACyAEQQhqEDZCfwwDCyABKAIAIAVqKAIAKAI0IAQoAjwQbyEDIAEoAgAgBWooAgAiBUEBOgAEIAUgAzYCNCAEQQA2AjwgBEEIahA2IApCAXwiCiABKQMIVA0ACwsgByAJfSIHQv///////////wAgB0L///////////8AVBsLIQcgBEHgAGokACAHC8YBAQJ/QdgAEAkiAUUEQCAABEAgAEEANgIEIABBDjYCAAtBAA8LIAECf0EYEAkiAkUEQCAABEAgAEEANgIEIABBDjYCAAtBAAwBCyACQQA2AhAgAkIANwMIIAJBADYCACACCyIANgJQIABFBEAgARAGQQAPCyABQgA3AwAgAUEANgIQIAFCADcCCCABQgA3AhQgAUEANgJUIAFCADcCHCABQgA3ACEgAUIANwMwIAFCADcDOCABQUBrQgA3AwAgAUIANwNIIAELgBMCD38CfiMAQdAAayIFJAAgBSABNgJMIAVBN2ohEyAFQThqIRBBACEBA0ACQCAOQQBIDQBB/////wcgDmsgAUgEQEGEhAFBPTYCAEF/IQ4MAQsgASAOaiEOCyAFKAJMIgchAQJAAkACQAJAAkACQAJAAkAgBQJ/AkAgBy0AACIGBEADQAJAAkAgBkH/AXEiBkUEQCABIQYMAQsgBkElRw0BIAEhBgNAIAEtAAFBJUcNASAFIAFBAmoiCDYCTCAGQQFqIQYgAS0AAiEMIAghASAMQSVGDQALCyAGIAdrIQEgAARAIAAgByABEC4LIAENDSAFKAJMIQEgBSgCTCwAAUEwa0EKTw0DIAEtAAJBJEcNAyABLAABQTBrIQ9BASERIAFBA2oMBAsgBSABQQFqIgg2AkwgAS0AASEGIAghAQwACwALIA4hDSAADQggEUUNAkEBIQEDQCAEIAFBAnRqKAIAIgAEQCADIAFBA3RqIAAgAhB4QQEhDSABQQFqIgFBCkcNAQwKCwtBASENIAFBCk8NCANAIAQgAUECdGooAgANCCABQQFqIgFBCkcNAAsMCAtBfyEPIAFBAWoLIgE2AkxBACEIAkAgASwAACIKQSBrIgZBH0sNAEEBIAZ0IgZBidEEcUUNAANAAkAgBSABQQFqIgg2AkwgASwAASIKQSBrIgFBIE8NAEEBIAF0IgFBidEEcUUNACABIAZyIQYgCCEBDAELCyAIIQEgBiEICwJAIApBKkYEQCAFAn8CQCABLAABQTBrQQpPDQAgBSgCTCIBLQACQSRHDQAgASwAAUECdCAEakHAAWtBCjYCACABLAABQQN0IANqQYADaygCACELQQEhESABQQNqDAELIBENCEEAIRFBACELIAAEQCACIAIoAgAiAUEEajYCACABKAIAIQsLIAUoAkxBAWoLIgE2AkwgC0F/Sg0BQQAgC2shCyAIQYDAAHIhCAwBCyAFQcwAahB3IgtBAEgNBiAFKAJMIQELQX8hCQJAIAEtAABBLkcNACABLQABQSpGBEACQCABLAACQTBrQQpPDQAgBSgCTCIBLQADQSRHDQAgASwAAkECdCAEakHAAWtBCjYCACABLAACQQN0IANqQYADaygCACEJIAUgAUEEaiIBNgJMDAILIBENByAABH8gAiACKAIAIgFBBGo2AgAgASgCAAVBAAshCSAFIAUoAkxBAmoiATYCTAwBCyAFIAFBAWo2AkwgBUHMAGoQdyEJIAUoAkwhAQtBACEGA0AgBiESQX8hDSABLAAAQcEAa0E5Sw0HIAUgAUEBaiIKNgJMIAEsAAAhBiAKIQEgBiASQTpsakGf7ABqLQAAIgZBAWtBCEkNAAsgBkETRg0CIAZFDQYgD0EATgRAIAQgD0ECdGogBjYCACAFIAMgD0EDdGopAwA3A0AMBAsgAA0BC0EAIQ0MBQsgBUFAayAGIAIQeCAFKAJMIQoMAgsgD0F/Sg0DC0EAIQEgAEUNBAsgCEH//3txIgwgCCAIQYDAAHEbIQZBACENQaQIIQ8gECEIAkACQAJAAn8CQAJAAkACQAJ/AkACQAJAAkACQAJAAkAgCkEBaywAACIBQV9xIAEgAUEPcUEDRhsgASASGyIBQdgAaw4hBBISEhISEhISDhIPBg4ODhIGEhISEgIFAxISCRIBEhIEAAsCQCABQcEAaw4HDhILEg4ODgALIAFB0wBGDQkMEQsgBSkDQCEUQaQIDAULQQAhAQJAAkACQAJAAkACQAJAIBJB/wFxDggAAQIDBBcFBhcLIAUoAkAgDjYCAAwWCyAFKAJAIA42AgAMFQsgBSgCQCAOrDcDAAwUCyAFKAJAIA47AQAMEwsgBSgCQCAOOgAADBILIAUoAkAgDjYCAAwRCyAFKAJAIA6sNwMADBALIAlBCCAJQQhLGyEJIAZBCHIhBkH4ACEBCyAQIQcgAUEgcSEMIAUpA0AiFFBFBEADQCAHQQFrIgcgFKdBD3FBsPAAai0AACAMcjoAACAUQg9WIQogFEIEiCEUIAoNAAsLIAUpA0BQDQMgBkEIcUUNAyABQQR2QaQIaiEPQQIhDQwDCyAQIQEgBSkDQCIUUEUEQANAIAFBAWsiASAUp0EHcUEwcjoAACAUQgdWIQcgFEIDiCEUIAcNAAsLIAEhByAGQQhxRQ0CIAkgECAHayIBQQFqIAEgCUgbIQkMAgsgBSkDQCIUQn9XBEAgBUIAIBR9IhQ3A0BBASENQaQIDAELIAZBgBBxBEBBASENQaUIDAELQaYIQaQIIAZBAXEiDRsLIQ8gECEBAkAgFEKAgICAEFQEQCAUIRUMAQsDQCABQQFrIgEgFCAUQgqAIhVCCn59p0EwcjoAACAUQv////+fAVYhByAVIRQgBw0ACwsgFaciBwRAA0AgAUEBayIBIAcgB0EKbiIMQQpsa0EwcjoAACAHQQlLIQogDCEHIAoNAAsLIAEhBwsgBkH//3txIAYgCUF/ShshBgJAIAUpA0AiFEIAUg0AIAkNAEEAIQkgECEHDAoLIAkgFFAgECAHa2oiASABIAlIGyEJDAkLIAUoAkAiAUGKEiABGyIHQQAgCRB6IgEgByAJaiABGyEIIAwhBiABIAdrIAkgARshCQwICyAJBEAgBSgCQAwCC0EAIQEgAEEgIAtBACAGECcMAgsgBUEANgIMIAUgBSkDQD4CCCAFIAVBCGo2AkBBfyEJIAVBCGoLIQhBACEBAkADQCAIKAIAIgdFDQECQCAFQQRqIAcQeSIHQQBIIgwNACAHIAkgAWtLDQAgCEEEaiEIIAkgASAHaiIBSw0BDAILC0F/IQ0gDA0FCyAAQSAgCyABIAYQJyABRQRAQQAhAQwBC0EAIQggBSgCQCEKA0AgCigCACIHRQ0BIAVBBGogBxB5IgcgCGoiCCABSg0BIAAgBUEEaiAHEC4gCkEEaiEKIAEgCEsNAAsLIABBICALIAEgBkGAwABzECcgCyABIAEgC0gbIQEMBQsgACAFKwNAIAsgCSAGIAFBABEdACEBDAQLIAUgBSkDQDwAN0EBIQkgEyEHIAwhBgwCC0F/IQ0LIAVB0ABqJAAgDQ8LIABBICANIAggB2siDCAJIAkgDEgbIgpqIgggCyAIIAtKGyIBIAggBhAnIAAgDyANEC4gAEEwIAEgCCAGQYCABHMQJyAAQTAgCiAMQQAQJyAAIAcgDBAuIABBICABIAggBkGAwABzECcMAAsAC54DAgR/AX4gAARAIAAoAgAiAQRAIAEQGhogACgCABALCyAAKAIcEAYgACgCIBAQIAAoAiQQECAAKAJQIgMEQCADKAIQIgIEQCADKAIAIgEEfwNAIAIgBEECdGooAgAiAgRAA0AgAigCGCEBIAIQBiABIgINAAsgAygCACEBCyABIARBAWoiBEsEQCADKAIQIQIMAQsLIAMoAhAFIAILEAYLIAMQBgsgACgCQCIBBEAgACkDMFAEfyABBSABED5CAiEFAkAgACkDMEICVA0AQQEhAgNAIAAoAkAgAkEEdGoQPiAFIAApAzBaDQEgBachAiAFQgF8IQUMAAsACyAAKAJACxAGCwJAIAAoAkRFDQBBACECQgEhBQNAIAAoAkwgAkECdGooAgAiAUEBOgAoIAFBDGoiASgCAEUEQCABBEAgAUEANgIEIAFBCDYCAAsLIAUgADUCRFoNASAFpyECIAVCAXwhBQwACwALIAAoAkwQBiAAKAJUIgIEQCACKAIIIgEEQCACKAIMIAERAwALIAIQBgsgAEEIahAxIAAQBgsL6gMCAX4EfwJAIAAEfiABRQRAIAMEQCADQQA2AgQgA0ESNgIAC0J/DwsgAkGDIHEEQAJAIAApAzBQDQBBPEE9IAJBAXEbIQcgAkECcUUEQANAIAAgBCACIAMQUyIFBEAgASAFIAcRAgBFDQYLIARCAXwiBCAAKQMwVA0ADAILAAsDQCAAIAQgAiADEFMiBQRAIAECfyAFECJBAWohBgNAQQAgBkUNARogBSAGQQFrIgZqIggtAABBL0cNAAsgCAsiBkEBaiAFIAYbIAcRAgBFDQULIARCAXwiBCAAKQMwVA0ACwsgAwRAIANBADYCBCADQQk2AgALQn8PC0ESIQYCQAJAIAAoAlAiBUUNACABRQ0AQQkhBiAFKQMIUA0AIAUoAhAgAS0AACIHBH9CpesKIQQgASEAA0AgBCAHrUL/AYN8IQQgAC0AASIHBEAgAEEBaiEAIARC/////w+DQiF+IQQMAQsLIASnBUGFKgsgBSgCAHBBAnRqKAIAIgBFDQADQCABIAAoAgAQOEUEQCACQQhxBEAgACkDCCIEQn9RDQMMBAsgACkDECIEQn9RDQIMAwsgACgCGCIADQALCyADBEAgA0EANgIEIAMgBjYCAAtCfyEECyAEBUJ/Cw8LIAMEQCADQgA3AgALIAQL3AQCB38BfgJAAkAgAEUNACABRQ0AIAJCf1UNAQsgBARAIARBADYCBCAEQRI2AgALQQAPCwJAIAAoAgAiB0UEQEGAAiEHQYACEDwiBkUNASAAKAIQEAYgAEGAAjYCACAAIAY2AhALAkACQCAAKAIQIAEtAAAiBQR/QqXrCiEMIAEhBgNAIAwgBa1C/wGDfCEMIAYtAAEiBQRAIAZBAWohBiAMQv////8Pg0IhfiEMDAELCyAMpwVBhSoLIgYgB3BBAnRqIggoAgAiBQRAA0ACQCAFKAIcIAZHDQAgASAFKAIAEDgNAAJAIANBCHEEQCAFKQMIQn9SDQELIAUpAxBCf1ENBAsgBARAIARBADYCBCAEQQo2AgALQQAPCyAFKAIYIgUNAAsLQSAQCSIFRQ0CIAUgATYCACAFIAgoAgA2AhggCCAFNgIAIAVCfzcDCCAFIAY2AhwgACAAKQMIQgF8Igw3AwggDLogB7hEAAAAAAAA6D+iZEUNACAHQQBIDQAgByAHQQF0IghGDQAgCBA8IgpFDQECQCAMQgAgBxtQBEAgACgCECEJDAELIAAoAhAhCUEAIQQDQCAJIARBAnRqKAIAIgYEQANAIAYoAhghASAGIAogBigCHCAIcEECdGoiCygCADYCGCALIAY2AgAgASIGDQALCyAEQQFqIgQgB0cNAAsLIAkQBiAAIAg2AgAgACAKNgIQCyADQQhxBEAgBSACNwMICyAFIAI3AxBBAQ8LIAQEQCAEQQA2AgQgBEEONgIAC0EADwsgBARAIARBADYCBCAEQQ42AgALQQAL3Q8BF38jAEFAaiIHQgA3AzAgB0IANwM4IAdCADcDICAHQgA3AygCQAJAAkACQAJAIAIEQCACQQNxIQggAkEBa0EDTwRAIAJBfHEhBgNAIAdBIGogASAJQQF0IgxqLwEAQQF0aiIKIAovAQBBAWo7AQAgB0EgaiABIAxBAnJqLwEAQQF0aiIKIAovAQBBAWo7AQAgB0EgaiABIAxBBHJqLwEAQQF0aiIKIAovAQBBAWo7AQAgB0EgaiABIAxBBnJqLwEAQQF0aiIKIAovAQBBAWo7AQAgCUEEaiEJIAZBBGsiBg0ACwsgCARAA0AgB0EgaiABIAlBAXRqLwEAQQF0aiIGIAYvAQBBAWo7AQAgCUEBaiEJIAhBAWsiCA0ACwsgBCgCACEJQQ8hCyAHLwE+IhENAgwBCyAEKAIAIQkLQQ4hC0EAIREgBy8BPA0AQQ0hCyAHLwE6DQBBDCELIAcvATgNAEELIQsgBy8BNg0AQQohCyAHLwE0DQBBCSELIAcvATINAEEIIQsgBy8BMA0AQQchCyAHLwEuDQBBBiELIAcvASwNAEEFIQsgBy8BKg0AQQQhCyAHLwEoDQBBAyELIAcvASYNAEECIQsgBy8BJA0AIAcvASJFBEAgAyADKAIAIgBBBGo2AgAgAEHAAjYBACADIAMoAgAiAEEEajYCACAAQcACNgEAQQEhDQwDCyAJQQBHIRtBASELQQEhCQwBCyALIAkgCSALSxshG0EBIQ5BASEJA0AgB0EgaiAJQQF0ai8BAA0BIAlBAWoiCSALRw0ACyALIQkLQX8hCCAHLwEiIg9BAksNAUEEIAcvASQiECAPQQF0amsiBkEASA0BIAZBAXQgBy8BJiISayIGQQBIDQEgBkEBdCAHLwEoIhNrIgZBAEgNASAGQQF0IAcvASoiFGsiBkEASA0BIAZBAXQgBy8BLCIVayIGQQBIDQEgBkEBdCAHLwEuIhZrIgZBAEgNASAGQQF0IAcvATAiF2siBkEASA0BIAZBAXQgBy8BMiIZayIGQQBIDQEgBkEBdCAHLwE0IhxrIgZBAEgNASAGQQF0IAcvATYiDWsiBkEASA0BIAZBAXQgBy8BOCIYayIGQQBIDQEgBkEBdCAHLwE6IgxrIgZBAEgNASAGQQF0IAcvATwiCmsiBkEASA0BIAZBAXQgEWsiBkEASA0BIAZBACAARSAOchsNASAJIBtLIRpBACEIIAdBADsBAiAHIA87AQQgByAPIBBqIgY7AQYgByAGIBJqIgY7AQggByAGIBNqIgY7AQogByAGIBRqIgY7AQwgByAGIBVqIgY7AQ4gByAGIBZqIgY7ARAgByAGIBdqIgY7ARIgByAGIBlqIgY7ARQgByAGIBxqIgY7ARYgByAGIA1qIgY7ARggByAGIBhqIgY7ARogByAGIAxqIgY7ARwgByAGIApqOwEeAkAgAkUNACACQQFHBEAgAkF+cSEGA0AgASAIQQF0ai8BACIKBEAgByAKQQF0aiIKIAovAQAiCkEBajsBACAFIApBAXRqIAg7AQALIAEgCEEBciIMQQF0ai8BACIKBEAgByAKQQF0aiIKIAovAQAiCkEBajsBACAFIApBAXRqIAw7AQALIAhBAmohCCAGQQJrIgYNAAsLIAJBAXFFDQAgASAIQQF0ai8BACICRQ0AIAcgAkEBdGoiAiACLwEAIgJBAWo7AQAgBSACQQF0aiAIOwEACyAJIBsgGhshDUEUIRBBACEWIAUiCiEYQQAhEgJAAkACQCAADgICAAELQQEhCCANQQpLDQNBgQIhEEHw2QAhGEGw2QAhCkEBIRIMAQsgAEECRiEWQQAhEEHw2gAhGEGw2gAhCiAAQQJHBEAMAQtBASEIIA1BCUsNAgtBASANdCITQQFrIRwgAygCACEUQQAhFSANIQZBACEPQQAhDkF/IQIDQEEBIAZ0IRoCQANAIAkgD2shFwJAIAUgFUEBdGovAQAiCCAQTwRAIAogCCAQa0EBdCIAai8BACERIAAgGGotAAAhAAwBC0EAQeAAIAhBAWogEEkiBhshACAIQQAgBhshEQsgDiAPdiEMQX8gF3QhBiAaIQgDQCAUIAYgCGoiCCAMakECdGoiGSAROwECIBkgFzoAASAZIAA6AAAgCA0AC0EBIAlBAWt0IQYDQCAGIgBBAXYhBiAAIA5xDQALIAdBIGogCUEBdGoiBiAGLwEAQQFrIgY7AQAgAEEBayAOcSAAakEAIAAbIQ4gFUEBaiEVIAZB//8DcUUEQCAJIAtGDQIgASAFIBVBAXRqLwEAQQF0ai8BACEJCyAJIA1NDQAgDiAccSIAIAJGDQALQQEgCSAPIA0gDxsiD2siBnQhAiAJIAtJBEAgCyAPayEMIAkhCAJAA0AgAiAHQSBqIAhBAXRqLwEAayICQQFIDQEgAkEBdCECIAZBAWoiBiAPaiIIIAtJDQALIAwhBgtBASAGdCECC0EBIQggEiACIBNqIhNBtApLcQ0DIBYgE0HQBEtxDQMgAygCACICIABBAnRqIgggDToAASAIIAY6AAAgCCAUIBpBAnRqIhQgAmtBAnY7AQIgACECDAELCyAOBEAgFCAOQQJ0aiIAQQA7AQIgACAXOgABIABBwAA6AAALIAMgAygCACATQQJ0ajYCAAsgBCANNgIAQQAhCAsgCAusAQICfgF/IAFBAmqtIQIgACkDmC4hAwJAIAAoAqAuIgFBA2oiBEE/TQRAIAIgAa2GIAOEIQIMAQsgAUHAAEYEQCAAKAIEIAAoAhBqIAM3AAAgACAAKAIQQQhqNgIQQQMhBAwBCyAAKAIEIAAoAhBqIAIgAa2GIAOENwAAIAAgACgCEEEIajYCECABQT1rIQQgAkHAACABa62IIQILIAAgAjcDmC4gACAENgKgLguXAwICfgN/QYDJADMBACECIAApA5guIQMCQCAAKAKgLiIFQYLJAC8BACIGaiIEQT9NBEAgAiAFrYYgA4QhAgwBCyAFQcAARgRAIAAoAgQgACgCEGogAzcAACAAIAAoAhBBCGo2AhAgBiEEDAELIAAoAgQgACgCEGogAiAFrYYgA4Q3AAAgACAAKAIQQQhqNgIQIARBQGohBCACQcAAIAVrrYghAgsgACACNwOYLiAAIAQ2AqAuIAEEQAJAIARBOU4EQCAAKAIEIAAoAhBqIAI3AAAgACAAKAIQQQhqNgIQDAELIARBGU4EQCAAKAIEIAAoAhBqIAI+AAAgACAAKAIQQQRqNgIQIAAgACkDmC5CIIgiAjcDmC4gACAAKAKgLkEgayIENgKgLgsgBEEJTgR/IAAoAgQgACgCEGogAj0AACAAIAAoAhBBAmo2AhAgACkDmC5CEIghAiAAKAKgLkEQawUgBAtBAUgNACAAIAAoAhAiAUEBajYCECABIAAoAgRqIAI8AAALIABBADYCoC4gAEIANwOYLgsL8hQBEn8gASgCCCICKAIAIQUgAigCDCEHIAEoAgAhCCAAQoCAgIDQxwA3A6ApQQAhAgJAAkAgB0EASgRAQX8hDANAAkAgCCACQQJ0aiIDLwEABEAgACAAKAKgKUEBaiIDNgKgKSAAIANBAnRqQawXaiACNgIAIAAgAmpBqClqQQA6AAAgAiEMDAELIANBADsBAgsgAkEBaiICIAdHDQALIABB/C1qIQ8gAEH4LWohESAAKAKgKSIEQQFKDQIMAQsgAEH8LWohDyAAQfgtaiERQX8hDAsDQCAAIARBAWoiAjYCoCkgACACQQJ0akGsF2ogDEEBaiIDQQAgDEECSCIGGyICNgIAIAggAkECdCIEakEBOwEAIAAgAmpBqClqQQA6AAAgACAAKAL4LUEBazYC+C0gBQRAIA8gDygCACAEIAVqLwECazYCAAsgAyAMIAYbIQwgACgCoCkiBEECSA0ACwsgASAMNgIEIARBAXYhBgNAIAAgBkECdGpBrBdqKAIAIQkCQCAGIgJBAXQiAyAESg0AIAggCUECdGohCiAAIAlqQagpaiENIAYhBQNAAkAgAyAETgRAIAMhAgwBCyAIIABBrBdqIgIgA0EBciIEQQJ0aigCACILQQJ0ai8BACIOIAggAiADQQJ0aigCACIQQQJ0ai8BACICTwRAIAIgDkcEQCADIQIMAgsgAyECIABBqClqIgMgC2otAAAgAyAQai0AAEsNAQsgBCECCyAKLwEAIgQgCCAAIAJBAnRqQawXaigCACIDQQJ0ai8BACILSQRAIAUhAgwCCwJAIAQgC0cNACANLQAAIAAgA2pBqClqLQAASw0AIAUhAgwCCyAAIAVBAnRqQawXaiADNgIAIAIhBSACQQF0IgMgACgCoCkiBEwNAAsLIAAgAkECdGpBrBdqIAk2AgAgBkECTgRAIAZBAWshBiAAKAKgKSEEDAELCyAAKAKgKSEDA0AgByEGIAAgA0EBayIENgKgKSAAKAKwFyEKIAAgACADQQJ0akGsF2ooAgAiCTYCsBdBASECAkAgA0EDSA0AIAggCUECdGohDSAAIAlqQagpaiELQQIhA0EBIQUDQAJAIAMgBE4EQCADIQIMAQsgCCAAQawXaiICIANBAXIiB0ECdGooAgAiBEECdGovAQAiDiAIIAIgA0ECdGooAgAiEEECdGovAQAiAk8EQCACIA5HBEAgAyECDAILIAMhAiAAQagpaiIDIARqLQAAIAMgEGotAABLDQELIAchAgsgDS8BACIHIAggACACQQJ0akGsF2ooAgAiA0ECdGovAQAiBEkEQCAFIQIMAgsCQCAEIAdHDQAgCy0AACAAIANqQagpai0AAEsNACAFIQIMAgsgACAFQQJ0akGsF2ogAzYCACACIQUgAkEBdCIDIAAoAqApIgRMDQALC0ECIQMgAEGsF2oiByACQQJ0aiAJNgIAIAAgACgCpClBAWsiBTYCpCkgACgCsBchAiAHIAVBAnRqIAo2AgAgACAAKAKkKUEBayIFNgKkKSAHIAVBAnRqIAI2AgAgCCAGQQJ0aiINIAggAkECdGoiBS8BACAIIApBAnRqIgQvAQBqOwEAIABBqClqIgkgBmoiCyACIAlqLQAAIgIgCSAKai0AACIKIAIgCksbQQFqOgAAIAUgBjsBAiAEIAY7AQIgACAGNgKwF0EBIQVBASECAkAgACgCoCkiBEECSA0AA0AgDS8BACIKIAggAAJ/IAMgAyAETg0AGiAIIAcgA0EBciICQQJ0aigCACIEQQJ0ai8BACIOIAggByADQQJ0aigCACIQQQJ0ai8BACISTwRAIAMgDiASRw0BGiADIAQgCWotAAAgCSAQai0AAEsNARoLIAILIgJBAnRqQawXaigCACIDQQJ0ai8BACIESQRAIAUhAgwCCwJAIAQgCkcNACALLQAAIAAgA2pBqClqLQAASw0AIAUhAgwCCyAAIAVBAnRqQawXaiADNgIAIAIhBSACQQF0IgMgACgCoCkiBEwNAAsLIAZBAWohByAAIAJBAnRqQawXaiAGNgIAIAAoAqApIgNBAUoNAAsgACAAKAKkKUEBayICNgKkKSAAQawXaiIDIAJBAnRqIAAoArAXNgIAIAEoAgQhCSABKAIIIgIoAhAhBiACKAIIIQogAigCBCEQIAIoAgAhDSABKAIAIQcgAEGkF2pCADcBACAAQZwXakIANwEAIABBlBdqQgA3AQAgAEGMF2oiAUIANwEAQQAhBSAHIAMgACgCpClBAnRqKAIAQQJ0akEAOwECAkAgACgCpCkiAkG7BEoNACACQQFqIQIDQCAHIAAgAkECdGpBrBdqKAIAIgRBAnQiEmoiCyAHIAsvAQJBAnRqLwECIgNBAWogBiADIAZJGyIOOwECIAMgBk8hEwJAIAQgCUoNACAAIA5BAXRqQYwXaiIDIAMvAQBBAWo7AQBBACEDIAQgCk4EQCAQIAQgCmtBAnRqKAIAIQMLIBEgESgCACALLwEAIgQgAyAOamxqNgIAIA1FDQAgDyAPKAIAIAMgDSASai8BAmogBGxqNgIACyAFIBNqIQUgAkEBaiICQb0ERw0ACyAFRQ0AIAAgBkEBdGpBjBdqIQQDQCAGIQIDQCAAIAIiA0EBayICQQF0akGMF2oiDy8BACIKRQ0ACyAPIApBAWs7AQAgACADQQF0akGMF2oiAiACLwEAQQJqOwEAIAQgBC8BAEEBayIDOwEAIAVBAkohAiAFQQJrIQUgAg0ACyAGRQ0AQb0EIQIDQCADQf//A3EiBQRAA0AgACACQQFrIgJBAnRqQawXaigCACIDIAlKDQAgByADQQJ0aiIDLwECIAZHBEAgESARKAIAIAYgAy8BAGxqIgQ2AgAgESAEIAMvAQAgAy8BAmxrNgIAIAMgBjsBAgsgBUEBayIFDQALCyAGQQFrIgZFDQEgACAGQQF0akGMF2ovAQAhAwwACwALIwBBIGsiAiABIgAvAQBBAXQiATsBAiACIAEgAC8BAmpBAXQiATsBBCACIAEgAC8BBGpBAXQiATsBBiACIAEgAC8BBmpBAXQiATsBCCACIAEgAC8BCGpBAXQiATsBCiACIAEgAC8BCmpBAXQiATsBDCACIAEgAC8BDGpBAXQiATsBDiACIAEgAC8BDmpBAXQiATsBECACIAEgAC8BEGpBAXQiATsBEiACIAEgAC8BEmpBAXQiATsBFCACIAEgAC8BFGpBAXQiATsBFiACIAEgAC8BFmpBAXQiATsBGCACIAEgAC8BGGpBAXQiATsBGiACIAEgAC8BGmpBAXQiATsBHCACIAAvARwgAWpBAXQ7AR5BACEAIAxBAE4EQANAIAggAEECdGoiAy8BAiIBBEAgAiABQQF0aiIFIAUvAQAiBUEBajsBACADIAWtQoD+A4NCCIhCgpCAgQh+QpDCiKKIAYNCgYKEiBB+QiCIp0H/AXEgBUH/AXGtQoKQgIEIfkKQwoiiiAGDQoGChIgQfkIYiKdBgP4DcXJBECABa3Y7AQALIAAgDEchASAAQQFqIQAgAQ0ACwsLcgEBfyMAQRBrIgQkAAJ/QQAgAEUNABogAEEIaiEAIAFFBEAgAlBFBEAgAARAIABBADYCBCAAQRI2AgALQQAMAgtBAEIAIAMgABA6DAELIAQgAjcDCCAEIAE2AgAgBEIBIAMgABA6CyEAIARBEGokACAACyIAIAAgASACIAMQJiIARQRAQQAPCyAAKAIwQQAgAiADECULAwABC8gFAQR/IABB//8DcSEDIABBEHYhBEEBIQAgAkEBRgRAIAMgAS0AAGpB8f8DcCIAIARqQfH/A3BBEHQgAHIPCwJAIAEEfyACQRBJDQECQCACQa8rSwRAA0AgAkGwK2shAkG1BSEFIAEhAANAIAMgAC0AAGoiAyAEaiADIAAtAAFqIgNqIAMgAC0AAmoiA2ogAyAALQADaiIDaiADIAAtAARqIgNqIAMgAC0ABWoiA2ogAyAALQAGaiIDaiADIAAtAAdqIgNqIQQgBQRAIABBCGohACAFQQFrIQUMAQsLIARB8f8DcCEEIANB8f8DcCEDIAFBsCtqIQEgAkGvK0sNAAsgAkEISQ0BCwNAIAMgAS0AAGoiACAEaiAAIAEtAAFqIgBqIAAgAS0AAmoiAGogACABLQADaiIAaiAAIAEtAARqIgBqIAAgAS0ABWoiAGogACABLQAGaiIAaiAAIAEtAAdqIgNqIQQgAUEIaiEBIAJBCGsiAkEHSw0ACwsCQCACRQ0AIAJBAWshBiACQQNxIgUEQCABIQADQCACQQFrIQIgAyAALQAAaiIDIARqIQQgAEEBaiIBIQAgBUEBayIFDQALCyAGQQNJDQADQCADIAEtAABqIgAgAS0AAWoiBSABLQACaiIGIAEtAANqIgMgBiAFIAAgBGpqamohBCABQQRqIQEgAkEEayICDQALCyADQfH/A3AgBEHx/wNwQRB0cgVBAQsPCwJAIAJFDQAgAkEBayEGIAJBA3EiBQRAIAEhAANAIAJBAWshAiADIAAtAABqIgMgBGohBCAAQQFqIgEhACAFQQFrIgUNAAsLIAZBA0kNAANAIAMgAS0AAGoiACABLQABaiIFIAEtAAJqIgYgAS0AA2oiAyAGIAUgACAEampqaiEEIAFBBGohASACQQRrIgINAAsLIANB8f8DcCAEQfH/A3BBEHRyCx8AIAAgAiADQcCAASgCABEAACEAIAEgAiADEAcaIAALIwAgACAAKAJAIAIgA0HUgAEoAgARAAA2AkAgASACIAMQBxoLzSoCGH8HfiAAKAIMIgIgACgCECIDaiEQIAMgAWshASAAKAIAIgUgACgCBGohA0F/IAAoAhwiBygCpAF0IQRBfyAHKAKgAXQhCyAHKAI4IQwCf0EAIAcoAiwiEUUNABpBACACIAxJDQAaIAJBhAJqIAwgEWpNCyEWIBBBgwJrIRMgASACaiEXIANBDmshFCAEQX9zIRggC0F/cyESIAcoApwBIRUgBygCmAEhDSAHKAKIASEIIAc1AoQBIR0gBygCNCEOIAcoAjAhGSAQQQFqIQ8DQCAIQThyIQYgBSAIQQN2QQdxayELAn8gAiANIAUpAAAgCK2GIB2EIh2nIBJxQQJ0IgFqIgMtAAAiBA0AGiACIAEgDWoiAS0AAjoAACAGIAEtAAEiAWshBiACQQFqIA0gHSABrYgiHacgEnFBAnQiAWoiAy0AACIEDQAaIAIgASANaiIDLQACOgABIAYgAy0AASIDayEGIA0gHSADrYgiHacgEnFBAnRqIgMtAAAhBCACQQJqCyEBIAtBB2ohBSAGIAMtAAEiAmshCCAdIAKtiCEdAkACQAJAIARB/wFxRQ0AAkACQAJAAkACQANAIARBEHEEQCAVIB0gBK1CD4OIIhqnIBhxQQJ0aiECAn8gCCAEQQ9xIgZrIgRBG0sEQCAEIQggBQwBCyAEQThyIQggBSkAACAErYYgGoQhGiAFIARBA3ZrQQdqCyELIAMzAQIhGyAIIAItAAEiA2shCCAaIAOtiCEaIAItAAAiBEEQcQ0CA0AgBEHAAHFFBEAgCCAVIAIvAQJBAnRqIBqnQX8gBHRBf3NxQQJ0aiICLQABIgNrIQggGiADrYghGiACLQAAIgRBEHFFDQEMBAsLIAdB0f4ANgIEIABB7A42AhggGiEdDAMLIARB/wFxIgJBwABxRQRAIAggDSADLwECQQJ0aiAdp0F/IAJ0QX9zcUECdGoiAy0AASICayEIIB0gAq2IIR0gAy0AACIERQ0HDAELCyAEQSBxBEAgB0G//gA2AgQgASECDAgLIAdB0f4ANgIEIABB0A42AhggASECDAcLIB1BfyAGdEF/c62DIBt8IhunIQUgCCAEQQ9xIgNrIQggGiAErUIPg4ghHSABIBdrIgYgAjMBAiAaQX8gA3RBf3Otg3ynIgRPDQIgBCAGayIGIBlNDQEgBygCjEdFDQEgB0HR/gA2AgQgAEG5DDYCGAsgASECIAshBQwFCwJAIA5FBEAgDCARIAZraiEDDAELIAYgDk0EQCAMIA4gBmtqIQMMAQsgDCARIAYgDmsiBmtqIQMgBSAGTQ0AIAUgBmshBQJAAkAgASADTSABIA8gAWusIhogBq0iGyAaIBtUGyIapyIGaiICIANLcQ0AIAMgBmogAUsgASADT3ENACABIAMgBhAHGiACIQEMAQsgASADIAMgAWsiASABQR91IgFqIAFzIgIQByACaiEBIBogAq0iHn0iHFANACACIANqIQIDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgASACKQAANwAAIAEgAikAGDcAGCABIAIpABA3ABAgASACKQAINwAIIBpCIH0hGiACQSBqIQIgAUEgaiEBIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAEgAikAADcAACABIAIpABg3ABggASACKQAQNwAQIAEgAikACDcACCABIAIpADg3ADggASACKQAwNwAwIAEgAikAKDcAKCABIAIpACA3ACAgASACKQBYNwBYIAEgAikAUDcAUCABIAIpAEg3AEggASACKQBANwBAIAEgAikAYDcAYCABIAIpAGg3AGggASACKQBwNwBwIAEgAikAeDcAeCACQYABaiECIAFBgAFqIQEgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAEgAikAADcAACABIAIpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCABIAIpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCABIAIoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCABIAIvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCABIAItAAA6AAAgAkEBaiECIAFBAWohAQsgHEIAUg0ACwsgDiEGIAwhAwsgBSAGSwRAAkACQCABIANNIAEgDyABa6wiGiAGrSIbIBogG1QbIhqnIglqIgIgA0txDQAgAyAJaiABSyABIANPcQ0AIAEgAyAJEAcaDAELIAEgAyADIAFrIgEgAUEfdSIBaiABcyIBEAcgAWohAiAaIAGtIh59IhxQDQAgASADaiEBA0ACQCAcIB4gHCAeVBsiG0IgVARAIBshGgwBCyAbIhpCIH0iIEIFiEIBfEIDgyIfUEUEQANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCAaQiB9IRogAUEgaiEBIAJBIGohAiAfQgF9Ih9CAFINAAsLICBC4ABUDQADQCACIAEpAAA3AAAgAiABKQAYNwAYIAIgASkAEDcAECACIAEpAAg3AAggAiABKQA4NwA4IAIgASkAMDcAMCACIAEpACg3ACggAiABKQAgNwAgIAIgASkAWDcAWCACIAEpAFA3AFAgAiABKQBINwBIIAIgASkAQDcAQCACIAEpAGA3AGAgAiABKQBoNwBoIAIgASkAcDcAcCACIAEpAHg3AHggAUGAAWohASACQYABaiECIBpCgAF9IhpCH1YNAAsLIBpCEFoEQCACIAEpAAA3AAAgAiABKQAINwAIIBpCEH0hGiACQRBqIQIgAUEQaiEBCyAaQghaBEAgAiABKQAANwAAIBpCCH0hGiACQQhqIQIgAUEIaiEBCyAaQgRaBEAgAiABKAAANgAAIBpCBH0hGiACQQRqIQIgAUEEaiEBCyAaQgJaBEAgAiABLwAAOwAAIBpCAn0hGiACQQJqIQIgAUECaiEBCyAcIBt9IRwgGlBFBEAgAiABLQAAOgAAIAJBAWohAiABQQFqIQELIBxCAFINAAsLIAUgBmshAUEAIARrIQUCQCAEQQdLBEAgBCEDDAELIAEgBE0EQCAEIQMMAQsgAiAEayEFA0ACQCACIAUpAAA3AAAgBEEBdCEDIAEgBGshASACIARqIQIgBEEDSw0AIAMhBCABIANLDQELC0EAIANrIQULIAIgBWohBAJAIAUgDyACa6wiGiABrSIbIBogG1QbIhqnIgFIIAVBf0pxDQAgBUEBSCABIARqIAJLcQ0AIAIgBCABEAcgAWohAgwDCyACIAQgAyADQR91IgFqIAFzIgEQByABaiECIBogAa0iHn0iHFANAiABIARqIQEDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIBpCIH0hGiABQSBqIQEgAkEgaiECIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCACIAEpADg3ADggAiABKQAwNwAwIAIgASkAKDcAKCACIAEpACA3ACAgAiABKQBYNwBYIAIgASkAUDcAUCACIAEpAEg3AEggAiABKQBANwBAIAIgASkAYDcAYCACIAEpAGg3AGggAiABKQBwNwBwIAIgASkAeDcAeCABQYABaiEBIAJBgAFqIQIgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAIgASkAADcAACACIAEpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCACIAEpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCACIAEoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCACIAEvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCACIAEtAAA6AAAgAkEBaiECIAFBAWohAQsgHFBFDQALDAILAkAgASADTSABIA8gAWusIhogBa0iGyAaIBtUGyIapyIEaiICIANLcQ0AIAMgBGogAUsgASADT3ENACABIAMgBBAHGgwCCyABIAMgAyABayIBIAFBH3UiAWogAXMiARAHIAFqIQIgGiABrSIefSIcUA0BIAEgA2ohAQNAAkAgHCAeIBwgHlQbIhtCIFQEQCAbIRoMAQsgGyIaQiB9IiBCBYhCAXxCA4MiH1BFBEADQCACIAEpAAA3AAAgAiABKQAYNwAYIAIgASkAEDcAECACIAEpAAg3AAggGkIgfSEaIAFBIGohASACQSBqIQIgH0IBfSIfQgBSDQALCyAgQuAAVA0AA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIAIgASkAODcAOCACIAEpADA3ADAgAiABKQAoNwAoIAIgASkAIDcAICACIAEpAFg3AFggAiABKQBQNwBQIAIgASkASDcASCACIAEpAEA3AEAgAiABKQBgNwBgIAIgASkAaDcAaCACIAEpAHA3AHAgAiABKQB4NwB4IAFBgAFqIQEgAkGAAWohAiAaQoABfSIaQh9WDQALCyAaQhBaBEAgAiABKQAANwAAIAIgASkACDcACCAaQhB9IRogAkEQaiECIAFBEGohAQsgGkIIWgRAIAIgASkAADcAACAaQgh9IRogAkEIaiECIAFBCGohAQsgGkIEWgRAIAIgASgAADYAACAaQgR9IRogAkEEaiECIAFBBGohAQsgGkICWgRAIAIgAS8AADsAACAaQgJ9IRogAkECaiECIAFBAmohAQsgHCAbfSEcIBpQRQRAIAIgAS0AADoAACACQQFqIQIgAUEBaiEBCyAcUEUNAAsMAQsCQAJAIBYEQAJAIAQgBUkEQCAHKAKYRyAESw0BCyABIARrIQMCQEEAIARrIgVBf0ogDyABa6wiGiAbIBogG1QbIhqnIgIgBUpxDQAgBUEBSCACIANqIAFLcQ0AIAEgAyACEAcgAmohAgwFCyABIAMgBCAEQR91IgFqIAFzIgEQByABaiECIBogAa0iHn0iHFANBCABIANqIQEDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIBpCIH0hGiABQSBqIQEgAkEgaiECIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCACIAEpADg3ADggAiABKQAwNwAwIAIgASkAKDcAKCACIAEpACA3ACAgAiABKQBYNwBYIAIgASkAUDcAUCACIAEpAEg3AEggAiABKQBANwBAIAIgASkAYDcAYCACIAEpAGg3AGggAiABKQBwNwBwIAIgASkAeDcAeCABQYABaiEBIAJBgAFqIQIgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAIgASkAADcAACACIAEpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCACIAEpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCACIAEoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCACIAEvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCACIAEtAAA6AAAgAkEBaiECIAFBAWohAQsgHFBFDQALDAQLIBAgAWsiCUEBaiIGIAUgBSAGSxshAyABIARrIQIgAUEHcUUNAiADRQ0CIAEgAi0AADoAACACQQFqIQIgAUEBaiIGQQdxQQAgA0EBayIFGw0BIAYhASAFIQMgCSEGDAILAkAgBCAFSQRAIAcoAphHIARLDQELIAEgASAEayIGKQAANwAAIAEgBUEBa0EHcUEBaiIDaiECIAUgA2siBEUNAyADIAZqIQEDQCACIAEpAAA3AAAgAUEIaiEBIAJBCGohAiAEQQhrIgQNAAsMAwsgASAEIAUQPyECDAILIAEgAi0AADoAASAJQQFrIQYgA0ECayEFIAJBAWohAgJAIAFBAmoiCkEHcUUNACAFRQ0AIAEgAi0AADoAAiAJQQJrIQYgA0EDayEFIAJBAWohAgJAIAFBA2oiCkEHcUUNACAFRQ0AIAEgAi0AADoAAyAJQQNrIQYgA0EEayEFIAJBAWohAgJAIAFBBGoiCkEHcUUNACAFRQ0AIAEgAi0AADoABCAJQQRrIQYgA0EFayEFIAJBAWohAgJAIAFBBWoiCkEHcUUNACAFRQ0AIAEgAi0AADoABSAJQQVrIQYgA0EGayEFIAJBAWohAgJAIAFBBmoiCkEHcUUNACAFRQ0AIAEgAi0AADoABiAJQQZrIQYgA0EHayEFIAJBAWohAgJAIAFBB2oiCkEHcUUNACAFRQ0AIAEgAi0AADoAByAJQQdrIQYgA0EIayEDIAFBCGohASACQQFqIQIMBgsgCiEBIAUhAwwFCyAKIQEgBSEDDAQLIAohASAFIQMMAwsgCiEBIAUhAwwCCyAKIQEgBSEDDAELIAohASAFIQMLAkACQCAGQRdNBEAgA0UNASADQQFrIQUgA0EHcSIEBEADQCABIAItAAA6AAAgA0EBayEDIAFBAWohASACQQFqIQIgBEEBayIEDQALCyAFQQdJDQEDQCABIAItAAA6AAAgASACLQABOgABIAEgAi0AAjoAAiABIAItAAM6AAMgASACLQAEOgAEIAEgAi0ABToABSABIAItAAY6AAYgASACLQAHOgAHIAFBCGohASACQQhqIQIgA0EIayIDDQALDAELIAMNAQsgASECDAELIAEgBCADED8hAgsgCyEFDAELIAEgAy0AAjoAACABQQFqIQILIAUgFE8NACACIBNJDQELCyAAIAI2AgwgACAFIAhBA3ZrIgE2AgAgACATIAJrQYMCajYCECAAIBQgAWtBDmo2AgQgByAIQQdxIgA2AogBIAcgHUJ/IACthkJ/hYM+AoQBC+cFAQR/IAMgAiACIANLGyEEIAAgAWshAgJAIABBB3FFDQAgBEUNACAAIAItAAA6AAAgA0EBayEGIAJBAWohAiAAQQFqIgdBB3FBACAEQQFrIgUbRQRAIAchACAFIQQgBiEDDAELIAAgAi0AADoAASADQQJrIQYgBEECayEFIAJBAWohAgJAIABBAmoiB0EHcUUNACAFRQ0AIAAgAi0AADoAAiADQQNrIQYgBEEDayEFIAJBAWohAgJAIABBA2oiB0EHcUUNACAFRQ0AIAAgAi0AADoAAyADQQRrIQYgBEEEayEFIAJBAWohAgJAIABBBGoiB0EHcUUNACAFRQ0AIAAgAi0AADoABCADQQVrIQYgBEEFayEFIAJBAWohAgJAIABBBWoiB0EHcUUNACAFRQ0AIAAgAi0AADoABSADQQZrIQYgBEEGayEFIAJBAWohAgJAIABBBmoiB0EHcUUNACAFRQ0AIAAgAi0AADoABiADQQdrIQYgBEEHayEFIAJBAWohAgJAIABBB2oiB0EHcUUNACAFRQ0AIAAgAi0AADoAByADQQhrIQMgBEEIayEEIABBCGohACACQQFqIQIMBgsgByEAIAUhBCAGIQMMBQsgByEAIAUhBCAGIQMMBAsgByEAIAUhBCAGIQMMAwsgByEAIAUhBCAGIQMMAgsgByEAIAUhBCAGIQMMAQsgByEAIAUhBCAGIQMLAkAgA0EXTQRAIARFDQEgBEEBayEBIARBB3EiAwRAA0AgACACLQAAOgAAIARBAWshBCAAQQFqIQAgAkEBaiECIANBAWsi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CyAAIAMtAAAEfiADKQMQBUIAC6dB//8DcSADKAIEEEcLIQUgAxAICyAEQRBqJAAgBQvgAQICfwF+QTAQCSICRQRAIAEEQCABQQA2AgQgAUEONgIAC0EADwsgAkIANwMIIAJBADYCACACQgA3AxAgAkIANwMYIAJCADcDICACQgA3ACUgAFAEQCACDwsCQCAAQv////8AVg0AIACnQQR0EAkiA0UNACACIAM2AgBBACEBQgEhBANAIAMgAUEEdGoiAUIANwIAIAFCADcABSAAIARSBEAgBKchASAEQgF8IQQMAQsLIAIgADcDCCACIAA3AxAgAg8LIAEEQCABQQA2AgQgAUEONgIAC0EAEBAgAhAGQQAL7gECA38BfiMAQRBrIgQkAAJAIARBDGpCBBAXIgNFBEBBfyECDAELAkAgAQRAIAJBgAZxIQUDQAJAIAUgASgCBHFFDQACQCADKQMIQgBUBEAgA0EAOgAADAELIANCADcDECADQQE6AAALIAMgAS8BCBANIAMgAS8BChANIAMtAABFBEAgAEEIaiIABEAgAEEANgIEIABBFDYCAAtBfyECDAQLQX8hAiAAIARBDGpCBBAbQQBIDQMgATMBCiIGUA0AIAAgASgCDCAGEBtBAEgNAwsgASgCACIBDQALC0EAIQILIAMQCAsgBEEQaiQAIAILPAEBfyAABEAgAUGABnEhAQNAIAEgACgCBHEEQCACIAAvAQpqQQRqIQILIAAoAgAiAA0ACwsgAkH//wNxC5wBAQN/IABFBEBBAA8LIAAhAwNAAn8CQAJAIAAvAQgiAUH04AFNBEAgAUEBRg0BIAFB9cYBRg0BDAILIAFBgbICRg0AIAFB9eABRw0BCyAAKAIAIQEgAEEANgIAIAAoAgwQBiAAEAYgASADIAAgA0YbIQMCQCACRQRAQQAhAgwBCyACIAE2AgALIAEMAQsgACICKAIACyIADQALIAMLsgQCBX8BfgJAAkACQCAAIAGtEBciAQRAIAEtAAANAUEAIQAMAgsgBARAIARBADYCBCAEQQ42AgALQQAPC0EAIQADQCABLQAABH4gASkDCCABKQMQfQVCAAtCBFQNASABEAwhByABIAEQDCIGrRATIghFBEBBACECIAQEQCAEQQA2AgQgBEEVNgIACyABEAggAEUNAwNAIAAoAgAhASAAKAIMEAYg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DCAAQRg2AggLDAMLIAAgBiAFLwFqQQAgBCABEQYAIQEgBhALIAFFDQILAkAgDUUEQCABIQMMAQsgACABIAUvAWgQgQEhAyABEAsgA0UNAQsCQCAJRSAMckUEQCADIQEMAQsgACADQQEQgAEhASADEAsgAUUNAQsgASEDDAELQQAhAwsgBUHwAGokACADC4UBAQF/IAFFBEAgAEEIaiIABEAgAEEANgIEIABBEjYCAAtBAA8LQTgQCSIDRQRAIABBCGoiAARAIABBADYCBCAAQQ42AgALQQAPCyADQQA2AhAgA0IANwIIIANCADcDKCADQQA2AgQgAyACNgIAIANCADcDGCADQQA2AjAgACABQTsgAxBCCw8AIAAgASACQQBBABCCAQusAgECfyABRQRAIABBCGoiAARAIABBADYCBCAAQRI2AgALQQAPCwJAIAJBfUsNACACQf//A3FBCEYNACAAQQhqIgAEQCAAQQA2AgQgAEEQNgIAC0EADwsCQEGwwAAQCSIFBEAgBUEANgIIIAVCADcCACAFQYiBAUGogQEgAxs2AqhAIAUgAjYCFCAFIAM6ABAgBUEAOgAPIAVBADsBDCAFIAMgAkF9SyIGcToADiAFQQggAiAGG0H//wNxIAQgBUGIgQFBqIEBIAMbKAIAEQAAIgI2AqxAIAINASAFEDEgBRAGCyAAQQhqIgAEQCAAQQA2AgQgAEEONgIAC0EADwsgACABQTogBRBCIgAEfyAABSAFKAKsQCAFKAKoQCgCBBEDACAFEDEgBRAGQQALC6ABAQF/IAIgACgCBCIDIAIgA0kbIgIEQCAAIAMgAms2AgQCQAJAAkACQCAAKAIcIgMoAhRBAWsOAgEAAgsgA0GgAWogASAAKAIAIAJB3IABKAIAEQgADAILIAAgACgCMCABIAAoAgAgAkHEgAEoAgARBAA2AjAMAQsgASAAKAIAIAIQBxoLIAAgACgCACACajYCACAAIAAoAgggAmo2AggLC7cCAQR/QX4hAgJAIABFDQAgACgCIEUNACAAKAIkIgRFDQAgACgCHCIBRQ0AIAEoAgAgAEcNAAJAAkAgASgCICIDQTlrDjkBAgICAgICAgICAgIBAgICAQICAgICAgICAgICAgICAgICAQICAgICAgICAgICAQICAgICAgICAgEACyADQZoFRg0AIANBKkcN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DCABajYCDCAGIAYoAgggAWo2AgggBSAFKAIUIAFqNgIUIAUgBSgCECABazYCECAGIAYoAhAgAWsiATYCECABDQAgBiAGKAIENgIIC0EAIQRBACEJIAMoAhBFDQAMCgsgAygCHCgCJCEGIAMgAygCGCIBQQFqNgIYIAEgBmotAAAhASADIARBAWo2AhAgAygCBCAEaiABOgAAIAEEQCADKAIQIQQMAQsLIAMoAhwoAixFDQAgAygCECIGIAlNDQAgBQJ/IAUoAjAhBEEAIAMoAgQgCWoiAUUNABogBCABIAYgCWtB1IABKAIAEQAACzYCMAsgA0HnADYCIAsCQCADKAIcKAIsBEAgAygCDCADKAIQIgFBAmpJBH8gBRAKIAMoAhANAkEABSABCyADKAIEaiAFKAIwOwAAIAMgAygCEEECajYCECADQaABakHkgAEoAgARAQAaCyADQfEANgIgIAUQCiADKAIQRQ0BDAcLDAYLIAUoAgQNAQsgAygCPA0AIApFDQEgAygCIEGaBUYNAQsCfyADKAKIASIBRQRAIAMgChCFAQwBCwJAAkACQCADKAKMAUECaw4CAAECCwJ/AkADQAJAAkAgAygCPA0AIAMQLyADKAI8DQAgCg0BQQAMBAsgAygCSCADKAJoai0AACEEIAMgAygC8C0iAUEBajYC8C0gASADKALsLWpBADoAACADIAMoAvAtIgFBAWo2AvAtIAEgAygC7C1qQQA6AAAgAyADKALwLSIBQQFqNgLwLSABIAMoAuwtaiAEOgAAIAMgBEECdGoiASABLwHkAUEBajsB5AEgAyADKAI8QQFrNgI8IAMgAygCaEEBaiIBNgJoIAMoAvAtIAMoAvQtRw0BQQAhBCADIAMoAlgiBkEATgR/IAMoAkggBmoFQQALIAEgBmtBABAPIAMgAygCaDYCWCADKAIAEAogAygCACgCEA0BDAILCyADQQA2AoQuIApBBEYEQCADIAMoAlgiAUEATgR/IAMoAkggAWoFQQALIAMoAmggAWtBARAPIAMgAygCaDYCWCADKAIAEApBA0ECIAMoAgAoAhAbDAILIAMoAvAtBEBBACEEIAMgAygCWCIBQQBOBH8gAygCSCABagVBAAsgAygCaCABa0EAEA8gAyADKAJoNgJYIAMoAgAQCiADKAIAKAIQRQ0BC0EBIQQLIAQLDAILAn8CQANAAkACQAJAAkACQCADKAI8Ig1BggJLDQAgAxAvAkAgAygCPCINQYICSw0AIAoNAEEADAgLIA1FDQQgDUECSw0AIAMoAmghCAwBCyADKAJoIghFBEBBACEIDAELIAMoAkggCGoiAUEBayIELQAAIgYgAS0AAEcNACAGIAQtAAJHDQAgBEEDaiEEQQAhCQJAA0AgBiAELQAARw0BIAQtAAEgBkcEQCAJQQFyIQkMAgsgBC0AAiAGRwRAIAlBAnIhCQwCCyAELQADIAZHBEAgCUEDciEJDAILIAQtAAQgBkcEQCAJQQRyIQkMAgsgBC0ABSAGRwRAIAlBBXIhCQwCCyAELQAGIAZHBEAgCUEGciEJDAILIAQtAAcgBkcEQCAJQQdyIQkMAgsgBEEIaiEEIAlB+AFJIQEgCUEIaiEJIAENAAtBgAIhCQtBggIhBCANIAlBAmoiASABIA1LGyIBQYECSw0BIAEiBEECSw0BCyADKAJIIAhqLQAAIQQgAyADKALwLSIBQQFqNgLwLSABIAMoAuwtakEAOgAAIAMgAygC8C0iAUEBajYC8C0gASADKALsLWpBADoAACADIAMoAvAtIgFBAWo2AvAtIAEgAygC7C1qIAQ6AAAgAyAEQQJ0aiIBIAEvAeQBQQFqOwHkASADIAMoAjxBAWs2AjwgAyADKAJoQQFqIgQ2AmgMAQsgAyADKALwLSIBQQFqNgLwLSABIAMoAuwtakEBOgAAIAMgAygC8C0iAUEBajYC8C0gASADKALsLWpBADoAACADIAMoAvAtIgFBAWo2AvAtIAEgAygC7C1qIARBA2s6AAAgAyADKAKALkEBajYCgC4gBEH9zgBqLQAAQQJ0IANqQegJaiIBIAEvAQBBAWo7AQAgA0GAywAtAABBAnRqQdgTaiIBIAEvAQBBAWo7AQAgAyADKAI8IARrNgI8IAMgAygCaCAEaiIENgJoCyADKALwLSADKAL0LUcNAUEAIQggAyADKAJYIgFBAE4EfyADKAJIIAFqBUEACyAEIAFrQQAQDyADIAMoAmg2AlggAygCABAKIAMoAgAoAhANAQwCCwsgA0EANgKELiAKQQRGBEAgAyADKAJYIgFBAE4EfyADKAJIIAFqBUEACyADKAJoIAFrQQEQDyADIAMoAmg2AlggAygCABAKQQNBAiADKAIAKAIQGwwCCyADKALwLQRAQQAhCCADIAMoAlgiAUEATgR/IAMoAkggAWoFQQALIAMoAmggAWtBABAPIAMgAygCaDYCWCADKAIAEAogAygCACgCEEUNAQtBASEICyAICwwBCyADIAogAUEMbEG42ABqKAIAEQIACyIBQX5xQQJGBEAgA0GaBTYCIAsgAUF9cUUEQEEAIQQgBSgCEA0CDAQLIAFBAUcNAAJAAkACQCAKQQFrDgUAAQEBAgELIAMpA5guISICfwJ+IAMoAqAuIgFBA2oiCUE/TQRAQgIgAa2GICKEDAELIAFBwABGBEAgAygCBCADKAIQaiAiNwAAIAMgAygCEEEIajYCEEICISJBCgwCCyADKAIEIAMoAhBqQgIgAa2GICKENwAAIAMgAygCEEEIajYCECABQT1rIQlCAkHAACABa62ICyEiIAlBB2ogCUE5SQ0AGiADKAIEIAMoAhBqICI3AAAgAyADKAIQQQhqNgIQQgAhIiAJQTlrCyEBIAMgIjcDmC4gAyABNgKgLiADEDAMAQsgA0EAQQBBABA5IApBA0cNACADKAJQQQBBgIAIEBkgAygCPA0AIANBADYChC4gA0EANgJYIANBADYCaAsgBRAKIAUoAhANAAwDC0EAIQQgCkEERw0AAkACfwJAAkAgAygCFEEBaw4CAQADCyAFIANBoAFqQeCAASgCABEBACIBNgIwIAMoAgQgAygCEGogATYAACADIAMoAhBBBGoiATYCECADKAIEIAFqIQQgBSgCCAwBCyADKAIEIAMoAhBqIQQgBSgCMCIBQRh0IAFBCHRBgID8B3FyIAFBCHZBgP4DcSABQRh2cnILIQEgBCABNgAAIAMgAygCEEEEajYCEAsgBRAKIAMoAhQiAUEBTgRAIANBACABazYCFAsgAygCEEUhBAsgBAwCCyAFQezAACgCADYCGEF7DAELIANBfzYCJEEACwwBCyMAQRBrIhQkAEF+IRcCQCABIgxFDQAgDCgCIEUNACAMKAIkRQ0AIAwoAhwiB0UNACAHKAIAIAxHDQAgBygCBCIIQbT+AGtBH0sNACAMKAIMIhBFDQAgDCgCACIBRQRAIAwoAgQNAQsgCEG//gBGBEAgB0HA/gA2AgRBwP4AIQgLIAdBpAFqIR8gB0G8BmohGSAHQbwBaiEcIAdBoAFqIR0gB0G4AWohGiAHQfwKaiEYIAdBQGshHiAHKAKIASEFIAwoAgQiICEGIAcoAoQBIQogDCgCECIPIRYCfwJAAkACQANAAkBBfSEEQQEhCQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAhBtP4Aaw4fBwYICQolJicoBSwtLQsZGgQMAjIzATUANw0OAzlISUwLIAcoApQBIQMgASEEIAYhCAw1CyAHKAKUASEDIAEhBCAGIQgMMgsgBygCtAEhCAwuCyAHKAIMIQgMQQsgBUEOTw0pIAZFDUEgBUEIaiEIIAFBAWohBCAGQQFrIQkgAS0AACAFdCAKaiEKIAVBBkkNDCAEIQEgCSEGIAghBQwpCyAFQSBPDSUgBkUNQCABQQFqIQQgBkEBayEIIAEtAAAgBXQgCmohCiAFQRhJDQ0gBCEBIAghBgwlCyAFQRBPDRUgBkUNPyAFQQhqIQggAUEBaiEEIAZBAWshCSABLQAAIAV0IApqIQogBUEISQ0NIAQhASAJIQYgCCEFDBULIAcoAgwiC0UNByAFQRBPDSIgBkUNPiAFQQhqIQggAUEBaiEEIAZBAWshCSABLQAAIAV0IApqIQogBUEISQ0NIAQhASAJIQYgCCEFDCILIAVBH0sNFQwUCyAFQQ9LDRYMFQsgBygCFCIEQYAIcUUEQCAFIQgMFwsgCiEIIAVBD0sNGAwXCyAKIAVBB3F2IQogBUF4cSIFQR9LDQwgBkUNOiAFQQhqIQggAUEBaiEEIAZBAWshCSABLQAAIAV0IApqIQogBUEYSQ0GIAQhASAJIQYgCCEFDAwLIAcoArQBIgggBygCqAEiC08NIwwiCyAPRQ0qIBAgBygCjAE6AAAgB0HI/gA2AgQgD0EBayEPIBBBAWohECAHKAIEIQgMOQsgBygCDCIDRQRAQQAhCAwJCyAFQR9LDQcgBkUNNyAFQQhqIQggAUEBaiEEIAZBAWshCSABLQAAIAV0IApqIQogBUEYSQ0BIAQhASAJIQYgCCEFDAcLIAdBwP4ANgIEDCoLIAlFBEAgBCEBQQAhBiAIIQUgDSEEDDgLIAVBEGohCSABQQJqIQQgBkECayELIAEtAAEgCHQgCmohCiAFQQ9LBEAgBCEBIAshBiAJIQUMBgsgC0UEQCAEIQFBACEGIAkhBSANIQQMOAsgBUEYaiEIIAFBA2ohBCAGQQNrIQsgAS0AAiAJdCAKaiEKIAVBB0sEQCAEIQEgCyEGIAghBQwGCyALRQRAIAQhAUEAIQYgCCEFIA0hBAw4CyAFQSBqIQUgBkEEayEGIAEtAAMgCHQgCmohCiABQQRqIQEMBQsgCUUEQCAEIQFBACEGIAghBSANIQQMNwsgBUEQaiEFIAZBAmshBiABLQABIAh0IApqIQogAUECaiEBDBwLIAlFBEAgBCEBQQAhBiAIIQUgDSEEDDYLIAVBEGohCSABQQJqIQQgBkECayELIAEtAAEgCHQgCmohCiAFQQ9LBEAgBCEBIAshBiAJIQUMBgsgC0UEQCAEIQFBACEGIAkhBSANIQQMNgsgBUEYaiEIIAFBA2ohBCAGQQNrIQsgAS0AAiAJdCAKaiEKIAUEQCAEIQEgCyEGIAghBQwGCyALRQRAIAQhAUEAIQYgCCEFIA0hBAw2CyAFQSBqIQUgBkEEayEGIAEtAAMgCHQgCmohCiABQQRqIQEMBQsgBUEIaiEJIAhFBEAgBCEBQQAhBiAJIQUgDSEEDDULIAFBAmohBCAGQQJrIQggAS0AASAJdCAKaiEKIAVBD0sEQCAEIQEgCCEGDBgLIAVBEGohCSAIRQRAIAQhAUEAIQYgCSEFIA0hBAw1CyABQQNqIQQgBkEDayEIIAEtAAIgCXQgCmohCiAFQQdLBEAgBCEBIAghBgwYCyAFQRhqIQUgCEUEQCAEIQFBACEGIA0hBAw1CyAGQQRrIQYgAS0AAyAFdCAKaiEKIAFBBGohAQwXCyAJDQYgBCEBQQAhBiAIIQUgDSEEDDMLIAlFBEAgBCEBQQAhBiAIIQUgDSEEDDMLIAVBEGohBSAGQQJrIQYgAS0AASAIdCAKaiEKIAFBAmohAQwUCyAMIBYgD2siCSAMKAIUajYCFCAHIAcoAiAgCWo2AiACQCADQQRxRQ0AIAkEQAJAIBAgCWshBCAMKAIcIggoAhQEQCAIQUBrIAQgCUEAQdiAASgCABEIAAwBCyAIIAgoAhwgBCAJQcCAASgCABEAACIENgIcIAwgBDYCMAsLIAcoAhRFDQAgByAeQeCAASgCABEBACIENgIcIAwgBDYCMAsCQCAHKAIMIghBBHFFDQAgBygCHCAKIApBCHRBgID8B3EgCkEYdHIgCkEIdkGA/gNxIApBGHZyciAHKAIUG0YNACAHQdH+ADYCBCAMQaQMNgIYIA8hFiAHKAIEIQgMMQtBACEKQQAhBSAPIRYLIAdBz/4ANgIEDC0LIApB//8DcSIEIApBf3NBEHZHBEAgB0HR/gA2AgQgDEGOCjYCGCAHKAIEIQgMLwsgB0HC/gA2AgQgByAENgKMAUEAIQpBACEFCyAHQcP+ADYCBAsgBygCjAEiBARAIA8gBiAEIAQgBksbIgQgBCAPSxsiCEUNHiAQIAEgCBAHIQQgByAHKAKMASAIazYCjAEgBCAIaiEQIA8gCGshDyABIAhqIQEgBiAIayEGIAcoAgQhCAwtCyAHQb/+ADYCBCAHKAIEIQgMLAsgBUEQaiEFIAZBAmshBiABLQABIAh0IApqIQogAUECaiEBCyAHIAo2AhQgCkH/AXFBCEcEQCAHQdH+ADYCBCAMQYIPNgIYIAcoAgQhCAwrCyAKQYDAA3EEQCAHQdH+ADYCBCAMQY0JNgIYIAcoAgQhCAwrCyAHKAIkIgQEQCAEIApBCHZBAXE2AgALAkAgCkGABHFFDQAgBy0ADEEEcUUNACAUIAo7AAwgBwJ/IAcoAhwhBUEAIBRBDGoiBEUNABogBSAEQQJB1IABKAIAEQAACzYCHAsgB0G2/gA2AgRBACEFQQAhCgsgBkUNKCABQQFqIQQgBkEBayEIIAEtAAAgBXQgCmohCiAFQRhPBEAgBCEBIAghBgwBCyAFQQhqIQkgCEUEQCAEIQFBACEGIAkhBSANIQQMKwsgAUECaiEEIAZBAmshCCABLQABIAl0IApqIQogBUEPSwRAIAQhASAIIQYMAQsgBUEQaiEJIAhFBEAgBCEBQQAhBiAJIQUgDSEEDCsLIAFBA2ohBCAGQQNrIQggAS0AAiAJdCAKaiEKIAVBB0sEQCAEIQEgCCEGDAELIAVBGGohBSAIRQRAIAQhAUEAIQYgDSEEDCsLIAZBBGshBiABLQADIAV0IApqIQogAUEEaiEBCyAHKAIkIgQEQCAEIAo2AgQLAkAgBy0AFUECcUUNACAHLQAMQQRxRQ0AIBQgCjYADCAHAn8gBygCHCEFQQAgFEEMaiIERQ0AGiAFIARBBEHUgAEoAgARAAALNgIcCyAHQbf+ADYCBEEAIQVBACEKCyAGRQ0mIAFBAWohBCAGQQFrIQggAS0AACAFdCAKaiEKIAVBCE8EQCAEIQEgCCEGDAELIAVBCGohBSAIRQRAIAQhAUEAIQYgDSEEDCkLIAZBAmshBiABLQABIAV0IApqIQogAUECaiEBCyAHKAIkIgQEQCAEIApBCHY2AgwgBCAKQf8BcTYCCAsCQCAHLQAVQQJxRQ0AIActAAxBBHFFDQAgFCAKOwAMIAcCfyAHKAIcIQVBACAUQQxqIgRFDQAaIAUgBEECQdSAASgCABEAAAs2AhwLIAdBuP4ANgIEQQAhCEEAIQVBACEKIAcoAhQiBEGACHENAQsgBygCJCIEBEAgBEEANgIQCyAIIQUMAgsgBkUEQEEAIQYgCCEKIA0hBAwmCyABQQFqIQkgBkEBayELIAEtAAAgBXQgCGohCiAFQQhPBEAgCSEBIAshBgwBCyAFQQhqIQUgC0UEQCAJIQFBACEGIA0hBAwmCyAGQQJrIQYgAS0AASAFdCAKaiEKIAFBAmohAQsgByAKQf//A3EiCDYCjAEgBygCJCIFBEAgBSAINgIUC0EAIQUCQCAEQYAEcUUNACAHLQAMQQRxRQ0AIBQgCjsADCAHAn8gBygCHCEIQQAgFEEMaiIERQ0AGiAIIARBAkHUgAEoAgARAAALNgIcC0EAIQoLIAdBuf4ANgIECyAHKAIUIglBgAhxBEAgBiAHKAKMASIIIAYgCEkbIg4EQAJAIAcoAiQiA0UNACADKAIQIgRFDQAgAygCGCILIAMoAhQgCGsiCE0NACAEIAhqIAEgCyAIayAOIAggDmogC0sbEAcaIAcoAhQhCQsCQCAJQYAEcUUNACAHLQAMQQRxRQ0AIAcCfyAHKAIcIQRBACABRQ0AGiAEIAEgDkHUgAEoAgARAAALNgIcCyAHIAcoAowBIA5rIgg2AowBIAYgDmshBiABIA5qIQELIAgNEwsgB0G6/gA2AgQgB0EANgKMAQsCQCAHLQAVQQhxBEBBACEIIAZFDQQDQCABIAhqLQAAIQMCQCAHKAIkIgtFDQAgCygCHCIERQ0AIAcoAowBIgkgCygCIE8NACAHIAlBAWo2AowBIAQgCWogAzoAAAsgA0EAIAYgCEEBaiIISxsNAAsCQCAHLQAVQQJxRQ0AIActAAxBBHFFDQAgBwJ/IAcoAhwhBEEAIAFFDQAaIAQgASAIQdSAASgCABEAAAs2AhwLIAEgCGohASAGIAhrIQYgA0UNAQwTCyAHKAIkIgRFDQAgBEEANgIcCyAHQbv+ADYCBCAHQQA2AowBCwJAIActABVBEHEEQEEAIQggBkUNAwNAIAEgCGotAAAhAwJAIAcoAiQiC0UNACALKAIkIgRFDQAgBygCjAEiCSALKAIoTw0AIAcgCUEBajYCjAEgBCAJaiADOgAACyADQQAgBiAIQQFqIghLGw0ACwJAIActABVBAnFFDQAgBy0ADEEEcUUNACAHAn8gBygCHCEEQQAgAUUNABogBCABIAhB1IABKAIAEQAACzYCHAsgASAIaiEBIAYgCGshBiADRQ0BDBILIAcoAiQiBEUNACAEQQA2AiQLIAdBvP4ANgIECyAHKAIUIgtBgARxBEACQCAFQQ9LDQAgBkUNHyAFQQhqIQggAUEBaiEEIAZBAWshCSABLQAAIAV0IApqIQogBUEITwRAIAQhASAJIQYgCCEFDAELIAlFBEAgBCEBQQAhBiAIIQUgDSEEDCILIAVBEGohBSAGQQJrIQYgAS0AASAIdCAKaiEKIAFBAmohAQsCQCAHLQAMQQRxRQ0AIAogBy8BHEYNACAHQdH+ADYCBCAMQdcMNgIYIAcoAgQhCAwgC0EAIQpBACEFCyAHKAIkIgQEQCAEQQE2AjAgBCALQQl2QQFxNgIsCwJAIActAAxBBHFFDQAgC0UNACAHIB5B5IABKAIAEQEAIgQ2AhwgDCAENgIwCyAHQb/+ADYCBCAHKAIEIQgMHgtBACEGDA4LAkAgC0ECcUUNACAKQZ+WAkcNACAHKAIoRQRAIAdBDzYCKAtBACEKIAdBADYCHCAUQZ+WAjsADCAHIBRBDGoiBAR/QQAgBEECQdSAASgCABEAAAVBAAs2AhwgB0G1/gA2AgRBACEFIAcoAgQhCAwdCyAHKAIkIgQEQCAEQX82AjALAkAgC0EBcQRAIApBCHRBgP4DcSAKQQh2akEfcEUNAQsgB0HR/gA2AgQgDEH2CzYCGCAHKAIEIQgMHQsgCkEPcUEIRwRAIAdB0f4ANgIEIAxBgg82AhggBygCBCEIDB0LIApBBHYiBEEPcSIJQQhqIQsgCUEHTUEAIAcoAigiCAR/IAgFIAcgCzYCKCALCyALTxtFBEAgBUEEayEFIAdB0f4ANgIEIAxB+gw2AhggBCEKIAcoAgQhCAwdCyAHQQE2AhxBACEFIAdBADYCFCAHQYACIAl0NgIYIAxBATYCMCAHQb3+AEG//gAgCkGAwABxGzYCBEEAIQogBygCBCEIDBwLIAcgCkEIdEGAgPwHcSAKQRh0ciAKQQh2QYD+A3EgCkEYdnJyIgQ2AhwgDCAENgIwIAdBvv4ANgIEQQAhCkEAIQULIAcoAhBFBEAgDCAPNgIQIAwgEDYCDCAMIAY2AgQgDCABNgIAIAcgBTYCiAEgByAKNgKEAUECIRcMIAsgB0EBNgIcIAxBATYCMCAHQb/+ADYCBAsCfwJAIAcoAghFBEAgBUEDSQ0BIAUMAgsgB0HO/gA2AgQgCiAFQQdxdiEKIAVBeHEhBSAHKAIEIQgMGwsgBkUNGSAGQQFrIQYgAS0AACAFdCAKaiEKIAFBAWohASAFQQhqCyEEIAcgCkEBcTYCCAJAAkACQAJAAkAgCkEBdkEDcUEBaw4DAQIDAAsgB0HB/gA2AgQMAwsgB0Gw2wA2ApgBIAdCiYCAgNAANwOgASAHQbDrADYCnAEgB0HH/gA2AgQMAgsgB0HE/gA2AgQMAQsgB0HR/gA2AgQgDEHXDTYCGAsgBEEDayEFIApBA3YhCiAHKAIEIQgMGQsgByAKQR9xIghBgQJqNgKsASAHIApBBXZBH3EiBEEBajYCsAEgByAKQQp2QQ9xQQRqIgs2AqgBIAVBDmshBSAKQQ52IQogCEEdTUEAIARBHkkbRQRAIAdB0f4ANgIEIAxB6gk2AhggBygCBCEIDBkLIAdBxf4ANgIEQQAhCCAHQQA2ArQBCyAIIQQDQCAFQQJNBEAgBkUNGCAGQQFrIQYgAS0AACAFdCAKaiEKIAVBCGohBSABQQFqIQELIAcgBEEBaiIINgK0ASAHIARBAXRBsOwAai8BAEEBdGogCkEHcTsBvAEgBUEDayEFIApBA3YhCiALIAgiBEsNAAsLIAhBEk0EQEESIAhrIQ1BAyAIa0EDcSIEBEADQCAHIAhBAXRBsOwAai8BAEEBdGpBADsBvAEgCEEBaiEIIARBAWsiBA0ACwsgDUEDTwRAA0AgB0G8AWoiDSAIQQF0IgRBsOwAai8BAEEBdGpBADsBACANIARBsuwAai8BAEEBdGpBADsBACANIARBtOwAai8BAEEBdGpBADsBACANIARBtuwAai8BAEEBdGpBADsBACAIQQRqIghBE0cNAAsLIAdBEzYCtAELIAdBBzYCoAEgByAYNgKYASAHIBg2ArgBQQAhCEEAIBxBEyAaIB0gGRBOIg0EQCAHQdH+ADYCBCAMQfQINgIYIAcoAgQhCAwXCyAHQcb+ADYCBCAHQQA2ArQBQQAhDQsgBygCrAEiFSAHKAKwAWoiESAISwRAQX8gBygCoAF0QX9zIRIgBygCmAEhGwNAIAYhCSABIQsCQCAFIgMgGyAKIBJxIhNBAnRqLQABIg5PBEAgBSEEDAELA0AgCUUNDSALLQAAIAN0IQ4gC0EBaiELIAlBAWshCSADQQhqIgQhAyAEIBsgCiAOaiIKIBJxIhNBAnRqLQABIg5JDQALIAshASAJIQYLAkAgGyATQQJ0ai8BAiIFQQ9NBEAgByAIQQFqIgk2ArQBIAcgCEEBdGogBTsBvAEgBCAOayEFIAogDnYhCiAJIQgMAQsCfwJ/AkACQAJAIAVBEGsOAgABAgsgDkECaiIFIARLBEADQCAGRQ0bIAZBAWshBiABLQAAIAR0IApqIQogAUEBaiEBIARBCGoiBCAFSQ0ACwsgBCAOayEFIAogDnYhBCAIRQRAIAdB0f4ANgIEIAxBvAk2AhggBCEKIAcoAgQhCAwdCyAFQQJrIQUgBEECdiEKIARBA3FBA2ohCSAIQQF0IAdqLwG6AQwDCyAOQQNqIgUgBEsEQANAIAZFDRogBkEBayEGIAEtAAAgBHQgCmohCiABQQFqIQEgBEEIaiIEIAVJDQALCyAEIA5rQQNrIQUgCiAOdiIEQQN2IQogBEEHcUEDagwBCyAOQQdqIgUgBEsEQANAIAZFDRkgBkEBayEGIAEtAAAgBHQgCmohCiABQQFqIQEgBEEIaiIEIAVJDQALCyAEIA5rQQdrIQUgCiAOdiIEQQd2IQogBEH/AHFBC2oLIQlBAAshAyAIIAlqIBFLDRMgCUEBayEEIAlBA3EiCwRAA0AgByAIQQF0aiADOwG8ASAIQQFqIQggCUEBayEJIAtBAWsiCw0ACwsgBEEDTwRAA0AgByAIQQF0aiIEIAM7Ab4BIAQgAzsBvAEgBCADOwHAASAEIAM7AcIBIAhBBGohCCAJQQRrIgkNAAsLIAcgCDYCtAELIAggEUkNAAsLIAcvAbwFRQRAIAdB0f4ANgIEIAxB0Qs2AhggBygCBCEIDBYLIAdBCjYCoAEgByAYNgKYASAHIBg2ArgBQQEgHCAVIBogHSAZEE4iDQRAIAdB0f4ANgIEIAxB2Ag2AhggBygCBCEIDBYLIAdBCTYCpAEgByAHKAK4ATYCnAFBAiAHIAcoAqwBQQF0akG8AWogBygCsAEgGiAfIBkQTiINBEAgB0HR/gA2AgQgDEGmCTYCGCAHKAIEIQgMFgsgB0HH/gA2AgRBACENCyAHQcj+ADYCBAsCQCAGQQ9JDQAgD0GEAkkNACAMIA82AhAgDCAQNgIMIAwgBjYCBCAMIAE2AgAgByAFNgKIASAHIAo2AoQBIAwgFkHogAEoAgARBwAgBygCiAEhBSAHKAKEASEKIAwoAgQhBiAMKAIAIQEgDCgCECEPIAwoAgwhECAHKAIEQb/+AEcNByAHQX82ApBHIAcoAgQhCAwUCyAHQQA2ApBHIAUhCSAGIQggASEEAkAgBygCmAEiEiAKQX8gBygCoAF0QX9zIhVxIg5BAnRqLQABIgsgBU0EQCAFIQMMAQsDQCAIRQ0PIAQtAAAgCXQhCyAEQQFqIQQgCEEBayEIIAlBCGoiAyEJIAMgEiAKIAtqIgogFXEiDkECdGotAAEiC0kNAAsLIBIgDkECdGoiAS8BAiETAkBBACABLQAAIhEgEUHwAXEbRQRAIAshBgwBCyAIIQYgBCEBAkAgAyIFIAsgEiAKQX8gCyARanRBf3MiFXEgC3YgE2oiEUECdGotAAEiDmpPBEAgAyEJDAELA0AgBkUNDyABLQAAIAV0IQ4gAUEBaiEBIAZBAWshBiAFQQhqIgkhBSALIBIgCiAOaiIKIBVxIAt2IBNqIhFBAnRqLQABIg5qIAlLDQALIAEhBCAGIQgLIBIgEUECdGoiAS0AACERIAEvAQIhEyAHIAs2ApBHIAsgDmohBiAJIAtrIQMgCiALdiEKIA4hCwsgByAGNgKQRyAHIBNB//8DcTYCjAEgAyALayEFIAogC3YhCiARRQRAIAdBzf4ANgIEDBALIBFBIHEEQCAHQb/+ADYCBCAHQX82ApBHDBALIBFBwABxBEAgB0HR/gA2AgQgDEHQDjYCGAwQCyAHQcn+ADYCBCAHIBFBD3EiAzYClAELAkAgA0UEQCAHKAKMASELIAQhASAIIQYMAQsgBSEJIAghBiAEIQsCQCADIAVNBEAgBCEBDAELA0AgBkUNDSAGQQFrIQYgCy0AACAJdCAKaiEKIAtBAWoiASELIAlBCGoiCSADSQ0ACwsgByAHKAKQRyADajYCkEcgByAHKAKMASAKQX8gA3RBf3NxaiILNgKMASAJIANrIQUgCiADdiEKCyAHQcr+ADYCBCAHIAs2ApRHCyAFIQkgBiEIIAEhBAJAIAcoApwBIhIgCkF/IAcoAqQBdEF/cyIVcSIOQQJ0ai0AASIDIAVNBEAgBSELDAELA0AgCEUNCiAELQAAIAl0IQMgBEEBaiEEIAhBAWshCCAJQQhqIgshCSALIBIgAyAKaiIKIBVxIg5BAnRqLQABIgNJDQALCyASIA5BAnRqIgEvAQIhEwJAIAEtAAAiEUHwAXEEQCAHKAKQRyEGIAMhCQwBCyAIIQYgBCEBAkAgCyIFIAMgEiAKQX8gAyARanRBf3MiFXEgA3YgE2oiEUECdGotAAEiCWpPBEAgCyEODAELA0AgBkUNCiABLQAAIAV0IQkgAUEBaiEBIAZBAWshBiAFQQhqIg4hBSADIBIgCSAKaiIKIBVxIAN2IBNqIhFBAnRqLQABIglqIA5LDQALIAEhBCAGIQgLIBIgEUECdGoiAS0AACERIAEvAQIhEyAHIAcoApBHIANqIgY2ApBHIA4gA2shCyAKIAN2IQoLIAcgBiAJajYCkEcgCyAJayEFIAogCXYhCiARQcAAcQRAIAdB0f4ANgIEIAxB7A42AhggBCEBIAghBiAHKAIEIQgMEgsgB0HL/gA2AgQgByARQQ9xIgM2ApQBIAcgE0H//wNxNgKQAQsCQCADRQRAIAQhASAIIQYMAQsgBSEJIAghBiAEIQsCQCADIAVNBEAgBCEBDAELA0AgBkUNCCAGQQFrIQYgCy0AACAJdCAKaiEKIAtBAWoiASELIAlBCGoiCSADSQ0ACwsgByAHKAKQRyADajYCkEcgByAHKAKQASAKQX8gA3RBf3NxajYCkAEgCSADayEFIAogA3YhCgsgB0HM/gA2AgQLIA9FDQACfyAHKAKQASIIIBYgD2siBEsEQAJAIAggBGsiCCAHKAIwTQ0AIAcoAoxHRQ0AIAdB0f4ANgIEIAxBuQw2AhggBygCBCEIDBILAn8CQAJ/IAcoAjQiBCAISQRAIAcoAjggBygCLCAIIARrIghragwBCyAHKAI4IAQgCGtqCyILIBAgDyAQaiAQa0EBaqwiISAPIAcoAowBIgQgCCAEIAhJGyIEIAQgD0sbIgitIiIgISAiVBsiIqciCWoiBEkgCyAQT3ENACALIBBNIAkgC2ogEEtxDQAgECALIAkQBxogBAwBCyAQIAsgCyAQayIEIARBH3UiBGogBHMiCRAHIAlqIQQgIiAJrSIkfSIjUEUEQCAJIAtqIQkDQAJAICMgJCAjICRUGyIiQiBUBEAgIiEhDAELICIiIUIgfSImQgWIQgF8QgODIiVQRQRAA0AgBCAJKQAANwAAIAQgCSkAGDcAGCAEIAkpABA3ABAgBCAJKQAINwAIICFCIH0hISAJQSBqIQkgBEEgaiEEICVCAX0iJUIAUg0ACwsgJkLgAFQNAANAIAQgCSkAADcAACAEIAkpABg3ABggBCAJKQAQNwAQIAQgCSkACDcACCAEIAkpADg3ADggBCAJKQAwNwAwIAQgCSkAKDcAKCAEIAkpACA3ACAgBCAJKQBYNwBYIAQgCSkAUDcAUCAEIAkpAEg3AEggBCAJKQBANwBAIAQgCSkAYDcAYCAEIAkpAGg3AGggBCAJKQBwNwBwIAQgCSkAeDcAeCAJQYABaiEJIARBgAFqIQQgIUKAAX0iIUIfVg0ACwsgIUIQWgRAIAQgCSkAADcAACAEIAkpAAg3AAggIUIQfSEhIAlBEGohCSAEQRBqIQQLICFCCFoEQCAEIAkpAAA3AAAgIUIIfSEhIAlBCGohCSAEQQhqIQQLICFCBFoEQCAEIAkoAAA2AAAgIUIEfSEhIAlBBGohCSAEQQRqIQQLICFCAloEQCAEIAkvAAA7AAAgIUICfSEhIAlBAmohCSAEQQJqIQQLICMgIn0hIyAhUEUEQCAEIAktAAA6AAAgCUEBaiEJIARBAWohBAsgI0IAUg0ACwsgBAsMAQsgECAIIA8gBygCjAEiBCAEIA9LGyIIIA9ByIABKAIAEQQACyEQIAcgBygCjAEgCGsiBDYCjAEgDyAIayEPIAQNAiAHQcj+ADYCBCAHKAIEIQgMDwsgDSEJCyAJIQQMDgsgBygCBCEIDAwLIAEgBmohASAFIAZBA3RqIQUMCgsgBCAIaiEBIAUgCEEDdGohBQwJCyAEIAhqIQEgCyAIQQN0aiEFDAgLIAEgBmohASAFIAZBA3RqIQUMBwsgBCAIaiEBIAUgCEEDdGohBQwGCyAEIAhqIQEgAyAIQQN0aiEFDAULIAEgBmohASAFIAZBA3RqIQUMBAsgB0HR/gA2AgQgDEG8CTYCGCAHKAIEIQgMBAsgBCEBIAghBiAHKAIEIQgMAwtBACEGIAQhBSANIQQMAwsCQAJAIAhFBEAgCiEJDAELIAcoAhRFBEAgCiEJDAELAkAgBUEfSw0AIAZFDQMgBUEIaiEJIAFBAWohBCAGQQFrIQsgAS0AACAFdCAKaiEKIAVBGE8EQCAEIQEgCyEGIAkhBQwBCyALRQRAIAQhAUEAIQYgCSEFIA0hBAwGCyAFQRBqIQsgAUECaiEEIAZBAmshAyABLQABIAl0IApqIQogBUEPSwRAIAQhASADIQYgCyEFDAELIANFBEAgBCEBQQAhBiALIQUgDSEEDAYLIAVBGGohCSABQQNqIQQgBkEDayEDIAEtAAIgC3QgCmohCiAFQQdLBEAgBCEBIAMhBiAJIQUMAQsgA0UEQCAEIQFBACEGIAkhBSANIQQMBgsgBUEgaiEFIAZBBGshBiABLQADIAl0IApqIQogAUEEaiEBC0EAIQkgCEEEcQRAIAogBygCIEcNAgtBACEFCyAHQdD+ADYCBEEBIQQgCSEKDAMLIAdB0f4ANgIEIAxBjQw2AhggBygCBCEIDAELC0EAIQYgDSEECyAMIA82AhAgDCAQNgIMIAwgBjYCBCAMIAE2AgAgByAFNgKIASAHIAo2AoQBAkAgBygCLA0AIA8gFkYNAiAHKAIEIgFB0P4ASw0CIAFBzv4ASQ0ACwJ/IBYgD2shCiAHKAIMQQRxIQkCQAJAAkAgDCgCHCIDKAI4Ig1FBEBBASEIIAMgAygCACIBKAIgIAEoAiggAygCmEdBASADKAIodGpBARAoIg02AjggDUUNAQsgAygCLCIGRQRAIANCADcDMCADQQEgAygCKHQiBjYCLAsgBiAKTQRAAkAgCQRAAkAgBiAKTw0AIAogBmshBSAQIAprIQEgDCgCHCIGKAIUBEAgBkFAayABIAVBAEHYgAEoAgARCAAMAQsgBiAGKAIcIAEgBUHAgAEoAgARAAAiATYCHCAMIAE2AjALIAMoAiwiDUUNASAQIA1rIQUgAygCOCEBIAwoAhwiBigCFARAIAZBQGsgASAFIA1B3IABKAIAEQgADAILIAYgBigCHCABIAUgDUHEgAEoAgARBAAiATYCHCAMIAE2AjAMAQsgDSAQIAZrIAYQBxoLIANBADYCNCADIAMoAiw2AjBBAAwECyAKIAYgAygCNCIFayIBIAEgCksbIQsgECAKayEGIAUgDWohBQJAIAkEQAJAIAtFDQAgDCgCHCIBKAIUBEAgAUFAayAFIAYgC0HcgAEoAgARCAAMAQsgASABKAIcIAUgBiALQcSAASgCABEEACIBNgIcIAwgATYCMAsgCiALayIFRQ0BIBAgBWshBiADKAI4IQEgDCgCHCINKAIUBEAgDUFAayABIAYgBUHcgAEoAgARCAAMBQsgDSANKAIcIAEgBiAFQcSAASgCABEEACIBNgIcIAwgATYCMAwECyAFIAYgCxAHGiAKIAtrIgUNAgtBACEIIANBACADKAI0IAtqIgUgBSADKAIsIgFGGzYCNCABIAMoAjAiAU0NACADIAEgC2o2AjALIAgMAgsgAygCOCAQIAVrIAUQBxoLIAMgBTYCNCADIAMoAiw2AjBBAAtFBEAgDCgCECEPIAwoAgQhFyAHKAKIAQwDCyAHQdL+ADYCBAtBfCEXDAILIAYhFyAFCyEFIAwgICAXayIBIAwoAghqNgIIIAwgFiAPayIGIAwoAhRqNgIUIAcgBygCICAGajYCICAMIAcoAghBAEdBBnQgBWogBygCBCIFQb/+AEZBB3RqQYACIAVBwv4ARkEIdCAFQcf+AEYbajYCLCAEIARBeyAEGyABIAZyGyEXCyAUQRBqJAAgFwshASACIAIpAwAgADUCIH03AwACQAJAAkACQCABQQVqDgcBAgICAgMAAgtBAQ8LIAAoAhQNAEEDDwsgACgCACIABEAgACABNgIEIABBDTYCAAtBAiEBCyABCwkAIABBAToADAtEAAJAIAJC/////w9YBEAgACgCFEUNAQsgACgCACIABEAgAEEANgIEIABBEjYCAAtBAA8LIAAgATYCECAAIAI+AhRBAQu5AQEEfyAAQRBqIQECfyAALQAEBEAgARCEAQwBC0F+IQMCQCABRQ0AIAEoAiBFDQAgASgCJCIERQ0AIAEoAhwiAkUNACACKAIAIAFHDQAgAigCBEG0/gBrQR9LDQAgAigCOCIDBEAgBCABKAIoIAMQHiABKAIkIQQgASgCHCECCyAEIAEoAiggAhAeQQAhAyABQQA2AhwLIAMLIgEEQCAAKAIAIgAEQCAAIAE2AgQgAEENNgIACwsgAUUL0gwBBn8gAEIANwIQIABCADcCHCAAQRBqIQICfyAALQAEBEAgACgCCCEBQesMLQAAQTFGBH8Cf0F+IQMCQCACRQ0AIAJBADYCGCACKAIgIgRFBEAgAkEANgIoIAJBJzYCIEEnIQQLIAIoAiRFBEAgAkEoNgIkC0EGIAEgAUF/RhsiBUEASA0AIAVBCUoNAEF8IQMgBCACKAIoQQFB0C4QKCIBRQ0AIAIgATYCHCABIAI2AgAgAUEPNgI0IAFCgICAgKAFNwIcIAFBADYCFCABQYCAAjYCMCABQf//ATYCOCABIAIoAiAgAigCKEGAgAJBAhAoNgJIIAEgAigCICACKAIoIAEoAjBBAhAoIgM2AkwgA0EAIAEoAjBBAXQQGSACKAIgIAIoAihBgIAEQQIQKCEDIAFBgIACNgLoLSABQQA2AkAgASADNgJQIAEgAigCICACKAIoQYCAAkEEECgiAzYCBCABIAEoAugtIgRBAnQ2AgwCQAJAIAEoAkhFDQAgASgCTEUNACABKAJQRQ0AIAMNAQsgAUGaBTYCICACQejAACgCADYCGCACEIQBGkF8DAILIAFBADYCjAEgASAFNgKIASABQgA3AyggASADIARqNgLsLSABIARBA2xBA2s2AvQtQX4hAwJAIAJFDQAgAigCIEUNACACKAIkRQ0AIAIoAhwiAUUNACABKAIAIAJHDQACQAJAIAEoAiAiBEE5aw45AQICAgICAgICAgICAQICAgECAgICAgICAgICAgICAgICAgECAgICAgICAgICAgECAgICAgICAgIBAAsgBEGaBUYNACAEQSpHDQELIAJBAjYCLCACQQA2AgggAkIANwIUIAFBADYCECABIAEoAgQ2AgggASgCFCIDQX9MBEAgAUEAIANrIgM2AhQLIAFBOUEqIANBAkYbNgIgIAIgA0ECRgR/IAFBoAFqQeSAASgCABEBAAVBAQs2AjAgAUF+NgIkIAFBADYCoC4gAUIANwOYLiABQYgXakGg0wA2AgAgASABQcwVajYCgBcgAUH8FmpBjNMANgIAIAEgAUHYE2o2AvQWIAFB8BZqQfjSADYCACABIAFB5AFqNgLoFiABEIgBQQAhAwsgAw0AIAIoAhwiAiACKAIwQQF0NgJEQQAhAyACKAJQQQBBgIAIEBkgAiACKAKIASIEQQxsIgFBtNgAai8BADYClAEgAiABQbDYAGovAQA2ApABIAIgAUGy2ABqLwEANgJ4IAIgAUG22ABqLwEANgJ0QfiAASgCACEFQeyAASgCACEGQYCBASgCACEBIAJCADcCbCACQgA3AmQgAkEANgI8IAJBADYChC4gAkIANwJUIAJBKSABIARBCUYiARs2AnwgAkEqIAYgARs2AoABIAJBKyAFIAEbNgKEAQsgAwsFQXoLDAELAn9BekHrDC0AAEExRw0AGkF+IAJFDQAaIAJBADYCGCACKAIgIgNFBEAgAkEANgIoIAJBJzYCIEEnIQMLIAIoAiRFBEAgAkEoNgIkC0F8IAMgAigCKEEBQaDHABAoIgRFDQAaIAIgBDYCHCAEQQA2AjggBCACNgIAIARBtP4ANgIEIARBzIABKAIAEQkANgKYR0F+IQMCQCACRQ0AIAIoAiBFDQAgAigCJCIFRQ0AIAIoAhwiAUUNACABKAIAIAJHDQAgASgCBEG0/gBrQR9LDQACQAJAIAEoAjgiBgRAIAEoAihBD0cNAQsgAUEPNgIoIAFBADYCDAwBCyAFIAIoAiggBhAeIAFBADYCOCACKAIgIQUgAUEPNgIoIAFBADYCDCAFRQ0BCyACKAIkRQ0AIAIoAhwiAUUNACABKAIAIAJHDQAgASgCBEG0/gBrQR9LDQBBACEDIAFBADYCNCABQgA3AiwgAUEANgIgIAJBADYCCCACQgA3AhQgASgCDCIFBEAgAiAFQQFxNgIwCyABQrT+ADcCBCABQgA3AoQBIAFBADYCJCABQoCAgoAQNwMYIAFCgICAgHA3AxAgAUKBgICAcDcCjEcgASABQfwKaiIFNgK4ASABIAU2ApwBIAEgBTYCmAELQQAgA0UNABogAigCJCACKAIoIAQQHiACQQA2AhwgAwsLIgIEQCAAKAIAIgAEQCAAIAI2AgQgAEENNgIACwsgAkULKQEBfyAALQAERQRAQQAPC0ECIQEgACgCCCIAQQNOBH8gAEEHSgVBAgsLBgAgABAGC2MAQcgAEAkiAEUEQEGEhAEoAgAhASACBEAgAiABNgIEIAJBATYCAAsgAA8LIABBADoADCAAQQE6AAQgACACNgIAIABBADYCOCAAQgA3AzAgACABQQkgAUEBa0EJSRs2AgggAAukCgIIfwF+QfCAAUH0gAEgACgCdEGBCEkbIQYCQANAAkACfwJAIAAoAjxBhQJLDQAgABAvAkAgACgCPCICQYUCSw0AIAENAEEADwsgAkUNAiACQQRPDQBBAAwBCyAAIAAoAmggACgChAERAgALIQMgACAAKAJsOwFgQQIhAgJAIAA1AmggA619IgpCAVMNACAKIAAoAjBBhgJrrVUNACAAKAJwIAAoAnhPDQAgA0UNACAAIAMgBigCABECACICQQVLDQBBAiACIAAoAowBQQFGGyECCwJAIAAoAnAiA0EDSQ0AIAIgA0sNACAAIAAoAvAtIgJBAWo2AvAtIAAoAjwhBCACIAAoAuwtaiAAKAJoIgcgAC8BYEF/c2oiAjoAACAAIAAoAvAtIgVBAWo2AvAtIAUgACgC7C1qIAJBCHY6AAAgACAAKALwLSIFQQFqNgLwLSAFIAAoAuwtaiADQQNrOgAAIAAgACgCgC5BAWo2AoAuIANB/c4Aai0AAEECdCAAakHoCWoiAyADLwEAQQFqOwEAIAAgAkEBayICIAJBB3ZBgAJqIAJBgAJJG0GAywBqLQAAQQJ0akHYE2oiAiACLwEAQQFqOwEAIAAgACgCcCIFQQFrIgM2AnAgACAAKAI8IANrNgI8IAAoAvQtIQggACgC8C0hCSAEIAdqQQNrIgQgACgCaCICSwRAIAAgAkEBaiAEIAJrIgIgBUECayIEIAIgBEkbIAAoAoABEQUAIAAoAmghAgsgAEEANgJkIABBADYCcCAAIAIgA2oiBDYCaCAIIAlHDQJBACECIAAgACgCWCIDQQBOBH8gACgCSCADagVBAAsgBCADa0EAEA8gACAAKAJoNgJYIAAoAgAQCiAAKAIAKAIQDQIMAwsgACgCZARAIAAoAmggACgCSGpBAWstAAAhAyAAIAAoAvAtIgRBAWo2AvAtIAQgACgC7C1qQQA6AAAgACAAKALwLSIEQQFqNgLwLSAEIAAoAuwtakEAOgAAIAAgACgC8C0iBEEBajYC8C0gBCAAKALsLWogAzoAACAAIANBAnRqIgMgAy8B5AFBAWo7AeQBIAAoAvAtIAAoAvQtRgRAIAAgACgCWCIDQQBOBH8gACgCSCADagVBAAsgACgCaCADa0EAEA8gACAAKAJoNgJYIAAoAgAQCgsgACACNgJwIAAgACgCaEEBajYCaCAAIAAoAjxBAWs2AjwgACgCACgCEA0CQQAPBSAAQQE2AmQgACACNgJwIAAgACgCaEEBajYCaCAAIAAoAjxBAWs2AjwMAgsACwsgACgCZARAIAAoAmggACgCSGpBAWstAAAhAiAAIAAoAvAtIgNBAWo2AvAtIAMgACgC7C1qQQA6AAAgACAAKALwLSIDQQFqNgLwLSADIAAoAuwtakEAOgAAIAAgACgC8C0iA0EBajYC8C0gAyAAKALsLWogAjoAACAAIAJBAnRqIgIgAi8B5AFBAWo7AeQBIAAoAvAtIAAoAvQtRhogAEEANgJkCyAAIAAoAmgiA0ECIANBAkkbNgKELiABQQRGBEAgACAAKAJYIgFBAE4EfyAAKAJIIAFqBUEACyADIAFrQQEQDyAAIAAoAmg2AlggACgCABAKQQNBAiAAKAIAKAIQGw8LIAAoAvAtBEBBACECIAAgACgCWCIBQQBOBH8gACgCSCABagVBAAsgAyABa0EAEA8gACAAKAJoNgJYIAAoAgAQCiAAKAIAKAIQRQ0BC0EBIQILIAIL2BACEH8BfiAAKAKIAUEFSCEOA0ACQAJ/AkACQAJAAn8CQAJAIAAoAjxBhQJNBEAgABAvIAAoAjwiA0GFAksNASABDQFBAA8LIA4NASAIIQMgBSEHIAohDSAGQf//A3FFDQEMAwsgA0UNA0EAIANBBEkNARoLIAAgACgCaEH4gAEoAgARAgALIQZBASECQQAhDSAAKAJoIgOtIAatfSISQgFTDQIgEiAAKAIwQYYCa61VDQIgBkUNAiAAIAZB8IABKAIAEQIAIgZBASAGQfz/A3EbQQEgACgCbCINQf//A3EgA0H//wNxSRshBiADIQcLAkAgACgCPCIEIAZB//8DcSICQQRqTQ0AIAZB//8DcUEDTQRAQQEgBkEBa0H//wNxIglFDQQaIANB//8DcSIEIAdBAWpB//8DcSIDSw0BIAAgAyAJIAQgA2tBAWogAyAJaiAESxtB7IABKAIAEQUADAELAkAgACgCeEEEdCACSQ0AIARBBEkNACAGQQFrQf//A3EiDCAHQQFqQf//A3EiBGohCSAEIANB//8DcSIDTwRAQeyAASgCACELIAMgCUkEQCAAIAQgDCALEQUADAMLIAAgBCADIARrQQFqIAsRBQAMAgsgAyAJTw0BIAAgAyAJIANrQeyAASgCABEFAAwBCyAGIAdqQf//A3EiA0UNACAAIANBAWtB+IABKAIAEQIAGgsgBgwCCyAAIAAoAmgiBUECIAVBAkkbNgKELiABQQRGBEBBACEDIAAgACgCWCIBQQBOBH8gACgCSCABagVBAAsgBSABa0EBEA8gACAAKAJoNgJYIAAoAgAQCkEDQQIgACgCACgCEBsPCyAAKALwLQRAQQAhAkEAIQMgACAAKAJYIgFBAE4EfyAAKAJIIAFqBUEACyAFIAFrQQAQDyAAIAAoAmg2AlggACgCABAKIAAoAgAoAhBFDQMLQQEhAgwCCyADIQdBAQshBEEAIQYCQCAODQAgACgCPEGHAkkNACACIAdB//8DcSIQaiIDIAAoAkRBhgJrTw0AIAAgAzYCaEEAIQogACADQfiAASgCABECACEFAn8CQCAAKAJoIgitIAWtfSISQgFTDQAgEiAAKAIwQYYCa61VDQAgBUUNACAAIAVB8IABKAIAEQIAIQYgAC8BbCIKIAhB//8DcSIFTw0AIAZB//8DcSIDQQRJDQAgCCAEQf//A3FBAkkNARogCCACIApBAWpLDQEaIAggAiAFQQFqSw0BGiAIIAAoAkgiCSACa0EBaiICIApqLQAAIAIgBWotAABHDQEaIAggCUEBayICIApqIgwtAAAgAiAFaiIPLQAARw0BGiAIIAUgCCAAKAIwQYYCayICa0H//wNxQQAgAiAFSRsiEU0NARogCCADQf8BSw0BGiAGIQUgCCECIAQhAyAIIAoiCUECSQ0BGgNAAkAgA0EBayEDIAVBAWohCyAJQQFrIQkgAkEBayECIAxBAWsiDC0AACAPQQFrIg8tAABHDQAgA0H//wNxRQ0AIBEgAkH//wNxTw0AIAVB//8DcUH+AUsNACALIQUgCUH//wNxQQFLDQELCyAIIANB//8DcUEBSw0BGiAIIAtB//8DcUECRg0BGiAIQQFqIQggAyEEIAshBiAJIQogAgwBC0EBIQYgCAshBSAAIBA2AmgLAn8gBEH//wNxIgNBA00EQCAEQf//A3EiA0UNAyAAKAJIIAdB//8DcWotAAAhBCAAIAAoAvAtIgJBAWo2AvAtIAIgACgC7C1qQQA6AAAgACAAKALwLSICQQFqNgLwLSACIAAoAuwtakEAOgAAIAAgACgC8C0iAkEBajYC8C0gAiAAKALsLWogBDoAACAAIARBAnRqIgRB5AFqIAQvAeQBQQFqOwEAIAAgACgCPEEBazYCPCAAKALwLSICIAAoAvQtRiIEIANBAUYNARogACgCSCAHQQFqQf//A3FqLQAAIQkgACACQQFqNgLwLSAAKALsLSACakEAOgAAIAAgACgC8C0iAkEBajYC8C0gAiAAKALsLWpBADoAACAAIAAoAvAtIgJBAWo2AvAtIAIgACgC7C1qIAk6AAAgACAJQQJ0aiICQeQBaiACLwHkAUEBajsBACAAIAAoAjxBAWs2AjwgBCAAKALwLSICIAAoAvQtRmoiBCADQQJGDQEaIAAoAkggB0ECakH//wNxai0AACEHIAAgAkEBajYC8C0gACgC7C0gAmpBADoAACAAIAAoAvAtIgJBAWo2AvAtIAIgACgC7C1qQQA6AAAgACAAKALwLSICQQFqNgLwLSACIAAoAuwtaiAHOgAAIAAgB0ECdGoiB0HkAWogBy8B5AFBAWo7AQAgACAAKAI8QQFrNgI8IAQgACgC8C0gACgC9C1GagwBCyAAIAAoAvAtIgJBAWo2AvAtIAIgACgC7C1qIAdB//8DcSANQf//A3FrIgc6AAAgACAAKALwLSICQQFqNgLwLSACIAAoAuwtaiAHQQh2OgAAIAAgACgC8C0iAkEBajYC8C0gAiAAKALsLWogBEEDazoAACAAIAAoAoAuQQFqNgKALiADQf3OAGotAABBAnQgAGpB6AlqIgQgBC8BAEEBajsBACAAIAdBAWsiBCAEQQd2QYACaiAEQYACSRtBgMsAai0AAEECdGpB2BNqIgQgBC8BAEEBajsBACAAIAAoAjwgA2s2AjwgACgC8C0gACgC9C1GCyEEIAAgACgCaCADaiIHNgJoIARFDQFBACECQQAhBCAAIAAoAlgiA0EATgR/IAAoAkggA2oFQQALIAcgA2tBABAPIAAgACgCaDYCWCAAKAIAEAogACgCACgCEA0BCwsgAgu0BwIEfwF+AkADQAJAAkACQAJAIAAoAjxBhQJNBEAgABAvAkAgACgCPCICQYUCSw0AIAENAEEADwsgAkUNBCACQQRJDQELIAAgACgCaEH4gAEoAgARAgAhAiAANQJoIAKtfSIGQgFTDQAgBiAAKAIwQYYCa61VDQAgAkUNACAAIAJB8IABKAIAEQIAIgJBBEkNACAAIAAoAvAtIgNBAWo2AvAtIAMgACgC7C1qIAAoAmggACgCbGsiAzoAACAAIAAoAvAtIgRBAWo2AvAtIAQgACgC7C1qIANBCHY6AAAgACAAKALwLSIEQQFqNgLwLSAEIAAoAuwtaiACQQNrOgAAIAAgACgCgC5BAWo2AoAuIAJB/c4Aai0AAEECdCAAakHoCWoiBCAELwEAQQFqOwEAIAAgA0EBayIDIANBB3ZBgAJqIANBgAJJG0GAywBqLQAAQQJ0akHYE2oiAyADLwEAQQFqOwEAIAAgACgCPCACayIFNgI8IAAoAvQtIQMgACgC8C0hBCAAKAJ4IAJPQQAgBUEDSxsNASAAIAAoAmggAmoiAjYCaCAAIAJBAWtB+IABKAIAEQIAGiADIARHDQQMAgsgACgCSCAAKAJoai0AACECIAAgACgC8C0iA0EBajYC8C0gAyAAKALsLWpBADoAACAAIAAoAvAtIgNBAWo2AvAtIAMgACgC7C1qQQA6AAAgACAAKALwLSIDQQFqNgLwLSADIAAoAuwtaiACOgAAIAAgAkECdGoiAkHkAWogAi8B5AFBAWo7AQAgACAAKAI8QQFrNgI8IAAgACgCaEEBajYCaCAAKALwLSAAKAL0LUcNAwwBCyAAIAAoAmhBAWoiBTYCaCAAIAUgAkEBayICQeyAASgCABEFACAAIAAoAmggAmo2AmggAyAERw0CC0EAIQNBACECIAAgACgCWCIEQQBOBH8gACgCSCAEagVBAAsgACgCaCAEa0EAEA8gACAAKAJoNgJYIAAoAgAQCiAAKAIAKAIQDQEMAgsLIAAgACgCaCIEQQIgBEECSRs2AoQuIAFBBEYEQEEAIQIgACAAKAJYIgFBAE4EfyAAKAJIIAFqBUEACyAEIAFrQQEQDyAAIAAoAmg2AlggACgCABAKQQNBAiAAKAIAKAIQGw8LIAAoAvAtBEBBACEDQQAhAiAAIAAoAlgiAUEATgR/IAAoAkggAWoFQQALIAQgAWtBABAPIAAgACgCaDYCWCAAKAIAEAogACgCACgCEEUNAQtBASEDCyADC80JAgl/An4gAUEERiEGIAAoAiwhAgJAAkACQCABQQRGBEAgAkECRg0CIAIEQCAAQQAQUCAAQQA2AiwgACAAKAJoNgJYIAAoAgAQCiAAKAIAKAIQRQ0ECyAAIAYQTyAAQQI2AiwMAQsgAg0BIAAoAjxFDQEgACAGEE8gAEEBNgIsCyAAIAAoAmg2AlgLQQJBASABQQRGGyEKA0ACQCAAKAIMIAAoAhBBCGpLDQAgACgCABAKIAAoAgAiAigCEA0AQQAhAyABQQRHDQIgAigCBA0CIAAoAqAuDQIgACgCLEVBAXQPCwJAAkAgACgCPEGFAk0EQCAAEC8CQCAAKAI8IgNBhQJLDQAgAQ0AQQAPCyADRQ0CIAAoAiwEfyADBSAAIAYQTyAAIAo2AiwgACAAKAJoNgJYIAAoAjwLQQRJDQELIAAgACgCaEH4gAEoAgARAgAhBCAAKAJoIgKtIAStfSILQgFTDQAgCyAAKAIwQYYCa61VDQAgAiAAKAJIIgJqIgMvAAAgAiAEaiICLwAARw0AIANBAmogAkECakHQgAEoAgARAgBBAmoiA0EESQ0AIAAoAjwiAiADIAIgA0kbIgJBggIgAkGCAkkbIgdB/c4Aai0AACICQQJ0IgRBhMkAajMBACEMIARBhskAai8BACEDIAJBCGtBE00EQCAHQQNrIARBgNEAaigCAGutIAOthiAMhCEMIARBsNYAaigCACADaiEDCyAAKAKgLiEFIAMgC6dBAWsiCCAIQQd2QYACaiAIQYACSRtBgMsAai0AACICQQJ0IglBgsoAai8BAGohBCAJQYDKAGozAQAgA62GIAyEIQsgACkDmC4hDAJAIAUgAkEESQR/IAQFIAggCUGA0gBqKAIAa60gBK2GIAuEIQsgCUGw1wBqKAIAIARqCyICaiIDQT9NBEAgCyAFrYYgDIQhCwwBCyAFQcAARgRAIAAoAgQgACgCEGogDDcAACAAIAAoAhBBCGo2AhAgAiEDDAELIAAoAgQgACgCEGogCyAFrYYgDIQ3AAAgACAAKAIQQQhqNgIQIANBQGohAyALQcAAIAVrrYghCwsgACALNwOYLiAAIAM2AqAuIAAgACgCPCAHazYCPCAAIAAoAmggB2o2AmgMAgsgACgCSCAAKAJoai0AAEECdCICQYDBAGozAQAhCyAAKQOYLiEMAkAgACgCoC4iBCACQYLBAGovAQAiAmoiA0E/TQRAIAsgBK2GIAyEIQsMAQsgBEHAAEYEQCAAKAIEIAAoAhBqIAw3AAAgACAAKAIQQQhqNgIQIAIhAwwBCyAAKAIEIAAoAhBqIAsgBK2GIAyENwAAIAAgACgCEEEIajYCECADQUBqIQMgC0HAACAEa62IIQsLIAAgCzcDmC4gACADNgKgLiAAIAAoAmhBAWo2AmggACAAKAI8QQFrNgI8DAELCyAAIAAoAmgiAkECIAJBAkkbNgKELiAAKAIsIQIgAUEERgRAAkAgAkUNACAAQQEQUCAAQQA2AiwgACAAKAJoNgJYIAAoAgAQCiAAKAIAKAIQDQBBAg8LQQMPCyACBEBBACEDIABBABBQIABBADYCLCAAIAAoAmg2AlggACgCABAKIAAoAgAoAhBFDQELQQEhAwsgAwucAQEFfyACQQFOBEAgAiAAKAJIIAFqIgNqQQJqIQQgA0ECaiECIAAoAlQhAyAAKAJQIQUDQCAAIAItAAAgA0EFdEHg/wFxcyIDNgJUIAUgA0EBdGoiBi8BACIHIAFB//8DcUcEQCAAKAJMIAEgACgCOHFB//8DcUEBdGogBzsBACAGIAE7AQALIAFBAWohASACQQFqIgIgBEkNAAsLC1sBAn8gACAAKAJIIAFqLQACIAAoAlRBBXRB4P8BcXMiAjYCVCABIAAoAlAgAkEBdGoiAy8BACICRwRAIAAoAkwgACgCOCABcUEBdGogAjsBACADIAE7AQALIAILEwAgAUEFdEHg/wFxIAJB/wFxcwsGACABEAYLLwAjAEEQayIAJAAgAEEMaiABIAJsEIwBIQEgACgCDCECIABBEGokAEEAIAIgARsLjAoCAX4CfyMAQfAAayIGJAACQAJAAkACQAJAAkACQAJAIAQODwABBwIEBQYGBgYGBgYGAwYLQn8hBQJAIAAgBkHkAGpCDBARIgNCf1cEQCABBEAgASAAKAIMNgIAIAEgACgCEDYCBAsMAQsCQCADQgxSBEAgAQRAIAFBADYCBCABQRE2AgALDAELIAEoAhQhBEEAIQJCASEFA0AgBkHkAGogAmoiAiACLQAAIARB/f8DcSICQQJyIAJBA3NsQQh2cyICOgAAIAYgAjoAKCABAn8gASgCDEF/cyECQQAgBkEoaiIERQ0AGiACIARBAUHUgAEoAgARAAALQX9zIgI2AgwgASABKAIQIAJB/wFxakGFiKLAAGxBAWoiAjYCECAGIAJBGHY6ACggAQJ/IAEoAhRBf3MhAkEAIAZBKGoiBEUNABogAiAEQQFB1IABKAIAEQAAC0F/cyIENgIUIAVCDFIEQCAFpyECIAVCAXwhBQwBCwtCACEFIAAgBkEoahAhQQBIDQEgBigCUCEAIwBBEGsiAiQAIAIgADYCDCAGAn8gAkEMahCNASIARQRAIAZBITsBJEEADAELAn8gACgCFCIEQdAATgRAIARBCXQMAQsgAEHQADYCFEGAwAILIQQgBiAAKAIMIAQgACgCEEEFdGpqQaDAAWo7ASQgACgCBEEFdCAAKAIIQQt0aiAAKAIAQQF2ags7ASYgAkEQaiQAIAYtAG8iACAGLQBXRg0BIAYtACcgAEYNASABBEAgAUEANgIEIAFBGzYCAAsLQn8hBQsgBkHwAGokACAFDwtCfyEFIAAgAiADEBEiA0J/VwRAIAEEQCABIAAoAgw2AgAgASAAKAIQNgIECwwGCyMAQRBrIgAkAAJAIANQDQAgASgCFCEEIAJFBEBCASEFA0AgACACIAdqLQAAIARB/f8DcSIEQQJyIARBA3NsQQh2czoADyABAn8gASgCDEF/cyEEQQAgAEEPaiIHRQ0AGiAEIAdBAUHUgAEoAgARAAALQX9zIgQ2AgwgASABKAIQIARB/wFxakGFiKLAAGxBAWoiBDYCECAAIARBGHY6AA8gAQJ/IAEoAhRBf3MhBEEAIABBD2oiB0UNABogBCAHQQFB1IABKAIAEQAAC0F/cyIENgIUIAMgBVENAiAFpyEHIAVCAXwhBQwACwALQgEhBQNAIAAgAiAHai0AACAEQf3/A3EiBEECciAEQQNzbEEIdnMiBDoADyACIAdqIAQ6AAAgAQJ/IAEoAgxBf3MhBEEAIABBD2oiB0UNABogBCAHQQFB1IABKAIAEQAAC0F/cyIENgIMIAEgASgCECAEQf8BcWpBhYiiwABsQQFqIgQ2AhAgACAEQRh2OgAPIAECfyABKAIUQX9zIQRBACAAQQ9qIgdFDQAaIAQgB0EBQdSAASgCABEAAAtBf3MiBDYCFCADIAVRDQEgBachByAFQgF8IQUMAAsACyAAQRBqJAAgAyEFDAULIAJBADsBMiACIAIpAwAiA0KAAYQ3AwAgA0IIg1ANBCACIAIpAyBCDH03AyAMBAsgBkKFgICAcDcDECAGQoOAgIDAADcDCCAGQoGAgIAgNwMAQQAgBhAkIQUMAwsgA0IIWgR+IAIgASgCADYCACACIAEoAgQ2AgRCCAVCfwshBQwCCyABEAYMAQsgAQRAIAFBADYCBCABQRI2AgALQn8hBQsgBkHwAGokACAFC60DAgJ/An4jAEEQayIGJAACQAJAAkAgBEUNACABRQ0AIAJBAUYNAQtBACEDIABBCGoiAARAIABBADYCBCAAQRI2AgALDAELIANBAXEEQEEAIQMgAEEIaiIABEAgAEEANgIEIABBGDYCAAsMAQtBGBAJIgVFBEBBACEDIABBCGoiAARAIABBADYCBCAAQQ42AgALDAELIAVBADYCCCAFQgA3AgAgBUGQ8dmiAzYCFCAFQvis0ZGR8dmiIzcCDAJAIAQQIiICRQ0AIAKtIQhBACEDQYfTru5+IQJCASEHA0AgBiADIARqLQAAOgAPIAUgBkEPaiIDBH8gAiADQQFB1IABKAIAEQAABUEAC0F/cyICNgIMIAUgBSgCECACQf8BcWpBhYiiwABsQQFqIgI2AhAgBiACQRh2OgAPIAUCfyAFKAIUQX9zIQJBACAGQQ9qIgNFDQAaIAIgA0EBQdSAASgCABEAAAtBf3M2AhQgByAIUQ0BIAUoAgxBf3MhAiAHpyEDIAdCAXwhBwwACwALIAAgAUElIAUQQiIDDQAgBRAGQQAhAwsgBkEQaiQAIAMLnRoCBn4FfyMAQdAAayILJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADDhQFBhULAwQJDgACCBAKDw0HEQERDBELAkBByAAQCSIBBEAgAUIANwMAIAFCADcDMCABQQA2AiggAUIANwMgIAFCADcDGCABQgA3AxAgAUIANwMIIAFCADcDOCABQQgQCSIDNgIEIAMNASABEAYgAARAIABBADYCBCAAQQ42AgALCyAAQQA2AhQMFAsgA0IANwMAIAAgATYCFCABQUBrQgA3AwAgAUIANwM4DBQLAkACQCACUARAQcgAEAkiA0UNFCADQgA3AwAgA0IANwMwIANBADYCKCADQgA3AyAgA0IANwMYIANCADcDECADQgA3AwggA0IANwM4IANBCBAJIgE2AgQgAQ0BIAMQBiAABEAgAEEANgIEIABBDjYCAAsMFAsgAiAAKAIQIgEpAzBWBEAgAARAIABBADYCBCAAQRI2AgALDBQLIAEoAigEQCAABEAgAEEANgIEIABBHTYCAAsMFAsgASgCBCEDAkAgASkDCCIGQgF9IgdQDQADQAJAIAIgAyAHIAR9QgGIIAR8IgWnQQN0aikDAFQEQCAFQgF9IQcMAQsgBSAGUQRAIAYhBQwDCyADIAVCAXwiBKdBA3RqKQMAIAJWDQILIAQhBSAEIAdUDQALCwJAIAIgAyAFpyIKQQN0aikDAH0iBFBFBEAgASgCACIDIApBBHRqKQMIIQcMAQsgASgCACIDIAVCAX0iBadBBHRqKQMIIgchBAsgAiAHIAR9VARAIAAEQCAAQQA2AgQgAEEcNgIACwwUCyADIAVCAXwiBUEAIAAQiQEiA0UNEyADKAIAIAMoAggiCkEEdGpBCGsgBDcDACADKAIEIApBA3RqIAI3AwAgAyACNwMwIAMgASkDGCIGIAMpAwgiBEIBfSIHIAYgB1QbNwMYIAEgAzYCKCADIAE2AiggASAENwMgIAMgBTcDIAwBCyABQgA3AwALIAAgAzYCFCADIAQ3A0AgAyACNwM4QgAhBAwTCyAAKAIQIgEEQAJAIAEoAigiA0UEQCABKQMYIQIMAQsgA0EANgIoIAEoAihCADcDICABIAEpAxgiAiABKQMgIgUgAiAFVhsiAjcDGAsgASkDCCACVgRAA0AgASgCACACp0EEdGooAgAQBiACQgF8IgIgASkDCFQNAAsLIAEoAgAQBiABKAIEEAYgARAGCyAAKAIUIQEgAEEANgIUIAAgATYCEAwSCyACQghaBH4gASAAKAIANgIAIAEgACgCBDYCBEIIBUJ/CyEEDBELIAAoAhAiAQRAAkAgASgCKCIDRQRAIAEpAxghAgwBCyADQQA2AiggASgCKEIANwMgIAEgASkDGCICIAEpAyAiBSACIAVWGyICNwMYCyABKQMIIAJWBEADQCABKAIAIAKnQQR0aigCABAGIAJCAXwiAiABKQMIVA0ACwsgASgCABAGIAEoAgQQBiABEAYLIAAoAhQiAQRAAkAgASgCKCIDRQRAIAEpAxghAgwBCyADQQA2AiggASgCKEIANwMgIAEgASkDGCICIAEpAyAiBSACIAVWGyICNwMYCyABKQMIIAJWBEADQCABKAIAIAKnQQR0aigCABAGIAJCAXwiAiABKQMIVA0ACwsgASgCABAGIAEoAgQQBiABEAYLIAAQBgwQCyAAKAIQIgBCADcDOCAAQUBrQgA3AwAMDwsgAkJ/VwRAIAAEQCAAQQA2AgQgAEESNgIACwwOCyACIAAoAhAiAykDMCADKQM4IgZ9IgUgAiAFVBsiBVANDiABIAMpA0AiB6ciAEEEdCIBIAMoAgBqIgooAgAgBiADKAIEIABBA3RqKQMAfSICp2ogBSAKKQMIIAJ9IgYgBSAGVBsiBKcQByEKIAcgBCADKAIAIgAgAWopAwggAn1RrXwhAiAFIAZWBEADQCAKIASnaiAAIAKnQQR0IgFqIgAoAgAgBSAEfSIGIAApAwgiByAGIAdUGyIGpxAHGiACIAYgAygCACIAIAFqKQMIUa18IQIgBSAEIAZ8IgRWDQALCyADIAI3A0AgAyADKQM4IAR8NwM4DA4LQn8hBEHIABAJIgNFDQ0gA0IANwMAIANCADcDMCADQQA2AiggA0IANwMgIANCADcDGCADQgA3AxAgA0IANwMIIANCADcDOCADQQgQCSIBNgIEIAFFBEAgAxAGIAAEQCAAQQA2AgQgAEEONgIACwwOCyABQgA3AwAgACgCECIBBEACQCABKAIoIgpFBEAgASkDGCEEDAELIApBADYCKCABKAIoQgA3AyAgASABKQMYIgIgASkDICIFIAIgBVYbIgQ3AxgLIAEpAwggBFYEQANAIAEoAgAgBKdBBHRqKAIAEAYgBEIBfCIEIAEpAwhUDQALCyABKAIAEAYgASgCBBAGIAEQBgsgACADNgIQQgAhBAwNCyAAKAIUIgEEQAJAIAEoAigiA0UEQCABKQMYIQIMAQsgA0EANgIoIAEoAihCADcDICABIAEpAxgiAiABKQMgIgUgAiAFVhsiAjcDGAsgASkDCCACVgRAA0AgASgCACACp0EEdGooAgAQBiACQgF8IgIgASkDCFQNAAsLIAEoAgAQBiABKAIEEAYgARAGCyAAQQA2AhQMDAsgACgCECIDKQM4IAMpAzAgASACIAAQRCIHQgBTDQogAyAHNwM4AkAgAykDCCIGQgF9IgJQDQAgAygCBCEAA0ACQCAHIAAgAiAEfUIBiCAEfCIFp0EDdGopAwBUBEAgBUIBfSECDAELIAUgBlEEQCAGIQUMAwsgACAFQgF8IgSnQQN0aikDACAHVg0CCyAEIQUgAiAEVg0ACwsgAyAFNwNAQgAhBAwLCyAAKAIUIgMpAzggAykDMCABIAIgABBEIgdCAFMNCSADIAc3AzgCQCADKQMIIgZCAX0iAlANACADKAIEIQADQAJAIAcgACACIAR9QgGIIAR8IgWnQQN0aikDAFQEQCAFQgF9IQIMAQsgBSAGUQRAIAYhBQwDCyAAIAVCAXwiBKdBA3RqKQMAIAdWDQILIAQhBSACIARWDQALCyADIAU3A0BCACEEDAoLIAJCN1gEQCAABEAgAEEANgIEIABBEjYCAAsMCQsgARAqIAEgACgCDDYCKCAAKAIQKQMwIQIgAUEANgIwIAEgAjcDICABIAI3AxggAULcATcDAEI4IQQMCQsgACABKAIANgIMDAgLIAtBQGtBfzYCACALQouAgICwAjcDOCALQoyAgIDQATcDMCALQo+AgICgATcDKCALQpGAgICQATcDICALQoeAgICAATcDGCALQoWAgIDgADcDECALQoOAgIDAADcDCCALQoGAgIAgNwMAQQAgCxAkIQQMBwsgACgCECkDOCIEQn9VDQYgAARAIABBPTYCBCAAQR42AgALDAULIAAoAhQpAzgiBEJ/VQ0FIAAEQCAAQT02AgQgAEEeNgIACwwEC0J/IQQgAkJ/VwRAIAAEQCAAQQA2AgQgAEESNgIACwwFCyACIAAoAhQiAykDOCACfCIFQv//A3wiBFYEQCAABEAgAEEANgIEIABBEjYCAAsMBAsCQCAFIAMoAgQiCiADKQMIIganQQN0aikDACIHWA0AAkAgBCAHfUIQiCAGfCIIIAMpAxAiCVgNAEIQIAkgCVAbIQUDQCAFIgRCAYYhBSAEIAhUDQALIAQgCVQNACADKAIAIASnIgpBBHQQNCIMRQ0DIAMgDDYCACADKAIEIApBA3RBCGoQNCIKRQ0DIAMgBDcDECADIAo2AgQgAykDCCEGCyAGIAhaDQAgAygCACEMA0AgDCAGp0EEdGoiDUGAgAQQCSIONgIAIA5FBEAgAARAIABBADYCBCAAQQ42AgALDAYLIA1CgIAENwMIIAMgBkIBfCIFNwMIIAogBadBA3RqIAdCgIAEfCIHNwMAIAMpAwgiBiAIVA0ACwsgAykDQCEFIAMpAzghBwJAIAJQBEBCACEEDAELIAWnIgBBBHQiDCADKAIAaiINKAIAIAcgCiAAQQN0aikDAH0iBqdqIAEgAiANKQMIIAZ9IgcgAiAHVBsiBKcQBxogBSAEIAMoAgAiACAMaikDCCAGfVGtfCEFIAIgB1YEQANAIAAgBadBBHQiCmoiACgCACABIASnaiACIAR9IgYgACkDCCIHIAYgB1QbIganEAcaIAUgBiADKAIAIgAgCmopAwhRrXwhBSAEIAZ8IgQgAlQNAAsLIAMpAzghBwsgAyAFNwNAIAMgBCAHfCICNwM4IAIgAykDMFgNBCADIAI3AzAMBAsgAARAIABBADYCBCAAQRw2AgALDAILIAAEQCAAQQA2AgQgAEEONgIACyAABEAgAEEANgIEIABBDjYCAAsMAQsgAEEANgIUC0J/IQQLIAtB0ABqJAAgBAtIAQF/IABCADcCBCAAIAE2AgACQCABQQBIDQBBsBMoAgAgAUwNACABQQJ0QcATaigCAEEBRw0AQYSEASgCACECCyAAIAI2AgQLDgAgAkGx893xeWxBEHYLvgEAIwBBEGsiACQAIABBADoACEGAgQFBAjYCAEH8gAFBAzYCAEH4gAFBBDYCAEH0gAFBBTYCAEHwgAFBBjYCAEHsgAFBBzYCAEHogAFBCDYCAEHkgAFBCTYCAEHggAFBCjYCAEHcgAFBCzYCAEHYgAFBDDYCAEHUgAFBDTYCAEHQgAFBDjYCAEHMgAFBDzYCAEHIgAFBEDYCAEHEgAFBETYCAEHAgAFBEjYCACAAQRBqJAAgAkGx893xeWxBEHYLuQEBAX8jAEEQayIBJAAgAUEAOgAIQYCBAUECNgIAQfyAAUEDNgIAQfiAAUEENgIAQfSAAUEFNgIAQfCAAUEGNgIAQeyAAUEHNgIAQeiAAUEINgIAQeSAAUEJNgIAQeCAAUEKNgIAQdyAAUELNgIAQdiAAUEMNgIAQdSAAUENNgIAQdCAAUEONgIAQcyAAUEPNgIAQciAAUEQNgIAQcSAAUERNgIAQcCAAUESNgIAIAAQjgEgAUEQaiQAC78BAQF/IwBBEGsiAiQAIAJBADoACEGAgQFBAjYCAEH8gAFBAzYCAEH4gAFBBDYCAEH0gAFBBTYCAEHwgAFBBjYCAEHsgAFBBzYCAEHogAFBCDYCAEHkgAFBCTYCAEHggAFBCjYCAEHcgAFBCzYCAEHYgAFBDDYCAEHUgAFBDTYCAEHQgAFBDjYCAEHMgAFBDzYCAEHIgAFBEDYCAEHEgAFBETYCAEHAgAFBEjYCACAAIAEQkAEhACACQRBqJAAgAAu+AQEBfyMAQRBrIgIkACACQQA6AAhBgIEBQQI2AgBB/IABQQM2AgBB+IABQQQ2AgBB9IABQQU2AgBB8IABQQY2AgBB7IABQQc2AgBB6IABQQg2AgBB5IABQQk2AgBB4IABQQo2AgBB3IABQQs2AgBB2IABQQw2AgBB1IABQQ02AgBB0IABQQ42AgBBzIABQQ82AgBByIABQRA2AgBBxIABQRE2AgBBwIABQRI2AgAgACABEFohACACQRBqJAAgAAu+AQEBfyMAQRBrIgIkACACQQA6AAhBgIEBQQI2AgBB/IABQQM2AgBB+IABQQQ2AgBB9IABQQU2AgBB8IABQQY2AgBB7IABQQc2AgBB6IABQQg2AgBB5IABQQk2AgBB4IABQQo2AgBB3IABQQs2AgBB2IABQQw2AgBB1IABQQ02AgBB0IABQQ42AgBBzIABQQ82AgBByIABQRA2AgBBxIABQRE2AgBBwIABQRI2AgAgACABEFshACACQRBqJAAgAAu9AQEBfyMAQRBrIgMkACADQQA6AAhBgIEBQQI2AgBB/IABQQM2AgBB+IABQQQ2AgBB9IABQQU2AgBB8IABQQY2AgBB7IABQQc2AgBB6IABQQg2AgBB5IABQQk2AgBB4IABQQo2AgBB3IABQQs2AgBB2IABQQw2AgBB1IABQQ02AgBB0IABQQ42AgBBzIABQQ82AgBByIABQRA2AgBBxIABQRE2AgBBwIABQRI2AgAgACABIAIQjwEgA0EQaiQAC4UBAgR/AX4jAEEQayIBJAACQCAAKQMwUARADAELA0ACQCAAIAVBACABQQ9qIAFBCGoQZiIEQX9GDQAgAS0AD0EDRw0AIAIgASgCCEGAgICAf3FBgICAgHpGaiECC0F/IQMgBEF/Rg0BIAIhAyAFQgF8IgUgACkDMFQNAAsLIAFBEGokACADCwuMdSUAQYAIC7ELaW5zdWZmaWNpZW50IG1lbW9yeQBuZWVkIGRpY3Rpb25hcnkALSsgICAwWDB4AFppcCBhcmNoaXZlIGluY29uc2lzdGVudABJbnZhbGlkIGFyZ3VtZW50AGludmFsaWQgbGl0ZXJhbC9sZW5ndGhzIHNldABpbnZhbGlkIGNvZGUgbGVuZ3RocyBzZXQAdW5rbm93biBoZWFkZXIgZmxhZ3Mgc2V0AGludmFsaWQgZGlzdGFuY2VzIHNldABpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0AEZpbGUgYWxyZWFkeSBleGlzdHMAdG9vIG1hbnkgbGVuZ3RoIG9yIGRpc3RhbmNlIHN5bWJvbHMAaW52YWxpZCBzdG9yZWQgYmxvY2sgbGVuZ3RocwAlcyVzJXMAYnVmZmVyIGVycm9yAE5vIGVycm9yAHN0cmVhbSBlcnJvcgBUZWxsIGVycm9yAEludGVybmFsIGVycm9yAFNlZWsgZXJyb3IAV3JpdGUgZXJyb3IAZmlsZSBlcnJvcgBSZWFkIGVycm9yAFpsaWIgZXJyb3IAZGF0YSBlcnJvcgBDUkMgZXJyb3IAaW5jb21wYXRpYmxlIHZlcnNpb24AaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrAGluY29ycmVjdCBoZWFkZXIgY2hlY2sAaW5jb3JyZWN0IGxlbmd0aCBjaGVjawBpbmNvcnJlY3QgZGF0YSBjaGVjawBpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjawBoZWFkZXIgY3JjIG1pc21hdGNoADEuMi4xMy56bGliLW5nAGludmFsaWQgd2luZG93IHNpemUAUmVhZC1vbmx5IGFyY2hpdmUATm90IGEgemlwIGFyY2hpdmUAUmVzb3VyY2Ugc3RpbGwgaW4gdXNlAE1hbGxvYyBmYWlsdXJlAGludmFsaWQgYmxvY2sgdHlwZQBGYWlsdXJlIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgZmlsZQBDYW4ndCBvcGVuIGZpbGUATm8gc3VjaCBmaWxlAFByZW1hdHVyZSBlbmQgb2YgZmlsZQBDYW4ndCByZW1vdmUgZmlsZQBpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUAaW52YWxpZCBkaXN0YW5jZSBjb2RlAHVua25vd24gY29tcHJlc3Npb24gbWV0aG9kAHN0cmVhbSBlbmQAQ29tcHJlc3NlZCBkYXRhIGludmFsaWQATXVsdGktZGlzayB6aXAgYXJjaGl2ZXMgbm90IHN1cHBvcnRl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UgAIANIACAAyAAgAsgAIAHIACADyAAgACgAIAIoACABKAAgAygAIACoACACqAAgAagAIAOoACAAaAAgAmgAIAFoACADaAAgAOgAIALoACAB6AAgA+gAIAAYACACGAAgARgAIAMYACAAmAAgApgAIAGYACADmAAgAFgAIAJYACABWAAgA1gAIADYACAC2AAgAdgAIAPYACAAOAAgAjgAIAE4ACADOAAgALgAIAK4ACABuAAgA7gAIAB4ACACeAAgAXgAIAN4ACAA+AAgAvgAIAH4ACAD+AAgAAQAIAIEACABBAAgAwQAIACEACAChAAgAYQAIAOEACAARAAgAkQAIAFEACADRAAgAMQAIALEACABxAAgA8QAIAAkACACJAAgASQAIAMkACAApAAgAqQAIAGkACADpAAgAGQAIAJkACABZAAgA2QAIADkACAC5AAgAeQAIAPkACAAFAAgAhQAIAEUACADFAAgAJQAIAKUACABlAAgA5QAIABUACACVAAgAVQAIANUACAA1AAgAtQAIAHUACAD1AAgADQAIAI0ACABNAAgAzQAIAC0ACACtAAgAbQAIAO0ACAAdAAgAnQAIAF0ACADdAAgAPQAIAL0ACAB9AAgA/QAIABMACQATAQkAkwAJAJMBCQBTAAkAUwEJANMACQDTAQkAMwAJADMBCQCzAAkAswEJAHMACQBzAQkA8wAJAPMBCQALAAkACwEJAIsACQCLAQkASwAJAEsBCQDLAAkAywEJACsACQArAQkAqwAJAKsBCQBrAAkAawEJAOsACQDrAQkAGwAJABsBCQCbAAkAmwEJAFsACQBbAQkA2wAJANsBCQA7AAkAOwEJALsACQC7AQkAewAJAHsBCQD7AAkA+wEJAAcACQAHAQkAhwAJAIcBCQBHAAkARwEJAMcACQDHAQkAJwAJACcBCQCnAAkApwEJAGcACQBnAQkA5wAJAOcBCQAXAAkAFwEJAJcACQCXAQkAVwAJAFcBCQDXAAkA1wEJADcACQA3AQkAtwAJALcBCQB3AAkAdwEJAPcACQD3AQkADwAJAA8BCQCPAAkAjwEJAE8ACQBPAQkAzwAJAM8BCQAvAAkALwEJAK8ACQCvAQkAbwAJAG8BCQDvAAkA7wEJAB8ACQAfAQkAnwAJAJ8BCQBfAAkAXwEJAN8ACQDfAQkAPwAJAD8BCQC/AAkA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SXMgYSBkaXJlY3RvcnkAVGV4dCBmaWxlIGJ1c3kARXhlYyBmb3JtYXQgZXJyb3IASW52YWxpZCBhcmd1bWVudABBcmd1bWVudCBsaXN0IHRvbyBsb25nAFN5bWJvbGljIGxpbmsgbG9vcABGaWxlbmFtZSB0b28gbG9uZwBUb28gbWFueSBvcGVuIGZpbGVzIGluIHN5c3RlbQBObyBmaWxlIGRlc2NyaXB0b3JzIGF2YWlsYWJsZQBCYWQgZmlsZSBkZXNjcmlwdG9yAE5vIGNoaWxkIHByb2Nlc3MAQmFkIGFkZHJlc3MARmlsZSB0b28gbGFyZ2UAVG9vIG1hbnkgbGlua3MATm8gbG9ja3MgYXZhaWxhYmxlAFJlc291cmNlIGRlYWRsb2NrIHdvdWxkIG9jY3VyAFN0YXRlIG5vdCByZWNvdmVyYWJsZQBQcmV2aW91cyBvd25lciBkaWVkAE9wZXJhdGlvbiBjYW5jZWxlZABGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQATm8gbWVzc2FnZSBvZiBkZXNpcmVkIHR5cGUASWRlbnRpZmllciByZW1vdmVkAERldmljZSBub3QgYSBzdHJlYW0ATm8gZGF0YSBhdmFpbGFibGUARGV2aWNlIHRpbWVvdXQAT3V0IG9mIHN0cmVhbXMgcmVzb3VyY2VzAExpbmsgaGFzIGJlZW4gc2V2ZXJlZABQcm90b2NvbCBlcnJvcgBCYWQgbWVzc2FnZQBGaWxlIGRlc2NyaXB0b3IgaW4gYmFkIHN0YXRlAE5vdCBhIHNvY2tldABEZXN0aW5hdGlvbiBhZGRyZXNzIHJlcXVpcmVkAE1lc3NhZ2UgdG9vIGxhcmdlAFByb3RvY29sIHdyb25nIHR5cGUgZm9yIHNvY2tldABQcm90b2NvbCBub3QgYXZhaWxhYmxlAFByb3RvY29sIG5vdCBzdXBwb3J0ZWQAU29ja2V0IHR5cGUgbm90IHN1cHBvcnRlZABOb3Qgc3VwcG9ydGVkAFByb3RvY29sIGZhbWlseSBub3Qgc3VwcG9ydGVkAEFkZHJlc3MgZmFtaWx5IG5vdCBzdXBwb3J0ZWQgYnkgcHJvdG9jb2wAQWRkcmVzcyBub3QgYXZhaWxhYmxlAE5ldHdvcmsgaXMgZG93bgBOZXR3b3JrIHVucmVhY2hhYmxlAENvbm5lY3Rpb24gcmVzZXQgYnkgbmV0d29yawBDb25uZWN0aW9uIGFib3J0ZWQATm8gYnVmZmVyIHNwYWNlIGF2YWlsYWJsZQBTb2NrZXQgaXMgY29ubmVjdGVkAFNvY2tldCBub3QgY29ubmVjdGVkAENhbm5vdCBzZW5kIGFmdGVyIHNvY2tldCBzaHV0ZG93bgBPcGVyYXRpb24gYWxyZWFkeSBpbiBwcm9ncmVzcwBPcGVyYXRpb24gaW4gcHJvZ3Jlc3MAU3RhbGUgZmlsZSBoYW5kbGUAUmVtb3RlIEkvTyBlcnJvcgBRdW90YSBleGNlZWRlZABObyBtZWRpdW0gZm91bmQAV3JvbmcgbWVkaXVtIHR5cGUATm8gZXJyb3IgaW5mb3JtYXRpb24AQcCAAQuFARMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAgERQADEAAAAyAAAAMwAAADQAAAA1AAAANgAAADcAAAA4AAAAOQAAADIAAAAzAAAANAAAADUAAAA2AAAANwAAADgAQfSCAQsCXEQAQbCDAQsQ/////////////////////w==";Do(ji)||(ji=x(ji));function oo(Je){try{if(Je==ji&&ae)return new Uint8Array(ae);var ot=Ue(Je);if(ot)return ot;if(T)return T(Je);throw"sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)"}catch(St){ns(St)}}function bo(Je,ot){var St,lr,ee;try{ee=oo(Je),lr=new WebAssembly.Module(ee),St=new WebAssembly.Instance(lr,ot)}catch(Oe){var ye=Oe.toString();throw te("failed to compile wasm module: "+ye),(ye.includes("imported Memory")||ye.includes("memory import"))&&te("Memory size incompatibility issues may be due to changing INITIAL_MEMORY at runtime to something too large. Use ALLOW_MEMORY_GROWTH to allow any size memory (and also make sure not to set INITIAL_MEMORY at runtime to something smaller than it was at compile time)."),Oe}return[St,lr]}function RA(){var Je={a:au};function ot(ee,ye){var Oe=ee.exports;r.asm=Oe,Ce=r.asm.g,z(Ce.buffer),$=r.asm.W,dn(r.asm.h),So("wasm-instantiate")}if(li("wasm-instantiate"),r.instantiateWasm)try{var St=r.instantiateWasm(Je,ot);return St}catch(ee){return te("Module.instantiateWasm callback failed with error: "+ee),!1}var lr=bo(ji,Je);return ot(lr[0]),r.asm}function hf(Je){return F.getFloat32(Je,!0)}function hh(Je){return F.getFloat64(Je,!0)}function gh(Je){return F.getInt16(Je,!0)}function ao(Je){return F.getInt32(Je,!0)}function Gn(Je,ot){F.setInt32(Je,ot,!0)}function Ns(Je){for(;Je.length>0;){var ot=Je.shift();if(typeof ot=="function"){ot(r);continue}var St=ot.func;typeof St=="number"?ot.arg===void 0?$.get(St)():$.get(St)(ot.arg):St(ot.arg===void 0?null:ot.arg)}}function lo(Je,ot){var St=new Date(ao((Je>>2)*4)*1e3);Gn((ot>>2)*4,St.getUTCSeconds()),Gn((ot+4>>2)*4,St.getUTCMinutes()),Gn((ot+8>>2)*4,St.getUTCHours()),Gn((ot+12>>2)*4,St.getUTCDate()),Gn((ot+16>>2)*4,St.getUTCMonth()),Gn((ot+20>>2)*4,St.getUTCFullYear()-1900),Gn((ot+24>>2)*4,St.getUTCDay()),Gn((ot+36>>2)*4,0),Gn((ot+32>>2)*4,0);var lr=Date.UTC(St.getUTCFullYear(),0,1,0,0,0,0),ee=(St.getTime()-lr)/(1e3*60*60*24)|0;return Gn((ot+28>>2)*4,ee),lo.GMTString||(lo.GMTString=tt("GMT")),Gn((ot+40>>2)*4,lo.GMTString),ot}function iu(Je,ot){return lo(Je,ot)}function su(Je,ot,St){Re.copyWithin(Je,ot,ot+St)}function ou(Je){try{return Ce.grow(Je-be.byteLength+65535>>>16),z(Ce.buffer),1}catch{}}function TA(Je){var ot=Re.length;Je=Je>>>0;var St=2147483648;if(Je>St)return!1;for(var lr=1;lr<=4;lr*=2){var ee=ot*(1+.2/lr);ee=Math.min(ee,Je+100663296);var ye=Math.min(St,ke(Math.max(Je,ee),65536)),Oe=ou(ye);if(Oe)return!0}return!1}function FA(Je){ue(Je)}function ua(Je){var ot=Date.now()/1e3|0;return Je&&Gn((Je>>2)*4,ot),ot}function fa(){if(fa.called)return;fa.called=!0;var Je=new Date().getFullYear(),ot=new Date(Je,0,1),St=new Date(Je,6,1),lr=ot.getTimezoneOffset(),ee=St.getTimezoneOffset(),ye=Math.max(lr,ee);Gn((kl()>>2)*4,ye*60),Gn((Bs()>>2)*4,+(lr!=ee));function Oe(pn){var ci=pn.toTimeString().match(/\(([A-Za-z ]+)\)$/);return ci?ci[1]:"GMT"}var mt=Oe(ot),Et=Oe(St),bt=tt(mt),tr=tt(Et);ee>2)*4,bt),Gn((Mi()+4>>2)*4,tr)):(Gn((Mi()>>2)*4,tr),Gn((Mi()+4>>2)*4,bt))}function NA(Je){fa();var ot=Date.UTC(ao((Je+20>>2)*4)+1900,ao((Je+16>>2)*4),ao((Je+12>>2)*4),ao((Je+8>>2)*4),ao((Je+4>>2)*4),ao((Je>>2)*4),0),St=new Date(ot);Gn((Je+24>>2)*4,St.getUTCDay());var lr=Date.UTC(St.getUTCFullYear(),0,1,0,0,0,0),ee=(St.getTime()-lr)/(1e3*60*60*24)|0;return Gn((Je+28>>2)*4,ee),St.getTime()/1e3|0}var gr=typeof atob=="function"?atob:function(Je){var ot="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",St="",lr,ee,ye,Oe,mt,Et,bt,tr=0;Je=Je.replace(/[^A-Za-z0-9\+\/\=]/g,"");do Oe=ot.indexOf(Je.charAt(tr++)),mt=ot.indexOf(Je.charAt(tr++)),Et=ot.indexOf(Je.charAt(tr++)),bt=ot.indexOf(Je.charAt(tr++)),lr=Oe<<2|mt>>4,ee=(mt&15)<<4|Et>>2,ye=(Et&3)<<6|bt,St=St+String.fromCharCode(lr),Et!==64&&(St=St+String.fromCharCode(ee)),bt!==64&&(St=St+String.fromCharCode(ye));while(tr0||(Ct(),Ir>0))return;function ot(){Tn||(Tn=!0,r.calledRun=!0,!Ee&&(qt(),s(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),ir()))}r.setStatus?(r.setStatus("Running..."),setTimeout(function(){setTimeout(function(){r.setStatus("")},1),ot()},1)):ot()}if(r.run=pc,r.preInit)for(typeof r.preInit=="function"&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();return pc(),t}}();typeof CR=="object"&&typeof Aj=="object"?Aj.exports=fj:typeof define=="function"&&define.amd?define([],function(){return fj}):typeof CR=="object"&&(CR.createModule=fj)});var _p,RAe,TAe,FAe=Ze(()=>{_p=["number","number"],RAe=(X=>(X[X.ZIP_ER_OK=0]="ZIP_ER_OK",X[X.ZIP_ER_MULTIDISK=1]="ZIP_ER_MULTIDISK",X[X.ZIP_ER_RENAME=2]="ZIP_ER_RENAME",X[X.ZIP_ER_CLOSE=3]="ZIP_ER_CLOSE",X[X.ZIP_ER_SEEK=4]="ZIP_ER_SEEK",X[X.ZIP_ER_READ=5]="ZIP_ER_READ",X[X.ZIP_ER_WRITE=6]="ZIP_ER_WRITE",X[X.ZIP_ER_CRC=7]="ZIP_ER_CRC",X[X.ZIP_ER_ZIPCLOSED=8]="ZIP_ER_ZIPCLOSED",X[X.ZIP_ER_NOENT=9]="ZIP_ER_NOENT",X[X.ZIP_ER_EXISTS=10]="ZIP_ER_EXISTS",X[X.ZIP_ER_OPEN=11]="ZIP_ER_OPEN",X[X.ZIP_ER_TMPOPEN=12]="ZIP_ER_TMPOPEN",X[X.ZIP_ER_ZLIB=13]="ZIP_ER_ZLIB",X[X.ZIP_ER_MEMORY=14]="ZIP_ER_MEMORY",X[X.ZIP_ER_CHANGED=15]="ZIP_ER_CHANGED",X[X.ZIP_ER_COMPNOTSUPP=16]="ZIP_ER_COMPNOTSUPP",X[X.ZIP_ER_EOF=17]="ZIP_ER_EOF",X[X.ZIP_ER_INVAL=18]="ZIP_ER_INVAL",X[X.ZIP_ER_NOZIP=19]="ZIP_ER_NOZIP",X[X.ZIP_ER_INTERNAL=20]="ZIP_ER_INTERNAL",X[X.ZIP_ER_INCONS=21]="ZIP_ER_INCONS",X[X.ZIP_ER_REMOVE=22]="ZIP_ER_REMOVE",X[X.ZIP_ER_DELETED=23]="ZIP_ER_DELETED",X[X.ZIP_ER_ENCRNOTSUPP=24]="ZIP_ER_ENCRNOTSUPP",X[X.ZIP_ER_RDONLY=25]="ZIP_ER_RDONLY",X[X.ZIP_ER_NOPASSWD=26]="ZIP_ER_NOPASSWD",X[X.ZIP_ER_WRONGPASSWD=27]="ZIP_ER_WRONGPASSWD",X[X.ZIP_ER_OPNOTSUPP=28]="ZIP_ER_OPNOTSUPP",X[X.ZIP_ER_INUSE=29]="ZIP_ER_INUSE",X[X.ZIP_ER_TELL=30]="ZIP_ER_TELL",X[X.ZIP_ER_COMPRESSED_DATA=31]="ZIP_ER_COMPRESSED_DATA",X))(RAe||{}),TAe=e=>({get HEAPU8(){return e.HEAPU8},errors:RAe,SEEK_SET:0,SEEK_CUR:1,SEEK_END:2,ZIP_CHECKCONS:4,ZIP_EXCL:2,ZIP_RDONLY:16,ZIP_FL_OVERWRITE:8192,ZIP_FL_COMPRESSED:4,ZIP_OPSYS_DOS:0,ZIP_OPSYS_AMIGA:1,ZIP_OPSYS_OPENVMS:2,ZIP_OPSYS_UNIX:3,ZIP_OPSYS_VM_CMS:4,ZIP_OPSYS_ATARI_ST:5,ZIP_OPSYS_OS_2:6,ZIP_OPSYS_MACINTOSH:7,ZIP_OPSYS_Z_SYSTEM:8,ZIP_OPSYS_CPM:9,ZIP_OPSYS_WINDOWS_NTFS:10,ZIP_OPSYS_MVS:11,ZIP_OPSYS_VSE:12,ZIP_OPSYS_ACORN_RISC:13,ZIP_OPSYS_VFAT:14,ZIP_OPSYS_ALTERNATE_MVS:15,ZIP_OPSYS_BEOS:16,ZIP_OPSYS_TANDEM:17,ZIP_OPSYS_OS_400:18,ZIP_OPSYS_OS_X:19,ZIP_CM_DEFAULT:-1,ZIP_CM_STORE:0,ZIP_CM_DEFLATE:8,uint08S:e._malloc(1),uint32S:e._malloc(4),malloc:e._malloc,free:e._free,getValue:e.getValue,openFromSource:e.cwrap("zip_open_from_source","number",["number","number","number"]),close:e.cwrap("zip_close","number",["number"]),discard:e.cwrap("zip_discard",null,["number"]),getError:e.cwrap("zip_get_error","number",["number"]),getName:e.cwrap("zip_get_name","string",["number","number","number"]),getNumEntries:e.cwrap("zip_get_num_entries","number",["number","number"]),delete:e.cwrap("zip_delete","number",["number","number"]),statIndex:e.cwrap("zip_stat_index","number",["number",..._p,"number","number"]),fopenIndex:e.cwrap("zip_fopen_index","number",["number",..._p,"number"]),fread:e.cwrap("zip_fread","number",["number","number","number","number"]),fclose:e.cwrap("zip_fclose","number",["number"]),dir:{add:e.cwrap("zip_dir_add","number",["number","string"])},file:{add:e.cwrap("zip_file_add","number",["number","string","number","number"]),getError:e.cwrap("zip_file_get_error","number",["number"]),getExternalAttributes:e.cwrap("zip_file_get_external_attributes","number",["number",..._p,"number","number","number"]),setExternalAttributes:e.cwrap("zip_file_set_external_attributes","number",["number",..._p,"number","number","number"]),setMtime:e.cwrap("zip_file_set_mtime","number",["number",..._p,"number","number"]),setCompression:e.cwrap("zip_set_file_compression","number",["number",..._p,"number","number"])},ext:{countSymlinks:e.cwrap("zip_ext_count_symlinks","number",["number"])},error:{initWithCode:e.cwrap("zip_error_init_with_code",null,["number","number"]),strerror:e.cwrap("zip_error_strerror","string",["number"])},name:{locate:e.cwrap("zip_name_locate","number",["number","string","number"])},source:{fromUnattachedBuffer:e.cwrap("zip_source_buffer_create","number",["number",..._p,"number","number"]),fromBuffer:e.cwrap("zip_source_buffer","number",["number","number",..._p,"number"]),free:e.cwrap("zip_source_free",null,["number"]),keep:e.cwrap("zip_source_keep",null,["number"]),open:e.cwrap("zip_source_open","number",["number"]),close:e.cwrap("zip_source_close","number",["number"]),seek:e.cwrap("zip_source_seek","number",["number",..._p,"number"]),tell:e.cwrap("zip_source_tell","number",["number"]),read:e.cwrap("zip_source_read","number",["number","number","number"]),error:e.cwrap("zip_source_error","number",["number"])},struct:{statS:e.cwrap("zipstruct_statS","number",[]),statSize:e.cwrap("zipstruct_stat_size","number",["number"]),statCompSize:e.cwrap("zipstruct_stat_comp_size","number",["number"]),statCompMethod:e.cwrap("zipstruct_stat_comp_method","number",["number"]),statMtime:e.cwrap("zipstruct_stat_mtime","number",["number"]),statCrc:e.cwrap("zipstruct_stat_crc","number",["number"]),errorS:e.cwrap("zipstruct_errorS","number",[]),errorCodeZip:e.cwrap("zipstruct_error_code_zip","number",["number"])}})});function pj(e,t){let r=e.indexOf(t);if(r<=0)return null;let s=r;for(;r>=0&&(s=r+t.length,e[s]!==K.sep);){if(e[r-1]===K.sep)return null;r=e.indexOf(t,s)}return e.length>s&&e[s]!==K.sep?null:e.slice(0,s)}var tA,NAe=Ze(()=>{Dt();Dt();rA();tA=class e extends Xh{static async openPromise(t,r){let s=new e(r);try{return await t(s)}finally{s.saveAndClose()}}constructor(t={}){let r=t.fileExtensions,s=t.readOnlyArchives,a=typeof r>"u"?f=>pj(f,".zip"):f=>{for(let p of r){let h=pj(f,p);if(h)return h}return null},n=(f,p)=>new ps(p,{baseFs:f,readOnly:s,stats:f.statSync(p),customZipImplementation:t.customZipImplementation}),c=async(f,p)=>{let h={baseFs:f,readOnly:s,stats:await f.statPromise(p),customZipImplementation:t.customZipImplementation};return()=>new ps(p,h)};super({...t,factorySync:n,factoryPromise:c,getMountPoint:a})}}});var hj,DI,gj=Ze(()=>{uj();hj=class extends Error{constructor(t,r){super(t),this.name="Libzip Error",this.code=r}},DI=class{constructor(t){this.filesShouldBeCached=!0;let r="buffer"in t?t.buffer:t.baseFs.readFileSync(t.path);this.libzip=tv();let s=this.libzip.malloc(4);try{let c=0;t.readOnly&&(c|=this.libzip.ZIP_RDONLY);let f=this.allocateUnattachedSource(r);try{this.zip=this.libzip.openFromSource(f,c,s),this.lzSource=f}catch(p){throw this.libzip.source.free(f),p}if(this.zip===0){let p=this.libzip.struct.errorS();throw this.libzip.error.initWithCode(p,this.libzip.getValue(s,"i32")),this.makeLibzipError(p)}}finally{this.libzip.free(s)}let a=this.libzip.getNumEntries(this.zip,0),n=new Array(a);for(let c=0;c>>0,n=this.libzip.struct.statMtime(r)>>>0,c=this.libzip.struct.statCrc(r)>>>0;return{size:a,mtime:n,crc:c}}makeLibzipError(t){let r=this.libzip.struct.errorCodeZip(t),s=this.libzip.error.strerror(t),a=new hj(s,this.libzip.errors[r]);if(r===this.libzip.errors.ZIP_ER_CHANGED)throw new Error(`Assertion failed: Unexpected libzip error: ${a.message}`);return a}setFileSource(t,r,s){let a=this.allocateSource(s);try{let n=this.libzip.file.add(this.zip,t,a,this.libzip.ZIP_FL_OVERWRITE);if(n===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));if(r!==null&&this.libzip.file.setCompression(this.zip,n,0,r[0],r[1])===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return n}catch(n){throw this.libzip.source.free(a),n}}setMtime(t,r){if(this.libzip.file.setMtime(this.zip,t,0,r,0)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}getExternalAttributes(t){if(this.libzip.file.getExternalAttributes(this.zip,t,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let s=this.libzip.getValue(this.libzip.uint08S,"i8")>>>0,a=this.libzip.getValue(this.libzip.uint32S,"i32")>>>0;return[s,a]}setExternalAttributes(t,r,s){if(this.libzip.file.setExternalAttributes(this.zip,t,0,0,r,s)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}locate(t){return this.libzip.name.locate(this.zip,t,0)}getFileSource(t){let r=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,t,0,0,r)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let a=this.libzip.struct.statCompSize(r),n=this.libzip.struct.statCompMethod(r),c=this.libzip.malloc(a);try{let f=this.libzip.fopenIndex(this.zip,t,0,this.libzip.ZIP_FL_COMPRESSED);if(f===0)throw this.makeLibzipError(this.libzip.getError(this.zip));try{let p=this.libzip.fread(f,c,a,0);if(p===-1)throw this.makeLibzipError(this.libzip.file.getError(f));if(pa)throw new Error("Overread");let h=this.libzip.HEAPU8.subarray(c,c+a);return{data:Buffer.from(h),compressionMethod:n}}finally{this.libzip.fclose(f)}}finally{this.libzip.free(c)}}deleteEntry(t){if(this.libzip.delete(this.zip,t)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}addDirectory(t){let r=this.libzip.dir.add(this.zip,t);if(r===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return r}getBufferAndClose(){try{if(this.libzip.source.keep(this.lzSource),this.libzip.close(this.zip)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));if(this.libzip.source.open(this.lzSource)===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));if(this.libzip.source.seek(this.lzSource,0,0,this.libzip.SEEK_END)===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));let t=this.libzip.source.tell(this.lzSource);if(t===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));if(this.libzip.source.seek(this.lzSource,0,0,this.libzip.SEEK_SET)===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));let r=this.libzip.malloc(t);if(!r)throw new Error("Couldn't allocate enough memory");try{let s=this.libzip.source.read(this.lzSource,r,t);if(s===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));if(st)throw new Error("Overread");let a=Buffer.from(this.libzip.HEAPU8.subarray(r,r+t));return process.env.YARN_IS_TEST_ENV&&process.env.YARN_ZIP_DATA_EPILOGUE&&(a=Buffer.concat([a,Buffer.from(process.env.YARN_ZIP_DATA_EPILOGUE)])),a}finally{this.libzip.free(r)}}finally{this.libzip.source.close(this.lzSource),this.libzip.source.free(this.lzSource)}}allocateBuffer(t){Buffer.isBuffer(t)||(t=Buffer.from(t));let r=this.libzip.malloc(t.byteLength);if(!r)throw new Error("Couldn't allocate enough memory");return new Uint8Array(this.libzip.HEAPU8.buffer,r,t.byteLength).set(t),{buffer:r,byteLength:t.byteLength}}allocateUnattachedSource(t){let r=this.libzip.struct.errorS(),{buffer:s,byteLength:a}=this.allocateBuffer(t),n=this.libzip.source.fromUnattachedBuffer(s,a,0,1,r);if(n===0)throw this.libzip.free(r),this.makeLibzipError(r);return n}allocateSource(t){let{buffer:r,byteLength:s}=this.allocateBuffer(t),a=this.libzip.source.fromBuffer(this.zip,r,s,0,1);if(a===0)throw this.libzip.free(r),this.makeLibzipError(this.libzip.getError(this.zip));return a}discard(){this.libzip.discard(this.zip)}}});function Rtt(e){if(typeof e=="string"&&String(+e)===e)return+e;if(typeof e=="number"&&Number.isFinite(e))return e<0?Date.now()/1e3:e;if(OAe.types.isDate(e))return e.getTime()/1e3;throw new Error("Invalid time")}function wR(){return Buffer.from([80,75,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])}var Ra,dj,OAe,mj,om,yj,Ej,LAe,ps,BR=Ze(()=>{Dt();Dt();Dt();Dt();Dt();Dt();Ra=Ie("fs"),dj=Ie("stream"),OAe=Ie("util"),mj=et(Ie("zlib"));gj();om=3,yj=0,Ej=8,LAe="mixed";ps=class extends Hf{constructor(r,s={}){super();this.listings=new Map;this.entries=new Map;this.fileSources=new Map;this.fds=new Map;this.nextFd=0;this.ready=!1;this.readOnly=!1;s.readOnly&&(this.readOnly=!0);let a=s;this.level=typeof a.level<"u"?a.level:LAe;let n=s.customZipImplementation??DI;if(typeof r=="string"){let{baseFs:f=new Yn}=a;this.baseFs=f,this.path=r}else this.path=null,this.baseFs=null;if(s.stats)this.stats=s.stats;else if(typeof r=="string")try{this.stats=this.baseFs.statSync(r)}catch(f){if(f.code==="ENOENT"&&a.create)this.stats=sl.makeDefaultStats();else throw f}else this.stats=sl.makeDefaultStats();typeof r=="string"?s.create?this.zipImpl=new n({buffer:wR(),readOnly:this.readOnly}):this.zipImpl=new n({path:r,baseFs:this.baseFs,readOnly:this.readOnly,size:this.stats.size}):this.zipImpl=new n({buffer:r??wR(),readOnly:this.readOnly}),this.listings.set(vt.root,new Set);let c=this.zipImpl.getListings();for(let f=0;f{this.closeSync(f)}})}async readPromise(r,s,a,n,c){return this.readSync(r,s,a,n,c)}readSync(r,s,a=0,n=s.byteLength,c=-1){let f=this.fds.get(r);if(typeof f>"u")throw or.EBADF("read");let p=c===-1||c===null?f.cursor:c,h=this.readFileSync(f.p);h.copy(s,a,p,p+n);let E=Math.max(0,Math.min(h.length-p,n));return(c===-1||c===null)&&(f.cursor+=E),E}async writePromise(r,s,a,n,c){return typeof s=="string"?this.writeSync(r,s,c):this.writeSync(r,s,a,n,c)}writeSync(r,s,a,n,c){throw typeof this.fds.get(r)>"u"?or.EBADF("read"):new Error("Unimplemented")}async closePromise(r){return this.closeSync(r)}closeSync(r){if(typeof this.fds.get(r)>"u")throw or.EBADF("read");this.fds.delete(r)}createReadStream(r,{encoding:s}={}){if(r===null)throw new Error("Unimplemented");let a=this.openSync(r,"r"),n=Object.assign(new dj.PassThrough({emitClose:!0,autoDestroy:!0,destroy:(f,p)=>{clearImmediate(c),this.closeSync(a),p(f)}}),{close(){n.destroy()},bytesRead:0,path:r,pending:!1}),c=setImmediate(async()=>{try{let f=await this.readFilePromise(r,s);n.bytesRead=f.length,n.end(f)}catch(f){n.destroy(f)}});return n}createWriteStream(r,{encoding:s}={}){if(this.readOnly)throw or.EROFS(`open '${r}'`);if(r===null)throw new Error("Unimplemented");let a=[],n=this.openSync(r,"w"),c=Object.assign(new dj.PassThrough({autoDestroy:!0,emitClose:!0,destroy:(f,p)=>{try{f?p(f):(this.writeFileSync(r,Buffer.concat(a),s),p(null))}catch(h){p(h)}finally{this.closeSync(n)}}}),{close(){c.destroy()},bytesWritten:0,path:r,pending:!1});return c.on("data",f=>{let p=Buffer.from(f);c.bytesWritten+=p.length,a.push(p)}),c}async realpathPromise(r){return this.realpathSync(r)}realpathSync(r){let s=this.resolveFilename(`lstat '${r}'`,r);if(!this.entries.has(s)&&!this.listings.has(s))throw or.ENOENT(`lstat '${r}'`);return s}async existsPromise(r){return this.existsSync(r)}existsSync(r){if(!this.ready)throw or.EBUSY(`archive closed, existsSync '${r}'`);if(this.symlinkCount===0){let a=K.resolve(vt.root,r);return this.entries.has(a)||this.listings.has(a)}let s;try{s=this.resolveFilename(`stat '${r}'`,r,void 0,!1)}catch{return!1}return s===void 0?!1:this.entries.has(s)||this.listings.has(s)}async accessPromise(r,s){return this.accessSync(r,s)}accessSync(r,s=Ra.constants.F_OK){let a=this.resolveFilename(`access '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw or.ENOENT(`access '${r}'`);if(this.readOnly&&s&Ra.constants.W_OK)throw or.EROFS(`access '${r}'`)}async statPromise(r,s={bigint:!1}){return s.bigint?this.statSync(r,{bigint:!0}):this.statSync(r)}statSync(r,s={bigint:!1,throwIfNoEntry:!0}){let a=this.resolveFilename(`stat '${r}'`,r,void 0,s.throwIfNoEntry);if(a!==void 0){if(!this.entries.has(a)&&!this.listings.has(a)){if(s.throwIfNoEntry===!1)return;throw or.ENOENT(`stat '${r}'`)}if(r[r.length-1]==="/"&&!this.listings.has(a))throw or.ENOTDIR(`stat '${r}'`);return this.statImpl(`stat '${r}'`,a,s)}}async fstatPromise(r,s){return this.fstatSync(r,s)}fstatSync(r,s){let a=this.fds.get(r);if(typeof a>"u")throw or.EBADF("fstatSync");let{p:n}=a,c=this.resolveFilename(`stat '${n}'`,n);if(!this.entries.has(c)&&!this.listings.has(c))throw or.ENOENT(`stat '${n}'`);if(n[n.length-1]==="/"&&!this.listings.has(c))throw or.ENOTDIR(`stat '${n}'`);return this.statImpl(`fstat '${n}'`,c,s)}async lstatPromise(r,s={bigint:!1}){return s.bigint?this.lstatSync(r,{bigint:!0}):this.lstatSync(r)}lstatSync(r,s={bigint:!1,throwIfNoEntry:!0}){let a=this.resolveFilename(`lstat '${r}'`,r,!1,s.throwIfNoEntry);if(a!==void 0){if(!this.entries.has(a)&&!this.listings.has(a)){if(s.throwIfNoEntry===!1)return;throw or.ENOENT(`lstat '${r}'`)}if(r[r.length-1]==="/"&&!this.listings.has(a))throw or.ENOTDIR(`lstat '${r}'`);return this.statImpl(`lstat '${r}'`,a,s)}}statImpl(r,s,a={}){let n=this.entries.get(s);if(typeof n<"u"){let c=this.zipImpl.stat(n),f=c.crc,p=c.size,h=c.mtime*1e3,E=this.stats.uid,C=this.stats.gid,S=512,x=Math.ceil(c.size/S),I=h,T=h,O=h,U=new Date(I),Y=new Date(T),te=new Date(O),ie=new Date(h),ue=this.listings.has(s)?Ra.constants.S_IFDIR:this.isSymbolicLink(n)?Ra.constants.S_IFLNK:Ra.constants.S_IFREG,ae=ue===Ra.constants.S_IFDIR?493:420,de=ue|this.getUnixMode(n,ae)&511,Ae=Object.assign(new sl.StatEntry,{uid:E,gid:C,size:p,blksize:S,blocks:x,atime:U,birthtime:Y,ctime:te,mtime:ie,atimeMs:I,birthtimeMs:T,ctimeMs:O,mtimeMs:h,mode:de,crc:f});return a.bigint===!0?sl.convertToBigIntStats(Ae):Ae}if(this.listings.has(s)){let c=this.stats.uid,f=this.stats.gid,p=0,h=512,E=0,C=this.stats.mtimeMs,S=this.stats.mtimeMs,x=this.stats.mtimeMs,I=this.stats.mtimeMs,T=new Date(C),O=new Date(S),U=new Date(x),Y=new Date(I),te=Ra.constants.S_IFDIR|493,ue=Object.assign(new sl.StatEntry,{uid:c,gid:f,size:p,blksize:h,blocks:E,atime:T,birthtime:O,ctime:U,mtime:Y,atimeMs:C,birthtimeMs:S,ctimeMs:x,mtimeMs:I,mode:te,crc:0});return a.bigint===!0?sl.convertToBigIntStats(ue):ue}throw new Error("Unreachable")}getUnixMode(r,s){let[a,n]=this.zipImpl.getExternalAttributes(r);return a!==om?s:n>>>16}registerListing(r){let s=this.listings.get(r);if(s)return s;this.registerListing(K.dirname(r)).add(K.basename(r));let n=new Set;return this.listings.set(r,n),n}registerEntry(r,s){this.registerListing(K.dirname(r)).add(K.basename(r)),this.entries.set(r,s)}unregisterListing(r){this.listings.delete(r),this.listings.get(K.dirname(r))?.delete(K.basename(r))}unregisterEntry(r){this.unregisterListing(r);let s=this.entries.get(r);this.entries.delete(r),!(typeof s>"u")&&(this.fileSources.delete(s),this.isSymbolicLink(s)&&this.symlinkCount--)}deleteEntry(r,s){this.unregisterEntry(r),this.zipImpl.deleteEntry(s)}resolveFilename(r,s,a=!0,n=!0){if(!this.ready)throw or.EBUSY(`archive closed, ${r}`);let c=K.resolve(vt.root,s);if(c==="/")return vt.root;let f=this.entries.get(c);if(a&&f!==void 0)if(this.symlinkCount!==0&&this.isSymbolicLink(f)){let p=this.getFileSource(f).toString();return this.resolveFilename(r,K.resolve(K.dirname(c),p),!0,n)}else return c;for(;;){let p=this.resolveFilename(r,K.dirname(c),!0,n);if(p===void 0)return p;let h=this.listings.has(p),E=this.entries.has(p);if(!h&&!E){if(n===!1)return;throw or.ENOENT(r)}if(!h)throw or.ENOTDIR(r);if(c=K.resolve(p,K.basename(c)),!a||this.symlinkCount===0)break;let C=this.zipImpl.locate(c.slice(1));if(C===-1)break;if(this.isSymbolicLink(C)){let S=this.getFileSource(C).toString();c=K.resolve(K.dirname(c),S)}else break}return c}setFileSource(r,s){let a=Buffer.isBuffer(s)?s:Buffer.from(s),n=K.relative(vt.root,r),c=null;this.level!=="mixed"&&(c=[this.level===0?yj:Ej,this.level]);let f=this.zipImpl.setFileSource(n,c,a);return this.fileSources.set(f,a),f}isSymbolicLink(r){if(this.symlinkCount===0)return!1;let[s,a]=this.zipImpl.getExternalAttributes(r);return s!==om?!1:(a>>>16&Ra.constants.S_IFMT)===Ra.constants.S_IFLNK}getFileSource(r,s={asyncDecompress:!1}){let a=this.fileSources.get(r);if(typeof a<"u")return a;let{data:n,compressionMethod:c}=this.zipImpl.getFileSource(r);if(c===yj)return this.zipImpl.filesShouldBeCached&&this.fileSources.set(r,n),n;if(c===Ej){if(s.asyncDecompress)return new Promise((f,p)=>{mj.default.inflateRaw(n,(h,E)=>{h?p(h):(this.zipImpl.filesShouldBeCached&&this.fileSources.set(r,E),f(E))})});{let f=mj.default.inflateRawSync(n);return this.zipImpl.filesShouldBeCached&&this.fileSources.set(r,f),f}}else throw new Error(`Unsupported compression method: ${c}`)}async fchmodPromise(r,s){return this.chmodPromise(this.fdToPath(r,"fchmod"),s)}fchmodSync(r,s){return this.chmodSync(this.fdToPath(r,"fchmodSync"),s)}async chmodPromise(r,s){return this.chmodSync(r,s)}chmodSync(r,s){if(this.readOnly)throw or.EROFS(`chmod '${r}'`);s&=493;let a=this.resolveFilename(`chmod '${r}'`,r,!1),n=this.entries.get(a);if(typeof n>"u")throw new Error(`Assertion failed: The entry should have been registered (${a})`);let f=this.getUnixMode(n,Ra.constants.S_IFREG|0)&-512|s;this.zipImpl.setExternalAttributes(n,om,f<<16)}async fchownPromise(r,s,a){return this.chownPromise(this.fdToPath(r,"fchown"),s,a)}fchownSync(r,s,a){return this.chownSync(this.fdToPath(r,"fchownSync"),s,a)}async chownPromise(r,s,a){return this.chownSync(r,s,a)}chownSync(r,s,a){throw new Error("Unimplemented")}async renamePromise(r,s){return this.renameSync(r,s)}renameSync(r,s){throw new Error("Unimplemented")}async copyFilePromise(r,s,a){let{indexSource:n,indexDest:c,resolvedDestP:f}=this.prepareCopyFile(r,s,a),p=await this.getFileSource(n,{asyncDecompress:!0}),h=this.setFileSource(f,p);h!==c&&this.registerEntry(f,h)}copyFileSync(r,s,a=0){let{indexSource:n,indexDest:c,resolvedDestP:f}=this.prepareCopyFile(r,s,a),p=this.getFileSource(n),h=this.setFileSource(f,p);h!==c&&this.registerEntry(f,h)}prepareCopyFile(r,s,a=0){if(this.readOnly)throw or.EROFS(`copyfile '${r} -> '${s}'`);if(a&Ra.constants.COPYFILE_FICLONE_FORCE)throw or.ENOSYS("unsupported clone operation",`copyfile '${r}' -> ${s}'`);let n=this.resolveFilename(`copyfile '${r} -> ${s}'`,r),c=this.entries.get(n);if(typeof c>"u")throw or.EINVAL(`copyfile '${r}' -> '${s}'`);let f=this.resolveFilename(`copyfile '${r}' -> ${s}'`,s),p=this.entries.get(f);if(a&(Ra.constants.COPYFILE_EXCL|Ra.constants.COPYFILE_FICLONE_FORCE)&&typeof p<"u")throw or.EEXIST(`copyfile '${r}' -> '${s}'`);return{indexSource:c,resolvedDestP:f,indexDest:p}}async appendFilePromise(r,s,a){if(this.readOnly)throw or.EROFS(`open '${r}'`);return typeof a>"u"?a={flag:"a"}:typeof a=="string"?a={flag:"a",encoding:a}:typeof a.flag>"u"&&(a={flag:"a",...a}),this.writeFilePromise(r,s,a)}appendFileSync(r,s,a={}){if(this.readOnly)throw or.EROFS(`open '${r}'`);return typeof a>"u"?a={flag:"a"}:typeof a=="string"?a={flag:"a",encoding:a}:typeof a.flag>"u"&&(a={flag:"a",...a}),this.writeFileSync(r,s,a)}fdToPath(r,s){let a=this.fds.get(r)?.p;if(typeof a>"u")throw or.EBADF(s);return a}async writeFilePromise(r,s,a){let{encoding:n,mode:c,index:f,resolvedP:p}=this.prepareWriteFile(r,a);f!==void 0&&typeof a=="object"&&a.flag&&a.flag.includes("a")&&(s=Buffer.concat([await this.getFileSource(f,{asyncDecompress:!0}),Buffer.from(s)])),n!==null&&(s=s.toString(n));let h=this.setFileSource(p,s);h!==f&&this.registerEntry(p,h),c!==null&&await this.chmodPromise(p,c)}writeFileSync(r,s,a){let{encoding:n,mode:c,index:f,resolvedP:p}=this.prepareWriteFile(r,a);f!==void 0&&typeof a=="object"&&a.flag&&a.flag.includes("a")&&(s=Buffer.concat([this.getFileSource(f),Buffer.from(s)])),n!==null&&(s=s.toString(n));let h=this.setFileSource(p,s);h!==f&&this.registerEntry(p,h),c!==null&&this.chmodSync(p,c)}prepareWriteFile(r,s){if(typeof r=="number"&&(r=this.fdToPath(r,"read")),this.readOnly)throw or.EROFS(`open '${r}'`);let a=this.resolveFilename(`open '${r}'`,r);if(this.listings.has(a))throw or.EISDIR(`open '${r}'`);let n=null,c=null;typeof s=="string"?n=s:typeof s=="object"&&({encoding:n=null,mode:c=null}=s);let f=this.entries.get(a);return{encoding:n,mode:c,resolvedP:a,index:f}}async unlinkPromise(r){return this.unlinkSync(r)}unlinkSync(r){if(this.readOnly)throw or.EROFS(`unlink '${r}'`);let s=this.resolveFilename(`unlink '${r}'`,r);if(this.listings.has(s))throw or.EISDIR(`unlink '${r}'`);let a=this.entries.get(s);if(typeof a>"u")throw or.EINVAL(`unlink '${r}'`);this.deleteEntry(s,a)}async utimesPromise(r,s,a){return this.utimesSync(r,s,a)}utimesSync(r,s,a){if(this.readOnly)throw or.EROFS(`utimes '${r}'`);let n=this.resolveFilename(`utimes '${r}'`,r);this.utimesImpl(n,a)}async lutimesPromise(r,s,a){return this.lutimesSync(r,s,a)}lutimesSync(r,s,a){if(this.readOnly)throw or.EROFS(`lutimes '${r}'`);let n=this.resolveFilename(`utimes '${r}'`,r,!1);this.utimesImpl(n,a)}utimesImpl(r,s){this.listings.has(r)&&(this.entries.has(r)||this.hydrateDirectory(r));let a=this.entries.get(r);if(a===void 0)throw new Error("Unreachable");this.zipImpl.setMtime(a,Rtt(s))}async mkdirPromise(r,s){return this.mkdirSync(r,s)}mkdirSync(r,{mode:s=493,recursive:a=!1}={}){if(a)return this.mkdirpSync(r,{chmod:s});if(this.readOnly)throw or.EROFS(`mkdir '${r}'`);let n=this.resolveFilename(`mkdir '${r}'`,r);if(this.entries.has(n)||this.listings.has(n))throw or.EEXIST(`mkdir '${r}'`);this.hydrateDirectory(n),this.chmodSync(n,s)}async rmdirPromise(r,s){return this.rmdirSync(r,s)}rmdirSync(r,{recursive:s=!1}={}){if(this.readOnly)throw or.EROFS(`rmdir '${r}'`);if(s){this.removeSync(r);return}let a=this.resolveFilename(`rmdir '${r}'`,r),n=this.listings.get(a);if(!n)throw or.ENOTDIR(`rmdir '${r}'`);if(n.size>0)throw or.ENOTEMPTY(`rmdir '${r}'`);let c=this.entries.get(a);if(typeof c>"u")throw or.EINVAL(`rmdir '${r}'`);this.deleteEntry(r,c)}async rmPromise(r,s){return this.rmSync(r,s)}rmSync(r,{recursive:s=!1}={}){if(this.readOnly)throw or.EROFS(`rm '${r}'`);if(s){this.removeSync(r);return}let a=this.resolveFilename(`rm '${r}'`,r),n=this.listings.get(a);if(!n)throw or.ENOTDIR(`rm '${r}'`);if(n.size>0)throw or.ENOTEMPTY(`rm '${r}'`);let c=this.entries.get(a);if(typeof c>"u")throw or.EINVAL(`rm '${r}'`);this.deleteEntry(r,c)}hydrateDirectory(r){let s=this.zipImpl.addDirectory(K.relative(vt.root,r));return this.registerListing(r),this.registerEntry(r,s),s}async linkPromise(r,s){return this.linkSync(r,s)}linkSync(r,s){throw or.EOPNOTSUPP(`link '${r}' -> '${s}'`)}async symlinkPromise(r,s){return this.symlinkSync(r,s)}symlinkSync(r,s){if(this.readOnly)throw or.EROFS(`symlink '${r}' -> '${s}'`);let a=this.resolveFilename(`symlink '${r}' -> '${s}'`,s);if(this.listings.has(a))throw or.EISDIR(`symlink '${r}' -> '${s}'`);if(this.entries.has(a))throw or.EEXIST(`symlink '${r}' -> '${s}'`);let n=this.setFileSource(a,r);this.registerEntry(a,n),this.zipImpl.setExternalAttributes(n,om,(Ra.constants.S_IFLNK|511)<<16),this.symlinkCount+=1}async readFilePromise(r,s){typeof s=="object"&&(s=s?s.encoding:void 0);let a=await this.readFileBuffer(r,{asyncDecompress:!0});return s?a.toString(s):a}readFileSync(r,s){typeof s=="object"&&(s=s?s.encoding:void 0);let a=this.readFileBuffer(r);return s?a.toString(s):a}readFileBuffer(r,s={asyncDecompress:!1}){typeof r=="number"&&(r=this.fdToPath(r,"read"));let a=this.resolveFilename(`open '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw or.ENOENT(`open '${r}'`);if(r[r.length-1]==="/"&&!this.listings.has(a))throw or.ENOTDIR(`open '${r}'`);if(this.listings.has(a))throw or.EISDIR("read");let n=this.entries.get(a);if(n===void 0)throw new Error("Unreachable");return this.getFileSource(n,s)}async readdirPromise(r,s){return this.readdirSync(r,s)}readdirSync(r,s){let a=this.resolveFilename(`scandir '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw or.ENOENT(`scandir '${r}'`);let n=this.listings.get(a);if(!n)throw or.ENOTDIR(`scandir '${r}'`);if(s?.recursive)if(s?.withFileTypes){let c=Array.from(n,f=>Object.assign(this.statImpl("lstat",K.join(r,f)),{name:f,path:vt.dot,parentPath:vt.dot}));for(let f of c){if(!f.isDirectory())continue;let p=K.join(f.path,f.name),h=this.listings.get(K.join(a,p));for(let E of h)c.push(Object.assign(this.statImpl("lstat",K.join(r,p,E)),{name:E,path:p,parentPath:p}))}return c}else{let c=[...n];for(let f of c){let p=this.listings.get(K.join(a,f));if(!(typeof p>"u"))for(let h of p)c.push(K.join(f,h))}return c}else return s?.withFileTypes?Array.from(n,c=>Object.assign(this.statImpl("lstat",K.join(r,c)),{name:c,path:void 0,parentPath:void 0})):[...n]}async readlinkPromise(r){let s=this.prepareReadlink(r);return(await this.getFileSource(s,{asyncDecompress:!0})).toString()}readlinkSync(r){let s=this.prepareReadlink(r);return this.getFileSource(s).toString()}prepareReadlink(r){let s=this.resolveFilename(`readlink '${r}'`,r,!1);if(!this.entries.has(s)&&!this.listings.has(s))throw or.ENOENT(`readlink '${r}'`);if(r[r.length-1]==="/"&&!this.listings.has(s))throw or.ENOTDIR(`open '${r}'`);if(this.listings.has(s))throw or.EINVAL(`readlink '${r}'`);let a=this.entries.get(s);if(a===void 0)throw new Error("Unreachable");if(!this.isSymbolicLink(a))throw or.EINVAL(`readlink '${r}'`);return a}async truncatePromise(r,s=0){let a=this.resolveFilename(`open '${r}'`,r),n=this.entries.get(a);if(typeof n>"u")throw or.EINVAL(`open '${r}'`);let c=await this.getFileSource(n,{asyncDecompress:!0}),f=Buffer.alloc(s,0);return c.copy(f),await this.writeFilePromise(r,f)}truncateSync(r,s=0){let a=this.resolveFilename(`open '${r}'`,r),n=this.entries.get(a);if(typeof n>"u")throw or.EINVAL(`open '${r}'`);let c=this.getFileSource(n),f=Buffer.alloc(s,0);return c.copy(f),this.writeFileSync(r,f)}async ftruncatePromise(r,s){return this.truncatePromise(this.fdToPath(r,"ftruncate"),s)}ftruncateSync(r,s){return this.truncateSync(this.fdToPath(r,"ftruncateSync"),s)}watch(r,s,a){let n;switch(typeof s){case"function":case"string":case"undefined":n=!0;break;default:({persistent:n=!0}=s);break}if(!n)return{on:()=>{},close:()=>{}};let c=setInterval(()=>{},24*60*60*1e3);return{on:()=>{},close:()=>{clearInterval(c)}}}watchFile(r,s,a){let n=K.resolve(vt.root,r);return lE(this,n,s,a)}unwatchFile(r,s){let a=K.resolve(vt.root,r);return gd(this,a,s)}}});function UAe(e,t,r=Buffer.alloc(0),s){let a=new ps(r),n=C=>C===t||C.startsWith(`${t}/`)?C.slice(0,t.length):null,c=async(C,S)=>()=>a,f=(C,S)=>a,p={...e},h=new Yn(p),E=new Xh({baseFs:h,getMountPoint:n,factoryPromise:c,factorySync:f,magicByte:21,maxAge:1/0,typeCheck:s?.typeCheck});return QB(MAe.default,new $h(E)),a}var MAe,_Ae=Ze(()=>{Dt();MAe=et(Ie("fs"));BR()});var HAe=Ze(()=>{NAe();BR();_Ae()});var Ij,rv,vR,jAe=Ze(()=>{Dt();BR();Ij={CENTRAL_DIRECTORY:33639248,END_OF_CENTRAL_DIRECTORY:101010256},rv=22,vR=class e{constructor(t){this.filesShouldBeCached=!1;if("buffer"in t)throw new Error("Buffer based zip archives are not supported");if(!t.readOnly)throw new Error("Writable zip archives are not supported");this.baseFs=t.baseFs,this.fd=this.baseFs.openSync(t.path,"r");try{this.entries=e.readZipSync(this.fd,this.baseFs,t.size)}catch(r){throw this.baseFs.closeSync(this.fd),this.fd="closed",r}}static readZipSync(t,r,s){if(s=0;O--)if(n.readUInt32LE(O)===Ij.END_OF_CENTRAL_DIRECTORY){a=O;break}if(a===-1)throw new Error("Not a zip archive")}let c=n.readUInt16LE(a+10),f=n.readUInt32LE(a+12),p=n.readUInt32LE(a+16),h=n.readUInt16LE(a+20);if(a+h+rv>n.length)throw new Error("Zip archive inconsistent");if(c==65535||f==4294967295||p==4294967295)throw new Error("Zip 64 is not supported");if(f>s)throw new Error("Zip archive inconsistent");if(c>f/46)throw new Error("Zip archive inconsistent");let E=Buffer.alloc(f);if(r.readSync(t,E,0,E.length,p)!==E.length)throw new Error("Zip archive inconsistent");let C=[],S=0,x=0,I=0;for(;xE.length)throw new Error("Zip archive inconsistent");if(E.readUInt32LE(S)!==Ij.CENTRAL_DIRECTORY)throw new Error("Zip archive inconsistent");let O=E.readUInt16LE(S+4)>>>8;if(E.readUInt16LE(S+8)&1)throw new Error("Encrypted zip files are not supported");let Y=E.readUInt16LE(S+10),te=E.readUInt32LE(S+16),ie=E.readUInt16LE(S+28),ue=E.readUInt16LE(S+30),ae=E.readUInt16LE(S+32),de=E.readUInt32LE(S+42),Ae=E.toString("utf8",S+46,S+46+ie).replaceAll("\0"," ");if(Ae.includes("\0"))throw new Error("Invalid ZIP file");let Ce=E.readUInt32LE(S+20),Ee=E.readUInt32LE(S+38);C.push({name:Ae,os:O,mtime:Ai.SAFE_TIME,crc:te,compressionMethod:Y,isSymbolicLink:O===om&&(Ee>>>16&Ai.S_IFMT)===Ai.S_IFLNK,size:E.readUInt32LE(S+24),compressedSize:Ce,externalAttributes:Ee,localHeaderOffset:de}),I+=Ce,x+=1,S+=46+ie+ue+ae}if(I>s)throw new Error("Zip archive inconsistent");if(S!==E.length)throw new Error("Zip archive inconsistent");return C}getExternalAttributes(t){let r=this.entries[t];return[r.os,r.externalAttributes]}getListings(){return this.entries.map(t=>t.name)}getSymlinkCount(){let t=0;for(let r of this.entries)r.isSymbolicLink&&(t+=1);return t}stat(t){let r=this.entries[t];return{crc:r.crc,mtime:r.mtime,size:r.size}}locate(t){for(let r=0;rLAe,DEFLATE:()=>Ej,JsZipImpl:()=>vR,LibZipImpl:()=>DI,STORE:()=>yj,ZIP_UNIX:()=>om,ZipFS:()=>ps,ZipOpenFS:()=>tA,getArchivePart:()=>pj,getLibzipPromise:()=>Ftt,getLibzipSync:()=>Ttt,makeEmptyArchive:()=>wR,mountMemoryDrive:()=>UAe});function Ttt(){return tv()}async function Ftt(){return tv()}var GAe,rA=Ze(()=>{uj();GAe=et(QAe());FAe();HAe();jAe();gj();kAe(()=>{let e=(0,GAe.default)();return TAe(e)})});var iv,qAe=Ze(()=>{Dt();Vt();sv();iv=class extends at{constructor(){super(...arguments);this.cwd=he.String("--cwd",process.cwd(),{description:"The directory to run the command in"});this.commandName=he.String();this.args=he.Proxy()}static{this.usage={description:"run a command using yarn's portable shell",details:` - This command will run a command using Yarn's portable shell. - - Make sure to escape glob patterns, redirections, and other features that might be expanded by your own shell. - - Note: To escape something from Yarn's shell, you might have to escape it twice, the first time from your own shell. - - Note: Don't use this command in Yarn scripts, as Yarn's shell is automatically used. - - For a list of features, visit: https://github.com/yarnpkg/berry/blob/master/packages/yarnpkg-shell/README.md. - `,examples:[["Run a simple command","$0 echo Hello"],["Run a command with a glob pattern","$0 echo '*.js'"],["Run a command with a redirection","$0 echo Hello World '>' hello.txt"],["Run a command with an escaped glob pattern (The double escape is needed in Unix shells)",`$0 echo '"*.js"'`],["Run a command with a variable (Double quotes are needed in Unix shells, to prevent them from expanding the variable)",'$0 "GREETING=Hello echo $GREETING World"']]}}async execute(){let r=this.args.length>0?`${this.commandName} ${this.args.join(" ")}`:this.commandName;return await bI(r,[],{cwd:fe.toPortablePath(this.cwd),stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}}});var Xl,WAe=Ze(()=>{Xl=class extends Error{constructor(t){super(t),this.name="ShellError"}}});var bR={};Yt(bR,{fastGlobOptions:()=>KAe,isBraceExpansion:()=>Cj,isGlobPattern:()=>Ntt,match:()=>Ott,micromatchOptions:()=>DR});function Ntt(e){if(!SR.default.scan(e,DR).isGlob)return!1;try{SR.default.parse(e,DR)}catch{return!1}return!0}function Ott(e,{cwd:t,baseFs:r}){return(0,VAe.default)(e,{...KAe,cwd:fe.fromPortablePath(t),fs:ax(YAe.default,new $h(r))})}function Cj(e){return SR.default.scan(e,DR).isBrace}var VAe,YAe,SR,DR,KAe,JAe=Ze(()=>{Dt();VAe=et(wQ()),YAe=et(Ie("fs")),SR=et(Jo()),DR={strictBrackets:!0},KAe={onlyDirectories:!1,onlyFiles:!1}});function wj(){}function Bj(){for(let e of am)e.kill()}function $Ae(e,t,r,s){return a=>{let n=a[0]instanceof nA.Transform?"pipe":a[0],c=a[1]instanceof nA.Transform?"pipe":a[1],f=a[2]instanceof nA.Transform?"pipe":a[2],p=(0,ZAe.default)(e,t,{...s,stdio:[n,c,f]});return am.add(p),am.size===1&&(process.on("SIGINT",wj),process.on("SIGTERM",Bj)),a[0]instanceof nA.Transform&&a[0].pipe(p.stdin),a[1]instanceof nA.Transform&&p.stdout.pipe(a[1],{end:!1}),a[2]instanceof nA.Transform&&p.stderr.pipe(a[2],{end:!1}),{stdin:p.stdin,promise:new Promise(h=>{p.on("error",E=>{switch(am.delete(p),am.size===0&&(process.off("SIGINT",wj),process.off("SIGTERM",Bj)),E.code){case"ENOENT":a[2].write(`command not found: ${e} -`),h(127);break;case"EACCES":a[2].write(`permission denied: ${e} -`),h(128);break;default:a[2].write(`uncaught error: ${E.message} -`),h(1);break}}),p.on("close",E=>{am.delete(p),am.size===0&&(process.off("SIGINT",wj),process.off("SIGTERM",Bj)),h(E!==null?E:129)})})}}}function epe(e){return t=>{let r=t[0]==="pipe"?new nA.PassThrough:t[0];return{stdin:r,promise:Promise.resolve().then(()=>e({stdin:r,stdout:t[1],stderr:t[2]}))}}}function PR(e,t){return Sj.start(e,t)}function zAe(e,t=null){let r=new nA.PassThrough,s=new XAe.StringDecoder,a="";return r.on("data",n=>{let c=s.write(n),f;do if(f=c.indexOf(` -`),f!==-1){let p=a+c.substring(0,f);c=c.substring(f+1),a="",e(t!==null?`${t} ${p}`:p)}while(f!==-1);a+=c}),r.on("end",()=>{let n=s.end();n!==""&&e(t!==null?`${t} ${n}`:n)}),r}function tpe(e,{prefix:t}){return{stdout:zAe(r=>e.stdout.write(`${r} -`),e.stdout.isTTY?t:null),stderr:zAe(r=>e.stderr.write(`${r} -`),e.stderr.isTTY?t:null)}}var ZAe,nA,XAe,am,Lc,vj,Sj,Dj=Ze(()=>{ZAe=et(vU()),nA=Ie("stream"),XAe=Ie("string_decoder"),am=new Set;Lc=class{constructor(t){this.stream=t}close(){}get(){return this.stream}},vj=class{constructor(){this.stream=null}close(){if(this.stream===null)throw new Error("Assertion failed: No stream attached");this.stream.end()}attach(t){this.stream=t}get(){if(this.stream===null)throw new Error("Assertion failed: No stream attached");return this.stream}},Sj=class e{constructor(t,r){this.stdin=null;this.stdout=null;this.stderr=null;this.pipe=null;this.ancestor=t,this.implementation=r}static start(t,{stdin:r,stdout:s,stderr:a}){let n=new e(null,t);return n.stdin=r,n.stdout=s,n.stderr=a,n}pipeTo(t,r=1){let s=new e(this,t),a=new vj;return s.pipe=a,s.stdout=this.stdout,s.stderr=this.stderr,(r&1)===1?this.stdout=a:this.ancestor!==null&&(this.stderr=this.ancestor.stdout),(r&2)===2?this.stderr=a:this.ancestor!==null&&(this.stderr=this.ancestor.stderr),s}async exec(){let t=["ignore","ignore","ignore"];if(this.pipe)t[0]="pipe";else{if(this.stdin===null)throw new Error("Assertion failed: No input stream registered");t[0]=this.stdin.get()}let r;if(this.stdout===null)throw new Error("Assertion failed: No output stream registered");r=this.stdout,t[1]=r.get();let s;if(this.stderr===null)throw new Error("Assertion failed: No error stream registered");s=this.stderr,t[2]=s.get();let a=this.implementation(t);return this.pipe&&this.pipe.attach(a.stdin),await a.promise.then(n=>(r.close(),s.close(),n))}async run(){let t=[];for(let s=this;s;s=s.ancestor)t.push(s.exec());return(await Promise.all(t))[0]}}});var cv={};Yt(cv,{EntryCommand:()=>iv,ShellError:()=>Xl,execute:()=>bI,globUtils:()=>bR});function rpe(e,t,r){let s=new $l.PassThrough({autoDestroy:!0});switch(e){case 0:(t&1)===1&&r.stdin.pipe(s,{end:!1}),(t&2)===2&&r.stdin instanceof $l.Writable&&s.pipe(r.stdin,{end:!1});break;case 1:(t&1)===1&&r.stdout.pipe(s,{end:!1}),(t&2)===2&&s.pipe(r.stdout,{end:!1});break;case 2:(t&1)===1&&r.stderr.pipe(s,{end:!1}),(t&2)===2&&s.pipe(r.stderr,{end:!1});break;default:throw new Xl(`Bad file descriptor: "${e}"`)}return s}function kR(e,t={}){let r={...e,...t};return r.environment={...e.environment,...t.environment},r.variables={...e.variables,...t.variables},r}async function Mtt(e,t,r){let s=[],a=new $l.PassThrough;return a.on("data",n=>s.push(n)),await QR(e,t,kR(r,{stdout:a})),Buffer.concat(s).toString().replace(/[\r\n]+$/,"")}async function npe(e,t,r){let s=e.map(async n=>{let c=await lm(n.args,t,r);return{name:n.name,value:c.join(" ")}});return(await Promise.all(s)).reduce((n,c)=>(n[c.name]=c.value,n),{})}function xR(e){return e.match(/[^ \r\n\t]+/g)||[]}async function cpe(e,t,r,s,a=s){switch(e.name){case"$":s(String(process.pid));break;case"#":s(String(t.args.length));break;case"@":if(e.quoted)for(let n of t.args)a(n);else for(let n of t.args){let c=xR(n);for(let f=0;f=0&&n"u"&&(e.defaultValue?c=(await lm(e.defaultValue,t,r)).join(" "):e.alternativeValue&&(c="")),typeof c>"u")throw f?new Xl(`Unbound argument #${n}`):new Xl(`Unbound variable "${e.name}"`);if(e.quoted)s(c);else{let p=xR(c);for(let E=0;Es.push(n));let a=Number(s.join(" "));return Number.isNaN(a)?ov({type:"variable",name:s.join(" ")},t,r):ov({type:"number",value:a},t,r)}else return Utt[e.type](await ov(e.left,t,r),await ov(e.right,t,r))}async function lm(e,t,r){let s=new Map,a=[],n=[],c=E=>{n.push(E)},f=()=>{n.length>0&&a.push(n.join("")),n=[]},p=E=>{c(E),f()},h=(E,C,S)=>{let x=JSON.stringify({type:E,fd:C}),I=s.get(x);typeof I>"u"&&s.set(x,I=[]),I.push(S)};for(let E of e){let C=!1;switch(E.type){case"redirection":{let S=await lm(E.args,t,r);for(let x of S)h(E.subtype,E.fd,x)}break;case"argument":for(let S of E.segments)switch(S.type){case"text":c(S.text);break;case"glob":c(S.pattern),C=!0;break;case"shell":{let x=await Mtt(S.shell,t,r);if(S.quoted)c(x);else{let I=xR(x);for(let T=0;T"u")throw new Error("Assertion failed: Expected a glob pattern to have been set");let x=await t.glob.match(S,{cwd:r.cwd,baseFs:t.baseFs});if(x.length===0){let I=Cj(S)?". Note: Brace expansion of arbitrary strings isn't currently supported. For more details, please read this issue: https://github.com/yarnpkg/berry/issues/22":"";throw new Xl(`No matches found: "${S}"${I}`)}for(let I of x.sort())p(I)}}if(s.size>0){let E=[];for(let[C,S]of s.entries())E.splice(E.length,0,C,String(S.length),...S);a.splice(0,0,"__ysh_set_redirects",...E,"--")}return a}function av(e,t,r){t.builtins.has(e[0])||(e=["command",...e]);let s=fe.fromPortablePath(r.cwd),a=r.environment;typeof a.PWD<"u"&&(a={...a,PWD:s});let[n,...c]=e;if(n==="command")return $Ae(c[0],c.slice(1),t,{cwd:s,env:a});let f=t.builtins.get(n);if(typeof f>"u")throw new Error(`Assertion failed: A builtin should exist for "${n}"`);return epe(async({stdin:p,stdout:h,stderr:E})=>{let{stdin:C,stdout:S,stderr:x}=r;r.stdin=p,r.stdout=h,r.stderr=E;try{return await f(c,t,r)}finally{r.stdin=C,r.stdout=S,r.stderr=x}})}function _tt(e,t,r){return s=>{let a=new $l.PassThrough,n=QR(e,t,kR(r,{stdin:a}));return{stdin:a,promise:n}}}function Htt(e,t,r){return s=>{let a=new $l.PassThrough,n=QR(e,t,r);return{stdin:a,promise:n}}}function ipe(e,t,r,s){if(t.length===0)return e;{let a;do a=String(Math.random());while(Object.hasOwn(s.procedures,a));return s.procedures={...s.procedures},s.procedures[a]=e,av([...t,"__ysh_run_procedure",a],r,s)}}async function spe(e,t,r){let s=e,a=null,n=null;for(;s;){let c=s.then?{...r}:r,f;switch(s.type){case"command":{let p=await lm(s.args,t,r),h=await npe(s.envs,t,r);f=s.envs.length?av(p,t,kR(c,{environment:h})):av(p,t,c)}break;case"subshell":{let p=await lm(s.args,t,r),h=_tt(s.subshell,t,c);f=ipe(h,p,t,c)}break;case"group":{let p=await lm(s.args,t,r),h=Htt(s.group,t,c);f=ipe(h,p,t,c)}break;case"envs":{let p=await npe(s.envs,t,r);c.environment={...c.environment,...p},f=av(["true"],t,c)}break}if(typeof f>"u")throw new Error("Assertion failed: An action should have been generated");if(a===null)n=PR(f,{stdin:new Lc(c.stdin),stdout:new Lc(c.stdout),stderr:new Lc(c.stderr)});else{if(n===null)throw new Error("Assertion failed: The execution pipeline should have been setup");switch(a){case"|":n=n.pipeTo(f,1);break;case"|&":n=n.pipeTo(f,3);break}}s.then?(a=s.then.type,s=s.then.chain):s=null}if(n===null)throw new Error("Assertion failed: The execution pipeline should have been setup");return await n.run()}async function jtt(e,t,r,{background:s=!1}={}){function a(n){let c=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],f=c[n%c.length];return ope.default.hex(f)}if(s){let n=r.nextBackgroundJobIndex++,c=a(n),f=`[${n}]`,p=c(f),{stdout:h,stderr:E}=tpe(r,{prefix:p});return r.backgroundJobs.push(spe(e,t,kR(r,{stdout:h,stderr:E})).catch(C=>E.write(`${C.message} -`)).finally(()=>{r.stdout.isTTY&&r.stdout.write(`Job ${p}, '${c(gE(e))}' has ended -`)})),0}return await spe(e,t,r)}async function Gtt(e,t,r,{background:s=!1}={}){let a,n=f=>{a=f,r.variables["?"]=String(f)},c=async f=>{try{return await jtt(f.chain,t,r,{background:s&&typeof f.then>"u"})}catch(p){if(!(p instanceof Xl))throw p;return r.stderr.write(`${p.message} -`),1}};for(n(await c(e));e.then;){if(r.exitCode!==null)return r.exitCode;switch(e.then.type){case"&&":a===0&&n(await c(e.then.line));break;case"||":a!==0&&n(await c(e.then.line));break;default:throw new Error(`Assertion failed: Unsupported command type: "${e.then.type}"`)}e=e.then.line}return a}async function QR(e,t,r){let s=r.backgroundJobs;r.backgroundJobs=[];let a=0;for(let{command:n,type:c}of e){if(a=await Gtt(n,t,r,{background:c==="&"}),r.exitCode!==null)return r.exitCode;r.variables["?"]=String(a)}return await Promise.all(r.backgroundJobs),r.backgroundJobs=s,a}function upe(e){switch(e.type){case"variable":return e.name==="@"||e.name==="#"||e.name==="*"||Number.isFinite(parseInt(e.name,10))||"defaultValue"in e&&!!e.defaultValue&&e.defaultValue.some(t=>lv(t))||"alternativeValue"in e&&!!e.alternativeValue&&e.alternativeValue.some(t=>lv(t));case"arithmetic":return bj(e.arithmetic);case"shell":return Pj(e.shell);default:return!1}}function lv(e){switch(e.type){case"redirection":return e.args.some(t=>lv(t));case"argument":return e.segments.some(t=>upe(t));default:throw new Error(`Assertion failed: Unsupported argument type: "${e.type}"`)}}function bj(e){switch(e.type){case"variable":return upe(e);case"number":return!1;default:return bj(e.left)||bj(e.right)}}function Pj(e){return e.some(({command:t})=>{for(;t;){let r=t.chain;for(;r;){let s;switch(r.type){case"subshell":s=Pj(r.subshell);break;case"command":s=r.envs.some(a=>a.args.some(n=>lv(n)))||r.args.some(a=>lv(a));break}if(s)return!0;if(!r.then)break;r=r.then.chain}if(!t.then)break;t=t.then.line}return!1})}async function bI(e,t=[],{baseFs:r=new Yn,builtins:s={},cwd:a=fe.toPortablePath(process.cwd()),env:n=process.env,stdin:c=process.stdin,stdout:f=process.stdout,stderr:p=process.stderr,variables:h={},glob:E=bR}={}){let C={};for(let[I,T]of Object.entries(n))typeof T<"u"&&(C[I]=T);let S=new Map(Ltt);for(let[I,T]of Object.entries(s))S.set(I,T);c===null&&(c=new $l.PassThrough,c.end());let x=ux(e,E);if(!Pj(x)&&x.length>0&&t.length>0){let{command:I}=x[x.length-1];for(;I.then;)I=I.then.line;let T=I.chain;for(;T.then;)T=T.then.chain;T.type==="command"&&(T.args=T.args.concat(t.map(O=>({type:"argument",segments:[{type:"text",text:O}]}))))}return await QR(x,{args:t,baseFs:r,builtins:S,initialStdin:c,initialStdout:f,initialStderr:p,glob:E},{cwd:a,environment:C,exitCode:null,procedures:{},stdin:c,stdout:f,stderr:p,variables:Object.assign({},h,{"?":0}),nextBackgroundJobIndex:1,backgroundJobs:[]})}var ope,ape,$l,lpe,Ltt,Utt,sv=Ze(()=>{Dt();Bc();ope=et(NE()),ape=Ie("os"),$l=Ie("stream"),lpe=Ie("timers/promises");qAe();WAe();JAe();Dj();Dj();Ltt=new Map([["cd",async([e=(0,ape.homedir)(),...t],r,s)=>{let a=K.resolve(s.cwd,fe.toPortablePath(e));if(!(await r.baseFs.statPromise(a).catch(c=>{throw c.code==="ENOENT"?new Xl(`cd: no such file or directory: ${e}`):c})).isDirectory())throw new Xl(`cd: not a directory: ${e}`);return s.cwd=a,0}],["pwd",async(e,t,r)=>(r.stdout.write(`${fe.fromPortablePath(r.cwd)} -`),0)],[":",async(e,t,r)=>0],["true",async(e,t,r)=>0],["false",async(e,t,r)=>1],["exit",async([e,...t],r,s)=>s.exitCode=parseInt(e??s.variables["?"],10)],["echo",async(e,t,r)=>(r.stdout.write(`${e.join(" ")} -`),0)],["sleep",async([e],t,r)=>{if(typeof e>"u")throw new Xl("sleep: missing operand");let s=Number(e);if(Number.isNaN(s))throw new Xl(`sleep: invalid time interval '${e}'`);return await(0,lpe.setTimeout)(1e3*s,0)}],["unset",async(e,t,r)=>{for(let s of e)delete r.environment[s],delete r.variables[s];return 0}],["__ysh_run_procedure",async(e,t,r)=>{let s=r.procedures[e[0]];return await PR(s,{stdin:new Lc(r.stdin),stdout:new Lc(r.stdout),stderr:new Lc(r.stderr)}).run()}],["__ysh_set_redirects",async(e,t,r)=>{let s=r.stdin,a=r.stdout,n=r.stderr,c=[],f=[],p=[],h=0;for(;e[h]!=="--";){let C=e[h++],{type:S,fd:x}=JSON.parse(C),I=Y=>{switch(x){case null:case 0:c.push(Y);break;default:throw new Error(`Unsupported file descriptor: "${x}"`)}},T=Y=>{switch(x){case null:case 1:f.push(Y);break;case 2:p.push(Y);break;default:throw new Error(`Unsupported file descriptor: "${x}"`)}},O=Number(e[h++]),U=h+O;for(let Y=h;Yt.baseFs.createReadStream(K.resolve(r.cwd,fe.toPortablePath(e[Y]))));break;case"<<<":I(()=>{let te=new $l.PassThrough;return process.nextTick(()=>{te.write(`${e[Y]} -`),te.end()}),te});break;case"<&":I(()=>rpe(Number(e[Y]),1,r));break;case">":case">>":{let te=K.resolve(r.cwd,fe.toPortablePath(e[Y]));T(te==="/dev/null"?new $l.Writable({autoDestroy:!0,emitClose:!0,write(ie,ue,ae){setImmediate(ae)}}):t.baseFs.createWriteStream(te,S===">>"?{flags:"a"}:void 0))}break;case">&":T(rpe(Number(e[Y]),2,r));break;default:throw new Error(`Assertion failed: Unsupported redirection type: "${S}"`)}}if(c.length>0){let C=new $l.PassThrough;s=C;let S=x=>{if(x===c.length)C.end();else{let I=c[x]();I.pipe(C,{end:!1}),I.on("end",()=>{S(x+1)})}};S(0)}if(f.length>0){let C=new $l.PassThrough;a=C;for(let S of f)C.pipe(S)}if(p.length>0){let C=new $l.PassThrough;n=C;for(let S of p)C.pipe(S)}let E=await PR(av(e.slice(h+1),t,r),{stdin:new Lc(s),stdout:new Lc(a),stderr:new Lc(n)}).run();return await Promise.all(f.map(C=>new Promise((S,x)=>{C.on("error",I=>{x(I)}),C.on("close",()=>{S()}),C.end()}))),await Promise.all(p.map(C=>new Promise((S,x)=>{C.on("error",I=>{x(I)}),C.on("close",()=>{S()}),C.end()}))),E}]]);Utt={addition:(e,t)=>e+t,subtraction:(e,t)=>e-t,multiplication:(e,t)=>e*t,division:(e,t)=>Math.trunc(e/t)}});var fpe=G((UMt,RR)=>{function qtt(){var e=0,t=1,r=2,s=3,a=4,n=5,c=6,f=7,p=8,h=9,E=10,C=11,S=12,x=13,I=14,T=15,O=16,U=17,Y=0,te=1,ie=2,ue=3,ae=4;function de(g,Se){return 55296<=g.charCodeAt(Se)&&g.charCodeAt(Se)<=56319&&56320<=g.charCodeAt(Se+1)&&g.charCodeAt(Se+1)<=57343}function Ae(g,Se){Se===void 0&&(Se=0);var Be=g.charCodeAt(Se);if(55296<=Be&&Be<=56319&&Se=1){var me=g.charCodeAt(Se-1),ce=Be;return 55296<=me&&me<=56319?(me-55296)*1024+(ce-56320)+65536:ce}return Be}function Ce(g,Se,Be){var me=[g].concat(Se).concat([Be]),ce=me[me.length-2],X=Be,De=me.lastIndexOf(I);if(De>1&&me.slice(1,De).every(function(_){return _==s})&&[s,x,U].indexOf(g)==-1)return ie;var Qe=me.lastIndexOf(a);if(Qe>0&&me.slice(1,Qe).every(function(_){return _==a})&&[S,a].indexOf(ce)==-1)return me.filter(function(_){return _==a}).length%2==1?ue:ae;if(ce==e&&X==t)return Y;if(ce==r||ce==e||ce==t)return X==I&&Se.every(function(_){return _==s})?ie:te;if(X==r||X==e||X==t)return te;if(ce==c&&(X==c||X==f||X==h||X==E))return Y;if((ce==h||ce==f)&&(X==f||X==p))return Y;if((ce==E||ce==p)&&X==p)return Y;if(X==s||X==T)return Y;if(X==n)return Y;if(ce==S)return Y;var it=me.indexOf(s)!=-1?me.lastIndexOf(s)-1:me.length-2;return[x,U].indexOf(me[it])!=-1&&me.slice(it+1,-1).every(function(_){return _==s})&&X==I||ce==T&&[O,U].indexOf(X)!=-1?Y:Se.indexOf(a)!=-1?ie:ce==a&&X==a?Y:te}this.nextBreak=function(g,Se){if(Se===void 0&&(Se=0),Se<0)return 0;if(Se>=g.length-1)return g.length;for(var Be=Ee(Ae(g,Se)),me=[],ce=Se+1;ce{var Wtt=/^(.*?)(\x1b\[[^m]+m|\x1b\]8;;.*?(\x1b\\|\u0007))/,TR;function Vtt(){if(TR)return TR;if(typeof Intl.Segmenter<"u"){let e=new Intl.Segmenter("en",{granularity:"grapheme"});return TR=t=>Array.from(e.segment(t),({segment:r})=>r)}else{let e=fpe(),t=new e;return TR=r=>t.splitGraphemes(r)}}Ape.exports=(e,t=0,r=e.length)=>{if(t<0||r<0)throw new RangeError("Negative indices aren't supported by this implementation");let s=r-t,a="",n=0,c=0;for(;e.length>0;){let f=e.match(Wtt)||[e,e,void 0],p=Vtt()(f[1]),h=Math.min(t-n,p.length);p=p.slice(h);let E=Math.min(s-c,p.length);a+=p.slice(0,E).join(""),n+=h,c+=E,typeof f[2]<"u"&&(a+=f[2]),e=e.slice(f[0].length)}return a}});var An,uv=Ze(()=>{An=process.env.YARN_IS_TEST_ENV?"0.0.0":"4.13.0"});function Epe(e,{configuration:t,json:r}){if(!t.get("enableMessageNames"))return"";let a=Kf(e===null?0:e);return!r&&e===null?jt(t,a,"grey"):a}function xj(e,{configuration:t,json:r}){let s=Epe(e,{configuration:t,json:r});if(!s||e===null||e===0)return s;let a=Br[e],n=`https://yarnpkg.com/advanced/error-codes#${s}---${a}`.toLowerCase();return XE(t,s,n)}async function PI({configuration:e,stdout:t,forceError:r},s){let a=await Ot.start({configuration:e,stdout:t,includeFooter:!1},async n=>{let c=!1,f=!1;for(let p of s)typeof p.option<"u"&&(p.error||r?(f=!0,n.reportError(50,p.message)):(c=!0,n.reportWarning(50,p.message)),p.callback?.());c&&!f&&n.reportSeparator()});return a.hasErrors()?a.exitCode():null}var mpe,FR,Ytt,hpe,gpe,v0,ype,dpe,Ktt,Jtt,NR,ztt,Ot,fv=Ze(()=>{mpe=et(ppe()),FR=et(Rd());Gx();Tc();uv();kc();Ytt="\xB7",hpe=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],gpe=80,v0=FR.default.GITHUB_ACTIONS?{start:e=>`::group::${e} -`,end:e=>`::endgroup:: -`}:FR.default.TRAVIS?{start:e=>`travis_fold:start:${e} -`,end:e=>`travis_fold:end:${e} -`}:FR.default.GITLAB?{start:e=>`section_start:${Math.floor(Date.now()/1e3)}:${e.toLowerCase().replace(/\W+/g,"_")}[collapsed=true]\r\x1B[0K${e} -`,end:e=>`section_end:${Math.floor(Date.now()/1e3)}:${e.toLowerCase().replace(/\W+/g,"_")}\r\x1B[0K`}:null,ype=v0!==null,dpe=new Date,Ktt=["iTerm.app","Apple_Terminal","WarpTerminal","vscode"].includes(process.env.TERM_PROGRAM)||!!process.env.WT_SESSION,Jtt=e=>e,NR=Jtt({patrick:{date:[17,3],chars:["\u{1F340}","\u{1F331}"],size:40},simba:{date:[19,7],chars:["\u{1F981}","\u{1F334}"],size:40},jack:{date:[31,10],chars:["\u{1F383}","\u{1F987}"],size:40},hogsfather:{date:[31,12],chars:["\u{1F389}","\u{1F384}"],size:40},default:{chars:["=","-"],size:80}}),ztt=Ktt&&Object.keys(NR).find(e=>{let t=NR[e];return!(t.date&&(t.date[0]!==dpe.getDate()||t.date[1]!==dpe.getMonth()+1))})||"default";Ot=class extends yo{constructor({configuration:r,stdout:s,json:a=!1,forceSectionAlignment:n=!1,includeNames:c=!0,includePrefix:f=!0,includeFooter:p=!0,includeLogs:h=!a,includeInfos:E=h,includeWarnings:C=h}){super();this.uncommitted=new Set;this.warningCount=0;this.errorCount=0;this.timerFooter=[];this.startTime=Date.now();this.indent=0;this.level=0;this.progress=new Map;this.progressTime=0;this.progressFrame=0;this.progressTimeout=null;this.progressStyle=null;this.progressMaxScaledSize=null;if(S2(this,{configuration:r}),this.configuration=r,this.forceSectionAlignment=n,this.includeNames=c,this.includePrefix=f,this.includeFooter=p,this.includeInfos=E,this.includeWarnings=C,this.json=a,this.stdout=s,r.get("enableProgressBars")&&!a&&s.isTTY&&s.columns>22){let S=r.get("progressBarStyle")||ztt;if(!Object.hasOwn(NR,S))throw new Error("Assertion failed: Invalid progress bar style");this.progressStyle=NR[S];let x=Math.min(this.getRecommendedLength(),80);this.progressMaxScaledSize=Math.floor(this.progressStyle.size*x/80)}}static async start(r,s){let a=new this(r),n=process.emitWarning;process.emitWarning=(c,f)=>{if(typeof c!="string"){let h=c;c=h.message,f=f??h.name}let p=typeof f<"u"?`${f}: ${c}`:c;a.reportWarning(0,p)},r.includeVersion&&a.reportInfo(0,Kd(r.configuration,`Yarn ${An}`,2));try{await s(a)}catch(c){a.reportExceptionOnce(c)}finally{await a.finalize(),process.emitWarning=n}return a}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}getRecommendedLength(){let s=this.progressStyle!==null?this.stdout.columns-1:super.getRecommendedLength();return Math.max(40,s-12-this.indent*2)}startSectionSync({reportHeader:r,reportFooter:s,skipIfEmpty:a},n){let c={committed:!1,action:()=>{r?.()}};a?this.uncommitted.add(c):(c.action(),c.committed=!0);let f=Date.now();try{return n()}catch(p){throw this.reportExceptionOnce(p),p}finally{let p=Date.now();this.uncommitted.delete(c),c.committed&&s?.(p-f)}}async startSectionPromise({reportHeader:r,reportFooter:s,skipIfEmpty:a},n){let c={committed:!1,action:()=>{r?.()}};a?this.uncommitted.add(c):(c.action(),c.committed=!0);let f=Date.now();try{return await n()}catch(p){throw this.reportExceptionOnce(p),p}finally{let p=Date.now();this.uncommitted.delete(c),c.committed&&s?.(p-f)}}startTimerImpl(r,s,a){return{cb:typeof s=="function"?s:a,reportHeader:()=>{this.level+=1,this.reportInfo(null,`\u250C ${r}`),this.indent+=1,v0!==null&&!this.json&&this.includeInfos&&this.stdout.write(v0.start(r))},reportFooter:f=>{if(this.indent-=1,v0!==null&&!this.json&&this.includeInfos){this.stdout.write(v0.end(r));for(let p of this.timerFooter)p()}this.configuration.get("enableTimers")&&f>200?this.reportInfo(null,`\u2514 Completed in ${jt(this.configuration,f,gt.DURATION)}`):this.reportInfo(null,"\u2514 Completed"),this.level-=1},skipIfEmpty:(typeof s=="function"?{}:s).skipIfEmpty}}startTimerSync(r,s,a){let{cb:n,...c}=this.startTimerImpl(r,s,a);return this.startSectionSync(c,n)}async startTimerPromise(r,s,a){let{cb:n,...c}=this.startTimerImpl(r,s,a);return this.startSectionPromise(c,n)}reportSeparator(){this.indent===0?this.writeLine(""):this.reportInfo(null,"")}reportInfo(r,s){if(!this.includeInfos)return;this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:"",c=`${this.formatPrefix(n,"blueBright")}${s}`;this.json?this.reportJson({type:"info",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:s}):this.writeLine(c)}reportWarning(r,s){if(this.warningCount+=1,!this.includeWarnings)return;this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:"";this.json?this.reportJson({type:"warning",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:s}):this.writeLine(`${this.formatPrefix(n,"yellowBright")}${s}`)}reportError(r,s){this.errorCount+=1,this.timerFooter.push(()=>this.reportErrorImpl(r,s)),this.reportErrorImpl(r,s)}reportErrorImpl(r,s){this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:"";this.json?this.reportJson({type:"error",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:s}):this.writeLine(`${this.formatPrefix(n,"redBright")}${s}`,{truncate:!1})}reportFold(r,s){if(!v0)return;let a=`${v0.start(r)}${s}${v0.end(r)}`;this.timerFooter.push(()=>this.stdout.write(a))}reportProgress(r){if(this.progressStyle===null)return{...Promise.resolve(),stop:()=>{}};if(r.hasProgress&&r.hasTitle)throw new Error("Unimplemented: Progress bars can't have both progress and titles.");let s=!1,a=Promise.resolve().then(async()=>{let c={progress:r.hasProgress?0:void 0,title:r.hasTitle?"":void 0};this.progress.set(r,{definition:c,lastScaledSize:r.hasProgress?-1:void 0,lastTitle:void 0}),this.refreshProgress({delta:-1});for await(let{progress:f,title:p}of r)s||c.progress===f&&c.title===p||(c.progress=f,c.title=p,this.refreshProgress());n()}),n=()=>{s||(s=!0,this.progress.delete(r),this.refreshProgress({delta:1}))};return{...a,stop:n}}reportJson(r){this.json&&this.writeLine(`${JSON.stringify(r)}`)}async finalize(){if(!this.includeFooter)return;let r="";this.errorCount>0?r="Failed with errors":this.warningCount>0?r="Done with warnings":r="Done";let s=jt(this.configuration,Date.now()-this.startTime,gt.DURATION),a=this.configuration.get("enableTimers")?`${r} in ${s}`:r;this.errorCount>0?this.reportError(0,a):this.warningCount>0?this.reportWarning(0,a):this.reportInfo(0,a)}writeLine(r,{truncate:s}={}){this.clearProgress({clear:!0}),this.stdout.write(`${this.truncate(r,{truncate:s})} -`),this.writeProgress()}writeLines(r,{truncate:s}={}){this.clearProgress({delta:r.length});for(let a of r)this.stdout.write(`${this.truncate(a,{truncate:s})} -`);this.writeProgress()}commit(){let r=this.uncommitted;this.uncommitted=new Set;for(let s of r)s.committed=!0,s.action()}clearProgress({delta:r=0,clear:s=!1}){this.progressStyle!==null&&this.progress.size+r>0&&(this.stdout.write(`\x1B[${this.progress.size+r}A`),(r>0||s)&&this.stdout.write("\x1B[0J"))}writeProgress(){if(this.progressStyle===null||(this.progressTimeout!==null&&clearTimeout(this.progressTimeout),this.progressTimeout=null,this.progress.size===0))return;let r=Date.now();r-this.progressTime>gpe&&(this.progressFrame=(this.progressFrame+1)%hpe.length,this.progressTime=r);let s=hpe[this.progressFrame];for(let a of this.progress.values()){let n="";if(typeof a.lastScaledSize<"u"){let h=this.progressStyle.chars[0].repeat(a.lastScaledSize),E=this.progressStyle.chars[1].repeat(this.progressMaxScaledSize-a.lastScaledSize);n=` ${h}${E}`}let c=this.formatName(null),f=c?`${c}: `:"",p=a.definition.title?` ${a.definition.title}`:"";this.stdout.write(`${jt(this.configuration,"\u27A4","blueBright")} ${f}${s}${n}${p} -`)}this.progressTimeout=setTimeout(()=>{this.refreshProgress({force:!0})},gpe)}refreshProgress({delta:r=0,force:s=!1}={}){let a=!1,n=!1;if(s||this.progress.size===0)a=!0;else for(let c of this.progress.values()){let f=typeof c.definition.progress<"u"?Math.trunc(this.progressMaxScaledSize*c.definition.progress):void 0,p=c.lastScaledSize;c.lastScaledSize=f;let h=c.lastTitle;if(c.lastTitle=c.definition.title,f!==p||(n=h!==c.definition.title)){a=!0;break}}a&&(this.clearProgress({delta:r,clear:n}),this.writeProgress())}truncate(r,{truncate:s}={}){return this.progressStyle===null&&(s=!1),typeof s>"u"&&(s=this.configuration.get("preferTruncatedLines")),s&&(r=(0,mpe.default)(r,0,this.stdout.columns-1)),r}formatName(r){return this.includeNames?Epe(r,{configuration:this.configuration,json:this.json}):""}formatPrefix(r,s){return this.includePrefix?`${jt(this.configuration,"\u27A4",s)} ${r}${this.formatIndent()}`:""}formatNameWithHyperlink(r){return this.includeNames?xj(r,{configuration:this.configuration,json:this.json}):""}formatIndent(){return this.level>0||!this.forceSectionAlignment?"\u2502 ".repeat(this.indent):`${Ytt} `}}});var Cn={};Yt(Cn,{PackageManager:()=>Cpe,detectPackageManager:()=>wpe,executePackageAccessibleBinary:()=>bpe,executePackageScript:()=>OR,executePackageShellcode:()=>kj,executeWorkspaceAccessibleBinary:()=>nrt,executeWorkspaceLifecycleScript:()=>Spe,executeWorkspaceScript:()=>vpe,getPackageAccessibleBinaries:()=>LR,getWorkspaceAccessibleBinaries:()=>Dpe,hasPackageScript:()=>ert,hasWorkspaceScript:()=>Qj,isNodeScript:()=>Rj,makeScriptEnv:()=>Av,maybeExecuteWorkspaceLifecycleScript:()=>rrt,prepareExternalProject:()=>$tt});async function S0(e,t,r,s=[]){if(process.platform==="win32"){let a=`@goto #_undefined_# 2>NUL || @title %COMSPEC% & @setlocal & @"${r}" ${s.map(n=>`"${n.replace('"','""')}"`).join(" ")} %*`;await le.writeFilePromise(K.format({dir:e,name:t,ext:".cmd"}),a)}await le.writeFilePromise(K.join(e,t),`#!/bin/sh -exec "${r}" ${s.map(a=>`'${a.replace(/'/g,`'"'"'`)}'`).join(" ")} "$@" -`,{mode:493})}async function wpe(e){let t=await Ut.tryFind(e);if(t?.packageManager){let s=PQ(t.packageManager);if(s?.name){let a=`found ${JSON.stringify({packageManager:t.packageManager})} in manifest`,[n]=s.reference.split(".");switch(s.name){case"yarn":return{packageManagerField:!0,packageManager:Number(n)===1?"Yarn Classic":"Yarn",reason:a};case"npm":return{packageManagerField:!0,packageManager:"npm",reason:a};case"pnpm":return{packageManagerField:!0,packageManager:"pnpm",reason:a}}}}let r;try{r=await le.readFilePromise(K.join(e,Er.lockfile),"utf8")}catch{}return r!==void 0?r.match(/^__metadata:$/m)?{packageManager:"Yarn",reason:'"__metadata" key found in yarn.lock'}:{packageManager:"Yarn Classic",reason:'"__metadata" key not found in yarn.lock, must be a Yarn classic lockfile'}:le.existsSync(K.join(e,"package-lock.json"))?{packageManager:"npm",reason:`found npm's "package-lock.json" lockfile`}:le.existsSync(K.join(e,"pnpm-lock.yaml"))?{packageManager:"pnpm",reason:`found pnpm's "pnpm-lock.yaml" lockfile`}:null}async function Av({project:e,locator:t,binFolder:r,ignoreCorepack:s,lifecycleScript:a,baseEnv:n=e?.configuration.env??process.env}){let c={};for(let[E,C]of Object.entries(n))typeof C<"u"&&(c[E.toLowerCase()!=="path"?E:"PATH"]=C);let f=fe.fromPortablePath(r);c.BERRY_BIN_FOLDER=fe.fromPortablePath(f);let p=process.env.COREPACK_ROOT&&!s?fe.join(process.env.COREPACK_ROOT,"dist/yarn.js"):process.argv[1];if(await Promise.all([S0(r,"node",process.execPath),...An!==null?[S0(r,"run",process.execPath,[p,"run"]),S0(r,"yarn",process.execPath,[p]),S0(r,"yarnpkg",process.execPath,[p]),S0(r,"node-gyp",process.execPath,[p,"run","--top-level","node-gyp"])]:[]]),e&&(c.INIT_CWD=fe.fromPortablePath(e.configuration.startingCwd),c.PROJECT_CWD=fe.fromPortablePath(e.cwd)),c.PATH=c.PATH?`${f}${fe.delimiter}${c.PATH}`:`${f}`,c.npm_execpath=`${f}${fe.sep}yarn`,c.npm_node_execpath=`${f}${fe.sep}node`,t){if(!e)throw new Error("Assertion failed: Missing project");let E=e.tryWorkspaceByLocator(t),C=E?E.manifest.version??"":e.storedPackages.get(t.locatorHash).version??"";c.npm_package_name=fn(t),c.npm_package_version=C;let S;if(E)S=E.cwd;else{let x=e.storedPackages.get(t.locatorHash);if(!x)throw new Error(`Package for ${Vr(e.configuration,t)} not found in the project`);let I=e.configuration.getLinkers(),T={project:e,report:new Ot({stdout:new D0.PassThrough,configuration:e.configuration})},O=I.find(U=>U.supportsPackage(x,T));if(!O)throw new Error(`The package ${Vr(e.configuration,x)} isn't supported by any of the available linkers`);S=await O.findPackageLocation(x,T)}c.npm_package_json=fe.fromPortablePath(K.join(S,Er.manifest))}let h=An!==null?`yarn/${An}`:`yarn/${xp("@yarnpkg/core").version}-core`;return c.npm_config_user_agent=`${h} npm/? node/${process.version} ${process.platform} ${process.arch}`,a&&(c.npm_lifecycle_event=a),e&&await e.configuration.triggerHook(E=>E.setupScriptEnvironment,e,c,async(E,C,S)=>await S0(r,E,C,S)),c}async function $tt(e,t,{configuration:r,report:s,workspace:a=null,locator:n=null}){await Xtt(async()=>{await le.mktempPromise(async c=>{let f=K.join(c,"pack.log"),p=null,{stdout:h,stderr:E}=r.getSubprocessStreams(f,{prefix:fe.fromPortablePath(e),report:s}),C=n&&Hu(n)?sI(n):n,S=C?gl(C):"an external project";h.write(`Packing ${S} from sources -`);let x=await wpe(e),I;x!==null?(h.write(`Using ${x.packageManager} for bootstrap. Reason: ${x.reason} - -`),I=x.packageManager):(h.write(`No package manager configuration detected; defaulting to Yarn - -`),I="Yarn");let T=I==="Yarn"&&!x?.packageManagerField;await le.mktempPromise(async O=>{let U=await Av({binFolder:O,ignoreCorepack:T,baseEnv:{...process.env,COREPACK_ENABLE_AUTO_PIN:"0"}}),te=new Map([["Yarn Classic",async()=>{let ue=a!==null?["workspace",a]:[],ae=K.join(e,Er.manifest),de=await le.readFilePromise(ae),Ae=await Gu(process.execPath,[process.argv[1],"set","version","classic","--only-if-needed","--yarn-path"],{cwd:e,env:U,stdin:p,stdout:h,stderr:E,end:1});if(Ae.code!==0)return Ae.code;await le.writeFilePromise(ae,de),await le.appendFilePromise(K.join(e,".npmignore"),`/.yarn -`),h.write(` -`),delete U.NODE_ENV;let Ce=await Gu("yarn",["install"],{cwd:e,env:U,stdin:p,stdout:h,stderr:E,end:1});if(Ce.code!==0)return Ce.code;h.write(` -`);let Ee=await Gu("yarn",[...ue,"pack","--filename",fe.fromPortablePath(t)],{cwd:e,env:U,stdin:p,stdout:h,stderr:E});return Ee.code!==0?Ee.code:0}],["Yarn",async()=>{let ue=a!==null?["workspace",a]:[];U.YARN_ENABLE_INLINE_BUILDS="1";let ae=K.join(e,Er.lockfile);await le.existsPromise(ae)||await le.writeFilePromise(ae,"");let de=await Gu("yarn",[...ue,"pack","--install-if-needed","--filename",fe.fromPortablePath(t)],{cwd:e,env:U,stdin:p,stdout:h,stderr:E});return de.code!==0?de.code:0}],["npm",async()=>{if(a!==null){let Se=new D0.PassThrough,Be=KE(Se);Se.pipe(h,{end:!1});let me=await Gu("npm",["--version"],{cwd:e,env:U,stdin:p,stdout:Se,stderr:E,end:0});if(Se.end(),me.code!==0)return h.end(),E.end(),me.code;let ce=(await Be).toString().trim();if(!eA(ce,">=7.x")){let X=xa(null,"npm"),De=Mn(X,ce),Qe=Mn(X,">=7.x");throw new Error(`Workspaces aren't supported by ${oi(r,De)}; please upgrade to ${oi(r,Qe)} (npm has been detected as the primary package manager for ${jt(r,e,gt.PATH)})`)}}let ue=a!==null?["--workspace",a]:[];delete U.npm_config_user_agent,delete U.npm_config_production,delete U.NPM_CONFIG_PRODUCTION,delete U.NODE_ENV;let ae=await Gu("npm",["install","--legacy-peer-deps"],{cwd:e,env:U,stdin:p,stdout:h,stderr:E,end:1});if(ae.code!==0)return ae.code;let de=new D0.PassThrough,Ae=KE(de);de.pipe(h);let Ce=await Gu("npm",["pack","--silent",...ue],{cwd:e,env:U,stdin:p,stdout:de,stderr:E});if(Ce.code!==0)return Ce.code;let Ee=(await Ae).toString().trim().replace(/^.*\n/s,""),g=K.resolve(e,fe.toPortablePath(Ee));return await le.renamePromise(g,t),0}]]).get(I);if(typeof te>"u")throw new Error("Assertion failed: Unsupported workflow");let ie=await te();if(!(ie===0||typeof ie>"u"))throw le.detachTemp(c),new _t(58,`Packing the package failed (exit code ${ie}, logs can be found here: ${jt(r,f,gt.PATH)})`)})})})}async function ert(e,t,{project:r}){let s=r.tryWorkspaceByLocator(e);if(s!==null)return Qj(s,t);let a=r.storedPackages.get(e.locatorHash);if(!a)throw new Error(`Package for ${Vr(r.configuration,e)} not found in the project`);return await tA.openPromise(async n=>{let c=r.configuration,f=r.configuration.getLinkers(),p={project:r,report:new Ot({stdout:new D0.PassThrough,configuration:c})},h=f.find(x=>x.supportsPackage(a,p));if(!h)throw new Error(`The package ${Vr(r.configuration,a)} isn't supported by any of the available linkers`);let E=await h.findPackageLocation(a,p),C=new bn(E,{baseFs:n});return(await Ut.find(vt.dot,{baseFs:C})).scripts.has(t)})}async function OR(e,t,r,{cwd:s,project:a,stdin:n,stdout:c,stderr:f}){return await le.mktempPromise(async p=>{let{manifest:h,env:E,cwd:C}=await Bpe(e,{project:a,binFolder:p,cwd:s,lifecycleScript:t}),S=h.scripts.get(t);if(typeof S>"u")return 1;let x=async()=>await bI(S,r,{cwd:C,env:E,stdin:n,stdout:c,stderr:f});return await(await a.configuration.reduceHook(T=>T.wrapScriptExecution,x,a,e,t,{script:S,args:r,cwd:C,env:E,stdin:n,stdout:c,stderr:f}))()})}async function kj(e,t,r,{cwd:s,project:a,stdin:n,stdout:c,stderr:f}){return await le.mktempPromise(async p=>{let{env:h,cwd:E}=await Bpe(e,{project:a,binFolder:p,cwd:s});return await bI(t,r,{cwd:E,env:h,stdin:n,stdout:c,stderr:f})})}async function trt(e,{binFolder:t,cwd:r,lifecycleScript:s}){let a=await Av({project:e.project,locator:e.anchoredLocator,binFolder:t,lifecycleScript:s});return await Tj(t,await Dpe(e)),typeof r>"u"&&(r=K.dirname(await le.realpathPromise(K.join(e.cwd,"package.json")))),{manifest:e.manifest,binFolder:t,env:a,cwd:r}}async function Bpe(e,{project:t,binFolder:r,cwd:s,lifecycleScript:a}){let n=t.tryWorkspaceByLocator(e);if(n!==null)return trt(n,{binFolder:r,cwd:s,lifecycleScript:a});let c=t.storedPackages.get(e.locatorHash);if(!c)throw new Error(`Package for ${Vr(t.configuration,e)} not found in the project`);return await tA.openPromise(async f=>{let p=t.configuration,h=t.configuration.getLinkers(),E={project:t,report:new Ot({stdout:new D0.PassThrough,configuration:p})},C=h.find(O=>O.supportsPackage(c,E));if(!C)throw new Error(`The package ${Vr(t.configuration,c)} isn't supported by any of the available linkers`);let S=await Av({project:t,locator:e,binFolder:r,lifecycleScript:a});await Tj(r,await LR(e,{project:t}));let x=await C.findPackageLocation(c,E),I=new bn(x,{baseFs:f}),T=await Ut.find(vt.dot,{baseFs:I});return typeof s>"u"&&(s=x),{manifest:T,binFolder:r,env:S,cwd:s}})}async function vpe(e,t,r,{cwd:s,stdin:a,stdout:n,stderr:c}){return await OR(e.anchoredLocator,t,r,{cwd:s,project:e.project,stdin:a,stdout:n,stderr:c})}function Qj(e,t){return e.manifest.scripts.has(t)}async function Spe(e,t,{cwd:r,report:s}){let{configuration:a}=e.project,n=null;await le.mktempPromise(async c=>{let f=K.join(c,`${t}.log`),p=`# This file contains the result of Yarn calling the "${t}" lifecycle script inside a workspace ("${fe.fromPortablePath(e.cwd)}") -`,{stdout:h,stderr:E}=a.getSubprocessStreams(f,{report:s,prefix:Vr(a,e.anchoredLocator),header:p});s.reportInfo(36,`Calling the "${t}" lifecycle script`);let C=await vpe(e,t,[],{cwd:r,stdin:n,stdout:h,stderr:E});if(h.end(),E.end(),C!==0)throw le.detachTemp(c),new _t(36,`${E2(t)} script failed (exit code ${jt(a,C,gt.NUMBER)}, logs can be found here: ${jt(a,f,gt.PATH)}); run ${jt(a,`yarn ${t}`,gt.CODE)} to investigate`)})}async function rrt(e,t,r){Qj(e,t)&&await Spe(e,t,r)}function Rj(e){let t=K.extname(e);if(t.match(/\.[cm]?[jt]sx?$/))return!0;if(t===".exe"||t===".bin")return!1;let r=Buffer.alloc(4),s;try{s=le.openSync(e,"r")}catch{return!0}try{le.readSync(s,r,0,r.length,0)}finally{le.closeSync(s)}let a=r.readUint32BE();return!(a===3405691582||a===3489328638||a===2135247942||(a&4294901760)===1297743872)}async function LR(e,{project:t}){let r=t.configuration,s=new Map,a=t.storedPackages.get(e.locatorHash);if(!a)throw new Error(`Package for ${Vr(r,e)} not found in the project`);let n=new D0.Writable,c=r.getLinkers(),f={project:t,report:new Ot({configuration:r,stdout:n})},p=new Set([e.locatorHash]);for(let E of a.dependencies.values()){let C=t.storedResolutions.get(E.descriptorHash);if(!C)throw new Error(`Assertion failed: The resolution (${oi(r,E)}) should have been registered`);p.add(C)}let h=await Promise.all(Array.from(p,async E=>{let C=t.storedPackages.get(E);if(!C)throw new Error(`Assertion failed: The package (${E}) should have been registered`);if(C.bin.size===0)return zl.skip;let S=c.find(I=>I.supportsPackage(C,f));if(!S)return zl.skip;let x=null;try{x=await S.findPackageLocation(C,f)}catch(I){if(I.code==="LOCATOR_NOT_INSTALLED")return zl.skip;throw I}return{dependency:C,packageLocation:x}}));for(let E of h){if(E===zl.skip)continue;let{dependency:C,packageLocation:S}=E;for(let[x,I]of C.bin){let T=K.resolve(S,I);s.set(x,[C,fe.fromPortablePath(T),Rj(T)])}}return s}async function Dpe(e){return await LR(e.anchoredLocator,{project:e.project})}async function Tj(e,t){await Promise.all(Array.from(t,([r,[,s,a]])=>a?S0(e,r,process.execPath,[s]):S0(e,r,s,[])))}async function bpe(e,t,r,{cwd:s,project:a,stdin:n,stdout:c,stderr:f,nodeArgs:p=[],packageAccessibleBinaries:h}){h??=await LR(e,{project:a});let E=h.get(t);if(!E)throw new Error(`Binary not found (${t}) for ${Vr(a.configuration,e)}`);return await le.mktempPromise(async C=>{let[,S]=E,x=await Av({project:a,locator:e,binFolder:C});await Tj(x.BERRY_BIN_FOLDER,h);let I=Rj(fe.toPortablePath(S))?Gu(process.execPath,[...p,S,...r],{cwd:s,env:x,stdin:n,stdout:c,stderr:f}):Gu(S,r,{cwd:s,env:x,stdin:n,stdout:c,stderr:f}),T;try{T=await I}finally{await le.removePromise(x.BERRY_BIN_FOLDER)}return T.code})}async function nrt(e,t,r,{cwd:s,stdin:a,stdout:n,stderr:c,packageAccessibleBinaries:f}){return await bpe(e.anchoredLocator,t,r,{project:e.project,cwd:s,stdin:a,stdout:n,stderr:c,packageAccessibleBinaries:f})}var Ipe,D0,Cpe,Ztt,Xtt,Fj=Ze(()=>{Dt();Dt();rA();sv();Jl();Ipe=et(Nd()),D0=Ie("stream");cI();Tc();fv();uv();gR();kc();xc();Fp();Zo();Cpe=(a=>(a.Yarn1="Yarn Classic",a.Yarn2="Yarn",a.Npm="npm",a.Pnpm="pnpm",a))(Cpe||{});Ztt=2,Xtt=(0,Ipe.default)(Ztt)});function dnt(e,t,r){let s=t,a=t?t.next:e.head,n=new M6(r,s,a,e);return n.next===void 0&&(e.tail=n),n.prev===void 0&&(e.head=n),e.length++,n}function mnt(e,t){e.tail=new M6(t,e.tail,void 0,e),e.head||(e.head=e.tail),e.length++}function ynt(e,t){e.head=new M6(t,void 0,e.head,e),e.tail||(e.tail=e.head),e.length++}var ihe,Fa,pT,k6,she,R6,Em,gT,lhe,cT,N0,Rpe,che,ym,ghe,Fv,Yu,A6,Ihe,I6,_6,Dhe,H6,wn,gs,j6,Lv,MI,yl,Qhe,Nv,G6,ml,W6,irt,srt,Ppe,ort,art,lrt,Hp,jp,b0,MR,pv,UR,xpe,_R,kpe,qu,xI,Js,hv,TI,zs,Ta,Zs,Nj,HR,ta,es,Oj,Lj,Qpe,Mj,iA,Uj,jR,gv,cm,ec,dv,crt,urt,frt,Art,ohe,prt,hrt,grt,vm,drt,L0,Ju,mv,Kn,_j,Vp,Hj,l6,c6,bv,GR,LI,UI,jj,FI,M0,Ku,Q0,sA,NI,Gj,Wp,yv,qj,XR,um,$R,Im,Q6,mrt,hT,ahe,yrt,Ert,Irt,Crt,wrt,Brt,vrt,T6,Ov,Srt,lA,Drt,Tpe,brt,Wj,Cm,qR,Vj,F6,uhe,Prt,xrt,fhe,krt,Qrt,Ahe,Rrt,Trt,Frt,Nrt,Ort,Lrt,Mrt,Urt,phe,hhe,_rt,eT,Hrt,dT,N6,wm,jrt,fm,Yj,Grt,R0,qrt,Wrt,Vrt,T0,Yrt,Krt,Jrt,Kj,zrt,Am,uT,Zrt,Xrt,$rt,ent,cn,mhe,mT,tnt,u6,f6,rnt,Mc,pm,Gp,Jj,Fpe,oA,Ev,P0,Npe,Ci,qp,x0,zj,hm,hs,WR,VR,Zj,Ope,Lpe,Iv,Xj,YR,kI,k0,KR,gm,JR,zR,Mpe,nnt,Bm,Pv,int,yhe,snt,ont,yT,Ehe,ant,Upe,O6,ET,L6,lnt,cnt,_pe,unt,Che,fnt,Hpe,jpe,Gpe,p6,qpe,Cv,tT,h6,rT,g6,d6,m6,y6,F0,fT,E6,$j,aA,whe,Ant,pnt,hnt,gnt,M6,Wpe,Vpe,nT,wv,Wu,dm,mm,Bv,e6,Vu,t6,iT,Ype,C6,w6,sT,oT,Kpe,r6,aT,Bhe,n6,IT,U6,Ent,Int,vhe,She,Cnt,wnt,lUt,Bnt,vnt,Snt,Dnt,bnt,bhe,Pnt,xnt,knt,Phe,B6,AT,Qnt,xhe,Rnt,khe,Rhe,CT,Tnt,Fnt,v6,The,Nnt,Ont,i6,Jpe,QI,Lnt,Mnt,Unt,_nt,Hnt,jnt,zpe,S6,Zpe,D6,Uc,b6,P6,lT,Xpe,$pe,Dv,ehe,the,s6,O0,Xs,ZR,rhe,RI,o6,a6,x6,xv,kv,Qv,Rv,Gnt,Tv,qnt,Wnt,Vnt,nhe,q6,vv,Fhe,Ynt,Knt,cUt,Jnt,znt,Znt,Xnt,$nt,Sv,uUt,eit,Nhe=Ze(()=>{ihe=et(Ie("events"),1),Fa=et(Ie("fs"),1),pT=Ie("node:events"),k6=et(Ie("node:stream"),1),she=Ie("node:string_decoder"),R6=et(Ie("node:path"),1),Em=et(Ie("node:fs"),1),gT=Ie("path"),lhe=Ie("events"),cT=et(Ie("assert"),1),N0=Ie("buffer"),Rpe=et(Ie("zlib"),1),che=et(Ie("zlib"),1),ym=Ie("node:path"),ghe=Ie("node:path"),Fv=et(Ie("fs"),1),Yu=et(Ie("fs"),1),A6=et(Ie("path"),1),Ihe=Ie("node:path"),I6=et(Ie("path"),1),_6=et(Ie("node:fs"),1),Dhe=et(Ie("node:assert"),1),H6=Ie("node:crypto"),wn=et(Ie("node:fs"),1),gs=et(Ie("node:path"),1),j6=et(Ie("fs"),1),Lv=et(Ie("node:fs"),1),MI=et(Ie("node:path"),1),yl=et(Ie("node:fs"),1),Qhe=et(Ie("node:fs/promises"),1),Nv=et(Ie("node:path"),1),G6=Ie("node:path"),ml=et(Ie("node:fs"),1),W6=et(Ie("node:path"),1),irt=Object.defineProperty,srt=(e,t)=>{for(var r in t)irt(e,r,{get:t[r],enumerable:!0})},Ppe=typeof process=="object"&&process?process:{stdout:null,stderr:null},ort=e=>!!e&&typeof e=="object"&&(e instanceof vm||e instanceof k6.default||art(e)||lrt(e)),art=e=>!!e&&typeof e=="object"&&e instanceof pT.EventEmitter&&typeof e.pipe=="function"&&e.pipe!==k6.default.Writable.prototype.pipe,lrt=e=>!!e&&typeof e=="object"&&e instanceof pT.EventEmitter&&typeof e.write=="function"&&typeof e.end=="function",Hp=Symbol("EOF"),jp=Symbol("maybeEmitEnd"),b0=Symbol("emittedEnd"),MR=Symbol("emittingEnd"),pv=Symbol("emittedError"),UR=Symbol("closed"),xpe=Symbol("read"),_R=Symbol("flush"),kpe=Symbol("flushChunk"),qu=Symbol("encoding"),xI=Symbol("decoder"),Js=Symbol("flowing"),hv=Symbol("paused"),TI=Symbol("resume"),zs=Symbol("buffer"),Ta=Symbol("pipes"),Zs=Symbol("bufferLength"),Nj=Symbol("bufferPush"),HR=Symbol("bufferShift"),ta=Symbol("objectMode"),es=Symbol("destroyed"),Oj=Symbol("error"),Lj=Symbol("emitData"),Qpe=Symbol("emitEnd"),Mj=Symbol("emitEnd2"),iA=Symbol("async"),Uj=Symbol("abort"),jR=Symbol("aborted"),gv=Symbol("signal"),cm=Symbol("dataListeners"),ec=Symbol("discarded"),dv=e=>Promise.resolve().then(e),crt=e=>e(),urt=e=>e==="end"||e==="finish"||e==="prefinish",frt=e=>e instanceof ArrayBuffer||!!e&&typeof e=="object"&&e.constructor&&e.constructor.name==="ArrayBuffer"&&e.byteLength>=0,Art=e=>!Buffer.isBuffer(e)&&ArrayBuffer.isView(e),ohe=class{src;dest;opts;ondrain;constructor(e,t,r){this.src=e,this.dest=t,this.opts=r,this.ondrain=()=>e[TI](),this.dest.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(e){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},prt=class extends ohe{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(e,t,r){super(e,t,r),this.proxyErrors=s=>t.emit("error",s),e.on("error",this.proxyErrors)}},hrt=e=>!!e.objectMode,grt=e=>!e.objectMode&&!!e.encoding&&e.encoding!=="buffer",vm=class extends pT.EventEmitter{[Js]=!1;[hv]=!1;[Ta]=[];[zs]=[];[ta];[qu];[iA];[xI];[Hp]=!1;[b0]=!1;[MR]=!1;[UR]=!1;[pv]=null;[Zs]=0;[es]=!1;[gv];[jR]=!1;[cm]=0;[ec]=!1;writable=!0;readable=!0;constructor(...e){let t=e[0]||{};if(super(),t.objectMode&&typeof t.encoding=="string")throw new TypeError("Encoding and objectMode may not be used together");hrt(t)?(this[ta]=!0,this[qu]=null):grt(t)?(this[qu]=t.encoding,this[ta]=!1):(this[ta]=!1,this[qu]=null),this[iA]=!!t.async,this[xI]=this[qu]?new she.StringDecoder(this[qu]):null,t&&t.debugExposeBuffer===!0&&Object.defineProperty(this,"buffer",{get:()=>this[zs]}),t&&t.debugExposePipes===!0&&Object.defineProperty(this,"pipes",{get:()=>this[Ta]});let{signal:r}=t;r&&(this[gv]=r,r.aborted?this[Uj]():r.addEventListener("abort",()=>this[Uj]()))}get bufferLength(){return this[Zs]}get encoding(){return this[qu]}set encoding(e){throw new Error("Encoding must be set at instantiation time")}setEncoding(e){throw new Error("Encoding must be set at instantiation time")}get objectMode(){return this[ta]}set objectMode(e){throw new Error("objectMode must be set at instantiation time")}get async(){return this[iA]}set async(e){this[iA]=this[iA]||!!e}[Uj](){this[jR]=!0,this.emit("abort",this[gv]?.reason),this.destroy(this[gv]?.reason)}get aborted(){return this[jR]}set aborted(e){}write(e,t,r){if(this[jR])return!1;if(this[Hp])throw new Error("write after end");if(this[es])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;typeof t=="function"&&(r=t,t="utf8"),t||(t="utf8");let s=this[iA]?dv:crt;if(!this[ta]&&!Buffer.isBuffer(e)){if(Art(e))e=Buffer.from(e.buffer,e.byteOffset,e.byteLength);else if(frt(e))e=Buffer.from(e);else if(typeof e!="string")throw new Error("Non-contiguous data written to non-objectMode stream")}return this[ta]?(this[Js]&&this[Zs]!==0&&this[_R](!0),this[Js]?this.emit("data",e):this[Nj](e),this[Zs]!==0&&this.emit("readable"),r&&s(r),this[Js]):e.length?(typeof e=="string"&&!(t===this[qu]&&!this[xI]?.lastNeed)&&(e=Buffer.from(e,t)),Buffer.isBuffer(e)&&this[qu]&&(e=this[xI].write(e)),this[Js]&&this[Zs]!==0&&this[_R](!0),this[Js]?this.emit("data",e):this[Nj](e),this[Zs]!==0&&this.emit("readable"),r&&s(r),this[Js]):(this[Zs]!==0&&this.emit("readable"),r&&s(r),this[Js])}read(e){if(this[es])return null;if(this[ec]=!1,this[Zs]===0||e===0||e&&e>this[Zs])return this[jp](),null;this[ta]&&(e=null),this[zs].length>1&&!this[ta]&&(this[zs]=[this[qu]?this[zs].join(""):Buffer.concat(this[zs],this[Zs])]);let t=this[xpe](e||null,this[zs][0]);return this[jp](),t}[xpe](e,t){if(this[ta])this[HR]();else{let r=t;e===r.length||e===null?this[HR]():typeof r=="string"?(this[zs][0]=r.slice(e),t=r.slice(0,e),this[Zs]-=e):(this[zs][0]=r.subarray(e),t=r.subarray(0,e),this[Zs]-=e)}return this.emit("data",t),!this[zs].length&&!this[Hp]&&this.emit("drain"),t}end(e,t,r){return typeof e=="function"&&(r=e,e=void 0),typeof t=="function"&&(r=t,t="utf8"),e!==void 0&&this.write(e,t),r&&this.once("end",r),this[Hp]=!0,this.writable=!1,(this[Js]||!this[hv])&&this[jp](),this}[TI](){this[es]||(!this[cm]&&!this[Ta].length&&(this[ec]=!0),this[hv]=!1,this[Js]=!0,this.emit("resume"),this[zs].length?this[_R]():this[Hp]?this[jp]():this.emit("drain"))}resume(){return this[TI]()}pause(){this[Js]=!1,this[hv]=!0,this[ec]=!1}get destroyed(){return this[es]}get flowing(){return this[Js]}get paused(){return this[hv]}[Nj](e){this[ta]?this[Zs]+=1:this[Zs]+=e.length,this[zs].push(e)}[HR](){return this[ta]?this[Zs]-=1:this[Zs]-=this[zs][0].length,this[zs].shift()}[_R](e=!1){do;while(this[kpe](this[HR]())&&this[zs].length);!e&&!this[zs].length&&!this[Hp]&&this.emit("drain")}[kpe](e){return this.emit("data",e),this[Js]}pipe(e,t){if(this[es])return e;this[ec]=!1;let r=this[b0];return t=t||{},e===Ppe.stdout||e===Ppe.stderr?t.end=!1:t.end=t.end!==!1,t.proxyErrors=!!t.proxyErrors,r?t.end&&e.end():(this[Ta].push(t.proxyErrors?new prt(this,e,t):new ohe(this,e,t)),this[iA]?dv(()=>this[TI]()):this[TI]()),e}unpipe(e){let t=this[Ta].find(r=>r.dest===e);t&&(this[Ta].length===1?(this[Js]&&this[cm]===0&&(this[Js]=!1),this[Ta]=[]):this[Ta].splice(this[Ta].indexOf(t),1),t.unpipe())}addListener(e,t){return this.on(e,t)}on(e,t){let r=super.on(e,t);if(e==="data")this[ec]=!1,this[cm]++,!this[Ta].length&&!this[Js]&&this[TI]();else if(e==="readable"&&this[Zs]!==0)super.emit("readable");else if(urt(e)&&this[b0])super.emit(e),this.removeAllListeners(e);else if(e==="error"&&this[pv]){let s=t;this[iA]?dv(()=>s.call(this,this[pv])):s.call(this,this[pv])}return r}removeListener(e,t){return this.off(e,t)}off(e,t){let r=super.off(e,t);return e==="data"&&(this[cm]=this.listeners("data").length,this[cm]===0&&!this[ec]&&!this[Ta].length&&(this[Js]=!1)),r}removeAllListeners(e){let t=super.removeAllListeners(e);return(e==="data"||e===void 0)&&(this[cm]=0,!this[ec]&&!this[Ta].length&&(this[Js]=!1)),t}get emittedEnd(){return this[b0]}[jp](){!this[MR]&&!this[b0]&&!this[es]&&this[zs].length===0&&this[Hp]&&(this[MR]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[UR]&&this.emit("close"),this[MR]=!1)}emit(e,...t){let r=t[0];if(e!=="error"&&e!=="close"&&e!==es&&this[es])return!1;if(e==="data")return!this[ta]&&!r?!1:this[iA]?(dv(()=>this[Lj](r)),!0):this[Lj](r);if(e==="end")return this[Qpe]();if(e==="close"){if(this[UR]=!0,!this[b0]&&!this[es])return!1;let a=super.emit("close");return this.removeAllListeners("close"),a}else if(e==="error"){this[pv]=r,super.emit(Oj,r);let a=!this[gv]||this.listeners("error").length?super.emit("error",r):!1;return this[jp](),a}else if(e==="resume"){let a=super.emit("resume");return this[jp](),a}else if(e==="finish"||e==="prefinish"){let a=super.emit(e);return this.removeAllListeners(e),a}let s=super.emit(e,...t);return this[jp](),s}[Lj](e){for(let r of this[Ta])r.dest.write(e)===!1&&this.pause();let t=this[ec]?!1:super.emit("data",e);return this[jp](),t}[Qpe](){return this[b0]?!1:(this[b0]=!0,this.readable=!1,this[iA]?(dv(()=>this[Mj]()),!0):this[Mj]())}[Mj](){if(this[xI]){let t=this[xI].end();if(t){for(let r of this[Ta])r.dest.write(t);this[ec]||super.emit("data",t)}}for(let t of this[Ta])t.end();let e=super.emit("end");return this.removeAllListeners("end"),e}async collect(){let e=Object.assign([],{dataLength:0});this[ta]||(e.dataLength=0);let t=this.promise();return this.on("data",r=>{e.push(r),this[ta]||(e.dataLength+=r.length)}),await t,e}async concat(){if(this[ta])throw new Error("cannot concat in objectMode");let e=await this.collect();return this[qu]?e.join(""):Buffer.concat(e,e.dataLength)}async promise(){return new Promise((e,t)=>{this.on(es,()=>t(new Error("stream destroyed"))),this.on("error",r=>t(r)),this.on("end",()=>e())})}[Symbol.asyncIterator](){this[ec]=!1;let e=!1,t=async()=>(this.pause(),e=!0,{value:void 0,done:!0});return{next:()=>{if(e)return t();let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[Hp])return t();let s,a,n=h=>{this.off("data",c),this.off("end",f),this.off(es,p),t(),a(h)},c=h=>{this.off("error",n),this.off("end",f),this.off(es,p),this.pause(),s({value:h,done:!!this[Hp]})},f=()=>{this.off("error",n),this.off("data",c),this.off(es,p),t(),s({done:!0,value:void 0})},p=()=>n(new Error("stream destroyed"));return new Promise((h,E)=>{a=E,s=h,this.once(es,p),this.once("error",n),this.once("end",f),this.once("data",c)})},throw:t,return:t,[Symbol.asyncIterator](){return this}}}[Symbol.iterator](){this[ec]=!1;let e=!1,t=()=>(this.pause(),this.off(Oj,t),this.off(es,t),this.off("end",t),e=!0,{done:!0,value:void 0}),r=()=>{if(e)return t();let s=this.read();return s===null?t():{done:!1,value:s}};return this.once("end",t),this.once(Oj,t),this.once(es,t),{next:r,throw:t,return:t,[Symbol.iterator](){return this}}}destroy(e){if(this[es])return e?this.emit("error",e):this.emit(es),this;this[es]=!0,this[ec]=!0,this[zs].length=0,this[Zs]=0;let t=this;return typeof t.close=="function"&&!this[UR]&&t.close(),e?this.emit("error",e):this.emit(es),this}static get isStream(){return ort}},drt=Fa.default.writev,L0=Symbol("_autoClose"),Ju=Symbol("_close"),mv=Symbol("_ended"),Kn=Symbol("_fd"),_j=Symbol("_finished"),Vp=Symbol("_flags"),Hj=Symbol("_flush"),l6=Symbol("_handleChunk"),c6=Symbol("_makeBuf"),bv=Symbol("_mode"),GR=Symbol("_needDrain"),LI=Symbol("_onerror"),UI=Symbol("_onopen"),jj=Symbol("_onread"),FI=Symbol("_onwrite"),M0=Symbol("_open"),Ku=Symbol("_path"),Q0=Symbol("_pos"),sA=Symbol("_queue"),NI=Symbol("_read"),Gj=Symbol("_readSize"),Wp=Symbol("_reading"),yv=Symbol("_remain"),qj=Symbol("_size"),XR=Symbol("_write"),um=Symbol("_writing"),$R=Symbol("_defaultFlag"),Im=Symbol("_errored"),Q6=class extends vm{[Im]=!1;[Kn];[Ku];[Gj];[Wp]=!1;[qj];[yv];[L0];constructor(e,t){if(t=t||{},super(t),this.readable=!0,this.writable=!1,typeof e!="string")throw new TypeError("path must be a string");this[Im]=!1,this[Kn]=typeof t.fd=="number"?t.fd:void 0,this[Ku]=e,this[Gj]=t.readSize||16*1024*1024,this[Wp]=!1,this[qj]=typeof t.size=="number"?t.size:1/0,this[yv]=this[qj],this[L0]=typeof t.autoClose=="boolean"?t.autoClose:!0,typeof this[Kn]=="number"?this[NI]():this[M0]()}get fd(){return this[Kn]}get path(){return this[Ku]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[M0](){Fa.default.open(this[Ku],"r",(e,t)=>this[UI](e,t))}[UI](e,t){e?this[LI](e):(this[Kn]=t,this.emit("open",t),this[NI]())}[c6](){return Buffer.allocUnsafe(Math.min(this[Gj],this[yv]))}[NI](){if(!this[Wp]){this[Wp]=!0;let e=this[c6]();if(e.length===0)return process.nextTick(()=>this[jj](null,0,e));Fa.default.read(this[Kn],e,0,e.length,null,(t,r,s)=>this[jj](t,r,s))}}[jj](e,t,r){this[Wp]=!1,e?this[LI](e):this[l6](t,r)&&this[NI]()}[Ju](){if(this[L0]&&typeof this[Kn]=="number"){let e=this[Kn];this[Kn]=void 0,Fa.default.close(e,t=>t?this.emit("error",t):this.emit("close"))}}[LI](e){this[Wp]=!0,this[Ju](),this.emit("error",e)}[l6](e,t){let r=!1;return this[yv]-=e,e>0&&(r=super.write(ethis[UI](e,t))}[UI](e,t){this[$R]&&this[Vp]==="r+"&&e&&e.code==="ENOENT"?(this[Vp]="w",this[M0]()):e?this[LI](e):(this[Kn]=t,this.emit("open",t),this[um]||this[Hj]())}end(e,t){return e&&this.write(e,t),this[mv]=!0,!this[um]&&!this[sA].length&&typeof this[Kn]=="number"&&this[FI](null,0),this}write(e,t){return typeof e=="string"&&(e=Buffer.from(e,t)),this[mv]?(this.emit("error",new Error("write() after end()")),!1):this[Kn]===void 0||this[um]||this[sA].length?(this[sA].push(e),this[GR]=!0,!1):(this[um]=!0,this[XR](e),!0)}[XR](e){Fa.default.write(this[Kn],e,0,e.length,this[Q0],(t,r)=>this[FI](t,r))}[FI](e,t){e?this[LI](e):(this[Q0]!==void 0&&typeof t=="number"&&(this[Q0]+=t),this[sA].length?this[Hj]():(this[um]=!1,this[mv]&&!this[_j]?(this[_j]=!0,this[Ju](),this.emit("finish")):this[GR]&&(this[GR]=!1,this.emit("drain"))))}[Hj](){if(this[sA].length===0)this[mv]&&this[FI](null,0);else if(this[sA].length===1)this[XR](this[sA].pop());else{let e=this[sA];this[sA]=[],drt(this[Kn],e,this[Q0],(t,r)=>this[FI](t,r))}}[Ju](){if(this[L0]&&typeof this[Kn]=="number"){let e=this[Kn];this[Kn]=void 0,Fa.default.close(e,t=>t?this.emit("error",t):this.emit("close"))}}},ahe=class extends hT{[M0](){let e;if(this[$R]&&this[Vp]==="r+")try{e=Fa.default.openSync(this[Ku],this[Vp],this[bv])}catch(t){if(t?.code==="ENOENT")return this[Vp]="w",this[M0]();throw t}else e=Fa.default.openSync(this[Ku],this[Vp],this[bv]);this[UI](null,e)}[Ju](){if(this[L0]&&typeof this[Kn]=="number"){let e=this[Kn];this[Kn]=void 0,Fa.default.closeSync(e),this.emit("close")}}[XR](e){let t=!0;try{this[FI](null,Fa.default.writeSync(this[Kn],e,0,e.length,this[Q0])),t=!1}finally{if(t)try{this[Ju]()}catch{}}}},yrt=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"],["onentry","onReadEntry"]]),Ert=e=>!!e.sync&&!!e.file,Irt=e=>!e.sync&&!!e.file,Crt=e=>!!e.sync&&!e.file,wrt=e=>!e.sync&&!e.file,Brt=e=>!!e.file,vrt=e=>yrt.get(e)||e,T6=(e={})=>{if(!e)return{};let t={};for(let[r,s]of Object.entries(e)){let a=vrt(r);t[a]=s}return t.chmod===void 0&&t.noChmod===!1&&(t.chmod=!0),delete t.noChmod,t},Ov=(e,t,r,s,a)=>Object.assign((n=[],c,f)=>{Array.isArray(n)&&(c=n,n={}),typeof c=="function"&&(f=c,c=void 0),c?c=Array.from(c):c=[];let p=T6(n);if(a?.(p,c),Ert(p)){if(typeof f=="function")throw new TypeError("callback not supported for sync tar functions");return e(p,c)}else if(Irt(p)){let h=t(p,c),E=f||void 0;return E?h.then(()=>E(),E):h}else if(Crt(p)){if(typeof f=="function")throw new TypeError("callback not supported for sync tar functions");return r(p,c)}else if(wrt(p)){if(typeof f=="function")throw new TypeError("callback only supported with file option");return s(p,c)}else throw new Error("impossible options??")},{syncFile:e,asyncFile:t,syncNoFile:r,asyncNoFile:s,validate:a}),Srt=che.default.constants||{ZLIB_VERNUM:4736},lA=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:1/0,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},Srt)),Drt=N0.Buffer.concat,Tpe=Object.getOwnPropertyDescriptor(N0.Buffer,"concat"),brt=e=>e,Wj=Tpe?.writable===!0||Tpe?.set!==void 0?e=>{N0.Buffer.concat=e?brt:Drt}:e=>{},Cm=Symbol("_superWrite"),qR=class extends Error{code;errno;constructor(e,t){super("zlib: "+e.message,{cause:e}),this.code=e.code,this.errno=e.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+e.message,Error.captureStackTrace(this,t??this.constructor)}get name(){return"ZlibError"}},Vj=Symbol("flushFlag"),F6=class extends vm{#e=!1;#t=!1;#s;#r;#i;#n;#o;get sawError(){return this.#e}get handle(){return this.#n}get flushFlag(){return this.#s}constructor(e,t){if(!e||typeof e!="object")throw new TypeError("invalid options for ZlibBase constructor");if(super(e),this.#s=e.flush??0,this.#r=e.finishFlush??0,this.#i=e.fullFlushFlag??0,typeof Rpe[t]!="function")throw new TypeError("Compression method not supported: "+t);try{this.#n=new Rpe[t](e)}catch(r){throw new qR(r,this.constructor)}this.#o=r=>{this.#e||(this.#e=!0,this.close(),this.emit("error",r))},this.#n?.on("error",r=>this.#o(new qR(r))),this.once("end",()=>this.close)}close(){this.#n&&(this.#n.close(),this.#n=void 0,this.emit("close"))}reset(){if(!this.#e)return(0,cT.default)(this.#n,"zlib binding closed"),this.#n.reset?.()}flush(e){this.ended||(typeof e!="number"&&(e=this.#i),this.write(Object.assign(N0.Buffer.alloc(0),{[Vj]:e})))}end(e,t,r){return typeof e=="function"&&(r=e,t=void 0,e=void 0),typeof t=="function"&&(r=t,t=void 0),e&&(t?this.write(e,t):this.write(e)),this.flush(this.#r),this.#t=!0,super.end(r)}get ended(){return this.#t}[Cm](e){return super.write(e)}write(e,t,r){if(typeof t=="function"&&(r=t,t="utf8"),typeof e=="string"&&(e=N0.Buffer.from(e,t)),this.#e)return;(0,cT.default)(this.#n,"zlib binding closed");let s=this.#n._handle,a=s.close;s.close=()=>{};let n=this.#n.close;this.#n.close=()=>{},Wj(!0);let c;try{let p=typeof e[Vj]=="number"?e[Vj]:this.#s;c=this.#n._processChunk(e,p),Wj(!1)}catch(p){Wj(!1),this.#o(new qR(p,this.write))}finally{this.#n&&(this.#n._handle=s,s.close=a,this.#n.close=n,this.#n.removeAllListeners("error"))}this.#n&&this.#n.on("error",p=>this.#o(new qR(p,this.write)));let f;if(c)if(Array.isArray(c)&&c.length>0){let p=c[0];f=this[Cm](N0.Buffer.from(p));for(let h=1;h{typeof s=="function"&&(a=s,s=this.flushFlag),this.flush(s),a?.()};try{this.handle.params(e,t)}finally{this.handle.flush=r}this.handle&&(this.#e=e,this.#t=t)}}}},Prt=class extends uhe{#e;constructor(e){super(e,"Gzip"),this.#e=e&&!!e.portable}[Cm](e){return this.#e?(this.#e=!1,e[9]=255,super[Cm](e)):super[Cm](e)}},xrt=class extends uhe{constructor(e){super(e,"Unzip")}},fhe=class extends F6{constructor(e,t){e=e||{},e.flush=e.flush||lA.BROTLI_OPERATION_PROCESS,e.finishFlush=e.finishFlush||lA.BROTLI_OPERATION_FINISH,e.fullFlushFlag=lA.BROTLI_OPERATION_FLUSH,super(e,t)}},krt=class extends fhe{constructor(e){super(e,"BrotliCompress")}},Qrt=class extends fhe{constructor(e){super(e,"BrotliDecompress")}},Ahe=class extends F6{constructor(e,t){e=e||{},e.flush=e.flush||lA.ZSTD_e_continue,e.finishFlush=e.finishFlush||lA.ZSTD_e_end,e.fullFlushFlag=lA.ZSTD_e_flush,super(e,t)}},Rrt=class extends Ahe{constructor(e){super(e,"ZstdCompress")}},Trt=class extends Ahe{constructor(e){super(e,"ZstdDecompress")}},Frt=(e,t)=>{if(Number.isSafeInteger(e))e<0?Ort(e,t):Nrt(e,t);else throw Error("cannot encode number outside of javascript safe integer range");return t},Nrt=(e,t)=>{t[0]=128;for(var r=t.length;r>1;r--)t[r-1]=e&255,e=Math.floor(e/256)},Ort=(e,t)=>{t[0]=255;var r=!1;e=e*-1;for(var s=t.length;s>1;s--){var a=e&255;e=Math.floor(e/256),r?t[s-1]=phe(a):a===0?t[s-1]=0:(r=!0,t[s-1]=hhe(a))}},Lrt=e=>{let t=e[0],r=t===128?Urt(e.subarray(1,e.length)):t===255?Mrt(e):null;if(r===null)throw Error("invalid base256 encoding");if(!Number.isSafeInteger(r))throw Error("parsed number outside of javascript safe integer range");return r},Mrt=e=>{for(var t=e.length,r=0,s=!1,a=t-1;a>-1;a--){var n=Number(e[a]),c;s?c=phe(n):n===0?c=n:(s=!0,c=hhe(n)),c!==0&&(r-=c*Math.pow(256,t-a-1))}return r},Urt=e=>{for(var t=e.length,r=0,s=t-1;s>-1;s--){var a=Number(e[s]);a!==0&&(r+=a*Math.pow(256,t-s-1))}return r},phe=e=>(255^e)&255,hhe=e=>(255^e)+1&255,_rt={};srt(_rt,{code:()=>N6,isCode:()=>eT,isName:()=>Hrt,name:()=>dT});eT=e=>dT.has(e),Hrt=e=>N6.has(e),dT=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]),N6=new Map(Array.from(dT).map(e=>[e[1],e[0]])),wm=class{cksumValid=!1;needPax=!1;nullBlock=!1;block;path;mode;uid;gid;size;cksum;#e="Unsupported";linkpath;uname;gname;devmaj=0;devmin=0;atime;ctime;mtime;charset;comment;constructor(e,t=0,r,s){Buffer.isBuffer(e)?this.decode(e,t||0,r,s):e&&this.#t(e)}decode(e,t,r,s){if(t||(t=0),!e||!(e.length>=t+512))throw new Error("need 512 bytes for header");this.path=r?.path??fm(e,t,100),this.mode=r?.mode??s?.mode??R0(e,t+100,8),this.uid=r?.uid??s?.uid??R0(e,t+108,8),this.gid=r?.gid??s?.gid??R0(e,t+116,8),this.size=r?.size??s?.size??R0(e,t+124,12),this.mtime=r?.mtime??s?.mtime??Yj(e,t+136,12),this.cksum=R0(e,t+148,12),s&&this.#t(s,!0),r&&this.#t(r);let a=fm(e,t+156,1);if(eT(a)&&(this.#e=a||"0"),this.#e==="0"&&this.path.slice(-1)==="/"&&(this.#e="5"),this.#e==="5"&&(this.size=0),this.linkpath=fm(e,t+157,100),e.subarray(t+257,t+265).toString()==="ustar\x0000")if(this.uname=r?.uname??s?.uname??fm(e,t+265,32),this.gname=r?.gname??s?.gname??fm(e,t+297,32),this.devmaj=r?.devmaj??s?.devmaj??R0(e,t+329,8)??0,this.devmin=r?.devmin??s?.devmin??R0(e,t+337,8)??0,e[t+475]!==0){let c=fm(e,t+345,155);this.path=c+"/"+this.path}else{let c=fm(e,t+345,130);c&&(this.path=c+"/"+this.path),this.atime=r?.atime??s?.atime??Yj(e,t+476,12),this.ctime=r?.ctime??s?.ctime??Yj(e,t+488,12)}let n=256;for(let c=t;c!(s==null||r==="path"&&t||r==="linkpath"&&t||r==="global"))))}encode(e,t=0){if(e||(e=this.block=Buffer.alloc(512)),this.#e==="Unsupported"&&(this.#e="0"),!(e.length>=t+512))throw new Error("need 512 bytes for header");let r=this.ctime||this.atime?130:155,s=jrt(this.path||"",r),a=s[0],n=s[1];this.needPax=!!s[2],this.needPax=Am(e,t,100,a)||this.needPax,this.needPax=T0(e,t+100,8,this.mode)||this.needPax,this.needPax=T0(e,t+108,8,this.uid)||this.needPax,this.needPax=T0(e,t+116,8,this.gid)||this.needPax,this.needPax=T0(e,t+124,12,this.size)||this.needPax,this.needPax=Kj(e,t+136,12,this.mtime)||this.needPax,e[t+156]=this.#e.charCodeAt(0),this.needPax=Am(e,t+157,100,this.linkpath)||this.needPax,e.write("ustar\x0000",t+257,8),this.needPax=Am(e,t+265,32,this.uname)||this.needPax,this.needPax=Am(e,t+297,32,this.gname)||this.needPax,this.needPax=T0(e,t+329,8,this.devmaj)||this.needPax,this.needPax=T0(e,t+337,8,this.devmin)||this.needPax,this.needPax=Am(e,t+345,r,n)||this.needPax,e[t+475]!==0?this.needPax=Am(e,t+345,155,n)||this.needPax:(this.needPax=Am(e,t+345,130,n)||this.needPax,this.needPax=Kj(e,t+476,12,this.atime)||this.needPax,this.needPax=Kj(e,t+488,12,this.ctime)||this.needPax);let c=256;for(let f=t;f{let r=e,s="",a,n=ym.posix.parse(e).root||".";if(Buffer.byteLength(r)<100)a=[r,s,!1];else{s=ym.posix.dirname(r),r=ym.posix.basename(r);do Buffer.byteLength(r)<=100&&Buffer.byteLength(s)<=t?a=[r,s,!1]:Buffer.byteLength(r)>100&&Buffer.byteLength(s)<=t?a=[r.slice(0,99),s,!0]:(r=ym.posix.join(ym.posix.basename(s),r),s=ym.posix.dirname(s));while(s!==n&&a===void 0);a||(a=[e.slice(0,99),"",!0])}return a},fm=(e,t,r)=>e.subarray(t,t+r).toString("utf8").replace(/\0.*/,""),Yj=(e,t,r)=>Grt(R0(e,t,r)),Grt=e=>e===void 0?void 0:new Date(e*1e3),R0=(e,t,r)=>Number(e[t])&128?Lrt(e.subarray(t,t+r)):Wrt(e,t,r),qrt=e=>isNaN(e)?void 0:e,Wrt=(e,t,r)=>qrt(parseInt(e.subarray(t,t+r).toString("utf8").replace(/\0.*$/,"").trim(),8)),Vrt={12:8589934591,8:2097151},T0=(e,t,r,s)=>s===void 0?!1:s>Vrt[r]||s<0?(Frt(s,e.subarray(t,t+r)),!0):(Yrt(e,t,r,s),!1),Yrt=(e,t,r,s)=>e.write(Krt(s,r),t,r,"ascii"),Krt=(e,t)=>Jrt(Math.floor(e).toString(8),t),Jrt=(e,t)=>(e.length===t-1?e:new Array(t-e.length-1).join("0")+e+" ")+"\0",Kj=(e,t,r,s)=>s===void 0?!1:T0(e,t,r,s.getTime()/1e3),zrt=new Array(156).join("\0"),Am=(e,t,r,s)=>s===void 0?!1:(e.write(s+zrt,t,r,"utf8"),s.length!==Buffer.byteLength(s)||s.length>r),uT=class dhe{atime;mtime;ctime;charset;comment;gid;uid;gname;uname;linkpath;dev;ino;nlink;path;size;mode;global;constructor(t,r=!1){this.atime=t.atime,this.charset=t.charset,this.comment=t.comment,this.ctime=t.ctime,this.dev=t.dev,this.gid=t.gid,this.global=r,this.gname=t.gname,this.ino=t.ino,this.linkpath=t.linkpath,this.mtime=t.mtime,this.nlink=t.nlink,this.path=t.path,this.size=t.size,this.uid=t.uid,this.uname=t.uname}encode(){let t=this.encodeBody();if(t==="")return Buffer.allocUnsafe(0);let r=Buffer.byteLength(t),s=512*Math.ceil(1+r/512),a=Buffer.allocUnsafe(s);for(let n=0;n<512;n++)a[n]=0;new wm({path:("PaxHeader/"+(0,ghe.basename)(this.path??"")).slice(0,99),mode:this.mode||420,uid:this.uid,gid:this.gid,size:r,mtime:this.mtime,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime,ctime:this.ctime}).encode(a),a.write(t,512,r,"utf8");for(let n=r+512;n=Math.pow(10,c)&&(c+=1),c+n+a}static parse(t,r,s=!1){return new dhe(Zrt(Xrt(t),r),s)}},Zrt=(e,t)=>t?Object.assign({},t,e):e,Xrt=e=>e.replace(/\n$/,"").split(` -`).reduce($rt,Object.create(null)),$rt=(e,t)=>{let r=parseInt(t,10);if(r!==Buffer.byteLength(t)+1)return e;t=t.slice((r+" ").length);let s=t.split("="),a=s.shift();if(!a)return e;let n=a.replace(/^SCHILY\.(dev|ino|nlink)/,"$1"),c=s.join("=");return e[n]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(n)?new Date(Number(c)*1e3):/^[0-9]+$/.test(c)?+c:c,e},ent=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,cn=ent!=="win32"?e=>e:e=>e&&e.replace(/\\/g,"/"),mhe=class extends vm{extended;globalExtended;header;startBlockSize;blockRemain;remain;type;meta=!1;ignore=!1;path;mode;uid;gid;uname;gname;size=0;mtime;atime;ctime;linkpath;dev;ino;nlink;invalid=!1;absolute;unsupported=!1;constructor(e,t,r){switch(super({}),this.pause(),this.extended=t,this.globalExtended=r,this.header=e,this.remain=e.size??0,this.startBlockSize=512*Math.ceil(this.remain/512),this.blockRemain=this.startBlockSize,this.type=e.type,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=!0;break;default:this.ignore=!0}if(!e.path)throw new Error("no path provided for tar.ReadEntry");this.path=cn(e.path),this.mode=e.mode,this.mode&&(this.mode=this.mode&4095),this.uid=e.uid,this.gid=e.gid,this.uname=e.uname,this.gname=e.gname,this.size=this.remain,this.mtime=e.mtime,this.atime=e.atime,this.ctime=e.ctime,this.linkpath=e.linkpath?cn(e.linkpath):void 0,this.uname=e.uname,this.gname=e.gname,t&&this.#e(t),r&&this.#e(r,!0)}write(e){let t=e.length;if(t>this.blockRemain)throw new Error("writing more to entry than is appropriate");let r=this.remain,s=this.blockRemain;return this.remain=Math.max(0,r-t),this.blockRemain=Math.max(0,s-t),this.ignore?!0:r>=t?super.write(e):super.write(e.subarray(0,r))}#e(e,t=!1){e.path&&(e.path=cn(e.path)),e.linkpath&&(e.linkpath=cn(e.linkpath)),Object.assign(this,Object.fromEntries(Object.entries(e).filter(([r,s])=>!(s==null||r==="path"&&t))))}},mT=(e,t,r,s={})=>{e.file&&(s.file=e.file),e.cwd&&(s.cwd=e.cwd),s.code=r instanceof Error&&r.code||t,s.tarCode=t,!e.strict&&s.recoverable!==!1?(r instanceof Error&&(s=Object.assign(r,s),r=r.message),e.emit("warn",t,r,s)):r instanceof Error?e.emit("error",Object.assign(r,s)):e.emit("error",Object.assign(new Error(`${t}: ${r}`),s))},tnt=1024*1024,u6=Buffer.from([31,139]),f6=Buffer.from([40,181,47,253]),rnt=Math.max(u6.length,f6.length),Mc=Symbol("state"),pm=Symbol("writeEntry"),Gp=Symbol("readEntry"),Jj=Symbol("nextEntry"),Fpe=Symbol("processEntry"),oA=Symbol("extendedHeader"),Ev=Symbol("globalExtendedHeader"),P0=Symbol("meta"),Npe=Symbol("emitMeta"),Ci=Symbol("buffer"),qp=Symbol("queue"),x0=Symbol("ended"),zj=Symbol("emittedEnd"),hm=Symbol("emit"),hs=Symbol("unzip"),WR=Symbol("consumeChunk"),VR=Symbol("consumeChunkSub"),Zj=Symbol("consumeBody"),Ope=Symbol("consumeMeta"),Lpe=Symbol("consumeHeader"),Iv=Symbol("consuming"),Xj=Symbol("bufferConcat"),YR=Symbol("maybeEnd"),kI=Symbol("writing"),k0=Symbol("aborted"),KR=Symbol("onDone"),gm=Symbol("sawValidEntry"),JR=Symbol("sawNullBlock"),zR=Symbol("sawEOF"),Mpe=Symbol("closeStream"),nnt=()=>!0,Bm=class extends lhe.EventEmitter{file;strict;maxMetaEntrySize;filter;brotli;zstd;writable=!0;readable=!1;[qp]=[];[Ci];[Gp];[pm];[Mc]="begin";[P0]="";[oA];[Ev];[x0]=!1;[hs];[k0]=!1;[gm];[JR]=!1;[zR]=!1;[kI]=!1;[Iv]=!1;[zj]=!1;constructor(e={}){super(),this.file=e.file||"",this.on(KR,()=>{(this[Mc]==="begin"||this[gm]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),e.ondone?this.on(KR,e.ondone):this.on(KR,()=>{this.emit("prefinish"),this.emit("finish"),this.emit("end")}),this.strict=!!e.strict,this.maxMetaEntrySize=e.maxMetaEntrySize||tnt,this.filter=typeof e.filter=="function"?e.filter:nnt;let t=e.file&&(e.file.endsWith(".tar.br")||e.file.endsWith(".tbr"));this.brotli=!(e.gzip||e.zstd)&&e.brotli!==void 0?e.brotli:t?void 0:!1;let r=e.file&&(e.file.endsWith(".tar.zst")||e.file.endsWith(".tzst"));this.zstd=!(e.gzip||e.brotli)&&e.zstd!==void 0?e.zstd:r?!0:void 0,this.on("end",()=>this[Mpe]()),typeof e.onwarn=="function"&&this.on("warn",e.onwarn),typeof e.onReadEntry=="function"&&this.on("entry",e.onReadEntry)}warn(e,t,r={}){mT(this,e,t,r)}[Lpe](e,t){this[gm]===void 0&&(this[gm]=!1);let r;try{r=new wm(e,t,this[oA],this[Ev])}catch(s){return this.warn("TAR_ENTRY_INVALID",s)}if(r.nullBlock)this[JR]?(this[zR]=!0,this[Mc]==="begin"&&(this[Mc]="header"),this[hm]("eof")):(this[JR]=!0,this[hm]("nullBlock"));else if(this[JR]=!1,!r.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:r});else if(!r.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:r});else{let s=r.type;if(/^(Symbolic)?Link$/.test(s)&&!r.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:r});else if(!/^(Symbolic)?Link$/.test(s)&&!/^(Global)?ExtendedHeader$/.test(s)&&r.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:r});else{let a=this[pm]=new mhe(r,this[oA],this[Ev]);if(!this[gm])if(a.remain){let n=()=>{a.invalid||(this[gm]=!0)};a.on("end",n)}else this[gm]=!0;a.meta?a.size>this.maxMetaEntrySize?(a.ignore=!0,this[hm]("ignoredEntry",a),this[Mc]="ignore",a.resume()):a.size>0&&(this[P0]="",a.on("data",n=>this[P0]+=n),this[Mc]="meta"):(this[oA]=void 0,a.ignore=a.ignore||!this.filter(a.path,a),a.ignore?(this[hm]("ignoredEntry",a),this[Mc]=a.remain?"ignore":"header",a.resume()):(a.remain?this[Mc]="body":(this[Mc]="header",a.end()),this[Gp]?this[qp].push(a):(this[qp].push(a),this[Jj]())))}}}[Mpe](){queueMicrotask(()=>this.emit("close"))}[Fpe](e){let t=!0;if(!e)this[Gp]=void 0,t=!1;else if(Array.isArray(e)){let[r,...s]=e;this.emit(r,...s)}else this[Gp]=e,this.emit("entry",e),e.emittedEnd||(e.on("end",()=>this[Jj]()),t=!1);return t}[Jj](){do;while(this[Fpe](this[qp].shift()));if(!this[qp].length){let e=this[Gp];!e||e.flowing||e.size===e.remain?this[kI]||this.emit("drain"):e.once("drain",()=>this.emit("drain"))}}[Zj](e,t){let r=this[pm];if(!r)throw new Error("attempt to consume body without entry??");let s=r.blockRemain??0,a=s>=e.length&&t===0?e:e.subarray(t,t+s);return r.write(a),r.blockRemain||(this[Mc]="header",this[pm]=void 0,r.end()),a.length}[Ope](e,t){let r=this[pm],s=this[Zj](e,t);return!this[pm]&&r&&this[Npe](r),s}[hm](e,t,r){!this[qp].length&&!this[Gp]?this.emit(e,t,r):this[qp].push([e,t,r])}[Npe](e){switch(this[hm]("meta",this[P0]),e.type){case"ExtendedHeader":case"OldExtendedHeader":this[oA]=uT.parse(this[P0],this[oA],!1);break;case"GlobalExtendedHeader":this[Ev]=uT.parse(this[P0],this[Ev],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":{let t=this[oA]??Object.create(null);this[oA]=t,t.path=this[P0].replace(/\0.*/,"");break}case"NextFileHasLongLinkpath":{let t=this[oA]||Object.create(null);this[oA]=t,t.linkpath=this[P0].replace(/\0.*/,"");break}default:throw new Error("unknown meta: "+e.type)}}abort(e){this[k0]=!0,this.emit("abort",e),this.warn("TAR_ABORT",e,{recoverable:!1})}write(e,t,r){if(typeof t=="function"&&(r=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,typeof t=="string"?t:"utf8")),this[k0])return r?.(),!1;if((this[hs]===void 0||this.brotli===void 0&&this[hs]===!1)&&e){if(this[Ci]&&(e=Buffer.concat([this[Ci],e]),this[Ci]=void 0),e.lengththis[WR](p)),this[hs].on("error",p=>this.abort(p)),this[hs].on("end",()=>{this[x0]=!0,this[WR]()}),this[kI]=!0;let f=!!this[hs][c?"end":"write"](e);return this[kI]=!1,r?.(),f}}this[kI]=!0,this[hs]?this[hs].write(e):this[WR](e),this[kI]=!1;let s=this[qp].length?!1:this[Gp]?this[Gp].flowing:!0;return!s&&!this[qp].length&&this[Gp]?.once("drain",()=>this.emit("drain")),r?.(),s}[Xj](e){e&&!this[k0]&&(this[Ci]=this[Ci]?Buffer.concat([this[Ci],e]):e)}[YR](){if(this[x0]&&!this[zj]&&!this[k0]&&!this[Iv]){this[zj]=!0;let e=this[pm];if(e&&e.blockRemain){let t=this[Ci]?this[Ci].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${e.blockRemain} more bytes, only ${t} available)`,{entry:e}),this[Ci]&&e.write(this[Ci]),e.end()}this[hm](KR)}}[WR](e){if(this[Iv]&&e)this[Xj](e);else if(!e&&!this[Ci])this[YR]();else if(e){if(this[Iv]=!0,this[Ci]){this[Xj](e);let t=this[Ci];this[Ci]=void 0,this[VR](t)}else this[VR](e);for(;this[Ci]&&this[Ci]?.length>=512&&!this[k0]&&!this[zR];){let t=this[Ci];this[Ci]=void 0,this[VR](t)}this[Iv]=!1}(!this[Ci]||this[x0])&&this[YR]()}[VR](e){let t=0,r=e.length;for(;t+512<=r&&!this[k0]&&!this[zR];)switch(this[Mc]){case"begin":case"header":this[Lpe](e,t),t+=512;break;case"ignore":case"body":t+=this[Zj](e,t);break;case"meta":t+=this[Ope](e,t);break;default:throw new Error("invalid state: "+this[Mc])}t{let t=e.length-1,r=-1;for(;t>-1&&e.charAt(t)==="/";)r=t,t--;return r===-1?e:e.slice(0,r)},int=e=>{let t=e.onReadEntry;e.onReadEntry=t?r=>{t(r),r.resume()}:r=>r.resume()},yhe=(e,t)=>{let r=new Map(t.map(n=>[Pv(n),!0])),s=e.filter,a=(n,c="")=>{let f=c||(0,gT.parse)(n).root||".",p;if(n===f)p=!1;else{let h=r.get(n);h!==void 0?p=h:p=a((0,gT.dirname)(n),f)}return r.set(n,p),p};e.filter=s?(n,c)=>s(n,c)&&a(Pv(n)):n=>a(Pv(n))},snt=e=>{let t=new Bm(e),r=e.file,s;try{s=Em.default.openSync(r,"r");let a=Em.default.fstatSync(s),n=e.maxReadSize||16*1024*1024;if(a.size{let r=new Bm(e),s=e.maxReadSize||16*1024*1024,a=e.file;return new Promise((n,c)=>{r.on("error",c),r.on("end",n),Em.default.stat(a,(f,p)=>{if(f)c(f);else{let h=new Q6(a,{readSize:s,size:p.size});h.on("error",c),h.pipe(r)}})})},yT=Ov(snt,ont,e=>new Bm(e),e=>new Bm(e),(e,t)=>{t?.length&&yhe(e,t),e.noResume||int(e)}),Ehe=(e,t,r)=>(e&=4095,r&&(e=(e|384)&-19),t&&(e&256&&(e|=64),e&32&&(e|=8),e&4&&(e|=1)),e),{isAbsolute:ant,parse:Upe}=Ihe.win32,O6=e=>{let t="",r=Upe(e);for(;ant(e)||r.root;){let s=e.charAt(0)==="/"&&e.slice(0,4)!=="//?/"?"/":r.root;e=e.slice(s.length),t+=s,r=Upe(e)}return[t,e]},ET=["|","<",">","?",":"],L6=ET.map(e=>String.fromCharCode(61440+e.charCodeAt(0))),lnt=new Map(ET.map((e,t)=>[e,L6[t]])),cnt=new Map(L6.map((e,t)=>[e,ET[t]])),_pe=e=>ET.reduce((t,r)=>t.split(r).join(lnt.get(r)),e),unt=e=>L6.reduce((t,r)=>t.split(r).join(cnt.get(r)),e),Che=(e,t)=>t?(e=cn(e).replace(/^\.(\/|$)/,""),Pv(t)+"/"+e):cn(e),fnt=16*1024*1024,Hpe=Symbol("process"),jpe=Symbol("file"),Gpe=Symbol("directory"),p6=Symbol("symlink"),qpe=Symbol("hardlink"),Cv=Symbol("header"),tT=Symbol("read"),h6=Symbol("lstat"),rT=Symbol("onlstat"),g6=Symbol("onread"),d6=Symbol("onreadlink"),m6=Symbol("openfile"),y6=Symbol("onopenfile"),F0=Symbol("close"),fT=Symbol("mode"),E6=Symbol("awaitDrain"),$j=Symbol("ondrain"),aA=Symbol("prefix"),whe=class extends vm{path;portable;myuid=process.getuid&&process.getuid()||0;myuser=process.env.USER||"";maxReadSize;linkCache;statCache;preservePaths;cwd;strict;mtime;noPax;noMtime;prefix;fd;blockLen=0;blockRemain=0;buf;pos=0;remain=0;length=0;offset=0;win32;absolute;header;type;linkpath;stat;onWriteEntry;#e=!1;constructor(e,t={}){let r=T6(t);super(),this.path=cn(e),this.portable=!!r.portable,this.maxReadSize=r.maxReadSize||fnt,this.linkCache=r.linkCache||new Map,this.statCache=r.statCache||new Map,this.preservePaths=!!r.preservePaths,this.cwd=cn(r.cwd||process.cwd()),this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.mtime=r.mtime,this.prefix=r.prefix?cn(r.prefix):void 0,this.onWriteEntry=r.onWriteEntry,typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let s=!1;if(!this.preservePaths){let[n,c]=O6(this.path);n&&typeof c=="string"&&(this.path=c,s=n)}this.win32=!!r.win32||process.platform==="win32",this.win32&&(this.path=unt(this.path.replace(/\\/g,"/")),e=e.replace(/\\/g,"/")),this.absolute=cn(r.absolute||A6.default.resolve(this.cwd,e)),this.path===""&&(this.path="./"),s&&this.warn("TAR_ENTRY_INFO",`stripping ${s} from absolute path`,{entry:this,path:s+this.path});let a=this.statCache.get(this.absolute);a?this[rT](a):this[h6]()}warn(e,t,r={}){return mT(this,e,t,r)}emit(e,...t){return e==="error"&&(this.#e=!0),super.emit(e,...t)}[h6](){Yu.default.lstat(this.absolute,(e,t)=>{if(e)return this.emit("error",e);this[rT](t)})}[rT](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=hnt(e),this.emit("stat",e),this[Hpe]()}[Hpe](){switch(this.type){case"File":return this[jpe]();case"Directory":return this[Gpe]();case"SymbolicLink":return this[p6]();default:return this.end()}}[fT](e){return Ehe(e,this.type==="Directory",this.portable)}[aA](e){return Che(e,this.prefix)}[Cv](){if(!this.stat)throw new Error("cannot write header before stat");this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.onWriteEntry?.(this),this.header=new wm({path:this[aA](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[aA](this.linkpath):this.linkpath,mode:this[fT](this.stat.mode),uid:this.portable?void 0:this.stat.uid,gid:this.portable?void 0:this.stat.gid,size:this.stat.size,mtime:this.noMtime?void 0:this.mtime||this.stat.mtime,type:this.type==="Unsupported"?void 0:this.type,uname:this.portable?void 0:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?void 0:this.stat.atime,ctime:this.portable?void 0:this.stat.ctime}),this.header.encode()&&!this.noPax&&super.write(new uT({atime:this.portable?void 0:this.header.atime,ctime:this.portable?void 0:this.header.ctime,gid:this.portable?void 0:this.header.gid,mtime:this.noMtime?void 0:this.mtime||this.header.mtime,path:this[aA](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[aA](this.linkpath):this.linkpath,size:this.header.size,uid:this.portable?void 0:this.header.uid,uname:this.portable?void 0:this.header.uname,dev:this.portable?void 0:this.stat.dev,ino:this.portable?void 0:this.stat.ino,nlink:this.portable?void 0:this.stat.nlink}).encode());let e=this.header?.block;if(!e)throw new Error("failed to encode header");super.write(e)}[Gpe](){if(!this.stat)throw new Error("cannot create directory entry without stat");this.path.slice(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[Cv](),this.end()}[p6](){Yu.default.readlink(this.absolute,(e,t)=>{if(e)return this.emit("error",e);this[d6](t)})}[d6](e){this.linkpath=cn(e),this[Cv](),this.end()}[qpe](e){if(!this.stat)throw new Error("cannot create link entry without stat");this.type="Link",this.linkpath=cn(A6.default.relative(this.cwd,e)),this.stat.size=0,this[Cv](),this.end()}[jpe](){if(!this.stat)throw new Error("cannot create file entry without stat");if(this.stat.nlink>1){let e=`${this.stat.dev}:${this.stat.ino}`,t=this.linkCache.get(e);if(t?.indexOf(this.cwd)===0)return this[qpe](t);this.linkCache.set(e,this.absolute)}if(this[Cv](),this.stat.size===0)return this.end();this[m6]()}[m6](){Yu.default.open(this.absolute,"r",(e,t)=>{if(e)return this.emit("error",e);this[y6](t)})}[y6](e){if(this.fd=e,this.#e)return this[F0]();if(!this.stat)throw new Error("should stat before calling onopenfile");this.blockLen=512*Math.ceil(this.stat.size/512),this.blockRemain=this.blockLen;let t=Math.min(this.blockLen,this.maxReadSize);this.buf=Buffer.allocUnsafe(t),this.offset=0,this.pos=0,this.remain=this.stat.size,this.length=this.buf.length,this[tT]()}[tT](){let{fd:e,buf:t,offset:r,length:s,pos:a}=this;if(e===void 0||t===void 0)throw new Error("cannot read file without first opening");Yu.default.read(e,t,r,s,a,(n,c)=>{if(n)return this[F0](()=>this.emit("error",n));this[g6](c)})}[F0](e=()=>{}){this.fd!==void 0&&Yu.default.close(this.fd,e)}[g6](e){if(e<=0&&this.remain>0){let r=Object.assign(new Error("encountered unexpected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[F0](()=>this.emit("error",r))}if(e>this.remain){let r=Object.assign(new Error("did not encounter expected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[F0](()=>this.emit("error",r))}if(!this.buf)throw new Error("should have created buffer prior to reading");if(e===this.remain)for(let r=e;rthis[$j]())}[E6](e){this.once("drain",e)}write(e,t,r){if(typeof t=="function"&&(r=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,typeof t=="string"?t:"utf8")),this.blockRemaine?this.emit("error",e):this.end());if(!this.buf)throw new Error("buffer lost somehow in ONDRAIN");this.offset>=this.length&&(this.buf=Buffer.allocUnsafe(Math.min(this.blockRemain,this.buf.length)),this.offset=0),this.length=this.buf.length-this.offset,this[tT]()}},Ant=class extends whe{sync=!0;[h6](){this[rT](Yu.default.lstatSync(this.absolute))}[p6](){this[d6](Yu.default.readlinkSync(this.absolute))}[m6](){this[y6](Yu.default.openSync(this.absolute,"r"))}[tT](){let e=!0;try{let{fd:t,buf:r,offset:s,length:a,pos:n}=this;if(t===void 0||r===void 0)throw new Error("fd and buf must be set in READ method");let c=Yu.default.readSync(t,r,s,a,n);this[g6](c),e=!1}finally{if(e)try{this[F0](()=>{})}catch{}}}[E6](e){e()}[F0](e=()=>{}){this.fd!==void 0&&Yu.default.closeSync(this.fd),e()}},pnt=class extends vm{blockLen=0;blockRemain=0;buf=0;pos=0;remain=0;length=0;preservePaths;portable;strict;noPax;noMtime;readEntry;type;prefix;path;mode;uid;gid;uname;gname;header;mtime;atime;ctime;linkpath;size;onWriteEntry;warn(e,t,r={}){return mT(this,e,t,r)}constructor(e,t={}){let r=T6(t);super(),this.preservePaths=!!r.preservePaths,this.portable=!!r.portable,this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.onWriteEntry=r.onWriteEntry,this.readEntry=e;let{type:s}=e;if(s==="Unsupported")throw new Error("writing entry that should be ignored");this.type=s,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.prefix=r.prefix,this.path=cn(e.path),this.mode=e.mode!==void 0?this[fT](e.mode):void 0,this.uid=this.portable?void 0:e.uid,this.gid=this.portable?void 0:e.gid,this.uname=this.portable?void 0:e.uname,this.gname=this.portable?void 0:e.gname,this.size=e.size,this.mtime=this.noMtime?void 0:r.mtime||e.mtime,this.atime=this.portable?void 0:e.atime,this.ctime=this.portable?void 0:e.ctime,this.linkpath=e.linkpath!==void 0?cn(e.linkpath):void 0,typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let a=!1;if(!this.preservePaths){let[c,f]=O6(this.path);c&&typeof f=="string"&&(this.path=f,a=c)}this.remain=e.size,this.blockRemain=e.startBlockSize,this.onWriteEntry?.(this),this.header=new wm({path:this[aA](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[aA](this.linkpath):this.linkpath,mode:this.mode,uid:this.portable?void 0:this.uid,gid:this.portable?void 0:this.gid,size:this.size,mtime:this.noMtime?void 0:this.mtime,type:this.type,uname:this.portable?void 0:this.uname,atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime}),a&&this.warn("TAR_ENTRY_INFO",`stripping ${a} from absolute path`,{entry:this,path:a+this.path}),this.header.encode()&&!this.noPax&&super.write(new uT({atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime,gid:this.portable?void 0:this.gid,mtime:this.noMtime?void 0:this.mtime,path:this[aA](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[aA](this.linkpath):this.linkpath,size:this.size,uid:this.portable?void 0:this.uid,uname:this.portable?void 0:this.uname,dev:this.portable?void 0:this.readEntry.dev,ino:this.portable?void 0:this.readEntry.ino,nlink:this.portable?void 0:this.readEntry.nlink}).encode());let n=this.header?.block;if(!n)throw new Error("failed to encode header");super.write(n),e.pipe(this)}[aA](e){return Che(e,this.prefix)}[fT](e){return Ehe(e,this.type==="Directory",this.portable)}write(e,t,r){typeof t=="function"&&(r=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,typeof t=="string"?t:"utf8"));let s=e.length;if(s>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=s,super.write(e,r)}end(e,t,r){return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),typeof e=="function"&&(r=e,t=void 0,e=void 0),typeof t=="function"&&(r=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,t??"utf8")),r&&this.once("finish",r),e?super.end(e,r):super.end(r),this}},hnt=e=>e.isFile()?"File":e.isDirectory()?"Directory":e.isSymbolicLink()?"SymbolicLink":"Unsupported",gnt=class OI{tail;head;length=0;static create(t=[]){return new OI(t)}constructor(t=[]){for(let r of t)this.push(r)}*[Symbol.iterator](){for(let t=this.head;t;t=t.next)yield t.value}removeNode(t){if(t.list!==this)throw new Error("removing node which does not belong to this list");let r=t.next,s=t.prev;return r&&(r.prev=s),s&&(s.next=r),t===this.head&&(this.head=r),t===this.tail&&(this.tail=s),this.length--,t.next=void 0,t.prev=void 0,t.list=void 0,r}unshiftNode(t){if(t===this.head)return;t.list&&t.list.removeNode(t);let r=this.head;t.list=this,t.next=r,r&&(r.prev=t),this.head=t,this.tail||(this.tail=t),this.length++}pushNode(t){if(t===this.tail)return;t.list&&t.list.removeNode(t);let r=this.tail;t.list=this,t.prev=r,r&&(r.next=t),this.tail=t,this.head||(this.head=t),this.length++}push(...t){for(let r=0,s=t.length;r1)s=r;else if(this.head)a=this.head.next,s=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;a;n++)s=t(s,a.value,n),a=a.next;return s}reduceReverse(t,r){let s,a=this.tail;if(arguments.length>1)s=r;else if(this.tail)a=this.tail.prev,s=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(let n=this.length-1;a;n--)s=t(s,a.value,n),a=a.prev;return s}toArray(){let t=new Array(this.length);for(let r=0,s=this.head;s;r++)t[r]=s.value,s=s.next;return t}toArrayReverse(){let t=new Array(this.length);for(let r=0,s=this.tail;s;r++)t[r]=s.value,s=s.prev;return t}slice(t=0,r=this.length){r<0&&(r+=this.length),t<0&&(t+=this.length);let s=new OI;if(rthis.length&&(r=this.length);let a=this.head,n=0;for(n=0;a&&nthis.length&&(r=this.length);let a=this.length,n=this.tail;for(;n&&a>r;a--)n=n.prev;for(;n&&a>t;a--,n=n.prev)s.push(n.value);return s}splice(t,r=0,...s){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);let a=this.head;for(let c=0;a&&c1)throw new TypeError("gzip, brotli, zstd are mutually exclusive");if(e.gzip&&(typeof e.gzip!="object"&&(e.gzip={}),this.portable&&(e.gzip.portable=!0),this.zip=new Prt(e.gzip)),e.brotli&&(typeof e.brotli!="object"&&(e.brotli={}),this.zip=new krt(e.brotli)),e.zstd&&(typeof e.zstd!="object"&&(e.zstd={}),this.zip=new Rrt(e.zstd)),!this.zip)throw new Error("impossible");let t=this.zip;t.on("data",r=>super.write(r)),t.on("end",()=>super.end()),t.on("drain",()=>this[n6]()),this.on("resume",()=>t.resume())}else this.on("drain",this[n6]);this.noDirRecurse=!!e.noDirRecurse,this.follow=!!e.follow,this.noMtime=!!e.noMtime,e.mtime&&(this.mtime=e.mtime),this.filter=typeof e.filter=="function"?e.filter:()=>!0,this[Wu]=new gnt,this[Vu]=0,this.jobs=Number(e.jobs)||4,this[Bv]=!1,this[wv]=!1}[Bhe](e){return super.write(e)}add(e){return this.write(e),this}end(e,t,r){return typeof e=="function"&&(r=e,e=void 0),typeof t=="function"&&(r=t,t=void 0),e&&this.add(e),this[wv]=!0,this[mm](),r&&r(),this}write(e){if(this[wv])throw new Error("write after end");return e instanceof mhe?this[Ype](e):this[iT](e),this.flowing}[Ype](e){let t=cn(I6.default.resolve(this.cwd,e.path));if(!this.filter(e.path,e))e.resume();else{let r=new Wpe(e.path,t);r.entry=new pnt(e,this[r6](r)),r.entry.on("end",()=>this[t6](r)),this[Vu]+=1,this[Wu].push(r)}this[mm]()}[iT](e){let t=cn(I6.default.resolve(this.cwd,e));this[Wu].push(new Wpe(e,t)),this[mm]()}[C6](e){e.pending=!0,this[Vu]+=1;let t=this.follow?"stat":"lstat";Fv.default[t](e.absolute,(r,s)=>{e.pending=!1,this[Vu]-=1,r?this.emit("error",r):this[nT](e,s)})}[nT](e,t){this.statCache.set(e.absolute,t),e.stat=t,this.filter(e.path,t)?t.isFile()&&t.nlink>1&&e===this[dm]&&!this.linkCache.get(`${t.dev}:${t.ino}`)&&!this.sync&&this[e6](e):e.ignore=!0,this[mm]()}[w6](e){e.pending=!0,this[Vu]+=1,Fv.default.readdir(e.absolute,(t,r)=>{if(e.pending=!1,this[Vu]-=1,t)return this.emit("error",t);this[sT](e,r)})}[sT](e,t){this.readdirCache.set(e.absolute,t),e.readdir=t,this[mm]()}[mm](){if(!this[Bv]){this[Bv]=!0;for(let e=this[Wu].head;e&&this[Vu]this.warn(t,r,s),noPax:this.noPax,cwd:this.cwd,absolute:e.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime,prefix:this.prefix,onWriteEntry:this.onWriteEntry}}[Kpe](e){this[Vu]+=1;try{return new this[aT](e.path,this[r6](e)).on("end",()=>this[t6](e)).on("error",t=>this.emit("error",t))}catch(t){this.emit("error",t)}}[n6](){this[dm]&&this[dm].entry&&this[dm].entry.resume()}[oT](e){e.piped=!0,e.readdir&&e.readdir.forEach(s=>{let a=e.path,n=a==="./"?"":a.replace(/\/*$/,"/");this[iT](n+s)});let t=e.entry,r=this.zip;if(!t)throw new Error("cannot pipe without source");r?t.on("data",s=>{r.write(s)||t.pause()}):t.on("data",s=>{super.write(s)||t.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}warn(e,t,r={}){mT(this,e,t,r)}},U6=class extends IT{sync=!0;constructor(e){super(e),this[aT]=Ant}pause(){}resume(){}[C6](e){let t=this.follow?"statSync":"lstatSync";this[nT](e,Fv.default[t](e.absolute))}[w6](e){this[sT](e,Fv.default.readdirSync(e.absolute))}[oT](e){let t=e.entry,r=this.zip;if(e.readdir&&e.readdir.forEach(s=>{let a=e.path,n=a==="./"?"":a.replace(/\/*$/,"/");this[iT](n+s)}),!t)throw new Error("Cannot pipe without source");r?t.on("data",s=>{r.write(s)}):t.on("data",s=>{super[Bhe](s)})}},Ent=(e,t)=>{let r=new U6(e),s=new ahe(e.file,{mode:e.mode||438});r.pipe(s),vhe(r,t)},Int=(e,t)=>{let r=new IT(e),s=new hT(e.file,{mode:e.mode||438});r.pipe(s);let a=new Promise((n,c)=>{s.on("error",c),s.on("close",n),r.on("error",c)});return She(r,t),a},vhe=(e,t)=>{t.forEach(r=>{r.charAt(0)==="@"?yT({file:R6.default.resolve(e.cwd,r.slice(1)),sync:!0,noResume:!0,onReadEntry:s=>e.add(s)}):e.add(r)}),e.end()},She=async(e,t)=>{for(let r=0;r{e.add(a)}}):e.add(s)}e.end()},Cnt=(e,t)=>{let r=new U6(e);return vhe(r,t),r},wnt=(e,t)=>{let r=new IT(e);return She(r,t),r},lUt=Ov(Ent,Int,Cnt,wnt,(e,t)=>{if(!t?.length)throw new TypeError("no paths specified to add to archive")}),Bnt=process.platform,vnt=Bnt==="win32",{O_CREAT:Snt,O_TRUNC:Dnt,O_WRONLY:bnt}=j6.default.constants,bhe=Number(process.env.__FAKE_FS_O_FILENAME__)||j6.default.constants.UV_FS_O_FILEMAP||0,Pnt=vnt&&!!bhe,xnt=512*1024,knt=bhe|Dnt|Snt|bnt,Phe=Pnt?e=>e"w",B6=(e,t,r)=>{try{return Lv.default.lchownSync(e,t,r)}catch(s){if(s?.code!=="ENOENT")throw s}},AT=(e,t,r,s)=>{Lv.default.lchown(e,t,r,a=>{s(a&&a?.code!=="ENOENT"?a:null)})},Qnt=(e,t,r,s,a)=>{if(t.isDirectory())xhe(MI.default.resolve(e,t.name),r,s,n=>{if(n)return a(n);let c=MI.default.resolve(e,t.name);AT(c,r,s,a)});else{let n=MI.default.resolve(e,t.name);AT(n,r,s,a)}},xhe=(e,t,r,s)=>{Lv.default.readdir(e,{withFileTypes:!0},(a,n)=>{if(a){if(a.code==="ENOENT")return s();if(a.code!=="ENOTDIR"&&a.code!=="ENOTSUP")return s(a)}if(a||!n.length)return AT(e,t,r,s);let c=n.length,f=null,p=h=>{if(!f){if(h)return s(f=h);if(--c===0)return AT(e,t,r,s)}};for(let h of n)Qnt(e,h,t,r,p)})},Rnt=(e,t,r,s)=>{t.isDirectory()&&khe(MI.default.resolve(e,t.name),r,s),B6(MI.default.resolve(e,t.name),r,s)},khe=(e,t,r)=>{let s;try{s=Lv.default.readdirSync(e,{withFileTypes:!0})}catch(a){let n=a;if(n?.code==="ENOENT")return;if(n?.code==="ENOTDIR"||n?.code==="ENOTSUP")return B6(e,t,r);throw n}for(let a of s)Rnt(e,a,t,r);return B6(e,t,r)},Rhe=class extends Error{path;code;syscall="chdir";constructor(e,t){super(`${t}: Cannot cd into '${e}'`),this.path=e,this.code=t}get name(){return"CwdError"}},CT=class extends Error{path;symlink;syscall="symlink";code="TAR_SYMLINK_ERROR";constructor(e,t){super("TAR_SYMLINK_ERROR: Cannot extract through symbolic link"),this.symlink=e,this.path=t}get name(){return"SymlinkError"}},Tnt=(e,t)=>{yl.default.stat(e,(r,s)=>{(r||!s.isDirectory())&&(r=new Rhe(e,r?.code||"ENOTDIR")),t(r)})},Fnt=(e,t,r)=>{e=cn(e);let s=t.umask??18,a=t.mode|448,n=(a&s)!==0,c=t.uid,f=t.gid,p=typeof c=="number"&&typeof f=="number"&&(c!==t.processUid||f!==t.processGid),h=t.preserve,E=t.unlink,C=cn(t.cwd),S=(I,T)=>{I?r(I):T&&p?xhe(T,c,f,O=>S(O)):n?yl.default.chmod(e,a,r):r()};if(e===C)return Tnt(e,S);if(h)return Qhe.default.mkdir(e,{mode:a,recursive:!0}).then(I=>S(null,I??void 0),S);let x=cn(Nv.default.relative(C,e)).split("/");v6(C,x,a,E,C,void 0,S)},v6=(e,t,r,s,a,n,c)=>{if(!t.length)return c(null,n);let f=t.shift(),p=cn(Nv.default.resolve(e+"/"+f));yl.default.mkdir(p,r,The(p,t,r,s,a,n,c))},The=(e,t,r,s,a,n,c)=>f=>{f?yl.default.lstat(e,(p,h)=>{if(p)p.path=p.path&&cn(p.path),c(p);else if(h.isDirectory())v6(e,t,r,s,a,n,c);else if(s)yl.default.unlink(e,E=>{if(E)return c(E);yl.default.mkdir(e,r,The(e,t,r,s,a,n,c))});else{if(h.isSymbolicLink())return c(new CT(e,e+"/"+t.join("/")));c(f)}}):(n=n||e,v6(e,t,r,s,a,n,c))},Nnt=e=>{let t=!1,r;try{t=yl.default.statSync(e).isDirectory()}catch(s){r=s?.code}finally{if(!t)throw new Rhe(e,r??"ENOTDIR")}},Ont=(e,t)=>{e=cn(e);let r=t.umask??18,s=t.mode|448,a=(s&r)!==0,n=t.uid,c=t.gid,f=typeof n=="number"&&typeof c=="number"&&(n!==t.processUid||c!==t.processGid),p=t.preserve,h=t.unlink,E=cn(t.cwd),C=I=>{I&&f&&khe(I,n,c),a&&yl.default.chmodSync(e,s)};if(e===E)return Nnt(E),C();if(p)return C(yl.default.mkdirSync(e,{mode:s,recursive:!0})??void 0);let S=cn(Nv.default.relative(E,e)).split("/"),x;for(let I=S.shift(),T=E;I&&(T+="/"+I);I=S.shift()){T=cn(Nv.default.resolve(T));try{yl.default.mkdirSync(T,s),x=x||T}catch{let O=yl.default.lstatSync(T);if(O.isDirectory())continue;if(h){yl.default.unlinkSync(T),yl.default.mkdirSync(T,s),x=x||T;continue}else if(O.isSymbolicLink())return new CT(T,T+"/"+S.join("/"))}}return C(x)},i6=Object.create(null),Jpe=1e4,QI=new Set,Lnt=e=>{QI.has(e)?QI.delete(e):i6[e]=e.normalize("NFD").toLocaleLowerCase("en").toLocaleUpperCase("en"),QI.add(e);let t=i6[e],r=QI.size-Jpe;if(r>Jpe/10){for(let s of QI)if(QI.delete(s),delete i6[s],--r<=0)break}return t},Mnt=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,Unt=Mnt==="win32",_nt=e=>e.split("/").slice(0,-1).reduce((t,r)=>{let s=t[t.length-1];return s!==void 0&&(r=(0,G6.join)(s,r)),t.push(r||"/"),t},[]),Hnt=class{#e=new Map;#t=new Map;#s=new Set;reserve(e,t){e=Unt?["win32 parallelization disabled"]:e.map(s=>Pv((0,G6.join)(Lnt(s))));let r=new Set(e.map(s=>_nt(s)).reduce((s,a)=>s.concat(a)));this.#t.set(t,{dirs:r,paths:e});for(let s of e){let a=this.#e.get(s);a?a.push(t):this.#e.set(s,[t])}for(let s of r){let a=this.#e.get(s);if(!a)this.#e.set(s,[new Set([t])]);else{let n=a[a.length-1];n instanceof Set?n.add(t):a.push(new Set([t]))}}return this.#i(t)}#r(e){let t=this.#t.get(e);if(!t)throw new Error("function does not have any path reservations");return{paths:t.paths.map(r=>this.#e.get(r)),dirs:[...t.dirs].map(r=>this.#e.get(r))}}check(e){let{paths:t,dirs:r}=this.#r(e);return t.every(s=>s&&s[0]===e)&&r.every(s=>s&&s[0]instanceof Set&&s[0].has(e))}#i(e){return this.#s.has(e)||!this.check(e)?!1:(this.#s.add(e),e(()=>this.#n(e)),!0)}#n(e){if(!this.#s.has(e))return!1;let t=this.#t.get(e);if(!t)throw new Error("invalid reservation");let{paths:r,dirs:s}=t,a=new Set;for(let n of r){let c=this.#e.get(n);if(!c||c?.[0]!==e)continue;let f=c[1];if(!f){this.#e.delete(n);continue}if(c.shift(),typeof f=="function")a.add(f);else for(let p of f)a.add(p)}for(let n of s){let c=this.#e.get(n),f=c?.[0];if(!(!c||!(f instanceof Set)))if(f.size===1&&c.length===1){this.#e.delete(n);continue}else if(f.size===1){c.shift();let p=c[0];typeof p=="function"&&a.add(p)}else f.delete(e)}return this.#s.delete(e),a.forEach(n=>this.#i(n)),!0}},jnt=()=>process.umask(),zpe=Symbol("onEntry"),S6=Symbol("checkFs"),Zpe=Symbol("checkFs2"),D6=Symbol("isReusable"),Uc=Symbol("makeFs"),b6=Symbol("file"),P6=Symbol("directory"),lT=Symbol("link"),Xpe=Symbol("symlink"),$pe=Symbol("hardlink"),Dv=Symbol("ensureNoSymlink"),ehe=Symbol("unsupported"),the=Symbol("checkPath"),s6=Symbol("stripAbsolutePath"),O0=Symbol("mkdir"),Xs=Symbol("onError"),ZR=Symbol("pending"),rhe=Symbol("pend"),RI=Symbol("unpend"),o6=Symbol("ended"),a6=Symbol("maybeClose"),x6=Symbol("skip"),xv=Symbol("doChown"),kv=Symbol("uid"),Qv=Symbol("gid"),Rv=Symbol("checkedCwd"),Gnt=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,Tv=Gnt==="win32",qnt=1024,Wnt=(e,t)=>{if(!Tv)return wn.default.unlink(e,t);let r=e+".DELETE."+(0,H6.randomBytes)(16).toString("hex");wn.default.rename(e,r,s=>{if(s)return t(s);wn.default.unlink(r,t)})},Vnt=e=>{if(!Tv)return wn.default.unlinkSync(e);let t=e+".DELETE."+(0,H6.randomBytes)(16).toString("hex");wn.default.renameSync(e,t),wn.default.unlinkSync(t)},nhe=(e,t,r)=>e!==void 0&&e===e>>>0?e:t!==void 0&&t===t>>>0?t:r,q6=class extends Bm{[o6]=!1;[Rv]=!1;[ZR]=0;reservations=new Hnt;transform;writable=!0;readable=!1;uid;gid;setOwner;preserveOwner;processGid;processUid;maxDepth;forceChown;win32;newer;keep;noMtime;preservePaths;unlink;cwd;strip;processUmask;umask;dmode;fmode;chmod;constructor(e={}){if(e.ondone=()=>{this[o6]=!0,this[a6]()},super(e),this.transform=e.transform,this.chmod=!!e.chmod,typeof e.uid=="number"||typeof e.gid=="number"){if(typeof e.uid!="number"||typeof e.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(e.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=e.uid,this.gid=e.gid,this.setOwner=!0}else this.uid=void 0,this.gid=void 0,this.setOwner=!1;e.preserveOwner===void 0&&typeof e.uid!="number"?this.preserveOwner=!!(process.getuid&&process.getuid()===0):this.preserveOwner=!!e.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():void 0,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():void 0,this.maxDepth=typeof e.maxDepth=="number"?e.maxDepth:qnt,this.forceChown=e.forceChown===!0,this.win32=!!e.win32||Tv,this.newer=!!e.newer,this.keep=!!e.keep,this.noMtime=!!e.noMtime,this.preservePaths=!!e.preservePaths,this.unlink=!!e.unlink,this.cwd=cn(gs.default.resolve(e.cwd||process.cwd())),this.strip=Number(e.strip)||0,this.processUmask=this.chmod?typeof e.processUmask=="number"?e.processUmask:jnt():0,this.umask=typeof e.umask=="number"?e.umask:this.processUmask,this.dmode=e.dmode||511&~this.umask,this.fmode=e.fmode||438&~this.umask,this.on("entry",t=>this[zpe](t))}warn(e,t,r={}){return(e==="TAR_BAD_ARCHIVE"||e==="TAR_ABORT")&&(r.recoverable=!1),super.warn(e,t,r)}[a6](){this[o6]&&this[ZR]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"))}[s6](e,t){let r=e[t],{type:s}=e;if(!r||this.preservePaths)return!0;let a=r.split("/");if(a.includes("..")||Tv&&/^[a-z]:\.\.$/i.test(a[0]??"")){if(t==="path"||s==="Link")return this.warn("TAR_ENTRY_ERROR",`${t} contains '..'`,{entry:e,[t]:r}),!1;{let f=gs.default.posix.dirname(e.path),p=gs.default.posix.normalize(gs.default.posix.join(f,r));if(p.startsWith("../")||p==="..")return this.warn("TAR_ENTRY_ERROR",`${t} escapes extraction directory`,{entry:e,[t]:r}),!1}}let[n,c]=O6(r);return n&&(e[t]=String(c),this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute ${t}`,{entry:e,[t]:r})),!0}[the](e){let t=cn(e.path),r=t.split("/");if(this.strip){if(r.length=this.strip)e.linkpath=s.slice(this.strip).join("/");else return!1}r.splice(0,this.strip),e.path=r.join("/")}if(isFinite(this.maxDepth)&&r.length>this.maxDepth)return this.warn("TAR_ENTRY_ERROR","path excessively deep",{entry:e,path:t,depth:r.length,maxDepth:this.maxDepth}),!1;if(!this[s6](e,"path")||!this[s6](e,"linkpath"))return!1;if(gs.default.isAbsolute(e.path)?e.absolute=cn(gs.default.resolve(e.path)):e.absolute=cn(gs.default.resolve(this.cwd,e.path)),!this.preservePaths&&typeof e.absolute=="string"&&e.absolute.indexOf(this.cwd+"/")!==0&&e.absolute!==this.cwd)return this.warn("TAR_ENTRY_ERROR","path escaped extraction target",{entry:e,path:cn(e.path),resolvedPath:e.absolute,cwd:this.cwd}),!1;if(e.absolute===this.cwd&&e.type!=="Directory"&&e.type!=="GNUDumpDir")return!1;if(this.win32){let{root:s}=gs.default.win32.parse(String(e.absolute));e.absolute=s+_pe(String(e.absolute).slice(s.length));let{root:a}=gs.default.win32.parse(e.path);e.path=a+_pe(e.path.slice(a.length))}return!0}[zpe](e){if(!this[the](e))return e.resume();switch(Dhe.default.equal(typeof e.absolute,"string"),e.type){case"Directory":case"GNUDumpDir":e.mode&&(e.mode=e.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[S6](e);default:return this[ehe](e)}}[Xs](e,t){e.name==="CwdError"?this.emit("error",e):(this.warn("TAR_ENTRY_ERROR",e,{entry:t}),this[RI](),t.resume())}[O0](e,t,r){Fnt(cn(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:t},r)}[xv](e){return this.forceChown||this.preserveOwner&&(typeof e.uid=="number"&&e.uid!==this.processUid||typeof e.gid=="number"&&e.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[kv](e){return nhe(this.uid,e.uid,this.processUid)}[Qv](e){return nhe(this.gid,e.gid,this.processGid)}[b6](e,t){let r=typeof e.mode=="number"?e.mode&4095:this.fmode,s=new hT(String(e.absolute),{flags:Phe(e.size),mode:r,autoClose:!1});s.on("error",f=>{s.fd&&wn.default.close(s.fd,()=>{}),s.write=()=>!0,this[Xs](f,e),t()});let a=1,n=f=>{if(f){s.fd&&wn.default.close(s.fd,()=>{}),this[Xs](f,e),t();return}--a===0&&s.fd!==void 0&&wn.default.close(s.fd,p=>{p?this[Xs](p,e):this[RI](),t()})};s.on("finish",()=>{let f=String(e.absolute),p=s.fd;if(typeof p=="number"&&e.mtime&&!this.noMtime){a++;let h=e.atime||new Date,E=e.mtime;wn.default.futimes(p,h,E,C=>C?wn.default.utimes(f,h,E,S=>n(S&&C)):n())}if(typeof p=="number"&&this[xv](e)){a++;let h=this[kv](e),E=this[Qv](e);typeof h=="number"&&typeof E=="number"&&wn.default.fchown(p,h,E,C=>C?wn.default.chown(f,h,E,S=>n(S&&C)):n())}n()});let c=this.transform&&this.transform(e)||e;c!==e&&(c.on("error",f=>{this[Xs](f,e),t()}),e.pipe(c)),c.pipe(s)}[P6](e,t){let r=typeof e.mode=="number"?e.mode&4095:this.dmode;this[O0](String(e.absolute),r,s=>{if(s){this[Xs](s,e),t();return}let a=1,n=()=>{--a===0&&(t(),this[RI](),e.resume())};e.mtime&&!this.noMtime&&(a++,wn.default.utimes(String(e.absolute),e.atime||new Date,e.mtime,n)),this[xv](e)&&(a++,wn.default.chown(String(e.absolute),Number(this[kv](e)),Number(this[Qv](e)),n)),n()})}[ehe](e){e.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${e.type}`,{entry:e}),e.resume()}[Xpe](e,t){let r=cn(gs.default.relative(this.cwd,gs.default.resolve(gs.default.dirname(String(e.absolute)),String(e.linkpath)))).split("/");this[Dv](e,this.cwd,r,()=>this[lT](e,String(e.linkpath),"symlink",t),s=>{this[Xs](s,e),t()})}[$pe](e,t){let r=cn(gs.default.resolve(this.cwd,String(e.linkpath))),s=cn(String(e.linkpath)).split("/");this[Dv](e,this.cwd,s,()=>this[lT](e,r,"link",t),a=>{this[Xs](a,e),t()})}[Dv](e,t,r,s,a){let n=r.shift();if(this.preservePaths||n===void 0)return s();let c=gs.default.resolve(t,n);wn.default.lstat(c,(f,p)=>{if(f)return s();if(p?.isSymbolicLink())return a(new CT(c,gs.default.resolve(c,r.join("/"))));this[Dv](e,c,r,s,a)})}[rhe](){this[ZR]++}[RI](){this[ZR]--,this[a6]()}[x6](e){this[RI](),e.resume()}[D6](e,t){return e.type==="File"&&!this.unlink&&t.isFile()&&t.nlink<=1&&!Tv}[S6](e){this[rhe]();let t=[e.path];e.linkpath&&t.push(e.linkpath),this.reservations.reserve(t,r=>this[Zpe](e,r))}[Zpe](e,t){let r=c=>{t(c)},s=()=>{this[O0](this.cwd,this.dmode,c=>{if(c){this[Xs](c,e),r();return}this[Rv]=!0,a()})},a=()=>{if(e.absolute!==this.cwd){let c=cn(gs.default.dirname(String(e.absolute)));if(c!==this.cwd)return this[O0](c,this.dmode,f=>{if(f){this[Xs](f,e),r();return}n()})}n()},n=()=>{wn.default.lstat(String(e.absolute),(c,f)=>{if(f&&(this.keep||this.newer&&f.mtime>(e.mtime??f.mtime))){this[x6](e),r();return}if(c||this[D6](e,f))return this[Uc](null,e,r);if(f.isDirectory()){if(e.type==="Directory"){let p=this.chmod&&e.mode&&(f.mode&4095)!==e.mode,h=E=>this[Uc](E??null,e,r);return p?wn.default.chmod(String(e.absolute),Number(e.mode),h):h()}if(e.absolute!==this.cwd)return wn.default.rmdir(String(e.absolute),p=>this[Uc](p??null,e,r))}if(e.absolute===this.cwd)return this[Uc](null,e,r);Wnt(String(e.absolute),p=>this[Uc](p??null,e,r))})};this[Rv]?a():s()}[Uc](e,t,r){if(e){this[Xs](e,t),r();return}switch(t.type){case"File":case"OldFile":case"ContiguousFile":return this[b6](t,r);case"Link":return this[$pe](t,r);case"SymbolicLink":return this[Xpe](t,r);case"Directory":case"GNUDumpDir":return this[P6](t,r)}}[lT](e,t,r,s){wn.default[r](t,String(e.absolute),a=>{a?this[Xs](a,e):(this[RI](),e.resume()),s()})}},vv=e=>{try{return[null,e()]}catch(t){return[t,null]}},Fhe=class extends q6{sync=!0;[Uc](e,t){return super[Uc](e,t,()=>{})}[S6](e){if(!this[Rv]){let a=this[O0](this.cwd,this.dmode);if(a)return this[Xs](a,e);this[Rv]=!0}if(e.absolute!==this.cwd){let a=cn(gs.default.dirname(String(e.absolute)));if(a!==this.cwd){let n=this[O0](a,this.dmode);if(n)return this[Xs](n,e)}}let[t,r]=vv(()=>wn.default.lstatSync(String(e.absolute)));if(r&&(this.keep||this.newer&&r.mtime>(e.mtime??r.mtime)))return this[x6](e);if(t||this[D6](e,r))return this[Uc](null,e);if(r.isDirectory()){if(e.type==="Directory"){let n=this.chmod&&e.mode&&(r.mode&4095)!==e.mode,[c]=n?vv(()=>{wn.default.chmodSync(String(e.absolute),Number(e.mode))}):[];return this[Uc](c,e)}let[a]=vv(()=>wn.default.rmdirSync(String(e.absolute)));this[Uc](a,e)}let[s]=e.absolute===this.cwd?[]:vv(()=>Vnt(String(e.absolute)));this[Uc](s,e)}[b6](e,t){let r=typeof e.mode=="number"?e.mode&4095:this.fmode,s=c=>{let f;try{wn.default.closeSync(a)}catch(p){f=p}(c||f)&&this[Xs](c||f,e),t()},a;try{a=wn.default.openSync(String(e.absolute),Phe(e.size),r)}catch(c){return s(c)}let n=this.transform&&this.transform(e)||e;n!==e&&(n.on("error",c=>this[Xs](c,e)),e.pipe(n)),n.on("data",c=>{try{wn.default.writeSync(a,c,0,c.length)}catch(f){s(f)}}),n.on("end",()=>{let c=null;if(e.mtime&&!this.noMtime){let f=e.atime||new Date,p=e.mtime;try{wn.default.futimesSync(a,f,p)}catch(h){try{wn.default.utimesSync(String(e.absolute),f,p)}catch{c=h}}}if(this[xv](e)){let f=this[kv](e),p=this[Qv](e);try{wn.default.fchownSync(a,Number(f),Number(p))}catch(h){try{wn.default.chownSync(String(e.absolute),Number(f),Number(p))}catch{c=c||h}}}s(c)})}[P6](e,t){let r=typeof e.mode=="number"?e.mode&4095:this.dmode,s=this[O0](String(e.absolute),r);if(s){this[Xs](s,e),t();return}if(e.mtime&&!this.noMtime)try{wn.default.utimesSync(String(e.absolute),e.atime||new Date,e.mtime)}catch{}if(this[xv](e))try{wn.default.chownSync(String(e.absolute),Number(this[kv](e)),Number(this[Qv](e)))}catch{}t(),e.resume()}[O0](e,t){try{return Ont(cn(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:t})}catch(r){return r}}[Dv](e,t,r,s,a){if(this.preservePaths||!r.length)return s();let n=t;for(let c of r){n=gs.default.resolve(n,c);let[f,p]=vv(()=>wn.default.lstatSync(n));if(f)return s();if(p.isSymbolicLink())return a(new CT(n,gs.default.resolve(t,r.join("/"))))}s()}[lT](e,t,r,s){let a=`${r}Sync`;try{wn.default[a](t,String(e.absolute)),s(),e.resume()}catch(n){return this[Xs](n,e)}}},Ynt=e=>{let t=new Fhe(e),r=e.file,s=_6.default.statSync(r),a=e.maxReadSize||16*1024*1024;new mrt(r,{readSize:a,size:s.size}).pipe(t)},Knt=(e,t)=>{let r=new q6(e),s=e.maxReadSize||16*1024*1024,a=e.file;return new Promise((n,c)=>{r.on("error",c),r.on("close",n),_6.default.stat(a,(f,p)=>{if(f)c(f);else{let h=new Q6(a,{readSize:s,size:p.size});h.on("error",c),h.pipe(r)}})})},cUt=Ov(Ynt,Knt,e=>new Fhe(e),e=>new q6(e),(e,t)=>{t?.length&&yhe(e,t)}),Jnt=(e,t)=>{let r=new U6(e),s=!0,a,n;try{try{a=ml.default.openSync(e.file,"r+")}catch(p){if(p?.code==="ENOENT")a=ml.default.openSync(e.file,"w+");else throw p}let c=ml.default.fstatSync(a),f=Buffer.alloc(512);e:for(n=0;nc.size)break;n+=h,e.mtimeCache&&p.mtime&&e.mtimeCache.set(String(p.path),p.mtime)}s=!1,znt(e,r,n,a,t)}finally{if(s)try{ml.default.closeSync(a)}catch{}}},znt=(e,t,r,s,a)=>{let n=new ahe(e.file,{fd:s,start:r});t.pipe(n),Xnt(t,a)},Znt=(e,t)=>{t=Array.from(t);let r=new IT(e),s=(a,n,c)=>{let f=(S,x)=>{S?ml.default.close(a,I=>c(S)):c(null,x)},p=0;if(n===0)return f(null,0);let h=0,E=Buffer.alloc(512),C=(S,x)=>{if(S||typeof x>"u")return f(S);if(h+=x,h<512&&x)return ml.default.read(a,E,h,E.length-h,p+h,C);if(p===0&&E[0]===31&&E[1]===139)return f(new Error("cannot append to compressed archives"));if(h<512)return f(null,p);let I=new wm(E);if(!I.cksumValid)return f(null,p);let T=512*Math.ceil((I.size??0)/512);if(p+T+512>n||(p+=T+512,p>=n))return f(null,p);e.mtimeCache&&I.mtime&&e.mtimeCache.set(String(I.path),I.mtime),h=0,ml.default.read(a,E,0,512,p,C)};ml.default.read(a,E,0,512,p,C)};return new Promise((a,n)=>{r.on("error",n);let c="r+",f=(p,h)=>{if(p&&p.code==="ENOENT"&&c==="r+")return c="w+",ml.default.open(e.file,c,f);if(p||!h)return n(p);ml.default.fstat(h,(E,C)=>{if(E)return ml.default.close(h,()=>n(E));s(h,C.size,(S,x)=>{if(S)return n(S);let I=new hT(e.file,{fd:h,start:x});r.pipe(I),I.on("error",n),I.on("close",a),$nt(r,t)})})};ml.default.open(e.file,c,f)})},Xnt=(e,t)=>{t.forEach(r=>{r.charAt(0)==="@"?yT({file:W6.default.resolve(e.cwd,r.slice(1)),sync:!0,noResume:!0,onReadEntry:s=>e.add(s)}):e.add(r)}),e.end()},$nt=async(e,t)=>{for(let r=0;re.add(a)}):e.add(s)}e.end()},Sv=Ov(Jnt,Znt,()=>{throw new TypeError("file is required")},()=>{throw new TypeError("file is required")},(e,t)=>{if(!Brt(e))throw new TypeError("file is required");if(e.gzip||e.brotli||e.zstd||e.file.endsWith(".br")||e.file.endsWith(".tbr"))throw new TypeError("cannot append to compressed archives");if(!t?.length)throw new TypeError("no paths specified to add/replace")}),uUt=Ov(Sv.syncFile,Sv.asyncFile,Sv.syncNoFile,Sv.asyncNoFile,(e,t=[])=>{Sv.validate?.(e,t),eit(e)}),eit=e=>{let t=e.filter;e.mtimeCache||(e.mtimeCache=new Map),e.filter=t?(r,s)=>t(r,s)&&!((e.mtimeCache?.get(r)??s.mtime??0)>(s.mtime??0)):(r,s)=>!((e.mtimeCache?.get(r)??s.mtime??0)>(s.mtime??0))}});var V6,Ohe,U0,Mv,Uv,Lhe=Ze(()=>{V6=et(Nd()),Ohe=Ie("worker_threads"),U0=Symbol("kTaskInfo"),Mv=class{constructor(t,r){this.fn=t;this.limit=(0,V6.default)(r.poolSize)}run(t){return this.limit(()=>this.fn(t))}},Uv=class{constructor(t,r){this.source=t;this.workers=[];this.limit=(0,V6.default)(r.poolSize),this.cleanupInterval=setInterval(()=>{if(this.limit.pendingCount===0&&this.limit.activeCount===0){let s=this.workers.pop();s?s.terminate():clearInterval(this.cleanupInterval)}},5e3).unref()}createWorker(){this.cleanupInterval.refresh();let t=new Ohe.Worker(this.source,{eval:!0,execArgv:[...process.execArgv,"--unhandled-rejections=strict"]});return t.on("message",r=>{if(!t[U0])throw new Error("Assertion failed: Worker sent a result without having a task assigned");t[U0].resolve(r),t[U0]=null,t.unref(),this.workers.push(t)}),t.on("error",r=>{t[U0]?.reject(r),t[U0]=null}),t.on("exit",r=>{r!==0&&t[U0]?.reject(new Error(`Worker exited with code ${r}`)),t[U0]=null}),t}run(t){return this.limit(()=>{let r=this.workers.pop()??this.createWorker();return r.ref(),new Promise((s,a)=>{r[U0]={resolve:s,reject:a},r.postMessage(t)})})}}});var Uhe=G((VUt,Mhe)=>{var Y6;Mhe.exports.getContent=()=>(typeof Y6>"u"&&(Y6=Ie("zlib").brotliDecompressSync(Buffer.from("W2xFdgBPZrjSneDvVbLecg9fIhuy4cX6GuF9CJQpmu4RdNt2tSIi3YZAPJzO1Ju/O0dV1bTkYsgCLThVdbatry9HdhTU1geV2ROjsMltUFBZJKzSZoSLXaDMA7MJtfXUZJlq3aQXKbUKncLmJdo5ByJUTvhIXveNwEBNvBd2oxvnpn4bPkVdGHlvHIlNFxsdCpFJELoRwnbMYlM4po2Z06KXwCi1p2pjs9id3NE2aovZB2yHbSj773jMlfchfy8YwvdDUZ/vn38/MrcgKXdhPVyCRIJINOTc+nvG10A05G5fDWBJlRYRLcZ2SJ9KXzV9P+t4bZ/4ta/XzPq/ny+h1gFHGaDHLBUStJHA1I6ePGRc71wTQyYfc9XD5lW9lkNwtRR9fQNnHnpZTidToeBJ1Jm1RF0pyQsV2LW+fcW218zX0zX/IxA45ZhdTxJH79h9EQSUiPkborYYSHZWctm7f//rd+ZPtVfMU6BpdkJgCVQmfvqm+fVbEgYxqmR7xsfeTPDsKih7u8clJ/eEIKB1UIl7ilvT1LKqXzCI9eUZcoOKhSFnla7zhX1BzrDkzGO57PXtznEtQ5DI6RoVcQbKVsRC1v/6verXL2YYcm90hZP2vehoS2TLcW3ZHklOOlVVgmElU0lA2ZUfMcB//6lpq63QR6LxhEs0eyZXsfAPJnM1aQnRmWpTsunAngg8P3/llEf/LfOOuZqsQdCgcRCUxFQtq9rYCAxxd6DQ1POB53uacqH73VQR/fjG1vHQQUpr8fjmM+CgUANS0Y0wBrINE3e/ZGGx+Xz4MEVr7XN2s8kFODQXAtIf2roXIqLa9ogq2qqyBS5z7CeYnNVZchZhFsDSTev96F0FZpBgFPCIpvrj8NtZ6eMDCElwZ9JHVxBmuu6Hpnl4+nDr+/x4u6vOw5XfU7e701UkJJXQQvzDoBWIBB0ce3RguzkawgT8AMPzlHgdDw5idYnj+5NJM9XBL7HSG0M/wsbK7v5iUUOt5+PuLthWduVnVU8PNAbsQUGJ/JPlTUOUBMvIGWn96Efznz4/dnfvRE2e+TxVXd0UA2iBjTJ/E+ZaENTxhknQ/K5h3/EKWn6Wo8yMRhKZla5AvalupPqw5Kso3q/5ebzuH7bEI/DiYAraB7m1PH5xtjTj/2+m9u366oab8TLrfeSCpGGktTbc8Adh1zXvEuWaaAeyuwEMAYLUgJQ4BCGNce++V01VVUOaBsDZA0DaORiOMSZa+fUuC5wNNwyMTcL9/3vTrLb3/R8IBAgmBTJZEqgsk1WebctvO2CkSqmMPX3Uzq16sRHevfe/k/+990OK/yPQiv8j0EJEAEeIAHkKEQCrCYD5fwBkBUBmDpiZVYOkpDqUqTOUqTkse7KqfRKkZpSZ0jmVmVKbVHvVGONSY6xdOXf2bfxYs+r97Gaz7/VidrNczmo5i+X4/79WaRtnVo6UQAk7u1v/33o7HGQdPSpQj/7rqqYgCstG5MTLOF+dsIv//2aWtasTQFXXSGVKy0Ch0FwtLAv5xL+sjMzIJeSZkqQ+090j9RMRiYjIRDMBVHEBdLMPuzhK9ArtKWmta6w91npmkeMIbXl7nz+t0qqu7mqNZH8NgWcOML8gqf5fsvkoWoqCW/Uv9a31Jb231iAdAFq2b0f2AXJIgEFCSX5xeJctKHDjpJQ3m3Urk0iC5/t7U/875277i6mGdxYoptsKpVKptp46HgxpRCOeWYxBRAIkEfH8P2f4vnxABfSq3okFhW7Sh7EOU6Zknm9b/2dQZl1CfrShJVuQKkmDUKRlwEAYpohyd7/uuRO4vjhiW92oa7DifsWphJQsLIonVqN9+X6G95E9gJv1/aVCu6Vysu/NbAvVQJAIkgSLIIEgCcE1iBZvi3Talbv/B95N+2tvY1Qof7OKQVArLUEjJSQhhBgSgWJaCGz+exJ5As24WxMMguChXfbB3r3z09qdsMUgWww4SIpBUgwSMGCKKVKkSDFoiimmuGKFLRY8P+/j/1z/z8vcC0/38z9ixBEjRoTHiLRERESEEhFKHk1poFts2iWWWCLiyP783Pr/f3p9jjDzv+KKLbZo0QLRAoEgGQSZIMgEgSCZEogSJUqUWJmUwG/uv3/60+facZ/fES1atGixxRZhCENEGEpElAhMifCIiMh7RNRARD0osUTmQzS53d7gIWweY/AMx+gtFBHZ+QKBsEAgEAiEnXyTePKGdLaKJm1heyFaU3uzbTmJnADDv5s+/2iBsQLt8213mBZIEC+iwULwYIFUkDqt7977a5EjE/PA5Kn3lAZJ2jN6FtU6hpJswxeRU8EDzmheRavGU+8SAXcv9hs2VHFHpGFd2uSqhHfl+2vjalI8eXtMfadrWGGNgIrP+vNSPghBQhnaYRowg/SWg6qitd+w5dduV3M/w+v7ZmNa2EHT7PCw7b26WSDoIaI+BqiP5p2zrxStV+M2GSTNwLZe7+NuQ2yBmwrOzjTUkFHwTV/eBa16T3gA4/213h/1KeX+30V2dZfwJfquaEB6xymhDz3/VMrY5GD9qnZSnAOdHwOrSiaW52B2t2N16zP70evD5mkQyIw0SkzGfUSC0v6MnmPjA/zDgnWuNgwjo7uqtquP5iVWyxtfYeRFHYCX8Ri+J5QLlWqdxq/rU5NcBfWU0gwJLQozOPn8AKW8O8tlag5jTBhcLinjQ3x+ROz+sC1XeAEFjsiL/RBz5ZaHIRt1Zbw7BI/oqy9GqIvPir/AVOOYmyvYsW4S+OjA6lAao99TaXVi1/zOSY7OsRX/YRjJGmdyzupZMt8/DVsorPED2dvEHJaq3K/NE3bKc+Ilrb/azbMvPOIR2+6+xdd8ma/RzeYh23z26tLr9RU6lUdspWd2NAZvk1KsuWtCCp0djmdRFF8HywmTO5KH5Q7JmWezwwKTluDzWDDEEErDdtCCr0a3/GLiI1+HFJKGSB6KtqRHbbS4nsotDPyRz6MFVsQZEL/84gHTA3INdbmG+IoQeUnuY9jGbwRzWSQPASvKFzPQ8sMX+Ty0xAooDSUYEg2rB2Asi8sg++mGqyPPdcZaQiV7O4lZKh/GtbLxz6f2bTsRiLCS7YyUlJjXyQfUAqv97xnph6+1be14kuOkiiW9yBJa3qGJc/jQpCNb/vnTbiO8xEL8sWjHbz2Bnbw/6u0defDAf0FGLaQbLe/+iCD19fZdW4gLDjOLrMbQ2T9vzdtlMqbVl3aCRT/5cB8G8CCpn5B9Lf3jpPZHybpehwzVihnKVbsZkH26pXEqhZl3TmBX61DuBRGWyjOcuBvMT14I2t2ppPMw9ZDpZixooFP9mAgeVVq/i0VyO1POaBTOdukyymNgYmnefdg99y0VvJTipQXLHiIB+GYJk6iLBUtXC5Eut2DpuKRTvuBkW3pv6b3l9xr3/tvyL7GOfiZJ5G+M1aBLJ8TSrpD/ib7xQ9H4b9AfOQ/uEcDmZB6cL2xC41vkwfpiTmh85keSHMtuqSwHp3CQjy0hCN4mosrShflH0n4J1MoTLAROsfy6R7DbEVIUplDwMc4bwsJzphym5GmaVt3+FVff00PZlpU7E5+eHCn5OBo5v0P3QHYrsHNk0PZ7klsowDlcZtJdJgvEbmwvROEM44XY0SuLhahpubgq3SzjsieuutCgAA3qM4rw/MfmzN6HiA++fyU4Rojl44Jb3lXXiQdVSyENix+uraEeD7BibuDCZyFx7aSSW3MA55ymmgAwipqWKus8ykE9HSnJ7CAcn4q4rnO13Ll54POTEjqOxF+FpSAggq+iW01ABNH0JIpBemwUz1pq6GW5MeY0mCE5NtDFSzPrukTra4iNQgyYuZRHSsz72UwNvCA042mO1PKJUG7b896RNyXM88mIr7W1lyhCT8uigfq1LwQ1zXpPQsUrUocxVC+No06fCYUsGWWUjl0/D4tExtJmp4w1SYeaLpnQJ7CNbVODe+nUys2PIKLyxnBq0kHPfRWcq+THl5c2JS2fQeZBVxYtIn74wmnVXuTeFKjE4apGeJAQWnr5Jum5VD/KXuOoyZRPRtrgkZfqvDIhmlbcO6TcjEIhK7mkfR/ad7WeqFjihp7L40OITvp037LNCGX/L6y51MCmkxcpjKCpzBA0noqXTJW2WtDBHUAiBTBi4eBW4rLSC2L+o208CmJ/sxGolgvDgv6hwNsfmxveCnGodx1iKVgEsUO1vE1JKVnT4SgRTO2dgh9K+H599CAmLZE8YvfNp3nhge3MhwAfna99yEZihxv/XwtnAneD0/eEOhyhBTIjd37wBrwuGTKcNBm0/Mx8mIj73As7n47h25bDP3X6UH6TyhtoUa+4M/rKf5ClWLs9Y21CYGxQE809XrP2Jk3orKEJ6hOiL28/33rVJeS5dVpluNegSJcPZfWrG3wDPe1BG6B5cHPnHbNBlhNozcJdZMyFTFG7UPzgl+oUCXRn+ISQ1WnXACLe4kbKtvvthKJhtUPPc2w70asPUj6hAjfITl0GnlA+vRox2VZA9LnskDs68Tk16hXuKd1zfFgC7b6qnLKaoEVXr+2g/BhWXIgw+GVBoqgnDnVuAp2qiUC6qOG4x6GNRVF5WUi7Odw/iUrK/gQUFTBttWGE+ceQumw2t+2dqUrzOrsHSaolipYpBpeLVPvA+1LureB631Tl56A1Wd0ryu96SzibapY3Nz1TXxbMfhInq7WkbUrgGfVaH2vd/tsicD5w5CYV+eISjPH/omyb0wzec5XMokuSw+38AZ2b9rNMawsYSIHvehmbPWUWUuFHVW7var3Am1LM8YFd+G9VDZuKFOvxqm68LDL8bNbjxFevGsFlTyXE1FAbwNZcd6k29dl6ub5BZ6V/O5cTFBmJtgRrraPr7PoqJUnMj6QIpMIodZLDE57k2i6TROku8ZdH3m6Y1vYJFSWTeioWMDaeNqyKHeN8tlp4nDWkSQxHMqbaON4f71KnQF1IwiOkHHPCMrVw/D5W089eWX3/j60UkkuvoRPJTsumkpFd6wW09GwYBwLMgvEZcBgHED3tGu6bESdiXTBcD8W+EIsfaJeutJZ5THXopIx6YVJDbcsMGmYsZtIXb8bsVjewXzc88FcTZ5lYYoFhIrBcO6ljLt5+dp5HmzXv1Kg2MwCJDrRr7qVlXdraGTP828XfilNRkEJ1GwtTE3I1t/aITjVWiTHgXNljdnMXh5wdZpZcKzszsONMKEJhMh0NK+bDGn+rAJDC3mgiOZxq1OUUXNsxkQWhYW1GFtRiWFZNcNDeLLlIQll0jLYPjE2ynxKXI4lcBwCNsxFW85dwAN0PW2KmOMcI6cTvka8d0LYiqm5TNUQfQJPIoralnyMJ4bt6oiIaYBwZu+k4MkkXTQfL1e90rIWXSgjgUBMgCXkoTn9Rr9HCuegYSj1NaIXnzEQUfbtnz7/FkaUwrNSQpHIL+Jj0VvXs5zg6Gn4hCOMevrvMmTvdBdt6DOzxoF88Zp3bG+juT/Zl9hHsXlZY/IeRVTezaepfT0+FNz8u+rCFX+1LykI9/PPmJIfH8/IRAejJVADY7rGj+r8PWPt4mhxDEd6+n9rB/NPcTe2dTs3pXtOjtNyFndrtwLPSz6s+d+vOkWnztCqcbmMfyfd0LcFRcVF8kjkoWIncdj9IKIfZhh+PP+DeY7TVAGAK++IgvZUF6PTLIJT9EhxpprSPCoWuxThGwP8vmEbDs6kDehX0zWXz47U9+/Hqajad+simdjof8lRabLnIvfxoaVOQL907ZBofU7FPER91ifRhlz9nXfSHyGA+c9sQnfOh/SDUqx+vRyM4oJLJXEyfaISzIFoC6MDWR2JB9vBLhhchIiznCQbr7n4zxaEcvphNcZfivwbIKk4C7kb+IcPA8u66nd2Gb/vUiilkp7G6ydQXj82jFjlebJ0yyezuSSbikTcg/iPlGxcWL0JnPmnSbXtHfKBGopIcI3lir17wt8hz8Tw0UHbloVh1oDnNdFBZVkteweiH42CzircC5ZTif9eeYhieGEnmUuVH7ai/JO7HRhjYEPIibvKkVqM3z0jfZE3TOv0ECUC8NkRhCWEHvAOZQ2Di9cpB1UFmdoTca81BmGHQHV52E9WYKITgpIkjtau2nj2g+/51uj2O1NqXpe7/et2u+ywiRJcxClnpB8zPWr8KpuDNG1On7P5XzL7w4LaThoWCyw51tg67gUiQxAvac5QMfVAg7A9hcPddIYKqXNqHKVTRL1cI18UOJxu71LHOStvahBLKaojwKBgRA37Txbt+RZS2SV8fnhjPK3JtIrQYXS/KbLS+FL65SGQrNoZCPoQ3jPPJ5oGmhVQ7p1HPtUJWZUSK9u52UhHSn7Fz4LaB7f232yKKRJk07LL/FidQB0163aXVWAUV+9Uo0KWhJRPowfH1uqYdJztTXYWif3SQ2veJvBWruwtw9FsVjhQC7panWsvhWmb/auexdM60b7dpZ6YWOyOJa0qT+G9zC+cUTlJul16NOjStrdI5+HmW42OyTZigq9e6wSExmEs9irgKnyuV2XcQjptcAhXGxzo0uId2qEuEZLPpPSpkxKQDdnY2nESOYlFBYmNWyWgXWU1cgMEOrISgwBaXV58jMLxLhTFsomEXb26Cnyiq2J2giU9Fm2absgPt4Rbymjjkcd7KgXAtHaXNVLic47oHHBk8ARny/M5iBziv+H09TI7cjX/4l1dt0YkbjOG67cwvyDnwimukP5zYBXBFF7hxXAov2L5b2RfPdccCG3yiboYvK/mEAdstGcwwoUpM2weBoiRPCYEpRZxbEcXZdI3lGC5+PAl0a9AOvplhycISXApYj/Cb6zYy1K01G+osg1+ehGE0m/zhJpyLJ7Z57DmuoP90ZNkReZoycA3m5rCOFZTV8N6IbLjf5BqGMUl4znKQZT8ehgTTt5IvwXbnJLz/7W2WXCWlXpiwfXydTi/zOvfh/iZZU5gT/fCx3nc4PpiXjU8MdqGAs84cdBbTDHTs/YbHBvUVFzcLVURv20/zNCLGxwIchrqFeEBiuug3jSpTTTU7nE2FRDhL0LYczn6cZASeq3qNqi1zQVYub8kofKMm6437UYd5b3/SO7CKivw4FWFPLCLc4Z8CBcULyQE9K8kclUkMZwxwWqSVYIrnqhl3jFaMYj9xzk4XxZQBOZeTHSYKTGcyN0fb56s9a6UvmqOL8RLP5maDP0skmaEs2VciXWCWkS8gbAyh6gHDIsnXCmDhDERh10JM1UdBGKpt3XYeJrw/+Ox5PFGyCLErC+uRMXw76JlFhorQtT6lEItxakSkm2joAbmHfVOulpr1LyuY5qrCVm7ZV8y6SBu2UYc1R9GKlgLZ0FCB7GyxzUfoiunzAJUkS4CwDLnKYZlJE5rs6JF008a55Dco1ZmpojV5KSQyO3RGmuIu6MJqCkKcv/VWPC5Cmzr77J8L2amlHANFA8v4MLWPFTxCuY9+llLIkHb9KqC6drvO76U/HhzYd4TCrtX3hIMtbCl4wpA/crGvRH0eb0k3lkNxfNADxb3kdLBtYQIKSVtpVDXnukN6/Jdmoy9bYx2lx/ziK38opmSgnSmwC8vM2i8fKZ8MSMatN+ll9Va3rQptqQeOiUWdB5P8j67+kp4MWQFGUJgq/jA2SU0WLYbL3FznrYOcZUA2pFzq8l+c26QbiCbAl8Ch0La9zRiLDPy2srfCpXRVcMOatjv3XJEqv6lQBhL4ygI3GKN8DSMNoacSezvDfw84MD+EGYUFiyxXhVwAcjhmct3ea/nmTEyFPJL03efr5cMR1jXApiV6KATnd6csvUBQIDUUE/gF87lpIhcASzc3FNkongQzQBhyilusxM5JCHhq1vsAHUSGlgfPu3T1LMf8fUvu+nWo1UBLM6eduqghd2CF8y4g+jxwScriC7to9zCH1oCqa+AO4eXSC2V6Ayu3vW127r3ABmlmG7suJd51EhqnAydEaetoL5Z+Ih9DtWAiYG1DSpjkcYPAD5smccfdVDpabrJdAdk1Bwhk2f/0XFt+gZ89z9cWBxBadW17CYPkcnfxboTMe+1Gm9uLOdI72/ZEW8/y0dSUqGtJdXZHqbBgpaZqxg9gdyvqrqrbu6pWaCOvqGZ9bS2aNQDDcttEfa7PXefhfw+AEl08ngtUlua0VZbiX43A5T84leaUEbC5JWu0ClotsUtMv9U9Ma8XonMcneCouY74ROyoXJb2qJ3JxdQ0t2Q4GJsnrM6NKuEQsucEeknJx9Kow/RNlZAi5gmhVfd9kZGBWxrcGjGGclP8Dlyf/begmrKtRtKZ5yBT8yKmq5BbFMBNJ3ipr7VHfJAIAEVxbHyfCVVxhN4Ea+KJOX1kmZaTU/zPKeIuHT9RFhcximF6rOEch4CCeVy0QojIiYrbkxQjbaoz5+dTT2lV8Rvem+gxY85I+O944aZIxHzaH3mJ0YT77dfahgwJEN+Ecac7wiCCIbmkaWV98mdvPxjT8bb5DRzhJR3z2dolyrlyaNktNUvWxPOjxcke/OgOG/FwhyIXgS9DOAEITNdNLXNtuKDHc8plFH43V4UF92UVd917U4OC+UYmM9htdQeQb5I/FQp+3cw6YsWkTBNupvHaX4FOeZk90YqUGUsSz1gWzC1geFSSiYQeEdS0CY6LXPM4KVsvR61UCB4pu70JHkvpAE4e0B7PIba/7aQvUbAr9ZlScVQ3ZXzHatAGkBg+fO4eawSGac8km+CpXbCs+fb7FJ8xW/0Fy3TDoZwOwb6pW+BIv8uCG5EDbNrUSRJ/WUcQn4nnt35rFYyt6GLoroOfLw+6Gcj0pO2fsa+AtutLPb9/jmtx+rXd6t3Ls22SglWOFNbJHGG8r7Q9xIThX+tITsfORZ/N/tf/jGqe2ikQDYq2celmNH7OnXLzSvuO9YNSrDOoTSTs3LlGKochkEZlMW/XAAMt7Yp/jbjIlVq2TSg8sewqPiwvBC23Zm/dTcmPDerVVzsUQcHhB+nzht1kaCTCdTNhdvoWKwvYZ4oSsaqOGGcbb5Fl+rid+q6arHmMR20GI6+uWKihVOIb707/PrT1cPyirhOh3NZKdbTbl0cuJuRSqmEV3BOkAGkr3zd0DUr+L5QTewxGAetWpDipU3AdliEJHg0sdyYLdHyNYQueZGb6g0jlOWQQ5J5v3aM199JVy3Uf/1Ge3bkUt13caf0uBvT8mPeOg705fTxlxlV8YqKpH3Ky0eqPaZDkVLcckyXL+x/Se8g56COoCA+vP5ov6o+Gq0F+INLDEJbG6H7QTc1uS8BzgI5xdRrVjdzNfNl7xrtUcdNhwEyTmciqsCw9t2xIe+RMCZTaG6rH0HSa8IzUrSafJqsbmtZwLNfIT+ipGbS6EDg/AOjP2S0Q7NpnkskF6On9uZfJBNMc/vRuPPO+CgdQfjClqSgsCSMKIdCVJSvc5lo7XijOtAu1+cAnisoJqanxLtNhMiZquTYxAg0RznpnCrQ1N8m5SKv/9Ka54quCMo1bPbNcYTa/iO3IWD+FCky5gplE7yvElfoQPOiy3GB0tsPgZH0HbIeEcx5cI6QO00aSWe8+aiLcg8lMxFwL5rRyH2XFwnT+ZpIDbUYiKNB/G0P3n75pLoHkRmfle8JmO5BO2juC2oc1qe6HJ/TC45AjhJ6czzOtLg0Q99Zri3cs+gIfZMwKN+ZARqPe540Aj0bGZso2NHB1O1t5/RkeDdikWUxkEFPKEMbII7WtZuIc1sFeyNo0fo+No1AljZ40n68sAS64VLmvZ4P5++PAqbMkRjyKYh3PXfxynQI1lAg/kz1Ky+RNG2hK0Lu+tIqLD7o9+gSk4ACGxLoKeLU1+YaI1HXJtoNRuw1pMGcuWfZTpIvUyIatl1l45Elm6xNdbDS02RGC7HxTMmZULCwdGyYXsYp4/RJgdqBWINVf7FKIaio4QYm6H5aZIpV+2XsVIn2ATFIBBq739vS8O10e1CI9Zros+/6UQ2nmCDXg6z3adf3sV9bEp8t+e7piPl0Vn6K+O0ZwZDjsWLVv1mgXeNI1bBh6kk8iojUn7nRitqTJ7o+xfs6NZTQfilDoypCeK/kaNg0+yScxuUa3HXBSpNCIkv8gbspwrErL08UpBDJieyBraCuOA1hAPfmkPFJZ9wWq4uR4fB3I6YYRqJERQ5cGX7At+5Np41bUzSNyjseRMm+HeG/Y4AOTh4sFQ6eZrtDMr6g0N5x4Qj/WEqGJ53g3lPIgwX/BjbkvAN63C4acLsxgdIE6mJCCXUZhvDTnr7Nxa6EAYH4AlflhCVNGE6TM10ypmFEoUVr30VFr5dMlvj1dIZ+iXWpUQpswhGTZ0rUdIE1uAB2ho3IZCUkoAETlgWTYTpeHTq+R59HnIeee8yLnEKghPA6gPynJCqv9EmBxl5DHixNZwGIC+ISIP596tmySz1lKWOfJSzCNvSCsphu1WSjnZ5BhOFZrKuj4Q5BJTEAqjd5FcdDoy7EPgtGmeNT6dAtdPT5oKKNBnrUNt1bmp3X8dGpblRXKqVL6+ReHnjdSY3QaLY1HU/FmqVXaPTFvxYHJxUlqTNMfb/OJaIMHrSXQ6d5QHmVpnSy8xGXfAcd6FdokA1MKAzBqB+j85xb7scozV4FTownJXNbX9hsG6i8VjLYfYfFVwvqdoWg8d49fazKaITx5BOo3bIcHKBdMaTC3DrBju3cwmjGERPEz67R4I+AEDzJIO3z0q/ZjUo9uI6WejbnyrEJp+V/2TkToGvLmdDxPqLdErgttfHueQZ4wRk42tDr1WI8ZUpkTvHvSi0wss9WMPTuTccFYOp7Vc+65+JKgOZUryMKe4H6cmOM0m3GsQxeaOPGNKY9TnaotMkhqAptsqyevZ4uGBuo0ZWacIsUxWpCQz+DT7IwKbQRnd1CSfDDOh1mmV0VZj9xygoOSlrf3TxLf8QylmirPfJRzz0bzs5Rn15+jMml2WhWeddU8AM4eATCKiVf/80RzQzE/HS7HcZBCA7w7y8fl0m+8fuf2BIEPdXRYvXUac2yxwkuOKA77mLoxfFbWKQndw7U8GDJShjJxBIgNBGN+UU14ox0YgJ+IM7vYX5ObmNF8NKUC4CN00gHk+OEuqpI3rCNei6d1kR6KzxyHsQ2bruIRx1VHoFq+zW9Ig0WemXUnkWLSlgPd0Dm+ARifyFS0uujurMDt1a8HpqbYz911nQb4TwHyRqdLsFgm3PLoUmOnDL4udj7Z/97w1eaPfyMtBP0ewBq4l/Xnypqpl4el6OnUYFt4SecDUJjh5B0Hg3uQayutsdsj6iRMwO2hMuVSyPagTWUEh5No3x8CE/QRkQHzxmWErQwksxqj7aIQyRA0obK2FRuX67Fs04IxIWOrytjmMZpyMlZdOQowSjQ2jstNQt9dyGFTjTwsdzQsyj4OQ1SOojVrNBLDUtOyjB36Q88MyXlKDihQT1mhoAElDZhpRAJ1KJkLj2EwzWYaI+3SN/5dVpV5LZftFyzcztT2sLCjuGuAKPgaNxY7Nc2bn2UgA3xIlzlUPE0x5wMiNMa7b4KpKq1kS2RcZXz1l0RJajkZzj5iiSqvqYNE0wvIytCMEQBK8fuOzqNBwV/CBCcfhfuwuq64o6mT4miwYCeoAblNBALa6rhaPPQTiijH4KaYg2bD9IUkWwtoDFhpw2/q+paPxEU3jCQGs/LnZKbNxJoqZecAyVC18y6st4me59Qnfco59MewM7GFrp8eZChAKRvXk1tLx+HFdBacQZHR0oXoXdscR+45nbBRMdY0Jt1QH04iAHUwDO7Iku+pHtupJ/XuNcuDeCgbKlpbAd1u91zwSjAOoE80NFnZX8q1YRnYpbffDudICa6eWt5NSVcKLfl+cbdk+sUIOibTNqBNJjyYHkBbLOfADZHkSI8CCggwbr9goMPQZcvj6cKiR+uOQ4/HK/GAOIzNcVLj8a5bVHwJIbNgV+IosU8kQnt/O6JN4z08ORoYvyN5iOfg4xJgMRceOc3anQf65YOrZTSP0Zq+Rcsyms8Itz+PxKCKxZkYMeVFOKfGYbISW3i7P5Iax0nQH+BW/QAjDik9AJDdDqTFQb1zfgQv2wJ/FO2jTAh2jL6lLnM2dnbL/7BygCU0AWKvBHJbwu+CED04ZVad3yNuNpb93gn+XsopRH5LteJEwkqG+Ekrqy7OJlRyn5UJ4BnpxLRCksfT+YhG57Ay0Ivh6rmqT+9J7yZXr58Eus52M4TYBYndTj3HkRS7OBJ7dUkfcRDKiLrgSRcxZxD1MikpUfnjLYoBgonb3gcE2R/otu25r2+sl8+C/eTRvq4+dTSetKZnL4qG/6D/Im0MDe3VQRr+lkROZBeXPhUhu7hVT5NL512dVCWx71GZo3MherjBXD2vePP+q3poRAc6+bB6IvVW+xcbAVAujruIz8OE3RbaOl1Ugqs/uDJjqJRpZPQ0SlQ9Ivo1WkaqU6R68Mvrt3lPeOvET1iGUQXgTMyshouibO3A/wuZoOjc2hD3B/OdIjSXYkhPII7JCPu3QKMV80nSyM/n4VKY7pdIb6qZhR2JvplYrasbD6F/cIKnNGHvZkbINmSUNy0sdlwHbCEExifPCp+l5HM/2kKUEJzMZluCjiXCNENLG7iyYGLvnhldiknwSxYHZN3NzDk9D8kbcCT2woGofSJem943nDYcmMtyZCpzEMdwsO/loCxz+grJ4MZitO6rDKDHIacWBxibAWoc9BWWwTyoy/kNdOVEloQkyII9AVU18e871tLqGS3CaI3folUwms9IXwEaXE/cqv9yRW4ESOkBgOxmgJYM/6tyrZOHVK8w4pDSA+DB6ZW0ZOhTtGRUjoZEfVEetd9rNOYClETrOvfURb1BWPYd9e9lMmN9edm6qA3CfC/S4BpRLTvrhQw5kfcdLVg/ig29gUiTiPdeo+VHCmwWnCxcl0ZNLYmYOGTBPoLkfUd5/fRqQQVr2ToqcEtoKAc1mT1AXDno0x4vt+vn5WzkXyHLXjI38zzj4ty/MLhuiLqYb0FXHHmQRABZsAOpKkB3CYy8rp6YggkRGyElTkgUR4gqkhCxE57jta3ILH4Gn+nru/dQmojvt1k+R06Ba4lIkp9IDHJ5VWdBdyIFINaQgHe9u1B7PKcdQhGKWcg4sJTW6K90F0JTZChHDNkce5itjJb5yr8O89zqdb632zyIPe0df+TBW2qNtJQt+7585WbdQ2dOlTAnHsQSz002FRKZvcPR8/Qc/fK4lhzqXcgkRtdPoTN7kXOMGRXItT0fr4Zi1GSJvOeB9SzIa1APrT+tTPeDxfHZpd1itV1vgdSXkiUlzxzTS+hJfUoD2UoZphAnfXB5uXoUI8EF2hcXj820hev769o1gsGYtEa1tFPgATELWqPyeV2ZYIzyAl7J+Qo4F/a1N3LqV/OjrnJGpoZo0uI4Y1DW1jf3DRqEzWv7RRdVv5yG4Lnyh7agT/tf+tktBzkd0sPdHFLfP3ZBpI74T8AdJc1Tf2g4TN06i6ziXBnwpqSoypI3u7D/aPNAz/D6tI4YyGUT+cOzJ71ReWL1AerHHOeqeO7CeqEBneqw3DHPhYutpNg4VQ+NMwDTWTzmnjE/97qTUKzdmxox9WPjwyr8/58Bdi4dU5JylYkp9ubriWgYgJYJBF9Qw//H4tSwBgDEJRALURops49OS5z6RZtluLDJ0x9lA799/c34tDHsfWLhDLX8IklPe7Wtp/V4NO89nFMo7i9+6RC8gWUx0FyZIMGGOR/WjiMQ9paDOkxFdRTBSfaVVDA2Gsr0lxDsbwrR863VdxY6i6KQQBLJJV2nGQjU/Mjtwp7+AekN3fW3A/7Dexq8poXDXB3kGW19YXa47n+n9gMpu//ZPwFzWR62lY6J/Tm8pVlB305Smnkl6In+9yEVNsbk1wRrxY7077fU9sjDB6ntBtBpgd2hEdKrv+kraxOWGwjTjOhRX6IQXE17xq3LixEEvQkMM+Ye0BFpOg5jWMCwStz5yGye48bVSa3WvB19O1p7nRv6tXlp9IpT58bvHtjrXsWLLe4QSmL14mnfcL2GmS7BYK/vjDkt4lm8AN3zWxix275LeB7nitYSH3boqqh84JEUlRdUCSqMLxf5cfwC+0KEBfU01o0U2ddbRNFuQICKoT+p8MeYhwZi35FzW5c3BatsW/X09ZfOw2K/XY8NNZ7bW3hPd09j+DhJoFopL2Td1KTEJV199pnPzC1Mv7csySdSqxt52wPq1/vxEY94I+PF/p4w7nn2/maWKq4ij//uPUbPPtz7Iet8uu9+34heqvtT6XaMBcCQA5dmE6YdznFrpM1jhceli/E/VkZsWyo9dL+wWwvPYJeLud2MkvsCQBaTjuwjPqTReNJIMrJAKcvsIuCR1x45zt00mwAMdDhr0uwmz5o/E672l6mxa5uSvi7g6dVUyiyjl+Ki4M8PdC8vnIdK695dhKM/IU1YflL554i+KIFsmpa+vhg1dPxi4pPRf47NVb4nh/b+1BZZyXt8m1BEkHM6OzTEEb7jhtlIZMb1tOgRe12nWf0kp1iu7Y3Zjwtxxi9cscph6+Wpdek9k2NZe6t15LBAOMAA9bM02pYzOjsovPhIrf7cfs7Pa1Or4UaRtUAbKlhl5F/unfqvPMiBnAOil/djhSc4rS0c3Ji1evkgvKI4lyivNmGl70MPpN63Gk1Mix9dtf7pivhKe1Ib1LmcwTNoFNQS2XxhhNIA1gDKgwua/CzrXHScGUBOTb361NcszobHMitEj7TzDDB2266FC1hc0XliJvE0ltDflTsPLq32TMqeA0njyEngPyfkyRXqv39HpwJQZsRBHPrD0Fx2UhF7UTSH675ZD1i9ETygY3cFWcZM6IUJ+J3v5jc0jwzjp0Yr1DTOT4vezCVrqO3TJVoEswD42nl73LYLP03itFGb20YFwZ7zi3SiVmeqwt45dMeut02k0c0o0Lot9LMq64I1WzlSzuXGc45veEqE3SHDeM2WZ1kQRmnpGBpUi9bv+8NbQo7Th+8W2d63Fw42nFzatdTjhWEak2mQF8tkhmhwJYuzf2v33iN68SJPVkzcqiR3znKD1ZXD/ydzLbUdwLltd1Mfbc9w/P9S+4qyDsQ20e/3mfbvRAtCzNLQRm4cN4p2KGwDTxGdnkbSnUOI7uM1LiKXvqWXrOoKc+rxbDC09VyntHsFxIEmCUlRhHU/YTOyP74+KouFO1OF1LfmUzwkF/i1U4/8yTtIqbJKPRltRFFLn7Ld4PjOGFYGNAmd+EGG2P5pFEtTglQu9qPaQg8ZtHIFXQAukCgCpPde4xQoIzaxP+yPQxTA5riD/0FwJ4hED9uhk0W6/Wchrrgw82nl/xaCX8uKIUgLKoacHY+ZmBtbX4JSrV/vUalha6YBUOAH1tMAG7W4VAmCoWNQDLkBMzH49fMDlIO/b6jYig6JCXyhfTiyFGjymkPiyM3p5hvXg0mpQTJsYPtjTjqu1mbeYSWrYh80f90OJHOHOHJahZCL1EEuhUSUR9FiUXNaRpX89llNu8DXdA4xj7doINu8Q6kXN3lvp3fost3vHV7KMdYhtGIpvpx1pVimIu2Gm39hPpK/m6KMKVvhT91EOxJSgQ1TxNtzmt8WV+IfeiutIrRxznlCMrRB9aYamZ0sdMVm2pbCCBeLeArNOWnRQ8r44uYvXqV0MMHl6r8fCp/XFpGYVC6/gNOBclOa1pZkwbmU87FR0wh3DFIvsMqzO8g86q92AVgXKlCDBtZOfX+3SW0vXa/92dBx5L3PMRjFFkbhJRAXzIDOLgv3CZuOiQqD10pHQb7FoqtUS4xfsVCxKgAnW+72X+7PkgNFjPE8WgUgh8eX6W1gvY/UcjnbfPzAd5vjl6DB/TISaX1DFWUWFEkzvM3jer1BwAtKx0B2AOPYGL2DtxvhiW/TuwocAXO/UKtnTvGLWPJCWbwN0f5yTlkUIGNIo707TNY/KbbRWsvKVjYTm2CO/BAtV0XWnW15YA7T+B92yN5IUvGvXl94bN5x49vD5JKuS4yjdcrx+g6JyTxZL1NTFHTkOfIfWUseh69la1YBzdgi7a9WXyzxQrEVDzC1YWqh8rN39vtEbeIBDVEHgH56nsgYq/fauFgbD6u+q1RzO6zaA6D2RAxNGAePqVW0nDzqiZtPCGp8P/GPmID82P9wS/UHKxXbJxfAWsYCENQGbsfydLYzy8vhkTksn3XgNShDELREsxG2VjPi6AJZOwyV8xOO+EqHDmtt/jw/hCIg3XsVvgXPPsTybLbfbbzS0EZ/2+b9zj+1PA87FNYgYrlvvx/V3lMqQ8Hz+s8bnDiSUu2vIL00oMn81NaO1WxIIixPWxlo9WvX8dsw7aNR7kDgCsJppKHso1VBGmvmHqAhiana1+i3yYFETyE1vtPpc6J1QXLUwboWe5/R7cJkOisw6fCPiJBghYzyKL6zc9nahDl+l/xFNCfSJimbUCCP7wp+vDzeCuQ7S4VAPoD9S1dwJHZp3fng8+GCfP7vBIMn7GbdIQRpHv05T2a9+2kp84hZ1Nn6Tc18ueBdXfHcV0C9lPxtPc08HucFChZoyXjCIAsErejHgtEusvRrFk3HA7jXY6EZEL/S29ZFrZ6Km/CGs+fj3M8qkWzMJFb5HyWNCtfBCryU7wQnVm3bIYK3jqBPkkt9nF3sY+f1wTYtgvRA58uqvY1pf8TLanzsaDA3IEhQM12NiVlqFuNwizzh7/6bwIxnzOza9VAeILoQDrVZzVG0+IDA8jNTJ9fKJuwx99dq9p37ZhlqHJeZeMXo8yFEfdE2jZCaou76IAWa9H4dhts7MWKZZ74O0z/f7BoanEpX/aIq/EEKHvPDlKHLSXo145vg7QBkxFSvXmpf+lO/M09T9aPbfIgziu7rnKrRj+4d6kb1zorI6B0nJ8qhMc7+7M7zSh3XSAuQLtWWUSsLXGoSkGMWK3VgT3BOy3F02Gg/9wMw1p9wa6SwkrafkmrpfgN7L2GJbR72nAClVbtye8V8a4DPyQIu0EhmSgo1Oltrp4RVWpS0Xx/UqzodyprcKVDqpERN9RliKi608b1uKy1UyO8G54ZoWIoP3OTJzFh5aCU3ZceHeqFTMzja5JbLsh51q1IIq4MQFyaT1Hq9aojBzuMDlvwwJD6TKp6+rWlSfKUNWYVIQmBkGlgo+CFyfygBgmKKuzxTIxSJdsZf1+FqPFugGUHKZjm8ZP72tG55AIUZpcWdiQ/iE8lKqIKrajmMvGXyzTO3bjaQCZ3rMJaJaap54V9QPftcmAkl2lZfLmS9tbn5mBnkCIRY8tvSowaesopFhUnUOclWirztsmmtqu93W0fRf41ucwSLGiMtgStPNm3WNxtMSHLsMeq8jaFSHZ9kOvZJ6wuT7FEyLD8Yv+uzisUw68n3H5TQQsaL/tjUTwYIkkBML99VKpPdISLwCENHAOANUmcwqI0g+IMUjpy+Nn9Fx1Yr2b0mvqZSEdEm4lBwNgdeuPyhlGru8p5SvbNUDA6YP2MF/TB7xkwIeDIEzqYH5UKymipf76wlfWXxhDxYSjrdnuAGg30N6qzifM8DvBdcRryjmrU+CDMJtLhGuoKZVMBSscgJk9Y/l5ZctkwNwPmKJtRcd4lIq5g1qIu+sefQmeuUmleU0WG3YXalHaQqxdlY80WdMzsp0FtN2Q2UlDsLV1i6fhnTUre7pq0kcQ7hmtpU8VJUsxEMOngMNVuEibhaNZLMr8x11LZoeJ0dpEIvtywIwo4YvPktiRepoD8PLoi0IDzu7ubGEvms6twDJy3JnenAR24eKHclGnNwXEbn8uyxfgTABY3pz+GPQbaWgDyWTY++zP/jg3fRHy7Kxrh6TxvZsC2K0T071qArULYam2hKmhnOCoWJGXXxi9VPOadzx5lj43GN/7fYAFRFNDubI4Eh9vxm01VOZFEI0fHJzHHmuHl9bVjDr6rk/P8cb9c4JhW6vBtXLFJDy/GMplr8MaHAyknKnf2/1CFf6Jo1kW9+iFXItI6Dcw0u8hKZqJWt6QiY6riwjCKlNbBwDI6uYwtYdJTCRt5GE/PO/XBaI6fZHr2+NuiZDiFbkXMCWUwsVe3gDJeyZ66raXNpnzff0JBDH+dQnV5JpeTYqz7nQFDpUdkP9YAM6ZCby+tO3fZDHLobrKhJqsaj5tvBnDDiRXEsLzX6IK2djp9wKKH3vbjd5OZ5wxTRYFWmnCmAHmN8+2zO7mWQANUwBvDpxx44kS2x2d461wJgzA+hnt+VYujuO9J8ab1bz7g08J+XxtrdHMU2Q11sWGtb1ajdvRX7Ycf13NOJlfWdUBpxoN4kfMEmgC4l/4py7Xm9nnkuaWf2o9CJOVLNTWS/X/aOtXoph3sNY27ym0FqAug2/kj7jZJ28dOPYrD5RrnfdXjbU+pSi3VZyj8LJLzZCqYtRB1bOo1Sue/XF3F3pc2dVBq+FHZuod0Rivt3zsE98h99arUCUaYEBPvjmCZqeXtTGQiT0Yeh0iLEnGAfH0dUht9WKOViaxVrqsh+izP6oFdT0ouFvQjVQDFcl+mpeEcUdOpFoHg0JJy3c11gAvurWC8gzBPdtiSewge+BiFZA4AJUlAyZdkO7YFtBxiLmN4l6oTbCAJdv3OspEXBV8vYxoFEjJyMWACi5XM8QmQIoC3oqf+IkHD8SdUhWI1jcxhqk27jbLYY4yox5OIp8XavBwDYAr2Rb6Wc884TqFDh3qYjC3El2lk/AqyCRRnh7siTEuH3VB7Kaqyt8GQ/lzeN5SViIgrDCtM8hvbhCmFPpSH99dE1IS62QU3eflbvuA1SEeClfhqvC/i7YQgOFc7GRfmRyzsgTUAXLPcD8ND34Km5UzfowwTQMWAiu5h1CZ7aN6DhlIDy4iqkSoPlppfyXq5UWgl/baz8ATbywzL5mEAJ6JnGJ6xaCFwnFNkAnDzFnQZqIAPICL9OKyHzSsOEUrYHGHjQelWQEjGojkIZ8ji9sIB7w7xlMd3APfhNODKB51feEbINNvfm7b9oUONTI1dybZxzm9n2kmJgvcw5sF8kJhN3kemSjhZibMxV27jV75hATdrH15J6CroCWB+DOkVH+EOiCdyb6yMTbufK9guzqSbeuJK4hLOmnKIwcTQspZUClg2K7Mf0JtGTeQ/HqZpC7PNYxCzeU0mt5tbrlti1J0MdOQZ33QVJf/n7PbOsAbCO2d06CNQbtAyAdSQrNMXC0NWpnPmSCRoUFFlRJaeZ+Z4SOR6gQAqo/U4DoE5Sbb3AZx4vgZhyrFy6PbzhlkTxWCgrhcDezEZKldMgzVOrPSAsbAHowadGZDEuniZpVvfnPdGL+KZ00NGg1Vs1N40WVs1va07fSuDovh6mAjuCGmXjqCIULnVPsStWPWUq456n6IMmHXOn9vTIb0AV+ERrADpOHYglvFGNj3JJ8hVKSynUPqAclHrQNnkCyX6WtXTJ/GdiBA2HcX4/UA3GpNF70urARZWnYBv1wuaAUqU54MFwvl3KsEPVH8rq9rFPKR0dqm3aLUbZSRhkCUxKCYBicPVYuqQo0V93Aoqo+mkUJzRgqj6RqIVWw+n2kXts59IRMd/wVOYTaEhD1DnfGOmTGNus1E5edrHH/Y+UaerZUTEuEgoFEyTSAAD3IAwNUZ/nm/tKwfIr/2bG1XjYK1a4YhFg+BbjYpXxfvEHngADkXfSAeOQXULQGVY8O4nRqnxFYPZHtdm0DBPlLu/H96SoJ2wT05u1ye8xkVRGQmnwLzNiUdb7UC7sc0oQO1No54IgN2tFG0ZMmOoYlhgmV8+xFl0cL6eCq1lcSntZAd6Q+kZk0ls0fVD08fDVu8Kzem7zfET94w8YcJK41b5/DKVDevEFJPsliIBqUMj+mpnH5Ht6ccyltm8CnB/ZJWECv5StR6y2FqniG7V/26IMzRPd0+UMruS+naD0z7DCdStVfdu+wN7YKxb7YCtilZrWSNJKZG9fjkNx77fRbomr0j7W4w6Z/IVl9Icc8IPfApB+OF2PG66NK731jLUGYWb9HgEazE6l8b5tzCqZ7Z2heyMdgOE8V5pvT99gHP8y++9t0IoYnMJASKHDGM13KGwG8dhLjno6k4A1mXpfQO+N+1oNP1wCZqTLpJ61+jy5jCJb8sGP3NPC5dp2Wc09GKpX/WBq1CWj8906tTk+lB9ytk+A5ZHFhabqGin1lQRN4wmxNEd1CSuiy0k+hg5RORQJF4f8CMXsXxR3E1Dm6F+40ajj8hkCx2ARwO9rw1rnp/kspFw9Y6H71m8FsW9fbNsYt3bCM/g9P+cvNwcSHdwwa3yCAz3t9lUag/6sKdbcBqaqLy9BExuvW8eOcyv7uKMJFlKycAGdjCNCC0h1+mcJqbaf5lrIHJEhTOR5+scW2FzN9kZQZaMsgAbpmEiYy6pej/RnhPesKTP61hCKcR5ERR2f0xWT/JbZev3QBAZ7Z4DjWzlvxIVMVvqTS71FWaobdBnVmW+ZeFXiUUYJ+wJlf2hEGySkL6qtk0yNG8CL/AC9704eCnBepEB9scj9OrJX3kfdaChUHK2UV7F2dOeQuB9I5i9vANRw457YlljMHIeJaDbWe+TiaJ26riL3f1329f3Q2FucOurSIWWQ2jCJ52j6ZSSn/+sYAtocRfTp50EQ8tDUZjFOrVF8OEPWv5xrPf6G4kFNhxzFco+09JikmOpFjTjKWh27NQZiGqlrf5jvkkN+2szHUX8DgE3XbY7OTf5ldJP3zFOGogsH4rsJSstLjxZnSazmsMNQQsm0sjinT+eaNm7PG0j0NSNlGeQ4qPjasFM8y+RnBwGKcbSiNFr2PzsE6I8fFdYJ4IWnjWotZtBZtDqukcucDohIqXMoWhJF4eJcU6Ff9iDCw176pIzLKfh+WyJr7fZm5/tJvyC6nSPyxBT+dgdgUMOnMaz/fH7IZqehJvh2a2T6ZEhnNrqFRny3DkgMal0Z7sGS3Jw58rf1Tf1Uhsk31rItwgsotYpCHuucOO3f4TxC9gMEg9X6GM0AxUBhUa3l+hCXvXDSCSNTOiHxnUH2/MN+rNIWygUiPlmORqhYZ0tvGhJavnaPJTCCxggvqEsul7zhE/JVNAn9C7IVRwkvI/PFAYY7lEAGxpdeDQ+EHWlrM/glBLgb8+VTQmsDrkDsGcKUDFHUpOxbqlg3kJ6ej+y234ABf4gpjGJTr/NtpjBhmC3MarGDlAxpakIsaeoPBZiATv/rhJY6gyIneE80q0E0D3gXlbtZKVcXaYS9rQgRU8B5HIlYFqUfQsbm3oeAkUDBE++iIe0zqrQEPhCA86AsBvWFdEMgzgV0nBnV0bARuDOZhbZa59eN0Ar7ZzsrpNoV8gd9ZJlv5TwyuSu6DMJxAu8nZno/XBFGEm2e+MWiJZYFYfmg4XE/5rMzFLbZ9XiIYp92cBmdYmkwDJN8Pq+TU3T00JmGEbcduvzw+P/a4tY8VM65gdFAIpPNMcLoq6HbY+03j2qA+r+psSEyIUWU3Hv/We8dR3+seisFnkWi0cfgp1NXhh7Aa3QLpIz0wjlGSqdxQIRMioFv7uduNcltFYnu0HLS4MQTTgg2qXkRoc/PQZ5PaZYXQiJlS2H/1EaLUD4oPVGPNTex/ED6/k32yHB+SB6Dwdj80C+uhfT60+lI5NXc8moC9WB7oR5LAfcZRIi1cxTimeIpdJ98kJQF0PjHQhAQ5clWTFamAOqVG8wzCu7RadNvQqM1Mu5rTRqsSgMwVJJnx6RWra+kuT3YIIsALStrOFb9MFInjnh+ZOQGyi8Y7979auPp/EF+x0KKmAaIByCjiQePNoeo4IvljmG6Th6MrmVjtiBgC7RyKnHCNcLKw7x5UeLzcZDhSGcE8NhqXgCfC8DvAZchyih6JxiQLAHp7plvSyAdNQkcJhIm3PLAiHLiqDOuGLpbPaHIGzJfN2k7zgfWBo2R1fX6FHEQSDebBhhMqNVbH8/atmoReisrOgCuVeLgc4ZLesQ5obNElBQbQFBQRpYTFADoNRmwgMF4zGesJb+Skf5bqYg6KOomQZcNLWbnNBpFtrrdwwJKf4tC8133rLcwPbmheDZHfjnJIOz96sr8FKcIR35n5yA++nosoJR2U77fRxwfKlSEtiUxgzh/rhVEk813AY57CS4w/5l4iBxyUQFpWP+ILPgWOHpMiSWTZ5M6rg3WuWIKqG2GBAFIAa81WmDiCRd6g2P/NAAaPEySnz2AffbGZ/PuMlKx+CYQDs/iV3US5w73T8PFVWLcMMWjBY12DM/L2GaGGdxNQXVLmMEhVKi5oyW3eHF1ZzjMlozYk6g7Jk2TEAP5h72HUe+/H4cP+sKY8IJJL2pQT7T/kmIA5UoLZraDBPXY8oFEnRTy01TbC0PYGV++2L0oceQypwwEquHXJSUNPuU+KeChw3qQUIwmbCTULskc+m1FtHQDJxC7Rw5l/Jf/cirjF7/nAHAr91yKyD6ECzge6PiL3fd0aMW+UF0fdMxqd5h5Xyauxv7+rKpEq8oQKlQyouG6u5XKaGg66ZRUgnokQtJKJm8G2/aDkg23ZBXSwV70MAONVIExLPZGWV/d1TW4OatRa4FjL7/F9+2L7GH+N/4NusigrwXcoEqYqCVSTLlxi6LBtvew+9YrLNxfo773YTuhCh1eSGemgpjQVEGN6mq8SvDpffNaNuQHRIMA7oAPuTO/b0v6RgHy6AEG3ZQ2uyF3F/f7B97cPwNLZyFNoOVovg1sUQuM9/uJ2HWiYJsKc6vAyJgo50PFK41+5MXKQYrNCATVspR+lMxyOI6coxpqbLaoRVF4deS3rVy7bTxVxUm7qriOr2jiExdDj3/htp0zKpaQEeTZrIWtJ6p3QBihnzvMMLRbWSHr5CpDNUDeiFJ9kXeSJ7lEo/2R3XBlxSBzv5SoSTKlFAH2MWNofhf4L5qwD+rGgp2FI7/SquPiw2+x9fi8ofZeKbbKjnXuNLejn6mlDlDb4L1VKIea5lxExFFlj2Fo1b4Huozuk1mTiQ9WEYKTNYoE8A+qXFekEXF0Ho300UnSta4RBoO1swiEekYYNJf689Z4eruKWefoYM5mc2OIpqYb1shI+Eb5b82V4h6iDGI+JFb3XooGueQA5Mk9wrjKwSD+k0KbF7aA5L/wejFYxcMvZ3DH1urC+xog3W/1/2oyySIrT6iPRqFMFRtbwhgVc8rAUVkvgQUC6e26yaroEXGhIS5/edUT17dmc2sTePHCnsxLlhfx7KHzu7VXq0zH02j6PVqk5OW172tQJ72Lg4BDXZeKr8mlDAgLIKoGw+RdarEVEYMUqcASNY0vZsJmnXeazGFbJuXSkjEsEf+B5lHhYopRgSFYVD7l2/rmh+sLB+GxSXG8tBobHAjncV5gjGn6o6l4dBe6/85SkRIBBKRQtmCi/kHgh+uzVQczrsAMjd5OVdq2E3r6+cbfA88Oyqp8Q0Qv0Cq9nQptRq4xmfUoy1zr88LmKmH0HFUWdV+HL0aby3yD6BHAanRufB2bz0puq+G56TtfHBiWIVdt/Ggs1oQrLFV5pVJIIheyapbxVMeL6cHg7fGHR7bYJDfaKdZHVuEWasDvkFRR7KY1g4RXDzDOg57exUYPVTnRjk6DvmG3L4Y+ory30leorypJmM4Wf6EUAB7wWOX34s1VcCtB6L6UuDzRSD9hLAWUFdBMUzZywBu3jEuHqVyVXBaov6qr2vfYRN8Xdk91XrcUnOlRqCi6tSA7HLqrAG8izlmvOsogVF8i2kaSTJDAnuo8rVTq8G4K/ZjxwAkYmtw/eYBtI7WjJYzq6921FWhIhV7TUmuOxmgezAAkpGPAWfFofuSTQMgCx/1m2GUaU+WSlbPwP+fLJiVeVrwLaUpzTJWeeekRBvK7JIc5T854+ZEQQP8pr2I1VVkqPHHKX/lDHSD1MCeoWIpoj1gnTqFYwFk6OR85WMSqvGK1uT6ppX7rxo6eZHb2gspPWQ+kIfNGPSnDGNdmC2wYJ8oyhVzNaNOCx1RUxpTteGoGnC50456n3aC7xs+ugeGJpLR5QaofOCf2qjAKzmZYnDnvF/1WWW0nKZMFo1Lf3MT+PeO8zirLRZMzOyu8/VPQ7WYzpzEUrLYHmUvPFBkmrIaHkIQxxR4xJ1oOahd5jLZ9kOoHThbs5z66lR7WUp1ocp8cpPculdPKkRdYgrMRRqaaIVCDp4Cw+JbjbjaEj8yIQEIcjKHN0Tp2muBYroVGXXji14U5Zt8FTzbkqHMp4byJRc0FcF2L+rjRslgumUaNi1PMZ7xVJi3c8IhbyTT2sS9X1NdtwuPjX3EcXeiJhrIZLW3yN6NhyYhVsOch4AuRG6yJMjZlHW46PULXjuPtgYnsjAK5wMzlIU7CIapAZuNGaCWbXgseFqngcRjFa6ZbHnHR4pMgVVyjheGcYeqZ7lv+yjVhKusjsYgGsfEg91ioNKbsFNQCJ7/Pw06iSqz92tvwwxUyr2fECoqDSLUmJgUV/TSeWw00hlsD5hD73UzkL3ACWJ0tsKT0QnhP8WgCmUGVbAUK9wvhN9smcoZwEbCGCkHQzor941LOpfkJdM32c3EuzozmR/lHP4v/MfcO/2lSbN+Vfe0xUMN9JcU0BO32/PCOJ5C2mYgsKKqawVF2UMFgPp8fn6GzMTOtyzIhWeXcJUMXVBLpFaJq6lEI9cYltaBcMtjtgQsO/26ZZOjLdPVjhLYDxvp8YYFofLgAkjmbQhsQcDa38qBcSli22uYA0iTlg+4Pws5FB2vKDFgK3r4Bv2YpwaBwQ5wIk3TxH5JhMw9SPqUAXGpjQ9GG6hC4eGTGR/3Woh4Xwkas4DiLhdHMEQEtUuZo5e4USnZj1k6dFsu8X2cRtbX2aK7Wo7BXpvCN5YdLFAIykmyBw0YiRus7lUx6lR/mafZ1ekJal9iThy7Q0H1SdCIJqthItA4aedoB45I2UJ4NpV2YGOECTc8Iz9CcYZ8g4H62rryPso2tKbEfAxkIZ27Lno2U9jcONseDH+vSz6Y26JbBsIwyYL8KVSg/OefVfOQJVqgWcTyd3su2ZG1quF1SpdWE+eNlMKaN9b9SVQJidb1OS7TSH82J9mf/GNn92SxUnLEkdFJRRPwwGdzRgBa+V4tw7rqmVWXWJdUnyj8vgxkgJ0Xa0Y/jMB72C2aF3LveEPOJpIPQn3bMgqwBGc3CslNoSDEdqgt8n3Y+4ACfZEnZDTrOBEB+8cadmvk8Ci6xW4ek/KrOMHIaQIWyNVMyx7m7RSbIYuokoTetUAtcUpWnTMrNFLntX6FAXlBvJhPls8gi5DgKtmMC5rgECl0X4tyjhC7U9FVkogMpBH1/pEcd+l334uTDgqAGzK13yVFn0gHaXbrGWU+0Shi2K/kx7sTmXEzNjg0usmC9Kvj0nSWuqf+E4HBunQ8wIF0OW/gE9glOykYo3rfStrcYRlcfSs5FRpUap9CcIiCikzNLd4k4LOR69veGmSOds+ZFNz4ShbftUfnw8wvM27bPzeV6H8zE+pIqO1Gz8mzFcqhw6DANr8VL6Lh67tI8lAPMlmNOnI5lOpCUYXpvI/FarqxN2bHMsQdgG6/JjL1Py+D7js6M5WdrrkZ2ovqIHEQvqUlpa6XLumFpayUgXScAr+V5jFa7L4vzEitaOTIO8QR5lKyzNrATn9AsmkC0bRKP1j5YB7a9SP66YtWJL4dbDrdsL+PF57kAZooIyheTMhwOcMBayIGj+bsaNOW87s0DZlzqrslkFa2c7fPaAMtV3ncWpztjTzi97c8Odfa12wtx3UyzMicoZiUxt7DF5tD7bxkfLoyKfdCapQNk4EzvbN0FVO0JGePRaN5/dODIBVJmGhN8qHDlDBRfG2mXefC4eahBFojRskKPUpXa1ArYqHIdaHN5QO4KQ4BDzQwGVk0KmDKAMAYQsTDclQTjfyTIAHhIDWog8s5SUVLHHY0Wo4AzqwTpgyHxABhQP1QAvoNG2+BFjhDhAMxGoXRg9/1WpwEgjvJfjMPYC9gyA9cXzGD1XGtPA0AnONL9jhWI5VlnHYsGdTN2Feq5HXXWZYhQsCslwhLAVDhVU5bdUMXjFUnNjeOpGB530QdqbdDaj6UlPExmeBQkc40IPwlwkg5SKz4HH4qyc8b2nF0qyXuSn5SKVqPxWFFJfkKEqkurmKBsTI2woYiISrv3SGZL4+MU8mZvI6LjzzfBvtjuYXQ67SdRSyU8RnrHS01sKyR2fITg1knC+II82444iVk9UeGDxiTJz1XAfCh8bG0Hw9vcmMJi2MPVs1jq6LqdLPocnn06PYd19D65mB2a7LhTxN6V6eMZwKFoyQm0UY3wXijyjoifO/BlIKxK6GiFqjpVeEfAKAeR/WwkoaZH4ZzeO0SUMEtcxM5gswrFAOIIh9CVDlRaAoaHqWTZLt7g9j5pa6v2w8MfYMUMIAk3v4jSATueDk9U3MLdUH0/qjh1ywHEOLOUohk+FuS9js5qHTsIyRcsODsq7X8kovdbHWzgbBOftCoVdMkxnZN1uied4oK7Brc60QzHQuMlIeq2eazCgCDmSTcx8NGdVO+0+7T1jxQbMkWp5CNjT2PqgaQ0JfQzgeG24P7p/asg0Lp8anDZYjPJ88ddRxe7ExgNs7YI3B34Fhat+fdW2KHjB7SaW81dKXZAhRs3rOaCAlc2jJvuKnTBETKpGW67xwbbnLt09ipyNfzAYlsJ6yGQNnnHgHpvtfx2J7rAaqi/2uMc5XRptsyNFJOhgQb5VebV/SD7io2MejwNLCJRQGBgmc1vNHVAdcBtL6Du13XggvEgZ34I9veqmrgVYWg09zw2hlHuIKbSeGxIZ7Fwz6qjmsx2BiwVJ9rJiopl7cfnE6iFIUBY0dKR6WVaTxUB8QOaLbIu2GINk27++FwOtgVap0bMzCVI8KJK7eTkTBmwL0Jfeby1y1vrpfKF2UeqI0S7ocPrHO4m3kWgtu/YFGYnGIdoOjicp52CNi7P7EzZMjMmG3bjynaGg7xz4MrxKZlQAm5GJRxUlHqE9LFsNQkCByxqxGEG+j2y+aHBnyAI8qQDw4uBJrm4aCWQ33C5no5vsfgzdiYCCsoR7gLwHScxgLAmPxOTJlDSQail9rcC+0n14FIdo0qrSmoyPNBOox7Wv+zIS7qL6DNn9dz5e7Hjn3bjchqBH/sKnNy7dg/WKy40/rrTKywLwjbftwovOqUgClosgqFpHeCAOQlillefGI+/Sf6XUi2CH+ynjHFUf+8ik9q0O93ebMcdkQ9HsU7NEOQ+9xFhvzPRM9E90fvwHPhH2IiTk2BvOvH2ys/qW9z6fwTy06bwMJitnR8HXp3V4pJ2GcbDzmRWuT6J/sgHV98j4v8ATmQ2sLrhCR15j+YCfLhaJIU7YkyRrJn6ZcGF8aZ3oCXTG+IeJiIzCyjFiHOZrDkVLOoc/BiLdUUpskucvq5Fzmlv6qkS6I3HhL6vryG6XViEfsyvqsxA+Mq208JOGGbbk09+0OkFR/YvAeCpChuIC95zYVW+ExMRJLF2Ix0U2W6A2Lun5+Rnf/PMxl82gO8r/y2EyvTXpHLefzU/7wYbCuogUYtisx9L7PoDVapgg/emvB7EOXwXrI2U67GzXF/I27qKEkCF7mCDMsKGap9Rwwxh12yrR1XGlexnIlsHSPYXyOp7jokuht6TNDnijSUVgZykbs4IluMUUnWd7vQlkf3yBCqgTP30Q8cEVQ58PuubMGPjIjaDW23AR4xFs0WiAGByugzWDXx+VTxRIdm5f1B2XEmPUPD0lll6BWeN/4NGWRPZouiP1KBC+oW+a7reSgAqRL9MWWV436LOQh67IXPTTYsSHq1uljwXMkFIB1fUaX5ym0Kc1YUfOtUaCUr6gbvIBcqduJicG89qt1Lm1pzdC5Vl7TAWUAlSOdxtuIAQf5gD+BMm6MES83MeAB8Bl8z6yo1U4vd84IxJaZTXqWTv+aYN9lrBxjyklm0PwML/ulXg7Zv0WWvVwJN9WzqxagM6Kk12OTA+OYJIrXOHYtxOklzBtrqq1AoH4qvokdysJ60/+v/zAMmJGLqWuFn3wgB2G9V/Uh/m32M3XT9Qf7vwx8nZiyJ+WNqcsi8VbsotHVSENJC1DaY4XgL2U8ddj+8H2PGq9v319qaup+9XmUHbblm0paZJ82T+AsJhY4fwjpUtmTmUouTJFm/kl/il2ht9wIFCI7z6EHNX3Gia5/BQK0yRimbJujfZeUDzQusaqDMggRTo5DKIjsZDh3HqK8K5eHwCMK2ee1FdxNnbZxLjbT3/FVj5suDMPhoLGSg+PaeRqmAn6ifao66xcxTxUQG9nCAvmuFTxcL+2dNBwJ6yaBUZPMy0tePe9scNtOIRrj6RquPqJ7W5v+1U76/yQkEF7teG4cDGOj5sWbOdq4OHWlfX2kr+q8dq6T9GquFSFbZbzBBvmArbfp+gn5l6T7Ai/9bOAITxxhn8b1jTQPgdFtvLbKcIhLuIUvkt7pHNFZNLlmrI1j//4iP0TYSomqi/PZ4EIXlvLa99PTKWZ+FkhPFup80IFmpoEybwX0AEfTYho5gmbmIt40QOkxA8fJD+tVl13N4O98sgaH3eZInMJMmI5U+UJ8b0/z5Zo5gtnGpHdl9SQK1xKg5CpBISxYgbnC+02vb4D2VRICQ+rV2l56BFRWQl2jNqYZG/xAH2RYPQmp3F6sM2OO1fnwISvKa1DEhrVfH82JyhEFfAkjLuHVWFjmWba6O7EewTCA35G1Lk+QEsTUmk7hO/9IsYhVSmV9Ri+JwmhAuNVWqaq0YRe+4RoXN9iEuHs0jCWpmm6IM4EO/Mo3So5iM6uGxTDds5WLEEfa76zFyEcr6Iqx4mV9VVO+h568MkU9CXoOLE8YnhF30GY0sdKCoczpvQxCsKTgUQ6qPx8EgWNJIZbFxXizVNcVTTKbqovZFfW0FvdLmniEVM4/5/QrpYXAFbVCEEu0J0pfCGk1vK4jHal8pCM82+shClbWhRbP4ziOiGl66/I4jV3uJJEeu6IK/Df9ygqOtovnmMaSaICNfWeKMgEiKtYKJZ2WZZQZgQVYEdObRP9sEmz1UVBt48Wqv6AJYHqDIvJYk8v1OEXhvJlKo2i+ZfT71l+S4TiDJLNhydJURrLQQlwHNZMKakMwxVi24V61JyvW0p+037zm2yCCPGqJU8NK6NFAKy+enGJpLDC4DHCWAMEEBiApYIRmtgbc7cK8t0LZP10wjlQRqlZrvj+NMJMSUHMwu41YQUAVUX+H4KGj9ZLutUKP9yWk5PIlkc8nRQrOt3jrX5zi6KDcVEv32++o6D0QQwCEsn68NEum5DvwR8kvgHXTlcZdDCkBCwWRPZA5PdXnDG1Y6dT98lu+O+Z4NejVSMWhI54GOCZT7vw3EBjKXl8Q2p7w6g7SX8ZnDMrp8IzRDcQGNxGkzP14FRvxVJnDamGL0a1sEIFsdieRLPQU++q7RwICGpdvYG/fEDWDmeCbCSJGjmmtis6Ma409c+kJGwiCKOLsL12hOX6b3EaU9Z6C32lk8GdFj2YjQuJVKrk3Uam+HDBVous5xZJYhciFGWG/R10+oxfEHerfWDLGFXg2TfPQl9DhYbzpvnyjl4nWxiBMpipIyJackA5h8VPqkiuEJZf0woD/qeFnJ7k6DGDJAhcNwIsy2SSiDOsrHJya8HOZJIYVFNpY15i4yiNMxvqLnFE1ppEEJPAoFfhPnTpmS15GYqqf4Yq47WHhRB3Yi+wfpBTCexINpsDWc9Vwj4E4VN1y3UVz7s9cvrWfSVepMo+hgj/UDHVLTw1qPcE+OUU+1IvUWMNl5bZUE2xGtyLl8ZWxE9hQC8ssihqH0uwUFC7/vTzqBkbfjx6fYrpdfn14cfj3SnnpubC3bNQXsJeot4YUO9urxJdrfQ/CrMaA8Zd+e97v8W6y/DRQlY4FOh3OHumblV29Hm+IZ7pZV7GeXh6fO10N0kIh9e95w/E/9kYKQKRHlCPNvqaBXFTJ3c4TcVyh2EjwTHxmABGNDfkEjrU9lpSUHUYiJP2Nt6fNKvG3X7ppsODhgcQfRW1TmQigS0EgYb+iIG6z/NPL4COclYWIDVRXDFEWpgaYECwggrpC2KgnAdaslISl5KLZa+vdp73X+OV7OFqM+pjueu9XG7fIyh3/XSPidzk1L3r44R6NK7wcJ+XJdmYfr1kvLLQSdNC8XvK79vgAU40yCLy1IFyY9v4qgETv0qlP61A6vIs5yY1ahNFp2wfDFwAlLxntFWt6qCD+RRnNO/fGHnSN32HfVSr4o1Z1dTID4oz+7r5XpgOUYB2T4oWHFUxfZYxc11uRCORyixMI7vKR/UyTM0AIglNvYAzQKb+HQW76Z2yYPnMd4kCowCuxjpQHcfpnmL52IAx95ytVEv5//LlV9OjYMtvXmFOOCmBFisc9xRdAulCODb8T0/z3JgqnnqtHwAaU/7bD0eKoBuQzei1OyXfB81j+4wOi/egyoHoRunYwD6A3jnVaFBOfo0Ds3yph7JwHVP9/bwku0xxwqsXZgRWNogv6r5vKOdS916kmgc6LDQ+mBYuTKuQxAwyHtQz6SAGTtwIk2Qc/tz+qBUxI9Jr/taZPYR4yxNmXGy6YXU2XLh5+68Uw7o0rhKjxfD4V1ROLxL2lC+MbRTCXZ1dEoLiSzllw+ghs2HBSVthh8hNXeCc+3ZEnvuTrtPf5ufwdR+AXnzq3UeOyy03jhcHKsmzWGiP2rONY0VgUNaVEvG/N0bhIvv1bgPiKVQO3Ls0usuYCOtB1WUSsAchHQQTk2I7UoYsuGploBQeKIWmhXG1WJFMc24fONjOn85KxjFlLh80dgtBhv0QiK56iDnJyCdnlcSYGb6UWJImqbQWuGO1W2Z4XZSAkLRtd83wZvfpKYBGUJ3AGJ7spEbwPO2sFnjMqlUhHp9FZMPic7lgJ72/sWbOATLXUb8wVWYJw4XZV5M1DbskjvUdu+qIluO/qdsk+TrbF16zc69gWWf6/hABsERZndhgw6eACxIGTycQS7a9Ew5jOAHGHzQYcuWj+8u9/cjMfqhf46hisR2xqoeLO1CZV1VY+LDSaLojJc5yXwVbvMYMcA8CIscca+CYTmvvXyFvrTX6u7iLjD5VUClfgq8Al8ubHV3ceePWyhiIW2UquAPImGK22ZmHbe7h/iWMHo46hLC2JrXh9kDCH5BRBwS74y8tycMd+zvCVMci16R3kKfF96zzx+9vAIcJiVCPKBCDr7Uc3eDqwHkxgagAz33NAC6hgyCvmjuwJAV8ztii3O5AYZfX/JZoisZ/qF4td8ub+R2zI0kbdIS1GvejepoScGs7V5P1RD1ZJU0JERoi/nrweld1YfaAP8IF/Up3y/v5eGbt9Se/PHuTYOPnthgU5xd46ejr1PYWrLO4VSelbBjVeQxB5vyh9zn8FKO5Gi+0OhDyeSbC3fdsFGPo+ywqW3Ww4kDv3VCom3Y18plV11sZsu0dPuGswyoDQF4nKFm0Cy53tv2+ndXcb/JZ9CINPy04x+uyeGuB+2lVP8OJFsg8h4FRKvYHYHl0hpYD0VFegsd3nYNL7Ulzrc5m8kPrkhVTUE5C/8yQXTuZWBICE6Fbp8g6r4iR0yuB6K9zr5vrwReYOoCaVLWTp86KG4aWOFEdo7hO93sCIfJla7vrIC8wBQRrd5mwFag47us79GwAgrPfTwdmMNFeUfQeH5So1Vgk0M5DAsGoSk0FLhsJ/XF0lcX7447xSN5+Pn00s4PBD/Sl2pbFznqL0Y166wybWbKy1+s7zs1I6+oRvTf0tBxpWZzkn4cGLNezhTnGLJnJ2iogZ1qHA7e3uTf2sMlWwfHh784XJRXsu/jMfEx7tx7ViCeU3GzrjL0AFazslaqRo/Qatkb8IHiPfHu47Ad3wiqvI494lke8TAH0lWkfC9ytdV6PfpnVJJ6ktD9JLsH845XQGX24sUmXyj6gSFc9kwikQ6V+vhfr949YvKgdEKCZZTWAzIjLGZNToY3lnTZJWzmV32SYlP82haTbsU5xSZF1nac+RCmvTwP3qDb6hGOOQrFaQ7cBmFm7FDnGFl2ACmLX0j6QSfWD47WsG0KQubHAt9JvrsJKDag+gPRsQpFYq4QucRAA6mP95Sf9RfTqXA7VrSeBg/cfzEfd/weIl45yeqmVjNVUAY+ENiUyhpbEppm9YbVF6ljKQkSbKOUfdxPCqR0vwG5amMMN9XscvyKb3LRSxE8VN+kjmH62/s/GplOfxCVmpRhFDemyqTuJtkvmhDZmr2QjIV8W8sX/Ci1Jelsr6j9RX6JEihAxROfuG9zm7jgY0YkajA8ANj48JkdZ4QQ/EV//JcdmlsgWCF0fHFU1eHuGSGTw8fxzubYySuRo637fJmpId6imVh4Dul0Xxkw+XRWo5FNLzpbw7TipeuS/iV/iVqzcUJrKcVNHK10tufaJ9do5m5+RvRWfUR0fok5Hha50OBURRedWObHT6qw1BjqnJQIlYu5MhvFQeAY23jMIx4HSzzmgOOgxjWr3ilj8ODrS9D7g6HxgnvJ2hGBteRTbH/7sVYpKnx1EcA+DmwJfe8zzyvlPI8fOLhMvM7fykrCAXXCATmd5cr5zymxK9t3zm0T2LopDGkPI71130tCDoAe018dbCUzpV8m290WI67TwnrfpaBGFUwwFAkyT7H3xG7WEQobVs/lMsbMzz3aoukkFOgemQIVKTqGGOba7EF6fjEHwQoTOU6PvYNc4vxw6lLcdweccmHD/EKxIiPKj8J06UwybFTQ1ltvqx2CqMj06uxuW82a8ViKUfJB31csKMOCq2SjDJ/Z5EHsLs+2bN+k5+pMvn7FedIwOAYoJzXV+/7U/NSwlchc1RiNREtHNOOF3D8uyk+wVKTpvM36vOrq0PUlv/SRmbcy5KIY3/drDL5JUJWvn33LVXbL40mFjIwivr2FaKHDlZFY1apOb+GIMfjmt7tZCoiOCjufSx9uZU/zIbDfe/LO6lLu9d0judEFDsooN2jb0437G6WHd0tCy1hwvnMStPzeWtaHxSCIvgjT40S3/BML47tivCg3anAOFE5WakeID9iCgrGBBlTksuMSm6LTp4icidpU4ZBpnhqYrVzIsLUzua0lBUzzExgDImsy0qKF2oiUuw6MbcOwWnKb+tZh/uKWjqga6EJv59C1DcO04Dauf2MK+lscYbwn1FTqyqDbMAiUqtBChYe7hT2iLwmt3s5hAKwk5OWOy+hvQV1F9/SW8Kejk9+MxQTorcuH3gXI1lmFZJx8Ac4X0u6F6QMhXqnEQekVviAWK3wBaykqAEEdw1SuugAdYuCEHJRqYxbVZPNUE9g8IRekR8z0mlySHqmTSOOwt21ex8D38HBgvH5l84zv2aLnhNY7st55Ch10borHIJZOuuYg1gTnQCPUsUlMQq004Qu2owdInYCvrtnh2GvUJ6zZeDJV9igdXCVh3Bp5A9QbaL1Gnutdgh0VY7S4G1B7EjNyycpOdGqGmbbNPeGVsmxcS8kq1q6BxWukRwBTFiWg+hjgyjX+mB4BTOmTHBummeG6JBWKaMQJHP9xdJQtzLPSMIK2eoFRsxKAH4N+eyT5skyuIMt8AQdbXOcgrA9xugiqLyi8VMlH3ItsZa0rArKdLHi7lEO0g5cq6x7cdiIx+ComcliJA3E4iSzreVhxFtloGDYchPqFVJ3UbXlH8vV3zIJujcFiX7Otw5RWJMMTh9f4+CVbuVWHxIye1lqoqR6muCK0bglwMPhJW03aB6XRNC9Caj961DJt2syzZbIj+RP9+yTX2jsneeA1B7r/UFFd0Nq4qMOiP2QF+t/b+VJWyoZRZV0d8OfiCI/bEMgcgIZAx7G81nq3kt/V53NoO8BhdwVEqLbL92pyforF3ahaX5bh3pv2dFgf25ypJ0dWQKMsM0sfCLq/U13ER21xsdBcLzhtPaBs9P+QNJjfscNTJ8gDo2qQwzbUbLhmwza+cjXQCUlrGIsVII60OtOmbsq1YXrxBFJrotDiJbDJMKBivZFTXHHN+YeL2HSzffjnMccpHJT4whVizD9hIbwagSPzxT4Nyn/IHUMSUQ/sCoo0ieaMNcOH0ulIm5f7eBTgFoG5C3PMgIw7hhy5dkL1n7uBgyRkcW2sBBfcx2z4UeJE/Za+zhz3EiRIrLkID+4hTSHSQYFuHVyDYg3HOjCNjNOI4wzhPdijRkGtFNkoPWcLgqUANyM2OA2Pbjt5co05nA0ATReWW1IC085Dj6+L7i9xzxeUP1yVbhKQhBAn6bOFuHmOXe8cKev+jDY9Bo7byXfHiKwdhC1QXoQ6LqiFjV87Ic/3CljDWoEteGuzPC/6AmbIbQ7KK7ynejfyTokUJjeVKNAL6Uy14lXQKJop7tYdySAu7wML0EdWA7fzGP5mic5TNFTjmrsAGTaOVadL74fdFB1TCUh2y/To5BTJQzuWTvTdFKhJtmCZVhBlpUOjQGs1fZCw4IWBGhmlvKWsUL7yD5wkp9h/clGdYN592+M97VoiZ+H1YOE62Vy7ZEhFM4BJrZjDqjgje29swXPd2VDlejd3CUeCpmNdi8wQNVNcFxjD64ofaTzZVPRh82yyBi53cS+4NLJq7OGpU4ZUixVBzIzAj7VsS+b5cZOn98ftPC71c+Kx9pUqzp/3OMaain4tFxcv+/33qM19LPkMfv/OTBDDO/uDAH9ARZpeJKwReUBxwPYXx3ofbR5NGkAFt976AKs9Wbiy9uRSMnjyEbK2Zynapfke4GVV5RcFsh0Odg8qLv2xXV385xV9Qefhu8DcTnEXmimI1o4ZPvvydergaWdWcW1tzpUeRMlCv01dCEmDiYaxj1tQvYKJCok6IdBctLa5XL10+A+gQr5/OO2KTgvHJ+F3w/JL9Qu0a1njElxJVXgzK1orXSes0rhakFHP8oK2C261nDsTiALuCLo4avykuBkMx4QzpGlgtIjzCFMXhWxI1PBhT/KcaT5LwFz9YqTK9tbnuB2U1FaY/nJ1dg0UThFmfJLUkG3SyxVoUAjrL5RmA4zElppDiDV9Q2Co0OSM6K23ffGYIfhaEGrZa+iTY9KN/xQYGvUq1jKdX7eoblJtBTP2KKFp0o6d2cNJd5fzsvcQdjQV9/GLZ4zCdwuPyaoU32LBWTQhTRZ8+iuGoAzKhVM1tw2MoD5zf4x5ql0E3J6aULhC8NQ/GZooz4R6fA5PpcfsrxByGKc2nVMXUwHUmAvhs0kr7kGU6QT2lRP2r8JNI/pAMJsDw81XNJqQOZRI0V4H5Fjcc4zLTVZtytMfF6bChVg3kILIyJakQr06XrdwYqyfpFBrvTHrsAIDh8ELs6mZTvNNFfxRAvnz+HDqRucTB6YyylRLVYgFDjOt0NMIllIi5UyEEIWP5xW/j7RiH+qZjFNEWvoCiyA2w9lIseiMzisyObBH2ppURL9auW0hmmYFgzinZdiGeNjT4BkmMkywLE0tv0Qu96KQPVqZU7Giir3K8iaVejG/CpZOkGIYNs8hoy4aRT9+c0TDQvmQLzPjMTcy9PtAywWPRCX9lcML3J5uBll6JzvXzZpW+ARXnmFvMg5JLVBqFx+ksEOCS3rEKaWdGUzYc7lzYnqpzb4wD+bsLZPCiMEi9ey1VgfZ7twhZt/aje2NNiRSiWyjy4QBFWktrYr85JFwdPyY4oEWliUDDEknpVn7iAPOAs7+sWUlW3Eu5R+5CirwejT6kiO3cXCGn3agkTHzc1SP25yEp0ZPCJbuDLcFaHE1kzgVLeFDK0AmaSlEsLBHGHEYLOnqYrGd6/B2A5jvkz9GvcmcMOlY5q+bT6YcNj0OBwKrQfB1fHzb/j8RseMumdWe/dsdihuynyzeLJBSAPwMj73b6g3W+uRP6IeXUGAThGvUKWPV9dek/Stzg9jBpoOUu3NR61T4VU09HOCVyPQKwhatlIjGibdAG64yeLdAvNv7KkGzlugUFEelerd5VkX6LzKHEb7WKbykFMLz4v9LAkchdMQkVrQgChs6I4QAJqa3mZGC7CgazReEMF8dKlT601GcMB3ElEKyjJ40Xlf2F46IzW4qiBjTRbPjKIbCaqk9kAxasHslTKnhRVsbwFcgbk0iINOhoVwjlkbEUV6R0DLimAkOEitBcAtMEopViSEXGldzHuf7K4zSYLM3TGJVuIBILtiiOOH9sIZPVx4DWxqqwm3tZ9lOgWJ43fVWnpN//s4mn+wWbD9vHJiQebYDCpSY4Wyaz7js+GRCkE9yWg0EaxxBym+lo1WPRDHv1b943jn0JCMcNeZMdQdtKkEpK8NiZ7yqRKcLlvNbzlCTD++/2bhbwainlm9jHBYT/7oARrT4oHxckgA9hTYKTCYX3L9Vadg1t8LfV6N19vsKDodSgZ8+if579G12SwnMij0CqIjtZQcMKbUSipj7aPYv47+zPf+pNtErza0vs8Z/LQA0gbz7Y0VuJXdrWqrR/7JOb/GW1EfH8vC9bKpZ1Z+MDv9pZ/BniKZviEWxFi7oRvXj6mVHAHmCk6wy9mXasMKKxSVNo6kF87c5VKuBHpby6oBC7iP74aEPjte4fJaqbe2BFhhj7Fs0vL9/FrVX3t0NuHW4fyz73UiiMeWnmqsfy3S+weHtGSX9Ahwx3hPo3obYHtNujr4iMNtOCTRkYXHOvDaDjnPgBgoKEIfnmU6laDHJA91VF1/LHmRQFoIF+z+xu+BwfRjz0eCzHJ2Yq2a+9MlQE9/GWlvH2Pr21+6inbtCMySmwmL+T3Z0GjX9ojoBque9MaEvlUJ7zI0r9PLJMiW5EkuqOLlJGBthHY3YbSL/ZE4T1GhnzLhwA37aPonY4Ek9g7cc8nxTIId+eYUArHKwbZs40512ve4v+btfh6xrqj9tmPTUCLXap/EVVv3O30Z/xHW7dQOsSr72rFVO3EvHqXNtf+M/6TjXqXDFn7ziXreZmtb1LhTH3EM0pt/5W+KFC/zW1OGwb0z28Ik6vONc3UoVWPCBUs+n0s0ZHvS2+x2MN3/I7ffjHYbyx9Ll6IseAir+tpPDm+zWZ8JvUXPmTk1egQLl58RW/pB00e5dMEVH4RhYvp0tKbUDrPcSGqsKk39aW/hEpfytKQVGmGkP9tfqhs/uJ39ZFyhmkED161KVXhT5qbEh3cbV8QTcYl+CT1NcZwhq68Oz3fDF0Yc7kmKcwlq9eSXnWha4v12YXy1jzU6QqZzZbTESuFWYrZCww2Klx2+r34yjowqskqTv8K2DyNYtNTaszvP1ebTgx2h+RSaXvz21xDKv+1OTptqS6OfoezVb12oiDc3FTIACpfjTC9eqKX7kyFYm8eqi1WFl+44ZmQPTU2/zdnYQRQcY1Nn7siFNlUmM3qVlbnRDnbB334QvZdem8y5rIPWoav/L3C8ckxHBafJYBR7vLNJvzov+rhyMV0e81h/8jWe+kQe+kT6wc/DxmQm9lkSZ5ZfLN+9eBDacOtCHktpvsAHvMdXxc93Vl/WjRtRfZeN5hAOW39dOkjdJ4Rt86u8hT/UsScuHa4/jsxJiqODB6ef+mk9qB5ZwtDp+ODBtKhoLYB+KvA2UaMMcpRVzeQeyR8Zcwm8vK88VD7m+4xhpzcf3iFw6NFntNP0KaT+I1PUsHDTomU14ep7aSTz4JAjtvvPjWYgR3Qw6Hrm4knXGl0W8STZn4fOdP3Aap4HgdqLt9l2+8Mt+U52Yy9NIhIoWpWk02ySyq61XXWtwqOqo9rXqavKbrnV/OnUs9tAwpM8+DfHf29GWSdWOzwk+VV1n7Z+q+Q/mzTcy4WYBG9qJ6ex+czepnguyWvy1fhCr1bQpXH2fA29+Dwqc+CBv7Ee+Z/9a323nszyzPtHp38h0hMHB2ETgew0Pxg/5Mp74xWD+HYQY+3uF4LbLPyo4/b0DZ6ez+Iexu6NNzQQPn34ArI9cJGmTulBOSVub8gqfveI1v39ztNk4C2L0UdwUvh5/hX18T5aL3tdHTa2k88+9z+rk7UvMLnzw/2oXmImFbRRXU76hgmnzm1j+FIZvb5tBn56QPtmhnPko/Qi/GrMw6q6nVXza8+eXGuz95pwpwyW/5sf5nMO/GsOH7FmvGM7MzWTvcpRXAu0fkPcLewAk8e9LEgCghee6Q7Polmt2t6Aux8sa5WJfYq+tcYEE8nx3n1B2FQP6Rcr5VSq79dEHSMfMyvea3S/AyGdo5/xR8XrveL3/D17Xjqv79TaGK221mAGma0wDK93imAuMgeBgDdIXaGAFvCIw99BEgpDHdP7+P0gKDAdsg5UPY4hCls1/6qCXeN6uirbMQPlRAE61plrjHqhfMDgCnw7sMYEvR8XfyXCfq/8vnTEDNrXYtIvgwdmhE1cbFW2EhYGRDZsRJle+HhWWEekUsbUWLZhQA+4NeQU22MSSTfzOgzzJ2nVMXJA/bPm6AsErgjIcz4jCcPNxCahhBkpk1sGLhrciwioGZxEMGUAiZSatgvPLBq6WVAoYKwPsVBkGchByOgq2I2FMZOrJdiCoECxhUwbQAhKccglD6fRIGLOzGaB+gjFhA8ONSQXksSDLFYAANyZlIY091uEn0pYYwGZgsiOfcySzV8KX6sL4C9tWgDjilJpqfxDjHywn4nHClITewSfE+IKFEY8rvGel9ywviLHHIiM8Mc4ItS6PiPEvehCeFL9D6ZD4HhbfQVb+zqEQ4xVqI56OOGeljwgMiwn1kciK3wiph0c2sMYx9jUhD7hkpcLLDBYLqoqQF/yFUGnyhRjvUAkhb/hMQnt1HjF+xD4k8i3+QKgC/yPGBfYB0Qt+QajasGejYB832Cuhr1FbfICBXsBnxPgN+1HQj5xd6dUHB+MFvRJe44hlSLzWI5Yr4rUbsQzoXo0QIff718SfM/r0MqI/vfzIcfedy9/YfNyxuT3M1b09f319wq9RjsnXOLR88XKDg9IxlwkHpoe0Gflzw+9eveBPpVXadPgDLb36jd+ZM68esavoLm1qnA785tUGp0RBrhJOSgGKJ4wr/qYuw7iwuV7nrIvbLizv0yaLIEWXaygojhQOET1OswIiSqYZRSHH1WETcExzWKDIQm0yUETCdYwjZUeD3UKhHj9MO7papC0UnQYUwLEdGxhB28nQmUBGjQ6k3Zp7LaCoR9QnCqSa35n3hOuelmbU9N3eoY7mYp1QYT3sfSPIKRghZ5TUTcjpTq/g6LEtjgLlZr1AHIcdO2zCM+wWOojVTh2CoB7RPJFHjQ5hC1V1U6xrFzmQQK/g3sImiQ5Bi+LH1E4oimAHRUOcxqSEgEWCEoGZIkiFHRzFOoENZMnHdN5CoZ5WYJAW9GNRHMlEWCQoKsGJCLUDVmcdVrAUitrQXDonrJoG6eOdx+OYwiaQgc1BFHIFhyIG1PfJkNOKzBT+pFg1aqHGEiKMUPTnE+DZcm7giyMh5WY7QoURDe1BsskMLiSTNxlIEtd2xKpTol/YRXMEWeh/kmYJ7SCh8AXs/arogMYMiuzI8abd7xw5BAERnuQKnhSM0CRozBD84mhwe18ACtTNDVDKCG/biOHMRUbgRXtiol+LJKjv4CRvkbQVCdcxcExHgfoLRKj9kRV1S4ddGY5wfBakkH0bbhtBT7PsKCYWVxBys6aSRy6sQSGLfF7OkzrnIIeVYoFqx7sUJX2xWcJhcjHNg3S4Kh5PpR9gOiIvDmzckbqjC+Ime105u8Ol6kNDK4Hsz+ZMJt5xwgJlqoW6EztiHNezE9Z2Q+j9W/aO3swQ/yTuv3CgM+p3/za9Tx+n2OuSi/IM/CTdLMchRSNb3RfskhJnLRNIX+8Z7ydCy/LijwHYz7YUEC18vCKGQ0TKE6r6Z0C50PcNUryIHQ868NAxTUJhu+jVni8HG3kG9lDlWVkAx9eOnQN3ry87GqDkkfpl3DZahCMKVg1XmKCQYrE4rEcjPEjkNrVIz1ZHN093b5TijdyGZ5y3Fbjus8oheJ0UhnyWQyjg7Q+4dAVFy50hgdsJGX8tE1noIIAiUvxyuk0aXw9HfdqnMQfJBvJLrsoH7Y6jx3eLzIoSWEj/WKCp7tyBDxKKdshiLNKKk1HQB7B+3gOKpsY/4EQQOQhKwtPb2VDSJti9v4qwQM4oRsQcCpmFTYi10GytkPzLfa17JLBqHJiJk0GqxXWf3mlBP3ihrrqhm5L8SL9A+3CSOYieeBFHR2J1PFqRg+CDnzIKguARgoNaEw82PlFUf53F4zQhcSHAj04N7D8KQUJ3BWsNefA9FHAkMEOPDty7GVCUPxYzpw5QxN8U82sfC2CBQiQQlo/QRFU9qEolYLUJ2gCfUdDO9V8AfAOcpdmkEe3O45hUmLQWcG+TRorKedCnsaGuklmkAGTpwGBBS5qMKXntgAYKdSQTlTMvk7azC7SFahCyR0fLUW1ENgEzZ/Q+wcwZnRXnnNZKZHPgyp/Yc1Y7pOxnwhu+xnt4+t1IKzpbZEeNOE5jQZ+T6c0UXuwpUg7aGBHJsrjZMUo2F6TTAOx5HG1Vi5QYDmaW3odIP3pynCadZ4fIX22noEcHXRIAP2cwZ0V99RrFfZhcHAXKBWAHFAD4UQavR9JS/0WSwhw6YG0CUCUGBVoocAFEzAF7qAiGnQBGtjSnfM5oE/6AiDXT+hRgRQksL9ScDmwesL/2oEgWU97cH/1nLw6RqiymSfVsWdH6SvNTynHRBkrtBtykW9U8MI90b0aNVV+RaX+yCFYHcYbFoh3R9ED0Gvd7243aq5o7n1+djKoKrs00kSCRkxBBb6wL+0gnF/GeZtFa+OFfR4nBysKCMjAngYHjM3Mk8KGSGREo6HwYhJppUBBFmzfigmded4Us8XDUMG4CFOVsEEd3EOzI5DhBId2hmif9h3Q1BhR1rPq6KQHP9PZj2hGu04DmAewcNEbqCbDiUiIDt6OdOd4ImuVhE6JPCQFxLcARv9EHuLBBpaWJ3hkyFJjrw4TR1VKNZ3t3xOlHDQN+OHtiuFRTt2kqIb0yEuWC6TZ0oIMEspETfA4Soilww3FGLBvbQQgEIZ72xaizVeTRcBUKYcCX8C7E1nFQrkSmIfC7klThPJ4vKcZnUyhE6sNRY7uRuef5Lml/Oe55ZSTS0YIZC5qZi5/u8euNeOvp3oYuSN192sVe+4thereYGRIzdmB14C3UxOmI4SghzglaDVwmXSyomWaKprg9gtDqci+x3t7uZtCAExzredfpNhrEDw15tNvnMA2GwUBjew+L1V1YIUPKia8qG+MU6aLQH8xaB4u4t4vTQouQ9gZ+QGZ/cQhYm/gajsKAvd9/Kn0BLcVz4h/nRO198sKPVxYawBQufhoxaU4v0t8dScBy7EAndjOCdZ8Wh35orOLodt82A+L122YAHoBpMQ0uXAGdhm6JZZLsc0RU1DhAHLxDFRN2wfRMUiLe8W4/4bRYl8kyOdnPhAWKQt3t7QTNU6TjBQRGPdHRkzjWggRJB7l2cB5WEGnz2hBxhIU+8aDC+ELecuwggVqp7uyQz55xBwn4v5cOf7kaXi6mdJFmptL00CJ/7WB1yDi6YYiuV6BNcxxR1VsbxmVEe217gUxUJlSeY6IyWc08G7wkkVYDjP3v4hJMcaBmJs5GHnBnCmxk9JEJsqeCT06GGKtuLcYAG1BbN3Yesp2qSgYYIz+hRm3j4aTvsDKxAQSH4rELQLaYZSfEfvbyjE4VFt7PGRQ4pMaq13BVX7vnTzDp0zwEBakAQTpCKLZK2UV+D2a93oaDmZo97DIwCUeTLqOhBp+imkOqCVuGk/ehf9Rq55ucKHBK6lEgdpbuMDJcVbCpoXBUUQYwmvewRU+iquxu0Vou1wruk+eizAagtKCtdmw4cTQ99b2+849bc1T13/XrmIrPFxTwQZuc+FQ5uns4b999+4U70WgIBc/XdNK9wBouzahJd6pwbKdJrrTNtgcNHvRjVurcJsRE9zaOxz+wreI4Jwlhr0EjEKesHfszb23kUgHT4hpixYqSFoGcINatYAgxU0DAuTWUHNG/G5pdpNku0S6crHipILybRuqKXU4DLPZMR1M00424Hga1aXjOheMnm6615nxwEIxF2HJjKehp8V/1C2/0Z6slMe3azPhUg+somjyy1V8hkM4XlZvhmI8TDCp8wQjeBGTncXFe6Sy5uFkcHh5KsHRU5kkNAdp+2notVCETsEp0gL2uy0jhIrLtE7fXAPZWCsWtJFic28uJ2/nLxTS24OHCKFvEtlVcFD7q+Gz/chKgxrXDhWDE5hFvpebIM0AWDj2WlT0E7SW2igMtSXIawM2FuKDyY47MTy2gsk8CTdbu7yAyWfqCF6ttSyZVvBIo+FXRNdXMiLTHEp6doFb2pxpdwGEoyldBr4gF0kPaopQ48WLRDbFAvumKUWJ/qqnXPPYR6fzctsRdr4h0fHH30sdw6mwcIlIx0Q2KyFwZQvaf/taM9DV07qJ65oqB9jUJc6GBIc82xvETQzMrNNI5qumHZISIyPm3ifdTAQ60dTLLedHqq8kyQVqSWjf3pxQPl7LZcFZak4Jch6jhIhYy+cZFtJ240B6OvvuXirNH4AJ8kDfcqBodasWRUIhsdCDHrnmA6AxzrYkrw+kdCT38Tkb12LVr+88pPosDavhWR96iCOdU4ac4PZXPTiiarqcHxQ4ijdROEYC1WjrDOnFHTAkH0mDZmZ84amXGrCOGMUeVEs9CFhGqs4J5GfG9HCCwaLS5zi7yjRa6qm+Ua5pUFxqA2IQ97xwqYLU8QONYIUfyXXMgxrebzakJasF/85f0oeBm0aIdBIqSXHIiLfXHPt0J3GU7phyXEQUnOM0RMw5FXDTUsAU9qkkCh+h4IWqQDTsXKpXSvQkLOBvO4xywgFJfayS0DfNAHz0tjq3sap7DsXl/A/J412tj8kD3bSw+Vm4zBjHINkoEsJFQZ7I9cX7YzSxcW8iWYYNv37LI1BAEQTsI7JTI8oVDdSCbDxYLZt4o5faTxcpR6MI3k+/21P3WWLGnqMuoRBQThliQh0uFu2FOsBqaylFcTEUuQFAnMOdZ+e57DAVcgANUXwhjHVVkhvicMJIwMOjDNpL6W2xndnMHyRH84vmFrNrf3kUS/vlcn9JA0aHamcP4DXkrxe2EQ6T/CUmTdH1rEMeVObr0bErCkxoKsOL55/Wo1H6b0yYZG7A6C2jMngwHh9CKMCCIjDXDGNM6TCxFXf5f7sqQgAAHfOyM5aE6glHQOGlBjQ095q3p42Kz7lbI993emrEP5rpAQ6oepzIUP0eJGWesB5KgRhTFIjeA2ykq+luboI1G4xsg5yfIyF2y3j9agT6/+UnJnranwIz0zfZogA0tpTNExZhEd+ct6fp/BKMNwTYdX0xrSn7hNdbOzc2REyajm37mIhyzDg3C9VePkOvdCQSyziEh9aI/2akF09aiiYgGaodM62TUpoRBteHyXlig/cOU6p7TuyUjXygIqWE741mGCJUIu6ADuAdSx4D96gTQCLQ8GMfxz1YO9NkinMbQeIto67rYosxRnfO6HDK3SYqDb8HshGdqREDHkcAQaAQK61pHTICwblJQQJksHgBHucf+wOY7gO1mRscBaLv9oxMDW+2nCxecdYsK9V9lpJ7CSw/jZciQMgtcjRsbGOnABZmUx2CIaXdWSQen4BKs+77g6Jf8IVNZRACK4t7iWh7iSuCgZIiflQoiXUMNdwAZhHqwQMlGnp7PYkhrPXmEQD3SWLfBy+wfz7p2JEc6WhDF/oFiH0iScGIpFtNAqU/u2jQItBHADTCyLnFkVsYujiV+C0bvjdoyQwshKRITcA6OLiTjhJnYoE2RmCaCwEdYbbDzzf0R5gs+2IELD8w3g5n8/+ebMGzD+IYATzjFqrJxbQDH6eB1Km09JQ/zUJo4tGotGwMVioZnKSC2NihWpbYop2yaIRIrXbBAuPdAWz+BKEfEkwLPmBe77j2ourc8JKYGrRA6jHuwM9QskU1RZsiopEhzFogUEp39q8hWN0hQayn1KY34ciiuG2XIbRQk31USJrw7r022IYTUoEmud2fEzbMVZ4D9DB5AzcA20Lb9PCjgjcmaJiarPfD74TNWYwt+H8M4dEEHxrM0ZihBxJMCWcq0E3u1mBZNGlMXtvL9m2aXDBQRqXqcZTtFW8yXP/hn2MRJ36rErjQ2ApYTE4S1zqZILXTaTCakl7uvzZcr0Wso6qDbR+LMAYVYBGWOz83JIELJeh0kmiTCg5C20Hg1B3aWFONEm6tEkfMkCmWY3LpbKc5lcgcqlFzvXDQgW2vHMjgFFkvC21AVg+EcGLQFwlequ0i5hts8uxfiM5W8OMTTfIELXhEdqTCtLOrnAKsbwXqYSp4fgmHnbmfF24pdri9VtoBKCZ18x3kll+utJS83OrzliQL2mskjdnQzYIpvABEUThQKmoTxqf53BJz7Ngpqw/721EwA+/MIrS/AhASqXrA0vhMfg7Cwft98TSarcacDUt807qxywySMLC2psiOSxRK5Urr/ECTaf0dlP1qk8oBR8TIeHeAwCyxdiCdxmiZhBRaEi7xDOO/KdxvYfnU2ESWjJwME8kvtY1ai3+vFSuLrCySAyCS+UOwE47aHCFhU7iJzD2dYitfc3QQFv1ld3/rIXvHtTQSsBJvUU4xM03rUJHOeI7RMixQqZP398jwlUC9RDCOVn0s6kpYtVfNLht3mLhnhoF48qxT+VY9Gxk4eJq++0ouys4ydbNdxoEwcabtfIbKkVPT3Vv1471TunnN3saoxzCCpfNPze545BaPGEpR7IVFqa4o9Q/nb1cAh7yENPoHKVydiEAT4gz+DVrOMCL1pPrtfHC+foAf38METgjj5ISZvmo/u/zcrNJ+SmH1u/nax9Gp2JObTzLvKHcUtoiUmamdquXo8LyE2SQqD2jbapD/NVFUid3Vm0fHX/Ad/KpnbIqper8WaV1Xe4jMZ6HdQRai7LQfGp3nhAkeNt70voiDGkVY12eKo6pp0UWtbbGei48LNy5RoHv1/kVKM2+NccwcoiNZ8+1HHfLuuI/kg/lAH9EWlco3w1xt+F964KiRp/HduyoC96UuTNgiIPvnrx+KBYE6CD0Ju1FgKrUcJsHeLtySWsL/IE5+vOscOTmZVwKXZndb9c62ktnpEYpHVpOPRW1os6q7dhHvBl70y3LqKP9HqOBOnYDn2ti5D/erBfa/6+K4htbpceH42fF9W+I75U09ilbMhKF5Kq3x0wEWED+Ubv7j5Md0py2tChJqHhaugu6vyxAQTYif82VI81d4vkxT8zutc8LIeJ4UpJmp9KWhjYiJ86kLrUUBJTtSiWQYfCH0KdNROkH9I05XAR4mTB8Zd61d6H0GKxmbzH0Swm/am+Xv1pUH78y/7ASM+Epmm+TPWCx+FdSpVqUlfUk0j8FLPMKOdMP1LnUvDag/jE58WQ9v3CNFEK+x/SbuCd85/YHBf+gJpIBAToeMoGF0YZWEFkwEopqZrnvJ2n+7r+v+2+Di+QqVUqgkYTyqjtQdpLpB9WUwN21OMSAM5rl23lrhjAdOsl1ouYKBWUNUWpq4N7hKGf7y+Ec1wiV/GkKBqxyZg81BXkWWUORXvevd34cx/P+P1njwDq8dP+3xNYId07NLvGIzb92ZSBMWxDnBISuK/pOM6COynwg67TdHcPZaNz7ticNui2W7RLehWZvnYy3FrxuBhF5cLPtyEcG3a4O8uGsLOuPDBaPDvGnbKWfcb+3Stqn1fqLiZmkjru/GNCyzVe+lu6f6+hXQtFqxcTm+hKPJFTf0fDSdGodjQAfWI69e/zE9PUeEYpg4dRHGqrOpO0BBeT2cbxMHHcJTrMTKwx96a4qSa/5i+8j4oQneXdBkn8iTSzZHG19LNWh8tNl1C2gKt9S6ILR4paYxoW8DhP5/kkhE1gaoZWHh+LdB5t7MYbAnAsf6R/kER5dMS6ellGtmQtAUU8fy+01F1cTC63D/udkOkjP/DP4E+ciuwOtqC3Aa2Ru78vG+kc8yf8Hf/8EGdUhD9z7dQc0I2RPKgxKMsoV7YJLnxmBPPiIjKVyuI6djOFtLwnWmhz01+3099oZSSBxzbf+uk0rkZUJLrBjyoa6Nei9ea4nFe3D7DzUUU87W12WFklYwSfanV5frihQqP6XFpDA9OJ5L/cIjpZcSnNXxpWEAzrn5H2ZnZP+yviw2po5Kz6XgGJ6DqdrX9DUNNBTDk+PLWtM2MIv/bj2VkQnkW6QQ9PS5Lhw7xvJGs6IlextNgrWshTxPrflbclahfr3790x7K9xvBdTGqsShtQU698Nz+19+535RCj8K/lxF1f3lH0rWNE8s84/cc16Tdz2ZgaN3xln/XcDSWYyzgjnwQKhOhLWubsXg9Gvkdh4pBhcXMeIM/qy0U4grqGluwoCWLjZ74PElI36IXpHEFyF6wWvvQEpiztzQpchv3uqTGBTFmmoQmBsIVZfTDjcwPqlm3IDvdrNaPH0Us9zst5GgOjROSm9AikbXiA0mqc8wR2ceCpF+wptE1PXnwL0D5ZQ5AdNbepA1IZerHp2/dlRZ4oq9f2rOmd2brzQ83TqobGTy9VS71eRdJbXOcj+DQhuI9IlgvW/bVRGfTxhT6PujXI21Cyj8u9vo47D4LwsfxWgFnOkeLQyHGbf3v47sbA2w3zFLNQvG3GF7kERiSKsgXY3WIoDFV14G1mdRpea4CSm6DkEJTPdEQPnofMmHpzXC304AO2ca2x8KEONhhNa7Rwhc4OZMFNhC7MQJ5Qbp0x0rxJSg5MIcnodXQdoUd7A/QS7x72ycsaNZJ2aLBxb7vvy35j0qPjm/pe+1osBVNwZFkaPpgELRhX6t4mc8NRLDc+WbcGm45GB5Odn8AoMXZpuI1fxztknLYV+Vj4Ng6mEADwbdKy2ykU4RgdsDg3Rj96Q6HHzPLMI7E1sVV6fyI7AAK6/FHAJcBHi1QkCJuibfmpthkt/PXdSJfTqia0rGWXuOD2P2Lc7qdT39n5e7awgo6m7YVEhei6tTWcfkEB2Lsjgjtsgqn9jFhxGI6co0NOW3RnkQ97qqECyWQ+P9svcLqMGpNVihs9+yNO482Lv/nG0ibjBkbw3BOA7/GHnD07cB4WrG7AsSPZSjkFszUV2IYOviz5VSe6v1AZYj9XLX2ZkSBtLD1xjWwYmBk4zDXpQXBiFTrF4RrSQ8p5276VizmMF509xKVpuUzQi2nhFCK2wUlWj3Du+A7qYZ0oIfWbWCmkHRthcZ7JNkE/kD04xYx89O1vjpVOjdjm8f9mPq+fL36ufUZMlhnC376z8nvgWJz1m0qE2hoy1dzW/E1kMuDXo6IMxzHp8s5HbPJa5XwhT+5bKyrYOPZvkujzngX20fnpnwDSu3aUgOsgYEXIGDqzUSGBgfin5VDbRXH9OJ8Ol+KHkiqpg3gmZauv8LXmGy3YE48f++o01+4JQJoncPZcN+uJFctHYipbLaym22XTB7UJdXr+xUmzP3S9UWQBJyYUhDf/ej+IQU1suQI8smUpLjQZUn0X9PQX03tfCgStx+/hgWZ/UuRiAmuKIDTg3yND6dYVN/T4qR3vcUInDFOSJq+sOrzZtrQPGa1nXENo1Ab8hAOoVjHNWJiThkhAu7oa9dztzN2TAWdwRSRbRB8KZYc42VpBbXQnRgciruCAPADWNo15O7XRKui11XLq2+rwCB4kzHV9bW+fC4u0TvvbKyP8c/6RZ7pKDvOj7Rk3DTiPXc3MJTSIKixPv7Eq6g8OnyJjAY8uRB/SlPYMJyDGJZYMfmoUMR93ov9mc95aeaQnoTZHp7eYBM7M55pNECE6vNp+N7pOYDs656supWBK9Bi+10Ty6CjTeMEakWhn9NulNehqAMI64mg/QTMcoLUJmV7Fp7x+QOJlf3SjUf4WPPae+fe43QB46f3C9gvV7AnG954CRd5GaaSh9fuCoIFW56mXINwNR6gTcJTOGd692gX+hpaYvVkKEZ6lP3M2GRu54l51AIjrwuZKJCE8zAPqNTrWEcXxv8ycGS9geyTOdpl/3BoeLkmrtcOZuLqHju2aY6ZeWUQo9VaH7oIhS25jGILCFz3uv7X0HTnHS6XtHNk89trAI1zAruV+WIXHMc6bGNZgI4DdZ/TwLY2eCB39lNzlY3cJnTIZBDkZQW63lYQIfEkLXJSTK0SU22FFRoo4cx9SSl93heU9ET8dt0d9G6GTiGs2L3tVElL+Kjq8Rd0LacCeFtLd9H/AbVDB7lExoC6bpSWYszafbuGflRqATo3wUbd6YqjVteDUw5Rx61E5Jgj5OWK/X3n/EeaWlVUYl8XMsVHoVl3mHE7BWn7qODRHDssFud31qgFFPkClOThrmkHKnwhgqUD304JMg6Fm6aIpYauJOns7EO8eWqHWFU6xYWHUlL0ugijD7whcNBfJpESEVv3N70m82k6f7YeKn1zdBZOnv8i6IBfu10P7aAwLm9d41jSGcO4yyhWQ/fRj8CEhKiv6wdYckm96/NAtOy5kGLo39/HHgUaECXkhHE8TWVeVbp6uAZzdoVLJh8zSULjLq/bBnfFjD3ULMp7BiTqZkvEuXpVdesyoz48OmhykbjWJMsPWT/YV3kV9cpjoZKV9W6kEPRUGFkeyVrbInhJ8vmCAPN7kMl+bLIl5JZqZlQtXIByOtppnJjfT2rWWkJkeTG8U+HS5O7tzgoD2fH2hMhI2zc3MrjqWrxcu5nmtQq4tCOwDGOq6hLUxcb0PBUUsLDOW9VrMlKa6Bv/BQiVxeVkUXcC2zGWSczQoENUZWcWKq/LKFWh9kxgTtjBmVA0aRZva2fy9dTqErxbrFpn53XMDbZr3AZ1XPWyLf7TpRUEEb7dtUguyxojJleLK3szonAd/cDeW0vfz/S0jBmaeYUu9oQrMxhUTqfrBe9Vrc1Yt/5p3HTFtNUvQ9GWBGZYtouByZTnvt/o3USgqBi3qdSs1FJG93D21B2tw4SHSbXEEO7Vj8erlmDFQguZGFOkAH2TXrBbTpHFlZVExzCyvOECWTSSKA6hSEGUewgdrB/41MwQapKantwgy1M+yVSQXWG+Gsjrxqjf/f5pRty8OPT8QYxhhTaUEw8VbYY2aSFCXEcdJvdkTRDxoTnzUVg6tQTmWm7nshRKrvg18ElQ55y7hmC7K1l/JAc8i7WHyguZVNbjlbzOHfgtMKb1D0mzddFTL+C8cQ+ao38XmHVjMCI0v1oL8AO4JY48ycMr7FqjBSZ3JLgyF0O/mOWf9guJZKXCGuoS8fKCOMPi3Ml1oKL4MtrR4FsjvN2zN6GCtM6HRzQ93h42gQWwocrlcMqstyGsoEBRiQ07GoVBaq28nBg2WpeMLFunBnsNm9xDIeVihdB8clxkOGiyiansFj97i4c19um4umE3SQ6hGfD7a9b9RVWDUOISMhIY2WMpWi6iIukBTY/Ep5thVxTNx9uZu037Lv1f7UYcdkQkPIzQAC3xRTPkSLp7v4eZrT+/6S2Wt7H2hFErvXs69tebEcflQYCLKKPk6NEr6q2+d8fdulE7ulW836zNk+Jb8vaXBZeK8jitjVYQ6J5qdJ1PX1wJbyMrSh/WZSVxKfGoaWGvrRJUnANSP7V0YjYpRoyFtWuL5/fphqJTBJLWIYIRgzXhThOvKy2ZAV++PZNHi/betb5Vgg7tQmAqTpGAHX1UUAlh/3ENXa3ImA+UJDlBwt+eL0AdcMIiRBz0LQm0U9qKJHWpo5NvkHMAc8kHqEcx2M715sYi3g0EBdaXTgiAAtcBzfqgd5MNrB0ulDUlpSHafrQLx4m1JfnH6MOxQKuoix4pmLjycl4nHQrt6dZAkgEraJc4D7NxPt040TcmOh1BDDCk02COSuzOUZhnRXJcxoaRtc49vSQY90mbzgFwUi7S9f5PR8oJb8K2oaPe64/xgHv5SBk/bI5frgvluNi/7+eFFuqlOej4DqI1usTk8jmWqNs7TIzKiex0zp3Wn/WkzojkkV3iE3mx0VRnePWzre+CHT5bGuV7HbiY24P0fAj5m0v/GcWAzcaQuAC1x0BtstcKfppMtVtQpwk4lyazsdtw01g5bnJNmhPIpd+gtDQyY5ULadSn4lioGSuBgd0MsQZqEicQe1qtnqJGDqiZK9beDLnKPgRFFzViqafJfJ0KQjyburfAsgFKt3wYN4u337JEdDOYNrdvsSDPC68nErgxgAWcwVe304iY3/rXniyNT7lzNcARmKPv6fJOQdf3zD2AK7ykHjZ3lHWip+sgLRyAtrXnaoiJmPXSfDib9i7Symi7E6rprI6H5YeQCVR1tZux5youfVH6/ImwuklPPKkWWO+RAgi71WUd5aIeeBftdwIDNl4ltydzRJqtNh0sLh0IWb2NieHzYEBiXjNqbbQrbIy8iFKsKolqRqYPHn5TxQcs0xHis4UmllssWLr7QmC2WsVFDzmsAGFnL+cclCPbCSQEiPzfORF/mNdJ0oK+uRkMNHRdtbIPXL0wi3bYMRZyFRsDBCOPUy4V1tkH+wY/Cc424ZVGQpeZkGaSNO6FyH5hWvdnlwTzhVCYQ0rN5rMnKESe3tq787RtqTsFIR/NFaCNQ5QGneVN2zMnFjZ7iBx6zW6BhbsuVsvMrWpFMAZ5E556BRGzZ7iEWYmFz+5pRgLhzr7vt8mydjjs3yJUVR+cx//woDbO6/tRW1EvRasxrv4uDrZfn4/1JZVX7N4u37W+ZFNyECkYN427nx12+SSgGLzbUs/VUHEy87emuF/NoRYzM66azvG2kuql9rN6M5xMkwyIKRm8o0GpUBZMK6yyVXmaFyVIBSHy8YSywoKzMEILeZ3p4GeSMl8AJfF6vMbOBeokS9ypoDRSdiaUutI6HOYUU1Li50GOEovFZxiHG0uxDmjRXLip0/YqBiiJhxgZSJj2kyPOLjZkHVJ7VA6CqA8Oh+MpAk7Ubw+Ui6Eg4O1zkpCr71fZQEifFRzSaIXJF/qTDsut2sMHX4gnXn2tCW9K3smEBLKn5GzGhWE1PHU8EPWWoqhUxQGC6G82RckNl9yGlMAsTOahtM6BMqVlvaYjvOkqOdbEh+uSdfCPZ71PFkafMsXj9agn0J0RRsirwai1EgJ+E7Lc2qStusNMUNDYULHFDrV0tb8QwOlQcTh7J7WqIWy4RpMsQmmJASet1b3WRI3YyIPCYJNRMz21kaHnZKUP78N+JEJWMUVvzDnRu5POlYo/vpKFNlBClhh9X0TGdXzTLW1lTilADwh2pWb4mDA4PtSDmmVwOgCTRzHqzYOizjmCe+DtqmUCXoPG72no09mI64oLXPs0N2sGwv/mozbVe6kSNwVBn3rRH1b66FaGNSEx1E4C8Tpl4b5bLBu43hiZKXStvC4L1QSyeUSuHhITrg02GdxaoOtjCQvxFApZeLY81qDz4HVazE1V3TXyTugJNo2smpftr5JkMWeMd/ktrRnIoMl2TIhK3scgxjjzTFi73lgbmg4dwtavJ5JDwt73ZuacqBo7MAQ8BPSCvH7RneCUDJoRy4e/x90M4T8DwdKFDNvkANQZFqAOtxVsRdiqkWeF/XlNIgi+StBxaIIvrQjjkJp8rthY+wCqWFq7XLhRmhzmOoLpn3OcwwZ3Uy0rmY+wcRXzlPU3xa1iTTTEfYaXtHTr3MJ/uuKf6A9IxDHdS7mkFOME2f7TdEtYnmmq6BtnoD8rX0kS2SVEvrhJTNNzshwmzw2tXNqurdDOa1/BTvtjoe0uyDLvL6D79B9X+j/YlWCOgqYprfU/UDTexVhpfDPNBgSdhZgj03ACP8YeoCerF/487EKKPezc7cSAUaipVYk9iDX296ceRwpZqXIhbRJkaqNMUZ+8o40il5m1a+5JxxCkEtOCBn7Va4h6vYa2movddA7rzTOK3ei0Zm4W+hHmKYF5fPPvWPNNtQR/RzKbrhl0tsqSC7e2/eis9qTUNpeN8g5UzL07YoZl8i3pFFzdsAHHUwtvKknl0pTxX5XZvBUZbFFjOKnS7rTl0FoQhos6xjBw7IWGY1b5BT94cHS9iJepy4uJ93jSL1Fzwvp1Iyd1lutEsSV/URz0y4j51tcwUAnpR2IYri7OSaXAPJ7ZubpBYOpcjsil9N7nfEIcAGhvBHbCGU4Ny1OJ6zFoMau7t1GoRxfAtYx7poaZXbR1B0dXPMAnqvNOnt+NzFpv9neLmLD6ba2/1C/zWU5fgDxxOs4KyYTm/b8A9OC+OKoRNOo2rZMZVbtEIzYIalyCjtOU41RL5983HuO4Mfg2U35qLU/mIo5uN6FIAhVh7ww7IggWfS70wgZXAmcdK3YN98Xt3K0MokD+II6nrKhrUYlwtv61ftXnovqEKUoEF+bT06MRDN8yB/1kBu55oKdkrIcks4qXWPpiMI6knb93RQrF4u+K6VfRV/FEg6PQ10izCKJ9nkT0KlD1Mkt1KE8vwFY6/JqbJKgnoSsQiL1vp7QvAMDHmb7PPOFwm8KvfT8qcV7bWnXss8smMXnZXZFaGzK8owFdDpXjGnz03ekdMSxyC0hY2m8tLphS6nIOrNN39uuzH2p/ykuSufGHQg9h9v3K2iGIitjvp/2PqLEqivS++5Ji5Ke/unWn7+VbenOqNyVdvDFPI/r0UnkVqgS1was5a+j2dSLi7C1KFpJMj+wU/8ELkpuvUJeIOl19Ep/+AFwAyPOE3WqmVCn4ikeLajgjKFrqHJ8h22xb47C+1rqKi/24sFncErVG4nS5M9YVnJ0t82fFmcBXExAXfnoqxDi5h/muCrG6EjxYIavvp8o2uPD5qgs3w2tF5xpw0XMHSxcCuQCYoEDLAKCSH6xsIskSLWdkMquSToL9UFsBLtjqVQpzkdK6tsefA1DvhYK7i0WlViHjU1l9RnKM/+OqVvBv7NedCZAUqsLdMriWSj7GkZXdu1oQlQJMvH+D8AhJ3D6QGSWXDpiQqpH6nTf0yA2uxYiCUNHsfDfNjVvUBcjsh/NdRH0SAyh01P5QjZZ76y/pxBPT2kUVDnzdSKsYj0GJcSW7uU3UnMTP0fiBPwvfJUcYGOXbxGFBjGk5E9rj+SGU1N21fw5pkk0b+7D2iMB7Kc5Ij9gBHM1Ymw9Eh6eQXcWxke+rwg5wId/NB68KKN7XHKrMykogMHvXyytYNybgTMPt02iyhfd6xm6vPP/r89SjWS0+3Ogg8YJ8mjb6bqpX+PAmwE6Y3LGp2dBAYSMKxf4WOTA4789KnQT6royDDp5daHnyIIpVFHy6IEslgUTKoPTiLvc6uCv0Jo/LW6H4wEXJvfkonosBGxVusNzbZ0aFEb67b0oyiqCJias2FBpYkWUKAZ/pnmawDf0H76zUIgJmEkiN6+T3ELwDeDYEVIii6H9bKGxptCCcQINdFlpe3U4d1GwzNKxBegGoBFM0dlm6w8gkDi9VppxT6rA0L9jrZG2HAplYlxtBsYIxiRA7YYtQ8ADGrpDLi8gEVgUBbv0btjcB76nNgAHqlgOmr7xQgELKD/nGh1ab8WNwcCBNCrCtiyeWxQkWtkaDGzcJWbta4LFnrLHvEkE3CH119OQrwMc+r95q8Oa1lOdS/ba+P1gIJEsAn+cSxcAtrQFBRPJEFYkot0KimsdeWjAL8DppVX997Gi9S0GbH5TmoQ1hxxzqZFAyVozZAEqtHb71jdn82PAIrJ08fowfemxej/IoJEmCAUHG6EREyiGHkQK+Bq+g7oqiIBC2FvsZlAuPINv4eAu8HOmqq7cNj2le9zQIMVWgwrIFYDsuBw8ln21Xx/Ha2O1vAMB/OXLseX+hMxkEkTDvn2HIqAKDWVO6orI4RbabqXyT2MoymHjaHgRla8HCAJBc5lufvnqjhJQW6ttfIWkAv4bA/eR8uhoJiGiTkhmk0wDpGC8F4qim08nTizSjmVdogGCTTLmT02LuYRDTcYq01KvdTXbKILBC7EfiEH7s5J3Xo6noOKW9gUmMI/v3aaZlAAPCmnP+maco+L0SSp1vNTPee6iP1K8DWcRFxjsNpiNobZR7/w5dUfn5ktR7WaSMjQ3a3p9No4tUnCxuaB1zJAqsSxZabbFqnvZspiAt+z7rOp4nixzHKgLKcHXjnWEEGCggkKzzNOmZbXea6jZSolRqZh8GY8M0HTNLPETyxQUL/phxNAnrt7IuFu+wIVpF6bDkX7EN1olFxf0I7muqRUNxByAx1YlL+lwd7AgogG6qyhSBiCLEFVWC03egEJRWhm8rhRHrKqfQ/B4Sv+d3+XxCPI/83X0BJ3DKhxNkV48p2pKA8ltag/x/dd1sQWpFYhNEbjU2U6kOICPZAhz1ISKZULBkgG3RfOOBVzzsUWsOhEg/iOrVK2/KYu7LDsTr+4AF9BckhTGlOc8/xfpiSyTesBojMy8odz+03h1gNswp6rtta75lY9p0S3UB0orpVNDopR8oTLJl8hRAK2ZLrYQKgAmmbvsrQchq2ZvhzdEDRQ4yZSFwTPAsZ8Q/z6r9UKr2Khv8pkUuOSoxFYEyU610YIv7OwdG/IV524k2g8GUtY+WaeT2qBcUvediMSOuYT1GpvDUFcKL3PRmc/dZsc0PxGXI9mFbGMm3gjht4FEdCgFfvksgpFRiono8/jytqiuBQS00lqruTQZ1quPP9yd14T6CcpCVx9GxXoegqu6hLYdIdDyMQVMvJhpgtpHgSSmK/LFw35fKHN0M52aDAmfKW8LjhXPaw0xiH+zX91tTkGHvy/XG7Bk7tMdwJdWGYVODtX9hFHjG7qqDwm3vbe+YoHjwuwoTPWDDhDHkRkTfZsMqjfAJtCCuSOmRylipd+Y2tI5EpoplO/E9tsAYqMuTMdfAxulNKXJ3k+O9GCqLIWqMWBuJwXHGddWIkP09W7CgZluLJMghMASvVFhLWJZyFptZl+j7UeieY9tWsBRqrfs2DIgCogHgSixKX4n5pZG6P0JLfANQUcx6AQRQJtH3jmkBByIr1Glk656nRmo3ElUxYeo6aCKksyzOEXC0m67TxoTbwA3nzrzuUXt5lIlyae/RktvDiUA2w+I/iNqcqV76NCsbnlE+uEPtbg/E05rMPka7WFCDCcO66RH/g5nDlKD2sIHE6gak3qLFD2aKqIGqFNRgQIGY8GNPfz4kijzn7YV40gq0h2dARTvDxo/86Tm7ECnE4puM5filRT/EprX8Nv7ZwYlRGwpDTKZp8ibfjIYpJteQ56pIJt2Mu+UvN73B+MhpaRWb2qQQm2qWomRZ3g1aXQdB4DyveVCa7pKkx+7gZ5t7s/fBLTHdb2iRQUqyUtB6eyeJNqEaeI7QE3xjZ7+4sPU7wr5XZ+m+86SorObiDnPw208c626f57+cvxTIMFsIIKe34xjmawjTHqbafFPhWAEs8PlESKDW2HxRaYHt3e11dawvI9S73lSbV7z3IyvfG+SQvMw/+dDYZiQKnPjUOINtxvbpGoT8OGSTO6JhdwCCNJd479lwWOR0TX1CQ4lNzrE8bh60pGl4135T72Ome40AEfUwQtLyz8DCAuOafDG6ea2HMvz3V91wPnW1b3ll08tSYAdWPuS/y+9nC4qKsCj5Y9GuBHlHHvuZn0uPDTPDu+DJT1pqHvVwYsDuvNuEAj7wz1oOZSv56NR6msS2LqUwjH2ncOGODEB8cCwyAlw7QYNshzW4K5zFZd1kPEAATSYIbRHQrpcO1hEW6wSIPcI2uolIezHWvd83pRN1zndjzPjQTkcl3G2vp4K97nnpUhl7Fy3X0k1nsANwnOZSwEqW636OnZXfzU1bYd+bYeOKN4633pmSBCUq4OLWw3FxZDdzDvtPI4BySLACUd27Y9rdFtdvgDITP4yIO+YVRiev29o9n4gR3gu1ar3yLGW0Sax2mrG+9EDL49Sb5QJESquRIMeC6MoKaoO9khvFelE/32y9wEck1Fo+J8Om/T7OgchzAuWHbatGIE1UJmkaOyX25/BAlm2/6H7vixABSmD07C8SIN3T2eKa6LgVRMLVPBeCpDfIITA51v0dp08lerDHUnAzhgQENdecGyxKAgxIKSrujE50OMP1RzbAMfI6KU/hkYlcrGX+gQXkWiP4Xl53DpTf8hq50cq52xbWlp24vbcQ+pRo6AW5GaV4fR5g2fON7jNtgkV/qOEQnJLhVsGYwQzZIQfhvYAvjiRyK2JRLDNC/bnMQIhOPCMUUym25prvXBwHxUYZQRWSpHgSd7HETUI7BWupn2IMzCIWCL1dfLyQ2+4FxJoHFCfZISBXko61pmHC80zEjWOBtjFd8BRjrGugE3Eo2TGccfqcp8q2nV2MnrNW4TJbxpSPtDoCCplEo9ySsW+8MgcO8zTUlPa3KzFtxiTR7ohJhG4oTyUxspkNTw2zW2bipVKQdQjsmDiC5tOkGSBz9QJL8v1EybiBr2zEuoC2JMRssMljrDk511BmhY6khjT+g6+Z39ySR8SLNlArlvIIQ4p7d1irOC76deOLKqYgZ3GkQFYAEwuLSj0HSfenZd/L579BP1YufKYMpOEhB2XW+6S9hzjS2sKEZpynTatoW5FgnDyLIBfV2VfYoSYEIPM6gIs+eTF2UlvtQ0tl/dSEaphwo3mFyhBfPrtx6fHPi2l24br805R/WHwjMDfa1KAWujIr+uTTzpBYi2HEdt+Z9Hl9MYgjy73/0n3Xv5gumY304NiP1UiSjqdfQvSOe7LV46j9+fncHD4suUKIJxPvv0ja6v2aKuptyTds9jcHmT7SYysuZ+IYop+TsMKy86DESqkM8HxBHTAJRG2k/tCyCDrele3rMMVQrMKwj59oG7un/RWeArANVxN/wx7CGwqHj0sSXNSH3xbLGBF2sZD/xH3jqyrtf00mCjO/i8zkZkSx1pHFDxupBfkdBvPWkWBgCvv3XAePiwPtMtL0BByNrK3ViheVze6/io0RRWVWyYqzLcPAbdRIM2Odgmjuy8VdppPHtPtEpqDmQbSceShZjTyARgFrJeT3fbyh7bF4ddpcGBl9savCS/MNMrG4topmWv/3QlyyvywVcO+pJ1k+G7NCqVjblK6w43BRBbRYnQ1GulLe3A9Nbb6Euht86KBdhqmpvqADGuHtNjaHrG1FT5RhDTWmekUnhGnL7vvz/VuRlqboysEOmzqd3ki7rEi8gri/mWTqgd02DBrjexrdv0/eq56WfRiW+sq+mmBjBOZCcM4NP9bDjS5gkPKR6a28qoea8HYhNDJfqWKLc3fx6JC33pDUFRK8WP0aEZba/k4WctryDCWzdapwGejBXJUN8+btDhoU28gCzaMClnsN0yjRG8+Ye9SbIjbppETcdqxbibktliYu9CaXnEQrgcKm13TDhbI+n/pOg/VEYWjkaSj0q7UiWwjFCsb05130O5Co5w6MImJ9e2l2ukFCC2cUZ+pOJUhGxPmpaOABu+hmwEq4NJBg0HQGEb32hOi72VrzQ94vaVrOfmFzZGygTcEzv5sfBKs7K4NKKyiAcwQ30TGvXGosvah+ICa7TSS8bXxELbGBfpXbSPJywfjLzrccg38xfAfF6pKQBJFAfAIzRbBdxj0eq0CpFtCwxLpmSY6uPwqwi9IIMYwBDfjfUWbLVBilYPEg/mL6djJ1l4aguDz42UjgzhGvBnhoWDGvHCKbQVwYSWsH2mSazoDt4VLoVWHpDChGD4Tf30BTnBTQNferAO+ZhzfHaT6R9ahaog22CZXblfLE0FzoO1NqZJK/pOLth5yEeS9AR+U5dz/MUyZwvaAtPquEeMdWlT7HIsfMMVSSaT3XvKxP+EMx/KGlPjiBVqoF1CyYB3FbCZd6gI8p9BGHewFGovd1rPyMnZrmKQtZVdV141/MMeeKq9uU4Cs8Zyc7/9OBmdX4jVyxyoPWO5xMZLX1ZGImB8uLBRfx4Gxy2IqLeFxj+uSy1vcOT37kwuFnSaKBAXExgoV6r55aIC1ujOZHxiA4y36TN95ydaXWM3qeGrxLrFioF8hDClYmxMAZQuwjemL5zkTlfNJtHtV2GMEqnMYm1actepyqdx57OF2k9U7QmowzwoDj0VtWsLo6AhJ1jhlSRj8VO2a7i2s2MQUACdvRldIwSUZrfM6LQPaAxgYEixEHhvcoM1U0UoNJ2QE9sug40O4zWxY1ab+gyOqiD3r4xzEInPTLQMTz1M9d0GYtp38OD8HUkBgI5t4ozsNygToPzRRDe7oj0KpB0aLz7TeRDtsLUW3Qlu6bOcVbm16HUNDyxaTZDwNU46Mxb2h/aVfITsZu9pFmc1ueR2VIUJ0y3ANR5unaWJHnfYwLqSoXzq8lL8adqKDddglztPR9Q5JhRbHPdY3mSpiXq95DFvI8nIDZOq3BHPzHWLD7XJMXMqa3lVmdYCkFrIF1WbmnW+jPtw8p1puTl7Y590ey8IntRGrBcAGknuZQy/kCPdpmhU3fJ+uX95b+lLfUb06bMZUrbtIJx4dtYAfYhhvWvCjxtAwJtlXmuzYaV69++77fRMrT9dfvTO5utCHk9iod1eZ76MOwJrGES2KazlgNIsZDs29EKgL09q779xD4wgxYhkVr7NLQs2y0PSzH4I9R8bPut3AzoGCcIrShgnMdgnAsvzYQbs3f5sultRqU53MCm8vCXG6ZVEaIg75WG8rhtvIehtXDB0QAkPQZckEX6Thgq6nNRSw21R6nQCCWy4h1WUjKzwnppYcbChcdJva58ec7mCWiAO6HnEmPjUmYDrt2dDsWll9dUi1TyHi5Zpymcx/e9nOhvQ5OLobeH+fTl56y1ZIRCkPpEQL5impXVbx5Ykjg3ZTF6ItkKF9y+d9AcN5G8o2cLJBbUY9Nff1NRZvX4dvIB5RgLg71aRIeEgoapcKIh+8pDvDTDjnS04KLFAehRblnBeHdGrqd1wvpdSWz5qTn2ERdjTO40PI92ppP2ME0uHvBN0GJIseVYPyDtXUQqcSma5h6bjwak7nSCGs9A7fm3zQN9eQ51rfGak4ZPk3NTLaQgt5YQFMfyxuieSpL0aFA3ifuACUxdf2wFpwbYuCVfNRclTbSXojOAhqBg7i+FiWhki91OcP9+6uhsjiqIu8/yRJxQso72gpB9sqf58GEk8X1vn9ZOmSRND06GOM+SH+bAV102HH1Gk0eD57AEXYTMAI7yqzmYzcpPAjhpyAKfj/G3PrAX5idkx7+zeK5sMYsZr8w2eC/wMzm8gtRD2X7C/PIMnyHbsx/AX7S4776ZDMDbYm7cdTdji6FLk1oTwSzot1Pz0TMdILbv2FqbLgXoh/T3Q9YbWzwQumJiDOXu9EVzrtnt7Jv0y3cwYn7cuqutp7Gl24E27t2gBvnV9/3+Sb/bAL0WeVW/FQa1icjQSv9dJY9ccTJRb+pZJs2Aq9HwXt3XTQ4EHh+cRGh1pLckjC3nZsIXhq9T0cS7e+GLmGuDWOrxFGNCLX88NeAtdvU4U9Ylv9Awt2m4BlzocnLcRlDluzM/otHQZ612E4VkwIbDusRzBjoi98JRqN6aqzmZClMKoW/TZhKSb+VCevSCqraKlwMtlXF5YgLP7IA03RDjBpce4sqvtBVqxTU26E5SHhYENXBL1c/h7ViQmOHpf0DSMS6pBLU21Ta0f8VMCVbFg+zZYwTjx7GnBMVkTBscOXb3jOwZkkkINtebgXwUldYxWT6bdkHGKPtY6gsk4wLkqkM31+yxslD4f4wWa+vocer1LOw5zNF9ihLVDdL9dOSu4T2cVMWOnr8mkGHgwDfALhgBw60a1cuhVkNMgl74NfwS6H4egkR1VwwklKZKjFDbCOvlnjiDlQInRSvycrj0A5tTIpRlhnXvZRWZSleT8+DzVnpsk4hvijl2qHwhGnC2fbRVdkl4V6w83BepqLUzmsaUcKRwj2fNNw3U3vBMgpKevFIOi3pxzC9Zf0SdqSLivDMF7ly36QHKOWRbCNrBCkStkWCxQXurxc/dnTBW/OUTBCqTU2lxJdLiMBIgXnBIog9rIsBzQ2SZ0Snm4vHpDieiTfKewTBheo3HTfoKA30txZ3EZ6UoktEHoyU9z7Ew4OnEKgzGnVXOMlyXvp9QBRsTbQZEvMxcpBjqrzDuJrzkvyzxwt1rrUBEhzvdcpy7etS29SKs7HwrVxAdNtAJeqbVXF4EF0rkVt/5sdnbMadd5daRynC75CthQti9kRHsOtxL0ZdVlcmPoqC+wLgOvVQE15LeG/FxNg4Fr6V60JLqn2q+KLeQrCzLtV5XVrR+A2tJrTXX6+lObAsg7JCHBZBmSbSY0nryqqMgZ0epLcAHH6BCIbHUJHdPWxpbsdE/LYGHGj+Da2in2CDAo9YEuH0+axeM67wDe8pYgLp2ESj6KzH3so7f1sY3FzfKmiBGPmYh+3Vt1v/QwIUjfXv0H58wxMdCcfxje/yckqx0y3og8faGRieBRk2lDJI8ix3e7IYbitWzcvYNL3WSf8TbaP2yowToj12ovNzZEMKJnZMeMsc6EH1Um3t5WeczREkSU0V+zYunaRktgTguJ2L8CGVHjdNxbmcqlaNebK4EoFJbj10WiwK66vPGYZ86J76VaLXAECVCB7pqyfUjCYNXcbGvb584wd/n1aekUEUtVYRlfSPvptQME6NF6F4OaV9vO3TVoKhZyxZFmjzDup+aAYFvSAEIU47EJGOhZjqL3aNvsvpcMHeFJvhiZGoB1Zch94VTnIEZnkH01ZlNq9AJBONAmYlbaR6NYtJlyQVQUXVjd8Wh2pVahgrmpXATTMxDIVoqMTcDJqb0PnigezmmTrnbFWnGSmRU6UNbUbkdDmhgcxiYdW90TgxeVWOWEZSfeiwMutNPYzRIWoY3r3Fx3YXhxmhxs0fKKAi2yb+JjpmPMgNQokqvGFIfUtVmWCRVgaXQ5SbosBawkAWFWdIyMIsZmPA2nqTMikF6GT6ZtQyKCf7FbtQVVYMtVBAtI5bQVuMRDKqy2b1kB6HIwyp6PdaCLzRLGOk3p4SWUysHmkKuGsaLq27bZMLV0890G6XeqEQF20Wq2ZYJYS5AW+LfR/pWn5MOTbIUyOldel1zKFR8Zu8UB158is+Sf0MP7kBBV0NIwPl4O51jyenOaiZW1dBbOrtYNVhOIcxtwKUZ1tZU2hCg3uqifqoGiTGndqxSd1UEvb5/K6z7AXqUpeXFOOfRwUU2XlYiBlRTMBepNwepliv4LmWg7uugR3KFHtWHNu6l8iQ3lCMPVTM08o3jC3XQd0tpMKrB7EXzLZ3Hiqp0o7axN33zMzi1j8pq38U0ceAKaXrVRVXOkI+lwZWJ8eq1YENwuf4Aw8XzgZIHswjdKPbFZaNL7RxYgCBuWrC/SLUWvHh+FLeBKElGLA3/23fDU3dml/8faLCZcMTsmhO3pUxAVjtoG6JoujUROTqVaXE20Zq+YN8phz2Bw+6b9HLCujaekvFqg5dc/2DmAMONBkTZZjXaGoXk9nuKrEfl+p61LJ1/pHjExdaNe0yHaoJLgvlVA/sVm1/q8dzKhKcWsSuGoCgGrr1aLg7frto3vUX8tEMDfdPUmZIWEd5mt/4W+n2uO7mYzWr2vpeKJmUc4o3IxwSB94rbMoNUNF5fIiYmF5QVFpTJUQOVuyS6HFa1YcZ4V4RmLpp2jHa2PoQEuzbJ8ljr50bylh6jh0a7vsaic6xbFBreZuU9aKvem5pW/DysOUM2/nq83z1IDFcoWWQjWzlp3DWTDP4t5ECDa7G6+UdgxzxMFctO5g2GbXvejLjcMpCguoTps082mhyJFsg1gQnm173J7AEyFqCw7eveeTmUyKH9Q+SpZMsnbQyklZGUiRLkSydjKWTsfQykV4m1D0K/mDwju2r/0F7TzADAzFCM+V1Y4vFdq2TFwtEJ8FRbkqG8E97vKRTucCqc04m0TeBp/E/ego8nCwEQ+5st+BZ6EYHDe9FtcArO/PrP5Nc0ukkmok+Hx+inzMTH+m44940PR9tN5z8pj5dh/bbnJhBzbMdBf0M8CCjKK7C2Ft6cqORIjtHEHiL4rKGsCOOXvhnSzr1NQXWawSp+k0QvgmYkUhMMo75SRSluw+XWWEvevPZ9FEflg4OKzMi7IPNgPBRmKsKG8iFHmGD2hKMgkAol3BR9xQhQd4UC4VYhXekE2+/84oEKG74gMpfllbV0Mn+jkpayxp1zVvjUvP6fcP3vchaTg+zZUQtv7HkKJAJaN4IxqrIU+WCGBegf+a79xvxKn2QFLqobkvdo4ftQnrJSfb0IVGNWr5Rg1Arzv02dU1k0PyN0sDuSf7eG7nVjf8PZhn9V64aOg3o/OUSMcAJEuAS+gMMmsB92C6kF5nGrychi1psrXOdhLAU5ip4GfEeHKgo0kDQrq9GydBiIdALWu8yv1M3B7lcz3KHnHQogUAoKb5g429Ek7RKJmub059O+28zBkAUnvG0YvzG2Pp9onBKcf3k8ykNFBx8S7DpiZUQSvMQqk/LQ8a1UxmUUAtDUZCacQccUP09oMMc/KC7YweUjMkE5Zwoze4SV7gPhdnrsPnb22mfJgqOn/HDY8WZ3qi6HYA0bUsxy3kNRZsb2oq5xqB7tXyxnm6pkg1mHzbAzVeVuec8cIWlN1ADsP1rc1K/CatOVgdh1kJ2J7SYVhLT6QbgDnLT0Hsa2HmgbX6DC8wK6nTy6/aGB+31+HDz03l5LhRQUNIJyPQSfdSIllpJPcEXiM11e+p41q0QkeX6w4Ys+tz5D6Q+P/q7jBFtreFgAkiznTW9WPuWGdrKscIjxB6JZGTzecd4g3MFN2iuHN899R8wlgk2ADpkaWPb9+KMITzRvztDUdlPEExcWDE3TcAF1wB3a6fb30bp1YVq5lEsYoka2GFU/dBnD9J8mpGqMrcSI7wA7LxKoPNOp/3+xvU1zmifsmgJi2SGW4luZle/gh8dNLVIoYktoLBpQtDHU5bLi6UpCS6ky5fIy5g6GhzvKYyTYX+ZVE5MCQPo5FJ9J1Bk0hIzSi+uFwqci1uJVo+q0+m3UX+ZimVjkgQdaq4vpmaiRUqCpTgpakacgJEihK05AgwJ4J3yVMeyPy5uCdfP5xQPLWDZW/8iylSSNaOXO4Ojc2eOX0hTeq1NRrDrlQoAO/IFfR66VN5idHJeW8+uoO6uS2DcylTz7gMvLEvOEkseAJICauTDmtp9/kTzfSVF+n/eUvhTMbLfumbKNDI1txKX2XEPCZOa3sb8fmtduQzEjw7DzOLCBU8EpUW835rgXl3arQYV/WqJlcQprTPlYmFAZn5w5ggeMxfwDYxluu33J+UP6hbtw20Quqxt+vhusSoyncnF8msI97byUeam0OG9G9ceWsLMnugxXF30ePG762/TO7cDsZ7Iib7ZWeWWNg/6O/5dMFURuyXpPhgiMOIWwToy+jgE+muREKBdOpz3qYn/gsFCLbbXghvn8XxS0uM93tSPy/QVG5OpxQLCqtToCIaVrT5V3Dq2/w42zsH3Yto17J0ug59t//NqnuKFuzZE1N05kNeA3qU2YNAXQb00ow6M3XD3iqlDWqxvOmUz4q+pRZq78GOS0Bh4L6b9azHtHZS6uMhJ7rnYe1V4MrrHuvNjKpKJ4WXTfSa/WzRNu2r6fRM86ddgFm+TPVqZ7lNh0M7ohj5pcZQOH7XwDiTQdxCuQbdCNwWlk4QiaENFS9VhksVjn1kLntrGkFmtfpPK4HRcnVzfIDzQ2NAG8RaZGa0PuPGEC17UGNOMGtUZd5g518QzcQQDd7xD7xN6nvDP4I/S53waG8tqcBCvlfUBNB62q/a8vdtV1NVvlgUC0Mmd7zYymIqKVjRnh+uLn4Tj0eITwoADu6b2gvDsrlg8+aKJF/zj/sec4dWlj+y9vCrG6knHD5Kf8dJFMqScSh3dh0xeSVVeMRTzgm2E8m6UStBJxUFrTT6wv2sDNS/ztCv48yb8MBqj/Jbex+ek/txZOtM7QMWdtXIOqJ6a2pOvC4yxJeXHBSuQnV4GWZ5fN4GKF9ur2Uxi0l+4d6SLjZ/vbbokqzA2Jin8u4xGK68Y/37sHphX2qKF0jQaWs8/2ticnz25aBwsUKch2NWe80r4+bIWeqV2xCtdoD59Vcda5Ke1I3Ihxn7gc9L48+a9IM7QF2ZyK1A155FTjfQNDrxDGcotOjve8DX23CN7RmfFLW9rDtMRNZKMASNH9D7hyCd84qdRZ9qvflZtTaZm7qaTdGg85E26210nraQZm2aR+o7FF8Z+hJuxrzruRZ4QBsyZ9kJFj7DmiQshvq7t/NTdluGNU8c/5Mnocm+t95JajAPtsew22MXDa1W6o1gB/dkZzxXzzSXeGAjBSNdk2pexLa2qLzjVYQfO1+eKyEITztNPJY0EiaPppFSBjHq2Pm5VJYhutcEoEYaKPD2nyEpwXEBrMRjm14q3KxrYzzvQywsodz9xlqxrek+Z1j4jIXew42wUiVju+3Pw/STy9VgFAvUJmEVvN74sAVNtnW9NB+mP/uilF6hPwCx66aWXXsBe9EIw9AJm0UsvvfRyBOTKlmXTLO7TC3hWBXhWBXhOBLgNueQo1kxubRrn7/OlFV/ay43oVqmS8NMibZbDIP4BgYdsYEAhxWnTX/Hf+00YB+xofh3MePg4wLF9qy8auHCWIDbDDzOuOmYczJ89C1PdC56ugpt22H/ryVsyih36Vqs4vhNpHv/Ayhh1m/CclIl2fQtp+gd67Jqut3jHd2h9wDOfMAzD8KKxoXLExAnFCxor7v0ekS5cbbuewk9CLTGjztUTNB52rOP917u9M0d045lDY0dUjg1OsWEbN7dTynTkIJwQNFdzzyJIMIZu4pp5Cq+/pGL8+L6R0eiUBn3GIKnuusPN9KRBcgNMpEBjYmuO7wvMmBcomvu6mHHngoZGGjLLg+2r+fbMk3nQOM5pbx5GYNE4UdnZ8XKPELm53ycMuXjI/1ika9J2QiiSBRnAYfJ6bV+XEc3khkdFa1gyVsIEuabSBZF72LNi1z4xl/iCgqFHQhTLTBKnYT5HRixtuD1vYxXQTmc2jPoS3NKUBxtPoGd8Z2zCTnbMFkMNLWJzaO2AQczuUFyaEDmfUm8Rb7lOFNmemLRMWhYP7Rkg4/NQUGtkQWuoymzNjMoeRgyxOkM4LQ7tXJlPzgtlBZTUyXFRHNt5MSU/F6d2/pqB34qLdu7MzAfUoR3MYapoBGT2pALX84RpFG4uxNjUiTY41zTWYf19jgQy3OEtR8WBsy/hLFWoi6m++qLdBCFGIEtgupEX4rGLUOnL3KgcuGpnDumU1vnQgPgC5FVvUVhqtM+oxIEHLHbosjS95myaVP6ssWSr6jzzsu5hBA4hp3mTNHXEiuMBc1Jc7EmUW0pcprxlqbIdgJMcpqc9pWGqHOQjHwTlOe0yhw4ISYH2Dft3RnL7Yft0mGKGczBg9CqXCwFfxmN92df9DcZK7qblD5LaAHGT551AsCO5ikBmKZ2FlOtqKHLY0wkXVX0F41vZbRmUFo5jsmVT4w6wB32DC4HSJSlEi4oJAHaQhxSHdq7MJxeFsgJK6uT4uTi282JKfitO7fw1Ax+Ki3buzIy9yVBBKrpy+Cib4hoZSStvjfSzAEthK/J862Kx7VPV7lM9qSfQWkv+GR13Jn7OULWNVhxL5HITQr0vhNngSfDCUgOGICsRxAJqQ1AHeouBbUX10AszZ0ze936zR3Sj2fA8TYszKMEtqSSFxQnSQYAHgT9XaTx1V8wIiRYrPacEs1plexFQ/Y+7D8wKsxEkUaej6Pj+c7L6VDp9kz6/4BVkCwvyD9Mtwx0cd88Wd4ItWytrEX49SZrY94/AmbdE0sJLbNbonBqVN+qNtczq7lPeHbcLGjHzADkDuhGjxHd0XVKA6NvLUA1QG3lOe94V5mAqY4ybM2Mv0lpVQFmCrcapuL6Kp08BnUxES1PM84JqCCJs1RSishk/ksF0qgtzuhQH4N/4W7sJlu33rc2Rjae0cRpld3FT978zgkXwhRODXr8s1kpok+bA0Cpng5KgqrNUYlT+aCXBRQay2y+3iiCnmNLfPLX8ANlGROhbzkBMZqp+L92oZQzi+dX1IZY0+9RVRdJ4yjJFuEgPsmqhKevRDL8QUqANDznxSV0qfA8BCAQhA/iQYxSHcSha7WTyqqEX8EDBDgTVyWeL2icSbtwgx7KQNjZynxNpyOiY80azL3hpB0UQs03uv0GcSmu9KvJisg64UFH0jJR+zgBHzqsBhVnb1RTOK7sZXvNWzl01KeoTFgJVrIWuG8ECESRvhsB8K9KSjQbzg5LLdPXDbdyEeWJTnaqTjDnpSXVg1ddNHZSAcz/M0MrVUnyvSayu2LxpEtr7wjYD0Q5bvUOBjS331HQP0BerRwVgtsFcGS0t7nmmAHwNcy/YCZ4COqCex1lJihg+sZeVoUcXGhHvU61FnYGPW3dNXTbZdMCv6sQ4aUaRD/cDEZCBeYzofB6NmFwKVSz0wb5T6FDoomA3h1H9ZYpJg9EuMKFMsX2X+I8dKT90PgSmFZGoGxG+g6aKymx9fCGoLKaRAzH9zKBerOGC1KOsp1Nf6ndhxuPlpVxYrc+2wBncdZXmbiQmPQWce4FMiqAJLfxsrR1bqsBlx+2CLLF0/LBNwX4odmsFzd6c6eAopL4nTHFBwdAtS19uwxK+5hMHxeDXkVQXRnmQ8Cil6UjAK9xcGUkovo5HnUrVMwbzvjdZEBjXlIlSO1fZysuAV4scwO2DQGQsX9GDOwPbXnqxJtEQq0q2GTICotXRTCuewo3JMuKwaFDJcSG92sSHHG9HDviApDotu6Ru3zlTyZlEyFn7ZKW1tc3Cy89ob5BIFdafLAGxaNF9RCxYavJFd0Ewi8hpgcCE9oWpC2VitnD0YeUt2celrNhZI3TevPFgA2PmMlGJBREWQYqRe1xkHnXweyhxEUjs7R4KXIikgbG8HEoXpbHi0mVHDuwhUSJLQy5MhsA+TaDV/QVaXHLUwntilCQO1vRb+XBy9dmhJWq/gUbigL0AhG8Pb95+bXBLYgqypi3Cg1FnxEKTNl2NgBb8n/61SyYH7EQYnM7mNhbT/WSqMUWYmgErox2GvR60+GpWV69zneWOVXsUSApnr0qN3VIrin8qT97LSY9OK0WBBxSwuGU0//BTqufjHGsAOwJ8IsqrdhCjj4djdctlpCCU8Twn2u9nWuBwSb8xxdYFRm5Ll6unodOt2BorTUIqc1yoOd51vxMZ/WeeBqm9mtfiOf94qOrd+xH6FgeikZNOtSFXsVDl5xJ+He7angXNf7v+13RL8fPI9XJUvf/JZ6/Jku6TXve8J5flam+R/x6u6nIraBLdjDJjO7PMSlwFCMyIrxcyI80KBPgknv+MiJATqHLIggzPfby4SMqas8hExTo/xUD55XY/gWxARE9TnJEkNPVeK7O0xHWCBMdPPwDKLv/ti8YBpxst/v2+jNjetfa4+u/f0/tNfz+oOPz+Fj63Mv9zdHX6v9qTs3jPFXnGIDLnNFM2ZJo/t9ytsKVfjK5GxAsORVIU27yzz2Dj9duShl+koNneQhnp0X6WruzCsfYemdWkiS4m3MPCWInTLiAeclBiEQOFfPp0O8KFO+9GuAZf3hpKgE1yWqhgtMH0YyUFy4BTE5ivP2RK7GdNMQBKSRNaVNkf0YP3BoW5aJFGz8FsC/MYbHBYQD0ae4GhaNYPSLcGExd1oZH80raauqOjuLAubp/kMCv8CYCCl3eiMFRYDblamPqol0C57ybDiAzQ3/aAm7+hMNFs3eIYqYjN2HlORWu0PvJZYf1eoID98XShe6AkPADn4NRXw3n6qPR5qsimqcdhuFhNl2tTwiRcvtkqiBgFl6obDFJCGTwzV2PziATab3rKx9a/JzY1PVL9G0qa9rulYwALqz3YXVlA3gozcYWP9YLSkTRMiMZDx0dt8LJhYsF5pMBBNhILJ9vBXgKVoyheRYKXWOrd9dQG+P7pQ2bRxB4ephvE54jtcw4VKyenaq1AsWeJOqaokhZnkMw49AJb/yKqJn65w4KQ7bmaBEmimDwgiJXBLtUiQeSlgo6u9UmfCXaJPBte1nupEE7FdaAYpflmgaED/fEbRCTPSNy7siqchC9mDHGakKqVp6vhkqG9V/Uq9ayTBe2qaMzM9054EzQA6qszpNd93eGN2zKit7RKtLkkEF5NmXy403DTQju//AVATcxoO6UdDheQtA6zmzDXHlpjs9G7Y0JaNzuyQkBmjKFsi+JS9049EpfEPo4pNNNTqfAPK1Cky+nsGqv2NxP7UWCLuAjgg90BvQA7RaJWRXuCx5ocJReCtIhurSZniQHsI1zWalB6FSRIYB+QcPLWxVIEcJ9F8S0Hn212wVrw+E3KFslIhN0v2cCmGqN2vpJQTh1fFn9+hcnCcG3ThMNFIv/WtHLcf+qhJ7Wm/3esWZKknQK0WTlLD+yQtppplzYOWF1ubvYlsiJdWSfnx2BrDX+vwxATLmJrn5QL0aCX/zUiqwhlIyAaH2v6YXCclxnQhhgv4gSOYQabcAbdoaygU+UwHlJYmDxYcoiFySMQptjS7/hcKKhEZGwNQHguOAfUlgvudSZS2K3LFjlOf4ISoBC8jLHzxYu6ZnTJ8nzbBDxB8eCB3HJnfipl0cO0vF/fbADGjJqQmsr/KbgZvISvb+aRVqe1BKI/ZuW+VZ9RR15yYp+MlfbuNm/LFjufRM0CCelnRKaXS16YYEgT3QncTVhiIiRzKSiKKuWhjG+TtRhzScSOwSE2OyX/xQd6qauSPgYH9Of0eYedO5Opdwcz7nwcmQP0yhKOBaUAHn7F5BPxN+KJxRz22gJjGqA0qD9u0ZmhnwgPE/OWRykavVTJSo81MQDV0hIdWjQvyPAe4ayo9f+R+slKwTMW5+3pHF2Coj1FibLJaR/8v3OKaB4nC3RTBZLXUE8HkaQ2Rp3d2ALhkpAYYLyb98NrI3OifAbFFyJkh0QEVLZz2O6K2OoQ2e3Tgm2SNnyy8Rj9f2islVIj7yKK3RB/uvwfkiTdxPRd7PowEw34Z93E555YFvY1GNeLcVxy680JYcoQ5pBKMjJb9xocqXx+9onJTiOZH6zqz/VYXMehBculYeIZa3u0mIM4vv2Wl/q+77BzvfQIT8sAmkCfwgCy61hlADCM1XI2KRHbOiHbotu+K2mNDUNAbhlmZkGexZxp/N/jKDKvk1I7kduoMFmMg9eSuUQZbUE/Q8tMmuGKNMzQ+I8YnahNFf8Me7+kJNz12GFkTQDnA5mdJaHecTJL4TShl7OhwaIcmjLa+TbZeZO9vvQEFUwzQipNVtLAmnD0PWv0myXoXekwN4QHHi/qRKsVgVaNv+/gu7GzX2uuleYn/KAmckqejSpW/nGI4APeKgWLuQak73qbSNF2LMhhthHrRj10s74YTzrD03TrmtHgTvWNG925HWriAu95nHHXzumVV8sQW/drI/rp9ysFNYah2rFvK0lUAox4cT3r8mVHcO5szJT9B4j87jQ3Lz+MJ5ztFCdMkr63wj6AtFbhPbcPynunCeVWhwXaJUb4wArjte8jhLSXTDUPrZ5ygmA4qXIb4H5nA1wiKVAUbiosm1/FGDYoZXt+sHEr5asUbk4vMUFMr6f0BJjC0lJSocEA6QtH9hsAU8IxPNnOXWGn30XHTSGCa3cwZrt3ylk7YWsVMjzvXTnG7MqryEAz9R4aTAEBwxVuD2p67IhhyCKSdoZ3BQ8bPaEnY5ERNv0eOCN4M/Ux/ndEP4ANuoe5sgWO5Ol6ZPvLzjbsUI0IeN9ix9OarwJXoUMqDzfKw3FKbxfwd4pF4Hyg8DNkq0aTGcDzT6yeSjVgYEhjA8Bt2Ja1DxdtA9Dyo6xTS+qwLggcGTfAXSYOhWoM/sdB9ceVcb0yR5Lfnkk7J0R4wg7ojhk30v0mVm/Z8OuqVEUyq3AGBG6a1EzMzcZAs+kqNM4DCgyxEv3CFNIRmr9ufyVwdPYSU5uR5CkoJDE/bBvyXgORRe6tYCVsWBUmeBlsngceK04BRpBoWazHIa2ewPwoNjfoW90HGaqARVhGJdiTPFyqLIGeAplZlbXyPROWh5g0LWEMAxtwKewRNpGLYAVMTkjFiOk4d+RO3azjsMyFxnfhH8CnMPMBZ7kfHEJYhQGom927fr3EtslAB0e5rtIEYS33Es8GPHt38sQElWGOg2gDTiBq58YLgAbZa3D3NiZzXwix5t46H0cqoqMvQrHm6ECMjUH6GBCLnKRzjwfx0X/62nhU9fzflnRzB7cOGEu0qMEYaBQXGeVAECyREHZAcbI5JUko1m6QYR0mvuU573TgqyMPpg6BWo1g75eRneNOe/eNJzSU5wgmt9pKZCZFy5IQVZsVO1IapTS7jOmmOXOvyw0tuWKp2mJmI9khHOsr3Z+u5lTzXaR7RdxqFlbYgfbKlPa6W4lPrM5lAH1EkX3e8jkQl+/EILVg/nvYWYddswlzj6JSqaNpp0dNo3YkoFTHVYh7dye4FIx0D5dxcnAntYKfhvKSzy0p6C7ZOeB7r4F4Ku4LgKqHkBJQPAGF5ET3Hb/PAbJBR0RkoGI29thvNGRHnJqNc8hZRp2EoKtE302X59myfA/L51SBok5ZQOTBngwtnHZjcPsx8tdJYdbsgHG6fTLaE3/gzj7/szld1boZTCDr059Xt8CALKhq1NJOD6NR3ksQU34DcIDEwu2kc38hbBjH0Nj1wVjRxsh1amaitcxtwlvBworhtTQiIdNDG/QuE77bsDmMwkkkML1GViER4Rcmev2mIoYj9wiIBqFyym9kuWRZgG6B0yLR67pFkdNE1LFO7IP3ruJNQZOZTObkXEXZnxT7m0mstBmXvY8btHa4si+rftZONUN5LQ4OISU69YFLE8yA+RU1cF3dsag/LwntQJcEgxzMXHacbau6j0w+dxd/9E4BzKJaVKWTM1wqKoXgKZoLrJS2show1npI/H/YhNYzNmaC4LnDDVnwZkxsWSenfvCHQOPj9Re571yRsWTPrhtU8ypG18jz1gLjZoWdst72Tkr9pirjbyt+jIqC6Uz9AV59SSBzxT+9EKlG/eRzHQmKF1GMIJSXoD1Ustpzv7i85kn3mJTyIih1ZDo2E/XZsOqqoFzJlkjQDQOnt1lINhpqBkaLpO4k2Ny/SXkqZvwJkXzL1kxk7tJF5zPSC9+hX2j8FSk57LTJ7ZRsZc2V6g7MaEBn7BzBOWDVDkDeNhjU3aiLuyCBmNMVxmH9dVWKtKqZb2mNTU7f2hIIP1PMx+mwCMOVcJfl8mt7NS3FukK68L1/eFcIFneGfShkMWy86KMOsdRZo/tQSChnBTbV+O5Xhu1HbgbT2gpCrCJNJuOwcN8WniZPQxBdf++c/biuEgv1yTMtQNaEYhJ762XVMlezR7O3+r2IwlnJhOMGSoyUuyj0Geu7Qo3FYIQPg+ENMzeDvo2o1QNA/8xLGctSrPZO1JFl0FAkvlaWeyQsR1NubSU4FrtKAndrfJN5TvDiLpjk4zoSTBUQMZTyiTotgYDm2P9MGrzaBjUAmPOhmcTwNyF2WtDkrItBoBhKVfFeGF7htmoRDNQ0rktFBWy4qHblWXmvCuG7sUaOr5j3xQckY40AUjVFFNpRHhQqmBJBwlyVrVNTprQN3tYxTyPGiYfJRvVYSOfkAidNvHHj/SJE2VqxEUHwF/Sde/pE9PkB53+I8XRSXiFmvhFfJk6cu4aJThDclACA5ygdi9SMr/K0+ue7RruovGA9F9hbhIIkbx31Ri6DNTDCSQlw5nfoFW5BdISAnGtk1AbGfxU2WqB9sk1oqv8jHcms1EeX+E4xTXLYoDwncCdLqR+rknN8YMUB4u6usHifyJoZ0NCI+0mRaEs4WNze9gWBzU4sJDBuxSxfEwGIHxOVd8pAQ3ZJpkqPai0ECDjGiruTm0bQBr0uV/aFJUnBkyDuLX4uFoepBI/j65QivbW0qNa0wyUHoC0B7hY2mLBX7hN8mXgCwxrId+lzsNe2zn1iYfKFBdUbF+pnezx1A1CCM4JXG5GNKarzqGPw9G34bSOnYbM+3xOwYj8BgR74QEYGjAEUVGbLCJ47geJveyj+nj0kmqtT8pAsbZzjlapCzPFC3PQJEGXJBRnjQOEpNwyAObhZiyYPuz4NY2/B1QDPR3J/M46G+KOKYbC+H7nzxUkWvwtZymasHgBhbMmRHYx1PA1QTx7UTWXWCKMYd3k3ttZvRBtmqOQ7YvyR+XyPq/8yA7+HQneva/aNBICvTHwxuUcutguxFu4WAfyAHCiogb6e9QLQQcvba1MaMd6Yni+SVT8vaecWCHY5FlLK/QUwXf7WDDJCLzGsr0HYBxo8plSI8M4PL/01olkvGMD0MVBYgM47gn/WI3of0kPm3tpXX9QdjtU0hNj+vi2/y81vNNo4OtPGxWTusBNVeaOg4jD5Djn/53/1SYc7TTeyrDo/pNeAbxSflqmo+MDnoE0iFanEhBhtfgEoUtG9p/GWK3IP7T4Mxo7VUdzp8VUcSWBb8bYCZZhXgViduB7jOxfIb/y7F6eBrBC6E4mW5oKfK41oLwIY14UUvlCtR/FedPUp1I8cFdVHFeowhzpXiekrAnvfqqnNG/7ll2JQgZsONE03bxr8U+u5xz/1dQmExRker060frT8Nv6MzjkwWVPet8Zq8hEfLaudPxssDmEJFO9OUYBfaCikDzj1pH7WQF+r56ntzP08lKSXrIetXTV+2zF4rM3WaNO1fjtoXQnHOrWbKQ8tVMcP/D1yBVC5lQn8Gf0xJvJk5MfONhidyxEg0TsrawtRzJ3i4euvjI22BJF8xlLQXdL/Ne0uH0xQn9vEIepYl92WXC0Wbb+Tp9Uo0ZXvy8n+Jsa6+i8yKelWTimma8h0dNObq8tjdgrhpoZKVLCzJybHwMgwvrfu0UHkmL2riZosFAg4fh0GoAL8dI8H5NHb+GP+s+FP3N5Xq28/ev9Qf+KT+y3N00jZXlC17MEk0bdeD3KQAEIjdoHtS7PFaZYCpvVgpOQWVOGEGpbC7srAjGktIMUNOQe8VhzJSHbBg0E4i3bI0bzOpFQpBaqHDXSBc9oTwZo+Y5dtGgoiNq1+rxnlRVW+T2riAwelrRi8B4/rUcp3Ez8MCSKfFB6TW20yvJ6tXjJ0LCledsT9WsIid7vAZxs0hy0YMmAc3H8vb6uMffMCfPQvLthdrRTnN1iZGcPhdxJnlpt9kwWA1U+6RchD4ygxGg7eKCDgmmteLbYAGZ3l5fP5D7Ym2rWkiONP6ePyxI450+IF7GDdePLYRXhV8omvnrKNgR+8ABJlQn7hKWKY7p0F7VLnkoXao+iXZEaWHaZm9nDYoSej4Kby4VDYI0vr1E6O3i3BzLO81b5T9KskUIg9/DE770BqFuccDJQCvF93yjtyhCA/0TcvQCdUwPRHeEBOFpSW57jCfminreRQfnAebthmxCPo8gGy9FoTu2J7jqwgYc0IIWggnEsDDdruEmWdz0FctECPtbUj0qsP2lgdQpNUFHBiFnfi7CmUqmlgFSybjtp7rFtiOEcsSZORCCaRmAsunB8VFZnIw/uTjI7KuUaEQ8O6c27n43vaH3qshhq/JJZEy9vxkEukbk4YdB1pSZNMaCAG98U847qyKFG3cGlFjWhnb5pBhBp8crOSpBNVqN3rufCcCoTCQBA/ecT9PeuxoPeeRtcc0OXZPTeY4YIePBCM+QCxUEN6qoG977y3P2fpR9hPjjPZ+bWZizaDTc7B/h2g8/LaKdpg1Eq3pG74nITMnb/Ljgdqv9fGfpKTz5II44g9SuL3LYyg0D/+IMhpjCSO83KL/0YK0owdojwkiCQXuBd9MtF+vyBDjT83s/n2ywk74FStjaUEu/8JmDEn8eTox4QE9Tuz8wh1m+G/CzhTHTjydy25OWHxHWc/OQaHUHwlGfRRcz8l/gPj05gQcQC/kD2ruwfUq6STC/8eMscXOcnUDuzXe3Jao7UvHQSVTpc8whXwhXp4sxQLLC0ZJWtkkH15aG573kJ5CQm1wuaoIAU2VUTiODcGIdb93jve8J8D29XQ15VyS21u80Gm7Z5li2t3Tkgmp0gHZaTDiCt85UH3X+/hcCTc+N/pw7Udrmu2yyhJSd7GLR+SNLR1h0A/XgvLuiAGZQqsPzvUNkMJNnb2thcUdNGYDnMRpT7iz1gGI72G9QQ7T3emenOuc2CmVR5LTG4eiHFbAl/bPEI2SJAiTBPp4RaNml1F2y8W/tvpn3eJrI5QNCu11bZFxjWE5bpo/uRaGIj1WaQdrNMZWfHAVy49euuwfG6YqUePP/L6J0e34Hxv9+5P9BKRwcqJOxL8QVqZsrImtvQugjLFdZvgdCXDNpJ6H+tpI+1NiCAefiRjPlxNh/jYGfsJ6bLHgtxFuyPG3UncUKTL6Ge4zyP2AFiFNSE4r3ivuNR6i0rZHR5nPGkIA4O9EzlnFzV2fgr6HdOKm1SFefsMx9Q6/MOZ0pN8YHcwKlhVM4ADzSXWIbDW9DbFTtjmolshfAHn1J3Z5XNlpEKPppSp54JOKSpyZHDZO0r6nkPl5d9o4LOPpPIjkxaYlAOg0pxNcXNSlT03w7n+I7a2YZZZHuOKdUJslnVypY592LJXRMUHrdE8kn94QjfBQFe+yuPm0NCGFI1JkqNU5LZii+tLpwnnbC2fcvVLEFieg30m4F7sCVRwsD71ModjfsYVcRGuvC5OjzNSu/UdXryT1XYS2BkDCDQDlFiSUBVADLlCICwhxz9kqR4p8T7UUn9rej2Hay6CFT/MKOOdPwiyNE0eiMjyi0/SLebZ9Vc5/wSt95dfJFhVygoriEpfVbZvMqCZmCrC+k2qyVCTYxRCeVC9DOCKH1QzNisO/CUjJeOurBxYcFzMbibOg06fq40GNcvaNmdUqVQ9S4N3F/ZMWOjUAqvclM9YwgjpR5A0aSJUlUKW5qjJYi5xUM/qrdhOnVlUxgzRY+mggwFGept707ZHXaVx9LT5kqtFsFulrK3ek/RYQpxN7fErT7/cJirOtyOGEDhtSDs3fnFvkn0ZlDsS9qopgcHJ/ngvrRZ+VP5eh84TqzHYCvRBeA5CGrZNC/KjMKwrfJYvUlBu0UHTrA7hg7yZduYRXd9HhTRHN5gtuNjLHpsbkBy714+jeZqmZF6ihkCy63dqdRdfKJVJzu4MjSP/afc+YZQaNv08bkyZ7b2ndG3VS8tHkT27vyHYoaB01QT0eG1okG9Q2G36Tg84vVf4w82FpIg7oy3Lan/tyO+sji51p6iU7UKOWjulqrQn8qM79/lWOylu5WzGru5o9Ky4Q4pkosZ9mK5ZyTcgrP88QFOXg+mv0wn3bjsWpi02o0/u+oD3o7MEauOunMAFGJVy/41T/B93NTvOfPurKbAekwrf1dUMWhH1NOHKRbEKjwe/8EkLHMH3Yy0MzLaLjeBOPueOpbZdeaVdy53XusvTuwrf3XW/0f9zHF/cWdDgECNXbb7bal/GeLA7dXwfKl+mWOVYsvU5UVnmQO+ciUNbhZrbo+EO9JH5fhG8FS+WEHR/PVqj1MNd2zlu2J7+ppLWlrzOl4Mbk+XKWPhWLgh02wjZhBilstr7LzLzlbc1C7q6Bd312vM1Fn5fXFJg5Te+WZLuZl2omH0r/HraBecMUBjVI5yit12QoKWGFhzkex0CCBQ4glqxTtYHP2E0WJjWn89U2d/jdC68ldtIDDhPVRomJ+VBEEsSV1pcfHjTqKbG/HtoNofR8WaJvbadyfduJZBKBdXw9SKujzrGFuwn1RpZxSdMs/ZZbzOICr+86w3E2KnXlxL+ZkgqjH1vqUhB1ZfUKr7zVKu491G7imGyIln0ISHkbi2xSxqzN8trq/+78VxDlcs4NYkBPmQoiNAeGi0OR8/Rf9sJmhJYji9pF+2QxhXALFn4IEGP6YudV27SvOD8hIh3hLHUKfy5pYMSKRuVUFQlH+8bD5lErhNgNmlD/kZeSJ6iwJHnOTNSiZ4nwzW17Zq5n2DEGTMVvsvry0Qc0+zwZdJ4VoGh1VvQfDWjIukkikpeWrMayTDOlZNeIn6C03QTdT5C7dyJ5aOpu2Tm5QSDZ2QVvrtL57RAez4uU19Fm7vubUIY4RrTUzjCEzAiR1VsQHXQZ49RGX+9UVVAQqrJG99e43zwe80Xs0OK7WrHn4dJqKA+oiN//Wg1GPmhQuf447c26Ynp8vZ+Q8+vIogvhPzh2I8qK7Y9uNxSp83DzByGY0Lwf9Oq70kmTm1CTrS+efkrFSGflNZKexahXk3nX2bNnL4fQx7kSK7lp3D5m9umrMMxP0kKIQLiiMmp/FdyrPl3gs386n9ZW4eHnCcKKL8btw16Eas6x3dehWeR1rvyAe7qVAEsjsKctzV47nJXGwCY2f2oBA0b+9ei2CGyBCJUJHMgT6snXOPIGdsIEOY5wfoZgW0C8iq6HpngmunhZAJMLE/YBmrdNdyzNsM3qHJwpOP8GoWFKNDShCYTvWz+KQuM39sbk22ThlUnUoHDN46iiwcRI6qxPKnHCl7DmHRu2YVnaxT89zvFPOjmsMU9fIleIu0q4w2CQWnwx1vz5yeihHfVMjIcYHQnQkn95OCiPtusK/Nn4HtQsgE5jCRCXNEz6MYzxhTp0c/n/QU22aOG7wUZ+USyHJHPZIMdhI6d0Hwn/0pokD000239GAKcnohyBz/wgJ+XU/mYHjdt6X9mvGQG2AUY3qUpVc8cIEBs0FKn9qhbI+eyJE5vGxflonbHGxFe8fio4GM2aaul+g9s6neYl3DPzIG0pkXpCyZWX7KG6CKxvrdIuof8w2C5nT0vreGrC5ibyOuSTz7SUGb/PI1WjqJIFI/qjs6PMtu5e2PcPNcn0nFuAs3jmdY/Q+56QR8Ag8Ih04PzFFAaAjvXyTJ1H4ZVyZLj4fDVYRJItG+alEyeXtpiyjT45p14FhQFCzLF8CvkoMNUG1dK57ylpI+9zDRWmMiuEUzf4EiiN0bSJWHlqnhGHLNvo8FOqnPw7BBaFGsbJo0s257qMQgvxPmZAKLBIzFs9wAVSknoMOwr0LvGRBGR7z3Bj3BJwAfb8zkxNACkccAFQgbo1OZK4J9mJDBdBLnZlN7X9ebfhfTm66UhqY1cqUkKVypSiKXCl2Iei13KCIYzqIwAQOwJQfsFiLyo9KcFJMyq0zHAw2kyFD39BpDDRAFuCfCMv1nAifwX4T0AY4k07sCgEGaIvpZsVgHFpr083gKw9+rr7nv8/qJyfzhWFws/XPbpLkZpZ5op9Y63Qd62KzeHb4YiOp7wqR98IrAeh4d5MMwmymAqlEhE29XceKEBSLqu7+8u/3w60y6fafE/rNoVTQWm4tCPdAE2aMwHMDpWcDiP0OpfKOFJ9/qvUPjI4S0+/D8Ja0IWPiWsc8Uq/GUKYRMRMdUfMwoylHdRou7rwzUqpqjZRIN4V7fXuGcKYxMtUrqxGumYaklm6PTd403RiQv2q4lqQqry5/5CQMvsrzeqaytDa//Y+qB579GVo0sn7/TeGhi48teQuVvAq6wvMmaKxmM0TP+xCPhPQUGpSiPN68sR5gRPbjsd+THfOsLfv6y6FBm4148emIIYw3EMh4WjDUcdEVVEaERkESHBcDAorH+paURdprS5e/5XX4lQfyRyMYpm6Fnnc76aXVG+0/5LR/MP9yFP6tLBjdrBkjqETK73qIRj/0cKzD+3cAxGZPBBHPj9Vyc69l8++J9fw6BzfDFPs3HwXz7wD2uW/s+WqTVTFz7eSwnOuj60MTwm/F8+2n8Uqqkc6w4USbJWUNG2JrlFJn9kMxB8xSM3E6HIVMjL5+8e1v2Q1LE2fUGMFOfZt4e6TE3r//KBcb3qmFpNWOBf7qmLf4WwOkjolbHlCIgwlpr1WLO2NdmxCWici0d7nmCBnDmmlY6sJ53rttY8xu91s5osOK/h+C/Ow+L1ZlTHv8aB9KMiHsEsMvMNjbv+XiHqW+5Wg+Nb0g2avaoTOO2yomXJV7pwSsf9kPfWVb6DwNt3QWca3/gYs8Y5Sdlw3yyywQ27IzZ6ZyBPFDSODN0mRB0LwPhzadR3JZ7FqOvjSPcYLuUklPIWf00C3uZzfctdJTkSM31bu05CeMHuAZvEOZkIN2AAqW/j17QEJaV164uBJX5chqEXre65X7JNUCKDUq/77VOFxexdfqWii4pJnzzBn3++7Kgcs4zUkggzHI6O0jhWqNWGVoH2oxUWKy2K1OuTt6v/DWtLtgSqDKvbn3nEfAj6xwtpqJg7VBCjAPwgSxiQCvhlR9omY92xPL/ux0jNJc+gDGQW64z0Zf+TSIpg2Y831FAEhWsMhblenoiRMBcVROuEDk3F/isNnQCAp8F2j9oygQ9AdspwddIsCtBXw/mD8kGFDS27wpxvvhLOjN44ffGg8wZ8HoKPc1U0iOhZ+NqaNv6pJ/w1jSw6f1fAsb9pHrNSNz0eHpkW7jxKr/UnwY0b1a4wd3lmDybRuI4jj7Iovuqals4bhERHkah061nh9dEje6/R60UaVt/IWMurmdfYq3amdFdIp6R0W9rq9pSn8j/6+jKgoW74e2UWcsEQ9FAOipltqfJmL0m7JJhL1hkQm138olzstJzR1NRJTPXJnhp1aq/AtWxcGYsxcD/xlH7KQMlYYhnmgNiJZRWK4NKo3RFr/tylcodVR8IXEuQ1cdtKTzOPp8q0KnfN9RwgxEE/1FUVbtyOx/dlvReOmxsRPZoQzyLq08lTAkPeNSqLN/j+LAg7+FE1+KjUSEdtrpA6V7hpoAT6zhMlFw3004XWAxSmEV2CcO6j6kCdqBlfWLsAxUTObX27+8XxHhN9Vj/zocvvrIS3lXRTtZdH5vIQmpTM7enIGPtj8jDtUmgO64XuqGAgCR9/0LrESg9sYjDYVoaGrwWDD7rhk0Bd5BB6UukTon+/NXPxETEpinfsIXasmO9CB4soO8qiqpnZUwCmuOl1kCwLs1vTuMhudTo4WbiTgkVNo3pLRNS7fjoKyuVkRFIuNZ8p+Bzqy50NMLBYQqG3BMLb5hXUex3USosl0ggLAVVWSZwsSol4bZ2gy72iQKjKo4BdK6VGPDGxTYJyTzV6CEUdO1QEftEmRJ87Jym6E3VguhqlwcsJF0e/AC+lIJCDdOf7aDjiWF2cOGcOwUSbLKtKu3HINuzX34wD/crZ2teKcWEv2NU28Wh1GPK1WoH7H+r/Zf6U2MxhuKcTuH6WKuTbvOTJWpJrLG6ndD3MMksziwKtLwCRP71JO8Trjn6tCBu5C8SqQ+J+v8zykBOgQTYeO4ooUzZ/9M18zUB9NRy8Hqw7DgufGUHFAF7UcMxsyUOBVadpzRkBcsC7/QGmABy+x73rjmfxGxCfvdIOjw5NWiZ+ToY6hyvDHQWcrUOS0cEhwX8LXzElhCvX3grDHYv2kNCh5OgHc6G93DRMpKc3wNyM0I5YRFSWG/+RUKXIm7xJFJ6exrlfhQgpUtD6kqBnbhr2lwNlfpikWc67qiNT97vGqd4tpzMbLdf27PHWNlIIOpsejzAD/waRrwQDSdHgsFKpyoG3VTq8feZk/UQvT92nKmR5a6njBdzIu4QdepHRluefkjHd+TLCNAOMeiW8w/cNlRyMHVai8j+O/fvUjHE+M0gmTubu4pH/QsDMENCyd7Er4O95fnAz1m7Vmn6zZA/ZRATJW6U5PU6//ywhD0LbSCgvktkWWvSXNPSl1n/0uFnwwrs01sVegunEzfJIwUEsC6rPbF5HRNZecXi5XozgoVQ93c6J7nN7sYUjTxXg0xbM/i7Ix/HA3pBHETvB+k5RLDXTQJhxr69M/np3Wlt3wYzr95mE1PNReplduGH4XLqJZZkOSjHnN+qMX/uORlSHu9l8SkGQJ631SeoJVv/WsAVHu1ZXRzDubOmdbxMrvvJGJugqVLrsSp5aBDt3lUJPCshk0qhHKWKYqvUxQ+khMD8I1MpSohoyx8ClnMoFFvsd6YPknGuH1MM7Z/z2Q4VWD6hch2Q/b1PrqJADJ4boeNuDF+opP6aDSMf49lumQhX9YIzGQ1kexkd5vwFRhLb2251Ez2sg3z8QtchIWlIOJ3eFGVTNw48j/vGH87CXpG4QZiqUz26MvDVsEHstQsu0eENQpCPXBXV5RHb4yvWeK0o9G+yHR6o7osGxTI4PadDnQYWnyAallMCP9XXa6Vbnqul+ZoBUJIrI0zxnNPfgaVkBxJCoT/wdmZtIFePEfDSUoYGHTZ3wwASXxHzncpG86N/fTV8pr2dit2jkciFFG6Kzx+DA6uY8sLpppvrKmDDgz9FRADgLtnnkjYIoYC3O0b2+hRvVTJ80wLQkrqtMyU1jxuKYWPvHqnBvKE137AqfePLEWE8AeHeklXQf+iLu2ZyBxvkvvRwSY9+PVlA3H3sen5TSrKyVl2d1eYlJ9f31lIbi/ADADrL9+2WsVOVxp71TVkfJElwDA2P2VMmnrdBxGK5QM2uL/n0KmH3mR6U265a7oMVkQC4lgOCfsZDaFEzbmaGMIieKelhcMf+ZnO1zXNs0qDZsOwmPz2ZdKfVP1udRaBCm6VniteQ57vSpf28kNb0qpm2CpJ9a0fwPWg2VzbSSO9ijlFOG4mSiEWld66x2TYk6gQGXqtKZZJhZqiwyNO7QqpGqforWGZ/oX0+tm5L79EsiMhp+/hEhtfhwFbvxHl90hTop85U8zdNPDoHhOj9t6qib9bG+FBOs7tS/6pNZl1/Qft7OQx5eCdJJI3RY0o89aYhFv0T4MKRh1Rbukp7VnUYNKuQWKuXyd5B3TrebDL/hyvyn9GiH2bmE2WgyavxFJq03VsOjFjXcHF/ztEt4fJlNKof8oze+BYKUd/JZQn7SX0MNZG06b1n4he+t4h9BIfOY9XdE7dCVoeYYdgV7x5qvdqyMaee1Zno4AcFRGhvTle7C7Ptd9eySGqWWYNeq9aj7HHrnN4iTUIs/N8rNeOV0NC65+POCm2XaFrrzJvSdhEEos9j5aTsSl5UdHRrlNfAHVDpukFjGwPJAJvPUG2a7SbRqi2s1EQ7TOHsoyVOdwVQNodot3mysUroZLFh6nS9udz100+c6oTb+iWBqr8678NZIXK8uX8eE2cw4XwChoYMteJCktq9kjfbYoLyHKMzusjUrjquNdV4ItQCku9ogwJqMTn4E3AgdXtRHrP1lmsShUjWbrf+n7C5sjcbVLWW/2VjviEdyQii/ovOA82oyZUOUeMZn13f25GbD6QzuJXeFnXrYcphq7HQ63A5ucLpc+hYJ6XPFWeyakA9G62vwHDLffFXJnWcFP4KCmTgv8Fr2Th7RoiHpZ5tjmXeCTyjsFGuImcVq/z5iF/C2rs9mlWnLZpBKrNBzU6Mg5KEXo1fNvue4f0zf26q5GzHln1Up4cUv7Z10L4ZwsVGx3jB9VmDpREZbyB5tD+d6obSATFO+wYtGkO4rjpMi0VEFnPZvStUhCVg2BFPX1gjTvmsjms9Ga+HCma4L7eb05rpWD4H0jEVzlYunJtq3v/8n2ZLjjFoEDUWcQAJUWrNziHuHd+X8T+UL55MdSU/g4CSWePim0MVoiM/GCGqHFJulknQBlYHJlGco3Q6FWKOhc0herQRrx9zXYMW1hkejo4SeZoUxPuJRKF3b9AwSTVeN5lu2a7zzIoLRlTnXTRnnbtCKmqZ+r7C0aTVXQtIG9rm10RQKZxlmrSzadjSGN0e4MIjFxwic9QMxUXaEDlu+u9STG0gRtAfea+TA0vpH2Djalia0raMpndvVJO6Z0TE8vgrXwyd22G5K4Rg4HLYWHf478/He5XIi7BjtmgV+ikrZfhJU6bDpsLpio8CbgFvLQeYg6uKglxmSyUwrGUgOAM+ivRxvFyowjTLkcc3q4BbDL0Ah+q4asrDUElQsdPLiW7EAaapgCG5nZl303RRmgi2xqyJ89do3NJDUeYv/qiRJnqI/3jzK1n4WAG6e/rTG25ylk4SjOvkHJapn7FXLtPFGx19yu7Qj0tm6G8n6DA/rGKXDpCcF+9HTO0Mzm3ZEm9pwZZlRHS+IKTOS6TPCJqaWVn7EB31yUpkvlY4qcB3uoVxtlUIr5v4uhobOZL7iV19kIfnaEjr+MPcgNu1zF8+ayirObcaftmbhp6Dfm0dx2Gdznh4FM0IuRQIDVgEvIlqtw4MgobzrICJ6ADIm/dTIvvBFcDPWavHWplaZjqGPNQe2wB5L7ODXOfTgRk7MBWMI5PVWQRAg65fu2vqgak6inOTofMBusgbnvbcn01oheQjmCYyJ3VA+5TSCJyZdVE/mEFkaJ2JwdwzGecZpkmNzqvOptDYk+s+XEt0V0A0Kf+FTJTPMnTm2omCfMmuXKxmLPMV/twt9S+6gI2Oo0n+TtaJxAZsX5xTg5ATdn7W4RY2Sm5UoHu/oC2MfNWqVCsWRPc8PD1I+tMEN1jYXxg52A4hghTLhN8Yh/yhJ+hEPggvx9KjYbsWGVHpiGscNR+Jg9nOkHS3HmaNUROb4swtMI2F3qHvN2V0xa8MymT/CaY5i5rY8vK2x1EuGlFd5cD1SrsNHR8Mv+ilqBZc9B6MQ7X9V8ZYm/iCDDkMbCiiGsIHbwc1ogKThobH+EYuMp2dslk5mIt99OBUaZFtx9uNr2XrbTqtePQuFZMYyJSvlDh2UsvyBo2SWS7mYT+3JY3GJD6eWMh393C9j1MVZFoTdbOVJ6Gv3+P7IGT6+0KWl0F851k0hfU2cWhmnUeRSRIVk26HWy82sen8qxqD6HdE96jQYgJQDNzRS91e5gFuwBlWXx3uIqzGyq24q38RUoysqPZPWnsKBuZv9NJkuWuv3X0HaL/pu7qsGbWsfgIA03Kq3Jc2p1HRCCfZ+RU0Lu8l07WlSh0GH3eLICmb94PF3SN5hfLKGtdBbpa6PNtQWGYPgKZ1xMnV4+2m08Ett+Wca1CBq+5M2uM38Asu/MjFNdmP0icqeBz98tgYGWbzdpEQk0zaGJwkYiuIykv2y1OMC7yndieAXdrtdOloS6/uUacGlnDTMrq5Oxs1kEknyprcJBKSa1tK2ZXc0HgZ0tKZ+x936M+6bbiIUO4rlFDgVMiVNI4tUOAqM2LQy6oD58b4PQNufxbHWeLs31n8QKT0sTpQxexiB+3f0bPpzmqiN6eW7C61KFExu+nmlGHXt9Yh7nH9dyoZt7diuYE0EmW1tK+yOXFHnRrGVyjEnpqbNsQmisz1jR50K+WdReiNuBSCKhwYLvJVDFzTGO11AgJz1K3l4s+eqHXei4FzkEyRTOvUNTDbCwyuZZB6Y3/b3Y8jdzLmAZN1D2U5u3XSTNX2wzjRQI0ewhH4BO0//0p76I+MM8G96aj2yPFTeQ+nxm9H8w4bJ1Rh1EvLv5GmeuqdCwSYbaT8uD0dLyD8lQtNnfEJRDkEYR6d/bQp/JufkcdZwdKjlw+UCjW7JM4XjlTH6+aq8oZOXcqPYzRQoFd6t3E9Njy9pPEzgFUXkMJkPXHtJ53JVlOmNFtl7KUQ5nrgmL96w2W+tMwZMDFoGLRUd4RBZaEPGxlUuKDvpeGGrzOj38KtyouxD79nl/L3X1k27tO7aMyS3dwqhfD5rc4P1b2ubsApZhiv/GJAdoWIXn10fj/NaiuBIA1XXaWRKGVXFma1VMjnU3fE6eLKM+Ks57OeVUMsfMKLIr10IIVQleZYphy/ZQA8B0yFG8HUNw52rHiEcEs02gWbmI29AaCIiQgeMjjpwR2qAaqibFlsROBMhXcVNKuY80MjB47WZnqw8mndEV9dogO/sVjGMU6glsvfzFSBged5ZMkv/LYo3l8xUjXjvhF7TSku+xEtSsGMF5MXpvQCWo2uO3hWl/OXpwCWRc6WWmoAP7tmUNvyg0pL6z8LEiNm52ImQkSqjPEErMBpOcEMxIqGxUJG73MU9QbQQy0eo54NqjicJBRNh4kpd7jkFYzAZkrY46XQCfJWa4nApxLvgVzxJIH38DtvryIbX+ydieDaakJXJXHDGyQt3R4IeeS6kjDn6TifH6CrvTdp473clu/Z/7ZXJrrD51LnE4KMKLRwbxR1/BXyLNCGuJqlwzq0+k+G05ijCT2/jcIVPx9u0bMN6/3Osr7eN4n9L0EKwtfbfhRZafP6ZirffX8Fj3lfbx/uv8G33HmA7rbHXGiz07Gz1uH3y669J7Zsl+Fjt0ubUnw/olxYeVlPkNBXZHyOpBLbdrPetORc3s63ngDIbKuRQSffXNyGDMWN206ld+fPSLHn7ECR+9Ywr8xVFrpRwfcFIdogq9g0mrjfXMw7xQ3MxqzfsLRVCq76JZNQykgmFgTStBDxtJBhpdSOTJD/LyCQDOqfIzN0swzGPZR6ys8P4RBmYTBmJGsvgwoGnOxD8BkfGL+1B7/D0o10iPtyBLCDeyeqGIgWnhQ1jXVtSrwQMSol8Mc3Y2bX0g8rofFXAyJ2ybqoKTRZlKAm4b+dmrn5NYl7NAtEzcfyhNFp6x1GkrSaCySVPd2aUbZFVSSx7WdTszWYTbL3d2HCVaQC5Lwz6kU/JUcn5/FzrugllT6SEFqkiu4HGFNWZamDVSIbEOzWQgCIRiXOoD/hUHR3kri+R9v/UnApAaGWqGX2WQxTaHj1mRa8FlF7urQWvPuLEmEyuI24CNzEMqUZRLg1XBxA+6y8dBc+bcPj3Dscfj1TSUNAzXkRbQIhnq3VMoyq+0z+j53spISmueX48dyYYW8PQsf1TJE8Mp6KaRjQC/C/niUZNiJGjvxsN46JSRUxJoyIX9mgpqhbqlBeQCY03Mn0Est1NiBaeR0kIHBtYeDN1YbgVPRpTfKylWgl5c6ahOOJ2tuP+ZjxTVNghgNY2v9BvCko2Fcv8bu+xDiU2i7etrrkZXIEhVPTAUPXv49LzORRTuagUYIDWmovn0b6SFadd5x8FPplpjgiNuweVEper3Aru3lDcIL5MuWMUGbnkPNxPE3M/eGzLokKOO7vcstYYfXfs7qhnPNHI19xXpcrLLrjDp31AOGGPtyIu7k05tgHthXFwNhQ6y2483Zrl9EQl98PcOEKv70FbwCSaX368Xo+j2VyWTNw3UevhcTnT3nCw8ZSjiIgO2NIwRB0mDeCdHAA9Hfc28LCI6ibQYuEmtgdkmX2tvv6wr3Kl9zHceRBvuU35bPX5gRQWhQfj2PmnQZUdnKioxqMrFbu4Cdh1NKNXb4G8CchSk4jizhNAneEX5oHnLERcU00Rkc2mSmUsnW/x3AVXbH44JU6wTYP8hCSY2w0vtz0v+JQeY6HtQw8jLsLyKyJm8lfC+yM/GrLRGpjTc28S8QrOna3lGTZw1MK7HW0fp9Ho54d2kysZ4U41jLRRwicLOp0sJK14p8dj81uDaDszdoVKilqiyTYitBeGSGm96hDvEFI/RkVQV0qtPTBn6UFMtow+THv4K+hDuxL6oK2tEAgRLtCANFW7FitP5FZTRDEdYkBU8GDGPRIyurzaKIUHUp8/oNhgY0VXhcJpxy+qKyMzpfoVwihsNAk6mqsB/Ix4flSw/hOzdetDMGqb0GZw8N/C7fNseL+OCh6pVv/Fy4lS/xCqfSqZs+pfxe7Pm0BIJgp5io2sxUZC8zn95O4mqpIW1fxF32NNRFj3JggdmyFvoKp49mchzwnbEwaKExV+4hovScQ85f21mFyRYJ3uis0pfe7vbr8kmUl8O2Xx89uCF3c5LD1ofZY9ekoxfbum7KsBgzpFJMMNGsrCo40ONaaJ/cbEcEf2JPbrh2JZJvDVlqiVfZVQ1se+u2K0jip407S4bmn2qUmqKQwDAeYtwdRY6S1pLznrgWJCzqzCXVbYl8oKAcKHyarp06cpQUOiQ5REIXWOk0GJsrN9KIe+LvVDlT4z9U7jiXjy2Enb4wSoM1p9SbGT4laksfgZ0td+fDqIdk2cMGirG5CUw3NUeJiMijEHw+NPsRXXxVos06BXl2PtyZ0csZQMW7uUNixTkAYOjsPfMblZIX3HOpVslSVPNMH1pNurmXZaH0TSaXScnHAispfGeWWZYBzJ/lntnLxi5gKdBd6DlrjKMH91iJALUsq3yhn0WNNHZZ3UKjRMinc0tKofDnBZAyo7JfODNx2+K4mnFST5taM1808j5kCmSmFc+G33SCyCpnf0TMYZlW2BxmjfITBhISPMyg+o1+tLccPzmDA3dLZKZNfKlNVkY8Ds0sXA+PJRr1zaUtQ+YvNgFaUH4OSEu505p2MfnOOyOqqXn+qp76GYTvzkuTFyphqXTcl5RpdmBzys23+1r3JhK0qJVkm0F0XhdFWlZra94qzoDCC/PK3ISJMp2e9gzTTYVELScULUDF8kIscgnWh9R1CE7nEA1ooEzZ8UREDPALmHo2mS2kDnXj9lrhyJCHhmpzZWp6AiqXqOd7daEdKF/nh8ocCfRW8eJrhD35zonIZT7YOPPmQj2/eMYvIsXACZUmbu3qSPPAPjGbkKKCK2RzO6AF5wMJjF9uO74fIut0sJwyndxbGCtMvT2US2/n/IPbclT/6fTbw5K8+KF9VfrKuVO4mdF2tCA5+qFSO7TvMAlSoVBot680ljUrCBSCGNM8/hh9Igbrr2X1qsy5Ry1RtAMsv6KZREODcu3QDPukEHtUNsa5x5uWP6nHfe27W0zeywNn1m2KAPNHmU+nnsVRB7tIbcyFbCBAtNw9LoaEGrojFpHePnLfbdRmtj0Jkps2HseS4UNGvzZwCwh7C2TfffYSsNQ0NWPOgZjDgyZt3sWpV42pO1KVCCQ9gUOQgIu+h478CcvqUBHgl51Wwd5U2rFm9HOmxwJV51mowcmoIvFHBcyLOWHiDVhJ0usaGnAqA/i3uRncaNyJqeHXoXUCJG9UwPY8hIzeVc1zr7xCLtSpES5mrGrP+dv96h0PEvmDEwIZSJmJNW8eCy+HaMDaDD1GnTGTW9/ie2rSphH17jolvfcnaZ+8wUwBQlQwKxpEJF1eJMtATINl29XBWRCJYywHtEnsQEpYTSszknixECpYpG7sHHfLEnV594EtWGUvPBYbfarH+QCnsUA8FbR/ZPuk54V6lGRMoMVHe6bGeQsWWQbdT65Mz7BX/UI2uei43xawjUbSRGcI0GrzLbQQ8CPKeV0vUpQNCg0hdVG22jvO3Q7kNwh41e+9ExJKfbuW9rJLTvCx1gldUMw00IhamTJ7UOicTYZtrr7WywsKTJ+sgrU6SdaO64wMhFBVIMbo4LpK6gf4lUDyakwlc9R6jw5lCzkrHrxWZkboTNodT2lyWZG18eQUKNZzffrDvQ7nGeXE/xuAv18rPaexF5RtZHKu/AcNVxKTK0zPqwGZMH17oHjdOQ6qY+C4Fq4gmxm37mcrColTxzWrizkhJp0GKPTUmRqOGiJr5AtUNUkEcQ9reCp4BB/TuFESOvtFfPlwu+v1RFJLI+rnMCBVE3fL7I10JHMXEe+0QBpn+w+aOXK+XWen3HRL4McYSjFA07xtIlhkxSIfgy28mvadwVzEWUGvl2x7AcjpO1rZ7/ADK0GkCZrAh8Z77QArpqhHeDtXcPVbwRlVNVDbLsGZyyJZrqHFiNV1I+3xkiJhjTnPWf/v6Oa4eM7SKxPZCpZ+Ouxc6Hy3xilPdSmqKq9fk4HpSdBlKrNKSBAb9eFbafGqHMUfyai5YlQi74Ufj97DvCv/f5+SLfBKPplzzchmDuVRaEUzS8bel3JcKA45VlcM8lIcaPXw8KhPA+NJnwKBAoChMRHhmHwpRd7nGmXHDrhzK77U/G9FXk84fzLlWdOQwFH60jTZWOP5rdniz/tH9920XKVjQQ65x+FGBCv5hwvJEVP7ojzVM/omNR1CaHHadmGAZz1VII0DTx3YdJYVEYfLneXoopBvZUIs/Yx6Tg3HaC3p4nZofJsnBKH3TddtQS1E3gv2AnFAX17PqSYIeLOG/BlohdkZrj8iY3rWbrMQDGQJMOhf48H/H6sk/ENA7S68Fp5dJim9y9PVhFknuAOqX2VOvlqer39J4WDI6LfRM0hrhZT+ytmerKYF4wCG3eJb0WqY68owilztDdY+kjRosL8j8Aoz3Ui4Z2I7WYuLKzfKh1L6DpzRHH3aOhnS1qAK3nkETBNqXluXx0bhO0Wb4ND+l4x47cRg054R9TzUW3B9A3CEW1u4bQLUcRJC9Z8hAhoTq5dLToST38aaqevoUnc7xeNuQ+8G0+/NjdMLT9heoFWSWyUDshAG1lc8N3PdK2jO/ByXnB2nagxzzw89VSaKFXVfYbhiMpg+E0nXbuxO53DrSTq7xbx2k3Lc4v69oYR6pEiGbvEWkl8uR7ihgG2Td5JEKhdgNtHmwVU5nICE6lstZ+Ye/6kEUL8xQ9SbxNEDh2H+e9GuwhwAzwtEdlCpFhbnPAPgbarR6LFBniLUE8r+qKSe1PLh03VhZdA4OpndXU7b5kpUpIGf04EOR0nS3g7u6czr041+6lQBvOh/ZN3YZ/NN2KIpuxKfA34COL6b3oYPBIrho1sogiEpaReLvmH5J6Pl8Xq2MhSwyvsg0Oqaq73w/rWGg5NQbpih1xWJHizC9K9rr0I7M3v5vSu7Ec+6stdKVgBSWC3J65OLRnzpfVJhBqHveKOjjEqg6V3N0rD9wKlw1q6sr+GbXTdsBxrH4AxgQRgv12P316z5p5jtwuon12S3lSJpKgDE38BEP55v0zkXRsj+IPCMNBhPD9lUuUUCQD9qJftJUq49JMedwIs82xTtgt0A760FtKN0L7k9SHbgTtOS3OedE7qBSQmBjR7k4EgKQ8I4wE+qAE6a6UbbQDDeBsttsZFjzFpFq6jQM15YO25adUnaR1RGksD8byTZQ2sGstb6KQcsLPNG89SxSLi9HXpVp8NBtSqUlwJ2zHkBiqcG9RuT/48/C2zcIEXaKf7iCqlGc6tOBMKlw2YCPE2IuGRcUP1s24ruRdB6whHuexi/ZIhLLi1DeBD8Wf91k6p/+LmptN0ujQl/zbppiy963pcsDaZHlwzGwfdZNAGNGeLIpmFcJBj9VyG8c6IKmIhMXm8Z2nhd/8hCQJXjqrvKuL4DISR+ay94/Bh4ft3ou9rHxnCJliHFmG+cu+j96f8nZV1I6h18Fn2iXemezvcLnXaV9AZvNisoHO4RHTJMUItskYSkA2AqolIBkk20uMcU/FiIXIJrKYpJIvDPmRz47Ak+VP/PCkcIEiJcrIpL2iMGgYKoXhJtTOynjT3HHip6pIZxfxiHLBpgYsJ1n2G3oMC2qNq39wU0N8GfnOMsOj+KB1YhW9vm0QK3lKsAIcb0D89CSaTDugntp2ltrH1SbJqqDAaGw6EmyLsKLkw3u0INX8ykHGCww0o1SSyVuXP5jJKA4GiYnvVjNk4fHxYbbFpXJUSt1Kat1F1Ldtqq4FjQDx26Y2Qe42KVlq3ErAEbmzGC5UUwMYyrxp/MdfccUfFqvaD7l17KJvS5VvEmHyySK88d847xOReoY+wDLh6QPsyt74DhEvuB2Lz8Ft2PbehACZglMo+mMz/e2nyNHEwGQ5QWYP+vKpXF10XD0Q9RecCcL9dTJdZyxC94yDUgkDbduqwv4ieFfZqXtvhHwcW3xyju/XhWhvEuY+9yFSWv+x1ov5HhSi3PS2wIYA3SnfLdTEloD1ukxWFoUgQ9mjEQfd8OgNQDBpuUjJywDBOGIPaOGUyzbzG5rXS3VM6T+F65w0WguerjljNSfwBhsANMrySokQWhSHS9vikmE0p4hDCm35FaSizT3lVOU59QSlBWU9NFmf7AgE/WYsfkBk6hsFJcZ0rJFvYMbP83ovXkANiVZKbdKaZCcgO7eWLobFPCoX0qtMOUmO9uBsWQcg8+I59YXGLvnz5gJ5q8QRvE1G44vEdeV+CbXOAdiSWeSHH21RTPLwKLXIp7viDw6OZFqyFYOyTSSQP/hTQ/iPmrDpUny4UKzmf2bCZQ5HRvOq9bjcGH+S0detLeFq4eEcLx3NUjY5pVj/60xatkTLwfqfqONmoWZuB1PiMwM//53/9i9vmZffhqE9qRBHSpoG/rEdNNVogxxYgkE9sSk9E7Eaf5gFNW9jPKcIi7qO6OjGJbmWZldqKKkbhbmMXdieXOY9zpNuzo5vVc0JHFtOfJaYrGh9LIXPl18HKb2B0PnAoOhwPipL/a5+dQv6ERiQcLbDzJIU0wRWTdnIuiV9QI7rw6CFx7opyRRTdeLka0XW6IUBTSY4J8mUIU7Czg3XowYqOa75PrMb85aPJnDbSMgVqKe0LcrSpeQs5Uxfkrm+82cFVPIGX9LkWQsb9R2uSvR10+ay19+LsVz3MG4fqo0X/nweoDlSozaDFqk3EJ7mkuUAfyMLs93WV8M7fjjJkK+HC82gQkeR8lptvZdriqv17rne8CmWuRzA8Mxofx14Q1YlZxnQZRFKznCz9Md1H4gPAxnYqe277m4z3TAbkTI9XKmZFNXrlt4JadEX8IhHFGRmQy7j/GTe0BDKG+S23R5+21KMtxSyubqiUhC1SZ25pw7l5lKPsX6yeWci2mQcmfIEf4ToZmiDlCfwPPIXxrRO4o0U7YLEuRzwYHrl1OybRY1NmxdRWChvIucM+p5q718ukFzYBcvn5VomXi1h6VTaJL4s8ol4KkuLpoKf+2pP/ul6/Kid+MahMIQ/GVOG/Du3MqHQ98x92lPGPTnByRUeRTnZ5Qe7WxgtjFVx+LcxQFi8sW0eZ06VxMaQIEv30taEsaQtkrqN+wj2Xv4w+8e/zBQT/z5d4zhW3zntAuv4tS43syR/buL07C31+GlfWFdofPGIvz8tVVuTErzRGL3Cohj8Em4wVVFBsOK32LK2t3lk7S8km/soa30ci9qb5e7BF2+AY61KnKIFAWsfL0kdK2PvNYx4EDCFxfP1RMdjZx1EjV0Q14DmbcHSoaeorNSMNCBzgQn0wIaJ3wt3PqjJcW5ScFr0tdXAyUzX7tf8UxS5InjSX1ejzf4CASIpiTNQ2AeecWEcY012GnTrrEdCiad2LkZUVbjDqO3zbh0vBYaf82NOdF/GplM/RJrQdbNcZ7GCCC+J1VB++JGRcU6lfiiL6IzH9o2ST5bx7i4aiW6KWqybSH3w1/OjGKYvLYgTH6F70O/6DpnVrDt5MW25LzQ4GcHt/6eBfAOQFxM8Px+4FyKjzPKlob2LP2QPKJCSipojue03fT7PQDHqE9MQOHnMjfplRFX6tucrBLXKQ2IJkTXImXiroZoSLDi3/Dxx6TBb7+IpwRrMpyAlcVGz8eEed15GJjRimj1iDa7Kl78SeW761jPzzw0WjaNNlKhrwwRenQXbBLuR2FblPPVjER1FjY9TXCsHbVPrvAaGH/Xx3AvzHZsCXsdZyALxlHzV35+IfPL/H/XXozW3N3hOfdZvh2y9O05piTlW98SqGxxTazt0xAQR8JtHRPjOGsEnvHkSqeZZoLUBNHjwB2W43fX6+G9RJI90o++9Wcvwhz7hkpd1ZODHMo+0Juf1ycjyGVDT4tqrJlqB18/fC9UWZuMU1v08ekABI5RVGcdvYUYBPcJie1UjlJ6oVT3O6GIIydsVc1DbCW3r+YYdJkFuKABJI/M69/0DoCgiEePhk5tTZ4OJGHly9JSGP8K90wecZvLQltKqYn9+K/aCd3HGyc/i7lCFV3pukXvX0yWbJ/mrhR6qi1Vut9am9r37TbdjLOw3vQWo3dulS89DNp/4+iSC4H015sve93zXERddUgaOAcLJR/5MV0tt6Zdc3tEpc9FDT3ZwUhi2Om2fwlaxVlgyC+Bx+lkQhdmm0daafz+dFVTizcDQ3hRCUQiSL8jeCv1HIEF8Sl3ZIuyc+GkMh8YF8bAzFt6yJuvpc6Dj758ycR5D8FWCIsHcKZJqm+vBVWfzOV3LvQoh3vXCDPiJrvXD1xPUGNQu9rBGyEF/MO/ssFtUagnCUGsm5FiDRZxfQUoC2KexT3IKqbDEtoIywnjGg8cSsWnTlHdNBbNFiTAKiPoYbaVzvyduuXQ0f9y5Qgpbz+kHktEJ4dEX4Op96XtIidAoA+dfNyu4aXA95S37mJbGISKZgeoGYWspuiBM6fOSyZz3gHgBsq5ArITzNcVcUunw5fqvg+BQjNzQoHOiiV4EvmQ9AIzHJx63zVNBct9LDOpv9+AtV/nVWGa2d+74NqHZOzgOLt8M/c6FYPeKmLE3QrZfsGMpJeidlHXWpQ8eHx0Z+8cNvWCU58tmjB0hY5SXej30e6cID7vhlLl6/N8lFiOdHBWuJxWRBJsalnGYZ5beOlZRy6oapVoQY7kZ2cMvr2j549TliM/pMUnTrVC5ZrRUNwbX9bSRIsxj4a9rLIs5lhtPJuj5zIECOOFdrCHUTrvMpE74erDQLTNmkbtnSiC3f1IBTBaUCslMX81KIFAy+BgiNfymZgPgTfUwaUJTll1WS90Ajkkr4O4I93CcQ8zyMtgjAZVRTF93l0SWQKcYouXT+yEealmpz4ER4eusFn/qg4USkd+xFCX2Tir7VeXD/Uaxx4pS7S+jGfYVZGs9RENOkElNsNj1asmNslKBQj++xEFu4zJAGAe0djRTdcZtAzOhIfZHNXTXpUN5s5UmJMAUw7GralnZH5Zh0/REO+beMP+FLV72EpriYumPNNBgi4M6hVpHz8QFl1ZbLT4FW+cqe2jCRFlOh6t7SoxCTS/mPKeqjy7jEcsOlJpJJw/HKDk0Uv0gY+N9gVBPiDchyBbNkQGTiatPAhAiiRbSNS5e25lCg6SKNiairKJ0LeQb/f8kzs5QZ3UdDUPUPdabzunn/+B7fA8gDeWb0gnTmC2sPuvqnmjDQj52OGQl7qkuRoqzFRab8oqxl4xK9QvWtt2pfeaZpZ7puaAQuud9VhHD+rSVPbBfwa5Et9PZmahke2NIrGTikr2+3bxgOfTd5lzT+rQbDFuqNPZ3g43OH5jfSiY11kI71WWlpxLK55TbdFL7v6Zz7DX0wtKxe9yceGCY2Kuu7rs+H7TTA5rLz6e4k99Cp0ac4FgplwE8+YIPqq+552+xBmpK34k29SByGm9CSaoETWYp9lxuCPSHCT2WV5LTbl7ZXu6vZ5tgdlUfdPf0hXlMeUAiSEg0XdLiDCBGqDvpv0Sb/ZjdS/ZwhyMDNYMNG+hafgnd8BgNvEQdqnN/TLRb9MVhSlb+K3kDtNMb/q4baVjy4T/y41RbNeWAoChyBEFMNtdVsVxDUkbKtFuPoOTxgAiGnHm3IgtL27bh8EVBe56iKsKVbhbGqo5Jm9BPslQ1TPVIBXcolcurrNY+9qICRUjkfbOpJqXkzlQrL34T1/wVlTRZPncAjtQHzGMc7iA0JQDBRijqUdEn/W1+Qe/OgJOULwzvgMY/KkagcvhoXfuGlPMbjhnw005FOPka7Q9ida7H44YO91Lie4LnF1e245E6Uy8/fNZjCba+vtFmqbNINcFEH2p6uv1XtmC35utNzAVn2JOIYEn1fZfeEpFTYZKWNuYFgwv4bd34EY5zlTgr0rwqTn4lkudIo0rppjkxMpy1U21EQX0ghSwhrcYeTGzdro2S6XECRzNivIToA50vn/yPMWdgohcsBT4JvuIRE2Up1Fg66ajdEs54eNGALwDF1aZ7rTci3GIT7n2DlsMG17IYOwyGPpbajM/2JMwvasx55uxZflzr5eMsLkYJWBgp8Hv6tH0VXyA/gsxITWeX28Mu5QvJbvHL2Z7+GUBXyif2ToGXAz2qF13Jt9WlYL71TbmXFCF42Ybm1f2AzFvYHN+TEhZ2HhQMv1snXICjUxIIHV3KnB3s7kkB8RzirZYNC6H0aiMqGBnes8p2IbHYSZ7LuYlKcKlOE5it6ixsUlQ8wTFhCU8bf39PKk0uhbtj+h3GUwtW8ZGGlEiltTGsvFs1p0CWRH1MBFnFJAek+DTj7rXnCK8SXLXWLNrjGYmTvN/6GKgVqjLiT9TuSMauIHgRtxMs+TatELHtpk8F0VBrcJD3SYZyYvw/dqxMBfXUoghzvtUSrrudQIrh4//7q1Le+KTDXSH/kSWzatDk+KkWY9Me9dkRwYl5Sidc99nQvEl89XMUzJJPj0UOAgtFi2cS0f2ZDl+Xx+kO7gH9lmGj3cEgd/gisI5oCFP2zRTvoiIzybflptnyPb7UG4J1GNh2eYuOrGq0TzDXFz4d1+kEJXMhdDGXTn6saIXgUSjBYxXozdhoeholAkGBmNfjJn9VLFuW3TW/fMg/eMyRmhuZNFWLWz9p/uTSP5PYK0YvNEaVcGC5mcr178AMDnv3hNx56wqbdd9whLm9wzumoju78cI/Yp8QLwvPRse0HnzVx38bf2U97mx4I9amYWLuRwWrPbC/FmWbB1MylqPqXDovipowpy/w4JIQzE/+O7/GA+SQF/WCzWOtThbmxjdZKCxU6/aMjvfzEwRe9NRsNmxU0WspD9YodTUeO2Io/4ff2RVcDNBZvOhsM0w9JC7FPW5/8NkKC67fZtyeTT+zFEfJ4R1+fmUKbpnwpK10RjCOAum4T4iYFyULUl+urZKABvrniA88F9CwcMWQz3TWSfwlTpLVMazbJDAno0k1dMGDl4Tq7ypBxzjZ8muhmROsvlYahuZ7/8HifzDD9oFdrnamszkth4jL8a2aJLL3GGM9PYPcXvE5xXDjvrGPxxipb3hOcLmFutsTK6p5Mrwsy9IzGfzMoRgLoMKt/V00KXIXZ+uvEY36+RCXbXLpVcTz6GZUkSHeWDkWxYjyEct86UqW0LCsESNCFgyPka9yoDZJTLKrn2nLijzvnRxQO5TwTKHRZ4ItFS33G9swxGbpVnT9FxTa3EE+PlcDhZ9E8r21FclAuASvx8jmlm4m49KKSudi8g5ROq/JAI9ZhMn51uGfctSnYW1oD0zkdzfpxcvcXhZKQZ2BjWwRO//O+VX7zjtOU1StrOIZl6l/MpUaL9kXJzp4mKzapt0EeD0CWFLRX524Koi03IDQKl4eyIwC4k6fLYxyTvPj89CwyJY/6CpTJN69YxobUw0tGheyIeaSw8XTO+klFtOV0Xo6zITjugWZcvcGbpjt0Vm54Vsk7GdqxM/X99fj44yYiFgOBjEw41QKxYYaVKMwJwukNC9i7gG1BztUqIJdUuNgupUaqbfh3dBsBjSlVjvDu9Ba3VaQWrAoEJX+u6lo/91z7mtaxTc1iAO8xMZwRdFHstZS8N3OU12qis4mSB6h9FbUVKnz25de3n+85j44+Rv9q5O4eEsd7tdrh1Q8XHT0RO9bSwe1bYzGd5FlsKp/M8BM/OUkzZZC8NAQmyQ2i1LzK0+ecD8SQKIRRd672RWFmY3mC5lWK66WMH+kafL3w6T4pXJWqCBi13QqIcoXzd3ZHCo4Rb4eIizqEo1gtK0vUfCObhFsCuIL7FwVLxNqJuZiWfg5CKxh6bQW3cyZ1YyfxkYSQUF2YXPMio0PYZk9h6/N+eNtyCgfy0xAeFH3qmpwPGMJ5bGjU46J8vO849ysa9ogPNDIEg2yZaWUUkpFSimlFIKQlJRSSrkS5q6dUbM8z3PD8qYnkoZlmOhlRhIENONYJ0AdYGVuai8oUiyefNHES6SYM7y69Epm9uq4NYwgvHhQpr9s6laBOGDmIKvibQdobfPQLc7Bb/8777ogKL5zdg1NBc9ylXeNPtSKB26GhoBQz8NyzOsj6yB8a6xs+vdofItpgKn+MXB04zwSxDHXnxDFPgzYQ0HWsicmUSDU7GJzkcRy0vR2FfgNIz+lnIpZZsCglTZdSFc7DVwd29nFlwy8ANi4kNGOpEx3BmjZMy4fk//vpcjbljLUuAPYmHkaTRhcHsMyM0eTWzrFDkDnG4cmQvrfYWXfxtuNLscxiARkIJIctbO6KtVYtQCbLXIk/CoO7MzwYoO9r0kRGckPov+G8YCfIVz1EGAN0KSaJNoYHzDK0x5ugVQugDJ/LvG82r2VLH/Ska0/F+tuhTq+GI8UPK3Q+UIEkX7/rDBpKvXl1PB8AbrQBYtHxxEF1tdwBkR+Q2+hI+qjhHTrd4ZxrMfn9lF/Uxmkzz1yT4uza+H7HYTtHpQNIxYMGcBsXr8vLjY6NI92sDS2+8N2jPyRnq0fbGmMeNAE7+8BhxYJq1zzROYxkCb1eOYQGzDWI5gR+6Za4I2HwA4bUXtKGQQ7cwrehS+8l7B8x0zrom4JcYAOaGkyOVuu9sWBJRgQVpFZB0P2XxkcgALrcBsOZQxOpNQq8mfJAWnHKsGmIq+H76WVk6i9doRqwt/HSLwvlXIgpvNbVMkrCgJKdBzZd+D3KqZqH5+NBIL81MLyXJwGC81px7EmL+No2m5ji+BsQkRdKtN8czxkifBGmAVByDWOzN5hShyndUaXdD7wHgwlN7pWw0Bm1wcFg21O32oafYKSbcmPMCooaXRIujKbyUGzIiZFPqCvIGf4C6yNaxqXB/RqSRpjU+gKzAcG5Zr1uPBZ5IksmfWdhmXbpjGe8scruI70w+FMLNy7/tjYB1kEFgMjjZi2MOoRlpRe7e+k7DVb5CT2e30HomX/M17/JHvyf1ZojxpOgqjt9/+Ah3cY7FDWOx8TknK8x2Eumz64GdksMooTdJWCQy/bypWfeodNMbCNVJ9/gh6Uj2GLzKoWHjFw2xVEQgRQ7m2NKOCCkT3ND7eQ80cEkEa2iYuiBEpxGex2bIybJKjLu3Yw8hT1hvc54f/09QT798IweEddJv59jhm2FWlvplkpJ52gnNVGc0P1Mj/mDVJaNLpxDKWfU/DJ6GMVRM/yGqPatUKXG6cWBIvVAzU9EPuSOOSwYxWQxfTq1nonrl4vyoPQM8N2G1Kq1qvAT1MoybGdDNPtpTFV+CzbfxJIPw7tUgHbxwltQunSEax03iLBSjqsvTOmck4mPaDMvOkrlvVMeSdOcRUzytAZvq1+mWSjBMcxBDeMJYYdFd2RZwQuoEBWaesMVFFndkAgjmwcWjJICj/4A2Lu7QlHQf7KoCEAoaNIiHikkJTZyoITvGV9wsmjCl9sCMMbhvgmcW2dqxaM4qX7pJqU6dBleaPqGKRiW8w9+Ytal1tzOk0ZM2LVe82tjjcxNG7cBObkqele/V+ckRPlcjd1qMp8HcltrDl7iVnVulKhbF6834bB+vGw/n0OB2Y1So7xNkAf3E7mkWQoIHMPVhPJMw65z2dpCVcX4mq5xZ/01wfJmXLlaHGY86RSuTlHTpmK9feGQhGRr/ux+qySdXWH316zPqGaJaD+p8aQc6akkU1KAkdLfOyEU6+zvC+TsrxQaudS2OEyGQcMKQmnlGbymAUuXS8bG4EiWupCg2DjAn30HR8iQ4p+nf03oQ5FINCR7A9yX2rf9r3UIkPf7dMnVVBz8Xx8cuQijH/feOh6bDPIdLHmq5mXvwX74Y3+7ecfG6jxyQYTNR0Tp21ZYnU6cx3ElF+9wPufEFRq4de+vOant1Kio0VMr4tppEunUwgd+n6Z6yN9DzugwtSv8L4n0pPTfAvyNIDGXj8X362a1E1sHS9F/Zg/X5y0dmTJZ/yEPFZfE7/ErdIMUOairpe0pfssVw0DQ/ktl1D1h0/xGXqLgqPFDQiL1jctMb6OPfyWt3t+9OojIDTAx1sLVMGFR+YObJ1tN5usEENbs+zLCWlTOlBqhg9K80OGXQdX6up6S5dfci/9CnT5iFl3/6IKhrQm3XKtsdD0mDZljqCxrsHUws3IBgpoZnvptKmhcMG11qWg9xo8pvcEsfoYuDNsmD9XNiwjT/JFyA+RGsQFFXrQkRx22uPkab+BzZ+9TkzPkJ6/QOtda5wr3XBSeefdyZlod9WmDO4ADvWP4UkO+lR4VBj4rmrnuinIV8NRCBFf+9f1kM8bpexUtfnmJpaF44xjWmayGRTq0laZhEKBMDYC5a3AfnYC01yP9f+EiBSlbQm+NGRQEJKS/euMH+yiFqJ4YUzcKgJHhOZv9bR4mIi126dx7l09XDgm/dYIuQw8UuXE2/nAtMPiiazD2OgblTlTamkplnkXXTI9TlFTlENT9Jf3fTc39+Zvu7kJYx8IuN7rj/dtbj5r/xK/jk8hjXkoi/wKsQGAeSZ9YoYD6JRFog63GuNVm3mohTcYX7PQMI3W6owrwxdZN8cQO+JQC1nPmMndnHBQmUvF26XsYJ2TLc8+dWChkyqOEHNgJCcFmHQBm6h8d7zC/dOkXQEFFOHUBaKTQv0Yi5s5EqdOfJAYvbR8JsM8UMcwTxM1VEojFe57vWI9Dr7UYZMnCU2CELzFkRYyjTIKk4BUiebxooP+Wi6vcBpVUu8tw50gBzyZiDlDikXCo01NnfJirrdAbJWfV1UXC/WglgVa7+QBz6Hr3qp4qaymBGaOAdtSUN65nA8+d0939y0YyCOPDPD0U3+hLUKYEogjWoHsaYQU96N2wxRBR7GMitKlAXL8EJHPJgO8tGE/MPabwR3H5B5R+dX4t1IwL7vvb689kuIcLyctD9FWW5HpE4fVzfc+0K+VWJP45UUV91QCwN9rr+mSDCnfY3A2U0pxN+u6OMw6PATzULT8YaQEe13K/DgTn+aurDEs5+bodpb14Xo8QJE2LdJ6NEARpnIRuENRKslssaZS9vE9Bz2yGkkhn7FWdwRzEbKb4InEXRYWngfsTL2dzokVyNE6U8ZYltMkbdzD+DeJUaMAxFI/0AKQEkFQwIYVRHh6LSJeMFYVkZVu1TVyBeJe5CKrAsb18WIe/xqO6/dN6NTiOlJxjX7xlna1a17ebFM2HMN+uBQKrREcegwm/q3rjyQp8GiasCU1Do42Q096s1jbVHtJAIn5yD+aCvCzXJSDJqY8Q+Vrr9T0Z7SqjaPRBpw7EY+nhwkqSHIQQ7bp2VTCQyP05daD0o845ysESLAtf0zkJOB6Nm26PFypQ1MJKT74efKG1HQonJymG5SMTw+Y5EU+WoFR3We3S81dgH8GrzesPSl62Kdivo8035y/68RRfMCXToFSciJVcvjCi+zayRa3QlHFPSZ5+p5L9TqHcabZ0W2OalWFrXTU5R6oDTWWO48640XOzQ58m5XR8kY2ZdBg7EFLh6aR2Bn1u6Bk1jltZqnDjHG1ak26xURHMaRBh136eNXUBiM0aBbCgFH+uXRiKn6cCQCRHZ6mD60Wvo3vEvaCKZyJYVSZguAg3BaGsCMmLJyQqWGYq+jUGBYE3qqinw34bBD88gqaTGNZJUsoZow0iAhXfIGn1/TunGk+42DxWvp9ybaX2ZRMRZZPr9hRig/5GbvE8i4sn8HFwbSf/yHnrU3GUQcp+xoxsUZKg6G5vZz5WWvG8ikUK1pPXULMuH9T0XWsAOzidXiJgR0o6VzfGrobOH7qKljKiYNgC0/OCPz+gFC6weX5NBfmTdhvQlNRGi2NAUXWqNUmh60JUMIVXo1AqhQu1jvCadRZDnBxFMmY3buGiW3jmlU2inn2XFyLygnakVb3/VjDYDrcrOBH94ylMvwUQklIWJy5MfJACzEpw2Yb1+L+8ZEOz4G+jxL4warcy03u1YYlKLE56fTS62Ad+NUgnVdl1PpxTpdgNN3ick46jTKZrD6HApCKQKHkwx6//6DJ/tVJp/z+Jk11xHVBsbd2Las9BwP2QrZ+ym054bvchBWXD6CB7XpsDqHlm9IrQSytFIeekpM/ii7P+fxBTwfuHk9c7U0Kf+LNHoNCvE3nbU6LuZCxhLko1eAmkdftyuJCbT9b9G3LN86YXxpIzQPZMRucJK1AlSulCLkuaeNoamJZJ/8AFDiBcXECs88dHTPAKI+iiMklec3HQm8SgNI6/13J8OV3PePkIL0WllxqUOVGm/p7w+bTTDyBOk1Z8Vr4LrONZZpc/bH8NI++zHbNZ11fgYb9biTcv8yu/PkLQ1wDtriZbbNzj8OZ+TD4Pq5rGc0MpWf9ylA+qa6h9bXtqBaMGnfVnPcvZZWPADy4idwJ3aT2Hh4dt1z1+IOlYb8mYVsfpvLvG4GyY2/ACvNR7Nn6THJfrso6qVLu0bJNYC8nqzd/5KONaLq1b96Qp5P9pFN5jKR/Aj7gSznxOh0NUC0Lr9BzkYgHv87Llvw/p6UTOBxU+5WsMn06PGz6snmX1aWL0LEuLGpH7ur3yvVW+1/LZYyAC0n3IbrK37II9NjLoLK5gvlyewmr9hI13c9FR2jSVNeCrFXQwiHLYKBJ6TEgzUYT1VrHLyL1oQV2Ntgpnzo5FvZFu6IDvVMu23ysMB9F18BOXETxGXjLknvCkz7twKjGBXFcqP1GWTHA7VA3COh4x96fymIlXdTsH6AyiXdBcU7w3TrkpkJKbGniweny1dcjTXk2jXkdtf9bzxhyP++855AZB6qsDcWbvIVpDKSb6oQOFlyWTX2eYL4OvfKejC1wWd/u2wqfQqihrS5HlHQGGUsulHbgFzaRuZPWyboQpH+rQ1+l7y8kU7d7RXk4aNZ1EZdFkdyIDGixTh9UyO5P6jKHIlMJXR5MvCd5Fjqfyq+xEVCyriad9jWyuGnelLBzH8RXcSGP8/7m4bfvP/aw++YD0uAgjMs0OzcL+/WjZK5f1iO3dHvqhp8A1XFcqmZt0YAU38c520UlguiDSPkRbfaHVG6we/sDfdEMvLEjwMNd69Et8vVujrr8ugeWd0jOBDZhEyFTlZjO4NqV3LJdtVOLSwXXQAw/bD3AswCPHTMaB8BX4utGNXtyM7hL20AEIh2JYHe5/ZXDPBn5Efy4QeTo+1Xt3hXKYzD1NDYh8ZAojHqfKZxDme3Eg3YGroVHgdH/yVOFgYFnQG4FKueZS1XLzAKhele8stKBnMWC5OK1438ZifspS51vF4OVVJR6ExH8zj3Ra0Grp5Dtt14W4dnQqwVi/XeTH5jhQ1pUAlIKTOJj5KUEgxjDbufhDyTAsCc4Vzk/adgIuoJyVSIHLWT59mFqDjgpngwPdGe4CX6XdgeF4I8gb0JaJ2S/vQ223VK//fl8+ubt/UksobUfuDxzjHHYhxHULhtT5hH2dnht6kkvSR06jtjdN6O8e2C+gOqi6/KjdMY7rnQTWhjLsh7GJlgE5AhuLAZcjVXBB/WkWnR5mowL+uvUjlAPLLej9r10w8kSSNdVpDrzvVZSMrgKbElMF9FwEYudM26lpxW0x1Cmif0ANTKZHCe9iwwaB549AbRnUwaOtNAwIv3rYhC7P6BZhI0dUipvXtAvyAp+DK/gQPIwcc6CM7t5Q2D1ADyYQ0P1VYHXfQXeK+aEDaES0wZs6hY6+Hi45BW6F4eInaDJpdh/pNPl3xpLFGrPvPGFYLjAhxOMtFN6Lazg8w+bW4cM1tnjyS+TjP6myhjVRnYUHpTyjxkmnjFWDVB69hQuyFRCQNKKWAwAS0Qx9/v7nejNSVFr/jWoGESsI2cgcj/SgczmNF2auR0XC8i1bxy3xyhniKK7nPmFJqMgywdgPT+KO0AVy0M0OH3diQR2ye4doRmuR0zz3xeAs6pYU4rSad9Mhf1m0QtVCiQtAf7Br9l+feO4KzlAU4qxV3oTYkWXZ+6NTvCizoknsaDaPr8+mb7qOH8+NEr+BRWTN/ECOyhO5fh62JRLlGkrPGUMURrm/1+pYB6AQdG+ZJ3foCH3ptXIkUkYnzlWeXDzs24QRvKTeJsFNi6LXQXuBtlxjqiBdjI7mYppU152YYTsyo7FXOseigCvhy3XYLa+Hkd5+MWNCRl9YfeHMMutgSeGStgdEkEpsSVdvtDTIYuXceuhugr6WaEb0cphXdLw9dfkg3Jx1P/ToXhOirTlXwdpIUumMhtrdvYXi/3dbVp3Xz4+XvynGt1ivoDxTmQ2s7Nygoylbliw9DeokgLkWO3kXgM/XHsTFtjJRc5Jc2mk+w6og0wZWg0hqwpVgWMUEHISwYkZ7uRZ+t3zxZBNB7eRAmbgugl2pndCvfvuT0rfqyg/7qFoeaX/+Gl2CFGfHPXDEluaRwZ2hH3ki4qN24i4wkKaAXOl1JDnnJqPeTqBnI95OoE8GiNVoAQi09ZARE9qMPrmSA7N1McoLoXhpc3V4xOD1rXXgXQXeYkrtLNOHPXkT6Q+uCaYVnXB9nX0s7TDUlIf8y6u2Z81p0jBh1UrDRxUSFFK5b+ZxYf9hi9u0cRlG17l7Az3Nr/ZX/bckERglKNIEvrFgdcEjfHS1NHQCdp1sjIo2tD8qyFapwdElTP86PkctBJSBUghlSiCtVXYnGRxWFATeltf+RKpVCtorHUzeFZ6t6VF521x75YimMT919IAmKBpxYuBBOBXvgsB7NW7lh9GpoqxyJ54sLOqOz7V5yE8LiRasKEOvoZ38lx01SetQD4xJ9NxsqnNcPvuCusqwDBJZFIkvGfh/nYRJfCLrcVv6Z0qcmWCrQhUptMJMlkb1wcDjqslduAnN162JXa3F6+T4S03fFFklWTWDoWW0mxGNG+yf4i/8F3QcKUs2brYyaQITA/TAvQSMweIOaLrEvCz9cAuv4NgG+vVSAOM/0EfqrGeVuO9sXTgLJq1cPjhjOIU5KIfydg2PIPVxj04E77fg5bmUMyqh5vUZhWdqbML1AG0dZPFhhZH9exCreUavQuYbYFkCgxSaMBBdE3/kszGPK3zH5Pyp6280wAb3kHguqRuP05ripDeUDJuqjOG8H9aTl+3GFlORAasgWEwG1USjEe3Y2lHOvEYcJ7ytvhcf35l/vyTUKBNskETDVD5agbzJ7vGkEQClbrJd9NfoF6ZS8Sw5vMmsGlRPWGfTHNtvmMg3ugs2kSzrhL/WpgWHVxHPm/P83rTn79NIwpOcEgV/5ejpe99kiwDiRsEqSXI5JoIwAyao8nzNJE/rZQDXnUDmlBE9jXz8Wj9t4us3XAIzfutBQQIM4KTitGG1RjhRlT7pRAQSsEZDqpVrfMVVfyaV+FVzedNvhkJOWKz0Xd2hs84f5dmnTrV1TsdiU4DzL25KSf596l0OoHA3ARRqKhHkisn6Fx5I1yMU0CmyCjlkyuMdmMjk0e6Px3nLyVfEHnZMFGmRiqheUjXCieFbZ8e5ULKRprDjIRArUwtSmw8xc35LHkeAg03PUuIlsmkZzI0qwrYQj/hizoWeI3OcuM84BuRaTGKZxvzQM7sHepdFcBVOmRV1Mhm4MgZXv31ELH6q6EvuMkgGOf/OrBXrP4sJYd4gfW6ki0Yfy4weFYyC0w5AWcYIHJMh7KI8/tRuvxWII/zzzHWpwz4z0zMbkcJtCSvRumk9PSOIEweIIE2kavWQKxP9MZML9YZVNWmV/l0L4zJxZ4J6rsxKh3/R409DO62VWZjvf5p+NdjdbHVT6VRE+rjnQF5/HTYGizJeC+QW9XlvFszciomvO8Y7ljEGivVTO572ueKRoRc0VKYeBIxIStFzp3YByP/GjWAetRaeUXRTXDnczfQaDJe5oldu83TkuGcB2BU1ULr8L4gS1K84ESwfhTdEGzwPDTq4/ESUHRjHURNsLhs8GP82BbFe8ZQS747vU1gsUBL4MN6DdM3Tw1RO6EQ7CCRlgFC5vJ7y8bFu1nMkojTVLs67R8AURc8BMl0fm3JCY5oIXEHcL/usuMQQ/OLmAm4G8hA3sQnOJt98RqGk6OH1FwJkl8tSBGGhWgiJ607LiyVSlxIISuP36akUxlKYq1j+iq5H3R0KaAlRe+vxUwKKzERB31oPepBlk8lgU6qMWqAz1z7tv7yXaQKg2+156MZhjigx/8yDywrwLqVnzIYkmowUiJlMTJUJOiYHPUoQCkpaSXFS9WoRNIMxrRPMgrBcG2Uv6uxdeRExvzt/HZoyDk/Bt3VmaK7bOIFmNc0uJzIKO/spBZxMaNElNfMEXMoJt7JYZWJJpv1vHWe0XsCM8inFr6w307BA9fSMioOVWfnD5Ci3v1373X4v2zQl+qEBydw/b/qHOvQ//hA/lq2T1fv5Bvwn7VXq1P+S0n5Jf+Iv3Ls/SMwx+D/MjcmMO00zRun/S8l4etCgdpnVq9cBL+hI6sy/FM+HjJkk9qYnj1YHhwqyJyxW38NLv8lT9gA0AT/7XmUwST7tbSe7yKpHPTbsYpyRiEddxQXY/SSTmityg4waV6VK3/Tv/UH5z/Ofm8yrIbyH61gtK6SO6l1QcJDE1QiBhKNrWcHtFqs0nsqPYFYPd/k/dyGzc72+s0eWe1XSTMrtp9wLVhhvyb0EMA5ozpSDu8X3hJh2jSPSNX+DCUPZ/jrZK63oHrqr3jRGm6p6fbrron23ChgF/l/d4qAoilEdSCVHx3qhqmzXMlfcpX2Y/WBzheYssAdzz6tJoESlVFofaj88EQJVrlPzRR+ktMw8XJC5yj76T2xKa6v0+JKGxm0ro9jqiy/02DFls83tUUrjcZAfyGWbMEUpK88cLw9VJL8O1b+i937FUXoenJ3/F6Tbdjv7i5/Hcv9xVTZunYOrotWFcVVLDyE/X+yFGiYL5YjAz3/Ciqq8fratk9u+3yIXB//JCMAeht6wyNFKZeU+8Tm2C3ezT58p/8cnLr7Fr8NVLbfpMjRa/m7uX0//y9FqGQm4NON9O6OW2MLerae8LAwR79VCbbRbsVeAiY5Ff/ll2+aum+ab4n4W4K6XRQvc2rP/Z7Y2Zpssi8veIQWqMRPKXK+657ZHKjm2JUn26DnX+BpPWmr88p/1tlaGXgo55Kye2umpHHKZ91/KQDbRPEp18/X9/fN9T3e/unfYfxHkzW4v0oSYO8LmpZG+Mbzmrmz+MKB/P+hxDx6YleZ5zW5R1TiT2m87efojrffFCpqTVGCPyk8h4EeUzoBhZMlXv2qe3sN2+w4yFVYl2QDB1+zoiUH1qwi5gJqL0KtxicFT9svAcwxfD/jY03NglAd1gSk5r89PUwSag7NXNA1k2ERGts0KuLJgNxPhFcPttoheT6XsV6+VoEuuz77fCjzTCRHLeEEemky4xnMCyqqI4CEhMfkCd1lOMQzF48gKdS90yUPUjuQ9U0fem9xI63ZujibjNoSl10hft+FQ/3pPrPihs+BcNWaaiJXqDQCDx8s6HkAZOrfQT8yUrxD45nzfm5jcwx1lR5F/TKJtvdfNYra5D83nkIaE9VSsIGORRhxt+f0zIaTEu0oHeoN7aggoalQq4f+3Xgk5p68ffkhd36y9GWqyZOrTyCONmaXDY981d48hb82HOgvtweR1ZRbHQviOrYxgsWmrd3GweXFcE5/JCuuA15Sq+UHZLJcL0hmJUTaX/PFZJGi9VheHE8RBLtqKOdeYcrly9g7N7P8XRDcv58r+lj3gvzR12LF1L8uk0m99n5x/BSz/lmFaMAbUcwcUHIiLQJ89okSB6QTUbzaxDAkfJYZ70zx2tH9kYYzEytbEl8BoxlhHakTeGGPBQP8I9hYoasT3YE4nmzPakx0TwHvrbBMC6RbUfzggEAtdhP7mIAKejj2tCKnktdBQw/QPv9d6po/66wPNoXHRD9et/wzLrvpff17+231PDwPv7dt9Zjaj7hbrx7Hb/Vxq7xP7/df+8vV5/T2b9zephu3ny3OXPnbj1hs0qf8PD4ua9rWL2+x+Fp99m+ZI5HkmRPRK8aZMK6UH8TMEj+JBUtnpotWxh865Vr5i66w5j3dxHrmkq5iY7whUlUC/YotqaXfs3XJ+hM7kyX9zI3Kpf6SSdowJNMsk6H30eSOwbhVuWeYuSM9Miy4c2kfLgU8TSif/n9/xTuLwj3pg8XEvadXFhWfLf1ixEHTF2PmgXTEOPDg6YJx5IulD4zOV00HkJ/2c3fJ+sSFNSfWvNfmN+sX/t+bF9aXfLDmlZXyr3Yr1nv+te4tm4FLaz6wGXnj5ZZr58Xiiave96/Y8SX6oM03m4lLbTZcTfxj8QaBB6r9znA0oz/M4nA7ox/M4EWemhoj0wWDGglj0oWRGgZj8oWuGhZj7IWFGh6jwAWB6jujzgWF6jCjzYWVGlJj1IWBGg1j2oWNGjJjzoWzGjVjyoWjGg5jxIWeGhpj9oWb6jYjz0WKmjhjz0WOmjDj4dg1oxr8w1g9Qxn86fACQyT8xFgrQzq83OkSQwa85qmtsgtM6qmD0jG94tkoIzTdwTCpsheM1KmgoivMwkUNwzAMw3CRwZSoLgkWua8ulw7pK0FyD7pbwUdjAkz9GHmVsfQ5v3kYKg8VUcZNZ87e+J3G2Ux0rYsA+yEYjgvljbODoBcl1XFPNrTvVduVkxNCXfqZdN0DGsHuWfrQi8V+A2dJztrMJp1DdY8dWP1qmqx2zAgBEj1Sghg0D+4w73Tmx7GXBWNOFvyDE/FhMYvzcsoD878yzLg6mAQmNF0wt8XEpgdwrnafc+bqRZ8MkH8HhvyJMYcFCsU2X+ZF5KPuRjwP4iUEY+JuI8rxx6YtpAMwrTutQnl/uE7hdVD2miPYvDecxnQKGwIf4vySag36kZRU/lGuL7XJ9sLt40NnumeOU74IO8s5kz8NtDabYMZ3l0Rv4QLw2WQjrgO1QXsYoekqizYQ4DB2vzXq2HYJf0kkH62g7sMnp5ZHqgpsLNkTLYp7hqhtzv6JIUWi37AddSEhO73k6gj5UztKM9YCD8YSkrNjYE2ocG3YvZxUp88U+qJlMgwn0sZ/bVpGGvwBALftMaBWkAdEyXDUAijPRbvsWtIajMeJHaEClPkkbeZ+do2rA/5p3rtSJ1UnpLcNMhsnK/ij7Bh/DD3adowUX0JU4YTONgic+jIORxKSwvyqmodLSFpi/jEqLGX4DLjt35A4OhLJVw6rsvbOoXsLTBWxnZtp4yCQ3p/FnVdnru+MolgYmWf/jS8Gtif8dGpvyY8yXG13SWul6OU5qxgRKhseh9h9y5/DyONb7iBLNK0ER1EWrqIglxrz3jDakWJyHXg+D/Le8nRyZiusfJMcO41liOjoh5RjIwtIzs4zO51X2d4BeDE7hI1ZdS7OL+xlioD1Vc84SRKWQxKoSEfWIfHLQudRvdruUvgcwrceddI2FVUkFJXxreUluweg92efZy47X7aG9Gw3PSy8ObEEK8g8ifB1WNLzZgFW3ov4PY1Sr5vt9258un8NNFGjealLsIYobzy8+1zk5Sac0lETG0aARe6ixlz0sarZyR1CtpvFCoLm6WUb0iN9PodDzsgqInkuVY+Jmuxj1sytdDY/d7SVbabC/hOLwMKZRRU/fBixGTZwdF3isrRLI0XSYi+EVy8LWhXzPuPxBMCh5uQaee4AOi3JufSAqrsfjdqroZf6dzOgCY/pqvO2JNm7hCpUstKMU9ona0Aw9oeUjo/OuDI4T5GdZXgHmDaYIaL4I09UWYq2WKTHl2XQPK717AZvRcKUEjUqTrzjB+XqlSea97iWndKFinuERImOQvxj0Q0aEAS1FVF10Tj4k6pM1ABssP9354j27LtmqNYfEFl/co5onhwxPHn8e2OMjh6Y0kOvz+t0kK2WFA4nIW05cuet9RXAkV7bNz8v0ZQYLejNdBDDMAzj9uecJi/yH7vmZ9MdVffpt6DTdXc4e5YwEKmA5XqE4ChE5j9mb0wYol1e9Ppu+7m/O6l7TqUOsENbqDSlZreESZazJNGKOs1GAuntoy+jERhRQb9O8fmY6onZNFJcuzANBSkhsYcOkWVp6L73r/ljYN05wimH8STOmmc6M6cDsquZ4SfYfskHGUIZ5qF3vWIgKixilKSJ4kRC7z15JcncggB1LAWmrNEsqMvSLPb8jmkKN+TI2UNgvqVJkOQC/p3IDLacCc2keX44VzMsXz4+eWE/TJlM2xG4QxiQ8OfEojoTl4QTxOPew7TxjF58m2dtQHj3hel5LsPuiEgSNx4zQy6fYS6D+xxELdidBloX40MtZKV6fjQ/kkC6TW8oO2vBBlj4vYYhI/WysEUGU9TC92vaEvMlHuYwaXb2fEO3zxA2xOm5UfSRwVEa0XXDTCvXzQsCryySQ6nZ4wVqSnT0jHpqOsjcvovzcNbA6QbhmKziI7oPBV76WZVcsqGkGOeOqLP3Vkn6rji+M4Rx2XtNHKXpG1/JvWrvx5T5N2pCSX2V8z5WYMatpHAvWxT5fZ067DSc4o0E+YRq1NO3xJv7UbxZsw3SnUek2nRPJOnRMWHuoH4gi7z1iJtuO0Lr3dH79RQwn5yE8ZZ5dJ6GkByS1bAc0LEW+D2SvLM8vpehonOr8MRa+ARcqsSMDBfe3mc0cJZ07LmELgAke6TNa7LRZ3f6qeFhlkOF5sVHRUm/ZMe6G196z6EWDfTkbaESf6X7NOuQS1QCgcyvKzYEDJ+9bkLeGV+UrWNPA/xn+0GTbE6zy/mb0NGhsvi4+dzBjZisFjzZEdH8uLJMRI+qL2MWkbBnrbenh0WSITKgM0liPIU9SplRC3TRuYd4KRe+Z35AIPJ27vRIXFp3KM3/HEQuyxLFRslEYLiwE+fxjkZ+uCg02g/1ByRGVI8kPZ4HXF7L0cleZzERbOTKCf0cEuTwdhqVyEBJNClVHYcvwCSBgXbf6TKnNfN3nK2HFkRgzFjV5nlZZBa9uP/sGf8mzz0IXPA0aHzX3p5tQWreWINAh23xeTSxAlNwgUpWyO+iPmCOQJoQIrJTQZEPatLJ0G3f4/hs5uXbjgjBTjoJQdYoN8NMUBR+Z35Yy392MHDOrtMTRPq7nbwj1zhDOmLQco7nuWrOTYsxfDXb/ek8vfTQgYt2uNLeRUL2903H1rlEb6PpEwvmgHPCB9eJuzQ2SHIhRVh6+WMLFuN73iWX52Y+eFWcm/+F92HGLs9kfRNIvzUEHRs8aXuCEVmF66L7NV8Rza1fCci2LdO0JIy6WW4S/NzQC11o+zFRyMc4aQ6qTYheLtwJs+l8JARnxJ8wDMMwYsdgZ/2yuwttSRotgGJm1kT0yQIIz13MwaXbwybKmaCiKcyjs5OLMXRMYLWlL69iPOBofxWJMxL8a1Y7z0I6reldBC8AP4qkhEWLOr+Y3U4ceq7o7vDMC84e8pv2X95LZzUxBQwoYnmpGwdfEbR3oAFvyDDMHAS2lHeiIROUizP5djpRVfgYokZTpibS8338BEnybSPXYUfGIELkqrirHqgSVI0lEuJGf38W2PunAyppQHYLidoAuZ5h7DnKAyqZQW6qln57qMqe1OWM98vs5zc8wqPzQZJtYiwBMpAHUkE9NCcSyBpBUPPBvVRXIWTDnlySjqZE5NVC5pmWXX9wAvzk1pYh1UZZibjFF6lhETcMk8QV/z3DJtunfyLvtbS6dvh6uFnQL/Swcg3iEEg9GRTXnEnc9wojVUqMD9bB0FpVY7V0pe2C3aYH7k8/5tKdeJs9EvOias5n4QuJWq0RcA16zcSEx1srD27ctSu+mAXIQdlmuc+a1H44ZVDa6mZkiJPl+2/OfFOP7p99JhHjiiaJTxrquOjQc+EenYS3H9xhTm2fQcdObuIw8c1G2Cp2j6Gt8Lf1tgxSzeNrfNb+c3sp3ne/REnwKjVP5h3sWub23Cu4XbQJV0hrN/Md5HsX1UH1Wcpd5yFK/YJDo/SyeKMaVWgvevWTdoMG/ukgrJRxYv/7mVytFYnHQ4EfZ4gXwBpOhMtDFCRLsHFDZiweqmW6oSqohiHg6MvjPYN+ZkvkUEPsRW7lDFH5C5lGl+l3jtofIbHjVU1TSCBqe39ZCN/k54R6VWeLrLjkhV2Dt8a0KOaEH4m5t4tUmtPbtZVlUfhXOmnQHlaOcmx8g3eN+VPoc7mfWdN+FrQ8LzAtIByCnVE3YzV6nmCr2Y08uQGd6fDDk/KcCc9mfNiJnQXE4kvaO6FDe79oyoJxN22NZXWLbQBXOuAn9D0LmGDsage6t5PEqVjOzfGxLrnixaWUW+ZzqvtaC8lBk2IpTLC2Lm4XTkxNZsdv/cUwUH9UvJPCHwcBD6caG9JDuWqX6oIXPsldqb1mPyh6vQWqOEpreV+t2ZhxznPz2hrsAE7Ln++YUDUYF38pk8ufmyaNsmJHlLP15OA3z3wf5qXyUeUwvXF+iu4CkyC08IC3UmTRr078GeBJ7CKJAoHHq3fkbVAPnWvOKP/j7DAF+pe+Snk4K/qahgqqKyxoSSy+xun1AwhLZm6LFA16gXio1NRfwFjbdveiNHZL4qT0Ap9m46EHo+MGtIa89xpgUtTBjPal81xjPYnbfhTXyBX9IMCdxIXO5y5oMS7KWOHrD/2wrO9TmdwvwCtsVu2+ldawrlWYaIiYcV5pM35yQkU2i2YWh2EYhm/PUb8b5A7YSC/ba5FgotFxRCZwJaJqBh+4jmx5DXdFAEoYsLPfJPDy2Y5BZ8UB999/4v47VzmlqBtqMElizbiAan+f9EDL7yQaLxbk5dDVmqKjYisxk2pqMTP/1/+ofoZdjY9GfJhsOblL0/DUcPko3FDQVLT6vnwA808MvZXiUrBEXfshXE2CKWbOP73JMY+R/MNPxyEC2Psy/aHEttTQjBXXnKYfiK4+XGqsQwKd8kTJjMC36RQi9sG3rx/w2FaDvSo2jHrLYcETfLgMCMZ+LKhHAk6mGDbI4/JUYYNSI6bw5ZqViG3dtfj6TitlCeQ1iGCWOleygWWmJWwKBSGaIq/DysijnOJ253TSrRiPpHBLmBx/W4JYeesj5K9QDTEzBedIMlA2BuOjody42Js6kpq8auwWzVBgWzUq7rlGdcpq+SZdcHOlW1rqmSTbFaj90n3AlPWm9pkYOYSaGeBH3zlzu143LIlicFyLMY471e7bqH7txjIFpXWTkVc+oHrrdVAgwqixXgl9B45kxD5OYngZOoROYICeK5BiKcsoHXU+Fqz5gITt/SikcXuN+yJZhAmQcp/Avj1OVlRGqVc3TyHU4wZv49m8Cuv9wWaeDYSHDjU11pd1FZc0wSGskhh76XhfWD6RL5/v3+XIVA4X+OatQ5LckmkMtgCbKt33iXWsQOD6HNix/z5dpXgfIpxaXNRYcYkXKz7cADA9fsNzG1/CBuvJ/b/H/PU7HPCOaVkfEVJoIUOJQAkidSI+hcV4db2lUyja+pz9aavziNPr8/hS9pFOhaQPK21H10tH1Os+tIlqCPFoaqjr1OaN9P3KyPwFrR+nWqhONHvjDv0DqwVlXoGBOvcb4khPbBIBMQHht4CwUabh0OGFHX1qyy3cDtPt9VqwkjqBhiBV2r+jVZIYvjUYa0+BURE3R7PQoINQXtmycE8+mlJMAgzVM7US1MF1nfwgClIW/ht3E9RcdjNVL5c5CpSLcGgW9ESfQDdVD2sEzRaeLH81QIrw1mEU3SeTG/qExNQTm5ydAKvZuygoydmmdhNno4dJv0OZ57Pw6r0CxJB6IHiJ6r7lp9GiAJ0zxdf5ZPimSse/ISAk+YnheGsHH8hFynbAFz0Nl9hvGqfKfoDmgt0RMBxEDgqgIefKBmQ0tcKHo/4P8pmEJr6+mE8yznLzfjcgj2g8n0uoLfXc2DUO0JgWusY5QUF8eDtDVS9cMhj6rS8bW6xsPuuPkNzV8ALjuIIQuExDf285ck1sBXauZK9vavwYpFheUVK8do6T7brbBLXX7Dz01sYb6LdqZDorDpHe8vUKzt0YlZZOLIXXRw6mw9CB+ejurAscibnqTY5qVWAYhmEc6ppaqnJs0xMifPX/r1AK7D/221HO35s99PMUFbcFKy9bPW2jkjqMdgm6PXQztguFzQKENcdUQQ4NTJfqdHTFH/donCO4COWBQtddXQOiyH/LGuxLDx8PPh+fv+7hQX4XFp3LzpVqL5z78up0W1SbiSLIJ96TOIw2bfehevmWj8ABJ1rtTKuBGV+tGILF7CzLEzORWxNHbHr9XrBSGfk/rkLEAOjJhCowLlkn4swu8l4GF6JyY5Pzj2KVqpM3UMFfiQ3ugSH/C+Ipqd085Se85pRjA7FlI6t+s2wkdx6wk850yE3Q2a84HAEr5Y8eYDtGpzW0V/ThufUmmQdpKZTivLowc/npeFMLniz4/uT8Dse6qltBU/2AnUphGd60MSO1Sn5sDSGyCbyK4l9WB64+K5cAge7mSCmUMBcmbKZEaNdMUjb96dnnBpl7d5SQl8JZl8PvRdQVAOUaJdxE0pB30cUW73aU/8QGoCtBugt4GshjYkzkx/k5+LfH5LFCIPz99OVpY5aRrNJ4mWqemD8ZRSM9rJAwUw5c70QDnEnoNPYh2PBCrFcd1+VzKq1tEJ1k282TtLsfX89TqYILioBSnhGFy4LipXtoPLhM8l9vtgaVdnMqdGKev/vUwT+bzOP2YeFYb3EnMV2RnnSVLTuoSDy5OR/NlRnXG0KWq9d7fdsZbqF1+Hry6XPEa5hJxVdTruj8i6UuFunPl8jKxStiPrSt83pFjVOok5J4cupHDiQyXlvq3lqAH8X4+QuDEznhdSS1UeeweHC5oAaiOQ7RdgIKeCrxatDQDrd75yj/4FTg6TZ+BX1njJbCtxesI8BaUOzvx9qA6mWSkN6Fe7hHUfg61w4z12TGTYNfGq1UoKrERGykAcsNeBLv3DPOnv5+FEnp4JgYIlHILGgdXEAZh82GJBMY5w5fajuDiW7qxTg2uhE2m+VC4CBxk2tcNH8w7HdKpI69zhlk6+spj77SXB8+S0FuWHvL2IfMHlPSNqUfinOBtM2effVBISj2Y59jJDwS8wDo3krokIMgbOZGleVS1gikGmdCWk1eTG+RRma1+ZPcWJ5gJyMcUTXfU/34BoboZI3ILVfnoGkTv8opTqfsuJpWohjw6GEXAnMGzD6RPxCyhLvDb9W5kgcr5Yhu3TgHv19OSiWVVxQNEeDT2ArUSkd/EnhPxknNKyuyYhpDirYU5w3lSJcpfFkvRCKymZftCtvjiDgx+14r08T1/0hQogMdKCZBpe9rvYaK8Idsus4LyTU73rqJB8hZv68Qg6ii8AtZZqnjTTNDTnl2t17HbvOP5sUhedrAJtQ0vpWahACfcwlIRXCP6dZyj9W7LJN+BqVllbbMfUn0KGSgolQdvIaKo030rSV+SwUVXRoQtSiWnKhDI/h1HOoEkdG4QbZyAq9o/I1s4QTdjMaIrDhBKmj8F1nnBFGj8RXZxgkEGs1kfRZ0AY3cyK6SIL2gcWFkKQniGo2pkV0ngd9ovJpsTILuC40wsvxCkM7R+G2ymAjiDxr3Jlu/ELhH49lkw0TQ3aOxbmTLiSCdoPEfI7MniCUaWyNbDQSe0fhussVA0L2jMRhZGQjSLzTeGVk3EMQPNB5MthkIrGk8may/IOguaSyN7GpBkP6h8cHI0oIgntC4M7LrBYH/QOOXycYFQXcADZUs94IkaMwqiyiIZzT2SrbuBbZonFQ2REG3QWOlZMsoSHs0LpXMiSBWaOyUbDUS+I7GD5UtRoLuA42FkpWRIG3R+EvJupEgfqLxRWWbkcCAxlFl/SToWjSKkl31gvSGxnslS70gbtH4qGTXvcA7NH6qbOwF3REanZLltwTpAo0/KouKIP6i8Vll67cEHtA4q2yoCLpHNDZKtqwI0hkab5QsZUK5oY6cXKFkCSo3ODHNsXCdCW1uqCMrp9BlCRq+ceLV+8KYCZVv6silU9hkCcoSJ8JjIb8SGtbUkZ1T6F8ltFnjxG/vCzETyt/UkR+ucDVLqHzixL33hfUroc0ndWThFNIsoeEBJ569LwwzofJAHfnLKVzPEsoHnFjPsbCcCQ2n1JEvrjDOEtqc4sR/3AoOhDJSR46ukA8SKh1ObD0WVoXQpqOOFKcQRULDb5z47n1hUQiV39SR905hfZBQ7nBi8FgohdBwRx356BSGIqHNHU6881joCqH8lzry0xWWRULlGCcevC9sCqHNMXWkcwouJWi4wokn7wv9JaFyRR354wqrWoLyCyeWHgtXNaHhP3Xksyssagna/MeJDx4LqSaUr9SRsyuUWoLKDifuPBaua0KbHXVk4xS6WoKGQzjxy/vCWBMqh+jIG6ewqSUoOFAxEkguDQd6RgYkZ8aBA0Y0kkvmwBVGFkZy9jhwi5HOSC4XOJAw0leSc8KBTxhJSnKZOHCNkVFJTodGc1m/IugaNPJMdpUJ0isaF06GpFRMAgPJSErPZMCAmaQcMNEYSElSrjBZGAP2JOUWk84YSAuSkjDpKwNOJOUTJkkZSL2kXGMyKgNWJOUGk3AG0kxSRkwGZ6BfyJdbnrIXWu4T0yA2LMTKmLw8PiZ9cjV0+Nux6fznPy/Df3GsOuZfHG8vGv3fmC3Wa39m1ZvG1146iW08ppv4r06D6G276T+2z8Pt2ufctfuCNT8QfgHbxWb8ufE83f/ieFj8O2tv9T+Y4M+sx3FbrWU//VeNT9bW4cnInYuwXWpfV8VJ3B7UbzVYuqbKh6WLHKDLPKALYyhd6UGgPSwdu9s6f2j4wOGROxjKg6HVzREd9feAM+rIOPoy35mxMzmL+eTWnCunO+bCqc5wLJlzcLITGsD6TnW4ucY/f9WYwUVZeewXAlVVG0En6w5crlxwrIVTK77jZsk39x67pFD0VA2ToL/YQI7o6lfGBpncvJf0o1Uzy5s7e6pSFPVO25NLpTpiUNkHUg0N3WmmtKftRz3CcutSudiZMcuw36Id9xsL6hZHnRd9RRzf77Xgzlt8d/m3eWcs0+yBm6gkLzhuk+CwSja14bpirqKxuIn9qWNN938cvPO1icUPnoOdU8vNHj+flzUIyc+sytLSvoxRsXeddmcqyeBUo39o8CaBDFn1WzonOimoXuCUFqEemWS+OBEn/Q3zkqeZjDEPXOL8VfdKp2xIUT9zR5oZnSdiZuV8oF8xzfLEmGkeT6wyF05QGcVOP+C43jL6FaAH2UGYmLlxMu8qAdmbGFSy1vfSBavJ8nzmMS6J/bdm/vvJJyJaqQiLqGkn6JNpn2ixo6qIxay69Po9O1JmwC3wkDxTHv3Ljj358oHBuCMVFtiTRhbKPWli4XwmOSMeSBWVhIXv2PbXG9Z0cDvZ1zg68gqioHc4R95DBPBsQ4LEsV0WN1V82C/DYV6oqbY3/Vw+AHwZTvn/QDurFMdYEUuDNkGZIWjwmJB3EDv0DhH5I4Qog76+Srk7d0Sn0CqUL2zFKxxH5AJxb2gR+QgRK5wnEmOAaB1aQXnHlI4yHGvkDcSj6Vu5Q/4MERyeF8gdRJrhmFEOoIpnHK+R+8bHcJ7p5/KEfDCiSThHKY7BEcuE9gLlA4KMx4BcDfGkeocO+dYQMsFzL2mnjugmaCcoR9jJPuP4B/nKEA+Kdo78aER8gXMlMYoi2gHaL72MG/nOOP5AvjZEcX0tV8ifDBEGeJ6RkyHSHo5LlFNU8RHHJ8ijIbbOwMMr8lcjmgWci5TGpSOWC2j/oPyH4AIeL5FvDLFzew4gTxUh0aAvjZTGzhFdRNujuKniExyfkXNF3Cc0QW5KxB7nFxKjGKIdoW1RRnMj3zOOP5HXFfGY9LVskO+VCCM8fyGHItIJjiuU2qjiiuMt8qDUQE5xLn8jPyjR9DifS3FsFLHs0d5Q/hjBhMcWeauIp4neISHfKUIqeL4nadfPiK6Cdobyw9jJvuD4F3mpiIcJ2gXykxLxLZxPJEZmRJuh3Uh9nt2NfGUcv5FXjiiDvpY18t4RIcPzO7IZkVZwbFB+GlW84PiAvHDEdmDgoUH+4kQzw/mXlMY4I5YztE+Uv0bwCo9r5J0jdoPeoUX+6AgpVBpS7rIjugLtGOXbbMVrHH8jF0fcL9A65KMT8QDnfyTGoIi2hrZD+W2m9CPD8RDyxhGPC30rn5E/OxFqeD6A3DkiXcLxCuXQpMkMjorcM0WX6Vv5inyAaMBZJMZgiCVohjIpATyCXCGeot5hiXwLIQbPGyl3lzOiM2gLlErZyj7iOEG+gniIaAn5ESI2OO8lRoFoFVov9fnCuZGvGccK+RqijPpaLpA/QQSF5w/kBJEqHCPKiVLFDceCPEJsRwYebpC/QjQO562UxtYRS4c2o/xTghkeM/INxG7UOzTIU0NIMujLq5S7NCO6hPaFsldb8RnHF8i5Ie57tIDcjIgZ5zeJURzRTtDuobypKVUZjifI64Z47PWt3CDfGxEmeD5CDkOkFzieo5wpVbzH8RfyYCKgn8sf5AcjmgHOF1IcG0csB2jvKJ9KsIfHJfLWEE+V3mGFfGcIWcDzo6Td4IhuAe0AyrGyk/2M4z/IS0M8VGiXyE9GxAs4ny0BiNXmQJ+bezRllOgrlV5puVs0ZZQx3TD6gXNyhaaMHvc+CoEJ0HvUct9QZluUKX1S+dhyz9A0o1Seorz1ouXelDlnnJw6sq84Kxs8FZw53TF72nI/cYprnNd0TOl15zGeapzif5yDXcvd4anGqdOO2v84l17hf2ytNyVSadV4I5to4X2KKQ6ifBKN/aC3QqpaJlU0s2BKHHVIlYPU2GLrC2lqVfuVhqgykRho3MkQU5z7T6S5tbVN0sJC+yTP/TAoD1Jbi6ZeslbNfbqJRqaUJQ2Nci81rlq7S/QGqEv0e7QLAN+wJ4wBrySssKJTAheobOhHO2WpmyiMbdxGF/iG3LsTF+Dwa/SVTXiO21jzuTgJp3U4Qoc1LLHfgH4bt/SL/WllmepMs0j2MY0uNVk3SnCowz+RdHJQCY8r+vHYjK1Wne6cchyir+1I8vG00KPXLv0GONVn9Z2OmDCw8eMDqMfGz6SzWsM4BLG63mFpxttT2sXzk9O/OlzsNMJjOk4XeldEqoPabLGs7U5ntzgTVTVv1Ge97kwutjXf4JX/TrFq4u/8R99dvJaL9TQErTbtxiT9vGIS/5lY1xrL7pD4K/L3BXns/yXf7sfdtpnD5ms/Dk31nb08pNN2ubkpVzs9uRz8wniz/7j6M3y9fqwO7Ph2vou5k/42PS7qZbdYXzRxv+02R48vZync1T/j7qLJ43l5meYhhWFazdWP7unXSvYf+bRfT980yXyVxWK63H260NfW63EUNXs3J8EUIKeAbKEwBFLueaEO64zA/Uf91nqNg9bLoN4cP/QmMoLvlEaSrJ4NPvk37L8sCnUEqRrVCTvWJUIfL2+qSzZRI7hYpDe+1wn8SqYhlagFXd7ml4jhA2TQ8w0KrJzian4D3mMbNRgLGS65S1pLoygDbJfyFU/mKErmsIr+/2QgXDldCyAQbb/+npQhGRPgY2jQi/fTDo0VMlxhja/d3XpU4g+mVvDwIYF0TDYnEKBOkm+U9j4wpOMzTvgnl7ePfyPD/bxOXhq2q+YbanqipRtby0l5kKh2LVR9b6vIHxSCDIQSPKWzFwaPL7pIYxtNS3GcZnnb3+d58iCBQBkygh/ayE5oFT0toq7iUe8jpKvvTnSLKcDv73OfRD2FqyYUNO2HqozXApUI50Z1iBfriR2t7rhJ6gVUYbiiFCu/ImF/+z88w83yrZ9ifBf/xpO6k8SHFrSTt2sYXYtCxgCIfqQbc1XOcThPhKyjVrNfK4/jz7hu/Jrq+IavUI/xGRc8I8fD9VIeY2drDOo8393UwGRoBBS9VpxPfUU2JbZf02zDFF6YEhhUStBLHWHi9+ISkQbJKaQSKchwav3VP+c6B86nZv8DKD/ayDZ+jbrtxX4tGa4lsB9O6nLxywlEDMfQwxyz0S19vXSd3L0WGDGLtz0jjumKT9DFFcog3NWy3oEX5bKcDXcrzR88j0gauZCbt8E+YDi5EQ/Pjic3BIKi8FOTDsXD3OomrqXTRcc+y+dWzVOFaMroVaukJJAQId5cPKRWD/NM7kDxcFIhgUA9diiPnjEIAYq3FqMzRfIjUYNsKGl1rb2W1C3I12WAtCQT+0QXU5LhvZGjlsDnwcPNtnThJVKsgrRHcCfvNKFG3Vyj0CbOoJIGQ+oFZUgqvUunVKESqTNQsuyqSSVqqbsQzrMHzG8rB+jHJFBJm4A0c0mF+isRqLMi72rYO6lZEYouE/Xdt9H8eGHCmh/Lk32W5fx4I1BXiV2VJc5E6JSpWuFEVLoWSVP40ahGVyLIYF6HQgZP6GZCD7Z6p8A9RpEeQTZVQLqL4ti+07HSosdPmIHOAQr1+/BK9S9N0b07rSUVu/JoqqLFoCcnXbcaf3eTr9OSDA+JdCac5Wi5eDxJx6B/CR4gzdgn/qjq9q83Ep1M+Lu4ZwP5oVo4udDdZJL+g0Re0HhFY+zqu78iB7TgMt38rUeRC42SSdSViP5LEnpBKfUpIFPsid3o87exlmxjAE2qsepK3MLibhiFBiqOo3AWvIrA3MersfLehEjRbBdpjaIZMvWxKdrexzVZ0vptZ+52CumYlx05Vgqp2g0nN5OTsbp72yehELdxP+/p1XYgp2yeXsKpPSa0xxPwk9olRrMw0hsByAf98ZYN1R82dV3zeuP+wGFZhmOcnOTaoG3UtLNcf2jnaVMtbpUuwm+wcugUvAPXBl35v/RwXe13F4k/9TX0/oX/VKPuroM6h7tYqQ+ho8765rc2ctFNOBqT7a9pxHp2MSpB0NCyBDnZ9cbXPjh3K0Dv9mgFPyyBt1NBmjeibL5YEKBMfMCFPju7/LGstqRPBPjcFIxtMlu7JA/U9BLL9MMJ1pxTq39AgrP77kxuQ4P9q5i6yH4e8jzK70jiZXBTPerpgnyBa1oMRzcCBbWkjuleTn/y64R/9tXvHm+3j0eopqSmoCVquGMFi6BlGQEfoXWzCDB70nDc9O5dYvMWm5NTfz4R0/2PfWuXRdC6FbMQr//Tv+zMGW0lCXHvCyX8GF/auZNLyZGdXH6WZvkVor8Zi9i0mGC5DB/AOHBneetJcl5BdSW6HSw01Kk1tU4O+91QijXnSoz0t8MOiQamt1aN4eamLWV8TdkaCp0wLVjOX4jsGqH4DcbiLq311fUtpDvIIzDwokRLyW55RygeQUGOjkBMYBL8P62Eyccbp+lqsAr6s7+CMvPIB6DMCForJYS85p8lsPSNxjhe1iixkLp6e4SfttoAXu8E+i7uUf8QjnCpCe+g6GZSZICFXHDzi1+eCg5u/Pir/E5PH4Rp+hlJ+bGkzjZR7cb9if+LK2t6Zjk6mJ84LUqlWFyABH+U6yjECy1RrsUZqeLHdv3+ZCB7HyB35Ha3tx10K2lVrKU4e2a10EtnhY48ZvGEsDjhVVXX6DHc0SdI1zRlz1TKSOzj8fexT3p8keP9y2Liy3F91vaK052T7BpuXcLibpCpq3YqjRfQ4CsNBvnoRBq0p7H/hNLgeADUzUtfLh/8lIl/0wm8ooVhD7PnSfdTByfP5Humb+3zepcCtrsno3h0xh6YApdVhGGiE1Tk9eebKvYPkIEL/ZeXkTH8eWNaDnjXXRK2PIffU+fffc6POGDpn0q2/oob6qpZml5XE+SJm0MQv67o1tXa/FFZaUe1UMLcD5sFqHiRP2RmRaql56BYo5hN58IMoVvmbBAWQRhRu7f+hk969spX76rXy6U0pG7GbAPLwR6f4ScO3uJLjOKaOFIjXvMZyYoBiBB0BBLKNYs7Iy7QeFFSnSjHU0DKuXNECIThIhfaJrtHN3HhtW25Dv5MB8TPlg8vHWKw0MzpX18xJTZa8oYEFo5lAPeHSfzav2pjgOWVTrSHmusR46LxGS/FRCNUqL7KYXUf5gbTooWzTZK9yu6MJdaQYz3G4VT8LqbqaTqZ0gqd+683DI/j0+Ef1V2BH1+lt2F4LkqOSEjrEkZ29fhbYRDmnIO0THxF+i8z2pYr/WNAhd5QYPWzqYwBl906tTcBwwTyWc/OUdbOnfvI685qU7H6ske5f1oIed3auW8fAG140BzltoT+p/QkKEcjXRp8Grc1HL4p1O+ULIrFUn7hWbQhX7nfP1Ku/ck40Z+/A/uJQWLMsF0w8/uKpv79dqhtjV/78/diWhZX+teIbYT7AeLf1J5KshUhjuX0QblxLnG31fMLA8oKwmWBctEvZnDGLBL7X9a8ylnIpipMlZfGhqLv0C+WGXXjl0F+XBkbn8efW/Fc1D8atzuX8UfDb1Nj9NgfX2bOfAU78FnljoPD5TFAmK5LT+LOLIYYaohDexGQrfA8HcA2K5v99BMdGojWlLFfAUDYezbeX18/hUdpcZ30avoe134PPc2Dn0uTtv86FpBJU7vyhQTz9In3ZW/SKbuURmKqU34AgpRzHwkAvnFqPbThYZlFlD4mh8flGLhtAcTl4tXrnrMlBEcAypuUYvbSay1MIIxMyoXCY7Rp0KE+uYl7Y0I+p4B23shmy0yKAM0FcaHslTY9f51xvpKFtYNybuC67s230qVjCk2GgubH3pTbE6rKaSZEXzEXubncWmfrcy7T7HJTEDWyvjR43E2KeHlvWft/LQ2dhsGg91biXEQnMlJzfdWOubZks8PyWjWHW+ZN5XpKmQOtDf2t2pgqtZe+sFvYHOwmq39pa6Q6X1Pu8rZ6435IzZ82JFU7LeaC5naxkDi9kiG/+T1sBTxVUE6InduHhlMXbJaaCXnVQWV01IVq8qGWUBsL+VccpZDFVnUcwxNWdSL88k/ZNEucYidCWOrsl695v5+7wGUvfR5fzofBf/mDH/u0t74f5q0r+VMzvKVXOpkJ+an75vvU9EgL4UefNT8TAtbbMMhvwBfyo5dJ/ypsgraP2Zsmy2/apeslSg5KUfwNwnXrf5vTf9Uw7Hl9MK/iXL2zbv2VvmC+Z9y2Md3m79YWwxi9jCIUV5HOHPRExrFzoTviJyAffGgl3lQoadaxv99aK71i30/rc6nNh/M6n116Cc74V0f+lT5j953kj6ZtUk3Ne9DdeCgFCXBPAgkkkFsLpBRh2a/rX8f40OJTmN06SloyojQX29GHnxO2Dd2qjuSJ0iUBB1DgR1XiboeKGBYchHPcm9Y+6zSQjR9tQ5vdKxlTlMT3gef8q42wBLh6Ap9vHMwH9M5nB4WTSxD4ump85W5hI7z6JZMDlL1kuFBktXC3bPmbXTBUvZAUouG9wQvwvkrlz2X3kDXeXL4+UboNfsPN+LjfFkzTYWa8VtYOhd0j5uYT8fXnV3zMTpQGSuci138VvfZLKSVF9JBLEt+bDVYQTRPK1yVnKcRVgeN73/NLnLkMfi6WglP4zgQlgbzPTJ/D05CxlQJlXQU3ez7H8TGLVR1r7NHngCZtv94rcH63DfBQyLW1JB6J9AdFEkgkt/2jTNRk7hCW4U5hfY7AEA8PzAJmrdDGCl4V9IRYQBKTNpH5fOOXqPtVnXFL1i5LZK4Vw7axXhsLRiD98GakVo70TiKy6R1xkGwdrwSusTpcGp28o8SAjykDIlcR4vuQrpMgUi0ATT22nT2icpa3g8GlT1w6hEzt+F5XJDpasq3etU8UOhQOWL9TwU1c0ejkSPoZXbdJRaqTETGc9x2GWpQ6IRC0Y5ORW6Q60ajlLVinqN2/3ndLvFQzEqmO0FfnpqpbKXWYieq8Seup1Q6xXzJZyzTj9XLHOEbkcol1vUWlI2jf1k1RH1vuGvrw1XMQxa2dhqYfpxz9onElfp8vUlkdSqlDZOcZTahTubWT+AL9UqB1abVjIDbF68C9l1Yxjgb8ulAkXeuplNp5t5QNaz3ThRKNFpFDIU2aertjXCtUGrwwonMO/pVeqa6vLdcRoJLIrtPkiNS5spjo1RElsc1EHf7Y8HQ0yR1yiAld3juFN0GyjTU/3a4vWDwUxFpneRdBPvzn92ISVVgkpw/YsloX4v43+a6AfSQBeBqEtA0Jc2YIPoGNi0/RNE5DQIUGMRkZQ+KB9AwMlhGrTVzMv2jZ6rVaKBVC9e0x84oAP2z/y6fsbSTwleQ0yPO+UzaPuvB/CWyobLVB5vnl1fbPCgwyet6NvFgP0OHuzWgkfRrGf9lvm4YV8mf5TtJiBUTeq6d5Ix45VWrkvzT6omLK1QN68hURG8AjvBpJBTfm1YXKsrE+oKEEyryiu33l8whYYi5dyMxu+GzENbMJF5zI3JE0PhyvnXBcETPuz3yYbxgyvEPfooE4h9vSnGb0VO6MwBYtQQq6mYsfvFiaOVhJlqQPAkYT+VEzmGL0u0fSearp/ocYD/ihwUxC+eHJsWngD45RPkagFwvFqxF3DKWFm1LgA/yLOCh4JRwIDZUME2EQIseGqUNAezNF5C9HLl4ecHFJA5MFnoCImLfyTtPqyaXS+eEm27k/T97VejSXp44XRjLCbLcYLQjygkoQGJsuoBb5vaxKneFe9Qtbta1nFfhnqS9UgA+fZbgvGQGyaaW19o0pFiRb19oCrk3zhNOVk8qXxBZcEzylLSIKvxmX/7g+K2WTjfl6iwwF/lvwd/KHOe9t0UGxLMo8dGrjfM8WShdayhcPdQiMqWeyLeje/4r3J+iJ5Qu+oJ1pJig3Nw1I7V219lEiZrnXCkfTkfALne0aCQhyzzJW1M9cdC84VSXnUn0YOXdz8RRA4bULJg+8Ld1bbsiSZdaT0cJq7oP2MwUx4lxB+1msMRDnHht3oLTonu+R5cIGAVoOzv2j/SZRQN8RKlp3IThENY+1RZfXOTlTsydI21sQ8Beg3IH2yQSdUE4Zn55KQxXfzJAak+CD1n4Jmos1/YBzT031cdsbn05rHpdn1DwBl+25dxRZmuei8NpyDNHDC/6mRpSfqmtS3uctAVSoE1GAPlSnVzk1MVh4paLednMce+HCPBQE0pAFw06kjn/NNwGb+15aOz8+HAlmhDCf/b2xxAmzLD1hH3qHIlmAVXI3XgcJXFaszSGYJ7WQr+TBz2UWExyAvgFA4KDI+lYGfgQe0CvW8jOZy15RCJl3CVIHcJRxbnrEAQ0acM13scEshB+dEEVKy+VdVqS/t+mLdVZm+ykq7A8o7MEVF0xMkPGxQ7EBt9cv7yoWGpDE1PQnUNoAAlHFWUPZAhwFOQYTf6CiRYzXTuKlL7Qg4AAS7+7+LZqbEswEdZ9IF7SlcQmTyhMg0AHjkEeEPTwWCzMr+0mXYDA7c3853ARWVMAA79UgJrK6OusHXgA1jtCtMhDkTchGDyQm2mzHegGO/bXBZtIOyKLHjcO9HO892GQy2PlbbIZk03JnNiCY02GYntKqYhRuFdh3318y/plw/Tt8jr6edbH6jLvOsUBTZCMWvvXhWK6+pAqqZHoJ9ggLGTl26luSH1egvbG3QHYEWeKfxjVMcIKFa9Yktjo8vucEVDGwB9UxcgwBYxF0cgszar7izZgrSzuZVLsXxrdnCxgJ+zyoWoAJRmo3f41ywOAAixMEM8hMHSfQiqyXGM70p9VU5f4lZti5L+olVGalHaU+dgklCe96VEzoiLCpBcxcZKWwMeSRnPMCIbzmRrxv2V5+m8G0iok0FEUv6836f6YIPkxe6Z50bv5B1YEuH5ZsgvQ7OKmGrsQfqWA9/IVBO+nMh7M64llJbzI6spBEzkn/6TRYv3kzfE/JUlN7BrkEIUeFJaVLdLGvGLIfPgSUKOD4XsmcmaMI1dOFa5QIpd3FOeCs/QByGtWYS127EFGo350/MmQleE2e+Jk8yACshFi6tj7ClmY0jYZOXDQRabHtRRPKawQ6gihuHIqniS0GM1gmRlUN3b4lIbF+LNhc2hE6856JULb+PdV7Sd2Gf57bVtOJX5We0Ltkg3uG2iV9EtFFP+PHQ7Dv9UPIznHCrA2G48GqI0vBlFUfwK/CWAz+84MA2JlTJZGG8Y6n11lDbFOha67t9OkYt/1oKQFJOmAkNiYmoK06L7gog8QC/uKEuIO+kC2APKtR8dzQnPuuJap5ZYnBXCnkYzhMbyRDRLUE7DJxEl1QTOAsJP5XhDaIQybEymbHJ7NaMAhiJd15mYBkIYVVFOkfgS4tYJ8DSeKmEqXeXCcUNQC+EMNgkSWNZbEqmaIDsFbA8IS3lMtBmhCPZwtyOQJiFWfZNI0g9s8V/UMe3KUn1FMj9wQ6VAJ52kerxy9BfiHwWY/fRjIH0LBBXaJVzBk6TBlTFsBTLuhzkKLTAqdJ2LEAyxYkdB/0jDYTuQJE5kF8Y1RcWEJ3USTbO+mcCZGZPVNHszTuOU2mmZ1WHYWM1Sbx4T4nUrQPDYFIi4q0zcOl5aBAwWNe57yc0XwJEoMBL1HQglKgMPH/rY/MkFO+L41iGYdVTQGgBag+oiyNAAuk4A6laNB2xYnh5hul9SqJ7Hkp8votIiINBk2ieClQnN9rJlDSEle6PONmby4hcmHe/I1R02UtFvg/nHxa/zrWmqOKcbVGtRnJ6cULJ0c3/puL/jG0cSprp6Wg4G+S+5q4Zy9GqSWZf47TWUKs1ohwkOQyOh+nWIWhZu6yTNeWGYQ4ZEzXk1dvoGMhUbdMFPZONE0xY/QmAxWAsYnxxqtIP6PG4NlNMXBpx44JRY//GrrzfsIxIkSzEb7LYNokgCt0Hh4diSD2I4HTFWMxwgd5yc1sMFSsORkhyvIciUWaj3DbgrMIhxMhicOQzbCs5aHZIUJjh8qqbxI3/Dx72OPhJC5RFybyDokUiwYgvXs7MHJAnD18NwzZ0OHTixcddIoHs2+zK28FrWlmDe314w0Zyqmon2MmpDZaqWVuHpMMps3wLZcrS3jTFAjA5qiRtjKZCvxFrlZc5XU1mMZuGoAKS+PHaNyQvEbkbNtoC4qxtAAuB5/pOayIwNxgoIi7+VHRUCQCa4Y308KVwyOvSqZ9RDC86Mtji6GavZUxA6fJ9/OQkfnfwp+i/J2V1c8EO+WGwpMeVxvWeWX104XqQkQe1CDgi/etLaEfDKoMC+bA4tAeqERCaGu40RBW7ZC3AXkY5m+epTEDXr/fkEquCYg1+IrgoUrEGSw2SnAn62WaQJ9IvaHN7JzCwq4V4XmAEwLPMWo1W4j/UcWJlENYpQ/4A1O//2be2HgtXXMinNF5fHc1HsiRyezmN5wCIHHyALCl32Qg/x4GSPZ3WmzXA6d+x2g96EwzmtjMOFQ9jN3UEARxlrP5H4JpzC6UEDR6NO0tAA2FRtfzEJH5uzmfaNHDYycKYifxNtPqFEka8mLzg7OUnKBOktA9o1l8EX+W7hUq5Y3n951FRYti93tPjJ7T/85m0RmiBScUP2zkQn8IPIldzt37/vDDvwCzHHwl2dkU6+PyjyiqQfvrO5eci66Hp8sSHNn54O84X0XyR0Co5PkwJG6Q8lYXpb2IzJCIBgMzo3hCO90uuCN9gMiZsxDEGRLAd+nZqPlyyI5Xxrun9uX9wh8yqN3wDknK8ufSrSg/4W+z2w2hQQEEyik79bfLRiRUzgHBzZtCiWmLHg3sVVwYVi8wawTbFT+jtfTnb1lACexlOAgJJvOSZwtFQuIn5zF2jDHyswmsNMyEYTbU4pFxNaEUBzMSzS94GPFQOHDY0OBJzwATOwc3iTPOfiBnF1aJLmAIzI4ABUSeFpj/4oNGhqH/QNQZV0A+asyxF9mgf4oFN9OtMsML2fScoSBPGV6AgnyYBOU2xksS+MNODLV7E+Q8RlgLR4+Gb3x7GNWfh1aAm1pFjWIXtqPBT9Yh4/9OtGh3tlv1H5Pg4LBhwS1ndVb1WPWb5FvVUK/6I93I4W+WXnXmXrWsV8EJpJYNHAmbeuBHhMuk1XWOlYtvhVecYWzON6ceK/GEP2ng/2NObzlGv6CWQtyQag0PVxNM/9DtbzRN0wFZ21Mwp31Vl8s91Y+fgRn3LptE/sjGQNaiGByuyXKvrYXT3WUuTMy9UbA03AVrw3Uwn3jUAH+Y1uUxcjJRY3KBxczh5fULSXIEmM5ov8AEYozQ/+bfbVroT4Xxh/oWz/PgxMH6KADu9++T+IL5rRjaE235J3GeYAhI8fw9y3YuhTJ6KZSzlu9GVb6+7L4EGYFpaaQKkbNo/UQ8T9pR97zWp3cgWpRcu9udmZo+kFG86OHLL175Jphh4fCD/+D1nqvf5gEkXVCmg/PDINP2GXFu4N7ClGbkrLhLkSBwBWolCTGicsHxPFGyxbJl2bkwVb6gFhajIDesQSmfqPQHcK9NC6tm/ADnOzGui/ZAgqUXm3M5ucWt/hRWn3ML3c/aHVy3xVx23efSjHRVhAd763LNF1YjpYkEYX35dSymjdyC86qXvHlzPTitThS9R77iJU0A3Q6BGd7AlrLgsshP5zsdA0UKdFUN3z9wyFaE+BluzPuN7xWbbymR6Z8FxhsSZTix4tMKRYtlEN2Cg+yxETsBuu/3dS5S4qcXjT4DsATXIbz3+IzxUQux2yLPsDgmj5PmOUsMQkYaVZ3GCPvxMGIEb47oLmGmi42Txu2IWffGHIt4tv/R4b7ysWGZJOnJxykaKQ4/aWxag2ZJVSSov42hxwK5HiqXiLIlsO0GLIwta2scsUsttnv4zKCBYS6FVHmM6UuY72NvWkLnHXWXSc+nBTwOuDsYu7qW5JtPcUTFlS0FUrZ2ALY4gIYAJKApaQSmGj8BNIwFGZYO6KV79pwame2xONGZecJyTQweAnYfjfGlloYlfhHZWEc2QY6Scw6Y/E3Jawr6ubaTH7Ibpq30cxPirDX6ZjLLhCimaZGPsjjC8CYr97vz85jK9grgUi2bM2SZlehRBO42IlmDA+DDtlkXYi+sndYKkfxeptmGCuxs2mfw0sk/ApuLkTLqnnL+jL033KK2N970inDuikN1X3E2X4ptd0mvSVRk8JkNHU/VqyU7k60ZTbbNjstxgUcpzLNptUjDriSubCe/z0gB1LvVqY2wrqu/twi/DJVhFc66jhWaolCr2TRFVwyUXJSRfYLGT8yO0ojEzcz7xmaGO2m4TWSnuHZPr6iRgUUvYTAV+hyrXU+T9PeGiC1xm4jVPo6/g5udg6H3JkuMTimV6Jdi9gbDyDcFq903LYIuKvLa7NQHbiP8+W0KQrF8maYfoajtvek0F2mDvgSjarG40n/0gcLP5CXU47NwEz3zTNEJhJSSYntQIk2np70Ut4U/58pjhMt5BYqeVnOHuFyX9Etr172ircnErTqi1Dl38e4/aPtP8RIBxGsHyebQd7HSWKozKzLfUsVaWss7oWhrQf+2NZ8wMmy8/ZNW+7x7BGV0Nc859xyOTm5UpuWmroj6i89cCA48wG3V0SfAIeMPNXMYqRCmUg5k6F+1ShuNkTGbXPm/5zm4tAqHL0B8GgWZxhFX4SU/usm08c1Ao9oKy2EyTAPSM1ZHy4SGUQDAjAzZMnxAsM0OoRVCErO2SnNxzZu0WqnCHox2n8OC4hnGxRz4guIy4oLF9thU26tfDn5/hItBQacxg7d3BljGZi2a66Cz+6zz7Sn87ufoF2f9bU6b9s2vwrYp7//+lZotfjhkZt4W8WKEMNykFRMgmJGiW0YeWJPKCXslpjFsrfQrcONotN6+1xy4MXIo6AnM2oXUHP0tVF293fJAdyE7EI1obdVjZWwlk8LkF9796b02nytZ9fMcdQObG58Q1Sa6EePigvfw/ZwVmTdyZlf6vQ1nhsuKlytNaXJOK9FRRDhqxcwUPCrkSA82+UlMKLBQLPFaT0dwBxLArwDGHA4RBz0c4orpnKF6z0aJeWTAWHfQbVPM8sriQl+cdrfuvUM74j1q1/P2zAG7LN7MexHYpc+6ppTvH9tCIW2Dr+JxtbZV/jlqh8yKxW30jCEe5LWwVRMyIn+WlD1aFP+8mzmrTK9EDyKTsEfceeOchVdZrqJohCwVIaxWYJPB58tkuYEDXVLjdUNvty0eP3Y4knRr3Jt1+EjBVBcqp0Y5J8r3b7j7s9LI+qu/cvcWw7u/dBBBDpfc0E/uiX+H2eNt0KMrtJp1H7txv3jFN2sVUYbmMCz8DM01f8zp99dU8t4+qiC+oqGAUV3X/aOEP69le5rfn5s5G7D8kqVZTqxM+VqOR3cyD/3UCKbQ8vqjSNN0E5XgRFgYSiwVnMviy01ePEvHYh6xS1VJyAg1KTAXgRYkFc5WtFlUvmxqcwbj3kUKNUjOqBUDFvdhlt+b0LfS78BGIa0ea89AV8FyJKSYhDv7i9kCAPKioVYcOW1o3CoDxUeo2I2gg8LGhTfmdZSCsx1VS1j1pn6r+qT0KszHmxwZM6ETSS25FNjm/greq39XtJkzoHD0rADl7Izm23WaT8VlYx8m3xsR7vb1c03Qz7Zz8L3AITsx00xnIje1TshB6QBIlUaxKVLwnkuXo0zSp9GVVYS9LkAHD759iEt4U54axMqPuePg80pB876omzqrgKBGktC/5i5MYmBa2pRWdYkJQIeNSRjLxnBP1GJQg7/Qvmlc/ur9cLJaWR+cA17IoPeFnE0Edx2eUE6br4BWNk01TnNqmpdIc0qaxWhOXdNKk9HVfA3BDb60Z4bbnoI2+78puCExWW+2jGGrLMY3xWwMkCQHpobByHDsHEyWTa7cJBP+DBQx8shk3x5Fhq2qsRyTRqN5hW3q+VPQcHTcOPKcrg8E826b+KWam7ydIO4f9odUWDYnpN06wzql+0mdFtY9LCoViIxojBwZ+Txjn8JmGkwjiqjqN7xBGati8sm6fRi0kY0PRk4vjxkZpxStPD6tQobrphfNFzjVbD2BfHluXWE0p3eZjyfWvv5Gt3tY+AUyzyajvFKOe3tkuAEVeHYrMmx3HeQflhfZ7UVA8rQUIOLHGR3DTZtDXg09QNqY/tbeoW5fBCKh4EqJ4FKurTTz+2FgjlQB5qtb9L3yC3x1vXiRbkriNtCgWlR8l8dNK6FNdXudfQU91nD4fLJergct5M2oXbZvFpvUp8b4cCuuWpf4gGBTm+zokshHqDo6k+I+YnS5W5SUrxbP7thrZACjWfkSlvxvNl3kEl0q52mkvyFWbGieeB7mbO7SMOTVaKF3F3Rbej0ObCwo0jxETzo6vuVuByU6foHiFO96ALKLZ+zvc27SDe9JsXj+WXtOSL62+2yRCBRlQ0zewIXfhXTB7bd1+ITlvOI32c54DzhiN3X5GP+p3f3o03GATk4B6m98DmdCmv5FpLQBXje1Bz8cPt47yjeIqHZijtpBHI5z0pQctjAFWLvBS/tFFF+VZSxP98XTZqswkSV/1RkcvqbLdiLpee224HXFbojP3zOsaDx+O21oPCEPnFGD2oWUwWvWw0fxRgjPjEnEY0MWv3hJM8TfiIB0o9XVQ61QGgd2C/JXLjuHDLZEKKLlHrKLq4GCx0g+VIMA4WE5FaklP25a2+0BdnGekfb7NPFJ+ZvCRwWKhzdaThBRK74/sH1fNuKOYYMJo6utlbinMwvSBCvDgWYI+JcTOMHUcnCIiRLuf3tpeHj02bT4SRQTbpTiIRom9hD2uAlT23ABLiy/DPDMOS0nnSujA7m4LnGjfqeqwy8GDptik1cbt2MVfu2aIE8OFcVHE5LUFsBFP0Q/wtFtdrjmQEMeuv3yOoCBVslSjOYKdzLiXmwQpKQPnX+WxKwztC4vPUecNwO+0ySgNq6voBS8Y+mYIF2R6k/wjKPrRX100I0T6sdN237PPXVfpWd7tGCaZyK7dvkdNmghOFr40agJUuhZFFNuymqJYkK4RnaB0pq+/7qQUea7rraCA4T/sLtXI5Vz8V5wc7ZR+JgEjECxdeezrCqoMQ4yCG/Lzg84nggVPaNZnBgYd7vDEWFIvJmbfhBrqdeDxTMdH+1R9VX8ocvR9v2TvsouYjCSWdRm0SGUb1+hAsXRApI5/lE4sYl269HXmQPsif4lGeqvrT0Tw3NpyL+rpR4jqTiu0w1JdDmSuDt361V96q6aGhGT2aVCFMXvip8eErgLqiio5g5mycdEEJJZNAKamlRgsEuuLisAH3yy1yXNlCLWlXvV6g8UgZxZNIjqmohmZyQFpG5E/CIUyFhF6GraLLRtf7i6xyWYiIN0d5NWyyE3ktbh1L6PShIL0dgkqtsROTEUcAI70nmiZB/f9EivsTwUBKspsEOWfn2EjnMpSvt40ihVNYSyHIlF+2AyAmZpH4VJWwagwLsWVGHbPiw7aZRTSLlOh2I9YQTKBU7O4TjrxrhzxtXHAqRbBWIyobtxMsyTW7aEoz5B/o0BrxE9guxthPju+p4DSqiODnQK468Ht6LNygqAQ0ct7NboO3gnPbRvXfd95zQEIZBI50jE/xhYu3KfLG6E8iDp8Qd8/PGyFWRKoCaOtCvjWijBsIc1+6Q7d37iwUGcH4UcsiGOYtc8h8gm6oB5dA+itMxZy87UIPaHyrC6AKYXIqkh7jeNIj2yhXv3+5VNZi1OcI5USbcVlHEAek+zFS0lESQTQ+k8cTCJUtSxQPMglV5NOiumdjCKsqETiXMPHVbNsDD8zhAlfpgrqdINyH1sn0p6aB2BF1lhEBLVk2Omw/4+MgadjImZDixDY79q94cYOgtY5KtcFDxomzyz3XFkMU4HWulPjZkfgCX2mJ3xcJtuKQAuqzPsrXotiDm7diMSDssLuxvE3FEYCHso+R45Rkac890hNh35Qk44EnrLcvJdkBATlUWXKcKSvQwPpe0Kb7zxSpbuS8L4xEs6P8GVlDDB8T8z7BjIkOkBUmHox4WqMkflQOvwALSAemO/QmCIPdmC8E4iz9xhs6Dc754rSYNWIpAVZbPVFaIvIdEbx6SPW3JoOBZTEwo3IhsEWpmQ5kMlijpov4p/cqJu4xJaVVJQ7IERmo/6Z1CLre1+HYxnoI2wosUL2o0LZ7riR6RH5j+A/gsDHZ38xKTMLQHTHfyTrTDEi2xCPecRJXI1FdJ4JUb+VA7yqWos2IbqzHPmpFjyeyTEowLavBztmqC1MJBDLMdenOdQx0Sc6Lfe6UqVN9QlIKUWDwDiUkfrQDuHqMFq4+apw/7on3XmvHZ1Ycu9eq8C4Ve17b9NgCBAonSslY94AzckF+HNWYz4LtEh6W+1FR2QVjBtU3wPC+H7p2O2mPE9C8QsfjslSz/ZrV9AGbOsPYgFTTcNUe6n8kuhFczdhWt2wXScWFsOPKrYUkxgPcDojQT3LDPefDve1+Mra6Ai9Ptun8/hKthQbm2XSboGzht+p6vp++PZY4hlCbB4KrXIhRN2f2Jh7oRE43tY3OmuZse/yOi7aIOtS34+iaMIA9o5MkvS0d7beKrtM/sRE9u/iIF41BkGpYfmBn5RNWvLt3AMlnN7ej9DrUaPx1VaJzVHuZHfoQsCbOUgs4A3CJpm7th0OamslMim00/IemtTYZ9LaLTvZwMdzmUslKSKnm5f1rs4mRVa/JZEURzKwURjC6Rg4gUcctJmxlIxm4Ku2xH0WcAuNU+9DkGIjsMOCCHEIdPI4XWgS6rvZx380K1KL+NyGNJeFDQfJCZnOdsmYnOfWQX1Uon6Qi+vsFT5UJL+6Ka+wd2EhG84fZeNvul/REpU24U21Z4Dd3I1iZGH78HCPoOn5G8XpB4XW+NJXekMFToVjoAQm06jpeS9LTTCT+YVU4TYaXX//HDz44fzwvn+eWPMDiW8y+y3KmglJuBSJbwPnoNEvAyDpSh1ODGmF4uhppyvCercTVIYHgOujT8/L4mDpN6OWF0WW8YwQpV0EQ5V8kWdMR7zzu8iNefCybqM5mbZg4xm2/OLBraNRbL8olZacFIpqq6/N6Gj6vmhkBl5UDIajaaqFlY8VqljEREjOF+L1hsdG8AC15WE9+hR9jFAMX2RqGR8AsnZtCxFMv6k0DPPVLxtXMXlf0DQQ5xZcDQxTOoSd/ZL1sUQyXp4hmnQQ2kBxB1F36iGKYyw++JJozMEHzewgcZxavy4VJ/O2YC/s092CPAX4I5Gy3KrEwJqcB8DkixBZXSJiDAFc4sqdG9Tmzblcp5gT82p8uZEmnMGB648peTIncRa9JQmkzmS0cNNScpQt2HnOkMzdXnqRpt5o0Den6Dnq0Yt5aEtZ2Ti9Tng2FYiwZBHtAlBOGp/0Pg8AsK4i2dDvkzAuor37QIFtoremjpVpE/1Bb2s+K6W0rZj2qkNQ9myJZkK9MWtEnKLYBYxYxgmRbYgurr0beUUGPSBaddGoHRMtQ0FeBvqo6WuNM/AKO+WZjat2SR2grICebUe79u1HnFKOv2ZOMMJkexBJYtKDwghYSpkdgM8a9SfoUcftntY0gZrPPzoLIRhHpikYAJHpxel7GhnYpnaNuRkdtrZycl/qUs4uxJIuNSsUxBkisHRpZcmFH9KYY5J/EDM2s+BmULvX4dcXr7eP+urQJa8R0c7nUcALp7Cx7Q8TCwrhyInRdQJWy9UUvuzSxS1En/h1sxDJm8wme5X/FjIeINIMdmBJryg/JnbTa1kDavGjYoY5Nt4PmbDDQ1ZyHCCGT2SZlh8Dk8q7VsacCLZcN/byr3GXCNCyMqzSOsY5lPoYHNL0uFGNVODK8onowsWaTN5RIFu1bNcKWSVpLqt/EPVkgI5GLYCrlfYIJ5Oh+yADonlGvbO2otGHfr8hCxWji94Al8jPsBnaQQ7Z9DDEgU8SOx1UgYy6JGikeoquECXvcExuS1yLuyGWWIk1u8sdcR25rdbOZJ9zqDMozCKBFxDFE62M5PjIgvaHDVOp9wv7rMu7dxWusBcOrB4vksVgKVJmnbrw9Y/9vi4vNVg+nuZTW7SyrObXyo38H5q8EJ2IDG4P6X0DG6VwPNWAaJDHKeHfKvMBnw6XMuC3Ad4M7HUfipx2LgGYIx8WONm7MlJTdciC081I5h4r0FipxzJ8VmkIUk4bAu9dNuAfTuA8ewdKXDBLY1wm8saYeRmdDWtZ3KBofV7PAjSCBmyMQ0KTsp+OxCMUbQ83RsR0RsUZKLc1db3ZiEUT/oetOHjP+rQY8wo9o5uEOcNTZQhyeVN3MQ/AwzfmxDnfc92cL7kS1i+9rrxhoNXl8+Z3d1WPEN+JINuHWcf2+dDS0tsI7U+jNk7SPAkNjLLW7QBEn63YUx/P7xMI2Op7ZgALkNtQPl4MjmN93fHkjkiHCF5hHLC1zDpAo7lDUOfvbCYzb5o6kuVaOBI0wto+p7Zj9PNxRC2oOBYpzV2mFoZun84U8MKeAxyRGOlmf3k4khosCJs/JZIcEjAAW6CcA8Eh29Ouf5g31iLL8fLhYA/sbUt6qmVnwvM738ZLRJlGbqp5T2iimtABsnIAC6tXEPdXs5FGDaDVjjywZkjbcHRB9LaIythIR3MgPQfDFyR1ySuwzP7icPhMH+xxLJCXL5b5RvZgfyNDVIzSNM/UPYTAcLEXyzyBdpOfkFyTFPUCdTUfjZxlC6tEk70FxUHWRDqGWXC37BclLIY2dLU8YPSm2onRRk20YUd6r2ZzDEmhAiP45vmTxznZ5GS3GapbJm+ticlQU/tZyzn/97o0hdSlGbCy5KIbuQ+CqKF04DTmrQwBwRBceWi7+AcGSgQaMSvLNSKT5rfVzFTaeXZ8UkugMPoykvIkoeVt7SiEW72/aLTzK18qOUz0Bxcep95kjbYPzhCJXglHvpXDgtqxUO6Yqp2MBQrF/+i8UDyPn1YV9uvPA0Ui4e4fNlJapvIdxnUoMnIXH7PzS0OBuHizfAfAgMbvGaU4GHFAPQfjw0OxmF/pVTUE8JKU9Oi1ffqSanafqVNNQylSxriDyf4h6DodAH38QRb9fkwVxtDc+WGm+4FjOmaXD9xxyAFjNVrdcLSiyME12Dof0dqTB46kakd8x/j802xszefa4FWRgmumizF1IibLs0cyIHXxne+w+p4aw6poad4pi81la+3naSE8mtllzet6fJrTFX4fzH8/uGntqoBrXEnHFH1MUkTHikrPStRAl6C4CqJm/6cMrAstx0vFUAHSjCItyDXAl+5iC0RSG3tv0DX5LDKGllEBiTBiHxDB8G1J6xhTC6E+z08dQg76/qt7vu9Wq2gE2hBhBsxIcuDp1uCoVUz0t4wpmeVGIqWnwmCQzaiw4JhjdgrhnTECNVor4RhM19V6HW0cFCqZnAEofHCzQKt4JsBb+yr8BSPEG0QwLWpsqIGuWDWUZSkGGMuZiApgynd8boaDYolChAurClWoH1CzValJeZqoZTz6yuet21lnhRIRy40XtNb3CGTsw+jZcQ/3hZDjpJarsvEMZSPBuEP9vG7RBJ1SecD/nzMcjx8VhRFLq4hqf6WiDZjRSQ0EoOgTZR+lZqCMAfhVeAJ1duXmMzlHcKAOnBh2x7HVdGTMTEvDqaXYoC93fVU41DqUqpeGE+2c2yoRm3C56U+WnKaDaxiq6S2AWwOC9GPGF0qxQzNSHYLCWTASAEB33Ef5rY9wpqp6oWMsENCG5To+y6GHDwoWf3IRm6AgWfxB2l7nj/O5p1BKLe3kwG0i+8jiAHqU5keal+fcgkxs48r9X67NBjk58Ksj6STOnkaIYMwTkRK9w3eae3hTEIIsAZIi3KuH59A5PqlRnYO+a1cuSdUC7voshGfKl77RSqu7+kfX7mqWsvA/PX2z3JRGMbognUPzZPak9TtV2xjKMGwUcZIT/hY9tzWNpo+tE7IL3Qd2T6s9J9vQRmLHePR86PHqD0T2ox/hzUhMqUO3FubecRMe3F/poGeInpPRUQshEiQN61C++UNMmZxLRwL0V3+KDfAsJC9nE97LSLJMaX1Bm4AeZqN5REDmMmBinpcIEBrskexv9PRUxIyWaEDZMlrYFYvxV+XdvTssmd04yq10gSThU5k/ymfwKk7hESyLL7eR2dtqUf5KzEkTFF3LB4Qk9Tvy6NXMYCEGAFoboaC7gcv8tpH3t6gsfIYJDdzv7x8quwWwJdf3lRgKDpvElwyLoNTrl7uR611FOS88CwIlgmr/Mr6ZvNBZHpBowDvBv84LO/P2qU0RENrlyokaK535uVdqkPqiR+11TsxhzEGk4iApT2J4U36rhID96H/D0x77fblzNroqo22i2zOsOB5t8GNJ0F1y9NMotoiaVZrgWFYf+/sWXCMMAWPi0e0l8xwfC7CL9m8CVigNDbBgUmVvlrhmJWYHtjBKZcLVBCwUJ2y8tFsnwqcSxyIGuxEB5pAOIAU4ypsoEGsfyYOuw1ZuN18u2RPBSWGdF9MN3P6WxxWYhXRPhhMLnD3oCIe1dcC09cl018Ko/+M/Z6oXSRHMjhqP74Xl8U7nwOHQMupiE07qEbc6BASvVvq4RzyN53iVaLEjTkYG3drgXLWKBIi/ZaBaZjvKd9cd914JN9oL8e24QTSig6+B6xeu65qG5HL6ujPPZBm4LfYqIEQmhswvxAQ2KnPrW6FIKzlOoDrfgwxjYxLqZ94dsrjLTEU2xjvnxrlqghyLDiquwwExOFU3YgfBqS3VBLJC+/uxGU32iuUHMOEnOqtrOg2Qbpr1dW/flsY0b3c9NDc3Q2mEfY16hHH1RvjdpGqI1RrLERo58ifvz3WRxvy9/zzTQ//x6ZYBJufFQSbqPLKYq/ZdZJtdBgq3JaGE6ogJl03XcjRov/nghNwuVTbaA9+hUfI5mR3L5vndGjfWxQUXQAITgtLuLWbEYY6FBMH3/WUWzrUeuxr9VoA/6fVkU1ewaq+3uoUn9SZmt5BpiBfleTPOpnik5jehm1w22053B87Tims3gyO2oxTTW3c1dzwGZpX8ftGlHnX4Ip4GAJ9MGFranAFOI3HCXpz5TmOhO/1Fn8vPauOOnijqCLB1NE4dS84dnOcWiv3jja11phKxPz5F8zFNtPshwmua2QUCEBOyZAoxkvIsp7tyRKrKGjChDZUccO6X13hfl6LtSxmtlTFrGtFTmQOFP/3wKadEelg76dQb1e47Yy7/ZpQwQeiRaDt+qJlffCR9KAIfhC9WAQ/OvV4FPwkemNe+1n0qAt+IT0YBL+69GgTbP3tBjqovfj2aslrLGrO2tImy8k0OFM0DhS1y+uXt7qIKLjKxejkFmpuPdtns/h3quPEVvTBjd0Jio/aIl5INLw4r30BDGUl9Ou1Tyb5i4gzpaOzOMUk5WnvVEtFzXdsqyHGjmtw/zWoqGlfRbh+0Q4ZDvyhkJcYBlxgtYSsnZuy5h0QAULMcAvKNS3k7NyoaQMA5SRK69PKtyImMga/VzE2SZgbnGA1zwqo4EhiPuTSS0+dLZN3GZnSMOYnYKuIL68oDdPALz8ACpLAnoXHVcoUhCREKfBYupshyvl+6a3IGhYUWU2B+I9qIcVyCVcGthfFCdBOE8an8A5l+GwIYznse/vWGWyyGW9qt9DMsQYR+thYtBjlLhByAt8reut7tXSqMIik5i3FLiVHQNTsdGK/c9pcuE5LwZtLnPkh5R1V8tWWpQJj/CkqKsogOgeYYs56u+vhN+6LG+Gs3dtj2PS/pij2nFWQHMRTalOWz9bVut2uY6vMLng+BzXluXC3KU7Vx43/Qbk+0y5lcD/uheQovpAHJcatrnmxeLdDSHX7E/pqS80mCRAeVK8wuJ1+Qrkjdr2npzrdVVr6g/yoqEYWG5UTBaWqIpkpCtKHFAwCd6vmP6FFRbWDcchKguohPJkkhOoJ2xRgQeGBXySd26WBgW+FqhmSARmAXDGk/qGSTXEHkxnVYu5/2BgDPs67ubdYxtDOmoylPbiDGLbJPnSqRQyNYrJK7/6oftYP1VyQ0icbfWT2r/H56ZD9h179ZWU1CDHAXnb3kVnzZ5a/3c7DzTln1wM4fXEFsjNIDJ/sbEPokCfQuakXDB4Uh5lTMrojLPYcHxm0xeQctkzLpMMwpfDoJud3zeQwrw7Mo3JyIDWJFBvDGi5H37H2Tr0HftGZUYih9qFEzABRrORIXsCbdF8eshRySOLLYxUWcI/1w0R+jyBHFUi9BFKlP3pPkCoBDokp+Io09g1+UMntzJGrit1FL6J3hAhs/rzjzx3KGI0mKmp8NC3FtJ+O02KSn/aKY1QGmL3QBsfPczndCp5OPZnq7vwW90/wRAovdfRFrbjWEBXBI5VWwGgioaMvCoXa2h+KhYOVdAXgUIT4r9OYMKRESaWTEFLC+cCML2I1DuALA2ve5oFofIehpv0FVhIXk6qT99ajkUU34zTBJqkmMrIzHJyGOYVzQ9WM3FG99YqwU51ZDRFzPn/udd8YyiplGbAimlvzFOilUcucRvotnOoSlP+wzN3fGZ35OVyjHf06PU0pdFM+a52X5P9UI3AfUoKqvtqXTjjMDRWQoFkLCruwABrvuz70c/CqBSUMML6It86R8eDAuQp9xAzT0NTW3p0OHW17z9AVxfsI0QGDQbeKctg+m4479n6Apfp3J9NzsgsoB458dhDQxjgUXQjwe1OY4YqXYYD5maFAu7THbaPmd1vfcYfpOtS2e56ZOmbbZi9sI28KujfPmFdrBMCcY/1zqdbjFwVuTVWgxZZJt/WOQyju5eSa1tVr+/0q73AHfhdGJi+s5O1D95J1uZgZRd/NAtwejn5v4+YJnaIWBUykvd7kBg+f80QC26zYSF72Xx6JgeaomSQG8HzlKswfrZvbd4qmEKV+oUiotB3twIFEeBUKRY3z15Zex3BV8XBgLrD/gsQKuJL/9rVmWgSMfaDnJRB3rooEFFZ6I3vfxf8NmY6Ba+0NZwNvll0PzL08U9fs3KtCEXbi5MRJiFwTyw1fYwt6afg+y6Qs48nXerzfiNSIe2005Rr4NNr7jkuW46SKbYFRnAN/gIqC101SClkXLtgj3P3kqzADHgnDLoOCAmBB+dt7muGnbtCzZ70esX8DTjXKWhkyr9/uh2VqzGAf1f7LRZEr+A3IH6Xh/zTapxB+mMA//CT1qB+TNjdGrfHx3lekjN6Sxof+7dyn6uYb6VAg2uYQUqwDTz5E1c8JMUcXl0GTmQpotXFwSdhS8v9GenbbIP0y1dZCTO3EZd9xK2c6je44GFWwT7Y/1ESE2TwWb3XJCx3TXSSOWEZEr7W8pRGBMxR89HHgIy6D8Runr1y2Ty4/y5odVUk09K/64rDU/w//kIpbqx7x6WyWVZcvK1acFq9gK/cx8ncUrzr027B29g+XKpDhMPpA0nR43xv27T9DBelCGmQfMrcogz//Yp9An/616kJ9PKQcHAUhOYWkZsVTMuxAQ2A8MFUFqrUjSg4TFxA8BnS5aDZmEAr6zLU04GiOqWKHqiq4TumZg74+qQxd/8I0BWQr6NvE3DCXMTmnrXHqLlDmU73pBPCAmrqjQ6cepMJWMyeNJ+c5zqAibN9z0qrP6/Gdg56Htkcvpe7aqTLFoJwAtDsE7AOHjiUk5nOKY0ijnb3CR9/Lk1g0CUaRIaZ5q4NM+Y9Q2cE7ljFJUQ1m9Fz+cHju5aRR8UKK2TJQ6WgDH7ouOM8pU5TEd+A2hHtvtOkum/Rw/dFpN0BFQ7FM83wmgiQ0iDdoRzNqD2mrlA/P1+KqLYTaD15B2Q+jmv1Lue8Knv+RoG3urqKV4qFyqwaxSINNcHFLQFrwY2Ob30Fh9Q9U//ELy6qzpmw7dK7vbHMnvQg2EYcySJ52Njkj0XD5IszqHH+vka5wUJcDaiJuTyNj04tbtKLpkuEmJzA/2V321kV+svyty1vNFSE/VBKT2/Q4P3jrbSnucWHltlLiuX21w+MSDOYnqxwTcevY843YgD+trdB2g8vmL2ESEwHkNfR2Gch5aTTMZPpMucr/pvivs5gcOF3fPFGJNq6iyH7by5MAlUz1HUctmPZjoKjBaVIQl4xbw7BpO37+YK5bCjy+fdOBSYOM8PNUL2BCg7SIwx0NdSDkvWew+mZTKWLoHOYKB2923Jt/r00E6F6dGbs3S6OHoQPDR1ReXrElG2ZRqK3+H7k2LEBIGwFCBt5QDemKThycmHIPyBgJkD2Bjg/0b7hVxJFbIBJ+EtqiMtKUPl6QHzuIJj2N9Z09DWPfaYMFEkWk+U+oBqVjNBOt1ig7BCmDHxe8FgOqhXDU5se/UHN++VgZYt1wiRcqQIEICkD85YJoJ2heczgusNH+TcrX2yuHZh1KptbZ4HnQWVMb5p8bEYgf9ImOVsfRCQDf6bygGsR4qhxiIu/pstrK9z7BSKeNuSR9xJnkzgcUQWh+OKl8w9Ghsrvm6Mh+L9D6nxU2xOqTVzO/pbaa0VRWYTk23bWxOrDf50beiQum8Pi5BVPDKWi/KRzApwyG4ZFWHah7CNECalOkejPrKpxJWWSztuBtt2XuxhAQe/4xZ4Ft2RN0YC9IP+wBp2YTwun4IHGKvie2J3A+hSKiu5bbV/ZKpJCpBT+1NFuUTZ6ALRI7+9RZFH1YS+N7TX+YSmt+KxU8sjWD2HTctpFOeJMx4enp0Se4lXRZ4s36lWTNhxDietteEAI8eY/c/9I5jKHpVISfwAqk3tAHEeK6IeoLYNMoROJ6jF86N9yUUw6MGj37DyKmqTATgLDHUWBClYLzsfD2TWb06eoHp52Nxi2wmCxshIYIrpMqsh5GqdfgQEcO2rPCpdcYAe6OArAUV/Ns99RgLy/Pm/qJqZNXn1JzpyqAFpCNap2kAQm51Akwf4r+IwQ49jxnShOaQsS7lYiI3DR/NdQ70g56UuOCREN+/y7lA+ITsfnnkXgiRjcuiafqeMhk55bfBra/yoLefUgvMobOOHv7Am6P4AK3hDTFW3GxthSvQLHcoM0EZ14mmojI/IMHqxc9FVD+o14GEAAopZ1lmVW9ow5j6Khzc2eh8IPQCbIDxXrhjx9yKUXOjGsU7M3OjBH4bfEqUrYldKJhJ9/JBLatwLf0nuju8TX/JBHYH/kVE0L5sA3UoAJkZDX7RwgfmqiWpJD0sY2h+lt3asOGx5O/QOyL3VqSDxIQDkQvB5yoyF4V9Lt1Ul4YJw+zET35xp5RQK+PofRKsvLPUpzGxyj+F5ozcguKLCp+qHN1djd5Co0drD97fzArDuTXqwsaqUmc33hIJg7wgExq67khoIutB0k6yg7o5hIwm8ugDKi07DlaeIXrjBRwTmoNcRW3an4pdxaQzfLA/pw3Acw+kvmVh9AMd9E7aBRip1dSyf3t1UBs9+M7voTWC2Lm49UFoagIekLmfMx1a9qbH+gXuoBmq+LINcKeGq13rjR8F5HG8Ll+HUd14DM4canu8DVU+KcKy0k6Y4yLXO5MqLigc/wddaMeJiW/ic1rUu9gUsoXOdBH94pevjqu0b1UzlzM9HNfJ0rM3cPL6m4LE86Z33AdxBQrov1jY6yRiBN0jAU21vBqrna/qwTzu0Tup43i8dyUMqoqlgXNLhTcHZJyWuMVAieyOtcFZ+d8YkMGDYX17hPCMlD2y5dnXQXMCIwnT1A7AqyvgnWKDKOfHQg64cdoKnxFg9Vh570sbpdbauVjATYPIXIfS0WXAc1vng1M0pVG/At7MLEf2K4DrnLxI01ZbVFvUX+vGA194ikffttt38sVpBb6YCsL3RgYM6DKJi/mfNr0JZ1SoItG7+Nvhtnpizs9LkvxkwWLnvpVFSp6C7xO80HM6K3zPnegk5W1ERXmg+jPSavJeRquQ3cdyKdSw3Rort0ErI+6o60Lsu9dAGHUQgfQP6v8axFXy65QL5QwFcfKSuBZKOfcJYyzajAWyXW8Uq3N3oZyKpF3Cl4HwNGYJW9X1kdOlTV0jsp6rpOFA3DTe5VuXiEwPlT0eBRfU1FeC9V3oRj+8RwBn44TwldRFjWJQp4hnAjEofrmMzf6zEqhb5MAEDeDo6xcl7PMhb1E+yoeznNcMdJqBR/gSvoAQXKNdEhnIgBF9fpWpxtIUGmv0hXIugEW51lpGLzJRdsWTp8g0W6RTAWRcB1dzVGQWByi7YbBMNBzyrVjPuj3eVtE4ax6Bmr0vZmbDlSkgG8XbksQgoWtJbDYGhYTHLOtdb44X2J72VEVMKSRi+2M57SNanM0gWN2SN0dLfJ57PoZiLb6zzFUInZsAchApqtk1Dm0sHEUbuscm3Ay7mEpQpNhvLgzGbRDWIrh/g7nDRHrUpWaKhc1XhHcTtOOFqG14yrsFF4iVDSOt2n+SkCo+QT2ViNo4Y+wzSl3ssBsA+2j7IhKOTR4LEAm1qArHnXoDHEGW+RNRFMAYNVg4y2MYxMtiGBd0bjMokKIQtu0gLHErEL2ySm8IHeGmSJrvmsznngKXABkUYM+gqp3OLWPh8Z/HOCqNzdeLzoDZPkQA5bbJz7Dt3qijmakv9U4cPgDRRe+KZMHiJuwJQWX3jcvss8TrasOt6T6bA1S6ptgJQq9NpdVQLmk9KPulHFy+20NvvL1fSORPlJBr/tKI5geKushVnGxZnqYEcWZZjdmyItn4/NkA4WrXmeAI5b8lDw+EVQppej3Eb+ErAXN2viAjXYYtzUDtkYL617Nf40vg6RpFLHiHw72zv7HISTfyXeGJTnJ+5tAehnL1jEnNLcUo2yL1P7W81IqlR82o9c9NuDNW86FiJghZqJHIfDqih6V76/pNfgajmF8tsrWwOEG2tfJwXKtr83VTZGvW/eu/MwGeETrXAibRSSIzUuNDBEgClzSmTslCMRckNi7Qo3p7yBKPnfwL/fqISAf+U7rpfCod8BBGxhIi3SJR753hpMPfQL9XZCc3uAqQGvt0TJrFmxYqBLRo3qIzgJe2RHEOBMvYKHy+4FN1kpBTSWEBqk/Py4UXpkIMch5mJQhQcwhJtkrEzHuDoEDwlx7uiPkv/wFfE8CtPu6tuHOZ5tFIG4w0gsKIBKfhOxfzLd5bjD3x1P6mEaj5ve+Uft3RYGkb9CB4QXSUBvli8jBIrN+WarerU0Kr7Z1eb1yswLIyDJrmVJVMTbPaJ8+/J8EXcb4DwBHobgKQy8z+ArIzSL7GpagknzB6hdL+0Tz8VLoxkw+czDTTZy0RBZls3ZuicHX5mxpSjs6sSyLdiYt1KKdifO3qK7kpVN0m3uJF6VxfkWrvPiLHpY8J4zu1DNLzB793ZLU8zmXFD69C4s0bbo0juDVLN/wtb1xmZtT2lZcvJacOKRnblEVtZv1uKshUiwX/6CuQrMX06aJ23xSNqd8zdu2RrUFideczknC5rSVlbM9Bjavy7cLdgjEKiA2aXEsxFVh9jvJvOd99cQz6fnXCPOsC1vruNaJPxsEi9sH0ItOMgXvpM1E7eDiHq7oDJu1LqpIp9P2mmIqMae0Q00Z1U2atnPq93xDMnpIIsai/JI67nZ/pvYdxm7s3+8drFEXbmmpsf8E0aYdElcwQNwarUAXLNhk1EBO0pWfuWoExbUNNLClStDZiRwV45CebHjU8AUvE0UhR6nlBHsUmWD0QHOQQyBatg6fjIhsAROUTtT9aLrY5W/BxYXP9vA2fgGHnXoXK6bb18TWrdwN+yDp17WgtWIQso6oLEMdyqHmb/p9Wb7yz9SOTWMykZxfkaTv14X7+eAsiTNfb0KI9e4Hwevgi+mxz4mamxsq+8kSlO39a2ogVXmeBlZAk5FAaUERHPCvHPDm0PEfifYD+znGFpkbytZ+7t9mJ/AcUtg35+iqT5jLBpbYAJur88CFGaKVWGiA4as+7161ZG18dTFgC/zuCux3SJV8bBfPjVptO8B+kXle7jgbVo8tS2njSfpaV7DqYCc5vAwYSJT0hroLDRqJ9wSagvfGNqBRZnLtyOE6JXqQ+129WuwOCqEKiCuJfWiFeN1BgFLBZVd4BXHreSc8+VwazaV0H/XFOqzeIzdpYC1/pL71QcC4a2NaY4qC0ik4m5dmVjfGUfRNNYPavC+XTDJxrLQ5PmNsE5uTfLIFrwnXPRAIIIKQG+RYGE0Xog+tFoR95Ix0vptSAbG7KECieh47kM9he8QdNB5BCY17mKOC3K/1RzGcF5JopS6Bif25BcL3Yykx0OFD1PhwvfPNABuvrorSMbo4NaRt+qqKm744F7PX4z4HKJvjNNoYZxCR9jlppVMzFFXDU3t1nFITpAWWQloith6bj4UWmPrhulfZZKj3BB7ZkR2p6rOebtJAwiximrcqH7ouwC+7UBi4AjDlVseFL2NHnqkpGuan1IC0hNeYipcAy9il1v183BXs3DD4AcX0r2JcX38yBzYNZb7VzrmFg0fawMOwPSiwBpGPFT3VOuA/B/iR0HljMXeqOZJZ9CqfZA3OG36ZtuAyhc0Fvl1G+8vAtv0Rlaho6o4YncG4uJTD6lzs72c3hfUyJbxM2bsOs0RnOaPcVBs7sy6FeqUZQBWvsb1ht/gdIjkAB647uyakoV0dqd2nGedQ6HgiJ5EE1V6XR/165PPaX0hJl6R7fiSpRzH0lFPNVZPhvmGSh2D6gDS/UC7UdwT3Xo82Qdc3na0TbBUfwT+8NGJlJR6giCeJISgfmda+Z/4xTtESeL7cpy5mTbU2WzVbop3+IHzNLp+TyXWYYCUQIUJS77SMpQwgLi145LpHdH5GqoDrsVW3kvo9m0Ur2IobNS2Y+KvOgR2fZ32Bh2FFZc5OBmEFoSqYzdwVFuiO2Y4v6JxdBm0Gez2eBfVYrjRNrK9szto4xcabff5Ek+dqHWTqG3G42Bx3JIzgzFKvGqfTN5Z3rqaRQTarlyu4/02lDYFPXL8pFG0pj9ZV5MQLGQLsr7oxVALgGi4ihMg9Oa+FQQ7EgLUIF3oPV2pBFzsIVW7efF9ntngJBp1AJpflfNbnHls9iQ91SFbeGlHKErIQI3i1O0LOYQPJKm75YA0oLPOX/1DIk8Wjj+AQXBEky2+AMZkbymYr6o1bg8R7DJ9h2Fu84fzU3Kg07kDMQs41X4URlxx9LZuOxNzigXzvIHAcWimeSKjKfVEc1hpGJ2tYH29FVwuhoIbDOch05mHmz54n5yZe+aRuFL/D+7olLSRJGcQHIltoJDpo17Kl0JAwo0aXZduacWbkXbgzPR/Kajdh2QiPJHyFx4Ge36GgoyAAPU1L8HMHmlYGZpoiCZpvsoMRKUmRape81sn+j/IdTp7i9tiQ+qLpcYItLKSG7KsQb/BmCexn6OVirIBlTvHW/hO0TP05d8YKZ5ipfYfCwVOqkUxR9Z9aW+jvn75q1nQuVKgy5Cw2v0uUl8fR3J99xo0BOn8xDB4xe2YmMGV4TGkInlmDOhV9HE0z/DMmXFsuxHm85/69oohhbGaAwiKFzuPeWBvE1E6DiorgE5dsa3+KGNBdgyUsg5Sa4ZJCiZMidQ/ept1lQ00RZsW1WniJRYhDwy/yS6yQN+KC8vpuIzzhyru04KmEyFIqA6A7AnDYgFuEmeuNLCBlRvBYhGU6NfhIiHjcQA9AxAgI3FPA2VAxABeiqoRiKzhFWDi9g6+xhOz3RzNno3mRpwFqR1sgq/ZoJvNjlUNKORwaPjmKMEa0N1O4j5uVW7/Q6wliSieQt8A3fofe0OWykocWl1sk4fcfZzFc39cYdWd9YAkm5SQBJJUIxzGw4+XNXbxLLxdqeBobObRyPklP9RETYyI6JMr3lDVAZZGN7PX4d9rudCZCxXrnQsNiOXyi05yNnqScOsYLITbPdqpCK8uS7zg+fEya5sbHPLx0e+0poa+4a9Z+K+5idYqzFWL/lR5u8jz15HT7oVZmuO2Ci0crQKPESBqBBnX8QFXyCjUOkZkUrBJHKxS36KPpESyABg5Rg4ccA6imp7jGp24ih00NpmCgJ2/wy0lw+wL9N5223rYgk9i5bEz7Ye8MbrpjMmcfONCQK3HTbwU0BKa3iAkJT5esWJQWibyxFKpay6XO7VxR0BuuWTXrQix6xp17Pgx7gavz/CQKFMoGmAHSNn15/Ur4eHg8UXymxACP0KB/dAAG9wvoGOPB66Hp9b0H8UvqnQ81GuZRs9g4NSar0Hp4uudM7x/9pDp8BjKHxDr50AmhYlyqRciEZdGV8OSCX5lPXsKsGAUVlXg3fQuo6ih61AMK9cgi58CusI+khxN5IwC8qtjQQyssuTudN1Llhw0HRAnwhQHIITkbUo/gIopEIXSMM3xkOfEgWWdCQDAzUGK/BvXmqT51cmATnJMEmdUsx94aBnUgJgFntAd++St5MdCpSZkGEtifRwFn1DBKuKEW1h3lmRi8jDJ14Y4orAUMt73O/z0EYCfM4HMWyh99w9taGPvzO9LFN7SF2j+XKC6tNlDp2zrTHxDyqbA6Q7ERMzWxP2i2HcU4e5YWOFbXp4EbSZoMPr9kXe6etDw6xwySniAB0y35C/cA2IwwxSRpuZGe0+HPUtqDChSj1VI+bMdzeTA6eFkcI5aAf3/nSlIyHTGw+SqINS3teR0K8t3p+ZHi+cek4PNEaOYTVfOiucU/m0Oczee28lxit5CxqhqIn7orgm3hy5xS3CWq+e4tIguSKhkYFHzYnb5G3buPUvfAmtAJzwUS3PaRJUrc0P2jZgSs4liWtZCKE5L8ial0stcEVvm4UQ2F6iJBUwkKJ7jctLkQ4yFil3DhZPCIEeSEhzH3sCmRR+cepD5Scu5iC05SAKH6n8luJDmuP+It0I45Eo1v/Js93QAnPkdjY/a8Vh/8UrfOkfyIdom2pMXhYNZ9Iv5zCLEgNPh81bDw7EjMkuJeeiJDT9pXu2pWgTyr2p4KLMA43p7Bq76hVc4YYRaflGXJd/9RB9hJT7pkzLLy7ynWoGqTYNtVb7ScZjSRcBuRAX4KYccKgE5EUWumg8/LxRErFYIrzrFFxS7OMyD4GV1Tlk96t9pesToZqsbsns8h9FKiDO+G5fse12nGyLqqBMcDZf7ThSe7Tk9zGlCUQO6VbkCCdBR3+Fvtj3MVDrR/PZ/7xO6b3scZ5LF2j4YK8AvnHyJ0adSQIwC6f0Pg+EVwQhegHwbmH9vdlQ2CBAJVhEsZuCeRM3soCuBS4GLGEdF0I0qf+AAEBP3O7xXH0uaLyPCy4y3j3QeuYrLxYSBZLoI7brDIi8IA3vWHV/fWtS8/ryxq+5Mo/nXEYaQARhkCyAIsAIABUT1fgh589PqHMuGIX49j1zy24MYEccqcPZLpehyJj5lqPvaF9x7NUrSRxmNo/4nn/RsDR0l2P3qMZ5vMWBAXHxqM8LqEK2oJYYtg/OVU1jeIGJVzjUpUIYsPeV1SyoCENcxGDa8tR+Dlq9SGDQw/GkK2D42kVx6SbB79jMkfpNW1SuS5v5QH+fofC8atOTfsoq28X/iPdslR/0+fQViLGGqArZT+W7b8Efxr7RNBmT3tHshcwuHKBRIYnBMnDIG4ozFkfly4DkP8ws53F9wXmhJCu9kouO6svqe0w4PTRu58lQ87KRTc4JrwnlUSEEnK7ONWRc7lv/QMvORqgWfK/Zx1OWWaAQ0QpB6rIOmFhRf/PkEjrdrjBlyWYK7IX2cvXmFkzImo1WRv5ZUAAkh0j9Khv92Vm/Q8QdDIVgPS5LcUbTJ2l6Nh0QZxfWbN16WctRc1soxYSnmoKnmfUEH4EaeG8/cafTJ1I4Ct0JZgn113KgJomkrN8t+ugzhhl9K/3HCpPK2zinW8XE2TCPe5vTOGXo6amGb6bYsMrJNLM+fyIdtTX1HR4716E+OC31D1Vz2Yz+3kEGmOMRV64OpSCuiBnDqGQ8rNIcx+pDvIgpm3eabOYZgMI581fQAzDppv5GHMiJc61MOXcsxJaE8P9PYoI7eUtl4HIE3qZGyZ8S/TiEm6hxzJivU5gHHyosEDgQv3p2gN3IaEmoGty80kBziX5619mkqh1PrR6sA4/4Tz1mVApIknkxTjOoKAIiugAZ1GPSCx0mD8DXUPBp2khjBBv22QPF7A3J+2DqRod2DVPvT+AAOkJX6+wQldfRVqkRgji9B/LH66VsvTuzqyD4YBRbeGwKHzQGw/+iTOMG2yopqMqLA4uAa723hn9/5JbV5hKHmtco/b8QJXUQImudu9GiN/6LOYo5CBEcmUhc63hn8+sOgWcsA7FXmTFSj6Q3X4mLjRtlGclTYduj4XBv2T3rFyr6W0mlZBxaTXDQQEohaUkUYcUKk0M4saD8Fko9WBXA0fG6mMjt223CWKeagJjiEFSf6Kx+bPdbX3o7uK2jTIrsPsY8ZpjVjIoOX6ngosRb2oPeCAiD7+KpvWVjWhmrrrXCOKb2y0l4V2hpdvq5dv7/ACVd9BgsvHfNowkq6LvyEZ2Sa2Z8n9+Sw8ajAZzaNvZeyf62TaAqiwJ+pMSvjAbggTYjg+PexKY4eoySweZx9jc53bKlL8nTKj0Y4I3W+7Hnw1WgwnO+cJLRp0AQVf6RouXgxWCUHWkKZ1RjKuqBeRd/tusGEzepQmcIn6Ca05dqXzowN9FTd8S2sgf2rDm/nG1OrZsqLSNepdubsp/+NkQTLewXnKxz4IdOTAoIFDazI3OYwQjWzUMGa4Vy9y4uFCC34WMxRQfGNCinFjF3aH6lLabedml0BZAodhMRMsMyrLOpYtIMYxeS41LR5gRqAWRL19Dcv8g5OTyfgQVa6hkinyAb3dhbM0bJpEx0KRssFmS7qEaaSZS0YKuia3MW7R+eKDRkLPLM0BuKPswJQgTe6CZu/bVv2QSx1d/f4VB6tCy5RPW3NZfv6vdbhVv9iPqB9BWmefVq0zJtNgzrNjXYBOhCj5AnvuVi0OvWMKzLIt8E0GMZH1Lhf5IIQBNFdlyBsiTANBWYGrBsGm4F4l5UyRnPlk9E3F1AlWdwuyzF3C1jDGLIMuL9FwPb8WntoR4mzqyCO4ihAlum8qhWS/87LEYaLRYkhgHwbSjjfqZRUCWqUdjBxYXeHXRLqjbE/3G34qFW89gD6XLeeCFilfEGHzWejZXOtT2EgAhxx0Kw4F+xni7iXiUdzDVTaYxqtR2Q/5A7QWgkqp7DE8AlB6xsR8kAgSOVURL5dHSwNBc6g5VLBp/+5iPDvclzmsxIDZU8efSv2pe/QMZYTROES7lDOdjjIPz66TW2dvOVfxE5WE3lWsS3U6UypHrdpX89liJb+v41AI3fLt+ys4aP7dfcQvXtHTfZ/XCTVvB1arZdAdO3zV6+vvqnx/8230VFj5b4gQ/+dZUHD0/SehYeB1/doqdZ0sPCKhEvifVYX8VLVxOz5HAH6CAGhBtcqJhkeiFb0fSp2LgY46l0zDAD88EUihgGSiC84Yc8tDBADusLoFk7g0dpSxcFHAXl0pSMPn8afxD0TOdBo/JqbeD8Ne6fM44YbF2PS0wy1wOcSUXlC8Seqx1C1ykVhQEw0+FajP9nrxMXFhJwXz2IZG2XLGkTmf+Ll2WIO8hiY7pXJDlVji8bVINrsaQoqLgkv4RFmR3Dpn8seDmWzMeGonHfa1ocMm5GDfhROsxhK9CuqCU34UD6Fu5RKdj4wqLtUT+xEYj0mVw8vQGVChpTYHd13NCxoHFf6WaweIYTpNAgabIOL/lsYelUDC+yDbaty+3I58YYeGTj08yGx/sJ395mM5CQZ5IJNzZCvklYu6Uc4dwYrhbYjry1+4lhFRFCMAPQXIpymtx3DH6wtj5pebZ/Jt+5yMi9WWa/IrHbFVwMs/pLCPHrNn8g9cZo+OqHXF4n16D8OzhlAuBAUR00Gtgw7cznKQ7+qWu/R+7IUuCJ3ZdWQqIiIMb2u+Zd9nB/SDTW1Y4KyiPiFqqje/2JwoMD5ymnP8frnCf9UN71ZSdY63/s5C/4iohhSUsZ2Q78zdYlBtnS/rQ67ROeqVIOi8UgrCzb3eEMazMagDp2aEmfob45XtPny/UE0Zz8PrAuuZwE3tYqaiV2U7pCQ1wHc4pXjswhrH4ZZqQ5smVcdOtmk64IBsfblwGF2eapLkfGEL6qjkXxWMKP3I8AFO3T9Mf5hpHqyOvd/yrMv0gFOF1Zi7qoIVuwKg11JTPOiHZSsMCZ2rbV+x9lfDFrmm+GyauEM8DFIpDR3FYmeIxtxvLy+J3xaQ2LV4iO3RMv76bWRGEYJetQ+eAI8CacPz0BbOUaohqvJxsTUNKQvmfGJvGbffg8XyvEFuUPRJ+L1l16Y9F9XCtYCKpv2Jw7FbRNXXgMjRba9I1CqZxKupJ+x5UH4oD5qduewd1fQ6Urz7UtYryK+IvszAo5I59kQualULXKq3mp8VS+Ecj+nvRBsiU8EXrg34lAZEwwgXh7/V5xb18Z+JcTCbzzrbhADhxzuT3wklVvlLta4T/eCejyxWvrGydgdjArNGWAf3jDL1SawYieMqP5EJ/gJ+P26geYB+12PV+jdVYiP381BCO/ffbXLRiCJT+448PHSXfXiOKLtyvVbcr8IU7p1lzvXM2P0D87mtZ/olU8QzZU0deo6ZF086CeUSNFKYzpdXDGcxz2DXrZSTf1JBQjDHUddu3WW2AUVGvc/ROsYZzej14e1Z7zEftk7hL7XlgNNqNttTMLJbllA04coA+6izvfGf3TRPUWvTvmIE99gh1Icos4T7f5x2tZUxWeDb3EJ29DwXDChPJ4Zh+DuyBZdNq4T58wkVGp9hAbniA2NnZ+P6wck5ZRlu9SQQZQVb1mEeR6zY8hy3T0JOZXZ9ROj9szrCrW1UCjvbqBJFVjF/IEUkzsnuKJBKUPp9q6+z1Ch/rfcOgJGs/SU6FRvfa6H7heUn7GlUIRHRYu38luMVPXDt0LJsqqDbd418Di3Yun1Sbw/dv8LYkxfz4/Vo3ddb74bPddQGi29NtybRsl2AKpPFBz1C32cRI66U99+w+kJC0gANCe4AC3k5dmX4dtmotzTK/VzG5Bq42VE49kTqN22hpmXJsbtXw0bGdgdblMVZfkvYH20s99Q91PwBPuk6DSx3JNzjDjgpYuKYoxNz79bk7HdW+IMrrbRzEtMzVBg4CxCJVVUz2TqCwL3JzBWYDOs50seRCq2YXD5Q/1bvSb/F/tF0JSezmOM2czri1osaoD35fUQi3UtZfn49rmE/e7l57RsP2+PzBEnAoC81wToWBeZLjYajJl/P+pFmtbb3n53dIBMVPOteyXlXbmIaW+K2hkU8eE2duUiGoWldlO+VxbHSCkO02VNeknXSQZi5vGOoItmnZzhm6Lv6OCflAsyEJ1kLQmBGchg2WY7EKDkTDgGqLjRFZAqHs1ZzJsZBTIwEUJymGnHuPGJ1QqJg3aOhP0qRCEJcu+/W4/vrHz/kx6vAugF7ZsI6lK2gVDxk8tjqUVS4ZEjdpgDBnVPb0tbDdBWK2k/3fukhQAsW1mVuxNyF3XxoKtu+PmXBbesQidi0GE7Ajwy0w3902f1vsaOP2qtXjw29PD+M/sxQC+AZPVRuGaCRGA29qN7T75qA2VYjGNl54iEw6lKN5RrZdKEAcgpg9vasZaaO2xCJUwkF21wDz/QDdZgLeqeZoUDj2bF3I+mvE6eXF6IkmmcqQEl3SPsYsBUdbfsY4WLK9Y8J3XM5kmJ75tDZiodTj5/MwC/JcROn4Zd9UI25G2F9U3dOe7gULWNRT+cd5U1/JQPK9FUs8l4FZBlcZBu7cMwpsLtSPF7TtepEMNnRtCAmQKurOaIwOC3xIWXsi2BE7wndGL9ZCgPsLAcp//w4aM0kBHLf3uIOPEP3eFuxii4Ao8EKSOlzbY+WQpfeVRTOnVsRw8bgW4BXg1jsaP2WmFObwqxCgovePjQ4XF2IZGHA7g9CqkJouGSsARuSZuhNNAwV9eqqvWETQkaN3LS2Alwe72ZyU4XNIncx0lRHU+1OKOpNEBRhSX3eoZQCncSAikGx85co70QpskU6xPXu0/haX1nCqnDTqwQVAv4yiz4wYhaO1jDl490M0/beILUjN/pMIpHymqfsOQqI4Ujdu4wKPE1Ro6AHbech5PO5pyhxBTurIJajQdBFC1/h6pk2dG/H2H2EXkPMBKAAJAZUOMaB4NX42wQ1WJwlPgLojAtaVPSIFmNi3ny2sqcGsEEfS7SFhJ1EVP89YW1UbDm+S8wBaFbrJCqo9AVPfE1YJY93TkgYotJ3Cc6HScowibq+lLL8vh89LUIHqiV7U6oRgZNrJvliAITVEI4iMUj3IdRRjorsgmwUKlrcnqP8XUq/XDETUR8DtotmGY4VZhtxLhHnCcYDm2LNhgBZh0lhxz0cKbPR1iug4g10jme95j7JNhxf6jrUAmK15XuHOlsgGdsE/rHySriDpwPL5yLdF3zV/RVYVxmwI91VtBKAdUYLAFa7QAi9tggnhKYgGBoCNtt5kkLNNLnGmQ2d4O71e382OZSzOAMPPK9B2KHujr/Gj6TqaPExTi25XdTLuehRYEIPcCnP6JfTw+kWuojjCqbyW6Dsv/+UTt8Q/nrPbCql789dH3DP+yuPFc6wlTN7RyC7Oy9v6Eth6TBEOfVEPys2zL26hfJkCEzxrWEXbF1N1CiVtt9vXakggtXRjoCW9w45g8OI7tU6KTQzK/MrXOV4dYMqs96lixXrLG4as9hcpiE0/S/3OIQ8t8EUxE4whT2uMsUgFUN0OZW+LPED3rt6/wUt6i6s7dRjqpV184DhwZfiqSqYTWya0Hwoq7g8mHTdiIV3utlAd925FMWWvKC9It+JmK/e+Do5SepknyQP8DSgu1HHhnXOLb81zXL9wjvqpDHerlM/HITMJl5UXxbAGWxkxSY8Y+ttLM9UpVtiV4ec4fsGnsn1vuLHxqk+Ek1o97clkqHpyH6CtrV+iW0esqZqrQDNuPdPTbJ6Q+BDI6ddMp9pKlfwbp2/zkunZLnwnOS54x4VVc1PmjZw32jJZc294N3vzEczEk0ea+ktRCO5cOeqoHSg+cTp27kb8t2a6Jl4SgakcfWJMuLeO0hlRuodJcfDnWM723J+D7lkSx0IhuD24Cn8tyt40iSF/DT03F3yCQkXHHcOQBJAfDniRA2kuQhNNkwFjk7z8FcTCtk2XQXTpXokWp+k0OurHidStDO+JrFVyzcKVukrG2fWcs3uKTbVcJJBj3xvKBIL3aDvdnMixNDN2IAHpcD9+mUmmNXhTWYe5oAx6TOfmm2XAdMV3P/nqzz47Lp3an4uXPYd9J16C9i/Pv89BlT/IHEc/XcO6mED2rN9sVr25Z7X+ZIyvlXzszDjv0IJQgzTX2NVOxrdqHlEiqeTsagRoJCXrt8b0JyEadRNCN9OqHgZAuSAgIuDpgmkkwcSkN20Kw8WhhSG2oxqJtMoTXemo3l+8w3rNbM7MW1iXUNYv66LN9/akEAlAfRdyfSg/gQpg1pPqh+JhDWlJopFzyWc6H6UmFIrGlxcYGZMgGRXJuhmia3JMuH3xrK0Oj4hwaI3TyIyQ2V45ydqI+M6LQJG+zgaZMj145Y+idKoX8n33WE6bqFgqCx0YPRbmrzdmS6UTKt7/aWJUn+anO5wq7CzVdKEb4jxSUnFXL8i68GVWQs7uYSH3twUp4go3V8lXfcW3lOnVoKo1uCUQno1tV7jnsZFJllpauvUmkzKKiu1VhcalOe62ybZVVl1UaF0QTiJ2XVyk0B8K5OhUoSB9kvFmV1aNbsjzgjAC0LcCZ62c7favizvvZLop/ILhWeLM9Njs0wYHsnvUz4dTYdyKSR+lcle6SCumkp1fAlLQfR0DPZTnAVuUiwvlGAtF+82YklI0Y6c46Qs32IqCOyCG4yjaDD0ajI4HUhpf+RWDa9HPlFjczDDuROVaywiSt9uRHIYXkphybr89dt2vTaXVKQPoVrFTWeWdjyca7Wi/jE5BQuxSDP2iIZ1zufqMnk5r9WlfelxUWmYF6bllvaqPkiYXc1NAbO22Iaej6mrE1L6PMmppFJC+4umxqlhXWohUzYWRl2h6KP8ChxA9hifPvQpX1pqIar57qAiaVuop6zkNnWI8ScW0eRMW6mEKS1qzpwGb7dp4+GAkCStjMW14rE28na3uTKI65SEqcrjjfqSRNIicmWORapTMW8h2zXDl32hOMlt3OHiWneDj5NsfGo5Clv3Wb9U9qhPkH+O3A4aTjKhp9Q6ehZivOUTQOFQ0WundUlwWNsWlFsckmdXWMm1/V66mR5DqcWt0jU92ScCMSPsnW62X1n+gxvbli0wx2gVk94UnxLO6cw7pBYqaUWTsc36aczZB6KaFyZ1Rk3u/CzaC9EMc55iI2Rp5KiinLtcPLBKnftM9Nm5Nl589UtnFXdvxwtk/stO8HCtXt247hU2ergVW6twjGUEms+4/7J7ZCOkJuFsyVod3assY4lxjN6OZj3EPZTpxdlIwdPgx1lhOma6qVhlGvh19x4v9eqbJZLVJMx09aMAaAesnouGnCU/dqUKkuh1lDPNBfItH1X2W3l9IVqd2pUcBap4vc64zn/RiVXQryMhN/F1IEboDJstO+5QmKYv+wkNQCPP0dm+4tA4Y4TZH72uzIztzaguvNhFcItDSYF7Dj9bKO72arvaE9a5ylaNUw31AzFS7TxSn0KstnjI97jHSrwhzxWDWe4q8x1eHbv79teDVbZJg7JNqCjZTWKLbO7Sc9lJRTkwOSKgvHcDep2Psn1jYL/vyWlvm3iX+bJ3ZDONHBU9FJvdhlZxe5Wu3AE9DNanFArMMbrHSq4NTZ/Og1xI+jNaypqmc+w+dCZ1XoXDNrHlJIx0yRwEjHqd3GuNyjO6/rUlPOYTWqSovY9nYWEJatq3djs5ccXEElUyTb+7MSDntCDfWzXn3xNcnzPMTRUSw8ttYz9Wfos6nx/+5cK8ErZ5/KamXfzBWT8lwv7pyZBJmb/9j6KMm2Mre81Cmr9Dul3I38WULtxMU62MDGDVwoTFvs9WotQqzOOiRspnd7fM7m6r724qlG2HXwdg7dYF3IE9/9aiWltByKi483o8+jt+G1BeRHejnLxa7IzdQ542oyeSazI6vJDDG/YQhHPckXOwVHjbYU29C0BnUga6YF8GnD9OMtQ8/0E3J7HKch66NjVgcM+ufkSlcEMXIguITOkDZ8uUAfH1zarU5+MONa+RzUPNYgn4zF08ksWEVI85lMyaEVidg7QHkPeAdXVTMAVPTmUL+4LArutl8Rei2PoBlyJoLBgCxXirXmDso0RHg1c404Ot7BZcxcxBZf0eO1E4cJzwBS5ECAoyA+BcbfgF7jZ9rcAAfsQWZUZYIM/C4df7aflRlOzv8t6E9rrropsowfNPQcH8Ofz4sPGT8SL5Qh2YNHcPNcj60DMaZpeVoOh9ymAGTqXqdtGUKLIg9NlOxRqNO74n1kfhbfSfIKfDJ4OrVOZmP/kExX2VhjzFECGx7FUaqOQuu0abqMO5kntiO1tn8RaUdTMaaVoBEfNJPlW+6VcW2vOY8GfdsfXg1FJFa0H7oQsj9RYf6RjMtuUTV2G+yblcaatHeR7q0bPKVoeCB+F4MWVBQHfSN2MIn7thmbSOYqq1TxZyXlawNeUq+FPeShGXaq/e4GavG+cEf+JInzZC34h1zta1al7Qh0DucBlZVATZUwQyiwEMmmlAUwgQbwCsFGyaNXDNVtY72ZS049ualMOhMCq6+hxwLVsjotCCUQjzgdfgUItNUoJJUtyEp3MoyRRGGNLZxFzX3V3zd8we1uy+4hZ4m0PMeeSdy993YNwVCi3nl+2rudFFuZp+ogrlCT6jnrHcfDNhnlc5f81xnp1BCDa5NrvlzOigrSNUnia6opwpLYKQY686xiidTAyxSl8SeoEJFUQFMA21l4C0nu/8KgZ58urD2npcPhp8F238DtsdtrxtLfENt0JTbheifcFg/BUg2y9Te5o+B4qcitSHF9k0u3zSBvOm9lhmSWHPgJwlk2WX+to7WArs2S37ow1qnBTM4RGO1KDP9YUfmPTysT51aantlzxJhbJpiYv0TB8PK+M1S5EFocpO1a2L+Ox/k6HudjfvRu1JACB+8bhXYVyBmyTPzULu1PFAsoJPjxkFm4Qp38dsKjS3BFF8MPoCONt3dwVJWT6Lpaavlwfl0VN5KSNjpFmEdYLpko534TsNqO6/DLBt9PtVMhat2Fwiq9Q0hs/BqLDCXuoA8ENHzJsf6+NiGzZ0t+E+q00oZR4YLyKkTurGMpTS70VmU/+HQ1leUX7XD67xn8W1ZgwJVprRGsP74ScSRa1Rtg+J7/pH0GP+yMOCu+IRO+VTBOnEjauu/MzkeJCo+ZQE4gW5S3lHcJcwzVrc1C0k0DqNOJUm+RBUP6+CHROhtYxwlCIhjEwIeOYi4trOKRsXiuKCIkeZwpr0r+GKlm5tXJFfxUlJPTQppKzH/aR/OHLluoLfGKeuhzLhwk5HdtbczFoh51OpuWNpbJd3TEeUwBbFMtgm7F/ndMvH1f9+gQMk5DD0gmFSt920ZDehEw5VRAswvMgnL7ka+irncnFgDeBzOqQ2DFsKEnYndVlao48bEyKj9BGMkGLA57NZGtdYrLCc8LPuLTwH5wyT8ykgg98Yk3ttBtqTy8HurppNiMWTFOKYrAhOAEUlOTI9QTZA4rtymyFmiPWcLand9bYCOfB/ug1SIwwQnjDgnh5lKdtjgky5RIyKo0pCAvI7XWxcNCpilAIjnTiTlJ9EVs7labivqjg+xQq2qYdkZUgVVKjq7/9ag+MmIheVL6WYGlbUV6DHpj2zfOsN/NU1qk6Jpp1xdLGM2SUcZIT29pZB5x3MbfwF/fLd18EvpFZi7kLeVocM7/1c3OXLLdwJty6o1jJA5iPTiC4feTSlSDs85V0wudwYGE7zTDWF6bwQyhS15kTBLL90gx+mSl5YfBi6M6TIDEM+kXAtGBFjVlcTsEpdATLsUXCK+7VWMN0yPEd9G73keW0sS43n6iIVkAyBPRyMEE9cErbfj+u+uLNyEKCSOkSrEgJ1v8oK+9VEkIHvUR26yqtNWhuLTdMZIVHYqV5pBpt15AD8A5VHRUvOPN29FSO+8ew4SA/DNddt8oG7XgP7WYnGYUUAVeKm2i9Q6zFH5Bpyqmdfw6sFQV2OpihI8PPxx5jqiqkN15jWKO7gg8L363Sr9jQB/nZpZdNzzQWycxOVNwbbuNgwrkk8vqMt4/g3SjcT3Z1kO1bI+MILxFrfNmHu3JjEHwUPxVKFD3+Yhwi0HB8bHMgWcTg1DAjp79UVQWEBEVtYqxqPZJhnrSfdeyyRW9FYe/Sp269H4nIJ+85225Qo14yQNJfOl3W47f8AGtry4/D3OiujuxJMUWhx9teW7v5Qgyu/e+l+LiudLN0jnKkJnAAEpovL/3piwoah5ckoBEq/15r/RhbonG/sj0aFLFp1857pQjzEYrVErvCu3XVLFDoBzmZW0q6rF8oygI7D6+z39WCUe5yMgDtE+uZa3N0nxuUZOJoOkNNHProiBAw5QZoF3oaOF+Aj70L7vn8MiZQ5eTOsIN/OxCR8eJXezKkQ56qqLkVKe3CLu+AdboSWaXp/iCWdcYP0Y462m3hbVI1BzIevHzp55ul0/q7D8fzBiwOA3EgCP534E6H1gDzLC1vZbwE0Vl5qcPMtCmQyGEU9BDmlVRtdjrU9CaXJw9RiK1WMVnSqtR8BO1CJg0OhBvttBAVeUbYnwl09NkjokELchjbZZV7atY5KGJxYUfNGS64LNsvBX0nG6UBhHB7Rj6lgc0NIovm5PJYiZHaEAzSFa8LBwoTU+PvJcDnTk1hQRd0Cp62/mwzcNG94e++Om5EJvUKNMPmPsXf/FU58fsvIlDgvnjFaRkRPMfVIdUrweWB88nQFaTe67rzJ9+EK2oSv725Gv309dDz2Pks52Mmqu214fJBrtPcmBxfTwJepCtrA8XNwwnAOub8ZjeSDV4ltSHBzxlRKUfWZbl35KYNNDbmP99onATfE9686N6zidx1sed9Gczy+Q+ZhgTcULUc6K2H3JyDuVCloPac09RPltr6JLSD22UFkR0Aj5bYX6NevIgpD5FsdbGqBooN+nlRrms580rOlFl4Teh+6IF8sQES+UYQ1EfA5tH3TO8zM7rI8lEJ0IyaM1x4BYoLWguVtv9tHTLDcNCk3fNh3eKjgkHYNOfC7PXFZw+2TEhDWGt2gM6mmDSUEraUDmiQcqm0cKikZGWx448Du3GxgokXAcrlBa5mBxIbDFikCUOPjh7n5kUwsXWzTXuKZ24SfbFCF9iTYNy2oLHfbC+h2Anqe4UkutRfWXdD9C3V3cmopBjc5UqZd/UZBbL2kk45hcE6Axw+/wneWAZ+NYobI5SLIAulEo1ICQXlrCUcnKS8iIOqyOnNrqDNjKgbg9DuVo3eC/KQlGHYzXgQSxYagtAF+/hH8BggsoEd5pWFjuABVVrgAoa1oETGHQtHaukBUh4sETwF8WcAUFBDBlwg4ECRNcqp26A4nAmPGwzbcnWknjIWbJ/os7LxbdltSEhmgC5NwAvDSwQjkCp/yF8l6mUH4TQm1LKpUWVGCgAoZMBE+58lHrih//Zv1ML8rxYO4NkE/Fu8Z/31XwU+cyDn2sZJNAp/k4W12bz3O4Nv41HnyAiyNezA76pU/JS/73eBuEPXX18LqPLp1t9weEcW4VmdNkx6b32eZXlX6YsmjT8x3A+yBUb3PpEdL8AVcB5Q77kcHip+GhH7XI7OkccRp+pmPGLEO+rClBNSOQPKAmqk3EnybUKU6B1VM1LLAiRDVdCYIuyWo/PLZObqTL99ogi6f8w/Zt+JAFgZSFW387WeqEM8p9GYlrcIyd82D0RMLeqwesdS7U98qUCoouJPlQdsbny6XsU5z7U7JayX135INNTzZCpTbjWP0QNh0G/3skJvN+cYv34bpM58zg/SZQzI5gnoxf2C4WovXcFlo4byite4FpF0/bz7zESslMfq4NsJ1gEGbwG3/8ay+/Wc4yOtz9x9xwHyQSqsGZY4GPWJ6XBfz/sNdaZR1lcxpjc3Ll2oC3/WJ+Xz6rmHxcdxZHpClKgqiWbmZEYBPnjRhytlL4kos67A6SfIUz6COPvWOS4hrSF8Wl/u19O54W+AkK56NnWmW5pmqY5TbHTgdClLDAg92AslKZcu4X3qsiluFx62lA5XZqgqDRo5YYWsqdyk9Vn0Y+5BFggcC5MZ4D5FEs0V4sEK8EA/wPcpDFlWMyvg8WKeNgWb7EbHbqR1d92dlSn0E8nRsdOo+z3J7tbSAC3f9e3SzDJB5xVXbt+Zq3ayiGJzf4KV4Mfkf","base64")).toString()),Y6)});var ds={};Yt(ds,{convertToZip:()=>sit,convertToZipWorker:()=>z6,extractArchiveTo:()=>Ghe,getDefaultTaskPool:()=>Hhe,getTaskPoolForConfiguration:()=>jhe,makeArchiveFromDirectory:()=>iit});function rit(e,t){switch(e){case"async":return new Mv(z6,{poolSize:t});case"workers":return new Uv((0,J6.getContent)(),{poolSize:t});default:throw new Error(`Assertion failed: Unknown value ${e} for taskPoolMode`)}}function Hhe(){return typeof K6>"u"&&(K6=rit("workers",Ui.availableParallelism())),K6}function jhe(e){return typeof e>"u"?Hhe():Zl(nit,e,()=>{let t=e.get("taskPoolMode"),r=e.get("taskPoolConcurrency");switch(t){case"async":return new Mv(z6,{poolSize:r});case"workers":return new Uv((0,J6.getContent)(),{poolSize:r});default:throw new Error(`Assertion failed: Unknown value ${t} for taskPoolMode`)}})}async function z6(e){let{tmpFile:t,tgz:r,compressionLevel:s,extractBufferOpts:a}=e,n=new ps(t,{create:!0,level:s,stats:sl.makeDefaultStats()}),c=Buffer.from(r.buffer,r.byteOffset,r.byteLength);return await Ghe(c,n,a),n.saveAndClose(),t}async function iit(e,{baseFs:t=new Yn,prefixPath:r=vt.root,compressionLevel:s,inMemory:a=!1}={}){let n;if(a)n=new ps(null,{level:s});else{let f=await le.mktempPromise(),p=K.join(f,"archive.zip");n=new ps(p,{create:!0,level:s})}let c=K.resolve(vt.root,r);return await n.copyPromise(c,e,{baseFs:t,stableTime:!0,stableSort:!0}),n}async function sit(e,t={}){let r=await le.mktempPromise(),s=K.join(r,"archive.zip"),a=t.compressionLevel??t.configuration?.get("compressionLevel")??"mixed",n={prefixPath:t.prefixPath,stripComponents:t.stripComponents};return await(t.taskPool??jhe(t.configuration)).run({tmpFile:s,tgz:e,compressionLevel:a,extractBufferOpts:n}),new ps(s,{level:t.compressionLevel})}async function*oit(e){let t=new Bm,r=new _he.PassThrough({objectMode:!0,autoDestroy:!0,emitClose:!0});t.on("entry",s=>{r.write(s)}),t.on("error",s=>{r.destroy(s)}),t.on("close",()=>{r.destroyed||r.end()}),t.end(e);for await(let s of r){let a=s;yield a,a.resume()}}async function Ghe(e,t,{stripComponents:r=0,prefixPath:s=vt.dot}={}){function a(n){if(n.path[0]==="/")return!0;let c=n.path.split(/\//g);return!!(c.some(f=>f==="..")||c.length<=r)}for await(let n of oit(e)){if(a(n))continue;let c=K.normalize(fe.toPortablePath(n.path)).replace(/\/$/,"").split(/\//g);if(c.length<=r)continue;let f=c.slice(r).join("/"),p=K.join(s,f),h=420;switch((n.type==="Directory"||(n.mode??0)&73)&&(h|=73),n.type){case"Directory":t.mkdirpSync(K.dirname(p),{chmod:493,utimes:[Ai.SAFE_TIME,Ai.SAFE_TIME]}),t.mkdirSync(p,{mode:h}),t.utimesSync(p,Ai.SAFE_TIME,Ai.SAFE_TIME);break;case"OldFile":case"File":t.mkdirpSync(K.dirname(p),{chmod:493,utimes:[Ai.SAFE_TIME,Ai.SAFE_TIME]}),t.writeFileSync(p,await KE(n),{mode:h}),t.utimesSync(p,Ai.SAFE_TIME,Ai.SAFE_TIME);break;case"SymbolicLink":t.mkdirpSync(K.dirname(p),{chmod:493,utimes:[Ai.SAFE_TIME,Ai.SAFE_TIME]}),t.symlinkSync(n.linkpath,p),t.lutimesSync(p,Ai.SAFE_TIME,Ai.SAFE_TIME);break}}return t}var _he,J6,K6,nit,qhe=Ze(()=>{qe();Dt();rA();_he=Ie("stream");Nhe();Lhe();xc();J6=et(Uhe());nit=new WeakMap});var Vhe=G((Z6,Whe)=>{(function(e,t){typeof Z6=="object"?Whe.exports=t():typeof define=="function"&&define.amd?define(t):e.treeify=t()})(Z6,function(){function e(a,n){var c=n?"\u2514":"\u251C";return a?c+="\u2500 ":c+="\u2500\u2500\u2510",c}function t(a,n){var c=[];for(var f in a)a.hasOwnProperty(f)&&(n&&typeof a[f]=="function"||c.push(f));return c}function r(a,n,c,f,p,h,E){var C="",S=0,x,I,T=f.slice(0);if(T.push([n,c])&&f.length>0&&(f.forEach(function(U,Y){Y>0&&(C+=(U[1]?" ":"\u2502")+" "),!I&&U[0]===n&&(I=!0)}),C+=e(a,c)+a,p&&(typeof n!="object"||n instanceof Date)&&(C+=": "+n),I&&(C+=" (circular ref.)"),E(C)),!I&&typeof n=="object"){var O=t(n,h);O.forEach(function(U){x=++S===O.length,r(U,n[U],x,T,p,h,E)})}}var s={};return s.asLines=function(a,n,c,f){var p=typeof c!="function"?c:!1;r(".",a,!1,[],n,p,f||c)},s.asTree=function(a,n,c){var f="";return r(".",a,!1,[],n,c,function(p){f+=p+` -`}),f},s})});var Rs={};Yt(Rs,{emitList:()=>ait,emitTree:()=>zhe,treeNodeToJson:()=>Jhe,treeNodeToTreeify:()=>Khe});function Khe(e,{configuration:t}){let r={},s=0,a=(n,c)=>{let f=Array.isArray(n)?n.entries():Object.entries(n);for(let[p,h]of f){if(!h)continue;let{label:E,value:C,children:S}=h,x=[];typeof E<"u"&&x.push(Kd(t,E,2)),typeof C<"u"&&x.push(jt(t,C[0],C[1])),x.length===0&&x.push(Kd(t,`${p}`,2));let I=x.join(": ").trim(),T=`\0${s++}\0`,O=c[`${T}${I}`]={};typeof S<"u"&&a(S,O)}};if(typeof e.children>"u")throw new Error("The root node must only contain children");return a(e.children,r),r}function Jhe(e){let t=r=>{if(typeof r.children>"u"){if(typeof r.value>"u")throw new Error("Assertion failed: Expected a value to be set if the children are missing");return Jd(r.value[0],r.value[1])}let s=Array.isArray(r.children)?r.children.entries():Object.entries(r.children??{}),a=Array.isArray(r.children)?[]:{};for(let[n,c]of s)c&&(a[lit(n)]=t(c));return typeof r.value>"u"?a:{value:Jd(r.value[0],r.value[1]),children:a}};return t(e)}function ait(e,{configuration:t,stdout:r,json:s}){let a=e.map(n=>({value:n}));zhe({children:a},{configuration:t,stdout:r,json:s})}function zhe(e,{configuration:t,stdout:r,json:s,separators:a=0}){if(s){let c=Array.isArray(e.children)?e.children.values():Object.values(e.children??{});for(let f of c)f&&r.write(`${JSON.stringify(Jhe(f))} -`);return}let n=(0,Yhe.asTree)(Khe(e,{configuration:t}),!1,!1);if(n=n.replace(/\0[0-9]+\0/g,""),a>=1&&(n=n.replace(/^([├└]─)/gm,`\u2502 -$1`).replace(/^│\n/,"")),a>=2)for(let c=0;c<2;++c)n=n.replace(/^([│ ].{2}[├│ ].{2}[^\n]+\n)(([│ ]).{2}[├└].{2}[^\n]*\n[│ ].{2}[│ ].{2}[├└]─)/gm,`$1$3 \u2502 -$2`).replace(/^│\n/,"");if(a>=3)throw new Error("Only the first two levels are accepted by treeUtils.emitTree");r.write(n)}function lit(e){return typeof e=="string"?e.replace(/^\0[0-9]+\0/,""):e}var Yhe,Zhe=Ze(()=>{Yhe=et(Vhe());kc()});var wT,Xhe=Ze(()=>{wT=class{constructor(t){this.releaseFunction=t;this.map=new Map}addOrCreate(t,r){let s=this.map.get(t);if(typeof s<"u"){if(s.refCount<=0)throw new Error(`Race condition in RefCountedMap. While adding a new key the refCount is: ${s.refCount} for ${JSON.stringify(t)}`);return s.refCount++,{value:s.value,release:()=>this.release(t)}}else{let a=r();return this.map.set(t,{refCount:1,value:a}),{value:a,release:()=>this.release(t)}}}release(t){let r=this.map.get(t);if(!r)throw new Error(`Unbalanced calls to release. No known instances of: ${JSON.stringify(t)}`);let s=r.refCount;if(s<=0)throw new Error(`Unbalanced calls to release. Too many release vs alloc refcount would become: ${s-1} of ${JSON.stringify(t)}`);s==1?(this.map.delete(t),this.releaseFunction(r.value)):r.refCount--}}});function _v(e){let t=e.match(cit);if(!t?.groups)throw new Error("Assertion failed: Expected the checksum to match the requested pattern");let r=t.groups.cacheVersion?parseInt(t.groups.cacheVersion):null;return{cacheKey:t.groups.cacheKey??null,cacheVersion:r,cacheSpec:t.groups.cacheSpec??null,hash:t.groups.hash}}var $he,X6,$6,BT,Jr,cit,eG=Ze(()=>{qe();Dt();Dt();rA();$he=Ie("crypto"),X6=et(Ie("fs"));Xhe();Tc();y0();xc();Zo();$6=JE(process.env.YARN_CACHE_CHECKPOINT_OVERRIDE??process.env.YARN_CACHE_VERSION_OVERRIDE??9),BT=JE(process.env.YARN_CACHE_VERSION_OVERRIDE??10),Jr=class e{constructor(t,{configuration:r,immutable:s=r.get("enableImmutableCache"),check:a=!1}){this.markedFiles=new Set;this.mutexes=new Map;this.refCountedZipFsCache=new wT(t=>{t.discardAndClose()});this.cacheId=`-${(0,$he.randomBytes)(8).toString("hex")}.tmp`;this.configuration=r,this.cwd=t,this.immutable=s,this.check=a;let{cacheSpec:n,cacheKey:c}=e.getCacheKey(r);this.cacheSpec=n,this.cacheKey=c}static async find(t,{immutable:r,check:s}={}){let a=new e(t.get("cacheFolder"),{configuration:t,immutable:r,check:s});return await a.setup(),a}static getCacheKey(t){let r=t.get("compressionLevel"),s=r!=="mixed"?`c${r}`:"";return{cacheKey:[BT,s].join(""),cacheSpec:s}}get mirrorCwd(){if(!this.configuration.get("enableMirror"))return null;let t=`${this.configuration.get("globalFolder")}/cache`;return t!==this.cwd?t:null}getVersionFilename(t){return`${oI(t)}-${this.cacheKey}.zip`}getChecksumFilename(t,r){let a=_v(r).hash.slice(0,10);return`${oI(t)}-${a}.zip`}isChecksumCompatible(t){if(t===null)return!1;let{cacheVersion:r,cacheSpec:s}=_v(t);if(r===null||r<$6)return!1;let a=this.configuration.get("cacheMigrationMode");return!(r{let Ae=new ps,Ce=K.join(vt.root,p8(t));return Ae.mkdirSync(Ce,{recursive:!0}),Ae.writeJsonSync(K.join(Ce,Er.manifest),{name:fn(t),mocked:!0}),Ae},E=async(Ae,{isColdHit:Ce,controlPath:Ee=null})=>{if(Ee===null&&c.unstablePackages?.has(t.locatorHash))return{isValid:!0,hash:null};let g=r&&!Ce?_v(r).cacheKey:this.cacheKey,Se=!c.skipIntegrityCheck||!r?`${g}/${await vQ(Ae)}`:r;if(Ee!==null){let me=!c.skipIntegrityCheck||!r?`${this.cacheKey}/${await vQ(Ee)}`:r;if(Se!==me)throw new _t(18,"The remote archive doesn't match the local checksum - has the local cache been corrupted?")}let Be=null;switch(r!==null&&Se!==r&&(this.check?Be="throw":_v(r).cacheKey!==_v(Se).cacheKey?Be="update":Be=this.configuration.get("checksumBehavior")),Be){case null:case"update":return{isValid:!0,hash:Se};case"ignore":return{isValid:!0,hash:r};case"reset":return{isValid:!1,hash:r};default:case"throw":throw new _t(18,"The remote archive doesn't match the expected checksum")}},C=async Ae=>{if(!n)throw new Error(`Cache check required but no loader configured for ${Vr(this.configuration,t)}`);let Ce=await n(),Ee=Ce.getRealPath();Ce.saveAndClose(),await le.chmodPromise(Ee,420);let g=await E(Ae,{controlPath:Ee,isColdHit:!1});if(!g.isValid)throw new Error("Assertion failed: Expected a valid checksum");return g.hash},S=async()=>{if(f===null||!await le.existsPromise(f)){let Ae=await n(),Ce=Ae.getRealPath();return Ae.saveAndClose(),{source:"loader",path:Ce}}return{source:"mirror",path:f}},x=async()=>{if(!n)throw new Error(`Cache entry required but missing for ${Vr(this.configuration,t)}`);if(this.immutable)throw new _t(56,`Cache entry required but missing for ${Vr(this.configuration,t)}`);let{path:Ae,source:Ce}=await S(),{hash:Ee}=await E(Ae,{isColdHit:!0}),g=this.getLocatorPath(t,Ee),Se=[];Ce!=="mirror"&&f!==null&&Se.push(async()=>{let me=`${f}${this.cacheId}`;await le.copyFilePromise(Ae,me,X6.default.constants.COPYFILE_FICLONE),await le.chmodPromise(me,420),await le.renamePromise(me,f)}),(!c.mirrorWriteOnly||f===null)&&Se.push(async()=>{let me=`${g}${this.cacheId}`;await le.copyFilePromise(Ae,me,X6.default.constants.COPYFILE_FICLONE),await le.chmodPromise(me,420),await le.renamePromise(me,g)});let Be=c.mirrorWriteOnly?f??g:g;return await Promise.all(Se.map(me=>me())),[!1,Be,Ee]},I=async()=>{let Ce=(async()=>{let Ee=c.unstablePackages?.has(t.locatorHash),g=Ee||!r||this.isChecksumCompatible(r)?this.getLocatorPath(t,r):null,Se=g!==null?this.markedFiles.has(g)||await p.existsPromise(g):!1,Be=!!c.mockedPackages?.has(t.locatorHash)&&(!this.check||!Se),me=Be||Se,ce=me?s:a;if(ce&&ce(),me){let X=null,De=g;if(!Be)if(this.check)X=await C(De);else{let Qe=await E(De,{isColdHit:!1});if(Qe.isValid)X=Qe.hash;else return x()}return[Be,De,X]}else{if(this.immutable&&Ee)throw new _t(56,`Cache entry required but missing for ${Vr(this.configuration,t)}; consider defining ${pe.pretty(this.configuration,"supportedArchitectures",pe.Type.CODE)} to cache packages for multiple systems`);return x()}})();this.mutexes.set(t.locatorHash,Ce);try{return await Ce}finally{this.mutexes.delete(t.locatorHash)}};for(let Ae;Ae=this.mutexes.get(t.locatorHash);)await Ae;let[T,O,U]=await I();T||this.markedFiles.add(O);let Y=()=>this.refCountedZipFsCache.addOrCreate(O,()=>T?h():new ps(O,{baseFs:p,readOnly:!0})),te,ie=new cE(()=>x4(()=>(te=Y(),te.value),Ae=>`Failed to open the cache entry for ${Vr(this.configuration,t)}: ${Ae}`),K),ue=new jf(O,{baseFs:ie,pathUtils:K}),ae=()=>{te?.release()},de=c.unstablePackages?.has(t.locatorHash)?null:U;return[ue,ae,de]}},cit=/^(?:(?(?[0-9]+)(?.*))\/)?(?.*)$/});var vT,e0e=Ze(()=>{vT=(r=>(r[r.SCRIPT=0]="SCRIPT",r[r.SHELLCODE=1]="SHELLCODE",r))(vT||{})});var uit,_I,tG=Ze(()=>{Dt();Bc();Fp();Zo();uit=[[/^(git(?:\+(?:https|ssh))?:\/\/.*(?:\.git)?)#(.*)$/,(e,t,r,s)=>`${r}#commit=${s}`],[/^https:\/\/((?:[^/]+?)@)?codeload\.github\.com\/([^/]+\/[^/]+)\/tar\.gz\/([0-9a-f]+)$/,(e,t,r="",s,a)=>`https://${r}github.com/${s}.git#commit=${a}`],[/^https:\/\/((?:[^/]+?)@)?github\.com\/([^/]+\/[^/]+?)(?:\.git)?#([0-9a-f]+)$/,(e,t,r="",s,a)=>`https://${r}github.com/${s}.git#commit=${a}`],[/^https?:\/\/[^/]+\/(?:[^/]+\/)*(?:@.+(?:\/|(?:%2f)))?([^/]+)\/(?:-|download)\/\1-[^/]+\.tgz(?:#|$)/,e=>`npm:${e}`],[/^https:\/\/npm\.pkg\.github\.com\/download\/(?:@[^/]+)\/(?:[^/]+)\/(?:[^/]+)\/(?:[0-9a-f]+)(?:#|$)/,e=>`npm:${e}`],[/^https:\/\/npm\.fontawesome\.com\/(?:@[^/]+)\/([^/]+)\/-\/([^/]+)\/\1-\2.tgz(?:#|$)/,e=>`npm:${e}`],[/^https?:\/\/[^/]+\/.*\/(@[^/]+)\/([^/]+)\/-\/\1\/\2-(?:[.\d\w-]+)\.tgz(?:#|$)/,(e,t)=>xQ({protocol:"npm:",source:null,selector:e,params:{__archiveUrl:t}})],[/^[^/]+\.tgz#[0-9a-f]+$/,e=>`npm:${e}`]],_I=class{constructor(t){this.resolver=t;this.resolutions=null}async setup(t,{report:r}){let s=K.join(t.cwd,Er.lockfile);if(!le.existsSync(s))return;let a=await le.readFilePromise(s,"utf8"),n=cs(a);if(Object.hasOwn(n,"__metadata"))return;let c=this.resolutions=new Map;for(let f of Object.keys(n)){let p=T2(f);if(!p){r.reportWarning(14,`Failed to parse the string "${f}" into a proper descriptor`);continue}let h=dl(p.range)?Mn(p,`npm:${p.range}`):p,{version:E,resolved:C}=n[f];if(!C)continue;let S;for(let[I,T]of uit){let O=C.match(I);if(O){S=T(E,...O);break}}if(!S){r.reportWarning(14,`${oi(t.configuration,h)}: Only some patterns can be imported from legacy lockfiles (not "${C}")`);continue}let x=h;try{let I=Xd(h.range),T=T2(I.selector,!0);T&&(x=T)}catch{}c.set(h.descriptorHash,Ks(x,S))}}supportsDescriptor(t,r){return this.resolutions?this.resolutions.has(t.descriptorHash):!1}supportsLocator(t,r){return!1}shouldPersistResolution(t,r){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}bindDescriptor(t,r,s){return t}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){if(!this.resolutions)throw new Error("Assertion failed: The resolution store should have been setup");let a=this.resolutions.get(t.descriptorHash);if(!a)throw new Error("Assertion failed: The resolution should have been registered");let n=c8(a),c=s.project.configuration.normalizeDependency(n);return await this.resolver.getCandidates(c,r,s)}async getSatisfying(t,r,s,a){let[n]=await this.getCandidates(t,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(t,r){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}}});var cA,t0e=Ze(()=>{Tc();fv();kc();cA=class extends yo{constructor({configuration:r,stdout:s,suggestInstall:a=!0}){super();this.errorCount=0;S2(this,{configuration:r}),this.configuration=r,this.stdout=s,this.suggestInstall=a}static async start(r,s){let a=new this(r);try{await s(a)}catch(n){a.reportExceptionOnce(n)}finally{await a.finalize()}return a}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(r){}reportCacheMiss(r){}startSectionSync(r,s){return s()}async startSectionPromise(r,s){return await s()}startTimerSync(r,s,a){return(typeof s=="function"?s:a)()}async startTimerPromise(r,s,a){return await(typeof s=="function"?s:a)()}reportSeparator(){}reportInfo(r,s){}reportWarning(r,s){}reportError(r,s){this.errorCount+=1,this.stdout.write(`${jt(this.configuration,"\u27A4","redBright")} ${this.formatNameWithHyperlink(r)}: ${s} -`)}reportProgress(r){return{...Promise.resolve().then(async()=>{for await(let{}of r);}),stop:()=>{}}}reportJson(r){}reportFold(r,s){}async finalize(){this.errorCount>0&&(this.stdout.write(` -`),this.stdout.write(`${jt(this.configuration,"\u27A4","redBright")} Errors happened when preparing the environment required to run this command. -`),this.suggestInstall&&this.stdout.write(`${jt(this.configuration,"\u27A4","redBright")} This might be caused by packages being missing from the lockfile, in which case running "yarn install" might help. -`))}formatNameWithHyperlink(r){return xj(r,{configuration:this.configuration,json:!1})}}});var HI,rG=Ze(()=>{Zo();HI=class{constructor(t){this.resolver=t}supportsDescriptor(t,r){return!!(r.project.storedResolutions.get(t.descriptorHash)||r.project.originalPackages.has(DQ(t).locatorHash))}supportsLocator(t,r){return!!(r.project.originalPackages.has(t.locatorHash)&&!r.project.lockfileNeedsRefresh)}shouldPersistResolution(t,r){throw new Error("The shouldPersistResolution method shouldn't be called on the lockfile resolver, which would always answer yes")}bindDescriptor(t,r,s){return t}getResolutionDependencies(t,r){return this.resolver.getResolutionDependencies(t,r)}async getCandidates(t,r,s){let a=s.project.storedResolutions.get(t.descriptorHash);if(a){let c=s.project.originalPackages.get(a);if(c)return[c]}let n=s.project.originalPackages.get(DQ(t).locatorHash);if(n)return[n];throw new Error("Resolution expected from the lockfile data")}async getSatisfying(t,r,s,a){let[n]=await this.getCandidates(t,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(t,r){let s=r.project.originalPackages.get(t.locatorHash);if(!s)throw new Error("The lockfile resolver isn't meant to resolve packages - they should already have been stored into a cache");return s}}});function Yp(){}function fit(e,t,r,s,a){for(var n=0,c=t.length,f=0,p=0;nx.length?T:x}),h.value=e.join(E)}else h.value=e.join(r.slice(f,f+h.count));f+=h.count,h.added||(p+=h.count)}}var S=t[c-1];return c>1&&typeof S.value=="string"&&(S.added||S.removed)&&e.equals("",S.value)&&(t[c-2].value+=S.value,t.pop()),t}function Ait(e){return{newPos:e.newPos,components:e.components.slice(0)}}function pit(e,t){if(typeof e=="function")t.callback=e;else if(e)for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);return t}function i0e(e,t,r){return r=pit(r,{ignoreWhitespace:!0}),aG.diff(e,t,r)}function hit(e,t,r){return lG.diff(e,t,r)}function ST(e){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?ST=function(t){return typeof t}:ST=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ST(e)}function nG(e){return mit(e)||yit(e)||Eit(e)||Iit()}function mit(e){if(Array.isArray(e))return iG(e)}function yit(e){if(typeof Symbol<"u"&&Symbol.iterator in Object(e))return Array.from(e)}function Eit(e,t){if(e){if(typeof e=="string")return iG(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return iG(e,t)}}function iG(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,s=new Array(t);r"u"&&(c.context=4);var f=hit(r,s,c);if(!f)return;f.push({value:"",lines:[]});function p(U){return U.map(function(Y){return" "+Y})}for(var h=[],E=0,C=0,S=[],x=1,I=1,T=function(Y){var te=f[Y],ie=te.lines||te.value.replace(/\n$/,"").split(` -`);if(te.lines=ie,te.added||te.removed){var ue;if(!E){var ae=f[Y-1];E=x,C=I,ae&&(S=c.context>0?p(ae.lines.slice(-c.context)):[],E-=S.length,C-=S.length)}(ue=S).push.apply(ue,nG(ie.map(function(me){return(te.added?"+":"-")+me}))),te.added?I+=ie.length:x+=ie.length}else{if(E)if(ie.length<=c.context*2&&Y=f.length-2&&ie.length<=c.context){var g=/\n$/.test(r),Se=/\n$/.test(s),Be=ie.length==0&&S.length>Ee.oldLines;!g&&Be&&r.length>0&&S.splice(Ee.oldLines,0,"\\ No newline at end of file"),(!g&&!Be||!Se)&&S.push("\\ No newline at end of file")}h.push(Ee),E=0,C=0,S=[]}x+=ie.length,I+=ie.length}},O=0;O{Yp.prototype={diff:function(t,r){var s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},a=s.callback;typeof s=="function"&&(a=s,s={}),this.options=s;var n=this;function c(T){return a?(setTimeout(function(){a(void 0,T)},0),!0):T}t=this.castInput(t),r=this.castInput(r),t=this.removeEmpty(this.tokenize(t)),r=this.removeEmpty(this.tokenize(r));var f=r.length,p=t.length,h=1,E=f+p;s.maxEditLength&&(E=Math.min(E,s.maxEditLength));var C=[{newPos:-1,components:[]}],S=this.extractCommon(C[0],r,t,0);if(C[0].newPos+1>=f&&S+1>=p)return c([{value:this.join(r),count:r.length}]);function x(){for(var T=-1*h;T<=h;T+=2){var O=void 0,U=C[T-1],Y=C[T+1],te=(Y?Y.newPos:0)-T;U&&(C[T-1]=void 0);var ie=U&&U.newPos+1=f&&te+1>=p)return c(fit(n,O.components,r,t,n.useLongestToken));C[T]=O}h++}if(a)(function T(){setTimeout(function(){if(h>E)return a();x()||T()},0)})();else for(;h<=E;){var I=x();if(I)return I}},pushComponent:function(t,r,s){var a=t[t.length-1];a&&a.added===r&&a.removed===s?t[t.length-1]={count:a.count+1,added:r,removed:s}:t.push({count:1,added:r,removed:s})},extractCommon:function(t,r,s,a){for(var n=r.length,c=s.length,f=t.newPos,p=f-a,h=0;f+1"u"?r:c}:s;return typeof e=="string"?e:JSON.stringify(sG(e,null,null,a),a," ")};Hv.equals=function(e,t){return Yp.prototype.equals.call(Hv,e.replace(/,([\r\n])/g,"$1"),t.replace(/,([\r\n])/g,"$1"))};oG=new Yp;oG.tokenize=function(e){return e.slice()};oG.join=oG.removeEmpty=function(e){return e}});var DT,o0e=Ze(()=>{Tc();DT=class{constructor(t){this.resolver=t}supportsDescriptor(t,r){return this.resolver.supportsDescriptor(t,r)}supportsLocator(t,r){return this.resolver.supportsLocator(t,r)}shouldPersistResolution(t,r){return this.resolver.shouldPersistResolution(t,r)}bindDescriptor(t,r,s){return this.resolver.bindDescriptor(t,r,s)}getResolutionDependencies(t,r){return this.resolver.getResolutionDependencies(t,r)}async getCandidates(t,r,s){throw new _t(20,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}async getSatisfying(t,r,s,a){throw new _t(20,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}async resolve(t,r){throw new _t(20,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}}});var ki,uG=Ze(()=>{Tc();ki=class extends yo{reportCacheHit(t){}reportCacheMiss(t){}startSectionSync(t,r){return r()}async startSectionPromise(t,r){return await r()}startTimerSync(t,r,s){return(typeof r=="function"?r:s)()}async startTimerPromise(t,r,s){return await(typeof r=="function"?r:s)()}reportSeparator(){}reportInfo(t,r){}reportWarning(t,r){}reportError(t,r){}reportProgress(t){return{...Promise.resolve().then(async()=>{for await(let{}of t);}),stop:()=>{}}}reportJson(t){}reportFold(t,r){}async finalize(){}}});var a0e,jI,fG=Ze(()=>{Dt();a0e=et(wQ());cI();$d();kc();y0();Fp();Zo();jI=class{constructor(t,{project:r}){this.workspacesCwds=new Set;this.project=r,this.cwd=t}async setup(){this.manifest=await Ut.tryFind(this.cwd)??new Ut,this.relativeCwd=K.relative(this.project.cwd,this.cwd)||vt.dot;let t=this.manifest.name?this.manifest.name:xa(null,`${this.computeCandidateName()}-${fs(this.relativeCwd).substring(0,6)}`);this.anchoredDescriptor=Mn(t,`${Ii.protocol}${this.relativeCwd}`),this.anchoredLocator=Ks(t,`${Ii.protocol}${this.relativeCwd}`);let r=this.manifest.workspaceDefinitions.map(({pattern:a})=>a);if(r.length===0)return;let s=await(0,a0e.default)(r,{cwd:fe.fromPortablePath(this.cwd),onlyDirectories:!0,ignore:["**/node_modules","**/.git","**/.yarn"]});s.sort(),await s.reduce(async(a,n)=>{let c=K.resolve(this.cwd,fe.toPortablePath(n)),f=await le.existsPromise(K.join(c,"package.json"));await a,f&&this.workspacesCwds.add(c)},Promise.resolve())}get anchoredPackage(){let t=this.project.storedPackages.get(this.anchoredLocator.locatorHash);if(!t)throw new Error(`Assertion failed: Expected workspace ${N2(this.project.configuration,this)} (${jt(this.project.configuration,K.join(this.cwd,Er.manifest),gt.PATH)}) to have been resolved. Run "yarn install" to update the lockfile`);return t}accepts(t){let r=t.indexOf(":"),s=r!==-1?t.slice(0,r+1):null,a=r!==-1?t.slice(r+1):t;if(s===Ii.protocol&&K.normalize(a)===this.relativeCwd||s===Ii.protocol&&(a==="*"||a==="^"||a==="~"))return!0;let n=dl(a);return n?s===Ii.protocol?n.test(this.manifest.version??"0.0.0"):this.project.configuration.get("enableTransparentWorkspaces")&&this.manifest.version!==null?n.test(this.manifest.version):!1:!1}computeCandidateName(){return this.cwd===this.project.cwd?"root-workspace":`${K.basename(this.cwd)}`||"unnamed-workspace"}getRecursiveWorkspaceDependencies({dependencies:t=Ut.hardDependencies}={}){let r=new Set,s=a=>{for(let n of t)for(let c of a.manifest[n].values()){let f=this.project.tryWorkspaceByDescriptor(c);f===null||r.has(f)||(r.add(f),s(f))}};return s(this),r}getRecursiveWorkspaceDependents({dependencies:t=Ut.hardDependencies}={}){let r=new Set,s=a=>{for(let n of this.project.workspaces)t.some(f=>[...n.manifest[f].values()].some(p=>{let h=this.project.tryWorkspaceByDescriptor(p);return h!==null&&R2(h.anchoredLocator,a.anchoredLocator)}))&&!r.has(n)&&(r.add(n),s(n))};return s(this),r}getRecursiveWorkspaceChildren(){let t=new Set([this]);for(let r of t)for(let s of r.workspacesCwds){let a=this.project.workspacesByCwd.get(s);a&&t.add(a)}return t.delete(this),Array.from(t)}async persistManifest(){let t={};this.manifest.exportTo(t);let r=K.join(this.cwd,Ut.fileName),s=`${JSON.stringify(t,null,this.manifest.indent)} -`;await le.changeFilePromise(r,s,{automaticNewlines:!0}),this.manifest.raw=t}}});function bit({project:e,allDescriptors:t,allResolutions:r,allPackages:s,accessibleLocators:a=new Set,optionalBuilds:n=new Set,peerRequirements:c=new Map,peerWarnings:f=[],peerRequirementNodes:p=new Map,volatileDescriptors:h=new Set}){let E=new Map,C=[],S=new Map,x=new Map,I=new Map,T=new Map,O=new Map,U=new Map(e.workspaces.map(ae=>{let de=ae.anchoredLocator.locatorHash,Ae=s.get(de);if(typeof Ae>"u")throw new Error("Assertion failed: The workspace should have an associated package");return[de,x2(Ae)]})),Y=()=>{let ae=le.mktempSync(),de=K.join(ae,"stacktrace.log"),Ae=String(C.length+1).length,Ce=C.map((Ee,g)=>`${`${g+1}.`.padStart(Ae," ")} ${gl(Ee)} -`).join("");throw le.writeFileSync(de,Ce),le.detachTemp(ae),new _t(45,`Encountered a stack overflow when resolving peer dependencies; cf ${fe.fromPortablePath(de)}`)},te=ae=>{let de=r.get(ae.descriptorHash);if(typeof de>"u")throw new Error("Assertion failed: The resolution should have been registered");let Ae=s.get(de);if(!Ae)throw new Error("Assertion failed: The package could not be found");return Ae},ie=(ae,de,Ae,{top:Ce,optional:Ee})=>{C.length>1e3&&Y(),C.push(de);let g=ue(ae,de,Ae,{top:Ce,optional:Ee});return C.pop(),g},ue=(ae,de,Ae,{top:Ce,optional:Ee})=>{if(Ee||n.delete(de.locatorHash),a.has(de.locatorHash))return;a.add(de.locatorHash);let g=s.get(de.locatorHash);if(!g)throw new Error(`Assertion failed: The package (${Vr(e.configuration,de)}) should have been registered`);let Se=new Set,Be=new Map,me=[],ce=[],X=[],De=[];for(let Qe of Array.from(g.dependencies.values())){if(g.peerDependencies.has(Qe.identHash)&&g.locatorHash!==Ce)continue;if(Qp(Qe))throw new Error("Assertion failed: Virtual packages shouldn't be encountered when virtualizing a branch");h.delete(Qe.descriptorHash);let it=Ee;if(!it){let Re=g.dependenciesMeta.get(fn(Qe));if(typeof Re<"u"){let ct=Re.get(null);typeof ct<"u"&&ct.optional&&(it=!0)}}let _=r.get(Qe.descriptorHash);if(!_)throw new Error(`Assertion failed: The resolution (${oi(e.configuration,Qe)}) should have been registered`);let tt=U.get(_)||s.get(_);if(!tt)throw new Error(`Assertion failed: The package (${_}, resolved from ${oi(e.configuration,Qe)}) should have been registered`);if(tt.peerDependencies.size===0){ie(Qe,tt,new Map,{top:Ce,optional:it});continue}let Ne,ke,be=new Set,je=new Map;me.push(()=>{Ne=f8(Qe,de.locatorHash),ke=A8(tt,de.locatorHash),g.dependencies.set(Qe.identHash,Ne),r.set(Ne.descriptorHash,ke.locatorHash),t.set(Ne.descriptorHash,Ne),s.set(ke.locatorHash,ke),Pp(T,ke.locatorHash).add(Ne.descriptorHash),Se.add(ke.locatorHash)}),ce.push(()=>{O.set(ke.locatorHash,je);for(let Re of ke.peerDependencies.values()){let Me=Zl(Be,Re.identHash,()=>{let P=Ae.get(Re.identHash)??null,w=g.dependencies.get(Re.identHash);return!w&&Q2(de,Re)&&(ae.identHash===de.identHash?w=ae:(w=Mn(de,ae.range),t.set(w.descriptorHash,w),r.set(w.descriptorHash,de.locatorHash),h.delete(w.descriptorHash),P=null)),w||(w=Mn(Re,"missing:")),{subject:de,ident:Re,provided:w,root:!P,requests:new Map,hash:`p${fs(de.locatorHash,Re.identHash).slice(0,6)}`}}).provided;if(Me.range==="missing:"&&ke.dependencies.has(Re.identHash)){ke.peerDependencies.delete(Re.identHash);continue}if(je.set(Re.identHash,{requester:ke,descriptor:Re,meta:ke.peerDependenciesMeta.get(fn(Re)),children:new Map}),ke.dependencies.set(Re.identHash,Me),Qp(Me)){let P=r.get(Me.descriptorHash);Pp(I,P).add(ke.locatorHash)}S.set(Me.identHash,Me),Me.range==="missing:"&&be.add(Me.identHash)}ke.dependencies=new Map(Ys(ke.dependencies,([Re,ct])=>fn(ct)))}),X.push(()=>{if(!s.has(ke.locatorHash))return;let Re=E.get(tt.locatorHash);typeof Re=="number"&&Re>=2&&Y();let ct=E.get(tt.locatorHash),Me=typeof ct<"u"?ct+1:1;E.set(tt.locatorHash,Me),ie(Ne,ke,je,{top:Ce,optional:it}),E.set(tt.locatorHash,Me-1)}),De.push(()=>{let Re=r.get(Ne.descriptorHash);if(typeof Re>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");let ct=O.get(Re);if(typeof ct>"u")throw new Error("Assertion failed: Expected the peer requests to be registered");for(let Me of Be.values()){let P=ct.get(Me.ident.identHash);P&&(Me.requests.set(Ne.descriptorHash,P),p.set(Me.hash,Me),Me.root||Ae.get(Me.ident.identHash)?.children.set(Ne.descriptorHash,P))}if(s.has(ke.locatorHash))for(let Me of be)ke.dependencies.delete(Me)})}for(let Qe of[...me,...ce])Qe();for(let Qe of Se){Se.delete(Qe);let it=s.get(Qe),_=fs(sI(it).locatorHash,...Array.from(it.dependencies.values(),be=>{let je=be.range!=="missing:"?r.get(be.descriptorHash):"missing:";if(typeof je>"u")throw new Error(`Assertion failed: Expected the resolution for ${oi(e.configuration,be)} to have been registered`);return je===Ce?`${je} (top)`:je})),tt=x.get(_);if(typeof tt>"u"){x.set(_,it);continue}let Ne=Pp(T,tt.locatorHash);for(let be of T.get(it.locatorHash)??[])r.set(be,tt.locatorHash),Ne.add(be);s.delete(it.locatorHash),a.delete(it.locatorHash),Se.delete(it.locatorHash);let ke=I.get(it.locatorHash);if(ke!==void 0){let be=Pp(I,tt.locatorHash);for(let je of ke)be.add(je),Se.add(je)}}for(let Qe of[...X,...De])Qe()};for(let ae of e.workspaces){let de=ae.anchoredLocator;h.delete(ae.anchoredDescriptor.descriptorHash),ie(ae.anchoredDescriptor,de,new Map,{top:de.locatorHash,optional:!1})}for(let ae of p.values()){if(!ae.root)continue;let de=s.get(ae.subject.locatorHash);if(typeof de>"u")continue;for(let Ce of ae.requests.values()){let Ee=`p${fs(ae.subject.locatorHash,fn(ae.ident),Ce.requester.locatorHash).slice(0,6)}`;c.set(Ee,{subject:ae.subject.locatorHash,requested:ae.ident,rootRequester:Ce.requester.locatorHash,allRequesters:Array.from(O2(Ce),g=>g.requester.locatorHash)})}let Ae=[...O2(ae)];if(ae.provided.range!=="missing:"){let Ce=te(ae.provided),Ee=Ce.version??"0.0.0",g=Be=>{if(Be.startsWith(Ii.protocol)){if(!e.tryWorkspaceByLocator(Ce))return null;Be=Be.slice(Ii.protocol.length),(Be==="^"||Be==="~")&&(Be="*")}return Be},Se=!0;for(let Be of Ae){let me=g(Be.descriptor.range);if(me===null){Se=!1;continue}if(!eA(Ee,me)){Se=!1;let ce=`p${fs(ae.subject.locatorHash,fn(ae.ident),Be.requester.locatorHash).slice(0,6)}`;f.push({type:1,subject:de,requested:ae.ident,requester:Be.requester,version:Ee,hash:ce,requirementCount:Ae.length})}}if(!Se){let Be=Ae.map(me=>g(me.descriptor.range));f.push({type:3,node:ae,range:Be.includes(null)?null:g8(Be),hash:ae.hash})}}else{let Ce=!0;for(let Ee of Ae)if(!Ee.meta?.optional){Ce=!1;let g=`p${fs(ae.subject.locatorHash,fn(ae.ident),Ee.requester.locatorHash).slice(0,6)}`;f.push({type:0,subject:de,requested:ae.ident,requester:Ee.requester,hash:g})}Ce||f.push({type:2,node:ae,hash:ae.hash})}}}function*Pit(e){let t=new Map;if("children"in e)t.set(e,e);else for(let r of e.requests.values())t.set(r,r);for(let[r,s]of t){yield{request:r,root:s};for(let a of r.children.values())t.has(a)||t.set(a,s)}}function xit(e,t){let r=[],s=[],a=!1;for(let n of e.peerWarnings)if(!(n.type===1||n.type===0)){if(!e.tryWorkspaceByLocator(n.node.subject)){a=!0;continue}if(n.type===3){let c=e.storedResolutions.get(n.node.provided.descriptorHash);if(typeof c>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");let f=e.storedPackages.get(c);if(typeof f>"u")throw new Error("Assertion failed: Expected the package to be registered");let p=f0(Pit(n.node),({request:C,root:S})=>eA(f.version??"0.0.0",C.descriptor.range)?f0.skip:C===S?$i(e.configuration,C.requester):`${$i(e.configuration,C.requester)} (via ${$i(e.configuration,S.requester)})`),h=[...O2(n.node)].length>1?"and other dependencies request":"requests",E=n.range?aI(e.configuration,n.range):jt(e.configuration,"but they have non-overlapping ranges!","redBright");r.push(`${$i(e.configuration,n.node.ident)} is listed by your project with version ${F2(e.configuration,f.version??"0.0.0")} (${jt(e.configuration,n.hash,gt.CODE)}), which doesn't satisfy what ${p} ${h} (${E}).`)}if(n.type===2){let c=n.node.requests.size>1?" and other dependencies":"";s.push(`${Vr(e.configuration,n.node.subject)} doesn't provide ${$i(e.configuration,n.node.ident)} (${jt(e.configuration,n.hash,gt.CODE)}), requested by ${$i(e.configuration,n.node.requests.values().next().value.requester)}${c}.`)}}t.startSectionSync({reportFooter:()=>{t.reportWarning(86,`Some peer dependencies are incorrectly met by your project; run ${jt(e.configuration,"yarn explain peer-requirements ",gt.CODE)} for details, where ${jt(e.configuration,"",gt.CODE)} is the six-letter p-prefixed code.`)},skipIfEmpty:!0},()=>{for(let n of Ys(r,c=>ZE.default(c)))t.reportWarning(60,n);for(let n of Ys(s,c=>ZE.default(c)))t.reportWarning(2,n)}),a&&t.reportWarning(86,`Some peer dependencies are incorrectly met by dependencies; run ${jt(e.configuration,"yarn explain peer-requirements",gt.CODE)} for details.`)}var bT,PT,u0e,hG,pG,gG,xT,wit,Bit,l0e,vit,Sit,Dit,Na,AG,kT,c0e,Rt,f0e=Ze(()=>{Dt();Dt();Bc();Vt();bT=Ie("crypto");cG();Jl();PT=et(Nd()),u0e=et(pi()),hG=Ie("util"),pG=et(Ie("v8")),gG=et(Ie("zlib"));eG();$2();tG();rG();cI();y8();Tc();o0e();fv();uG();$d();fG();OQ();kc();y0();xc();hR();Fj();Fp();Zo();xT=JE(process.env.YARN_LOCKFILE_VERSION_OVERRIDE??8),wit=3,Bit=/ *, */g,l0e=/\/$/,vit=32,Sit=(0,hG.promisify)(gG.default.gzip),Dit=(0,hG.promisify)(gG.default.gunzip),Na=(r=>(r.UpdateLockfile="update-lockfile",r.SkipBuild="skip-build",r))(Na||{}),AG={restoreLinkersCustomData:["linkersCustomData"],restoreResolutions:["accessibleLocators","conditionalLocators","disabledLocators","optionalBuilds","storedDescriptors","storedResolutions","storedPackages","lockFileChecksum"],restoreBuildState:["skippedBuilds","storedBuildState"]},kT=(a=>(a[a.NotProvided=0]="NotProvided",a[a.NotCompatible=1]="NotCompatible",a[a.NodeNotProvided=2]="NodeNotProvided",a[a.NodeNotCompatible=3]="NodeNotCompatible",a))(kT||{}),c0e=e=>fs(`${wit}`,e),Rt=class e{constructor(t,{configuration:r}){this.resolutionAliases=new Map;this.workspaces=[];this.workspacesByCwd=new Map;this.workspacesByIdent=new Map;this.storedResolutions=new Map;this.storedDescriptors=new Map;this.storedPackages=new Map;this.storedChecksums=new Map;this.storedBuildState=new Map;this.accessibleLocators=new Set;this.conditionalLocators=new Set;this.disabledLocators=new Set;this.originalPackages=new Map;this.optionalBuilds=new Set;this.skippedBuilds=new Set;this.lockfileLastVersion=null;this.lockfileNeedsRefresh=!1;this.peerRequirements=new Map;this.peerWarnings=[];this.peerRequirementNodes=new Map;this.linkersCustomData=new Map;this.lockFileChecksum=null;this.installStateChecksum=null;this.configuration=r,this.cwd=t}static async find(t,r){if(!t.projectCwd)throw new st(`No project found in ${r}`);let s=t.projectCwd,a=r,n=null;for(;n!==t.projectCwd;){if(n=a,le.existsSync(K.join(n,Er.manifest))){s=n;break}a=K.dirname(n)}let c=new e(t.projectCwd,{configuration:t});ze.telemetry?.reportProject(c.cwd),await c.setupResolutions(),await c.setupWorkspaces(),ze.telemetry?.reportWorkspaceCount(c.workspaces.length),ze.telemetry?.reportDependencyCount(c.workspaces.reduce((I,T)=>I+T.manifest.dependencies.size+T.manifest.devDependencies.size,0));let f=c.tryWorkspaceByCwd(s);if(f)return{project:c,workspace:f,locator:f.anchoredLocator};let p=await c.findLocatorForLocation(`${s}/`,{strict:!0});if(p)return{project:c,locator:p,workspace:null};let h=jt(t,c.cwd,gt.PATH),E=jt(t,K.relative(c.cwd,s),gt.PATH),C=`- If ${h} isn't intended to be a project, remove any yarn.lock and/or package.json file there.`,S=`- If ${h} is intended to be a project, it might be that you forgot to list ${E} in its workspace configuration.`,x=`- Finally, if ${h} is fine and you intend ${E} to be treated as a completely separate project (not even a workspace), create an empty yarn.lock file in it.`;throw new st(`The nearest package directory (${jt(t,s,gt.PATH)}) doesn't seem to be part of the project declared in ${jt(t,c.cwd,gt.PATH)}. - -${[C,S,x].join(` -`)}`)}async setupResolutions(){this.storedResolutions=new Map,this.storedDescriptors=new Map,this.storedPackages=new Map,this.lockFileChecksum=null;let t=K.join(this.cwd,Er.lockfile),r=this.configuration.get("defaultLanguageName");if(le.existsSync(t)){let s=await le.readFilePromise(t,"utf8");this.lockFileChecksum=c0e(s);let a=cs(s);if(a.__metadata){let n=a.__metadata.version,c=a.__metadata.cacheKey;this.lockfileLastVersion=n,this.lockfileNeedsRefresh=n"u")throw new Error(`Assertion failed: Expected the lockfile entry to have a resolution field (${f})`);let h=Rp(p.resolution,!0),E=new Ut;E.load(p,{yamlCompatibilityMode:!0});let C=E.version,S=E.languageName||r,x=p.linkType.toUpperCase(),I=p.conditions??null,T=E.dependencies,O=E.peerDependencies,U=E.dependenciesMeta,Y=E.peerDependenciesMeta,te=E.bin;if(p.checksum!=null){let ue=typeof c<"u"&&!p.checksum.includes("/")?`${c}/${p.checksum}`:p.checksum;this.storedChecksums.set(h.locatorHash,ue)}let ie={...h,version:C,languageName:S,linkType:x,conditions:I,dependencies:T,peerDependencies:O,dependenciesMeta:U,peerDependenciesMeta:Y,bin:te};this.originalPackages.set(ie.locatorHash,ie);for(let ue of f.split(Bit)){let ae=E0(ue);n<=6&&(ae=this.configuration.normalizeDependency(ae),ae=Mn(ae,ae.range.replace(/^patch:[^@]+@(?!npm(:|%3A))/,"$1npm%3A"))),this.storedDescriptors.set(ae.descriptorHash,ae),this.storedResolutions.set(ae.descriptorHash,h.locatorHash)}}}else s.includes("yarn lockfile v1")&&(this.lockfileLastVersion=-1)}}async setupWorkspaces(){this.workspaces=[],this.workspacesByCwd=new Map,this.workspacesByIdent=new Map;let t=new Set,r=(0,PT.default)(4),s=async(a,n)=>{if(t.has(n))return a;t.add(n);let c=new jI(n,{project:this});await r(()=>c.setup());let f=a.then(()=>{this.addWorkspace(c)});return Array.from(c.workspacesCwds).reduce(s,f)};await s(Promise.resolve(),this.cwd)}addWorkspace(t){let r=this.workspacesByIdent.get(t.anchoredLocator.identHash);if(typeof r<"u")throw new Error(`Duplicate workspace name ${$i(this.configuration,t.anchoredLocator)}: ${fe.fromPortablePath(t.cwd)} conflicts with ${fe.fromPortablePath(r.cwd)}`);this.workspaces.push(t),this.workspacesByCwd.set(t.cwd,t),this.workspacesByIdent.set(t.anchoredLocator.identHash,t)}get topLevelWorkspace(){return this.getWorkspaceByCwd(this.cwd)}tryWorkspaceByCwd(t){K.isAbsolute(t)||(t=K.resolve(this.cwd,t)),t=K.normalize(t).replace(/\/+$/,"");let r=this.workspacesByCwd.get(t);return r||null}getWorkspaceByCwd(t){let r=this.tryWorkspaceByCwd(t);if(!r)throw new Error(`Workspace not found (${t})`);return r}tryWorkspaceByFilePath(t){let r=null;for(let s of this.workspaces)K.relative(s.cwd,t).startsWith("../")||r&&r.cwd.length>=s.cwd.length||(r=s);return r||null}getWorkspaceByFilePath(t){let r=this.tryWorkspaceByFilePath(t);if(!r)throw new Error(`Workspace not found (${t})`);return r}tryWorkspaceByIdent(t){let r=this.workspacesByIdent.get(t.identHash);return typeof r>"u"?null:r}getWorkspaceByIdent(t){let r=this.tryWorkspaceByIdent(t);if(!r)throw new Error(`Workspace not found (${$i(this.configuration,t)})`);return r}tryWorkspaceByDescriptor(t){if(t.range.startsWith(Ii.protocol)){let s=t.range.slice(Ii.protocol.length);if(s!=="^"&&s!=="~"&&s!=="*"&&!dl(s))return this.tryWorkspaceByCwd(s)}let r=this.tryWorkspaceByIdent(t);return r===null||(Qp(t)&&(t=k2(t)),!r.accepts(t.range))?null:r}getWorkspaceByDescriptor(t){let r=this.tryWorkspaceByDescriptor(t);if(r===null)throw new Error(`Workspace not found (${oi(this.configuration,t)})`);return r}tryWorkspaceByLocator(t){let r=this.tryWorkspaceByIdent(t);return r===null||(Hu(t)&&(t=sI(t)),r.anchoredLocator.locatorHash!==t.locatorHash)?null:r}getWorkspaceByLocator(t){let r=this.tryWorkspaceByLocator(t);if(!r)throw new Error(`Workspace not found (${Vr(this.configuration,t)})`);return r}deleteDescriptor(t){this.storedResolutions.delete(t),this.storedDescriptors.delete(t)}deleteLocator(t){this.originalPackages.delete(t),this.storedPackages.delete(t),this.accessibleLocators.delete(t)}forgetResolution(t){if("descriptorHash"in t){let r=this.storedResolutions.get(t.descriptorHash);this.deleteDescriptor(t.descriptorHash);let s=new Set(this.storedResolutions.values());typeof r<"u"&&!s.has(r)&&this.deleteLocator(r)}if("locatorHash"in t){this.deleteLocator(t.locatorHash);for(let[r,s]of this.storedResolutions)s===t.locatorHash&&this.deleteDescriptor(r)}}forgetTransientResolutions(){let t=this.configuration.makeResolver(),r=new Map;for(let[s,a]of this.storedResolutions.entries()){let n=r.get(a);n||r.set(a,n=new Set),n.add(s)}for(let s of this.originalPackages.values()){let a;try{a=t.shouldPersistResolution(s,{project:this,resolver:t})}catch{a=!1}if(!a){this.deleteLocator(s.locatorHash);let n=r.get(s.locatorHash);if(n){r.delete(s.locatorHash);for(let c of n)this.deleteDescriptor(c)}}}}forgetVirtualResolutions(){for(let t of this.storedPackages.values())for(let[r,s]of t.dependencies)Qp(s)&&t.dependencies.set(r,k2(s))}getDependencyMeta(t,r){let s={},n=this.topLevelWorkspace.manifest.dependenciesMeta.get(fn(t));if(!n)return s;let c=n.get(null);if(c&&Object.assign(s,c),r===null||!u0e.default.valid(r))return s;for(let[f,p]of n)f!==null&&f===r&&Object.assign(s,p);return s}async findLocatorForLocation(t,{strict:r=!1}={}){let s=new ki,a=this.configuration.getLinkers(),n={project:this,report:s};for(let c of a){let f=await c.findPackageLocator(t,n);if(f){if(r&&(await c.findPackageLocation(f,n)).replace(l0e,"")!==t.replace(l0e,""))continue;return f}}return null}async loadUserConfig(){let t=K.join(this.cwd,".pnp.cjs");await le.existsPromise(t)&&xp(t).setup();let r=K.join(this.cwd,"yarn.config.cjs");return await le.existsPromise(r)?xp(r):null}async preparePackage(t,{resolver:r,resolveOptions:s}){let a=await this.configuration.getPackageExtensions(),n=this.configuration.normalizePackage(t,{packageExtensions:a});for(let[c,f]of n.dependencies){let p=await this.configuration.reduceHook(E=>E.reduceDependency,f,this,n,f,{resolver:r,resolveOptions:s});if(!Q2(f,p))throw new Error("Assertion failed: The descriptor ident cannot be changed through aliases");let h=r.bindDescriptor(p,n,s);n.dependencies.set(c,h)}return n}async resolveEverything(t){if(!this.workspacesByCwd||!this.workspacesByIdent)throw new Error("Workspaces must have been setup before calling this function");this.forgetVirtualResolutions();let r=new Map(this.originalPackages),s=[];t.lockfileOnly||this.forgetTransientResolutions();let a=t.resolver||this.configuration.makeResolver(),n=new _I(a);await n.setup(this,{report:t.report});let c=t.lockfileOnly?[new DT(a)]:[n,a],f=new em([new HI(a),...c]),p=new em([...c]),h=this.configuration.makeFetcher(),E=t.lockfileOnly?{project:this,report:t.report,resolver:f}:{project:this,report:t.report,resolver:f,fetchOptions:{project:this,cache:t.cache,checksums:this.storedChecksums,report:t.report,fetcher:h,cacheOptions:{mirrorWriteOnly:!0}}},C=new Map,S=new Map,x=new Map,I=new Map,T=new Map,O=new Map,U=this.topLevelWorkspace.anchoredLocator,Y=new Set,te=[],ie=KH(),ue=this.configuration.getSupportedArchitectures();await t.report.startProgressPromise(yo.progressViaTitle(),async ce=>{let X=async tt=>{let Ne=await YE(async()=>await f.resolve(tt,E),Re=>`${Vr(this.configuration,tt)}: ${Re}`);if(!R2(tt,Ne))throw new Error(`Assertion failed: The locator cannot be changed by the resolver (went from ${Vr(this.configuration,tt)} to ${Vr(this.configuration,Ne)})`);I.set(Ne.locatorHash,Ne),!r.delete(Ne.locatorHash)&&!this.tryWorkspaceByLocator(Ne)&&s.push(Ne);let be=await this.preparePackage(Ne,{resolver:f,resolveOptions:E}),je=Lu([...be.dependencies.values()].map(Re=>_(Re)));return te.push(je),je.catch(()=>{}),S.set(be.locatorHash,be),be},De=async tt=>{let Ne=T.get(tt.locatorHash);if(typeof Ne<"u")return Ne;let ke=Promise.resolve().then(()=>X(tt));return T.set(tt.locatorHash,ke),ke},Qe=async(tt,Ne)=>{let ke=await _(Ne);return C.set(tt.descriptorHash,tt),x.set(tt.descriptorHash,ke.locatorHash),ke},it=async tt=>{ce.setTitle(oi(this.configuration,tt));let Ne=this.resolutionAliases.get(tt.descriptorHash);if(typeof Ne<"u")return Qe(tt,this.storedDescriptors.get(Ne));let ke=f.getResolutionDependencies(tt,E),be=Object.fromEntries(await Lu(Object.entries(ke).map(async([ct,Me])=>{let P=f.bindDescriptor(Me,U,E),w=await _(P);return Y.add(w.locatorHash),[ct,w]}))),Re=(await YE(async()=>await f.getCandidates(tt,be,E),ct=>`${oi(this.configuration,tt)}: ${ct}`))[0];if(typeof Re>"u")throw new _t(82,`${oi(this.configuration,tt)}: No candidates found`);if(t.checkResolutions){let{locators:ct}=await p.getSatisfying(tt,be,[Re],{...E,resolver:p});if(!ct.find(Me=>Me.locatorHash===Re.locatorHash))throw new _t(78,`Invalid resolution ${D2(this.configuration,tt,Re)}`)}return C.set(tt.descriptorHash,tt),x.set(tt.descriptorHash,Re.locatorHash),De(Re)},_=tt=>{let Ne=O.get(tt.descriptorHash);if(typeof Ne<"u")return Ne;C.set(tt.descriptorHash,tt);let ke=Promise.resolve().then(()=>it(tt));return O.set(tt.descriptorHash,ke),ke};for(let tt of this.workspaces){let Ne=tt.anchoredDescriptor;te.push(_(Ne))}for(;te.length>0;){let tt=[...te];te.length=0,await Lu(tt)}});let ae=zl(r.values(),ce=>this.tryWorkspaceByLocator(ce)?zl.skip:ce);if(s.length>0||ae.length>0){let ce=new Set(this.workspaces.flatMap(tt=>{let Ne=S.get(tt.anchoredLocator.locatorHash);if(!Ne)throw new Error("Assertion failed: The workspace should have been resolved");return Array.from(Ne.dependencies.values(),ke=>{let be=x.get(ke.descriptorHash);if(!be)throw new Error("Assertion failed: The resolution should have been registered");return be})})),X=tt=>ce.has(tt.locatorHash)?"0":"1",De=tt=>gl(tt),Qe=Ys(s,[X,De]),it=Ys(ae,[X,De]),_=t.report.getRecommendedLength();Qe.length>0&&t.report.reportInfo(85,`${jt(this.configuration,"+",gt.ADDED)} ${Xk(this.configuration,Qe,_)}`),it.length>0&&t.report.reportInfo(85,`${jt(this.configuration,"-",gt.REMOVED)} ${Xk(this.configuration,it,_)}`)}let de=new Set(this.resolutionAliases.values()),Ae=new Set(S.keys()),Ce=new Set,Ee=new Map,g=[],Se=new Map;bit({project:this,accessibleLocators:Ce,volatileDescriptors:de,optionalBuilds:Ae,peerRequirements:Ee,peerWarnings:g,peerRequirementNodes:Se,allDescriptors:C,allResolutions:x,allPackages:S});for(let ce of Y)Ae.delete(ce);for(let ce of de)C.delete(ce),x.delete(ce);let Be=new Set,me=new Set;for(let ce of S.values())ce.conditions!=null&&Ae.has(ce.locatorHash)&&(QQ(ce,ue)||(QQ(ce,ie)&&t.report.reportWarningOnce(77,`${Vr(this.configuration,ce)}: Your current architecture (${process.platform}-${process.arch}) is supported by this package, but is missing from the ${jt(this.configuration,"supportedArchitectures",gt.SETTING)} setting`),me.add(ce.locatorHash)),Be.add(ce.locatorHash));this.storedResolutions=x,this.storedDescriptors=C,this.storedPackages=S,this.accessibleLocators=Ce,this.conditionalLocators=Be,this.disabledLocators=me,this.originalPackages=I,this.optionalBuilds=Ae,this.peerRequirements=Ee,this.peerWarnings=g,this.peerRequirementNodes=Se}async fetchEverything({cache:t,report:r,fetcher:s,mode:a,persistProject:n=!0}){let c={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators},f=s||this.configuration.makeFetcher(),p={checksums:this.storedChecksums,project:this,cache:t,fetcher:f,report:r,cacheOptions:c},h=Array.from(new Set(Ys(this.storedResolutions.values(),[I=>{let T=this.storedPackages.get(I);if(!T)throw new Error("Assertion failed: The locator should have been registered");return gl(T)}])));a==="update-lockfile"&&(h=h.filter(I=>!this.storedChecksums.has(I)));let E=!1,C=yo.progressViaCounter(h.length);await r.reportProgress(C);let S=(0,PT.default)(vit);if(await Lu(h.map(I=>S(async()=>{let T=this.storedPackages.get(I);if(!T)throw new Error("Assertion failed: The locator should have been registered");if(Hu(T))return;let O;try{O=await f.fetch(T,p)}catch(U){U.message=`${Vr(this.configuration,T)}: ${U.message}`,r.reportExceptionOnce(U),E=U;return}O.checksum!=null?this.storedChecksums.set(T.locatorHash,O.checksum):this.storedChecksums.delete(T.locatorHash),O.releaseFs&&O.releaseFs()}).finally(()=>{C.tick()}))),E)throw E;let x=n&&a!=="update-lockfile"?await this.cacheCleanup({cache:t,report:r}):null;if(r.cacheMisses.size>0||x){let T=(await Promise.all([...r.cacheMisses].map(async ae=>{let de=this.storedPackages.get(ae),Ae=this.storedChecksums.get(ae)??null,Ce=t.getLocatorPath(de,Ae);return(await le.statPromise(Ce)).size}))).reduce((ae,de)=>ae+de,0)-(x?.size??0),O=r.cacheMisses.size,U=x?.count??0,Y=`${qk(O,{zero:"No new packages",one:"A package was",more:`${jt(this.configuration,O,gt.NUMBER)} packages were`})} added to the project`,te=`${qk(U,{zero:"none were",one:"one was",more:`${jt(this.configuration,U,gt.NUMBER)} were`})} removed`,ie=T!==0?` (${jt(this.configuration,T,gt.SIZE_DIFF)})`:"",ue=U>0?O>0?`${Y}, and ${te}${ie}.`:`${Y}, but ${te}${ie}.`:`${Y}${ie}.`;r.reportInfo(13,ue)}}async linkEverything({cache:t,report:r,fetcher:s,mode:a}){let n={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators,skipIntegrityCheck:!0},c=s||this.configuration.makeFetcher(),f={checksums:this.storedChecksums,project:this,cache:t,fetcher:c,report:r,cacheOptions:n},p=this.configuration.getLinkers(),h={project:this,report:r},E=new Map(p.map(Be=>{let me=Be.makeInstaller(h),ce=Be.getCustomDataKey(),X=this.linkersCustomData.get(ce);return typeof X<"u"&&me.attachCustomData(X),[Be,me]})),C=new Map,S=new Map,x=new Map,I=new Map(await Lu([...this.accessibleLocators].map(async Be=>{let me=this.storedPackages.get(Be);if(!me)throw new Error("Assertion failed: The locator should have been registered");return[Be,await c.fetch(me,f)]}))),T=[],O=new Set,U=[];for(let Be of this.accessibleLocators){let me=this.storedPackages.get(Be);if(typeof me>"u")throw new Error("Assertion failed: The locator should have been registered");let ce=I.get(me.locatorHash);if(typeof ce>"u")throw new Error("Assertion failed: The fetch result should have been registered");let X=[],De=it=>{X.push(it)},Qe=this.tryWorkspaceByLocator(me);if(Qe!==null){let it=[],{scripts:_}=Qe.manifest;for(let Ne of["preinstall","install","postinstall"])_.has(Ne)&&it.push({type:0,script:Ne});try{for(let[Ne,ke]of E)if(Ne.supportsPackage(me,h)&&(await ke.installPackage(me,ce,{holdFetchResult:De})).buildRequest!==null)throw new Error("Assertion failed: Linkers can't return build directives for workspaces; this responsibility befalls to the Yarn core")}finally{X.length===0?ce.releaseFs?.():T.push(Lu(X).catch(()=>{}).then(()=>{ce.releaseFs?.()}))}let tt=K.join(ce.packageFs.getRealPath(),ce.prefixPath);S.set(me.locatorHash,tt),!Hu(me)&&it.length>0&&x.set(me.locatorHash,{buildDirectives:it,buildLocations:[tt]})}else{let it=p.find(Ne=>Ne.supportsPackage(me,h));if(!it)throw new _t(12,`${Vr(this.configuration,me)} isn't supported by any available linker`);let _=E.get(it);if(!_)throw new Error("Assertion failed: The installer should have been registered");let tt;try{tt=await _.installPackage(me,ce,{holdFetchResult:De})}finally{X.length===0?ce.releaseFs?.():T.push(Lu(X).then(()=>{}).then(()=>{ce.releaseFs?.()}))}C.set(me.locatorHash,it),S.set(me.locatorHash,tt.packageLocation),tt.buildRequest&&tt.packageLocation&&(tt.buildRequest.skipped?(O.add(me.locatorHash),this.skippedBuilds.has(me.locatorHash)||U.push([me,tt.buildRequest.explain])):x.set(me.locatorHash,{buildDirectives:tt.buildRequest.directives,buildLocations:[tt.packageLocation]}))}}let Y=new Map;for(let Be of this.accessibleLocators){let me=this.storedPackages.get(Be);if(!me)throw new Error("Assertion failed: The locator should have been registered");let ce=this.tryWorkspaceByLocator(me)!==null,X=async(De,Qe)=>{let it=S.get(me.locatorHash);if(typeof it>"u")throw new Error(`Assertion failed: The package (${Vr(this.configuration,me)}) should have been registered`);let _=[];for(let tt of me.dependencies.values()){let Ne=this.storedResolutions.get(tt.descriptorHash);if(typeof Ne>"u")throw new Error(`Assertion failed: The resolution (${oi(this.configuration,tt)}, from ${Vr(this.configuration,me)})should have been registered`);let ke=this.storedPackages.get(Ne);if(typeof ke>"u")throw new Error(`Assertion failed: The package (${Ne}, resolved from ${oi(this.configuration,tt)}) should have been registered`);let be=this.tryWorkspaceByLocator(ke)===null?C.get(Ne):null;if(typeof be>"u")throw new Error(`Assertion failed: The package (${Ne}, resolved from ${oi(this.configuration,tt)}) should have been registered`);be===De||be===null?S.get(ke.locatorHash)!==null&&_.push([tt,ke]):!ce&&it!==null&&C2(Y,Ne).push(it)}it!==null&&await Qe.attachInternalDependencies(me,_)};if(ce)for(let[De,Qe]of E)De.supportsPackage(me,h)&&await X(De,Qe);else{let De=C.get(me.locatorHash);if(!De)throw new Error("Assertion failed: The linker should have been found");let Qe=E.get(De);if(!Qe)throw new Error("Assertion failed: The installer should have been registered");await X(De,Qe)}}for(let[Be,me]of Y){let ce=this.storedPackages.get(Be);if(!ce)throw new Error("Assertion failed: The package should have been registered");let X=C.get(ce.locatorHash);if(!X)throw new Error("Assertion failed: The linker should have been found");let De=E.get(X);if(!De)throw new Error("Assertion failed: The installer should have been registered");await De.attachExternalDependents(ce,me)}let te=new Map;for(let[Be,me]of E){let ce=await me.finalizeInstall();for(let X of ce?.records??[])X.buildRequest.skipped?(O.add(X.locator.locatorHash),this.skippedBuilds.has(X.locator.locatorHash)||U.push([X.locator,X.buildRequest.explain])):x.set(X.locator.locatorHash,{buildDirectives:X.buildRequest.directives,buildLocations:X.buildLocations});typeof ce?.customData<"u"&&te.set(Be.getCustomDataKey(),ce.customData)}if(this.linkersCustomData=te,await Lu(T),a==="skip-build")return;for(let[,Be]of Ys(U,([me])=>gl(me)))Be(r);let ie=new Set(x.keys()),ue=(0,bT.createHash)("sha512");ue.update(process.versions.node),await this.configuration.triggerHook(Be=>Be.globalHashGeneration,this,Be=>{ue.update("\0"),ue.update(Be)});let ae=ue.digest("hex"),de=new Map,Ae=Be=>{let me=de.get(Be.locatorHash);if(typeof me<"u")return me;let ce=this.storedPackages.get(Be.locatorHash);if(typeof ce>"u")throw new Error("Assertion failed: The package should have been registered");let X=(0,bT.createHash)("sha512");X.update(Be.locatorHash),de.set(Be.locatorHash,"");for(let De of ce.dependencies.values()){let Qe=this.storedResolutions.get(De.descriptorHash);if(typeof Qe>"u")throw new Error(`Assertion failed: The resolution (${oi(this.configuration,De)}) should have been registered`);let it=this.storedPackages.get(Qe);if(typeof it>"u")throw new Error("Assertion failed: The package should have been registered");X.update(Ae(it))}return me=X.digest("hex"),de.set(Be.locatorHash,me),me},Ce=(Be,me)=>{let ce=(0,bT.createHash)("sha512");ce.update(ae),ce.update(Ae(Be));for(let X of me)ce.update(X);return ce.digest("hex")},Ee=new Map,g=!1,Se=Be=>{let me=new Set([Be.locatorHash]);for(let ce of me){let X=this.storedPackages.get(ce);if(!X)throw new Error("Assertion failed: The package should have been registered");for(let De of X.dependencies.values()){let Qe=this.storedResolutions.get(De.descriptorHash);if(!Qe)throw new Error(`Assertion failed: The resolution (${oi(this.configuration,De)}) should have been registered`);if(Qe!==Be.locatorHash&&ie.has(Qe))return!1;let it=this.storedPackages.get(Qe);if(!it)throw new Error("Assertion failed: The package should have been registered");let _=this.tryWorkspaceByLocator(it);if(_){if(_.anchoredLocator.locatorHash!==Be.locatorHash&&ie.has(_.anchoredLocator.locatorHash))return!1;me.add(_.anchoredLocator.locatorHash)}me.add(Qe)}}return!0};for(;ie.size>0;){let Be=ie.size,me=[];for(let ce of ie){let X=this.storedPackages.get(ce);if(!X)throw new Error("Assertion failed: The package should have been registered");if(!Se(X))continue;let De=x.get(X.locatorHash);if(!De)throw new Error("Assertion failed: The build directive should have been registered");let Qe=Ce(X,De.buildLocations);if(this.storedBuildState.get(X.locatorHash)===Qe){Ee.set(X.locatorHash,Qe),ie.delete(ce);continue}g||(await this.persistInstallStateFile(),g=!0),this.storedBuildState.has(X.locatorHash)?r.reportInfo(8,`${Vr(this.configuration,X)} must be rebuilt because its dependency tree changed`):r.reportInfo(7,`${Vr(this.configuration,X)} must be built because it never has been before or the last one failed`);let it=De.buildLocations.map(async _=>{if(!K.isAbsolute(_))throw new Error(`Assertion failed: Expected the build location to be absolute (not ${_})`);for(let tt of De.buildDirectives){let Ne=`# This file contains the result of Yarn building a package (${gl(X)}) -`;switch(tt.type){case 0:Ne+=`# Script name: ${tt.script} -`;break;case 1:Ne+=`# Script code: ${tt.script} -`;break}let ke=null;if(!await le.mktempPromise(async je=>{let Re=K.join(je,"build.log"),{stdout:ct,stderr:Me}=this.configuration.getSubprocessStreams(Re,{header:Ne,prefix:Vr(this.configuration,X),report:r}),P;try{switch(tt.type){case 0:P=await OR(X,tt.script,[],{cwd:_,project:this,stdin:ke,stdout:ct,stderr:Me});break;case 1:P=await kj(X,tt.script,[],{cwd:_,project:this,stdin:ke,stdout:ct,stderr:Me});break}}catch(y){Me.write(y.stack),P=1}if(ct.end(),Me.end(),P===0)return!0;le.detachTemp(je);let w=`${Vr(this.configuration,X)} couldn't be built successfully (exit code ${jt(this.configuration,P,gt.NUMBER)}, logs can be found here: ${jt(this.configuration,Re,gt.PATH)})`,b=this.optionalBuilds.has(X.locatorHash);return b?r.reportInfo(9,w):r.reportError(9,w),ype&&r.reportFold(fe.fromPortablePath(Re),le.readFileSync(Re,"utf8")),b}))return!1}return!0});me.push(...it,Promise.allSettled(it).then(_=>{ie.delete(ce),_.every(tt=>tt.status==="fulfilled"&&tt.value===!0)&&Ee.set(X.locatorHash,Qe)}))}if(await Lu(me),Be===ie.size){let ce=Array.from(ie).map(X=>{let De=this.storedPackages.get(X);if(!De)throw new Error("Assertion failed: The package should have been registered");return Vr(this.configuration,De)}).join(", ");r.reportError(3,`Some packages have circular dependencies that make their build order unsatisfiable - as a result they won't be built (affected packages are: ${ce})`);break}}this.storedBuildState=Ee,this.skippedBuilds=O}async installWithNewReport(t,r){return(await Ot.start({configuration:this.configuration,json:t.json,stdout:t.stdout,forceSectionAlignment:!0,includeLogs:!t.json&&!t.quiet,includeVersion:!0},async a=>{await this.install({...r,report:a})})).exitCode()}async install(t){let r=this.configuration.get("nodeLinker");ze.telemetry?.reportInstall(r);let s=!1;if(await t.report.startTimerPromise("Project validation",{skipIfEmpty:!0},async()=>{this.configuration.get("enableOfflineMode")&&t.report.reportWarning(90,"Offline work is enabled; Yarn won't fetch packages from the remote registry if it can avoid it"),await this.configuration.triggerHook(E=>E.validateProject,this,{reportWarning:(E,C)=>{t.report.reportWarning(E,C)},reportError:(E,C)=>{t.report.reportError(E,C),s=!0}})}),s)return;let a=await this.configuration.getPackageExtensions();for(let E of a.values())for(let[,C]of E)for(let S of C)S.status="inactive";let n=K.join(this.cwd,Er.lockfile),c=null;if(t.immutable)try{c=await le.readFilePromise(n,"utf8")}catch(E){throw E.code==="ENOENT"?new _t(28,"The lockfile would have been created by this install, which is explicitly forbidden."):E}await t.report.startTimerPromise("Resolution step",async()=>{await this.resolveEverything(t)}),await t.report.startTimerPromise("Post-resolution validation",{skipIfEmpty:!0},async()=>{xit(this,t.report);for(let[,E]of a)for(let[,C]of E)for(let S of C)if(S.userProvided){let x=jt(this.configuration,S,gt.PACKAGE_EXTENSION);switch(S.status){case"inactive":t.report.reportWarning(68,`${x}: No matching package in the dependency tree; you may not need this rule anymore.`);break;case"redundant":t.report.reportWarning(69,`${x}: This rule seems redundant when applied on the original package; the extension may have been applied upstream.`);break}}if(c!==null){let E=md(c,this.generateLockfile());if(E!==c){let C=s0e(n,n,c,E,void 0,void 0,{maxEditLength:100});if(C){t.report.reportSeparator();for(let S of C.hunks){t.report.reportInfo(null,`@@ -${S.oldStart},${S.oldLines} +${S.newStart},${S.newLines} @@`);for(let x of S.lines)x.startsWith("+")?t.report.reportError(28,jt(this.configuration,x,gt.ADDED)):x.startsWith("-")?t.report.reportError(28,jt(this.configuration,x,gt.REMOVED)):t.report.reportInfo(null,jt(this.configuration,x,"grey"))}t.report.reportSeparator()}throw new _t(28,"The lockfile would have been modified by this install, which is explicitly forbidden.")}}});for(let E of a.values())for(let[,C]of E)for(let S of C)S.userProvided&&S.status==="active"&&ze.telemetry?.reportPackageExtension(Jd(S,gt.PACKAGE_EXTENSION));await t.report.startTimerPromise("Fetch step",async()=>{await this.fetchEverything(t)});let f=t.immutable?[...new Set(this.configuration.get("immutablePatterns"))].sort():[],p=await Promise.all(f.map(async E=>SQ(E,{cwd:this.cwd})));(typeof t.persistProject>"u"||t.persistProject)&&await this.persist(),await t.report.startTimerPromise("Link step",async()=>{if(t.mode==="update-lockfile"){t.report.reportWarning(73,`Skipped due to ${jt(this.configuration,"mode=update-lockfile",gt.CODE)}`);return}await this.linkEverything(t);let E=await Promise.all(f.map(async C=>SQ(C,{cwd:this.cwd})));for(let C=0;C{await this.configuration.triggerHook(E=>E.validateProjectAfterInstall,this,{reportWarning:(E,C)=>{t.report.reportWarning(E,C)},reportError:(E,C)=>{t.report.reportError(E,C),h=!0}})}),!h&&await this.configuration.triggerHook(E=>E.afterAllInstalled,this,t)}generateLockfile(){let t=new Map;for(let[n,c]of this.storedResolutions.entries()){let f=t.get(c);f||t.set(c,f=new Set),f.add(n)}let r={},{cacheKey:s}=Jr.getCacheKey(this.configuration);r.__metadata={version:xT,cacheKey:s};for(let[n,c]of t.entries()){let f=this.originalPackages.get(n);if(!f)continue;let p=[];for(let C of c){let S=this.storedDescriptors.get(C);if(!S)throw new Error("Assertion failed: The descriptor should have been registered");p.push(S)}let h=p.map(C=>hl(C)).sort().join(", "),E=new Ut;E.version=f.linkType==="HARD"?f.version:"0.0.0-use.local",E.languageName=f.languageName,E.dependencies=new Map(f.dependencies),E.peerDependencies=new Map(f.peerDependencies),E.dependenciesMeta=new Map(f.dependenciesMeta),E.peerDependenciesMeta=new Map(f.peerDependenciesMeta),E.bin=new Map(f.bin),r[h]={...E.exportTo({},{compatibilityMode:!1}),linkType:f.linkType.toLowerCase(),resolution:gl(f),checksum:this.storedChecksums.get(f.locatorHash),conditions:f.conditions||void 0}}return`${[`# This file is generated by running "yarn install" inside your project. -`,`# Manual changes might be lost - proceed with caution! -`].join("")} -`+cl(r)}async persistLockfile(){let t=K.join(this.cwd,Er.lockfile),r="";try{r=await le.readFilePromise(t,"utf8")}catch{}let s=this.generateLockfile(),a=md(r,s);a!==r&&(await le.writeFilePromise(t,a),this.lockFileChecksum=c0e(a),this.lockfileNeedsRefresh=!1)}async persistInstallStateFile(){let t=[];for(let c of Object.values(AG))t.push(...c);let r=Yd(this,t),s=pG.default.serialize(r),a=fs(s);if(this.installStateChecksum===a)return;let n=this.configuration.get("installStatePath");await le.mkdirPromise(K.dirname(n),{recursive:!0}),await le.writeFilePromise(n,await Sit(s)),this.installStateChecksum=a}async restoreInstallState({restoreLinkersCustomData:t=!0,restoreResolutions:r=!0,restoreBuildState:s=!0}={}){let a=this.configuration.get("installStatePath"),n;try{let c=await Dit(await le.readFilePromise(a));n=pG.default.deserialize(c),this.installStateChecksum=fs(c)}catch{r&&await this.applyLightResolution();return}t&&typeof n.linkersCustomData<"u"&&(this.linkersCustomData=n.linkersCustomData),s&&Object.assign(this,Yd(n,AG.restoreBuildState)),r&&(n.lockFileChecksum===this.lockFileChecksum?Object.assign(this,Yd(n,AG.restoreResolutions)):await this.applyLightResolution())}async applyLightResolution(){await this.resolveEverything({lockfileOnly:!0,report:new ki}),await this.persistInstallStateFile()}async persist(){let t=(0,PT.default)(4);await Promise.all([this.persistLockfile(),...this.workspaces.map(r=>t(()=>r.persistManifest()))])}async cacheCleanup({cache:t,report:r}){if(this.configuration.get("enableGlobalCache"))return null;let s=new Set([".gitignore"]);if(!P8(t.cwd,this.cwd)||!await le.existsPromise(t.cwd))return null;let a=[];for(let c of await le.readdirPromise(t.cwd)){if(s.has(c))continue;let f=K.resolve(t.cwd,c);t.markedFiles.has(f)||(t.immutable?r.reportError(56,`${jt(this.configuration,K.basename(f),"magenta")} appears to be unused and would be marked for deletion, but the cache is immutable`):a.push(le.lstatPromise(f).then(async p=>(await le.removePromise(f),p.size))))}if(a.length===0)return null;let n=await Promise.all(a);return{count:a.length,size:n.reduce((c,f)=>c+f,0)}}}});function kit(e){let s=Math.floor(e.timeNow/864e5),a=e.updateInterval*864e5,n=e.state.lastUpdate??e.timeNow+a+Math.floor(a*e.randomInitialInterval),c=n+a,f=e.state.lastTips??s*864e5,p=f+864e5+8*36e5-e.timeZone,h=c<=e.timeNow,E=p<=e.timeNow,C=null;return(h||E||!e.state.lastUpdate||!e.state.lastTips)&&(C={},C.lastUpdate=h?e.timeNow:n,C.lastTips=f,C.blocks=h?{}:e.state.blocks,C.displayedTips=e.state.displayedTips),{nextState:C,triggerUpdate:h,triggerTips:E,nextTips:E?s*864e5:f}}var GI,A0e=Ze(()=>{Dt();uv();y0();AR();xc();Fp();GI=class{constructor(t,r){this.values=new Map;this.hits=new Map;this.enumerators=new Map;this.nextTips=0;this.displayedTips=[];this.shouldCommitTips=!1;this.configuration=t;let s=this.getRegistryPath();this.isNew=!le.existsSync(s),this.shouldShowTips=!1,this.sendReport(r),this.startBuffer()}commitTips(){this.shouldShowTips&&(this.shouldCommitTips=!0)}selectTip(t){let r=new Set(this.displayedTips),s=f=>f&&An?eA(An,f):!1,a=t.map((f,p)=>p).filter(f=>t[f]&&s(t[f]?.selector));if(a.length===0)return null;let n=a.filter(f=>!r.has(f));if(n.length===0){let f=Math.floor(a.length*.2);this.displayedTips=f>0?this.displayedTips.slice(-f):[],n=a.filter(p=>!r.has(p))}let c=n[Math.floor(Math.random()*n.length)];return this.displayedTips.push(c),this.commitTips(),t[c]}reportVersion(t){this.reportValue("version",t.replace(/-git\..*/,"-git"))}reportCommandName(t){this.reportValue("commandName",t||"")}reportPluginName(t){this.reportValue("pluginName",t)}reportProject(t){this.reportEnumerator("projectCount",t)}reportInstall(t){this.reportHit("installCount",t)}reportPackageExtension(t){this.reportValue("packageExtension",t)}reportWorkspaceCount(t){this.reportValue("workspaceCount",String(t))}reportDependencyCount(t){this.reportValue("dependencyCount",String(t))}reportValue(t,r){Pp(this.values,t).add(r)}reportEnumerator(t,r){Pp(this.enumerators,t).add(fs(r))}reportHit(t,r="*"){let s=P4(this.hits,t),a=Zl(s,r,()=>0);s.set(r,a+1)}getRegistryPath(){let t=this.configuration.get("globalFolder");return K.join(t,"telemetry.json")}sendReport(t){let r=this.getRegistryPath(),s;try{s=le.readJsonSync(r)}catch{s={}}let{nextState:a,triggerUpdate:n,triggerTips:c,nextTips:f}=kit({state:s,timeNow:Date.now(),timeZone:new Date().getTimezoneOffset()*60*1e3,randomInitialInterval:Math.random(),updateInterval:this.configuration.get("telemetryInterval")});if(this.nextTips=f,this.displayedTips=s.displayedTips??[],a!==null)try{le.mkdirSync(K.dirname(r),{recursive:!0}),le.writeJsonSync(r,a)}catch{return!1}if(c&&this.configuration.get("enableTips")&&(this.shouldShowTips=!0),n){let p=s.blocks??{};if(Object.keys(p).length===0){let h=`https://browser-http-intake.logs.datadoghq.eu/v1/input/${t}?ddsource=yarn`,E=C=>YH(h,C,{configuration:this.configuration}).catch(()=>{});for(let[C,S]of Object.entries(s.blocks??{})){if(Object.keys(S).length===0)continue;let x=S;x.userId=C,x.reportType="primary";for(let O of Object.keys(x.enumerators??{}))x.enumerators[O]=x.enumerators[O].length;E(x);let I=new Map,T=20;for(let[O,U]of Object.entries(x.values))U.length>0&&I.set(O,U.slice(0,T));for(;I.size>0;){let O={};O.userId=C,O.reportType="secondary",O.metrics={};for(let[U,Y]of I)O.metrics[U]=Y.shift(),Y.length===0&&I.delete(U);E(O)}}}}return!0}applyChanges(){let t=this.getRegistryPath(),r;try{r=le.readJsonSync(t)}catch{r={}}let s=this.configuration.get("telemetryUserId")??"*",a=r.blocks=r.blocks??{},n=a[s]=a[s]??{};for(let c of this.hits.keys()){let f=n.hits=n.hits??{},p=f[c]=f[c]??{};for(let[h,E]of this.hits.get(c))p[h]=(p[h]??0)+E}for(let c of["values","enumerators"])for(let f of this[c].keys()){let p=n[c]=n[c]??{};p[f]=[...new Set([...p[f]??[],...this[c].get(f)??[]])]}this.shouldCommitTips&&(r.lastTips=this.nextTips,r.displayedTips=this.displayedTips),le.mkdirSync(K.dirname(t),{recursive:!0}),le.writeJsonSync(t,r)}startBuffer(){process.on("exit",()=>{try{this.applyChanges()}catch{}})}}});var jv={};Yt(jv,{BuildDirectiveType:()=>vT,CACHE_CHECKPOINT:()=>$6,CACHE_VERSION:()=>BT,Cache:()=>Jr,Configuration:()=>ze,DEFAULT_RC_FILENAME:()=>ej,DurationUnit:()=>tj,FormatType:()=>PAe,InstallMode:()=>Na,LEGACY_PLUGINS:()=>X2,LOCKFILE_VERSION:()=>xT,LegacyMigrationResolver:()=>_I,LightReport:()=>cA,LinkType:()=>zE,LockfileResolver:()=>HI,Manifest:()=>Ut,MessageName:()=>Br,MultiFetcher:()=>uI,PackageExtensionStatus:()=>R4,PackageExtensionType:()=>Q4,PeerWarningType:()=>kT,Project:()=>Rt,Report:()=>yo,ReportError:()=>_t,SettingsType:()=>SI,StreamReport:()=>Ot,TAG_REGEXP:()=>Up,TelemetryManager:()=>GI,ThrowReport:()=>ki,VirtualFetcher:()=>fI,WindowsLinkType:()=>ER,Workspace:()=>jI,WorkspaceFetcher:()=>AI,WorkspaceResolver:()=>Ii,YarnVersion:()=>An,execUtils:()=>qr,folderUtils:()=>NQ,formatUtils:()=>pe,hashUtils:()=>Ln,httpUtils:()=>nn,miscUtils:()=>Ge,nodeUtils:()=>Ui,parseMessageName:()=>jx,reportOptionDeprecations:()=>PI,scriptUtils:()=>Cn,semverUtils:()=>Fr,stringifyMessageName:()=>Kf,structUtils:()=>j,tgzUtils:()=>ds,treeUtils:()=>Rs});var qe=Ze(()=>{gR();OQ();kc();y0();AR();xc();hR();Fj();Fp();Zo();qhe();Zhe();eG();$2();$2();e0e();tG();t0e();rG();cI();Gx();m8();f0e();Tc();fv();A0e();uG();E8();I8();$d();fG();uv();Rae()});var y0e=G((J4t,qv)=>{"use strict";var Rit=process.env.TERM_PROGRAM==="Hyper",Tit=process.platform==="win32",g0e=process.platform==="linux",dG={ballotDisabled:"\u2612",ballotOff:"\u2610",ballotOn:"\u2611",bullet:"\u2022",bulletWhite:"\u25E6",fullBlock:"\u2588",heart:"\u2764",identicalTo:"\u2261",line:"\u2500",mark:"\u203B",middot:"\xB7",minus:"\uFF0D",multiplication:"\xD7",obelus:"\xF7",pencilDownRight:"\u270E",pencilRight:"\u270F",pencilUpRight:"\u2710",percent:"%",pilcrow2:"\u2761",pilcrow:"\xB6",plusMinus:"\xB1",section:"\xA7",starsOff:"\u2606",starsOn:"\u2605",upDownArrow:"\u2195"},d0e=Object.assign({},dG,{check:"\u221A",cross:"\xD7",ellipsisLarge:"...",ellipsis:"...",info:"i",question:"?",questionSmall:"?",pointer:">",pointerSmall:"\xBB",radioOff:"( )",radioOn:"(*)",warning:"\u203C"}),m0e=Object.assign({},dG,{ballotCross:"\u2718",check:"\u2714",cross:"\u2716",ellipsisLarge:"\u22EF",ellipsis:"\u2026",info:"\u2139",question:"?",questionFull:"\uFF1F",questionSmall:"\uFE56",pointer:g0e?"\u25B8":"\u276F",pointerSmall:g0e?"\u2023":"\u203A",radioOff:"\u25EF",radioOn:"\u25C9",warning:"\u26A0"});qv.exports=Tit&&!Rit?d0e:m0e;Reflect.defineProperty(qv.exports,"common",{enumerable:!1,value:dG});Reflect.defineProperty(qv.exports,"windows",{enumerable:!1,value:d0e});Reflect.defineProperty(qv.exports,"other",{enumerable:!1,value:m0e})});var zu=G((z4t,mG)=>{"use strict";var Fit=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),Nit=/[\u001b\u009b][[\]#;?()]*(?:(?:(?:[^\W_]*;?[^\W_]*)\u0007)|(?:(?:[0-9]{1,4}(;[0-9]{0,4})*)?[~0-9=<>cf-nqrtyA-PRZ]))/g,E0e=()=>{let e={enabled:!0,visible:!0,styles:{},keys:{}};"FORCE_COLOR"in process.env&&(e.enabled=process.env.FORCE_COLOR!=="0");let t=n=>{let c=n.open=`\x1B[${n.codes[0]}m`,f=n.close=`\x1B[${n.codes[1]}m`,p=n.regex=new RegExp(`\\u001b\\[${n.codes[1]}m`,"g");return n.wrap=(h,E)=>{h.includes(f)&&(h=h.replace(p,f+c));let C=c+h+f;return E?C.replace(/\r*\n/g,`${f}$&${c}`):C},n},r=(n,c,f)=>typeof n=="function"?n(c):n.wrap(c,f),s=(n,c)=>{if(n===""||n==null)return"";if(e.enabled===!1)return n;if(e.visible===!1)return"";let f=""+n,p=f.includes(` -`),h=c.length;for(h>0&&c.includes("unstyle")&&(c=[...new Set(["unstyle",...c])].reverse());h-- >0;)f=r(e.styles[c[h]],f,p);return f},a=(n,c,f)=>{e.styles[n]=t({name:n,codes:c}),(e.keys[f]||(e.keys[f]=[])).push(n),Reflect.defineProperty(e,n,{configurable:!0,enumerable:!0,set(h){e.alias(n,h)},get(){let h=E=>s(E,h.stack);return Reflect.setPrototypeOf(h,e),h.stack=this.stack?this.stack.concat(n):[n],h}})};return a("reset",[0,0],"modifier"),a("bold",[1,22],"modifier"),a("dim",[2,22],"modifier"),a("italic",[3,23],"modifier"),a("underline",[4,24],"modifier"),a("inverse",[7,27],"modifier"),a("hidden",[8,28],"modifier"),a("strikethrough",[9,29],"modifier"),a("black",[30,39],"color"),a("red",[31,39],"color"),a("green",[32,39],"color"),a("yellow",[33,39],"color"),a("blue",[34,39],"color"),a("magenta",[35,39],"color"),a("cyan",[36,39],"color"),a("white",[37,39],"color"),a("gray",[90,39],"color"),a("grey",[90,39],"color"),a("bgBlack",[40,49],"bg"),a("bgRed",[41,49],"bg"),a("bgGreen",[42,49],"bg"),a("bgYellow",[43,49],"bg"),a("bgBlue",[44,49],"bg"),a("bgMagenta",[45,49],"bg"),a("bgCyan",[46,49],"bg"),a("bgWhite",[47,49],"bg"),a("blackBright",[90,39],"bright"),a("redBright",[91,39],"bright"),a("greenBright",[92,39],"bright"),a("yellowBright",[93,39],"bright"),a("blueBright",[94,39],"bright"),a("magentaBright",[95,39],"bright"),a("cyanBright",[96,39],"bright"),a("whiteBright",[97,39],"bright"),a("bgBlackBright",[100,49],"bgBright"),a("bgRedBright",[101,49],"bgBright"),a("bgGreenBright",[102,49],"bgBright"),a("bgYellowBright",[103,49],"bgBright"),a("bgBlueBright",[104,49],"bgBright"),a("bgMagentaBright",[105,49],"bgBright"),a("bgCyanBright",[106,49],"bgBright"),a("bgWhiteBright",[107,49],"bgBright"),e.ansiRegex=Nit,e.hasColor=e.hasAnsi=n=>(e.ansiRegex.lastIndex=0,typeof n=="string"&&n!==""&&e.ansiRegex.test(n)),e.alias=(n,c)=>{let f=typeof c=="string"?e[c]:c;if(typeof f!="function")throw new TypeError("Expected alias to be the name of an existing color (string) or a function");f.stack||(Reflect.defineProperty(f,"name",{value:n}),e.styles[n]=f,f.stack=[n]),Reflect.defineProperty(e,n,{configurable:!0,enumerable:!0,set(p){e.alias(n,p)},get(){let p=h=>s(h,p.stack);return Reflect.setPrototypeOf(p,e),p.stack=this.stack?this.stack.concat(f.stack):f.stack,p}})},e.theme=n=>{if(!Fit(n))throw new TypeError("Expected theme to be an object");for(let c of Object.keys(n))e.alias(c,n[c]);return e},e.alias("unstyle",n=>typeof n=="string"&&n!==""?(e.ansiRegex.lastIndex=0,n.replace(e.ansiRegex,"")):""),e.alias("noop",n=>n),e.none=e.clear=e.noop,e.stripColor=e.unstyle,e.symbols=y0e(),e.define=a,e};mG.exports=E0e();mG.exports.create=E0e});var ra=G(hn=>{"use strict";var Oit=Object.prototype.toString,_c=zu(),I0e=!1,yG=[],C0e={yellow:"blue",cyan:"red",green:"magenta",black:"white",blue:"yellow",red:"cyan",magenta:"green",white:"black"};hn.longest=(e,t)=>e.reduce((r,s)=>Math.max(r,t?s[t].length:s.length),0);hn.hasColor=e=>!!e&&_c.hasColor(e);var RT=hn.isObject=e=>e!==null&&typeof e=="object"&&!Array.isArray(e);hn.nativeType=e=>Oit.call(e).slice(8,-1).toLowerCase().replace(/\s/g,"");hn.isAsyncFn=e=>hn.nativeType(e)==="asyncfunction";hn.isPrimitive=e=>e!=null&&typeof e!="object"&&typeof e!="function";hn.resolve=(e,t,...r)=>typeof t=="function"?t.call(e,...r):t;hn.scrollDown=(e=[])=>[...e.slice(1),e[0]];hn.scrollUp=(e=[])=>[e.pop(),...e];hn.reorder=(e=[])=>{let t=e.slice();return t.sort((r,s)=>r.index>s.index?1:r.index{let s=e.length,a=r===s?0:r<0?s-1:r,n=e[t];e[t]=e[a],e[a]=n};hn.width=(e,t=80)=>{let r=e&&e.columns?e.columns:t;return e&&typeof e.getWindowSize=="function"&&(r=e.getWindowSize()[0]),process.platform==="win32"?r-1:r};hn.height=(e,t=20)=>{let r=e&&e.rows?e.rows:t;return e&&typeof e.getWindowSize=="function"&&(r=e.getWindowSize()[1]),r};hn.wordWrap=(e,t={})=>{if(!e)return e;typeof t=="number"&&(t={width:t});let{indent:r="",newline:s=` -`+r,width:a=80}=t,n=(s+r).match(/[^\S\n]/g)||[];a-=n.length;let c=`.{1,${a}}([\\s\\u200B]+|$)|[^\\s\\u200B]+?([\\s\\u200B]+|$)`,f=e.trim(),p=new RegExp(c,"g"),h=f.match(p)||[];return h=h.map(E=>E.replace(/\n$/,"")),t.padEnd&&(h=h.map(E=>E.padEnd(a," "))),t.padStart&&(h=h.map(E=>E.padStart(a," "))),r+h.join(s)};hn.unmute=e=>{let t=e.stack.find(s=>_c.keys.color.includes(s));return t?_c[t]:e.stack.find(s=>s.slice(2)==="bg")?_c[t.slice(2)]:s=>s};hn.pascal=e=>e?e[0].toUpperCase()+e.slice(1):"";hn.inverse=e=>{if(!e||!e.stack)return e;let t=e.stack.find(s=>_c.keys.color.includes(s));if(t){let s=_c["bg"+hn.pascal(t)];return s?s.black:e}let r=e.stack.find(s=>s.slice(0,2)==="bg");return r?_c[r.slice(2).toLowerCase()]||e:_c.none};hn.complement=e=>{if(!e||!e.stack)return e;let t=e.stack.find(s=>_c.keys.color.includes(s)),r=e.stack.find(s=>s.slice(0,2)==="bg");if(t&&!r)return _c[C0e[t]||t];if(r){let s=r.slice(2).toLowerCase(),a=C0e[s];return a&&_c["bg"+hn.pascal(a)]||e}return _c.none};hn.meridiem=e=>{let t=e.getHours(),r=e.getMinutes(),s=t>=12?"pm":"am";t=t%12;let a=t===0?12:t,n=r<10?"0"+r:r;return a+":"+n+" "+s};hn.set=(e={},t="",r)=>t.split(".").reduce((s,a,n,c)=>{let f=c.length-1>n?s[a]||{}:r;return!hn.isObject(f)&&n{let s=e[t]==null?t.split(".").reduce((a,n)=>a&&a[n],e):e[t];return s??r};hn.mixin=(e,t)=>{if(!RT(e))return t;if(!RT(t))return e;for(let r of Object.keys(t)){let s=Object.getOwnPropertyDescriptor(t,r);if(s.hasOwnProperty("value"))if(e.hasOwnProperty(r)&&RT(s.value)){let a=Object.getOwnPropertyDescriptor(e,r);RT(a.value)?e[r]=hn.merge({},e[r],t[r]):Reflect.defineProperty(e,r,s)}else Reflect.defineProperty(e,r,s);else Reflect.defineProperty(e,r,s)}return e};hn.merge=(...e)=>{let t={};for(let r of e)hn.mixin(t,r);return t};hn.mixinEmitter=(e,t)=>{let r=t.constructor.prototype;for(let s of Object.keys(r)){let a=r[s];typeof a=="function"?hn.define(e,s,a.bind(t)):hn.define(e,s,a)}};hn.onExit=e=>{let t=(r,s)=>{I0e||(I0e=!0,yG.forEach(a=>a()),r===!0&&process.exit(128+s))};yG.length===0&&(process.once("SIGTERM",t.bind(null,!0,15)),process.once("SIGINT",t.bind(null,!0,2)),process.once("exit",t)),yG.push(e)};hn.define=(e,t,r)=>{Reflect.defineProperty(e,t,{value:r})};hn.defineExport=(e,t,r)=>{let s;Reflect.defineProperty(e,t,{enumerable:!0,configurable:!0,set(a){s=a},get(){return s?s():r()}})}});var w0e=G(YI=>{"use strict";YI.ctrl={a:"first",b:"backward",c:"cancel",d:"deleteForward",e:"last",f:"forward",g:"reset",i:"tab",k:"cutForward",l:"reset",n:"newItem",m:"cancel",j:"submit",p:"search",r:"remove",s:"save",u:"undo",w:"cutLeft",x:"toggleCursor",v:"paste"};YI.shift={up:"shiftUp",down:"shiftDown",left:"shiftLeft",right:"shiftRight",tab:"prev"};YI.fn={up:"pageUp",down:"pageDown",left:"pageLeft",right:"pageRight",delete:"deleteForward"};YI.option={b:"backward",f:"forward",d:"cutRight",left:"cutLeft",up:"altUp",down:"altDown"};YI.keys={pageup:"pageUp",pagedown:"pageDown",home:"home",end:"end",cancel:"cancel",delete:"deleteForward",backspace:"delete",down:"down",enter:"submit",escape:"cancel",left:"left",space:"space",number:"number",return:"submit",right:"right",tab:"next",up:"up"}});var S0e=G(($4t,v0e)=>{"use strict";var B0e=Ie("readline"),Lit=w0e(),Mit=/^(?:\x1b)([a-zA-Z0-9])$/,Uit=/^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/,_it={OP:"f1",OQ:"f2",OR:"f3",OS:"f4","[11~":"f1","[12~":"f2","[13~":"f3","[14~":"f4","[[A":"f1","[[B":"f2","[[C":"f3","[[D":"f4","[[E":"f5","[15~":"f5","[17~":"f6","[18~":"f7","[19~":"f8","[20~":"f9","[21~":"f10","[23~":"f11","[24~":"f12","[A":"up","[B":"down","[C":"right","[D":"left","[E":"clear","[F":"end","[H":"home",OA:"up",OB:"down",OC:"right",OD:"left",OE:"clear",OF:"end",OH:"home","[1~":"home","[2~":"insert","[3~":"delete","[4~":"end","[5~":"pageup","[6~":"pagedown","[[5~":"pageup","[[6~":"pagedown","[7~":"home","[8~":"end","[a":"up","[b":"down","[c":"right","[d":"left","[e":"clear","[2$":"insert","[3$":"delete","[5$":"pageup","[6$":"pagedown","[7$":"home","[8$":"end",Oa:"up",Ob:"down",Oc:"right",Od:"left",Oe:"clear","[2^":"insert","[3^":"delete","[5^":"pageup","[6^":"pagedown","[7^":"home","[8^":"end","[Z":"tab"};function Hit(e){return["[a","[b","[c","[d","[e","[2$","[3$","[5$","[6$","[7$","[8$","[Z"].includes(e)}function jit(e){return["Oa","Ob","Oc","Od","Oe","[2^","[3^","[5^","[6^","[7^","[8^"].includes(e)}var TT=(e="",t={})=>{let r,s={name:t.name,ctrl:!1,meta:!1,shift:!1,option:!1,sequence:e,raw:e,...t};if(Buffer.isBuffer(e)?e[0]>127&&e[1]===void 0?(e[0]-=128,e="\x1B"+String(e)):e=String(e):e!==void 0&&typeof e!="string"?e=String(e):e||(e=s.sequence||""),s.sequence=s.sequence||e||s.name,e==="\r")s.raw=void 0,s.name="return";else if(e===` -`)s.name="enter";else if(e===" ")s.name="tab";else if(e==="\b"||e==="\x7F"||e==="\x1B\x7F"||e==="\x1B\b")s.name="backspace",s.meta=e.charAt(0)==="\x1B";else if(e==="\x1B"||e==="\x1B\x1B")s.name="escape",s.meta=e.length===2;else if(e===" "||e==="\x1B ")s.name="space",s.meta=e.length===2;else if(e<="")s.name=String.fromCharCode(e.charCodeAt(0)+97-1),s.ctrl=!0;else if(e.length===1&&e>="0"&&e<="9")s.name="number";else if(e.length===1&&e>="a"&&e<="z")s.name=e;else if(e.length===1&&e>="A"&&e<="Z")s.name=e.toLowerCase(),s.shift=!0;else if(r=Mit.exec(e))s.meta=!0,s.shift=/^[A-Z]$/.test(r[1]);else if(r=Uit.exec(e)){let a=[...e];a[0]==="\x1B"&&a[1]==="\x1B"&&(s.option=!0);let n=[r[1],r[2],r[4],r[6]].filter(Boolean).join(""),c=(r[3]||r[5]||1)-1;s.ctrl=!!(c&4),s.meta=!!(c&10),s.shift=!!(c&1),s.code=n,s.name=_it[n],s.shift=Hit(n)||s.shift,s.ctrl=jit(n)||s.ctrl}return s};TT.listen=(e={},t)=>{let{stdin:r}=e;if(!r||r!==process.stdin&&!r.isTTY)throw new Error("Invalid stream passed");let s=B0e.createInterface({terminal:!0,input:r});B0e.emitKeypressEvents(r,s);let a=(f,p)=>t(f,TT(f,p),s),n=r.isRaw;return r.isTTY&&r.setRawMode(!0),r.on("keypress",a),s.resume(),()=>{r.isTTY&&r.setRawMode(n),r.removeListener("keypress",a),s.pause(),s.close()}};TT.action=(e,t,r)=>{let s={...Lit,...r};return t.ctrl?(t.action=s.ctrl[t.name],t):t.option&&s.option?(t.action=s.option[t.name],t):t.shift?(t.action=s.shift[t.name],t):(t.action=s.keys[t.name],t)};v0e.exports=TT});var b0e=G((e3t,D0e)=>{"use strict";D0e.exports=e=>{e.timers=e.timers||{};let t=e.options.timers;if(t)for(let r of Object.keys(t)){let s=t[r];typeof s=="number"&&(s={interval:s}),Git(e,r,s)}};function Git(e,t,r={}){let s=e.timers[t]={name:t,start:Date.now(),ms:0,tick:0},a=r.interval||120;s.frames=r.frames||[],s.loading=!0;let n=setInterval(()=>{s.ms=Date.now()-s.start,s.tick++,e.render()},a);return s.stop=()=>{s.loading=!1,clearInterval(n)},Reflect.defineProperty(s,"interval",{value:n}),e.once("close",()=>s.stop()),s.stop}});var x0e=G((t3t,P0e)=>{"use strict";var{define:qit,width:Wit}=ra(),EG=class{constructor(t){let r=t.options;qit(this,"_prompt",t),this.type=t.type,this.name=t.name,this.message="",this.header="",this.footer="",this.error="",this.hint="",this.input="",this.cursor=0,this.index=0,this.lines=0,this.tick=0,this.prompt="",this.buffer="",this.width=Wit(r.stdout||process.stdout),Object.assign(this,r),this.name=this.name||this.message,this.message=this.message||this.name,this.symbols=t.symbols,this.styles=t.styles,this.required=new Set,this.cancelled=!1,this.submitted=!1}clone(){let t={...this};return t.status=this.status,t.buffer=Buffer.from(t.buffer),delete t.clone,t}set color(t){this._color=t}get color(){let t=this.prompt.styles;if(this.cancelled)return t.cancelled;if(this.submitted)return t.submitted;let r=this._color||t[this.status];return typeof r=="function"?r:t.pending}set loading(t){this._loading=t}get loading(){return typeof this._loading=="boolean"?this._loading:this.loadingChoices?"choices":!1}get status(){return this.cancelled?"cancelled":this.submitted?"submitted":"pending"}};P0e.exports=EG});var Q0e=G((r3t,k0e)=>{"use strict";var IG=ra(),Io=zu(),CG={default:Io.noop,noop:Io.noop,set inverse(e){this._inverse=e},get inverse(){return this._inverse||IG.inverse(this.primary)},set complement(e){this._complement=e},get complement(){return this._complement||IG.complement(this.primary)},primary:Io.cyan,success:Io.green,danger:Io.magenta,strong:Io.bold,warning:Io.yellow,muted:Io.dim,disabled:Io.gray,dark:Io.dim.gray,underline:Io.underline,set info(e){this._info=e},get info(){return this._info||this.primary},set em(e){this._em=e},get em(){return this._em||this.primary.underline},set heading(e){this._heading=e},get heading(){return this._heading||this.muted.underline},set pending(e){this._pending=e},get pending(){return this._pending||this.primary},set submitted(e){this._submitted=e},get submitted(){return this._submitted||this.success},set cancelled(e){this._cancelled=e},get cancelled(){return this._cancelled||this.danger},set typing(e){this._typing=e},get typing(){return this._typing||this.dim},set placeholder(e){this._placeholder=e},get placeholder(){return this._placeholder||this.primary.dim},set highlight(e){this._highlight=e},get highlight(){return this._highlight||this.inverse}};CG.merge=(e={})=>{e.styles&&typeof e.styles.enabled=="boolean"&&(Io.enabled=e.styles.enabled),e.styles&&typeof e.styles.visible=="boolean"&&(Io.visible=e.styles.visible);let t=IG.merge({},CG,e.styles);delete t.merge;for(let r of Object.keys(Io))t.hasOwnProperty(r)||Reflect.defineProperty(t,r,{get:()=>Io[r]});for(let r of Object.keys(Io.styles))t.hasOwnProperty(r)||Reflect.defineProperty(t,r,{get:()=>Io[r]});return t};k0e.exports=CG});var T0e=G((n3t,R0e)=>{"use strict";var wG=process.platform==="win32",Kp=zu(),Vit=ra(),BG={...Kp.symbols,upDownDoubleArrow:"\u21D5",upDownDoubleArrow2:"\u2B0D",upDownArrow:"\u2195",asterisk:"*",asterism:"\u2042",bulletWhite:"\u25E6",electricArrow:"\u2301",ellipsisLarge:"\u22EF",ellipsisSmall:"\u2026",fullBlock:"\u2588",identicalTo:"\u2261",indicator:Kp.symbols.check,leftAngle:"\u2039",mark:"\u203B",minus:"\u2212",multiplication:"\xD7",obelus:"\xF7",percent:"%",pilcrow:"\xB6",pilcrow2:"\u2761",pencilUpRight:"\u2710",pencilDownRight:"\u270E",pencilRight:"\u270F",plus:"+",plusMinus:"\xB1",pointRight:"\u261E",rightAngle:"\u203A",section:"\xA7",hexagon:{off:"\u2B21",on:"\u2B22",disabled:"\u2B22"},ballot:{on:"\u2611",off:"\u2610",disabled:"\u2612"},stars:{on:"\u2605",off:"\u2606",disabled:"\u2606"},folder:{on:"\u25BC",off:"\u25B6",disabled:"\u25B6"},prefix:{pending:Kp.symbols.question,submitted:Kp.symbols.check,cancelled:Kp.symbols.cross},separator:{pending:Kp.symbols.pointerSmall,submitted:Kp.symbols.middot,cancelled:Kp.symbols.middot},radio:{off:wG?"( )":"\u25EF",on:wG?"(*)":"\u25C9",disabled:wG?"(|)":"\u24BE"},numbers:["\u24EA","\u2460","\u2461","\u2462","\u2463","\u2464","\u2465","\u2466","\u2467","\u2468","\u2469","\u246A","\u246B","\u246C","\u246D","\u246E","\u246F","\u2470","\u2471","\u2472","\u2473","\u3251","\u3252","\u3253","\u3254","\u3255","\u3256","\u3257","\u3258","\u3259","\u325A","\u325B","\u325C","\u325D","\u325E","\u325F","\u32B1","\u32B2","\u32B3","\u32B4","\u32B5","\u32B6","\u32B7","\u32B8","\u32B9","\u32BA","\u32BB","\u32BC","\u32BD","\u32BE","\u32BF"]};BG.merge=e=>{let t=Vit.merge({},Kp.symbols,BG,e.symbols);return delete t.merge,t};R0e.exports=BG});var N0e=G((i3t,F0e)=>{"use strict";var Yit=Q0e(),Kit=T0e(),Jit=ra();F0e.exports=e=>{e.options=Jit.merge({},e.options.theme,e.options),e.symbols=Kit.merge(e.options),e.styles=Yit.merge(e.options)}});var _0e=G((M0e,U0e)=>{"use strict";var O0e=process.env.TERM_PROGRAM==="Apple_Terminal",zit=zu(),vG=ra(),Zu=U0e.exports=M0e,_i="\x1B[",L0e="\x07",SG=!1,_0=Zu.code={bell:L0e,beep:L0e,beginning:`${_i}G`,down:`${_i}J`,esc:_i,getPosition:`${_i}6n`,hide:`${_i}?25l`,line:`${_i}2K`,lineEnd:`${_i}K`,lineStart:`${_i}1K`,restorePosition:_i+(O0e?"8":"u"),savePosition:_i+(O0e?"7":"s"),screen:`${_i}2J`,show:`${_i}?25h`,up:`${_i}1J`},Sm=Zu.cursor={get hidden(){return SG},hide(){return SG=!0,_0.hide},show(){return SG=!1,_0.show},forward:(e=1)=>`${_i}${e}C`,backward:(e=1)=>`${_i}${e}D`,nextLine:(e=1)=>`${_i}E`.repeat(e),prevLine:(e=1)=>`${_i}F`.repeat(e),up:(e=1)=>e?`${_i}${e}A`:"",down:(e=1)=>e?`${_i}${e}B`:"",right:(e=1)=>e?`${_i}${e}C`:"",left:(e=1)=>e?`${_i}${e}D`:"",to(e,t){return t?`${_i}${t+1};${e+1}H`:`${_i}${e+1}G`},move(e=0,t=0){let r="";return r+=e<0?Sm.left(-e):e>0?Sm.right(e):"",r+=t<0?Sm.up(-t):t>0?Sm.down(t):"",r},restore(e={}){let{after:t,cursor:r,initial:s,input:a,prompt:n,size:c,value:f}=e;if(s=vG.isPrimitive(s)?String(s):"",a=vG.isPrimitive(a)?String(a):"",f=vG.isPrimitive(f)?String(f):"",c){let p=Zu.cursor.up(c)+Zu.cursor.to(n.length),h=a.length-r;return h>0&&(p+=Zu.cursor.left(h)),p}if(f||t){let p=!a&&s?-s.length:-a.length+r;return t&&(p-=t.length),a===""&&s&&!n.includes(s)&&(p+=s.length),Zu.cursor.move(p)}}},DG=Zu.erase={screen:_0.screen,up:_0.up,down:_0.down,line:_0.line,lineEnd:_0.lineEnd,lineStart:_0.lineStart,lines(e){let t="";for(let r=0;r{if(!t)return DG.line+Sm.to(0);let r=n=>[...zit.unstyle(n)].length,s=e.split(/\r?\n/),a=0;for(let n of s)a+=1+Math.floor(Math.max(r(n)-1,0)/t);return(DG.line+Sm.prevLine()).repeat(a-1)+DG.line+Sm.to(0)}});var KI=G((s3t,j0e)=>{"use strict";var Zit=Ie("events"),H0e=zu(),bG=S0e(),Xit=b0e(),$it=x0e(),est=N0e(),El=ra(),Dm=_0e(),PG=class e extends Zit{constructor(t={}){super(),this.name=t.name,this.type=t.type,this.options=t,est(this),Xit(this),this.state=new $it(this),this.initial=[t.initial,t.default].find(r=>r!=null),this.stdout=t.stdout||process.stdout,this.stdin=t.stdin||process.stdin,this.scale=t.scale||1,this.term=this.options.term||process.env.TERM_PROGRAM,this.margin=rst(this.options.margin),this.setMaxListeners(0),tst(this)}async keypress(t,r={}){this.keypressed=!0;let s=bG.action(t,bG(t,r),this.options.actions);this.state.keypress=s,this.emit("keypress",t,s),this.emit("state",this.state.clone());let a=this.options[s.action]||this[s.action]||this.dispatch;if(typeof a=="function")return await a.call(this,t,s);this.alert()}alert(){delete this.state.alert,this.options.show===!1?this.emit("alert"):this.stdout.write(Dm.code.beep)}cursorHide(){this.stdout.write(Dm.cursor.hide()),El.onExit(()=>this.cursorShow())}cursorShow(){this.stdout.write(Dm.cursor.show())}write(t){t&&(this.stdout&&this.state.show!==!1&&this.stdout.write(t),this.state.buffer+=t)}clear(t=0){let r=this.state.buffer;this.state.buffer="",!(!r&&!t||this.options.show===!1)&&this.stdout.write(Dm.cursor.down(t)+Dm.clear(r,this.width))}restore(){if(this.state.closed||this.options.show===!1)return;let{prompt:t,after:r,rest:s}=this.sections(),{cursor:a,initial:n="",input:c="",value:f=""}=this,p=this.state.size=s.length,h={after:r,cursor:a,initial:n,input:c,prompt:t,size:p,value:f},E=Dm.cursor.restore(h);E&&this.stdout.write(E)}sections(){let{buffer:t,input:r,prompt:s}=this.state;s=H0e.unstyle(s);let a=H0e.unstyle(t),n=a.indexOf(s),c=a.slice(0,n),p=a.slice(n).split(` -`),h=p[0],E=p[p.length-1],S=(s+(r?" "+r:"")).length,x=St.call(this,this.value),this.result=()=>s.call(this,this.value),typeof r.initial=="function"&&(this.initial=await r.initial.call(this,this)),typeof r.onRun=="function"&&await r.onRun.call(this,this),typeof r.onSubmit=="function"){let a=r.onSubmit.bind(this),n=this.submit.bind(this);delete this.options.onSubmit,this.submit=async()=>(await a(this.name,this.value,this),n())}await this.start(),await this.render()}render(){throw new Error("expected prompt to have a custom render method")}run(){return new Promise(async(t,r)=>{if(this.once("submit",t),this.once("cancel",r),await this.skip())return this.render=()=>{},this.submit();await this.initialize(),this.emit("run")})}async element(t,r,s){let{options:a,state:n,symbols:c,timers:f}=this,p=f&&f[t];n.timer=p;let h=a[t]||n[t]||c[t],E=r&&r[t]!=null?r[t]:await h;if(E==="")return E;let C=await this.resolve(E,n,r,s);return!C&&r&&r[t]?this.resolve(h,n,r,s):C}async prefix(){let t=await this.element("prefix")||this.symbols,r=this.timers&&this.timers.prefix,s=this.state;return s.timer=r,El.isObject(t)&&(t=t[s.status]||t.pending),El.hasColor(t)?t:(this.styles[s.status]||this.styles.pending)(t)}async message(){let t=await this.element("message");return El.hasColor(t)?t:this.styles.strong(t)}async separator(){let t=await this.element("separator")||this.symbols,r=this.timers&&this.timers.separator,s=this.state;s.timer=r;let a=t[s.status]||t.pending||s.separator,n=await this.resolve(a,s);return El.isObject(n)&&(n=n[s.status]||n.pending),El.hasColor(n)?n:this.styles.muted(n)}async pointer(t,r){let s=await this.element("pointer",t,r);if(typeof s=="string"&&El.hasColor(s))return s;if(s){let a=this.styles,n=this.index===r,c=n?a.primary:h=>h,f=await this.resolve(s[n?"on":"off"]||s,this.state),p=El.hasColor(f)?f:c(f);return n?p:" ".repeat(f.length)}}async indicator(t,r){let s=await this.element("indicator",t,r);if(typeof s=="string"&&El.hasColor(s))return s;if(s){let a=this.styles,n=t.enabled===!0,c=n?a.success:a.dark,f=s[n?"on":"off"]||s;return El.hasColor(f)?f:c(f)}return""}body(){return null}footer(){if(this.state.status==="pending")return this.element("footer")}header(){if(this.state.status==="pending")return this.element("header")}async hint(){if(this.state.status==="pending"&&!this.isValue(this.state.input)){let t=await this.element("hint");return El.hasColor(t)?t:this.styles.muted(t)}}error(t){return this.state.submitted?"":t||this.state.error}format(t){return t}result(t){return t}validate(t){return this.options.required===!0?this.isValue(t):!0}isValue(t){return t!=null&&t!==""}resolve(t,...r){return El.resolve(this,t,...r)}get base(){return e.prototype}get style(){return this.styles[this.state.status]}get height(){return this.options.rows||El.height(this.stdout,25)}get width(){return this.options.columns||El.width(this.stdout,80)}get size(){return{width:this.width,height:this.height}}set cursor(t){this.state.cursor=t}get cursor(){return this.state.cursor}set input(t){this.state.input=t}get input(){return this.state.input}set value(t){this.state.value=t}get value(){let{input:t,value:r}=this.state,s=[r,t].find(this.isValue.bind(this));return this.isValue(s)?s:this.initial}static get prompt(){return t=>new this(t).run()}};function tst(e){let t=a=>e[a]===void 0||typeof e[a]=="function",r=["actions","choices","initial","margin","roles","styles","symbols","theme","timers","value"],s=["body","footer","error","header","hint","indicator","message","prefix","separator","skip"];for(let a of Object.keys(e.options)){if(r.includes(a)||/^on[A-Z]/.test(a))continue;let n=e.options[a];typeof n=="function"&&t(a)?s.includes(a)||(e[a]=n.bind(e)):typeof e[a]!="function"&&(e[a]=n)}}function rst(e){typeof e=="number"&&(e=[e,e,e,e]);let t=[].concat(e||[]),r=a=>a%2===0?` -`:" ",s=[];for(let a=0;a<4;a++){let n=r(a);t[a]?s.push(n.repeat(t[a])):s.push("")}return s}j0e.exports=PG});var W0e=G((o3t,q0e)=>{"use strict";var nst=ra(),G0e={default(e,t){return t},checkbox(e,t){throw new Error("checkbox role is not implemented yet")},editable(e,t){throw new Error("editable role is not implemented yet")},expandable(e,t){throw new Error("expandable role is not implemented yet")},heading(e,t){return t.disabled="",t.indicator=[t.indicator," "].find(r=>r!=null),t.message=t.message||"",t},input(e,t){throw new Error("input role is not implemented yet")},option(e,t){return G0e.default(e,t)},radio(e,t){throw new Error("radio role is not implemented yet")},separator(e,t){return t.disabled="",t.indicator=[t.indicator," "].find(r=>r!=null),t.message=t.message||e.symbols.line.repeat(5),t},spacer(e,t){return t}};q0e.exports=(e,t={})=>{let r=nst.merge({},G0e,t.roles);return r[e]||r.default}});var Wv=G((a3t,K0e)=>{"use strict";var ist=zu(),sst=KI(),ost=W0e(),FT=ra(),{reorder:xG,scrollUp:ast,scrollDown:lst,isObject:V0e,swap:cst}=FT,kG=class extends sst{constructor(t){super(t),this.cursorHide(),this.maxSelected=t.maxSelected||1/0,this.multiple=t.multiple||!1,this.initial=t.initial||0,this.delay=t.delay||0,this.longest=0,this.num=""}async initialize(){typeof this.options.initial=="function"&&(this.initial=await this.options.initial.call(this)),await this.reset(!0),await super.initialize()}async reset(){let{choices:t,initial:r,autofocus:s,suggest:a}=this.options;if(this.state._choices=[],this.state.choices=[],this.choices=await Promise.all(await this.toChoices(t)),this.choices.forEach(n=>n.enabled=!1),typeof a!="function"&&this.selectable.length===0)throw new Error("At least one choice must be selectable");V0e(r)&&(r=Object.keys(r)),Array.isArray(r)?(s!=null&&(this.index=this.findIndex(s)),r.forEach(n=>this.enable(this.find(n))),await this.render()):(s!=null&&(r=s),typeof r=="string"&&(r=this.findIndex(r)),typeof r=="number"&&r>-1&&(this.index=Math.max(0,Math.min(r,this.choices.length)),this.enable(this.find(this.index)))),this.isDisabled(this.focused)&&await this.down()}async toChoices(t,r){this.state.loadingChoices=!0;let s=[],a=0,n=async(c,f)=>{typeof c=="function"&&(c=await c.call(this)),c instanceof Promise&&(c=await c);for(let p=0;p(this.state.loadingChoices=!1,c))}async toChoice(t,r,s){if(typeof t=="function"&&(t=await t.call(this,this)),t instanceof Promise&&(t=await t),typeof t=="string"&&(t={name:t}),t.normalized)return t;t.normalized=!0;let a=t.value;if(t=ost(t.role,this.options)(this,t),typeof t.disabled=="string"&&!t.hint&&(t.hint=t.disabled,t.disabled=!0),t.disabled===!0&&t.hint==null&&(t.hint="(disabled)"),t.index!=null)return t;t.name=t.name||t.key||t.title||t.value||t.message,t.message=t.message||t.name||"",t.value=[t.value,t.name].find(this.isValue.bind(this)),t.input="",t.index=r,t.cursor=0,FT.define(t,"parent",s),t.level=s?s.level+1:1,t.indent==null&&(t.indent=s?s.indent+" ":t.indent||""),t.path=s?s.path+"."+t.name:t.name,t.enabled=!!(this.multiple&&!this.isDisabled(t)&&(t.enabled||this.isSelected(t))),this.isDisabled(t)||(this.longest=Math.max(this.longest,ist.unstyle(t.message).length));let c={...t};return t.reset=(f=c.input,p=c.value)=>{for(let h of Object.keys(c))t[h]=c[h];t.input=f,t.value=p},a==null&&typeof t.initial=="function"&&(t.input=await t.initial.call(this,this.state,t,r)),t}async onChoice(t,r){this.emit("choice",t,r,this),typeof t.onChoice=="function"&&await t.onChoice.call(this,this.state,t,r)}async addChoice(t,r,s){let a=await this.toChoice(t,r,s);return this.choices.push(a),this.index=this.choices.length-1,this.limit=this.choices.length,a}async newItem(t,r,s){let a={name:"New choice name?",editable:!0,newChoice:!0,...t},n=await this.addChoice(a,r,s);return n.updateChoice=()=>{delete n.newChoice,n.name=n.message=n.input,n.input="",n.cursor=0},this.render()}indent(t){return t.indent==null?t.level>1?" ".repeat(t.level-1):"":t.indent}dispatch(t,r){if(this.multiple&&this[r.name])return this[r.name]();this.alert()}focus(t,r){return typeof r!="boolean"&&(r=t.enabled),r&&!t.enabled&&this.selected.length>=this.maxSelected?this.alert():(this.index=t.index,t.enabled=r&&!this.isDisabled(t),t)}space(){return this.multiple?(this.toggle(this.focused),this.render()):this.alert()}a(){if(this.maxSelectedr.enabled);return this.choices.forEach(r=>r.enabled=!t),this.render()}i(){return this.choices.length-this.selected.length>this.maxSelected?this.alert():(this.choices.forEach(t=>t.enabled=!t.enabled),this.render())}g(t=this.focused){return this.choices.some(r=>!!r.parent)?(this.toggle(t.parent&&!t.choices?t.parent:t),this.render()):this.a()}toggle(t,r){if(!t.enabled&&this.selected.length>=this.maxSelected)return this.alert();typeof r!="boolean"&&(r=!t.enabled),t.enabled=r,t.choices&&t.choices.forEach(a=>this.toggle(a,r));let s=t.parent;for(;s;){let a=s.choices.filter(n=>this.isDisabled(n));s.enabled=a.every(n=>n.enabled===!0),s=s.parent}return Y0e(this,this.choices),this.emit("toggle",t,this),t}enable(t){return this.selected.length>=this.maxSelected?this.alert():(t.enabled=!this.isDisabled(t),t.choices&&t.choices.forEach(this.enable.bind(this)),t)}disable(t){return t.enabled=!1,t.choices&&t.choices.forEach(this.disable.bind(this)),t}number(t){this.num+=t;let r=s=>{let a=Number(s);if(a>this.choices.length-1)return this.alert();let n=this.focused,c=this.choices.find(f=>a===f.index);if(!c.enabled&&this.selected.length>=this.maxSelected)return this.alert();if(this.visible.indexOf(c)===-1){let f=xG(this.choices),p=f.indexOf(c);if(n.index>p){let h=f.slice(p,p+this.limit),E=f.filter(C=>!h.includes(C));this.choices=h.concat(E)}else{let h=p-this.limit+1;this.choices=f.slice(h).concat(f.slice(0,h))}}return this.index=this.choices.indexOf(c),this.toggle(this.focused),this.render()};return clearTimeout(this.numberTimeout),new Promise(s=>{let a=this.choices.length,n=this.num,c=(f=!1,p)=>{clearTimeout(this.numberTimeout),f&&(p=r(n)),this.num="",s(p)};if(n==="0"||n.length===1&&+(n+"0")>a)return c(!0);if(Number(n)>a)return c(!1,this.alert());this.numberTimeout=setTimeout(()=>c(!0),this.delay)})}home(){return this.choices=xG(this.choices),this.index=0,this.render()}end(){let t=this.choices.length-this.limit,r=xG(this.choices);return this.choices=r.slice(t).concat(r.slice(0,t)),this.index=this.limit-1,this.render()}first(){return this.index=0,this.render()}last(){return this.index=this.visible.length-1,this.render()}prev(){return this.visible.length<=1?this.alert():this.up()}next(){return this.visible.length<=1?this.alert():this.down()}right(){return this.cursor>=this.input.length?this.alert():(this.cursor++,this.render())}left(){return this.cursor<=0?this.alert():(this.cursor--,this.render())}up(){let t=this.choices.length,r=this.visible.length,s=this.index;return this.options.scroll===!1&&s===0?this.alert():t>r&&s===0?this.scrollUp():(this.index=(s-1%t+t)%t,this.isDisabled()?this.up():this.render())}down(){let t=this.choices.length,r=this.visible.length,s=this.index;return this.options.scroll===!1&&s===r-1?this.alert():t>r&&s===r-1?this.scrollDown():(this.index=(s+1)%t,this.isDisabled()?this.down():this.render())}scrollUp(t=0){return this.choices=ast(this.choices),this.index=t,this.isDisabled()?this.up():this.render()}scrollDown(t=this.visible.length-1){return this.choices=lst(this.choices),this.index=t,this.isDisabled()?this.down():this.render()}async shiftUp(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index-1),await this.up(),this.sorting=!1;return}return this.scrollUp(this.index)}async shiftDown(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index+1),await this.down(),this.sorting=!1;return}return this.scrollDown(this.index)}pageUp(){return this.visible.length<=1?this.alert():(this.limit=Math.max(this.limit-1,0),this.index=Math.min(this.limit-1,this.index),this._limit=this.limit,this.isDisabled()?this.up():this.render())}pageDown(){return this.visible.length>=this.choices.length?this.alert():(this.index=Math.max(0,this.index),this.limit=Math.min(this.limit+1,this.choices.length),this._limit=this.limit,this.isDisabled()?this.down():this.render())}swap(t){cst(this.choices,this.index,t)}isDisabled(t=this.focused){return t&&["disabled","collapsed","hidden","completing","readonly"].some(s=>t[s]===!0)?!0:t&&t.role==="heading"}isEnabled(t=this.focused){if(Array.isArray(t))return t.every(r=>this.isEnabled(r));if(t.choices){let r=t.choices.filter(s=>!this.isDisabled(s));return t.enabled&&r.every(s=>this.isEnabled(s))}return t.enabled&&!this.isDisabled(t)}isChoice(t,r){return t.name===r||t.index===Number(r)}isSelected(t){return Array.isArray(this.initial)?this.initial.some(r=>this.isChoice(t,r)):this.isChoice(t,this.initial)}map(t=[],r="value"){return[].concat(t||[]).reduce((s,a)=>(s[a]=this.find(a,r),s),{})}filter(t,r){let a=typeof t=="function"?t:(f,p)=>[f.name,p].includes(t),c=(this.options.multiple?this.state._choices:this.choices).filter(a);return r?c.map(f=>f[r]):c}find(t,r){if(V0e(t))return r?t[r]:t;let a=typeof t=="function"?t:(c,f)=>[c.name,f].includes(t),n=this.choices.find(a);if(n)return r?n[r]:n}findIndex(t){return this.choices.indexOf(this.find(t))}async submit(){let t=this.focused;if(!t)return this.alert();if(t.newChoice)return t.input?(t.updateChoice(),this.render()):this.alert();if(this.choices.some(c=>c.newChoice))return this.alert();let{reorder:r,sort:s}=this.options,a=this.multiple===!0,n=this.selected;return n===void 0?this.alert():(Array.isArray(n)&&r!==!1&&s!==!0&&(n=FT.reorder(n)),this.value=a?n.map(c=>c.name):n.name,super.submit())}set choices(t=[]){this.state._choices=this.state._choices||[],this.state.choices=t;for(let r of t)this.state._choices.some(s=>s.name===r.name)||this.state._choices.push(r);if(!this._initial&&this.options.initial){this._initial=!0;let r=this.initial;if(typeof r=="string"||typeof r=="number"){let s=this.find(r);s&&(this.initial=s.index,this.focus(s,!0))}}}get choices(){return Y0e(this,this.state.choices||[])}set visible(t){this.state.visible=t}get visible(){return(this.state.visible||this.choices).slice(0,this.limit)}set limit(t){this.state.limit=t}get limit(){let{state:t,options:r,choices:s}=this,a=t.limit||this._limit||r.limit||s.length;return Math.min(a,this.height)}set value(t){super.value=t}get value(){return typeof super.value!="string"&&super.value===this.initial?this.input:super.value}set index(t){this.state.index=t}get index(){return Math.max(0,this.state?this.state.index:0)}get enabled(){return this.filter(this.isEnabled.bind(this))}get focused(){let t=this.choices[this.index];return t&&this.state.submitted&&this.multiple!==!0&&(t.enabled=!0),t}get selectable(){return this.choices.filter(t=>!this.isDisabled(t))}get selected(){return this.multiple?this.enabled:this.focused}};function Y0e(e,t){if(t instanceof Promise)return t;if(typeof t=="function"){if(FT.isAsyncFn(t))return t;t=t.call(e,e)}for(let r of t){if(Array.isArray(r.choices)){let s=r.choices.filter(a=>!e.isDisabled(a));r.enabled=s.every(a=>a.enabled===!0)}e.isDisabled(r)===!0&&delete r.enabled}return t}K0e.exports=kG});var H0=G((l3t,J0e)=>{"use strict";var ust=Wv(),QG=ra(),RG=class extends ust{constructor(t){super(t),this.emptyError=this.options.emptyError||"No items were selected"}async dispatch(t,r){if(this.multiple)return this[r.name]?await this[r.name](t,r):await super.dispatch(t,r);this.alert()}separator(){if(this.options.separator)return super.separator();let t=this.styles.muted(this.symbols.ellipsis);return this.state.submitted?super.separator():t}pointer(t,r){return!this.multiple||this.options.pointer?super.pointer(t,r):""}indicator(t,r){return this.multiple?super.indicator(t,r):""}choiceMessage(t,r){let s=this.resolve(t.message,this.state,t,r);return t.role==="heading"&&!QG.hasColor(s)&&(s=this.styles.strong(s)),this.resolve(s,this.state,t,r)}choiceSeparator(){return":"}async renderChoice(t,r){await this.onChoice(t,r);let s=this.index===r,a=await this.pointer(t,r),n=await this.indicator(t,r)+(t.pad||""),c=await this.resolve(t.hint,this.state,t,r);c&&!QG.hasColor(c)&&(c=this.styles.muted(c));let f=this.indent(t),p=await this.choiceMessage(t,r),h=()=>[this.margin[3],f+a+n,p,this.margin[1],c].filter(Boolean).join(" ");return t.role==="heading"?h():t.disabled?(QG.hasColor(p)||(p=this.styles.disabled(p)),h()):(s&&(p=this.styles.em(p)),h())}async renderChoices(){if(this.state.loading==="choices")return this.styles.warning("Loading choices");if(this.state.submitted)return"";let t=this.visible.map(async(n,c)=>await this.renderChoice(n,c)),r=await Promise.all(t);r.length||r.push(this.styles.danger("No matching choices"));let s=this.margin[0]+r.join(` -`),a;return this.options.choicesHeader&&(a=await this.resolve(this.options.choicesHeader,this.state)),[a,s].filter(Boolean).join(` -`)}format(){return!this.state.submitted||this.state.cancelled?"":Array.isArray(this.selected)?this.selected.map(t=>this.styles.primary(t.name)).join(", "):this.styles.primary(this.selected.name)}async render(){let{submitted:t,size:r}=this.state,s="",a=await this.header(),n=await this.prefix(),c=await this.separator(),f=await this.message();this.options.promptLine!==!1&&(s=[n,f,c,""].join(" "),this.state.prompt=s);let p=await this.format(),h=await this.error()||await this.hint(),E=await this.renderChoices(),C=await this.footer();p&&(s+=p),h&&!s.includes(h)&&(s+=" "+h),t&&!p&&!E.trim()&&this.multiple&&this.emptyError!=null&&(s+=this.styles.danger(this.emptyError)),this.clear(r),this.write([a,s,E,C].filter(Boolean).join(` -`)),this.write(this.margin[2]),this.restore()}};J0e.exports=RG});var Z0e=G((c3t,z0e)=>{"use strict";var fst=H0(),Ast=(e,t)=>{let r=e.toLowerCase();return s=>{let n=s.toLowerCase().indexOf(r),c=t(s.slice(n,n+r.length));return n>=0?s.slice(0,n)+c+s.slice(n+r.length):s}},TG=class extends fst{constructor(t){super(t),this.cursorShow()}moveCursor(t){this.state.cursor+=t}dispatch(t){return this.append(t)}space(t){return this.options.multiple?super.space(t):this.append(t)}append(t){let{cursor:r,input:s}=this.state;return this.input=s.slice(0,r)+t+s.slice(r),this.moveCursor(1),this.complete()}delete(){let{cursor:t,input:r}=this.state;return r?(this.input=r.slice(0,t-1)+r.slice(t),this.moveCursor(-1),this.complete()):this.alert()}deleteForward(){let{cursor:t,input:r}=this.state;return r[t]===void 0?this.alert():(this.input=`${r}`.slice(0,t)+`${r}`.slice(t+1),this.complete())}number(t){return this.append(t)}async complete(){this.completing=!0,this.choices=await this.suggest(this.input,this.state._choices),this.state.limit=void 0,this.index=Math.min(Math.max(this.visible.length-1,0),this.index),await this.render(),this.completing=!1}suggest(t=this.input,r=this.state._choices){if(typeof this.options.suggest=="function")return this.options.suggest.call(this,t,r);let s=t.toLowerCase();return r.filter(a=>a.message.toLowerCase().includes(s))}pointer(){return""}format(){if(!this.focused)return this.input;if(this.options.multiple&&this.state.submitted)return this.selected.map(t=>this.styles.primary(t.message)).join(", ");if(this.state.submitted){let t=this.value=this.input=this.focused.value;return this.styles.primary(t)}return this.input}async render(){if(this.state.status!=="pending")return super.render();let t=this.options.highlight?this.options.highlight.bind(this):this.styles.placeholder,r=Ast(this.input,t),s=this.choices;this.choices=s.map(a=>({...a,message:r(a.message)})),await super.render(),this.choices=s}submit(){return this.options.multiple&&(this.value=this.selected.map(t=>t.name)),super.submit()}};z0e.exports=TG});var NG=G((u3t,X0e)=>{"use strict";var FG=ra();X0e.exports=(e,t={})=>{e.cursorHide();let{input:r="",initial:s="",pos:a,showCursor:n=!0,color:c}=t,f=c||e.styles.placeholder,p=FG.inverse(e.styles.primary),h=T=>p(e.styles.black(T)),E=r,C=" ",S=h(C);if(e.blink&&e.blink.off===!0&&(h=T=>T,S=""),n&&a===0&&s===""&&r==="")return h(C);if(n&&a===0&&(r===s||r===""))return h(s[0])+f(s.slice(1));s=FG.isPrimitive(s)?`${s}`:"",r=FG.isPrimitive(r)?`${r}`:"";let x=s&&s.startsWith(r)&&s!==r,I=x?h(s[r.length]):S;if(a!==r.length&&n===!0&&(E=r.slice(0,a)+h(r[a])+r.slice(a+1),I=""),n===!1&&(I=""),x){let T=e.styles.unstyle(E+I);return E+I+f(s.slice(T.length))}return E+I}});var NT=G((f3t,$0e)=>{"use strict";var pst=zu(),hst=H0(),gst=NG(),OG=class extends hst{constructor(t){super({...t,multiple:!0}),this.type="form",this.initial=this.options.initial,this.align=[this.options.align,"right"].find(r=>r!=null),this.emptyError="",this.values={}}async reset(t){return await super.reset(),t===!0&&(this._index=this.index),this.index=this._index,this.values={},this.choices.forEach(r=>r.reset&&r.reset()),this.render()}dispatch(t){return!!t&&this.append(t)}append(t){let r=this.focused;if(!r)return this.alert();let{cursor:s,input:a}=r;return r.value=r.input=a.slice(0,s)+t+a.slice(s),r.cursor++,this.render()}delete(){let t=this.focused;if(!t||t.cursor<=0)return this.alert();let{cursor:r,input:s}=t;return t.value=t.input=s.slice(0,r-1)+s.slice(r),t.cursor--,this.render()}deleteForward(){let t=this.focused;if(!t)return this.alert();let{cursor:r,input:s}=t;if(s[r]===void 0)return this.alert();let a=`${s}`.slice(0,r)+`${s}`.slice(r+1);return t.value=t.input=a,this.render()}right(){let t=this.focused;return t?t.cursor>=t.input.length?this.alert():(t.cursor++,this.render()):this.alert()}left(){let t=this.focused;return t?t.cursor<=0?this.alert():(t.cursor--,this.render()):this.alert()}space(t,r){return this.dispatch(t,r)}number(t,r){return this.dispatch(t,r)}next(){let t=this.focused;if(!t)return this.alert();let{initial:r,input:s}=t;return r&&r.startsWith(s)&&s!==r?(t.value=t.input=r,t.cursor=t.value.length,this.render()):super.next()}prev(){let t=this.focused;return t?t.cursor===0?super.prev():(t.value=t.input="",t.cursor=0,this.render()):this.alert()}separator(){return""}format(t){return this.state.submitted?"":super.format(t)}pointer(){return""}indicator(t){return t.input?"\u29BF":"\u2299"}async choiceSeparator(t,r){let s=await this.resolve(t.separator,this.state,t,r)||":";return s?" "+this.styles.disabled(s):""}async renderChoice(t,r){await this.onChoice(t,r);let{state:s,styles:a}=this,{cursor:n,initial:c="",name:f,hint:p,input:h=""}=t,{muted:E,submitted:C,primary:S,danger:x}=a,I=p,T=this.index===r,O=t.validate||(()=>!0),U=await this.choiceSeparator(t,r),Y=t.message;this.align==="right"&&(Y=Y.padStart(this.longest+1," ")),this.align==="left"&&(Y=Y.padEnd(this.longest+1," "));let te=this.values[f]=h||c,ie=h?"success":"dark";await O.call(t,te,this.state)!==!0&&(ie="danger");let ue=a[ie],ae=ue(await this.indicator(t,r))+(t.pad||""),de=this.indent(t),Ae=()=>[de,ae,Y+U,h,I].filter(Boolean).join(" ");if(s.submitted)return Y=pst.unstyle(Y),h=C(h),I="",Ae();if(t.format)h=await t.format.call(this,h,t,r);else{let Ce=this.styles.muted;h=gst(this,{input:h,initial:c,pos:n,showCursor:T,color:Ce})}return this.isValue(h)||(h=this.styles.muted(this.symbols.ellipsis)),t.result&&(this.values[f]=await t.result.call(this,te,t,r)),T&&(Y=S(Y)),t.error?h+=(h?" ":"")+x(t.error.trim()):t.hint&&(h+=(h?" ":"")+E(t.hint.trim())),Ae()}async submit(){return this.value=this.values,super.base.submit.call(this)}};$0e.exports=OG});var LG=G((A3t,tge)=>{"use strict";var dst=NT(),mst=()=>{throw new Error("expected prompt to have a custom authenticate method")},ege=(e=mst)=>{class t extends dst{constructor(s){super(s)}async submit(){this.value=await e.call(this,this.values,this.state),super.base.submit.call(this)}static create(s){return ege(s)}}return t};tge.exports=ege()});var ige=G((p3t,nge)=>{"use strict";var yst=LG();function Est(e,t){return e.username===this.options.username&&e.password===this.options.password}var rge=(e=Est)=>{let t=[{name:"username",message:"username"},{name:"password",message:"password",format(s){return this.options.showPassword?s:(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(s.length))}}];class r extends yst.create(e){constructor(a){super({...a,choices:t})}static create(a){return rge(a)}}return r};nge.exports=rge()});var OT=G((h3t,sge)=>{"use strict";var Ist=KI(),{isPrimitive:Cst,hasColor:wst}=ra(),MG=class extends Ist{constructor(t){super(t),this.cursorHide()}async initialize(){let t=await this.resolve(this.initial,this.state);this.input=await this.cast(t),await super.initialize()}dispatch(t){return this.isValue(t)?(this.input=t,this.submit()):this.alert()}format(t){let{styles:r,state:s}=this;return s.submitted?r.success(t):r.primary(t)}cast(t){return this.isTrue(t)}isTrue(t){return/^[ty1]/i.test(t)}isFalse(t){return/^[fn0]/i.test(t)}isValue(t){return Cst(t)&&(this.isTrue(t)||this.isFalse(t))}async hint(){if(this.state.status==="pending"){let t=await this.element("hint");return wst(t)?t:this.styles.muted(t)}}async render(){let{input:t,size:r}=this.state,s=await this.prefix(),a=await this.separator(),n=await this.message(),c=this.styles.muted(this.default),f=[s,n,c,a].filter(Boolean).join(" ");this.state.prompt=f;let p=await this.header(),h=this.value=this.cast(t),E=await this.format(h),C=await this.error()||await this.hint(),S=await this.footer();C&&!f.includes(C)&&(E+=" "+C),f+=" "+E,this.clear(r),this.write([p,f,S].filter(Boolean).join(` -`)),this.restore()}set value(t){super.value=t}get value(){return this.cast(super.value)}};sge.exports=MG});var age=G((g3t,oge)=>{"use strict";var Bst=OT(),UG=class extends Bst{constructor(t){super(t),this.default=this.options.default||(this.initial?"(Y/n)":"(y/N)")}};oge.exports=UG});var cge=G((d3t,lge)=>{"use strict";var vst=H0(),Sst=NT(),JI=Sst.prototype,_G=class extends vst{constructor(t){super({...t,multiple:!0}),this.align=[this.options.align,"left"].find(r=>r!=null),this.emptyError="",this.values={}}dispatch(t,r){let s=this.focused,a=s.parent||{};return!s.editable&&!a.editable&&(t==="a"||t==="i")?super[t]():JI.dispatch.call(this,t,r)}append(t,r){return JI.append.call(this,t,r)}delete(t,r){return JI.delete.call(this,t,r)}space(t){return this.focused.editable?this.append(t):super.space()}number(t){return this.focused.editable?this.append(t):super.number(t)}next(){return this.focused.editable?JI.next.call(this):super.next()}prev(){return this.focused.editable?JI.prev.call(this):super.prev()}async indicator(t,r){let s=t.indicator||"",a=t.editable?s:super.indicator(t,r);return await this.resolve(a,this.state,t,r)||""}indent(t){return t.role==="heading"?"":t.editable?" ":" "}async renderChoice(t,r){return t.indent="",t.editable?JI.renderChoice.call(this,t,r):super.renderChoice(t,r)}error(){return""}footer(){return this.state.error}async validate(){let t=!0;for(let r of this.choices){if(typeof r.validate!="function"||r.role==="heading")continue;let s=r.parent?this.value[r.parent.name]:this.value;if(r.editable?s=r.value===r.name?r.initial||"":r.value:this.isDisabled(r)||(s=r.enabled===!0),t=await r.validate(s,this.state),t!==!0)break}return t!==!0&&(this.state.error=typeof t=="string"?t:"Invalid Input"),t}submit(){if(this.focused.newChoice===!0)return super.submit();if(this.choices.some(t=>t.newChoice))return this.alert();this.value={};for(let t of this.choices){let r=t.parent?this.value[t.parent.name]:this.value;if(t.role==="heading"){this.value[t.name]={};continue}t.editable?r[t.name]=t.value===t.name?t.initial||"":t.value:this.isDisabled(t)||(r[t.name]=t.enabled===!0)}return this.base.submit.call(this)}};lge.exports=_G});var bm=G((m3t,uge)=>{"use strict";var Dst=KI(),bst=NG(),{isPrimitive:Pst}=ra(),HG=class extends Dst{constructor(t){super(t),this.initial=Pst(this.initial)?String(this.initial):"",this.initial&&this.cursorHide(),this.state.prevCursor=0,this.state.clipboard=[]}async keypress(t,r={}){let s=this.state.prevKeypress;return this.state.prevKeypress=r,this.options.multiline===!0&&r.name==="return"&&(!s||s.name!=="return")?this.append(` -`,r):super.keypress(t,r)}moveCursor(t){this.cursor+=t}reset(){return this.input=this.value="",this.cursor=0,this.render()}dispatch(t,r){if(!t||r.ctrl||r.code)return this.alert();this.append(t)}append(t){let{cursor:r,input:s}=this.state;this.input=`${s}`.slice(0,r)+t+`${s}`.slice(r),this.moveCursor(String(t).length),this.render()}insert(t){this.append(t)}delete(){let{cursor:t,input:r}=this.state;if(t<=0)return this.alert();this.input=`${r}`.slice(0,t-1)+`${r}`.slice(t),this.moveCursor(-1),this.render()}deleteForward(){let{cursor:t,input:r}=this.state;if(r[t]===void 0)return this.alert();this.input=`${r}`.slice(0,t)+`${r}`.slice(t+1),this.render()}cutForward(){let t=this.cursor;if(this.input.length<=t)return this.alert();this.state.clipboard.push(this.input.slice(t)),this.input=this.input.slice(0,t),this.render()}cutLeft(){let t=this.cursor;if(t===0)return this.alert();let r=this.input.slice(0,t),s=this.input.slice(t),a=r.split(" ");this.state.clipboard.push(a.pop()),this.input=a.join(" "),this.cursor=this.input.length,this.input+=s,this.render()}paste(){if(!this.state.clipboard.length)return this.alert();this.insert(this.state.clipboard.pop()),this.render()}toggleCursor(){this.state.prevCursor?(this.cursor=this.state.prevCursor,this.state.prevCursor=0):(this.state.prevCursor=this.cursor,this.cursor=0),this.render()}first(){this.cursor=0,this.render()}last(){this.cursor=this.input.length-1,this.render()}next(){let t=this.initial!=null?String(this.initial):"";if(!t||!t.startsWith(this.input))return this.alert();this.input=this.initial,this.cursor=this.initial.length,this.render()}prev(){if(!this.input)return this.alert();this.reset()}backward(){return this.left()}forward(){return this.right()}right(){return this.cursor>=this.input.length?this.alert():(this.moveCursor(1),this.render())}left(){return this.cursor<=0?this.alert():(this.moveCursor(-1),this.render())}isValue(t){return!!t}async format(t=this.value){let r=await this.resolve(this.initial,this.state);return this.state.submitted?this.styles.submitted(t||r):bst(this,{input:t,initial:r,pos:this.cursor})}async render(){let t=this.state.size,r=await this.prefix(),s=await this.separator(),a=await this.message(),n=[r,a,s].filter(Boolean).join(" ");this.state.prompt=n;let c=await this.header(),f=await this.format(),p=await this.error()||await this.hint(),h=await this.footer();p&&!f.includes(p)&&(f+=" "+p),n+=" "+f,this.clear(t),this.write([c,n,h].filter(Boolean).join(` -`)),this.restore()}};uge.exports=HG});var Age=G((y3t,fge)=>{"use strict";var xst=e=>e.filter((t,r)=>e.lastIndexOf(t)===r),LT=e=>xst(e).filter(Boolean);fge.exports=(e,t={},r="")=>{let{past:s=[],present:a=""}=t,n,c;switch(e){case"prev":case"undo":return n=s.slice(0,s.length-1),c=s[s.length-1]||"",{past:LT([r,...n]),present:c};case"next":case"redo":return n=s.slice(1),c=s[0]||"",{past:LT([...n,r]),present:c};case"save":return{past:LT([...s,r]),present:""};case"remove":return c=LT(s.filter(f=>f!==r)),a="",c.length&&(a=c.pop()),{past:c,present:a};default:throw new Error(`Invalid action: "${e}"`)}}});var GG=G((E3t,hge)=>{"use strict";var kst=bm(),pge=Age(),jG=class extends kst{constructor(t){super(t);let r=this.options.history;if(r&&r.store){let s=r.values||this.initial;this.autosave=!!r.autosave,this.store=r.store,this.data=this.store.get("values")||{past:[],present:s},this.initial=this.data.present||this.data.past[this.data.past.length-1]}}completion(t){return this.store?(this.data=pge(t,this.data,this.input),this.data.present?(this.input=this.data.present,this.cursor=this.input.length,this.render()):this.alert()):this.alert()}altUp(){return this.completion("prev")}altDown(){return this.completion("next")}prev(){return this.save(),super.prev()}save(){this.store&&(this.data=pge("save",this.data,this.input),this.store.set("values",this.data))}submit(){return this.store&&this.autosave===!0&&this.save(),super.submit()}};hge.exports=jG});var dge=G((I3t,gge)=>{"use strict";var Qst=bm(),qG=class extends Qst{format(){return""}};gge.exports=qG});var yge=G((C3t,mge)=>{"use strict";var Rst=bm(),WG=class extends Rst{constructor(t={}){super(t),this.sep=this.options.separator||/, */,this.initial=t.initial||""}split(t=this.value){return t?String(t).split(this.sep):[]}format(){let t=this.state.submitted?this.styles.primary:r=>r;return this.list.map(t).join(", ")}async submit(t){let r=this.state.error||await this.validate(this.list,this.state);return r!==!0?(this.state.error=r,super.submit()):(this.value=this.list,super.submit())}get list(){return this.split()}};mge.exports=WG});var Ige=G((w3t,Ege)=>{"use strict";var Tst=H0(),VG=class extends Tst{constructor(t){super({...t,multiple:!0})}};Ege.exports=VG});var KG=G((B3t,Cge)=>{"use strict";var Fst=bm(),YG=class extends Fst{constructor(t={}){super({style:"number",...t}),this.min=this.isValue(t.min)?this.toNumber(t.min):-1/0,this.max=this.isValue(t.max)?this.toNumber(t.max):1/0,this.delay=t.delay!=null?t.delay:1e3,this.float=t.float!==!1,this.round=t.round===!0||t.float===!1,this.major=t.major||10,this.minor=t.minor||1,this.initial=t.initial!=null?t.initial:"",this.input=String(this.initial),this.cursor=this.input.length,this.cursorShow()}append(t){return!/[-+.]/.test(t)||t==="."&&this.input.includes(".")?this.alert("invalid number"):super.append(t)}number(t){return super.append(t)}next(){return this.input&&this.input!==this.initial?this.alert():this.isValue(this.initial)?(this.input=this.initial,this.cursor=String(this.initial).length,this.render()):this.alert()}up(t){let r=t||this.minor,s=this.toNumber(this.input);return s>this.max+r?this.alert():(this.input=`${s+r}`,this.render())}down(t){let r=t||this.minor,s=this.toNumber(this.input);return sthis.isValue(r));return this.value=this.toNumber(t||0),super.submit()}};Cge.exports=YG});var Bge=G((v3t,wge)=>{wge.exports=KG()});var Sge=G((S3t,vge)=>{"use strict";var Nst=bm(),JG=class extends Nst{constructor(t){super(t),this.cursorShow()}format(t=this.input){return this.keypressed?(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(t.length)):""}};vge.exports=JG});var Pge=G((D3t,bge)=>{"use strict";var Ost=zu(),Lst=Wv(),Dge=ra(),zG=class extends Lst{constructor(t={}){super(t),this.widths=[].concat(t.messageWidth||50),this.align=[].concat(t.align||"left"),this.linebreak=t.linebreak||!1,this.edgeLength=t.edgeLength||3,this.newline=t.newline||` - `;let r=t.startNumber||1;typeof this.scale=="number"&&(this.scaleKey=!1,this.scale=Array(this.scale).fill(0).map((s,a)=>({name:a+r})))}async reset(){return this.tableized=!1,await super.reset(),this.render()}tableize(){if(this.tableized===!0)return;this.tableized=!0;let t=0;for(let r of this.choices){t=Math.max(t,r.message.length),r.scaleIndex=r.initial||2,r.scale=[];for(let s=0;s=this.scale.length-1?this.alert():(t.scaleIndex++,this.render())}left(){let t=this.focused;return t.scaleIndex<=0?this.alert():(t.scaleIndex--,this.render())}indent(){return""}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.index)).join(", "):""}pointer(){return""}renderScaleKey(){return this.scaleKey===!1||this.state.submitted?"":["",...this.scale.map(s=>` ${s.name} - ${s.message}`)].map(s=>this.styles.muted(s)).join(` -`)}renderScaleHeading(t){let r=this.scale.map(p=>p.name);typeof this.options.renderScaleHeading=="function"&&(r=this.options.renderScaleHeading.call(this,t));let s=this.scaleLength-r.join("").length,a=Math.round(s/(r.length-1)),c=r.map(p=>this.styles.strong(p)).join(" ".repeat(a)),f=" ".repeat(this.widths[0]);return this.margin[3]+f+this.margin[1]+c}scaleIndicator(t,r,s){if(typeof this.options.scaleIndicator=="function")return this.options.scaleIndicator.call(this,t,r,s);let a=t.scaleIndex===r.index;return r.disabled?this.styles.hint(this.symbols.radio.disabled):a?this.styles.success(this.symbols.radio.on):this.symbols.radio.off}renderScale(t,r){let s=t.scale.map(n=>this.scaleIndicator(t,n,r)),a=this.term==="Hyper"?"":" ";return s.join(a+this.symbols.line.repeat(this.edgeLength))}async renderChoice(t,r){await this.onChoice(t,r);let s=this.index===r,a=await this.pointer(t,r),n=await t.hint;n&&!Dge.hasColor(n)&&(n=this.styles.muted(n));let c=I=>this.margin[3]+I.replace(/\s+$/,"").padEnd(this.widths[0]," "),f=this.newline,p=this.indent(t),h=await this.resolve(t.message,this.state,t,r),E=await this.renderScale(t,r),C=this.margin[1]+this.margin[3];this.scaleLength=Ost.unstyle(E).length,this.widths[0]=Math.min(this.widths[0],this.width-this.scaleLength-C.length);let x=Dge.wordWrap(h,{width:this.widths[0],newline:f}).split(` -`).map(I=>c(I)+this.margin[1]);return s&&(E=this.styles.info(E),x=x.map(I=>this.styles.info(I))),x[0]+=E,this.linebreak&&x.push(""),[p+a,x.join(` -`)].filter(Boolean)}async renderChoices(){if(this.state.submitted)return"";this.tableize();let t=this.visible.map(async(a,n)=>await this.renderChoice(a,n)),r=await Promise.all(t),s=await this.renderScaleHeading();return this.margin[0]+[s,...r.map(a=>a.join(" "))].join(` -`)}async render(){let{submitted:t,size:r}=this.state,s=await this.prefix(),a=await this.separator(),n=await this.message(),c="";this.options.promptLine!==!1&&(c=[s,n,a,""].join(" "),this.state.prompt=c);let f=await this.header(),p=await this.format(),h=await this.renderScaleKey(),E=await this.error()||await this.hint(),C=await this.renderChoices(),S=await this.footer(),x=this.emptyError;p&&(c+=p),E&&!c.includes(E)&&(c+=" "+E),t&&!p&&!C.trim()&&this.multiple&&x!=null&&(c+=this.styles.danger(x)),this.clear(r),this.write([f,c,h,C,S].filter(Boolean).join(` -`)),this.state.submitted||this.write(this.margin[2]),this.restore()}submit(){this.value={};for(let t of this.choices)this.value[t.name]=t.scaleIndex;return this.base.submit.call(this)}};bge.exports=zG});var Qge=G((b3t,kge)=>{"use strict";var xge=zu(),Mst=(e="")=>typeof e=="string"?e.replace(/^['"]|['"]$/g,""):"",XG=class{constructor(t){this.name=t.key,this.field=t.field||{},this.value=Mst(t.initial||this.field.initial||""),this.message=t.message||this.name,this.cursor=0,this.input="",this.lines=[]}},Ust=async(e={},t={},r=s=>s)=>{let s=new Set,a=e.fields||[],n=e.template,c=[],f=[],p=[],h=1;typeof n=="function"&&(n=await n());let E=-1,C=()=>n[++E],S=()=>n[E+1],x=I=>{I.line=h,c.push(I)};for(x({type:"bos",value:""});Eie.name===U.key);U.field=a.find(ie=>ie.name===U.key),te||(te=new XG(U),f.push(te)),te.lines.push(U.line-1);continue}let T=c[c.length-1];T.type==="text"&&T.line===h?T.value+=I:x({type:"text",value:I})}return x({type:"eos",value:""}),{input:n,tabstops:c,unique:s,keys:p,items:f}};kge.exports=async e=>{let t=e.options,r=new Set(t.required===!0?[]:t.required||[]),s={...t.values,...t.initial},{tabstops:a,items:n,keys:c}=await Ust(t,s),f=ZG("result",e,t),p=ZG("format",e,t),h=ZG("validate",e,t,!0),E=e.isValue.bind(e);return async(C={},S=!1)=>{let x=0;C.required=r,C.items=n,C.keys=c,C.output="";let I=async(Y,te,ie,ue)=>{let ae=await h(Y,te,ie,ue);return ae===!1?"Invalid field "+ie.name:ae};for(let Y of a){let te=Y.value,ie=Y.key;if(Y.type!=="template"){te&&(C.output+=te);continue}if(Y.type==="template"){let ue=n.find(Ee=>Ee.name===ie);t.required===!0&&C.required.add(ue.name);let ae=[ue.input,C.values[ue.value],ue.value,te].find(E),Ae=(ue.field||{}).message||Y.inner;if(S){let Ee=await I(C.values[ie],C,ue,x);if(Ee&&typeof Ee=="string"||Ee===!1){C.invalid.set(ie,Ee);continue}C.invalid.delete(ie);let g=await f(C.values[ie],C,ue,x);C.output+=xge.unstyle(g);continue}ue.placeholder=!1;let Ce=te;te=await p(te,C,ue,x),ae!==te?(C.values[ie]=ae,te=e.styles.typing(ae),C.missing.delete(Ae)):(C.values[ie]=void 0,ae=`<${Ae}>`,te=e.styles.primary(ae),ue.placeholder=!0,C.required.has(ie)&&C.missing.add(Ae)),C.missing.has(Ae)&&C.validating&&(te=e.styles.warning(ae)),C.invalid.has(ie)&&C.validating&&(te=e.styles.danger(ae)),x===C.index&&(Ce!==te?te=e.styles.underline(te):te=e.styles.heading(xge.unstyle(te))),x++}te&&(C.output+=te)}let T=C.output.split(` -`).map(Y=>" "+Y),O=n.length,U=0;for(let Y of n)C.invalid.has(Y.name)&&Y.lines.forEach(te=>{T[te][0]===" "&&(T[te]=C.styles.danger(C.symbols.bullet)+T[te].slice(1))}),e.isValue(C.values[Y.name])&&U++;return C.completed=(U/O*100).toFixed(0),C.output=T.join(` -`),C.output}};function ZG(e,t,r,s){return(a,n,c,f)=>typeof c.field[e]=="function"?c.field[e].call(t,a,n,c,f):[s,a].find(p=>t.isValue(p))}});var Tge=G((P3t,Rge)=>{"use strict";var _st=zu(),Hst=Qge(),jst=KI(),$G=class extends jst{constructor(t){super(t),this.cursorHide(),this.reset(!0)}async initialize(){this.interpolate=await Hst(this),await super.initialize()}async reset(t){this.state.keys=[],this.state.invalid=new Map,this.state.missing=new Set,this.state.completed=0,this.state.values={},t!==!0&&(await this.initialize(),await this.render())}moveCursor(t){let r=this.getItem();this.cursor+=t,r.cursor+=t}dispatch(t,r){if(!r.code&&!r.ctrl&&t!=null&&this.getItem()){this.append(t,r);return}this.alert()}append(t,r){let s=this.getItem(),a=s.input.slice(0,this.cursor),n=s.input.slice(this.cursor);this.input=s.input=`${a}${t}${n}`,this.moveCursor(1),this.render()}delete(){let t=this.getItem();if(this.cursor<=0||!t.input)return this.alert();let r=t.input.slice(this.cursor),s=t.input.slice(0,this.cursor-1);this.input=t.input=`${s}${r}`,this.moveCursor(-1),this.render()}increment(t){return t>=this.state.keys.length-1?0:t+1}decrement(t){return t<=0?this.state.keys.length-1:t-1}first(){this.state.index=0,this.render()}last(){this.state.index=this.state.keys.length-1,this.render()}right(){if(this.cursor>=this.input.length)return this.alert();this.moveCursor(1),this.render()}left(){if(this.cursor<=0)return this.alert();this.moveCursor(-1),this.render()}prev(){this.state.index=this.decrement(this.state.index),this.getItem(),this.render()}next(){this.state.index=this.increment(this.state.index),this.getItem(),this.render()}up(){this.prev()}down(){this.next()}format(t){let r=this.state.completed<100?this.styles.warning:this.styles.success;return this.state.submitted===!0&&this.state.completed!==100&&(r=this.styles.danger),r(`${this.state.completed}% completed`)}async render(){let{index:t,keys:r=[],submitted:s,size:a}=this.state,n=[this.options.newline,` -`].find(Y=>Y!=null),c=await this.prefix(),f=await this.separator(),p=await this.message(),h=[c,p,f].filter(Boolean).join(" ");this.state.prompt=h;let E=await this.header(),C=await this.error()||"",S=await this.hint()||"",x=s?"":await this.interpolate(this.state),I=this.state.key=r[t]||"",T=await this.format(I),O=await this.footer();T&&(h+=" "+T),S&&!T&&this.state.completed===0&&(h+=" "+S),this.clear(a);let U=[E,h,x,O,C.trim()];this.write(U.filter(Boolean).join(n)),this.restore()}getItem(t){let{items:r,keys:s,index:a}=this.state,n=r.find(c=>c.name===s[a]);return n&&n.input!=null&&(this.input=n.input,this.cursor=n.cursor),n}async submit(){typeof this.interpolate!="function"&&await this.initialize(),await this.interpolate(this.state,!0);let{invalid:t,missing:r,output:s,values:a}=this.state;if(t.size){let f="";for(let[p,h]of t)f+=`Invalid ${p}: ${h} -`;return this.state.error=f,super.submit()}if(r.size)return this.state.error="Required: "+[...r.keys()].join(", "),super.submit();let c=_st.unstyle(s).split(` -`).map(f=>f.slice(1)).join(` -`);return this.value={values:a,result:c},super.submit()}};Rge.exports=$G});var Nge=G((x3t,Fge)=>{"use strict";var Gst="(Use + to sort)",qst=H0(),e5=class extends qst{constructor(t){super({...t,reorder:!1,sort:!0,multiple:!0}),this.state.hint=[this.options.hint,Gst].find(this.isValue.bind(this))}indicator(){return""}async renderChoice(t,r){let s=await super.renderChoice(t,r),a=this.symbols.identicalTo+" ",n=this.index===r&&this.sorting?this.styles.muted(a):" ";return this.options.drag===!1&&(n=""),this.options.numbered===!0?n+`${r+1} - `+s:n+s}get selected(){return this.choices}submit(){return this.value=this.choices.map(t=>t.value),super.submit()}};Fge.exports=e5});var Lge=G((k3t,Oge)=>{"use strict";var Wst=Wv(),t5=class extends Wst{constructor(t={}){if(super(t),this.emptyError=t.emptyError||"No items were selected",this.term=process.env.TERM_PROGRAM,!this.options.header){let r=["","4 - Strongly Agree","3 - Agree","2 - Neutral","1 - Disagree","0 - Strongly Disagree",""];r=r.map(s=>this.styles.muted(s)),this.state.header=r.join(` - `)}}async toChoices(...t){if(this.createdScales)return!1;this.createdScales=!0;let r=await super.toChoices(...t);for(let s of r)s.scale=Vst(5,this.options),s.scaleIdx=2;return r}dispatch(){this.alert()}space(){let t=this.focused,r=t.scale[t.scaleIdx],s=r.selected;return t.scale.forEach(a=>a.selected=!1),r.selected=!s,this.render()}indicator(){return""}pointer(){return""}separator(){return this.styles.muted(this.symbols.ellipsis)}right(){let t=this.focused;return t.scaleIdx>=t.scale.length-1?this.alert():(t.scaleIdx++,this.render())}left(){let t=this.focused;return t.scaleIdx<=0?this.alert():(t.scaleIdx--,this.render())}indent(){return" "}async renderChoice(t,r){await this.onChoice(t,r);let s=this.index===r,a=this.term==="Hyper",n=a?9:8,c=a?"":" ",f=this.symbols.line.repeat(n),p=" ".repeat(n+(a?0:1)),h=te=>(te?this.styles.success("\u25C9"):"\u25EF")+c,E=r+1+".",C=s?this.styles.heading:this.styles.noop,S=await this.resolve(t.message,this.state,t,r),x=this.indent(t),I=x+t.scale.map((te,ie)=>h(ie===t.scaleIdx)).join(f),T=te=>te===t.scaleIdx?C(te):te,O=x+t.scale.map((te,ie)=>T(ie)).join(p),U=()=>[E,S].filter(Boolean).join(" "),Y=()=>[U(),I,O," "].filter(Boolean).join(` -`);return s&&(I=this.styles.cyan(I),O=this.styles.cyan(O)),Y()}async renderChoices(){if(this.state.submitted)return"";let t=this.visible.map(async(s,a)=>await this.renderChoice(s,a)),r=await Promise.all(t);return r.length||r.push(this.styles.danger("No matching choices")),r.join(` -`)}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.scaleIdx)).join(", "):""}async render(){let{submitted:t,size:r}=this.state,s=await this.prefix(),a=await this.separator(),n=await this.message(),c=[s,n,a].filter(Boolean).join(" ");this.state.prompt=c;let f=await this.header(),p=await this.format(),h=await this.error()||await this.hint(),E=await this.renderChoices(),C=await this.footer();(p||!h)&&(c+=" "+p),h&&!c.includes(h)&&(c+=" "+h),t&&!p&&!E&&this.multiple&&this.type!=="form"&&(c+=this.styles.danger(this.emptyError)),this.clear(r),this.write([c,f,E,C].filter(Boolean).join(` -`)),this.restore()}submit(){this.value={};for(let t of this.choices)this.value[t.name]=t.scaleIdx;return this.base.submit.call(this)}};function Vst(e,t={}){if(Array.isArray(t.scale))return t.scale.map(s=>({...s}));let r=[];for(let s=1;s{Mge.exports=GG()});var Hge=G((R3t,_ge)=>{"use strict";var Yst=OT(),r5=class extends Yst{async initialize(){await super.initialize(),this.value=this.initial=!!this.options.initial,this.disabled=this.options.disabled||"no",this.enabled=this.options.enabled||"yes",await this.render()}reset(){this.value=this.initial,this.render()}delete(){this.alert()}toggle(){this.value=!this.value,this.render()}enable(){if(this.value===!0)return this.alert();this.value=!0,this.render()}disable(){if(this.value===!1)return this.alert();this.value=!1,this.render()}up(){this.toggle()}down(){this.toggle()}right(){this.toggle()}left(){this.toggle()}next(){this.toggle()}prev(){this.toggle()}dispatch(t="",r){switch(t.toLowerCase()){case" ":return this.toggle();case"1":case"y":case"t":return this.enable();case"0":case"n":case"f":return this.disable();default:return this.alert()}}format(){let t=s=>this.styles.primary.underline(s);return[this.value?this.disabled:t(this.disabled),this.value?t(this.enabled):this.enabled].join(this.styles.muted(" / "))}async render(){let{size:t}=this.state,r=await this.header(),s=await this.prefix(),a=await this.separator(),n=await this.message(),c=await this.format(),f=await this.error()||await this.hint(),p=await this.footer(),h=[s,n,a,c].join(" ");this.state.prompt=h,f&&!h.includes(f)&&(h+=" "+f),this.clear(t),this.write([r,h,p].filter(Boolean).join(` -`)),this.write(this.margin[2]),this.restore()}};_ge.exports=r5});var Gge=G((T3t,jge)=>{"use strict";var Kst=H0(),n5=class extends Kst{constructor(t){if(super(t),typeof this.options.correctChoice!="number"||this.options.correctChoice<0)throw new Error("Please specify the index of the correct answer from the list of choices")}async toChoices(t,r){let s=await super.toChoices(t,r);if(s.length<2)throw new Error("Please give at least two choices to the user");if(this.options.correctChoice>s.length)throw new Error("Please specify the index of the correct answer from the list of choices");return s}check(t){return t.index===this.options.correctChoice}async result(t){return{selectedAnswer:t,correctAnswer:this.options.choices[this.options.correctChoice].value,correct:await this.check(this.state)}}};jge.exports=n5});var Wge=G(i5=>{"use strict";var qge=ra(),Ts=(e,t)=>{qge.defineExport(i5,e,t),qge.defineExport(i5,e.toLowerCase(),t)};Ts("AutoComplete",()=>Z0e());Ts("BasicAuth",()=>ige());Ts("Confirm",()=>age());Ts("Editable",()=>cge());Ts("Form",()=>NT());Ts("Input",()=>GG());Ts("Invisible",()=>dge());Ts("List",()=>yge());Ts("MultiSelect",()=>Ige());Ts("Numeral",()=>Bge());Ts("Password",()=>Sge());Ts("Scale",()=>Pge());Ts("Select",()=>H0());Ts("Snippet",()=>Tge());Ts("Sort",()=>Nge());Ts("Survey",()=>Lge());Ts("Text",()=>Uge());Ts("Toggle",()=>Hge());Ts("Quiz",()=>Gge())});var Yge=G((N3t,Vge)=>{Vge.exports={ArrayPrompt:Wv(),AuthPrompt:LG(),BooleanPrompt:OT(),NumberPrompt:KG(),StringPrompt:bm()}});var Yv=G((O3t,Jge)=>{"use strict";var Kge=Ie("assert"),o5=Ie("events"),j0=ra(),Xu=class extends o5{constructor(t,r){super(),this.options=j0.merge({},t),this.answers={...r}}register(t,r){if(j0.isObject(t)){for(let a of Object.keys(t))this.register(a,t[a]);return this}Kge.equal(typeof r,"function","expected a function");let s=t.toLowerCase();return r.prototype instanceof this.Prompt?this.prompts[s]=r:this.prompts[s]=r(this.Prompt,this),this}async prompt(t=[]){for(let r of[].concat(t))try{typeof r=="function"&&(r=await r.call(this)),await this.ask(j0.merge({},this.options,r))}catch(s){return Promise.reject(s)}return this.answers}async ask(t){typeof t=="function"&&(t=await t.call(this));let r=j0.merge({},this.options,t),{type:s,name:a}=t,{set:n,get:c}=j0;if(typeof s=="function"&&(s=await s.call(this,t,this.answers)),!s)return this.answers[a];Kge(this.prompts[s],`Prompt "${s}" is not registered`);let f=new this.prompts[s](r),p=c(this.answers,a);f.state.answers=this.answers,f.enquirer=this,a&&f.on("submit",E=>{this.emit("answer",a,E,f),n(this.answers,a,E)});let h=f.emit.bind(f);return f.emit=(...E)=>(this.emit.call(this,...E),h(...E)),this.emit("prompt",f,this),r.autofill&&p!=null?(f.value=f.input=p,r.autofill==="show"&&await f.submit()):p=f.value=await f.run(),p}use(t){return t.call(this,this),this}set Prompt(t){this._Prompt=t}get Prompt(){return this._Prompt||this.constructor.Prompt}get prompts(){return this.constructor.prompts}static set Prompt(t){this._Prompt=t}static get Prompt(){return this._Prompt||KI()}static get prompts(){return Wge()}static get types(){return Yge()}static get prompt(){let t=(r,...s)=>{let a=new this(...s),n=a.emit.bind(a);return a.emit=(...c)=>(t.emit(...c),n(...c)),a.prompt(r)};return j0.mixinEmitter(t,new o5),t}};j0.mixinEmitter(Xu,new o5);var s5=Xu.prompts;for(let e of Object.keys(s5)){let t=e.toLowerCase(),r=s=>new s5[e](s).run();Xu.prompt[t]=r,Xu[t]=r,Xu[e]||Reflect.defineProperty(Xu,e,{get:()=>s5[e]})}var Vv=e=>{j0.defineExport(Xu,e,()=>Xu.types[e])};Vv("ArrayPrompt");Vv("AuthPrompt");Vv("BooleanPrompt");Vv("NumberPrompt");Vv("StringPrompt");Jge.exports=Xu});var nde=G((sHt,not)=>{not.exports={name:"@yarnpkg/cli",version:"4.13.0",license:"BSD-2-Clause",main:"./sources/index.ts",exports:{".":"./sources/index.ts","./polyfills":"./sources/polyfills.ts","./package.json":"./package.json"},dependencies:{"@yarnpkg/core":"workspace:^","@yarnpkg/fslib":"workspace:^","@yarnpkg/libzip":"workspace:^","@yarnpkg/parsers":"workspace:^","@yarnpkg/plugin-catalog":"workspace:^","@yarnpkg/plugin-compat":"workspace:^","@yarnpkg/plugin-constraints":"workspace:^","@yarnpkg/plugin-dlx":"workspace:^","@yarnpkg/plugin-essentials":"workspace:^","@yarnpkg/plugin-exec":"workspace:^","@yarnpkg/plugin-file":"workspace:^","@yarnpkg/plugin-git":"workspace:^","@yarnpkg/plugin-github":"workspace:^","@yarnpkg/plugin-http":"workspace:^","@yarnpkg/plugin-init":"workspace:^","@yarnpkg/plugin-interactive-tools":"workspace:^","@yarnpkg/plugin-jsr":"workspace:^","@yarnpkg/plugin-link":"workspace:^","@yarnpkg/plugin-nm":"workspace:^","@yarnpkg/plugin-npm":"workspace:^","@yarnpkg/plugin-npm-cli":"workspace:^","@yarnpkg/plugin-pack":"workspace:^","@yarnpkg/plugin-patch":"workspace:^","@yarnpkg/plugin-pnp":"workspace:^","@yarnpkg/plugin-pnpm":"workspace:^","@yarnpkg/plugin-stage":"workspace:^","@yarnpkg/plugin-typescript":"workspace:^","@yarnpkg/plugin-version":"workspace:^","@yarnpkg/plugin-workspace-tools":"workspace:^","@yarnpkg/shell":"workspace:^","ci-info":"^4.0.0",clipanion:"^4.0.0-rc.2",semver:"^7.1.2",tslib:"^2.4.0",typanion:"^3.14.0"},devDependencies:{"@types/semver":"^7.1.0","@yarnpkg/builder":"workspace:^","@yarnpkg/monorepo":"workspace:^","@yarnpkg/pnpify":"workspace:^"},peerDependencies:{"@yarnpkg/core":"workspace:^"},scripts:{postpack:"rm -rf lib",prepack:'run build:compile "$(pwd)"',"build:cli+hook":"run build:pnp:hook && builder build bundle","build:cli":"builder build bundle","run:cli":"builder run","update-local":"run build:cli --no-git-hash && rsync -a --delete bundles/ bin/"},publishConfig:{main:"./lib/index.js",bin:null,exports:{".":"./lib/index.js","./package.json":"./package.json"}},files:["/lib/**/*","!/lib/pluginConfiguration.*","!/lib/cli.*"],"@yarnpkg/builder":{bundles:{standard:["@yarnpkg/plugin-essentials","@yarnpkg/plugin-catalog","@yarnpkg/plugin-compat","@yarnpkg/plugin-constraints","@yarnpkg/plugin-dlx","@yarnpkg/plugin-exec","@yarnpkg/plugin-file","@yarnpkg/plugin-git","@yarnpkg/plugin-github","@yarnpkg/plugin-http","@yarnpkg/plugin-init","@yarnpkg/plugin-interactive-tools","@yarnpkg/plugin-jsr","@yarnpkg/plugin-link","@yarnpkg/plugin-nm","@yarnpkg/plugin-npm","@yarnpkg/plugin-npm-cli","@yarnpkg/plugin-pack","@yarnpkg/plugin-patch","@yarnpkg/plugin-pnp","@yarnpkg/plugin-pnpm","@yarnpkg/plugin-stage","@yarnpkg/plugin-typescript","@yarnpkg/plugin-version","@yarnpkg/plugin-workspace-tools"]}},repository:{type:"git",url:"git+https://github.com/yarnpkg/berry.git",directory:"packages/yarnpkg-cli"},engines:{node:">=18.12.0"}}});var C5=G((LGt,gde)=>{"use strict";gde.exports=function(t,r){r===!0&&(r=0);var s="";if(typeof t=="string")try{s=new URL(t).protocol}catch{}else t&&t.constructor===URL&&(s=t.protocol);var a=s.split(/\:|\+/).filter(Boolean);return typeof r=="number"?a[r]:a}});var mde=G((MGt,dde)=>{"use strict";var Bot=C5();function vot(e){var t={protocols:[],protocol:null,port:null,resource:"",host:"",user:"",password:"",pathname:"",hash:"",search:"",href:e,query:{},parse_failed:!1};try{var r=new URL(e);t.protocols=Bot(r),t.protocol=t.protocols[0],t.port=r.port,t.resource=r.hostname,t.host=r.host,t.user=r.username||"",t.password=r.password||"",t.pathname=r.pathname,t.hash=r.hash.slice(1),t.search=r.search.slice(1),t.href=r.href,t.query=Object.fromEntries(r.searchParams)}catch{t.protocols=["file"],t.protocol=t.protocols[0],t.port="",t.resource="",t.user="",t.pathname="",t.hash="",t.search="",t.href=e,t.query={},t.parse_failed=!0}return t}dde.exports=vot});var Ide=G((UGt,Ede)=>{"use strict";var Sot=mde();function Dot(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var bot=Dot(Sot),Pot="text/plain",xot="us-ascii",yde=(e,t)=>t.some(r=>r instanceof RegExp?r.test(e):r===e),kot=(e,{stripHash:t})=>{let r=/^data:(?[^,]*?),(?[^#]*?)(?:#(?.*))?$/.exec(e);if(!r)throw new Error(`Invalid URL: ${e}`);let{type:s,data:a,hash:n}=r.groups,c=s.split(";");n=t?"":n;let f=!1;c[c.length-1]==="base64"&&(c.pop(),f=!0);let p=(c.shift()||"").toLowerCase(),E=[...c.map(C=>{let[S,x=""]=C.split("=").map(I=>I.trim());return S==="charset"&&(x=x.toLowerCase(),x===xot)?"":`${S}${x?`=${x}`:""}`}).filter(Boolean)];return f&&E.push("base64"),(E.length>0||p&&p!==Pot)&&E.unshift(p),`data:${E.join(";")},${f?a.trim():a}${n?`#${n}`:""}`};function Qot(e,t){if(t={defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripTextFragment:!0,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeSingleSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0,...t},e=e.trim(),/^data:/i.test(e))return kot(e,t);if(/^view-source:/i.test(e))throw new Error("`view-source:` is not supported as it is a non-standard protocol");let r=e.startsWith("//");!r&&/^\.*\//.test(e)||(e=e.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,t.defaultProtocol));let a=new URL(e);if(t.forceHttp&&t.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(t.forceHttp&&a.protocol==="https:"&&(a.protocol="http:"),t.forceHttps&&a.protocol==="http:"&&(a.protocol="https:"),t.stripAuthentication&&(a.username="",a.password=""),t.stripHash?a.hash="":t.stripTextFragment&&(a.hash=a.hash.replace(/#?:~:text.*?$/i,"")),a.pathname){let c=/\b[a-z][a-z\d+\-.]{1,50}:\/\//g,f=0,p="";for(;;){let E=c.exec(a.pathname);if(!E)break;let C=E[0],S=E.index,x=a.pathname.slice(f,S);p+=x.replace(/\/{2,}/g,"/"),p+=C,f=S+C.length}let h=a.pathname.slice(f,a.pathname.length);p+=h.replace(/\/{2,}/g,"/"),a.pathname=p}if(a.pathname)try{a.pathname=decodeURI(a.pathname)}catch{}if(t.removeDirectoryIndex===!0&&(t.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(t.removeDirectoryIndex)&&t.removeDirectoryIndex.length>0){let c=a.pathname.split("/"),f=c[c.length-1];yde(f,t.removeDirectoryIndex)&&(c=c.slice(0,-1),a.pathname=c.slice(1).join("/")+"/")}if(a.hostname&&(a.hostname=a.hostname.replace(/\.$/,""),t.stripWWW&&/^www\.(?!www\.)[a-z\-\d]{1,63}\.[a-z.\-\d]{2,63}$/.test(a.hostname)&&(a.hostname=a.hostname.replace(/^www\./,""))),Array.isArray(t.removeQueryParameters))for(let c of[...a.searchParams.keys()])yde(c,t.removeQueryParameters)&&a.searchParams.delete(c);if(t.removeQueryParameters===!0&&(a.search=""),t.sortQueryParameters){a.searchParams.sort();try{a.search=decodeURIComponent(a.search)}catch{}}t.removeTrailingSlash&&(a.pathname=a.pathname.replace(/\/$/,""));let n=e;return e=a.toString(),!t.removeSingleSlash&&a.pathname==="/"&&!n.endsWith("/")&&a.hash===""&&(e=e.replace(/\/$/,"")),(t.removeTrailingSlash||a.pathname==="/")&&a.hash===""&&t.removeSingleSlash&&(e=e.replace(/\/$/,"")),r&&!t.normalizeProtocol&&(e=e.replace(/^http:\/\//,"//")),t.stripProtocol&&(e=e.replace(/^(?:https?:)?\/\//,"")),e}var w5=(e,t=!1)=>{let r=/^(?:([a-z_][a-z0-9_-]{0,31})@|https?:\/\/)([\w\.\-@]+)[\/:]([\~,\.\w,\-,\_,\/]+?(?:\.git|\/)?)$/,s=n=>{let c=new Error(n);throw c.subject_url=e,c};(typeof e!="string"||!e.trim())&&s("Invalid url."),e.length>w5.MAX_INPUT_LENGTH&&s("Input exceeds maximum length. If needed, change the value of parseUrl.MAX_INPUT_LENGTH."),t&&(typeof t!="object"&&(t={stripHash:!1}),e=Qot(e,t));let a=bot.default(e);if(a.parse_failed){let n=a.href.match(r);n?(a.protocols=["ssh"],a.protocol="ssh",a.resource=n[2],a.host=n[2],a.user=n[1],a.pathname=`/${n[3]}`,a.parse_failed=!1):s("URL parsing failed.")}return a};w5.MAX_INPUT_LENGTH=2048;Ede.exports=w5});var Bde=G((_Gt,wde)=>{"use strict";var Rot=C5();function Cde(e){if(Array.isArray(e))return e.indexOf("ssh")!==-1||e.indexOf("rsync")!==-1;if(typeof e!="string")return!1;var t=Rot(e);if(e=e.substring(e.indexOf("://")+3),Cde(t))return!0;var r=new RegExp(".([a-zA-Z\\d]+):(\\d+)/");return!e.match(r)&&e.indexOf("@"){"use strict";var Tot=Ide(),vde=Bde();function Fot(e){var t=Tot(e);return t.token="",t.password==="x-oauth-basic"?t.token=t.user:t.user==="x-token-auth"&&(t.token=t.password),vde(t.protocols)||t.protocols.length===0&&vde(e)?t.protocol="ssh":t.protocols.length?t.protocol=t.protocols[0]:(t.protocol="file",t.protocols=["file"]),t.href=t.href.replace(/\/$/,""),t}Sde.exports=Fot});var Pde=G((jGt,bde)=>{"use strict";var Not=Dde();function B5(e){if(typeof e!="string")throw new Error("The url must be a string.");var t=/^([a-z\d-]{1,39})\/([-\.\w]{1,100})$/i;t.test(e)&&(e="https://github.com/"+e);var r=Not(e),s=r.resource.split("."),a=null;switch(r.toString=function(O){return B5.stringify(this,O)},r.source=s.length>2?s.slice(1-s.length).join("."):r.source=r.resource,r.git_suffix=/\.git$/.test(r.pathname),r.name=decodeURIComponent((r.pathname||r.href).replace(/(^\/)|(\/$)/g,"").replace(/\.git$/,"")),r.owner=decodeURIComponent(r.user),r.source){case"git.cloudforge.com":r.owner=r.user,r.organization=s[0],r.source="cloudforge.com";break;case"visualstudio.com":if(r.resource==="vs-ssh.visualstudio.com"){a=r.name.split("/"),a.length===4&&(r.organization=a[1],r.owner=a[2],r.name=a[3],r.full_name=a[2]+"/"+a[3]);break}else{a=r.name.split("/"),a.length===2?(r.owner=a[1],r.name=a[1],r.full_name="_git/"+r.name):a.length===3?(r.name=a[2],a[0]==="DefaultCollection"?(r.owner=a[2],r.organization=a[0],r.full_name=r.organization+"/_git/"+r.name):(r.owner=a[0],r.full_name=r.owner+"/_git/"+r.name)):a.length===4&&(r.organization=a[0],r.owner=a[1],r.name=a[3],r.full_name=r.organization+"/"+r.owner+"/_git/"+r.name);break}case"dev.azure.com":case"azure.com":if(r.resource==="ssh.dev.azure.com"){a=r.name.split("/"),a.length===4&&(r.organization=a[1],r.owner=a[2],r.name=a[3]);break}else{a=r.name.split("/"),a.length===5?(r.organization=a[0],r.owner=a[1],r.name=a[4],r.full_name="_git/"+r.name):a.length===3?(r.name=a[2],a[0]==="DefaultCollection"?(r.owner=a[2],r.organization=a[0],r.full_name=r.organization+"/_git/"+r.name):(r.owner=a[0],r.full_name=r.owner+"/_git/"+r.name)):a.length===4&&(r.organization=a[0],r.owner=a[1],r.name=a[3],r.full_name=r.organization+"/"+r.owner+"/_git/"+r.name),r.query&&r.query.path&&(r.filepath=r.query.path.replace(/^\/+/g,"")),r.query&&r.query.version&&(r.ref=r.query.version.replace(/^GB/,""));break}default:a=r.name.split("/");var n=a.length-1;if(a.length>=2){var c=a.indexOf("-",2),f=a.indexOf("blob",2),p=a.indexOf("tree",2),h=a.indexOf("commit",2),E=a.indexOf("src",2),C=a.indexOf("raw",2),S=a.indexOf("edit",2);n=c>0?c-1:f>0?f-1:p>0?p-1:h>0?h-1:E>0?E-1:C>0?C-1:S>0?S-1:n,r.owner=a.slice(0,n).join("/"),r.name=a[n],h&&(r.commit=a[n+2])}r.ref="",r.filepathtype="",r.filepath="";var x=a.length>n&&a[n+1]==="-"?n+1:n;a.length>x+2&&["raw","src","blob","tree","edit"].indexOf(a[x+1])>=0&&(r.filepathtype=a[x+1],r.ref=a[x+2],a.length>x+3&&(r.filepath=a.slice(x+3).join("/"))),r.organization=r.owner;break}r.full_name||(r.full_name=r.owner,r.name&&(r.full_name&&(r.full_name+="/"),r.full_name+=r.name)),r.owner.startsWith("scm/")&&(r.source="bitbucket-server",r.owner=r.owner.replace("scm/",""),r.organization=r.owner,r.full_name=r.owner+"/"+r.name);var I=/(projects|users)\/(.*?)\/repos\/(.*?)((\/.*$)|$)/,T=I.exec(r.pathname);return T!=null&&(r.source="bitbucket-server",T[1]==="users"?r.owner="~"+T[2]:r.owner=T[2],r.organization=r.owner,r.name=T[3],a=T[4].split("/"),a.length>1&&(["raw","browse"].indexOf(a[1])>=0?(r.filepathtype=a[1],a.length>2&&(r.filepath=a.slice(2).join("/"))):a[1]==="commits"&&a.length>2&&(r.commit=a[2])),r.full_name=r.owner+"/"+r.name,r.query.at?r.ref=r.query.at:r.ref=""),r}B5.stringify=function(e,t){t=t||(e.protocols&&e.protocols.length?e.protocols.join("+"):e.protocol);var r=e.port?":"+e.port:"",s=e.user||"git",a=e.git_suffix?".git":"";switch(t){case"ssh":return r?"ssh://"+s+"@"+e.resource+r+"/"+e.full_name+a:s+"@"+e.resource+":"+e.full_name+a;case"git+ssh":case"ssh+git":case"ftp":case"ftps":return t+"://"+s+"@"+e.resource+r+"/"+e.full_name+a;case"http":case"https":var n=e.token?Oot(e):e.user&&(e.protocols.includes("http")||e.protocols.includes("https"))?e.user+"@":"";return t+"://"+n+e.resource+r+"/"+Lot(e)+a;default:return e.href}};function Oot(e){switch(e.source){case"bitbucket.org":return"x-token-auth:"+e.token+"@";default:return e.token+"@"}}function Lot(e){switch(e.source){case"bitbucket-server":return"scm/"+e.full_name;default:return""+e.full_name}}bde.exports=B5});function tat(e,t){return t===1&&eat.has(e[0])}function nS(e){let t=Array.isArray(e)?e:Ou(e);return t.map((s,a)=>Xot.test(s)?`[${s}]`:$ot.test(s)&&!tat(t,a)?`.${s}`:`[${JSON.stringify(s)}]`).join("").replace(/^\./,"")}function rat(e,t){let r=[];if(t.methodName!==null&&r.push(pe.pretty(e,t.methodName,pe.Type.CODE)),t.file!==null){let s=[];s.push(pe.pretty(e,t.file,pe.Type.PATH)),t.line!==null&&(s.push(pe.pretty(e,t.line,pe.Type.NUMBER)),t.column!==null&&s.push(pe.pretty(e,t.column,pe.Type.NUMBER))),r.push(`(${s.join(pe.pretty(e,":","grey"))})`)}return r.join(" ")}function jT(e,{manifestUpdates:t,reportedErrors:r},{fix:s}={}){let a=new Map,n=new Map,c=[...r.keys()].map(f=>[f,new Map]);for(let[f,p]of[...c,...t]){let h=r.get(f)?.map(x=>({text:x,fixable:!1}))??[],E=!1,C=e.getWorkspaceByCwd(f),S=C.manifest.exportTo({});for(let[x,I]of p){if(I.size>1){let T=[...I].map(([O,U])=>{let Y=pe.pretty(e.configuration,O,pe.Type.INSPECT),te=U.size>0?rat(e.configuration,U.values().next().value):null;return te!==null?` -${Y} at ${te}`:` -${Y}`}).join("");h.push({text:`Conflict detected in constraint targeting ${pe.pretty(e.configuration,x,pe.Type.CODE)}; conflicting values are:${T}`,fixable:!1})}else{let[[T]]=I,O=ba(S,x);if(JSON.stringify(O)===JSON.stringify(T))continue;if(!s){let U=typeof O>"u"?`Missing field ${pe.pretty(e.configuration,x,pe.Type.CODE)}; expected ${pe.pretty(e.configuration,T,pe.Type.INSPECT)}`:typeof T>"u"?`Extraneous field ${pe.pretty(e.configuration,x,pe.Type.CODE)} currently set to ${pe.pretty(e.configuration,O,pe.Type.INSPECT)}`:`Invalid field ${pe.pretty(e.configuration,x,pe.Type.CODE)}; expected ${pe.pretty(e.configuration,T,pe.Type.INSPECT)}, found ${pe.pretty(e.configuration,O,pe.Type.INSPECT)}`;h.push({text:U,fixable:!0});continue}typeof T>"u"?u0(S,x):Vd(S,x,T),E=!0}E&&a.set(C,S)}h.length>0&&n.set(C,h)}return{changedWorkspaces:a,remainingErrors:n}}function Gde(e,{configuration:t}){let r={children:[]};for(let[s,a]of e){let n=[];for(let f of a){let p=f.text.split(/\n/);f.fixable&&(p[0]=`${pe.pretty(t,"\u2699","gray")} ${p[0]}`),n.push({value:pe.tuple(pe.Type.NO_HINT,p[0]),children:p.slice(1).map(h=>({value:pe.tuple(pe.Type.NO_HINT,h)}))})}let c={value:pe.tuple(pe.Type.LOCATOR,s.anchoredLocator),children:Ge.sortMap(n,f=>f.value[1])};r.children.push(c)}return r.children=Ge.sortMap(r.children,s=>s.value[1]),r}var OC,Xot,$ot,eat,iS=Ze(()=>{qe();Jl();OC=class{constructor(t){this.indexedFields=t;this.items=[];this.indexes={};this.clear()}clear(){this.items=[];for(let t of this.indexedFields)this.indexes[t]=new Map}insert(t){this.items.push(t);for(let r of this.indexedFields){let s=Object.hasOwn(t,r)?t[r]:void 0;if(typeof s>"u")continue;Ge.getArrayWithDefault(this.indexes[r],s).push(t)}return t}find(t){if(typeof t>"u")return this.items;let r=Object.entries(t);if(r.length===0)return this.items;let s=[],a;for(let[c,f]of r){let p=c,h=Object.hasOwn(this.indexes,p)?this.indexes[p]:void 0;if(typeof h>"u"){s.push([p,f]);continue}let E=new Set(h.get(f)??[]);if(E.size===0)return[];if(typeof a>"u")a=E;else for(let C of a)E.has(C)||a.delete(C);if(a.size===0)break}let n=[...a??[]];return s.length>0&&(n=n.filter(c=>{for(let[f,p]of s)if(!(typeof p<"u"?Object.hasOwn(c,f)&&c[f]===p:Object.hasOwn(c,f)===!1))return!1;return!0})),n}},Xot=/^[0-9]+$/,$ot=/^[a-zA-Z0-9_]+$/,eat=new Set(["scripts",...Ut.allDependencies])});var qde=G((qqt,H5)=>{var nat;(function(e){var t=function(){return{"append/2":[new e.type.Rule(new e.type.Term("append",[new e.type.Var("X"),new e.type.Var("L")]),new e.type.Term("foldl",[new e.type.Term("append",[]),new e.type.Var("X"),new e.type.Term("[]",[]),new e.type.Var("L")]))],"append/3":[new e.type.Rule(new e.type.Term("append",[new e.type.Term("[]",[]),new e.type.Var("X"),new e.type.Var("X")]),null),new e.type.Rule(new e.type.Term("append",[new e.type.Term(".",[new e.type.Var("H"),new e.type.Var("T")]),new e.type.Var("X"),new e.type.Term(".",[new e.type.Var("H"),new e.type.Var("S")])]),new e.type.Term("append",[new e.type.Var("T"),new e.type.Var("X"),new e.type.Var("S")]))],"member/2":[new e.type.Rule(new e.type.Term("member",[new e.type.Var("X"),new e.type.Term(".",[new e.type.Var("X"),new e.type.Var("_")])]),null),new e.type.Rule(new e.type.Term("member",[new e.type.Var("X"),new e.type.Term(".",[new e.type.Var("_"),new e.type.Var("Xs")])]),new e.type.Term("member",[new e.type.Var("X"),new e.type.Var("Xs")]))],"permutation/2":[new e.type.Rule(new e.type.Term("permutation",[new e.type.Term("[]",[]),new e.type.Term("[]",[])]),null),new e.type.Rule(new e.type.Term("permutation",[new e.type.Term(".",[new e.type.Var("H"),new e.type.Var("T")]),new e.type.Var("S")]),new e.type.Term(",",[new e.type.Term("permutation",[new e.type.Var("T"),new e.type.Var("P")]),new e.type.Term(",",[new e.type.Term("append",[new e.type.Var("X"),new e.type.Var("Y"),new e.type.Var("P")]),new e.type.Term("append",[new e.type.Var("X"),new e.type.Term(".",[new e.type.Var("H"),new e.type.Var("Y")]),new e.type.Var("S")])])]))],"maplist/2":[new e.type.Rule(new e.type.Term("maplist",[new e.type.Var("_"),new e.type.Term("[]",[])]),null),new e.type.Rule(new e.type.Term("maplist",[new e.type.Var("P"),new e.type.Term(".",[new e.type.Var("X"),new e.type.Var("Xs")])]),new e.type.Term(",",[new e.type.Term("call",[new e.type.Var("P"),new e.type.Var("X")]),new e.type.Term("maplist",[new e.type.Var("P"),new e.type.Var("Xs")])]))],"maplist/3":[new e.type.Rule(new e.type.Term("maplist",[new e.type.Var("_"),new e.type.Term("[]",[]),new e.type.Term("[]",[])]),null),new e.type.Rule(new e.type.Term("maplist",[new e.type.Var("P"),new e.type.Term(".",[new e.type.Var("A"),new e.type.Var("As")]),new e.type.Term(".",[new e.type.Var("B"),new e.type.Var("Bs")])]),new e.type.Term(",",[new e.type.Term("call",[new e.type.Var("P"),new e.type.Var("A"),new e.type.Var("B")]),new e.type.Term("maplist",[new e.type.Var("P"),new e.type.Var("As"),new e.type.Var("Bs")])]))],"maplist/4":[new e.type.Rule(new e.type.Term("maplist",[new e.type.Var("_"),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[])]),null),new e.type.Rule(new e.type.Term("maplist",[new e.type.Var("P"),new e.type.Term(".",[new e.type.Var("A"),new e.type.Var("As")]),new e.type.Term(".",[new e.type.Var("B"),new e.type.Var("Bs")]),new e.type.Term(".",[new e.type.Var("C"),new e.type.Var("Cs")])]),new e.type.Term(",",[new e.type.Term("call",[new e.type.Var("P"),new e.type.Var("A"),new e.type.Var("B"),new e.type.Var("C")]),new e.type.Term("maplist",[new e.type.Var("P"),new e.type.Var("As"),new e.type.Var("Bs"),new e.type.Var("Cs")])]))],"maplist/5":[new e.type.Rule(new e.type.Term("maplist",[new e.type.Var("_"),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[])]),null),new e.type.Rule(new e.type.Term("maplist",[new e.type.Var("P"),new e.type.Term(".",[new e.type.Var("A"),new e.type.Var("As")]),new e.type.Term(".",[new e.type.Var("B"),new e.type.Var("Bs")]),new e.type.Term(".",[new e.type.Var("C"),new e.type.Var("Cs")]),new e.type.Term(".",[new e.type.Var("D"),new e.type.Var("Ds")])]),new e.type.Term(",",[new e.type.Term("call",[new e.type.Var("P"),new e.type.Var("A"),new e.type.Var("B"),new e.type.Var("C"),new e.type.Var("D")]),new e.type.Term("maplist",[new e.type.Var("P"),new e.type.Var("As"),new e.type.Var("Bs"),new e.type.Var("Cs"),new e.type.Var("Ds")])]))],"maplist/6":[new e.type.Rule(new e.type.Term("maplist",[new e.type.Var("_"),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[])]),null),new e.type.Rule(new e.type.Term("maplist",[new e.type.Var("P"),new e.type.Term(".",[new e.type.Var("A"),new e.type.Var("As")]),new e.type.Term(".",[new e.type.Var("B"),new e.type.Var("Bs")]),new e.type.Term(".",[new e.type.Var("C"),new e.type.Var("Cs")]),new e.type.Term(".",[new e.type.Var("D"),new e.type.Var("Ds")]),new e.type.Term(".",[new e.type.Var("E"),new e.type.Var("Es")])]),new e.type.Term(",",[new e.type.Term("call",[new e.type.Var("P"),new e.type.Var("A"),new e.type.Var("B"),new e.type.Var("C"),new e.type.Var("D"),new e.type.Var("E")]),new e.type.Term("maplist",[new e.type.Var("P"),new e.type.Var("As"),new e.type.Var("Bs"),new e.type.Var("Cs"),new e.type.Var("Ds"),new e.type.Var("Es")])]))],"maplist/7":[new e.type.Rule(new e.type.Term("maplist",[new e.type.Var("_"),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[])]),null),new e.type.Rule(new e.type.Term("maplist",[new e.type.Var("P"),new e.type.Term(".",[new e.type.Var("A"),new e.type.Var("As")]),new e.type.Term(".",[new e.type.Var("B"),new e.type.Var("Bs")]),new e.type.Term(".",[new e.type.Var("C"),new e.type.Var("Cs")]),new e.type.Term(".",[new e.type.Var("D"),new e.type.Var("Ds")]),new e.type.Term(".",[new e.type.Var("E"),new e.type.Var("Es")]),new e.type.Term(".",[new e.type.Var("F"),new e.type.Var("Fs")])]),new e.type.Term(",",[new e.type.Term("call",[new e.type.Var("P"),new e.type.Var("A"),new e.type.Var("B"),new e.type.Var("C"),new e.type.Var("D"),new e.type.Var("E"),new e.type.Var("F")]),new e.type.Term("maplist",[new e.type.Var("P"),new e.type.Var("As"),new e.type.Var("Bs"),new e.type.Var("Cs"),new e.type.Var("Ds"),new e.type.Var("Es"),new e.type.Var("Fs")])]))],"maplist/8":[new e.type.Rule(new e.type.Term("maplist",[new e.type.Var("_"),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[])]),null),new e.type.Rule(new e.type.Term("maplist",[new e.type.Var("P"),new e.type.Term(".",[new e.type.Var("A"),new e.type.Var("As")]),new e.type.Term(".",[new e.type.Var("B"),new e.type.Var("Bs")]),new e.type.Term(".",[new e.type.Var("C"),new e.type.Var("Cs")]),new e.type.Term(".",[new e.type.Var("D"),new e.type.Var("Ds")]),new e.type.Term(".",[new e.type.Var("E"),new e.type.Var("Es")]),new e.type.Term(".",[new e.type.Var("F"),new e.type.Var("Fs")]),new e.type.Term(".",[new e.type.Var("G"),new e.type.Var("Gs")])]),new e.type.Term(",",[new e.type.Term("call",[new e.type.Var("P"),new e.type.Var("A"),new e.type.Var("B"),new e.type.Var("C"),new e.type.Var("D"),new e.type.Var("E"),new e.type.Var("F"),new e.type.Var("G")]),new e.type.Term("maplist",[new e.type.Var("P"),new e.type.Var("As"),new e.type.Var("Bs"),new e.type.Var("Cs"),new e.type.Var("Ds"),new e.type.Var("Es"),new e.type.Var("Fs"),new e.type.Var("Gs")])]))],"include/3":[new e.type.Rule(new e.type.Term("include",[new e.type.Var("_"),new e.type.Term("[]",[]),new e.type.Term("[]",[])]),null),new e.type.Rule(new e.type.Term("include",[new e.type.Var("P"),new e.type.Term(".",[new e.type.Var("H"),new e.type.Var("T")]),new e.type.Var("L")]),new e.type.Term(",",[new e.type.Term("=..",[new e.type.Var("P"),new e.type.Var("A")]),new e.type.Term(",",[new e.type.Term("append",[new e.type.Var("A"),new e.type.Term(".",[new e.type.Var("H"),new e.type.Term("[]",[])]),new e.type.Var("B")]),new e.type.Term(",",[new e.type.Term("=..",[new e.type.Var("F"),new e.type.Var("B")]),new e.type.Term(",",[new e.type.Term(";",[new e.type.Term(",",[new e.type.Term("call",[new e.type.Var("F")]),new e.type.Term(",",[new e.type.Term("=",[new e.type.Var("L"),new e.type.Term(".",[new e.type.Var("H"),new e.type.Var("S")])]),new e.type.Term("!",[])])]),new e.type.Term("=",[new e.type.Var("L"),new e.type.Var("S")])]),new e.type.Term("include",[new e.type.Var("P"),new e.type.Var("T"),new e.type.Var("S")])])])])]))],"exclude/3":[new e.type.Rule(new e.type.Term("exclude",[new e.type.Var("_"),new e.type.Term("[]",[]),new e.type.Term("[]",[])]),null),new e.type.Rule(new e.type.Term("exclude",[new e.type.Var("P"),new e.type.Term(".",[new e.type.Var("H"),new e.type.Var("T")]),new e.type.Var("S")]),new e.type.Term(",",[new e.type.Term("exclude",[new e.type.Var("P"),new e.type.Var("T"),new e.type.Var("E")]),new e.type.Term(",",[new e.type.Term("=..",[new e.type.Var("P"),new e.type.Var("L")]),new e.type.Term(",",[new e.type.Term("append",[new e.type.Var("L"),new e.type.Term(".",[new e.type.Var("H"),new e.type.Term("[]",[])]),new e.type.Var("Q")]),new e.type.Term(",",[new e.type.Term("=..",[new e.type.Var("R"),new e.type.Var("Q")]),new e.type.Term(";",[new e.type.Term(",",[new e.type.Term("call",[new e.type.Var("R")]),new e.type.Term(",",[new e.type.Term("!",[]),new e.type.Term("=",[new e.type.Var("S"),new e.type.Var("E")])])]),new e.type.Term("=",[new e.type.Var("S"),new e.type.Term(".",[new e.type.Var("H"),new e.type.Var("E")])])])])])])]))],"foldl/4":[new e.type.Rule(new e.type.Term("foldl",[new e.type.Var("_"),new e.type.Term("[]",[]),new e.type.Var("I"),new e.type.Var("I")]),null),new e.type.Rule(new e.type.Term("foldl",[new e.type.Var("P"),new e.type.Term(".",[new e.type.Var("H"),new e.type.Var("T")]),new e.type.Var("I"),new e.type.Var("R")]),new e.type.Term(",",[new e.type.Term("=..",[new e.type.Var("P"),new e.type.Var("L")]),new e.type.Term(",",[new e.type.Term("append",[new e.type.Var("L"),new e.type.Term(".",[new e.type.Var("I"),new e.type.Term(".",[new e.type.Var("H"),new e.type.Term(".",[new e.type.Var("X"),new e.type.Term("[]",[])])])]),new e.type.Var("L2")]),new e.type.Term(",",[new e.type.Term("=..",[new e.type.Var("P2"),new e.type.Var("L2")]),new e.type.Term(",",[new e.type.Term("call",[new e.type.Var("P2")]),new e.type.Term("foldl",[new e.type.Var("P"),new e.type.Var("T"),new e.type.Var("X"),new e.type.Var("R")])])])])]))],"select/3":[new e.type.Rule(new e.type.Term("select",[new e.type.Var("E"),new e.type.Term(".",[new e.type.Var("E"),new e.type.Var("Xs")]),new e.type.Var("Xs")]),null),new e.type.Rule(new e.type.Term("select",[new e.type.Var("E"),new e.type.Term(".",[new e.type.Var("X"),new e.type.Var("Xs")]),new e.type.Term(".",[new e.type.Var("X"),new e.type.Var("Ys")])]),new e.type.Term("select",[new e.type.Var("E"),new e.type.Var("Xs"),new e.type.Var("Ys")]))],"sum_list/2":[new e.type.Rule(new e.type.Term("sum_list",[new e.type.Term("[]",[]),new e.type.Num(0,!1)]),null),new e.type.Rule(new e.type.Term("sum_list",[new e.type.Term(".",[new e.type.Var("X"),new e.type.Var("Xs")]),new e.type.Var("S")]),new e.type.Term(",",[new e.type.Term("sum_list",[new e.type.Var("Xs"),new e.type.Var("Y")]),new e.type.Term("is",[new e.type.Var("S"),new e.type.Term("+",[new e.type.Var("X"),new e.type.Var("Y")])])]))],"max_list/2":[new e.type.Rule(new e.type.Term("max_list",[new e.type.Term(".",[new e.type.Var("X"),new e.type.Term("[]",[])]),new e.type.Var("X")]),null),new e.type.Rule(new e.type.Term("max_list",[new e.type.Term(".",[new e.type.Var("X"),new e.type.Var("Xs")]),new e.type.Var("S")]),new e.type.Term(",",[new e.type.Term("max_list",[new e.type.Var("Xs"),new e.type.Var("Y")]),new e.type.Term(";",[new e.type.Term(",",[new e.type.Term(">=",[new e.type.Var("X"),new e.type.Var("Y")]),new e.type.Term(",",[new e.type.Term("=",[new e.type.Var("S"),new e.type.Var("X")]),new e.type.Term("!",[])])]),new e.type.Term("=",[new e.type.Var("S"),new e.type.Var("Y")])])]))],"min_list/2":[new e.type.Rule(new e.type.Term("min_list",[new e.type.Term(".",[new e.type.Var("X"),new e.type.Term("[]",[])]),new e.type.Var("X")]),null),new e.type.Rule(new e.type.Term("min_list",[new e.type.Term(".",[new e.type.Var("X"),new e.type.Var("Xs")]),new e.type.Var("S")]),new e.type.Term(",",[new e.type.Term("min_list",[new e.type.Var("Xs"),new e.type.Var("Y")]),new e.type.Term(";",[new e.type.Term(",",[new e.type.Term("=<",[new e.type.Var("X"),new e.type.Var("Y")]),new e.type.Term(",",[new e.type.Term("=",[new e.type.Var("S"),new e.type.Var("X")]),new e.type.Term("!",[])])]),new e.type.Term("=",[new e.type.Var("S"),new e.type.Var("Y")])])]))],"prod_list/2":[new e.type.Rule(new e.type.Term("prod_list",[new e.type.Term("[]",[]),new e.type.Num(1,!1)]),null),new e.type.Rule(new e.type.Term("prod_list",[new e.type.Term(".",[new e.type.Var("X"),new e.type.Var("Xs")]),new e.type.Var("S")]),new e.type.Term(",",[new e.type.Term("prod_list",[new e.type.Var("Xs"),new e.type.Var("Y")]),new e.type.Term("is",[new e.type.Var("S"),new e.type.Term("*",[new e.type.Var("X"),new e.type.Var("Y")])])]))],"last/2":[new e.type.Rule(new e.type.Term("last",[new e.type.Term(".",[new e.type.Var("X"),new e.type.Term("[]",[])]),new e.type.Var("X")]),null),new e.type.Rule(new e.type.Term("last",[new e.type.Term(".",[new e.type.Var("_"),new e.type.Var("Xs")]),new e.type.Var("X")]),new e.type.Term("last",[new e.type.Var("Xs"),new e.type.Var("X")]))],"prefix/2":[new e.type.Rule(new e.type.Term("prefix",[new e.type.Var("Part"),new e.type.Var("Whole")]),new e.type.Term("append",[new e.type.Var("Part"),new e.type.Var("_"),new e.type.Var("Whole")]))],"nth0/3":[new e.type.Rule(new e.type.Term("nth0",[new e.type.Var("X"),new e.type.Var("Y"),new e.type.Var("Z")]),new e.type.Term(";",[new e.type.Term("->",[new e.type.Term("var",[new e.type.Var("X")]),new e.type.Term("nth",[new e.type.Num(0,!1),new e.type.Var("X"),new e.type.Var("Y"),new e.type.Var("Z"),new e.type.Var("_")])]),new e.type.Term(",",[new e.type.Term(">=",[new e.type.Var("X"),new e.type.Num(0,!1)]),new e.type.Term(",",[new e.type.Term("nth",[new e.type.Num(0,!1),new e.type.Var("X"),new e.type.Var("Y"),new e.type.Var("Z"),new e.type.Var("_")]),new e.type.Term("!",[])])])]))],"nth1/3":[new e.type.Rule(new e.type.Term("nth1",[new e.type.Var("X"),new e.type.Var("Y"),new e.type.Var("Z")]),new e.type.Term(";",[new e.type.Term("->",[new e.type.Term("var",[new e.type.Var("X")]),new e.type.Term("nth",[new e.type.Num(1,!1),new e.type.Var("X"),new e.type.Var("Y"),new e.type.Var("Z"),new e.type.Var("_")])]),new e.type.Term(",",[new e.type.Term(">",[new e.type.Var("X"),new e.type.Num(0,!1)]),new e.type.Term(",",[new e.type.Term("nth",[new e.type.Num(1,!1),new e.type.Var("X"),new e.type.Var("Y"),new e.type.Var("Z"),new e.type.Var("_")]),new e.type.Term("!",[])])])]))],"nth0/4":[new e.type.Rule(new e.type.Term("nth0",[new e.type.Var("X"),new e.type.Var("Y"),new e.type.Var("Z"),new e.type.Var("W")]),new e.type.Term(";",[new e.type.Term("->",[new e.type.Term("var",[new e.type.Var("X")]),new e.type.Term("nth",[new e.type.Num(0,!1),new e.type.Var("X"),new e.type.Var("Y"),new e.type.Var("Z"),new e.type.Var("W")])]),new e.type.Term(",",[new e.type.Term(">=",[new e.type.Var("X"),new e.type.Num(0,!1)]),new e.type.Term(",",[new e.type.Term("nth",[new e.type.Num(0,!1),new e.type.Var("X"),new e.type.Var("Y"),new e.type.Var("Z"),new e.type.Var("W")]),new e.type.Term("!",[])])])]))],"nth1/4":[new e.type.Rule(new e.type.Term("nth1",[new e.type.Var("X"),new e.type.Var("Y"),new e.type.Var("Z"),new e.type.Var("W")]),new e.type.Term(";",[new e.type.Term("->",[new e.type.Term("var",[new e.type.Var("X")]),new e.type.Term("nth",[new e.type.Num(1,!1),new e.type.Var("X"),new e.type.Var("Y"),new e.type.Var("Z"),new e.type.Var("W")])]),new e.type.Term(",",[new e.type.Term(">",[new e.type.Var("X"),new e.type.Num(0,!1)]),new e.type.Term(",",[new e.type.Term("nth",[new e.type.Num(1,!1),new e.type.Var("X"),new e.type.Var("Y"),new e.type.Var("Z"),new e.type.Var("W")]),new e.type.Term("!",[])])])]))],"nth/5":[new e.type.Rule(new e.type.Term("nth",[new e.type.Var("N"),new e.type.Var("N"),new e.type.Term(".",[new e.type.Var("X"),new e.type.Var("Xs")]),new e.type.Var("X"),new e.type.Var("Xs")]),null),new e.type.Rule(new e.type.Term("nth",[new e.type.Var("N"),new e.type.Var("O"),new e.type.Term(".",[new e.type.Var("X"),new e.type.Var("Xs")]),new e.type.Var("Y"),new e.type.Term(".",[new e.type.Var("X"),new e.type.Var("Ys")])]),new e.type.Term(",",[new e.type.Term("is",[new e.type.Var("M"),new e.type.Term("+",[new e.type.Var("N"),new e.type.Num(1,!1)])]),new e.type.Term("nth",[new e.type.Var("M"),new e.type.Var("O"),new e.type.Var("Xs"),new e.type.Var("Y"),new e.type.Var("Ys")])]))],"length/2":function(s,a,n){var c=n.args[0],f=n.args[1];if(!e.type.is_variable(f)&&!e.type.is_integer(f))s.throw_error(e.error.type("integer",f,n.indicator));else if(e.type.is_integer(f)&&f.value<0)s.throw_error(e.error.domain("not_less_than_zero",f,n.indicator));else{var p=new e.type.Term("length",[c,new e.type.Num(0,!1),f]);e.type.is_integer(f)&&(p=new e.type.Term(",",[p,new e.type.Term("!",[])])),s.prepend([new e.type.State(a.goal.replace(p),a.substitution,a)])}},"length/3":[new e.type.Rule(new e.type.Term("length",[new e.type.Term("[]",[]),new e.type.Var("N"),new e.type.Var("N")]),null),new e.type.Rule(new e.type.Term("length",[new e.type.Term(".",[new e.type.Var("_"),new e.type.Var("X")]),new e.type.Var("A"),new e.type.Var("N")]),new e.type.Term(",",[new e.type.Term("succ",[new e.type.Var("A"),new e.type.Var("B")]),new e.type.Term("length",[new e.type.Var("X"),new e.type.Var("B"),new e.type.Var("N")])]))],"replicate/3":function(s,a,n){var c=n.args[0],f=n.args[1],p=n.args[2];if(e.type.is_variable(f))s.throw_error(e.error.instantiation(n.indicator));else if(!e.type.is_integer(f))s.throw_error(e.error.type("integer",f,n.indicator));else if(f.value<0)s.throw_error(e.error.domain("not_less_than_zero",f,n.indicator));else if(!e.type.is_variable(p)&&!e.type.is_list(p))s.throw_error(e.error.type("list",p,n.indicator));else{for(var h=new e.type.Term("[]"),E=0;E0;C--)E[C].equals(E[C-1])&&E.splice(C,1);for(var S=new e.type.Term("[]"),C=E.length-1;C>=0;C--)S=new e.type.Term(".",[E[C],S]);s.prepend([new e.type.State(a.goal.replace(new e.type.Term("=",[S,f])),a.substitution,a)])}}},"msort/2":function(s,a,n){var c=n.args[0],f=n.args[1];if(e.type.is_variable(c))s.throw_error(e.error.instantiation(n.indicator));else if(!e.type.is_variable(f)&&!e.type.is_fully_list(f))s.throw_error(e.error.type("list",f,n.indicator));else{for(var p=[],h=c;h.indicator==="./2";)p.push(h.args[0]),h=h.args[1];if(e.type.is_variable(h))s.throw_error(e.error.instantiation(n.indicator));else if(!e.type.is_empty_list(h))s.throw_error(e.error.type("list",c,n.indicator));else{for(var E=p.sort(e.compare),C=new e.type.Term("[]"),S=E.length-1;S>=0;S--)C=new e.type.Term(".",[E[S],C]);s.prepend([new e.type.State(a.goal.replace(new e.type.Term("=",[C,f])),a.substitution,a)])}}},"keysort/2":function(s,a,n){var c=n.args[0],f=n.args[1];if(e.type.is_variable(c))s.throw_error(e.error.instantiation(n.indicator));else if(!e.type.is_variable(f)&&!e.type.is_fully_list(f))s.throw_error(e.error.type("list",f,n.indicator));else{for(var p=[],h,E=c;E.indicator==="./2";){if(h=E.args[0],e.type.is_variable(h)){s.throw_error(e.error.instantiation(n.indicator));return}else if(!e.type.is_term(h)||h.indicator!=="-/2"){s.throw_error(e.error.type("pair",h,n.indicator));return}h.args[0].pair=h.args[1],p.push(h.args[0]),E=E.args[1]}if(e.type.is_variable(E))s.throw_error(e.error.instantiation(n.indicator));else if(!e.type.is_empty_list(E))s.throw_error(e.error.type("list",c,n.indicator));else{for(var C=p.sort(e.compare),S=new e.type.Term("[]"),x=C.length-1;x>=0;x--)S=new e.type.Term(".",[new e.type.Term("-",[C[x],C[x].pair]),S]),delete C[x].pair;s.prepend([new e.type.State(a.goal.replace(new e.type.Term("=",[S,f])),a.substitution,a)])}}},"take/3":function(s,a,n){var c=n.args[0],f=n.args[1],p=n.args[2];if(e.type.is_variable(f)||e.type.is_variable(c))s.throw_error(e.error.instantiation(n.indicator));else if(!e.type.is_list(f))s.throw_error(e.error.type("list",f,n.indicator));else if(!e.type.is_integer(c))s.throw_error(e.error.type("integer",c,n.indicator));else if(!e.type.is_variable(p)&&!e.type.is_list(p))s.throw_error(e.error.type("list",p,n.indicator));else{for(var h=c.value,E=[],C=f;h>0&&C.indicator==="./2";)E.push(C.args[0]),C=C.args[1],h--;if(h===0){for(var S=new e.type.Term("[]"),h=E.length-1;h>=0;h--)S=new e.type.Term(".",[E[h],S]);s.prepend([new e.type.State(a.goal.replace(new e.type.Term("=",[S,p])),a.substitution,a)])}}},"drop/3":function(s,a,n){var c=n.args[0],f=n.args[1],p=n.args[2];if(e.type.is_variable(f)||e.type.is_variable(c))s.throw_error(e.error.instantiation(n.indicator));else if(!e.type.is_list(f))s.throw_error(e.error.type("list",f,n.indicator));else if(!e.type.is_integer(c))s.throw_error(e.error.type("integer",c,n.indicator));else if(!e.type.is_variable(p)&&!e.type.is_list(p))s.throw_error(e.error.type("list",p,n.indicator));else{for(var h=c.value,E=[],C=f;h>0&&C.indicator==="./2";)E.push(C.args[0]),C=C.args[1],h--;h===0&&s.prepend([new e.type.State(a.goal.replace(new e.type.Term("=",[C,p])),a.substitution,a)])}},"reverse/2":function(s,a,n){var c=n.args[0],f=n.args[1],p=e.type.is_instantiated_list(c),h=e.type.is_instantiated_list(f);if(e.type.is_variable(c)&&e.type.is_variable(f))s.throw_error(e.error.instantiation(n.indicator));else if(!e.type.is_variable(c)&&!e.type.is_fully_list(c))s.throw_error(e.error.type("list",c,n.indicator));else if(!e.type.is_variable(f)&&!e.type.is_fully_list(f))s.throw_error(e.error.type("list",f,n.indicator));else if(!p&&!h)s.throw_error(e.error.instantiation(n.indicator));else{for(var E=p?c:f,C=new e.type.Term("[]",[]);E.indicator==="./2";)C=new e.type.Term(".",[E.args[0],C]),E=E.args[1];s.prepend([new e.type.State(a.goal.replace(new e.type.Term("=",[C,p?f:c])),a.substitution,a)])}},"list_to_set/2":function(s,a,n){var c=n.args[0],f=n.args[1];if(e.type.is_variable(c))s.throw_error(e.error.instantiation(n.indicator));else{for(var p=c,h=[];p.indicator==="./2";)h.push(p.args[0]),p=p.args[1];if(e.type.is_variable(p))s.throw_error(e.error.instantiation(n.indicator));else if(!e.type.is_term(p)||p.indicator!=="[]/0")s.throw_error(e.error.type("list",c,n.indicator));else{for(var E=[],C=new e.type.Term("[]",[]),S,x=0;x=0;x--)C=new e.type.Term(".",[E[x],C]);s.prepend([new e.type.State(a.goal.replace(new e.type.Term("=",[f,C])),a.substitution,a)])}}}}},r=["append/2","append/3","member/2","permutation/2","maplist/2","maplist/3","maplist/4","maplist/5","maplist/6","maplist/7","maplist/8","include/3","exclude/3","foldl/4","sum_list/2","max_list/2","min_list/2","prod_list/2","last/2","prefix/2","nth0/3","nth1/3","nth0/4","nth1/4","length/2","replicate/3","select/3","sort/2","msort/2","keysort/2","take/3","drop/3","reverse/2","list_to_set/2"];typeof H5<"u"?H5.exports=function(s){e=s,new e.type.Module("lists",t(),r)}:new e.type.Module("lists",t(),r)})(nat)});var sme=G($r=>{"use strict";var km=process.platform==="win32",j5="aes-256-cbc",iat="sha256",Yde="The current environment doesn't support interactive reading from TTY.",ai=Ie("fs"),Wde=process.binding("tty_wrap").TTY,q5=Ie("child_process"),W0=Ie("path"),W5={prompt:"> ",hideEchoBack:!1,mask:"*",limit:[],limitMessage:"Input another, please.$<( [)limit(])>",defaultInput:"",trueValue:[],falseValue:[],caseSensitive:!1,keepWhitespace:!1,encoding:"utf8",bufferSize:1024,print:void 0,history:!0,cd:!1,phContent:void 0,preCheck:void 0},Jp="none",ef,MC,Vde=!1,q0,qT,G5,sat=0,z5="",xm=[],WT,Kde=!1,V5=!1,sS=!1;function Jde(e){function t(r){return r.replace(/[^\w\u0080-\uFFFF]/g,function(s){return"#"+s.charCodeAt(0)+";"})}return qT.concat(function(r){var s=[];return Object.keys(r).forEach(function(a){r[a]==="boolean"?e[a]&&s.push("--"+a):r[a]==="string"&&e[a]&&s.push("--"+a,t(e[a]))}),s}({display:"string",displayOnly:"boolean",keyIn:"boolean",hideEchoBack:"boolean",mask:"string",limit:"string",caseSensitive:"boolean"}))}function oat(e,t){function r(U){var Y,te="",ie;for(G5=G5||Ie("os").tmpdir();;){Y=W0.join(G5,U+te);try{ie=ai.openSync(Y,"wx")}catch(ue){if(ue.code==="EEXIST"){te++;continue}else throw ue}ai.closeSync(ie);break}return Y}var s,a,n,c={},f,p,h=r("readline-sync.stdout"),E=r("readline-sync.stderr"),C=r("readline-sync.exit"),S=r("readline-sync.done"),x=Ie("crypto"),I,T,O;I=x.createHash(iat),I.update(""+process.pid+sat+++Math.random()),O=I.digest("hex"),T=x.createDecipher(j5,O),s=Jde(e),km?(a=process.env.ComSpec||"cmd.exe",process.env.Q='"',n=["/V:ON","/S","/C","(%Q%"+a+"%Q% /V:ON /S /C %Q%%Q%"+q0+"%Q%"+s.map(function(U){return" %Q%"+U+"%Q%"}).join("")+" & (echo !ERRORLEVEL!)>%Q%"+C+"%Q%%Q%) 2>%Q%"+E+"%Q% |%Q%"+process.execPath+"%Q% %Q%"+__dirname+"\\encrypt.js%Q% %Q%"+j5+"%Q% %Q%"+O+"%Q% >%Q%"+h+"%Q% & (echo 1)>%Q%"+S+"%Q%"]):(a="/bin/sh",n=["-c",'("'+q0+'"'+s.map(function(U){return" '"+U.replace(/'/g,"'\\''")+"'"}).join("")+'; echo $?>"'+C+'") 2>"'+E+'" |"'+process.execPath+'" "'+__dirname+'/encrypt.js" "'+j5+'" "'+O+'" >"'+h+'"; echo 1 >"'+S+'"']),sS&&sS("_execFileSync",s);try{q5.spawn(a,n,t)}catch(U){c.error=new Error(U.message),c.error.method="_execFileSync - spawn",c.error.program=a,c.error.args=n}for(;ai.readFileSync(S,{encoding:e.encoding}).trim()!=="1";);return(f=ai.readFileSync(C,{encoding:e.encoding}).trim())==="0"?c.input=T.update(ai.readFileSync(h,{encoding:"binary"}),"hex",e.encoding)+T.final(e.encoding):(p=ai.readFileSync(E,{encoding:e.encoding}).trim(),c.error=new Error(Yde+(p?` -`+p:"")),c.error.method="_execFileSync",c.error.program=a,c.error.args=n,c.error.extMessage=p,c.error.exitCode=+f),ai.unlinkSync(h),ai.unlinkSync(E),ai.unlinkSync(C),ai.unlinkSync(S),c}function aat(e){var t,r={},s,a={env:process.env,encoding:e.encoding};if(q0||(km?process.env.PSModulePath?(q0="powershell.exe",qT=["-ExecutionPolicy","Bypass","-File",__dirname+"\\read.ps1"]):(q0="cscript.exe",qT=["//nologo",__dirname+"\\read.cs.js"]):(q0="/bin/sh",qT=[__dirname+"/read.sh"])),km&&!process.env.PSModulePath&&(a.stdio=[process.stdin]),q5.execFileSync){t=Jde(e),sS&&sS("execFileSync",t);try{r.input=q5.execFileSync(q0,t,a)}catch(n){s=n.stderr?(n.stderr+"").trim():"",r.error=new Error(Yde+(s?` -`+s:"")),r.error.method="execFileSync",r.error.program=q0,r.error.args=t,r.error.extMessage=s,r.error.exitCode=n.status,r.error.code=n.code,r.error.signal=n.signal}}else r=oat(e,a);return r.error||(r.input=r.input.replace(/^\s*'|'\s*$/g,""),e.display=""),r}function Y5(e){var t="",r=e.display,s=!e.display&&e.keyIn&&e.hideEchoBack&&!e.mask;function a(){var n=aat(e);if(n.error)throw n.error;return n.input}return V5&&V5(e),function(){var n,c,f;function p(){return n||(n=process.binding("fs"),c=process.binding("constants")),n}if(typeof Jp=="string")if(Jp=null,km){if(f=function(h){var E=h.replace(/^\D+/,"").split("."),C=0;return(E[0]=+E[0])&&(C+=E[0]*1e4),(E[1]=+E[1])&&(C+=E[1]*100),(E[2]=+E[2])&&(C+=E[2]),C}(process.version),!(f>=20302&&f<40204||f>=5e4&&f<50100||f>=50600&&f<60200)&&process.stdin.isTTY)process.stdin.pause(),Jp=process.stdin.fd,MC=process.stdin._handle;else try{Jp=p().open("CONIN$",c.O_RDWR,parseInt("0666",8)),MC=new Wde(Jp,!0)}catch{}if(process.stdout.isTTY)ef=process.stdout.fd;else{try{ef=ai.openSync("\\\\.\\CON","w")}catch{}if(typeof ef!="number")try{ef=p().open("CONOUT$",c.O_RDWR,parseInt("0666",8))}catch{}}}else{if(process.stdin.isTTY){process.stdin.pause();try{Jp=ai.openSync("/dev/tty","r"),MC=process.stdin._handle}catch{}}else try{Jp=ai.openSync("/dev/tty","r"),MC=new Wde(Jp,!1)}catch{}if(process.stdout.isTTY)ef=process.stdout.fd;else try{ef=ai.openSync("/dev/tty","w")}catch{}}}(),function(){var n,c,f=!e.hideEchoBack&&!e.keyIn,p,h,E,C,S;WT="";function x(I){return I===Vde?!0:MC.setRawMode(I)!==0?!1:(Vde=I,!0)}if(Kde||!MC||typeof ef!="number"&&(e.display||!f)){t=a();return}if(e.display&&(ai.writeSync(ef,e.display),e.display=""),!e.displayOnly){if(!x(!f)){t=a();return}for(h=e.keyIn?1:e.bufferSize,p=Buffer.allocUnsafe&&Buffer.alloc?Buffer.alloc(h):new Buffer(h),e.keyIn&&e.limit&&(c=new RegExp("[^"+e.limit+"]","g"+(e.caseSensitive?"":"i")));;){E=0;try{E=ai.readSync(Jp,p,0,h)}catch(I){if(I.code!=="EOF"){x(!1),t+=a();return}}if(E>0?(C=p.toString(e.encoding,0,E),WT+=C):(C=` -`,WT+="\0"),C&&typeof(S=(C.match(/^(.*?)[\r\n]/)||[])[1])=="string"&&(C=S,n=!0),C&&(C=C.replace(/[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]/g,"")),C&&c&&(C=C.replace(c,"")),C&&(f||(e.hideEchoBack?e.mask&&ai.writeSync(ef,new Array(C.length+1).join(e.mask)):ai.writeSync(ef,C)),t+=C),!e.keyIn&&n||e.keyIn&&t.length>=h)break}!f&&!s&&ai.writeSync(ef,` -`),x(!1)}}(),e.print&&!s&&e.print(r+(e.displayOnly?"":(e.hideEchoBack?new Array(t.length+1).join(e.mask):t)+` -`),e.encoding),e.displayOnly?"":z5=e.keepWhitespace||e.keyIn?t:t.trim()}function lat(e,t){var r=[];function s(a){a!=null&&(Array.isArray(a)?a.forEach(s):(!t||t(a))&&r.push(a))}return s(e),r}function Z5(e){return e.replace(/[\x00-\x7f]/g,function(t){return"\\x"+("00"+t.charCodeAt().toString(16)).substr(-2)})}function $s(){var e=Array.prototype.slice.call(arguments),t,r;return e.length&&typeof e[0]=="boolean"&&(r=e.shift(),r&&(t=Object.keys(W5),e.unshift(W5))),e.reduce(function(s,a){return a==null||(a.hasOwnProperty("noEchoBack")&&!a.hasOwnProperty("hideEchoBack")&&(a.hideEchoBack=a.noEchoBack,delete a.noEchoBack),a.hasOwnProperty("noTrim")&&!a.hasOwnProperty("keepWhitespace")&&(a.keepWhitespace=a.noTrim,delete a.noTrim),r||(t=Object.keys(a)),t.forEach(function(n){var c;if(a.hasOwnProperty(n))switch(c=a[n],n){case"mask":case"limitMessage":case"defaultInput":case"encoding":c=c!=null?c+"":"",c&&n!=="limitMessage"&&(c=c.replace(/[\r\n]/g,"")),s[n]=c;break;case"bufferSize":!isNaN(c=parseInt(c,10))&&typeof c=="number"&&(s[n]=c);break;case"displayOnly":case"keyIn":case"hideEchoBack":case"caseSensitive":case"keepWhitespace":case"history":case"cd":s[n]=!!c;break;case"limit":case"trueValue":case"falseValue":s[n]=lat(c,function(f){var p=typeof f;return p==="string"||p==="number"||p==="function"||f instanceof RegExp}).map(function(f){return typeof f=="string"?f.replace(/[\r\n]/g,""):f});break;case"print":case"phContent":case"preCheck":s[n]=typeof c=="function"?c:void 0;break;case"prompt":case"display":s[n]=c??"";break}})),s},{})}function K5(e,t,r){return t.some(function(s){var a=typeof s;return a==="string"?r?e===s:e.toLowerCase()===s.toLowerCase():a==="number"?parseFloat(e)===s:a==="function"?s(e):s instanceof RegExp?s.test(e):!1})}function X5(e,t){var r=W0.normalize(km?(process.env.HOMEDRIVE||"")+(process.env.HOMEPATH||""):process.env.HOME||"").replace(/[\/\\]+$/,"");return e=W0.normalize(e),t?e.replace(/^~(?=\/|\\|$)/,r):e.replace(new RegExp("^"+Z5(r)+"(?=\\/|\\\\|$)",km?"i":""),"~")}function UC(e,t){var r="(?:\\(([\\s\\S]*?)\\))?(\\w+|.-.)(?:\\(([\\s\\S]*?)\\))?",s=new RegExp("(\\$)?(\\$<"+r+">)","g"),a=new RegExp("(\\$)?(\\$\\{"+r+"\\})","g");function n(c,f,p,h,E,C){var S;return f||typeof(S=t(E))!="string"?p:S?(h||"")+S+(C||""):""}return e.replace(s,n).replace(a,n)}function zde(e,t,r){var s,a=[],n=-1,c=0,f="",p;function h(E,C){return C.length>3?(E.push(C[0]+"..."+C[C.length-1]),p=!0):C.length&&(E=E.concat(C)),E}return s=e.reduce(function(E,C){return E.concat((C+"").split(""))},[]).reduce(function(E,C){var S,x;return t||(C=C.toLowerCase()),S=/^\d$/.test(C)?1:/^[A-Z]$/.test(C)?2:/^[a-z]$/.test(C)?3:0,r&&S===0?f+=C:(x=C.charCodeAt(0),S&&S===n&&x===c+1?a.push(C):(E=h(E,a),a=[C],n=S),c=x),E},[]),s=h(s,a),f&&(s.push(f),p=!0),{values:s,suppressed:p}}function Zde(e,t){return e.join(e.length>2?", ":t?" / ":"/")}function Xde(e,t){var r,s,a={},n;if(t.phContent&&(r=t.phContent(e,t)),typeof r!="string")switch(e){case"hideEchoBack":case"mask":case"defaultInput":case"caseSensitive":case"keepWhitespace":case"encoding":case"bufferSize":case"history":case"cd":r=t.hasOwnProperty(e)?typeof t[e]=="boolean"?t[e]?"on":"off":t[e]+"":"";break;case"limit":case"trueValue":case"falseValue":s=t[t.hasOwnProperty(e+"Src")?e+"Src":e],t.keyIn?(a=zde(s,t.caseSensitive),s=a.values):s=s.filter(function(c){var f=typeof c;return f==="string"||f==="number"}),r=Zde(s,a.suppressed);break;case"limitCount":case"limitCountNotZero":r=t[t.hasOwnProperty("limitSrc")?"limitSrc":"limit"].length,r=r||e!=="limitCountNotZero"?r+"":"";break;case"lastInput":r=z5;break;case"cwd":case"CWD":case"cwdHome":r=process.cwd(),e==="CWD"?r=W0.basename(r):e==="cwdHome"&&(r=X5(r));break;case"date":case"time":case"localeDate":case"localeTime":r=new Date()["to"+e.replace(/^./,function(c){return c.toUpperCase()})+"String"]();break;default:typeof(n=(e.match(/^history_m(\d+)$/)||[])[1])=="string"&&(r=xm[xm.length-n]||"")}return r}function $de(e){var t=/^(.)-(.)$/.exec(e),r="",s,a,n,c;if(!t)return null;for(s=t[1].charCodeAt(0),a=t[2].charCodeAt(0),c=s -And the length must be: $`,trueValue:null,falseValue:null,caseSensitive:!0},t,{history:!1,cd:!1,phContent:function(x){return x==="charlist"?r.text:x==="length"?s+"..."+a:null}}),c,f,p,h,E,C,S;for(t=t||{},c=UC(t.charlist?t.charlist+"":"$",$de),(isNaN(s=parseInt(t.min,10))||typeof s!="number")&&(s=12),(isNaN(a=parseInt(t.max,10))||typeof a!="number")&&(a=24),h=new RegExp("^["+Z5(c)+"]{"+s+","+a+"}$"),r=zde([c],n.caseSensitive,!0),r.text=Zde(r.values,r.suppressed),f=t.confirmMessage!=null?t.confirmMessage:"Reinput a same one to confirm it: ",p=t.unmatchMessage!=null?t.unmatchMessage:"It differs from first one. Hit only the Enter key if you want to retry from first one.",e==null&&(e="Input new password: "),E=n.limitMessage;!S;)n.limit=h,n.limitMessage=E,C=$r.question(e,n),n.limit=[C,""],n.limitMessage=p,S=$r.question(f,n);return C};function rme(e,t,r){var s;function a(n){return s=r(n),!isNaN(s)&&typeof s=="number"}return $r.question(e,$s({limitMessage:"Input valid number, please."},t,{limit:a,cd:!1})),s}$r.questionInt=function(e,t){return rme(e,t,function(r){return parseInt(r,10)})};$r.questionFloat=function(e,t){return rme(e,t,parseFloat)};$r.questionPath=function(e,t){var r,s="",a=$s({hideEchoBack:!1,limitMessage:`$Input valid path, please.$<( Min:)min>$<( Max:)max>`,history:!0,cd:!0},t,{keepWhitespace:!1,limit:function(n){var c,f,p;n=X5(n,!0),s="";function h(E){E.split(/\/|\\/).reduce(function(C,S){var x=W0.resolve(C+=S+W0.sep);if(!ai.existsSync(x))ai.mkdirSync(x);else if(!ai.statSync(x).isDirectory())throw new Error("Non directory already exists: "+x);return C},"")}try{if(c=ai.existsSync(n),r=c?ai.realpathSync(n):W0.resolve(n),!t.hasOwnProperty("exists")&&!c||typeof t.exists=="boolean"&&t.exists!==c)return s=(c?"Already exists":"No such file or directory")+": "+r,!1;if(!c&&t.create&&(t.isDirectory?h(r):(h(W0.dirname(r)),ai.closeSync(ai.openSync(r,"w"))),r=ai.realpathSync(r)),c&&(t.min||t.max||t.isFile||t.isDirectory)){if(f=ai.statSync(r),t.isFile&&!f.isFile())return s="Not file: "+r,!1;if(t.isDirectory&&!f.isDirectory())return s="Not directory: "+r,!1;if(t.min&&f.size<+t.min||t.max&&f.size>+t.max)return s="Size "+f.size+" is out of range: "+r,!1}if(typeof t.validate=="function"&&(p=t.validate(r))!==!0)return typeof p=="string"&&(s=p),!1}catch(E){return s=E+"",!1}return!0},phContent:function(n){return n==="error"?s:n!=="min"&&n!=="max"?null:t.hasOwnProperty(n)?t[n]+"":""}});return t=t||{},e==null&&(e='Input path (you can "cd" and "pwd"): '),$r.question(e,a),r};function nme(e,t){var r={},s={};return typeof e=="object"?(Object.keys(e).forEach(function(a){typeof e[a]=="function"&&(s[t.caseSensitive?a:a.toLowerCase()]=e[a])}),r.preCheck=function(a){var n;return r.args=J5(a),n=r.args[0]||"",t.caseSensitive||(n=n.toLowerCase()),r.hRes=n!=="_"&&s.hasOwnProperty(n)?s[n].apply(a,r.args.slice(1)):s.hasOwnProperty("_")?s._.apply(a,r.args):null,{res:a,forceNext:!1}},s.hasOwnProperty("_")||(r.limit=function(){var a=r.args[0]||"";return t.caseSensitive||(a=a.toLowerCase()),s.hasOwnProperty(a)})):r.preCheck=function(a){return r.args=J5(a),r.hRes=typeof e=="function"?e.apply(a,r.args):!0,{res:a,forceNext:!1}},r}$r.promptCL=function(e,t){var r=$s({hideEchoBack:!1,limitMessage:"Requested command is not available.",caseSensitive:!1,history:!0},t),s=nme(e,r);return r.limit=s.limit,r.preCheck=s.preCheck,$r.prompt(r),s.args};$r.promptLoop=function(e,t){for(var r=$s({hideEchoBack:!1,trueValue:null,falseValue:null,caseSensitive:!1,history:!0},t);!e($r.prompt(r)););};$r.promptCLLoop=function(e,t){var r=$s({hideEchoBack:!1,limitMessage:"Requested command is not available.",caseSensitive:!1,history:!0},t),s=nme(e,r);for(r.limit=s.limit,r.preCheck=s.preCheck;$r.prompt(r),!s.hRes;);};$r.promptSimShell=function(e){return $r.prompt($s({hideEchoBack:!1,history:!0},e,{prompt:function(){return km?"$>":(process.env.USER||"")+(process.env.HOSTNAME?"@"+process.env.HOSTNAME.replace(/\..*$/,""):"")+":$$ "}()}))};function ime(e,t,r){var s;return e==null&&(e="Are you sure? "),(!t||t.guide!==!1)&&(e+="")&&(e=e.replace(/\s*:?\s*$/,"")+" [y/n]: "),s=$r.keyIn(e,$s(t,{hideEchoBack:!1,limit:r,trueValue:"y",falseValue:"n",caseSensitive:!1})),typeof s=="boolean"?s:""}$r.keyInYN=function(e,t){return ime(e,t)};$r.keyInYNStrict=function(e,t){return ime(e,t,"yn")};$r.keyInPause=function(e,t){e==null&&(e="Continue..."),(!t||t.guide!==!1)&&(e+="")&&(e=e.replace(/\s+$/,"")+" (Hit any key)"),$r.keyIn(e,$s({limit:null},t,{hideEchoBack:!0,mask:""}))};$r.keyInSelect=function(e,t,r){var s=$s({hideEchoBack:!1},r,{trueValue:null,falseValue:null,caseSensitive:!1,phContent:function(p){return p==="itemsCount"?e.length+"":p==="firstItem"?(e[0]+"").trim():p==="lastItem"?(e[e.length-1]+"").trim():null}}),a="",n={},c=49,f=` -`;if(!Array.isArray(e)||!e.length||e.length>35)throw"`items` must be Array (max length: 35).";return e.forEach(function(p,h){var E=String.fromCharCode(c);a+=E,n[E]=h,f+="["+E+"] "+(p+"").trim()+` -`,c=c===57?97:c+1}),(!r||r.cancel!==!1)&&(a+="0",n[0]=-1,f+="[0] "+(r&&r.cancel!=null&&typeof r.cancel!="boolean"?(r.cancel+"").trim():"CANCEL")+` -`),s.limit=a,f+=` -`,t==null&&(t="Choose one from list: "),(t+="")&&((!r||r.guide!==!1)&&(t=t.replace(/\s*:?\s*$/,"")+" [$]: "),f+=t),n[$r.keyIn(f,s).toLowerCase()]};$r.getRawInput=function(){return WT};function oS(e,t){var r;return t.length&&(r={},r[e]=t[0]),$r.setDefaultOptions(r)[e]}$r.setPrint=function(){return oS("print",arguments)};$r.setPrompt=function(){return oS("prompt",arguments)};$r.setEncoding=function(){return oS("encoding",arguments)};$r.setMask=function(){return oS("mask",arguments)};$r.setBufferSize=function(){return oS("bufferSize",arguments)}});var $5=G((Vqt,tc)=>{(function(){var e={major:0,minor:2,patch:66,status:"beta"};tau_file_system={files:{},open:function(w,b,y){var F=tau_file_system.files[w];if(!F){if(y==="read")return null;F={path:w,text:"",type:b,get:function(z,Z){return Z===this.text.length||Z>this.text.length?"end_of_file":this.text.substring(Z,Z+z)},put:function(z,Z){return Z==="end_of_file"?(this.text+=z,!0):Z==="past_end_of_file"?null:(this.text=this.text.substring(0,Z)+z+this.text.substring(Z+z.length),!0)},get_byte:function(z){if(z==="end_of_stream")return-1;var Z=Math.floor(z/2);if(this.text.length<=Z)return-1;var $=n(this.text[Math.floor(z/2)],0);return z%2===0?$&255:$/256>>>0},put_byte:function(z,Z){var $=Z==="end_of_stream"?this.text.length:Math.floor(Z/2);if(this.text.length<$)return null;var se=this.text.length===$?-1:n(this.text[Math.floor(Z/2)],0);return Z%2===0?(se=se/256>>>0,se=(se&255)<<8|z&255):(se=se&255,se=(z&255)<<8|se&255),this.text.length===$?this.text+=c(se):this.text=this.text.substring(0,$)+c(se)+this.text.substring($+1),!0},flush:function(){return!0},close:function(){var z=tau_file_system.files[this.path];return z?!0:null}},tau_file_system.files[w]=F}return y==="write"&&(F.text=""),F}},tau_user_input={buffer:"",get:function(w,b){for(var y;tau_user_input.buffer.length\?\@\^\~\\]+|'(?:[^']*?(?:\\(?:x?\d+)?\\)*(?:'')*(?:\\')*)*')/,number:/^(?:0o[0-7]+|0x[0-9a-fA-F]+|0b[01]+|0'(?:''|\\[abfnrtv\\'"`]|\\x?\d+\\|[^\\])|\d+(?:\.\d+(?:[eE][+-]?\d+)?)?)/,string:/^(?:"([^"]|""|\\")*"|`([^`]|``|\\`)*`)/,l_brace:/^(?:\[)/,r_brace:/^(?:\])/,l_bracket:/^(?:\{)/,r_bracket:/^(?:\})/,bar:/^(?:\|)/,l_paren:/^(?:\()/,r_paren:/^(?:\))/};function O(w,b){return w.get_flag("char_conversion").id==="on"?b.replace(/./g,function(y){return w.get_char_conversion(y)}):b}function U(w){this.thread=w,this.text="",this.tokens=[]}U.prototype.set_last_tokens=function(w){return this.tokens=w},U.prototype.new_text=function(w){this.text=w,this.tokens=[]},U.prototype.get_tokens=function(w){var b,y=0,F=0,z=0,Z=[],$=!1;if(w){var se=this.tokens[w-1];y=se.len,b=O(this.thread,this.text.substr(se.len)),F=se.line,z=se.start}else b=this.text;if(/^\s*$/.test(b))return null;for(;b!=="";){var xe=[],Fe=!1;if(/^\n/.exec(b)!==null){F++,z=0,y++,b=b.replace(/\n/,""),$=!0;continue}for(var ut in T)if(T.hasOwnProperty(ut)){var Ct=T[ut].exec(b);Ct&&xe.push({value:Ct[0],name:ut,matches:Ct})}if(!xe.length)return this.set_last_tokens([{value:b,matches:[],name:"lexical",line:F,start:z}]);var se=r(xe,function(Pr,Ir){return Pr.value.length>=Ir.value.length?Pr:Ir});switch(se.start=z,se.line=F,b=b.replace(se.value,""),z+=se.value.length,y+=se.value.length,se.name){case"atom":se.raw=se.value,se.value.charAt(0)==="'"&&(se.value=S(se.value.substr(1,se.value.length-2),"'"),se.value===null&&(se.name="lexical",se.value="unknown escape sequence"));break;case"number":se.float=se.value.substring(0,2)!=="0x"&&se.value.match(/[.eE]/)!==null&&se.value!=="0'.",se.value=I(se.value),se.blank=Fe;break;case"string":var qt=se.value.charAt(0);se.value=S(se.value.substr(1,se.value.length-2),qt),se.value===null&&(se.name="lexical",se.value="unknown escape sequence");break;case"whitespace":var ir=Z[Z.length-1];ir&&(ir.space=!0),Fe=!0;continue;case"r_bracket":Z.length>0&&Z[Z.length-1].name==="l_bracket"&&(se=Z.pop(),se.name="atom",se.value="{}",se.raw="{}",se.space=!1);break;case"r_brace":Z.length>0&&Z[Z.length-1].name==="l_brace"&&(se=Z.pop(),se.name="atom",se.value="[]",se.raw="[]",se.space=!1);break}se.len=y,Z.push(se),Fe=!1}var Pt=this.set_last_tokens(Z);return Pt.length===0?null:Pt};function Y(w,b,y,F,z){if(!b[y])return{type:f,value:P.error.syntax(b[y-1],"expression expected",!0)};var Z;if(F==="0"){var $=b[y];switch($.name){case"number":return{type:p,len:y+1,value:new P.type.Num($.value,$.float)};case"variable":return{type:p,len:y+1,value:new P.type.Var($.value)};case"string":var se;switch(w.get_flag("double_quotes").id){case"atom":se=new _($.value,[]);break;case"codes":se=new _("[]",[]);for(var xe=$.value.length-1;xe>=0;xe--)se=new _(".",[new P.type.Num(n($.value,xe),!1),se]);break;case"chars":se=new _("[]",[]);for(var xe=$.value.length-1;xe>=0;xe--)se=new _(".",[new P.type.Term($.value.charAt(xe),[]),se]);break}return{type:p,len:y+1,value:se};case"l_paren":var Pt=Y(w,b,y+1,w.__get_max_priority(),!0);return Pt.type!==p?Pt:b[Pt.len]&&b[Pt.len].name==="r_paren"?(Pt.len++,Pt):{type:f,derived:!0,value:P.error.syntax(b[Pt.len]?b[Pt.len]:b[Pt.len-1],") or operator expected",!b[Pt.len])};case"l_bracket":var Pt=Y(w,b,y+1,w.__get_max_priority(),!0);return Pt.type!==p?Pt:b[Pt.len]&&b[Pt.len].name==="r_bracket"?(Pt.len++,Pt.value=new _("{}",[Pt.value]),Pt):{type:f,derived:!0,value:P.error.syntax(b[Pt.len]?b[Pt.len]:b[Pt.len-1],"} or operator expected",!b[Pt.len])}}var Fe=te(w,b,y,z);return Fe.type===p||Fe.derived||(Fe=ie(w,b,y),Fe.type===p||Fe.derived)?Fe:{type:f,derived:!1,value:P.error.syntax(b[y],"unexpected token")}}var ut=w.__get_max_priority(),Ct=w.__get_next_priority(F),qt=y;if(b[y].name==="atom"&&b[y+1]&&(b[y].space||b[y+1].name!=="l_paren")){var $=b[y++],ir=w.__lookup_operator_classes(F,$.value);if(ir&&ir.indexOf("fy")>-1){var Pt=Y(w,b,y,F,z);if(Pt.type!==f)return $.value==="-"&&!$.space&&P.type.is_number(Pt.value)?{value:new P.type.Num(-Pt.value.value,Pt.value.is_float),len:Pt.len,type:p}:{value:new P.type.Term($.value,[Pt.value]),len:Pt.len,type:p};Z=Pt}else if(ir&&ir.indexOf("fx")>-1){var Pt=Y(w,b,y,Ct,z);if(Pt.type!==f)return{value:new P.type.Term($.value,[Pt.value]),len:Pt.len,type:p};Z=Pt}}y=qt;var Pt=Y(w,b,y,Ct,z);if(Pt.type===p){y=Pt.len;var $=b[y];if(b[y]&&(b[y].name==="atom"&&w.__lookup_operator_classes(F,$.value)||b[y].name==="bar"&&w.__lookup_operator_classes(F,"|"))){var dn=Ct,Pr=F,ir=w.__lookup_operator_classes(F,$.value);if(ir.indexOf("xf")>-1)return{value:new P.type.Term($.value,[Pt.value]),len:++Pt.len,type:p};if(ir.indexOf("xfx")>-1){var Ir=Y(w,b,y+1,dn,z);return Ir.type===p?{value:new P.type.Term($.value,[Pt.value,Ir.value]),len:Ir.len,type:p}:(Ir.derived=!0,Ir)}else if(ir.indexOf("xfy")>-1){var Ir=Y(w,b,y+1,Pr,z);return Ir.type===p?{value:new P.type.Term($.value,[Pt.value,Ir.value]),len:Ir.len,type:p}:(Ir.derived=!0,Ir)}else if(Pt.type!==f)for(;;){y=Pt.len;var $=b[y];if($&&$.name==="atom"&&w.__lookup_operator_classes(F,$.value)){var ir=w.__lookup_operator_classes(F,$.value);if(ir.indexOf("yf")>-1)Pt={value:new P.type.Term($.value,[Pt.value]),len:++y,type:p};else if(ir.indexOf("yfx")>-1){var Ir=Y(w,b,++y,dn,z);if(Ir.type===f)return Ir.derived=!0,Ir;y=Ir.len,Pt={value:new P.type.Term($.value,[Pt.value,Ir.value]),len:y,type:p}}else break}else break}}else Z={type:f,value:P.error.syntax(b[Pt.len-1],"operator expected")};return Pt}return Pt}function te(w,b,y,F){if(!b[y]||b[y].name==="atom"&&b[y].raw==="."&&!F&&(b[y].space||!b[y+1]||b[y+1].name!=="l_paren"))return{type:f,derived:!1,value:P.error.syntax(b[y-1],"unfounded token")};var z=b[y],Z=[];if(b[y].name==="atom"&&b[y].raw!==","){if(y++,b[y-1].space)return{type:p,len:y,value:new P.type.Term(z.value,Z)};if(b[y]&&b[y].name==="l_paren"){if(b[y+1]&&b[y+1].name==="r_paren")return{type:f,derived:!0,value:P.error.syntax(b[y+1],"argument expected")};var $=Y(w,b,++y,"999",!0);if($.type===f)return $.derived?$:{type:f,derived:!0,value:P.error.syntax(b[y]?b[y]:b[y-1],"argument expected",!b[y])};for(Z.push($.value),y=$.len;b[y]&&b[y].name==="atom"&&b[y].value===",";){if($=Y(w,b,y+1,"999",!0),$.type===f)return $.derived?$:{type:f,derived:!0,value:P.error.syntax(b[y+1]?b[y+1]:b[y],"argument expected",!b[y+1])};Z.push($.value),y=$.len}if(b[y]&&b[y].name==="r_paren")y++;else return{type:f,derived:!0,value:P.error.syntax(b[y]?b[y]:b[y-1],", or ) expected",!b[y])}}return{type:p,len:y,value:new P.type.Term(z.value,Z)}}return{type:f,derived:!1,value:P.error.syntax(b[y],"term expected")}}function ie(w,b,y){if(!b[y])return{type:f,derived:!1,value:P.error.syntax(b[y-1],"[ expected")};if(b[y]&&b[y].name==="l_brace"){var F=Y(w,b,++y,"999",!0),z=[F.value],Z=void 0;if(F.type===f)return b[y]&&b[y].name==="r_brace"?{type:p,len:y+1,value:new P.type.Term("[]",[])}:{type:f,derived:!0,value:P.error.syntax(b[y],"] expected")};for(y=F.len;b[y]&&b[y].name==="atom"&&b[y].value===",";){if(F=Y(w,b,y+1,"999",!0),F.type===f)return F.derived?F:{type:f,derived:!0,value:P.error.syntax(b[y+1]?b[y+1]:b[y],"argument expected",!b[y+1])};z.push(F.value),y=F.len}var $=!1;if(b[y]&&b[y].name==="bar"){if($=!0,F=Y(w,b,y+1,"999",!0),F.type===f)return F.derived?F:{type:f,derived:!0,value:P.error.syntax(b[y+1]?b[y+1]:b[y],"argument expected",!b[y+1])};Z=F.value,y=F.len}return b[y]&&b[y].name==="r_brace"?{type:p,len:y+1,value:g(z,Z)}:{type:f,derived:!0,value:P.error.syntax(b[y]?b[y]:b[y-1],$?"] expected":", or | or ] expected",!b[y])}}return{type:f,derived:!1,value:P.error.syntax(b[y],"list expected")}}function ue(w,b,y){var F=b[y].line,z=Y(w,b,y,w.__get_max_priority(),!1),Z=null,$;if(z.type!==f)if(y=z.len,b[y]&&b[y].name==="atom"&&b[y].raw===".")if(y++,P.type.is_term(z.value)){if(z.value.indicator===":-/2"?(Z=new P.type.Rule(z.value.args[0],Ee(z.value.args[1])),$={value:Z,len:y,type:p}):z.value.indicator==="-->/2"?(Z=Ae(new P.type.Rule(z.value.args[0],z.value.args[1]),w),Z.body=Ee(Z.body),$={value:Z,len:y,type:P.type.is_rule(Z)?p:f}):(Z=new P.type.Rule(z.value,null),$={value:Z,len:y,type:p}),Z){var se=Z.singleton_variables();se.length>0&&w.throw_warning(P.warning.singleton(se,Z.head.indicator,F))}return $}else return{type:f,value:P.error.syntax(b[y],"callable expected")};else return{type:f,value:P.error.syntax(b[y]?b[y]:b[y-1],". or operator expected")};return z}function ae(w,b,y){y=y||{},y.from=y.from?y.from:"$tau-js",y.reconsult=y.reconsult!==void 0?y.reconsult:!0;var F=new U(w),z={},Z;F.new_text(b);var $=0,se=F.get_tokens($);do{if(se===null||!se[$])break;var xe=ue(w,se,$);if(xe.type===f)return new _("throw",[xe.value]);if(xe.value.body===null&&xe.value.head.indicator==="?-/1"){var Fe=new ct(w.session);Fe.add_goal(xe.value.head.args[0]),Fe.answer(function(Ct){P.type.is_error(Ct)?w.throw_warning(Ct.args[0]):(Ct===!1||Ct===null)&&w.throw_warning(P.warning.failed_goal(xe.value.head.args[0],xe.len))}),$=xe.len;var ut=!0}else if(xe.value.body===null&&xe.value.head.indicator===":-/1"){var ut=w.run_directive(xe.value.head.args[0]);$=xe.len,xe.value.head.args[0].indicator==="char_conversion/2"&&(se=F.get_tokens($),$=0)}else{Z=xe.value.head.indicator,y.reconsult!==!1&&z[Z]!==!0&&!w.is_multifile_predicate(Z)&&(w.session.rules[Z]=a(w.session.rules[Z]||[],function(qt){return qt.dynamic}),z[Z]=!0);var ut=w.add_rule(xe.value,y);$=xe.len}if(!ut)return ut}while(!0);return!0}function de(w,b){var y=new U(w);y.new_text(b);var F=0;do{var z=y.get_tokens(F);if(z===null)break;var Z=Y(w,z,0,w.__get_max_priority(),!1);if(Z.type!==f){var $=Z.len,se=$;if(z[$]&&z[$].name==="atom"&&z[$].raw===".")w.add_goal(Ee(Z.value));else{var xe=z[$];return new _("throw",[P.error.syntax(xe||z[$-1],". or operator expected",!xe)])}F=Z.len+1}else return new _("throw",[Z.value])}while(!0);return!0}function Ae(w,b){w=w.rename(b);var y=b.next_free_variable(),F=Ce(w.body,y,b);return F.error?F.value:(w.body=F.value,w.head.args=w.head.args.concat([y,F.variable]),w.head=new _(w.head.id,w.head.args),w)}function Ce(w,b,y){var F;if(P.type.is_term(w)&&w.indicator==="!/0")return{value:w,variable:b,error:!1};if(P.type.is_term(w)&&w.indicator===",/2"){var z=Ce(w.args[0],b,y);if(z.error)return z;var Z=Ce(w.args[1],z.variable,y);return Z.error?Z:{value:new _(",",[z.value,Z.value]),variable:Z.variable,error:!1}}else{if(P.type.is_term(w)&&w.indicator==="{}/1")return{value:w.args[0],variable:b,error:!1};if(P.type.is_empty_list(w))return{value:new _("true",[]),variable:b,error:!1};if(P.type.is_list(w)){F=y.next_free_variable();for(var $=w,se;$.indicator==="./2";)se=$,$=$.args[1];return P.type.is_variable($)?{value:P.error.instantiation("DCG"),variable:b,error:!0}:P.type.is_empty_list($)?(se.args[1]=F,{value:new _("=",[b,w]),variable:F,error:!1}):{value:P.error.type("list",w,"DCG"),variable:b,error:!0}}else return P.type.is_callable(w)?(F=y.next_free_variable(),w.args=w.args.concat([b,F]),w=new _(w.id,w.args),{value:w,variable:F,error:!1}):{value:P.error.type("callable",w,"DCG"),variable:b,error:!0}}}function Ee(w){return P.type.is_variable(w)?new _("call",[w]):P.type.is_term(w)&&[",/2",";/2","->/2"].indexOf(w.indicator)!==-1?new _(w.id,[Ee(w.args[0]),Ee(w.args[1])]):w}function g(w,b){for(var y=b||new P.type.Term("[]",[]),F=w.length-1;F>=0;F--)y=new P.type.Term(".",[w[F],y]);return y}function Se(w,b){for(var y=w.length-1;y>=0;y--)w[y]===b&&w.splice(y,1)}function Be(w){for(var b={},y=[],F=0;F=0;b--)if(w.charAt(b)==="/")return new _("/",[new _(w.substring(0,b)),new Qe(parseInt(w.substring(b+1)),!1)])}function De(w){this.id=w}function Qe(w,b){this.is_float=b!==void 0?b:parseInt(w)!==w,this.value=this.is_float?w:parseInt(w)}var it=0;function _(w,b,y){this.ref=y||++it,this.id=w,this.args=b||[],this.indicator=w+"/"+this.args.length}var tt=0;function Ne(w,b,y,F,z,Z){this.id=tt++,this.stream=w,this.mode=b,this.alias=y,this.type=F!==void 0?F:"text",this.reposition=z!==void 0?z:!0,this.eof_action=Z!==void 0?Z:"eof_code",this.position=this.mode==="append"?"end_of_stream":0,this.output=this.mode==="write"||this.mode==="append",this.input=this.mode==="read"}function ke(w){w=w||{},this.links=w}function be(w,b,y){b=b||new ke,y=y||null,this.goal=w,this.substitution=b,this.parent=y}function je(w,b,y){this.head=w,this.body=b,this.dynamic=y||!1}function Re(w){w=w===void 0||w<=0?1e3:w,this.rules={},this.src_predicates={},this.rename=0,this.modules=[],this.thread=new ct(this),this.total_threads=1,this.renamed_variables={},this.public_predicates={},this.multifile_predicates={},this.limit=w,this.streams={user_input:new Ne(typeof tc<"u"&&tc.exports?nodejs_user_input:tau_user_input,"read","user_input","text",!1,"reset"),user_output:new Ne(typeof tc<"u"&&tc.exports?nodejs_user_output:tau_user_output,"write","user_output","text",!1,"eof_code")},this.file_system=typeof tc<"u"&&tc.exports?nodejs_file_system:tau_file_system,this.standard_input=this.streams.user_input,this.standard_output=this.streams.user_output,this.current_input=this.streams.user_input,this.current_output=this.streams.user_output,this.format_success=function(b){return b.substitution},this.format_error=function(b){return b.goal},this.flag={bounded:P.flag.bounded.value,max_integer:P.flag.max_integer.value,min_integer:P.flag.min_integer.value,integer_rounding_function:P.flag.integer_rounding_function.value,char_conversion:P.flag.char_conversion.value,debug:P.flag.debug.value,max_arity:P.flag.max_arity.value,unknown:P.flag.unknown.value,double_quotes:P.flag.double_quotes.value,occurs_check:P.flag.occurs_check.value,dialect:P.flag.dialect.value,version_data:P.flag.version_data.value,nodejs:P.flag.nodejs.value},this.__loaded_modules=[],this.__char_conversion={},this.__operators={1200:{":-":["fx","xfx"],"-->":["xfx"],"?-":["fx"]},1100:{";":["xfy"]},1050:{"->":["xfy"]},1e3:{",":["xfy"]},900:{"\\+":["fy"]},700:{"=":["xfx"],"\\=":["xfx"],"==":["xfx"],"\\==":["xfx"],"@<":["xfx"],"@=<":["xfx"],"@>":["xfx"],"@>=":["xfx"],"=..":["xfx"],is:["xfx"],"=:=":["xfx"],"=\\=":["xfx"],"<":["xfx"],"=<":["xfx"],">":["xfx"],">=":["xfx"]},600:{":":["xfy"]},500:{"+":["yfx"],"-":["yfx"],"/\\":["yfx"],"\\/":["yfx"]},400:{"*":["yfx"],"/":["yfx"],"//":["yfx"],rem:["yfx"],mod:["yfx"],"<<":["yfx"],">>":["yfx"]},200:{"**":["xfx"],"^":["xfy"],"-":["fy"],"+":["fy"],"\\":["fy"]}}}function ct(w){this.epoch=Date.now(),this.session=w,this.session.total_threads++,this.total_steps=0,this.cpu_time=0,this.cpu_time_last=0,this.points=[],this.debugger=!1,this.debugger_states=[],this.level="top_level/0",this.__calls=[],this.current_limit=this.session.limit,this.warnings=[]}function Me(w,b,y){this.id=w,this.rules=b,this.exports=y,P.module[w]=this}Me.prototype.exports_predicate=function(w){return this.exports.indexOf(w)!==-1},De.prototype.unify=function(w,b){if(b&&t(w.variables(),this.id)!==-1&&!P.type.is_variable(w))return null;var y={};return y[this.id]=w,new ke(y)},Qe.prototype.unify=function(w,b){return P.type.is_number(w)&&this.value===w.value&&this.is_float===w.is_float?new ke:null},_.prototype.unify=function(w,b){if(P.type.is_term(w)&&this.indicator===w.indicator){for(var y=new ke,F=0;F=0){var F=this.args[0].value,z=Math.floor(F/26),Z=F%26;return"ABCDEFGHIJKLMNOPQRSTUVWXYZ"[Z]+(z!==0?z:"")}switch(this.indicator){case"[]/0":case"{}/0":case"!/0":return this.id;case"{}/1":return"{"+this.args[0].toString(w)+"}";case"./2":for(var $="["+this.args[0].toString(w),se=this.args[1];se.indicator==="./2";)$+=", "+se.args[0].toString(w),se=se.args[1];return se.indicator!=="[]/0"&&($+="|"+se.toString(w)),$+="]",$;case",/2":return"("+this.args[0].toString(w)+", "+this.args[1].toString(w)+")";default:var xe=this.id,Fe=w.session?w.session.lookup_operator(this.id,this.args.length):null;if(w.session===void 0||w.ignore_ops||Fe===null)return w.quoted&&!/^(!|,|;|[a-z][0-9a-zA-Z_]*)$/.test(xe)&&xe!=="{}"&&xe!=="[]"&&(xe="'"+x(xe)+"'"),xe+(this.args.length?"("+s(this.args,function(ir){return ir.toString(w)}).join(", ")+")":"");var ut=Fe.priority>b.priority||Fe.priority===b.priority&&(Fe.class==="xfy"&&this.indicator!==b.indicator||Fe.class==="yfx"&&this.indicator!==b.indicator||this.indicator===b.indicator&&Fe.class==="yfx"&&y==="right"||this.indicator===b.indicator&&Fe.class==="xfy"&&y==="left");Fe.indicator=this.indicator;var Ct=ut?"(":"",qt=ut?")":"";return this.args.length===0?"("+this.id+")":["fy","fx"].indexOf(Fe.class)!==-1?Ct+xe+" "+this.args[0].toString(w,Fe)+qt:["yf","xf"].indexOf(Fe.class)!==-1?Ct+this.args[0].toString(w,Fe)+" "+xe+qt:Ct+this.args[0].toString(w,Fe,"left")+" "+this.id+" "+this.args[1].toString(w,Fe,"right")+qt}},Ne.prototype.toString=function(w){return"("+this.id+")"},ke.prototype.toString=function(w){var b="{";for(var y in this.links)this.links.hasOwnProperty(y)&&(b!=="{"&&(b+=", "),b+=y+"/"+this.links[y].toString(w));return b+="}",b},be.prototype.toString=function(w){return this.goal===null?"<"+this.substitution.toString(w)+">":"<"+this.goal.toString(w)+", "+this.substitution.toString(w)+">"},je.prototype.toString=function(w){return this.body?this.head.toString(w)+" :- "+this.body.toString(w)+".":this.head.toString(w)+"."},Re.prototype.toString=function(w){for(var b="",y=0;y=0;z--)F=new _(".",[b[z],F]);return F}return new _(this.id,s(this.args,function(Z){return Z.apply(w)}),this.ref)},Ne.prototype.apply=function(w){return this},je.prototype.apply=function(w){return new je(this.head.apply(w),this.body!==null?this.body.apply(w):null)},ke.prototype.apply=function(w){var b,y={};for(b in this.links)this.links.hasOwnProperty(b)&&(y[b]=this.links[b].apply(w));return new ke(y)},_.prototype.select=function(){for(var w=this;w.indicator===",/2";)w=w.args[0];return w},_.prototype.replace=function(w){return this.indicator===",/2"?this.args[0].indicator===",/2"?new _(",",[this.args[0].replace(w),this.args[1]]):w===null?this.args[1]:new _(",",[w,this.args[1]]):w},_.prototype.search=function(w){if(P.type.is_term(w)&&w.ref!==void 0&&this.ref===w.ref)return!0;for(var b=0;bb&&F0&&(b=this.head_point().substitution.domain());t(b,P.format_variable(this.session.rename))!==-1;)this.session.rename++;if(w.id==="_")return new De(P.format_variable(this.session.rename));this.session.renamed_variables[w.id]=P.format_variable(this.session.rename)}return new De(this.session.renamed_variables[w.id])},Re.prototype.next_free_variable=function(){return this.thread.next_free_variable()},ct.prototype.next_free_variable=function(){this.session.rename++;var w=[];for(this.points.length>0&&(w=this.head_point().substitution.domain());t(w,P.format_variable(this.session.rename))!==-1;)this.session.rename++;return new De(P.format_variable(this.session.rename))},Re.prototype.is_public_predicate=function(w){return!this.public_predicates.hasOwnProperty(w)||this.public_predicates[w]===!0},ct.prototype.is_public_predicate=function(w){return this.session.is_public_predicate(w)},Re.prototype.is_multifile_predicate=function(w){return this.multifile_predicates.hasOwnProperty(w)&&this.multifile_predicates[w]===!0},ct.prototype.is_multifile_predicate=function(w){return this.session.is_multifile_predicate(w)},Re.prototype.prepend=function(w){return this.thread.prepend(w)},ct.prototype.prepend=function(w){for(var b=w.length-1;b>=0;b--)this.points.push(w[b])},Re.prototype.success=function(w,b){return this.thread.success(w,b)},ct.prototype.success=function(w,y){var y=typeof y>"u"?w:y;this.prepend([new be(w.goal.replace(null),w.substitution,y)])},Re.prototype.throw_error=function(w){return this.thread.throw_error(w)},ct.prototype.throw_error=function(w){this.prepend([new be(new _("throw",[w]),new ke,null,null)])},Re.prototype.step_rule=function(w,b){return this.thread.step_rule(w,b)},ct.prototype.step_rule=function(w,b){var y=b.indicator;if(w==="user"&&(w=null),w===null&&this.session.rules.hasOwnProperty(y))return this.session.rules[y];for(var F=w===null?this.session.modules:t(this.session.modules,w)===-1?[]:[w],z=0;z1)&&this.again()},Re.prototype.answers=function(w,b,y){return this.thread.answers(w,b,y)},ct.prototype.answers=function(w,b,y){var F=b||1e3,z=this;if(b<=0){y&&y();return}this.answer(function(Z){w(Z),Z!==!1?setTimeout(function(){z.answers(w,b-1,y)},1):y&&y()})},Re.prototype.again=function(w){return this.thread.again(w)},ct.prototype.again=function(w){for(var b,y=Date.now();this.__calls.length>0;){for(this.warnings=[],w!==!1&&(this.current_limit=this.session.limit);this.current_limit>0&&this.points.length>0&&this.head_point().goal!==null&&!P.type.is_error(this.head_point().goal);)if(this.current_limit--,this.step()===!0)return;var F=Date.now();this.cpu_time_last=F-y,this.cpu_time+=this.cpu_time_last;var z=this.__calls.shift();this.current_limit<=0?z(null):this.points.length===0?z(!1):P.type.is_error(this.head_point().goal)?(b=this.session.format_error(this.points.pop()),this.points=[],z(b)):(this.debugger&&this.debugger_states.push(this.head_point()),b=this.session.format_success(this.points.pop()),z(b))}},Re.prototype.unfold=function(w){if(w.body===null)return!1;var b=w.head,y=w.body,F=y.select(),z=new ct(this),Z=[];z.add_goal(F),z.step();for(var $=z.points.length-1;$>=0;$--){var se=z.points[$],xe=b.apply(se.substitution),Fe=y.replace(se.goal);Fe!==null&&(Fe=Fe.apply(se.substitution)),Z.push(new je(xe,Fe))}var ut=this.rules[b.indicator],Ct=t(ut,w);return Z.length>0&&Ct!==-1?(ut.splice.apply(ut,[Ct,1].concat(Z)),!0):!1},ct.prototype.unfold=function(w){return this.session.unfold(w)},De.prototype.interpret=function(w){return P.error.instantiation(w.level)},Qe.prototype.interpret=function(w){return this},_.prototype.interpret=function(w){return P.type.is_unitary_list(this)?this.args[0].interpret(w):P.operate(w,this)},De.prototype.compare=function(w){return this.idw.id?1:0},Qe.prototype.compare=function(w){if(this.value===w.value&&this.is_float===w.is_float)return 0;if(this.valuew.value)return 1},_.prototype.compare=function(w){if(this.args.lengthw.args.length||this.args.length===w.args.length&&this.id>w.id)return 1;for(var b=0;bF)return 1;if(w.constructor===Qe){if(w.is_float&&b.is_float)return 0;if(w.is_float)return-1;if(b.is_float)return 1}return 0},is_substitution:function(w){return w instanceof ke},is_state:function(w){return w instanceof be},is_rule:function(w){return w instanceof je},is_variable:function(w){return w instanceof De},is_stream:function(w){return w instanceof Ne},is_anonymous_var:function(w){return w instanceof De&&w.id==="_"},is_callable:function(w){return w instanceof _},is_number:function(w){return w instanceof Qe},is_integer:function(w){return w instanceof Qe&&!w.is_float},is_float:function(w){return w instanceof Qe&&w.is_float},is_term:function(w){return w instanceof _},is_atom:function(w){return w instanceof _&&w.args.length===0},is_ground:function(w){if(w instanceof De)return!1;if(w instanceof _){for(var b=0;b0},is_list:function(w){return w instanceof _&&(w.indicator==="[]/0"||w.indicator==="./2")},is_empty_list:function(w){return w instanceof _&&w.indicator==="[]/0"},is_non_empty_list:function(w){return w instanceof _&&w.indicator==="./2"},is_fully_list:function(w){for(;w instanceof _&&w.indicator==="./2";)w=w.args[1];return w instanceof De||w instanceof _&&w.indicator==="[]/0"},is_instantiated_list:function(w){for(;w instanceof _&&w.indicator==="./2";)w=w.args[1];return w instanceof _&&w.indicator==="[]/0"},is_unitary_list:function(w){return w instanceof _&&w.indicator==="./2"&&w.args[1]instanceof _&&w.args[1].indicator==="[]/0"},is_character:function(w){return w instanceof _&&(w.id.length===1||w.id.length>0&&w.id.length<=2&&n(w.id,0)>=65536)},is_character_code:function(w){return w instanceof Qe&&!w.is_float&&w.value>=0&&w.value<=1114111},is_byte:function(w){return w instanceof Qe&&!w.is_float&&w.value>=0&&w.value<=255},is_operator:function(w){return w instanceof _&&P.arithmetic.evaluation[w.indicator]},is_directive:function(w){return w instanceof _&&P.directive[w.indicator]!==void 0},is_builtin:function(w){return w instanceof _&&P.predicate[w.indicator]!==void 0},is_error:function(w){return w instanceof _&&w.indicator==="throw/1"},is_predicate_indicator:function(w){return w instanceof _&&w.indicator==="//2"&&w.args[0]instanceof _&&w.args[0].args.length===0&&w.args[1]instanceof Qe&&w.args[1].is_float===!1},is_flag:function(w){return w instanceof _&&w.args.length===0&&P.flag[w.id]!==void 0},is_value_flag:function(w,b){if(!P.type.is_flag(w))return!1;for(var y in P.flag[w.id].allowed)if(P.flag[w.id].allowed.hasOwnProperty(y)&&P.flag[w.id].allowed[y].equals(b))return!0;return!1},is_io_mode:function(w){return P.type.is_atom(w)&&["read","write","append"].indexOf(w.id)!==-1},is_stream_option:function(w){return P.type.is_term(w)&&(w.indicator==="alias/1"&&P.type.is_atom(w.args[0])||w.indicator==="reposition/1"&&P.type.is_atom(w.args[0])&&(w.args[0].id==="true"||w.args[0].id==="false")||w.indicator==="type/1"&&P.type.is_atom(w.args[0])&&(w.args[0].id==="text"||w.args[0].id==="binary")||w.indicator==="eof_action/1"&&P.type.is_atom(w.args[0])&&(w.args[0].id==="error"||w.args[0].id==="eof_code"||w.args[0].id==="reset"))},is_stream_position:function(w){return P.type.is_integer(w)&&w.value>=0||P.type.is_atom(w)&&(w.id==="end_of_stream"||w.id==="past_end_of_stream")},is_stream_property:function(w){return P.type.is_term(w)&&(w.indicator==="input/0"||w.indicator==="output/0"||w.indicator==="alias/1"&&(P.type.is_variable(w.args[0])||P.type.is_atom(w.args[0]))||w.indicator==="file_name/1"&&(P.type.is_variable(w.args[0])||P.type.is_atom(w.args[0]))||w.indicator==="position/1"&&(P.type.is_variable(w.args[0])||P.type.is_stream_position(w.args[0]))||w.indicator==="reposition/1"&&(P.type.is_variable(w.args[0])||P.type.is_atom(w.args[0])&&(w.args[0].id==="true"||w.args[0].id==="false"))||w.indicator==="type/1"&&(P.type.is_variable(w.args[0])||P.type.is_atom(w.args[0])&&(w.args[0].id==="text"||w.args[0].id==="binary"))||w.indicator==="mode/1"&&(P.type.is_variable(w.args[0])||P.type.is_atom(w.args[0])&&(w.args[0].id==="read"||w.args[0].id==="write"||w.args[0].id==="append"))||w.indicator==="eof_action/1"&&(P.type.is_variable(w.args[0])||P.type.is_atom(w.args[0])&&(w.args[0].id==="error"||w.args[0].id==="eof_code"||w.args[0].id==="reset"))||w.indicator==="end_of_stream/1"&&(P.type.is_variable(w.args[0])||P.type.is_atom(w.args[0])&&(w.args[0].id==="at"||w.args[0].id==="past"||w.args[0].id==="not")))},is_streamable:function(w){return w.__proto__.stream!==void 0},is_read_option:function(w){return P.type.is_term(w)&&["variables/1","variable_names/1","singletons/1"].indexOf(w.indicator)!==-1},is_write_option:function(w){return P.type.is_term(w)&&(w.indicator==="quoted/1"&&P.type.is_atom(w.args[0])&&(w.args[0].id==="true"||w.args[0].id==="false")||w.indicator==="ignore_ops/1"&&P.type.is_atom(w.args[0])&&(w.args[0].id==="true"||w.args[0].id==="false")||w.indicator==="numbervars/1"&&P.type.is_atom(w.args[0])&&(w.args[0].id==="true"||w.args[0].id==="false"))},is_close_option:function(w){return P.type.is_term(w)&&w.indicator==="force/1"&&P.type.is_atom(w.args[0])&&(w.args[0].id==="true"||w.args[0].id==="false")},is_modifiable_flag:function(w){return P.type.is_flag(w)&&P.flag[w.id].changeable},is_module:function(w){return w instanceof _&&w.indicator==="library/1"&&w.args[0]instanceof _&&w.args[0].args.length===0&&P.module[w.args[0].id]!==void 0}},arithmetic:{evaluation:{"e/0":{type_args:null,type_result:!0,fn:function(w){return Math.E}},"pi/0":{type_args:null,type_result:!0,fn:function(w){return Math.PI}},"tau/0":{type_args:null,type_result:!0,fn:function(w){return 2*Math.PI}},"epsilon/0":{type_args:null,type_result:!0,fn:function(w){return Number.EPSILON}},"+/1":{type_args:null,type_result:null,fn:function(w,b){return w}},"-/1":{type_args:null,type_result:null,fn:function(w,b){return-w}},"\\/1":{type_args:!1,type_result:!1,fn:function(w,b){return~w}},"abs/1":{type_args:null,type_result:null,fn:function(w,b){return Math.abs(w)}},"sign/1":{type_args:null,type_result:null,fn:function(w,b){return Math.sign(w)}},"float_integer_part/1":{type_args:!0,type_result:!1,fn:function(w,b){return parseInt(w)}},"float_fractional_part/1":{type_args:!0,type_result:!0,fn:function(w,b){return w-parseInt(w)}},"float/1":{type_args:null,type_result:!0,fn:function(w,b){return parseFloat(w)}},"floor/1":{type_args:!0,type_result:!1,fn:function(w,b){return Math.floor(w)}},"truncate/1":{type_args:!0,type_result:!1,fn:function(w,b){return parseInt(w)}},"round/1":{type_args:!0,type_result:!1,fn:function(w,b){return Math.round(w)}},"ceiling/1":{type_args:!0,type_result:!1,fn:function(w,b){return Math.ceil(w)}},"sin/1":{type_args:null,type_result:!0,fn:function(w,b){return Math.sin(w)}},"cos/1":{type_args:null,type_result:!0,fn:function(w,b){return Math.cos(w)}},"tan/1":{type_args:null,type_result:!0,fn:function(w,b){return Math.tan(w)}},"asin/1":{type_args:null,type_result:!0,fn:function(w,b){return Math.asin(w)}},"acos/1":{type_args:null,type_result:!0,fn:function(w,b){return Math.acos(w)}},"atan/1":{type_args:null,type_result:!0,fn:function(w,b){return Math.atan(w)}},"atan2/2":{type_args:null,type_result:!0,fn:function(w,b,y){return Math.atan2(w,b)}},"exp/1":{type_args:null,type_result:!0,fn:function(w,b){return Math.exp(w)}},"sqrt/1":{type_args:null,type_result:!0,fn:function(w,b){return Math.sqrt(w)}},"log/1":{type_args:null,type_result:!0,fn:function(w,b){return w>0?Math.log(w):P.error.evaluation("undefined",b.__call_indicator)}},"+/2":{type_args:null,type_result:null,fn:function(w,b,y){return w+b}},"-/2":{type_args:null,type_result:null,fn:function(w,b,y){return w-b}},"*/2":{type_args:null,type_result:null,fn:function(w,b,y){return w*b}},"//2":{type_args:null,type_result:!0,fn:function(w,b,y){return b?w/b:P.error.evaluation("zero_division",y.__call_indicator)}},"///2":{type_args:!1,type_result:!1,fn:function(w,b,y){return b?parseInt(w/b):P.error.evaluation("zero_division",y.__call_indicator)}},"**/2":{type_args:null,type_result:!0,fn:function(w,b,y){return Math.pow(w,b)}},"^/2":{type_args:null,type_result:null,fn:function(w,b,y){return Math.pow(w,b)}},"<>/2":{type_args:!1,type_result:!1,fn:function(w,b,y){return w>>b}},"/\\/2":{type_args:!1,type_result:!1,fn:function(w,b,y){return w&b}},"\\//2":{type_args:!1,type_result:!1,fn:function(w,b,y){return w|b}},"xor/2":{type_args:!1,type_result:!1,fn:function(w,b,y){return w^b}},"rem/2":{type_args:!1,type_result:!1,fn:function(w,b,y){return b?w%b:P.error.evaluation("zero_division",y.__call_indicator)}},"mod/2":{type_args:!1,type_result:!1,fn:function(w,b,y){return b?w-parseInt(w/b)*b:P.error.evaluation("zero_division",y.__call_indicator)}},"max/2":{type_args:null,type_result:null,fn:function(w,b,y){return Math.max(w,b)}},"min/2":{type_args:null,type_result:null,fn:function(w,b,y){return Math.min(w,b)}}}},directive:{"dynamic/1":function(w,b){var y=b.args[0];if(P.type.is_variable(y))w.throw_error(P.error.instantiation(b.indicator));else if(!P.type.is_compound(y)||y.indicator!=="//2")w.throw_error(P.error.type("predicate_indicator",y,b.indicator));else if(P.type.is_variable(y.args[0])||P.type.is_variable(y.args[1]))w.throw_error(P.error.instantiation(b.indicator));else if(!P.type.is_atom(y.args[0]))w.throw_error(P.error.type("atom",y.args[0],b.indicator));else if(!P.type.is_integer(y.args[1]))w.throw_error(P.error.type("integer",y.args[1],b.indicator));else{var F=b.args[0].args[0].id+"/"+b.args[0].args[1].value;w.session.public_predicates[F]=!0,w.session.rules[F]||(w.session.rules[F]=[])}},"multifile/1":function(w,b){var y=b.args[0];P.type.is_variable(y)?w.throw_error(P.error.instantiation(b.indicator)):!P.type.is_compound(y)||y.indicator!=="//2"?w.throw_error(P.error.type("predicate_indicator",y,b.indicator)):P.type.is_variable(y.args[0])||P.type.is_variable(y.args[1])?w.throw_error(P.error.instantiation(b.indicator)):P.type.is_atom(y.args[0])?P.type.is_integer(y.args[1])?w.session.multifile_predicates[b.args[0].args[0].id+"/"+b.args[0].args[1].value]=!0:w.throw_error(P.error.type("integer",y.args[1],b.indicator)):w.throw_error(P.error.type("atom",y.args[0],b.indicator))},"set_prolog_flag/2":function(w,b){var y=b.args[0],F=b.args[1];P.type.is_variable(y)||P.type.is_variable(F)?w.throw_error(P.error.instantiation(b.indicator)):P.type.is_atom(y)?P.type.is_flag(y)?P.type.is_value_flag(y,F)?P.type.is_modifiable_flag(y)?w.session.flag[y.id]=F:w.throw_error(P.error.permission("modify","flag",y)):w.throw_error(P.error.domain("flag_value",new _("+",[y,F]),b.indicator)):w.throw_error(P.error.domain("prolog_flag",y,b.indicator)):w.throw_error(P.error.type("atom",y,b.indicator))},"use_module/1":function(w,b){var y=b.args[0];if(P.type.is_variable(y))w.throw_error(P.error.instantiation(b.indicator));else if(!P.type.is_term(y))w.throw_error(P.error.type("term",y,b.indicator));else if(P.type.is_module(y)){var F=y.args[0].id;t(w.session.modules,F)===-1&&w.session.modules.push(F)}},"char_conversion/2":function(w,b){var y=b.args[0],F=b.args[1];P.type.is_variable(y)||P.type.is_variable(F)?w.throw_error(P.error.instantiation(b.indicator)):P.type.is_character(y)?P.type.is_character(F)?y.id===F.id?delete w.session.__char_conversion[y.id]:w.session.__char_conversion[y.id]=F.id:w.throw_error(P.error.type("character",F,b.indicator)):w.throw_error(P.error.type("character",y,b.indicator))},"op/3":function(w,b){var y=b.args[0],F=b.args[1],z=b.args[2];if(P.type.is_variable(y)||P.type.is_variable(F)||P.type.is_variable(z))w.throw_error(P.error.instantiation(b.indicator));else if(!P.type.is_integer(y))w.throw_error(P.error.type("integer",y,b.indicator));else if(!P.type.is_atom(F))w.throw_error(P.error.type("atom",F,b.indicator));else if(!P.type.is_atom(z))w.throw_error(P.error.type("atom",z,b.indicator));else if(y.value<0||y.value>1200)w.throw_error(P.error.domain("operator_priority",y,b.indicator));else if(z.id===",")w.throw_error(P.error.permission("modify","operator",z,b.indicator));else if(z.id==="|"&&(y.value<1001||F.id.length!==3))w.throw_error(P.error.permission("modify","operator",z,b.indicator));else if(["fy","fx","yf","xf","xfx","yfx","xfy"].indexOf(F.id)===-1)w.throw_error(P.error.domain("operator_specifier",F,b.indicator));else{var Z={prefix:null,infix:null,postfix:null};for(var $ in w.session.__operators)if(w.session.__operators.hasOwnProperty($)){var se=w.session.__operators[$][z.id];se&&(t(se,"fx")!==-1&&(Z.prefix={priority:$,type:"fx"}),t(se,"fy")!==-1&&(Z.prefix={priority:$,type:"fy"}),t(se,"xf")!==-1&&(Z.postfix={priority:$,type:"xf"}),t(se,"yf")!==-1&&(Z.postfix={priority:$,type:"yf"}),t(se,"xfx")!==-1&&(Z.infix={priority:$,type:"xfx"}),t(se,"xfy")!==-1&&(Z.infix={priority:$,type:"xfy"}),t(se,"yfx")!==-1&&(Z.infix={priority:$,type:"yfx"}))}var xe;switch(F.id){case"fy":case"fx":xe="prefix";break;case"yf":case"xf":xe="postfix";break;default:xe="infix";break}if(((Z.prefix&&xe==="prefix"||Z.postfix&&xe==="postfix"||Z.infix&&xe==="infix")&&Z[xe].type!==F.id||Z.infix&&xe==="postfix"||Z.postfix&&xe==="infix")&&y.value!==0)w.throw_error(P.error.permission("create","operator",z,b.indicator));else return Z[xe]&&(Se(w.session.__operators[Z[xe].priority][z.id],F.id),w.session.__operators[Z[xe].priority][z.id].length===0&&delete w.session.__operators[Z[xe].priority][z.id]),y.value>0&&(w.session.__operators[y.value]||(w.session.__operators[y.value.toString()]={}),w.session.__operators[y.value][z.id]||(w.session.__operators[y.value][z.id]=[]),w.session.__operators[y.value][z.id].push(F.id)),!0}}},predicate:{"op/3":function(w,b,y){P.directive["op/3"](w,y)&&w.success(b)},"current_op/3":function(w,b,y){var F=y.args[0],z=y.args[1],Z=y.args[2],$=[];for(var se in w.session.__operators)for(var xe in w.session.__operators[se])for(var Fe=0;Fe/2"){var F=w.points,z=w.session.format_success,Z=w.session.format_error;w.session.format_success=function(Fe){return Fe.substitution},w.session.format_error=function(Fe){return Fe.goal},w.points=[new be(y.args[0].args[0],b.substitution,b)];var $=function(Fe){w.points=F,w.session.format_success=z,w.session.format_error=Z,Fe===!1?w.prepend([new be(b.goal.replace(y.args[1]),b.substitution,b)]):P.type.is_error(Fe)?w.throw_error(Fe.args[0]):Fe===null?(w.prepend([b]),w.__calls.shift()(null)):w.prepend([new be(b.goal.replace(y.args[0].args[1]).apply(Fe),b.substitution.apply(Fe),b)])};w.__calls.unshift($)}else{var se=new be(b.goal.replace(y.args[0]),b.substitution,b),xe=new be(b.goal.replace(y.args[1]),b.substitution,b);w.prepend([se,xe])}},"!/0":function(w,b,y){var F,z,Z=[];for(F=b,z=null;F.parent!==null&&F.parent.goal.search(y);)if(z=F,F=F.parent,F.goal!==null){var $=F.goal.select();if($&&$.id==="call"&&$.search(y)){F=z;break}}for(var se=w.points.length-1;se>=0;se--){for(var xe=w.points[se],Fe=xe.parent;Fe!==null&&Fe!==F.parent;)Fe=Fe.parent;Fe===null&&Fe!==F.parent&&Z.push(xe)}w.points=Z.reverse(),w.success(b)},"\\+/1":function(w,b,y){var F=y.args[0];P.type.is_variable(F)?w.throw_error(P.error.instantiation(w.level)):P.type.is_callable(F)?w.prepend([new be(b.goal.replace(new _(",",[new _(",",[new _("call",[F]),new _("!",[])]),new _("fail",[])])),b.substitution,b),new be(b.goal.replace(null),b.substitution,b)]):w.throw_error(P.error.type("callable",F,w.level))},"->/2":function(w,b,y){var F=b.goal.replace(new _(",",[y.args[0],new _(",",[new _("!"),y.args[1]])]));w.prepend([new be(F,b.substitution,b)])},"fail/0":function(w,b,y){},"false/0":function(w,b,y){},"true/0":function(w,b,y){w.success(b)},"call/1":ce(1),"call/2":ce(2),"call/3":ce(3),"call/4":ce(4),"call/5":ce(5),"call/6":ce(6),"call/7":ce(7),"call/8":ce(8),"once/1":function(w,b,y){var F=y.args[0];w.prepend([new be(b.goal.replace(new _(",",[new _("call",[F]),new _("!",[])])),b.substitution,b)])},"forall/2":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new be(b.goal.replace(new _("\\+",[new _(",",[new _("call",[F]),new _("\\+",[new _("call",[z])])])])),b.substitution,b)])},"repeat/0":function(w,b,y){w.prepend([new be(b.goal.replace(null),b.substitution,b),b])},"throw/1":function(w,b,y){P.type.is_variable(y.args[0])?w.throw_error(P.error.instantiation(w.level)):w.throw_error(y.args[0])},"catch/3":function(w,b,y){var F=w.points;w.points=[],w.prepend([new be(y.args[0],b.substitution,b)]);var z=w.session.format_success,Z=w.session.format_error;w.session.format_success=function(se){return se.substitution},w.session.format_error=function(se){return se.goal};var $=function(se){var xe=w.points;if(w.points=F,w.session.format_success=z,w.session.format_error=Z,P.type.is_error(se)){for(var Fe=[],ut=w.points.length-1;ut>=0;ut--){for(var ir=w.points[ut],Ct=ir.parent;Ct!==null&&Ct!==b.parent;)Ct=Ct.parent;Ct===null&&Ct!==b.parent&&Fe.push(ir)}w.points=Fe;var qt=w.get_flag("occurs_check").indicator==="true/0",ir=new be,Pt=P.unify(se.args[0],y.args[1],qt);Pt!==null?(ir.substitution=b.substitution.apply(Pt),ir.goal=b.goal.replace(y.args[2]).apply(Pt),ir.parent=b,w.prepend([ir])):w.throw_error(se.args[0])}else if(se!==!1){for(var dn=se===null?[]:[new be(b.goal.apply(se).replace(null),b.substitution.apply(se),b)],Pr=[],ut=xe.length-1;ut>=0;ut--){Pr.push(xe[ut]);var Ir=xe[ut].goal!==null?xe[ut].goal.select():null;if(P.type.is_term(Ir)&&Ir.indicator==="!/0")break}var Or=s(Pr,function(on){return on.goal===null&&(on.goal=new _("true",[])),on=new be(b.goal.replace(new _("catch",[on.goal,y.args[1],y.args[2]])),b.substitution.apply(on.substitution),on.parent),on.exclude=y.args[0].variables(),on}).reverse();w.prepend(Or),w.prepend(dn),se===null&&(this.current_limit=0,w.__calls.shift()(null))}};w.__calls.unshift($)},"=/2":function(w,b,y){var F=w.get_flag("occurs_check").indicator==="true/0",z=new be,Z=P.unify(y.args[0],y.args[1],F);Z!==null&&(z.goal=b.goal.apply(Z).replace(null),z.substitution=b.substitution.apply(Z),z.parent=b,w.prepend([z]))},"unify_with_occurs_check/2":function(w,b,y){var F=new be,z=P.unify(y.args[0],y.args[1],!0);z!==null&&(F.goal=b.goal.apply(z).replace(null),F.substitution=b.substitution.apply(z),F.parent=b,w.prepend([F]))},"\\=/2":function(w,b,y){var F=w.get_flag("occurs_check").indicator==="true/0",z=P.unify(y.args[0],y.args[1],F);z===null&&w.success(b)},"subsumes_term/2":function(w,b,y){var F=w.get_flag("occurs_check").indicator==="true/0",z=P.unify(y.args[1],y.args[0],F);z!==null&&y.args[1].apply(z).equals(y.args[1])&&w.success(b)},"findall/3":function(w,b,y){var F=y.args[0],z=y.args[1],Z=y.args[2];if(P.type.is_variable(z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_callable(z))w.throw_error(P.error.type("callable",z,y.indicator));else if(!P.type.is_variable(Z)&&!P.type.is_list(Z))w.throw_error(P.error.type("list",Z,y.indicator));else{var $=w.next_free_variable(),se=new _(",",[z,new _("=",[$,F])]),xe=w.points,Fe=w.session.limit,ut=w.session.format_success;w.session.format_success=function(ir){return ir.substitution},w.add_goal(se,!0,b);var Ct=[],qt=function(ir){if(ir!==!1&&ir!==null&&!P.type.is_error(ir))w.__calls.unshift(qt),Ct.push(ir.links[$.id]),w.session.limit=w.current_limit;else if(w.points=xe,w.session.limit=Fe,w.session.format_success=ut,P.type.is_error(ir))w.throw_error(ir.args[0]);else if(w.current_limit>0){for(var Pt=new _("[]"),dn=Ct.length-1;dn>=0;dn--)Pt=new _(".",[Ct[dn],Pt]);w.prepend([new be(b.goal.replace(new _("=",[Z,Pt])),b.substitution,b)])}};w.__calls.unshift(qt)}},"bagof/3":function(w,b,y){var F,z=y.args[0],Z=y.args[1],$=y.args[2];if(P.type.is_variable(Z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_callable(Z))w.throw_error(P.error.type("callable",Z,y.indicator));else if(!P.type.is_variable($)&&!P.type.is_list($))w.throw_error(P.error.type("list",$,y.indicator));else{var se=w.next_free_variable(),xe;Z.indicator==="^/2"?(xe=Z.args[0].variables(),Z=Z.args[1]):xe=[],xe=xe.concat(z.variables());for(var Fe=Z.variables().filter(function(Or){return t(xe,Or)===-1}),ut=new _("[]"),Ct=Fe.length-1;Ct>=0;Ct--)ut=new _(".",[new De(Fe[Ct]),ut]);var qt=new _(",",[Z,new _("=",[se,new _(",",[ut,z])])]),ir=w.points,Pt=w.session.limit,dn=w.session.format_success;w.session.format_success=function(Or){return Or.substitution},w.add_goal(qt,!0,b);var Pr=[],Ir=function(Or){if(Or!==!1&&Or!==null&&!P.type.is_error(Or)){w.__calls.unshift(Ir);var on=!1,li=Or.links[se.id].args[0],So=Or.links[se.id].args[1];for(var ns in Pr)if(Pr.hasOwnProperty(ns)){var so=Pr[ns];if(so.variables.equals(li)){so.answers.push(So),on=!0;break}}on||Pr.push({variables:li,answers:[So]}),w.session.limit=w.current_limit}else if(w.points=ir,w.session.limit=Pt,w.session.format_success=dn,P.type.is_error(Or))w.throw_error(Or.args[0]);else if(w.current_limit>0){for(var Do=[],ji=0;ji=0;bo--)oo=new _(".",[Or[bo],oo]);Do.push(new be(b.goal.replace(new _(",",[new _("=",[ut,Pr[ji].variables]),new _("=",[$,oo])])),b.substitution,b))}w.prepend(Do)}};w.__calls.unshift(Ir)}},"setof/3":function(w,b,y){var F,z=y.args[0],Z=y.args[1],$=y.args[2];if(P.type.is_variable(Z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_callable(Z))w.throw_error(P.error.type("callable",Z,y.indicator));else if(!P.type.is_variable($)&&!P.type.is_list($))w.throw_error(P.error.type("list",$,y.indicator));else{var se=w.next_free_variable(),xe;Z.indicator==="^/2"?(xe=Z.args[0].variables(),Z=Z.args[1]):xe=[],xe=xe.concat(z.variables());for(var Fe=Z.variables().filter(function(Or){return t(xe,Or)===-1}),ut=new _("[]"),Ct=Fe.length-1;Ct>=0;Ct--)ut=new _(".",[new De(Fe[Ct]),ut]);var qt=new _(",",[Z,new _("=",[se,new _(",",[ut,z])])]),ir=w.points,Pt=w.session.limit,dn=w.session.format_success;w.session.format_success=function(Or){return Or.substitution},w.add_goal(qt,!0,b);var Pr=[],Ir=function(Or){if(Or!==!1&&Or!==null&&!P.type.is_error(Or)){w.__calls.unshift(Ir);var on=!1,li=Or.links[se.id].args[0],So=Or.links[se.id].args[1];for(var ns in Pr)if(Pr.hasOwnProperty(ns)){var so=Pr[ns];if(so.variables.equals(li)){so.answers.push(So),on=!0;break}}on||Pr.push({variables:li,answers:[So]}),w.session.limit=w.current_limit}else if(w.points=ir,w.session.limit=Pt,w.session.format_success=dn,P.type.is_error(Or))w.throw_error(Or.args[0]);else if(w.current_limit>0){for(var Do=[],ji=0;ji=0;bo--)oo=new _(".",[Or[bo],oo]);Do.push(new be(b.goal.replace(new _(",",[new _("=",[ut,Pr[ji].variables]),new _("=",[$,oo])])),b.substitution,b))}w.prepend(Do)}};w.__calls.unshift(Ir)}},"functor/3":function(w,b,y){var F,z=y.args[0],Z=y.args[1],$=y.args[2];if(P.type.is_variable(z)&&(P.type.is_variable(Z)||P.type.is_variable($)))w.throw_error(P.error.instantiation("functor/3"));else if(!P.type.is_variable($)&&!P.type.is_integer($))w.throw_error(P.error.type("integer",y.args[2],"functor/3"));else if(!P.type.is_variable(Z)&&!P.type.is_atomic(Z))w.throw_error(P.error.type("atomic",y.args[1],"functor/3"));else if(P.type.is_integer(Z)&&P.type.is_integer($)&&$.value!==0)w.throw_error(P.error.type("atom",y.args[1],"functor/3"));else if(P.type.is_variable(z)){if(y.args[2].value>=0){for(var se=[],xe=0;xe<$.value;xe++)se.push(w.next_free_variable());var Fe=P.type.is_integer(Z)?Z:new _(Z.id,se);w.prepend([new be(b.goal.replace(new _("=",[z,Fe])),b.substitution,b)])}}else{var ut=P.type.is_integer(z)?z:new _(z.id,[]),Ct=P.type.is_integer(z)?new Qe(0,!1):new Qe(z.args.length,!1),qt=new _(",",[new _("=",[ut,Z]),new _("=",[Ct,$])]);w.prepend([new be(b.goal.replace(qt),b.substitution,b)])}},"arg/3":function(w,b,y){if(P.type.is_variable(y.args[0])||P.type.is_variable(y.args[1]))w.throw_error(P.error.instantiation(y.indicator));else if(y.args[0].value<0)w.throw_error(P.error.domain("not_less_than_zero",y.args[0],y.indicator));else if(!P.type.is_compound(y.args[1]))w.throw_error(P.error.type("compound",y.args[1],y.indicator));else{var F=y.args[0].value;if(F>0&&F<=y.args[1].args.length){var z=new _("=",[y.args[1].args[F-1],y.args[2]]);w.prepend([new be(b.goal.replace(z),b.substitution,b)])}}},"=../2":function(w,b,y){var F;if(P.type.is_variable(y.args[0])&&(P.type.is_variable(y.args[1])||P.type.is_non_empty_list(y.args[1])&&P.type.is_variable(y.args[1].args[0])))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_fully_list(y.args[1]))w.throw_error(P.error.type("list",y.args[1],y.indicator));else if(P.type.is_variable(y.args[0])){if(!P.type.is_variable(y.args[1])){var Z=[];for(F=y.args[1].args[1];F.indicator==="./2";)Z.push(F.args[0]),F=F.args[1];P.type.is_variable(y.args[0])&&P.type.is_variable(F)?w.throw_error(P.error.instantiation(y.indicator)):Z.length===0&&P.type.is_compound(y.args[1].args[0])?w.throw_error(P.error.type("atomic",y.args[1].args[0],y.indicator)):Z.length>0&&(P.type.is_compound(y.args[1].args[0])||P.type.is_number(y.args[1].args[0]))?w.throw_error(P.error.type("atom",y.args[1].args[0],y.indicator)):Z.length===0?w.prepend([new be(b.goal.replace(new _("=",[y.args[1].args[0],y.args[0]],b)),b.substitution,b)]):w.prepend([new be(b.goal.replace(new _("=",[new _(y.args[1].args[0].id,Z),y.args[0]])),b.substitution,b)])}}else{if(P.type.is_atomic(y.args[0]))F=new _(".",[y.args[0],new _("[]")]);else{F=new _("[]");for(var z=y.args[0].args.length-1;z>=0;z--)F=new _(".",[y.args[0].args[z],F]);F=new _(".",[new _(y.args[0].id),F])}w.prepend([new be(b.goal.replace(new _("=",[F,y.args[1]])),b.substitution,b)])}},"copy_term/2":function(w,b,y){var F=y.args[0].rename(w);w.prepend([new be(b.goal.replace(new _("=",[F,y.args[1]])),b.substitution,b.parent)])},"term_variables/2":function(w,b,y){var F=y.args[0],z=y.args[1];if(!P.type.is_fully_list(z))w.throw_error(P.error.type("list",z,y.indicator));else{var Z=g(s(Be(F.variables()),function($){return new De($)}));w.prepend([new be(b.goal.replace(new _("=",[z,Z])),b.substitution,b)])}},"clause/2":function(w,b,y){if(P.type.is_variable(y.args[0]))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_callable(y.args[0]))w.throw_error(P.error.type("callable",y.args[0],y.indicator));else if(!P.type.is_variable(y.args[1])&&!P.type.is_callable(y.args[1]))w.throw_error(P.error.type("callable",y.args[1],y.indicator));else if(w.session.rules[y.args[0].indicator]!==void 0)if(w.is_public_predicate(y.args[0].indicator)){var F=[];for(var z in w.session.rules[y.args[0].indicator])if(w.session.rules[y.args[0].indicator].hasOwnProperty(z)){var Z=w.session.rules[y.args[0].indicator][z];w.session.renamed_variables={},Z=Z.rename(w),Z.body===null&&(Z.body=new _("true"));var $=new _(",",[new _("=",[Z.head,y.args[0]]),new _("=",[Z.body,y.args[1]])]);F.push(new be(b.goal.replace($),b.substitution,b))}w.prepend(F)}else w.throw_error(P.error.permission("access","private_procedure",y.args[0].indicator,y.indicator))},"current_predicate/1":function(w,b,y){var F=y.args[0];if(!P.type.is_variable(F)&&(!P.type.is_compound(F)||F.indicator!=="//2"))w.throw_error(P.error.type("predicate_indicator",F,y.indicator));else if(!P.type.is_variable(F)&&!P.type.is_variable(F.args[0])&&!P.type.is_atom(F.args[0]))w.throw_error(P.error.type("atom",F.args[0],y.indicator));else if(!P.type.is_variable(F)&&!P.type.is_variable(F.args[1])&&!P.type.is_integer(F.args[1]))w.throw_error(P.error.type("integer",F.args[1],y.indicator));else{var z=[];for(var Z in w.session.rules)if(w.session.rules.hasOwnProperty(Z)){var $=Z.lastIndexOf("/"),se=Z.substr(0,$),xe=parseInt(Z.substr($+1,Z.length-($+1))),Fe=new _("/",[new _(se),new Qe(xe,!1)]),ut=new _("=",[Fe,F]);z.push(new be(b.goal.replace(ut),b.substitution,b))}w.prepend(z)}},"asserta/1":function(w,b,y){if(P.type.is_variable(y.args[0]))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_callable(y.args[0]))w.throw_error(P.error.type("callable",y.args[0],y.indicator));else{var F,z;y.args[0].indicator===":-/2"?(F=y.args[0].args[0],z=Ee(y.args[0].args[1])):(F=y.args[0],z=null),P.type.is_callable(F)?z!==null&&!P.type.is_callable(z)?w.throw_error(P.error.type("callable",z,y.indicator)):w.is_public_predicate(F.indicator)?(w.session.rules[F.indicator]===void 0&&(w.session.rules[F.indicator]=[]),w.session.public_predicates[F.indicator]=!0,w.session.rules[F.indicator]=[new je(F,z,!0)].concat(w.session.rules[F.indicator]),w.success(b)):w.throw_error(P.error.permission("modify","static_procedure",F.indicator,y.indicator)):w.throw_error(P.error.type("callable",F,y.indicator))}},"assertz/1":function(w,b,y){if(P.type.is_variable(y.args[0]))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_callable(y.args[0]))w.throw_error(P.error.type("callable",y.args[0],y.indicator));else{var F,z;y.args[0].indicator===":-/2"?(F=y.args[0].args[0],z=Ee(y.args[0].args[1])):(F=y.args[0],z=null),P.type.is_callable(F)?z!==null&&!P.type.is_callable(z)?w.throw_error(P.error.type("callable",z,y.indicator)):w.is_public_predicate(F.indicator)?(w.session.rules[F.indicator]===void 0&&(w.session.rules[F.indicator]=[]),w.session.public_predicates[F.indicator]=!0,w.session.rules[F.indicator].push(new je(F,z,!0)),w.success(b)):w.throw_error(P.error.permission("modify","static_procedure",F.indicator,y.indicator)):w.throw_error(P.error.type("callable",F,y.indicator))}},"retract/1":function(w,b,y){if(P.type.is_variable(y.args[0]))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_callable(y.args[0]))w.throw_error(P.error.type("callable",y.args[0],y.indicator));else{var F,z;if(y.args[0].indicator===":-/2"?(F=y.args[0].args[0],z=y.args[0].args[1]):(F=y.args[0],z=new _("true")),typeof b.retract>"u")if(w.is_public_predicate(F.indicator)){if(w.session.rules[F.indicator]!==void 0){for(var Z=[],$=0;$w.get_flag("max_arity").value)w.throw_error(P.error.representation("max_arity",y.indicator));else{var F=y.args[0].args[0].id+"/"+y.args[0].args[1].value;w.is_public_predicate(F)?(delete w.session.rules[F],w.success(b)):w.throw_error(P.error.permission("modify","static_procedure",F,y.indicator))}},"atom_length/2":function(w,b,y){if(P.type.is_variable(y.args[0]))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_atom(y.args[0]))w.throw_error(P.error.type("atom",y.args[0],y.indicator));else if(!P.type.is_variable(y.args[1])&&!P.type.is_integer(y.args[1]))w.throw_error(P.error.type("integer",y.args[1],y.indicator));else if(P.type.is_integer(y.args[1])&&y.args[1].value<0)w.throw_error(P.error.domain("not_less_than_zero",y.args[1],y.indicator));else{var F=new Qe(y.args[0].id.length,!1);w.prepend([new be(b.goal.replace(new _("=",[F,y.args[1]])),b.substitution,b)])}},"atom_concat/3":function(w,b,y){var F,z,Z=y.args[0],$=y.args[1],se=y.args[2];if(P.type.is_variable(se)&&(P.type.is_variable(Z)||P.type.is_variable($)))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_variable(Z)&&!P.type.is_atom(Z))w.throw_error(P.error.type("atom",Z,y.indicator));else if(!P.type.is_variable($)&&!P.type.is_atom($))w.throw_error(P.error.type("atom",$,y.indicator));else if(!P.type.is_variable(se)&&!P.type.is_atom(se))w.throw_error(P.error.type("atom",se,y.indicator));else{var xe=P.type.is_variable(Z),Fe=P.type.is_variable($);if(!xe&&!Fe)z=new _("=",[se,new _(Z.id+$.id)]),w.prepend([new be(b.goal.replace(z),b.substitution,b)]);else if(xe&&!Fe)F=se.id.substr(0,se.id.length-$.id.length),F+$.id===se.id&&(z=new _("=",[Z,new _(F)]),w.prepend([new be(b.goal.replace(z),b.substitution,b)]));else if(Fe&&!xe)F=se.id.substr(Z.id.length),Z.id+F===se.id&&(z=new _("=",[$,new _(F)]),w.prepend([new be(b.goal.replace(z),b.substitution,b)]));else{for(var ut=[],Ct=0;Ct<=se.id.length;Ct++){var qt=new _(se.id.substr(0,Ct)),ir=new _(se.id.substr(Ct));z=new _(",",[new _("=",[qt,Z]),new _("=",[ir,$])]),ut.push(new be(b.goal.replace(z),b.substitution,b))}w.prepend(ut)}}},"sub_atom/5":function(w,b,y){var F,z=y.args[0],Z=y.args[1],$=y.args[2],se=y.args[3],xe=y.args[4];if(P.type.is_variable(z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_variable(Z)&&!P.type.is_integer(Z))w.throw_error(P.error.type("integer",Z,y.indicator));else if(!P.type.is_variable($)&&!P.type.is_integer($))w.throw_error(P.error.type("integer",$,y.indicator));else if(!P.type.is_variable(se)&&!P.type.is_integer(se))w.throw_error(P.error.type("integer",se,y.indicator));else if(P.type.is_integer(Z)&&Z.value<0)w.throw_error(P.error.domain("not_less_than_zero",Z,y.indicator));else if(P.type.is_integer($)&&$.value<0)w.throw_error(P.error.domain("not_less_than_zero",$,y.indicator));else if(P.type.is_integer(se)&&se.value<0)w.throw_error(P.error.domain("not_less_than_zero",se,y.indicator));else{var Fe=[],ut=[],Ct=[];if(P.type.is_variable(Z))for(F=0;F<=z.id.length;F++)Fe.push(F);else Fe.push(Z.value);if(P.type.is_variable($))for(F=0;F<=z.id.length;F++)ut.push(F);else ut.push($.value);if(P.type.is_variable(se))for(F=0;F<=z.id.length;F++)Ct.push(F);else Ct.push(se.value);var qt=[];for(var ir in Fe)if(Fe.hasOwnProperty(ir)){F=Fe[ir];for(var Pt in ut)if(ut.hasOwnProperty(Pt)){var dn=ut[Pt],Pr=z.id.length-F-dn;if(t(Ct,Pr)!==-1&&F+dn+Pr===z.id.length){var Ir=z.id.substr(F,dn);if(z.id===z.id.substr(0,F)+Ir+z.id.substr(F+dn,Pr)){var Or=new _("=",[new _(Ir),xe]),on=new _("=",[Z,new Qe(F)]),li=new _("=",[$,new Qe(dn)]),So=new _("=",[se,new Qe(Pr)]),ns=new _(",",[new _(",",[new _(",",[on,li]),So]),Or]);qt.push(new be(b.goal.replace(ns),b.substitution,b))}}}}w.prepend(qt)}},"atom_chars/2":function(w,b,y){var F=y.args[0],z=y.args[1];if(P.type.is_variable(F)&&P.type.is_variable(z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_variable(F)&&!P.type.is_atom(F))w.throw_error(P.error.type("atom",F,y.indicator));else if(P.type.is_variable(F)){for(var se=z,xe=P.type.is_variable(F),Fe="";se.indicator==="./2";){if(P.type.is_character(se.args[0]))Fe+=se.args[0].id;else if(P.type.is_variable(se.args[0])&&xe){w.throw_error(P.error.instantiation(y.indicator));return}else if(!P.type.is_variable(se.args[0])){w.throw_error(P.error.type("character",se.args[0],y.indicator));return}se=se.args[1]}P.type.is_variable(se)&&xe?w.throw_error(P.error.instantiation(y.indicator)):!P.type.is_empty_list(se)&&!P.type.is_variable(se)?w.throw_error(P.error.type("list",z,y.indicator)):w.prepend([new be(b.goal.replace(new _("=",[new _(Fe),F])),b.substitution,b)])}else{for(var Z=new _("[]"),$=F.id.length-1;$>=0;$--)Z=new _(".",[new _(F.id.charAt($)),Z]);w.prepend([new be(b.goal.replace(new _("=",[z,Z])),b.substitution,b)])}},"atom_codes/2":function(w,b,y){var F=y.args[0],z=y.args[1];if(P.type.is_variable(F)&&P.type.is_variable(z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_variable(F)&&!P.type.is_atom(F))w.throw_error(P.error.type("atom",F,y.indicator));else if(P.type.is_variable(F)){for(var se=z,xe=P.type.is_variable(F),Fe="";se.indicator==="./2";){if(P.type.is_character_code(se.args[0]))Fe+=c(se.args[0].value);else if(P.type.is_variable(se.args[0])&&xe){w.throw_error(P.error.instantiation(y.indicator));return}else if(!P.type.is_variable(se.args[0])){w.throw_error(P.error.representation("character_code",y.indicator));return}se=se.args[1]}P.type.is_variable(se)&&xe?w.throw_error(P.error.instantiation(y.indicator)):!P.type.is_empty_list(se)&&!P.type.is_variable(se)?w.throw_error(P.error.type("list",z,y.indicator)):w.prepend([new be(b.goal.replace(new _("=",[new _(Fe),F])),b.substitution,b)])}else{for(var Z=new _("[]"),$=F.id.length-1;$>=0;$--)Z=new _(".",[new Qe(n(F.id,$),!1),Z]);w.prepend([new be(b.goal.replace(new _("=",[z,Z])),b.substitution,b)])}},"char_code/2":function(w,b,y){var F=y.args[0],z=y.args[1];if(P.type.is_variable(F)&&P.type.is_variable(z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_variable(F)&&!P.type.is_character(F))w.throw_error(P.error.type("character",F,y.indicator));else if(!P.type.is_variable(z)&&!P.type.is_integer(z))w.throw_error(P.error.type("integer",z,y.indicator));else if(!P.type.is_variable(z)&&!P.type.is_character_code(z))w.throw_error(P.error.representation("character_code",y.indicator));else if(P.type.is_variable(z)){var Z=new Qe(n(F.id,0),!1);w.prepend([new be(b.goal.replace(new _("=",[Z,z])),b.substitution,b)])}else{var $=new _(c(z.value));w.prepend([new be(b.goal.replace(new _("=",[$,F])),b.substitution,b)])}},"number_chars/2":function(w,b,y){var F,z=y.args[0],Z=y.args[1];if(P.type.is_variable(z)&&P.type.is_variable(Z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_variable(z)&&!P.type.is_number(z))w.throw_error(P.error.type("number",z,y.indicator));else if(!P.type.is_variable(Z)&&!P.type.is_list(Z))w.throw_error(P.error.type("list",Z,y.indicator));else{var $=P.type.is_variable(z);if(!P.type.is_variable(Z)){var se=Z,xe=!0;for(F="";se.indicator==="./2";){if(P.type.is_character(se.args[0]))F+=se.args[0].id;else if(P.type.is_variable(se.args[0]))xe=!1;else if(!P.type.is_variable(se.args[0])){w.throw_error(P.error.type("character",se.args[0],y.indicator));return}se=se.args[1]}if(xe=xe&&P.type.is_empty_list(se),!P.type.is_empty_list(se)&&!P.type.is_variable(se)){w.throw_error(P.error.type("list",Z,y.indicator));return}if(!xe&&$){w.throw_error(P.error.instantiation(y.indicator));return}else if(xe)if(P.type.is_variable(se)&&$){w.throw_error(P.error.instantiation(y.indicator));return}else{var Fe=w.parse(F),ut=Fe.value;!P.type.is_number(ut)||Fe.tokens[Fe.tokens.length-1].space?w.throw_error(P.error.syntax_by_predicate("parseable_number",y.indicator)):w.prepend([new be(b.goal.replace(new _("=",[z,ut])),b.substitution,b)]);return}}if(!$){F=z.toString();for(var Ct=new _("[]"),qt=F.length-1;qt>=0;qt--)Ct=new _(".",[new _(F.charAt(qt)),Ct]);w.prepend([new be(b.goal.replace(new _("=",[Z,Ct])),b.substitution,b)])}}},"number_codes/2":function(w,b,y){var F,z=y.args[0],Z=y.args[1];if(P.type.is_variable(z)&&P.type.is_variable(Z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_variable(z)&&!P.type.is_number(z))w.throw_error(P.error.type("number",z,y.indicator));else if(!P.type.is_variable(Z)&&!P.type.is_list(Z))w.throw_error(P.error.type("list",Z,y.indicator));else{var $=P.type.is_variable(z);if(!P.type.is_variable(Z)){var se=Z,xe=!0;for(F="";se.indicator==="./2";){if(P.type.is_character_code(se.args[0]))F+=c(se.args[0].value);else if(P.type.is_variable(se.args[0]))xe=!1;else if(!P.type.is_variable(se.args[0])){w.throw_error(P.error.type("character_code",se.args[0],y.indicator));return}se=se.args[1]}if(xe=xe&&P.type.is_empty_list(se),!P.type.is_empty_list(se)&&!P.type.is_variable(se)){w.throw_error(P.error.type("list",Z,y.indicator));return}if(!xe&&$){w.throw_error(P.error.instantiation(y.indicator));return}else if(xe)if(P.type.is_variable(se)&&$){w.throw_error(P.error.instantiation(y.indicator));return}else{var Fe=w.parse(F),ut=Fe.value;!P.type.is_number(ut)||Fe.tokens[Fe.tokens.length-1].space?w.throw_error(P.error.syntax_by_predicate("parseable_number",y.indicator)):w.prepend([new be(b.goal.replace(new _("=",[z,ut])),b.substitution,b)]);return}}if(!$){F=z.toString();for(var Ct=new _("[]"),qt=F.length-1;qt>=0;qt--)Ct=new _(".",[new Qe(n(F,qt),!1),Ct]);w.prepend([new be(b.goal.replace(new _("=",[Z,Ct])),b.substitution,b)])}}},"upcase_atom/2":function(w,b,y){var F=y.args[0],z=y.args[1];P.type.is_variable(F)?w.throw_error(P.error.instantiation(y.indicator)):P.type.is_atom(F)?!P.type.is_variable(z)&&!P.type.is_atom(z)?w.throw_error(P.error.type("atom",z,y.indicator)):w.prepend([new be(b.goal.replace(new _("=",[z,new _(F.id.toUpperCase(),[])])),b.substitution,b)]):w.throw_error(P.error.type("atom",F,y.indicator))},"downcase_atom/2":function(w,b,y){var F=y.args[0],z=y.args[1];P.type.is_variable(F)?w.throw_error(P.error.instantiation(y.indicator)):P.type.is_atom(F)?!P.type.is_variable(z)&&!P.type.is_atom(z)?w.throw_error(P.error.type("atom",z,y.indicator)):w.prepend([new be(b.goal.replace(new _("=",[z,new _(F.id.toLowerCase(),[])])),b.substitution,b)]):w.throw_error(P.error.type("atom",F,y.indicator))},"atomic_list_concat/2":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new be(b.goal.replace(new _("atomic_list_concat",[F,new _("",[]),z])),b.substitution,b)])},"atomic_list_concat/3":function(w,b,y){var F=y.args[0],z=y.args[1],Z=y.args[2];if(P.type.is_variable(z)||P.type.is_variable(F)&&P.type.is_variable(Z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_variable(F)&&!P.type.is_list(F))w.throw_error(P.error.type("list",F,y.indicator));else if(!P.type.is_variable(Z)&&!P.type.is_atom(Z))w.throw_error(P.error.type("atom",Z,y.indicator));else if(P.type.is_variable(Z)){for(var se="",xe=F;P.type.is_term(xe)&&xe.indicator==="./2";){if(!P.type.is_atom(xe.args[0])&&!P.type.is_number(xe.args[0])){w.throw_error(P.error.type("atomic",xe.args[0],y.indicator));return}se!==""&&(se+=z.id),P.type.is_atom(xe.args[0])?se+=xe.args[0].id:se+=""+xe.args[0].value,xe=xe.args[1]}se=new _(se,[]),P.type.is_variable(xe)?w.throw_error(P.error.instantiation(y.indicator)):!P.type.is_term(xe)||xe.indicator!=="[]/0"?w.throw_error(P.error.type("list",F,y.indicator)):w.prepend([new be(b.goal.replace(new _("=",[se,Z])),b.substitution,b)])}else{var $=g(s(Z.id.split(z.id),function(Fe){return new _(Fe,[])}));w.prepend([new be(b.goal.replace(new _("=",[$,F])),b.substitution,b)])}},"@=/2":function(w,b,y){P.compare(y.args[0],y.args[1])>0&&w.success(b)},"@>=/2":function(w,b,y){P.compare(y.args[0],y.args[1])>=0&&w.success(b)},"compare/3":function(w,b,y){var F=y.args[0],z=y.args[1],Z=y.args[2];if(!P.type.is_variable(F)&&!P.type.is_atom(F))w.throw_error(P.error.type("atom",F,y.indicator));else if(P.type.is_atom(F)&&["<",">","="].indexOf(F.id)===-1)w.throw_error(P.type.domain("order",F,y.indicator));else{var $=P.compare(z,Z);$=$===0?"=":$===-1?"<":">",w.prepend([new be(b.goal.replace(new _("=",[F,new _($,[])])),b.substitution,b)])}},"is/2":function(w,b,y){var F=y.args[1].interpret(w);P.type.is_number(F)?w.prepend([new be(b.goal.replace(new _("=",[y.args[0],F],w.level)),b.substitution,b)]):w.throw_error(F)},"between/3":function(w,b,y){var F=y.args[0],z=y.args[1],Z=y.args[2];if(P.type.is_variable(F)||P.type.is_variable(z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_integer(F))w.throw_error(P.error.type("integer",F,y.indicator));else if(!P.type.is_integer(z))w.throw_error(P.error.type("integer",z,y.indicator));else if(!P.type.is_variable(Z)&&!P.type.is_integer(Z))w.throw_error(P.error.type("integer",Z,y.indicator));else if(P.type.is_variable(Z)){var $=[new be(b.goal.replace(new _("=",[Z,F])),b.substitution,b)];F.value=Z.value&&w.success(b)},"succ/2":function(w,b,y){var F=y.args[0],z=y.args[1];P.type.is_variable(F)&&P.type.is_variable(z)?w.throw_error(P.error.instantiation(y.indicator)):!P.type.is_variable(F)&&!P.type.is_integer(F)?w.throw_error(P.error.type("integer",F,y.indicator)):!P.type.is_variable(z)&&!P.type.is_integer(z)?w.throw_error(P.error.type("integer",z,y.indicator)):!P.type.is_variable(F)&&F.value<0?w.throw_error(P.error.domain("not_less_than_zero",F,y.indicator)):!P.type.is_variable(z)&&z.value<0?w.throw_error(P.error.domain("not_less_than_zero",z,y.indicator)):(P.type.is_variable(z)||z.value>0)&&(P.type.is_variable(F)?w.prepend([new be(b.goal.replace(new _("=",[F,new Qe(z.value-1,!1)])),b.substitution,b)]):w.prepend([new be(b.goal.replace(new _("=",[z,new Qe(F.value+1,!1)])),b.substitution,b)]))},"=:=/2":function(w,b,y){var F=P.arithmetic_compare(w,y.args[0],y.args[1]);P.type.is_term(F)?w.throw_error(F):F===0&&w.success(b)},"=\\=/2":function(w,b,y){var F=P.arithmetic_compare(w,y.args[0],y.args[1]);P.type.is_term(F)?w.throw_error(F):F!==0&&w.success(b)},"/2":function(w,b,y){var F=P.arithmetic_compare(w,y.args[0],y.args[1]);P.type.is_term(F)?w.throw_error(F):F>0&&w.success(b)},">=/2":function(w,b,y){var F=P.arithmetic_compare(w,y.args[0],y.args[1]);P.type.is_term(F)?w.throw_error(F):F>=0&&w.success(b)},"var/1":function(w,b,y){P.type.is_variable(y.args[0])&&w.success(b)},"atom/1":function(w,b,y){P.type.is_atom(y.args[0])&&w.success(b)},"atomic/1":function(w,b,y){P.type.is_atomic(y.args[0])&&w.success(b)},"compound/1":function(w,b,y){P.type.is_compound(y.args[0])&&w.success(b)},"integer/1":function(w,b,y){P.type.is_integer(y.args[0])&&w.success(b)},"float/1":function(w,b,y){P.type.is_float(y.args[0])&&w.success(b)},"number/1":function(w,b,y){P.type.is_number(y.args[0])&&w.success(b)},"nonvar/1":function(w,b,y){P.type.is_variable(y.args[0])||w.success(b)},"ground/1":function(w,b,y){y.variables().length===0&&w.success(b)},"acyclic_term/1":function(w,b,y){for(var F=b.substitution.apply(b.substitution),z=y.args[0].variables(),Z=0;Z0?Pt[Pt.length-1]:null,Pt!==null&&(qt=Y(w,Pt,0,w.__get_max_priority(),!1))}if(qt.type===p&&qt.len===Pt.length-1&&dn.value==="."){qt=qt.value.rename(w);var Pr=new _("=",[z,qt]);if(se.variables){var Ir=g(s(Be(qt.variables()),function(Or){return new De(Or)}));Pr=new _(",",[Pr,new _("=",[se.variables,Ir])])}if(se.variable_names){var Ir=g(s(Be(qt.variables()),function(on){var li;for(li in w.session.renamed_variables)if(w.session.renamed_variables.hasOwnProperty(li)&&w.session.renamed_variables[li]===on)break;return new _("=",[new _(li,[]),new De(on)])}));Pr=new _(",",[Pr,new _("=",[se.variable_names,Ir])])}if(se.singletons){var Ir=g(s(new je(qt,null).singleton_variables(),function(on){var li;for(li in w.session.renamed_variables)if(w.session.renamed_variables.hasOwnProperty(li)&&w.session.renamed_variables[li]===on)break;return new _("=",[new _(li,[]),new De(on)])}));Pr=new _(",",[Pr,new _("=",[se.singletons,Ir])])}w.prepend([new be(b.goal.replace(Pr),b.substitution,b)])}else qt.type===p?w.throw_error(P.error.syntax(Pt[qt.len],"unexpected token",!1)):w.throw_error(qt.value)}}},"write/1":function(w,b,y){var F=y.args[0];w.prepend([new be(b.goal.replace(new _(",",[new _("current_output",[new De("S")]),new _("write",[new De("S"),F])])),b.substitution,b)])},"write/2":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new be(b.goal.replace(new _("write_term",[F,z,new _(".",[new _("quoted",[new _("false",[])]),new _(".",[new _("ignore_ops",[new _("false")]),new _(".",[new _("numbervars",[new _("true")]),new _("[]",[])])])])])),b.substitution,b)])},"writeq/1":function(w,b,y){var F=y.args[0];w.prepend([new be(b.goal.replace(new _(",",[new _("current_output",[new De("S")]),new _("writeq",[new De("S"),F])])),b.substitution,b)])},"writeq/2":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new be(b.goal.replace(new _("write_term",[F,z,new _(".",[new _("quoted",[new _("true",[])]),new _(".",[new _("ignore_ops",[new _("false")]),new _(".",[new _("numbervars",[new _("true")]),new _("[]",[])])])])])),b.substitution,b)])},"write_canonical/1":function(w,b,y){var F=y.args[0];w.prepend([new be(b.goal.replace(new _(",",[new _("current_output",[new De("S")]),new _("write_canonical",[new De("S"),F])])),b.substitution,b)])},"write_canonical/2":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new be(b.goal.replace(new _("write_term",[F,z,new _(".",[new _("quoted",[new _("true",[])]),new _(".",[new _("ignore_ops",[new _("true")]),new _(".",[new _("numbervars",[new _("false")]),new _("[]",[])])])])])),b.substitution,b)])},"write_term/2":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new be(b.goal.replace(new _(",",[new _("current_output",[new De("S")]),new _("write_term",[new De("S"),F,z])])),b.substitution,b)])},"write_term/3":function(w,b,y){var F=y.args[0],z=y.args[1],Z=y.args[2],$=P.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(P.type.is_variable(F)||P.type.is_variable(Z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_list(Z))w.throw_error(P.error.type("list",Z,y.indicator));else if(!P.type.is_stream(F)&&!P.type.is_atom(F))w.throw_error(P.error.domain("stream_or_alias",F,y.indicator));else if(!P.type.is_stream($)||$.stream===null)w.throw_error(P.error.existence("stream",F,y.indicator));else if($.input)w.throw_error(P.error.permission("output","stream",F,y.indicator));else if($.type==="binary")w.throw_error(P.error.permission("output","binary_stream",F,y.indicator));else if($.position==="past_end_of_stream"&&$.eof_action==="error")w.throw_error(P.error.permission("output","past_end_of_stream",F,y.indicator));else{for(var se={},xe=Z,Fe;P.type.is_term(xe)&&xe.indicator==="./2";){if(Fe=xe.args[0],P.type.is_variable(Fe)){w.throw_error(P.error.instantiation(y.indicator));return}else if(!P.type.is_write_option(Fe)){w.throw_error(P.error.domain("write_option",Fe,y.indicator));return}se[Fe.id]=Fe.args[0].id==="true",xe=xe.args[1]}if(xe.indicator!=="[]/0"){P.type.is_variable(xe)?w.throw_error(P.error.instantiation(y.indicator)):w.throw_error(P.error.type("list",Z,y.indicator));return}else{se.session=w.session;var ut=z.toString(se);$.stream.put(ut,$.position),typeof $.position=="number"&&($.position+=ut.length),w.success(b)}}},"halt/0":function(w,b,y){w.points=[]},"halt/1":function(w,b,y){var F=y.args[0];P.type.is_variable(F)?w.throw_error(P.error.instantiation(y.indicator)):P.type.is_integer(F)?w.points=[]:w.throw_error(P.error.type("integer",F,y.indicator))},"current_prolog_flag/2":function(w,b,y){var F=y.args[0],z=y.args[1];if(!P.type.is_variable(F)&&!P.type.is_atom(F))w.throw_error(P.error.type("atom",F,y.indicator));else if(!P.type.is_variable(F)&&!P.type.is_flag(F))w.throw_error(P.error.domain("prolog_flag",F,y.indicator));else{var Z=[];for(var $ in P.flag)if(P.flag.hasOwnProperty($)){var se=new _(",",[new _("=",[new _($),F]),new _("=",[w.get_flag($),z])]);Z.push(new be(b.goal.replace(se),b.substitution,b))}w.prepend(Z)}},"set_prolog_flag/2":function(w,b,y){var F=y.args[0],z=y.args[1];P.type.is_variable(F)||P.type.is_variable(z)?w.throw_error(P.error.instantiation(y.indicator)):P.type.is_atom(F)?P.type.is_flag(F)?P.type.is_value_flag(F,z)?P.type.is_modifiable_flag(F)?(w.session.flag[F.id]=z,w.success(b)):w.throw_error(P.error.permission("modify","flag",F)):w.throw_error(P.error.domain("flag_value",new _("+",[F,z]),y.indicator)):w.throw_error(P.error.domain("prolog_flag",F,y.indicator)):w.throw_error(P.error.type("atom",F,y.indicator))}},flag:{bounded:{allowed:[new _("true"),new _("false")],value:new _("true"),changeable:!1},max_integer:{allowed:[new Qe(Number.MAX_SAFE_INTEGER)],value:new Qe(Number.MAX_SAFE_INTEGER),changeable:!1},min_integer:{allowed:[new Qe(Number.MIN_SAFE_INTEGER)],value:new Qe(Number.MIN_SAFE_INTEGER),changeable:!1},integer_rounding_function:{allowed:[new _("down"),new _("toward_zero")],value:new _("toward_zero"),changeable:!1},char_conversion:{allowed:[new _("on"),new _("off")],value:new _("on"),changeable:!0},debug:{allowed:[new _("on"),new _("off")],value:new _("off"),changeable:!0},max_arity:{allowed:[new _("unbounded")],value:new _("unbounded"),changeable:!1},unknown:{allowed:[new _("error"),new _("fail"),new _("warning")],value:new _("error"),changeable:!0},double_quotes:{allowed:[new _("chars"),new _("codes"),new _("atom")],value:new _("codes"),changeable:!0},occurs_check:{allowed:[new _("false"),new _("true")],value:new _("false"),changeable:!0},dialect:{allowed:[new _("tau")],value:new _("tau"),changeable:!1},version_data:{allowed:[new _("tau",[new Qe(e.major,!1),new Qe(e.minor,!1),new Qe(e.patch,!1),new _(e.status)])],value:new _("tau",[new Qe(e.major,!1),new Qe(e.minor,!1),new Qe(e.patch,!1),new _(e.status)]),changeable:!1},nodejs:{allowed:[new _("yes"),new _("no")],value:new _(typeof tc<"u"&&tc.exports?"yes":"no"),changeable:!1}},unify:function(w,b,y){y=y===void 0?!1:y;for(var F=[{left:w,right:b}],z={};F.length!==0;){var Z=F.pop();if(w=Z.left,b=Z.right,P.type.is_term(w)&&P.type.is_term(b)){if(w.indicator!==b.indicator)return null;for(var $=0;$z.value?1:0:z}else return F},operate:function(w,b){if(P.type.is_operator(b)){for(var y=P.type.is_operator(b),F=[],z,Z=!1,$=0;$w.get_flag("max_integer").value||z0?w.start+w.matches[0].length:w.start,z=y?new _("token_not_found"):new _("found",[new _(w.value.toString())]),Z=new _(".",[new _("line",[new Qe(w.line+1)]),new _(".",[new _("column",[new Qe(F+1)]),new _(".",[z,new _("[]",[])])])]);return new _("error",[new _("syntax_error",[new _(b)]),Z])},syntax_by_predicate:function(w,b){return new _("error",[new _("syntax_error",[new _(w)]),X(b)])}},warning:{singleton:function(w,b,y){for(var F=new _("[]"),z=w.length-1;z>=0;z--)F=new _(".",[new De(w[z]),F]);return new _("warning",[new _("singleton_variables",[F,X(b)]),new _(".",[new _("line",[new Qe(y,!1)]),new _("[]")])])},failed_goal:function(w,b){return new _("warning",[new _("failed_goal",[w]),new _(".",[new _("line",[new Qe(b,!1)]),new _("[]")])])}},format_variable:function(w){return"_"+w},format_answer:function(w,b,F){b instanceof Re&&(b=b.thread);var F=F||{};if(F.session=b?b.session:void 0,P.type.is_error(w))return"uncaught exception: "+w.args[0].toString();if(w===!1)return"false.";if(w===null)return"limit exceeded ;";var z=0,Z="";if(P.type.is_substitution(w)){var $=w.domain(!0);w=w.filter(function(Fe,ut){return!P.type.is_variable(ut)||$.indexOf(ut.id)!==-1&&Fe!==ut.id})}for(var se in w.links)w.links.hasOwnProperty(se)&&(z++,Z!==""&&(Z+=", "),Z+=se.toString(F)+" = "+w.links[se].toString(F));var xe=typeof b>"u"||b.points.length>0?" ;":".";return z===0?"true"+xe:Z+xe},flatten_error:function(w){if(!P.type.is_error(w))return null;w=w.args[0];var b={};return b.type=w.args[0].id,b.thrown=b.type==="syntax_error"?null:w.args[1].id,b.expected=null,b.found=null,b.representation=null,b.existence=null,b.existence_type=null,b.line=null,b.column=null,b.permission_operation=null,b.permission_type=null,b.evaluation_type=null,b.type==="type_error"||b.type==="domain_error"?(b.expected=w.args[0].args[0].id,b.found=w.args[0].args[1].toString()):b.type==="syntax_error"?w.args[1].indicator==="./2"?(b.expected=w.args[0].args[0].id,b.found=w.args[1].args[1].args[1].args[0],b.found=b.found.id==="token_not_found"?b.found.id:b.found.args[0].id,b.line=w.args[1].args[0].args[0].value,b.column=w.args[1].args[1].args[0].args[0].value):b.thrown=w.args[1].id:b.type==="permission_error"?(b.found=w.args[0].args[2].toString(),b.permission_operation=w.args[0].args[0].id,b.permission_type=w.args[0].args[1].id):b.type==="evaluation_error"?b.evaluation_type=w.args[0].args[0].id:b.type==="representation_error"?b.representation=w.args[0].args[0].id:b.type==="existence_error"&&(b.existence=w.args[0].args[1].toString(),b.existence_type=w.args[0].args[0].id),b},create:function(w){return new P.type.Session(w)}};typeof tc<"u"?tc.exports=P:window.pl=P})()});function ome(e,t,r){e.prepend(r.map(s=>new Il.default.type.State(t.goal.replace(s),t.substitution,t)))}function eq(e){let t=lme.get(e.session);if(t==null)throw new Error("Assertion failed: A project should have been registered for the active session");return t}function cme(e,t){lme.set(e,t),e.consult(`:- use_module(library(${fat.id})).`)}var Il,ame,V0,cat,uat,lme,fat,ume=Ze(()=>{qe();Jl();Il=et($5()),ame=et(Ie("vm")),{is_atom:V0,is_variable:cat,is_instantiated_list:uat}=Il.default.type;lme=new WeakMap;fat=new Il.default.type.Module("constraints",{"project_workspaces_by_descriptor/3":(e,t,r)=>{let[s,a,n]=r.args;if(!V0(s)||!V0(a)){e.throw_error(Il.default.error.instantiation(r.indicator));return}let c=j.parseIdent(s.id),f=j.makeDescriptor(c,a.id),h=eq(e).tryWorkspaceByDescriptor(f);cat(n)&&h!==null&&ome(e,t,[new Il.default.type.Term("=",[n,new Il.default.type.Term(String(h.relativeCwd))])]),V0(n)&&h!==null&&h.relativeCwd===n.id&&e.success(t)},"workspace_field/3":(e,t,r)=>{let[s,a,n]=r.args;if(!V0(s)||!V0(a)){e.throw_error(Il.default.error.instantiation(r.indicator));return}let f=eq(e).tryWorkspaceByCwd(s.id);if(f==null)return;let p=ba(f.manifest.raw,a.id);typeof p>"u"||ome(e,t,[new Il.default.type.Term("=",[n,new Il.default.type.Term(typeof p=="object"?JSON.stringify(p):p)])])},"workspace_field_test/3":(e,t,r)=>{let[s,a,n]=r.args;e.prepend([new Il.default.type.State(t.goal.replace(new Il.default.type.Term("workspace_field_test",[s,a,n,new Il.default.type.Term("[]",[])])),t.substitution,t)])},"workspace_field_test/4":(e,t,r)=>{let[s,a,n,c]=r.args;if(!V0(s)||!V0(a)||!V0(n)||!uat(c)){e.throw_error(Il.default.error.instantiation(r.indicator));return}let p=eq(e).tryWorkspaceByCwd(s.id);if(p==null)return;let h=ba(p.manifest.raw,a.id);if(typeof h>"u")return;let E={$$:h};for(let[S,x]of c.toJavaScript().entries())E[`$${S}`]=x;ame.default.runInNewContext(n.id,E)&&e.success(t)}},["project_workspaces_by_descriptor/3","workspace_field/3","workspace_field_test/3","workspace_field_test/4"])});var aS={};Yt(aS,{Constraints:()=>rq,DependencyType:()=>hme});function Co(e){if(e instanceof _C.default.type.Num)return e.value;if(e instanceof _C.default.type.Term)switch(e.indicator){case"throw/1":return Co(e.args[0]);case"error/1":return Co(e.args[0]);case"error/2":if(e.args[0]instanceof _C.default.type.Term&&e.args[0].indicator==="syntax_error/1")return Object.assign(Co(e.args[0]),...Co(e.args[1]));{let t=Co(e.args[0]);return t.message+=` (in ${Co(e.args[1])})`,t}case"syntax_error/1":return new _t(43,`Syntax error: ${Co(e.args[0])}`);case"existence_error/2":return new _t(44,`Existence error: ${Co(e.args[0])} ${Co(e.args[1])} not found`);case"instantiation_error/0":return new _t(75,"Instantiation error: an argument is variable when an instantiated argument was expected");case"line/1":return{line:Co(e.args[0])};case"column/1":return{column:Co(e.args[0])};case"found/1":return{found:Co(e.args[0])};case"./2":return[Co(e.args[0])].concat(Co(e.args[1]));case"//2":return`${Co(e.args[0])}/${Co(e.args[1])}`;default:return e.id}throw`couldn't pretty print because of unsupported node ${e}`}function Ame(e){let t;try{t=Co(e)}catch(r){throw typeof r=="string"?new _t(42,`Unknown error: ${e} (note: ${r})`):r}return typeof t.line<"u"&&typeof t.column<"u"&&(t.message+=` at line ${t.line}, column ${t.column}`),t}function Qm(e){return e.id==="null"?null:`${e.toJavaScript()}`}function Aat(e){if(e.id==="null")return null;{let t=e.toJavaScript();if(typeof t!="string")return JSON.stringify(t);try{return JSON.stringify(JSON.parse(t))}catch{return JSON.stringify(t)}}}function Y0(e){return typeof e=="string"?`'${e}'`:"[]"}var pme,_C,hme,fme,tq,rq,lS=Ze(()=>{qe();qe();Dt();pme=et(qde()),_C=et($5());iS();ume();(0,pme.default)(_C.default);hme=(s=>(s.Dependencies="dependencies",s.DevDependencies="devDependencies",s.PeerDependencies="peerDependencies",s))(hme||{}),fme=["dependencies","devDependencies","peerDependencies"];tq=class{constructor(t,r){let s=1e3*t.workspaces.length;this.session=_C.default.create(s),cme(this.session,t),this.session.consult(":- use_module(library(lists))."),this.session.consult(r)}fetchNextAnswer(){return new Promise(t=>{this.session.answer(r=>{t(r)})})}async*makeQuery(t){let r=this.session.query(t);if(r!==!0)throw Ame(r);for(;;){let s=await this.fetchNextAnswer();if(s===null)throw new _t(79,"Resolution limit exceeded");if(!s)break;if(s.id==="throw")throw Ame(s);yield s}}};rq=class e{constructor(t){this.source="";this.project=t;let r=t.configuration.get("constraintsPath");le.existsSync(r)&&(this.source=le.readFileSync(r,"utf8"))}static async find(t){return new e(t)}getProjectDatabase(){let t="";for(let r of fme)t+=`dependency_type(${r}). -`;for(let r of this.project.workspacesByCwd.values()){let s=r.relativeCwd;t+=`workspace(${Y0(s)}). -`,t+=`workspace_ident(${Y0(s)}, ${Y0(j.stringifyIdent(r.anchoredLocator))}). -`,t+=`workspace_version(${Y0(s)}, ${Y0(r.manifest.version)}). -`;for(let a of fme)for(let n of r.manifest[a].values())t+=`workspace_has_dependency(${Y0(s)}, ${Y0(j.stringifyIdent(n))}, ${Y0(n.range)}, ${a}). -`}return t+=`workspace(_) :- false. -`,t+=`workspace_ident(_, _) :- false. -`,t+=`workspace_version(_, _) :- false. -`,t+=`workspace_has_dependency(_, _, _, _) :- false. -`,t}getDeclarations(){let t="";return t+=`gen_enforced_dependency(_, _, _, _) :- false. -`,t+=`gen_enforced_field(_, _, _) :- false. -`,t}get fullSource(){return`${this.getProjectDatabase()} -${this.source} -${this.getDeclarations()}`}createSession(){return new tq(this.project,this.fullSource)}async processClassic(){let t=this.createSession();return{enforcedDependencies:await this.genEnforcedDependencies(t),enforcedFields:await this.genEnforcedFields(t)}}async process(){let{enforcedDependencies:t,enforcedFields:r}=await this.processClassic(),s=new Map;for(let{workspace:a,dependencyIdent:n,dependencyRange:c,dependencyType:f}of t){let p=nS([f,j.stringifyIdent(n)]),h=Ge.getMapWithDefault(s,a.cwd);Ge.getMapWithDefault(h,p).set(c??void 0,new Set)}for(let{workspace:a,fieldPath:n,fieldValue:c}of r){let f=nS(n),p=Ge.getMapWithDefault(s,a.cwd);Ge.getMapWithDefault(p,f).set(JSON.parse(c)??void 0,new Set)}return{manifestUpdates:s,reportedErrors:new Map}}async genEnforcedDependencies(t){let r=[];for await(let s of t.makeQuery("workspace(WorkspaceCwd), dependency_type(DependencyType), gen_enforced_dependency(WorkspaceCwd, DependencyIdent, DependencyRange, DependencyType).")){let a=K.resolve(this.project.cwd,Qm(s.links.WorkspaceCwd)),n=Qm(s.links.DependencyIdent),c=Qm(s.links.DependencyRange),f=Qm(s.links.DependencyType);if(a===null||n===null)throw new Error("Invalid rule");let p=this.project.getWorkspaceByCwd(a),h=j.parseIdent(n);r.push({workspace:p,dependencyIdent:h,dependencyRange:c,dependencyType:f})}return Ge.sortMap(r,[({dependencyRange:s})=>s!==null?"0":"1",({workspace:s})=>j.stringifyIdent(s.anchoredLocator),({dependencyIdent:s})=>j.stringifyIdent(s)])}async genEnforcedFields(t){let r=[];for await(let s of t.makeQuery("workspace(WorkspaceCwd), gen_enforced_field(WorkspaceCwd, FieldPath, FieldValue).")){let a=K.resolve(this.project.cwd,Qm(s.links.WorkspaceCwd)),n=Qm(s.links.FieldPath),c=Aat(s.links.FieldValue);if(a===null||n===null)throw new Error("Invalid rule");let f=this.project.getWorkspaceByCwd(a);r.push({workspace:f,fieldPath:n,fieldValue:c})}return Ge.sortMap(r,[({workspace:s})=>j.stringifyIdent(s.anchoredLocator),({fieldPath:s})=>s])}async*query(t){let r=this.createSession();for await(let s of r.makeQuery(t)){let a={};for(let[n,c]of Object.entries(s.links))n!=="_"&&(a[n]=Qm(c));yield a}}}});var Bme=G(JT=>{"use strict";Object.defineProperty(JT,"__esModule",{value:!0});function BS(e){let t=[...e.caches],r=t.shift();return r===void 0?wme():{get(s,a,n={miss:()=>Promise.resolve()}){return r.get(s,a,n).catch(()=>BS({caches:t}).get(s,a,n))},set(s,a){return r.set(s,a).catch(()=>BS({caches:t}).set(s,a))},delete(s){return r.delete(s).catch(()=>BS({caches:t}).delete(s))},clear(){return r.clear().catch(()=>BS({caches:t}).clear())}}}function wme(){return{get(e,t,r={miss:()=>Promise.resolve()}){return t().then(a=>Promise.all([a,r.miss(a)])).then(([a])=>a)},set(e,t){return Promise.resolve(t)},delete(e){return Promise.resolve()},clear(){return Promise.resolve()}}}JT.createFallbackableCache=BS;JT.createNullCache=wme});var Sme=G((bVt,vme)=>{vme.exports=Bme()});var Dme=G(dq=>{"use strict";Object.defineProperty(dq,"__esModule",{value:!0});function Qat(e={serializable:!0}){let t={};return{get(r,s,a={miss:()=>Promise.resolve()}){let n=JSON.stringify(r);if(n in t)return Promise.resolve(e.serializable?JSON.parse(t[n]):t[n]);let c=s(),f=a&&a.miss||(()=>Promise.resolve());return c.then(p=>f(p)).then(()=>c)},set(r,s){return t[JSON.stringify(r)]=e.serializable?JSON.stringify(s):s,Promise.resolve(s)},delete(r){return delete t[JSON.stringify(r)],Promise.resolve()},clear(){return t={},Promise.resolve()}}}dq.createInMemoryCache=Qat});var Pme=G((xVt,bme)=>{bme.exports=Dme()});var kme=G(tf=>{"use strict";Object.defineProperty(tf,"__esModule",{value:!0});function Rat(e,t,r){let s={"x-algolia-api-key":r,"x-algolia-application-id":t};return{headers(){return e===mq.WithinHeaders?s:{}},queryParameters(){return e===mq.WithinQueryParameters?s:{}}}}function Tat(e){let t=0,r=()=>(t++,new Promise(s=>{setTimeout(()=>{s(e(r))},Math.min(100*t,1e3))}));return e(r)}function xme(e,t=(r,s)=>Promise.resolve()){return Object.assign(e,{wait(r){return xme(e.then(s=>Promise.all([t(s,r),s])).then(s=>s[1]))}})}function Fat(e){let t=e.length-1;for(t;t>0;t--){let r=Math.floor(Math.random()*(t+1)),s=e[t];e[t]=e[r],e[r]=s}return e}function Nat(e,t){return t&&Object.keys(t).forEach(r=>{e[r]=t[r](e)}),e}function Oat(e,...t){let r=0;return e.replace(/%s/g,()=>encodeURIComponent(t[r++]))}var Lat="4.22.1",Mat=e=>()=>e.transporter.requester.destroy(),mq={WithinQueryParameters:0,WithinHeaders:1};tf.AuthMode=mq;tf.addMethods=Nat;tf.createAuth=Rat;tf.createRetryablePromise=Tat;tf.createWaitablePromise=xme;tf.destroy=Mat;tf.encode=Oat;tf.shuffle=Fat;tf.version=Lat});var vS=G((QVt,Qme)=>{Qme.exports=kme()});var Rme=G(yq=>{"use strict";Object.defineProperty(yq,"__esModule",{value:!0});var Uat={Delete:"DELETE",Get:"GET",Post:"POST",Put:"PUT"};yq.MethodEnum=Uat});var SS=G((TVt,Tme)=>{Tme.exports=Rme()});var Kme=G(Vi=>{"use strict";Object.defineProperty(Vi,"__esModule",{value:!0});var Nme=SS();function Eq(e,t){let r=e||{},s=r.data||{};return Object.keys(r).forEach(a=>{["timeout","headers","queryParameters","data","cacheable"].indexOf(a)===-1&&(s[a]=r[a])}),{data:Object.entries(s).length>0?s:void 0,timeout:r.timeout||t,headers:r.headers||{},queryParameters:r.queryParameters||{},cacheable:r.cacheable}}var DS={Read:1,Write:2,Any:3},zC={Up:1,Down:2,Timeouted:3},Ome=2*60*1e3;function Cq(e,t=zC.Up){return{...e,status:t,lastUpdate:Date.now()}}function Lme(e){return e.status===zC.Up||Date.now()-e.lastUpdate>Ome}function Mme(e){return e.status===zC.Timeouted&&Date.now()-e.lastUpdate<=Ome}function wq(e){return typeof e=="string"?{protocol:"https",url:e,accept:DS.Any}:{protocol:e.protocol||"https",url:e.url,accept:e.accept||DS.Any}}function _at(e,t){return Promise.all(t.map(r=>e.get(r,()=>Promise.resolve(Cq(r))))).then(r=>{let s=r.filter(f=>Lme(f)),a=r.filter(f=>Mme(f)),n=[...s,...a],c=n.length>0?n.map(f=>wq(f)):t;return{getTimeout(f,p){return(a.length===0&&f===0?1:a.length+3+f)*p},statelessHosts:c}})}var Hat=({isTimedOut:e,status:t})=>!e&&~~t===0,jat=e=>{let t=e.status;return e.isTimedOut||Hat(e)||~~(t/100)!==2&&~~(t/100)!==4},Gat=({status:e})=>~~(e/100)===2,qat=(e,t)=>jat(e)?t.onRetry(e):Gat(e)?t.onSuccess(e):t.onFail(e);function Fme(e,t,r,s){let a=[],n=Gme(r,s),c=qme(e,s),f=r.method,p=r.method!==Nme.MethodEnum.Get?{}:{...r.data,...s.data},h={"x-algolia-agent":e.userAgent.value,...e.queryParameters,...p,...s.queryParameters},E=0,C=(S,x)=>{let I=S.pop();if(I===void 0)throw Yme(Iq(a));let T={data:n,headers:c,method:f,url:Hme(I,r.path,h),connectTimeout:x(E,e.timeouts.connect),responseTimeout:x(E,s.timeout)},O=Y=>{let te={request:T,response:Y,host:I,triesLeft:S.length};return a.push(te),te},U={onSuccess:Y=>Ume(Y),onRetry(Y){let te=O(Y);return Y.isTimedOut&&E++,Promise.all([e.logger.info("Retryable failure",Bq(te)),e.hostsCache.set(I,Cq(I,Y.isTimedOut?zC.Timeouted:zC.Down))]).then(()=>C(S,x))},onFail(Y){throw O(Y),_me(Y,Iq(a))}};return e.requester.send(T).then(Y=>qat(Y,U))};return _at(e.hostsCache,t).then(S=>C([...S.statelessHosts].reverse(),S.getTimeout))}function Wat(e){let{hostsCache:t,logger:r,requester:s,requestsCache:a,responsesCache:n,timeouts:c,userAgent:f,hosts:p,queryParameters:h,headers:E}=e,C={hostsCache:t,logger:r,requester:s,requestsCache:a,responsesCache:n,timeouts:c,userAgent:f,headers:E,queryParameters:h,hosts:p.map(S=>wq(S)),read(S,x){let I=Eq(x,C.timeouts.read),T=()=>Fme(C,C.hosts.filter(Y=>(Y.accept&DS.Read)!==0),S,I);if((I.cacheable!==void 0?I.cacheable:S.cacheable)!==!0)return T();let U={request:S,mappedRequestOptions:I,transporter:{queryParameters:C.queryParameters,headers:C.headers}};return C.responsesCache.get(U,()=>C.requestsCache.get(U,()=>C.requestsCache.set(U,T()).then(Y=>Promise.all([C.requestsCache.delete(U),Y]),Y=>Promise.all([C.requestsCache.delete(U),Promise.reject(Y)])).then(([Y,te])=>te)),{miss:Y=>C.responsesCache.set(U,Y)})},write(S,x){return Fme(C,C.hosts.filter(I=>(I.accept&DS.Write)!==0),S,Eq(x,C.timeouts.write))}};return C}function Vat(e){let t={value:`Algolia for JavaScript (${e})`,add(r){let s=`; ${r.segment}${r.version!==void 0?` (${r.version})`:""}`;return t.value.indexOf(s)===-1&&(t.value=`${t.value}${s}`),t}};return t}function Ume(e){try{return JSON.parse(e.content)}catch(t){throw Vme(t.message,e)}}function _me({content:e,status:t},r){let s=e;try{s=JSON.parse(e).message}catch{}return Wme(s,t,r)}function Yat(e,...t){let r=0;return e.replace(/%s/g,()=>encodeURIComponent(t[r++]))}function Hme(e,t,r){let s=jme(r),a=`${e.protocol}://${e.url}/${t.charAt(0)==="/"?t.substr(1):t}`;return s.length&&(a+=`?${s}`),a}function jme(e){let t=r=>Object.prototype.toString.call(r)==="[object Object]"||Object.prototype.toString.call(r)==="[object Array]";return Object.keys(e).map(r=>Yat("%s=%s",r,t(e[r])?JSON.stringify(e[r]):e[r])).join("&")}function Gme(e,t){if(e.method===Nme.MethodEnum.Get||e.data===void 0&&t.data===void 0)return;let r=Array.isArray(e.data)?e.data:{...e.data,...t.data};return JSON.stringify(r)}function qme(e,t){let r={...e.headers,...t.headers},s={};return Object.keys(r).forEach(a=>{let n=r[a];s[a.toLowerCase()]=n}),s}function Iq(e){return e.map(t=>Bq(t))}function Bq(e){let t=e.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return{...e,request:{...e.request,headers:{...e.request.headers,...t}}}}function Wme(e,t,r){return{name:"ApiError",message:e,status:t,transporterStackTrace:r}}function Vme(e,t){return{name:"DeserializationError",message:e,response:t}}function Yme(e){return{name:"RetryError",message:"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.",transporterStackTrace:e}}Vi.CallEnum=DS;Vi.HostStatusEnum=zC;Vi.createApiError=Wme;Vi.createDeserializationError=Vme;Vi.createMappedRequestOptions=Eq;Vi.createRetryError=Yme;Vi.createStatefulHost=Cq;Vi.createStatelessHost=wq;Vi.createTransporter=Wat;Vi.createUserAgent=Vat;Vi.deserializeFailure=_me;Vi.deserializeSuccess=Ume;Vi.isStatefulHostTimeouted=Mme;Vi.isStatefulHostUp=Lme;Vi.serializeData=Gme;Vi.serializeHeaders=qme;Vi.serializeQueryParameters=jme;Vi.serializeUrl=Hme;Vi.stackFrameWithoutCredentials=Bq;Vi.stackTraceWithoutCredentials=Iq});var bS=G((NVt,Jme)=>{Jme.exports=Kme()});var zme=G(J0=>{"use strict";Object.defineProperty(J0,"__esModule",{value:!0});var ZC=vS(),Kat=bS(),PS=SS(),Jat=e=>{let t=e.region||"us",r=ZC.createAuth(ZC.AuthMode.WithinHeaders,e.appId,e.apiKey),s=Kat.createTransporter({hosts:[{url:`analytics.${t}.algolia.com`}],...e,headers:{...r.headers(),"content-type":"application/json",...e.headers},queryParameters:{...r.queryParameters(),...e.queryParameters}}),a=e.appId;return ZC.addMethods({appId:a,transporter:s},e.methods)},zat=e=>(t,r)=>e.transporter.write({method:PS.MethodEnum.Post,path:"2/abtests",data:t},r),Zat=e=>(t,r)=>e.transporter.write({method:PS.MethodEnum.Delete,path:ZC.encode("2/abtests/%s",t)},r),Xat=e=>(t,r)=>e.transporter.read({method:PS.MethodEnum.Get,path:ZC.encode("2/abtests/%s",t)},r),$at=e=>t=>e.transporter.read({method:PS.MethodEnum.Get,path:"2/abtests"},t),elt=e=>(t,r)=>e.transporter.write({method:PS.MethodEnum.Post,path:ZC.encode("2/abtests/%s/stop",t)},r);J0.addABTest=zat;J0.createAnalyticsClient=Jat;J0.deleteABTest=Zat;J0.getABTest=Xat;J0.getABTests=$at;J0.stopABTest=elt});var Xme=G((LVt,Zme)=>{Zme.exports=zme()});var eye=G(xS=>{"use strict";Object.defineProperty(xS,"__esModule",{value:!0});var vq=vS(),tlt=bS(),$me=SS(),rlt=e=>{let t=e.region||"us",r=vq.createAuth(vq.AuthMode.WithinHeaders,e.appId,e.apiKey),s=tlt.createTransporter({hosts:[{url:`personalization.${t}.algolia.com`}],...e,headers:{...r.headers(),"content-type":"application/json",...e.headers},queryParameters:{...r.queryParameters(),...e.queryParameters}});return vq.addMethods({appId:e.appId,transporter:s},e.methods)},nlt=e=>t=>e.transporter.read({method:$me.MethodEnum.Get,path:"1/strategies/personalization"},t),ilt=e=>(t,r)=>e.transporter.write({method:$me.MethodEnum.Post,path:"1/strategies/personalization",data:t},r);xS.createPersonalizationClient=rlt;xS.getPersonalizationStrategy=nlt;xS.setPersonalizationStrategy=ilt});var rye=G((UVt,tye)=>{tye.exports=eye()});var dye=G(Ft=>{"use strict";Object.defineProperty(Ft,"__esModule",{value:!0});var Kt=vS(),Cl=bS(),br=SS(),slt=Ie("crypto");function zT(e){let t=r=>e.request(r).then(s=>{if(e.batch!==void 0&&e.batch(s.hits),!e.shouldStop(s))return s.cursor?t({cursor:s.cursor}):t({page:(r.page||0)+1})});return t({})}var olt=e=>{let t=e.appId,r=Kt.createAuth(e.authMode!==void 0?e.authMode:Kt.AuthMode.WithinHeaders,t,e.apiKey),s=Cl.createTransporter({hosts:[{url:`${t}-dsn.algolia.net`,accept:Cl.CallEnum.Read},{url:`${t}.algolia.net`,accept:Cl.CallEnum.Write}].concat(Kt.shuffle([{url:`${t}-1.algolianet.com`},{url:`${t}-2.algolianet.com`},{url:`${t}-3.algolianet.com`}])),...e,headers:{...r.headers(),"content-type":"application/x-www-form-urlencoded",...e.headers},queryParameters:{...r.queryParameters(),...e.queryParameters}}),a={transporter:s,appId:t,addAlgoliaAgent(n,c){s.userAgent.add({segment:n,version:c})},clearCache(){return Promise.all([s.requestsCache.clear(),s.responsesCache.clear()]).then(()=>{})}};return Kt.addMethods(a,e.methods)};function nye(){return{name:"MissingObjectIDError",message:"All objects must have an unique objectID (like a primary key) to be valid. Algolia is also able to generate objectIDs automatically but *it's not recommended*. To do it, use the `{'autoGenerateObjectIDIfNotExist': true}` option."}}function iye(){return{name:"ObjectNotFoundError",message:"Object not found."}}function sye(){return{name:"ValidUntilNotFoundError",message:"ValidUntil not found in given secured api key."}}var alt=e=>(t,r)=>{let{queryParameters:s,...a}=r||{},n={acl:t,...s!==void 0?{queryParameters:s}:{}},c=(f,p)=>Kt.createRetryablePromise(h=>kS(e)(f.key,p).catch(E=>{if(E.status!==404)throw E;return h()}));return Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:"1/keys",data:n},a),c)},llt=e=>(t,r,s)=>{let a=Cl.createMappedRequestOptions(s);return a.queryParameters["X-Algolia-User-ID"]=t,e.transporter.write({method:br.MethodEnum.Post,path:"1/clusters/mapping",data:{cluster:r}},a)},clt=e=>(t,r,s)=>e.transporter.write({method:br.MethodEnum.Post,path:"1/clusters/mapping/batch",data:{users:t,cluster:r}},s),ult=e=>(t,r)=>Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Kt.encode("/1/dictionaries/%s/batch",t),data:{clearExistingDictionaryEntries:!0,requests:{action:"addEntry",body:[]}}},r),(s,a)=>XC(e)(s.taskID,a)),ZT=e=>(t,r,s)=>{let a=(n,c)=>QS(e)(t,{methods:{waitTask:ms}}).waitTask(n.taskID,c);return Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Kt.encode("1/indexes/%s/operation",t),data:{operation:"copy",destination:r}},s),a)},flt=e=>(t,r,s)=>ZT(e)(t,r,{...s,scope:[$T.Rules]}),Alt=e=>(t,r,s)=>ZT(e)(t,r,{...s,scope:[$T.Settings]}),plt=e=>(t,r,s)=>ZT(e)(t,r,{...s,scope:[$T.Synonyms]}),hlt=e=>(t,r)=>t.method===br.MethodEnum.Get?e.transporter.read(t,r):e.transporter.write(t,r),glt=e=>(t,r)=>{let s=(a,n)=>Kt.createRetryablePromise(c=>kS(e)(t,n).then(c).catch(f=>{if(f.status!==404)throw f}));return Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Delete,path:Kt.encode("1/keys/%s",t)},r),s)},dlt=e=>(t,r,s)=>{let a=r.map(n=>({action:"deleteEntry",body:{objectID:n}}));return Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Kt.encode("/1/dictionaries/%s/batch",t),data:{clearExistingDictionaryEntries:!1,requests:a}},s),(n,c)=>XC(e)(n.taskID,c))},mlt=()=>(e,t)=>{let r=Cl.serializeQueryParameters(t),s=slt.createHmac("sha256",e).update(r).digest("hex");return Buffer.from(s+r).toString("base64")},kS=e=>(t,r)=>e.transporter.read({method:br.MethodEnum.Get,path:Kt.encode("1/keys/%s",t)},r),oye=e=>(t,r)=>e.transporter.read({method:br.MethodEnum.Get,path:Kt.encode("1/task/%s",t.toString())},r),ylt=e=>t=>e.transporter.read({method:br.MethodEnum.Get,path:"/1/dictionaries/*/settings"},t),Elt=e=>t=>e.transporter.read({method:br.MethodEnum.Get,path:"1/logs"},t),Ilt=()=>e=>{let t=Buffer.from(e,"base64").toString("ascii"),r=/validUntil=(\d+)/,s=t.match(r);if(s===null)throw sye();return parseInt(s[1],10)-Math.round(new Date().getTime()/1e3)},Clt=e=>t=>e.transporter.read({method:br.MethodEnum.Get,path:"1/clusters/mapping/top"},t),wlt=e=>(t,r)=>e.transporter.read({method:br.MethodEnum.Get,path:Kt.encode("1/clusters/mapping/%s",t)},r),Blt=e=>t=>{let{retrieveMappings:r,...s}=t||{};return r===!0&&(s.getClusters=!0),e.transporter.read({method:br.MethodEnum.Get,path:"1/clusters/mapping/pending"},s)},QS=e=>(t,r={})=>{let s={transporter:e.transporter,appId:e.appId,indexName:t};return Kt.addMethods(s,r.methods)},vlt=e=>t=>e.transporter.read({method:br.MethodEnum.Get,path:"1/keys"},t),Slt=e=>t=>e.transporter.read({method:br.MethodEnum.Get,path:"1/clusters"},t),Dlt=e=>t=>e.transporter.read({method:br.MethodEnum.Get,path:"1/indexes"},t),blt=e=>t=>e.transporter.read({method:br.MethodEnum.Get,path:"1/clusters/mapping"},t),Plt=e=>(t,r,s)=>{let a=(n,c)=>QS(e)(t,{methods:{waitTask:ms}}).waitTask(n.taskID,c);return Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Kt.encode("1/indexes/%s/operation",t),data:{operation:"move",destination:r}},s),a)},xlt=e=>(t,r)=>{let s=(a,n)=>Promise.all(Object.keys(a.taskID).map(c=>QS(e)(c,{methods:{waitTask:ms}}).waitTask(a.taskID[c],n)));return Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:"1/indexes/*/batch",data:{requests:t}},r),s)},klt=e=>(t,r)=>e.transporter.read({method:br.MethodEnum.Post,path:"1/indexes/*/objects",data:{requests:t}},r),Qlt=e=>(t,r)=>{let s=t.map(a=>({...a,params:Cl.serializeQueryParameters(a.params||{})}));return e.transporter.read({method:br.MethodEnum.Post,path:"1/indexes/*/queries",data:{requests:s},cacheable:!0},r)},Rlt=e=>(t,r)=>Promise.all(t.map(s=>{let{facetName:a,facetQuery:n,...c}=s.params;return QS(e)(s.indexName,{methods:{searchForFacetValues:pye}}).searchForFacetValues(a,n,{...r,...c})})),Tlt=e=>(t,r)=>{let s=Cl.createMappedRequestOptions(r);return s.queryParameters["X-Algolia-User-ID"]=t,e.transporter.write({method:br.MethodEnum.Delete,path:"1/clusters/mapping"},s)},Flt=e=>(t,r,s)=>{let a=r.map(n=>({action:"addEntry",body:n}));return Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Kt.encode("/1/dictionaries/%s/batch",t),data:{clearExistingDictionaryEntries:!0,requests:a}},s),(n,c)=>XC(e)(n.taskID,c))},Nlt=e=>(t,r)=>{let s=(a,n)=>Kt.createRetryablePromise(c=>kS(e)(t,n).catch(f=>{if(f.status!==404)throw f;return c()}));return Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Kt.encode("1/keys/%s/restore",t)},r),s)},Olt=e=>(t,r,s)=>{let a=r.map(n=>({action:"addEntry",body:n}));return Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Kt.encode("/1/dictionaries/%s/batch",t),data:{clearExistingDictionaryEntries:!1,requests:a}},s),(n,c)=>XC(e)(n.taskID,c))},Llt=e=>(t,r,s)=>e.transporter.read({method:br.MethodEnum.Post,path:Kt.encode("/1/dictionaries/%s/search",t),data:{query:r},cacheable:!0},s),Mlt=e=>(t,r)=>e.transporter.read({method:br.MethodEnum.Post,path:"1/clusters/mapping/search",data:{query:t}},r),Ult=e=>(t,r)=>Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Put,path:"/1/dictionaries/*/settings",data:t},r),(s,a)=>XC(e)(s.taskID,a)),_lt=e=>(t,r)=>{let s=Object.assign({},r),{queryParameters:a,...n}=r||{},c=a?{queryParameters:a}:{},f=["acl","indexes","referers","restrictSources","queryParameters","description","maxQueriesPerIPPerHour","maxHitsPerQuery"],p=E=>Object.keys(s).filter(C=>f.indexOf(C)!==-1).every(C=>{if(Array.isArray(E[C])&&Array.isArray(s[C])){let S=E[C];return S.length===s[C].length&&S.every((x,I)=>x===s[C][I])}else return E[C]===s[C]}),h=(E,C)=>Kt.createRetryablePromise(S=>kS(e)(t,C).then(x=>p(x)?Promise.resolve():S()));return Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Put,path:Kt.encode("1/keys/%s",t),data:c},n),h)},XC=e=>(t,r)=>Kt.createRetryablePromise(s=>oye(e)(t,r).then(a=>a.status!=="published"?s():void 0)),aye=e=>(t,r)=>{let s=(a,n)=>ms(e)(a.taskID,n);return Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Kt.encode("1/indexes/%s/batch",e.indexName),data:{requests:t}},r),s)},Hlt=e=>t=>zT({shouldStop:r=>r.cursor===void 0,...t,request:r=>e.transporter.read({method:br.MethodEnum.Post,path:Kt.encode("1/indexes/%s/browse",e.indexName),data:r},t)}),jlt=e=>t=>{let r={hitsPerPage:1e3,...t};return zT({shouldStop:s=>s.hits.length({...a,hits:a.hits.map(n=>(delete n._highlightResult,n))}))}})},Glt=e=>t=>{let r={hitsPerPage:1e3,...t};return zT({shouldStop:s=>s.hits.length({...a,hits:a.hits.map(n=>(delete n._highlightResult,n))}))}})},XT=e=>(t,r,s)=>{let{batchSize:a,...n}=s||{},c={taskIDs:[],objectIDs:[]},f=(p=0)=>{let h=[],E;for(E=p;E({action:r,body:C})),n).then(C=>(c.objectIDs=c.objectIDs.concat(C.objectIDs),c.taskIDs.push(C.taskID),E++,f(E)))};return Kt.createWaitablePromise(f(),(p,h)=>Promise.all(p.taskIDs.map(E=>ms(e)(E,h))))},qlt=e=>t=>Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Kt.encode("1/indexes/%s/clear",e.indexName)},t),(r,s)=>ms(e)(r.taskID,s)),Wlt=e=>t=>{let{forwardToReplicas:r,...s}=t||{},a=Cl.createMappedRequestOptions(s);return r&&(a.queryParameters.forwardToReplicas=1),Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Kt.encode("1/indexes/%s/rules/clear",e.indexName)},a),(n,c)=>ms(e)(n.taskID,c))},Vlt=e=>t=>{let{forwardToReplicas:r,...s}=t||{},a=Cl.createMappedRequestOptions(s);return r&&(a.queryParameters.forwardToReplicas=1),Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Kt.encode("1/indexes/%s/synonyms/clear",e.indexName)},a),(n,c)=>ms(e)(n.taskID,c))},Ylt=e=>(t,r)=>Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Kt.encode("1/indexes/%s/deleteByQuery",e.indexName),data:t},r),(s,a)=>ms(e)(s.taskID,a)),Klt=e=>t=>Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Delete,path:Kt.encode("1/indexes/%s",e.indexName)},t),(r,s)=>ms(e)(r.taskID,s)),Jlt=e=>(t,r)=>Kt.createWaitablePromise(lye(e)([t],r).then(s=>({taskID:s.taskIDs[0]})),(s,a)=>ms(e)(s.taskID,a)),lye=e=>(t,r)=>{let s=t.map(a=>({objectID:a}));return XT(e)(s,Tm.DeleteObject,r)},zlt=e=>(t,r)=>{let{forwardToReplicas:s,...a}=r||{},n=Cl.createMappedRequestOptions(a);return s&&(n.queryParameters.forwardToReplicas=1),Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Delete,path:Kt.encode("1/indexes/%s/rules/%s",e.indexName,t)},n),(c,f)=>ms(e)(c.taskID,f))},Zlt=e=>(t,r)=>{let{forwardToReplicas:s,...a}=r||{},n=Cl.createMappedRequestOptions(a);return s&&(n.queryParameters.forwardToReplicas=1),Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Delete,path:Kt.encode("1/indexes/%s/synonyms/%s",e.indexName,t)},n),(c,f)=>ms(e)(c.taskID,f))},Xlt=e=>t=>cye(e)(t).then(()=>!0).catch(r=>{if(r.status!==404)throw r;return!1}),$lt=e=>(t,r,s)=>e.transporter.read({method:br.MethodEnum.Post,path:Kt.encode("1/answers/%s/prediction",e.indexName),data:{query:t,queryLanguages:r},cacheable:!0},s),ect=e=>(t,r)=>{let{query:s,paginate:a,...n}=r||{},c=0,f=()=>Aye(e)(s||"",{...n,page:c}).then(p=>{for(let[h,E]of Object.entries(p.hits))if(t(E))return{object:E,position:parseInt(h,10),page:c};if(c++,a===!1||c>=p.nbPages)throw iye();return f()});return f()},tct=e=>(t,r)=>e.transporter.read({method:br.MethodEnum.Get,path:Kt.encode("1/indexes/%s/%s",e.indexName,t)},r),rct=()=>(e,t)=>{for(let[r,s]of Object.entries(e.hits))if(s.objectID===t)return parseInt(r,10);return-1},nct=e=>(t,r)=>{let{attributesToRetrieve:s,...a}=r||{},n=t.map(c=>({indexName:e.indexName,objectID:c,...s?{attributesToRetrieve:s}:{}}));return e.transporter.read({method:br.MethodEnum.Post,path:"1/indexes/*/objects",data:{requests:n}},a)},ict=e=>(t,r)=>e.transporter.read({method:br.MethodEnum.Get,path:Kt.encode("1/indexes/%s/rules/%s",e.indexName,t)},r),cye=e=>t=>e.transporter.read({method:br.MethodEnum.Get,path:Kt.encode("1/indexes/%s/settings",e.indexName),data:{getVersion:2}},t),sct=e=>(t,r)=>e.transporter.read({method:br.MethodEnum.Get,path:Kt.encode("1/indexes/%s/synonyms/%s",e.indexName,t)},r),uye=e=>(t,r)=>e.transporter.read({method:br.MethodEnum.Get,path:Kt.encode("1/indexes/%s/task/%s",e.indexName,t.toString())},r),oct=e=>(t,r)=>Kt.createWaitablePromise(fye(e)([t],r).then(s=>({objectID:s.objectIDs[0],taskID:s.taskIDs[0]})),(s,a)=>ms(e)(s.taskID,a)),fye=e=>(t,r)=>{let{createIfNotExists:s,...a}=r||{},n=s?Tm.PartialUpdateObject:Tm.PartialUpdateObjectNoCreate;return XT(e)(t,n,a)},act=e=>(t,r)=>{let{safe:s,autoGenerateObjectIDIfNotExist:a,batchSize:n,...c}=r||{},f=(I,T,O,U)=>Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Kt.encode("1/indexes/%s/operation",I),data:{operation:O,destination:T}},U),(Y,te)=>ms(e)(Y.taskID,te)),p=Math.random().toString(36).substring(7),h=`${e.indexName}_tmp_${p}`,E=Sq({appId:e.appId,transporter:e.transporter,indexName:h}),C=[],S=f(e.indexName,h,"copy",{...c,scope:["settings","synonyms","rules"]});C.push(S);let x=(s?S.wait(c):S).then(()=>{let I=E(t,{...c,autoGenerateObjectIDIfNotExist:a,batchSize:n});return C.push(I),s?I.wait(c):I}).then(()=>{let I=f(h,e.indexName,"move",c);return C.push(I),s?I.wait(c):I}).then(()=>Promise.all(C)).then(([I,T,O])=>({objectIDs:T.objectIDs,taskIDs:[I.taskID,...T.taskIDs,O.taskID]}));return Kt.createWaitablePromise(x,(I,T)=>Promise.all(C.map(O=>O.wait(T))))},lct=e=>(t,r)=>Dq(e)(t,{...r,clearExistingRules:!0}),cct=e=>(t,r)=>bq(e)(t,{...r,clearExistingSynonyms:!0}),uct=e=>(t,r)=>Kt.createWaitablePromise(Sq(e)([t],r).then(s=>({objectID:s.objectIDs[0],taskID:s.taskIDs[0]})),(s,a)=>ms(e)(s.taskID,a)),Sq=e=>(t,r)=>{let{autoGenerateObjectIDIfNotExist:s,...a}=r||{},n=s?Tm.AddObject:Tm.UpdateObject;if(n===Tm.UpdateObject){for(let c of t)if(c.objectID===void 0)return Kt.createWaitablePromise(Promise.reject(nye()))}return XT(e)(t,n,a)},fct=e=>(t,r)=>Dq(e)([t],r),Dq=e=>(t,r)=>{let{forwardToReplicas:s,clearExistingRules:a,...n}=r||{},c=Cl.createMappedRequestOptions(n);return s&&(c.queryParameters.forwardToReplicas=1),a&&(c.queryParameters.clearExistingRules=1),Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Kt.encode("1/indexes/%s/rules/batch",e.indexName),data:t},c),(f,p)=>ms(e)(f.taskID,p))},Act=e=>(t,r)=>bq(e)([t],r),bq=e=>(t,r)=>{let{forwardToReplicas:s,clearExistingSynonyms:a,replaceExistingSynonyms:n,...c}=r||{},f=Cl.createMappedRequestOptions(c);return s&&(f.queryParameters.forwardToReplicas=1),(n||a)&&(f.queryParameters.replaceExistingSynonyms=1),Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Kt.encode("1/indexes/%s/synonyms/batch",e.indexName),data:t},f),(p,h)=>ms(e)(p.taskID,h))},Aye=e=>(t,r)=>e.transporter.read({method:br.MethodEnum.Post,path:Kt.encode("1/indexes/%s/query",e.indexName),data:{query:t},cacheable:!0},r),pye=e=>(t,r,s)=>e.transporter.read({method:br.MethodEnum.Post,path:Kt.encode("1/indexes/%s/facets/%s/query",e.indexName,t),data:{facetQuery:r},cacheable:!0},s),hye=e=>(t,r)=>e.transporter.read({method:br.MethodEnum.Post,path:Kt.encode("1/indexes/%s/rules/search",e.indexName),data:{query:t}},r),gye=e=>(t,r)=>e.transporter.read({method:br.MethodEnum.Post,path:Kt.encode("1/indexes/%s/synonyms/search",e.indexName),data:{query:t}},r),pct=e=>(t,r)=>{let{forwardToReplicas:s,...a}=r||{},n=Cl.createMappedRequestOptions(a);return s&&(n.queryParameters.forwardToReplicas=1),Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Put,path:Kt.encode("1/indexes/%s/settings",e.indexName),data:t},n),(c,f)=>ms(e)(c.taskID,f))},ms=e=>(t,r)=>Kt.createRetryablePromise(s=>uye(e)(t,r).then(a=>a.status!=="published"?s():void 0)),hct={AddObject:"addObject",Analytics:"analytics",Browser:"browse",DeleteIndex:"deleteIndex",DeleteObject:"deleteObject",EditSettings:"editSettings",Inference:"inference",ListIndexes:"listIndexes",Logs:"logs",Personalization:"personalization",Recommendation:"recommendation",Search:"search",SeeUnretrievableAttributes:"seeUnretrievableAttributes",Settings:"settings",Usage:"usage"},Tm={AddObject:"addObject",UpdateObject:"updateObject",PartialUpdateObject:"partialUpdateObject",PartialUpdateObjectNoCreate:"partialUpdateObjectNoCreate",DeleteObject:"deleteObject",DeleteIndex:"delete",ClearIndex:"clear"},$T={Settings:"settings",Synonyms:"synonyms",Rules:"rules"},gct={None:"none",StopIfEnoughMatches:"stopIfEnoughMatches"},dct={Synonym:"synonym",OneWaySynonym:"oneWaySynonym",AltCorrection1:"altCorrection1",AltCorrection2:"altCorrection2",Placeholder:"placeholder"};Ft.ApiKeyACLEnum=hct;Ft.BatchActionEnum=Tm;Ft.ScopeEnum=$T;Ft.StrategyEnum=gct;Ft.SynonymEnum=dct;Ft.addApiKey=alt;Ft.assignUserID=llt;Ft.assignUserIDs=clt;Ft.batch=aye;Ft.browseObjects=Hlt;Ft.browseRules=jlt;Ft.browseSynonyms=Glt;Ft.chunkedBatch=XT;Ft.clearDictionaryEntries=ult;Ft.clearObjects=qlt;Ft.clearRules=Wlt;Ft.clearSynonyms=Vlt;Ft.copyIndex=ZT;Ft.copyRules=flt;Ft.copySettings=Alt;Ft.copySynonyms=plt;Ft.createBrowsablePromise=zT;Ft.createMissingObjectIDError=nye;Ft.createObjectNotFoundError=iye;Ft.createSearchClient=olt;Ft.createValidUntilNotFoundError=sye;Ft.customRequest=hlt;Ft.deleteApiKey=glt;Ft.deleteBy=Ylt;Ft.deleteDictionaryEntries=dlt;Ft.deleteIndex=Klt;Ft.deleteObject=Jlt;Ft.deleteObjects=lye;Ft.deleteRule=zlt;Ft.deleteSynonym=Zlt;Ft.exists=Xlt;Ft.findAnswers=$lt;Ft.findObject=ect;Ft.generateSecuredApiKey=mlt;Ft.getApiKey=kS;Ft.getAppTask=oye;Ft.getDictionarySettings=ylt;Ft.getLogs=Elt;Ft.getObject=tct;Ft.getObjectPosition=rct;Ft.getObjects=nct;Ft.getRule=ict;Ft.getSecuredApiKeyRemainingValidity=Ilt;Ft.getSettings=cye;Ft.getSynonym=sct;Ft.getTask=uye;Ft.getTopUserIDs=Clt;Ft.getUserID=wlt;Ft.hasPendingMappings=Blt;Ft.initIndex=QS;Ft.listApiKeys=vlt;Ft.listClusters=Slt;Ft.listIndices=Dlt;Ft.listUserIDs=blt;Ft.moveIndex=Plt;Ft.multipleBatch=xlt;Ft.multipleGetObjects=klt;Ft.multipleQueries=Qlt;Ft.multipleSearchForFacetValues=Rlt;Ft.partialUpdateObject=oct;Ft.partialUpdateObjects=fye;Ft.removeUserID=Tlt;Ft.replaceAllObjects=act;Ft.replaceAllRules=lct;Ft.replaceAllSynonyms=cct;Ft.replaceDictionaryEntries=Flt;Ft.restoreApiKey=Nlt;Ft.saveDictionaryEntries=Olt;Ft.saveObject=uct;Ft.saveObjects=Sq;Ft.saveRule=fct;Ft.saveRules=Dq;Ft.saveSynonym=Act;Ft.saveSynonyms=bq;Ft.search=Aye;Ft.searchDictionaryEntries=Llt;Ft.searchForFacetValues=pye;Ft.searchRules=hye;Ft.searchSynonyms=gye;Ft.searchUserIDs=Mlt;Ft.setDictionarySettings=Ult;Ft.setSettings=pct;Ft.updateApiKey=_lt;Ft.waitAppTask=XC;Ft.waitTask=ms});var yye=G((HVt,mye)=>{mye.exports=dye()});var Eye=G(eF=>{"use strict";Object.defineProperty(eF,"__esModule",{value:!0});function mct(){return{debug(e,t){return Promise.resolve()},info(e,t){return Promise.resolve()},error(e,t){return Promise.resolve()}}}var yct={Debug:1,Info:2,Error:3};eF.LogLevelEnum=yct;eF.createNullLogger=mct});var Cye=G((GVt,Iye)=>{Iye.exports=Eye()});var Sye=G(Pq=>{"use strict";Object.defineProperty(Pq,"__esModule",{value:!0});var wye=Ie("http"),Bye=Ie("https"),Ect=Ie("url"),vye={keepAlive:!0},Ict=new wye.Agent(vye),Cct=new Bye.Agent(vye);function wct({agent:e,httpAgent:t,httpsAgent:r,requesterOptions:s={}}={}){let a=t||e||Ict,n=r||e||Cct;return{send(c){return new Promise(f=>{let p=Ect.parse(c.url),h=p.query===null?p.pathname:`${p.pathname}?${p.query}`,E={...s,agent:p.protocol==="https:"?n:a,hostname:p.hostname,path:h,method:c.method,headers:{...s&&s.headers?s.headers:{},...c.headers},...p.port!==void 0?{port:p.port||""}:{}},C=(p.protocol==="https:"?Bye:wye).request(E,T=>{let O=[];T.on("data",U=>{O=O.concat(U)}),T.on("end",()=>{clearTimeout(x),clearTimeout(I),f({status:T.statusCode||0,content:Buffer.concat(O).toString(),isTimedOut:!1})})}),S=(T,O)=>setTimeout(()=>{C.abort(),f({status:0,content:O,isTimedOut:!0})},T*1e3),x=S(c.connectTimeout,"Connection timeout"),I;C.on("error",T=>{clearTimeout(x),clearTimeout(I),f({status:0,content:T.message,isTimedOut:!1})}),C.once("response",()=>{clearTimeout(x),I=S(c.responseTimeout,"Socket timeout")}),c.data!==void 0&&C.write(c.data),C.end()})},destroy(){return a.destroy(),n.destroy(),Promise.resolve()}}}Pq.createNodeHttpRequester=wct});var bye=G((WVt,Dye)=>{Dye.exports=Sye()});var Qye=G((VVt,kye)=>{"use strict";var Pye=Sme(),Bct=Pme(),$C=Xme(),kq=vS(),xq=rye(),Gt=yye(),vct=Cye(),Sct=bye(),Dct=bS();function xye(e,t,r){let s={appId:e,apiKey:t,timeouts:{connect:2,read:5,write:30},requester:Sct.createNodeHttpRequester(),logger:vct.createNullLogger(),responsesCache:Pye.createNullCache(),requestsCache:Pye.createNullCache(),hostsCache:Bct.createInMemoryCache(),userAgent:Dct.createUserAgent(kq.version).add({segment:"Node.js",version:process.versions.node})},a={...s,...r},n=()=>c=>xq.createPersonalizationClient({...s,...c,methods:{getPersonalizationStrategy:xq.getPersonalizationStrategy,setPersonalizationStrategy:xq.setPersonalizationStrategy}});return Gt.createSearchClient({...a,methods:{search:Gt.multipleQueries,searchForFacetValues:Gt.multipleSearchForFacetValues,multipleBatch:Gt.multipleBatch,multipleGetObjects:Gt.multipleGetObjects,multipleQueries:Gt.multipleQueries,copyIndex:Gt.copyIndex,copySettings:Gt.copySettings,copyRules:Gt.copyRules,copySynonyms:Gt.copySynonyms,moveIndex:Gt.moveIndex,listIndices:Gt.listIndices,getLogs:Gt.getLogs,listClusters:Gt.listClusters,multipleSearchForFacetValues:Gt.multipleSearchForFacetValues,getApiKey:Gt.getApiKey,addApiKey:Gt.addApiKey,listApiKeys:Gt.listApiKeys,updateApiKey:Gt.updateApiKey,deleteApiKey:Gt.deleteApiKey,restoreApiKey:Gt.restoreApiKey,assignUserID:Gt.assignUserID,assignUserIDs:Gt.assignUserIDs,getUserID:Gt.getUserID,searchUserIDs:Gt.searchUserIDs,listUserIDs:Gt.listUserIDs,getTopUserIDs:Gt.getTopUserIDs,removeUserID:Gt.removeUserID,hasPendingMappings:Gt.hasPendingMappings,generateSecuredApiKey:Gt.generateSecuredApiKey,getSecuredApiKeyRemainingValidity:Gt.getSecuredApiKeyRemainingValidity,destroy:kq.destroy,clearDictionaryEntries:Gt.clearDictionaryEntries,deleteDictionaryEntries:Gt.deleteDictionaryEntries,getDictionarySettings:Gt.getDictionarySettings,getAppTask:Gt.getAppTask,replaceDictionaryEntries:Gt.replaceDictionaryEntries,saveDictionaryEntries:Gt.saveDictionaryEntries,searchDictionaryEntries:Gt.searchDictionaryEntries,setDictionarySettings:Gt.setDictionarySettings,waitAppTask:Gt.waitAppTask,customRequest:Gt.customRequest,initIndex:c=>f=>Gt.initIndex(c)(f,{methods:{batch:Gt.batch,delete:Gt.deleteIndex,findAnswers:Gt.findAnswers,getObject:Gt.getObject,getObjects:Gt.getObjects,saveObject:Gt.saveObject,saveObjects:Gt.saveObjects,search:Gt.search,searchForFacetValues:Gt.searchForFacetValues,waitTask:Gt.waitTask,setSettings:Gt.setSettings,getSettings:Gt.getSettings,partialUpdateObject:Gt.partialUpdateObject,partialUpdateObjects:Gt.partialUpdateObjects,deleteObject:Gt.deleteObject,deleteObjects:Gt.deleteObjects,deleteBy:Gt.deleteBy,clearObjects:Gt.clearObjects,browseObjects:Gt.browseObjects,getObjectPosition:Gt.getObjectPosition,findObject:Gt.findObject,exists:Gt.exists,saveSynonym:Gt.saveSynonym,saveSynonyms:Gt.saveSynonyms,getSynonym:Gt.getSynonym,searchSynonyms:Gt.searchSynonyms,browseSynonyms:Gt.browseSynonyms,deleteSynonym:Gt.deleteSynonym,clearSynonyms:Gt.clearSynonyms,replaceAllObjects:Gt.replaceAllObjects,replaceAllSynonyms:Gt.replaceAllSynonyms,searchRules:Gt.searchRules,getRule:Gt.getRule,deleteRule:Gt.deleteRule,saveRule:Gt.saveRule,saveRules:Gt.saveRules,replaceAllRules:Gt.replaceAllRules,browseRules:Gt.browseRules,clearRules:Gt.clearRules}}),initAnalytics:()=>c=>$C.createAnalyticsClient({...s,...c,methods:{addABTest:$C.addABTest,getABTest:$C.getABTest,getABTests:$C.getABTests,stopABTest:$C.stopABTest,deleteABTest:$C.deleteABTest}}),initPersonalization:n,initRecommendation:()=>c=>(a.logger.info("The `initRecommendation` method is deprecated. Use `initPersonalization` instead."),n()(c))}})}xye.version=kq.version;kye.exports=xye});var Rq=G((YVt,Qq)=>{var Rye=Qye();Qq.exports=Rye;Qq.exports.default=Rye});var Nq=G((JVt,Nye)=>{"use strict";var Fye=Object.getOwnPropertySymbols,Pct=Object.prototype.hasOwnProperty,xct=Object.prototype.propertyIsEnumerable;function kct(e){if(e==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}function Qct(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de",Object.getOwnPropertyNames(e)[0]==="5")return!1;for(var t={},r=0;r<10;r++)t["_"+String.fromCharCode(r)]=r;var s=Object.getOwnPropertyNames(t).map(function(n){return t[n]});if(s.join("")!=="0123456789")return!1;var a={};return"abcdefghijklmnopqrst".split("").forEach(function(n){a[n]=n}),Object.keys(Object.assign({},a)).join("")==="abcdefghijklmnopqrst"}catch{return!1}}Nye.exports=Qct()?Object.assign:function(e,t){for(var r,s=kct(e),a,n=1;n{"use strict";var Lq=Nq(),ew=60103,Mye=60106;Pn.Fragment=60107;Pn.StrictMode=60108;Pn.Profiler=60114;var Uye=60109,_ye=60110,Hye=60112;Pn.Suspense=60113;var jye=60115,Gye=60116;typeof Symbol=="function"&&Symbol.for&&(Hc=Symbol.for,ew=Hc("react.element"),Mye=Hc("react.portal"),Pn.Fragment=Hc("react.fragment"),Pn.StrictMode=Hc("react.strict_mode"),Pn.Profiler=Hc("react.profiler"),Uye=Hc("react.provider"),_ye=Hc("react.context"),Hye=Hc("react.forward_ref"),Pn.Suspense=Hc("react.suspense"),jye=Hc("react.memo"),Gye=Hc("react.lazy"));var Hc,Oye=typeof Symbol=="function"&&Symbol.iterator;function Rct(e){return e===null||typeof e!="object"?null:(e=Oye&&e[Oye]||e["@@iterator"],typeof e=="function"?e:null)}function RS(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,r=1;r{"use strict";Xye.exports=Zye()});var nF=G((XVt,$ye)=>{function Lct(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}$ye.exports=Lct});var tEe=G(($Vt,eEe)=>{var Mct=typeof global=="object"&&global&&global.Object===Object&&global;eEe.exports=Mct});var jq=G((eYt,rEe)=>{var Uct=tEe(),_ct=typeof self=="object"&&self&&self.Object===Object&&self,Hct=Uct||_ct||Function("return this")();rEe.exports=Hct});var iEe=G((tYt,nEe)=>{var jct=jq(),Gct=function(){return jct.Date.now()};nEe.exports=Gct});var oEe=G((rYt,sEe)=>{var qct=/\s/;function Wct(e){for(var t=e.length;t--&&qct.test(e.charAt(t)););return t}sEe.exports=Wct});var lEe=G((nYt,aEe)=>{var Vct=oEe(),Yct=/^\s+/;function Kct(e){return e&&e.slice(0,Vct(e)+1).replace(Yct,"")}aEe.exports=Kct});var Gq=G((iYt,cEe)=>{var Jct=jq(),zct=Jct.Symbol;cEe.exports=zct});var pEe=G((sYt,AEe)=>{var uEe=Gq(),fEe=Object.prototype,Zct=fEe.hasOwnProperty,Xct=fEe.toString,TS=uEe?uEe.toStringTag:void 0;function $ct(e){var t=Zct.call(e,TS),r=e[TS];try{e[TS]=void 0;var s=!0}catch{}var a=Xct.call(e);return s&&(t?e[TS]=r:delete e[TS]),a}AEe.exports=$ct});var gEe=G((oYt,hEe)=>{var eut=Object.prototype,tut=eut.toString;function rut(e){return tut.call(e)}hEe.exports=rut});var EEe=G((aYt,yEe)=>{var dEe=Gq(),nut=pEe(),iut=gEe(),sut="[object Null]",out="[object Undefined]",mEe=dEe?dEe.toStringTag:void 0;function aut(e){return e==null?e===void 0?out:sut:mEe&&mEe in Object(e)?nut(e):iut(e)}yEe.exports=aut});var CEe=G((lYt,IEe)=>{function lut(e){return e!=null&&typeof e=="object"}IEe.exports=lut});var BEe=G((cYt,wEe)=>{var cut=EEe(),uut=CEe(),fut="[object Symbol]";function Aut(e){return typeof e=="symbol"||uut(e)&&cut(e)==fut}wEe.exports=Aut});var bEe=G((uYt,DEe)=>{var put=lEe(),vEe=nF(),hut=BEe(),SEe=NaN,gut=/^[-+]0x[0-9a-f]+$/i,dut=/^0b[01]+$/i,mut=/^0o[0-7]+$/i,yut=parseInt;function Eut(e){if(typeof e=="number")return e;if(hut(e))return SEe;if(vEe(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=vEe(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=put(e);var r=dut.test(e);return r||mut.test(e)?yut(e.slice(2),r?2:8):gut.test(e)?SEe:+e}DEe.exports=Eut});var kEe=G((fYt,xEe)=>{var Iut=nF(),qq=iEe(),PEe=bEe(),Cut="Expected a function",wut=Math.max,But=Math.min;function vut(e,t,r){var s,a,n,c,f,p,h=0,E=!1,C=!1,S=!0;if(typeof e!="function")throw new TypeError(Cut);t=PEe(t)||0,Iut(r)&&(E=!!r.leading,C="maxWait"in r,n=C?wut(PEe(r.maxWait)||0,t):n,S="trailing"in r?!!r.trailing:S);function x(ae){var de=s,Ae=a;return s=a=void 0,h=ae,c=e.apply(Ae,de),c}function I(ae){return h=ae,f=setTimeout(U,t),E?x(ae):c}function T(ae){var de=ae-p,Ae=ae-h,Ce=t-de;return C?But(Ce,n-Ae):Ce}function O(ae){var de=ae-p,Ae=ae-h;return p===void 0||de>=t||de<0||C&&Ae>=n}function U(){var ae=qq();if(O(ae))return Y(ae);f=setTimeout(U,T(ae))}function Y(ae){return f=void 0,S&&s?x(ae):(s=a=void 0,c)}function te(){f!==void 0&&clearTimeout(f),h=0,s=p=a=f=void 0}function ie(){return f===void 0?c:Y(qq())}function ue(){var ae=qq(),de=O(ae);if(s=arguments,a=this,p=ae,de){if(f===void 0)return I(p);if(C)return clearTimeout(f),f=setTimeout(U,t),x(p)}return f===void 0&&(f=setTimeout(U,t)),c}return ue.cancel=te,ue.flush=ie,ue}xEe.exports=vut});var REe=G((AYt,QEe)=>{var Sut=kEe(),Dut=nF(),but="Expected a function";function Put(e,t,r){var s=!0,a=!0;if(typeof e!="function")throw new TypeError(but);return Dut(r)&&(s="leading"in r?!!r.leading:s,a="trailing"in r?!!r.trailing:a),Sut(e,t,{leading:s,maxWait:t,trailing:a})}QEe.exports=Put});var Vq=G((pYt,Wq)=>{"use strict";var Bn=Wq.exports;Wq.exports.default=Bn;var $n="\x1B[",NS="\x1B]",rw="\x07",iF=";",TEe=process.env.TERM_PROGRAM==="Apple_Terminal";Bn.cursorTo=(e,t)=>{if(typeof e!="number")throw new TypeError("The `x` argument is required");return typeof t!="number"?$n+(e+1)+"G":$n+(t+1)+";"+(e+1)+"H"};Bn.cursorMove=(e,t)=>{if(typeof e!="number")throw new TypeError("The `x` argument is required");let r="";return e<0?r+=$n+-e+"D":e>0&&(r+=$n+e+"C"),t<0?r+=$n+-t+"A":t>0&&(r+=$n+t+"B"),r};Bn.cursorUp=(e=1)=>$n+e+"A";Bn.cursorDown=(e=1)=>$n+e+"B";Bn.cursorForward=(e=1)=>$n+e+"C";Bn.cursorBackward=(e=1)=>$n+e+"D";Bn.cursorLeft=$n+"G";Bn.cursorSavePosition=TEe?"\x1B7":$n+"s";Bn.cursorRestorePosition=TEe?"\x1B8":$n+"u";Bn.cursorGetPosition=$n+"6n";Bn.cursorNextLine=$n+"E";Bn.cursorPrevLine=$n+"F";Bn.cursorHide=$n+"?25l";Bn.cursorShow=$n+"?25h";Bn.eraseLines=e=>{let t="";for(let r=0;r[NS,"8",iF,iF,t,rw,e,NS,"8",iF,iF,rw].join("");Bn.image=(e,t={})=>{let r=`${NS}1337;File=inline=1`;return t.width&&(r+=`;width=${t.width}`),t.height&&(r+=`;height=${t.height}`),t.preserveAspectRatio===!1&&(r+=";preserveAspectRatio=0"),r+":"+e.toString("base64")+rw};Bn.iTerm={setCwd:(e=process.cwd())=>`${NS}50;CurrentDir=${e}${rw}`,annotation:(e,t={})=>{let r=`${NS}1337;`,s=typeof t.x<"u",a=typeof t.y<"u";if((s||a)&&!(s&&a&&typeof t.length<"u"))throw new Error("`x`, `y` and `length` must be defined when `x` or `y` is defined");return e=e.replace(/\|/g,""),r+=t.isHidden?"AddHiddenAnnotation=":"AddAnnotation=",t.length>0?r+=(s?[e,t.length,t.x,t.y]:[t.length,e]).join("|"):r+=e,r+rw}}});var NEe=G((hYt,Yq)=>{"use strict";var FEe=(e,t)=>{for(let r of Reflect.ownKeys(t))Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r));return e};Yq.exports=FEe;Yq.exports.default=FEe});var LEe=G((gYt,oF)=>{"use strict";var xut=NEe(),sF=new WeakMap,OEe=(e,t={})=>{if(typeof e!="function")throw new TypeError("Expected a function");let r,s=0,a=e.displayName||e.name||"",n=function(...c){if(sF.set(n,++s),s===1)r=e.apply(this,c),e=null;else if(t.throw===!0)throw new Error(`Function \`${a}\` can only be called once`);return r};return xut(n,e),sF.set(n,s),n};oF.exports=OEe;oF.exports.default=OEe;oF.exports.callCount=e=>{if(!sF.has(e))throw new Error(`The given function \`${e.name}\` is not wrapped by the \`onetime\` package`);return sF.get(e)}});var MEe=G((dYt,aF)=>{aF.exports=["SIGABRT","SIGALRM","SIGHUP","SIGINT","SIGTERM"];process.platform!=="win32"&&aF.exports.push("SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&aF.exports.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT","SIGUNUSED")});var zq=G((mYt,sw)=>{var Qi=global.process,Fm=function(e){return e&&typeof e=="object"&&typeof e.removeListener=="function"&&typeof e.emit=="function"&&typeof e.reallyExit=="function"&&typeof e.listeners=="function"&&typeof e.kill=="function"&&typeof e.pid=="number"&&typeof e.on=="function"};Fm(Qi)?(UEe=Ie("assert"),nw=MEe(),_Ee=/^win/i.test(Qi.platform),OS=Ie("events"),typeof OS!="function"&&(OS=OS.EventEmitter),Qi.__signal_exit_emitter__?eo=Qi.__signal_exit_emitter__:(eo=Qi.__signal_exit_emitter__=new OS,eo.count=0,eo.emitted={}),eo.infinite||(eo.setMaxListeners(1/0),eo.infinite=!0),sw.exports=function(e,t){if(!Fm(global.process))return function(){};UEe.equal(typeof e,"function","a callback must be provided for exit handler"),iw===!1&&Kq();var r="exit";t&&t.alwaysLast&&(r="afterexit");var s=function(){eo.removeListener(r,e),eo.listeners("exit").length===0&&eo.listeners("afterexit").length===0&&lF()};return eo.on(r,e),s},lF=function(){!iw||!Fm(global.process)||(iw=!1,nw.forEach(function(t){try{Qi.removeListener(t,cF[t])}catch{}}),Qi.emit=uF,Qi.reallyExit=Jq,eo.count-=1)},sw.exports.unload=lF,Nm=function(t,r,s){eo.emitted[t]||(eo.emitted[t]=!0,eo.emit(t,r,s))},cF={},nw.forEach(function(e){cF[e]=function(){if(Fm(global.process)){var r=Qi.listeners(e);r.length===eo.count&&(lF(),Nm("exit",null,e),Nm("afterexit",null,e),_Ee&&e==="SIGHUP"&&(e="SIGINT"),Qi.kill(Qi.pid,e))}}}),sw.exports.signals=function(){return nw},iw=!1,Kq=function(){iw||!Fm(global.process)||(iw=!0,eo.count+=1,nw=nw.filter(function(t){try{return Qi.on(t,cF[t]),!0}catch{return!1}}),Qi.emit=jEe,Qi.reallyExit=HEe)},sw.exports.load=Kq,Jq=Qi.reallyExit,HEe=function(t){Fm(global.process)&&(Qi.exitCode=t||0,Nm("exit",Qi.exitCode,null),Nm("afterexit",Qi.exitCode,null),Jq.call(Qi,Qi.exitCode))},uF=Qi.emit,jEe=function(t,r){if(t==="exit"&&Fm(global.process)){r!==void 0&&(Qi.exitCode=r);var s=uF.apply(this,arguments);return Nm("exit",Qi.exitCode,null),Nm("afterexit",Qi.exitCode,null),s}else return uF.apply(this,arguments)}):sw.exports=function(){return function(){}};var UEe,nw,_Ee,OS,eo,lF,Nm,cF,iw,Kq,Jq,HEe,uF,jEe});var qEe=G((yYt,GEe)=>{"use strict";var kut=LEe(),Qut=zq();GEe.exports=kut(()=>{Qut(()=>{process.stderr.write("\x1B[?25h")},{alwaysLast:!0})})});var Zq=G(ow=>{"use strict";var Rut=qEe(),fF=!1;ow.show=(e=process.stderr)=>{e.isTTY&&(fF=!1,e.write("\x1B[?25h"))};ow.hide=(e=process.stderr)=>{e.isTTY&&(Rut(),fF=!0,e.write("\x1B[?25l"))};ow.toggle=(e,t)=>{e!==void 0&&(fF=e),fF?ow.show(t):ow.hide(t)}});var KEe=G(LS=>{"use strict";var YEe=LS&&LS.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(LS,"__esModule",{value:!0});var WEe=YEe(Vq()),VEe=YEe(Zq()),Tut=(e,{showCursor:t=!1}={})=>{let r=0,s="",a=!1,n=c=>{!t&&!a&&(VEe.default.hide(),a=!0);let f=c+` -`;f!==s&&(s=f,e.write(WEe.default.eraseLines(r)+f),r=f.split(` -`).length)};return n.clear=()=>{e.write(WEe.default.eraseLines(r)),s="",r=0},n.done=()=>{s="",r=0,t||(VEe.default.show(),a=!1)},n};LS.default={create:Tut}});var JEe=G((CYt,Fut)=>{Fut.exports=[{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI",pr:"SYSTEM_PULLREQUEST_PULLREQUESTID"},{name:"Bamboo",constant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT",pr:"BITBUCKET_PR_ID"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITRISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDDY_EXECUTION_PULL_REQUEST_ID"},{name:"Buildkite",constant:"BUILDKITE",env:"BUILDKITE",pr:{env:"BUILDKITE_PULL_REQUEST",ne:"false"}},{name:"CircleCI",constant:"CIRCLE",env:"CIRCLECI",pr:"CIRCLE_PULL_REQUEST"},{name:"Cirrus CI",constant:"CIRRUS",env:"CIRRUS_CI",pr:"CIRRUS_PR"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN"},{name:"Codeship",constant:"CODESHIP",env:{CI_NAME:"codeship"}},{name:"Drone",constant:"DRONE",env:"DRONE",pr:{DRONE_BUILD_EVENT:"pull_request"}},{name:"dsari",constant:"DSARI",env:"DSARI"},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY_BUILD_BASE",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Shippable",constant:"SHIPPABLE",env:"SHIPPABLE",pr:{IS_PULL_REQUEST:"true"}},{name:"Solano CI",constant:"SOLANO",env:"TDDIUM",pr:"TDDIUM_PR_ID"},{name:"Strider CD",constant:"STRIDER",env:"STRIDER"},{name:"TaskCluster",constant:"TASKCLUSTER",env:["TASK_ID","RUN_ID"]},{name:"TeamCity",constant:"TEAMCITY",env:"TEAMCITY_VERSION"},{name:"Travis CI",constant:"TRAVIS",env:"TRAVIS",pr:{env:"TRAVIS_PULL_REQUEST",ne:"false"}}]});var XEe=G(rc=>{"use strict";var ZEe=JEe(),fA=process.env;Object.defineProperty(rc,"_vendors",{value:ZEe.map(function(e){return e.constant})});rc.name=null;rc.isPR=null;ZEe.forEach(function(e){var t=Array.isArray(e.env)?e.env:[e.env],r=t.every(function(s){return zEe(s)});if(rc[e.constant]=r,r)switch(rc.name=e.name,typeof e.pr){case"string":rc.isPR=!!fA[e.pr];break;case"object":"env"in e.pr?rc.isPR=e.pr.env in fA&&fA[e.pr.env]!==e.pr.ne:"any"in e.pr?rc.isPR=e.pr.any.some(function(s){return!!fA[s]}):rc.isPR=zEe(e.pr);break;default:rc.isPR=null}});rc.isCI=!!(fA.CI||fA.CONTINUOUS_INTEGRATION||fA.BUILD_NUMBER||fA.RUN_ID||rc.name);function zEe(e){return typeof e=="string"?!!fA[e]:Object.keys(e).every(function(t){return fA[t]===e[t]})}});var eIe=G((BYt,$Ee)=>{"use strict";$Ee.exports=XEe().isCI});var rIe=G((vYt,tIe)=>{"use strict";var Nut=e=>{let t=new Set;do for(let r of Reflect.ownKeys(e))t.add([e,r]);while((e=Reflect.getPrototypeOf(e))&&e!==Object.prototype);return t};tIe.exports=(e,{include:t,exclude:r}={})=>{let s=a=>{let n=c=>typeof c=="string"?a===c:c.test(a);return t?t.some(n):r?!r.some(n):!0};for(let[a,n]of Nut(e.constructor.prototype)){if(n==="constructor"||!s(n))continue;let c=Reflect.getOwnPropertyDescriptor(a,n);c&&typeof c.value=="function"&&(e[n]=e[n].bind(e))}return e}});var lIe=G(Jn=>{"use strict";var lw,_S,gF,i9;typeof performance=="object"&&typeof performance.now=="function"?(nIe=performance,Jn.unstable_now=function(){return nIe.now()}):(Xq=Date,iIe=Xq.now(),Jn.unstable_now=function(){return Xq.now()-iIe});var nIe,Xq,iIe;typeof window>"u"||typeof MessageChannel!="function"?(aw=null,$q=null,e9=function(){if(aw!==null)try{var e=Jn.unstable_now();aw(!0,e),aw=null}catch(t){throw setTimeout(e9,0),t}},lw=function(e){aw!==null?setTimeout(lw,0,e):(aw=e,setTimeout(e9,0))},_S=function(e,t){$q=setTimeout(e,t)},gF=function(){clearTimeout($q)},Jn.unstable_shouldYield=function(){return!1},i9=Jn.unstable_forceFrameRate=function(){}):(sIe=window.setTimeout,oIe=window.clearTimeout,typeof console<"u"&&(aIe=window.cancelAnimationFrame,typeof window.requestAnimationFrame!="function"&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),typeof aIe!="function"&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills")),MS=!1,US=null,AF=-1,t9=5,r9=0,Jn.unstable_shouldYield=function(){return Jn.unstable_now()>=r9},i9=function(){},Jn.unstable_forceFrameRate=function(e){0>e||125>>1,a=e[s];if(a!==void 0&&0hF(c,r))p!==void 0&&0>hF(p,c)?(e[s]=p,e[f]=r,s=f):(e[s]=c,e[n]=r,s=n);else if(p!==void 0&&0>hF(p,r))e[s]=p,e[f]=r,s=f;else break e}}return t}return null}function hF(e,t){var r=e.sortIndex-t.sortIndex;return r!==0?r:e.id-t.id}var AA=[],z0=[],Out=1,jc=null,na=3,mF=!1,Om=!1,HS=!1;function o9(e){for(var t=rf(z0);t!==null;){if(t.callback===null)dF(z0);else if(t.startTime<=e)dF(z0),t.sortIndex=t.expirationTime,s9(AA,t);else break;t=rf(z0)}}function a9(e){if(HS=!1,o9(e),!Om)if(rf(AA)!==null)Om=!0,lw(l9);else{var t=rf(z0);t!==null&&_S(a9,t.startTime-e)}}function l9(e,t){Om=!1,HS&&(HS=!1,gF()),mF=!0;var r=na;try{for(o9(t),jc=rf(AA);jc!==null&&(!(jc.expirationTime>t)||e&&!Jn.unstable_shouldYield());){var s=jc.callback;if(typeof s=="function"){jc.callback=null,na=jc.priorityLevel;var a=s(jc.expirationTime<=t);t=Jn.unstable_now(),typeof a=="function"?jc.callback=a:jc===rf(AA)&&dF(AA),o9(t)}else dF(AA);jc=rf(AA)}if(jc!==null)var n=!0;else{var c=rf(z0);c!==null&&_S(a9,c.startTime-t),n=!1}return n}finally{jc=null,na=r,mF=!1}}var Lut=i9;Jn.unstable_IdlePriority=5;Jn.unstable_ImmediatePriority=1;Jn.unstable_LowPriority=4;Jn.unstable_NormalPriority=3;Jn.unstable_Profiling=null;Jn.unstable_UserBlockingPriority=2;Jn.unstable_cancelCallback=function(e){e.callback=null};Jn.unstable_continueExecution=function(){Om||mF||(Om=!0,lw(l9))};Jn.unstable_getCurrentPriorityLevel=function(){return na};Jn.unstable_getFirstCallbackNode=function(){return rf(AA)};Jn.unstable_next=function(e){switch(na){case 1:case 2:case 3:var t=3;break;default:t=na}var r=na;na=t;try{return e()}finally{na=r}};Jn.unstable_pauseExecution=function(){};Jn.unstable_requestPaint=Lut;Jn.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var r=na;na=e;try{return t()}finally{na=r}};Jn.unstable_scheduleCallback=function(e,t,r){var s=Jn.unstable_now();switch(typeof r=="object"&&r!==null?(r=r.delay,r=typeof r=="number"&&0s?(e.sortIndex=r,s9(z0,e),rf(AA)===null&&e===rf(z0)&&(HS?gF():HS=!0,_S(a9,r-s))):(e.sortIndex=a,s9(AA,e),Om||mF||(Om=!0,lw(l9))),e};Jn.unstable_wrapCallback=function(e){var t=na;return function(){var r=na;na=t;try{return e.apply(this,arguments)}finally{na=r}}}});var c9=G((DYt,cIe)=>{"use strict";cIe.exports=lIe()});var uIe=G((bYt,jS)=>{jS.exports=function(t){var r={},s=Nq(),a=gn(),n=c9();function c(v){for(var D="https://reactjs.org/docs/error-decoder.html?invariant="+v,Q=1;Q_e||V[ve]!==ne[_e])return` -`+V[ve].replace(" at new "," at ");while(1<=ve&&0<=_e);break}}}finally{we=!1,Error.prepareStackTrace=Q}return(v=v?v.displayName||v.name:"")?ac(v):""}var lc=[],Oi=-1;function co(v){return{current:v}}function Tt(v){0>Oi||(v.current=lc[Oi],lc[Oi]=null,Oi--)}function Qn(v,D){Oi++,lc[Oi]=v.current,v.current=D}var Aa={},Gi=co(Aa),Li=co(!1),ja=Aa;function mn(v,D){var Q=v.type.contextTypes;if(!Q)return Aa;var H=v.stateNode;if(H&&H.__reactInternalMemoizedUnmaskedChildContext===D)return H.__reactInternalMemoizedMaskedChildContext;var V={},ne;for(ne in Q)V[ne]=D[ne];return H&&(v=v.stateNode,v.__reactInternalMemoizedUnmaskedChildContext=D,v.__reactInternalMemoizedMaskedChildContext=V),V}function Zn(v){return v=v.childContextTypes,v!=null}function uu(){Tt(Li),Tt(Gi)}function dh(v,D,Q){if(Gi.current!==Aa)throw Error(c(168));Qn(Gi,D),Qn(Li,Q)}function Ga(v,D,Q){var H=v.stateNode;if(v=D.childContextTypes,typeof H.getChildContext!="function")return Q;H=H.getChildContext();for(var V in H)if(!(V in v))throw Error(c(108,g(D)||"Unknown",V));return s({},Q,H)}function qa(v){return v=(v=v.stateNode)&&v.__reactInternalMemoizedMergedChildContext||Aa,ja=Gi.current,Qn(Gi,v),Qn(Li,Li.current),!0}function Wa(v,D,Q){var H=v.stateNode;if(!H)throw Error(c(169));Q?(v=Ga(v,D,ja),H.__reactInternalMemoizedMergedChildContext=v,Tt(Li),Tt(Gi),Qn(Gi,v)):Tt(Li),Qn(Li,Q)}var $e=null,Va=null,df=n.unstable_now;df();var cc=0,vn=8;function pa(v){if(1&v)return vn=15,1;if(2&v)return vn=14,2;if(4&v)return vn=13,4;var D=24&v;return D!==0?(vn=12,D):v&32?(vn=11,32):(D=192&v,D!==0?(vn=10,D):v&256?(vn=9,256):(D=3584&v,D!==0?(vn=8,D):v&4096?(vn=7,4096):(D=4186112&v,D!==0?(vn=6,D):(D=62914560&v,D!==0?(vn=5,D):v&67108864?(vn=4,67108864):v&134217728?(vn=3,134217728):(D=805306368&v,D!==0?(vn=2,D):1073741824&v?(vn=1,1073741824):(vn=8,v))))))}function MA(v){switch(v){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}function UA(v){switch(v){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(c(358,v))}}function ha(v,D){var Q=v.pendingLanes;if(Q===0)return vn=0;var H=0,V=0,ne=v.expiredLanes,ve=v.suspendedLanes,_e=v.pingedLanes;if(ne!==0)H=ne,V=vn=15;else if(ne=Q&134217727,ne!==0){var ht=ne&~ve;ht!==0?(H=pa(ht),V=vn):(_e&=ne,_e!==0&&(H=pa(_e),V=vn))}else ne=Q&~ve,ne!==0?(H=pa(ne),V=vn):_e!==0&&(H=pa(_e),V=vn);if(H===0)return 0;if(H=31-is(H),H=Q&((0>H?0:1<Q;Q++)D.push(v);return D}function Ya(v,D,Q){v.pendingLanes|=D;var H=D-1;v.suspendedLanes&=H,v.pingedLanes&=H,v=v.eventTimes,D=31-is(D),v[D]=Q}var is=Math.clz32?Math.clz32:fc,uc=Math.log,fu=Math.LN2;function fc(v){return v===0?32:31-(uc(v)/fu|0)|0}var Ka=n.unstable_runWithPriority,Mi=n.unstable_scheduleCallback,Bs=n.unstable_cancelCallback,kl=n.unstable_shouldYield,mf=n.unstable_requestPaint,Ac=n.unstable_now,Bi=n.unstable_getCurrentPriorityLevel,Tn=n.unstable_ImmediatePriority,pc=n.unstable_UserBlockingPriority,Je=n.unstable_NormalPriority,ot=n.unstable_LowPriority,St=n.unstable_IdlePriority,lr={},ee=mf!==void 0?mf:function(){},ye=null,Oe=null,mt=!1,Et=Ac(),bt=1e4>Et?Ac:function(){return Ac()-Et};function tr(){switch(Bi()){case Tn:return 99;case pc:return 98;case Je:return 97;case ot:return 96;case St:return 95;default:throw Error(c(332))}}function pn(v){switch(v){case 99:return Tn;case 98:return pc;case 97:return Je;case 96:return ot;case 95:return St;default:throw Error(c(332))}}function ci(v,D){return v=pn(v),Ka(v,D)}function qi(v,D,Q){return v=pn(v),Mi(v,D,Q)}function Fn(){if(Oe!==null){var v=Oe;Oe=null,Bs(v)}Ja()}function Ja(){if(!mt&&ye!==null){mt=!0;var v=0;try{var D=ye;ci(99,function(){for(;vNn?(Hn=kr,kr=null):Hn=kr.sibling;var zr=Xt(rt,kr,dt[Nn],Zt);if(zr===null){kr===null&&(kr=Hn);break}v&&kr&&zr.alternate===null&&D(rt,kr),We=ne(zr,We,Nn),ti===null?Dr=zr:ti.sibling=zr,ti=zr,kr=Hn}if(Nn===dt.length)return Q(rt,kr),Dr;if(kr===null){for(;NnNn?(Hn=kr,kr=null):Hn=kr.sibling;var ui=Xt(rt,kr,zr.value,Zt);if(ui===null){kr===null&&(kr=Hn);break}v&&kr&&ui.alternate===null&&D(rt,kr),We=ne(ui,We,Nn),ti===null?Dr=ui:ti.sibling=ui,ti=ui,kr=Hn}if(zr.done)return Q(rt,kr),Dr;if(kr===null){for(;!zr.done;Nn++,zr=dt.next())zr=Lr(rt,zr.value,Zt),zr!==null&&(We=ne(zr,We,Nn),ti===null?Dr=zr:ti.sibling=zr,ti=zr);return Dr}for(kr=H(rt,kr);!zr.done;Nn++,zr=dt.next())zr=Xn(kr,rt,Nn,zr.value,Zt),zr!==null&&(v&&zr.alternate!==null&&kr.delete(zr.key===null?Nn:zr.key),We=ne(zr,We,Nn),ti===null?Dr=zr:ti.sibling=zr,ti=zr);return v&&kr.forEach(function(vu){return D(rt,vu)}),Dr}return function(rt,We,dt,Zt){var Dr=typeof dt=="object"&&dt!==null&&dt.type===E&&dt.key===null;Dr&&(dt=dt.props.children);var ti=typeof dt=="object"&&dt!==null;if(ti)switch(dt.$$typeof){case p:e:{for(ti=dt.key,Dr=We;Dr!==null;){if(Dr.key===ti){switch(Dr.tag){case 7:if(dt.type===E){Q(rt,Dr.sibling),We=V(Dr,dt.props.children),We.return=rt,rt=We;break e}break;default:if(Dr.elementType===dt.type){Q(rt,Dr.sibling),We=V(Dr,dt.props),We.ref=yt(rt,Dr,dt),We.return=rt,rt=We;break e}}Q(rt,Dr);break}else D(rt,Dr);Dr=Dr.sibling}dt.type===E?(We=Rf(dt.props.children,rt.mode,Zt,dt.key),We.return=rt,rt=We):(Zt=nd(dt.type,dt.key,dt.props,null,rt.mode,Zt),Zt.ref=yt(rt,We,dt),Zt.return=rt,rt=Zt)}return ve(rt);case h:e:{for(Dr=dt.key;We!==null;){if(We.key===Dr)if(We.tag===4&&We.stateNode.containerInfo===dt.containerInfo&&We.stateNode.implementation===dt.implementation){Q(rt,We.sibling),We=V(We,dt.children||[]),We.return=rt,rt=We;break e}else{Q(rt,We);break}else D(rt,We);We=We.sibling}We=Oo(dt,rt.mode,Zt),We.return=rt,rt=We}return ve(rt)}if(typeof dt=="string"||typeof dt=="number")return dt=""+dt,We!==null&&We.tag===6?(Q(rt,We.sibling),We=V(We,dt),We.return=rt,rt=We):(Q(rt,We),We=EB(dt,rt.mode,Zt),We.return=rt,rt=We),ve(rt);if(Ef(dt))return Ei(rt,We,dt,Zt);if(Ee(dt))return rl(rt,We,dt,Zt);if(ti&&pu(rt,dt),typeof dt>"u"&&!Dr)switch(rt.tag){case 1:case 22:case 0:case 11:case 15:throw Error(c(152,g(rt.type)||"Component"))}return Q(rt,We)}}var Og=Dy(!0),V1=Dy(!1),wh={},ur=co(wh),zi=co(wh),If=co(wh);function za(v){if(v===wh)throw Error(c(174));return v}function Lg(v,D){Qn(If,D),Qn(zi,v),Qn(ur,wh),v=it(D),Tt(ur),Qn(ur,v)}function hu(){Tt(ur),Tt(zi),Tt(If)}function Cf(v){var D=za(If.current),Q=za(ur.current);D=_(Q,v.type,D),Q!==D&&(Qn(zi,v),Qn(ur,D))}function wt(v){zi.current===v&&(Tt(ur),Tt(zi))}var mi=co(0);function qA(v){for(var D=v;D!==null;){if(D.tag===13){var Q=D.memoizedState;if(Q!==null&&(Q=Q.dehydrated,Q===null||gr(Q)||Po(Q)))return D}else if(D.tag===19&&D.memoizedProps.revealOrder!==void 0){if(D.flags&64)return D}else if(D.child!==null){D.child.return=D,D=D.child;continue}if(D===v)break;for(;D.sibling===null;){if(D.return===null||D.return===v)return null;D=D.return}D.sibling.return=D.return,D=D.sibling}return null}var Za=null,da=null,Xa=!1;function Mg(v,D){var Q=tl(5,null,null,0);Q.elementType="DELETED",Q.type="DELETED",Q.stateNode=D,Q.return=v,Q.flags=8,v.lastEffect!==null?(v.lastEffect.nextEffect=Q,v.lastEffect=Q):v.firstEffect=v.lastEffect=Q}function Bh(v,D){switch(v.tag){case 5:return D=fa(D,v.type,v.pendingProps),D!==null?(v.stateNode=D,!0):!1;case 6:return D=NA(D,v.pendingProps),D!==null?(v.stateNode=D,!0):!1;case 13:return!1;default:return!1}}function Ug(v){if(Xa){var D=da;if(D){var Q=D;if(!Bh(v,D)){if(D=Ue(Q),!D||!Bh(v,D)){v.flags=v.flags&-1025|2,Xa=!1,Za=v;return}Mg(Za,Q)}Za=v,da=au(D)}else v.flags=v.flags&-1025|2,Xa=!1,Za=v}}function by(v){for(v=v.return;v!==null&&v.tag!==5&&v.tag!==3&&v.tag!==13;)v=v.return;Za=v}function WA(v){if(!Z||v!==Za)return!1;if(!Xa)return by(v),Xa=!0,!1;var D=v.type;if(v.tag!==5||D!=="head"&&D!=="body"&&!ct(D,v.memoizedProps))for(D=da;D;)Mg(v,D),D=Ue(D);if(by(v),v.tag===13){if(!Z)throw Error(c(316));if(v=v.memoizedState,v=v!==null?v.dehydrated:null,!v)throw Error(c(317));da=OA(v)}else da=Za?Ue(v.stateNode):null;return!0}function _g(){Z&&(da=Za=null,Xa=!1)}var gu=[];function du(){for(var v=0;vne))throw Error(c(301));ne+=1,Pi=ss=null,D.updateQueue=null,wf.current=re,v=Q(H,V)}while(Bf)}if(wf.current=kt,D=ss!==null&&ss.next!==null,mu=0,Pi=ss=qn=null,VA=!1,D)throw Error(c(300));return v}function os(){var v={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return Pi===null?qn.memoizedState=Pi=v:Pi=Pi.next=v,Pi}function Fl(){if(ss===null){var v=qn.alternate;v=v!==null?v.memoizedState:null}else v=ss.next;var D=Pi===null?qn.memoizedState:Pi.next;if(D!==null)Pi=D,ss=v;else{if(v===null)throw Error(c(310));ss=v,v={memoizedState:ss.memoizedState,baseState:ss.baseState,baseQueue:ss.baseQueue,queue:ss.queue,next:null},Pi===null?qn.memoizedState=Pi=v:Pi=Pi.next=v}return Pi}function To(v,D){return typeof D=="function"?D(v):D}function vf(v){var D=Fl(),Q=D.queue;if(Q===null)throw Error(c(311));Q.lastRenderedReducer=v;var H=ss,V=H.baseQueue,ne=Q.pending;if(ne!==null){if(V!==null){var ve=V.next;V.next=ne.next,ne.next=ve}H.baseQueue=V=ne,Q.pending=null}if(V!==null){V=V.next,H=H.baseState;var _e=ve=ne=null,ht=V;do{var Wt=ht.lane;if((mu&Wt)===Wt)_e!==null&&(_e=_e.next={lane:0,action:ht.action,eagerReducer:ht.eagerReducer,eagerState:ht.eagerState,next:null}),H=ht.eagerReducer===v?ht.eagerState:v(H,ht.action);else{var Sr={lane:Wt,action:ht.action,eagerReducer:ht.eagerReducer,eagerState:ht.eagerState,next:null};_e===null?(ve=_e=Sr,ne=H):_e=_e.next=Sr,qn.lanes|=Wt,zg|=Wt}ht=ht.next}while(ht!==null&&ht!==V);_e===null?ne=H:_e.next=ve,xo(H,D.memoizedState)||(Ke=!0),D.memoizedState=H,D.baseState=ne,D.baseQueue=_e,Q.lastRenderedState=H}return[D.memoizedState,Q.dispatch]}function Sf(v){var D=Fl(),Q=D.queue;if(Q===null)throw Error(c(311));Q.lastRenderedReducer=v;var H=Q.dispatch,V=Q.pending,ne=D.memoizedState;if(V!==null){Q.pending=null;var ve=V=V.next;do ne=v(ne,ve.action),ve=ve.next;while(ve!==V);xo(ne,D.memoizedState)||(Ke=!0),D.memoizedState=ne,D.baseQueue===null&&(D.baseState=ne),Q.lastRenderedState=ne}return[ne,H]}function Nl(v,D,Q){var H=D._getVersion;H=H(D._source);var V=y?D._workInProgressVersionPrimary:D._workInProgressVersionSecondary;if(V!==null?v=V===H:(v=v.mutableReadLanes,(v=(mu&v)===v)&&(y?D._workInProgressVersionPrimary=H:D._workInProgressVersionSecondary=H,gu.push(D))),v)return Q(D._source);throw gu.push(D),Error(c(350))}function En(v,D,Q,H){var V=fo;if(V===null)throw Error(c(349));var ne=D._getVersion,ve=ne(D._source),_e=wf.current,ht=_e.useState(function(){return Nl(V,D,Q)}),Wt=ht[1],Sr=ht[0];ht=Pi;var Lr=v.memoizedState,Xt=Lr.refs,Xn=Xt.getSnapshot,Ei=Lr.source;Lr=Lr.subscribe;var rl=qn;return v.memoizedState={refs:Xt,source:D,subscribe:H},_e.useEffect(function(){Xt.getSnapshot=Q,Xt.setSnapshot=Wt;var rt=ne(D._source);if(!xo(ve,rt)){rt=Q(D._source),xo(Sr,rt)||(Wt(rt),rt=Ds(rl),V.mutableReadLanes|=rt&V.pendingLanes),rt=V.mutableReadLanes,V.entangledLanes|=rt;for(var We=V.entanglements,dt=rt;0Q?98:Q,function(){v(!0)}),ci(97cB&&(D.flags|=64,V=!0,XA(H,!1),D.lanes=33554432)}else{if(!V)if(v=qA(ne),v!==null){if(D.flags|=64,V=!0,v=v.updateQueue,v!==null&&(D.updateQueue=v,D.flags|=4),XA(H,!0),H.tail===null&&H.tailMode==="hidden"&&!ne.alternate&&!Xa)return D=D.lastEffect=H.lastEffect,D!==null&&(D.nextEffect=null),null}else 2*bt()-H.renderingStartTime>cB&&Q!==1073741824&&(D.flags|=64,V=!0,XA(H,!1),D.lanes=33554432);H.isBackwards?(ne.sibling=D.child,D.child=ne):(v=H.last,v!==null?v.sibling=ne:D.child=ne,H.last=ne)}return H.tail!==null?(v=H.tail,H.rendering=v,H.tail=v.sibling,H.lastEffect=D.lastEffect,H.renderingStartTime=bt(),v.sibling=null,D=mi.current,Qn(mi,V?D&1|2:D&1),v):null;case 23:case 24:return gB(),v!==null&&v.memoizedState!==null!=(D.memoizedState!==null)&&H.mode!=="unstable-defer-without-hiding"&&(D.flags|=4),null}throw Error(c(156,D.tag))}function bL(v){switch(v.tag){case 1:Zn(v.type)&&uu();var D=v.flags;return D&4096?(v.flags=D&-4097|64,v):null;case 3:if(hu(),Tt(Li),Tt(Gi),du(),D=v.flags,D&64)throw Error(c(285));return v.flags=D&-4097|64,v;case 5:return wt(v),null;case 13:return Tt(mi),D=v.flags,D&4096?(v.flags=D&-4097|64,v):null;case 19:return Tt(mi),null;case 4:return hu(),null;case 10:return Fg(v),null;case 23:case 24:return gB(),null;default:return null}}function qg(v,D){try{var Q="",H=D;do Q+=W1(H),H=H.return;while(H);var V=Q}catch(ne){V=` -Error generating stack: `+ne.message+` -`+ne.stack}return{value:v,source:D,stack:V}}function Wg(v,D){try{console.error(D.value)}catch(Q){setTimeout(function(){throw Q})}}var PL=typeof WeakMap=="function"?WeakMap:Map;function z1(v,D,Q){Q=Rl(-1,Q),Q.tag=3,Q.payload={element:null};var H=D.value;return Q.callback=function(){Gy||(Gy=!0,uB=H),Wg(v,D)},Q}function Vg(v,D,Q){Q=Rl(-1,Q),Q.tag=3;var H=v.type.getDerivedStateFromError;if(typeof H=="function"){var V=D.value;Q.payload=function(){return Wg(v,D),H(V)}}var ne=v.stateNode;return ne!==null&&typeof ne.componentDidCatch=="function"&&(Q.callback=function(){typeof H!="function"&&(gc===null?gc=new Set([this]):gc.add(this),Wg(v,D));var ve=D.stack;this.componentDidCatch(D.value,{componentStack:ve!==null?ve:""})}),Q}var xL=typeof WeakSet=="function"?WeakSet:Set;function Z1(v){var D=v.ref;if(D!==null)if(typeof D=="function")try{D(null)}catch(Q){Qf(v,Q)}else D.current=null}function Ry(v,D){switch(D.tag){case 0:case 11:case 15:case 22:return;case 1:if(D.flags&256&&v!==null){var Q=v.memoizedProps,H=v.memoizedState;v=D.stateNode,D=v.getSnapshotBeforeUpdate(D.elementType===D.type?Q:ko(D.type,Q),H),v.__reactInternalSnapshotBeforeUpdate=D}return;case 3:F&&D.flags&256&&Ns(D.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(c(163))}function kh(v,D){if(D=D.updateQueue,D=D!==null?D.lastEffect:null,D!==null){var Q=D=D.next;do{if((Q.tag&v)===v){var H=Q.destroy;Q.destroy=void 0,H!==void 0&&H()}Q=Q.next}while(Q!==D)}}function uP(v,D,Q){switch(Q.tag){case 0:case 11:case 15:case 22:if(D=Q.updateQueue,D=D!==null?D.lastEffect:null,D!==null){v=D=D.next;do{if((v.tag&3)===3){var H=v.create;v.destroy=H()}v=v.next}while(v!==D)}if(D=Q.updateQueue,D=D!==null?D.lastEffect:null,D!==null){v=D=D.next;do{var V=v;H=V.next,V=V.tag,V&4&&V&1&&(vP(Q,v),ML(Q,v)),v=H}while(v!==D)}return;case 1:v=Q.stateNode,Q.flags&4&&(D===null?v.componentDidMount():(H=Q.elementType===Q.type?D.memoizedProps:ko(Q.type,D.memoizedProps),v.componentDidUpdate(H,D.memoizedState,v.__reactInternalSnapshotBeforeUpdate))),D=Q.updateQueue,D!==null&&vy(Q,D,v);return;case 3:if(D=Q.updateQueue,D!==null){if(v=null,Q.child!==null)switch(Q.child.tag){case 5:v=Qe(Q.child.stateNode);break;case 1:v=Q.child.stateNode}vy(Q,D,v)}return;case 5:v=Q.stateNode,D===null&&Q.flags&4&&so(v,Q.type,Q.memoizedProps,Q);return;case 6:return;case 4:return;case 12:return;case 13:Z&&Q.memoizedState===null&&(Q=Q.alternate,Q!==null&&(Q=Q.memoizedState,Q!==null&&(Q=Q.dehydrated,Q!==null&&lu(Q))));return;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(c(163))}function fP(v,D){if(F)for(var Q=v;;){if(Q.tag===5){var H=Q.stateNode;D?hh(H):ao(Q.stateNode,Q.memoizedProps)}else if(Q.tag===6)H=Q.stateNode,D?gh(H):Gn(H,Q.memoizedProps);else if((Q.tag!==23&&Q.tag!==24||Q.memoizedState===null||Q===v)&&Q.child!==null){Q.child.return=Q,Q=Q.child;continue}if(Q===v)break;for(;Q.sibling===null;){if(Q.return===null||Q.return===v)return;Q=Q.return}Q.sibling.return=Q.return,Q=Q.sibling}}function Ty(v,D){if(Va&&typeof Va.onCommitFiberUnmount=="function")try{Va.onCommitFiberUnmount($e,D)}catch{}switch(D.tag){case 0:case 11:case 14:case 15:case 22:if(v=D.updateQueue,v!==null&&(v=v.lastEffect,v!==null)){var Q=v=v.next;do{var H=Q,V=H.destroy;if(H=H.tag,V!==void 0)if(H&4)vP(D,Q);else{H=D;try{V()}catch(ne){Qf(H,ne)}}Q=Q.next}while(Q!==v)}break;case 1:if(Z1(D),v=D.stateNode,typeof v.componentWillUnmount=="function")try{v.props=D.memoizedProps,v.state=D.memoizedState,v.componentWillUnmount()}catch(ne){Qf(D,ne)}break;case 5:Z1(D);break;case 4:F?gP(v,D):z&&z&&(D=D.stateNode.containerInfo,v=iu(D),TA(D,v))}}function AP(v,D){for(var Q=D;;)if(Ty(v,Q),Q.child===null||F&&Q.tag===4){if(Q===D)break;for(;Q.sibling===null;){if(Q.return===null||Q.return===D)return;Q=Q.return}Q.sibling.return=Q.return,Q=Q.sibling}else Q.child.return=Q,Q=Q.child}function Fy(v){v.alternate=null,v.child=null,v.dependencies=null,v.firstEffect=null,v.lastEffect=null,v.memoizedProps=null,v.memoizedState=null,v.pendingProps=null,v.return=null,v.updateQueue=null}function pP(v){return v.tag===5||v.tag===3||v.tag===4}function hP(v){if(F){e:{for(var D=v.return;D!==null;){if(pP(D))break e;D=D.return}throw Error(c(160))}var Q=D;switch(D=Q.stateNode,Q.tag){case 5:var H=!1;break;case 3:D=D.containerInfo,H=!0;break;case 4:D=D.containerInfo,H=!0;break;default:throw Error(c(161))}Q.flags&16&&(hf(D),Q.flags&=-17);e:t:for(Q=v;;){for(;Q.sibling===null;){if(Q.return===null||pP(Q.return)){Q=null;break e}Q=Q.return}for(Q.sibling.return=Q.return,Q=Q.sibling;Q.tag!==5&&Q.tag!==6&&Q.tag!==18;){if(Q.flags&2||Q.child===null||Q.tag===4)continue t;Q.child.return=Q,Q=Q.child}if(!(Q.flags&2)){Q=Q.stateNode;break e}}H?X1(v,Q,D):$1(v,Q,D)}}function X1(v,D,Q){var H=v.tag,V=H===5||H===6;if(V)v=V?v.stateNode:v.stateNode.instance,D?oo(Q,v,D):So(Q,v);else if(H!==4&&(v=v.child,v!==null))for(X1(v,D,Q),v=v.sibling;v!==null;)X1(v,D,Q),v=v.sibling}function $1(v,D,Q){var H=v.tag,V=H===5||H===6;if(V)v=V?v.stateNode:v.stateNode.instance,D?ji(Q,v,D):li(Q,v);else if(H!==4&&(v=v.child,v!==null))for($1(v,D,Q),v=v.sibling;v!==null;)$1(v,D,Q),v=v.sibling}function gP(v,D){for(var Q=D,H=!1,V,ne;;){if(!H){H=Q.return;e:for(;;){if(H===null)throw Error(c(160));switch(V=H.stateNode,H.tag){case 5:ne=!1;break e;case 3:V=V.containerInfo,ne=!0;break e;case 4:V=V.containerInfo,ne=!0;break e}H=H.return}H=!0}if(Q.tag===5||Q.tag===6)AP(v,Q),ne?RA(V,Q.stateNode):bo(V,Q.stateNode);else if(Q.tag===4){if(Q.child!==null){V=Q.stateNode.containerInfo,ne=!0,Q.child.return=Q,Q=Q.child;continue}}else if(Ty(v,Q),Q.child!==null){Q.child.return=Q,Q=Q.child;continue}if(Q===D)break;for(;Q.sibling===null;){if(Q.return===null||Q.return===D)return;Q=Q.return,Q.tag===4&&(H=!1)}Q.sibling.return=Q.return,Q=Q.sibling}}function eB(v,D){if(F){switch(D.tag){case 0:case 11:case 14:case 15:case 22:kh(3,D);return;case 1:return;case 5:var Q=D.stateNode;if(Q!=null){var H=D.memoizedProps;v=v!==null?v.memoizedProps:H;var V=D.type,ne=D.updateQueue;D.updateQueue=null,ne!==null&&Do(Q,ne,V,v,H,D)}return;case 6:if(D.stateNode===null)throw Error(c(162));Q=D.memoizedProps,ns(D.stateNode,v!==null?v.memoizedProps:Q,Q);return;case 3:Z&&(D=D.stateNode,D.hydrate&&(D.hydrate=!1,LA(D.containerInfo)));return;case 12:return;case 13:dP(D),Yg(D);return;case 19:Yg(D);return;case 17:return;case 23:case 24:fP(D,D.memoizedState!==null);return}throw Error(c(163))}switch(D.tag){case 0:case 11:case 14:case 15:case 22:kh(3,D);return;case 12:return;case 13:dP(D),Yg(D);return;case 19:Yg(D);return;case 3:Z&&(Q=D.stateNode,Q.hydrate&&(Q.hydrate=!1,LA(Q.containerInfo)));break;case 23:case 24:return}e:if(z){switch(D.tag){case 1:case 5:case 6:case 20:break e;case 3:case 4:D=D.stateNode,TA(D.containerInfo,D.pendingChildren);break e}throw Error(c(163))}}function dP(v){v.memoizedState!==null&&(lB=bt(),F&&fP(v.child,!0))}function Yg(v){var D=v.updateQueue;if(D!==null){v.updateQueue=null;var Q=v.stateNode;Q===null&&(Q=v.stateNode=new xL),D.forEach(function(H){var V=_L.bind(null,v,H);Q.has(H)||(Q.add(H),H.then(V,V))})}}function kL(v,D){return v!==null&&(v=v.memoizedState,v===null||v.dehydrated!==null)?(D=D.memoizedState,D!==null&&D.dehydrated===null):!1}var Ny=0,Oy=1,Ly=2,Kg=3,My=4;if(typeof Symbol=="function"&&Symbol.for){var Jg=Symbol.for;Ny=Jg("selector.component"),Oy=Jg("selector.has_pseudo_class"),Ly=Jg("selector.role"),Kg=Jg("selector.test_id"),My=Jg("selector.text")}function Uy(v){var D=$(v);if(D!=null){if(typeof D.memoizedProps["data-testname"]!="string")throw Error(c(364));return D}if(v=ir(v),v===null)throw Error(c(362));return v.stateNode.current}function bf(v,D){switch(D.$$typeof){case Ny:if(v.type===D.value)return!0;break;case Oy:e:{D=D.value,v=[v,0];for(var Q=0;Q";case Oy:return":has("+(Pf(v)||"")+")";case Ly:return'[role="'+v.value+'"]';case My:return'"'+v.value+'"';case Kg:return'[data-testname="'+v.value+'"]';default:throw Error(c(365,v))}}function tB(v,D){var Q=[];v=[v,0];for(var H=0;HV&&(V=ve),Q&=~ne}if(Q=V,Q=bt()-Q,Q=(120>Q?120:480>Q?480:1080>Q?1080:1920>Q?1920:3e3>Q?3e3:4320>Q?4320:1960*RL(Q/1960))-Q,10 component higher in the tree to provide a loading indicator or placeholder to display.`)}Ss!==5&&(Ss=2),ht=qg(ht,_e),Xt=ve;do{switch(Xt.tag){case 3:ne=ht,Xt.flags|=4096,D&=-D,Xt.lanes|=D;var ti=z1(Xt,ne,D);By(Xt,ti);break e;case 1:ne=ht;var kr=Xt.type,Nn=Xt.stateNode;if(!(Xt.flags&64)&&(typeof kr.getDerivedStateFromError=="function"||Nn!==null&&typeof Nn.componentDidCatch=="function"&&(gc===null||!gc.has(Nn)))){Xt.flags|=4096,D&=-D,Xt.lanes|=D;var Hn=Vg(Xt,ne,D);By(Xt,Hn);break e}}Xt=Xt.return}while(Xt!==null)}BP(Q)}catch(zr){D=zr,Zi===Q&&Q!==null&&(Zi=Q=Q.return);continue}break}while(!0)}function CP(){var v=Hy.current;return Hy.current=kt,v===null?kt:v}function rd(v,D){var Q=xr;xr|=16;var H=CP();fo===v&&Ms===D||Fh(v,D);do try{FL();break}catch(V){IP(v,V)}while(!0);if(Rg(),xr=Q,Hy.current=H,Zi!==null)throw Error(c(261));return fo=null,Ms=0,Ss}function FL(){for(;Zi!==null;)wP(Zi)}function NL(){for(;Zi!==null&&!kl();)wP(Zi)}function wP(v){var D=bP(v.alternate,v,$A);v.memoizedProps=v.pendingProps,D===null?BP(v):Zi=D,nB.current=null}function BP(v){var D=v;do{var Q=D.alternate;if(v=D.return,D.flags&2048){if(Q=bL(D),Q!==null){Q.flags&=2047,Zi=Q;return}v!==null&&(v.firstEffect=v.lastEffect=null,v.flags|=2048)}else{if(Q=DL(Q,D,$A),Q!==null){Zi=Q;return}if(Q=D,Q.tag!==24&&Q.tag!==23||Q.memoizedState===null||$A&1073741824||!(Q.mode&4)){for(var H=0,V=Q.child;V!==null;)H|=V.lanes|V.childLanes,V=V.sibling;Q.childLanes=H}v!==null&&!(v.flags&2048)&&(v.firstEffect===null&&(v.firstEffect=D.firstEffect),D.lastEffect!==null&&(v.lastEffect!==null&&(v.lastEffect.nextEffect=D.firstEffect),v.lastEffect=D.lastEffect),1bt()-lB?Fh(v,0):oB|=Q),Ea(v,D)}function _L(v,D){var Q=v.stateNode;Q!==null&&Q.delete(D),D=0,D===0&&(D=v.mode,D&2?D&4?(Cu===0&&(Cu=Qh),D=Rn(62914560&~Cu),D===0&&(D=4194304)):D=tr()===99?1:2:D=1),Q=No(),v=Vy(v,D),v!==null&&(Ya(v,D,Q),Ea(v,Q))}var bP;bP=function(v,D,Q){var H=D.lanes;if(v!==null)if(v.memoizedProps!==D.pendingProps||Li.current)Ke=!0;else if(Q&H)Ke=!!(v.flags&16384);else{switch(Ke=!1,D.tag){case 3:ky(D),_g();break;case 5:Cf(D);break;case 1:Zn(D.type)&&qa(D);break;case 4:Lg(D,D.stateNode.containerInfo);break;case 10:Tg(D,D.memoizedProps.value);break;case 13:if(D.memoizedState!==null)return Q&D.child.childLanes?K1(v,D,Q):(Qn(mi,mi.current&1),D=Wn(v,D,Q),D!==null?D.sibling:null);Qn(mi,mi.current&1);break;case 19:if(H=(Q&D.childLanes)!==0,v.flags&64){if(H)return cP(v,D,Q);D.flags|=64}var V=D.memoizedState;if(V!==null&&(V.rendering=null,V.tail=null,V.lastEffect=null),Qn(mi,mi.current),H)break;return null;case 23:case 24:return D.lanes=0,yi(v,D,Q)}return Wn(v,D,Q)}else Ke=!1;switch(D.lanes=0,D.tag){case 2:if(H=D.type,v!==null&&(v.alternate=null,D.alternate=null,D.flags|=2),v=D.pendingProps,V=mn(D,Gi.current),yf(D,Q),V=jg(null,D,H,v,V,Q),D.flags|=1,typeof V=="object"&&V!==null&&typeof V.render=="function"&&V.$$typeof===void 0){if(D.tag=1,D.memoizedState=null,D.updateQueue=null,Zn(H)){var ne=!0;qa(D)}else ne=!1;D.memoizedState=V.state!==null&&V.state!==void 0?V.state:null,Ch(D);var ve=H.getDerivedStateFromProps;typeof ve=="function"&&HA(D,H,ve,v),V.updater=jA,D.stateNode=V,V._reactInternals=D,Ro(D,H,v,Q),D=Y1(null,D,H,!0,ne,Q)}else D.tag=0,pt(null,D,V,Q),D=D.child;return D;case 16:V=D.elementType;e:{switch(v!==null&&(v.alternate=null,D.alternate=null,D.flags|=2),v=D.pendingProps,ne=V._init,V=ne(V._payload),D.type=V,ne=D.tag=jL(V),v=ko(V,v),ne){case 0:D=JA(null,D,V,v,Q);break e;case 1:D=lP(null,D,V,v,Q);break e;case 11:D=dr(null,D,V,v,Q);break e;case 14:D=vr(null,D,V,ko(V.type,v),H,Q);break e}throw Error(c(306,V,""))}return D;case 0:return H=D.type,V=D.pendingProps,V=D.elementType===H?V:ko(H,V),JA(v,D,H,V,Q);case 1:return H=D.type,V=D.pendingProps,V=D.elementType===H?V:ko(H,V),lP(v,D,H,V,Q);case 3:if(ky(D),H=D.updateQueue,v===null||H===null)throw Error(c(282));if(H=D.pendingProps,V=D.memoizedState,V=V!==null?V.element:null,Ng(v,D),_A(D,H,null,Q),H=D.memoizedState.element,H===V)_g(),D=Wn(v,D,Q);else{if(V=D.stateNode,(ne=V.hydrate)&&(Z?(da=au(D.stateNode.containerInfo),Za=D,ne=Xa=!0):ne=!1),ne){if(Z&&(v=V.mutableSourceEagerHydrationData,v!=null))for(V=0;V=Wt&&ne>=Lr&&V<=Sr&&ve<=Xt){v.splice(D,1);break}else if(H!==Wt||Q.width!==ht.width||Xtve){if(!(ne!==Lr||Q.height!==ht.height||SrV)){Wt>H&&(ht.width+=Wt-H,ht.x=H),Srne&&(ht.height+=Lr-ne,ht.y=ne),XtQ&&(Q=ve)),ve ")+` - -No matching component was found for: - `)+v.join(" > ")}return null},r.getPublicRootInstance=function(v){if(v=v.current,!v.child)return null;switch(v.child.tag){case 5:return Qe(v.child.stateNode);default:return v.child.stateNode}},r.injectIntoDevTools=function(v){if(v={bundleType:v.bundleType,version:v.version,rendererPackageName:v.rendererPackageName,rendererConfig:v.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:f.ReactCurrentDispatcher,findHostInstanceByFiber:WL,findFiberByHostInstance:v.findFiberByHostInstance||VL,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null},typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u")v=!1;else{var D=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!D.isDisabled&&D.supportsFiber)try{$e=D.inject(v),Va=D}catch{}v=!0}return v},r.observeVisibleRects=function(v,D,Q,H){if(!qt)throw Error(c(363));v=rB(v,D);var V=on(v,Q,H).disconnect;return{disconnect:function(){V()}}},r.registerMutableSourceForHydration=function(v,D){var Q=D._getVersion;Q=Q(D._source),v.mutableSourceEagerHydrationData==null?v.mutableSourceEagerHydrationData=[D,Q]:v.mutableSourceEagerHydrationData.push(D,Q)},r.runWithPriority=function(v,D){var Q=cc;try{return cc=v,D()}finally{cc=Q}},r.shouldSuspend=function(){return!1},r.unbatchedUpdates=function(v,D){var Q=xr;xr&=-2,xr|=8;try{return v(D)}finally{xr=Q,xr===0&&(xf(),Fn())}},r.updateContainer=function(v,D,Q,H){var V=D.current,ne=No(),ve=Ds(V);e:if(Q){Q=Q._reactInternals;t:{if(Se(Q)!==Q||Q.tag!==1)throw Error(c(170));var _e=Q;do{switch(_e.tag){case 3:_e=_e.stateNode.context;break t;case 1:if(Zn(_e.type)){_e=_e.stateNode.__reactInternalMemoizedMergedChildContext;break t}}_e=_e.return}while(_e!==null);throw Error(c(171))}if(Q.tag===1){var ht=Q.type;if(Zn(ht)){Q=Ga(Q,ht,_e);break e}}Q=_e}else Q=Aa;return D.context===null?D.context=Q:D.pendingContext=Q,D=Rl(ne,ve),D.payload={element:v},H=H===void 0?null:H,H!==null&&(D.callback=H),Tl(V,D),Ml(V,ve,ne),ve},r}});var AIe=G((PYt,fIe)=>{"use strict";fIe.exports=uIe()});var hIe=G((xYt,pIe)=>{"use strict";var Mut={ALIGN_COUNT:8,ALIGN_AUTO:0,ALIGN_FLEX_START:1,ALIGN_CENTER:2,ALIGN_FLEX_END:3,ALIGN_STRETCH:4,ALIGN_BASELINE:5,ALIGN_SPACE_BETWEEN:6,ALIGN_SPACE_AROUND:7,DIMENSION_COUNT:2,DIMENSION_WIDTH:0,DIMENSION_HEIGHT:1,DIRECTION_COUNT:3,DIRECTION_INHERIT:0,DIRECTION_LTR:1,DIRECTION_RTL:2,DISPLAY_COUNT:2,DISPLAY_FLEX:0,DISPLAY_NONE:1,EDGE_COUNT:9,EDGE_LEFT:0,EDGE_TOP:1,EDGE_RIGHT:2,EDGE_BOTTOM:3,EDGE_START:4,EDGE_END:5,EDGE_HORIZONTAL:6,EDGE_VERTICAL:7,EDGE_ALL:8,EXPERIMENTAL_FEATURE_COUNT:1,EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS:0,FLEX_DIRECTION_COUNT:4,FLEX_DIRECTION_COLUMN:0,FLEX_DIRECTION_COLUMN_REVERSE:1,FLEX_DIRECTION_ROW:2,FLEX_DIRECTION_ROW_REVERSE:3,JUSTIFY_COUNT:6,JUSTIFY_FLEX_START:0,JUSTIFY_CENTER:1,JUSTIFY_FLEX_END:2,JUSTIFY_SPACE_BETWEEN:3,JUSTIFY_SPACE_AROUND:4,JUSTIFY_SPACE_EVENLY:5,LOG_LEVEL_COUNT:6,LOG_LEVEL_ERROR:0,LOG_LEVEL_WARN:1,LOG_LEVEL_INFO:2,LOG_LEVEL_DEBUG:3,LOG_LEVEL_VERBOSE:4,LOG_LEVEL_FATAL:5,MEASURE_MODE_COUNT:3,MEASURE_MODE_UNDEFINED:0,MEASURE_MODE_EXACTLY:1,MEASURE_MODE_AT_MOST:2,NODE_TYPE_COUNT:2,NODE_TYPE_DEFAULT:0,NODE_TYPE_TEXT:1,OVERFLOW_COUNT:3,OVERFLOW_VISIBLE:0,OVERFLOW_HIDDEN:1,OVERFLOW_SCROLL:2,POSITION_TYPE_COUNT:2,POSITION_TYPE_RELATIVE:0,POSITION_TYPE_ABSOLUTE:1,PRINT_OPTIONS_COUNT:3,PRINT_OPTIONS_LAYOUT:1,PRINT_OPTIONS_STYLE:2,PRINT_OPTIONS_CHILDREN:4,UNIT_COUNT:4,UNIT_UNDEFINED:0,UNIT_POINT:1,UNIT_PERCENT:2,UNIT_AUTO:3,WRAP_COUNT:3,WRAP_NO_WRAP:0,WRAP_WRAP:1,WRAP_WRAP_REVERSE:2};pIe.exports=Mut});var yIe=G((kYt,mIe)=>{"use strict";var Uut=Object.assign||function(e){for(var t=1;t"}}]),e}(),gIe=function(){yF(e,null,[{key:"fromJS",value:function(r){var s=r.width,a=r.height;return new e(s,a)}}]);function e(t,r){f9(this,e),this.width=t,this.height=r}return yF(e,[{key:"fromJS",value:function(r){r(this.width,this.height)}},{key:"toString",value:function(){return""}}]),e}(),dIe=function(){function e(t,r){f9(this,e),this.unit=t,this.value=r}return yF(e,[{key:"fromJS",value:function(r){r(this.unit,this.value)}},{key:"toString",value:function(){switch(this.unit){case nf.UNIT_POINT:return String(this.value);case nf.UNIT_PERCENT:return this.value+"%";case nf.UNIT_AUTO:return"auto";default:return this.value+"?"}}},{key:"valueOf",value:function(){return this.value}}]),e}();mIe.exports=function(e,t){function r(c,f,p){var h=c[f];c[f]=function(){for(var E=arguments.length,C=Array(E),S=0;S1?C-1:0),x=1;x1&&arguments[1]!==void 0?arguments[1]:NaN,p=arguments.length>2&&arguments[2]!==void 0?arguments[2]:NaN,h=arguments.length>3&&arguments[3]!==void 0?arguments[3]:nf.DIRECTION_LTR;return c.call(this,f,p,h)}),Uut({Config:t.Config,Node:t.Node,Layout:e("Layout",_ut),Size:e("Size",gIe),Value:e("Value",dIe),getInstanceCount:function(){return t.getInstanceCount.apply(t,arguments)}},nf)}});var EIe=G((exports,module)=>{(function(e,t){typeof define=="function"&&define.amd?define([],function(){return t}):typeof module=="object"&&module.exports?module.exports=t:(e.nbind=e.nbind||{}).init=t})(exports,function(Module,cb){typeof Module=="function"&&(cb=Module,Module={}),Module.onRuntimeInitialized=function(e,t){return function(){e&&e.apply(this,arguments);try{Module.ccall("nbind_init")}catch(r){t(r);return}t(null,{bind:Module._nbind_value,reflect:Module.NBind.reflect,queryType:Module.NBind.queryType,toggleLightGC:Module.toggleLightGC,lib:Module})}}(Module.onRuntimeInitialized,cb);var Module;Module||(Module=(typeof Module<"u"?Module:null)||{});var moduleOverrides={};for(var key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1;if(Module.ENVIRONMENT)if(Module.ENVIRONMENT==="WEB")ENVIRONMENT_IS_WEB=!0;else if(Module.ENVIRONMENT==="WORKER")ENVIRONMENT_IS_WORKER=!0;else if(Module.ENVIRONMENT==="NODE")ENVIRONMENT_IS_NODE=!0;else if(Module.ENVIRONMENT==="SHELL")ENVIRONMENT_IS_SHELL=!0;else throw new Error("The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.");else ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof importScripts=="function",ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof Ie=="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER,ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(ENVIRONMENT_IS_NODE){Module.print||(Module.print=console.log),Module.printErr||(Module.printErr=console.warn);var nodeFS,nodePath;Module.read=function(t,r){nodeFS||(nodeFS={}("")),nodePath||(nodePath={}("")),t=nodePath.normalize(t);var s=nodeFS.readFileSync(t);return r?s:s.toString()},Module.readBinary=function(t){var r=Module.read(t,!0);return r.buffer||(r=new Uint8Array(r)),assert(r.buffer),r},Module.load=function(t){globalEval(read(t))},Module.thisProgram||(process.argv.length>1?Module.thisProgram=process.argv[1].replace(/\\/g,"/"):Module.thisProgram="unknown-program"),Module.arguments=process.argv.slice(2),typeof module<"u"&&(module.exports=Module),Module.inspect=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL)Module.print||(Module.print=print),typeof printErr<"u"&&(Module.printErr=printErr),typeof read<"u"?Module.read=read:Module.read=function(){throw"no read() available"},Module.readBinary=function(t){if(typeof readbuffer=="function")return new Uint8Array(readbuffer(t));var r=read(t,"binary");return assert(typeof r=="object"),r},typeof scriptArgs<"u"?Module.arguments=scriptArgs:typeof arguments<"u"&&(Module.arguments=arguments),typeof quit=="function"&&(Module.quit=function(e,t){quit(e)});else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(Module.read=function(t){var r=new XMLHttpRequest;return r.open("GET",t,!1),r.send(null),r.responseText},ENVIRONMENT_IS_WORKER&&(Module.readBinary=function(t){var r=new XMLHttpRequest;return r.open("GET",t,!1),r.responseType="arraybuffer",r.send(null),new Uint8Array(r.response)}),Module.readAsync=function(t,r,s){var a=new XMLHttpRequest;a.open("GET",t,!0),a.responseType="arraybuffer",a.onload=function(){a.status==200||a.status==0&&a.response?r(a.response):s()},a.onerror=s,a.send(null)},typeof arguments<"u"&&(Module.arguments=arguments),typeof console<"u")Module.print||(Module.print=function(t){console.log(t)}),Module.printErr||(Module.printErr=function(t){console.warn(t)});else{var TRY_USE_DUMP=!1;Module.print||(Module.print=TRY_USE_DUMP&&typeof dump<"u"?function(e){dump(e)}:function(e){})}ENVIRONMENT_IS_WORKER&&(Module.load=importScripts),typeof Module.setWindowTitle>"u"&&(Module.setWindowTitle=function(e){document.title=e})}else throw"Unknown runtime environment. Where are we?";function globalEval(e){eval.call(null,e)}!Module.load&&Module.read&&(Module.load=function(t){globalEval(Module.read(t))}),Module.print||(Module.print=function(){}),Module.printErr||(Module.printErr=Module.print),Module.arguments||(Module.arguments=[]),Module.thisProgram||(Module.thisProgram="./this.program"),Module.quit||(Module.quit=function(e,t){throw t}),Module.print=Module.print,Module.printErr=Module.printErr,Module.preRun=[],Module.postRun=[];for(var key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=void 0;var Runtime={setTempRet0:function(e){return tempRet0=e,e},getTempRet0:function(){return tempRet0},stackSave:function(){return STACKTOP},stackRestore:function(e){STACKTOP=e},getNativeTypeSize:function(e){switch(e){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(e[e.length-1]==="*")return Runtime.QUANTUM_SIZE;if(e[0]==="i"){var t=parseInt(e.substr(1));return assert(t%8===0),t/8}else return 0}}},getNativeFieldSize:function(e){return Math.max(Runtime.getNativeTypeSize(e),Runtime.QUANTUM_SIZE)},STACK_ALIGN:16,prepVararg:function(e,t){return t==="double"||t==="i64"?e&7&&(assert((e&7)===4),e+=4):assert((e&3)===0),e},getAlignSize:function(e,t,r){return!r&&(e=="i64"||e=="double")?8:e?Math.min(t||(e?Runtime.getNativeFieldSize(e):0),Runtime.QUANTUM_SIZE):Math.min(t,8)},dynCall:function(e,t,r){return r&&r.length?Module["dynCall_"+e].apply(null,[t].concat(r)):Module["dynCall_"+e].call(null,t)},functionPointers:[],addFunction:function(e){for(var t=0;t>2],r=(t+e+15|0)&-16;if(HEAP32[DYNAMICTOP_PTR>>2]=r,r>=TOTAL_MEMORY){var s=enlargeMemory();if(!s)return HEAP32[DYNAMICTOP_PTR>>2]=t,0}return t},alignMemory:function(e,t){var r=e=Math.ceil(e/(t||16))*(t||16);return r},makeBigInt:function(e,t,r){var s=r?+(e>>>0)+ +(t>>>0)*4294967296:+(e>>>0)+ +(t|0)*4294967296;return s},GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module.Runtime=Runtime;var ABORT=0,EXITSTATUS=0;function assert(e,t){e||abort("Assertion failed: "+t)}function getCFunc(ident){var func=Module["_"+ident];if(!func)try{func=eval("_"+ident)}catch(e){}return assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)"),func}var cwrap,ccall;(function(){var JSfuncs={stackSave:function(){Runtime.stackSave()},stackRestore:function(){Runtime.stackRestore()},arrayToC:function(e){var t=Runtime.stackAlloc(e.length);return writeArrayToMemory(e,t),t},stringToC:function(e){var t=0;if(e!=null&&e!==0){var r=(e.length<<2)+1;t=Runtime.stackAlloc(r),stringToUTF8(e,t,r)}return t}},toC={string:JSfuncs.stringToC,array:JSfuncs.arrayToC};ccall=function(t,r,s,a,n){var c=getCFunc(t),f=[],p=0;if(a)for(var h=0;h>0]=t;break;case"i8":HEAP8[e>>0]=t;break;case"i16":HEAP16[e>>1]=t;break;case"i32":HEAP32[e>>2]=t;break;case"i64":tempI64=[t>>>0,(tempDouble=t,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[e>>2]=tempI64[0],HEAP32[e+4>>2]=tempI64[1];break;case"float":HEAPF32[e>>2]=t;break;case"double":HEAPF64[e>>3]=t;break;default:abort("invalid type for setValue: "+r)}}Module.setValue=setValue;function getValue(e,t,r){switch(t=t||"i8",t.charAt(t.length-1)==="*"&&(t="i32"),t){case"i1":return HEAP8[e>>0];case"i8":return HEAP8[e>>0];case"i16":return HEAP16[e>>1];case"i32":return HEAP32[e>>2];case"i64":return HEAP32[e>>2];case"float":return HEAPF32[e>>2];case"double":return HEAPF64[e>>3];default:abort("invalid type for setValue: "+t)}return null}Module.getValue=getValue;var ALLOC_NORMAL=0,ALLOC_STACK=1,ALLOC_STATIC=2,ALLOC_DYNAMIC=3,ALLOC_NONE=4;Module.ALLOC_NORMAL=ALLOC_NORMAL,Module.ALLOC_STACK=ALLOC_STACK,Module.ALLOC_STATIC=ALLOC_STATIC,Module.ALLOC_DYNAMIC=ALLOC_DYNAMIC,Module.ALLOC_NONE=ALLOC_NONE;function allocate(e,t,r,s){var a,n;typeof e=="number"?(a=!0,n=e):(a=!1,n=e.length);var c=typeof t=="string"?t:null,f;if(r==ALLOC_NONE?f=s:f=[typeof _malloc=="function"?_malloc:Runtime.staticAlloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][r===void 0?ALLOC_STATIC:r](Math.max(n,c?1:t.length)),a){var s=f,p;for(assert((f&3)==0),p=f+(n&-4);s>2]=0;for(p=f+n;s>0]=0;return f}if(c==="i8")return e.subarray||e.slice?HEAPU8.set(e,f):HEAPU8.set(new Uint8Array(e),f),f;for(var h=0,E,C,S;h>0],r|=s,!(s==0&&!t||(a++,t&&a==t)););t||(t=a);var n="";if(r<128){for(var c=1024,f;t>0;)f=String.fromCharCode.apply(String,HEAPU8.subarray(e,e+Math.min(t,c))),n=n?n+f:f,e+=c,t-=c;return n}return Module.UTF8ToString(e)}Module.Pointer_stringify=Pointer_stringify;function AsciiToString(e){for(var t="";;){var r=HEAP8[e++>>0];if(!r)return t;t+=String.fromCharCode(r)}}Module.AsciiToString=AsciiToString;function stringToAscii(e,t){return writeAsciiToMemory(e,t,!1)}Module.stringToAscii=stringToAscii;var UTF8Decoder=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function UTF8ArrayToString(e,t){for(var r=t;e[r];)++r;if(r-t>16&&e.subarray&&UTF8Decoder)return UTF8Decoder.decode(e.subarray(t,r));for(var s,a,n,c,f,p,h="";;){if(s=e[t++],!s)return h;if(!(s&128)){h+=String.fromCharCode(s);continue}if(a=e[t++]&63,(s&224)==192){h+=String.fromCharCode((s&31)<<6|a);continue}if(n=e[t++]&63,(s&240)==224?s=(s&15)<<12|a<<6|n:(c=e[t++]&63,(s&248)==240?s=(s&7)<<18|a<<12|n<<6|c:(f=e[t++]&63,(s&252)==248?s=(s&3)<<24|a<<18|n<<12|c<<6|f:(p=e[t++]&63,s=(s&1)<<30|a<<24|n<<18|c<<12|f<<6|p))),s<65536)h+=String.fromCharCode(s);else{var E=s-65536;h+=String.fromCharCode(55296|E>>10,56320|E&1023)}}}Module.UTF8ArrayToString=UTF8ArrayToString;function UTF8ToString(e){return UTF8ArrayToString(HEAPU8,e)}Module.UTF8ToString=UTF8ToString;function stringToUTF8Array(e,t,r,s){if(!(s>0))return 0;for(var a=r,n=r+s-1,c=0;c=55296&&f<=57343&&(f=65536+((f&1023)<<10)|e.charCodeAt(++c)&1023),f<=127){if(r>=n)break;t[r++]=f}else if(f<=2047){if(r+1>=n)break;t[r++]=192|f>>6,t[r++]=128|f&63}else if(f<=65535){if(r+2>=n)break;t[r++]=224|f>>12,t[r++]=128|f>>6&63,t[r++]=128|f&63}else if(f<=2097151){if(r+3>=n)break;t[r++]=240|f>>18,t[r++]=128|f>>12&63,t[r++]=128|f>>6&63,t[r++]=128|f&63}else if(f<=67108863){if(r+4>=n)break;t[r++]=248|f>>24,t[r++]=128|f>>18&63,t[r++]=128|f>>12&63,t[r++]=128|f>>6&63,t[r++]=128|f&63}else{if(r+5>=n)break;t[r++]=252|f>>30,t[r++]=128|f>>24&63,t[r++]=128|f>>18&63,t[r++]=128|f>>12&63,t[r++]=128|f>>6&63,t[r++]=128|f&63}}return t[r]=0,r-a}Module.stringToUTF8Array=stringToUTF8Array;function stringToUTF8(e,t,r){return stringToUTF8Array(e,HEAPU8,t,r)}Module.stringToUTF8=stringToUTF8;function lengthBytesUTF8(e){for(var t=0,r=0;r=55296&&s<=57343&&(s=65536+((s&1023)<<10)|e.charCodeAt(++r)&1023),s<=127?++t:s<=2047?t+=2:s<=65535?t+=3:s<=2097151?t+=4:s<=67108863?t+=5:t+=6}return t}Module.lengthBytesUTF8=lengthBytesUTF8;var UTF16Decoder=typeof TextDecoder<"u"?new TextDecoder("utf-16le"):void 0;function demangle(e){var t=Module.___cxa_demangle||Module.__cxa_demangle;if(t){try{var r=e.substr(1),s=lengthBytesUTF8(r)+1,a=_malloc(s);stringToUTF8(r,a,s);var n=_malloc(4),c=t(a,0,0,n);if(getValue(n,"i32")===0&&c)return Pointer_stringify(c)}catch{}finally{a&&_free(a),n&&_free(n),c&&_free(c)}return e}return Runtime.warnOnce("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling"),e}function demangleAll(e){var t=/__Z[\w\d_]+/g;return e.replace(t,function(r){var s=demangle(r);return r===s?r:r+" ["+s+"]"})}function jsStackTrace(){var e=new Error;if(!e.stack){try{throw new Error(0)}catch(t){e=t}if(!e.stack)return"(no stack trace available)"}return e.stack.toString()}function stackTrace(){var e=jsStackTrace();return Module.extraStackTrace&&(e+=` -`+Module.extraStackTrace()),demangleAll(e)}Module.stackTrace=stackTrace;var HEAP,buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferViews(){Module.HEAP8=HEAP8=new Int8Array(buffer),Module.HEAP16=HEAP16=new Int16Array(buffer),Module.HEAP32=HEAP32=new Int32Array(buffer),Module.HEAPU8=HEAPU8=new Uint8Array(buffer),Module.HEAPU16=HEAPU16=new Uint16Array(buffer),Module.HEAPU32=HEAPU32=new Uint32Array(buffer),Module.HEAPF32=HEAPF32=new Float32Array(buffer),Module.HEAPF64=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed,STACK_BASE,STACKTOP,STACK_MAX,DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0,staticSealed=!1;function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}function enlargeMemory(){abortOnCannotGrowMemory()}var TOTAL_STACK=Module.TOTAL_STACK||5242880,TOTAL_MEMORY=Module.TOTAL_MEMORY||134217728;TOTAL_MEMORY0;){var t=e.shift();if(typeof t=="function"){t();continue}var r=t.func;typeof r=="number"?t.arg===void 0?Module.dynCall_v(r):Module.dynCall_vi(r,t.arg):r(t.arg===void 0?null:t.arg)}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATEXIT__=[],__ATPOSTRUN__=[],runtimeInitialized=!1,runtimeExited=!1;function preRun(){if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){runtimeInitialized||(runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__))}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__),runtimeExited=!0}function postRun(){if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(e){__ATPRERUN__.unshift(e)}Module.addOnPreRun=addOnPreRun;function addOnInit(e){__ATINIT__.unshift(e)}Module.addOnInit=addOnInit;function addOnPreMain(e){__ATMAIN__.unshift(e)}Module.addOnPreMain=addOnPreMain;function addOnExit(e){__ATEXIT__.unshift(e)}Module.addOnExit=addOnExit;function addOnPostRun(e){__ATPOSTRUN__.unshift(e)}Module.addOnPostRun=addOnPostRun;function intArrayFromString(e,t,r){var s=r>0?r:lengthBytesUTF8(e)+1,a=new Array(s),n=stringToUTF8Array(e,a,0,a.length);return t&&(a.length=n),a}Module.intArrayFromString=intArrayFromString;function intArrayToString(e){for(var t=[],r=0;r255&&(s&=255),t.push(String.fromCharCode(s))}return t.join("")}Module.intArrayToString=intArrayToString;function writeStringToMemory(e,t,r){Runtime.warnOnce("writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!");var s,a;r&&(a=t+lengthBytesUTF8(e),s=HEAP8[a]),stringToUTF8(e,t,1/0),r&&(HEAP8[a]=s)}Module.writeStringToMemory=writeStringToMemory;function writeArrayToMemory(e,t){HEAP8.set(e,t)}Module.writeArrayToMemory=writeArrayToMemory;function writeAsciiToMemory(e,t,r){for(var s=0;s>0]=e.charCodeAt(s);r||(HEAP8[t>>0]=0)}if(Module.writeAsciiToMemory=writeAsciiToMemory,(!Math.imul||Math.imul(4294967295,5)!==-5)&&(Math.imul=function e(t,r){var s=t>>>16,a=t&65535,n=r>>>16,c=r&65535;return a*c+(s*c+a*n<<16)|0}),Math.imul=Math.imul,!Math.fround){var froundBuffer=new Float32Array(1);Math.fround=function(e){return froundBuffer[0]=e,froundBuffer[0]}}Math.fround=Math.fround,Math.clz32||(Math.clz32=function(e){e=e>>>0;for(var t=0;t<32;t++)if(e&1<<31-t)return t;return 32}),Math.clz32=Math.clz32,Math.trunc||(Math.trunc=function(e){return e<0?Math.ceil(e):Math.floor(e)}),Math.trunc=Math.trunc;var Math_abs=Math.abs,Math_cos=Math.cos,Math_sin=Math.sin,Math_tan=Math.tan,Math_acos=Math.acos,Math_asin=Math.asin,Math_atan=Math.atan,Math_atan2=Math.atan2,Math_exp=Math.exp,Math_log=Math.log,Math_sqrt=Math.sqrt,Math_ceil=Math.ceil,Math_floor=Math.floor,Math_pow=Math.pow,Math_imul=Math.imul,Math_fround=Math.fround,Math_round=Math.round,Math_min=Math.min,Math_clz32=Math.clz32,Math_trunc=Math.trunc,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function getUniqueRunDependency(e){return e}function addRunDependency(e){runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}Module.addRunDependency=addRunDependency;function removeRunDependency(e){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var t=dependenciesFulfilled;dependenciesFulfilled=null,t()}}Module.removeRunDependency=removeRunDependency,Module.preloadedImages={},Module.preloadedAudios={};var ASM_CONSTS=[function(e,t,r,s,a,n,c,f){return _nbind.callbackSignatureList[e].apply(this,arguments)}];function _emscripten_asm_const_iiiiiiii(e,t,r,s,a,n,c,f){return ASM_CONSTS[e](t,r,s,a,n,c,f)}function _emscripten_asm_const_iiiii(e,t,r,s,a){return ASM_CONSTS[e](t,r,s,a)}function _emscripten_asm_const_iiidddddd(e,t,r,s,a,n,c,f,p){return ASM_CONSTS[e](t,r,s,a,n,c,f,p)}function _emscripten_asm_const_iiididi(e,t,r,s,a,n,c){return ASM_CONSTS[e](t,r,s,a,n,c)}function _emscripten_asm_const_iiii(e,t,r,s){return ASM_CONSTS[e](t,r,s)}function _emscripten_asm_const_iiiid(e,t,r,s,a){return ASM_CONSTS[e](t,r,s,a)}function _emscripten_asm_const_iiiiii(e,t,r,s,a,n){return ASM_CONSTS[e](t,r,s,a,n)}STATIC_BASE=Runtime.GLOBAL_BASE,STATICTOP=STATIC_BASE+12800,__ATINIT__.push({func:function(){__GLOBAL__sub_I_Yoga_cpp()}},{func:function(){__GLOBAL__sub_I_nbind_cc()}},{func:function(){__GLOBAL__sub_I_common_cc()}},{func:function(){__GLOBAL__sub_I_Binding_cc()}}),allocate([0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,192,127,0,0,192,127,3,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,3,0,0,0,0,0,192,127,3,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,0,0,128,191,0,0,128,191,0,0,192,127,0,0,0,0,0,0,0,0,0,0,128,63,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,190,12,0,0,200,12,0,0,208,12,0,0,216,12,0,0,230,12,0,0,242,12,0,0,1,0,0,0,3,0,0,0,0,0,0,0,2,0,0,0,0,0,192,127,3,0,0,0,180,45,0,0,181,45,0,0,182,45,0,0,181,45,0,0,182,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,1,0,0,0,4,0,0,0,183,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,184,45,0,0,185,45,0,0,181,45,0,0,181,45,0,0,182,45,0,0,186,45,0,0,185,45,0,0,148,4,0,0,3,0,0,0,187,45,0,0,164,4,0,0,188,45,0,0,2,0,0,0,189,45,0,0,164,4,0,0,188,45,0,0,185,45,0,0,164,4,0,0,185,45,0,0,164,4,0,0,188,45,0,0,181,45,0,0,182,45,0,0,181,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,183,45,0,0,182,45,0,0,181,45,0,0,190,45,0,0,190,45,0,0,182,45,0,0,182,45,0,0,185,45,0,0,181,45,0,0,185,45,0,0,182,45,0,0,181,45,0,0,185,45,0,0,182,45,0,0,185,45,0,0,48,5,0,0,3,0,0,0,56,5,0,0,1,0,0,0,189,45,0,0,185,45,0,0,164,4,0,0,76,5,0,0,2,0,0,0,191,45,0,0,186,45,0,0,182,45,0,0,185,45,0,0,192,45,0,0,185,45,0,0,182,45,0,0,186,45,0,0,185,45,0,0,76,5,0,0,76,5,0,0,136,5,0,0,182,45,0,0,181,45,0,0,2,0,0,0,190,45,0,0,136,5,0,0,56,19,0,0,156,5,0,0,2,0,0,0,184,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,9,0,0,0,1,0,0,0,10,0,0,0,204,5,0,0,181,45,0,0,181,45,0,0,2,0,0,0,180,45,0,0,204,5,0,0,2,0,0,0,195,45,0,0,236,5,0,0,97,19,0,0,198,45,0,0,211,45,0,0,212,45,0,0,213,45,0,0,214,45,0,0,215,45,0,0,188,45,0,0,182,45,0,0,216,45,0,0,217,45,0,0,218,45,0,0,219,45,0,0,192,45,0,0,181,45,0,0,0,0,0,0,185,45,0,0,110,19,0,0,186,45,0,0,115,19,0,0,221,45,0,0,120,19,0,0,148,4,0,0,132,19,0,0,96,6,0,0,145,19,0,0,222,45,0,0,164,19,0,0,223,45,0,0,173,19,0,0,0,0,0,0,3,0,0,0,104,6,0,0,1,0,0,0,187,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,11,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,185,45,0,0,224,45,0,0,164,6,0,0,188,45,0,0,172,6,0,0,180,6,0,0,2,0,0,0,188,6,0,0,7,0,0,0,224,45,0,0,7,0,0,0,164,6,0,0,1,0,0,0,213,45,0,0,185,45,0,0,224,45,0,0,172,6,0,0,185,45,0,0,224,45,0,0,164,6,0,0,185,45,0,0,224,45,0,0,211,45,0,0,211,45,0,0,222,45,0,0,211,45,0,0,224,45,0,0,222,45,0,0,211,45,0,0,224,45,0,0,172,6,0,0,222,45,0,0,211,45,0,0,224,45,0,0,188,45,0,0,222,45,0,0,211,45,0,0,40,7,0,0,188,45,0,0,2,0,0,0,224,45,0,0,185,45,0,0,188,45,0,0,188,45,0,0,188,45,0,0,188,45,0,0,222,45,0,0,224,45,0,0,148,4,0,0,185,45,0,0,148,4,0,0,148,4,0,0,148,4,0,0,148,4,0,0,148,4,0,0,185,45,0,0,164,6,0,0,148,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,14,0,0,0,15,0,0,0,1,0,0,0,16,0,0,0,148,7,0,0,2,0,0,0,225,45,0,0,183,45,0,0,188,45,0,0,168,7,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,234,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,9,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,2,0,0,0,242,45,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,111,117,108,100,32,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,110,111,100,101,0,67,97,110,110,111,116,32,114,101,115,101,116,32,97,32,110,111,100,101,32,119,104,105,99,104,32,115,116,105,108,108,32,104,97,115,32,99,104,105,108,100,114,101,110,32,97,116,116,97,99,104,101,100,0,67,97,110,110,111,116,32,114,101,115,101,116,32,97,32,110,111,100,101,32,115,116,105,108,108,32,97,116,116,97,99,104,101,100,32,116,111,32,97,32,112,97,114,101,110,116,0,67,111,117,108,100,32,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,99,111,110,102,105,103,0,67,97,110,110,111,116,32,115,101,116,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,58,32,78,111,100,101,115,32,119,105,116,104,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,32,99,97,110,110,111,116,32,104,97,118,101,32,99,104,105,108,100,114,101,110,46,0,67,104,105,108,100,32,97,108,114,101,97,100,121,32,104,97,115,32,97,32,112,97,114,101,110,116,44,32,105,116,32,109,117,115,116,32,98,101,32,114,101,109,111,118,101,100,32,102,105,114,115,116,46,0,67,97,110,110,111,116,32,97,100,100,32,99,104,105,108,100,58,32,78,111,100,101,115,32,119,105,116,104,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,32,99,97,110,110,111,116,32,104,97,118,101,32,99,104,105,108,100,114,101,110,46,0,79,110,108,121,32,108,101,97,102,32,110,111,100,101,115,32,119,105,116,104,32,99,117,115,116,111,109,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,115,104,111,117,108,100,32,109,97,110,117,97,108,108,121,32,109,97,114,107,32,116,104,101,109,115,101,108,118,101,115,32,97,115,32,100,105,114,116,121,0,67,97,110,110,111,116,32,103,101,116,32,108,97,121,111,117,116,32,112,114,111,112,101,114,116,105,101,115,32,111,102,32,109,117,108,116,105,45,101,100,103,101,32,115,104,111,114,116,104,97,110,100,115,0,37,115,37,100,46,123,91,115,107,105,112,112,101,100,93,32,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,97,119,58,32,37,102,32,97,104,58,32,37,102,32,61,62,32,100,58,32,40,37,102,44,32,37,102,41,32,37,115,10,0,37,115,37,100,46,123,37,115,0,42,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,97,119,58,32,37,102,32,97,104,58,32,37,102,32,37,115,10,0,37,115,37,100,46,125,37,115,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,100,58,32,40,37,102,44,32,37,102,41,32,37,115,10,0,79,117,116,32,111,102,32,99,97,99,104,101,32,101,110,116,114,105,101,115,33,10,0,83,99,97,108,101,32,102,97,99,116,111,114,32,115,104,111,117,108,100,32,110,111,116,32,98,101,32,108,101,115,115,32,116,104,97,110,32,122,101,114,111,0,105,110,105,116,105,97,108,0,37,115,10,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,85,78,68,69,70,73,78,69,68,0,69,88,65,67,84,76,89,0,65,84,95,77,79,83,84,0,76,65,89,95,85,78,68,69,70,73,78,69,68,0,76,65,89,95,69,88,65,67,84,76,89,0,76,65,89,95,65,84,95,77,79,83,84,0,97,118,97,105,108,97,98,108,101,87,105,100,116,104,32,105,115,32,105,110,100,101,102,105,110,105,116,101,32,115,111,32,119,105,100,116,104,77,101,97,115,117,114,101,77,111,100,101,32,109,117,115,116,32,98,101,32,89,71,77,101,97,115,117,114,101,77,111,100,101,85,110,100,101,102,105,110,101,100,0,97,118,97,105,108,97,98,108,101,72,101,105,103,104,116,32,105,115,32,105,110,100,101,102,105,110,105,116,101,32,115,111,32,104,101,105,103,104,116,77,101,97,115,117,114,101,77,111,100,101,32,109,117,115,116,32,98,101,32,89,71,77,101,97,115,117,114,101,77,111,100,101,85,110,100,101,102,105,110,101,100,0,102,108,101,120,0,115,116,114,101,116,99,104,0,109,117,108,116,105,108,105,110,101,45,115,116,114,101,116,99,104,0,69,120,112,101,99,116,101,100,32,110,111,100,101,32,116,111,32,104,97,118,101,32,99,117,115,116,111,109,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,0,109,101,97,115,117,114,101,0,69,120,112,101,99,116,32,99,117,115,116,111,109,32,98,97,115,101,108,105,110,101,32,102,117,110,99,116,105,111,110,32,116,111,32,110,111,116,32,114,101,116,117,114,110,32,78,97,78,0,97,98,115,45,109,101,97,115,117,114,101,0,97,98,115,45,108,97,121,111,117,116,0,78,111,100,101,0,99,114,101,97,116,101,68,101,102,97,117,108,116,0,99,114,101,97,116,101,87,105,116,104,67,111,110,102,105,103,0,100,101,115,116,114,111,121,0,114,101,115,101,116,0,99,111,112,121,83,116,121,108,101,0,115,101,116,80,111,115,105,116,105,111,110,84,121,112,101,0,115,101,116,80,111,115,105,116,105,111,110,0,115,101,116,80,111,115,105,116,105,111,110,80,101,114,99,101,110,116,0,115,101,116,65,108,105,103,110,67,111,110,116,101,110,116,0,115,101,116,65,108,105,103,110,73,116,101,109,115,0,115,101,116,65,108,105,103,110,83,101,108,102,0,115,101,116,70,108,101,120,68,105,114,101,99,116,105,111,110,0,115,101,116,70,108,101,120,87,114,97,112,0,115,101,116,74,117,115,116,105,102,121,67,111,110,116,101,110,116,0,115,101,116,77,97,114,103,105,110,0,115,101,116,77,97,114,103,105,110,80,101,114,99,101,110,116,0,115,101,116,77,97,114,103,105,110,65,117,116,111,0,115,101,116,79,118,101,114,102,108,111,119,0,115,101,116,68,105,115,112,108,97,121,0,115,101,116,70,108,101,120,0,115,101,116,70,108,101,120,66,97,115,105,115,0,115,101,116,70,108,101,120,66,97,115,105,115,80,101,114,99,101,110,116,0,115,101,116,70,108,101,120,71,114,111,119,0,115,101,116,70,108,101,120,83,104,114,105,110,107,0,115,101,116,87,105,100,116,104,0,115,101,116,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,87,105,100,116,104,65,117,116,111,0,115,101,116,72,101,105,103,104,116,0,115,101,116,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,72,101,105,103,104,116,65,117,116,111,0,115,101,116,77,105,110,87,105,100,116,104,0,115,101,116,77,105,110,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,77,105,110,72,101,105,103,104,116,0,115,101,116,77,105,110,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,77,97,120,87,105,100,116,104,0,115,101,116,77,97,120,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,77,97,120,72,101,105,103,104,116,0,115,101,116,77,97,120,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,65,115,112,101,99,116,82,97,116,105,111,0,115,101,116,66,111,114,100,101,114,0,115,101,116,80,97,100,100,105,110,103,0,115,101,116,80,97,100,100,105,110,103,80,101,114,99,101,110,116,0,103,101,116,80,111,115,105,116,105,111,110,84,121,112,101,0,103,101,116,80,111,115,105,116,105,111,110,0,103,101,116,65,108,105,103,110,67,111,110,116,101,110,116,0,103,101,116,65,108,105,103,110,73,116,101,109,115,0,103,101,116,65,108,105,103,110,83,101,108,102,0,103,101,116,70,108,101,120,68,105,114,101,99,116,105,111,110,0,103,101,116,70,108,101,120,87,114,97,112,0,103,101,116,74,117,115,116,105,102,121,67,111,110,116,101,110,116,0,103,101,116,77,97,114,103,105,110,0,103,101,116,70,108,101,120,66,97,115,105,115,0,103,101,116,70,108,101,120,71,114,111,119,0,103,101,116,70,108,101,120,83,104,114,105,110,107,0,103,101,116,87,105,100,116,104,0,103,101,116,72,101,105,103,104,116,0,103,101,116,77,105,110,87,105,100,116,104,0,103,101,116,77,105,110,72,101,105,103,104,116,0,103,101,116,77,97,120,87,105,100,116,104,0,103,101,116,77,97,120,72,101,105,103,104,116,0,103,101,116,65,115,112,101,99,116,82,97,116,105,111,0,103,101,116,66,111,114,100,101,114,0,103,101,116,79,118,101,114,102,108,111,119,0,103,101,116,68,105,115,112,108,97,121,0,103,101,116,80,97,100,100,105,110,103,0,105,110,115,101,114,116,67,104,105,108,100,0,114,101,109,111,118,101,67,104,105,108,100,0,103,101,116,67,104,105,108,100,67,111,117,110,116,0,103,101,116,80,97,114,101,110,116,0,103,101,116,67,104,105,108,100,0,115,101,116,77,101,97,115,117,114,101,70,117,110,99,0,117,110,115,101,116,77,101,97,115,117,114,101,70,117,110,99,0,109,97,114,107,68,105,114,116,121,0,105,115,68,105,114,116,121,0,99,97,108,99,117,108,97,116,101,76,97,121,111,117,116,0,103,101,116,67,111,109,112,117,116,101,100,76,101,102,116,0,103,101,116,67,111,109,112,117,116,101,100,82,105,103,104,116,0,103,101,116,67,111,109,112,117,116,101,100,84,111,112,0,103,101,116,67,111,109,112,117,116,101,100,66,111,116,116,111,109,0,103,101,116,67,111,109,112,117,116,101,100,87,105,100,116,104,0,103,101,116,67,111,109,112,117,116,101,100,72,101,105,103,104,116,0,103,101,116,67,111,109,112,117,116,101,100,76,97,121,111,117,116,0,103,101,116,67,111,109,112,117,116,101,100,77,97,114,103,105,110,0,103,101,116,67,111,109,112,117,116,101,100,66,111,114,100,101,114,0,103,101,116,67,111,109,112,117,116,101,100,80,97,100,100,105,110,103,0,67,111,110,102,105,103,0,99,114,101,97,116,101,0,115,101,116,69,120,112,101,114,105,109,101,110,116,97,108,70,101,97,116,117,114,101,69,110,97,98,108,101,100,0,115,101,116,80,111,105,110,116,83,99,97,108,101,70,97,99,116,111,114,0,105,115,69,120,112,101,114,105,109,101,110,116,97,108,70,101,97,116,117,114,101,69,110,97,98,108,101,100,0,86,97,108,117,101,0,76,97,121,111,117,116,0,83,105,122,101,0,103,101,116,73,110,115,116,97,110,99,101,67,111,117,110,116,0,73,110,116,54,52,0,1,1,1,2,2,4,4,4,4,8,8,4,8,118,111,105,100,0,98,111,111,108,0,115,116,100,58,58,115,116,114,105,110,103,0,99,98,70,117,110,99,116,105,111,110,32,38,0,99,111,110,115,116,32,99,98,70,117,110,99,116,105,111,110,32,38,0,69,120,116,101,114,110,97,108,0,66,117,102,102,101,114,0,78,66,105,110,100,73,68,0,78,66,105,110,100,0,98,105,110,100,95,118,97,108,117,101,0,114,101,102,108,101,99,116,0,113,117,101,114,121,84,121,112,101,0,108,97,108,108,111,99,0,108,114,101,115,101,116,0,123,114,101,116,117,114,110,40,95,110,98,105,110,100,46,99,97,108,108,98,97,99,107,83,105,103,110,97,116,117,114,101,76,105,115,116,91,36,48,93,46,97,112,112,108,121,40,116,104,105,115,44,97,114,103,117,109,101,110,116,115,41,41,59,125,0,95,110,98,105,110,100,95,110,101,119,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,46,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE);var tempDoublePtr=STATICTOP;STATICTOP+=16;function _atexit(e,t){__ATEXIT__.unshift({func:e,arg:t})}function ___cxa_atexit(){return _atexit.apply(null,arguments)}function _abort(){Module.abort()}function __ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj(){Module.printErr("missing function: _ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj"),abort(-1)}function __decorate(e,t,r,s){var a=arguments.length,n=a<3?t:s===null?s=Object.getOwnPropertyDescriptor(t,r):s,c;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")n=Reflect.decorate(e,t,r,s);else for(var f=e.length-1;f>=0;f--)(c=e[f])&&(n=(a<3?c(n):a>3?c(t,r,n):c(t,r))||n);return a>3&&n&&Object.defineProperty(t,r,n),n}function _defineHidden(e){return function(t,r){Object.defineProperty(t,r,{configurable:!1,enumerable:!1,value:e,writable:!0})}}var _nbind={};function __nbind_free_external(e){_nbind.externalList[e].dereference(e)}function __nbind_reference_external(e){_nbind.externalList[e].reference()}function _llvm_stackrestore(e){var t=_llvm_stacksave,r=t.LLVM_SAVEDSTACKS[e];t.LLVM_SAVEDSTACKS.splice(e,1),Runtime.stackRestore(r)}function __nbind_register_pool(e,t,r,s){_nbind.Pool.pageSize=e,_nbind.Pool.usedPtr=t/4,_nbind.Pool.rootPtr=r,_nbind.Pool.pagePtr=s/4,HEAP32[t/4]=16909060,HEAP8[t]==1&&(_nbind.bigEndian=!0),HEAP32[t/4]=0,_nbind.makeTypeKindTbl=(n={},n[1024]=_nbind.PrimitiveType,n[64]=_nbind.Int64Type,n[2048]=_nbind.BindClass,n[3072]=_nbind.BindClassPtr,n[4096]=_nbind.SharedClassPtr,n[5120]=_nbind.ArrayType,n[6144]=_nbind.ArrayType,n[7168]=_nbind.CStringType,n[9216]=_nbind.CallbackType,n[10240]=_nbind.BindType,n),_nbind.makeTypeNameTbl={Buffer:_nbind.BufferType,External:_nbind.ExternalType,Int64:_nbind.Int64Type,_nbind_new:_nbind.CreateValueType,bool:_nbind.BooleanType,"cbFunction &":_nbind.CallbackType,"const cbFunction &":_nbind.CallbackType,"const std::string &":_nbind.StringType,"std::string":_nbind.StringType},Module.toggleLightGC=_nbind.toggleLightGC,_nbind.callUpcast=Module.dynCall_ii;var a=_nbind.makeType(_nbind.constructType,{flags:2048,id:0,name:""});a.proto=Module,_nbind.BindClass.list.push(a);var n}function _emscripten_set_main_loop_timing(e,t){if(Browser.mainLoop.timingMode=e,Browser.mainLoop.timingValue=t,!Browser.mainLoop.func)return 1;if(e==0)Browser.mainLoop.scheduler=function(){var c=Math.max(0,Browser.mainLoop.tickStartTime+t-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,c)},Browser.mainLoop.method="timeout";else if(e==1)Browser.mainLoop.scheduler=function(){Browser.requestAnimationFrame(Browser.mainLoop.runner)},Browser.mainLoop.method="rAF";else if(e==2){if(!window.setImmediate){let n=function(c){c.source===window&&c.data===s&&(c.stopPropagation(),r.shift()())};var a=n,r=[],s="setimmediate";window.addEventListener("message",n,!0),window.setImmediate=function(f){r.push(f),ENVIRONMENT_IS_WORKER?(Module.setImmediates===void 0&&(Module.setImmediates=[]),Module.setImmediates.push(f),window.postMessage({target:s})):window.postMessage(s,"*")}}Browser.mainLoop.scheduler=function(){window.setImmediate(Browser.mainLoop.runner)},Browser.mainLoop.method="immediate"}return 0}function _emscripten_get_now(){abort()}function _emscripten_set_main_loop(e,t,r,s,a){Module.noExitRuntime=!0,assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters."),Browser.mainLoop.func=e,Browser.mainLoop.arg=s;var n;typeof s<"u"?n=function(){Module.dynCall_vi(e,s)}:n=function(){Module.dynCall_v(e)};var c=Browser.mainLoop.currentlyRunningMainloop;if(Browser.mainLoop.runner=function(){if(!ABORT){if(Browser.mainLoop.queue.length>0){var p=Date.now(),h=Browser.mainLoop.queue.shift();if(h.func(h.arg),Browser.mainLoop.remainingBlockers){var E=Browser.mainLoop.remainingBlockers,C=E%1==0?E-1:Math.floor(E);h.counted?Browser.mainLoop.remainingBlockers=C:(C=C+.5,Browser.mainLoop.remainingBlockers=(8*E+C)/9)}if(console.log('main loop blocker "'+h.name+'" took '+(Date.now()-p)+" ms"),Browser.mainLoop.updateStatus(),c1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else Browser.mainLoop.timingMode==0&&(Browser.mainLoop.tickStartTime=_emscripten_get_now());Browser.mainLoop.method==="timeout"&&Module.ctx&&(Module.printErr("Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!"),Browser.mainLoop.method=""),Browser.mainLoop.runIter(n),!(c0?_emscripten_set_main_loop_timing(0,1e3/t):_emscripten_set_main_loop_timing(1,1),Browser.mainLoop.scheduler()),r)throw"SimulateInfiniteLoop"}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null,Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var e=Browser.mainLoop.timingMode,t=Browser.mainLoop.timingValue,r=Browser.mainLoop.func;Browser.mainLoop.func=null,_emscripten_set_main_loop(r,0,!1,Browser.mainLoop.arg,!0),_emscripten_set_main_loop_timing(e,t),Browser.mainLoop.scheduler()},updateStatus:function(){if(Module.setStatus){var e=Module.statusMessage||"Please wait...",t=Browser.mainLoop.remainingBlockers,r=Browser.mainLoop.expectedBlockers;t?t"u"&&(console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available."),Module.noImageDecoding=!0);var e={};e.canHandle=function(n){return!Module.noImageDecoding&&/\.(jpg|jpeg|png|bmp)$/i.test(n)},e.handle=function(n,c,f,p){var h=null;if(Browser.hasBlobConstructor)try{h=new Blob([n],{type:Browser.getMimetype(c)}),h.size!==n.length&&(h=new Blob([new Uint8Array(n).buffer],{type:Browser.getMimetype(c)}))}catch(x){Runtime.warnOnce("Blob constructor present but fails: "+x+"; falling back to blob builder")}if(!h){var E=new Browser.BlobBuilder;E.append(new Uint8Array(n).buffer),h=E.getBlob()}var C=Browser.URLObject.createObjectURL(h),S=new Image;S.onload=function(){assert(S.complete,"Image "+c+" could not be decoded");var I=document.createElement("canvas");I.width=S.width,I.height=S.height;var T=I.getContext("2d");T.drawImage(S,0,0),Module.preloadedImages[c]=I,Browser.URLObject.revokeObjectURL(C),f&&f(n)},S.onerror=function(I){console.log("Image "+C+" could not be decoded"),p&&p()},S.src=C},Module.preloadPlugins.push(e);var t={};t.canHandle=function(n){return!Module.noAudioDecoding&&n.substr(-4)in{".ogg":1,".wav":1,".mp3":1}},t.handle=function(n,c,f,p){var h=!1;function E(T){h||(h=!0,Module.preloadedAudios[c]=T,f&&f(n))}function C(){h||(h=!0,Module.preloadedAudios[c]=new Audio,p&&p())}if(Browser.hasBlobConstructor){try{var S=new Blob([n],{type:Browser.getMimetype(c)})}catch{return C()}var x=Browser.URLObject.createObjectURL(S),I=new Audio;I.addEventListener("canplaythrough",function(){E(I)},!1),I.onerror=function(O){if(h)return;console.log("warning: browser could not fully decode audio "+c+", trying slower base64 approach");function U(Y){for(var te="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",ie="=",ue="",ae=0,de=0,Ae=0;Ae=6;){var Ce=ae>>de-6&63;de-=6,ue+=te[Ce]}return de==2?(ue+=te[(ae&3)<<4],ue+=ie+ie):de==4&&(ue+=te[(ae&15)<<2],ue+=ie),ue}I.src="data:audio/x-"+c.substr(-3)+";base64,"+U(n),E(I)},I.src=x,Browser.safeSetTimeout(function(){E(I)},1e4)}else return C()},Module.preloadPlugins.push(t);function r(){Browser.pointerLock=document.pointerLockElement===Module.canvas||document.mozPointerLockElement===Module.canvas||document.webkitPointerLockElement===Module.canvas||document.msPointerLockElement===Module.canvas}var s=Module.canvas;s&&(s.requestPointerLock=s.requestPointerLock||s.mozRequestPointerLock||s.webkitRequestPointerLock||s.msRequestPointerLock||function(){},s.exitPointerLock=document.exitPointerLock||document.mozExitPointerLock||document.webkitExitPointerLock||document.msExitPointerLock||function(){},s.exitPointerLock=s.exitPointerLock.bind(document),document.addEventListener("pointerlockchange",r,!1),document.addEventListener("mozpointerlockchange",r,!1),document.addEventListener("webkitpointerlockchange",r,!1),document.addEventListener("mspointerlockchange",r,!1),Module.elementPointerLock&&s.addEventListener("click",function(a){!Browser.pointerLock&&Module.canvas.requestPointerLock&&(Module.canvas.requestPointerLock(),a.preventDefault())},!1))},createContext:function(e,t,r,s){if(t&&Module.ctx&&e==Module.canvas)return Module.ctx;var a,n;if(t){var c={antialias:!1,alpha:!1};if(s)for(var f in s)c[f]=s[f];n=GL.createContext(e,c),n&&(a=GL.getContext(n).GLctx)}else a=e.getContext("2d");return a?(r&&(t||assert(typeof GLctx>"u","cannot set in module if GLctx is used, but we are a non-GL context that would replace it"),Module.ctx=a,t&&GL.makeContextCurrent(n),Module.useWebGL=t,Browser.moduleContextCreatedCallbacks.forEach(function(p){p()}),Browser.init()),a):null},destroyContext:function(e,t,r){},fullscreenHandlersInstalled:!1,lockPointer:void 0,resizeCanvas:void 0,requestFullscreen:function(e,t,r){Browser.lockPointer=e,Browser.resizeCanvas=t,Browser.vrDevice=r,typeof Browser.lockPointer>"u"&&(Browser.lockPointer=!0),typeof Browser.resizeCanvas>"u"&&(Browser.resizeCanvas=!1),typeof Browser.vrDevice>"u"&&(Browser.vrDevice=null);var s=Module.canvas;function a(){Browser.isFullscreen=!1;var c=s.parentNode;(document.fullscreenElement||document.mozFullScreenElement||document.msFullscreenElement||document.webkitFullscreenElement||document.webkitCurrentFullScreenElement)===c?(s.exitFullscreen=document.exitFullscreen||document.cancelFullScreen||document.mozCancelFullScreen||document.msExitFullscreen||document.webkitCancelFullScreen||function(){},s.exitFullscreen=s.exitFullscreen.bind(document),Browser.lockPointer&&s.requestPointerLock(),Browser.isFullscreen=!0,Browser.resizeCanvas&&Browser.setFullscreenCanvasSize()):(c.parentNode.insertBefore(s,c),c.parentNode.removeChild(c),Browser.resizeCanvas&&Browser.setWindowedCanvasSize()),Module.onFullScreen&&Module.onFullScreen(Browser.isFullscreen),Module.onFullscreen&&Module.onFullscreen(Browser.isFullscreen),Browser.updateCanvasDimensions(s)}Browser.fullscreenHandlersInstalled||(Browser.fullscreenHandlersInstalled=!0,document.addEventListener("fullscreenchange",a,!1),document.addEventListener("mozfullscreenchange",a,!1),document.addEventListener("webkitfullscreenchange",a,!1),document.addEventListener("MSFullscreenChange",a,!1));var n=document.createElement("div");s.parentNode.insertBefore(n,s),n.appendChild(s),n.requestFullscreen=n.requestFullscreen||n.mozRequestFullScreen||n.msRequestFullscreen||(n.webkitRequestFullscreen?function(){n.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)}:null)||(n.webkitRequestFullScreen?function(){n.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)}:null),r?n.requestFullscreen({vrDisplay:r}):n.requestFullscreen()},requestFullScreen:function(e,t,r){return Module.printErr("Browser.requestFullScreen() is deprecated. Please call Browser.requestFullscreen instead."),Browser.requestFullScreen=function(s,a,n){return Browser.requestFullscreen(s,a,n)},Browser.requestFullscreen(e,t,r)},nextRAF:0,fakeRequestAnimationFrame:function(e){var t=Date.now();if(Browser.nextRAF===0)Browser.nextRAF=t+1e3/60;else for(;t+2>=Browser.nextRAF;)Browser.nextRAF+=1e3/60;var r=Math.max(Browser.nextRAF-t,0);setTimeout(e,r)},requestAnimationFrame:function e(t){typeof window>"u"?Browser.fakeRequestAnimationFrame(t):(window.requestAnimationFrame||(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame||Browser.fakeRequestAnimationFrame),window.requestAnimationFrame(t))},safeCallback:function(e){return function(){if(!ABORT)return e.apply(null,arguments)}},allowAsyncCallbacks:!0,queuedAsyncCallbacks:[],pauseAsyncCallbacks:function(){Browser.allowAsyncCallbacks=!1},resumeAsyncCallbacks:function(){if(Browser.allowAsyncCallbacks=!0,Browser.queuedAsyncCallbacks.length>0){var e=Browser.queuedAsyncCallbacks;Browser.queuedAsyncCallbacks=[],e.forEach(function(t){t()})}},safeRequestAnimationFrame:function(e){return Browser.requestAnimationFrame(function(){ABORT||(Browser.allowAsyncCallbacks?e():Browser.queuedAsyncCallbacks.push(e))})},safeSetTimeout:function(e,t){return Module.noExitRuntime=!0,setTimeout(function(){ABORT||(Browser.allowAsyncCallbacks?e():Browser.queuedAsyncCallbacks.push(e))},t)},safeSetInterval:function(e,t){return Module.noExitRuntime=!0,setInterval(function(){ABORT||Browser.allowAsyncCallbacks&&e()},t)},getMimetype:function(e){return{jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",bmp:"image/bmp",ogg:"audio/ogg",wav:"audio/wav",mp3:"audio/mpeg"}[e.substr(e.lastIndexOf(".")+1)]},getUserMedia:function(e){window.getUserMedia||(window.getUserMedia=navigator.getUserMedia||navigator.mozGetUserMedia),window.getUserMedia(e)},getMovementX:function(e){return e.movementX||e.mozMovementX||e.webkitMovementX||0},getMovementY:function(e){return e.movementY||e.mozMovementY||e.webkitMovementY||0},getMouseWheelDelta:function(e){var t=0;switch(e.type){case"DOMMouseScroll":t=e.detail;break;case"mousewheel":t=e.wheelDelta;break;case"wheel":t=e.deltaY;break;default:throw"unrecognized mouse wheel event: "+e.type}return t},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(e){if(Browser.pointerLock)e.type!="mousemove"&&"mozMovementX"in e?Browser.mouseMovementX=Browser.mouseMovementY=0:(Browser.mouseMovementX=Browser.getMovementX(e),Browser.mouseMovementY=Browser.getMovementY(e)),typeof SDL<"u"?(Browser.mouseX=SDL.mouseX+Browser.mouseMovementX,Browser.mouseY=SDL.mouseY+Browser.mouseMovementY):(Browser.mouseX+=Browser.mouseMovementX,Browser.mouseY+=Browser.mouseMovementY);else{var t=Module.canvas.getBoundingClientRect(),r=Module.canvas.width,s=Module.canvas.height,a=typeof window.scrollX<"u"?window.scrollX:window.pageXOffset,n=typeof window.scrollY<"u"?window.scrollY:window.pageYOffset;if(e.type==="touchstart"||e.type==="touchend"||e.type==="touchmove"){var c=e.touch;if(c===void 0)return;var f=c.pageX-(a+t.left),p=c.pageY-(n+t.top);f=f*(r/t.width),p=p*(s/t.height);var h={x:f,y:p};if(e.type==="touchstart")Browser.lastTouches[c.identifier]=h,Browser.touches[c.identifier]=h;else if(e.type==="touchend"||e.type==="touchmove"){var E=Browser.touches[c.identifier];E||(E=h),Browser.lastTouches[c.identifier]=E,Browser.touches[c.identifier]=h}return}var C=e.pageX-(a+t.left),S=e.pageY-(n+t.top);C=C*(r/t.width),S=S*(s/t.height),Browser.mouseMovementX=C-Browser.mouseX,Browser.mouseMovementY=S-Browser.mouseY,Browser.mouseX=C,Browser.mouseY=S}},asyncLoad:function(e,t,r,s){var a=s?"":"al "+e;Module.readAsync(e,function(n){assert(n,'Loading data file "'+e+'" failed (no arrayBuffer).'),t(new Uint8Array(n)),a&&removeRunDependency(a)},function(n){if(r)r();else throw'Loading data file "'+e+'" failed.'}),a&&addRunDependency(a)},resizeListeners:[],updateResizeListeners:function(){var e=Module.canvas;Browser.resizeListeners.forEach(function(t){t(e.width,e.height)})},setCanvasSize:function(e,t,r){var s=Module.canvas;Browser.updateCanvasDimensions(s,e,t),r||Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL<"u"){var e=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];e=e|8388608,HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=e}Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL<"u"){var e=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];e=e&-8388609,HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=e}Browser.updateResizeListeners()},updateCanvasDimensions:function(e,t,r){t&&r?(e.widthNative=t,e.heightNative=r):(t=e.widthNative,r=e.heightNative);var s=t,a=r;if(Module.forcedAspectRatio&&Module.forcedAspectRatio>0&&(s/a>2];return t},getStr:function(){var e=Pointer_stringify(SYSCALLS.get());return e},get64:function(){var e=SYSCALLS.get(),t=SYSCALLS.get();return e>=0?assert(t===0):assert(t===-1),e},getZero:function(){assert(SYSCALLS.get()===0)}};function ___syscall6(e,t){SYSCALLS.varargs=t;try{var r=SYSCALLS.getStreamFromFD();return FS.close(r),0}catch(s){return(typeof FS>"u"||!(s instanceof FS.ErrnoError))&&abort(s),-s.errno}}function ___syscall54(e,t){SYSCALLS.varargs=t;try{return 0}catch(r){return(typeof FS>"u"||!(r instanceof FS.ErrnoError))&&abort(r),-r.errno}}function _typeModule(e){var t=[[0,1,"X"],[1,1,"const X"],[128,1,"X *"],[256,1,"X &"],[384,1,"X &&"],[512,1,"std::shared_ptr"],[640,1,"std::unique_ptr"],[5120,1,"std::vector"],[6144,2,"std::array"],[9216,-1,"std::function"]];function r(p,h,E,C,S,x){if(h==1){var I=C&896;(I==128||I==256||I==384)&&(p="X const")}var T;return x?T=E.replace("X",p).replace("Y",S):T=p.replace("X",E).replace("Y",S),T.replace(/([*&]) (?=[*&])/g,"$1")}function s(p,h,E,C,S){throw new Error(p+" type "+E.replace("X",h+"?")+(C?" with flag "+C:"")+" in "+S)}function a(p,h,E,C,S,x,I,T){x===void 0&&(x="X"),T===void 0&&(T=1);var O=E(p);if(O)return O;var U=C(p),Y=U.placeholderFlag,te=t[Y];I&&te&&(x=r(I[2],I[0],x,te[0],"?",!0));var ie;Y==0&&(ie="Unbound"),Y>=10&&(ie="Corrupt"),T>20&&(ie="Deeply nested"),ie&&s(ie,p,x,Y,S||"?");var ue=U.paramList[0],ae=a(ue,h,E,C,S,x,te,T+1),de,Ae={flags:te[0],id:p,name:"",paramList:[ae]},Ce=[],Ee="?";switch(U.placeholderFlag){case 1:de=ae.spec;break;case 2:if((ae.flags&15360)==1024&&ae.spec.ptrSize==1){Ae.flags=7168;break}case 3:case 6:case 5:de=ae.spec,ae.flags&15360;break;case 8:Ee=""+U.paramList[1],Ae.paramList.push(U.paramList[1]);break;case 9:for(var g=0,Se=U.paramList[1];g>2]=e),e}function _llvm_stacksave(){var e=_llvm_stacksave;return e.LLVM_SAVEDSTACKS||(e.LLVM_SAVEDSTACKS=[]),e.LLVM_SAVEDSTACKS.push(Runtime.stackSave()),e.LLVM_SAVEDSTACKS.length-1}function ___syscall140(e,t){SYSCALLS.varargs=t;try{var r=SYSCALLS.getStreamFromFD(),s=SYSCALLS.get(),a=SYSCALLS.get(),n=SYSCALLS.get(),c=SYSCALLS.get(),f=a;return FS.llseek(r,f,c),HEAP32[n>>2]=r.position,r.getdents&&f===0&&c===0&&(r.getdents=null),0}catch(p){return(typeof FS>"u"||!(p instanceof FS.ErrnoError))&&abort(p),-p.errno}}function ___syscall146(e,t){SYSCALLS.varargs=t;try{var r=SYSCALLS.get(),s=SYSCALLS.get(),a=SYSCALLS.get(),n=0;___syscall146.buffer||(___syscall146.buffers=[null,[],[]],___syscall146.printChar=function(E,C){var S=___syscall146.buffers[E];assert(S),C===0||C===10?((E===1?Module.print:Module.printErr)(UTF8ArrayToString(S,0)),S.length=0):S.push(C)});for(var c=0;c>2],p=HEAP32[s+(c*8+4)>>2],h=0;h"u"||!(E instanceof FS.ErrnoError))&&abort(E),-E.errno}}function __nbind_finish(){for(var e=0,t=_nbind.BindClass.list;ee.pageSize/2||t>e.pageSize-r){var s=_nbind.typeNameTbl.NBind.proto;return s.lalloc(t)}else return HEAPU32[e.usedPtr]=r+t,e.rootPtr+r},e.lreset=function(t,r){var s=HEAPU32[e.pagePtr];if(s){var a=_nbind.typeNameTbl.NBind.proto;a.lreset(t,r)}else HEAPU32[e.usedPtr]=t},e}();_nbind.Pool=Pool;function constructType(e,t){var r=e==10240?_nbind.makeTypeNameTbl[t.name]||_nbind.BindType:_nbind.makeTypeKindTbl[e],s=new r(t);return typeIdTbl[t.id]=s,_nbind.typeNameTbl[t.name]=s,s}_nbind.constructType=constructType;function getType(e){return typeIdTbl[e]}_nbind.getType=getType;function queryType(e){var t=HEAPU8[e],r=_nbind.structureList[t][1];e/=4,r<0&&(++e,r=HEAPU32[e]+1);var s=Array.prototype.slice.call(HEAPU32.subarray(e+1,e+1+r));return t==9&&(s=[s[0],s.slice(1)]),{paramList:s,placeholderFlag:t}}_nbind.queryType=queryType;function getTypes(e,t){return e.map(function(r){return typeof r=="number"?_nbind.getComplexType(r,constructType,getType,queryType,t):_nbind.typeNameTbl[r]})}_nbind.getTypes=getTypes;function readTypeIdList(e,t){return Array.prototype.slice.call(HEAPU32,e/4,e/4+t)}_nbind.readTypeIdList=readTypeIdList;function readAsciiString(e){for(var t=e;HEAPU8[t++];);return String.fromCharCode.apply("",HEAPU8.subarray(e,t-1))}_nbind.readAsciiString=readAsciiString;function readPolicyList(e){var t={};if(e)for(;;){var r=HEAPU32[e/4];if(!r)break;t[readAsciiString(r)]=!0,e+=4}return t}_nbind.readPolicyList=readPolicyList;function getDynCall(e,t){var r={float32_t:"d",float64_t:"d",int64_t:"d",uint64_t:"d",void:"v"},s=e.map(function(n){return r[n.name]||"i"}).join(""),a=Module["dynCall_"+s];if(!a)throw new Error("dynCall_"+s+" not found for "+t+"("+e.map(function(n){return n.name}).join(", ")+")");return a}_nbind.getDynCall=getDynCall;function addMethod(e,t,r,s){var a=e[t];e.hasOwnProperty(t)&&a?((a.arity||a.arity===0)&&(a=_nbind.makeOverloader(a,a.arity),e[t]=a),a.addMethod(r,s)):(r.arity=s,e[t]=r)}_nbind.addMethod=addMethod;function throwError(e){throw new Error(e)}_nbind.throwError=throwError,_nbind.bigEndian=!1,_a=_typeModule(_typeModule),_nbind.Type=_a.Type,_nbind.makeType=_a.makeType,_nbind.getComplexType=_a.getComplexType,_nbind.structureList=_a.structureList;var BindType=function(e){__extends(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.heap=HEAPU32,r.ptrSize=4,r}return t.prototype.needsWireRead=function(r){return!!this.wireRead||!!this.makeWireRead},t.prototype.needsWireWrite=function(r){return!!this.wireWrite||!!this.makeWireWrite},t}(_nbind.Type);_nbind.BindType=BindType;var PrimitiveType=function(e){__extends(t,e);function t(r){var s=e.call(this,r)||this,a=r.flags&32?{32:HEAPF32,64:HEAPF64}:r.flags&8?{8:HEAPU8,16:HEAPU16,32:HEAPU32}:{8:HEAP8,16:HEAP16,32:HEAP32};return s.heap=a[r.ptrSize*8],s.ptrSize=r.ptrSize,s}return t.prototype.needsWireWrite=function(r){return!!r&&!!r.Strict},t.prototype.makeWireWrite=function(r,s){return s&&s.Strict&&function(a){if(typeof a=="number")return a;throw new Error("Type mismatch")}},t}(BindType);_nbind.PrimitiveType=PrimitiveType;function pushCString(e,t){if(e==null){if(t&&t.Nullable)return 0;throw new Error("Type mismatch")}if(t&&t.Strict){if(typeof e!="string")throw new Error("Type mismatch")}else e=e.toString();var r=Module.lengthBytesUTF8(e)+1,s=_nbind.Pool.lalloc(r);return Module.stringToUTF8Array(e,HEAPU8,s,r),s}_nbind.pushCString=pushCString;function popCString(e){return e===0?null:Module.Pointer_stringify(e)}_nbind.popCString=popCString;var CStringType=function(e){__extends(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.wireRead=popCString,r.wireWrite=pushCString,r.readResources=[_nbind.resources.pool],r.writeResources=[_nbind.resources.pool],r}return t.prototype.makeWireWrite=function(r,s){return function(a){return pushCString(a,s)}},t}(BindType);_nbind.CStringType=CStringType;var BooleanType=function(e){__extends(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.wireRead=function(s){return!!s},r}return t.prototype.needsWireWrite=function(r){return!!r&&!!r.Strict},t.prototype.makeWireRead=function(r){return"!!("+r+")"},t.prototype.makeWireWrite=function(r,s){return s&&s.Strict&&function(a){if(typeof a=="boolean")return a;throw new Error("Type mismatch")}||r},t}(BindType);_nbind.BooleanType=BooleanType;var Wrapper=function(){function e(){}return e.prototype.persist=function(){this.__nbindState|=1},e}();_nbind.Wrapper=Wrapper;function makeBound(e,t){var r=function(s){__extends(a,s);function a(n,c,f,p){var h=s.call(this)||this;if(!(h instanceof a))return new(Function.prototype.bind.apply(a,Array.prototype.concat.apply([null],arguments)));var E=c,C=f,S=p;if(n!==_nbind.ptrMarker){var x=h.__nbindConstructor.apply(h,arguments);E=4608,S=HEAPU32[x/4],C=HEAPU32[x/4+1]}var I={configurable:!0,enumerable:!1,value:null,writable:!1},T={__nbindFlags:E,__nbindPtr:C};S&&(T.__nbindShared=S,_nbind.mark(h));for(var O=0,U=Object.keys(T);O>=1;var r=_nbind.valueList[e];return _nbind.valueList[e]=firstFreeValue,firstFreeValue=e,r}else{if(t)return _nbind.popShared(e,t);throw new Error("Invalid value slot "+e)}}_nbind.popValue=popValue;var valueBase=18446744073709552e3;function push64(e){return typeof e=="number"?e:pushValue(e)*4096+valueBase}function pop64(e){return e=3?c=Buffer.from(n):c=new Buffer(n),c.copy(s)}else getBuffer(s).set(n)}}_nbind.commitBuffer=commitBuffer;var dirtyList=[],gcTimer=0;function sweep(){for(var e=0,t=dirtyList;e>2]=DYNAMIC_BASE,staticSealed=!0;function invoke_viiiii(e,t,r,s,a,n){try{Module.dynCall_viiiii(e,t,r,s,a,n)}catch(c){if(typeof c!="number"&&c!=="longjmp")throw c;Module.setThrew(1,0)}}function invoke_vif(e,t,r){try{Module.dynCall_vif(e,t,r)}catch(s){if(typeof s!="number"&&s!=="longjmp")throw s;Module.setThrew(1,0)}}function invoke_vid(e,t,r){try{Module.dynCall_vid(e,t,r)}catch(s){if(typeof s!="number"&&s!=="longjmp")throw s;Module.setThrew(1,0)}}function invoke_fiff(e,t,r,s){try{return Module.dynCall_fiff(e,t,r,s)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_vi(e,t){try{Module.dynCall_vi(e,t)}catch(r){if(typeof r!="number"&&r!=="longjmp")throw r;Module.setThrew(1,0)}}function invoke_vii(e,t,r){try{Module.dynCall_vii(e,t,r)}catch(s){if(typeof s!="number"&&s!=="longjmp")throw s;Module.setThrew(1,0)}}function invoke_ii(e,t){try{return Module.dynCall_ii(e,t)}catch(r){if(typeof r!="number"&&r!=="longjmp")throw r;Module.setThrew(1,0)}}function invoke_viddi(e,t,r,s,a){try{Module.dynCall_viddi(e,t,r,s,a)}catch(n){if(typeof n!="number"&&n!=="longjmp")throw n;Module.setThrew(1,0)}}function invoke_vidd(e,t,r,s){try{Module.dynCall_vidd(e,t,r,s)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_iiii(e,t,r,s){try{return Module.dynCall_iiii(e,t,r,s)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_diii(e,t,r,s){try{return Module.dynCall_diii(e,t,r,s)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_di(e,t){try{return Module.dynCall_di(e,t)}catch(r){if(typeof r!="number"&&r!=="longjmp")throw r;Module.setThrew(1,0)}}function invoke_iid(e,t,r){try{return Module.dynCall_iid(e,t,r)}catch(s){if(typeof s!="number"&&s!=="longjmp")throw s;Module.setThrew(1,0)}}function invoke_iii(e,t,r){try{return Module.dynCall_iii(e,t,r)}catch(s){if(typeof s!="number"&&s!=="longjmp")throw s;Module.setThrew(1,0)}}function invoke_viiddi(e,t,r,s,a,n){try{Module.dynCall_viiddi(e,t,r,s,a,n)}catch(c){if(typeof c!="number"&&c!=="longjmp")throw c;Module.setThrew(1,0)}}function invoke_viiiiii(e,t,r,s,a,n,c){try{Module.dynCall_viiiiii(e,t,r,s,a,n,c)}catch(f){if(typeof f!="number"&&f!=="longjmp")throw f;Module.setThrew(1,0)}}function invoke_dii(e,t,r){try{return Module.dynCall_dii(e,t,r)}catch(s){if(typeof s!="number"&&s!=="longjmp")throw s;Module.setThrew(1,0)}}function invoke_i(e){try{return Module.dynCall_i(e)}catch(t){if(typeof t!="number"&&t!=="longjmp")throw t;Module.setThrew(1,0)}}function invoke_iiiiii(e,t,r,s,a,n){try{return Module.dynCall_iiiiii(e,t,r,s,a,n)}catch(c){if(typeof c!="number"&&c!=="longjmp")throw c;Module.setThrew(1,0)}}function invoke_viiid(e,t,r,s,a){try{Module.dynCall_viiid(e,t,r,s,a)}catch(n){if(typeof n!="number"&&n!=="longjmp")throw n;Module.setThrew(1,0)}}function invoke_viififi(e,t,r,s,a,n,c){try{Module.dynCall_viififi(e,t,r,s,a,n,c)}catch(f){if(typeof f!="number"&&f!=="longjmp")throw f;Module.setThrew(1,0)}}function invoke_viii(e,t,r,s){try{Module.dynCall_viii(e,t,r,s)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_v(e){try{Module.dynCall_v(e)}catch(t){if(typeof t!="number"&&t!=="longjmp")throw t;Module.setThrew(1,0)}}function invoke_viid(e,t,r,s){try{Module.dynCall_viid(e,t,r,s)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_idd(e,t,r){try{return Module.dynCall_idd(e,t,r)}catch(s){if(typeof s!="number"&&s!=="longjmp")throw s;Module.setThrew(1,0)}}function invoke_viiii(e,t,r,s,a){try{Module.dynCall_viiii(e,t,r,s,a)}catch(n){if(typeof n!="number"&&n!=="longjmp")throw n;Module.setThrew(1,0)}}Module.asmGlobalArg={Math,Int8Array,Int16Array,Int32Array,Uint8Array,Uint16Array,Uint32Array,Float32Array,Float64Array,NaN:NaN,Infinity:1/0},Module.asmLibraryArg={abort,assert,enlargeMemory,getTotalMemory,abortOnCannotGrowMemory,invoke_viiiii,invoke_vif,invoke_vid,invoke_fiff,invoke_vi,invoke_vii,invoke_ii,invoke_viddi,invoke_vidd,invoke_iiii,invoke_diii,invoke_di,invoke_iid,invoke_iii,invoke_viiddi,invoke_viiiiii,invoke_dii,invoke_i,invoke_iiiiii,invoke_viiid,invoke_viififi,invoke_viii,invoke_v,invoke_viid,invoke_idd,invoke_viiii,_emscripten_asm_const_iiiii,_emscripten_asm_const_iiidddddd,_emscripten_asm_const_iiiid,__nbind_reference_external,_emscripten_asm_const_iiiiiiii,_removeAccessorPrefix,_typeModule,__nbind_register_pool,__decorate,_llvm_stackrestore,___cxa_atexit,__extends,__nbind_get_value_object,__ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj,_emscripten_set_main_loop_timing,__nbind_register_primitive,__nbind_register_type,_emscripten_memcpy_big,__nbind_register_function,___setErrNo,__nbind_register_class,__nbind_finish,_abort,_nbind_value,_llvm_stacksave,___syscall54,_defineHidden,_emscripten_set_main_loop,_emscripten_get_now,__nbind_register_callback_signature,_emscripten_asm_const_iiiiii,__nbind_free_external,_emscripten_asm_const_iiii,_emscripten_asm_const_iiididi,___syscall6,_atexit,___syscall140,___syscall146,DYNAMICTOP_PTR,tempDoublePtr,ABORT,STACKTOP,STACK_MAX,cttz_i8,___dso_handle};var asm=function(e,t,r){var s=new e.Int8Array(r),a=new e.Int16Array(r),n=new e.Int32Array(r),c=new e.Uint8Array(r),f=new e.Uint16Array(r),p=new e.Uint32Array(r),h=new e.Float32Array(r),E=new e.Float64Array(r),C=t.DYNAMICTOP_PTR|0,S=t.tempDoublePtr|0,x=t.ABORT|0,I=t.STACKTOP|0,T=t.STACK_MAX|0,O=t.cttz_i8|0,U=t.___dso_handle|0,Y=0,te=0,ie=0,ue=0,ae=e.NaN,de=e.Infinity,Ae=0,Ce=0,Ee=0,g=0,Se=0,Be=0,me=e.Math.floor,ce=e.Math.abs,X=e.Math.sqrt,De=e.Math.pow,Qe=e.Math.cos,it=e.Math.sin,_=e.Math.tan,tt=e.Math.acos,Ne=e.Math.asin,ke=e.Math.atan,be=e.Math.atan2,je=e.Math.exp,Re=e.Math.log,ct=e.Math.ceil,Me=e.Math.imul,P=e.Math.min,w=e.Math.max,b=e.Math.clz32,y=e.Math.fround,F=t.abort,z=t.assert,Z=t.enlargeMemory,$=t.getTotalMemory,se=t.abortOnCannotGrowMemory,xe=t.invoke_viiiii,Fe=t.invoke_vif,ut=t.invoke_vid,Ct=t.invoke_fiff,qt=t.invoke_vi,ir=t.invoke_vii,Pt=t.invoke_ii,dn=t.invoke_viddi,Pr=t.invoke_vidd,Ir=t.invoke_iiii,Or=t.invoke_diii,on=t.invoke_di,li=t.invoke_iid,So=t.invoke_iii,ns=t.invoke_viiddi,so=t.invoke_viiiiii,Do=t.invoke_dii,ji=t.invoke_i,oo=t.invoke_iiiiii,bo=t.invoke_viiid,RA=t.invoke_viififi,hf=t.invoke_viii,hh=t.invoke_v,gh=t.invoke_viid,ao=t.invoke_idd,Gn=t.invoke_viiii,Ns=t._emscripten_asm_const_iiiii,lo=t._emscripten_asm_const_iiidddddd,iu=t._emscripten_asm_const_iiiid,su=t.__nbind_reference_external,ou=t._emscripten_asm_const_iiiiiiii,TA=t._removeAccessorPrefix,FA=t._typeModule,ua=t.__nbind_register_pool,fa=t.__decorate,NA=t._llvm_stackrestore,gr=t.___cxa_atexit,Po=t.__extends,Ue=t.__nbind_get_value_object,au=t.__ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj,Cr=t._emscripten_set_main_loop_timing,gf=t.__nbind_register_primitive,OA=t.__nbind_register_type,LA=t._emscripten_memcpy_big,lu=t.__nbind_register_function,cu=t.___setErrNo,ac=t.__nbind_register_class,we=t.__nbind_finish,Nt=t._abort,lc=t._nbind_value,Oi=t._llvm_stacksave,co=t.___syscall54,Tt=t._defineHidden,Qn=t._emscripten_set_main_loop,Aa=t._emscripten_get_now,Gi=t.__nbind_register_callback_signature,Li=t._emscripten_asm_const_iiiiii,ja=t.__nbind_free_external,mn=t._emscripten_asm_const_iiii,Zn=t._emscripten_asm_const_iiididi,uu=t.___syscall6,dh=t._atexit,Ga=t.___syscall140,qa=t.___syscall146,Wa=y(0);let $e=y(0);function Va(o){o=o|0;var l=0;return l=I,I=I+o|0,I=I+15&-16,l|0}function df(){return I|0}function cc(o){o=o|0,I=o}function vn(o,l){o=o|0,l=l|0,I=o,T=l}function pa(o,l){o=o|0,l=l|0,Y||(Y=o,te=l)}function MA(o){o=o|0,Be=o}function UA(){return Be|0}function ha(){var o=0,l=0;Qr(8104,8,400)|0,Qr(8504,408,540)|0,o=9044,l=o+44|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));s[9088]=0,s[9089]=1,n[2273]=0,n[2274]=948,n[2275]=948,gr(17,8104,U|0)|0}function xl(o){o=o|0,mt(o+948|0)}function Mt(o){return o=y(o),((fP(o)|0)&2147483647)>>>0>2139095040|0}function Rn(o,l,u){o=o|0,l=l|0,u=u|0;e:do if(n[o+(l<<3)+4>>2]|0)o=o+(l<<3)|0;else{if((l|2|0)==3&&n[o+60>>2]|0){o=o+56|0;break}switch(l|0){case 0:case 2:case 4:case 5:{if(n[o+52>>2]|0){o=o+48|0;break e}break}default:}if(n[o+68>>2]|0){o=o+64|0;break}else{o=(l|1|0)==5?948:u;break}}while(!1);return o|0}function ga(o){o=o|0;var l=0;return l=_P(1e3)|0,Ya(o,(l|0)!=0,2456),n[2276]=(n[2276]|0)+1,Qr(l|0,8104,1e3)|0,s[o+2>>0]|0&&(n[l+4>>2]=2,n[l+12>>2]=4),n[l+976>>2]=o,l|0}function Ya(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;d=I,I=I+16|0,A=d,l||(n[A>>2]=u,Gg(o,5,3197,A)),I=d}function is(){return ga(956)|0}function uc(o){o=o|0;var l=0;return l=Jt(1e3)|0,fu(l,o),Ya(n[o+976>>2]|0,1,2456),n[2276]=(n[2276]|0)+1,n[l+944>>2]=0,l|0}function fu(o,l){o=o|0,l=l|0;var u=0;Qr(o|0,l|0,948)|0,xy(o+948|0,l+948|0),u=o+960|0,o=l+960|0,l=u+40|0;do n[u>>2]=n[o>>2],u=u+4|0,o=o+4|0;while((u|0)<(l|0))}function fc(o){o=o|0;var l=0,u=0,A=0,d=0;if(l=o+944|0,u=n[l>>2]|0,u|0&&(Ka(u+948|0,o)|0,n[l>>2]=0),u=Mi(o)|0,u|0){l=0;do n[(Bs(o,l)|0)+944>>2]=0,l=l+1|0;while((l|0)!=(u|0))}u=o+948|0,A=n[u>>2]|0,d=o+952|0,l=n[d>>2]|0,(l|0)!=(A|0)&&(n[d>>2]=l+(~((l+-4-A|0)>>>2)<<2)),kl(u),HP(o),n[2276]=(n[2276]|0)+-1}function Ka(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0;A=n[o>>2]|0,k=o+4|0,u=n[k>>2]|0,m=u;e:do if((A|0)==(u|0))d=A,B=4;else for(o=A;;){if((n[o>>2]|0)==(l|0)){d=o,B=4;break e}if(o=o+4|0,(o|0)==(u|0)){o=0;break}}while(!1);return(B|0)==4&&((d|0)!=(u|0)?(A=d+4|0,o=m-A|0,l=o>>2,l&&(BB(d|0,A|0,o|0)|0,u=n[k>>2]|0),o=d+(l<<2)|0,(u|0)==(o|0)||(n[k>>2]=u+(~((u+-4-o|0)>>>2)<<2)),o=1):o=0),o|0}function Mi(o){return o=o|0,(n[o+952>>2]|0)-(n[o+948>>2]|0)>>2|0}function Bs(o,l){o=o|0,l=l|0;var u=0;return u=n[o+948>>2]|0,(n[o+952>>2]|0)-u>>2>>>0>l>>>0?o=n[u+(l<<2)>>2]|0:o=0,o|0}function kl(o){o=o|0;var l=0,u=0,A=0,d=0;A=I,I=I+32|0,l=A,d=n[o>>2]|0,u=(n[o+4>>2]|0)-d|0,((n[o+8>>2]|0)-d|0)>>>0>u>>>0&&(d=u>>2,Ty(l,d,d,o+8|0),AP(o,l),Fy(l)),I=A}function mf(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0;M=Mi(o)|0;do if(M|0){if((n[(Bs(o,0)|0)+944>>2]|0)==(o|0)){if(!(Ka(o+948|0,l)|0))break;Qr(l+400|0,8504,540)|0,n[l+944>>2]=0,Oe(o);break}B=n[(n[o+976>>2]|0)+12>>2]|0,k=o+948|0,R=(B|0)==0,u=0,m=0;do A=n[(n[k>>2]|0)+(m<<2)>>2]|0,(A|0)==(l|0)?Oe(o):(d=uc(A)|0,n[(n[k>>2]|0)+(u<<2)>>2]=d,n[d+944>>2]=o,R||eU[B&15](A,d,o,u),u=u+1|0),m=m+1|0;while((m|0)!=(M|0));if(u>>>0>>0){R=o+948|0,k=o+952|0,B=u,u=n[k>>2]|0;do m=(n[R>>2]|0)+(B<<2)|0,A=m+4|0,d=u-A|0,l=d>>2,l&&(BB(m|0,A|0,d|0)|0,u=n[k>>2]|0),d=u,A=m+(l<<2)|0,(d|0)!=(A|0)&&(u=d+(~((d+-4-A|0)>>>2)<<2)|0,n[k>>2]=u),B=B+1|0;while((B|0)!=(M|0))}}while(!1)}function Ac(o){o=o|0;var l=0,u=0,A=0,d=0;Bi(o,(Mi(o)|0)==0,2491),Bi(o,(n[o+944>>2]|0)==0,2545),l=o+948|0,u=n[l>>2]|0,A=o+952|0,d=n[A>>2]|0,(d|0)!=(u|0)&&(n[A>>2]=d+(~((d+-4-u|0)>>>2)<<2)),kl(l),l=o+976|0,u=n[l>>2]|0,Qr(o|0,8104,1e3)|0,s[u+2>>0]|0&&(n[o+4>>2]=2,n[o+12>>2]=4),n[l>>2]=u}function Bi(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;d=I,I=I+16|0,A=d,l||(n[A>>2]=u,Fo(o,5,3197,A)),I=d}function Tn(){return n[2276]|0}function pc(){var o=0;return o=_P(20)|0,Je((o|0)!=0,2592),n[2277]=(n[2277]|0)+1,n[o>>2]=n[239],n[o+4>>2]=n[240],n[o+8>>2]=n[241],n[o+12>>2]=n[242],n[o+16>>2]=n[243],o|0}function Je(o,l){o=o|0,l=l|0;var u=0,A=0;A=I,I=I+16|0,u=A,o||(n[u>>2]=l,Fo(0,5,3197,u)),I=A}function ot(o){o=o|0,HP(o),n[2277]=(n[2277]|0)+-1}function St(o,l){o=o|0,l=l|0;var u=0;l?(Bi(o,(Mi(o)|0)==0,2629),u=1):(u=0,l=0),n[o+964>>2]=l,n[o+988>>2]=u}function lr(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,m=A+8|0,d=A+4|0,B=A,n[d>>2]=l,Bi(o,(n[l+944>>2]|0)==0,2709),Bi(o,(n[o+964>>2]|0)==0,2763),ee(o),l=o+948|0,n[B>>2]=(n[l>>2]|0)+(u<<2),n[m>>2]=n[B>>2],ye(l,m,d)|0,n[(n[d>>2]|0)+944>>2]=o,Oe(o),I=A}function ee(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0;if(u=Mi(o)|0,u|0&&(n[(Bs(o,0)|0)+944>>2]|0)!=(o|0)){A=n[(n[o+976>>2]|0)+12>>2]|0,d=o+948|0,m=(A|0)==0,l=0;do B=n[(n[d>>2]|0)+(l<<2)>>2]|0,k=uc(B)|0,n[(n[d>>2]|0)+(l<<2)>>2]=k,n[k+944>>2]=o,m||eU[A&15](B,k,o,l),l=l+1|0;while((l|0)!=(u|0))}}function ye(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0,Ye=0,Le=0,Te=0,nt=0,Xe=0;nt=I,I=I+64|0,q=nt+52|0,k=nt+48|0,oe=nt+28|0,Ye=nt+24|0,Le=nt+20|0,Te=nt,A=n[o>>2]|0,m=A,l=A+((n[l>>2]|0)-m>>2<<2)|0,A=o+4|0,d=n[A>>2]|0,B=o+8|0;do if(d>>>0<(n[B>>2]|0)>>>0){if((l|0)==(d|0)){n[l>>2]=n[u>>2],n[A>>2]=(n[A>>2]|0)+4;break}pP(o,l,d,l+4|0),l>>>0<=u>>>0&&(u=(n[A>>2]|0)>>>0>u>>>0?u+4|0:u),n[l>>2]=n[u>>2]}else{A=(d-m>>2)+1|0,d=N(o)|0,d>>>0>>0&&an(o),L=n[o>>2]|0,M=(n[B>>2]|0)-L|0,m=M>>1,Ty(Te,M>>2>>>0>>1>>>0?m>>>0>>0?A:m:d,l-L>>2,o+8|0),L=Te+8|0,A=n[L>>2]|0,m=Te+12|0,M=n[m>>2]|0,B=M,R=A;do if((A|0)==(M|0)){if(M=Te+4|0,A=n[M>>2]|0,Xe=n[Te>>2]|0,d=Xe,A>>>0<=Xe>>>0){A=B-d>>1,A=A|0?A:1,Ty(oe,A,A>>>2,n[Te+16>>2]|0),n[Ye>>2]=n[M>>2],n[Le>>2]=n[L>>2],n[k>>2]=n[Ye>>2],n[q>>2]=n[Le>>2],X1(oe,k,q),A=n[Te>>2]|0,n[Te>>2]=n[oe>>2],n[oe>>2]=A,A=oe+4|0,Xe=n[M>>2]|0,n[M>>2]=n[A>>2],n[A>>2]=Xe,A=oe+8|0,Xe=n[L>>2]|0,n[L>>2]=n[A>>2],n[A>>2]=Xe,A=oe+12|0,Xe=n[m>>2]|0,n[m>>2]=n[A>>2],n[A>>2]=Xe,Fy(oe),A=n[L>>2]|0;break}m=A,B=((m-d>>2)+1|0)/-2|0,k=A+(B<<2)|0,d=R-m|0,m=d>>2,m&&(BB(k|0,A|0,d|0)|0,A=n[M>>2]|0),Xe=k+(m<<2)|0,n[L>>2]=Xe,n[M>>2]=A+(B<<2),A=Xe}while(!1);n[A>>2]=n[u>>2],n[L>>2]=(n[L>>2]|0)+4,l=hP(o,Te,l)|0,Fy(Te)}while(!1);return I=nt,l|0}function Oe(o){o=o|0;var l=0;do{if(l=o+984|0,s[l>>0]|0)break;s[l>>0]=1,h[o+504>>2]=y(ae),o=n[o+944>>2]|0}while(o|0)}function mt(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-4-A|0)>>>2)<<2)),It(u))}function Et(o){return o=o|0,n[o+944>>2]|0}function bt(o){o=o|0,Bi(o,(n[o+964>>2]|0)!=0,2832),Oe(o)}function tr(o){return o=o|0,(s[o+984>>0]|0)!=0|0}function pn(o,l){o=o|0,l=l|0,K8e(o,l,400)|0&&(Qr(o|0,l|0,400)|0,Oe(o))}function ci(o){o=o|0;var l=$e;return l=y(h[o+44>>2]),o=Mt(l)|0,y(o?y(0):l)}function qi(o){o=o|0;var l=$e;return l=y(h[o+48>>2]),Mt(l)|0&&(l=s[(n[o+976>>2]|0)+2>>0]|0?y(1):y(0)),y(l)}function Fn(o,l){o=o|0,l=l|0,n[o+980>>2]=l}function Ja(o){return o=o|0,n[o+980>>2]|0}function Iy(o,l){o=o|0,l=l|0;var u=0;u=o+4|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function q1(o){return o=o|0,n[o+4>>2]|0}function xo(o,l){o=o|0,l=l|0;var u=0;u=o+8|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Cy(o){return o=o|0,n[o+8>>2]|0}function mh(o,l){o=o|0,l=l|0;var u=0;u=o+12|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function W1(o){return o=o|0,n[o+12>>2]|0}function ko(o,l){o=o|0,l=l|0;var u=0;u=o+16|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function yh(o){return o=o|0,n[o+16>>2]|0}function Eh(o,l){o=o|0,l=l|0;var u=0;u=o+20|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Au(o){return o=o|0,n[o+20>>2]|0}function Ih(o,l){o=o|0,l=l|0;var u=0;u=o+24|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Rg(o){return o=o|0,n[o+24>>2]|0}function Tg(o,l){o=o|0,l=l|0;var u=0;u=o+28|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Fg(o){return o=o|0,n[o+28>>2]|0}function wy(o,l){o=o|0,l=l|0;var u=0;u=o+32|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function yf(o){return o=o|0,n[o+32>>2]|0}function Qo(o,l){o=o|0,l=l|0;var u=0;u=o+36|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Ql(o){return o=o|0,n[o+36>>2]|0}function Ch(o,l){o=o|0,l=y(l);var u=0;u=o+40|0,y(h[u>>2])!=l&&(h[u>>2]=l,Oe(o))}function Ng(o,l){o=o|0,l=y(l);var u=0;u=o+44|0,y(h[u>>2])!=l&&(h[u>>2]=l,Oe(o))}function Rl(o,l){o=o|0,l=y(l);var u=0;u=o+48|0,y(h[u>>2])!=l&&(h[u>>2]=l,Oe(o))}function Tl(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+52|0,d=o+56|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function By(o,l){o=o|0,l=y(l);var u=0,A=0;A=o+52|0,u=o+56|0,y(h[A>>2])==l&&(n[u>>2]|0)==2||(h[A>>2]=l,A=Mt(l)|0,n[u>>2]=A?3:2,Oe(o))}function _A(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+52|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function vy(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=(m^1)&1,d=o+132+(l<<3)|0,l=o+132+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function Sy(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=m?0:2,d=o+132+(l<<3)|0,l=o+132+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function HA(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=l+132+(u<<3)|0,l=n[A+4>>2]|0,u=o,n[u>>2]=n[A>>2],n[u+4>>2]=l}function jA(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=(m^1)&1,d=o+60+(l<<3)|0,l=o+60+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function W(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=m?0:2,d=o+60+(l<<3)|0,l=o+60+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function xt(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=l+60+(u<<3)|0,l=n[A+4>>2]|0,u=o,n[u>>2]=n[A>>2],n[u+4>>2]=l}function GA(o,l){o=o|0,l=l|0;var u=0;u=o+60+(l<<3)+4|0,(n[u>>2]|0)!=3&&(h[o+60+(l<<3)>>2]=y(ae),n[u>>2]=3,Oe(o))}function Ro(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=(m^1)&1,d=o+204+(l<<3)|0,l=o+204+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function Ef(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=m?0:2,d=o+204+(l<<3)|0,l=o+204+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function yt(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=l+204+(u<<3)|0,l=n[A+4>>2]|0,u=o,n[u>>2]=n[A>>2],n[u+4>>2]=l}function pu(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=(m^1)&1,d=o+276+(l<<3)|0,l=o+276+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function Dy(o,l){return o=o|0,l=l|0,y(h[o+276+(l<<3)>>2])}function Og(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+348|0,d=o+352|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function V1(o,l){o=o|0,l=y(l);var u=0,A=0;A=o+348|0,u=o+352|0,y(h[A>>2])==l&&(n[u>>2]|0)==2||(h[A>>2]=l,A=Mt(l)|0,n[u>>2]=A?3:2,Oe(o))}function wh(o){o=o|0;var l=0;l=o+352|0,(n[l>>2]|0)!=3&&(h[o+348>>2]=y(ae),n[l>>2]=3,Oe(o))}function ur(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+348|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function zi(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+356|0,d=o+360|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function If(o,l){o=o|0,l=y(l);var u=0,A=0;A=o+356|0,u=o+360|0,y(h[A>>2])==l&&(n[u>>2]|0)==2||(h[A>>2]=l,A=Mt(l)|0,n[u>>2]=A?3:2,Oe(o))}function za(o){o=o|0;var l=0;l=o+360|0,(n[l>>2]|0)!=3&&(h[o+356>>2]=y(ae),n[l>>2]=3,Oe(o))}function Lg(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+356|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function hu(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+364|0,d=o+368|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function Cf(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=m?0:2,A=o+364|0,d=o+368|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function wt(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+364|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function mi(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+372|0,d=o+376|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function qA(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=m?0:2,A=o+372|0,d=o+376|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function Za(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+372|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function da(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+380|0,d=o+384|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function Xa(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=m?0:2,A=o+380|0,d=o+384|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function Mg(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+380|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function Bh(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+388|0,d=o+392|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function Ug(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=m?0:2,A=o+388|0,d=o+392|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function by(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+388|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function WA(o,l){o=o|0,l=y(l);var u=0;u=o+396|0,y(h[u>>2])!=l&&(h[u>>2]=l,Oe(o))}function _g(o){return o=o|0,y(h[o+396>>2])}function gu(o){return o=o|0,y(h[o+400>>2])}function du(o){return o=o|0,y(h[o+404>>2])}function wf(o){return o=o|0,y(h[o+408>>2])}function Os(o){return o=o|0,y(h[o+412>>2])}function mu(o){return o=o|0,y(h[o+416>>2])}function qn(o){return o=o|0,y(h[o+420>>2])}function ss(o,l){switch(o=o|0,l=l|0,Bi(o,(l|0)<6,2918),l|0){case 0:{l=(n[o+496>>2]|0)==2?5:4;break}case 2:{l=(n[o+496>>2]|0)==2?4:5;break}default:}return y(h[o+424+(l<<2)>>2])}function Pi(o,l){switch(o=o|0,l=l|0,Bi(o,(l|0)<6,2918),l|0){case 0:{l=(n[o+496>>2]|0)==2?5:4;break}case 2:{l=(n[o+496>>2]|0)==2?4:5;break}default:}return y(h[o+448+(l<<2)>>2])}function VA(o,l){switch(o=o|0,l=l|0,Bi(o,(l|0)<6,2918),l|0){case 0:{l=(n[o+496>>2]|0)==2?5:4;break}case 2:{l=(n[o+496>>2]|0)==2?4:5;break}default:}return y(h[o+472+(l<<2)>>2])}function Bf(o,l){o=o|0,l=l|0;var u=0,A=$e;return u=n[o+4>>2]|0,(u|0)==(n[l+4>>2]|0)?u?(A=y(h[o>>2]),o=y(ce(y(A-y(h[l>>2]))))>2]=0,n[A+4>>2]=0,n[A+8>>2]=0,au(A|0,o|0,l|0,0),Fo(o,3,(s[A+11>>0]|0)<0?n[A>>2]|0:A,u),mHe(A),I=u}function os(o,l,u,A){o=y(o),l=y(l),u=u|0,A=A|0;var d=$e;o=y(o*l),d=y(KM(o,y(1)));do if(yn(d,y(0))|0)o=y(o-d);else{if(o=y(o-d),yn(d,y(1))|0){o=y(o+y(1));break}if(u){o=y(o+y(1));break}A||(d>y(.5)?d=y(1):(A=yn(d,y(.5))|0,d=y(A?1:0)),o=y(o+d))}while(!1);return y(o/l)}function Fl(o,l,u,A,d,m,B,k,R,M,L,q,oe){o=o|0,l=y(l),u=u|0,A=y(A),d=d|0,m=y(m),B=B|0,k=y(k),R=y(R),M=y(M),L=y(L),q=y(q),oe=oe|0;var Ye=0,Le=$e,Te=$e,nt=$e,Xe=$e,ft=$e,He=$e;return R>2]),Le!=y(0))?(nt=y(os(l,Le,0,0)),Xe=y(os(A,Le,0,0)),Te=y(os(m,Le,0,0)),Le=y(os(k,Le,0,0))):(Te=m,nt=l,Le=k,Xe=A),(d|0)==(o|0)?Ye=yn(Te,nt)|0:Ye=0,(B|0)==(u|0)?oe=yn(Le,Xe)|0:oe=0,!Ye&&(ft=y(l-L),!(To(o,ft,R)|0))&&!(vf(o,ft,d,R)|0)?Ye=Sf(o,ft,d,m,R)|0:Ye=1,!oe&&(He=y(A-q),!(To(u,He,M)|0))&&!(vf(u,He,B,M)|0)?oe=Sf(u,He,B,k,M)|0:oe=1,oe=Ye&oe),oe|0}function To(o,l,u){return o=o|0,l=y(l),u=y(u),(o|0)==1?o=yn(l,u)|0:o=0,o|0}function vf(o,l,u,A){return o=o|0,l=y(l),u=u|0,A=y(A),(o|0)==2&(u|0)==0?l>=A?o=1:o=yn(l,A)|0:o=0,o|0}function Sf(o,l,u,A,d){return o=o|0,l=y(l),u=u|0,A=y(A),d=y(d),(o|0)==2&(u|0)==2&A>l?d<=l?o=1:o=yn(l,d)|0:o=0,o|0}function Nl(o,l,u,A,d,m,B,k,R,M,L){o=o|0,l=y(l),u=y(u),A=A|0,d=d|0,m=m|0,B=y(B),k=y(k),R=R|0,M=M|0,L=L|0;var q=0,oe=0,Ye=0,Le=0,Te=$e,nt=$e,Xe=0,ft=0,He=0,Ve=0,Lt=0,Gr=0,fr=0,$t=0,Rr=0,Hr=0,cr=0,jn=$e,Lo=$e,Mo=$e,Uo=0,il=0;cr=I,I=I+160|0,$t=cr+152|0,fr=cr+120|0,Gr=cr+104|0,He=cr+72|0,Le=cr+56|0,Lt=cr+8|0,ft=cr,Ve=(n[2279]|0)+1|0,n[2279]=Ve,Rr=o+984|0,s[Rr>>0]|0&&(n[o+512>>2]|0)!=(n[2278]|0)?Xe=4:(n[o+516>>2]|0)==(A|0)?Hr=0:Xe=4,(Xe|0)==4&&(n[o+520>>2]=0,n[o+924>>2]=-1,n[o+928>>2]=-1,h[o+932>>2]=y(-1),h[o+936>>2]=y(-1),Hr=1);e:do if(n[o+964>>2]|0)if(Te=y(En(o,2,B)),nt=y(En(o,0,B)),q=o+916|0,Mo=y(h[q>>2]),Lo=y(h[o+920>>2]),jn=y(h[o+932>>2]),Fl(d,l,m,u,n[o+924>>2]|0,Mo,n[o+928>>2]|0,Lo,jn,y(h[o+936>>2]),Te,nt,L)|0)Xe=22;else if(Ye=n[o+520>>2]|0,!Ye)Xe=21;else for(oe=0;;){if(q=o+524+(oe*24|0)|0,jn=y(h[q>>2]),Lo=y(h[o+524+(oe*24|0)+4>>2]),Mo=y(h[o+524+(oe*24|0)+16>>2]),Fl(d,l,m,u,n[o+524+(oe*24|0)+8>>2]|0,jn,n[o+524+(oe*24|0)+12>>2]|0,Lo,Mo,y(h[o+524+(oe*24|0)+20>>2]),Te,nt,L)|0){Xe=22;break e}if(oe=oe+1|0,oe>>>0>=Ye>>>0){Xe=21;break}}else{if(R){if(q=o+916|0,!(yn(y(h[q>>2]),l)|0)){Xe=21;break}if(!(yn(y(h[o+920>>2]),u)|0)){Xe=21;break}if((n[o+924>>2]|0)!=(d|0)){Xe=21;break}q=(n[o+928>>2]|0)==(m|0)?q:0,Xe=22;break}if(Ye=n[o+520>>2]|0,!Ye)Xe=21;else for(oe=0;;){if(q=o+524+(oe*24|0)|0,yn(y(h[q>>2]),l)|0&&yn(y(h[o+524+(oe*24|0)+4>>2]),u)|0&&(n[o+524+(oe*24|0)+8>>2]|0)==(d|0)&&(n[o+524+(oe*24|0)+12>>2]|0)==(m|0)){Xe=22;break e}if(oe=oe+1|0,oe>>>0>=Ye>>>0){Xe=21;break}}}while(!1);do if((Xe|0)==21)s[11697]|0?(q=0,Xe=28):(q=0,Xe=31);else if((Xe|0)==22){if(oe=(s[11697]|0)!=0,!((q|0)!=0&(Hr^1)))if(oe){Xe=28;break}else{Xe=31;break}Le=q+16|0,n[o+908>>2]=n[Le>>2],Ye=q+20|0,n[o+912>>2]=n[Ye>>2],(s[11698]|0)==0|oe^1||(n[ft>>2]=yu(Ve)|0,n[ft+4>>2]=Ve,Fo(o,4,2972,ft),oe=n[o+972>>2]|0,oe|0&&sp[oe&127](o),d=ma(d,R)|0,m=ma(m,R)|0,il=+y(h[Le>>2]),Uo=+y(h[Ye>>2]),n[Lt>>2]=d,n[Lt+4>>2]=m,E[Lt+8>>3]=+l,E[Lt+16>>3]=+u,E[Lt+24>>3]=il,E[Lt+32>>3]=Uo,n[Lt+40>>2]=M,Fo(o,4,2989,Lt))}while(!1);return(Xe|0)==28&&(oe=yu(Ve)|0,n[Le>>2]=oe,n[Le+4>>2]=Ve,n[Le+8>>2]=Hr?3047:11699,Fo(o,4,3038,Le),oe=n[o+972>>2]|0,oe|0&&sp[oe&127](o),Lt=ma(d,R)|0,Xe=ma(m,R)|0,n[He>>2]=Lt,n[He+4>>2]=Xe,E[He+8>>3]=+l,E[He+16>>3]=+u,n[He+24>>2]=M,Fo(o,4,3049,He),Xe=31),(Xe|0)==31&&(Ls(o,l,u,A,d,m,B,k,R,L),s[11697]|0&&(oe=n[2279]|0,Lt=yu(oe)|0,n[Gr>>2]=Lt,n[Gr+4>>2]=oe,n[Gr+8>>2]=Hr?3047:11699,Fo(o,4,3083,Gr),oe=n[o+972>>2]|0,oe|0&&sp[oe&127](o),Lt=ma(d,R)|0,Gr=ma(m,R)|0,Uo=+y(h[o+908>>2]),il=+y(h[o+912>>2]),n[fr>>2]=Lt,n[fr+4>>2]=Gr,E[fr+8>>3]=Uo,E[fr+16>>3]=il,n[fr+24>>2]=M,Fo(o,4,3092,fr)),n[o+516>>2]=A,q||(oe=o+520|0,q=n[oe>>2]|0,(q|0)==16&&(s[11697]|0&&Fo(o,4,3124,$t),n[oe>>2]=0,q=0),R?q=o+916|0:(n[oe>>2]=q+1,q=o+524+(q*24|0)|0),h[q>>2]=l,h[q+4>>2]=u,n[q+8>>2]=d,n[q+12>>2]=m,n[q+16>>2]=n[o+908>>2],n[q+20>>2]=n[o+912>>2],q=0)),R&&(n[o+416>>2]=n[o+908>>2],n[o+420>>2]=n[o+912>>2],s[o+985>>0]=1,s[Rr>>0]=0),n[2279]=(n[2279]|0)+-1,n[o+512>>2]=n[2278],I=cr,Hr|(q|0)==0|0}function En(o,l,u){o=o|0,l=l|0,u=y(u);var A=$e;return A=y(J(o,l,u)),y(A+y(re(o,l,u)))}function Fo(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=I,I=I+16|0,d=m,n[d>>2]=A,o?A=n[o+976>>2]|0:A=0,Dh(A,o,l,u,d),I=m}function yu(o){return o=o|0,(o>>>0>60?3201:3201+(60-o)|0)|0}function ma(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;return d=I,I=I+32|0,u=d+12|0,A=d,n[u>>2]=n[254],n[u+4>>2]=n[255],n[u+8>>2]=n[256],n[A>>2]=n[257],n[A+4>>2]=n[258],n[A+8>>2]=n[259],(o|0)>2?o=11699:o=n[(l?A:u)+(o<<2)>>2]|0,I=d,o|0}function Ls(o,l,u,A,d,m,B,k,R,M){o=o|0,l=y(l),u=y(u),A=A|0,d=d|0,m=m|0,B=y(B),k=y(k),R=R|0,M=M|0;var L=0,q=0,oe=0,Ye=0,Le=$e,Te=$e,nt=$e,Xe=$e,ft=$e,He=$e,Ve=$e,Lt=0,Gr=0,fr=0,$t=$e,Rr=$e,Hr=0,cr=$e,jn=0,Lo=0,Mo=0,Uo=0,il=0,Gh=0,qh=0,dc=0,Wh=0,Nf=0,Of=0,Vh=0,Yh=0,Kh=0,ln=0,mc=0,Jh=0,Du=0,zh=$e,Zh=$e,Lf=$e,Mf=$e,bu=$e,Ao=0,Gl=0,Ca=0,yc=0,ap=0,lp=$e,Uf=$e,cp=$e,up=$e,po=$e,Hs=$e,Ec=0,Vn=$e,fp=$e,_o=$e,Pu=$e,Ho=$e,xu=$e,Ap=0,pp=0,ku=$e,ho=$e,Ic=0,hp=0,gp=0,dp=0,Nr=$e,fi=0,js=0,jo=0,go=0,Mr=0,Ar=0,Cc=0,zt=$e,mp=0,vi=0;Cc=I,I=I+16|0,Ao=Cc+12|0,Gl=Cc+8|0,Ca=Cc+4|0,yc=Cc,Bi(o,(d|0)==0|(Mt(l)|0)^1,3326),Bi(o,(m|0)==0|(Mt(u)|0)^1,3406),js=pt(o,A)|0,n[o+496>>2]=js,Mr=dr(2,js)|0,Ar=dr(0,js)|0,h[o+440>>2]=y(J(o,Mr,B)),h[o+444>>2]=y(re(o,Mr,B)),h[o+428>>2]=y(J(o,Ar,B)),h[o+436>>2]=y(re(o,Ar,B)),h[o+464>>2]=y(vr(o,Mr)),h[o+468>>2]=y(_n(o,Mr)),h[o+452>>2]=y(vr(o,Ar)),h[o+460>>2]=y(_n(o,Ar)),h[o+488>>2]=y(yi(o,Mr,B)),h[o+492>>2]=y(vs(o,Mr,B)),h[o+476>>2]=y(yi(o,Ar,B)),h[o+484>>2]=y(vs(o,Ar,B));do if(n[o+964>>2]|0)JA(o,l,u,d,m,B,k);else{if(jo=o+948|0,go=(n[o+952>>2]|0)-(n[jo>>2]|0)>>2,!go){lP(o,l,u,d,m,B,k);break}if(!R&&Y1(o,l,u,d,m,B,k)|0)break;ee(o),mc=o+508|0,s[mc>>0]=0,Mr=dr(n[o+4>>2]|0,js)|0,Ar=ky(Mr,js)|0,fi=ge(Mr)|0,Jh=n[o+8>>2]|0,hp=o+28|0,Du=(n[hp>>2]|0)!=0,Ho=fi?B:k,ku=fi?k:B,zh=y(Ph(o,Mr,B)),Zh=y(K1(o,Mr,B)),Le=y(Ph(o,Ar,B)),xu=y($a(o,Mr,B)),ho=y($a(o,Ar,B)),fr=fi?d:m,Ic=fi?m:d,Nr=fi?xu:ho,ft=fi?ho:xu,Pu=y(En(o,2,B)),Xe=y(En(o,0,B)),Te=y(y(Xr(o+364|0,B))-Nr),nt=y(y(Xr(o+380|0,B))-Nr),He=y(y(Xr(o+372|0,k))-ft),Ve=y(y(Xr(o+388|0,k))-ft),Lf=fi?Te:He,Mf=fi?nt:Ve,Pu=y(l-Pu),l=y(Pu-Nr),Mt(l)|0?Nr=l:Nr=y(ri(y(fd(l,nt)),Te)),fp=y(u-Xe),l=y(fp-ft),Mt(l)|0?_o=l:_o=y(ri(y(fd(l,Ve)),He)),Te=fi?Nr:_o,Vn=fi?_o:Nr;e:do if((fr|0)==1)for(A=0,q=0;;){if(L=Bs(o,q)|0,!A)y(zA(L))>y(0)&&y(xh(L))>y(0)?A=L:A=0;else if(J1(L)|0){Ye=0;break e}if(q=q+1|0,q>>>0>=go>>>0){Ye=A;break}}else Ye=0;while(!1);Lt=Ye+500|0,Gr=Ye+504|0,A=0,L=0,l=y(0),oe=0;do{if(q=n[(n[jo>>2]|0)+(oe<<2)>>2]|0,(n[q+36>>2]|0)==1)Qy(q),s[q+985>>0]=1,s[q+984>>0]=0;else{Df(q),R&&Sh(q,pt(q,js)|0,Te,Vn,Nr);do if((n[q+24>>2]|0)!=1)if((q|0)==(Ye|0)){n[Lt>>2]=n[2278],h[Gr>>2]=y(0);break}else{cP(o,q,Nr,d,_o,Nr,_o,m,js,M);break}else L|0&&(n[L+960>>2]=q),n[q+960>>2]=0,L=q,A=A|0?A:q;while(!1);Hs=y(h[q+504>>2]),l=y(l+y(Hs+y(En(q,Mr,Nr))))}oe=oe+1|0}while((oe|0)!=(go|0));for(Mo=l>Te,Ec=Du&((fr|0)==2&Mo)?1:fr,jn=(Ic|0)==1,il=jn&(R^1),Gh=(Ec|0)==1,qh=(Ec|0)==2,dc=976+(Mr<<2)|0,Wh=(Ic|2|0)==2,Kh=jn&(Du^1),Nf=1040+(Ar<<2)|0,Of=1040+(Mr<<2)|0,Vh=976+(Ar<<2)|0,Yh=(Ic|0)!=1,Mo=Du&((fr|0)!=0&Mo),Lo=o+976|0,jn=jn^1,l=Te,Hr=0,Uo=0,Hs=y(0),bu=y(0);;){e:do if(Hr>>>0>>0)for(Gr=n[jo>>2]|0,oe=0,Ve=y(0),He=y(0),nt=y(0),Te=y(0),q=0,L=0,Ye=Hr;;){if(Lt=n[Gr+(Ye<<2)>>2]|0,(n[Lt+36>>2]|0)!=1&&(n[Lt+940>>2]=Uo,(n[Lt+24>>2]|0)!=1)){if(Xe=y(En(Lt,Mr,Nr)),ln=n[dc>>2]|0,u=y(Xr(Lt+380+(ln<<3)|0,Ho)),ft=y(h[Lt+504>>2]),u=y(fd(u,ft)),u=y(ri(y(Xr(Lt+364+(ln<<3)|0,Ho)),u)),Du&(oe|0)!=0&y(Xe+y(He+u))>l){m=oe,Xe=Ve,fr=Ye;break e}Xe=y(Xe+u),u=y(He+Xe),Xe=y(Ve+Xe),J1(Lt)|0&&(nt=y(nt+y(zA(Lt))),Te=y(Te-y(ft*y(xh(Lt))))),L|0&&(n[L+960>>2]=Lt),n[Lt+960>>2]=0,oe=oe+1|0,L=Lt,q=q|0?q:Lt}else Xe=Ve,u=He;if(Ye=Ye+1|0,Ye>>>0>>0)Ve=Xe,He=u;else{m=oe,fr=Ye;break}}else m=0,Xe=y(0),nt=y(0),Te=y(0),q=0,fr=Hr;while(!1);ln=nt>y(0)&nty(0)&TeMf&((Mt(Mf)|0)^1))l=Mf,ln=51;else if(s[(n[Lo>>2]|0)+3>>0]|0)ln=51;else{if($t!=y(0)&&y(zA(o))!=y(0)){ln=53;break}l=Xe,ln=53}while(!1);if((ln|0)==51&&(ln=0,Mt(l)|0?ln=53:(Rr=y(l-Xe),cr=l)),(ln|0)==53&&(ln=0,Xe>2]|0,Ye=Rry(0),He=y(Rr/$t),nt=y(0),Xe=y(0),l=y(0),L=q;do u=y(Xr(L+380+(oe<<3)|0,Ho)),Te=y(Xr(L+364+(oe<<3)|0,Ho)),Te=y(fd(u,y(ri(Te,y(h[L+504>>2]))))),Ye?(u=y(Te*y(xh(L))),u!=y(-0)&&(zt=y(Te-y(ft*u)),lp=y(Wn(L,Mr,zt,cr,Nr)),zt!=lp)&&(nt=y(nt-y(lp-Te)),l=y(l+u))):Lt&&(Uf=y(zA(L)),Uf!=y(0))&&(zt=y(Te+y(He*Uf)),cp=y(Wn(L,Mr,zt,cr,Nr)),zt!=cp)&&(nt=y(nt-y(cp-Te)),Xe=y(Xe-Uf)),L=n[L+960>>2]|0;while(L|0);if(l=y(Ve+l),Te=y(Rr+nt),ap)l=y(0);else{ft=y($t+Xe),Ye=n[dc>>2]|0,Lt=Tey(0),ft=y(Te/ft),l=y(0);do{zt=y(Xr(q+380+(Ye<<3)|0,Ho)),nt=y(Xr(q+364+(Ye<<3)|0,Ho)),nt=y(fd(zt,y(ri(nt,y(h[q+504>>2]))))),Lt?(zt=y(nt*y(xh(q))),Te=y(-zt),zt!=y(-0)?(zt=y(He*Te),Te=y(Wn(q,Mr,y(nt+(Gr?Te:zt)),cr,Nr))):Te=nt):oe&&(up=y(zA(q)),up!=y(0))?Te=y(Wn(q,Mr,y(nt+y(ft*up)),cr,Nr)):Te=nt,l=y(l-y(Te-nt)),Xe=y(En(q,Mr,Nr)),u=y(En(q,Ar,Nr)),Te=y(Te+Xe),h[Gl>>2]=Te,n[yc>>2]=1,nt=y(h[q+396>>2]);e:do if(Mt(nt)|0){L=Mt(Vn)|0;do if(!L){if(Mo|(uo(q,Ar,Vn)|0|jn)||(as(o,q)|0)!=4||(n[(Ol(q,Ar)|0)+4>>2]|0)==3||(n[(Ll(q,Ar)|0)+4>>2]|0)==3)break;h[Ao>>2]=Vn,n[Ca>>2]=1;break e}while(!1);if(uo(q,Ar,Vn)|0){L=n[q+992+(n[Vh>>2]<<2)>>2]|0,zt=y(u+y(Xr(L,Vn))),h[Ao>>2]=zt,L=Yh&(n[L+4>>2]|0)==2,n[Ca>>2]=((Mt(zt)|0|L)^1)&1;break}else{h[Ao>>2]=Vn,n[Ca>>2]=L?0:2;break}}else zt=y(Te-Xe),$t=y(zt/nt),zt=y(nt*zt),n[Ca>>2]=1,h[Ao>>2]=y(u+(fi?$t:zt));while(!1);Eu(q,Mr,cr,Nr,yc,Gl),Eu(q,Ar,Vn,Nr,Ca,Ao);do if(!(uo(q,Ar,Vn)|0)&&(as(o,q)|0)==4){if((n[(Ol(q,Ar)|0)+4>>2]|0)==3){L=0;break}L=(n[(Ll(q,Ar)|0)+4>>2]|0)!=3}else L=0;while(!1);zt=y(h[Gl>>2]),$t=y(h[Ao>>2]),mp=n[yc>>2]|0,vi=n[Ca>>2]|0,Nl(q,fi?zt:$t,fi?$t:zt,js,fi?mp:vi,fi?vi:mp,Nr,_o,R&(L^1),3488,M)|0,s[mc>>0]=s[mc>>0]|s[q+508>>0],q=n[q+960>>2]|0}while(q|0)}}else l=y(0);if(l=y(Rr+l),vi=l>0]=vi|c[mc>>0],qh&l>y(0)?(L=n[dc>>2]|0,n[o+364+(L<<3)+4>>2]|0&&(po=y(Xr(o+364+(L<<3)|0,Ho)),po>=y(0))?Te=y(ri(y(0),y(po-y(cr-l)))):Te=y(0)):Te=l,Lt=Hr>>>0>>0,Lt){Ye=n[jo>>2]|0,oe=Hr,L=0;do q=n[Ye+(oe<<2)>>2]|0,n[q+24>>2]|0||(L=((n[(Ol(q,Mr)|0)+4>>2]|0)==3&1)+L|0,L=L+((n[(Ll(q,Mr)|0)+4>>2]|0)==3&1)|0),oe=oe+1|0;while((oe|0)!=(fr|0));L?(Xe=y(0),u=y(0)):ln=101}else ln=101;e:do if((ln|0)==101)switch(ln=0,Jh|0){case 1:{L=0,Xe=y(Te*y(.5)),u=y(0);break e}case 2:{L=0,Xe=Te,u=y(0);break e}case 3:{if(m>>>0<=1){L=0,Xe=y(0),u=y(0);break e}u=y((m+-1|0)>>>0),L=0,Xe=y(0),u=y(y(ri(Te,y(0)))/u);break e}case 5:{u=y(Te/y((m+1|0)>>>0)),L=0,Xe=u;break e}case 4:{u=y(Te/y(m>>>0)),L=0,Xe=y(u*y(.5));break e}default:{L=0,Xe=y(0),u=y(0);break e}}while(!1);if(l=y(zh+Xe),Lt){nt=y(Te/y(L|0)),oe=n[jo>>2]|0,q=Hr,Te=y(0);do{L=n[oe+(q<<2)>>2]|0;e:do if((n[L+36>>2]|0)!=1){switch(n[L+24>>2]|0){case 1:{if(ya(L,Mr)|0){if(!R)break e;zt=y(ZA(L,Mr,cr)),zt=y(zt+y(vr(o,Mr))),zt=y(zt+y(J(L,Mr,Nr))),h[L+400+(n[Of>>2]<<2)>>2]=zt;break e}break}case 0:if(vi=(n[(Ol(L,Mr)|0)+4>>2]|0)==3,zt=y(nt+l),l=vi?zt:l,R&&(vi=L+400+(n[Of>>2]<<2)|0,h[vi>>2]=y(l+y(h[vi>>2]))),vi=(n[(Ll(L,Mr)|0)+4>>2]|0)==3,zt=y(nt+l),l=vi?zt:l,il){zt=y(u+y(En(L,Mr,Nr))),Te=Vn,l=y(l+y(zt+y(h[L+504>>2])));break e}else{l=y(l+y(u+y(XA(L,Mr,Nr)))),Te=y(ri(Te,y(XA(L,Ar,Nr))));break e}default:}R&&(zt=y(Xe+y(vr(o,Mr))),vi=L+400+(n[Of>>2]<<2)|0,h[vi>>2]=y(zt+y(h[vi>>2])))}while(!1);q=q+1|0}while((q|0)!=(fr|0))}else Te=y(0);if(u=y(Zh+l),Wh?Xe=y(y(Wn(o,Ar,y(ho+Te),ku,B))-ho):Xe=Vn,nt=y(y(Wn(o,Ar,y(ho+(Kh?Vn:Te)),ku,B))-ho),Lt&R){q=Hr;do{oe=n[(n[jo>>2]|0)+(q<<2)>>2]|0;do if((n[oe+36>>2]|0)!=1){if((n[oe+24>>2]|0)==1){if(ya(oe,Ar)|0){if(zt=y(ZA(oe,Ar,Vn)),zt=y(zt+y(vr(o,Ar))),zt=y(zt+y(J(oe,Ar,Nr))),L=n[Nf>>2]|0,h[oe+400+(L<<2)>>2]=zt,!(Mt(zt)|0))break}else L=n[Nf>>2]|0;zt=y(vr(o,Ar)),h[oe+400+(L<<2)>>2]=y(zt+y(J(oe,Ar,Nr)));break}L=as(o,oe)|0;do if((L|0)==4){if((n[(Ol(oe,Ar)|0)+4>>2]|0)==3){ln=139;break}if((n[(Ll(oe,Ar)|0)+4>>2]|0)==3){ln=139;break}if(uo(oe,Ar,Vn)|0){l=Le;break}mp=n[oe+908+(n[dc>>2]<<2)>>2]|0,n[Ao>>2]=mp,l=y(h[oe+396>>2]),vi=Mt(l)|0,Te=(n[S>>2]=mp,y(h[S>>2])),vi?l=nt:(Rr=y(En(oe,Ar,Nr)),zt=y(Te/l),l=y(l*Te),l=y(Rr+(fi?zt:l))),h[Gl>>2]=l,h[Ao>>2]=y(y(En(oe,Mr,Nr))+Te),n[Ca>>2]=1,n[yc>>2]=1,Eu(oe,Mr,cr,Nr,Ca,Ao),Eu(oe,Ar,Vn,Nr,yc,Gl),l=y(h[Ao>>2]),Rr=y(h[Gl>>2]),zt=fi?l:Rr,l=fi?Rr:l,vi=((Mt(zt)|0)^1)&1,Nl(oe,zt,l,js,vi,((Mt(l)|0)^1)&1,Nr,_o,1,3493,M)|0,l=Le}else ln=139;while(!1);e:do if((ln|0)==139){ln=0,l=y(Xe-y(XA(oe,Ar,Nr)));do if((n[(Ol(oe,Ar)|0)+4>>2]|0)==3){if((n[(Ll(oe,Ar)|0)+4>>2]|0)!=3)break;l=y(Le+y(ri(y(0),y(l*y(.5)))));break e}while(!1);if((n[(Ll(oe,Ar)|0)+4>>2]|0)==3){l=Le;break}if((n[(Ol(oe,Ar)|0)+4>>2]|0)==3){l=y(Le+y(ri(y(0),l)));break}switch(L|0){case 1:{l=Le;break e}case 2:{l=y(Le+y(l*y(.5)));break e}default:{l=y(Le+l);break e}}}while(!1);zt=y(Hs+l),vi=oe+400+(n[Nf>>2]<<2)|0,h[vi>>2]=y(zt+y(h[vi>>2]))}while(!1);q=q+1|0}while((q|0)!=(fr|0))}if(Hs=y(Hs+nt),bu=y(ri(bu,u)),m=Uo+1|0,fr>>>0>=go>>>0)break;l=cr,Hr=fr,Uo=m}do if(R){if(L=m>>>0>1,!L&&!(DL(o)|0))break;if(!(Mt(Vn)|0)){l=y(Vn-Hs);e:do switch(n[o+12>>2]|0){case 3:{Le=y(Le+l),He=y(0);break}case 2:{Le=y(Le+y(l*y(.5))),He=y(0);break}case 4:{Vn>Hs?He=y(l/y(m>>>0)):He=y(0);break}case 7:if(Vn>Hs){Le=y(Le+y(l/y(m<<1>>>0))),He=y(l/y(m>>>0)),He=L?He:y(0);break e}else{Le=y(Le+y(l*y(.5))),He=y(0);break e}case 6:{He=y(l/y(Uo>>>0)),He=Vn>Hs&L?He:y(0);break}default:He=y(0)}while(!1);if(m|0)for(Lt=1040+(Ar<<2)|0,Gr=976+(Ar<<2)|0,Ye=0,q=0;;){e:do if(q>>>0>>0)for(Te=y(0),nt=y(0),l=y(0),oe=q;;){L=n[(n[jo>>2]|0)+(oe<<2)>>2]|0;do if((n[L+36>>2]|0)!=1&&!(n[L+24>>2]|0)){if((n[L+940>>2]|0)!=(Ye|0))break e;if(bL(L,Ar)|0&&(zt=y(h[L+908+(n[Gr>>2]<<2)>>2]),l=y(ri(l,y(zt+y(En(L,Ar,Nr)))))),(as(o,L)|0)!=5)break;po=y(qg(L)),po=y(po+y(J(L,0,Nr))),zt=y(h[L+912>>2]),zt=y(y(zt+y(En(L,0,Nr)))-po),po=y(ri(nt,po)),zt=y(ri(Te,zt)),Te=zt,nt=po,l=y(ri(l,y(po+zt)))}while(!1);if(L=oe+1|0,L>>>0>>0)oe=L;else{oe=L;break}}else nt=y(0),l=y(0),oe=q;while(!1);if(ft=y(He+l),u=Le,Le=y(Le+ft),q>>>0>>0){Xe=y(u+nt),L=q;do{q=n[(n[jo>>2]|0)+(L<<2)>>2]|0;e:do if((n[q+36>>2]|0)!=1&&!(n[q+24>>2]|0))switch(as(o,q)|0){case 1:{zt=y(u+y(J(q,Ar,Nr))),h[q+400+(n[Lt>>2]<<2)>>2]=zt;break e}case 3:{zt=y(y(Le-y(re(q,Ar,Nr)))-y(h[q+908+(n[Gr>>2]<<2)>>2])),h[q+400+(n[Lt>>2]<<2)>>2]=zt;break e}case 2:{zt=y(u+y(y(ft-y(h[q+908+(n[Gr>>2]<<2)>>2]))*y(.5))),h[q+400+(n[Lt>>2]<<2)>>2]=zt;break e}case 4:{if(zt=y(u+y(J(q,Ar,Nr))),h[q+400+(n[Lt>>2]<<2)>>2]=zt,uo(q,Ar,Vn)|0||(fi?(Te=y(h[q+908>>2]),l=y(Te+y(En(q,Mr,Nr))),nt=ft):(nt=y(h[q+912>>2]),nt=y(nt+y(En(q,Ar,Nr))),l=ft,Te=y(h[q+908>>2])),yn(l,Te)|0&&yn(nt,y(h[q+912>>2]))|0))break e;Nl(q,l,nt,js,1,1,Nr,_o,1,3501,M)|0;break e}case 5:{h[q+404>>2]=y(y(Xe-y(qg(q)))+y(ZA(q,0,Vn)));break e}default:break e}while(!1);L=L+1|0}while((L|0)!=(oe|0))}if(Ye=Ye+1|0,(Ye|0)==(m|0))break;q=oe}}}while(!1);if(h[o+908>>2]=y(Wn(o,2,Pu,B,B)),h[o+912>>2]=y(Wn(o,0,fp,k,B)),Ec|0&&(Ap=n[o+32>>2]|0,pp=(Ec|0)==2,!(pp&(Ap|0)!=2))?pp&(Ap|0)==2&&(l=y(xu+cr),l=y(ri(y(fd(l,y(Wg(o,Mr,bu,Ho)))),xu)),ln=198):(l=y(Wn(o,Mr,bu,Ho,B)),ln=198),(ln|0)==198&&(h[o+908+(n[976+(Mr<<2)>>2]<<2)>>2]=l),Ic|0&&(gp=n[o+32>>2]|0,dp=(Ic|0)==2,!(dp&(gp|0)!=2))?dp&(gp|0)==2&&(l=y(ho+Vn),l=y(ri(y(fd(l,y(Wg(o,Ar,y(ho+Hs),ku)))),ho)),ln=204):(l=y(Wn(o,Ar,y(ho+Hs),ku,B)),ln=204),(ln|0)==204&&(h[o+908+(n[976+(Ar<<2)>>2]<<2)>>2]=l),R){if((n[hp>>2]|0)==2){q=976+(Ar<<2)|0,oe=1040+(Ar<<2)|0,L=0;do Ye=Bs(o,L)|0,n[Ye+24>>2]|0||(mp=n[q>>2]|0,zt=y(h[o+908+(mp<<2)>>2]),vi=Ye+400+(n[oe>>2]<<2)|0,zt=y(zt-y(h[vi>>2])),h[vi>>2]=y(zt-y(h[Ye+908+(mp<<2)>>2]))),L=L+1|0;while((L|0)!=(go|0))}if(A|0){L=fi?Ec:d;do PL(o,A,Nr,L,_o,js,M),A=n[A+960>>2]|0;while(A|0)}if(L=(Mr|2|0)==3,q=(Ar|2|0)==3,L|q){A=0;do oe=n[(n[jo>>2]|0)+(A<<2)>>2]|0,(n[oe+36>>2]|0)!=1&&(L&&z1(o,oe,Mr),q&&z1(o,oe,Ar)),A=A+1|0;while((A|0)!=(go|0))}}}while(!1);I=Cc}function vh(o,l){o=o|0,l=y(l);var u=0;Ya(o,l>=y(0),3147),u=l==y(0),h[o+4>>2]=u?y(0):l}function YA(o,l,u,A){o=o|0,l=y(l),u=y(u),A=A|0;var d=$e,m=$e,B=0,k=0,R=0;n[2278]=(n[2278]|0)+1,Df(o),uo(o,2,l)|0?(d=y(Xr(n[o+992>>2]|0,l)),R=1,d=y(d+y(En(o,2,l)))):(d=y(Xr(o+380|0,l)),d>=y(0)?R=2:(R=((Mt(l)|0)^1)&1,d=l)),uo(o,0,u)|0?(m=y(Xr(n[o+996>>2]|0,u)),k=1,m=y(m+y(En(o,0,l)))):(m=y(Xr(o+388|0,u)),m>=y(0)?k=2:(k=((Mt(u)|0)^1)&1,m=u)),B=o+976|0,Nl(o,d,m,A,R,k,l,u,1,3189,n[B>>2]|0)|0&&(Sh(o,n[o+496>>2]|0,l,u,l),KA(o,y(h[(n[B>>2]|0)+4>>2]),y(0),y(0)),s[11696]|0)&&Hg(o,7)}function Df(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0;k=I,I=I+32|0,B=k+24|0,m=k+16|0,A=k+8|0,d=k,u=0;do l=o+380+(u<<3)|0,n[o+380+(u<<3)+4>>2]|0&&(R=l,M=n[R+4>>2]|0,L=A,n[L>>2]=n[R>>2],n[L+4>>2]=M,L=o+364+(u<<3)|0,M=n[L+4>>2]|0,R=d,n[R>>2]=n[L>>2],n[R+4>>2]=M,n[m>>2]=n[A>>2],n[m+4>>2]=n[A+4>>2],n[B>>2]=n[d>>2],n[B+4>>2]=n[d+4>>2],Bf(m,B)|0)||(l=o+348+(u<<3)|0),n[o+992+(u<<2)>>2]=l,u=u+1|0;while((u|0)!=2);I=k}function uo(o,l,u){o=o|0,l=l|0,u=y(u);var A=0;switch(o=n[o+992+(n[976+(l<<2)>>2]<<2)>>2]|0,n[o+4>>2]|0){case 0:case 3:{o=0;break}case 1:{y(h[o>>2])>2])>2]|0){case 2:{l=y(y(y(h[o>>2])*l)/y(100));break}case 1:{l=y(h[o>>2]);break}default:l=y(ae)}return y(l)}function Sh(o,l,u,A,d){o=o|0,l=l|0,u=y(u),A=y(A),d=y(d);var m=0,B=$e;l=n[o+944>>2]|0?l:1,m=dr(n[o+4>>2]|0,l)|0,l=ky(m,l)|0,u=y(uP(o,m,u)),A=y(uP(o,l,A)),B=y(u+y(J(o,m,d))),h[o+400+(n[1040+(m<<2)>>2]<<2)>>2]=B,u=y(u+y(re(o,m,d))),h[o+400+(n[1e3+(m<<2)>>2]<<2)>>2]=u,u=y(A+y(J(o,l,d))),h[o+400+(n[1040+(l<<2)>>2]<<2)>>2]=u,d=y(A+y(re(o,l,d))),h[o+400+(n[1e3+(l<<2)>>2]<<2)>>2]=d}function KA(o,l,u,A){o=o|0,l=y(l),u=y(u),A=y(A);var d=0,m=0,B=$e,k=$e,R=0,M=0,L=$e,q=0,oe=$e,Ye=$e,Le=$e,Te=$e;if(l!=y(0)&&(d=o+400|0,Te=y(h[d>>2]),m=o+404|0,Le=y(h[m>>2]),q=o+416|0,Ye=y(h[q>>2]),M=o+420|0,B=y(h[M>>2]),oe=y(Te+u),L=y(Le+A),A=y(oe+Ye),k=y(L+B),R=(n[o+988>>2]|0)==1,h[d>>2]=y(os(Te,l,0,R)),h[m>>2]=y(os(Le,l,0,R)),u=y(KM(y(Ye*l),y(1))),yn(u,y(0))|0?m=0:m=(yn(u,y(1))|0)^1,u=y(KM(y(B*l),y(1))),yn(u,y(0))|0?d=0:d=(yn(u,y(1))|0)^1,Te=y(os(A,l,R&m,R&(m^1))),h[q>>2]=y(Te-y(os(oe,l,0,R))),Te=y(os(k,l,R&d,R&(d^1))),h[M>>2]=y(Te-y(os(L,l,0,R))),m=(n[o+952>>2]|0)-(n[o+948>>2]|0)>>2,m|0)){d=0;do KA(Bs(o,d)|0,l,oe,L),d=d+1|0;while((d|0)!=(m|0))}}function Py(o,l,u,A,d){switch(o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,u|0){case 5:case 0:{o=LZ(n[489]|0,A,d)|0;break}default:o=pHe(A,d)|0}return o|0}function Gg(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;d=I,I=I+16|0,m=d,n[m>>2]=A,Dh(o,0,l,u,m),I=d}function Dh(o,l,u,A,d){if(o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,o=o|0?o:956,iX[n[o+8>>2]&1](o,l,u,A,d)|0,(u|0)==5)Nt();else return}function hc(o,l,u){o=o|0,l=l|0,u=u|0,s[o+l>>0]=u&1}function xy(o,l){o=o|0,l=l|0;var u=0,A=0;n[o>>2]=0,n[o+4>>2]=0,n[o+8>>2]=0,u=l+4|0,A=(n[u>>2]|0)-(n[l>>2]|0)>>2,A|0&&(bh(o,A),kt(o,n[l>>2]|0,n[u>>2]|0,A))}function bh(o,l){o=o|0,l=l|0;var u=0;if((N(o)|0)>>>0>>0&&an(o),l>>>0>1073741823)Nt();else{u=Jt(l<<2)|0,n[o+4>>2]=u,n[o>>2]=u,n[o+8>>2]=u+(l<<2);return}}function kt(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,A=o+4|0,o=u-l|0,(o|0)>0&&(Qr(n[A>>2]|0,l|0,o|0)|0,n[A>>2]=(n[A>>2]|0)+(o>>>2<<2))}function N(o){return o=o|0,1073741823}function J(o,l,u){return o=o|0,l=l|0,u=y(u),ge(l)|0&&n[o+96>>2]|0?o=o+92|0:o=Rn(o+60|0,n[1040+(l<<2)>>2]|0,992)|0,y(Ke(o,u))}function re(o,l,u){return o=o|0,l=l|0,u=y(u),ge(l)|0&&n[o+104>>2]|0?o=o+100|0:o=Rn(o+60|0,n[1e3+(l<<2)>>2]|0,992)|0,y(Ke(o,u))}function ge(o){return o=o|0,(o|1|0)==3|0}function Ke(o,l){return o=o|0,l=y(l),(n[o+4>>2]|0)==3?l=y(0):l=y(Xr(o,l)),y(l)}function pt(o,l){return o=o|0,l=l|0,o=n[o>>2]|0,(o|0?o:(l|0)>1?l:1)|0}function dr(o,l){o=o|0,l=l|0;var u=0;e:do if((l|0)==2){switch(o|0){case 2:{o=3;break e}case 3:break;default:{u=4;break e}}o=2}else u=4;while(!1);return o|0}function vr(o,l){o=o|0,l=l|0;var u=$e;return ge(l)|0&&n[o+312>>2]|0&&(u=y(h[o+308>>2]),u>=y(0))||(u=y(ri(y(h[(Rn(o+276|0,n[1040+(l<<2)>>2]|0,992)|0)>>2]),y(0)))),y(u)}function _n(o,l){o=o|0,l=l|0;var u=$e;return ge(l)|0&&n[o+320>>2]|0&&(u=y(h[o+316>>2]),u>=y(0))||(u=y(ri(y(h[(Rn(o+276|0,n[1e3+(l<<2)>>2]|0,992)|0)>>2]),y(0)))),y(u)}function yi(o,l,u){o=o|0,l=l|0,u=y(u);var A=$e;return ge(l)|0&&n[o+240>>2]|0&&(A=y(Xr(o+236|0,u)),A>=y(0))||(A=y(ri(y(Xr(Rn(o+204|0,n[1040+(l<<2)>>2]|0,992)|0,u)),y(0)))),y(A)}function vs(o,l,u){o=o|0,l=l|0,u=y(u);var A=$e;return ge(l)|0&&n[o+248>>2]|0&&(A=y(Xr(o+244|0,u)),A>=y(0))||(A=y(ri(y(Xr(Rn(o+204|0,n[1e3+(l<<2)>>2]|0,992)|0,u)),y(0)))),y(A)}function JA(o,l,u,A,d,m,B){o=o|0,l=y(l),u=y(u),A=A|0,d=d|0,m=y(m),B=y(B);var k=$e,R=$e,M=$e,L=$e,q=$e,oe=$e,Ye=0,Le=0,Te=0;Te=I,I=I+16|0,Ye=Te,Le=o+964|0,Bi(o,(n[Le>>2]|0)!=0,3519),k=y($a(o,2,l)),R=y($a(o,0,l)),M=y(En(o,2,l)),L=y(En(o,0,l)),Mt(l)|0?q=l:q=y(ri(y(0),y(y(l-M)-k))),Mt(u)|0?oe=u:oe=y(ri(y(0),y(y(u-L)-R))),(A|0)==1&(d|0)==1?(h[o+908>>2]=y(Wn(o,2,y(l-M),m,m)),l=y(Wn(o,0,y(u-L),B,m))):(sX[n[Le>>2]&1](Ye,o,q,A,oe,d),q=y(k+y(h[Ye>>2])),oe=y(l-M),h[o+908>>2]=y(Wn(o,2,(A|2|0)==2?q:oe,m,m)),oe=y(R+y(h[Ye+4>>2])),l=y(u-L),l=y(Wn(o,0,(d|2|0)==2?oe:l,B,m))),h[o+912>>2]=l,I=Te}function lP(o,l,u,A,d,m,B){o=o|0,l=y(l),u=y(u),A=A|0,d=d|0,m=y(m),B=y(B);var k=$e,R=$e,M=$e,L=$e;M=y($a(o,2,m)),k=y($a(o,0,m)),L=y(En(o,2,m)),R=y(En(o,0,m)),l=y(l-L),h[o+908>>2]=y(Wn(o,2,(A|2|0)==2?M:l,m,m)),u=y(u-R),h[o+912>>2]=y(Wn(o,0,(d|2|0)==2?k:u,B,m))}function Y1(o,l,u,A,d,m,B){o=o|0,l=y(l),u=y(u),A=A|0,d=d|0,m=y(m),B=y(B);var k=0,R=$e,M=$e;return k=(A|0)==2,!(l<=y(0)&k)&&!(u<=y(0)&(d|0)==2)&&!((A|0)==1&(d|0)==1)?o=0:(R=y(En(o,0,m)),M=y(En(o,2,m)),k=l>2]=y(Wn(o,2,k?y(0):l,m,m)),l=y(u-R),k=u>2]=y(Wn(o,0,k?y(0):l,B,m)),o=1),o|0}function ky(o,l){return o=o|0,l=l|0,Vg(o)|0?o=dr(2,l)|0:o=0,o|0}function Ph(o,l,u){return o=o|0,l=l|0,u=y(u),u=y(yi(o,l,u)),y(u+y(vr(o,l)))}function K1(o,l,u){return o=o|0,l=l|0,u=y(u),u=y(vs(o,l,u)),y(u+y(_n(o,l)))}function $a(o,l,u){o=o|0,l=l|0,u=y(u);var A=$e;return A=y(Ph(o,l,u)),y(A+y(K1(o,l,u)))}function J1(o){return o=o|0,n[o+24>>2]|0?o=0:y(zA(o))!=y(0)?o=1:o=y(xh(o))!=y(0),o|0}function zA(o){o=o|0;var l=$e;if(n[o+944>>2]|0){if(l=y(h[o+44>>2]),Mt(l)|0)return l=y(h[o+40>>2]),o=l>y(0)&((Mt(l)|0)^1),y(o?l:y(0))}else l=y(0);return y(l)}function xh(o){o=o|0;var l=$e,u=0,A=$e;do if(n[o+944>>2]|0){if(l=y(h[o+48>>2]),Mt(l)|0){if(u=s[(n[o+976>>2]|0)+2>>0]|0,!(u<<24>>24)&&(A=y(h[o+40>>2]),A>24?y(1):y(0)}}else l=y(0);while(!1);return y(l)}function Qy(o){o=o|0;var l=0,u=0;if(nE(o+400|0,0,540)|0,s[o+985>>0]=1,ee(o),u=Mi(o)|0,u|0){l=o+948|0,o=0;do Qy(n[(n[l>>2]|0)+(o<<2)>>2]|0),o=o+1|0;while((o|0)!=(u|0))}}function cP(o,l,u,A,d,m,B,k,R,M){o=o|0,l=l|0,u=y(u),A=A|0,d=y(d),m=y(m),B=y(B),k=k|0,R=R|0,M=M|0;var L=0,q=$e,oe=0,Ye=0,Le=$e,Te=$e,nt=0,Xe=$e,ft=0,He=$e,Ve=0,Lt=0,Gr=0,fr=0,$t=0,Rr=0,Hr=0,cr=0,jn=0,Lo=0;jn=I,I=I+16|0,Gr=jn+12|0,fr=jn+8|0,$t=jn+4|0,Rr=jn,cr=dr(n[o+4>>2]|0,R)|0,Ve=ge(cr)|0,q=y(Xr(xL(l)|0,Ve?m:B)),Lt=uo(l,2,m)|0,Hr=uo(l,0,B)|0;do if(!(Mt(q)|0)&&!(Mt(Ve?u:d)|0)){if(L=l+504|0,!(Mt(y(h[L>>2]))|0)&&(!(Z1(n[l+976>>2]|0,0)|0)||(n[l+500>>2]|0)==(n[2278]|0)))break;h[L>>2]=y(ri(q,y($a(l,cr,m))))}else oe=7;while(!1);do if((oe|0)==7){if(ft=Ve^1,!(ft|Lt^1)){B=y(Xr(n[l+992>>2]|0,m)),h[l+504>>2]=y(ri(B,y($a(l,2,m))));break}if(!(Ve|Hr^1)){B=y(Xr(n[l+996>>2]|0,B)),h[l+504>>2]=y(ri(B,y($a(l,0,m))));break}h[Gr>>2]=y(ae),h[fr>>2]=y(ae),n[$t>>2]=0,n[Rr>>2]=0,Xe=y(En(l,2,m)),He=y(En(l,0,m)),Lt?(Le=y(Xe+y(Xr(n[l+992>>2]|0,m))),h[Gr>>2]=Le,n[$t>>2]=1,Ye=1):(Ye=0,Le=y(ae)),Hr?(q=y(He+y(Xr(n[l+996>>2]|0,B))),h[fr>>2]=q,n[Rr>>2]=1,L=1):(L=0,q=y(ae)),oe=n[o+32>>2]|0,Ve&(oe|0)==2?oe=2:Mt(Le)|0&&!(Mt(u)|0)&&(h[Gr>>2]=u,n[$t>>2]=2,Ye=2,Le=u),!((oe|0)==2&ft)&&Mt(q)|0&&!(Mt(d)|0)&&(h[fr>>2]=d,n[Rr>>2]=2,L=2,q=d),Te=y(h[l+396>>2]),nt=Mt(Te)|0;do if(nt)oe=Ye;else{if((Ye|0)==1&ft){h[fr>>2]=y(y(Le-Xe)/Te),n[Rr>>2]=1,L=1,oe=1;break}Ve&(L|0)==1?(h[Gr>>2]=y(Te*y(q-He)),n[$t>>2]=1,L=1,oe=1):oe=Ye}while(!1);Lo=Mt(u)|0,Ye=(as(o,l)|0)!=4,!(Ve|Lt|((A|0)!=1|Lo)|(Ye|(oe|0)==1))&&(h[Gr>>2]=u,n[$t>>2]=1,!nt)&&(h[fr>>2]=y(y(u-Xe)/Te),n[Rr>>2]=1,L=1),!(Hr|ft|((k|0)!=1|(Mt(d)|0))|(Ye|(L|0)==1))&&(h[fr>>2]=d,n[Rr>>2]=1,!nt)&&(h[Gr>>2]=y(Te*y(d-He)),n[$t>>2]=1),Eu(l,2,m,m,$t,Gr),Eu(l,0,B,m,Rr,fr),u=y(h[Gr>>2]),d=y(h[fr>>2]),Nl(l,u,d,R,n[$t>>2]|0,n[Rr>>2]|0,m,B,0,3565,M)|0,B=y(h[l+908+(n[976+(cr<<2)>>2]<<2)>>2]),h[l+504>>2]=y(ri(B,y($a(l,cr,m))))}while(!1);n[l+500>>2]=n[2278],I=jn}function Wn(o,l,u,A,d){return o=o|0,l=l|0,u=y(u),A=y(A),d=y(d),A=y(Wg(o,l,u,A)),y(ri(A,y($a(o,l,d))))}function as(o,l){return o=o|0,l=l|0,l=l+20|0,l=n[(n[l>>2]|0?l:o+16|0)>>2]|0,(l|0)==5&&Vg(n[o+4>>2]|0)|0&&(l=1),l|0}function Ol(o,l){return o=o|0,l=l|0,ge(l)|0&&n[o+96>>2]|0?l=4:l=n[1040+(l<<2)>>2]|0,o+60+(l<<3)|0}function Ll(o,l){return o=o|0,l=l|0,ge(l)|0&&n[o+104>>2]|0?l=5:l=n[1e3+(l<<2)>>2]|0,o+60+(l<<3)|0}function Eu(o,l,u,A,d,m){switch(o=o|0,l=l|0,u=y(u),A=y(A),d=d|0,m=m|0,u=y(Xr(o+380+(n[976+(l<<2)>>2]<<3)|0,u)),u=y(u+y(En(o,l,A))),n[d>>2]|0){case 2:case 1:{d=Mt(u)|0,A=y(h[m>>2]),h[m>>2]=d|A>2]=2,h[m>>2]=u);break}default:}}function ya(o,l){return o=o|0,l=l|0,o=o+132|0,ge(l)|0&&n[(Rn(o,4,948)|0)+4>>2]|0?o=1:o=(n[(Rn(o,n[1040+(l<<2)>>2]|0,948)|0)+4>>2]|0)!=0,o|0}function ZA(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0;return o=o+132|0,ge(l)|0&&(A=Rn(o,4,948)|0,(n[A+4>>2]|0)!=0)?d=4:(A=Rn(o,n[1040+(l<<2)>>2]|0,948)|0,n[A+4>>2]|0?d=4:u=y(0)),(d|0)==4&&(u=y(Xr(A,u))),y(u)}function XA(o,l,u){o=o|0,l=l|0,u=y(u);var A=$e;return A=y(h[o+908+(n[976+(l<<2)>>2]<<2)>>2]),A=y(A+y(J(o,l,u))),y(A+y(re(o,l,u)))}function DL(o){o=o|0;var l=0,u=0,A=0;e:do if(Vg(n[o+4>>2]|0)|0)l=0;else if((n[o+16>>2]|0)!=5)if(u=Mi(o)|0,!u)l=0;else for(l=0;;){if(A=Bs(o,l)|0,!(n[A+24>>2]|0)&&(n[A+20>>2]|0)==5){l=1;break e}if(l=l+1|0,l>>>0>=u>>>0){l=0;break}}else l=1;while(!1);return l|0}function bL(o,l){o=o|0,l=l|0;var u=$e;return u=y(h[o+908+(n[976+(l<<2)>>2]<<2)>>2]),u>=y(0)&((Mt(u)|0)^1)|0}function qg(o){o=o|0;var l=$e,u=0,A=0,d=0,m=0,B=0,k=0,R=$e;if(u=n[o+968>>2]|0,u)R=y(h[o+908>>2]),l=y(h[o+912>>2]),l=y(eX[u&0](o,R,l)),Bi(o,(Mt(l)|0)^1,3573);else{m=Mi(o)|0;do if(m|0){for(u=0,d=0;;){if(A=Bs(o,d)|0,n[A+940>>2]|0){B=8;break}if((n[A+24>>2]|0)!=1)if(k=(as(o,A)|0)==5,k){u=A;break}else u=u|0?u:A;if(d=d+1|0,d>>>0>=m>>>0){B=8;break}}if((B|0)==8&&!u)break;return l=y(qg(u)),y(l+y(h[u+404>>2]))}while(!1);l=y(h[o+912>>2])}return y(l)}function Wg(o,l,u,A){o=o|0,l=l|0,u=y(u),A=y(A);var d=$e,m=0;return Vg(l)|0?(l=1,m=3):ge(l)|0?(l=0,m=3):(A=y(ae),d=y(ae)),(m|0)==3&&(d=y(Xr(o+364+(l<<3)|0,A)),A=y(Xr(o+380+(l<<3)|0,A))),m=A=y(0)&((Mt(A)|0)^1)),u=m?A:u,m=d>=y(0)&((Mt(d)|0)^1)&u>2]|0,m)|0,Le=ky(nt,m)|0,Te=ge(nt)|0,q=y(En(l,2,u)),oe=y(En(l,0,u)),uo(l,2,u)|0?k=y(q+y(Xr(n[l+992>>2]|0,u))):ya(l,2)|0&&Ry(l,2)|0?(k=y(h[o+908>>2]),R=y(vr(o,2)),R=y(k-y(R+y(_n(o,2)))),k=y(ZA(l,2,u)),k=y(Wn(l,2,y(R-y(k+y(kh(l,2,u)))),u,u))):k=y(ae),uo(l,0,d)|0?R=y(oe+y(Xr(n[l+996>>2]|0,d))):ya(l,0)|0&&Ry(l,0)|0?(R=y(h[o+912>>2]),ft=y(vr(o,0)),ft=y(R-y(ft+y(_n(o,0)))),R=y(ZA(l,0,d)),R=y(Wn(l,0,y(ft-y(R+y(kh(l,0,d)))),d,u))):R=y(ae),M=Mt(k)|0,L=Mt(R)|0;do if(M^L&&(Ye=y(h[l+396>>2]),!(Mt(Ye)|0)))if(M){k=y(q+y(y(R-oe)*Ye));break}else{ft=y(oe+y(y(k-q)/Ye)),R=L?ft:R;break}while(!1);L=Mt(k)|0,M=Mt(R)|0,L|M&&(He=(L^1)&1,A=u>y(0)&((A|0)!=0&L),k=Te?k:A?u:k,Nl(l,k,R,m,Te?He:A?2:He,L&(M^1)&1,k,R,0,3623,B)|0,k=y(h[l+908>>2]),k=y(k+y(En(l,2,u))),R=y(h[l+912>>2]),R=y(R+y(En(l,0,u)))),Nl(l,k,R,m,1,1,k,R,1,3635,B)|0,Ry(l,nt)|0&&!(ya(l,nt)|0)?(He=n[976+(nt<<2)>>2]|0,ft=y(h[o+908+(He<<2)>>2]),ft=y(ft-y(h[l+908+(He<<2)>>2])),ft=y(ft-y(_n(o,nt))),ft=y(ft-y(re(l,nt,u))),ft=y(ft-y(kh(l,nt,Te?u:d))),h[l+400+(n[1040+(nt<<2)>>2]<<2)>>2]=ft):Xe=21;do if((Xe|0)==21){if(!(ya(l,nt)|0)&&(n[o+8>>2]|0)==1){He=n[976+(nt<<2)>>2]|0,ft=y(h[o+908+(He<<2)>>2]),ft=y(y(ft-y(h[l+908+(He<<2)>>2]))*y(.5)),h[l+400+(n[1040+(nt<<2)>>2]<<2)>>2]=ft;break}!(ya(l,nt)|0)&&(n[o+8>>2]|0)==2&&(He=n[976+(nt<<2)>>2]|0,ft=y(h[o+908+(He<<2)>>2]),ft=y(ft-y(h[l+908+(He<<2)>>2])),h[l+400+(n[1040+(nt<<2)>>2]<<2)>>2]=ft)}while(!1);Ry(l,Le)|0&&!(ya(l,Le)|0)?(He=n[976+(Le<<2)>>2]|0,ft=y(h[o+908+(He<<2)>>2]),ft=y(ft-y(h[l+908+(He<<2)>>2])),ft=y(ft-y(_n(o,Le))),ft=y(ft-y(re(l,Le,u))),ft=y(ft-y(kh(l,Le,Te?d:u))),h[l+400+(n[1040+(Le<<2)>>2]<<2)>>2]=ft):Xe=30;do if((Xe|0)==30&&!(ya(l,Le)|0)){if((as(o,l)|0)==2){He=n[976+(Le<<2)>>2]|0,ft=y(h[o+908+(He<<2)>>2]),ft=y(y(ft-y(h[l+908+(He<<2)>>2]))*y(.5)),h[l+400+(n[1040+(Le<<2)>>2]<<2)>>2]=ft;break}He=(as(o,l)|0)==3,He^(n[o+28>>2]|0)==2&&(He=n[976+(Le<<2)>>2]|0,ft=y(h[o+908+(He<<2)>>2]),ft=y(ft-y(h[l+908+(He<<2)>>2])),h[l+400+(n[1040+(Le<<2)>>2]<<2)>>2]=ft)}while(!1)}function z1(o,l,u){o=o|0,l=l|0,u=u|0;var A=$e,d=0;d=n[976+(u<<2)>>2]|0,A=y(h[l+908+(d<<2)>>2]),A=y(y(h[o+908+(d<<2)>>2])-A),A=y(A-y(h[l+400+(n[1040+(u<<2)>>2]<<2)>>2])),h[l+400+(n[1e3+(u<<2)>>2]<<2)>>2]=A}function Vg(o){return o=o|0,(o|1|0)==1|0}function xL(o){o=o|0;var l=$e;switch(n[o+56>>2]|0){case 0:case 3:{l=y(h[o+40>>2]),l>y(0)&((Mt(l)|0)^1)?o=s[(n[o+976>>2]|0)+2>>0]|0?1056:992:o=1056;break}default:o=o+52|0}return o|0}function Z1(o,l){return o=o|0,l=l|0,(s[o+l>>0]|0)!=0|0}function Ry(o,l){return o=o|0,l=l|0,o=o+132|0,ge(l)|0&&n[(Rn(o,5,948)|0)+4>>2]|0?o=1:o=(n[(Rn(o,n[1e3+(l<<2)>>2]|0,948)|0)+4>>2]|0)!=0,o|0}function kh(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0;return o=o+132|0,ge(l)|0&&(A=Rn(o,5,948)|0,(n[A+4>>2]|0)!=0)?d=4:(A=Rn(o,n[1e3+(l<<2)>>2]|0,948)|0,n[A+4>>2]|0?d=4:u=y(0)),(d|0)==4&&(u=y(Xr(A,u))),y(u)}function uP(o,l,u){return o=o|0,l=l|0,u=y(u),ya(o,l)|0?u=y(ZA(o,l,u)):u=y(-y(kh(o,l,u))),y(u)}function fP(o){return o=y(o),h[S>>2]=o,n[S>>2]|0|0}function Ty(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>1073741823)Nt();else{d=Jt(l<<2)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<2)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<2)}function AP(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function Fy(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-4-l|0)>>>2)<<2)),o=n[o>>2]|0,o|0&&It(o)}function pP(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;if(B=o+4|0,k=n[B>>2]|0,d=k-A|0,m=d>>2,o=l+(m<<2)|0,o>>>0>>0){A=k;do n[A>>2]=n[o>>2],o=o+4|0,A=(n[B>>2]|0)+4|0,n[B>>2]=A;while(o>>>0>>0)}m|0&&BB(k+(0-m<<2)|0,l|0,d|0)|0}function hP(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0;return k=l+4|0,R=n[k>>2]|0,d=n[o>>2]|0,B=u,m=B-d|0,A=R+(0-(m>>2)<<2)|0,n[k>>2]=A,(m|0)>0&&Qr(A|0,d|0,m|0)|0,d=o+4|0,m=l+8|0,A=(n[d>>2]|0)-B|0,(A|0)>0&&(Qr(n[m>>2]|0,u|0,A|0)|0,n[m>>2]=(n[m>>2]|0)+(A>>>2<<2)),B=n[o>>2]|0,n[o>>2]=n[k>>2],n[k>>2]=B,B=n[d>>2]|0,n[d>>2]=n[m>>2],n[m>>2]=B,B=o+8|0,u=l+12|0,o=n[B>>2]|0,n[B>>2]=n[u>>2],n[u>>2]=o,n[l>>2]=n[k>>2],R|0}function X1(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;if(B=n[l>>2]|0,m=n[u>>2]|0,(B|0)!=(m|0)){d=o+8|0,u=((m+-4-B|0)>>>2)+1|0,o=B,A=n[d>>2]|0;do n[A>>2]=n[o>>2],A=(n[d>>2]|0)+4|0,n[d>>2]=A,o=o+4|0;while((o|0)!=(m|0));n[l>>2]=B+(u<<2)}}function $1(){ha()}function gP(){var o=0;return o=Jt(4)|0,eB(o),o|0}function eB(o){o=o|0,n[o>>2]=pc()|0}function dP(o){o=o|0,o|0&&(Yg(o),It(o))}function Yg(o){o=o|0,ot(n[o>>2]|0)}function kL(o,l,u){o=o|0,l=l|0,u=u|0,hc(n[o>>2]|0,l,u)}function Ny(o,l){o=o|0,l=y(l),vh(n[o>>2]|0,l)}function Oy(o,l){return o=o|0,l=l|0,Z1(n[o>>2]|0,l)|0}function Ly(){var o=0;return o=Jt(8)|0,Kg(o,0),o|0}function Kg(o,l){o=o|0,l=l|0,l?l=ga(n[l>>2]|0)|0:l=is()|0,n[o>>2]=l,n[o+4>>2]=0,Fn(l,o)}function My(o){o=o|0;var l=0;return l=Jt(8)|0,Kg(l,o),l|0}function Jg(o){o=o|0,o|0&&(Uy(o),It(o))}function Uy(o){o=o|0;var l=0;fc(n[o>>2]|0),l=o+4|0,o=n[l>>2]|0,n[l>>2]=0,o|0&&(bf(o),It(o))}function bf(o){o=o|0,Pf(o)}function Pf(o){o=o|0,o=n[o>>2]|0,o|0&&ja(o|0)}function tB(o){return o=o|0,Ja(o)|0}function rB(o){o=o|0;var l=0,u=0;u=o+4|0,l=n[u>>2]|0,n[u>>2]=0,l|0&&(bf(l),It(l)),Ac(n[o>>2]|0)}function _y(o,l){o=o|0,l=l|0,pn(n[o>>2]|0,n[l>>2]|0)}function QL(o,l){o=o|0,l=l|0,Ih(n[o>>2]|0,l)}function RL(o,l,u){o=o|0,l=l|0,u=+u,vy(n[o>>2]|0,l,y(u))}function Hy(o,l,u){o=o|0,l=l|0,u=+u,Sy(n[o>>2]|0,l,y(u))}function nB(o,l){o=o|0,l=l|0,mh(n[o>>2]|0,l)}function iB(o,l){o=o|0,l=l|0,ko(n[o>>2]|0,l)}function xr(o,l){o=o|0,l=l|0,Eh(n[o>>2]|0,l)}function fo(o,l){o=o|0,l=l|0,Iy(n[o>>2]|0,l)}function Zi(o,l){o=o|0,l=l|0,Tg(n[o>>2]|0,l)}function Ms(o,l){o=o|0,l=l|0,xo(n[o>>2]|0,l)}function $A(o,l,u){o=o|0,l=l|0,u=+u,jA(n[o>>2]|0,l,y(u))}function sB(o,l,u){o=o|0,l=l|0,u=+u,W(n[o>>2]|0,l,y(u))}function Ss(o,l){o=o|0,l=l|0,GA(n[o>>2]|0,l)}function jy(o,l){o=o|0,l=l|0,wy(n[o>>2]|0,l)}function Qh(o,l){o=o|0,l=l|0,Qo(n[o>>2]|0,l)}function zg(o,l){o=o|0,l=+l,Ch(n[o>>2]|0,y(l))}function Rh(o,l){o=o|0,l=+l,Tl(n[o>>2]|0,y(l))}function oB(o,l){o=o|0,l=+l,By(n[o>>2]|0,y(l))}function aB(o,l){o=o|0,l=+l,Ng(n[o>>2]|0,y(l))}function lB(o,l){o=o|0,l=+l,Rl(n[o>>2]|0,y(l))}function cB(o,l){o=o|0,l=+l,Og(n[o>>2]|0,y(l))}function xf(o,l){o=o|0,l=+l,V1(n[o>>2]|0,y(l))}function sr(o){o=o|0,wh(n[o>>2]|0)}function Gy(o,l){o=o|0,l=+l,zi(n[o>>2]|0,y(l))}function uB(o,l){o=o|0,l=+l,If(n[o>>2]|0,y(l))}function gc(o){o=o|0,za(n[o>>2]|0)}function kf(o,l){o=o|0,l=+l,hu(n[o>>2]|0,y(l))}function Zg(o,l){o=o|0,l=+l,Cf(n[o>>2]|0,y(l))}function Xg(o,l){o=o|0,l=+l,mi(n[o>>2]|0,y(l))}function fB(o,l){o=o|0,l=+l,qA(n[o>>2]|0,y(l))}function AB(o,l){o=o|0,l=+l,da(n[o>>2]|0,y(l))}function Iu(o,l){o=o|0,l=+l,Xa(n[o>>2]|0,y(l))}function $g(o,l){o=o|0,l=+l,Bh(n[o>>2]|0,y(l))}function pB(o,l){o=o|0,l=+l,Ug(n[o>>2]|0,y(l))}function qy(o,l){o=o|0,l=+l,WA(n[o>>2]|0,y(l))}function Cu(o,l,u){o=o|0,l=l|0,u=+u,pu(n[o>>2]|0,l,y(u))}function Wy(o,l,u){o=o|0,l=l|0,u=+u,Ro(n[o>>2]|0,l,y(u))}function ed(o,l,u){o=o|0,l=l|0,u=+u,Ef(n[o>>2]|0,l,y(u))}function td(o){return o=o|0,Rg(n[o>>2]|0)|0}function No(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;A=I,I=I+16|0,d=A,HA(d,n[l>>2]|0,u),Ds(o,d),I=A}function Ds(o,l){o=o|0,l=l|0,Ml(o,n[l+4>>2]|0,+y(h[l>>2]))}function Ml(o,l,u){o=o|0,l=l|0,u=+u,n[o>>2]=l,E[o+8>>3]=u}function Vy(o){return o=o|0,W1(n[o>>2]|0)|0}function Ea(o){return o=o|0,yh(n[o>>2]|0)|0}function mP(o){return o=o|0,Au(n[o>>2]|0)|0}function Th(o){return o=o|0,q1(n[o>>2]|0)|0}function hB(o){return o=o|0,Fg(n[o>>2]|0)|0}function TL(o){return o=o|0,Cy(n[o>>2]|0)|0}function yP(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;A=I,I=I+16|0,d=A,xt(d,n[l>>2]|0,u),Ds(o,d),I=A}function EP(o){return o=o|0,yf(n[o>>2]|0)|0}function Yy(o){return o=o|0,Ql(n[o>>2]|0)|0}function gB(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,_A(A,n[l>>2]|0),Ds(o,A),I=u}function Fh(o){return o=o|0,+ +y(ci(n[o>>2]|0))}function IP(o){return o=o|0,+ +y(qi(n[o>>2]|0))}function CP(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,ur(A,n[l>>2]|0),Ds(o,A),I=u}function rd(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,Lg(A,n[l>>2]|0),Ds(o,A),I=u}function FL(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,wt(A,n[l>>2]|0),Ds(o,A),I=u}function NL(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,Za(A,n[l>>2]|0),Ds(o,A),I=u}function wP(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,Mg(A,n[l>>2]|0),Ds(o,A),I=u}function BP(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,by(A,n[l>>2]|0),Ds(o,A),I=u}function ep(o){return o=o|0,+ +y(_g(n[o>>2]|0))}function OL(o,l){return o=o|0,l=l|0,+ +y(Dy(n[o>>2]|0,l))}function LL(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;A=I,I=I+16|0,d=A,yt(d,n[l>>2]|0,u),Ds(o,d),I=A}function wu(o,l,u){o=o|0,l=l|0,u=u|0,lr(n[o>>2]|0,n[l>>2]|0,u)}function ML(o,l){o=o|0,l=l|0,mf(n[o>>2]|0,n[l>>2]|0)}function vP(o){return o=o|0,Mi(n[o>>2]|0)|0}function UL(o){return o=o|0,o=Et(n[o>>2]|0)|0,o?o=tB(o)|0:o=0,o|0}function SP(o,l){return o=o|0,l=l|0,o=Bs(n[o>>2]|0,l)|0,o?o=tB(o)|0:o=0,o|0}function Qf(o,l){o=o|0,l=l|0;var u=0,A=0;A=Jt(4)|0,DP(A,l),u=o+4|0,l=n[u>>2]|0,n[u>>2]=A,l|0&&(bf(l),It(l)),St(n[o>>2]|0,1)}function DP(o,l){o=o|0,l=l|0,qL(o,l)}function _L(o,l,u,A,d,m){o=o|0,l=l|0,u=y(u),A=A|0,d=y(d),m=m|0;var B=0,k=0;B=I,I=I+16|0,k=B,bP(k,Ja(l)|0,+u,A,+d,m),h[o>>2]=y(+E[k>>3]),h[o+4>>2]=y(+E[k+8>>3]),I=B}function bP(o,l,u,A,d,m){o=o|0,l=l|0,u=+u,A=A|0,d=+d,m=m|0;var B=0,k=0,R=0,M=0,L=0;B=I,I=I+32|0,L=B+8|0,M=B+20|0,R=B,k=B+16|0,E[L>>3]=u,n[M>>2]=A,E[R>>3]=d,n[k>>2]=m,Ky(o,n[l+4>>2]|0,L,M,R,k),I=B}function Ky(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0;var B=0,k=0;B=I,I=I+16|0,k=B,_l(k),l=Us(l)|0,PP(o,l,+E[u>>3],n[A>>2]|0,+E[d>>3],n[m>>2]|0),Hl(k),I=B}function Us(o){return o=o|0,n[o>>2]|0}function PP(o,l,u,A,d,m){o=o|0,l=l|0,u=+u,A=A|0,d=+d,m=m|0;var B=0;B=Ia(dB()|0)|0,u=+el(u),A=Jy(A)|0,d=+el(d),HL(o,Zn(0,B|0,l|0,+u,A|0,+d,Jy(m)|0)|0)}function dB(){var o=0;return s[7608]|0||(yB(9120),o=7608,n[o>>2]=1,n[o+4>>2]=0),9120}function Ia(o){return o=o|0,n[o+8>>2]|0}function el(o){return o=+o,+ +Rf(o)}function Jy(o){return o=o|0,nd(o)|0}function HL(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;d=I,I=I+32|0,u=d,A=l,A&1?(tl(u,0),Ue(A|0,u|0)|0,mB(o,u),jL(u)):(n[o>>2]=n[l>>2],n[o+4>>2]=n[l+4>>2],n[o+8>>2]=n[l+8>>2],n[o+12>>2]=n[l+12>>2]),I=d}function tl(o,l){o=o|0,l=l|0,Bu(o,l),n[o+8>>2]=0,s[o+24>>0]=0}function mB(o,l){o=o|0,l=l|0,l=l+8|0,n[o>>2]=n[l>>2],n[o+4>>2]=n[l+4>>2],n[o+8>>2]=n[l+8>>2],n[o+12>>2]=n[l+12>>2]}function jL(o){o=o|0,s[o+24>>0]=0}function Bu(o,l){o=o|0,l=l|0,n[o>>2]=l}function nd(o){return o=o|0,o|0}function Rf(o){return o=+o,+o}function yB(o){o=o|0,Oo(o,EB()|0,4)}function EB(){return 1064}function Oo(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u,n[o+8>>2]=Gi(l|0,u+1|0)|0}function qL(o,l){o=o|0,l=l|0,l=n[l>>2]|0,n[o>>2]=l,su(l|0)}function xP(o){o=o|0;var l=0,u=0;u=o+4|0,l=n[u>>2]|0,n[u>>2]=0,l|0&&(bf(l),It(l)),St(n[o>>2]|0,0)}function kP(o){o=o|0,bt(n[o>>2]|0)}function zy(o){return o=o|0,tr(n[o>>2]|0)|0}function WL(o,l,u,A){o=o|0,l=+l,u=+u,A=A|0,YA(n[o>>2]|0,y(l),y(u),A)}function VL(o){return o=o|0,+ +y(gu(n[o>>2]|0))}function v(o){return o=o|0,+ +y(wf(n[o>>2]|0))}function D(o){return o=o|0,+ +y(du(n[o>>2]|0))}function Q(o){return o=o|0,+ +y(Os(n[o>>2]|0))}function H(o){return o=o|0,+ +y(mu(n[o>>2]|0))}function V(o){return o=o|0,+ +y(qn(n[o>>2]|0))}function ne(o,l){o=o|0,l=l|0,E[o>>3]=+y(gu(n[l>>2]|0)),E[o+8>>3]=+y(wf(n[l>>2]|0)),E[o+16>>3]=+y(du(n[l>>2]|0)),E[o+24>>3]=+y(Os(n[l>>2]|0)),E[o+32>>3]=+y(mu(n[l>>2]|0)),E[o+40>>3]=+y(qn(n[l>>2]|0))}function ve(o,l){return o=o|0,l=l|0,+ +y(ss(n[o>>2]|0,l))}function _e(o,l){return o=o|0,l=l|0,+ +y(Pi(n[o>>2]|0,l))}function ht(o,l){return o=o|0,l=l|0,+ +y(VA(n[o>>2]|0,l))}function Wt(){return Tn()|0}function Sr(){Lr(),Xt(),Xn(),Ei(),rl(),rt()}function Lr(){$Me(11713,4938,1)}function Xt(){yMe(10448)}function Xn(){$Le(10408)}function Ei(){wLe(10324)}function rl(){kNe(10096)}function rt(){We(9132)}function We(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0,Ye=0,Le=0,Te=0,nt=0,Xe=0,ft=0,He=0,Ve=0,Lt=0,Gr=0,fr=0,$t=0,Rr=0,Hr=0,cr=0,jn=0,Lo=0,Mo=0,Uo=0,il=0,Gh=0,qh=0,dc=0,Wh=0,Nf=0,Of=0,Vh=0,Yh=0,Kh=0,ln=0,mc=0,Jh=0,Du=0,zh=0,Zh=0,Lf=0,Mf=0,bu=0,Ao=0,Gl=0,Ca=0,yc=0,ap=0,lp=0,Uf=0,cp=0,up=0,po=0,Hs=0,Ec=0,Vn=0,fp=0,_o=0,Pu=0,Ho=0,xu=0,Ap=0,pp=0,ku=0,ho=0,Ic=0,hp=0,gp=0,dp=0,Nr=0,fi=0,js=0,jo=0,go=0,Mr=0,Ar=0,Cc=0;l=I,I=I+672|0,u=l+656|0,Cc=l+648|0,Ar=l+640|0,Mr=l+632|0,go=l+624|0,jo=l+616|0,js=l+608|0,fi=l+600|0,Nr=l+592|0,dp=l+584|0,gp=l+576|0,hp=l+568|0,Ic=l+560|0,ho=l+552|0,ku=l+544|0,pp=l+536|0,Ap=l+528|0,xu=l+520|0,Ho=l+512|0,Pu=l+504|0,_o=l+496|0,fp=l+488|0,Vn=l+480|0,Ec=l+472|0,Hs=l+464|0,po=l+456|0,up=l+448|0,cp=l+440|0,Uf=l+432|0,lp=l+424|0,ap=l+416|0,yc=l+408|0,Ca=l+400|0,Gl=l+392|0,Ao=l+384|0,bu=l+376|0,Mf=l+368|0,Lf=l+360|0,Zh=l+352|0,zh=l+344|0,Du=l+336|0,Jh=l+328|0,mc=l+320|0,ln=l+312|0,Kh=l+304|0,Yh=l+296|0,Vh=l+288|0,Of=l+280|0,Nf=l+272|0,Wh=l+264|0,dc=l+256|0,qh=l+248|0,Gh=l+240|0,il=l+232|0,Uo=l+224|0,Mo=l+216|0,Lo=l+208|0,jn=l+200|0,cr=l+192|0,Hr=l+184|0,Rr=l+176|0,$t=l+168|0,fr=l+160|0,Gr=l+152|0,Lt=l+144|0,Ve=l+136|0,He=l+128|0,ft=l+120|0,Xe=l+112|0,nt=l+104|0,Te=l+96|0,Le=l+88|0,Ye=l+80|0,oe=l+72|0,q=l+64|0,L=l+56|0,M=l+48|0,R=l+40|0,k=l+32|0,B=l+24|0,m=l+16|0,d=l+8|0,A=l,dt(o,3646),Zt(o,3651,2)|0,Dr(o,3665,2)|0,ti(o,3682,18)|0,n[Cc>>2]=19,n[Cc+4>>2]=0,n[u>>2]=n[Cc>>2],n[u+4>>2]=n[Cc+4>>2],kr(o,3690,u)|0,n[Ar>>2]=1,n[Ar+4>>2]=0,n[u>>2]=n[Ar>>2],n[u+4>>2]=n[Ar+4>>2],Nn(o,3696,u)|0,n[Mr>>2]=2,n[Mr+4>>2]=0,n[u>>2]=n[Mr>>2],n[u+4>>2]=n[Mr+4>>2],Hn(o,3706,u)|0,n[go>>2]=1,n[go+4>>2]=0,n[u>>2]=n[go>>2],n[u+4>>2]=n[go+4>>2],zr(o,3722,u)|0,n[jo>>2]=2,n[jo+4>>2]=0,n[u>>2]=n[jo>>2],n[u+4>>2]=n[jo+4>>2],zr(o,3734,u)|0,n[js>>2]=3,n[js+4>>2]=0,n[u>>2]=n[js>>2],n[u+4>>2]=n[js+4>>2],Hn(o,3753,u)|0,n[fi>>2]=4,n[fi+4>>2]=0,n[u>>2]=n[fi>>2],n[u+4>>2]=n[fi+4>>2],Hn(o,3769,u)|0,n[Nr>>2]=5,n[Nr+4>>2]=0,n[u>>2]=n[Nr>>2],n[u+4>>2]=n[Nr+4>>2],Hn(o,3783,u)|0,n[dp>>2]=6,n[dp+4>>2]=0,n[u>>2]=n[dp>>2],n[u+4>>2]=n[dp+4>>2],Hn(o,3796,u)|0,n[gp>>2]=7,n[gp+4>>2]=0,n[u>>2]=n[gp>>2],n[u+4>>2]=n[gp+4>>2],Hn(o,3813,u)|0,n[hp>>2]=8,n[hp+4>>2]=0,n[u>>2]=n[hp>>2],n[u+4>>2]=n[hp+4>>2],Hn(o,3825,u)|0,n[Ic>>2]=3,n[Ic+4>>2]=0,n[u>>2]=n[Ic>>2],n[u+4>>2]=n[Ic+4>>2],zr(o,3843,u)|0,n[ho>>2]=4,n[ho+4>>2]=0,n[u>>2]=n[ho>>2],n[u+4>>2]=n[ho+4>>2],zr(o,3853,u)|0,n[ku>>2]=9,n[ku+4>>2]=0,n[u>>2]=n[ku>>2],n[u+4>>2]=n[ku+4>>2],Hn(o,3870,u)|0,n[pp>>2]=10,n[pp+4>>2]=0,n[u>>2]=n[pp>>2],n[u+4>>2]=n[pp+4>>2],Hn(o,3884,u)|0,n[Ap>>2]=11,n[Ap+4>>2]=0,n[u>>2]=n[Ap>>2],n[u+4>>2]=n[Ap+4>>2],Hn(o,3896,u)|0,n[xu>>2]=1,n[xu+4>>2]=0,n[u>>2]=n[xu>>2],n[u+4>>2]=n[xu+4>>2],ui(o,3907,u)|0,n[Ho>>2]=2,n[Ho+4>>2]=0,n[u>>2]=n[Ho>>2],n[u+4>>2]=n[Ho+4>>2],ui(o,3915,u)|0,n[Pu>>2]=3,n[Pu+4>>2]=0,n[u>>2]=n[Pu>>2],n[u+4>>2]=n[Pu+4>>2],ui(o,3928,u)|0,n[_o>>2]=4,n[_o+4>>2]=0,n[u>>2]=n[_o>>2],n[u+4>>2]=n[_o+4>>2],ui(o,3948,u)|0,n[fp>>2]=5,n[fp+4>>2]=0,n[u>>2]=n[fp>>2],n[u+4>>2]=n[fp+4>>2],ui(o,3960,u)|0,n[Vn>>2]=6,n[Vn+4>>2]=0,n[u>>2]=n[Vn>>2],n[u+4>>2]=n[Vn+4>>2],ui(o,3974,u)|0,n[Ec>>2]=7,n[Ec+4>>2]=0,n[u>>2]=n[Ec>>2],n[u+4>>2]=n[Ec+4>>2],ui(o,3983,u)|0,n[Hs>>2]=20,n[Hs+4>>2]=0,n[u>>2]=n[Hs>>2],n[u+4>>2]=n[Hs+4>>2],kr(o,3999,u)|0,n[po>>2]=8,n[po+4>>2]=0,n[u>>2]=n[po>>2],n[u+4>>2]=n[po+4>>2],ui(o,4012,u)|0,n[up>>2]=9,n[up+4>>2]=0,n[u>>2]=n[up>>2],n[u+4>>2]=n[up+4>>2],ui(o,4022,u)|0,n[cp>>2]=21,n[cp+4>>2]=0,n[u>>2]=n[cp>>2],n[u+4>>2]=n[cp+4>>2],kr(o,4039,u)|0,n[Uf>>2]=10,n[Uf+4>>2]=0,n[u>>2]=n[Uf>>2],n[u+4>>2]=n[Uf+4>>2],ui(o,4053,u)|0,n[lp>>2]=11,n[lp+4>>2]=0,n[u>>2]=n[lp>>2],n[u+4>>2]=n[lp+4>>2],ui(o,4065,u)|0,n[ap>>2]=12,n[ap+4>>2]=0,n[u>>2]=n[ap>>2],n[u+4>>2]=n[ap+4>>2],ui(o,4084,u)|0,n[yc>>2]=13,n[yc+4>>2]=0,n[u>>2]=n[yc>>2],n[u+4>>2]=n[yc+4>>2],ui(o,4097,u)|0,n[Ca>>2]=14,n[Ca+4>>2]=0,n[u>>2]=n[Ca>>2],n[u+4>>2]=n[Ca+4>>2],ui(o,4117,u)|0,n[Gl>>2]=15,n[Gl+4>>2]=0,n[u>>2]=n[Gl>>2],n[u+4>>2]=n[Gl+4>>2],ui(o,4129,u)|0,n[Ao>>2]=16,n[Ao+4>>2]=0,n[u>>2]=n[Ao>>2],n[u+4>>2]=n[Ao+4>>2],ui(o,4148,u)|0,n[bu>>2]=17,n[bu+4>>2]=0,n[u>>2]=n[bu>>2],n[u+4>>2]=n[bu+4>>2],ui(o,4161,u)|0,n[Mf>>2]=18,n[Mf+4>>2]=0,n[u>>2]=n[Mf>>2],n[u+4>>2]=n[Mf+4>>2],ui(o,4181,u)|0,n[Lf>>2]=5,n[Lf+4>>2]=0,n[u>>2]=n[Lf>>2],n[u+4>>2]=n[Lf+4>>2],zr(o,4196,u)|0,n[Zh>>2]=6,n[Zh+4>>2]=0,n[u>>2]=n[Zh>>2],n[u+4>>2]=n[Zh+4>>2],zr(o,4206,u)|0,n[zh>>2]=7,n[zh+4>>2]=0,n[u>>2]=n[zh>>2],n[u+4>>2]=n[zh+4>>2],zr(o,4217,u)|0,n[Du>>2]=3,n[Du+4>>2]=0,n[u>>2]=n[Du>>2],n[u+4>>2]=n[Du+4>>2],vu(o,4235,u)|0,n[Jh>>2]=1,n[Jh+4>>2]=0,n[u>>2]=n[Jh>>2],n[u+4>>2]=n[Jh+4>>2],YL(o,4251,u)|0,n[mc>>2]=4,n[mc+4>>2]=0,n[u>>2]=n[mc>>2],n[u+4>>2]=n[mc+4>>2],vu(o,4263,u)|0,n[ln>>2]=5,n[ln+4>>2]=0,n[u>>2]=n[ln>>2],n[u+4>>2]=n[ln+4>>2],vu(o,4279,u)|0,n[Kh>>2]=6,n[Kh+4>>2]=0,n[u>>2]=n[Kh>>2],n[u+4>>2]=n[Kh+4>>2],vu(o,4293,u)|0,n[Yh>>2]=7,n[Yh+4>>2]=0,n[u>>2]=n[Yh>>2],n[u+4>>2]=n[Yh+4>>2],vu(o,4306,u)|0,n[Vh>>2]=8,n[Vh+4>>2]=0,n[u>>2]=n[Vh>>2],n[u+4>>2]=n[Vh+4>>2],vu(o,4323,u)|0,n[Of>>2]=9,n[Of+4>>2]=0,n[u>>2]=n[Of>>2],n[u+4>>2]=n[Of+4>>2],vu(o,4335,u)|0,n[Nf>>2]=2,n[Nf+4>>2]=0,n[u>>2]=n[Nf>>2],n[u+4>>2]=n[Nf+4>>2],YL(o,4353,u)|0,n[Wh>>2]=12,n[Wh+4>>2]=0,n[u>>2]=n[Wh>>2],n[u+4>>2]=n[Wh+4>>2],id(o,4363,u)|0,n[dc>>2]=1,n[dc+4>>2]=0,n[u>>2]=n[dc>>2],n[u+4>>2]=n[dc+4>>2],tp(o,4376,u)|0,n[qh>>2]=2,n[qh+4>>2]=0,n[u>>2]=n[qh>>2],n[u+4>>2]=n[qh+4>>2],tp(o,4388,u)|0,n[Gh>>2]=13,n[Gh+4>>2]=0,n[u>>2]=n[Gh>>2],n[u+4>>2]=n[Gh+4>>2],id(o,4402,u)|0,n[il>>2]=14,n[il+4>>2]=0,n[u>>2]=n[il>>2],n[u+4>>2]=n[il+4>>2],id(o,4411,u)|0,n[Uo>>2]=15,n[Uo+4>>2]=0,n[u>>2]=n[Uo>>2],n[u+4>>2]=n[Uo+4>>2],id(o,4421,u)|0,n[Mo>>2]=16,n[Mo+4>>2]=0,n[u>>2]=n[Mo>>2],n[u+4>>2]=n[Mo+4>>2],id(o,4433,u)|0,n[Lo>>2]=17,n[Lo+4>>2]=0,n[u>>2]=n[Lo>>2],n[u+4>>2]=n[Lo+4>>2],id(o,4446,u)|0,n[jn>>2]=18,n[jn+4>>2]=0,n[u>>2]=n[jn>>2],n[u+4>>2]=n[jn+4>>2],id(o,4458,u)|0,n[cr>>2]=3,n[cr+4>>2]=0,n[u>>2]=n[cr>>2],n[u+4>>2]=n[cr+4>>2],tp(o,4471,u)|0,n[Hr>>2]=1,n[Hr+4>>2]=0,n[u>>2]=n[Hr>>2],n[u+4>>2]=n[Hr+4>>2],QP(o,4486,u)|0,n[Rr>>2]=10,n[Rr+4>>2]=0,n[u>>2]=n[Rr>>2],n[u+4>>2]=n[Rr+4>>2],vu(o,4496,u)|0,n[$t>>2]=11,n[$t+4>>2]=0,n[u>>2]=n[$t>>2],n[u+4>>2]=n[$t+4>>2],vu(o,4508,u)|0,n[fr>>2]=3,n[fr+4>>2]=0,n[u>>2]=n[fr>>2],n[u+4>>2]=n[fr+4>>2],YL(o,4519,u)|0,n[Gr>>2]=4,n[Gr+4>>2]=0,n[u>>2]=n[Gr>>2],n[u+4>>2]=n[Gr+4>>2],aPe(o,4530,u)|0,n[Lt>>2]=19,n[Lt+4>>2]=0,n[u>>2]=n[Lt>>2],n[u+4>>2]=n[Lt+4>>2],lPe(o,4542,u)|0,n[Ve>>2]=12,n[Ve+4>>2]=0,n[u>>2]=n[Ve>>2],n[u+4>>2]=n[Ve+4>>2],cPe(o,4554,u)|0,n[He>>2]=13,n[He+4>>2]=0,n[u>>2]=n[He>>2],n[u+4>>2]=n[He+4>>2],uPe(o,4568,u)|0,n[ft>>2]=2,n[ft+4>>2]=0,n[u>>2]=n[ft>>2],n[u+4>>2]=n[ft+4>>2],fPe(o,4578,u)|0,n[Xe>>2]=20,n[Xe+4>>2]=0,n[u>>2]=n[Xe>>2],n[u+4>>2]=n[Xe+4>>2],APe(o,4587,u)|0,n[nt>>2]=22,n[nt+4>>2]=0,n[u>>2]=n[nt>>2],n[u+4>>2]=n[nt+4>>2],kr(o,4602,u)|0,n[Te>>2]=23,n[Te+4>>2]=0,n[u>>2]=n[Te>>2],n[u+4>>2]=n[Te+4>>2],kr(o,4619,u)|0,n[Le>>2]=14,n[Le+4>>2]=0,n[u>>2]=n[Le>>2],n[u+4>>2]=n[Le+4>>2],pPe(o,4629,u)|0,n[Ye>>2]=1,n[Ye+4>>2]=0,n[u>>2]=n[Ye>>2],n[u+4>>2]=n[Ye+4>>2],hPe(o,4637,u)|0,n[oe>>2]=4,n[oe+4>>2]=0,n[u>>2]=n[oe>>2],n[u+4>>2]=n[oe+4>>2],tp(o,4653,u)|0,n[q>>2]=5,n[q+4>>2]=0,n[u>>2]=n[q>>2],n[u+4>>2]=n[q+4>>2],tp(o,4669,u)|0,n[L>>2]=6,n[L+4>>2]=0,n[u>>2]=n[L>>2],n[u+4>>2]=n[L+4>>2],tp(o,4686,u)|0,n[M>>2]=7,n[M+4>>2]=0,n[u>>2]=n[M>>2],n[u+4>>2]=n[M+4>>2],tp(o,4701,u)|0,n[R>>2]=8,n[R+4>>2]=0,n[u>>2]=n[R>>2],n[u+4>>2]=n[R+4>>2],tp(o,4719,u)|0,n[k>>2]=9,n[k+4>>2]=0,n[u>>2]=n[k>>2],n[u+4>>2]=n[k+4>>2],tp(o,4736,u)|0,n[B>>2]=21,n[B+4>>2]=0,n[u>>2]=n[B>>2],n[u+4>>2]=n[B+4>>2],gPe(o,4754,u)|0,n[m>>2]=2,n[m+4>>2]=0,n[u>>2]=n[m>>2],n[u+4>>2]=n[m+4>>2],QP(o,4772,u)|0,n[d>>2]=3,n[d+4>>2]=0,n[u>>2]=n[d>>2],n[u+4>>2]=n[d+4>>2],QP(o,4790,u)|0,n[A>>2]=4,n[A+4>>2]=0,n[u>>2]=n[A>>2],n[u+4>>2]=n[A+4>>2],QP(o,4808,u)|0,I=l}function dt(o,l){o=o|0,l=l|0;var u=0;u=CNe()|0,n[o>>2]=u,wNe(u,l),_h(n[o>>2]|0)}function Zt(o,l,u){return o=o|0,l=l|0,u=u|0,aNe(o,Sn(l)|0,u,0),o|0}function Dr(o,l,u){return o=o|0,l=l|0,u=u|0,WFe(o,Sn(l)|0,u,0),o|0}function ti(o,l,u){return o=o|0,l=l|0,u=u|0,QFe(o,Sn(l)|0,u,0),o|0}function kr(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],gFe(o,l,d),I=A,o|0}function Nn(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],zTe(o,l,d),I=A,o|0}function Hn(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],FTe(o,l,d),I=A,o|0}function zr(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],yTe(o,l,d),I=A,o|0}function ui(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],rTe(o,l,d),I=A,o|0}function vu(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],_Re(o,l,d),I=A,o|0}function YL(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],vRe(o,l,d),I=A,o|0}function id(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],zQe(o,l,d),I=A,o|0}function tp(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],FQe(o,l,d),I=A,o|0}function QP(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],yQe(o,l,d),I=A,o|0}function aPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],rQe(o,l,d),I=A,o|0}function lPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],_ke(o,l,d),I=A,o|0}function cPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Ske(o,l,d),I=A,o|0}function uPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],uke(o,l,d),I=A,o|0}function fPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Yxe(o,l,d),I=A,o|0}function APe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],kxe(o,l,d),I=A,o|0}function pPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],hxe(o,l,d),I=A,o|0}function hPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],zPe(o,l,d),I=A,o|0}function gPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],dPe(o,l,d),I=A,o|0}function dPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],mPe(o,u,d,1),I=A}function Sn(o){return o=o|0,o|0}function mPe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=KL()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=yPe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,EPe(m,A)|0,A),I=d}function KL(){var o=0,l=0;if(s[7616]|0||(FJ(9136),gr(24,9136,U|0)|0,l=7616,n[l>>2]=1,n[l+4>>2]=0),!(_r(9136)|0)){o=9136,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));FJ(9136)}return 9136}function yPe(o){return o=o|0,0}function EPe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=KL()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],TJ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(wPe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Dn(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0;var B=0,k=0,R=0,M=0,L=0,q=0,oe=0,Ye=0;B=I,I=I+32|0,oe=B+24|0,q=B+20|0,R=B+16|0,L=B+12|0,M=B+8|0,k=B+4|0,Ye=B,n[q>>2]=l,n[R>>2]=u,n[L>>2]=A,n[M>>2]=d,n[k>>2]=m,m=o+28|0,n[Ye>>2]=n[m>>2],n[oe>>2]=n[Ye>>2],IPe(o+24|0,oe,q,L,M,R,k)|0,n[m>>2]=n[n[m>>2]>>2],I=B}function IPe(o,l,u,A,d,m,B){return o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,B=B|0,o=CPe(l)|0,l=Jt(24)|0,RJ(l+4|0,n[u>>2]|0,n[A>>2]|0,n[d>>2]|0,n[m>>2]|0,n[B>>2]|0),n[l>>2]=n[o>>2],n[o>>2]=l,l|0}function CPe(o){return o=o|0,n[o>>2]|0}function RJ(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,n[o>>2]=l,n[o+4>>2]=u,n[o+8>>2]=A,n[o+12>>2]=d,n[o+16>>2]=m}function yr(o,l){return o=o|0,l=l|0,l|o|0}function TJ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function wPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=BPe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,vPe(k,oe>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],TJ(m,A,u),n[R>>2]=(n[R>>2]|0)+12,SPe(o,k),DPe(k),I=M;return}}function BPe(o){return o=o|0,357913941}function vPe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function SPe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function DPe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function FJ(o){o=o|0,xPe(o)}function bPe(o){o=o|0,PPe(o+24|0)}function _r(o){return o=o|0,n[o>>2]|0}function PPe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function xPe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,3,l,kPe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function tn(){return 9228}function kPe(){return 1140}function QPe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;return u=I,I=I+16|0,A=u+8|0,d=u,m=RPe(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],l=TPe(l,A)|0,I=u,l|0}function rn(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,n[o>>2]=l,n[o+4>>2]=u,n[o+8>>2]=A,n[o+12>>2]=d,n[o+16>>2]=m}function RPe(o){return o=o|0,(n[(KL()|0)+24>>2]|0)+(o*12|0)|0}function TPe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;return d=I,I=I+48|0,A=d,u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),op[u&31](A,o),A=FPe(A)|0,I=d,A|0}function FPe(o){o=o|0;var l=0,u=0,A=0,d=0;return d=I,I=I+32|0,l=d+12|0,u=d,A=JL(NJ()|0)|0,A?(zL(l,A),ZL(u,l),NPe(o,u),o=XL(l)|0):o=OPe(o)|0,I=d,o|0}function NJ(){var o=0;return s[7632]|0||(VPe(9184),gr(25,9184,U|0)|0,o=7632,n[o>>2]=1,n[o+4>>2]=0),9184}function JL(o){return o=o|0,n[o+36>>2]|0}function zL(o,l){o=o|0,l=l|0,n[o>>2]=l,n[o+4>>2]=o,n[o+8>>2]=0}function ZL(o,l){o=o|0,l=l|0,n[o>>2]=n[l>>2],n[o+4>>2]=n[l+4>>2],n[o+8>>2]=0}function NPe(o,l){o=o|0,l=l|0,_Pe(l,o,o+8|0,o+16|0,o+24|0,o+32|0,o+40|0)|0}function XL(o){return o=o|0,n[(n[o+4>>2]|0)+8>>2]|0}function OPe(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0,R=0;R=I,I=I+16|0,u=R+4|0,A=R,d=Ul(8)|0,m=d,B=Jt(48)|0,k=B,l=k+48|0;do n[k>>2]=n[o>>2],k=k+4|0,o=o+4|0;while((k|0)<(l|0));return l=m+4|0,n[l>>2]=B,k=Jt(8)|0,B=n[l>>2]|0,n[A>>2]=0,n[u>>2]=n[A>>2],OJ(k,B,u),n[d>>2]=k,I=R,m|0}function OJ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Jt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1092,n[u+12>>2]=l,n[o+4>>2]=u}function LPe(o){o=o|0,rE(o),It(o)}function MPe(o){o=o|0,o=n[o+12>>2]|0,o|0&&It(o)}function UPe(o){o=o|0,It(o)}function _Pe(o,l,u,A,d,m,B){return o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,B=B|0,m=HPe(n[o>>2]|0,l,u,A,d,m,B)|0,B=o+4|0,n[(n[B>>2]|0)+8>>2]=m,n[(n[B>>2]|0)+8>>2]|0}function HPe(o,l,u,A,d,m,B){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,B=B|0;var k=0,R=0;return k=I,I=I+16|0,R=k,_l(R),o=Us(o)|0,B=jPe(o,+E[l>>3],+E[u>>3],+E[A>>3],+E[d>>3],+E[m>>3],+E[B>>3])|0,Hl(R),I=k,B|0}function jPe(o,l,u,A,d,m,B){o=o|0,l=+l,u=+u,A=+A,d=+d,m=+m,B=+B;var k=0;return k=Ia(GPe()|0)|0,l=+el(l),u=+el(u),A=+el(A),d=+el(d),m=+el(m),lo(0,k|0,o|0,+l,+u,+A,+d,+m,+ +el(B))|0}function GPe(){var o=0;return s[7624]|0||(qPe(9172),o=7624,n[o>>2]=1,n[o+4>>2]=0),9172}function qPe(o){o=o|0,Oo(o,WPe()|0,6)}function WPe(){return 1112}function VPe(o){o=o|0,Nh(o)}function YPe(o){o=o|0,LJ(o+24|0),MJ(o+16|0)}function LJ(o){o=o|0,JPe(o)}function MJ(o){o=o|0,KPe(o)}function KPe(o){o=o|0;var l=0,u=0;if(l=n[o>>2]|0,l|0)do u=l,l=n[l>>2]|0,It(u);while(l|0);n[o>>2]=0}function JPe(o){o=o|0;var l=0,u=0;if(l=n[o>>2]|0,l|0)do u=l,l=n[l>>2]|0,It(u);while(l|0);n[o>>2]=0}function Nh(o){o=o|0;var l=0;n[o+16>>2]=0,n[o+20>>2]=0,l=o+24|0,n[l>>2]=0,n[o+28>>2]=l,n[o+36>>2]=0,s[o+40>>0]=0,s[o+41>>0]=0}function zPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],ZPe(o,u,d,0),I=A}function ZPe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=$L()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=XPe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,$Pe(m,A)|0,A),I=d}function $L(){var o=0,l=0;if(s[7640]|0||(_J(9232),gr(26,9232,U|0)|0,l=7640,n[l>>2]=1,n[l+4>>2]=0),!(_r(9232)|0)){o=9232,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));_J(9232)}return 9232}function XPe(o){return o=o|0,0}function $Pe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=$L()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],UJ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(exe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function UJ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function exe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=txe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,rxe(k,oe>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],UJ(m,A,u),n[R>>2]=(n[R>>2]|0)+12,nxe(o,k),ixe(k),I=M;return}}function txe(o){return o=o|0,357913941}function rxe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function nxe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function ixe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function _J(o){o=o|0,axe(o)}function sxe(o){o=o|0,oxe(o+24|0)}function oxe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function axe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,1,l,lxe()|0,3),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function lxe(){return 1144}function cxe(o,l,u,A,d){o=o|0,l=l|0,u=+u,A=+A,d=d|0;var m=0,B=0,k=0,R=0;m=I,I=I+16|0,B=m+8|0,k=m,R=uxe(o)|0,o=n[R+4>>2]|0,n[k>>2]=n[R>>2],n[k+4>>2]=o,n[B>>2]=n[k>>2],n[B+4>>2]=n[k+4>>2],fxe(l,B,u,A,d),I=m}function uxe(o){return o=o|0,(n[($L()|0)+24>>2]|0)+(o*12|0)|0}function fxe(o,l,u,A,d){o=o|0,l=l|0,u=+u,A=+A,d=d|0;var m=0,B=0,k=0,R=0,M=0;M=I,I=I+16|0,B=M+2|0,k=M+1|0,R=M,m=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(m=n[(n[o>>2]|0)+m>>2]|0),Tf(B,u),u=+Ff(B,u),Tf(k,A),A=+Ff(k,A),rp(R,d),R=np(R,d)|0,tX[m&1](o,u,A,R),I=M}function Tf(o,l){o=o|0,l=+l}function Ff(o,l){return o=o|0,l=+l,+ +pxe(l)}function rp(o,l){o=o|0,l=l|0}function np(o,l){return o=o|0,l=l|0,Axe(l)|0}function Axe(o){return o=o|0,o|0}function pxe(o){return o=+o,+o}function hxe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],gxe(o,u,d,1),I=A}function gxe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=eM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=dxe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,mxe(m,A)|0,A),I=d}function eM(){var o=0,l=0;if(s[7648]|0||(jJ(9268),gr(27,9268,U|0)|0,l=7648,n[l>>2]=1,n[l+4>>2]=0),!(_r(9268)|0)){o=9268,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));jJ(9268)}return 9268}function dxe(o){return o=o|0,0}function mxe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=eM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],HJ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(yxe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function HJ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function yxe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=Exe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,Ixe(k,oe>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],HJ(m,A,u),n[R>>2]=(n[R>>2]|0)+12,Cxe(o,k),wxe(k),I=M;return}}function Exe(o){return o=o|0,357913941}function Ixe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function Cxe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function wxe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function jJ(o){o=o|0,Sxe(o)}function Bxe(o){o=o|0,vxe(o+24|0)}function vxe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function Sxe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,4,l,Dxe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function Dxe(){return 1160}function bxe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;return u=I,I=I+16|0,A=u+8|0,d=u,m=Pxe(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],l=xxe(l,A)|0,I=u,l|0}function Pxe(o){return o=o|0,(n[(eM()|0)+24>>2]|0)+(o*12|0)|0}function xxe(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),GJ(pd[u&31](o)|0)|0}function GJ(o){return o=o|0,o&1|0}function kxe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Qxe(o,u,d,0),I=A}function Qxe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=tM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=Rxe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,Txe(m,A)|0,A),I=d}function tM(){var o=0,l=0;if(s[7656]|0||(WJ(9304),gr(28,9304,U|0)|0,l=7656,n[l>>2]=1,n[l+4>>2]=0),!(_r(9304)|0)){o=9304,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));WJ(9304)}return 9304}function Rxe(o){return o=o|0,0}function Txe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=tM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],qJ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(Fxe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function qJ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function Fxe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=Nxe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,Oxe(k,oe>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],qJ(m,A,u),n[R>>2]=(n[R>>2]|0)+12,Lxe(o,k),Mxe(k),I=M;return}}function Nxe(o){return o=o|0,357913941}function Oxe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function Lxe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function Mxe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function WJ(o){o=o|0,Hxe(o)}function Uxe(o){o=o|0,_xe(o+24|0)}function _xe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function Hxe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,5,l,jxe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function jxe(){return 1164}function Gxe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,d=A+8|0,m=A,B=qxe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Wxe(l,d,u),I=A}function qxe(o){return o=o|0,(n[(tM()|0)+24>>2]|0)+(o*12|0)|0}function Wxe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),Oh(d,u),u=Lh(d,u)|0,op[A&31](o,u),Mh(d),I=m}function Oh(o,l){o=o|0,l=l|0,Vxe(o,l)}function Lh(o,l){return o=o|0,l=l|0,o|0}function Mh(o){o=o|0,bf(o)}function Vxe(o,l){o=o|0,l=l|0,rM(o,l)}function rM(o,l){o=o|0,l=l|0,n[o>>2]=l}function Yxe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Kxe(o,u,d,0),I=A}function Kxe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=nM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=Jxe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,zxe(m,A)|0,A),I=d}function nM(){var o=0,l=0;if(s[7664]|0||(YJ(9340),gr(29,9340,U|0)|0,l=7664,n[l>>2]=1,n[l+4>>2]=0),!(_r(9340)|0)){o=9340,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));YJ(9340)}return 9340}function Jxe(o){return o=o|0,0}function zxe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=nM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],VJ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(Zxe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function VJ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function Zxe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=Xxe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,$xe(k,oe>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],VJ(m,A,u),n[R>>2]=(n[R>>2]|0)+12,eke(o,k),tke(k),I=M;return}}function Xxe(o){return o=o|0,357913941}function $xe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function eke(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function tke(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function YJ(o){o=o|0,ike(o)}function rke(o){o=o|0,nke(o+24|0)}function nke(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function ike(o){o=o|0;var l=0;l=tn()|0,rn(o,2,4,l,ske()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function ske(){return 1180}function oke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=ake(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],u=lke(l,d,u)|0,I=A,u|0}function ake(o){return o=o|0,(n[(nM()|0)+24>>2]|0)+(o*12|0)|0}function lke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;return m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),sd(d,u),d=od(d,u)|0,d=RP($M[A&15](o,d)|0)|0,I=m,d|0}function sd(o,l){o=o|0,l=l|0}function od(o,l){return o=o|0,l=l|0,cke(l)|0}function RP(o){return o=o|0,o|0}function cke(o){return o=o|0,o|0}function uke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],fke(o,u,d,0),I=A}function fke(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=iM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=Ake(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,pke(m,A)|0,A),I=d}function iM(){var o=0,l=0;if(s[7672]|0||(JJ(9376),gr(30,9376,U|0)|0,l=7672,n[l>>2]=1,n[l+4>>2]=0),!(_r(9376)|0)){o=9376,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));JJ(9376)}return 9376}function Ake(o){return o=o|0,0}function pke(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=iM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],KJ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(hke(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function KJ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function hke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=gke(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,dke(k,oe>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],KJ(m,A,u),n[R>>2]=(n[R>>2]|0)+12,mke(o,k),yke(k),I=M;return}}function gke(o){return o=o|0,357913941}function dke(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function mke(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function yke(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function JJ(o){o=o|0,Cke(o)}function Eke(o){o=o|0,Ike(o+24|0)}function Ike(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function Cke(o){o=o|0;var l=0;l=tn()|0,rn(o,2,5,l,zJ()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function zJ(){return 1196}function wke(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;return u=I,I=I+16|0,A=u+8|0,d=u,m=Bke(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],l=vke(l,A)|0,I=u,l|0}function Bke(o){return o=o|0,(n[(iM()|0)+24>>2]|0)+(o*12|0)|0}function vke(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),RP(pd[u&31](o)|0)|0}function Ske(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Dke(o,u,d,1),I=A}function Dke(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=sM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=bke(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,Pke(m,A)|0,A),I=d}function sM(){var o=0,l=0;if(s[7680]|0||(XJ(9412),gr(31,9412,U|0)|0,l=7680,n[l>>2]=1,n[l+4>>2]=0),!(_r(9412)|0)){o=9412,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));XJ(9412)}return 9412}function bke(o){return o=o|0,0}function Pke(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=sM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],ZJ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(xke(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function ZJ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function xke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=kke(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,Qke(k,oe>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],ZJ(m,A,u),n[R>>2]=(n[R>>2]|0)+12,Rke(o,k),Tke(k),I=M;return}}function kke(o){return o=o|0,357913941}function Qke(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function Rke(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function Tke(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function XJ(o){o=o|0,Oke(o)}function Fke(o){o=o|0,Nke(o+24|0)}function Nke(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function Oke(o){o=o|0;var l=0;l=tn()|0,rn(o,2,6,l,$J()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function $J(){return 1200}function Lke(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;return u=I,I=I+16|0,A=u+8|0,d=u,m=Mke(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],l=Uke(l,A)|0,I=u,l|0}function Mke(o){return o=o|0,(n[(sM()|0)+24>>2]|0)+(o*12|0)|0}function Uke(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),TP(pd[u&31](o)|0)|0}function TP(o){return o=o|0,o|0}function _ke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Hke(o,u,d,0),I=A}function Hke(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=oM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=jke(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,Gke(m,A)|0,A),I=d}function oM(){var o=0,l=0;if(s[7688]|0||(tz(9448),gr(32,9448,U|0)|0,l=7688,n[l>>2]=1,n[l+4>>2]=0),!(_r(9448)|0)){o=9448,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));tz(9448)}return 9448}function jke(o){return o=o|0,0}function Gke(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=oM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],ez(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(qke(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function ez(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function qke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=Wke(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,Vke(k,oe>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],ez(m,A,u),n[R>>2]=(n[R>>2]|0)+12,Yke(o,k),Kke(k),I=M;return}}function Wke(o){return o=o|0,357913941}function Vke(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function Yke(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function Kke(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function tz(o){o=o|0,Zke(o)}function Jke(o){o=o|0,zke(o+24|0)}function zke(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function Zke(o){o=o|0;var l=0;l=tn()|0,rn(o,2,6,l,rz()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function rz(){return 1204}function Xke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,d=A+8|0,m=A,B=$ke(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],eQe(l,d,u),I=A}function $ke(o){return o=o|0,(n[(oM()|0)+24>>2]|0)+(o*12|0)|0}function eQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),aM(d,u),d=lM(d,u)|0,op[A&31](o,d),I=m}function aM(o,l){o=o|0,l=l|0}function lM(o,l){return o=o|0,l=l|0,tQe(l)|0}function tQe(o){return o=o|0,o|0}function rQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],nQe(o,u,d,0),I=A}function nQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=cM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=iQe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,sQe(m,A)|0,A),I=d}function cM(){var o=0,l=0;if(s[7696]|0||(iz(9484),gr(33,9484,U|0)|0,l=7696,n[l>>2]=1,n[l+4>>2]=0),!(_r(9484)|0)){o=9484,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));iz(9484)}return 9484}function iQe(o){return o=o|0,0}function sQe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=cM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],nz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(oQe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function nz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function oQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=aQe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,lQe(k,oe>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],nz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,cQe(o,k),uQe(k),I=M;return}}function aQe(o){return o=o|0,357913941}function lQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function cQe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function uQe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function iz(o){o=o|0,pQe(o)}function fQe(o){o=o|0,AQe(o+24|0)}function AQe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function pQe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,1,l,hQe()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function hQe(){return 1212}function gQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;d=I,I=I+16|0,m=d+8|0,B=d,k=dQe(o)|0,o=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=o,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],mQe(l,m,u,A),I=d}function dQe(o){return o=o|0,(n[(cM()|0)+24>>2]|0)+(o*12|0)|0}function mQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;k=I,I=I+16|0,m=k+1|0,B=k,d=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(d=n[(n[o>>2]|0)+d>>2]|0),aM(m,u),m=lM(m,u)|0,sd(B,A),B=od(B,A)|0,DB[d&15](o,m,B),I=k}function yQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],EQe(o,u,d,1),I=A}function EQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=uM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=IQe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,CQe(m,A)|0,A),I=d}function uM(){var o=0,l=0;if(s[7704]|0||(oz(9520),gr(34,9520,U|0)|0,l=7704,n[l>>2]=1,n[l+4>>2]=0),!(_r(9520)|0)){o=9520,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));oz(9520)}return 9520}function IQe(o){return o=o|0,0}function CQe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=uM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],sz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(wQe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function sz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function wQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=BQe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,vQe(k,oe>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],sz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,SQe(o,k),DQe(k),I=M;return}}function BQe(o){return o=o|0,357913941}function vQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function SQe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function DQe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function oz(o){o=o|0,xQe(o)}function bQe(o){o=o|0,PQe(o+24|0)}function PQe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function xQe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,1,l,kQe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function kQe(){return 1224}function QQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;return d=I,I=I+16|0,m=d+8|0,B=d,k=RQe(o)|0,o=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=o,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],A=+TQe(l,m,u),I=d,+A}function RQe(o){return o=o|0,(n[(uM()|0)+24>>2]|0)+(o*12|0)|0}function TQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),rp(d,u),d=np(d,u)|0,B=+Rf(+nX[A&7](o,d)),I=m,+B}function FQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],NQe(o,u,d,1),I=A}function NQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=fM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=OQe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,LQe(m,A)|0,A),I=d}function fM(){var o=0,l=0;if(s[7712]|0||(lz(9556),gr(35,9556,U|0)|0,l=7712,n[l>>2]=1,n[l+4>>2]=0),!(_r(9556)|0)){o=9556,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));lz(9556)}return 9556}function OQe(o){return o=o|0,0}function LQe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=fM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],az(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(MQe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function az(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function MQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=UQe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,_Qe(k,oe>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],az(m,A,u),n[R>>2]=(n[R>>2]|0)+12,HQe(o,k),jQe(k),I=M;return}}function UQe(o){return o=o|0,357913941}function _Qe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function HQe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function jQe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function lz(o){o=o|0,WQe(o)}function GQe(o){o=o|0,qQe(o+24|0)}function qQe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function WQe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,5,l,VQe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function VQe(){return 1232}function YQe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=KQe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],u=+JQe(l,d),I=A,+u}function KQe(o){return o=o|0,(n[(fM()|0)+24>>2]|0)+(o*12|0)|0}function JQe(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),+ +Rf(+rX[u&15](o))}function zQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],ZQe(o,u,d,1),I=A}function ZQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=AM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=XQe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,$Qe(m,A)|0,A),I=d}function AM(){var o=0,l=0;if(s[7720]|0||(uz(9592),gr(36,9592,U|0)|0,l=7720,n[l>>2]=1,n[l+4>>2]=0),!(_r(9592)|0)){o=9592,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));uz(9592)}return 9592}function XQe(o){return o=o|0,0}function $Qe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=AM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],cz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(eRe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function cz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function eRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=tRe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,rRe(k,oe>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],cz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,nRe(o,k),iRe(k),I=M;return}}function tRe(o){return o=o|0,357913941}function rRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function nRe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function iRe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function uz(o){o=o|0,aRe(o)}function sRe(o){o=o|0,oRe(o+24|0)}function oRe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function aRe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,7,l,lRe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function lRe(){return 1276}function cRe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;return u=I,I=I+16|0,A=u+8|0,d=u,m=uRe(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],l=fRe(l,A)|0,I=u,l|0}function uRe(o){return o=o|0,(n[(AM()|0)+24>>2]|0)+(o*12|0)|0}function fRe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;return d=I,I=I+16|0,A=d,u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),op[u&31](A,o),A=fz(A)|0,I=d,A|0}function fz(o){o=o|0;var l=0,u=0,A=0,d=0;return d=I,I=I+32|0,l=d+12|0,u=d,A=JL(Az()|0)|0,A?(zL(l,A),ZL(u,l),ARe(o,u),o=XL(l)|0):o=pRe(o)|0,I=d,o|0}function Az(){var o=0;return s[7736]|0||(BRe(9640),gr(25,9640,U|0)|0,o=7736,n[o>>2]=1,n[o+4>>2]=0),9640}function ARe(o,l){o=o|0,l=l|0,mRe(l,o,o+8|0)|0}function pRe(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0;return u=I,I=I+16|0,d=u+4|0,B=u,A=Ul(8)|0,l=A,k=Jt(16)|0,n[k>>2]=n[o>>2],n[k+4>>2]=n[o+4>>2],n[k+8>>2]=n[o+8>>2],n[k+12>>2]=n[o+12>>2],m=l+4|0,n[m>>2]=k,o=Jt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],pM(o,m,d),n[A>>2]=o,I=u,l|0}function pM(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Jt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1244,n[u+12>>2]=l,n[o+4>>2]=u}function hRe(o){o=o|0,rE(o),It(o)}function gRe(o){o=o|0,o=n[o+12>>2]|0,o|0&&It(o)}function dRe(o){o=o|0,It(o)}function mRe(o,l,u){return o=o|0,l=l|0,u=u|0,l=yRe(n[o>>2]|0,l,u)|0,u=o+4|0,n[(n[u>>2]|0)+8>>2]=l,n[(n[u>>2]|0)+8>>2]|0}function yRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;return A=I,I=I+16|0,d=A,_l(d),o=Us(o)|0,u=ERe(o,n[l>>2]|0,+E[u>>3])|0,Hl(d),I=A,u|0}function ERe(o,l,u){o=o|0,l=l|0,u=+u;var A=0;return A=Ia(IRe()|0)|0,l=Jy(l)|0,iu(0,A|0,o|0,l|0,+ +el(u))|0}function IRe(){var o=0;return s[7728]|0||(CRe(9628),o=7728,n[o>>2]=1,n[o+4>>2]=0),9628}function CRe(o){o=o|0,Oo(o,wRe()|0,2)}function wRe(){return 1264}function BRe(o){o=o|0,Nh(o)}function vRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],SRe(o,u,d,1),I=A}function SRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=hM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=DRe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,bRe(m,A)|0,A),I=d}function hM(){var o=0,l=0;if(s[7744]|0||(hz(9684),gr(37,9684,U|0)|0,l=7744,n[l>>2]=1,n[l+4>>2]=0),!(_r(9684)|0)){o=9684,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));hz(9684)}return 9684}function DRe(o){return o=o|0,0}function bRe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=hM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],pz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(PRe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function pz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function PRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=xRe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,kRe(k,oe>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],pz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,QRe(o,k),RRe(k),I=M;return}}function xRe(o){return o=o|0,357913941}function kRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function QRe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function RRe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function hz(o){o=o|0,NRe(o)}function TRe(o){o=o|0,FRe(o+24|0)}function FRe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function NRe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,5,l,ORe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function ORe(){return 1280}function LRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=MRe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],u=URe(l,d,u)|0,I=A,u|0}function MRe(o){return o=o|0,(n[(hM()|0)+24>>2]|0)+(o*12|0)|0}function URe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return B=I,I=I+32|0,d=B,m=B+16|0,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),rp(m,u),m=np(m,u)|0,DB[A&15](d,o,m),m=fz(d)|0,I=B,m|0}function _Re(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],HRe(o,u,d,1),I=A}function HRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=gM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=jRe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,GRe(m,A)|0,A),I=d}function gM(){var o=0,l=0;if(s[7752]|0||(dz(9720),gr(38,9720,U|0)|0,l=7752,n[l>>2]=1,n[l+4>>2]=0),!(_r(9720)|0)){o=9720,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));dz(9720)}return 9720}function jRe(o){return o=o|0,0}function GRe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=gM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],gz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(qRe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function gz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function qRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=WRe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,VRe(k,oe>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],gz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,YRe(o,k),KRe(k),I=M;return}}function WRe(o){return o=o|0,357913941}function VRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function YRe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function KRe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function dz(o){o=o|0,ZRe(o)}function JRe(o){o=o|0,zRe(o+24|0)}function zRe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function ZRe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,8,l,XRe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function XRe(){return 1288}function $Re(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;return u=I,I=I+16|0,A=u+8|0,d=u,m=eTe(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],l=tTe(l,A)|0,I=u,l|0}function eTe(o){return o=o|0,(n[(gM()|0)+24>>2]|0)+(o*12|0)|0}function tTe(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),nd(pd[u&31](o)|0)|0}function rTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],nTe(o,u,d,0),I=A}function nTe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=dM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=iTe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,sTe(m,A)|0,A),I=d}function dM(){var o=0,l=0;if(s[7760]|0||(yz(9756),gr(39,9756,U|0)|0,l=7760,n[l>>2]=1,n[l+4>>2]=0),!(_r(9756)|0)){o=9756,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));yz(9756)}return 9756}function iTe(o){return o=o|0,0}function sTe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=dM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],mz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(oTe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function mz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function oTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=aTe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,lTe(k,oe>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],mz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,cTe(o,k),uTe(k),I=M;return}}function aTe(o){return o=o|0,357913941}function lTe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function cTe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function uTe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function yz(o){o=o|0,pTe(o)}function fTe(o){o=o|0,ATe(o+24|0)}function ATe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function pTe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,8,l,hTe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function hTe(){return 1292}function gTe(o,l,u){o=o|0,l=l|0,u=+u;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,d=A+8|0,m=A,B=dTe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],mTe(l,d,u),I=A}function dTe(o){return o=o|0,(n[(dM()|0)+24>>2]|0)+(o*12|0)|0}function mTe(o,l,u){o=o|0,l=l|0,u=+u;var A=0,d=0,m=0;m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),Tf(d,u),u=+Ff(d,u),$Z[A&31](o,u),I=m}function yTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],ETe(o,u,d,0),I=A}function ETe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=mM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=ITe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,CTe(m,A)|0,A),I=d}function mM(){var o=0,l=0;if(s[7768]|0||(Iz(9792),gr(40,9792,U|0)|0,l=7768,n[l>>2]=1,n[l+4>>2]=0),!(_r(9792)|0)){o=9792,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Iz(9792)}return 9792}function ITe(o){return o=o|0,0}function CTe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=mM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],Ez(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(wTe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Ez(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function wTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=BTe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,vTe(k,oe>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Ez(m,A,u),n[R>>2]=(n[R>>2]|0)+12,STe(o,k),DTe(k),I=M;return}}function BTe(o){return o=o|0,357913941}function vTe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function STe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function DTe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Iz(o){o=o|0,xTe(o)}function bTe(o){o=o|0,PTe(o+24|0)}function PTe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function xTe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,1,l,kTe()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function kTe(){return 1300}function QTe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=+A;var d=0,m=0,B=0,k=0;d=I,I=I+16|0,m=d+8|0,B=d,k=RTe(o)|0,o=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=o,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],TTe(l,m,u,A),I=d}function RTe(o){return o=o|0,(n[(mM()|0)+24>>2]|0)+(o*12|0)|0}function TTe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=+A;var d=0,m=0,B=0,k=0;k=I,I=I+16|0,m=k+1|0,B=k,d=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(d=n[(n[o>>2]|0)+d>>2]|0),rp(m,u),m=np(m,u)|0,Tf(B,A),A=+Ff(B,A),aX[d&15](o,m,A),I=k}function FTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],NTe(o,u,d,0),I=A}function NTe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=yM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=OTe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,LTe(m,A)|0,A),I=d}function yM(){var o=0,l=0;if(s[7776]|0||(wz(9828),gr(41,9828,U|0)|0,l=7776,n[l>>2]=1,n[l+4>>2]=0),!(_r(9828)|0)){o=9828,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));wz(9828)}return 9828}function OTe(o){return o=o|0,0}function LTe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=yM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],Cz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(MTe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Cz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function MTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=UTe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,_Te(k,oe>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Cz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,HTe(o,k),jTe(k),I=M;return}}function UTe(o){return o=o|0,357913941}function _Te(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function HTe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function jTe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function wz(o){o=o|0,WTe(o)}function GTe(o){o=o|0,qTe(o+24|0)}function qTe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function WTe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,7,l,VTe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function VTe(){return 1312}function YTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,d=A+8|0,m=A,B=KTe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],JTe(l,d,u),I=A}function KTe(o){return o=o|0,(n[(yM()|0)+24>>2]|0)+(o*12|0)|0}function JTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),rp(d,u),d=np(d,u)|0,op[A&31](o,d),I=m}function zTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],ZTe(o,u,d,0),I=A}function ZTe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=EM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=XTe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,$Te(m,A)|0,A),I=d}function EM(){var o=0,l=0;if(s[7784]|0||(vz(9864),gr(42,9864,U|0)|0,l=7784,n[l>>2]=1,n[l+4>>2]=0),!(_r(9864)|0)){o=9864,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));vz(9864)}return 9864}function XTe(o){return o=o|0,0}function $Te(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=EM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],Bz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(eFe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Bz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function eFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=tFe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,rFe(k,oe>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Bz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,nFe(o,k),iFe(k),I=M;return}}function tFe(o){return o=o|0,357913941}function rFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function nFe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function iFe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function vz(o){o=o|0,aFe(o)}function sFe(o){o=o|0,oFe(o+24|0)}function oFe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function aFe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,8,l,lFe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function lFe(){return 1320}function cFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,d=A+8|0,m=A,B=uFe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],fFe(l,d,u),I=A}function uFe(o){return o=o|0,(n[(EM()|0)+24>>2]|0)+(o*12|0)|0}function fFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),AFe(d,u),d=pFe(d,u)|0,op[A&31](o,d),I=m}function AFe(o,l){o=o|0,l=l|0}function pFe(o,l){return o=o|0,l=l|0,hFe(l)|0}function hFe(o){return o=o|0,o|0}function gFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],dFe(o,u,d,0),I=A}function dFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=IM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=mFe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,yFe(m,A)|0,A),I=d}function IM(){var o=0,l=0;if(s[7792]|0||(Dz(9900),gr(43,9900,U|0)|0,l=7792,n[l>>2]=1,n[l+4>>2]=0),!(_r(9900)|0)){o=9900,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Dz(9900)}return 9900}function mFe(o){return o=o|0,0}function yFe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=IM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],Sz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(EFe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Sz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function EFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=IFe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,CFe(k,oe>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Sz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,wFe(o,k),BFe(k),I=M;return}}function IFe(o){return o=o|0,357913941}function CFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function wFe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function BFe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Dz(o){o=o|0,DFe(o)}function vFe(o){o=o|0,SFe(o+24|0)}function SFe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function DFe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,22,l,bFe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function bFe(){return 1344}function PFe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;u=I,I=I+16|0,A=u+8|0,d=u,m=xFe(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],kFe(l,A),I=u}function xFe(o){return o=o|0,(n[(IM()|0)+24>>2]|0)+(o*12|0)|0}function kFe(o,l){o=o|0,l=l|0;var u=0;u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),sp[u&127](o)}function QFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=CM()|0,o=RFe(u)|0,Dn(m,l,d,o,TFe(u,A)|0,A)}function CM(){var o=0,l=0;if(s[7800]|0||(Pz(9936),gr(44,9936,U|0)|0,l=7800,n[l>>2]=1,n[l+4>>2]=0),!(_r(9936)|0)){o=9936,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Pz(9936)}return 9936}function RFe(o){return o=o|0,o|0}function TFe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,R=CM()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(bz(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(FFe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function bz(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function FFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=NFe(o)|0,A>>>0>>0)an(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,OFe(d,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=d+8|0,bz(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,LFe(o,d),MFe(d),I=k;return}}function NFe(o){return o=o|0,536870911}function OFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function LFe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function MFe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function Pz(o){o=o|0,HFe(o)}function UFe(o){o=o|0,_Fe(o+24|0)}function _Fe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function HFe(o){o=o|0;var l=0;l=tn()|0,rn(o,1,23,l,rz()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function jFe(o,l){o=o|0,l=l|0,qFe(n[(GFe(o)|0)>>2]|0,l)}function GFe(o){return o=o|0,(n[(CM()|0)+24>>2]|0)+(o<<3)|0}function qFe(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,aM(A,l),l=lM(A,l)|0,sp[o&127](l),I=u}function WFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=wM()|0,o=VFe(u)|0,Dn(m,l,d,o,YFe(u,A)|0,A)}function wM(){var o=0,l=0;if(s[7808]|0||(kz(9972),gr(45,9972,U|0)|0,l=7808,n[l>>2]=1,n[l+4>>2]=0),!(_r(9972)|0)){o=9972,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));kz(9972)}return 9972}function VFe(o){return o=o|0,o|0}function YFe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,R=wM()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(xz(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(KFe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function xz(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function KFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=JFe(o)|0,A>>>0>>0)an(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,zFe(d,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=d+8|0,xz(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,ZFe(o,d),XFe(d),I=k;return}}function JFe(o){return o=o|0,536870911}function zFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function ZFe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function XFe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function kz(o){o=o|0,tNe(o)}function $Fe(o){o=o|0,eNe(o+24|0)}function eNe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function tNe(o){o=o|0;var l=0;l=tn()|0,rn(o,1,9,l,rNe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function rNe(){return 1348}function nNe(o,l){return o=o|0,l=l|0,sNe(n[(iNe(o)|0)>>2]|0,l)|0}function iNe(o){return o=o|0,(n[(wM()|0)+24>>2]|0)+(o<<3)|0}function sNe(o,l){o=o|0,l=l|0;var u=0,A=0;return u=I,I=I+16|0,A=u,Qz(A,l),l=Rz(A,l)|0,l=RP(pd[o&31](l)|0)|0,I=u,l|0}function Qz(o,l){o=o|0,l=l|0}function Rz(o,l){return o=o|0,l=l|0,oNe(l)|0}function oNe(o){return o=o|0,o|0}function aNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=BM()|0,o=lNe(u)|0,Dn(m,l,d,o,cNe(u,A)|0,A)}function BM(){var o=0,l=0;if(s[7816]|0||(Fz(10008),gr(46,10008,U|0)|0,l=7816,n[l>>2]=1,n[l+4>>2]=0),!(_r(10008)|0)){o=10008,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Fz(10008)}return 10008}function lNe(o){return o=o|0,o|0}function cNe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,R=BM()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(Tz(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(uNe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function Tz(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function uNe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=fNe(o)|0,A>>>0>>0)an(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,ANe(d,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=d+8|0,Tz(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,pNe(o,d),hNe(d),I=k;return}}function fNe(o){return o=o|0,536870911}function ANe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function pNe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function hNe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function Fz(o){o=o|0,mNe(o)}function gNe(o){o=o|0,dNe(o+24|0)}function dNe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function mNe(o){o=o|0;var l=0;l=tn()|0,rn(o,1,15,l,zJ()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function yNe(o){return o=o|0,INe(n[(ENe(o)|0)>>2]|0)|0}function ENe(o){return o=o|0,(n[(BM()|0)+24>>2]|0)+(o<<3)|0}function INe(o){return o=o|0,RP(YP[o&7]()|0)|0}function CNe(){var o=0;return s[7832]|0||(xNe(10052),gr(25,10052,U|0)|0,o=7832,n[o>>2]=1,n[o+4>>2]=0),10052}function wNe(o,l){o=o|0,l=l|0,n[o>>2]=BNe()|0,n[o+4>>2]=vNe()|0,n[o+12>>2]=l,n[o+8>>2]=SNe()|0,n[o+32>>2]=2}function BNe(){return 11709}function vNe(){return 1188}function SNe(){return FP()|0}function DNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Uh(A,896)|0)==512?u|0&&(bNe(u),It(u)):l|0&&(Uy(l),It(l))}function Uh(o,l){return o=o|0,l=l|0,l&o|0}function bNe(o){o=o|0,o=n[o+4>>2]|0,o|0&&Hh(o)}function FP(){var o=0;return s[7824]|0||(n[2511]=PNe()|0,n[2512]=0,o=7824,n[o>>2]=1,n[o+4>>2]=0),10044}function PNe(){return 0}function xNe(o){o=o|0,Nh(o)}function kNe(o){o=o|0;var l=0,u=0,A=0,d=0,m=0;l=I,I=I+32|0,u=l+24|0,m=l+16|0,d=l+8|0,A=l,QNe(o,4827),RNe(o,4834,3)|0,TNe(o,3682,47)|0,n[m>>2]=9,n[m+4>>2]=0,n[u>>2]=n[m>>2],n[u+4>>2]=n[m+4>>2],FNe(o,4841,u)|0,n[d>>2]=1,n[d+4>>2]=0,n[u>>2]=n[d>>2],n[u+4>>2]=n[d+4>>2],NNe(o,4871,u)|0,n[A>>2]=10,n[A+4>>2]=0,n[u>>2]=n[A>>2],n[u+4>>2]=n[A+4>>2],ONe(o,4891,u)|0,I=l}function QNe(o,l){o=o|0,l=l|0;var u=0;u=hLe()|0,n[o>>2]=u,gLe(u,l),_h(n[o>>2]|0)}function RNe(o,l,u){return o=o|0,l=l|0,u=u|0,XOe(o,Sn(l)|0,u,0),o|0}function TNe(o,l,u){return o=o|0,l=l|0,u=u|0,LOe(o,Sn(l)|0,u,0),o|0}function FNe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],yOe(o,l,d),I=A,o|0}function NNe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],$Ne(o,l,d),I=A,o|0}function ONe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],LNe(o,l,d),I=A,o|0}function LNe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],MNe(o,u,d,1),I=A}function MNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=vM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=UNe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,_Ne(m,A)|0,A),I=d}function vM(){var o=0,l=0;if(s[7840]|0||(Oz(10100),gr(48,10100,U|0)|0,l=7840,n[l>>2]=1,n[l+4>>2]=0),!(_r(10100)|0)){o=10100,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Oz(10100)}return 10100}function UNe(o){return o=o|0,0}function _Ne(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=vM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],Nz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(HNe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Nz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function HNe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=jNe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,GNe(k,oe>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Nz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,qNe(o,k),WNe(k),I=M;return}}function jNe(o){return o=o|0,357913941}function GNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function qNe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function WNe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Oz(o){o=o|0,KNe(o)}function VNe(o){o=o|0,YNe(o+24|0)}function YNe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function KNe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,6,l,JNe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function JNe(){return 1364}function zNe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=ZNe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],u=XNe(l,d,u)|0,I=A,u|0}function ZNe(o){return o=o|0,(n[(vM()|0)+24>>2]|0)+(o*12|0)|0}function XNe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;return m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),rp(d,u),d=np(d,u)|0,d=GJ($M[A&15](o,d)|0)|0,I=m,d|0}function $Ne(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],eOe(o,u,d,0),I=A}function eOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=SM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=tOe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,rOe(m,A)|0,A),I=d}function SM(){var o=0,l=0;if(s[7848]|0||(Mz(10136),gr(49,10136,U|0)|0,l=7848,n[l>>2]=1,n[l+4>>2]=0),!(_r(10136)|0)){o=10136,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Mz(10136)}return 10136}function tOe(o){return o=o|0,0}function rOe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=SM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],Lz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(nOe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Lz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function nOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=iOe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,sOe(k,oe>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Lz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,oOe(o,k),aOe(k),I=M;return}}function iOe(o){return o=o|0,357913941}function sOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function oOe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function aOe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Mz(o){o=o|0,uOe(o)}function lOe(o){o=o|0,cOe(o+24|0)}function cOe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function uOe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,9,l,fOe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function fOe(){return 1372}function AOe(o,l,u){o=o|0,l=l|0,u=+u;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,d=A+8|0,m=A,B=pOe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],hOe(l,d,u),I=A}function pOe(o){return o=o|0,(n[(SM()|0)+24>>2]|0)+(o*12|0)|0}function hOe(o,l,u){o=o|0,l=l|0,u=+u;var A=0,d=0,m=0,B=$e;m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),gOe(d,u),B=y(dOe(d,u)),XZ[A&1](o,B),I=m}function gOe(o,l){o=o|0,l=+l}function dOe(o,l){return o=o|0,l=+l,y(mOe(l))}function mOe(o){return o=+o,y(o)}function yOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],EOe(o,u,d,0),I=A}function EOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=DM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=IOe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,COe(m,A)|0,A),I=d}function DM(){var o=0,l=0;if(s[7856]|0||(_z(10172),gr(50,10172,U|0)|0,l=7856,n[l>>2]=1,n[l+4>>2]=0),!(_r(10172)|0)){o=10172,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));_z(10172)}return 10172}function IOe(o){return o=o|0,0}function COe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=DM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],Uz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(wOe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Uz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function wOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=BOe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,vOe(k,oe>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Uz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,SOe(o,k),DOe(k),I=M;return}}function BOe(o){return o=o|0,357913941}function vOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function SOe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function DOe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function _z(o){o=o|0,xOe(o)}function bOe(o){o=o|0,POe(o+24|0)}function POe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function xOe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,3,l,kOe()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function kOe(){return 1380}function QOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;d=I,I=I+16|0,m=d+8|0,B=d,k=ROe(o)|0,o=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=o,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],TOe(l,m,u,A),I=d}function ROe(o){return o=o|0,(n[(DM()|0)+24>>2]|0)+(o*12|0)|0}function TOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;k=I,I=I+16|0,m=k+1|0,B=k,d=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(d=n[(n[o>>2]|0)+d>>2]|0),rp(m,u),m=np(m,u)|0,FOe(B,A),B=NOe(B,A)|0,DB[d&15](o,m,B),I=k}function FOe(o,l){o=o|0,l=l|0}function NOe(o,l){return o=o|0,l=l|0,OOe(l)|0}function OOe(o){return o=o|0,(o|0)!=0|0}function LOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=bM()|0,o=MOe(u)|0,Dn(m,l,d,o,UOe(u,A)|0,A)}function bM(){var o=0,l=0;if(s[7864]|0||(jz(10208),gr(51,10208,U|0)|0,l=7864,n[l>>2]=1,n[l+4>>2]=0),!(_r(10208)|0)){o=10208,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));jz(10208)}return 10208}function MOe(o){return o=o|0,o|0}function UOe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,R=bM()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(Hz(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(_Oe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function Hz(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function _Oe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=HOe(o)|0,A>>>0>>0)an(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,jOe(d,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=d+8|0,Hz(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,GOe(o,d),qOe(d),I=k;return}}function HOe(o){return o=o|0,536870911}function jOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function GOe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function qOe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function jz(o){o=o|0,YOe(o)}function WOe(o){o=o|0,VOe(o+24|0)}function VOe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function YOe(o){o=o|0;var l=0;l=tn()|0,rn(o,1,24,l,KOe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function KOe(){return 1392}function JOe(o,l){o=o|0,l=l|0,ZOe(n[(zOe(o)|0)>>2]|0,l)}function zOe(o){return o=o|0,(n[(bM()|0)+24>>2]|0)+(o<<3)|0}function ZOe(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,Qz(A,l),l=Rz(A,l)|0,sp[o&127](l),I=u}function XOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=PM()|0,o=$Oe(u)|0,Dn(m,l,d,o,eLe(u,A)|0,A)}function PM(){var o=0,l=0;if(s[7872]|0||(qz(10244),gr(52,10244,U|0)|0,l=7872,n[l>>2]=1,n[l+4>>2]=0),!(_r(10244)|0)){o=10244,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));qz(10244)}return 10244}function $Oe(o){return o=o|0,o|0}function eLe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,R=PM()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(Gz(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(tLe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function Gz(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function tLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=rLe(o)|0,A>>>0>>0)an(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,nLe(d,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=d+8|0,Gz(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,iLe(o,d),sLe(d),I=k;return}}function rLe(o){return o=o|0,536870911}function nLe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function iLe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function sLe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function qz(o){o=o|0,lLe(o)}function oLe(o){o=o|0,aLe(o+24|0)}function aLe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function lLe(o){o=o|0;var l=0;l=tn()|0,rn(o,1,16,l,cLe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function cLe(){return 1400}function uLe(o){return o=o|0,ALe(n[(fLe(o)|0)>>2]|0)|0}function fLe(o){return o=o|0,(n[(PM()|0)+24>>2]|0)+(o<<3)|0}function ALe(o){return o=o|0,pLe(YP[o&7]()|0)|0}function pLe(o){return o=o|0,o|0}function hLe(){var o=0;return s[7880]|0||(CLe(10280),gr(25,10280,U|0)|0,o=7880,n[o>>2]=1,n[o+4>>2]=0),10280}function gLe(o,l){o=o|0,l=l|0,n[o>>2]=dLe()|0,n[o+4>>2]=mLe()|0,n[o+12>>2]=l,n[o+8>>2]=yLe()|0,n[o+32>>2]=4}function dLe(){return 11711}function mLe(){return 1356}function yLe(){return FP()|0}function ELe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Uh(A,896)|0)==512?u|0&&(ILe(u),It(u)):l|0&&(Yg(l),It(l))}function ILe(o){o=o|0,o=n[o+4>>2]|0,o|0&&Hh(o)}function CLe(o){o=o|0,Nh(o)}function wLe(o){o=o|0,BLe(o,4920),vLe(o)|0,SLe(o)|0}function BLe(o,l){o=o|0,l=l|0;var u=0;u=Az()|0,n[o>>2]=u,VLe(u,l),_h(n[o>>2]|0)}function vLe(o){o=o|0;var l=0;return l=n[o>>2]|0,ad(l,OLe()|0),o|0}function SLe(o){o=o|0;var l=0;return l=n[o>>2]|0,ad(l,DLe()|0),o|0}function DLe(){var o=0;return s[7888]|0||(Wz(10328),gr(53,10328,U|0)|0,o=7888,n[o>>2]=1,n[o+4>>2]=0),_r(10328)|0||Wz(10328),10328}function ad(o,l){o=o|0,l=l|0,Dn(o,0,l,0,0,0)}function Wz(o){o=o|0,xLe(o),ld(o,10)}function bLe(o){o=o|0,PLe(o+24|0)}function PLe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function xLe(o){o=o|0;var l=0;l=tn()|0,rn(o,5,1,l,TLe()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function kLe(o,l,u){o=o|0,l=l|0,u=+u,QLe(o,l,u)}function ld(o,l){o=o|0,l=l|0,n[o+20>>2]=l}function QLe(o,l,u){o=o|0,l=l|0,u=+u;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,m=A+8|0,k=A+13|0,d=A,B=A+12|0,rp(k,l),n[m>>2]=np(k,l)|0,Tf(B,u),E[d>>3]=+Ff(B,u),RLe(o,m,d),I=A}function RLe(o,l,u){o=o|0,l=l|0,u=u|0,Ml(o+8|0,n[l>>2]|0,+E[u>>3]),s[o+24>>0]=1}function TLe(){return 1404}function FLe(o,l){return o=o|0,l=+l,NLe(o,l)|0}function NLe(o,l){o=o|0,l=+l;var u=0,A=0,d=0,m=0,B=0,k=0,R=0;return A=I,I=I+16|0,m=A+4|0,B=A+8|0,k=A,d=Ul(8)|0,u=d,R=Jt(16)|0,rp(m,o),o=np(m,o)|0,Tf(B,l),Ml(R,o,+Ff(B,l)),B=u+4|0,n[B>>2]=R,o=Jt(8)|0,B=n[B>>2]|0,n[k>>2]=0,n[m>>2]=n[k>>2],pM(o,B,m),n[d>>2]=o,I=A,u|0}function OLe(){var o=0;return s[7896]|0||(Vz(10364),gr(54,10364,U|0)|0,o=7896,n[o>>2]=1,n[o+4>>2]=0),_r(10364)|0||Vz(10364),10364}function Vz(o){o=o|0,ULe(o),ld(o,55)}function LLe(o){o=o|0,MLe(o+24|0)}function MLe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function ULe(o){o=o|0;var l=0;l=tn()|0,rn(o,5,4,l,GLe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function _Le(o){o=o|0,HLe(o)}function HLe(o){o=o|0,jLe(o)}function jLe(o){o=o|0,Yz(o+8|0),s[o+24>>0]=1}function Yz(o){o=o|0,n[o>>2]=0,E[o+8>>3]=0}function GLe(){return 1424}function qLe(){return WLe()|0}function WLe(){var o=0,l=0,u=0,A=0,d=0,m=0,B=0;return l=I,I=I+16|0,d=l+4|0,B=l,u=Ul(8)|0,o=u,A=Jt(16)|0,Yz(A),m=o+4|0,n[m>>2]=A,A=Jt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],pM(A,m,d),n[u>>2]=A,I=l,o|0}function VLe(o,l){o=o|0,l=l|0,n[o>>2]=YLe()|0,n[o+4>>2]=KLe()|0,n[o+12>>2]=l,n[o+8>>2]=JLe()|0,n[o+32>>2]=5}function YLe(){return 11710}function KLe(){return 1416}function JLe(){return NP()|0}function zLe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Uh(A,896)|0)==512?u|0&&(ZLe(u),It(u)):l|0&&It(l)}function ZLe(o){o=o|0,o=n[o+4>>2]|0,o|0&&Hh(o)}function NP(){var o=0;return s[7904]|0||(n[2600]=XLe()|0,n[2601]=0,o=7904,n[o>>2]=1,n[o+4>>2]=0),10400}function XLe(){return n[357]|0}function $Le(o){o=o|0,eMe(o,4926),tMe(o)|0}function eMe(o,l){o=o|0,l=l|0;var u=0;u=NJ()|0,n[o>>2]=u,AMe(u,l),_h(n[o>>2]|0)}function tMe(o){o=o|0;var l=0;return l=n[o>>2]|0,ad(l,rMe()|0),o|0}function rMe(){var o=0;return s[7912]|0||(Kz(10412),gr(56,10412,U|0)|0,o=7912,n[o>>2]=1,n[o+4>>2]=0),_r(10412)|0||Kz(10412),10412}function Kz(o){o=o|0,sMe(o),ld(o,57)}function nMe(o){o=o|0,iMe(o+24|0)}function iMe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function sMe(o){o=o|0;var l=0;l=tn()|0,rn(o,5,5,l,cMe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function oMe(o){o=o|0,aMe(o)}function aMe(o){o=o|0,lMe(o)}function lMe(o){o=o|0;var l=0,u=0;l=o+8|0,u=l+48|0;do n[l>>2]=0,l=l+4|0;while((l|0)<(u|0));s[o+56>>0]=1}function cMe(){return 1432}function uMe(){return fMe()|0}function fMe(){var o=0,l=0,u=0,A=0,d=0,m=0,B=0,k=0;B=I,I=I+16|0,o=B+4|0,l=B,u=Ul(8)|0,A=u,d=Jt(48)|0,m=d,k=m+48|0;do n[m>>2]=0,m=m+4|0;while((m|0)<(k|0));return m=A+4|0,n[m>>2]=d,k=Jt(8)|0,m=n[m>>2]|0,n[l>>2]=0,n[o>>2]=n[l>>2],OJ(k,m,o),n[u>>2]=k,I=B,A|0}function AMe(o,l){o=o|0,l=l|0,n[o>>2]=pMe()|0,n[o+4>>2]=hMe()|0,n[o+12>>2]=l,n[o+8>>2]=gMe()|0,n[o+32>>2]=6}function pMe(){return 11704}function hMe(){return 1436}function gMe(){return NP()|0}function dMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Uh(A,896)|0)==512?u|0&&(mMe(u),It(u)):l|0&&It(l)}function mMe(o){o=o|0,o=n[o+4>>2]|0,o|0&&Hh(o)}function yMe(o){o=o|0,EMe(o,4933),IMe(o)|0,CMe(o)|0}function EMe(o,l){o=o|0,l=l|0;var u=0;u=WMe()|0,n[o>>2]=u,VMe(u,l),_h(n[o>>2]|0)}function IMe(o){o=o|0;var l=0;return l=n[o>>2]|0,ad(l,NMe()|0),o|0}function CMe(o){o=o|0;var l=0;return l=n[o>>2]|0,ad(l,wMe()|0),o|0}function wMe(){var o=0;return s[7920]|0||(Jz(10452),gr(58,10452,U|0)|0,o=7920,n[o>>2]=1,n[o+4>>2]=0),_r(10452)|0||Jz(10452),10452}function Jz(o){o=o|0,SMe(o),ld(o,1)}function BMe(o){o=o|0,vMe(o+24|0)}function vMe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function SMe(o){o=o|0;var l=0;l=tn()|0,rn(o,5,1,l,xMe()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function DMe(o,l,u){o=o|0,l=+l,u=+u,bMe(o,l,u)}function bMe(o,l,u){o=o|0,l=+l,u=+u;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+32|0,m=A+8|0,k=A+17|0,d=A,B=A+16|0,Tf(k,l),E[m>>3]=+Ff(k,l),Tf(B,u),E[d>>3]=+Ff(B,u),PMe(o,m,d),I=A}function PMe(o,l,u){o=o|0,l=l|0,u=u|0,zz(o+8|0,+E[l>>3],+E[u>>3]),s[o+24>>0]=1}function zz(o,l,u){o=o|0,l=+l,u=+u,E[o>>3]=l,E[o+8>>3]=u}function xMe(){return 1472}function kMe(o,l){return o=+o,l=+l,QMe(o,l)|0}function QMe(o,l){o=+o,l=+l;var u=0,A=0,d=0,m=0,B=0,k=0,R=0;return A=I,I=I+16|0,B=A+4|0,k=A+8|0,R=A,d=Ul(8)|0,u=d,m=Jt(16)|0,Tf(B,o),o=+Ff(B,o),Tf(k,l),zz(m,o,+Ff(k,l)),k=u+4|0,n[k>>2]=m,m=Jt(8)|0,k=n[k>>2]|0,n[R>>2]=0,n[B>>2]=n[R>>2],Zz(m,k,B),n[d>>2]=m,I=A,u|0}function Zz(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Jt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1452,n[u+12>>2]=l,n[o+4>>2]=u}function RMe(o){o=o|0,rE(o),It(o)}function TMe(o){o=o|0,o=n[o+12>>2]|0,o|0&&It(o)}function FMe(o){o=o|0,It(o)}function NMe(){var o=0;return s[7928]|0||(Xz(10488),gr(59,10488,U|0)|0,o=7928,n[o>>2]=1,n[o+4>>2]=0),_r(10488)|0||Xz(10488),10488}function Xz(o){o=o|0,MMe(o),ld(o,60)}function OMe(o){o=o|0,LMe(o+24|0)}function LMe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function MMe(o){o=o|0;var l=0;l=tn()|0,rn(o,5,6,l,jMe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function UMe(o){o=o|0,_Me(o)}function _Me(o){o=o|0,HMe(o)}function HMe(o){o=o|0,$z(o+8|0),s[o+24>>0]=1}function $z(o){o=o|0,n[o>>2]=0,n[o+4>>2]=0,n[o+8>>2]=0,n[o+12>>2]=0}function jMe(){return 1492}function GMe(){return qMe()|0}function qMe(){var o=0,l=0,u=0,A=0,d=0,m=0,B=0;return l=I,I=I+16|0,d=l+4|0,B=l,u=Ul(8)|0,o=u,A=Jt(16)|0,$z(A),m=o+4|0,n[m>>2]=A,A=Jt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],Zz(A,m,d),n[u>>2]=A,I=l,o|0}function WMe(){var o=0;return s[7936]|0||(XMe(10524),gr(25,10524,U|0)|0,o=7936,n[o>>2]=1,n[o+4>>2]=0),10524}function VMe(o,l){o=o|0,l=l|0,n[o>>2]=YMe()|0,n[o+4>>2]=KMe()|0,n[o+12>>2]=l,n[o+8>>2]=JMe()|0,n[o+32>>2]=7}function YMe(){return 11700}function KMe(){return 1484}function JMe(){return NP()|0}function zMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Uh(A,896)|0)==512?u|0&&(ZMe(u),It(u)):l|0&&It(l)}function ZMe(o){o=o|0,o=n[o+4>>2]|0,o|0&&Hh(o)}function XMe(o){o=o|0,Nh(o)}function $Me(o,l,u){o=o|0,l=l|0,u=u|0,o=Sn(l)|0,l=eUe(u)|0,u=tUe(u,0)|0,QUe(o,l,u,xM()|0,0)}function eUe(o){return o=o|0,o|0}function tUe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,R=xM()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(tZ(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(lUe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function xM(){var o=0,l=0;if(s[7944]|0||(eZ(10568),gr(61,10568,U|0)|0,l=7944,n[l>>2]=1,n[l+4>>2]=0),!(_r(10568)|0)){o=10568,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));eZ(10568)}return 10568}function eZ(o){o=o|0,iUe(o)}function rUe(o){o=o|0,nUe(o+24|0)}function nUe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function iUe(o){o=o|0;var l=0;l=tn()|0,rn(o,1,17,l,$J()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function sUe(o){return o=o|0,aUe(n[(oUe(o)|0)>>2]|0)|0}function oUe(o){return o=o|0,(n[(xM()|0)+24>>2]|0)+(o<<3)|0}function aUe(o){return o=o|0,TP(YP[o&7]()|0)|0}function tZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function lUe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=cUe(o)|0,A>>>0>>0)an(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,uUe(d,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=d+8|0,tZ(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,fUe(o,d),AUe(d),I=k;return}}function cUe(o){return o=o|0,536870911}function uUe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function fUe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function AUe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function pUe(){hUe()}function hUe(){gUe(10604)}function gUe(o){o=o|0,dUe(o,4955)}function dUe(o,l){o=o|0,l=l|0;var u=0;u=mUe()|0,n[o>>2]=u,yUe(u,l),_h(n[o>>2]|0)}function mUe(){var o=0;return s[7952]|0||(bUe(10612),gr(25,10612,U|0)|0,o=7952,n[o>>2]=1,n[o+4>>2]=0),10612}function yUe(o,l){o=o|0,l=l|0,n[o>>2]=wUe()|0,n[o+4>>2]=BUe()|0,n[o+12>>2]=l,n[o+8>>2]=vUe()|0,n[o+32>>2]=8}function _h(o){o=o|0;var l=0,u=0;l=I,I=I+16|0,u=l,Zy()|0,n[u>>2]=o,EUe(10608,u),I=l}function Zy(){return s[11714]|0||(n[2652]=0,gr(62,10608,U|0)|0,s[11714]=1),10608}function EUe(o,l){o=o|0,l=l|0;var u=0;u=Jt(8)|0,n[u+4>>2]=n[l>>2],n[u>>2]=n[o>>2],n[o>>2]=u}function IUe(o){o=o|0,CUe(o)}function CUe(o){o=o|0;var l=0,u=0;if(l=n[o>>2]|0,l|0)do u=l,l=n[l>>2]|0,It(u);while(l|0);n[o>>2]=0}function wUe(){return 11715}function BUe(){return 1496}function vUe(){return FP()|0}function SUe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Uh(A,896)|0)==512?u|0&&(DUe(u),It(u)):l|0&&It(l)}function DUe(o){o=o|0,o=n[o+4>>2]|0,o|0&&Hh(o)}function bUe(o){o=o|0,Nh(o)}function PUe(o,l){o=o|0,l=l|0;var u=0,A=0;Zy()|0,u=n[2652]|0;e:do if(u|0){for(;A=n[u+4>>2]|0,!(A|0&&!(OZ(kM(A)|0,o)|0));)if(u=n[u>>2]|0,!u)break e;xUe(A,l)}while(!1)}function kM(o){return o=o|0,n[o+12>>2]|0}function xUe(o,l){o=o|0,l=l|0;var u=0;o=o+36|0,u=n[o>>2]|0,u|0&&(bf(u),It(u)),u=Jt(4)|0,DP(u,l),n[o>>2]=u}function QM(){return s[11716]|0||(n[2664]=0,gr(63,10656,U|0)|0,s[11716]=1),10656}function rZ(){var o=0;return s[11717]|0?o=n[2665]|0:(kUe(),n[2665]=1504,s[11717]=1,o=1504),o|0}function kUe(){s[11740]|0||(s[11718]=yr(yr(8,0)|0,0)|0,s[11719]=yr(yr(0,0)|0,0)|0,s[11720]=yr(yr(0,16)|0,0)|0,s[11721]=yr(yr(8,0)|0,0)|0,s[11722]=yr(yr(0,0)|0,0)|0,s[11723]=yr(yr(8,0)|0,0)|0,s[11724]=yr(yr(0,0)|0,0)|0,s[11725]=yr(yr(8,0)|0,0)|0,s[11726]=yr(yr(0,0)|0,0)|0,s[11727]=yr(yr(8,0)|0,0)|0,s[11728]=yr(yr(0,0)|0,0)|0,s[11729]=yr(yr(0,0)|0,32)|0,s[11730]=yr(yr(0,0)|0,32)|0,s[11740]=1)}function nZ(){return 1572}function QUe(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,R=0,M=0,L=0;m=I,I=I+32|0,L=m+16|0,M=m+12|0,R=m+8|0,k=m+4|0,B=m,n[L>>2]=o,n[M>>2]=l,n[R>>2]=u,n[k>>2]=A,n[B>>2]=d,QM()|0,RUe(10656,L,M,R,k,B),I=m}function RUe(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0;var B=0;B=Jt(24)|0,RJ(B+4|0,n[l>>2]|0,n[u>>2]|0,n[A>>2]|0,n[d>>2]|0,n[m>>2]|0),n[B>>2]=n[o>>2],n[o>>2]=B}function iZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0,Ye=0,Le=0,Te=0,nt=0,Xe=0,ft=0;if(ft=I,I=I+32|0,Le=ft+20|0,Te=ft+8|0,nt=ft+4|0,Xe=ft,l=n[l>>2]|0,l|0){Ye=Le+4|0,R=Le+8|0,M=Te+4|0,L=Te+8|0,q=Te+8|0,oe=Le+8|0;do{if(B=l+4|0,k=RM(B)|0,k|0){if(d=IB(k)|0,n[Le>>2]=0,n[Ye>>2]=0,n[R>>2]=0,A=(CB(k)|0)+1|0,TUe(Le,A),A|0)for(;A=A+-1|0,Su(Te,n[d>>2]|0),m=n[Ye>>2]|0,m>>>0<(n[oe>>2]|0)>>>0?(n[m>>2]=n[Te>>2],n[Ye>>2]=(n[Ye>>2]|0)+4):TM(Le,Te),A;)d=d+4|0;A=wB(k)|0,n[Te>>2]=0,n[M>>2]=0,n[L>>2]=0;e:do if(n[A>>2]|0)for(d=0,m=0;;){if((d|0)==(m|0)?FUe(Te,A):(n[d>>2]=n[A>>2],n[M>>2]=(n[M>>2]|0)+4),A=A+4|0,!(n[A>>2]|0))break e;d=n[M>>2]|0,m=n[q>>2]|0}while(!1);n[nt>>2]=OP(B)|0,n[Xe>>2]=_r(k)|0,NUe(u,o,nt,Xe,Le,Te),FM(Te),ip(Le)}l=n[l>>2]|0}while(l|0)}I=ft}function RM(o){return o=o|0,n[o+12>>2]|0}function IB(o){return o=o|0,n[o+12>>2]|0}function CB(o){return o=o|0,n[o+16>>2]|0}function TUe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;d=I,I=I+32|0,u=d,A=n[o>>2]|0,(n[o+8>>2]|0)-A>>2>>>0>>0&&(AZ(u,l,(n[o+4>>2]|0)-A>>2,o+8|0),pZ(o,u),hZ(u)),I=d}function TM(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0;if(B=I,I=I+32|0,u=B,A=o+4|0,d=((n[A>>2]|0)-(n[o>>2]|0)>>2)+1|0,m=fZ(o)|0,m>>>0>>0)an(o);else{k=n[o>>2]|0,M=(n[o+8>>2]|0)-k|0,R=M>>1,AZ(u,M>>2>>>0>>1>>>0?R>>>0>>0?d:R:m,(n[A>>2]|0)-k>>2,o+8|0),m=u+8|0,n[n[m>>2]>>2]=n[l>>2],n[m>>2]=(n[m>>2]|0)+4,pZ(o,u),hZ(u),I=B;return}}function wB(o){return o=o|0,n[o+8>>2]|0}function FUe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0;if(B=I,I=I+32|0,u=B,A=o+4|0,d=((n[A>>2]|0)-(n[o>>2]|0)>>2)+1|0,m=uZ(o)|0,m>>>0>>0)an(o);else{k=n[o>>2]|0,M=(n[o+8>>2]|0)-k|0,R=M>>1,e_e(u,M>>2>>>0>>1>>>0?R>>>0>>0?d:R:m,(n[A>>2]|0)-k>>2,o+8|0),m=u+8|0,n[n[m>>2]>>2]=n[l>>2],n[m>>2]=(n[m>>2]|0)+4,t_e(o,u),r_e(u),I=B;return}}function OP(o){return o=o|0,n[o>>2]|0}function NUe(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,OUe(o,l,u,A,d,m)}function FM(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-4-A|0)>>>2)<<2)),It(u))}function ip(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-4-A|0)>>>2)<<2)),It(u))}function OUe(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0;var B=0,k=0,R=0,M=0,L=0,q=0;B=I,I=I+48|0,L=B+40|0,k=B+32|0,q=B+24|0,R=B+12|0,M=B,_l(k),o=Us(o)|0,n[q>>2]=n[l>>2],u=n[u>>2]|0,A=n[A>>2]|0,NM(R,d),LUe(M,m),n[L>>2]=n[q>>2],MUe(o,L,u,A,R,M),FM(M),ip(R),Hl(k),I=B}function NM(o,l){o=o|0,l=l|0;var u=0,A=0;n[o>>2]=0,n[o+4>>2]=0,n[o+8>>2]=0,u=l+4|0,A=(n[u>>2]|0)-(n[l>>2]|0)>>2,A|0&&(XUe(o,A),$Ue(o,n[l>>2]|0,n[u>>2]|0,A))}function LUe(o,l){o=o|0,l=l|0;var u=0,A=0;n[o>>2]=0,n[o+4>>2]=0,n[o+8>>2]=0,u=l+4|0,A=(n[u>>2]|0)-(n[l>>2]|0)>>2,A|0&&(zUe(o,A),ZUe(o,n[l>>2]|0,n[u>>2]|0,A))}function MUe(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0;var B=0,k=0,R=0,M=0,L=0,q=0;B=I,I=I+32|0,L=B+28|0,q=B+24|0,k=B+12|0,R=B,M=Ia(UUe()|0)|0,n[q>>2]=n[l>>2],n[L>>2]=n[q>>2],l=cd(L)|0,u=sZ(u)|0,A=OM(A)|0,n[k>>2]=n[d>>2],L=d+4|0,n[k+4>>2]=n[L>>2],q=d+8|0,n[k+8>>2]=n[q>>2],n[q>>2]=0,n[L>>2]=0,n[d>>2]=0,d=LM(k)|0,n[R>>2]=n[m>>2],L=m+4|0,n[R+4>>2]=n[L>>2],q=m+8|0,n[R+8>>2]=n[q>>2],n[q>>2]=0,n[L>>2]=0,n[m>>2]=0,ou(0,M|0,o|0,l|0,u|0,A|0,d|0,_Ue(R)|0)|0,FM(R),ip(k),I=B}function UUe(){var o=0;return s[7968]|0||(KUe(10708),o=7968,n[o>>2]=1,n[o+4>>2]=0),10708}function cd(o){return o=o|0,aZ(o)|0}function sZ(o){return o=o|0,oZ(o)|0}function OM(o){return o=o|0,TP(o)|0}function LM(o){return o=o|0,jUe(o)|0}function _Ue(o){return o=o|0,HUe(o)|0}function HUe(o){o=o|0;var l=0,u=0,A=0;if(A=(n[o+4>>2]|0)-(n[o>>2]|0)|0,u=A>>2,A=Ul(A+4|0)|0,n[A>>2]=u,u|0){l=0;do n[A+4+(l<<2)>>2]=oZ(n[(n[o>>2]|0)+(l<<2)>>2]|0)|0,l=l+1|0;while((l|0)!=(u|0))}return A|0}function oZ(o){return o=o|0,o|0}function jUe(o){o=o|0;var l=0,u=0,A=0;if(A=(n[o+4>>2]|0)-(n[o>>2]|0)|0,u=A>>2,A=Ul(A+4|0)|0,n[A>>2]=u,u|0){l=0;do n[A+4+(l<<2)>>2]=aZ((n[o>>2]|0)+(l<<2)|0)|0,l=l+1|0;while((l|0)!=(u|0))}return A|0}function aZ(o){o=o|0;var l=0,u=0,A=0,d=0;return d=I,I=I+32|0,l=d+12|0,u=d,A=JL(lZ()|0)|0,A?(zL(l,A),ZL(u,l),v8e(o,u),o=XL(l)|0):o=GUe(o)|0,I=d,o|0}function lZ(){var o=0;return s[7960]|0||(YUe(10664),gr(25,10664,U|0)|0,o=7960,n[o>>2]=1,n[o+4>>2]=0),10664}function GUe(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0;return u=I,I=I+16|0,d=u+4|0,B=u,A=Ul(8)|0,l=A,k=Jt(4)|0,n[k>>2]=n[o>>2],m=l+4|0,n[m>>2]=k,o=Jt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],cZ(o,m,d),n[A>>2]=o,I=u,l|0}function cZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Jt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1656,n[u+12>>2]=l,n[o+4>>2]=u}function qUe(o){o=o|0,rE(o),It(o)}function WUe(o){o=o|0,o=n[o+12>>2]|0,o|0&&It(o)}function VUe(o){o=o|0,It(o)}function YUe(o){o=o|0,Nh(o)}function KUe(o){o=o|0,Oo(o,JUe()|0,5)}function JUe(){return 1676}function zUe(o,l){o=o|0,l=l|0;var u=0;if((uZ(o)|0)>>>0>>0&&an(o),l>>>0>1073741823)Nt();else{u=Jt(l<<2)|0,n[o+4>>2]=u,n[o>>2]=u,n[o+8>>2]=u+(l<<2);return}}function ZUe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,A=o+4|0,o=u-l|0,(o|0)>0&&(Qr(n[A>>2]|0,l|0,o|0)|0,n[A>>2]=(n[A>>2]|0)+(o>>>2<<2))}function uZ(o){return o=o|0,1073741823}function XUe(o,l){o=o|0,l=l|0;var u=0;if((fZ(o)|0)>>>0>>0&&an(o),l>>>0>1073741823)Nt();else{u=Jt(l<<2)|0,n[o+4>>2]=u,n[o>>2]=u,n[o+8>>2]=u+(l<<2);return}}function $Ue(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,A=o+4|0,o=u-l|0,(o|0)>0&&(Qr(n[A>>2]|0,l|0,o|0)|0,n[A>>2]=(n[A>>2]|0)+(o>>>2<<2))}function fZ(o){return o=o|0,1073741823}function e_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>1073741823)Nt();else{d=Jt(l<<2)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<2)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<2)}function t_e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function r_e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-4-l|0)>>>2)<<2)),o=n[o>>2]|0,o|0&&It(o)}function AZ(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>1073741823)Nt();else{d=Jt(l<<2)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<2)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<2)}function pZ(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function hZ(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-4-l|0)>>>2)<<2)),o=n[o>>2]|0,o|0&&It(o)}function n_e(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0,Ye=0,Le=0,Te=0;if(Te=I,I=I+32|0,L=Te+20|0,q=Te+12|0,M=Te+16|0,oe=Te+4|0,Ye=Te,Le=Te+8|0,k=rZ()|0,m=n[k>>2]|0,B=n[m>>2]|0,B|0)for(R=n[k+8>>2]|0,k=n[k+4>>2]|0;Su(L,B),i_e(o,L,k,R),m=m+4|0,B=n[m>>2]|0,B;)R=R+1|0,k=k+1|0;if(m=nZ()|0,B=n[m>>2]|0,B|0)do Su(L,B),n[q>>2]=n[m+4>>2],s_e(l,L,q),m=m+8|0,B=n[m>>2]|0;while(B|0);if(m=n[(Zy()|0)>>2]|0,m|0)do l=n[m+4>>2]|0,Su(L,n[(Xy(l)|0)>>2]|0),n[q>>2]=kM(l)|0,o_e(u,L,q),m=n[m>>2]|0;while(m|0);if(Su(M,0),m=QM()|0,n[L>>2]=n[M>>2],iZ(L,m,d),m=n[(Zy()|0)>>2]|0,m|0){o=L+4|0,l=L+8|0,u=L+8|0;do{if(R=n[m+4>>2]|0,Su(q,n[(Xy(R)|0)>>2]|0),a_e(oe,gZ(R)|0),B=n[oe>>2]|0,B|0){n[L>>2]=0,n[o>>2]=0,n[l>>2]=0;do Su(Ye,n[(Xy(n[B+4>>2]|0)|0)>>2]|0),k=n[o>>2]|0,k>>>0<(n[u>>2]|0)>>>0?(n[k>>2]=n[Ye>>2],n[o>>2]=(n[o>>2]|0)+4):TM(L,Ye),B=n[B>>2]|0;while(B|0);l_e(A,q,L),ip(L)}n[Le>>2]=n[q>>2],M=dZ(R)|0,n[L>>2]=n[Le>>2],iZ(L,M,d),MJ(oe),m=n[m>>2]|0}while(m|0)}I=Te}function i_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,I_e(o,l,u,A)}function s_e(o,l,u){o=o|0,l=l|0,u=u|0,E_e(o,l,u)}function Xy(o){return o=o|0,o|0}function o_e(o,l,u){o=o|0,l=l|0,u=u|0,g_e(o,l,u)}function gZ(o){return o=o|0,o+16|0}function a_e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0;if(m=I,I=I+16|0,d=m+8|0,u=m,n[o>>2]=0,A=n[l>>2]|0,n[d>>2]=A,n[u>>2]=o,u=h_e(u)|0,A|0){if(A=Jt(12)|0,B=(mZ(d)|0)+4|0,o=n[B+4>>2]|0,l=A+4|0,n[l>>2]=n[B>>2],n[l+4>>2]=o,l=n[n[d>>2]>>2]|0,n[d>>2]=l,!l)o=A;else for(l=A;o=Jt(12)|0,R=(mZ(d)|0)+4|0,k=n[R+4>>2]|0,B=o+4|0,n[B>>2]=n[R>>2],n[B+4>>2]=k,n[l>>2]=o,B=n[n[d>>2]>>2]|0,n[d>>2]=B,B;)l=o;n[o>>2]=n[u>>2],n[u>>2]=A}I=m}function l_e(o,l,u){o=o|0,l=l|0,u=u|0,c_e(o,l,u)}function dZ(o){return o=o|0,o+24|0}function c_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+32|0,B=A+24|0,d=A+16|0,k=A+12|0,m=A,_l(d),o=Us(o)|0,n[k>>2]=n[l>>2],NM(m,u),n[B>>2]=n[k>>2],u_e(o,B,m),ip(m),Hl(d),I=A}function u_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+32|0,B=A+16|0,k=A+12|0,d=A,m=Ia(f_e()|0)|0,n[k>>2]=n[l>>2],n[B>>2]=n[k>>2],l=cd(B)|0,n[d>>2]=n[u>>2],B=u+4|0,n[d+4>>2]=n[B>>2],k=u+8|0,n[d+8>>2]=n[k>>2],n[k>>2]=0,n[B>>2]=0,n[u>>2]=0,Ns(0,m|0,o|0,l|0,LM(d)|0)|0,ip(d),I=A}function f_e(){var o=0;return s[7976]|0||(A_e(10720),o=7976,n[o>>2]=1,n[o+4>>2]=0),10720}function A_e(o){o=o|0,Oo(o,p_e()|0,2)}function p_e(){return 1732}function h_e(o){return o=o|0,n[o>>2]|0}function mZ(o){return o=o|0,n[o>>2]|0}function g_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+32|0,m=A+16|0,d=A+8|0,B=A,_l(d),o=Us(o)|0,n[B>>2]=n[l>>2],u=n[u>>2]|0,n[m>>2]=n[B>>2],yZ(o,m,u),Hl(d),I=A}function yZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,m=A+4|0,B=A,d=Ia(d_e()|0)|0,n[B>>2]=n[l>>2],n[m>>2]=n[B>>2],l=cd(m)|0,Ns(0,d|0,o|0,l|0,sZ(u)|0)|0,I=A}function d_e(){var o=0;return s[7984]|0||(m_e(10732),o=7984,n[o>>2]=1,n[o+4>>2]=0),10732}function m_e(o){o=o|0,Oo(o,y_e()|0,2)}function y_e(){return 1744}function E_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+32|0,m=A+16|0,d=A+8|0,B=A,_l(d),o=Us(o)|0,n[B>>2]=n[l>>2],u=n[u>>2]|0,n[m>>2]=n[B>>2],yZ(o,m,u),Hl(d),I=A}function I_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;d=I,I=I+32|0,B=d+16|0,m=d+8|0,k=d,_l(m),o=Us(o)|0,n[k>>2]=n[l>>2],u=s[u>>0]|0,A=s[A>>0]|0,n[B>>2]=n[k>>2],C_e(o,B,u,A),Hl(m),I=d}function C_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;d=I,I=I+16|0,B=d+4|0,k=d,m=Ia(w_e()|0)|0,n[k>>2]=n[l>>2],n[B>>2]=n[k>>2],l=cd(B)|0,u=$y(u)|0,Li(0,m|0,o|0,l|0,u|0,$y(A)|0)|0,I=d}function w_e(){var o=0;return s[7992]|0||(v_e(10744),o=7992,n[o>>2]=1,n[o+4>>2]=0),10744}function $y(o){return o=o|0,B_e(o)|0}function B_e(o){return o=o|0,o&255|0}function v_e(o){o=o|0,Oo(o,S_e()|0,3)}function S_e(){return 1756}function D_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;switch(oe=I,I=I+32|0,k=oe+8|0,R=oe+4|0,M=oe+20|0,L=oe,rM(o,0),A=B8e(l)|0,n[k>>2]=0,q=k+4|0,n[q>>2]=0,n[k+8>>2]=0,A<<24>>24){case 0:{s[M>>0]=0,b_e(R,u,M),LP(o,R)|0,Pf(R);break}case 8:{q=GM(l)|0,s[M>>0]=8,Su(L,n[q+4>>2]|0),P_e(R,u,M,L,q+8|0),LP(o,R)|0,Pf(R);break}case 9:{if(m=GM(l)|0,l=n[m+4>>2]|0,l|0)for(B=k+8|0,d=m+12|0;l=l+-1|0,Su(R,n[d>>2]|0),A=n[q>>2]|0,A>>>0<(n[B>>2]|0)>>>0?(n[A>>2]=n[R>>2],n[q>>2]=(n[q>>2]|0)+4):TM(k,R),l;)d=d+4|0;s[M>>0]=9,Su(L,n[m+8>>2]|0),x_e(R,u,M,L,k),LP(o,R)|0,Pf(R);break}default:q=GM(l)|0,s[M>>0]=A,Su(L,n[q+4>>2]|0),k_e(R,u,M,L),LP(o,R)|0,Pf(R)}ip(k),I=oe}function b_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;A=I,I=I+16|0,d=A,_l(d),l=Us(l)|0,G_e(o,l,s[u>>0]|0),Hl(d),I=A}function LP(o,l){o=o|0,l=l|0;var u=0;return u=n[o>>2]|0,u|0&&ja(u|0),n[o>>2]=n[l>>2],n[l>>2]=0,o|0}function P_e(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,R=0;m=I,I=I+32|0,k=m+16|0,B=m+8|0,R=m,_l(B),l=Us(l)|0,u=s[u>>0]|0,n[R>>2]=n[A>>2],d=n[d>>2]|0,n[k>>2]=n[R>>2],U_e(o,l,u,k,d),Hl(B),I=m}function x_e(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,R=0,M=0;m=I,I=I+32|0,R=m+24|0,B=m+16|0,M=m+12|0,k=m,_l(B),l=Us(l)|0,u=s[u>>0]|0,n[M>>2]=n[A>>2],NM(k,d),n[R>>2]=n[M>>2],N_e(o,l,u,R,k),ip(k),Hl(B),I=m}function k_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;d=I,I=I+32|0,B=d+16|0,m=d+8|0,k=d,_l(m),l=Us(l)|0,u=s[u>>0]|0,n[k>>2]=n[A>>2],n[B>>2]=n[k>>2],Q_e(o,l,u,B),Hl(m),I=d}function Q_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;d=I,I=I+16|0,m=d+4|0,k=d,B=Ia(R_e()|0)|0,u=$y(u)|0,n[k>>2]=n[A>>2],n[m>>2]=n[k>>2],MP(o,Ns(0,B|0,l|0,u|0,cd(m)|0)|0),I=d}function R_e(){var o=0;return s[8e3]|0||(T_e(10756),o=8e3,n[o>>2]=1,n[o+4>>2]=0),10756}function MP(o,l){o=o|0,l=l|0,rM(o,l)}function T_e(o){o=o|0,Oo(o,F_e()|0,2)}function F_e(){return 1772}function N_e(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,R=0,M=0;m=I,I=I+32|0,R=m+16|0,M=m+12|0,B=m,k=Ia(O_e()|0)|0,u=$y(u)|0,n[M>>2]=n[A>>2],n[R>>2]=n[M>>2],A=cd(R)|0,n[B>>2]=n[d>>2],R=d+4|0,n[B+4>>2]=n[R>>2],M=d+8|0,n[B+8>>2]=n[M>>2],n[M>>2]=0,n[R>>2]=0,n[d>>2]=0,MP(o,Li(0,k|0,l|0,u|0,A|0,LM(B)|0)|0),ip(B),I=m}function O_e(){var o=0;return s[8008]|0||(L_e(10768),o=8008,n[o>>2]=1,n[o+4>>2]=0),10768}function L_e(o){o=o|0,Oo(o,M_e()|0,3)}function M_e(){return 1784}function U_e(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,R=0;m=I,I=I+16|0,k=m+4|0,R=m,B=Ia(__e()|0)|0,u=$y(u)|0,n[R>>2]=n[A>>2],n[k>>2]=n[R>>2],A=cd(k)|0,MP(o,Li(0,B|0,l|0,u|0,A|0,OM(d)|0)|0),I=m}function __e(){var o=0;return s[8016]|0||(H_e(10780),o=8016,n[o>>2]=1,n[o+4>>2]=0),10780}function H_e(o){o=o|0,Oo(o,j_e()|0,3)}function j_e(){return 1800}function G_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=Ia(q_e()|0)|0,MP(o,mn(0,A|0,l|0,$y(u)|0)|0)}function q_e(){var o=0;return s[8024]|0||(W_e(10792),o=8024,n[o>>2]=1,n[o+4>>2]=0),10792}function W_e(o){o=o|0,Oo(o,V_e()|0,1)}function V_e(){return 1816}function Y_e(){K_e(),J_e(),z_e()}function K_e(){n[2702]=VZ(65536)|0}function J_e(){d4e(10856)}function z_e(){Z_e(10816)}function Z_e(o){o=o|0,X_e(o,5044),$_e(o)|0}function X_e(o,l){o=o|0,l=l|0;var u=0;u=lZ()|0,n[o>>2]=u,u4e(u,l),_h(n[o>>2]|0)}function $_e(o){o=o|0;var l=0;return l=n[o>>2]|0,ad(l,e4e()|0),o|0}function e4e(){var o=0;return s[8032]|0||(EZ(10820),gr(64,10820,U|0)|0,o=8032,n[o>>2]=1,n[o+4>>2]=0),_r(10820)|0||EZ(10820),10820}function EZ(o){o=o|0,n4e(o),ld(o,25)}function t4e(o){o=o|0,r4e(o+24|0)}function r4e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function n4e(o){o=o|0;var l=0;l=tn()|0,rn(o,5,18,l,a4e()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function i4e(o,l){o=o|0,l=l|0,s4e(o,l)}function s4e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;u=I,I=I+16|0,A=u,d=u+4|0,sd(d,l),n[A>>2]=od(d,l)|0,o4e(o,A),I=u}function o4e(o,l){o=o|0,l=l|0,IZ(o+4|0,n[l>>2]|0),s[o+8>>0]=1}function IZ(o,l){o=o|0,l=l|0,n[o>>2]=l}function a4e(){return 1824}function l4e(o){return o=o|0,c4e(o)|0}function c4e(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0;return u=I,I=I+16|0,d=u+4|0,B=u,A=Ul(8)|0,l=A,k=Jt(4)|0,sd(d,o),IZ(k,od(d,o)|0),m=l+4|0,n[m>>2]=k,o=Jt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],cZ(o,m,d),n[A>>2]=o,I=u,l|0}function Ul(o){o=o|0;var l=0,u=0;return o=o+7&-8,o>>>0<=32768&&(l=n[2701]|0,o>>>0<=(65536-l|0)>>>0)?(u=(n[2702]|0)+l|0,n[2701]=l+o,o=u):(o=VZ(o+8|0)|0,n[o>>2]=n[2703],n[2703]=o,o=o+8|0),o|0}function u4e(o,l){o=o|0,l=l|0,n[o>>2]=f4e()|0,n[o+4>>2]=A4e()|0,n[o+12>>2]=l,n[o+8>>2]=p4e()|0,n[o+32>>2]=9}function f4e(){return 11744}function A4e(){return 1832}function p4e(){return NP()|0}function h4e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Uh(A,896)|0)==512?u|0&&(g4e(u),It(u)):l|0&&It(l)}function g4e(o){o=o|0,o=n[o+4>>2]|0,o|0&&Hh(o)}function d4e(o){o=o|0,m4e(o,5052),y4e(o)|0,E4e(o,5058,26)|0,I4e(o,5069,1)|0,C4e(o,5077,10)|0,w4e(o,5087,19)|0,B4e(o,5094,27)|0}function m4e(o,l){o=o|0,l=l|0;var u=0;u=g8e()|0,n[o>>2]=u,d8e(u,l),_h(n[o>>2]|0)}function y4e(o){o=o|0;var l=0;return l=n[o>>2]|0,ad(l,t8e()|0),o|0}function E4e(o,l,u){return o=o|0,l=l|0,u=u|0,L3e(o,Sn(l)|0,u,0),o|0}function I4e(o,l,u){return o=o|0,l=l|0,u=u|0,w3e(o,Sn(l)|0,u,0),o|0}function C4e(o,l,u){return o=o|0,l=l|0,u=u|0,e3e(o,Sn(l)|0,u,0),o|0}function w4e(o,l,u){return o=o|0,l=l|0,u=u|0,U4e(o,Sn(l)|0,u,0),o|0}function CZ(o,l){o=o|0,l=l|0;var u=0,A=0;e:for(;;){for(u=n[2703]|0;;){if((u|0)==(l|0))break e;if(A=n[u>>2]|0,n[2703]=A,!u)u=A;else break}It(u)}n[2701]=o}function B4e(o,l,u){return o=o|0,l=l|0,u=u|0,v4e(o,Sn(l)|0,u,0),o|0}function v4e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=MM()|0,o=S4e(u)|0,Dn(m,l,d,o,D4e(u,A)|0,A)}function MM(){var o=0,l=0;if(s[8040]|0||(BZ(10860),gr(65,10860,U|0)|0,l=8040,n[l>>2]=1,n[l+4>>2]=0),!(_r(10860)|0)){o=10860,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));BZ(10860)}return 10860}function S4e(o){return o=o|0,o|0}function D4e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,R=MM()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(wZ(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(b4e(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function wZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function b4e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=P4e(o)|0,A>>>0>>0)an(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,x4e(d,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=d+8|0,wZ(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,k4e(o,d),Q4e(d),I=k;return}}function P4e(o){return o=o|0,536870911}function x4e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function k4e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function Q4e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function BZ(o){o=o|0,F4e(o)}function R4e(o){o=o|0,T4e(o+24|0)}function T4e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function F4e(o){o=o|0;var l=0;l=tn()|0,rn(o,1,11,l,N4e()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function N4e(){return 1840}function O4e(o,l,u){o=o|0,l=l|0,u=u|0,M4e(n[(L4e(o)|0)>>2]|0,l,u)}function L4e(o){return o=o|0,(n[(MM()|0)+24>>2]|0)+(o<<3)|0}function M4e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;A=I,I=I+16|0,m=A+1|0,d=A,sd(m,l),l=od(m,l)|0,sd(d,u),u=od(d,u)|0,op[o&31](l,u),I=A}function U4e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=UM()|0,o=_4e(u)|0,Dn(m,l,d,o,H4e(u,A)|0,A)}function UM(){var o=0,l=0;if(s[8048]|0||(SZ(10896),gr(66,10896,U|0)|0,l=8048,n[l>>2]=1,n[l+4>>2]=0),!(_r(10896)|0)){o=10896,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));SZ(10896)}return 10896}function _4e(o){return o=o|0,o|0}function H4e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,R=UM()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(vZ(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(j4e(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function vZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function j4e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=G4e(o)|0,A>>>0>>0)an(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,q4e(d,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=d+8|0,vZ(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,W4e(o,d),V4e(d),I=k;return}}function G4e(o){return o=o|0,536870911}function q4e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function W4e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function V4e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function SZ(o){o=o|0,J4e(o)}function Y4e(o){o=o|0,K4e(o+24|0)}function K4e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function J4e(o){o=o|0;var l=0;l=tn()|0,rn(o,1,11,l,z4e()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function z4e(){return 1852}function Z4e(o,l){return o=o|0,l=l|0,$4e(n[(X4e(o)|0)>>2]|0,l)|0}function X4e(o){return o=o|0,(n[(UM()|0)+24>>2]|0)+(o<<3)|0}function $4e(o,l){o=o|0,l=l|0;var u=0,A=0;return u=I,I=I+16|0,A=u,sd(A,l),l=od(A,l)|0,l=TP(pd[o&31](l)|0)|0,I=u,l|0}function e3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=_M()|0,o=t3e(u)|0,Dn(m,l,d,o,r3e(u,A)|0,A)}function _M(){var o=0,l=0;if(s[8056]|0||(bZ(10932),gr(67,10932,U|0)|0,l=8056,n[l>>2]=1,n[l+4>>2]=0),!(_r(10932)|0)){o=10932,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));bZ(10932)}return 10932}function t3e(o){return o=o|0,o|0}function r3e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,R=_M()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(DZ(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(n3e(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function DZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function n3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=i3e(o)|0,A>>>0>>0)an(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,s3e(d,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=d+8|0,DZ(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,o3e(o,d),a3e(d),I=k;return}}function i3e(o){return o=o|0,536870911}function s3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function o3e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function a3e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function bZ(o){o=o|0,u3e(o)}function l3e(o){o=o|0,c3e(o+24|0)}function c3e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function u3e(o){o=o|0;var l=0;l=tn()|0,rn(o,1,7,l,f3e()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function f3e(){return 1860}function A3e(o,l,u){return o=o|0,l=l|0,u=u|0,h3e(n[(p3e(o)|0)>>2]|0,l,u)|0}function p3e(o){return o=o|0,(n[(_M()|0)+24>>2]|0)+(o<<3)|0}function h3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0;return A=I,I=I+32|0,B=A+12|0,m=A+8|0,k=A,R=A+16|0,d=A+4|0,g3e(R,l),d3e(k,R,l),Oh(d,u),u=Lh(d,u)|0,n[B>>2]=n[k>>2],DB[o&15](m,B,u),u=m3e(m)|0,Pf(m),Mh(d),I=A,u|0}function g3e(o,l){o=o|0,l=l|0}function d3e(o,l,u){o=o|0,l=l|0,u=u|0,y3e(o,u)}function m3e(o){return o=o|0,Us(o)|0}function y3e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;d=I,I=I+16|0,u=d,A=l,A&1?(E3e(u,0),Ue(A|0,u|0)|0,I3e(o,u),C3e(u)):n[o>>2]=n[l>>2],I=d}function E3e(o,l){o=o|0,l=l|0,Bu(o,l),n[o+4>>2]=0,s[o+8>>0]=0}function I3e(o,l){o=o|0,l=l|0,n[o>>2]=n[l+4>>2]}function C3e(o){o=o|0,s[o+8>>0]=0}function w3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=HM()|0,o=B3e(u)|0,Dn(m,l,d,o,v3e(u,A)|0,A)}function HM(){var o=0,l=0;if(s[8064]|0||(xZ(10968),gr(68,10968,U|0)|0,l=8064,n[l>>2]=1,n[l+4>>2]=0),!(_r(10968)|0)){o=10968,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));xZ(10968)}return 10968}function B3e(o){return o=o|0,o|0}function v3e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,R=HM()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(PZ(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(S3e(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function PZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function S3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=D3e(o)|0,A>>>0>>0)an(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,b3e(d,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=d+8|0,PZ(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,P3e(o,d),x3e(d),I=k;return}}function D3e(o){return o=o|0,536870911}function b3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function P3e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function x3e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function xZ(o){o=o|0,R3e(o)}function k3e(o){o=o|0,Q3e(o+24|0)}function Q3e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function R3e(o){o=o|0;var l=0;l=tn()|0,rn(o,1,1,l,T3e()|0,5),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function T3e(){return 1872}function F3e(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,O3e(n[(N3e(o)|0)>>2]|0,l,u,A,d,m)}function N3e(o){return o=o|0,(n[(HM()|0)+24>>2]|0)+(o<<3)|0}function O3e(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0;var B=0,k=0,R=0,M=0,L=0,q=0;B=I,I=I+32|0,k=B+16|0,R=B+12|0,M=B+8|0,L=B+4|0,q=B,Oh(k,l),l=Lh(k,l)|0,Oh(R,u),u=Lh(R,u)|0,Oh(M,A),A=Lh(M,A)|0,Oh(L,d),d=Lh(L,d)|0,Oh(q,m),m=Lh(q,m)|0,ZZ[o&1](l,u,A,d,m),Mh(q),Mh(L),Mh(M),Mh(R),Mh(k),I=B}function L3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=jM()|0,o=M3e(u)|0,Dn(m,l,d,o,U3e(u,A)|0,A)}function jM(){var o=0,l=0;if(s[8072]|0||(QZ(11004),gr(69,11004,U|0)|0,l=8072,n[l>>2]=1,n[l+4>>2]=0),!(_r(11004)|0)){o=11004,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));QZ(11004)}return 11004}function M3e(o){return o=o|0,o|0}function U3e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,R=jM()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(kZ(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(_3e(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function kZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function _3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=H3e(o)|0,A>>>0>>0)an(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,j3e(d,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=d+8|0,kZ(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,G3e(o,d),q3e(d),I=k;return}}function H3e(o){return o=o|0,536870911}function j3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function G3e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function q3e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function QZ(o){o=o|0,Y3e(o)}function W3e(o){o=o|0,V3e(o+24|0)}function V3e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function Y3e(o){o=o|0;var l=0;l=tn()|0,rn(o,1,12,l,K3e()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function K3e(){return 1896}function J3e(o,l,u){o=o|0,l=l|0,u=u|0,Z3e(n[(z3e(o)|0)>>2]|0,l,u)}function z3e(o){return o=o|0,(n[(jM()|0)+24>>2]|0)+(o<<3)|0}function Z3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;A=I,I=I+16|0,m=A+4|0,d=A,X3e(m,l),l=$3e(m,l)|0,Oh(d,u),u=Lh(d,u)|0,op[o&31](l,u),Mh(d),I=A}function X3e(o,l){o=o|0,l=l|0}function $3e(o,l){return o=o|0,l=l|0,e8e(l)|0}function e8e(o){return o=o|0,o|0}function t8e(){var o=0;return s[8080]|0||(RZ(11040),gr(70,11040,U|0)|0,o=8080,n[o>>2]=1,n[o+4>>2]=0),_r(11040)|0||RZ(11040),11040}function RZ(o){o=o|0,i8e(o),ld(o,71)}function r8e(o){o=o|0,n8e(o+24|0)}function n8e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function i8e(o){o=o|0;var l=0;l=tn()|0,rn(o,5,7,l,l8e()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function s8e(o){o=o|0,o8e(o)}function o8e(o){o=o|0,a8e(o)}function a8e(o){o=o|0,s[o+8>>0]=1}function l8e(){return 1936}function c8e(){return u8e()|0}function u8e(){var o=0,l=0,u=0,A=0,d=0,m=0,B=0;return l=I,I=I+16|0,d=l+4|0,B=l,u=Ul(8)|0,o=u,m=o+4|0,n[m>>2]=Jt(1)|0,A=Jt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],f8e(A,m,d),n[u>>2]=A,I=l,o|0}function f8e(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Jt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1916,n[u+12>>2]=l,n[o+4>>2]=u}function A8e(o){o=o|0,rE(o),It(o)}function p8e(o){o=o|0,o=n[o+12>>2]|0,o|0&&It(o)}function h8e(o){o=o|0,It(o)}function g8e(){var o=0;return s[8088]|0||(w8e(11076),gr(25,11076,U|0)|0,o=8088,n[o>>2]=1,n[o+4>>2]=0),11076}function d8e(o,l){o=o|0,l=l|0,n[o>>2]=m8e()|0,n[o+4>>2]=y8e()|0,n[o+12>>2]=l,n[o+8>>2]=E8e()|0,n[o+32>>2]=10}function m8e(){return 11745}function y8e(){return 1940}function E8e(){return FP()|0}function I8e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Uh(A,896)|0)==512?u|0&&(C8e(u),It(u)):l|0&&It(l)}function C8e(o){o=o|0,o=n[o+4>>2]|0,o|0&&Hh(o)}function w8e(o){o=o|0,Nh(o)}function Su(o,l){o=o|0,l=l|0,n[o>>2]=l}function GM(o){return o=o|0,n[o>>2]|0}function B8e(o){return o=o|0,s[n[o>>2]>>0]|0}function v8e(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,n[A>>2]=n[o>>2],S8e(l,A)|0,I=u}function S8e(o,l){o=o|0,l=l|0;var u=0;return u=D8e(n[o>>2]|0,l)|0,l=o+4|0,n[(n[l>>2]|0)+8>>2]=u,n[(n[l>>2]|0)+8>>2]|0}function D8e(o,l){o=o|0,l=l|0;var u=0,A=0;return u=I,I=I+16|0,A=u,_l(A),o=Us(o)|0,l=b8e(o,n[l>>2]|0)|0,Hl(A),I=u,l|0}function _l(o){o=o|0,n[o>>2]=n[2701],n[o+4>>2]=n[2703]}function b8e(o,l){o=o|0,l=l|0;var u=0;return u=Ia(P8e()|0)|0,mn(0,u|0,o|0,OM(l)|0)|0}function Hl(o){o=o|0,CZ(n[o>>2]|0,n[o+4>>2]|0)}function P8e(){var o=0;return s[8096]|0||(x8e(11120),o=8096,n[o>>2]=1,n[o+4>>2]=0),11120}function x8e(o){o=o|0,Oo(o,k8e()|0,1)}function k8e(){return 1948}function Q8e(){R8e()}function R8e(){var o=0,l=0,u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0,Ye=0,Le=0,Te=0;if(Le=I,I=I+16|0,L=Le+4|0,q=Le,ua(65536,10804,n[2702]|0,10812),u=rZ()|0,l=n[u>>2]|0,o=n[l>>2]|0,o|0)for(A=n[u+8>>2]|0,u=n[u+4>>2]|0;gf(o|0,c[u>>0]|0|0,s[A>>0]|0),l=l+4|0,o=n[l>>2]|0,o;)A=A+1|0,u=u+1|0;if(o=nZ()|0,l=n[o>>2]|0,l|0)do OA(l|0,n[o+4>>2]|0),o=o+8|0,l=n[o>>2]|0;while(l|0);OA(T8e()|0,5167),M=Zy()|0,o=n[M>>2]|0;e:do if(o|0){do F8e(n[o+4>>2]|0),o=n[o>>2]|0;while(o|0);if(o=n[M>>2]|0,o|0){R=M;do{for(;d=o,o=n[o>>2]|0,d=n[d+4>>2]|0,!!(N8e(d)|0);)if(n[q>>2]=R,n[L>>2]=n[q>>2],O8e(M,L)|0,!o)break e;if(L8e(d),R=n[R>>2]|0,l=TZ(d)|0,m=Oi()|0,B=I,I=I+((1*(l<<2)|0)+15&-16)|0,k=I,I=I+((1*(l<<2)|0)+15&-16)|0,l=n[(gZ(d)|0)>>2]|0,l|0)for(u=B,A=k;n[u>>2]=n[(Xy(n[l+4>>2]|0)|0)>>2],n[A>>2]=n[l+8>>2],l=n[l>>2]|0,l;)u=u+4|0,A=A+4|0;Te=Xy(d)|0,l=M8e(d)|0,u=TZ(d)|0,A=U8e(d)|0,ac(Te|0,l|0,B|0,k|0,u|0,A|0,kM(d)|0),NA(m|0)}while(o|0)}}while(!1);if(o=n[(QM()|0)>>2]|0,o|0)do Te=o+4|0,M=RM(Te)|0,d=wB(M)|0,m=IB(M)|0,B=(CB(M)|0)+1|0,k=UP(M)|0,R=FZ(Te)|0,M=_r(M)|0,L=OP(Te)|0,q=qM(Te)|0,lu(0,d|0,m|0,B|0,k|0,R|0,M|0,L|0,q|0,WM(Te)|0),o=n[o>>2]|0;while(o|0);o=n[(Zy()|0)>>2]|0;e:do if(o|0){t:for(;;){if(l=n[o+4>>2]|0,l|0&&(oe=n[(Xy(l)|0)>>2]|0,Ye=n[(dZ(l)|0)>>2]|0,Ye|0)){u=Ye;do{l=u+4|0,A=RM(l)|0;r:do if(A|0)switch(_r(A)|0){case 0:break t;case 4:case 3:case 2:{k=wB(A)|0,R=IB(A)|0,M=(CB(A)|0)+1|0,L=UP(A)|0,q=_r(A)|0,Te=OP(l)|0,lu(oe|0,k|0,R|0,M|0,L|0,0,q|0,Te|0,qM(l)|0,WM(l)|0);break r}case 1:{B=wB(A)|0,k=IB(A)|0,R=(CB(A)|0)+1|0,M=UP(A)|0,L=FZ(l)|0,q=_r(A)|0,Te=OP(l)|0,lu(oe|0,B|0,k|0,R|0,M|0,L|0,q|0,Te|0,qM(l)|0,WM(l)|0);break r}case 5:{M=wB(A)|0,L=IB(A)|0,q=(CB(A)|0)+1|0,Te=UP(A)|0,lu(oe|0,M|0,L|0,q|0,Te|0,_8e(A)|0,_r(A)|0,0,0,0);break r}default:break r}while(!1);u=n[u>>2]|0}while(u|0)}if(o=n[o>>2]|0,!o)break e}Nt()}while(!1);we(),I=Le}function T8e(){return 11703}function F8e(o){o=o|0,s[o+40>>0]=0}function N8e(o){return o=o|0,(s[o+40>>0]|0)!=0|0}function O8e(o,l){return o=o|0,l=l|0,l=H8e(l)|0,o=n[l>>2]|0,n[l>>2]=n[o>>2],It(o),n[l>>2]|0}function L8e(o){o=o|0,s[o+40>>0]=1}function TZ(o){return o=o|0,n[o+20>>2]|0}function M8e(o){return o=o|0,n[o+8>>2]|0}function U8e(o){return o=o|0,n[o+32>>2]|0}function UP(o){return o=o|0,n[o+4>>2]|0}function FZ(o){return o=o|0,n[o+4>>2]|0}function qM(o){return o=o|0,n[o+8>>2]|0}function WM(o){return o=o|0,n[o+16>>2]|0}function _8e(o){return o=o|0,n[o+20>>2]|0}function H8e(o){return o=o|0,n[o>>2]|0}function _P(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0,Ye=0,Le=0,Te=0,nt=0,Xe=0,ft=0,He=0,Ve=0,Lt=0;Lt=I,I=I+16|0,oe=Lt;do if(o>>>0<245){if(M=o>>>0<11?16:o+11&-8,o=M>>>3,q=n[2783]|0,u=q>>>o,u&3|0)return l=(u&1^1)+o|0,o=11172+(l<<1<<2)|0,u=o+8|0,A=n[u>>2]|0,d=A+8|0,m=n[d>>2]|0,(o|0)==(m|0)?n[2783]=q&~(1<>2]=o,n[u>>2]=m),Ve=l<<3,n[A+4>>2]=Ve|3,Ve=A+Ve+4|0,n[Ve>>2]=n[Ve>>2]|1,Ve=d,I=Lt,Ve|0;if(L=n[2785]|0,M>>>0>L>>>0){if(u|0)return l=2<>>12&16,l=l>>>B,u=l>>>5&8,l=l>>>u,d=l>>>2&4,l=l>>>d,o=l>>>1&2,l=l>>>o,A=l>>>1&1,A=(u|B|d|o|A)+(l>>>A)|0,l=11172+(A<<1<<2)|0,o=l+8|0,d=n[o>>2]|0,B=d+8|0,u=n[B>>2]|0,(l|0)==(u|0)?(o=q&~(1<>2]=l,n[o>>2]=u,o=q),m=(A<<3)-M|0,n[d+4>>2]=M|3,A=d+M|0,n[A+4>>2]=m|1,n[A+m>>2]=m,L|0&&(d=n[2788]|0,l=L>>>3,u=11172+(l<<1<<2)|0,l=1<>2]|0):(n[2783]=o|l,l=u,o=u+8|0),n[o>>2]=d,n[l+12>>2]=d,n[d+8>>2]=l,n[d+12>>2]=u),n[2785]=m,n[2788]=A,Ve=B,I=Lt,Ve|0;if(k=n[2784]|0,k){if(u=(k&0-k)+-1|0,B=u>>>12&16,u=u>>>B,m=u>>>5&8,u=u>>>m,R=u>>>2&4,u=u>>>R,A=u>>>1&2,u=u>>>A,o=u>>>1&1,o=n[11436+((m|B|R|A|o)+(u>>>o)<<2)>>2]|0,u=(n[o+4>>2]&-8)-M|0,A=n[o+16+(((n[o+16>>2]|0)==0&1)<<2)>>2]|0,!A)R=o,m=u;else{do B=(n[A+4>>2]&-8)-M|0,R=B>>>0>>0,u=R?B:u,o=R?A:o,A=n[A+16+(((n[A+16>>2]|0)==0&1)<<2)>>2]|0;while(A|0);R=o,m=u}if(B=R+M|0,R>>>0>>0){d=n[R+24>>2]|0,l=n[R+12>>2]|0;do if((l|0)==(R|0)){if(o=R+20|0,l=n[o>>2]|0,!l&&(o=R+16|0,l=n[o>>2]|0,!l)){u=0;break}for(;;){if(u=l+20|0,A=n[u>>2]|0,A|0){l=A,o=u;continue}if(u=l+16|0,A=n[u>>2]|0,A)l=A,o=u;else break}n[o>>2]=0,u=l}else u=n[R+8>>2]|0,n[u+12>>2]=l,n[l+8>>2]=u,u=l;while(!1);do if(d|0){if(l=n[R+28>>2]|0,o=11436+(l<<2)|0,(R|0)==(n[o>>2]|0)){if(n[o>>2]=u,!u){n[2784]=k&~(1<>2]|0)!=(R|0)&1)<<2)>>2]=u,!u)break;n[u+24>>2]=d,l=n[R+16>>2]|0,l|0&&(n[u+16>>2]=l,n[l+24>>2]=u),l=n[R+20>>2]|0,l|0&&(n[u+20>>2]=l,n[l+24>>2]=u)}while(!1);return m>>>0<16?(Ve=m+M|0,n[R+4>>2]=Ve|3,Ve=R+Ve+4|0,n[Ve>>2]=n[Ve>>2]|1):(n[R+4>>2]=M|3,n[B+4>>2]=m|1,n[B+m>>2]=m,L|0&&(A=n[2788]|0,l=L>>>3,u=11172+(l<<1<<2)|0,l=1<>2]|0):(n[2783]=q|l,l=u,o=u+8|0),n[o>>2]=A,n[l+12>>2]=A,n[A+8>>2]=l,n[A+12>>2]=u),n[2785]=m,n[2788]=B),Ve=R+8|0,I=Lt,Ve|0}else q=M}else q=M}else q=M}else if(o>>>0<=4294967231)if(o=o+11|0,M=o&-8,R=n[2784]|0,R){A=0-M|0,o=o>>>8,o?M>>>0>16777215?k=31:(q=(o+1048320|0)>>>16&8,He=o<>>16&4,He=He<>>16&2,k=14-(L|q|k)+(He<>>15)|0,k=M>>>(k+7|0)&1|k<<1):k=0,u=n[11436+(k<<2)>>2]|0;e:do if(!u)u=0,o=0,He=57;else for(o=0,B=M<<((k|0)==31?0:25-(k>>>1)|0),m=0;;){if(d=(n[u+4>>2]&-8)-M|0,d>>>0>>0)if(d)o=u,A=d;else{o=u,A=0,d=u,He=61;break e}if(d=n[u+20>>2]|0,u=n[u+16+(B>>>31<<2)>>2]|0,m=(d|0)==0|(d|0)==(u|0)?m:d,d=(u|0)==0,d){u=m,He=57;break}else B=B<<((d^1)&1)}while(!1);if((He|0)==57){if((u|0)==0&(o|0)==0){if(o=2<>>12&16,q=q>>>B,m=q>>>5&8,q=q>>>m,k=q>>>2&4,q=q>>>k,L=q>>>1&2,q=q>>>L,u=q>>>1&1,o=0,u=n[11436+((m|B|k|L|u)+(q>>>u)<<2)>>2]|0}u?(d=u,He=61):(k=o,B=A)}if((He|0)==61)for(;;)if(He=0,u=(n[d+4>>2]&-8)-M|0,q=u>>>0>>0,u=q?u:A,o=q?d:o,d=n[d+16+(((n[d+16>>2]|0)==0&1)<<2)>>2]|0,d)A=u,He=61;else{k=o,B=u;break}if(k|0&&B>>>0<((n[2785]|0)-M|0)>>>0){if(m=k+M|0,k>>>0>=m>>>0)return Ve=0,I=Lt,Ve|0;d=n[k+24>>2]|0,l=n[k+12>>2]|0;do if((l|0)==(k|0)){if(o=k+20|0,l=n[o>>2]|0,!l&&(o=k+16|0,l=n[o>>2]|0,!l)){l=0;break}for(;;){if(u=l+20|0,A=n[u>>2]|0,A|0){l=A,o=u;continue}if(u=l+16|0,A=n[u>>2]|0,A)l=A,o=u;else break}n[o>>2]=0}else Ve=n[k+8>>2]|0,n[Ve+12>>2]=l,n[l+8>>2]=Ve;while(!1);do if(d){if(o=n[k+28>>2]|0,u=11436+(o<<2)|0,(k|0)==(n[u>>2]|0)){if(n[u>>2]=l,!l){A=R&~(1<>2]|0)!=(k|0)&1)<<2)>>2]=l,!l){A=R;break}n[l+24>>2]=d,o=n[k+16>>2]|0,o|0&&(n[l+16>>2]=o,n[o+24>>2]=l),o=n[k+20>>2]|0,o&&(n[l+20>>2]=o,n[o+24>>2]=l),A=R}else A=R;while(!1);do if(B>>>0>=16){if(n[k+4>>2]=M|3,n[m+4>>2]=B|1,n[m+B>>2]=B,l=B>>>3,B>>>0<256){u=11172+(l<<1<<2)|0,o=n[2783]|0,l=1<>2]|0):(n[2783]=o|l,l=u,o=u+8|0),n[o>>2]=m,n[l+12>>2]=m,n[m+8>>2]=l,n[m+12>>2]=u;break}if(l=B>>>8,l?B>>>0>16777215?l=31:(He=(l+1048320|0)>>>16&8,Ve=l<>>16&4,Ve=Ve<>>16&2,l=14-(ft|He|l)+(Ve<>>15)|0,l=B>>>(l+7|0)&1|l<<1):l=0,u=11436+(l<<2)|0,n[m+28>>2]=l,o=m+16|0,n[o+4>>2]=0,n[o>>2]=0,o=1<>2]=m,n[m+24>>2]=u,n[m+12>>2]=m,n[m+8>>2]=m;break}for(o=B<<((l|0)==31?0:25-(l>>>1)|0),u=n[u>>2]|0;;){if((n[u+4>>2]&-8|0)==(B|0)){He=97;break}if(A=u+16+(o>>>31<<2)|0,l=n[A>>2]|0,l)o=o<<1,u=l;else{He=96;break}}if((He|0)==96){n[A>>2]=m,n[m+24>>2]=u,n[m+12>>2]=m,n[m+8>>2]=m;break}else if((He|0)==97){He=u+8|0,Ve=n[He>>2]|0,n[Ve+12>>2]=m,n[He>>2]=m,n[m+8>>2]=Ve,n[m+12>>2]=u,n[m+24>>2]=0;break}}else Ve=B+M|0,n[k+4>>2]=Ve|3,Ve=k+Ve+4|0,n[Ve>>2]=n[Ve>>2]|1;while(!1);return Ve=k+8|0,I=Lt,Ve|0}else q=M}else q=M;else q=-1;while(!1);if(u=n[2785]|0,u>>>0>=q>>>0)return l=u-q|0,o=n[2788]|0,l>>>0>15?(Ve=o+q|0,n[2788]=Ve,n[2785]=l,n[Ve+4>>2]=l|1,n[Ve+l>>2]=l,n[o+4>>2]=q|3):(n[2785]=0,n[2788]=0,n[o+4>>2]=u|3,Ve=o+u+4|0,n[Ve>>2]=n[Ve>>2]|1),Ve=o+8|0,I=Lt,Ve|0;if(B=n[2786]|0,B>>>0>q>>>0)return ft=B-q|0,n[2786]=ft,Ve=n[2789]|0,He=Ve+q|0,n[2789]=He,n[He+4>>2]=ft|1,n[Ve+4>>2]=q|3,Ve=Ve+8|0,I=Lt,Ve|0;if(n[2901]|0?o=n[2903]|0:(n[2903]=4096,n[2902]=4096,n[2904]=-1,n[2905]=-1,n[2906]=0,n[2894]=0,o=oe&-16^1431655768,n[oe>>2]=o,n[2901]=o,o=4096),k=q+48|0,R=q+47|0,m=o+R|0,d=0-o|0,M=m&d,M>>>0<=q>>>0||(o=n[2893]|0,o|0&&(L=n[2891]|0,oe=L+M|0,oe>>>0<=L>>>0|oe>>>0>o>>>0)))return Ve=0,I=Lt,Ve|0;e:do if(n[2894]&4)l=0,He=133;else{u=n[2789]|0;t:do if(u){for(A=11580;o=n[A>>2]|0,!(o>>>0<=u>>>0&&(Te=A+4|0,(o+(n[Te>>2]|0)|0)>>>0>u>>>0));)if(o=n[A+8>>2]|0,o)A=o;else{He=118;break t}if(l=m-B&d,l>>>0<2147483647)if(o=jh(l|0)|0,(o|0)==((n[A>>2]|0)+(n[Te>>2]|0)|0)){if((o|0)!=-1){B=l,m=o,He=135;break e}}else A=o,He=126;else l=0}else He=118;while(!1);do if((He|0)==118)if(u=jh(0)|0,(u|0)!=-1&&(l=u,Ye=n[2902]|0,Le=Ye+-1|0,l=(Le&l|0?(Le+l&0-Ye)-l|0:0)+M|0,Ye=n[2891]|0,Le=l+Ye|0,l>>>0>q>>>0&l>>>0<2147483647)){if(Te=n[2893]|0,Te|0&&Le>>>0<=Ye>>>0|Le>>>0>Te>>>0){l=0;break}if(o=jh(l|0)|0,(o|0)==(u|0)){B=l,m=u,He=135;break e}else A=o,He=126}else l=0;while(!1);do if((He|0)==126){if(u=0-l|0,!(k>>>0>l>>>0&(l>>>0<2147483647&(A|0)!=-1)))if((A|0)==-1){l=0;break}else{B=l,m=A,He=135;break e}if(o=n[2903]|0,o=R-l+o&0-o,o>>>0>=2147483647){B=l,m=A,He=135;break e}if((jh(o|0)|0)==-1){jh(u|0)|0,l=0;break}else{B=o+l|0,m=A,He=135;break e}}while(!1);n[2894]=n[2894]|4,He=133}while(!1);if((He|0)==133&&M>>>0<2147483647&&(ft=jh(M|0)|0,Te=jh(0)|0,nt=Te-ft|0,Xe=nt>>>0>(q+40|0)>>>0,!((ft|0)==-1|Xe^1|ft>>>0>>0&((ft|0)!=-1&(Te|0)!=-1)^1))&&(B=Xe?nt:l,m=ft,He=135),(He|0)==135){l=(n[2891]|0)+B|0,n[2891]=l,l>>>0>(n[2892]|0)>>>0&&(n[2892]=l),R=n[2789]|0;do if(R){for(l=11580;;){if(o=n[l>>2]|0,u=l+4|0,A=n[u>>2]|0,(m|0)==(o+A|0)){He=145;break}if(d=n[l+8>>2]|0,d)l=d;else break}if((He|0)==145&&!(n[l+12>>2]&8|0)&&R>>>0>>0&R>>>0>=o>>>0){n[u>>2]=A+B,Ve=R+8|0,Ve=Ve&7|0?0-Ve&7:0,He=R+Ve|0,Ve=(n[2786]|0)+(B-Ve)|0,n[2789]=He,n[2786]=Ve,n[He+4>>2]=Ve|1,n[He+Ve+4>>2]=40,n[2790]=n[2905];break}for(m>>>0<(n[2787]|0)>>>0&&(n[2787]=m),u=m+B|0,l=11580;;){if((n[l>>2]|0)==(u|0)){He=153;break}if(o=n[l+8>>2]|0,o)l=o;else break}if((He|0)==153&&!(n[l+12>>2]&8|0)){n[l>>2]=m,L=l+4|0,n[L>>2]=(n[L>>2]|0)+B,L=m+8|0,L=m+(L&7|0?0-L&7:0)|0,l=u+8|0,l=u+(l&7|0?0-l&7:0)|0,M=L+q|0,k=l-L-q|0,n[L+4>>2]=q|3;do if((l|0)!=(R|0)){if((l|0)==(n[2788]|0)){Ve=(n[2785]|0)+k|0,n[2785]=Ve,n[2788]=M,n[M+4>>2]=Ve|1,n[M+Ve>>2]=Ve;break}if(o=n[l+4>>2]|0,(o&3|0)==1){B=o&-8,A=o>>>3;e:do if(o>>>0<256)if(o=n[l+8>>2]|0,u=n[l+12>>2]|0,(u|0)==(o|0)){n[2783]=n[2783]&~(1<>2]=u,n[u+8>>2]=o;break}else{m=n[l+24>>2]|0,o=n[l+12>>2]|0;do if((o|0)==(l|0)){if(A=l+16|0,u=A+4|0,o=n[u>>2]|0,!o)if(o=n[A>>2]|0,o)u=A;else{o=0;break}for(;;){if(A=o+20|0,d=n[A>>2]|0,d|0){o=d,u=A;continue}if(A=o+16|0,d=n[A>>2]|0,d)o=d,u=A;else break}n[u>>2]=0}else Ve=n[l+8>>2]|0,n[Ve+12>>2]=o,n[o+8>>2]=Ve;while(!1);if(!m)break;u=n[l+28>>2]|0,A=11436+(u<<2)|0;do if((l|0)!=(n[A>>2]|0)){if(n[m+16+(((n[m+16>>2]|0)!=(l|0)&1)<<2)>>2]=o,!o)break e}else{if(n[A>>2]=o,o|0)break;n[2784]=n[2784]&~(1<>2]=m,u=l+16|0,A=n[u>>2]|0,A|0&&(n[o+16>>2]=A,n[A+24>>2]=o),u=n[u+4>>2]|0,!u)break;n[o+20>>2]=u,n[u+24>>2]=o}while(!1);l=l+B|0,d=B+k|0}else d=k;if(l=l+4|0,n[l>>2]=n[l>>2]&-2,n[M+4>>2]=d|1,n[M+d>>2]=d,l=d>>>3,d>>>0<256){u=11172+(l<<1<<2)|0,o=n[2783]|0,l=1<>2]|0):(n[2783]=o|l,l=u,o=u+8|0),n[o>>2]=M,n[l+12>>2]=M,n[M+8>>2]=l,n[M+12>>2]=u;break}l=d>>>8;do if(!l)l=0;else{if(d>>>0>16777215){l=31;break}He=(l+1048320|0)>>>16&8,Ve=l<>>16&4,Ve=Ve<>>16&2,l=14-(ft|He|l)+(Ve<>>15)|0,l=d>>>(l+7|0)&1|l<<1}while(!1);if(A=11436+(l<<2)|0,n[M+28>>2]=l,o=M+16|0,n[o+4>>2]=0,n[o>>2]=0,o=n[2784]|0,u=1<>2]=M,n[M+24>>2]=A,n[M+12>>2]=M,n[M+8>>2]=M;break}for(o=d<<((l|0)==31?0:25-(l>>>1)|0),u=n[A>>2]|0;;){if((n[u+4>>2]&-8|0)==(d|0)){He=194;break}if(A=u+16+(o>>>31<<2)|0,l=n[A>>2]|0,l)o=o<<1,u=l;else{He=193;break}}if((He|0)==193){n[A>>2]=M,n[M+24>>2]=u,n[M+12>>2]=M,n[M+8>>2]=M;break}else if((He|0)==194){He=u+8|0,Ve=n[He>>2]|0,n[Ve+12>>2]=M,n[He>>2]=M,n[M+8>>2]=Ve,n[M+12>>2]=u,n[M+24>>2]=0;break}}else Ve=(n[2786]|0)+k|0,n[2786]=Ve,n[2789]=M,n[M+4>>2]=Ve|1;while(!1);return Ve=L+8|0,I=Lt,Ve|0}for(l=11580;o=n[l>>2]|0,!(o>>>0<=R>>>0&&(Ve=o+(n[l+4>>2]|0)|0,Ve>>>0>R>>>0));)l=n[l+8>>2]|0;d=Ve+-47|0,o=d+8|0,o=d+(o&7|0?0-o&7:0)|0,d=R+16|0,o=o>>>0>>0?R:o,l=o+8|0,u=m+8|0,u=u&7|0?0-u&7:0,He=m+u|0,u=B+-40-u|0,n[2789]=He,n[2786]=u,n[He+4>>2]=u|1,n[He+u+4>>2]=40,n[2790]=n[2905],u=o+4|0,n[u>>2]=27,n[l>>2]=n[2895],n[l+4>>2]=n[2896],n[l+8>>2]=n[2897],n[l+12>>2]=n[2898],n[2895]=m,n[2896]=B,n[2898]=0,n[2897]=l,l=o+24|0;do He=l,l=l+4|0,n[l>>2]=7;while((He+8|0)>>>0>>0);if((o|0)!=(R|0)){if(m=o-R|0,n[u>>2]=n[u>>2]&-2,n[R+4>>2]=m|1,n[o>>2]=m,l=m>>>3,m>>>0<256){u=11172+(l<<1<<2)|0,o=n[2783]|0,l=1<>2]|0):(n[2783]=o|l,l=u,o=u+8|0),n[o>>2]=R,n[l+12>>2]=R,n[R+8>>2]=l,n[R+12>>2]=u;break}if(l=m>>>8,l?m>>>0>16777215?u=31:(He=(l+1048320|0)>>>16&8,Ve=l<>>16&4,Ve=Ve<>>16&2,u=14-(ft|He|u)+(Ve<>>15)|0,u=m>>>(u+7|0)&1|u<<1):u=0,A=11436+(u<<2)|0,n[R+28>>2]=u,n[R+20>>2]=0,n[d>>2]=0,l=n[2784]|0,o=1<>2]=R,n[R+24>>2]=A,n[R+12>>2]=R,n[R+8>>2]=R;break}for(o=m<<((u|0)==31?0:25-(u>>>1)|0),u=n[A>>2]|0;;){if((n[u+4>>2]&-8|0)==(m|0)){He=216;break}if(A=u+16+(o>>>31<<2)|0,l=n[A>>2]|0,l)o=o<<1,u=l;else{He=215;break}}if((He|0)==215){n[A>>2]=R,n[R+24>>2]=u,n[R+12>>2]=R,n[R+8>>2]=R;break}else if((He|0)==216){He=u+8|0,Ve=n[He>>2]|0,n[Ve+12>>2]=R,n[He>>2]=R,n[R+8>>2]=Ve,n[R+12>>2]=u,n[R+24>>2]=0;break}}}else{Ve=n[2787]|0,(Ve|0)==0|m>>>0>>0&&(n[2787]=m),n[2895]=m,n[2896]=B,n[2898]=0,n[2792]=n[2901],n[2791]=-1,l=0;do Ve=11172+(l<<1<<2)|0,n[Ve+12>>2]=Ve,n[Ve+8>>2]=Ve,l=l+1|0;while((l|0)!=32);Ve=m+8|0,Ve=Ve&7|0?0-Ve&7:0,He=m+Ve|0,Ve=B+-40-Ve|0,n[2789]=He,n[2786]=Ve,n[He+4>>2]=Ve|1,n[He+Ve+4>>2]=40,n[2790]=n[2905]}while(!1);if(l=n[2786]|0,l>>>0>q>>>0)return ft=l-q|0,n[2786]=ft,Ve=n[2789]|0,He=Ve+q|0,n[2789]=He,n[He+4>>2]=ft|1,n[Ve+4>>2]=q|3,Ve=Ve+8|0,I=Lt,Ve|0}return n[(eE()|0)>>2]=12,Ve=0,I=Lt,Ve|0}function HP(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0,R=0;if(o){u=o+-8|0,d=n[2787]|0,o=n[o+-4>>2]|0,l=o&-8,R=u+l|0;do if(o&1)k=u,B=u;else{if(A=n[u>>2]|0,!(o&3)||(B=u+(0-A)|0,m=A+l|0,B>>>0>>0))return;if((B|0)==(n[2788]|0)){if(o=R+4|0,l=n[o>>2]|0,(l&3|0)!=3){k=B,l=m;break}n[2785]=m,n[o>>2]=l&-2,n[B+4>>2]=m|1,n[B+m>>2]=m;return}if(u=A>>>3,A>>>0<256)if(o=n[B+8>>2]|0,l=n[B+12>>2]|0,(l|0)==(o|0)){n[2783]=n[2783]&~(1<>2]=l,n[l+8>>2]=o,k=B,l=m;break}d=n[B+24>>2]|0,o=n[B+12>>2]|0;do if((o|0)==(B|0)){if(u=B+16|0,l=u+4|0,o=n[l>>2]|0,!o)if(o=n[u>>2]|0,o)l=u;else{o=0;break}for(;;){if(u=o+20|0,A=n[u>>2]|0,A|0){o=A,l=u;continue}if(u=o+16|0,A=n[u>>2]|0,A)o=A,l=u;else break}n[l>>2]=0}else k=n[B+8>>2]|0,n[k+12>>2]=o,n[o+8>>2]=k;while(!1);if(d){if(l=n[B+28>>2]|0,u=11436+(l<<2)|0,(B|0)==(n[u>>2]|0)){if(n[u>>2]=o,!o){n[2784]=n[2784]&~(1<>2]|0)!=(B|0)&1)<<2)>>2]=o,!o){k=B,l=m;break}n[o+24>>2]=d,l=B+16|0,u=n[l>>2]|0,u|0&&(n[o+16>>2]=u,n[u+24>>2]=o),l=n[l+4>>2]|0,l?(n[o+20>>2]=l,n[l+24>>2]=o,k=B,l=m):(k=B,l=m)}else k=B,l=m}while(!1);if(!(B>>>0>=R>>>0)&&(o=R+4|0,A=n[o>>2]|0,!!(A&1))){if(A&2)n[o>>2]=A&-2,n[k+4>>2]=l|1,n[B+l>>2]=l,d=l;else{if(o=n[2788]|0,(R|0)==(n[2789]|0)){if(R=(n[2786]|0)+l|0,n[2786]=R,n[2789]=k,n[k+4>>2]=R|1,(k|0)!=(o|0))return;n[2788]=0,n[2785]=0;return}if((R|0)==(o|0)){R=(n[2785]|0)+l|0,n[2785]=R,n[2788]=B,n[k+4>>2]=R|1,n[B+R>>2]=R;return}d=(A&-8)+l|0,u=A>>>3;do if(A>>>0<256)if(l=n[R+8>>2]|0,o=n[R+12>>2]|0,(o|0)==(l|0)){n[2783]=n[2783]&~(1<>2]=o,n[o+8>>2]=l;break}else{m=n[R+24>>2]|0,o=n[R+12>>2]|0;do if((o|0)==(R|0)){if(u=R+16|0,l=u+4|0,o=n[l>>2]|0,!o)if(o=n[u>>2]|0,o)l=u;else{u=0;break}for(;;){if(u=o+20|0,A=n[u>>2]|0,A|0){o=A,l=u;continue}if(u=o+16|0,A=n[u>>2]|0,A)o=A,l=u;else break}n[l>>2]=0,u=o}else u=n[R+8>>2]|0,n[u+12>>2]=o,n[o+8>>2]=u,u=o;while(!1);if(m|0){if(o=n[R+28>>2]|0,l=11436+(o<<2)|0,(R|0)==(n[l>>2]|0)){if(n[l>>2]=u,!u){n[2784]=n[2784]&~(1<>2]|0)!=(R|0)&1)<<2)>>2]=u,!u)break;n[u+24>>2]=m,o=R+16|0,l=n[o>>2]|0,l|0&&(n[u+16>>2]=l,n[l+24>>2]=u),o=n[o+4>>2]|0,o|0&&(n[u+20>>2]=o,n[o+24>>2]=u)}}while(!1);if(n[k+4>>2]=d|1,n[B+d>>2]=d,(k|0)==(n[2788]|0)){n[2785]=d;return}}if(o=d>>>3,d>>>0<256){u=11172+(o<<1<<2)|0,l=n[2783]|0,o=1<>2]|0):(n[2783]=l|o,o=u,l=u+8|0),n[l>>2]=k,n[o+12>>2]=k,n[k+8>>2]=o,n[k+12>>2]=u;return}o=d>>>8,o?d>>>0>16777215?o=31:(B=(o+1048320|0)>>>16&8,R=o<>>16&4,R=R<>>16&2,o=14-(m|B|o)+(R<>>15)|0,o=d>>>(o+7|0)&1|o<<1):o=0,A=11436+(o<<2)|0,n[k+28>>2]=o,n[k+20>>2]=0,n[k+16>>2]=0,l=n[2784]|0,u=1<>>1)|0),u=n[A>>2]|0;;){if((n[u+4>>2]&-8|0)==(d|0)){o=73;break}if(A=u+16+(l>>>31<<2)|0,o=n[A>>2]|0,o)l=l<<1,u=o;else{o=72;break}}if((o|0)==72){n[A>>2]=k,n[k+24>>2]=u,n[k+12>>2]=k,n[k+8>>2]=k;break}else if((o|0)==73){B=u+8|0,R=n[B>>2]|0,n[R+12>>2]=k,n[B>>2]=k,n[k+8>>2]=R,n[k+12>>2]=u,n[k+24>>2]=0;break}}else n[2784]=l|u,n[A>>2]=k,n[k+24>>2]=A,n[k+12>>2]=k,n[k+8>>2]=k;while(!1);if(R=(n[2791]|0)+-1|0,n[2791]=R,!R)o=11588;else return;for(;o=n[o>>2]|0,o;)o=o+8|0;n[2791]=-1}}}function j8e(){return 11628}function G8e(o){o=o|0;var l=0,u=0;return l=I,I=I+16|0,u=l,n[u>>2]=V8e(n[o+60>>2]|0)|0,o=jP(uu(6,u|0)|0)|0,I=l,o|0}function NZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0,Ye=0;q=I,I=I+48|0,M=q+16|0,m=q,d=q+32|0,k=o+28|0,A=n[k>>2]|0,n[d>>2]=A,R=o+20|0,A=(n[R>>2]|0)-A|0,n[d+4>>2]=A,n[d+8>>2]=l,n[d+12>>2]=u,A=A+u|0,B=o+60|0,n[m>>2]=n[B>>2],n[m+4>>2]=d,n[m+8>>2]=2,m=jP(qa(146,m|0)|0)|0;e:do if((A|0)!=(m|0)){for(l=2;!((m|0)<0);)if(A=A-m|0,Ye=n[d+4>>2]|0,oe=m>>>0>Ye>>>0,d=oe?d+8|0:d,l=(oe<<31>>31)+l|0,Ye=m-(oe?Ye:0)|0,n[d>>2]=(n[d>>2]|0)+Ye,oe=d+4|0,n[oe>>2]=(n[oe>>2]|0)-Ye,n[M>>2]=n[B>>2],n[M+4>>2]=d,n[M+8>>2]=l,m=jP(qa(146,M|0)|0)|0,(A|0)==(m|0)){L=3;break e}n[o+16>>2]=0,n[k>>2]=0,n[R>>2]=0,n[o>>2]=n[o>>2]|32,(l|0)==2?u=0:u=u-(n[d+4>>2]|0)|0}else L=3;while(!1);return(L|0)==3&&(Ye=n[o+44>>2]|0,n[o+16>>2]=Ye+(n[o+48>>2]|0),n[k>>2]=Ye,n[R>>2]=Ye),I=q,u|0}function q8e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;return d=I,I=I+32|0,m=d,A=d+20|0,n[m>>2]=n[o+60>>2],n[m+4>>2]=0,n[m+8>>2]=l,n[m+12>>2]=A,n[m+16>>2]=u,(jP(Ga(140,m|0)|0)|0)<0?(n[A>>2]=-1,o=-1):o=n[A>>2]|0,I=d,o|0}function jP(o){return o=o|0,o>>>0>4294963200&&(n[(eE()|0)>>2]=0-o,o=-1),o|0}function eE(){return(W8e()|0)+64|0}function W8e(){return VM()|0}function VM(){return 2084}function V8e(o){return o=o|0,o|0}function Y8e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;return d=I,I=I+32|0,A=d,n[o+36>>2]=1,!(n[o>>2]&64|0)&&(n[A>>2]=n[o+60>>2],n[A+4>>2]=21523,n[A+8>>2]=d+16,co(54,A|0)|0)&&(s[o+75>>0]=-1),A=NZ(o,l,u)|0,I=d,A|0}function OZ(o,l){o=o|0,l=l|0;var u=0,A=0;if(u=s[o>>0]|0,A=s[l>>0]|0,!(u<<24>>24)||u<<24>>24!=A<<24>>24)o=A;else{do o=o+1|0,l=l+1|0,u=s[o>>0]|0,A=s[l>>0]|0;while(!(!(u<<24>>24)||u<<24>>24!=A<<24>>24));o=A}return(u&255)-(o&255)|0}function K8e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;e:do if(!u)o=0;else{for(;A=s[o>>0]|0,d=s[l>>0]|0,A<<24>>24==d<<24>>24;)if(u=u+-1|0,u)o=o+1|0,l=l+1|0;else{o=0;break e}o=(A&255)-(d&255)|0}while(!1);return o|0}function LZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0,Ye=0,Le=0,Te=0;Te=I,I=I+224|0,L=Te+120|0,q=Te+80|0,Ye=Te,Le=Te+136|0,A=q,d=A+40|0;do n[A>>2]=0,A=A+4|0;while((A|0)<(d|0));return n[L>>2]=n[u>>2],(YM(0,l,L,Ye,q)|0)<0?u=-1:((n[o+76>>2]|0)>-1?oe=J8e(o)|0:oe=0,u=n[o>>2]|0,M=u&32,(s[o+74>>0]|0)<1&&(n[o>>2]=u&-33),A=o+48|0,n[A>>2]|0?u=YM(o,l,L,Ye,q)|0:(d=o+44|0,m=n[d>>2]|0,n[d>>2]=Le,B=o+28|0,n[B>>2]=Le,k=o+20|0,n[k>>2]=Le,n[A>>2]=80,R=o+16|0,n[R>>2]=Le+80,u=YM(o,l,L,Ye,q)|0,m&&(VP[n[o+36>>2]&7](o,0,0)|0,u=n[k>>2]|0?u:-1,n[d>>2]=m,n[A>>2]=0,n[R>>2]=0,n[B>>2]=0,n[k>>2]=0)),A=n[o>>2]|0,n[o>>2]=A|M,oe|0&&z8e(o),u=A&32|0?-1:u),I=Te,u|0}function YM(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0,Ye=0,Le=0,Te=0,nt=0,Xe=0,ft=0,He=0,Ve=0,Lt=0,Gr=0,fr=0,$t=0,Rr=0,Hr=0,cr=0;cr=I,I=I+64|0,fr=cr+16|0,$t=cr,Lt=cr+24|0,Rr=cr+8|0,Hr=cr+20|0,n[fr>>2]=l,ft=(o|0)!=0,He=Lt+40|0,Ve=He,Lt=Lt+39|0,Gr=Rr+4|0,B=0,m=0,L=0;e:for(;;){do if((m|0)>-1)if((B|0)>(2147483647-m|0)){n[(eE()|0)>>2]=75,m=-1;break}else{m=B+m|0;break}while(!1);if(B=s[l>>0]|0,B<<24>>24)k=l;else{Xe=87;break}t:for(;;){switch(B<<24>>24){case 37:{B=k,Xe=9;break t}case 0:{B=k;break t}default:}nt=k+1|0,n[fr>>2]=nt,B=s[nt>>0]|0,k=nt}t:do if((Xe|0)==9)for(;;){if(Xe=0,(s[k+1>>0]|0)!=37)break t;if(B=B+1|0,k=k+2|0,n[fr>>2]=k,(s[k>>0]|0)==37)Xe=9;else break}while(!1);if(B=B-l|0,ft&&bs(o,l,B),B|0){l=k;continue}R=k+1|0,B=(s[R>>0]|0)+-48|0,B>>>0<10?(nt=(s[k+2>>0]|0)==36,Te=nt?B:-1,L=nt?1:L,R=nt?k+3|0:R):Te=-1,n[fr>>2]=R,B=s[R>>0]|0,k=(B<<24>>24)+-32|0;t:do if(k>>>0<32)for(M=0,q=B;;){if(B=1<>2]=R,B=s[R>>0]|0,k=(B<<24>>24)+-32|0,k>>>0>=32)break;q=B}else M=0;while(!1);if(B<<24>>24==42){if(k=R+1|0,B=(s[k>>0]|0)+-48|0,B>>>0<10&&(s[R+2>>0]|0)==36)n[d+(B<<2)>>2]=10,B=n[A+((s[k>>0]|0)+-48<<3)>>2]|0,L=1,R=R+3|0;else{if(L|0){m=-1;break}ft?(L=(n[u>>2]|0)+3&-4,B=n[L>>2]|0,n[u>>2]=L+4,L=0,R=k):(B=0,L=0,R=k)}n[fr>>2]=R,nt=(B|0)<0,B=nt?0-B|0:B,M=nt?M|8192:M}else{if(B=MZ(fr)|0,(B|0)<0){m=-1;break}R=n[fr>>2]|0}do if((s[R>>0]|0)==46){if((s[R+1>>0]|0)!=42){n[fr>>2]=R+1,k=MZ(fr)|0,R=n[fr>>2]|0;break}if(q=R+2|0,k=(s[q>>0]|0)+-48|0,k>>>0<10&&(s[R+3>>0]|0)==36){n[d+(k<<2)>>2]=10,k=n[A+((s[q>>0]|0)+-48<<3)>>2]|0,R=R+4|0,n[fr>>2]=R;break}if(L|0){m=-1;break e}ft?(nt=(n[u>>2]|0)+3&-4,k=n[nt>>2]|0,n[u>>2]=nt+4):k=0,n[fr>>2]=q,R=q}else k=-1;while(!1);for(Le=0;;){if(((s[R>>0]|0)+-65|0)>>>0>57){m=-1;break e}if(nt=R+1|0,n[fr>>2]=nt,q=s[(s[R>>0]|0)+-65+(5178+(Le*58|0))>>0]|0,oe=q&255,(oe+-1|0)>>>0<8)Le=oe,R=nt;else break}if(!(q<<24>>24)){m=-1;break}Ye=(Te|0)>-1;do if(q<<24>>24==19)if(Ye){m=-1;break e}else Xe=49;else{if(Ye){n[d+(Te<<2)>>2]=oe,Ye=A+(Te<<3)|0,Te=n[Ye+4>>2]|0,Xe=$t,n[Xe>>2]=n[Ye>>2],n[Xe+4>>2]=Te,Xe=49;break}if(!ft){m=0;break e}UZ($t,oe,u)}while(!1);if((Xe|0)==49&&(Xe=0,!ft)){B=0,l=nt;continue}R=s[R>>0]|0,R=(Le|0)!=0&(R&15|0)==3?R&-33:R,Ye=M&-65537,Te=M&8192|0?Ye:M;t:do switch(R|0){case 110:switch((Le&255)<<24>>24){case 0:{n[n[$t>>2]>>2]=m,B=0,l=nt;continue e}case 1:{n[n[$t>>2]>>2]=m,B=0,l=nt;continue e}case 2:{B=n[$t>>2]|0,n[B>>2]=m,n[B+4>>2]=((m|0)<0)<<31>>31,B=0,l=nt;continue e}case 3:{a[n[$t>>2]>>1]=m,B=0,l=nt;continue e}case 4:{s[n[$t>>2]>>0]=m,B=0,l=nt;continue e}case 6:{n[n[$t>>2]>>2]=m,B=0,l=nt;continue e}case 7:{B=n[$t>>2]|0,n[B>>2]=m,n[B+4>>2]=((m|0)<0)<<31>>31,B=0,l=nt;continue e}default:{B=0,l=nt;continue e}}case 112:{R=120,k=k>>>0>8?k:8,l=Te|8,Xe=61;break}case 88:case 120:{l=Te,Xe=61;break}case 111:{R=$t,l=n[R>>2]|0,R=n[R+4>>2]|0,oe=X8e(l,R,He)|0,Ye=Ve-oe|0,M=0,q=5642,k=(Te&8|0)==0|(k|0)>(Ye|0)?k:Ye+1|0,Ye=Te,Xe=67;break}case 105:case 100:if(R=$t,l=n[R>>2]|0,R=n[R+4>>2]|0,(R|0)<0){l=GP(0,0,l|0,R|0)|0,R=Be,M=$t,n[M>>2]=l,n[M+4>>2]=R,M=1,q=5642,Xe=66;break t}else{M=(Te&2049|0)!=0&1,q=Te&2048|0?5643:Te&1|0?5644:5642,Xe=66;break t}case 117:{R=$t,M=0,q=5642,l=n[R>>2]|0,R=n[R+4>>2]|0,Xe=66;break}case 99:{s[Lt>>0]=n[$t>>2],l=Lt,M=0,q=5642,oe=He,R=1,k=Ye;break}case 109:{R=$8e(n[(eE()|0)>>2]|0)|0,Xe=71;break}case 115:{R=n[$t>>2]|0,R=R|0?R:5652,Xe=71;break}case 67:{n[Rr>>2]=n[$t>>2],n[Gr>>2]=0,n[$t>>2]=Rr,oe=-1,R=Rr,Xe=75;break}case 83:{l=n[$t>>2]|0,k?(oe=k,R=l,Xe=75):(_s(o,32,B,0,Te),l=0,Xe=84);break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{B=tHe(o,+E[$t>>3],B,k,Te,R)|0,l=nt;continue e}default:M=0,q=5642,oe=He,R=k,k=Te}while(!1);t:do if((Xe|0)==61)Te=$t,Le=n[Te>>2]|0,Te=n[Te+4>>2]|0,oe=Z8e(Le,Te,He,R&32)|0,q=(l&8|0)==0|(Le|0)==0&(Te|0)==0,M=q?0:2,q=q?5642:5642+(R>>4)|0,Ye=l,l=Le,R=Te,Xe=67;else if((Xe|0)==66)oe=tE(l,R,He)|0,Ye=Te,Xe=67;else if((Xe|0)==71)Xe=0,Te=eHe(R,0,k)|0,Le=(Te|0)==0,l=R,M=0,q=5642,oe=Le?R+k|0:Te,R=Le?k:Te-R|0,k=Ye;else if((Xe|0)==75){for(Xe=0,q=R,l=0,k=0;M=n[q>>2]|0,!(!M||(k=_Z(Hr,M)|0,(k|0)<0|k>>>0>(oe-l|0)>>>0));)if(l=k+l|0,oe>>>0>l>>>0)q=q+4|0;else break;if((k|0)<0){m=-1;break e}if(_s(o,32,B,l,Te),!l)l=0,Xe=84;else for(M=0;;){if(k=n[R>>2]|0,!k){Xe=84;break t}if(k=_Z(Hr,k)|0,M=k+M|0,(M|0)>(l|0)){Xe=84;break t}if(bs(o,Hr,k),M>>>0>=l>>>0){Xe=84;break}else R=R+4|0}}while(!1);if((Xe|0)==67)Xe=0,R=(l|0)!=0|(R|0)!=0,Te=(k|0)!=0|R,R=((R^1)&1)+(Ve-oe)|0,l=Te?oe:He,oe=He,R=Te?(k|0)>(R|0)?k:R:k,k=(k|0)>-1?Ye&-65537:Ye;else if((Xe|0)==84){Xe=0,_s(o,32,B,l,Te^8192),B=(B|0)>(l|0)?B:l,l=nt;continue}Le=oe-l|0,Ye=(R|0)<(Le|0)?Le:R,Te=Ye+M|0,B=(B|0)<(Te|0)?Te:B,_s(o,32,B,Te,k),bs(o,q,M),_s(o,48,B,Te,k^65536),_s(o,48,Ye,Le,0),bs(o,l,Le),_s(o,32,B,Te,k^8192),l=nt}e:do if((Xe|0)==87&&!o)if(!L)m=0;else{for(m=1;l=n[d+(m<<2)>>2]|0,!!l;)if(UZ(A+(m<<3)|0,l,u),m=m+1|0,(m|0)>=10){m=1;break e}for(;;){if(n[d+(m<<2)>>2]|0){m=-1;break e}if(m=m+1|0,(m|0)>=10){m=1;break}}}while(!1);return I=cr,m|0}function J8e(o){return o=o|0,0}function z8e(o){o=o|0}function bs(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]&32||uHe(l,u,o)|0}function MZ(o){o=o|0;var l=0,u=0,A=0;if(u=n[o>>2]|0,A=(s[u>>0]|0)+-48|0,A>>>0<10){l=0;do l=A+(l*10|0)|0,u=u+1|0,n[o>>2]=u,A=(s[u>>0]|0)+-48|0;while(A>>>0<10)}else l=0;return l|0}function UZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;e:do if(l>>>0<=20)do switch(l|0){case 9:{A=(n[u>>2]|0)+3&-4,l=n[A>>2]|0,n[u>>2]=A+4,n[o>>2]=l;break e}case 10:{A=(n[u>>2]|0)+3&-4,l=n[A>>2]|0,n[u>>2]=A+4,A=o,n[A>>2]=l,n[A+4>>2]=((l|0)<0)<<31>>31;break e}case 11:{A=(n[u>>2]|0)+3&-4,l=n[A>>2]|0,n[u>>2]=A+4,A=o,n[A>>2]=l,n[A+4>>2]=0;break e}case 12:{A=(n[u>>2]|0)+7&-8,l=A,d=n[l>>2]|0,l=n[l+4>>2]|0,n[u>>2]=A+8,A=o,n[A>>2]=d,n[A+4>>2]=l;break e}case 13:{d=(n[u>>2]|0)+3&-4,A=n[d>>2]|0,n[u>>2]=d+4,A=(A&65535)<<16>>16,d=o,n[d>>2]=A,n[d+4>>2]=((A|0)<0)<<31>>31;break e}case 14:{d=(n[u>>2]|0)+3&-4,A=n[d>>2]|0,n[u>>2]=d+4,d=o,n[d>>2]=A&65535,n[d+4>>2]=0;break e}case 15:{d=(n[u>>2]|0)+3&-4,A=n[d>>2]|0,n[u>>2]=d+4,A=(A&255)<<24>>24,d=o,n[d>>2]=A,n[d+4>>2]=((A|0)<0)<<31>>31;break e}case 16:{d=(n[u>>2]|0)+3&-4,A=n[d>>2]|0,n[u>>2]=d+4,d=o,n[d>>2]=A&255,n[d+4>>2]=0;break e}case 17:{d=(n[u>>2]|0)+7&-8,m=+E[d>>3],n[u>>2]=d+8,E[o>>3]=m;break e}case 18:{d=(n[u>>2]|0)+7&-8,m=+E[d>>3],n[u>>2]=d+8,E[o>>3]=m;break e}default:break e}while(!1);while(!1)}function Z8e(o,l,u,A){if(o=o|0,l=l|0,u=u|0,A=A|0,!((o|0)==0&(l|0)==0))do u=u+-1|0,s[u>>0]=c[5694+(o&15)>>0]|0|A,o=qP(o|0,l|0,4)|0,l=Be;while(!((o|0)==0&(l|0)==0));return u|0}function X8e(o,l,u){if(o=o|0,l=l|0,u=u|0,!((o|0)==0&(l|0)==0))do u=u+-1|0,s[u>>0]=o&7|48,o=qP(o|0,l|0,3)|0,l=Be;while(!((o|0)==0&(l|0)==0));return u|0}function tE(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;if(l>>>0>0|(l|0)==0&o>>>0>4294967295){for(;A=ZM(o|0,l|0,10,0)|0,u=u+-1|0,s[u>>0]=A&255|48,A=o,o=zM(o|0,l|0,10,0)|0,l>>>0>9|(l|0)==9&A>>>0>4294967295;)l=Be;l=o}else l=o;if(l)for(;u=u+-1|0,s[u>>0]=(l>>>0)%10|0|48,!(l>>>0<10);)l=(l>>>0)/10|0;return u|0}function $8e(o){return o=o|0,oHe(o,n[(sHe()|0)+188>>2]|0)|0}function eHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;m=l&255,A=(u|0)!=0;e:do if(A&(o&3|0)!=0)for(d=l&255;;){if((s[o>>0]|0)==d<<24>>24){B=6;break e}if(o=o+1|0,u=u+-1|0,A=(u|0)!=0,!(A&(o&3|0)!=0)){B=5;break}}else B=5;while(!1);(B|0)==5&&(A?B=6:u=0);e:do if((B|0)==6&&(d=l&255,(s[o>>0]|0)!=d<<24>>24)){A=Me(m,16843009)|0;t:do if(u>>>0>3){for(;m=n[o>>2]^A,!((m&-2139062144^-2139062144)&m+-16843009|0);)if(o=o+4|0,u=u+-4|0,u>>>0<=3){B=11;break t}}else B=11;while(!1);if((B|0)==11&&!u){u=0;break}for(;;){if((s[o>>0]|0)==d<<24>>24)break e;if(o=o+1|0,u=u+-1|0,!u){u=0;break}}}while(!1);return(u|0?o:0)|0}function _s(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0;if(B=I,I=I+256|0,m=B,(u|0)>(A|0)&(d&73728|0)==0){if(d=u-A|0,nE(m|0,l|0,(d>>>0<256?d:256)|0)|0,d>>>0>255){l=u-A|0;do bs(o,m,256),d=d+-256|0;while(d>>>0>255);d=l&255}bs(o,m,d)}I=B}function _Z(o,l){return o=o|0,l=l|0,o?o=nHe(o,l,0)|0:o=0,o|0}function tHe(o,l,u,A,d,m){o=o|0,l=+l,u=u|0,A=A|0,d=d|0,m=m|0;var B=0,k=0,R=0,M=0,L=0,q=0,oe=0,Ye=0,Le=0,Te=0,nt=0,Xe=0,ft=0,He=0,Ve=0,Lt=0,Gr=0,fr=0,$t=0,Rr=0,Hr=0,cr=0,jn=0;jn=I,I=I+560|0,R=jn+8|0,nt=jn,cr=jn+524|0,Hr=cr,M=jn+512|0,n[nt>>2]=0,Rr=M+12|0,HZ(l)|0,(Be|0)<0?(l=-l,fr=1,Gr=5659):(fr=(d&2049|0)!=0&1,Gr=d&2048|0?5662:d&1|0?5665:5660),HZ(l)|0,$t=Be&2146435072;do if($t>>>0<2146435072|($t|0)==2146435072&!1){if(Ye=+rHe(l,nt)*2,B=Ye!=0,B&&(n[nt>>2]=(n[nt>>2]|0)+-1),ft=m|32,(ft|0)==97){Le=m&32,oe=Le|0?Gr+9|0:Gr,q=fr|2,B=12-A|0;do if(A>>>0>11|(B|0)==0)l=Ye;else{l=8;do B=B+-1|0,l=l*16;while(B|0);if((s[oe>>0]|0)==45){l=-(l+(-Ye-l));break}else{l=Ye+l-l;break}}while(!1);k=n[nt>>2]|0,B=(k|0)<0?0-k|0:k,B=tE(B,((B|0)<0)<<31>>31,Rr)|0,(B|0)==(Rr|0)&&(B=M+11|0,s[B>>0]=48),s[B+-1>>0]=(k>>31&2)+43,L=B+-2|0,s[L>>0]=m+15,M=(A|0)<1,R=(d&8|0)==0,B=cr;do $t=~~l,k=B+1|0,s[B>>0]=c[5694+$t>>0]|Le,l=(l-+($t|0))*16,(k-Hr|0)==1&&!(R&(M&l==0))?(s[k>>0]=46,B=B+2|0):B=k;while(l!=0);$t=B-Hr|0,Hr=Rr-L|0,Rr=(A|0)!=0&($t+-2|0)<(A|0)?A+2|0:$t,B=Hr+q+Rr|0,_s(o,32,u,B,d),bs(o,oe,q),_s(o,48,u,B,d^65536),bs(o,cr,$t),_s(o,48,Rr-$t|0,0,0),bs(o,L,Hr),_s(o,32,u,B,d^8192);break}k=(A|0)<0?6:A,B?(B=(n[nt>>2]|0)+-28|0,n[nt>>2]=B,l=Ye*268435456):(l=Ye,B=n[nt>>2]|0),$t=(B|0)<0?R:R+288|0,R=$t;do Ve=~~l>>>0,n[R>>2]=Ve,R=R+4|0,l=(l-+(Ve>>>0))*1e9;while(l!=0);if((B|0)>0)for(M=$t,q=R;;){if(L=(B|0)<29?B:29,B=q+-4|0,B>>>0>=M>>>0){R=0;do He=YZ(n[B>>2]|0,0,L|0)|0,He=JM(He|0,Be|0,R|0,0)|0,Ve=Be,Xe=ZM(He|0,Ve|0,1e9,0)|0,n[B>>2]=Xe,R=zM(He|0,Ve|0,1e9,0)|0,B=B+-4|0;while(B>>>0>=M>>>0);R&&(M=M+-4|0,n[M>>2]=R)}for(R=q;!(R>>>0<=M>>>0);)if(B=R+-4|0,!(n[B>>2]|0))R=B;else break;if(B=(n[nt>>2]|0)-L|0,n[nt>>2]=B,(B|0)>0)q=R;else break}else M=$t;if((B|0)<0){A=((k+25|0)/9|0)+1|0,Te=(ft|0)==102;do{if(Le=0-B|0,Le=(Le|0)<9?Le:9,M>>>0>>0){L=(1<>>Le,oe=0,B=M;do Ve=n[B>>2]|0,n[B>>2]=(Ve>>>Le)+oe,oe=Me(Ve&L,q)|0,B=B+4|0;while(B>>>0>>0);B=n[M>>2]|0?M:M+4|0,oe?(n[R>>2]=oe,M=B,B=R+4|0):(M=B,B=R)}else M=n[M>>2]|0?M:M+4|0,B=R;R=Te?$t:M,R=(B-R>>2|0)>(A|0)?R+(A<<2)|0:B,B=(n[nt>>2]|0)+Le|0,n[nt>>2]=B}while((B|0)<0);B=M,A=R}else B=M,A=R;if(Ve=$t,B>>>0>>0){if(R=(Ve-B>>2)*9|0,L=n[B>>2]|0,L>>>0>=10){M=10;do M=M*10|0,R=R+1|0;while(L>>>0>=M>>>0)}}else R=0;if(Te=(ft|0)==103,Xe=(k|0)!=0,M=k-((ft|0)!=102?R:0)+((Xe&Te)<<31>>31)|0,(M|0)<(((A-Ve>>2)*9|0)+-9|0)){if(M=M+9216|0,Le=$t+4+(((M|0)/9|0)+-1024<<2)|0,M=((M|0)%9|0)+1|0,(M|0)<9){L=10;do L=L*10|0,M=M+1|0;while((M|0)!=9)}else L=10;if(q=n[Le>>2]|0,oe=(q>>>0)%(L>>>0)|0,M=(Le+4|0)==(A|0),M&(oe|0)==0)M=Le;else if(Ye=((q>>>0)/(L>>>0)|0)&1|0?9007199254740994:9007199254740992,He=(L|0)/2|0,l=oe>>>0>>0?.5:M&(oe|0)==(He|0)?1:1.5,fr&&(He=(s[Gr>>0]|0)==45,l=He?-l:l,Ye=He?-Ye:Ye),M=q-oe|0,n[Le>>2]=M,Ye+l!=Ye){if(He=M+L|0,n[Le>>2]=He,He>>>0>999999999)for(R=Le;M=R+-4|0,n[R>>2]=0,M>>>0>>0&&(B=B+-4|0,n[B>>2]=0),He=(n[M>>2]|0)+1|0,n[M>>2]=He,He>>>0>999999999;)R=M;else M=Le;if(R=(Ve-B>>2)*9|0,q=n[B>>2]|0,q>>>0>=10){L=10;do L=L*10|0,R=R+1|0;while(q>>>0>=L>>>0)}}else M=Le;M=M+4|0,M=A>>>0>M>>>0?M:A,He=B}else M=A,He=B;for(ft=M;;){if(ft>>>0<=He>>>0){nt=0;break}if(B=ft+-4|0,!(n[B>>2]|0))ft=B;else{nt=1;break}}A=0-R|0;do if(Te)if(B=((Xe^1)&1)+k|0,(B|0)>(R|0)&(R|0)>-5?(L=m+-1|0,k=B+-1-R|0):(L=m+-2|0,k=B+-1|0),B=d&8,B)Le=B;else{if(nt&&(Lt=n[ft+-4>>2]|0,(Lt|0)!=0))if((Lt>>>0)%10|0)M=0;else{M=0,B=10;do B=B*10|0,M=M+1|0;while(!((Lt>>>0)%(B>>>0)|0|0))}else M=9;if(B=((ft-Ve>>2)*9|0)+-9|0,(L|32|0)==102){Le=B-M|0,Le=(Le|0)>0?Le:0,k=(k|0)<(Le|0)?k:Le,Le=0;break}else{Le=B+R-M|0,Le=(Le|0)>0?Le:0,k=(k|0)<(Le|0)?k:Le,Le=0;break}}else L=m,Le=d&8;while(!1);if(Te=k|Le,q=(Te|0)!=0&1,oe=(L|32|0)==102,oe)Xe=0,B=(R|0)>0?R:0;else{if(B=(R|0)<0?A:R,B=tE(B,((B|0)<0)<<31>>31,Rr)|0,M=Rr,(M-B|0)<2)do B=B+-1|0,s[B>>0]=48;while((M-B|0)<2);s[B+-1>>0]=(R>>31&2)+43,B=B+-2|0,s[B>>0]=L,Xe=B,B=M-B|0}if(B=fr+1+k+q+B|0,_s(o,32,u,B,d),bs(o,Gr,fr),_s(o,48,u,B,d^65536),oe){L=He>>>0>$t>>>0?$t:He,Le=cr+9|0,q=Le,oe=cr+8|0,M=L;do{if(R=tE(n[M>>2]|0,0,Le)|0,(M|0)==(L|0))(R|0)==(Le|0)&&(s[oe>>0]=48,R=oe);else if(R>>>0>cr>>>0){nE(cr|0,48,R-Hr|0)|0;do R=R+-1|0;while(R>>>0>cr>>>0)}bs(o,R,q-R|0),M=M+4|0}while(M>>>0<=$t>>>0);if(Te|0&&bs(o,5710,1),M>>>0>>0&(k|0)>0)for(;;){if(R=tE(n[M>>2]|0,0,Le)|0,R>>>0>cr>>>0){nE(cr|0,48,R-Hr|0)|0;do R=R+-1|0;while(R>>>0>cr>>>0)}if(bs(o,R,(k|0)<9?k:9),M=M+4|0,R=k+-9|0,M>>>0>>0&(k|0)>9)k=R;else{k=R;break}}_s(o,48,k+9|0,9,0)}else{if(Te=nt?ft:He+4|0,(k|0)>-1){nt=cr+9|0,Le=(Le|0)==0,A=nt,q=0-Hr|0,oe=cr+8|0,L=He;do{R=tE(n[L>>2]|0,0,nt)|0,(R|0)==(nt|0)&&(s[oe>>0]=48,R=oe);do if((L|0)==(He|0)){if(M=R+1|0,bs(o,R,1),Le&(k|0)<1){R=M;break}bs(o,5710,1),R=M}else{if(R>>>0<=cr>>>0)break;nE(cr|0,48,R+q|0)|0;do R=R+-1|0;while(R>>>0>cr>>>0)}while(!1);Hr=A-R|0,bs(o,R,(k|0)>(Hr|0)?Hr:k),k=k-Hr|0,L=L+4|0}while(L>>>0>>0&(k|0)>-1)}_s(o,48,k+18|0,18,0),bs(o,Xe,Rr-Xe|0)}_s(o,32,u,B,d^8192)}else cr=(m&32|0)!=0,B=fr+3|0,_s(o,32,u,B,d&-65537),bs(o,Gr,fr),bs(o,l!=l|!1?cr?5686:5690:cr?5678:5682,3),_s(o,32,u,B,d^8192);while(!1);return I=jn,((B|0)<(u|0)?u:B)|0}function HZ(o){o=+o;var l=0;return E[S>>3]=o,l=n[S>>2]|0,Be=n[S+4>>2]|0,l|0}function rHe(o,l){return o=+o,l=l|0,+ +jZ(o,l)}function jZ(o,l){o=+o,l=l|0;var u=0,A=0,d=0;switch(E[S>>3]=o,u=n[S>>2]|0,A=n[S+4>>2]|0,d=qP(u|0,A|0,52)|0,d&2047){case 0:{o!=0?(o=+jZ(o*18446744073709552e3,l),u=(n[l>>2]|0)+-64|0):u=0,n[l>>2]=u;break}case 2047:break;default:n[l>>2]=(d&2047)+-1022,n[S>>2]=u,n[S+4>>2]=A&-2146435073|1071644672,o=+E[S>>3]}return+o}function nHe(o,l,u){o=o|0,l=l|0,u=u|0;do if(o){if(l>>>0<128){s[o>>0]=l,o=1;break}if(!(n[n[(iHe()|0)+188>>2]>>2]|0))if((l&-128|0)==57216){s[o>>0]=l,o=1;break}else{n[(eE()|0)>>2]=84,o=-1;break}if(l>>>0<2048){s[o>>0]=l>>>6|192,s[o+1>>0]=l&63|128,o=2;break}if(l>>>0<55296|(l&-8192|0)==57344){s[o>>0]=l>>>12|224,s[o+1>>0]=l>>>6&63|128,s[o+2>>0]=l&63|128,o=3;break}if((l+-65536|0)>>>0<1048576){s[o>>0]=l>>>18|240,s[o+1>>0]=l>>>12&63|128,s[o+2>>0]=l>>>6&63|128,s[o+3>>0]=l&63|128,o=4;break}else{n[(eE()|0)>>2]=84,o=-1;break}}else o=1;while(!1);return o|0}function iHe(){return VM()|0}function sHe(){return VM()|0}function oHe(o,l){o=o|0,l=l|0;var u=0,A=0;for(A=0;;){if((c[5712+A>>0]|0)==(o|0)){o=2;break}if(u=A+1|0,(u|0)==87){u=5800,A=87,o=5;break}else A=u}if((o|0)==2&&(A?(u=5800,o=5):u=5800),(o|0)==5)for(;;){do o=u,u=u+1|0;while(s[o>>0]|0);if(A=A+-1|0,A)o=5;else break}return aHe(u,n[l+20>>2]|0)|0}function aHe(o,l){return o=o|0,l=l|0,lHe(o,l)|0}function lHe(o,l){return o=o|0,l=l|0,l?l=cHe(n[l>>2]|0,n[l+4>>2]|0,o)|0:l=0,(l|0?l:o)|0}function cHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;oe=(n[o>>2]|0)+1794895138|0,m=ud(n[o+8>>2]|0,oe)|0,A=ud(n[o+12>>2]|0,oe)|0,d=ud(n[o+16>>2]|0,oe)|0;e:do if(m>>>0>>2>>>0&&(q=l-(m<<2)|0,A>>>0>>0&d>>>0>>0)&&!((d|A)&3|0)){for(q=A>>>2,L=d>>>2,M=0;;){if(k=m>>>1,R=M+k|0,B=R<<1,d=B+q|0,A=ud(n[o+(d<<2)>>2]|0,oe)|0,d=ud(n[o+(d+1<<2)>>2]|0,oe)|0,!(d>>>0>>0&A>>>0<(l-d|0)>>>0)){A=0;break e}if(s[o+(d+A)>>0]|0){A=0;break e}if(A=OZ(u,o+d|0)|0,!A)break;if(A=(A|0)<0,(m|0)==1){A=0;break e}else M=A?M:R,m=A?k:m-k|0}A=B+L|0,d=ud(n[o+(A<<2)>>2]|0,oe)|0,A=ud(n[o+(A+1<<2)>>2]|0,oe)|0,A>>>0>>0&d>>>0<(l-A|0)>>>0?A=s[o+(A+d)>>0]|0?0:o+A|0:A=0}else A=0;while(!1);return A|0}function ud(o,l){o=o|0,l=l|0;var u=0;return u=zZ(o|0)|0,(l|0?u:o)|0}function uHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=u+16|0,d=n[A>>2]|0,d?m=5:fHe(u)|0?A=0:(d=n[A>>2]|0,m=5);e:do if((m|0)==5){if(k=u+20|0,B=n[k>>2]|0,A=B,(d-B|0)>>>0>>0){A=VP[n[u+36>>2]&7](u,o,l)|0;break}t:do if((s[u+75>>0]|0)>-1){for(B=l;;){if(!B){m=0,d=o;break t}if(d=B+-1|0,(s[o+d>>0]|0)==10)break;B=d}if(A=VP[n[u+36>>2]&7](u,o,B)|0,A>>>0>>0)break e;m=B,d=o+B|0,l=l-B|0,A=n[k>>2]|0}else m=0,d=o;while(!1);Qr(A|0,d|0,l|0)|0,n[k>>2]=(n[k>>2]|0)+l,A=m+l|0}while(!1);return A|0}function fHe(o){o=o|0;var l=0,u=0;return l=o+74|0,u=s[l>>0]|0,s[l>>0]=u+255|u,l=n[o>>2]|0,l&8?(n[o>>2]=l|32,o=-1):(n[o+8>>2]=0,n[o+4>>2]=0,u=n[o+44>>2]|0,n[o+28>>2]=u,n[o+20>>2]=u,n[o+16>>2]=u+(n[o+48>>2]|0),o=0),o|0}function ri(o,l){o=y(o),l=y(l);var u=0,A=0;u=GZ(o)|0;do if((u&2147483647)>>>0<=2139095040){if(A=GZ(l)|0,(A&2147483647)>>>0<=2139095040)if((A^u|0)<0){o=(u|0)<0?l:o;break}else{o=o>2]=o,n[S>>2]|0|0}function fd(o,l){o=y(o),l=y(l);var u=0,A=0;u=qZ(o)|0;do if((u&2147483647)>>>0<=2139095040){if(A=qZ(l)|0,(A&2147483647)>>>0<=2139095040)if((A^u|0)<0){o=(u|0)<0?o:l;break}else{o=o>2]=o,n[S>>2]|0|0}function KM(o,l){o=y(o),l=y(l);var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0;m=(h[S>>2]=o,n[S>>2]|0),k=(h[S>>2]=l,n[S>>2]|0),u=m>>>23&255,B=k>>>23&255,R=m&-2147483648,d=k<<1;e:do if(d|0&&!((u|0)==255|((AHe(l)|0)&2147483647)>>>0>2139095040)){if(A=m<<1,A>>>0<=d>>>0)return l=y(o*y(0)),y((A|0)==(d|0)?l:o);if(u)A=m&8388607|8388608;else{if(u=m<<9,(u|0)>-1){A=u,u=0;do u=u+-1|0,A=A<<1;while((A|0)>-1)}else u=0;A=m<<1-u}if(B)k=k&8388607|8388608;else{if(m=k<<9,(m|0)>-1){d=0;do d=d+-1|0,m=m<<1;while((m|0)>-1)}else d=0;B=d,k=k<<1-d}d=A-k|0,m=(d|0)>-1;t:do if((u|0)>(B|0)){for(;;){if(m)if(d)A=d;else break;if(A=A<<1,u=u+-1|0,d=A-k|0,m=(d|0)>-1,(u|0)<=(B|0))break t}l=y(o*y(0));break e}while(!1);if(m)if(d)A=d;else{l=y(o*y(0));break}if(A>>>0<8388608)do A=A<<1,u=u+-1|0;while(A>>>0<8388608);(u|0)>0?u=A+-8388608|u<<23:u=A>>>(1-u|0),l=(n[S>>2]=u|R,y(h[S>>2]))}else M=3;while(!1);return(M|0)==3&&(l=y(o*l),l=y(l/l)),y(l)}function AHe(o){return o=y(o),h[S>>2]=o,n[S>>2]|0|0}function pHe(o,l){return o=o|0,l=l|0,LZ(n[582]|0,o,l)|0}function an(o){o=o|0,Nt()}function rE(o){o=o|0}function hHe(o,l){return o=o|0,l=l|0,0}function gHe(o){return o=o|0,(WZ(o+4|0)|0)==-1?(sp[n[(n[o>>2]|0)+8>>2]&127](o),o=1):o=0,o|0}function WZ(o){o=o|0;var l=0;return l=n[o>>2]|0,n[o>>2]=l+-1,l+-1|0}function Hh(o){o=o|0,gHe(o)|0&&dHe(o)}function dHe(o){o=o|0;var l=0;l=o+8|0,n[l>>2]|0&&(WZ(l)|0)!=-1||sp[n[(n[o>>2]|0)+16>>2]&127](o)}function Jt(o){o=o|0;var l=0;for(l=o|0?o:1;o=_P(l)|0,!(o|0);){if(o=yHe()|0,!o){o=0;break}oX[o&0]()}return o|0}function VZ(o){return o=o|0,Jt(o)|0}function It(o){o=o|0,HP(o)}function mHe(o){o=o|0,(s[o+11>>0]|0)<0&&It(n[o>>2]|0)}function yHe(){var o=0;return o=n[2923]|0,n[2923]=o+0,o|0}function EHe(){}function GP(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,A=l-A-(u>>>0>o>>>0|0)>>>0,Be=A,o-u>>>0|0|0}function JM(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,u=o+u>>>0,Be=l+A+(u>>>0>>0|0)>>>0,u|0|0}function nE(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;if(m=o+u|0,l=l&255,(u|0)>=67){for(;o&3;)s[o>>0]=l,o=o+1|0;for(A=m&-4|0,d=A-64|0,B=l|l<<8|l<<16|l<<24;(o|0)<=(d|0);)n[o>>2]=B,n[o+4>>2]=B,n[o+8>>2]=B,n[o+12>>2]=B,n[o+16>>2]=B,n[o+20>>2]=B,n[o+24>>2]=B,n[o+28>>2]=B,n[o+32>>2]=B,n[o+36>>2]=B,n[o+40>>2]=B,n[o+44>>2]=B,n[o+48>>2]=B,n[o+52>>2]=B,n[o+56>>2]=B,n[o+60>>2]=B,o=o+64|0;for(;(o|0)<(A|0);)n[o>>2]=B,o=o+4|0}for(;(o|0)<(m|0);)s[o>>0]=l,o=o+1|0;return m-u|0}function YZ(o,l,u){return o=o|0,l=l|0,u=u|0,(u|0)<32?(Be=l<>>32-u,o<>>u,o>>>u|(l&(1<>>u-32|0)}function Qr(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;if((u|0)>=8192)return LA(o|0,l|0,u|0)|0;if(m=o|0,d=o+u|0,(o&3)==(l&3)){for(;o&3;){if(!u)return m|0;s[o>>0]=s[l>>0]|0,o=o+1|0,l=l+1|0,u=u-1|0}for(u=d&-4|0,A=u-64|0;(o|0)<=(A|0);)n[o>>2]=n[l>>2],n[o+4>>2]=n[l+4>>2],n[o+8>>2]=n[l+8>>2],n[o+12>>2]=n[l+12>>2],n[o+16>>2]=n[l+16>>2],n[o+20>>2]=n[l+20>>2],n[o+24>>2]=n[l+24>>2],n[o+28>>2]=n[l+28>>2],n[o+32>>2]=n[l+32>>2],n[o+36>>2]=n[l+36>>2],n[o+40>>2]=n[l+40>>2],n[o+44>>2]=n[l+44>>2],n[o+48>>2]=n[l+48>>2],n[o+52>>2]=n[l+52>>2],n[o+56>>2]=n[l+56>>2],n[o+60>>2]=n[l+60>>2],o=o+64|0,l=l+64|0;for(;(o|0)<(u|0);)n[o>>2]=n[l>>2],o=o+4|0,l=l+4|0}else for(u=d-4|0;(o|0)<(u|0);)s[o>>0]=s[l>>0]|0,s[o+1>>0]=s[l+1>>0]|0,s[o+2>>0]=s[l+2>>0]|0,s[o+3>>0]=s[l+3>>0]|0,o=o+4|0,l=l+4|0;for(;(o|0)<(d|0);)s[o>>0]=s[l>>0]|0,o=o+1|0,l=l+1|0;return m|0}function KZ(o){o=o|0;var l=0;return l=s[O+(o&255)>>0]|0,(l|0)<8?l|0:(l=s[O+(o>>8&255)>>0]|0,(l|0)<8?l+8|0:(l=s[O+(o>>16&255)>>0]|0,(l|0)<8?l+16|0:(s[O+(o>>>24)>>0]|0)+24|0))}function JZ(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0,Ye=0,Le=0;if(L=o,R=l,M=R,B=u,oe=A,k=oe,!M)return m=(d|0)!=0,k?m?(n[d>>2]=o|0,n[d+4>>2]=l&0,oe=0,d=0,Be=oe,d|0):(oe=0,d=0,Be=oe,d|0):(m&&(n[d>>2]=(L>>>0)%(B>>>0),n[d+4>>2]=0),oe=0,d=(L>>>0)/(B>>>0)>>>0,Be=oe,d|0);m=(k|0)==0;do if(B){if(!m){if(m=(b(k|0)|0)-(b(M|0)|0)|0,m>>>0<=31){q=m+1|0,k=31-m|0,l=m-31>>31,B=q,o=L>>>(q>>>0)&l|M<>>(q>>>0)&l,m=0,k=L<>2]=o|0,n[d+4>>2]=R|l&0,oe=0,d=0,Be=oe,d|0):(oe=0,d=0,Be=oe,d|0)}if(m=B-1|0,m&B|0){k=(b(B|0)|0)+33-(b(M|0)|0)|0,Le=64-k|0,q=32-k|0,R=q>>31,Ye=k-32|0,l=Ye>>31,B=k,o=q-1>>31&M>>>(Ye>>>0)|(M<>>(k>>>0))&l,l=l&M>>>(k>>>0),m=L<>>(Ye>>>0))&R|L<>31;break}return d|0&&(n[d>>2]=m&L,n[d+4>>2]=0),(B|0)==1?(Ye=R|l&0,Le=o|0|0,Be=Ye,Le|0):(Le=KZ(B|0)|0,Ye=M>>>(Le>>>0)|0,Le=M<<32-Le|L>>>(Le>>>0)|0,Be=Ye,Le|0)}else{if(m)return d|0&&(n[d>>2]=(M>>>0)%(B>>>0),n[d+4>>2]=0),Ye=0,Le=(M>>>0)/(B>>>0)>>>0,Be=Ye,Le|0;if(!L)return d|0&&(n[d>>2]=0,n[d+4>>2]=(M>>>0)%(k>>>0)),Ye=0,Le=(M>>>0)/(k>>>0)>>>0,Be=Ye,Le|0;if(m=k-1|0,!(m&k))return d|0&&(n[d>>2]=o|0,n[d+4>>2]=m&M|l&0),Ye=0,Le=M>>>((KZ(k|0)|0)>>>0),Be=Ye,Le|0;if(m=(b(k|0)|0)-(b(M|0)|0)|0,m>>>0<=30){l=m+1|0,k=31-m|0,B=l,o=M<>>(l>>>0),l=M>>>(l>>>0),m=0,k=L<>2]=o|0,n[d+4>>2]=R|l&0,Ye=0,Le=0,Be=Ye,Le|0):(Ye=0,Le=0,Be=Ye,Le|0)}while(!1);if(!B)M=k,R=0,k=0;else{q=u|0|0,L=oe|A&0,M=JM(q|0,L|0,-1,-1)|0,u=Be,R=k,k=0;do A=R,R=m>>>31|R<<1,m=k|m<<1,A=o<<1|A>>>31|0,oe=o>>>31|l<<1|0,GP(M|0,u|0,A|0,oe|0)|0,Le=Be,Ye=Le>>31|((Le|0)<0?-1:0)<<1,k=Ye&1,o=GP(A|0,oe|0,Ye&q|0,(((Le|0)<0?-1:0)>>31|((Le|0)<0?-1:0)<<1)&L|0)|0,l=Be,B=B-1|0;while(B|0);M=R,R=0}return B=0,d|0&&(n[d>>2]=o,n[d+4>>2]=l),Ye=(m|0)>>>31|(M|B)<<1|(B<<1|m>>>31)&0|R,Le=(m<<1|0)&-2|k,Be=Ye,Le|0}function zM(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,JZ(o,l,u,A,0)|0}function jh(o){o=o|0;var l=0,u=0;return u=o+15&-16|0,l=n[C>>2]|0,o=l+u|0,(u|0)>0&(o|0)<(l|0)|(o|0)<0?(se()|0,cu(12),-1):(n[C>>2]=o,(o|0)>($()|0)&&!(Z()|0)?(n[C>>2]=l,cu(12),-1):l|0)}function BB(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;if((l|0)<(o|0)&(o|0)<(l+u|0)){for(A=o,l=l+u|0,o=o+u|0;(u|0)>0;)o=o-1|0,l=l-1|0,u=u-1|0,s[o>>0]=s[l>>0]|0;o=A}else Qr(o,l,u)|0;return o|0}function ZM(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;return m=I,I=I+16|0,d=m|0,JZ(o,l,u,A,d)|0,I=m,Be=n[d+4>>2]|0,n[d>>2]|0|0}function zZ(o){return o=o|0,(o&255)<<24|(o>>8&255)<<16|(o>>16&255)<<8|o>>>24|0}function IHe(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,ZZ[o&1](l|0,u|0,A|0,d|0,m|0)}function CHe(o,l,u){o=o|0,l=l|0,u=y(u),XZ[o&1](l|0,y(u))}function wHe(o,l,u){o=o|0,l=l|0,u=+u,$Z[o&31](l|0,+u)}function BHe(o,l,u,A){return o=o|0,l=l|0,u=y(u),A=y(A),y(eX[o&0](l|0,y(u),y(A)))}function vHe(o,l){o=o|0,l=l|0,sp[o&127](l|0)}function SHe(o,l,u){o=o|0,l=l|0,u=u|0,op[o&31](l|0,u|0)}function DHe(o,l){return o=o|0,l=l|0,pd[o&31](l|0)|0}function bHe(o,l,u,A,d){o=o|0,l=l|0,u=+u,A=+A,d=d|0,tX[o&1](l|0,+u,+A,d|0)}function PHe(o,l,u,A){o=o|0,l=l|0,u=+u,A=+A,lje[o&1](l|0,+u,+A)}function xHe(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,VP[o&7](l|0,u|0,A|0)|0}function kHe(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,+cje[o&1](l|0,u|0,A|0)}function QHe(o,l){return o=o|0,l=l|0,+rX[o&15](l|0)}function RHe(o,l,u){return o=o|0,l=l|0,u=+u,uje[o&1](l|0,+u)|0}function THe(o,l,u){return o=o|0,l=l|0,u=u|0,$M[o&15](l|0,u|0)|0}function FHe(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=+A,d=+d,m=m|0,fje[o&1](l|0,u|0,+A,+d,m|0)}function NHe(o,l,u,A,d,m,B){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,B=B|0,Aje[o&1](l|0,u|0,A|0,d|0,m|0,B|0)}function OHe(o,l,u){return o=o|0,l=l|0,u=u|0,+nX[o&7](l|0,u|0)}function LHe(o){return o=o|0,YP[o&7]()|0}function MHe(o,l,u,A,d,m){return o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,iX[o&1](l|0,u|0,A|0,d|0,m|0)|0}function UHe(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=+d,pje[o&1](l|0,u|0,A|0,+d)}function _He(o,l,u,A,d,m,B){o=o|0,l=l|0,u=u|0,A=y(A),d=d|0,m=y(m),B=B|0,sX[o&1](l|0,u|0,y(A),d|0,y(m),B|0)}function HHe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,DB[o&15](l|0,u|0,A|0)}function jHe(o){o=o|0,oX[o&0]()}function GHe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=+A,aX[o&15](l|0,u|0,+A)}function qHe(o,l,u){return o=o|0,l=+l,u=+u,hje[o&1](+l,+u)|0}function WHe(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,eU[o&15](l|0,u|0,A|0,d|0)}function VHe(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,F(0)}function YHe(o,l){o=o|0,l=y(l),F(1)}function nl(o,l){o=o|0,l=+l,F(2)}function KHe(o,l,u){return o=o|0,l=y(l),u=y(u),F(3),$e}function wr(o){o=o|0,F(4)}function vB(o,l){o=o|0,l=l|0,F(5)}function jl(o){return o=o|0,F(6),0}function JHe(o,l,u,A){o=o|0,l=+l,u=+u,A=A|0,F(7)}function zHe(o,l,u){o=o|0,l=+l,u=+u,F(8)}function ZHe(o,l,u){return o=o|0,l=l|0,u=u|0,F(9),0}function XHe(o,l,u){return o=o|0,l=l|0,u=u|0,F(10),0}function Ad(o){return o=o|0,F(11),0}function $He(o,l){return o=o|0,l=+l,F(12),0}function SB(o,l){return o=o|0,l=l|0,F(13),0}function eje(o,l,u,A,d){o=o|0,l=l|0,u=+u,A=+A,d=d|0,F(14)}function tje(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,F(15)}function XM(o,l){return o=o|0,l=l|0,F(16),0}function rje(){return F(17),0}function nje(o,l,u,A,d){return o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,F(18),0}function ije(o,l,u,A){o=o|0,l=l|0,u=u|0,A=+A,F(19)}function sje(o,l,u,A,d,m){o=o|0,l=l|0,u=y(u),A=A|0,d=y(d),m=m|0,F(20)}function WP(o,l,u){o=o|0,l=l|0,u=u|0,F(21)}function oje(){F(22)}function iE(o,l,u){o=o|0,l=l|0,u=+u,F(23)}function aje(o,l){return o=+o,l=+l,F(24),0}function sE(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,F(25)}var ZZ=[VHe,n_e],XZ=[YHe,Ny],$Z=[nl,zg,Rh,oB,aB,lB,cB,xf,Gy,uB,kf,Zg,Xg,fB,AB,Iu,$g,pB,qy,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl],eX=[KHe],sp=[wr,rE,LPe,MPe,UPe,hRe,gRe,dRe,RMe,TMe,FMe,qUe,WUe,VUe,A8e,p8e,h8e,xl,Jg,rB,sr,gc,xP,kP,bPe,YPe,sxe,Bxe,Uxe,rke,Eke,Fke,Jke,fQe,bQe,GQe,sRe,TRe,JRe,fTe,bTe,GTe,sFe,vFe,UFe,$Fe,gNe,dP,VNe,lOe,bOe,WOe,oLe,bLe,LLe,_Le,nMe,oMe,BMe,OMe,UMe,rUe,IUe,LJ,t4e,R4e,Y4e,l3e,k3e,W3e,r8e,s8e,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr],op=[vB,_y,QL,nB,iB,xr,fo,Zi,Ms,Ss,jy,Qh,gB,CP,rd,FL,NL,wP,BP,ML,Qf,ne,PFe,jFe,JOe,i4e,PUe,CZ,vB,vB,vB,vB],pd=[jl,G8e,My,td,Vy,Ea,mP,Th,hB,TL,EP,Yy,vP,UL,zy,yNe,uLe,sUe,l4e,Ul,jl,jl,jl,jl,jl,jl,jl,jl,jl,jl,jl,jl],tX=[JHe,WL],lje=[zHe,DMe],VP=[ZHe,NZ,q8e,Y8e,oke,LRe,zNe,A3e],cje=[XHe,QQe],rX=[Ad,Fh,IP,ep,VL,v,D,Q,H,V,Ad,Ad,Ad,Ad,Ad,Ad],uje=[$He,FLe],$M=[SB,hHe,SP,QPe,bxe,wke,Lke,cRe,$Re,nNe,Oy,Z4e,SB,SB,SB,SB],fje=[eje,cxe],Aje=[tje,F3e],nX=[XM,OL,ve,_e,ht,YQe,XM,XM],YP=[rje,Wt,Ly,gP,qLe,uMe,GMe,c8e],iX=[nje,Py],pje=[ije,QTe],sX=[sje,_L],DB=[WP,No,yP,LL,wu,Gxe,Xke,YTe,cFe,kL,D_e,O4e,J3e,WP,WP,WP],oX=[oje],aX=[iE,RL,Hy,$A,sB,Cu,Wy,ed,gTe,AOe,kLe,iE,iE,iE,iE,iE],hje=[aje,kMe],eU=[sE,gQe,DNe,QOe,ELe,zLe,dMe,zMe,SUe,h4e,I8e,sE,sE,sE,sE,sE];return{_llvm_bswap_i32:zZ,dynCall_idd:qHe,dynCall_i:LHe,_i64Subtract:GP,___udivdi3:zM,dynCall_vif:CHe,setThrew:pa,dynCall_viii:HHe,_bitshift64Lshr:qP,_bitshift64Shl:YZ,dynCall_vi:vHe,dynCall_viiddi:FHe,dynCall_diii:kHe,dynCall_iii:THe,_memset:nE,_sbrk:jh,_memcpy:Qr,__GLOBAL__sub_I_Yoga_cpp:$1,dynCall_vii:SHe,___uremdi3:ZM,dynCall_vid:wHe,stackAlloc:Va,_nbind_init:Q8e,getTempRet0:UA,dynCall_di:QHe,dynCall_iid:RHe,setTempRet0:MA,_i64Add:JM,dynCall_fiff:BHe,dynCall_iiii:xHe,_emscripten_get_global_libc:j8e,dynCall_viid:GHe,dynCall_viiid:UHe,dynCall_viififi:_He,dynCall_ii:DHe,__GLOBAL__sub_I_Binding_cc:Y_e,dynCall_viiii:WHe,dynCall_iiiiii:MHe,stackSave:df,dynCall_viiiii:IHe,__GLOBAL__sub_I_nbind_cc:Sr,dynCall_vidd:PHe,_free:HP,runPostSets:EHe,dynCall_viiiiii:NHe,establishStackSpace:vn,_memmove:BB,stackRestore:cc,_malloc:_P,__GLOBAL__sub_I_common_cc:pUe,dynCall_viddi:bHe,dynCall_dii:OHe,dynCall_v:jHe}}(Module.asmGlobalArg,Module.asmLibraryArg,buffer),_llvm_bswap_i32=Module._llvm_bswap_i32=asm._llvm_bswap_i32,getTempRet0=Module.getTempRet0=asm.getTempRet0,___udivdi3=Module.___udivdi3=asm.___udivdi3,setThrew=Module.setThrew=asm.setThrew,_bitshift64Lshr=Module._bitshift64Lshr=asm._bitshift64Lshr,_bitshift64Shl=Module._bitshift64Shl=asm._bitshift64Shl,_memset=Module._memset=asm._memset,_sbrk=Module._sbrk=asm._sbrk,_memcpy=Module._memcpy=asm._memcpy,stackAlloc=Module.stackAlloc=asm.stackAlloc,___uremdi3=Module.___uremdi3=asm.___uremdi3,_nbind_init=Module._nbind_init=asm._nbind_init,_i64Subtract=Module._i64Subtract=asm._i64Subtract,setTempRet0=Module.setTempRet0=asm.setTempRet0,_i64Add=Module._i64Add=asm._i64Add,_emscripten_get_global_libc=Module._emscripten_get_global_libc=asm._emscripten_get_global_libc,__GLOBAL__sub_I_Yoga_cpp=Module.__GLOBAL__sub_I_Yoga_cpp=asm.__GLOBAL__sub_I_Yoga_cpp,__GLOBAL__sub_I_Binding_cc=Module.__GLOBAL__sub_I_Binding_cc=asm.__GLOBAL__sub_I_Binding_cc,stackSave=Module.stackSave=asm.stackSave,__GLOBAL__sub_I_nbind_cc=Module.__GLOBAL__sub_I_nbind_cc=asm.__GLOBAL__sub_I_nbind_cc,_free=Module._free=asm._free,runPostSets=Module.runPostSets=asm.runPostSets,establishStackSpace=Module.establishStackSpace=asm.establishStackSpace,_memmove=Module._memmove=asm._memmove,stackRestore=Module.stackRestore=asm.stackRestore,_malloc=Module._malloc=asm._malloc,__GLOBAL__sub_I_common_cc=Module.__GLOBAL__sub_I_common_cc=asm.__GLOBAL__sub_I_common_cc,dynCall_viiiii=Module.dynCall_viiiii=asm.dynCall_viiiii,dynCall_vif=Module.dynCall_vif=asm.dynCall_vif,dynCall_vid=Module.dynCall_vid=asm.dynCall_vid,dynCall_fiff=Module.dynCall_fiff=asm.dynCall_fiff,dynCall_vi=Module.dynCall_vi=asm.dynCall_vi,dynCall_vii=Module.dynCall_vii=asm.dynCall_vii,dynCall_ii=Module.dynCall_ii=asm.dynCall_ii,dynCall_viddi=Module.dynCall_viddi=asm.dynCall_viddi,dynCall_vidd=Module.dynCall_vidd=asm.dynCall_vidd,dynCall_iiii=Module.dynCall_iiii=asm.dynCall_iiii,dynCall_diii=Module.dynCall_diii=asm.dynCall_diii,dynCall_di=Module.dynCall_di=asm.dynCall_di,dynCall_iid=Module.dynCall_iid=asm.dynCall_iid,dynCall_iii=Module.dynCall_iii=asm.dynCall_iii,dynCall_viiddi=Module.dynCall_viiddi=asm.dynCall_viiddi,dynCall_viiiiii=Module.dynCall_viiiiii=asm.dynCall_viiiiii,dynCall_dii=Module.dynCall_dii=asm.dynCall_dii,dynCall_i=Module.dynCall_i=asm.dynCall_i,dynCall_iiiiii=Module.dynCall_iiiiii=asm.dynCall_iiiiii,dynCall_viiid=Module.dynCall_viiid=asm.dynCall_viiid,dynCall_viififi=Module.dynCall_viififi=asm.dynCall_viififi,dynCall_viii=Module.dynCall_viii=asm.dynCall_viii,dynCall_v=Module.dynCall_v=asm.dynCall_v,dynCall_viid=Module.dynCall_viid=asm.dynCall_viid,dynCall_idd=Module.dynCall_idd=asm.dynCall_idd,dynCall_viiii=Module.dynCall_viiii=asm.dynCall_viiii;Runtime.stackAlloc=Module.stackAlloc,Runtime.stackSave=Module.stackSave,Runtime.stackRestore=Module.stackRestore,Runtime.establishStackSpace=Module.establishStackSpace,Runtime.setTempRet0=Module.setTempRet0,Runtime.getTempRet0=Module.getTempRet0,Module.asm=asm;function ExitStatus(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}ExitStatus.prototype=new Error,ExitStatus.prototype.constructor=ExitStatus;var initialStackTop,preloadStartTime=null,calledMain=!1;dependenciesFulfilled=function e(){Module.calledRun||run(),Module.calledRun||(dependenciesFulfilled=e)},Module.callMain=Module.callMain=function e(t){t=t||[],ensureInitRuntime();var r=t.length+1;function s(){for(var p=0;p<3;p++)a.push(0)}var a=[allocate(intArrayFromString(Module.thisProgram),"i8",ALLOC_NORMAL)];s();for(var n=0;n0||(preRun(),runDependencies>0)||Module.calledRun)return;function t(){Module.calledRun||(Module.calledRun=!0,!ABORT&&(ensureInitRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),Module._main&&shouldRunNow&&Module.callMain(e),postRun()))}Module.setStatus?(Module.setStatus("Running..."),setTimeout(function(){setTimeout(function(){Module.setStatus("")},1),t()},1)):t()}Module.run=Module.run=run;function exit(e,t){t&&Module.noExitRuntime||(Module.noExitRuntime||(ABORT=!0,EXITSTATUS=e,STACKTOP=initialStackTop,exitRuntime(),Module.onExit&&Module.onExit(e)),ENVIRONMENT_IS_NODE&&process.exit(e),Module.quit(e,new ExitStatus(e)))}Module.exit=Module.exit=exit;var abortDecorators=[];function abort(e){Module.onAbort&&Module.onAbort(e),e!==void 0?(Module.print(e),Module.printErr(e),e=JSON.stringify(e)):e="",ABORT=!0,EXITSTATUS=1;var t=` -If this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.`,r="abort("+e+") at "+stackTrace()+t;throw abortDecorators&&abortDecorators.forEach(function(s){r=s(r,e)}),r}if(Module.abort=Module.abort=abort,Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();var shouldRunNow=!0;Module.noInitialRun&&(shouldRunNow=!1),run()})});var Lm=G((RYt,IIe)=>{"use strict";var Hut=yIe(),jut=EIe(),A9=!1,p9=null;jut({},function(e,t){if(!A9){if(A9=!0,e)throw e;p9=t}});if(!A9)throw new Error("Failed to load the yoga module - it needed to be loaded synchronously, but didn't");IIe.exports=Hut(p9.bind,p9.lib)});var g9=G((TYt,h9)=>{"use strict";var CIe=e=>Number.isNaN(e)?!1:e>=4352&&(e<=4447||e===9001||e===9002||11904<=e&&e<=12871&&e!==12351||12880<=e&&e<=19903||19968<=e&&e<=42182||43360<=e&&e<=43388||44032<=e&&e<=55203||63744<=e&&e<=64255||65040<=e&&e<=65049||65072<=e&&e<=65131||65281<=e&&e<=65376||65504<=e&&e<=65510||110592<=e&&e<=110593||127488<=e&&e<=127569||131072<=e&&e<=262141);h9.exports=CIe;h9.exports.default=CIe});var BIe=G((FYt,wIe)=>{"use strict";wIe.exports=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g}});var GS=G((NYt,d9)=>{"use strict";var Gut=gk(),qut=g9(),Wut=BIe(),vIe=e=>{if(typeof e!="string"||e.length===0||(e=Gut(e),e.length===0))return 0;e=e.replace(Wut()," ");let t=0;for(let r=0;r=127&&s<=159||s>=768&&s<=879||(s>65535&&r++,t+=qut(s)?2:1)}return t};d9.exports=vIe;d9.exports.default=vIe});var y9=G((OYt,m9)=>{"use strict";var Vut=GS(),SIe=e=>{let t=0;for(let r of e.split(` -`))t=Math.max(t,Vut(r));return t};m9.exports=SIe;m9.exports.default=SIe});var DIe=G(qS=>{"use strict";var Yut=qS&&qS.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(qS,"__esModule",{value:!0});var Kut=Yut(y9()),E9={};qS.default=e=>{if(e.length===0)return{width:0,height:0};if(E9[e])return E9[e];let t=Kut.default(e),r=e.split(` -`).length;return E9[e]={width:t,height:r},{width:t,height:r}}});var bIe=G(WS=>{"use strict";var Jut=WS&&WS.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(WS,"__esModule",{value:!0});var xn=Jut(Lm()),zut=(e,t)=>{"position"in t&&e.setPositionType(t.position==="absolute"?xn.default.POSITION_TYPE_ABSOLUTE:xn.default.POSITION_TYPE_RELATIVE)},Zut=(e,t)=>{"marginLeft"in t&&e.setMargin(xn.default.EDGE_START,t.marginLeft||0),"marginRight"in t&&e.setMargin(xn.default.EDGE_END,t.marginRight||0),"marginTop"in t&&e.setMargin(xn.default.EDGE_TOP,t.marginTop||0),"marginBottom"in t&&e.setMargin(xn.default.EDGE_BOTTOM,t.marginBottom||0)},Xut=(e,t)=>{"paddingLeft"in t&&e.setPadding(xn.default.EDGE_LEFT,t.paddingLeft||0),"paddingRight"in t&&e.setPadding(xn.default.EDGE_RIGHT,t.paddingRight||0),"paddingTop"in t&&e.setPadding(xn.default.EDGE_TOP,t.paddingTop||0),"paddingBottom"in t&&e.setPadding(xn.default.EDGE_BOTTOM,t.paddingBottom||0)},$ut=(e,t)=>{var r;"flexGrow"in t&&e.setFlexGrow((r=t.flexGrow)!==null&&r!==void 0?r:0),"flexShrink"in t&&e.setFlexShrink(typeof t.flexShrink=="number"?t.flexShrink:1),"flexDirection"in t&&(t.flexDirection==="row"&&e.setFlexDirection(xn.default.FLEX_DIRECTION_ROW),t.flexDirection==="row-reverse"&&e.setFlexDirection(xn.default.FLEX_DIRECTION_ROW_REVERSE),t.flexDirection==="column"&&e.setFlexDirection(xn.default.FLEX_DIRECTION_COLUMN),t.flexDirection==="column-reverse"&&e.setFlexDirection(xn.default.FLEX_DIRECTION_COLUMN_REVERSE)),"flexBasis"in t&&(typeof t.flexBasis=="number"?e.setFlexBasis(t.flexBasis):typeof t.flexBasis=="string"?e.setFlexBasisPercent(Number.parseInt(t.flexBasis,10)):e.setFlexBasis(NaN)),"alignItems"in t&&((t.alignItems==="stretch"||!t.alignItems)&&e.setAlignItems(xn.default.ALIGN_STRETCH),t.alignItems==="flex-start"&&e.setAlignItems(xn.default.ALIGN_FLEX_START),t.alignItems==="center"&&e.setAlignItems(xn.default.ALIGN_CENTER),t.alignItems==="flex-end"&&e.setAlignItems(xn.default.ALIGN_FLEX_END)),"alignSelf"in t&&((t.alignSelf==="auto"||!t.alignSelf)&&e.setAlignSelf(xn.default.ALIGN_AUTO),t.alignSelf==="flex-start"&&e.setAlignSelf(xn.default.ALIGN_FLEX_START),t.alignSelf==="center"&&e.setAlignSelf(xn.default.ALIGN_CENTER),t.alignSelf==="flex-end"&&e.setAlignSelf(xn.default.ALIGN_FLEX_END)),"justifyContent"in t&&((t.justifyContent==="flex-start"||!t.justifyContent)&&e.setJustifyContent(xn.default.JUSTIFY_FLEX_START),t.justifyContent==="center"&&e.setJustifyContent(xn.default.JUSTIFY_CENTER),t.justifyContent==="flex-end"&&e.setJustifyContent(xn.default.JUSTIFY_FLEX_END),t.justifyContent==="space-between"&&e.setJustifyContent(xn.default.JUSTIFY_SPACE_BETWEEN),t.justifyContent==="space-around"&&e.setJustifyContent(xn.default.JUSTIFY_SPACE_AROUND))},eft=(e,t)=>{var r,s;"width"in t&&(typeof t.width=="number"?e.setWidth(t.width):typeof t.width=="string"?e.setWidthPercent(Number.parseInt(t.width,10)):e.setWidthAuto()),"height"in t&&(typeof t.height=="number"?e.setHeight(t.height):typeof t.height=="string"?e.setHeightPercent(Number.parseInt(t.height,10)):e.setHeightAuto()),"minWidth"in t&&(typeof t.minWidth=="string"?e.setMinWidthPercent(Number.parseInt(t.minWidth,10)):e.setMinWidth((r=t.minWidth)!==null&&r!==void 0?r:0)),"minHeight"in t&&(typeof t.minHeight=="string"?e.setMinHeightPercent(Number.parseInt(t.minHeight,10)):e.setMinHeight((s=t.minHeight)!==null&&s!==void 0?s:0))},tft=(e,t)=>{"display"in t&&e.setDisplay(t.display==="flex"?xn.default.DISPLAY_FLEX:xn.default.DISPLAY_NONE)},rft=(e,t)=>{if("borderStyle"in t){let r=typeof t.borderStyle=="string"?1:0;e.setBorder(xn.default.EDGE_TOP,r),e.setBorder(xn.default.EDGE_BOTTOM,r),e.setBorder(xn.default.EDGE_LEFT,r),e.setBorder(xn.default.EDGE_RIGHT,r)}};WS.default=(e,t={})=>{zut(e,t),Zut(e,t),Xut(e,t),$ut(e,t),eft(e,t),tft(e,t),rft(e,t)}});var kIe=G((UYt,xIe)=>{"use strict";var VS=GS(),nft=gk(),ift=ik(),C9=new Set(["\x1B","\x9B"]),sft=39,PIe=e=>`${C9.values().next().value}[${e}m`,oft=e=>e.split(" ").map(t=>VS(t)),I9=(e,t,r)=>{let s=[...t],a=!1,n=VS(nft(e[e.length-1]));for(let[c,f]of s.entries()){let p=VS(f);if(n+p<=r?e[e.length-1]+=f:(e.push(f),n=0),C9.has(f))a=!0;else if(a&&f==="m"){a=!1;continue}a||(n+=p,n===r&&c0&&e.length>1&&(e[e.length-2]+=e.pop())},aft=e=>{let t=e.split(" "),r=t.length;for(;r>0&&!(VS(t[r-1])>0);)r--;return r===t.length?e:t.slice(0,r).join(" ")+t.slice(r).join("")},lft=(e,t,r={})=>{if(r.trim!==!1&&e.trim()==="")return"";let s="",a="",n,c=oft(e),f=[""];for(let[p,h]of e.split(" ").entries()){r.trim!==!1&&(f[f.length-1]=f[f.length-1].trimLeft());let E=VS(f[f.length-1]);if(p!==0&&(E>=t&&(r.wordWrap===!1||r.trim===!1)&&(f.push(""),E=0),(E>0||r.trim===!1)&&(f[f.length-1]+=" ",E++)),r.hard&&c[p]>t){let C=t-E,S=1+Math.floor((c[p]-C-1)/t);Math.floor((c[p]-1)/t)t&&E>0&&c[p]>0){if(r.wordWrap===!1&&Et&&r.wordWrap===!1){I9(f,h,t);continue}f[f.length-1]+=h}r.trim!==!1&&(f=f.map(aft)),s=f.join(` -`);for(let[p,h]of[...s].entries()){if(a+=h,C9.has(h)){let C=parseFloat(/\d[^m]*/.exec(s.slice(p,p+4)));n=C===sft?null:C}let E=ift.codes.get(Number(n));n&&E&&(s[p+1]===` -`?a+=PIe(E):h===` -`&&(a+=PIe(n)))}return a};xIe.exports=(e,t,r)=>String(e).normalize().replace(/\r\n/g,` -`).split(` -`).map(s=>lft(s,t,r)).join(` -`)});var TIe=G((_Yt,RIe)=>{"use strict";var QIe="[\uD800-\uDBFF][\uDC00-\uDFFF]",cft=e=>e&&e.exact?new RegExp(`^${QIe}$`):new RegExp(QIe,"g");RIe.exports=cft});var w9=G((HYt,LIe)=>{"use strict";var uft=g9(),fft=TIe(),FIe=ik(),OIe=["\x1B","\x9B"],EF=e=>`${OIe[0]}[${e}m`,NIe=(e,t,r)=>{let s=[];e=[...e];for(let a of e){let n=a;a.match(";")&&(a=a.split(";")[0][0]+"0");let c=FIe.codes.get(parseInt(a,10));if(c){let f=e.indexOf(c.toString());f>=0?e.splice(f,1):s.push(EF(t?c:n))}else if(t){s.push(EF(0));break}else s.push(EF(n))}if(t&&(s=s.filter((a,n)=>s.indexOf(a)===n),r!==void 0)){let a=EF(FIe.codes.get(parseInt(r,10)));s=s.reduce((n,c)=>c===a?[c,...n]:[...n,c],[])}return s.join("")};LIe.exports=(e,t,r)=>{let s=[...e.normalize()],a=[];r=typeof r=="number"?r:s.length;let n=!1,c,f=0,p="";for(let[h,E]of s.entries()){let C=!1;if(OIe.includes(E)){let S=/\d[^m]*/.exec(e.slice(h,h+18));c=S&&S.length>0?S[0]:void 0,ft&&f<=r)p+=E;else if(f===t&&!n&&c!==void 0)p=NIe(a);else if(f>=r){p+=NIe(a,!0,c);break}}return p}});var UIe=G((jYt,MIe)=>{"use strict";var Z0=w9(),Aft=GS();function IF(e,t,r){if(e.charAt(t)===" ")return t;for(let s=1;s<=3;s++)if(r){if(e.charAt(t+s)===" ")return t+s}else if(e.charAt(t-s)===" ")return t-s;return t}MIe.exports=(e,t,r)=>{r={position:"end",preferTruncationOnSpace:!1,...r};let{position:s,space:a,preferTruncationOnSpace:n}=r,c="\u2026",f=1;if(typeof e!="string")throw new TypeError(`Expected \`input\` to be a string, got ${typeof e}`);if(typeof t!="number")throw new TypeError(`Expected \`columns\` to be a number, got ${typeof t}`);if(t<1)return"";if(t===1)return c;let p=Aft(e);if(p<=t)return e;if(s==="start"){if(n){let h=IF(e,p-t+1,!0);return c+Z0(e,h,p).trim()}return a===!0&&(c+=" ",f=2),c+Z0(e,p-t+f,p)}if(s==="middle"){a===!0&&(c=" "+c+" ",f=3);let h=Math.floor(t/2);if(n){let E=IF(e,h),C=IF(e,p-(t-h)+1,!0);return Z0(e,0,E)+c+Z0(e,C,p).trim()}return Z0(e,0,h)+c+Z0(e,p-(t-h)+f,p)}if(s==="end"){if(n){let h=IF(e,t-1);return Z0(e,0,h)+c}return a===!0&&(c=" "+c,f=2),Z0(e,0,t-f)+c}throw new Error(`Expected \`options.position\` to be either \`start\`, \`middle\` or \`end\`, got ${s}`)}});var v9=G(YS=>{"use strict";var _Ie=YS&&YS.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(YS,"__esModule",{value:!0});var pft=_Ie(kIe()),hft=_Ie(UIe()),B9={};YS.default=(e,t,r)=>{let s=e+String(t)+String(r);if(B9[s])return B9[s];let a=e;if(r==="wrap"&&(a=pft.default(e,t,{trim:!1,hard:!0})),r.startsWith("truncate")){let n="end";r==="truncate-middle"&&(n="middle"),r==="truncate-start"&&(n="start"),a=hft.default(e,t,{position:n})}return B9[s]=a,a}});var D9=G(S9=>{"use strict";Object.defineProperty(S9,"__esModule",{value:!0});var HIe=e=>{let t="";if(e.childNodes.length>0)for(let r of e.childNodes){let s="";r.nodeName==="#text"?s=r.nodeValue:((r.nodeName==="ink-text"||r.nodeName==="ink-virtual-text")&&(s=HIe(r)),s.length>0&&typeof r.internal_transform=="function"&&(s=r.internal_transform(s))),t+=s}return t};S9.default=HIe});var b9=G(bi=>{"use strict";var KS=bi&&bi.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(bi,"__esModule",{value:!0});bi.setTextNodeValue=bi.createTextNode=bi.setStyle=bi.setAttribute=bi.removeChildNode=bi.insertBeforeNode=bi.appendChildNode=bi.createNode=bi.TEXT_NAME=void 0;var gft=KS(Lm()),jIe=KS(DIe()),dft=KS(bIe()),mft=KS(v9()),yft=KS(D9());bi.TEXT_NAME="#text";bi.createNode=e=>{var t;let r={nodeName:e,style:{},attributes:{},childNodes:[],parentNode:null,yogaNode:e==="ink-virtual-text"?void 0:gft.default.Node.create()};return e==="ink-text"&&((t=r.yogaNode)===null||t===void 0||t.setMeasureFunc(Eft.bind(null,r))),r};bi.appendChildNode=(e,t)=>{var r;t.parentNode&&bi.removeChildNode(t.parentNode,t),t.parentNode=e,e.childNodes.push(t),t.yogaNode&&((r=e.yogaNode)===null||r===void 0||r.insertChild(t.yogaNode,e.yogaNode.getChildCount())),(e.nodeName==="ink-text"||e.nodeName==="ink-virtual-text")&&CF(e)};bi.insertBeforeNode=(e,t,r)=>{var s,a;t.parentNode&&bi.removeChildNode(t.parentNode,t),t.parentNode=e;let n=e.childNodes.indexOf(r);if(n>=0){e.childNodes.splice(n,0,t),t.yogaNode&&((s=e.yogaNode)===null||s===void 0||s.insertChild(t.yogaNode,n));return}e.childNodes.push(t),t.yogaNode&&((a=e.yogaNode)===null||a===void 0||a.insertChild(t.yogaNode,e.yogaNode.getChildCount())),(e.nodeName==="ink-text"||e.nodeName==="ink-virtual-text")&&CF(e)};bi.removeChildNode=(e,t)=>{var r,s;t.yogaNode&&((s=(r=t.parentNode)===null||r===void 0?void 0:r.yogaNode)===null||s===void 0||s.removeChild(t.yogaNode)),t.parentNode=null;let a=e.childNodes.indexOf(t);a>=0&&e.childNodes.splice(a,1),(e.nodeName==="ink-text"||e.nodeName==="ink-virtual-text")&&CF(e)};bi.setAttribute=(e,t,r)=>{e.attributes[t]=r};bi.setStyle=(e,t)=>{e.style=t,e.yogaNode&&dft.default(e.yogaNode,t)};bi.createTextNode=e=>{let t={nodeName:"#text",nodeValue:e,yogaNode:void 0,parentNode:null,style:{}};return bi.setTextNodeValue(t,e),t};var Eft=function(e,t){var r,s;let a=e.nodeName==="#text"?e.nodeValue:yft.default(e),n=jIe.default(a);if(n.width<=t||n.width>=1&&t>0&&t<1)return n;let c=(s=(r=e.style)===null||r===void 0?void 0:r.textWrap)!==null&&s!==void 0?s:"wrap",f=mft.default(a,t,c);return jIe.default(f)},GIe=e=>{var t;if(!(!e||!e.parentNode))return(t=e.yogaNode)!==null&&t!==void 0?t:GIe(e.parentNode)},CF=e=>{let t=GIe(e);t?.markDirty()};bi.setTextNodeValue=(e,t)=>{typeof t!="string"&&(t=String(t)),e.nodeValue=t,CF(e)}});var KIe=G(JS=>{"use strict";var YIe=JS&&JS.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(JS,"__esModule",{value:!0});var qIe=c9(),Ift=YIe(AIe()),WIe=YIe(Lm()),ia=b9(),VIe=e=>{e?.unsetMeasureFunc(),e?.freeRecursive()};JS.default=Ift.default({schedulePassiveEffects:qIe.unstable_scheduleCallback,cancelPassiveEffects:qIe.unstable_cancelCallback,now:Date.now,getRootHostContext:()=>({isInsideText:!1}),prepareForCommit:()=>null,preparePortalMount:()=>null,clearContainer:()=>!1,shouldDeprioritizeSubtree:()=>!1,resetAfterCommit:e=>{if(e.isStaticDirty){e.isStaticDirty=!1,typeof e.onImmediateRender=="function"&&e.onImmediateRender();return}typeof e.onRender=="function"&&e.onRender()},getChildHostContext:(e,t)=>{let r=e.isInsideText,s=t==="ink-text"||t==="ink-virtual-text";return r===s?e:{isInsideText:s}},shouldSetTextContent:()=>!1,createInstance:(e,t,r,s)=>{if(s.isInsideText&&e==="ink-box")throw new Error(" can\u2019t be nested inside component");let a=e==="ink-text"&&s.isInsideText?"ink-virtual-text":e,n=ia.createNode(a);for(let[c,f]of Object.entries(t))c!=="children"&&(c==="style"?ia.setStyle(n,f):c==="internal_transform"?n.internal_transform=f:c==="internal_static"?n.internal_static=!0:ia.setAttribute(n,c,f));return n},createTextInstance:(e,t,r)=>{if(!r.isInsideText)throw new Error(`Text string "${e}" must be rendered inside component`);return ia.createTextNode(e)},resetTextContent:()=>{},hideTextInstance:e=>{ia.setTextNodeValue(e,"")},unhideTextInstance:(e,t)=>{ia.setTextNodeValue(e,t)},getPublicInstance:e=>e,hideInstance:e=>{var t;(t=e.yogaNode)===null||t===void 0||t.setDisplay(WIe.default.DISPLAY_NONE)},unhideInstance:e=>{var t;(t=e.yogaNode)===null||t===void 0||t.setDisplay(WIe.default.DISPLAY_FLEX)},appendInitialChild:ia.appendChildNode,appendChild:ia.appendChildNode,insertBefore:ia.insertBeforeNode,finalizeInitialChildren:(e,t,r,s)=>(e.internal_static&&(s.isStaticDirty=!0,s.staticNode=e),!1),supportsMutation:!0,appendChildToContainer:ia.appendChildNode,insertInContainerBefore:ia.insertBeforeNode,removeChildFromContainer:(e,t)=>{ia.removeChildNode(e,t),VIe(t.yogaNode)},prepareUpdate:(e,t,r,s,a)=>{e.internal_static&&(a.isStaticDirty=!0);let n={},c=Object.keys(s);for(let f of c)if(s[f]!==r[f]){if(f==="style"&&typeof s.style=="object"&&typeof r.style=="object"){let h=s.style,E=r.style,C=Object.keys(h);for(let S of C){if(S==="borderStyle"||S==="borderColor"){if(typeof n.style!="object"){let x={};n.style=x}n.style.borderStyle=h.borderStyle,n.style.borderColor=h.borderColor}if(h[S]!==E[S]){if(typeof n.style!="object"){let x={};n.style=x}n.style[S]=h[S]}}continue}n[f]=s[f]}return n},commitUpdate:(e,t)=>{for(let[r,s]of Object.entries(t))r!=="children"&&(r==="style"?ia.setStyle(e,s):r==="internal_transform"?e.internal_transform=s:r==="internal_static"?e.internal_static=!0:ia.setAttribute(e,r,s))},commitTextUpdate:(e,t,r)=>{ia.setTextNodeValue(e,r)},removeChild:(e,t)=>{ia.removeChildNode(e,t),VIe(t.yogaNode)}})});var zIe=G((YYt,JIe)=>{"use strict";JIe.exports=(e,t=1,r)=>{if(r={indent:" ",includeEmptyLines:!1,...r},typeof e!="string")throw new TypeError(`Expected \`input\` to be a \`string\`, got \`${typeof e}\``);if(typeof t!="number")throw new TypeError(`Expected \`count\` to be a \`number\`, got \`${typeof t}\``);if(typeof r.indent!="string")throw new TypeError(`Expected \`options.indent\` to be a \`string\`, got \`${typeof r.indent}\``);if(t===0)return e;let s=r.includeEmptyLines?/^/gm:/^(?!\s*$)/gm;return e.replace(s,r.indent.repeat(t))}});var ZIe=G(zS=>{"use strict";var Cft=zS&&zS.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(zS,"__esModule",{value:!0});var wF=Cft(Lm());zS.default=e=>e.getComputedWidth()-e.getComputedPadding(wF.default.EDGE_LEFT)-e.getComputedPadding(wF.default.EDGE_RIGHT)-e.getComputedBorder(wF.default.EDGE_LEFT)-e.getComputedBorder(wF.default.EDGE_RIGHT)});var XIe=G((JYt,wft)=>{wft.exports={single:{topLeft:"\u250C",topRight:"\u2510",bottomRight:"\u2518",bottomLeft:"\u2514",vertical:"\u2502",horizontal:"\u2500"},double:{topLeft:"\u2554",topRight:"\u2557",bottomRight:"\u255D",bottomLeft:"\u255A",vertical:"\u2551",horizontal:"\u2550"},round:{topLeft:"\u256D",topRight:"\u256E",bottomRight:"\u256F",bottomLeft:"\u2570",vertical:"\u2502",horizontal:"\u2500"},bold:{topLeft:"\u250F",topRight:"\u2513",bottomRight:"\u251B",bottomLeft:"\u2517",vertical:"\u2503",horizontal:"\u2501"},singleDouble:{topLeft:"\u2553",topRight:"\u2556",bottomRight:"\u255C",bottomLeft:"\u2559",vertical:"\u2551",horizontal:"\u2500"},doubleSingle:{topLeft:"\u2552",topRight:"\u2555",bottomRight:"\u255B",bottomLeft:"\u2558",vertical:"\u2502",horizontal:"\u2550"},classic:{topLeft:"+",topRight:"+",bottomRight:"+",bottomLeft:"+",vertical:"|",horizontal:"-"}}});var eCe=G((zYt,P9)=>{"use strict";var $Ie=XIe();P9.exports=$Ie;P9.exports.default=$Ie});var x9=G(XS=>{"use strict";var Bft=XS&&XS.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(XS,"__esModule",{value:!0});var ZS=Bft(NE()),vft=/^(rgb|hsl|hsv|hwb)\(\s?(\d+),\s?(\d+),\s?(\d+)\s?\)$/,Sft=/^(ansi|ansi256)\(\s?(\d+)\s?\)$/,BF=(e,t)=>t==="foreground"?e:"bg"+e[0].toUpperCase()+e.slice(1);XS.default=(e,t,r)=>{if(!t)return e;if(t in ZS.default){let a=BF(t,r);return ZS.default[a](e)}if(t.startsWith("#")){let a=BF("hex",r);return ZS.default[a](t)(e)}if(t.startsWith("ansi")){let a=Sft.exec(t);if(!a)return e;let n=BF(a[1],r),c=Number(a[2]);return ZS.default[n](c)(e)}if(t.startsWith("rgb")||t.startsWith("hsl")||t.startsWith("hsv")||t.startsWith("hwb")){let a=vft.exec(t);if(!a)return e;let n=BF(a[1],r),c=Number(a[2]),f=Number(a[3]),p=Number(a[4]);return ZS.default[n](c,f,p)(e)}return e}});var rCe=G($S=>{"use strict";var tCe=$S&&$S.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty($S,"__esModule",{value:!0});var Dft=tCe(eCe()),k9=tCe(x9());$S.default=(e,t,r,s)=>{if(typeof r.style.borderStyle=="string"){let a=r.yogaNode.getComputedWidth(),n=r.yogaNode.getComputedHeight(),c=r.style.borderColor,f=Dft.default[r.style.borderStyle],p=k9.default(f.topLeft+f.horizontal.repeat(a-2)+f.topRight,c,"foreground"),h=(k9.default(f.vertical,c,"foreground")+` -`).repeat(n-2),E=k9.default(f.bottomLeft+f.horizontal.repeat(a-2)+f.bottomRight,c,"foreground");s.write(e,t,p,{transformers:[]}),s.write(e,t+1,h,{transformers:[]}),s.write(e+a-1,t+1,h,{transformers:[]}),s.write(e,t+n-1,E,{transformers:[]})}}});var iCe=G(eD=>{"use strict";var Mm=eD&&eD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(eD,"__esModule",{value:!0});var bft=Mm(Lm()),Pft=Mm(y9()),xft=Mm(zIe()),kft=Mm(v9()),Qft=Mm(ZIe()),Rft=Mm(D9()),Tft=Mm(rCe()),Fft=(e,t)=>{var r;let s=(r=e.childNodes[0])===null||r===void 0?void 0:r.yogaNode;if(s){let a=s.getComputedLeft(),n=s.getComputedTop();t=` -`.repeat(n)+xft.default(t,a)}return t},nCe=(e,t,r)=>{var s;let{offsetX:a=0,offsetY:n=0,transformers:c=[],skipStaticElements:f}=r;if(f&&e.internal_static)return;let{yogaNode:p}=e;if(p){if(p.getDisplay()===bft.default.DISPLAY_NONE)return;let h=a+p.getComputedLeft(),E=n+p.getComputedTop(),C=c;if(typeof e.internal_transform=="function"&&(C=[e.internal_transform,...c]),e.nodeName==="ink-text"){let S=Rft.default(e);if(S.length>0){let x=Pft.default(S),I=Qft.default(p);if(x>I){let T=(s=e.style.textWrap)!==null&&s!==void 0?s:"wrap";S=kft.default(S,I,T)}S=Fft(e,S),t.write(h,E,S,{transformers:C})}return}if(e.nodeName==="ink-box"&&Tft.default(h,E,e,t),e.nodeName==="ink-root"||e.nodeName==="ink-box")for(let S of e.childNodes)nCe(S,t,{offsetX:h,offsetY:E,transformers:C,skipStaticElements:f})}};eD.default=nCe});var aCe=G(tD=>{"use strict";var oCe=tD&&tD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(tD,"__esModule",{value:!0});var sCe=oCe(w9()),Nft=oCe(GS()),Q9=class{constructor(t){this.writes=[];let{width:r,height:s}=t;this.width=r,this.height=s}write(t,r,s,a){let{transformers:n}=a;s&&this.writes.push({x:t,y:r,text:s,transformers:n})}get(){let t=[];for(let s=0;ss.trimRight()).join(` -`),height:t.length}}};tD.default=Q9});var uCe=G(rD=>{"use strict";var R9=rD&&rD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(rD,"__esModule",{value:!0});var Oft=R9(Lm()),lCe=R9(iCe()),cCe=R9(aCe());rD.default=(e,t)=>{var r;if(e.yogaNode.setWidth(t),e.yogaNode){e.yogaNode.calculateLayout(void 0,void 0,Oft.default.DIRECTION_LTR);let s=new cCe.default({width:e.yogaNode.getComputedWidth(),height:e.yogaNode.getComputedHeight()});lCe.default(e,s,{skipStaticElements:!0});let a;!((r=e.staticNode)===null||r===void 0)&&r.yogaNode&&(a=new cCe.default({width:e.staticNode.yogaNode.getComputedWidth(),height:e.staticNode.yogaNode.getComputedHeight()}),lCe.default(e.staticNode,a,{skipStaticElements:!1}));let{output:n,height:c}=s.get();return{output:n,outputHeight:c,staticOutput:a?`${a.get().output} -`:""}}return{output:"",outputHeight:0,staticOutput:""}}});var hCe=G((r7t,pCe)=>{"use strict";var fCe=Ie("stream"),ACe=["assert","count","countReset","debug","dir","dirxml","error","group","groupCollapsed","groupEnd","info","log","table","time","timeEnd","timeLog","trace","warn"],T9={},Lft=e=>{let t=new fCe.PassThrough,r=new fCe.PassThrough;t.write=a=>e("stdout",a),r.write=a=>e("stderr",a);let s=new console.Console(t,r);for(let a of ACe)T9[a]=console[a],console[a]=s[a];return()=>{for(let a of ACe)console[a]=T9[a];T9={}}};pCe.exports=Lft});var N9=G(F9=>{"use strict";Object.defineProperty(F9,"__esModule",{value:!0});F9.default=new WeakMap});var L9=G(O9=>{"use strict";Object.defineProperty(O9,"__esModule",{value:!0});var Mft=gn(),gCe=Mft.createContext({exit:()=>{}});gCe.displayName="InternalAppContext";O9.default=gCe});var U9=G(M9=>{"use strict";Object.defineProperty(M9,"__esModule",{value:!0});var Uft=gn(),dCe=Uft.createContext({stdin:void 0,setRawMode:()=>{},isRawModeSupported:!1,internal_exitOnCtrlC:!0});dCe.displayName="InternalStdinContext";M9.default=dCe});var H9=G(_9=>{"use strict";Object.defineProperty(_9,"__esModule",{value:!0});var _ft=gn(),mCe=_ft.createContext({stdout:void 0,write:()=>{}});mCe.displayName="InternalStdoutContext";_9.default=mCe});var G9=G(j9=>{"use strict";Object.defineProperty(j9,"__esModule",{value:!0});var Hft=gn(),yCe=Hft.createContext({stderr:void 0,write:()=>{}});yCe.displayName="InternalStderrContext";j9.default=yCe});var vF=G(q9=>{"use strict";Object.defineProperty(q9,"__esModule",{value:!0});var jft=gn(),ECe=jft.createContext({activeId:void 0,add:()=>{},remove:()=>{},activate:()=>{},deactivate:()=>{},enableFocus:()=>{},disableFocus:()=>{},focusNext:()=>{},focusPrevious:()=>{},focus:()=>{}});ECe.displayName="InternalFocusContext";q9.default=ECe});var CCe=G((c7t,ICe)=>{"use strict";var Gft=/[|\\{}()[\]^$+*?.-]/g;ICe.exports=e=>{if(typeof e!="string")throw new TypeError("Expected a string");return e.replace(Gft,"\\$&")}});var SCe=G((u7t,vCe)=>{"use strict";var qft=CCe(),Wft=typeof process=="object"&&process&&typeof process.cwd=="function"?process.cwd():".",BCe=[].concat(Ie("module").builtinModules,"bootstrap_node","node").map(e=>new RegExp(`(?:\\((?:node:)?${e}(?:\\.js)?:\\d+:\\d+\\)$|^\\s*at (?:node:)?${e}(?:\\.js)?:\\d+:\\d+$)`));BCe.push(/\((?:node:)?internal\/[^:]+:\d+:\d+\)$/,/\s*at (?:node:)?internal\/[^:]+:\d+:\d+$/,/\/\.node-spawn-wrap-\w+-\w+\/node:\d+:\d+\)?$/);var W9=class e{constructor(t){t={ignoredPackages:[],...t},"internals"in t||(t.internals=e.nodeInternals()),"cwd"in t||(t.cwd=Wft),this._cwd=t.cwd.replace(/\\/g,"/"),this._internals=[].concat(t.internals,Vft(t.ignoredPackages)),this._wrapCallSite=t.wrapCallSite||!1}static nodeInternals(){return[...BCe]}clean(t,r=0){r=" ".repeat(r),Array.isArray(t)||(t=t.split(` -`)),!/^\s*at /.test(t[0])&&/^\s*at /.test(t[1])&&(t=t.slice(1));let s=!1,a=null,n=[];return t.forEach(c=>{if(c=c.replace(/\\/g,"/"),this._internals.some(p=>p.test(c)))return;let f=/^\s*at /.test(c);s?c=c.trimEnd().replace(/^(\s+)at /,"$1"):(c=c.trim(),f&&(c=c.slice(3))),c=c.replace(`${this._cwd}/`,""),c&&(f?(a&&(n.push(a),a=null),n.push(c)):(s=!0,a=c))}),n.map(c=>`${r}${c} -`).join("")}captureString(t,r=this.captureString){typeof t=="function"&&(r=t,t=1/0);let{stackTraceLimit:s}=Error;t&&(Error.stackTraceLimit=t);let a={};Error.captureStackTrace(a,r);let{stack:n}=a;return Error.stackTraceLimit=s,this.clean(n)}capture(t,r=this.capture){typeof t=="function"&&(r=t,t=1/0);let{prepareStackTrace:s,stackTraceLimit:a}=Error;Error.prepareStackTrace=(f,p)=>this._wrapCallSite?p.map(this._wrapCallSite):p,t&&(Error.stackTraceLimit=t);let n={};Error.captureStackTrace(n,r);let{stack:c}=n;return Object.assign(Error,{prepareStackTrace:s,stackTraceLimit:a}),c}at(t=this.at){let[r]=this.capture(1,t);if(!r)return{};let s={line:r.getLineNumber(),column:r.getColumnNumber()};wCe(s,r.getFileName(),this._cwd),r.isConstructor()&&(s.constructor=!0),r.isEval()&&(s.evalOrigin=r.getEvalOrigin()),r.isNative()&&(s.native=!0);let a;try{a=r.getTypeName()}catch{}a&&a!=="Object"&&a!=="[object Object]"&&(s.type=a);let n=r.getFunctionName();n&&(s.function=n);let c=r.getMethodName();return c&&n!==c&&(s.method=c),s}parseLine(t){let r=t&&t.match(Yft);if(!r)return null;let s=r[1]==="new",a=r[2],n=r[3],c=r[4],f=Number(r[5]),p=Number(r[6]),h=r[7],E=r[8],C=r[9],S=r[10]==="native",x=r[11]===")",I,T={};if(E&&(T.line=Number(E)),C&&(T.column=Number(C)),x&&h){let O=0;for(let U=h.length-1;U>0;U--)if(h.charAt(U)===")")O++;else if(h.charAt(U)==="("&&h.charAt(U-1)===" "&&(O--,O===-1&&h.charAt(U-1)===" ")){let Y=h.slice(0,U-1);h=h.slice(U+1),a+=` (${Y}`;break}}if(a){let O=a.match(Kft);O&&(a=O[1],I=O[2])}return wCe(T,h,this._cwd),s&&(T.constructor=!0),n&&(T.evalOrigin=n,T.evalLine=f,T.evalColumn=p,T.evalFile=c&&c.replace(/\\/g,"/")),S&&(T.native=!0),a&&(T.function=a),I&&a!==I&&(T.method=I),T}};function wCe(e,t,r){t&&(t=t.replace(/\\/g,"/"),t.startsWith(`${r}/`)&&(t=t.slice(r.length+1)),e.file=t)}function Vft(e){if(e.length===0)return[];let t=e.map(r=>qft(r));return new RegExp(`[/\\\\]node_modules[/\\\\](?:${t.join("|")})[/\\\\][^:]+:\\d+:\\d+`)}var Yft=new RegExp("^(?:\\s*at )?(?:(new) )?(?:(.*?) \\()?(?:eval at ([^ ]+) \\((.+?):(\\d+):(\\d+)\\), )?(?:(.+?):(\\d+):(\\d+)|(native))(\\)?)$"),Kft=/^(.*?) \[as (.*?)\]$/;vCe.exports=W9});var bCe=G((f7t,DCe)=>{"use strict";DCe.exports=(e,t)=>e.replace(/^\t+/gm,r=>" ".repeat(r.length*(t||2)))});var xCe=G((A7t,PCe)=>{"use strict";var Jft=bCe(),zft=(e,t)=>{let r=[],s=e-t,a=e+t;for(let n=s;n<=a;n++)r.push(n);return r};PCe.exports=(e,t,r)=>{if(typeof e!="string")throw new TypeError("Source code is missing.");if(!t||t<1)throw new TypeError("Line number must start from `1`.");if(e=Jft(e).split(/\r?\n/),!(t>e.length))return r={around:3,...r},zft(t,r.around).filter(s=>e[s-1]!==void 0).map(s=>({line:s,value:e[s-1]}))}});var SF=G(sf=>{"use strict";var Zft=sf&&sf.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r),Object.defineProperty(e,s,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),Xft=sf&&sf.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),$ft=sf&&sf.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.hasOwnProperty.call(e,r)&&Zft(t,e,r);return Xft(t,e),t},eAt=sf&&sf.__rest||function(e,t){var r={};for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&t.indexOf(s)<0&&(r[s]=e[s]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,s=Object.getOwnPropertySymbols(e);a{var{children:r}=e,s=eAt(e,["children"]);let a=Object.assign(Object.assign({},s),{marginLeft:s.marginLeft||s.marginX||s.margin||0,marginRight:s.marginRight||s.marginX||s.margin||0,marginTop:s.marginTop||s.marginY||s.margin||0,marginBottom:s.marginBottom||s.marginY||s.margin||0,paddingLeft:s.paddingLeft||s.paddingX||s.padding||0,paddingRight:s.paddingRight||s.paddingX||s.padding||0,paddingTop:s.paddingTop||s.paddingY||s.padding||0,paddingBottom:s.paddingBottom||s.paddingY||s.padding||0});return kCe.default.createElement("ink-box",{ref:t,style:a},r)});V9.displayName="Box";V9.defaultProps={flexDirection:"row",flexGrow:0,flexShrink:1};sf.default=V9});var J9=G(nD=>{"use strict";var Y9=nD&&nD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(nD,"__esModule",{value:!0});var tAt=Y9(gn()),cw=Y9(NE()),QCe=Y9(x9()),K9=({color:e,backgroundColor:t,dimColor:r,bold:s,italic:a,underline:n,strikethrough:c,inverse:f,wrap:p,children:h})=>{if(h==null)return null;let E=C=>(r&&(C=cw.default.dim(C)),e&&(C=QCe.default(C,e,"foreground")),t&&(C=QCe.default(C,t,"background")),s&&(C=cw.default.bold(C)),a&&(C=cw.default.italic(C)),n&&(C=cw.default.underline(C)),c&&(C=cw.default.strikethrough(C)),f&&(C=cw.default.inverse(C)),C);return tAt.default.createElement("ink-text",{style:{flexGrow:0,flexShrink:1,flexDirection:"row",textWrap:p},internal_transform:E},h)};K9.displayName="Text";K9.defaultProps={dimColor:!1,bold:!1,italic:!1,underline:!1,strikethrough:!1,wrap:"wrap"};nD.default=K9});var NCe=G(of=>{"use strict";var rAt=of&&of.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r),Object.defineProperty(e,s,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),nAt=of&&of.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),iAt=of&&of.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.hasOwnProperty.call(e,r)&&rAt(t,e,r);return nAt(t,e),t},iD=of&&of.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(of,"__esModule",{value:!0});var RCe=iAt(Ie("fs")),Fs=iD(gn()),TCe=iD(SCe()),sAt=iD(xCe()),Zp=iD(SF()),pA=iD(J9()),FCe=new TCe.default({cwd:process.cwd(),internals:TCe.default.nodeInternals()}),oAt=({error:e})=>{let t=e.stack?e.stack.split(` -`).slice(1):void 0,r=t?FCe.parseLine(t[0]):void 0,s,a=0;if(r?.file&&r?.line&&RCe.existsSync(r.file)){let n=RCe.readFileSync(r.file,"utf8");if(s=sAt.default(n,r.line),s)for(let{line:c}of s)a=Math.max(a,String(c).length)}return Fs.default.createElement(Zp.default,{flexDirection:"column",padding:1},Fs.default.createElement(Zp.default,null,Fs.default.createElement(pA.default,{backgroundColor:"red",color:"white"}," ","ERROR"," "),Fs.default.createElement(pA.default,null," ",e.message)),r&&Fs.default.createElement(Zp.default,{marginTop:1},Fs.default.createElement(pA.default,{dimColor:!0},r.file,":",r.line,":",r.column)),r&&s&&Fs.default.createElement(Zp.default,{marginTop:1,flexDirection:"column"},s.map(({line:n,value:c})=>Fs.default.createElement(Zp.default,{key:n},Fs.default.createElement(Zp.default,{width:a+1},Fs.default.createElement(pA.default,{dimColor:n!==r.line,backgroundColor:n===r.line?"red":void 0,color:n===r.line?"white":void 0},String(n).padStart(a," "),":")),Fs.default.createElement(pA.default,{key:n,backgroundColor:n===r.line?"red":void 0,color:n===r.line?"white":void 0}," "+c)))),e.stack&&Fs.default.createElement(Zp.default,{marginTop:1,flexDirection:"column"},e.stack.split(` -`).slice(1).map(n=>{let c=FCe.parseLine(n);return c?Fs.default.createElement(Zp.default,{key:n},Fs.default.createElement(pA.default,{dimColor:!0},"- "),Fs.default.createElement(pA.default,{dimColor:!0,bold:!0},c.function),Fs.default.createElement(pA.default,{dimColor:!0,color:"gray"}," ","(",c.file,":",c.line,":",c.column,")")):Fs.default.createElement(Zp.default,{key:n},Fs.default.createElement(pA.default,{dimColor:!0},"- "),Fs.default.createElement(pA.default,{dimColor:!0,bold:!0},n))})))};of.default=oAt});var LCe=G(af=>{"use strict";var aAt=af&&af.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r),Object.defineProperty(e,s,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),lAt=af&&af.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),cAt=af&&af.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.hasOwnProperty.call(e,r)&&aAt(t,e,r);return lAt(t,e),t},_m=af&&af.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(af,"__esModule",{value:!0});var Um=cAt(gn()),OCe=_m(Zq()),uAt=_m(L9()),fAt=_m(U9()),AAt=_m(H9()),pAt=_m(G9()),hAt=_m(vF()),gAt=_m(NCe()),dAt=" ",mAt="\x1B[Z",yAt="\x1B",DF=class extends Um.PureComponent{constructor(){super(...arguments),this.state={isFocusEnabled:!0,activeFocusId:void 0,focusables:[],error:void 0},this.rawModeEnabledCount=0,this.handleSetRawMode=t=>{let{stdin:r}=this.props;if(!this.isRawModeSupported())throw r===process.stdin?new Error(`Raw mode is not supported on the current process.stdin, which Ink uses as input stream by default. -Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`):new Error(`Raw mode is not supported on the stdin provided to Ink. -Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`);if(r.setEncoding("utf8"),t){this.rawModeEnabledCount===0&&(r.addListener("data",this.handleInput),r.resume(),r.setRawMode(!0)),this.rawModeEnabledCount++;return}--this.rawModeEnabledCount===0&&(r.setRawMode(!1),r.removeListener("data",this.handleInput),r.pause())},this.handleInput=t=>{t===""&&this.props.exitOnCtrlC&&this.handleExit(),t===yAt&&this.state.activeFocusId&&this.setState({activeFocusId:void 0}),this.state.isFocusEnabled&&this.state.focusables.length>0&&(t===dAt&&this.focusNext(),t===mAt&&this.focusPrevious())},this.handleExit=t=>{this.isRawModeSupported()&&this.handleSetRawMode(!1),this.props.onExit(t)},this.enableFocus=()=>{this.setState({isFocusEnabled:!0})},this.disableFocus=()=>{this.setState({isFocusEnabled:!1})},this.focus=t=>{this.setState(r=>r.focusables.some(a=>a?.id===t)?{activeFocusId:t}:r)},this.focusNext=()=>{this.setState(t=>{var r;let s=(r=t.focusables[0])===null||r===void 0?void 0:r.id;return{activeFocusId:this.findNextFocusable(t)||s}})},this.focusPrevious=()=>{this.setState(t=>{var r;let s=(r=t.focusables[t.focusables.length-1])===null||r===void 0?void 0:r.id;return{activeFocusId:this.findPreviousFocusable(t)||s}})},this.addFocusable=(t,{autoFocus:r})=>{this.setState(s=>{let a=s.activeFocusId;return!a&&r&&(a=t),{activeFocusId:a,focusables:[...s.focusables,{id:t,isActive:!0}]}})},this.removeFocusable=t=>{this.setState(r=>({activeFocusId:r.activeFocusId===t?void 0:r.activeFocusId,focusables:r.focusables.filter(s=>s.id!==t)}))},this.activateFocusable=t=>{this.setState(r=>({focusables:r.focusables.map(s=>s.id!==t?s:{id:t,isActive:!0})}))},this.deactivateFocusable=t=>{this.setState(r=>({activeFocusId:r.activeFocusId===t?void 0:r.activeFocusId,focusables:r.focusables.map(s=>s.id!==t?s:{id:t,isActive:!1})}))},this.findNextFocusable=t=>{var r;let s=t.focusables.findIndex(a=>a.id===t.activeFocusId);for(let a=s+1;a{var r;let s=t.focusables.findIndex(a=>a.id===t.activeFocusId);for(let a=s-1;a>=0;a--)if(!((r=t.focusables[a])===null||r===void 0)&&r.isActive)return t.focusables[a].id}}static getDerivedStateFromError(t){return{error:t}}isRawModeSupported(){return this.props.stdin.isTTY}render(){return Um.default.createElement(uAt.default.Provider,{value:{exit:this.handleExit}},Um.default.createElement(fAt.default.Provider,{value:{stdin:this.props.stdin,setRawMode:this.handleSetRawMode,isRawModeSupported:this.isRawModeSupported(),internal_exitOnCtrlC:this.props.exitOnCtrlC}},Um.default.createElement(AAt.default.Provider,{value:{stdout:this.props.stdout,write:this.props.writeToStdout}},Um.default.createElement(pAt.default.Provider,{value:{stderr:this.props.stderr,write:this.props.writeToStderr}},Um.default.createElement(hAt.default.Provider,{value:{activeId:this.state.activeFocusId,add:this.addFocusable,remove:this.removeFocusable,activate:this.activateFocusable,deactivate:this.deactivateFocusable,enableFocus:this.enableFocus,disableFocus:this.disableFocus,focusNext:this.focusNext,focusPrevious:this.focusPrevious,focus:this.focus}},this.state.error?Um.default.createElement(gAt.default,{error:this.state.error}):this.props.children)))))}componentDidMount(){OCe.default.hide(this.props.stdout)}componentWillUnmount(){OCe.default.show(this.props.stdout),this.isRawModeSupported()&&this.handleSetRawMode(!1)}componentDidCatch(t){this.handleExit(t)}};af.default=DF;DF.displayName="InternalApp"});var _Ce=G(lf=>{"use strict";var EAt=lf&&lf.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r),Object.defineProperty(e,s,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),IAt=lf&&lf.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),CAt=lf&&lf.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.hasOwnProperty.call(e,r)&&EAt(t,e,r);return IAt(t,e),t},cf=lf&&lf.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(lf,"__esModule",{value:!0});var wAt=cf(gn()),MCe=REe(),BAt=cf(KEe()),vAt=cf(Vq()),SAt=cf(eIe()),DAt=cf(rIe()),z9=cf(KIe()),bAt=cf(uCe()),PAt=cf(zq()),xAt=cf(hCe()),kAt=CAt(b9()),QAt=cf(N9()),RAt=cf(LCe()),uw=process.env.CI==="false"?!1:SAt.default,UCe=()=>{},Z9=class{constructor(t){this.resolveExitPromise=()=>{},this.rejectExitPromise=()=>{},this.unsubscribeExit=()=>{},this.onRender=()=>{if(this.isUnmounted)return;let{output:r,outputHeight:s,staticOutput:a}=bAt.default(this.rootNode,this.options.stdout.columns||80),n=a&&a!==` -`;if(this.options.debug){n&&(this.fullStaticOutput+=a),this.options.stdout.write(this.fullStaticOutput+r);return}if(uw){n&&this.options.stdout.write(a),this.lastOutput=r;return}if(n&&(this.fullStaticOutput+=a),s>=this.options.stdout.rows){this.options.stdout.write(vAt.default.clearTerminal+this.fullStaticOutput+r),this.lastOutput=r;return}n&&(this.log.clear(),this.options.stdout.write(a),this.log(r)),!n&&r!==this.lastOutput&&this.throttledLog(r),this.lastOutput=r},DAt.default(this),this.options=t,this.rootNode=kAt.createNode("ink-root"),this.rootNode.onRender=t.debug?this.onRender:MCe(this.onRender,32,{leading:!0,trailing:!0}),this.rootNode.onImmediateRender=this.onRender,this.log=BAt.default.create(t.stdout),this.throttledLog=t.debug?this.log:MCe(this.log,void 0,{leading:!0,trailing:!0}),this.isUnmounted=!1,this.lastOutput="",this.fullStaticOutput="",this.container=z9.default.createContainer(this.rootNode,0,!1,null),this.unsubscribeExit=PAt.default(this.unmount,{alwaysLast:!1}),t.patchConsole&&this.patchConsole(),uw||(t.stdout.on("resize",this.onRender),this.unsubscribeResize=()=>{t.stdout.off("resize",this.onRender)})}render(t){let r=wAt.default.createElement(RAt.default,{stdin:this.options.stdin,stdout:this.options.stdout,stderr:this.options.stderr,writeToStdout:this.writeToStdout,writeToStderr:this.writeToStderr,exitOnCtrlC:this.options.exitOnCtrlC,onExit:this.unmount},t);z9.default.updateContainer(r,this.container,null,UCe)}writeToStdout(t){if(!this.isUnmounted){if(this.options.debug){this.options.stdout.write(t+this.fullStaticOutput+this.lastOutput);return}if(uw){this.options.stdout.write(t);return}this.log.clear(),this.options.stdout.write(t),this.log(this.lastOutput)}}writeToStderr(t){if(!this.isUnmounted){if(this.options.debug){this.options.stderr.write(t),this.options.stdout.write(this.fullStaticOutput+this.lastOutput);return}if(uw){this.options.stderr.write(t);return}this.log.clear(),this.options.stderr.write(t),this.log(this.lastOutput)}}unmount(t){this.isUnmounted||(this.onRender(),this.unsubscribeExit(),typeof this.restoreConsole=="function"&&this.restoreConsole(),typeof this.unsubscribeResize=="function"&&this.unsubscribeResize(),uw?this.options.stdout.write(this.lastOutput+` -`):this.options.debug||this.log.done(),this.isUnmounted=!0,z9.default.updateContainer(null,this.container,null,UCe),QAt.default.delete(this.options.stdout),t instanceof Error?this.rejectExitPromise(t):this.resolveExitPromise())}waitUntilExit(){return this.exitPromise||(this.exitPromise=new Promise((t,r)=>{this.resolveExitPromise=t,this.rejectExitPromise=r})),this.exitPromise}clear(){!uw&&!this.options.debug&&this.log.clear()}patchConsole(){this.options.debug||(this.restoreConsole=xAt.default((t,r)=>{t==="stdout"&&this.writeToStdout(r),t==="stderr"&&(r.startsWith("The above error occurred")||this.writeToStderr(r))}))}};lf.default=Z9});var jCe=G(sD=>{"use strict";var HCe=sD&&sD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(sD,"__esModule",{value:!0});var TAt=HCe(_Ce()),bF=HCe(N9()),FAt=Ie("stream"),NAt=(e,t)=>{let r=Object.assign({stdout:process.stdout,stdin:process.stdin,stderr:process.stderr,debug:!1,exitOnCtrlC:!0,patchConsole:!0},OAt(t)),s=LAt(r.stdout,()=>new TAt.default(r));return s.render(e),{rerender:s.render,unmount:()=>s.unmount(),waitUntilExit:s.waitUntilExit,cleanup:()=>bF.default.delete(r.stdout),clear:s.clear}};sD.default=NAt;var OAt=(e={})=>e instanceof FAt.Stream?{stdout:e,stdin:process.stdin}:e,LAt=(e,t)=>{let r;return bF.default.has(e)?r=bF.default.get(e):(r=t(),bF.default.set(e,r)),r}});var qCe=G(Xp=>{"use strict";var MAt=Xp&&Xp.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r),Object.defineProperty(e,s,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),UAt=Xp&&Xp.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),_At=Xp&&Xp.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.hasOwnProperty.call(e,r)&&MAt(t,e,r);return UAt(t,e),t};Object.defineProperty(Xp,"__esModule",{value:!0});var oD=_At(gn()),GCe=e=>{let{items:t,children:r,style:s}=e,[a,n]=oD.useState(0),c=oD.useMemo(()=>t.slice(a),[t,a]);oD.useLayoutEffect(()=>{n(t.length)},[t.length]);let f=c.map((h,E)=>r(h,a+E)),p=oD.useMemo(()=>Object.assign({position:"absolute",flexDirection:"column"},s),[s]);return oD.default.createElement("ink-box",{internal_static:!0,style:p},f)};GCe.displayName="Static";Xp.default=GCe});var VCe=G(aD=>{"use strict";var HAt=aD&&aD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(aD,"__esModule",{value:!0});var jAt=HAt(gn()),WCe=({children:e,transform:t})=>e==null?null:jAt.default.createElement("ink-text",{style:{flexGrow:0,flexShrink:1,flexDirection:"row"},internal_transform:t},e);WCe.displayName="Transform";aD.default=WCe});var KCe=G(lD=>{"use strict";var GAt=lD&&lD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(lD,"__esModule",{value:!0});var qAt=GAt(gn()),YCe=({count:e=1})=>qAt.default.createElement("ink-text",null,` -`.repeat(e));YCe.displayName="Newline";lD.default=YCe});var ZCe=G(cD=>{"use strict";var JCe=cD&&cD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(cD,"__esModule",{value:!0});var WAt=JCe(gn()),VAt=JCe(SF()),zCe=()=>WAt.default.createElement(VAt.default,{flexGrow:1});zCe.displayName="Spacer";cD.default=zCe});var PF=G(uD=>{"use strict";var YAt=uD&&uD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(uD,"__esModule",{value:!0});var KAt=gn(),JAt=YAt(U9()),zAt=()=>KAt.useContext(JAt.default);uD.default=zAt});var $Ce=G(fD=>{"use strict";var ZAt=fD&&fD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(fD,"__esModule",{value:!0});var XCe=gn(),XAt=ZAt(PF()),$At=(e,t={})=>{let{stdin:r,setRawMode:s,internal_exitOnCtrlC:a}=XAt.default();XCe.useEffect(()=>{if(t.isActive!==!1)return s(!0),()=>{s(!1)}},[t.isActive,s]),XCe.useEffect(()=>{if(t.isActive===!1)return;let n=c=>{let f=String(c),p={upArrow:f==="\x1B[A",downArrow:f==="\x1B[B",leftArrow:f==="\x1B[D",rightArrow:f==="\x1B[C",pageDown:f==="\x1B[6~",pageUp:f==="\x1B[5~",return:f==="\r",escape:f==="\x1B",ctrl:!1,shift:!1,tab:f===" "||f==="\x1B[Z",backspace:f==="\b",delete:f==="\x7F"||f==="\x1B[3~",meta:!1};f<=""&&!p.return&&(f=String.fromCharCode(f.charCodeAt(0)+97-1),p.ctrl=!0),f.startsWith("\x1B")&&(f=f.slice(1),p.meta=!0);let h=f>="A"&&f<="Z",E=f>="\u0410"&&f<="\u042F";f.length===1&&(h||E)&&(p.shift=!0),p.tab&&f==="[Z"&&(p.shift=!0),(p.tab||p.backspace||p.delete)&&(f=""),(!(f==="c"&&p.ctrl)||!a)&&e(f,p)};return r?.on("data",n),()=>{r?.off("data",n)}},[t.isActive,r,a,e])};fD.default=$At});var ewe=G(AD=>{"use strict";var ept=AD&&AD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(AD,"__esModule",{value:!0});var tpt=gn(),rpt=ept(L9()),npt=()=>tpt.useContext(rpt.default);AD.default=npt});var twe=G(pD=>{"use strict";var ipt=pD&&pD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(pD,"__esModule",{value:!0});var spt=gn(),opt=ipt(H9()),apt=()=>spt.useContext(opt.default);pD.default=apt});var rwe=G(hD=>{"use strict";var lpt=hD&&hD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(hD,"__esModule",{value:!0});var cpt=gn(),upt=lpt(G9()),fpt=()=>cpt.useContext(upt.default);hD.default=fpt});var iwe=G(dD=>{"use strict";var nwe=dD&&dD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(dD,"__esModule",{value:!0});var gD=gn(),Apt=nwe(vF()),ppt=nwe(PF()),hpt=({isActive:e=!0,autoFocus:t=!1,id:r}={})=>{let{isRawModeSupported:s,setRawMode:a}=ppt.default(),{activeId:n,add:c,remove:f,activate:p,deactivate:h,focus:E}=gD.useContext(Apt.default),C=gD.useMemo(()=>r??Math.random().toString().slice(2,7),[r]);return gD.useEffect(()=>(c(C,{autoFocus:t}),()=>{f(C)}),[C,t]),gD.useEffect(()=>{e?p(C):h(C)},[e,C]),gD.useEffect(()=>{if(!(!s||!e))return a(!0),()=>{a(!1)}},[e]),{isFocused:!!C&&n===C,focus:E}};dD.default=hpt});var swe=G(mD=>{"use strict";var gpt=mD&&mD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(mD,"__esModule",{value:!0});var dpt=gn(),mpt=gpt(vF()),ypt=()=>{let e=dpt.useContext(mpt.default);return{enableFocus:e.enableFocus,disableFocus:e.disableFocus,focusNext:e.focusNext,focusPrevious:e.focusPrevious,focus:e.focus}};mD.default=ypt});var owe=G(X9=>{"use strict";Object.defineProperty(X9,"__esModule",{value:!0});X9.default=e=>{var t,r,s,a;return{width:(r=(t=e.yogaNode)===null||t===void 0?void 0:t.getComputedWidth())!==null&&r!==void 0?r:0,height:(a=(s=e.yogaNode)===null||s===void 0?void 0:s.getComputedHeight())!==null&&a!==void 0?a:0}}});var Gc=G(wo=>{"use strict";Object.defineProperty(wo,"__esModule",{value:!0});var Ept=jCe();Object.defineProperty(wo,"render",{enumerable:!0,get:function(){return Ept.default}});var Ipt=SF();Object.defineProperty(wo,"Box",{enumerable:!0,get:function(){return Ipt.default}});var Cpt=J9();Object.defineProperty(wo,"Text",{enumerable:!0,get:function(){return Cpt.default}});var wpt=qCe();Object.defineProperty(wo,"Static",{enumerable:!0,get:function(){return wpt.default}});var Bpt=VCe();Object.defineProperty(wo,"Transform",{enumerable:!0,get:function(){return Bpt.default}});var vpt=KCe();Object.defineProperty(wo,"Newline",{enumerable:!0,get:function(){return vpt.default}});var Spt=ZCe();Object.defineProperty(wo,"Spacer",{enumerable:!0,get:function(){return Spt.default}});var Dpt=$Ce();Object.defineProperty(wo,"useInput",{enumerable:!0,get:function(){return Dpt.default}});var bpt=ewe();Object.defineProperty(wo,"useApp",{enumerable:!0,get:function(){return bpt.default}});var Ppt=PF();Object.defineProperty(wo,"useStdin",{enumerable:!0,get:function(){return Ppt.default}});var xpt=twe();Object.defineProperty(wo,"useStdout",{enumerable:!0,get:function(){return xpt.default}});var kpt=rwe();Object.defineProperty(wo,"useStderr",{enumerable:!0,get:function(){return kpt.default}});var Qpt=iwe();Object.defineProperty(wo,"useFocus",{enumerable:!0,get:function(){return Qpt.default}});var Rpt=swe();Object.defineProperty(wo,"useFocusManager",{enumerable:!0,get:function(){return Rpt.default}});var Tpt=owe();Object.defineProperty(wo,"measureElement",{enumerable:!0,get:function(){return Tpt.default}})});var eW={};Yt(eW,{Gem:()=>$9});var awe,Hm,$9,xF=Ze(()=>{awe=et(Gc()),Hm=et(gn()),$9=(0,Hm.memo)(({active:e})=>{let t=(0,Hm.useMemo)(()=>e?"\u25C9":"\u25EF",[e]),r=(0,Hm.useMemo)(()=>e?"green":"yellow",[e]);return Hm.default.createElement(awe.Text,{color:r},t)})});var tW={};Yt(tW,{useKeypress:()=>jm});function jm({active:e},t,r){let{stdin:s}=(0,lwe.useStdin)(),a=(0,kF.useCallback)((n,c)=>t(n,c),r);(0,kF.useEffect)(()=>{if(!(!e||!s))return s.on("keypress",a),()=>{s.off("keypress",a)}},[e,a,s])}var lwe,kF,fw=Ze(()=>{lwe=et(Gc()),kF=et(gn())});var uwe={};Yt(uwe,{FocusRequest:()=>cwe,useFocusRequest:()=>rW});var cwe,rW,nW=Ze(()=>{fw();cwe=(r=>(r.BEFORE="before",r.AFTER="after",r))(cwe||{}),rW=function({active:e},t,r){jm({active:e},(s,a)=>{a.name==="tab"&&(a.shift?t("before"):t("after"))},r)}});var fwe={};Yt(fwe,{useListInput:()=>yD});var yD,QF=Ze(()=>{fw();yD=function(e,t,{active:r,minus:s,plus:a,set:n,loop:c=!0}){jm({active:r},(f,p)=>{let h=t.indexOf(e);switch(p.name){case s:{let E=h-1;if(c){n(t[(t.length+E)%t.length]);return}if(E<0)return;n(t[E])}break;case a:{let E=h+1;if(c){n(t[E%t.length]);return}if(E>=t.length)return;n(t[E])}break}},[t,e,a,n,c])}});var RF={};Yt(RF,{ScrollableItems:()=>Fpt});var X0,wl,Fpt,TF=Ze(()=>{X0=et(Gc()),wl=et(gn());nW();QF();Fpt=({active:e=!0,children:t=[],radius:r=10,size:s=1,loop:a=!0,onFocusRequest:n,willReachEnd:c})=>{let f=O=>{if(O.key===null)throw new Error("Expected all children to have a key");return O.key},p=wl.default.Children.map(t,O=>f(O)),h=p[0],[E,C]=(0,wl.useState)(h),S=p.indexOf(E);(0,wl.useEffect)(()=>{p.includes(E)||C(h)},[t]),(0,wl.useEffect)(()=>{c&&S>=p.length-2&&c()},[S]),rW({active:e&&!!n},O=>{n?.(O)},[n]),yD(E,p,{active:e,minus:"up",plus:"down",set:C,loop:a});let x=S-r,I=S+r;I>p.length&&(x-=I-p.length,I=p.length),x<0&&(I+=-x,x=0),I>=p.length&&(I=p.length-1);let T=[];for(let O=x;O<=I;++O){let U=p[O],Y=e&&U===E;T.push(wl.default.createElement(X0.Box,{key:U,height:s},wl.default.createElement(X0.Box,{marginLeft:1,marginRight:1},wl.default.createElement(X0.Text,null,Y?wl.default.createElement(X0.Text,{color:"cyan",bold:!0},">"):" ")),wl.default.createElement(X0.Box,null,wl.default.cloneElement(t[O],{active:Y}))))}return wl.default.createElement(X0.Box,{flexDirection:"column",width:"100%"},T)}});var Awe,$p,pwe,FF,hwe,iW=Ze(()=>{Awe=et(Gc()),$p=et(gn()),pwe=Ie("readline"),FF=$p.default.createContext(null),hwe=({children:e})=>{let{stdin:t,setRawMode:r}=(0,Awe.useStdin)();(0,$p.useEffect)(()=>{r&&r(!0),t&&(0,pwe.emitKeypressEvents)(t)},[t,r]);let[s,a]=(0,$p.useState)(new Map),n=(0,$p.useMemo)(()=>({getAll:()=>s,get:c=>s.get(c),set:(c,f)=>a(p=>new Map([...p,[c,f]])),setAll:c=>a(f=>new Map([...f,...c]))}),[s,a]);return $p.default.createElement(FF.Provider,{value:n,children:e})}});var sW={};Yt(sW,{useMinistore:()=>Npt,useMinistoreSetAll:()=>Opt});function Npt(e,t){let r=(0,ED.useContext)(FF);if(r===null)throw new Error("Expected this hook to run with a ministore context attached");if(typeof e>"u")return r.getAll();let s=(0,ED.useCallback)(n=>{r.set(e,n)},[e,r.set]),a=r.get(e);return typeof a>"u"&&(a=t),[a,s]}function Opt(){let e=(0,ED.useContext)(FF);if(e===null)throw new Error("Expected this hook to run with a ministore context attached");return e.setAll}var ED,oW=Ze(()=>{ED=et(gn());iW()});var OF={};Yt(OF,{renderForm:()=>Lpt});async function Lpt(e,t,{stdin:r,stdout:s,stderr:a}){let n,c=p=>{let{exit:h}=(0,NF.useApp)();jm({active:!0},(E,C)=>{C.name==="return"&&(n=p,h())},[h,p])},{waitUntilExit:f}=(0,NF.render)(aW.default.createElement(hwe,null,aW.default.createElement(e,{...t,useSubmit:c})),{stdin:r,stdout:s,stderr:a});return await f(),n}var NF,aW,LF=Ze(()=>{NF=et(Gc()),aW=et(gn());iW();fw()});var ywe=G(ID=>{"use strict";Object.defineProperty(ID,"__esModule",{value:!0});ID.UncontrolledTextInput=void 0;var dwe=gn(),lW=gn(),gwe=Gc(),Gm=NE(),mwe=({value:e,placeholder:t="",focus:r=!0,mask:s,highlightPastedText:a=!1,showCursor:n=!0,onChange:c,onSubmit:f})=>{let[{cursorOffset:p,cursorWidth:h},E]=lW.useState({cursorOffset:(e||"").length,cursorWidth:0});lW.useEffect(()=>{E(T=>{if(!r||!n)return T;let O=e||"";return T.cursorOffset>O.length-1?{cursorOffset:O.length,cursorWidth:0}:T})},[e,r,n]);let C=a?h:0,S=s?s.repeat(e.length):e,x=S,I=t?Gm.grey(t):void 0;if(n&&r){I=t.length>0?Gm.inverse(t[0])+Gm.grey(t.slice(1)):Gm.inverse(" "),x=S.length>0?"":Gm.inverse(" ");let T=0;for(let O of S)T>=p-C&&T<=p?x+=Gm.inverse(O):x+=O,T++;S.length>0&&p===S.length&&(x+=Gm.inverse(" "))}return gwe.useInput((T,O)=>{if(O.upArrow||O.downArrow||O.ctrl&&T==="c"||O.tab||O.shift&&O.tab)return;if(O.return){f&&f(e);return}let U=p,Y=e,te=0;O.leftArrow?n&&U--:O.rightArrow?n&&U++:O.backspace||O.delete?p>0&&(Y=e.slice(0,p-1)+e.slice(p,e.length),U--):(Y=e.slice(0,p)+T+e.slice(p,e.length),U+=T.length,T.length>1&&(te=T.length)),p<0&&(U=0),p>e.length&&(U=e.length),E({cursorOffset:U,cursorWidth:te}),Y!==e&&c(Y)},{isActive:r}),dwe.createElement(gwe.Text,null,t?S.length>0?x:I:x)};ID.default=mwe;ID.UncontrolledTextInput=({initialValue:e="",...t})=>{let[r,s]=lW.useState(e);return dwe.createElement(mwe,Object.assign({},t,{value:r,onChange:s}))}});var Cwe={};Yt(Cwe,{Pad:()=>cW});var Ewe,Iwe,cW,uW=Ze(()=>{Ewe=et(Gc()),Iwe=et(gn()),cW=({length:e,active:t})=>{if(e===0)return null;let r=e>1?` ${"-".repeat(e-1)}`:" ";return Iwe.default.createElement(Ewe.Text,{dimColor:!t},r)}});var wwe={};Yt(wwe,{ItemOptions:()=>Mpt});var wD,$0,Mpt,Bwe=Ze(()=>{wD=et(Gc()),$0=et(gn());QF();xF();uW();Mpt=function({active:e,skewer:t,options:r,value:s,onChange:a,sizes:n=[]}){let c=r.filter(({label:p})=>!!p).map(({value:p})=>p),f=r.findIndex(p=>p.value===s&&p.label!="");return yD(s,c,{active:e,minus:"left",plus:"right",set:a}),$0.default.createElement($0.default.Fragment,null,r.map(({label:p},h)=>{let E=h===f,C=n[h]-1||0,S=p.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,""),x=Math.max(0,C-S.length-2);return p?$0.default.createElement(wD.Box,{key:p,width:C,marginLeft:1},$0.default.createElement(wD.Text,{wrap:"truncate"},$0.default.createElement($9,{active:E})," ",p),t?$0.default.createElement(cW,{active:e,length:x}):null):$0.default.createElement(wD.Box,{key:`spacer-${h}`,width:C,marginLeft:1})}))}});var Mwe=G((dJt,Lwe)=>{var CW;Lwe.exports=()=>(typeof CW>"u"&&(CW=Ie("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),CW)});var s1e=G((HJt,i1e)=>{var kW=Symbol("arg flag"),qc=class e extends Error{constructor(t,r){super(t),this.name="ArgError",this.code=r,Object.setPrototypeOf(this,e.prototype)}};function UD(e,{argv:t=process.argv.slice(2),permissive:r=!1,stopAtPositional:s=!1}={}){if(!e)throw new qc("argument specification object is required","ARG_CONFIG_NO_SPEC");let a={_:[]},n={},c={};for(let f of Object.keys(e)){if(!f)throw new qc("argument key cannot be an empty string","ARG_CONFIG_EMPTY_KEY");if(f[0]!=="-")throw new qc(`argument key must start with '-' but found: '${f}'`,"ARG_CONFIG_NONOPT_KEY");if(f.length===1)throw new qc(`argument key must have a name; singular '-' keys are not allowed: ${f}`,"ARG_CONFIG_NONAME_KEY");if(typeof e[f]=="string"){n[f]=e[f];continue}let p=e[f],h=!1;if(Array.isArray(p)&&p.length===1&&typeof p[0]=="function"){let[E]=p;p=(C,S,x=[])=>(x.push(E(C,S,x[x.length-1])),x),h=E===Boolean||E[kW]===!0}else if(typeof p=="function")h=p===Boolean||p[kW]===!0;else throw new qc(`type missing or not a function or valid array type: ${f}`,"ARG_CONFIG_VAD_TYPE");if(f[1]!=="-"&&f.length>2)throw new qc(`short argument keys (with a single hyphen) must have only one character: ${f}`,"ARG_CONFIG_SHORTOPT_TOOLONG");c[f]=[p,h]}for(let f=0,p=t.length;f0){a._=a._.concat(t.slice(f));break}if(h==="--"){a._=a._.concat(t.slice(f+1));break}if(h.length>1&&h[0]==="-"){let E=h[1]==="-"||h.length===2?[h]:h.slice(1).split("").map(C=>`-${C}`);for(let C=0;C1&&t[f+1][0]==="-"&&!(t[f+1].match(/^-?\d*(\.(?=\d))?\d*$/)&&(O===Number||typeof BigInt<"u"&&O===BigInt))){let Y=x===T?"":` (alias for ${T})`;throw new qc(`option requires argument: ${x}${Y}`,"ARG_MISSING_REQUIRED_LONGARG")}a[T]=O(t[f+1],T,a[T]),++f}else a[T]=O(I,T,a[T])}}else a._.push(h)}return a}UD.flag=e=>(e[kW]=!0,e);UD.COUNT=UD.flag((e,t,r)=>(r||0)+1);UD.ArgError=qc;i1e.exports=UD});var p1e=G((mzt,A1e)=>{var FW;A1e.exports=()=>(typeof FW>"u"&&(FW=Ie("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),FW)});var y1e=G((_W,HW)=>{(function(e){_W&&typeof _W=="object"&&typeof HW<"u"?HW.exports=e():typeof define=="function"&&define.amd?define([],e):typeof window<"u"?window.isWindows=e():typeof global<"u"?global.isWindows=e():typeof self<"u"?self.isWindows=e():this.isWindows=e()})(function(){"use strict";return function(){return process&&(process.platform==="win32"||/^(msys|cygwin)$/.test(process.env.OSTYPE))}})});var w1e=G((gZt,C1e)=>{"use strict";jW.ifExists=Uht;var yw=Ie("util"),Wc=Ie("path"),E1e=y1e(),Oht=/^#!\s*(?:\/usr\/bin\/env)?\s*([^ \t]+)(.*)$/,Lht={createPwshFile:!0,createCmdFile:E1e(),fs:Ie("fs")},Mht=new Map([[".js","node"],[".cjs","node"],[".mjs","node"],[".cmd","cmd"],[".bat","cmd"],[".ps1","pwsh"],[".sh","sh"]]);function I1e(e){let t={...Lht,...e},r=t.fs;return t.fs_={chmod:r.chmod?yw.promisify(r.chmod):async()=>{},mkdir:yw.promisify(r.mkdir),readFile:yw.promisify(r.readFile),stat:yw.promisify(r.stat),unlink:yw.promisify(r.unlink),writeFile:yw.promisify(r.writeFile)},t}async function jW(e,t,r){let s=I1e(r);await s.fs_.stat(e),await Hht(e,t,s)}function Uht(e,t,r){return jW(e,t,r).catch(()=>{})}function _ht(e,t){return t.fs_.unlink(e).catch(()=>{})}async function Hht(e,t,r){let s=await Vht(e,r);return await jht(t,r),Ght(e,t,s,r)}function jht(e,t){return t.fs_.mkdir(Wc.dirname(e),{recursive:!0})}function Ght(e,t,r,s){let a=I1e(s),n=[{generator:Jht,extension:""}];return a.createCmdFile&&n.push({generator:Kht,extension:".cmd"}),a.createPwshFile&&n.push({generator:zht,extension:".ps1"}),Promise.all(n.map(c=>Yht(e,t+c.extension,r,c.generator,a)))}function qht(e,t){return _ht(e,t)}function Wht(e,t){return Zht(e,t)}async function Vht(e,t){let a=(await t.fs_.readFile(e,"utf8")).trim().split(/\r*\n/)[0].match(Oht);if(!a){let n=Wc.extname(e).toLowerCase();return{program:Mht.get(n)||null,additionalArgs:""}}return{program:a[1],additionalArgs:a[2]}}async function Yht(e,t,r,s,a){let n=a.preserveSymlinks?"--preserve-symlinks":"",c=[r.additionalArgs,n].filter(f=>f).join(" ");return a=Object.assign({},a,{prog:r.program,args:c}),await qht(t,a),await a.fs_.writeFile(t,s(e,t,a),"utf8"),Wht(t,a)}function Kht(e,t,r){let a=Wc.relative(Wc.dirname(t),e).split("/").join("\\"),n=Wc.isAbsolute(a)?`"${a}"`:`"%~dp0\\${a}"`,c,f=r.prog,p=r.args||"",h=GW(r.nodePath).win32;f?(c=`"%~dp0\\${f}.exe"`,a=n):(f=n,p="",a="");let E=r.progArgs?`${r.progArgs.join(" ")} `:"",C=h?`@SET NODE_PATH=${h}\r -`:"";return c?C+=`@IF EXIST ${c} (\r - ${c} ${p} ${a} ${E}%*\r -) ELSE (\r - @SETLOCAL\r - @SET PATHEXT=%PATHEXT:;.JS;=;%\r - ${f} ${p} ${a} ${E}%*\r -)\r -`:C+=`@${f} ${p} ${a} ${E}%*\r -`,C}function Jht(e,t,r){let s=Wc.relative(Wc.dirname(t),e),a=r.prog&&r.prog.split("\\").join("/"),n;s=s.split("\\").join("/");let c=Wc.isAbsolute(s)?`"${s}"`:`"$basedir/${s}"`,f=r.args||"",p=GW(r.nodePath).posix;a?(n=`"$basedir/${r.prog}"`,s=c):(a=c,f="",s="");let h=r.progArgs?`${r.progArgs.join(" ")} `:"",E=`#!/bin/sh -basedir=$(dirname "$(echo "$0" | sed -e 's,\\\\,/,g')") - -case \`uname\` in - *CYGWIN*) basedir=\`cygpath -w "$basedir"\`;; -esac - -`,C=r.nodePath?`export NODE_PATH="${p}" -`:"";return n?E+=`${C}if [ -x ${n} ]; then - exec ${n} ${f} ${s} ${h}"$@" -else - exec ${a} ${f} ${s} ${h}"$@" -fi -`:E+=`${C}${a} ${f} ${s} ${h}"$@" -exit $? -`,E}function zht(e,t,r){let s=Wc.relative(Wc.dirname(t),e),a=r.prog&&r.prog.split("\\").join("/"),n=a&&`"${a}$exe"`,c;s=s.split("\\").join("/");let f=Wc.isAbsolute(s)?`"${s}"`:`"$basedir/${s}"`,p=r.args||"",h=GW(r.nodePath),E=h.win32,C=h.posix;n?(c=`"$basedir/${r.prog}$exe"`,s=f):(n=f,p="",s="");let S=r.progArgs?`${r.progArgs.join(" ")} `:"",x=`#!/usr/bin/env pwsh -$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent - -$exe="" -${r.nodePath?`$env_node_path=$env:NODE_PATH -$env:NODE_PATH="${E}" -`:""}if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { - # Fix case when both the Windows and Linux builds of Node - # are installed in the same directory - $exe=".exe" -}`;return r.nodePath&&(x+=` else { - $env:NODE_PATH="${C}" -}`),c?x+=` -$ret=0 -if (Test-Path ${c}) { - # Support pipeline input - if ($MyInvocation.ExpectingInput) { - $input | & ${c} ${p} ${s} ${S}$args - } else { - & ${c} ${p} ${s} ${S}$args - } - $ret=$LASTEXITCODE -} else { - # Support pipeline input - if ($MyInvocation.ExpectingInput) { - $input | & ${n} ${p} ${s} ${S}$args - } else { - & ${n} ${p} ${s} ${S}$args - } - $ret=$LASTEXITCODE -} -${r.nodePath?`$env:NODE_PATH=$env_node_path -`:""}exit $ret -`:x+=` -# Support pipeline input -if ($MyInvocation.ExpectingInput) { - $input | & ${n} ${p} ${s} ${S}$args -} else { - & ${n} ${p} ${s} ${S}$args -} -${r.nodePath?`$env:NODE_PATH=$env_node_path -`:""}exit $LASTEXITCODE -`,x}function Zht(e,t){return t.fs_.chmod(e,493)}function GW(e){if(!e)return{win32:"",posix:""};let t=typeof e=="string"?e.split(Wc.delimiter):Array.from(e),r={};for(let s=0;s`/mnt/${f.toLowerCase()}`):t[s];r.win32=r.win32?`${r.win32};${a}`:a,r.posix=r.posix?`${r.posix}:${n}`:n,r[s]={win32:a,posix:n}}return r}C1e.exports=jW});var nV=G((GXt,H1e)=>{H1e.exports=Ie("stream")});var W1e=G((qXt,q1e)=>{"use strict";function j1e(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),r.push.apply(r,s)}return r}function Q0t(e){for(var t=1;t0?this.tail.next=s:this.head=s,this.tail=s,++this.length}},{key:"unshift",value:function(r){var s={data:r,next:this.head};this.length===0&&(this.tail=s),this.head=s,++this.length}},{key:"shift",value:function(){if(this.length!==0){var r=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,r}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(r){if(this.length===0)return"";for(var s=this.head,a=""+s.data;s=s.next;)a+=r+s.data;return a}},{key:"concat",value:function(r){if(this.length===0)return ZF.alloc(0);for(var s=ZF.allocUnsafe(r>>>0),a=this.head,n=0;a;)M0t(a.data,s,n),n+=a.data.length,a=a.next;return s}},{key:"consume",value:function(r,s){var a;return rc.length?c.length:r;if(f===c.length?n+=c:n+=c.slice(0,r),r-=f,r===0){f===c.length?(++a,s.next?this.head=s.next:this.head=this.tail=null):(this.head=s,s.data=c.slice(f));break}++a}return this.length-=a,n}},{key:"_getBuffer",value:function(r){var s=ZF.allocUnsafe(r),a=this.head,n=1;for(a.data.copy(s),r-=a.data.length;a=a.next;){var c=a.data,f=r>c.length?c.length:r;if(c.copy(s,s.length-r,0,f),r-=f,r===0){f===c.length?(++n,a.next?this.head=a.next:this.head=this.tail=null):(this.head=a,a.data=c.slice(f));break}++n}return this.length-=n,s}},{key:L0t,value:function(r,s){return iV(this,Q0t({},s,{depth:0,customInspect:!1}))}}]),e}()});var oV=G((WXt,Y1e)=>{"use strict";function U0t(e,t){var r=this,s=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return s||a?(t?t(e):e&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(sV,this,e)):process.nextTick(sV,this,e)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(n){!t&&n?r._writableState?r._writableState.errorEmitted?process.nextTick(XF,r):(r._writableState.errorEmitted=!0,process.nextTick(V1e,r,n)):process.nextTick(V1e,r,n):t?(process.nextTick(XF,r),t(n)):process.nextTick(XF,r)}),this)}function V1e(e,t){sV(e,t),XF(e)}function XF(e){e._writableState&&!e._writableState.emitClose||e._readableState&&!e._readableState.emitClose||e.emit("close")}function _0t(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function sV(e,t){e.emit("error",t)}function H0t(e,t){var r=e._readableState,s=e._writableState;r&&r.autoDestroy||s&&s.autoDestroy?e.destroy(t):e.emit("error",t)}Y1e.exports={destroy:U0t,undestroy:_0t,errorOrDestroy:H0t}});var og=G((VXt,z1e)=>{"use strict";var J1e={};function Yc(e,t,r){r||(r=Error);function s(n,c,f){return typeof t=="string"?t:t(n,c,f)}class a extends r{constructor(c,f,p){super(s(c,f,p))}}a.prototype.name=r.name,a.prototype.code=e,J1e[e]=a}function K1e(e,t){if(Array.isArray(e)){let r=e.length;return e=e.map(s=>String(s)),r>2?`one of ${t} ${e.slice(0,r-1).join(", ")}, or `+e[r-1]:r===2?`one of ${t} ${e[0]} or ${e[1]}`:`of ${t} ${e[0]}`}else return`of ${t} ${String(e)}`}function j0t(e,t,r){return e.substr(!r||r<0?0:+r,t.length)===t}function G0t(e,t,r){return(r===void 0||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}function q0t(e,t,r){return typeof r!="number"&&(r=0),r+t.length>e.length?!1:e.indexOf(t,r)!==-1}Yc("ERR_INVALID_OPT_VALUE",function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'},TypeError);Yc("ERR_INVALID_ARG_TYPE",function(e,t,r){let s;typeof t=="string"&&j0t(t,"not ")?(s="must not be",t=t.replace(/^not /,"")):s="must be";let a;if(G0t(e," argument"))a=`The ${e} ${s} ${K1e(t,"type")}`;else{let n=q0t(e,".")?"property":"argument";a=`The "${e}" ${n} ${s} ${K1e(t,"type")}`}return a+=`. Received type ${typeof r}`,a},TypeError);Yc("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");Yc("ERR_METHOD_NOT_IMPLEMENTED",function(e){return"The "+e+" method is not implemented"});Yc("ERR_STREAM_PREMATURE_CLOSE","Premature close");Yc("ERR_STREAM_DESTROYED",function(e){return"Cannot call "+e+" after a stream was destroyed"});Yc("ERR_MULTIPLE_CALLBACK","Callback called multiple times");Yc("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");Yc("ERR_STREAM_WRITE_AFTER_END","write after end");Yc("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);Yc("ERR_UNKNOWN_ENCODING",function(e){return"Unknown encoding: "+e},TypeError);Yc("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");z1e.exports.codes=J1e});var aV=G((YXt,Z1e)=>{"use strict";var W0t=og().codes.ERR_INVALID_OPT_VALUE;function V0t(e,t,r){return e.highWaterMark!=null?e.highWaterMark:t?e[r]:null}function Y0t(e,t,r,s){var a=V0t(t,s,r);if(a!=null){if(!(isFinite(a)&&Math.floor(a)===a)||a<0){var n=s?r:"highWaterMark";throw new W0t(n,a)}return Math.floor(a)}return e.objectMode?16:16*1024}Z1e.exports={getHighWaterMark:Y0t}});var X1e=G((KXt,lV)=>{typeof Object.create=="function"?lV.exports=function(t,r){r&&(t.super_=r,t.prototype=Object.create(r.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:lV.exports=function(t,r){if(r){t.super_=r;var s=function(){};s.prototype=r.prototype,t.prototype=new s,t.prototype.constructor=t}}});var ag=G((JXt,uV)=>{try{if(cV=Ie("util"),typeof cV.inherits!="function")throw"";uV.exports=cV.inherits}catch{uV.exports=X1e()}var cV});var eBe=G((zXt,$1e)=>{$1e.exports=Ie("util").deprecate});var pV=G((ZXt,oBe)=>{"use strict";oBe.exports=Yi;function rBe(e){var t=this;this.next=null,this.entry=null,this.finish=function(){Igt(t,e)}}var vw;Yi.WritableState=XD;var K0t={deprecate:eBe()},nBe=nV(),eN=Ie("buffer").Buffer,J0t=global.Uint8Array||function(){};function z0t(e){return eN.from(e)}function Z0t(e){return eN.isBuffer(e)||e instanceof J0t}var AV=oV(),X0t=aV(),$0t=X0t.getHighWaterMark,lg=og().codes,egt=lg.ERR_INVALID_ARG_TYPE,tgt=lg.ERR_METHOD_NOT_IMPLEMENTED,rgt=lg.ERR_MULTIPLE_CALLBACK,ngt=lg.ERR_STREAM_CANNOT_PIPE,igt=lg.ERR_STREAM_DESTROYED,sgt=lg.ERR_STREAM_NULL_VALUES,ogt=lg.ERR_STREAM_WRITE_AFTER_END,agt=lg.ERR_UNKNOWN_ENCODING,Sw=AV.errorOrDestroy;ag()(Yi,nBe);function lgt(){}function XD(e,t,r){vw=vw||Jm(),e=e||{},typeof r!="boolean"&&(r=t instanceof vw),this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.writableObjectMode),this.highWaterMark=$0t(this,e,"writableHighWaterMark",r),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var s=e.decodeStrings===!1;this.decodeStrings=!s,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(a){ggt(t,a)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=e.emitClose!==!1,this.autoDestroy=!!e.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new rBe(this)}XD.prototype.getBuffer=function(){for(var t=this.bufferedRequest,r=[];t;)r.push(t),t=t.next;return r};(function(){try{Object.defineProperty(XD.prototype,"buffer",{get:K0t.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}})();var $F;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?($F=Function.prototype[Symbol.hasInstance],Object.defineProperty(Yi,Symbol.hasInstance,{value:function(t){return $F.call(this,t)?!0:this!==Yi?!1:t&&t._writableState instanceof XD}})):$F=function(t){return t instanceof this};function Yi(e){vw=vw||Jm();var t=this instanceof vw;if(!t&&!$F.call(Yi,this))return new Yi(e);this._writableState=new XD(e,this,t),this.writable=!0,e&&(typeof e.write=="function"&&(this._write=e.write),typeof e.writev=="function"&&(this._writev=e.writev),typeof e.destroy=="function"&&(this._destroy=e.destroy),typeof e.final=="function"&&(this._final=e.final)),nBe.call(this)}Yi.prototype.pipe=function(){Sw(this,new ngt)};function cgt(e,t){var r=new ogt;Sw(e,r),process.nextTick(t,r)}function ugt(e,t,r,s){var a;return r===null?a=new sgt:typeof r!="string"&&!t.objectMode&&(a=new egt("chunk",["string","Buffer"],r)),a?(Sw(e,a),process.nextTick(s,a),!1):!0}Yi.prototype.write=function(e,t,r){var s=this._writableState,a=!1,n=!s.objectMode&&Z0t(e);return n&&!eN.isBuffer(e)&&(e=z0t(e)),typeof t=="function"&&(r=t,t=null),n?t="buffer":t||(t=s.defaultEncoding),typeof r!="function"&&(r=lgt),s.ending?cgt(this,r):(n||ugt(this,s,e,r))&&(s.pendingcb++,a=Agt(this,s,n,e,t,r)),a};Yi.prototype.cork=function(){this._writableState.corked++};Yi.prototype.uncork=function(){var e=this._writableState;e.corked&&(e.corked--,!e.writing&&!e.corked&&!e.bufferProcessing&&e.bufferedRequest&&iBe(this,e))};Yi.prototype.setDefaultEncoding=function(t){if(typeof t=="string"&&(t=t.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((t+"").toLowerCase())>-1))throw new agt(t);return this._writableState.defaultEncoding=t,this};Object.defineProperty(Yi.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function fgt(e,t,r){return!e.objectMode&&e.decodeStrings!==!1&&typeof t=="string"&&(t=eN.from(t,r)),t}Object.defineProperty(Yi.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function Agt(e,t,r,s,a,n){if(!r){var c=fgt(t,s,a);s!==c&&(r=!0,a="buffer",s=c)}var f=t.objectMode?1:s.length;t.length+=f;var p=t.length{"use strict";var Cgt=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};lBe.exports=mA;var aBe=dV(),gV=pV();ag()(mA,aBe);for(hV=Cgt(gV.prototype),tN=0;tN{var nN=Ie("buffer"),sh=nN.Buffer;function cBe(e,t){for(var r in e)t[r]=e[r]}sh.from&&sh.alloc&&sh.allocUnsafe&&sh.allocUnsafeSlow?uBe.exports=nN:(cBe(nN,mV),mV.Buffer=Dw);function Dw(e,t,r){return sh(e,t,r)}cBe(sh,Dw);Dw.from=function(e,t,r){if(typeof e=="number")throw new TypeError("Argument must not be a number");return sh(e,t,r)};Dw.alloc=function(e,t,r){if(typeof e!="number")throw new TypeError("Argument must be a number");var s=sh(e);return t!==void 0?typeof r=="string"?s.fill(t,r):s.fill(t):s.fill(0),s};Dw.allocUnsafe=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return sh(e)};Dw.allocUnsafeSlow=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return nN.SlowBuffer(e)}});var IV=G(pBe=>{"use strict";var EV=fBe().Buffer,ABe=EV.isEncoding||function(e){switch(e=""+e,e&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function vgt(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}function Sgt(e){var t=vgt(e);if(typeof t!="string"&&(EV.isEncoding===ABe||!ABe(e)))throw new Error("Unknown encoding: "+e);return t||e}pBe.StringDecoder=$D;function $D(e){this.encoding=Sgt(e);var t;switch(this.encoding){case"utf16le":this.text=Qgt,this.end=Rgt,t=4;break;case"utf8":this.fillLast=Pgt,t=4;break;case"base64":this.text=Tgt,this.end=Fgt,t=3;break;default:this.write=Ngt,this.end=Ogt;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=EV.allocUnsafe(t)}$D.prototype.write=function(e){if(e.length===0)return"";var t,r;if(this.lastNeed){if(t=this.fillLast(e),t===void 0)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r>5===6?2:e>>4===14?3:e>>3===30?4:e>>6===2?-1:-2}function Dgt(e,t,r){var s=t.length-1;if(s=0?(a>0&&(e.lastNeed=a-1),a):--s=0?(a>0&&(e.lastNeed=a-2),a):--s=0?(a>0&&(a===2?a=0:e.lastNeed=a-3),a):0))}function bgt(e,t,r){if((t[0]&192)!==128)return e.lastNeed=0,"\uFFFD";if(e.lastNeed>1&&t.length>1){if((t[1]&192)!==128)return e.lastNeed=1,"\uFFFD";if(e.lastNeed>2&&t.length>2&&(t[2]&192)!==128)return e.lastNeed=2,"\uFFFD"}}function Pgt(e){var t=this.lastTotal-this.lastNeed,r=bgt(this,e,t);if(r!==void 0)return r;if(this.lastNeed<=e.length)return e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,t,0,e.length),this.lastNeed-=e.length}function xgt(e,t){var r=Dgt(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=r;var s=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,s),e.toString("utf8",t,s)}function kgt(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+"\uFFFD":t}function Qgt(e,t){if((e.length-t)%2===0){var r=e.toString("utf16le",t);if(r){var s=r.charCodeAt(r.length-1);if(s>=55296&&s<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function Rgt(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,r)}return t}function Tgt(e,t){var r=(e.length-t)%3;return r===0?e.toString("base64",t):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-r))}function Fgt(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function Ngt(e){return e.toString(this.encoding)}function Ogt(e){return e&&e.length?this.write(e):""}});var iN=G((e$t,dBe)=>{"use strict";var hBe=og().codes.ERR_STREAM_PREMATURE_CLOSE;function Lgt(e){var t=!1;return function(){if(!t){t=!0;for(var r=arguments.length,s=new Array(r),a=0;a{"use strict";var sN;function cg(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var _gt=iN(),ug=Symbol("lastResolve"),zm=Symbol("lastReject"),eb=Symbol("error"),oN=Symbol("ended"),Zm=Symbol("lastPromise"),CV=Symbol("handlePromise"),Xm=Symbol("stream");function fg(e,t){return{value:e,done:t}}function Hgt(e){var t=e[ug];if(t!==null){var r=e[Xm].read();r!==null&&(e[Zm]=null,e[ug]=null,e[zm]=null,t(fg(r,!1)))}}function jgt(e){process.nextTick(Hgt,e)}function Ggt(e,t){return function(r,s){e.then(function(){if(t[oN]){r(fg(void 0,!0));return}t[CV](r,s)},s)}}var qgt=Object.getPrototypeOf(function(){}),Wgt=Object.setPrototypeOf((sN={get stream(){return this[Xm]},next:function(){var t=this,r=this[eb];if(r!==null)return Promise.reject(r);if(this[oN])return Promise.resolve(fg(void 0,!0));if(this[Xm].destroyed)return new Promise(function(c,f){process.nextTick(function(){t[eb]?f(t[eb]):c(fg(void 0,!0))})});var s=this[Zm],a;if(s)a=new Promise(Ggt(s,this));else{var n=this[Xm].read();if(n!==null)return Promise.resolve(fg(n,!1));a=new Promise(this[CV])}return this[Zm]=a,a}},cg(sN,Symbol.asyncIterator,function(){return this}),cg(sN,"return",function(){var t=this;return new Promise(function(r,s){t[Xm].destroy(null,function(a){if(a){s(a);return}r(fg(void 0,!0))})})}),sN),qgt),Vgt=function(t){var r,s=Object.create(Wgt,(r={},cg(r,Xm,{value:t,writable:!0}),cg(r,ug,{value:null,writable:!0}),cg(r,zm,{value:null,writable:!0}),cg(r,eb,{value:null,writable:!0}),cg(r,oN,{value:t._readableState.endEmitted,writable:!0}),cg(r,CV,{value:function(n,c){var f=s[Xm].read();f?(s[Zm]=null,s[ug]=null,s[zm]=null,n(fg(f,!1))):(s[ug]=n,s[zm]=c)},writable:!0}),r));return s[Zm]=null,_gt(t,function(a){if(a&&a.code!=="ERR_STREAM_PREMATURE_CLOSE"){var n=s[zm];n!==null&&(s[Zm]=null,s[ug]=null,s[zm]=null,n(a)),s[eb]=a;return}var c=s[ug];c!==null&&(s[Zm]=null,s[ug]=null,s[zm]=null,c(fg(void 0,!0))),s[oN]=!0}),t.on("readable",jgt.bind(null,s)),s};mBe.exports=Vgt});var wBe=G((r$t,CBe)=>{"use strict";function EBe(e,t,r,s,a,n,c){try{var f=e[n](c),p=f.value}catch(h){r(h);return}f.done?t(p):Promise.resolve(p).then(s,a)}function Ygt(e){return function(){var t=this,r=arguments;return new Promise(function(s,a){var n=e.apply(t,r);function c(p){EBe(n,s,a,c,f,"next",p)}function f(p){EBe(n,s,a,c,f,"throw",p)}c(void 0)})}}function IBe(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),r.push.apply(r,s)}return r}function Kgt(e){for(var t=1;t{"use strict";RBe.exports=kn;var bw;kn.ReadableState=DBe;var n$t=Ie("events").EventEmitter,SBe=function(t,r){return t.listeners(r).length},rb=nV(),aN=Ie("buffer").Buffer,Xgt=global.Uint8Array||function(){};function $gt(e){return aN.from(e)}function edt(e){return aN.isBuffer(e)||e instanceof Xgt}var wV=Ie("util"),un;wV&&wV.debuglog?un=wV.debuglog("stream"):un=function(){};var tdt=W1e(),xV=oV(),rdt=aV(),ndt=rdt.getHighWaterMark,lN=og().codes,idt=lN.ERR_INVALID_ARG_TYPE,sdt=lN.ERR_STREAM_PUSH_AFTER_EOF,odt=lN.ERR_METHOD_NOT_IMPLEMENTED,adt=lN.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,Pw,BV,vV;ag()(kn,rb);var tb=xV.errorOrDestroy,SV=["error","close","destroy","pause","resume"];function ldt(e,t,r){if(typeof e.prependListener=="function")return e.prependListener(t,r);!e._events||!e._events[t]?e.on(t,r):Array.isArray(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]}function DBe(e,t,r){bw=bw||Jm(),e=e||{},typeof r!="boolean"&&(r=t instanceof bw),this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.readableObjectMode),this.highWaterMark=ndt(this,e,"readableHighWaterMark",r),this.buffer=new tdt,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=e.emitClose!==!1,this.autoDestroy=!!e.autoDestroy,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(Pw||(Pw=IV().StringDecoder),this.decoder=new Pw(e.encoding),this.encoding=e.encoding)}function kn(e){if(bw=bw||Jm(),!(this instanceof kn))return new kn(e);var t=this instanceof bw;this._readableState=new DBe(e,this,t),this.readable=!0,e&&(typeof e.read=="function"&&(this._read=e.read),typeof e.destroy=="function"&&(this._destroy=e.destroy)),rb.call(this)}Object.defineProperty(kn.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(t){this._readableState&&(this._readableState.destroyed=t)}});kn.prototype.destroy=xV.destroy;kn.prototype._undestroy=xV.undestroy;kn.prototype._destroy=function(e,t){t(e)};kn.prototype.push=function(e,t){var r=this._readableState,s;return r.objectMode?s=!0:typeof e=="string"&&(t=t||r.defaultEncoding,t!==r.encoding&&(e=aN.from(e,t),t=""),s=!0),bBe(this,e,t,!1,s)};kn.prototype.unshift=function(e){return bBe(this,e,null,!0,!1)};function bBe(e,t,r,s,a){un("readableAddChunk",t);var n=e._readableState;if(t===null)n.reading=!1,fdt(e,n);else{var c;if(a||(c=cdt(n,t)),c)tb(e,c);else if(n.objectMode||t&&t.length>0)if(typeof t!="string"&&!n.objectMode&&Object.getPrototypeOf(t)!==aN.prototype&&(t=$gt(t)),s)n.endEmitted?tb(e,new adt):DV(e,n,t,!0);else if(n.ended)tb(e,new sdt);else{if(n.destroyed)return!1;n.reading=!1,n.decoder&&!r?(t=n.decoder.write(t),n.objectMode||t.length!==0?DV(e,n,t,!1):PV(e,n)):DV(e,n,t,!1)}else s||(n.reading=!1,PV(e,n))}return!n.ended&&(n.length=BBe?e=BBe:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}function vBe(e,t){return e<=0||t.length===0&&t.ended?0:t.objectMode?1:e!==e?t.flowing&&t.length?t.buffer.head.data.length:t.length:(e>t.highWaterMark&&(t.highWaterMark=udt(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}kn.prototype.read=function(e){un("read",e),e=parseInt(e,10);var t=this._readableState,r=e;if(e!==0&&(t.emittedReadable=!1),e===0&&t.needReadable&&((t.highWaterMark!==0?t.length>=t.highWaterMark:t.length>0)||t.ended))return un("read: emitReadable",t.length,t.ended),t.length===0&&t.ended?bV(this):cN(this),null;if(e=vBe(e,t),e===0&&t.ended)return t.length===0&&bV(this),null;var s=t.needReadable;un("need readable",s),(t.length===0||t.length-e0?a=kBe(e,t):a=null,a===null?(t.needReadable=t.length<=t.highWaterMark,e=0):(t.length-=e,t.awaitDrain=0),t.length===0&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&bV(this)),a!==null&&this.emit("data",a),a};function fdt(e,t){if(un("onEofChunk"),!t.ended){if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,t.sync?cN(e):(t.needReadable=!1,t.emittedReadable||(t.emittedReadable=!0,PBe(e)))}}function cN(e){var t=e._readableState;un("emitReadable",t.needReadable,t.emittedReadable),t.needReadable=!1,t.emittedReadable||(un("emitReadable",t.flowing),t.emittedReadable=!0,process.nextTick(PBe,e))}function PBe(e){var t=e._readableState;un("emitReadable_",t.destroyed,t.length,t.ended),!t.destroyed&&(t.length||t.ended)&&(e.emit("readable"),t.emittedReadable=!1),t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark,kV(e)}function PV(e,t){t.readingMore||(t.readingMore=!0,process.nextTick(Adt,e,t))}function Adt(e,t){for(;!t.reading&&!t.ended&&(t.length1&&QBe(s.pipes,e)!==-1)&&!h&&(un("false write response, pause",s.awaitDrain),s.awaitDrain++),r.pause())}function S(O){un("onerror",O),T(),e.removeListener("error",S),SBe(e,"error")===0&&tb(e,O)}ldt(e,"error",S);function x(){e.removeListener("finish",I),T()}e.once("close",x);function I(){un("onfinish"),e.removeListener("close",x),T()}e.once("finish",I);function T(){un("unpipe"),r.unpipe(e)}return e.emit("pipe",r),s.flowing||(un("pipe resume"),r.resume()),e};function pdt(e){return function(){var r=e._readableState;un("pipeOnDrain",r.awaitDrain),r.awaitDrain&&r.awaitDrain--,r.awaitDrain===0&&SBe(e,"data")&&(r.flowing=!0,kV(e))}}kn.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(t.pipesCount===0)return this;if(t.pipesCount===1)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,r),this);if(!e){var s=t.pipes,a=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var n=0;n0,s.flowing!==!1&&this.resume()):e==="readable"&&!s.endEmitted&&!s.readableListening&&(s.readableListening=s.needReadable=!0,s.flowing=!1,s.emittedReadable=!1,un("on readable",s.length,s.reading),s.length?cN(this):s.reading||process.nextTick(hdt,this)),r};kn.prototype.addListener=kn.prototype.on;kn.prototype.removeListener=function(e,t){var r=rb.prototype.removeListener.call(this,e,t);return e==="readable"&&process.nextTick(xBe,this),r};kn.prototype.removeAllListeners=function(e){var t=rb.prototype.removeAllListeners.apply(this,arguments);return(e==="readable"||e===void 0)&&process.nextTick(xBe,this),t};function xBe(e){var t=e._readableState;t.readableListening=e.listenerCount("readable")>0,t.resumeScheduled&&!t.paused?t.flowing=!0:e.listenerCount("data")>0&&e.resume()}function hdt(e){un("readable nexttick read 0"),e.read(0)}kn.prototype.resume=function(){var e=this._readableState;return e.flowing||(un("resume"),e.flowing=!e.readableListening,gdt(this,e)),e.paused=!1,this};function gdt(e,t){t.resumeScheduled||(t.resumeScheduled=!0,process.nextTick(ddt,e,t))}function ddt(e,t){un("resume",t.reading),t.reading||e.read(0),t.resumeScheduled=!1,e.emit("resume"),kV(e),t.flowing&&!t.reading&&e.read(0)}kn.prototype.pause=function(){return un("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(un("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function kV(e){var t=e._readableState;for(un("flow",t.flowing);t.flowing&&e.read()!==null;);}kn.prototype.wrap=function(e){var t=this,r=this._readableState,s=!1;e.on("end",function(){if(un("wrapped end"),r.decoder&&!r.ended){var c=r.decoder.end();c&&c.length&&t.push(c)}t.push(null)}),e.on("data",function(c){if(un("wrapped data"),r.decoder&&(c=r.decoder.write(c)),!(r.objectMode&&c==null)&&!(!r.objectMode&&(!c||!c.length))){var f=t.push(c);f||(s=!0,e.pause())}});for(var a in e)this[a]===void 0&&typeof e[a]=="function"&&(this[a]=function(f){return function(){return e[f].apply(e,arguments)}}(a));for(var n=0;n=t.length?(t.decoder?r=t.buffer.join(""):t.buffer.length===1?r=t.buffer.first():r=t.buffer.concat(t.length),t.buffer.clear()):r=t.buffer.consume(e,t.decoder),r}function bV(e){var t=e._readableState;un("endReadable",t.endEmitted),t.endEmitted||(t.ended=!0,process.nextTick(mdt,t,e))}function mdt(e,t){if(un("endReadableNT",e.endEmitted,e.length),!e.endEmitted&&e.length===0&&(e.endEmitted=!0,t.readable=!1,t.emit("end"),e.autoDestroy)){var r=t._writableState;(!r||r.autoDestroy&&r.finished)&&t.destroy()}}typeof Symbol=="function"&&(kn.from=function(e,t){return vV===void 0&&(vV=wBe()),vV(kn,e,t)});function QBe(e,t){for(var r=0,s=e.length;r{"use strict";FBe.exports=oh;var uN=og().codes,ydt=uN.ERR_METHOD_NOT_IMPLEMENTED,Edt=uN.ERR_MULTIPLE_CALLBACK,Idt=uN.ERR_TRANSFORM_ALREADY_TRANSFORMING,Cdt=uN.ERR_TRANSFORM_WITH_LENGTH_0,fN=Jm();ag()(oh,fN);function wdt(e,t){var r=this._transformState;r.transforming=!1;var s=r.writecb;if(s===null)return this.emit("error",new Edt);r.writechunk=null,r.writecb=null,t!=null&&this.push(t),s(e);var a=this._readableState;a.reading=!1,(a.needReadable||a.length{"use strict";OBe.exports=nb;var NBe=QV();ag()(nb,NBe);function nb(e){if(!(this instanceof nb))return new nb(e);NBe.call(this,e)}nb.prototype._transform=function(e,t,r){r(null,e)}});var jBe=G((a$t,HBe)=>{"use strict";var RV;function vdt(e){var t=!1;return function(){t||(t=!0,e.apply(void 0,arguments))}}var _Be=og().codes,Sdt=_Be.ERR_MISSING_ARGS,Ddt=_Be.ERR_STREAM_DESTROYED;function MBe(e){if(e)throw e}function bdt(e){return e.setHeader&&typeof e.abort=="function"}function Pdt(e,t,r,s){s=vdt(s);var a=!1;e.on("close",function(){a=!0}),RV===void 0&&(RV=iN()),RV(e,{readable:t,writable:r},function(c){if(c)return s(c);a=!0,s()});var n=!1;return function(c){if(!a&&!n){if(n=!0,bdt(e))return e.abort();if(typeof e.destroy=="function")return e.destroy();s(c||new Ddt("pipe"))}}}function UBe(e){e()}function xdt(e,t){return e.pipe(t)}function kdt(e){return!e.length||typeof e[e.length-1]!="function"?MBe:e.pop()}function Qdt(){for(var e=arguments.length,t=new Array(e),r=0;r0;return Pdt(c,p,h,function(E){a||(a=E),E&&n.forEach(UBe),!p&&(n.forEach(UBe),s(a))})});return t.reduce(xdt)}HBe.exports=Qdt});var xw=G((Kc,sb)=>{var ib=Ie("stream");process.env.READABLE_STREAM==="disable"&&ib?(sb.exports=ib.Readable,Object.assign(sb.exports,ib),sb.exports.Stream=ib):(Kc=sb.exports=dV(),Kc.Stream=ib||Kc,Kc.Readable=Kc,Kc.Writable=pV(),Kc.Duplex=Jm(),Kc.Transform=QV(),Kc.PassThrough=LBe(),Kc.finished=iN(),Kc.pipeline=jBe())});var WBe=G((l$t,qBe)=>{"use strict";var{Buffer:ff}=Ie("buffer"),GBe=Symbol.for("BufferList");function wi(e){if(!(this instanceof wi))return new wi(e);wi._init.call(this,e)}wi._init=function(t){Object.defineProperty(this,GBe,{value:!0}),this._bufs=[],this.length=0,t&&this.append(t)};wi.prototype._new=function(t){return new wi(t)};wi.prototype._offset=function(t){if(t===0)return[0,0];let r=0;for(let s=0;sthis.length||t<0)return;let r=this._offset(t);return this._bufs[r[0]][r[1]]};wi.prototype.slice=function(t,r){return typeof t=="number"&&t<0&&(t+=this.length),typeof r=="number"&&r<0&&(r+=this.length),this.copy(null,0,t,r)};wi.prototype.copy=function(t,r,s,a){if((typeof s!="number"||s<0)&&(s=0),(typeof a!="number"||a>this.length)&&(a=this.length),s>=this.length||a<=0)return t||ff.alloc(0);let n=!!t,c=this._offset(s),f=a-s,p=f,h=n&&r||0,E=c[1];if(s===0&&a===this.length){if(!n)return this._bufs.length===1?this._bufs[0]:ff.concat(this._bufs,this.length);for(let C=0;CS)this._bufs[C].copy(t,h,E),h+=S;else{this._bufs[C].copy(t,h,E,E+p),h+=S;break}p-=S,E&&(E=0)}return t.length>h?t.slice(0,h):t};wi.prototype.shallowSlice=function(t,r){if(t=t||0,r=typeof r!="number"?this.length:r,t<0&&(t+=this.length),r<0&&(r+=this.length),t===r)return this._new();let s=this._offset(t),a=this._offset(r),n=this._bufs.slice(s[0],a[0]+1);return a[1]===0?n.pop():n[n.length-1]=n[n.length-1].slice(0,a[1]),s[1]!==0&&(n[0]=n[0].slice(s[1])),this._new(n)};wi.prototype.toString=function(t,r,s){return this.slice(r,s).toString(t)};wi.prototype.consume=function(t){if(t=Math.trunc(t),Number.isNaN(t)||t<=0)return this;for(;this._bufs.length;)if(t>=this._bufs[0].length)t-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(t),this.length-=t;break}return this};wi.prototype.duplicate=function(){let t=this._new();for(let r=0;rthis.length?this.length:t;let s=this._offset(t),a=s[0],n=s[1];for(;a=e.length){let p=c.indexOf(e,n);if(p!==-1)return this._reverseOffset([a,p]);n=c.length-e.length+1}else{let p=this._reverseOffset([a,n]);if(this._match(p,e))return p;n++}n=0}return-1};wi.prototype._match=function(e,t){if(this.length-e{"use strict";var TV=xw().Duplex,Rdt=ag(),ob=WBe();function oa(e){if(!(this instanceof oa))return new oa(e);if(typeof e=="function"){this._callback=e;let t=function(s){this._callback&&(this._callback(s),this._callback=null)}.bind(this);this.on("pipe",function(s){s.on("error",t)}),this.on("unpipe",function(s){s.removeListener("error",t)}),e=null}ob._init.call(this,e),TV.call(this)}Rdt(oa,TV);Object.assign(oa.prototype,ob.prototype);oa.prototype._new=function(t){return new oa(t)};oa.prototype._write=function(t,r,s){this._appendBuffer(t),typeof s=="function"&&s()};oa.prototype._read=function(t){if(!this.length)return this.push(null);t=Math.min(t,this.length),this.push(this.slice(0,t)),this.consume(t)};oa.prototype.end=function(t){TV.prototype.end.call(this,t),this._callback&&(this._callback(null,this.slice()),this._callback=null)};oa.prototype._destroy=function(t,r){this._bufs.length=0,this.length=0,r(t)};oa.prototype._isBufferList=function(t){return t instanceof oa||t instanceof ob||oa.isBufferList(t)};oa.isBufferList=ob.isBufferList;AN.exports=oa;AN.exports.BufferListStream=oa;AN.exports.BufferList=ob});var OV=G(Qw=>{var Tdt=Buffer.alloc,Fdt="0000000000000000000",Ndt="7777777777777777777",YBe=48,KBe=Buffer.from("ustar\0","binary"),Odt=Buffer.from("00","binary"),Ldt=Buffer.from("ustar ","binary"),Mdt=Buffer.from(" \0","binary"),Udt=parseInt("7777",8),ab=257,NV=263,_dt=function(e,t,r){return typeof e!="number"?r:(e=~~e,e>=t?t:e>=0||(e+=t,e>=0)?e:0)},Hdt=function(e){switch(e){case 0:return"file";case 1:return"link";case 2:return"symlink";case 3:return"character-device";case 4:return"block-device";case 5:return"directory";case 6:return"fifo";case 7:return"contiguous-file";case 72:return"pax-header";case 55:return"pax-global-header";case 27:return"gnu-long-link-path";case 28:case 30:return"gnu-long-path"}return null},jdt=function(e){switch(e){case"file":return 0;case"link":return 1;case"symlink":return 2;case"character-device":return 3;case"block-device":return 4;case"directory":return 5;case"fifo":return 6;case"contiguous-file":return 7;case"pax-header":return 72}return 0},JBe=function(e,t,r,s){for(;rt?Ndt.slice(0,t)+" ":Fdt.slice(0,t-e.length)+e+" "};function Gdt(e){var t;if(e[0]===128)t=!0;else if(e[0]===255)t=!1;else return null;for(var r=[],s=e.length-1;s>0;s--){var a=e[s];t?r.push(a):r.push(255-a)}var n=0,c=r.length;for(s=0;s=Math.pow(10,r)&&r++,t+r+e};Qw.decodeLongPath=function(e,t){return kw(e,0,e.length,t)};Qw.encodePax=function(e){var t="";e.name&&(t+=FV(" path="+e.name+` -`)),e.linkname&&(t+=FV(" linkpath="+e.linkname+` -`));var r=e.pax;if(r)for(var s in r)t+=FV(" "+s+"="+r[s]+` -`);return Buffer.from(t)};Qw.decodePax=function(e){for(var t={};e.length;){for(var r=0;r100;){var a=r.indexOf("/");if(a===-1)return null;s+=s?"/"+r.slice(0,a):r.slice(0,a),r=r.slice(a+1)}return Buffer.byteLength(r)>100||Buffer.byteLength(s)>155||e.linkname&&Buffer.byteLength(e.linkname)>100?null:(t.write(r),t.write(Ag(e.mode&Udt,6),100),t.write(Ag(e.uid,6),108),t.write(Ag(e.gid,6),116),t.write(Ag(e.size,11),124),t.write(Ag(e.mtime.getTime()/1e3|0,11),136),t[156]=YBe+jdt(e.type),e.linkname&&t.write(e.linkname,157),KBe.copy(t,ab),Odt.copy(t,NV),e.uname&&t.write(e.uname,265),e.gname&&t.write(e.gname,297),t.write(Ag(e.devmajor||0,6),329),t.write(Ag(e.devminor||0,6),337),s&&t.write(s,345),t.write(Ag(zBe(t),6),148),t)};Qw.decode=function(e,t,r){var s=e[156]===0?0:e[156]-YBe,a=kw(e,0,100,t),n=pg(e,100,8),c=pg(e,108,8),f=pg(e,116,8),p=pg(e,124,12),h=pg(e,136,12),E=Hdt(s),C=e[157]===0?null:kw(e,157,100,t),S=kw(e,265,32),x=kw(e,297,32),I=pg(e,329,8),T=pg(e,337,8),O=zBe(e);if(O===8*32)return null;if(O!==pg(e,148,8))throw new Error("Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?");if(KBe.compare(e,ab,ab+6)===0)e[345]&&(a=kw(e,345,155,t)+"/"+a);else if(!(Ldt.compare(e,ab,ab+6)===0&&Mdt.compare(e,NV,NV+2)===0)){if(!r)throw new Error("Invalid tar header: unknown format.")}return s===0&&a&&a[a.length-1]==="/"&&(s=5),{name:a,mode:n,uid:c,gid:f,size:p,mtime:new Date(1e3*h),type:E,linkname:C,uname:S,gname:x,devmajor:I,devminor:T}}});var n2e=G((f$t,r2e)=>{var XBe=Ie("util"),qdt=VBe(),lb=OV(),$Be=xw().Writable,e2e=xw().PassThrough,t2e=function(){},ZBe=function(e){return e&=511,e&&512-e},Wdt=function(e,t){var r=new pN(e,t);return r.end(),r},Vdt=function(e,t){return t.path&&(e.name=t.path),t.linkpath&&(e.linkname=t.linkpath),t.size&&(e.size=parseInt(t.size,10)),e.pax=t,e},pN=function(e,t){this._parent=e,this.offset=t,e2e.call(this,{autoDestroy:!1})};XBe.inherits(pN,e2e);pN.prototype.destroy=function(e){this._parent.destroy(e)};var ah=function(e){if(!(this instanceof ah))return new ah(e);$Be.call(this,e),e=e||{},this._offset=0,this._buffer=qdt(),this._missing=0,this._partial=!1,this._onparse=t2e,this._header=null,this._stream=null,this._overflow=null,this._cb=null,this._locked=!1,this._destroyed=!1,this._pax=null,this._paxGlobal=null,this._gnuLongPath=null,this._gnuLongLinkPath=null;var t=this,r=t._buffer,s=function(){t._continue()},a=function(S){if(t._locked=!1,S)return t.destroy(S);t._stream||s()},n=function(){t._stream=null;var S=ZBe(t._header.size);S?t._parse(S,c):t._parse(512,C),t._locked||s()},c=function(){t._buffer.consume(ZBe(t._header.size)),t._parse(512,C),s()},f=function(){var S=t._header.size;t._paxGlobal=lb.decodePax(r.slice(0,S)),r.consume(S),n()},p=function(){var S=t._header.size;t._pax=lb.decodePax(r.slice(0,S)),t._paxGlobal&&(t._pax=Object.assign({},t._paxGlobal,t._pax)),r.consume(S),n()},h=function(){var S=t._header.size;this._gnuLongPath=lb.decodeLongPath(r.slice(0,S),e.filenameEncoding),r.consume(S),n()},E=function(){var S=t._header.size;this._gnuLongLinkPath=lb.decodeLongPath(r.slice(0,S),e.filenameEncoding),r.consume(S),n()},C=function(){var S=t._offset,x;try{x=t._header=lb.decode(r.slice(0,512),e.filenameEncoding,e.allowUnknownFormat)}catch(I){t.emit("error",I)}if(r.consume(512),!x){t._parse(512,C),s();return}if(x.type==="gnu-long-path"){t._parse(x.size,h),s();return}if(x.type==="gnu-long-link-path"){t._parse(x.size,E),s();return}if(x.type==="pax-global-header"){t._parse(x.size,f),s();return}if(x.type==="pax-header"){t._parse(x.size,p),s();return}if(t._gnuLongPath&&(x.name=t._gnuLongPath,t._gnuLongPath=null),t._gnuLongLinkPath&&(x.linkname=t._gnuLongLinkPath,t._gnuLongLinkPath=null),t._pax&&(t._header=x=Vdt(x,t._pax),t._pax=null),t._locked=!0,!x.size||x.type==="directory"){t._parse(512,C),t.emit("entry",x,Wdt(t,S),a);return}t._stream=new pN(t,S),t.emit("entry",x,t._stream,a),t._parse(x.size,n),s()};this._onheader=C,this._parse(512,C)};XBe.inherits(ah,$Be);ah.prototype.destroy=function(e){this._destroyed||(this._destroyed=!0,e&&this.emit("error",e),this.emit("close"),this._stream&&this._stream.emit("close"))};ah.prototype._parse=function(e,t){this._destroyed||(this._offset+=e,this._missing=e,t===this._onheader&&(this._partial=!1),this._onparse=t)};ah.prototype._continue=function(){if(!this._destroyed){var e=this._cb;this._cb=t2e,this._overflow?this._write(this._overflow,void 0,e):e()}};ah.prototype._write=function(e,t,r){if(!this._destroyed){var s=this._stream,a=this._buffer,n=this._missing;if(e.length&&(this._partial=!0),e.lengthn&&(c=e.slice(n),e=e.slice(0,n)),s?s.end(e):a.append(e),this._overflow=c,this._onparse()}};ah.prototype._final=function(e){if(this._partial)return this.destroy(new Error("Unexpected end of data"));e()};r2e.exports=ah});var s2e=G((A$t,i2e)=>{i2e.exports=Ie("fs").constants||Ie("constants")});var u2e=G((p$t,c2e)=>{var Rw=s2e(),o2e=Y8(),gN=ag(),Ydt=Buffer.alloc,a2e=xw().Readable,Tw=xw().Writable,Kdt=Ie("string_decoder").StringDecoder,hN=OV(),Jdt=parseInt("755",8),zdt=parseInt("644",8),l2e=Ydt(1024),MV=function(){},LV=function(e,t){t&=511,t&&e.push(l2e.slice(0,512-t))};function Zdt(e){switch(e&Rw.S_IFMT){case Rw.S_IFBLK:return"block-device";case Rw.S_IFCHR:return"character-device";case Rw.S_IFDIR:return"directory";case Rw.S_IFIFO:return"fifo";case Rw.S_IFLNK:return"symlink"}return"file"}var dN=function(e){Tw.call(this),this.written=0,this._to=e,this._destroyed=!1};gN(dN,Tw);dN.prototype._write=function(e,t,r){if(this.written+=e.length,this._to.push(e))return r();this._to._drain=r};dN.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var mN=function(){Tw.call(this),this.linkname="",this._decoder=new Kdt("utf-8"),this._destroyed=!1};gN(mN,Tw);mN.prototype._write=function(e,t,r){this.linkname+=this._decoder.write(e),r()};mN.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var ub=function(){Tw.call(this),this._destroyed=!1};gN(ub,Tw);ub.prototype._write=function(e,t,r){r(new Error("No body allowed for this entry"))};ub.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var yA=function(e){if(!(this instanceof yA))return new yA(e);a2e.call(this,e),this._drain=MV,this._finalized=!1,this._finalizing=!1,this._destroyed=!1,this._stream=null};gN(yA,a2e);yA.prototype.entry=function(e,t,r){if(this._stream)throw new Error("already piping an entry");if(!(this._finalized||this._destroyed)){typeof t=="function"&&(r=t,t=null),r||(r=MV);var s=this;if((!e.size||e.type==="symlink")&&(e.size=0),e.type||(e.type=Zdt(e.mode)),e.mode||(e.mode=e.type==="directory"?Jdt:zdt),e.uid||(e.uid=0),e.gid||(e.gid=0),e.mtime||(e.mtime=new Date),typeof t=="string"&&(t=Buffer.from(t)),Buffer.isBuffer(t)){e.size=t.length,this._encode(e);var a=this.push(t);return LV(s,e.size),a?process.nextTick(r):this._drain=r,new ub}if(e.type==="symlink"&&!e.linkname){var n=new mN;return o2e(n,function(f){if(f)return s.destroy(),r(f);e.linkname=n.linkname,s._encode(e),r()}),n}if(this._encode(e),e.type!=="file"&&e.type!=="contiguous-file")return process.nextTick(r),new ub;var c=new dN(this);return this._stream=c,o2e(c,function(f){if(s._stream=null,f)return s.destroy(),r(f);if(c.written!==e.size)return s.destroy(),r(new Error("size mismatch"));LV(s,e.size),s._finalizing&&s.finalize(),r()}),c}};yA.prototype.finalize=function(){if(this._stream){this._finalizing=!0;return}this._finalized||(this._finalized=!0,this.push(l2e),this.push(null))};yA.prototype.destroy=function(e){this._destroyed||(this._destroyed=!0,e&&this.emit("error",e),this.emit("close"),this._stream&&this._stream.destroy&&this._stream.destroy())};yA.prototype._encode=function(e){if(!e.pax){var t=hN.encode(e);if(t){this.push(t);return}}this._encodePax(e)};yA.prototype._encodePax=function(e){var t=hN.encodePax({name:e.name,linkname:e.linkname,pax:e.pax}),r={name:"PaxHeader",mode:e.mode,uid:e.uid,gid:e.gid,size:t.length,mtime:e.mtime,type:"pax-header",linkname:e.linkname&&"PaxHeader",uname:e.uname,gname:e.gname,devmajor:e.devmajor,devminor:e.devminor};this.push(hN.encode(r)),this.push(t),LV(this,t.length),r.size=e.size,r.type=e.type,this.push(hN.encode(r))};yA.prototype._read=function(e){var t=this._drain;this._drain=MV,t()};c2e.exports=yA});var f2e=G(UV=>{UV.extract=n2e();UV.pack=u2e()});var v2e=G(Ma=>{"use strict";var umt=Ma&&Ma.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Ma,"__esModule",{value:!0});Ma.Minipass=Ma.isWritable=Ma.isReadable=Ma.isStream=void 0;var E2e=typeof process=="object"&&process?process:{stdout:null,stderr:null},ZV=Ie("node:events"),B2e=umt(Ie("node:stream")),fmt=Ie("node:string_decoder"),Amt=e=>!!e&&typeof e=="object"&&(e instanceof DN||e instanceof B2e.default||(0,Ma.isReadable)(e)||(0,Ma.isWritable)(e));Ma.isStream=Amt;var pmt=e=>!!e&&typeof e=="object"&&e instanceof ZV.EventEmitter&&typeof e.pipe=="function"&&e.pipe!==B2e.default.Writable.prototype.pipe;Ma.isReadable=pmt;var hmt=e=>!!e&&typeof e=="object"&&e instanceof ZV.EventEmitter&&typeof e.write=="function"&&typeof e.end=="function";Ma.isWritable=hmt;var lh=Symbol("EOF"),ch=Symbol("maybeEmitEnd"),hg=Symbol("emittedEnd"),IN=Symbol("emittingEnd"),fb=Symbol("emittedError"),CN=Symbol("closed"),I2e=Symbol("read"),wN=Symbol("flush"),C2e=Symbol("flushChunk"),Af=Symbol("encoding"),Nw=Symbol("decoder"),to=Symbol("flowing"),Ab=Symbol("paused"),Ow=Symbol("resume"),ro=Symbol("buffer"),La=Symbol("pipes"),no=Symbol("bufferLength"),WV=Symbol("bufferPush"),BN=Symbol("bufferShift"),aa=Symbol("objectMode"),rs=Symbol("destroyed"),VV=Symbol("error"),YV=Symbol("emitData"),w2e=Symbol("emitEnd"),KV=Symbol("emitEnd2"),IA=Symbol("async"),JV=Symbol("abort"),vN=Symbol("aborted"),pb=Symbol("signal"),$m=Symbol("dataListeners"),nc=Symbol("discarded"),hb=e=>Promise.resolve().then(e),gmt=e=>e(),dmt=e=>e==="end"||e==="finish"||e==="prefinish",mmt=e=>e instanceof ArrayBuffer||!!e&&typeof e=="object"&&e.constructor&&e.constructor.name==="ArrayBuffer"&&e.byteLength>=0,ymt=e=>!Buffer.isBuffer(e)&&ArrayBuffer.isView(e),SN=class{src;dest;opts;ondrain;constructor(t,r,s){this.src=t,this.dest=r,this.opts=s,this.ondrain=()=>t[Ow](),this.dest.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(t){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},zV=class extends SN{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(t,r,s){super(t,r,s),this.proxyErrors=a=>r.emit("error",a),t.on("error",this.proxyErrors)}},Emt=e=>!!e.objectMode,Imt=e=>!e.objectMode&&!!e.encoding&&e.encoding!=="buffer",DN=class extends ZV.EventEmitter{[to]=!1;[Ab]=!1;[La]=[];[ro]=[];[aa];[Af];[IA];[Nw];[lh]=!1;[hg]=!1;[IN]=!1;[CN]=!1;[fb]=null;[no]=0;[rs]=!1;[pb];[vN]=!1;[$m]=0;[nc]=!1;writable=!0;readable=!0;constructor(...t){let r=t[0]||{};if(super(),r.objectMode&&typeof r.encoding=="string")throw new TypeError("Encoding and objectMode may not be used together");Emt(r)?(this[aa]=!0,this[Af]=null):Imt(r)?(this[Af]=r.encoding,this[aa]=!1):(this[aa]=!1,this[Af]=null),this[IA]=!!r.async,this[Nw]=this[Af]?new fmt.StringDecoder(this[Af]):null,r&&r.debugExposeBuffer===!0&&Object.defineProperty(this,"buffer",{get:()=>this[ro]}),r&&r.debugExposePipes===!0&&Object.defineProperty(this,"pipes",{get:()=>this[La]});let{signal:s}=r;s&&(this[pb]=s,s.aborted?this[JV]():s.addEventListener("abort",()=>this[JV]()))}get bufferLength(){return this[no]}get encoding(){return this[Af]}set encoding(t){throw new Error("Encoding must be set at instantiation time")}setEncoding(t){throw new Error("Encoding must be set at instantiation time")}get objectMode(){return this[aa]}set objectMode(t){throw new Error("objectMode must be set at instantiation time")}get async(){return this[IA]}set async(t){this[IA]=this[IA]||!!t}[JV](){this[vN]=!0,this.emit("abort",this[pb]?.reason),this.destroy(this[pb]?.reason)}get aborted(){return this[vN]}set aborted(t){}write(t,r,s){if(this[vN])return!1;if(this[lh])throw new Error("write after end");if(this[rs])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;typeof r=="function"&&(s=r,r="utf8"),r||(r="utf8");let a=this[IA]?hb:gmt;if(!this[aa]&&!Buffer.isBuffer(t)){if(ymt(t))t=Buffer.from(t.buffer,t.byteOffset,t.byteLength);else if(mmt(t))t=Buffer.from(t);else if(typeof t!="string")throw new Error("Non-contiguous data written to non-objectMode stream")}return this[aa]?(this[to]&&this[no]!==0&&this[wN](!0),this[to]?this.emit("data",t):this[WV](t),this[no]!==0&&this.emit("readable"),s&&a(s),this[to]):t.length?(typeof t=="string"&&!(r===this[Af]&&!this[Nw]?.lastNeed)&&(t=Buffer.from(t,r)),Buffer.isBuffer(t)&&this[Af]&&(t=this[Nw].write(t)),this[to]&&this[no]!==0&&this[wN](!0),this[to]?this.emit("data",t):this[WV](t),this[no]!==0&&this.emit("readable"),s&&a(s),this[to]):(this[no]!==0&&this.emit("readable"),s&&a(s),this[to])}read(t){if(this[rs])return null;if(this[nc]=!1,this[no]===0||t===0||t&&t>this[no])return this[ch](),null;this[aa]&&(t=null),this[ro].length>1&&!this[aa]&&(this[ro]=[this[Af]?this[ro].join(""):Buffer.concat(this[ro],this[no])]);let r=this[I2e](t||null,this[ro][0]);return this[ch](),r}[I2e](t,r){if(this[aa])this[BN]();else{let s=r;t===s.length||t===null?this[BN]():typeof s=="string"?(this[ro][0]=s.slice(t),r=s.slice(0,t),this[no]-=t):(this[ro][0]=s.subarray(t),r=s.subarray(0,t),this[no]-=t)}return this.emit("data",r),!this[ro].length&&!this[lh]&&this.emit("drain"),r}end(t,r,s){return typeof t=="function"&&(s=t,t=void 0),typeof r=="function"&&(s=r,r="utf8"),t!==void 0&&this.write(t,r),s&&this.once("end",s),this[lh]=!0,this.writable=!1,(this[to]||!this[Ab])&&this[ch](),this}[Ow](){this[rs]||(!this[$m]&&!this[La].length&&(this[nc]=!0),this[Ab]=!1,this[to]=!0,this.emit("resume"),this[ro].length?this[wN]():this[lh]?this[ch]():this.emit("drain"))}resume(){return this[Ow]()}pause(){this[to]=!1,this[Ab]=!0,this[nc]=!1}get destroyed(){return this[rs]}get flowing(){return this[to]}get paused(){return this[Ab]}[WV](t){this[aa]?this[no]+=1:this[no]+=t.length,this[ro].push(t)}[BN](){return this[aa]?this[no]-=1:this[no]-=this[ro][0].length,this[ro].shift()}[wN](t=!1){do;while(this[C2e](this[BN]())&&this[ro].length);!t&&!this[ro].length&&!this[lh]&&this.emit("drain")}[C2e](t){return this.emit("data",t),this[to]}pipe(t,r){if(this[rs])return t;this[nc]=!1;let s=this[hg];return r=r||{},t===E2e.stdout||t===E2e.stderr?r.end=!1:r.end=r.end!==!1,r.proxyErrors=!!r.proxyErrors,s?r.end&&t.end():(this[La].push(r.proxyErrors?new zV(this,t,r):new SN(this,t,r)),this[IA]?hb(()=>this[Ow]()):this[Ow]()),t}unpipe(t){let r=this[La].find(s=>s.dest===t);r&&(this[La].length===1?(this[to]&&this[$m]===0&&(this[to]=!1),this[La]=[]):this[La].splice(this[La].indexOf(r),1),r.unpipe())}addListener(t,r){return this.on(t,r)}on(t,r){let s=super.on(t,r);if(t==="data")this[nc]=!1,this[$m]++,!this[La].length&&!this[to]&&this[Ow]();else if(t==="readable"&&this[no]!==0)super.emit("readable");else if(dmt(t)&&this[hg])super.emit(t),this.removeAllListeners(t);else if(t==="error"&&this[fb]){let a=r;this[IA]?hb(()=>a.call(this,this[fb])):a.call(this,this[fb])}return s}removeListener(t,r){return this.off(t,r)}off(t,r){let s=super.off(t,r);return t==="data"&&(this[$m]=this.listeners("data").length,this[$m]===0&&!this[nc]&&!this[La].length&&(this[to]=!1)),s}removeAllListeners(t){let r=super.removeAllListeners(t);return(t==="data"||t===void 0)&&(this[$m]=0,!this[nc]&&!this[La].length&&(this[to]=!1)),r}get emittedEnd(){return this[hg]}[ch](){!this[IN]&&!this[hg]&&!this[rs]&&this[ro].length===0&&this[lh]&&(this[IN]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[CN]&&this.emit("close"),this[IN]=!1)}emit(t,...r){let s=r[0];if(t!=="error"&&t!=="close"&&t!==rs&&this[rs])return!1;if(t==="data")return!this[aa]&&!s?!1:this[IA]?(hb(()=>this[YV](s)),!0):this[YV](s);if(t==="end")return this[w2e]();if(t==="close"){if(this[CN]=!0,!this[hg]&&!this[rs])return!1;let n=super.emit("close");return this.removeAllListeners("close"),n}else if(t==="error"){this[fb]=s,super.emit(VV,s);let n=!this[pb]||this.listeners("error").length?super.emit("error",s):!1;return this[ch](),n}else if(t==="resume"){let n=super.emit("resume");return this[ch](),n}else if(t==="finish"||t==="prefinish"){let n=super.emit(t);return this.removeAllListeners(t),n}let a=super.emit(t,...r);return this[ch](),a}[YV](t){for(let s of this[La])s.dest.write(t)===!1&&this.pause();let r=this[nc]?!1:super.emit("data",t);return this[ch](),r}[w2e](){return this[hg]?!1:(this[hg]=!0,this.readable=!1,this[IA]?(hb(()=>this[KV]()),!0):this[KV]())}[KV](){if(this[Nw]){let r=this[Nw].end();if(r){for(let s of this[La])s.dest.write(r);this[nc]||super.emit("data",r)}}for(let r of this[La])r.end();let t=super.emit("end");return this.removeAllListeners("end"),t}async collect(){let t=Object.assign([],{dataLength:0});this[aa]||(t.dataLength=0);let r=this.promise();return this.on("data",s=>{t.push(s),this[aa]||(t.dataLength+=s.length)}),await r,t}async concat(){if(this[aa])throw new Error("cannot concat in objectMode");let t=await this.collect();return this[Af]?t.join(""):Buffer.concat(t,t.dataLength)}async promise(){return new Promise((t,r)=>{this.on(rs,()=>r(new Error("stream destroyed"))),this.on("error",s=>r(s)),this.on("end",()=>t())})}[Symbol.asyncIterator](){this[nc]=!1;let t=!1,r=async()=>(this.pause(),t=!0,{value:void 0,done:!0});return{next:()=>{if(t)return r();let a=this.read();if(a!==null)return Promise.resolve({done:!1,value:a});if(this[lh])return r();let n,c,f=C=>{this.off("data",p),this.off("end",h),this.off(rs,E),r(),c(C)},p=C=>{this.off("error",f),this.off("end",h),this.off(rs,E),this.pause(),n({value:C,done:!!this[lh]})},h=()=>{this.off("error",f),this.off("data",p),this.off(rs,E),r(),n({done:!0,value:void 0})},E=()=>f(new Error("stream destroyed"));return new Promise((C,S)=>{c=S,n=C,this.once(rs,E),this.once("error",f),this.once("end",h),this.once("data",p)})},throw:r,return:r,[Symbol.asyncIterator](){return this}}}[Symbol.iterator](){this[nc]=!1;let t=!1,r=()=>(this.pause(),this.off(VV,r),this.off(rs,r),this.off("end",r),t=!0,{done:!0,value:void 0}),s=()=>{if(t)return r();let a=this.read();return a===null?r():{done:!1,value:a}};return this.once("end",r),this.once(VV,r),this.once(rs,r),{next:s,throw:r,return:r,[Symbol.iterator](){return this}}}destroy(t){if(this[rs])return t?this.emit("error",t):this.emit(rs),this;this[rs]=!0,this[nc]=!0,this[ro].length=0,this[no]=0;let r=this;return typeof r.close=="function"&&!this[CN]&&r.close(),t?this.emit("error",t):this.emit(rs),this}static get isStream(){return Ma.isStream}};Ma.Minipass=DN});var b2e=G((F$t,CA)=>{"use strict";var db=Ie("crypto"),{Minipass:Cmt}=v2e(),$V=["sha512","sha384","sha256"],tY=["sha512"],wmt=/^[a-z0-9+/]+(?:=?=?)$/i,Bmt=/^([a-z0-9]+)-([^?]+)([?\S*]*)$/,vmt=/^([a-z0-9]+)-([A-Za-z0-9+/=]{44,88})(\?[\x21-\x7E]*)?$/,Smt=/^[\x21-\x7E]+$/,mb=e=>e?.length?`?${e.join("?")}`:"",eY=class extends Cmt{#e;#t;#s;constructor(t){super(),this.size=0,this.opts=t,this.#r(),t?.algorithms?this.algorithms=[...t.algorithms]:this.algorithms=[...tY],this.algorithm!==null&&!this.algorithms.includes(this.algorithm)&&this.algorithms.push(this.algorithm),this.hashes=this.algorithms.map(db.createHash)}#r(){this.sri=this.opts?.integrity?ic(this.opts?.integrity,this.opts):null,this.expectedSize=this.opts?.size,this.sri?this.sri.isHash?(this.goodSri=!0,this.algorithm=this.sri.algorithm):(this.goodSri=!this.sri.isEmpty(),this.algorithm=this.sri.pickAlgorithm(this.opts)):this.algorithm=null,this.digests=this.goodSri?this.sri[this.algorithm]:null,this.optString=mb(this.opts?.options)}on(t,r){return t==="size"&&this.#t?r(this.#t):t==="integrity"&&this.#e?r(this.#e):t==="verified"&&this.#s?r(this.#s):super.on(t,r)}emit(t,r){return t==="end"&&this.#i(),super.emit(t,r)}write(t){return this.size+=t.length,this.hashes.forEach(r=>r.update(t)),super.write(t)}#i(){this.goodSri||this.#r();let t=ic(this.hashes.map((s,a)=>`${this.algorithms[a]}-${s.digest("base64")}${this.optString}`).join(" "),this.opts),r=this.goodSri&&t.match(this.sri,this.opts);if(typeof this.expectedSize=="number"&&this.size!==this.expectedSize){let s=new Error(`stream size mismatch when checking ${this.sri}. - Wanted: ${this.expectedSize} - Found: ${this.size}`);s.code="EBADSIZE",s.found=this.size,s.expected=this.expectedSize,s.sri=this.sri,this.emit("error",s)}else if(this.sri&&!r){let s=new Error(`${this.sri} integrity checksum failed when using ${this.algorithm}: wanted ${this.digests} but got ${t}. (${this.size} bytes)`);s.code="EINTEGRITY",s.found=t,s.expected=this.digests,s.algorithm=this.algorithm,s.sri=this.sri,this.emit("error",s)}else this.#t=this.size,this.emit("size",this.size),this.#e=t,this.emit("integrity",t),r&&(this.#s=r,this.emit("verified",r))}},uh=class{get isHash(){return!0}constructor(t,r){let s=r?.strict;this.source=t.trim(),this.digest="",this.algorithm="",this.options=[];let a=this.source.match(s?vmt:Bmt);if(!a||s&&!$V.includes(a[1]))return;this.algorithm=a[1],this.digest=a[2];let n=a[3];n&&(this.options=n.slice(1).split("?"))}hexDigest(){return this.digest&&Buffer.from(this.digest,"base64").toString("hex")}toJSON(){return this.toString()}match(t,r){let s=ic(t,r);if(!s)return!1;if(s.isIntegrity){let a=s.pickAlgorithm(r,[this.algorithm]);if(!a)return!1;let n=s[a].find(c=>c.digest===this.digest);return n||!1}return s.digest===this.digest?s:!1}toString(t){return t?.strict&&!($V.includes(this.algorithm)&&this.digest.match(wmt)&&this.options.every(r=>r.match(Smt)))?"":`${this.algorithm}-${this.digest}${mb(this.options)}`}};function S2e(e,t,r,s){let a=e!=="",n=!1,c="",f=s.length-1;for(let h=0;hs[a].find(c=>n.digest===c.digest)))throw new Error("hashes do not match, cannot update integrity")}else this[a]=s[a]}match(t,r){let s=ic(t,r);if(!s)return!1;let a=s.pickAlgorithm(r,Object.keys(this));return!!a&&this[a]&&s[a]&&this[a].find(n=>s[a].find(c=>n.digest===c.digest))||!1}pickAlgorithm(t,r){let s=t?.pickAlgorithm||Tmt,a=Object.keys(this).filter(n=>r?.length?r.includes(n):!0);return a.length?a.reduce((n,c)=>s(n,c)||n):null}};CA.exports.parse=ic;function ic(e,t){if(!e)return null;if(typeof e=="string")return XV(e,t);if(e.algorithm&&e.digest){let r=new ey;return r[e.algorithm]=[e],XV(gb(r,t),t)}else return XV(gb(e,t),t)}function XV(e,t){if(t?.single)return new uh(e,t);let r=e.trim().split(/\s+/).reduce((s,a)=>{let n=new uh(a,t);if(n.algorithm&&n.digest){let c=n.algorithm;s[c]||(s[c]=[]),s[c].push(n)}return s},new ey);return r.isEmpty()?null:r}CA.exports.stringify=gb;function gb(e,t){return e.algorithm&&e.digest?uh.prototype.toString.call(e,t):typeof e=="string"?gb(ic(e,t),t):ey.prototype.toString.call(e,t)}CA.exports.fromHex=Dmt;function Dmt(e,t,r){let s=mb(r?.options);return ic(`${t}-${Buffer.from(e,"hex").toString("base64")}${s}`,r)}CA.exports.fromData=bmt;function bmt(e,t){let r=t?.algorithms||[...tY],s=mb(t?.options);return r.reduce((a,n)=>{let c=db.createHash(n).update(e).digest("base64"),f=new uh(`${n}-${c}${s}`,t);if(f.algorithm&&f.digest){let p=f.algorithm;a[p]||(a[p]=[]),a[p].push(f)}return a},new ey)}CA.exports.fromStream=Pmt;function Pmt(e,t){let r=rY(t);return new Promise((s,a)=>{e.pipe(r),e.on("error",a),r.on("error",a);let n;r.on("integrity",c=>{n=c}),r.on("end",()=>s(n)),r.resume()})}CA.exports.checkData=xmt;function xmt(e,t,r){if(t=ic(t,r),!t||!Object.keys(t).length){if(r?.error)throw Object.assign(new Error("No valid integrity hashes to check against"),{code:"EINTEGRITY"});return!1}let s=t.pickAlgorithm(r),a=db.createHash(s).update(e).digest("base64"),n=ic({algorithm:s,digest:a}),c=n.match(t,r);if(r=r||{},c||!r.error)return c;if(typeof r.size=="number"&&e.length!==r.size){let f=new Error(`data size mismatch when checking ${t}. - Wanted: ${r.size} - Found: ${e.length}`);throw f.code="EBADSIZE",f.found=e.length,f.expected=r.size,f.sri=t,f}else{let f=new Error(`Integrity checksum failed when using ${s}: Wanted ${t}, but got ${n}. (${e.length} bytes)`);throw f.code="EINTEGRITY",f.found=n,f.expected=t,f.algorithm=s,f.sri=t,f}}CA.exports.checkStream=kmt;function kmt(e,t,r){if(r=r||Object.create(null),r.integrity=t,t=ic(t,r),!t||!Object.keys(t).length)return Promise.reject(Object.assign(new Error("No valid integrity hashes to check against"),{code:"EINTEGRITY"}));let s=rY(r);return new Promise((a,n)=>{e.pipe(s),e.on("error",n),s.on("error",n);let c;s.on("verified",f=>{c=f}),s.on("end",()=>a(c)),s.resume()})}CA.exports.integrityStream=rY;function rY(e=Object.create(null)){return new eY(e)}CA.exports.create=Qmt;function Qmt(e){let t=e?.algorithms||[...tY],r=mb(e?.options),s=t.map(db.createHash);return{update:function(a,n){return s.forEach(c=>c.update(a,n)),this},digest:function(){return t.reduce((n,c)=>{let f=s.shift().digest("base64"),p=new uh(`${c}-${f}${r}`,e);if(p.algorithm&&p.digest){let h=p.algorithm;n[h]||(n[h]=[]),n[h].push(p)}return n},new ey)}}}var Rmt=db.getHashes(),D2e=["md5","whirlpool","sha1","sha224","sha256","sha384","sha512","sha3","sha3-256","sha3-384","sha3-512","sha3_256","sha3_384","sha3_512"].filter(e=>Rmt.includes(e));function Tmt(e,t){return D2e.indexOf(e.toLowerCase())>=D2e.indexOf(t.toLowerCase())?e:t}});var nY=G(gg=>{"use strict";Object.defineProperty(gg,"__esModule",{value:!0});gg.Signature=gg.Envelope=void 0;gg.Envelope={fromJSON(e){return{payload:bN(e.payload)?Buffer.from(P2e(e.payload)):Buffer.alloc(0),payloadType:bN(e.payloadType)?globalThis.String(e.payloadType):"",signatures:globalThis.Array.isArray(e?.signatures)?e.signatures.map(t=>gg.Signature.fromJSON(t)):[]}},toJSON(e){let t={};return e.payload.length!==0&&(t.payload=x2e(e.payload)),e.payloadType!==""&&(t.payloadType=e.payloadType),e.signatures?.length&&(t.signatures=e.signatures.map(r=>gg.Signature.toJSON(r))),t}};gg.Signature={fromJSON(e){return{sig:bN(e.sig)?Buffer.from(P2e(e.sig)):Buffer.alloc(0),keyid:bN(e.keyid)?globalThis.String(e.keyid):""}},toJSON(e){let t={};return e.sig.length!==0&&(t.sig=x2e(e.sig)),e.keyid!==""&&(t.keyid=e.keyid),t}};function P2e(e){return Uint8Array.from(globalThis.Buffer.from(e,"base64"))}function x2e(e){return globalThis.Buffer.from(e).toString("base64")}function bN(e){return e!=null}});var Q2e=G(PN=>{"use strict";Object.defineProperty(PN,"__esModule",{value:!0});PN.Timestamp=void 0;PN.Timestamp={fromJSON(e){return{seconds:k2e(e.seconds)?globalThis.String(e.seconds):"0",nanos:k2e(e.nanos)?globalThis.Number(e.nanos):0}},toJSON(e){let t={};return e.seconds!=="0"&&(t.seconds=e.seconds),e.nanos!==0&&(t.nanos=Math.round(e.nanos)),t}};function k2e(e){return e!=null}});var Lw=G(Ur=>{"use strict";Object.defineProperty(Ur,"__esModule",{value:!0});Ur.TimeRange=Ur.X509CertificateChain=Ur.SubjectAlternativeName=Ur.X509Certificate=Ur.DistinguishedName=Ur.ObjectIdentifierValuePair=Ur.ObjectIdentifier=Ur.PublicKeyIdentifier=Ur.PublicKey=Ur.RFC3161SignedTimestamp=Ur.LogId=Ur.MessageSignature=Ur.HashOutput=Ur.SubjectAlternativeNameType=Ur.PublicKeyDetails=Ur.HashAlgorithm=void 0;Ur.hashAlgorithmFromJSON=T2e;Ur.hashAlgorithmToJSON=F2e;Ur.publicKeyDetailsFromJSON=N2e;Ur.publicKeyDetailsToJSON=O2e;Ur.subjectAlternativeNameTypeFromJSON=L2e;Ur.subjectAlternativeNameTypeToJSON=M2e;var Fmt=Q2e(),vl;(function(e){e[e.HASH_ALGORITHM_UNSPECIFIED=0]="HASH_ALGORITHM_UNSPECIFIED",e[e.SHA2_256=1]="SHA2_256",e[e.SHA2_384=2]="SHA2_384",e[e.SHA2_512=3]="SHA2_512",e[e.SHA3_256=4]="SHA3_256",e[e.SHA3_384=5]="SHA3_384"})(vl||(Ur.HashAlgorithm=vl={}));function T2e(e){switch(e){case 0:case"HASH_ALGORITHM_UNSPECIFIED":return vl.HASH_ALGORITHM_UNSPECIFIED;case 1:case"SHA2_256":return vl.SHA2_256;case 2:case"SHA2_384":return vl.SHA2_384;case 3:case"SHA2_512":return vl.SHA2_512;case 4:case"SHA3_256":return vl.SHA3_256;case 5:case"SHA3_384":return vl.SHA3_384;default:throw new globalThis.Error("Unrecognized enum value "+e+" for enum HashAlgorithm")}}function F2e(e){switch(e){case vl.HASH_ALGORITHM_UNSPECIFIED:return"HASH_ALGORITHM_UNSPECIFIED";case vl.SHA2_256:return"SHA2_256";case vl.SHA2_384:return"SHA2_384";case vl.SHA2_512:return"SHA2_512";case vl.SHA3_256:return"SHA3_256";case vl.SHA3_384:return"SHA3_384";default:throw new globalThis.Error("Unrecognized enum value "+e+" for enum HashAlgorithm")}}var sn;(function(e){e[e.PUBLIC_KEY_DETAILS_UNSPECIFIED=0]="PUBLIC_KEY_DETAILS_UNSPECIFIED",e[e.PKCS1_RSA_PKCS1V5=1]="PKCS1_RSA_PKCS1V5",e[e.PKCS1_RSA_PSS=2]="PKCS1_RSA_PSS",e[e.PKIX_RSA_PKCS1V5=3]="PKIX_RSA_PKCS1V5",e[e.PKIX_RSA_PSS=4]="PKIX_RSA_PSS",e[e.PKIX_RSA_PKCS1V15_2048_SHA256=9]="PKIX_RSA_PKCS1V15_2048_SHA256",e[e.PKIX_RSA_PKCS1V15_3072_SHA256=10]="PKIX_RSA_PKCS1V15_3072_SHA256",e[e.PKIX_RSA_PKCS1V15_4096_SHA256=11]="PKIX_RSA_PKCS1V15_4096_SHA256",e[e.PKIX_RSA_PSS_2048_SHA256=16]="PKIX_RSA_PSS_2048_SHA256",e[e.PKIX_RSA_PSS_3072_SHA256=17]="PKIX_RSA_PSS_3072_SHA256",e[e.PKIX_RSA_PSS_4096_SHA256=18]="PKIX_RSA_PSS_4096_SHA256",e[e.PKIX_ECDSA_P256_HMAC_SHA_256=6]="PKIX_ECDSA_P256_HMAC_SHA_256",e[e.PKIX_ECDSA_P256_SHA_256=5]="PKIX_ECDSA_P256_SHA_256",e[e.PKIX_ECDSA_P384_SHA_384=12]="PKIX_ECDSA_P384_SHA_384",e[e.PKIX_ECDSA_P521_SHA_512=13]="PKIX_ECDSA_P521_SHA_512",e[e.PKIX_ED25519=7]="PKIX_ED25519",e[e.PKIX_ED25519_PH=8]="PKIX_ED25519_PH",e[e.LMS_SHA256=14]="LMS_SHA256",e[e.LMOTS_SHA256=15]="LMOTS_SHA256"})(sn||(Ur.PublicKeyDetails=sn={}));function N2e(e){switch(e){case 0:case"PUBLIC_KEY_DETAILS_UNSPECIFIED":return sn.PUBLIC_KEY_DETAILS_UNSPECIFIED;case 1:case"PKCS1_RSA_PKCS1V5":return sn.PKCS1_RSA_PKCS1V5;case 2:case"PKCS1_RSA_PSS":return sn.PKCS1_RSA_PSS;case 3:case"PKIX_RSA_PKCS1V5":return sn.PKIX_RSA_PKCS1V5;case 4:case"PKIX_RSA_PSS":return sn.PKIX_RSA_PSS;case 9:case"PKIX_RSA_PKCS1V15_2048_SHA256":return sn.PKIX_RSA_PKCS1V15_2048_SHA256;case 10:case"PKIX_RSA_PKCS1V15_3072_SHA256":return sn.PKIX_RSA_PKCS1V15_3072_SHA256;case 11:case"PKIX_RSA_PKCS1V15_4096_SHA256":return sn.PKIX_RSA_PKCS1V15_4096_SHA256;case 16:case"PKIX_RSA_PSS_2048_SHA256":return sn.PKIX_RSA_PSS_2048_SHA256;case 17:case"PKIX_RSA_PSS_3072_SHA256":return sn.PKIX_RSA_PSS_3072_SHA256;case 18:case"PKIX_RSA_PSS_4096_SHA256":return sn.PKIX_RSA_PSS_4096_SHA256;case 6:case"PKIX_ECDSA_P256_HMAC_SHA_256":return sn.PKIX_ECDSA_P256_HMAC_SHA_256;case 5:case"PKIX_ECDSA_P256_SHA_256":return sn.PKIX_ECDSA_P256_SHA_256;case 12:case"PKIX_ECDSA_P384_SHA_384":return sn.PKIX_ECDSA_P384_SHA_384;case 13:case"PKIX_ECDSA_P521_SHA_512":return sn.PKIX_ECDSA_P521_SHA_512;case 7:case"PKIX_ED25519":return sn.PKIX_ED25519;case 8:case"PKIX_ED25519_PH":return sn.PKIX_ED25519_PH;case 14:case"LMS_SHA256":return sn.LMS_SHA256;case 15:case"LMOTS_SHA256":return sn.LMOTS_SHA256;default:throw new globalThis.Error("Unrecognized enum value "+e+" for enum PublicKeyDetails")}}function O2e(e){switch(e){case sn.PUBLIC_KEY_DETAILS_UNSPECIFIED:return"PUBLIC_KEY_DETAILS_UNSPECIFIED";case sn.PKCS1_RSA_PKCS1V5:return"PKCS1_RSA_PKCS1V5";case sn.PKCS1_RSA_PSS:return"PKCS1_RSA_PSS";case sn.PKIX_RSA_PKCS1V5:return"PKIX_RSA_PKCS1V5";case sn.PKIX_RSA_PSS:return"PKIX_RSA_PSS";case sn.PKIX_RSA_PKCS1V15_2048_SHA256:return"PKIX_RSA_PKCS1V15_2048_SHA256";case sn.PKIX_RSA_PKCS1V15_3072_SHA256:return"PKIX_RSA_PKCS1V15_3072_SHA256";case sn.PKIX_RSA_PKCS1V15_4096_SHA256:return"PKIX_RSA_PKCS1V15_4096_SHA256";case sn.PKIX_RSA_PSS_2048_SHA256:return"PKIX_RSA_PSS_2048_SHA256";case sn.PKIX_RSA_PSS_3072_SHA256:return"PKIX_RSA_PSS_3072_SHA256";case sn.PKIX_RSA_PSS_4096_SHA256:return"PKIX_RSA_PSS_4096_SHA256";case sn.PKIX_ECDSA_P256_HMAC_SHA_256:return"PKIX_ECDSA_P256_HMAC_SHA_256";case sn.PKIX_ECDSA_P256_SHA_256:return"PKIX_ECDSA_P256_SHA_256";case sn.PKIX_ECDSA_P384_SHA_384:return"PKIX_ECDSA_P384_SHA_384";case sn.PKIX_ECDSA_P521_SHA_512:return"PKIX_ECDSA_P521_SHA_512";case sn.PKIX_ED25519:return"PKIX_ED25519";case sn.PKIX_ED25519_PH:return"PKIX_ED25519_PH";case sn.LMS_SHA256:return"LMS_SHA256";case sn.LMOTS_SHA256:return"LMOTS_SHA256";default:throw new globalThis.Error("Unrecognized enum value "+e+" for enum PublicKeyDetails")}}var wA;(function(e){e[e.SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED=0]="SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED",e[e.EMAIL=1]="EMAIL",e[e.URI=2]="URI",e[e.OTHER_NAME=3]="OTHER_NAME"})(wA||(Ur.SubjectAlternativeNameType=wA={}));function L2e(e){switch(e){case 0:case"SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED":return wA.SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED;case 1:case"EMAIL":return wA.EMAIL;case 2:case"URI":return wA.URI;case 3:case"OTHER_NAME":return wA.OTHER_NAME;default:throw new globalThis.Error("Unrecognized enum value "+e+" for enum SubjectAlternativeNameType")}}function M2e(e){switch(e){case wA.SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED:return"SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED";case wA.EMAIL:return"EMAIL";case wA.URI:return"URI";case wA.OTHER_NAME:return"OTHER_NAME";default:throw new globalThis.Error("Unrecognized enum value "+e+" for enum SubjectAlternativeNameType")}}Ur.HashOutput={fromJSON(e){return{algorithm:Es(e.algorithm)?T2e(e.algorithm):0,digest:Es(e.digest)?Buffer.from(ty(e.digest)):Buffer.alloc(0)}},toJSON(e){let t={};return e.algorithm!==0&&(t.algorithm=F2e(e.algorithm)),e.digest.length!==0&&(t.digest=ry(e.digest)),t}};Ur.MessageSignature={fromJSON(e){return{messageDigest:Es(e.messageDigest)?Ur.HashOutput.fromJSON(e.messageDigest):void 0,signature:Es(e.signature)?Buffer.from(ty(e.signature)):Buffer.alloc(0)}},toJSON(e){let t={};return e.messageDigest!==void 0&&(t.messageDigest=Ur.HashOutput.toJSON(e.messageDigest)),e.signature.length!==0&&(t.signature=ry(e.signature)),t}};Ur.LogId={fromJSON(e){return{keyId:Es(e.keyId)?Buffer.from(ty(e.keyId)):Buffer.alloc(0)}},toJSON(e){let t={};return e.keyId.length!==0&&(t.keyId=ry(e.keyId)),t}};Ur.RFC3161SignedTimestamp={fromJSON(e){return{signedTimestamp:Es(e.signedTimestamp)?Buffer.from(ty(e.signedTimestamp)):Buffer.alloc(0)}},toJSON(e){let t={};return e.signedTimestamp.length!==0&&(t.signedTimestamp=ry(e.signedTimestamp)),t}};Ur.PublicKey={fromJSON(e){return{rawBytes:Es(e.rawBytes)?Buffer.from(ty(e.rawBytes)):void 0,keyDetails:Es(e.keyDetails)?N2e(e.keyDetails):0,validFor:Es(e.validFor)?Ur.TimeRange.fromJSON(e.validFor):void 0}},toJSON(e){let t={};return e.rawBytes!==void 0&&(t.rawBytes=ry(e.rawBytes)),e.keyDetails!==0&&(t.keyDetails=O2e(e.keyDetails)),e.validFor!==void 0&&(t.validFor=Ur.TimeRange.toJSON(e.validFor)),t}};Ur.PublicKeyIdentifier={fromJSON(e){return{hint:Es(e.hint)?globalThis.String(e.hint):""}},toJSON(e){let t={};return e.hint!==""&&(t.hint=e.hint),t}};Ur.ObjectIdentifier={fromJSON(e){return{id:globalThis.Array.isArray(e?.id)?e.id.map(t=>globalThis.Number(t)):[]}},toJSON(e){let t={};return e.id?.length&&(t.id=e.id.map(r=>Math.round(r))),t}};Ur.ObjectIdentifierValuePair={fromJSON(e){return{oid:Es(e.oid)?Ur.ObjectIdentifier.fromJSON(e.oid):void 0,value:Es(e.value)?Buffer.from(ty(e.value)):Buffer.alloc(0)}},toJSON(e){let t={};return e.oid!==void 0&&(t.oid=Ur.ObjectIdentifier.toJSON(e.oid)),e.value.length!==0&&(t.value=ry(e.value)),t}};Ur.DistinguishedName={fromJSON(e){return{organization:Es(e.organization)?globalThis.String(e.organization):"",commonName:Es(e.commonName)?globalThis.String(e.commonName):""}},toJSON(e){let t={};return e.organization!==""&&(t.organization=e.organization),e.commonName!==""&&(t.commonName=e.commonName),t}};Ur.X509Certificate={fromJSON(e){return{rawBytes:Es(e.rawBytes)?Buffer.from(ty(e.rawBytes)):Buffer.alloc(0)}},toJSON(e){let t={};return e.rawBytes.length!==0&&(t.rawBytes=ry(e.rawBytes)),t}};Ur.SubjectAlternativeName={fromJSON(e){return{type:Es(e.type)?L2e(e.type):0,identity:Es(e.regexp)?{$case:"regexp",regexp:globalThis.String(e.regexp)}:Es(e.value)?{$case:"value",value:globalThis.String(e.value)}:void 0}},toJSON(e){let t={};return e.type!==0&&(t.type=M2e(e.type)),e.identity?.$case==="regexp"?t.regexp=e.identity.regexp:e.identity?.$case==="value"&&(t.value=e.identity.value),t}};Ur.X509CertificateChain={fromJSON(e){return{certificates:globalThis.Array.isArray(e?.certificates)?e.certificates.map(t=>Ur.X509Certificate.fromJSON(t)):[]}},toJSON(e){let t={};return e.certificates?.length&&(t.certificates=e.certificates.map(r=>Ur.X509Certificate.toJSON(r))),t}};Ur.TimeRange={fromJSON(e){return{start:Es(e.start)?R2e(e.start):void 0,end:Es(e.end)?R2e(e.end):void 0}},toJSON(e){let t={};return e.start!==void 0&&(t.start=e.start.toISOString()),e.end!==void 0&&(t.end=e.end.toISOString()),t}};function ty(e){return Uint8Array.from(globalThis.Buffer.from(e,"base64"))}function ry(e){return globalThis.Buffer.from(e).toString("base64")}function Nmt(e){let t=(globalThis.Number(e.seconds)||0)*1e3;return t+=(e.nanos||0)/1e6,new globalThis.Date(t)}function R2e(e){return e instanceof globalThis.Date?e:typeof e=="string"?new globalThis.Date(e):Nmt(Fmt.Timestamp.fromJSON(e))}function Es(e){return e!=null}});var iY=G(Is=>{"use strict";Object.defineProperty(Is,"__esModule",{value:!0});Is.TransparencyLogEntry=Is.InclusionPromise=Is.InclusionProof=Is.Checkpoint=Is.KindVersion=void 0;var U2e=Lw();Is.KindVersion={fromJSON(e){return{kind:Ua(e.kind)?globalThis.String(e.kind):"",version:Ua(e.version)?globalThis.String(e.version):""}},toJSON(e){let t={};return e.kind!==""&&(t.kind=e.kind),e.version!==""&&(t.version=e.version),t}};Is.Checkpoint={fromJSON(e){return{envelope:Ua(e.envelope)?globalThis.String(e.envelope):""}},toJSON(e){let t={};return e.envelope!==""&&(t.envelope=e.envelope),t}};Is.InclusionProof={fromJSON(e){return{logIndex:Ua(e.logIndex)?globalThis.String(e.logIndex):"0",rootHash:Ua(e.rootHash)?Buffer.from(xN(e.rootHash)):Buffer.alloc(0),treeSize:Ua(e.treeSize)?globalThis.String(e.treeSize):"0",hashes:globalThis.Array.isArray(e?.hashes)?e.hashes.map(t=>Buffer.from(xN(t))):[],checkpoint:Ua(e.checkpoint)?Is.Checkpoint.fromJSON(e.checkpoint):void 0}},toJSON(e){let t={};return e.logIndex!=="0"&&(t.logIndex=e.logIndex),e.rootHash.length!==0&&(t.rootHash=kN(e.rootHash)),e.treeSize!=="0"&&(t.treeSize=e.treeSize),e.hashes?.length&&(t.hashes=e.hashes.map(r=>kN(r))),e.checkpoint!==void 0&&(t.checkpoint=Is.Checkpoint.toJSON(e.checkpoint)),t}};Is.InclusionPromise={fromJSON(e){return{signedEntryTimestamp:Ua(e.signedEntryTimestamp)?Buffer.from(xN(e.signedEntryTimestamp)):Buffer.alloc(0)}},toJSON(e){let t={};return e.signedEntryTimestamp.length!==0&&(t.signedEntryTimestamp=kN(e.signedEntryTimestamp)),t}};Is.TransparencyLogEntry={fromJSON(e){return{logIndex:Ua(e.logIndex)?globalThis.String(e.logIndex):"0",logId:Ua(e.logId)?U2e.LogId.fromJSON(e.logId):void 0,kindVersion:Ua(e.kindVersion)?Is.KindVersion.fromJSON(e.kindVersion):void 0,integratedTime:Ua(e.integratedTime)?globalThis.String(e.integratedTime):"0",inclusionPromise:Ua(e.inclusionPromise)?Is.InclusionPromise.fromJSON(e.inclusionPromise):void 0,inclusionProof:Ua(e.inclusionProof)?Is.InclusionProof.fromJSON(e.inclusionProof):void 0,canonicalizedBody:Ua(e.canonicalizedBody)?Buffer.from(xN(e.canonicalizedBody)):Buffer.alloc(0)}},toJSON(e){let t={};return e.logIndex!=="0"&&(t.logIndex=e.logIndex),e.logId!==void 0&&(t.logId=U2e.LogId.toJSON(e.logId)),e.kindVersion!==void 0&&(t.kindVersion=Is.KindVersion.toJSON(e.kindVersion)),e.integratedTime!=="0"&&(t.integratedTime=e.integratedTime),e.inclusionPromise!==void 0&&(t.inclusionPromise=Is.InclusionPromise.toJSON(e.inclusionPromise)),e.inclusionProof!==void 0&&(t.inclusionProof=Is.InclusionProof.toJSON(e.inclusionProof)),e.canonicalizedBody.length!==0&&(t.canonicalizedBody=kN(e.canonicalizedBody)),t}};function xN(e){return Uint8Array.from(globalThis.Buffer.from(e,"base64"))}function kN(e){return globalThis.Buffer.from(e).toString("base64")}function Ua(e){return e!=null}});var sY=G(Jc=>{"use strict";Object.defineProperty(Jc,"__esModule",{value:!0});Jc.Bundle=Jc.VerificationMaterial=Jc.TimestampVerificationData=void 0;var _2e=nY(),BA=Lw(),H2e=iY();Jc.TimestampVerificationData={fromJSON(e){return{rfc3161Timestamps:globalThis.Array.isArray(e?.rfc3161Timestamps)?e.rfc3161Timestamps.map(t=>BA.RFC3161SignedTimestamp.fromJSON(t)):[]}},toJSON(e){let t={};return e.rfc3161Timestamps?.length&&(t.rfc3161Timestamps=e.rfc3161Timestamps.map(r=>BA.RFC3161SignedTimestamp.toJSON(r))),t}};Jc.VerificationMaterial={fromJSON(e){return{content:dg(e.publicKey)?{$case:"publicKey",publicKey:BA.PublicKeyIdentifier.fromJSON(e.publicKey)}:dg(e.x509CertificateChain)?{$case:"x509CertificateChain",x509CertificateChain:BA.X509CertificateChain.fromJSON(e.x509CertificateChain)}:dg(e.certificate)?{$case:"certificate",certificate:BA.X509Certificate.fromJSON(e.certificate)}:void 0,tlogEntries:globalThis.Array.isArray(e?.tlogEntries)?e.tlogEntries.map(t=>H2e.TransparencyLogEntry.fromJSON(t)):[],timestampVerificationData:dg(e.timestampVerificationData)?Jc.TimestampVerificationData.fromJSON(e.timestampVerificationData):void 0}},toJSON(e){let t={};return e.content?.$case==="publicKey"?t.publicKey=BA.PublicKeyIdentifier.toJSON(e.content.publicKey):e.content?.$case==="x509CertificateChain"?t.x509CertificateChain=BA.X509CertificateChain.toJSON(e.content.x509CertificateChain):e.content?.$case==="certificate"&&(t.certificate=BA.X509Certificate.toJSON(e.content.certificate)),e.tlogEntries?.length&&(t.tlogEntries=e.tlogEntries.map(r=>H2e.TransparencyLogEntry.toJSON(r))),e.timestampVerificationData!==void 0&&(t.timestampVerificationData=Jc.TimestampVerificationData.toJSON(e.timestampVerificationData)),t}};Jc.Bundle={fromJSON(e){return{mediaType:dg(e.mediaType)?globalThis.String(e.mediaType):"",verificationMaterial:dg(e.verificationMaterial)?Jc.VerificationMaterial.fromJSON(e.verificationMaterial):void 0,content:dg(e.messageSignature)?{$case:"messageSignature",messageSignature:BA.MessageSignature.fromJSON(e.messageSignature)}:dg(e.dsseEnvelope)?{$case:"dsseEnvelope",dsseEnvelope:_2e.Envelope.fromJSON(e.dsseEnvelope)}:void 0}},toJSON(e){let t={};return e.mediaType!==""&&(t.mediaType=e.mediaType),e.verificationMaterial!==void 0&&(t.verificationMaterial=Jc.VerificationMaterial.toJSON(e.verificationMaterial)),e.content?.$case==="messageSignature"?t.messageSignature=BA.MessageSignature.toJSON(e.content.messageSignature):e.content?.$case==="dsseEnvelope"&&(t.dsseEnvelope=_2e.Envelope.toJSON(e.content.dsseEnvelope)),t}};function dg(e){return e!=null}});var oY=G(Ti=>{"use strict";Object.defineProperty(Ti,"__esModule",{value:!0});Ti.ClientTrustConfig=Ti.SigningConfig=Ti.TrustedRoot=Ti.CertificateAuthority=Ti.TransparencyLogInstance=void 0;var Sl=Lw();Ti.TransparencyLogInstance={fromJSON(e){return{baseUrl:la(e.baseUrl)?globalThis.String(e.baseUrl):"",hashAlgorithm:la(e.hashAlgorithm)?(0,Sl.hashAlgorithmFromJSON)(e.hashAlgorithm):0,publicKey:la(e.publicKey)?Sl.PublicKey.fromJSON(e.publicKey):void 0,logId:la(e.logId)?Sl.LogId.fromJSON(e.logId):void 0,checkpointKeyId:la(e.checkpointKeyId)?Sl.LogId.fromJSON(e.checkpointKeyId):void 0}},toJSON(e){let t={};return e.baseUrl!==""&&(t.baseUrl=e.baseUrl),e.hashAlgorithm!==0&&(t.hashAlgorithm=(0,Sl.hashAlgorithmToJSON)(e.hashAlgorithm)),e.publicKey!==void 0&&(t.publicKey=Sl.PublicKey.toJSON(e.publicKey)),e.logId!==void 0&&(t.logId=Sl.LogId.toJSON(e.logId)),e.checkpointKeyId!==void 0&&(t.checkpointKeyId=Sl.LogId.toJSON(e.checkpointKeyId)),t}};Ti.CertificateAuthority={fromJSON(e){return{subject:la(e.subject)?Sl.DistinguishedName.fromJSON(e.subject):void 0,uri:la(e.uri)?globalThis.String(e.uri):"",certChain:la(e.certChain)?Sl.X509CertificateChain.fromJSON(e.certChain):void 0,validFor:la(e.validFor)?Sl.TimeRange.fromJSON(e.validFor):void 0}},toJSON(e){let t={};return e.subject!==void 0&&(t.subject=Sl.DistinguishedName.toJSON(e.subject)),e.uri!==""&&(t.uri=e.uri),e.certChain!==void 0&&(t.certChain=Sl.X509CertificateChain.toJSON(e.certChain)),e.validFor!==void 0&&(t.validFor=Sl.TimeRange.toJSON(e.validFor)),t}};Ti.TrustedRoot={fromJSON(e){return{mediaType:la(e.mediaType)?globalThis.String(e.mediaType):"",tlogs:globalThis.Array.isArray(e?.tlogs)?e.tlogs.map(t=>Ti.TransparencyLogInstance.fromJSON(t)):[],certificateAuthorities:globalThis.Array.isArray(e?.certificateAuthorities)?e.certificateAuthorities.map(t=>Ti.CertificateAuthority.fromJSON(t)):[],ctlogs:globalThis.Array.isArray(e?.ctlogs)?e.ctlogs.map(t=>Ti.TransparencyLogInstance.fromJSON(t)):[],timestampAuthorities:globalThis.Array.isArray(e?.timestampAuthorities)?e.timestampAuthorities.map(t=>Ti.CertificateAuthority.fromJSON(t)):[]}},toJSON(e){let t={};return e.mediaType!==""&&(t.mediaType=e.mediaType),e.tlogs?.length&&(t.tlogs=e.tlogs.map(r=>Ti.TransparencyLogInstance.toJSON(r))),e.certificateAuthorities?.length&&(t.certificateAuthorities=e.certificateAuthorities.map(r=>Ti.CertificateAuthority.toJSON(r))),e.ctlogs?.length&&(t.ctlogs=e.ctlogs.map(r=>Ti.TransparencyLogInstance.toJSON(r))),e.timestampAuthorities?.length&&(t.timestampAuthorities=e.timestampAuthorities.map(r=>Ti.CertificateAuthority.toJSON(r))),t}};Ti.SigningConfig={fromJSON(e){return{mediaType:la(e.mediaType)?globalThis.String(e.mediaType):"",caUrl:la(e.caUrl)?globalThis.String(e.caUrl):"",oidcUrl:la(e.oidcUrl)?globalThis.String(e.oidcUrl):"",tlogUrls:globalThis.Array.isArray(e?.tlogUrls)?e.tlogUrls.map(t=>globalThis.String(t)):[],tsaUrls:globalThis.Array.isArray(e?.tsaUrls)?e.tsaUrls.map(t=>globalThis.String(t)):[]}},toJSON(e){let t={};return e.mediaType!==""&&(t.mediaType=e.mediaType),e.caUrl!==""&&(t.caUrl=e.caUrl),e.oidcUrl!==""&&(t.oidcUrl=e.oidcUrl),e.tlogUrls?.length&&(t.tlogUrls=e.tlogUrls),e.tsaUrls?.length&&(t.tsaUrls=e.tsaUrls),t}};Ti.ClientTrustConfig={fromJSON(e){return{mediaType:la(e.mediaType)?globalThis.String(e.mediaType):"",trustedRoot:la(e.trustedRoot)?Ti.TrustedRoot.fromJSON(e.trustedRoot):void 0,signingConfig:la(e.signingConfig)?Ti.SigningConfig.fromJSON(e.signingConfig):void 0}},toJSON(e){let t={};return e.mediaType!==""&&(t.mediaType=e.mediaType),e.trustedRoot!==void 0&&(t.trustedRoot=Ti.TrustedRoot.toJSON(e.trustedRoot)),e.signingConfig!==void 0&&(t.signingConfig=Ti.SigningConfig.toJSON(e.signingConfig)),t}};function la(e){return e!=null}});var q2e=G(Yr=>{"use strict";Object.defineProperty(Yr,"__esModule",{value:!0});Yr.Input=Yr.Artifact=Yr.ArtifactVerificationOptions_ObserverTimestampOptions=Yr.ArtifactVerificationOptions_TlogIntegratedTimestampOptions=Yr.ArtifactVerificationOptions_TimestampAuthorityOptions=Yr.ArtifactVerificationOptions_CtlogOptions=Yr.ArtifactVerificationOptions_TlogOptions=Yr.ArtifactVerificationOptions=Yr.PublicKeyIdentities=Yr.CertificateIdentities=Yr.CertificateIdentity=void 0;var j2e=sY(),mg=Lw(),G2e=oY();Yr.CertificateIdentity={fromJSON(e){return{issuer:di(e.issuer)?globalThis.String(e.issuer):"",san:di(e.san)?mg.SubjectAlternativeName.fromJSON(e.san):void 0,oids:globalThis.Array.isArray(e?.oids)?e.oids.map(t=>mg.ObjectIdentifierValuePair.fromJSON(t)):[]}},toJSON(e){let t={};return e.issuer!==""&&(t.issuer=e.issuer),e.san!==void 0&&(t.san=mg.SubjectAlternativeName.toJSON(e.san)),e.oids?.length&&(t.oids=e.oids.map(r=>mg.ObjectIdentifierValuePair.toJSON(r))),t}};Yr.CertificateIdentities={fromJSON(e){return{identities:globalThis.Array.isArray(e?.identities)?e.identities.map(t=>Yr.CertificateIdentity.fromJSON(t)):[]}},toJSON(e){let t={};return e.identities?.length&&(t.identities=e.identities.map(r=>Yr.CertificateIdentity.toJSON(r))),t}};Yr.PublicKeyIdentities={fromJSON(e){return{publicKeys:globalThis.Array.isArray(e?.publicKeys)?e.publicKeys.map(t=>mg.PublicKey.fromJSON(t)):[]}},toJSON(e){let t={};return e.publicKeys?.length&&(t.publicKeys=e.publicKeys.map(r=>mg.PublicKey.toJSON(r))),t}};Yr.ArtifactVerificationOptions={fromJSON(e){return{signers:di(e.certificateIdentities)?{$case:"certificateIdentities",certificateIdentities:Yr.CertificateIdentities.fromJSON(e.certificateIdentities)}:di(e.publicKeys)?{$case:"publicKeys",publicKeys:Yr.PublicKeyIdentities.fromJSON(e.publicKeys)}:void 0,tlogOptions:di(e.tlogOptions)?Yr.ArtifactVerificationOptions_TlogOptions.fromJSON(e.tlogOptions):void 0,ctlogOptions:di(e.ctlogOptions)?Yr.ArtifactVerificationOptions_CtlogOptions.fromJSON(e.ctlogOptions):void 0,tsaOptions:di(e.tsaOptions)?Yr.ArtifactVerificationOptions_TimestampAuthorityOptions.fromJSON(e.tsaOptions):void 0,integratedTsOptions:di(e.integratedTsOptions)?Yr.ArtifactVerificationOptions_TlogIntegratedTimestampOptions.fromJSON(e.integratedTsOptions):void 0,observerOptions:di(e.observerOptions)?Yr.ArtifactVerificationOptions_ObserverTimestampOptions.fromJSON(e.observerOptions):void 0}},toJSON(e){let t={};return e.signers?.$case==="certificateIdentities"?t.certificateIdentities=Yr.CertificateIdentities.toJSON(e.signers.certificateIdentities):e.signers?.$case==="publicKeys"&&(t.publicKeys=Yr.PublicKeyIdentities.toJSON(e.signers.publicKeys)),e.tlogOptions!==void 0&&(t.tlogOptions=Yr.ArtifactVerificationOptions_TlogOptions.toJSON(e.tlogOptions)),e.ctlogOptions!==void 0&&(t.ctlogOptions=Yr.ArtifactVerificationOptions_CtlogOptions.toJSON(e.ctlogOptions)),e.tsaOptions!==void 0&&(t.tsaOptions=Yr.ArtifactVerificationOptions_TimestampAuthorityOptions.toJSON(e.tsaOptions)),e.integratedTsOptions!==void 0&&(t.integratedTsOptions=Yr.ArtifactVerificationOptions_TlogIntegratedTimestampOptions.toJSON(e.integratedTsOptions)),e.observerOptions!==void 0&&(t.observerOptions=Yr.ArtifactVerificationOptions_ObserverTimestampOptions.toJSON(e.observerOptions)),t}};Yr.ArtifactVerificationOptions_TlogOptions={fromJSON(e){return{threshold:di(e.threshold)?globalThis.Number(e.threshold):0,performOnlineVerification:di(e.performOnlineVerification)?globalThis.Boolean(e.performOnlineVerification):!1,disable:di(e.disable)?globalThis.Boolean(e.disable):!1}},toJSON(e){let t={};return e.threshold!==0&&(t.threshold=Math.round(e.threshold)),e.performOnlineVerification!==!1&&(t.performOnlineVerification=e.performOnlineVerification),e.disable!==!1&&(t.disable=e.disable),t}};Yr.ArtifactVerificationOptions_CtlogOptions={fromJSON(e){return{threshold:di(e.threshold)?globalThis.Number(e.threshold):0,disable:di(e.disable)?globalThis.Boolean(e.disable):!1}},toJSON(e){let t={};return e.threshold!==0&&(t.threshold=Math.round(e.threshold)),e.disable!==!1&&(t.disable=e.disable),t}};Yr.ArtifactVerificationOptions_TimestampAuthorityOptions={fromJSON(e){return{threshold:di(e.threshold)?globalThis.Number(e.threshold):0,disable:di(e.disable)?globalThis.Boolean(e.disable):!1}},toJSON(e){let t={};return e.threshold!==0&&(t.threshold=Math.round(e.threshold)),e.disable!==!1&&(t.disable=e.disable),t}};Yr.ArtifactVerificationOptions_TlogIntegratedTimestampOptions={fromJSON(e){return{threshold:di(e.threshold)?globalThis.Number(e.threshold):0,disable:di(e.disable)?globalThis.Boolean(e.disable):!1}},toJSON(e){let t={};return e.threshold!==0&&(t.threshold=Math.round(e.threshold)),e.disable!==!1&&(t.disable=e.disable),t}};Yr.ArtifactVerificationOptions_ObserverTimestampOptions={fromJSON(e){return{threshold:di(e.threshold)?globalThis.Number(e.threshold):0,disable:di(e.disable)?globalThis.Boolean(e.disable):!1}},toJSON(e){let t={};return e.threshold!==0&&(t.threshold=Math.round(e.threshold)),e.disable!==!1&&(t.disable=e.disable),t}};Yr.Artifact={fromJSON(e){return{data:di(e.artifactUri)?{$case:"artifactUri",artifactUri:globalThis.String(e.artifactUri)}:di(e.artifact)?{$case:"artifact",artifact:Buffer.from(Omt(e.artifact))}:di(e.artifactDigest)?{$case:"artifactDigest",artifactDigest:mg.HashOutput.fromJSON(e.artifactDigest)}:void 0}},toJSON(e){let t={};return e.data?.$case==="artifactUri"?t.artifactUri=e.data.artifactUri:e.data?.$case==="artifact"?t.artifact=Lmt(e.data.artifact):e.data?.$case==="artifactDigest"&&(t.artifactDigest=mg.HashOutput.toJSON(e.data.artifactDigest)),t}};Yr.Input={fromJSON(e){return{artifactTrustRoot:di(e.artifactTrustRoot)?G2e.TrustedRoot.fromJSON(e.artifactTrustRoot):void 0,artifactVerificationOptions:di(e.artifactVerificationOptions)?Yr.ArtifactVerificationOptions.fromJSON(e.artifactVerificationOptions):void 0,bundle:di(e.bundle)?j2e.Bundle.fromJSON(e.bundle):void 0,artifact:di(e.artifact)?Yr.Artifact.fromJSON(e.artifact):void 0}},toJSON(e){let t={};return e.artifactTrustRoot!==void 0&&(t.artifactTrustRoot=G2e.TrustedRoot.toJSON(e.artifactTrustRoot)),e.artifactVerificationOptions!==void 0&&(t.artifactVerificationOptions=Yr.ArtifactVerificationOptions.toJSON(e.artifactVerificationOptions)),e.bundle!==void 0&&(t.bundle=j2e.Bundle.toJSON(e.bundle)),e.artifact!==void 0&&(t.artifact=Yr.Artifact.toJSON(e.artifact)),t}};function Omt(e){return Uint8Array.from(globalThis.Buffer.from(e,"base64"))}function Lmt(e){return globalThis.Buffer.from(e).toString("base64")}function di(e){return e!=null}});var yb=G(zc=>{"use strict";var Mmt=zc&&zc.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||("get"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),Mw=zc&&zc.__exportStar||function(e,t){for(var r in e)r!=="default"&&!Object.prototype.hasOwnProperty.call(t,r)&&Mmt(t,e,r)};Object.defineProperty(zc,"__esModule",{value:!0});Mw(nY(),zc);Mw(sY(),zc);Mw(Lw(),zc);Mw(iY(),zc);Mw(oY(),zc);Mw(q2e(),zc)});var QN=G(Dl=>{"use strict";Object.defineProperty(Dl,"__esModule",{value:!0});Dl.BUNDLE_V03_MEDIA_TYPE=Dl.BUNDLE_V03_LEGACY_MEDIA_TYPE=Dl.BUNDLE_V02_MEDIA_TYPE=Dl.BUNDLE_V01_MEDIA_TYPE=void 0;Dl.isBundleWithCertificateChain=Umt;Dl.isBundleWithPublicKey=_mt;Dl.isBundleWithMessageSignature=Hmt;Dl.isBundleWithDsseEnvelope=jmt;Dl.BUNDLE_V01_MEDIA_TYPE="application/vnd.dev.sigstore.bundle+json;version=0.1";Dl.BUNDLE_V02_MEDIA_TYPE="application/vnd.dev.sigstore.bundle+json;version=0.2";Dl.BUNDLE_V03_LEGACY_MEDIA_TYPE="application/vnd.dev.sigstore.bundle+json;version=0.3";Dl.BUNDLE_V03_MEDIA_TYPE="application/vnd.dev.sigstore.bundle.v0.3+json";function Umt(e){return e.verificationMaterial.content.$case==="x509CertificateChain"}function _mt(e){return e.verificationMaterial.content.$case==="publicKey"}function Hmt(e){return e.content.$case==="messageSignature"}function jmt(e){return e.content.$case==="dsseEnvelope"}});var V2e=G(TN=>{"use strict";Object.defineProperty(TN,"__esModule",{value:!0});TN.toMessageSignatureBundle=qmt;TN.toDSSEBundle=Wmt;var Gmt=yb(),RN=QN();function qmt(e){return{mediaType:e.certificateChain?RN.BUNDLE_V02_MEDIA_TYPE:RN.BUNDLE_V03_MEDIA_TYPE,content:{$case:"messageSignature",messageSignature:{messageDigest:{algorithm:Gmt.HashAlgorithm.SHA2_256,digest:e.digest},signature:e.signature}},verificationMaterial:W2e(e)}}function Wmt(e){return{mediaType:e.certificateChain?RN.BUNDLE_V02_MEDIA_TYPE:RN.BUNDLE_V03_MEDIA_TYPE,content:{$case:"dsseEnvelope",dsseEnvelope:Vmt(e)},verificationMaterial:W2e(e)}}function Vmt(e){return{payloadType:e.artifactType,payload:e.artifact,signatures:[Ymt(e)]}}function Ymt(e){return{keyid:e.keyHint||"",sig:e.signature}}function W2e(e){return{content:Kmt(e),tlogEntries:[],timestampVerificationData:{rfc3161Timestamps:[]}}}function Kmt(e){return e.certificate?e.certificateChain?{$case:"x509CertificateChain",x509CertificateChain:{certificates:[{rawBytes:e.certificate}]}}:{$case:"certificate",certificate:{rawBytes:e.certificate}}:{$case:"publicKey",publicKey:{hint:e.keyHint||""}}}});var lY=G(FN=>{"use strict";Object.defineProperty(FN,"__esModule",{value:!0});FN.ValidationError=void 0;var aY=class extends Error{constructor(t,r){super(t),this.fields=r}};FN.ValidationError=aY});var cY=G(ny=>{"use strict";Object.defineProperty(ny,"__esModule",{value:!0});ny.assertBundle=Jmt;ny.assertBundleV01=Y2e;ny.isBundleV01=zmt;ny.assertBundleV02=Zmt;ny.assertBundleLatest=Xmt;var NN=lY();function Jmt(e){let t=ON(e);if(t.length>0)throw new NN.ValidationError("invalid bundle",t)}function Y2e(e){let t=[];if(t.push(...ON(e)),t.push(...$mt(e)),t.length>0)throw new NN.ValidationError("invalid v0.1 bundle",t)}function zmt(e){try{return Y2e(e),!0}catch{return!1}}function Zmt(e){let t=[];if(t.push(...ON(e)),t.push(...K2e(e)),t.length>0)throw new NN.ValidationError("invalid v0.2 bundle",t)}function Xmt(e){let t=[];if(t.push(...ON(e)),t.push(...K2e(e)),t.push(...eyt(e)),t.length>0)throw new NN.ValidationError("invalid bundle",t)}function ON(e){let t=[];if((e.mediaType===void 0||!e.mediaType.match(/^application\/vnd\.dev\.sigstore\.bundle\+json;version=\d\.\d/)&&!e.mediaType.match(/^application\/vnd\.dev\.sigstore\.bundle\.v\d\.\d\+json/))&&t.push("mediaType"),e.content===void 0)t.push("content");else switch(e.content.$case){case"messageSignature":e.content.messageSignature.messageDigest===void 0?t.push("content.messageSignature.messageDigest"):e.content.messageSignature.messageDigest.digest.length===0&&t.push("content.messageSignature.messageDigest.digest"),e.content.messageSignature.signature.length===0&&t.push("content.messageSignature.signature");break;case"dsseEnvelope":e.content.dsseEnvelope.payload.length===0&&t.push("content.dsseEnvelope.payload"),e.content.dsseEnvelope.signatures.length!==1?t.push("content.dsseEnvelope.signatures"):e.content.dsseEnvelope.signatures[0].sig.length===0&&t.push("content.dsseEnvelope.signatures[0].sig");break}if(e.verificationMaterial===void 0)t.push("verificationMaterial");else{if(e.verificationMaterial.content===void 0)t.push("verificationMaterial.content");else switch(e.verificationMaterial.content.$case){case"x509CertificateChain":e.verificationMaterial.content.x509CertificateChain.certificates.length===0&&t.push("verificationMaterial.content.x509CertificateChain.certificates"),e.verificationMaterial.content.x509CertificateChain.certificates.forEach((r,s)=>{r.rawBytes.length===0&&t.push(`verificationMaterial.content.x509CertificateChain.certificates[${s}].rawBytes`)});break;case"certificate":e.verificationMaterial.content.certificate.rawBytes.length===0&&t.push("verificationMaterial.content.certificate.rawBytes");break}e.verificationMaterial.tlogEntries===void 0?t.push("verificationMaterial.tlogEntries"):e.verificationMaterial.tlogEntries.length>0&&e.verificationMaterial.tlogEntries.forEach((r,s)=>{r.logId===void 0&&t.push(`verificationMaterial.tlogEntries[${s}].logId`),r.kindVersion===void 0&&t.push(`verificationMaterial.tlogEntries[${s}].kindVersion`)})}return t}function $mt(e){let t=[];return e.verificationMaterial&&e.verificationMaterial.tlogEntries?.length>0&&e.verificationMaterial.tlogEntries.forEach((r,s)=>{r.inclusionPromise===void 0&&t.push(`verificationMaterial.tlogEntries[${s}].inclusionPromise`)}),t}function K2e(e){let t=[];return e.verificationMaterial&&e.verificationMaterial.tlogEntries?.length>0&&e.verificationMaterial.tlogEntries.forEach((r,s)=>{r.inclusionProof===void 0?t.push(`verificationMaterial.tlogEntries[${s}].inclusionProof`):r.inclusionProof.checkpoint===void 0&&t.push(`verificationMaterial.tlogEntries[${s}].inclusionProof.checkpoint`)}),t}function eyt(e){let t=[];return e.verificationMaterial?.content?.$case==="x509CertificateChain"&&t.push("verificationMaterial.content.$case"),t}});var z2e=G(vA=>{"use strict";Object.defineProperty(vA,"__esModule",{value:!0});vA.envelopeToJSON=vA.envelopeFromJSON=vA.bundleToJSON=vA.bundleFromJSON=void 0;var LN=yb(),J2e=QN(),uY=cY(),tyt=e=>{let t=LN.Bundle.fromJSON(e);switch(t.mediaType){case J2e.BUNDLE_V01_MEDIA_TYPE:(0,uY.assertBundleV01)(t);break;case J2e.BUNDLE_V02_MEDIA_TYPE:(0,uY.assertBundleV02)(t);break;default:(0,uY.assertBundleLatest)(t);break}return t};vA.bundleFromJSON=tyt;var ryt=e=>LN.Bundle.toJSON(e);vA.bundleToJSON=ryt;var nyt=e=>LN.Envelope.fromJSON(e);vA.envelopeFromJSON=nyt;var iyt=e=>LN.Envelope.toJSON(e);vA.envelopeToJSON=iyt});var Ib=G(Zr=>{"use strict";Object.defineProperty(Zr,"__esModule",{value:!0});Zr.isBundleV01=Zr.assertBundleV02=Zr.assertBundleV01=Zr.assertBundleLatest=Zr.assertBundle=Zr.envelopeToJSON=Zr.envelopeFromJSON=Zr.bundleToJSON=Zr.bundleFromJSON=Zr.ValidationError=Zr.isBundleWithPublicKey=Zr.isBundleWithMessageSignature=Zr.isBundleWithDsseEnvelope=Zr.isBundleWithCertificateChain=Zr.BUNDLE_V03_MEDIA_TYPE=Zr.BUNDLE_V03_LEGACY_MEDIA_TYPE=Zr.BUNDLE_V02_MEDIA_TYPE=Zr.BUNDLE_V01_MEDIA_TYPE=Zr.toMessageSignatureBundle=Zr.toDSSEBundle=void 0;var Z2e=V2e();Object.defineProperty(Zr,"toDSSEBundle",{enumerable:!0,get:function(){return Z2e.toDSSEBundle}});Object.defineProperty(Zr,"toMessageSignatureBundle",{enumerable:!0,get:function(){return Z2e.toMessageSignatureBundle}});var yg=QN();Object.defineProperty(Zr,"BUNDLE_V01_MEDIA_TYPE",{enumerable:!0,get:function(){return yg.BUNDLE_V01_MEDIA_TYPE}});Object.defineProperty(Zr,"BUNDLE_V02_MEDIA_TYPE",{enumerable:!0,get:function(){return yg.BUNDLE_V02_MEDIA_TYPE}});Object.defineProperty(Zr,"BUNDLE_V03_LEGACY_MEDIA_TYPE",{enumerable:!0,get:function(){return yg.BUNDLE_V03_LEGACY_MEDIA_TYPE}});Object.defineProperty(Zr,"BUNDLE_V03_MEDIA_TYPE",{enumerable:!0,get:function(){return yg.BUNDLE_V03_MEDIA_TYPE}});Object.defineProperty(Zr,"isBundleWithCertificateChain",{enumerable:!0,get:function(){return yg.isBundleWithCertificateChain}});Object.defineProperty(Zr,"isBundleWithDsseEnvelope",{enumerable:!0,get:function(){return yg.isBundleWithDsseEnvelope}});Object.defineProperty(Zr,"isBundleWithMessageSignature",{enumerable:!0,get:function(){return yg.isBundleWithMessageSignature}});Object.defineProperty(Zr,"isBundleWithPublicKey",{enumerable:!0,get:function(){return yg.isBundleWithPublicKey}});var syt=lY();Object.defineProperty(Zr,"ValidationError",{enumerable:!0,get:function(){return syt.ValidationError}});var MN=z2e();Object.defineProperty(Zr,"bundleFromJSON",{enumerable:!0,get:function(){return MN.bundleFromJSON}});Object.defineProperty(Zr,"bundleToJSON",{enumerable:!0,get:function(){return MN.bundleToJSON}});Object.defineProperty(Zr,"envelopeFromJSON",{enumerable:!0,get:function(){return MN.envelopeFromJSON}});Object.defineProperty(Zr,"envelopeToJSON",{enumerable:!0,get:function(){return MN.envelopeToJSON}});var Eb=cY();Object.defineProperty(Zr,"assertBundle",{enumerable:!0,get:function(){return Eb.assertBundle}});Object.defineProperty(Zr,"assertBundleLatest",{enumerable:!0,get:function(){return Eb.assertBundleLatest}});Object.defineProperty(Zr,"assertBundleV01",{enumerable:!0,get:function(){return Eb.assertBundleV01}});Object.defineProperty(Zr,"assertBundleV02",{enumerable:!0,get:function(){return Eb.assertBundleV02}});Object.defineProperty(Zr,"isBundleV01",{enumerable:!0,get:function(){return Eb.isBundleV01}})});var Cb=G(_N=>{"use strict";Object.defineProperty(_N,"__esModule",{value:!0});_N.ByteStream=void 0;var fY=class extends Error{},UN=class e{constructor(t){this.start=0,t?(this.buf=t,this.view=Buffer.from(t)):(this.buf=new ArrayBuffer(0),this.view=Buffer.from(this.buf))}get buffer(){return this.view.subarray(0,this.start)}get length(){return this.view.byteLength}get position(){return this.start}seek(t){this.start=t}slice(t,r){let s=t+r;if(s>this.length)throw new fY("request past end of buffer");return this.view.subarray(t,s)}appendChar(t){this.ensureCapacity(1),this.view[this.start]=t,this.start+=1}appendUint16(t){this.ensureCapacity(2);let r=new Uint16Array([t]),s=new Uint8Array(r.buffer);this.view[this.start]=s[1],this.view[this.start+1]=s[0],this.start+=2}appendUint24(t){this.ensureCapacity(3);let r=new Uint32Array([t]),s=new Uint8Array(r.buffer);this.view[this.start]=s[2],this.view[this.start+1]=s[1],this.view[this.start+2]=s[0],this.start+=3}appendView(t){this.ensureCapacity(t.length),this.view.set(t,this.start),this.start+=t.length}getBlock(t){if(t<=0)return Buffer.alloc(0);if(this.start+t>this.view.length)throw new Error("request past end of buffer");let r=this.view.subarray(this.start,this.start+t);return this.start+=t,r}getUint8(){return this.getBlock(1)[0]}getUint16(){let t=this.getBlock(2);return t[0]<<8|t[1]}ensureCapacity(t){if(this.start+t>this.view.byteLength){let r=e.BLOCK_SIZE+(t>e.BLOCK_SIZE?t:0);this.realloc(this.view.byteLength+r)}}realloc(t){let r=new ArrayBuffer(t),s=Buffer.from(r);s.set(this.view),this.buf=r,this.view=s}};_N.ByteStream=UN;UN.BLOCK_SIZE=1024});var HN=G(Uw=>{"use strict";Object.defineProperty(Uw,"__esModule",{value:!0});Uw.ASN1TypeError=Uw.ASN1ParseError=void 0;var AY=class extends Error{};Uw.ASN1ParseError=AY;var pY=class extends Error{};Uw.ASN1TypeError=pY});var $2e=G(jN=>{"use strict";Object.defineProperty(jN,"__esModule",{value:!0});jN.decodeLength=oyt;jN.encodeLength=ayt;var X2e=HN();function oyt(e){let t=e.getUint8();if(!(t&128))return t;let r=t&127;if(r>6)throw new X2e.ASN1ParseError("length exceeds 6 byte limit");let s=0;for(let a=0;a0n;)r.unshift(Number(t&255n)),t=t>>8n;return Buffer.from([128|r.length,...r])}});var tve=G(Eg=>{"use strict";Object.defineProperty(Eg,"__esModule",{value:!0});Eg.parseInteger=uyt;Eg.parseStringASCII=eve;Eg.parseTime=fyt;Eg.parseOID=Ayt;Eg.parseBoolean=pyt;Eg.parseBitString=hyt;var lyt=/^(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\.\d{3})?Z$/,cyt=/^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\.\d{3})?Z$/;function uyt(e){let t=0,r=e.length,s=e[t],a=s>127,n=a?255:0;for(;s==n&&++t=50?1900:2e3,s[1]=a.toString()}return new Date(`${s[1]}-${s[2]}-${s[3]}T${s[4]}:${s[5]}:${s[6]}Z`)}function Ayt(e){let t=0,r=e.length,s=e[t++],a=Math.floor(s/40),n=s%40,c=`${a}.${n}`,f=0;for(;t=f;--p)a.push(c>>p&1)}return a}});var nve=G(GN=>{"use strict";Object.defineProperty(GN,"__esModule",{value:!0});GN.ASN1Tag=void 0;var rve=HN(),iy={BOOLEAN:1,INTEGER:2,BIT_STRING:3,OCTET_STRING:4,OBJECT_IDENTIFIER:6,SEQUENCE:16,SET:17,PRINTABLE_STRING:19,UTC_TIME:23,GENERALIZED_TIME:24},hY={UNIVERSAL:0,APPLICATION:1,CONTEXT_SPECIFIC:2,PRIVATE:3},gY=class{constructor(t){if(this.number=t&31,this.constructed=(t&32)===32,this.class=t>>6,this.number===31)throw new rve.ASN1ParseError("long form tags not supported");if(this.class===hY.UNIVERSAL&&this.number===0)throw new rve.ASN1ParseError("unsupported tag 0x00")}isUniversal(){return this.class===hY.UNIVERSAL}isContextSpecific(t){let r=this.class===hY.CONTEXT_SPECIFIC;return t!==void 0?r&&this.number===t:r}isBoolean(){return this.isUniversal()&&this.number===iy.BOOLEAN}isInteger(){return this.isUniversal()&&this.number===iy.INTEGER}isBitString(){return this.isUniversal()&&this.number===iy.BIT_STRING}isOctetString(){return this.isUniversal()&&this.number===iy.OCTET_STRING}isOID(){return this.isUniversal()&&this.number===iy.OBJECT_IDENTIFIER}isUTCTime(){return this.isUniversal()&&this.number===iy.UTC_TIME}isGeneralizedTime(){return this.isUniversal()&&this.number===iy.GENERALIZED_TIME}toDER(){return this.number|(this.constructed?32:0)|this.class<<6}};GN.ASN1Tag=gY});var ave=G(WN=>{"use strict";Object.defineProperty(WN,"__esModule",{value:!0});WN.ASN1Obj=void 0;var dY=Cb(),sy=HN(),sve=$2e(),_w=tve(),gyt=nve(),qN=class{constructor(t,r,s){this.tag=t,this.value=r,this.subs=s}static parseBuffer(t){return ove(new dY.ByteStream(t))}toDER(){let t=new dY.ByteStream;if(this.subs.length>0)for(let a of this.subs)t.appendView(a.toDER());else t.appendView(this.value);let r=t.buffer,s=new dY.ByteStream;return s.appendChar(this.tag.toDER()),s.appendView((0,sve.encodeLength)(r.length)),s.appendView(r),s.buffer}toBoolean(){if(!this.tag.isBoolean())throw new sy.ASN1TypeError("not a boolean");return(0,_w.parseBoolean)(this.value)}toInteger(){if(!this.tag.isInteger())throw new sy.ASN1TypeError("not an integer");return(0,_w.parseInteger)(this.value)}toOID(){if(!this.tag.isOID())throw new sy.ASN1TypeError("not an OID");return(0,_w.parseOID)(this.value)}toDate(){switch(!0){case this.tag.isUTCTime():return(0,_w.parseTime)(this.value,!0);case this.tag.isGeneralizedTime():return(0,_w.parseTime)(this.value,!1);default:throw new sy.ASN1TypeError("not a date")}}toBitString(){if(!this.tag.isBitString())throw new sy.ASN1TypeError("not a bit string");return(0,_w.parseBitString)(this.value)}};WN.ASN1Obj=qN;function ove(e){let t=new gyt.ASN1Tag(e.getUint8()),r=(0,sve.decodeLength)(e),s=e.slice(e.position,r),a=e.position,n=[];if(t.constructed)n=ive(e,r);else if(t.isOctetString())try{n=ive(e,r)}catch{}return n.length===0&&e.seek(a+r),new qN(t,s,n)}function ive(e,t){let r=e.position+t;if(r>e.length)throw new sy.ASN1ParseError("invalid length");let s=[];for(;e.position{"use strict";Object.defineProperty(VN,"__esModule",{value:!0});VN.ASN1Obj=void 0;var dyt=ave();Object.defineProperty(VN,"ASN1Obj",{enumerable:!0,get:function(){return dyt.ASN1Obj}})});var Hw=G(Ig=>{"use strict";var myt=Ig&&Ig.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Ig,"__esModule",{value:!0});Ig.createPublicKey=yyt;Ig.digest=Eyt;Ig.verify=Iyt;Ig.bufferEqual=Cyt;var wb=myt(Ie("crypto"));function yyt(e,t="spki"){return typeof e=="string"?wb.default.createPublicKey(e):wb.default.createPublicKey({key:e,format:"der",type:t})}function Eyt(e,...t){let r=wb.default.createHash(e);for(let s of t)r.update(s);return r.digest()}function Iyt(e,t,r,s){try{return wb.default.verify(s,e,t,r)}catch{return!1}}function Cyt(e,t){try{return wb.default.timingSafeEqual(e,t)}catch{return!1}}});var lve=G(mY=>{"use strict";Object.defineProperty(mY,"__esModule",{value:!0});mY.preAuthEncoding=Byt;var wyt="DSSEv1";function Byt(e,t){let r=[wyt,e.length,e,t.length,""].join(" ");return Buffer.concat([Buffer.from(r,"ascii"),t])}});var fve=G(KN=>{"use strict";Object.defineProperty(KN,"__esModule",{value:!0});KN.base64Encode=vyt;KN.base64Decode=Syt;var cve="base64",uve="utf-8";function vyt(e){return Buffer.from(e,uve).toString(cve)}function Syt(e){return Buffer.from(e,cve).toString(uve)}});var Ave=G(EY=>{"use strict";Object.defineProperty(EY,"__esModule",{value:!0});EY.canonicalize=yY;function yY(e){let t="";if(e===null||typeof e!="object"||e.toJSON!=null)t+=JSON.stringify(e);else if(Array.isArray(e)){t+="[";let r=!0;e.forEach(s=>{r||(t+=","),r=!1,t+=yY(s)}),t+="]"}else{t+="{";let r=!0;Object.keys(e).sort().forEach(s=>{r||(t+=","),r=!1,t+=JSON.stringify(s),t+=":",t+=yY(e[s])}),t+="}"}return t}});var IY=G(JN=>{"use strict";Object.defineProperty(JN,"__esModule",{value:!0});JN.toDER=Pyt;JN.fromDER=xyt;var Dyt=/-----BEGIN (.*)-----/,byt=/-----END (.*)-----/;function Pyt(e){let t="";return e.split(` -`).forEach(r=>{r.match(Dyt)||r.match(byt)||(t+=r)}),Buffer.from(t,"base64")}function xyt(e,t="CERTIFICATE"){let s=e.toString("base64").match(/.{1,64}/g)||"";return[`-----BEGIN ${t}-----`,...s,`-----END ${t}-----`].join(` -`).concat(` -`)}});var zN=G(jw=>{"use strict";Object.defineProperty(jw,"__esModule",{value:!0});jw.SHA2_HASH_ALGOS=jw.ECDSA_SIGNATURE_ALGOS=void 0;jw.ECDSA_SIGNATURE_ALGOS={"1.2.840.10045.4.3.1":"sha224","1.2.840.10045.4.3.2":"sha256","1.2.840.10045.4.3.3":"sha384","1.2.840.10045.4.3.4":"sha512"};jw.SHA2_HASH_ALGOS={"2.16.840.1.101.3.4.2.1":"sha256","2.16.840.1.101.3.4.2.2":"sha384","2.16.840.1.101.3.4.2.3":"sha512"}});var wY=G(ZN=>{"use strict";Object.defineProperty(ZN,"__esModule",{value:!0});ZN.RFC3161TimestampVerificationError=void 0;var CY=class extends Error{};ZN.RFC3161TimestampVerificationError=CY});var hve=G(SA=>{"use strict";var kyt=SA&&SA.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||("get"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),Qyt=SA&&SA.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ryt=SA&&SA.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&kyt(t,e,r);return Qyt(t,e),t};Object.defineProperty(SA,"__esModule",{value:!0});SA.TSTInfo=void 0;var pve=Ryt(Hw()),Tyt=zN(),Fyt=wY(),BY=class{constructor(t){this.root=t}get version(){return this.root.subs[0].toInteger()}get genTime(){return this.root.subs[4].toDate()}get messageImprintHashAlgorithm(){let t=this.messageImprintObj.subs[0].subs[0].toOID();return Tyt.SHA2_HASH_ALGOS[t]}get messageImprintHashedMessage(){return this.messageImprintObj.subs[1].value}get raw(){return this.root.toDER()}verify(t){let r=pve.digest(this.messageImprintHashAlgorithm,t);if(!pve.bufferEqual(r,this.messageImprintHashedMessage))throw new Fyt.RFC3161TimestampVerificationError("message imprint does not match artifact")}get messageImprintObj(){return this.root.subs[2]}};SA.TSTInfo=BY});var dve=G(DA=>{"use strict";var Nyt=DA&&DA.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||("get"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),Oyt=DA&&DA.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Lyt=DA&&DA.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&Nyt(t,e,r);return Oyt(t,e),t};Object.defineProperty(DA,"__esModule",{value:!0});DA.RFC3161Timestamp=void 0;var Myt=YN(),vY=Lyt(Hw()),gve=zN(),Bb=wY(),Uyt=hve(),_yt="1.2.840.113549.1.7.2",Hyt="1.2.840.113549.1.9.16.1.4",jyt="1.2.840.113549.1.9.4",SY=class e{constructor(t){this.root=t}static parse(t){let r=Myt.ASN1Obj.parseBuffer(t);return new e(r)}get status(){return this.pkiStatusInfoObj.subs[0].toInteger()}get contentType(){return this.contentTypeObj.toOID()}get eContentType(){return this.eContentTypeObj.toOID()}get signingTime(){return this.tstInfo.genTime}get signerIssuer(){return this.signerSidObj.subs[0].value}get signerSerialNumber(){return this.signerSidObj.subs[1].value}get signerDigestAlgorithm(){let t=this.signerDigestAlgorithmObj.subs[0].toOID();return gve.SHA2_HASH_ALGOS[t]}get signatureAlgorithm(){let t=this.signatureAlgorithmObj.subs[0].toOID();return gve.ECDSA_SIGNATURE_ALGOS[t]}get signatureValue(){return this.signatureValueObj.value}get tstInfo(){return new Uyt.TSTInfo(this.eContentObj.subs[0].subs[0])}verify(t,r){if(!this.timeStampTokenObj)throw new Bb.RFC3161TimestampVerificationError("timeStampToken is missing");if(this.contentType!==_yt)throw new Bb.RFC3161TimestampVerificationError(`incorrect content type: ${this.contentType}`);if(this.eContentType!==Hyt)throw new Bb.RFC3161TimestampVerificationError(`incorrect encapsulated content type: ${this.eContentType}`);this.tstInfo.verify(t),this.verifyMessageDigest(),this.verifySignature(r)}verifyMessageDigest(){let t=vY.digest(this.signerDigestAlgorithm,this.tstInfo.raw),r=this.messageDigestAttributeObj.subs[1].subs[0].value;if(!vY.bufferEqual(t,r))throw new Bb.RFC3161TimestampVerificationError("signed data does not match tstInfo")}verifySignature(t){let r=this.signedAttrsObj.toDER();if(r[0]=49,!vY.verify(r,t,this.signatureValue,this.signatureAlgorithm))throw new Bb.RFC3161TimestampVerificationError("signature verification failed")}get pkiStatusInfoObj(){return this.root.subs[0]}get timeStampTokenObj(){return this.root.subs[1]}get contentTypeObj(){return this.timeStampTokenObj.subs[0]}get signedDataObj(){return this.timeStampTokenObj.subs.find(r=>r.tag.isContextSpecific(0)).subs[0]}get encapContentInfoObj(){return this.signedDataObj.subs[2]}get signerInfosObj(){let t=this.signedDataObj;return t.subs[t.subs.length-1]}get signerInfoObj(){return this.signerInfosObj.subs[0]}get eContentTypeObj(){return this.encapContentInfoObj.subs[0]}get eContentObj(){return this.encapContentInfoObj.subs[1]}get signedAttrsObj(){return this.signerInfoObj.subs.find(r=>r.tag.isContextSpecific(0))}get messageDigestAttributeObj(){return this.signedAttrsObj.subs.find(r=>r.subs[0].tag.isOID()&&r.subs[0].toOID()===jyt)}get signerSidObj(){return this.signerInfoObj.subs[1]}get signerDigestAlgorithmObj(){return this.signerInfoObj.subs[2]}get signatureAlgorithmObj(){return this.signerInfoObj.subs[4]}get signatureValueObj(){return this.signerInfoObj.subs[5]}};DA.RFC3161Timestamp=SY});var mve=G(XN=>{"use strict";Object.defineProperty(XN,"__esModule",{value:!0});XN.RFC3161Timestamp=void 0;var Gyt=dve();Object.defineProperty(XN,"RFC3161Timestamp",{enumerable:!0,get:function(){return Gyt.RFC3161Timestamp}})});var Eve=G(bA=>{"use strict";var qyt=bA&&bA.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||("get"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),Wyt=bA&&bA.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Vyt=bA&&bA.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&qyt(t,e,r);return Wyt(t,e),t};Object.defineProperty(bA,"__esModule",{value:!0});bA.SignedCertificateTimestamp=void 0;var Yyt=Vyt(Hw()),yve=Cb(),DY=class e{constructor(t){this.version=t.version,this.logID=t.logID,this.timestamp=t.timestamp,this.extensions=t.extensions,this.hashAlgorithm=t.hashAlgorithm,this.signatureAlgorithm=t.signatureAlgorithm,this.signature=t.signature}get datetime(){return new Date(Number(this.timestamp.readBigInt64BE()))}get algorithm(){switch(this.hashAlgorithm){case 0:return"none";case 1:return"md5";case 2:return"sha1";case 3:return"sha224";case 4:return"sha256";case 5:return"sha384";case 6:return"sha512";default:return"unknown"}}verify(t,r){let s=new yve.ByteStream;return s.appendChar(this.version),s.appendChar(0),s.appendView(this.timestamp),s.appendUint16(1),s.appendView(t),s.appendUint16(this.extensions.byteLength),this.extensions.byteLength>0&&s.appendView(this.extensions),Yyt.verify(s.buffer,r,this.signature,this.algorithm)}static parse(t){let r=new yve.ByteStream(t),s=r.getUint8(),a=r.getBlock(32),n=r.getBlock(8),c=r.getUint16(),f=r.getBlock(c),p=r.getUint8(),h=r.getUint8(),E=r.getUint16(),C=r.getBlock(E);if(r.position!==t.length)throw new Error("SCT buffer length mismatch");return new e({version:s,logID:a,timestamp:n,extensions:f,hashAlgorithm:p,signatureAlgorithm:h,signature:C})}};bA.SignedCertificateTimestamp=DY});var TY=G(ca=>{"use strict";Object.defineProperty(ca,"__esModule",{value:!0});ca.X509SCTExtension=ca.X509SubjectKeyIDExtension=ca.X509AuthorityKeyIDExtension=ca.X509SubjectAlternativeNameExtension=ca.X509KeyUsageExtension=ca.X509BasicConstraintsExtension=ca.X509Extension=void 0;var Kyt=Cb(),Jyt=Eve(),fh=class{constructor(t){this.root=t}get oid(){return this.root.subs[0].toOID()}get critical(){return this.root.subs.length===3?this.root.subs[1].toBoolean():!1}get value(){return this.extnValueObj.value}get valueObj(){return this.extnValueObj}get extnValueObj(){return this.root.subs[this.root.subs.length-1]}};ca.X509Extension=fh;var bY=class extends fh{get isCA(){return this.sequence.subs[0]?.toBoolean()??!1}get pathLenConstraint(){return this.sequence.subs.length>1?this.sequence.subs[1].toInteger():void 0}get sequence(){return this.extnValueObj.subs[0]}};ca.X509BasicConstraintsExtension=bY;var PY=class extends fh{get digitalSignature(){return this.bitString[0]===1}get keyCertSign(){return this.bitString[5]===1}get crlSign(){return this.bitString[6]===1}get bitString(){return this.extnValueObj.subs[0].toBitString()}};ca.X509KeyUsageExtension=PY;var xY=class extends fh{get rfc822Name(){return this.findGeneralName(1)?.value.toString("ascii")}get uri(){return this.findGeneralName(6)?.value.toString("ascii")}otherName(t){let r=this.findGeneralName(0);return r===void 0||r.subs[0].toOID()!==t?void 0:r.subs[1].subs[0].value.toString("ascii")}findGeneralName(t){return this.generalNames.find(r=>r.tag.isContextSpecific(t))}get generalNames(){return this.extnValueObj.subs[0].subs}};ca.X509SubjectAlternativeNameExtension=xY;var kY=class extends fh{get keyIdentifier(){return this.findSequenceMember(0)?.value}findSequenceMember(t){return this.sequence.subs.find(r=>r.tag.isContextSpecific(t))}get sequence(){return this.extnValueObj.subs[0]}};ca.X509AuthorityKeyIDExtension=kY;var QY=class extends fh{get keyIdentifier(){return this.extnValueObj.subs[0].value}};ca.X509SubjectKeyIDExtension=QY;var RY=class extends fh{constructor(t){super(t)}get signedCertificateTimestamps(){let t=this.extnValueObj.subs[0].value,r=new Kyt.ByteStream(t),s=r.getUint16()+2,a=[];for(;r.position{"use strict";var zyt=sc&&sc.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||("get"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),Zyt=sc&&sc.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Cve=sc&&sc.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&zyt(t,e,r);return Zyt(t,e),t};Object.defineProperty(sc,"__esModule",{value:!0});sc.X509Certificate=sc.EXTENSION_OID_SCT=void 0;var Xyt=YN(),Ive=Cve(Hw()),$yt=zN(),eEt=Cve(IY()),oy=TY(),tEt="2.5.29.14",rEt="2.5.29.15",nEt="2.5.29.17",iEt="2.5.29.19",sEt="2.5.29.35";sc.EXTENSION_OID_SCT="1.3.6.1.4.1.11129.2.4.2";var FY=class e{constructor(t){this.root=t}static parse(t){let r=typeof t=="string"?eEt.toDER(t):t,s=Xyt.ASN1Obj.parseBuffer(r);return new e(s)}get tbsCertificate(){return this.tbsCertificateObj}get version(){return`v${(this.versionObj.subs[0].toInteger()+BigInt(1)).toString()}`}get serialNumber(){return this.serialNumberObj.value}get notBefore(){return this.validityObj.subs[0].toDate()}get notAfter(){return this.validityObj.subs[1].toDate()}get issuer(){return this.issuerObj.value}get subject(){return this.subjectObj.value}get publicKey(){return this.subjectPublicKeyInfoObj.toDER()}get signatureAlgorithm(){let t=this.signatureAlgorithmObj.subs[0].toOID();return $yt.ECDSA_SIGNATURE_ALGOS[t]}get signatureValue(){return this.signatureValueObj.value.subarray(1)}get subjectAltName(){let t=this.extSubjectAltName;return t?.uri||t?.rfc822Name}get extensions(){return this.extensionsObj?.subs[0]?.subs||[]}get extKeyUsage(){let t=this.findExtension(rEt);return t?new oy.X509KeyUsageExtension(t):void 0}get extBasicConstraints(){let t=this.findExtension(iEt);return t?new oy.X509BasicConstraintsExtension(t):void 0}get extSubjectAltName(){let t=this.findExtension(nEt);return t?new oy.X509SubjectAlternativeNameExtension(t):void 0}get extAuthorityKeyID(){let t=this.findExtension(sEt);return t?new oy.X509AuthorityKeyIDExtension(t):void 0}get extSubjectKeyID(){let t=this.findExtension(tEt);return t?new oy.X509SubjectKeyIDExtension(t):void 0}get extSCT(){let t=this.findExtension(sc.EXTENSION_OID_SCT);return t?new oy.X509SCTExtension(t):void 0}get isCA(){let t=this.extBasicConstraints?.isCA||!1;return this.extKeyUsage?t&&this.extKeyUsage.keyCertSign:t}extension(t){let r=this.findExtension(t);return r?new oy.X509Extension(r):void 0}verify(t){let r=t?.publicKey||this.publicKey,s=Ive.createPublicKey(r);return Ive.verify(this.tbsCertificate.toDER(),s,this.signatureValue,this.signatureAlgorithm)}validForDate(t){return this.notBefore<=t&&t<=this.notAfter}equals(t){return this.root.toDER().equals(t.root.toDER())}clone(){let t=this.root.toDER(),r=Buffer.alloc(t.length);return t.copy(r),e.parse(r)}findExtension(t){return this.extensions.find(r=>r.subs[0].toOID()===t)}get tbsCertificateObj(){return this.root.subs[0]}get signatureAlgorithmObj(){return this.root.subs[1]}get signatureValueObj(){return this.root.subs[2]}get versionObj(){return this.tbsCertificateObj.subs[0]}get serialNumberObj(){return this.tbsCertificateObj.subs[1]}get issuerObj(){return this.tbsCertificateObj.subs[3]}get validityObj(){return this.tbsCertificateObj.subs[4]}get subjectObj(){return this.tbsCertificateObj.subs[5]}get subjectPublicKeyInfoObj(){return this.tbsCertificateObj.subs[6]}get extensionsObj(){return this.tbsCertificateObj.subs.find(t=>t.tag.isContextSpecific(3))}};sc.X509Certificate=FY});var vve=G(Cg=>{"use strict";Object.defineProperty(Cg,"__esModule",{value:!0});Cg.X509SCTExtension=Cg.X509Certificate=Cg.EXTENSION_OID_SCT=void 0;var Bve=wve();Object.defineProperty(Cg,"EXTENSION_OID_SCT",{enumerable:!0,get:function(){return Bve.EXTENSION_OID_SCT}});Object.defineProperty(Cg,"X509Certificate",{enumerable:!0,get:function(){return Bve.X509Certificate}});var oEt=TY();Object.defineProperty(Cg,"X509SCTExtension",{enumerable:!0,get:function(){return oEt.X509SCTExtension}})});var bl=G(zn=>{"use strict";var aEt=zn&&zn.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||("get"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),lEt=zn&&zn.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),vb=zn&&zn.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&aEt(t,e,r);return lEt(t,e),t};Object.defineProperty(zn,"__esModule",{value:!0});zn.X509SCTExtension=zn.X509Certificate=zn.EXTENSION_OID_SCT=zn.ByteStream=zn.RFC3161Timestamp=zn.pem=zn.json=zn.encoding=zn.dsse=zn.crypto=zn.ASN1Obj=void 0;var cEt=YN();Object.defineProperty(zn,"ASN1Obj",{enumerable:!0,get:function(){return cEt.ASN1Obj}});zn.crypto=vb(Hw());zn.dsse=vb(lve());zn.encoding=vb(fve());zn.json=vb(Ave());zn.pem=vb(IY());var uEt=mve();Object.defineProperty(zn,"RFC3161Timestamp",{enumerable:!0,get:function(){return uEt.RFC3161Timestamp}});var fEt=Cb();Object.defineProperty(zn,"ByteStream",{enumerable:!0,get:function(){return fEt.ByteStream}});var NY=vve();Object.defineProperty(zn,"EXTENSION_OID_SCT",{enumerable:!0,get:function(){return NY.EXTENSION_OID_SCT}});Object.defineProperty(zn,"X509Certificate",{enumerable:!0,get:function(){return NY.X509Certificate}});Object.defineProperty(zn,"X509SCTExtension",{enumerable:!0,get:function(){return NY.X509SCTExtension}})});var Sve=G(OY=>{"use strict";Object.defineProperty(OY,"__esModule",{value:!0});OY.extractJWTSubject=pEt;var AEt=bl();function pEt(e){let t=e.split(".",3),r=JSON.parse(AEt.encoding.base64Decode(t[1]));switch(r.iss){case"https://accounts.google.com":case"https://oauth2.sigstore.dev/auth":return r.email;default:return r.sub}}});var Dve=G((yer,hEt)=>{hEt.exports={name:"@sigstore/sign",version:"3.1.0",description:"Sigstore signing library",main:"dist/index.js",types:"dist/index.d.ts",scripts:{clean:"shx rm -rf dist *.tsbuildinfo",build:"tsc --build",test:"jest"},files:["dist"],author:"bdehamer@github.com",license:"Apache-2.0",repository:{type:"git",url:"git+https://github.com/sigstore/sigstore-js.git"},bugs:{url:"https://github.com/sigstore/sigstore-js/issues"},homepage:"https://github.com/sigstore/sigstore-js/tree/main/packages/sign#readme",publishConfig:{provenance:!0},devDependencies:{"@sigstore/jest":"^0.0.0","@sigstore/mock":"^0.10.0","@sigstore/rekor-types":"^3.0.0","@types/make-fetch-happen":"^10.0.4","@types/promise-retry":"^1.1.6"},dependencies:{"@sigstore/bundle":"^3.1.0","@sigstore/core":"^2.0.0","@sigstore/protobuf-specs":"^0.4.0","make-fetch-happen":"^14.0.2","proc-log":"^5.0.0","promise-retry":"^2.0.1"},engines:{node:"^18.17.0 || >=20.5.0"}}});var Pve=G(Gw=>{"use strict";var gEt=Gw&&Gw.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Gw,"__esModule",{value:!0});Gw.getUserAgent=void 0;var bve=gEt(Ie("os")),dEt=()=>{let e=Dve().version,t=process.version,r=bve.default.platform(),s=bve.default.arch();return`sigstore-js/${e} (Node ${t}) (${r}/${s})`};Gw.getUserAgent=dEt});var wg=G(Ki=>{"use strict";var mEt=Ki&&Ki.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||("get"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),yEt=Ki&&Ki.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),xve=Ki&&Ki.__importStar||function(){var e=function(t){return e=Object.getOwnPropertyNames||function(r){var s=[];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(s[s.length]=a);return s},e(t)};return function(t){if(t&&t.__esModule)return t;var r={};if(t!=null)for(var s=e(t),a=0;a{"use strict";Object.defineProperty($N,"__esModule",{value:!0});$N.BaseBundleBuilder=void 0;var LY=class{constructor(t){this.signer=t.signer,this.witnesses=t.witnesses}async create(t){let r=await this.prepare(t).then(f=>this.signer.sign(f)),s=await this.package(t,r),a=await Promise.all(this.witnesses.map(f=>f.testify(s.content,EEt(r.key)))),n=[],c=[];return a.forEach(({tlogEntries:f,rfc3161Timestamps:p})=>{n.push(...f??[]),c.push(...p??[])}),s.verificationMaterial.tlogEntries=n,s.verificationMaterial.timestampVerificationData={rfc3161Timestamps:c},s}async prepare(t){return t.data}};$N.BaseBundleBuilder=LY;function EEt(e){switch(e.$case){case"publicKey":return e.publicKey;case"x509Certificate":return e.certificate}}});var _Y=G(PA=>{"use strict";var IEt=PA&&PA.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||("get"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),CEt=PA&&PA.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),wEt=PA&&PA.__importStar||function(){var e=function(t){return e=Object.getOwnPropertyNames||function(r){var s=[];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(s[s.length]=a);return s},e(t)};return function(t){if(t&&t.__esModule)return t;var r={};if(t!=null)for(var s=e(t),a=0;a{"use strict";Object.defineProperty(eO,"__esModule",{value:!0});eO.DSSEBundleBuilder=void 0;var SEt=wg(),DEt=MY(),bEt=_Y(),HY=class extends DEt.BaseBundleBuilder{constructor(t){super(t),this.certificateChain=t.certificateChain??!1}async prepare(t){let r=Qve(t);return SEt.dsse.preAuthEncoding(r.type,r.data)}async package(t,r){return(0,bEt.toDSSEBundle)(Qve(t),r,this.certificateChain)}};eO.DSSEBundleBuilder=HY;function Qve(e){return{...e,type:e.type??""}}});var Tve=G(tO=>{"use strict";Object.defineProperty(tO,"__esModule",{value:!0});tO.MessageSignatureBundleBuilder=void 0;var PEt=MY(),xEt=_Y(),jY=class extends PEt.BaseBundleBuilder{constructor(t){super(t)}async package(t,r){return(0,xEt.toMessageSignatureBundle)(t,r)}};tO.MessageSignatureBundleBuilder=jY});var Fve=G(qw=>{"use strict";Object.defineProperty(qw,"__esModule",{value:!0});qw.MessageSignatureBundleBuilder=qw.DSSEBundleBuilder=void 0;var kEt=Rve();Object.defineProperty(qw,"DSSEBundleBuilder",{enumerable:!0,get:function(){return kEt.DSSEBundleBuilder}});var QEt=Tve();Object.defineProperty(qw,"MessageSignatureBundleBuilder",{enumerable:!0,get:function(){return QEt.MessageSignatureBundleBuilder}})});var nO=G(rO=>{"use strict";Object.defineProperty(rO,"__esModule",{value:!0});rO.HTTPError=void 0;var GY=class extends Error{constructor({status:t,message:r,location:s}){super(`(${t}) ${r}`),this.statusCode=t,this.location=s}};rO.HTTPError=GY});var Ww=G(Db=>{"use strict";Object.defineProperty(Db,"__esModule",{value:!0});Db.InternalError=void 0;Db.internalError=TEt;var REt=nO(),iO=class extends Error{constructor({code:t,message:r,cause:s}){super(r),this.name=this.constructor.name,this.cause=s,this.code=t}};Db.InternalError=iO;function TEt(e,t,r){throw e instanceof REt.HTTPError&&(r+=` - ${e.message}`),new iO({code:t,message:r,cause:e})}});var sO=G((Per,Nve)=>{Nve.exports=fetch});var Ove=G(Vw=>{"use strict";var FEt=Vw&&Vw.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Vw,"__esModule",{value:!0});Vw.CIContextProvider=void 0;var NEt=FEt(sO()),OEt=[LEt,MEt],qY=class{constructor(t="sigstore"){this.audience=t}async getToken(){return Promise.any(OEt.map(t=>t(this.audience))).catch(()=>Promise.reject("CI: no tokens available"))}};Vw.CIContextProvider=qY;async function LEt(e){if(!process.env.ACTIONS_ID_TOKEN_REQUEST_URL||!process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN)return Promise.reject("no token available");let t=new URL(process.env.ACTIONS_ID_TOKEN_REQUEST_URL);return t.searchParams.append("audience",e),(await(0,NEt.default)(t.href,{retry:2,headers:{Accept:"application/json",Authorization:`Bearer ${process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN}`}})).json().then(s=>s.value)}async function MEt(){return process.env.SIGSTORE_ID_TOKEN?process.env.SIGSTORE_ID_TOKEN:Promise.reject("no token available")}});var Lve=G(oO=>{"use strict";Object.defineProperty(oO,"__esModule",{value:!0});oO.CIContextProvider=void 0;var UEt=Ove();Object.defineProperty(oO,"CIContextProvider",{enumerable:!0,get:function(){return UEt.CIContextProvider}})});var Uve=G((Qer,Mve)=>{var _Et=Symbol("proc-log.meta");Mve.exports={META:_Et,output:{LEVELS:["standard","error","buffer","flush"],KEYS:{standard:"standard",error:"error",buffer:"buffer",flush:"flush"},standard:function(...e){return process.emit("output","standard",...e)},error:function(...e){return process.emit("output","error",...e)},buffer:function(...e){return process.emit("output","buffer",...e)},flush:function(...e){return process.emit("output","flush",...e)}},log:{LEVELS:["notice","error","warn","info","verbose","http","silly","timing","pause","resume"],KEYS:{notice:"notice",error:"error",warn:"warn",info:"info",verbose:"verbose",http:"http",silly:"silly",timing:"timing",pause:"pause",resume:"resume"},error:function(...e){return process.emit("log","error",...e)},notice:function(...e){return process.emit("log","notice",...e)},warn:function(...e){return process.emit("log","warn",...e)},info:function(...e){return process.emit("log","info",...e)},verbose:function(...e){return process.emit("log","verbose",...e)},http:function(...e){return process.emit("log","http",...e)},silly:function(...e){return process.emit("log","silly",...e)},timing:function(...e){return process.emit("log","timing",...e)},pause:function(){return process.emit("log","pause")},resume:function(){return process.emit("log","resume")}},time:{LEVELS:["start","end"],KEYS:{start:"start",end:"end"},start:function(e,t){process.emit("time","start",e);function r(){return process.emit("time","end",e)}if(typeof t=="function"){let s=t();return s&&s.finally?s.finally(r):(r(),s)}return r},end:function(e){return process.emit("time","end",e)}},input:{LEVELS:["start","end","read"],KEYS:{start:"start",end:"end",read:"read"},start:function(e){process.emit("input","start");function t(){return process.emit("input","end")}if(typeof e=="function"){let r=e();return r&&r.finally?r.finally(t):(t(),r)}return t},end:function(){return process.emit("input","end")},read:function(...e){let t,r,s=new Promise((a,n)=>{t=a,r=n});return process.emit("input","read",t,r,...e),s}}}});var jve=G((Rer,Hve)=>{"use strict";function _ve(e,t){for(let r in t)Object.defineProperty(e,r,{value:t[r],enumerable:!0,configurable:!0});return e}function HEt(e,t,r){if(!e||typeof e=="string")throw new TypeError("Please pass an Error to err-code");r||(r={}),typeof t=="object"&&(r=t,t=void 0),t!=null&&(r.code=t);try{return _ve(e,r)}catch{r.message=e.message,r.stack=e.stack;let a=function(){};return a.prototype=Object.create(Object.getPrototypeOf(e)),_ve(new a,r)}}Hve.exports=HEt});var qve=G((Ter,Gve)=>{function Zc(e,t){typeof t=="boolean"&&(t={forever:t}),this._originalTimeouts=JSON.parse(JSON.stringify(e)),this._timeouts=e,this._options=t||{},this._maxRetryTime=t&&t.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}Gve.exports=Zc;Zc.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts};Zc.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timeouts=[],this._cachedTimeouts=null};Zc.prototype.retry=function(e){if(this._timeout&&clearTimeout(this._timeout),!e)return!1;var t=new Date().getTime();if(e&&t-this._operationStart>=this._maxRetryTime)return this._errors.unshift(new Error("RetryOperation timeout occurred")),!1;this._errors.push(e);var r=this._timeouts.shift();if(r===void 0)if(this._cachedTimeouts)this._errors.splice(this._errors.length-1,this._errors.length),this._timeouts=this._cachedTimeouts.slice(0),r=this._timeouts.shift();else return!1;var s=this,a=setTimeout(function(){s._attempts++,s._operationTimeoutCb&&(s._timeout=setTimeout(function(){s._operationTimeoutCb(s._attempts)},s._operationTimeout),s._options.unref&&s._timeout.unref()),s._fn(s._attempts)},r);return this._options.unref&&a.unref(),!0};Zc.prototype.attempt=function(e,t){this._fn=e,t&&(t.timeout&&(this._operationTimeout=t.timeout),t.cb&&(this._operationTimeoutCb=t.cb));var r=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){r._operationTimeoutCb()},r._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)};Zc.prototype.try=function(e){console.log("Using RetryOperation.try() is deprecated"),this.attempt(e)};Zc.prototype.start=function(e){console.log("Using RetryOperation.start() is deprecated"),this.attempt(e)};Zc.prototype.start=Zc.prototype.try;Zc.prototype.errors=function(){return this._errors};Zc.prototype.attempts=function(){return this._attempts};Zc.prototype.mainError=function(){if(this._errors.length===0)return null;for(var e={},t=null,r=0,s=0;s=r&&(t=a,r=c)}return t}});var Wve=G(ay=>{var jEt=qve();ay.operation=function(e){var t=ay.timeouts(e);return new jEt(t,{forever:e&&e.forever,unref:e&&e.unref,maxRetryTime:e&&e.maxRetryTime})};ay.timeouts=function(e){if(e instanceof Array)return[].concat(e);var t={retries:10,factor:2,minTimeout:1*1e3,maxTimeout:1/0,randomize:!1};for(var r in e)t[r]=e[r];if(t.minTimeout>t.maxTimeout)throw new Error("minTimeout is greater than maxTimeout");for(var s=[],a=0;a{Vve.exports=Wve()});var zve=G((Oer,Jve)=>{"use strict";var GEt=jve(),qEt=Yve(),WEt=Object.prototype.hasOwnProperty;function Kve(e){return e&&e.code==="EPROMISERETRY"&&WEt.call(e,"retried")}function VEt(e,t){var r,s;return typeof e=="object"&&typeof t=="function"&&(r=t,t=e,e=r),s=qEt.operation(t),new Promise(function(a,n){s.attempt(function(c){Promise.resolve().then(function(){return e(function(f){throw Kve(f)&&(f=f.retried),GEt(new Error("Retrying"),"EPROMISERETRY",{retried:f})},c)}).then(a,function(f){Kve(f)&&(f=f.retried,s.retry(f||new Error))||n(f)})})})}Jve.exports=VEt});var aO=G(bb=>{"use strict";var Xve=bb&&bb.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(bb,"__esModule",{value:!0});bb.fetchWithRetry=iIt;var YEt=Ie("http2"),KEt=Xve(sO()),Zve=Uve(),JEt=Xve(zve()),zEt=wg(),ZEt=nO(),{HTTP2_HEADER_LOCATION:XEt,HTTP2_HEADER_CONTENT_TYPE:$Et,HTTP2_HEADER_USER_AGENT:eIt,HTTP_STATUS_INTERNAL_SERVER_ERROR:tIt,HTTP_STATUS_TOO_MANY_REQUESTS:rIt,HTTP_STATUS_REQUEST_TIMEOUT:nIt}=YEt.constants;async function iIt(e,t){return(0,JEt.default)(async(r,s)=>{let a=t.method||"POST",n={[eIt]:zEt.ua.getUserAgent(),...t.headers},c=await(0,KEt.default)(e,{method:a,headers:n,body:t.body,timeout:t.timeout,retry:!1}).catch(f=>(Zve.log.http("fetch",`${a} ${e} attempt ${s} failed with ${f}`),r(f)));if(c.ok)return c;{let f=await sIt(c);if(Zve.log.http("fetch",`${a} ${e} attempt ${s} failed with ${c.status}`),oIt(c.status))return r(f);throw f}},aIt(t.retry))}var sIt=async e=>{let t=e.statusText,r=e.headers.get(XEt)||void 0;if(e.headers.get($Et)?.includes("application/json"))try{t=(await e.json()).message||t}catch{}return new ZEt.HTTPError({status:e.status,message:t,location:r})},oIt=e=>[nIt,rIt].includes(e)||e>=tIt,aIt=e=>typeof e=="boolean"?{retries:e?1:0}:typeof e=="number"?{retries:e}:{retries:0,...e}});var $ve=G(lO=>{"use strict";Object.defineProperty(lO,"__esModule",{value:!0});lO.Fulcio=void 0;var lIt=aO(),WY=class{constructor(t){this.options=t}async createSigningCertificate(t){let{baseURL:r,retry:s,timeout:a}=this.options,n=`${r}/api/v2/signingCert`;return(await(0,lIt.fetchWithRetry)(n,{headers:{"Content-Type":"application/json"},body:JSON.stringify(t),timeout:a,retry:s})).json()}};lO.Fulcio=WY});var eSe=G(cO=>{"use strict";Object.defineProperty(cO,"__esModule",{value:!0});cO.CAClient=void 0;var cIt=Ww(),uIt=$ve(),VY=class{constructor(t){this.fulcio=new uIt.Fulcio({baseURL:t.fulcioBaseURL,retry:t.retry,timeout:t.timeout})}async createSigningCertificate(t,r,s){let a=fIt(t,r,s);try{let n=await this.fulcio.createSigningCertificate(a);return(n.signedCertificateEmbeddedSct?n.signedCertificateEmbeddedSct:n.signedCertificateDetachedSct).chain.certificates}catch(n){(0,cIt.internalError)(n,"CA_CREATE_SIGNING_CERTIFICATE_ERROR","error creating signing certificate")}}};cO.CAClient=VY;function fIt(e,t,r){return{credentials:{oidcIdentityToken:e},publicKeyRequest:{publicKey:{algorithm:"ECDSA",content:t},proofOfPossession:r.toString("base64")}}}});var rSe=G(Yw=>{"use strict";var AIt=Yw&&Yw.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Yw,"__esModule",{value:!0});Yw.EphemeralSigner=void 0;var tSe=AIt(Ie("crypto")),pIt="ec",hIt="P-256",YY=class{constructor(){this.keypair=tSe.default.generateKeyPairSync(pIt,{namedCurve:hIt})}async sign(t){let r=tSe.default.sign(null,t,this.keypair.privateKey),s=this.keypair.publicKey.export({format:"pem",type:"spki"}).toString("ascii");return{signature:r,key:{$case:"publicKey",publicKey:s}}}};Yw.EphemeralSigner=YY});var nSe=G(ly=>{"use strict";Object.defineProperty(ly,"__esModule",{value:!0});ly.FulcioSigner=ly.DEFAULT_FULCIO_URL=void 0;var KY=Ww(),gIt=wg(),dIt=eSe(),mIt=rSe();ly.DEFAULT_FULCIO_URL="https://fulcio.sigstore.dev";var JY=class{constructor(t){this.ca=new dIt.CAClient({...t,fulcioBaseURL:t.fulcioBaseURL||ly.DEFAULT_FULCIO_URL}),this.identityProvider=t.identityProvider,this.keyHolder=t.keyHolder||new mIt.EphemeralSigner}async sign(t){let r=await this.getIdentityToken(),s;try{s=gIt.oidc.extractJWTSubject(r)}catch(f){throw new KY.InternalError({code:"IDENTITY_TOKEN_PARSE_ERROR",message:`invalid identity token: ${r}`,cause:f})}let a=await this.keyHolder.sign(Buffer.from(s));if(a.key.$case!=="publicKey")throw new KY.InternalError({code:"CA_CREATE_SIGNING_CERTIFICATE_ERROR",message:"unexpected format for signing key"});let n=await this.ca.createSigningCertificate(r,a.key.publicKey,a.signature);return{signature:(await this.keyHolder.sign(t)).signature,key:{$case:"x509Certificate",certificate:n[0]}}}async getIdentityToken(){try{return await this.identityProvider.getToken()}catch(t){throw new KY.InternalError({code:"IDENTITY_TOKEN_READ_ERROR",message:"error retrieving identity token",cause:t})}}};ly.FulcioSigner=JY});var sSe=G(Kw=>{"use strict";Object.defineProperty(Kw,"__esModule",{value:!0});Kw.FulcioSigner=Kw.DEFAULT_FULCIO_URL=void 0;var iSe=nSe();Object.defineProperty(Kw,"DEFAULT_FULCIO_URL",{enumerable:!0,get:function(){return iSe.DEFAULT_FULCIO_URL}});Object.defineProperty(Kw,"FulcioSigner",{enumerable:!0,get:function(){return iSe.FulcioSigner}})});var lSe=G(uO=>{"use strict";Object.defineProperty(uO,"__esModule",{value:!0});uO.Rekor=void 0;var oSe=aO(),zY=class{constructor(t){this.options=t}async createEntry(t){let{baseURL:r,timeout:s,retry:a}=this.options,n=`${r}/api/v1/log/entries`,f=await(await(0,oSe.fetchWithRetry)(n,{headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(t),timeout:s,retry:a})).json();return aSe(f)}async getEntry(t){let{baseURL:r,timeout:s,retry:a}=this.options,n=`${r}/api/v1/log/entries/${t}`,f=await(await(0,oSe.fetchWithRetry)(n,{method:"GET",headers:{Accept:"application/json"},timeout:s,retry:a})).json();return aSe(f)}};uO.Rekor=zY;function aSe(e){let t=Object.entries(e);if(t.length!=1)throw new Error("Received multiple entries in Rekor response");let[r,s]=t[0];return{...s,uuid:r}}});var uSe=G(fO=>{"use strict";Object.defineProperty(fO,"__esModule",{value:!0});fO.TLogClient=void 0;var cSe=Ww(),yIt=nO(),EIt=lSe(),ZY=class{constructor(t){this.fetchOnConflict=t.fetchOnConflict??!1,this.rekor=new EIt.Rekor({baseURL:t.rekorBaseURL,retry:t.retry,timeout:t.timeout})}async createEntry(t){let r;try{r=await this.rekor.createEntry(t)}catch(s){if(IIt(s)&&this.fetchOnConflict){let a=s.location.split("/").pop()||"";try{r=await this.rekor.getEntry(a)}catch(n){(0,cSe.internalError)(n,"TLOG_FETCH_ENTRY_ERROR","error fetching tlog entry")}}else(0,cSe.internalError)(s,"TLOG_CREATE_ENTRY_ERROR","error creating tlog entry")}return r}};fO.TLogClient=ZY;function IIt(e){return e instanceof yIt.HTTPError&&e.statusCode===409&&e.location!==void 0}});var fSe=G(XY=>{"use strict";Object.defineProperty(XY,"__esModule",{value:!0});XY.toProposedEntry=wIt;var CIt=Ib(),Bg=wg(),Pb="sha256";function wIt(e,t,r="dsse"){switch(e.$case){case"dsseEnvelope":return r==="intoto"?SIt(e.dsseEnvelope,t):vIt(e.dsseEnvelope,t);case"messageSignature":return BIt(e.messageSignature,t)}}function BIt(e,t){let r=e.messageDigest.digest.toString("hex"),s=e.signature.toString("base64"),a=Bg.encoding.base64Encode(t);return{apiVersion:"0.0.1",kind:"hashedrekord",spec:{data:{hash:{algorithm:Pb,value:r}},signature:{content:s,publicKey:{content:a}}}}}function vIt(e,t){let r=JSON.stringify((0,CIt.envelopeToJSON)(e)),s=Bg.encoding.base64Encode(t);return{apiVersion:"0.0.1",kind:"dsse",spec:{proposedContent:{envelope:r,verifiers:[s]}}}}function SIt(e,t){let r=Bg.crypto.digest(Pb,e.payload).toString("hex"),s=DIt(e,t),a=Bg.encoding.base64Encode(e.payload.toString("base64")),n=Bg.encoding.base64Encode(e.signatures[0].sig.toString("base64")),c=e.signatures[0].keyid,f=Bg.encoding.base64Encode(t),p={payloadType:e.payloadType,payload:a,signatures:[{sig:n,publicKey:f}]};return c.length>0&&(p.signatures[0].keyid=c),{apiVersion:"0.0.2",kind:"intoto",spec:{content:{envelope:p,hash:{algorithm:Pb,value:s},payloadHash:{algorithm:Pb,value:r}}}}}function DIt(e,t){let r={payloadType:e.payloadType,payload:e.payload.toString("base64"),signatures:[{sig:e.signatures[0].sig.toString("base64"),publicKey:t}]};return e.signatures[0].keyid.length>0&&(r.signatures[0].keyid=e.signatures[0].keyid),Bg.crypto.digest(Pb,Bg.json.canonicalize(r)).toString("hex")}});var ASe=G(cy=>{"use strict";Object.defineProperty(cy,"__esModule",{value:!0});cy.RekorWitness=cy.DEFAULT_REKOR_URL=void 0;var bIt=wg(),PIt=uSe(),xIt=fSe();cy.DEFAULT_REKOR_URL="https://rekor.sigstore.dev";var $Y=class{constructor(t){this.entryType=t.entryType,this.tlog=new PIt.TLogClient({...t,rekorBaseURL:t.rekorBaseURL||cy.DEFAULT_REKOR_URL})}async testify(t,r){let s=(0,xIt.toProposedEntry)(t,r,this.entryType),a=await this.tlog.createEntry(s);return kIt(a)}};cy.RekorWitness=$Y;function kIt(e){let t=Buffer.from(e.logID,"hex"),r=bIt.encoding.base64Decode(e.body),s=JSON.parse(r),a=e?.verification?.signedEntryTimestamp?QIt(e.verification.signedEntryTimestamp):void 0,n=e?.verification?.inclusionProof?RIt(e.verification.inclusionProof):void 0;return{tlogEntries:[{logIndex:e.logIndex.toString(),logId:{keyId:t},integratedTime:e.integratedTime.toString(),kindVersion:{kind:s.kind,version:s.apiVersion},inclusionPromise:a,inclusionProof:n,canonicalizedBody:Buffer.from(e.body,"base64")}]}}function QIt(e){return{signedEntryTimestamp:Buffer.from(e,"base64")}}function RIt(e){return{logIndex:e.logIndex.toString(),treeSize:e.treeSize.toString(),rootHash:Buffer.from(e.rootHash,"hex"),hashes:e.hashes.map(t=>Buffer.from(t,"hex")),checkpoint:{envelope:e.checkpoint}}}});var pSe=G(AO=>{"use strict";Object.defineProperty(AO,"__esModule",{value:!0});AO.TimestampAuthority=void 0;var TIt=aO(),e7=class{constructor(t){this.options=t}async createTimestamp(t){let{baseURL:r,timeout:s,retry:a}=this.options,n=`${r}/api/v1/timestamp`;return(await(0,TIt.fetchWithRetry)(n,{headers:{"Content-Type":"application/json"},body:JSON.stringify(t),timeout:s,retry:a})).buffer()}};AO.TimestampAuthority=e7});var gSe=G(pO=>{"use strict";Object.defineProperty(pO,"__esModule",{value:!0});pO.TSAClient=void 0;var FIt=Ww(),NIt=pSe(),OIt=wg(),hSe="sha256",t7=class{constructor(t){this.tsa=new NIt.TimestampAuthority({baseURL:t.tsaBaseURL,retry:t.retry,timeout:t.timeout})}async createTimestamp(t){let r={artifactHash:OIt.crypto.digest(hSe,t).toString("base64"),hashAlgorithm:hSe};try{return await this.tsa.createTimestamp(r)}catch(s){(0,FIt.internalError)(s,"TSA_CREATE_TIMESTAMP_ERROR","error creating timestamp")}}};pO.TSAClient=t7});var dSe=G(hO=>{"use strict";Object.defineProperty(hO,"__esModule",{value:!0});hO.TSAWitness=void 0;var LIt=gSe(),r7=class{constructor(t){this.tsa=new LIt.TSAClient({tsaBaseURL:t.tsaBaseURL,retry:t.retry,timeout:t.timeout})}async testify(t){let r=MIt(t);return{rfc3161Timestamps:[{signedTimestamp:await this.tsa.createTimestamp(r)}]}}};hO.TSAWitness=r7;function MIt(e){switch(e.$case){case"dsseEnvelope":return e.dsseEnvelope.signatures[0].sig;case"messageSignature":return e.messageSignature.signature}}});var ySe=G(vg=>{"use strict";Object.defineProperty(vg,"__esModule",{value:!0});vg.TSAWitness=vg.RekorWitness=vg.DEFAULT_REKOR_URL=void 0;var mSe=ASe();Object.defineProperty(vg,"DEFAULT_REKOR_URL",{enumerable:!0,get:function(){return mSe.DEFAULT_REKOR_URL}});Object.defineProperty(vg,"RekorWitness",{enumerable:!0,get:function(){return mSe.RekorWitness}});var UIt=dSe();Object.defineProperty(vg,"TSAWitness",{enumerable:!0,get:function(){return UIt.TSAWitness}})});var i7=G(Cs=>{"use strict";Object.defineProperty(Cs,"__esModule",{value:!0});Cs.TSAWitness=Cs.RekorWitness=Cs.DEFAULT_REKOR_URL=Cs.FulcioSigner=Cs.DEFAULT_FULCIO_URL=Cs.CIContextProvider=Cs.InternalError=Cs.MessageSignatureBundleBuilder=Cs.DSSEBundleBuilder=void 0;var ESe=Fve();Object.defineProperty(Cs,"DSSEBundleBuilder",{enumerable:!0,get:function(){return ESe.DSSEBundleBuilder}});Object.defineProperty(Cs,"MessageSignatureBundleBuilder",{enumerable:!0,get:function(){return ESe.MessageSignatureBundleBuilder}});var _It=Ww();Object.defineProperty(Cs,"InternalError",{enumerable:!0,get:function(){return _It.InternalError}});var HIt=Lve();Object.defineProperty(Cs,"CIContextProvider",{enumerable:!0,get:function(){return HIt.CIContextProvider}});var ISe=sSe();Object.defineProperty(Cs,"DEFAULT_FULCIO_URL",{enumerable:!0,get:function(){return ISe.DEFAULT_FULCIO_URL}});Object.defineProperty(Cs,"FulcioSigner",{enumerable:!0,get:function(){return ISe.FulcioSigner}});var n7=ySe();Object.defineProperty(Cs,"DEFAULT_REKOR_URL",{enumerable:!0,get:function(){return n7.DEFAULT_REKOR_URL}});Object.defineProperty(Cs,"RekorWitness",{enumerable:!0,get:function(){return n7.RekorWitness}});Object.defineProperty(Cs,"TSAWitness",{enumerable:!0,get:function(){return n7.TSAWitness}})});var wSe=G(xb=>{"use strict";var CSe=xb&&xb.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(xb,"__esModule",{value:!0});xb.appDataPath=GIt;var jIt=CSe(Ie("os")),Jw=CSe(Ie("path"));function GIt(e){let t=jIt.default.homedir();switch(process.platform){case"darwin":{let r=Jw.default.join(t,"Library","Application Support");return Jw.default.join(r,e)}case"win32":{let r=process.env.LOCALAPPDATA||Jw.default.join(t,"AppData","Local");return Jw.default.join(r,e,"Data")}default:{let r=process.env.XDG_DATA_HOME||Jw.default.join(t,".local","share");return Jw.default.join(r,e)}}}});var xA=G(Pl=>{"use strict";Object.defineProperty(Pl,"__esModule",{value:!0});Pl.UnsupportedAlgorithmError=Pl.CryptoError=Pl.LengthOrHashMismatchError=Pl.UnsignedMetadataError=Pl.RepositoryError=Pl.ValueError=void 0;var s7=class extends Error{};Pl.ValueError=s7;var kb=class extends Error{};Pl.RepositoryError=kb;var o7=class extends kb{};Pl.UnsignedMetadataError=o7;var a7=class extends kb{};Pl.LengthOrHashMismatchError=a7;var gO=class extends Error{};Pl.CryptoError=gO;var l7=class extends gO{};Pl.UnsupportedAlgorithmError=l7});var vSe=G(Sg=>{"use strict";Object.defineProperty(Sg,"__esModule",{value:!0});Sg.isDefined=qIt;Sg.isObject=BSe;Sg.isStringArray=WIt;Sg.isObjectArray=VIt;Sg.isStringRecord=YIt;Sg.isObjectRecord=KIt;function qIt(e){return e!==void 0}function BSe(e){return typeof e=="object"&&e!==null}function WIt(e){return Array.isArray(e)&&e.every(t=>typeof t=="string")}function VIt(e){return Array.isArray(e)&&e.every(BSe)}function YIt(e){return typeof e=="object"&&e!==null&&Object.keys(e).every(t=>typeof t=="string")&&Object.values(e).every(t=>typeof t=="string")}function KIt(e){return typeof e=="object"&&e!==null&&Object.keys(e).every(t=>typeof t=="string")&&Object.values(e).every(t=>typeof t=="object"&&t!==null)}});var u7=G((ttr,bSe)=>{var SSe=",",JIt=":",zIt="[",ZIt="]",XIt="{",$It="}";function c7(e){let t=[];if(typeof e=="string")t.push(DSe(e));else if(typeof e=="boolean")t.push(JSON.stringify(e));else if(Number.isInteger(e))t.push(JSON.stringify(e));else if(e===null)t.push(JSON.stringify(e));else if(Array.isArray(e)){t.push(zIt);let r=!0;e.forEach(s=>{r||t.push(SSe),r=!1,t.push(c7(s))}),t.push(ZIt)}else if(typeof e=="object"){t.push(XIt);let r=!0;Object.keys(e).sort().forEach(s=>{r||t.push(SSe),r=!1,t.push(DSe(s)),t.push(JIt),t.push(c7(e[s]))}),t.push($It)}else throw new TypeError("cannot encode "+e.toString());return t.join("")}function DSe(e){return'"'+e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')+'"'}bSe.exports={canonicalize:c7}});var PSe=G(zw=>{"use strict";var eCt=zw&&zw.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(zw,"__esModule",{value:!0});zw.verifySignature=void 0;var tCt=u7(),rCt=eCt(Ie("crypto")),nCt=(e,t,r)=>{let s=Buffer.from((0,tCt.canonicalize)(e));return rCt.default.verify(void 0,s,t,Buffer.from(r,"hex"))};zw.verifySignature=nCt});var pf=G(Xc=>{"use strict";var iCt=Xc&&Xc.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||("get"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),sCt=Xc&&Xc.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),xSe=Xc&&Xc.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&iCt(t,e,r);return sCt(t,e),t};Object.defineProperty(Xc,"__esModule",{value:!0});Xc.crypto=Xc.guard=void 0;Xc.guard=xSe(vSe());Xc.crypto=xSe(PSe())});var uy=G(Ah=>{"use strict";var oCt=Ah&&Ah.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Ah,"__esModule",{value:!0});Ah.Signed=Ah.MetadataKind=void 0;Ah.isMetadataKind=lCt;var aCt=oCt(Ie("util")),Qb=xA(),f7=pf(),kSe=["1","0","31"],A7;(function(e){e.Root="root",e.Timestamp="timestamp",e.Snapshot="snapshot",e.Targets="targets"})(A7||(Ah.MetadataKind=A7={}));function lCt(e){return typeof e=="string"&&Object.values(A7).includes(e)}var p7=class e{constructor(t){this.specVersion=t.specVersion||kSe.join(".");let r=this.specVersion.split(".");if(!(r.length===2||r.length===3)||!r.every(s=>cCt(s)))throw new Qb.ValueError("Failed to parse specVersion");if(r[0]!=kSe[0])throw new Qb.ValueError("Unsupported specVersion");this.expires=t.expires,this.version=t.version,this.unrecognizedFields=t.unrecognizedFields||{}}equals(t){return t instanceof e?this.specVersion===t.specVersion&&this.expires===t.expires&&this.version===t.version&&aCt.default.isDeepStrictEqual(this.unrecognizedFields,t.unrecognizedFields):!1}isExpired(t){return t||(t=new Date),t>=new Date(this.expires)}static commonFieldsFromJSON(t){let{spec_version:r,expires:s,version:a,...n}=t;if(f7.guard.isDefined(r)){if(typeof r!="string")throw new TypeError("spec_version must be a string")}else throw new Qb.ValueError("spec_version is not defined");if(f7.guard.isDefined(s)){if(typeof s!="string")throw new TypeError("expires must be a string")}else throw new Qb.ValueError("expires is not defined");if(f7.guard.isDefined(a)){if(typeof a!="number")throw new TypeError("version must be a number")}else throw new Qb.ValueError("version is not defined");return{specVersion:r,expires:s,version:a,unrecognizedFields:n}}};Ah.Signed=p7;function cCt(e){return!isNaN(Number(e))}});var Rb=G(bg=>{"use strict";var QSe=bg&&bg.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(bg,"__esModule",{value:!0});bg.TargetFile=bg.MetaFile=void 0;var RSe=QSe(Ie("crypto")),mO=QSe(Ie("util")),Dg=xA(),dO=pf(),h7=class e{constructor(t){if(t.version<=0)throw new Dg.ValueError("Metafile version must be at least 1");t.length!==void 0&&TSe(t.length),this.version=t.version,this.length=t.length,this.hashes=t.hashes,this.unrecognizedFields=t.unrecognizedFields||{}}equals(t){return t instanceof e?this.version===t.version&&this.length===t.length&&mO.default.isDeepStrictEqual(this.hashes,t.hashes)&&mO.default.isDeepStrictEqual(this.unrecognizedFields,t.unrecognizedFields):!1}verify(t){if(this.length!==void 0&&t.length!==this.length)throw new Dg.LengthOrHashMismatchError(`Expected length ${this.length} but got ${t.length}`);this.hashes&&Object.entries(this.hashes).forEach(([r,s])=>{let a;try{a=RSe.default.createHash(r)}catch{throw new Dg.LengthOrHashMismatchError(`Hash algorithm ${r} not supported`)}let n=a.update(t).digest("hex");if(n!==s)throw new Dg.LengthOrHashMismatchError(`Expected hash ${s} but got ${n}`)})}toJSON(){let t={version:this.version,...this.unrecognizedFields};return this.length!==void 0&&(t.length=this.length),this.hashes&&(t.hashes=this.hashes),t}static fromJSON(t){let{version:r,length:s,hashes:a,...n}=t;if(typeof r!="number")throw new TypeError("version must be a number");if(dO.guard.isDefined(s)&&typeof s!="number")throw new TypeError("length must be a number");if(dO.guard.isDefined(a)&&!dO.guard.isStringRecord(a))throw new TypeError("hashes must be string keys and values");return new e({version:r,length:s,hashes:a,unrecognizedFields:n})}};bg.MetaFile=h7;var g7=class e{constructor(t){TSe(t.length),this.length=t.length,this.path=t.path,this.hashes=t.hashes,this.unrecognizedFields=t.unrecognizedFields||{}}get custom(){let t=this.unrecognizedFields.custom;return!t||Array.isArray(t)||typeof t!="object"?{}:t}equals(t){return t instanceof e?this.length===t.length&&this.path===t.path&&mO.default.isDeepStrictEqual(this.hashes,t.hashes)&&mO.default.isDeepStrictEqual(this.unrecognizedFields,t.unrecognizedFields):!1}async verify(t){let r=0,s=Object.keys(this.hashes).reduce((a,n)=>{try{a[n]=RSe.default.createHash(n)}catch{throw new Dg.LengthOrHashMismatchError(`Hash algorithm ${n} not supported`)}return a},{});for await(let a of t)r+=a.length,Object.values(s).forEach(n=>{n.update(a)});if(r!==this.length)throw new Dg.LengthOrHashMismatchError(`Expected length ${this.length} but got ${r}`);Object.entries(s).forEach(([a,n])=>{let c=this.hashes[a],f=n.digest("hex");if(f!==c)throw new Dg.LengthOrHashMismatchError(`Expected hash ${c} but got ${f}`)})}toJSON(){return{length:this.length,hashes:this.hashes,...this.unrecognizedFields}}static fromJSON(t,r){let{length:s,hashes:a,...n}=r;if(typeof s!="number")throw new TypeError("length must be a number");if(!dO.guard.isStringRecord(a))throw new TypeError("hashes must have string keys and values");return new e({length:s,path:t,hashes:a,unrecognizedFields:n})}};bg.TargetFile=g7;function TSe(e){if(e<0)throw new Dg.ValueError("Length must be at least 0")}});var FSe=G(d7=>{"use strict";Object.defineProperty(d7,"__esModule",{value:!0});d7.encodeOIDString=fCt;var uCt=6;function fCt(e){let t=e.split("."),r=parseInt(t[0],10)*40+parseInt(t[1],10),s=[];t.slice(2).forEach(n=>{let c=ACt(parseInt(n,10));s.push(...c)});let a=Buffer.from([r,...s]);return Buffer.from([uCt,a.length,...a])}function ACt(e){let t=[],r=0;for(;e>0;)t.unshift(e&127|r),e>>=7,r=128;return t}});var MSe=G(Fb=>{"use strict";var pCt=Fb&&Fb.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Fb,"__esModule",{value:!0});Fb.getPublicKey=mCt;var Zw=pCt(Ie("crypto")),Tb=xA(),m7=FSe(),yO=48,NSe=3,OSe=0,hCt="1.3.101.112",gCt="1.2.840.10045.2.1",dCt="1.2.840.10045.3.1.7",y7="-----BEGIN PUBLIC KEY-----";function mCt(e){switch(e.keyType){case"rsa":return yCt(e);case"ed25519":return ECt(e);case"ecdsa":case"ecdsa-sha2-nistp256":case"ecdsa-sha2-nistp384":return ICt(e);default:throw new Tb.UnsupportedAlgorithmError(`Unsupported key type: ${e.keyType}`)}}function yCt(e){if(!e.keyVal.startsWith(y7))throw new Tb.CryptoError("Invalid key format");let t=Zw.default.createPublicKey(e.keyVal);switch(e.scheme){case"rsassa-pss-sha256":return{key:t,padding:Zw.default.constants.RSA_PKCS1_PSS_PADDING};default:throw new Tb.UnsupportedAlgorithmError(`Unsupported RSA scheme: ${e.scheme}`)}}function ECt(e){let t;if(e.keyVal.startsWith(y7))t=Zw.default.createPublicKey(e.keyVal);else{if(!LSe(e.keyVal))throw new Tb.CryptoError("Invalid key format");t=Zw.default.createPublicKey({key:CCt.hexToDER(e.keyVal),format:"der",type:"spki"})}return{key:t}}function ICt(e){let t;if(e.keyVal.startsWith(y7))t=Zw.default.createPublicKey(e.keyVal);else{if(!LSe(e.keyVal))throw new Tb.CryptoError("Invalid key format");t=Zw.default.createPublicKey({key:wCt.hexToDER(e.keyVal),format:"der",type:"spki"})}return{key:t}}var CCt={hexToDER:e=>{let t=Buffer.from(e,"hex"),r=(0,m7.encodeOIDString)(hCt),s=Buffer.concat([Buffer.concat([Buffer.from([yO]),Buffer.from([r.length]),r]),Buffer.concat([Buffer.from([NSe]),Buffer.from([t.length+1]),Buffer.from([OSe]),t])]);return Buffer.concat([Buffer.from([yO]),Buffer.from([s.length]),s])}},wCt={hexToDER:e=>{let t=Buffer.from(e,"hex"),r=Buffer.concat([Buffer.from([NSe]),Buffer.from([t.length+1]),Buffer.from([OSe]),t]),s=Buffer.concat([(0,m7.encodeOIDString)(gCt),(0,m7.encodeOIDString)(dCt)]),a=Buffer.concat([Buffer.from([yO]),Buffer.from([s.length]),s]);return Buffer.concat([Buffer.from([yO]),Buffer.from([a.length+r.length]),a,r])}},LSe=e=>/^[0-9a-fA-F]+$/.test(e)});var EO=G(Xw=>{"use strict";var BCt=Xw&&Xw.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Xw,"__esModule",{value:!0});Xw.Key=void 0;var USe=BCt(Ie("util")),Nb=xA(),_Se=pf(),vCt=MSe(),E7=class e{constructor(t){let{keyID:r,keyType:s,scheme:a,keyVal:n,unrecognizedFields:c}=t;this.keyID=r,this.keyType=s,this.scheme=a,this.keyVal=n,this.unrecognizedFields=c||{}}verifySignature(t){let r=t.signatures[this.keyID];if(!r)throw new Nb.UnsignedMetadataError("no signature for key found in metadata");if(!this.keyVal.public)throw new Nb.UnsignedMetadataError("no public key found");let s=(0,vCt.getPublicKey)({keyType:this.keyType,scheme:this.scheme,keyVal:this.keyVal.public}),a=t.signed.toJSON();try{if(!_Se.crypto.verifySignature(a,s,r.sig))throw new Nb.UnsignedMetadataError(`failed to verify ${this.keyID} signature`)}catch(n){throw n instanceof Nb.UnsignedMetadataError?n:new Nb.UnsignedMetadataError(`failed to verify ${this.keyID} signature`)}}equals(t){return t instanceof e?this.keyID===t.keyID&&this.keyType===t.keyType&&this.scheme===t.scheme&&USe.default.isDeepStrictEqual(this.keyVal,t.keyVal)&&USe.default.isDeepStrictEqual(this.unrecognizedFields,t.unrecognizedFields):!1}toJSON(){return{keytype:this.keyType,scheme:this.scheme,keyval:this.keyVal,...this.unrecognizedFields}}static fromJSON(t,r){let{keytype:s,scheme:a,keyval:n,...c}=r;if(typeof s!="string")throw new TypeError("keytype must be a string");if(typeof a!="string")throw new TypeError("scheme must be a string");if(!_Se.guard.isStringRecord(n))throw new TypeError("keyval must be a string record");return new e({keyID:t,keyType:s,scheme:a,keyVal:n,unrecognizedFields:c})}};Xw.Key=E7});var WSe=G((ctr,qSe)=>{"use strict";qSe.exports=jSe;function jSe(e,t,r){e instanceof RegExp&&(e=HSe(e,r)),t instanceof RegExp&&(t=HSe(t,r));var s=GSe(e,t,r);return s&&{start:s[0],end:s[1],pre:r.slice(0,s[0]),body:r.slice(s[0]+e.length,s[1]),post:r.slice(s[1]+t.length)}}function HSe(e,t){var r=t.match(e);return r?r[0]:null}jSe.range=GSe;function GSe(e,t,r){var s,a,n,c,f,p=r.indexOf(e),h=r.indexOf(t,p+1),E=p;if(p>=0&&h>0){for(s=[],n=r.length;E>=0&&!f;)E==p?(s.push(E),p=r.indexOf(e,E+1)):s.length==1?f=[s.pop(),h]:(a=s.pop(),a=0?p:h;s.length&&(f=[n,c])}return f}});var $Se=G((utr,XSe)=>{var VSe=WSe();XSe.exports=bCt;var YSe="\0SLASH"+Math.random()+"\0",KSe="\0OPEN"+Math.random()+"\0",C7="\0CLOSE"+Math.random()+"\0",JSe="\0COMMA"+Math.random()+"\0",zSe="\0PERIOD"+Math.random()+"\0";function I7(e){return parseInt(e,10)==e?parseInt(e,10):e.charCodeAt(0)}function SCt(e){return e.split("\\\\").join(YSe).split("\\{").join(KSe).split("\\}").join(C7).split("\\,").join(JSe).split("\\.").join(zSe)}function DCt(e){return e.split(YSe).join("\\").split(KSe).join("{").split(C7).join("}").split(JSe).join(",").split(zSe).join(".")}function ZSe(e){if(!e)return[""];var t=[],r=VSe("{","}",e);if(!r)return e.split(",");var s=r.pre,a=r.body,n=r.post,c=s.split(",");c[c.length-1]+="{"+a+"}";var f=ZSe(n);return n.length&&(c[c.length-1]+=f.shift(),c.push.apply(c,f)),t.push.apply(t,c),t}function bCt(e){return e?(e.substr(0,2)==="{}"&&(e="\\{\\}"+e.substr(2)),Ob(SCt(e),!0).map(DCt)):[]}function PCt(e){return"{"+e+"}"}function xCt(e){return/^-?0\d/.test(e)}function kCt(e,t){return e<=t}function QCt(e,t){return e>=t}function Ob(e,t){var r=[],s=VSe("{","}",e);if(!s)return[e];var a=s.pre,n=s.post.length?Ob(s.post,!1):[""];if(/\$$/.test(s.pre))for(var c=0;c=0;if(!E&&!C)return s.post.match(/,.*\}/)?(e=s.pre+"{"+s.body+C7+s.post,Ob(e)):[e];var S;if(E)S=s.body.split(/\.\./);else if(S=ZSe(s.body),S.length===1&&(S=Ob(S[0],!1).map(PCt),S.length===1))return n.map(function(Ee){return s.pre+S[0]+Ee});var x;if(E){var I=I7(S[0]),T=I7(S[1]),O=Math.max(S[0].length,S[1].length),U=S.length==3?Math.abs(I7(S[2])):1,Y=kCt,te=T0){var Ae=new Array(de+1).join("0");ue<0?ae="-"+Ae+ae.slice(1):ae=Ae+ae}}x.push(ae)}}else{x=[];for(var Ce=0;Ce{"use strict";Object.defineProperty(IO,"__esModule",{value:!0});IO.assertValidPattern=void 0;var RCt=1024*64,TCt=e=>{if(typeof e!="string")throw new TypeError("invalid pattern");if(e.length>RCt)throw new TypeError("pattern is too long")};IO.assertValidPattern=TCt});var rDe=G(CO=>{"use strict";Object.defineProperty(CO,"__esModule",{value:!0});CO.parseClass=void 0;var FCt={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},Lb=e=>e.replace(/[[\]\\-]/g,"\\$&"),NCt=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),tDe=e=>e.join(""),OCt=(e,t)=>{let r=t;if(e.charAt(r)!=="[")throw new Error("not in a brace expression");let s=[],a=[],n=r+1,c=!1,f=!1,p=!1,h=!1,E=r,C="";e:for(;nC?s.push(Lb(C)+"-"+Lb(T)):T===C&&s.push(Lb(T)),C="",n++;continue}if(e.startsWith("-]",n+1)){s.push(Lb(T+"-")),n+=2;continue}if(e.startsWith("-",n+1)){C=T,n+=2;continue}s.push(Lb(T)),n++}if(E{"use strict";Object.defineProperty(wO,"__esModule",{value:!0});wO.unescape=void 0;var LCt=(e,{windowsPathsNoEscape:t=!1}={})=>t?e.replace(/\[([^\/\\])\]/g,"$1"):e.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1");wO.unescape=LCt});var v7=G(DO=>{"use strict";Object.defineProperty(DO,"__esModule",{value:!0});DO.AST=void 0;var MCt=rDe(),vO=BO(),UCt=new Set(["!","?","+","*","@"]),nDe=e=>UCt.has(e),_Ct="(?!(?:^|/)\\.\\.?(?:$|/))",SO="(?!\\.)",HCt=new Set(["[","."]),jCt=new Set(["..","."]),GCt=new Set("().*{}+?[]^$\\!"),qCt=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),B7="[^/]",iDe=B7+"*?",sDe=B7+"+?",w7=class e{type;#e;#t;#s=!1;#r=[];#i;#n;#o;#l=!1;#a;#c;#f=!1;constructor(t,r,s={}){this.type=t,t&&(this.#t=!0),this.#i=r,this.#e=this.#i?this.#i.#e:this,this.#a=this.#e===this?s:this.#e.#a,this.#o=this.#e===this?[]:this.#e.#o,t==="!"&&!this.#e.#l&&this.#o.push(this),this.#n=this.#i?this.#i.#r.length:0}get hasMagic(){if(this.#t!==void 0)return this.#t;for(let t of this.#r)if(typeof t!="string"&&(t.type||t.hasMagic))return this.#t=!0;return this.#t}toString(){return this.#c!==void 0?this.#c:this.type?this.#c=this.type+"("+this.#r.map(t=>String(t)).join("|")+")":this.#c=this.#r.map(t=>String(t)).join("")}#p(){if(this!==this.#e)throw new Error("should only call on root");if(this.#l)return this;this.toString(),this.#l=!0;let t;for(;t=this.#o.pop();){if(t.type!=="!")continue;let r=t,s=r.#i;for(;s;){for(let a=r.#n+1;!s.type&&atypeof r=="string"?r:r.toJSON()):[this.type,...this.#r.map(r=>r.toJSON())];return this.isStart()&&!this.type&&t.unshift([]),this.isEnd()&&(this===this.#e||this.#e.#l&&this.#i?.type==="!")&&t.push({}),t}isStart(){if(this.#e===this)return!0;if(!this.#i?.isStart())return!1;if(this.#n===0)return!0;let t=this.#i;for(let r=0;r{let[I,T,O,U]=typeof x=="string"?e.#h(x,this.#t,p):x.toRegExpSource(t);return this.#t=this.#t||O,this.#s=this.#s||U,I}).join(""),E="";if(this.isStart()&&typeof this.#r[0]=="string"&&!(this.#r.length===1&&jCt.has(this.#r[0]))){let I=HCt,T=r&&I.has(h.charAt(0))||h.startsWith("\\.")&&I.has(h.charAt(2))||h.startsWith("\\.\\.")&&I.has(h.charAt(4)),O=!r&&!t&&I.has(h.charAt(0));E=T?_Ct:O?SO:""}let C="";return this.isEnd()&&this.#e.#l&&this.#i?.type==="!"&&(C="(?:$|\\/)"),[E+h+C,(0,vO.unescape)(h),this.#t=!!this.#t,this.#s]}let s=this.type==="*"||this.type==="+",a=this.type==="!"?"(?:(?!(?:":"(?:",n=this.#A(r);if(this.isStart()&&this.isEnd()&&!n&&this.type!=="!"){let p=this.toString();return this.#r=[p],this.type=null,this.#t=void 0,[p,(0,vO.unescape)(this.toString()),!1,!1]}let c=!s||t||r||!SO?"":this.#A(!0);c===n&&(c=""),c&&(n=`(?:${n})(?:${c})*?`);let f="";if(this.type==="!"&&this.#f)f=(this.isStart()&&!r?SO:"")+sDe;else{let p=this.type==="!"?"))"+(this.isStart()&&!r&&!t?SO:"")+iDe+")":this.type==="@"?")":this.type==="?"?")?":this.type==="+"&&c?")":this.type==="*"&&c?")?":`)${this.type}`;f=a+n+p}return[f,(0,vO.unescape)(n),this.#t=!!this.#t,this.#s]}#A(t){return this.#r.map(r=>{if(typeof r=="string")throw new Error("string type in extglob ast??");let[s,a,n,c]=r.toRegExpSource(t);return this.#s=this.#s||c,s}).filter(r=>!(this.isStart()&&this.isEnd())||!!r).join("|")}static#h(t,r,s=!1){let a=!1,n="",c=!1;for(let f=0;f{"use strict";Object.defineProperty(bO,"__esModule",{value:!0});bO.escape=void 0;var WCt=(e,{windowsPathsNoEscape:t=!1}={})=>t?e.replace(/[?*()[\]]/g,"[$&]"):e.replace(/[?*()[\]\\]/g,"\\$&");bO.escape=WCt});var ADe=G(pr=>{"use strict";var VCt=pr&&pr.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(pr,"__esModule",{value:!0});pr.unescape=pr.escape=pr.AST=pr.Minimatch=pr.match=pr.makeRe=pr.braceExpand=pr.defaults=pr.filter=pr.GLOBSTAR=pr.sep=pr.minimatch=void 0;var YCt=VCt($Se()),PO=eDe(),lDe=v7(),KCt=S7(),JCt=BO(),zCt=(e,t,r={})=>((0,PO.assertValidPattern)(t),!r.nocomment&&t.charAt(0)==="#"?!1:new fy(t,r).match(e));pr.minimatch=zCt;var ZCt=/^\*+([^+@!?\*\[\(]*)$/,XCt=e=>t=>!t.startsWith(".")&&t.endsWith(e),$Ct=e=>t=>t.endsWith(e),ewt=e=>(e=e.toLowerCase(),t=>!t.startsWith(".")&&t.toLowerCase().endsWith(e)),twt=e=>(e=e.toLowerCase(),t=>t.toLowerCase().endsWith(e)),rwt=/^\*+\.\*+$/,nwt=e=>!e.startsWith(".")&&e.includes("."),iwt=e=>e!=="."&&e!==".."&&e.includes("."),swt=/^\.\*+$/,owt=e=>e!=="."&&e!==".."&&e.startsWith("."),awt=/^\*+$/,lwt=e=>e.length!==0&&!e.startsWith("."),cwt=e=>e.length!==0&&e!=="."&&e!=="..",uwt=/^\?+([^+@!?\*\[\(]*)?$/,fwt=([e,t=""])=>{let r=cDe([e]);return t?(t=t.toLowerCase(),s=>r(s)&&s.toLowerCase().endsWith(t)):r},Awt=([e,t=""])=>{let r=uDe([e]);return t?(t=t.toLowerCase(),s=>r(s)&&s.toLowerCase().endsWith(t)):r},pwt=([e,t=""])=>{let r=uDe([e]);return t?s=>r(s)&&s.endsWith(t):r},hwt=([e,t=""])=>{let r=cDe([e]);return t?s=>r(s)&&s.endsWith(t):r},cDe=([e])=>{let t=e.length;return r=>r.length===t&&!r.startsWith(".")},uDe=([e])=>{let t=e.length;return r=>r.length===t&&r!=="."&&r!==".."},fDe=typeof process=="object"&&process?typeof process.env=="object"&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:"posix",oDe={win32:{sep:"\\"},posix:{sep:"/"}};pr.sep=fDe==="win32"?oDe.win32.sep:oDe.posix.sep;pr.minimatch.sep=pr.sep;pr.GLOBSTAR=Symbol("globstar **");pr.minimatch.GLOBSTAR=pr.GLOBSTAR;var gwt="[^/]",dwt=gwt+"*?",mwt="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",ywt="(?:(?!(?:\\/|^)\\.).)*?",Ewt=(e,t={})=>r=>(0,pr.minimatch)(r,e,t);pr.filter=Ewt;pr.minimatch.filter=pr.filter;var $c=(e,t={})=>Object.assign({},e,t),Iwt=e=>{if(!e||typeof e!="object"||!Object.keys(e).length)return pr.minimatch;let t=pr.minimatch;return Object.assign((s,a,n={})=>t(s,a,$c(e,n)),{Minimatch:class extends t.Minimatch{constructor(a,n={}){super(a,$c(e,n))}static defaults(a){return t.defaults($c(e,a)).Minimatch}},AST:class extends t.AST{constructor(a,n,c={}){super(a,n,$c(e,c))}static fromGlob(a,n={}){return t.AST.fromGlob(a,$c(e,n))}},unescape:(s,a={})=>t.unescape(s,$c(e,a)),escape:(s,a={})=>t.escape(s,$c(e,a)),filter:(s,a={})=>t.filter(s,$c(e,a)),defaults:s=>t.defaults($c(e,s)),makeRe:(s,a={})=>t.makeRe(s,$c(e,a)),braceExpand:(s,a={})=>t.braceExpand(s,$c(e,a)),match:(s,a,n={})=>t.match(s,a,$c(e,n)),sep:t.sep,GLOBSTAR:pr.GLOBSTAR})};pr.defaults=Iwt;pr.minimatch.defaults=pr.defaults;var Cwt=(e,t={})=>((0,PO.assertValidPattern)(e),t.nobrace||!/\{(?:(?!\{).)*\}/.test(e)?[e]:(0,YCt.default)(e));pr.braceExpand=Cwt;pr.minimatch.braceExpand=pr.braceExpand;var wwt=(e,t={})=>new fy(e,t).makeRe();pr.makeRe=wwt;pr.minimatch.makeRe=pr.makeRe;var Bwt=(e,t,r={})=>{let s=new fy(t,r);return e=e.filter(a=>s.match(a)),s.options.nonull&&!e.length&&e.push(t),e};pr.match=Bwt;pr.minimatch.match=pr.match;var aDe=/[?*]|[+@!]\(.*?\)|\[|\]/,vwt=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),fy=class{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;regexp;constructor(t,r={}){(0,PO.assertValidPattern)(t),r=r||{},this.options=r,this.pattern=t,this.platform=r.platform||fDe,this.isWindows=this.platform==="win32",this.windowsPathsNoEscape=!!r.windowsPathsNoEscape||r.allowWindowsEscape===!1,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!r.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!r.nonegate,this.comment=!1,this.empty=!1,this.partial=!!r.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=r.windowsNoMagicRoot!==void 0?r.windowsNoMagicRoot:!!(this.isWindows&&this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(let t of this.set)for(let r of t)if(typeof r!="string")return!0;return!1}debug(...t){}make(){let t=this.pattern,r=this.options;if(!r.nocomment&&t.charAt(0)==="#"){this.comment=!0;return}if(!t){this.empty=!0;return}this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],r.debug&&(this.debug=(...n)=>console.error(...n)),this.debug(this.pattern,this.globSet);let s=this.globSet.map(n=>this.slashSplit(n));this.globParts=this.preprocess(s),this.debug(this.pattern,this.globParts);let a=this.globParts.map((n,c,f)=>{if(this.isWindows&&this.windowsNoMagicRoot){let p=n[0]===""&&n[1]===""&&(n[2]==="?"||!aDe.test(n[2]))&&!aDe.test(n[3]),h=/^[a-z]:/i.test(n[0]);if(p)return[...n.slice(0,4),...n.slice(4).map(E=>this.parse(E))];if(h)return[n[0],...n.slice(1).map(E=>this.parse(E))]}return n.map(p=>this.parse(p))});if(this.debug(this.pattern,a),this.set=a.filter(n=>n.indexOf(!1)===-1),this.isWindows)for(let n=0;n=2?(t=this.firstPhasePreProcess(t),t=this.secondPhasePreProcess(t)):r>=1?t=this.levelOneOptimize(t):t=this.adjascentGlobstarOptimize(t),t}adjascentGlobstarOptimize(t){return t.map(r=>{let s=-1;for(;(s=r.indexOf("**",s+1))!==-1;){let a=s;for(;r[a+1]==="**";)a++;a!==s&&r.splice(s,a-s)}return r})}levelOneOptimize(t){return t.map(r=>(r=r.reduce((s,a)=>{let n=s[s.length-1];return a==="**"&&n==="**"?s:a===".."&&n&&n!==".."&&n!=="."&&n!=="**"?(s.pop(),s):(s.push(a),s)},[]),r.length===0?[""]:r))}levelTwoFileOptimize(t){Array.isArray(t)||(t=this.slashSplit(t));let r=!1;do{if(r=!1,!this.preserveMultipleSlashes){for(let a=1;aa&&s.splice(a+1,c-a);let f=s[a+1],p=s[a+2],h=s[a+3];if(f!==".."||!p||p==="."||p===".."||!h||h==="."||h==="..")continue;r=!0,s.splice(a,1);let E=s.slice(0);E[a]="**",t.push(E),a--}if(!this.preserveMultipleSlashes){for(let c=1;cr.length)}partsMatch(t,r,s=!1){let a=0,n=0,c=[],f="";for(;ate?r=r.slice(ie):te>ie&&(t=t.slice(te)))}}let{optimizationLevel:n=1}=this.options;n>=2&&(t=this.levelTwoFileOptimize(t)),this.debug("matchOne",this,{file:t,pattern:r}),this.debug("matchOne",t.length,r.length);for(var c=0,f=0,p=t.length,h=r.length;c>> no match, partial?`,t,S,r,x),S===p))}let T;if(typeof E=="string"?(T=C===E,this.debug("string match",E,C,T)):(T=E.test(C),this.debug("pattern match",E,C,T)),!T)return!1}if(c===p&&f===h)return!0;if(c===p)return s;if(f===h)return c===p-1&&t[c]==="";throw new Error("wtf?")}braceExpand(){return(0,pr.braceExpand)(this.pattern,this.options)}parse(t){(0,PO.assertValidPattern)(t);let r=this.options;if(t==="**")return pr.GLOBSTAR;if(t==="")return"";let s,a=null;(s=t.match(awt))?a=r.dot?cwt:lwt:(s=t.match(ZCt))?a=(r.nocase?r.dot?twt:ewt:r.dot?$Ct:XCt)(s[1]):(s=t.match(uwt))?a=(r.nocase?r.dot?Awt:fwt:r.dot?pwt:hwt)(s):(s=t.match(rwt))?a=r.dot?iwt:nwt:(s=t.match(swt))&&(a=owt);let n=lDe.AST.fromGlob(t,this.options).toMMPattern();return a&&typeof n=="object"&&Reflect.defineProperty(n,"test",{value:a}),n}makeRe(){if(this.regexp||this.regexp===!1)return this.regexp;let t=this.set;if(!t.length)return this.regexp=!1,this.regexp;let r=this.options,s=r.noglobstar?dwt:r.dot?mwt:ywt,a=new Set(r.nocase?["i"]:[]),n=t.map(p=>{let h=p.map(E=>{if(E instanceof RegExp)for(let C of E.flags.split(""))a.add(C);return typeof E=="string"?vwt(E):E===pr.GLOBSTAR?pr.GLOBSTAR:E._src});return h.forEach((E,C)=>{let S=h[C+1],x=h[C-1];E!==pr.GLOBSTAR||x===pr.GLOBSTAR||(x===void 0?S!==void 0&&S!==pr.GLOBSTAR?h[C+1]="(?:\\/|"+s+"\\/)?"+S:h[C]=s:S===void 0?h[C-1]=x+"(?:\\/|"+s+")?":S!==pr.GLOBSTAR&&(h[C-1]=x+"(?:\\/|\\/"+s+"\\/)"+S,h[C+1]=pr.GLOBSTAR))}),h.filter(E=>E!==pr.GLOBSTAR).join("/")}).join("|"),[c,f]=t.length>1?["(?:",")"]:["",""];n="^"+c+n+f+"$",this.negate&&(n="^(?!"+n+").+$");try{this.regexp=new RegExp(n,[...a].join(""))}catch{this.regexp=!1}return this.regexp}slashSplit(t){return this.preserveMultipleSlashes?t.split("/"):this.isWindows&&/^\/\/[^\/]+/.test(t)?["",...t.split(/\/+/)]:t.split(/\/+/)}match(t,r=this.partial){if(this.debug("match",t,this.pattern),this.comment)return!1;if(this.empty)return t==="";if(t==="/"&&r)return!0;let s=this.options;this.isWindows&&(t=t.split("\\").join("/"));let a=this.slashSplit(t);this.debug(this.pattern,"split",a);let n=this.set;this.debug(this.pattern,"set",n);let c=a[a.length-1];if(!c)for(let f=a.length-2;!c&&f>=0;f--)c=a[f];for(let f=0;f{"use strict";var pDe=eu&&eu.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(eu,"__esModule",{value:!0});eu.SuccinctRoles=eu.DelegatedRole=eu.Role=eu.TOP_LEVEL_ROLE_NAMES=void 0;var hDe=pDe(Ie("crypto")),Pwt=ADe(),xO=pDe(Ie("util")),kO=xA(),Ay=pf();eu.TOP_LEVEL_ROLE_NAMES=["root","targets","snapshot","timestamp"];var Mb=class e{constructor(t){let{keyIDs:r,threshold:s,unrecognizedFields:a}=t;if(xwt(r))throw new kO.ValueError("duplicate key IDs found");if(s<1)throw new kO.ValueError("threshold must be at least 1");this.keyIDs=r,this.threshold=s,this.unrecognizedFields=a||{}}equals(t){return t instanceof e?this.threshold===t.threshold&&xO.default.isDeepStrictEqual(this.keyIDs,t.keyIDs)&&xO.default.isDeepStrictEqual(this.unrecognizedFields,t.unrecognizedFields):!1}toJSON(){return{keyids:this.keyIDs,threshold:this.threshold,...this.unrecognizedFields}}static fromJSON(t){let{keyids:r,threshold:s,...a}=t;if(!Ay.guard.isStringArray(r))throw new TypeError("keyids must be an array");if(typeof s!="number")throw new TypeError("threshold must be a number");return new e({keyIDs:r,threshold:s,unrecognizedFields:a})}};eu.Role=Mb;function xwt(e){return new Set(e).size!==e.length}var D7=class e extends Mb{constructor(t){super(t);let{name:r,terminating:s,paths:a,pathHashPrefixes:n}=t;if(this.name=r,this.terminating=s,t.paths&&t.pathHashPrefixes)throw new kO.ValueError("paths and pathHashPrefixes are mutually exclusive");this.paths=a,this.pathHashPrefixes=n}equals(t){return t instanceof e?super.equals(t)&&this.name===t.name&&this.terminating===t.terminating&&xO.default.isDeepStrictEqual(this.paths,t.paths)&&xO.default.isDeepStrictEqual(this.pathHashPrefixes,t.pathHashPrefixes):!1}isDelegatedPath(t){if(this.paths)return this.paths.some(r=>Qwt(t,r));if(this.pathHashPrefixes){let s=hDe.default.createHash("sha256").update(t).digest("hex");return this.pathHashPrefixes.some(a=>s.startsWith(a))}return!1}toJSON(){let t={...super.toJSON(),name:this.name,terminating:this.terminating};return this.paths&&(t.paths=this.paths),this.pathHashPrefixes&&(t.path_hash_prefixes=this.pathHashPrefixes),t}static fromJSON(t){let{keyids:r,threshold:s,name:a,terminating:n,paths:c,path_hash_prefixes:f,...p}=t;if(!Ay.guard.isStringArray(r))throw new TypeError("keyids must be an array of strings");if(typeof s!="number")throw new TypeError("threshold must be a number");if(typeof a!="string")throw new TypeError("name must be a string");if(typeof n!="boolean")throw new TypeError("terminating must be a boolean");if(Ay.guard.isDefined(c)&&!Ay.guard.isStringArray(c))throw new TypeError("paths must be an array of strings");if(Ay.guard.isDefined(f)&&!Ay.guard.isStringArray(f))throw new TypeError("path_hash_prefixes must be an array of strings");return new e({keyIDs:r,threshold:s,name:a,terminating:n,paths:c,pathHashPrefixes:f,unrecognizedFields:p})}};eu.DelegatedRole=D7;var kwt=(e,t)=>e.map((r,s)=>[r,t[s]]);function Qwt(e,t){let r=e.split("/"),s=t.split("/");return s.length!=r.length?!1:kwt(r,s).every(([a,n])=>(0,Pwt.minimatch)(a,n))}var b7=class e extends Mb{constructor(t){super(t);let{bitLength:r,namePrefix:s}=t;if(r<=0||r>32)throw new kO.ValueError("bitLength must be between 1 and 32");this.bitLength=r,this.namePrefix=s,this.numberOfBins=Math.pow(2,r),this.suffixLen=(this.numberOfBins-1).toString(16).length}equals(t){return t instanceof e?super.equals(t)&&this.bitLength===t.bitLength&&this.namePrefix===t.namePrefix:!1}getRoleForTarget(t){let a=hDe.default.createHash("sha256").update(t).digest().subarray(0,4),n=32-this.bitLength,f=(a.readUInt32BE()>>>n).toString(16).padStart(this.suffixLen,"0");return`${this.namePrefix}-${f}`}*getRoles(){for(let t=0;t{"use strict";var Rwt=$w&&$w.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty($w,"__esModule",{value:!0});$w.Root=void 0;var gDe=Rwt(Ie("util")),x7=uy(),dDe=xA(),Twt=EO(),QO=P7(),RO=pf(),k7=class e extends x7.Signed{constructor(t){if(super(t),this.type=x7.MetadataKind.Root,this.keys=t.keys||{},this.consistentSnapshot=t.consistentSnapshot??!0,!t.roles)this.roles=QO.TOP_LEVEL_ROLE_NAMES.reduce((r,s)=>({...r,[s]:new QO.Role({keyIDs:[],threshold:1})}),{});else{let r=new Set(Object.keys(t.roles));if(!QO.TOP_LEVEL_ROLE_NAMES.every(s=>r.has(s)))throw new dDe.ValueError("missing top-level role");this.roles=t.roles}}addKey(t,r){if(!this.roles[r])throw new dDe.ValueError(`role ${r} does not exist`);this.roles[r].keyIDs.includes(t.keyID)||this.roles[r].keyIDs.push(t.keyID),this.keys[t.keyID]=t}equals(t){return t instanceof e?super.equals(t)&&this.consistentSnapshot===t.consistentSnapshot&&gDe.default.isDeepStrictEqual(this.keys,t.keys)&&gDe.default.isDeepStrictEqual(this.roles,t.roles):!1}toJSON(){return{_type:this.type,spec_version:this.specVersion,version:this.version,expires:this.expires,keys:Fwt(this.keys),roles:Nwt(this.roles),consistent_snapshot:this.consistentSnapshot,...this.unrecognizedFields}}static fromJSON(t){let{unrecognizedFields:r,...s}=x7.Signed.commonFieldsFromJSON(t),{keys:a,roles:n,consistent_snapshot:c,...f}=r;if(typeof c!="boolean")throw new TypeError("consistent_snapshot must be a boolean");return new e({...s,keys:Owt(a),roles:Lwt(n),consistentSnapshot:c,unrecognizedFields:f})}};$w.Root=k7;function Fwt(e){return Object.entries(e).reduce((t,[r,s])=>({...t,[r]:s.toJSON()}),{})}function Nwt(e){return Object.entries(e).reduce((t,[r,s])=>({...t,[r]:s.toJSON()}),{})}function Owt(e){let t;if(RO.guard.isDefined(e)){if(!RO.guard.isObjectRecord(e))throw new TypeError("keys must be an object");t=Object.entries(e).reduce((r,[s,a])=>({...r,[s]:Twt.Key.fromJSON(s,a)}),{})}return t}function Lwt(e){let t;if(RO.guard.isDefined(e)){if(!RO.guard.isObjectRecord(e))throw new TypeError("roles must be an object");t=Object.entries(e).reduce((r,[s,a])=>({...r,[s]:QO.Role.fromJSON(a)}),{})}return t}});var T7=G(TO=>{"use strict";Object.defineProperty(TO,"__esModule",{value:!0});TO.Signature=void 0;var R7=class e{constructor(t){let{keyID:r,sig:s}=t;this.keyID=r,this.sig=s}toJSON(){return{keyid:this.keyID,sig:this.sig}}static fromJSON(t){let{keyid:r,sig:s}=t;if(typeof r!="string")throw new TypeError("keyid must be a string");if(typeof s!="string")throw new TypeError("sig must be a string");return new e({keyID:r,sig:s})}};TO.Signature=R7});var O7=G(e1=>{"use strict";var Mwt=e1&&e1.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e1,"__esModule",{value:!0});e1.Snapshot=void 0;var Uwt=Mwt(Ie("util")),F7=uy(),yDe=Rb(),mDe=pf(),N7=class e extends F7.Signed{constructor(t){super(t),this.type=F7.MetadataKind.Snapshot,this.meta=t.meta||{"targets.json":new yDe.MetaFile({version:1})}}equals(t){return t instanceof e?super.equals(t)&&Uwt.default.isDeepStrictEqual(this.meta,t.meta):!1}toJSON(){return{_type:this.type,meta:_wt(this.meta),spec_version:this.specVersion,version:this.version,expires:this.expires,...this.unrecognizedFields}}static fromJSON(t){let{unrecognizedFields:r,...s}=F7.Signed.commonFieldsFromJSON(t),{meta:a,...n}=r;return new e({...s,meta:Hwt(a),unrecognizedFields:n})}};e1.Snapshot=N7;function _wt(e){return Object.entries(e).reduce((t,[r,s])=>({...t,[r]:s.toJSON()}),{})}function Hwt(e){let t;if(mDe.guard.isDefined(e))if(mDe.guard.isObjectRecord(e))t=Object.entries(e).reduce((r,[s,a])=>({...r,[s]:yDe.MetaFile.fromJSON(a)}),{});else throw new TypeError("meta field is malformed");return t}});var EDe=G(t1=>{"use strict";var jwt=t1&&t1.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t1,"__esModule",{value:!0});t1.Delegations=void 0;var FO=jwt(Ie("util")),Gwt=xA(),qwt=EO(),L7=P7(),NO=pf(),M7=class e{constructor(t){if(this.keys=t.keys,this.unrecognizedFields=t.unrecognizedFields||{},t.roles&&Object.keys(t.roles).some(r=>L7.TOP_LEVEL_ROLE_NAMES.includes(r)))throw new Gwt.ValueError("Delegated role name conflicts with top-level role name");this.succinctRoles=t.succinctRoles,this.roles=t.roles}equals(t){return t instanceof e?FO.default.isDeepStrictEqual(this.keys,t.keys)&&FO.default.isDeepStrictEqual(this.roles,t.roles)&&FO.default.isDeepStrictEqual(this.unrecognizedFields,t.unrecognizedFields)&&FO.default.isDeepStrictEqual(this.succinctRoles,t.succinctRoles):!1}*rolesForTarget(t){if(this.roles)for(let r of Object.values(this.roles))r.isDelegatedPath(t)&&(yield{role:r.name,terminating:r.terminating});else this.succinctRoles&&(yield{role:this.succinctRoles.getRoleForTarget(t),terminating:!0})}toJSON(){let t={keys:Wwt(this.keys),...this.unrecognizedFields};return this.roles?t.roles=Vwt(this.roles):this.succinctRoles&&(t.succinct_roles=this.succinctRoles.toJSON()),t}static fromJSON(t){let{keys:r,roles:s,succinct_roles:a,...n}=t,c;return NO.guard.isObject(a)&&(c=L7.SuccinctRoles.fromJSON(a)),new e({keys:Ywt(r),roles:Kwt(s),unrecognizedFields:n,succinctRoles:c})}};t1.Delegations=M7;function Wwt(e){return Object.entries(e).reduce((t,[r,s])=>({...t,[r]:s.toJSON()}),{})}function Vwt(e){return Object.values(e).map(t=>t.toJSON())}function Ywt(e){if(!NO.guard.isObjectRecord(e))throw new TypeError("keys is malformed");return Object.entries(e).reduce((t,[r,s])=>({...t,[r]:qwt.Key.fromJSON(r,s)}),{})}function Kwt(e){let t;if(NO.guard.isDefined(e)){if(!NO.guard.isObjectArray(e))throw new TypeError("roles is malformed");t=e.reduce((r,s)=>{let a=L7.DelegatedRole.fromJSON(s);return{...r,[a.name]:a}},{})}return t}});var H7=G(r1=>{"use strict";var Jwt=r1&&r1.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(r1,"__esModule",{value:!0});r1.Targets=void 0;var IDe=Jwt(Ie("util")),U7=uy(),zwt=EDe(),Zwt=Rb(),OO=pf(),_7=class e extends U7.Signed{constructor(t){super(t),this.type=U7.MetadataKind.Targets,this.targets=t.targets||{},this.delegations=t.delegations}addTarget(t){this.targets[t.path]=t}equals(t){return t instanceof e?super.equals(t)&&IDe.default.isDeepStrictEqual(this.targets,t.targets)&&IDe.default.isDeepStrictEqual(this.delegations,t.delegations):!1}toJSON(){let t={_type:this.type,spec_version:this.specVersion,version:this.version,expires:this.expires,targets:Xwt(this.targets),...this.unrecognizedFields};return this.delegations&&(t.delegations=this.delegations.toJSON()),t}static fromJSON(t){let{unrecognizedFields:r,...s}=U7.Signed.commonFieldsFromJSON(t),{targets:a,delegations:n,...c}=r;return new e({...s,targets:$wt(a),delegations:e1t(n),unrecognizedFields:c})}};r1.Targets=_7;function Xwt(e){return Object.entries(e).reduce((t,[r,s])=>({...t,[r]:s.toJSON()}),{})}function $wt(e){let t;if(OO.guard.isDefined(e))if(OO.guard.isObjectRecord(e))t=Object.entries(e).reduce((r,[s,a])=>({...r,[s]:Zwt.TargetFile.fromJSON(s,a)}),{});else throw new TypeError("targets must be an object");return t}function e1t(e){let t;if(OO.guard.isDefined(e))if(OO.guard.isObject(e))t=zwt.Delegations.fromJSON(e);else throw new TypeError("delegations must be an object");return t}});var W7=G(LO=>{"use strict";Object.defineProperty(LO,"__esModule",{value:!0});LO.Timestamp=void 0;var j7=uy(),CDe=Rb(),G7=pf(),q7=class e extends j7.Signed{constructor(t){super(t),this.type=j7.MetadataKind.Timestamp,this.snapshotMeta=t.snapshotMeta||new CDe.MetaFile({version:1})}equals(t){return t instanceof e?super.equals(t)&&this.snapshotMeta.equals(t.snapshotMeta):!1}toJSON(){return{_type:this.type,spec_version:this.specVersion,version:this.version,expires:this.expires,meta:{"snapshot.json":this.snapshotMeta.toJSON()},...this.unrecognizedFields}}static fromJSON(t){let{unrecognizedFields:r,...s}=j7.Signed.commonFieldsFromJSON(t),{meta:a,...n}=r;return new e({...s,snapshotMeta:t1t(a),unrecognizedFields:n})}};LO.Timestamp=q7;function t1t(e){let t;if(G7.guard.isDefined(e)){let r=e["snapshot.json"];if(!G7.guard.isDefined(r)||!G7.guard.isObject(r))throw new TypeError("missing snapshot.json in meta");t=CDe.MetaFile.fromJSON(r)}return t}});var BDe=G(i1=>{"use strict";var r1t=i1&&i1.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(i1,"__esModule",{value:!0});i1.Metadata=void 0;var n1t=u7(),wDe=r1t(Ie("util")),n1=uy(),Ub=xA(),i1t=Q7(),s1t=T7(),o1t=O7(),a1t=H7(),l1t=W7(),V7=pf(),Y7=class e{constructor(t,r,s){this.signed=t,this.signatures=r||{},this.unrecognizedFields=s||{}}sign(t,r=!0){let s=Buffer.from((0,n1t.canonicalize)(this.signed.toJSON())),a=t(s);r||(this.signatures={}),this.signatures[a.keyID]=a}verifyDelegate(t,r){let s,a={};switch(this.signed.type){case n1.MetadataKind.Root:a=this.signed.keys,s=this.signed.roles[t];break;case n1.MetadataKind.Targets:if(!this.signed.delegations)throw new Ub.ValueError(`No delegations found for ${t}`);a=this.signed.delegations.keys,this.signed.delegations.roles?s=this.signed.delegations.roles[t]:this.signed.delegations.succinctRoles&&this.signed.delegations.succinctRoles.isDelegatedRole(t)&&(s=this.signed.delegations.succinctRoles);break;default:throw new TypeError("invalid metadata type")}if(!s)throw new Ub.ValueError(`no delegation found for ${t}`);let n=new Set;if(s.keyIDs.forEach(c=>{let f=a[c];if(f)try{f.verifySignature(r),n.add(f.keyID)}catch{}}),n.sizer.toJSON()),signed:this.signed.toJSON(),...this.unrecognizedFields}}static fromJSON(t,r){let{signed:s,signatures:a,...n}=r;if(!V7.guard.isDefined(s)||!V7.guard.isObject(s))throw new TypeError("signed is not defined");if(t!==s._type)throw new Ub.ValueError(`expected '${t}', got ${s._type}`);if(!V7.guard.isObjectArray(a))throw new TypeError("signatures is not an array");let c;switch(t){case n1.MetadataKind.Root:c=i1t.Root.fromJSON(s);break;case n1.MetadataKind.Timestamp:c=l1t.Timestamp.fromJSON(s);break;case n1.MetadataKind.Snapshot:c=o1t.Snapshot.fromJSON(s);break;case n1.MetadataKind.Targets:c=a1t.Targets.fromJSON(s);break;default:throw new TypeError("invalid metadata type")}let f={};return a.forEach(p=>{let h=s1t.Signature.fromJSON(p);if(f[h.keyID])throw new Ub.ValueError(`multiple signatures found for keyid: ${h.keyID}`);f[h.keyID]=h}),new e(c,f,n)}};i1.Metadata=Y7});var MO=G(Fi=>{"use strict";Object.defineProperty(Fi,"__esModule",{value:!0});Fi.Timestamp=Fi.Targets=Fi.Snapshot=Fi.Signature=Fi.Root=Fi.Metadata=Fi.Key=Fi.TargetFile=Fi.MetaFile=Fi.ValueError=Fi.MetadataKind=void 0;var c1t=uy();Object.defineProperty(Fi,"MetadataKind",{enumerable:!0,get:function(){return c1t.MetadataKind}});var u1t=xA();Object.defineProperty(Fi,"ValueError",{enumerable:!0,get:function(){return u1t.ValueError}});var vDe=Rb();Object.defineProperty(Fi,"MetaFile",{enumerable:!0,get:function(){return vDe.MetaFile}});Object.defineProperty(Fi,"TargetFile",{enumerable:!0,get:function(){return vDe.TargetFile}});var f1t=EO();Object.defineProperty(Fi,"Key",{enumerable:!0,get:function(){return f1t.Key}});var A1t=BDe();Object.defineProperty(Fi,"Metadata",{enumerable:!0,get:function(){return A1t.Metadata}});var p1t=Q7();Object.defineProperty(Fi,"Root",{enumerable:!0,get:function(){return p1t.Root}});var h1t=T7();Object.defineProperty(Fi,"Signature",{enumerable:!0,get:function(){return h1t.Signature}});var g1t=O7();Object.defineProperty(Fi,"Snapshot",{enumerable:!0,get:function(){return g1t.Snapshot}});var d1t=H7();Object.defineProperty(Fi,"Targets",{enumerable:!0,get:function(){return d1t.Targets}});var m1t=W7();Object.defineProperty(Fi,"Timestamp",{enumerable:!0,get:function(){return m1t.Timestamp}})});var DDe=G((xtr,SDe)=>{var s1=1e3,o1=s1*60,a1=o1*60,py=a1*24,y1t=py*7,E1t=py*365.25;SDe.exports=function(e,t){t=t||{};var r=typeof e;if(r==="string"&&e.length>0)return I1t(e);if(r==="number"&&isFinite(e))return t.long?w1t(e):C1t(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function I1t(e){if(e=String(e),!(e.length>100)){var t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(t){var r=parseFloat(t[1]),s=(t[2]||"ms").toLowerCase();switch(s){case"years":case"year":case"yrs":case"yr":case"y":return r*E1t;case"weeks":case"week":case"w":return r*y1t;case"days":case"day":case"d":return r*py;case"hours":case"hour":case"hrs":case"hr":case"h":return r*a1;case"minutes":case"minute":case"mins":case"min":case"m":return r*o1;case"seconds":case"second":case"secs":case"sec":case"s":return r*s1;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function C1t(e){var t=Math.abs(e);return t>=py?Math.round(e/py)+"d":t>=a1?Math.round(e/a1)+"h":t>=o1?Math.round(e/o1)+"m":t>=s1?Math.round(e/s1)+"s":e+"ms"}function w1t(e){var t=Math.abs(e);return t>=py?UO(e,t,py,"day"):t>=a1?UO(e,t,a1,"hour"):t>=o1?UO(e,t,o1,"minute"):t>=s1?UO(e,t,s1,"second"):e+" ms"}function UO(e,t,r,s){var a=t>=r*1.5;return Math.round(e/r)+" "+s+(a?"s":"")}});var K7=G((ktr,bDe)=>{function B1t(e){r.debug=r,r.default=r,r.coerce=p,r.disable=c,r.enable=a,r.enabled=f,r.humanize=DDe(),r.destroy=h,Object.keys(e).forEach(E=>{r[E]=e[E]}),r.names=[],r.skips=[],r.formatters={};function t(E){let C=0;for(let S=0;S{if(ae==="%%")return"%";ie++;let Ae=r.formatters[de];if(typeof Ae=="function"){let Ce=O[ie];ae=Ae.call(U,Ce),O.splice(ie,1),ie--}return ae}),r.formatArgs.call(U,O),(U.log||r.log).apply(U,O)}return T.namespace=E,T.useColors=r.useColors(),T.color=r.selectColor(E),T.extend=s,T.destroy=r.destroy,Object.defineProperty(T,"enabled",{enumerable:!0,configurable:!1,get:()=>S!==null?S:(x!==r.namespaces&&(x=r.namespaces,I=r.enabled(E)),I),set:O=>{S=O}}),typeof r.init=="function"&&r.init(T),T}function s(E,C){let S=r(this.namespace+(typeof C>"u"?":":C)+E);return S.log=this.log,S}function a(E){r.save(E),r.namespaces=E,r.names=[],r.skips=[];let C=(typeof E=="string"?E:"").trim().replace(" ",",").split(",").filter(Boolean);for(let S of C)S[0]==="-"?r.skips.push(S.slice(1)):r.names.push(S)}function n(E,C){let S=0,x=0,I=-1,T=0;for(;S"-"+C)].join(",");return r.enable(""),E}function f(E){for(let C of r.skips)if(n(E,C))return!1;for(let C of r.names)if(n(E,C))return!0;return!1}function p(E){return E instanceof Error?E.stack||E.message:E}function h(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return r.enable(r.load()),r}bDe.exports=B1t});var PDe=G((oc,_O)=>{oc.formatArgs=S1t;oc.save=D1t;oc.load=b1t;oc.useColors=v1t;oc.storage=P1t();oc.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();oc.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function v1t(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let e;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(e=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(e[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function S1t(e){if(e[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+e[0]+(this.useColors?"%c ":" ")+"+"+_O.exports.humanize(this.diff),!this.useColors)return;let t="color: "+this.color;e.splice(1,0,t,"color: inherit");let r=0,s=0;e[0].replace(/%[a-zA-Z%]/g,a=>{a!=="%%"&&(r++,a==="%c"&&(s=r))}),e.splice(s,0,t)}oc.log=console.debug||console.log||(()=>{});function D1t(e){try{e?oc.storage.setItem("debug",e):oc.storage.removeItem("debug")}catch{}}function b1t(){let e;try{e=oc.storage.getItem("debug")}catch{}return!e&&typeof process<"u"&&"env"in process&&(e=process.env.DEBUG),e}function P1t(){try{return localStorage}catch{}}_O.exports=K7()(oc);var{formatters:x1t}=_O.exports;x1t.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}}});var kDe=G((io,jO)=>{var k1t=Ie("tty"),HO=Ie("util");io.init=L1t;io.log=F1t;io.formatArgs=R1t;io.save=N1t;io.load=O1t;io.useColors=Q1t;io.destroy=HO.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");io.colors=[6,2,3,4,5,1];try{let e=Ie("supports-color");e&&(e.stderr||e).level>=2&&(io.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}io.inspectOpts=Object.keys(process.env).filter(e=>/^debug_/i.test(e)).reduce((e,t)=>{let r=t.substring(6).toLowerCase().replace(/_([a-z])/g,(a,n)=>n.toUpperCase()),s=process.env[t];return/^(yes|on|true|enabled)$/i.test(s)?s=!0:/^(no|off|false|disabled)$/i.test(s)?s=!1:s==="null"?s=null:s=Number(s),e[r]=s,e},{});function Q1t(){return"colors"in io.inspectOpts?!!io.inspectOpts.colors:k1t.isatty(process.stderr.fd)}function R1t(e){let{namespace:t,useColors:r}=this;if(r){let s=this.color,a="\x1B[3"+(s<8?s:"8;5;"+s),n=` ${a};1m${t} \x1B[0m`;e[0]=n+e[0].split(` -`).join(` -`+n),e.push(a+"m+"+jO.exports.humanize(this.diff)+"\x1B[0m")}else e[0]=T1t()+t+" "+e[0]}function T1t(){return io.inspectOpts.hideDate?"":new Date().toISOString()+" "}function F1t(...e){return process.stderr.write(HO.formatWithOptions(io.inspectOpts,...e)+` -`)}function N1t(e){e?process.env.DEBUG=e:delete process.env.DEBUG}function O1t(){return process.env.DEBUG}function L1t(e){e.inspectOpts={};let t=Object.keys(io.inspectOpts);for(let r=0;rt.trim()).join(" ")};xDe.O=function(e){return this.inspectOpts.colors=this.useColors,HO.inspect(e,this.inspectOpts)}});var z7=G((Qtr,J7)=>{typeof process>"u"||process.type==="renderer"||process.browser===!0||process.__nwjs?J7.exports=PDe():J7.exports=kDe()});var qO=G(Ji=>{"use strict";Object.defineProperty(Ji,"__esModule",{value:!0});Ji.DownloadHTTPError=Ji.DownloadLengthMismatchError=Ji.DownloadError=Ji.ExpiredMetadataError=Ji.EqualVersionError=Ji.BadVersionError=Ji.RepositoryError=Ji.PersistError=Ji.RuntimeError=Ji.ValueError=void 0;var Z7=class extends Error{};Ji.ValueError=Z7;var X7=class extends Error{};Ji.RuntimeError=X7;var $7=class extends Error{};Ji.PersistError=$7;var _b=class extends Error{};Ji.RepositoryError=_b;var GO=class extends _b{};Ji.BadVersionError=GO;var eK=class extends GO{};Ji.EqualVersionError=eK;var tK=class extends _b{};Ji.ExpiredMetadataError=tK;var Hb=class extends Error{};Ji.DownloadError=Hb;var rK=class extends Hb{};Ji.DownloadLengthMismatchError=rK;var nK=class extends Hb{constructor(t,r){super(t),this.statusCode=r}};Ji.DownloadHTTPError=nK});var RDe=G(l1=>{"use strict";var sK=l1&&l1.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(l1,"__esModule",{value:!0});l1.withTempFile=void 0;var iK=sK(Ie("fs/promises")),M1t=sK(Ie("os")),QDe=sK(Ie("path")),U1t=async e=>_1t(async t=>e(QDe.default.join(t,"tempfile")));l1.withTempFile=U1t;var _1t=async e=>{let t=await iK.default.realpath(M1t.default.tmpdir()),r=await iK.default.mkdtemp(t+QDe.default.sep);try{return await e(r)}finally{await iK.default.rm(r,{force:!0,recursive:!0,maxRetries:3})}}});var aK=G(Pg=>{"use strict";var VO=Pg&&Pg.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Pg,"__esModule",{value:!0});Pg.DefaultFetcher=Pg.BaseFetcher=void 0;var H1t=VO(z7()),TDe=VO(Ie("fs")),j1t=VO(sO()),G1t=VO(Ie("util")),FDe=qO(),q1t=RDe(),W1t=(0,H1t.default)("tuf:fetch"),WO=class{async downloadFile(t,r,s){return(0,q1t.withTempFile)(async a=>{let n=await this.fetch(t),c=0,f=TDe.default.createWriteStream(a);try{for await(let p of n){let h=Buffer.from(p);if(c+=h.length,c>r)throw new FDe.DownloadLengthMismatchError("Max length reached");await V1t(f,h)}}finally{await G1t.default.promisify(f.close).bind(f)()}return s(a)})}async downloadBytes(t,r){return this.downloadFile(t,r,async s=>{let a=TDe.default.createReadStream(s),n=[];for await(let c of a)n.push(c);return Buffer.concat(n)})}};Pg.BaseFetcher=WO;var oK=class extends WO{constructor(t={}){super(),this.timeout=t.timeout,this.retry=t.retry}async fetch(t){W1t("GET %s",t);let r=await(0,j1t.default)(t,{timeout:this.timeout,retry:this.retry});if(!r.ok||!r?.body)throw new FDe.DownloadHTTPError("Failed to download",r.status);return r.body}};Pg.DefaultFetcher=oK;var V1t=async(e,t)=>new Promise((r,s)=>{e.write(t,a=>{a&&s(a),r(!0)})})});var NDe=G(YO=>{"use strict";Object.defineProperty(YO,"__esModule",{value:!0});YO.defaultConfig=void 0;YO.defaultConfig={maxRootRotations:256,maxDelegations:32,rootMaxLength:512e3,timestampMaxLength:16384,snapshotMaxLength:2e6,targetsMaxLength:5e6,prefixTargetsWithHash:!0,fetchTimeout:1e5,fetchRetries:void 0,fetchRetry:2}});var ODe=G(KO=>{"use strict";Object.defineProperty(KO,"__esModule",{value:!0});KO.TrustedMetadataStore=void 0;var ws=MO(),Hi=qO(),lK=class{constructor(t){this.trustedSet={},this.referenceTime=new Date,this.loadTrustedRoot(t)}get root(){if(!this.trustedSet.root)throw new ReferenceError("No trusted root metadata");return this.trustedSet.root}get timestamp(){return this.trustedSet.timestamp}get snapshot(){return this.trustedSet.snapshot}get targets(){return this.trustedSet.targets}getRole(t){return this.trustedSet[t]}updateRoot(t){let r=JSON.parse(t.toString("utf8")),s=ws.Metadata.fromJSON(ws.MetadataKind.Root,r);if(s.signed.type!=ws.MetadataKind.Root)throw new Hi.RepositoryError(`Expected 'root', got ${s.signed.type}`);if(this.root.verifyDelegate(ws.MetadataKind.Root,s),s.signed.version!=this.root.signed.version+1)throw new Hi.BadVersionError(`Expected version ${this.root.signed.version+1}, got ${s.signed.version}`);return s.verifyDelegate(ws.MetadataKind.Root,s),this.trustedSet.root=s,s}updateTimestamp(t){if(this.snapshot)throw new Hi.RuntimeError("Cannot update timestamp after snapshot");if(this.root.signed.isExpired(this.referenceTime))throw new Hi.ExpiredMetadataError("Final root.json is expired");let r=JSON.parse(t.toString("utf8")),s=ws.Metadata.fromJSON(ws.MetadataKind.Timestamp,r);if(s.signed.type!=ws.MetadataKind.Timestamp)throw new Hi.RepositoryError(`Expected 'timestamp', got ${s.signed.type}`);if(this.root.verifyDelegate(ws.MetadataKind.Timestamp,s),this.timestamp){if(s.signed.version{let p=n.signed.meta[c];if(!p)throw new Hi.RepositoryError(`Missing file ${c} in new snapshot`);if(p.version{"use strict";Object.defineProperty(cK,"__esModule",{value:!0});cK.join=K1t;var Y1t=Ie("url");function K1t(e,t){return new Y1t.URL(J1t(e)+z1t(t)).toString()}function J1t(e){return e.endsWith("/")?e:e+"/"}function z1t(e){return e.startsWith("/")?e.slice(1):e}});var MDe=G(tu=>{"use strict";var Z1t=tu&&tu.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||("get"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),X1t=tu&&tu.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),AK=tu&&tu.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&Z1t(t,e,r);return X1t(t,e),t},$1t=tu&&tu.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(tu,"__esModule",{value:!0});tu.Updater=void 0;var kA=MO(),eBt=$1t(z7()),c1=AK(Ie("fs")),JO=AK(Ie("path")),tBt=NDe(),hy=qO(),rBt=aK(),nBt=ODe(),jb=AK(LDe()),uK=(0,eBt.default)("tuf:cache"),fK=class{constructor(t){let{metadataDir:r,metadataBaseUrl:s,targetDir:a,targetBaseUrl:n,fetcher:c,config:f}=t;this.dir=r,this.metadataBaseUrl=s,this.targetDir=a,this.targetBaseUrl=n,this.forceCache=t.forceCache??!1;let p=this.loadLocalMetadata(kA.MetadataKind.Root);this.trustedSet=new nBt.TrustedMetadataStore(p),this.config={...tBt.defaultConfig,...f},this.fetcher=c||new rBt.DefaultFetcher({timeout:this.config.fetchTimeout,retry:this.config.fetchRetries??this.config.fetchRetry})}async refresh(){if(this.forceCache)try{await this.loadTimestamp({checkRemote:!1})}catch{await this.loadRoot(),await this.loadTimestamp()}else await this.loadRoot(),await this.loadTimestamp();await this.loadSnapshot(),await this.loadTargets(kA.MetadataKind.Targets,kA.MetadataKind.Root)}async getTargetInfo(t){return this.trustedSet.targets||await this.refresh(),this.preorderDepthFirstWalk(t)}async downloadTarget(t,r,s){let a=r||this.generateTargetPath(t);if(!s){if(!this.targetBaseUrl)throw new hy.ValueError("Target base URL not set");s=this.targetBaseUrl}let n=t.path;if(this.trustedSet.root.signed.consistentSnapshot&&this.config.prefixTargetsWithHash){let p=Object.values(t.hashes),{dir:h,base:E}=JO.parse(n),C=`${p[0]}.${E}`;n=h?`${h}/${C}`:C}let f=jb.join(s,n);return await this.fetcher.downloadFile(f,t.length,async p=>{await t.verify(c1.createReadStream(p)),uK("WRITE %s",a),c1.copyFileSync(p,a)}),a}async findCachedTarget(t,r){r||(r=this.generateTargetPath(t));try{if(c1.existsSync(r))return await t.verify(c1.createReadStream(r)),r}catch{return}}loadLocalMetadata(t){let r=JO.join(this.dir,`${t}.json`);return uK("READ %s",r),c1.readFileSync(r)}async loadRoot(){let r=this.trustedSet.root.signed.version+1,s=r+this.config.maxRootRotations;for(let a=r;a0;){let{roleName:a,parentRoleName:n}=r.pop();if(s.has(a))continue;let c=(await this.loadTargets(a,n))?.signed;if(!c)continue;let f=c.targets?.[t];if(f)return f;if(s.add(a),c.delegations){let p=[],h=c.delegations.rolesForTarget(t);for(let{role:E,terminating:C}of h)if(p.push({roleName:E,parentRoleName:a}),C){r.splice(0);break}p.reverse(),r.push(...p)}}}generateTargetPath(t){if(!this.targetDir)throw new hy.ValueError("Target directory not set");let r=encodeURIComponent(t.path);return JO.join(this.targetDir,r)}persistMetadata(t,r){let s=encodeURIComponent(t);try{let a=JO.join(this.dir,`${s}.json`);uK("WRITE %s",a),c1.writeFileSync(a,r.toString("utf8"))}catch(a){throw new hy.PersistError(`Failed to persist metadata ${s} error: ${a}`)}}};tu.Updater=fK});var UDe=G(xg=>{"use strict";Object.defineProperty(xg,"__esModule",{value:!0});xg.Updater=xg.BaseFetcher=xg.TargetFile=void 0;var iBt=MO();Object.defineProperty(xg,"TargetFile",{enumerable:!0,get:function(){return iBt.TargetFile}});var sBt=aK();Object.defineProperty(xg,"BaseFetcher",{enumerable:!0,get:function(){return sBt.BaseFetcher}});var oBt=MDe();Object.defineProperty(xg,"Updater",{enumerable:!0,get:function(){return oBt.Updater}})});var hK=G(zO=>{"use strict";Object.defineProperty(zO,"__esModule",{value:!0});zO.TUFError=void 0;var pK=class extends Error{constructor({code:t,message:r,cause:s}){super(r),this.code=t,this.cause=s,this.name=this.constructor.name}};zO.TUFError=pK});var _De=G(Gb=>{"use strict";var aBt=Gb&&Gb.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Gb,"__esModule",{value:!0});Gb.readTarget=cBt;var lBt=aBt(Ie("fs")),ZO=hK();async function cBt(e,t){let r=await uBt(e,t);return new Promise((s,a)=>{lBt.default.readFile(r,"utf-8",(n,c)=>{n?a(new ZO.TUFError({code:"TUF_READ_TARGET_ERROR",message:`error reading target ${r}`,cause:n})):s(c)})})}async function uBt(e,t){let r;try{r=await e.getTargetInfo(t)}catch(a){throw new ZO.TUFError({code:"TUF_REFRESH_METADATA_ERROR",message:"error refreshing TUF metadata",cause:a})}if(!r)throw new ZO.TUFError({code:"TUF_FIND_TARGET_ERROR",message:`target ${t} not found`});let s=await e.findCachedTarget(r);if(!s)try{s=await e.downloadTarget(r)}catch(a){throw new ZO.TUFError({code:"TUF_DOWNLOAD_TARGET_ERROR",message:`error downloading target ${s}`,cause:a})}return s}});var HDe=G((jtr,fBt)=>{fBt.exports={"https://tuf-repo-cdn.sigstore.dev":{"root.json":"ewogInNpZ25hdHVyZXMiOiBbCiAgewogICAia2V5aWQiOiAiNmYyNjAwODlkNTkyM2RhZjIwMTY2Y2E2NTdjNTQzYWY2MTgzNDZhYjk3MTg4NGE5OTk2MmIwMTk4OGJiZTBjMyIsCiAgICJzaWciOiAiMzA0NjAyMjEwMDhhYjFmNmYxN2Q0ZjllNmQ3ZGNmMWM4ODkxMmI2YjUzY2MxMDM4ODY0NGFlMWYwOWJjMzdhMDgyY2QwNjAwM2UwMjIxMDBlMTQ1ZWY0YzdiNzgyZDRlODEwN2I1MzQzN2U2NjlkMDQ3Njg5MmNlOTk5OTAzYWUzM2QxNDQ0ODM2Njk5NmU3IgogIH0sCiAgewogICAia2V5aWQiOiAiZTcxYTU0ZDU0MzgzNWJhODZhZGFkOTQ2MDM3OWM3NjQxZmI4NzI2ZDE2NGVhNzY2ODAxYTFjNTIyYWJhN2VhMiIsCiAgICJzaWciOiAiMzA0NTAyMjEwMGM3NjhiMmY4NmRhOTk1NjkwMTljMTYwYTA4MWRhNTRhZTM2YzM0YzBhMzEyMGQzY2I2OWI1M2I3ZDExMzc1OGUwMjIwNGY2NzE1MThmNjE3YjIwZDQ2NTM3ZmFlNmMzYjYzYmFlODkxM2Y0ZjE5NjIxNTYxMDVjYzRmMDE5YWMzNWM2YSIKICB9LAogIHsKICAgImtleWlkIjogIjIyZjRjYWVjNmQ4ZTZmOTU1NWFmNjZiM2Q0YzNjYjA2YTNiYjIzZmRjN2UzOWM5MTZjNjFmNDYyZTZmNTJiMDYiLAogICAic2lnIjogIjMwNDUwMjIxMDBiNDQzNGU2OTk1ZDM2OGQyM2U3NDc1OWFjZDBjYjkwMTNjODNhNWQzNTExZjBmOTk3ZWM1NGM0NTZhZTQzNTBhMDIyMDE1YjBlMjY1ZDE4MmQyYjYxZGM3NGUxNTVkOThiM2MzZmJlNTY0YmEwNTI4NmFhMTRjOGRmMDJjOWI3NTY1MTYiCiAgfSwKICB7CiAgICJrZXlpZCI6ICI2MTY0MzgzODEyNWI0NDBiNDBkYjY5NDJmNWNiNWEzMWMwZGMwNDM2ODMxNmViMmFhYTU4Yjk1OTA0YTU4MjIyIiwKICAgInNpZyI6ICIzMDQ1MDIyMTAwODJjNTg0MTFkOTg5ZWI5Zjg2MTQxMDg1N2Q0MjM4MTU5MGVjOTQyNGRiZGFhNTFlNzhlZDEzNTE1NDMxOTA0ZTAyMjAxMTgxODVkYTZhNmMyOTQ3MTMxYzE3Nzk3ZTJiYjc2MjBjZTI2ZTVmMzAxZDFjZWFjNWYyYTdlNThmOWRjZjJlIgogIH0sCiAgewogICAia2V5aWQiOiAiYTY4N2U1YmY0ZmFiODJiMGVlNThkNDZlMDVjOTUzNTE0NWEyYzlhZmI0NThmNDNkNDJiNDVjYTBmZGNlMmE3MCIsCiAgICJzaWciOiAiMzA0NjAyMjEwMGM3ODUxMzg1NGNhZTljMzJlYWE2Yjg4ZTE4OTEyZjQ4MDA2YzI3NTdhMjU4ZjkxNzMxMmNhYmE3NTk0OGViOWUwMjIxMDBkOWUxYjRjZTBhZGZlOWZkMmUyMTQ4ZDdmYTI3YTJmNDBiYTExMjJiZDY5ZGE3NjEyZDhkMTc3NmIwMTNjOTFkIgogIH0sCiAgewogICAia2V5aWQiOiAiZmRmYTgzYTA3YjVhODM1ODliODdkZWQ0MWY3N2YzOWQyMzJhZDkxZjdjY2U1Mjg2OGRhY2QwNmJhMDg5ODQ5ZiIsCiAgICJzaWciOiAiMzA0NTAyMjA1NjQ4M2EyZDVkOWVhOWNlYzZlMTFlYWRmYjMzYzQ4NGI2MTQyOThmYWNhMTVhY2YxYzQzMWIxMWVkN2Y3MzRjMDIyMTAwZDBjMWQ3MjZhZjkyYTg3ZTRlNjY0NTljYTVhZGYzOGEwNWI0NGUxZjk0MzE4NDIzZjk1NGJhZThiY2E1YmIyZSIKICB9LAogIHsKICAgImtleWlkIjogImUyZjU5YWNiOTQ4ODUxOTQwN2UxOGNiZmM5MzI5NTEwYmUwM2MwNGFjYTk5MjlkMmYwMzAxMzQzZmVjODU1MjMiLAogICAic2lnIjogIjMwNDYwMjIxMDBkMDA0ZGU4ODAyNGMzMmRjNTY1M2E5ZjQ4NDNjZmM1MjE1NDI3MDQ4YWQ5NjAwZDJjZjljOTY5ZTZlZGZmM2QyMDIyMTAwZDllYmI3OThmNWZjNjZhZjEwODk5ZGVjZTAxNGE4NjI4Y2NmM2M1NDAyY2Q0YTQyNzAyMDc0NzJmOGY2ZTcxMiIKICB9LAogIHsKICAgImtleWlkIjogIjNjMzQ0YWEwNjhmZDRjYzRlODdkYzUwYjYxMmMwMjQzMWZiYzc3MWU5NTAwMzk5MzY4M2EyYjBiZjI2MGNmMGUiLAogICAic2lnIjogIjMwNDYwMjIxMDBiN2IwOTk5NmM0NWNhMmQ0YjA1NjAzZTU2YmFlZmEyOTcxOGEwYjcxMTQ3Y2Y4YzZlNjYzNDliYWE2MTQ3N2RmMDIyMTAwYzRkYTgwYzcxN2I0ZmE3YmJhMGZkNWM3MmRhOGEwNDk5MzU4YjAxMzU4YjIzMDlmNDFkMTQ1NmVhMWU3ZTFkOSIKICB9LAogIHsKICAgImtleWlkIjogImVjODE2Njk3MzRlMDE3OTk2YzViODVmM2QwMmMzZGUxZGQ0NjM3YTE1MjAxOWZlMWFmMTI1ZDJmOTM2OGI5NWUiLAogICAic2lnIjogIjMwNDYwMjIxMDBiZTk3ODJjMzA3NDRlNDExYTgyZmE4NWI1MTM4ZDYwMWNlMTQ4YmMxOTI1OGFlYzY0ZTdlYzI0NDc4ZjM4ODEyMDIyMTAwY2FlZjYzZGNhZjFhNGI5YTUwMGQzYmQwZTNmMTY0ZWMxOGYxYjYzZDdhOTQ2MGQ5YWNhYjEwNjZkYjBmMDE2ZCIKICB9LAogIHsKICAgImtleWlkIjogIjFlMWQ2NWNlOThiMTBhZGRhZDQ3NjRmZWJmN2RkYTJkMDQzNmIzZDNhMzg5MzU3OWMwZGRkYWVhMjBlNTQ4NDkiLAogICAic2lnIjogIjMwNDUwMjIwNzQ2ZWMzZjg1MzRjZTU1NTMxZDBkMDFmZjY0OTY0ZWY0NDBkMWU3ZDJjNGMxNDI0MDliOGU5NzY5ZjFhZGE2ZjAyMjEwMGUzYjkyOWZjZDkzZWExOGZlYWEwODI1ODg3YTcyMTA0ODk4NzlhNjY3ODBjMDdhODNmNGJkNDZlMmYwOWFiM2IiCiAgfQogXSwKICJzaWduZWQiOiB7CiAgIl90eXBlIjogInJvb3QiLAogICJjb25zaXN0ZW50X3NuYXBzaG90IjogdHJ1ZSwKICAiZXhwaXJlcyI6ICIyMDI1LTAyLTE5VDA4OjA0OjMyWiIsCiAgImtleXMiOiB7CiAgICIyMmY0Y2FlYzZkOGU2Zjk1NTVhZjY2YjNkNGMzY2IwNmEzYmIyM2ZkYzdlMzljOTE2YzYxZjQ2MmU2ZjUyYjA2IjogewogICAgImtleWlkX2hhc2hfYWxnb3JpdGhtcyI6IFsKICAgICAic2hhMjU2IiwKICAgICAic2hhNTEyIgogICAgXSwKICAgICJrZXl0eXBlIjogImVjZHNhIiwKICAgICJrZXl2YWwiOiB7CiAgICAgInB1YmxpYyI6ICItLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLVxuTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFekJ6Vk9tSENQb2pNVkxTSTM2NFdpaVY4TlByRFxuNklnUnhWbGlza3ovdit5M0pFUjVtY1ZHY09ObGlEY1dNQzVKMmxmSG1qUE5QaGI0SDd4bThMemZTQT09XG4tLS0tLUVORCBQVUJMSUMgS0VZLS0tLS1cbiIKICAgIH0sCiAgICAic2NoZW1lIjogImVjZHNhLXNoYTItbmlzdHAyNTYiLAogICAgIngtdHVmLW9uLWNpLWtleW93bmVyIjogIkBzYW50aWFnb3RvcnJlcyIKICAgfSwKICAgIjYxNjQzODM4MTI1YjQ0MGI0MGRiNjk0MmY1Y2I1YTMxYzBkYzA0MzY4MzE2ZWIyYWFhNThiOTU5MDRhNTgyMjIiOiB7CiAgICAia2V5aWRfaGFzaF9hbGdvcml0aG1zIjogWwogICAgICJzaGEyNTYiLAogICAgICJzaGE1MTIiCiAgICBdLAogICAgImtleXR5cGUiOiAiZWNkc2EiLAogICAgImtleXZhbCI6IHsKICAgICAicHVibGljIjogIi0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tXG5NRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVpbmlrU3NBUW1Za05lSDVlWXEvQ25JekxhYWNPXG54bFNhYXdRRE93cUt5L3RDcXhxNXh4UFNKYzIxSzRXSWhzOUd5T2tLZnp1ZVkzR0lMemNNSlo0Y1d3PT1cbi0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLVxuIgogICAgfSwKICAgICJzY2hlbWUiOiAiZWNkc2Etc2hhMi1uaXN0cDI1NiIsCiAgICAieC10dWYtb24tY2kta2V5b3duZXIiOiAiQGJvYmNhbGxhd2F5IgogICB9LAogICAiNmYyNjAwODlkNTkyM2RhZjIwMTY2Y2E2NTdjNTQzYWY2MTgzNDZhYjk3MTg4NGE5OTk2MmIwMTk4OGJiZTBjMyI6IHsKICAgICJrZXlpZF9oYXNoX2FsZ29yaXRobXMiOiBbCiAgICAgInNoYTI1NiIsCiAgICAgInNoYTUxMiIKICAgIF0sCiAgICAia2V5dHlwZSI6ICJlY2RzYSIsCiAgICAia2V5dmFsIjogewogICAgICJwdWJsaWMiOiAiLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cbk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXk4WEtzbWhCWURJOEpjMEd3ekJ4ZUtheDBjbTVcblNUS0VVNjVIUEZ1blVuNDFzVDhwaTBGak00SWtIei9ZVW13bUxVTzBXdDdseGhqNkJrTElLNHFZQXc9PVxuLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tXG4iCiAgICB9LAogICAgInNjaGVtZSI6ICJlY2RzYS1zaGEyLW5pc3RwMjU2IiwKICAgICJ4LXR1Zi1vbi1jaS1rZXlvd25lciI6ICJAZGxvcmVuYyIKICAgfSwKICAgIjcyNDdmMGRiYWQ4NWIxNDdlMTg2M2JhZGU3NjEyNDNjYzc4NWRjYjdhYTQxMGU3MTA1ZGQzZDJiNjFhMzZkMmMiOiB7CiAgICAia2V5aWRfaGFzaF9hbGdvcml0aG1zIjogWwogICAgICJzaGEyNTYiLAogICAgICJzaGE1MTIiCiAgICBdLAogICAgImtleXR5cGUiOiAiZWNkc2EiLAogICAgImtleXZhbCI6IHsKICAgICAicHVibGljIjogIi0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tXG5NRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVXUmlHcjUraiszSjVTc0grWnRyNW5FMkgyd083XG5CVituTzNzOTNnTGNhMThxVE96SFkxb1d5QUdEeWtNU3NHVFVCU3Q5RCtBbjBLZktzRDJtZlNNNDJRPT1cbi0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLVxuIgogICAgfSwKICAgICJzY2hlbWUiOiAiZWNkc2Etc2hhMi1uaXN0cDI1NiIsCiAgICAieC10dWYtb24tY2ktb25saW5lLXVyaSI6ICJnY3BrbXM6Ly9wcm9qZWN0cy9zaWdzdG9yZS1yb290LXNpZ25pbmcvbG9jYXRpb25zL2dsb2JhbC9rZXlSaW5ncy9yb290L2NyeXB0b0tleXMvdGltZXN0YW1wIgogICB9LAogICAiYTY4N2U1YmY0ZmFiODJiMGVlNThkNDZlMDVjOTUzNTE0NWEyYzlhZmI0NThmNDNkNDJiNDVjYTBmZGNlMmE3MCI6IHsKICAgICJrZXlpZF9oYXNoX2FsZ29yaXRobXMiOiBbCiAgICAgInNoYTI1NiIsCiAgICAgInNoYTUxMiIKICAgIF0sCiAgICAia2V5dHlwZSI6ICJlY2RzYSIsCiAgICAia2V5dmFsIjogewogICAgICJwdWJsaWMiOiAiLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cbk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRTBnaHJoOTJMdzFZcjNpZEdWNVdxQ3RNREI4Q3hcbitEOGhkQzR3MlpMTklwbFZSb1ZHTHNrWWEzZ2hlTXlPamlKOGtQaTE1YVEyLy83UCtvajdVdkpQR3c9PVxuLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tXG4iCiAgICB9LAogICAgInNjaGVtZSI6ICJlY2RzYS1zaGEyLW5pc3RwMjU2IiwKICAgICJ4LXR1Zi1vbi1jaS1rZXlvd25lciI6ICJAam9zaHVhZ2wiCiAgIH0sCiAgICJlNzFhNTRkNTQzODM1YmE4NmFkYWQ5NDYwMzc5Yzc2NDFmYjg3MjZkMTY0ZWE3NjY4MDFhMWM1MjJhYmE3ZWEyIjogewogICAgImtleWlkX2hhc2hfYWxnb3JpdGhtcyI6IFsKICAgICAic2hhMjU2IiwKICAgICAic2hhNTEyIgogICAgXSwKICAgICJrZXl0eXBlIjogImVjZHNhIiwKICAgICJrZXl2YWwiOiB7CiAgICAgInB1YmxpYyI6ICItLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLVxuTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFRVhzejNTWlhGYjhqTVY0Mmo2cEpseWpialI4S1xuTjNCd29jZXhxNkxNSWI1cXNXS09RdkxOMTZOVWVmTGM0SHN3T291bVJzVlZhYWpTcFFTNmZvYmtSdz09XG4tLS0tLUVORCBQVUJMSUMgS0VZLS0tLS1cbiIKICAgIH0sCiAgICAic2NoZW1lIjogImVjZHNhLXNoYTItbmlzdHAyNTYiLAogICAgIngtdHVmLW9uLWNpLWtleW93bmVyIjogIkBtbm02NzgiCiAgIH0KICB9LAogICJyb2xlcyI6IHsKICAgInJvb3QiOiB7CiAgICAia2V5aWRzIjogWwogICAgICI2ZjI2MDA4OWQ1OTIzZGFmMjAxNjZjYTY1N2M1NDNhZjYxODM0NmFiOTcxODg0YTk5OTYyYjAxOTg4YmJlMGMzIiwKICAgICAiZTcxYTU0ZDU0MzgzNWJhODZhZGFkOTQ2MDM3OWM3NjQxZmI4NzI2ZDE2NGVhNzY2ODAxYTFjNTIyYWJhN2VhMiIsCiAgICAgIjIyZjRjYWVjNmQ4ZTZmOTU1NWFmNjZiM2Q0YzNjYjA2YTNiYjIzZmRjN2UzOWM5MTZjNjFmNDYyZTZmNTJiMDYiLAogICAgICI2MTY0MzgzODEyNWI0NDBiNDBkYjY5NDJmNWNiNWEzMWMwZGMwNDM2ODMxNmViMmFhYTU4Yjk1OTA0YTU4MjIyIiwKICAgICAiYTY4N2U1YmY0ZmFiODJiMGVlNThkNDZlMDVjOTUzNTE0NWEyYzlhZmI0NThmNDNkNDJiNDVjYTBmZGNlMmE3MCIKICAgIF0sCiAgICAidGhyZXNob2xkIjogMwogICB9LAogICAic25hcHNob3QiOiB7CiAgICAia2V5aWRzIjogWwogICAgICI3MjQ3ZjBkYmFkODViMTQ3ZTE4NjNiYWRlNzYxMjQzY2M3ODVkY2I3YWE0MTBlNzEwNWRkM2QyYjYxYTM2ZDJjIgogICAgXSwKICAgICJ0aHJlc2hvbGQiOiAxLAogICAgIngtdHVmLW9uLWNpLWV4cGlyeS1wZXJpb2QiOiAzNjUwLAogICAgIngtdHVmLW9uLWNpLXNpZ25pbmctcGVyaW9kIjogMzY1CiAgIH0sCiAgICJ0YXJnZXRzIjogewogICAgImtleWlkcyI6IFsKICAgICAiNmYyNjAwODlkNTkyM2RhZjIwMTY2Y2E2NTdjNTQzYWY2MTgzNDZhYjk3MTg4NGE5OTk2MmIwMTk4OGJiZTBjMyIsCiAgICAgImU3MWE1NGQ1NDM4MzViYTg2YWRhZDk0NjAzNzljNzY0MWZiODcyNmQxNjRlYTc2NjgwMWExYzUyMmFiYTdlYTIiLAogICAgICIyMmY0Y2FlYzZkOGU2Zjk1NTVhZjY2YjNkNGMzY2IwNmEzYmIyM2ZkYzdlMzljOTE2YzYxZjQ2MmU2ZjUyYjA2IiwKICAgICAiNjE2NDM4MzgxMjViNDQwYjQwZGI2OTQyZjVjYjVhMzFjMGRjMDQzNjgzMTZlYjJhYWE1OGI5NTkwNGE1ODIyMiIsCiAgICAgImE2ODdlNWJmNGZhYjgyYjBlZTU4ZDQ2ZTA1Yzk1MzUxNDVhMmM5YWZiNDU4ZjQzZDQyYjQ1Y2EwZmRjZTJhNzAiCiAgICBdLAogICAgInRocmVzaG9sZCI6IDMKICAgfSwKICAgInRpbWVzdGFtcCI6IHsKICAgICJrZXlpZHMiOiBbCiAgICAgIjcyNDdmMGRiYWQ4NWIxNDdlMTg2M2JhZGU3NjEyNDNjYzc4NWRjYjdhYTQxMGU3MTA1ZGQzZDJiNjFhMzZkMmMiCiAgICBdLAogICAgInRocmVzaG9sZCI6IDEsCiAgICAieC10dWYtb24tY2ktZXhwaXJ5LXBlcmlvZCI6IDcsCiAgICAieC10dWYtb24tY2ktc2lnbmluZy1wZXJpb2QiOiA0CiAgIH0KICB9LAogICJzcGVjX3ZlcnNpb24iOiAiMS4wIiwKICAidmVyc2lvbiI6IDEwLAogICJ4LXR1Zi1vbi1jaS1leHBpcnktcGVyaW9kIjogMTgyLAogICJ4LXR1Zi1vbi1jaS1zaWduaW5nLXBlcmlvZCI6IDMxCiB9Cn0=",targets:{"trusted_root.json":"ewogICJtZWRpYVR5cGUiOiAiYXBwbGljYXRpb24vdm5kLmRldi5zaWdzdG9yZS50cnVzdGVkcm9vdCtqc29uO3ZlcnNpb249MC4xIiwKICAidGxvZ3MiOiBbCiAgICB7CiAgICAgICJiYXNlVXJsIjogImh0dHBzOi8vcmVrb3Iuc2lnc3RvcmUuZGV2IiwKICAgICAgImhhc2hBbGdvcml0aG0iOiAiU0hBMl8yNTYiLAogICAgICAicHVibGljS2V5IjogewogICAgICAgICJyYXdCeXRlcyI6ICJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUyRzJZKzJ0YWJkVFY1QmNHaUJJeDBhOWZBRndya0JibUxTR3RrczRMM3FYNnlZWTB6dWZCbmhDOFVyL2l5NTVHaFdQLzlBL2JZMkxoQzMwTTkrUll0dz09IiwKICAgICAgICAia2V5RGV0YWlscyI6ICJQS0lYX0VDRFNBX1AyNTZfU0hBXzI1NiIsCiAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgInN0YXJ0IjogIjIwMjEtMDEtMTJUMTE6NTM6MjcuMDAwWiIKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJsb2dJZCI6IHsKICAgICAgICAia2V5SWQiOiAid05JOWF0UUdseitWV2ZPNkxSeWdINFFVZlkvOFc0UkZ3aVQ1aTVXUmdCMD0iCiAgICAgIH0KICAgIH0KICBdLAogICJjZXJ0aWZpY2F0ZUF1dGhvcml0aWVzIjogWwogICAgewogICAgICAic3ViamVjdCI6IHsKICAgICAgICAib3JnYW5pemF0aW9uIjogInNpZ3N0b3JlLmRldiIsCiAgICAgICAgImNvbW1vbk5hbWUiOiAic2lnc3RvcmUiCiAgICAgIH0sCiAgICAgICJ1cmkiOiAiaHR0cHM6Ly9mdWxjaW8uc2lnc3RvcmUuZGV2IiwKICAgICAgImNlcnRDaGFpbiI6IHsKICAgICAgICAiY2VydGlmaWNhdGVzIjogWwogICAgICAgICAgewogICAgICAgICAgICAicmF3Qnl0ZXMiOiAiTUlJQitEQ0NBWDZnQXdJQkFnSVROVmtEWm9DaW9mUERzeTdkZm02Z2VMYnVoekFLQmdncWhrak9QUVFEQXpBcU1SVXdFd1lEVlFRS0V3eHphV2R6ZEc5eVpTNWtaWFl4RVRBUEJnTlZCQU1UQ0hOcFozTjBiM0psTUI0WERUSXhNRE13TnpBek1qQXlPVm9YRFRNeE1ESXlNekF6TWpBeU9Wb3dLakVWTUJNR0ExVUVDaE1NYzJsbmMzUnZjbVV1WkdWMk1SRXdEd1lEVlFRREV3aHphV2R6ZEc5eVpUQjJNQkFHQnlxR1NNNDlBZ0VHQlN1QkJBQWlBMklBQkxTeUE3SWk1aytwTk84WkVXWTB5bGVtV0Rvd09rTmEza0wrR1pFNVo1R1dlaEw5L0E5YlJOQTNSYnJzWjVpMEpjYXN0YVJMN1NwNWZwL2pENWR4cWMvVWRUVm5sdlMxNmFuKzJZZnN3ZS9RdUxvbFJVQ3JjT0UyKzJpQTUrdHpkNk5tTUdRd0RnWURWUjBQQVFIL0JBUURBZ0VHTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFFd0hRWURWUjBPQkJZRUZNakZIUUJCbWlRcE1sRWs2dzJ1U3UxS0J0UHNNQjhHQTFVZEl3UVlNQmFBRk1qRkhRQkJtaVFwTWxFazZ3MnVTdTFLQnRQc01Bb0dDQ3FHU000OUJBTURBMmdBTUdVQ01IOGxpV0pmTXVpNnZYWEJoakRnWTRNd3NsbU4vVEp4VmUvODNXckZvbXdtTmYwNTZ5MVg0OEY5YzRtM2Ezb3pYQUl4QUtqUmF5NS9hai9qc0tLR0lrbVFhdGpJOHV1cEhyLytDeEZ2YUpXbXBZcU5rTERHUlUrOW9yemg1aEkyUnJjdWFRPT0iCiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICAidmFsaWRGb3IiOiB7CiAgICAgICAgInN0YXJ0IjogIjIwMjEtMDMtMDdUMDM6MjA6MjkuMDAwWiIsCiAgICAgICAgImVuZCI6ICIyMDIyLTEyLTMxVDIzOjU5OjU5Ljk5OVoiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJzdWJqZWN0IjogewogICAgICAgICJvcmdhbml6YXRpb24iOiAic2lnc3RvcmUuZGV2IiwKICAgICAgICAiY29tbW9uTmFtZSI6ICJzaWdzdG9yZSIKICAgICAgfSwKICAgICAgInVyaSI6ICJodHRwczovL2Z1bGNpby5zaWdzdG9yZS5kZXYiLAogICAgICAiY2VydENoYWluIjogewogICAgICAgICJjZXJ0aWZpY2F0ZXMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJyYXdCeXRlcyI6ICJNSUlDR2pDQ0FhR2dBd0lCQWdJVUFMblZpVmZuVTBickphc21Sa0hybi9VbmZhUXdDZ1lJS29aSXpqMEVBd013S2pFVk1CTUdBMVVFQ2hNTWMybG5jM1J2Y21VdVpHVjJNUkV3RHdZRFZRUURFd2h6YVdkemRHOXlaVEFlRncweU1qQTBNVE15TURBMk1UVmFGdzB6TVRFd01EVXhNelUyTlRoYU1EY3hGVEFUQmdOVkJBb1RESE5wWjNOMGIzSmxMbVJsZGpFZU1Cd0dBMVVFQXhNVmMybG5jM1J2Y21VdGFXNTBaWEp0WldScFlYUmxNSFl3RUFZSEtvWkl6ajBDQVFZRks0RUVBQ0lEWWdBRThSVlMveXNIK05PdnVEWnlQSVp0aWxnVUY5TmxhcllwQWQ5SFAxdkJCSDFVNUNWNzdMU1M3czBaaUg0bkU3SHY3cHRTNkx2dlIvU1RrNzk4TFZnTXpMbEo0SGVJZkYzdEhTYWV4TGNZcFNBU3Ixa1MwTi9SZ0JKei85aldDaVhubzNzd2VUQU9CZ05WSFE4QkFmOEVCQU1DQVFZd0V3WURWUjBsQkF3d0NnWUlLd1lCQlFVSEF3TXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFkQmdOVkhRNEVGZ1FVMzlQcHoxWWtFWmI1cU5qcEtGV2l4aTRZWkQ4d0h3WURWUjBqQkJnd0ZvQVVXTUFlWDVGRnBXYXBlc3lRb1pNaTBDckZ4Zm93Q2dZSUtvWkl6ajBFQXdNRFp3QXdaQUl3UENzUUs0RFlpWllEUElhRGk1SEZLbmZ4WHg2QVNTVm1FUmZzeW5ZQmlYMlg2U0pSblpVODQvOURaZG5GdnZ4bUFqQk90NlFwQmxjNEovMER4dmtUQ3FwY2x2emlMNkJDQ1BuamRsSUIzUHUzQnhzUG15Z1VZN0lpMnpiZENkbGlpb3c9IgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInJhd0J5dGVzIjogIk1JSUI5ekNDQVh5Z0F3SUJBZ0lVQUxaTkFQRmR4SFB3amVEbG9Ed3lZQ2hBTy80d0NnWUlLb1pJemowRUF3TXdLakVWTUJNR0ExVUVDaE1NYzJsbmMzUnZjbVV1WkdWMk1SRXdEd1lEVlFRREV3aHphV2R6ZEc5eVpUQWVGdzB5TVRFd01EY3hNelUyTlRsYUZ3MHpNVEV3TURVeE16VTJOVGhhTUNveEZUQVRCZ05WQkFvVERITnBaM04wYjNKbExtUmxkakVSTUE4R0ExVUVBeE1JYzJsbmMzUnZjbVV3ZGpBUUJnY3Foa2pPUFFJQkJnVXJnUVFBSWdOaUFBVDdYZUZUNHJiM1BRR3dTNElhanRMazMvT2xucGdhbmdhQmNsWXBzWUJyNWkrNHluQjA3Y2ViM0xQME9JT1pkeGV4WDY5YzVpVnV5SlJRK0h6MDV5aStVRjN1QldBbEhwaVM1c2gwK0gyR0hFN1NYcmsxRUM1bTFUcjE5TDlnZzkyall6QmhNQTRHQTFVZER3RUIvd1FFQXdJQkJqQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRV0JCUll3QjVma1VXbFpxbDZ6SkNoa3lMUUtzWEYrakFmQmdOVkhTTUVHREFXZ0JSWXdCNWZrVVdsWnFsNnpKQ2hreUxRS3NYRitqQUtCZ2dxaGtqT1BRUURBd05wQURCbUFqRUFqMW5IZVhacCsxM05XQk5hK0VEc0RQOEcxV1dnMXRDTVdQL1dIUHFwYVZvMGpoc3dlTkZaZ1NzMGVFN3dZSTRxQWpFQTJXQjlvdDk4c0lrb0YzdlpZZGQzL1Z0V0I1YjlUTk1lYTdJeC9zdEo1VGZjTExlQUJMRTRCTkpPc1E0dm5CSEoiCiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICAidmFsaWRGb3IiOiB7CiAgICAgICAgInN0YXJ0IjogIjIwMjItMDQtMTNUMjA6MDY6MTUuMDAwWiIKICAgICAgfQogICAgfQogIF0sCiAgImN0bG9ncyI6IFsKICAgIHsKICAgICAgImJhc2VVcmwiOiAiaHR0cHM6Ly9jdGZlLnNpZ3N0b3JlLmRldi90ZXN0IiwKICAgICAgImhhc2hBbGdvcml0aG0iOiAiU0hBMl8yNTYiLAogICAgICAicHVibGljS2V5IjogewogICAgICAgICJyYXdCeXRlcyI6ICJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUViZndSK1JKdWRYc2NnUkJScEtYMVhGRHkzUHl1ZER4ei9TZm5SaTFmVDhla3BmQmQyTzF1b3o3anIzWjhuS3p4QTY5RVVRK2VGQ0ZJM3pldWJQV1U3dz09IiwKICAgICAgICAia2V5RGV0YWlscyI6ICJQS0lYX0VDRFNBX1AyNTZfU0hBXzI1NiIsCiAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgInN0YXJ0IjogIjIwMjEtMDMtMTRUMDA6MDA6MDAuMDAwWiIsCiAgICAgICAgICAiZW5kIjogIjIwMjItMTAtMzFUMjM6NTk6NTkuOTk5WiIKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJsb2dJZCI6IHsKICAgICAgICAia2V5SWQiOiAiQ0dDUzhDaFMvMmhGMGRGcko0U2NSV2NZckJZOXd6alNiZWE4SWdZMmIzST0iCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJiYXNlVXJsIjogImh0dHBzOi8vY3RmZS5zaWdzdG9yZS5kZXYvMjAyMiIsCiAgICAgICJoYXNoQWxnb3JpdGhtIjogIlNIQTJfMjU2IiwKICAgICAgInB1YmxpY0tleSI6IHsKICAgICAgICAicmF3Qnl0ZXMiOiAiTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFaVBTbEZpMENtRlRmRWpDVXFGOUh1Q0VjWVhOS0FhWWFsSUptQlo4eXllelBqVHFoeHJLQnBNbmFvY1Z0TEpCSTFlTTN1WG5RelFHQUpkSjRnczlGeXc9PSIsCiAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICJ2YWxpZEZvciI6IHsKICAgICAgICAgICJzdGFydCI6ICIyMDIyLTEwLTIwVDAwOjAwOjAwLjAwMFoiCiAgICAgICAgfQogICAgICB9LAogICAgICAibG9nSWQiOiB7CiAgICAgICAgImtleUlkIjogIjNUMHdhc2JIRVRKakdSNGNtV2MzQXFKS1hyamVQSzMvaDRweWdDOHA3bzQ9IgogICAgICB9CiAgICB9CiAgXSwKICAidGltZXN0YW1wQXV0aG9yaXRpZXMiOiBbCiAgICB7CiAgICAgICJzdWJqZWN0IjogewogICAgICAgICJvcmdhbml6YXRpb24iOiAiR2l0SHViLCBJbmMuIiwKICAgICAgICAiY29tbW9uTmFtZSI6ICJJbnRlcm5hbCBTZXJ2aWNlcyBSb290IgogICAgICB9LAogICAgICAiY2VydENoYWluIjogewogICAgICAgICJjZXJ0aWZpY2F0ZXMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJyYXdCeXRlcyI6ICJNSUlCM0RDQ0FXS2dBd0lCQWdJVWNoa05zSDM2WGEwNGIxTHFJYytxcjlEVmVjTXdDZ1lJS29aSXpqMEVBd013TWpFVk1CTUdBMVVFQ2hNTVIybDBTSFZpTENCSmJtTXVNUmt3RndZRFZRUURFeEJVVTBFZ2FXNTBaWEp0WldScFlYUmxNQjRYRFRJek1EUXhOREF3TURBd01Gb1hEVEkwTURReE16QXdNREF3TUZvd01qRVZNQk1HQTFVRUNoTU1SMmwwU0hWaUxDQkpibU11TVJrd0Z3WURWUVFERXhCVVUwRWdWR2x0WlhOMFlXMXdhVzVuTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFVUQ1Wk5iU3FZTWQ2cjhxcE9PRVg5aWJHblpUOUdzdVhPaHIvZjhVOUZKdWdCR0V4S1lwNDBPVUxTMGVyalpXN3hWOXhWNTJObkpmNU9lRHE0ZTVaS3FOV01GUXdEZ1lEVlIwUEFRSC9CQVFEQWdlQU1CTUdBMVVkSlFRTU1Bb0dDQ3NHQVFVRkJ3TUlNQXdHQTFVZEV3RUIvd1FDTUFBd0h3WURWUjBqQkJnd0ZvQVVhVzFSdWRPZ1Z0MGxlcVkwV0tZYnVQcjQ3d0F3Q2dZSUtvWkl6ajBFQXdNRGFBQXdaUUl3YlVIOUh2RDRlakNaSk9XUW5xQWxrcVVSbGx2dTlNOCtWcUxiaVJLK3pTZlpDWndzaWxqUm44TVFRUlNrWEVFNUFqRUFnK1Z4cXRvamZWZnU4RGh6emhDeDlHS0VUYkpIYjE5aVY3Mm1NS1ViREFGbXpaNmJROGI1NFpiOHRpZHk1YVdlIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInJhd0J5dGVzIjogIk1JSUNFRENDQVpXZ0F3SUJBZ0lVWDhaTzVRWFA3dk40ZE1RNWU5c1UzbnViOE9nd0NnWUlLb1pJemowRUF3TXdPREVWTUJNR0ExVUVDaE1NUjJsMFNIVmlMQ0JKYm1NdU1SOHdIUVlEVlFRREV4WkpiblJsY201aGJDQlRaWEoyYVdObGN5QlNiMjkwTUI0WERUSXpNRFF4TkRBd01EQXdNRm9YRFRJNE1EUXhNakF3TURBd01Gb3dNakVWTUJNR0ExVUVDaE1NUjJsMFNIVmlMQ0JKYm1NdU1Sa3dGd1lEVlFRREV4QlVVMEVnYVc1MFpYSnRaV1JwWVhSbE1IWXdFQVlIS29aSXpqMENBUVlGSzRFRUFDSURZZ0FFdk1MWS9kVFZidklKWUFOQXVzekV3Sm5RRTFsbGZ0eW55TUtJTWhoNDhIbXFiVnI1eWd5YnpzTFJMVktiQldPZFoyMWFlSnorZ1ppeXRaZXRxY3lGOVdsRVI1TkVNZjZKVjdaTm9qUXB4SHE0UkhHb0dTY2VRdi9xdlRpWnhFREtvMll3WkRBT0JnTlZIUThCQWY4RUJBTUNBUVl3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBZEJnTlZIUTRFRmdRVWFXMVJ1ZE9nVnQwbGVxWTBXS1lidVByNDd3QXdId1lEVlIwakJCZ3dGb0FVOU5ZWWxvYm5BRzRjMC9xanh5SC9scS93eitRd0NnWUlLb1pJemowRUF3TURhUUF3WmdJeEFLMUIxODV5Z0NySVlGbElzM0dqc3dqbndTTUc2TFk4d29MVmRha0tEWnhWYThmOGNxTXMxRGhjeEowKzA5dzk1UUl4QU8rdEJ6Wms3dmpVSjlpSmdENFI2WldUeFFXS3FObTc0ak85OW8rbzlzdjRGSS9TWlRaVEZ5TW4wSUpFSGRObXlBPT0iCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAicmF3Qnl0ZXMiOiAiTUlJQjlEQ0NBWHFnQXdJQkFnSVVhL0pBa2RVaks0SlV3c3F0YWlSSkdXaHFMU293Q2dZSUtvWkl6ajBFQXdNd09ERVZNQk1HQTFVRUNoTU1SMmwwU0hWaUxDQkpibU11TVI4d0hRWURWUVFERXhaSmJuUmxjbTVoYkNCVFpYSjJhV05sY3lCU2IyOTBNQjRYRFRJek1EUXhOREF3TURBd01Gb1hEVE16TURReE1UQXdNREF3TUZvd09ERVZNQk1HQTFVRUNoTU1SMmwwU0hWaUxDQkpibU11TVI4d0hRWURWUVFERXhaSmJuUmxjbTVoYkNCVFpYSjJhV05sY3lCU2IyOTBNSFl3RUFZSEtvWkl6ajBDQVFZRks0RUVBQ0lEWWdBRWY5akZBWHh6NGt4NjhBSFJNT2tGQmhmbERjTVR2emFYejR4L0ZDY1hqSi8xcUVLb24vcVBJR25hVVJza0R0eU5iTkRPcGVKVERERnF0NDhpTVBybnpweDZJWndxZW1mVUpONHhCRVpmemErcFl0L2l5b2QrOXRacjIwUlJXU3YvbzBVd1F6QU9CZ05WSFE4QkFmOEVCQU1DQVFZd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFqQWRCZ05WSFE0RUZnUVU5TllZbG9ibkFHNGMwL3FqeHlIL2xxL3d6K1F3Q2dZSUtvWkl6ajBFQXdNRGFBQXdaUUl4QUxaTFo4QmdSWHpLeExNTU45VklsTytlNGhyQm5OQmdGN3R6N0hucm93djJOZXRaRXJJQUNLRnltQmx2V0R2dE1BSXdaTytraTZzc1ExYnNabzk4TzhtRUFmMk5aN2lpQ2dERFUwVndqZWNvNnp5ZWgwekJUczkvN2dWNkFITlE1M3hEIgogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfSwKICAgICAgInZhbGlkRm9yIjogewogICAgICAgICJzdGFydCI6ICIyMDIzLTA0LTE0VDAwOjAwOjAwLjAwMFoiCiAgICAgIH0KICAgIH0KICBdCn0K","registry.npmjs.org%2Fkeys.json":"ewogICAgImtleXMiOiBbCiAgICAgICAgewogICAgICAgICAgICAia2V5SWQiOiAiU0hBMjU2OmpsM2J3c3d1ODBQampva0NnaDBvMnc1YzJVNExoUUFFNTdnajljejFrekEiLAogICAgICAgICAgICAia2V5VXNhZ2UiOiAibnBtOnNpZ25hdHVyZXMiLAogICAgICAgICAgICAicHVibGljS2V5IjogewogICAgICAgICAgICAgICAgInJhd0J5dGVzIjogIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRTFPbGIzek1BRkZ4WEtIaUlrUU81Y0ozWWhsNWk2VVBwK0lodXRlQkpidUhjQTVVb2dLbzBFV3RsV3dXNktTYUtvVE5FWUw3SmxDUWlWbmtoQmt0VWdnPT0iLAogICAgICAgICAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgICAgICAgICAgICJzdGFydCI6ICIxOTk5LTAxLTAxVDAwOjAwOjAwLjAwMFoiLAogICAgICAgICAgICAgICAgICAgICJlbmQiOiAiMjAyNS0wMS0yOVQwMDowMDowMC4wMDBaIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJrZXlJZCI6ICJTSEEyNTY6amwzYndzd3U4MFBqam9rQ2doMG8ydzVjMlU0TGhRQUU1N2dqOWN6MWt6QSIsCiAgICAgICAgICAgICJrZXlVc2FnZSI6ICJucG06YXR0ZXN0YXRpb25zIiwKICAgICAgICAgICAgInB1YmxpY0tleSI6IHsKICAgICAgICAgICAgICAgICJyYXdCeXRlcyI6ICJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUxT2xiM3pNQUZGeFhLSGlJa1FPNWNKM1lobDVpNlVQcCtJaHV0ZUJKYnVIY0E1VW9nS28wRVd0bFd3VzZLU2FLb1RORVlMN0psQ1FpVm5raEJrdFVnZz09IiwKICAgICAgICAgICAgICAgICJrZXlEZXRhaWxzIjogIlBLSVhfRUNEU0FfUDI1Nl9TSEFfMjU2IiwKICAgICAgICAgICAgICAgICJ2YWxpZEZvciI6IHsKICAgICAgICAgICAgICAgICAgICAic3RhcnQiOiAiMjAyMi0xMi0wMVQwMDowMDowMC4wMDBaIiwKICAgICAgICAgICAgICAgICAgICAiZW5kIjogIjIwMjUtMDEtMjlUMDA6MDA6MDAuMDAwWiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAia2V5SWQiOiAiU0hBMjU2OkRoUTh3UjVBUEJ2RkhMRi8rVGMrQVl2UE9kVHBjSURxT2h4c0JIUndDN1UiLAogICAgICAgICAgICAia2V5VXNhZ2UiOiAibnBtOnNpZ25hdHVyZXMiLAogICAgICAgICAgICAicHVibGljS2V5IjogewogICAgICAgICAgICAgICAgInJhd0J5dGVzIjogIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVk2WWE3VysrN2FVUHp2TVRyZXpINlljeDNjK0hPS1lDY05HeWJKWlNDSnEvZmQ3UWE4dXVBS3RkSWtVUXRRaUVLRVJoQW1FNWxNTUpoUDhPa0RPYTJnPT0iLAogICAgICAgICAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgICAgICAgICAgICJzdGFydCI6ICIyMDI1LTAxLTEzVDAwOjAwOjAwLjAwMFoiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgImtleUlkIjogIlNIQTI1NjpEaFE4d1I1QVBCdkZITEYvK1RjK0FZdlBPZFRwY0lEcU9oeHNCSFJ3QzdVIiwKICAgICAgICAgICAgImtleVVzYWdlIjogIm5wbTphdHRlc3RhdGlvbnMiLAogICAgICAgICAgICAicHVibGljS2V5IjogewogICAgICAgICAgICAgICAgInJhd0J5dGVzIjogIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVk2WWE3VysrN2FVUHp2TVRyZXpINlljeDNjK0hPS1lDY05HeWJKWlNDSnEvZmQ3UWE4dXVBS3RkSWtVUXRRaUVLRVJoQW1FNWxNTUpoUDhPa0RPYTJnPT0iLAogICAgICAgICAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgICAgICAgICAgICJzdGFydCI6ICIyMDI1LTAxLTEzVDAwOjAwOjAwLjAwMFoiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICBdCn0K"}}}});var GDe=G(u1=>{"use strict";var jDe=u1&&u1.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(u1,"__esModule",{value:!0});u1.TUFClient=void 0;var kg=jDe(Ie("fs")),qb=jDe(Ie("path")),ABt=UDe(),pBt=XO(),hBt=_De(),dK="targets",gK=class{constructor(t){let r=new URL(t.mirrorURL),s=encodeURIComponent(r.host+r.pathname.replace(/\/$/,"")),a=qb.default.join(t.cachePath,s);gBt(a),dBt({cachePath:a,mirrorURL:t.mirrorURL,tufRootPath:t.rootPath,forceInit:t.forceInit}),this.updater=mBt({mirrorURL:t.mirrorURL,cachePath:a,forceCache:t.forceCache,retry:t.retry,timeout:t.timeout})}async refresh(){return this.updater.refresh()}getTarget(t){return(0,hBt.readTarget)(this.updater,t)}};u1.TUFClient=gK;function gBt(e){let t=qb.default.join(e,dK);kg.default.existsSync(e)||kg.default.mkdirSync(e,{recursive:!0}),kg.default.existsSync(t)||kg.default.mkdirSync(t)}function dBt({cachePath:e,mirrorURL:t,tufRootPath:r,forceInit:s}){let a=qb.default.join(e,"root.json");if(!kg.default.existsSync(a)||s)if(r)kg.default.copyFileSync(r,a);else{let c=HDe()[t];if(!c)throw new pBt.TUFError({code:"TUF_INIT_CACHE_ERROR",message:`No root.json found for mirror: ${t}`});kg.default.writeFileSync(a,Buffer.from(c["root.json"],"base64")),Object.entries(c.targets).forEach(([f,p])=>{kg.default.writeFileSync(qb.default.join(e,dK,f),Buffer.from(p,"base64"))})}}function mBt(e){let t={fetchTimeout:e.timeout,fetchRetry:e.retry};return new ABt.Updater({metadataBaseUrl:e.mirrorURL,targetBaseUrl:`${e.mirrorURL}/targets`,metadataDir:e.cachePath,targetDir:qb.default.join(e.cachePath,dK),forceCache:e.forceCache,config:t})}});var XO=G(ph=>{"use strict";Object.defineProperty(ph,"__esModule",{value:!0});ph.TUFError=ph.DEFAULT_MIRROR_URL=void 0;ph.getTrustedRoot=SBt;ph.initTUF=DBt;var yBt=yb(),EBt=wSe(),IBt=GDe();ph.DEFAULT_MIRROR_URL="https://tuf-repo-cdn.sigstore.dev";var CBt="sigstore-js",wBt={retries:2},BBt=5e3,vBt="trusted_root.json";async function SBt(e={}){let r=await qDe(e).getTarget(vBt);return yBt.TrustedRoot.fromJSON(JSON.parse(r))}async function DBt(e={}){let t=qDe(e);return t.refresh().then(()=>t)}function qDe(e){return new IBt.TUFClient({cachePath:e.cachePath||(0,EBt.appDataPath)(CBt),rootPath:e.rootPath,mirrorURL:e.mirrorURL||ph.DEFAULT_MIRROR_URL,retry:e.retry??wBt,timeout:e.timeout??BBt,forceCache:e.forceCache??!1,forceInit:e.forceInit??e.force??!1})}var bBt=hK();Object.defineProperty(ph,"TUFError",{enumerable:!0,get:function(){return bBt.TUFError}})});var WDe=G($O=>{"use strict";Object.defineProperty($O,"__esModule",{value:!0});$O.DSSESignatureContent=void 0;var Wb=bl(),mK=class{constructor(t){this.env=t}compareDigest(t){return Wb.crypto.bufferEqual(t,Wb.crypto.digest("sha256",this.env.payload))}compareSignature(t){return Wb.crypto.bufferEqual(t,this.signature)}verifySignature(t){return Wb.crypto.verify(this.preAuthEncoding,t,this.signature)}get signature(){return this.env.signatures.length>0?this.env.signatures[0].sig:Buffer.from("")}get preAuthEncoding(){return Wb.dsse.preAuthEncoding(this.env.payloadType,this.env.payload)}};$O.DSSESignatureContent=mK});var VDe=G(eL=>{"use strict";Object.defineProperty(eL,"__esModule",{value:!0});eL.MessageSignatureContent=void 0;var yK=bl(),EK=class{constructor(t,r){this.signature=t.signature,this.messageDigest=t.messageDigest.digest,this.artifact=r}compareSignature(t){return yK.crypto.bufferEqual(t,this.signature)}compareDigest(t){return yK.crypto.bufferEqual(t,this.messageDigest)}verifySignature(t){return yK.crypto.verify(this.artifact,t,this.signature)}};eL.MessageSignatureContent=EK});var KDe=G(tL=>{"use strict";Object.defineProperty(tL,"__esModule",{value:!0});tL.toSignedEntity=kBt;tL.signatureContent=YDe;var IK=bl(),PBt=WDe(),xBt=VDe();function kBt(e,t){let{tlogEntries:r,timestampVerificationData:s}=e.verificationMaterial,a=[];for(let n of r)a.push({$case:"transparency-log",tlogEntry:n});for(let n of s?.rfc3161Timestamps??[])a.push({$case:"timestamp-authority",timestamp:IK.RFC3161Timestamp.parse(n.signedTimestamp)});return{signature:YDe(e,t),key:QBt(e),tlogEntries:r,timestamps:a}}function YDe(e,t){switch(e.content.$case){case"dsseEnvelope":return new PBt.DSSESignatureContent(e.content.dsseEnvelope);case"messageSignature":return new xBt.MessageSignatureContent(e.content.messageSignature,t)}}function QBt(e){switch(e.verificationMaterial.content.$case){case"publicKey":return{$case:"public-key",hint:e.verificationMaterial.content.publicKey.hint};case"x509CertificateChain":return{$case:"certificate",certificate:IK.X509Certificate.parse(e.verificationMaterial.content.x509CertificateChain.certificates[0].rawBytes)};case"certificate":return{$case:"certificate",certificate:IK.X509Certificate.parse(e.verificationMaterial.content.certificate.rawBytes)}}}});var vo=G(f1=>{"use strict";Object.defineProperty(f1,"__esModule",{value:!0});f1.PolicyError=f1.VerificationError=void 0;var rL=class extends Error{constructor({code:t,message:r,cause:s}){super(r),this.code=t,this.cause=s,this.name=this.constructor.name}},CK=class extends rL{};f1.VerificationError=CK;var wK=class extends rL{};f1.PolicyError=wK});var JDe=G(nL=>{"use strict";Object.defineProperty(nL,"__esModule",{value:!0});nL.filterCertAuthorities=RBt;nL.filterTLogAuthorities=TBt;function RBt(e,t){return e.filter(r=>r.validFor.start<=t.start&&r.validFor.end>=t.end)}function TBt(e,t){return e.filter(r=>t.logID&&!r.logID.equals(t.logID)?!1:r.validFor.start<=t.targetDate&&t.targetDate<=r.validFor.end)}});var dy=G(gy=>{"use strict";Object.defineProperty(gy,"__esModule",{value:!0});gy.filterTLogAuthorities=gy.filterCertAuthorities=void 0;gy.toTrustMaterial=NBt;var BK=bl(),Vb=yb(),FBt=vo(),vK=new Date(0),SK=new Date(864e13),XDe=JDe();Object.defineProperty(gy,"filterCertAuthorities",{enumerable:!0,get:function(){return XDe.filterCertAuthorities}});Object.defineProperty(gy,"filterTLogAuthorities",{enumerable:!0,get:function(){return XDe.filterTLogAuthorities}});function NBt(e,t){let r=typeof t=="function"?t:OBt(t);return{certificateAuthorities:e.certificateAuthorities.map(ZDe),timestampAuthorities:e.timestampAuthorities.map(ZDe),tlogs:e.tlogs.map(zDe),ctlogs:e.ctlogs.map(zDe),publicKey:r}}function zDe(e){let t=e.publicKey.keyDetails,r=t===Vb.PublicKeyDetails.PKCS1_RSA_PKCS1V5||t===Vb.PublicKeyDetails.PKIX_RSA_PKCS1V5||t===Vb.PublicKeyDetails.PKIX_RSA_PKCS1V15_2048_SHA256||t===Vb.PublicKeyDetails.PKIX_RSA_PKCS1V15_3072_SHA256||t===Vb.PublicKeyDetails.PKIX_RSA_PKCS1V15_4096_SHA256?"pkcs1":"spki";return{logID:e.logId.keyId,publicKey:BK.crypto.createPublicKey(e.publicKey.rawBytes,r),validFor:{start:e.publicKey.validFor?.start||vK,end:e.publicKey.validFor?.end||SK}}}function ZDe(e){return{certChain:e.certChain.certificates.map(t=>BK.X509Certificate.parse(t.rawBytes)),validFor:{start:e.validFor?.start||vK,end:e.validFor?.end||SK}}}function OBt(e){return t=>{let r=(e||{})[t];if(!r)throw new FBt.VerificationError({code:"PUBLIC_KEY_ERROR",message:`key not found: ${t}`});return{publicKey:BK.crypto.createPublicKey(r.rawBytes),validFor:s=>(r.validFor?.start||vK)<=s&&(r.validFor?.end||SK)>=s}}}});var DK=G(Yb=>{"use strict";Object.defineProperty(Yb,"__esModule",{value:!0});Yb.CertificateChainVerifier=void 0;Yb.verifyCertificateChain=MBt;var my=vo(),LBt=dy();function MBt(e,t){let r=(0,LBt.filterCertAuthorities)(t,{start:e.notBefore,end:e.notAfter}),s;for(let a of r)try{return new iL({trustedCerts:a.certChain,untrustedCert:e}).verify()}catch(n){s=n}throw new my.VerificationError({code:"CERTIFICATE_ERROR",message:"Failed to verify certificate chain",cause:s})}var iL=class{constructor(t){this.untrustedCert=t.untrustedCert,this.trustedCerts=t.trustedCerts,this.localCerts=UBt([...t.trustedCerts,t.untrustedCert])}verify(){let t=this.sort();return this.checkPath(t),t}sort(){let t=this.untrustedCert,r=this.buildPaths(t);if(r=r.filter(a=>a.some(n=>this.trustedCerts.includes(n))),r.length===0)throw new my.VerificationError({code:"CERTIFICATE_ERROR",message:"no trusted certificate path found"});let s=r.reduce((a,n)=>a.length{if(s&&a.extSubjectKeyID){a.extSubjectKeyID.keyIdentifier.equals(s)&&r.push(a);return}a.subject.equals(t.issuer)&&r.push(a)}),r=r.filter(a=>{try{return t.verify(a)}catch{return!1}}),r)}checkPath(t){if(t.length<1)throw new my.VerificationError({code:"CERTIFICATE_ERROR",message:"certificate chain must contain at least one certificate"});if(!t.slice(1).every(s=>s.isCA))throw new my.VerificationError({code:"CERTIFICATE_ERROR",message:"intermediate certificate is not a CA"});for(let s=t.length-2;s>=0;s--)if(!t[s].issuer.equals(t[s+1].subject))throw new my.VerificationError({code:"CERTIFICATE_ERROR",message:"incorrect certificate name chaining"});for(let s=0;s{"use strict";Object.defineProperty(bK,"__esModule",{value:!0});bK.verifySCTs=jBt;var sL=bl(),_Bt=vo(),HBt=dy();function jBt(e,t,r){let s,a=e.clone();for(let p=0;p{if(!(0,HBt.filterTLogAuthorities)(r,{logID:p.logID,targetDate:p.datetime}).some(C=>p.verify(n.buffer,C.publicKey)))throw new _Bt.VerificationError({code:"CERTIFICATE_ERROR",message:"SCT verification failed"});return p.logID})}});var tbe=G(oL=>{"use strict";Object.defineProperty(oL,"__esModule",{value:!0});oL.verifyPublicKey=KBt;oL.verifyCertificate=JBt;var GBt=bl(),ebe=vo(),qBt=DK(),WBt=$De(),VBt="1.3.6.1.4.1.57264.1.1",YBt="1.3.6.1.4.1.57264.1.8";function KBt(e,t,r){let s=r.publicKey(e);return t.forEach(a=>{if(!s.validFor(a))throw new ebe.VerificationError({code:"PUBLIC_KEY_ERROR",message:`Public key is not valid for timestamp: ${a.toISOString()}`})}),{key:s.publicKey}}function JBt(e,t,r){let s=(0,qBt.verifyCertificateChain)(e,r.certificateAuthorities);if(!t.every(n=>s.every(c=>c.validForDate(n))))throw new ebe.VerificationError({code:"CERTIFICATE_ERROR",message:"certificate is not valid or expired at the specified date"});return{scts:(0,WBt.verifySCTs)(s[0],s[1],r.ctlogs),signer:zBt(s[0])}}function zBt(e){let t,r=e.extension(YBt);r?t=r.valueObj.subs?.[0]?.value.toString("ascii"):t=e.extension(VBt)?.value.toString("ascii");let s={extensions:{issuer:t},subjectAlternativeName:e.subjectAltName};return{key:GBt.crypto.createPublicKey(e.publicKey),identity:s}}});var nbe=G(aL=>{"use strict";Object.defineProperty(aL,"__esModule",{value:!0});aL.verifySubjectAlternativeName=ZBt;aL.verifyExtensions=XBt;var rbe=vo();function ZBt(e,t){if(t===void 0||!t.match(e))throw new rbe.PolicyError({code:"UNTRUSTED_SIGNER_ERROR",message:`certificate identity error - expected ${e}, got ${t}`})}function XBt(e,t={}){let r;for(r in e)if(t[r]!==e[r])throw new rbe.PolicyError({code:"UNTRUSTED_SIGNER_ERROR",message:`invalid certificate extension - expected ${r}=${e[r]}, got ${r}=${t[r]}`})}});var ibe=G(RK=>{"use strict";Object.defineProperty(RK,"__esModule",{value:!0});RK.verifyCheckpoint=t2t;var xK=bl(),A1=vo(),$Bt=dy(),PK=` - -`,e2t=/\u2014 (\S+) (\S+)\n/g;function t2t(e,t){let r=(0,$Bt.filterTLogAuthorities)(t,{targetDate:new Date(Number(e.integratedTime)*1e3)}),s=e.inclusionProof,a=kK.fromString(s.checkpoint.envelope),n=QK.fromString(a.note);if(!r2t(a,r))throw new A1.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"invalid checkpoint signature"});if(!xK.crypto.bufferEqual(n.logHash,s.rootHash))throw new A1.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"root hash mismatch"})}function r2t(e,t){let r=Buffer.from(e.note,"utf-8");return e.signatures.every(s=>{let a=t.find(n=>xK.crypto.bufferEqual(n.logID.subarray(0,4),s.keyHint));return a?xK.crypto.verify(r,a.publicKey,s.signature):!1})}var kK=class e{constructor(t,r){this.note=t,this.signatures=r}static fromString(t){if(!t.includes(PK))throw new A1.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"missing checkpoint separator"});let r=t.indexOf(PK),s=t.slice(0,r+1),n=t.slice(r+PK.length).matchAll(e2t),c=Array.from(n,f=>{let[,p,h]=f,E=Buffer.from(h,"base64");if(E.length<5)throw new A1.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"malformed checkpoint signature"});return{name:p,keyHint:E.subarray(0,4),signature:E.subarray(4)}});if(c.length===0)throw new A1.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"no signatures found in checkpoint"});return new e(s,c)}},QK=class e{constructor(t,r,s,a){this.origin=t,this.logSize=r,this.logHash=s,this.rest=a}static fromString(t){let r=t.trimEnd().split(` -`);if(r.length<3)throw new A1.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"too few lines in checkpoint header"});let s=r[0],a=BigInt(r[1]),n=Buffer.from(r[2],"base64"),c=r.slice(3);return new e(s,a,n,c)}}});var sbe=G(OK=>{"use strict";Object.defineProperty(OK,"__esModule",{value:!0});OK.verifyMerkleInclusion=s2t;var NK=bl(),TK=vo(),n2t=Buffer.from([0]),i2t=Buffer.from([1]);function s2t(e){let t=e.inclusionProof,r=BigInt(t.logIndex),s=BigInt(t.treeSize);if(r<0n||r>=s)throw new TK.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:`invalid index: ${r}`});let{inner:a,border:n}=o2t(r,s);if(t.hashes.length!==a+n)throw new TK.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"invalid hash count"});let c=t.hashes.slice(0,a),f=t.hashes.slice(a),p=A2t(e.canonicalizedBody),h=l2t(a2t(p,c,r),f);if(!NK.crypto.bufferEqual(h,t.rootHash))throw new TK.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"calculated root hash does not match inclusion proof"})}function o2t(e,t){let r=c2t(e,t),s=u2t(e>>BigInt(r));return{inner:r,border:s}}function a2t(e,t,r){return t.reduce((s,a,n)=>r>>BigInt(n)&BigInt(1)?FK(a,s):FK(s,a),e)}function l2t(e,t){return t.reduce((r,s)=>FK(s,r),e)}function c2t(e,t){return f2t(e^t-BigInt(1))}function u2t(e){return e.toString(2).split("1").length-1}function f2t(e){return e===0n?0:e.toString(2).length}function FK(e,t){return NK.crypto.digest("sha256",i2t,e,t)}function A2t(e){return NK.crypto.digest("sha256",n2t,e)}});var abe=G(LK=>{"use strict";Object.defineProperty(LK,"__esModule",{value:!0});LK.verifyTLogSET=g2t;var obe=bl(),p2t=vo(),h2t=dy();function g2t(e,t){if(!(0,h2t.filterTLogAuthorities)(t,{logID:e.logId.keyId,targetDate:new Date(Number(e.integratedTime)*1e3)}).some(a=>{let n=d2t(e),c=Buffer.from(obe.json.canonicalize(n),"utf8"),f=e.inclusionPromise.signedEntryTimestamp;return obe.crypto.verify(c,a.publicKey,f)}))throw new p2t.VerificationError({code:"TLOG_INCLUSION_PROMISE_ERROR",message:"inclusion promise could not be verified"})}function d2t(e){let{integratedTime:t,logIndex:r,logId:s,canonicalizedBody:a}=e;return{body:a.toString("base64"),integratedTime:Number(t),logIndex:Number(r),logID:s.keyId.toString("hex")}}});var lbe=G(_K=>{"use strict";Object.defineProperty(_K,"__esModule",{value:!0});_K.verifyRFC3161Timestamp=E2t;var MK=bl(),UK=vo(),m2t=DK(),y2t=dy();function E2t(e,t,r){let s=e.signingTime;if(r=(0,y2t.filterCertAuthorities)(r,{start:s,end:s}),r=C2t(r,{serialNumber:e.signerSerialNumber,issuer:e.signerIssuer}),!r.some(n=>{try{return I2t(e,t,n),!0}catch{return!1}}))throw new UK.VerificationError({code:"TIMESTAMP_ERROR",message:"timestamp could not be verified"})}function I2t(e,t,r){let[s,...a]=r.certChain,n=MK.crypto.createPublicKey(s.publicKey),c=e.signingTime;try{new m2t.CertificateChainVerifier({untrustedCert:s,trustedCerts:a}).verify()}catch{throw new UK.VerificationError({code:"TIMESTAMP_ERROR",message:"invalid certificate chain"})}if(!r.certChain.every(p=>p.validForDate(c)))throw new UK.VerificationError({code:"TIMESTAMP_ERROR",message:"timestamp was signed with an expired certificate"});e.verify(t,n)}function C2t(e,t){return e.filter(r=>r.certChain.length>0&&MK.crypto.bufferEqual(r.certChain[0].serialNumber,t.serialNumber)&&MK.crypto.bufferEqual(r.certChain[0].issuer,t.issuer))}});var cbe=G(lL=>{"use strict";Object.defineProperty(lL,"__esModule",{value:!0});lL.verifyTSATimestamp=b2t;lL.verifyTLogTimestamp=P2t;var w2t=vo(),B2t=ibe(),v2t=sbe(),S2t=abe(),D2t=lbe();function b2t(e,t,r){return(0,D2t.verifyRFC3161Timestamp)(e,t,r),{type:"timestamp-authority",logID:e.signerSerialNumber,timestamp:e.signingTime}}function P2t(e,t){let r=!1;if(x2t(e)&&((0,S2t.verifyTLogSET)(e,t),r=!0),k2t(e)&&((0,v2t.verifyMerkleInclusion)(e),(0,B2t.verifyCheckpoint)(e,t),r=!0),!r)throw new w2t.VerificationError({code:"TLOG_MISSING_INCLUSION_ERROR",message:"inclusion could not be verified"});return{type:"transparency-log",logID:e.logId.keyId,timestamp:new Date(Number(e.integratedTime)*1e3)}}function x2t(e){return e.inclusionPromise!==void 0}function k2t(e){return e.inclusionProof!==void 0}});var ube=G(HK=>{"use strict";Object.defineProperty(HK,"__esModule",{value:!0});HK.verifyDSSETLogBody=Q2t;var cL=vo();function Q2t(e,t){switch(e.apiVersion){case"0.0.1":return R2t(e,t);default:throw new cL.VerificationError({code:"TLOG_BODY_ERROR",message:`unsupported dsse version: ${e.apiVersion}`})}}function R2t(e,t){if(e.spec.signatures?.length!==1)throw new cL.VerificationError({code:"TLOG_BODY_ERROR",message:"signature count mismatch"});let r=e.spec.signatures[0].signature;if(!t.compareSignature(Buffer.from(r,"base64")))throw new cL.VerificationError({code:"TLOG_BODY_ERROR",message:"tlog entry signature mismatch"});let s=e.spec.payloadHash?.value||"";if(!t.compareDigest(Buffer.from(s,"hex")))throw new cL.VerificationError({code:"TLOG_BODY_ERROR",message:"DSSE payload hash mismatch"})}});var fbe=G(GK=>{"use strict";Object.defineProperty(GK,"__esModule",{value:!0});GK.verifyHashedRekordTLogBody=T2t;var jK=vo();function T2t(e,t){switch(e.apiVersion){case"0.0.1":return F2t(e,t);default:throw new jK.VerificationError({code:"TLOG_BODY_ERROR",message:`unsupported hashedrekord version: ${e.apiVersion}`})}}function F2t(e,t){let r=e.spec.signature.content||"";if(!t.compareSignature(Buffer.from(r,"base64")))throw new jK.VerificationError({code:"TLOG_BODY_ERROR",message:"signature mismatch"});let s=e.spec.data.hash?.value||"";if(!t.compareDigest(Buffer.from(s,"hex")))throw new jK.VerificationError({code:"TLOG_BODY_ERROR",message:"digest mismatch"})}});var Abe=G(qK=>{"use strict";Object.defineProperty(qK,"__esModule",{value:!0});qK.verifyIntotoTLogBody=N2t;var uL=vo();function N2t(e,t){switch(e.apiVersion){case"0.0.2":return O2t(e,t);default:throw new uL.VerificationError({code:"TLOG_BODY_ERROR",message:`unsupported intoto version: ${e.apiVersion}`})}}function O2t(e,t){if(e.spec.content.envelope.signatures?.length!==1)throw new uL.VerificationError({code:"TLOG_BODY_ERROR",message:"signature count mismatch"});let r=L2t(e.spec.content.envelope.signatures[0].sig);if(!t.compareSignature(Buffer.from(r,"base64")))throw new uL.VerificationError({code:"TLOG_BODY_ERROR",message:"tlog entry signature mismatch"});let s=e.spec.content.payloadHash?.value||"";if(!t.compareDigest(Buffer.from(s,"hex")))throw new uL.VerificationError({code:"TLOG_BODY_ERROR",message:"DSSE payload hash mismatch"})}function L2t(e){return Buffer.from(e,"base64").toString("utf-8")}});var hbe=G(WK=>{"use strict";Object.defineProperty(WK,"__esModule",{value:!0});WK.verifyTLogBody=H2t;var pbe=vo(),M2t=ube(),U2t=fbe(),_2t=Abe();function H2t(e,t){let{kind:r,version:s}=e.kindVersion,a=JSON.parse(e.canonicalizedBody.toString("utf8"));if(r!==a.kind||s!==a.apiVersion)throw new pbe.VerificationError({code:"TLOG_BODY_ERROR",message:`kind/version mismatch - expected: ${r}/${s}, received: ${a.kind}/${a.apiVersion}`});switch(a.kind){case"dsse":return(0,M2t.verifyDSSETLogBody)(a,t);case"intoto":return(0,_2t.verifyIntotoTLogBody)(a,t);case"hashedrekord":return(0,U2t.verifyHashedRekordTLogBody)(a,t);default:throw new pbe.VerificationError({code:"TLOG_BODY_ERROR",message:`unsupported kind: ${r}`})}}});var Ebe=G(fL=>{"use strict";Object.defineProperty(fL,"__esModule",{value:!0});fL.Verifier=void 0;var j2t=Ie("util"),p1=vo(),gbe=tbe(),dbe=nbe(),mbe=cbe(),G2t=hbe(),VK=class{constructor(t,r={}){this.trustMaterial=t,this.options={ctlogThreshold:r.ctlogThreshold??1,tlogThreshold:r.tlogThreshold??1,tsaThreshold:r.tsaThreshold??0}}verify(t,r){let s=this.verifyTimestamps(t),a=this.verifySigningKey(t,s);return this.verifyTLogs(t),this.verifySignature(t,a),r&&this.verifyPolicy(r,a.identity||{}),a}verifyTimestamps(t){let r=0,s=0,a=t.timestamps.map(n=>{switch(n.$case){case"timestamp-authority":return s++,(0,mbe.verifyTSATimestamp)(n.timestamp,t.signature.signature,this.trustMaterial.timestampAuthorities);case"transparency-log":return r++,(0,mbe.verifyTLogTimestamp)(n.tlogEntry,this.trustMaterial.tlogs)}});if(ybe(a))throw new p1.VerificationError({code:"TIMESTAMP_ERROR",message:"duplicate timestamp"});if(rn.timestamp)}verifySigningKey({key:t},r){switch(t.$case){case"public-key":return(0,gbe.verifyPublicKey)(t.hint,r,this.trustMaterial);case"certificate":{let s=(0,gbe.verifyCertificate)(t.certificate,r,this.trustMaterial);if(ybe(s.scts))throw new p1.VerificationError({code:"CERTIFICATE_ERROR",message:"duplicate SCT"});if(s.scts.length(0,G2t.verifyTLogBody)(s,t))}verifySignature(t,r){if(!t.signature.verifySignature(r.key))throw new p1.VerificationError({code:"SIGNATURE_ERROR",message:"signature verification failed"})}verifyPolicy(t,r){t.subjectAlternativeName&&(0,dbe.verifySubjectAlternativeName)(t.subjectAlternativeName,r.subjectAlternativeName),t.extensions&&(0,dbe.verifyExtensions)(t.extensions,r.extensions)}};fL.Verifier=VK;function ybe(e){for(let t=0;t{"use strict";Object.defineProperty(ru,"__esModule",{value:!0});ru.Verifier=ru.toTrustMaterial=ru.VerificationError=ru.PolicyError=ru.toSignedEntity=void 0;var q2t=KDe();Object.defineProperty(ru,"toSignedEntity",{enumerable:!0,get:function(){return q2t.toSignedEntity}});var Ibe=vo();Object.defineProperty(ru,"PolicyError",{enumerable:!0,get:function(){return Ibe.PolicyError}});Object.defineProperty(ru,"VerificationError",{enumerable:!0,get:function(){return Ibe.VerificationError}});var W2t=dy();Object.defineProperty(ru,"toTrustMaterial",{enumerable:!0,get:function(){return W2t.toTrustMaterial}});var V2t=Ebe();Object.defineProperty(ru,"Verifier",{enumerable:!0,get:function(){return V2t.Verifier}})});var Cbe=G(Ha=>{"use strict";Object.defineProperty(Ha,"__esModule",{value:!0});Ha.DEFAULT_TIMEOUT=Ha.DEFAULT_RETRY=void 0;Ha.createBundleBuilder=J2t;Ha.createKeyFinder=z2t;Ha.createVerificationPolicy=Z2t;var Y2t=bl(),h1=i7(),K2t=AL();Ha.DEFAULT_RETRY={retries:2};Ha.DEFAULT_TIMEOUT=5e3;function J2t(e,t){let r={signer:X2t(t),witnesses:evt(t)};switch(e){case"messageSignature":return new h1.MessageSignatureBundleBuilder(r);case"dsseEnvelope":return new h1.DSSEBundleBuilder({...r,certificateChain:t.legacyCompatibility})}}function z2t(e){return t=>{let r=e(t);if(!r)throw new K2t.VerificationError({code:"PUBLIC_KEY_ERROR",message:`key not found: ${t}`});return{publicKey:Y2t.crypto.createPublicKey(r),validFor:()=>!0}}}function Z2t(e){let t={},r=e.certificateIdentityEmail||e.certificateIdentityURI;return r&&(t.subjectAlternativeName=r),e.certificateIssuer&&(t.extensions={issuer:e.certificateIssuer}),t}function X2t(e){return new h1.FulcioSigner({fulcioBaseURL:e.fulcioURL,identityProvider:e.identityProvider||$2t(e),retry:e.retry??Ha.DEFAULT_RETRY,timeout:e.timeout??Ha.DEFAULT_TIMEOUT})}function $2t(e){let t=e.identityToken;return t?{getToken:()=>Promise.resolve(t)}:new h1.CIContextProvider("sigstore")}function evt(e){let t=[];return tvt(e)&&t.push(new h1.RekorWitness({rekorBaseURL:e.rekorURL,entryType:e.legacyCompatibility?"intoto":"dsse",fetchOnConflict:!1,retry:e.retry??Ha.DEFAULT_RETRY,timeout:e.timeout??Ha.DEFAULT_TIMEOUT})),rvt(e)&&t.push(new h1.TSAWitness({tsaBaseURL:e.tsaServerURL,retry:e.retry??Ha.DEFAULT_RETRY,timeout:e.timeout??Ha.DEFAULT_TIMEOUT})),t}function tvt(e){return e.tlogUpload!==!1}function rvt(e){return e.tsaServerURL!==void 0}});var vbe=G(nu=>{"use strict";var nvt=nu&&nu.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||("get"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),ivt=nu&&nu.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),wbe=nu&&nu.__importStar||function(){var e=function(t){return e=Object.getOwnPropertyNames||function(r){var s=[];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(s[s.length]=a);return s},e(t)};return function(t){if(t&&t.__esModule)return t;var r={};if(t!=null)for(var s=e(t),a=0;aa.verify(e,s))}async function Bbe(e={}){let t=await svt.getTrustedRoot({mirrorURL:e.tufMirrorURL,rootPath:e.tufRootPath,cachePath:e.tufCachePath,forceCache:e.tufForceCache,retry:e.retry??g1.DEFAULT_RETRY,timeout:e.timeout??g1.DEFAULT_TIMEOUT}),r=e.keySelector?g1.createKeyFinder(e.keySelector):void 0,s=(0,YK.toTrustMaterial)(t,r),a={ctlogThreshold:e.ctLogThreshold,tlogThreshold:e.tlogThreshold},n=new YK.Verifier(s,a),c=g1.createVerificationPolicy(e);return{verify:(f,p)=>{let h=(0,KK.bundleFromJSON)(f),E=(0,YK.toSignedEntity)(h,p);n.verify(E,c)}}}});var Dbe=G(Ni=>{"use strict";Object.defineProperty(Ni,"__esModule",{value:!0});Ni.verify=Ni.sign=Ni.createVerifier=Ni.attest=Ni.VerificationError=Ni.PolicyError=Ni.TUFError=Ni.InternalError=Ni.DEFAULT_REKOR_URL=Ni.DEFAULT_FULCIO_URL=Ni.ValidationError=void 0;var cvt=Ib();Object.defineProperty(Ni,"ValidationError",{enumerable:!0,get:function(){return cvt.ValidationError}});var JK=i7();Object.defineProperty(Ni,"DEFAULT_FULCIO_URL",{enumerable:!0,get:function(){return JK.DEFAULT_FULCIO_URL}});Object.defineProperty(Ni,"DEFAULT_REKOR_URL",{enumerable:!0,get:function(){return JK.DEFAULT_REKOR_URL}});Object.defineProperty(Ni,"InternalError",{enumerable:!0,get:function(){return JK.InternalError}});var uvt=XO();Object.defineProperty(Ni,"TUFError",{enumerable:!0,get:function(){return uvt.TUFError}});var Sbe=AL();Object.defineProperty(Ni,"PolicyError",{enumerable:!0,get:function(){return Sbe.PolicyError}});Object.defineProperty(Ni,"VerificationError",{enumerable:!0,get:function(){return Sbe.VerificationError}});var pL=vbe();Object.defineProperty(Ni,"attest",{enumerable:!0,get:function(){return pL.attest}});Object.defineProperty(Ni,"createVerifier",{enumerable:!0,get:function(){return pL.createVerifier}});Object.defineProperty(Ni,"sign",{enumerable:!0,get:function(){return pL.sign}});Object.defineProperty(Ni,"verify",{enumerable:!0,get:function(){return pL.verify}})});Dt();qe();Dt();var rPe=Ie("child_process"),nPe=et(Rd());Vt();var qI=new Map([]);var Gv={};Yt(Gv,{BaseCommand:()=>At,WorkspaceRequiredError:()=>ar,getCli:()=>h0e,getDynamicLibs:()=>p0e,getPluginConfiguration:()=>VI,openWorkspace:()=>WI,pluginCommands:()=>qI,runExit:()=>QT});Vt();var At=class extends at{constructor(){super(...arguments);this.cwd=he.String("--cwd",{hidden:!0})}validateAndExecute(){if(typeof this.cwd<"u")throw new st("The --cwd option is ambiguous when used anywhere else than the very first parameter provided in the command line, before even the command path");return super.validateAndExecute()}};qe();Dt();Vt();var ar=class extends st{constructor(t,r){let s=K.relative(t,r),a=K.join(t,Ut.fileName);super(`This command can only be run from within a workspace of your project (${s} isn't a workspace of ${a}).`)}};qe();Dt();rA();Bc();sv();Vt();var Qit=et(pi());ul();var p0e=()=>new Map([["@yarnpkg/cli",Gv],["@yarnpkg/core",jv],["@yarnpkg/fslib",RB],["@yarnpkg/libzip",nv],["@yarnpkg/parsers",_B],["@yarnpkg/shell",cv],["clipanion",XB],["semver",Qit],["typanion",Yo]]);qe();async function WI(e,t){let{project:r,workspace:s}=await Rt.find(e,t);if(!s)throw new ar(r.cwd,t);return s}qe();Dt();rA();Bc();sv();Vt();var FSt=et(pi());ul();var Q5={};Yt(Q5,{AddCommand:()=>zI,BinCommand:()=>ZI,CacheCleanCommand:()=>XI,ClipanionCommand:()=>iC,ConfigCommand:()=>rC,ConfigGetCommand:()=>$I,ConfigSetCommand:()=>eC,ConfigUnsetCommand:()=>tC,DedupeCommand:()=>nC,EntryCommand:()=>oC,ExecCommand:()=>lC,ExplainCommand:()=>fC,ExplainPeerRequirementsCommand:()=>cC,HelpCommand:()=>sC,InfoCommand:()=>AC,LinkCommand:()=>hC,NodeCommand:()=>gC,PluginCheckCommand:()=>dC,PluginImportCommand:()=>EC,PluginImportSourcesCommand:()=>IC,PluginListCommand:()=>mC,PluginRemoveCommand:()=>CC,PluginRuntimeCommand:()=>wC,RebuildCommand:()=>BC,RemoveCommand:()=>vC,RunCommand:()=>DC,RunIndexCommand:()=>SC,SetResolutionCommand:()=>bC,SetVersionCommand:()=>uC,SetVersionSourcesCommand:()=>yC,UnlinkCommand:()=>PC,UpCommand:()=>xC,VersionCommand:()=>aC,WhyCommand:()=>kC,WorkspaceCommand:()=>NC,WorkspacesListCommand:()=>FC,YarnCommand:()=>pC,dedupeUtils:()=>_T,default:()=>Wot,suggestUtils:()=>$u});var Lde=et(Rd());qe();qe();qe();Vt();var tde=et(Yv());ul();var $u={};Yt($u,{Modifier:()=>l5,Strategy:()=>MT,Target:()=>Kv,WorkspaceModifier:()=>zge,applyModifier:()=>Zst,extractDescriptorFromPath:()=>c5,extractRangeModifier:()=>Zge,fetchDescriptorFrom:()=>u5,findProjectDescriptors:()=>ede,getModifier:()=>Jv,getSuggestedDescriptors:()=>zv,makeWorkspaceDescriptor:()=>$ge,toWorkspaceModifier:()=>Xge});qe();qe();Dt();var a5=et(pi()),Jst="workspace:",Kv=(s=>(s.REGULAR="dependencies",s.DEVELOPMENT="devDependencies",s.PEER="peerDependencies",s))(Kv||{}),l5=(s=>(s.CARET="^",s.TILDE="~",s.EXACT="",s))(l5||{}),zge=(s=>(s.CARET="^",s.TILDE="~",s.EXACT="*",s))(zge||{}),MT=(n=>(n.KEEP="keep",n.REUSE="reuse",n.PROJECT="project",n.LATEST="latest",n.CACHE="cache",n))(MT||{});function Jv(e,t){return e.exact?"":e.caret?"^":e.tilde?"~":t.configuration.get("defaultSemverRangePrefix")}var zst=/^([\^~]?)[0-9]+(?:\.[0-9]+){0,2}(?:-\S+)?$/;function Zge(e,{project:t}){let r=e.match(zst);return r?r[1]:t.configuration.get("defaultSemverRangePrefix")}function Zst(e,t){let{protocol:r,source:s,params:a,selector:n}=j.parseRange(e.range);return a5.default.valid(n)&&(n=`${t}${e.range}`),j.makeDescriptor(e,j.makeRange({protocol:r,source:s,params:a,selector:n}))}function Xge(e){switch(e){case"^":return"^";case"~":return"~";case"":return"*";default:throw new Error(`Assertion failed: Unknown modifier: "${e}"`)}}function $ge(e,t){return j.makeDescriptor(e.anchoredDescriptor,`${Jst}${Xge(t)}`)}async function ede(e,{project:t,target:r}){let s=new Map,a=n=>{let c=s.get(n.descriptorHash);return c||s.set(n.descriptorHash,c={descriptor:n,locators:[]}),c};for(let n of t.workspaces)if(r==="peerDependencies"){let c=n.manifest.peerDependencies.get(e.identHash);c!==void 0&&a(c).locators.push(n.anchoredLocator)}else{let c=n.manifest.dependencies.get(e.identHash),f=n.manifest.devDependencies.get(e.identHash);r==="devDependencies"?f!==void 0?a(f).locators.push(n.anchoredLocator):c!==void 0&&a(c).locators.push(n.anchoredLocator):c!==void 0?a(c).locators.push(n.anchoredLocator):f!==void 0&&a(f).locators.push(n.anchoredLocator)}return s}async function c5(e,{cwd:t,workspace:r}){return await $st(async s=>{K.isAbsolute(e)||(e=K.relative(r.cwd,K.resolve(t,e)),e.match(/^\.{0,2}\//)||(e=`./${e}`));let{project:a}=r,n=await u5(j.makeIdent(null,"archive"),e,{project:r.project,cache:s,workspace:r});if(!n)throw new Error("Assertion failed: The descriptor should have been found");let c=new ki,f=a.configuration.makeResolver(),p=a.configuration.makeFetcher(),h={checksums:a.storedChecksums,project:a,cache:s,fetcher:p,report:c,resolver:f},E=f.bindDescriptor(n,r.anchoredLocator,h),C=j.convertDescriptorToLocator(E),S=await p.fetch(C,h),x=await Ut.find(S.prefixPath,{baseFs:S.packageFs});if(!x.name)throw new Error("Target path doesn't have a name");return j.makeDescriptor(x.name,e)})}function Xst(e){if(e.range==="unknown")return{type:"resolve",range:"latest"};if(Fr.validRange(e.range))return{type:"fixed",range:e.range};if(Up.test(e.range))return{type:"resolve",range:e.range};let t=e.range.match(/^(?:jsr:|npm:)(.*)/);if(!t)return{type:"fixed",range:e.range};let[,r]=t,s=`${j.stringifyIdent(e)}@`;return r.startsWith(s)&&(r=r.slice(s.length)),Fr.validRange(r)?{type:"fixed",range:e.range}:Up.test(r)?{type:"resolve",range:e.range}:{type:"fixed",range:e.range}}async function zv(e,{project:t,workspace:r,cache:s,target:a,fixed:n,modifier:c,strategies:f,maxResults:p=1/0}){if(!(p>=0))throw new Error(`Invalid maxResults (${p})`);let h=!n||e.range==="unknown"?Xst(e):{type:"fixed",range:e.range};if(h.type==="fixed")return{suggestions:[{descriptor:e,name:`Use ${j.prettyDescriptor(t.configuration,e)}`,reason:"(unambiguous explicit request)"}],rejections:[]};let E=typeof r<"u"&&r!==null&&r.manifest[a].get(e.identHash)||null,C=[],S=[],x=async I=>{try{await I()}catch(T){S.push(T)}};for(let I of f){if(C.length>=p)break;switch(I){case"keep":await x(async()=>{E&&C.push({descriptor:E,name:`Keep ${j.prettyDescriptor(t.configuration,E)}`,reason:"(no changes)"})});break;case"reuse":await x(async()=>{for(let{descriptor:T,locators:O}of(await ede(e,{project:t,target:a})).values()){if(O.length===1&&O[0].locatorHash===r.anchoredLocator.locatorHash&&f.includes("keep"))continue;let U=`(originally used by ${j.prettyLocator(t.configuration,O[0])}`;U+=O.length>1?` and ${O.length-1} other${O.length>2?"s":""})`:")",C.push({descriptor:T,name:`Reuse ${j.prettyDescriptor(t.configuration,T)}`,reason:U})}});break;case"cache":await x(async()=>{for(let T of t.storedDescriptors.values())T.identHash===e.identHash&&C.push({descriptor:T,name:`Reuse ${j.prettyDescriptor(t.configuration,T)}`,reason:"(already used somewhere in the lockfile)"})});break;case"project":await x(async()=>{if(r.manifest.name!==null&&e.identHash===r.manifest.name.identHash)return;let T=t.tryWorkspaceByIdent(e);if(T===null)return;let O=$ge(T,c);C.push({descriptor:O,name:`Attach ${j.prettyDescriptor(t.configuration,O)}`,reason:`(local workspace at ${pe.pretty(t.configuration,T.relativeCwd,pe.Type.PATH)})`})});break;case"latest":{let T=t.configuration.get("enableNetwork"),O=t.configuration.get("enableOfflineMode");await x(async()=>{if(a==="peerDependencies")C.push({descriptor:j.makeDescriptor(e,"*"),name:"Use *",reason:"(catch-all peer dependency pattern)"});else if(!T&&!O)C.push({descriptor:null,name:"Resolve from latest",reason:pe.pretty(t.configuration,"(unavailable because enableNetwork is toggled off)","grey")});else{let U=await u5(e,h.range,{project:t,cache:s,workspace:r,modifier:c});U&&C.push({descriptor:U,name:`Use ${j.prettyDescriptor(t.configuration,U)}`,reason:`(resolved from ${O?"the cache":"latest"})`})}})}break}}return{suggestions:C.slice(0,p),rejections:S.slice(0,p)}}async function u5(e,t,{project:r,cache:s,workspace:a,preserveModifier:n=!0,modifier:c}){let f=r.configuration.normalizeDependency(j.makeDescriptor(e,t)),p=new ki,h=r.configuration.makeFetcher(),E=r.configuration.makeResolver(),C={project:r,fetcher:h,cache:s,checksums:r.storedChecksums,report:p,cacheOptions:{skipIntegrityCheck:!0}},S={...C,resolver:E,fetchOptions:C},x=E.bindDescriptor(f,a.anchoredLocator,S),I=await E.getCandidates(x,{},S);if(I.length===0)return null;let T=I[0],{protocol:O,source:U,params:Y,selector:te}=j.parseRange(j.convertToManifestRange(T.reference));if(O===r.configuration.get("defaultProtocol")&&(O=null),a5.default.valid(te)){let ie=te;if(typeof c<"u")te=c+te;else if(n!==!1){let de=typeof n=="string"?n:f.range;te=Zge(de,{project:r})+te}let ue=j.makeDescriptor(T,j.makeRange({protocol:O,source:U,params:Y,selector:te}));(await E.getCandidates(r.configuration.normalizeDependency(ue),{},S)).length!==1&&(te=ie)}return j.makeDescriptor(T,j.makeRange({protocol:O,source:U,params:Y,selector:te}))}async function $st(e){return await le.mktempPromise(async t=>{let r=ze.create(t);return r.useWithSource(t,{enableMirror:!1,compressionLevel:0},t,{overwrite:!0}),await e(new Jr(t,{configuration:r,check:!1,immutable:!1}))})}var zI=class extends At{constructor(){super(...arguments);this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.fixed=he.Boolean("-F,--fixed",!1,{description:"Store dependency tags as-is instead of resolving them"});this.exact=he.Boolean("-E,--exact",!1,{description:"Don't use any semver modifier on the resolved range"});this.tilde=he.Boolean("-T,--tilde",!1,{description:"Use the `~` semver modifier on the resolved range"});this.caret=he.Boolean("-C,--caret",!1,{description:"Use the `^` semver modifier on the resolved range"});this.dev=he.Boolean("-D,--dev",!1,{description:"Add a package as a dev dependency"});this.peer=he.Boolean("-P,--peer",!1,{description:"Add a package as a peer dependency"});this.optional=he.Boolean("-O,--optional",!1,{description:"Add / upgrade a package to an optional regular / peer dependency"});this.preferDev=he.Boolean("--prefer-dev",!1,{description:"Add / upgrade a package to a dev dependency"});this.interactive=he.Boolean("-i,--interactive",{description:"Reuse the specified package from other workspaces in the project"});this.cached=he.Boolean("--cached",!1,{description:"Reuse the highest version already used somewhere within the project"});this.mode=he.String("--mode",{description:"Change what artifacts installs generate",validator:ks(Na)});this.silent=he.Boolean("--silent",{hidden:!0});this.packages=he.Rest()}static{this.paths=[["add"]]}static{this.usage=at.Usage({description:"add dependencies to the project",details:"\n This command adds a package to the package.json for the nearest workspace.\n\n - If it didn't exist before, the package will by default be added to the regular `dependencies` field, but this behavior can be overriden thanks to the `-D,--dev` flag (which will cause the dependency to be added to the `devDependencies` field instead) and the `-P,--peer` flag (which will do the same but for `peerDependencies`).\n\n - If the package was already listed in your dependencies, it will by default be upgraded whether it's part of your `dependencies` or `devDependencies` (it won't ever update `peerDependencies`, though).\n\n - If set, the `--prefer-dev` flag will operate as a more flexible `-D,--dev` in that it will add the package to your `devDependencies` if it isn't already listed in either `dependencies` or `devDependencies`, but it will also happily upgrade your `dependencies` if that's what you already use (whereas `-D,--dev` would throw an exception).\n\n - If set, the `-O,--optional` flag will add the package to the `optionalDependencies` field and, in combination with the `-P,--peer` flag, it will add the package as an optional peer dependency. If the package was already listed in your `dependencies`, it will be upgraded to `optionalDependencies`. If the package was already listed in your `peerDependencies`, in combination with the `-P,--peer` flag, it will be upgraded to an optional peer dependency: `\"peerDependenciesMeta\": { \"\": { \"optional\": true } }`\n\n - If the added package doesn't specify a range at all its `latest` tag will be resolved and the returned version will be used to generate a new semver range (using the `^` modifier by default unless otherwise configured via the `defaultSemverRangePrefix` configuration, or the `~` modifier if `-T,--tilde` is specified, or no modifier at all if `-E,--exact` is specified). Two exceptions to this rule: the first one is that if the package is a workspace then its local version will be used, and the second one is that if you use `-P,--peer` the default range will be `*` and won't be resolved at all.\n\n - If the added package specifies a range (such as `^1.0.0`, `latest`, or `rc`), Yarn will add this range as-is in the resulting package.json entry (in particular, tags such as `rc` will be encoded as-is rather than being converted into a semver range).\n\n If the `--cached` option is used, Yarn will preferably reuse the highest version already used somewhere within the project, even if through a transitive dependency.\n\n If the `-i,--interactive` option is used (or if the `preferInteractive` settings is toggled on) the command will first try to check whether other workspaces in the project use the specified package and, if so, will offer to reuse them.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n For a compilation of all the supported protocols, please consult the dedicated page from our website: https://yarnpkg.com/protocols.\n ",examples:[["Add a regular package to the current workspace","$0 add lodash"],["Add a specific version for a package to the current workspace","$0 add lodash@1.2.3"],["Add a package from a GitHub repository (the master branch) to the current workspace using a URL","$0 add lodash@https://github.com/lodash/lodash"],["Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol","$0 add lodash@github:lodash/lodash"],["Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol (shorthand)","$0 add lodash@lodash/lodash"],["Add a package from a specific branch of a GitHub repository to the current workspace using the GitHub protocol (shorthand)","$0 add lodash-es@lodash/lodash#es"],["Add a local package (gzipped tarball format) to the current workspace","$0 add local-package-name@file:../path/to/local-package-name-v0.1.2.tgz"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Jr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=this.fixed,f=r.isInteractive({interactive:this.interactive,stdout:this.context.stdout}),p=f||r.get("preferReuse"),h=Jv(this,s),E=[p?"reuse":void 0,"project",this.cached?"cache":void 0,"latest"].filter(Y=>typeof Y<"u"),C=f?1/0:1,S=Y=>{let te=j.tryParseDescriptor(Y.slice(4));return te?te.range==="unknown"?j.makeDescriptor(te,`jsr:${j.stringifyIdent(te)}@latest`):j.makeDescriptor(te,`jsr:${te.range}`):null},x=await Promise.all(this.packages.map(async Y=>{let te=Y.match(/^\.{0,2}\//)?await c5(Y,{cwd:this.context.cwd,workspace:a}):Y.startsWith("jsr:")?S(Y):j.tryParseDescriptor(Y),ie=Y.match(/^(https?:|git@github)/);if(ie)throw new st(`It seems you are trying to add a package using a ${pe.pretty(r,`${ie[0]}...`,pe.Type.RANGE)} url; we now require package names to be explicitly specified. -Try running the command again with the package name prefixed: ${pe.pretty(r,"yarn add",pe.Type.CODE)} ${pe.pretty(r,j.makeDescriptor(j.makeIdent(null,"my-package"),`${ie[0]}...`),pe.Type.DESCRIPTOR)}`);if(!te)throw new st(`The ${pe.pretty(r,Y,pe.Type.CODE)} string didn't match the required format (package-name@range). Did you perhaps forget to explicitly reference the package name?`);let ue=eot(a,te,{dev:this.dev,peer:this.peer,preferDev:this.preferDev,optional:this.optional});return await Promise.all(ue.map(async de=>{let Ae=await zv(te,{project:s,workspace:a,cache:n,fixed:c,target:de,modifier:h,strategies:E,maxResults:C});return{request:te,suggestedDescriptors:Ae,target:de}}))})).then(Y=>Y.flat()),I=await cA.start({configuration:r,stdout:this.context.stdout,suggestInstall:!1},async Y=>{for(let{request:te,suggestedDescriptors:{suggestions:ie,rejections:ue}}of x)if(ie.filter(de=>de.descriptor!==null).length===0){let[de]=ue;if(typeof de>"u")throw new Error("Assertion failed: Expected an error to have been set");s.configuration.get("enableNetwork")?Y.reportError(27,`${j.prettyDescriptor(r,te)} can't be resolved to a satisfying range`):Y.reportError(27,`${j.prettyDescriptor(r,te)} can't be resolved to a satisfying range (note: network resolution has been disabled)`),Y.reportSeparator(),Y.reportExceptionOnce(de)}});if(I.hasErrors())return I.exitCode();let T=!1,O=[],U=[];for(let{suggestedDescriptors:{suggestions:Y},target:te}of x){let ie,ue=Y.filter(Ce=>Ce.descriptor!==null),ae=ue[0].descriptor,de=ue.every(Ce=>j.areDescriptorsEqual(Ce.descriptor,ae));ue.length===1||de?ie=ae:(T=!0,{answer:ie}=await(0,tde.prompt)({type:"select",name:"answer",message:"Which range do you want to use?",choices:Y.map(({descriptor:Ce,name:Ee,reason:g})=>Ce?{name:Ee,hint:g,descriptor:Ce}:{name:Ee,hint:g,disabled:!0}),onCancel:()=>process.exit(130),result(Ce){return this.find(Ce,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let Ae=a.manifest[te].get(ie.identHash);(typeof Ae>"u"||Ae.descriptorHash!==ie.descriptorHash)&&(a.manifest[te].set(ie.identHash,ie),this.optional&&(te==="dependencies"?a.manifest.ensureDependencyMeta({...ie,range:"unknown"}).optional=!0:te==="peerDependencies"&&(a.manifest.ensurePeerDependencyMeta({...ie,range:"unknown"}).optional=!0)),typeof Ae>"u"?O.push([a,te,ie,E]):U.push([a,te,Ae,ie]))}return await r.triggerMultipleHooks(Y=>Y.afterWorkspaceDependencyAddition,O),await r.triggerMultipleHooks(Y=>Y.afterWorkspaceDependencyReplacement,U),T&&this.context.stdout.write(` -`),await s.installWithNewReport({json:this.json,stdout:this.context.stdout,quiet:this.context.quiet},{cache:n,mode:this.mode})}};function eot(e,t,{dev:r,peer:s,preferDev:a,optional:n}){let c=e.manifest.dependencies.has(t.identHash),f=e.manifest.devDependencies.has(t.identHash),p=e.manifest.peerDependencies.has(t.identHash);if((r||s)&&c)throw new st(`Package "${j.prettyIdent(e.project.configuration,t)}" is already listed as a regular dependency - remove the -D,-P flags or remove it from your dependencies first`);if(!r&&!s&&p)throw new st(`Package "${j.prettyIdent(e.project.configuration,t)}" is already listed as a peer dependency - use either of -D or -P, or remove it from your peer dependencies first`);if(n&&f)throw new st(`Package "${j.prettyIdent(e.project.configuration,t)}" is already listed as a dev dependency - remove the -O flag or remove it from your dev dependencies first`);if(n&&!s&&p)throw new st(`Package "${j.prettyIdent(e.project.configuration,t)}" is already listed as a peer dependency - remove the -O flag or add the -P flag or remove it from your peer dependencies first`);if((r||a)&&n)throw new st(`Package "${j.prettyIdent(e.project.configuration,t)}" cannot simultaneously be a dev dependency and an optional dependency`);let h=[];return s&&h.push("peerDependencies"),(r||a)&&h.push("devDependencies"),n&&h.push("dependencies"),h.length>0?h:f?["devDependencies"]:p?["peerDependencies"]:["dependencies"]}qe();qe();Vt();var ZI=class extends At{constructor(){super(...arguments);this.verbose=he.Boolean("-v,--verbose",!1,{description:"Print both the binary name and the locator of the package that provides the binary"});this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.name=he.String({required:!1})}static{this.paths=[["bin"]]}static{this.usage=at.Usage({description:"get the path to a binary script",details:` - When used without arguments, this command will print the list of all the binaries available in the current workspace. Adding the \`-v,--verbose\` flag will cause the output to contain both the binary name and the locator of the package that provides the binary. - - When an argument is specified, this command will just print the path to the binary on the standard output and exit. Note that the reported path may be stored within a zip archive. - `,examples:[["List all the available binaries","$0 bin"],["Print the path to a specific binary","$0 bin eslint"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,locator:a}=await Rt.find(r,this.context.cwd);if(await s.restoreInstallState(),this.name){let f=(await Cn.getPackageAccessibleBinaries(a,{project:s})).get(this.name);if(!f)throw new st(`Couldn't find a binary named "${this.name}" for package "${j.prettyLocator(r,a)}"`);let[,p]=f;return this.context.stdout.write(`${p} -`),0}return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async c=>{let f=await Cn.getPackageAccessibleBinaries(a,{project:s}),h=Array.from(f.keys()).reduce((E,C)=>Math.max(E,C.length),0);for(let[E,[C,S]]of f)c.reportJson({name:E,source:j.stringifyIdent(C),path:S});if(this.verbose)for(let[E,[C]]of f)c.reportInfo(null,`${E.padEnd(h," ")} ${j.prettyLocator(r,C)}`);else for(let E of f.keys())c.reportInfo(null,E)})).exitCode()}};qe();Dt();Vt();var XI=class extends At{constructor(){super(...arguments);this.mirror=he.Boolean("--mirror",!1,{description:"Remove the global cache files instead of the local cache files"});this.all=he.Boolean("--all",!1,{description:"Remove both the global cache files and the local cache files of the current project"})}static{this.paths=[["cache","clean"],["cache","clear"]]}static{this.usage=at.Usage({description:"remove the shared cache files",details:` - This command will remove all the files from the cache. - `,examples:[["Remove all the local archives","$0 cache clean"],["Remove all the archives stored in the ~/.yarn directory","$0 cache clean --mirror"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);if(!r.get("enableCacheClean"))throw new st("Cache cleaning is currently disabled. To enable it, set `enableCacheClean: true` in your configuration file. Note: Cache cleaning is typically not required and should be avoided when using Zero-Installs.");let s=await Jr.find(r);return(await Ot.start({configuration:r,stdout:this.context.stdout},async()=>{let n=(this.all||this.mirror)&&s.mirrorCwd!==null,c=!this.mirror;n&&(await le.removePromise(s.mirrorCwd),await r.triggerHook(f=>f.cleanGlobalArtifacts,r)),c&&await le.removePromise(s.cwd)})).exitCode()}};qe();Vt();Jl();var f5=Ie("util"),$I=class extends At{constructor(){super(...arguments);this.why=he.Boolean("--why",!1,{description:"Print the explanation for why a setting has its value"});this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.unsafe=he.Boolean("--no-redacted",!1,{description:"Don't redact secrets (such as tokens) from the output"});this.name=he.String()}static{this.paths=[["config","get"]]}static{this.usage=at.Usage({description:"read a configuration settings",details:` - This command will print a configuration setting. - - Secrets (such as tokens) will be redacted from the output by default. If this behavior isn't desired, set the \`--no-redacted\` to get the untransformed value. - `,examples:[["Print a simple configuration setting","yarn config get yarnPath"],["Print a complex configuration setting","yarn config get packageExtensions"],["Print a nested field from the configuration",`yarn config get 'npmScopes["my-company"].npmRegistryServer'`],["Print a token from the configuration","yarn config get npmAuthToken --no-redacted"],["Print a configuration setting as JSON","yarn config get packageExtensions --json"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=this.name.replace(/[.[].*$/,""),a=this.name.replace(/^[^.[]*/,"");if(typeof r.settings.get(s)>"u")throw new st(`Couldn't find a configuration settings named "${s}"`);let c=r.getSpecial(s,{hideSecrets:!this.unsafe,getNativePaths:!0}),f=Ge.convertMapsToIndexableObjects(c),p=a?ba(f,a):f,h=await Ot.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async E=>{E.reportJson(p)});if(!this.json){if(typeof p=="string")return this.context.stdout.write(`${p} -`),h.exitCode();f5.inspect.styles.name="cyan",this.context.stdout.write(`${(0,f5.inspect)(p,{depth:1/0,colors:r.get("enableColors"),compact:!1})} -`)}return h.exitCode()}};qe();Vt();Jl();var A5=Ie("util"),eC=class extends At{constructor(){super(...arguments);this.json=he.Boolean("--json",!1,{description:"Set complex configuration settings to JSON values"});this.home=he.Boolean("-H,--home",!1,{description:"Update the home configuration instead of the project configuration"});this.name=he.String();this.value=he.String()}static{this.paths=[["config","set"]]}static{this.usage=at.Usage({description:"change a configuration settings",details:` - This command will set a configuration setting. - - When used without the \`--json\` flag, it can only set a simple configuration setting (a string, a number, or a boolean). - - When used with the \`--json\` flag, it can set both simple and complex configuration settings, including Arrays and Objects. - `,examples:[["Set a simple configuration setting (a string, a number, or a boolean)","yarn config set initScope myScope"],["Set a simple configuration setting (a string, a number, or a boolean) using the `--json` flag",'yarn config set initScope --json \\"myScope\\"'],["Set a complex configuration setting (an Array) using the `--json` flag",`yarn config set unsafeHttpWhitelist --json '["*.example.com", "example.com"]'`],["Set a complex configuration setting (an Object) using the `--json` flag",`yarn config set packageExtensions --json '{ "@babel/parser@*": { "dependencies": { "@babel/types": "*" } } }'`],["Set a nested configuration setting",'yarn config set npmScopes.company.npmRegistryServer "https://npm.example.com"'],["Set a nested configuration setting using indexed access for non-simple keys",`yarn config set 'npmRegistries["//npm.example.com"].npmAuthToken' "ffffffff-ffff-ffff-ffff-ffffffffffff"`]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=()=>{if(!r.projectCwd)throw new st("This command must be run from within a project folder");return r.projectCwd},a=this.name.replace(/[.[].*$/,""),n=this.name.replace(/^[^.[]*\.?/,"");if(typeof r.settings.get(a)>"u")throw new st(`Couldn't find a configuration settings named "${a}"`);if(a==="enableStrictSettings")throw new st("This setting only affects the file it's in, and thus cannot be set from the CLI");let f=this.json?JSON.parse(this.value):this.value;await(this.home?I=>ze.updateHomeConfiguration(I):I=>ze.updateConfiguration(s(),I))(I=>{if(n){let T=c0(I);return Vd(T,this.name,f),T}else return{...I,[a]:f}});let E=(await ze.find(this.context.cwd,this.context.plugins)).getSpecial(a,{hideSecrets:!0,getNativePaths:!0}),C=Ge.convertMapsToIndexableObjects(E),S=n?ba(C,n):C;return(await Ot.start({configuration:r,includeFooter:!1,stdout:this.context.stdout},async I=>{A5.inspect.styles.name="cyan",I.reportInfo(0,`Successfully set ${this.name} to ${(0,A5.inspect)(S,{depth:1/0,colors:r.get("enableColors"),compact:!1})}`)})).exitCode()}};qe();Vt();Jl();var tC=class extends At{constructor(){super(...arguments);this.home=he.Boolean("-H,--home",!1,{description:"Update the home configuration instead of the project configuration"});this.name=he.String()}static{this.paths=[["config","unset"]]}static{this.usage=at.Usage({description:"unset a configuration setting",details:` - This command will unset a configuration setting. - `,examples:[["Unset a simple configuration setting","yarn config unset initScope"],["Unset a complex configuration setting","yarn config unset packageExtensions"],["Unset a nested configuration setting","yarn config unset npmScopes.company.npmRegistryServer"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=()=>{if(!r.projectCwd)throw new st("This command must be run from within a project folder");return r.projectCwd},a=this.name.replace(/[.[].*$/,""),n=this.name.replace(/^[^.[]*\.?/,"");if(typeof r.settings.get(a)>"u")throw new st(`Couldn't find a configuration settings named "${a}"`);let f=this.home?h=>ze.updateHomeConfiguration(h):h=>ze.updateConfiguration(s(),h);return(await Ot.start({configuration:r,includeFooter:!1,stdout:this.context.stdout},async h=>{let E=!1;await f(C=>{if(!d2(C,this.name))return h.reportWarning(0,`Configuration doesn't contain setting ${this.name}; there is nothing to unset`),E=!0,C;let S=n?c0(C):{...C};return u0(S,this.name),S}),E||h.reportInfo(0,`Successfully unset ${this.name}`)})).exitCode()}};qe();Dt();Vt();var UT=Ie("util"),rC=class extends At{constructor(){super(...arguments);this.noDefaults=he.Boolean("--no-defaults",!1,{description:"Omit the default values from the display"});this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.verbose=he.Boolean("-v,--verbose",{hidden:!0});this.why=he.Boolean("--why",{hidden:!0});this.names=he.Rest()}static{this.paths=[["config"]]}static{this.usage=at.Usage({description:"display the current configuration",details:` - This command prints the current active configuration settings. - `,examples:[["Print the active configuration settings","$0 config"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins,{strict:!1}),s=await PI({configuration:r,stdout:this.context.stdout,forceError:this.json},[{option:this.verbose,message:"The --verbose option is deprecated, the settings' descriptions are now always displayed"},{option:this.why,message:"The --why option is deprecated, the settings' sources are now always displayed"}]);if(s!==null)return s;let a=this.names.length>0?[...new Set(this.names)].sort():[...r.settings.keys()].sort(),n,c=await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async f=>{if(r.invalid.size>0&&!this.json){for(let[p,h]of r.invalid)f.reportError(34,`Invalid configuration key "${p}" in ${h}`);f.reportSeparator()}if(this.json)for(let p of a){if(this.noDefaults&&!r.sources.has(p))continue;let h=r.settings.get(p);typeof h>"u"&&f.reportError(34,`No configuration key named "${p}"`);let E=r.getSpecial(p,{hideSecrets:!0,getNativePaths:!0}),C=r.sources.get(p)??"",S=C&&C[0]!=="<"?fe.fromPortablePath(C):C;f.reportJson({key:p,effective:E,source:S,...h})}else{let p={breakLength:1/0,colors:r.get("enableColors"),maxArrayLength:2},h={},E={children:h};for(let C of a){if(this.noDefaults&&!r.sources.has(C))continue;let S=r.settings.get(C),x=r.sources.get(C)??"",I=r.getSpecial(C,{hideSecrets:!0,getNativePaths:!0}),T={Description:{label:"Description",value:pe.tuple(pe.Type.MARKDOWN,{text:S.description,format:this.cli.format(),paragraphs:!1})},Source:{label:"Source",value:pe.tuple(x[0]==="<"?pe.Type.CODE:pe.Type.PATH,x)}};h[C]={value:pe.tuple(pe.Type.CODE,C),children:T};let O=(U,Y)=>{for(let[te,ie]of Y)if(ie instanceof Map){let ue={};U[te]={children:ue},O(ue,ie)}else U[te]={label:te,value:pe.tuple(pe.Type.NO_HINT,(0,UT.inspect)(ie,p))}};I instanceof Map?O(T,I):T.Value={label:"Value",value:pe.tuple(pe.Type.NO_HINT,(0,UT.inspect)(I,p))}}a.length!==1&&(n=void 0),Rs.emitTree(E,{configuration:r,json:this.json,stdout:this.context.stdout,separators:2})}});if(!this.json&&typeof n<"u"){let f=a[0],p=(0,UT.inspect)(r.getSpecial(f,{hideSecrets:!0,getNativePaths:!0}),{colors:r.get("enableColors")});this.context.stdout.write(` -`),this.context.stdout.write(`${p} -`)}return c.exitCode()}};qe();Vt();ul();var _T={};Yt(_T,{Strategy:()=>Zv,acceptedStrategies:()=>tot,dedupe:()=>p5});qe();qe();var rde=et(Jo()),Zv=(t=>(t.HIGHEST="highest",t))(Zv||{}),tot=new Set(Object.values(Zv)),rot={highest:async(e,t,{resolver:r,fetcher:s,resolveOptions:a,fetchOptions:n})=>{let c=new Map;for(let[p,h]of e.storedResolutions){let E=e.storedDescriptors.get(p);if(typeof E>"u")throw new Error(`Assertion failed: The descriptor (${p}) should have been registered`);Ge.getSetWithDefault(c,E.identHash).add(h)}let f=new Map(Ge.mapAndFilter(e.storedDescriptors.values(),p=>j.isVirtualDescriptor(p)?Ge.mapAndFilter.skip:[p.descriptorHash,Ge.makeDeferred()]));for(let p of e.storedDescriptors.values()){let h=f.get(p.descriptorHash);if(typeof h>"u")throw new Error(`Assertion failed: The descriptor (${p.descriptorHash}) should have been registered`);let E=e.storedResolutions.get(p.descriptorHash);if(typeof E>"u")throw new Error(`Assertion failed: The resolution (${p.descriptorHash}) should have been registered`);let C=e.originalPackages.get(E);if(typeof C>"u")throw new Error(`Assertion failed: The package (${E}) should have been registered`);Promise.resolve().then(async()=>{let S=r.getResolutionDependencies(p,a),x=Object.fromEntries(await Ge.allSettledSafe(Object.entries(S).map(async([te,ie])=>{let ue=f.get(ie.descriptorHash);if(typeof ue>"u")throw new Error(`Assertion failed: The descriptor (${ie.descriptorHash}) should have been registered`);let ae=await ue.promise;if(!ae)throw new Error("Assertion failed: Expected the dependency to have been through the dedupe process itself");return[te,ae.updatedPackage]})));if(t.length&&!rde.default.isMatch(j.stringifyIdent(p),t)||!r.shouldPersistResolution(C,a))return C;let I=c.get(p.identHash);if(typeof I>"u")throw new Error(`Assertion failed: The resolutions (${p.identHash}) should have been registered`);if(I.size===1)return C;let T=[...I].map(te=>{let ie=e.originalPackages.get(te);if(typeof ie>"u")throw new Error(`Assertion failed: The package (${te}) should have been registered`);return ie}),O=await r.getSatisfying(p,x,T,a),U=O.locators?.[0];if(typeof U>"u"||!O.sorted)return C;let Y=e.originalPackages.get(U.locatorHash);if(typeof Y>"u")throw new Error(`Assertion failed: The package (${U.locatorHash}) should have been registered`);return Y}).then(async S=>{let x=await e.preparePackage(S,{resolver:r,resolveOptions:a});h.resolve({descriptor:p,currentPackage:C,updatedPackage:S,resolvedPackage:x})}).catch(S=>{h.reject(S)})}return[...f.values()].map(p=>p.promise)}};async function p5(e,{strategy:t,patterns:r,cache:s,report:a}){let{configuration:n}=e,c=new ki,f=n.makeResolver(),p=n.makeFetcher(),h={cache:s,checksums:e.storedChecksums,fetcher:p,project:e,report:c,cacheOptions:{skipIntegrityCheck:!0}},E={project:e,resolver:f,report:c,fetchOptions:h};return await a.startTimerPromise("Deduplication step",async()=>{let C=rot[t],S=await C(e,r,{resolver:f,resolveOptions:E,fetcher:p,fetchOptions:h}),x=yo.progressViaCounter(S.length);await a.reportProgress(x);let I=0;await Promise.all(S.map(U=>U.then(Y=>{if(Y===null||Y.currentPackage.locatorHash===Y.updatedPackage.locatorHash)return;I++;let{descriptor:te,currentPackage:ie,updatedPackage:ue}=Y;a.reportInfo(0,`${j.prettyDescriptor(n,te)} can be deduped from ${j.prettyLocator(n,ie)} to ${j.prettyLocator(n,ue)}`),a.reportJson({descriptor:j.stringifyDescriptor(te),currentResolution:j.stringifyLocator(ie),updatedResolution:j.stringifyLocator(ue)}),e.storedResolutions.set(te.descriptorHash,ue.locatorHash)}).finally(()=>x.tick())));let T;switch(I){case 0:T="No packages";break;case 1:T="One package";break;default:T=`${I} packages`}let O=pe.pretty(n,t,pe.Type.CODE);return a.reportInfo(0,`${T} can be deduped using the ${O} strategy`),I})}var nC=class extends At{constructor(){super(...arguments);this.strategy=he.String("-s,--strategy","highest",{description:"The strategy to use when deduping dependencies",validator:ks(Zv)});this.check=he.Boolean("-c,--check",!1,{description:"Exit with exit code 1 when duplicates are found, without persisting the dependency tree"});this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.mode=he.String("--mode",{description:"Change what artifacts installs generate",validator:ks(Na)});this.patterns=he.Rest()}static{this.paths=[["dedupe"]]}static{this.usage=at.Usage({description:"deduplicate dependencies with overlapping ranges",details:"\n Duplicates are defined as descriptors with overlapping ranges being resolved and locked to different locators. They are a natural consequence of Yarn's deterministic installs, but they can sometimes pile up and unnecessarily increase the size of your project.\n\n This command dedupes dependencies in the current project using different strategies (only one is implemented at the moment):\n\n - `highest`: Reuses (where possible) the locators with the highest versions. This means that dependencies can only be upgraded, never downgraded. It's also guaranteed that it never takes more than a single pass to dedupe the entire dependency tree.\n\n **Note:** Even though it never produces a wrong dependency tree, this command should be used with caution, as it modifies the dependency tree, which can sometimes cause problems when packages don't strictly follow semver recommendations. Because of this, it is recommended to also review the changes manually.\n\n If set, the `-c,--check` flag will only report the found duplicates, without persisting the modified dependency tree. If changes are found, the command will exit with a non-zero exit code, making it suitable for CI purposes.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n ### In-depth explanation:\n\n Yarn doesn't deduplicate dependencies by default, otherwise installs wouldn't be deterministic and the lockfile would be useless. What it actually does is that it tries to not duplicate dependencies in the first place.\n\n **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@*`will cause Yarn to reuse `foo@2.3.4`, even if the latest `foo` is actually `foo@2.10.14`, thus preventing unnecessary duplication.\n\n Duplication happens when Yarn can't unlock dependencies that have already been locked inside the lockfile.\n\n **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@2.10.14` will cause Yarn to install `foo@2.10.14` because the existing resolution doesn't satisfy the range `2.10.14`. This behavior can lead to (sometimes) unwanted duplication, since now the lockfile contains 2 separate resolutions for the 2 `foo` descriptors, even though they have overlapping ranges, which means that the lockfile can be simplified so that both descriptors resolve to `foo@2.10.14`.\n ",examples:[["Dedupe all packages","$0 dedupe"],["Dedupe all packages using a specific strategy","$0 dedupe --strategy highest"],["Dedupe a specific package","$0 dedupe lodash"],["Dedupe all packages with the `@babel/*` scope","$0 dedupe '@babel/*'"],["Check for duplicates (can be used as a CI step)","$0 dedupe --check"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Rt.find(r,this.context.cwd),a=await Jr.find(r);await s.restoreInstallState({restoreResolutions:!1});let n=0,c=await Ot.start({configuration:r,includeFooter:!1,stdout:this.context.stdout,json:this.json},async f=>{n=await p5(s,{strategy:this.strategy,patterns:this.patterns,cache:a,report:f})});return c.hasErrors()?c.exitCode():this.check?n?1:0:await s.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:a,mode:this.mode})}};qe();Vt();var iC=class extends At{static{this.paths=[["--clipanion=definitions"]]}async execute(){let{plugins:t}=await ze.find(this.context.cwd,this.context.plugins),r=[];for(let c of t){let{commands:f}=c[1];if(f){let h=va.from(f).definitions();r.push([c[0],h])}}let s=this.cli.definitions(),a=(c,f)=>c.split(" ").slice(1).join()===f.split(" ").slice(1).join(),n=nde()["@yarnpkg/builder"].bundles.standard;for(let c of r){let f=c[1];for(let p of f)s.find(h=>a(h.path,p.path)).plugin={name:c[0],isDefault:n.includes(c[0])}}this.context.stdout.write(`${JSON.stringify(s,null,2)} -`)}};var sC=class extends At{static{this.paths=[["help"],["--help"],["-h"]]}async execute(){this.context.stdout.write(this.cli.usage(null))}};qe();Dt();Vt();var oC=class extends At{constructor(){super(...arguments);this.leadingArgument=he.String();this.args=he.Proxy()}async execute(){if(this.leadingArgument.match(/[\\/]/)&&!j.tryParseIdent(this.leadingArgument)){let r=K.resolve(this.context.cwd,fe.toPortablePath(this.leadingArgument));return await this.cli.run(this.args,{cwd:r})}else return await this.cli.run(["run",this.leadingArgument,...this.args])}};qe();var aC=class extends At{static{this.paths=[["-v"],["--version"]]}async execute(){this.context.stdout.write(`${An||""} -`)}};qe();qe();Vt();var lC=class extends At{constructor(){super(...arguments);this.commandName=he.String();this.args=he.Proxy()}static{this.paths=[["exec"]]}static{this.usage=at.Usage({description:"execute a shell script",details:` - This command simply executes a shell script within the context of the root directory of the active workspace using the portable shell. - - It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment). - `,examples:[["Execute a single shell command","$0 exec echo Hello World"],["Execute a shell script",'$0 exec "tsc & babel src --out-dir lib"']]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,locator:a}=await Rt.find(r,this.context.cwd);return await s.restoreInstallState(),await Cn.executePackageShellcode(a,this.commandName,this.args,{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,project:s})}};qe();Vt();ul();var cC=class extends At{constructor(){super(...arguments);this.hash=he.String({required:!1,validator:Nx(SE(),[qB(/^p[0-9a-f]{6}$/)])})}static{this.paths=[["explain","peer-requirements"]]}static{this.usage=at.Usage({description:"explain a set of peer requirements",details:` - A peer requirement represents all peer requests that a subject must satisfy when providing a requested package to requesters. - - When the hash argument is specified, this command prints a detailed explanation of the peer requirement corresponding to the hash and whether it is satisfied or not. - - When used without arguments, this command lists all peer requirements and the corresponding hash that can be used to get detailed information about a given requirement. - - **Note:** A hash is a seven-letter code consisting of the letter 'p' followed by six characters that can be obtained from peer dependency warnings or from the list of all peer requirements(\`yarn explain peer-requirements\`). - `,examples:[["Explain the corresponding peer requirement for a hash","$0 explain peer-requirements p1a4ed"],["List all peer requirements","$0 explain peer-requirements"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Rt.find(r,this.context.cwd);return await s.restoreInstallState({restoreResolutions:!1}),await s.applyLightResolution(),typeof this.hash<"u"?await iot(this.hash,s,{stdout:this.context.stdout}):await sot(s,{stdout:this.context.stdout})}};async function iot(e,t,r){let s=t.peerRequirementNodes.get(e);if(typeof s>"u")throw new Error(`No peerDependency requirements found for hash: "${e}"`);let a=new Set,n=p=>a.has(p.requester.locatorHash)?{value:pe.tuple(pe.Type.DEPENDENT,{locator:p.requester,descriptor:p.descriptor}),children:p.children.size>0?[{value:pe.tuple(pe.Type.NO_HINT,"...")}]:[]}:(a.add(p.requester.locatorHash),{value:pe.tuple(pe.Type.DEPENDENT,{locator:p.requester,descriptor:p.descriptor}),children:Object.fromEntries(Array.from(p.children.values(),h=>[j.stringifyLocator(h.requester),n(h)]))}),c=t.peerWarnings.find(p=>p.hash===e);return(await Ot.start({configuration:t.configuration,stdout:r.stdout,includeFooter:!1,includePrefix:!1},async p=>{let h=pe.mark(t.configuration),E=c?h.Cross:h.Check;if(p.reportInfo(0,`Package ${pe.pretty(t.configuration,s.subject,pe.Type.LOCATOR)} is requested to provide ${pe.pretty(t.configuration,s.ident,pe.Type.IDENT)} by its descendants`),p.reportSeparator(),p.reportInfo(0,pe.pretty(t.configuration,s.subject,pe.Type.LOCATOR)),Rs.emitTree({children:Object.fromEntries(Array.from(s.requests.values(),C=>[j.stringifyLocator(C.requester),n(C)]))},{configuration:t.configuration,stdout:r.stdout,json:!1}),p.reportSeparator(),s.provided.range==="missing:"){let C=c?"":" , but all peer requests are optional";p.reportInfo(0,`${E} Package ${pe.pretty(t.configuration,s.subject,pe.Type.LOCATOR)} does not provide ${pe.pretty(t.configuration,s.ident,pe.Type.IDENT)}${C}.`)}else{let C=t.storedResolutions.get(s.provided.descriptorHash);if(!C)throw new Error("Assertion failed: Expected the descriptor to be registered");let S=t.storedPackages.get(C);if(!S)throw new Error("Assertion failed: Expected the package to be registered");p.reportInfo(0,`${E} Package ${pe.pretty(t.configuration,s.subject,pe.Type.LOCATOR)} provides ${pe.pretty(t.configuration,s.ident,pe.Type.IDENT)} with version ${j.prettyReference(t.configuration,S.version??"0.0.0")}, ${c?"which does not satisfy all requests.":"which satisfies all requests"}`),c?.type===3&&(c.range?p.reportInfo(0,` The combined requested range is ${pe.pretty(t.configuration,c.range,pe.Type.RANGE)}`):p.reportInfo(0," Unfortunately, the requested ranges have no overlap"))}})).exitCode()}async function sot(e,t){return(await Ot.start({configuration:e.configuration,stdout:t.stdout,includeFooter:!1,includePrefix:!1},async s=>{let a=pe.mark(e.configuration),n=Ge.sortMap(e.peerRequirementNodes,[([,c])=>j.stringifyLocator(c.subject),([,c])=>j.stringifyIdent(c.ident)]);for(let[,c]of n.values()){if(!c.root)continue;let f=e.peerWarnings.find(E=>E.hash===c.hash),p=[...j.allPeerRequests(c)],h;if(p.length>2?h=` and ${p.length-1} other dependencies`:p.length===2?h=" and 1 other dependency":h="",c.provided.range!=="missing:"){let E=e.storedResolutions.get(c.provided.descriptorHash);if(!E)throw new Error("Assertion failed: Expected the resolution to have been registered");let C=e.storedPackages.get(E);if(!C)throw new Error("Assertion failed: Expected the provided package to have been registered");let S=`${pe.pretty(e.configuration,c.hash,pe.Type.CODE)} \u2192 ${f?a.Cross:a.Check} ${j.prettyLocator(e.configuration,c.subject)} provides ${j.prettyLocator(e.configuration,C)} to ${j.prettyLocator(e.configuration,p[0].requester)}${h}`;f?s.reportWarning(0,S):s.reportInfo(0,S)}else{let E=`${pe.pretty(e.configuration,c.hash,pe.Type.CODE)} \u2192 ${f?a.Cross:a.Check} ${j.prettyLocator(e.configuration,c.subject)} doesn't provide ${j.prettyIdent(e.configuration,c.ident)} to ${j.prettyLocator(e.configuration,p[0].requester)}${h}`;f?s.reportWarning(0,E):s.reportInfo(0,E)}}})).exitCode()}qe();Vt();ul();qe();qe();Dt();Vt();var ide=et(pi()),uC=class extends At{constructor(){super(...arguments);this.useYarnPath=he.Boolean("--yarn-path",{description:"Set the yarnPath setting even if the version can be accessed by Corepack"});this.onlyIfNeeded=he.Boolean("--only-if-needed",!1,{description:"Only lock the Yarn version if it isn't already locked"});this.version=he.String()}static{this.paths=[["set","version"]]}static{this.usage=at.Usage({description:"lock the Yarn version used by the project",details:"\n This command will set a specific release of Yarn to be used by Corepack: https://nodejs.org/api/corepack.html.\n\n By default it only will set the `packageManager` field at the root of your project, but if the referenced release cannot be represented this way, if you already have `yarnPath` configured, or if you set the `--yarn-path` command line flag, then the release will also be downloaded from the Yarn GitHub repository, stored inside your project, and referenced via the `yarnPath` settings from your project `.yarnrc.yml` file.\n\n A very good use case for this command is to enforce the version of Yarn used by any single member of your team inside the same project - by doing this you ensure that you have control over Yarn upgrades and downgrades (including on your deployment servers), and get rid of most of the headaches related to someone using a slightly different version and getting different behavior.\n\n The version specifier can be:\n\n - a tag:\n - `latest` / `berry` / `stable` -> the most recent stable berry (`>=2.0.0`) release\n - `canary` -> the most recent canary (release candidate) berry (`>=2.0.0`) release\n - `classic` -> the most recent classic (`^0.x || ^1.x`) release\n\n - a semver range (e.g. `2.x`) -> the most recent version satisfying the range (limited to berry releases)\n\n - a semver version (e.g. `2.4.1`, `1.22.1`)\n\n - a local file referenced through either a relative or absolute path\n\n - `self` -> the version used to invoke the command\n ",examples:[["Download the latest release from the Yarn repository","$0 set version latest"],["Download the latest canary release from the Yarn repository","$0 set version canary"],["Download the latest classic release from the Yarn repository","$0 set version classic"],["Download the most recent Yarn 3 build","$0 set version 3.x"],["Download a specific Yarn 2 build","$0 set version 2.0.0-rc.30"],["Switch back to a specific Yarn 1 release","$0 set version 1.22.1"],["Use a release from the local filesystem","$0 set version ./yarn.cjs"],["Use a release from a URL","$0 set version https://repo.yarnpkg.com/3.1.0/packages/yarnpkg-cli/bin/yarn.js"],["Download the version used to invoke the command","$0 set version self"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);if(this.onlyIfNeeded&&r.get("yarnPath")){let f=r.sources.get("yarnPath");if(!f)throw new Error("Assertion failed: Expected 'yarnPath' to have a source");let p=r.projectCwd??r.startingCwd;if(K.contains(p,f))return 0}let s=()=>{if(typeof An>"u")throw new st("The --install flag can only be used without explicit version specifier from the Yarn CLI");return`file://${process.argv[1]}`},a,n=(f,p)=>({version:p,url:f.replace(/\{\}/g,p)});if(this.version==="self")a={url:s(),version:An??"self"};else if(this.version==="latest"||this.version==="berry"||this.version==="stable")a=n("https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js",await Xv(r,"stable"));else if(this.version==="canary")a=n("https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js",await Xv(r,"canary"));else if(this.version==="classic")a={url:"https://classic.yarnpkg.com/latest.js",version:"classic"};else if(this.version.match(/^https?:/))a={url:this.version,version:"remote"};else if(this.version.match(/^\.{0,2}[\\/]/)||fe.isAbsolute(this.version))a={url:`file://${K.resolve(fe.toPortablePath(this.version))}`,version:"file"};else if(Fr.satisfiesWithPrereleases(this.version,">=2.0.0"))a=n("https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js",this.version);else if(Fr.satisfiesWithPrereleases(this.version,"^0.x || ^1.x"))a=n("https://github.com/yarnpkg/yarn/releases/download/v{}/yarn-{}.js",this.version);else if(Fr.validRange(this.version))a=n("https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js",await oot(r,this.version));else throw new st(`Invalid version descriptor "${this.version}"`);return(await Ot.start({configuration:r,stdout:this.context.stdout,includeLogs:!this.context.quiet},async f=>{let p=async()=>{let h="file://";return a.url.startsWith(h)?(f.reportInfo(0,`Retrieving ${pe.pretty(r,a.url,pe.Type.PATH)}`),await le.readFilePromise(a.url.slice(h.length))):(f.reportInfo(0,`Downloading ${pe.pretty(r,a.url,pe.Type.URL)}`),await nn.get(a.url,{configuration:r}))};await h5(r,a.version,p,{report:f,useYarnPath:this.useYarnPath})})).exitCode()}};async function oot(e,t){let s=(await nn.get("https://repo.yarnpkg.com/tags",{configuration:e,jsonResponse:!0})).tags.filter(a=>Fr.satisfiesWithPrereleases(a,t));if(s.length===0)throw new st(`No matching release found for range ${pe.pretty(e,t,pe.Type.RANGE)}.`);return s[0]}async function Xv(e,t){let r=await nn.get("https://repo.yarnpkg.com/tags",{configuration:e,jsonResponse:!0});if(!r.latest[t])throw new st(`Tag ${pe.pretty(e,t,pe.Type.RANGE)} not found`);return r.latest[t]}async function h5(e,t,r,{report:s,useYarnPath:a}){let n,c=async()=>(typeof n>"u"&&(n=await r()),n);if(t===null){let te=await c();await le.mktempPromise(async ie=>{let ue=K.join(ie,"yarn.cjs");await le.writeFilePromise(ue,te);let{stdout:ae}=await qr.execvp(process.execPath,[fe.fromPortablePath(ue),"--version"],{cwd:ie,env:{...e.env,YARN_IGNORE_PATH:"1"}});if(t=ae.trim(),!ide.default.valid(t))throw new Error(`Invalid semver version. ${pe.pretty(e,"yarn --version",pe.Type.CODE)} returned: -${t}`)})}let f=e.projectCwd??e.startingCwd,p=K.resolve(f,".yarn/releases"),h=K.resolve(p,`yarn-${t}.cjs`),E=K.relative(e.startingCwd,h),C=Ge.isTaggedYarnVersion(t),S=e.get("yarnPath"),x=!C,I=x||!!S||!!a;if(a===!1){if(x)throw new _t(0,"You explicitly opted out of yarnPath usage in your command line, but the version you specified cannot be represented by Corepack");I=!1}else!I&&!process.env.COREPACK_ROOT&&(s.reportWarning(0,`You don't seem to have ${pe.applyHyperlink(e,"Corepack","https://nodejs.org/api/corepack.html")} enabled; we'll have to rely on ${pe.applyHyperlink(e,"yarnPath","https://yarnpkg.com/configuration/yarnrc#yarnPath")} instead`),I=!0);if(I){let te=await c();s.reportInfo(0,`Saving the new release in ${pe.pretty(e,E,"magenta")}`),await le.removePromise(K.dirname(h)),await le.mkdirPromise(K.dirname(h),{recursive:!0}),await le.writeFilePromise(h,te,{mode:493}),await ze.updateConfiguration(f,{yarnPath:K.relative(f,h)})}else await le.removePromise(K.dirname(h)),await ze.updateConfiguration(f,{yarnPath:ze.deleteProperty});let T=await Ut.tryFind(f)||new Ut;T.packageManager=`yarn@${C?t:await Xv(e,"stable")}`;let O={};T.exportTo(O);let U=K.join(f,Ut.fileName),Y=`${JSON.stringify(O,null,T.indent)} -`;return await le.changeFilePromise(U,Y,{automaticNewlines:!0}),{bundleVersion:t}}function sde(e){return Br[jx(e)]}var aot=/## (?YN[0-9]{4}) - `(?[A-Z_]+)`\n\n(?
(?:.(?!##))+)/gs;async function lot(e){let r=`https://repo.yarnpkg.com/${Ge.isTaggedYarnVersion(An)?An:await Xv(e,"canary")}/packages/docusaurus/docs/advanced/01-general-reference/error-codes.mdx`,s=await nn.get(r,{configuration:e});return new Map(Array.from(s.toString().matchAll(aot),({groups:a})=>{if(!a)throw new Error("Assertion failed: Expected the match to have been successful");let n=sde(a.code);if(a.name!==n)throw new Error(`Assertion failed: Invalid error code data: Expected "${a.name}" to be named "${n}"`);return[a.code,a.details]}))}var fC=class extends At{constructor(){super(...arguments);this.code=he.String({required:!1,validator:WB(SE(),[qB(/^YN[0-9]{4}$/)])});this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["explain"]]}static{this.usage=at.Usage({description:"explain an error code",details:` - When the code argument is specified, this command prints its name and its details. - - When used without arguments, this command lists all error codes and their names. - `,examples:[["Explain an error code","$0 explain YN0006"],["List all error codes","$0 explain"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);if(typeof this.code<"u"){let s=sde(this.code),a=pe.pretty(r,s,pe.Type.CODE),n=this.cli.format().header(`${this.code} - ${a}`),f=(await lot(r)).get(this.code),p=typeof f<"u"?pe.jsonOrPretty(this.json,r,pe.tuple(pe.Type.MARKDOWN,{text:f,format:this.cli.format(),paragraphs:!0})):`This error code does not have a description. - -You can help us by editing this page on GitHub \u{1F642}: -${pe.jsonOrPretty(this.json,r,pe.tuple(pe.Type.URL,"https://github.com/yarnpkg/berry/blob/master/packages/docusaurus/docs/advanced/01-general-reference/error-codes.mdx"))} -`;this.json?this.context.stdout.write(`${JSON.stringify({code:this.code,name:s,details:p})} -`):this.context.stdout.write(`${n} - -${p} -`)}else{let s={children:Ge.mapAndFilter(Object.entries(Br),([a,n])=>Number.isNaN(Number(a))?Ge.mapAndFilter.skip:{label:Kf(Number(a)),value:pe.tuple(pe.Type.CODE,n)})};Rs.emitTree(s,{configuration:r,stdout:this.context.stdout,json:this.json})}}};qe();Dt();Vt();var ode=et(Jo()),AC=class extends At{constructor(){super(...arguments);this.all=he.Boolean("-A,--all",!1,{description:"Print versions of a package from the whole project"});this.recursive=he.Boolean("-R,--recursive",!1,{description:"Print information for all packages, including transitive dependencies"});this.extra=he.Array("-X,--extra",[],{description:"An array of requests of extra data provided by plugins"});this.cache=he.Boolean("--cache",!1,{description:"Print information about the cache entry of a package (path, size, checksum)"});this.dependents=he.Boolean("--dependents",!1,{description:"Print all dependents for each matching package"});this.manifest=he.Boolean("--manifest",!1,{description:"Print data obtained by looking at the package archive (license, homepage, ...)"});this.nameOnly=he.Boolean("--name-only",!1,{description:"Only print the name for the matching packages"});this.virtuals=he.Boolean("--virtuals",!1,{description:"Print each instance of the virtual packages"});this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.patterns=he.Rest()}static{this.paths=[["info"]]}static{this.usage=at.Usage({description:"see information related to packages",details:"\n This command prints various information related to the specified packages, accepting glob patterns.\n\n By default, if the locator reference is missing, Yarn will default to print the information about all the matching direct dependencies of the package for the active workspace. To instead print all versions of the package that are direct dependencies of any of your workspaces, use the `-A,--all` flag. Adding the `-R,--recursive` flag will also report transitive dependencies.\n\n Some fields will be hidden by default in order to keep the output readable, but can be selectively displayed by using additional options (`--dependents`, `--manifest`, `--virtuals`, ...) described in the option descriptions.\n\n Note that this command will only print the information directly related to the selected packages - if you wish to know why the package is there in the first place, use `yarn why` which will do just that (it also provides a `-R,--recursive` flag that may be of some help).\n ",examples:[["Show information about Lodash","$0 info lodash"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Jr.find(r);if(!a&&!this.all)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let c=new Set(this.extra);this.cache&&c.add("cache"),this.dependents&&c.add("dependents"),this.manifest&&c.add("manifest");let f=(ie,{recursive:ue})=>{let ae=ie.anchoredLocator.locatorHash,de=new Map,Ae=[ae];for(;Ae.length>0;){let Ce=Ae.shift();if(de.has(Ce))continue;let Ee=s.storedPackages.get(Ce);if(typeof Ee>"u")throw new Error("Assertion failed: Expected the package to be registered");if(de.set(Ce,Ee),j.isVirtualLocator(Ee)&&Ae.push(j.devirtualizeLocator(Ee).locatorHash),!(!ue&&Ce!==ae))for(let g of Ee.dependencies.values()){let Se=s.storedResolutions.get(g.descriptorHash);if(typeof Se>"u")throw new Error("Assertion failed: Expected the resolution to be registered");Ae.push(Se)}}return de.values()},p=({recursive:ie})=>{let ue=new Map;for(let ae of s.workspaces)for(let de of f(ae,{recursive:ie}))ue.set(de.locatorHash,de);return ue.values()},h=({all:ie,recursive:ue})=>ie&&ue?s.storedPackages.values():ie?p({recursive:ue}):f(a,{recursive:ue}),E=({all:ie,recursive:ue})=>{let ae=h({all:ie,recursive:ue}),de=this.patterns.map(Ee=>{let g=j.parseLocator(Ee),Se=ode.default.makeRe(j.stringifyIdent(g)),Be=j.isVirtualLocator(g),me=Be?j.devirtualizeLocator(g):g;return ce=>{let X=j.stringifyIdent(ce);if(!Se.test(X))return!1;if(g.reference==="unknown")return!0;let De=j.isVirtualLocator(ce),Qe=De?j.devirtualizeLocator(ce):ce;return!(Be&&De&&g.reference!==ce.reference||me.reference!==Qe.reference)}}),Ae=Ge.sortMap([...ae],Ee=>j.stringifyLocator(Ee));return{selection:Ae.filter(Ee=>de.length===0||de.some(g=>g(Ee))),sortedLookup:Ae}},{selection:C,sortedLookup:S}=E({all:this.all,recursive:this.recursive});if(C.length===0)throw new st("No package matched your request");let x=new Map;if(this.dependents)for(let ie of S)for(let ue of ie.dependencies.values()){let ae=s.storedResolutions.get(ue.descriptorHash);if(typeof ae>"u")throw new Error("Assertion failed: Expected the resolution to be registered");Ge.getArrayWithDefault(x,ae).push(ie)}let I=new Map;for(let ie of S){if(!j.isVirtualLocator(ie))continue;let ue=j.devirtualizeLocator(ie);Ge.getArrayWithDefault(I,ue.locatorHash).push(ie)}let T={},O={children:T},U=r.makeFetcher(),Y={project:s,fetcher:U,cache:n,checksums:s.storedChecksums,report:new ki,cacheOptions:{skipIntegrityCheck:!0}},te=[async(ie,ue,ae)=>{if(!ue.has("manifest"))return;let de=await U.fetch(ie,Y),Ae;try{Ae=await Ut.find(de.prefixPath,{baseFs:de.packageFs})}finally{de.releaseFs?.()}ae("Manifest",{License:pe.tuple(pe.Type.NO_HINT,Ae.license),Homepage:pe.tuple(pe.Type.URL,Ae.raw.homepage??null)})},async(ie,ue,ae)=>{if(!ue.has("cache"))return;let de=s.storedChecksums.get(ie.locatorHash)??null,Ae=n.getLocatorPath(ie,de),Ce;if(Ae!==null)try{Ce=await le.statPromise(Ae)}catch{}let Ee=typeof Ce<"u"?[Ce.size,pe.Type.SIZE]:void 0;ae("Cache",{Checksum:pe.tuple(pe.Type.NO_HINT,de),Path:pe.tuple(pe.Type.PATH,Ae),Size:Ee})}];for(let ie of C){let ue=j.isVirtualLocator(ie);if(!this.virtuals&&ue)continue;let ae={},de={value:[ie,pe.Type.LOCATOR],children:ae};if(T[j.stringifyLocator(ie)]=de,this.nameOnly){delete de.children;continue}let Ae=I.get(ie.locatorHash);typeof Ae<"u"&&(ae.Instances={label:"Instances",value:pe.tuple(pe.Type.NUMBER,Ae.length)}),ae.Version={label:"Version",value:pe.tuple(pe.Type.NO_HINT,ie.version)};let Ce=(g,Se)=>{let Be={};if(ae[g]=Be,Array.isArray(Se))Be.children=Se.map(me=>({value:me}));else{let me={};Be.children=me;for(let[ce,X]of Object.entries(Se))typeof X>"u"||(me[ce]={label:ce,value:X})}};if(!ue){for(let g of te)await g(ie,c,Ce);await r.triggerHook(g=>g.fetchPackageInfo,ie,c,Ce)}ie.bin.size>0&&!ue&&Ce("Exported Binaries",[...ie.bin.keys()].map(g=>pe.tuple(pe.Type.PATH,g)));let Ee=x.get(ie.locatorHash);typeof Ee<"u"&&Ee.length>0&&Ce("Dependents",Ee.map(g=>pe.tuple(pe.Type.LOCATOR,g))),ie.dependencies.size>0&&!ue&&Ce("Dependencies",[...ie.dependencies.values()].map(g=>{let Se=s.storedResolutions.get(g.descriptorHash),Be=typeof Se<"u"?s.storedPackages.get(Se)??null:null;return pe.tuple(pe.Type.RESOLUTION,{descriptor:g,locator:Be})})),ie.peerDependencies.size>0&&ue&&Ce("Peer dependencies",[...ie.peerDependencies.values()].map(g=>{let Se=ie.dependencies.get(g.identHash),Be=typeof Se<"u"?s.storedResolutions.get(Se.descriptorHash)??null:null,me=Be!==null?s.storedPackages.get(Be)??null:null;return pe.tuple(pe.Type.RESOLUTION,{descriptor:g,locator:me})}))}Rs.emitTree(O,{configuration:r,json:this.json,stdout:this.context.stdout,separators:this.nameOnly?0:2})}};qe();Dt();Bc();var HT=et(Rd());Vt();var g5=et(pi());ul();var cot=[{selector:e=>e===-1,name:"nodeLinker",value:"node-modules"},{selector:e=>e!==-1&&e<8,name:"enableGlobalCache",value:!1},{selector:e=>e!==-1&&e<8,name:"compressionLevel",value:"mixed"}],pC=class extends At{constructor(){super(...arguments);this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.immutable=he.Boolean("--immutable",{description:"Abort with an error exit code if the lockfile was to be modified"});this.immutableCache=he.Boolean("--immutable-cache",{description:"Abort with an error exit code if the cache folder was to be modified"});this.refreshLockfile=he.Boolean("--refresh-lockfile",{description:"Refresh the package metadata stored in the lockfile"});this.checkCache=he.Boolean("--check-cache",{description:"Always refetch the packages and ensure that their checksums are consistent"});this.checkResolutions=he.Boolean("--check-resolutions",{description:"Validates that the package resolutions are coherent"});this.inlineBuilds=he.Boolean("--inline-builds",{description:"Verbosely print the output of the build steps of dependencies"});this.mode=he.String("--mode",{description:"Change what artifacts installs generate",validator:ks(Na)});this.cacheFolder=he.String("--cache-folder",{hidden:!0});this.frozenLockfile=he.Boolean("--frozen-lockfile",{hidden:!0});this.ignoreEngines=he.Boolean("--ignore-engines",{hidden:!0});this.nonInteractive=he.Boolean("--non-interactive",{hidden:!0});this.preferOffline=he.Boolean("--prefer-offline",{hidden:!0});this.production=he.Boolean("--production",{hidden:!0});this.registry=he.String("--registry",{hidden:!0});this.silent=he.Boolean("--silent",{hidden:!0});this.networkTimeout=he.String("--network-timeout",{hidden:!0})}static{this.paths=[["install"],at.Default]}static{this.usage=at.Usage({description:"install the project dependencies",details:"\n This command sets up your project if needed. The installation is split into four different steps that each have their own characteristics:\n\n - **Resolution:** First the package manager will resolve your dependencies. The exact way a dependency version is privileged over another isn't standardized outside of the regular semver guarantees. If a package doesn't resolve to what you would expect, check that all dependencies are correctly declared (also check our website for more information: ).\n\n - **Fetch:** Then we download all the dependencies if needed, and make sure that they're all stored within our cache (check the value of `cacheFolder` in `yarn config` to see where the cache files are stored).\n\n - **Link:** Then we send the dependency tree information to internal plugins tasked with writing them on the disk in some form (for example by generating the `.pnp.cjs` file you might know).\n\n - **Build:** Once the dependency tree has been written on the disk, the package manager will now be free to run the build scripts for all packages that might need it, in a topological order compatible with the way they depend on one another. See https://yarnpkg.com/advanced/lifecycle-scripts for detail.\n\n Note that running this command is not part of the recommended workflow. Yarn supports zero-installs, which means that as long as you store your cache and your `.pnp.cjs` file inside your repository, everything will work without requiring any install right after cloning your repository or switching branches.\n\n If the `--immutable` option is set (defaults to true on CI), Yarn will abort with an error exit code if the lockfile was to be modified (other paths can be added using the `immutablePatterns` configuration setting). For backward compatibility we offer an alias under the name of `--frozen-lockfile`, but it will be removed in a later release.\n\n If the `--immutable-cache` option is set, Yarn will abort with an error exit code if the cache folder was to be modified (either because files would be added, or because they'd be removed).\n\n If the `--refresh-lockfile` option is set, Yarn will keep the same resolution for the packages currently in the lockfile but will refresh their metadata. If used together with `--immutable`, it can validate that the lockfile information are consistent. This flag is enabled by default when Yarn detects it runs within a pull request context.\n\n If the `--check-cache` option is set, Yarn will always refetch the packages and will ensure that their checksum matches what's 1/ described in the lockfile 2/ inside the existing cache files (if present). This is recommended as part of your CI workflow if you're both following the Zero-Installs model and accepting PRs from third-parties, as they'd otherwise have the ability to alter the checked-in packages before submitting them.\n\n If the `--inline-builds` option is set, Yarn will verbosely print the output of the build steps of your dependencies (instead of writing them into individual files). This is likely useful mostly for debug purposes only when using Docker-like environments.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n ",examples:[["Install the project","$0 install"],["Validate a project when using Zero-Installs","$0 install --immutable --immutable-cache"],["Validate a project when using Zero-Installs (slightly safer if you accept external PRs)","$0 install --immutable --immutable-cache --check-cache"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);typeof this.inlineBuilds<"u"&&r.useWithSource("",{enableInlineBuilds:this.inlineBuilds},r.startingCwd,{overwrite:!0});let s=!!process.env.FUNCTION_TARGET||!!process.env.GOOGLE_RUNTIME,a=await PI({configuration:r,stdout:this.context.stdout},[{option:this.ignoreEngines,message:"The --ignore-engines option is deprecated; engine checking isn't a core feature anymore",error:!HT.default.VERCEL},{option:this.registry,message:"The --registry option is deprecated; prefer setting npmRegistryServer in your .yarnrc.yml file"},{option:this.preferOffline,message:"The --prefer-offline flag is deprecated; use the --cached flag with 'yarn add' instead",error:!HT.default.VERCEL},{option:this.production,message:"The --production option is deprecated on 'install'; use 'yarn workspaces focus' instead",error:!0},{option:this.nonInteractive,message:"The --non-interactive option is deprecated",error:!s},{option:this.frozenLockfile,message:"The --frozen-lockfile option is deprecated; use --immutable and/or --immutable-cache instead",callback:()=>this.immutable=this.frozenLockfile},{option:this.cacheFolder,message:"The cache-folder option has been deprecated; use rc settings instead",error:!HT.default.NETLIFY}]);if(a!==null)return a;let n=this.mode==="update-lockfile";if(n&&(this.immutable||this.immutableCache))throw new st(`${pe.pretty(r,"--immutable",pe.Type.CODE)} and ${pe.pretty(r,"--immutable-cache",pe.Type.CODE)} cannot be used with ${pe.pretty(r,"--mode=update-lockfile",pe.Type.CODE)}`);let c=(this.immutable??r.get("enableImmutableInstalls"))&&!n,f=this.immutableCache&&!n;if(r.projectCwd!==null){let T=await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async O=>{let U=!1;await Aot(r,c)&&(O.reportInfo(48,"Automatically removed core plugins that are now builtins \u{1F44D}"),U=!0),await fot(r,c)&&(O.reportInfo(48,"Automatically fixed merge conflicts \u{1F44D}"),U=!0),U&&O.reportSeparator()});if(T.hasErrors())return T.exitCode()}if(r.projectCwd!==null){let T=await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async O=>{if(ze.telemetry?.isNew)ze.telemetry.commitTips(),O.reportInfo(65,"Yarn will periodically gather anonymous telemetry: https://yarnpkg.com/advanced/telemetry"),O.reportInfo(65,`Run ${pe.pretty(r,"yarn config set --home enableTelemetry 0",pe.Type.CODE)} to disable`),O.reportSeparator();else if(ze.telemetry?.shouldShowTips){let U=await nn.get("https://repo.yarnpkg.com/tags",{configuration:r,jsonResponse:!0}).catch(()=>null);if(U!==null){let Y=null;if(An!==null){let ie=g5.default.prerelease(An)?"canary":"stable",ue=U.latest[ie];ue!==null&&g5.default.gt(ue,An)&&(Y=[ie,ue])}if(Y)ze.telemetry.commitTips(),O.reportInfo(88,`${pe.applyStyle(r,`A new ${Y[0]} version of Yarn is available:`,pe.Style.BOLD)} ${j.prettyReference(r,Y[1])}!`),O.reportInfo(88,`Upgrade now by running ${pe.pretty(r,`yarn set version ${Y[1]}`,pe.Type.CODE)}`),O.reportSeparator();else{let te=ze.telemetry.selectTip(U.tips);te&&(O.reportInfo(89,pe.pretty(r,te.message,pe.Type.MARKDOWN_INLINE)),te.url&&O.reportInfo(89,`Learn more at ${te.url}`),O.reportSeparator())}}}});if(T.hasErrors())return T.exitCode()}let{project:p,workspace:h}=await Rt.find(r,this.context.cwd),E=p.lockfileLastVersion;if(E!==null){let T=await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async O=>{let U={};for(let Y of cot)Y.selector(E)&&typeof r.sources.get(Y.name)>"u"&&(r.use("",{[Y.name]:Y.value},p.cwd,{overwrite:!0}),U[Y.name]=Y.value);Object.keys(U).length>0&&(await ze.updateConfiguration(p.cwd,U),O.reportInfo(87,"Migrated your project to the latest Yarn version \u{1F680}"),O.reportSeparator())});if(T.hasErrors())return T.exitCode()}let C=await Jr.find(r,{immutable:f,check:this.checkCache});if(!h)throw new ar(p.cwd,this.context.cwd);await p.restoreInstallState({restoreResolutions:!1});let S=r.get("enableHardenedMode");S&&typeof r.sources.get("enableHardenedMode")>"u"&&await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async T=>{T.reportWarning(0,"Yarn detected that the current workflow is executed from a public pull request. For safety the hardened mode has been enabled."),T.reportWarning(0,`It will prevent malicious lockfile manipulations, in exchange for a slower install time. You can opt-out if necessary; check our ${pe.applyHyperlink(r,"documentation","https://yarnpkg.com/features/security#hardened-mode")} for more details.`),T.reportSeparator()}),(this.refreshLockfile??S)&&(p.lockfileNeedsRefresh=!0);let x=this.checkResolutions??S;return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,forceSectionAlignment:!0,includeLogs:!0,includeVersion:!0},async T=>{await p.install({cache:C,report:T,immutable:c,checkResolutions:x,mode:this.mode})})).exitCode()}},uot="<<<<<<<";async function fot(e,t){if(!e.projectCwd)return!1;let r=K.join(e.projectCwd,Er.lockfile);if(!await le.existsPromise(r)||!(await le.readFilePromise(r,"utf8")).includes(uot))return!1;if(t)throw new _t(47,"Cannot autofix a lockfile when running an immutable install");let a=await qr.execvp("git",["rev-parse","MERGE_HEAD","HEAD"],{cwd:e.projectCwd});if(a.code!==0&&(a=await qr.execvp("git",["rev-parse","REBASE_HEAD","HEAD"],{cwd:e.projectCwd})),a.code!==0&&(a=await qr.execvp("git",["rev-parse","CHERRY_PICK_HEAD","HEAD"],{cwd:e.projectCwd})),a.code!==0)throw new _t(83,"Git returned an error when trying to find the commits pertaining to the conflict");let n=await Promise.all(a.stdout.trim().split(/\n/).map(async f=>{let p=await qr.execvp("git",["show",`${f}:./${Er.lockfile}`],{cwd:e.projectCwd});if(p.code!==0)throw new _t(83,`Git returned an error when trying to access the lockfile content in ${f}`);try{return cs(p.stdout)}catch{throw new _t(46,"A variant of the conflicting lockfile failed to parse")}}));n=n.filter(f=>!!f.__metadata);for(let f of n){if(f.__metadata.version<7)for(let p of Object.keys(f)){if(p==="__metadata")continue;let h=j.parseDescriptor(p,!0),E=e.normalizeDependency(h),C=j.stringifyDescriptor(E);C!==p&&(f[C]=f[p],delete f[p])}for(let p of Object.keys(f)){if(p==="__metadata")continue;let h=f[p].checksum;typeof h>"u"||h.includes("/")||(f[p].checksum=`${f.__metadata.cacheKey}/${h}`)}}let c=Object.assign({},...n);c.__metadata.version=`${Math.min(...n.map(f=>parseInt(f.__metadata.version??0)))}`,c.__metadata.cacheKey="merged";for(let[f,p]of Object.entries(c))typeof p=="string"&&delete c[f];return await le.changeFilePromise(r,cl(c),{automaticNewlines:!0}),!0}async function Aot(e,t){if(!e.projectCwd)return!1;let r=[],s=K.join(e.projectCwd,".yarn/plugins/@yarnpkg");return await ze.updateConfiguration(e.projectCwd,{plugins:n=>{if(!Array.isArray(n))return n;let c=n.filter(f=>{if(!f.path)return!0;let p=K.resolve(e.projectCwd,f.path),h=X2.has(f.spec)&&K.contains(s,p);return h&&r.push(p),!h});return c.length===0?ze.deleteProperty:c.length===n.length?n:c}},{immutable:t})?(await Promise.all(r.map(async n=>{await le.removePromise(n)})),!0):!1}qe();Dt();Vt();var hC=class extends At{constructor(){super(...arguments);this.all=he.Boolean("-A,--all",!1,{description:"Link all workspaces belonging to the target projects to the current one"});this.private=he.Boolean("-p,--private",!1,{description:"Also link private workspaces belonging to the target projects to the current one"});this.relative=he.Boolean("-r,--relative",!1,{description:"Link workspaces using relative paths instead of absolute paths"});this.destinations=he.Rest()}static{this.paths=[["link"]]}static{this.usage=at.Usage({description:"connect the local project to another one",details:"\n This command will set a new `resolutions` field in the project-level manifest and point it to the workspace at the specified location (even if part of another project).\n ",examples:[["Register one or more remote workspaces for use in the current project","$0 link ~/ts-loader ~/jest"],["Register all workspaces from a remote project for use in the current project","$0 link ~/jest --all"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Jr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=s.topLevelWorkspace,f=[];for(let p of this.destinations){let h=K.resolve(this.context.cwd,fe.toPortablePath(p)),E=await ze.find(h,this.context.plugins,{useRc:!1,strict:!1}),{project:C,workspace:S}=await Rt.find(E,h);if(s.cwd===C.cwd)throw new st(`Invalid destination '${p}'; Can't link the project to itself`);if(!S)throw new ar(C.cwd,h);if(this.all){let x=!1;for(let I of C.workspaces)I.manifest.name&&(!I.manifest.private||this.private)&&(f.push(I),x=!0);if(!x)throw new st(`No workspace found to be linked in the target project: ${p}`)}else{if(!S.manifest.name)throw new st(`The target workspace at '${p}' doesn't have a name and thus cannot be linked`);if(S.manifest.private&&!this.private)throw new st(`The target workspace at '${p}' is marked private - use the --private flag to link it anyway`);f.push(S)}}for(let p of f){let h=j.stringifyIdent(p.anchoredLocator),E=this.relative?K.relative(s.cwd,p.cwd):p.cwd;c.manifest.resolutions.push({pattern:{descriptor:{fullName:h}},reference:`portal:${E}`})}return await s.installWithNewReport({stdout:this.context.stdout},{cache:n})}};Vt();var gC=class extends At{constructor(){super(...arguments);this.args=he.Proxy()}static{this.paths=[["node"]]}static{this.usage=at.Usage({description:"run node with the hook already setup",details:` - This command simply runs Node. It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment). - - The Node process will use the exact same version of Node as the one used to run Yarn itself, which might be a good way to ensure that your commands always use a consistent Node version. - `,examples:[["Run a Node script","$0 node ./my-script.js"]]})}async execute(){return this.cli.run(["exec","node",...this.args])}};qe();Vt();var dC=class extends At{constructor(){super(...arguments);this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["plugin","check"]]}static{this.usage=at.Usage({category:"Plugin-related commands",description:"find all third-party plugins that differ from their own spec",details:` - Check only the plugins from https. - - If this command detects any plugin differences in the CI environment, it will throw an error. - `,examples:[["find all third-party plugins that differ from their own spec","$0 plugin check"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=await ze.findRcFiles(this.context.cwd);return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async n=>{for(let c of s)if(c.data?.plugins)for(let f of c.data.plugins){if(!f.checksum||!f.spec.match(/^https?:/))continue;let p=await nn.get(f.spec,{configuration:r}),h=Ln.makeHash(p);if(f.checksum===h)continue;let E=pe.pretty(r,f.path,pe.Type.PATH),C=pe.pretty(r,f.spec,pe.Type.URL),S=`${E} is different from the file provided by ${C}`;n.reportJson({...f,newChecksum:h}),n.reportError(0,S)}})).exitCode()}};qe();qe();Dt();Vt();var fde=Ie("os");qe();Dt();Vt();var ade=Ie("os");qe();Bc();Vt();var pot="https://raw.githubusercontent.com/yarnpkg/berry/master/plugins.yml";async function Pm(e,t){let r=await nn.get(pot,{configuration:e}),s=cs(r.toString());return Object.fromEntries(Object.entries(s).filter(([a,n])=>!t||Fr.satisfiesWithPrereleases(t,n.range??"<4.0.0-rc.1")))}var mC=class extends At{constructor(){super(...arguments);this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["plugin","list"]]}static{this.usage=at.Usage({category:"Plugin-related commands",description:"list the available official plugins",details:"\n This command prints the plugins available directly from the Yarn repository. Only those plugins can be referenced by name in `yarn plugin import`.\n ",examples:[["List the official plugins","$0 plugin list"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async a=>{let n=await Pm(r,An);for(let[c,{experimental:f,...p}]of Object.entries(n)){let h=c;f&&(h+=" [experimental]"),a.reportJson({name:c,experimental:f,...p}),a.reportInfo(null,h)}})).exitCode()}};var hot=/^[0-9]+$/,got=process.platform==="win32";function lde(e){return hot.test(e)?`pull/${e}/head`:e}var dot=({repository:e,branch:t},r)=>[["git","init",fe.fromPortablePath(r)],["git","remote","add","origin",e],["git","fetch","origin","--depth=1",lde(t)],["git","reset","--hard","FETCH_HEAD"]],mot=({branch:e})=>[["git","fetch","origin","--depth=1",lde(e),"--force"],["git","reset","--hard","FETCH_HEAD"],["git","clean","-dfx","-e","packages/yarnpkg-cli/bundles"]],yot=({plugins:e,noMinify:t},r,s)=>[["yarn","build:cli",...new Array().concat(...e.map(a=>["--plugin",K.resolve(s,a)])),...t?["--no-minify"]:[],"|"],[got?"move":"mv","packages/yarnpkg-cli/bundles/yarn.js",fe.fromPortablePath(r),"|"]],yC=class extends At{constructor(){super(...arguments);this.installPath=he.String("--path",{description:"The path where the repository should be cloned to"});this.repository=he.String("--repository","https://github.com/yarnpkg/berry.git",{description:"The repository that should be cloned"});this.branch=he.String("--branch","master",{description:"The branch of the repository that should be cloned"});this.plugins=he.Array("--plugin",[],{description:"An array of additional plugins that should be included in the bundle"});this.dryRun=he.Boolean("-n,--dry-run",!1,{description:"If set, the bundle will be built but not added to the project"});this.noMinify=he.Boolean("--no-minify",!1,{description:"Build a bundle for development (debugging) - non-minified and non-mangled"});this.force=he.Boolean("-f,--force",!1,{description:"Always clone the repository instead of trying to fetch the latest commits"});this.skipPlugins=he.Boolean("--skip-plugins",!1,{description:"Skip updating the contrib plugins"})}static{this.paths=[["set","version","from","sources"]]}static{this.usage=at.Usage({description:"build Yarn from master",details:` - This command will clone the Yarn repository into a temporary folder, then build it. The resulting bundle will then be copied into the local project. - - By default, it also updates all contrib plugins to the same commit the bundle is built from. This behavior can be disabled by using the \`--skip-plugins\` flag. - `,examples:[["Build Yarn from master","$0 set version from sources"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Rt.find(r,this.context.cwd),a=typeof this.installPath<"u"?K.resolve(this.context.cwd,fe.toPortablePath(this.installPath)):K.resolve(fe.toPortablePath((0,ade.tmpdir)()),"yarnpkg-sources",Ln.makeHash(this.repository).slice(0,6));return(await Ot.start({configuration:r,stdout:this.context.stdout},async c=>{await d5(this,{configuration:r,report:c,target:a}),c.reportSeparator(),c.reportInfo(0,"Building a fresh bundle"),c.reportSeparator();let f=await qr.execvp("git",["rev-parse","--short","HEAD"],{cwd:a,strict:!0}),p=K.join(a,`packages/yarnpkg-cli/bundles/yarn-${f.stdout.trim()}.js`);le.existsSync(p)||(await $v(yot(this,p,a),{configuration:r,context:this.context,target:a}),c.reportSeparator());let h=await le.readFilePromise(p);if(!this.dryRun){let{bundleVersion:E}=await h5(r,null,async()=>h,{report:c});this.skipPlugins||await Eot(this,E,{project:s,report:c,target:a})}})).exitCode()}};async function $v(e,{configuration:t,context:r,target:s}){for(let[a,...n]of e){let c=n[n.length-1]==="|";if(c&&n.pop(),c)await qr.pipevp(a,n,{cwd:s,stdin:r.stdin,stdout:r.stdout,stderr:r.stderr,strict:!0});else{r.stdout.write(`${pe.pretty(t,` $ ${[a,...n].join(" ")}`,"grey")} -`);try{await qr.execvp(a,n,{cwd:s,strict:!0})}catch(f){throw r.stdout.write(f.stdout||f.stack),f}}}}async function d5(e,{configuration:t,report:r,target:s}){let a=!1;if(!e.force&&le.existsSync(K.join(s,".git"))){r.reportInfo(0,"Fetching the latest commits"),r.reportSeparator();try{await $v(mot(e),{configuration:t,context:e.context,target:s}),a=!0}catch{r.reportSeparator(),r.reportWarning(0,"Repository update failed; we'll try to regenerate it")}}a||(r.reportInfo(0,"Cloning the remote repository"),r.reportSeparator(),await le.removePromise(s),await le.mkdirPromise(s,{recursive:!0}),await $v(dot(e,s),{configuration:t,context:e.context,target:s}))}async function Eot(e,t,{project:r,report:s,target:a}){let n=await Pm(r.configuration,t),c=new Set(Object.keys(n));for(let f of r.configuration.plugins.keys())c.has(f)&&await m5(f,e,{project:r,report:s,target:a})}qe();qe();Dt();Vt();var cde=et(pi()),ude=Ie("vm");var EC=class extends At{constructor(){super(...arguments);this.name=he.String();this.checksum=he.Boolean("--checksum",!0,{description:"Whether to care if this plugin is modified"})}static{this.paths=[["plugin","import"]]}static{this.usage=at.Usage({category:"Plugin-related commands",description:"download a plugin",details:` - This command downloads the specified plugin from its remote location and updates the configuration to reference it in further CLI invocations. - - Three types of plugin references are accepted: - - - If the plugin is stored within the Yarn repository, it can be referenced by name. - - Third-party plugins can be referenced directly through their public urls. - - Local plugins can be referenced by their path on the disk. - - If the \`--no-checksum\` option is set, Yarn will no longer care if the plugin is modified. - - Plugins cannot be downloaded from the npm registry, and aren't allowed to have dependencies (they need to be bundled into a single file, possibly thanks to the \`@yarnpkg/builder\` package). - `,examples:[['Download and activate the "@yarnpkg/plugin-exec" plugin',"$0 plugin import @yarnpkg/plugin-exec"],['Download and activate the "@yarnpkg/plugin-exec" plugin (shorthand)',"$0 plugin import exec"],["Download and activate a community plugin","$0 plugin import https://example.org/path/to/plugin.js"],["Activate a local plugin","$0 plugin import ./path/to/plugin.js"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);return(await Ot.start({configuration:r,stdout:this.context.stdout},async a=>{let{project:n}=await Rt.find(r,this.context.cwd),c,f;if(this.name.match(/^\.{0,2}[\\/]/)||fe.isAbsolute(this.name)){let p=K.resolve(this.context.cwd,fe.toPortablePath(this.name));a.reportInfo(0,`Reading ${pe.pretty(r,p,pe.Type.PATH)}`),c=K.relative(n.cwd,p),f=await le.readFilePromise(p)}else{let p;if(this.name.match(/^https?:/)){try{new URL(this.name)}catch{throw new _t(52,`Plugin specifier "${this.name}" is neither a plugin name nor a valid url`)}c=this.name,p=this.name}else{let h=j.parseLocator(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-"));if(h.reference!=="unknown"&&!cde.default.valid(h.reference))throw new _t(0,"Official plugins only accept strict version references. Use an explicit URL if you wish to download them from another location.");let E=j.stringifyIdent(h),C=await Pm(r,An);if(!Object.hasOwn(C,E)){let S=`Couldn't find a plugin named ${j.prettyIdent(r,h)} on the remote registry. -`;throw r.plugins.has(E)?S+=`A plugin named ${j.prettyIdent(r,h)} is already installed; possibly attempting to import a built-in plugin.`:S+=`Note that only the plugins referenced on our website (${pe.pretty(r,"https://github.com/yarnpkg/berry/blob/master/plugins.yml",pe.Type.URL)}) can be referenced by their name; any other plugin will have to be referenced through its public url (for example ${pe.pretty(r,"https://github.com/yarnpkg/berry/raw/master/packages/plugin-typescript/bin/%40yarnpkg/plugin-typescript.js",pe.Type.URL)}).`,new _t(51,S)}c=E,p=C[E].url,h.reference!=="unknown"?p=p.replace(/\/master\//,`/${E}/${h.reference}/`):An!==null&&(p=p.replace(/\/master\//,`/@yarnpkg/cli/${An}/`))}a.reportInfo(0,`Downloading ${pe.pretty(r,p,"green")}`),f=await nn.get(p,{configuration:r})}await y5(c,f,{checksum:this.checksum,project:n,report:a})})).exitCode()}};async function y5(e,t,{checksum:r=!0,project:s,report:a}){let{configuration:n}=s,c={},f={exports:c};(0,ude.runInNewContext)(t.toString(),{module:f,exports:c});let h=`.yarn/plugins/${f.exports.name}.cjs`,E=K.resolve(s.cwd,h);a.reportInfo(0,`Saving the new plugin in ${pe.pretty(n,h,"magenta")}`),await le.mkdirPromise(K.dirname(E),{recursive:!0}),await le.writeFilePromise(E,t);let C={path:h,spec:e};r&&(C.checksum=Ln.makeHash(t)),await ze.addPlugin(s.cwd,[C])}var Iot=({pluginName:e,noMinify:t},r)=>[["yarn",`build:${e}`,...t?["--no-minify"]:[],"|"]],IC=class extends At{constructor(){super(...arguments);this.installPath=he.String("--path",{description:"The path where the repository should be cloned to"});this.repository=he.String("--repository","https://github.com/yarnpkg/berry.git",{description:"The repository that should be cloned"});this.branch=he.String("--branch","master",{description:"The branch of the repository that should be cloned"});this.noMinify=he.Boolean("--no-minify",!1,{description:"Build a plugin for development (debugging) - non-minified and non-mangled"});this.force=he.Boolean("-f,--force",!1,{description:"Always clone the repository instead of trying to fetch the latest commits"});this.name=he.String()}static{this.paths=[["plugin","import","from","sources"]]}static{this.usage=at.Usage({category:"Plugin-related commands",description:"build a plugin from sources",details:` - This command clones the Yarn repository into a temporary folder, builds the specified contrib plugin and updates the configuration to reference it in further CLI invocations. - - The plugins can be referenced by their short name if sourced from the official Yarn repository. - `,examples:[['Build and activate the "@yarnpkg/plugin-exec" plugin',"$0 plugin import from sources @yarnpkg/plugin-exec"],['Build and activate the "@yarnpkg/plugin-exec" plugin (shorthand)',"$0 plugin import from sources exec"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=typeof this.installPath<"u"?K.resolve(this.context.cwd,fe.toPortablePath(this.installPath)):K.resolve(fe.toPortablePath((0,fde.tmpdir)()),"yarnpkg-sources",Ln.makeHash(this.repository).slice(0,6));return(await Ot.start({configuration:r,stdout:this.context.stdout},async n=>{let{project:c}=await Rt.find(r,this.context.cwd),f=j.parseIdent(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-")),p=j.stringifyIdent(f),h=await Pm(r,An);if(!Object.hasOwn(h,p))throw new _t(51,`Couldn't find a plugin named "${p}" on the remote registry. Note that only the plugins referenced on our website (https://github.com/yarnpkg/berry/blob/master/plugins.yml) can be built and imported from sources.`);let E=p;await d5(this,{configuration:r,report:n,target:s}),await m5(E,this,{project:c,report:n,target:s})})).exitCode()}};async function m5(e,{context:t,noMinify:r},{project:s,report:a,target:n}){let c=e.replace(/@yarnpkg\//,""),{configuration:f}=s;a.reportSeparator(),a.reportInfo(0,`Building a fresh ${c}`),a.reportSeparator(),await $v(Iot({pluginName:c,noMinify:r},n),{configuration:f,context:t,target:n}),a.reportSeparator();let p=K.resolve(n,`packages/${c}/bundles/${e}.js`),h=await le.readFilePromise(p);await y5(e,h,{project:s,report:a})}qe();Dt();Vt();var CC=class extends At{constructor(){super(...arguments);this.name=he.String()}static{this.paths=[["plugin","remove"]]}static{this.usage=at.Usage({category:"Plugin-related commands",description:"remove a plugin",details:` - This command deletes the specified plugin from the .yarn/plugins folder and removes it from the configuration. - - **Note:** The plugins have to be referenced by their name property, which can be obtained using the \`yarn plugin runtime\` command. Shorthands are not allowed. - `,examples:[["Remove a plugin imported from the Yarn repository","$0 plugin remove @yarnpkg/plugin-typescript"],["Remove a plugin imported from a local file","$0 plugin remove my-local-plugin"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Rt.find(r,this.context.cwd);return(await Ot.start({configuration:r,stdout:this.context.stdout},async n=>{let c=this.name,f=j.parseIdent(c);if(!r.plugins.has(c))throw new st(`${j.prettyIdent(r,f)} isn't referenced by the current configuration`);let p=`.yarn/plugins/${c}.cjs`,h=K.resolve(s.cwd,p);le.existsSync(h)&&(n.reportInfo(0,`Removing ${pe.pretty(r,p,pe.Type.PATH)}...`),await le.removePromise(h)),n.reportInfo(0,"Updating the configuration..."),await ze.updateConfiguration(s.cwd,{plugins:E=>{if(!Array.isArray(E))return E;let C=E.filter(S=>S.path!==p);return C.length===0?ze.deleteProperty:C.length===E.length?E:C}})})).exitCode()}};qe();Vt();var wC=class extends At{constructor(){super(...arguments);this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["plugin","runtime"]]}static{this.usage=at.Usage({category:"Plugin-related commands",description:"list the active plugins",details:` - This command prints the currently active plugins. Will be displayed both builtin plugins and external plugins. - `,examples:[["List the currently active plugins","$0 plugin runtime"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async a=>{for(let n of r.plugins.keys()){let c=this.context.plugins.plugins.has(n),f=n;c&&(f+=" [builtin]"),a.reportJson({name:n,builtin:c}),a.reportInfo(null,`${f}`)}})).exitCode()}};qe();qe();Vt();var BC=class extends At{constructor(){super(...arguments);this.idents=he.Rest()}static{this.paths=[["rebuild"]]}static{this.usage=at.Usage({description:"rebuild the project's native packages",details:` - This command will automatically cause Yarn to forget about previous compilations of the given packages and to run them again. - - Note that while Yarn forgets the compilation, the previous artifacts aren't erased from the filesystem and may affect the next builds (in good or bad). To avoid this, you may remove the .yarn/unplugged folder, or any other relevant location where packages might have been stored (Yarn may offer a way to do that automatically in the future). - - By default all packages will be rebuilt, but you can filter the list by specifying the names of the packages you want to clear from memory. - `,examples:[["Rebuild all packages","$0 rebuild"],["Rebuild fsevents only","$0 rebuild fsevents"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Jr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);let c=new Set;for(let f of this.idents)c.add(j.parseIdent(f).identHash);if(await s.restoreInstallState({restoreResolutions:!1}),await s.resolveEverything({cache:n,report:new ki}),c.size>0)for(let f of s.storedPackages.values())c.has(f.identHash)&&(s.storedBuildState.delete(f.locatorHash),s.skippedBuilds.delete(f.locatorHash));else s.storedBuildState.clear(),s.skippedBuilds.clear();return await s.installWithNewReport({stdout:this.context.stdout,quiet:this.context.quiet},{cache:n})}};qe();qe();qe();Vt();var E5=et(Jo());ul();var vC=class extends At{constructor(){super(...arguments);this.all=he.Boolean("-A,--all",!1,{description:"Apply the operation to all workspaces from the current project"});this.mode=he.String("--mode",{description:"Change what artifacts installs generate",validator:ks(Na)});this.patterns=he.Rest()}static{this.paths=[["remove"]]}static{this.usage=at.Usage({description:"remove dependencies from the project",details:` - This command will remove the packages matching the specified patterns from the current workspace. - - If the \`--mode=\` option is set, Yarn will change which artifacts are generated. The modes currently supported are: - - - \`skip-build\` will not run the build scripts at all. Note that this is different from setting \`enableScripts\` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run. - - - \`update-lockfile\` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost. - - This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them. - `,examples:[["Remove a dependency from the current project","$0 remove lodash"],["Remove a dependency from all workspaces at once","$0 remove lodash --all"],["Remove all dependencies starting with `eslint-`","$0 remove 'eslint-*'"],["Remove all dependencies with the `@babel` scope","$0 remove '@babel/*'"],["Remove all dependencies matching `react-dom` or `react-helmet`","$0 remove 'react-{dom,helmet}'"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Jr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=this.all?s.workspaces:[a],f=["dependencies","devDependencies","peerDependencies"],p=[],h=!1,E=[];for(let I of this.patterns){let T=!1,O=j.parseIdent(I);for(let U of c){let Y=[...U.manifest.peerDependenciesMeta.keys()];for(let te of(0,E5.default)(Y,I))U.manifest.peerDependenciesMeta.delete(te),h=!0,T=!0;for(let te of f){let ie=U.manifest.getForScope(te),ue=[...ie.values()].map(ae=>j.stringifyIdent(ae));for(let ae of(0,E5.default)(ue,j.stringifyIdent(O))){let{identHash:de}=j.parseIdent(ae),Ae=ie.get(de);if(typeof Ae>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");U.manifest[te].delete(de),E.push([U,te,Ae]),h=!0,T=!0}}}T||p.push(I)}let C=p.length>1?"Patterns":"Pattern",S=p.length>1?"don't":"doesn't",x=this.all?"any":"this";if(p.length>0)throw new st(`${C} ${pe.prettyList(r,p,pe.Type.CODE)} ${S} match any packages referenced by ${x} workspace`);return h?(await r.triggerMultipleHooks(I=>I.afterWorkspaceDependencyRemoval,E),await s.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})):0}};qe();qe();Vt();var Ade=Ie("util"),SC=class extends At{constructor(){super(...arguments);this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["run"]]}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);return(await Ot.start({configuration:r,stdout:this.context.stdout,json:this.json},async c=>{let f=a.manifest.scripts,p=Ge.sortMap(f.keys(),C=>C),h={breakLength:1/0,colors:r.get("enableColors"),maxArrayLength:2},E=p.reduce((C,S)=>Math.max(C,S.length),0);for(let[C,S]of f.entries())c.reportInfo(null,`${C.padEnd(E," ")} ${(0,Ade.inspect)(S,h)}`),c.reportJson({name:C,script:S})})).exitCode()}};qe();qe();Vt();var DC=class extends At{constructor(){super(...arguments);this.inspect=he.String("--inspect",!1,{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"});this.inspectBrk=he.String("--inspect-brk",!1,{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"});this.topLevel=he.Boolean("-T,--top-level",!1,{description:"Check the root workspace for scripts and/or binaries instead of the current one"});this.binariesOnly=he.Boolean("-B,--binaries-only",!1,{description:"Ignore any user defined scripts and only check for binaries"});this.require=he.String("--require",{description:"Forwarded to the underlying Node process when executing a binary"});this.silent=he.Boolean("--silent",{hidden:!0});this.scriptName=he.String();this.args=he.Proxy()}static{this.paths=[["run"]]}static{this.usage=at.Usage({description:"run a script defined in the package.json",details:` - This command will run a tool. The exact tool that will be executed will depend on the current state of your workspace: - - - If the \`scripts\` field from your local package.json contains a matching script name, its definition will get executed. - - - Otherwise, if one of the local workspace's dependencies exposes a binary with a matching name, this binary will get executed. - - - Otherwise, if the specified name contains a colon character and if one of the workspaces in the project contains exactly one script with a matching name, then this script will get executed. - - Whatever happens, the cwd of the spawned process will be the workspace that declares the script (which makes it possible to call commands cross-workspaces using the third syntax). - `,examples:[["Run the tests from the local workspace","$0 run test"],['Same thing, but without the "run" keyword',"$0 test"],["Inspect Webpack while running","$0 run --inspect-brk webpack"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a,locator:n}=await Rt.find(r,this.context.cwd);await s.restoreInstallState();let c=this.topLevel?s.topLevelWorkspace.anchoredLocator:n;if(!this.binariesOnly&&await Cn.hasPackageScript(c,this.scriptName,{project:s}))return await Cn.executePackageScript(c,this.scriptName,this.args,{project:s,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});let f=await Cn.getPackageAccessibleBinaries(c,{project:s});if(f.get(this.scriptName)){let h=[];return this.inspect&&(typeof this.inspect=="string"?h.push(`--inspect=${this.inspect}`):h.push("--inspect")),this.inspectBrk&&(typeof this.inspectBrk=="string"?h.push(`--inspect-brk=${this.inspectBrk}`):h.push("--inspect-brk")),this.require&&h.push(`--require=${this.require}`),await Cn.executePackageAccessibleBinary(c,this.scriptName,this.args,{cwd:this.context.cwd,project:s,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,nodeArgs:h,packageAccessibleBinaries:f})}if(!this.topLevel&&!this.binariesOnly&&a&&this.scriptName.includes(":")){let E=(await Promise.all(s.workspaces.map(async C=>C.manifest.scripts.has(this.scriptName)?C:null))).filter(C=>C!==null);if(E.length===1)return await Cn.executeWorkspaceScript(E[0],this.scriptName,this.args,{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}if(this.topLevel)throw this.scriptName==="node-gyp"?new st(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${j.prettyLocator(r,n)}). This typically happens because some package depends on "node-gyp" to build itself, but didn't list it in their dependencies. To fix that, please run "yarn add node-gyp" into your top-level workspace. You also can open an issue on the repository of the specified package to suggest them to use an optional peer dependency.`):new st(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${j.prettyLocator(r,n)}).`);{if(this.scriptName==="global")throw new st("The 'yarn global' commands have been removed in 2.x - consider using 'yarn dlx' or a third-party plugin instead");let h=[this.scriptName].concat(this.args);for(let[E,C]of qI)for(let S of C)if(h.length>=S.length&&JSON.stringify(h.slice(0,S.length))===JSON.stringify(S))throw new st(`Couldn't find a script named "${this.scriptName}", but a matching command can be found in the ${E} plugin. You can install it with "yarn plugin import ${E}".`);throw new st(`Couldn't find a script named "${this.scriptName}".`)}}};qe();qe();Vt();var bC=class extends At{constructor(){super(...arguments);this.descriptor=he.String();this.resolution=he.String()}static{this.paths=[["set","resolution"]]}static{this.usage=at.Usage({description:"enforce a package resolution",details:'\n This command updates the resolution table so that `descriptor` is resolved by `resolution`.\n\n Note that by default this command only affect the current resolution table - meaning that this "manual override" will disappear if you remove the lockfile, or if the package disappear from the table. If you wish to make the enforced resolution persist whatever happens, edit the `resolutions` field in your top-level manifest.\n\n Note that no attempt is made at validating that `resolution` is a valid resolution entry for `descriptor`.\n ',examples:[["Force all instances of lodash@npm:^1.2.3 to resolve to 1.5.0","$0 set resolution lodash@npm:^1.2.3 npm:1.5.0"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Jr.find(r);if(await s.restoreInstallState({restoreResolutions:!1}),!a)throw new ar(s.cwd,this.context.cwd);let c=j.parseDescriptor(this.descriptor,!0),f=j.makeDescriptor(c,this.resolution);return s.storedDescriptors.set(c.descriptorHash,c),s.storedDescriptors.set(f.descriptorHash,f),s.resolutionAliases.set(c.descriptorHash,f.descriptorHash),await s.installWithNewReport({stdout:this.context.stdout},{cache:n})}};qe();Dt();Vt();var pde=et(Jo()),PC=class extends At{constructor(){super(...arguments);this.all=he.Boolean("-A,--all",!1,{description:"Unlink all workspaces belonging to the target project from the current one"});this.leadingArguments=he.Rest()}static{this.paths=[["unlink"]]}static{this.usage=at.Usage({description:"disconnect the local project from another one",details:` - This command will remove any resolutions in the project-level manifest that would have been added via a yarn link with similar arguments. - `,examples:[["Unregister a remote workspace in the current project","$0 unlink ~/ts-loader"],["Unregister all workspaces from a remote project in the current project","$0 unlink ~/jest --all"],["Unregister all previously linked workspaces","$0 unlink --all"],["Unregister all workspaces matching a glob","$0 unlink '@babel/*' 'pkg-{a,b}'"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Jr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);let c=s.topLevelWorkspace,f=new Set;if(this.leadingArguments.length===0&&this.all)for(let{pattern:p,reference:h}of c.manifest.resolutions)h.startsWith("portal:")&&f.add(p.descriptor.fullName);if(this.leadingArguments.length>0)for(let p of this.leadingArguments){let h=K.resolve(this.context.cwd,fe.toPortablePath(p));if(Ge.isPathLike(p)){let E=await ze.find(h,this.context.plugins,{useRc:!1,strict:!1}),{project:C,workspace:S}=await Rt.find(E,h);if(!S)throw new ar(C.cwd,h);if(this.all){for(let x of C.workspaces)x.manifest.name&&f.add(j.stringifyIdent(x.anchoredLocator));if(f.size===0)throw new st("No workspace found to be unlinked in the target project")}else{if(!S.manifest.name)throw new st("The target workspace doesn't have a name and thus cannot be unlinked");f.add(j.stringifyIdent(S.anchoredLocator))}}else{let E=[...c.manifest.resolutions.map(({pattern:C})=>C.descriptor.fullName)];for(let C of(0,pde.default)(E,p))f.add(C)}}return c.manifest.resolutions=c.manifest.resolutions.filter(({pattern:p})=>!f.has(p.descriptor.fullName)),await s.installWithNewReport({stdout:this.context.stdout,quiet:this.context.quiet},{cache:n})}};qe();qe();qe();Vt();var hde=et(Yv()),I5=et(Jo());ul();var xC=class extends At{constructor(){super(...arguments);this.interactive=he.Boolean("-i,--interactive",{description:"Offer various choices, depending on the detected upgrade paths"});this.fixed=he.Boolean("-F,--fixed",!1,{description:"Store dependency tags as-is instead of resolving them"});this.exact=he.Boolean("-E,--exact",!1,{description:"Don't use any semver modifier on the resolved range"});this.tilde=he.Boolean("-T,--tilde",!1,{description:"Use the `~` semver modifier on the resolved range"});this.caret=he.Boolean("-C,--caret",!1,{description:"Use the `^` semver modifier on the resolved range"});this.recursive=he.Boolean("-R,--recursive",!1,{description:"Resolve again ALL resolutions for those packages"});this.mode=he.String("--mode",{description:"Change what artifacts installs generate",validator:ks(Na)});this.patterns=he.Rest()}static{this.paths=[["up"]]}static{this.usage=at.Usage({description:"upgrade dependencies across the project",details:"\n This command upgrades the packages matching the list of specified patterns to their latest available version across the whole project (regardless of whether they're part of `dependencies` or `devDependencies` - `peerDependencies` won't be affected). This is a project-wide command: all workspaces will be upgraded in the process.\n\n If `-R,--recursive` is set the command will change behavior and no other switch will be allowed. When operating under this mode `yarn up` will force all ranges matching the selected packages to be resolved again (often to the highest available versions) before being stored in the lockfile. It however won't touch your manifests anymore, so depending on your needs you might want to run both `yarn up` and `yarn up -R` to cover all bases.\n\n If `-i,--interactive` is set (or if the `preferInteractive` settings is toggled on) the command will offer various choices, depending on the detected upgrade paths. Some upgrades require this flag in order to resolve ambiguities.\n\n The, `-C,--caret`, `-E,--exact` and `-T,--tilde` options have the same meaning as in the `add` command (they change the modifier used when the range is missing or a tag, and are ignored when the range is explicitly set).\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n Generally you can see `yarn up` as a counterpart to what was `yarn upgrade --latest` in Yarn 1 (ie it ignores the ranges previously listed in your manifests), but unlike `yarn upgrade` which only upgraded dependencies in the current workspace, `yarn up` will upgrade all workspaces at the same time.\n\n This command accepts glob patterns as arguments (if valid Descriptors and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n **Note:** The ranges have to be static, only the package scopes and names can contain glob patterns.\n ",examples:[["Upgrade all instances of lodash to the latest release","$0 up lodash"],["Upgrade all instances of lodash to the latest release, but ask confirmation for each","$0 up lodash -i"],["Upgrade all instances of lodash to 1.2.3","$0 up lodash@1.2.3"],["Upgrade all instances of packages with the `@babel` scope to the latest release","$0 up '@babel/*'"],["Upgrade all instances of packages containing the word `jest` to the latest release","$0 up '*jest*'"],["Upgrade all instances of packages with the `@babel` scope to 7.0.0","$0 up '@babel/*@7.0.0'"]]})}static{this.schema=[YB("recursive",Vf.Forbids,["interactive","exact","tilde","caret"],{ignore:[void 0,!1]})]}async execute(){return this.recursive?await this.executeUpRecursive():await this.executeUpClassic()}async executeUpRecursive(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Jr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=[...s.storedDescriptors.values()],f=c.map(E=>j.stringifyIdent(E)),p=new Set;for(let E of this.patterns){if(j.parseDescriptor(E).range!=="unknown")throw new st("Ranges aren't allowed when using --recursive");for(let C of(0,I5.default)(f,E)){let S=j.parseIdent(C);p.add(S.identHash)}}let h=c.filter(E=>p.has(E.identHash));for(let E of h)s.storedDescriptors.delete(E.descriptorHash),s.storedResolutions.delete(E.descriptorHash);return await s.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})}async executeUpClassic(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Jr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=this.fixed,f=r.isInteractive({interactive:this.interactive,stdout:this.context.stdout}),p=Jv(this,s),h=f?["keep","reuse","project","latest"]:["project","latest"],E=[],C=[];for(let O of this.patterns){let U=!1,Y=j.parseDescriptor(O),te=j.stringifyIdent(Y);for(let ie of s.workspaces)for(let ue of["dependencies","devDependencies"]){let de=[...ie.manifest.getForScope(ue).values()].map(Ce=>j.stringifyIdent(Ce)),Ae=te==="*"?de:(0,I5.default)(de,te);for(let Ce of Ae){let Ee=j.parseIdent(Ce),g=ie.manifest[ue].get(Ee.identHash);if(typeof g>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");let Se=j.makeDescriptor(Ee,Y.range);E.push(Promise.resolve().then(async()=>[ie,ue,g,await zv(Se,{project:s,workspace:ie,cache:n,target:ue,fixed:c,modifier:p,strategies:h})])),U=!0}}U||C.push(O)}if(C.length>1)throw new st(`Patterns ${pe.prettyList(r,C,pe.Type.CODE)} don't match any packages referenced by any workspace`);if(C.length>0)throw new st(`Pattern ${pe.prettyList(r,C,pe.Type.CODE)} doesn't match any packages referenced by any workspace`);let S=await Promise.all(E),x=await cA.start({configuration:r,stdout:this.context.stdout,suggestInstall:!1},async O=>{for(let[,,U,{suggestions:Y,rejections:te}]of S){let ie=Y.filter(ue=>ue.descriptor!==null);if(ie.length===0){let[ue]=te;if(typeof ue>"u")throw new Error("Assertion failed: Expected an error to have been set");let ae=this.cli.error(ue);s.configuration.get("enableNetwork")?O.reportError(27,`${j.prettyDescriptor(r,U)} can't be resolved to a satisfying range - -${ae}`):O.reportError(27,`${j.prettyDescriptor(r,U)} can't be resolved to a satisfying range (note: network resolution has been disabled) - -${ae}`)}else ie.length>1&&!f&&O.reportError(27,`${j.prettyDescriptor(r,U)} has multiple possible upgrade strategies; use -i to disambiguate manually`)}});if(x.hasErrors())return x.exitCode();let I=!1,T=[];for(let[O,U,,{suggestions:Y}]of S){let te,ie=Y.filter(Ae=>Ae.descriptor!==null),ue=ie[0].descriptor,ae=ie.every(Ae=>j.areDescriptorsEqual(Ae.descriptor,ue));ie.length===1||ae?te=ue:(I=!0,{answer:te}=await(0,hde.prompt)({type:"select",name:"answer",message:`Which range do you want to use in ${j.prettyWorkspace(r,O)} \u276F ${U}?`,choices:Y.map(({descriptor:Ae,name:Ce,reason:Ee})=>Ae?{name:Ce,hint:Ee,descriptor:Ae}:{name:Ce,hint:Ee,disabled:!0}),onCancel:()=>process.exit(130),result(Ae){return this.find(Ae,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let de=O.manifest[U].get(te.identHash);if(typeof de>"u")throw new Error("Assertion failed: This descriptor should have a matching entry");if(de.descriptorHash!==te.descriptorHash)O.manifest[U].set(te.identHash,te),T.push([O,U,de,te]);else{let Ae=r.makeResolver(),Ce={project:s,resolver:Ae},Ee=r.normalizeDependency(de),g=Ae.bindDescriptor(Ee,O.anchoredLocator,Ce);s.forgetResolution(g)}}return await r.triggerMultipleHooks(O=>O.afterWorkspaceDependencyReplacement,T),I&&this.context.stdout.write(` -`),await s.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})}};qe();qe();qe();Vt();var kC=class extends At{constructor(){super(...arguments);this.recursive=he.Boolean("-R,--recursive",!1,{description:"List, for each workspace, what are all the paths that lead to the dependency"});this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.peers=he.Boolean("--peers",!1,{description:"Also print the peer dependencies that match the specified name"});this.package=he.String()}static{this.paths=[["why"]]}static{this.usage=at.Usage({description:"display the reason why a package is needed",details:` - This command prints the exact reasons why a package appears in the dependency tree. - - If \`-R,--recursive\` is set, the listing will go in depth and will list, for each workspaces, what are all the paths that lead to the dependency. Note that the display is somewhat optimized in that it will not print the package listing twice for a single package, so if you see a leaf named "Foo" when looking for "Bar", it means that "Foo" already got printed higher in the tree. - `,examples:[["Explain why lodash is used in your project","$0 why lodash"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let n=j.parseIdent(this.package).identHash,c=this.recursive?wot(s,n,{configuration:r,peers:this.peers}):Cot(s,n,{configuration:r,peers:this.peers});Rs.emitTree(c,{configuration:r,stdout:this.context.stdout,json:this.json,separators:1})}};function Cot(e,t,{configuration:r,peers:s}){let a=Ge.sortMap(e.storedPackages.values(),f=>j.stringifyLocator(f)),n={},c={children:n};for(let f of a){let p={};for(let E of f.dependencies.values()){if(!s&&f.peerDependencies.has(E.identHash))continue;let C=e.storedResolutions.get(E.descriptorHash);if(!C)throw new Error("Assertion failed: The resolution should have been registered");let S=e.storedPackages.get(C);if(!S)throw new Error("Assertion failed: The package should have been registered");if(S.identHash!==t)continue;{let I=j.stringifyLocator(f);n[I]={value:[f,pe.Type.LOCATOR],children:p}}let x=j.stringifyLocator(S);p[x]={value:[{descriptor:E,locator:S},pe.Type.DEPENDENT]}}}return c}function wot(e,t,{configuration:r,peers:s}){let a=Ge.sortMap(e.workspaces,S=>j.stringifyLocator(S.anchoredLocator)),n=new Set,c=new Set,f=S=>{if(n.has(S.locatorHash))return c.has(S.locatorHash);if(n.add(S.locatorHash),S.identHash===t)return c.add(S.locatorHash),!0;let x=!1;S.identHash===t&&(x=!0);for(let I of S.dependencies.values()){if(!s&&S.peerDependencies.has(I.identHash))continue;let T=e.storedResolutions.get(I.descriptorHash);if(!T)throw new Error("Assertion failed: The resolution should have been registered");let O=e.storedPackages.get(T);if(!O)throw new Error("Assertion failed: The package should have been registered");f(O)&&(x=!0)}return x&&c.add(S.locatorHash),x};for(let S of a)f(S.anchoredPackage);let p=new Set,h={},E={children:h},C=(S,x,I)=>{if(!c.has(S.locatorHash))return;let T=I!==null?pe.tuple(pe.Type.DEPENDENT,{locator:S,descriptor:I}):pe.tuple(pe.Type.LOCATOR,S),O={},U={value:T,children:O},Y=j.stringifyLocator(S);if(x[Y]=U,!(I!==null&&e.tryWorkspaceByLocator(S))&&!p.has(S.locatorHash)){p.add(S.locatorHash);for(let te of S.dependencies.values()){if(!s&&S.peerDependencies.has(te.identHash))continue;let ie=e.storedResolutions.get(te.descriptorHash);if(!ie)throw new Error("Assertion failed: The resolution should have been registered");let ue=e.storedPackages.get(ie);if(!ue)throw new Error("Assertion failed: The package should have been registered");C(ue,O,te)}}};for(let S of a)C(S.anchoredPackage,h,null);return E}qe();var k5={};Yt(k5,{GitFetcher:()=>tS,GitResolver:()=>rS,default:()=>Got,gitUtils:()=>Oa});qe();Dt();var Oa={};Yt(Oa,{TreeishProtocols:()=>eS,clone:()=>x5,fetchBase:()=>Nde,fetchChangedFiles:()=>Ode,fetchChangedWorkspaces:()=>Hot,fetchRoot:()=>Fde,isGitUrl:()=>TC,lsRemote:()=>Tde,normalizeLocator:()=>_ot,normalizeRepoUrl:()=>QC,resolveUrl:()=>P5,splitRepoUrl:()=>G0,validateRepoUrl:()=>b5});qe();Dt();Vt();Jl();var Qde=et(Pde()),RC=et(Ie("querystring")),S5=et(pi());function v5(e,t,r){let s=e.indexOf(r);return e.lastIndexOf(t,s>-1?s:1/0)}function xde(e){try{return new URL(e)}catch{return}}function Mot(e){let t=v5(e,"@","#"),r=v5(e,":","#");return r>t&&(e=`${e.slice(0,r)}/${e.slice(r+1)}`),v5(e,":","#")===-1&&e.indexOf("//")===-1&&(e=`ssh://${e}`),e}function kde(e){return xde(e)||xde(Mot(e))}function QC(e,{git:t=!1}={}){if(e=e.replace(/^git\+https:/,"https:"),e=e.replace(/^(?:github:|https:\/\/github\.com\/|git:\/\/github\.com\/)?(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)(?:\.git)?(#.*)?$/,"https://github.com/$1/$2.git$3"),e=e.replace(/^https:\/\/github\.com\/(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\/tarball\/(.+)?$/,"https://github.com/$1/$2.git#$3"),t){let r=kde(e);r&&(e=r.href),e=e.replace(/^git\+([^:]+):/,"$1:")}return e}function Rde(){return{...process.env,GIT_SSH_COMMAND:process.env.GIT_SSH_COMMAND||`${process.env.GIT_SSH||"ssh"} -o BatchMode=yes`}}var Uot=[/^ssh:/,/^git(?:\+[^:]+)?:/,/^(?:git\+)?https?:[^#]+\/[^#]+(?:\.git)(?:#.*)?$/,/^git@[^#]+\/[^#]+\.git(?:#.*)?$/,/^(?:github:|https:\/\/github\.com\/)?(?!\.{1,2}\/)([a-zA-Z._0-9-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z._0-9-]+?)(?:\.git)?(?:#.*)?$/,/^https:\/\/github\.com\/(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\/tarball\/(.+)?$/],eS=(a=>(a.Commit="commit",a.Head="head",a.Tag="tag",a.Semver="semver",a))(eS||{});function TC(e){return e?Uot.some(t=>!!e.match(t)):!1}function G0(e){e=QC(e);let t=e.indexOf("#");if(t===-1)return{repo:e,treeish:{protocol:"head",request:"HEAD"},extra:{}};let r=e.slice(0,t),s=e.slice(t+1);if(s.match(/^[a-z]+=/)){let a=RC.default.parse(s);for(let[p,h]of Object.entries(a))if(typeof h!="string")throw new Error(`Assertion failed: The ${p} parameter must be a literal string`);let n=Object.values(eS).find(p=>Object.hasOwn(a,p)),[c,f]=typeof n<"u"?[n,a[n]]:["head","HEAD"];for(let p of Object.values(eS))delete a[p];return{repo:r,treeish:{protocol:c,request:f},extra:a}}else{let a=s.indexOf(":"),[n,c]=a===-1?[null,s]:[s.slice(0,a),s.slice(a+1)];return{repo:r,treeish:{protocol:n,request:c},extra:{}}}}function _ot(e){return j.makeLocator(e,QC(e.reference))}function b5(e,{configuration:t}){let r=QC(e,{git:!0});if(!nn.getNetworkSettings(`https://${(0,Qde.default)(r).resource}`,{configuration:t}).enableNetwork)throw new _t(80,`Request to '${r}' has been blocked because of your configuration settings`);return r}async function Tde(e,t){let r=b5(e,{configuration:t}),s=await D5("listing refs",["ls-remote",r],{cwd:t.startingCwd,env:Rde()},{configuration:t,normalizedRepoUrl:r}),a=new Map,n=/^([a-f0-9]{40})\t([^\n]+)/gm,c;for(;(c=n.exec(s.stdout))!==null;)a.set(c[2],c[1]);return a}async function P5(e,t){let{repo:r,treeish:{protocol:s,request:a},extra:n}=G0(e),c=await Tde(r,t),f=(h,E)=>{switch(h){case"commit":{if(!E.match(/^[a-f0-9]{40}$/))throw new Error("Invalid commit hash");return RC.default.stringify({...n,commit:E})}case"head":{let C=c.get(E==="HEAD"?E:`refs/heads/${E}`);if(typeof C>"u")throw new Error(`Unknown head ("${E}")`);return RC.default.stringify({...n,commit:C})}case"tag":{let C=c.get(`refs/tags/${E}`);if(typeof C>"u")throw new Error(`Unknown tag ("${E}")`);return RC.default.stringify({...n,commit:C})}case"semver":{let C=Fr.validRange(E);if(!C)throw new Error(`Invalid range ("${E}")`);let S=new Map([...c.entries()].filter(([I])=>I.startsWith("refs/tags/")).map(([I,T])=>[S5.default.parse(I.slice(10)),T]).filter(I=>I[0]!==null)),x=S5.default.maxSatisfying([...S.keys()],C);if(x===null)throw new Error(`No matching range ("${E}")`);return RC.default.stringify({...n,commit:S.get(x)})}case null:{let C;if((C=p("commit",E))!==null||(C=p("tag",E))!==null||(C=p("head",E))!==null)return C;throw E.match(/^[a-f0-9]+$/)?new Error(`Couldn't resolve "${E}" as either a commit, a tag, or a head - if a commit, use the 40-characters commit hash`):new Error(`Couldn't resolve "${E}" as either a commit, a tag, or a head`)}default:throw new Error(`Invalid Git resolution protocol ("${h}")`)}},p=(h,E)=>{try{return f(h,E)}catch{return null}};return QC(`${r}#${f(s,a)}`)}async function x5(e,t){return await t.getLimit("cloneConcurrency")(async()=>{let{repo:r,treeish:{protocol:s,request:a}}=G0(e);if(s!=="commit")throw new Error("Invalid treeish protocol when cloning");let n=b5(r,{configuration:t}),c=await le.mktempPromise(),f={cwd:c,env:Rde()};return await D5("cloning the repository",["clone","-c","core.autocrlf=false",n,fe.fromPortablePath(c)],f,{configuration:t,normalizedRepoUrl:n}),await D5("switching branch",["checkout",`${a}`],f,{configuration:t,normalizedRepoUrl:n}),c})}async function Fde(e){let t,r=e;do{if(t=r,await le.existsPromise(K.join(t,".git")))return t;r=K.dirname(t)}while(r!==t);return null}async function Nde(e,{baseRefs:t}){if(t.length===0)throw new st("Can't run this command with zero base refs specified.");let r=[];for(let f of t){let{code:p}=await qr.execvp("git",["merge-base",f,"HEAD"],{cwd:e});p===0&&r.push(f)}if(r.length===0)throw new st(`No ancestor could be found between any of HEAD and ${t.join(", ")}`);let{stdout:s}=await qr.execvp("git",["merge-base","HEAD",...r],{cwd:e,strict:!0}),a=s.trim(),{stdout:n}=await qr.execvp("git",["show","--quiet","--pretty=format:%s",a],{cwd:e,strict:!0}),c=n.trim();return{hash:a,title:c}}async function Ode(e,{base:t,project:r}){let s=Ge.buildIgnorePattern(r.configuration.get("changesetIgnorePatterns")),{stdout:a}=await qr.execvp("git",["diff","--name-only",`${t}`],{cwd:e,strict:!0}),n=a.split(/\r\n|\r|\n/).filter(h=>h.length>0).map(h=>K.resolve(e,fe.toPortablePath(h))),{stdout:c}=await qr.execvp("git",["ls-files","--others","--exclude-standard"],{cwd:e,strict:!0}),f=c.split(/\r\n|\r|\n/).filter(h=>h.length>0).map(h=>K.resolve(e,fe.toPortablePath(h))),p=[...new Set([...n,...f].sort())];return s?p.filter(h=>!K.relative(r.cwd,h).match(s)):p}async function Hot({ref:e,project:t}){if(t.configuration.projectCwd===null)throw new st("This command can only be run from within a Yarn project");let r=[K.resolve(t.cwd,Er.lockfile),K.resolve(t.cwd,t.configuration.get("cacheFolder")),K.resolve(t.cwd,t.configuration.get("installStatePath")),K.resolve(t.cwd,t.configuration.get("virtualFolder"))];await t.configuration.triggerHook(c=>c.populateYarnPaths,t,c=>{c!=null&&r.push(c)});let s=await Fde(t.configuration.projectCwd);if(s==null)throw new st("This command can only be run on Git repositories");let a=await Nde(s,{baseRefs:typeof e=="string"?[e]:t.configuration.get("changesetBaseRefs")}),n=await Ode(s,{base:a.hash,project:t});return new Set(Ge.mapAndFilter(n,c=>{let f=t.tryWorkspaceByFilePath(c);return f===null?Ge.mapAndFilter.skip:r.some(p=>c.startsWith(p))?Ge.mapAndFilter.skip:f}))}async function D5(e,t,r,{configuration:s,normalizedRepoUrl:a}){try{return await qr.execvp("git",t,{...r,strict:!0})}catch(n){if(!(n instanceof qr.ExecError))throw n;let c=n.reportExtra,f=n.stderr.toString();throw new _t(1,`Failed ${e}`,p=>{p.reportError(1,` ${pe.prettyField(s,{label:"Repository URL",value:pe.tuple(pe.Type.URL,a)})}`);for(let h of f.matchAll(/^(.+?): (.*)$/gm)){let[,E,C]=h;E=E.toLowerCase();let S=E==="error"?"Error":`${E2(E)} Error`;p.reportError(1,` ${pe.prettyField(s,{label:S,value:pe.tuple(pe.Type.NO_HINT,C)})}`)}c?.(p)})}}var tS=class{supports(t,r){return TC(t.reference)}getLocalPath(t,r){return null}async fetch(t,r){let s=r.checksums.get(t.locatorHash)||null,a=new Map(r.checksums);a.set(t.locatorHash,s);let n={...r,checksums:a},c=await this.downloadHosted(t,n);if(c!==null)return c;let[f,p,h]=await r.cache.fetchPackageFromCache(t,s,{onHit:()=>r.report.reportCacheHit(t),onMiss:()=>r.report.reportCacheMiss(t,`${j.prettyLocator(r.project.configuration,t)} can't be found in the cache and will be fetched from the remote repository`),loader:()=>this.cloneFromRemote(t,n),...r.cacheOptions});return{packageFs:f,releaseFs:p,prefixPath:j.getIdentVendorPath(t),checksum:h}}async downloadHosted(t,r){return r.project.configuration.reduceHook(s=>s.fetchHostedRepository,null,t,r)}async cloneFromRemote(t,r){let s=G0(t.reference),a=await x5(t.reference,r.project.configuration),n=K.resolve(a,s.extra.cwd??vt.dot),c=K.join(n,"package.tgz");await Cn.prepareExternalProject(n,c,{configuration:r.project.configuration,report:r.report,workspace:s.extra.workspace,locator:t});let f=await le.readFilePromise(c);return await Ge.releaseAfterUseAsync(async()=>await ds.convertToZip(f,{configuration:r.project.configuration,prefixPath:j.getIdentVendorPath(t),stripComponents:1}))}};qe();qe();var rS=class{supportsDescriptor(t,r){return TC(t.range)}supportsLocator(t,r){return TC(t.reference)}shouldPersistResolution(t,r){return!0}bindDescriptor(t,r,s){return t}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){let a=await P5(t.range,s.project.configuration);return[j.makeLocator(t,a)]}async getSatisfying(t,r,s,a){let n=G0(t.range);return{locators:s.filter(f=>{if(f.identHash!==t.identHash)return!1;let p=G0(f.reference);return!(n.repo!==p.repo||n.treeish.protocol==="commit"&&n.treeish.request!==p.treeish.request)}),sorted:!1}}async resolve(t,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let s=await r.fetchOptions.fetcher.fetch(t,r.fetchOptions),a=await Ge.releaseAfterUseAsync(async()=>await Ut.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...t,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var jot={configuration:{changesetBaseRefs:{description:"The base git refs that the current HEAD is compared against when detecting changes. Supports git branches, tags, and commits.",type:"STRING",isArray:!0,isNullable:!1,default:["master","origin/master","upstream/master","main","origin/main","upstream/main"]},changesetIgnorePatterns:{description:"Array of glob patterns; files matching them will be ignored when fetching the changed files",type:"STRING",default:[],isArray:!0},cloneConcurrency:{description:"Maximal number of concurrent clones",type:"NUMBER",default:2}},fetchers:[tS],resolvers:[rS]};var Got=jot;Vt();var FC=class extends At{constructor(){super(...arguments);this.since=he.String("--since",{description:"Only include workspaces that have been changed since the specified ref.",tolerateBoolean:!0});this.recursive=he.Boolean("-R,--recursive",!1,{description:"Find packages via dependencies/devDependencies instead of using the workspaces field"});this.noPrivate=he.Boolean("--no-private",{description:"Exclude workspaces that have the private field set to true"});this.verbose=he.Boolean("-v,--verbose",!1,{description:"Also return the cross-dependencies between workspaces"});this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["workspaces","list"]]}static{this.usage=at.Usage({category:"Workspace-related commands",description:"list all available workspaces",details:"\n This command will print the list of all workspaces in the project.\n\n - If `--since` is set, Yarn will only list workspaces that have been modified since the specified ref. By default Yarn will use the refs specified by the `changesetBaseRefs` configuration option.\n\n - If `-R,--recursive` is set, Yarn will find workspaces to run the command on by recursively evaluating `dependencies` and `devDependencies` fields, instead of looking at the `workspaces` fields.\n\n - If `--no-private` is set, Yarn will not list any workspaces that have the `private` field set to `true`.\n\n - If both the `-v,--verbose` and `--json` options are set, Yarn will also return the cross-dependencies between each workspaces (useful when you wish to automatically generate Buck / Bazel rules).\n "})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Rt.find(r,this.context.cwd);return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async n=>{let c=this.since?await Oa.fetchChangedWorkspaces({ref:this.since,project:s}):s.workspaces,f=new Set(c);if(this.recursive)for(let p of[...c].map(h=>h.getRecursiveWorkspaceDependents()))for(let h of p)f.add(h);for(let p of f){let{manifest:h}=p;if(h.private&&this.noPrivate)continue;let E;if(this.verbose){let C=new Set,S=new Set;for(let x of Ut.hardDependencies)for(let[I,T]of h.getForScope(x)){let O=s.tryWorkspaceByDescriptor(T);O===null?s.workspacesByIdent.has(I)&&S.add(T):C.add(O)}E={workspaceDependencies:Array.from(C).map(x=>x.relativeCwd),mismatchedWorkspaceDependencies:Array.from(S).map(x=>j.stringifyDescriptor(x))}}n.reportInfo(null,`${p.relativeCwd}`),n.reportJson({location:p.relativeCwd,name:h.name?j.stringifyIdent(h.name):null,...E})}})).exitCode()}};qe();qe();Vt();var NC=class extends At{constructor(){super(...arguments);this.workspaceName=he.String();this.commandName=he.String();this.args=he.Proxy()}static{this.paths=[["workspace"]]}static{this.usage=at.Usage({category:"Workspace-related commands",description:"run a command within the specified workspace",details:` - This command will run a given sub-command on a single workspace. - `,examples:[["Add a package to a single workspace","yarn workspace components add -D react"],["Run build script on a single workspace","yarn workspace components run build"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);let n=s.workspaces,c=new Map(n.map(p=>[j.stringifyIdent(p.anchoredLocator),p])),f=c.get(this.workspaceName);if(f===void 0){let p=Array.from(c.keys()).sort();throw new st(`Workspace '${this.workspaceName}' not found. Did you mean any of the following: - - ${p.join(` - - `)}?`)}return this.cli.run([this.commandName,...this.args],{cwd:f.cwd})}};var qot={configuration:{enableImmutableInstalls:{description:"If true (the default on CI), prevents the install command from modifying the lockfile",type:"BOOLEAN",default:Lde.isCI},defaultSemverRangePrefix:{description:"The default save prefix: '^', '~' or ''",type:"STRING",values:["^","~",""],default:"^"},preferReuse:{description:"If true, `yarn add` will attempt to reuse the most common dependency range in other workspaces.",type:"BOOLEAN",default:!1}},commands:[XI,$I,eC,tC,bC,yC,uC,FC,iC,sC,oC,aC,zI,ZI,rC,nC,lC,cC,fC,AC,pC,hC,PC,gC,dC,IC,EC,CC,mC,wC,BC,vC,SC,DC,xC,kC,NC]},Wot=qot;var N5={};Yt(N5,{default:()=>Jot});qe();qe();var R5="catalog:";var T5=e=>e.startsWith(R5),Vot=e=>e.range.slice(R5.length)||null,Mde=e=>e===null?"default catalog":`catalog "${e}"`,Yot=e=>e.scope?`@${e.scope}/${e.name}`:e.name,F5=(e,t,r,s)=>{let a=Vot(t),n;if(a===null)n=e.configuration.get("catalog");else try{let E=e.configuration.get("catalogs");E&&(n=E.get(a))}catch{n=void 0}if(!n||n.size===0)throw new _t(82,`${j.prettyDescriptor(e.configuration,t)}: ${Mde(a)} not found or empty`);let c=Yot(t),f=n.get(c);if(!f)throw new _t(82,`${j.prettyDescriptor(e.configuration,t)}: entry not found in ${Mde(a)}`);let p=e.configuration.normalizeDependency(j.makeDescriptor(t,f));return r.supportsDescriptor(p,s)?r.bindDescriptor(p,e.topLevelWorkspace.anchoredLocator,s):p};var Kot={configuration:{catalog:{description:"The default catalog of packages",type:"MAP",valueDefinition:{description:"The catalog of packages",type:"STRING"}},catalogs:{description:"Named catalogs of packages",type:"MAP",valueDefinition:{description:"A named catalog",type:"MAP",valueDefinition:{description:"Package version in the catalog",type:"STRING"}}}},hooks:{beforeWorkspacePacking:(e,t)=>{let r=e.project,s=r.configuration.makeResolver(),a={project:r,resolver:s,report:new ki};for(let n of Ut.allDependencies){let c=t[n];if(c)for(let[f,p]of Object.entries(c)){if(typeof p!="string"||!T5(p))continue;let h=j.parseIdent(f),E=j.makeDescriptor(h,p),C=F5(r,E,s,a),{protocol:S,source:x,params:I,selector:T}=j.parseRange(j.convertToManifestRange(C.range));S===e.project.configuration.get("defaultProtocol")&&(S=null),c[f]=j.makeRange({protocol:S,source:x,params:I,selector:T})}}},reduceDependency:async(e,t,r,s,{resolver:a,resolveOptions:n})=>T5(e.range)?F5(t,e,a,n):e}},Jot=Kot;var _5={};Yt(_5,{default:()=>Zot});qe();var Qt={optional:!0},O5=[["@tailwindcss/aspect-ratio@<0.2.1",{peerDependencies:{tailwindcss:"^2.0.2"}}],["@tailwindcss/line-clamp@<0.2.1",{peerDependencies:{tailwindcss:"^2.0.2"}}],["@fullhuman/postcss-purgecss@3.1.3 || 3.1.3-alpha.0",{peerDependencies:{postcss:"^8.0.0"}}],["@samverschueren/stream-to-observable@<0.3.1",{peerDependenciesMeta:{rxjs:Qt,zenObservable:Qt}}],["any-observable@<0.5.1",{peerDependenciesMeta:{rxjs:Qt,zenObservable:Qt}}],["@pm2/agent@<1.0.4",{dependencies:{debug:"*"}}],["debug@<4.2.0",{peerDependenciesMeta:{"supports-color":Qt}}],["got@<11",{dependencies:{"@types/responselike":"^1.0.0","@types/keyv":"^3.1.1"}}],["cacheable-lookup@<4.1.2",{dependencies:{"@types/keyv":"^3.1.1"}}],["http-link-dataloader@*",{peerDependencies:{graphql:"^0.13.1 || ^14.0.0"}}],["typescript-language-server@*",{dependencies:{"vscode-jsonrpc":"^5.0.1","vscode-languageserver-protocol":"^3.15.0"}}],["postcss-syntax@*",{peerDependenciesMeta:{"postcss-html":Qt,"postcss-jsx":Qt,"postcss-less":Qt,"postcss-markdown":Qt,"postcss-scss":Qt}}],["jss-plugin-rule-value-function@<=10.1.1",{dependencies:{"tiny-warning":"^1.0.2"}}],["ink-select-input@<4.1.0",{peerDependencies:{react:"^16.8.2"}}],["license-webpack-plugin@<2.3.18",{peerDependenciesMeta:{webpack:Qt}}],["snowpack@>=3.3.0",{dependencies:{"node-gyp":"^7.1.0"}}],["promise-inflight@*",{peerDependenciesMeta:{bluebird:Qt}}],["reactcss@*",{peerDependencies:{react:"*"}}],["react-color@<=2.19.0",{peerDependencies:{react:"*"}}],["gatsby-plugin-i18n@*",{dependencies:{ramda:"^0.24.1"}}],["useragent@^2.0.0",{dependencies:{request:"^2.88.0",yamlparser:"0.0.x",semver:"5.5.x"}}],["@apollographql/apollo-tools@<=0.5.2",{peerDependencies:{graphql:"^14.2.1 || ^15.0.0"}}],["material-table@^2.0.0",{dependencies:{"@babel/runtime":"^7.11.2"}}],["@babel/parser@*",{dependencies:{"@babel/types":"^7.8.3"}}],["fork-ts-checker-webpack-plugin@<=6.3.4",{peerDependencies:{eslint:">= 6",typescript:">= 2.7",webpack:">= 4","vue-template-compiler":"*"},peerDependenciesMeta:{eslint:Qt,"vue-template-compiler":Qt}}],["rc-animate@<=3.1.1",{peerDependencies:{react:">=16.9.0","react-dom":">=16.9.0"}}],["react-bootstrap-table2-paginator@*",{dependencies:{classnames:"^2.2.6"}}],["react-draggable@<=4.4.3",{peerDependencies:{react:">= 16.3.0","react-dom":">= 16.3.0"}}],["apollo-upload-client@<14",{peerDependencies:{graphql:"14 - 15"}}],["react-instantsearch-core@<=6.7.0",{peerDependencies:{algoliasearch:">= 3.1 < 5"}}],["react-instantsearch-dom@<=6.7.0",{dependencies:{"react-fast-compare":"^3.0.0"}}],["ws@<7.2.1",{peerDependencies:{bufferutil:"^4.0.1","utf-8-validate":"^5.0.2"},peerDependenciesMeta:{bufferutil:Qt,"utf-8-validate":Qt}}],["react-portal@<4.2.2",{peerDependencies:{"react-dom":"^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0"}}],["react-scripts@<=4.0.1",{peerDependencies:{react:"*"}}],["testcafe@<=1.10.1",{dependencies:{"@babel/plugin-transform-for-of":"^7.12.1","@babel/runtime":"^7.12.5"}}],["testcafe-legacy-api@<=4.2.0",{dependencies:{"testcafe-hammerhead":"^17.0.1","read-file-relative":"^1.2.0"}}],["@google-cloud/firestore@<=4.9.3",{dependencies:{protobufjs:"^6.8.6"}}],["gatsby-source-apiserver@*",{dependencies:{"babel-polyfill":"^6.26.0"}}],["@webpack-cli/package-utils@<=1.0.1-alpha.4",{dependencies:{"cross-spawn":"^7.0.3"}}],["gatsby-remark-prismjs@<3.3.28",{dependencies:{lodash:"^4"}}],["gatsby-plugin-favicon@*",{peerDependencies:{webpack:"*"}}],["gatsby-plugin-sharp@<=4.6.0-next.3",{dependencies:{debug:"^4.3.1"}}],["gatsby-react-router-scroll@<=5.6.0-next.0",{dependencies:{"prop-types":"^15.7.2"}}],["@rebass/forms@*",{dependencies:{"@styled-system/should-forward-prop":"^5.0.0"},peerDependencies:{react:"^16.8.6"}}],["rebass@*",{peerDependencies:{react:"^16.8.6"}}],["@ant-design/react-slick@<=0.28.3",{peerDependencies:{react:">=16.0.0"}}],["mqtt@<4.2.7",{dependencies:{duplexify:"^4.1.1"}}],["vue-cli-plugin-vuetify@<=2.0.3",{dependencies:{semver:"^6.3.0"},peerDependenciesMeta:{"sass-loader":Qt,"vuetify-loader":Qt}}],["vue-cli-plugin-vuetify@<=2.0.4",{dependencies:{"null-loader":"^3.0.0"}}],["vue-cli-plugin-vuetify@>=2.4.3",{peerDependencies:{vue:"*"}}],["@vuetify/cli-plugin-utils@<=0.0.4",{dependencies:{semver:"^6.3.0"},peerDependenciesMeta:{"sass-loader":Qt}}],["@vue/cli-plugin-typescript@<=5.0.0-alpha.0",{dependencies:{"babel-loader":"^8.1.0"}}],["@vue/cli-plugin-typescript@<=5.0.0-beta.0",{dependencies:{"@babel/core":"^7.12.16"},peerDependencies:{"vue-template-compiler":"^2.0.0"},peerDependenciesMeta:{"vue-template-compiler":Qt}}],["cordova-ios@<=6.3.0",{dependencies:{underscore:"^1.9.2"}}],["cordova-lib@<=10.0.1",{dependencies:{underscore:"^1.9.2"}}],["git-node-fs@*",{peerDependencies:{"js-git":"^0.7.8"},peerDependenciesMeta:{"js-git":Qt}}],["consolidate@<0.16.0",{peerDependencies:{mustache:"^3.0.0"},peerDependenciesMeta:{mustache:Qt}}],["consolidate@<=0.16.0",{peerDependencies:{velocityjs:"^2.0.1",tinyliquid:"^0.2.34","liquid-node":"^3.0.1",jade:"^1.11.0","then-jade":"*",dust:"^0.3.0","dustjs-helpers":"^1.7.4","dustjs-linkedin":"^2.7.5",swig:"^1.4.2","swig-templates":"^2.0.3","razor-tmpl":"^1.3.1",atpl:">=0.7.6",liquor:"^0.0.5",twig:"^1.15.2",ejs:"^3.1.5",eco:"^1.1.0-rc-3",jazz:"^0.0.18",jqtpl:"~1.1.0",hamljs:"^0.6.2",hamlet:"^0.3.3",whiskers:"^0.4.0","haml-coffee":"^1.14.1","hogan.js":"^3.0.2",templayed:">=0.2.3",handlebars:"^4.7.6",underscore:"^1.11.0",lodash:"^4.17.20",pug:"^3.0.0","then-pug":"*",qejs:"^3.0.5",walrus:"^0.10.1",mustache:"^4.0.1",just:"^0.1.8",ect:"^0.5.9",mote:"^0.2.0",toffee:"^0.3.6",dot:"^1.1.3","bracket-template":"^1.1.5",ractive:"^1.3.12",nunjucks:"^3.2.2",htmling:"^0.0.8","babel-core":"^6.26.3",plates:"~0.4.11","react-dom":"^16.13.1",react:"^16.13.1","arc-templates":"^0.5.3",vash:"^0.13.0",slm:"^2.0.0",marko:"^3.14.4",teacup:"^2.0.0","coffee-script":"^1.12.7",squirrelly:"^5.1.0",twing:"^5.0.2"},peerDependenciesMeta:{velocityjs:Qt,tinyliquid:Qt,"liquid-node":Qt,jade:Qt,"then-jade":Qt,dust:Qt,"dustjs-helpers":Qt,"dustjs-linkedin":Qt,swig:Qt,"swig-templates":Qt,"razor-tmpl":Qt,atpl:Qt,liquor:Qt,twig:Qt,ejs:Qt,eco:Qt,jazz:Qt,jqtpl:Qt,hamljs:Qt,hamlet:Qt,whiskers:Qt,"haml-coffee":Qt,"hogan.js":Qt,templayed:Qt,handlebars:Qt,underscore:Qt,lodash:Qt,pug:Qt,"then-pug":Qt,qejs:Qt,walrus:Qt,mustache:Qt,just:Qt,ect:Qt,mote:Qt,toffee:Qt,dot:Qt,"bracket-template":Qt,ractive:Qt,nunjucks:Qt,htmling:Qt,"babel-core":Qt,plates:Qt,"react-dom":Qt,react:Qt,"arc-templates":Qt,vash:Qt,slm:Qt,marko:Qt,teacup:Qt,"coffee-script":Qt,squirrelly:Qt,twing:Qt}}],["vue-loader@<=16.3.3",{peerDependencies:{"@vue/compiler-sfc":"^3.0.8",webpack:"^4.1.0 || ^5.0.0-0"},peerDependenciesMeta:{"@vue/compiler-sfc":Qt}}],["vue-loader@^16.7.0",{peerDependencies:{"@vue/compiler-sfc":"^3.0.8",vue:"^3.2.13"},peerDependenciesMeta:{"@vue/compiler-sfc":Qt,vue:Qt}}],["scss-parser@<=1.0.5",{dependencies:{lodash:"^4.17.21"}}],["query-ast@<1.0.5",{dependencies:{lodash:"^4.17.21"}}],["redux-thunk@<=2.3.0",{peerDependencies:{redux:"^4.0.0"}}],["skypack@<=0.3.2",{dependencies:{tar:"^6.1.0"}}],["@npmcli/metavuln-calculator@<2.0.0",{dependencies:{"json-parse-even-better-errors":"^2.3.1"}}],["bin-links@<2.3.0",{dependencies:{"mkdirp-infer-owner":"^1.0.2"}}],["rollup-plugin-polyfill-node@<=0.8.0",{peerDependencies:{rollup:"^1.20.0 || ^2.0.0"}}],["snowpack@<3.8.6",{dependencies:{"magic-string":"^0.25.7"}}],["elm-webpack-loader@*",{dependencies:{temp:"^0.9.4"}}],["winston-transport@<=4.4.0",{dependencies:{logform:"^2.2.0"}}],["jest-vue-preprocessor@*",{dependencies:{"@babel/core":"7.8.7","@babel/template":"7.8.6"},peerDependencies:{pug:"^2.0.4"},peerDependenciesMeta:{pug:Qt}}],["redux-persist@*",{peerDependencies:{react:">=16"},peerDependenciesMeta:{react:Qt}}],["sodium@>=3",{dependencies:{"node-gyp":"^3.8.0"}}],["babel-plugin-graphql-tag@<=3.1.0",{peerDependencies:{graphql:"^14.0.0 || ^15.0.0"}}],["@playwright/test@<=1.14.1",{dependencies:{"jest-matcher-utils":"^26.4.2"}}],...["babel-plugin-remove-graphql-queries@<3.14.0-next.1","babel-preset-gatsby-package@<1.14.0-next.1","create-gatsby@<1.14.0-next.1","gatsby-admin@<0.24.0-next.1","gatsby-cli@<3.14.0-next.1","gatsby-core-utils@<2.14.0-next.1","gatsby-design-tokens@<3.14.0-next.1","gatsby-legacy-polyfills@<1.14.0-next.1","gatsby-plugin-benchmark-reporting@<1.14.0-next.1","gatsby-plugin-graphql-config@<0.23.0-next.1","gatsby-plugin-image@<1.14.0-next.1","gatsby-plugin-mdx@<2.14.0-next.1","gatsby-plugin-netlify-cms@<5.14.0-next.1","gatsby-plugin-no-sourcemaps@<3.14.0-next.1","gatsby-plugin-page-creator@<3.14.0-next.1","gatsby-plugin-preact@<5.14.0-next.1","gatsby-plugin-preload-fonts@<2.14.0-next.1","gatsby-plugin-schema-snapshot@<2.14.0-next.1","gatsby-plugin-styletron@<6.14.0-next.1","gatsby-plugin-subfont@<3.14.0-next.1","gatsby-plugin-utils@<1.14.0-next.1","gatsby-recipes@<0.25.0-next.1","gatsby-source-shopify@<5.6.0-next.1","gatsby-source-wikipedia@<3.14.0-next.1","gatsby-transformer-screenshot@<3.14.0-next.1","gatsby-worker@<0.5.0-next.1"].map(e=>[e,{dependencies:{"@babel/runtime":"^7.14.8"}}]),["gatsby-core-utils@<2.14.0-next.1",{dependencies:{got:"8.3.2"}}],["gatsby-plugin-gatsby-cloud@<=3.1.0-next.0",{dependencies:{"gatsby-core-utils":"^2.13.0-next.0"}}],["gatsby-plugin-gatsby-cloud@<=3.2.0-next.1",{peerDependencies:{webpack:"*"}}],["babel-plugin-remove-graphql-queries@<=3.14.0-next.1",{dependencies:{"gatsby-core-utils":"^2.8.0-next.1"}}],["gatsby-plugin-netlify@3.13.0-next.1",{dependencies:{"gatsby-core-utils":"^2.13.0-next.0"}}],["clipanion-v3-codemod@<=0.2.0",{peerDependencies:{jscodeshift:"^0.11.0"}}],["react-live@*",{peerDependencies:{"react-dom":"*",react:"*"}}],["webpack@<4.44.1",{peerDependenciesMeta:{"webpack-cli":Qt,"webpack-command":Qt}}],["webpack@<5.0.0-beta.23",{peerDependenciesMeta:{"webpack-cli":Qt}}],["webpack-dev-server@<3.10.2",{peerDependenciesMeta:{"webpack-cli":Qt}}],["@docusaurus/responsive-loader@<1.5.0",{peerDependenciesMeta:{sharp:Qt,jimp:Qt}}],["eslint-module-utils@*",{peerDependenciesMeta:{"eslint-import-resolver-node":Qt,"eslint-import-resolver-typescript":Qt,"eslint-import-resolver-webpack":Qt,"@typescript-eslint/parser":Qt}}],["eslint-plugin-import@*",{peerDependenciesMeta:{"@typescript-eslint/parser":Qt}}],["critters-webpack-plugin@<3.0.2",{peerDependenciesMeta:{"html-webpack-plugin":Qt}}],["terser@<=5.10.0",{dependencies:{acorn:"^8.5.0"}}],["babel-preset-react-app@10.0.x <10.0.2",{dependencies:{"@babel/plugin-proposal-private-property-in-object":"^7.16.7"}}],["eslint-config-react-app@*",{peerDependenciesMeta:{typescript:Qt}}],["@vue/eslint-config-typescript@<11.0.0",{peerDependenciesMeta:{typescript:Qt}}],["unplugin-vue2-script-setup@<0.9.1",{peerDependencies:{"@vue/composition-api":"^1.4.3","@vue/runtime-dom":"^3.2.26"}}],["@cypress/snapshot@*",{dependencies:{debug:"^3.2.7"}}],["auto-relay@<=0.14.0",{peerDependencies:{"reflect-metadata":"^0.1.13"}}],["vue-template-babel-compiler@<1.2.0",{peerDependencies:{"vue-template-compiler":"^2.6.0"}}],["@parcel/transformer-image@<2.5.0",{peerDependencies:{"@parcel/core":"*"}}],["@parcel/transformer-js@<2.5.0",{peerDependencies:{"@parcel/core":"*"}}],["parcel@*",{peerDependenciesMeta:{"@parcel/core":Qt}}],["react-scripts@*",{peerDependencies:{eslint:"*"}}],["focus-trap-react@^8.0.0",{dependencies:{tabbable:"^5.3.2"}}],["react-rnd@<10.3.7",{peerDependencies:{react:">=16.3.0","react-dom":">=16.3.0"}}],["connect-mongo@<5.0.0",{peerDependencies:{"express-session":"^1.17.1"}}],["vue-i18n@<9",{peerDependencies:{vue:"^2"}}],["vue-router@<4",{peerDependencies:{vue:"^2"}}],["unified@<10",{dependencies:{"@types/unist":"^2.0.0"}}],["react-github-btn@<=1.3.0",{peerDependencies:{react:">=16.3.0"}}],["react-dev-utils@*",{peerDependencies:{typescript:">=2.7",webpack:">=4"},peerDependenciesMeta:{typescript:Qt}}],["@asyncapi/react-component@<=1.0.0-next.39",{peerDependencies:{react:">=16.8.0","react-dom":">=16.8.0"}}],["xo@*",{peerDependencies:{webpack:">=1.11.0"},peerDependenciesMeta:{webpack:Qt}}],["babel-plugin-remove-graphql-queries@<=4.20.0-next.0",{dependencies:{"@babel/types":"^7.15.4"}}],["gatsby-plugin-page-creator@<=4.20.0-next.1",{dependencies:{"fs-extra":"^10.1.0"}}],["gatsby-plugin-utils@<=3.14.0-next.1",{dependencies:{fastq:"^1.13.0"},peerDependencies:{graphql:"^15.0.0"}}],["gatsby-plugin-mdx@<3.1.0-next.1",{dependencies:{mkdirp:"^1.0.4"}}],["gatsby-plugin-mdx@^2",{peerDependencies:{gatsby:"^3.0.0-next"}}],["fdir@<=5.2.0",{peerDependencies:{picomatch:"2.x"},peerDependenciesMeta:{picomatch:Qt}}],["babel-plugin-transform-typescript-metadata@<=0.3.2",{peerDependencies:{"@babel/core":"^7","@babel/traverse":"^7"},peerDependenciesMeta:{"@babel/traverse":Qt}}],["graphql-compose@>=9.0.10",{peerDependencies:{graphql:"^14.2.0 || ^15.0.0 || ^16.0.0"}}],["vite-plugin-vuetify@<=1.0.2",{peerDependencies:{vue:"^3.0.0"}}],["webpack-plugin-vuetify@<=2.0.1",{peerDependencies:{vue:"^3.2.6"}}],["eslint-import-resolver-vite@<2.0.1",{dependencies:{debug:"^4.3.4",resolve:"^1.22.8"}}],["notistack@^3.0.0",{dependencies:{csstype:"^3.0.10"}}],["@fastify/type-provider-typebox@^5.0.0",{peerDependencies:{fastify:"^5.0.0"}}],["@fastify/type-provider-typebox@^4.0.0",{peerDependencies:{fastify:"^4.0.0"}}]];var L5;function Ude(){return typeof L5>"u"&&(L5=Ie("zlib").brotliDecompressSync(Buffer.from("G7weAByFTVk3Vs7UfHhq4yykgEM7pbW7TI43SG2S5tvGrwHBAzdz+s/npQ6tgEvobvxisrPIadkXeUAJotBn5bDZ5kAhcRqsIHe3F75Walet5hNalwgFDtxb0BiDUjiUQkjG0yW2hto9HPgiCkm316d6bC0kST72YN7D7rfkhCE9x4J0XwB0yavalxpUu2t9xszHrmtwalOxT7VslsxWcB1qpqZwERUra4psWhTV8BgwWeizurec82Caf1ABL11YMfbf8FJ9JBceZOkgmvrQPbC9DUldX/yMbmX06UQluCEjSwUoyO+EZPIjofr+/oAZUck2enraRD+oWLlnlYnj8xB+gwSo9lmmks4fXv574qSqcWA6z21uYkzMu3EWj+K23RxeQlLqiE35/rC8GcS4CGkKHKKq+zAIQwD9iRDNfiAqueLLpicFFrNsAI4zeTD/eO9MHcnRa5m8UT+M2+V+AkFST4BlKneiAQRSdST8KEAIyFlULt6wa9EBd0Ds28VmpaxquJdVt+nwdEs5xUskI13OVtFyY0UrQIRAlCuvvWivvlSKQfTO+2Q8OyUR1W5RvetaPz4jD27hdtwHFFA1Ptx6Ee/t2cY2rg2G46M1pNDRf2pWhvpy8pqMnuI3++4OF3+7OFIWXGjh+o7Nr2jNvbiYcQdQS1h903/jVFgOpA0yJ78z+x759bFA0rq+6aY5qPB4FzS3oYoLupDUhD9nDz6F6H7hpnlMf18KNKDu4IKjTWwrAnY6MFQw1W6ymOALHlFyCZmQhldg1MQHaMVVQTVgDC60TfaBqG++Y8PEoFhN/PBTZT175KNP/BlHDYGOOBmnBdzqJKplZ/ljiVG0ZBzfqeBRrrUkn6rA54462SgiliKoYVnbeptMdXNfAuaupIEi0bApF10TlgHfmEJAPUVidRVFyDupSem5po5vErPqWKhKbUIp0LozpYsIKK57dM/HKr+nguF+7924IIWMICkQ8JUigs9D+W+c4LnNoRtPPKNRUiCYmP+Jfo2lfKCKw8qpraEeWU3uiNRO6zcyKQoXPR5htmzzLznke7b4YbXW3I1lIRzmgG02Udb58U+7TpwyN7XymCgH+wuPDthZVQvRZuEP+SnLtMicz9m5zASWOBiAcLmkuFlTKuHspSIhCBD0yUPKcxu81A+4YD78rA2vtwsUEday9WNyrShyrl60rWmA+SmbYZkQOwFJWArxRYYc5jGhA5ikxYw1rx3ei4NmeX/lKiwpZ9Ln1tV2Ae7sArvxuVLbJjqJRjW1vFXAyHpvLG+8MJ6T2Ubx5M2KDa2SN6vuIGxJ9WQM9Mk3Q7aCNiZONXllhqq24DmoLbQfW2rYWsOgHWjtOmIQMyMKdiHZDjoyIq5+U700nZ6odJAoYXPQBvFNiQ78d5jaXliBqLTJEqUCwi+LiH2mx92EmNKDsJL74Z613+3lf20pxkV1+erOrjj8pW00vsPaahKUM+05ssd5uwM7K482KWEf3TCwlg/o3e5ngto7qSMz7YteIgCsF1UOcsLk7F7MxWbvrPMY473ew0G+noVL8EPbkmEMftMSeL6HFub/zy+2JQ==","base64")).toString()),L5}var M5;function _de(){return typeof M5>"u"&&(M5=Ie("zlib").brotliDecompressSync(Buffer.from("G8MSIIzURnVBnObTcvb3XE6v2S9Qgc2K801Oa5otNKEtK8BINZNcaQHy+9/vf/WXBimwutXC33P2DPc64pps5rz7NGGWaOKNSPL4Y2KRE8twut2lFOIN+OXPtRmPMRhMTILib2bEQx43az2I5d3YS8Roa5UZpF/ujHb3Djd3GDvYUfvFYSUQ39vb2cmifp/rgB4J/65JK3wRBTvMBoNBmn3mbXC63/gbBkW/2IRPri0O8bcsRBsmarF328pAln04nyJFkwUAvNu934supAqLtyerZZpJ8I8suJHhf/ocMV+scKwa8NOiDKIPXw6Ex/EEZD6TEGaW8N5zvNHYF10l6Lfooj7D5W2k3dgvQSbp2Wv8TGOayS978gxlOLVjTGXs66ozewbrjwElLtyrYNnWTfzzdEutgROUFPVMhnMoy8EjJLLlWwIEoySxliim9kYW30JUHiPVyjt0iAw/ZpPmCbUCltYPnq6ZNblIKhTNhqS/oqC9iya5sGKZTOVsTEg34n92uZTf2iPpcZih8rPW8CzA+adIGmyCPcKdLMsBLShd+zuEbTrqpwuh+DLmracZcjPC5Sdf5odDAhKpFuOsQS67RT+1VgWWygSv3YwxDnylc04/PYuaMeIzhBkLrvs7e/OUzRTF56MmfY6rI63QtEjEQzq637zQqJ39nNhu3NmoRRhW/086bHGBUtx0PE0j3aEGvkdh9WJC8y8j8mqqke9/dQ5la+Q3ba4RlhvTbnfQhPDDab3tUifkjKuOsp13mXEmO00Mu88F/M67R7LXfoFDFLNtgCSWjWX+3Jn1371pJTK9xPBiMJafvDjtFyAzu8rxeQ0TKMQXNPs5xxiBOd+BRJP8KP88XPtJIbZKh/cdW8KvBUkpqKpGoiIaA32c3/JnQr4efXt85mXvidOvn/eU3Pase1typLYBalJ14mCso9h79nuMOuCa/kZAOkJHmTjP5RM2WNoPasZUAnT1TAE/NH25hUxcQv6hQWR/m1PKk4ooXMcM4SR1iYU3fUohvqk4RY2hbmTVVIXv6TvqO+0doOjgeVFAcom+RlwJQmOVH7pr1Q9LoJT6n1DeQEB+NHygsATbIwTcOKZlJsY8G4+suX1uQLjUWwLjjs0mvSvZcLTpIGAekeR7GCgl8eo3ndAqEe2XCav4huliHjdbIPBsGJuPX7lrO9HX1UbXRH5opOe1x6JsOSgHZR+EaxuXVhpLLxm6jk1LJtZfHSc6BKPun3CpYYVMJGwEUyk8MTGG0XL5MfEwaXpnc9TKnBmlGn6nHiGREc3ysn47XIBDzA+YvFdjZzVIEDcKGpS6PbUJehFRjEne8D0lVU1XuRtlgszq6pTNlQ/3MzNOEgCWPyTct22V2mEi2krizn5VDo9B19/X2DB3hCGRMM7ONbtnAcIx/OWB1u5uPbW1gsH8irXxT/IzG0PoXWYjhbMsH3KTuoOl5o17PulcgvsfTSnKFM354GWI8luqZnrswWjiXy3G+Vbyo1KMopFmmvBwNELgaS8z8dNZchx/Cl/xjddxhMcyqtzFyONb2Zdu90NkI8pAeufe7YlXrp53v8Dj/l8vWeVspRKBGXScBBPI/HinSTGmLDOGGOCIyH0JFdOZx0gWsacNlQLJMIrBhqRxXxHF/5pseWwejlAAvZ3klZSDSYY8mkToaWejXhgNomeGtx1DTLEUFMRkgF5yFB22WYdJnaWN14r1YJj81hGi45+jrADS5nYRhCiSlCJJ1nL8pYX+HDSMhdTEWyRcgHVp/IsUIZYMfT+YYncUQPgcxNGCHfZ88vDdrcUuaGIl6zhAsiaq7R5dfqrqXH/JcBhfjT8D0azayIyEz75Nxp6YkcyDxlJq3EXnJUpqDohJJOysL1t1uNiHESlvsxPb5cpbW0+ICZqJmUZus1BMW0F5IVBODLIo2zHHjA0=","base64")).toString()),M5}var U5;function Hde(){return typeof U5>"u"&&(U5=Ie("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),U5}var jde=new Map([[j.makeIdent(null,"fsevents").identHash,Ude],[j.makeIdent(null,"resolve").identHash,_de],[j.makeIdent(null,"typescript").identHash,Hde]]),zot={hooks:{registerPackageExtensions:async(e,t)=>{for(let[r,s]of O5)t(j.parseDescriptor(r,!0),s)},getBuiltinPatch:async(e,t)=>{let r="compat/";if(!t.startsWith(r))return;let s=j.parseIdent(t.slice(r.length)),a=jde.get(s.identHash)?.();return typeof a<"u"?a:null},reduceDependency:async(e,t,r,s)=>typeof jde.get(e.identHash)>"u"?e:j.makeDescriptor(e,j.makeRange({protocol:"patch:",source:j.stringifyDescriptor(e),selector:`optional!builtin`,params:null}))}},Zot=zot;var nq={};Yt(nq,{ConstraintsCheckCommand:()=>GC,ConstraintsQueryCommand:()=>HC,ConstraintsSourceCommand:()=>jC,default:()=>dat});qe();qe();iS();var LC=class{constructor(t){this.project=t}createEnvironment(){let t=new OC(["cwd","ident"]),r=new OC(["workspace","type","ident"]),s=new OC(["ident"]),a={manifestUpdates:new Map,reportedErrors:new Map},n=new Map,c=new Map;for(let f of this.project.storedPackages.values()){let p=Array.from(f.peerDependencies.values(),h=>[j.stringifyIdent(h),h.range]);n.set(f.locatorHash,{workspace:null,ident:j.stringifyIdent(f),version:f.version,dependencies:new Map,peerDependencies:new Map(p.filter(([h])=>f.peerDependenciesMeta.get(h)?.optional!==!0)),optionalPeerDependencies:new Map(p.filter(([h])=>f.peerDependenciesMeta.get(h)?.optional===!0))})}for(let f of this.project.storedPackages.values()){let p=n.get(f.locatorHash);p.dependencies=new Map(Array.from(f.dependencies.values(),h=>{let E=this.project.storedResolutions.get(h.descriptorHash);if(typeof E>"u")throw new Error("Assertion failed: The resolution should have been registered");let C=n.get(E);if(typeof C>"u")throw new Error("Assertion failed: The package should have been registered");return[j.stringifyIdent(h),C]})),p.dependencies.delete(p.ident)}for(let f of this.project.workspaces){let p=j.stringifyIdent(f.anchoredLocator),h=f.manifest.exportTo({}),E=n.get(f.anchoredLocator.locatorHash);if(typeof E>"u")throw new Error("Assertion failed: The package should have been registered");let C=(T,O,{caller:U=Ui.getCaller()}={})=>{let Y=nS(T),te=Ge.getMapWithDefault(a.manifestUpdates,f.cwd),ie=Ge.getMapWithDefault(te,Y),ue=Ge.getSetWithDefault(ie,O);U!==null&&ue.add(U)},S=T=>C(T,void 0,{caller:Ui.getCaller()}),x=T=>{Ge.getArrayWithDefault(a.reportedErrors,f.cwd).push(T)},I=t.insert({cwd:f.relativeCwd,ident:p,manifest:h,pkg:E,set:C,unset:S,error:x});c.set(f,I);for(let T of Ut.allDependencies)for(let O of f.manifest[T].values()){let U=j.stringifyIdent(O),Y=()=>{C([T,U],void 0,{caller:Ui.getCaller()})},te=ue=>{C([T,U],ue,{caller:Ui.getCaller()})},ie=null;if(T!=="peerDependencies"&&(T!=="dependencies"||!f.manifest.devDependencies.has(O.identHash))){let ue=f.anchoredPackage.dependencies.get(O.identHash);if(ue){if(typeof ue>"u")throw new Error("Assertion failed: The dependency should have been registered");let ae=this.project.storedResolutions.get(ue.descriptorHash);if(typeof ae>"u")throw new Error("Assertion failed: The resolution should have been registered");let de=n.get(ae);if(typeof de>"u")throw new Error("Assertion failed: The package should have been registered");ie=de}}r.insert({workspace:I,ident:U,range:O.range,type:T,resolution:ie,update:te,delete:Y,error:x})}}for(let f of this.project.storedPackages.values()){let p=this.project.tryWorkspaceByLocator(f);if(!p)continue;let h=c.get(p);if(typeof h>"u")throw new Error("Assertion failed: The workspace should have been registered");let E=n.get(f.locatorHash);if(typeof E>"u")throw new Error("Assertion failed: The package should have been registered");E.workspace=h}return{workspaces:t,dependencies:r,packages:s,result:a}}async process(){let t=this.createEnvironment(),r={Yarn:{workspace:a=>t.workspaces.find(a)[0]??null,workspaces:a=>t.workspaces.find(a),dependency:a=>t.dependencies.find(a)[0]??null,dependencies:a=>t.dependencies.find(a),package:a=>t.packages.find(a)[0]??null,packages:a=>t.packages.find(a)}},s=await this.project.loadUserConfig();return s?.constraints?(await s.constraints(r),t.result):null}};qe();qe();Vt();var HC=class extends At{constructor(){super(...arguments);this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.query=he.String()}static{this.paths=[["constraints","query"]]}static{this.usage=at.Usage({category:"Constraints-related commands",description:"query the constraints fact database",details:` - This command will output all matches to the given prolog query. - `,examples:[["List all dependencies throughout the workspace","yarn constraints query 'workspace_has_dependency(_, DependencyName, _, _).'"]]})}async execute(){let{Constraints:r}=await Promise.resolve().then(()=>(lS(),aS)),s=await ze.find(this.context.cwd,this.context.plugins),{project:a}=await Rt.find(s,this.context.cwd),n=await r.find(a),c=this.query;return c.endsWith(".")||(c=`${c}.`),(await Ot.start({configuration:s,json:this.json,stdout:this.context.stdout},async p=>{for await(let h of n.query(c)){let E=Array.from(Object.entries(h)),C=E.length,S=E.reduce((x,[I])=>Math.max(x,I.length),0);for(let x=0;x(lS(),aS)),s=await ze.find(this.context.cwd,this.context.plugins),{project:a}=await Rt.find(s,this.context.cwd),n=await r.find(a);this.context.stdout.write(this.verbose?n.fullSource:n.source)}};qe();qe();Vt();iS();var GC=class extends At{constructor(){super(...arguments);this.fix=he.Boolean("--fix",!1,{description:"Attempt to automatically fix unambiguous issues, following a multi-pass process"});this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["constraints"]]}static{this.usage=at.Usage({category:"Constraints-related commands",description:"check that the project constraints are met",details:` - This command will run constraints on your project and emit errors for each one that is found but isn't met. If any error is emitted the process will exit with a non-zero exit code. - - If the \`--fix\` flag is used, Yarn will attempt to automatically fix the issues the best it can, following a multi-pass process (with a maximum of 10 iterations). Some ambiguous patterns cannot be autofixed, in which case you'll have to manually specify the right resolution. - - For more information as to how to write constraints, please consult our dedicated page on our website: https://yarnpkg.com/features/constraints. - `,examples:[["Check that all constraints are satisfied","yarn constraints"],["Autofix all unmet constraints","yarn constraints --fix"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Rt.find(r,this.context.cwd);await s.restoreInstallState();let a=await s.loadUserConfig(),n;if(a?.constraints)n=new LC(s);else{let{Constraints:h}=await Promise.resolve().then(()=>(lS(),aS));n=await h.find(s)}let c,f=!1,p=!1;for(let h=this.fix?10:1;h>0;--h){let E=await n.process();if(!E)break;let{changedWorkspaces:C,remainingErrors:S}=jT(s,E,{fix:this.fix}),x=[];for(let[I,T]of C){let O=I.manifest.indent;I.manifest=new Ut,I.manifest.indent=O,I.manifest.load(T),x.push(I.persistManifest())}if(await Promise.all(x),!(C.size>0&&h>1)){c=Gde(S,{configuration:r}),f=!1,p=!0;for(let[,I]of S)for(let T of I)T.fixable?f=!0:p=!1}}if(c.children.length===0)return 0;if(f){let h=p?`Those errors can all be fixed by running ${pe.pretty(r,"yarn constraints --fix",pe.Type.CODE)}`:`Errors prefixed by '\u2699' can be fixed by running ${pe.pretty(r,"yarn constraints --fix",pe.Type.CODE)}`;await Ot.start({configuration:r,stdout:this.context.stdout,includeNames:!1,includeFooter:!1},async E=>{E.reportInfo(0,h),E.reportSeparator()})}return c.children=Ge.sortMap(c.children,h=>h.value[1]),Rs.emitTree(c,{configuration:r,stdout:this.context.stdout,json:this.json,separators:1}),1}};iS();var gat={configuration:{enableConstraintsChecks:{description:"If true, constraints will run during installs",type:"BOOLEAN",default:!1},constraintsPath:{description:"The path of the constraints file.",type:"ABSOLUTE_PATH",default:"./constraints.pro"}},commands:[HC,jC,GC],hooks:{async validateProjectAfterInstall(e,{reportError:t}){if(!e.configuration.get("enableConstraintsChecks"))return;let r=await e.loadUserConfig(),s;if(r?.constraints)s=new LC(e);else{let{Constraints:c}=await Promise.resolve().then(()=>(lS(),aS));s=await c.find(e)}let a=await s.process();if(!a)return;let{remainingErrors:n}=jT(e,a);if(n.size!==0)if(e.configuration.isCI)for(let[c,f]of n)for(let p of f)t(84,`${pe.pretty(e.configuration,c.anchoredLocator,pe.Type.IDENT)}: ${p.text}`);else t(84,`Constraint check failed; run ${pe.pretty(e.configuration,"yarn constraints",pe.Type.CODE)} for more details`)}}},dat=gat;var iq={};Yt(iq,{CreateCommand:()=>qC,DlxCommand:()=>WC,default:()=>yat});qe();Vt();var qC=class extends At{constructor(){super(...arguments);this.pkg=he.String("-p,--package",{description:"The package to run the provided command from"});this.quiet=he.Boolean("-q,--quiet",!1,{description:"Only report critical errors instead of printing the full install logs"});this.command=he.String();this.args=he.Proxy()}static{this.paths=[["create"]]}async execute(){let r=[];this.pkg&&r.push("--package",this.pkg),this.quiet&&r.push("--quiet");let s=this.command.replace(/^(@[^@/]+)(@|$)/,"$1/create$2"),a=j.parseDescriptor(s),n=a.name.match(/^create(-|$)/)?a:a.scope?j.makeIdent(a.scope,`create-${a.name}`):j.makeIdent(null,`create-${a.name}`),c=j.stringifyIdent(n);return a.range!=="unknown"&&(c+=`@${a.range}`),this.cli.run(["dlx",...r,c,...this.args])}};qe();qe();Dt();Vt();var WC=class extends At{constructor(){super(...arguments);this.packages=he.Array("-p,--package",{description:"The package(s) to install before running the command"});this.quiet=he.Boolean("-q,--quiet",!1,{description:"Only report critical errors instead of printing the full install logs"});this.command=he.String();this.args=he.Proxy()}static{this.paths=[["dlx"]]}static{this.usage=at.Usage({description:"run a package in a temporary environment",details:"\n This command will install a package within a temporary environment, and run its binary script if it contains any. The binary will run within the current cwd.\n\n By default Yarn will download the package named `command`, but this can be changed through the use of the `-p,--package` flag which will instruct Yarn to still run the same command but from a different package.\n\n Using `yarn dlx` as a replacement of `yarn add` isn't recommended, as it makes your project non-deterministic (Yarn doesn't keep track of the packages installed through `dlx` - neither their name, nor their version).\n ",examples:[["Use create-vite to scaffold a new Vite project","yarn dlx create-vite"],["Install multiple packages for a single command",`yarn dlx -p typescript -p ts-node ts-node --transpile-only -e "console.log('hello!')"`]]})}async execute(){return ze.telemetry=null,await le.mktempPromise(async r=>{let s=K.join(r,`dlx-${process.pid}`);await le.mkdirPromise(s),await le.writeFilePromise(K.join(s,"package.json"),`{} -`),await le.writeFilePromise(K.join(s,"yarn.lock"),"");let a=K.join(s,".yarnrc.yml"),n=await ze.findProjectCwd(this.context.cwd),f={enableGlobalCache:!(await ze.find(this.context.cwd,null,{strict:!1})).get("enableGlobalCache"),enableTelemetry:!1,logFilters:[{code:Kf(68),level:pe.LogLevel.Discard}]},p=n!==null?K.join(n,".yarnrc.yml"):null;p!==null&&le.existsSync(p)?(await le.copyFilePromise(p,a),await ze.updateConfiguration(s,O=>{let U=Ge.toMerged(O,f);return Array.isArray(O.plugins)&&(U.plugins=O.plugins.map(Y=>{let te=typeof Y=="string"?Y:Y.path,ie=fe.isAbsolute(te)?te:fe.resolve(fe.fromPortablePath(n),te);return typeof Y=="string"?ie:{path:ie,spec:Y.spec}})),U})):await le.writeJsonPromise(a,f);let h=this.packages??[this.command],E=j.parseDescriptor(this.command).name,C=await this.cli.run(["add","--fixed","--",...h],{cwd:s,quiet:this.quiet});if(C!==0)return C;this.quiet||this.context.stdout.write(` -`);let S=await ze.find(s,this.context.plugins),{project:x,workspace:I}=await Rt.find(S,s);if(I===null)throw new ar(x.cwd,s);await x.restoreInstallState();let T=await Cn.getWorkspaceAccessibleBinaries(I);return T.has(E)===!1&&T.size===1&&typeof this.packages>"u"&&(E=Array.from(T)[0][0]),await Cn.executeWorkspaceAccessibleBinary(I,E,this.args,{packageAccessibleBinaries:T,cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})})}};var mat={commands:[qC,WC]},yat=mat;var aq={};Yt(aq,{ExecFetcher:()=>uS,ExecResolver:()=>fS,default:()=>Cat,execUtils:()=>VT});qe();qe();Dt();var uA="exec:";var VT={};Yt(VT,{loadGeneratorFile:()=>cS,makeLocator:()=>oq,makeSpec:()=>gme,parseSpec:()=>sq});qe();Dt();function sq(e){let{params:t,selector:r}=j.parseRange(e),s=fe.toPortablePath(r);return{parentLocator:t&&typeof t.locator=="string"?j.parseLocator(t.locator):null,path:s}}function gme({parentLocator:e,path:t,generatorHash:r,protocol:s}){let a=e!==null?{locator:j.stringifyLocator(e)}:{},n=typeof r<"u"?{hash:r}:{};return j.makeRange({protocol:s,source:t,selector:t,params:{...n,...a}})}function oq(e,{parentLocator:t,path:r,generatorHash:s,protocol:a}){return j.makeLocator(e,gme({parentLocator:t,path:r,generatorHash:s,protocol:a}))}async function cS(e,t,r){let{parentLocator:s,path:a}=j.parseFileStyleRange(e,{protocol:t}),n=K.isAbsolute(a)?{packageFs:new bn(vt.root),prefixPath:vt.dot,localPath:vt.root}:await r.fetcher.fetch(s,r),c=n.localPath?{packageFs:new bn(vt.root),prefixPath:K.relative(vt.root,n.localPath)}:n;n!==c&&n.releaseFs&&n.releaseFs();let f=c.packageFs,p=K.join(c.prefixPath,a);return await f.readFilePromise(p,"utf8")}var uS=class{supports(t,r){return!!t.reference.startsWith(uA)}getLocalPath(t,r){let{parentLocator:s,path:a}=j.parseFileStyleRange(t.reference,{protocol:uA});if(K.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(s,r);return n===null?null:K.resolve(n,a)}async fetch(t,r){let s=r.checksums.get(t.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(t,s,{onHit:()=>r.report.reportCacheHit(t),onMiss:()=>r.report.reportCacheMiss(t),loader:()=>this.fetchFromDisk(t,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:j.getIdentVendorPath(t),localPath:this.getLocalPath(t,r),checksum:c}}async fetchFromDisk(t,r){let s=await cS(t.reference,uA,r);return le.mktempPromise(async a=>{let n=K.join(a,"generator.js");return await le.writeFilePromise(n,s),le.mktempPromise(async c=>{if(await this.generatePackage(c,t,n,r),!le.existsSync(K.join(c,"build")))throw new Error("The script should have generated a build directory");return await ds.makeArchiveFromDirectory(K.join(c,"build"),{prefixPath:j.getIdentVendorPath(t),compressionLevel:r.project.configuration.get("compressionLevel")})})})}async generatePackage(t,r,s,a){return await le.mktempPromise(async n=>{let c=await Cn.makeScriptEnv({project:a.project,binFolder:n}),f=K.join(t,"runtime.js");return await le.mktempPromise(async p=>{let h=K.join(p,"buildfile.log"),E=K.join(t,"generator"),C=K.join(t,"build");await le.mkdirPromise(E),await le.mkdirPromise(C);let S={tempDir:fe.fromPortablePath(E),buildDir:fe.fromPortablePath(C),locator:j.stringifyLocator(r)};await le.writeFilePromise(f,` - // Expose 'Module' as a global variable - Object.defineProperty(global, 'Module', { - get: () => require('module'), - configurable: true, - enumerable: false, - }); - - // Expose non-hidden built-in modules as global variables - for (const name of Module.builtinModules.filter((name) => name !== 'module' && !name.startsWith('_'))) { - Object.defineProperty(global, name, { - get: () => require(name), - configurable: true, - enumerable: false, - }); - } - - // Expose the 'execEnv' global variable - Object.defineProperty(global, 'execEnv', { - value: { - ...${JSON.stringify(S)}, - }, - enumerable: true, - }); - `);let x=c.NODE_OPTIONS||"",I=/\s*--require\s+\S*\.pnp\.c?js\s*/g;x=x.replace(I," ").trim(),c.NODE_OPTIONS=x;let{stdout:T,stderr:O}=a.project.configuration.getSubprocessStreams(h,{header:`# This file contains the result of Yarn generating a package (${j.stringifyLocator(r)}) -`,prefix:j.prettyLocator(a.project.configuration,r),report:a.report}),{code:U}=await qr.pipevp(process.execPath,["--require",fe.fromPortablePath(f),fe.fromPortablePath(s),j.stringifyIdent(r)],{cwd:t,env:c,stdin:null,stdout:T,stderr:O});if(U!==0)throw le.detachTemp(p),new Error(`Package generation failed (exit code ${U}, logs can be found here: ${pe.pretty(a.project.configuration,h,pe.Type.PATH)})`)})})}};qe();qe();var Eat=2,fS=class{supportsDescriptor(t,r){return!!t.range.startsWith(uA)}supportsLocator(t,r){return!!t.reference.startsWith(uA)}shouldPersistResolution(t,r){return!1}bindDescriptor(t,r,s){return j.bindDescriptor(t,{locator:j.stringifyLocator(r)})}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){if(!s.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{path:a,parentLocator:n}=sq(t.range);if(n===null)throw new Error("Assertion failed: The descriptor should have been bound");let c=await cS(j.makeRange({protocol:uA,source:a,selector:a,params:{locator:j.stringifyLocator(n)}}),uA,s.fetchOptions),f=Ln.makeHash(`${Eat}`,c).slice(0,6);return[oq(t,{parentLocator:n,path:a,generatorHash:f,protocol:uA})]}async getSatisfying(t,r,s,a){let[n]=await this.getCandidates(t,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(t,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let s=await r.fetchOptions.fetcher.fetch(t,r.fetchOptions),a=await Ge.releaseAfterUseAsync(async()=>await Ut.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...t,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var Iat={fetchers:[uS],resolvers:[fS]},Cat=Iat;var cq={};Yt(cq,{FileFetcher:()=>gS,FileResolver:()=>dS,TarballFileFetcher:()=>mS,TarballFileResolver:()=>yS,default:()=>vat,fileUtils:()=>Rm});qe();Dt();var VC=/^(?:[a-zA-Z]:[\\/]|\.{0,2}\/)/,AS=/^[^?]*\.(?:tar\.gz|tgz)(?:::.*)?$/,ts="file:";var Rm={};Yt(Rm,{fetchArchiveFromLocator:()=>hS,makeArchiveFromLocator:()=>YT,makeBufferFromLocator:()=>lq,makeLocator:()=>YC,makeSpec:()=>dme,parseSpec:()=>pS});qe();Dt();function pS(e){let{params:t,selector:r}=j.parseRange(e),s=fe.toPortablePath(r);return{parentLocator:t&&typeof t.locator=="string"?j.parseLocator(t.locator):null,path:s}}function dme({parentLocator:e,path:t,hash:r,protocol:s}){let a=e!==null?{locator:j.stringifyLocator(e)}:{},n=typeof r<"u"?{hash:r}:{};return j.makeRange({protocol:s,source:t,selector:t,params:{...n,...a}})}function YC(e,{parentLocator:t,path:r,hash:s,protocol:a}){return j.makeLocator(e,dme({parentLocator:t,path:r,hash:s,protocol:a}))}async function hS(e,t){let{parentLocator:r,path:s}=j.parseFileStyleRange(e.reference,{protocol:ts}),a=K.isAbsolute(s)?{packageFs:new bn(vt.root),prefixPath:vt.dot,localPath:vt.root}:await t.fetcher.fetch(r,t),n=a.localPath?{packageFs:new bn(vt.root),prefixPath:K.relative(vt.root,a.localPath)}:a;a!==n&&a.releaseFs&&a.releaseFs();let c=n.packageFs,f=K.join(n.prefixPath,s);return await Ge.releaseAfterUseAsync(async()=>await c.readFilePromise(f),n.releaseFs)}async function YT(e,{protocol:t,fetchOptions:r,inMemory:s=!1}){let{parentLocator:a,path:n}=j.parseFileStyleRange(e.reference,{protocol:t}),c=K.isAbsolute(n)?{packageFs:new bn(vt.root),prefixPath:vt.dot,localPath:vt.root}:await r.fetcher.fetch(a,r),f=c.localPath?{packageFs:new bn(vt.root),prefixPath:K.relative(vt.root,c.localPath)}:c;c!==f&&c.releaseFs&&c.releaseFs();let p=f.packageFs,h=K.join(f.prefixPath,n);return await Ge.releaseAfterUseAsync(async()=>await ds.makeArchiveFromDirectory(h,{baseFs:p,prefixPath:j.getIdentVendorPath(e),compressionLevel:r.project.configuration.get("compressionLevel"),inMemory:s}),f.releaseFs)}async function lq(e,{protocol:t,fetchOptions:r}){return(await YT(e,{protocol:t,fetchOptions:r,inMemory:!0})).getBufferAndClose()}var gS=class{supports(t,r){return!!t.reference.startsWith(ts)}getLocalPath(t,r){let{parentLocator:s,path:a}=j.parseFileStyleRange(t.reference,{protocol:ts});if(K.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(s,r);return n===null?null:K.resolve(n,a)}async fetch(t,r){let s=r.checksums.get(t.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(t,s,{onHit:()=>r.report.reportCacheHit(t),onMiss:()=>r.report.reportCacheMiss(t,`${j.prettyLocator(r.project.configuration,t)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(t,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:j.getIdentVendorPath(t),localPath:this.getLocalPath(t,r),checksum:c}}async fetchFromDisk(t,r){return YT(t,{protocol:ts,fetchOptions:r})}};qe();qe();var wat=2,dS=class{supportsDescriptor(t,r){return t.range.match(VC)?!0:!!t.range.startsWith(ts)}supportsLocator(t,r){return!!t.reference.startsWith(ts)}shouldPersistResolution(t,r){return!1}bindDescriptor(t,r,s){return VC.test(t.range)&&(t=j.makeDescriptor(t,`${ts}${t.range}`)),j.bindDescriptor(t,{locator:j.stringifyLocator(r)})}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){if(!s.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{path:a,parentLocator:n}=pS(t.range);if(n===null)throw new Error("Assertion failed: The descriptor should have been bound");let c=await lq(j.makeLocator(t,j.makeRange({protocol:ts,source:a,selector:a,params:{locator:j.stringifyLocator(n)}})),{protocol:ts,fetchOptions:s.fetchOptions}),f=Ln.makeHash(`${wat}`,c).slice(0,6);return[YC(t,{parentLocator:n,path:a,hash:f,protocol:ts})]}async getSatisfying(t,r,s,a){let[n]=await this.getCandidates(t,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(t,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let s=await r.fetchOptions.fetcher.fetch(t,r.fetchOptions),a=await Ge.releaseAfterUseAsync(async()=>await Ut.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...t,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};qe();var mS=class{supports(t,r){return AS.test(t.reference)?!!t.reference.startsWith(ts):!1}getLocalPath(t,r){return null}async fetch(t,r){let s=r.checksums.get(t.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(t,s,{onHit:()=>r.report.reportCacheHit(t),onMiss:()=>r.report.reportCacheMiss(t,`${j.prettyLocator(r.project.configuration,t)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(t,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:j.getIdentVendorPath(t),checksum:c}}async fetchFromDisk(t,r){let s=await hS(t,r);return await ds.convertToZip(s,{configuration:r.project.configuration,prefixPath:j.getIdentVendorPath(t),stripComponents:1})}};qe();qe();qe();var yS=class{supportsDescriptor(t,r){return AS.test(t.range)?!!(t.range.startsWith(ts)||VC.test(t.range)):!1}supportsLocator(t,r){return AS.test(t.reference)?!!t.reference.startsWith(ts):!1}shouldPersistResolution(t,r){return!1}bindDescriptor(t,r,s){return VC.test(t.range)&&(t=j.makeDescriptor(t,`${ts}${t.range}`)),j.bindDescriptor(t,{locator:j.stringifyLocator(r)})}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){if(!s.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{path:a,parentLocator:n}=pS(t.range);if(n===null)throw new Error("Assertion failed: The descriptor should have been bound");let c=YC(t,{parentLocator:n,path:a,hash:"",protocol:ts}),f=await hS(c,s.fetchOptions),p=Ln.makeHash(f).slice(0,6);return[YC(t,{parentLocator:n,path:a,hash:p,protocol:ts})]}async getSatisfying(t,r,s,a){let[n]=await this.getCandidates(t,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(t,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let s=await r.fetchOptions.fetcher.fetch(t,r.fetchOptions),a=await Ge.releaseAfterUseAsync(async()=>await Ut.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...t,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var Bat={fetchers:[mS,gS],resolvers:[yS,dS]},vat=Bat;var Aq={};Yt(Aq,{GithubFetcher:()=>ES,default:()=>Dat,githubUtils:()=>KT});qe();Dt();var KT={};Yt(KT,{invalidGithubUrlMessage:()=>Eme,isGithubUrl:()=>uq,parseGithubUrl:()=>fq});var mme=et(Ie("querystring")),yme=[/^https?:\/\/(?:([^/]+?)@)?github.com\/([^/#]+)\/([^/#]+)\/tarball\/([^/#]+)(?:#(.*))?$/,/^https?:\/\/(?:([^/]+?)@)?github.com\/([^/#]+)\/([^/#]+?)(?:\.git)?(?:#(.*))?$/];function uq(e){return e?yme.some(t=>!!e.match(t)):!1}function fq(e){let t;for(let f of yme)if(t=e.match(f),t)break;if(!t)throw new Error(Eme(e));let[,r,s,a,n="master"]=t,{commit:c}=mme.default.parse(n);return n=c||n.replace(/[^:]*:/,""),{auth:r,username:s,reponame:a,treeish:n}}function Eme(e){return`Input cannot be parsed as a valid GitHub URL ('${e}').`}var ES=class{supports(t,r){return!!uq(t.reference)}getLocalPath(t,r){return null}async fetch(t,r){let s=r.checksums.get(t.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(t,s,{onHit:()=>r.report.reportCacheHit(t),onMiss:()=>r.report.reportCacheMiss(t,`${j.prettyLocator(r.project.configuration,t)} can't be found in the cache and will be fetched from GitHub`),loader:()=>this.fetchFromNetwork(t,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:j.getIdentVendorPath(t),checksum:c}}async fetchFromNetwork(t,r){let s=await nn.get(this.getLocatorUrl(t,r),{configuration:r.project.configuration});return await le.mktempPromise(async a=>{let n=new bn(a);await ds.extractArchiveTo(s,n,{stripComponents:1});let c=Oa.splitRepoUrl(t.reference),f=K.join(a,"package.tgz");await Cn.prepareExternalProject(a,f,{configuration:r.project.configuration,report:r.report,workspace:c.extra.workspace,locator:t});let p=await le.readFilePromise(f);return await ds.convertToZip(p,{configuration:r.project.configuration,prefixPath:j.getIdentVendorPath(t),stripComponents:1})})}getLocatorUrl(t,r){let{auth:s,username:a,reponame:n,treeish:c}=fq(t.reference);return`https://${s?`${s}@`:""}github.com/${a}/${n}/archive/${c}.tar.gz`}};var Sat={hooks:{async fetchHostedRepository(e,t,r){if(e!==null)return e;let s=new ES;if(!s.supports(t,r))return null;try{return await s.fetch(t,r)}catch{return null}}}},Dat=Sat;var pq={};Yt(pq,{TarballHttpFetcher:()=>CS,TarballHttpResolver:()=>wS,default:()=>Pat});qe();function IS(e){let t;try{t=new URL(e)}catch{return!1}return!(t.protocol!=="http:"&&t.protocol!=="https:"||!t.pathname.match(/(\.tar\.gz|\.tgz|\/[^.]+)$/))}var CS=class{supports(t,r){return IS(t.reference)}getLocalPath(t,r){return null}async fetch(t,r){let s=r.checksums.get(t.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(t,s,{onHit:()=>r.report.reportCacheHit(t),onMiss:()=>r.report.reportCacheMiss(t,`${j.prettyLocator(r.project.configuration,t)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(t,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:j.getIdentVendorPath(t),checksum:c}}async fetchFromNetwork(t,r){let s=await nn.get(t.reference,{configuration:r.project.configuration});return await ds.convertToZip(s,{configuration:r.project.configuration,prefixPath:j.getIdentVendorPath(t),stripComponents:1})}};qe();qe();var wS=class{supportsDescriptor(t,r){return IS(t.range)}supportsLocator(t,r){return IS(t.reference)}shouldPersistResolution(t,r){return!0}bindDescriptor(t,r,s){return t}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){return[j.convertDescriptorToLocator(t)]}async getSatisfying(t,r,s,a){let[n]=await this.getCandidates(t,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(t,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let s=await r.fetchOptions.fetcher.fetch(t,r.fetchOptions),a=await Ge.releaseAfterUseAsync(async()=>await Ut.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...t,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var bat={fetchers:[CS],resolvers:[wS]},Pat=bat;var hq={};Yt(hq,{InitCommand:()=>K0,InitInitializerCommand:()=>KC,default:()=>kat});Vt();qe();qe();Dt();Vt();var K0=class extends At{constructor(){super(...arguments);this.private=he.Boolean("-p,--private",!1,{description:"Initialize a private package"});this.workspace=he.Boolean("-w,--workspace",!1,{description:"Initialize a workspace root with a `packages/` directory"});this.install=he.String("-i,--install",!1,{tolerateBoolean:!0,description:"Initialize a package with a specific bundle that will be locked in the project"});this.name=he.String("-n,--name",{description:"Initialize a package with the given name"});this.usev2=he.Boolean("-2",!1,{hidden:!0});this.yes=he.Boolean("-y,--yes",{hidden:!0})}static{this.paths=[["init"]]}static{this.usage=at.Usage({description:"create a new package",details:"\n This command will setup a new package in your local directory.\n\n If the `-p,--private` or `-w,--workspace` options are set, the package will be private by default.\n\n If the `-w,--workspace` option is set, the package will be configured to accept a set of workspaces in the `packages/` directory.\n\n If the `-i,--install` option is given a value, Yarn will first download it using `yarn set version` and only then forward the init call to the newly downloaded bundle. Without arguments, the downloaded bundle will be `latest`.\n\n The initial settings of the manifest can be changed by using the `initScope` and `initFields` configuration values. Additionally, Yarn will generate an EditorConfig file whose rules can be altered via `initEditorConfig`, and will initialize a Git repository in the current directory.\n ",examples:[["Create a new package in the local directory","yarn init"],["Create a new private package in the local directory","yarn init -p"],["Create a new package and store the Yarn release inside","yarn init -i=latest"],["Create a new private package and defines it as a workspace root","yarn init -w"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=typeof this.install=="string"?this.install:this.usev2||this.install===!0?"latest":null;return s!==null?await this.executeProxy(r,s):await this.executeRegular(r)}async executeProxy(r,s){if(r.projectCwd!==null&&r.projectCwd!==this.context.cwd)throw new st("Cannot use the --install flag from within a project subdirectory");le.existsSync(this.context.cwd)||await le.mkdirPromise(this.context.cwd,{recursive:!0});let a=K.join(this.context.cwd,Er.lockfile);le.existsSync(a)||await le.writeFilePromise(a,"");let n=await this.cli.run(["set","version",s],{quiet:!0});if(n!==0)return n;let c=[];return this.private&&c.push("-p"),this.workspace&&c.push("-w"),this.name&&c.push(`-n=${this.name}`),this.yes&&c.push("-y"),await le.mktempPromise(async f=>{let{code:p}=await qr.pipevp("yarn",["init",...c],{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,env:await Cn.makeScriptEnv({binFolder:f})});return p})}async initialize(){}async executeRegular(r){let s=null;try{s=(await Rt.find(r,this.context.cwd)).project}catch{s=null}le.existsSync(this.context.cwd)||await le.mkdirPromise(this.context.cwd,{recursive:!0});let a=await Ut.tryFind(this.context.cwd),n=a??new Ut,c=Object.fromEntries(r.get("initFields").entries());n.load(c),n.name=n.name??j.makeIdent(r.get("initScope"),this.name??K.basename(this.context.cwd)),n.packageManager=An&&Ge.isTaggedYarnVersion(An)?`yarn@${An}`:null,(!a&&this.workspace||this.private)&&(n.private=!0),this.workspace&&n.workspaceDefinitions.length===0&&(await le.mkdirPromise(K.join(this.context.cwd,"packages"),{recursive:!0}),n.workspaceDefinitions=[{pattern:"packages/*"}]);let f={};n.exportTo(f);let p=K.join(this.context.cwd,Ut.fileName);await le.changeFilePromise(p,`${JSON.stringify(f,null,2)} -`,{automaticNewlines:!0});let h=[p],E=K.join(this.context.cwd,"README.md");if(le.existsSync(E)||(await le.writeFilePromise(E,`# ${j.stringifyIdent(n.name)} -`),h.push(E)),!s||s.cwd===this.context.cwd){let C=K.join(this.context.cwd,Er.lockfile);le.existsSync(C)||(await le.writeFilePromise(C,""),h.push(C));let x=[".yarn/*","!.yarn/patches","!.yarn/plugins","!.yarn/releases","!.yarn/sdks","!.yarn/versions","","# Whether you use PnP or not, the node_modules folder is often used to store","# build artifacts that should be gitignored","node_modules","","# Swap the comments on the following lines if you wish to use zero-installs","# In that case, don't forget to run `yarn config set enableGlobalCache false`!","# Documentation here: https://yarnpkg.com/features/caching#zero-installs","","#!.yarn/cache",".pnp.*"].map(ue=>`${ue} -`).join(""),I=K.join(this.context.cwd,".gitignore");le.existsSync(I)||(await le.writeFilePromise(I,x),h.push(I));let O=["/.yarn/** linguist-vendored","/.yarn/releases/* binary","/.yarn/plugins/**/* binary","/.pnp.* binary linguist-generated"].map(ue=>`${ue} -`).join(""),U=K.join(this.context.cwd,".gitattributes");le.existsSync(U)||(await le.writeFilePromise(U,O),h.push(U));let Y={"*":{charset:"utf-8",endOfLine:"lf",indentSize:2,indentStyle:"space",insertFinalNewline:!0}};Ge.mergeIntoTarget(Y,r.get("initEditorConfig"));let te=`root = true -`;for(let[ue,ae]of Object.entries(Y)){te+=` -[${ue}] -`;for(let[de,Ae]of Object.entries(ae)){let Ce=de.replace(/[A-Z]/g,Ee=>`_${Ee.toLowerCase()}`);te+=`${Ce} = ${Ae} -`}}let ie=K.join(this.context.cwd,".editorconfig");le.existsSync(ie)||(await le.writeFilePromise(ie,te),h.push(ie)),await this.cli.run(["install"],{quiet:!0}),await this.initialize(),le.existsSync(K.join(this.context.cwd,".git"))||(await qr.execvp("git",["init"],{cwd:this.context.cwd}),await qr.execvp("git",["add","--",...h],{cwd:this.context.cwd}),await qr.execvp("git",["commit","--allow-empty","-m","First commit"],{cwd:this.context.cwd}))}}};var KC=class extends K0{constructor(){super(...arguments);this.initializer=he.String();this.argv=he.Proxy()}static{this.paths=[["init"]]}async initialize(){this.context.stdout.write(` -`),await this.cli.run(["dlx",this.initializer,...this.argv],{quiet:!0})}};var xat={configuration:{initScope:{description:"Scope used when creating packages via the init command",type:"STRING",default:null},initFields:{description:"Additional fields to set when creating packages via the init command",type:"MAP",valueDefinition:{description:"",type:"ANY"}},initEditorConfig:{description:"Extra rules to define in the generator editorconfig",type:"MAP",valueDefinition:{description:"",type:"ANY"}}},commands:[K0,KC]},kat=xat;var fW={};Yt(fW,{SearchCommand:()=>Aw,UpgradeInteractiveCommand:()=>pw,default:()=>_pt});qe();var Cme=et(Ie("os"));function JC({stdout:e}){if(Cme.default.endianness()==="BE")throw new Error("Interactive commands cannot be used on big-endian systems because ink depends on yoga-layout-prebuilt which only supports little-endian architectures");if(!e.isTTY)throw new Error("Interactive commands can only be used inside a TTY environment")}Vt();var Tye=et(Rq()),Tq={appId:"OFCNCOG2CU",apiKey:"6fe4476ee5a1832882e326b506d14126",indexName:"npm-search"},bct=(0,Tye.default)(Tq.appId,Tq.apiKey).initIndex(Tq.indexName),Fq=async(e,t=0)=>await bct.search(e,{analyticsTags:["yarn-plugin-interactive-tools"],attributesToRetrieve:["name","version","owner","repository","humanDownloadsLast30Days"],page:t,hitsPerPage:10});var CD=["regular","dev","peer"],Aw=class extends At{static{this.paths=[["search"]]}static{this.usage=at.Usage({category:"Interactive commands",description:"open the search interface",details:` - This command opens a fullscreen terminal interface where you can search for and install packages from the npm registry. - `,examples:[["Open the search window","yarn search"]]})}async execute(){JC(this.context);let{Gem:t}=await Promise.resolve().then(()=>(xF(),eW)),{ScrollableItems:r}=await Promise.resolve().then(()=>(TF(),RF)),{useKeypress:s}=await Promise.resolve().then(()=>(fw(),tW)),{useMinistore:a}=await Promise.resolve().then(()=>(oW(),sW)),{renderForm:n}=await Promise.resolve().then(()=>(LF(),OF)),{default:c}=await Promise.resolve().then(()=>et(ywe())),{Box:f,Text:p}=await Promise.resolve().then(()=>et(Gc())),{default:h,useEffect:E,useState:C}=await Promise.resolve().then(()=>et(gn())),S=await ze.find(this.context.cwd,this.context.plugins),x=()=>h.createElement(f,{flexDirection:"row"},h.createElement(f,{flexDirection:"column",width:48},h.createElement(f,null,h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},""),"/",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to move between packages.")),h.createElement(f,null,h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to select a package.")),h.createElement(f,null,h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," again to change the target."))),h.createElement(f,{flexDirection:"column"},h.createElement(f,{marginLeft:1},h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to install the selected packages.")),h.createElement(f,{marginLeft:1},h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to abort.")))),I=()=>h.createElement(h.Fragment,null,h.createElement(f,{width:15},h.createElement(p,{bold:!0,underline:!0,color:"gray"},"Owner")),h.createElement(f,{width:11},h.createElement(p,{bold:!0,underline:!0,color:"gray"},"Version")),h.createElement(f,{width:10},h.createElement(p,{bold:!0,underline:!0,color:"gray"},"Downloads"))),T=()=>h.createElement(f,{width:17},h.createElement(p,{bold:!0,underline:!0,color:"gray"},"Target")),O=({hit:Ae,active:Ce})=>{let[Ee,g]=a(Ae.name,null);s({active:Ce},(me,ce)=>{if(ce.name!=="space")return;if(!Ee){g(CD[0]);return}let X=CD.indexOf(Ee)+1;X===CD.length?g(null):g(CD[X])},[Ee,g]);let Se=j.parseIdent(Ae.name),Be=j.prettyIdent(S,Se);return h.createElement(f,null,h.createElement(f,{width:45},h.createElement(p,{bold:!0,wrap:"wrap"},Be)),h.createElement(f,{width:14,marginLeft:1},h.createElement(p,{bold:!0,wrap:"truncate"},Ae.owner.name)),h.createElement(f,{width:10,marginLeft:1},h.createElement(p,{italic:!0,wrap:"truncate"},Ae.version)),h.createElement(f,{width:16,marginLeft:1},h.createElement(p,null,Ae.humanDownloadsLast30Days)))},U=({name:Ae,active:Ce})=>{let[Ee]=a(Ae,null),g=j.parseIdent(Ae);return h.createElement(f,null,h.createElement(f,{width:47},h.createElement(p,{bold:!0}," - ",j.prettyIdent(S,g))),CD.map(Se=>h.createElement(f,{key:Se,width:14,marginLeft:1},h.createElement(p,null," ",h.createElement(t,{active:Ee===Se})," ",h.createElement(p,{bold:!0},Se)))))},Y=()=>h.createElement(f,{marginTop:1},h.createElement(p,null,"Powered by Algolia.")),ie=await n(({useSubmit:Ae})=>{let Ce=a();Ae(Ce);let Ee=Array.from(Ce.keys()).filter(_=>Ce.get(_)!==null),[g,Se]=C(""),[Be,me]=C(0),[ce,X]=C([]),De=_=>{_.match(/\t| /)||Se(_)},Qe=async()=>{me(0);let _=await Fq(g);_.query===g&&X(_.hits)},it=async()=>{let _=await Fq(g,Be+1);_.query===g&&_.page-1===Be&&(me(_.page),X([...ce,..._.hits]))};return E(()=>{g?Qe():X([])},[g]),h.createElement(f,{flexDirection:"column"},h.createElement(x,null),h.createElement(f,{flexDirection:"row",marginTop:1},h.createElement(p,{bold:!0},"Search: "),h.createElement(f,{width:41},h.createElement(c,{value:g,onChange:De,placeholder:"i.e. babel, webpack, react...",showCursor:!1})),h.createElement(I,null)),ce.length?h.createElement(r,{radius:2,loop:!1,children:ce.map(_=>h.createElement(O,{key:_.name,hit:_,active:!1})),willReachEnd:it}):h.createElement(p,{color:"gray"},"Start typing..."),h.createElement(f,{flexDirection:"row",marginTop:1},h.createElement(f,{width:49},h.createElement(p,{bold:!0},"Selected:")),h.createElement(T,null)),Ee.length?Ee.map(_=>h.createElement(U,{key:_,name:_,active:!1})):h.createElement(p,{color:"gray"},"No selected packages..."),h.createElement(Y,null))},{},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof ie>"u")return 1;let ue=Array.from(ie.keys()).filter(Ae=>ie.get(Ae)==="regular"),ae=Array.from(ie.keys()).filter(Ae=>ie.get(Ae)==="dev"),de=Array.from(ie.keys()).filter(Ae=>ie.get(Ae)==="peer");return ue.length&&await this.cli.run(["add",...ue]),ae.length&&await this.cli.run(["add","--dev",...ae]),de&&await this.cli.run(["add","--peer",...de]),0}};qe();Vt();cG();var Swe=et(pi());ul();var vwe=/^((?:[\^~]|>=?)?)([0-9]+)(\.[0-9]+)(\.[0-9]+)((?:-\S+)?)$/;function Dwe(e,t){return e.length>0?[e.slice(0,t)].concat(Dwe(e.slice(t),t)):[]}var pw=class extends At{constructor(){super(...arguments);this.mode=he.String("--mode",{description:"Change what artifacts installs generate",validator:ks(Na)})}static{this.paths=[["upgrade-interactive"]]}static{this.usage=at.Usage({category:"Interactive commands",description:"open the upgrade interface",details:"\n This command opens a fullscreen terminal interface where you can see any out of date packages used by your application, their status compared to the latest versions available on the remote registry, and select packages to upgrade.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n ",examples:[["Open the upgrade window","yarn upgrade-interactive"]]})}async execute(){JC(this.context);let{ItemOptions:r}=await Promise.resolve().then(()=>(Bwe(),wwe)),{Pad:s}=await Promise.resolve().then(()=>(uW(),Cwe)),{ScrollableItems:a}=await Promise.resolve().then(()=>(TF(),RF)),{useMinistore:n,useMinistoreSetAll:c}=await Promise.resolve().then(()=>(oW(),sW)),{useKeypress:f}=await Promise.resolve().then(()=>(fw(),tW)),{renderForm:p}=await Promise.resolve().then(()=>(LF(),OF)),{Box:h,Text:E}=await Promise.resolve().then(()=>et(Gc())),{default:C,useCallback:S,useEffect:x,useRef:I,useState:T}=await Promise.resolve().then(()=>et(gn())),O=await ze.find(this.context.cwd,this.context.plugins),{project:U,workspace:Y}=await Rt.find(O,this.context.cwd),te=await Jr.find(O);if(!Y)throw new ar(U.cwd,this.context.cwd);await U.restoreInstallState({restoreResolutions:!1});let ie=this.context.stdout.rows-8,ue=(X,De)=>{let Qe=i0e(X,De),it="";for(let _ of Qe)_.added?it+=pe.pretty(O,_.value,"green"):_.removed||(it+=_.value);return it},ae=(X,De)=>{if(X===De)return De;let Qe=j.parseRange(X),it=j.parseRange(De),_=Qe.selector.match(vwe),tt=it.selector.match(vwe);if(!_||!tt)return ue(X,De);let Ne=["gray","red","yellow","green","magenta"],ke=null,be="";for(let je=1;je{let it=await $u.fetchDescriptorFrom(X,Qe,{project:U,cache:te,preserveModifier:De,workspace:Y});return it!==null?it.range:X.range},Ae=async X=>{let De=Swe.default.valid(X.range)?`^${X.range}`:X.range,[Qe,it]=await Promise.all([de(X,X.range,De).catch(()=>null),de(X,X.range,"latest").catch(()=>null)]),_=[{value:null,label:X.range}];return Qe&&Qe!==X.range?_.push({value:Qe,label:ae(X.range,Qe)}):_.push({value:null,label:""}),it&&it!==Qe&&it!==X.range?_.push({value:it,label:ae(X.range,it)}):_.push({value:null,label:""}),_},Ce=()=>C.createElement(h,{flexDirection:"row"},C.createElement(h,{flexDirection:"column",width:49},C.createElement(h,{marginLeft:1},C.createElement(E,null,"Press ",C.createElement(E,{bold:!0,color:"cyanBright"},""),"/",C.createElement(E,{bold:!0,color:"cyanBright"},"")," to select packages.")),C.createElement(h,{marginLeft:1},C.createElement(E,null,"Press ",C.createElement(E,{bold:!0,color:"cyanBright"},""),"/",C.createElement(E,{bold:!0,color:"cyanBright"},"")," to select versions.")),C.createElement(h,{marginLeft:1},C.createElement(E,null,"Press ",C.createElement(E,{bold:!0,color:"cyanBright"},"c"),"/",C.createElement(E,{bold:!0,color:"cyanBright"},"r"),"/",C.createElement(E,{bold:!0,color:"cyanBright"},"l")," to select all ",C.createElement(E,{bold:!0,color:"cyanBright"},"current"),"/",C.createElement(E,{bold:!0,color:"cyanBright"},"range"),"/",C.createElement(E,{bold:!0,color:"cyanBright"},"latest"),"."))),C.createElement(h,{flexDirection:"column"},C.createElement(h,{marginLeft:1},C.createElement(E,null,"Press ",C.createElement(E,{bold:!0,color:"cyanBright"},"")," to install.")),C.createElement(h,{marginLeft:1},C.createElement(E,null,"Press ",C.createElement(E,{bold:!0,color:"cyanBright"},"")," to abort.")))),Ee=()=>C.createElement(h,{flexDirection:"row",paddingTop:1,paddingBottom:1},C.createElement(h,{width:50},C.createElement(E,{bold:!0},C.createElement(E,{color:"greenBright"},"?")," Pick the packages you want to upgrade.")),C.createElement(h,{width:17},C.createElement(E,{bold:!0,underline:!0,color:"gray"},"Current")),C.createElement(h,{width:17},C.createElement(E,{bold:!0,underline:!0,color:"gray"},"Range")),C.createElement(h,{width:17},C.createElement(E,{bold:!0,underline:!0,color:"gray"},"Latest"))),g=({active:X,descriptor:De,suggestions:Qe})=>{let[it,_]=n(De.descriptorHash,null),tt=j.stringifyIdent(De),Ne=Math.max(0,45-tt.length);return C.createElement(C.Fragment,null,C.createElement(h,null,C.createElement(h,{width:45},C.createElement(E,{bold:!0},j.prettyIdent(O,De)),C.createElement(s,{active:X,length:Ne})),C.createElement(r,{active:X,options:Qe,value:it,skewer:!0,onChange:_,sizes:[17,17,17]})))},Se=({dependencies:X})=>{let De=c(),[Qe,it]=T(X.map(()=>null)),_=I(!0),tt=async ke=>{let be=await Ae(ke);return be.filter(je=>je.label!=="").length<=1?null:{descriptor:ke,suggestions:be}};x(()=>()=>{_.current=!1},[]),x(()=>{let ke=Math.trunc(ie*1.75),be=X.slice(0,ke),je=X.slice(ke),Re=Dwe(je,ie),ct=be.map(tt).reduce(async(Me,P)=>{await Me;let w=await P;w!==null&&_.current&&it(b=>{let y=b.findIndex(z=>z===null),F=[...b];return F[y]=w,F})},Promise.resolve());Re.reduce((Me,P)=>Promise.all(P.map(w=>Promise.resolve().then(()=>tt(w)))).then(async w=>{w=w.filter(b=>b!==null),await Me,_.current&&it(b=>{let y=b.findIndex(F=>F===null);return b.slice(0,y).concat(w).concat(b.slice(y+w.length))})}),ct).then(()=>{_.current&&it(Me=>Me.filter(P=>P!==null))})},[]);let Ne=S(ke=>{if(ke!=="c"&&ke!=="r"&&ke!=="l")return;let be=[];for(let je of Qe){if(je===null)continue;let Re;ke==="c"?Re=null:ke==="r"?Re=je.suggestions[1].value:Re=je.suggestions[2].value??je.suggestions[1].value,be.push([je.descriptor.descriptorHash,Re])}De(be)},[Qe,De]);return f({active:!0},Ne,[Ne]),Qe.length?C.createElement(a,{radius:ie>>1,children:Qe.map((ke,be)=>ke!==null?C.createElement(g,{key:be,active:!1,descriptor:ke.descriptor,suggestions:ke.suggestions}):C.createElement(E,{key:be},"Loading..."))}):C.createElement(E,null,"No upgrades found")},me=await p(({useSubmit:X})=>{X(n());let De=new Map;for(let it of U.workspaces)for(let _ of["dependencies","devDependencies"])for(let tt of it.manifest[_].values())U.tryWorkspaceByDescriptor(tt)===null&&(tt.range.startsWith("link:")||De.set(tt.descriptorHash,tt));let Qe=Ge.sortMap(De.values(),it=>j.stringifyDescriptor(it));return C.createElement(h,{flexDirection:"column"},C.createElement(Ce,null),C.createElement(Ee,null),C.createElement(Se,{dependencies:Qe}))},{},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof me>"u")return 1;let ce=!1;for(let X of U.workspaces)for(let De of["dependencies","devDependencies"]){let Qe=X.manifest[De];for(let it of Qe.values()){let _=me.get(it.descriptorHash);typeof _<"u"&&_!==null&&(Qe.set(it.identHash,j.makeDescriptor(it,_)),ce=!0)}}return ce?await U.installWithNewReport({quiet:this.context.quiet,stdout:this.context.stdout},{cache:te,mode:this.mode}):0}};var Upt={commands:[Aw,pw]},_pt=Upt;var pW={};Yt(pW,{default:()=>qpt});qe();var BD="jsr:";qe();qe();function hw(e){let t=e.range.slice(4);if(Fr.validRange(t))return j.makeDescriptor(e,`npm:${j.stringifyIdent(j.wrapIdentIntoScope(e,"jsr"))}@${t}`);let r=j.tryParseDescriptor(t,!0);if(r!==null)return j.makeDescriptor(e,`npm:${j.stringifyIdent(j.wrapIdentIntoScope(r,"jsr"))}@${r.range}`);throw new Error(`Invalid range: ${e.range}`)}function gw(e){return j.makeLocator(j.wrapIdentIntoScope(e,"jsr"),`npm:${e.reference.slice(4)}`)}function AW(e){return j.makeLocator(j.unwrapIdentFromScope(e,"jsr"),`jsr:${e.reference.slice(4)}`)}var MF=class{supports(t,r){return t.reference.startsWith(BD)}getLocalPath(t,r){let s=gw(t);return r.fetcher.getLocalPath(s,r)}fetch(t,r){let s=gw(t);return r.fetcher.fetch(s,r)}};var UF=class{supportsDescriptor(t,r){return!!t.range.startsWith(BD)}supportsLocator(t,r){return!!t.reference.startsWith(BD)}shouldPersistResolution(t,r){let s=gw(t);return r.resolver.shouldPersistResolution(s,r)}bindDescriptor(t,r,s){return t}getResolutionDependencies(t,r){return{inner:hw(t)}}async getCandidates(t,r,s){let a=s.project.configuration.normalizeDependency(hw(t));return(await s.resolver.getCandidates(a,r,s)).map(c=>AW(c))}async getSatisfying(t,r,s,a){let n=a.project.configuration.normalizeDependency(hw(t));return a.resolver.getSatisfying(n,r,s,a)}async resolve(t,r){let s=gw(t),a=await r.resolver.resolve(s,r);return{...a,...AW(a)}}};var Hpt=["dependencies","devDependencies","peerDependencies"];function jpt(e,t){for(let r of Hpt)for(let s of e.manifest.getForScope(r).values()){if(!s.range.startsWith("jsr:"))continue;let a=hw(s),n=r==="dependencies"?j.makeDescriptor(s,"unknown"):null,c=n!==null&&e.manifest.ensureDependencyMeta(n).optional?"optionalDependencies":r;t[c][j.stringifyIdent(s)]=a.range}}var Gpt={hooks:{beforeWorkspacePacking:jpt},resolvers:[UF],fetchers:[MF]},qpt=Gpt;var hW={};Yt(hW,{LinkFetcher:()=>vD,LinkResolver:()=>SD,PortalFetcher:()=>DD,PortalResolver:()=>bD,default:()=>Vpt});qe();Dt();var eh="portal:",th="link:";var vD=class{supports(t,r){return!!t.reference.startsWith(th)}getLocalPath(t,r){let{parentLocator:s,path:a}=j.parseFileStyleRange(t.reference,{protocol:th});if(K.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(s,r);return n===null?null:K.resolve(n,a)}async fetch(t,r){let{parentLocator:s,path:a}=j.parseFileStyleRange(t.reference,{protocol:th}),n=K.isAbsolute(a)?{packageFs:new bn(vt.root),prefixPath:vt.dot,localPath:vt.root}:await r.fetcher.fetch(s,r),c=n.localPath?{packageFs:new bn(vt.root),prefixPath:K.relative(vt.root,n.localPath),localPath:vt.root}:n;n!==c&&n.releaseFs&&n.releaseFs();let f=c.packageFs,p=K.resolve(c.localPath??c.packageFs.getRealPath(),c.prefixPath,a);return n.localPath?{packageFs:new bn(p,{baseFs:f}),releaseFs:c.releaseFs,prefixPath:vt.dot,discardFromLookup:!0,localPath:p}:{packageFs:new Gf(p,{baseFs:f}),releaseFs:c.releaseFs,prefixPath:vt.dot,discardFromLookup:!0}}};qe();Dt();var SD=class{supportsDescriptor(t,r){return!!t.range.startsWith(th)}supportsLocator(t,r){return!!t.reference.startsWith(th)}shouldPersistResolution(t,r){return!1}bindDescriptor(t,r,s){return j.bindDescriptor(t,{locator:j.stringifyLocator(r)})}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){let a=t.range.slice(th.length);return[j.makeLocator(t,`${th}${fe.toPortablePath(a)}`)]}async getSatisfying(t,r,s,a){let[n]=await this.getCandidates(t,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(t,r){return{...t,version:"0.0.0",languageName:r.project.configuration.get("defaultLanguageName"),linkType:"SOFT",conditions:null,dependencies:new Map,peerDependencies:new Map,dependenciesMeta:new Map,peerDependenciesMeta:new Map,bin:new Map}}};qe();Dt();var DD=class{supports(t,r){return!!t.reference.startsWith(eh)}getLocalPath(t,r){let{parentLocator:s,path:a}=j.parseFileStyleRange(t.reference,{protocol:eh});if(K.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(s,r);return n===null?null:K.resolve(n,a)}async fetch(t,r){let{parentLocator:s,path:a}=j.parseFileStyleRange(t.reference,{protocol:eh}),n=K.isAbsolute(a)?{packageFs:new bn(vt.root),prefixPath:vt.dot,localPath:vt.root}:await r.fetcher.fetch(s,r),c=n.localPath?{packageFs:new bn(vt.root),prefixPath:K.relative(vt.root,n.localPath),localPath:vt.root}:n;n!==c&&n.releaseFs&&n.releaseFs();let f=c.packageFs,p=K.resolve(c.localPath??c.packageFs.getRealPath(),c.prefixPath,a);return n.localPath?{packageFs:new bn(p,{baseFs:f}),releaseFs:c.releaseFs,prefixPath:vt.dot,localPath:p}:{packageFs:new Gf(p,{baseFs:f}),releaseFs:c.releaseFs,prefixPath:vt.dot}}};qe();qe();Dt();var bD=class{supportsDescriptor(t,r){return!!t.range.startsWith(eh)}supportsLocator(t,r){return!!t.reference.startsWith(eh)}shouldPersistResolution(t,r){return!1}bindDescriptor(t,r,s){return j.bindDescriptor(t,{locator:j.stringifyLocator(r)})}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){let a=t.range.slice(eh.length);return[j.makeLocator(t,`${eh}${fe.toPortablePath(a)}`)]}async getSatisfying(t,r,s,a){let[n]=await this.getCandidates(t,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(t,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let s=await r.fetchOptions.fetcher.fetch(t,r.fetchOptions),a=await Ge.releaseAfterUseAsync(async()=>await Ut.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...t,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"SOFT",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var Wpt={fetchers:[vD,DD],resolvers:[SD,bD]},Vpt=Wpt;var ZW={};Yt(ZW,{NodeModulesLinker:()=>jD,NodeModulesMode:()=>YW,PnpLooseLinker:()=>GD,default:()=>c0t});Dt();qe();Dt();Dt();var dW=(e,t)=>`${e}@${t}`,bwe=(e,t)=>{let r=t.indexOf("#"),s=r>=0?t.substring(r+1):t;return dW(e,s)};var xwe=(e,t={})=>{let r=t.debugLevel||Number(process.env.NM_DEBUG_LEVEL||-1),s=t.check||r>=9,a=t.hoistingLimits||new Map,n={check:s,debugLevel:r,hoistingLimits:a,fastLookupPossible:!0},c;n.debugLevel>=0&&(c=Date.now());let f=$pt(e,n),p=!1,h=0;do{let E=mW(f,[f],new Set([f.locator]),new Map,n);p=E.anotherRoundNeeded||E.isGraphChanged,n.fastLookupPossible=!1,h++}while(p);if(n.debugLevel>=0&&console.log(`hoist time: ${Date.now()-c}ms, rounds: ${h}`),n.debugLevel>=1){let E=PD(f);if(mW(f,[f],new Set([f.locator]),new Map,n).isGraphChanged)throw new Error(`The hoisting result is not terminal, prev tree: -${E}, next tree: -${PD(f)}`);let S=kwe(f);if(S)throw new Error(`${S}, after hoisting finished: -${PD(f)}`)}return n.debugLevel>=2&&console.log(PD(f)),eht(f)},Ypt=e=>{let t=e[e.length-1],r=new Map,s=new Set,a=n=>{if(!s.has(n)){s.add(n);for(let c of n.hoistedDependencies.values())r.set(c.name,c);for(let c of n.dependencies.values())n.peerNames.has(c.name)||a(c)}};return a(t),r},Kpt=e=>{let t=e[e.length-1],r=new Map,s=new Set,a=new Set,n=(c,f)=>{if(s.has(c))return;s.add(c);for(let h of c.hoistedDependencies.values())if(!f.has(h.name)){let E;for(let C of e)E=C.dependencies.get(h.name),E&&r.set(E.name,E)}let p=new Set;for(let h of c.dependencies.values())p.add(h.name);for(let h of c.dependencies.values())c.peerNames.has(h.name)||n(h,p)};return n(t,a),r},Pwe=(e,t)=>{if(t.decoupled)return t;let{name:r,references:s,ident:a,locator:n,dependencies:c,originalDependencies:f,hoistedDependencies:p,peerNames:h,reasons:E,isHoistBorder:C,hoistPriority:S,dependencyKind:x,hoistedFrom:I,hoistedTo:T}=t,O={name:r,references:new Set(s),ident:a,locator:n,dependencies:new Map(c),originalDependencies:new Map(f),hoistedDependencies:new Map(p),peerNames:new Set(h),reasons:new Map(E),decoupled:!0,isHoistBorder:C,hoistPriority:S,dependencyKind:x,hoistedFrom:new Map(I),hoistedTo:new Map(T)},U=O.dependencies.get(r);return U&&U.ident==O.ident&&O.dependencies.set(r,O),e.dependencies.set(O.name,O),O},Jpt=(e,t)=>{let r=new Map([[e.name,[e.ident]]]);for(let a of e.dependencies.values())e.peerNames.has(a.name)||r.set(a.name,[a.ident]);let s=Array.from(t.keys());s.sort((a,n)=>{let c=t.get(a),f=t.get(n);if(f.hoistPriority!==c.hoistPriority)return f.hoistPriority-c.hoistPriority;{let p=c.dependents.size+c.peerDependents.size;return f.dependents.size+f.peerDependents.size-p}});for(let a of s){let n=a.substring(0,a.indexOf("@",1)),c=a.substring(n.length+1);if(!e.peerNames.has(n)){let f=r.get(n);f||(f=[],r.set(n,f)),f.indexOf(c)<0&&f.push(c)}}return r},gW=e=>{let t=new Set,r=(s,a=new Set)=>{if(!a.has(s)){a.add(s);for(let n of s.peerNames)if(!e.peerNames.has(n)){let c=e.dependencies.get(n);c&&!t.has(c)&&r(c,a)}t.add(s)}};for(let s of e.dependencies.values())e.peerNames.has(s.name)||r(s);return t},mW=(e,t,r,s,a,n=new Set)=>{let c=t[t.length-1];if(n.has(c))return{anotherRoundNeeded:!1,isGraphChanged:!1};n.add(c);let f=tht(c),p=Jpt(c,f),h=e==c?new Map:a.fastLookupPossible?Ypt(t):Kpt(t),E,C=!1,S=!1,x=new Map(Array.from(p.entries()).map(([T,O])=>[T,O[0]])),I=new Map;do{let T=Xpt(e,t,r,h,x,p,s,I,a);T.isGraphChanged&&(S=!0),T.anotherRoundNeeded&&(C=!0),E=!1;for(let[O,U]of p)U.length>1&&!c.dependencies.has(O)&&(x.delete(O),U.shift(),x.set(O,U[0]),E=!0)}while(E);for(let T of c.dependencies.values())if(!c.peerNames.has(T.name)&&!r.has(T.locator)){r.add(T.locator);let O=mW(e,[...t,T],r,I,a);O.isGraphChanged&&(S=!0),O.anotherRoundNeeded&&(C=!0),r.delete(T.locator)}return{anotherRoundNeeded:C,isGraphChanged:S}},zpt=e=>{for(let[t,r]of e.dependencies)if(!e.peerNames.has(t)&&r.ident!==e.ident)return!0;return!1},Zpt=(e,t,r,s,a,n,c,f,{outputReason:p,fastLookupPossible:h})=>{let E,C=null,S=new Set;p&&(E=`${Array.from(t).map(O=>Bo(O)).join("\u2192")}`);let x=r[r.length-1],T=!(s.ident===x.ident);if(p&&!T&&(C="- self-reference"),T&&(T=s.dependencyKind!==1,p&&!T&&(C="- workspace")),T&&s.dependencyKind===2&&(T=!zpt(s),p&&!T&&(C="- external soft link with unhoisted dependencies")),T&&(T=!e.peerNames.has(s.name),p&&!T&&(C=`- cannot shadow peer: ${Bo(e.originalDependencies.get(s.name).locator)} at ${E}`)),T){let O=!1,U=a.get(s.name);if(O=!U||U.ident===s.ident,p&&!O&&(C=`- filled by: ${Bo(U.locator)} at ${E}`),O)for(let Y=r.length-1;Y>=1;Y--){let ie=r[Y].dependencies.get(s.name);if(ie&&ie.ident!==s.ident){O=!1;let ue=f.get(x);ue||(ue=new Set,f.set(x,ue)),ue.add(s.name),p&&(C=`- filled by ${Bo(ie.locator)} at ${r.slice(0,Y).map(ae=>Bo(ae.locator)).join("\u2192")}`);break}}T=O}if(T&&(T=n.get(s.name)===s.ident,p&&!T&&(C=`- filled by: ${Bo(c.get(s.name)[0])} at ${E}`)),T){let O=!0,U=new Set(s.peerNames);for(let Y=r.length-1;Y>=1;Y--){let te=r[Y];for(let ie of U){if(te.peerNames.has(ie)&&te.originalDependencies.has(ie))continue;let ue=te.dependencies.get(ie);ue&&e.dependencies.get(ie)!==ue&&(Y===r.length-1?S.add(ue):(S=null,O=!1,p&&(C=`- peer dependency ${Bo(ue.locator)} from parent ${Bo(te.locator)} was not hoisted to ${E}`))),U.delete(ie)}if(!O)break}T=O}if(T&&!h)for(let O of s.hoistedDependencies.values()){let U=a.get(O.name)||e.dependencies.get(O.name);if(!U||O.ident!==U.ident){T=!1,p&&(C=`- previously hoisted dependency mismatch, needed: ${Bo(O.locator)}, available: ${Bo(U?.locator)}`);break}}return S!==null&&S.size>0?{isHoistable:2,dependsOn:S,reason:C}:{isHoistable:T?0:1,reason:C}},_F=e=>`${e.name}@${e.locator}`,Xpt=(e,t,r,s,a,n,c,f,p)=>{let h=t[t.length-1],E=new Set,C=!1,S=!1,x=(U,Y,te,ie,ue)=>{if(E.has(ie))return;let ae=[...Y,_F(ie)],de=[...te,_F(ie)],Ae=new Map,Ce=new Map;for(let me of gW(ie)){let ce=Zpt(h,r,[h,...U,ie],me,s,a,n,f,{outputReason:p.debugLevel>=2,fastLookupPossible:p.fastLookupPossible});if(Ce.set(me,ce),ce.isHoistable===2)for(let X of ce.dependsOn){let De=Ae.get(X.name)||new Set;De.add(me.name),Ae.set(X.name,De)}}let Ee=new Set,g=(me,ce,X)=>{if(!Ee.has(me)){Ee.add(me),Ce.set(me,{isHoistable:1,reason:X});for(let De of Ae.get(me.name)||[])g(ie.dependencies.get(De),ce,p.debugLevel>=2?`- peer dependency ${Bo(me.locator)} from parent ${Bo(ie.locator)} was not hoisted`:"")}};for(let[me,ce]of Ce)ce.isHoistable===1&&g(me,ce,ce.reason);let Se=!1;for(let me of Ce.keys())if(!Ee.has(me)){S=!0;let ce=c.get(ie);ce&&ce.has(me.name)&&(C=!0),Se=!0,ie.dependencies.delete(me.name),ie.hoistedDependencies.set(me.name,me),ie.reasons.delete(me.name);let X=h.dependencies.get(me.name);if(p.debugLevel>=2){let De=Array.from(Y).concat([ie.locator]).map(it=>Bo(it)).join("\u2192"),Qe=h.hoistedFrom.get(me.name);Qe||(Qe=[],h.hoistedFrom.set(me.name,Qe)),Qe.push(De),ie.hoistedTo.set(me.name,Array.from(t).map(it=>Bo(it.locator)).join("\u2192"))}if(!X)h.ident!==me.ident&&(h.dependencies.set(me.name,me),ue.add(me));else for(let De of me.references)X.references.add(De)}if(ie.dependencyKind===2&&Se&&(C=!0),p.check){let me=kwe(e);if(me)throw new Error(`${me}, after hoisting dependencies of ${[h,...U,ie].map(ce=>Bo(ce.locator)).join("\u2192")}: -${PD(e)}`)}let Be=gW(ie);for(let me of Be)if(Ee.has(me)){let ce=Ce.get(me);if((a.get(me.name)===me.ident||!ie.reasons.has(me.name))&&ce.isHoistable!==0&&ie.reasons.set(me.name,ce.reason),!me.isHoistBorder&&de.indexOf(_F(me))<0){E.add(ie);let De=Pwe(ie,me);x([...U,ie],ae,de,De,T),E.delete(ie)}}},I,T=new Set(gW(h)),O=Array.from(t).map(U=>_F(U));do{I=T,T=new Set;for(let U of I){if(U.locator===h.locator||U.isHoistBorder)continue;let Y=Pwe(h,U);x([],Array.from(r),O,Y,T)}}while(T.size>0);return{anotherRoundNeeded:C,isGraphChanged:S}},kwe=e=>{let t=[],r=new Set,s=new Set,a=(n,c,f)=>{if(r.has(n)||(r.add(n),s.has(n)))return;let p=new Map(c);for(let h of n.dependencies.values())n.peerNames.has(h.name)||p.set(h.name,h);for(let h of n.originalDependencies.values()){let E=p.get(h.name),C=()=>`${Array.from(s).concat([n]).map(S=>Bo(S.locator)).join("\u2192")}`;if(n.peerNames.has(h.name)){let S=c.get(h.name);(S!==E||!S||S.ident!==h.ident)&&t.push(`${C()} - broken peer promise: expected ${h.ident} but found ${S&&S.ident}`)}else{let S=f.hoistedFrom.get(n.name),x=n.hoistedTo.get(h.name),I=`${S?` hoisted from ${S.join(", ")}`:""}`,T=`${x?` hoisted to ${x}`:""}`,O=`${C()}${I}`;E?E.ident!==h.ident&&t.push(`${O} - broken require promise for ${h.name}${T}: expected ${h.ident}, but found: ${E.ident}`):t.push(`${O} - broken require promise: no required dependency ${h.name}${T} found`)}}s.add(n);for(let h of n.dependencies.values())n.peerNames.has(h.name)||a(h,p,n);s.delete(n)};return a(e,e.dependencies,e),t.join(` -`)},$pt=(e,t)=>{let{identName:r,name:s,reference:a,peerNames:n}=e,c={name:s,references:new Set([a]),locator:dW(r,a),ident:bwe(r,a),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(n),reasons:new Map,decoupled:!0,isHoistBorder:!0,hoistPriority:0,dependencyKind:1,hoistedFrom:new Map,hoistedTo:new Map},f=new Map([[e,c]]),p=(h,E)=>{let C=f.get(h),S=!!C;if(!C){let{name:x,identName:I,reference:T,peerNames:O,hoistPriority:U,dependencyKind:Y}=h,te=t.hoistingLimits.get(E.locator);C={name:x,references:new Set([T]),locator:dW(I,T),ident:bwe(I,T),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(O),reasons:new Map,decoupled:!0,isHoistBorder:te?te.has(x):!1,hoistPriority:U||0,dependencyKind:Y||0,hoistedFrom:new Map,hoistedTo:new Map},f.set(h,C)}if(E.dependencies.set(h.name,C),E.originalDependencies.set(h.name,C),S){let x=new Set,I=T=>{if(!x.has(T)){x.add(T),T.decoupled=!1;for(let O of T.dependencies.values())T.peerNames.has(O.name)||I(O)}};I(C)}else for(let x of h.dependencies)p(x,C)};for(let h of e.dependencies)p(h,c);return c},yW=e=>e.substring(0,e.indexOf("@",1)),eht=e=>{let t={name:e.name,identName:yW(e.locator),references:new Set(e.references),dependencies:new Set},r=new Set([e]),s=(a,n,c)=>{let f=r.has(a),p;if(n===a)p=c;else{let{name:h,references:E,locator:C}=a;p={name:h,identName:yW(C),references:E,dependencies:new Set}}if(c.dependencies.add(p),!f){r.add(a);for(let h of a.dependencies.values())a.peerNames.has(h.name)||s(h,a,p);r.delete(a)}};for(let a of e.dependencies.values())s(a,e,t);return t},tht=e=>{let t=new Map,r=new Set([e]),s=c=>`${c.name}@${c.ident}`,a=c=>{let f=s(c),p=t.get(f);return p||(p={dependents:new Set,peerDependents:new Set,hoistPriority:0},t.set(f,p)),p},n=(c,f)=>{let p=!!r.has(f);if(a(f).dependents.add(c.ident),!p){r.add(f);for(let E of f.dependencies.values()){let C=a(E);C.hoistPriority=Math.max(C.hoistPriority,E.hoistPriority),f.peerNames.has(E.name)?C.peerDependents.add(f.ident):n(f,E)}}};for(let c of e.dependencies.values())e.peerNames.has(c.name)||n(e,c);return t},Bo=e=>{if(!e)return"none";let t=e.indexOf("@",1),r=e.substring(0,t);r.endsWith("$wsroot$")&&(r=`wh:${r.replace("$wsroot$","")}`);let s=e.substring(t+1);if(s==="workspace:.")return".";if(s){let a=(s.indexOf("#")>0?s.split("#")[1]:s).replace("npm:","");return s.startsWith("virtual")&&(r=`v:${r}`),a.startsWith("workspace")&&(r=`w:${r}`,a=""),`${r}${a?`@${a}`:""}`}else return`${r}`};var PD=e=>{let t=0,r=(a,n,c="")=>{if(t>5e4||n.has(a))return"";t++;let f=Array.from(a.dependencies.values()).sort((h,E)=>h.name===E.name?0:h.name>E.name?1:-1),p="";n.add(a);for(let h=0;h":"")+(S!==E.name?`a:${E.name}:`:"")+Bo(E.locator)+(C?` ${C}`:"")} -`,p+=r(E,n,`${c}${h5e4?` -Tree is too large, part of the tree has been dunped -`:"")};var xD=(s=>(s.WORKSPACES="workspaces",s.DEPENDENCIES="dependencies",s.NONE="none",s))(xD||{}),Qwe="node_modules",eg="$wsroot$";var kD=(e,t)=>{let{packageTree:r,hoistingLimits:s,errors:a,preserveSymlinksRequired:n}=nht(e,t),c=null;if(a.length===0){let f=xwe(r,{hoistingLimits:s});c=sht(e,f,t)}return{tree:c,errors:a,preserveSymlinksRequired:n}},hA=e=>`${e.name}@${e.reference}`,IW=e=>{let t=new Map;for(let[r,s]of e.entries())if(!s.dirList){let a=t.get(s.locator);a||(a={target:s.target,linkType:s.linkType,locations:[],aliases:s.aliases},t.set(s.locator,a)),a.locations.push(r)}for(let r of t.values())r.locations=r.locations.sort((s,a)=>{let n=s.split(K.delimiter).length,c=a.split(K.delimiter).length;return a===s?0:n!==c?c-n:a>s?1:-1});return t},Rwe=(e,t)=>{let r=j.isVirtualLocator(e)?j.devirtualizeLocator(e):e,s=j.isVirtualLocator(t)?j.devirtualizeLocator(t):t;return j.areLocatorsEqual(r,s)},EW=(e,t,r,s)=>{if(e.linkType!=="SOFT")return!1;let a=fe.toPortablePath(r.resolveVirtual&&t.reference&&t.reference.startsWith("virtual:")?r.resolveVirtual(e.packageLocation):e.packageLocation);return K.contains(s,a)===null},rht=e=>{let t=e.getPackageInformation(e.topLevel);if(t===null)throw new Error("Assertion failed: Expected the top-level package to have been registered");if(e.findPackageLocator(t.packageLocation)===null)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");let s=fe.toPortablePath(t.packageLocation.slice(0,-1)),a=new Map,n={children:new Map},c=e.getDependencyTreeRoots(),f=new Map,p=new Set,h=(S,x)=>{let I=hA(S);if(p.has(I))return;p.add(I);let T=e.getPackageInformation(S);if(T){let O=x?hA(x):"";if(hA(S)!==O&&T.linkType==="SOFT"&&!S.reference.startsWith("link:")&&!EW(T,S,e,s)){let U=Twe(T,S,e);(!f.get(U)||S.reference.startsWith("workspace:"))&&f.set(U,S)}for(let[U,Y]of T.packageDependencies)Y!==null&&(T.packagePeers.has(U)||h(e.getLocator(U,Y),S))}};for(let S of c)h(S,null);let E=s.split(K.sep);for(let S of f.values()){let x=e.getPackageInformation(S),T=fe.toPortablePath(x.packageLocation.slice(0,-1)).split(K.sep).slice(E.length),O=n;for(let U of T){let Y=O.children.get(U);Y||(Y={children:new Map},O.children.set(U,Y)),O=Y}O.workspaceLocator=S}let C=(S,x)=>{if(S.workspaceLocator){let I=hA(x),T=a.get(I);T||(T=new Set,a.set(I,T)),T.add(S.workspaceLocator)}for(let I of S.children.values())C(I,S.workspaceLocator||x)};for(let S of n.children.values())C(S,n.workspaceLocator);return a},nht=(e,t)=>{let r=[],s=!1,a=new Map,n=rht(e),c=e.getPackageInformation(e.topLevel);if(c===null)throw new Error("Assertion failed: Expected the top-level package to have been registered");let f=e.findPackageLocator(c.packageLocation);if(f===null)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");let p=fe.toPortablePath(c.packageLocation.slice(0,-1)),h={name:f.name,identName:f.name,reference:f.reference,peerNames:c.packagePeers,dependencies:new Set,dependencyKind:1},E=new Map,C=(x,I)=>`${hA(I)}:${x}`,S=(x,I,T,O,U,Y,te,ie)=>{let ue=C(x,T),ae=E.get(ue),de=!!ae;!de&&T.name===f.name&&T.reference===f.reference&&(ae=h,E.set(ue,h));let Ae=EW(I,T,e,p);if(!ae){let me=0;Ae?me=2:I.linkType==="SOFT"&&T.name.endsWith(eg)&&(me=1),ae={name:x,identName:T.name,reference:T.reference,dependencies:new Set,peerNames:me===1?new Set:I.packagePeers,dependencyKind:me},E.set(ue,ae)}let Ce;if(Ae?Ce=2:U.linkType==="SOFT"?Ce=1:Ce=0,ae.hoistPriority=Math.max(ae.hoistPriority||0,Ce),ie&&!Ae){let me=hA({name:O.identName,reference:O.reference}),ce=a.get(me)||new Set;a.set(me,ce),ce.add(ae.name)}let Ee=new Map(I.packageDependencies);if(t.project){let me=t.project.workspacesByCwd.get(fe.toPortablePath(I.packageLocation.slice(0,-1)));if(me){let ce=new Set([...Array.from(me.manifest.peerDependencies.values(),X=>j.stringifyIdent(X)),...Array.from(me.manifest.peerDependenciesMeta.keys())]);for(let X of ce)Ee.has(X)||(Ee.set(X,Y.get(X)||null),ae.peerNames.add(X))}}let g=hA({name:T.name.replace(eg,""),reference:T.reference}),Se=n.get(g);if(Se)for(let me of Se)Ee.set(`${me.name}${eg}`,me.reference);(I!==U||I.linkType!=="SOFT"||!Ae&&(!t.selfReferencesByCwd||t.selfReferencesByCwd.get(te)))&&O.dependencies.add(ae);let Be=T!==f&&I.linkType==="SOFT"&&!T.name.endsWith(eg)&&!Ae;if(!de&&!Be){let me=new Map;for(let[ce,X]of Ee)if(X!==null){let De=e.getLocator(ce,X),Qe=e.getLocator(ce.replace(eg,""),X),it=e.getPackageInformation(Qe);if(it===null)throw new Error("Assertion failed: Expected the package to have been registered");let _=EW(it,De,e,p);if(t.validateExternalSoftLinks&&t.project&&_){it.packageDependencies.size>0&&(s=!0);for(let[je,Re]of it.packageDependencies)if(Re!==null){let ct=j.parseLocator(Array.isArray(Re)?`${Re[0]}@${Re[1]}`:`${je}@${Re}`);if(hA(ct)!==hA(De)){let Me=Ee.get(je);if(Me){let P=j.parseLocator(Array.isArray(Me)?`${Me[0]}@${Me[1]}`:`${je}@${Me}`);Rwe(P,ct)||r.push({messageName:71,text:`Cannot link ${j.prettyIdent(t.project.configuration,j.parseIdent(De.name))} into ${j.prettyLocator(t.project.configuration,j.parseLocator(`${T.name}@${T.reference}`))} dependency ${j.prettyLocator(t.project.configuration,ct)} conflicts with parent dependency ${j.prettyLocator(t.project.configuration,P)}`})}else{let P=me.get(je);if(P){let w=P.target,b=j.parseLocator(Array.isArray(w)?`${w[0]}@${w[1]}`:`${je}@${w}`);Rwe(b,ct)||r.push({messageName:71,text:`Cannot link ${j.prettyIdent(t.project.configuration,j.parseIdent(De.name))} into ${j.prettyLocator(t.project.configuration,j.parseLocator(`${T.name}@${T.reference}`))} dependency ${j.prettyLocator(t.project.configuration,ct)} conflicts with dependency ${j.prettyLocator(t.project.configuration,b)} from sibling portal ${j.prettyIdent(t.project.configuration,j.parseIdent(P.portal.name))}`})}else me.set(je,{target:ct.reference,portal:De})}}}}let tt=t.hoistingLimitsByCwd?.get(te),Ne=_?te:K.relative(p,fe.toPortablePath(it.packageLocation))||vt.dot,ke=t.hoistingLimitsByCwd?.get(Ne);S(ce,it,De,ae,I,Ee,Ne,tt==="dependencies"||ke==="dependencies"||ke==="workspaces")}}};return S(f.name,c,f,h,c,c.packageDependencies,vt.dot,!1),{packageTree:h,hoistingLimits:a,errors:r,preserveSymlinksRequired:s}};function Twe(e,t,r){let s=r.resolveVirtual&&t.reference&&t.reference.startsWith("virtual:")?r.resolveVirtual(e.packageLocation):e.packageLocation;return fe.toPortablePath(s||e.packageLocation)}function iht(e,t,r){let s=t.getLocator(e.name.replace(eg,""),e.reference),a=t.getPackageInformation(s);if(a===null)throw new Error("Assertion failed: Expected the package to be registered");return r.pnpifyFs?{linkType:"SOFT",target:fe.toPortablePath(a.packageLocation)}:{linkType:a.linkType,target:Twe(a,e,t)}}var sht=(e,t,r)=>{let s=new Map,a=(E,C,S)=>{let{linkType:x,target:I}=iht(E,e,r);return{locator:hA(E),nodePath:C,target:I,linkType:x,aliases:S}},n=E=>{let[C,S]=E.split("/");return S?{scope:C,name:S}:{scope:null,name:C}},c=new Set,f=(E,C,S)=>{if(c.has(E))return;c.add(E);let x=Array.from(E.references).sort().join("#");for(let I of E.dependencies){let T=Array.from(I.references).sort().join("#");if(I.identName===E.identName.replace(eg,"")&&T===x)continue;let O=Array.from(I.references).sort(),U={name:I.identName,reference:O[0]},{name:Y,scope:te}=n(I.name),ie=te?[te,Y]:[Y],ue=K.join(C,Qwe),ae=K.join(ue,...ie),de=`${S}/${U.name}`,Ae=a(U,S,O.slice(1)),Ce=!1;if(Ae.linkType==="SOFT"&&r.project){let Ee=r.project.workspacesByCwd.get(Ae.target.slice(0,-1));Ce=!!(Ee&&!Ee.manifest.name)}if(!I.name.endsWith(eg)&&!Ce){let Ee=s.get(ae);if(Ee){if(Ee.dirList)throw new Error(`Assertion failed: ${ae} cannot merge dir node with leaf node`);{let Be=j.parseLocator(Ee.locator),me=j.parseLocator(Ae.locator);if(Ee.linkType!==Ae.linkType)throw new Error(`Assertion failed: ${ae} cannot merge nodes with different link types ${Ee.nodePath}/${j.stringifyLocator(Be)} and ${S}/${j.stringifyLocator(me)}`);if(Be.identHash!==me.identHash)throw new Error(`Assertion failed: ${ae} cannot merge nodes with different idents ${Ee.nodePath}/${j.stringifyLocator(Be)} and ${S}/s${j.stringifyLocator(me)}`);Ae.aliases=[...Ae.aliases,...Ee.aliases,j.parseLocator(Ee.locator).reference]}}s.set(ae,Ae);let g=ae.split("/"),Se=g.indexOf(Qwe);for(let Be=g.length-1;Se>=0&&Be>Se;Be--){let me=fe.toPortablePath(g.slice(0,Be).join(K.sep)),ce=g[Be],X=s.get(me);if(!X)s.set(me,{dirList:new Set([ce])});else if(X.dirList){if(X.dirList.has(ce))break;X.dirList.add(ce)}}}f(I,Ae.linkType==="SOFT"?Ae.target:ae,de)}},p=a({name:t.name,reference:Array.from(t.references)[0]},"",[]),h=p.target;return s.set(h,p),f(t,h,""),s};qe();qe();Dt();Dt();rA();Bc();var UW={};Yt(UW,{PnpInstaller:()=>Vm,PnpLinker:()=>ng,UnplugCommand:()=>mw,default:()=>Nht,getPnpPath:()=>ig,jsInstallUtils:()=>dA,pnpUtils:()=>HD,quotePathIfNeeded:()=>m1e});Dt();var d1e=Ie("url");qe();qe();Dt();Dt();var Fwe={DEFAULT:{collapsed:!1,next:{"*":"DEFAULT"}},TOP_LEVEL:{collapsed:!1,next:{fallbackExclusionList:"FALLBACK_EXCLUSION_LIST",packageRegistryData:"PACKAGE_REGISTRY_DATA","*":"DEFAULT"}},FALLBACK_EXCLUSION_LIST:{collapsed:!1,next:{"*":"FALLBACK_EXCLUSION_ENTRIES"}},FALLBACK_EXCLUSION_ENTRIES:{collapsed:!0,next:{"*":"FALLBACK_EXCLUSION_DATA"}},FALLBACK_EXCLUSION_DATA:{collapsed:!0,next:{"*":"DEFAULT"}},PACKAGE_REGISTRY_DATA:{collapsed:!1,next:{"*":"PACKAGE_REGISTRY_ENTRIES"}},PACKAGE_REGISTRY_ENTRIES:{collapsed:!0,next:{"*":"PACKAGE_STORE_DATA"}},PACKAGE_STORE_DATA:{collapsed:!1,next:{"*":"PACKAGE_STORE_ENTRIES"}},PACKAGE_STORE_ENTRIES:{collapsed:!0,next:{"*":"PACKAGE_INFORMATION_DATA"}},PACKAGE_INFORMATION_DATA:{collapsed:!1,next:{packageDependencies:"PACKAGE_DEPENDENCIES","*":"DEFAULT"}},PACKAGE_DEPENDENCIES:{collapsed:!1,next:{"*":"PACKAGE_DEPENDENCY"}},PACKAGE_DEPENDENCY:{collapsed:!0,next:{"*":"DEFAULT"}}};function oht(e,t,r){let s="";s+="[";for(let a=0,n=e.length;a"u"||(f!==0&&(a+=", "),a+=JSON.stringify(p),a+=": ",a+=HF(p,h,t,r).replace(/^ +/g,""),f+=1)}return a+="}",a}function cht(e,t,r){let s=Object.keys(e),a=`${r} `,n="";n+=r,n+=`{ -`;let c=0;for(let f=0,p=s.length;f"u"||(c!==0&&(n+=",",n+=` -`),n+=a,n+=JSON.stringify(h),n+=": ",n+=HF(h,E,t,a).replace(/^ +/g,""),c+=1)}return c!==0&&(n+=` -`),n+=r,n+="}",n}function HF(e,t,r,s){let{next:a}=Fwe[r],n=a[e]||a["*"];return Nwe(t,n,s)}function Nwe(e,t,r){let{collapsed:s}=Fwe[t];return Array.isArray(e)?s?oht(e,t,r):aht(e,t,r):typeof e=="object"&&e!==null?s?lht(e,t,r):cht(e,t,r):JSON.stringify(e)}function Owe(e){return Nwe(e,"TOP_LEVEL","")}function QD(e,t){let r=Array.from(e);Array.isArray(t)||(t=[t]);let s=[];for(let n of t)s.push(r.map(c=>n(c)));let a=r.map((n,c)=>c);return a.sort((n,c)=>{for(let f of s){let p=f[n]f[c]?1:0;if(p!==0)return p}return 0}),a.map(n=>r[n])}function uht(e){let t=new Map,r=QD(e.fallbackExclusionList||[],[({name:s,reference:a})=>s,({name:s,reference:a})=>a]);for(let{name:s,reference:a}of r){let n=t.get(s);typeof n>"u"&&t.set(s,n=new Set),n.add(a)}return Array.from(t).map(([s,a])=>[s,Array.from(a)])}function fht(e){return QD(e.fallbackPool||[],([t])=>t)}function Aht(e){let t=[],r=e.dependencyTreeRoots.find(s=>e.packageRegistry.get(s.name)?.get(s.reference)?.packageLocation==="./");for(let[s,a]of QD(e.packageRegistry,([n])=>n===null?"0":`1${n}`)){if(s===null)continue;let n=[];t.push([s,n]);for(let[c,{packageLocation:f,packageDependencies:p,packagePeers:h,linkType:E,discardFromLookup:C}]of QD(a,([S])=>S===null?"0":`1${S}`)){if(c===null)continue;let S=[];s!==null&&c!==null&&!p.has(s)&&S.push([s,c]);for(let[U,Y]of p)S.push([U,Y]);let x=QD(S,([U])=>U),I=h&&h.size>0?Array.from(h):void 0,O={packageLocation:f,packageDependencies:x,packagePeers:I,linkType:E,discardFromLookup:C||void 0};n.push([c,O]),r&&s===r.name&&c===r.reference&&t.unshift([null,[[null,O]]])}}return t}function RD(e){return{__info:["This file is automatically generated. Do not touch it, or risk","your modifications being lost."],dependencyTreeRoots:e.dependencyTreeRoots,enableTopLevelFallback:e.enableTopLevelFallback||!1,ignorePatternData:e.ignorePattern||null,pnpZipBackend:e.pnpZipBackend,fallbackExclusionList:uht(e),fallbackPool:fht(e),packageRegistryData:Aht(e)}}var Uwe=et(Mwe());function _we(e,t){return[e?`${e} -`:"",`/* eslint-disable */ -`,`// @ts-nocheck -`,`"use strict"; -`,` -`,t,` -`,(0,Uwe.default)()].join("")}function pht(e){return JSON.stringify(e,null,2)}function hht(e){return`'${e.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\n/g,`\\ -`)}'`}function ght(e){return[`const RAW_RUNTIME_STATE = -`,`${hht(Owe(e))}; - -`,`function $$SETUP_STATE(hydrateRuntimeState, basePath) { -`,` return hydrateRuntimeState(JSON.parse(RAW_RUNTIME_STATE), {basePath: basePath || __dirname}); -`,`} -`].join("")}function dht(){return[`function $$SETUP_STATE(hydrateRuntimeState, basePath) { -`,` const fs = require('fs'); -`,` const path = require('path'); -`,` const pnpDataFilepath = path.resolve(__dirname, ${JSON.stringify(Er.pnpData)}); -`,` return hydrateRuntimeState(JSON.parse(fs.readFileSync(pnpDataFilepath, 'utf8')), {basePath: basePath || __dirname}); -`,`} -`].join("")}function Hwe(e){let t=RD(e),r=ght(t);return _we(e.shebang,r)}function jwe(e){let t=RD(e),r=dht(),s=_we(e.shebang,r);return{dataFile:pht(t),loaderFile:s}}Dt();function wW(e,{basePath:t}){let r=fe.toPortablePath(t),s=K.resolve(r),a=e.ignorePatternData!==null?new RegExp(e.ignorePatternData):null,n=new Map,c=new Map(e.packageRegistryData.map(([C,S])=>[C,new Map(S.map(([x,I])=>{if(C===null!=(x===null))throw new Error("Assertion failed: The name and reference should be null, or neither should");let T=I.discardFromLookup??!1,O={name:C,reference:x},U=n.get(I.packageLocation);U?(U.discardFromLookup=U.discardFromLookup&&T,T||(U.locator=O)):n.set(I.packageLocation,{locator:O,discardFromLookup:T});let Y=null;return[x,{packageDependencies:new Map(I.packageDependencies),packagePeers:new Set(I.packagePeers),linkType:I.linkType,discardFromLookup:T,get packageLocation(){return Y||(Y=K.join(s,I.packageLocation))}}]}))])),f=new Map(e.fallbackExclusionList.map(([C,S])=>[C,new Set(S)])),p=new Map(e.fallbackPool),h=e.dependencyTreeRoots,E=e.enableTopLevelFallback;return{basePath:r,dependencyTreeRoots:h,enableTopLevelFallback:E,fallbackExclusionList:f,pnpZipBackend:e.pnpZipBackend,fallbackPool:p,ignorePattern:a,packageLocatorsByLocations:n,packageRegistry:c}}Dt();Dt();var nh=Ie("module"),Wm=Ie("url"),RW=Ie("util");var sa=Ie("url");var Vwe=et(Ie("assert"));var BW=Array.isArray,TD=JSON.stringify,FD=Object.getOwnPropertyNames,qm=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),vW=(e,t)=>RegExp.prototype.exec.call(e,t),SW=(e,...t)=>RegExp.prototype[Symbol.replace].apply(e,t),tg=(e,...t)=>String.prototype.endsWith.apply(e,t),DW=(e,...t)=>String.prototype.includes.apply(e,t),bW=(e,...t)=>String.prototype.lastIndexOf.apply(e,t),ND=(e,...t)=>String.prototype.indexOf.apply(e,t),Gwe=(e,...t)=>String.prototype.replace.apply(e,t),rg=(e,...t)=>String.prototype.slice.apply(e,t),gA=(e,...t)=>String.prototype.startsWith.apply(e,t),qwe=Map,Wwe=JSON.parse;function OD(e,t,r){return class extends r{constructor(...s){super(t(...s)),this.code=e,this.name=`${r.name} [${e}]`}}}var Ywe=OD("ERR_PACKAGE_IMPORT_NOT_DEFINED",(e,t,r)=>`Package import specifier "${e}" is not defined${t?` in package ${t}package.json`:""} imported from ${r}`,TypeError),PW=OD("ERR_INVALID_MODULE_SPECIFIER",(e,t,r=void 0)=>`Invalid module "${e}" ${t}${r?` imported from ${r}`:""}`,TypeError),Kwe=OD("ERR_INVALID_PACKAGE_TARGET",(e,t,r,s=!1,a=void 0)=>{let n=typeof r=="string"&&!s&&r.length&&!gA(r,"./");return t==="."?((0,Vwe.default)(s===!1),`Invalid "exports" main target ${TD(r)} defined in the package config ${e}package.json${a?` imported from ${a}`:""}${n?'; targets must start with "./"':""}`):`Invalid "${s?"imports":"exports"}" target ${TD(r)} defined for '${t}' in the package config ${e}package.json${a?` imported from ${a}`:""}${n?'; targets must start with "./"':""}`},Error),LD=OD("ERR_INVALID_PACKAGE_CONFIG",(e,t,r)=>`Invalid package config ${e}${t?` while importing ${t}`:""}${r?`. ${r}`:""}`,Error),Jwe=OD("ERR_PACKAGE_PATH_NOT_EXPORTED",(e,t,r=void 0)=>t==="."?`No "exports" main defined in ${e}package.json${r?` imported from ${r}`:""}`:`Package subpath '${t}' is not defined by "exports" in ${e}package.json${r?` imported from ${r}`:""}`,Error);var GF=Ie("url");function zwe(e,t){let r=Object.create(null);for(let s=0;st):e+t}MD(r,e,s,c,a)}vW(Xwe,rg(e,2))!==null&&MD(r,e,s,c,a);let p=new URL(e,s),h=p.pathname,E=new URL(".",s).pathname;if(gA(h,E)||MD(r,e,s,c,a),t==="")return p;if(vW(Xwe,t)!==null){let C=n?Gwe(r,"*",()=>t):r+t;Eht(C,s,c,a)}return n?new URL(SW($we,p.href,()=>t)):new URL(t,p)}function Cht(e){let t=+e;return`${t}`!==e?!1:t>=0&&t<4294967295}function dw(e,t,r,s,a,n,c,f){if(typeof t=="string")return Iht(t,r,s,e,a,n,c,f);if(BW(t)){if(t.length===0)return null;let p;for(let h=0;hn?-1:n>a||r===-1?1:s===-1||e.length>t.length?-1:t.length>e.length?1:0}function wht(e,t,r){if(typeof e=="string"||BW(e))return!0;if(typeof e!="object"||e===null)return!1;let s=FD(e),a=!1,n=0;for(let c=0;c=h.length&&tg(t,C)&&t1e(n,h)===1&&bW(h,"*")===E&&(n=h,c=rg(t,E,t.length-C.length))}}if(n){let p=r[n],h=dw(e,p,c,n,s,!0,!1,a);return h==null&&xW(t,e,s),h}xW(t,e,s)}function n1e({name:e,base:t,conditions:r,readFileSyncFn:s}){if(e==="#"||gA(e,"#/")||tg(e,"/")){let c="is not a valid internal imports specifier name";throw new PW(e,c,(0,sa.fileURLToPath)(t))}let a,n=Zwe(t,s);if(n.exists){a=(0,sa.pathToFileURL)(n.pjsonPath);let c=n.imports;if(c)if(qm(c,e)&&!DW(e,"*")){let f=dw(a,c[e],"",e,t,!1,!0,r);if(f!=null)return f}else{let f="",p,h=FD(c);for(let E=0;E=C.length&&tg(e,x)&&t1e(f,C)===1&&bW(C,"*")===S&&(f=C,p=rg(e,S,e.length-x.length))}}if(f){let E=c[f],C=dw(a,E,p,f,t,!0,!0,r);if(C!=null)return C}}}yht(e,a,t)}Dt();var vht=new Set(["BUILTIN_NODE_RESOLUTION_FAILED","MISSING_DEPENDENCY","MISSING_PEER_DEPENDENCY","QUALIFIED_PATH_RESOLUTION_FAILED","UNDECLARED_DEPENDENCY"]);function ys(e,t,r={},s){s??=vht.has(e)?"MODULE_NOT_FOUND":e;let a={configurable:!0,writable:!0,enumerable:!1};return Object.defineProperties(new Error(t),{code:{...a,value:s},pnpCode:{...a,value:e},data:{...a,value:r}})}function uf(e){return fe.normalize(fe.fromPortablePath(e))}var a1e=et(s1e());function l1e(e){return Sht(),QW[e]}var QW;function Sht(){QW||(QW={"--conditions":[],...o1e(Dht()),...o1e(process.execArgv)})}function o1e(e){return(0,a1e.default)({"--conditions":[String],"-C":"--conditions"},{argv:e,permissive:!0})}function Dht(){let e=[],t=bht(process.env.NODE_OPTIONS||"",e);return e.length,t}function bht(e,t){let r=[],s=!1,a=!0;for(let n=0;nparseInt(e,10)),c1e=Bl>19||Bl===19&&rh>=2||Bl===18&&rh>=13,GJt=Bl===20&&rh<6||Bl===19&&rh>=3,qJt=Bl>19||Bl===19&&rh>=6,WJt=Bl>=21||Bl===20&&rh>=10||Bl===18&&rh>=19,VJt=Bl>=21||Bl===20&&rh>=10||Bl===18&&rh>=20,YJt=Bl>=22;function u1e(e){if(process.env.WATCH_REPORT_DEPENDENCIES&&process.send)if(e=e.map(t=>fe.fromPortablePath(mo.resolveVirtual(fe.toPortablePath(t)))),c1e)process.send({"watch:require":e});else for(let t of e)process.send({"watch:require":t})}function TW(e,t){let r=Number(process.env.PNP_ALWAYS_WARN_ON_FALLBACK)>0,s=Number(process.env.PNP_DEBUG_LEVEL),a=/^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:node:)?(?:@[^/]+\/)?[^/]+)\/*(.*|)$/,n=/^(\/|\.{1,2}(\/|$))/,c=/\/$/,f=/^\.{0,2}\//,p={name:null,reference:null},h=[],E=new Set;if(e.enableTopLevelFallback===!0&&h.push(p),t.compatibilityMode!==!1)for(let Ne of["react-scripts","gatsby"]){let ke=e.packageRegistry.get(Ne);if(ke)for(let be of ke.keys()){if(be===null)throw new Error("Assertion failed: This reference shouldn't be null");h.push({name:Ne,reference:be})}}let{ignorePattern:C,packageRegistry:S,packageLocatorsByLocations:x}=e;function I(Ne,ke){return{fn:Ne,args:ke,error:null,result:null}}function T(Ne){let ke=process.stderr?.hasColors?.()??process.stdout.isTTY,be=(ct,Me)=>`\x1B[${ct}m${Me}\x1B[0m`,je=Ne.error;console.error(je?be("31;1",`\u2716 ${Ne.error?.message.replace(/\n.*/s,"")}`):be("33;1","\u203C Resolution")),Ne.args.length>0&&console.error();for(let ct of Ne.args)console.error(` ${be("37;1","In \u2190")} ${(0,RW.inspect)(ct,{colors:ke,compact:!0})}`);Ne.result&&(console.error(),console.error(` ${be("37;1","Out \u2192")} ${(0,RW.inspect)(Ne.result,{colors:ke,compact:!0})}`));let Re=new Error().stack.match(/(?<=^ +)at.*/gm)?.slice(2)??[];if(Re.length>0){console.error();for(let ct of Re)console.error(` ${be("38;5;244",ct)}`)}console.error()}function O(Ne,ke){if(t.allowDebug===!1)return ke;if(Number.isFinite(s)){if(s>=2)return(...be)=>{let je=I(Ne,be);try{return je.result=ke(...be)}catch(Re){throw je.error=Re}finally{T(je)}};if(s>=1)return(...be)=>{try{return ke(...be)}catch(je){let Re=I(Ne,be);throw Re.error=je,T(Re),je}}}return ke}function U(Ne){let ke=g(Ne);if(!ke)throw ys("INTERNAL","Couldn't find a matching entry in the dependency tree for the specified parent (this is probably an internal error)");return ke}function Y(Ne){if(Ne.name===null)return!0;for(let ke of e.dependencyTreeRoots)if(ke.name===Ne.name&&ke.reference===Ne.reference)return!0;return!1}let te=new Set(["node","require",...l1e("--conditions")]);function ie(Ne,ke=te,be){let je=me(K.join(Ne,"internal.js"),{resolveIgnored:!0,includeDiscardFromLookup:!0});if(je===null)throw ys("INTERNAL",`The locator that owns the "${Ne}" path can't be found inside the dependency tree (this is probably an internal error)`);let{packageLocation:Re}=U(je),ct=K.join(Re,Er.manifest);if(!t.fakeFs.existsSync(ct))return null;let Me=JSON.parse(t.fakeFs.readFileSync(ct,"utf8"));if(Me.exports==null)return null;let P=K.contains(Re,Ne);if(P===null)throw ys("INTERNAL","unqualifiedPath doesn't contain the packageLocation (this is probably an internal error)");P!=="."&&!f.test(P)&&(P=`./${P}`);try{let w=r1e({packageJSONUrl:(0,Wm.pathToFileURL)(fe.fromPortablePath(ct)),packageSubpath:P,exports:Me.exports,base:be?(0,Wm.pathToFileURL)(fe.fromPortablePath(be)):null,conditions:ke});return fe.toPortablePath((0,Wm.fileURLToPath)(w))}catch(w){throw ys("EXPORTS_RESOLUTION_FAILED",w.message,{unqualifiedPath:uf(Ne),locator:je,pkgJson:Me,subpath:uf(P),conditions:ke},w.code)}}function ue(Ne,ke,{extensions:be}){let je;try{ke.push(Ne),je=t.fakeFs.statSync(Ne)}catch{}if(je&&!je.isDirectory())return t.fakeFs.realpathSync(Ne);if(je&&je.isDirectory()){let Re;try{Re=JSON.parse(t.fakeFs.readFileSync(K.join(Ne,Er.manifest),"utf8"))}catch{}let ct;if(Re&&Re.main&&(ct=K.resolve(Ne,Re.main)),ct&&ct!==Ne){let Me=ue(ct,ke,{extensions:be});if(Me!==null)return Me}}for(let Re=0,ct=be.length;Re{let P=JSON.stringify(Me.name);if(je.has(P))return;je.add(P);let w=Se(Me);for(let b of w)if(U(b).packagePeers.has(Ne))Re(b);else{let F=be.get(b.name);typeof F>"u"&&be.set(b.name,F=new Set),F.add(b.reference)}};Re(ke);let ct=[];for(let Me of[...be.keys()].sort())for(let P of[...be.get(Me)].sort())ct.push({name:Me,reference:P});return ct}function me(Ne,{resolveIgnored:ke=!1,includeDiscardFromLookup:be=!1}={}){if(Ae(Ne)&&!ke)return null;let je=K.relative(e.basePath,Ne);je.match(n)||(je=`./${je}`),je.endsWith("/")||(je=`${je}/`);do{let Re=x.get(je);if(typeof Re>"u"||Re.discardFromLookup&&!be){je=je.substring(0,je.lastIndexOf("/",je.length-2)+1);continue}return Re.locator}while(je!=="");return null}function ce(Ne){try{return t.fakeFs.readFileSync(fe.toPortablePath(Ne),"utf8")}catch(ke){if(ke.code==="ENOENT")return;throw ke}}function X(Ne,ke,{considerBuiltins:be=!0}={}){if(Ne.startsWith("#"))throw new Error("resolveToUnqualified can not handle private import mappings");if(Ne==="pnpapi")return fe.toPortablePath(t.pnpapiResolution);if(be&&(0,nh.isBuiltin)(Ne))return null;let je=uf(Ne),Re=ke&&uf(ke);if(ke&&Ae(ke)&&(!K.isAbsolute(Ne)||me(Ne)===null)){let P=de(Ne,ke);if(P===!1)throw ys("BUILTIN_NODE_RESOLUTION_FAILED",`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer was explicitely ignored by the regexp) - -Require request: "${je}" -Required by: ${Re} -`,{request:je,issuer:Re});return fe.toPortablePath(P)}let ct,Me=Ne.match(a);if(Me){if(!ke)throw ys("API_ERROR","The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:je,issuer:Re});let[,P,w]=Me,b=me(ke);if(!b){let Fe=de(Ne,ke);if(Fe===!1)throw ys("BUILTIN_NODE_RESOLUTION_FAILED",`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer doesn't seem to be part of the Yarn-managed dependency tree). - -Require path: "${je}" -Required by: ${Re} -`,{request:je,issuer:Re});return fe.toPortablePath(Fe)}let F=U(b).packageDependencies.get(P),z=null;if(F==null&&b.name!==null){let Fe=e.fallbackExclusionList.get(b.name);if(!Fe||!Fe.has(b.reference)){for(let Ct=0,qt=h.length;CtY(ut))?Z=ys("MISSING_PEER_DEPENDENCY",`${b.name} tried to access ${P} (a peer dependency) but it isn't provided by your application; this makes the require call ambiguous and unsound. - -Required package: ${P}${P!==je?` (via "${je}")`:""} -Required by: ${b.name}@${b.reference} (via ${Re}) -${Fe.map(ut=>`Ancestor breaking the chain: ${ut.name}@${ut.reference} -`).join("")} -`,{request:je,issuer:Re,issuerLocator:Object.assign({},b),dependencyName:P,brokenAncestors:Fe}):Z=ys("MISSING_PEER_DEPENDENCY",`${b.name} tried to access ${P} (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound. - -Required package: ${P}${P!==je?` (via "${je}")`:""} -Required by: ${b.name}@${b.reference} (via ${Re}) - -${Fe.map(ut=>`Ancestor breaking the chain: ${ut.name}@${ut.reference} -`).join("")} -`,{request:je,issuer:Re,issuerLocator:Object.assign({},b),dependencyName:P,brokenAncestors:Fe})}else F===void 0&&(!be&&(0,nh.isBuiltin)(Ne)?Y(b)?Z=ys("UNDECLARED_DEPENDENCY",`Your application tried to access ${P}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${P} isn't otherwise declared in your dependencies, this makes the require call ambiguous and unsound. - -Required package: ${P}${P!==je?` (via "${je}")`:""} -Required by: ${Re} -`,{request:je,issuer:Re,dependencyName:P}):Z=ys("UNDECLARED_DEPENDENCY",`${b.name} tried to access ${P}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${P} isn't otherwise declared in ${b.name}'s dependencies, this makes the require call ambiguous and unsound. - -Required package: ${P}${P!==je?` (via "${je}")`:""} -Required by: ${Re} -`,{request:je,issuer:Re,issuerLocator:Object.assign({},b),dependencyName:P}):Y(b)?Z=ys("UNDECLARED_DEPENDENCY",`Your application tried to access ${P}, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound. - -Required package: ${P}${P!==je?` (via "${je}")`:""} -Required by: ${Re} -`,{request:je,issuer:Re,dependencyName:P}):Z=ys("UNDECLARED_DEPENDENCY",`${b.name} tried to access ${P}, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound. - -Required package: ${P}${P!==je?` (via "${je}")`:""} -Required by: ${b.name}@${b.reference} (via ${Re}) -`,{request:je,issuer:Re,issuerLocator:Object.assign({},b),dependencyName:P}));if(F==null){if(z===null||Z===null)throw Z||new Error("Assertion failed: Expected an error to have been set");F=z;let Fe=Z.message.replace(/\n.*/g,"");Z.message=Fe,!E.has(Fe)&&s!==0&&(E.add(Fe),process.emitWarning(Z))}let $=Array.isArray(F)?{name:F[0],reference:F[1]}:{name:P,reference:F},se=U($);if(!se.packageLocation)throw ys("MISSING_DEPENDENCY",`A dependency seems valid but didn't get installed for some reason. This might be caused by a partial install, such as dev vs prod. - -Required package: ${$.name}@${$.reference}${$.name!==je?` (via "${je}")`:""} -Required by: ${b.name}@${b.reference} (via ${Re}) -`,{request:je,issuer:Re,dependencyLocator:Object.assign({},$)});let xe=se.packageLocation;w?ct=K.join(xe,w):ct=xe}else if(K.isAbsolute(Ne))ct=K.normalize(Ne);else{if(!ke)throw ys("API_ERROR","The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:je,issuer:Re});let P=K.resolve(ke);ke.match(c)?ct=K.normalize(K.join(P,Ne)):ct=K.normalize(K.join(K.dirname(P),Ne))}return K.normalize(ct)}function De(Ne,ke,be=te,je){if(n.test(Ne))return ke;let Re=ie(ke,be,je);return Re?K.normalize(Re):ke}function Qe(Ne,{extensions:ke=Object.keys(nh.Module._extensions)}={}){let be=[],je=ue(Ne,be,{extensions:ke});if(je)return K.normalize(je);{u1e(be.map(Me=>fe.fromPortablePath(Me)));let Re=uf(Ne),ct=me(Ne);if(ct){let{packageLocation:Me}=U(ct),P=!0;try{t.fakeFs.accessSync(Me)}catch(w){if(w?.code==="ENOENT")P=!1;else{let b=(w?.message??w??"empty exception thrown").replace(/^[A-Z]/,y=>y.toLowerCase());throw ys("QUALIFIED_PATH_RESOLUTION_FAILED",`Required package exists but could not be accessed (${b}). - -Missing package: ${ct.name}@${ct.reference} -Expected package location: ${uf(Me)} -`,{unqualifiedPath:Re,extensions:ke})}}if(!P){let w=Me.includes("/unplugged/")?"Required unplugged package missing from disk. This may happen when switching branches without running installs (unplugged packages must be fully materialized on disk to work).":"Required package missing from disk. If you keep your packages inside your repository then restarting the Node process may be enough. Otherwise, try to run an install first.";throw ys("QUALIFIED_PATH_RESOLUTION_FAILED",`${w} - -Missing package: ${ct.name}@${ct.reference} -Expected package location: ${uf(Me)} -`,{unqualifiedPath:Re,extensions:ke})}}throw ys("QUALIFIED_PATH_RESOLUTION_FAILED",`Qualified path resolution failed: we looked for the following paths, but none could be accessed. - -Source path: ${Re} -${be.map(Me=>`Not found: ${uf(Me)} -`).join("")}`,{unqualifiedPath:Re,extensions:ke})}}function it(Ne,ke,be){if(!ke)throw new Error("Assertion failed: An issuer is required to resolve private import mappings");let je=n1e({name:Ne,base:(0,Wm.pathToFileURL)(fe.fromPortablePath(ke)),conditions:be.conditions??te,readFileSyncFn:ce});if(je instanceof URL)return Qe(fe.toPortablePath((0,Wm.fileURLToPath)(je)),{extensions:be.extensions});if(je.startsWith("#"))throw new Error("Mapping from one private import to another isn't allowed");return _(je,ke,be)}function _(Ne,ke,be={}){try{if(Ne.startsWith("#"))return it(Ne,ke,be);let{considerBuiltins:je,extensions:Re,conditions:ct}=be,Me=X(Ne,ke,{considerBuiltins:je});if(Ne==="pnpapi")return Me;if(Me===null)return null;let P=()=>ke!==null?Ae(ke):!1,w=(!je||!(0,nh.isBuiltin)(Ne))&&!P()?De(Ne,Me,ct,ke):Me;return Qe(w,{extensions:Re})}catch(je){throw Object.hasOwn(je,"pnpCode")&&Object.assign(je.data,{request:uf(Ne),issuer:ke&&uf(ke)}),je}}function tt(Ne){let ke=K.normalize(Ne),be=mo.resolveVirtual(ke);return be!==ke?be:null}return{VERSIONS:Ce,topLevel:Ee,getLocator:(Ne,ke)=>Array.isArray(ke)?{name:ke[0],reference:ke[1]}:{name:Ne,reference:ke},getDependencyTreeRoots:()=>[...e.dependencyTreeRoots],getAllLocators(){let Ne=[];for(let[ke,be]of S)for(let je of be.keys())ke!==null&&je!==null&&Ne.push({name:ke,reference:je});return Ne},getPackageInformation:Ne=>{let ke=g(Ne);if(ke===null)return null;let be=fe.fromPortablePath(ke.packageLocation);return{...ke,packageLocation:be}},findPackageLocator:Ne=>me(fe.toPortablePath(Ne)),resolveToUnqualified:O("resolveToUnqualified",(Ne,ke,be)=>{let je=ke!==null?fe.toPortablePath(ke):null,Re=X(fe.toPortablePath(Ne),je,be);return Re===null?null:fe.fromPortablePath(Re)}),resolveUnqualified:O("resolveUnqualified",(Ne,ke)=>fe.fromPortablePath(Qe(fe.toPortablePath(Ne),ke))),resolveRequest:O("resolveRequest",(Ne,ke,be)=>{let je=ke!==null?fe.toPortablePath(ke):null,Re=_(fe.toPortablePath(Ne),je,be);return Re===null?null:fe.fromPortablePath(Re)}),resolveVirtual:O("resolveVirtual",Ne=>{let ke=tt(fe.toPortablePath(Ne));return ke!==null?fe.fromPortablePath(ke):null})}}Dt();var f1e=(e,t,r)=>{let s=RD(e),a=wW(s,{basePath:t}),n=fe.join(t,Er.pnpCjs);return TW(a,{fakeFs:r,pnpapiResolution:n})};var NW=et(p1e());Vt();var dA={};Yt(dA,{checkManifestCompatibility:()=>h1e,extractBuildRequest:()=>qF,getExtractHint:()=>OW,hasBindingGyp:()=>LW});qe();Dt();function h1e(e){return j.isPackageCompatible(e,Ui.getArchitectureSet())}function qF(e,t,r,{configuration:s}){let a=[];for(let n of["preinstall","install","postinstall"])t.manifest.scripts.has(n)&&a.push({type:0,script:n});return!t.manifest.scripts.has("install")&&t.misc.hasBindingGyp&&a.push({type:1,script:"node-gyp rebuild"}),a.length===0?null:e.linkType!=="HARD"?{skipped:!0,explain:n=>n.reportWarningOnce(6,`${j.prettyLocator(s,e)} lists build scripts, but is referenced through a soft link. Soft links don't support build scripts, so they'll be ignored.`)}:r&&r.built===!1?{skipped:!0,explain:n=>n.reportInfoOnce(5,`${j.prettyLocator(s,e)} lists build scripts, but its build has been explicitly disabled through configuration.`)}:!s.get("enableScripts")&&!r.built?{skipped:!0,explain:n=>n.reportWarningOnce(4,`${j.prettyLocator(s,e)} lists build scripts, but all build scripts have been disabled.`)}:h1e(e)?{skipped:!1,directives:a}:{skipped:!0,explain:n=>n.reportWarningOnce(76,`${j.prettyLocator(s,e)} The ${Ui.getArchitectureName()} architecture is incompatible with this package, build skipped.`)}}var xht=new Set([".exe",".bin",".h",".hh",".hpp",".c",".cc",".cpp",".java",".jar",".node"]);function OW(e){return e.packageFs.getExtractHint({relevantExtensions:xht})}function LW(e){let t=K.join(e.prefixPath,"binding.gyp");return e.packageFs.existsSync(t)}var HD={};Yt(HD,{getUnpluggedPath:()=>_D});qe();Dt();function _D(e,{configuration:t}){return K.resolve(t.get("pnpUnpluggedFolder"),j.slugifyLocator(e))}var kht=new Set([j.makeIdent(null,"open").identHash,j.makeIdent(null,"opn").identHash]),ng=class{constructor(){this.mode="strict";this.pnpCache=new Map}getCustomDataKey(){return JSON.stringify({name:"PnpLinker",version:2})}supportsPackage(t,r){return this.isEnabled(r)}async findPackageLocation(t,r){if(!this.isEnabled(r))throw new Error("Assertion failed: Expected the PnP linker to be enabled");let s=ig(r.project).cjs;if(!le.existsSync(s))throw new st(`The project in ${pe.pretty(r.project.configuration,`${r.project.cwd}/package.json`,pe.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let a=Ge.getFactoryWithDefault(this.pnpCache,s,()=>Ge.dynamicRequire(s,{cachingStrategy:Ge.CachingStrategy.FsTime})),n={name:j.stringifyIdent(t),reference:t.reference},c=a.getPackageInformation(n);if(!c)throw new st(`Couldn't find ${j.prettyLocator(r.project.configuration,t)} in the currently installed PnP map - running an install might help`);return fe.toPortablePath(c.packageLocation)}async findPackageLocator(t,r){if(!this.isEnabled(r))return null;let s=ig(r.project).cjs;if(!le.existsSync(s))return null;let n=Ge.getFactoryWithDefault(this.pnpCache,s,()=>Ge.dynamicRequire(s,{cachingStrategy:Ge.CachingStrategy.FsTime})).findPackageLocator(fe.fromPortablePath(t));return n?j.makeLocator(j.parseIdent(n.name),n.reference):null}makeInstaller(t){return new Vm(t)}isEnabled(t){return!(t.project.configuration.get("nodeLinker")!=="pnp"||t.project.configuration.get("pnpMode")!==this.mode)}},Vm=class{constructor(t){this.opts=t;this.mode="strict";this.asyncActions=new Ge.AsyncActions(10);this.packageRegistry=new Map;this.virtualTemplates=new Map;this.isESMLoaderRequired=!1;this.customData={store:new Map};this.unpluggedPaths=new Set;this.opts=t}attachCustomData(t){this.customData=t}async installPackage(t,r,s){let a=j.stringifyIdent(t),n=t.reference,c=!!this.opts.project.tryWorkspaceByLocator(t),f=j.isVirtualLocator(t),p=t.peerDependencies.size>0&&!f,h=!p&&!c,E=!p&&t.linkType!=="SOFT",C,S;if(h||E){let te=f?j.devirtualizeLocator(t):t;C=this.customData.store.get(te.locatorHash),typeof C>"u"&&(C=await Qht(r),t.linkType==="HARD"&&this.customData.store.set(te.locatorHash,C)),C.manifest.type==="module"&&(this.isESMLoaderRequired=!0),S=this.opts.project.getDependencyMeta(te,t.version)}let x=h?qF(t,C,S,{configuration:this.opts.project.configuration}):null,I=E?await this.unplugPackageIfNeeded(t,C,r,S,s):r.packageFs;if(K.isAbsolute(r.prefixPath))throw new Error(`Assertion failed: Expected the prefix path (${r.prefixPath}) to be relative to the parent`);let T=K.resolve(I.getRealPath(),r.prefixPath),O=MW(this.opts.project.cwd,T),U=new Map,Y=new Set;if(f){for(let te of t.peerDependencies.values())U.set(j.stringifyIdent(te),null),Y.add(j.stringifyIdent(te));if(!c){let te=j.devirtualizeLocator(t);this.virtualTemplates.set(te.locatorHash,{location:MW(this.opts.project.cwd,mo.resolveVirtual(T)),locator:te})}}return Ge.getMapWithDefault(this.packageRegistry,a).set(n,{packageLocation:O,packageDependencies:U,packagePeers:Y,linkType:t.linkType,discardFromLookup:r.discardFromLookup||!1}),{packageLocation:T,buildRequest:x}}async attachInternalDependencies(t,r){let s=this.getPackageInformation(t);for(let[a,n]of r){let c=j.areIdentsEqual(a,n)?n.reference:[j.stringifyIdent(n),n.reference];s.packageDependencies.set(j.stringifyIdent(a),c)}}async attachExternalDependents(t,r){for(let s of r)this.getDiskInformation(s).packageDependencies.set(j.stringifyIdent(t),t.reference)}async finalizeInstall(){if(this.opts.project.configuration.get("pnpMode")!==this.mode)return;let t=ig(this.opts.project);if(this.isEsmEnabled()||await le.removePromise(t.esmLoader),this.opts.project.configuration.get("nodeLinker")!=="pnp"){await le.removePromise(t.cjs),await le.removePromise(t.data),await le.removePromise(t.esmLoader),await le.removePromise(this.opts.project.configuration.get("pnpUnpluggedFolder"));return}for(let{locator:C,location:S}of this.virtualTemplates.values())Ge.getMapWithDefault(this.packageRegistry,j.stringifyIdent(C)).set(C.reference,{packageLocation:S,packageDependencies:new Map,packagePeers:new Set,linkType:"SOFT",discardFromLookup:!1});let r=this.opts.project.configuration.get("pnpFallbackMode"),s=this.opts.project.workspaces.map(({anchoredLocator:C})=>({name:j.stringifyIdent(C),reference:C.reference})),a=r!=="none",n=[],c=new Map,f=Ge.buildIgnorePattern([".yarn/sdks/**",...this.opts.project.configuration.get("pnpIgnorePatterns")]),p=this.packageRegistry,h=this.opts.project.configuration.get("pnpShebang"),E=this.opts.project.configuration.get("pnpZipBackend");if(r==="dependencies-only")for(let C of this.opts.project.storedPackages.values())this.opts.project.tryWorkspaceByLocator(C)&&n.push({name:j.stringifyIdent(C),reference:C.reference});return await this.asyncActions.wait(),await this.finalizeInstallWithPnp({dependencyTreeRoots:s,enableTopLevelFallback:a,fallbackExclusionList:n,fallbackPool:c,ignorePattern:f,pnpZipBackend:E,packageRegistry:p,shebang:h}),{customData:this.customData}}async transformPnpSettings(t){}isEsmEnabled(){if(this.opts.project.configuration.sources.has("pnpEnableEsmLoader"))return this.opts.project.configuration.get("pnpEnableEsmLoader");if(this.isESMLoaderRequired)return!0;for(let t of this.opts.project.workspaces)if(t.manifest.type==="module")return!0;return!1}async finalizeInstallWithPnp(t){let r=ig(this.opts.project),s=await this.locateNodeModules(t.ignorePattern);if(s.length>0){this.opts.report.reportWarning(31,"One or more node_modules have been detected and will be removed. This operation may take some time.");for(let n of s)await le.removePromise(n)}if(await this.transformPnpSettings(t),this.opts.project.configuration.get("pnpEnableInlining")){let n=Hwe(t);await le.changeFilePromise(r.cjs,n,{automaticNewlines:!0,mode:493}),await le.removePromise(r.data)}else{let{dataFile:n,loaderFile:c}=jwe(t);await le.changeFilePromise(r.cjs,c,{automaticNewlines:!0,mode:493}),await le.changeFilePromise(r.data,n,{automaticNewlines:!0,mode:420})}this.isEsmEnabled()&&(this.opts.report.reportWarning(0,"ESM support for PnP uses the experimental loader API and is therefore experimental"),await le.changeFilePromise(r.esmLoader,(0,NW.default)(),{automaticNewlines:!0,mode:420}));let a=this.opts.project.configuration.get("pnpUnpluggedFolder");if(this.unpluggedPaths.size===0)await le.removePromise(a);else for(let n of await le.readdirPromise(a)){let c=K.resolve(a,n);this.unpluggedPaths.has(c)||await le.removePromise(c)}}async locateNodeModules(t){let r=[],s=t?new RegExp(t):null;for(let a of this.opts.project.workspaces){let n=K.join(a.cwd,"node_modules");if(s&&s.test(K.relative(this.opts.project.cwd,a.cwd))||!le.existsSync(n))continue;let c=await le.readdirPromise(n,{withFileTypes:!0}),f=c.filter(p=>!p.isDirectory()||p.name===".bin"||!p.name.startsWith("."));if(f.length===c.length)r.push(n);else for(let p of f)r.push(K.join(n,p.name))}return r}async unplugPackageIfNeeded(t,r,s,a,n){return this.shouldBeUnplugged(t,r,a)?this.unplugPackage(t,s,n):s.packageFs}shouldBeUnplugged(t,r,s){return typeof s.unplugged<"u"?s.unplugged:kht.has(t.identHash)||t.conditions!=null?!0:r.manifest.preferUnplugged!==null?r.manifest.preferUnplugged:!!(qF(t,r,s,{configuration:this.opts.project.configuration})?.skipped===!1||r.misc.extractHint)}async unplugPackage(t,r,s){let a=_D(t,{configuration:this.opts.project.configuration});return this.opts.project.disabledLocators.has(t.locatorHash)?new jf(a,{baseFs:r.packageFs,pathUtils:K}):(this.unpluggedPaths.add(a),s.holdFetchResult(this.asyncActions.set(t.locatorHash,async()=>{let n=K.join(a,r.prefixPath,".ready");await le.existsPromise(n)||(this.opts.project.storedBuildState.delete(t.locatorHash),await le.mkdirPromise(a,{recursive:!0}),await le.copyPromise(a,vt.dot,{baseFs:r.packageFs,overwrite:!1}),await le.writeFilePromise(n,""))})),new bn(a))}getPackageInformation(t){let r=j.stringifyIdent(t),s=t.reference,a=this.packageRegistry.get(r);if(!a)throw new Error(`Assertion failed: The package information store should have been available (for ${j.prettyIdent(this.opts.project.configuration,t)})`);let n=a.get(s);if(!n)throw new Error(`Assertion failed: The package information should have been available (for ${j.prettyLocator(this.opts.project.configuration,t)})`);return n}getDiskInformation(t){let r=Ge.getMapWithDefault(this.packageRegistry,"@@disk"),s=MW(this.opts.project.cwd,t);return Ge.getFactoryWithDefault(r,s,()=>({packageLocation:s,packageDependencies:new Map,packagePeers:new Set,linkType:"SOFT",discardFromLookup:!1}))}};function MW(e,t){let r=K.relative(e,t);return r.match(/^\.{0,2}\//)||(r=`./${r}`),r.replace(/\/?$/,"/")}async function Qht(e){let t=await Ut.tryFind(e.prefixPath,{baseFs:e.packageFs})??new Ut,r=new Set(["preinstall","install","postinstall"]);for(let s of t.scripts.keys())r.has(s)||t.scripts.delete(s);return{manifest:{scripts:t.scripts,preferUnplugged:t.preferUnplugged,type:t.type},misc:{extractHint:OW(e),hasBindingGyp:LW(e)}}}qe();qe();Vt();var g1e=et(Jo());var mw=class extends At{constructor(){super(...arguments);this.all=he.Boolean("-A,--all",!1,{description:"Unplug direct dependencies from the entire project"});this.recursive=he.Boolean("-R,--recursive",!1,{description:"Unplug both direct and transitive dependencies"});this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.patterns=he.Rest()}static{this.paths=[["unplug"]]}static{this.usage=at.Usage({description:"force the unpacking of a list of packages",details:"\n This command will add the selectors matching the specified patterns to the list of packages that must be unplugged when installed.\n\n A package being unplugged means that instead of being referenced directly through its archive, it will be unpacked at install time in the directory configured via `pnpUnpluggedFolder`. Note that unpacking packages this way is generally not recommended because it'll make it harder to store your packages within the repository. However, it's a good approach to quickly and safely debug some packages, and can even sometimes be required depending on the context (for example when the package contains shellscripts).\n\n Running the command will set a persistent flag inside your top-level `package.json`, in the `dependenciesMeta` field. As such, to undo its effects, you'll need to revert the changes made to the manifest and run `yarn install` to apply the modification.\n\n By default, only direct dependencies from the current workspace are affected. If `-A,--all` is set, direct dependencies from the entire project are affected. Using the `-R,--recursive` flag will affect transitive dependencies as well as direct ones.\n\n This command accepts glob patterns inside the scope and name components (not the range). Make sure to escape the patterns to prevent your own shell from trying to expand them.\n ",examples:[["Unplug the lodash dependency from the active workspace","yarn unplug lodash"],["Unplug all instances of lodash referenced by any workspace","yarn unplug lodash -A"],["Unplug all instances of lodash referenced by the active workspace and its dependencies","yarn unplug lodash -R"],["Unplug all instances of lodash, anywhere","yarn unplug lodash -AR"],["Unplug one specific version of lodash","yarn unplug lodash@1.2.3"],["Unplug all packages with the `@babel` scope","yarn unplug '@babel/*'"],["Unplug all packages (only for testing, not recommended)","yarn unplug -R '*'"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Jr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);if(r.get("nodeLinker")!=="pnp")throw new st("This command can only be used if the `nodeLinker` option is set to `pnp`");await s.restoreInstallState();let c=new Set(this.patterns),f=this.patterns.map(x=>{let I=j.parseDescriptor(x),T=I.range!=="unknown"?I:j.makeDescriptor(I,"*");if(!Fr.validRange(T.range))throw new st(`The range of the descriptor patterns must be a valid semver range (${j.prettyDescriptor(r,T)})`);return O=>{let U=j.stringifyIdent(O);return!g1e.default.isMatch(U,j.stringifyIdent(T))||O.version&&!Fr.satisfiesWithPrereleases(O.version,T.range)?!1:(c.delete(x),!0)}}),p=()=>{let x=[];for(let I of s.storedPackages.values())!s.tryWorkspaceByLocator(I)&&!j.isVirtualLocator(I)&&f.some(T=>T(I))&&x.push(I);return x},h=x=>{let I=new Set,T=[],O=(U,Y)=>{if(I.has(U.locatorHash))return;let te=!!s.tryWorkspaceByLocator(U);if(!(Y>0&&!this.recursive&&te)&&(I.add(U.locatorHash),!s.tryWorkspaceByLocator(U)&&f.some(ie=>ie(U))&&T.push(U),!(Y>0&&!this.recursive)))for(let ie of U.dependencies.values()){let ue=s.storedResolutions.get(ie.descriptorHash);if(!ue)throw new Error("Assertion failed: The resolution should have been registered");let ae=s.storedPackages.get(ue);if(!ae)throw new Error("Assertion failed: The package should have been registered");O(ae,Y+1)}};for(let U of x)O(U.anchoredPackage,0);return T},E,C;if(this.all&&this.recursive?(E=p(),C="the project"):this.all?(E=h(s.workspaces),C="any workspace"):(E=h([a]),C="this workspace"),c.size>1)throw new st(`Patterns ${pe.prettyList(r,c,pe.Type.CODE)} don't match any packages referenced by ${C}`);if(c.size>0)throw new st(`Pattern ${pe.prettyList(r,c,pe.Type.CODE)} doesn't match any packages referenced by ${C}`);E=Ge.sortMap(E,x=>j.stringifyLocator(x));let S=await Ot.start({configuration:r,stdout:this.context.stdout,json:this.json},async x=>{for(let I of E){let T=I.version??"unknown",O=s.topLevelWorkspace.manifest.ensureDependencyMeta(j.makeDescriptor(I,T));O.unplugged=!0,x.reportInfo(0,`Will unpack ${j.prettyLocator(r,I)} to ${pe.pretty(r,_D(I,{configuration:r}),pe.Type.PATH)}`),x.reportJson({locator:j.stringifyLocator(I),version:T})}await s.topLevelWorkspace.persistManifest(),this.json||x.reportSeparator()});return S.hasErrors()?S.exitCode():await s.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:n})}};var ig=e=>({cjs:K.join(e.cwd,Er.pnpCjs),data:K.join(e.cwd,Er.pnpData),esmLoader:K.join(e.cwd,Er.pnpEsmLoader)}),m1e=e=>/\s/.test(e)?JSON.stringify(e):e;async function Rht(e,t,r){let s=/\s*--require\s+\S*\.pnp\.c?js\s*/g,a=/\s*--experimental-loader\s+\S*\.pnp\.loader\.mjs\s*/,n=(t.NODE_OPTIONS??"").replace(s," ").replace(a," ").trim();if(e.configuration.get("nodeLinker")!=="pnp"){t.NODE_OPTIONS=n||void 0;return}let c=ig(e),f=`--require ${m1e(fe.fromPortablePath(c.cjs))}`;le.existsSync(c.esmLoader)&&(f=`${f} --experimental-loader ${(0,d1e.pathToFileURL)(fe.fromPortablePath(c.esmLoader)).href}`),le.existsSync(c.cjs)&&(t.NODE_OPTIONS=n?`${f} ${n}`:f)}async function Tht(e,t){let r=ig(e);t(r.cjs),t(r.data),t(r.esmLoader),t(e.configuration.get("pnpUnpluggedFolder"))}var Fht={hooks:{populateYarnPaths:Tht,setupScriptEnvironment:Rht},configuration:{nodeLinker:{description:'The linker used for installing Node packages, one of: "pnp", "pnpm", or "node-modules"',type:"STRING",default:"pnp"},minizip:{description:"Whether Yarn should use minizip to extract archives",type:"BOOLEAN",default:!1},winLinkType:{description:"Whether Yarn should use Windows Junctions or symlinks when creating links on Windows.",type:"STRING",values:["junctions","symlinks"],default:"junctions"},pnpMode:{description:"If 'strict', generates standard PnP maps. If 'loose', merges them with the n_m resolution.",type:"STRING",default:"strict"},pnpShebang:{description:"String to prepend to the generated PnP script",type:"STRING",default:"#!/usr/bin/env node"},pnpIgnorePatterns:{description:"Array of glob patterns; files matching them will use the classic resolution",type:"STRING",default:[],isArray:!0},pnpZipBackend:{description:"Whether to use the experimental js implementation for the ZipFS",type:"STRING",values:["libzip","js"],default:"libzip"},pnpEnableEsmLoader:{description:"If true, Yarn will generate an ESM loader (`.pnp.loader.mjs`). If this is not explicitly set Yarn tries to automatically detect whether ESM support is required.",type:"BOOLEAN",default:!1},pnpEnableInlining:{description:"If true, the PnP data will be inlined along with the generated loader",type:"BOOLEAN",default:!0},pnpFallbackMode:{description:"If true, the generated PnP loader will follow the top-level fallback rule",type:"STRING",default:"dependencies-only"},pnpUnpluggedFolder:{description:"Folder where the unplugged packages must be stored",type:"ABSOLUTE_PATH",default:"./.yarn/unplugged"}},linkers:[ng],commands:[mw]},Nht=Fht;var S1e=et(w1e());Vt();var VW=et(Ie("crypto")),D1e=et(Ie("fs")),b1e=1,Ri="node_modules",WF=".bin",P1e=".yarn-state.yml",Xht=1e3,YW=(s=>(s.CLASSIC="classic",s.HARDLINKS_LOCAL="hardlinks-local",s.HARDLINKS_GLOBAL="hardlinks-global",s))(YW||{}),jD=class{constructor(){this.installStateCache=new Map}getCustomDataKey(){return JSON.stringify({name:"NodeModulesLinker",version:3})}supportsPackage(t,r){return this.isEnabled(r)}async findPackageLocation(t,r){if(!this.isEnabled(r))throw new Error("Assertion failed: Expected the node-modules linker to be enabled");let s=r.project.tryWorkspaceByLocator(t);if(s)return s.cwd;let a=await Ge.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await WW(r.project,{unrollAliases:!0}));if(a===null)throw new st("Couldn't find the node_modules state file - running an install might help (findPackageLocation)");let n=a.locatorMap.get(j.stringifyLocator(t));if(!n){let p=new st(`Couldn't find ${j.prettyLocator(r.project.configuration,t)} in the currently installed node_modules map - running an install might help`);throw p.code="LOCATOR_NOT_INSTALLED",p}let c=n.locations.sort((p,h)=>p.split(K.sep).length-h.split(K.sep).length),f=K.join(r.project.configuration.startingCwd,Ri);return c.find(p=>K.contains(f,p))||n.locations[0]}async findPackageLocator(t,r){if(!this.isEnabled(r))return null;let s=await Ge.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await WW(r.project,{unrollAliases:!0}));if(s===null)return null;let{locationRoot:a,segments:n}=VF(K.resolve(t),{skipPrefix:r.project.cwd}),c=s.locationTree.get(a);if(!c)return null;let f=c.locator;for(let p of n){if(c=c.children.get(p),!c)break;f=c.locator||f}return j.parseLocator(f)}makeInstaller(t){return new qW(t)}isEnabled(t){return t.project.configuration.get("nodeLinker")==="node-modules"}},qW=class{constructor(t){this.opts=t;this.localStore=new Map;this.realLocatorChecksums=new Map;this.customData={store:new Map}}attachCustomData(t){this.customData=t}async installPackage(t,r){let s=K.resolve(r.packageFs.getRealPath(),r.prefixPath),a=this.customData.store.get(t.locatorHash);if(typeof a>"u"&&(a=await $ht(t,r),t.linkType==="HARD"&&this.customData.store.set(t.locatorHash,a)),!j.isPackageCompatible(t,this.opts.project.configuration.getSupportedArchitectures()))return{packageLocation:null,buildRequest:null};let n=new Map,c=new Set;n.has(j.stringifyIdent(t))||n.set(j.stringifyIdent(t),t.reference);let f=t;if(j.isVirtualLocator(t)){f=j.devirtualizeLocator(t);for(let E of t.peerDependencies.values())n.set(j.stringifyIdent(E),null),c.add(j.stringifyIdent(E))}let p={packageLocation:`${fe.fromPortablePath(s)}/`,packageDependencies:n,packagePeers:c,linkType:t.linkType,discardFromLookup:r.discardFromLookup??!1};this.localStore.set(t.locatorHash,{pkg:t,customPackageData:a,dependencyMeta:this.opts.project.getDependencyMeta(t,t.version),pnpNode:p});let h=r.checksum?r.checksum.substring(r.checksum.indexOf("/")+1):null;return this.realLocatorChecksums.set(f.locatorHash,h),{packageLocation:s,buildRequest:null}}async attachInternalDependencies(t,r){let s=this.localStore.get(t.locatorHash);if(typeof s>"u")throw new Error("Assertion failed: Expected information object to have been registered");for(let[a,n]of r){let c=j.areIdentsEqual(a,n)?n.reference:[j.stringifyIdent(n),n.reference];s.pnpNode.packageDependencies.set(j.stringifyIdent(a),c)}}async attachExternalDependents(t,r){throw new Error("External dependencies haven't been implemented for the node-modules linker")}async finalizeInstall(){if(this.opts.project.configuration.get("nodeLinker")!=="node-modules")return;let t=new mo({baseFs:new tA({maxOpenFiles:80,readOnlyArchives:!0})}),r=await WW(this.opts.project),s=this.opts.project.configuration.get("nmMode");(r===null||s!==r.nmMode)&&(this.opts.project.storedBuildState.clear(),r={locatorMap:new Map,binSymlinks:new Map,locationTree:new Map,nmMode:s,mtimeMs:0});let a=new Map(this.opts.project.workspaces.map(S=>{let x=this.opts.project.configuration.get("nmHoistingLimits");try{x=Ge.validateEnum(xD,S.manifest.installConfig?.hoistingLimits??x)}catch{let I=j.prettyWorkspace(this.opts.project.configuration,S);this.opts.report.reportWarning(57,`${I}: Invalid 'installConfig.hoistingLimits' value. Expected one of ${Object.values(xD).join(", ")}, using default: "${x}"`)}return[S.relativeCwd,x]})),n=new Map(this.opts.project.workspaces.map(S=>{let x=this.opts.project.configuration.get("nmSelfReferences");return x=S.manifest.installConfig?.selfReferences??x,[S.relativeCwd,x]})),c={VERSIONS:{std:1},topLevel:{name:null,reference:null},getLocator:(S,x)=>Array.isArray(x)?{name:x[0],reference:x[1]}:{name:S,reference:x},getDependencyTreeRoots:()=>this.opts.project.workspaces.map(S=>{let x=S.anchoredLocator;return{name:j.stringifyIdent(x),reference:x.reference}}),getPackageInformation:S=>{let x=S.reference===null?this.opts.project.topLevelWorkspace.anchoredLocator:j.makeLocator(j.parseIdent(S.name),S.reference),I=this.localStore.get(x.locatorHash);if(typeof I>"u")throw new Error("Assertion failed: Expected the package reference to have been registered");return I.pnpNode},findPackageLocator:S=>{let x=this.opts.project.tryWorkspaceByCwd(fe.toPortablePath(S));if(x!==null){let I=x.anchoredLocator;return{name:j.stringifyIdent(I),reference:I.reference}}throw new Error("Assertion failed: Unimplemented")},resolveToUnqualified:()=>{throw new Error("Assertion failed: Unimplemented")},resolveUnqualified:()=>{throw new Error("Assertion failed: Unimplemented")},resolveRequest:()=>{throw new Error("Assertion failed: Unimplemented")},resolveVirtual:S=>fe.fromPortablePath(mo.resolveVirtual(fe.toPortablePath(S)))},{tree:f,errors:p,preserveSymlinksRequired:h}=kD(c,{pnpifyFs:!1,validateExternalSoftLinks:!0,hoistingLimitsByCwd:a,project:this.opts.project,selfReferencesByCwd:n});if(!f){for(let{messageName:S,text:x}of p)this.opts.report.reportError(S,x);return}let E=IW(f);await o0t(r,E,{baseFs:t,project:this.opts.project,report:this.opts.report,realLocatorChecksums:this.realLocatorChecksums,loadManifest:async S=>{let x=j.parseLocator(S),I=this.localStore.get(x.locatorHash);if(typeof I>"u")throw new Error("Assertion failed: Expected the slot to exist");return I.customPackageData.manifest}});let C=[];for(let[S,x]of E.entries()){if(Q1e(S))continue;let I=j.parseLocator(S),T=this.localStore.get(I.locatorHash);if(typeof T>"u")throw new Error("Assertion failed: Expected the slot to exist");if(this.opts.project.tryWorkspaceByLocator(T.pkg))continue;let O=dA.extractBuildRequest(T.pkg,T.customPackageData,T.dependencyMeta,{configuration:this.opts.project.configuration});O&&C.push({buildLocations:x.locations,locator:I,buildRequest:O})}return h&&this.opts.report.reportWarning(72,`The application uses portals and that's why ${pe.pretty(this.opts.project.configuration,"--preserve-symlinks",pe.Type.CODE)} Node option is required for launching it`),{customData:this.customData,records:C}}};async function $ht(e,t){let r=await Ut.tryFind(t.prefixPath,{baseFs:t.packageFs})??new Ut,s=new Set(["preinstall","install","postinstall"]);for(let a of r.scripts.keys())s.has(a)||r.scripts.delete(a);return{manifest:{bin:r.bin,scripts:r.scripts},misc:{hasBindingGyp:dA.hasBindingGyp(t)}}}async function e0t(e,t,r,s,{installChangedByUser:a}){let n="";n+=`# Warning: This file is automatically generated. Removing it is fine, but will -`,n+=`# cause your node_modules installation to become invalidated. -`,n+=` -`,n+=`__metadata: -`,n+=` version: ${b1e} -`,n+=` nmMode: ${s.value} -`;let c=Array.from(t.keys()).sort(),f=j.stringifyLocator(e.topLevelWorkspace.anchoredLocator);for(let E of c){let C=t.get(E);n+=` -`,n+=`${JSON.stringify(E)}: -`,n+=` locations: -`;for(let S of C.locations){let x=K.contains(e.cwd,S);if(x===null)throw new Error(`Assertion failed: Expected the path to be within the project (${S})`);n+=` - ${JSON.stringify(x)} -`}if(C.aliases.length>0){n+=` aliases: -`;for(let S of C.aliases)n+=` - ${JSON.stringify(S)} -`}if(E===f&&r.size>0){n+=` bin: -`;for(let[S,x]of r){let I=K.contains(e.cwd,S);if(I===null)throw new Error(`Assertion failed: Expected the path to be within the project (${S})`);n+=` ${JSON.stringify(I)}: -`;for(let[T,O]of x){let U=K.relative(K.join(S,Ri),O);n+=` ${JSON.stringify(T)}: ${JSON.stringify(U)} -`}}}}let p=e.cwd,h=K.join(p,Ri,P1e);a&&await le.removePromise(h),await le.changeFilePromise(h,n,{automaticNewlines:!0})}async function WW(e,{unrollAliases:t=!1}={}){let r=e.cwd,s=K.join(r,Ri,P1e),a;try{a=await le.statPromise(s)}catch{}if(!a)return null;let n=cs(await le.readFilePromise(s,"utf8"));if(n.__metadata.version>b1e)return null;let c=n.__metadata.nmMode||"classic",f=new Map,p=new Map;delete n.__metadata;for(let[h,E]of Object.entries(n)){let C=E.locations.map(x=>K.join(r,x)),S=E.bin;if(S)for(let[x,I]of Object.entries(S)){let T=K.join(r,fe.toPortablePath(x)),O=Ge.getMapWithDefault(p,T);for(let[U,Y]of Object.entries(I))O.set(U,fe.toPortablePath([T,Ri,Y].join(K.sep)))}if(f.set(h,{target:vt.dot,linkType:"HARD",locations:C,aliases:E.aliases||[]}),t&&E.aliases)for(let x of E.aliases){let{scope:I,name:T}=j.parseLocator(h),O=j.makeLocator(j.makeIdent(I,T),x),U=j.stringifyLocator(O);f.set(U,{target:vt.dot,linkType:"HARD",locations:C,aliases:[]})}}return{locatorMap:f,binSymlinks:p,locationTree:x1e(f,{skipPrefix:e.cwd}),nmMode:c,mtimeMs:a.mtimeMs}}var Ew=async(e,t)=>{if(e.split(K.sep).indexOf(Ri)<0)throw new Error(`Assertion failed: trying to remove dir that doesn't contain node_modules: ${e}`);try{let r;if(!t.innerLoop&&(r=await le.lstatPromise(e),!r.isDirectory()&&!r.isSymbolicLink()||r.isSymbolicLink()&&!t.isWorkspaceDir)){await le.unlinkPromise(e);return}let s=await le.readdirPromise(e,{withFileTypes:!0});for(let n of s){let c=K.join(e,n.name);n.isDirectory()?(n.name!==Ri||t&&t.innerLoop)&&await Ew(c,{innerLoop:!0,contentsOnly:!1}):await le.unlinkPromise(c)}let a=!t.innerLoop&&t.isWorkspaceDir&&r?.isSymbolicLink();!t.contentsOnly&&!a&&await le.rmdirPromise(e)}catch(r){if(r.code!=="ENOENT"&&r.code!=="ENOTEMPTY")throw r}},B1e=4,VF=(e,{skipPrefix:t})=>{let r=K.contains(t,e);if(r===null)throw new Error(`Assertion failed: Writing attempt prevented to ${e} which is outside project root: ${t}`);let s=r.split(K.sep).filter(p=>p!==""),a=s.indexOf(Ri),n=s.slice(0,a).join(K.sep),c=K.join(t,n),f=s.slice(a);return{locationRoot:c,segments:f}},x1e=(e,{skipPrefix:t})=>{let r=new Map;if(e===null)return r;let s=()=>({children:new Map,linkType:"HARD"});for(let[a,n]of e.entries()){if(n.linkType==="SOFT"&&K.contains(t,n.target)!==null){let f=Ge.getFactoryWithDefault(r,n.target,s);f.locator=a,f.linkType=n.linkType}for(let c of n.locations){let{locationRoot:f,segments:p}=VF(c,{skipPrefix:t}),h=Ge.getFactoryWithDefault(r,f,s);for(let E=0;E{if(process.platform==="win32"&&r==="junctions"){let s;try{s=await le.lstatPromise(e)}catch{}if(!s||s.isDirectory()){await le.symlinkPromise(e,t,"junction");return}}await le.symlinkPromise(K.relative(K.dirname(t),e),t)};async function k1e(e,t,r){let s=K.join(e,`${VW.default.randomBytes(16).toString("hex")}.tmp`);try{await le.writeFilePromise(s,r);try{await le.linkPromise(s,t)}catch{}}finally{await le.unlinkPromise(s)}}async function t0t({srcPath:e,dstPath:t,entry:r,globalHardlinksStore:s,baseFs:a,nmMode:n}){if(r.kind==="file"){if(n.value==="hardlinks-global"&&s&&r.digest){let f=K.join(s,r.digest.substring(0,2),`${r.digest.substring(2)}.dat`),p;try{let h=await le.statPromise(f);if(h&&(!r.mtimeMs||h.mtimeMs>r.mtimeMs||h.mtimeMs{await le.mkdirPromise(e,{recursive:!0});let f=async(E=vt.dot)=>{let C=K.join(t,E),S=await r.readdirPromise(C,{withFileTypes:!0}),x=new Map;for(let I of S){let T=K.join(E,I.name),O,U=K.join(C,I.name);if(I.isFile()){if(O={kind:"file",mode:(await r.lstatPromise(U)).mode},a.value==="hardlinks-global"){let Y=await Ln.checksumFile(U,{baseFs:r,algorithm:"sha1"});O.digest=Y}}else if(I.isDirectory())O={kind:"directory"};else if(I.isSymbolicLink())O={kind:"symlink",symlinkTo:await r.readlinkPromise(U)};else throw new Error(`Unsupported file type (file: ${U}, mode: 0o${await r.statSync(U).mode.toString(8).padStart(6,"0")})`);if(x.set(T,O),I.isDirectory()&&T!==Ri){let Y=await f(T);for(let[te,ie]of Y)x.set(te,ie)}}return x},p;if(a.value==="hardlinks-global"&&s&&c){let E=K.join(s,c.substring(0,2),`${c.substring(2)}.json`);try{p=new Map(Object.entries(JSON.parse(await le.readFilePromise(E,"utf8"))))}catch{p=await f()}}else p=await f();let h=!1;for(let[E,C]of p){let S=K.join(t,E),x=K.join(e,E);if(C.kind==="directory")await le.mkdirPromise(x,{recursive:!0});else if(C.kind==="file"){let I=C.mtimeMs;await t0t({srcPath:S,dstPath:x,entry:C,nmMode:a,baseFs:r,globalHardlinksStore:s}),C.mtimeMs!==I&&(h=!0)}else C.kind==="symlink"&&await KW(K.resolve(K.dirname(x),C.symlinkTo),x,n)}if(a.value==="hardlinks-global"&&s&&h&&c){let E=K.join(s,c.substring(0,2),`${c.substring(2)}.json`);await le.removePromise(E),await k1e(s,E,Buffer.from(JSON.stringify(Object.fromEntries(p))))}};function n0t(e,t,r,s){let a=new Map,n=new Map,c=new Map,f=!1,p=(h,E,C,S,x)=>{let I=!0,T=K.join(h,E),O=new Set;if(E===Ri||E.startsWith("@")){let Y;try{Y=le.statSync(T)}catch{}I=!!Y,Y?Y.mtimeMs>r?(f=!0,O=new Set(le.readdirSync(T))):O=new Set(C.children.get(E).children.keys()):f=!0;let te=t.get(h);if(te){let ie=K.join(h,Ri,WF),ue;try{ue=le.statSync(ie)}catch{}if(!ue)f=!0;else if(ue.mtimeMs>r){f=!0;let ae=new Set(le.readdirSync(ie)),de=new Map;n.set(h,de);for(let[Ae,Ce]of te)ae.has(Ae)&&de.set(Ae,Ce)}else n.set(h,te)}}else I=x.has(E);let U=C.children.get(E);if(I){let{linkType:Y,locator:te}=U,ie={children:new Map,linkType:Y,locator:te};if(S.children.set(E,ie),te){let ue=Ge.getSetWithDefault(c,te);ue.add(T),c.set(te,ue)}for(let ue of U.children.keys())p(T,ue,U,ie,O)}else U.locator&&s.storedBuildState.delete(j.parseLocator(U.locator).locatorHash)};for(let[h,E]of e){let{linkType:C,locator:S}=E,x={children:new Map,linkType:C,locator:S};if(a.set(h,x),S){let I=Ge.getSetWithDefault(c,E.locator);I.add(h),c.set(E.locator,I)}E.children.has(Ri)&&p(h,Ri,E,x,new Set)}return{locationTree:a,binSymlinks:n,locatorLocations:c,installChangedByUser:f}}function Q1e(e){let t=j.parseDescriptor(e);return j.isVirtualDescriptor(t)&&(t=j.devirtualizeDescriptor(t)),t.range.startsWith("link:")}async function i0t(e,t,r,{loadManifest:s}){let a=new Map;for(let[f,{locations:p}]of e){let h=Q1e(f)?null:await s(f,p[0]),E=new Map;if(h)for(let[C,S]of h.bin){let x=K.join(p[0],S);S!==""&&le.existsSync(x)&&E.set(C,S)}a.set(f,E)}let n=new Map,c=(f,p,h)=>{let E=new Map,C=K.contains(r,f);if(h.locator&&C!==null){let S=a.get(h.locator);for(let[x,I]of S){let T=K.join(f,fe.toPortablePath(I));E.set(x,T)}for(let[x,I]of h.children){let T=K.join(f,x),O=c(T,T,I);O.size>0&&n.set(f,new Map([...n.get(f)||new Map,...O]))}}else for(let[S,x]of h.children){let I=c(K.join(f,S),p,x);for(let[T,O]of I)E.set(T,O)}return E};for(let[f,p]of t){let h=c(f,f,p);h.size>0&&n.set(f,new Map([...n.get(f)||new Map,...h]))}return n}var v1e=(e,t)=>{if(!e||!t)return e===t;let r=j.parseLocator(e);j.isVirtualLocator(r)&&(r=j.devirtualizeLocator(r));let s=j.parseLocator(t);return j.isVirtualLocator(s)&&(s=j.devirtualizeLocator(s)),j.areLocatorsEqual(r,s)};function JW(e){return K.join(e.get("globalFolder"),"store")}function s0t(e,t){let r=s=>{let a=s.split(K.sep),n=a.lastIndexOf(Ri);if(n<0||n==a.length-1)throw new Error(`Assertion failed. Path is outside of any node_modules package ${s}`);return a.slice(0,n+(a[n+1].startsWith("@")?3:2)).join(K.sep)};for(let s of e.values())for(let[a,n]of s)t.has(r(n))&&s.delete(a)}async function o0t(e,t,{baseFs:r,project:s,report:a,loadManifest:n,realLocatorChecksums:c}){let f=K.join(s.cwd,Ri),{locationTree:p,binSymlinks:h,locatorLocations:E,installChangedByUser:C}=n0t(e.locationTree,e.binSymlinks,e.mtimeMs,s),S=x1e(t,{skipPrefix:s.cwd}),x=[],I=async({srcDir:Ce,dstDir:Ee,linkType:g,globalHardlinksStore:Se,nmMode:Be,windowsLinkType:me,packageChecksum:ce})=>{let X=(async()=>{try{g==="SOFT"?(await le.mkdirPromise(K.dirname(Ee),{recursive:!0}),await KW(K.resolve(Ce),Ee,me)):await r0t(Ee,Ce,{baseFs:r,globalHardlinksStore:Se,nmMode:Be,windowsLinkType:me,packageChecksum:ce})}catch(De){throw De.message=`While persisting ${Ce} -> ${Ee} ${De.message}`,De}finally{ie.tick()}})().then(()=>x.splice(x.indexOf(X),1));x.push(X),x.length>B1e&&await Promise.race(x)},T=async(Ce,Ee,g)=>{let Se=(async()=>{let Be=async(me,ce,X)=>{try{X.innerLoop||await le.mkdirPromise(ce,{recursive:!0});let De=await le.readdirPromise(me,{withFileTypes:!0});for(let Qe of De){if(!X.innerLoop&&Qe.name===WF)continue;let it=K.join(me,Qe.name),_=K.join(ce,Qe.name);Qe.isDirectory()?(Qe.name!==Ri||X&&X.innerLoop)&&(await le.mkdirPromise(_,{recursive:!0}),await Be(it,_,{...X,innerLoop:!0})):de.value==="hardlinks-local"||de.value==="hardlinks-global"?await le.linkPromise(it,_):await le.copyFilePromise(it,_,D1e.default.constants.COPYFILE_FICLONE)}}catch(De){throw X.innerLoop||(De.message=`While cloning ${me} -> ${ce} ${De.message}`),De}finally{X.innerLoop||ie.tick()}};await Be(Ce,Ee,g)})().then(()=>x.splice(x.indexOf(Se),1));x.push(Se),x.length>B1e&&await Promise.race(x)},O=async(Ce,Ee,g)=>{if(g)for(let[Se,Be]of Ee.children){let me=g.children.get(Se);await O(K.join(Ce,Se),Be,me)}else{Ee.children.has(Ri)&&await Ew(K.join(Ce,Ri),{contentsOnly:!1});let Se=K.basename(Ce)===Ri&&p.has(K.join(K.dirname(Ce)));await Ew(Ce,{contentsOnly:Ce===f,isWorkspaceDir:Se})}};for(let[Ce,Ee]of p){let g=S.get(Ce);for(let[Se,Be]of Ee.children){if(Se===".")continue;let me=g&&g.children.get(Se),ce=K.join(Ce,Se);await O(ce,Be,me)}}let U=async(Ce,Ee,g)=>{if(g){v1e(Ee.locator,g.locator)||await Ew(Ce,{contentsOnly:Ee.linkType==="HARD"});for(let[Se,Be]of Ee.children){let me=g.children.get(Se);await U(K.join(Ce,Se),Be,me)}}else{Ee.children.has(Ri)&&await Ew(K.join(Ce,Ri),{contentsOnly:!0});let Se=K.basename(Ce)===Ri&&S.has(K.join(K.dirname(Ce)));await Ew(Ce,{contentsOnly:Ee.linkType==="HARD",isWorkspaceDir:Se})}};for(let[Ce,Ee]of S){let g=p.get(Ce);for(let[Se,Be]of Ee.children){if(Se===".")continue;let me=g&&g.children.get(Se);await U(K.join(Ce,Se),Be,me)}}let Y=new Map,te=[];for(let[Ce,Ee]of E)for(let g of Ee){let{locationRoot:Se,segments:Be}=VF(g,{skipPrefix:s.cwd}),me=S.get(Se),ce=Se;if(me){for(let X of Be)if(ce=K.join(ce,X),me=me.children.get(X),!me)break;if(me){let X=v1e(me.locator,Ce),De=t.get(me.locator),Qe=De.target,it=ce,_=De.linkType;if(X)Y.has(Qe)||Y.set(Qe,it);else if(Qe!==it){let tt=j.parseLocator(me.locator);j.isVirtualLocator(tt)&&(tt=j.devirtualizeLocator(tt)),te.push({srcDir:Qe,dstDir:it,linkType:_,realLocatorHash:tt.locatorHash})}}}}for(let[Ce,{locations:Ee}]of t.entries())for(let g of Ee){let{locationRoot:Se,segments:Be}=VF(g,{skipPrefix:s.cwd}),me=p.get(Se),ce=S.get(Se),X=Se,De=t.get(Ce),Qe=j.parseLocator(Ce);j.isVirtualLocator(Qe)&&(Qe=j.devirtualizeLocator(Qe));let it=Qe.locatorHash,_=De.target,tt=g;if(_===tt)continue;let Ne=De.linkType;for(let ke of Be)ce=ce.children.get(ke);if(!me)te.push({srcDir:_,dstDir:tt,linkType:Ne,realLocatorHash:it});else for(let ke of Be)if(X=K.join(X,ke),me=me.children.get(ke),!me){te.push({srcDir:_,dstDir:tt,linkType:Ne,realLocatorHash:it});break}}let ie=yo.progressViaCounter(te.length),ue=a.reportProgress(ie),ae=s.configuration.get("nmMode"),de={value:ae},Ae=s.configuration.get("winLinkType");try{let Ce=de.value==="hardlinks-global"?`${JW(s.configuration)}/v1`:null;if(Ce&&!await le.existsPromise(Ce)){await le.mkdirpPromise(Ce);for(let g=0;g<256;g++)await le.mkdirPromise(K.join(Ce,g.toString(16).padStart(2,"0")))}for(let g of te)(g.linkType==="SOFT"||!Y.has(g.srcDir))&&(Y.set(g.srcDir,g.dstDir),await I({...g,globalHardlinksStore:Ce,nmMode:de,windowsLinkType:Ae,packageChecksum:c.get(g.realLocatorHash)||null}));await Promise.all(x),x.length=0;for(let g of te){let Se=Y.get(g.srcDir);g.linkType!=="SOFT"&&g.dstDir!==Se&&await T(Se,g.dstDir,{nmMode:de})}await Promise.all(x),await le.mkdirPromise(f,{recursive:!0}),s0t(h,new Set(te.map(g=>g.dstDir)));let Ee=await i0t(t,S,s.cwd,{loadManifest:n});await a0t(h,Ee,s.cwd,Ae),await e0t(s,t,Ee,de,{installChangedByUser:C}),ae=="hardlinks-global"&&de.value=="hardlinks-local"&&a.reportWarningOnce(74,"'nmMode' has been downgraded to 'hardlinks-local' due to global cache and install folder being on different devices")}finally{ue.stop()}}async function a0t(e,t,r,s){for(let a of e.keys()){if(K.contains(r,a)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${a}`);if(!t.has(a)){let n=K.join(a,Ri,WF);await le.removePromise(n)}}for(let[a,n]of t){if(K.contains(r,a)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${a}`);let c=K.join(a,Ri,WF),f=e.get(a)||new Map;await le.mkdirPromise(c,{recursive:!0});for(let p of f.keys())n.has(p)||(await le.removePromise(K.join(c,p)),process.platform==="win32"&&await le.removePromise(K.join(c,`${p}.cmd`)));for(let[p,h]of n){let E=f.get(p),C=K.join(c,p);E!==h&&(process.platform==="win32"?await(0,S1e.default)(fe.fromPortablePath(h),fe.fromPortablePath(C),{createPwshFile:!1}):(await le.removePromise(C),await KW(h,C,s),K.contains(r,await le.realpathPromise(h))!==null&&await le.chmodPromise(h,493)))}}}qe();Dt();rA();var GD=class extends ng{constructor(){super(...arguments);this.mode="loose"}makeInstaller(r){return new zW(r)}},zW=class extends Vm{constructor(){super(...arguments);this.mode="loose"}async transformPnpSettings(r){let s=new mo({baseFs:new tA({maxOpenFiles:80,readOnlyArchives:!0})}),a=f1e(r,this.opts.project.cwd,s),{tree:n,errors:c}=kD(a,{pnpifyFs:!1,project:this.opts.project});if(!n){for(let{messageName:C,text:S}of c)this.opts.report.reportError(C,S);return}let f=new Map;r.fallbackPool=f;let p=(C,S)=>{let x=j.parseLocator(S.locator),I=j.stringifyIdent(x);I===C?f.set(C,x.reference):f.set(C,[I,x.reference])},h=K.join(this.opts.project.cwd,Er.nodeModules),E=n.get(h);if(!(typeof E>"u")){if("target"in E)throw new Error("Assertion failed: Expected the root junction point to be a directory");for(let C of E.dirList){let S=K.join(h,C),x=n.get(S);if(typeof x>"u")throw new Error("Assertion failed: Expected the child to have been registered");if("target"in x)p(C,x);else for(let I of x.dirList){let T=K.join(S,I),O=n.get(T);if(typeof O>"u")throw new Error("Assertion failed: Expected the subchild to have been registered");if("target"in O)p(`${C}/${I}`,O);else throw new Error("Assertion failed: Expected the leaf junction to be a package")}}}}};var l0t={hooks:{cleanGlobalArtifacts:async e=>{let t=JW(e);await le.removePromise(t)}},configuration:{nmHoistingLimits:{description:"Prevents packages to be hoisted past specific levels",type:"STRING",values:["workspaces","dependencies","none"],default:"none"},nmMode:{description:"Defines in which measure Yarn must use hardlinks and symlinks when generated `node_modules` directories.",type:"STRING",values:["classic","hardlinks-local","hardlinks-global"],default:"classic"},nmSelfReferences:{description:"Defines whether the linker should generate self-referencing symlinks for workspaces.",type:"BOOLEAN",default:!0}},linkers:[jD,GD]},c0t=l0t;var ZK={};Yt(ZK,{NpmHttpFetcher:()=>YD,NpmRemapResolver:()=>KD,NpmSemverFetcher:()=>ih,NpmSemverResolver:()=>JD,NpmTagResolver:()=>zD,default:()=>vvt,npmConfigUtils:()=>gi,npmHttpUtils:()=>en,npmPublishUtils:()=>d1});qe();var U1e=et(pi());var ei="npm:";var en={};Yt(en,{AuthType:()=>O1e,customPackageError:()=>Ym,del:()=>D0t,get:()=>Km,getIdentUrl:()=>WD,getPackageMetadata:()=>Bw,handleInvalidAuthenticationError:()=>sg,post:()=>v0t,put:()=>S0t});qe();qe();Dt();var eV=et(Yv());Jl();var N1e=et(pi());var gi={};Yt(gi,{RegistryType:()=>T1e,getAuditRegistry:()=>u0t,getAuthConfiguration:()=>$W,getDefaultRegistry:()=>qD,getPublishRegistry:()=>f0t,getRegistryConfiguration:()=>F1e,getScopeConfiguration:()=>XW,getScopeRegistry:()=>Iw,isPackageApproved:()=>Cw,normalizeRegistry:()=>Vc});qe();var R1e=et(Jo()),T1e=(s=>(s.AUDIT_REGISTRY="npmAuditRegistry",s.FETCH_REGISTRY="npmRegistryServer",s.PUBLISH_REGISTRY="npmPublishRegistry",s))(T1e||{});function Vc(e){return e.replace(/\/$/,"")}function u0t({configuration:e}){return qD({configuration:e,type:"npmAuditRegistry"})}function f0t(e,{configuration:t}){return e.publishConfig?.registry?Vc(e.publishConfig.registry):e.name?Iw(e.name.scope,{configuration:t,type:"npmPublishRegistry"}):qD({configuration:t,type:"npmPublishRegistry"})}function Iw(e,{configuration:t,type:r="npmRegistryServer"}){let s=XW(e,{configuration:t});if(s===null)return qD({configuration:t,type:r});let a=s.get(r);return a===null?qD({configuration:t,type:r}):Vc(a)}function qD({configuration:e,type:t="npmRegistryServer"}){let r=e.get(t);return Vc(r!==null?r:e.get("npmRegistryServer"))}function F1e(e,{configuration:t}){let r=t.get("npmRegistries"),s=Vc(e),a=r.get(s);if(typeof a<"u")return a;let n=r.get(s.replace(/^[a-z]+:/,""));return typeof n<"u"?n:null}var A0t=new Map([["npmRegistryServer","https://npm.jsr.io/"]]);function XW(e,{configuration:t}){if(e===null)return null;let s=t.get("npmScopes").get(e);return s||(e==="jsr"?A0t:null)}function $W(e,{configuration:t,ident:r}){let s=r&&XW(r.scope,{configuration:t});return s?.get("npmAuthIdent")||s?.get("npmAuthToken")?s:F1e(e,{configuration:t})||t}function p0t({configuration:e,version:t,publishTimes:r}){let s=e.get("npmMinimalAgeGate");if(s){let a=r?.[t];if(typeof a>"u"||(new Date().getTime()-new Date(a).getTime())/60/1e3h0t(t,r,s))}function Cw(e){return!p0t(e)||g0t(e)}var O1e=(a=>(a[a.NO_AUTH=0]="NO_AUTH",a[a.BEST_EFFORT=1]="BEST_EFFORT",a[a.CONFIGURATION=2]="CONFIGURATION",a[a.ALWAYS_AUTH=3]="ALWAYS_AUTH",a))(O1e||{});async function sg(e,{attemptedAs:t,registry:r,headers:s,configuration:a}){if(KF(e))throw new _t(41,"Invalid OTP token");if(e.originalError?.name==="HTTPError"&&e.originalError?.response.statusCode===401)throw new _t(41,`Invalid authentication (${typeof t!="string"?`as ${await P0t(r,s,{configuration:a})}`:`attempted as ${t}`})`)}function Ym(e,t){let r=e.response?.statusCode;return r?r===404?"Package not found":r>=500&&r<600?`The registry appears to be down (using a ${pe.applyHyperlink(t,"local cache","https://yarnpkg.com/advanced/lexicon#local-cache")} might have protected you against such outages)`:null:null}function WD(e){return e.scope?`/@${e.scope}%2f${e.name}`:`/${e.name}`}var L1e=new Map,d0t=new Map;async function m0t(e){return await Ge.getFactoryWithDefault(L1e,e,async()=>{let t=null;try{t=await le.readJsonPromise(e)}catch{}return t})}async function y0t(e,t,{configuration:r,cached:s,registry:a,headers:n,version:c,...f}){return await Ge.getFactoryWithDefault(d0t,e,async()=>await Km(WD(t),{...f,customErrorMessage:Ym,configuration:r,registry:a,ident:t,headers:{...n,"If-None-Match":s?.etag,"If-Modified-Since":s?.lastModified},wrapNetworkRequest:async p=>async()=>{let h=await p();if(h.statusCode===304){if(s===null)throw new Error("Assertion failed: cachedMetadata should not be null");return{...h,body:s.metadata}}let E=I0t(JSON.parse(h.body.toString())),C={metadata:E,etag:h.headers.etag,lastModified:h.headers["last-modified"]};return L1e.set(e,Promise.resolve(C)),Promise.resolve().then(async()=>{let S=`${e}-${process.pid}.tmp`;await le.mkdirPromise(K.dirname(S),{recursive:!0}),await le.writeJsonPromise(S,C,{compact:!0}),await le.renamePromise(S,e)}).catch(()=>{}),{...h,body:E}}}))}function E0t(e){return e.scope!==null?`@${e.scope}-${e.name}-${e.scope.length}`:e.name}async function Bw(e,{cache:t,project:r,registry:s,headers:a,version:n,...c}){let{configuration:f}=r;s=VD(f,{ident:e,registry:s});let p=w0t(f,s),h=K.join(p,`${E0t(e)}.json`),E=null;if(!r.lockfileNeedsRefresh&&(E=await m0t(h),E)){if(typeof n<"u"&&typeof E.metadata.versions[n]<"u")return E.metadata;if(f.get("enableOfflineMode")){let C=structuredClone(E.metadata),S=new Set;if(t){for(let I of Object.keys(C.versions)){let T=j.makeLocator(e,`npm:${I}`),O=t.getLocatorMirrorPath(T);(!O||!le.existsSync(O))&&(delete C.versions[I],S.add(I))}let x=C["dist-tags"].latest;if(S.has(x)){let I=Object.keys(E.metadata.versions).sort(N1e.default.compare),T=I.indexOf(x);for(;S.has(I[T])&&T>=0;)T-=1;T>=0?C["dist-tags"].latest=I[T]:delete C["dist-tags"].latest}}return C}}return await y0t(h,e,{...c,configuration:f,cached:E,registry:s,headers:a,version:n})}var M1e=["name","dist.tarball","bin","scripts","os","cpu","libc","dependencies","dependenciesMeta","optionalDependencies","peerDependencies","peerDependenciesMeta","deprecated"];function I0t(e){return{"dist-tags":e["dist-tags"],versions:Object.fromEntries(Object.entries(e.versions).map(([t,r])=>[t,Yd(r,M1e)])),time:e.time}}var C0t=Ln.makeHash("time",...M1e).slice(0,6);function w0t(e,t){let r=B0t(e),s=new URL(t);return K.join(r,C0t,s.hostname)}function B0t(e){return K.join(e.get("globalFolder"),"metadata/npm")}async function Km(e,{configuration:t,headers:r,ident:s,authType:a,allowOidc:n,registry:c,...f}){c=VD(t,{ident:s,registry:c}),s&&s.scope&&typeof a>"u"&&(a=1);let p=await YF(c,{authType:a,allowOidc:n,configuration:t,ident:s});p&&(r={...r,authorization:p});try{return await nn.get(e.charAt(0)==="/"?`${c}${e}`:e,{configuration:t,headers:r,...f})}catch(h){throw await sg(h,{registry:c,configuration:t,headers:r}),h}}async function v0t(e,t,{attemptedAs:r,configuration:s,headers:a,ident:n,authType:c=3,allowOidc:f,registry:p,otp:h,...E}){p=VD(s,{ident:n,registry:p});let C=await YF(p,{authType:c,allowOidc:f,configuration:s,ident:n});C&&(a={...a,authorization:C}),h&&(a={...a,...ww(h)});try{return await nn.post(p+e,t,{configuration:s,headers:a,...E})}catch(S){if(!KF(S)||h)throw await sg(S,{attemptedAs:r,registry:p,configuration:s,headers:a}),S;h=await tV(S,{configuration:s});let x={...a,...ww(h)};try{return await nn.post(`${p}${e}`,t,{configuration:s,headers:x,...E})}catch(I){throw await sg(I,{attemptedAs:r,registry:p,configuration:s,headers:a}),I}}}async function S0t(e,t,{attemptedAs:r,configuration:s,headers:a,ident:n,authType:c=3,allowOidc:f,registry:p,otp:h,...E}){p=VD(s,{ident:n,registry:p});let C=await YF(p,{authType:c,allowOidc:f,configuration:s,ident:n});C&&(a={...a,authorization:C}),h&&(a={...a,...ww(h)});try{return await nn.put(p+e,t,{configuration:s,headers:a,...E})}catch(S){if(!KF(S))throw await sg(S,{attemptedAs:r,registry:p,configuration:s,headers:a}),S;h=await tV(S,{configuration:s});let x={...a,...ww(h)};try{return await nn.put(`${p}${e}`,t,{configuration:s,headers:x,...E})}catch(I){throw await sg(I,{attemptedAs:r,registry:p,configuration:s,headers:a}),I}}}async function D0t(e,{attemptedAs:t,configuration:r,headers:s,ident:a,authType:n=3,allowOidc:c,registry:f,otp:p,...h}){f=VD(r,{ident:a,registry:f});let E=await YF(f,{authType:n,allowOidc:c,configuration:r,ident:a});E&&(s={...s,authorization:E}),p&&(s={...s,...ww(p)});try{return await nn.del(f+e,{configuration:r,headers:s,...h})}catch(C){if(!KF(C)||p)throw await sg(C,{attemptedAs:t,registry:f,configuration:r,headers:s}),C;p=await tV(C,{configuration:r});let S={...s,...ww(p)};try{return await nn.del(`${f}${e}`,{configuration:r,headers:S,...h})}catch(x){throw await sg(x,{attemptedAs:t,registry:f,configuration:r,headers:s}),x}}}function VD(e,{ident:t,registry:r}){if(typeof r>"u"&&t)return Iw(t.scope,{configuration:e});if(typeof r!="string")throw new Error("Assertion failed: The registry should be a string");return Vc(r)}async function YF(e,{authType:t=2,allowOidc:r=!1,configuration:s,ident:a}){let n=$W(e,{configuration:s,ident:a}),c=b0t(n,t);if(!c)return null;let f=await s.reduceHook(p=>p.getNpmAuthenticationHeader,void 0,e,{configuration:s,ident:a});if(f)return f;if(n.get("npmAuthToken"))return`Bearer ${n.get("npmAuthToken")}`;if(n.get("npmAuthIdent")){let p=n.get("npmAuthIdent");return p.includes(":")?`Basic ${Buffer.from(p).toString("base64")}`:`Basic ${p}`}if(r&&a){let p=await x0t(e,{configuration:s,ident:a});if(p)return`Bearer ${p}`}if(c&&t!==1)throw new _t(33,"No authentication configured for request");return null}function b0t(e,t){switch(t){case 2:return e.get("npmAlwaysAuth");case 1:case 3:return!0;case 0:return!1;default:throw new Error("Unreachable")}}async function P0t(e,t,{configuration:r}){if(typeof t>"u"||typeof t.authorization>"u")return"an anonymous user";try{return(await nn.get(new URL(`${e}/-/whoami`).href,{configuration:r,headers:t,jsonResponse:!0})).username??"an unknown user"}catch{return"an unknown user"}}async function tV(e,{configuration:t}){let r=e.originalError?.response.headers["npm-notice"];if(r&&(await Ot.start({configuration:t,stdout:process.stdout,includeFooter:!1},async a=>{if(a.reportInfo(0,r.replace(/(https?:\/\/\S+)/g,pe.pretty(t,"$1",pe.Type.URL))),!process.env.YARN_IS_TEST_ENV){let n=r.match(/open (https?:\/\/\S+)/i);if(n&&Ui.openUrl){let{openNow:c}=await(0,eV.prompt)({type:"confirm",name:"openNow",message:"Do you want to try to open this url now?",required:!0,initial:!0,onCancel:()=>process.exit(130)});c&&(await Ui.openUrl(n[1])||(a.reportSeparator(),a.reportWarning(0,"We failed to automatically open the url; you'll have to open it yourself in your browser of choice.")))}}}),process.stdout.write(` -`)),process.env.YARN_IS_TEST_ENV)return process.env.YARN_INJECT_NPM_2FA_TOKEN||"";let{otp:s}=await(0,eV.prompt)({type:"password",name:"otp",message:"One-time password:",required:!0,onCancel:()=>process.exit(130)});return process.stdout.write(` -`),s}function KF(e){if(e.originalError?.name!=="HTTPError")return!1;try{return(e.originalError?.response.headers["www-authenticate"].split(/,\s*/).map(r=>r.toLowerCase())).includes("otp")}catch{return!1}}function ww(e){return{"npm-otp":e}}async function x0t(e,{configuration:t,ident:r}){let s=null;if(process.env.GITLAB_CI)s=process.env.NPM_ID_TOKEN||null;else if(process.env.GITHUB_ACTIONS){if(!(process.env.ACTIONS_ID_TOKEN_REQUEST_URL&&process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN))return null;let a=`npm:${new URL(e).host.replace("registry.yarnpkg.com","registry.npmjs.org").replace("yarn.npmjs.org","registry.npmjs.org")}`,n=new URL(process.env.ACTIONS_ID_TOKEN_REQUEST_URL);n.searchParams.append("audience",a),s=(await nn.get(n.href,{configuration:t,jsonResponse:!0,headers:{Authorization:`Bearer ${process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN}`}})).value}if(!s)return null;try{return(await nn.post(`${e}/-/npm/v1/oidc/token/exchange/package${WD(r)}`,null,{configuration:t,jsonResponse:!0,headers:{Authorization:`Bearer ${s}`}})).token||null}catch{}return null}var YD=class{supports(t,r){if(!t.reference.startsWith(ei))return!1;let{selector:s,params:a}=j.parseRange(t.reference);return!(!U1e.default.valid(s)||a===null||typeof a.__archiveUrl!="string")}getLocalPath(t,r){return null}async fetch(t,r){let s=r.checksums.get(t.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(t,s,{onHit:()=>r.report.reportCacheHit(t),onMiss:()=>r.report.reportCacheMiss(t,`${j.prettyLocator(r.project.configuration,t)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(t,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:j.getIdentVendorPath(t),checksum:c}}async fetchFromNetwork(t,r){let{params:s}=j.parseRange(t.reference);if(s===null||typeof s.__archiveUrl!="string")throw new Error("Assertion failed: The archiveUrl querystring parameter should have been available");let a=await Km(s.__archiveUrl,{customErrorMessage:Ym,configuration:r.project.configuration,ident:t});return await ds.convertToZip(a,{configuration:r.project.configuration,prefixPath:j.getIdentVendorPath(t),stripComponents:1})}};qe();var KD=class{supportsDescriptor(t,r){return!(!t.range.startsWith(ei)||!j.tryParseDescriptor(t.range.slice(ei.length),!0))}supportsLocator(t,r){return!1}shouldPersistResolution(t,r){throw new Error("Unreachable")}bindDescriptor(t,r,s){return t}getResolutionDependencies(t,r){let s=r.project.configuration.normalizeDependency(j.parseDescriptor(t.range.slice(ei.length),!0));return r.resolver.getResolutionDependencies(s,r)}async getCandidates(t,r,s){let a=s.project.configuration.normalizeDependency(j.parseDescriptor(t.range.slice(ei.length),!0));return await s.resolver.getCandidates(a,r,s)}async getSatisfying(t,r,s,a){let n=a.project.configuration.normalizeDependency(j.parseDescriptor(t.range.slice(ei.length),!0));return a.resolver.getSatisfying(n,r,s,a)}resolve(t,r){throw new Error("Unreachable")}};qe();qe();var _1e=et(pi());var ih=class e{supports(t,r){if(!t.reference.startsWith(ei))return!1;let s=new URL(t.reference);return!(!_1e.default.valid(s.pathname)||s.searchParams.has("__archiveUrl"))}getLocalPath(t,r){return null}async fetch(t,r){let s=r.checksums.get(t.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(t,s,{onHit:()=>r.report.reportCacheHit(t),onMiss:()=>r.report.reportCacheMiss(t,`${j.prettyLocator(r.project.configuration,t)} can't be found in the cache and will be fetched from the remote registry`),loader:()=>this.fetchFromNetwork(t,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:j.getIdentVendorPath(t),checksum:c}}async fetchFromNetwork(t,r){let s;try{s=await Km(e.getLocatorUrl(t),{customErrorMessage:Ym,configuration:r.project.configuration,ident:t})}catch{s=await Km(e.getLocatorUrl(t).replace(/%2f/g,"/"),{customErrorMessage:Ym,configuration:r.project.configuration,ident:t})}return await ds.convertToZip(s,{configuration:r.project.configuration,prefixPath:j.getIdentVendorPath(t),stripComponents:1})}static isConventionalTarballUrl(t,r,{configuration:s}){let a=Iw(t.scope,{configuration:s}),n=e.getLocatorUrl(t);return r=r.replace(/^https?:(\/\/(?:[^/]+\.)?npmjs.org(?:$|\/))/,"https:$1"),a=a.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"),r=r.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"),r===a+n||r===a+n.replace(/%2f/g,"/")}static getLocatorUrl(t){let r=Fr.clean(t.reference.slice(ei.length));if(r===null)throw new _t(10,"The npm semver resolver got selected, but the version isn't semver");return`${WD(t)}/-/${t.name}-${r}.tgz`}};qe();qe();qe();var rV=et(pi());var JF=j.makeIdent(null,"node-gyp"),k0t=/\b(node-gyp|prebuild-install)\b/,JD=class{supportsDescriptor(t,r){return t.range.startsWith(ei)?!!Fr.validRange(t.range.slice(ei.length)):!1}supportsLocator(t,r){if(!t.reference.startsWith(ei))return!1;let{selector:s}=j.parseRange(t.reference);return!!rV.default.valid(s)}shouldPersistResolution(t,r){return!0}bindDescriptor(t,r,s){return t}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){let a=Fr.validRange(t.range.slice(ei.length));if(a===null)throw new Error(`Expected a valid range, got ${t.range.slice(ei.length)}`);let n=await Bw(t,{cache:s.fetchOptions?.cache,project:s.project,version:rV.default.valid(a.raw)?a.raw:void 0}),c=Ge.mapAndFilter(Object.keys(n.versions),E=>{try{let C=new Fr.SemVer(E);if(a.test(C))return C}catch{}return Ge.mapAndFilter.skip}),f=c.filter(E=>Cw({configuration:s.project.configuration,ident:t,version:E.raw,publishTimes:n.time}));if(c.length>0&&f.length===0)throw new _t(16,`All versions satisfying "${t.range.slice(ei.length)}" are quarantined`);let p=f.filter(E=>!n.versions[E.raw].deprecated),h=p.length>0?p:f;return h.sort((E,C)=>-E.compare(C)),h.map(E=>{let C=j.makeLocator(t,`${ei}${E.raw}`),S=n.versions[E.raw].dist.tarball;return ih.isConventionalTarballUrl(C,S,{configuration:s.project.configuration})?C:j.bindLocator(C,{__archiveUrl:S})})}async getSatisfying(t,r,s,a){let n=Fr.validRange(t.range.slice(ei.length));if(n===null)throw new Error(`Expected a valid range, got ${t.range.slice(ei.length)}`);return{locators:Ge.mapAndFilter(s,p=>{if(p.identHash!==t.identHash)return Ge.mapAndFilter.skip;let h=j.tryParseRange(p.reference,{requireProtocol:ei});if(!h)return Ge.mapAndFilter.skip;let E=new Fr.SemVer(h.selector);return n.test(E)?{locator:p,version:E}:Ge.mapAndFilter.skip}).sort((p,h)=>-p.version.compare(h.version)).map(({locator:p})=>p),sorted:!0}}async resolve(t,r){let{selector:s}=j.parseRange(t.reference),a=Fr.clean(s);if(a===null)throw new _t(10,"The npm semver resolver got selected, but the version isn't semver");let n=await Bw(t,{cache:r.fetchOptions?.cache,project:r.project,version:a});if(!Object.hasOwn(n,"versions"))throw new _t(15,'Registry returned invalid data for - missing "versions" field');if(!Object.hasOwn(n.versions,a))throw new _t(16,`Registry failed to return reference "${a}"`);let c=new Ut;if(c.load(n.versions[a]),!c.dependencies.has(JF.identHash)&&!c.peerDependencies.has(JF.identHash)){for(let f of c.scripts.values())if(f.match(k0t)){c.dependencies.set(JF.identHash,j.makeDescriptor(JF,"latest"));break}}return{...t,version:a,languageName:"node",linkType:"HARD",conditions:c.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(c.dependencies),peerDependencies:c.peerDependencies,dependenciesMeta:c.dependenciesMeta,peerDependenciesMeta:c.peerDependenciesMeta,bin:c.bin}}};qe();qe();var zF=et(pi());var zD=class{supportsDescriptor(t,r){return!(!t.range.startsWith(ei)||!Up.test(t.range.slice(ei.length)))}supportsLocator(t,r){return!1}shouldPersistResolution(t,r){throw new Error("Unreachable")}bindDescriptor(t,r,s){return t}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){let a=t.range.slice(ei.length),n=await Bw(t,{cache:s.fetchOptions?.cache,project:s.project});if(!Object.hasOwn(n,"dist-tags"))throw new _t(15,'Registry returned invalid data - missing "dist-tags" field');let c=n["dist-tags"];if(!Object.hasOwn(c,a))throw new _t(16,`Registry failed to return tag "${a}"`);let f=Object.keys(n.versions),p=n.time,h=c[a];if(a==="latest"&&!Cw({configuration:s.project.configuration,ident:t,version:h,publishTimes:p})){let S=h.includes("-"),x=zF.default.rsort(f).find(I=>zF.default.lt(I,h)&&(S||!I.includes("-"))&&Cw({configuration:s.project.configuration,ident:t,version:I,publishTimes:p}));if(!x)throw new _t(16,`The version for tag "${a}" is quarantined, and no lower version is available`);h=x}let E=j.makeLocator(t,`${ei}${h}`),C=n.versions[h].dist.tarball;return ih.isConventionalTarballUrl(E,C,{configuration:s.project.configuration})?[E]:[j.bindLocator(E,{__archiveUrl:C})]}async getSatisfying(t,r,s,a){let n=[];for(let c of s){if(c.identHash!==t.identHash)continue;let f=j.tryParseRange(c.reference,{requireProtocol:ei});if(!(!f||!zF.default.valid(f.selector))){if(f.params?.__archiveUrl){let p=j.makeRange({protocol:ei,selector:f.selector,source:null,params:null}),[h]=await a.resolver.getCandidates(j.makeDescriptor(t,p),r,a);if(c.reference!==h.reference)continue}n.push(c)}}return{locators:n,sorted:!1}}async resolve(t,r){throw new Error("Unreachable")}};var d1={};Yt(d1,{getGitHead:()=>Cvt,getPublishAccess:()=>kbe,getReadmeContent:()=>Qbe,makePublishBody:()=>Ivt});qe();qe();Dt();var qV={};Yt(qV,{PackCommand:()=>Fw,default:()=>cmt,packUtils:()=>EA});qe();qe();qe();Dt();Vt();var EA={};Yt(EA,{genPackList:()=>EN,genPackStream:()=>GV,genPackageManifest:()=>m2e,hasPackScripts:()=>HV,prepareForPack:()=>jV});qe();Dt();var _V=et(Jo()),g2e=et(f2e()),d2e=Ie("zlib"),Xdt=["/package.json","/readme","/readme.*","/license","/license.*","/licence","/licence.*","/changelog","/changelog.*"],$dt=["/package.tgz",".github",".git",".hg","node_modules",".npmignore",".gitignore",".#*",".DS_Store"];async function HV(e){return!!(Cn.hasWorkspaceScript(e,"prepack")||Cn.hasWorkspaceScript(e,"postpack"))}async function jV(e,{report:t},r){await Cn.maybeExecuteWorkspaceLifecycleScript(e,"prepack",{report:t});try{let s=K.join(e.cwd,Ut.fileName);await le.existsPromise(s)&&await e.manifest.loadFile(s,{baseFs:le}),await r()}finally{await Cn.maybeExecuteWorkspaceLifecycleScript(e,"postpack",{report:t})}}async function GV(e,t){typeof t>"u"&&(t=await EN(e));let r=new Set;for(let n of e.manifest.publishConfig?.executableFiles??new Set)r.add(K.normalize(n));for(let n of e.manifest.bin.values())r.add(K.normalize(n));let s=g2e.default.pack();process.nextTick(async()=>{for(let n of t){let c=K.normalize(n),f=K.resolve(e.cwd,c),p=K.join("package",c),h=await le.lstatPromise(f),E={name:p,mtime:new Date(Ai.SAFE_TIME*1e3)},C=r.has(c)?493:420,S,x,I=new Promise((O,U)=>{S=O,x=U}),T=O=>{O?x(O):S()};if(h.isFile()){let O;c==="package.json"?O=Buffer.from(JSON.stringify(await m2e(e),null,2)):O=await le.readFilePromise(f),s.entry({...E,mode:C,type:"file"},O,T)}else h.isSymbolicLink()?s.entry({...E,mode:C,type:"symlink",linkname:await le.readlinkPromise(f)},T):T(new Error(`Unsupported file type ${h.mode} for ${fe.fromPortablePath(c)}`));await I}s.finalize()});let a=(0,d2e.createGzip)();return s.pipe(a),a}async function m2e(e){let t=JSON.parse(JSON.stringify(e.manifest.raw));return await e.project.configuration.triggerHook(r=>r.beforeWorkspacePacking,e,t),t}async function EN(e){let t=e.project,r=t.configuration,s={accept:[],reject:[]};for(let C of $dt)s.reject.push(C);for(let C of Xdt)s.accept.push(C);s.reject.push(r.get("rcFilename"));let a=C=>{if(C===null||!C.startsWith(`${e.cwd}/`))return;let S=K.relative(e.cwd,C),x=K.resolve(vt.root,S);s.reject.push(x)};a(K.resolve(t.cwd,Er.lockfile)),a(r.get("cacheFolder")),a(r.get("globalFolder")),a(r.get("installStatePath")),a(r.get("virtualFolder")),a(r.get("yarnPath")),await r.triggerHook(C=>C.populateYarnPaths,t,C=>{a(C)});for(let C of t.workspaces){let S=K.relative(e.cwd,C.cwd);S!==""&&!S.match(/^(\.\.)?\//)&&s.reject.push(`/${S}`)}let n={accept:[],reject:[]},c=e.manifest.publishConfig?.main??e.manifest.main,f=e.manifest.publishConfig?.module??e.manifest.module,p=e.manifest.publishConfig?.browser??e.manifest.browser,h=e.manifest.publishConfig?.bin??e.manifest.bin;c!=null&&n.accept.push(K.resolve(vt.root,c)),f!=null&&n.accept.push(K.resolve(vt.root,f)),typeof p=="string"&&n.accept.push(K.resolve(vt.root,p));for(let C of h.values())n.accept.push(K.resolve(vt.root,C));if(p instanceof Map)for(let[C,S]of p.entries())n.accept.push(K.resolve(vt.root,C)),typeof S=="string"&&n.accept.push(K.resolve(vt.root,S));let E=e.manifest.files!==null;if(E){n.reject.push("/*");for(let C of e.manifest.files)y2e(n.accept,C,{cwd:vt.root})}return await emt(e.cwd,{hasExplicitFileList:E,globalList:s,ignoreList:n})}async function emt(e,{hasExplicitFileList:t,globalList:r,ignoreList:s}){let a=[],n=new Gf(e),c=[[vt.root,[s]]];for(;c.length>0;){let[f,p]=c.pop(),h=await n.lstatPromise(f);if(!p2e(f,{globalList:r,ignoreLists:h.isDirectory()?null:p}))if(h.isDirectory()){let E=await n.readdirPromise(f),C=!1,S=!1;if(!t||f!==vt.root)for(let T of E)C=C||T===".gitignore",S=S||T===".npmignore";let x=S?await A2e(n,f,".npmignore"):C?await A2e(n,f,".gitignore"):null,I=x!==null?[x].concat(p):p;p2e(f,{globalList:r,ignoreLists:p})&&(I=[...p,{accept:[],reject:["**/*"]}]);for(let T of E)c.push([K.resolve(f,T),I])}else(h.isFile()||h.isSymbolicLink())&&a.push(K.relative(vt.root,f))}return a.sort()}async function A2e(e,t,r){let s={accept:[],reject:[]},a=await e.readFilePromise(K.join(t,r),"utf8");for(let n of a.split(/\n/g))y2e(s.reject,n,{cwd:t});return s}function tmt(e,{cwd:t}){let r=e[0]==="!";return r&&(e=e.slice(1)),e.match(/\.{0,1}\//)&&(e=K.resolve(t,e)),r&&(e=`!${e}`),e}function y2e(e,t,{cwd:r}){let s=t.trim();s===""||s[0]==="#"||e.push(tmt(s,{cwd:r}))}function p2e(e,{globalList:t,ignoreLists:r}){let s=yN(e,t.accept);if(s!==0)return s===2;let a=yN(e,t.reject);if(a!==0)return a===1;if(r!==null)for(let n of r){let c=yN(e,n.accept);if(c!==0)return c===2;let f=yN(e,n.reject);if(f!==0)return f===1}return!1}function yN(e,t){let r=t,s=[];for(let a=0;a{await jV(a,{report:p},async()=>{p.reportJson({base:fe.fromPortablePath(a.cwd)});let h=await EN(a);for(let E of h)p.reportInfo(null,fe.fromPortablePath(E)),p.reportJson({location:fe.fromPortablePath(E)});if(!this.dryRun){let E=await GV(a,h);await le.mkdirPromise(K.dirname(c),{recursive:!0});let C=le.createWriteStream(c);E.pipe(C),await new Promise(S=>{C.on("finish",S)})}}),this.dryRun||(p.reportInfo(0,`Package archive generated in ${pe.pretty(r,c,pe.Type.PATH)}`),p.reportJson({output:fe.fromPortablePath(c)}))})).exitCode()}};function rmt(e,{workspace:t}){let r=e.replace("%s",nmt(t)).replace("%v",imt(t));return fe.toPortablePath(r)}function nmt(e){return e.manifest.name!==null?j.slugifyIdent(e.manifest.name):"package"}function imt(e){return e.manifest.version!==null?e.manifest.version:"unknown"}var smt=["dependencies","devDependencies","peerDependencies"],omt="workspace:",amt=(e,t)=>{t.publishConfig&&(t.publishConfig.type&&(t.type=t.publishConfig.type),t.publishConfig.main&&(t.main=t.publishConfig.main),t.publishConfig.browser&&(t.browser=t.publishConfig.browser),t.publishConfig.module&&(t.module=t.publishConfig.module),t.publishConfig.exports&&(t.exports=t.publishConfig.exports),t.publishConfig.imports&&(t.imports=t.publishConfig.imports),t.publishConfig.bin&&(t.bin=t.publishConfig.bin));let r=e.project;for(let s of smt)for(let a of e.manifest.getForScope(s).values()){let n=r.tryWorkspaceByDescriptor(a),c=j.parseRange(a.range);if(c.protocol===omt)if(n===null){if(r.tryWorkspaceByIdent(a)===null)throw new _t(21,`${j.prettyDescriptor(r.configuration,a)}: No local workspace found for this range`)}else{let f;j.areDescriptorsEqual(a,n.anchoredDescriptor)||c.selector==="*"?f=n.manifest.version??"0.0.0":c.selector==="~"||c.selector==="^"?f=`${c.selector}${n.manifest.version??"0.0.0"}`:f=c.selector;let p=s==="dependencies"?j.makeDescriptor(a,"unknown"):null,h=p!==null&&e.manifest.ensureDependencyMeta(p).optional?"optionalDependencies":s;t[h][j.stringifyIdent(a)]=f}}},lmt={hooks:{beforeWorkspacePacking:amt},commands:[Fw]},cmt=lmt;var xbe=et(b2e());qe();var bbe=et(Dbe()),{env:Bt}=process,fvt="application/vnd.in-toto+json",Avt="https://in-toto.io/Statement/v0.1",pvt="https://in-toto.io/Statement/v1",hvt="https://slsa.dev/provenance/v0.2",gvt="https://slsa.dev/provenance/v1",dvt="https://github.com/actions/runner",mvt="https://slsa-framework.github.io/github-actions-buildtypes/workflow/v1",yvt="https://github.com/npm/cli/gitlab",Evt="v0alpha1",Pbe=async(e,t)=>{let r;if(Bt.GITHUB_ACTIONS){if(!Bt.ACTIONS_ID_TOKEN_REQUEST_URL)throw new _t(91,'Provenance generation in GitHub Actions requires "write" access to the "id-token" permission');let s=(Bt.GITHUB_WORKFLOW_REF||"").replace(`${Bt.GITHUB_REPOSITORY}/`,""),a=s.indexOf("@"),n=s.slice(0,a),c=s.slice(a+1);r={_type:pvt,subject:e,predicateType:gvt,predicate:{buildDefinition:{buildType:mvt,externalParameters:{workflow:{ref:c,repository:`${Bt.GITHUB_SERVER_URL}/${Bt.GITHUB_REPOSITORY}`,path:n}},internalParameters:{github:{event_name:Bt.GITHUB_EVENT_NAME,repository_id:Bt.GITHUB_REPOSITORY_ID,repository_owner_id:Bt.GITHUB_REPOSITORY_OWNER_ID}},resolvedDependencies:[{uri:`git+${Bt.GITHUB_SERVER_URL}/${Bt.GITHUB_REPOSITORY}@${Bt.GITHUB_REF}`,digest:{gitCommit:Bt.GITHUB_SHA}}]},runDetails:{builder:{id:`${dvt}/${Bt.RUNNER_ENVIRONMENT}`},metadata:{invocationId:`${Bt.GITHUB_SERVER_URL}/${Bt.GITHUB_REPOSITORY}/actions/runs/${Bt.GITHUB_RUN_ID}/attempts/${Bt.GITHUB_RUN_ATTEMPT}`}}}}}else if(Bt.GITLAB_CI){if(!Bt.SIGSTORE_ID_TOKEN)throw new _t(91,`Provenance generation in GitLab CI requires "SIGSTORE_ID_TOKEN" with "sigstore" audience to be present in "id_tokens". For more info see: -https://docs.gitlab.com/ee/ci/secrets/id_token_authentication.html`);r={_type:Avt,subject:e,predicateType:hvt,predicate:{buildType:`${yvt}/${Evt}`,builder:{id:`${Bt.CI_PROJECT_URL}/-/runners/${Bt.CI_RUNNER_ID}`},invocation:{configSource:{uri:`git+${Bt.CI_PROJECT_URL}`,digest:{sha1:Bt.CI_COMMIT_SHA},entryPoint:Bt.CI_JOB_NAME},parameters:{CI:Bt.CI,CI_API_GRAPHQL_URL:Bt.CI_API_GRAPHQL_URL,CI_API_V4_URL:Bt.CI_API_V4_URL,CI_BUILD_BEFORE_SHA:Bt.CI_BUILD_BEFORE_SHA,CI_BUILD_ID:Bt.CI_BUILD_ID,CI_BUILD_NAME:Bt.CI_BUILD_NAME,CI_BUILD_REF:Bt.CI_BUILD_REF,CI_BUILD_REF_NAME:Bt.CI_BUILD_REF_NAME,CI_BUILD_REF_SLUG:Bt.CI_BUILD_REF_SLUG,CI_BUILD_STAGE:Bt.CI_BUILD_STAGE,CI_COMMIT_BEFORE_SHA:Bt.CI_COMMIT_BEFORE_SHA,CI_COMMIT_BRANCH:Bt.CI_COMMIT_BRANCH,CI_COMMIT_REF_NAME:Bt.CI_COMMIT_REF_NAME,CI_COMMIT_REF_PROTECTED:Bt.CI_COMMIT_REF_PROTECTED,CI_COMMIT_REF_SLUG:Bt.CI_COMMIT_REF_SLUG,CI_COMMIT_SHA:Bt.CI_COMMIT_SHA,CI_COMMIT_SHORT_SHA:Bt.CI_COMMIT_SHORT_SHA,CI_COMMIT_TIMESTAMP:Bt.CI_COMMIT_TIMESTAMP,CI_COMMIT_TITLE:Bt.CI_COMMIT_TITLE,CI_CONFIG_PATH:Bt.CI_CONFIG_PATH,CI_DEFAULT_BRANCH:Bt.CI_DEFAULT_BRANCH,CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX:Bt.CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX,CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX:Bt.CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX,CI_DEPENDENCY_PROXY_SERVER:Bt.CI_DEPENDENCY_PROXY_SERVER,CI_DEPENDENCY_PROXY_USER:Bt.CI_DEPENDENCY_PROXY_USER,CI_JOB_ID:Bt.CI_JOB_ID,CI_JOB_NAME:Bt.CI_JOB_NAME,CI_JOB_NAME_SLUG:Bt.CI_JOB_NAME_SLUG,CI_JOB_STAGE:Bt.CI_JOB_STAGE,CI_JOB_STARTED_AT:Bt.CI_JOB_STARTED_AT,CI_JOB_URL:Bt.CI_JOB_URL,CI_NODE_TOTAL:Bt.CI_NODE_TOTAL,CI_PAGES_DOMAIN:Bt.CI_PAGES_DOMAIN,CI_PAGES_URL:Bt.CI_PAGES_URL,CI_PIPELINE_CREATED_AT:Bt.CI_PIPELINE_CREATED_AT,CI_PIPELINE_ID:Bt.CI_PIPELINE_ID,CI_PIPELINE_IID:Bt.CI_PIPELINE_IID,CI_PIPELINE_SOURCE:Bt.CI_PIPELINE_SOURCE,CI_PIPELINE_URL:Bt.CI_PIPELINE_URL,CI_PROJECT_CLASSIFICATION_LABEL:Bt.CI_PROJECT_CLASSIFICATION_LABEL,CI_PROJECT_DESCRIPTION:Bt.CI_PROJECT_DESCRIPTION,CI_PROJECT_ID:Bt.CI_PROJECT_ID,CI_PROJECT_NAME:Bt.CI_PROJECT_NAME,CI_PROJECT_NAMESPACE:Bt.CI_PROJECT_NAMESPACE,CI_PROJECT_NAMESPACE_ID:Bt.CI_PROJECT_NAMESPACE_ID,CI_PROJECT_PATH:Bt.CI_PROJECT_PATH,CI_PROJECT_PATH_SLUG:Bt.CI_PROJECT_PATH_SLUG,CI_PROJECT_REPOSITORY_LANGUAGES:Bt.CI_PROJECT_REPOSITORY_LANGUAGES,CI_PROJECT_ROOT_NAMESPACE:Bt.CI_PROJECT_ROOT_NAMESPACE,CI_PROJECT_TITLE:Bt.CI_PROJECT_TITLE,CI_PROJECT_URL:Bt.CI_PROJECT_URL,CI_PROJECT_VISIBILITY:Bt.CI_PROJECT_VISIBILITY,CI_REGISTRY:Bt.CI_REGISTRY,CI_REGISTRY_IMAGE:Bt.CI_REGISTRY_IMAGE,CI_REGISTRY_USER:Bt.CI_REGISTRY_USER,CI_RUNNER_DESCRIPTION:Bt.CI_RUNNER_DESCRIPTION,CI_RUNNER_ID:Bt.CI_RUNNER_ID,CI_RUNNER_TAGS:Bt.CI_RUNNER_TAGS,CI_SERVER_HOST:Bt.CI_SERVER_HOST,CI_SERVER_NAME:Bt.CI_SERVER_NAME,CI_SERVER_PORT:Bt.CI_SERVER_PORT,CI_SERVER_PROTOCOL:Bt.CI_SERVER_PROTOCOL,CI_SERVER_REVISION:Bt.CI_SERVER_REVISION,CI_SERVER_SHELL_SSH_HOST:Bt.CI_SERVER_SHELL_SSH_HOST,CI_SERVER_SHELL_SSH_PORT:Bt.CI_SERVER_SHELL_SSH_PORT,CI_SERVER_URL:Bt.CI_SERVER_URL,CI_SERVER_VERSION:Bt.CI_SERVER_VERSION,CI_SERVER_VERSION_MAJOR:Bt.CI_SERVER_VERSION_MAJOR,CI_SERVER_VERSION_MINOR:Bt.CI_SERVER_VERSION_MINOR,CI_SERVER_VERSION_PATCH:Bt.CI_SERVER_VERSION_PATCH,CI_TEMPLATE_REGISTRY_HOST:Bt.CI_TEMPLATE_REGISTRY_HOST,GITLAB_CI:Bt.GITLAB_CI,GITLAB_FEATURES:Bt.GITLAB_FEATURES,GITLAB_USER_ID:Bt.GITLAB_USER_ID,GITLAB_USER_LOGIN:Bt.GITLAB_USER_LOGIN,RUNNER_GENERATE_ARTIFACTS_METADATA:Bt.RUNNER_GENERATE_ARTIFACTS_METADATA},environment:{name:Bt.CI_RUNNER_DESCRIPTION,architecture:Bt.CI_RUNNER_EXECUTABLE_ARCH,server:Bt.CI_SERVER_URL,project:Bt.CI_PROJECT_PATH,job:{id:Bt.CI_JOB_ID},pipeline:{id:Bt.CI_PIPELINE_ID,ref:Bt.CI_CONFIG_PATH}}},metadata:{buildInvocationId:`${Bt.CI_JOB_URL}`,completeness:{parameters:!0,environment:!0,materials:!1},reproducible:!1},materials:[{uri:`git+${Bt.CI_PROJECT_URL}`,digest:{sha1:Bt.CI_COMMIT_SHA}}]}}}else throw new _t(91,"Provenance generation is only supported in GitHub Actions and GitLab CI");return bbe.attest(Buffer.from(JSON.stringify(r)),fvt,t)};async function Ivt(e,t,{access:r,tag:s,registry:a,gitHead:n,provenance:c}){let f=e.manifest.name,p=e.manifest.version,h=j.stringifyIdent(f),E=xbe.default.fromData(t,{algorithms:["sha1","sha512"]}),C=r??kbe(e,f),S=await Qbe(e),x=await EA.genPackageManifest(e),I=`${h}-${p}.tgz`,T=new URL(`${Vc(a)}/${h}/-/${I}`),O={[I]:{content_type:"application/octet-stream",data:t.toString("base64"),length:t.length}};if(c){let U={name:`pkg:npm/${h.replace(/^@/,"%40")}@${p}`,digest:{sha512:E.sha512[0].hexDigest()}},Y=await Pbe([U]),te=JSON.stringify(Y);O[`${h}-${p}.sigstore`]={content_type:Y.mediaType,data:te,length:te.length}}return{_id:h,_attachments:O,name:h,access:C,"dist-tags":{[s]:p},versions:{[p]:{...x,_id:`${h}@${p}`,name:h,version:p,gitHead:n,dist:{shasum:E.sha1[0].hexDigest(),integrity:E.sha512[0].toString(),tarball:T.toString()}}},readme:S}}async function Cvt(e){try{let{stdout:t}=await qr.execvp("git",["rev-parse","--revs-only","HEAD"],{cwd:e});return t.trim()===""?void 0:t.trim()}catch{return}}function kbe(e,t){let r=e.project.configuration;return e.manifest.publishConfig&&typeof e.manifest.publishConfig.access=="string"?e.manifest.publishConfig.access:r.get("npmPublishAccess")!==null?r.get("npmPublishAccess"):t.scope?"restricted":"public"}async function Qbe(e){let t=fe.toPortablePath(`${e.cwd}/README.md`),r=e.manifest.name,a=`# ${j.stringifyIdent(r)} -`;try{a=await le.readFilePromise(t,"utf8")}catch(n){if(n.code==="ENOENT")return a;throw n}return a}var zK={npmAlwaysAuth:{description:"URL of the selected npm registry (note: npm enterprise isn't supported)",type:"BOOLEAN",default:!1},npmAuthIdent:{description:"Authentication identity for the npm registry (_auth in npm and yarn v1)",type:"SECRET",default:null},npmAuthToken:{description:"Authentication token for the npm registry (_authToken in npm and yarn v1)",type:"SECRET",default:null}},Rbe={npmAuditRegistry:{description:"Registry to query for audit reports",type:"STRING",default:null},npmPublishRegistry:{description:"Registry to push packages to",type:"STRING",default:null},npmRegistryServer:{description:"URL of the selected npm registry (note: npm enterprise isn't supported)",type:"STRING",default:"https://registry.yarnpkg.com"}},wvt={npmMinimalAgeGate:{description:"Minimum age of a package version according to the publish date on the npm registry to be considered for installation",type:"DURATION",unit:"m",default:"0m"},npmPreapprovedPackages:{description:"Array of package descriptors or package name glob patterns to exclude from the minimum release age check",type:"STRING",isArray:!0,default:[]}},Bvt={configuration:{...zK,...Rbe,...wvt,npmScopes:{description:"Settings per package scope",type:"MAP",valueDefinition:{description:"",type:"SHAPE",properties:{...zK,...Rbe}}},npmRegistries:{description:"Settings per registry",type:"MAP",normalizeKeys:Vc,valueDefinition:{description:"",type:"SHAPE",properties:{...zK}}}},fetchers:[YD,ih],resolvers:[KD,JD,zD]},vvt=Bvt;var aJ={};Yt(aJ,{NpmAuditCommand:()=>y1,NpmInfoCommand:()=>E1,NpmLoginCommand:()=>I1,NpmLogoutCommand:()=>w1,NpmPublishCommand:()=>B1,NpmTagAddCommand:()=>S1,NpmTagListCommand:()=>v1,NpmTagRemoveCommand:()=>D1,NpmWhoamiCommand:()=>b1,default:()=>Ovt,npmAuditTypes:()=>zb,npmAuditUtils:()=>hL});qe();qe();Vt();var rJ=et(Jo());ul();var zb={};Yt(zb,{Environment:()=>Kb,Severity:()=>Jb});var Kb=(s=>(s.All="all",s.Production="production",s.Development="development",s))(Kb||{}),Jb=(n=>(n.Info="info",n.Low="low",n.Moderate="moderate",n.High="high",n.Critical="critical",n))(Jb||{});var hL={};Yt(hL,{allSeverities:()=>m1,getPackages:()=>tJ,getReportTree:()=>$K,getSeverityInclusions:()=>XK,getTopLevelDependencies:()=>eJ});qe();var Tbe=et(pi());var m1=["info","low","moderate","high","critical"];function XK(e){if(typeof e>"u")return new Set(m1);let t=m1.indexOf(e),r=m1.slice(t);return new Set(r)}function $K(e){let t={},r={children:t};for(let[s,a]of Ge.sortMap(Object.entries(e),n=>n[0]))for(let n of Ge.sortMap(a,c=>`${c.id}`))t[`${s}/${n.id}`]={value:pe.tuple(pe.Type.IDENT,j.parseIdent(s)),children:{ID:typeof n.id<"u"&&{label:"ID",value:pe.tuple(pe.Type.ID,n.id)},Issue:{label:"Issue",value:pe.tuple(pe.Type.NO_HINT,n.title)},URL:typeof n.url<"u"&&{label:"URL",value:pe.tuple(pe.Type.URL,n.url)},Severity:{label:"Severity",value:pe.tuple(pe.Type.NO_HINT,n.severity)},"Vulnerable Versions":{label:"Vulnerable Versions",value:pe.tuple(pe.Type.RANGE,n.vulnerable_versions)},"Tree Versions":{label:"Tree Versions",children:[...n.versions].sort(Tbe.default.compare).map(c=>({value:pe.tuple(pe.Type.REFERENCE,c)}))},Dependents:{label:"Dependents",children:Ge.sortMap(n.dependents,c=>j.stringifyLocator(c)).map(c=>({value:pe.tuple(pe.Type.LOCATOR,c)}))}}};return r}function eJ(e,t,{all:r,environment:s}){let a=[],n=r?e.workspaces:[t],c=["all","production"].includes(s),f=["all","development"].includes(s);for(let p of n)for(let h of p.anchoredPackage.dependencies.values())(p.manifest.devDependencies.has(h.identHash)?!f:!c)||a.push({workspace:p,dependency:h});return a}function tJ(e,t,{recursive:r}){let s=new Map,a=new Set,n=[],c=e.configuration.makeResolver(),f={project:e,resolver:c},p=(h,E)=>{let C=e.storedResolutions.get(E.descriptorHash);if(typeof C>"u")throw new Error("Assertion failed: The resolution should have been registered");if(!a.has(C))a.add(C);else return;let S=e.storedPackages.get(C);if(typeof S>"u")throw new Error("Assertion failed: The package should have been registered");let x=j.ensureDevirtualizedDescriptor(E);if(c.supportsDescriptor(x,f)){let T=c.getResolutionDependencies(x,f);if(Object.keys(T).length>0)for(let O of Object.values(T))p(h,O)}if(j.ensureDevirtualizedLocator(S).reference.startsWith("npm:")&&S.version!==null){let T=j.stringifyIdent(S),O=Ge.getMapWithDefault(s,T);Ge.getArrayWithDefault(O,S.version).push(h)}if(r)for(let T of S.dependencies.values())n.push([S,T])};for(let{workspace:h,dependency:E}of t)n.push([h.anchoredLocator,E]);for(;n.length>0;){let[h,E]=n.shift();p(h,E)}return s}var y1=class extends At{constructor(){super(...arguments);this.all=he.Boolean("-A,--all",!1,{description:"Audit dependencies from all workspaces"});this.recursive=he.Boolean("-R,--recursive",!1,{description:"Audit transitive dependencies as well"});this.environment=he.String("--environment","all",{description:"Which environments to cover",validator:ks(Kb)});this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.noDeprecations=he.Boolean("--no-deprecations",!1,{description:"Don't warn about deprecated packages"});this.severity=he.String("--severity","info",{description:"Minimal severity requested for packages to be displayed",validator:ks(Jb)});this.excludes=he.Array("--exclude",[],{description:"Array of glob patterns of packages to exclude from audit"});this.ignores=he.Array("--ignore",[],{description:"Array of glob patterns of advisory ID's to ignore in the audit report"})}static{this.paths=[["npm","audit"]]}static{this.usage=at.Usage({description:"perform a vulnerability audit against the installed packages",details:` - This command checks for known security reports on the packages you use. The reports are by default extracted from the npm registry, and may or may not be relevant to your actual program (not all vulnerabilities affect all code paths). - - For consistency with our other commands the default is to only check the direct dependencies for the active workspace. To extend this search to all workspaces, use \`-A,--all\`. To extend this search to both direct and transitive dependencies, use \`-R,--recursive\`. - - Applying the \`--severity\` flag will limit the audit table to vulnerabilities of the corresponding severity and above. Valid values are ${m1.map(r=>`\`${r}\``).join(", ")}. - - If the \`--json\` flag is set, Yarn will print the output exactly as received from the registry. Regardless of this flag, the process will exit with a non-zero exit code if a report is found for the selected packages. - - If certain packages produce false positives for a particular environment, the \`--exclude\` flag can be used to exclude any number of packages from the audit. This can also be set in the configuration file with the \`npmAuditExcludePackages\` option. - - If particular advisories are needed to be ignored, the \`--ignore\` flag can be used with Advisory ID's to ignore any number of advisories in the audit report. This can also be set in the configuration file with the \`npmAuditIgnoreAdvisories\` option. - - To understand the dependency tree requiring vulnerable packages, check the raw report with the \`--json\` flag or use \`yarn why package\` to get more information as to who depends on them. - `,examples:[["Checks for known security issues with the installed packages. The output is a list of known issues.","yarn npm audit"],["Audit dependencies in all workspaces","yarn npm audit --all"],["Limit auditing to `dependencies` (excludes `devDependencies`)","yarn npm audit --environment production"],["Show audit report as valid JSON","yarn npm audit --json"],["Audit all direct and transitive dependencies","yarn npm audit --recursive"],["Output moderate (or more severe) vulnerabilities","yarn npm audit --severity moderate"],["Exclude certain packages","yarn npm audit --exclude package1 --exclude package2"],["Ignore specific advisories","yarn npm audit --ignore 1234567 --ignore 7654321"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let n=eJ(s,a,{all:this.all,environment:this.environment}),c=tJ(s,n,{recursive:this.recursive}),f=Array.from(new Set([...r.get("npmAuditExcludePackages"),...this.excludes])),p=Object.create(null);for(let[O,U]of c)f.some(Y=>rJ.default.isMatch(O,Y))||(p[O]=[...U.keys()]);let h=gi.getAuditRegistry({configuration:r}),E,C=await cA.start({configuration:r,stdout:this.context.stdout},async()=>{let O=en.post("/-/npm/v1/security/advisories/bulk",p,{authType:en.AuthType.BEST_EFFORT,configuration:r,jsonResponse:!0,registry:h}),U=this.noDeprecations?[]:await Promise.all(Array.from(Object.entries(p),async([te,ie])=>{let ue=await en.getPackageMetadata(j.parseIdent(te),{project:s});return Ge.mapAndFilter(ie,ae=>{let{deprecated:de}=ue.versions[ae];return de?[te,ae,de]:Ge.mapAndFilter.skip})})),Y=await O;for(let[te,ie,ue]of U.flat(1))Object.hasOwn(Y,te)&&Y[te].some(ae=>Fr.satisfiesWithPrereleases(ie,ae.vulnerable_versions))||(Y[te]??=[],Y[te].push({id:`${te} (deprecation)`,title:(typeof ue=="string"?ue:"").trim()||"This package has been deprecated.",severity:"moderate",vulnerable_versions:ie}));E=Y});if(C.hasErrors())return C.exitCode();let S=XK(this.severity),x=Array.from(new Set([...r.get("npmAuditIgnoreAdvisories"),...this.ignores])),I=Object.create(null);for(let[O,U]of Object.entries(E)){let Y=U.filter(te=>!rJ.default.isMatch(`${te.id}`,x)&&S.has(te.severity));Y.length>0&&(I[O]=Y.map(te=>{let ie=c.get(O);if(typeof ie>"u")throw new Error("Assertion failed: Expected the registry to only return packages that were requested");let ue=[...ie.keys()].filter(de=>Fr.satisfiesWithPrereleases(de,te.vulnerable_versions)),ae=new Map;for(let de of ue)for(let Ae of ie.get(de))ae.set(Ae.locatorHash,Ae);return{...te,versions:ue,dependents:[...ae.values()]}}))}let T=Object.keys(I).length>0;return T?(Rs.emitTree($K(I),{configuration:r,json:this.json,stdout:this.context.stdout,separators:2}),1):(await Ot.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async O=>{O.reportInfo(1,"No audit suggestions")}),T?1:0)}};qe();qe();Dt();Vt();var nJ=et(pi()),iJ=Ie("util"),E1=class extends At{constructor(){super(...arguments);this.fields=he.String("-f,--fields",{description:"A comma-separated list of manifest fields that should be displayed"});this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.packages=he.Rest()}static{this.paths=[["npm","info"]]}static{this.usage=at.Usage({category:"Npm-related commands",description:"show information about a package",details:"\n This command fetches information about a package from the npm registry and prints it in a tree format.\n\n The package does not have to be installed locally, but needs to have been published (in particular, local changes will be ignored even for workspaces).\n\n Append `@` to the package argument to provide information specific to the latest version that satisfies the range or to the corresponding tagged version. If the range is invalid or if there is no version satisfying the range, the command will print a warning and fall back to the latest version.\n\n If the `-f,--fields` option is set, it's a comma-separated list of fields which will be used to only display part of the package information.\n\n By default, this command won't return the `dist`, `readme`, and `users` fields, since they are often very long. To explicitly request those fields, explicitly list them with the `--fields` flag or request the output in JSON mode.\n ",examples:[["Show all available information about react (except the `dist`, `readme`, and `users` fields)","yarn npm info react"],["Show all available information about react as valid JSON (including the `dist`, `readme`, and `users` fields)","yarn npm info react --json"],["Show all available information about react@16.12.0","yarn npm info react@16.12.0"],["Show all available information about react@next","yarn npm info react@next"],["Show the description of react","yarn npm info react --fields description"],["Show all available versions of react","yarn npm info react --fields versions"],["Show the readme of react","yarn npm info react --fields readme"],["Show a few fields of react","yarn npm info react --fields homepage,repository"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Rt.find(r,this.context.cwd),a=typeof this.fields<"u"?new Set(["name",...this.fields.split(/\s*,\s*/)]):null,n=[],c=!1,f=await Ot.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async p=>{for(let h of this.packages){let E;if(h==="."){let ie=s.topLevelWorkspace;if(!ie.manifest.name)throw new st(`Missing ${pe.pretty(r,"name",pe.Type.CODE)} field in ${fe.fromPortablePath(K.join(ie.cwd,Er.manifest))}`);E=j.makeDescriptor(ie.manifest.name,"unknown")}else E=j.parseDescriptor(h);let C=en.getIdentUrl(E),S=sJ(await en.get(C,{configuration:r,ident:E,jsonResponse:!0,customErrorMessage:en.customPackageError})),x=Object.keys(S.versions).sort(nJ.default.compareLoose),T=S["dist-tags"].latest||x[x.length-1],O=Fr.validRange(E.range);if(O){let ie=nJ.default.maxSatisfying(x,O);ie!==null?T=ie:(p.reportWarning(0,`Unmet range ${j.prettyRange(r,E.range)}; falling back to the latest version`),c=!0)}else Object.hasOwn(S["dist-tags"],E.range)?T=S["dist-tags"][E.range]:E.range!=="unknown"&&(p.reportWarning(0,`Unknown tag ${j.prettyRange(r,E.range)}; falling back to the latest version`),c=!0);let U=S.versions[T],Y={...S,...U,version:T,versions:x},te;if(a!==null){te={};for(let ie of a){let ue=Y[ie];if(typeof ue<"u")te[ie]=ue;else{p.reportWarning(1,`The ${pe.pretty(r,ie,pe.Type.CODE)} field doesn't exist inside ${j.prettyIdent(r,E)}'s information`),c=!0;continue}}}else this.json||(delete Y.dist,delete Y.readme,delete Y.users),te=Y;p.reportJson(te),this.json||n.push(te)}});iJ.inspect.styles.name="cyan";for(let p of n)(p!==n[0]||c)&&this.context.stdout.write(` -`),this.context.stdout.write(`${(0,iJ.inspect)(p,{depth:1/0,colors:!0,compact:!1})} -`);return f.exitCode()}};function sJ(e){if(Array.isArray(e)){let t=[];for(let r of e)r=sJ(r),r&&t.push(r);return t}else if(typeof e=="object"&&e!==null){let t={};for(let r of Object.keys(e)){if(r.startsWith("_"))continue;let s=sJ(e[r]);s&&(t[r]=s)}return t}else return e||null}qe();qe();Vt();var oJ=et(Yv()),I1=class extends At{constructor(){super(...arguments);this.scope=he.String("-s,--scope",{description:"Login to the registry configured for a given scope"});this.publish=he.Boolean("--publish",!1,{description:"Login to the publish registry"});this.alwaysAuth=he.Boolean("--always-auth",{description:"Set the npmAlwaysAuth configuration"});this.webLogin=he.Boolean("--web-login",{description:"Enable web login"})}static{this.paths=[["npm","login"]]}static{this.usage=at.Usage({category:"Npm-related commands",description:"store new login info to access the npm registry",details:"\n This command will ask you for your username, password, and 2FA One-Time-Password (when it applies). It will then modify your local configuration (in your home folder, never in the project itself) to reference the new tokens thus generated.\n\n Adding the `-s,--scope` flag will cause the authentication to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\n\n Adding the `--publish` flag will cause the authentication to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\n ",examples:[["Login to the default registry","yarn npm login"],["Login to the registry linked to the @my-scope registry","yarn npm login --scope my-scope"],["Login to the publish registry for the current package","yarn npm login --publish"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=await gL({configuration:r,cwd:this.context.cwd,publish:this.publish,scope:this.scope});return(await Ot.start({configuration:r,stdout:this.context.stdout,includeFooter:!1},async n=>{let c=await xvt({registry:s,configuration:r,report:n,webLogin:this.webLogin,stdin:this.context.stdin,stdout:this.context.stdout});return await Qvt(s,c,{alwaysAuth:this.alwaysAuth,scope:this.scope}),n.reportInfo(0,"Successfully logged in")})).exitCode()}};async function gL({scope:e,publish:t,configuration:r,cwd:s}){return e&&t?gi.getScopeRegistry(e,{configuration:r,type:gi.RegistryType.PUBLISH_REGISTRY}):e?gi.getScopeRegistry(e,{configuration:r}):t?gi.getPublishRegistry((await WI(r,s)).manifest,{configuration:r}):gi.getDefaultRegistry({configuration:r})}async function Svt(e,t){let r;try{r=await en.post("/-/v1/login",null,{configuration:t,registry:e,authType:en.AuthType.NO_AUTH,jsonResponse:!0,headers:{"npm-auth-type":"web"}})}catch{return null}return r}async function Dvt(e,t){let r=await nn.request(e,null,{configuration:t,jsonResponse:!0});if(r.statusCode===202){let s=r.headers["retry-after"]??"1";return{type:"waiting",sleep:parseInt(s,10)}}return r.statusCode===200?{type:"success",token:r.body.token}:null}async function bvt({registry:e,configuration:t,report:r}){let s=await Svt(e,t);if(!s)return null;if(Ui.openUrl){r.reportInfo(0,"Starting the web login process..."),r.reportSeparator();let{openNow:a}=await(0,oJ.prompt)({type:"confirm",name:"openNow",message:"Do you want to try to open your browser now?",required:!0,initial:!0,onCancel:()=>process.exit(130)});r.reportSeparator(),(!a||!await Ui.openUrl(s.loginUrl))&&(r.reportWarning(0,"We failed to automatically open the url; you'll have to open it yourself in your browser of choice:"),r.reportWarning(0,pe.pretty(t,s.loginUrl,pe.Type.URL)),r.reportSeparator())}for(;;){let a=await Dvt(s.doneUrl,t);if(a===null)return null;if(a.type==="waiting")await new Promise(n=>setTimeout(n,a.sleep*1e3));else return a.token}}var Pvt=["https://registry.yarnpkg.com","https://registry.npmjs.org"];async function xvt(e){if(e.webLogin??Pvt.includes(e.registry)){let t=await bvt(e);if(t!==null)return t}return await kvt(e)}async function kvt({registry:e,configuration:t,report:r,stdin:s,stdout:a}){let n=await Rvt({configuration:t,registry:e,report:r,stdin:s,stdout:a}),c=`/-/user/org.couchdb.user:${encodeURIComponent(n.name)}`,f={_id:`org.couchdb.user:${n.name}`,name:n.name,password:n.password,type:"user",roles:[],date:new Date().toISOString()},p={attemptedAs:n.name,configuration:t,registry:e,jsonResponse:!0,authType:en.AuthType.NO_AUTH};try{return(await en.put(c,f,p)).token}catch(x){if(!(x.originalError?.name==="HTTPError"&&x.originalError?.response.statusCode===409))throw x}let h={...p,authType:en.AuthType.NO_AUTH,headers:{authorization:`Basic ${Buffer.from(`${n.name}:${n.password}`).toString("base64")}`}},E=await en.get(c,h);for(let[x,I]of Object.entries(E))(!f[x]||x==="roles")&&(f[x]=I);let C=`${c}/-rev/${f._rev}`;return(await en.put(C,f,h)).token}async function Qvt(e,t,{alwaysAuth:r,scope:s}){let a=c=>f=>{let p=Ge.isIndexableObject(f)?f:{},h=p[c],E=Ge.isIndexableObject(h)?h:{};return{...p,[c]:{...E,...r!==void 0?{npmAlwaysAuth:r}:{},npmAuthToken:t}}},n=s?{npmScopes:a(s)}:{npmRegistries:a(e)};return await ze.updateHomeConfiguration(n)}async function Rvt({configuration:e,registry:t,report:r,stdin:s,stdout:a}){r.reportInfo(0,`Logging in to ${pe.pretty(e,t,pe.Type.URL)}`);let n=!1;if(t.match(/^https:\/\/npm\.pkg\.github\.com(\/|$)/)&&(r.reportInfo(0,"You seem to be using the GitHub Package Registry. Tokens must be generated with the 'repo', 'write:packages', and 'read:packages' permissions."),n=!0),r.reportSeparator(),e.env.YARN_IS_TEST_ENV)return{name:e.env.YARN_INJECT_NPM_USER||"",password:e.env.YARN_INJECT_NPM_PASSWORD||""};let c=await(0,oJ.prompt)([{type:"input",name:"name",message:"Username:",required:!0,onCancel:()=>process.exit(130),stdin:s,stdout:a},{type:"password",name:"password",message:n?"Token:":"Password:",required:!0,onCancel:()=>process.exit(130),stdin:s,stdout:a}]);return r.reportSeparator(),c}qe();qe();Vt();var C1=new Set(["npmAuthIdent","npmAuthToken"]),w1=class extends At{constructor(){super(...arguments);this.scope=he.String("-s,--scope",{description:"Logout of the registry configured for a given scope"});this.publish=he.Boolean("--publish",!1,{description:"Logout of the publish registry"});this.all=he.Boolean("-A,--all",!1,{description:"Logout of all registries"})}static{this.paths=[["npm","logout"]]}static{this.usage=at.Usage({category:"Npm-related commands",description:"logout of the npm registry",details:"\n This command will log you out by modifying your local configuration (in your home folder, never in the project itself) to delete all credentials linked to a registry.\n\n Adding the `-s,--scope` flag will cause the deletion to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\n\n Adding the `--publish` flag will cause the deletion to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\n\n Adding the `-A,--all` flag will cause the deletion to be done against all registries and scopes.\n ",examples:[["Logout of the default registry","yarn npm logout"],["Logout of the @my-scope scope","yarn npm logout --scope my-scope"],["Logout of the publish registry for the current package","yarn npm logout --publish"],["Logout of all registries","yarn npm logout --all"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=async()=>{let n=await gL({configuration:r,cwd:this.context.cwd,publish:this.publish,scope:this.scope}),c=await ze.find(this.context.cwd,this.context.plugins),f=j.makeIdent(this.scope??null,"pkg");return!gi.getAuthConfiguration(n,{configuration:c,ident:f}).get("npmAuthToken")};return(await Ot.start({configuration:r,stdout:this.context.stdout},async n=>{if(this.all&&(await Fvt(),n.reportInfo(0,"Successfully logged out from everything")),this.scope){await Fbe("npmScopes",this.scope),await s()?n.reportInfo(0,`Successfully logged out from ${this.scope}`):n.reportWarning(0,"Scope authentication settings removed, but some other ones settings still apply to it");return}let c=await gL({configuration:r,cwd:this.context.cwd,publish:this.publish});await Fbe("npmRegistries",c),await s()?n.reportInfo(0,`Successfully logged out from ${c}`):n.reportWarning(0,"Registry authentication settings removed, but some other ones settings still apply to it")})).exitCode()}};function Tvt(e,t){let r=e[t];if(!Ge.isIndexableObject(r))return!1;let s=new Set(Object.keys(r));if([...C1].every(n=>!s.has(n)))return!1;for(let n of C1)s.delete(n);if(s.size===0)return e[t]=void 0,!0;let a={...r};for(let n of C1)delete a[n];return e[t]=a,!0}async function Fvt(){let e=t=>{let r=!1,s=Ge.isIndexableObject(t)?{...t}:{};s.npmAuthToken&&(delete s.npmAuthToken,r=!0);for(let a of Object.keys(s))Tvt(s,a)&&(r=!0);if(Object.keys(s).length!==0)return r?s:t};return await ze.updateHomeConfiguration({npmRegistries:e,npmScopes:e})}async function Fbe(e,t){return await ze.updateHomeConfiguration({[e]:r=>{let s=Ge.isIndexableObject(r)?r:{};if(!Object.hasOwn(s,t))return r;let a=s[t],n=Ge.isIndexableObject(a)?a:{},c=new Set(Object.keys(n));if([...C1].every(p=>!c.has(p)))return r;for(let p of C1)c.delete(p);if(c.size===0)return Object.keys(s).length===1?void 0:{...s,[t]:void 0};let f={};for(let p of C1)f[p]=void 0;return{...s,[t]:{...n,...f}}}})}qe();Dt();Vt();var B1=class extends At{constructor(){super(...arguments);this.access=he.String("--access",{description:"The access for the published package (public or restricted)"});this.tag=he.String("--tag","latest",{description:"The tag on the registry that the package should be attached to"});this.tolerateRepublish=he.Boolean("--tolerate-republish",!1,{description:"Warn and exit when republishing an already existing version of a package"});this.otp=he.String("--otp",{description:"The OTP token to use with the command"});this.provenance=he.Boolean("--provenance",!1,{description:"Generate provenance for the package. Only available in GitHub Actions and GitLab CI. Can be set globally through the `npmPublishProvenance` setting or the `YARN_NPM_CONFIG_PROVENANCE` environment variable, or per-package through the `publishConfig.provenance` field in package.json."});this.dryRun=he.Boolean("-n,--dry-run",!1,{description:"Show what would be published without actually publishing"});this.json=he.Boolean("--json",!1,{description:"Output the result in JSON format"})}static{this.paths=[["npm","publish"]]}static{this.usage=at.Usage({category:"Npm-related commands",description:"publish the active workspace to the npm registry",details:'\n This command will pack the active workspace into a fresh archive and upload it to the npm registry.\n\n The package will by default be attached to the `latest` tag on the registry, but this behavior can be overridden by using the `--tag` option.\n\n Note that for legacy reasons scoped packages are by default published with an access set to `restricted` (aka "private packages"). This requires you to register for a paid npm plan. In case you simply wish to publish a public scoped package to the registry (for free), just add the `--access public` flag. This behavior can be enabled by default through the `npmPublishAccess` settings.\n ',examples:[["Publish the active workspace","yarn npm publish"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);if(a.manifest.private)throw new st("Private workspaces cannot be published");if(a.manifest.name===null||a.manifest.version===null)throw new st("Workspaces must have valid names and versions to be published on an external registry");await s.restoreInstallState();let n=a.manifest.name,c=a.manifest.version,f=gi.getPublishRegistry(a.manifest,{configuration:r});return(await Ot.start({configuration:r,stdout:this.context.stdout,json:this.json},async h=>{if(h.reportInfo(0,`Publishing to ${f} with tag ${this.tag}`),this.tolerateRepublish)try{let E=await en.get(en.getIdentUrl(n),{configuration:r,registry:f,ident:n,jsonResponse:!0});if(!Object.hasOwn(E,"versions"))throw new _t(15,'Registry returned invalid data for - missing "versions" field');if(Object.hasOwn(E.versions,c)){let C=`Registry already knows about version ${c}; skipping.`;h.reportWarning(0,C),h.reportJson({name:j.stringifyIdent(n),version:c,registry:f,warning:C,skipped:!0});return}}catch(E){if(E.originalError?.response?.statusCode!==404)throw E}await Cn.maybeExecuteWorkspaceLifecycleScript(a,"prepublish",{report:h}),await EA.prepareForPack(a,{report:h},async()=>{let E=await EA.genPackList(a);for(let Y of E)h.reportInfo(null,fe.fromPortablePath(Y)),h.reportJson({file:fe.fromPortablePath(Y)});let C=await EA.genPackStream(a,E),S=await Ge.bufferStream(C),x=await d1.getGitHead(a.cwd),I=!1,T="";a.manifest.publishConfig&&"provenance"in a.manifest.publishConfig?(I=!!a.manifest.publishConfig.provenance,T=I?"Generating provenance statement because `publishConfig.provenance` field is set.":"Skipping provenance statement because `publishConfig.provenance` field is set to false."):this.provenance?(I=!0,T="Generating provenance statement because `--provenance` flag is set."):r.get("npmPublishProvenance")&&(I=!0,T="Generating provenance statement because `npmPublishProvenance` setting is set."),T&&(h.reportInfo(null,T),h.reportJson({type:"provenance",enabled:I,provenanceMessage:T}));let O=await d1.makePublishBody(a,S,{access:this.access,tag:this.tag,registry:f,gitHead:x,provenance:I});this.dryRun||await en.put(en.getIdentUrl(n),O,{configuration:r,registry:f,ident:n,otp:this.otp,jsonResponse:!0,allowOidc:!!(process.env.CI&&(process.env.GITHUB_ACTIONS||process.env.GITLAB_CI))});let U=this.dryRun?"Package archive not published (dry run)":"Package archive published";h.reportInfo(0,U),h.reportJson({name:j.stringifyIdent(n),version:c,registry:f,tag:this.tag||"latest",files:E.map(Y=>fe.fromPortablePath(Y)),access:this.access||null,dryRun:this.dryRun,published:!this.dryRun,message:U,provenance:!!I})})})).exitCode()}};qe();Vt();var Nbe=et(pi());qe();Dt();Vt();var v1=class extends At{constructor(){super(...arguments);this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.package=he.String({required:!1})}static{this.paths=[["npm","tag","list"]]}static{this.usage=at.Usage({category:"Npm-related commands",description:"list all dist-tags of a package",details:` - This command will list all tags of a package from the npm registry. - - If the package is not specified, Yarn will default to the current workspace. - `,examples:[["List all tags of package `my-pkg`","yarn npm tag list my-pkg"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n;if(typeof this.package<"u")n=j.parseIdent(this.package);else{if(!a)throw new ar(s.cwd,this.context.cwd);if(!a.manifest.name)throw new st(`Missing 'name' field in ${fe.fromPortablePath(K.join(a.cwd,Er.manifest))}`);n=a.manifest.name}let c=await Zb(n,r),p={children:Ge.sortMap(Object.entries(c),([h])=>h).map(([h,E])=>({value:pe.tuple(pe.Type.RESOLUTION,{descriptor:j.makeDescriptor(n,h),locator:j.makeLocator(n,E)})}))};return Rs.emitTree(p,{configuration:r,json:this.json,stdout:this.context.stdout})}};async function Zb(e,t){let r=`/-/package${en.getIdentUrl(e)}/dist-tags`;return en.get(r,{configuration:t,ident:e,jsonResponse:!0,customErrorMessage:en.customPackageError})}var S1=class extends At{constructor(){super(...arguments);this.package=he.String();this.tag=he.String()}static{this.paths=[["npm","tag","add"]]}static{this.usage=at.Usage({category:"Npm-related commands",description:"add a tag for a specific version of a package",details:` - This command will add a tag to the npm registry for a specific version of a package. If the tag already exists, it will be overwritten. - `,examples:[["Add a `beta` tag for version `2.3.4-beta.4` of package `my-pkg`","yarn npm tag add my-pkg@2.3.4-beta.4 beta"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);let n=j.parseDescriptor(this.package,!0),c=n.range;if(!Nbe.default.valid(c))throw new st(`The range ${pe.pretty(r,n.range,pe.Type.RANGE)} must be a valid semver version`);let f=gi.getPublishRegistry(a.manifest,{configuration:r}),p=pe.pretty(r,n,pe.Type.IDENT),h=pe.pretty(r,c,pe.Type.RANGE),E=pe.pretty(r,this.tag,pe.Type.CODE);return(await Ot.start({configuration:r,stdout:this.context.stdout},async S=>{let x=await Zb(n,r);Object.hasOwn(x,this.tag)&&x[this.tag]===c&&S.reportWarning(0,`Tag ${E} is already set to version ${h}`);let I=`/-/package${en.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await en.put(I,c,{configuration:r,registry:f,ident:n,jsonRequest:!0,jsonResponse:!0}),S.reportInfo(0,`Tag ${E} added to version ${h} of package ${p}`)})).exitCode()}};qe();Vt();var D1=class extends At{constructor(){super(...arguments);this.package=he.String();this.tag=he.String()}static{this.paths=[["npm","tag","remove"]]}static{this.usage=at.Usage({category:"Npm-related commands",description:"remove a tag from a package",details:` - This command will remove a tag from a package from the npm registry. - `,examples:[["Remove the `beta` tag from package `my-pkg`","yarn npm tag remove my-pkg beta"]]})}async execute(){if(this.tag==="latest")throw new st("The 'latest' tag cannot be removed.");let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);let n=j.parseIdent(this.package),c=gi.getPublishRegistry(a.manifest,{configuration:r}),f=pe.pretty(r,this.tag,pe.Type.CODE),p=pe.pretty(r,n,pe.Type.IDENT),h=await Zb(n,r);if(!Object.hasOwn(h,this.tag))throw new st(`${f} is not a tag of package ${p}`);return(await Ot.start({configuration:r,stdout:this.context.stdout},async C=>{let S=`/-/package${en.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await en.del(S,{configuration:r,registry:c,ident:n,jsonResponse:!0}),C.reportInfo(0,`Tag ${f} removed from package ${p}`)})).exitCode()}};qe();qe();Vt();var b1=class extends At{constructor(){super(...arguments);this.scope=he.String("-s,--scope",{description:"Print username for the registry configured for a given scope"});this.publish=he.Boolean("--publish",!1,{description:"Print username for the publish registry"})}static{this.paths=[["npm","whoami"]]}static{this.usage=at.Usage({category:"Npm-related commands",description:"display the name of the authenticated user",details:"\n Print the username associated with the current authentication settings to the standard output.\n\n When using `-s,--scope`, the username printed will be the one that matches the authentication settings of the registry associated with the given scope (those settings can be overriden using the `npmRegistries` map, and the registry associated with the scope is configured via the `npmScopes` map).\n\n When using `--publish`, the registry we'll select will by default be the one used when publishing packages (`publishConfig.registry` or `npmPublishRegistry` if available, otherwise we'll fallback to the regular `npmRegistryServer`).\n ",examples:[["Print username for the default registry","yarn npm whoami"],["Print username for the registry on a given scope","yarn npm whoami --scope company"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s;return this.scope&&this.publish?s=gi.getScopeRegistry(this.scope,{configuration:r,type:gi.RegistryType.PUBLISH_REGISTRY}):this.scope?s=gi.getScopeRegistry(this.scope,{configuration:r}):this.publish?s=gi.getPublishRegistry((await WI(r,this.context.cwd)).manifest,{configuration:r}):s=gi.getDefaultRegistry({configuration:r}),(await Ot.start({configuration:r,stdout:this.context.stdout},async n=>{let c;try{c=await en.get("/-/whoami",{configuration:r,registry:s,authType:en.AuthType.ALWAYS_AUTH,jsonResponse:!0,ident:this.scope?j.makeIdent(this.scope,""):void 0})}catch(f){if(f.response?.statusCode===401||f.response?.statusCode===403){n.reportError(41,"Authentication failed - your credentials may have expired");return}else throw f}n.reportInfo(0,c.username)})).exitCode()}};var Nvt={configuration:{npmPublishAccess:{description:"Default access of the published packages",type:"STRING",default:null},npmPublishProvenance:{description:"Whether to generate provenance for the published packages",type:"BOOLEAN",default:!1},npmAuditExcludePackages:{description:"Array of glob patterns of packages to exclude from npm audit",type:"STRING",default:[],isArray:!0},npmAuditIgnoreAdvisories:{description:"Array of glob patterns of advisory IDs to exclude from npm audit",type:"STRING",default:[],isArray:!0}},commands:[y1,E1,I1,w1,B1,S1,v1,D1,b1]},Ovt=Nvt;var hJ={};Yt(hJ,{PatchCommand:()=>T1,PatchCommitCommand:()=>R1,PatchFetcher:()=>rP,PatchResolver:()=>nP,default:()=>eSt,patchUtils:()=>yy});qe();qe();Dt();rA();var yy={};Yt(yy,{applyPatchFile:()=>mL,diffFolders:()=>AJ,ensureUnpatchedDescriptor:()=>lJ,ensureUnpatchedLocator:()=>EL,extractPackageToDisk:()=>fJ,extractPatchFlags:()=>jbe,isParentRequired:()=>uJ,isPatchDescriptor:()=>yL,isPatchLocator:()=>Qg,loadPatchFiles:()=>tP,makeDescriptor:()=>IL,makeLocator:()=>cJ,makePatchHash:()=>pJ,parseDescriptor:()=>$b,parseLocator:()=>eP,parsePatchFile:()=>Xb,unpatchDescriptor:()=>Zvt,unpatchLocator:()=>Xvt});qe();Dt();qe();Dt();var Lvt=/^@@ -(\d+)(,(\d+))? \+(\d+)(,(\d+))? @@.*/;function P1(e){return K.relative(vt.root,K.resolve(vt.root,fe.toPortablePath(e)))}function Mvt(e){let t=e.trim().match(Lvt);if(!t)throw new Error(`Bad header line: '${e}'`);return{original:{start:Math.max(Number(t[1]),1),length:Number(t[3]||1)},patched:{start:Math.max(Number(t[4]),1),length:Number(t[6]||1)}}}var Uvt=420,_vt=493;var Obe=()=>({semverExclusivity:null,diffLineFromPath:null,diffLineToPath:null,oldMode:null,newMode:null,deletedFileMode:null,newFileMode:null,renameFrom:null,renameTo:null,beforeHash:null,afterHash:null,fromPath:null,toPath:null,hunks:null}),Hvt=e=>({header:Mvt(e),parts:[]}),jvt={"@":"header","-":"deletion","+":"insertion"," ":"context","\\":"pragma",undefined:"context"};function Gvt(e){let t=[],r=Obe(),s="parsing header",a=null,n=null;function c(){a&&(n&&(a.parts.push(n),n=null),r.hunks.push(a),a=null)}function f(){c(),t.push(r),r=Obe()}for(let p=0;p0?"patch":"mode change",Y=null;switch(U){case"rename":{if(!E||!C)throw new Error("Bad parser state: rename from & to not given");t.push({type:"rename",semverExclusivity:s,fromPath:P1(E),toPath:P1(C)}),Y=C}break;case"file deletion":{let te=a||I;if(!te)throw new Error("Bad parse state: no path given for file deletion");t.push({type:"file deletion",semverExclusivity:s,hunk:O&&O[0]||null,path:P1(te),mode:dL(p),hash:S})}break;case"file creation":{let te=n||T;if(!te)throw new Error("Bad parse state: no path given for file creation");t.push({type:"file creation",semverExclusivity:s,hunk:O&&O[0]||null,path:P1(te),mode:dL(h),hash:x})}break;case"patch":case"mode change":Y=T||n;break;default:Ge.assertNever(U);break}Y&&c&&f&&c!==f&&t.push({type:"mode change",semverExclusivity:s,path:P1(Y),oldMode:dL(c),newMode:dL(f)}),Y&&O&&O.length&&t.push({type:"patch",semverExclusivity:s,path:P1(Y),hunks:O,beforeHash:S,afterHash:x})}if(t.length===0)throw new Error("Unable to parse patch file: No changes found. Make sure the patch is a valid UTF8 encoded string");return t}function dL(e){let t=parseInt(e,8)&511;if(t!==Uvt&&t!==_vt)throw new Error(`Unexpected file mode string: ${e}`);return t}function Xb(e){let t=e.split(/\n/g);return t[t.length-1]===""&&t.pop(),qvt(Gvt(t))}function Wvt(e){let t=0,r=0;for(let{type:s,lines:a}of e.parts)switch(s){case"context":r+=a.length,t+=a.length;break;case"deletion":t+=a.length;break;case"insertion":r+=a.length;break;default:Ge.assertNever(s);break}if(t!==e.header.original.length||r!==e.header.patched.length){let s=a=>a<0?a:`+${a}`;throw new Error(`hunk header integrity check failed (expected @@ ${s(e.header.original.length)} ${s(e.header.patched.length)} @@, got @@ ${s(t)} ${s(r)} @@)`)}}qe();Dt();var x1=class extends Error{constructor(r,s){super(`Cannot apply hunk #${r+1}`);this.hunk=s}};async function k1(e,t,r){let s=await e.lstatPromise(t),a=await r();typeof a<"u"&&(t=a),await e.lutimesPromise(t,s.atime,s.mtime)}async function mL(e,{baseFs:t=new Yn,dryRun:r=!1,version:s=null}={}){for(let a of e)if(!(a.semverExclusivity!==null&&s!==null&&!Fr.satisfiesWithPrereleases(s,a.semverExclusivity)))switch(a.type){case"file deletion":if(r){if(!t.existsSync(a.path))throw new Error(`Trying to delete a file that doesn't exist: ${a.path}`)}else await k1(t,K.dirname(a.path),async()=>{await t.unlinkPromise(a.path)});break;case"rename":if(r){if(!t.existsSync(a.fromPath))throw new Error(`Trying to move a file that doesn't exist: ${a.fromPath}`)}else await k1(t,K.dirname(a.fromPath),async()=>{await k1(t,K.dirname(a.toPath),async()=>{await k1(t,a.fromPath,async()=>(await t.movePromise(a.fromPath,a.toPath),a.toPath))})});break;case"file creation":if(r){if(t.existsSync(a.path))throw new Error(`Trying to create a file that already exists: ${a.path}`)}else{let n=a.hunk?a.hunk.parts[0].lines.join(` -`)+(a.hunk.parts[0].noNewlineAtEndOfFile?"":` -`):"";await t.mkdirpPromise(K.dirname(a.path),{chmod:493,utimes:[Ai.SAFE_TIME,Ai.SAFE_TIME]}),await t.writeFilePromise(a.path,n,{mode:a.mode}),await t.utimesPromise(a.path,Ai.SAFE_TIME,Ai.SAFE_TIME)}break;case"patch":await k1(t,a.path,async()=>{await Kvt(a,{baseFs:t,dryRun:r})});break;case"mode change":{let c=(await t.statPromise(a.path)).mode;if(Lbe(a.newMode)!==Lbe(c))continue;await k1(t,a.path,async()=>{await t.chmodPromise(a.path,a.newMode)})}break;default:Ge.assertNever(a);break}}function Lbe(e){return(e&64)>0}function Mbe(e){return e.replace(/\s+$/,"")}function Yvt(e,t){return Mbe(e)===Mbe(t)}async function Kvt({hunks:e,path:t},{baseFs:r,dryRun:s=!1}){let a=await r.statSync(t).mode,c=(await r.readFileSync(t,"utf8")).split(/\n/),f=[],p=0,h=0;for(let C of e){let S=Math.max(h,C.header.patched.start+p),x=Math.max(0,S-h),I=Math.max(0,c.length-S-C.header.original.length),T=Math.max(x,I),O=0,U=0,Y=null;for(;O<=T;){if(O<=x&&(U=S-O,Y=Ube(C,c,U),Y!==null)){O=-O;break}if(O<=I&&(U=S+O,Y=Ube(C,c,U),Y!==null))break;O+=1}if(Y===null)throw new x1(e.indexOf(C),C);f.push(Y),p+=O,h=U+C.header.original.length}if(s)return;let E=0;for(let C of f)for(let S of C)switch(S.type){case"splice":{let x=S.index+E;c.splice(x,S.numToDelete,...S.linesToInsert),E+=S.linesToInsert.length-S.numToDelete}break;case"pop":c.pop();break;case"push":c.push(S.line);break;default:Ge.assertNever(S);break}await r.writeFilePromise(t,c.join(` -`),{mode:a})}function Ube(e,t,r){let s=[];for(let a of e.parts)switch(a.type){case"context":case"deletion":{for(let n of a.lines){let c=t[r];if(c==null||!Yvt(c,n))return null;r+=1}a.type==="deletion"&&(s.push({type:"splice",index:r-a.lines.length,numToDelete:a.lines.length,linesToInsert:[]}),a.noNewlineAtEndOfFile&&s.push({type:"push",line:""}))}break;case"insertion":s.push({type:"splice",index:r,numToDelete:0,linesToInsert:a.lines}),a.noNewlineAtEndOfFile&&s.push({type:"pop"});break;default:Ge.assertNever(a.type);break}return s}var zvt=/^builtin<([^>]+)>$/;function Q1(e,t){let{protocol:r,source:s,selector:a,params:n}=j.parseRange(e);if(r!=="patch:")throw new Error("Invalid patch range");if(s===null)throw new Error("Patch locators must explicitly define their source");let c=a?a.split(/&/).map(E=>fe.toPortablePath(E)):[],f=n&&typeof n.locator=="string"?j.parseLocator(n.locator):null,p=n&&typeof n.version=="string"?n.version:null,h=t(s);return{parentLocator:f,sourceItem:h,patchPaths:c,sourceVersion:p}}function yL(e){return e.range.startsWith("patch:")}function Qg(e){return e.reference.startsWith("patch:")}function $b(e){let{sourceItem:t,...r}=Q1(e.range,j.parseDescriptor);return{...r,sourceDescriptor:t}}function eP(e){let{sourceItem:t,...r}=Q1(e.reference,j.parseLocator);return{...r,sourceLocator:t}}function Zvt(e){let{sourceItem:t}=Q1(e.range,j.parseDescriptor);return t}function Xvt(e){let{sourceItem:t}=Q1(e.reference,j.parseLocator);return t}function lJ(e){if(!yL(e))return e;let{sourceItem:t}=Q1(e.range,j.parseDescriptor);return t}function EL(e){if(!Qg(e))return e;let{sourceItem:t}=Q1(e.reference,j.parseLocator);return t}function _be({parentLocator:e,sourceItem:t,patchPaths:r,sourceVersion:s,patchHash:a},n){let c=e!==null?{locator:j.stringifyLocator(e)}:{},f=typeof s<"u"?{version:s}:{},p=typeof a<"u"?{hash:a}:{};return j.makeRange({protocol:"patch:",source:n(t),selector:r.join("&"),params:{...f,...p,...c}})}function IL(e,{parentLocator:t,sourceDescriptor:r,patchPaths:s}){return j.makeDescriptor(e,_be({parentLocator:t,sourceItem:r,patchPaths:s},j.stringifyDescriptor))}function cJ(e,{parentLocator:t,sourcePackage:r,patchPaths:s,patchHash:a}){return j.makeLocator(e,_be({parentLocator:t,sourceItem:r,sourceVersion:r.version,patchPaths:s,patchHash:a},j.stringifyLocator))}function Hbe({onAbsolute:e,onRelative:t,onProject:r,onBuiltin:s},a){let n=a.lastIndexOf("!");n!==-1&&(a=a.slice(n+1));let c=a.match(zvt);return c!==null?s(c[1]):a.startsWith("~/")?r(a.slice(2)):K.isAbsolute(a)?e(a):t(a)}function jbe(e){let t=e.lastIndexOf("!");return{optional:(t!==-1?new Set(e.slice(0,t).split(/!/)):new Set).has("optional")}}function uJ(e){return Hbe({onAbsolute:()=>!1,onRelative:()=>!0,onProject:()=>!1,onBuiltin:()=>!1},e)}async function tP(e,t,r){let s=e!==null?await r.fetcher.fetch(e,r):null,a=s&&s.localPath?{packageFs:new bn(vt.root),prefixPath:K.relative(vt.root,s.localPath)}:s;s&&s!==a&&s.releaseFs&&s.releaseFs();let n=await Ge.releaseAfterUseAsync(async()=>await Promise.all(t.map(async c=>{let f=jbe(c),p=await Hbe({onAbsolute:async h=>await le.readFilePromise(h,"utf8"),onRelative:async h=>{if(a===null)throw new Error("Assertion failed: The parent locator should have been fetched");return await a.packageFs.readFilePromise(K.join(a.prefixPath,h),"utf8")},onProject:async h=>await le.readFilePromise(K.join(r.project.cwd,h),"utf8"),onBuiltin:async h=>await r.project.configuration.firstHook(E=>E.getBuiltinPatch,r.project,h)},c);return{...f,source:p}})));for(let c of n)typeof c.source=="string"&&(c.source=c.source.replace(/\r\n?/g,` -`));return n}async function fJ(e,{cache:t,project:r}){let s=r.storedPackages.get(e.locatorHash);if(typeof s>"u")throw new Error("Assertion failed: Expected the package to be registered");let a=EL(e),n=r.storedChecksums,c=new ki,f=await le.mktempPromise(),p=K.join(f,"source"),h=K.join(f,"user"),E=K.join(f,".yarn-patch.json"),C=r.configuration.makeFetcher(),S=[];try{let x,I;if(e.locatorHash===a.locatorHash){let T=await C.fetch(e,{cache:t,project:r,fetcher:C,checksums:n,report:c});S.push(()=>T.releaseFs?.()),x=T,I=T}else x=await C.fetch(e,{cache:t,project:r,fetcher:C,checksums:n,report:c}),S.push(()=>x.releaseFs?.()),I=await C.fetch(e,{cache:t,project:r,fetcher:C,checksums:n,report:c}),S.push(()=>I.releaseFs?.());await Promise.all([le.copyPromise(p,x.prefixPath,{baseFs:x.packageFs}),le.copyPromise(h,I.prefixPath,{baseFs:I.packageFs}),le.writeJsonPromise(E,{locator:j.stringifyLocator(e),version:s.version})])}finally{for(let x of S)x()}return le.detachTemp(f),h}async function AJ(e,t){let r=fe.fromPortablePath(e).replace(/\\/g,"/"),s=fe.fromPortablePath(t).replace(/\\/g,"/"),{stdout:a,stderr:n}=await qr.execvp("git",["-c","core.safecrlf=false","diff","--src-prefix=a/","--dst-prefix=b/","--ignore-cr-at-eol","--full-index","--no-index","--no-renames","--text",r,s],{cwd:fe.toPortablePath(process.cwd()),env:{...process.env,GIT_CONFIG_NOSYSTEM:"1",HOME:"",XDG_CONFIG_HOME:"",USERPROFILE:""}});if(n.length>0)throw new Error(`Unable to diff directories. Make sure you have a recent version of 'git' available in PATH. -The following error was reported by 'git': -${n}`);let c=r.startsWith("/")?f=>f.slice(1):f=>f;return a.replace(new RegExp(`(a|b)(${Ge.escapeRegExp(`/${c(r)}/`)})`,"g"),"$1/").replace(new RegExp(`(a|b)${Ge.escapeRegExp(`/${c(s)}/`)}`,"g"),"$1/").replace(new RegExp(Ge.escapeRegExp(`${r}/`),"g"),"").replace(new RegExp(Ge.escapeRegExp(`${s}/`),"g"),"")}function pJ(e,t){let r=[];for(let{source:s}of e){if(s===null)continue;let a=Xb(s);for(let n of a){let{semverExclusivity:c,...f}=n;c!==null&&t!==null&&!Fr.satisfiesWithPrereleases(t,c)||r.push(JSON.stringify(f))}}return Ln.makeHash(`${3}`,...r).slice(0,6)}qe();function Gbe(e,{configuration:t,report:r}){for(let s of e.parts)for(let a of s.lines)switch(s.type){case"context":r.reportInfo(null,` ${pe.pretty(t,a,"grey")}`);break;case"deletion":r.reportError(28,`- ${pe.pretty(t,a,pe.Type.REMOVED)}`);break;case"insertion":r.reportError(28,`+ ${pe.pretty(t,a,pe.Type.ADDED)}`);break;default:Ge.assertNever(s.type)}}var rP=class{supports(t,r){return!!Qg(t)}getLocalPath(t,r){return null}async fetch(t,r){let s=r.checksums.get(t.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(t,s,{onHit:()=>r.report.reportCacheHit(t),onMiss:()=>r.report.reportCacheMiss(t,`${j.prettyLocator(r.project.configuration,t)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.patchPackage(t,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:j.getIdentVendorPath(t),localPath:this.getLocalPath(t,r),checksum:c}}async patchPackage(t,r){let{parentLocator:s,sourceLocator:a,sourceVersion:n,patchPaths:c}=eP(t),f=await tP(s,c,r),p=await le.mktempPromise(),h=K.join(p,"current.zip"),E=await r.fetcher.fetch(a,r),C=j.getIdentVendorPath(t),S=new ps(h,{create:!0,level:r.project.configuration.get("compressionLevel")});await Ge.releaseAfterUseAsync(async()=>{await S.copyPromise(C,E.prefixPath,{baseFs:E.packageFs,stableSort:!0})},E.releaseFs),S.saveAndClose();for(let{source:x,optional:I}of f){if(x===null)continue;let T=new ps(h,{level:r.project.configuration.get("compressionLevel")}),O=new bn(K.resolve(vt.root,C),{baseFs:T});try{await mL(Xb(x),{baseFs:O,version:n})}catch(U){if(!(U instanceof x1))throw U;let Y=r.project.configuration.get("enableInlineHunks"),te=!Y&&!I?" (set enableInlineHunks for details)":"",ie=`${j.prettyLocator(r.project.configuration,t)}: ${U.message}${te}`,ue=ae=>{Y&&Gbe(U.hunk,{configuration:r.project.configuration,report:ae})};if(T.discardAndClose(),I){r.report.reportWarningOnce(66,ie,{reportExtra:ue});continue}else throw new _t(66,ie,ue)}T.saveAndClose()}return new ps(h,{level:r.project.configuration.get("compressionLevel")})}};qe();var nP=class{supportsDescriptor(t,r){return!!yL(t)}supportsLocator(t,r){return!!Qg(t)}shouldPersistResolution(t,r){return!1}bindDescriptor(t,r,s){let{patchPaths:a}=$b(t);return a.every(n=>!uJ(n))?t:j.bindDescriptor(t,{locator:j.stringifyLocator(r)})}getResolutionDependencies(t,r){let{sourceDescriptor:s}=$b(t);return{sourceDescriptor:r.project.configuration.normalizeDependency(s)}}async getCandidates(t,r,s){if(!s.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{parentLocator:a,patchPaths:n}=$b(t),c=await tP(a,n,s.fetchOptions),f=r.sourceDescriptor;if(typeof f>"u")throw new Error("Assertion failed: The dependency should have been resolved");let p=pJ(c,f.version);return[cJ(t,{parentLocator:a,sourcePackage:f,patchPaths:n,patchHash:p})]}async getSatisfying(t,r,s,a){let[n]=await this.getCandidates(t,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(t,r){let{sourceLocator:s}=eP(t);return{...await r.resolver.resolve(s,r),...t}}};qe();Dt();Vt();var R1=class extends At{constructor(){super(...arguments);this.save=he.Boolean("-s,--save",!1,{description:"Add the patch to your resolution entries"});this.patchFolder=he.String()}static{this.paths=[["patch-commit"]]}static{this.usage=at.Usage({description:"generate a patch out of a directory",details:"\n By default, this will print a patchfile on stdout based on the diff between the folder passed in and the original version of the package. Such file is suitable for consumption with the `patch:` protocol.\n\n With the `-s,--save` option set, the patchfile won't be printed on stdout anymore and will instead be stored within a local file (by default kept within `.yarn/patches`, but configurable via the `patchFolder` setting). A `resolutions` entry will also be added to your top-level manifest, referencing the patched package via the `patch:` protocol.\n\n Note that only folders generated by `yarn patch` are accepted as valid input for `yarn patch-commit`.\n "})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let n=K.resolve(this.context.cwd,fe.toPortablePath(this.patchFolder)),c=K.join(n,"../source"),f=K.join(n,"../.yarn-patch.json");if(!le.existsSync(c))throw new st("The argument folder didn't get created by 'yarn patch'");let p=await AJ(c,n),h=await le.readJsonPromise(f),E=j.parseLocator(h.locator,!0);if(!s.storedPackages.has(E.locatorHash))throw new st("No package found in the project for the given locator");if(!this.save){this.context.stdout.write(p);return}let C=r.get("patchFolder"),S=K.join(C,`${j.slugifyLocator(E)}.patch`);await le.mkdirPromise(C,{recursive:!0}),await le.writeFilePromise(S,p);let x=[],I=new Map;for(let T of s.storedPackages.values()){if(j.isVirtualLocator(T))continue;let O=T.dependencies.get(E.identHash);if(!O)continue;let U=j.ensureDevirtualizedDescriptor(O),Y=lJ(U),te=s.storedResolutions.get(Y.descriptorHash);if(!te)throw new Error("Assertion failed: Expected the resolution to have been registered");if(!s.storedPackages.get(te))throw new Error("Assertion failed: Expected the package to have been registered");let ue=s.tryWorkspaceByLocator(T);if(ue)x.push(ue);else{let ae=s.originalPackages.get(T.locatorHash);if(!ae)throw new Error("Assertion failed: Expected the original package to have been registered");let de=ae.dependencies.get(O.identHash);if(!de)throw new Error("Assertion failed: Expected the original dependency to have been registered");I.set(de.descriptorHash,de)}}for(let T of x)for(let O of Ut.hardDependencies){let U=T.manifest[O].get(E.identHash);if(!U)continue;let Y=IL(U,{parentLocator:null,sourceDescriptor:j.convertLocatorToDescriptor(E),patchPaths:[K.join(Er.home,K.relative(s.cwd,S))]});T.manifest[O].set(U.identHash,Y)}for(let T of I.values()){let O=IL(T,{parentLocator:null,sourceDescriptor:j.convertLocatorToDescriptor(E),patchPaths:[K.join(Er.home,K.relative(s.cwd,S))]});s.topLevelWorkspace.manifest.resolutions.push({pattern:{descriptor:{fullName:j.stringifyIdent(O),description:T.range}},reference:O.range})}await s.persist()}};qe();Dt();Vt();var T1=class extends At{constructor(){super(...arguments);this.update=he.Boolean("-u,--update",!1,{description:"Reapply local patches that already apply to this packages"});this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.package=he.String()}static{this.paths=[["patch"]]}static{this.usage=at.Usage({description:"prepare a package for patching",details:"\n This command will cause a package to be extracted in a temporary directory intended to be editable at will.\n\n Once you're done with your changes, run `yarn patch-commit -s path` (with `path` being the temporary directory you received) to generate a patchfile and register it into your top-level manifest via the `patch:` protocol. Run `yarn patch-commit -h` for more details.\n\n Calling the command when you already have a patch won't import it by default (in other words, the default behavior is to reset existing patches). However, adding the `-u,--update` flag will import any current patch.\n "})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Jr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let c=j.parseLocator(this.package);if(c.reference==="unknown"){let f=Ge.mapAndFilter([...s.storedPackages.values()],p=>p.identHash!==c.identHash?Ge.mapAndFilter.skip:j.isVirtualLocator(p)?Ge.mapAndFilter.skip:Qg(p)!==this.update?Ge.mapAndFilter.skip:p);if(f.length===0)throw new st("No package found in the project for the given locator");if(f.length>1)throw new st(`Multiple candidate packages found; explicitly choose one of them (use \`yarn why \` to get more information as to who depends on them): -${f.map(p=>` -- ${j.prettyLocator(r,p)}`).join("")}`);c=f[0]}if(!s.storedPackages.has(c.locatorHash))throw new st("No package found in the project for the given locator");await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async f=>{let p=EL(c),h=await fJ(c,{cache:n,project:s});f.reportJson({locator:j.stringifyLocator(p),path:fe.fromPortablePath(h)});let E=this.update?" along with its current modifications":"";f.reportInfo(0,`Package ${j.prettyLocator(r,p)} got extracted with success${E}!`),f.reportInfo(0,`You can now edit the following folder: ${pe.pretty(r,fe.fromPortablePath(h),"magenta")}`),f.reportInfo(0,`Once you are done run ${pe.pretty(r,`yarn patch-commit -s ${process.platform==="win32"?'"':""}${fe.fromPortablePath(h)}${process.platform==="win32"?'"':""}`,"cyan")} and Yarn will store a patchfile based on your changes.`)})}};var $vt={configuration:{enableInlineHunks:{description:"If true, the installs will print unmatched patch hunks",type:"BOOLEAN",default:!1},patchFolder:{description:"Folder where the patch files must be written",type:"ABSOLUTE_PATH",default:"./.yarn/patches"}},commands:[R1,T1],fetchers:[rP],resolvers:[nP]},eSt=$vt;var mJ={};Yt(mJ,{PnpmLinker:()=>iP,default:()=>oSt});qe();Dt();Vt();var iP=class{getCustomDataKey(){return JSON.stringify({name:"PnpmLinker",version:3})}supportsPackage(t,r){return this.isEnabled(r)}async findPackageLocation(t,r){if(!this.isEnabled(r))throw new Error("Assertion failed: Expected the pnpm linker to be enabled");let s=this.getCustomDataKey(),a=r.project.linkersCustomData.get(s);if(!a)throw new st(`The project in ${pe.pretty(r.project.configuration,`${r.project.cwd}/package.json`,pe.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let n=a.pathsByLocator.get(t.locatorHash);if(typeof n>"u")throw new st(`Couldn't find ${j.prettyLocator(r.project.configuration,t)} in the currently installed pnpm map - running an install might help`);return n.packageLocation}async findPackageLocator(t,r){if(!this.isEnabled(r))return null;let s=this.getCustomDataKey(),a=r.project.linkersCustomData.get(s);if(!a)throw new st(`The project in ${pe.pretty(r.project.configuration,`${r.project.cwd}/package.json`,pe.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let n=t.match(/(^.*\/node_modules\/(@[^/]*\/)?[^/]+)(\/.*$)/);if(n){let p=a.locatorByPath.get(n[1]);if(p)return p}let c=t,f=t;do{f=c,c=K.dirname(f);let p=a.locatorByPath.get(f);if(p)return p}while(c!==f);return null}makeInstaller(t){return new gJ(t)}isEnabled(t){return t.project.configuration.get("nodeLinker")==="pnpm"}},gJ=class{constructor(t){this.opts=t;this.asyncActions=new Ge.AsyncActions(10);this.customData={pathsByLocator:new Map,locatorByPath:new Map};this.indexFolderPromise=$P(le,{indexPath:K.join(t.project.configuration.get("globalFolder"),"index")})}attachCustomData(t){}async installPackage(t,r,s){switch(t.linkType){case"SOFT":return this.installPackageSoft(t,r,s);case"HARD":return this.installPackageHard(t,r,s)}throw new Error("Assertion failed: Unsupported package link type")}async installPackageSoft(t,r,s){let a=K.resolve(r.packageFs.getRealPath(),r.prefixPath),n=this.opts.project.tryWorkspaceByLocator(t)?K.join(a,Er.nodeModules):null;return this.customData.pathsByLocator.set(t.locatorHash,{packageLocation:a,dependenciesLocation:n}),{packageLocation:a,buildRequest:null}}async installPackageHard(t,r,s){let a=rSt(t,{project:this.opts.project}),n=a.packageLocation;this.customData.locatorByPath.set(n,j.stringifyLocator(t)),this.customData.pathsByLocator.set(t.locatorHash,a),s.holdFetchResult(this.asyncActions.set(t.locatorHash,async()=>{await le.mkdirPromise(n,{recursive:!0}),await le.copyPromise(n,r.prefixPath,{baseFs:r.packageFs,overwrite:!1,linkStrategy:{type:"HardlinkFromIndex",indexPath:await this.indexFolderPromise,autoRepair:!0}})}));let f=j.isVirtualLocator(t)?j.devirtualizeLocator(t):t,p={manifest:await Ut.tryFind(r.prefixPath,{baseFs:r.packageFs})??new Ut,misc:{hasBindingGyp:dA.hasBindingGyp(r)}},h=this.opts.project.getDependencyMeta(f,t.version),E=dA.extractBuildRequest(t,p,h,{configuration:this.opts.project.configuration});return{packageLocation:n,buildRequest:E}}async attachInternalDependencies(t,r){if(this.opts.project.configuration.get("nodeLinker")!=="pnpm"||!qbe(t,{project:this.opts.project}))return;let s=this.customData.pathsByLocator.get(t.locatorHash);if(typeof s>"u")throw new Error(`Assertion failed: Expected the package to have been registered (${j.stringifyLocator(t)})`);let{dependenciesLocation:a}=s;a&&this.asyncActions.reduce(t.locatorHash,async n=>{await le.mkdirPromise(a,{recursive:!0});let c=await nSt(a),f=new Map(c),p=[n],h=(C,S)=>{let x=S;qbe(S,{project:this.opts.project})||(this.opts.report.reportWarningOnce(0,"The pnpm linker doesn't support providing different versions to workspaces' peer dependencies"),x=j.devirtualizeLocator(S));let I=this.customData.pathsByLocator.get(x.locatorHash);if(typeof I>"u")throw new Error(`Assertion failed: Expected the package to have been registered (${j.stringifyLocator(S)})`);let T=j.stringifyIdent(C),O=K.join(a,T),U=K.relative(K.dirname(O),I.packageLocation),Y=f.get(T);f.delete(T),p.push(Promise.resolve().then(async()=>{if(Y){if(Y.isSymbolicLink()&&await le.readlinkPromise(O)===U)return;await le.removePromise(O)}await le.mkdirpPromise(K.dirname(O)),process.platform=="win32"&&this.opts.project.configuration.get("winLinkType")==="junctions"?await le.symlinkPromise(I.packageLocation,O,"junction"):await le.symlinkPromise(U,O)}))},E=!1;for(let[C,S]of r)C.identHash===t.identHash&&(E=!0),h(C,S);!E&&!this.opts.project.tryWorkspaceByLocator(t)&&h(j.convertLocatorToDescriptor(t),t),p.push(iSt(a,f)),await Promise.all(p)})}async attachExternalDependents(t,r){throw new Error("External dependencies haven't been implemented for the pnpm linker")}async finalizeInstall(){let t=Wbe(this.opts.project);if(this.opts.project.configuration.get("nodeLinker")!=="pnpm")await le.removePromise(t);else{let r;try{r=new Set(await le.readdirPromise(t))}catch{r=new Set}for(let{dependenciesLocation:s}of this.customData.pathsByLocator.values()){if(!s)continue;let a=K.contains(t,s);if(a===null)continue;let[n]=a.split(K.sep);r.delete(n)}await Promise.all([...r].map(async s=>{await le.removePromise(K.join(t,s))}))}return await this.asyncActions.wait(),await dJ(t),this.opts.project.configuration.get("nodeLinker")!=="node-modules"&&await dJ(tSt(this.opts.project)),{customData:this.customData}}};function tSt(e){return K.join(e.cwd,Er.nodeModules)}function Wbe(e){return e.configuration.get("pnpmStoreFolder")}function rSt(e,{project:t}){let r=j.slugifyLocator(e),s=Wbe(t),a=K.join(s,r,"package"),n=K.join(s,r,Er.nodeModules);return{packageLocation:a,dependenciesLocation:n}}function qbe(e,{project:t}){return!j.isVirtualLocator(e)||!t.tryWorkspaceByLocator(e)}async function nSt(e){let t=new Map,r=[];try{r=await le.readdirPromise(e,{withFileTypes:!0})}catch(s){if(s.code!=="ENOENT")throw s}try{for(let s of r)if(!s.name.startsWith("."))if(s.name.startsWith("@")){let a=await le.readdirPromise(K.join(e,s.name),{withFileTypes:!0});if(a.length===0)t.set(s.name,s);else for(let n of a)t.set(`${s.name}/${n.name}`,n)}else t.set(s.name,s)}catch(s){if(s.code!=="ENOENT")throw s}return t}async function iSt(e,t){let r=[],s=new Set;for(let a of t.keys()){r.push(le.removePromise(K.join(e,a)));let n=j.tryParseIdent(a)?.scope;n&&s.add(`@${n}`)}return Promise.all(r).then(()=>Promise.all([...s].map(a=>dJ(K.join(e,a)))))}async function dJ(e){try{await le.rmdirPromise(e)}catch(t){if(t.code!=="ENOENT"&&t.code!=="ENOTEMPTY"&&t.code!=="EBUSY")throw t}}var sSt={configuration:{pnpmStoreFolder:{description:"By default, the store is stored in the 'node_modules/.store' of the project. Sometimes in CI scenario's it is convenient to store this in a different location so it can be cached and reused.",type:"ABSOLUTE_PATH",default:"./node_modules/.store"}},linkers:[iP]},oSt=sSt;var vJ={};Yt(vJ,{StageCommand:()=>F1,default:()=>mSt,stageUtils:()=>wL});qe();Dt();Vt();qe();Dt();var wL={};Yt(wL,{ActionType:()=>yJ,checkConsensus:()=>CL,expandDirectory:()=>CJ,findConsensus:()=>wJ,findVcsRoot:()=>EJ,genCommitMessage:()=>BJ,getCommitPrefix:()=>Vbe,isYarnFile:()=>IJ});Dt();var yJ=(n=>(n[n.CREATE=0]="CREATE",n[n.DELETE=1]="DELETE",n[n.ADD=2]="ADD",n[n.REMOVE=3]="REMOVE",n[n.MODIFY=4]="MODIFY",n))(yJ||{});async function EJ(e,{marker:t}){do if(!le.existsSync(K.join(e,t)))e=K.dirname(e);else return e;while(e!=="/");return null}function IJ(e,{roots:t,names:r}){if(r.has(K.basename(e)))return!0;do if(!t.has(e))e=K.dirname(e);else return!0;while(e!=="/");return!1}function CJ(e){let t=[],r=[e];for(;r.length>0;){let s=r.pop(),a=le.readdirSync(s);for(let n of a){let c=K.resolve(s,n);le.lstatSync(c).isDirectory()?r.push(c):t.push(c)}}return t}function CL(e,t){let r=0,s=0;for(let a of e)a!=="wip"&&(t.test(a)?r+=1:s+=1);return r>=s}function wJ(e){let t=CL(e,/^(\w\(\w+\):\s*)?\w+s/),r=CL(e,/^(\w\(\w+\):\s*)?[A-Z]/),s=CL(e,/^\w\(\w+\):/);return{useThirdPerson:t,useUpperCase:r,useComponent:s}}function Vbe(e){return e.useComponent?"chore(yarn): ":""}var aSt=new Map([[0,"create"],[1,"delete"],[2,"add"],[3,"remove"],[4,"update"]]);function BJ(e,t){let r=Vbe(e),s=[],a=t.slice().sort((n,c)=>n[0]-c[0]);for(;a.length>0;){let[n,c]=a.shift(),f=aSt.get(n);e.useUpperCase&&s.length===0&&(f=`${f[0].toUpperCase()}${f.slice(1)}`),e.useThirdPerson&&(f+="s");let p=[c];for(;a.length>0&&a[0][0]===n;){let[,E]=a.shift();p.push(E)}p.sort();let h=p.shift();p.length===1?h+=" (and one other)":p.length>1&&(h+=` (and ${p.length} others)`),s.push(`${f} ${h}`)}return`${r}${s.join(", ")}`}var lSt="Commit generated via `yarn stage`",cSt=11;async function Ybe(e){let{code:t,stdout:r}=await qr.execvp("git",["log","-1","--pretty=format:%H"],{cwd:e});return t===0?r.trim():null}async function uSt(e,t){let r=[],s=t.filter(h=>K.basename(h.path)==="package.json");for(let{action:h,path:E}of s){let C=K.relative(e,E);if(h===4){let S=await Ybe(e),{stdout:x}=await qr.execvp("git",["show",`${S}:${C}`],{cwd:e,strict:!0}),I=await Ut.fromText(x),T=await Ut.fromFile(E),O=new Map([...T.dependencies,...T.devDependencies]),U=new Map([...I.dependencies,...I.devDependencies]);for(let[Y,te]of U){let ie=j.stringifyIdent(te),ue=O.get(Y);ue?ue.range!==te.range&&r.push([4,`${ie} to ${ue.range}`]):r.push([3,ie])}for(let[Y,te]of O)U.has(Y)||r.push([2,j.stringifyIdent(te)])}else if(h===0){let S=await Ut.fromFile(E);S.name?r.push([0,j.stringifyIdent(S.name)]):r.push([0,"a package"])}else if(h===1){let S=await Ybe(e),{stdout:x}=await qr.execvp("git",["show",`${S}:${C}`],{cwd:e,strict:!0}),I=await Ut.fromText(x);I.name?r.push([1,j.stringifyIdent(I.name)]):r.push([1,"a package"])}else throw new Error("Assertion failed: Unsupported action type")}let{code:a,stdout:n}=await qr.execvp("git",["log",`-${cSt}`,"--pretty=format:%s"],{cwd:e}),c=a===0?n.split(/\n/g).filter(h=>h!==""):[],f=wJ(c);return BJ(f,r)}var fSt={0:[" A ","?? "],4:[" M "],1:[" D "]},ASt={0:["A "],4:["M "],1:["D "]},Kbe={async findRoot(e){return await EJ(e,{marker:".git"})},async filterChanges(e,t,r,s){let{stdout:a}=await qr.execvp("git",["status","-s"],{cwd:e,strict:!0}),n=a.toString().split(/\n/g),c=s?.staged?ASt:fSt;return[].concat(...n.map(p=>{if(p==="")return[];let h=p.slice(0,3),E=K.resolve(e,p.slice(3));if(!s?.staged&&h==="?? "&&p.endsWith("/"))return CJ(E).map(C=>({action:0,path:C}));{let S=[0,4,1].find(x=>c[x].includes(h));return S!==void 0?[{action:S,path:E}]:[]}})).filter(p=>IJ(p.path,{roots:t,names:r}))},async genCommitMessage(e,t){return await uSt(e,t)},async makeStage(e,t){let r=t.map(s=>fe.fromPortablePath(s.path));await qr.execvp("git",["add","--",...r],{cwd:e,strict:!0})},async makeCommit(e,t,r){let s=t.map(a=>fe.fromPortablePath(a.path));await qr.execvp("git",["add","-N","--",...s],{cwd:e,strict:!0}),await qr.execvp("git",["commit","-m",`${r} - -${lSt} -`,"--",...s],{cwd:e,strict:!0})},async makeReset(e,t){let r=t.map(s=>fe.fromPortablePath(s.path));await qr.execvp("git",["reset","HEAD","--",...r],{cwd:e,strict:!0})}};var pSt=[Kbe],F1=class extends At{constructor(){super(...arguments);this.commit=he.Boolean("-c,--commit",!1,{description:"Commit the staged files"});this.reset=he.Boolean("-r,--reset",!1,{description:"Remove all files from the staging area"});this.dryRun=he.Boolean("-n,--dry-run",!1,{description:"Print the commit message and the list of modified files without staging / committing"});this.update=he.Boolean("-u,--update",!1,{hidden:!0})}static{this.paths=[["stage"]]}static{this.usage=at.Usage({description:"add all yarn files to your vcs",details:"\n This command will add to your staging area the files belonging to Yarn (typically any modified `package.json` and `.yarnrc.yml` files, but also linker-generated files, cache data, etc). It will take your ignore list into account, so the cache files won't be added if the cache is ignored in a `.gitignore` file (assuming you use Git).\n\n Running `--reset` will instead remove them from the staging area (the changes will still be there, but won't be committed until you stage them back).\n\n Since the staging area is a non-existent concept in Mercurial, Yarn will always create a new commit when running this command on Mercurial repositories. You can get this behavior when using Git by using the `--commit` flag which will directly create a commit.\n ",examples:[["Adds all modified project files to the staging area","yarn stage"],["Creates a new commit containing all modified project files","yarn stage --commit"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Rt.find(r,this.context.cwd),{driver:a,root:n}=await hSt(s.cwd),c=[r.get("cacheFolder"),r.get("globalFolder"),r.get("virtualFolder"),r.get("yarnPath")];await r.triggerHook(C=>C.populateYarnPaths,s,C=>{c.push(C)});let f=new Set;for(let C of c)for(let S of gSt(n,C))f.add(S);let p=new Set([r.get("rcFilename"),Er.lockfile,Er.manifest]),h=await a.filterChanges(n,f,p),E=await a.genCommitMessage(n,h);if(this.dryRun)if(this.commit)this.context.stdout.write(`${E} -`);else for(let C of h)this.context.stdout.write(`${fe.fromPortablePath(C.path)} -`);else if(this.reset){let C=await a.filterChanges(n,f,p,{staged:!0});C.length===0?this.context.stdout.write("No staged changes found!"):await a.makeReset(n,C)}else h.length===0?this.context.stdout.write("No changes found!"):this.commit?await a.makeCommit(n,h,E):(await a.makeStage(n,h),this.context.stdout.write(E))}};async function hSt(e){let t=null,r=null;for(let s of pSt)if((r=await s.findRoot(e))!==null){t=s;break}if(t===null||r===null)throw new st("No stage driver has been found for your current project");return{driver:t,root:r}}function gSt(e,t){let r=[];if(t===null)return r;for(;;){(t===e||t.startsWith(`${e}/`))&&r.push(t);let s;try{s=le.statSync(t)}catch{break}if(s.isSymbolicLink())t=K.resolve(K.dirname(t),le.readlinkSync(t));else break}return r}var dSt={commands:[F1]},mSt=dSt;var SJ={};Yt(SJ,{default:()=>SSt});qe();qe();Dt();var Zbe=et(pi());qe();var Jbe=et(Rq()),ySt="e8e1bd300d860104bb8c58453ffa1eb4",ESt="OFCNCOG2CU",zbe=async(e,t)=>{let r=j.stringifyIdent(e),a=ISt(t).initIndex("npm-search");try{return(await a.getObject(r,{attributesToRetrieve:["types"]})).types?.ts==="definitely-typed"}catch{return!1}},ISt=e=>(0,Jbe.default)(ESt,ySt,{requester:{async send(r){try{let s=await nn.request(r.url,r.data||null,{configuration:e,headers:r.headers});return{content:s.body,isTimedOut:!1,status:s.statusCode}}catch(s){return{content:s.response.body,isTimedOut:!1,status:s.response.statusCode}}}}});var Xbe=e=>e.scope?`${e.scope}__${e.name}`:`${e.name}`,CSt=async(e,t,r,s)=>{if(r.scope==="types")return;let{project:a}=e,{configuration:n}=a;if(!(n.get("tsEnableAutoTypes")??(le.existsSync(K.join(e.cwd,"tsconfig.json"))||le.existsSync(K.join(a.cwd,"tsconfig.json")))))return;let f=n.makeResolver(),p={project:a,resolver:f,report:new ki};if(!await zbe(r,n))return;let E=Xbe(r),C=j.parseRange(r.range).selector;if(!Fr.validRange(C)){let O=n.normalizeDependency(r),U=await f.getCandidates(O,{},p);C=j.parseRange(U[0].reference).selector}let S=Zbe.default.coerce(C);if(S===null)return;let x=`${$u.Modifier.CARET}${S.major}`,I=j.makeDescriptor(j.makeIdent("types",E),x),T=Ge.mapAndFind(a.workspaces,O=>{let U=O.manifest.dependencies.get(r.identHash)?.descriptorHash,Y=O.manifest.devDependencies.get(r.identHash)?.descriptorHash;if(U!==r.descriptorHash&&Y!==r.descriptorHash)return Ge.mapAndFind.skip;let te=[];for(let ie of Ut.allDependencies){let ue=O.manifest[ie].get(I.identHash);typeof ue>"u"||te.push([ie,ue])}return te.length===0?Ge.mapAndFind.skip:te});if(typeof T<"u")for(let[O,U]of T)e.manifest[O].set(U.identHash,U);else{try{let O=n.normalizeDependency(I);if((await f.getCandidates(O,{},p)).length===0)return}catch{return}e.manifest[$u.Target.DEVELOPMENT].set(I.identHash,I)}},wSt=async(e,t,r)=>{if(r.scope==="types")return;let{project:s}=e,{configuration:a}=s;if(!(a.get("tsEnableAutoTypes")??(le.existsSync(K.join(e.cwd,"tsconfig.json"))||le.existsSync(K.join(s.cwd,"tsconfig.json")))))return;let c=Xbe(r),f=j.makeIdent("types",c);for(let p of Ut.allDependencies)typeof e.manifest[p].get(f.identHash)>"u"||e.manifest[p].delete(f.identHash)},BSt=(e,t)=>{t.publishConfig&&t.publishConfig.typings&&(t.typings=t.publishConfig.typings),t.publishConfig&&t.publishConfig.types&&(t.types=t.publishConfig.types)},vSt={configuration:{tsEnableAutoTypes:{description:"Whether Yarn should auto-install @types/ dependencies on 'yarn add'",type:"BOOLEAN",isNullable:!0,default:null}},hooks:{afterWorkspaceDependencyAddition:CSt,afterWorkspaceDependencyRemoval:wSt,beforeWorkspacePacking:BSt}},SSt=vSt;var kJ={};Yt(kJ,{VersionApplyCommand:()=>M1,VersionCheckCommand:()=>U1,VersionCommand:()=>_1,default:()=>kSt,versionUtils:()=>L1});qe();qe();Vt();var L1={};Yt(L1,{Decision:()=>N1,applyPrerelease:()=>$be,applyReleases:()=>xJ,applyStrategy:()=>sP,clearVersionFiles:()=>DJ,getUndecidedDependentWorkspaces:()=>aP,getUndecidedWorkspaces:()=>BL,openVersionFile:()=>O1,requireMoreDecisions:()=>bSt,resolveVersionFiles:()=>oP,suggestStrategy:()=>PJ,updateVersionFiles:()=>bJ,validateReleaseDecision:()=>Ey});qe();Dt();Bc();Vt();Jl();var QA=et(pi()),DSt=/^(>=|[~^]|)(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(-(0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(\.(0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*)?(\+[0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+)*)?$/,N1=(h=>(h.UNDECIDED="undecided",h.DECLINE="decline",h.MAJOR="major",h.MINOR="minor",h.PATCH="patch",h.PREMAJOR="premajor",h.PREMINOR="preminor",h.PREPATCH="prepatch",h.PRERELEASE="prerelease",h))(N1||{});function Ey(e){let t=QA.default.valid(e);return t||Ge.validateEnum(I4(N1,"UNDECIDED"),e)}async function oP(e,{prerelease:t=null}={}){let r=new Map,s=e.configuration.get("deferredVersionFolder");if(!le.existsSync(s))return r;let a=await le.readdirPromise(s);for(let n of a){if(!n.endsWith(".yml"))continue;let c=K.join(s,n),f=await le.readFilePromise(c,"utf8"),p=cs(f);for(let[h,E]of Object.entries(p.releases||{})){if(E==="decline")continue;let C=j.parseIdent(h),S=e.tryWorkspaceByIdent(C);if(S===null)throw new Error(`Assertion failed: Expected a release definition file to only reference existing workspaces (${K.basename(c)} references ${h})`);if(S.manifest.version===null)throw new Error(`Assertion failed: Expected the workspace to have a version (${j.prettyLocator(e.configuration,S.anchoredLocator)})`);let x=S.manifest.raw.stableVersion??S.manifest.version,I=r.get(S),T=sP(E==="prerelease"?S.manifest.version:x,Ey(E));if(T===null)throw new Error(`Assertion failed: Expected ${x} to support being bumped via strategy ${E}`);let O=typeof I<"u"?QA.default.gt(T,I)?T:I:T;r.set(S,O)}}return t&&(r=new Map([...r].map(([n,c])=>[n,$be(c,{current:n.manifest.version,prerelease:t})]))),r}async function DJ(e){let t=e.configuration.get("deferredVersionFolder");le.existsSync(t)&&await le.removePromise(t)}async function bJ(e,t){let r=new Set(t),s=e.configuration.get("deferredVersionFolder");if(!le.existsSync(s))return;let a=await le.readdirPromise(s);for(let n of a){if(!n.endsWith(".yml"))continue;let c=K.join(s,n),f=await le.readFilePromise(c,"utf8"),p=cs(f),h=p?.releases;if(h){for(let E of Object.keys(h)){let C=j.parseIdent(E),S=e.tryWorkspaceByIdent(C);(S===null||r.has(S))&&delete p.releases[E]}Object.keys(p.releases).length>0?await le.changeFilePromise(c,cl(new cl.PreserveOrdering(p))):await le.unlinkPromise(c)}}}async function O1(e,{allowEmpty:t=!1}={}){let r=e.configuration;if(r.projectCwd===null)throw new st("This command can only be run from within a Yarn project");let s=await Oa.fetchRoot(r.projectCwd),a=s!==null?await Oa.fetchBase(s,{baseRefs:r.get("changesetBaseRefs")}):null,n=s!==null?await Oa.fetchChangedFiles(s,{base:a.hash,project:e}):[],c=r.get("deferredVersionFolder"),f=n.filter(x=>K.contains(c,x)!==null);if(f.length>1)throw new st(`Your current branch contains multiple versioning files; this isn't supported: -- ${f.map(x=>fe.fromPortablePath(x)).join(` -- `)}`);let p=new Set(Ge.mapAndFilter(n,x=>{let I=e.tryWorkspaceByFilePath(x);return I===null?Ge.mapAndFilter.skip:I}));if(f.length===0&&p.size===0&&!t)return null;let h=f.length===1?f[0]:K.join(c,`${Ln.makeHash(Math.random().toString()).slice(0,8)}.yml`),E=le.existsSync(h)?await le.readFilePromise(h,"utf8"):"{}",C=cs(E),S=new Map;for(let x of C.declined||[]){let I=j.parseIdent(x),T=e.getWorkspaceByIdent(I);S.set(T,"decline")}for(let[x,I]of Object.entries(C.releases||{})){let T=j.parseIdent(x),O=e.getWorkspaceByIdent(T);S.set(O,Ey(I))}return{project:e,root:s,baseHash:a!==null?a.hash:null,baseTitle:a!==null?a.title:null,changedFiles:new Set(n),changedWorkspaces:p,releaseRoots:new Set([...p].filter(x=>x.manifest.version!==null)),releases:S,async saveAll(){let x={},I=[],T=[];for(let O of e.workspaces){if(O.manifest.version===null)continue;let U=j.stringifyIdent(O.anchoredLocator),Y=S.get(O);Y==="decline"?I.push(U):typeof Y<"u"?x[U]=Ey(Y):p.has(O)&&T.push(U)}await le.mkdirPromise(K.dirname(h),{recursive:!0}),await le.changeFilePromise(h,cl(new cl.PreserveOrdering({releases:Object.keys(x).length>0?x:void 0,declined:I.length>0?I:void 0,undecided:T.length>0?T:void 0})))}}}function bSt(e){return BL(e).size>0||aP(e).length>0}function BL(e){let t=new Set;for(let r of e.changedWorkspaces)r.manifest.version!==null&&(e.releases.has(r)||t.add(r));return t}function aP(e,{include:t=new Set}={}){let r=[],s=new Map(Ge.mapAndFilter([...e.releases],([n,c])=>c==="decline"?Ge.mapAndFilter.skip:[n.anchoredLocator.locatorHash,n])),a=new Map(Ge.mapAndFilter([...e.releases],([n,c])=>c!=="decline"?Ge.mapAndFilter.skip:[n.anchoredLocator.locatorHash,n]));for(let n of e.project.workspaces)if(!(!t.has(n)&&(a.has(n.anchoredLocator.locatorHash)||s.has(n.anchoredLocator.locatorHash)))&&n.manifest.version!==null)for(let c of Ut.hardDependencies)for(let f of n.manifest.getForScope(c).values()){let p=e.project.tryWorkspaceByDescriptor(f);p!==null&&s.has(p.anchoredLocator.locatorHash)&&r.push([n,p])}return r}function PJ(e,t){let r=QA.default.clean(t);for(let s of Object.values(N1))if(s!=="undecided"&&s!=="decline"&&QA.default.inc(e,s)===r)return s;return null}function sP(e,t){if(QA.default.valid(t))return t;if(e===null)throw new st(`Cannot apply the release strategy "${t}" unless the workspace already has a valid version`);if(!QA.default.valid(e))throw new st(`Cannot apply the release strategy "${t}" on a non-semver version (${e})`);let r=QA.default.inc(e,t);if(r===null)throw new st(`Cannot apply the release strategy "${t}" on the specified version (${e})`);return r}function xJ(e,t,{report:r,exact:s}){let a=new Map;for(let n of e.workspaces)for(let c of Ut.allDependencies)for(let f of n.manifest[c].values()){let p=e.tryWorkspaceByDescriptor(f);if(p===null||!t.has(p))continue;Ge.getArrayWithDefault(a,p).push([n,c,f.identHash])}for(let[n,c]of t){let f=n.manifest.version;n.manifest.version=c,QA.default.prerelease(c)===null?delete n.manifest.raw.stableVersion:n.manifest.raw.stableVersion||(n.manifest.raw.stableVersion=f);let p=n.manifest.name!==null?j.stringifyIdent(n.manifest.name):null;r.reportInfo(0,`${j.prettyLocator(e.configuration,n.anchoredLocator)}: Bumped to ${c}`),r.reportJson({cwd:fe.fromPortablePath(n.cwd),ident:p,oldVersion:f,newVersion:c});let h=a.get(n);if(!(typeof h>"u"))for(let[E,C,S]of h){let x=E.manifest[C].get(S);if(typeof x>"u")throw new Error("Assertion failed: The dependency should have existed");let I=x.range,T=!1;if(I.startsWith(Ii.protocol)&&(I=I.slice(Ii.protocol.length),T=!0,I===n.relativeCwd))continue;let O=I.match(DSt);if(!O){r.reportWarning(0,`Couldn't auto-upgrade range ${I} (in ${j.prettyLocator(e.configuration,E.anchoredLocator)})`);continue}let U=s?`${c}`:`${O[1]}${c}`;T&&(U=`${Ii.protocol}${U}`);let Y=j.makeDescriptor(x,U);E.manifest[C].set(S,Y)}}}var PSt=new Map([["%n",{extract:e=>e.length>=1?[e[0],e.slice(1)]:null,generate:(e=0)=>`${e+1}`}]]);function $be(e,{current:t,prerelease:r}){let s=new QA.default.SemVer(t),a=s.prerelease.slice(),n=[];s.prerelease=[],s.format()!==e&&(a.length=0);let c=!0,f=r.split(/\./g);for(let p of f){let h=PSt.get(p);if(typeof h>"u")n.push(p),a[0]===p?a.shift():c=!1;else{let E=c?h.extract(a):null;E!==null&&typeof E[0]=="number"?(n.push(h.generate(E[0])),a=E[1]):(n.push(h.generate()),c=!1)}}return s.prerelease&&(s.prerelease=[]),`${e}-${n.join(".")}`}var M1=class extends At{constructor(){super(...arguments);this.all=he.Boolean("--all",!1,{description:"Apply the deferred version changes on all workspaces"});this.dryRun=he.Boolean("--dry-run",!1,{description:"Print the versions without actually generating the package archive"});this.prerelease=he.String("--prerelease",{description:"Add a prerelease identifier to new versions",tolerateBoolean:!0});this.exact=he.Boolean("--exact",!1,{description:"Use the exact version of each package, removes any range. Useful for nightly releases where the range might match another version."});this.recursive=he.Boolean("-R,--recursive",{description:"Release the transitive workspaces as well"});this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["version","apply"]]}static{this.usage=at.Usage({category:"Release-related commands",description:"apply all the deferred version bumps at once",details:` - This command will apply the deferred version changes and remove their definitions from the repository. - - Note that if \`--prerelease\` is set, the given prerelease identifier (by default \`rc.%n\`) will be used on all new versions and the version definitions will be kept as-is. - - By default only the current workspace will be bumped, but you can configure this behavior by using one of: - - - \`--recursive\` to also apply the version bump on its dependencies - - \`--all\` to apply the version bump on all packages in the repository - - Note that this command will also update the \`workspace:\` references across all your local workspaces, thus ensuring that they keep referring to the same workspaces even after the version bump. - `,examples:[["Apply the version change to the local workspace","yarn version apply"],["Apply the version change to all the workspaces in the local workspace","yarn version apply --all"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Jr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async f=>{let p=this.prerelease?typeof this.prerelease!="boolean"?this.prerelease:"rc.%n":null,h=await oP(s,{prerelease:p}),E=new Map;if(this.all)E=h;else{let C=this.recursive?a.getRecursiveWorkspaceDependencies():[a];for(let S of C){let x=h.get(S);typeof x<"u"&&E.set(S,x)}}if(E.size===0){let C=h.size>0?" Did you want to add --all?":"";f.reportWarning(0,`The current workspace doesn't seem to require a version bump.${C}`);return}xJ(s,E,{report:f,exact:this.exact}),this.dryRun||(p||(this.all?await DJ(s):await bJ(s,[...E.keys()])),f.reportSeparator())});return this.dryRun||c.hasErrors()?c.exitCode():await s.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:n})}};qe();Dt();Vt();var vL=et(pi());var U1=class extends At{constructor(){super(...arguments);this.interactive=he.Boolean("-i,--interactive",{description:"Open an interactive interface used to set version bumps"})}static{this.paths=[["version","check"]]}static{this.usage=at.Usage({category:"Release-related commands",description:"check that all the relevant packages have been bumped",details:"\n **Warning:** This command currently requires Git.\n\n This command will check that all the packages covered by the files listed in argument have been properly bumped or declined to bump.\n\n In the case of a bump, the check will also cover transitive packages - meaning that should `Foo` be bumped, a package `Bar` depending on `Foo` will require a decision as to whether `Bar` will need to be bumped. This check doesn't cross packages that have declined to bump.\n\n In case no arguments are passed to the function, the list of modified files will be generated by comparing the HEAD against `master`.\n ",examples:[["Check whether the modified packages need a bump","yarn version check"]]})}async execute(){return this.interactive?await this.executeInteractive():await this.executeStandard()}async executeInteractive(){JC(this.context);let{Gem:r}=await Promise.resolve().then(()=>(xF(),eW)),{ScrollableItems:s}=await Promise.resolve().then(()=>(TF(),RF)),{FocusRequest:a}=await Promise.resolve().then(()=>(nW(),uwe)),{useListInput:n}=await Promise.resolve().then(()=>(QF(),fwe)),{renderForm:c}=await Promise.resolve().then(()=>(LF(),OF)),{Box:f,Text:p}=await Promise.resolve().then(()=>et(Gc())),{default:h,useCallback:E,useState:C}=await Promise.resolve().then(()=>et(gn())),S=await ze.find(this.context.cwd,this.context.plugins),{project:x,workspace:I}=await Rt.find(S,this.context.cwd);if(!I)throw new ar(x.cwd,this.context.cwd);await x.restoreInstallState();let T=await O1(x);if(T===null||T.releaseRoots.size===0)return 0;if(T.root===null)throw new st("This command can only be run on Git repositories");let O=()=>h.createElement(f,{flexDirection:"row",paddingBottom:1},h.createElement(f,{flexDirection:"column",width:60},h.createElement(f,null,h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},""),"/",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to select workspaces.")),h.createElement(f,null,h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},""),"/",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to select release strategies."))),h.createElement(f,{flexDirection:"column"},h.createElement(f,{marginLeft:1},h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to save.")),h.createElement(f,{marginLeft:1},h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to abort.")))),U=({workspace:de,active:Ae,decision:Ce,setDecision:Ee})=>{let g=de.manifest.raw.stableVersion??de.manifest.version;if(g===null)throw new Error(`Assertion failed: The version should have been set (${j.prettyLocator(S,de.anchoredLocator)})`);if(vL.default.prerelease(g)!==null)throw new Error(`Assertion failed: Prerelease identifiers shouldn't be found (${g})`);let Se=["undecided","decline","patch","minor","major"];n(Ce,Se,{active:Ae,minus:"left",plus:"right",set:Ee});let Be=Ce==="undecided"?h.createElement(p,{color:"yellow"},g):Ce==="decline"?h.createElement(p,{color:"green"},g):h.createElement(p,null,h.createElement(p,{color:"magenta"},g)," \u2192 ",h.createElement(p,{color:"green"},vL.default.valid(Ce)?Ce:vL.default.inc(g,Ce)));return h.createElement(f,{flexDirection:"column"},h.createElement(f,null,h.createElement(p,null,j.prettyLocator(S,de.anchoredLocator)," - ",Be)),h.createElement(f,null,Se.map(me=>h.createElement(f,{key:me,paddingLeft:2},h.createElement(p,null,h.createElement(r,{active:me===Ce})," ",me)))))},Y=de=>{let Ae=new Set(T.releaseRoots),Ce=new Map([...de].filter(([Ee])=>Ae.has(Ee)));for(;;){let Ee=aP({project:T.project,releases:Ce}),g=!1;if(Ee.length>0){for(let[Se]of Ee)if(!Ae.has(Se)){Ae.add(Se),g=!0;let Be=de.get(Se);typeof Be<"u"&&Ce.set(Se,Be)}}if(!g)break}return{relevantWorkspaces:Ae,relevantReleases:Ce}},te=()=>{let[de,Ae]=C(()=>new Map(T.releases)),Ce=E((Ee,g)=>{let Se=new Map(de);g!=="undecided"?Se.set(Ee,g):Se.delete(Ee);let{relevantReleases:Be}=Y(Se);Ae(Be)},[de,Ae]);return[de,Ce]},ie=({workspaces:de,releases:Ae})=>{let Ce=[];Ce.push(`${de.size} total`);let Ee=0,g=0;for(let Se of de){let Be=Ae.get(Se);typeof Be>"u"?g+=1:Be!=="decline"&&(Ee+=1)}return Ce.push(`${Ee} release${Ee===1?"":"s"}`),Ce.push(`${g} remaining`),h.createElement(p,{color:"yellow"},Ce.join(", "))},ae=await c(({useSubmit:de})=>{let[Ae,Ce]=te();de(Ae);let{relevantWorkspaces:Ee}=Y(Ae),g=new Set([...Ee].filter(ce=>!T.releaseRoots.has(ce))),[Se,Be]=C(0),me=E(ce=>{switch(ce){case a.BEFORE:Be(Se-1);break;case a.AFTER:Be(Se+1);break}},[Se,Be]);return h.createElement(f,{flexDirection:"column"},h.createElement(O,null),h.createElement(f,null,h.createElement(p,{wrap:"wrap"},"The following files have been modified in your local checkout.")),h.createElement(f,{flexDirection:"column",marginTop:1,paddingLeft:2},[...T.changedFiles].map(ce=>h.createElement(f,{key:ce},h.createElement(p,null,h.createElement(p,{color:"grey"},fe.fromPortablePath(T.root)),fe.sep,fe.relative(fe.fromPortablePath(T.root),fe.fromPortablePath(ce)))))),T.releaseRoots.size>0&&h.createElement(h.Fragment,null,h.createElement(f,{marginTop:1},h.createElement(p,{wrap:"wrap"},"Because of those files having been modified, the following workspaces may need to be released again (note that private workspaces are also shown here, because even though they won't be published, releasing them will allow us to flag their dependents for potential re-release):")),g.size>3?h.createElement(f,{marginTop:1},h.createElement(ie,{workspaces:T.releaseRoots,releases:Ae})):null,h.createElement(f,{marginTop:1,flexDirection:"column"},h.createElement(s,{active:Se%2===0,radius:1,size:2,onFocusRequest:me},[...T.releaseRoots].map(ce=>h.createElement(U,{key:ce.cwd,workspace:ce,decision:Ae.get(ce)||"undecided",setDecision:X=>Ce(ce,X)}))))),g.size>0?h.createElement(h.Fragment,null,h.createElement(f,{marginTop:1},h.createElement(p,{wrap:"wrap"},"The following workspaces depend on other workspaces that have been marked for release, and thus may need to be released as well:")),h.createElement(f,null,h.createElement(p,null,"(Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to move the focus between the workspace groups.)")),g.size>5?h.createElement(f,{marginTop:1},h.createElement(ie,{workspaces:g,releases:Ae})):null,h.createElement(f,{marginTop:1,flexDirection:"column"},h.createElement(s,{active:Se%2===1,radius:2,size:2,onFocusRequest:me},[...g].map(ce=>h.createElement(U,{key:ce.cwd,workspace:ce,decision:Ae.get(ce)||"undecided",setDecision:X=>Ce(ce,X)}))))):null)},{versionFile:T},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof ae>"u")return 1;T.releases.clear();for(let[de,Ae]of ae)T.releases.set(de,Ae);await T.saveAll()}async executeStandard(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);return await s.restoreInstallState(),(await Ot.start({configuration:r,stdout:this.context.stdout},async c=>{let f=await O1(s);if(f===null||f.releaseRoots.size===0)return;if(f.root===null)throw new st("This command can only be run on Git repositories");if(c.reportInfo(0,`Your PR was started right after ${pe.pretty(r,f.baseHash.slice(0,7),"yellow")} ${pe.pretty(r,f.baseTitle,"magenta")}`),f.changedFiles.size>0){c.reportInfo(0,"You have changed the following files since then:"),c.reportSeparator();for(let S of f.changedFiles)c.reportInfo(null,`${pe.pretty(r,fe.fromPortablePath(f.root),"gray")}${fe.sep}${fe.relative(fe.fromPortablePath(f.root),fe.fromPortablePath(S))}`)}let p=!1,h=!1,E=BL(f);if(E.size>0){p||c.reportSeparator();for(let S of E)c.reportError(0,`${j.prettyLocator(r,S.anchoredLocator)} has been modified but doesn't have a release strategy attached`);p=!0}let C=aP(f);for(let[S,x]of C)h||c.reportSeparator(),c.reportError(0,`${j.prettyLocator(r,S.anchoredLocator)} doesn't have a release strategy attached, but depends on ${j.prettyWorkspace(r,x)} which is planned for release.`),h=!0;(p||h)&&(c.reportSeparator(),c.reportInfo(0,"This command detected that at least some workspaces have received modifications without explicit instructions as to how they had to be released (if needed)."),c.reportInfo(0,"To correct these errors, run `yarn version check --interactive` then follow the instructions."))})).exitCode()}};qe();Vt();var SL=et(pi());var _1=class extends At{constructor(){super(...arguments);this.deferred=he.Boolean("-d,--deferred",{description:"Prepare the version to be bumped during the next release cycle"});this.immediate=he.Boolean("-i,--immediate",{description:"Bump the version immediately"});this.strategy=he.String()}static{this.paths=[["version"]]}static{this.usage=at.Usage({category:"Release-related commands",description:"apply a new version to the current package",details:"\n This command will bump the version number for the given package, following the specified strategy:\n\n - If `major`, the first number from the semver range will be increased (`X.0.0`).\n - If `minor`, the second number from the semver range will be increased (`0.X.0`).\n - If `patch`, the third number from the semver range will be increased (`0.0.X`).\n - If prefixed by `pre` (`premajor`, ...), a `-0` suffix will be set (`0.0.0-0`).\n - If `prerelease`, the suffix will be increased (`0.0.0-X`); the third number from the semver range will also be increased if there was no suffix in the previous version.\n - If `decline`, the nonce will be increased for `yarn version check` to pass without version bump.\n - If a valid semver range, it will be used as new version.\n - If unspecified, Yarn will ask you for guidance.\n\n For more information about the `--deferred` flag, consult our documentation (https://yarnpkg.com/features/release-workflow#deferred-versioning).\n ",examples:[["Immediately bump the version to the next major","yarn version major"],["Prepare the version to be bumped to the next major","yarn version major --deferred"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);let n=r.get("preferDeferredVersions");this.deferred&&(n=!0),this.immediate&&(n=!1);let c=SL.default.valid(this.strategy),f=this.strategy==="decline",p;if(c)if(a.manifest.version!==null){let E=PJ(a.manifest.version,this.strategy);E!==null?p=E:p=this.strategy}else p=this.strategy;else{let E=a.manifest.version;if(!f){if(E===null)throw new st("Can't bump the version if there wasn't a version to begin with - use 0.0.0 as initial version then run the command again.");if(typeof E!="string"||!SL.default.valid(E))throw new st(`Can't bump the version (${E}) if it's not valid semver`)}p=Ey(this.strategy)}if(!n){let C=(await oP(s)).get(a);if(typeof C<"u"&&p!=="decline"){let S=sP(a.manifest.version,p);if(SL.default.lt(S,C))throw new st(`Can't bump the version to one that would be lower than the current deferred one (${C})`)}}let h=await O1(s,{allowEmpty:!0});return h.releases.set(a,p),await h.saveAll(),n?0:await this.cli.run(["version","apply"])}};var xSt={configuration:{deferredVersionFolder:{description:"Folder where are stored the versioning files",type:"ABSOLUTE_PATH",default:"./.yarn/versions"},preferDeferredVersions:{description:"If true, running `yarn version` will assume the `--deferred` flag unless `--immediate` is set",type:"BOOLEAN",default:!1}},commands:[M1,U1,_1]},kSt=xSt;var QJ={};Yt(QJ,{WorkspacesFocusCommand:()=>H1,WorkspacesForeachCommand:()=>G1,default:()=>TSt});qe();qe();Vt();var H1=class extends At{constructor(){super(...arguments);this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.production=he.Boolean("--production",!1,{description:"Only install regular dependencies by omitting dev dependencies"});this.all=he.Boolean("-A,--all",!1,{description:"Install the entire project"});this.workspaces=he.Rest()}static{this.paths=[["workspaces","focus"]]}static{this.usage=at.Usage({category:"Workspace-related commands",description:"install a single workspace and its dependencies",details:"\n This command will run an install as if the specified workspaces (and all other workspaces they depend on) were the only ones in the project. If no workspaces are explicitly listed, the active one will be assumed.\n\n Note that this command is only very moderately useful when using zero-installs, since the cache will contain all the packages anyway - meaning that the only difference between a full install and a focused install would just be a few extra lines in the `.pnp.cjs` file, at the cost of introducing an extra complexity.\n\n If the `-A,--all` flag is set, the entire project will be installed. Combine with `--production` to replicate the old `yarn install --production`.\n "})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Jr.find(r);await s.restoreInstallState({restoreResolutions:!1});let c;if(this.all)c=new Set(s.workspaces);else if(this.workspaces.length===0){if(!a)throw new ar(s.cwd,this.context.cwd);c=new Set([a])}else c=new Set(this.workspaces.map(f=>s.getWorkspaceByIdent(j.parseIdent(f))));for(let f of c)for(let p of this.production?["dependencies"]:Ut.hardDependencies)for(let h of f.manifest.getForScope(p).values()){let E=s.tryWorkspaceByDescriptor(h);E!==null&&c.add(E)}for(let f of s.workspaces)c.has(f)?this.production&&f.manifest.devDependencies.clear():(f.manifest.installConfig=f.manifest.installConfig||{},f.manifest.installConfig.selfReferences=!1,f.manifest.dependencies.clear(),f.manifest.devDependencies.clear(),f.manifest.peerDependencies.clear(),f.manifest.scripts.clear());return await s.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:n,persistProject:!1})}};qe();qe();qe();Vt();var j1=et(Jo()),tPe=et(Nd());ul();var G1=class extends At{constructor(){super(...arguments);this.from=he.Array("--from",{description:"An array of glob pattern idents or paths from which to base any recursion"});this.all=he.Boolean("-A,--all",{description:"Run the command on all workspaces of a project"});this.recursive=he.Boolean("-R,--recursive",{description:"Run the command on the current workspace and all of its recursive dependencies"});this.worktree=he.Boolean("-W,--worktree",{description:"Run the command on all workspaces of the current worktree"});this.verbose=he.Counter("-v,--verbose",{description:"Increase level of logging verbosity up to 2 times"});this.parallel=he.Boolean("-p,--parallel",!1,{description:"Run the commands in parallel"});this.interlaced=he.Boolean("-i,--interlaced",!1,{description:"Print the output of commands in real-time instead of buffering it"});this.jobs=he.String("-j,--jobs",{description:"The maximum number of parallel tasks that the execution will be limited to; or `unlimited`",validator:$U([ks(["unlimited"]),WB(XU(),[t_(),e_(1)])])});this.topological=he.Boolean("-t,--topological",!1,{description:"Run the command after all workspaces it depends on (regular) have finished"});this.topologicalDev=he.Boolean("--topological-dev",!1,{description:"Run the command after all workspaces it depends on (regular + dev) have finished"});this.include=he.Array("--include",[],{description:"An array of glob pattern idents or paths; only matching workspaces will be traversed"});this.exclude=he.Array("--exclude",[],{description:"An array of glob pattern idents or paths; matching workspaces won't be traversed"});this.publicOnly=he.Boolean("--no-private",{description:"Avoid running the command on private workspaces"});this.since=he.String("--since",{description:"Only include workspaces that have been changed since the specified ref.",tolerateBoolean:!0});this.dryRun=he.Boolean("-n,--dry-run",{description:"Print the commands that would be run, without actually running them"});this.commandName=he.String();this.args=he.Proxy()}static{this.paths=[["workspaces","foreach"]]}static{this.usage=at.Usage({category:"Workspace-related commands",description:"run a command on all workspaces",details:"\n This command will run a given sub-command on current and all its descendant workspaces. Various flags can alter the exact behavior of the command:\n\n - If `-p,--parallel` is set, the commands will be ran in parallel; they'll by default be limited to a number of parallel tasks roughly equal to half your core number, but that can be overridden via `-j,--jobs`, or disabled by setting `-j unlimited`.\n\n - If `-p,--parallel` and `-i,--interlaced` are both set, Yarn will print the lines from the output as it receives them. If `-i,--interlaced` wasn't set, it would instead buffer the output from each process and print the resulting buffers only after their source processes have exited.\n\n - If `-t,--topological` is set, Yarn will only run the command after all workspaces that it depends on through the `dependencies` field have successfully finished executing. If `--topological-dev` is set, both the `dependencies` and `devDependencies` fields will be considered when figuring out the wait points.\n\n - If `-A,--all` is set, Yarn will run the command on all the workspaces of a project.\n\n - If `-R,--recursive` is set, Yarn will find workspaces to run the command on by recursively evaluating `dependencies` and `devDependencies` fields, instead of looking at the `workspaces` fields.\n\n - If `-W,--worktree` is set, Yarn will find workspaces to run the command on by looking at the current worktree.\n\n - If `--from` is set, Yarn will use the packages matching the 'from' glob as the starting point for any recursive search.\n\n - If `--since` is set, Yarn will only run the command on workspaces that have been modified since the specified ref. By default Yarn will use the refs specified by the `changesetBaseRefs` configuration option.\n\n - If `--dry-run` is set, Yarn will explain what it would do without actually doing anything.\n\n - The command may apply to only some workspaces through the use of `--include` which acts as a whitelist. The `--exclude` flag will do the opposite and will be a list of packages that mustn't execute the script. Both flags accept glob patterns (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them. You can also use the `--no-private` flag to avoid running the command in private workspaces.\n\n The `-v,--verbose` flag can be passed up to twice: once to prefix output lines with the originating workspace's name, and again to include start/finish/timing log lines. Maximum verbosity is enabled by default in terminal environments.\n\n If the command is `run` and the script being run does not exist the child workspace will be skipped without error.\n ",examples:[["Publish all packages","yarn workspaces foreach -A --no-private npm publish --tolerate-republish"],["Run the build script on all descendant packages","yarn workspaces foreach -A run build"],["Run the build script on current and all descendant packages in parallel, building package dependencies first","yarn workspaces foreach -Apt run build"],["Run the build script on several packages and all their dependencies, building dependencies first","yarn workspaces foreach -Rpt --from '{workspace-a,workspace-b}' run build"]]})}static{this.schema=[YB("all",Vf.Forbids,["from","recursive","since","worktree"],{missingIf:"undefined"}),r_(["all","recursive","since","worktree"],{missingIf:"undefined"})]}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!this.all&&!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let n=this.cli.process([this.commandName,...this.args]),c=n.path.length===1&&n.path[0]==="run"&&typeof n.scriptName<"u"?n.scriptName:null;if(n.path.length===0)throw new st("Invalid subcommand name for iteration - use the 'run' keyword if you wish to execute a script");let f=Ee=>{this.dryRun&&this.context.stdout.write(`${Ee} -`)},p=()=>{let Ee=this.from.map(g=>j1.default.matcher(g));return s.workspaces.filter(g=>{let Se=j.stringifyIdent(g.anchoredLocator),Be=g.relativeCwd;return Ee.some(me=>me(Se)||me(Be))})},h=[];if(this.since?(f("Option --since is set; selecting the changed workspaces as root for workspace selection"),h=Array.from(await Oa.fetchChangedWorkspaces({ref:this.since,project:s}))):this.from?(f("Option --from is set; selecting the specified workspaces"),h=[...p()]):this.worktree?(f("Option --worktree is set; selecting the current workspace"),h=[a]):this.recursive?(f("Option --recursive is set; selecting the current workspace"),h=[a]):this.all&&(f("Option --all is set; selecting all workspaces"),h=[...s.workspaces]),this.dryRun&&!this.all){for(let Ee of h)f(` -- ${Ee.relativeCwd} - ${j.prettyLocator(r,Ee.anchoredLocator)}`);h.length>0&&f("")}let E;if(this.recursive?this.since?(f("Option --recursive --since is set; recursively selecting all dependent workspaces"),E=new Set(h.map(Ee=>[...Ee.getRecursiveWorkspaceDependents()]).flat())):(f("Option --recursive is set; recursively selecting all transitive dependencies"),E=new Set(h.map(Ee=>[...Ee.getRecursiveWorkspaceDependencies()]).flat())):this.worktree?(f("Option --worktree is set; recursively selecting all nested workspaces"),E=new Set(h.map(Ee=>[...Ee.getRecursiveWorkspaceChildren()]).flat())):E=null,E!==null&&(h=[...new Set([...h,...E])],this.dryRun))for(let Ee of E)f(` -- ${Ee.relativeCwd} - ${j.prettyLocator(r,Ee.anchoredLocator)}`);let C=[],S=!1;if(c?.includes(":")){for(let Ee of s.workspaces)if(Ee.manifest.scripts.has(c)&&(S=!S,S===!1))break}for(let Ee of h){if(c&&!Ee.manifest.scripts.has(c)&&!S&&!(await Cn.getWorkspaceAccessibleBinaries(Ee)).has(c)){f(`Excluding ${Ee.relativeCwd} because it doesn't have a "${c}" script`);continue}if(!(c===r.env.npm_lifecycle_event&&Ee.cwd===a.cwd)){if(this.include.length>0&&!j1.default.isMatch(j.stringifyIdent(Ee.anchoredLocator),this.include)&&!j1.default.isMatch(Ee.relativeCwd,this.include)){f(`Excluding ${Ee.relativeCwd} because it doesn't match the --include filter`);continue}if(this.exclude.length>0&&(j1.default.isMatch(j.stringifyIdent(Ee.anchoredLocator),this.exclude)||j1.default.isMatch(Ee.relativeCwd,this.exclude))){f(`Excluding ${Ee.relativeCwd} because it matches the --exclude filter`);continue}if(this.publicOnly&&Ee.manifest.private===!0){f(`Excluding ${Ee.relativeCwd} because it's a private workspace and --no-private was set`);continue}C.push(Ee)}}if(C.sort((Ee,g)=>j.stringifyIdent(Ee.anchoredLocator).localeCompare(j.stringifyIdent(g.anchoredLocator))),this.dryRun)return 0;let x=this.verbose??(this.context.stdout.isTTY?1/0:0),I=x>0,T=x>1,O=this.parallel?this.jobs==="unlimited"?1/0:Number(this.jobs)||Math.ceil(Ui.availableParallelism()/2):1,U=O===1?!1:this.parallel,Y=U?this.interlaced:!0,te=(0,tPe.default)(O),ie=new Map,ue=new Set,ae=0,de=null,Ae=!1,Ce=await Ot.start({configuration:r,stdout:this.context.stdout,includePrefix:!1},async Ee=>{let g=async(Se,{commandIndex:Be})=>{if(Ae)return-1;!U&&T&&Be>1&&Ee.reportSeparator();let me=QSt(Se,{configuration:r,label:I,commandIndex:Be}),[ce,X]=ePe(Ee,{prefix:me,interlaced:Y}),[De,Qe]=ePe(Ee,{prefix:me,interlaced:Y});try{T&&Ee.reportInfo(null,`${me?`${me} `:""}Process started`);let it=Date.now(),_=await this.cli.run([this.commandName,...this.args],{cwd:Se.cwd,stdout:ce,stderr:De})||0;ce.end(),De.end(),await X,await Qe;let tt=Date.now();if(T){let Ne=r.get("enableTimers")?`, completed in ${pe.pretty(r,tt-it,pe.Type.DURATION)}`:"";Ee.reportInfo(null,`${me?`${me} `:""}Process exited (exit code ${_})${Ne}`)}return _===130&&(Ae=!0,de=_),_}catch(it){throw ce.end(),De.end(),await X,await Qe,it}};for(let Se of C)ie.set(Se.anchoredLocator.locatorHash,Se);for(;ie.size>0&&!Ee.hasErrors();){let Se=[];for(let[X,De]of ie){if(ue.has(De.anchoredDescriptor.descriptorHash))continue;let Qe=!0;if(this.topological||this.topologicalDev){let it=this.topologicalDev?new Map([...De.manifest.dependencies,...De.manifest.devDependencies]):De.manifest.dependencies;for(let _ of it.values()){let tt=s.tryWorkspaceByDescriptor(_);if(Qe=tt===null||!ie.has(tt.anchoredLocator.locatorHash),!Qe)break}}if(Qe&&(ue.add(De.anchoredDescriptor.descriptorHash),Se.push(te(async()=>{let it=await g(De,{commandIndex:++ae});return ie.delete(X),ue.delete(De.anchoredDescriptor.descriptorHash),{workspace:De,exitCode:it}})),!U))break}if(Se.length===0){let X=Array.from(ie.values()).map(De=>j.prettyLocator(r,De.anchoredLocator)).join(", ");Ee.reportError(3,`Dependency cycle detected (${X})`);return}let Be=await Promise.all(Se);Be.forEach(({workspace:X,exitCode:De})=>{De!==0&&Ee.reportError(0,`The command failed in workspace ${j.prettyLocator(r,X.anchoredLocator)} with exit code ${De}`)});let ce=Be.map(X=>X.exitCode).find(X=>X!==0);(this.topological||this.topologicalDev)&&typeof ce<"u"&&Ee.reportError(0,"The command failed for workspaces that are depended upon by other workspaces; can't satisfy the dependency graph")}});return de!==null?de:Ce.exitCode()}};function ePe(e,{prefix:t,interlaced:r}){let s=e.createStreamReporter(t),a=new Ge.DefaultStream;a.pipe(s,{end:!1}),a.on("finish",()=>{s.end()});let n=new Promise(f=>{s.on("finish",()=>{f(a.active)})});if(r)return[a,n];let c=new Ge.BufferStream;return c.pipe(a,{end:!1}),c.on("finish",()=>{a.end()}),[c,n]}function QSt(e,{configuration:t,commandIndex:r,label:s}){if(!s)return null;let n=`[${j.stringifyIdent(e.anchoredLocator)}]:`,c=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],f=c[r%c.length];return pe.pretty(t,n,f)}var RSt={commands:[H1,G1]},TSt=RSt;var VI=()=>({modules:new Map([["@yarnpkg/cli",Gv],["@yarnpkg/core",jv],["@yarnpkg/fslib",RB],["@yarnpkg/libzip",nv],["@yarnpkg/parsers",_B],["@yarnpkg/shell",cv],["clipanion",XB],["semver",FSt],["typanion",Yo],["@yarnpkg/plugin-essentials",Q5],["@yarnpkg/plugin-catalog",N5],["@yarnpkg/plugin-compat",_5],["@yarnpkg/plugin-constraints",nq],["@yarnpkg/plugin-dlx",iq],["@yarnpkg/plugin-exec",aq],["@yarnpkg/plugin-file",cq],["@yarnpkg/plugin-git",k5],["@yarnpkg/plugin-github",Aq],["@yarnpkg/plugin-http",pq],["@yarnpkg/plugin-init",hq],["@yarnpkg/plugin-interactive-tools",fW],["@yarnpkg/plugin-jsr",pW],["@yarnpkg/plugin-link",hW],["@yarnpkg/plugin-nm",ZW],["@yarnpkg/plugin-npm",ZK],["@yarnpkg/plugin-npm-cli",aJ],["@yarnpkg/plugin-pack",qV],["@yarnpkg/plugin-patch",hJ],["@yarnpkg/plugin-pnp",UW],["@yarnpkg/plugin-pnpm",mJ],["@yarnpkg/plugin-stage",vJ],["@yarnpkg/plugin-typescript",SJ],["@yarnpkg/plugin-version",kJ],["@yarnpkg/plugin-workspace-tools",QJ]]),plugins:new Set(["@yarnpkg/plugin-essentials","@yarnpkg/plugin-catalog","@yarnpkg/plugin-compat","@yarnpkg/plugin-constraints","@yarnpkg/plugin-dlx","@yarnpkg/plugin-exec","@yarnpkg/plugin-file","@yarnpkg/plugin-git","@yarnpkg/plugin-github","@yarnpkg/plugin-http","@yarnpkg/plugin-init","@yarnpkg/plugin-interactive-tools","@yarnpkg/plugin-jsr","@yarnpkg/plugin-link","@yarnpkg/plugin-nm","@yarnpkg/plugin-npm","@yarnpkg/plugin-npm-cli","@yarnpkg/plugin-pack","@yarnpkg/plugin-patch","@yarnpkg/plugin-pnp","@yarnpkg/plugin-pnpm","@yarnpkg/plugin-stage","@yarnpkg/plugin-typescript","@yarnpkg/plugin-version","@yarnpkg/plugin-workspace-tools"])});function iPe({cwd:e,pluginConfiguration:t}){let r=new va({binaryLabel:"Yarn Package Manager",binaryName:"yarn",binaryVersion:An??""});return Object.assign(r,{defaultContext:{...va.defaultContext,cwd:e,plugins:t,quiet:!1,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr}})}function NSt(e){if(Ge.parseOptionalBoolean(process.env.YARN_IGNORE_NODE))return!0;let r=process.versions.node,s=">=18.12.0";if(Fr.satisfiesWithPrereleases(r,s))return!0;let a=new st(`This tool requires a Node version compatible with ${s} (got ${r}). Upgrade Node, or set \`YARN_IGNORE_NODE=1\` in your environment.`);return va.defaultContext.stdout.write(e.error(a)),!1}async function sPe({selfPath:e,pluginConfiguration:t}){return await ze.find(fe.toPortablePath(process.cwd()),t,{strict:!1,usePathCheck:e})}function OSt(e,t,{yarnPath:r}){if(!le.existsSync(r))return e.error(new Error(`The "yarn-path" option has been set, but the specified location doesn't exist (${r}).`)),1;process.on("SIGINT",()=>{});let s={stdio:"inherit",env:{...process.env,YARN_IGNORE_PATH:"1"}};try{(0,rPe.execFileSync)(process.execPath,[fe.fromPortablePath(r),...t],s)}catch(a){return a.status??1}return 0}function LSt(e,t){let r=null,s=t;return t.length>=2&&t[0]==="--cwd"?(r=fe.toPortablePath(t[1]),s=t.slice(2)):t.length>=1&&t[0].startsWith("--cwd=")?(r=fe.toPortablePath(t[0].slice(6)),s=t.slice(1)):t[0]==="add"&&t[t.length-2]==="--cwd"&&(r=fe.toPortablePath(t[t.length-1]),s=t.slice(0,t.length-2)),e.defaultContext.cwd=r!==null?K.resolve(r):K.cwd(),s}function MSt(e,{configuration:t}){if(!t.get("enableTelemetry")||nPe.isCI||!process.stdout.isTTY)return;ze.telemetry=new GI(t,"puba9cdc10ec5790a2cf4969dd413a47270");let s=/^@yarnpkg\/plugin-(.*)$/;for(let a of t.plugins.keys())qI.has(a.match(s)?.[1]??"")&&ze.telemetry?.reportPluginName(a);e.binaryVersion&&ze.telemetry.reportVersion(e.binaryVersion)}function oPe(e,{configuration:t}){for(let r of t.plugins.values())for(let s of r.commands||[])e.register(s)}async function USt(e,t,{selfPath:r,pluginConfiguration:s}){if(!NSt(e))return 1;let a=await sPe({selfPath:r,pluginConfiguration:s}),n=a.get("yarnPath"),c=a.get("ignorePath");if(n&&!c)return OSt(e,t,{yarnPath:n});delete process.env.YARN_IGNORE_PATH;let f=LSt(e,t);MSt(e,{configuration:a}),oPe(e,{configuration:a});let p=e.process(f,e.defaultContext);return p.help||ze.telemetry?.reportCommandName(p.path.join(" ")),await e.run(p,e.defaultContext)}async function h0e({cwd:e=K.cwd(),pluginConfiguration:t=VI()}={}){let r=iPe({cwd:e,pluginConfiguration:t}),s=await sPe({pluginConfiguration:t,selfPath:null});return oPe(r,{configuration:s}),r}async function QT(e,{cwd:t=K.cwd(),selfPath:r,pluginConfiguration:s}){let a=iPe({cwd:t,pluginConfiguration:s});function n(){va.defaultContext.stdout.write(`ERROR: Yarn is terminating due to an unexpected empty event loop. -Please report this issue at https://github.com/yarnpkg/berry/issues.`)}process.once("beforeExit",n);try{process.exitCode=42,process.exitCode=await USt(a,e,{selfPath:r,pluginConfiguration:s})}catch(c){va.defaultContext.stdout.write(a.error(c)),process.exitCode=1}finally{process.off("beforeExit",n),await le.rmtempPromise()}}QT(process.argv.slice(2),{cwd:K.cwd(),selfPath:fe.toPortablePath(fe.resolve(process.argv[1])),pluginConfiguration:VI()});})(); -/** - @license - Copyright (c) 2015, Rebecca Turner - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH - REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM - LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR - OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. - */ -/** - @license - Copyright Node.js contributors. All rights reserved. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to - deal in the Software without restriction, including without limitation the - rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - IN THE SOFTWARE. -*/ -/** - @license - The MIT License (MIT) - - Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -/** - @license - Copyright Joyent, Inc. and other Node contributors. - - Permission is hereby granted, free of charge, to any person obtaining a - copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to permit - persons to whom the Software is furnished to do so, subject to the - following conditions: - - The above copyright notice and this permission notice shall be included - in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN - NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ -/*! Bundled license information: - -is-number/index.js: - (*! - * is-number - * - * Copyright (c) 2014-present, Jon Schlinkert. - * Released under the MIT License. - *) - -to-regex-range/index.js: - (*! - * to-regex-range - * - * Copyright (c) 2015-present, Jon Schlinkert. - * Released under the MIT License. - *) - -fill-range/index.js: - (*! - * fill-range - * - * Copyright (c) 2014-present, Jon Schlinkert. - * Licensed under the MIT License. - *) - -is-extglob/index.js: - (*! - * is-extglob - * - * Copyright (c) 2014-2016, Jon Schlinkert. - * Licensed under the MIT License. - *) - -is-glob/index.js: - (*! - * is-glob - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - *) - -queue-microtask/index.js: - (*! queue-microtask. MIT License. Feross Aboukhadijeh *) - -run-parallel/index.js: - (*! run-parallel. MIT License. Feross Aboukhadijeh *) - -git-url-parse/lib/index.js: - (*! - * buildToken - * Builds OAuth token prefix (helper function) - * - * @name buildToken - * @function - * @param {GitUrl} obj The parsed Git url object. - * @return {String} token prefix - *) - -object-assign/index.js: - (* - object-assign - (c) Sindre Sorhus - @license MIT - *) - -react/cjs/react.production.min.js: - (** @license React v17.0.2 - * react.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - *) - -scheduler/cjs/scheduler.production.min.js: - (** @license React v0.20.2 - * scheduler.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - *) - -react-reconciler/cjs/react-reconciler.production.min.js: - (** @license React v0.26.2 - * react-reconciler.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - *) - -is-windows/index.js: - (*! - * is-windows - * - * Copyright © 2015-2018, Jon Schlinkert. - * Released under the MIT License. - *) -*/ diff --git a/.yarn/releases/yarn-4.14.1.cjs b/.yarn/releases/yarn-4.14.1.cjs new file mode 100755 index 00000000000..7c010f0bdb8 --- /dev/null +++ b/.yarn/releases/yarn-4.14.1.cjs @@ -0,0 +1,940 @@ +#!/usr/bin/env node +/* eslint-disable */ +//prettier-ignore +(()=>{var gje=Object.create;var tU=Object.defineProperty;var mje=Object.getOwnPropertyDescriptor;var yje=Object.getOwnPropertyNames;var Eje=Object.getPrototypeOf,Ije=Object.prototype.hasOwnProperty;var Ie=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof require<"u"?require:t)[r]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var Xe=(e,t)=>()=>(e&&(t=e(e=0)),t);var G=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Vt=(e,t)=>{for(var r in t)tU(e,r,{get:t[r],enumerable:!0})},Cje=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of yje(t))!Ije.call(e,a)&&a!==r&&tU(e,a,{get:()=>t[a],enumerable:!(s=mje(t,a))||s.enumerable});return e};var et=(e,t,r)=>(r=e!=null?gje(Eje(e)):{},Cje(t||!e||!e.__esModule?tU(r,"default",{value:e,enumerable:!0}):r,e));var Ai={};Vt(Ai,{SAFE_TIME:()=>fZ,S_IFDIR:()=>JP,S_IFLNK:()=>KP,S_IFMT:()=>Hf,S_IFREG:()=>b2});var Hf,JP,b2,KP,fZ,AZ=Xe(()=>{Hf=61440,JP=16384,b2=32768,KP=40960,fZ=456789e3});var or={};Vt(or,{EBADF:()=>qo,EBUSY:()=>wje,EEXIST:()=>Pje,EINVAL:()=>vje,EISDIR:()=>bje,ENOENT:()=>Sje,ENOSYS:()=>Bje,ENOTDIR:()=>Dje,ENOTEMPTY:()=>kje,EOPNOTSUPP:()=>Qje,EROFS:()=>xje,ERR_DIR_CLOSED:()=>rU});function Bc(e,t){return Object.assign(new Error(`${e}: ${t}`),{code:e})}function wje(e){return Bc("EBUSY",e)}function Bje(e,t){return Bc("ENOSYS",`${e}, ${t}`)}function vje(e){return Bc("EINVAL",`invalid argument, ${e}`)}function qo(e){return Bc("EBADF",`bad file descriptor, ${e}`)}function Sje(e){return Bc("ENOENT",`no such file or directory, ${e}`)}function Dje(e){return Bc("ENOTDIR",`not a directory, ${e}`)}function bje(e){return Bc("EISDIR",`illegal operation on a directory, ${e}`)}function Pje(e){return Bc("EEXIST",`file already exists, ${e}`)}function xje(e){return Bc("EROFS",`read-only filesystem, ${e}`)}function kje(e){return Bc("ENOTEMPTY",`directory not empty, ${e}`)}function Qje(e){return Bc("EOPNOTSUPP",`operation not supported, ${e}`)}function rU(){return Bc("ERR_DIR_CLOSED","Directory handle was closed")}var zP=Xe(()=>{});var al={};Vt(al,{BigIntStatsEntry:()=>aE,DEFAULT_MODE:()=>sU,DirEntry:()=>nU,StatEntry:()=>oE,areStatsEqual:()=>oU,clearStats:()=>XP,convertToBigIntStats:()=>Tje,makeDefaultStats:()=>pZ,makeEmptyStats:()=>Rje});function pZ(){return new oE}function Rje(){return XP(pZ())}function XP(e){for(let t in e)if(Object.hasOwn(e,t)){let r=e[t];typeof r=="number"?e[t]=0:typeof r=="bigint"?e[t]=BigInt(0):iU.types.isDate(r)&&(e[t]=new Date(0))}return e}function Tje(e){let t=new aE;for(let r in e)if(Object.hasOwn(e,r)){let s=e[r];typeof s=="number"?t[r]=BigInt(Math.floor(s)):iU.types.isDate(s)&&(t[r]=new Date(s))}return t.atimeNs=t.atimeMs*BigInt(1e6)+BigInt(Math.floor(e.atimeMs%1*1e3))*BigInt(1e3),t.mtimeNs=t.mtimeMs*BigInt(1e6)+BigInt(Math.floor(e.mtimeMs%1*1e3))*BigInt(1e3),t.ctimeNs=t.ctimeMs*BigInt(1e6)+BigInt(Math.floor(e.ctimeMs%1*1e3))*BigInt(1e3),t.birthtimeNs=t.birthtimeMs*BigInt(1e6)+BigInt(Math.floor(e.birthtimeMs%1*1e3))*BigInt(1e3),t}function oU(e,t){if(e.atimeMs!==t.atimeMs||e.birthtimeMs!==t.birthtimeMs||e.blksize!==t.blksize||e.blocks!==t.blocks||e.ctimeMs!==t.ctimeMs||e.dev!==t.dev||e.gid!==t.gid||e.ino!==t.ino||e.isBlockDevice()!==t.isBlockDevice()||e.isCharacterDevice()!==t.isCharacterDevice()||e.isDirectory()!==t.isDirectory()||e.isFIFO()!==t.isFIFO()||e.isFile()!==t.isFile()||e.isSocket()!==t.isSocket()||e.isSymbolicLink()!==t.isSymbolicLink()||e.mode!==t.mode||e.mtimeMs!==t.mtimeMs||e.nlink!==t.nlink||e.rdev!==t.rdev||e.size!==t.size||e.uid!==t.uid)return!1;let r=e,s=t;return!(r.atimeNs!==s.atimeNs||r.mtimeNs!==s.mtimeNs||r.ctimeNs!==s.ctimeNs||r.birthtimeNs!==s.birthtimeNs)}var iU,sU,nU,oE,aE,aU=Xe(()=>{iU=et(Ie("util")),sU=33188,nU=class{constructor(){this.name="";this.path="";this.mode=0}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&61440)===16384}isFIFO(){return!1}isFile(){return(this.mode&61440)===32768}isSocket(){return!1}isSymbolicLink(){return(this.mode&61440)===40960}},oE=class{constructor(){this.uid=0;this.gid=0;this.size=0;this.blksize=0;this.atimeMs=0;this.mtimeMs=0;this.ctimeMs=0;this.birthtimeMs=0;this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=0;this.ino=0;this.mode=sU;this.nlink=1;this.rdev=0;this.blocks=1}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&61440)===16384}isFIFO(){return!1}isFile(){return(this.mode&61440)===32768}isSocket(){return!1}isSymbolicLink(){return(this.mode&61440)===40960}},aE=class{constructor(){this.uid=BigInt(0);this.gid=BigInt(0);this.size=BigInt(0);this.blksize=BigInt(0);this.atimeMs=BigInt(0);this.mtimeMs=BigInt(0);this.ctimeMs=BigInt(0);this.birthtimeMs=BigInt(0);this.atimeNs=BigInt(0);this.mtimeNs=BigInt(0);this.ctimeNs=BigInt(0);this.birthtimeNs=BigInt(0);this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=BigInt(0);this.ino=BigInt(0);this.mode=BigInt(sU);this.nlink=BigInt(1);this.rdev=BigInt(0);this.blocks=BigInt(1)}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&BigInt(61440))===BigInt(16384)}isFIFO(){return!1}isFile(){return(this.mode&BigInt(61440))===BigInt(32768)}isSocket(){return!1}isSymbolicLink(){return(this.mode&BigInt(61440))===BigInt(40960)}}});function Mje(e){let t,r;if(t=e.match(Oje))e=t[1];else if(r=e.match(Lje))e=`\\\\${r[1]?".\\":""}${r[2]}`;else return e;return e.replace(/\//g,"\\")}function Uje(e){e=e.replace(/\\/g,"/");let t,r;return(t=e.match(Fje))?e=`/${t[1]}`:(r=e.match(Nje))&&(e=`/unc/${r[1]?".dot/":""}${r[2]}`),e}function ZP(e,t){return e===fe?dZ(t):lU(t)}var P2,vt,Er,fe,J,hZ,Fje,Nje,Oje,Lje,lU,dZ,ll=Xe(()=>{P2=et(Ie("path")),vt={root:"/",dot:".",parent:".."},Er={home:"~",nodeModules:"node_modules",manifest:"package.json",lockfile:"yarn.lock",virtual:"__virtual__",pnpJs:".pnp.js",pnpCjs:".pnp.cjs",pnpData:".pnp.data.json",pnpEsmLoader:".pnp.loader.mjs",rc:".yarnrc.yml",env:".env"},fe=Object.create(P2.default),J=Object.create(P2.default.posix);fe.cwd=()=>process.cwd();J.cwd=process.platform==="win32"?()=>lU(process.cwd()):process.cwd;process.platform==="win32"&&(J.resolve=(...e)=>e.length>0&&J.isAbsolute(e[0])?P2.default.posix.resolve(...e):P2.default.posix.resolve(J.cwd(),...e));hZ=function(e,t,r){return t=e.normalize(t),r=e.normalize(r),t===r?".":(t.endsWith(e.sep)||(t=t+e.sep),r.startsWith(t)?r.slice(t.length):null)};fe.contains=(e,t)=>hZ(fe,e,t);J.contains=(e,t)=>hZ(J,e,t);Fje=/^([a-zA-Z]:.*)$/,Nje=/^\/\/(\.\/)?(.*)$/,Oje=/^\/([a-zA-Z]:.*)$/,Lje=/^\/unc\/(\.dot\/)?(.*)$/;lU=process.platform==="win32"?Uje:e=>e,dZ=process.platform==="win32"?Mje:e=>e;fe.fromPortablePath=dZ;fe.toPortablePath=lU});async function $P(e,t){let r="0123456789abcdef";await e.mkdirPromise(t.indexPath,{recursive:!0});let s=[];for(let a of r)for(let n of r)s.push(e.mkdirPromise(e.pathUtils.join(t.indexPath,`${a}${n}`),{recursive:!0}));return await Promise.all(s),t.indexPath}async function gZ(e,t,r,s,a){let n=e.pathUtils.normalize(t),c=r.pathUtils.normalize(s),f=[],p=[],{atime:h,mtime:E}=a.stableTime?{atime:hg,mtime:hg}:await r.lstatPromise(c);await e.mkdirpPromise(e.pathUtils.dirname(t),{utimes:[h,E]}),await cU(f,p,e,n,r,c,{...a,didParentExist:!0});for(let C of f)await C();await Promise.all(p.map(C=>C()))}async function cU(e,t,r,s,a,n,c){let f=c.didParentExist?await mZ(r,s):null,p=await a.lstatPromise(n),{atime:h,mtime:E}=c.stableTime?{atime:hg,mtime:hg}:p,C;switch(!0){case p.isDirectory():C=await Hje(e,t,r,s,f,a,n,p,c);break;case p.isFile():C=await qje(e,t,r,s,f,a,n,p,c);break;case p.isSymbolicLink():C=await Wje(e,t,r,s,f,a,n,p,c);break;default:throw new Error(`Unsupported file type (${p.mode})`)}return(c.linkStrategy?.type!=="HardlinkFromIndex"||!p.isFile())&&((C||f?.mtime?.getTime()!==E.getTime()||f?.atime?.getTime()!==h.getTime())&&(t.push(()=>r.lutimesPromise(s,h,E)),C=!0),(f===null||(f.mode&511)!==(p.mode&511))&&(t.push(()=>r.chmodPromise(s,p.mode&511)),C=!0)),C}async function mZ(e,t){try{return await e.lstatPromise(t)}catch{return null}}async function Hje(e,t,r,s,a,n,c,f,p){if(a!==null&&!a.isDirectory())if(p.overwrite)e.push(async()=>r.removePromise(s)),a=null;else return!1;let h=!1;a===null&&(e.push(async()=>{try{await r.mkdirPromise(s,{mode:f.mode})}catch(S){if(S.code!=="EEXIST")throw S}}),h=!0);let E=await n.readdirPromise(c),C=p.didParentExist&&!a?{...p,didParentExist:!1}:p;if(p.stableSort)for(let S of E.sort())await cU(e,t,r,r.pathUtils.join(s,S),n,n.pathUtils.join(c,S),C)&&(h=!0);else(await Promise.all(E.map(async x=>{await cU(e,t,r,r.pathUtils.join(s,x),n,n.pathUtils.join(c,x),C)}))).some(x=>x)&&(h=!0);return h}async function jje(e,t,r,s,a,n,c,f,p,h){let E=await n.checksumFilePromise(c,{algorithm:"sha1"}),C=420,S=f.mode&511,x=`${E}${S!==C?S.toString(8):""}`,I=r.pathUtils.join(h.indexPath,E.slice(0,2),`${x}.dat`),T;(ae=>(ae[ae.Lock=0]="Lock",ae[ae.Rename=1]="Rename"))(T||={});let O=1,U=await mZ(r,I);if(a){let ie=U&&a.dev===U.dev&&a.ino===U.ino,ue=U?.mtimeMs!==_je;if(ie&&ue&&h.autoRepair&&(O=0,U=null),!ie)if(p.overwrite)e.push(async()=>r.removePromise(s)),a=null;else return!1}let V=!U&&O===1?`${I}.${Math.floor(Math.random()*4294967296).toString(16).padStart(8,"0")}`:null,te=!1;return e.push(async()=>{if(!U&&(O===0&&await r.lockPromise(I,async()=>{let ie=await n.readFilePromise(c);await r.writeFilePromise(I,ie)}),O===1&&V)){let ie=await n.readFilePromise(c);await r.writeFilePromise(V,ie);try{await r.linkPromise(V,I)}catch(ue){if(ue.code==="EEXIST")te=!0,await r.unlinkPromise(V);else throw ue}}a||await r.linkPromise(I,s)}),t.push(async()=>{U||(await r.lutimesPromise(I,hg,hg),S!==C&&await r.chmodPromise(I,S)),V&&!te&&await r.unlinkPromise(V)}),!1}async function Gje(e,t,r,s,a,n,c,f,p){if(a!==null)if(p.overwrite)e.push(async()=>r.removePromise(s)),a=null;else return!1;return e.push(async()=>{let h=await n.readFilePromise(c);await r.writeFilePromise(s,h)}),!0}async function qje(e,t,r,s,a,n,c,f,p){return p.linkStrategy?.type==="HardlinkFromIndex"?jje(e,t,r,s,a,n,c,f,p,p.linkStrategy):Gje(e,t,r,s,a,n,c,f,p)}async function Wje(e,t,r,s,a,n,c,f,p){if(a!==null)if(p.overwrite)e.push(async()=>r.removePromise(s)),a=null;else return!1;return e.push(async()=>{await r.symlinkPromise(ZP(r.pathUtils,await n.readlinkPromise(c)),s)}),!0}var hg,_je,uU=Xe(()=>{ll();hg=new Date(456789e3*1e3),_je=hg.getTime()});function ex(e,t,r,s){let a=()=>{let n=r.shift();if(typeof n>"u")return null;let c=e.pathUtils.join(t,n);return Object.assign(e.statSync(c),{name:n,path:void 0})};return new x2(t,a,s)}var x2,yZ=Xe(()=>{zP();x2=class{constructor(t,r,s={}){this.path=t;this.nextDirent=r;this.opts=s;this.closed=!1}throwIfClosed(){if(this.closed)throw rU()}async*[Symbol.asyncIterator](){try{let t;for(;(t=await this.read())!==null;)yield t}finally{await this.close()}}read(t){let r=this.readSync();return typeof t<"u"?t(null,r):Promise.resolve(r)}readSync(){return this.throwIfClosed(),this.nextDirent()}close(t){return this.closeSync(),typeof t<"u"?t(null):Promise.resolve()}closeSync(){this.throwIfClosed(),this.opts.onClose?.(),this.closed=!0}}});function EZ(e,t){if(e!==t)throw new Error(`Invalid StatWatcher status: expected '${t}', got '${e}'`)}var IZ,tx,CZ=Xe(()=>{IZ=Ie("events");aU();tx=class e extends IZ.EventEmitter{constructor(r,s,{bigint:a=!1}={}){super();this.status="ready";this.changeListeners=new Map;this.startTimeout=null;this.fakeFs=r,this.path=s,this.bigint=a,this.lastStats=this.stat()}static create(r,s,a){let n=new e(r,s,a);return n.start(),n}start(){EZ(this.status,"ready"),this.status="running",this.startTimeout=setTimeout(()=>{this.startTimeout=null,this.fakeFs.existsSync(this.path)||this.emit("change",this.lastStats,this.lastStats)},3)}stop(){EZ(this.status,"running"),this.status="stopped",this.startTimeout!==null&&(clearTimeout(this.startTimeout),this.startTimeout=null),this.emit("stop")}stat(){try{return this.fakeFs.statSync(this.path,{bigint:this.bigint})}catch{let r=this.bigint?new aE:new oE;return XP(r)}}makeInterval(r){let s=setInterval(()=>{let a=this.stat(),n=this.lastStats;oU(a,n)||(this.lastStats=a,this.emit("change",a,n))},r.interval);return r.persistent?s:s.unref()}registerChangeListener(r,s){this.addListener("change",r),this.changeListeners.set(r,this.makeInterval(s))}unregisterChangeListener(r){this.removeListener("change",r);let s=this.changeListeners.get(r);typeof s<"u"&&clearInterval(s),this.changeListeners.delete(r)}unregisterAllChangeListeners(){for(let r of this.changeListeners.keys())this.unregisterChangeListener(r)}hasChangeListeners(){return this.changeListeners.size>0}ref(){for(let r of this.changeListeners.values())r.ref();return this}unref(){for(let r of this.changeListeners.values())r.unref();return this}}});function lE(e,t,r,s){let a,n,c,f;switch(typeof r){case"function":a=!1,n=!0,c=5007,f=r;break;default:({bigint:a=!1,persistent:n=!0,interval:c=5007}=r),f=s;break}let p=rx.get(e);typeof p>"u"&&rx.set(e,p=new Map);let h=p.get(t);return typeof h>"u"&&(h=tx.create(e,t,{bigint:a}),p.set(t,h)),h.registerChangeListener(f,{persistent:n,interval:c}),h}function dg(e,t,r){let s=rx.get(e);if(typeof s>"u")return;let a=s.get(t);typeof a>"u"||(typeof r>"u"?a.unregisterAllChangeListeners():a.unregisterChangeListener(r),a.hasChangeListeners()||(a.stop(),s.delete(t)))}function gg(e){let t=rx.get(e);if(!(typeof t>"u"))for(let r of t.keys())dg(e,r)}var rx,fU=Xe(()=>{CZ();rx=new WeakMap});function Yje(e){let t=e.match(/\r?\n/g);if(t===null)return BZ.EOL;let r=t.filter(a=>a===`\r +`).length,s=t.length-r;return r>s?`\r +`:` +`}function mg(e,t){return t.replace(/\r?\n/g,Yje(e))}var wZ,BZ,Ep,jf,yg=Xe(()=>{wZ=Ie("crypto"),BZ=Ie("os");uU();ll();Ep=class{constructor(t){this.pathUtils=t}async*genTraversePromise(t,{stableSort:r=!1}={}){let s=[t];for(;s.length>0;){let a=s.shift();if((await this.lstatPromise(a)).isDirectory()){let c=await this.readdirPromise(a);if(r)for(let f of c.sort())s.push(this.pathUtils.join(a,f));else throw new Error("Not supported")}else yield a}}async checksumFilePromise(t,{algorithm:r="sha512"}={}){let s=await this.openPromise(t,"r");try{let n=Buffer.allocUnsafeSlow(65536),c=(0,wZ.createHash)(r),f=0;for(;(f=await this.readPromise(s,n,0,65536))!==0;)c.update(f===65536?n:n.slice(0,f));return c.digest("hex")}finally{await this.closePromise(s)}}async removePromise(t,{recursive:r=!0,maxRetries:s=5}={}){let a;try{a=await this.lstatPromise(t)}catch(n){if(n.code==="ENOENT")return;throw n}if(a.isDirectory()){if(r){let n=await this.readdirPromise(t);await Promise.all(n.map(c=>this.removePromise(this.pathUtils.resolve(t,c))))}for(let n=0;n<=s;n++)try{await this.rmdirPromise(t);break}catch(c){if(c.code!=="EBUSY"&&c.code!=="ENOTEMPTY")throw c;nsetTimeout(f,n*100))}}else await this.unlinkPromise(t)}removeSync(t,{recursive:r=!0}={}){let s;try{s=this.lstatSync(t)}catch(a){if(a.code==="ENOENT")return;throw a}if(s.isDirectory()){if(r)for(let a of this.readdirSync(t))this.removeSync(this.pathUtils.resolve(t,a));this.rmdirSync(t)}else this.unlinkSync(t)}async mkdirpPromise(t,{chmod:r,utimes:s}={}){if(t=this.resolve(t),t===this.pathUtils.dirname(t))return;let a=t.split(this.pathUtils.sep),n;for(let c=2;c<=a.length;++c){let f=a.slice(0,c).join(this.pathUtils.sep);if(!this.existsSync(f)){try{await this.mkdirPromise(f)}catch(p){if(p.code==="EEXIST")continue;throw p}if(n??=f,r!=null&&await this.chmodPromise(f,r),s!=null)await this.utimesPromise(f,s[0],s[1]);else{let p=await this.statPromise(this.pathUtils.dirname(f));await this.utimesPromise(f,p.atime,p.mtime)}}}return n}mkdirpSync(t,{chmod:r,utimes:s}={}){if(t=this.resolve(t),t===this.pathUtils.dirname(t))return;let a=t.split(this.pathUtils.sep),n;for(let c=2;c<=a.length;++c){let f=a.slice(0,c).join(this.pathUtils.sep);if(!this.existsSync(f)){try{this.mkdirSync(f)}catch(p){if(p.code==="EEXIST")continue;throw p}if(n??=f,r!=null&&this.chmodSync(f,r),s!=null)this.utimesSync(f,s[0],s[1]);else{let p=this.statSync(this.pathUtils.dirname(f));this.utimesSync(f,p.atime,p.mtime)}}}return n}async copyPromise(t,r,{baseFs:s=this,overwrite:a=!0,stableSort:n=!1,stableTime:c=!1,linkStrategy:f=null}={}){return await gZ(this,t,s,r,{overwrite:a,stableSort:n,stableTime:c,linkStrategy:f})}copySync(t,r,{baseFs:s=this,overwrite:a=!0}={}){let n=s.lstatSync(r),c=this.existsSync(t);if(n.isDirectory()){this.mkdirpSync(t);let p=s.readdirSync(r);for(let h of p)this.copySync(this.pathUtils.join(t,h),s.pathUtils.join(r,h),{baseFs:s,overwrite:a})}else if(n.isFile()){if(!c||a){c&&this.removeSync(t);let p=s.readFileSync(r);this.writeFileSync(t,p)}}else if(n.isSymbolicLink()){if(!c||a){c&&this.removeSync(t);let p=s.readlinkSync(r);this.symlinkSync(ZP(this.pathUtils,p),t)}}else throw new Error(`Unsupported file type (file: ${r}, mode: 0o${n.mode.toString(8).padStart(6,"0")})`);let f=n.mode&511;this.chmodSync(t,f)}async changeFilePromise(t,r,s={}){return Buffer.isBuffer(r)?this.changeFileBufferPromise(t,r,s):this.changeFileTextPromise(t,r,s)}async changeFileBufferPromise(t,r,{mode:s}={}){let a=Buffer.alloc(0);try{a=await this.readFilePromise(t)}catch{}Buffer.compare(a,r)!==0&&await this.writeFilePromise(t,r,{mode:s})}async changeFileTextPromise(t,r,{automaticNewlines:s,mode:a}={}){let n="";try{n=await this.readFilePromise(t,"utf8")}catch{}let c=s?mg(n,r):r;n!==c&&await this.writeFilePromise(t,c,{mode:a})}changeFileSync(t,r,s={}){return Buffer.isBuffer(r)?this.changeFileBufferSync(t,r,s):this.changeFileTextSync(t,r,s)}changeFileBufferSync(t,r,{mode:s}={}){let a=Buffer.alloc(0);try{a=this.readFileSync(t)}catch{}Buffer.compare(a,r)!==0&&this.writeFileSync(t,r,{mode:s})}changeFileTextSync(t,r,{automaticNewlines:s=!1,mode:a}={}){let n="";try{n=this.readFileSync(t,"utf8")}catch{}let c=s?mg(n,r):r;n!==c&&this.writeFileSync(t,c,{mode:a})}async movePromise(t,r){try{await this.renamePromise(t,r)}catch(s){if(s.code==="EXDEV")await this.copyPromise(r,t),await this.removePromise(t);else throw s}}moveSync(t,r){try{this.renameSync(t,r)}catch(s){if(s.code==="EXDEV")this.copySync(r,t),this.removeSync(t);else throw s}}async lockPromise(t,r){let s=`${t}.flock`,a=1e3/60,n=Date.now(),c=null,f=async()=>{let p;try{[p]=await this.readJsonPromise(s)}catch{return Date.now()-n<500}try{return process.kill(p,0),!0}catch{return!1}};for(;c===null;)try{c=await this.openPromise(s,"wx")}catch(p){if(p.code==="EEXIST"){if(!await f())try{await this.unlinkPromise(s);continue}catch{}if(Date.now()-n<60*1e3)await new Promise(h=>setTimeout(h,a));else throw new Error(`Couldn't acquire a lock in a reasonable time (via ${s})`)}else throw p}await this.writePromise(c,JSON.stringify([process.pid]));try{return await r()}finally{try{await this.closePromise(c),await this.unlinkPromise(s)}catch{}}}async readJsonPromise(t){let r=await this.readFilePromise(t,"utf8");try{return JSON.parse(r)}catch(s){throw s.message+=` (in ${t})`,s}}readJsonSync(t){let r=this.readFileSync(t,"utf8");try{return JSON.parse(r)}catch(s){throw s.message+=` (in ${t})`,s}}async writeJsonPromise(t,r,{compact:s=!1}={}){let a=s?0:2;return await this.writeFilePromise(t,`${JSON.stringify(r,null,a)} +`)}writeJsonSync(t,r,{compact:s=!1}={}){let a=s?0:2;return this.writeFileSync(t,`${JSON.stringify(r,null,a)} +`)}async preserveTimePromise(t,r){let s=await this.lstatPromise(t),a=await r();typeof a<"u"&&(t=a),await this.lutimesPromise(t,s.atime,s.mtime)}async preserveTimeSync(t,r){let s=this.lstatSync(t),a=r();typeof a<"u"&&(t=a),this.lutimesSync(t,s.atime,s.mtime)}},jf=class extends Ep{constructor(){super(J)}}});var Gs,Ip=Xe(()=>{yg();Gs=class extends Ep{getExtractHint(t){return this.baseFs.getExtractHint(t)}resolve(t){return this.mapFromBase(this.baseFs.resolve(this.mapToBase(t)))}getRealPath(){return this.mapFromBase(this.baseFs.getRealPath())}async openPromise(t,r,s){return this.baseFs.openPromise(this.mapToBase(t),r,s)}openSync(t,r,s){return this.baseFs.openSync(this.mapToBase(t),r,s)}async opendirPromise(t,r){return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(t),r),{path:t})}opendirSync(t,r){return Object.assign(this.baseFs.opendirSync(this.mapToBase(t),r),{path:t})}async readPromise(t,r,s,a,n){return await this.baseFs.readPromise(t,r,s,a,n)}readSync(t,r,s,a,n){return this.baseFs.readSync(t,r,s,a,n)}async writePromise(t,r,s,a,n){return typeof r=="string"?await this.baseFs.writePromise(t,r,s):await this.baseFs.writePromise(t,r,s,a,n)}writeSync(t,r,s,a,n){return typeof r=="string"?this.baseFs.writeSync(t,r,s):this.baseFs.writeSync(t,r,s,a,n)}async closePromise(t){return this.baseFs.closePromise(t)}closeSync(t){this.baseFs.closeSync(t)}createReadStream(t,r){return this.baseFs.createReadStream(t!==null?this.mapToBase(t):t,r)}createWriteStream(t,r){return this.baseFs.createWriteStream(t!==null?this.mapToBase(t):t,r)}async realpathPromise(t){return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(t)))}realpathSync(t){return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(t)))}async existsPromise(t){return this.baseFs.existsPromise(this.mapToBase(t))}existsSync(t){return this.baseFs.existsSync(this.mapToBase(t))}accessSync(t,r){return this.baseFs.accessSync(this.mapToBase(t),r)}async accessPromise(t,r){return this.baseFs.accessPromise(this.mapToBase(t),r)}async statPromise(t,r){return this.baseFs.statPromise(this.mapToBase(t),r)}statSync(t,r){return this.baseFs.statSync(this.mapToBase(t),r)}async fstatPromise(t,r){return this.baseFs.fstatPromise(t,r)}fstatSync(t,r){return this.baseFs.fstatSync(t,r)}lstatPromise(t,r){return this.baseFs.lstatPromise(this.mapToBase(t),r)}lstatSync(t,r){return this.baseFs.lstatSync(this.mapToBase(t),r)}async fchmodPromise(t,r){return this.baseFs.fchmodPromise(t,r)}fchmodSync(t,r){return this.baseFs.fchmodSync(t,r)}async chmodPromise(t,r){return this.baseFs.chmodPromise(this.mapToBase(t),r)}chmodSync(t,r){return this.baseFs.chmodSync(this.mapToBase(t),r)}async fchownPromise(t,r,s){return this.baseFs.fchownPromise(t,r,s)}fchownSync(t,r,s){return this.baseFs.fchownSync(t,r,s)}async chownPromise(t,r,s){return this.baseFs.chownPromise(this.mapToBase(t),r,s)}chownSync(t,r,s){return this.baseFs.chownSync(this.mapToBase(t),r,s)}async renamePromise(t,r){return this.baseFs.renamePromise(this.mapToBase(t),this.mapToBase(r))}renameSync(t,r){return this.baseFs.renameSync(this.mapToBase(t),this.mapToBase(r))}async copyFilePromise(t,r,s=0){return this.baseFs.copyFilePromise(this.mapToBase(t),this.mapToBase(r),s)}copyFileSync(t,r,s=0){return this.baseFs.copyFileSync(this.mapToBase(t),this.mapToBase(r),s)}async appendFilePromise(t,r,s){return this.baseFs.appendFilePromise(this.fsMapToBase(t),r,s)}appendFileSync(t,r,s){return this.baseFs.appendFileSync(this.fsMapToBase(t),r,s)}async writeFilePromise(t,r,s){return this.baseFs.writeFilePromise(this.fsMapToBase(t),r,s)}writeFileSync(t,r,s){return this.baseFs.writeFileSync(this.fsMapToBase(t),r,s)}async unlinkPromise(t){return this.baseFs.unlinkPromise(this.mapToBase(t))}unlinkSync(t){return this.baseFs.unlinkSync(this.mapToBase(t))}async utimesPromise(t,r,s){return this.baseFs.utimesPromise(this.mapToBase(t),r,s)}utimesSync(t,r,s){return this.baseFs.utimesSync(this.mapToBase(t),r,s)}async lutimesPromise(t,r,s){return this.baseFs.lutimesPromise(this.mapToBase(t),r,s)}lutimesSync(t,r,s){return this.baseFs.lutimesSync(this.mapToBase(t),r,s)}async mkdirPromise(t,r){return this.baseFs.mkdirPromise(this.mapToBase(t),r)}mkdirSync(t,r){return this.baseFs.mkdirSync(this.mapToBase(t),r)}async rmdirPromise(t,r){return this.baseFs.rmdirPromise(this.mapToBase(t),r)}rmdirSync(t,r){return this.baseFs.rmdirSync(this.mapToBase(t),r)}async rmPromise(t,r){return this.baseFs.rmPromise(this.mapToBase(t),r)}rmSync(t,r){return this.baseFs.rmSync(this.mapToBase(t),r)}async linkPromise(t,r){return this.baseFs.linkPromise(this.mapToBase(t),this.mapToBase(r))}linkSync(t,r){return this.baseFs.linkSync(this.mapToBase(t),this.mapToBase(r))}async symlinkPromise(t,r,s){let a=this.mapToBase(r);if(this.pathUtils.isAbsolute(t))return this.baseFs.symlinkPromise(this.mapToBase(t),a,s);let n=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),t)),c=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(a),n);return this.baseFs.symlinkPromise(c,a,s)}symlinkSync(t,r,s){let a=this.mapToBase(r);if(this.pathUtils.isAbsolute(t))return this.baseFs.symlinkSync(this.mapToBase(t),a,s);let n=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),t)),c=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(a),n);return this.baseFs.symlinkSync(c,a,s)}async readFilePromise(t,r){return this.baseFs.readFilePromise(this.fsMapToBase(t),r)}readFileSync(t,r){return this.baseFs.readFileSync(this.fsMapToBase(t),r)}readdirPromise(t,r){return this.baseFs.readdirPromise(this.mapToBase(t),r)}readdirSync(t,r){return this.baseFs.readdirSync(this.mapToBase(t),r)}async readlinkPromise(t){return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(t)))}readlinkSync(t){return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(t)))}async truncatePromise(t,r){return this.baseFs.truncatePromise(this.mapToBase(t),r)}truncateSync(t,r){return this.baseFs.truncateSync(this.mapToBase(t),r)}async ftruncatePromise(t,r){return this.baseFs.ftruncatePromise(t,r)}ftruncateSync(t,r){return this.baseFs.ftruncateSync(t,r)}watch(t,r,s){return this.baseFs.watch(this.mapToBase(t),r,s)}watchFile(t,r,s){return this.baseFs.watchFile(this.mapToBase(t),r,s)}unwatchFile(t,r){return this.baseFs.unwatchFile(this.mapToBase(t),r)}fsMapToBase(t){return typeof t=="number"?t:this.mapToBase(t)}}});var Gf,vZ=Xe(()=>{Ip();Gf=class extends Gs{constructor(t,{baseFs:r,pathUtils:s}){super(s),this.target=t,this.baseFs=r}getRealPath(){return this.target}getBaseFs(){return this.baseFs}mapFromBase(t){return t}mapToBase(t){return t}}});function SZ(e){let t=e;return typeof e.path=="string"&&(t.path=fe.toPortablePath(e.path)),t}var DZ,Vn,Eg=Xe(()=>{DZ=et(Ie("fs"));yg();ll();Vn=class extends jf{constructor(t=DZ.default){super(),this.realFs=t}getExtractHint(){return!1}getRealPath(){return vt.root}resolve(t){return J.resolve(t)}async openPromise(t,r,s){return await new Promise((a,n)=>{this.realFs.open(fe.fromPortablePath(t),r,s,this.makeCallback(a,n))})}openSync(t,r,s){return this.realFs.openSync(fe.fromPortablePath(t),r,s)}async opendirPromise(t,r){return await new Promise((s,a)=>{typeof r<"u"?this.realFs.opendir(fe.fromPortablePath(t),r,this.makeCallback(s,a)):this.realFs.opendir(fe.fromPortablePath(t),this.makeCallback(s,a))}).then(s=>{let a=s;return Object.defineProperty(a,"path",{value:t,configurable:!0,writable:!0}),a})}opendirSync(t,r){let a=typeof r<"u"?this.realFs.opendirSync(fe.fromPortablePath(t),r):this.realFs.opendirSync(fe.fromPortablePath(t));return Object.defineProperty(a,"path",{value:t,configurable:!0,writable:!0}),a}async readPromise(t,r,s=0,a=0,n=-1){return await new Promise((c,f)=>{this.realFs.read(t,r,s,a,n,(p,h)=>{p?f(p):c(h)})})}readSync(t,r,s,a,n){return this.realFs.readSync(t,r,s,a,n)}async writePromise(t,r,s,a,n){return await new Promise((c,f)=>typeof r=="string"?this.realFs.write(t,r,s,this.makeCallback(c,f)):this.realFs.write(t,r,s,a,n,this.makeCallback(c,f)))}writeSync(t,r,s,a,n){return typeof r=="string"?this.realFs.writeSync(t,r,s):this.realFs.writeSync(t,r,s,a,n)}async closePromise(t){await new Promise((r,s)=>{this.realFs.close(t,this.makeCallback(r,s))})}closeSync(t){this.realFs.closeSync(t)}createReadStream(t,r){let s=t!==null?fe.fromPortablePath(t):t;return this.realFs.createReadStream(s,r)}createWriteStream(t,r){let s=t!==null?fe.fromPortablePath(t):t;return this.realFs.createWriteStream(s,r)}async realpathPromise(t){return await new Promise((r,s)=>{this.realFs.realpath(fe.fromPortablePath(t),{},this.makeCallback(r,s))}).then(r=>fe.toPortablePath(r))}realpathSync(t){return fe.toPortablePath(this.realFs.realpathSync(fe.fromPortablePath(t),{}))}async existsPromise(t){return await new Promise(r=>{this.realFs.exists(fe.fromPortablePath(t),r)})}accessSync(t,r){return this.realFs.accessSync(fe.fromPortablePath(t),r)}async accessPromise(t,r){return await new Promise((s,a)=>{this.realFs.access(fe.fromPortablePath(t),r,this.makeCallback(s,a))})}existsSync(t){return this.realFs.existsSync(fe.fromPortablePath(t))}async statPromise(t,r){return await new Promise((s,a)=>{r?this.realFs.stat(fe.fromPortablePath(t),r,this.makeCallback(s,a)):this.realFs.stat(fe.fromPortablePath(t),this.makeCallback(s,a))})}statSync(t,r){return r?this.realFs.statSync(fe.fromPortablePath(t),r):this.realFs.statSync(fe.fromPortablePath(t))}async fstatPromise(t,r){return await new Promise((s,a)=>{r?this.realFs.fstat(t,r,this.makeCallback(s,a)):this.realFs.fstat(t,this.makeCallback(s,a))})}fstatSync(t,r){return r?this.realFs.fstatSync(t,r):this.realFs.fstatSync(t)}async lstatPromise(t,r){return await new Promise((s,a)=>{r?this.realFs.lstat(fe.fromPortablePath(t),r,this.makeCallback(s,a)):this.realFs.lstat(fe.fromPortablePath(t),this.makeCallback(s,a))})}lstatSync(t,r){return r?this.realFs.lstatSync(fe.fromPortablePath(t),r):this.realFs.lstatSync(fe.fromPortablePath(t))}async fchmodPromise(t,r){return await new Promise((s,a)=>{this.realFs.fchmod(t,r,this.makeCallback(s,a))})}fchmodSync(t,r){return this.realFs.fchmodSync(t,r)}async chmodPromise(t,r){return await new Promise((s,a)=>{this.realFs.chmod(fe.fromPortablePath(t),r,this.makeCallback(s,a))})}chmodSync(t,r){return this.realFs.chmodSync(fe.fromPortablePath(t),r)}async fchownPromise(t,r,s){return await new Promise((a,n)=>{this.realFs.fchown(t,r,s,this.makeCallback(a,n))})}fchownSync(t,r,s){return this.realFs.fchownSync(t,r,s)}async chownPromise(t,r,s){return await new Promise((a,n)=>{this.realFs.chown(fe.fromPortablePath(t),r,s,this.makeCallback(a,n))})}chownSync(t,r,s){return this.realFs.chownSync(fe.fromPortablePath(t),r,s)}async renamePromise(t,r){return await new Promise((s,a)=>{this.realFs.rename(fe.fromPortablePath(t),fe.fromPortablePath(r),this.makeCallback(s,a))})}renameSync(t,r){return this.realFs.renameSync(fe.fromPortablePath(t),fe.fromPortablePath(r))}async copyFilePromise(t,r,s=0){return await new Promise((a,n)=>{this.realFs.copyFile(fe.fromPortablePath(t),fe.fromPortablePath(r),s,this.makeCallback(a,n))})}copyFileSync(t,r,s=0){return this.realFs.copyFileSync(fe.fromPortablePath(t),fe.fromPortablePath(r),s)}async appendFilePromise(t,r,s){return await new Promise((a,n)=>{let c=typeof t=="string"?fe.fromPortablePath(t):t;s?this.realFs.appendFile(c,r,s,this.makeCallback(a,n)):this.realFs.appendFile(c,r,this.makeCallback(a,n))})}appendFileSync(t,r,s){let a=typeof t=="string"?fe.fromPortablePath(t):t;s?this.realFs.appendFileSync(a,r,s):this.realFs.appendFileSync(a,r)}async writeFilePromise(t,r,s){return await new Promise((a,n)=>{let c=typeof t=="string"?fe.fromPortablePath(t):t;s?this.realFs.writeFile(c,r,s,this.makeCallback(a,n)):this.realFs.writeFile(c,r,this.makeCallback(a,n))})}writeFileSync(t,r,s){let a=typeof t=="string"?fe.fromPortablePath(t):t;s?this.realFs.writeFileSync(a,r,s):this.realFs.writeFileSync(a,r)}async unlinkPromise(t){return await new Promise((r,s)=>{this.realFs.unlink(fe.fromPortablePath(t),this.makeCallback(r,s))})}unlinkSync(t){return this.realFs.unlinkSync(fe.fromPortablePath(t))}async utimesPromise(t,r,s){return await new Promise((a,n)=>{this.realFs.utimes(fe.fromPortablePath(t),r,s,this.makeCallback(a,n))})}utimesSync(t,r,s){this.realFs.utimesSync(fe.fromPortablePath(t),r,s)}async lutimesPromise(t,r,s){return await new Promise((a,n)=>{this.realFs.lutimes(fe.fromPortablePath(t),r,s,this.makeCallback(a,n))})}lutimesSync(t,r,s){this.realFs.lutimesSync(fe.fromPortablePath(t),r,s)}async mkdirPromise(t,r){return await new Promise((s,a)=>{this.realFs.mkdir(fe.fromPortablePath(t),r,this.makeCallback(s,a))})}mkdirSync(t,r){return this.realFs.mkdirSync(fe.fromPortablePath(t),r)}async rmdirPromise(t,r){return await new Promise((s,a)=>{r?this.realFs.rmdir(fe.fromPortablePath(t),r,this.makeCallback(s,a)):this.realFs.rmdir(fe.fromPortablePath(t),this.makeCallback(s,a))})}rmdirSync(t,r){return this.realFs.rmdirSync(fe.fromPortablePath(t),r)}async rmPromise(t,r){return await new Promise((s,a)=>{r?this.realFs.rm(fe.fromPortablePath(t),r,this.makeCallback(s,a)):this.realFs.rm(fe.fromPortablePath(t),this.makeCallback(s,a))})}rmSync(t,r){return this.realFs.rmSync(fe.fromPortablePath(t),r)}async linkPromise(t,r){return await new Promise((s,a)=>{this.realFs.link(fe.fromPortablePath(t),fe.fromPortablePath(r),this.makeCallback(s,a))})}linkSync(t,r){return this.realFs.linkSync(fe.fromPortablePath(t),fe.fromPortablePath(r))}async symlinkPromise(t,r,s){return await new Promise((a,n)=>{this.realFs.symlink(fe.fromPortablePath(t.replace(/\/+$/,"")),fe.fromPortablePath(r),s,this.makeCallback(a,n))})}symlinkSync(t,r,s){return this.realFs.symlinkSync(fe.fromPortablePath(t.replace(/\/+$/,"")),fe.fromPortablePath(r),s)}async readFilePromise(t,r){return await new Promise((s,a)=>{let n=typeof t=="string"?fe.fromPortablePath(t):t;this.realFs.readFile(n,r,this.makeCallback(s,a))})}readFileSync(t,r){let s=typeof t=="string"?fe.fromPortablePath(t):t;return this.realFs.readFileSync(s,r)}async readdirPromise(t,r){return await new Promise((s,a)=>{r?r.recursive&&process.platform==="win32"?r.withFileTypes?this.realFs.readdir(fe.fromPortablePath(t),r,this.makeCallback(n=>s(n.map(SZ)),a)):this.realFs.readdir(fe.fromPortablePath(t),r,this.makeCallback(n=>s(n.map(fe.toPortablePath)),a)):this.realFs.readdir(fe.fromPortablePath(t),r,this.makeCallback(s,a)):this.realFs.readdir(fe.fromPortablePath(t),this.makeCallback(s,a))})}readdirSync(t,r){return r?r.recursive&&process.platform==="win32"?r.withFileTypes?this.realFs.readdirSync(fe.fromPortablePath(t),r).map(SZ):this.realFs.readdirSync(fe.fromPortablePath(t),r).map(fe.toPortablePath):this.realFs.readdirSync(fe.fromPortablePath(t),r):this.realFs.readdirSync(fe.fromPortablePath(t))}async readlinkPromise(t){return await new Promise((r,s)=>{this.realFs.readlink(fe.fromPortablePath(t),this.makeCallback(r,s))}).then(r=>fe.toPortablePath(r))}readlinkSync(t){return fe.toPortablePath(this.realFs.readlinkSync(fe.fromPortablePath(t)))}async truncatePromise(t,r){return await new Promise((s,a)=>{this.realFs.truncate(fe.fromPortablePath(t),r,this.makeCallback(s,a))})}truncateSync(t,r){return this.realFs.truncateSync(fe.fromPortablePath(t),r)}async ftruncatePromise(t,r){return await new Promise((s,a)=>{this.realFs.ftruncate(t,r,this.makeCallback(s,a))})}ftruncateSync(t,r){return this.realFs.ftruncateSync(t,r)}watch(t,r,s){return this.realFs.watch(fe.fromPortablePath(t),r,s)}watchFile(t,r,s){return this.realFs.watchFile(fe.fromPortablePath(t),r,s)}unwatchFile(t,r){return this.realFs.unwatchFile(fe.fromPortablePath(t),r)}makeCallback(t,r){return(s,a)=>{s?r(s):t(a)}}}});var bn,bZ=Xe(()=>{Eg();Ip();ll();bn=class extends Gs{constructor(t,{baseFs:r=new Vn}={}){super(J),this.target=this.pathUtils.normalize(t),this.baseFs=r}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.target)}resolve(t){return this.pathUtils.isAbsolute(t)?J.normalize(t):this.baseFs.resolve(J.join(this.target,t))}mapFromBase(t){return t}mapToBase(t){return this.pathUtils.isAbsolute(t)?t:this.pathUtils.join(this.target,t)}}});var PZ,qf,xZ=Xe(()=>{Eg();Ip();ll();PZ=vt.root,qf=class extends Gs{constructor(t,{baseFs:r=new Vn}={}){super(J),this.target=this.pathUtils.resolve(vt.root,t),this.baseFs=r}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.pathUtils.relative(vt.root,this.target))}getTarget(){return this.target}getBaseFs(){return this.baseFs}mapToBase(t){let r=this.pathUtils.normalize(t);if(this.pathUtils.isAbsolute(t))return this.pathUtils.resolve(this.target,this.pathUtils.relative(PZ,t));if(r.match(/^\.\.\/?/))throw new Error(`Resolving this path (${t}) would escape the jail`);return this.pathUtils.resolve(this.target,t)}mapFromBase(t){return this.pathUtils.resolve(PZ,this.pathUtils.relative(this.target,t))}}});var cE,kZ=Xe(()=>{Ip();cE=class extends Gs{constructor(r,s){super(s);this.instance=null;this.factory=r}get baseFs(){return this.instance||(this.instance=this.factory()),this.instance}set baseFs(r){this.instance=r}mapFromBase(r){return r}mapToBase(r){return r}}});var Ig,cl,$h,QZ=Xe(()=>{Ig=Ie("fs");yg();Eg();fU();zP();ll();cl=4278190080,$h=class extends jf{constructor({baseFs:r=new Vn,filter:s=null,magicByte:a=42,maxOpenFiles:n=1/0,useCache:c=!0,maxAge:f=5e3,typeCheck:p=Ig.constants.S_IFREG,getMountPoint:h,factoryPromise:E,factorySync:C}){if(Math.floor(a)!==a||!(a>1&&a<=127))throw new Error("The magic byte must be set to a round value between 1 and 127 included");super();this.fdMap=new Map;this.nextFd=3;this.isMount=new Set;this.notMount=new Set;this.realPaths=new Map;this.limitOpenFilesTimeout=null;this.baseFs=r,this.mountInstances=c?new Map:null,this.factoryPromise=E,this.factorySync=C,this.filter=s,this.getMountPoint=h,this.magic=a<<24,this.maxAge=f,this.maxOpenFiles=n,this.typeCheck=p}getExtractHint(r){return this.baseFs.getExtractHint(r)}getRealPath(){return this.baseFs.getRealPath()}saveAndClose(){if(gg(this),this.mountInstances)for(let[r,{childFs:s}]of this.mountInstances.entries())s.saveAndClose?.(),this.mountInstances.delete(r)}discardAndClose(){if(gg(this),this.mountInstances)for(let[r,{childFs:s}]of this.mountInstances.entries())s.discardAndClose?.(),this.mountInstances.delete(r)}resolve(r){return this.baseFs.resolve(r)}remapFd(r,s){let a=this.nextFd++|this.magic;return this.fdMap.set(a,[r,s]),a}async openPromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.openPromise(r,s,a),async(n,{subPath:c})=>this.remapFd(n,await n.openPromise(c,s,a)))}openSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.openSync(r,s,a),(n,{subPath:c})=>this.remapFd(n,n.openSync(c,s,a)))}async opendirPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.opendirPromise(r,s),async(a,{subPath:n})=>await a.opendirPromise(n,s),{requireSubpath:!1})}opendirSync(r,s){return this.makeCallSync(r,()=>this.baseFs.opendirSync(r,s),(a,{subPath:n})=>a.opendirSync(n,s),{requireSubpath:!1})}async readPromise(r,s,a,n,c){if((r&cl)!==this.magic)return await this.baseFs.readPromise(r,s,a,n,c);let f=this.fdMap.get(r);if(typeof f>"u")throw qo("read");let[p,h]=f;return await p.readPromise(h,s,a,n,c)}readSync(r,s,a,n,c){if((r&cl)!==this.magic)return this.baseFs.readSync(r,s,a,n,c);let f=this.fdMap.get(r);if(typeof f>"u")throw qo("readSync");let[p,h]=f;return p.readSync(h,s,a,n,c)}async writePromise(r,s,a,n,c){if((r&cl)!==this.magic)return typeof s=="string"?await this.baseFs.writePromise(r,s,a):await this.baseFs.writePromise(r,s,a,n,c);let f=this.fdMap.get(r);if(typeof f>"u")throw qo("write");let[p,h]=f;return typeof s=="string"?await p.writePromise(h,s,a):await p.writePromise(h,s,a,n,c)}writeSync(r,s,a,n,c){if((r&cl)!==this.magic)return typeof s=="string"?this.baseFs.writeSync(r,s,a):this.baseFs.writeSync(r,s,a,n,c);let f=this.fdMap.get(r);if(typeof f>"u")throw qo("writeSync");let[p,h]=f;return typeof s=="string"?p.writeSync(h,s,a):p.writeSync(h,s,a,n,c)}async closePromise(r){if((r&cl)!==this.magic)return await this.baseFs.closePromise(r);let s=this.fdMap.get(r);if(typeof s>"u")throw qo("close");this.fdMap.delete(r);let[a,n]=s;return await a.closePromise(n)}closeSync(r){if((r&cl)!==this.magic)return this.baseFs.closeSync(r);let s=this.fdMap.get(r);if(typeof s>"u")throw qo("closeSync");this.fdMap.delete(r);let[a,n]=s;return a.closeSync(n)}createReadStream(r,s){return r===null?this.baseFs.createReadStream(r,s):this.makeCallSync(r,()=>this.baseFs.createReadStream(r,s),(a,{archivePath:n,subPath:c})=>{let f=a.createReadStream(c,s);return f.path=fe.fromPortablePath(this.pathUtils.join(n,c)),f})}createWriteStream(r,s){return r===null?this.baseFs.createWriteStream(r,s):this.makeCallSync(r,()=>this.baseFs.createWriteStream(r,s),(a,{subPath:n})=>a.createWriteStream(n,s))}async realpathPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.realpathPromise(r),async(s,{archivePath:a,subPath:n})=>{let c=this.realPaths.get(a);return typeof c>"u"&&(c=await this.baseFs.realpathPromise(a),this.realPaths.set(a,c)),this.pathUtils.join(c,this.pathUtils.relative(vt.root,await s.realpathPromise(n)))})}realpathSync(r){return this.makeCallSync(r,()=>this.baseFs.realpathSync(r),(s,{archivePath:a,subPath:n})=>{let c=this.realPaths.get(a);return typeof c>"u"&&(c=this.baseFs.realpathSync(a),this.realPaths.set(a,c)),this.pathUtils.join(c,this.pathUtils.relative(vt.root,s.realpathSync(n)))})}async existsPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.existsPromise(r),async(s,{subPath:a})=>await s.existsPromise(a))}existsSync(r){return this.makeCallSync(r,()=>this.baseFs.existsSync(r),(s,{subPath:a})=>s.existsSync(a))}async accessPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.accessPromise(r,s),async(a,{subPath:n})=>await a.accessPromise(n,s))}accessSync(r,s){return this.makeCallSync(r,()=>this.baseFs.accessSync(r,s),(a,{subPath:n})=>a.accessSync(n,s))}async statPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.statPromise(r,s),async(a,{subPath:n})=>await a.statPromise(n,s))}statSync(r,s){return this.makeCallSync(r,()=>this.baseFs.statSync(r,s),(a,{subPath:n})=>a.statSync(n,s))}async fstatPromise(r,s){if((r&cl)!==this.magic)return this.baseFs.fstatPromise(r,s);let a=this.fdMap.get(r);if(typeof a>"u")throw qo("fstat");let[n,c]=a;return n.fstatPromise(c,s)}fstatSync(r,s){if((r&cl)!==this.magic)return this.baseFs.fstatSync(r,s);let a=this.fdMap.get(r);if(typeof a>"u")throw qo("fstatSync");let[n,c]=a;return n.fstatSync(c,s)}async lstatPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.lstatPromise(r,s),async(a,{subPath:n})=>await a.lstatPromise(n,s))}lstatSync(r,s){return this.makeCallSync(r,()=>this.baseFs.lstatSync(r,s),(a,{subPath:n})=>a.lstatSync(n,s))}async fchmodPromise(r,s){if((r&cl)!==this.magic)return this.baseFs.fchmodPromise(r,s);let a=this.fdMap.get(r);if(typeof a>"u")throw qo("fchmod");let[n,c]=a;return n.fchmodPromise(c,s)}fchmodSync(r,s){if((r&cl)!==this.magic)return this.baseFs.fchmodSync(r,s);let a=this.fdMap.get(r);if(typeof a>"u")throw qo("fchmodSync");let[n,c]=a;return n.fchmodSync(c,s)}async chmodPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.chmodPromise(r,s),async(a,{subPath:n})=>await a.chmodPromise(n,s))}chmodSync(r,s){return this.makeCallSync(r,()=>this.baseFs.chmodSync(r,s),(a,{subPath:n})=>a.chmodSync(n,s))}async fchownPromise(r,s,a){if((r&cl)!==this.magic)return this.baseFs.fchownPromise(r,s,a);let n=this.fdMap.get(r);if(typeof n>"u")throw qo("fchown");let[c,f]=n;return c.fchownPromise(f,s,a)}fchownSync(r,s,a){if((r&cl)!==this.magic)return this.baseFs.fchownSync(r,s,a);let n=this.fdMap.get(r);if(typeof n>"u")throw qo("fchownSync");let[c,f]=n;return c.fchownSync(f,s,a)}async chownPromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.chownPromise(r,s,a),async(n,{subPath:c})=>await n.chownPromise(c,s,a))}chownSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.chownSync(r,s,a),(n,{subPath:c})=>n.chownSync(c,s,a))}async renamePromise(r,s){return await this.makeCallPromise(r,async()=>await this.makeCallPromise(s,async()=>await this.baseFs.renamePromise(r,s),async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),async(a,{subPath:n})=>await this.makeCallPromise(s,async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},async(c,{subPath:f})=>{if(a!==c)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return await a.renamePromise(n,f)}))}renameSync(r,s){return this.makeCallSync(r,()=>this.makeCallSync(s,()=>this.baseFs.renameSync(r,s),()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),(a,{subPath:n})=>this.makeCallSync(s,()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},(c,{subPath:f})=>{if(a!==c)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return a.renameSync(n,f)}))}async copyFilePromise(r,s,a=0){let n=async(c,f,p,h)=>{if(a&Ig.constants.COPYFILE_FICLONE_FORCE)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${f}' -> ${h}'`),{code:"EXDEV"});if(a&Ig.constants.COPYFILE_EXCL&&await this.existsPromise(f))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${f}' -> '${h}'`),{code:"EEXIST"});let E;try{E=await c.readFilePromise(f)}catch{throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${f}' -> '${h}'`),{code:"EINVAL"})}await p.writeFilePromise(h,E)};return await this.makeCallPromise(r,async()=>await this.makeCallPromise(s,async()=>await this.baseFs.copyFilePromise(r,s,a),async(c,{subPath:f})=>await n(this.baseFs,r,c,f)),async(c,{subPath:f})=>await this.makeCallPromise(s,async()=>await n(c,f,this.baseFs,s),async(p,{subPath:h})=>c!==p?await n(c,f,p,h):await c.copyFilePromise(f,h,a)))}copyFileSync(r,s,a=0){let n=(c,f,p,h)=>{if(a&Ig.constants.COPYFILE_FICLONE_FORCE)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${f}' -> ${h}'`),{code:"EXDEV"});if(a&Ig.constants.COPYFILE_EXCL&&this.existsSync(f))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${f}' -> '${h}'`),{code:"EEXIST"});let E;try{E=c.readFileSync(f)}catch{throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${f}' -> '${h}'`),{code:"EINVAL"})}p.writeFileSync(h,E)};return this.makeCallSync(r,()=>this.makeCallSync(s,()=>this.baseFs.copyFileSync(r,s,a),(c,{subPath:f})=>n(this.baseFs,r,c,f)),(c,{subPath:f})=>this.makeCallSync(s,()=>n(c,f,this.baseFs,s),(p,{subPath:h})=>c!==p?n(c,f,p,h):c.copyFileSync(f,h,a)))}async appendFilePromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.appendFilePromise(r,s,a),async(n,{subPath:c})=>await n.appendFilePromise(c,s,a))}appendFileSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.appendFileSync(r,s,a),(n,{subPath:c})=>n.appendFileSync(c,s,a))}async writeFilePromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.writeFilePromise(r,s,a),async(n,{subPath:c})=>await n.writeFilePromise(c,s,a))}writeFileSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.writeFileSync(r,s,a),(n,{subPath:c})=>n.writeFileSync(c,s,a))}async unlinkPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.unlinkPromise(r),async(s,{subPath:a})=>await s.unlinkPromise(a))}unlinkSync(r){return this.makeCallSync(r,()=>this.baseFs.unlinkSync(r),(s,{subPath:a})=>s.unlinkSync(a))}async utimesPromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.utimesPromise(r,s,a),async(n,{subPath:c})=>await n.utimesPromise(c,s,a))}utimesSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.utimesSync(r,s,a),(n,{subPath:c})=>n.utimesSync(c,s,a))}async lutimesPromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.lutimesPromise(r,s,a),async(n,{subPath:c})=>await n.lutimesPromise(c,s,a))}lutimesSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.lutimesSync(r,s,a),(n,{subPath:c})=>n.lutimesSync(c,s,a))}async mkdirPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.mkdirPromise(r,s),async(a,{subPath:n})=>await a.mkdirPromise(n,s))}mkdirSync(r,s){return this.makeCallSync(r,()=>this.baseFs.mkdirSync(r,s),(a,{subPath:n})=>a.mkdirSync(n,s))}async rmdirPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.rmdirPromise(r,s),async(a,{subPath:n})=>await a.rmdirPromise(n,s))}rmdirSync(r,s){return this.makeCallSync(r,()=>this.baseFs.rmdirSync(r,s),(a,{subPath:n})=>a.rmdirSync(n,s))}async rmPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.rmPromise(r,s),async(a,{subPath:n})=>await a.rmPromise(n,s))}rmSync(r,s){return this.makeCallSync(r,()=>this.baseFs.rmSync(r,s),(a,{subPath:n})=>a.rmSync(n,s))}async linkPromise(r,s){return await this.makeCallPromise(s,async()=>await this.baseFs.linkPromise(r,s),async(a,{subPath:n})=>await a.linkPromise(r,n))}linkSync(r,s){return this.makeCallSync(s,()=>this.baseFs.linkSync(r,s),(a,{subPath:n})=>a.linkSync(r,n))}async symlinkPromise(r,s,a){return await this.makeCallPromise(s,async()=>await this.baseFs.symlinkPromise(r,s,a),async(n,{subPath:c})=>await n.symlinkPromise(r,c))}symlinkSync(r,s,a){return this.makeCallSync(s,()=>this.baseFs.symlinkSync(r,s,a),(n,{subPath:c})=>n.symlinkSync(r,c))}async readFilePromise(r,s){return this.makeCallPromise(r,async()=>await this.baseFs.readFilePromise(r,s),async(a,{subPath:n})=>await a.readFilePromise(n,s))}readFileSync(r,s){return this.makeCallSync(r,()=>this.baseFs.readFileSync(r,s),(a,{subPath:n})=>a.readFileSync(n,s))}async readdirPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.readdirPromise(r,s),async(a,{subPath:n})=>await a.readdirPromise(n,s),{requireSubpath:!1})}readdirSync(r,s){return this.makeCallSync(r,()=>this.baseFs.readdirSync(r,s),(a,{subPath:n})=>a.readdirSync(n,s),{requireSubpath:!1})}async readlinkPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.readlinkPromise(r),async(s,{subPath:a})=>await s.readlinkPromise(a))}readlinkSync(r){return this.makeCallSync(r,()=>this.baseFs.readlinkSync(r),(s,{subPath:a})=>s.readlinkSync(a))}async truncatePromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.truncatePromise(r,s),async(a,{subPath:n})=>await a.truncatePromise(n,s))}truncateSync(r,s){return this.makeCallSync(r,()=>this.baseFs.truncateSync(r,s),(a,{subPath:n})=>a.truncateSync(n,s))}async ftruncatePromise(r,s){if((r&cl)!==this.magic)return this.baseFs.ftruncatePromise(r,s);let a=this.fdMap.get(r);if(typeof a>"u")throw qo("ftruncate");let[n,c]=a;return n.ftruncatePromise(c,s)}ftruncateSync(r,s){if((r&cl)!==this.magic)return this.baseFs.ftruncateSync(r,s);let a=this.fdMap.get(r);if(typeof a>"u")throw qo("ftruncateSync");let[n,c]=a;return n.ftruncateSync(c,s)}watch(r,s,a){return this.makeCallSync(r,()=>this.baseFs.watch(r,s,a),(n,{subPath:c})=>n.watch(c,s,a))}watchFile(r,s,a){return this.makeCallSync(r,()=>this.baseFs.watchFile(r,s,a),()=>lE(this,r,s,a))}unwatchFile(r,s){return this.makeCallSync(r,()=>this.baseFs.unwatchFile(r,s),()=>dg(this,r,s))}async makeCallPromise(r,s,a,{requireSubpath:n=!0}={}){if(typeof r!="string")return await s();let c=this.resolve(r),f=this.findMount(c);return f?n&&f.subPath==="/"?await s():await this.getMountPromise(f.archivePath,async p=>await a(p,f)):await s()}makeCallSync(r,s,a,{requireSubpath:n=!0}={}){if(typeof r!="string")return s();let c=this.resolve(r),f=this.findMount(c);return!f||n&&f.subPath==="/"?s():this.getMountSync(f.archivePath,p=>a(p,f))}findMount(r){if(this.filter&&!this.filter.test(r))return null;let s="";for(;;){let a=r.substring(s.length),n=this.getMountPoint(a,s);if(!n)return null;if(s=this.pathUtils.join(s,n),!this.isMount.has(s)){if(this.notMount.has(s))continue;try{if(this.typeCheck!==null&&(this.baseFs.statSync(s).mode&Ig.constants.S_IFMT)!==this.typeCheck){this.notMount.add(s);continue}}catch{return null}this.isMount.add(s)}return{archivePath:s,subPath:this.pathUtils.join(vt.root,r.substring(s.length))}}}limitOpenFiles(r){if(this.mountInstances===null)return;let s=Date.now(),a=s+this.maxAge,n=r===null?0:this.mountInstances.size-r;for(let[c,{childFs:f,expiresAt:p,refCount:h}]of this.mountInstances.entries())if(!(h!==0||f.hasOpenFileHandles?.())){if(s>=p){f.saveAndClose?.(),this.mountInstances.delete(c),n-=1;continue}else if(r===null||n<=0){a=p;break}f.saveAndClose?.(),this.mountInstances.delete(c),n-=1}this.limitOpenFilesTimeout===null&&(r===null&&this.mountInstances.size>0||r!==null)&&isFinite(a)&&(this.limitOpenFilesTimeout=setTimeout(()=>{this.limitOpenFilesTimeout=null,this.limitOpenFiles(null)},a-s).unref())}async getMountPromise(r,s){if(this.mountInstances){let a=this.mountInstances.get(r);if(!a){let n=await this.factoryPromise(this.baseFs,r);a=this.mountInstances.get(r),a||(a={childFs:n(),expiresAt:0,refCount:0})}this.mountInstances.delete(r),this.limitOpenFiles(this.maxOpenFiles-1),this.mountInstances.set(r,a),a.expiresAt=Date.now()+this.maxAge,a.refCount+=1;try{return await s(a.childFs)}finally{a.refCount-=1}}else{let a=(await this.factoryPromise(this.baseFs,r))();try{return await s(a)}finally{a.saveAndClose?.()}}}getMountSync(r,s){if(this.mountInstances){let a=this.mountInstances.get(r);return a||(a={childFs:this.factorySync(this.baseFs,r),expiresAt:0,refCount:0}),this.mountInstances.delete(r),this.limitOpenFiles(this.maxOpenFiles-1),this.mountInstances.set(r,a),a.expiresAt=Date.now()+this.maxAge,s(a.childFs)}else{let a=this.factorySync(this.baseFs,r);try{return s(a)}finally{a.saveAndClose?.()}}}}});var er,nx,RZ=Xe(()=>{yg();ll();er=()=>Object.assign(new Error("ENOSYS: unsupported filesystem access"),{code:"ENOSYS"}),nx=class e extends Ep{static{this.instance=new e}constructor(){super(J)}getExtractHint(){throw er()}getRealPath(){throw er()}resolve(){throw er()}async openPromise(){throw er()}openSync(){throw er()}async opendirPromise(){throw er()}opendirSync(){throw er()}async readPromise(){throw er()}readSync(){throw er()}async writePromise(){throw er()}writeSync(){throw er()}async closePromise(){throw er()}closeSync(){throw er()}createWriteStream(){throw er()}createReadStream(){throw er()}async realpathPromise(){throw er()}realpathSync(){throw er()}async readdirPromise(){throw er()}readdirSync(){throw er()}async existsPromise(t){throw er()}existsSync(t){throw er()}async accessPromise(){throw er()}accessSync(){throw er()}async statPromise(){throw er()}statSync(){throw er()}async fstatPromise(t){throw er()}fstatSync(t){throw er()}async lstatPromise(t){throw er()}lstatSync(t){throw er()}async fchmodPromise(){throw er()}fchmodSync(){throw er()}async chmodPromise(){throw er()}chmodSync(){throw er()}async fchownPromise(){throw er()}fchownSync(){throw er()}async chownPromise(){throw er()}chownSync(){throw er()}async mkdirPromise(){throw er()}mkdirSync(){throw er()}async rmdirPromise(){throw er()}rmdirSync(){throw er()}async rmPromise(){throw er()}rmSync(){throw er()}async linkPromise(){throw er()}linkSync(){throw er()}async symlinkPromise(){throw er()}symlinkSync(){throw er()}async renamePromise(){throw er()}renameSync(){throw er()}async copyFilePromise(){throw er()}copyFileSync(){throw er()}async appendFilePromise(){throw er()}appendFileSync(){throw er()}async writeFilePromise(){throw er()}writeFileSync(){throw er()}async unlinkPromise(){throw er()}unlinkSync(){throw er()}async utimesPromise(){throw er()}utimesSync(){throw er()}async lutimesPromise(){throw er()}lutimesSync(){throw er()}async readFilePromise(){throw er()}readFileSync(){throw er()}async readlinkPromise(){throw er()}readlinkSync(){throw er()}async truncatePromise(){throw er()}truncateSync(){throw er()}async ftruncatePromise(t,r){throw er()}ftruncateSync(t,r){throw er()}watch(){throw er()}watchFile(){throw er()}unwatchFile(){throw er()}}});var e0,TZ=Xe(()=>{Ip();ll();e0=class extends Gs{constructor(t){super(fe),this.baseFs=t}mapFromBase(t){return fe.fromPortablePath(t)}mapToBase(t){return fe.toPortablePath(t)}}});var Vje,AU,Jje,mo,FZ=Xe(()=>{Eg();Ip();ll();Vje=/^[0-9]+$/,AU=/^(\/(?:[^/]+\/)*?(?:\$\$virtual|__virtual__))((?:\/((?:[^/]+-)?[a-f0-9]+)(?:\/([^/]+))?)?((?:\/.*)?))$/,Jje=/^([^/]+-)?[a-f0-9]+$/,mo=class e extends Gs{static makeVirtualPath(t,r,s){if(J.basename(t)!=="__virtual__")throw new Error('Assertion failed: Virtual folders must be named "__virtual__"');if(!J.basename(r).match(Jje))throw new Error("Assertion failed: Virtual components must be ended by an hexadecimal hash");let n=J.relative(J.dirname(t),s).split("/"),c=0;for(;c{pU=et(Ie("buffer")),NZ=Ie("url"),OZ=Ie("util");Ip();ll();ix=class extends Gs{constructor(t){super(fe),this.baseFs=t}mapFromBase(t){return t}mapToBase(t){if(typeof t=="string")return t;if(t instanceof URL)return(0,NZ.fileURLToPath)(t);if(Buffer.isBuffer(t)){let r=t.toString();if(!Kje(t,r))throw new Error("Non-utf8 buffers are not supported at the moment. Please upvote the following issue if you encounter this error: https://github.com/yarnpkg/berry/issues/4942");return r}throw new Error(`Unsupported path type: ${(0,OZ.inspect)(t)}`)}}});var jZ,Wo,Cp,t0,sx,ox,uE,Qu,Ru,MZ,UZ,_Z,HZ,k2,GZ=Xe(()=>{jZ=Ie("readline"),Wo=Symbol("kBaseFs"),Cp=Symbol("kFd"),t0=Symbol("kClosePromise"),sx=Symbol("kCloseResolve"),ox=Symbol("kCloseReject"),uE=Symbol("kRefs"),Qu=Symbol("kRef"),Ru=Symbol("kUnref"),k2=class{constructor(t,r){this[HZ]=1;this[_Z]=void 0;this[UZ]=void 0;this[MZ]=void 0;this[Wo]=r,this[Cp]=t}get fd(){return this[Cp]}async appendFile(t,r){try{this[Qu](this.appendFile);let s=(typeof r=="string"?r:r?.encoding)??void 0;return await this[Wo].appendFilePromise(this.fd,t,s?{encoding:s}:void 0)}finally{this[Ru]()}}async chown(t,r){try{return this[Qu](this.chown),await this[Wo].fchownPromise(this.fd,t,r)}finally{this[Ru]()}}async chmod(t){try{return this[Qu](this.chmod),await this[Wo].fchmodPromise(this.fd,t)}finally{this[Ru]()}}createReadStream(t){return this[Wo].createReadStream(null,{...t,fd:this.fd})}createWriteStream(t){return this[Wo].createWriteStream(null,{...t,fd:this.fd})}datasync(){throw new Error("Method not implemented.")}sync(){throw new Error("Method not implemented.")}async read(t,r,s,a){try{this[Qu](this.read);let n,c;return ArrayBuffer.isView(t)?typeof r=="object"&&r!==null?(n=t,c=r?.offset??0,s=r?.length??n.byteLength-c,a=r?.position??null):(n=t,c=r??0,s??=0):(n=t?.buffer??Buffer.alloc(16384),c=t?.offset??0,s=t?.length??n.byteLength-c,a=t?.position??null),s===0?{bytesRead:s,buffer:n}:{bytesRead:await this[Wo].readPromise(this.fd,Buffer.isBuffer(n)?n:Buffer.from(n.buffer,n.byteOffset,n.byteLength),c,s,a),buffer:n}}finally{this[Ru]()}}async readFile(t){try{this[Qu](this.readFile);let r=(typeof t=="string"?t:t?.encoding)??void 0;return await this[Wo].readFilePromise(this.fd,r)}finally{this[Ru]()}}readLines(t){return(0,jZ.createInterface)({input:this.createReadStream(t),crlfDelay:1/0})}async stat(t){try{return this[Qu](this.stat),await this[Wo].fstatPromise(this.fd,t)}finally{this[Ru]()}}async truncate(t){try{return this[Qu](this.truncate),await this[Wo].ftruncatePromise(this.fd,t)}finally{this[Ru]()}}utimes(t,r){throw new Error("Method not implemented.")}async writeFile(t,r){try{this[Qu](this.writeFile);let s=(typeof r=="string"?r:r?.encoding)??void 0;await this[Wo].writeFilePromise(this.fd,t,s)}finally{this[Ru]()}}async write(...t){try{if(this[Qu](this.write),ArrayBuffer.isView(t[0])){let[r,s,a,n]=t;return{bytesWritten:await this[Wo].writePromise(this.fd,r,s??void 0,a??void 0,n??void 0),buffer:r}}else{let[r,s,a]=t;return{bytesWritten:await this[Wo].writePromise(this.fd,r,s,a),buffer:r}}}finally{this[Ru]()}}async writev(t,r){try{this[Qu](this.writev);let s=0;if(typeof r<"u")for(let a of t){let n=await this.write(a,void 0,void 0,r);s+=n.bytesWritten,r+=n.bytesWritten}else for(let a of t){let n=await this.write(a);s+=n.bytesWritten}return{buffers:t,bytesWritten:s}}finally{this[Ru]()}}readv(t,r){throw new Error("Method not implemented.")}close(){if(this[Cp]===-1)return Promise.resolve();if(this[t0])return this[t0];if(this[uE]--,this[uE]===0){let t=this[Cp];this[Cp]=-1,this[t0]=this[Wo].closePromise(t).finally(()=>{this[t0]=void 0})}else this[t0]=new Promise((t,r)=>{this[sx]=t,this[ox]=r}).finally(()=>{this[t0]=void 0,this[ox]=void 0,this[sx]=void 0});return this[t0]}[(Wo,Cp,HZ=uE,_Z=t0,UZ=sx,MZ=ox,Qu)](t){if(this[Cp]===-1){let r=new Error("file closed");throw r.code="EBADF",r.syscall=t.name,r}this[uE]++}[Ru](){if(this[uE]--,this[uE]===0){let t=this[Cp];this[Cp]=-1,this[Wo].closePromise(t).then(this[sx],this[ox])}}}});function Q2(e,t){t=new ix(t);let r=(s,a,n)=>{let c=s[a];s[a]=n,typeof c?.[fE.promisify.custom]<"u"&&(n[fE.promisify.custom]=c[fE.promisify.custom])};{r(e,"exists",(s,...a)=>{let c=typeof a[a.length-1]=="function"?a.pop():()=>{};process.nextTick(()=>{t.existsPromise(s).then(f=>{c(f)},()=>{c(!1)})})}),r(e,"read",(...s)=>{let[a,n,c,f,p,h]=s;if(s.length<=3){let E={};s.length<3?h=s[1]:(E=s[1],h=s[2]),{buffer:n=Buffer.alloc(16384),offset:c=0,length:f=n.byteLength,position:p}=E}if(c==null&&(c=0),f|=0,f===0){process.nextTick(()=>{h(null,0,n)});return}p==null&&(p=-1),process.nextTick(()=>{t.readPromise(a,n,c,f,p).then(E=>{h(null,E,n)},E=>{h(E,0,n)})})});for(let s of qZ){let a=s.replace(/Promise$/,"");if(typeof e[a]>"u")continue;let n=t[s];if(typeof n>"u")continue;r(e,a,(...f)=>{let h=typeof f[f.length-1]=="function"?f.pop():()=>{};process.nextTick(()=>{n.apply(t,f).then(E=>{h(null,E)},E=>{h(E)})})})}e.realpath.native=e.realpath}{r(e,"existsSync",s=>{try{return t.existsSync(s)}catch{return!1}}),r(e,"readSync",(...s)=>{let[a,n,c,f,p]=s;return s.length<=3&&({offset:c=0,length:f=n.byteLength,position:p}=s[2]||{}),c==null&&(c=0),f|=0,f===0?0:(p==null&&(p=-1),t.readSync(a,n,c,f,p))});for(let s of zje){let a=s;if(typeof e[a]>"u")continue;let n=t[s];typeof n>"u"||r(e,a,n.bind(t))}e.realpathSync.native=e.realpathSync}{let s=e.promises;for(let a of qZ){let n=a.replace(/Promise$/,"");if(typeof s[n]>"u")continue;let c=t[a];typeof c>"u"||a!=="open"&&r(s,n,(f,...p)=>f instanceof k2?f[n].apply(f,p):c.call(t,f,...p))}r(s,"open",async(...a)=>{let n=await t.openPromise(...a);return new k2(n,t)})}e.read[fE.promisify.custom]=async(s,a,...n)=>({bytesRead:await t.readPromise(s,a,...n),buffer:a}),e.write[fE.promisify.custom]=async(s,a,...n)=>({bytesWritten:await t.writePromise(s,a,...n),buffer:a})}function ax(e,t){let r=Object.create(e);return Q2(r,t),r}var fE,zje,qZ,WZ=Xe(()=>{fE=Ie("util");LZ();GZ();zje=new Set(["accessSync","appendFileSync","createReadStream","createWriteStream","chmodSync","fchmodSync","chownSync","fchownSync","closeSync","copyFileSync","linkSync","lstatSync","fstatSync","lutimesSync","mkdirSync","openSync","opendirSync","readlinkSync","readFileSync","readdirSync","readlinkSync","realpathSync","renameSync","rmdirSync","rmSync","statSync","symlinkSync","truncateSync","ftruncateSync","unlinkSync","unwatchFile","utimesSync","watch","watchFile","writeFileSync","writeSync"]),qZ=new Set(["accessPromise","appendFilePromise","fchmodPromise","chmodPromise","fchownPromise","chownPromise","closePromise","copyFilePromise","linkPromise","fstatPromise","lstatPromise","lutimesPromise","mkdirPromise","openPromise","opendirPromise","readdirPromise","realpathPromise","readFilePromise","readdirPromise","readlinkPromise","renamePromise","rmdirPromise","rmPromise","statPromise","symlinkPromise","truncatePromise","ftruncatePromise","unlinkPromise","utimesPromise","writeFilePromise","writeSync"])});function YZ(e){let t=Math.ceil(Math.random()*4294967296).toString(16).padStart(8,"0");return`${e}${t}`}function VZ(){if(hU)return hU;let e=fe.toPortablePath(JZ.default.tmpdir()),t=le.realpathSync(e);return process.once("exit",()=>{le.rmtempSync()}),hU={tmpdir:e,realTmpdir:t}}var JZ,Tu,hU,le,KZ=Xe(()=>{JZ=et(Ie("os"));Eg();ll();Tu=new Set,hU=null;le=Object.assign(new Vn,{detachTemp(e){Tu.delete(e)},mktempSync(e){let{tmpdir:t,realTmpdir:r}=VZ();for(;;){let s=YZ("xfs-");try{this.mkdirSync(J.join(t,s))}catch(n){if(n.code==="EEXIST")continue;throw n}let a=J.join(r,s);if(Tu.add(a),typeof e>"u")return a;try{return e(a)}finally{if(Tu.has(a)){Tu.delete(a);try{this.removeSync(a)}catch{}}}}},async mktempPromise(e){let{tmpdir:t,realTmpdir:r}=VZ();for(;;){let s=YZ("xfs-");try{await this.mkdirPromise(J.join(t,s))}catch(n){if(n.code==="EEXIST")continue;throw n}let a=J.join(r,s);if(Tu.add(a),typeof e>"u")return a;try{return await e(a)}finally{if(Tu.has(a)){Tu.delete(a);try{await this.removePromise(a)}catch{}}}}},async rmtempPromise(){await Promise.all(Array.from(Tu.values()).map(async e=>{try{await le.removePromise(e,{maxRetries:0}),Tu.delete(e)}catch{}}))},rmtempSync(){for(let e of Tu)try{le.removeSync(e),Tu.delete(e)}catch{}}})});var R2={};Vt(R2,{AliasFS:()=>Gf,BasePortableFakeFS:()=>jf,CustomDir:()=>x2,CwdFS:()=>bn,FakeFS:()=>Ep,Filename:()=>Er,JailFS:()=>qf,LazyFS:()=>cE,MountFS:()=>$h,NoFS:()=>nx,NodeFS:()=>Vn,PortablePath:()=>vt,PosixFS:()=>e0,ProxiedFS:()=>Gs,VirtualFS:()=>mo,constants:()=>Ai,errors:()=>or,extendFs:()=>ax,normalizeLineEndings:()=>mg,npath:()=>fe,opendir:()=>ex,patchFs:()=>Q2,ppath:()=>J,setupCopyIndex:()=>$P,statUtils:()=>al,unwatchAllFiles:()=>gg,unwatchFile:()=>dg,watchFile:()=>lE,xfs:()=>le});var Dt=Xe(()=>{AZ();zP();aU();uU();yZ();fU();yg();ll();ll();vZ();yg();bZ();xZ();kZ();QZ();RZ();Eg();TZ();Ip();FZ();WZ();KZ()});var e$=G((jbt,$Z)=>{$Z.exports=ZZ;ZZ.sync=Zje;var zZ=Ie("fs");function Xje(e,t){var r=t.pathExt!==void 0?t.pathExt:process.env.PATHEXT;if(!r||(r=r.split(";"),r.indexOf("")!==-1))return!0;for(var s=0;s{i$.exports=r$;r$.sync=$je;var t$=Ie("fs");function r$(e,t,r){t$.stat(e,function(s,a){r(s,s?!1:n$(a,t))})}function $je(e,t){return n$(t$.statSync(e),t)}function n$(e,t){return e.isFile()&&e6e(e,t)}function e6e(e,t){var r=e.mode,s=e.uid,a=e.gid,n=t.uid!==void 0?t.uid:process.getuid&&process.getuid(),c=t.gid!==void 0?t.gid:process.getgid&&process.getgid(),f=parseInt("100",8),p=parseInt("010",8),h=parseInt("001",8),E=f|p,C=r&h||r&p&&a===c||r&f&&s===n||r&E&&n===0;return C}});var a$=G((Wbt,o$)=>{var qbt=Ie("fs"),lx;process.platform==="win32"||global.TESTING_WINDOWS?lx=e$():lx=s$();o$.exports=dU;dU.sync=t6e;function dU(e,t,r){if(typeof t=="function"&&(r=t,t={}),!r){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(s,a){dU(e,t||{},function(n,c){n?a(n):s(c)})})}lx(e,t||{},function(s,a){s&&(s.code==="EACCES"||t&&t.ignoreErrors)&&(s=null,a=!1),r(s,a)})}function t6e(e,t){try{return lx.sync(e,t||{})}catch(r){if(t&&t.ignoreErrors||r.code==="EACCES")return!1;throw r}}});var h$=G((Ybt,p$)=>{var AE=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",l$=Ie("path"),r6e=AE?";":":",c$=a$(),u$=e=>Object.assign(new Error(`not found: ${e}`),{code:"ENOENT"}),f$=(e,t)=>{let r=t.colon||r6e,s=e.match(/\//)||AE&&e.match(/\\/)?[""]:[...AE?[process.cwd()]:[],...(t.path||process.env.PATH||"").split(r)],a=AE?t.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",n=AE?a.split(r):[""];return AE&&e.indexOf(".")!==-1&&n[0]!==""&&n.unshift(""),{pathEnv:s,pathExt:n,pathExtExe:a}},A$=(e,t,r)=>{typeof t=="function"&&(r=t,t={}),t||(t={});let{pathEnv:s,pathExt:a,pathExtExe:n}=f$(e,t),c=[],f=h=>new Promise((E,C)=>{if(h===s.length)return t.all&&c.length?E(c):C(u$(e));let S=s[h],x=/^".*"$/.test(S)?S.slice(1,-1):S,I=l$.join(x,e),T=!x&&/^\.[\\\/]/.test(e)?e.slice(0,2)+I:I;E(p(T,h,0))}),p=(h,E,C)=>new Promise((S,x)=>{if(C===a.length)return S(f(E+1));let I=a[C];c$(h+I,{pathExt:n},(T,O)=>{if(!T&&O)if(t.all)c.push(h+I);else return S(h+I);return S(p(h,E,C+1))})});return r?f(0).then(h=>r(null,h),r):f(0)},n6e=(e,t)=>{t=t||{};let{pathEnv:r,pathExt:s,pathExtExe:a}=f$(e,t),n=[];for(let c=0;c{"use strict";var d$=(e={})=>{let t=e.env||process.env;return(e.platform||process.platform)!=="win32"?"PATH":Object.keys(t).reverse().find(s=>s.toUpperCase()==="PATH")||"Path"};gU.exports=d$;gU.exports.default=d$});var I$=G((Jbt,E$)=>{"use strict";var m$=Ie("path"),i6e=h$(),s6e=g$();function y$(e,t){let r=e.options.env||process.env,s=process.cwd(),a=e.options.cwd!=null,n=a&&process.chdir!==void 0&&!process.chdir.disabled;if(n)try{process.chdir(e.options.cwd)}catch{}let c;try{c=i6e.sync(e.command,{path:r[s6e({env:r})],pathExt:t?m$.delimiter:void 0})}catch{}finally{n&&process.chdir(s)}return c&&(c=m$.resolve(a?e.options.cwd:"",c)),c}function o6e(e){return y$(e)||y$(e,!0)}E$.exports=o6e});var C$=G((Kbt,yU)=>{"use strict";var mU=/([()\][%!^"`<>&|;, *?])/g;function a6e(e){return e=e.replace(mU,"^$1"),e}function l6e(e,t){return e=`${e}`,e=e.replace(/(?=(\\+?)?)\1"/g,'$1$1\\"'),e=e.replace(/(?=(\\+?)?)\1$/,"$1$1"),e=`"${e}"`,e=e.replace(mU,"^$1"),t&&(e=e.replace(mU,"^$1")),e}yU.exports.command=a6e;yU.exports.argument=l6e});var B$=G((zbt,w$)=>{"use strict";w$.exports=/^#!(.*)/});var S$=G((Xbt,v$)=>{"use strict";var c6e=B$();v$.exports=(e="")=>{let t=e.match(c6e);if(!t)return null;let[r,s]=t[0].replace(/#! ?/,"").split(" "),a=r.split("/").pop();return a==="env"?s:s?`${a} ${s}`:a}});var b$=G((Zbt,D$)=>{"use strict";var EU=Ie("fs"),u6e=S$();function f6e(e){let r=Buffer.alloc(150),s;try{s=EU.openSync(e,"r"),EU.readSync(s,r,0,150,0),EU.closeSync(s)}catch{}return u6e(r.toString())}D$.exports=f6e});var Q$=G(($bt,k$)=>{"use strict";var A6e=Ie("path"),P$=I$(),x$=C$(),p6e=b$(),h6e=process.platform==="win32",d6e=/\.(?:com|exe)$/i,g6e=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function m6e(e){e.file=P$(e);let t=e.file&&p6e(e.file);return t?(e.args.unshift(e.file),e.command=t,P$(e)):e.file}function y6e(e){if(!h6e)return e;let t=m6e(e),r=!d6e.test(t);if(e.options.forceShell||r){let s=g6e.test(t);e.command=A6e.normalize(e.command),e.command=x$.command(e.command),e.args=e.args.map(n=>x$.argument(n,s));let a=[e.command].concat(e.args).join(" ");e.args=["/d","/s","/c",`"${a}"`],e.command=process.env.comspec||"cmd.exe",e.options.windowsVerbatimArguments=!0}return e}function E6e(e,t,r){t&&!Array.isArray(t)&&(r=t,t=null),t=t?t.slice(0):[],r=Object.assign({},r);let s={command:e,args:t,options:r,file:void 0,original:{command:e,args:t}};return r.shell?s:y6e(s)}k$.exports=E6e});var F$=G((ePt,T$)=>{"use strict";var IU=process.platform==="win32";function CU(e,t){return Object.assign(new Error(`${t} ${e.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${t} ${e.command}`,path:e.command,spawnargs:e.args})}function I6e(e,t){if(!IU)return;let r=e.emit;e.emit=function(s,a){if(s==="exit"){let n=R$(a,t);if(n)return r.call(e,"error",n)}return r.apply(e,arguments)}}function R$(e,t){return IU&&e===1&&!t.file?CU(t.original,"spawn"):null}function C6e(e,t){return IU&&e===1&&!t.file?CU(t.original,"spawnSync"):null}T$.exports={hookChildProcess:I6e,verifyENOENT:R$,verifyENOENTSync:C6e,notFoundError:CU}});var vU=G((tPt,pE)=>{"use strict";var N$=Ie("child_process"),wU=Q$(),BU=F$();function O$(e,t,r){let s=wU(e,t,r),a=N$.spawn(s.command,s.args,s.options);return BU.hookChildProcess(a,s),a}function w6e(e,t,r){let s=wU(e,t,r),a=N$.spawnSync(s.command,s.args,s.options);return a.error=a.error||BU.verifyENOENTSync(a.status,s),a}pE.exports=O$;pE.exports.spawn=O$;pE.exports.sync=w6e;pE.exports._parse=wU;pE.exports._enoent=BU});var M$=G((rPt,L$)=>{"use strict";function B6e(e,t){function r(){this.constructor=e}r.prototype=t.prototype,e.prototype=new r}function Cg(e,t,r,s){this.message=e,this.expected=t,this.found=r,this.location=s,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Cg)}B6e(Cg,Error);Cg.buildMessage=function(e,t){var r={literal:function(h){return'"'+a(h.text)+'"'},class:function(h){var E="",C;for(C=0;C0){for(C=1,S=1;C>",b=ur(">>",!1),y=">&",F=ur(">&",!1),z=">",X=ur(">",!1),$="<<<",se=ur("<<<",!1),xe="<&",Fe=ur("<&",!1),ut="<",Ct=ur("<",!1),qt=function(N){return{type:"argument",segments:[].concat(...N)}},ir=function(N){return N},Pt="$'",gn=ur("$'",!1),Pr="'",Cr=ur("'",!1),Or=function(N){return[{type:"text",text:N}]},on='""',li=ur('""',!1),Do=function(){return{type:"text",text:""}},ns='"',so=ur('"',!1),bo=function(N){return N},ji=function(N){return{type:"arithmetic",arithmetic:N,quoted:!0}},oo=function(N){return{type:"shell",shell:N,quoted:!0}},Po=function(N){return{type:"variable",...N,quoted:!0}},TA=function(N){return{type:"text",text:N}},df=function(N){return{type:"arithmetic",arithmetic:N,quoted:!1}},dh=function(N){return{type:"shell",shell:N,quoted:!1}},gh=function(N){return{type:"variable",...N,quoted:!1}},ao=function(N){return{type:"glob",pattern:N}},Gn=/^[^']/,Ns=zi(["'"],!0,!1),lo=function(N){return N.join("")},su=/^[^$"]/,ou=zi(["$",'"'],!0,!1),au=`\\ +`,FA=ur(`\\ +`,!1),NA=function(){return""},fa="\\",Aa=ur("\\",!1),OA=/^[\\$"`]/,dr=zi(["\\","$",'"',"`"],!1,!1),xo=function(N){return N},Ga="\\a",Ue=ur("\\a",!1),wr=function(){return"a"},gf="\\b",LA=ur("\\b",!1),MA=function(){return"\b"},lu=/^[Ee]/,cu=zi(["E","e"],!1,!1),lc=function(){return"\x1B"},we="\\f",Nt=ur("\\f",!1),cc=function(){return"\f"},Oi="\\n",co=ur("\\n",!1),Tt=function(){return` +`},Qn="\\r",pa=ur("\\r",!1),Gi=function(){return"\r"},Li="\\t",qa=ur("\\t",!1),mn=function(){return" "},Xn="\\v",uu=ur("\\v",!1),mh=function(){return"\v"},Wa=/^[\\'"?]/,Ya=zi(["\\","'",'"',"?"],!1,!1),Va=function(N){return String.fromCharCode(parseInt(N,16))},$e="\\x",Ja=ur("\\x",!1),mf="\\u",uc=ur("\\u",!1),vn="\\U",ha=ur("\\U",!1),UA=function(N){return String.fromCodePoint(parseInt(N,16))},_A=/^[0-7]/,da=zi([["0","7"]],!1,!1),kl=/^[0-9a-fA-f]/,Ut=zi([["0","9"],["a","f"],["A","f"]],!1,!1),Rn=Cf(),ga="{}",Ka=ur("{}",!1),is=function(){return"{}"},fc="-",fu=ur("-",!1),Ac="+",za=ur("+",!1),Mi=".",Bs=ur(".",!1),Ql=function(N,K,re){return{type:"number",value:(N==="-"?-1:1)*parseFloat(K.join("")+"."+re.join(""))}},yf=function(N,K){return{type:"number",value:(N==="-"?-1:1)*parseInt(K.join(""))}},pc=function(N){return{type:"variable",...N}},Bi=function(N){return{type:"variable",name:N}},Tn=function(N){return N},hc="*",Ke=ur("*",!1),ot="/",St=ur("/",!1),lr=function(N,K,re){return{type:K==="*"?"multiplication":"division",right:re}},ee=function(N,K){return K.reduce((re,de)=>({left:re,...de}),N)},ye=function(N,K,re){return{type:K==="+"?"addition":"subtraction",right:re}},Oe="$((",mt=ur("$((",!1),Et="))",bt=ur("))",!1),tr=function(N){return N},pn="$(",ci=ur("$(",!1),qi=function(N){return N},Fn="${",Xa=ur("${",!1),Iy=":-",q1=ur(":-",!1),ko=function(N,K){return{name:N,defaultValue:K}},Cy=":-}",yh=ur(":-}",!1),W1=function(N){return{name:N,defaultValue:[]}},Qo=":+",Eh=ur(":+",!1),Ih=function(N,K){return{name:N,alternativeValue:K}},Au=":+}",Ch=ur(":+}",!1),Rd=function(N){return{name:N,alternativeValue:[]}},Td=function(N){return{name:N}},Fd="$",wy=ur("$",!1),Ef=function(N){return t.isGlobPattern(N)},Ro=function(N){return N},Rl=/^[a-zA-Z0-9_]/,wh=zi([["a","z"],["A","Z"],["0","9"],"_"],!1,!1),Nd=function(){return Dy()},Tl=/^[$@*?#a-zA-Z0-9_\-]/,Fl=zi(["$","@","*","?","#",["a","z"],["A","Z"],["0","9"],"_","-"],!1,!1),By=/^[()}<>$|&; \t"']/,HA=zi(["(",")","}","<",">","$","|","&",";"," "," ",'"',"'"],!1,!1),vy=/^[<>&; \t"']/,Sy=zi(["<",">","&",";"," "," ",'"',"'"],!1,!1),jA=/^[ \t]/,GA=zi([" "," "],!1,!1),W=0,xt=0,qA=[{line:1,column:1}],To=0,If=[],yt=0,pu;if("startRule"in t){if(!(t.startRule in s))throw new Error(`Can't start parsing from rule "`+t.startRule+'".');a=s[t.startRule]}function Dy(){return e.substring(xt,W)}function Od(){return wf(xt,W)}function Y1(N,K){throw K=K!==void 0?K:wf(xt,W),WA([Ld(N)],e.substring(xt,W),K)}function Bh(N,K){throw K=K!==void 0?K:wf(xt,W),mi(N,K)}function ur(N,K){return{type:"literal",text:N,ignoreCase:K}}function zi(N,K,re){return{type:"class",parts:N,inverted:K,ignoreCase:re}}function Cf(){return{type:"any"}}function Za(){return{type:"end"}}function Ld(N){return{type:"other",description:N}}function hu(N){var K=qA[N],re;if(K)return K;for(re=N-1;!qA[re];)re--;for(K=qA[re],K={line:K.line,column:K.column};reTo&&(To=W,If=[]),If.push(N))}function mi(N,K){return new Cg(N,null,null,K)}function WA(N,K,re){return new Cg(Cg.buildMessage(N,K),N,K,re)}function $a(){var N,K,re;for(N=W,K=[],re=kt();re!==r;)K.push(re),re=kt();return K!==r?(re=ma(),re===r&&(re=null),re!==r?(xt=N,K=n(re),N=K):(W=N,N=r)):(W=N,N=r),N}function ma(){var N,K,re,de,Je;if(N=W,K=vh(),K!==r){for(re=[],de=kt();de!==r;)re.push(de),de=kt();re!==r?(de=Md(),de!==r?(Je=el(),Je===r&&(Je=null),Je!==r?(xt=N,K=c(K,de,Je),N=K):(W=N,N=r)):(W=N,N=r)):(W=N,N=r)}else W=N,N=r;if(N===r)if(N=W,K=vh(),K!==r){for(re=[],de=kt();de!==r;)re.push(de),de=kt();re!==r?(de=Md(),de===r&&(de=null),de!==r?(xt=N,K=f(K,de),N=K):(W=N,N=r)):(W=N,N=r)}else W=N,N=r;return N}function el(){var N,K,re,de,Je;for(N=W,K=[],re=kt();re!==r;)K.push(re),re=kt();if(K!==r)if(re=ma(),re!==r){for(de=[],Je=kt();Je!==r;)de.push(Je),Je=kt();de!==r?(xt=N,K=p(re),N=K):(W=N,N=r)}else W=N,N=r;else W=N,N=r;return N}function Md(){var N;return e.charCodeAt(W)===59?(N=h,W++):(N=r,yt===0&&wt(E)),N===r&&(e.charCodeAt(W)===38?(N=C,W++):(N=r,yt===0&&wt(S))),N}function vh(){var N,K,re;return N=W,K=YA(),K!==r?(re=Ud(),re===r&&(re=null),re!==r?(xt=N,K=x(K,re),N=K):(W=N,N=r)):(W=N,N=r),N}function Ud(){var N,K,re,de,Je,pt,gr;for(N=W,K=[],re=kt();re!==r;)K.push(re),re=kt();if(K!==r)if(re=by(),re!==r){for(de=[],Je=kt();Je!==r;)de.push(Je),Je=kt();if(de!==r)if(Je=vh(),Je!==r){for(pt=[],gr=kt();gr!==r;)pt.push(gr),gr=kt();pt!==r?(xt=N,K=I(re,Je),N=K):(W=N,N=r)}else W=N,N=r;else W=N,N=r}else W=N,N=r;else W=N,N=r;return N}function by(){var N;return e.substr(W,2)===T?(N=T,W+=2):(N=r,yt===0&&wt(O)),N===r&&(e.substr(W,2)===U?(N=U,W+=2):(N=r,yt===0&&wt(V))),N}function YA(){var N,K,re;return N=W,K=Bf(),K!==r?(re=_d(),re===r&&(re=null),re!==r?(xt=N,K=te(K,re),N=K):(W=N,N=r)):(W=N,N=r),N}function _d(){var N,K,re,de,Je,pt,gr;for(N=W,K=[],re=kt();re!==r;)K.push(re),re=kt();if(K!==r)if(re=du(),re!==r){for(de=[],Je=kt();Je!==r;)de.push(Je),Je=kt();if(de!==r)if(Je=YA(),Je!==r){for(pt=[],gr=kt();gr!==r;)pt.push(gr),gr=kt();pt!==r?(xt=N,K=ie(re,Je),N=K):(W=N,N=r)}else W=N,N=r;else W=N,N=r}else W=N,N=r;else W=N,N=r;return N}function du(){var N;return e.substr(W,2)===ue?(N=ue,W+=2):(N=r,yt===0&&wt(ae)),N===r&&(e.charCodeAt(W)===124?(N=ge,W++):(N=r,yt===0&&wt(Ae))),N}function gu(){var N,K,re,de,Je,pt;if(N=W,K=bh(),K!==r)if(e.charCodeAt(W)===61?(re=Ce,W++):(re=r,yt===0&&wt(Ee)),re!==r)if(de=VA(),de!==r){for(Je=[],pt=kt();pt!==r;)Je.push(pt),pt=kt();Je!==r?(xt=N,K=d(K,de),N=K):(W=N,N=r)}else W=N,N=r;else W=N,N=r;else W=N,N=r;if(N===r)if(N=W,K=bh(),K!==r)if(e.charCodeAt(W)===61?(re=Ce,W++):(re=r,yt===0&&wt(Ee)),re!==r){for(de=[],Je=kt();Je!==r;)de.push(Je),Je=kt();de!==r?(xt=N,K=Se(K),N=K):(W=N,N=r)}else W=N,N=r;else W=N,N=r;return N}function Bf(){var N,K,re,de,Je,pt,gr,vr,_n,yi,vs;for(N=W,K=[],re=kt();re!==r;)K.push(re),re=kt();if(K!==r)if(e.charCodeAt(W)===40?(re=Be,W++):(re=r,yt===0&&wt(me)),re!==r){for(de=[],Je=kt();Je!==r;)de.push(Je),Je=kt();if(de!==r)if(Je=ma(),Je!==r){for(pt=[],gr=kt();gr!==r;)pt.push(gr),gr=kt();if(pt!==r)if(e.charCodeAt(W)===41?(gr=ce,W++):(gr=r,yt===0&&wt(Z)),gr!==r){for(vr=[],_n=kt();_n!==r;)vr.push(_n),_n=kt();if(vr!==r){for(_n=[],yi=qn();yi!==r;)_n.push(yi),yi=qn();if(_n!==r){for(yi=[],vs=kt();vs!==r;)yi.push(vs),vs=kt();yi!==r?(xt=N,K=De(Je,_n),N=K):(W=N,N=r)}else W=N,N=r}else W=N,N=r}else W=N,N=r;else W=N,N=r}else W=N,N=r;else W=N,N=r}else W=N,N=r;else W=N,N=r;if(N===r){for(N=W,K=[],re=kt();re!==r;)K.push(re),re=kt();if(K!==r)if(e.charCodeAt(W)===123?(re=Qe,W++):(re=r,yt===0&&wt(st)),re!==r){for(de=[],Je=kt();Je!==r;)de.push(Je),Je=kt();if(de!==r)if(Je=ma(),Je!==r){for(pt=[],gr=kt();gr!==r;)pt.push(gr),gr=kt();if(pt!==r)if(e.charCodeAt(W)===125?(gr=_,W++):(gr=r,yt===0&&wt(tt)),gr!==r){for(vr=[],_n=kt();_n!==r;)vr.push(_n),_n=kt();if(vr!==r){for(_n=[],yi=qn();yi!==r;)_n.push(yi),yi=qn();if(_n!==r){for(yi=[],vs=kt();vs!==r;)yi.push(vs),vs=kt();yi!==r?(xt=N,K=Ne(Je,_n),N=K):(W=N,N=r)}else W=N,N=r}else W=N,N=r}else W=N,N=r;else W=N,N=r}else W=N,N=r;else W=N,N=r}else W=N,N=r;else W=N,N=r;if(N===r){for(N=W,K=[],re=kt();re!==r;)K.push(re),re=kt();if(K!==r){for(re=[],de=gu();de!==r;)re.push(de),de=gu();if(re!==r){for(de=[],Je=kt();Je!==r;)de.push(Je),Je=kt();if(de!==r){if(Je=[],pt=mu(),pt!==r)for(;pt!==r;)Je.push(pt),pt=mu();else Je=r;if(Je!==r){for(pt=[],gr=kt();gr!==r;)pt.push(gr),gr=kt();pt!==r?(xt=N,K=ke(re,Je),N=K):(W=N,N=r)}else W=N,N=r}else W=N,N=r}else W=N,N=r}else W=N,N=r;if(N===r){for(N=W,K=[],re=kt();re!==r;)K.push(re),re=kt();if(K!==r){if(re=[],de=gu(),de!==r)for(;de!==r;)re.push(de),de=gu();else re=r;if(re!==r){for(de=[],Je=kt();Je!==r;)de.push(Je),Je=kt();de!==r?(xt=N,K=be(re),N=K):(W=N,N=r)}else W=N,N=r}else W=N,N=r}}}return N}function Os(){var N,K,re,de,Je;for(N=W,K=[],re=kt();re!==r;)K.push(re),re=kt();if(K!==r){if(re=[],de=Pi(),de!==r)for(;de!==r;)re.push(de),de=Pi();else re=r;if(re!==r){for(de=[],Je=kt();Je!==r;)de.push(Je),Je=kt();de!==r?(xt=N,K=je(re),N=K):(W=N,N=r)}else W=N,N=r}else W=N,N=r;return N}function mu(){var N,K,re;for(N=W,K=[],re=kt();re!==r;)K.push(re),re=kt();if(K!==r?(re=qn(),re!==r?(xt=N,K=Re(re),N=K):(W=N,N=r)):(W=N,N=r),N===r){for(N=W,K=[],re=kt();re!==r;)K.push(re),re=kt();K!==r?(re=Pi(),re!==r?(xt=N,K=Re(re),N=K):(W=N,N=r)):(W=N,N=r)}return N}function qn(){var N,K,re,de,Je;for(N=W,K=[],re=kt();re!==r;)K.push(re),re=kt();return K!==r?(ct.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&wt(Me)),re===r&&(re=null),re!==r?(de=ss(),de!==r?(Je=Pi(),Je!==r?(xt=N,K=P(re,de,Je),N=K):(W=N,N=r)):(W=N,N=r)):(W=N,N=r)):(W=N,N=r),N}function ss(){var N;return e.substr(W,2)===w?(N=w,W+=2):(N=r,yt===0&&wt(b)),N===r&&(e.substr(W,2)===y?(N=y,W+=2):(N=r,yt===0&&wt(F)),N===r&&(e.charCodeAt(W)===62?(N=z,W++):(N=r,yt===0&&wt(X)),N===r&&(e.substr(W,3)===$?(N=$,W+=3):(N=r,yt===0&&wt(se)),N===r&&(e.substr(W,2)===xe?(N=xe,W+=2):(N=r,yt===0&&wt(Fe)),N===r&&(e.charCodeAt(W)===60?(N=ut,W++):(N=r,yt===0&&wt(Ct))))))),N}function Pi(){var N,K,re;for(N=W,K=[],re=kt();re!==r;)K.push(re),re=kt();return K!==r?(re=VA(),re!==r?(xt=N,K=Re(re),N=K):(W=N,N=r)):(W=N,N=r),N}function VA(){var N,K,re;if(N=W,K=[],re=vf(),re!==r)for(;re!==r;)K.push(re),re=vf();else K=r;return K!==r&&(xt=N,K=qt(K)),N=K,N}function vf(){var N,K;return N=W,K=yn(),K!==r&&(xt=N,K=ir(K)),N=K,N===r&&(N=W,K=Hd(),K!==r&&(xt=N,K=ir(K)),N=K,N===r&&(N=W,K=jd(),K!==r&&(xt=N,K=ir(K)),N=K,N===r&&(N=W,K=os(),K!==r&&(xt=N,K=ir(K)),N=K))),N}function yn(){var N,K,re,de;return N=W,e.substr(W,2)===Pt?(K=Pt,W+=2):(K=r,yt===0&&wt(gn)),K!==r?(re=En(),re!==r?(e.charCodeAt(W)===39?(de=Pr,W++):(de=r,yt===0&&wt(Cr)),de!==r?(xt=N,K=Or(re),N=K):(W=N,N=r)):(W=N,N=r)):(W=N,N=r),N}function Hd(){var N,K,re,de;return N=W,e.charCodeAt(W)===39?(K=Pr,W++):(K=r,yt===0&&wt(Cr)),K!==r?(re=Sf(),re!==r?(e.charCodeAt(W)===39?(de=Pr,W++):(de=r,yt===0&&wt(Cr)),de!==r?(xt=N,K=Or(re),N=K):(W=N,N=r)):(W=N,N=r)):(W=N,N=r),N}function jd(){var N,K,re,de;if(N=W,e.substr(W,2)===on?(K=on,W+=2):(K=r,yt===0&&wt(li)),K!==r&&(xt=N,K=Do()),N=K,N===r)if(N=W,e.charCodeAt(W)===34?(K=ns,W++):(K=r,yt===0&&wt(so)),K!==r){for(re=[],de=Nl();de!==r;)re.push(de),de=Nl();re!==r?(e.charCodeAt(W)===34?(de=ns,W++):(de=r,yt===0&&wt(so)),de!==r?(xt=N,K=bo(re),N=K):(W=N,N=r)):(W=N,N=r)}else W=N,N=r;return N}function os(){var N,K,re;if(N=W,K=[],re=Fo(),re!==r)for(;re!==r;)K.push(re),re=Fo();else K=r;return K!==r&&(xt=N,K=bo(K)),N=K,N}function Nl(){var N,K;return N=W,K=Zr(),K!==r&&(xt=N,K=ji(K)),N=K,N===r&&(N=W,K=Dh(),K!==r&&(xt=N,K=oo(K)),N=K,N===r&&(N=W,K=KA(),K!==r&&(xt=N,K=Po(K)),N=K,N===r&&(N=W,K=Df(),K!==r&&(xt=N,K=TA(K)),N=K))),N}function Fo(){var N,K;return N=W,K=Zr(),K!==r&&(xt=N,K=df(K)),N=K,N===r&&(N=W,K=Dh(),K!==r&&(xt=N,K=dh(K)),N=K,N===r&&(N=W,K=KA(),K!==r&&(xt=N,K=gh(K)),N=K,N===r&&(N=W,K=Py(),K!==r&&(xt=N,K=ao(K)),N=K,N===r&&(N=W,K=Sh(),K!==r&&(xt=N,K=TA(K)),N=K)))),N}function Sf(){var N,K,re;for(N=W,K=[],Gn.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&wt(Ns));re!==r;)K.push(re),Gn.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&wt(Ns));return K!==r&&(xt=N,K=lo(K)),N=K,N}function Df(){var N,K,re;if(N=W,K=[],re=Ol(),re===r&&(su.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&wt(ou))),re!==r)for(;re!==r;)K.push(re),re=Ol(),re===r&&(su.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&wt(ou)));else K=r;return K!==r&&(xt=N,K=lo(K)),N=K,N}function Ol(){var N,K,re;return N=W,e.substr(W,2)===au?(K=au,W+=2):(K=r,yt===0&&wt(FA)),K!==r&&(xt=N,K=NA()),N=K,N===r&&(N=W,e.charCodeAt(W)===92?(K=fa,W++):(K=r,yt===0&&wt(Aa)),K!==r?(OA.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&wt(dr)),re!==r?(xt=N,K=xo(re),N=K):(W=N,N=r)):(W=N,N=r)),N}function En(){var N,K,re;for(N=W,K=[],re=No(),re===r&&(Gn.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&wt(Ns)));re!==r;)K.push(re),re=No(),re===r&&(Gn.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&wt(Ns)));return K!==r&&(xt=N,K=lo(K)),N=K,N}function No(){var N,K,re;return N=W,e.substr(W,2)===Ga?(K=Ga,W+=2):(K=r,yt===0&&wt(Ue)),K!==r&&(xt=N,K=wr()),N=K,N===r&&(N=W,e.substr(W,2)===gf?(K=gf,W+=2):(K=r,yt===0&&wt(LA)),K!==r&&(xt=N,K=MA()),N=K,N===r&&(N=W,e.charCodeAt(W)===92?(K=fa,W++):(K=r,yt===0&&wt(Aa)),K!==r?(lu.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&wt(cu)),re!==r?(xt=N,K=lc(),N=K):(W=N,N=r)):(W=N,N=r),N===r&&(N=W,e.substr(W,2)===we?(K=we,W+=2):(K=r,yt===0&&wt(Nt)),K!==r&&(xt=N,K=cc()),N=K,N===r&&(N=W,e.substr(W,2)===Oi?(K=Oi,W+=2):(K=r,yt===0&&wt(co)),K!==r&&(xt=N,K=Tt()),N=K,N===r&&(N=W,e.substr(W,2)===Qn?(K=Qn,W+=2):(K=r,yt===0&&wt(pa)),K!==r&&(xt=N,K=Gi()),N=K,N===r&&(N=W,e.substr(W,2)===Li?(K=Li,W+=2):(K=r,yt===0&&wt(qa)),K!==r&&(xt=N,K=mn()),N=K,N===r&&(N=W,e.substr(W,2)===Xn?(K=Xn,W+=2):(K=r,yt===0&&wt(uu)),K!==r&&(xt=N,K=mh()),N=K,N===r&&(N=W,e.charCodeAt(W)===92?(K=fa,W++):(K=r,yt===0&&wt(Aa)),K!==r?(Wa.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&wt(Ya)),re!==r?(xt=N,K=xo(re),N=K):(W=N,N=r)):(W=N,N=r),N===r&&(N=yu()))))))))),N}function yu(){var N,K,re,de,Je,pt,gr,vr,_n,yi,vs,zA;return N=W,e.charCodeAt(W)===92?(K=fa,W++):(K=r,yt===0&&wt(Aa)),K!==r?(re=ya(),re!==r?(xt=N,K=Va(re),N=K):(W=N,N=r)):(W=N,N=r),N===r&&(N=W,e.substr(W,2)===$e?(K=$e,W+=2):(K=r,yt===0&&wt(Ja)),K!==r?(re=W,de=W,Je=ya(),Je!==r?(pt=Ls(),pt!==r?(Je=[Je,pt],de=Je):(W=de,de=r)):(W=de,de=r),de===r&&(de=ya()),de!==r?re=e.substring(re,W):re=de,re!==r?(xt=N,K=Va(re),N=K):(W=N,N=r)):(W=N,N=r),N===r&&(N=W,e.substr(W,2)===mf?(K=mf,W+=2):(K=r,yt===0&&wt(uc)),K!==r?(re=W,de=W,Je=Ls(),Je!==r?(pt=Ls(),pt!==r?(gr=Ls(),gr!==r?(vr=Ls(),vr!==r?(Je=[Je,pt,gr,vr],de=Je):(W=de,de=r)):(W=de,de=r)):(W=de,de=r)):(W=de,de=r),de!==r?re=e.substring(re,W):re=de,re!==r?(xt=N,K=Va(re),N=K):(W=N,N=r)):(W=N,N=r),N===r&&(N=W,e.substr(W,2)===vn?(K=vn,W+=2):(K=r,yt===0&&wt(ha)),K!==r?(re=W,de=W,Je=Ls(),Je!==r?(pt=Ls(),pt!==r?(gr=Ls(),gr!==r?(vr=Ls(),vr!==r?(_n=Ls(),_n!==r?(yi=Ls(),yi!==r?(vs=Ls(),vs!==r?(zA=Ls(),zA!==r?(Je=[Je,pt,gr,vr,_n,yi,vs,zA],de=Je):(W=de,de=r)):(W=de,de=r)):(W=de,de=r)):(W=de,de=r)):(W=de,de=r)):(W=de,de=r)):(W=de,de=r)):(W=de,de=r),de!==r?re=e.substring(re,W):re=de,re!==r?(xt=N,K=UA(re),N=K):(W=N,N=r)):(W=N,N=r)))),N}function ya(){var N;return _A.test(e.charAt(W))?(N=e.charAt(W),W++):(N=r,yt===0&&wt(da)),N}function Ls(){var N;return kl.test(e.charAt(W))?(N=e.charAt(W),W++):(N=r,yt===0&&wt(Ut)),N}function Sh(){var N,K,re,de,Je;if(N=W,K=[],re=W,e.charCodeAt(W)===92?(de=fa,W++):(de=r,yt===0&&wt(Aa)),de!==r?(e.length>W?(Je=e.charAt(W),W++):(Je=r,yt===0&&wt(Rn)),Je!==r?(xt=re,de=xo(Je),re=de):(W=re,re=r)):(W=re,re=r),re===r&&(re=W,e.substr(W,2)===ga?(de=ga,W+=2):(de=r,yt===0&&wt(Ka)),de!==r&&(xt=re,de=is()),re=de,re===r&&(re=W,de=W,yt++,Je=xy(),yt--,Je===r?de=void 0:(W=de,de=r),de!==r?(e.length>W?(Je=e.charAt(W),W++):(Je=r,yt===0&&wt(Rn)),Je!==r?(xt=re,de=xo(Je),re=de):(W=re,re=r)):(W=re,re=r))),re!==r)for(;re!==r;)K.push(re),re=W,e.charCodeAt(W)===92?(de=fa,W++):(de=r,yt===0&&wt(Aa)),de!==r?(e.length>W?(Je=e.charAt(W),W++):(Je=r,yt===0&&wt(Rn)),Je!==r?(xt=re,de=xo(Je),re=de):(W=re,re=r)):(W=re,re=r),re===r&&(re=W,e.substr(W,2)===ga?(de=ga,W+=2):(de=r,yt===0&&wt(Ka)),de!==r&&(xt=re,de=is()),re=de,re===r&&(re=W,de=W,yt++,Je=xy(),yt--,Je===r?de=void 0:(W=de,de=r),de!==r?(e.length>W?(Je=e.charAt(W),W++):(Je=r,yt===0&&wt(Rn)),Je!==r?(xt=re,de=xo(Je),re=de):(W=re,re=r)):(W=re,re=r)));else K=r;return K!==r&&(xt=N,K=lo(K)),N=K,N}function JA(){var N,K,re,de,Je,pt;if(N=W,e.charCodeAt(W)===45?(K=fc,W++):(K=r,yt===0&&wt(fu)),K===r&&(e.charCodeAt(W)===43?(K=Ac,W++):(K=r,yt===0&&wt(za))),K===r&&(K=null),K!==r){if(re=[],ct.test(e.charAt(W))?(de=e.charAt(W),W++):(de=r,yt===0&&wt(Me)),de!==r)for(;de!==r;)re.push(de),ct.test(e.charAt(W))?(de=e.charAt(W),W++):(de=r,yt===0&&wt(Me));else re=r;if(re!==r)if(e.charCodeAt(W)===46?(de=Mi,W++):(de=r,yt===0&&wt(Bs)),de!==r){if(Je=[],ct.test(e.charAt(W))?(pt=e.charAt(W),W++):(pt=r,yt===0&&wt(Me)),pt!==r)for(;pt!==r;)Je.push(pt),ct.test(e.charAt(W))?(pt=e.charAt(W),W++):(pt=r,yt===0&&wt(Me));else Je=r;Je!==r?(xt=N,K=Ql(K,re,Je),N=K):(W=N,N=r)}else W=N,N=r;else W=N,N=r}else W=N,N=r;if(N===r){if(N=W,e.charCodeAt(W)===45?(K=fc,W++):(K=r,yt===0&&wt(fu)),K===r&&(e.charCodeAt(W)===43?(K=Ac,W++):(K=r,yt===0&&wt(za))),K===r&&(K=null),K!==r){if(re=[],ct.test(e.charAt(W))?(de=e.charAt(W),W++):(de=r,yt===0&&wt(Me)),de!==r)for(;de!==r;)re.push(de),ct.test(e.charAt(W))?(de=e.charAt(W),W++):(de=r,yt===0&&wt(Me));else re=r;re!==r?(xt=N,K=yf(K,re),N=K):(W=N,N=r)}else W=N,N=r;if(N===r&&(N=W,K=KA(),K!==r&&(xt=N,K=pc(K)),N=K,N===r&&(N=W,K=dc(),K!==r&&(xt=N,K=Bi(K)),N=K,N===r)))if(N=W,e.charCodeAt(W)===40?(K=Be,W++):(K=r,yt===0&&wt(me)),K!==r){for(re=[],de=kt();de!==r;)re.push(de),de=kt();if(re!==r)if(de=uo(),de!==r){for(Je=[],pt=kt();pt!==r;)Je.push(pt),pt=kt();Je!==r?(e.charCodeAt(W)===41?(pt=ce,W++):(pt=r,yt===0&&wt(Z)),pt!==r?(xt=N,K=Tn(de),N=K):(W=N,N=r)):(W=N,N=r)}else W=N,N=r;else W=N,N=r}else W=N,N=r}return N}function bf(){var N,K,re,de,Je,pt,gr,vr;if(N=W,K=JA(),K!==r){for(re=[],de=W,Je=[],pt=kt();pt!==r;)Je.push(pt),pt=kt();if(Je!==r)if(e.charCodeAt(W)===42?(pt=hc,W++):(pt=r,yt===0&&wt(Ke)),pt===r&&(e.charCodeAt(W)===47?(pt=ot,W++):(pt=r,yt===0&&wt(St))),pt!==r){for(gr=[],vr=kt();vr!==r;)gr.push(vr),vr=kt();gr!==r?(vr=JA(),vr!==r?(xt=de,Je=lr(K,pt,vr),de=Je):(W=de,de=r)):(W=de,de=r)}else W=de,de=r;else W=de,de=r;for(;de!==r;){for(re.push(de),de=W,Je=[],pt=kt();pt!==r;)Je.push(pt),pt=kt();if(Je!==r)if(e.charCodeAt(W)===42?(pt=hc,W++):(pt=r,yt===0&&wt(Ke)),pt===r&&(e.charCodeAt(W)===47?(pt=ot,W++):(pt=r,yt===0&&wt(St))),pt!==r){for(gr=[],vr=kt();vr!==r;)gr.push(vr),vr=kt();gr!==r?(vr=JA(),vr!==r?(xt=de,Je=lr(K,pt,vr),de=Je):(W=de,de=r)):(W=de,de=r)}else W=de,de=r;else W=de,de=r}re!==r?(xt=N,K=ee(K,re),N=K):(W=N,N=r)}else W=N,N=r;return N}function uo(){var N,K,re,de,Je,pt,gr,vr;if(N=W,K=bf(),K!==r){for(re=[],de=W,Je=[],pt=kt();pt!==r;)Je.push(pt),pt=kt();if(Je!==r)if(e.charCodeAt(W)===43?(pt=Ac,W++):(pt=r,yt===0&&wt(za)),pt===r&&(e.charCodeAt(W)===45?(pt=fc,W++):(pt=r,yt===0&&wt(fu))),pt!==r){for(gr=[],vr=kt();vr!==r;)gr.push(vr),vr=kt();gr!==r?(vr=bf(),vr!==r?(xt=de,Je=ye(K,pt,vr),de=Je):(W=de,de=r)):(W=de,de=r)}else W=de,de=r;else W=de,de=r;for(;de!==r;){for(re.push(de),de=W,Je=[],pt=kt();pt!==r;)Je.push(pt),pt=kt();if(Je!==r)if(e.charCodeAt(W)===43?(pt=Ac,W++):(pt=r,yt===0&&wt(za)),pt===r&&(e.charCodeAt(W)===45?(pt=fc,W++):(pt=r,yt===0&&wt(fu))),pt!==r){for(gr=[],vr=kt();vr!==r;)gr.push(vr),vr=kt();gr!==r?(vr=bf(),vr!==r?(xt=de,Je=ye(K,pt,vr),de=Je):(W=de,de=r)):(W=de,de=r)}else W=de,de=r;else W=de,de=r}re!==r?(xt=N,K=ee(K,re),N=K):(W=N,N=r)}else W=N,N=r;return N}function Zr(){var N,K,re,de,Je,pt;if(N=W,e.substr(W,3)===Oe?(K=Oe,W+=3):(K=r,yt===0&&wt(mt)),K!==r){for(re=[],de=kt();de!==r;)re.push(de),de=kt();if(re!==r)if(de=uo(),de!==r){for(Je=[],pt=kt();pt!==r;)Je.push(pt),pt=kt();Je!==r?(e.substr(W,2)===Et?(pt=Et,W+=2):(pt=r,yt===0&&wt(bt)),pt!==r?(xt=N,K=tr(de),N=K):(W=N,N=r)):(W=N,N=r)}else W=N,N=r;else W=N,N=r}else W=N,N=r;return N}function Dh(){var N,K,re,de;return N=W,e.substr(W,2)===pn?(K=pn,W+=2):(K=r,yt===0&&wt(ci)),K!==r?(re=ma(),re!==r?(e.charCodeAt(W)===41?(de=ce,W++):(de=r,yt===0&&wt(Z)),de!==r?(xt=N,K=qi(re),N=K):(W=N,N=r)):(W=N,N=r)):(W=N,N=r),N}function KA(){var N,K,re,de,Je,pt;return N=W,e.substr(W,2)===Fn?(K=Fn,W+=2):(K=r,yt===0&&wt(Xa)),K!==r?(re=dc(),re!==r?(e.substr(W,2)===Iy?(de=Iy,W+=2):(de=r,yt===0&&wt(q1)),de!==r?(Je=Os(),Je!==r?(e.charCodeAt(W)===125?(pt=_,W++):(pt=r,yt===0&&wt(tt)),pt!==r?(xt=N,K=ko(re,Je),N=K):(W=N,N=r)):(W=N,N=r)):(W=N,N=r)):(W=N,N=r)):(W=N,N=r),N===r&&(N=W,e.substr(W,2)===Fn?(K=Fn,W+=2):(K=r,yt===0&&wt(Xa)),K!==r?(re=dc(),re!==r?(e.substr(W,3)===Cy?(de=Cy,W+=3):(de=r,yt===0&&wt(yh)),de!==r?(xt=N,K=W1(re),N=K):(W=N,N=r)):(W=N,N=r)):(W=N,N=r),N===r&&(N=W,e.substr(W,2)===Fn?(K=Fn,W+=2):(K=r,yt===0&&wt(Xa)),K!==r?(re=dc(),re!==r?(e.substr(W,2)===Qo?(de=Qo,W+=2):(de=r,yt===0&&wt(Eh)),de!==r?(Je=Os(),Je!==r?(e.charCodeAt(W)===125?(pt=_,W++):(pt=r,yt===0&&wt(tt)),pt!==r?(xt=N,K=Ih(re,Je),N=K):(W=N,N=r)):(W=N,N=r)):(W=N,N=r)):(W=N,N=r)):(W=N,N=r),N===r&&(N=W,e.substr(W,2)===Fn?(K=Fn,W+=2):(K=r,yt===0&&wt(Xa)),K!==r?(re=dc(),re!==r?(e.substr(W,3)===Au?(de=Au,W+=3):(de=r,yt===0&&wt(Ch)),de!==r?(xt=N,K=Rd(re),N=K):(W=N,N=r)):(W=N,N=r)):(W=N,N=r),N===r&&(N=W,e.substr(W,2)===Fn?(K=Fn,W+=2):(K=r,yt===0&&wt(Xa)),K!==r?(re=dc(),re!==r?(e.charCodeAt(W)===125?(de=_,W++):(de=r,yt===0&&wt(tt)),de!==r?(xt=N,K=Td(re),N=K):(W=N,N=r)):(W=N,N=r)):(W=N,N=r),N===r&&(N=W,e.charCodeAt(W)===36?(K=Fd,W++):(K=r,yt===0&&wt(wy)),K!==r?(re=dc(),re!==r?(xt=N,K=Td(re),N=K):(W=N,N=r)):(W=N,N=r)))))),N}function Py(){var N,K,re;return N=W,K=Gd(),K!==r?(xt=W,re=Ef(K),re?re=void 0:re=r,re!==r?(xt=N,K=Ro(K),N=K):(W=N,N=r)):(W=N,N=r),N}function Gd(){var N,K,re,de,Je;if(N=W,K=[],re=W,de=W,yt++,Je=Ph(),yt--,Je===r?de=void 0:(W=de,de=r),de!==r?(e.length>W?(Je=e.charAt(W),W++):(Je=r,yt===0&&wt(Rn)),Je!==r?(xt=re,de=xo(Je),re=de):(W=re,re=r)):(W=re,re=r),re!==r)for(;re!==r;)K.push(re),re=W,de=W,yt++,Je=Ph(),yt--,Je===r?de=void 0:(W=de,de=r),de!==r?(e.length>W?(Je=e.charAt(W),W++):(Je=r,yt===0&&wt(Rn)),Je!==r?(xt=re,de=xo(Je),re=de):(W=re,re=r)):(W=re,re=r);else K=r;return K!==r&&(xt=N,K=lo(K)),N=K,N}function bh(){var N,K,re;if(N=W,K=[],Rl.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&wt(wh)),re!==r)for(;re!==r;)K.push(re),Rl.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&wt(wh));else K=r;return K!==r&&(xt=N,K=Nd()),N=K,N}function dc(){var N,K,re;if(N=W,K=[],Tl.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&wt(Fl)),re!==r)for(;re!==r;)K.push(re),Tl.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&wt(Fl));else K=r;return K!==r&&(xt=N,K=Nd()),N=K,N}function xy(){var N;return By.test(e.charAt(W))?(N=e.charAt(W),W++):(N=r,yt===0&&wt(HA)),N}function Ph(){var N;return vy.test(e.charAt(W))?(N=e.charAt(W),W++):(N=r,yt===0&&wt(Sy)),N}function kt(){var N,K;if(N=[],jA.test(e.charAt(W))?(K=e.charAt(W),W++):(K=r,yt===0&&wt(GA)),K!==r)for(;K!==r;)N.push(K),jA.test(e.charAt(W))?(K=e.charAt(W),W++):(K=r,yt===0&&wt(GA));else N=r;return N}if(pu=a(),pu!==r&&W===e.length)return pu;throw pu!==r&&W!1}){try{return(0,U$.parse)(e,t)}catch(r){throw r.location&&(r.message=r.message.replace(/(\.)?$/,` (line ${r.location.start.line}, column ${r.location.start.column})$1`)),r}}function hE(e,{endSemicolon:t=!1}={}){return e.map(({command:r,type:s},a)=>`${fx(r)}${s===";"?a!==e.length-1||t?";":"":" &"}`).join(" ")}function fx(e){return`${dE(e.chain)}${e.then?` ${SU(e.then)}`:""}`}function SU(e){return`${e.type} ${fx(e.line)}`}function dE(e){return`${bU(e)}${e.then?` ${DU(e.then)}`:""}`}function DU(e){return`${e.type} ${dE(e.chain)}`}function bU(e){switch(e.type){case"command":return`${e.envs.length>0?`${e.envs.map(t=>cx(t)).join(" ")} `:""}${e.args.map(t=>PU(t)).join(" ")}`;case"subshell":return`(${hE(e.subshell)})${e.args.length>0?` ${e.args.map(t=>T2(t)).join(" ")}`:""}`;case"group":return`{ ${hE(e.group,{endSemicolon:!0})} }${e.args.length>0?` ${e.args.map(t=>T2(t)).join(" ")}`:""}`;case"envs":return e.envs.map(t=>cx(t)).join(" ");default:throw new Error(`Unsupported command type: "${e.type}"`)}}function cx(e){return`${e.name}=${e.args[0]?wg(e.args[0]):""}`}function PU(e){switch(e.type){case"redirection":return T2(e);case"argument":return wg(e);default:throw new Error(`Unsupported argument type: "${e.type}"`)}}function T2(e){return`${e.subtype} ${e.args.map(t=>wg(t)).join(" ")}`}function wg(e){return e.segments.map(t=>xU(t)).join("")}function xU(e){let t=(s,a)=>a?`"${s}"`:s,r=s=>s===""?"''":s.match(/[()}<>$|&;"'\n\t ]/)?s.match(/['\t\p{C}]/u)?s.match(/'/)?`"${s.replace(/["$\t\p{C}]/u,D6e)}"`:`$'${s.replace(/[\t\p{C}]/u,H$)}'`:`'${s}'`:s;switch(e.type){case"text":return r(e.text);case"glob":return e.pattern;case"shell":return t(`$(${hE(e.shell)})`,e.quoted);case"variable":return t(typeof e.defaultValue>"u"?typeof e.alternativeValue>"u"?`\${${e.name}}`:e.alternativeValue.length===0?`\${${e.name}:+}`:`\${${e.name}:+${e.alternativeValue.map(s=>wg(s)).join(" ")}}`:e.defaultValue.length===0?`\${${e.name}:-}`:`\${${e.name}:-${e.defaultValue.map(s=>wg(s)).join(" ")}}`,e.quoted);case"arithmetic":return`$(( ${Ax(e.arithmetic)} ))`;default:throw new Error(`Unsupported argument segment type: "${e.type}"`)}}function Ax(e){let t=a=>{switch(a){case"addition":return"+";case"subtraction":return"-";case"multiplication":return"*";case"division":return"/";default:throw new Error(`Can't extract operator from arithmetic expression of type "${a}"`)}},r=(a,n)=>n?`( ${a} )`:a,s=a=>r(Ax(a),!["number","variable"].includes(a.type));switch(e.type){case"number":return String(e.value);case"variable":return e.name;default:return`${s(e.left)} ${t(e.type)} ${s(e.right)}`}}var U$,_$,S6e,H$,D6e,j$=Xe(()=>{U$=et(M$());_$=new Map([["\f","\\f"],[` +`,"\\n"],["\r","\\r"],[" ","\\t"],["\v","\\v"],["\0","\\0"]]),S6e=new Map([["\\","\\\\"],["$","\\$"],['"','\\"'],...Array.from(_$,([e,t])=>[e,`"$'${t}'"`])]),H$=e=>_$.get(e)??`\\x${e.charCodeAt(0).toString(16).padStart(2,"0")}`,D6e=e=>S6e.get(e)??`"$'${H$(e)}'"`});var q$=G((gPt,G$)=>{"use strict";function b6e(e,t){function r(){this.constructor=e}r.prototype=t.prototype,e.prototype=new r}function Bg(e,t,r,s){this.message=e,this.expected=t,this.found=r,this.location=s,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Bg)}b6e(Bg,Error);Bg.buildMessage=function(e,t){var r={literal:function(h){return'"'+a(h.text)+'"'},class:function(h){var E="",C;for(C=0;C0){for(C=1,S=1;Cue&&(ue=V,ae=[]),ae.push(Me))}function tt(Me,P){return new Bg(Me,null,null,P)}function Ne(Me,P,w){return new Bg(Bg.buildMessage(Me,P),Me,P,w)}function ke(){var Me,P,w,b;return Me=V,P=be(),P!==r?(e.charCodeAt(V)===47?(w=n,V++):(w=r,ge===0&&_(c)),w!==r?(b=be(),b!==r?(te=Me,P=f(P,b),Me=P):(V=Me,Me=r)):(V=Me,Me=r)):(V=Me,Me=r),Me===r&&(Me=V,P=be(),P!==r&&(te=Me,P=p(P)),Me=P),Me}function be(){var Me,P,w,b;return Me=V,P=je(),P!==r?(e.charCodeAt(V)===64?(w=h,V++):(w=r,ge===0&&_(E)),w!==r?(b=ct(),b!==r?(te=Me,P=C(P,b),Me=P):(V=Me,Me=r)):(V=Me,Me=r)):(V=Me,Me=r),Me===r&&(Me=V,P=je(),P!==r&&(te=Me,P=S(P)),Me=P),Me}function je(){var Me,P,w,b,y;return Me=V,e.charCodeAt(V)===64?(P=h,V++):(P=r,ge===0&&_(E)),P!==r?(w=Re(),w!==r?(e.charCodeAt(V)===47?(b=n,V++):(b=r,ge===0&&_(c)),b!==r?(y=Re(),y!==r?(te=Me,P=x(),Me=P):(V=Me,Me=r)):(V=Me,Me=r)):(V=Me,Me=r)):(V=Me,Me=r),Me===r&&(Me=V,P=Re(),P!==r&&(te=Me,P=x()),Me=P),Me}function Re(){var Me,P,w;if(Me=V,P=[],I.test(e.charAt(V))?(w=e.charAt(V),V++):(w=r,ge===0&&_(T)),w!==r)for(;w!==r;)P.push(w),I.test(e.charAt(V))?(w=e.charAt(V),V++):(w=r,ge===0&&_(T));else P=r;return P!==r&&(te=Me,P=x()),Me=P,Me}function ct(){var Me,P,w;if(Me=V,P=[],O.test(e.charAt(V))?(w=e.charAt(V),V++):(w=r,ge===0&&_(U)),w!==r)for(;w!==r;)P.push(w),O.test(e.charAt(V))?(w=e.charAt(V),V++):(w=r,ge===0&&_(U));else P=r;return P!==r&&(te=Me,P=x()),Me=P,Me}if(Ae=a(),Ae!==r&&V===e.length)return Ae;throw Ae!==r&&V{W$=et(q$())});var Sg=G((yPt,vg)=>{"use strict";function V$(e){return typeof e>"u"||e===null}function x6e(e){return typeof e=="object"&&e!==null}function k6e(e){return Array.isArray(e)?e:V$(e)?[]:[e]}function Q6e(e,t){var r,s,a,n;if(t)for(n=Object.keys(t),r=0,s=n.length;r{"use strict";function F2(e,t){Error.call(this),this.name="YAMLException",this.reason=e,this.mark=t,this.message=(this.reason||"(unknown reason)")+(this.mark?" "+this.mark.toString():""),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}F2.prototype=Object.create(Error.prototype);F2.prototype.constructor=F2;F2.prototype.toString=function(t){var r=this.name+": ";return r+=this.reason||"(unknown reason)",!t&&this.mark&&(r+=" "+this.mark.toString()),r};J$.exports=F2});var X$=G((IPt,z$)=>{"use strict";var K$=Sg();function kU(e,t,r,s,a){this.name=e,this.buffer=t,this.position=r,this.line=s,this.column=a}kU.prototype.getSnippet=function(t,r){var s,a,n,c,f;if(!this.buffer)return null;for(t=t||4,r=r||75,s="",a=this.position;a>0&&`\0\r +\x85\u2028\u2029`.indexOf(this.buffer.charAt(a-1))===-1;)if(a-=1,this.position-a>r/2-1){s=" ... ",a+=5;break}for(n="",c=this.position;cr/2-1){n=" ... ",c-=5;break}return f=this.buffer.slice(a,c),K$.repeat(" ",t)+s+f+n+` +`+K$.repeat(" ",t+this.position-a+s.length)+"^"};kU.prototype.toString=function(t){var r,s="";return this.name&&(s+='in "'+this.name+'" '),s+="at line "+(this.line+1)+", column "+(this.column+1),t||(r=this.getSnippet(),r&&(s+=`: +`+r)),s};z$.exports=kU});var Ps=G((CPt,$$)=>{"use strict";var Z$=gE(),F6e=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],N6e=["scalar","sequence","mapping"];function O6e(e){var t={};return e!==null&&Object.keys(e).forEach(function(r){e[r].forEach(function(s){t[String(s)]=r})}),t}function L6e(e,t){if(t=t||{},Object.keys(t).forEach(function(r){if(F6e.indexOf(r)===-1)throw new Z$('Unknown option "'+r+'" is met in definition of "'+e+'" YAML type.')}),this.tag=e,this.kind=t.kind||null,this.resolve=t.resolve||function(){return!0},this.construct=t.construct||function(r){return r},this.instanceOf=t.instanceOf||null,this.predicate=t.predicate||null,this.represent=t.represent||null,this.defaultStyle=t.defaultStyle||null,this.styleAliases=O6e(t.styleAliases||null),N6e.indexOf(this.kind)===-1)throw new Z$('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')}$$.exports=L6e});var Dg=G((wPt,tee)=>{"use strict";var eee=Sg(),dx=gE(),M6e=Ps();function QU(e,t,r){var s=[];return e.include.forEach(function(a){r=QU(a,t,r)}),e[t].forEach(function(a){r.forEach(function(n,c){n.tag===a.tag&&n.kind===a.kind&&s.push(c)}),r.push(a)}),r.filter(function(a,n){return s.indexOf(n)===-1})}function U6e(){var e={scalar:{},sequence:{},mapping:{},fallback:{}},t,r;function s(a){e[a.kind][a.tag]=e.fallback[a.tag]=a}for(t=0,r=arguments.length;t{"use strict";var _6e=Ps();ree.exports=new _6e("tag:yaml.org,2002:str",{kind:"scalar",construct:function(e){return e!==null?e:""}})});var see=G((vPt,iee)=>{"use strict";var H6e=Ps();iee.exports=new H6e("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(e){return e!==null?e:[]}})});var aee=G((SPt,oee)=>{"use strict";var j6e=Ps();oee.exports=new j6e("tag:yaml.org,2002:map",{kind:"mapping",construct:function(e){return e!==null?e:{}}})});var gx=G((DPt,lee)=>{"use strict";var G6e=Dg();lee.exports=new G6e({explicit:[nee(),see(),aee()]})});var uee=G((bPt,cee)=>{"use strict";var q6e=Ps();function W6e(e){if(e===null)return!0;var t=e.length;return t===1&&e==="~"||t===4&&(e==="null"||e==="Null"||e==="NULL")}function Y6e(){return null}function V6e(e){return e===null}cee.exports=new q6e("tag:yaml.org,2002:null",{kind:"scalar",resolve:W6e,construct:Y6e,predicate:V6e,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})});var Aee=G((PPt,fee)=>{"use strict";var J6e=Ps();function K6e(e){if(e===null)return!1;var t=e.length;return t===4&&(e==="true"||e==="True"||e==="TRUE")||t===5&&(e==="false"||e==="False"||e==="FALSE")}function z6e(e){return e==="true"||e==="True"||e==="TRUE"}function X6e(e){return Object.prototype.toString.call(e)==="[object Boolean]"}fee.exports=new J6e("tag:yaml.org,2002:bool",{kind:"scalar",resolve:K6e,construct:z6e,predicate:X6e,represent:{lowercase:function(e){return e?"true":"false"},uppercase:function(e){return e?"TRUE":"FALSE"},camelcase:function(e){return e?"True":"False"}},defaultStyle:"lowercase"})});var hee=G((xPt,pee)=>{"use strict";var Z6e=Sg(),$6e=Ps();function eGe(e){return 48<=e&&e<=57||65<=e&&e<=70||97<=e&&e<=102}function tGe(e){return 48<=e&&e<=55}function rGe(e){return 48<=e&&e<=57}function nGe(e){if(e===null)return!1;var t=e.length,r=0,s=!1,a;if(!t)return!1;if(a=e[r],(a==="-"||a==="+")&&(a=e[++r]),a==="0"){if(r+1===t)return!0;if(a=e[++r],a==="b"){for(r++;r=0?"0b"+e.toString(2):"-0b"+e.toString(2).slice(1)},octal:function(e){return e>=0?"0"+e.toString(8):"-0"+e.toString(8).slice(1)},decimal:function(e){return e.toString(10)},hexadecimal:function(e){return e>=0?"0x"+e.toString(16).toUpperCase():"-0x"+e.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})});var mee=G((kPt,gee)=>{"use strict";var dee=Sg(),oGe=Ps(),aGe=new RegExp("^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function lGe(e){return!(e===null||!aGe.test(e)||e[e.length-1]==="_")}function cGe(e){var t,r,s,a;return t=e.replace(/_/g,"").toLowerCase(),r=t[0]==="-"?-1:1,a=[],"+-".indexOf(t[0])>=0&&(t=t.slice(1)),t===".inf"?r===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:t===".nan"?NaN:t.indexOf(":")>=0?(t.split(":").forEach(function(n){a.unshift(parseFloat(n,10))}),t=0,s=1,a.forEach(function(n){t+=n*s,s*=60}),r*t):r*parseFloat(t,10)}var uGe=/^[-+]?[0-9]+e/;function fGe(e,t){var r;if(isNaN(e))switch(t){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(t){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(t){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(dee.isNegativeZero(e))return"-0.0";return r=e.toString(10),uGe.test(r)?r.replace("e",".e"):r}function AGe(e){return Object.prototype.toString.call(e)==="[object Number]"&&(e%1!==0||dee.isNegativeZero(e))}gee.exports=new oGe("tag:yaml.org,2002:float",{kind:"scalar",resolve:lGe,construct:cGe,predicate:AGe,represent:fGe,defaultStyle:"lowercase"})});var RU=G((QPt,yee)=>{"use strict";var pGe=Dg();yee.exports=new pGe({include:[gx()],implicit:[uee(),Aee(),hee(),mee()]})});var TU=G((RPt,Eee)=>{"use strict";var hGe=Dg();Eee.exports=new hGe({include:[RU()]})});var Bee=G((TPt,wee)=>{"use strict";var dGe=Ps(),Iee=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),Cee=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function gGe(e){return e===null?!1:Iee.exec(e)!==null||Cee.exec(e)!==null}function mGe(e){var t,r,s,a,n,c,f,p=0,h=null,E,C,S;if(t=Iee.exec(e),t===null&&(t=Cee.exec(e)),t===null)throw new Error("Date resolve error");if(r=+t[1],s=+t[2]-1,a=+t[3],!t[4])return new Date(Date.UTC(r,s,a));if(n=+t[4],c=+t[5],f=+t[6],t[7]){for(p=t[7].slice(0,3);p.length<3;)p+="0";p=+p}return t[9]&&(E=+t[10],C=+(t[11]||0),h=(E*60+C)*6e4,t[9]==="-"&&(h=-h)),S=new Date(Date.UTC(r,s,a,n,c,f,p)),h&&S.setTime(S.getTime()-h),S}function yGe(e){return e.toISOString()}wee.exports=new dGe("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:gGe,construct:mGe,instanceOf:Date,represent:yGe})});var See=G((FPt,vee)=>{"use strict";var EGe=Ps();function IGe(e){return e==="<<"||e===null}vee.exports=new EGe("tag:yaml.org,2002:merge",{kind:"scalar",resolve:IGe})});var Pee=G((NPt,bee)=>{"use strict";var bg;try{Dee=Ie,bg=Dee("buffer").Buffer}catch{}var Dee,CGe=Ps(),FU=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= +\r`;function wGe(e){if(e===null)return!1;var t,r,s=0,a=e.length,n=FU;for(r=0;r64)){if(t<0)return!1;s+=6}return s%8===0}function BGe(e){var t,r,s=e.replace(/[\r\n=]/g,""),a=s.length,n=FU,c=0,f=[];for(t=0;t>16&255),f.push(c>>8&255),f.push(c&255)),c=c<<6|n.indexOf(s.charAt(t));return r=a%4*6,r===0?(f.push(c>>16&255),f.push(c>>8&255),f.push(c&255)):r===18?(f.push(c>>10&255),f.push(c>>2&255)):r===12&&f.push(c>>4&255),bg?bg.from?bg.from(f):new bg(f):f}function vGe(e){var t="",r=0,s,a,n=e.length,c=FU;for(s=0;s>18&63],t+=c[r>>12&63],t+=c[r>>6&63],t+=c[r&63]),r=(r<<8)+e[s];return a=n%3,a===0?(t+=c[r>>18&63],t+=c[r>>12&63],t+=c[r>>6&63],t+=c[r&63]):a===2?(t+=c[r>>10&63],t+=c[r>>4&63],t+=c[r<<2&63],t+=c[64]):a===1&&(t+=c[r>>2&63],t+=c[r<<4&63],t+=c[64],t+=c[64]),t}function SGe(e){return bg&&bg.isBuffer(e)}bee.exports=new CGe("tag:yaml.org,2002:binary",{kind:"scalar",resolve:wGe,construct:BGe,predicate:SGe,represent:vGe})});var kee=G((LPt,xee)=>{"use strict";var DGe=Ps(),bGe=Object.prototype.hasOwnProperty,PGe=Object.prototype.toString;function xGe(e){if(e===null)return!0;var t=[],r,s,a,n,c,f=e;for(r=0,s=f.length;r{"use strict";var QGe=Ps(),RGe=Object.prototype.toString;function TGe(e){if(e===null)return!0;var t,r,s,a,n,c=e;for(n=new Array(c.length),t=0,r=c.length;t{"use strict";var NGe=Ps(),OGe=Object.prototype.hasOwnProperty;function LGe(e){if(e===null)return!0;var t,r=e;for(t in r)if(OGe.call(r,t)&&r[t]!==null)return!1;return!0}function MGe(e){return e!==null?e:{}}Tee.exports=new NGe("tag:yaml.org,2002:set",{kind:"mapping",resolve:LGe,construct:MGe})});var yE=G((_Pt,Nee)=>{"use strict";var UGe=Dg();Nee.exports=new UGe({include:[TU()],implicit:[Bee(),See()],explicit:[Pee(),kee(),Ree(),Fee()]})});var Lee=G((HPt,Oee)=>{"use strict";var _Ge=Ps();function HGe(){return!0}function jGe(){}function GGe(){return""}function qGe(e){return typeof e>"u"}Oee.exports=new _Ge("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:HGe,construct:jGe,predicate:qGe,represent:GGe})});var Uee=G((jPt,Mee)=>{"use strict";var WGe=Ps();function YGe(e){if(e===null||e.length===0)return!1;var t=e,r=/\/([gim]*)$/.exec(e),s="";return!(t[0]==="/"&&(r&&(s=r[1]),s.length>3||t[t.length-s.length-1]!=="/"))}function VGe(e){var t=e,r=/\/([gim]*)$/.exec(e),s="";return t[0]==="/"&&(r&&(s=r[1]),t=t.slice(1,t.length-s.length-1)),new RegExp(t,s)}function JGe(e){var t="/"+e.source+"/";return e.global&&(t+="g"),e.multiline&&(t+="m"),e.ignoreCase&&(t+="i"),t}function KGe(e){return Object.prototype.toString.call(e)==="[object RegExp]"}Mee.exports=new WGe("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:YGe,construct:VGe,predicate:KGe,represent:JGe})});var jee=G((GPt,Hee)=>{"use strict";var mx;try{_ee=Ie,mx=_ee("esprima")}catch{typeof window<"u"&&(mx=window.esprima)}var _ee,zGe=Ps();function XGe(e){if(e===null)return!1;try{var t="("+e+")",r=mx.parse(t,{range:!0});return!(r.type!=="Program"||r.body.length!==1||r.body[0].type!=="ExpressionStatement"||r.body[0].expression.type!=="ArrowFunctionExpression"&&r.body[0].expression.type!=="FunctionExpression")}catch{return!1}}function ZGe(e){var t="("+e+")",r=mx.parse(t,{range:!0}),s=[],a;if(r.type!=="Program"||r.body.length!==1||r.body[0].type!=="ExpressionStatement"||r.body[0].expression.type!=="ArrowFunctionExpression"&&r.body[0].expression.type!=="FunctionExpression")throw new Error("Failed to resolve function");return r.body[0].expression.params.forEach(function(n){s.push(n.name)}),a=r.body[0].expression.body.range,r.body[0].expression.body.type==="BlockStatement"?new Function(s,t.slice(a[0]+1,a[1]-1)):new Function(s,"return "+t.slice(a[0],a[1]))}function $Ge(e){return e.toString()}function e5e(e){return Object.prototype.toString.call(e)==="[object Function]"}Hee.exports=new zGe("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:XGe,construct:ZGe,predicate:e5e,represent:$Ge})});var N2=G((WPt,qee)=>{"use strict";var Gee=Dg();qee.exports=Gee.DEFAULT=new Gee({include:[yE()],explicit:[Lee(),Uee(),jee()]})});var cte=G((YPt,O2)=>{"use strict";var wp=Sg(),Xee=gE(),t5e=X$(),Zee=yE(),r5e=N2(),n0=Object.prototype.hasOwnProperty,yx=1,$ee=2,ete=3,Ex=4,NU=1,n5e=2,Wee=3,i5e=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,s5e=/[\x85\u2028\u2029]/,o5e=/[,\[\]\{\}]/,tte=/^(?:!|!!|![a-z\-]+!)$/i,rte=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function Yee(e){return Object.prototype.toString.call(e)}function Wf(e){return e===10||e===13}function xg(e){return e===9||e===32}function ul(e){return e===9||e===32||e===10||e===13}function EE(e){return e===44||e===91||e===93||e===123||e===125}function a5e(e){var t;return 48<=e&&e<=57?e-48:(t=e|32,97<=t&&t<=102?t-97+10:-1)}function l5e(e){return e===120?2:e===117?4:e===85?8:0}function c5e(e){return 48<=e&&e<=57?e-48:-1}function Vee(e){return e===48?"\0":e===97?"\x07":e===98?"\b":e===116||e===9?" ":e===110?` +`:e===118?"\v":e===102?"\f":e===114?"\r":e===101?"\x1B":e===32?" ":e===34?'"':e===47?"/":e===92?"\\":e===78?"\x85":e===95?"\xA0":e===76?"\u2028":e===80?"\u2029":""}function u5e(e){return e<=65535?String.fromCharCode(e):String.fromCharCode((e-65536>>10)+55296,(e-65536&1023)+56320)}var nte=new Array(256),ite=new Array(256);for(Pg=0;Pg<256;Pg++)nte[Pg]=Vee(Pg)?1:0,ite[Pg]=Vee(Pg);var Pg;function f5e(e,t){this.input=e,this.filename=t.filename||null,this.schema=t.schema||r5e,this.onWarning=t.onWarning||null,this.legacy=t.legacy||!1,this.json=t.json||!1,this.listener=t.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function ste(e,t){return new Xee(t,new t5e(e.filename,e.input,e.position,e.line,e.position-e.lineStart))}function Fr(e,t){throw ste(e,t)}function Ix(e,t){e.onWarning&&e.onWarning.call(null,ste(e,t))}var Jee={YAML:function(t,r,s){var a,n,c;t.version!==null&&Fr(t,"duplication of %YAML directive"),s.length!==1&&Fr(t,"YAML directive accepts exactly one argument"),a=/^([0-9]+)\.([0-9]+)$/.exec(s[0]),a===null&&Fr(t,"ill-formed argument of the YAML directive"),n=parseInt(a[1],10),c=parseInt(a[2],10),n!==1&&Fr(t,"unacceptable YAML version of the document"),t.version=s[0],t.checkLineBreaks=c<2,c!==1&&c!==2&&Ix(t,"unsupported YAML version of the document")},TAG:function(t,r,s){var a,n;s.length!==2&&Fr(t,"TAG directive accepts exactly two arguments"),a=s[0],n=s[1],tte.test(a)||Fr(t,"ill-formed tag handle (first argument) of the TAG directive"),n0.call(t.tagMap,a)&&Fr(t,'there is a previously declared suffix for "'+a+'" tag handle'),rte.test(n)||Fr(t,"ill-formed tag prefix (second argument) of the TAG directive"),t.tagMap[a]=n}};function r0(e,t,r,s){var a,n,c,f;if(t1&&(e.result+=wp.repeat(` +`,t-1))}function A5e(e,t,r){var s,a,n,c,f,p,h,E,C=e.kind,S=e.result,x;if(x=e.input.charCodeAt(e.position),ul(x)||EE(x)||x===35||x===38||x===42||x===33||x===124||x===62||x===39||x===34||x===37||x===64||x===96||(x===63||x===45)&&(a=e.input.charCodeAt(e.position+1),ul(a)||r&&EE(a)))return!1;for(e.kind="scalar",e.result="",n=c=e.position,f=!1;x!==0;){if(x===58){if(a=e.input.charCodeAt(e.position+1),ul(a)||r&&EE(a))break}else if(x===35){if(s=e.input.charCodeAt(e.position-1),ul(s))break}else{if(e.position===e.lineStart&&Cx(e)||r&&EE(x))break;if(Wf(x))if(p=e.line,h=e.lineStart,E=e.lineIndent,ls(e,!1,-1),e.lineIndent>=t){f=!0,x=e.input.charCodeAt(e.position);continue}else{e.position=c,e.line=p,e.lineStart=h,e.lineIndent=E;break}}f&&(r0(e,n,c,!1),LU(e,e.line-p),n=c=e.position,f=!1),xg(x)||(c=e.position+1),x=e.input.charCodeAt(++e.position)}return r0(e,n,c,!1),e.result?!0:(e.kind=C,e.result=S,!1)}function p5e(e,t){var r,s,a;if(r=e.input.charCodeAt(e.position),r!==39)return!1;for(e.kind="scalar",e.result="",e.position++,s=a=e.position;(r=e.input.charCodeAt(e.position))!==0;)if(r===39)if(r0(e,s,e.position,!0),r=e.input.charCodeAt(++e.position),r===39)s=e.position,e.position++,a=e.position;else return!0;else Wf(r)?(r0(e,s,a,!0),LU(e,ls(e,!1,t)),s=a=e.position):e.position===e.lineStart&&Cx(e)?Fr(e,"unexpected end of the document within a single quoted scalar"):(e.position++,a=e.position);Fr(e,"unexpected end of the stream within a single quoted scalar")}function h5e(e,t){var r,s,a,n,c,f;if(f=e.input.charCodeAt(e.position),f!==34)return!1;for(e.kind="scalar",e.result="",e.position++,r=s=e.position;(f=e.input.charCodeAt(e.position))!==0;){if(f===34)return r0(e,r,e.position,!0),e.position++,!0;if(f===92){if(r0(e,r,e.position,!0),f=e.input.charCodeAt(++e.position),Wf(f))ls(e,!1,t);else if(f<256&&nte[f])e.result+=ite[f],e.position++;else if((c=l5e(f))>0){for(a=c,n=0;a>0;a--)f=e.input.charCodeAt(++e.position),(c=a5e(f))>=0?n=(n<<4)+c:Fr(e,"expected hexadecimal character");e.result+=u5e(n),e.position++}else Fr(e,"unknown escape sequence");r=s=e.position}else Wf(f)?(r0(e,r,s,!0),LU(e,ls(e,!1,t)),r=s=e.position):e.position===e.lineStart&&Cx(e)?Fr(e,"unexpected end of the document within a double quoted scalar"):(e.position++,s=e.position)}Fr(e,"unexpected end of the stream within a double quoted scalar")}function d5e(e,t){var r=!0,s,a=e.tag,n,c=e.anchor,f,p,h,E,C,S={},x,I,T,O;if(O=e.input.charCodeAt(e.position),O===91)p=93,C=!1,n=[];else if(O===123)p=125,C=!0,n={};else return!1;for(e.anchor!==null&&(e.anchorMap[e.anchor]=n),O=e.input.charCodeAt(++e.position);O!==0;){if(ls(e,!0,t),O=e.input.charCodeAt(e.position),O===p)return e.position++,e.tag=a,e.anchor=c,e.kind=C?"mapping":"sequence",e.result=n,!0;r||Fr(e,"missed comma between flow collection entries"),I=x=T=null,h=E=!1,O===63&&(f=e.input.charCodeAt(e.position+1),ul(f)&&(h=E=!0,e.position++,ls(e,!0,t))),s=e.line,CE(e,t,yx,!1,!0),I=e.tag,x=e.result,ls(e,!0,t),O=e.input.charCodeAt(e.position),(E||e.line===s)&&O===58&&(h=!0,O=e.input.charCodeAt(++e.position),ls(e,!0,t),CE(e,t,yx,!1,!0),T=e.result),C?IE(e,n,S,I,x,T):h?n.push(IE(e,null,S,I,x,T)):n.push(x),ls(e,!0,t),O=e.input.charCodeAt(e.position),O===44?(r=!0,O=e.input.charCodeAt(++e.position)):r=!1}Fr(e,"unexpected end of the stream within a flow collection")}function g5e(e,t){var r,s,a=NU,n=!1,c=!1,f=t,p=0,h=!1,E,C;if(C=e.input.charCodeAt(e.position),C===124)s=!1;else if(C===62)s=!0;else return!1;for(e.kind="scalar",e.result="";C!==0;)if(C=e.input.charCodeAt(++e.position),C===43||C===45)NU===a?a=C===43?Wee:n5e:Fr(e,"repeat of a chomping mode identifier");else if((E=c5e(C))>=0)E===0?Fr(e,"bad explicit indentation width of a block scalar; it cannot be less than one"):c?Fr(e,"repeat of an indentation width identifier"):(f=t+E-1,c=!0);else break;if(xg(C)){do C=e.input.charCodeAt(++e.position);while(xg(C));if(C===35)do C=e.input.charCodeAt(++e.position);while(!Wf(C)&&C!==0)}for(;C!==0;){for(OU(e),e.lineIndent=0,C=e.input.charCodeAt(e.position);(!c||e.lineIndentf&&(f=e.lineIndent),Wf(C)){p++;continue}if(e.lineIndentt)&&p!==0)Fr(e,"bad indentation of a sequence entry");else if(e.lineIndentt)&&(CE(e,t,Ex,!0,a)&&(I?S=e.result:x=e.result),I||(IE(e,h,E,C,S,x,n,c),C=S=x=null),ls(e,!0,-1),O=e.input.charCodeAt(e.position)),e.lineIndent>t&&O!==0)Fr(e,"bad indentation of a mapping entry");else if(e.lineIndentt?p=1:e.lineIndent===t?p=0:e.lineIndentt?p=1:e.lineIndent===t?p=0:e.lineIndent tag; it should be "scalar", not "'+e.kind+'"'),C=0,S=e.implicitTypes.length;C tag; it should be "'+x.kind+'", not "'+e.kind+'"'),x.resolve(e.result)?(e.result=x.construct(e.result),e.anchor!==null&&(e.anchorMap[e.anchor]=e.result)):Fr(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")):Fr(e,"unknown tag !<"+e.tag+">");return e.listener!==null&&e.listener("close",e),e.tag!==null||e.anchor!==null||E}function C5e(e){var t=e.position,r,s,a,n=!1,c;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap={},e.anchorMap={};(c=e.input.charCodeAt(e.position))!==0&&(ls(e,!0,-1),c=e.input.charCodeAt(e.position),!(e.lineIndent>0||c!==37));){for(n=!0,c=e.input.charCodeAt(++e.position),r=e.position;c!==0&&!ul(c);)c=e.input.charCodeAt(++e.position);for(s=e.input.slice(r,e.position),a=[],s.length<1&&Fr(e,"directive name must not be less than one character in length");c!==0;){for(;xg(c);)c=e.input.charCodeAt(++e.position);if(c===35){do c=e.input.charCodeAt(++e.position);while(c!==0&&!Wf(c));break}if(Wf(c))break;for(r=e.position;c!==0&&!ul(c);)c=e.input.charCodeAt(++e.position);a.push(e.input.slice(r,e.position))}c!==0&&OU(e),n0.call(Jee,s)?Jee[s](e,s,a):Ix(e,'unknown document directive "'+s+'"')}if(ls(e,!0,-1),e.lineIndent===0&&e.input.charCodeAt(e.position)===45&&e.input.charCodeAt(e.position+1)===45&&e.input.charCodeAt(e.position+2)===45?(e.position+=3,ls(e,!0,-1)):n&&Fr(e,"directives end mark is expected"),CE(e,e.lineIndent-1,Ex,!1,!0),ls(e,!0,-1),e.checkLineBreaks&&s5e.test(e.input.slice(t,e.position))&&Ix(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&Cx(e)){e.input.charCodeAt(e.position)===46&&(e.position+=3,ls(e,!0,-1));return}if(e.position"u"&&(r=t,t=null);var s=ote(e,r);if(typeof t!="function")return s;for(var a=0,n=s.length;a"u"&&(r=t,t=null),ate(e,t,wp.extend({schema:Zee},r))}function B5e(e,t){return lte(e,wp.extend({schema:Zee},t))}O2.exports.loadAll=ate;O2.exports.load=lte;O2.exports.safeLoadAll=w5e;O2.exports.safeLoad=B5e});var Rte=G((VPt,HU)=>{"use strict";var M2=Sg(),U2=gE(),v5e=N2(),S5e=yE(),mte=Object.prototype.toString,yte=Object.prototype.hasOwnProperty,D5e=9,L2=10,b5e=13,P5e=32,x5e=33,k5e=34,Ete=35,Q5e=37,R5e=38,T5e=39,F5e=42,Ite=44,N5e=45,Cte=58,O5e=61,L5e=62,M5e=63,U5e=64,wte=91,Bte=93,_5e=96,vte=123,H5e=124,Ste=125,Yo={};Yo[0]="\\0";Yo[7]="\\a";Yo[8]="\\b";Yo[9]="\\t";Yo[10]="\\n";Yo[11]="\\v";Yo[12]="\\f";Yo[13]="\\r";Yo[27]="\\e";Yo[34]='\\"';Yo[92]="\\\\";Yo[133]="\\N";Yo[160]="\\_";Yo[8232]="\\L";Yo[8233]="\\P";var j5e=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"];function G5e(e,t){var r,s,a,n,c,f,p;if(t===null)return{};for(r={},s=Object.keys(t),a=0,n=s.length;a0?e.charCodeAt(n-1):null,S=S&&Ate(c,f)}else{for(n=0;ns&&e[C+1]!==" ",C=n);else if(!wE(c))return wx;f=n>0?e.charCodeAt(n-1):null,S=S&&Ate(c,f)}h=h||E&&n-C-1>s&&e[C+1]!==" "}return!p&&!h?S&&!a(e)?bte:Pte:r>9&&Dte(e)?wx:h?kte:xte}function K5e(e,t,r,s){e.dump=function(){if(t.length===0)return"''";if(!e.noCompatMode&&j5e.indexOf(t)!==-1)return"'"+t+"'";var a=e.indent*Math.max(1,r),n=e.lineWidth===-1?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-a),c=s||e.flowLevel>-1&&r>=e.flowLevel;function f(p){return W5e(e,p)}switch(J5e(t,c,e.indent,n,f)){case bte:return t;case Pte:return"'"+t.replace(/'/g,"''")+"'";case xte:return"|"+pte(t,e.indent)+hte(fte(t,a));case kte:return">"+pte(t,e.indent)+hte(fte(z5e(t,n),a));case wx:return'"'+X5e(t,n)+'"';default:throw new U2("impossible error: invalid scalar style")}}()}function pte(e,t){var r=Dte(e)?String(t):"",s=e[e.length-1]===` +`,a=s&&(e[e.length-2]===` +`||e===` +`),n=a?"+":s?"":"-";return r+n+` +`}function hte(e){return e[e.length-1]===` +`?e.slice(0,-1):e}function z5e(e,t){for(var r=/(\n+)([^\n]*)/g,s=function(){var h=e.indexOf(` +`);return h=h!==-1?h:e.length,r.lastIndex=h,dte(e.slice(0,h),t)}(),a=e[0]===` +`||e[0]===" ",n,c;c=r.exec(e);){var f=c[1],p=c[2];n=p[0]===" ",s+=f+(!a&&!n&&p!==""?` +`:"")+dte(p,t),a=n}return s}function dte(e,t){if(e===""||e[0]===" ")return e;for(var r=/ [^ ]/g,s,a=0,n,c=0,f=0,p="";s=r.exec(e);)f=s.index,f-a>t&&(n=c>a?c:f,p+=` +`+e.slice(a,n),a=n+1),c=f;return p+=` +`,e.length-a>t&&c>a?p+=e.slice(a,c)+` +`+e.slice(c+1):p+=e.slice(a),p.slice(1)}function X5e(e){for(var t="",r,s,a,n=0;n=55296&&r<=56319&&(s=e.charCodeAt(n+1),s>=56320&&s<=57343)){t+=ute((r-55296)*1024+s-56320+65536),n++;continue}a=Yo[r],t+=!a&&wE(r)?e[n]:a||ute(r)}return t}function Z5e(e,t,r){var s="",a=e.tag,n,c;for(n=0,c=r.length;n1024&&(E+="? "),E+=e.dump+(e.condenseFlow?'"':"")+":"+(e.condenseFlow?"":" "),kg(e,t,h,!1,!1)&&(E+=e.dump,s+=E));e.tag=a,e.dump="{"+s+"}"}function t9e(e,t,r,s){var a="",n=e.tag,c=Object.keys(r),f,p,h,E,C,S;if(e.sortKeys===!0)c.sort();else if(typeof e.sortKeys=="function")c.sort(e.sortKeys);else if(e.sortKeys)throw new U2("sortKeys must be a boolean or a function");for(f=0,p=c.length;f1024,C&&(e.dump&&L2===e.dump.charCodeAt(0)?S+="?":S+="? "),S+=e.dump,C&&(S+=MU(e,t)),kg(e,t+1,E,!0,C)&&(e.dump&&L2===e.dump.charCodeAt(0)?S+=":":S+=": ",S+=e.dump,a+=S));e.tag=n,e.dump=a||"{}"}function gte(e,t,r){var s,a,n,c,f,p;for(a=r?e.explicitTypes:e.implicitTypes,n=0,c=a.length;n tag resolver accepts not "'+p+'" style');e.dump=s}return!0}return!1}function kg(e,t,r,s,a,n){e.tag=null,e.dump=r,gte(e,r,!1)||gte(e,r,!0);var c=mte.call(e.dump);s&&(s=e.flowLevel<0||e.flowLevel>t);var f=c==="[object Object]"||c==="[object Array]",p,h;if(f&&(p=e.duplicates.indexOf(r),h=p!==-1),(e.tag!==null&&e.tag!=="?"||h||e.indent!==2&&t>0)&&(a=!1),h&&e.usedDuplicates[p])e.dump="*ref_"+p;else{if(f&&h&&!e.usedDuplicates[p]&&(e.usedDuplicates[p]=!0),c==="[object Object]")s&&Object.keys(e.dump).length!==0?(t9e(e,t,e.dump,a),h&&(e.dump="&ref_"+p+e.dump)):(e9e(e,t,e.dump),h&&(e.dump="&ref_"+p+" "+e.dump));else if(c==="[object Array]"){var E=e.noArrayIndent&&t>0?t-1:t;s&&e.dump.length!==0?($5e(e,E,e.dump,a),h&&(e.dump="&ref_"+p+e.dump)):(Z5e(e,E,e.dump),h&&(e.dump="&ref_"+p+" "+e.dump))}else if(c==="[object String]")e.tag!=="?"&&K5e(e,e.dump,t,n);else{if(e.skipInvalid)return!1;throw new U2("unacceptable kind of an object to dump "+c)}e.tag!==null&&e.tag!=="?"&&(e.dump="!<"+e.tag+"> "+e.dump)}return!0}function r9e(e,t){var r=[],s=[],a,n;for(UU(e,r,s),a=0,n=s.length;a{"use strict";var Bx=cte(),Tte=Rte();function vx(e){return function(){throw new Error("Function "+e+" is deprecated and cannot be used.")}}Wi.exports.Type=Ps();Wi.exports.Schema=Dg();Wi.exports.FAILSAFE_SCHEMA=gx();Wi.exports.JSON_SCHEMA=RU();Wi.exports.CORE_SCHEMA=TU();Wi.exports.DEFAULT_SAFE_SCHEMA=yE();Wi.exports.DEFAULT_FULL_SCHEMA=N2();Wi.exports.load=Bx.load;Wi.exports.loadAll=Bx.loadAll;Wi.exports.safeLoad=Bx.safeLoad;Wi.exports.safeLoadAll=Bx.safeLoadAll;Wi.exports.dump=Tte.dump;Wi.exports.safeDump=Tte.safeDump;Wi.exports.YAMLException=gE();Wi.exports.MINIMAL_SCHEMA=gx();Wi.exports.SAFE_SCHEMA=yE();Wi.exports.DEFAULT_SCHEMA=N2();Wi.exports.scan=vx("scan");Wi.exports.parse=vx("parse");Wi.exports.compose=vx("compose");Wi.exports.addConstructor=vx("addConstructor")});var Ote=G((KPt,Nte)=>{"use strict";var i9e=Fte();Nte.exports=i9e});var Mte=G((zPt,Lte)=>{"use strict";function s9e(e,t){function r(){this.constructor=e}r.prototype=t.prototype,e.prototype=new r}function Qg(e,t,r,s){this.message=e,this.expected=t,this.found=r,this.location=s,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Qg)}s9e(Qg,Error);Qg.buildMessage=function(e,t){var r={literal:function(h){return'"'+a(h.text)+'"'},class:function(h){var E="",C;for(C=0;C0){for(C=1,S=1;C({[mt]:Oe})))},ue=function(ee){return ee},ae=function(ee){return ee},ge=Wa("correct indentation"),Ae=" ",Ce=mn(" ",!1),Ee=function(ee){return ee.length===lr*St},d=function(ee){return ee.length===(lr+1)*St},Se=function(){return lr++,!0},Be=function(){return lr--,!0},me=function(){return pa()},ce=Wa("pseudostring"),Z=/^[^\r\n\t ?:,\][{}#&*!|>'"%@`\-]/,De=Xn(["\r",` +`," "," ","?",":",",","]","[","{","}","#","&","*","!","|",">","'",'"',"%","@","`","-"],!0,!1),Qe=/^[^\r\n\t ,\][{}:#"']/,st=Xn(["\r",` +`," "," ",",","]","[","{","}",":","#",'"',"'"],!0,!1),_=function(){return pa().replace(/^ *| *$/g,"")},tt="--",Ne=mn("--",!1),ke=/^[a-zA-Z\/0-9]/,be=Xn([["a","z"],["A","Z"],"/",["0","9"]],!1,!1),je=/^[^\r\n\t :,]/,Re=Xn(["\r",` +`," "," ",":",","],!0,!1),ct="null",Me=mn("null",!1),P=function(){return null},w="true",b=mn("true",!1),y=function(){return!0},F="false",z=mn("false",!1),X=function(){return!1},$=Wa("string"),se='"',xe=mn('"',!1),Fe=function(){return""},ut=function(ee){return ee},Ct=function(ee){return ee.join("")},qt=/^[^"\\\0-\x1F\x7F]/,ir=Xn(['"',"\\",["\0",""],"\x7F"],!0,!1),Pt='\\"',gn=mn('\\"',!1),Pr=function(){return'"'},Cr="\\\\",Or=mn("\\\\",!1),on=function(){return"\\"},li="\\/",Do=mn("\\/",!1),ns=function(){return"/"},so="\\b",bo=mn("\\b",!1),ji=function(){return"\b"},oo="\\f",Po=mn("\\f",!1),TA=function(){return"\f"},df="\\n",dh=mn("\\n",!1),gh=function(){return` +`},ao="\\r",Gn=mn("\\r",!1),Ns=function(){return"\r"},lo="\\t",su=mn("\\t",!1),ou=function(){return" "},au="\\u",FA=mn("\\u",!1),NA=function(ee,ye,Oe,mt){return String.fromCharCode(parseInt(`0x${ee}${ye}${Oe}${mt}`))},fa=/^[0-9a-fA-F]/,Aa=Xn([["0","9"],["a","f"],["A","F"]],!1,!1),OA=Wa("blank space"),dr=/^[ \t]/,xo=Xn([" "," "],!1,!1),Ga=Wa("white space"),Ue=/^[ \t\n\r]/,wr=Xn([" "," ",` +`,"\r"],!1,!1),gf=`\r +`,LA=mn(`\r +`,!1),MA=` +`,lu=mn(` +`,!1),cu="\r",lc=mn("\r",!1),we=0,Nt=0,cc=[{line:1,column:1}],Oi=0,co=[],Tt=0,Qn;if("startRule"in t){if(!(t.startRule in s))throw new Error(`Can't start parsing from rule "`+t.startRule+'".');a=s[t.startRule]}function pa(){return e.substring(Nt,we)}function Gi(){return Va(Nt,we)}function Li(ee,ye){throw ye=ye!==void 0?ye:Va(Nt,we),mf([Wa(ee)],e.substring(Nt,we),ye)}function qa(ee,ye){throw ye=ye!==void 0?ye:Va(Nt,we),Ja(ee,ye)}function mn(ee,ye){return{type:"literal",text:ee,ignoreCase:ye}}function Xn(ee,ye,Oe){return{type:"class",parts:ee,inverted:ye,ignoreCase:Oe}}function uu(){return{type:"any"}}function mh(){return{type:"end"}}function Wa(ee){return{type:"other",description:ee}}function Ya(ee){var ye=cc[ee],Oe;if(ye)return ye;for(Oe=ee-1;!cc[Oe];)Oe--;for(ye=cc[Oe],ye={line:ye.line,column:ye.column};OeOi&&(Oi=we,co=[]),co.push(ee))}function Ja(ee,ye){return new Qg(ee,null,null,ye)}function mf(ee,ye,Oe){return new Qg(Qg.buildMessage(ee,ye),ee,ye,Oe)}function uc(){var ee;return ee=UA(),ee}function vn(){var ee,ye,Oe;for(ee=we,ye=[],Oe=ha();Oe!==r;)ye.push(Oe),Oe=ha();return ye!==r&&(Nt=ee,ye=n(ye)),ee=ye,ee}function ha(){var ee,ye,Oe,mt,Et;return ee=we,ye=kl(),ye!==r?(e.charCodeAt(we)===45?(Oe=c,we++):(Oe=r,Tt===0&&$e(f)),Oe!==r?(mt=Tn(),mt!==r?(Et=da(),Et!==r?(Nt=ee,ye=p(Et),ee=ye):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r),ee}function UA(){var ee,ye,Oe;for(ee=we,ye=[],Oe=_A();Oe!==r;)ye.push(Oe),Oe=_A();return ye!==r&&(Nt=ee,ye=h(ye)),ee=ye,ee}function _A(){var ee,ye,Oe,mt,Et,bt,tr,pn,ci;if(ee=we,ye=Tn(),ye===r&&(ye=null),ye!==r){if(Oe=we,e.charCodeAt(we)===35?(mt=E,we++):(mt=r,Tt===0&&$e(C)),mt!==r){if(Et=[],bt=we,tr=we,Tt++,pn=ot(),Tt--,pn===r?tr=void 0:(we=tr,tr=r),tr!==r?(e.length>we?(pn=e.charAt(we),we++):(pn=r,Tt===0&&$e(S)),pn!==r?(tr=[tr,pn],bt=tr):(we=bt,bt=r)):(we=bt,bt=r),bt!==r)for(;bt!==r;)Et.push(bt),bt=we,tr=we,Tt++,pn=ot(),Tt--,pn===r?tr=void 0:(we=tr,tr=r),tr!==r?(e.length>we?(pn=e.charAt(we),we++):(pn=r,Tt===0&&$e(S)),pn!==r?(tr=[tr,pn],bt=tr):(we=bt,bt=r)):(we=bt,bt=r);else Et=r;Et!==r?(mt=[mt,Et],Oe=mt):(we=Oe,Oe=r)}else we=Oe,Oe=r;if(Oe===r&&(Oe=null),Oe!==r){if(mt=[],Et=Ke(),Et!==r)for(;Et!==r;)mt.push(Et),Et=Ke();else mt=r;mt!==r?(Nt=ee,ye=x(),ee=ye):(we=ee,ee=r)}else we=ee,ee=r}else we=ee,ee=r;if(ee===r&&(ee=we,ye=kl(),ye!==r?(Oe=Ka(),Oe!==r?(mt=Tn(),mt===r&&(mt=null),mt!==r?(e.charCodeAt(we)===58?(Et=I,we++):(Et=r,Tt===0&&$e(T)),Et!==r?(bt=Tn(),bt===r&&(bt=null),bt!==r?(tr=da(),tr!==r?(Nt=ee,ye=O(Oe,tr),ee=ye):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r),ee===r&&(ee=we,ye=kl(),ye!==r?(Oe=is(),Oe!==r?(mt=Tn(),mt===r&&(mt=null),mt!==r?(e.charCodeAt(we)===58?(Et=I,we++):(Et=r,Tt===0&&$e(T)),Et!==r?(bt=Tn(),bt===r&&(bt=null),bt!==r?(tr=da(),tr!==r?(Nt=ee,ye=O(Oe,tr),ee=ye):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r),ee===r))){if(ee=we,ye=kl(),ye!==r)if(Oe=is(),Oe!==r)if(mt=Tn(),mt!==r)if(Et=fu(),Et!==r){if(bt=[],tr=Ke(),tr!==r)for(;tr!==r;)bt.push(tr),tr=Ke();else bt=r;bt!==r?(Nt=ee,ye=O(Oe,Et),ee=ye):(we=ee,ee=r)}else we=ee,ee=r;else we=ee,ee=r;else we=ee,ee=r;else we=ee,ee=r;if(ee===r)if(ee=we,ye=kl(),ye!==r)if(Oe=is(),Oe!==r){if(mt=[],Et=we,bt=Tn(),bt===r&&(bt=null),bt!==r?(e.charCodeAt(we)===44?(tr=U,we++):(tr=r,Tt===0&&$e(V)),tr!==r?(pn=Tn(),pn===r&&(pn=null),pn!==r?(ci=is(),ci!==r?(Nt=Et,bt=te(Oe,ci),Et=bt):(we=Et,Et=r)):(we=Et,Et=r)):(we=Et,Et=r)):(we=Et,Et=r),Et!==r)for(;Et!==r;)mt.push(Et),Et=we,bt=Tn(),bt===r&&(bt=null),bt!==r?(e.charCodeAt(we)===44?(tr=U,we++):(tr=r,Tt===0&&$e(V)),tr!==r?(pn=Tn(),pn===r&&(pn=null),pn!==r?(ci=is(),ci!==r?(Nt=Et,bt=te(Oe,ci),Et=bt):(we=Et,Et=r)):(we=Et,Et=r)):(we=Et,Et=r)):(we=Et,Et=r);else mt=r;mt!==r?(Et=Tn(),Et===r&&(Et=null),Et!==r?(e.charCodeAt(we)===58?(bt=I,we++):(bt=r,Tt===0&&$e(T)),bt!==r?(tr=Tn(),tr===r&&(tr=null),tr!==r?(pn=da(),pn!==r?(Nt=ee,ye=ie(Oe,mt,pn),ee=ye):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)}else we=ee,ee=r;else we=ee,ee=r}return ee}function da(){var ee,ye,Oe,mt,Et,bt,tr;if(ee=we,ye=we,Tt++,Oe=we,mt=ot(),mt!==r?(Et=Ut(),Et!==r?(e.charCodeAt(we)===45?(bt=c,we++):(bt=r,Tt===0&&$e(f)),bt!==r?(tr=Tn(),tr!==r?(mt=[mt,Et,bt,tr],Oe=mt):(we=Oe,Oe=r)):(we=Oe,Oe=r)):(we=Oe,Oe=r)):(we=Oe,Oe=r),Tt--,Oe!==r?(we=ye,ye=void 0):ye=r,ye!==r?(Oe=Ke(),Oe!==r?(mt=Rn(),mt!==r?(Et=vn(),Et!==r?(bt=ga(),bt!==r?(Nt=ee,ye=ue(Et),ee=ye):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r),ee===r&&(ee=we,ye=ot(),ye!==r?(Oe=Rn(),Oe!==r?(mt=UA(),mt!==r?(Et=ga(),Et!==r?(Nt=ee,ye=ue(mt),ee=ye):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r),ee===r))if(ee=we,ye=fc(),ye!==r){if(Oe=[],mt=Ke(),mt!==r)for(;mt!==r;)Oe.push(mt),mt=Ke();else Oe=r;Oe!==r?(Nt=ee,ye=ae(ye),ee=ye):(we=ee,ee=r)}else we=ee,ee=r;return ee}function kl(){var ee,ye,Oe;for(Tt++,ee=we,ye=[],e.charCodeAt(we)===32?(Oe=Ae,we++):(Oe=r,Tt===0&&$e(Ce));Oe!==r;)ye.push(Oe),e.charCodeAt(we)===32?(Oe=Ae,we++):(Oe=r,Tt===0&&$e(Ce));return ye!==r?(Nt=we,Oe=Ee(ye),Oe?Oe=void 0:Oe=r,Oe!==r?(ye=[ye,Oe],ee=ye):(we=ee,ee=r)):(we=ee,ee=r),Tt--,ee===r&&(ye=r,Tt===0&&$e(ge)),ee}function Ut(){var ee,ye,Oe;for(ee=we,ye=[],e.charCodeAt(we)===32?(Oe=Ae,we++):(Oe=r,Tt===0&&$e(Ce));Oe!==r;)ye.push(Oe),e.charCodeAt(we)===32?(Oe=Ae,we++):(Oe=r,Tt===0&&$e(Ce));return ye!==r?(Nt=we,Oe=d(ye),Oe?Oe=void 0:Oe=r,Oe!==r?(ye=[ye,Oe],ee=ye):(we=ee,ee=r)):(we=ee,ee=r),ee}function Rn(){var ee;return Nt=we,ee=Se(),ee?ee=void 0:ee=r,ee}function ga(){var ee;return Nt=we,ee=Be(),ee?ee=void 0:ee=r,ee}function Ka(){var ee;return ee=Ql(),ee===r&&(ee=Ac()),ee}function is(){var ee,ye,Oe;if(ee=Ql(),ee===r){if(ee=we,ye=[],Oe=za(),Oe!==r)for(;Oe!==r;)ye.push(Oe),Oe=za();else ye=r;ye!==r&&(Nt=ee,ye=me()),ee=ye}return ee}function fc(){var ee;return ee=Mi(),ee===r&&(ee=Bs(),ee===r&&(ee=Ql(),ee===r&&(ee=Ac()))),ee}function fu(){var ee;return ee=Mi(),ee===r&&(ee=Ql(),ee===r&&(ee=za())),ee}function Ac(){var ee,ye,Oe,mt,Et,bt;if(Tt++,ee=we,Z.test(e.charAt(we))?(ye=e.charAt(we),we++):(ye=r,Tt===0&&$e(De)),ye!==r){for(Oe=[],mt=we,Et=Tn(),Et===r&&(Et=null),Et!==r?(Qe.test(e.charAt(we))?(bt=e.charAt(we),we++):(bt=r,Tt===0&&$e(st)),bt!==r?(Et=[Et,bt],mt=Et):(we=mt,mt=r)):(we=mt,mt=r);mt!==r;)Oe.push(mt),mt=we,Et=Tn(),Et===r&&(Et=null),Et!==r?(Qe.test(e.charAt(we))?(bt=e.charAt(we),we++):(bt=r,Tt===0&&$e(st)),bt!==r?(Et=[Et,bt],mt=Et):(we=mt,mt=r)):(we=mt,mt=r);Oe!==r?(Nt=ee,ye=_(),ee=ye):(we=ee,ee=r)}else we=ee,ee=r;return Tt--,ee===r&&(ye=r,Tt===0&&$e(ce)),ee}function za(){var ee,ye,Oe,mt,Et;if(ee=we,e.substr(we,2)===tt?(ye=tt,we+=2):(ye=r,Tt===0&&$e(Ne)),ye===r&&(ye=null),ye!==r)if(ke.test(e.charAt(we))?(Oe=e.charAt(we),we++):(Oe=r,Tt===0&&$e(be)),Oe!==r){for(mt=[],je.test(e.charAt(we))?(Et=e.charAt(we),we++):(Et=r,Tt===0&&$e(Re));Et!==r;)mt.push(Et),je.test(e.charAt(we))?(Et=e.charAt(we),we++):(Et=r,Tt===0&&$e(Re));mt!==r?(Nt=ee,ye=_(),ee=ye):(we=ee,ee=r)}else we=ee,ee=r;else we=ee,ee=r;return ee}function Mi(){var ee,ye;return ee=we,e.substr(we,4)===ct?(ye=ct,we+=4):(ye=r,Tt===0&&$e(Me)),ye!==r&&(Nt=ee,ye=P()),ee=ye,ee}function Bs(){var ee,ye;return ee=we,e.substr(we,4)===w?(ye=w,we+=4):(ye=r,Tt===0&&$e(b)),ye!==r&&(Nt=ee,ye=y()),ee=ye,ee===r&&(ee=we,e.substr(we,5)===F?(ye=F,we+=5):(ye=r,Tt===0&&$e(z)),ye!==r&&(Nt=ee,ye=X()),ee=ye),ee}function Ql(){var ee,ye,Oe,mt;return Tt++,ee=we,e.charCodeAt(we)===34?(ye=se,we++):(ye=r,Tt===0&&$e(xe)),ye!==r?(e.charCodeAt(we)===34?(Oe=se,we++):(Oe=r,Tt===0&&$e(xe)),Oe!==r?(Nt=ee,ye=Fe(),ee=ye):(we=ee,ee=r)):(we=ee,ee=r),ee===r&&(ee=we,e.charCodeAt(we)===34?(ye=se,we++):(ye=r,Tt===0&&$e(xe)),ye!==r?(Oe=yf(),Oe!==r?(e.charCodeAt(we)===34?(mt=se,we++):(mt=r,Tt===0&&$e(xe)),mt!==r?(Nt=ee,ye=ut(Oe),ee=ye):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)),Tt--,ee===r&&(ye=r,Tt===0&&$e($)),ee}function yf(){var ee,ye,Oe;if(ee=we,ye=[],Oe=pc(),Oe!==r)for(;Oe!==r;)ye.push(Oe),Oe=pc();else ye=r;return ye!==r&&(Nt=ee,ye=Ct(ye)),ee=ye,ee}function pc(){var ee,ye,Oe,mt,Et,bt;return qt.test(e.charAt(we))?(ee=e.charAt(we),we++):(ee=r,Tt===0&&$e(ir)),ee===r&&(ee=we,e.substr(we,2)===Pt?(ye=Pt,we+=2):(ye=r,Tt===0&&$e(gn)),ye!==r&&(Nt=ee,ye=Pr()),ee=ye,ee===r&&(ee=we,e.substr(we,2)===Cr?(ye=Cr,we+=2):(ye=r,Tt===0&&$e(Or)),ye!==r&&(Nt=ee,ye=on()),ee=ye,ee===r&&(ee=we,e.substr(we,2)===li?(ye=li,we+=2):(ye=r,Tt===0&&$e(Do)),ye!==r&&(Nt=ee,ye=ns()),ee=ye,ee===r&&(ee=we,e.substr(we,2)===so?(ye=so,we+=2):(ye=r,Tt===0&&$e(bo)),ye!==r&&(Nt=ee,ye=ji()),ee=ye,ee===r&&(ee=we,e.substr(we,2)===oo?(ye=oo,we+=2):(ye=r,Tt===0&&$e(Po)),ye!==r&&(Nt=ee,ye=TA()),ee=ye,ee===r&&(ee=we,e.substr(we,2)===df?(ye=df,we+=2):(ye=r,Tt===0&&$e(dh)),ye!==r&&(Nt=ee,ye=gh()),ee=ye,ee===r&&(ee=we,e.substr(we,2)===ao?(ye=ao,we+=2):(ye=r,Tt===0&&$e(Gn)),ye!==r&&(Nt=ee,ye=Ns()),ee=ye,ee===r&&(ee=we,e.substr(we,2)===lo?(ye=lo,we+=2):(ye=r,Tt===0&&$e(su)),ye!==r&&(Nt=ee,ye=ou()),ee=ye,ee===r&&(ee=we,e.substr(we,2)===au?(ye=au,we+=2):(ye=r,Tt===0&&$e(FA)),ye!==r?(Oe=Bi(),Oe!==r?(mt=Bi(),mt!==r?(Et=Bi(),Et!==r?(bt=Bi(),bt!==r?(Nt=ee,ye=NA(Oe,mt,Et,bt),ee=ye):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)))))))))),ee}function Bi(){var ee;return fa.test(e.charAt(we))?(ee=e.charAt(we),we++):(ee=r,Tt===0&&$e(Aa)),ee}function Tn(){var ee,ye;if(Tt++,ee=[],dr.test(e.charAt(we))?(ye=e.charAt(we),we++):(ye=r,Tt===0&&$e(xo)),ye!==r)for(;ye!==r;)ee.push(ye),dr.test(e.charAt(we))?(ye=e.charAt(we),we++):(ye=r,Tt===0&&$e(xo));else ee=r;return Tt--,ee===r&&(ye=r,Tt===0&&$e(OA)),ee}function hc(){var ee,ye;if(Tt++,ee=[],Ue.test(e.charAt(we))?(ye=e.charAt(we),we++):(ye=r,Tt===0&&$e(wr)),ye!==r)for(;ye!==r;)ee.push(ye),Ue.test(e.charAt(we))?(ye=e.charAt(we),we++):(ye=r,Tt===0&&$e(wr));else ee=r;return Tt--,ee===r&&(ye=r,Tt===0&&$e(Ga)),ee}function Ke(){var ee,ye,Oe,mt,Et,bt;if(ee=we,ye=ot(),ye!==r){for(Oe=[],mt=we,Et=Tn(),Et===r&&(Et=null),Et!==r?(bt=ot(),bt!==r?(Et=[Et,bt],mt=Et):(we=mt,mt=r)):(we=mt,mt=r);mt!==r;)Oe.push(mt),mt=we,Et=Tn(),Et===r&&(Et=null),Et!==r?(bt=ot(),bt!==r?(Et=[Et,bt],mt=Et):(we=mt,mt=r)):(we=mt,mt=r);Oe!==r?(ye=[ye,Oe],ee=ye):(we=ee,ee=r)}else we=ee,ee=r;return ee}function ot(){var ee;return e.substr(we,2)===gf?(ee=gf,we+=2):(ee=r,Tt===0&&$e(LA)),ee===r&&(e.charCodeAt(we)===10?(ee=MA,we++):(ee=r,Tt===0&&$e(lu)),ee===r&&(e.charCodeAt(we)===13?(ee=cu,we++):(ee=r,Tt===0&&$e(lc)))),ee}let St=2,lr=0;if(Qn=a(),Qn!==r&&we===e.length)return Qn;throw Qn!==r&&we"u"?!0:typeof e=="object"&&e!==null&&!Array.isArray(e)?Object.keys(e).every(t=>jte(e[t])):!1}function jU(e,t,r){if(e===null)return`null +`;if(typeof e=="number"||typeof e=="boolean")return`${e.toString()} +`;if(typeof e=="string")return`${_te(e)} +`;if(Array.isArray(e)){if(e.length===0)return`[] +`;let s=" ".repeat(t);return` +${e.map(n=>`${s}- ${jU(n,t+1,!1)}`).join("")}`}if(typeof e=="object"&&e){let[s,a]=e instanceof Sx?[e.data,!1]:[e,!0],n=" ".repeat(t),c=Object.keys(s);a&&c.sort((p,h)=>{let E=Ute.indexOf(p),C=Ute.indexOf(h);return E===-1&&C===-1?ph?1:0:E!==-1&&C===-1?-1:E===-1&&C!==-1?1:E-C});let f=c.filter(p=>!jte(s[p])).map((p,h)=>{let E=s[p],C=_te(p),S=jU(E,t+1,!0),x=h>0||r?n:"",I=C.length>1024?`? ${C} +${x}:`:`${C}:`,T=S.startsWith(` +`)?S:` ${S}`;return`${x}${I}${T}`}).join(t===0?` +`:"")||` +`;return r?` +${f}`:`${f}`}throw new Error(`Unsupported value type (${e})`)}function fl(e){try{let t=jU(e,0,!1);return t!==` +`?t:""}catch(t){throw t.location&&(t.message=t.message.replace(/(\.)?$/,` (line ${t.location.start.line}, column ${t.location.start.column})$1`)),t}}function l9e(e){return e.endsWith(` +`)||(e+=` +`),(0,Hte.parse)(e)}function u9e(e){if(c9e.test(e))return l9e(e);let t=(0,Dx.safeLoad)(e,{schema:Dx.FAILSAFE_SCHEMA,json:!0});if(t==null)return{};if(typeof t!="object")throw new Error(`Expected an indexed object, got a ${typeof t} instead. Does your file follow Yaml's rules?`);if(Array.isArray(t))throw new Error("Expected an indexed object, got an array instead. Does your file follow Yaml's rules?");return t}function cs(e){return u9e(e)}var Dx,Hte,a9e,Ute,Sx,c9e,Gte=Xe(()=>{Dx=et(Ote()),Hte=et(Mte()),a9e=/^(?![-?:,\][{}#&*!|>'"%@` \t\r\n]).([ \t]*(?![,\][{}:# \t\r\n]).)*$/,Ute=["__metadata","version","resolution","dependencies","peerDependencies","dependenciesMeta","peerDependenciesMeta","binaries"],Sx=class{constructor(t){this.data=t}};fl.PreserveOrdering=Sx;c9e=/^(#.*(\r?\n))*?#\s+yarn\s+lockfile\s+v1\r?\n/i});var _2={};Vt(_2,{parseResolution:()=>px,parseShell:()=>ux,parseSyml:()=>cs,stringifyArgument:()=>PU,stringifyArgumentSegment:()=>xU,stringifyArithmeticExpression:()=>Ax,stringifyCommand:()=>bU,stringifyCommandChain:()=>dE,stringifyCommandChainThen:()=>DU,stringifyCommandLine:()=>fx,stringifyCommandLineThen:()=>SU,stringifyEnvSegment:()=>cx,stringifyRedirectArgument:()=>T2,stringifyResolution:()=>hx,stringifyShell:()=>hE,stringifyShellLine:()=>hE,stringifySyml:()=>fl,stringifyValueArgument:()=>wg});var vc=Xe(()=>{j$();Y$();Gte()});var Wte=G((txt,GU)=>{"use strict";var f9e=e=>{let t=!1,r=!1,s=!1;for(let a=0;a{if(!(typeof e=="string"||Array.isArray(e)))throw new TypeError("Expected the input to be `string | string[]`");t=Object.assign({pascalCase:!1},t);let r=a=>t.pascalCase?a.charAt(0).toUpperCase()+a.slice(1):a;return Array.isArray(e)?e=e.map(a=>a.trim()).filter(a=>a.length).join("-"):e=e.trim(),e.length===0?"":e.length===1?t.pascalCase?e.toUpperCase():e.toLowerCase():(e!==e.toLowerCase()&&(e=f9e(e)),e=e.replace(/^[_.\- ]+/,"").toLowerCase().replace(/[_.\- ]+(\w|$)/g,(a,n)=>n.toUpperCase()).replace(/\d+(\w|$)/g,a=>a.toUpperCase()),r(e))};GU.exports=qte;GU.exports.default=qte});var Yte=G((rxt,A9e)=>{A9e.exports=[{name:"Agola CI",constant:"AGOLA",env:"AGOLA_GIT_REF",pr:"AGOLA_PULL_REQUEST_ID"},{name:"Appcircle",constant:"APPCIRCLE",env:"AC_APPCIRCLE"},{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN"},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"TF_BUILD",pr:{BUILD_REASON:"PullRequest"}},{name:"Bamboo",constant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT",pr:"BITBUCKET_PR_ID"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITRISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDDY_EXECUTION_PULL_REQUEST_ID"},{name:"Buildkite",constant:"BUILDKITE",env:"BUILDKITE",pr:{env:"BUILDKITE_PULL_REQUEST",ne:"false"}},{name:"CircleCI",constant:"CIRCLE",env:"CIRCLECI",pr:"CIRCLE_PULL_REQUEST"},{name:"Cirrus CI",constant:"CIRRUS",env:"CIRRUS_CI",pr:"CIRRUS_PR"},{name:"Codefresh",constant:"CODEFRESH",env:"CF_BUILD_ID",pr:{any:["CF_PULL_REQUEST_NUMBER","CF_PULL_REQUEST_ID"]}},{name:"Codemagic",constant:"CODEMAGIC",env:"CM_BUILD_ID",pr:"CM_PULL_REQUEST"},{name:"Codeship",constant:"CODESHIP",env:{CI_NAME:"codeship"}},{name:"Drone",constant:"DRONE",env:"DRONE",pr:{DRONE_BUILD_EVENT:"pull_request"}},{name:"dsari",constant:"DSARI",env:"DSARI"},{name:"Earthly",constant:"EARTHLY",env:"EARTHLY_CI"},{name:"Expo Application Services",constant:"EAS",env:"EAS_BUILD"},{name:"Gerrit",constant:"GERRIT",env:"GERRIT_PROJECT"},{name:"Gitea Actions",constant:"GITEA_ACTIONS",env:"GITEA_ACTIONS"},{name:"GitHub Actions",constant:"GITHUB_ACTIONS",env:"GITHUB_ACTIONS",pr:{GITHUB_EVENT_NAME:"pull_request"}},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI",pr:"CI_MERGE_REQUEST_ID"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"Google Cloud Build",constant:"GOOGLE_CLOUD_BUILD",env:"BUILDER_OUTPUT"},{name:"Harness CI",constant:"HARNESS",env:"HARNESS_BUILD_ID"},{name:"Heroku",constant:"HEROKU",env:{env:"NODE",includes:"/app/.heroku/node/bin/node"}},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"LayerCI",constant:"LAYERCI",env:"LAYERCI",pr:"LAYERCI_PULL_REQUEST"},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Nevercode",constant:"NEVERCODE",env:"NEVERCODE",pr:{env:"NEVERCODE_PULL_REQUEST",ne:"false"}},{name:"Prow",constant:"PROW",env:"PROW_JOB_ID"},{name:"ReleaseHub",constant:"RELEASEHUB",env:"RELEASE_BUILD_ID"},{name:"Render",constant:"RENDER",env:"RENDER",pr:{IS_PULL_REQUEST:"true"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Screwdriver",constant:"SCREWDRIVER",env:"SCREWDRIVER",pr:{env:"SD_PULL_REQUEST",ne:"false"}},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Sourcehut",constant:"SOURCEHUT",env:{CI_NAME:"sourcehut"}},{name:"Strider CD",constant:"STRIDER",env:"STRIDER"},{name:"TaskCluster",constant:"TASKCLUSTER",env:["TASK_ID","RUN_ID"]},{name:"TeamCity",constant:"TEAMCITY",env:"TEAMCITY_VERSION"},{name:"Travis CI",constant:"TRAVIS",env:"TRAVIS",pr:{env:"TRAVIS_PULL_REQUEST",ne:"false"}},{name:"Vela",constant:"VELA",env:"VELA",pr:{VELA_PULL_REQUEST:"1"}},{name:"Vercel",constant:"VERCEL",env:{any:["NOW_BUILDER","VERCEL"]},pr:"VERCEL_GIT_PULL_REQUEST_ID"},{name:"Visual Studio App Center",constant:"APPCENTER",env:"APPCENTER_BUILD_ID"},{name:"Woodpecker",constant:"WOODPECKER",env:{CI:"woodpecker"},pr:{CI_BUILD_EVENT:"pull_request"}},{name:"Xcode Cloud",constant:"XCODE_CLOUD",env:"CI_XCODE_PROJECT",pr:"CI_PULL_REQUEST_NUMBER"},{name:"Xcode Server",constant:"XCODE_SERVER",env:"XCS"}]});var Rg=G(Wl=>{"use strict";var Jte=Yte(),xs=process.env;Object.defineProperty(Wl,"_vendors",{value:Jte.map(function(e){return e.constant})});Wl.name=null;Wl.isPR=null;Jte.forEach(function(e){let r=(Array.isArray(e.env)?e.env:[e.env]).every(function(s){return Vte(s)});if(Wl[e.constant]=r,!!r)switch(Wl.name=e.name,typeof e.pr){case"string":Wl.isPR=!!xs[e.pr];break;case"object":"env"in e.pr?Wl.isPR=e.pr.env in xs&&xs[e.pr.env]!==e.pr.ne:"any"in e.pr?Wl.isPR=e.pr.any.some(function(s){return!!xs[s]}):Wl.isPR=Vte(e.pr);break;default:Wl.isPR=null}});Wl.isCI=!!(xs.CI!=="false"&&(xs.BUILD_ID||xs.BUILD_NUMBER||xs.CI||xs.CI_APP_ID||xs.CI_BUILD_ID||xs.CI_BUILD_NUMBER||xs.CI_NAME||xs.CONTINUOUS_INTEGRATION||xs.RUN_ID||Wl.name));function Vte(e){return typeof e=="string"?!!xs[e]:"env"in e?xs[e.env]&&xs[e.env].includes(e.includes):"any"in e?e.any.some(function(t){return!!xs[t]}):Object.keys(e).every(function(t){return xs[t]===e[t]})}});var ni,In,Tg,qU,bx,Kte,WU,YU,Px=Xe(()=>{(function(e){e.StartOfInput="\0",e.EndOfInput="",e.EndOfPartialInput=""})(ni||(ni={}));(function(e){e[e.InitialNode=0]="InitialNode",e[e.SuccessNode=1]="SuccessNode",e[e.ErrorNode=2]="ErrorNode",e[e.CustomNode=3]="CustomNode"})(In||(In={}));Tg=-1,qU=/^(-h|--help)(?:=([0-9]+))?$/,bx=/^(--[a-z]+(?:-[a-z]+)*|-[a-zA-Z]+)$/,Kte=/^-[a-zA-Z]{2,}$/,WU=/^([^=]+)=([\s\S]*)$/,YU=process.env.DEBUG_CLI==="1"});var it,BE,xx,VU,kx=Xe(()=>{Px();it=class extends Error{constructor(t){super(t),this.clipanion={type:"usage"},this.name="UsageError"}},BE=class extends Error{constructor(t,r){if(super(),this.input=t,this.candidates=r,this.clipanion={type:"none"},this.name="UnknownSyntaxError",this.candidates.length===0)this.message="Command not found, but we're not sure what's the alternative.";else if(this.candidates.every(s=>s.reason!==null&&s.reason===r[0].reason)){let[{reason:s}]=this.candidates;this.message=`${s} + +${this.candidates.map(({usage:a})=>`$ ${a}`).join(` +`)}`}else if(this.candidates.length===1){let[{usage:s}]=this.candidates;this.message=`Command not found; did you mean: + +$ ${s} +${VU(t)}`}else this.message=`Command not found; did you mean one of: + +${this.candidates.map(({usage:s},a)=>`${`${a}.`.padStart(4)} ${s}`).join(` +`)} + +${VU(t)}`}},xx=class extends Error{constructor(t,r){super(),this.input=t,this.usages=r,this.clipanion={type:"none"},this.name="AmbiguousSyntaxError",this.message=`Cannot find which to pick amongst the following alternatives: + +${this.usages.map((s,a)=>`${`${a}.`.padStart(4)} ${s}`).join(` +`)} + +${VU(t)}`}},VU=e=>`While running ${e.filter(t=>t!==ni.EndOfInput&&t!==ni.EndOfPartialInput).map(t=>{let r=JSON.stringify(t);return t.match(/\s/)||t.length===0||r!==`"${t}"`?r:t}).join(" ")}`});function p9e(e){let t=e.split(` +`),r=t.filter(a=>a.match(/\S/)),s=r.length>0?r.reduce((a,n)=>Math.min(a,n.length-n.trimStart().length),Number.MAX_VALUE):0;return t.map(a=>a.slice(s).trimRight()).join(` +`)}function Vo(e,{format:t,paragraphs:r}){return e=e.replace(/\r\n?/g,` +`),e=p9e(e),e=e.replace(/^\n+|\n+$/g,""),e=e.replace(/^(\s*)-([^\n]*?)\n+/gm,`$1-$2 + +`),e=e.replace(/\n(\n)?\n*/g,(s,a)=>a||" "),r&&(e=e.split(/\n/).map(s=>{let a=s.match(/^\s*[*-][\t ]+(.*)/);if(!a)return s.match(/(.{1,80})(?: |$)/g).join(` +`);let n=s.length-s.trimStart().length;return a[1].match(new RegExp(`(.{1,${78-n}})(?: |$)`,"g")).map((c,f)=>" ".repeat(n)+(f===0?"- ":" ")+c).join(` +`)}).join(` + +`)),e=e.replace(/(`+)((?:.|[\n])*?)\1/g,(s,a,n)=>t.code(a+n+a)),e=e.replace(/(\*\*)((?:.|[\n])*?)\1/g,(s,a,n)=>t.bold(a+n+a)),e?`${e} +`:""}var JU,zte,Xte,KU=Xe(()=>{JU=Array(80).fill("\u2501");for(let e=0;e<=24;++e)JU[JU.length-e]=`\x1B[38;5;${232+e}m\u2501`;zte={header:e=>`\x1B[1m\u2501\u2501\u2501 ${e}${e.length<75?` ${JU.slice(e.length+5).join("")}`:":"}\x1B[0m`,bold:e=>`\x1B[1m${e}\x1B[22m`,error:e=>`\x1B[31m\x1B[1m${e}\x1B[22m\x1B[39m`,code:e=>`\x1B[36m${e}\x1B[39m`},Xte={header:e=>e,bold:e=>e,error:e=>e,code:e=>e}});function Ba(e){return{...e,[H2]:!0}}function Yf(e,t){return typeof e>"u"?[e,t]:typeof e=="object"&&e!==null&&!Array.isArray(e)?[void 0,e]:[e,t]}function Qx(e,{mergeName:t=!1}={}){let r=e.match(/^([^:]+): (.*)$/m);if(!r)return"validation failed";let[,s,a]=r;return t&&(a=a[0].toLowerCase()+a.slice(1)),a=s!=="."||!t?`${s.replace(/^\.(\[|$)/,"$1")}: ${a}`:`: ${a}`,a}function j2(e,t){return t.length===1?new it(`${e}${Qx(t[0],{mergeName:!0})}`):new it(`${e}: +${t.map(r=>` +- ${Qx(r)}`).join("")}`)}function Fg(e,t,r){if(typeof r>"u")return t;let s=[],a=[],n=f=>{let p=t;return t=f,n.bind(null,p)};if(!r(t,{errors:s,coercions:a,coercion:n}))throw j2(`Invalid value for ${e}`,s);for(let[,f]of a)f();return t}var H2,Bp=Xe(()=>{kx();H2=Symbol("clipanion/isOption")});var Jo={};Vt(Jo,{KeyRelationship:()=>Vf,TypeAssertionError:()=>s0,applyCascade:()=>W2,as:()=>R9e,assert:()=>x9e,assertWithErrors:()=>k9e,cascade:()=>Nx,fn:()=>T9e,hasAtLeastOneKey:()=>r_,hasExactLength:()=>rre,hasForbiddenKeys:()=>Z9e,hasKeyRelationship:()=>V2,hasMaxLength:()=>N9e,hasMinLength:()=>F9e,hasMutuallyExclusiveKeys:()=>$9e,hasRequiredKeys:()=>X9e,hasUniqueItems:()=>O9e,isArray:()=>Rx,isAtLeast:()=>e_,isAtMost:()=>U9e,isBase64:()=>V9e,isBoolean:()=>C9e,isDate:()=>B9e,isDict:()=>D9e,isEnum:()=>ks,isHexColor:()=>Y9e,isISO8601:()=>W9e,isInExclusiveRange:()=>H9e,isInInclusiveRange:()=>_9e,isInstanceOf:()=>P9e,isInteger:()=>t_,isJSON:()=>J9e,isLiteral:()=>$te,isLowerCase:()=>j9e,isMap:()=>S9e,isNegative:()=>L9e,isNullable:()=>z9e,isNumber:()=>ZU,isObject:()=>ere,isOneOf:()=>$U,isOptional:()=>K9e,isPartial:()=>b9e,isPayload:()=>w9e,isPositive:()=>M9e,isRecord:()=>Fx,isSet:()=>v9e,isString:()=>SE,isTuple:()=>Tx,isUUID4:()=>q9e,isUnknown:()=>XU,isUpperCase:()=>G9e,makeTrait:()=>tre,makeValidator:()=>Wr,matchesRegExp:()=>q2,softAssert:()=>Q9e});function ii(e){return e===null?"null":e===void 0?"undefined":e===""?"an empty string":typeof e=="symbol"?`<${e.toString()}>`:Array.isArray(e)?"an array":JSON.stringify(e)}function vE(e,t){if(e.length===0)return"nothing";if(e.length===1)return ii(e[0]);let r=e.slice(0,-1),s=e[e.length-1],a=e.length>2?`, ${t} `:` ${t} `;return`${r.map(n=>ii(n)).join(", ")}${a}${ii(s)}`}function i0(e,t){var r,s,a;return typeof t=="number"?`${(r=e?.p)!==null&&r!==void 0?r:"."}[${t}]`:h9e.test(t)?`${(s=e?.p)!==null&&s!==void 0?s:""}.${t}`:`${(a=e?.p)!==null&&a!==void 0?a:"."}[${JSON.stringify(t)}]`}function zU(e,t,r){return e===1?t:r}function mr({errors:e,p:t}={},r){return e?.push(`${t??"."}: ${r}`),!1}function E9e(e,t){return r=>{e[t]=r}}function Jf(e,t){return r=>{let s=e[t];return e[t]=r,Jf(e,t).bind(null,s)}}function G2(e,t,r){let s=()=>(e(r()),a),a=()=>(e(t),s);return s}function XU(){return Wr({test:(e,t)=>!0})}function $te(e){return Wr({test:(t,r)=>t!==e?mr(r,`Expected ${ii(e)} (got ${ii(t)})`):!0})}function SE(){return Wr({test:(e,t)=>typeof e!="string"?mr(t,`Expected a string (got ${ii(e)})`):!0})}function ks(e){let t=Array.isArray(e)?e:Object.values(e),r=t.every(a=>typeof a=="string"||typeof a=="number"),s=new Set(t);return s.size===1?$te([...s][0]):Wr({test:(a,n)=>s.has(a)?!0:r?mr(n,`Expected one of ${vE(t,"or")} (got ${ii(a)})`):mr(n,`Expected a valid enumeration value (got ${ii(a)})`)})}function C9e(){return Wr({test:(e,t)=>{var r;if(typeof e!="boolean"){if(typeof t?.coercions<"u"){if(typeof t?.coercion>"u")return mr(t,"Unbound coercion result");let s=I9e.get(e);if(typeof s<"u")return t.coercions.push([(r=t.p)!==null&&r!==void 0?r:".",t.coercion.bind(null,s)]),!0}return mr(t,`Expected a boolean (got ${ii(e)})`)}return!0}})}function ZU(){return Wr({test:(e,t)=>{var r;if(typeof e!="number"){if(typeof t?.coercions<"u"){if(typeof t?.coercion>"u")return mr(t,"Unbound coercion result");let s;if(typeof e=="string"){let a;try{a=JSON.parse(e)}catch{}if(typeof a=="number")if(JSON.stringify(a)===e)s=a;else return mr(t,`Received a number that can't be safely represented by the runtime (${e})`)}if(typeof s<"u")return t.coercions.push([(r=t.p)!==null&&r!==void 0?r:".",t.coercion.bind(null,s)]),!0}return mr(t,`Expected a number (got ${ii(e)})`)}return!0}})}function w9e(e){return Wr({test:(t,r)=>{var s;if(typeof r?.coercions>"u")return mr(r,"The isPayload predicate can only be used with coercion enabled");if(typeof r.coercion>"u")return mr(r,"Unbound coercion result");if(typeof t!="string")return mr(r,`Expected a string (got ${ii(t)})`);let a;try{a=JSON.parse(t)}catch{return mr(r,`Expected a JSON string (got ${ii(t)})`)}let n={value:a};return e(a,Object.assign(Object.assign({},r),{coercion:Jf(n,"value")}))?(r.coercions.push([(s=r.p)!==null&&s!==void 0?s:".",r.coercion.bind(null,n.value)]),!0):!1}})}function B9e(){return Wr({test:(e,t)=>{var r;if(!(e instanceof Date)){if(typeof t?.coercions<"u"){if(typeof t?.coercion>"u")return mr(t,"Unbound coercion result");let s;if(typeof e=="string"&&Zte.test(e))s=new Date(e);else{let a;if(typeof e=="string"){let n;try{n=JSON.parse(e)}catch{}typeof n=="number"&&(a=n)}else typeof e=="number"&&(a=e);if(typeof a<"u")if(Number.isSafeInteger(a)||!Number.isSafeInteger(a*1e3))s=new Date(a*1e3);else return mr(t,`Received a timestamp that can't be safely represented by the runtime (${e})`)}if(typeof s<"u")return t.coercions.push([(r=t.p)!==null&&r!==void 0?r:".",t.coercion.bind(null,s)]),!0}return mr(t,`Expected a date (got ${ii(e)})`)}return!0}})}function Rx(e,{delimiter:t}={}){return Wr({test:(r,s)=>{var a;let n=r;if(typeof r=="string"&&typeof t<"u"&&typeof s?.coercions<"u"){if(typeof s?.coercion>"u")return mr(s,"Unbound coercion result");r=r.split(t)}if(!Array.isArray(r))return mr(s,`Expected an array (got ${ii(r)})`);let c=!0;for(let f=0,p=r.length;f{var n,c;if(Object.getPrototypeOf(s).toString()==="[object Set]")if(typeof a?.coercions<"u"){if(typeof a?.coercion>"u")return mr(a,"Unbound coercion result");let f=[...s],p=[...s];if(!r(p,Object.assign(Object.assign({},a),{coercion:void 0})))return!1;let h=()=>p.some((E,C)=>E!==f[C])?new Set(p):s;return a.coercions.push([(n=a.p)!==null&&n!==void 0?n:".",G2(a.coercion,s,h)]),!0}else{let f=!0;for(let p of s)if(f=e(p,Object.assign({},a))&&f,!f&&a?.errors==null)break;return f}if(typeof a?.coercions<"u"){if(typeof a?.coercion>"u")return mr(a,"Unbound coercion result");let f={value:s};return r(s,Object.assign(Object.assign({},a),{coercion:Jf(f,"value")}))?(a.coercions.push([(c=a.p)!==null&&c!==void 0?c:".",G2(a.coercion,s,()=>new Set(f.value))]),!0):!1}return mr(a,`Expected a set (got ${ii(s)})`)}})}function S9e(e,t){let r=Rx(Tx([e,t])),s=Fx(t,{keys:e});return Wr({test:(a,n)=>{var c,f,p;if(Object.getPrototypeOf(a).toString()==="[object Map]")if(typeof n?.coercions<"u"){if(typeof n?.coercion>"u")return mr(n,"Unbound coercion result");let h=[...a],E=[...a];if(!r(E,Object.assign(Object.assign({},n),{coercion:void 0})))return!1;let C=()=>E.some((S,x)=>S[0]!==h[x][0]||S[1]!==h[x][1])?new Map(E):a;return n.coercions.push([(c=n.p)!==null&&c!==void 0?c:".",G2(n.coercion,a,C)]),!0}else{let h=!0;for(let[E,C]of a)if(h=e(E,Object.assign({},n))&&h,!h&&n?.errors==null||(h=t(C,Object.assign(Object.assign({},n),{p:i0(n,E)}))&&h,!h&&n?.errors==null))break;return h}if(typeof n?.coercions<"u"){if(typeof n?.coercion>"u")return mr(n,"Unbound coercion result");let h={value:a};return Array.isArray(a)?r(a,Object.assign(Object.assign({},n),{coercion:void 0}))?(n.coercions.push([(f=n.p)!==null&&f!==void 0?f:".",G2(n.coercion,a,()=>new Map(h.value))]),!0):!1:s(a,Object.assign(Object.assign({},n),{coercion:Jf(h,"value")}))?(n.coercions.push([(p=n.p)!==null&&p!==void 0?p:".",G2(n.coercion,a,()=>new Map(Object.entries(h.value)))]),!0):!1}return mr(n,`Expected a map (got ${ii(a)})`)}})}function Tx(e,{delimiter:t}={}){let r=rre(e.length);return Wr({test:(s,a)=>{var n;if(typeof s=="string"&&typeof t<"u"&&typeof a?.coercions<"u"){if(typeof a?.coercion>"u")return mr(a,"Unbound coercion result");s=s.split(t),a.coercions.push([(n=a.p)!==null&&n!==void 0?n:".",a.coercion.bind(null,s)])}if(!Array.isArray(s))return mr(a,`Expected a tuple (got ${ii(s)})`);let c=r(s,Object.assign({},a));for(let f=0,p=s.length;f{var n;if(Array.isArray(s)&&typeof a?.coercions<"u")return typeof a?.coercion>"u"?mr(a,"Unbound coercion result"):r(s,Object.assign(Object.assign({},a),{coercion:void 0}))?(s=Object.fromEntries(s),a.coercions.push([(n=a.p)!==null&&n!==void 0?n:".",a.coercion.bind(null,s)]),!0):!1;if(typeof s!="object"||s===null)return mr(a,`Expected an object (got ${ii(s)})`);let c=Object.keys(s),f=!0;for(let p=0,h=c.length;p{if(typeof a!="object"||a===null)return mr(n,`Expected an object (got ${ii(a)})`);let c=new Set([...r,...Object.keys(a)]),f={},p=!0;for(let h of c){if(h==="constructor"||h==="__proto__")p=mr(Object.assign(Object.assign({},n),{p:i0(n,h)}),"Unsafe property name");else{let E=Object.prototype.hasOwnProperty.call(e,h)?e[h]:void 0,C=Object.prototype.hasOwnProperty.call(a,h)?a[h]:void 0;typeof E<"u"?p=E(C,Object.assign(Object.assign({},n),{p:i0(n,h),coercion:Jf(a,h)}))&&p:t===null?p=mr(Object.assign(Object.assign({},n),{p:i0(n,h)}),`Extraneous property (got ${ii(C)})`):Object.defineProperty(f,h,{enumerable:!0,get:()=>C,set:E9e(a,h)})}if(!p&&n?.errors==null)break}return t!==null&&(p||n?.errors!=null)&&(p=t(f,n)&&p),p}});return Object.assign(s,{properties:e})}function b9e(e){return ere(e,{extra:Fx(XU())})}function tre(e){return()=>e}function Wr({test:e}){return tre(e)()}function x9e(e,t){if(!t(e))throw new s0}function k9e(e,t){let r=[];if(!t(e,{errors:r}))throw new s0({errors:r})}function Q9e(e,t){}function R9e(e,t,{coerce:r=!1,errors:s,throw:a}={}){let n=s?[]:void 0;if(!r){if(t(e,{errors:n}))return a?e:{value:e,errors:void 0};if(a)throw new s0({errors:n});return{value:void 0,errors:n??!0}}let c={value:e},f=Jf(c,"value"),p=[];if(!t(e,{errors:n,coercion:f,coercions:p})){if(a)throw new s0({errors:n});return{value:void 0,errors:n??!0}}for(let[,h]of p)h();return a?c.value:{value:c.value,errors:void 0}}function T9e(e,t){let r=Tx(e);return(...s)=>{if(!r(s))throw new s0;return t(...s)}}function F9e(e){return Wr({test:(t,r)=>t.length>=e?!0:mr(r,`Expected to have a length of at least ${e} elements (got ${t.length})`)})}function N9e(e){return Wr({test:(t,r)=>t.length<=e?!0:mr(r,`Expected to have a length of at most ${e} elements (got ${t.length})`)})}function rre(e){return Wr({test:(t,r)=>t.length!==e?mr(r,`Expected to have a length of exactly ${e} elements (got ${t.length})`):!0})}function O9e({map:e}={}){return Wr({test:(t,r)=>{let s=new Set,a=new Set;for(let n=0,c=t.length;ne<=0?!0:mr(t,`Expected to be negative (got ${e})`)})}function M9e(){return Wr({test:(e,t)=>e>=0?!0:mr(t,`Expected to be positive (got ${e})`)})}function e_(e){return Wr({test:(t,r)=>t>=e?!0:mr(r,`Expected to be at least ${e} (got ${t})`)})}function U9e(e){return Wr({test:(t,r)=>t<=e?!0:mr(r,`Expected to be at most ${e} (got ${t})`)})}function _9e(e,t){return Wr({test:(r,s)=>r>=e&&r<=t?!0:mr(s,`Expected to be in the [${e}; ${t}] range (got ${r})`)})}function H9e(e,t){return Wr({test:(r,s)=>r>=e&&rt!==Math.round(t)?mr(r,`Expected to be an integer (got ${t})`):!e&&!Number.isSafeInteger(t)?mr(r,`Expected to be a safe integer (got ${t})`):!0})}function q2(e){return Wr({test:(t,r)=>e.test(t)?!0:mr(r,`Expected to match the pattern ${e.toString()} (got ${ii(t)})`)})}function j9e(){return Wr({test:(e,t)=>e!==e.toLowerCase()?mr(t,`Expected to be all-lowercase (got ${e})`):!0})}function G9e(){return Wr({test:(e,t)=>e!==e.toUpperCase()?mr(t,`Expected to be all-uppercase (got ${e})`):!0})}function q9e(){return Wr({test:(e,t)=>y9e.test(e)?!0:mr(t,`Expected to be a valid UUID v4 (got ${ii(e)})`)})}function W9e(){return Wr({test:(e,t)=>Zte.test(e)?!0:mr(t,`Expected to be a valid ISO 8601 date string (got ${ii(e)})`)})}function Y9e({alpha:e=!1}){return Wr({test:(t,r)=>(e?d9e.test(t):g9e.test(t))?!0:mr(r,`Expected to be a valid hexadecimal color string (got ${ii(t)})`)})}function V9e(){return Wr({test:(e,t)=>m9e.test(e)?!0:mr(t,`Expected to be a valid base 64 string (got ${ii(e)})`)})}function J9e(e=XU()){return Wr({test:(t,r)=>{let s;try{s=JSON.parse(t)}catch{return mr(r,`Expected to be a valid JSON string (got ${ii(t)})`)}return e(s,r)}})}function Nx(e,...t){let r=Array.isArray(t[0])?t[0]:t;return Wr({test:(s,a)=>{var n,c;let f={value:s},p=typeof a?.coercions<"u"?Jf(f,"value"):void 0,h=typeof a?.coercions<"u"?[]:void 0;if(!e(s,Object.assign(Object.assign({},a),{coercion:p,coercions:h})))return!1;let E=[];if(typeof h<"u")for(let[,C]of h)E.push(C());try{if(typeof a?.coercions<"u"){if(f.value!==s){if(typeof a?.coercion>"u")return mr(a,"Unbound coercion result");a.coercions.push([(n=a.p)!==null&&n!==void 0?n:".",a.coercion.bind(null,f.value)])}(c=a?.coercions)===null||c===void 0||c.push(...h)}return r.every(C=>C(f.value,a))}finally{for(let C of E)C()}}})}function W2(e,...t){let r=Array.isArray(t[0])?t[0]:t;return Nx(e,r)}function K9e(e){return Wr({test:(t,r)=>typeof t>"u"?!0:e(t,r)})}function z9e(e){return Wr({test:(t,r)=>t===null?!0:e(t,r)})}function X9e(e,t){var r;let s=new Set(e),a=Y2[(r=t?.missingIf)!==null&&r!==void 0?r:"missing"];return Wr({test:(n,c)=>{let f=new Set(Object.keys(n)),p=[];for(let h of s)a(f,h,n)||p.push(h);return p.length>0?mr(c,`Missing required ${zU(p.length,"property","properties")} ${vE(p,"and")}`):!0}})}function r_(e,t){var r;let s=new Set(e),a=Y2[(r=t?.missingIf)!==null&&r!==void 0?r:"missing"];return Wr({test:(n,c)=>Object.keys(n).some(h=>a(s,h,n))?!0:mr(c,`Missing at least one property from ${vE(Array.from(s),"or")}`)})}function Z9e(e,t){var r;let s=new Set(e),a=Y2[(r=t?.missingIf)!==null&&r!==void 0?r:"missing"];return Wr({test:(n,c)=>{let f=new Set(Object.keys(n)),p=[];for(let h of s)a(f,h,n)&&p.push(h);return p.length>0?mr(c,`Forbidden ${zU(p.length,"property","properties")} ${vE(p,"and")}`):!0}})}function $9e(e,t){var r;let s=new Set(e),a=Y2[(r=t?.missingIf)!==null&&r!==void 0?r:"missing"];return Wr({test:(n,c)=>{let f=new Set(Object.keys(n)),p=[];for(let h of s)a(f,h,n)&&p.push(h);return p.length>1?mr(c,`Mutually exclusive properties ${vE(p,"and")}`):!0}})}function V2(e,t,r,s){var a,n;let c=new Set((a=s?.ignore)!==null&&a!==void 0?a:[]),f=Y2[(n=s?.missingIf)!==null&&n!==void 0?n:"missing"],p=new Set(r),h=eqe[t],E=t===Vf.Forbids?"or":"and";return Wr({test:(C,S)=>{let x=new Set(Object.keys(C));if(!f(x,e,C)||c.has(C[e]))return!0;let I=[];for(let T of p)(f(x,T,C)&&!c.has(C[T]))!==h.expect&&I.push(T);return I.length>=1?mr(S,`Property "${e}" ${h.message} ${zU(I.length,"property","properties")} ${vE(I,E)}`):!0}})}var h9e,d9e,g9e,m9e,y9e,Zte,I9e,P9e,$U,s0,Y2,Vf,eqe,Al=Xe(()=>{h9e=/^[a-zA-Z_][a-zA-Z0-9_]*$/;d9e=/^#[0-9a-f]{6}$/i,g9e=/^#[0-9a-f]{6}([0-9a-f]{2})?$/i,m9e=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,y9e=/^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$/i,Zte=/^(?:[1-9]\d{3}(-?)(?:(?:0[1-9]|1[0-2])\1(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])\1(?:29|30)|(?:0[13578]|1[02])(?:\1)31|00[1-9]|0[1-9]\d|[12]\d{2}|3(?:[0-5]\d|6[0-5]))|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)(?:(-?)02(?:\2)29|-?366))T(?:[01]\d|2[0-3])(:?)[0-5]\d(?:\3[0-5]\d)?(?:Z|[+-][01]\d(?:\3[0-5]\d)?)$/;I9e=new Map([["true",!0],["True",!0],["1",!0],[1,!0],["false",!1],["False",!1],["0",!1],[0,!1]]);P9e=e=>Wr({test:(t,r)=>t instanceof e?!0:mr(r,`Expected an instance of ${e.name} (got ${ii(t)})`)}),$U=(e,{exclusive:t=!1}={})=>Wr({test:(r,s)=>{var a,n,c;let f=[],p=typeof s?.errors<"u"?[]:void 0;for(let h=0,E=e.length;h1?mr(s,`Expected to match exactly a single predicate (matched ${f.join(", ")})`):(c=s?.errors)===null||c===void 0||c.push(...p),!1}});s0=class extends Error{constructor({errors:t}={}){let r="Type mismatch";if(t&&t.length>0){r+=` +`;for(let s of t)r+=` +- ${s}`}super(r)}};Y2={missing:(e,t)=>e.has(t),undefined:(e,t,r)=>e.has(t)&&typeof r[t]<"u",nil:(e,t,r)=>e.has(t)&&r[t]!=null,falsy:(e,t,r)=>e.has(t)&&!!r[t]};(function(e){e.Forbids="Forbids",e.Requires="Requires"})(Vf||(Vf={}));eqe={[Vf.Forbids]:{expect:!1,message:"forbids using"},[Vf.Requires]:{expect:!0,message:"requires using"}}});var at,o0=Xe(()=>{Bp();at=class{constructor(){this.help=!1}static Usage(t){return t}async catch(t){throw t}async validateAndExecute(){let r=this.constructor.schema;if(Array.isArray(r)){let{isDict:a,isUnknown:n,applyCascade:c}=await Promise.resolve().then(()=>(Al(),Jo)),f=c(a(n()),r),p=[],h=[];if(!f(this,{errors:p,coercions:h}))throw j2("Invalid option schema",p);for(let[,C]of h)C()}else if(r!=null)throw new Error("Invalid command schema");let s=await this.execute();return typeof s<"u"?s:0}};at.isOption=H2;at.Default=[]});function pl(e){YU&&console.log(e)}function ire(){let e={nodes:[]};for(let t=0;t{if(t.has(s))return;t.add(s);let a=e.nodes[s];for(let c of Object.values(a.statics))for(let{to:f}of c)r(f);for(let[,{to:c}]of a.dynamics)r(c);for(let{to:c}of a.shortcuts)r(c);let n=new Set(a.shortcuts.map(({to:c})=>c));for(;a.shortcuts.length>0;){let{to:c}=a.shortcuts.shift(),f=e.nodes[c];for(let[p,h]of Object.entries(f.statics)){let E=Object.prototype.hasOwnProperty.call(a.statics,p)?a.statics[p]:a.statics[p]=[];for(let C of h)E.some(({to:S})=>C.to===S)||E.push(C)}for(let[p,h]of f.dynamics)a.dynamics.some(([E,{to:C}])=>p===E&&h.to===C)||a.dynamics.push([p,h]);for(let p of f.shortcuts)n.has(p.to)||(a.shortcuts.push(p),n.add(p.to))}};r(In.InitialNode)}function nqe(e,{prefix:t=""}={}){if(YU){pl(`${t}Nodes are:`);for(let r=0;rE!==In.ErrorNode).map(({state:E})=>({usage:E.candidateUsage,reason:null})));if(h.every(({node:E})=>E===In.ErrorNode))throw new BE(t,h.map(({state:E})=>({usage:E.candidateUsage,reason:E.errorMessage})));s=oqe(h)}if(s.length>0){pl(" Results:");for(let n of s)pl(` - ${n.node} -> ${JSON.stringify(n.state)}`)}else pl(" No results");return s}function sqe(e,t,{endToken:r=ni.EndOfInput}={}){let s=iqe(e,[...t,r]);return aqe(t,s.map(({state:a})=>a))}function oqe(e){let t=0;for(let{state:r}of e)r.path.length>t&&(t=r.path.length);return e.filter(({state:r})=>r.path.length===t)}function aqe(e,t){let r=t.filter(S=>S.selectedIndex!==null),s=r.filter(S=>!S.partial);if(s.length>0&&(r=s),r.length===0)throw new Error;let a=r.filter(S=>S.selectedIndex===Tg||S.requiredOptions.every(x=>x.some(I=>S.options.find(T=>T.name===I))));if(a.length===0)throw new BE(e,r.map(S=>({usage:S.candidateUsage,reason:null})));let n=0;for(let S of a)S.path.length>n&&(n=S.path.length);let c=a.filter(S=>S.path.length===n),f=S=>S.positionals.filter(({extra:x})=>!x).length+S.options.length,p=c.map(S=>({state:S,positionalCount:f(S)})),h=0;for(let{positionalCount:S}of p)S>h&&(h=S);let E=p.filter(({positionalCount:S})=>S===h).map(({state:S})=>S),C=lqe(E);if(C.length>1)throw new xx(e,C.map(S=>S.candidateUsage));return C[0]}function lqe(e){let t=[],r=[];for(let s of e)s.selectedIndex===Tg?r.push(s):t.push(s);return r.length>0&&t.push({...nre,path:sre(...r.map(s=>s.path)),options:r.reduce((s,a)=>s.concat(a.options),[])}),t}function sre(e,t,...r){return t===void 0?Array.from(e):sre(e.filter((s,a)=>s===t[a]),...r)}function Yl(){return{dynamics:[],shortcuts:[],statics:{}}}function ore(e){return e===In.SuccessNode||e===In.ErrorNode}function n_(e,t=0){return{to:ore(e.to)?e.to:e.to>=In.CustomNode?e.to+t-In.CustomNode+1:e.to+t,reducer:e.reducer}}function cqe(e,t=0){let r=Yl();for(let[s,a]of e.dynamics)r.dynamics.push([s,n_(a,t)]);for(let s of e.shortcuts)r.shortcuts.push(n_(s,t));for(let[s,a]of Object.entries(e.statics))r.statics[s]=a.map(n=>n_(n,t));return r}function qs(e,t,r,s,a){e.nodes[t].dynamics.push([r,{to:s,reducer:a}])}function DE(e,t,r,s){e.nodes[t].shortcuts.push({to:r,reducer:s})}function va(e,t,r,s,a){(Object.prototype.hasOwnProperty.call(e.nodes[t].statics,r)?e.nodes[t].statics[r]:e.nodes[t].statics[r]=[]).push({to:s,reducer:a})}function Ox(e,t,r,s,a){if(Array.isArray(t)){let[n,...c]=t;return e[n](r,s,a,...c)}else return e[t](r,s,a)}var nre,uqe,i_,Vl,s_,Lx,Mx=Xe(()=>{Px();kx();nre={candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,path:[],positionals:[],options:[],remainder:null,selectedIndex:Tg,partial:!1,tokens:[]};uqe={always:()=>!0,isOptionLike:(e,t)=>!e.ignoreOptions&&t!=="-"&&t.startsWith("-"),isNotOptionLike:(e,t)=>e.ignoreOptions||t==="-"||!t.startsWith("-"),isOption:(e,t,r,s)=>!e.ignoreOptions&&t===s,isBatchOption:(e,t,r,s)=>!e.ignoreOptions&&Kte.test(t)&&[...t.slice(1)].every(a=>s.has(`-${a}`)),isBoundOption:(e,t,r,s,a)=>{let n=t.match(WU);return!e.ignoreOptions&&!!n&&bx.test(n[1])&&s.has(n[1])&&a.filter(c=>c.nameSet.includes(n[1])).every(c=>c.allowBinding)},isNegatedOption:(e,t,r,s)=>!e.ignoreOptions&&t===`--no-${s.slice(2)}`,isHelp:(e,t)=>!e.ignoreOptions&&qU.test(t),isUnsupportedOption:(e,t,r,s)=>!e.ignoreOptions&&t.startsWith("-")&&bx.test(t)&&!s.has(t),isInvalidOption:(e,t)=>!e.ignoreOptions&&t.startsWith("-")&&!bx.test(t)},i_={setCandidateState:(e,t,r,s)=>({...e,...s}),setSelectedIndex:(e,t,r,s)=>({...e,selectedIndex:s}),setPartialIndex:(e,t,r,s)=>({...e,selectedIndex:s,partial:!0}),pushBatch:(e,t,r,s)=>{let a=e.options.slice(),n=e.tokens.slice();for(let c=1;c{let[,s,a]=t.match(WU),n=e.options.concat({name:s,value:a}),c=e.tokens.concat([{segmentIndex:r,type:"option",slice:[0,s.length],option:s},{segmentIndex:r,type:"assign",slice:[s.length,s.length+1]},{segmentIndex:r,type:"value",slice:[s.length+1,s.length+a.length+1]}]);return{...e,options:n,tokens:c}},pushPath:(e,t,r)=>{let s=e.path.concat(t),a=e.tokens.concat({segmentIndex:r,type:"path"});return{...e,path:s,tokens:a}},pushPositional:(e,t,r)=>{let s=e.positionals.concat({value:t,extra:!1}),a=e.tokens.concat({segmentIndex:r,type:"positional"});return{...e,positionals:s,tokens:a}},pushExtra:(e,t,r)=>{let s=e.positionals.concat({value:t,extra:!0}),a=e.tokens.concat({segmentIndex:r,type:"positional"});return{...e,positionals:s,tokens:a}},pushExtraNoLimits:(e,t,r)=>{let s=e.positionals.concat({value:t,extra:Vl}),a=e.tokens.concat({segmentIndex:r,type:"positional"});return{...e,positionals:s,tokens:a}},pushTrue:(e,t,r,s)=>{let a=e.options.concat({name:s,value:!0}),n=e.tokens.concat({segmentIndex:r,type:"option",option:s});return{...e,options:a,tokens:n}},pushFalse:(e,t,r,s)=>{let a=e.options.concat({name:s,value:!1}),n=e.tokens.concat({segmentIndex:r,type:"option",option:s});return{...e,options:a,tokens:n}},pushUndefined:(e,t,r,s)=>{let a=e.options.concat({name:t,value:void 0}),n=e.tokens.concat({segmentIndex:r,type:"option",option:t});return{...e,options:a,tokens:n}},pushStringValue:(e,t,r)=>{var s;let a=e.options[e.options.length-1],n=e.options.slice(),c=e.tokens.concat({segmentIndex:r,type:"value"});return a.value=((s=a.value)!==null&&s!==void 0?s:[]).concat([t]),{...e,options:n,tokens:c}},setStringValue:(e,t,r)=>{let s=e.options[e.options.length-1],a=e.options.slice(),n=e.tokens.concat({segmentIndex:r,type:"value"});return s.value=t,{...e,options:a,tokens:n}},inhibateOptions:e=>({...e,ignoreOptions:!0}),useHelp:(e,t,r,s)=>{let[,,a]=t.match(qU);return typeof a<"u"?{...e,options:[{name:"-c",value:String(s)},{name:"-i",value:a}]}:{...e,options:[{name:"-c",value:String(s)}]}},setError:(e,t,r,s)=>t===ni.EndOfInput||t===ni.EndOfPartialInput?{...e,errorMessage:`${s}.`}:{...e,errorMessage:`${s} ("${t}").`},setOptionArityError:(e,t)=>{let r=e.options[e.options.length-1];return{...e,errorMessage:`Not enough arguments to option ${r.name}.`}}},Vl=Symbol(),s_=class{constructor(t,r){this.allOptionNames=new Map,this.arity={leading:[],trailing:[],extra:[],proxy:!1},this.options=[],this.paths=[],this.cliIndex=t,this.cliOpts=r}addPath(t){this.paths.push(t)}setArity({leading:t=this.arity.leading,trailing:r=this.arity.trailing,extra:s=this.arity.extra,proxy:a=this.arity.proxy}){Object.assign(this.arity,{leading:t,trailing:r,extra:s,proxy:a})}addPositional({name:t="arg",required:r=!0}={}){if(!r&&this.arity.extra===Vl)throw new Error("Optional parameters cannot be declared when using .rest() or .proxy()");if(!r&&this.arity.trailing.length>0)throw new Error("Optional parameters cannot be declared after the required trailing positional arguments");!r&&this.arity.extra!==Vl?this.arity.extra.push(t):this.arity.extra!==Vl&&this.arity.extra.length===0?this.arity.leading.push(t):this.arity.trailing.push(t)}addRest({name:t="arg",required:r=0}={}){if(this.arity.extra===Vl)throw new Error("Infinite lists cannot be declared multiple times in the same command");if(this.arity.trailing.length>0)throw new Error("Infinite lists cannot be declared after the required trailing positional arguments");for(let s=0;s1)throw new Error("The arity cannot be higher than 1 when the option only supports the --arg=value syntax");if(!Number.isInteger(s))throw new Error(`The arity must be an integer, got ${s}`);if(s<0)throw new Error(`The arity must be positive, got ${s}`);let f=t.reduce((p,h)=>h.length>p.length?h:p,"");for(let p of t)this.allOptionNames.set(p,f);this.options.push({preferredName:f,nameSet:t,description:r,arity:s,hidden:a,required:n,allowBinding:c})}setContext(t){this.context=t}usage({detailed:t=!0,inlineOptions:r=!0}={}){let s=[this.cliOpts.binaryName],a=[];if(this.paths.length>0&&s.push(...this.paths[0]),t){for(let{preferredName:c,nameSet:f,arity:p,hidden:h,description:E,required:C}of this.options){if(h)continue;let S=[];for(let I=0;I`:`[${x}]`)}s.push(...this.arity.leading.map(c=>`<${c}>`)),this.arity.extra===Vl?s.push("..."):s.push(...this.arity.extra.map(c=>`[${c}]`)),s.push(...this.arity.trailing.map(c=>`<${c}>`))}return{usage:s.join(" "),options:a}}compile(){if(typeof this.context>"u")throw new Error("Assertion failed: No context attached");let t=ire(),r=In.InitialNode,s=this.usage().usage,a=this.options.filter(f=>f.required).map(f=>f.nameSet);r=Fu(t,Yl()),va(t,In.InitialNode,ni.StartOfInput,r,["setCandidateState",{candidateUsage:s,requiredOptions:a}]);let n=this.arity.proxy?"always":"isNotOptionLike",c=this.paths.length>0?this.paths:[[]];for(let f of c){let p=r;if(f.length>0){let S=Fu(t,Yl());DE(t,p,S),this.registerOptions(t,S),p=S}for(let S=0;S0||!this.arity.proxy){let S=Fu(t,Yl());qs(t,p,"isHelp",S,["useHelp",this.cliIndex]),qs(t,S,"always",S,"pushExtra"),va(t,S,ni.EndOfInput,In.SuccessNode,["setSelectedIndex",Tg]),this.registerOptions(t,p)}this.arity.leading.length>0&&(va(t,p,ni.EndOfInput,In.ErrorNode,["setError","Not enough positional arguments"]),va(t,p,ni.EndOfPartialInput,In.SuccessNode,["setPartialIndex",this.cliIndex]));let h=p;for(let S=0;S0||S+1!==this.arity.leading.length)&&(va(t,x,ni.EndOfInput,In.ErrorNode,["setError","Not enough positional arguments"]),va(t,x,ni.EndOfPartialInput,In.SuccessNode,["setPartialIndex",this.cliIndex])),qs(t,h,"isNotOptionLike",x,"pushPositional"),h=x}let E=h;if(this.arity.extra===Vl||this.arity.extra.length>0){let S=Fu(t,Yl());if(DE(t,h,S),this.arity.extra===Vl){let x=Fu(t,Yl());this.arity.proxy||this.registerOptions(t,x),qs(t,h,n,x,"pushExtraNoLimits"),qs(t,x,n,x,"pushExtraNoLimits"),DE(t,x,S)}else for(let x=0;x0)&&this.registerOptions(t,I),qs(t,E,n,I,"pushExtra"),DE(t,I,S),E=I}E=S}this.arity.trailing.length>0&&(va(t,E,ni.EndOfInput,In.ErrorNode,["setError","Not enough positional arguments"]),va(t,E,ni.EndOfPartialInput,In.SuccessNode,["setPartialIndex",this.cliIndex]));let C=E;for(let S=0;S=0&&t{let c=n?ni.EndOfPartialInput:ni.EndOfInput;return sqe(s,a,{endToken:c})}}}}});function lre(){return Ux.default&&"getColorDepth"in Ux.default.WriteStream.prototype?Ux.default.WriteStream.prototype.getColorDepth():process.env.FORCE_COLOR==="0"?1:process.env.FORCE_COLOR==="1"||typeof process.stdout<"u"&&process.stdout.isTTY?8:1}function cre(e){let t=are;if(typeof t>"u"){if(e.stdout===process.stdout&&e.stderr===process.stderr)return null;let{AsyncLocalStorage:r}=Ie("async_hooks");t=are=new r;let s=process.stdout._write;process.stdout._write=function(n,c,f){let p=t.getStore();return typeof p>"u"?s.call(this,n,c,f):p.stdout.write(n,c,f)};let a=process.stderr._write;process.stderr._write=function(n,c,f){let p=t.getStore();return typeof p>"u"?a.call(this,n,c,f):p.stderr.write(n,c,f)}}return r=>t.run(e,r)}var Ux,are,ure=Xe(()=>{Ux=et(Ie("tty"),1)});var _x,fre=Xe(()=>{o0();_x=class e extends at{constructor(t){super(),this.contexts=t,this.commands=[]}static from(t,r){let s=new e(r);s.path=t.path;for(let a of t.options)switch(a.name){case"-c":s.commands.push(Number(a.value));break;case"-i":s.index=Number(a.value);break}return s}async execute(){let t=this.commands;if(typeof this.index<"u"&&this.index>=0&&this.index1){this.context.stdout.write(`Multiple commands match your selection: +`),this.context.stdout.write(` +`);let r=0;for(let s of this.commands)this.context.stdout.write(this.cli.usage(this.contexts[s].commandClass,{prefix:`${r++}. `.padStart(5)}));this.context.stdout.write(` +`),this.context.stdout.write(`Run again with -h= to see the longer details of any of those commands. +`)}}}});async function hre(...e){let{resolvedOptions:t,resolvedCommandClasses:r,resolvedArgv:s,resolvedContext:a}=gre(e);return Sa.from(r,t).runExit(s,a)}async function dre(...e){let{resolvedOptions:t,resolvedCommandClasses:r,resolvedArgv:s,resolvedContext:a}=gre(e);return Sa.from(r,t).run(s,a)}function gre(e){let t,r,s,a;switch(typeof process<"u"&&typeof process.argv<"u"&&(s=process.argv.slice(2)),e.length){case 1:r=e[0];break;case 2:e[0]&&e[0].prototype instanceof at||Array.isArray(e[0])?(r=e[0],Array.isArray(e[1])?s=e[1]:a=e[1]):(t=e[0],r=e[1]);break;case 3:Array.isArray(e[2])?(t=e[0],r=e[1],s=e[2]):e[0]&&e[0].prototype instanceof at||Array.isArray(e[0])?(r=e[0],s=e[1],a=e[2]):(t=e[0],r=e[1],a=e[2]);break;default:t=e[0],r=e[1],s=e[2],a=e[3];break}if(typeof s>"u")throw new Error("The argv parameter must be provided when running Clipanion outside of a Node context");return{resolvedOptions:t,resolvedCommandClasses:r,resolvedArgv:s,resolvedContext:a}}function pre(e){return e()}var Are,Sa,mre=Xe(()=>{Px();Mx();KU();ure();o0();fre();Are=Symbol("clipanion/errorCommand");Sa=class e{constructor({binaryLabel:t,binaryName:r="...",binaryVersion:s,enableCapture:a=!1,enableColors:n}={}){this.registrations=new Map,this.builder=new Lx({binaryName:r}),this.binaryLabel=t,this.binaryName=r,this.binaryVersion=s,this.enableCapture=a,this.enableColors=n}static from(t,r={}){let s=new e(r),a=Array.isArray(t)?t:[t];for(let n of a)s.register(n);return s}register(t){var r;let s=new Map,a=new t;for(let p in a){let h=a[p];typeof h=="object"&&h!==null&&h[at.isOption]&&s.set(p,h)}let n=this.builder.command(),c=n.cliIndex,f=(r=t.paths)!==null&&r!==void 0?r:a.paths;if(typeof f<"u")for(let p of f)n.addPath(p);this.registrations.set(t,{specs:s,builder:n,index:c});for(let[p,{definition:h}]of s.entries())h(n,p);n.setContext({commandClass:t})}process(t,r){let{input:s,context:a,partial:n}=typeof t=="object"&&Array.isArray(t)?{input:t,context:r}:t,{contexts:c,process:f}=this.builder.compile(),p=f(s,{partial:n}),h={...e.defaultContext,...a};switch(p.selectedIndex){case Tg:{let E=_x.from(p,c);return E.context=h,E.tokens=p.tokens,E}default:{let{commandClass:E}=c[p.selectedIndex],C=this.registrations.get(E);if(typeof C>"u")throw new Error("Assertion failed: Expected the command class to have been registered.");let S=new E;S.context=h,S.tokens=p.tokens,S.path=p.path;try{for(let[x,{transformer:I}]of C.specs.entries())S[x]=I(C.builder,x,p,h);return S}catch(x){throw x[Are]=S,x}}break}}async run(t,r){var s,a;let n,c={...e.defaultContext,...r},f=(s=this.enableColors)!==null&&s!==void 0?s:c.colorDepth>1;if(!Array.isArray(t))n=t;else try{n=this.process(t,c)}catch(E){return c.stdout.write(this.error(E,{colored:f})),1}if(n.help)return c.stdout.write(this.usage(n,{colored:f,detailed:!0})),0;n.context=c,n.cli={binaryLabel:this.binaryLabel,binaryName:this.binaryName,binaryVersion:this.binaryVersion,enableCapture:this.enableCapture,enableColors:this.enableColors,definitions:()=>this.definitions(),definition:E=>this.definition(E),error:(E,C)=>this.error(E,C),format:E=>this.format(E),process:(E,C)=>this.process(E,{...c,...C}),run:(E,C)=>this.run(E,{...c,...C}),usage:(E,C)=>this.usage(E,C)};let p=this.enableCapture&&(a=cre(c))!==null&&a!==void 0?a:pre,h;try{h=await p(()=>n.validateAndExecute().catch(E=>n.catch(E).then(()=>0)))}catch(E){return c.stdout.write(this.error(E,{colored:f,command:n})),1}return h}async runExit(t,r){process.exitCode=await this.run(t,r)}definition(t,{colored:r=!1}={}){if(!t.usage)return null;let{usage:s}=this.getUsageByRegistration(t,{detailed:!1}),{usage:a,options:n}=this.getUsageByRegistration(t,{detailed:!0,inlineOptions:!1}),c=typeof t.usage.category<"u"?Vo(t.usage.category,{format:this.format(r),paragraphs:!1}):void 0,f=typeof t.usage.description<"u"?Vo(t.usage.description,{format:this.format(r),paragraphs:!1}):void 0,p=typeof t.usage.details<"u"?Vo(t.usage.details,{format:this.format(r),paragraphs:!0}):void 0,h=typeof t.usage.examples<"u"?t.usage.examples.map(([E,C])=>[Vo(E,{format:this.format(r),paragraphs:!1}),C.replace(/\$0/g,this.binaryName)]):void 0;return{path:s,usage:a,category:c,description:f,details:p,examples:h,options:n}}definitions({colored:t=!1}={}){let r=[];for(let s of this.registrations.keys()){let a=this.definition(s,{colored:t});a&&r.push(a)}return r}usage(t=null,{colored:r,detailed:s=!1,prefix:a="$ "}={}){var n;if(t===null){for(let p of this.registrations.keys()){let h=p.paths,E=typeof p.usage<"u";if(!h||h.length===0||h.length===1&&h[0].length===0||((n=h?.some(x=>x.length===0))!==null&&n!==void 0?n:!1))if(t){t=null;break}else t=p;else if(E){t=null;continue}}t&&(s=!0)}let c=t!==null&&t instanceof at?t.constructor:t,f="";if(c)if(s){let{description:p="",details:h="",examples:E=[]}=c.usage||{};p!==""&&(f+=Vo(p,{format:this.format(r),paragraphs:!1}).replace(/^./,x=>x.toUpperCase()),f+=` +`),(h!==""||E.length>0)&&(f+=`${this.format(r).header("Usage")} +`,f+=` +`);let{usage:C,options:S}=this.getUsageByRegistration(c,{inlineOptions:!1});if(f+=`${this.format(r).bold(a)}${C} +`,S.length>0){f+=` +`,f+=`${this.format(r).header("Options")} +`;let x=S.reduce((I,T)=>Math.max(I,T.definition.length),0);f+=` +`;for(let{definition:I,description:T}of S)f+=` ${this.format(r).bold(I.padEnd(x))} ${Vo(T,{format:this.format(r),paragraphs:!1})}`}if(h!==""&&(f+=` +`,f+=`${this.format(r).header("Details")} +`,f+=` +`,f+=Vo(h,{format:this.format(r),paragraphs:!0})),E.length>0){f+=` +`,f+=`${this.format(r).header("Examples")} +`;for(let[x,I]of E)f+=` +`,f+=Vo(x,{format:this.format(r),paragraphs:!1}),f+=`${I.replace(/^/m,` ${this.format(r).bold(a)}`).replace(/\$0/g,this.binaryName)} +`}}else{let{usage:p}=this.getUsageByRegistration(c);f+=`${this.format(r).bold(a)}${p} +`}else{let p=new Map;for(let[S,{index:x}]of this.registrations.entries()){if(typeof S.usage>"u")continue;let I=typeof S.usage.category<"u"?Vo(S.usage.category,{format:this.format(r),paragraphs:!1}):null,T=p.get(I);typeof T>"u"&&p.set(I,T=[]);let{usage:O}=this.getUsageByIndex(x);T.push({commandClass:S,usage:O})}let h=Array.from(p.keys()).sort((S,x)=>S===null?-1:x===null?1:S.localeCompare(x,"en",{usage:"sort",caseFirst:"upper"})),E=typeof this.binaryLabel<"u",C=typeof this.binaryVersion<"u";E||C?(E&&C?f+=`${this.format(r).header(`${this.binaryLabel} - ${this.binaryVersion}`)} + +`:E?f+=`${this.format(r).header(`${this.binaryLabel}`)} +`:f+=`${this.format(r).header(`${this.binaryVersion}`)} +`,f+=` ${this.format(r).bold(a)}${this.binaryName} +`):f+=`${this.format(r).bold(a)}${this.binaryName} +`;for(let S of h){let x=p.get(S).slice().sort((T,O)=>T.usage.localeCompare(O.usage,"en",{usage:"sort",caseFirst:"upper"})),I=S!==null?S.trim():"General commands";f+=` +`,f+=`${this.format(r).header(`${I}`)} +`;for(let{commandClass:T,usage:O}of x){let U=T.usage.description||"undocumented";f+=` +`,f+=` ${this.format(r).bold(O)} +`,f+=` ${Vo(U,{format:this.format(r),paragraphs:!1})}`}}f+=` +`,f+=Vo("You can also print more details about any of these commands by calling them with the `-h,--help` flag right after the command name.",{format:this.format(r),paragraphs:!0})}return f}error(t,r){var s,{colored:a,command:n=(s=t[Are])!==null&&s!==void 0?s:null}=r===void 0?{}:r;(!t||typeof t!="object"||!("stack"in t))&&(t=new Error(`Execution failed with a non-error rejection (rejected value: ${JSON.stringify(t)})`));let c="",f=t.name.replace(/([a-z])([A-Z])/g,"$1 $2");f==="Error"&&(f="Internal Error"),c+=`${this.format(a).error(f)}: ${t.message} +`;let p=t.clipanion;return typeof p<"u"?p.type==="usage"&&(c+=` +`,c+=this.usage(n)):t.stack&&(c+=`${t.stack.replace(/^.*\n/,"")} +`),c}format(t){var r;return((r=t??this.enableColors)!==null&&r!==void 0?r:e.defaultContext.colorDepth>1)?zte:Xte}getUsageByRegistration(t,r){let s=this.registrations.get(t);if(typeof s>"u")throw new Error("Assertion failed: Unregistered command");return this.getUsageByIndex(s.index,r)}getUsageByIndex(t,r){return this.builder.getBuilderByIndex(t).usage(r)}};Sa.defaultContext={env:process.env,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr,colorDepth:lre()}});var J2,yre=Xe(()=>{o0();J2=class extends at{async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.definitions(),null,2)} +`)}};J2.paths=[["--clipanion=definitions"]]});var K2,Ere=Xe(()=>{o0();K2=class extends at{async execute(){this.context.stdout.write(this.cli.usage())}};K2.paths=[["-h"],["--help"]]});function Hx(e={}){return Ba({definition(t,r){var s;t.addProxy({name:(s=e.name)!==null&&s!==void 0?s:r,required:e.required})},transformer(t,r,s){return s.positionals.map(({value:a})=>a)}})}var o_=Xe(()=>{Bp()});var z2,Ire=Xe(()=>{o0();o_();z2=class extends at{constructor(){super(...arguments),this.args=Hx()}async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.process(this.args).tokens,null,2)} +`)}};z2.paths=[["--clipanion=tokens"]]});var X2,Cre=Xe(()=>{o0();X2=class extends at{async execute(){var t;this.context.stdout.write(`${(t=this.cli.binaryVersion)!==null&&t!==void 0?t:""} +`)}};X2.paths=[["-v"],["--version"]]});var a_={};Vt(a_,{DefinitionsCommand:()=>J2,HelpCommand:()=>K2,TokensCommand:()=>z2,VersionCommand:()=>X2});var wre=Xe(()=>{yre();Ere();Ire();Cre()});function Bre(e,t,r){let[s,a]=Yf(t,r??{}),{arity:n=1}=a,c=e.split(","),f=new Set(c);return Ba({definition(p){p.addOption({names:c,arity:n,hidden:a?.hidden,description:a?.description,required:a.required})},transformer(p,h,E){let C,S=typeof s<"u"?[...s]:void 0;for(let{name:x,value:I}of E.options)f.has(x)&&(C=x,S=S??[],S.push(I));return typeof S<"u"?Fg(C??h,S,a.validator):S}})}var vre=Xe(()=>{Bp()});function Sre(e,t,r){let[s,a]=Yf(t,r??{}),n=e.split(","),c=new Set(n);return Ba({definition(f){f.addOption({names:n,allowBinding:!1,arity:0,hidden:a.hidden,description:a.description,required:a.required})},transformer(f,p,h){let E=s;for(let{name:C,value:S}of h.options)c.has(C)&&(E=S);return E}})}var Dre=Xe(()=>{Bp()});function bre(e,t,r){let[s,a]=Yf(t,r??{}),n=e.split(","),c=new Set(n);return Ba({definition(f){f.addOption({names:n,allowBinding:!1,arity:0,hidden:a.hidden,description:a.description,required:a.required})},transformer(f,p,h){let E=s;for(let{name:C,value:S}of h.options)c.has(C)&&(E??(E=0),S?E+=1:E=0);return E}})}var Pre=Xe(()=>{Bp()});function xre(e={}){return Ba({definition(t,r){var s;t.addRest({name:(s=e.name)!==null&&s!==void 0?s:r,required:e.required})},transformer(t,r,s){let a=c=>{let f=s.positionals[c];return f.extra===Vl||f.extra===!1&&cc)}})}var kre=Xe(()=>{Mx();Bp()});function fqe(e,t,r){let[s,a]=Yf(t,r??{}),{arity:n=1}=a,c=e.split(","),f=new Set(c);return Ba({definition(p){p.addOption({names:c,arity:a.tolerateBoolean?0:n,hidden:a.hidden,description:a.description,required:a.required})},transformer(p,h,E,C){let S,x=s;typeof a.env<"u"&&C.env[a.env]&&(S=a.env,x=C.env[a.env]);for(let{name:I,value:T}of E.options)f.has(I)&&(S=I,x=T);return typeof x=="string"?Fg(S??h,x,a.validator):x}})}function Aqe(e={}){let{required:t=!0}=e;return Ba({definition(r,s){var a;r.addPositional({name:(a=e.name)!==null&&a!==void 0?a:s,required:e.required})},transformer(r,s,a){var n;for(let c=0;c{Mx();Bp()});var he={};Vt(he,{Array:()=>Bre,Boolean:()=>Sre,Counter:()=>bre,Proxy:()=>Hx,Rest:()=>xre,String:()=>Qre,applyValidator:()=>Fg,cleanValidationError:()=>Qx,formatError:()=>j2,isOptionSymbol:()=>H2,makeCommandOption:()=>Ba,rerouteArguments:()=>Yf});var Tre=Xe(()=>{Bp();o_();vre();Dre();Pre();kre();Rre()});var Z2={};Vt(Z2,{Builtins:()=>a_,Cli:()=>Sa,Command:()=>at,Option:()=>he,UsageError:()=>it,formatMarkdownish:()=>Vo,run:()=>dre,runExit:()=>hre});var Yt=Xe(()=>{kx();KU();o0();mre();wre();Tre()});var Fre=G((ckt,pqe)=>{pqe.exports={name:"dotenv",version:"16.3.1",description:"Loads environment variables from .env file",main:"lib/main.js",types:"lib/main.d.ts",exports:{".":{types:"./lib/main.d.ts",require:"./lib/main.js",default:"./lib/main.js"},"./config":"./config.js","./config.js":"./config.js","./lib/env-options":"./lib/env-options.js","./lib/env-options.js":"./lib/env-options.js","./lib/cli-options":"./lib/cli-options.js","./lib/cli-options.js":"./lib/cli-options.js","./package.json":"./package.json"},scripts:{"dts-check":"tsc --project tests/types/tsconfig.json",lint:"standard","lint-readme":"standard-markdown",pretest:"npm run lint && npm run dts-check",test:"tap tests/*.js --100 -Rspec",prerelease:"npm test",release:"standard-version"},repository:{type:"git",url:"git://github.com/motdotla/dotenv.git"},funding:"https://github.com/motdotla/dotenv?sponsor=1",keywords:["dotenv","env",".env","environment","variables","config","settings"],readmeFilename:"README.md",license:"BSD-2-Clause",devDependencies:{"@definitelytyped/dtslint":"^0.0.133","@types/node":"^18.11.3",decache:"^4.6.1",sinon:"^14.0.1",standard:"^17.0.0","standard-markdown":"^7.1.0","standard-version":"^9.5.0",tap:"^16.3.0",tar:"^6.1.11",typescript:"^4.8.4"},engines:{node:">=12"},browser:{fs:!1}}});var Mre=G((ukt,vp)=>{var Nre=Ie("fs"),c_=Ie("path"),hqe=Ie("os"),dqe=Ie("crypto"),gqe=Fre(),u_=gqe.version,mqe=/(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/mg;function yqe(e){let t={},r=e.toString();r=r.replace(/\r\n?/mg,` +`);let s;for(;(s=mqe.exec(r))!=null;){let a=s[1],n=s[2]||"";n=n.trim();let c=n[0];n=n.replace(/^(['"`])([\s\S]*)\1$/mg,"$2"),c==='"'&&(n=n.replace(/\\n/g,` +`),n=n.replace(/\\r/g,"\r")),t[a]=n}return t}function Eqe(e){let t=Lre(e),r=Ws.configDotenv({path:t});if(!r.parsed)throw new Error(`MISSING_DATA: Cannot parse ${t} for an unknown reason`);let s=Ore(e).split(","),a=s.length,n;for(let c=0;c=a)throw f}return Ws.parse(n)}function Iqe(e){console.log(`[dotenv@${u_}][INFO] ${e}`)}function Cqe(e){console.log(`[dotenv@${u_}][WARN] ${e}`)}function l_(e){console.log(`[dotenv@${u_}][DEBUG] ${e}`)}function Ore(e){return e&&e.DOTENV_KEY&&e.DOTENV_KEY.length>0?e.DOTENV_KEY:process.env.DOTENV_KEY&&process.env.DOTENV_KEY.length>0?process.env.DOTENV_KEY:""}function wqe(e,t){let r;try{r=new URL(t)}catch(f){throw f.code==="ERR_INVALID_URL"?new Error("INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenv.org/vault/.env.vault?environment=development"):f}let s=r.password;if(!s)throw new Error("INVALID_DOTENV_KEY: Missing key part");let a=r.searchParams.get("environment");if(!a)throw new Error("INVALID_DOTENV_KEY: Missing environment part");let n=`DOTENV_VAULT_${a.toUpperCase()}`,c=e.parsed[n];if(!c)throw new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${n} in your .env.vault file.`);return{ciphertext:c,key:s}}function Lre(e){let t=c_.resolve(process.cwd(),".env");return e&&e.path&&e.path.length>0&&(t=e.path),t.endsWith(".vault")?t:`${t}.vault`}function Bqe(e){return e[0]==="~"?c_.join(hqe.homedir(),e.slice(1)):e}function vqe(e){Iqe("Loading env from encrypted .env.vault");let t=Ws._parseVault(e),r=process.env;return e&&e.processEnv!=null&&(r=e.processEnv),Ws.populate(r,t,e),{parsed:t}}function Sqe(e){let t=c_.resolve(process.cwd(),".env"),r="utf8",s=!!(e&&e.debug);e&&(e.path!=null&&(t=Bqe(e.path)),e.encoding!=null&&(r=e.encoding));try{let a=Ws.parse(Nre.readFileSync(t,{encoding:r})),n=process.env;return e&&e.processEnv!=null&&(n=e.processEnv),Ws.populate(n,a,e),{parsed:a}}catch(a){return s&&l_(`Failed to load ${t} ${a.message}`),{error:a}}}function Dqe(e){let t=Lre(e);return Ore(e).length===0?Ws.configDotenv(e):Nre.existsSync(t)?Ws._configVault(e):(Cqe(`You set DOTENV_KEY but you are missing a .env.vault file at ${t}. Did you forget to build it?`),Ws.configDotenv(e))}function bqe(e,t){let r=Buffer.from(t.slice(-64),"hex"),s=Buffer.from(e,"base64"),a=s.slice(0,12),n=s.slice(-16);s=s.slice(12,-16);try{let c=dqe.createDecipheriv("aes-256-gcm",r,a);return c.setAuthTag(n),`${c.update(s)}${c.final()}`}catch(c){let f=c instanceof RangeError,p=c.message==="Invalid key length",h=c.message==="Unsupported state or unable to authenticate data";if(f||p){let E="INVALID_DOTENV_KEY: It must be 64 characters long (or more)";throw new Error(E)}else if(h){let E="DECRYPTION_FAILED: Please check your DOTENV_KEY";throw new Error(E)}else throw console.error("Error: ",c.code),console.error("Error: ",c.message),c}}function Pqe(e,t,r={}){let s=!!(r&&r.debug),a=!!(r&&r.override);if(typeof t!="object")throw new Error("OBJECT_REQUIRED: Please check the processEnv argument being passed to populate");for(let n of Object.keys(t))Object.prototype.hasOwnProperty.call(e,n)?(a===!0&&(e[n]=t[n]),s&&l_(a===!0?`"${n}" is already defined and WAS overwritten`:`"${n}" is already defined and was NOT overwritten`)):e[n]=t[n]}var Ws={configDotenv:Sqe,_configVault:vqe,_parseVault:Eqe,config:Dqe,decrypt:bqe,parse:yqe,populate:Pqe};vp.exports.configDotenv=Ws.configDotenv;vp.exports._configVault=Ws._configVault;vp.exports._parseVault=Ws._parseVault;vp.exports.config=Ws.config;vp.exports.decrypt=Ws.decrypt;vp.exports.parse=Ws.parse;vp.exports.populate=Ws.populate;vp.exports=Ws});var _re=G((fkt,Ure)=>{"use strict";Ure.exports=(e,...t)=>new Promise(r=>{r(e(...t))})});var Ng=G((Akt,f_)=>{"use strict";var xqe=_re(),Hre=e=>{if(e<1)throw new TypeError("Expected `concurrency` to be a number from 1 and up");let t=[],r=0,s=()=>{r--,t.length>0&&t.shift()()},a=(f,p,...h)=>{r++;let E=xqe(f,...h);p(E),E.then(s,s)},n=(f,p,...h)=>{rnew Promise(h=>n(f,h,...p));return Object.defineProperties(c,{activeCount:{get:()=>r},pendingCount:{get:()=>t.length}}),c};f_.exports=Hre;f_.exports.default=Hre});function Kf(e){return`YN${e.toString(10).padStart(4,"0")}`}function jx(e){let t=Number(e.slice(2));if(typeof Ir[t]>"u")throw new Error(`Unknown message name: "${e}"`);return t}var Ir,Gx=Xe(()=>{Ir=(Ue=>(Ue[Ue.UNNAMED=0]="UNNAMED",Ue[Ue.EXCEPTION=1]="EXCEPTION",Ue[Ue.MISSING_PEER_DEPENDENCY=2]="MISSING_PEER_DEPENDENCY",Ue[Ue.CYCLIC_DEPENDENCIES=3]="CYCLIC_DEPENDENCIES",Ue[Ue.DISABLED_BUILD_SCRIPTS=4]="DISABLED_BUILD_SCRIPTS",Ue[Ue.BUILD_DISABLED=5]="BUILD_DISABLED",Ue[Ue.SOFT_LINK_BUILD=6]="SOFT_LINK_BUILD",Ue[Ue.MUST_BUILD=7]="MUST_BUILD",Ue[Ue.MUST_REBUILD=8]="MUST_REBUILD",Ue[Ue.BUILD_FAILED=9]="BUILD_FAILED",Ue[Ue.RESOLVER_NOT_FOUND=10]="RESOLVER_NOT_FOUND",Ue[Ue.FETCHER_NOT_FOUND=11]="FETCHER_NOT_FOUND",Ue[Ue.LINKER_NOT_FOUND=12]="LINKER_NOT_FOUND",Ue[Ue.FETCH_NOT_CACHED=13]="FETCH_NOT_CACHED",Ue[Ue.YARN_IMPORT_FAILED=14]="YARN_IMPORT_FAILED",Ue[Ue.REMOTE_INVALID=15]="REMOTE_INVALID",Ue[Ue.REMOTE_NOT_FOUND=16]="REMOTE_NOT_FOUND",Ue[Ue.RESOLUTION_PACK=17]="RESOLUTION_PACK",Ue[Ue.CACHE_CHECKSUM_MISMATCH=18]="CACHE_CHECKSUM_MISMATCH",Ue[Ue.UNUSED_CACHE_ENTRY=19]="UNUSED_CACHE_ENTRY",Ue[Ue.MISSING_LOCKFILE_ENTRY=20]="MISSING_LOCKFILE_ENTRY",Ue[Ue.WORKSPACE_NOT_FOUND=21]="WORKSPACE_NOT_FOUND",Ue[Ue.TOO_MANY_MATCHING_WORKSPACES=22]="TOO_MANY_MATCHING_WORKSPACES",Ue[Ue.CONSTRAINTS_MISSING_DEPENDENCY=23]="CONSTRAINTS_MISSING_DEPENDENCY",Ue[Ue.CONSTRAINTS_INCOMPATIBLE_DEPENDENCY=24]="CONSTRAINTS_INCOMPATIBLE_DEPENDENCY",Ue[Ue.CONSTRAINTS_EXTRANEOUS_DEPENDENCY=25]="CONSTRAINTS_EXTRANEOUS_DEPENDENCY",Ue[Ue.CONSTRAINTS_INVALID_DEPENDENCY=26]="CONSTRAINTS_INVALID_DEPENDENCY",Ue[Ue.CANT_SUGGEST_RESOLUTIONS=27]="CANT_SUGGEST_RESOLUTIONS",Ue[Ue.FROZEN_LOCKFILE_EXCEPTION=28]="FROZEN_LOCKFILE_EXCEPTION",Ue[Ue.CROSS_DRIVE_VIRTUAL_LOCAL=29]="CROSS_DRIVE_VIRTUAL_LOCAL",Ue[Ue.FETCH_FAILED=30]="FETCH_FAILED",Ue[Ue.DANGEROUS_NODE_MODULES=31]="DANGEROUS_NODE_MODULES",Ue[Ue.NODE_GYP_INJECTED=32]="NODE_GYP_INJECTED",Ue[Ue.AUTHENTICATION_NOT_FOUND=33]="AUTHENTICATION_NOT_FOUND",Ue[Ue.INVALID_CONFIGURATION_KEY=34]="INVALID_CONFIGURATION_KEY",Ue[Ue.NETWORK_ERROR=35]="NETWORK_ERROR",Ue[Ue.LIFECYCLE_SCRIPT=36]="LIFECYCLE_SCRIPT",Ue[Ue.CONSTRAINTS_MISSING_FIELD=37]="CONSTRAINTS_MISSING_FIELD",Ue[Ue.CONSTRAINTS_INCOMPATIBLE_FIELD=38]="CONSTRAINTS_INCOMPATIBLE_FIELD",Ue[Ue.CONSTRAINTS_EXTRANEOUS_FIELD=39]="CONSTRAINTS_EXTRANEOUS_FIELD",Ue[Ue.CONSTRAINTS_INVALID_FIELD=40]="CONSTRAINTS_INVALID_FIELD",Ue[Ue.AUTHENTICATION_INVALID=41]="AUTHENTICATION_INVALID",Ue[Ue.PROLOG_UNKNOWN_ERROR=42]="PROLOG_UNKNOWN_ERROR",Ue[Ue.PROLOG_SYNTAX_ERROR=43]="PROLOG_SYNTAX_ERROR",Ue[Ue.PROLOG_EXISTENCE_ERROR=44]="PROLOG_EXISTENCE_ERROR",Ue[Ue.STACK_OVERFLOW_RESOLUTION=45]="STACK_OVERFLOW_RESOLUTION",Ue[Ue.AUTOMERGE_FAILED_TO_PARSE=46]="AUTOMERGE_FAILED_TO_PARSE",Ue[Ue.AUTOMERGE_IMMUTABLE=47]="AUTOMERGE_IMMUTABLE",Ue[Ue.AUTOMERGE_SUCCESS=48]="AUTOMERGE_SUCCESS",Ue[Ue.AUTOMERGE_REQUIRED=49]="AUTOMERGE_REQUIRED",Ue[Ue.DEPRECATED_CLI_SETTINGS=50]="DEPRECATED_CLI_SETTINGS",Ue[Ue.PLUGIN_NAME_NOT_FOUND=51]="PLUGIN_NAME_NOT_FOUND",Ue[Ue.INVALID_PLUGIN_REFERENCE=52]="INVALID_PLUGIN_REFERENCE",Ue[Ue.CONSTRAINTS_AMBIGUITY=53]="CONSTRAINTS_AMBIGUITY",Ue[Ue.CACHE_OUTSIDE_PROJECT=54]="CACHE_OUTSIDE_PROJECT",Ue[Ue.IMMUTABLE_INSTALL=55]="IMMUTABLE_INSTALL",Ue[Ue.IMMUTABLE_CACHE=56]="IMMUTABLE_CACHE",Ue[Ue.INVALID_MANIFEST=57]="INVALID_MANIFEST",Ue[Ue.PACKAGE_PREPARATION_FAILED=58]="PACKAGE_PREPARATION_FAILED",Ue[Ue.INVALID_RANGE_PEER_DEPENDENCY=59]="INVALID_RANGE_PEER_DEPENDENCY",Ue[Ue.INCOMPATIBLE_PEER_DEPENDENCY=60]="INCOMPATIBLE_PEER_DEPENDENCY",Ue[Ue.DEPRECATED_PACKAGE=61]="DEPRECATED_PACKAGE",Ue[Ue.INCOMPATIBLE_OS=62]="INCOMPATIBLE_OS",Ue[Ue.INCOMPATIBLE_CPU=63]="INCOMPATIBLE_CPU",Ue[Ue.FROZEN_ARTIFACT_EXCEPTION=64]="FROZEN_ARTIFACT_EXCEPTION",Ue[Ue.TELEMETRY_NOTICE=65]="TELEMETRY_NOTICE",Ue[Ue.PATCH_HUNK_FAILED=66]="PATCH_HUNK_FAILED",Ue[Ue.INVALID_CONFIGURATION_VALUE=67]="INVALID_CONFIGURATION_VALUE",Ue[Ue.UNUSED_PACKAGE_EXTENSION=68]="UNUSED_PACKAGE_EXTENSION",Ue[Ue.REDUNDANT_PACKAGE_EXTENSION=69]="REDUNDANT_PACKAGE_EXTENSION",Ue[Ue.AUTO_NM_SUCCESS=70]="AUTO_NM_SUCCESS",Ue[Ue.NM_CANT_INSTALL_EXTERNAL_SOFT_LINK=71]="NM_CANT_INSTALL_EXTERNAL_SOFT_LINK",Ue[Ue.NM_PRESERVE_SYMLINKS_REQUIRED=72]="NM_PRESERVE_SYMLINKS_REQUIRED",Ue[Ue.UPDATE_LOCKFILE_ONLY_SKIP_LINK=73]="UPDATE_LOCKFILE_ONLY_SKIP_LINK",Ue[Ue.NM_HARDLINKS_MODE_DOWNGRADED=74]="NM_HARDLINKS_MODE_DOWNGRADED",Ue[Ue.PROLOG_INSTANTIATION_ERROR=75]="PROLOG_INSTANTIATION_ERROR",Ue[Ue.INCOMPATIBLE_ARCHITECTURE=76]="INCOMPATIBLE_ARCHITECTURE",Ue[Ue.GHOST_ARCHITECTURE=77]="GHOST_ARCHITECTURE",Ue[Ue.RESOLUTION_MISMATCH=78]="RESOLUTION_MISMATCH",Ue[Ue.PROLOG_LIMIT_EXCEEDED=79]="PROLOG_LIMIT_EXCEEDED",Ue[Ue.NETWORK_DISABLED=80]="NETWORK_DISABLED",Ue[Ue.NETWORK_UNSAFE_HTTP=81]="NETWORK_UNSAFE_HTTP",Ue[Ue.RESOLUTION_FAILED=82]="RESOLUTION_FAILED",Ue[Ue.AUTOMERGE_GIT_ERROR=83]="AUTOMERGE_GIT_ERROR",Ue[Ue.CONSTRAINTS_CHECK_FAILED=84]="CONSTRAINTS_CHECK_FAILED",Ue[Ue.UPDATED_RESOLUTION_RECORD=85]="UPDATED_RESOLUTION_RECORD",Ue[Ue.EXPLAIN_PEER_DEPENDENCIES_CTA=86]="EXPLAIN_PEER_DEPENDENCIES_CTA",Ue[Ue.MIGRATION_SUCCESS=87]="MIGRATION_SUCCESS",Ue[Ue.VERSION_NOTICE=88]="VERSION_NOTICE",Ue[Ue.TIPS_NOTICE=89]="TIPS_NOTICE",Ue[Ue.OFFLINE_MODE_ENABLED=90]="OFFLINE_MODE_ENABLED",Ue[Ue.INVALID_PROVENANCE_ENVIRONMENT=91]="INVALID_PROVENANCE_ENVIRONMENT",Ue[Ue.EXPERIMENTAL=92]="EXPERIMENTAL",Ue))(Ir||{})});var $2=G((hkt,jre)=>{var kqe="2.0.0",Qqe=Number.MAX_SAFE_INTEGER||9007199254740991,Rqe=16,Tqe=250,Fqe=["major","premajor","minor","preminor","patch","prepatch","prerelease"];jre.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:Rqe,MAX_SAFE_BUILD_LENGTH:Tqe,MAX_SAFE_INTEGER:Qqe,RELEASE_TYPES:Fqe,SEMVER_SPEC_VERSION:kqe,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var eB=G((dkt,Gre)=>{var Nqe=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{};Gre.exports=Nqe});var bE=G((Sp,qre)=>{var{MAX_SAFE_COMPONENT_LENGTH:A_,MAX_SAFE_BUILD_LENGTH:Oqe,MAX_LENGTH:Lqe}=$2(),Mqe=eB();Sp=qre.exports={};var Uqe=Sp.re=[],_qe=Sp.safeRe=[],rr=Sp.src=[],nr=Sp.t={},Hqe=0,p_="[a-zA-Z0-9-]",jqe=[["\\s",1],["\\d",Lqe],[p_,Oqe]],Gqe=e=>{for(let[t,r]of jqe)e=e.split(`${t}*`).join(`${t}{0,${r}}`).split(`${t}+`).join(`${t}{1,${r}}`);return e},Jr=(e,t,r)=>{let s=Gqe(t),a=Hqe++;Mqe(e,a,t),nr[e]=a,rr[a]=t,Uqe[a]=new RegExp(t,r?"g":void 0),_qe[a]=new RegExp(s,r?"g":void 0)};Jr("NUMERICIDENTIFIER","0|[1-9]\\d*");Jr("NUMERICIDENTIFIERLOOSE","\\d+");Jr("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${p_}*`);Jr("MAINVERSION",`(${rr[nr.NUMERICIDENTIFIER]})\\.(${rr[nr.NUMERICIDENTIFIER]})\\.(${rr[nr.NUMERICIDENTIFIER]})`);Jr("MAINVERSIONLOOSE",`(${rr[nr.NUMERICIDENTIFIERLOOSE]})\\.(${rr[nr.NUMERICIDENTIFIERLOOSE]})\\.(${rr[nr.NUMERICIDENTIFIERLOOSE]})`);Jr("PRERELEASEIDENTIFIER",`(?:${rr[nr.NUMERICIDENTIFIER]}|${rr[nr.NONNUMERICIDENTIFIER]})`);Jr("PRERELEASEIDENTIFIERLOOSE",`(?:${rr[nr.NUMERICIDENTIFIERLOOSE]}|${rr[nr.NONNUMERICIDENTIFIER]})`);Jr("PRERELEASE",`(?:-(${rr[nr.PRERELEASEIDENTIFIER]}(?:\\.${rr[nr.PRERELEASEIDENTIFIER]})*))`);Jr("PRERELEASELOOSE",`(?:-?(${rr[nr.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${rr[nr.PRERELEASEIDENTIFIERLOOSE]})*))`);Jr("BUILDIDENTIFIER",`${p_}+`);Jr("BUILD",`(?:\\+(${rr[nr.BUILDIDENTIFIER]}(?:\\.${rr[nr.BUILDIDENTIFIER]})*))`);Jr("FULLPLAIN",`v?${rr[nr.MAINVERSION]}${rr[nr.PRERELEASE]}?${rr[nr.BUILD]}?`);Jr("FULL",`^${rr[nr.FULLPLAIN]}$`);Jr("LOOSEPLAIN",`[v=\\s]*${rr[nr.MAINVERSIONLOOSE]}${rr[nr.PRERELEASELOOSE]}?${rr[nr.BUILD]}?`);Jr("LOOSE",`^${rr[nr.LOOSEPLAIN]}$`);Jr("GTLT","((?:<|>)?=?)");Jr("XRANGEIDENTIFIERLOOSE",`${rr[nr.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);Jr("XRANGEIDENTIFIER",`${rr[nr.NUMERICIDENTIFIER]}|x|X|\\*`);Jr("XRANGEPLAIN",`[v=\\s]*(${rr[nr.XRANGEIDENTIFIER]})(?:\\.(${rr[nr.XRANGEIDENTIFIER]})(?:\\.(${rr[nr.XRANGEIDENTIFIER]})(?:${rr[nr.PRERELEASE]})?${rr[nr.BUILD]}?)?)?`);Jr("XRANGEPLAINLOOSE",`[v=\\s]*(${rr[nr.XRANGEIDENTIFIERLOOSE]})(?:\\.(${rr[nr.XRANGEIDENTIFIERLOOSE]})(?:\\.(${rr[nr.XRANGEIDENTIFIERLOOSE]})(?:${rr[nr.PRERELEASELOOSE]})?${rr[nr.BUILD]}?)?)?`);Jr("XRANGE",`^${rr[nr.GTLT]}\\s*${rr[nr.XRANGEPLAIN]}$`);Jr("XRANGELOOSE",`^${rr[nr.GTLT]}\\s*${rr[nr.XRANGEPLAINLOOSE]}$`);Jr("COERCEPLAIN",`(^|[^\\d])(\\d{1,${A_}})(?:\\.(\\d{1,${A_}}))?(?:\\.(\\d{1,${A_}}))?`);Jr("COERCE",`${rr[nr.COERCEPLAIN]}(?:$|[^\\d])`);Jr("COERCEFULL",rr[nr.COERCEPLAIN]+`(?:${rr[nr.PRERELEASE]})?(?:${rr[nr.BUILD]})?(?:$|[^\\d])`);Jr("COERCERTL",rr[nr.COERCE],!0);Jr("COERCERTLFULL",rr[nr.COERCEFULL],!0);Jr("LONETILDE","(?:~>?)");Jr("TILDETRIM",`(\\s*)${rr[nr.LONETILDE]}\\s+`,!0);Sp.tildeTrimReplace="$1~";Jr("TILDE",`^${rr[nr.LONETILDE]}${rr[nr.XRANGEPLAIN]}$`);Jr("TILDELOOSE",`^${rr[nr.LONETILDE]}${rr[nr.XRANGEPLAINLOOSE]}$`);Jr("LONECARET","(?:\\^)");Jr("CARETTRIM",`(\\s*)${rr[nr.LONECARET]}\\s+`,!0);Sp.caretTrimReplace="$1^";Jr("CARET",`^${rr[nr.LONECARET]}${rr[nr.XRANGEPLAIN]}$`);Jr("CARETLOOSE",`^${rr[nr.LONECARET]}${rr[nr.XRANGEPLAINLOOSE]}$`);Jr("COMPARATORLOOSE",`^${rr[nr.GTLT]}\\s*(${rr[nr.LOOSEPLAIN]})$|^$`);Jr("COMPARATOR",`^${rr[nr.GTLT]}\\s*(${rr[nr.FULLPLAIN]})$|^$`);Jr("COMPARATORTRIM",`(\\s*)${rr[nr.GTLT]}\\s*(${rr[nr.LOOSEPLAIN]}|${rr[nr.XRANGEPLAIN]})`,!0);Sp.comparatorTrimReplace="$1$2$3";Jr("HYPHENRANGE",`^\\s*(${rr[nr.XRANGEPLAIN]})\\s+-\\s+(${rr[nr.XRANGEPLAIN]})\\s*$`);Jr("HYPHENRANGELOOSE",`^\\s*(${rr[nr.XRANGEPLAINLOOSE]})\\s+-\\s+(${rr[nr.XRANGEPLAINLOOSE]})\\s*$`);Jr("STAR","(<|>)?=?\\s*\\*");Jr("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");Jr("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var qx=G((gkt,Wre)=>{var qqe=Object.freeze({loose:!0}),Wqe=Object.freeze({}),Yqe=e=>e?typeof e!="object"?qqe:e:Wqe;Wre.exports=Yqe});var h_=G((mkt,Jre)=>{var Yre=/^[0-9]+$/,Vre=(e,t)=>{let r=Yre.test(e),s=Yre.test(t);return r&&s&&(e=+e,t=+t),e===t?0:r&&!s?-1:s&&!r?1:eVre(t,e);Jre.exports={compareIdentifiers:Vre,rcompareIdentifiers:Vqe}});var Ko=G((ykt,Zre)=>{var Wx=eB(),{MAX_LENGTH:Kre,MAX_SAFE_INTEGER:Yx}=$2(),{safeRe:zre,t:Xre}=bE(),Jqe=qx(),{compareIdentifiers:PE}=h_(),d_=class e{constructor(t,r){if(r=Jqe(r),t instanceof e){if(t.loose===!!r.loose&&t.includePrerelease===!!r.includePrerelease)return t;t=t.version}else if(typeof t!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof t}".`);if(t.length>Kre)throw new TypeError(`version is longer than ${Kre} characters`);Wx("SemVer",t,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let s=t.trim().match(r.loose?zre[Xre.LOOSE]:zre[Xre.FULL]);if(!s)throw new TypeError(`Invalid Version: ${t}`);if(this.raw=t,this.major=+s[1],this.minor=+s[2],this.patch=+s[3],this.major>Yx||this.major<0)throw new TypeError("Invalid major version");if(this.minor>Yx||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>Yx||this.patch<0)throw new TypeError("Invalid patch version");s[4]?this.prerelease=s[4].split(".").map(a=>{if(/^[0-9]+$/.test(a)){let n=+a;if(n>=0&&n=0;)typeof this.prerelease[n]=="number"&&(this.prerelease[n]++,n=-2);if(n===-1){if(r===this.prerelease.join(".")&&s===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(a)}}if(r){let n=[r,a];s===!1&&(n=[r]),PE(this.prerelease[0],r)===0?isNaN(this.prerelease[1])&&(this.prerelease=n):this.prerelease=n}break}default:throw new Error(`invalid increment argument: ${t}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};Zre.exports=d_});var Og=G((Ekt,ene)=>{var $re=Ko(),Kqe=(e,t,r=!1)=>{if(e instanceof $re)return e;try{return new $re(e,t)}catch(s){if(!r)return null;throw s}};ene.exports=Kqe});var rne=G((Ikt,tne)=>{var zqe=Og(),Xqe=(e,t)=>{let r=zqe(e,t);return r?r.version:null};tne.exports=Xqe});var ine=G((Ckt,nne)=>{var Zqe=Og(),$qe=(e,t)=>{let r=Zqe(e.trim().replace(/^[=v]+/,""),t);return r?r.version:null};nne.exports=$qe});var ane=G((wkt,one)=>{var sne=Ko(),eWe=(e,t,r,s,a)=>{typeof r=="string"&&(a=s,s=r,r=void 0);try{return new sne(e instanceof sne?e.version:e,r).inc(t,s,a).version}catch{return null}};one.exports=eWe});var une=G((Bkt,cne)=>{var lne=Og(),tWe=(e,t)=>{let r=lne(e,null,!0),s=lne(t,null,!0),a=r.compare(s);if(a===0)return null;let n=a>0,c=n?r:s,f=n?s:r,p=!!c.prerelease.length;if(!!f.prerelease.length&&!p)return!f.patch&&!f.minor?"major":c.patch?"patch":c.minor?"minor":"major";let E=p?"pre":"";return r.major!==s.major?E+"major":r.minor!==s.minor?E+"minor":r.patch!==s.patch?E+"patch":"prerelease"};cne.exports=tWe});var Ane=G((vkt,fne)=>{var rWe=Ko(),nWe=(e,t)=>new rWe(e,t).major;fne.exports=nWe});var hne=G((Skt,pne)=>{var iWe=Ko(),sWe=(e,t)=>new iWe(e,t).minor;pne.exports=sWe});var gne=G((Dkt,dne)=>{var oWe=Ko(),aWe=(e,t)=>new oWe(e,t).patch;dne.exports=aWe});var yne=G((bkt,mne)=>{var lWe=Og(),cWe=(e,t)=>{let r=lWe(e,t);return r&&r.prerelease.length?r.prerelease:null};mne.exports=cWe});var Sc=G((Pkt,Ine)=>{var Ene=Ko(),uWe=(e,t,r)=>new Ene(e,r).compare(new Ene(t,r));Ine.exports=uWe});var wne=G((xkt,Cne)=>{var fWe=Sc(),AWe=(e,t,r)=>fWe(t,e,r);Cne.exports=AWe});var vne=G((kkt,Bne)=>{var pWe=Sc(),hWe=(e,t)=>pWe(e,t,!0);Bne.exports=hWe});var Vx=G((Qkt,Dne)=>{var Sne=Ko(),dWe=(e,t,r)=>{let s=new Sne(e,r),a=new Sne(t,r);return s.compare(a)||s.compareBuild(a)};Dne.exports=dWe});var Pne=G((Rkt,bne)=>{var gWe=Vx(),mWe=(e,t)=>e.sort((r,s)=>gWe(r,s,t));bne.exports=mWe});var kne=G((Tkt,xne)=>{var yWe=Vx(),EWe=(e,t)=>e.sort((r,s)=>yWe(s,r,t));xne.exports=EWe});var tB=G((Fkt,Qne)=>{var IWe=Sc(),CWe=(e,t,r)=>IWe(e,t,r)>0;Qne.exports=CWe});var Jx=G((Nkt,Rne)=>{var wWe=Sc(),BWe=(e,t,r)=>wWe(e,t,r)<0;Rne.exports=BWe});var g_=G((Okt,Tne)=>{var vWe=Sc(),SWe=(e,t,r)=>vWe(e,t,r)===0;Tne.exports=SWe});var m_=G((Lkt,Fne)=>{var DWe=Sc(),bWe=(e,t,r)=>DWe(e,t,r)!==0;Fne.exports=bWe});var Kx=G((Mkt,Nne)=>{var PWe=Sc(),xWe=(e,t,r)=>PWe(e,t,r)>=0;Nne.exports=xWe});var zx=G((Ukt,One)=>{var kWe=Sc(),QWe=(e,t,r)=>kWe(e,t,r)<=0;One.exports=QWe});var y_=G((_kt,Lne)=>{var RWe=g_(),TWe=m_(),FWe=tB(),NWe=Kx(),OWe=Jx(),LWe=zx(),MWe=(e,t,r,s)=>{switch(t){case"===":return typeof e=="object"&&(e=e.version),typeof r=="object"&&(r=r.version),e===r;case"!==":return typeof e=="object"&&(e=e.version),typeof r=="object"&&(r=r.version),e!==r;case"":case"=":case"==":return RWe(e,r,s);case"!=":return TWe(e,r,s);case">":return FWe(e,r,s);case">=":return NWe(e,r,s);case"<":return OWe(e,r,s);case"<=":return LWe(e,r,s);default:throw new TypeError(`Invalid operator: ${t}`)}};Lne.exports=MWe});var Une=G((Hkt,Mne)=>{var UWe=Ko(),_We=Og(),{safeRe:Xx,t:Zx}=bE(),HWe=(e,t)=>{if(e instanceof UWe)return e;if(typeof e=="number"&&(e=String(e)),typeof e!="string")return null;t=t||{};let r=null;if(!t.rtl)r=e.match(t.includePrerelease?Xx[Zx.COERCEFULL]:Xx[Zx.COERCE]);else{let p=t.includePrerelease?Xx[Zx.COERCERTLFULL]:Xx[Zx.COERCERTL],h;for(;(h=p.exec(e))&&(!r||r.index+r[0].length!==e.length);)(!r||h.index+h[0].length!==r.index+r[0].length)&&(r=h),p.lastIndex=h.index+h[1].length+h[2].length;p.lastIndex=-1}if(r===null)return null;let s=r[2],a=r[3]||"0",n=r[4]||"0",c=t.includePrerelease&&r[5]?`-${r[5]}`:"",f=t.includePrerelease&&r[6]?`+${r[6]}`:"";return _We(`${s}.${a}.${n}${c}${f}`,t)};Mne.exports=HWe});var Hne=G((jkt,_ne)=>{"use strict";_ne.exports=function(e){e.prototype[Symbol.iterator]=function*(){for(let t=this.head;t;t=t.next)yield t.value}}});var Gne=G((Gkt,jne)=>{"use strict";jne.exports=On;On.Node=Lg;On.create=On;function On(e){var t=this;if(t instanceof On||(t=new On),t.tail=null,t.head=null,t.length=0,e&&typeof e.forEach=="function")e.forEach(function(a){t.push(a)});else if(arguments.length>0)for(var r=0,s=arguments.length;r1)r=t;else if(this.head)s=this.head.next,r=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var a=0;s!==null;a++)r=e(r,s.value,a),s=s.next;return r};On.prototype.reduceReverse=function(e,t){var r,s=this.tail;if(arguments.length>1)r=t;else if(this.tail)s=this.tail.prev,r=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var a=this.length-1;s!==null;a--)r=e(r,s.value,a),s=s.prev;return r};On.prototype.toArray=function(){for(var e=new Array(this.length),t=0,r=this.head;r!==null;t++)e[t]=r.value,r=r.next;return e};On.prototype.toArrayReverse=function(){for(var e=new Array(this.length),t=0,r=this.tail;r!==null;t++)e[t]=r.value,r=r.prev;return e};On.prototype.slice=function(e,t){t=t||this.length,t<0&&(t+=this.length),e=e||0,e<0&&(e+=this.length);var r=new On;if(tthis.length&&(t=this.length);for(var s=0,a=this.head;a!==null&&sthis.length&&(t=this.length);for(var s=this.length,a=this.tail;a!==null&&s>t;s--)a=a.prev;for(;a!==null&&s>e;s--,a=a.prev)r.push(a.value);return r};On.prototype.splice=function(e,t,...r){e>this.length&&(e=this.length-1),e<0&&(e=this.length+e);for(var s=0,a=this.head;a!==null&&s{"use strict";var WWe=Gne(),Mg=Symbol("max"),bp=Symbol("length"),xE=Symbol("lengthCalculator"),nB=Symbol("allowStale"),Ug=Symbol("maxAge"),Dp=Symbol("dispose"),qne=Symbol("noDisposeOnSet"),Ys=Symbol("lruList"),Nu=Symbol("cache"),Yne=Symbol("updateAgeOnGet"),E_=()=>1,C_=class{constructor(t){if(typeof t=="number"&&(t={max:t}),t||(t={}),t.max&&(typeof t.max!="number"||t.max<0))throw new TypeError("max must be a non-negative number");let r=this[Mg]=t.max||1/0,s=t.length||E_;if(this[xE]=typeof s!="function"?E_:s,this[nB]=t.stale||!1,t.maxAge&&typeof t.maxAge!="number")throw new TypeError("maxAge must be a number");this[Ug]=t.maxAge||0,this[Dp]=t.dispose,this[qne]=t.noDisposeOnSet||!1,this[Yne]=t.updateAgeOnGet||!1,this.reset()}set max(t){if(typeof t!="number"||t<0)throw new TypeError("max must be a non-negative number");this[Mg]=t||1/0,rB(this)}get max(){return this[Mg]}set allowStale(t){this[nB]=!!t}get allowStale(){return this[nB]}set maxAge(t){if(typeof t!="number")throw new TypeError("maxAge must be a non-negative number");this[Ug]=t,rB(this)}get maxAge(){return this[Ug]}set lengthCalculator(t){typeof t!="function"&&(t=E_),t!==this[xE]&&(this[xE]=t,this[bp]=0,this[Ys].forEach(r=>{r.length=this[xE](r.value,r.key),this[bp]+=r.length})),rB(this)}get lengthCalculator(){return this[xE]}get length(){return this[bp]}get itemCount(){return this[Ys].length}rforEach(t,r){r=r||this;for(let s=this[Ys].tail;s!==null;){let a=s.prev;Wne(this,t,s,r),s=a}}forEach(t,r){r=r||this;for(let s=this[Ys].head;s!==null;){let a=s.next;Wne(this,t,s,r),s=a}}keys(){return this[Ys].toArray().map(t=>t.key)}values(){return this[Ys].toArray().map(t=>t.value)}reset(){this[Dp]&&this[Ys]&&this[Ys].length&&this[Ys].forEach(t=>this[Dp](t.key,t.value)),this[Nu]=new Map,this[Ys]=new WWe,this[bp]=0}dump(){return this[Ys].map(t=>$x(this,t)?!1:{k:t.key,v:t.value,e:t.now+(t.maxAge||0)}).toArray().filter(t=>t)}dumpLru(){return this[Ys]}set(t,r,s){if(s=s||this[Ug],s&&typeof s!="number")throw new TypeError("maxAge must be a number");let a=s?Date.now():0,n=this[xE](r,t);if(this[Nu].has(t)){if(n>this[Mg])return kE(this,this[Nu].get(t)),!1;let p=this[Nu].get(t).value;return this[Dp]&&(this[qne]||this[Dp](t,p.value)),p.now=a,p.maxAge=s,p.value=r,this[bp]+=n-p.length,p.length=n,this.get(t),rB(this),!0}let c=new w_(t,r,n,a,s);return c.length>this[Mg]?(this[Dp]&&this[Dp](t,r),!1):(this[bp]+=c.length,this[Ys].unshift(c),this[Nu].set(t,this[Ys].head),rB(this),!0)}has(t){if(!this[Nu].has(t))return!1;let r=this[Nu].get(t).value;return!$x(this,r)}get(t){return I_(this,t,!0)}peek(t){return I_(this,t,!1)}pop(){let t=this[Ys].tail;return t?(kE(this,t),t.value):null}del(t){kE(this,this[Nu].get(t))}load(t){this.reset();let r=Date.now();for(let s=t.length-1;s>=0;s--){let a=t[s],n=a.e||0;if(n===0)this.set(a.k,a.v);else{let c=n-r;c>0&&this.set(a.k,a.v,c)}}}prune(){this[Nu].forEach((t,r)=>I_(this,r,!1))}},I_=(e,t,r)=>{let s=e[Nu].get(t);if(s){let a=s.value;if($x(e,a)){if(kE(e,s),!e[nB])return}else r&&(e[Yne]&&(s.value.now=Date.now()),e[Ys].unshiftNode(s));return a.value}},$x=(e,t)=>{if(!t||!t.maxAge&&!e[Ug])return!1;let r=Date.now()-t.now;return t.maxAge?r>t.maxAge:e[Ug]&&r>e[Ug]},rB=e=>{if(e[bp]>e[Mg])for(let t=e[Ys].tail;e[bp]>e[Mg]&&t!==null;){let r=t.prev;kE(e,t),t=r}},kE=(e,t)=>{if(t){let r=t.value;e[Dp]&&e[Dp](r.key,r.value),e[bp]-=r.length,e[Nu].delete(r.key),e[Ys].removeNode(t)}},w_=class{constructor(t,r,s,a,n){this.key=t,this.value=r,this.length=s,this.now=a,this.maxAge=n||0}},Wne=(e,t,r,s)=>{let a=r.value;$x(e,a)&&(kE(e,r),e[nB]||(a=void 0)),a&&t.call(s,a.value,a.key,e)};Vne.exports=C_});var Dc=G((Wkt,Zne)=>{var B_=class e{constructor(t,r){if(r=VWe(r),t instanceof e)return t.loose===!!r.loose&&t.includePrerelease===!!r.includePrerelease?t:new e(t.raw,r);if(t instanceof v_)return this.raw=t.value,this.set=[[t]],this.format(),this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=t.trim().split(/\s+/).join(" "),this.set=this.raw.split("||").map(s=>this.parseRange(s.trim())).filter(s=>s.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let s=this.set[0];if(this.set=this.set.filter(a=>!zne(a[0])),this.set.length===0)this.set=[s];else if(this.set.length>1){for(let a of this.set)if(a.length===1&&eYe(a[0])){this.set=[a];break}}}this.format()}format(){return this.range=this.set.map(t=>t.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(t){let s=((this.options.includePrerelease&&ZWe)|(this.options.loose&&$We))+":"+t,a=Kne.get(s);if(a)return a;let n=this.options.loose,c=n?hl[Da.HYPHENRANGELOOSE]:hl[Da.HYPHENRANGE];t=t.replace(c,uYe(this.options.includePrerelease)),Si("hyphen replace",t),t=t.replace(hl[Da.COMPARATORTRIM],KWe),Si("comparator trim",t),t=t.replace(hl[Da.TILDETRIM],zWe),Si("tilde trim",t),t=t.replace(hl[Da.CARETTRIM],XWe),Si("caret trim",t);let f=t.split(" ").map(C=>tYe(C,this.options)).join(" ").split(/\s+/).map(C=>cYe(C,this.options));n&&(f=f.filter(C=>(Si("loose invalid filter",C,this.options),!!C.match(hl[Da.COMPARATORLOOSE])))),Si("range list",f);let p=new Map,h=f.map(C=>new v_(C,this.options));for(let C of h){if(zne(C))return[C];p.set(C.value,C)}p.size>1&&p.has("")&&p.delete("");let E=[...p.values()];return Kne.set(s,E),E}intersects(t,r){if(!(t instanceof e))throw new TypeError("a Range is required");return this.set.some(s=>Xne(s,r)&&t.set.some(a=>Xne(a,r)&&s.every(n=>a.every(c=>n.intersects(c,r)))))}test(t){if(!t)return!1;if(typeof t=="string")try{t=new JWe(t,this.options)}catch{return!1}for(let r=0;re.value==="<0.0.0-0",eYe=e=>e.value==="",Xne=(e,t)=>{let r=!0,s=e.slice(),a=s.pop();for(;r&&s.length;)r=s.every(n=>a.intersects(n,t)),a=s.pop();return r},tYe=(e,t)=>(Si("comp",e,t),e=iYe(e,t),Si("caret",e),e=rYe(e,t),Si("tildes",e),e=oYe(e,t),Si("xrange",e),e=lYe(e,t),Si("stars",e),e),ba=e=>!e||e.toLowerCase()==="x"||e==="*",rYe=(e,t)=>e.trim().split(/\s+/).map(r=>nYe(r,t)).join(" "),nYe=(e,t)=>{let r=t.loose?hl[Da.TILDELOOSE]:hl[Da.TILDE];return e.replace(r,(s,a,n,c,f)=>{Si("tilde",e,s,a,n,c,f);let p;return ba(a)?p="":ba(n)?p=`>=${a}.0.0 <${+a+1}.0.0-0`:ba(c)?p=`>=${a}.${n}.0 <${a}.${+n+1}.0-0`:f?(Si("replaceTilde pr",f),p=`>=${a}.${n}.${c}-${f} <${a}.${+n+1}.0-0`):p=`>=${a}.${n}.${c} <${a}.${+n+1}.0-0`,Si("tilde return",p),p})},iYe=(e,t)=>e.trim().split(/\s+/).map(r=>sYe(r,t)).join(" "),sYe=(e,t)=>{Si("caret",e,t);let r=t.loose?hl[Da.CARETLOOSE]:hl[Da.CARET],s=t.includePrerelease?"-0":"";return e.replace(r,(a,n,c,f,p)=>{Si("caret",e,a,n,c,f,p);let h;return ba(n)?h="":ba(c)?h=`>=${n}.0.0${s} <${+n+1}.0.0-0`:ba(f)?n==="0"?h=`>=${n}.${c}.0${s} <${n}.${+c+1}.0-0`:h=`>=${n}.${c}.0${s} <${+n+1}.0.0-0`:p?(Si("replaceCaret pr",p),n==="0"?c==="0"?h=`>=${n}.${c}.${f}-${p} <${n}.${c}.${+f+1}-0`:h=`>=${n}.${c}.${f}-${p} <${n}.${+c+1}.0-0`:h=`>=${n}.${c}.${f}-${p} <${+n+1}.0.0-0`):(Si("no pr"),n==="0"?c==="0"?h=`>=${n}.${c}.${f}${s} <${n}.${c}.${+f+1}-0`:h=`>=${n}.${c}.${f}${s} <${n}.${+c+1}.0-0`:h=`>=${n}.${c}.${f} <${+n+1}.0.0-0`),Si("caret return",h),h})},oYe=(e,t)=>(Si("replaceXRanges",e,t),e.split(/\s+/).map(r=>aYe(r,t)).join(" ")),aYe=(e,t)=>{e=e.trim();let r=t.loose?hl[Da.XRANGELOOSE]:hl[Da.XRANGE];return e.replace(r,(s,a,n,c,f,p)=>{Si("xRange",e,s,a,n,c,f,p);let h=ba(n),E=h||ba(c),C=E||ba(f),S=C;return a==="="&&S&&(a=""),p=t.includePrerelease?"-0":"",h?a===">"||a==="<"?s="<0.0.0-0":s="*":a&&S?(E&&(c=0),f=0,a===">"?(a=">=",E?(n=+n+1,c=0,f=0):(c=+c+1,f=0)):a==="<="&&(a="<",E?n=+n+1:c=+c+1),a==="<"&&(p="-0"),s=`${a+n}.${c}.${f}${p}`):E?s=`>=${n}.0.0${p} <${+n+1}.0.0-0`:C&&(s=`>=${n}.${c}.0${p} <${n}.${+c+1}.0-0`),Si("xRange return",s),s})},lYe=(e,t)=>(Si("replaceStars",e,t),e.trim().replace(hl[Da.STAR],"")),cYe=(e,t)=>(Si("replaceGTE0",e,t),e.trim().replace(hl[t.includePrerelease?Da.GTE0PRE:Da.GTE0],"")),uYe=e=>(t,r,s,a,n,c,f,p,h,E,C,S,x)=>(ba(s)?r="":ba(a)?r=`>=${s}.0.0${e?"-0":""}`:ba(n)?r=`>=${s}.${a}.0${e?"-0":""}`:c?r=`>=${r}`:r=`>=${r}${e?"-0":""}`,ba(h)?p="":ba(E)?p=`<${+h+1}.0.0-0`:ba(C)?p=`<${h}.${+E+1}.0-0`:S?p=`<=${h}.${E}.${C}-${S}`:e?p=`<${h}.${E}.${+C+1}-0`:p=`<=${p}`,`${r} ${p}`.trim()),fYe=(e,t,r)=>{for(let s=0;s0){let a=e[s].semver;if(a.major===t.major&&a.minor===t.minor&&a.patch===t.patch)return!0}return!1}return!0}});var iB=G((Ykt,iie)=>{var sB=Symbol("SemVer ANY"),b_=class e{static get ANY(){return sB}constructor(t,r){if(r=$ne(r),t instanceof e){if(t.loose===!!r.loose)return t;t=t.value}t=t.trim().split(/\s+/).join(" "),D_("comparator",t,r),this.options=r,this.loose=!!r.loose,this.parse(t),this.semver===sB?this.value="":this.value=this.operator+this.semver.version,D_("comp",this)}parse(t){let r=this.options.loose?eie[tie.COMPARATORLOOSE]:eie[tie.COMPARATOR],s=t.match(r);if(!s)throw new TypeError(`Invalid comparator: ${t}`);this.operator=s[1]!==void 0?s[1]:"",this.operator==="="&&(this.operator=""),s[2]?this.semver=new rie(s[2],this.options.loose):this.semver=sB}toString(){return this.value}test(t){if(D_("Comparator.test",t,this.options.loose),this.semver===sB||t===sB)return!0;if(typeof t=="string")try{t=new rie(t,this.options)}catch{return!1}return S_(t,this.operator,this.semver,this.options)}intersects(t,r){if(!(t instanceof e))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new nie(t.value,r).test(this.value):t.operator===""?t.value===""?!0:new nie(this.value,r).test(t.semver):(r=$ne(r),r.includePrerelease&&(this.value==="<0.0.0-0"||t.value==="<0.0.0-0")||!r.includePrerelease&&(this.value.startsWith("<0.0.0")||t.value.startsWith("<0.0.0"))?!1:!!(this.operator.startsWith(">")&&t.operator.startsWith(">")||this.operator.startsWith("<")&&t.operator.startsWith("<")||this.semver.version===t.semver.version&&this.operator.includes("=")&&t.operator.includes("=")||S_(this.semver,"<",t.semver,r)&&this.operator.startsWith(">")&&t.operator.startsWith("<")||S_(this.semver,">",t.semver,r)&&this.operator.startsWith("<")&&t.operator.startsWith(">")))}};iie.exports=b_;var $ne=qx(),{safeRe:eie,t:tie}=bE(),S_=y_(),D_=eB(),rie=Ko(),nie=Dc()});var oB=G((Vkt,sie)=>{var AYe=Dc(),pYe=(e,t,r)=>{try{t=new AYe(t,r)}catch{return!1}return t.test(e)};sie.exports=pYe});var aie=G((Jkt,oie)=>{var hYe=Dc(),dYe=(e,t)=>new hYe(e,t).set.map(r=>r.map(s=>s.value).join(" ").trim().split(" "));oie.exports=dYe});var cie=G((Kkt,lie)=>{var gYe=Ko(),mYe=Dc(),yYe=(e,t,r)=>{let s=null,a=null,n=null;try{n=new mYe(t,r)}catch{return null}return e.forEach(c=>{n.test(c)&&(!s||a.compare(c)===-1)&&(s=c,a=new gYe(s,r))}),s};lie.exports=yYe});var fie=G((zkt,uie)=>{var EYe=Ko(),IYe=Dc(),CYe=(e,t,r)=>{let s=null,a=null,n=null;try{n=new IYe(t,r)}catch{return null}return e.forEach(c=>{n.test(c)&&(!s||a.compare(c)===1)&&(s=c,a=new EYe(s,r))}),s};uie.exports=CYe});var hie=G((Xkt,pie)=>{var P_=Ko(),wYe=Dc(),Aie=tB(),BYe=(e,t)=>{e=new wYe(e,t);let r=new P_("0.0.0");if(e.test(r)||(r=new P_("0.0.0-0"),e.test(r)))return r;r=null;for(let s=0;s{let f=new P_(c.semver.version);switch(c.operator){case">":f.prerelease.length===0?f.patch++:f.prerelease.push(0),f.raw=f.format();case"":case">=":(!n||Aie(f,n))&&(n=f);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${c.operator}`)}}),n&&(!r||Aie(r,n))&&(r=n)}return r&&e.test(r)?r:null};pie.exports=BYe});var gie=G((Zkt,die)=>{var vYe=Dc(),SYe=(e,t)=>{try{return new vYe(e,t).range||"*"}catch{return null}};die.exports=SYe});var ek=G(($kt,Iie)=>{var DYe=Ko(),Eie=iB(),{ANY:bYe}=Eie,PYe=Dc(),xYe=oB(),mie=tB(),yie=Jx(),kYe=zx(),QYe=Kx(),RYe=(e,t,r,s)=>{e=new DYe(e,s),t=new PYe(t,s);let a,n,c,f,p;switch(r){case">":a=mie,n=kYe,c=yie,f=">",p=">=";break;case"<":a=yie,n=QYe,c=mie,f="<",p="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(xYe(e,t,s))return!1;for(let h=0;h{x.semver===bYe&&(x=new Eie(">=0.0.0")),C=C||x,S=S||x,a(x.semver,C.semver,s)?C=x:c(x.semver,S.semver,s)&&(S=x)}),C.operator===f||C.operator===p||(!S.operator||S.operator===f)&&n(e,S.semver))return!1;if(S.operator===p&&c(e,S.semver))return!1}return!0};Iie.exports=RYe});var wie=G((eQt,Cie)=>{var TYe=ek(),FYe=(e,t,r)=>TYe(e,t,">",r);Cie.exports=FYe});var vie=G((tQt,Bie)=>{var NYe=ek(),OYe=(e,t,r)=>NYe(e,t,"<",r);Bie.exports=OYe});var bie=G((rQt,Die)=>{var Sie=Dc(),LYe=(e,t,r)=>(e=new Sie(e,r),t=new Sie(t,r),e.intersects(t,r));Die.exports=LYe});var xie=G((nQt,Pie)=>{var MYe=oB(),UYe=Sc();Pie.exports=(e,t,r)=>{let s=[],a=null,n=null,c=e.sort((E,C)=>UYe(E,C,r));for(let E of c)MYe(E,t,r)?(n=E,a||(a=E)):(n&&s.push([a,n]),n=null,a=null);a&&s.push([a,null]);let f=[];for(let[E,C]of s)E===C?f.push(E):!C&&E===c[0]?f.push("*"):C?E===c[0]?f.push(`<=${C}`):f.push(`${E} - ${C}`):f.push(`>=${E}`);let p=f.join(" || "),h=typeof t.raw=="string"?t.raw:String(t);return p.length{var kie=Dc(),k_=iB(),{ANY:x_}=k_,aB=oB(),Q_=Sc(),_Ye=(e,t,r={})=>{if(e===t)return!0;e=new kie(e,r),t=new kie(t,r);let s=!1;e:for(let a of e.set){for(let n of t.set){let c=jYe(a,n,r);if(s=s||c!==null,c)continue e}if(s)return!1}return!0},HYe=[new k_(">=0.0.0-0")],Qie=[new k_(">=0.0.0")],jYe=(e,t,r)=>{if(e===t)return!0;if(e.length===1&&e[0].semver===x_){if(t.length===1&&t[0].semver===x_)return!0;r.includePrerelease?e=HYe:e=Qie}if(t.length===1&&t[0].semver===x_){if(r.includePrerelease)return!0;t=Qie}let s=new Set,a,n;for(let x of e)x.operator===">"||x.operator===">="?a=Rie(a,x,r):x.operator==="<"||x.operator==="<="?n=Tie(n,x,r):s.add(x.semver);if(s.size>1)return null;let c;if(a&&n){if(c=Q_(a.semver,n.semver,r),c>0)return null;if(c===0&&(a.operator!==">="||n.operator!=="<="))return null}for(let x of s){if(a&&!aB(x,String(a),r)||n&&!aB(x,String(n),r))return null;for(let I of t)if(!aB(x,String(I),r))return!1;return!0}let f,p,h,E,C=n&&!r.includePrerelease&&n.semver.prerelease.length?n.semver:!1,S=a&&!r.includePrerelease&&a.semver.prerelease.length?a.semver:!1;C&&C.prerelease.length===1&&n.operator==="<"&&C.prerelease[0]===0&&(C=!1);for(let x of t){if(E=E||x.operator===">"||x.operator===">=",h=h||x.operator==="<"||x.operator==="<=",a){if(S&&x.semver.prerelease&&x.semver.prerelease.length&&x.semver.major===S.major&&x.semver.minor===S.minor&&x.semver.patch===S.patch&&(S=!1),x.operator===">"||x.operator===">="){if(f=Rie(a,x,r),f===x&&f!==a)return!1}else if(a.operator===">="&&!aB(a.semver,String(x),r))return!1}if(n){if(C&&x.semver.prerelease&&x.semver.prerelease.length&&x.semver.major===C.major&&x.semver.minor===C.minor&&x.semver.patch===C.patch&&(C=!1),x.operator==="<"||x.operator==="<="){if(p=Tie(n,x,r),p===x&&p!==n)return!1}else if(n.operator==="<="&&!aB(n.semver,String(x),r))return!1}if(!x.operator&&(n||a)&&c!==0)return!1}return!(a&&h&&!n&&c!==0||n&&E&&!a&&c!==0||S||C)},Rie=(e,t,r)=>{if(!e)return t;let s=Q_(e.semver,t.semver,r);return s>0?e:s<0||t.operator===">"&&e.operator===">="?t:e},Tie=(e,t,r)=>{if(!e)return t;let s=Q_(e.semver,t.semver,r);return s<0?e:s>0||t.operator==="<"&&e.operator==="<="?t:e};Fie.exports=_Ye});var pi=G((sQt,Mie)=>{var R_=bE(),Oie=$2(),GYe=Ko(),Lie=h_(),qYe=Og(),WYe=rne(),YYe=ine(),VYe=ane(),JYe=une(),KYe=Ane(),zYe=hne(),XYe=gne(),ZYe=yne(),$Ye=Sc(),eVe=wne(),tVe=vne(),rVe=Vx(),nVe=Pne(),iVe=kne(),sVe=tB(),oVe=Jx(),aVe=g_(),lVe=m_(),cVe=Kx(),uVe=zx(),fVe=y_(),AVe=Une(),pVe=iB(),hVe=Dc(),dVe=oB(),gVe=aie(),mVe=cie(),yVe=fie(),EVe=hie(),IVe=gie(),CVe=ek(),wVe=wie(),BVe=vie(),vVe=bie(),SVe=xie(),DVe=Nie();Mie.exports={parse:qYe,valid:WYe,clean:YYe,inc:VYe,diff:JYe,major:KYe,minor:zYe,patch:XYe,prerelease:ZYe,compare:$Ye,rcompare:eVe,compareLoose:tVe,compareBuild:rVe,sort:nVe,rsort:iVe,gt:sVe,lt:oVe,eq:aVe,neq:lVe,gte:cVe,lte:uVe,cmp:fVe,coerce:AVe,Comparator:pVe,Range:hVe,satisfies:dVe,toComparators:gVe,maxSatisfying:mVe,minSatisfying:yVe,minVersion:EVe,validRange:IVe,outside:CVe,gtr:wVe,ltr:BVe,intersects:vVe,simplifyRange:SVe,subset:DVe,SemVer:GYe,re:R_.re,src:R_.src,tokens:R_.t,SEMVER_SPEC_VERSION:Oie.SEMVER_SPEC_VERSION,RELEASE_TYPES:Oie.RELEASE_TYPES,compareIdentifiers:Lie.compareIdentifiers,rcompareIdentifiers:Lie.rcompareIdentifiers}});var _ie=G((oQt,Uie)=>{"use strict";function bVe(e,t){function r(){this.constructor=e}r.prototype=t.prototype,e.prototype=new r}function _g(e,t,r,s){this.message=e,this.expected=t,this.found=r,this.location=s,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,_g)}bVe(_g,Error);_g.buildMessage=function(e,t){var r={literal:function(h){return'"'+a(h.text)+'"'},class:function(h){var E="",C;for(C=0;C0){for(C=1,S=1;C{switch(Fe[1]){case"|":return xe|Fe[3];case"&":return xe&Fe[3];case"^":return xe^Fe[3]}},$)},S="!",x=Ne("!",!1),I=function($){return!$},T="(",O=Ne("(",!1),U=")",V=Ne(")",!1),te=function($){return $},ie=/^[^ \t\n\r()!|&\^]/,ue=ke([" "," ",` +`,"\r","(",")","!","|","&","^"],!0,!1),ae=function($){return t.queryPattern.test($)},ge=function($){return t.checkFn($)},Ae=Re("whitespace"),Ce=/^[ \t\n\r]/,Ee=ke([" "," ",` +`,"\r"],!1,!1),d=0,Se=0,Be=[{line:1,column:1}],me=0,ce=[],Z=0,De;if("startRule"in t){if(!(t.startRule in s))throw new Error(`Can't start parsing from rule "`+t.startRule+'".');a=s[t.startRule]}function Qe(){return e.substring(Se,d)}function st(){return Me(Se,d)}function _($,se){throw se=se!==void 0?se:Me(Se,d),b([Re($)],e.substring(Se,d),se)}function tt($,se){throw se=se!==void 0?se:Me(Se,d),w($,se)}function Ne($,se){return{type:"literal",text:$,ignoreCase:se}}function ke($,se,xe){return{type:"class",parts:$,inverted:se,ignoreCase:xe}}function be(){return{type:"any"}}function je(){return{type:"end"}}function Re($){return{type:"other",description:$}}function ct($){var se=Be[$],xe;if(se)return se;for(xe=$-1;!Be[xe];)xe--;for(se=Be[xe],se={line:se.line,column:se.column};xe<$;)e.charCodeAt(xe)===10?(se.line++,se.column=1):se.column++,xe++;return Be[$]=se,se}function Me($,se){var xe=ct($),Fe=ct(se);return{start:{offset:$,line:xe.line,column:xe.column},end:{offset:se,line:Fe.line,column:Fe.column}}}function P($){dme&&(me=d,ce=[]),ce.push($))}function w($,se){return new _g($,null,null,se)}function b($,se,xe){return new _g(_g.buildMessage($,se),$,se,xe)}function y(){var $,se,xe,Fe,ut,Ct,qt,ir;if($=d,se=F(),se!==r){for(xe=[],Fe=d,ut=X(),ut!==r?(e.charCodeAt(d)===124?(Ct=n,d++):(Ct=r,Z===0&&P(c)),Ct===r&&(e.charCodeAt(d)===38?(Ct=f,d++):(Ct=r,Z===0&&P(p)),Ct===r&&(e.charCodeAt(d)===94?(Ct=h,d++):(Ct=r,Z===0&&P(E)))),Ct!==r?(qt=X(),qt!==r?(ir=F(),ir!==r?(ut=[ut,Ct,qt,ir],Fe=ut):(d=Fe,Fe=r)):(d=Fe,Fe=r)):(d=Fe,Fe=r)):(d=Fe,Fe=r);Fe!==r;)xe.push(Fe),Fe=d,ut=X(),ut!==r?(e.charCodeAt(d)===124?(Ct=n,d++):(Ct=r,Z===0&&P(c)),Ct===r&&(e.charCodeAt(d)===38?(Ct=f,d++):(Ct=r,Z===0&&P(p)),Ct===r&&(e.charCodeAt(d)===94?(Ct=h,d++):(Ct=r,Z===0&&P(E)))),Ct!==r?(qt=X(),qt!==r?(ir=F(),ir!==r?(ut=[ut,Ct,qt,ir],Fe=ut):(d=Fe,Fe=r)):(d=Fe,Fe=r)):(d=Fe,Fe=r)):(d=Fe,Fe=r);xe!==r?(Se=$,se=C(se,xe),$=se):(d=$,$=r)}else d=$,$=r;return $}function F(){var $,se,xe,Fe,ut,Ct;return $=d,e.charCodeAt(d)===33?(se=S,d++):(se=r,Z===0&&P(x)),se!==r?(xe=F(),xe!==r?(Se=$,se=I(xe),$=se):(d=$,$=r)):(d=$,$=r),$===r&&($=d,e.charCodeAt(d)===40?(se=T,d++):(se=r,Z===0&&P(O)),se!==r?(xe=X(),xe!==r?(Fe=y(),Fe!==r?(ut=X(),ut!==r?(e.charCodeAt(d)===41?(Ct=U,d++):(Ct=r,Z===0&&P(V)),Ct!==r?(Se=$,se=te(Fe),$=se):(d=$,$=r)):(d=$,$=r)):(d=$,$=r)):(d=$,$=r)):(d=$,$=r),$===r&&($=z())),$}function z(){var $,se,xe,Fe,ut;if($=d,se=X(),se!==r){if(xe=d,Fe=[],ie.test(e.charAt(d))?(ut=e.charAt(d),d++):(ut=r,Z===0&&P(ue)),ut!==r)for(;ut!==r;)Fe.push(ut),ie.test(e.charAt(d))?(ut=e.charAt(d),d++):(ut=r,Z===0&&P(ue));else Fe=r;Fe!==r?xe=e.substring(xe,d):xe=Fe,xe!==r?(Se=d,Fe=ae(xe),Fe?Fe=void 0:Fe=r,Fe!==r?(Se=$,se=ge(xe),$=se):(d=$,$=r)):(d=$,$=r)}else d=$,$=r;return $}function X(){var $,se;for(Z++,$=[],Ce.test(e.charAt(d))?(se=e.charAt(d),d++):(se=r,Z===0&&P(Ee));se!==r;)$.push(se),Ce.test(e.charAt(d))?(se=e.charAt(d),d++):(se=r,Z===0&&P(Ee));return Z--,$===r&&(se=r,Z===0&&P(Ae)),$}if(De=a(),De!==r&&d===e.length)return De;throw De!==r&&d{var{parse:xVe}=_ie();tk.makeParser=(e=/[a-z]+/)=>(t,r)=>xVe(t,{queryPattern:e,checkFn:r});tk.parse=tk.makeParser()});var Gie=G((lQt,jie)=>{"use strict";jie.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var T_=G((cQt,Wie)=>{var lB=Gie(),qie={};for(let e of Object.keys(lB))qie[lB[e]]=e;var hr={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};Wie.exports=hr;for(let e of Object.keys(hr)){if(!("channels"in hr[e]))throw new Error("missing channels property: "+e);if(!("labels"in hr[e]))throw new Error("missing channel labels property: "+e);if(hr[e].labels.length!==hr[e].channels)throw new Error("channel and label counts mismatch: "+e);let{channels:t,labels:r}=hr[e];delete hr[e].channels,delete hr[e].labels,Object.defineProperty(hr[e],"channels",{value:t}),Object.defineProperty(hr[e],"labels",{value:r})}hr.rgb.hsl=function(e){let t=e[0]/255,r=e[1]/255,s=e[2]/255,a=Math.min(t,r,s),n=Math.max(t,r,s),c=n-a,f,p;n===a?f=0:t===n?f=(r-s)/c:r===n?f=2+(s-t)/c:s===n&&(f=4+(t-r)/c),f=Math.min(f*60,360),f<0&&(f+=360);let h=(a+n)/2;return n===a?p=0:h<=.5?p=c/(n+a):p=c/(2-n-a),[f,p*100,h*100]};hr.rgb.hsv=function(e){let t,r,s,a,n,c=e[0]/255,f=e[1]/255,p=e[2]/255,h=Math.max(c,f,p),E=h-Math.min(c,f,p),C=function(S){return(h-S)/6/E+1/2};return E===0?(a=0,n=0):(n=E/h,t=C(c),r=C(f),s=C(p),c===h?a=s-r:f===h?a=1/3+t-s:p===h&&(a=2/3+r-t),a<0?a+=1:a>1&&(a-=1)),[a*360,n*100,h*100]};hr.rgb.hwb=function(e){let t=e[0],r=e[1],s=e[2],a=hr.rgb.hsl(e)[0],n=1/255*Math.min(t,Math.min(r,s));return s=1-1/255*Math.max(t,Math.max(r,s)),[a,n*100,s*100]};hr.rgb.cmyk=function(e){let t=e[0]/255,r=e[1]/255,s=e[2]/255,a=Math.min(1-t,1-r,1-s),n=(1-t-a)/(1-a)||0,c=(1-r-a)/(1-a)||0,f=(1-s-a)/(1-a)||0;return[n*100,c*100,f*100,a*100]};function kVe(e,t){return(e[0]-t[0])**2+(e[1]-t[1])**2+(e[2]-t[2])**2}hr.rgb.keyword=function(e){let t=qie[e];if(t)return t;let r=1/0,s;for(let a of Object.keys(lB)){let n=lB[a],c=kVe(e,n);c.04045?((t+.055)/1.055)**2.4:t/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92,s=s>.04045?((s+.055)/1.055)**2.4:s/12.92;let a=t*.4124+r*.3576+s*.1805,n=t*.2126+r*.7152+s*.0722,c=t*.0193+r*.1192+s*.9505;return[a*100,n*100,c*100]};hr.rgb.lab=function(e){let t=hr.rgb.xyz(e),r=t[0],s=t[1],a=t[2];r/=95.047,s/=100,a/=108.883,r=r>.008856?r**(1/3):7.787*r+16/116,s=s>.008856?s**(1/3):7.787*s+16/116,a=a>.008856?a**(1/3):7.787*a+16/116;let n=116*s-16,c=500*(r-s),f=200*(s-a);return[n,c,f]};hr.hsl.rgb=function(e){let t=e[0]/360,r=e[1]/100,s=e[2]/100,a,n,c;if(r===0)return c=s*255,[c,c,c];s<.5?a=s*(1+r):a=s+r-s*r;let f=2*s-a,p=[0,0,0];for(let h=0;h<3;h++)n=t+1/3*-(h-1),n<0&&n++,n>1&&n--,6*n<1?c=f+(a-f)*6*n:2*n<1?c=a:3*n<2?c=f+(a-f)*(2/3-n)*6:c=f,p[h]=c*255;return p};hr.hsl.hsv=function(e){let t=e[0],r=e[1]/100,s=e[2]/100,a=r,n=Math.max(s,.01);s*=2,r*=s<=1?s:2-s,a*=n<=1?n:2-n;let c=(s+r)/2,f=s===0?2*a/(n+a):2*r/(s+r);return[t,f*100,c*100]};hr.hsv.rgb=function(e){let t=e[0]/60,r=e[1]/100,s=e[2]/100,a=Math.floor(t)%6,n=t-Math.floor(t),c=255*s*(1-r),f=255*s*(1-r*n),p=255*s*(1-r*(1-n));switch(s*=255,a){case 0:return[s,p,c];case 1:return[f,s,c];case 2:return[c,s,p];case 3:return[c,f,s];case 4:return[p,c,s];case 5:return[s,c,f]}};hr.hsv.hsl=function(e){let t=e[0],r=e[1]/100,s=e[2]/100,a=Math.max(s,.01),n,c;c=(2-r)*s;let f=(2-r)*a;return n=r*a,n/=f<=1?f:2-f,n=n||0,c/=2,[t,n*100,c*100]};hr.hwb.rgb=function(e){let t=e[0]/360,r=e[1]/100,s=e[2]/100,a=r+s,n;a>1&&(r/=a,s/=a);let c=Math.floor(6*t),f=1-s;n=6*t-c,c&1&&(n=1-n);let p=r+n*(f-r),h,E,C;switch(c){default:case 6:case 0:h=f,E=p,C=r;break;case 1:h=p,E=f,C=r;break;case 2:h=r,E=f,C=p;break;case 3:h=r,E=p,C=f;break;case 4:h=p,E=r,C=f;break;case 5:h=f,E=r,C=p;break}return[h*255,E*255,C*255]};hr.cmyk.rgb=function(e){let t=e[0]/100,r=e[1]/100,s=e[2]/100,a=e[3]/100,n=1-Math.min(1,t*(1-a)+a),c=1-Math.min(1,r*(1-a)+a),f=1-Math.min(1,s*(1-a)+a);return[n*255,c*255,f*255]};hr.xyz.rgb=function(e){let t=e[0]/100,r=e[1]/100,s=e[2]/100,a,n,c;return a=t*3.2406+r*-1.5372+s*-.4986,n=t*-.9689+r*1.8758+s*.0415,c=t*.0557+r*-.204+s*1.057,a=a>.0031308?1.055*a**(1/2.4)-.055:a*12.92,n=n>.0031308?1.055*n**(1/2.4)-.055:n*12.92,c=c>.0031308?1.055*c**(1/2.4)-.055:c*12.92,a=Math.min(Math.max(0,a),1),n=Math.min(Math.max(0,n),1),c=Math.min(Math.max(0,c),1),[a*255,n*255,c*255]};hr.xyz.lab=function(e){let t=e[0],r=e[1],s=e[2];t/=95.047,r/=100,s/=108.883,t=t>.008856?t**(1/3):7.787*t+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,s=s>.008856?s**(1/3):7.787*s+16/116;let a=116*r-16,n=500*(t-r),c=200*(r-s);return[a,n,c]};hr.lab.xyz=function(e){let t=e[0],r=e[1],s=e[2],a,n,c;n=(t+16)/116,a=r/500+n,c=n-s/200;let f=n**3,p=a**3,h=c**3;return n=f>.008856?f:(n-16/116)/7.787,a=p>.008856?p:(a-16/116)/7.787,c=h>.008856?h:(c-16/116)/7.787,a*=95.047,n*=100,c*=108.883,[a,n,c]};hr.lab.lch=function(e){let t=e[0],r=e[1],s=e[2],a;a=Math.atan2(s,r)*360/2/Math.PI,a<0&&(a+=360);let c=Math.sqrt(r*r+s*s);return[t,c,a]};hr.lch.lab=function(e){let t=e[0],r=e[1],a=e[2]/360*2*Math.PI,n=r*Math.cos(a),c=r*Math.sin(a);return[t,n,c]};hr.rgb.ansi16=function(e,t=null){let[r,s,a]=e,n=t===null?hr.rgb.hsv(e)[2]:t;if(n=Math.round(n/50),n===0)return 30;let c=30+(Math.round(a/255)<<2|Math.round(s/255)<<1|Math.round(r/255));return n===2&&(c+=60),c};hr.hsv.ansi16=function(e){return hr.rgb.ansi16(hr.hsv.rgb(e),e[2])};hr.rgb.ansi256=function(e){let t=e[0],r=e[1],s=e[2];return t===r&&r===s?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(r/255*5)+Math.round(s/255*5)};hr.ansi16.rgb=function(e){let t=e%10;if(t===0||t===7)return e>50&&(t+=3.5),t=t/10.5*255,[t,t,t];let r=(~~(e>50)+1)*.5,s=(t&1)*r*255,a=(t>>1&1)*r*255,n=(t>>2&1)*r*255;return[s,a,n]};hr.ansi256.rgb=function(e){if(e>=232){let n=(e-232)*10+8;return[n,n,n]}e-=16;let t,r=Math.floor(e/36)/5*255,s=Math.floor((t=e%36)/6)/5*255,a=t%6/5*255;return[r,s,a]};hr.rgb.hex=function(e){let r=(((Math.round(e[0])&255)<<16)+((Math.round(e[1])&255)<<8)+(Math.round(e[2])&255)).toString(16).toUpperCase();return"000000".substring(r.length)+r};hr.hex.rgb=function(e){let t=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!t)return[0,0,0];let r=t[0];t[0].length===3&&(r=r.split("").map(f=>f+f).join(""));let s=parseInt(r,16),a=s>>16&255,n=s>>8&255,c=s&255;return[a,n,c]};hr.rgb.hcg=function(e){let t=e[0]/255,r=e[1]/255,s=e[2]/255,a=Math.max(Math.max(t,r),s),n=Math.min(Math.min(t,r),s),c=a-n,f,p;return c<1?f=n/(1-c):f=0,c<=0?p=0:a===t?p=(r-s)/c%6:a===r?p=2+(s-t)/c:p=4+(t-r)/c,p/=6,p%=1,[p*360,c*100,f*100]};hr.hsl.hcg=function(e){let t=e[1]/100,r=e[2]/100,s=r<.5?2*t*r:2*t*(1-r),a=0;return s<1&&(a=(r-.5*s)/(1-s)),[e[0],s*100,a*100]};hr.hsv.hcg=function(e){let t=e[1]/100,r=e[2]/100,s=t*r,a=0;return s<1&&(a=(r-s)/(1-s)),[e[0],s*100,a*100]};hr.hcg.rgb=function(e){let t=e[0]/360,r=e[1]/100,s=e[2]/100;if(r===0)return[s*255,s*255,s*255];let a=[0,0,0],n=t%1*6,c=n%1,f=1-c,p=0;switch(Math.floor(n)){case 0:a[0]=1,a[1]=c,a[2]=0;break;case 1:a[0]=f,a[1]=1,a[2]=0;break;case 2:a[0]=0,a[1]=1,a[2]=c;break;case 3:a[0]=0,a[1]=f,a[2]=1;break;case 4:a[0]=c,a[1]=0,a[2]=1;break;default:a[0]=1,a[1]=0,a[2]=f}return p=(1-r)*s,[(r*a[0]+p)*255,(r*a[1]+p)*255,(r*a[2]+p)*255]};hr.hcg.hsv=function(e){let t=e[1]/100,r=e[2]/100,s=t+r*(1-t),a=0;return s>0&&(a=t/s),[e[0],a*100,s*100]};hr.hcg.hsl=function(e){let t=e[1]/100,s=e[2]/100*(1-t)+.5*t,a=0;return s>0&&s<.5?a=t/(2*s):s>=.5&&s<1&&(a=t/(2*(1-s))),[e[0],a*100,s*100]};hr.hcg.hwb=function(e){let t=e[1]/100,r=e[2]/100,s=t+r*(1-t);return[e[0],(s-t)*100,(1-s)*100]};hr.hwb.hcg=function(e){let t=e[1]/100,s=1-e[2]/100,a=s-t,n=0;return a<1&&(n=(s-a)/(1-a)),[e[0],a*100,n*100]};hr.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]};hr.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]};hr.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]};hr.gray.hsl=function(e){return[0,0,e[0]]};hr.gray.hsv=hr.gray.hsl;hr.gray.hwb=function(e){return[0,100,e[0]]};hr.gray.cmyk=function(e){return[0,0,0,e[0]]};hr.gray.lab=function(e){return[e[0],0,0]};hr.gray.hex=function(e){let t=Math.round(e[0]/100*255)&255,s=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return"000000".substring(s.length)+s};hr.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]}});var Vie=G((uQt,Yie)=>{var rk=T_();function QVe(){let e={},t=Object.keys(rk);for(let r=t.length,s=0;s{var F_=T_(),NVe=Vie(),QE={},OVe=Object.keys(F_);function LVe(e){let t=function(...r){let s=r[0];return s==null?s:(s.length>1&&(r=s),e(r))};return"conversion"in e&&(t.conversion=e.conversion),t}function MVe(e){let t=function(...r){let s=r[0];if(s==null)return s;s.length>1&&(r=s);let a=e(r);if(typeof a=="object")for(let n=a.length,c=0;c{QE[e]={},Object.defineProperty(QE[e],"channels",{value:F_[e].channels}),Object.defineProperty(QE[e],"labels",{value:F_[e].labels});let t=NVe(e);Object.keys(t).forEach(s=>{let a=t[s];QE[e][s]=MVe(a),QE[e][s].raw=LVe(a)})});Jie.exports=QE});var ik=G((AQt,ese)=>{"use strict";var zie=(e,t)=>(...r)=>`\x1B[${e(...r)+t}m`,Xie=(e,t)=>(...r)=>{let s=e(...r);return`\x1B[${38+t};5;${s}m`},Zie=(e,t)=>(...r)=>{let s=e(...r);return`\x1B[${38+t};2;${s[0]};${s[1]};${s[2]}m`},nk=e=>e,$ie=(e,t,r)=>[e,t,r],RE=(e,t,r)=>{Object.defineProperty(e,t,{get:()=>{let s=r();return Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0}),s},enumerable:!0,configurable:!0})},N_,TE=(e,t,r,s)=>{N_===void 0&&(N_=Kie());let a=s?10:0,n={};for(let[c,f]of Object.entries(N_)){let p=c==="ansi16"?"ansi":c;c===t?n[p]=e(r,a):typeof f=="object"&&(n[p]=e(f[t],a))}return n};function UVe(){let e=new Map,t={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};t.color.gray=t.color.blackBright,t.bgColor.bgGray=t.bgColor.bgBlackBright,t.color.grey=t.color.blackBright,t.bgColor.bgGrey=t.bgColor.bgBlackBright;for(let[r,s]of Object.entries(t)){for(let[a,n]of Object.entries(s))t[a]={open:`\x1B[${n[0]}m`,close:`\x1B[${n[1]}m`},s[a]=t[a],e.set(n[0],n[1]);Object.defineProperty(t,r,{value:s,enumerable:!1})}return Object.defineProperty(t,"codes",{value:e,enumerable:!1}),t.color.close="\x1B[39m",t.bgColor.close="\x1B[49m",RE(t.color,"ansi",()=>TE(zie,"ansi16",nk,!1)),RE(t.color,"ansi256",()=>TE(Xie,"ansi256",nk,!1)),RE(t.color,"ansi16m",()=>TE(Zie,"rgb",$ie,!1)),RE(t.bgColor,"ansi",()=>TE(zie,"ansi16",nk,!0)),RE(t.bgColor,"ansi256",()=>TE(Xie,"ansi256",nk,!0)),RE(t.bgColor,"ansi16m",()=>TE(Zie,"rgb",$ie,!0)),t}Object.defineProperty(ese,"exports",{enumerable:!0,get:UVe})});var rse=G((pQt,tse)=>{"use strict";tse.exports=(e,t=process.argv)=>{let r=e.startsWith("-")?"":e.length===1?"-":"--",s=t.indexOf(r+e),a=t.indexOf("--");return s!==-1&&(a===-1||s{"use strict";var _Ve=Ie("os"),nse=Ie("tty"),bc=rse(),{env:Qs}=process,a0;bc("no-color")||bc("no-colors")||bc("color=false")||bc("color=never")?a0=0:(bc("color")||bc("colors")||bc("color=true")||bc("color=always"))&&(a0=1);"FORCE_COLOR"in Qs&&(Qs.FORCE_COLOR==="true"?a0=1:Qs.FORCE_COLOR==="false"?a0=0:a0=Qs.FORCE_COLOR.length===0?1:Math.min(parseInt(Qs.FORCE_COLOR,10),3));function O_(e){return e===0?!1:{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function L_(e,t){if(a0===0)return 0;if(bc("color=16m")||bc("color=full")||bc("color=truecolor"))return 3;if(bc("color=256"))return 2;if(e&&!t&&a0===void 0)return 0;let r=a0||0;if(Qs.TERM==="dumb")return r;if(process.platform==="win32"){let s=_Ve.release().split(".");return Number(s[0])>=10&&Number(s[2])>=10586?Number(s[2])>=14931?3:2:1}if("CI"in Qs)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some(s=>s in Qs)||Qs.CI_NAME==="codeship"?1:r;if("TEAMCITY_VERSION"in Qs)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(Qs.TEAMCITY_VERSION)?1:0;if("GITHUB_ACTIONS"in Qs)return 1;if(Qs.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in Qs){let s=parseInt((Qs.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(Qs.TERM_PROGRAM){case"iTerm.app":return s>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(Qs.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(Qs.TERM)||"COLORTERM"in Qs?1:r}function HVe(e){let t=L_(e,e&&e.isTTY);return O_(t)}ise.exports={supportsColor:HVe,stdout:O_(L_(!0,nse.isatty(1))),stderr:O_(L_(!0,nse.isatty(2)))}});var ase=G((dQt,ose)=>{"use strict";var jVe=(e,t,r)=>{let s=e.indexOf(t);if(s===-1)return e;let a=t.length,n=0,c="";do c+=e.substr(n,s-n)+t+r,n=s+a,s=e.indexOf(t,n);while(s!==-1);return c+=e.substr(n),c},GVe=(e,t,r,s)=>{let a=0,n="";do{let c=e[s-1]==="\r";n+=e.substr(a,(c?s-1:s)-a)+t+(c?`\r +`:` +`)+r,a=s+1,s=e.indexOf(` +`,a)}while(s!==-1);return n+=e.substr(a),n};ose.exports={stringReplaceAll:jVe,stringEncaseCRLFWithFirstIndex:GVe}});var Ase=G((gQt,fse)=>{"use strict";var qVe=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,lse=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,WVe=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,YVe=/\\(u(?:[a-f\d]{4}|{[a-f\d]{1,6}})|x[a-f\d]{2}|.)|([^\\])/gi,VVe=new Map([["n",` +`],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e","\x1B"],["a","\x07"]]);function use(e){let t=e[0]==="u",r=e[1]==="{";return t&&!r&&e.length===5||e[0]==="x"&&e.length===3?String.fromCharCode(parseInt(e.slice(1),16)):t&&r?String.fromCodePoint(parseInt(e.slice(2,-1),16)):VVe.get(e)||e}function JVe(e,t){let r=[],s=t.trim().split(/\s*,\s*/g),a;for(let n of s){let c=Number(n);if(!Number.isNaN(c))r.push(c);else if(a=n.match(WVe))r.push(a[2].replace(YVe,(f,p,h)=>p?use(p):h));else throw new Error(`Invalid Chalk template style argument: ${n} (in style '${e}')`)}return r}function KVe(e){lse.lastIndex=0;let t=[],r;for(;(r=lse.exec(e))!==null;){let s=r[1];if(r[2]){let a=JVe(s,r[2]);t.push([s].concat(a))}else t.push([s])}return t}function cse(e,t){let r={};for(let a of t)for(let n of a.styles)r[n[0]]=a.inverse?null:n.slice(1);let s=e;for(let[a,n]of Object.entries(r))if(Array.isArray(n)){if(!(a in s))throw new Error(`Unknown Chalk style: ${a}`);s=n.length>0?s[a](...n):s[a]}return s}fse.exports=(e,t)=>{let r=[],s=[],a=[];if(t.replace(qVe,(n,c,f,p,h,E)=>{if(c)a.push(use(c));else if(p){let C=a.join("");a=[],s.push(r.length===0?C:cse(e,r)(C)),r.push({inverse:f,styles:KVe(p)})}else if(h){if(r.length===0)throw new Error("Found extraneous } in Chalk template literal");s.push(cse(e,r)(a.join(""))),a=[],r.pop()}else a.push(E)}),s.push(a.join("")),r.length>0){let n=`Chalk template literal is missing ${r.length} closing bracket${r.length===1?"":"s"} (\`}\`)`;throw new Error(n)}return s.join("")}});var NE=G((mQt,yse)=>{"use strict";var cB=ik(),{stdout:U_,stderr:__}=sse(),{stringReplaceAll:zVe,stringEncaseCRLFWithFirstIndex:XVe}=ase(),{isArray:sk}=Array,hse=["ansi","ansi","ansi256","ansi16m"],FE=Object.create(null),ZVe=(e,t={})=>{if(t.level&&!(Number.isInteger(t.level)&&t.level>=0&&t.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let r=U_?U_.level:0;e.level=t.level===void 0?r:t.level},H_=class{constructor(t){return dse(t)}},dse=e=>{let t={};return ZVe(t,e),t.template=(...r)=>mse(t.template,...r),Object.setPrototypeOf(t,ok.prototype),Object.setPrototypeOf(t.template,t),t.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},t.template.Instance=H_,t.template};function ok(e){return dse(e)}for(let[e,t]of Object.entries(cB))FE[e]={get(){let r=ak(this,j_(t.open,t.close,this._styler),this._isEmpty);return Object.defineProperty(this,e,{value:r}),r}};FE.visible={get(){let e=ak(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:e}),e}};var gse=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(let e of gse)FE[e]={get(){let{level:t}=this;return function(...r){let s=j_(cB.color[hse[t]][e](...r),cB.color.close,this._styler);return ak(this,s,this._isEmpty)}}};for(let e of gse){let t="bg"+e[0].toUpperCase()+e.slice(1);FE[t]={get(){let{level:r}=this;return function(...s){let a=j_(cB.bgColor[hse[r]][e](...s),cB.bgColor.close,this._styler);return ak(this,a,this._isEmpty)}}}}var $Ve=Object.defineProperties(()=>{},{...FE,level:{enumerable:!0,get(){return this._generator.level},set(e){this._generator.level=e}}}),j_=(e,t,r)=>{let s,a;return r===void 0?(s=e,a=t):(s=r.openAll+e,a=t+r.closeAll),{open:e,close:t,openAll:s,closeAll:a,parent:r}},ak=(e,t,r)=>{let s=(...a)=>sk(a[0])&&sk(a[0].raw)?pse(s,mse(s,...a)):pse(s,a.length===1?""+a[0]:a.join(" "));return Object.setPrototypeOf(s,$Ve),s._generator=e,s._styler=t,s._isEmpty=r,s},pse=(e,t)=>{if(e.level<=0||!t)return e._isEmpty?"":t;let r=e._styler;if(r===void 0)return t;let{openAll:s,closeAll:a}=r;if(t.indexOf("\x1B")!==-1)for(;r!==void 0;)t=zVe(t,r.close,r.open),r=r.parent;let n=t.indexOf(` +`);return n!==-1&&(t=XVe(t,a,s,n)),s+t+a},M_,mse=(e,...t)=>{let[r]=t;if(!sk(r)||!sk(r.raw))return t.join(" ");let s=t.slice(1),a=[r.raw[0]];for(let n=1;n{"use strict";Pc.isInteger=e=>typeof e=="number"?Number.isInteger(e):typeof e=="string"&&e.trim()!==""?Number.isInteger(Number(e)):!1;Pc.find=(e,t)=>e.nodes.find(r=>r.type===t);Pc.exceedsLimit=(e,t,r=1,s)=>s===!1||!Pc.isInteger(e)||!Pc.isInteger(t)?!1:(Number(t)-Number(e))/Number(r)>=s;Pc.escapeNode=(e,t=0,r)=>{let s=e.nodes[t];s&&(r&&s.type===r||s.type==="open"||s.type==="close")&&s.escaped!==!0&&(s.value="\\"+s.value,s.escaped=!0)};Pc.encloseBrace=e=>e.type!=="brace"||e.commas>>0+e.ranges>>0?!1:(e.invalid=!0,!0);Pc.isInvalidBrace=e=>e.type!=="brace"?!1:e.invalid===!0||e.dollar?!0:!(e.commas>>0+e.ranges>>0)||e.open!==!0||e.close!==!0?(e.invalid=!0,!0):!1;Pc.isOpenOrClose=e=>e.type==="open"||e.type==="close"?!0:e.open===!0||e.close===!0;Pc.reduce=e=>e.reduce((t,r)=>(r.type==="text"&&t.push(r.value),r.type==="range"&&(r.type="text"),t),[]);Pc.flatten=(...e)=>{let t=[],r=s=>{for(let a=0;a{"use strict";var Ese=ck();Ise.exports=(e,t={})=>{let r=(s,a={})=>{let n=t.escapeInvalid&&Ese.isInvalidBrace(a),c=s.invalid===!0&&t.escapeInvalid===!0,f="";if(s.value)return(n||c)&&Ese.isOpenOrClose(s)?"\\"+s.value:s.value;if(s.value)return s.value;if(s.nodes)for(let p of s.nodes)f+=r(p);return f};return r(e)}});var wse=G((IQt,Cse)=>{"use strict";Cse.exports=function(e){return typeof e=="number"?e-e===0:typeof e=="string"&&e.trim()!==""?Number.isFinite?Number.isFinite(+e):isFinite(+e):!1}});var Qse=G((CQt,kse)=>{"use strict";var Bse=wse(),Hg=(e,t,r)=>{if(Bse(e)===!1)throw new TypeError("toRegexRange: expected the first argument to be a number");if(t===void 0||e===t)return String(e);if(Bse(t)===!1)throw new TypeError("toRegexRange: expected the second argument to be a number.");let s={relaxZeros:!0,...r};typeof s.strictZeros=="boolean"&&(s.relaxZeros=s.strictZeros===!1);let a=String(s.relaxZeros),n=String(s.shorthand),c=String(s.capture),f=String(s.wrap),p=e+":"+t+"="+a+n+c+f;if(Hg.cache.hasOwnProperty(p))return Hg.cache[p].result;let h=Math.min(e,t),E=Math.max(e,t);if(Math.abs(h-E)===1){let T=e+"|"+t;return s.capture?`(${T})`:s.wrap===!1?T:`(?:${T})`}let C=xse(e)||xse(t),S={min:e,max:t,a:h,b:E},x=[],I=[];if(C&&(S.isPadded=C,S.maxLen=String(S.max).length),h<0){let T=E<0?Math.abs(E):1;I=vse(T,Math.abs(h),S,s),h=S.a=0}return E>=0&&(x=vse(h,E,S,s)),S.negatives=I,S.positives=x,S.result=e7e(I,x,s),s.capture===!0?S.result=`(${S.result})`:s.wrap!==!1&&x.length+I.length>1&&(S.result=`(?:${S.result})`),Hg.cache[p]=S,S.result};function e7e(e,t,r){let s=G_(e,t,"-",!1,r)||[],a=G_(t,e,"",!1,r)||[],n=G_(e,t,"-?",!0,r)||[];return s.concat(n).concat(a).join("|")}function t7e(e,t){let r=1,s=1,a=Dse(e,r),n=new Set([t]);for(;e<=a&&a<=t;)n.add(a),r+=1,a=Dse(e,r);for(a=bse(t+1,s)-1;e1&&f.count.pop(),f.count.push(E.count[0]),f.string=f.pattern+Pse(f.count),c=h+1;continue}r.isPadded&&(C=o7e(h,r,s)),E.string=C+E.pattern+Pse(E.count),n.push(E),c=h+1,f=E}return n}function G_(e,t,r,s,a){let n=[];for(let c of e){let{string:f}=c;!s&&!Sse(t,"string",f)&&n.push(r+f),s&&Sse(t,"string",f)&&n.push(r+f)}return n}function n7e(e,t){let r=[];for(let s=0;st?1:t>e?-1:0}function Sse(e,t,r){return e.some(s=>s[t]===r)}function Dse(e,t){return Number(String(e).slice(0,-t)+"9".repeat(t))}function bse(e,t){return e-e%Math.pow(10,t)}function Pse(e){let[t=0,r=""]=e;return r||t>1?`{${t+(r?","+r:"")}}`:""}function s7e(e,t,r){return`[${e}${t-e===1?"":"-"}${t}]`}function xse(e){return/^-?(0+)\d/.test(e)}function o7e(e,t,r){if(!t.isPadded)return e;let s=Math.abs(t.maxLen-String(e).length),a=r.relaxZeros!==!1;switch(s){case 0:return"";case 1:return a?"0?":"0";case 2:return a?"0{0,2}":"00";default:return a?`0{0,${s}}`:`0{${s}}`}}Hg.cache={};Hg.clearCache=()=>Hg.cache={};kse.exports=Hg});var Y_=G((wQt,Use)=>{"use strict";var a7e=Ie("util"),Fse=Qse(),Rse=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),l7e=e=>t=>e===!0?Number(t):String(t),q_=e=>typeof e=="number"||typeof e=="string"&&e!=="",uB=e=>Number.isInteger(+e),W_=e=>{let t=`${e}`,r=-1;if(t[0]==="-"&&(t=t.slice(1)),t==="0")return!1;for(;t[++r]==="0";);return r>0},c7e=(e,t,r)=>typeof e=="string"||typeof t=="string"?!0:r.stringify===!0,u7e=(e,t,r)=>{if(t>0){let s=e[0]==="-"?"-":"";s&&(e=e.slice(1)),e=s+e.padStart(s?t-1:t,"0")}return r===!1?String(e):e},Tse=(e,t)=>{let r=e[0]==="-"?"-":"";for(r&&(e=e.slice(1),t--);e.length{e.negatives.sort((c,f)=>cf?1:0),e.positives.sort((c,f)=>cf?1:0);let r=t.capture?"":"?:",s="",a="",n;return e.positives.length&&(s=e.positives.join("|")),e.negatives.length&&(a=`-(${r}${e.negatives.join("|")})`),s&&a?n=`${s}|${a}`:n=s||a,t.wrap?`(${r}${n})`:n},Nse=(e,t,r,s)=>{if(r)return Fse(e,t,{wrap:!1,...s});let a=String.fromCharCode(e);if(e===t)return a;let n=String.fromCharCode(t);return`[${a}-${n}]`},Ose=(e,t,r)=>{if(Array.isArray(e)){let s=r.wrap===!0,a=r.capture?"":"?:";return s?`(${a}${e.join("|")})`:e.join("|")}return Fse(e,t,r)},Lse=(...e)=>new RangeError("Invalid range arguments: "+a7e.inspect(...e)),Mse=(e,t,r)=>{if(r.strictRanges===!0)throw Lse([e,t]);return[]},A7e=(e,t)=>{if(t.strictRanges===!0)throw new TypeError(`Expected step "${e}" to be a number`);return[]},p7e=(e,t,r=1,s={})=>{let a=Number(e),n=Number(t);if(!Number.isInteger(a)||!Number.isInteger(n)){if(s.strictRanges===!0)throw Lse([e,t]);return[]}a===0&&(a=0),n===0&&(n=0);let c=a>n,f=String(e),p=String(t),h=String(r);r=Math.max(Math.abs(r),1);let E=W_(f)||W_(p)||W_(h),C=E?Math.max(f.length,p.length,h.length):0,S=E===!1&&c7e(e,t,s)===!1,x=s.transform||l7e(S);if(s.toRegex&&r===1)return Nse(Tse(e,C),Tse(t,C),!0,s);let I={negatives:[],positives:[]},T=V=>I[V<0?"negatives":"positives"].push(Math.abs(V)),O=[],U=0;for(;c?a>=n:a<=n;)s.toRegex===!0&&r>1?T(a):O.push(u7e(x(a,U),C,S)),a=c?a-r:a+r,U++;return s.toRegex===!0?r>1?f7e(I,s):Ose(O,null,{wrap:!1,...s}):O},h7e=(e,t,r=1,s={})=>{if(!uB(e)&&e.length>1||!uB(t)&&t.length>1)return Mse(e,t,s);let a=s.transform||(S=>String.fromCharCode(S)),n=`${e}`.charCodeAt(0),c=`${t}`.charCodeAt(0),f=n>c,p=Math.min(n,c),h=Math.max(n,c);if(s.toRegex&&r===1)return Nse(p,h,!1,s);let E=[],C=0;for(;f?n>=c:n<=c;)E.push(a(n,C)),n=f?n-r:n+r,C++;return s.toRegex===!0?Ose(E,null,{wrap:!1,options:s}):E},fk=(e,t,r,s={})=>{if(t==null&&q_(e))return[e];if(!q_(e)||!q_(t))return Mse(e,t,s);if(typeof r=="function")return fk(e,t,1,{transform:r});if(Rse(r))return fk(e,t,0,r);let a={...s};return a.capture===!0&&(a.wrap=!0),r=r||a.step||1,uB(r)?uB(e)&&uB(t)?p7e(e,t,r,a):h7e(e,t,Math.max(Math.abs(r),1),a):r!=null&&!Rse(r)?A7e(r,a):fk(e,t,1,r)};Use.exports=fk});var jse=G((BQt,Hse)=>{"use strict";var d7e=Y_(),_se=ck(),g7e=(e,t={})=>{let r=(s,a={})=>{let n=_se.isInvalidBrace(a),c=s.invalid===!0&&t.escapeInvalid===!0,f=n===!0||c===!0,p=t.escapeInvalid===!0?"\\":"",h="";if(s.isOpen===!0||s.isClose===!0)return p+s.value;if(s.type==="open")return f?p+s.value:"(";if(s.type==="close")return f?p+s.value:")";if(s.type==="comma")return s.prev.type==="comma"?"":f?s.value:"|";if(s.value)return s.value;if(s.nodes&&s.ranges>0){let E=_se.reduce(s.nodes),C=d7e(...E,{...t,wrap:!1,toRegex:!0});if(C.length!==0)return E.length>1&&C.length>1?`(${C})`:C}if(s.nodes)for(let E of s.nodes)h+=r(E,s);return h};return r(e)};Hse.exports=g7e});var Wse=G((vQt,qse)=>{"use strict";var m7e=Y_(),Gse=uk(),OE=ck(),jg=(e="",t="",r=!1)=>{let s=[];if(e=[].concat(e),t=[].concat(t),!t.length)return e;if(!e.length)return r?OE.flatten(t).map(a=>`{${a}}`):t;for(let a of e)if(Array.isArray(a))for(let n of a)s.push(jg(n,t,r));else for(let n of t)r===!0&&typeof n=="string"&&(n=`{${n}}`),s.push(Array.isArray(n)?jg(a,n,r):a+n);return OE.flatten(s)},y7e=(e,t={})=>{let r=t.rangeLimit===void 0?1e3:t.rangeLimit,s=(a,n={})=>{a.queue=[];let c=n,f=n.queue;for(;c.type!=="brace"&&c.type!=="root"&&c.parent;)c=c.parent,f=c.queue;if(a.invalid||a.dollar){f.push(jg(f.pop(),Gse(a,t)));return}if(a.type==="brace"&&a.invalid!==!0&&a.nodes.length===2){f.push(jg(f.pop(),["{}"]));return}if(a.nodes&&a.ranges>0){let C=OE.reduce(a.nodes);if(OE.exceedsLimit(...C,t.step,r))throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.");let S=m7e(...C,t);S.length===0&&(S=Gse(a,t)),f.push(jg(f.pop(),S)),a.nodes=[];return}let p=OE.encloseBrace(a),h=a.queue,E=a;for(;E.type!=="brace"&&E.type!=="root"&&E.parent;)E=E.parent,h=E.queue;for(let C=0;C{"use strict";Yse.exports={MAX_LENGTH:1024*64,CHAR_0:"0",CHAR_9:"9",CHAR_UPPERCASE_A:"A",CHAR_LOWERCASE_A:"a",CHAR_UPPERCASE_Z:"Z",CHAR_LOWERCASE_Z:"z",CHAR_LEFT_PARENTHESES:"(",CHAR_RIGHT_PARENTHESES:")",CHAR_ASTERISK:"*",CHAR_AMPERSAND:"&",CHAR_AT:"@",CHAR_BACKSLASH:"\\",CHAR_BACKTICK:"`",CHAR_CARRIAGE_RETURN:"\r",CHAR_CIRCUMFLEX_ACCENT:"^",CHAR_COLON:":",CHAR_COMMA:",",CHAR_DOLLAR:"$",CHAR_DOT:".",CHAR_DOUBLE_QUOTE:'"',CHAR_EQUAL:"=",CHAR_EXCLAMATION_MARK:"!",CHAR_FORM_FEED:"\f",CHAR_FORWARD_SLASH:"/",CHAR_HASH:"#",CHAR_HYPHEN_MINUS:"-",CHAR_LEFT_ANGLE_BRACKET:"<",CHAR_LEFT_CURLY_BRACE:"{",CHAR_LEFT_SQUARE_BRACKET:"[",CHAR_LINE_FEED:` +`,CHAR_NO_BREAK_SPACE:"\xA0",CHAR_PERCENT:"%",CHAR_PLUS:"+",CHAR_QUESTION_MARK:"?",CHAR_RIGHT_ANGLE_BRACKET:">",CHAR_RIGHT_CURLY_BRACE:"}",CHAR_RIGHT_SQUARE_BRACKET:"]",CHAR_SEMICOLON:";",CHAR_SINGLE_QUOTE:"'",CHAR_SPACE:" ",CHAR_TAB:" ",CHAR_UNDERSCORE:"_",CHAR_VERTICAL_LINE:"|",CHAR_ZERO_WIDTH_NOBREAK_SPACE:"\uFEFF"}});var Zse=G((DQt,Xse)=>{"use strict";var E7e=uk(),{MAX_LENGTH:Jse,CHAR_BACKSLASH:V_,CHAR_BACKTICK:I7e,CHAR_COMMA:C7e,CHAR_DOT:w7e,CHAR_LEFT_PARENTHESES:B7e,CHAR_RIGHT_PARENTHESES:v7e,CHAR_LEFT_CURLY_BRACE:S7e,CHAR_RIGHT_CURLY_BRACE:D7e,CHAR_LEFT_SQUARE_BRACKET:Kse,CHAR_RIGHT_SQUARE_BRACKET:zse,CHAR_DOUBLE_QUOTE:b7e,CHAR_SINGLE_QUOTE:P7e,CHAR_NO_BREAK_SPACE:x7e,CHAR_ZERO_WIDTH_NOBREAK_SPACE:k7e}=Vse(),Q7e=(e,t={})=>{if(typeof e!="string")throw new TypeError("Expected a string");let r=t||{},s=typeof r.maxLength=="number"?Math.min(Jse,r.maxLength):Jse;if(e.length>s)throw new SyntaxError(`Input length (${e.length}), exceeds max characters (${s})`);let a={type:"root",input:e,nodes:[]},n=[a],c=a,f=a,p=0,h=e.length,E=0,C=0,S,x={},I=()=>e[E++],T=O=>{if(O.type==="text"&&f.type==="dot"&&(f.type="text"),f&&f.type==="text"&&O.type==="text"){f.value+=O.value;return}return c.nodes.push(O),O.parent=c,O.prev=f,f=O,O};for(T({type:"bos"});E0){if(c.ranges>0){c.ranges=0;let O=c.nodes.shift();c.nodes=[O,{type:"text",value:E7e(c)}]}T({type:"comma",value:S}),c.commas++;continue}if(S===w7e&&C>0&&c.commas===0){let O=c.nodes;if(C===0||O.length===0){T({type:"text",value:S});continue}if(f.type==="dot"){if(c.range=[],f.value+=S,f.type="range",c.nodes.length!==3&&c.nodes.length!==5){c.invalid=!0,c.ranges=0,f.type="text";continue}c.ranges++,c.args=[];continue}if(f.type==="range"){O.pop();let U=O[O.length-1];U.value+=f.value+S,f=U,c.ranges--;continue}T({type:"dot",value:S});continue}T({type:"text",value:S})}do if(c=n.pop(),c.type!=="root"){c.nodes.forEach(V=>{V.nodes||(V.type==="open"&&(V.isOpen=!0),V.type==="close"&&(V.isClose=!0),V.nodes||(V.type="text"),V.invalid=!0)});let O=n[n.length-1],U=O.nodes.indexOf(c);O.nodes.splice(U,1,...c.nodes)}while(n.length>0);return T({type:"eos"}),a};Xse.exports=Q7e});var toe=G((bQt,eoe)=>{"use strict";var $se=uk(),R7e=jse(),T7e=Wse(),F7e=Zse(),Jl=(e,t={})=>{let r=[];if(Array.isArray(e))for(let s of e){let a=Jl.create(s,t);Array.isArray(a)?r.push(...a):r.push(a)}else r=[].concat(Jl.create(e,t));return t&&t.expand===!0&&t.nodupes===!0&&(r=[...new Set(r)]),r};Jl.parse=(e,t={})=>F7e(e,t);Jl.stringify=(e,t={})=>$se(typeof e=="string"?Jl.parse(e,t):e,t);Jl.compile=(e,t={})=>(typeof e=="string"&&(e=Jl.parse(e,t)),R7e(e,t));Jl.expand=(e,t={})=>{typeof e=="string"&&(e=Jl.parse(e,t));let r=T7e(e,t);return t.noempty===!0&&(r=r.filter(Boolean)),t.nodupes===!0&&(r=[...new Set(r)]),r};Jl.create=(e,t={})=>e===""||e.length<3?[e]:t.expand!==!0?Jl.compile(e,t):Jl.expand(e,t);eoe.exports=Jl});var fB=G((PQt,ooe)=>{"use strict";var N7e=Ie("path"),zf="\\\\/",roe=`[^${zf}]`,Pp="\\.",O7e="\\+",L7e="\\?",Ak="\\/",M7e="(?=.)",noe="[^/]",J_=`(?:${Ak}|$)`,ioe=`(?:^|${Ak})`,K_=`${Pp}{1,2}${J_}`,U7e=`(?!${Pp})`,_7e=`(?!${ioe}${K_})`,H7e=`(?!${Pp}{0,1}${J_})`,j7e=`(?!${K_})`,G7e=`[^.${Ak}]`,q7e=`${noe}*?`,soe={DOT_LITERAL:Pp,PLUS_LITERAL:O7e,QMARK_LITERAL:L7e,SLASH_LITERAL:Ak,ONE_CHAR:M7e,QMARK:noe,END_ANCHOR:J_,DOTS_SLASH:K_,NO_DOT:U7e,NO_DOTS:_7e,NO_DOT_SLASH:H7e,NO_DOTS_SLASH:j7e,QMARK_NO_DOT:G7e,STAR:q7e,START_ANCHOR:ioe},W7e={...soe,SLASH_LITERAL:`[${zf}]`,QMARK:roe,STAR:`${roe}*?`,DOTS_SLASH:`${Pp}{1,2}(?:[${zf}]|$)`,NO_DOT:`(?!${Pp})`,NO_DOTS:`(?!(?:^|[${zf}])${Pp}{1,2}(?:[${zf}]|$))`,NO_DOT_SLASH:`(?!${Pp}{0,1}(?:[${zf}]|$))`,NO_DOTS_SLASH:`(?!${Pp}{1,2}(?:[${zf}]|$))`,QMARK_NO_DOT:`[^.${zf}]`,START_ANCHOR:`(?:^|[${zf}])`,END_ANCHOR:`(?:[${zf}]|$)`},Y7e={alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"};ooe.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:Y7e,REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:N7e.sep,extglobChars(e){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${e.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}},globChars(e){return e===!0?W7e:soe}}});var AB=G(dl=>{"use strict";var V7e=Ie("path"),J7e=process.platform==="win32",{REGEX_BACKSLASH:K7e,REGEX_REMOVE_BACKSLASH:z7e,REGEX_SPECIAL_CHARS:X7e,REGEX_SPECIAL_CHARS_GLOBAL:Z7e}=fB();dl.isObject=e=>e!==null&&typeof e=="object"&&!Array.isArray(e);dl.hasRegexChars=e=>X7e.test(e);dl.isRegexChar=e=>e.length===1&&dl.hasRegexChars(e);dl.escapeRegex=e=>e.replace(Z7e,"\\$1");dl.toPosixSlashes=e=>e.replace(K7e,"/");dl.removeBackslashes=e=>e.replace(z7e,t=>t==="\\"?"":t);dl.supportsLookbehinds=()=>{let e=process.version.slice(1).split(".").map(Number);return e.length===3&&e[0]>=9||e[0]===8&&e[1]>=10};dl.isWindows=e=>e&&typeof e.windows=="boolean"?e.windows:J7e===!0||V7e.sep==="\\";dl.escapeLast=(e,t,r)=>{let s=e.lastIndexOf(t,r);return s===-1?e:e[s-1]==="\\"?dl.escapeLast(e,t,s-1):`${e.slice(0,s)}\\${e.slice(s)}`};dl.removePrefix=(e,t={})=>{let r=e;return r.startsWith("./")&&(r=r.slice(2),t.prefix="./"),r};dl.wrapOutput=(e,t={},r={})=>{let s=r.contains?"":"^",a=r.contains?"":"$",n=`${s}(?:${e})${a}`;return t.negated===!0&&(n=`(?:^(?!${n}).*$)`),n}});var hoe=G((kQt,poe)=>{"use strict";var aoe=AB(),{CHAR_ASTERISK:z_,CHAR_AT:$7e,CHAR_BACKWARD_SLASH:pB,CHAR_COMMA:eJe,CHAR_DOT:X_,CHAR_EXCLAMATION_MARK:Z_,CHAR_FORWARD_SLASH:Aoe,CHAR_LEFT_CURLY_BRACE:$_,CHAR_LEFT_PARENTHESES:e4,CHAR_LEFT_SQUARE_BRACKET:tJe,CHAR_PLUS:rJe,CHAR_QUESTION_MARK:loe,CHAR_RIGHT_CURLY_BRACE:nJe,CHAR_RIGHT_PARENTHESES:coe,CHAR_RIGHT_SQUARE_BRACKET:iJe}=fB(),uoe=e=>e===Aoe||e===pB,foe=e=>{e.isPrefix!==!0&&(e.depth=e.isGlobstar?1/0:1)},sJe=(e,t)=>{let r=t||{},s=e.length-1,a=r.parts===!0||r.scanToEnd===!0,n=[],c=[],f=[],p=e,h=-1,E=0,C=0,S=!1,x=!1,I=!1,T=!1,O=!1,U=!1,V=!1,te=!1,ie=!1,ue=!1,ae=0,ge,Ae,Ce={value:"",depth:0,isGlob:!1},Ee=()=>h>=s,d=()=>p.charCodeAt(h+1),Se=()=>(ge=Ae,p.charCodeAt(++h));for(;h0&&(me=p.slice(0,E),p=p.slice(E),C-=E),Be&&I===!0&&C>0?(Be=p.slice(0,C),ce=p.slice(C)):I===!0?(Be="",ce=p):Be=p,Be&&Be!==""&&Be!=="/"&&Be!==p&&uoe(Be.charCodeAt(Be.length-1))&&(Be=Be.slice(0,-1)),r.unescape===!0&&(ce&&(ce=aoe.removeBackslashes(ce)),Be&&V===!0&&(Be=aoe.removeBackslashes(Be)));let Z={prefix:me,input:e,start:E,base:Be,glob:ce,isBrace:S,isBracket:x,isGlob:I,isExtglob:T,isGlobstar:O,negated:te,negatedExtglob:ie};if(r.tokens===!0&&(Z.maxDepth=0,uoe(Ae)||c.push(Ce),Z.tokens=c),r.parts===!0||r.tokens===!0){let De;for(let Qe=0;Qe{"use strict";var pk=fB(),Kl=AB(),{MAX_LENGTH:hk,POSIX_REGEX_SOURCE:oJe,REGEX_NON_SPECIAL_CHARS:aJe,REGEX_SPECIAL_CHARS_BACKREF:lJe,REPLACEMENTS:doe}=pk,cJe=(e,t)=>{if(typeof t.expandRange=="function")return t.expandRange(...e,t);e.sort();let r=`[${e.join("-")}]`;try{new RegExp(r)}catch{return e.map(a=>Kl.escapeRegex(a)).join("..")}return r},LE=(e,t)=>`Missing ${e}: "${t}" - use "\\\\${t}" to match literal characters`,t4=(e,t)=>{if(typeof e!="string")throw new TypeError("Expected a string");e=doe[e]||e;let r={...t},s=typeof r.maxLength=="number"?Math.min(hk,r.maxLength):hk,a=e.length;if(a>s)throw new SyntaxError(`Input length: ${a}, exceeds maximum allowed length: ${s}`);let n={type:"bos",value:"",output:r.prepend||""},c=[n],f=r.capture?"":"?:",p=Kl.isWindows(t),h=pk.globChars(p),E=pk.extglobChars(h),{DOT_LITERAL:C,PLUS_LITERAL:S,SLASH_LITERAL:x,ONE_CHAR:I,DOTS_SLASH:T,NO_DOT:O,NO_DOT_SLASH:U,NO_DOTS_SLASH:V,QMARK:te,QMARK_NO_DOT:ie,STAR:ue,START_ANCHOR:ae}=h,ge=P=>`(${f}(?:(?!${ae}${P.dot?T:C}).)*?)`,Ae=r.dot?"":O,Ce=r.dot?te:ie,Ee=r.bash===!0?ge(r):ue;r.capture&&(Ee=`(${Ee})`),typeof r.noext=="boolean"&&(r.noextglob=r.noext);let d={input:e,index:-1,start:0,dot:r.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:c};e=Kl.removePrefix(e,d),a=e.length;let Se=[],Be=[],me=[],ce=n,Z,De=()=>d.index===a-1,Qe=d.peek=(P=1)=>e[d.index+P],st=d.advance=()=>e[++d.index]||"",_=()=>e.slice(d.index+1),tt=(P="",w=0)=>{d.consumed+=P,d.index+=w},Ne=P=>{d.output+=P.output!=null?P.output:P.value,tt(P.value)},ke=()=>{let P=1;for(;Qe()==="!"&&(Qe(2)!=="("||Qe(3)==="?");)st(),d.start++,P++;return P%2===0?!1:(d.negated=!0,d.start++,!0)},be=P=>{d[P]++,me.push(P)},je=P=>{d[P]--,me.pop()},Re=P=>{if(ce.type==="globstar"){let w=d.braces>0&&(P.type==="comma"||P.type==="brace"),b=P.extglob===!0||Se.length&&(P.type==="pipe"||P.type==="paren");P.type!=="slash"&&P.type!=="paren"&&!w&&!b&&(d.output=d.output.slice(0,-ce.output.length),ce.type="star",ce.value="*",ce.output=Ee,d.output+=ce.output)}if(Se.length&&P.type!=="paren"&&(Se[Se.length-1].inner+=P.value),(P.value||P.output)&&Ne(P),ce&&ce.type==="text"&&P.type==="text"){ce.value+=P.value,ce.output=(ce.output||"")+P.value;return}P.prev=ce,c.push(P),ce=P},ct=(P,w)=>{let b={...E[w],conditions:1,inner:""};b.prev=ce,b.parens=d.parens,b.output=d.output;let y=(r.capture?"(":"")+b.open;be("parens"),Re({type:P,value:w,output:d.output?"":I}),Re({type:"paren",extglob:!0,value:st(),output:y}),Se.push(b)},Me=P=>{let w=P.close+(r.capture?")":""),b;if(P.type==="negate"){let y=Ee;if(P.inner&&P.inner.length>1&&P.inner.includes("/")&&(y=ge(r)),(y!==Ee||De()||/^\)+$/.test(_()))&&(w=P.close=`)$))${y}`),P.inner.includes("*")&&(b=_())&&/^\.[^\\/.]+$/.test(b)){let F=t4(b,{...t,fastpaths:!1}).output;w=P.close=`)${F})${y})`}P.prev.type==="bos"&&(d.negatedExtglob=!0)}Re({type:"paren",extglob:!0,value:Z,output:w}),je("parens")};if(r.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(e)){let P=!1,w=e.replace(lJe,(b,y,F,z,X,$)=>z==="\\"?(P=!0,b):z==="?"?y?y+z+(X?te.repeat(X.length):""):$===0?Ce+(X?te.repeat(X.length):""):te.repeat(F.length):z==="."?C.repeat(F.length):z==="*"?y?y+z+(X?Ee:""):Ee:y?b:`\\${b}`);return P===!0&&(r.unescape===!0?w=w.replace(/\\/g,""):w=w.replace(/\\+/g,b=>b.length%2===0?"\\\\":b?"\\":"")),w===e&&r.contains===!0?(d.output=e,d):(d.output=Kl.wrapOutput(w,d,t),d)}for(;!De();){if(Z=st(),Z==="\0")continue;if(Z==="\\"){let b=Qe();if(b==="/"&&r.bash!==!0||b==="."||b===";")continue;if(!b){Z+="\\",Re({type:"text",value:Z});continue}let y=/^\\+/.exec(_()),F=0;if(y&&y[0].length>2&&(F=y[0].length,d.index+=F,F%2!==0&&(Z+="\\")),r.unescape===!0?Z=st():Z+=st(),d.brackets===0){Re({type:"text",value:Z});continue}}if(d.brackets>0&&(Z!=="]"||ce.value==="["||ce.value==="[^")){if(r.posix!==!1&&Z===":"){let b=ce.value.slice(1);if(b.includes("[")&&(ce.posix=!0,b.includes(":"))){let y=ce.value.lastIndexOf("["),F=ce.value.slice(0,y),z=ce.value.slice(y+2),X=oJe[z];if(X){ce.value=F+X,d.backtrack=!0,st(),!n.output&&c.indexOf(ce)===1&&(n.output=I);continue}}}(Z==="["&&Qe()!==":"||Z==="-"&&Qe()==="]")&&(Z=`\\${Z}`),Z==="]"&&(ce.value==="["||ce.value==="[^")&&(Z=`\\${Z}`),r.posix===!0&&Z==="!"&&ce.value==="["&&(Z="^"),ce.value+=Z,Ne({value:Z});continue}if(d.quotes===1&&Z!=='"'){Z=Kl.escapeRegex(Z),ce.value+=Z,Ne({value:Z});continue}if(Z==='"'){d.quotes=d.quotes===1?0:1,r.keepQuotes===!0&&Re({type:"text",value:Z});continue}if(Z==="("){be("parens"),Re({type:"paren",value:Z});continue}if(Z===")"){if(d.parens===0&&r.strictBrackets===!0)throw new SyntaxError(LE("opening","("));let b=Se[Se.length-1];if(b&&d.parens===b.parens+1){Me(Se.pop());continue}Re({type:"paren",value:Z,output:d.parens?")":"\\)"}),je("parens");continue}if(Z==="["){if(r.nobracket===!0||!_().includes("]")){if(r.nobracket!==!0&&r.strictBrackets===!0)throw new SyntaxError(LE("closing","]"));Z=`\\${Z}`}else be("brackets");Re({type:"bracket",value:Z});continue}if(Z==="]"){if(r.nobracket===!0||ce&&ce.type==="bracket"&&ce.value.length===1){Re({type:"text",value:Z,output:`\\${Z}`});continue}if(d.brackets===0){if(r.strictBrackets===!0)throw new SyntaxError(LE("opening","["));Re({type:"text",value:Z,output:`\\${Z}`});continue}je("brackets");let b=ce.value.slice(1);if(ce.posix!==!0&&b[0]==="^"&&!b.includes("/")&&(Z=`/${Z}`),ce.value+=Z,Ne({value:Z}),r.literalBrackets===!1||Kl.hasRegexChars(b))continue;let y=Kl.escapeRegex(ce.value);if(d.output=d.output.slice(0,-ce.value.length),r.literalBrackets===!0){d.output+=y,ce.value=y;continue}ce.value=`(${f}${y}|${ce.value})`,d.output+=ce.value;continue}if(Z==="{"&&r.nobrace!==!0){be("braces");let b={type:"brace",value:Z,output:"(",outputIndex:d.output.length,tokensIndex:d.tokens.length};Be.push(b),Re(b);continue}if(Z==="}"){let b=Be[Be.length-1];if(r.nobrace===!0||!b){Re({type:"text",value:Z,output:Z});continue}let y=")";if(b.dots===!0){let F=c.slice(),z=[];for(let X=F.length-1;X>=0&&(c.pop(),F[X].type!=="brace");X--)F[X].type!=="dots"&&z.unshift(F[X].value);y=cJe(z,r),d.backtrack=!0}if(b.comma!==!0&&b.dots!==!0){let F=d.output.slice(0,b.outputIndex),z=d.tokens.slice(b.tokensIndex);b.value=b.output="\\{",Z=y="\\}",d.output=F;for(let X of z)d.output+=X.output||X.value}Re({type:"brace",value:Z,output:y}),je("braces"),Be.pop();continue}if(Z==="|"){Se.length>0&&Se[Se.length-1].conditions++,Re({type:"text",value:Z});continue}if(Z===","){let b=Z,y=Be[Be.length-1];y&&me[me.length-1]==="braces"&&(y.comma=!0,b="|"),Re({type:"comma",value:Z,output:b});continue}if(Z==="/"){if(ce.type==="dot"&&d.index===d.start+1){d.start=d.index+1,d.consumed="",d.output="",c.pop(),ce=n;continue}Re({type:"slash",value:Z,output:x});continue}if(Z==="."){if(d.braces>0&&ce.type==="dot"){ce.value==="."&&(ce.output=C);let b=Be[Be.length-1];ce.type="dots",ce.output+=Z,ce.value+=Z,b.dots=!0;continue}if(d.braces+d.parens===0&&ce.type!=="bos"&&ce.type!=="slash"){Re({type:"text",value:Z,output:C});continue}Re({type:"dot",value:Z,output:C});continue}if(Z==="?"){if(!(ce&&ce.value==="(")&&r.noextglob!==!0&&Qe()==="("&&Qe(2)!=="?"){ct("qmark",Z);continue}if(ce&&ce.type==="paren"){let y=Qe(),F=Z;if(y==="<"&&!Kl.supportsLookbehinds())throw new Error("Node.js v10 or higher is required for regex lookbehinds");(ce.value==="("&&!/[!=<:]/.test(y)||y==="<"&&!/<([!=]|\w+>)/.test(_()))&&(F=`\\${Z}`),Re({type:"text",value:Z,output:F});continue}if(r.dot!==!0&&(ce.type==="slash"||ce.type==="bos")){Re({type:"qmark",value:Z,output:ie});continue}Re({type:"qmark",value:Z,output:te});continue}if(Z==="!"){if(r.noextglob!==!0&&Qe()==="("&&(Qe(2)!=="?"||!/[!=<:]/.test(Qe(3)))){ct("negate",Z);continue}if(r.nonegate!==!0&&d.index===0){ke();continue}}if(Z==="+"){if(r.noextglob!==!0&&Qe()==="("&&Qe(2)!=="?"){ct("plus",Z);continue}if(ce&&ce.value==="("||r.regex===!1){Re({type:"plus",value:Z,output:S});continue}if(ce&&(ce.type==="bracket"||ce.type==="paren"||ce.type==="brace")||d.parens>0){Re({type:"plus",value:Z});continue}Re({type:"plus",value:S});continue}if(Z==="@"){if(r.noextglob!==!0&&Qe()==="("&&Qe(2)!=="?"){Re({type:"at",extglob:!0,value:Z,output:""});continue}Re({type:"text",value:Z});continue}if(Z!=="*"){(Z==="$"||Z==="^")&&(Z=`\\${Z}`);let b=aJe.exec(_());b&&(Z+=b[0],d.index+=b[0].length),Re({type:"text",value:Z});continue}if(ce&&(ce.type==="globstar"||ce.star===!0)){ce.type="star",ce.star=!0,ce.value+=Z,ce.output=Ee,d.backtrack=!0,d.globstar=!0,tt(Z);continue}let P=_();if(r.noextglob!==!0&&/^\([^?]/.test(P)){ct("star",Z);continue}if(ce.type==="star"){if(r.noglobstar===!0){tt(Z);continue}let b=ce.prev,y=b.prev,F=b.type==="slash"||b.type==="bos",z=y&&(y.type==="star"||y.type==="globstar");if(r.bash===!0&&(!F||P[0]&&P[0]!=="/")){Re({type:"star",value:Z,output:""});continue}let X=d.braces>0&&(b.type==="comma"||b.type==="brace"),$=Se.length&&(b.type==="pipe"||b.type==="paren");if(!F&&b.type!=="paren"&&!X&&!$){Re({type:"star",value:Z,output:""});continue}for(;P.slice(0,3)==="/**";){let se=e[d.index+4];if(se&&se!=="/")break;P=P.slice(3),tt("/**",3)}if(b.type==="bos"&&De()){ce.type="globstar",ce.value+=Z,ce.output=ge(r),d.output=ce.output,d.globstar=!0,tt(Z);continue}if(b.type==="slash"&&b.prev.type!=="bos"&&!z&&De()){d.output=d.output.slice(0,-(b.output+ce.output).length),b.output=`(?:${b.output}`,ce.type="globstar",ce.output=ge(r)+(r.strictSlashes?")":"|$)"),ce.value+=Z,d.globstar=!0,d.output+=b.output+ce.output,tt(Z);continue}if(b.type==="slash"&&b.prev.type!=="bos"&&P[0]==="/"){let se=P[1]!==void 0?"|$":"";d.output=d.output.slice(0,-(b.output+ce.output).length),b.output=`(?:${b.output}`,ce.type="globstar",ce.output=`${ge(r)}${x}|${x}${se})`,ce.value+=Z,d.output+=b.output+ce.output,d.globstar=!0,tt(Z+st()),Re({type:"slash",value:"/",output:""});continue}if(b.type==="bos"&&P[0]==="/"){ce.type="globstar",ce.value+=Z,ce.output=`(?:^|${x}|${ge(r)}${x})`,d.output=ce.output,d.globstar=!0,tt(Z+st()),Re({type:"slash",value:"/",output:""});continue}d.output=d.output.slice(0,-ce.output.length),ce.type="globstar",ce.output=ge(r),ce.value+=Z,d.output+=ce.output,d.globstar=!0,tt(Z);continue}let w={type:"star",value:Z,output:Ee};if(r.bash===!0){w.output=".*?",(ce.type==="bos"||ce.type==="slash")&&(w.output=Ae+w.output),Re(w);continue}if(ce&&(ce.type==="bracket"||ce.type==="paren")&&r.regex===!0){w.output=Z,Re(w);continue}(d.index===d.start||ce.type==="slash"||ce.type==="dot")&&(ce.type==="dot"?(d.output+=U,ce.output+=U):r.dot===!0?(d.output+=V,ce.output+=V):(d.output+=Ae,ce.output+=Ae),Qe()!=="*"&&(d.output+=I,ce.output+=I)),Re(w)}for(;d.brackets>0;){if(r.strictBrackets===!0)throw new SyntaxError(LE("closing","]"));d.output=Kl.escapeLast(d.output,"["),je("brackets")}for(;d.parens>0;){if(r.strictBrackets===!0)throw new SyntaxError(LE("closing",")"));d.output=Kl.escapeLast(d.output,"("),je("parens")}for(;d.braces>0;){if(r.strictBrackets===!0)throw new SyntaxError(LE("closing","}"));d.output=Kl.escapeLast(d.output,"{"),je("braces")}if(r.strictSlashes!==!0&&(ce.type==="star"||ce.type==="bracket")&&Re({type:"maybe_slash",value:"",output:`${x}?`}),d.backtrack===!0){d.output="";for(let P of d.tokens)d.output+=P.output!=null?P.output:P.value,P.suffix&&(d.output+=P.suffix)}return d};t4.fastpaths=(e,t)=>{let r={...t},s=typeof r.maxLength=="number"?Math.min(hk,r.maxLength):hk,a=e.length;if(a>s)throw new SyntaxError(`Input length: ${a}, exceeds maximum allowed length: ${s}`);e=doe[e]||e;let n=Kl.isWindows(t),{DOT_LITERAL:c,SLASH_LITERAL:f,ONE_CHAR:p,DOTS_SLASH:h,NO_DOT:E,NO_DOTS:C,NO_DOTS_SLASH:S,STAR:x,START_ANCHOR:I}=pk.globChars(n),T=r.dot?C:E,O=r.dot?S:E,U=r.capture?"":"?:",V={negated:!1,prefix:""},te=r.bash===!0?".*?":x;r.capture&&(te=`(${te})`);let ie=Ae=>Ae.noglobstar===!0?te:`(${U}(?:(?!${I}${Ae.dot?h:c}).)*?)`,ue=Ae=>{switch(Ae){case"*":return`${T}${p}${te}`;case".*":return`${c}${p}${te}`;case"*.*":return`${T}${te}${c}${p}${te}`;case"*/*":return`${T}${te}${f}${p}${O}${te}`;case"**":return T+ie(r);case"**/*":return`(?:${T}${ie(r)}${f})?${O}${p}${te}`;case"**/*.*":return`(?:${T}${ie(r)}${f})?${O}${te}${c}${p}${te}`;case"**/.*":return`(?:${T}${ie(r)}${f})?${c}${p}${te}`;default:{let Ce=/^(.*?)\.(\w+)$/.exec(Ae);if(!Ce)return;let Ee=ue(Ce[1]);return Ee?Ee+c+Ce[2]:void 0}}},ae=Kl.removePrefix(e,V),ge=ue(ae);return ge&&r.strictSlashes!==!0&&(ge+=`${f}?`),ge};goe.exports=t4});var Eoe=G((RQt,yoe)=>{"use strict";var uJe=Ie("path"),fJe=hoe(),r4=moe(),n4=AB(),AJe=fB(),pJe=e=>e&&typeof e=="object"&&!Array.isArray(e),Zi=(e,t,r=!1)=>{if(Array.isArray(e)){let E=e.map(S=>Zi(S,t,r));return S=>{for(let x of E){let I=x(S);if(I)return I}return!1}}let s=pJe(e)&&e.tokens&&e.input;if(e===""||typeof e!="string"&&!s)throw new TypeError("Expected pattern to be a non-empty string");let a=t||{},n=n4.isWindows(t),c=s?Zi.compileRe(e,t):Zi.makeRe(e,t,!1,!0),f=c.state;delete c.state;let p=()=>!1;if(a.ignore){let E={...t,ignore:null,onMatch:null,onResult:null};p=Zi(a.ignore,E,r)}let h=(E,C=!1)=>{let{isMatch:S,match:x,output:I}=Zi.test(E,c,t,{glob:e,posix:n}),T={glob:e,state:f,regex:c,posix:n,input:E,output:I,match:x,isMatch:S};return typeof a.onResult=="function"&&a.onResult(T),S===!1?(T.isMatch=!1,C?T:!1):p(E)?(typeof a.onIgnore=="function"&&a.onIgnore(T),T.isMatch=!1,C?T:!1):(typeof a.onMatch=="function"&&a.onMatch(T),C?T:!0)};return r&&(h.state=f),h};Zi.test=(e,t,r,{glob:s,posix:a}={})=>{if(typeof e!="string")throw new TypeError("Expected input to be a string");if(e==="")return{isMatch:!1,output:""};let n=r||{},c=n.format||(a?n4.toPosixSlashes:null),f=e===s,p=f&&c?c(e):e;return f===!1&&(p=c?c(e):e,f=p===s),(f===!1||n.capture===!0)&&(n.matchBase===!0||n.basename===!0?f=Zi.matchBase(e,t,r,a):f=t.exec(p)),{isMatch:!!f,match:f,output:p}};Zi.matchBase=(e,t,r,s=n4.isWindows(r))=>(t instanceof RegExp?t:Zi.makeRe(t,r)).test(uJe.basename(e));Zi.isMatch=(e,t,r)=>Zi(t,r)(e);Zi.parse=(e,t)=>Array.isArray(e)?e.map(r=>Zi.parse(r,t)):r4(e,{...t,fastpaths:!1});Zi.scan=(e,t)=>fJe(e,t);Zi.compileRe=(e,t,r=!1,s=!1)=>{if(r===!0)return e.output;let a=t||{},n=a.contains?"":"^",c=a.contains?"":"$",f=`${n}(?:${e.output})${c}`;e&&e.negated===!0&&(f=`^(?!${f}).*$`);let p=Zi.toRegex(f,t);return s===!0&&(p.state=e),p};Zi.makeRe=(e,t={},r=!1,s=!1)=>{if(!e||typeof e!="string")throw new TypeError("Expected a non-empty string");let a={negated:!1,fastpaths:!0};return t.fastpaths!==!1&&(e[0]==="."||e[0]==="*")&&(a.output=r4.fastpaths(e,t)),a.output||(a=r4(e,t)),Zi.compileRe(a,t,r,s)};Zi.toRegex=(e,t)=>{try{let r=t||{};return new RegExp(e,r.flags||(r.nocase?"i":""))}catch(r){if(t&&t.debug===!0)throw r;return/$^/}};Zi.constants=AJe;yoe.exports=Zi});var Coe=G((TQt,Ioe)=>{"use strict";Ioe.exports=Eoe()});var zo=G((FQt,Soe)=>{"use strict";var Boe=Ie("util"),voe=toe(),Xf=Coe(),i4=AB(),woe=e=>e===""||e==="./",xi=(e,t,r)=>{t=[].concat(t),e=[].concat(e);let s=new Set,a=new Set,n=new Set,c=0,f=E=>{n.add(E.output),r&&r.onResult&&r.onResult(E)};for(let E=0;E!s.has(E));if(r&&h.length===0){if(r.failglob===!0)throw new Error(`No matches found for "${t.join(", ")}"`);if(r.nonull===!0||r.nullglob===!0)return r.unescape?t.map(E=>E.replace(/\\/g,"")):t}return h};xi.match=xi;xi.matcher=(e,t)=>Xf(e,t);xi.isMatch=(e,t,r)=>Xf(t,r)(e);xi.any=xi.isMatch;xi.not=(e,t,r={})=>{t=[].concat(t).map(String);let s=new Set,a=[],n=f=>{r.onResult&&r.onResult(f),a.push(f.output)},c=new Set(xi(e,t,{...r,onResult:n}));for(let f of a)c.has(f)||s.add(f);return[...s]};xi.contains=(e,t,r)=>{if(typeof e!="string")throw new TypeError(`Expected a string: "${Boe.inspect(e)}"`);if(Array.isArray(t))return t.some(s=>xi.contains(e,s,r));if(typeof t=="string"){if(woe(e)||woe(t))return!1;if(e.includes(t)||e.startsWith("./")&&e.slice(2).includes(t))return!0}return xi.isMatch(e,t,{...r,contains:!0})};xi.matchKeys=(e,t,r)=>{if(!i4.isObject(e))throw new TypeError("Expected the first argument to be an object");let s=xi(Object.keys(e),t,r),a={};for(let n of s)a[n]=e[n];return a};xi.some=(e,t,r)=>{let s=[].concat(e);for(let a of[].concat(t)){let n=Xf(String(a),r);if(s.some(c=>n(c)))return!0}return!1};xi.every=(e,t,r)=>{let s=[].concat(e);for(let a of[].concat(t)){let n=Xf(String(a),r);if(!s.every(c=>n(c)))return!1}return!0};xi.all=(e,t,r)=>{if(typeof e!="string")throw new TypeError(`Expected a string: "${Boe.inspect(e)}"`);return[].concat(t).every(s=>Xf(s,r)(e))};xi.capture=(e,t,r)=>{let s=i4.isWindows(r),n=Xf.makeRe(String(e),{...r,capture:!0}).exec(s?i4.toPosixSlashes(t):t);if(n)return n.slice(1).map(c=>c===void 0?"":c)};xi.makeRe=(...e)=>Xf.makeRe(...e);xi.scan=(...e)=>Xf.scan(...e);xi.parse=(e,t)=>{let r=[];for(let s of[].concat(e||[]))for(let a of voe(String(s),t))r.push(Xf.parse(a,t));return r};xi.braces=(e,t)=>{if(typeof e!="string")throw new TypeError("Expected a string");return t&&t.nobrace===!0||!/\{.*\}/.test(e)?[e]:voe(e,t)};xi.braceExpand=(e,t)=>{if(typeof e!="string")throw new TypeError("Expected a string");return xi.braces(e,{...t,expand:!0})};Soe.exports=xi});var boe=G((NQt,Doe)=>{"use strict";Doe.exports=({onlyFirst:e=!1}={})=>{let t=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(t,e?void 0:"g")}});var dk=G((OQt,Poe)=>{"use strict";var hJe=boe();Poe.exports=e=>typeof e=="string"?e.replace(hJe(),""):e});function xoe(e){return Number.isSafeInteger(e)&&e>=0}var koe=Xe(()=>{});function Qoe(e){return e!=null&&typeof e!="function"&&xoe(e.length)}var Roe=Xe(()=>{koe()});function xc(e){return e==="__proto__"}var hB=Xe(()=>{});function ME(e){switch(typeof e){case"number":case"symbol":return!1;case"string":return e.includes(".")||e.includes("[")||e.includes("]")}}var gk=Xe(()=>{});function UE(e){return typeof e=="string"||typeof e=="symbol"?e:Object.is(e?.valueOf?.(),-0)?"-0":String(e)}var mk=Xe(()=>{});function Ou(e){let t=[],r=e.length;if(r===0)return t;let s=0,a="",n="",c=!1;for(e.charCodeAt(0)===46&&(t.push(""),s++);s{});function Pa(e,t,r){if(e==null)return r;switch(typeof t){case"string":{if(xc(t))return r;let s=e[t];return s===void 0?ME(t)?Pa(e,Ou(t),r):r:s}case"number":case"symbol":{typeof t=="number"&&(t=UE(t));let s=e[t];return s===void 0?r:s}default:{if(Array.isArray(t))return dJe(e,t,r);if(Object.is(t?.valueOf(),-0)?t="-0":t=String(t),xc(t))return r;let s=e[t];return s===void 0?r:s}}}function dJe(e,t,r){if(t.length===0)return r;let s=e;for(let a=0;a{hB();gk();mk();_E()});function s4(e){return e!==null&&(typeof e=="object"||typeof e=="function")}var Toe=Xe(()=>{});function HE(e){return e==null||typeof e!="object"&&typeof e!="function"}var Ek=Xe(()=>{});function Ik(e,t){return e===t||Number.isNaN(e)&&Number.isNaN(t)}var o4=Xe(()=>{});function Gg(e){return Object.getOwnPropertySymbols(e).filter(t=>Object.prototype.propertyIsEnumerable.call(e,t))}var Ck=Xe(()=>{});function qg(e){return e==null?e===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}var wk=Xe(()=>{});var Bk,jE,GE,qE,Wg,vk,Sk,Dk,bk,Pk,Foe,xk,WE,Noe,kk,Qk,Rk,Tk,Fk,Ooe,Nk,Ok,Lk,Loe,Mk,Uk,_k=Xe(()=>{Bk="[object RegExp]",jE="[object String]",GE="[object Number]",qE="[object Boolean]",Wg="[object Arguments]",vk="[object Symbol]",Sk="[object Date]",Dk="[object Map]",bk="[object Set]",Pk="[object Array]",Foe="[object Function]",xk="[object ArrayBuffer]",WE="[object Object]",Noe="[object Error]",kk="[object DataView]",Qk="[object Uint8Array]",Rk="[object Uint8ClampedArray]",Tk="[object Uint16Array]",Fk="[object Uint32Array]",Ooe="[object BigUint64Array]",Nk="[object Int8Array]",Ok="[object Int16Array]",Lk="[object Int32Array]",Loe="[object BigInt64Array]",Mk="[object Float32Array]",Uk="[object Float64Array]"});function YE(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}var Hk=Xe(()=>{});function Moe(e,t){return c0(e,void 0,e,new Map,t)}function c0(e,t,r,s=new Map,a=void 0){let n=a?.(e,t,r,s);if(n!=null)return n;if(HE(e))return e;if(s.has(e))return s.get(e);if(Array.isArray(e)){let c=new Array(e.length);s.set(e,c);for(let f=0;f{Ck();wk();_k();Ek();Hk()});function Uoe(e){return c0(e,void 0,e,new Map,void 0)}var _oe=Xe(()=>{a4()});function Hoe(e,t){return Moe(e,(r,s,a,n)=>{let c=t?.(r,s,a,n);if(c!=null)return c;if(typeof e=="object")switch(Object.prototype.toString.call(e)){case GE:case jE:case qE:{let f=new e.constructor(e?.valueOf());return l0(f,e),f}case Wg:{let f={};return l0(f,e),f.length=e.length,f[Symbol.iterator]=e[Symbol.iterator],f}default:return}})}var joe=Xe(()=>{a4();_k()});function u0(e){return Hoe(e)}var l4=Xe(()=>{joe()});function jk(e,t=Number.MAX_SAFE_INTEGER){switch(typeof e){case"number":return Number.isInteger(e)&&e>=0&&e{mJe=/^(?:0|[1-9]\d*)$/});function dB(e){return e!==null&&typeof e=="object"&&qg(e)==="[object Arguments]"}var u4=Xe(()=>{wk()});function gB(e,t){let r;if(Array.isArray(t)?r=t:typeof t=="string"&&ME(t)&&e?.[t]==null?r=Ou(t):r=[t],r.length===0)return!1;let s=e;for(let a=0;a{gk();c4();u4();_E()});function A4(e){return typeof e=="object"&&e!==null}var Goe=Xe(()=>{});function qoe(e){return typeof e=="symbol"||e instanceof Symbol}var Woe=Xe(()=>{});function Yoe(e,t){return Array.isArray(e)?!1:typeof e=="number"||typeof e=="boolean"||e==null||qoe(e)?!0:typeof e=="string"&&(EJe.test(e)||!yJe.test(e))||t!=null&&Object.hasOwn(t,e)}var yJe,EJe,Voe=Xe(()=>{Woe();yJe=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,EJe=/^\w*$/});function f0(e,t){if(e==null)return!0;switch(typeof t){case"symbol":case"number":case"object":{if(Array.isArray(t))return Joe(e,t);if(typeof t=="number"?t=UE(t):typeof t=="object"&&(Object.is(t?.valueOf(),-0)?t="-0":t=String(t)),xc(t))return!1;if(e?.[t]===void 0)return!0;try{return delete e[t],!0}catch{return!1}}case"string":{if(e?.[t]===void 0&&ME(t))return Joe(e,Ou(t));if(xc(t))return!1;try{return delete e[t],!0}catch{return!1}}}}function Joe(e,t){let r=Pa(e,t.slice(0,-1),e),s=t[t.length-1];if(r?.[s]===void 0)return!0;if(xc(s))return!1;try{return delete r[s],!0}catch{return!1}}var p4=Xe(()=>{yk();hB();gk();mk();_E()});function Koe(e){return e==null}var zoe=Xe(()=>{});var Xoe,Zoe=Xe(()=>{o4();Xoe=(e,t,r)=>{let s=e[t];(!(Object.hasOwn(e,t)&&Ik(s,r))||r===void 0&&!(t in e))&&(e[t]=r)}});function $oe(e,t,r,s){if(e==null&&!s4(e))return e;let a=Yoe(t,e)?[t]:Array.isArray(t)?t:typeof t=="string"?Ou(t):[t],n=e;for(let c=0;c{hB();Zoe();c4();Voe();mk();Toe();_E()});function Yg(e,t,r){return $oe(e,t,()=>r,()=>{})}var h4=Xe(()=>{eae()});function tae(e,t=0,r={}){typeof r!="object"&&(r={});let s=null,a=null,n=null,c=0,f=null,p,{leading:h=!1,trailing:E=!0,maxWait:C}=r,S="maxWait"in r,x=S?Math.max(Number(C)||0,t):0,I=ue=>(s!==null&&(p=e.apply(a,s)),s=a=null,c=ue,p),T=ue=>(c=ue,f=setTimeout(te,t),h&&s!==null?I(ue):p),O=ue=>(f=null,E&&s!==null?I(ue):p),U=ue=>{if(n===null)return!0;let ae=ue-n,ge=ae>=t||ae<0,Ae=S&&ue-c>=x;return ge||Ae},V=ue=>{let ae=n===null?0:ue-n,ge=t-ae,Ae=x-(ue-c);return S?Math.min(ge,Ae):ge},te=()=>{let ue=Date.now();if(U(ue))return O(ue);f=setTimeout(te,V(ue))},ie=function(...ue){let ae=Date.now(),ge=U(ae);if(s=ue,a=this,n=ae,ge){if(f===null)return T(ae);if(S)return clearTimeout(f),f=setTimeout(te,t),I(ae)}return f===null&&(f=setTimeout(te,t)),p};return ie.cancel=()=>{f!==null&&clearTimeout(f),c=0,n=s=a=f=null},ie.flush=()=>f===null?p:O(Date.now()),ie}var rae=Xe(()=>{});function d4(e,t=0,r={}){let{leading:s=!0,trailing:a=!0}=r;return tae(e,t,{leading:s,maxWait:t,trailing:a})}var nae=Xe(()=>{rae()});function g4(e){if(e==null)return"";if(typeof e=="string")return e;if(Array.isArray(e))return e.map(g4).join(",");let t=String(e);return t==="0"&&Object.is(Number(e),-0)?"-0":t}var iae=Xe(()=>{});function m4(e){if(!e||typeof e!="object")return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype||Object.getPrototypeOf(t)===null?Object.prototype.toString.call(e)==="[object Object]":!1}var sae=Xe(()=>{});function oae(e,t,r){return mB(e,t,void 0,void 0,void 0,void 0,r)}function mB(e,t,r,s,a,n,c){let f=c(e,t,r,s,a,n);if(f!==void 0)return f;if(typeof e==typeof t)switch(typeof e){case"bigint":case"string":case"boolean":case"symbol":case"undefined":return e===t;case"number":return e===t||Object.is(e,t);case"function":return e===t;case"object":return yB(e,t,n,c)}return yB(e,t,n,c)}function yB(e,t,r,s){if(Object.is(e,t))return!0;let a=qg(e),n=qg(t);if(a===Wg&&(a=WE),n===Wg&&(n=WE),a!==n)return!1;switch(a){case jE:return e.toString()===t.toString();case GE:{let p=e.valueOf(),h=t.valueOf();return Ik(p,h)}case qE:case Sk:case vk:return Object.is(e.valueOf(),t.valueOf());case Bk:return e.source===t.source&&e.flags===t.flags;case Foe:return e===t}r=r??new Map;let c=r.get(e),f=r.get(t);if(c!=null&&f!=null)return c===t;r.set(e,t),r.set(t,e);try{switch(a){case Dk:{if(e.size!==t.size)return!1;for(let[p,h]of e.entries())if(!t.has(p)||!mB(h,t.get(p),p,e,t,r,s))return!1;return!0}case bk:{if(e.size!==t.size)return!1;let p=Array.from(e.values()),h=Array.from(t.values());for(let E=0;EmB(C,x,void 0,e,t,r,s));if(S===-1)return!1;h.splice(S,1)}return!0}case Pk:case Qk:case Rk:case Tk:case Fk:case Ooe:case Nk:case Ok:case Lk:case Loe:case Mk:case Uk:{if(typeof Buffer<"u"&&Buffer.isBuffer(e)!==Buffer.isBuffer(t)||e.length!==t.length)return!1;for(let p=0;p{sae();Ck();wk();_k();o4()});function lae(){}var cae=Xe(()=>{});function y4(e,t){return oae(e,t,lae)}var uae=Xe(()=>{aae();cae()});function fae(e){return YE(e)}var Aae=Xe(()=>{Hk()});function pae(e){if(typeof e!="object"||e==null)return!1;if(Object.getPrototypeOf(e)===null)return!0;if(Object.prototype.toString.call(e)!=="[object Object]"){let r=e[Symbol.toStringTag];return r==null||!Object.getOwnPropertyDescriptor(e,Symbol.toStringTag)?.writable?!1:e.toString()===`[object ${r}]`}let t=e;for(;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}var hae=Xe(()=>{});function dae(e){if(HE(e))return e;if(Array.isArray(e)||YE(e)||e instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&e instanceof SharedArrayBuffer)return e.slice(0);let t=Object.getPrototypeOf(e),r=t.constructor;if(e instanceof Date||e instanceof Map||e instanceof Set)return new r(e);if(e instanceof RegExp){let s=new r(e);return s.lastIndex=e.lastIndex,s}if(e instanceof DataView)return new r(e.buffer.slice(0));if(e instanceof Error){let s=new r(e.message);return s.stack=e.stack,s.name=e.name,s.cause=e.cause,s}if(typeof File<"u"&&e instanceof File)return new r([e],e.name,{type:e.type,lastModified:e.lastModified});if(typeof e=="object"){let s=Object.create(t);return Object.assign(s,e)}return e}var gae=Xe(()=>{Ek();Hk()});function E4(e,...t){let r=t.slice(0,-1),s=t[t.length-1],a=e;for(let n=0;n{l4();hB();gae();Ek();Ck();u4();Goe();hae();Aae()});function I4(e,...t){if(e==null)return{};let r=Uoe(e);for(let s=0;s{p4();_oe()});function Vg(e,...t){if(Koe(e))return{};let r={};for(let s=0;s{yk();f4();h4();Roe();zoe()});function Iae(e){return e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()}var Cae=Xe(()=>{});function EB(e){return Iae(g4(e))}var wae=Xe(()=>{Cae();iae()});var zl=Xe(()=>{nae();uae();l4();yk();f4();mae();yae();Eae();h4();p4();wae();_E()});var Ge={};Vt(Ge,{AsyncActions:()=>B4,BufferStream:()=>w4,CachingStrategy:()=>Rae,DefaultStream:()=>v4,allSettledSafe:()=>Lu,assertNever:()=>b4,bufferStream:()=>JE,buildIgnorePattern:()=>DJe,convertMapsToIndexableObjects:()=>Wk,dynamicRequire:()=>kp,escapeRegExp:()=>CJe,getArrayWithDefault:()=>CB,getFactoryWithDefault:()=>Zl,getMapWithDefault:()=>P4,getSetWithDefault:()=>xp,groupBy:()=>xJe,isIndexableObject:()=>C4,isPathLike:()=>bJe,isTaggedYarnVersion:()=>IJe,makeDeferred:()=>xae,mapAndFilter:()=>Xl,mapAndFind:()=>A0,mergeIntoTarget:()=>Fae,overrideType:()=>wJe,parseBoolean:()=>wB,parseDuration:()=>Vk,parseInt:()=>KE,parseOptionalBoolean:()=>Tae,plural:()=>qk,prettifyAsyncErrors:()=>VE,prettifySyncErrors:()=>x4,releaseAfterUseAsync:()=>vJe,replaceEnvVariables:()=>Yk,sortMap:()=>Vs,toMerged:()=>PJe,tryParseOptionalBoolean:()=>k4,validateEnum:()=>BJe});function IJe(e){return!!(Dae.default.valid(e)&&e.match(/^[^-]+(-rc\.[0-9]+)?$/))}function qk(e,{one:t,more:r,zero:s=r}){return e===0?s:e===1?t:r}function CJe(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function wJe(e){}function b4(e){throw new Error(`Assertion failed: Unexpected object '${e}'`)}function BJe(e,t){let r=Object.values(e);if(!r.includes(t))throw new it(`Invalid value for enumeration: ${JSON.stringify(t)} (expected one of ${r.map(s=>JSON.stringify(s)).join(", ")})`);return t}function Xl(e,t){let r=[];for(let s of e){let a=t(s);a!==bae&&r.push(a)}return r}function A0(e,t){for(let r of e){let s=t(r);if(s!==Pae)return s}}function C4(e){return typeof e=="object"&&e!==null}async function Lu(e){let t=await Promise.allSettled(e),r=[];for(let s of t){if(s.status==="rejected")throw s.reason;r.push(s.value)}return r}function Wk(e){if(e instanceof Map&&(e=Object.fromEntries(e)),C4(e))for(let t of Object.keys(e)){let r=e[t];C4(r)&&(e[t]=Wk(r))}return e}function Zl(e,t,r){let s=e.get(t);return typeof s>"u"&&e.set(t,s=r()),s}function CB(e,t){let r=e.get(t);return typeof r>"u"&&e.set(t,r=[]),r}function xp(e,t){let r=e.get(t);return typeof r>"u"&&e.set(t,r=new Set),r}function P4(e,t){let r=e.get(t);return typeof r>"u"&&e.set(t,r=new Map),r}async function vJe(e,t){if(t==null)return await e();try{return await e()}finally{await t()}}async function VE(e,t){try{return await e()}catch(r){throw r.message=t(r.message),r}}function x4(e,t){try{return e()}catch(r){throw r.message=t(r.message),r}}async function JE(e){return await new Promise((t,r)=>{let s=[];e.on("error",a=>{r(a)}),e.on("data",a=>{s.push(a)}),e.on("end",()=>{t(Buffer.concat(s))})})}function xae(){let e,t;return{promise:new Promise((s,a)=>{e=s,t=a}),resolve:e,reject:t}}function kae(e){return IB(fe.fromPortablePath(e))}function Qae(path){let physicalPath=fe.fromPortablePath(path),currentCacheEntry=IB.cache[physicalPath];delete IB.cache[physicalPath];let result;try{result=kae(physicalPath);let freshCacheEntry=IB.cache[physicalPath],dynamicModule=eval("module"),freshCacheIndex=dynamicModule.children.indexOf(freshCacheEntry);freshCacheIndex!==-1&&dynamicModule.children.splice(freshCacheIndex,1)}finally{IB.cache[physicalPath]=currentCacheEntry}return result}function SJe(e){let t=Bae.get(e),r=le.statSync(e);if(t?.mtime===r.mtimeMs)return t.instance;let s=Qae(e);return Bae.set(e,{mtime:r.mtimeMs,instance:s}),s}function kp(e,{cachingStrategy:t=2}={}){switch(t){case 0:return Qae(e);case 1:return SJe(e);case 2:return kae(e);default:throw new Error("Unsupported caching strategy")}}function Vs(e,t){let r=Array.from(e);Array.isArray(t)||(t=[t]);let s=[];for(let n of t)s.push(r.map(c=>n(c)));let a=r.map((n,c)=>c);return a.sort((n,c)=>{for(let f of s){let p=f[n]f[c]?1:0;if(p!==0)return p}return 0}),a.map(n=>r[n])}function DJe(e){return e.length===0?null:e.map(t=>`(${vae.default.makeRe(t,{windows:!1,dot:!0}).source})`).join("|")}function Yk(e,{env:t}){let r="",s=0,a=0,n=e.matchAll(/\\(?[\\$}])|\$\{(?[a-zA-Z]\w*)(?:-|-|(?=\}))|(?\$\{)|\}/g),c=()=>{let f=a;for(let{0:p,index:h,groups:{variable:E}={}}of n)if(E)a++;else if(p==="}"&&--a0)throw new it(`Incomplete variable substitution in input: ${e}`);return r+e.slice(s)}function wB(e){switch(e){case"true":case"1":case 1:case!0:return!0;case"false":case"0":case 0:case!1:return!1;default:throw new Error(`Couldn't parse "${e}" as a boolean`)}}function Tae(e){return typeof e>"u"?e:wB(e)}function k4(e){try{return Tae(e)}catch{return null}}function bJe(e){return!!(fe.isAbsolute(e)||e.match(/^(\.{1,2}|~)\//))}function Fae(e,...t){let r=c=>({value:c}),s=r(e),a=t.map(c=>r(c)),{value:n}=E4(s,...a,(c,f)=>{if(Array.isArray(c)&&Array.isArray(f)){for(let p of f)c.find(h=>y4(h,p))||c.push(p);return c}});return n}function PJe(...e){return Fae({},...e)}function xJe(e,t){let r=Object.create(null);for(let s of e){let a=s[t];r[a]??=[],r[a].push(s)}return r}function KE(e){return typeof e=="string"?Number.parseInt(e,10):e}function Vk(e,t){let r=kJe.exec(e)?.groups;if(!r)throw new Error(`Couldn't parse "${e}" as a duration`);if(r.unit===void 0)return parseFloat(r.num);let s=S4[r.unit];if(!s)throw new Error(`Invalid duration unit "${r.unit}"`);return parseFloat(r.num)*s/S4[t]}var vae,Sae,Dae,D4,bae,Pae,w4,B4,v4,IB,Bae,Rae,S4,kJe,kc=Xe(()=>{Dt();Yt();zl();vae=et(zo()),Sae=et(Ng()),Dae=et(pi()),D4=Ie("stream");bae=Symbol();Xl.skip=bae;Pae=Symbol();A0.skip=Pae;w4=class extends D4.Transform{constructor(){super(...arguments);this.chunks=[]}_transform(r,s,a){if(s!=="buffer"||!Buffer.isBuffer(r))throw new Error("Assertion failed: BufferStream only accept buffers");this.chunks.push(r),a(null,null)}_flush(r){r(null,Buffer.concat(this.chunks))}};B4=class{constructor(t){this.deferred=new Map;this.promises=new Map;this.limit=(0,Sae.default)(t)}set(t,r){let s=this.deferred.get(t);typeof s>"u"&&this.deferred.set(t,s=xae());let a=this.limit(()=>r());return this.promises.set(t,a),a.then(()=>{this.promises.get(t)===a&&s.resolve()},n=>{this.promises.get(t)===a&&s.reject(n)}),s.promise}reduce(t,r){let s=this.promises.get(t)??Promise.resolve();this.set(t,()=>r(s))}async wait(){await Promise.all(this.promises.values())}},v4=class extends D4.Transform{constructor(r=Buffer.alloc(0)){super();this.active=!0;this.ifEmpty=r}_transform(r,s,a){if(s!=="buffer"||!Buffer.isBuffer(r))throw new Error("Assertion failed: DefaultStream only accept buffers");this.active=!1,a(null,r)}_flush(r){this.active&&this.ifEmpty.length>0?r(null,this.ifEmpty):r(null)}},IB=eval("require");Bae=new Map;Rae=(s=>(s[s.NoCache=0]="NoCache",s[s.FsTime=1]="FsTime",s[s.Node=2]="Node",s))(Rae||{});S4={ms:1,s:1e3,m:60*1e3,h:60*60*1e3,d:24*60*60*1e3,w:7*24*60*60*1e3},kJe=new RegExp(`^(?\\d*\\.?\\d+)(?${Object.keys(S4).join("|")})?$`)});var zE,Q4,R4,Nae=Xe(()=>{zE=(r=>(r.HARD="HARD",r.SOFT="SOFT",r))(zE||{}),Q4=(s=>(s.Dependency="Dependency",s.PeerDependency="PeerDependency",s.PeerDependencyMeta="PeerDependencyMeta",s))(Q4||{}),R4=(s=>(s.Inactive="inactive",s.Redundant="redundant",s.Active="active",s))(R4||{})});var pe={};Vt(pe,{LogLevel:()=>$k,Style:()=>zk,Type:()=>dt,addLogFilterSupport:()=>SB,applyColor:()=>si,applyHyperlink:()=>ZE,applyStyle:()=>Jg,json:()=>Kg,jsonOrPretty:()=>TJe,mark:()=>L4,pretty:()=>jt,prettyField:()=>Zf,prettyList:()=>O4,prettyTruncatedLocatorList:()=>Zk,stripAnsi:()=>XE.default,supportsColor:()=>Xk,supportsHyperlinks:()=>N4,tuple:()=>Mu});function Oae(e){let t=["KiB","MiB","GiB","TiB"],r=t.length;for(;r>1&&e<1024**r;)r-=1;let s=1024**r;return`${Math.floor(e*100/s)/100} ${t[r-1]}`}function Jk(e,t){if(Array.isArray(t))return t.length===0?si(e,"[]",dt.CODE):si(e,"[ ",dt.CODE)+t.map(r=>Jk(e,r)).join(", ")+si(e," ]",dt.CODE);if(typeof t=="string")return si(e,JSON.stringify(t),dt.STRING);if(typeof t=="number")return si(e,JSON.stringify(t),dt.NUMBER);if(typeof t=="boolean")return si(e,JSON.stringify(t),dt.BOOLEAN);if(t===null)return si(e,"null",dt.NULL);if(typeof t=="object"&&Object.getPrototypeOf(t)===Object.prototype){let r=Object.entries(t);return r.length===0?si(e,"{}",dt.CODE):si(e,"{ ",dt.CODE)+r.map(([s,a])=>`${Jk(e,s)}: ${Jk(e,a)}`).join(", ")+si(e," }",dt.CODE)}if(typeof t>"u")return si(e,"undefined",dt.NULL);throw new Error("Assertion failed: The value doesn't seem to be a valid JSON object")}function Mu(e,t){return[t,e]}function Jg(e,t,r){return e.get("enableColors")&&r&2&&(t=vB.default.bold(t)),t}function si(e,t,r){if(!e.get("enableColors"))return t;let s=QJe.get(r);if(s===null)return t;let a=typeof s>"u"?r:F4.level>=3?s[0]:s[1],n=typeof a=="number"?T4.ansi256(a):a.startsWith("#")?T4.hex(a):T4[a];if(typeof n!="function")throw new Error(`Invalid format type ${a}`);return n(t)}function ZE(e,t,r){return e.get("enableHyperlinks")?RJe?`\x1B]8;;${r}\x1B\\${t}\x1B]8;;\x1B\\`:`\x1B]8;;${r}\x07${t}\x1B]8;;\x07`:t}function jt(e,t,r){if(t===null)return si(e,"null",dt.NULL);if(Object.hasOwn(Kk,r))return Kk[r].pretty(e,t);if(typeof t!="string")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof t}`);return si(e,t,r)}function O4(e,t,r,{separator:s=", "}={}){return[...t].map(a=>jt(e,a,r)).join(s)}function Kg(e,t){if(e===null)return null;if(Object.hasOwn(Kk,t))return Kk[t].json(e);if(typeof e!="string")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof e}`);return e}function TJe(e,t,[r,s]){return e?Kg(r,s):jt(t,r,s)}function L4(e){return{Check:si(e,"\u2713","green"),Cross:si(e,"\u2718","red"),Question:si(e,"?","cyan")}}function Zf(e,{label:t,value:[r,s]}){return`${jt(e,t,dt.CODE)}: ${jt(e,r,s)}`}function Zk(e,t,r){let s=[],a=[...t],n=r;for(;a.length>0;){let h=a[0],E=`${Yr(e,h)}, `,C=M4(h).length+2;if(s.length>0&&nh).join("").slice(0,-2);let c="X".repeat(a.length.toString().length),f=`and ${c} more.`,p=a.length;for(;s.length>1&&nh).join(""),f.replace(c,jt(e,p,dt.NUMBER))].join("")}function SB(e,{configuration:t}){let r=t.get("logFilters"),s=new Map,a=new Map,n=[];for(let C of r){let S=C.get("level");if(typeof S>"u")continue;let x=C.get("code");typeof x<"u"&&s.set(x,S);let I=C.get("text");typeof I<"u"&&a.set(I,S);let T=C.get("pattern");typeof T<"u"&&n.push([Lae.default.matcher(T,{contains:!0}),S])}n.reverse();let c=(C,S,x)=>{if(C===null||C===0)return x;let I=a.size>0||n.length>0?(0,XE.default)(S):S;if(a.size>0){let T=a.get(I);if(typeof T<"u")return T??x}if(n.length>0){for(let[T,O]of n)if(T(I))return O??x}if(s.size>0){let T=s.get(Kf(C));if(typeof T<"u")return T??x}return x},f=e.reportInfo,p=e.reportWarning,h=e.reportError,E=function(C,S,x,I){switch(c(S,x,I)){case"info":f.call(C,S,x);break;case"warning":p.call(C,S??0,x);break;case"error":h.call(C,S??0,x);break}};e.reportInfo=function(...C){return E(this,...C,"info")},e.reportWarning=function(...C){return E(this,...C,"warning")},e.reportError=function(...C){return E(this,...C,"error")}}var vB,BB,Lae,XE,dt,zk,F4,Xk,N4,T4,QJe,Xo,Kk,RJe,$k,Qc=Xe(()=>{Dt();vB=et(NE()),BB=et(Rg());Yt();Lae=et(zo()),XE=et(dk());Gx();Zo();dt={NO_HINT:"NO_HINT",ID:"ID",NULL:"NULL",SCOPE:"SCOPE",NAME:"NAME",RANGE:"RANGE",REFERENCE:"REFERENCE",NUMBER:"NUMBER",STRING:"STRING",BOOLEAN:"BOOLEAN",PATH:"PATH",URL:"URL",ADDED:"ADDED",REMOVED:"REMOVED",CODE:"CODE",INSPECT:"INSPECT",DURATION:"DURATION",SIZE:"SIZE",SIZE_DIFF:"SIZE_DIFF",IDENT:"IDENT",DESCRIPTOR:"DESCRIPTOR",LOCATOR:"LOCATOR",RESOLUTION:"RESOLUTION",DEPENDENT:"DEPENDENT",PACKAGE_EXTENSION:"PACKAGE_EXTENSION",SETTING:"SETTING",MARKDOWN:"MARKDOWN",MARKDOWN_INLINE:"MARKDOWN_INLINE"},zk=(t=>(t[t.BOLD=2]="BOLD",t))(zk||{}),F4=BB.default.GITHUB_ACTIONS?{level:2}:vB.default.supportsColor?{level:vB.default.supportsColor.level}:{level:0},Xk=F4.level!==0,N4=Xk&&!BB.default.GITHUB_ACTIONS&&!BB.default.CIRCLE&&!BB.default.GITLAB,T4=new vB.default.Instance(F4),QJe=new Map([[dt.NO_HINT,null],[dt.NULL,["#a853b5",129]],[dt.SCOPE,["#d75f00",166]],[dt.NAME,["#d7875f",173]],[dt.RANGE,["#00afaf",37]],[dt.REFERENCE,["#87afff",111]],[dt.NUMBER,["#ffd700",220]],[dt.STRING,["#b4bd68",32]],[dt.BOOLEAN,["#faa023",209]],[dt.PATH,["#d75fd7",170]],[dt.URL,["#d75fd7",170]],[dt.ADDED,["#5faf00",70]],[dt.REMOVED,["#ff3131",160]],[dt.CODE,["#87afff",111]],[dt.SIZE,["#ffd700",220]]]),Xo=e=>e;Kk={[dt.ID]:Xo({pretty:(e,t)=>typeof t=="number"?si(e,`${t}`,dt.NUMBER):si(e,t,dt.CODE),json:e=>e}),[dt.INSPECT]:Xo({pretty:(e,t)=>Jk(e,t),json:e=>e}),[dt.NUMBER]:Xo({pretty:(e,t)=>si(e,`${t}`,dt.NUMBER),json:e=>e}),[dt.IDENT]:Xo({pretty:(e,t)=>$i(e,t),json:e=>fn(e)}),[dt.LOCATOR]:Xo({pretty:(e,t)=>Yr(e,t),json:e=>ml(e)}),[dt.DESCRIPTOR]:Xo({pretty:(e,t)=>oi(e,t),json:e=>gl(e)}),[dt.RESOLUTION]:Xo({pretty:(e,{descriptor:t,locator:r})=>DB(e,t,r),json:({descriptor:e,locator:t})=>({descriptor:gl(e),locator:t!==null?ml(t):null})}),[dt.DEPENDENT]:Xo({pretty:(e,{locator:t,descriptor:r})=>U4(e,t,r),json:({locator:e,descriptor:t})=>({locator:ml(e),descriptor:gl(t)})}),[dt.PACKAGE_EXTENSION]:Xo({pretty:(e,t)=>{switch(t.type){case"Dependency":return`${$i(e,t.parentDescriptor)} \u27A4 ${si(e,"dependencies",dt.CODE)} \u27A4 ${$i(e,t.descriptor)}`;case"PeerDependency":return`${$i(e,t.parentDescriptor)} \u27A4 ${si(e,"peerDependencies",dt.CODE)} \u27A4 ${$i(e,t.descriptor)}`;case"PeerDependencyMeta":return`${$i(e,t.parentDescriptor)} \u27A4 ${si(e,"peerDependenciesMeta",dt.CODE)} \u27A4 ${$i(e,xa(t.selector))} \u27A4 ${si(e,t.key,dt.CODE)}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${t.type}`)}},json:e=>{switch(e.type){case"Dependency":return`${fn(e.parentDescriptor)} > ${fn(e.descriptor)}`;case"PeerDependency":return`${fn(e.parentDescriptor)} >> ${fn(e.descriptor)}`;case"PeerDependencyMeta":return`${fn(e.parentDescriptor)} >> ${e.selector} / ${e.key}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${e.type}`)}}}),[dt.SETTING]:Xo({pretty:(e,t)=>(e.get(t),ZE(e,si(e,t,dt.CODE),`https://yarnpkg.com/configuration/yarnrc#${t}`)),json:e=>e}),[dt.DURATION]:Xo({pretty:(e,t)=>{if(t>1e3*60){let r=Math.floor(t/1e3/60),s=Math.ceil((t-r*60*1e3)/1e3);return s===0?`${r}m`:`${r}m ${s}s`}else{let r=Math.floor(t/1e3),s=t-r*1e3;return s===0?`${r}s`:`${r}s ${s}ms`}},json:e=>e}),[dt.SIZE]:Xo({pretty:(e,t)=>si(e,Oae(t),dt.NUMBER),json:e=>e}),[dt.SIZE_DIFF]:Xo({pretty:(e,t)=>{let r=t>=0?"+":"-",s=r==="+"?dt.REMOVED:dt.ADDED;return si(e,`${r} ${Oae(Math.max(Math.abs(t),1))}`,s)},json:e=>e}),[dt.PATH]:Xo({pretty:(e,t)=>si(e,fe.fromPortablePath(t),dt.PATH),json:e=>fe.fromPortablePath(e)}),[dt.MARKDOWN]:Xo({pretty:(e,{text:t,format:r,paragraphs:s})=>Vo(t,{format:r,paragraphs:s}),json:({text:e})=>e}),[dt.MARKDOWN_INLINE]:Xo({pretty:(e,t)=>(t=t.replace(/(`+)((?:.|[\n])*?)\1/g,(r,s,a)=>jt(e,s+a+s,dt.CODE)),t=t.replace(/(\*\*)((?:.|[\n])*?)\1/g,(r,s,a)=>Jg(e,a,2)),t),json:e=>e})};RJe=!!process.env.KONSOLE_VERSION;$k=(a=>(a.Error="error",a.Warning="warning",a.Info="info",a.Discard="discard",a))($k||{})});var Mae=G($E=>{"use strict";Object.defineProperty($E,"__esModule",{value:!0});$E.splitWhen=$E.flatten=void 0;function FJe(e){return e.reduce((t,r)=>[].concat(t,r),[])}$E.flatten=FJe;function NJe(e,t){let r=[[]],s=0;for(let a of e)t(a)?(s++,r[s]=[]):r[s].push(a);return r}$E.splitWhen=NJe});var Uae=G(eQ=>{"use strict";Object.defineProperty(eQ,"__esModule",{value:!0});eQ.isEnoentCodeError=void 0;function OJe(e){return e.code==="ENOENT"}eQ.isEnoentCodeError=OJe});var _ae=G(tQ=>{"use strict";Object.defineProperty(tQ,"__esModule",{value:!0});tQ.createDirentFromStats=void 0;var _4=class{constructor(t,r){this.name=t,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function LJe(e,t){return new _4(e,t)}tQ.createDirentFromStats=LJe});var qae=G(us=>{"use strict";Object.defineProperty(us,"__esModule",{value:!0});us.convertPosixPathToPattern=us.convertWindowsPathToPattern=us.convertPathToPattern=us.escapePosixPath=us.escapeWindowsPath=us.escape=us.removeLeadingDotSegment=us.makeAbsolute=us.unixify=void 0;var MJe=Ie("os"),UJe=Ie("path"),Hae=MJe.platform()==="win32",_Je=2,HJe=/(\\?)([()*?[\]{|}]|^!|[!+@](?=\()|\\(?![!()*+?@[\]{|}]))/g,jJe=/(\\?)([()[\]{}]|^!|[!+@](?=\())/g,GJe=/^\\\\([.?])/,qJe=/\\(?![!()+@[\]{}])/g;function WJe(e){return e.replace(/\\/g,"/")}us.unixify=WJe;function YJe(e,t){return UJe.resolve(e,t)}us.makeAbsolute=YJe;function VJe(e){if(e.charAt(0)==="."){let t=e.charAt(1);if(t==="/"||t==="\\")return e.slice(_Je)}return e}us.removeLeadingDotSegment=VJe;us.escape=Hae?H4:j4;function H4(e){return e.replace(jJe,"\\$2")}us.escapeWindowsPath=H4;function j4(e){return e.replace(HJe,"\\$2")}us.escapePosixPath=j4;us.convertPathToPattern=Hae?jae:Gae;function jae(e){return H4(e).replace(GJe,"//$1").replace(qJe,"/")}us.convertWindowsPathToPattern=jae;function Gae(e){return j4(e)}us.convertPosixPathToPattern=Gae});var Yae=G((uFt,Wae)=>{Wae.exports=function(t){if(typeof t!="string"||t==="")return!1;for(var r;r=/(\\).|([@?!+*]\(.*\))/g.exec(t);){if(r[2])return!0;t=t.slice(r.index+r[0].length)}return!1}});var Kae=G((fFt,Jae)=>{var JJe=Yae(),Vae={"{":"}","(":")","[":"]"},KJe=function(e){if(e[0]==="!")return!0;for(var t=0,r=-2,s=-2,a=-2,n=-2,c=-2;tt&&(c===-1||c>s||(c=e.indexOf("\\",t),c===-1||c>s)))||a!==-1&&e[t]==="{"&&e[t+1]!=="}"&&(a=e.indexOf("}",t),a>t&&(c=e.indexOf("\\",t),c===-1||c>a))||n!==-1&&e[t]==="("&&e[t+1]==="?"&&/[:!=]/.test(e[t+2])&&e[t+3]!==")"&&(n=e.indexOf(")",t),n>t&&(c=e.indexOf("\\",t),c===-1||c>n))||r!==-1&&e[t]==="("&&e[t+1]!=="|"&&(rr&&(c=e.indexOf("\\",r),c===-1||c>n))))return!0;if(e[t]==="\\"){var f=e[t+1];t+=2;var p=Vae[f];if(p){var h=e.indexOf(p,t);h!==-1&&(t=h+1)}if(e[t]==="!")return!0}else t++}return!1},zJe=function(e){if(e[0]==="!")return!0;for(var t=0;t{"use strict";var XJe=Kae(),ZJe=Ie("path").posix.dirname,$Je=Ie("os").platform()==="win32",G4="/",eKe=/\\/g,tKe=/[\{\[].*[\}\]]$/,rKe=/(^|[^\\])([\{\[]|\([^\)]+$)/,nKe=/\\([\!\*\?\|\[\]\(\)\{\}])/g;zae.exports=function(t,r){var s=Object.assign({flipBackslashes:!0},r);s.flipBackslashes&&$Je&&t.indexOf(G4)<0&&(t=t.replace(eKe,G4)),tKe.test(t)&&(t+=G4),t+="a";do t=ZJe(t);while(XJe(t)||rKe.test(t));return t.replace(nKe,"$1")}});var sle=G(jr=>{"use strict";Object.defineProperty(jr,"__esModule",{value:!0});jr.removeDuplicateSlashes=jr.matchAny=jr.convertPatternsToRe=jr.makeRe=jr.getPatternParts=jr.expandBraceExpansion=jr.expandPatternsWithBraceExpansion=jr.isAffectDepthOfReadingPattern=jr.endsWithSlashGlobStar=jr.hasGlobStar=jr.getBaseDirectory=jr.isPatternRelatedToParentDirectory=jr.getPatternsOutsideCurrentDirectory=jr.getPatternsInsideCurrentDirectory=jr.getPositivePatterns=jr.getNegativePatterns=jr.isPositivePattern=jr.isNegativePattern=jr.convertToNegativePattern=jr.convertToPositivePattern=jr.isDynamicPattern=jr.isStaticPattern=void 0;var iKe=Ie("path"),sKe=Xae(),q4=zo(),Zae="**",oKe="\\",aKe=/[*?]|^!/,lKe=/\[[^[]*]/,cKe=/(?:^|[^!*+?@])\([^(]*\|[^|]*\)/,uKe=/[!*+?@]\([^(]*\)/,fKe=/,|\.\./,AKe=/(?!^)\/{2,}/g;function $ae(e,t={}){return!ele(e,t)}jr.isStaticPattern=$ae;function ele(e,t={}){return e===""?!1:!!(t.caseSensitiveMatch===!1||e.includes(oKe)||aKe.test(e)||lKe.test(e)||cKe.test(e)||t.extglob!==!1&&uKe.test(e)||t.braceExpansion!==!1&&pKe(e))}jr.isDynamicPattern=ele;function pKe(e){let t=e.indexOf("{");if(t===-1)return!1;let r=e.indexOf("}",t+1);if(r===-1)return!1;let s=e.slice(t,r);return fKe.test(s)}function hKe(e){return rQ(e)?e.slice(1):e}jr.convertToPositivePattern=hKe;function dKe(e){return"!"+e}jr.convertToNegativePattern=dKe;function rQ(e){return e.startsWith("!")&&e[1]!=="("}jr.isNegativePattern=rQ;function tle(e){return!rQ(e)}jr.isPositivePattern=tle;function gKe(e){return e.filter(rQ)}jr.getNegativePatterns=gKe;function mKe(e){return e.filter(tle)}jr.getPositivePatterns=mKe;function yKe(e){return e.filter(t=>!W4(t))}jr.getPatternsInsideCurrentDirectory=yKe;function EKe(e){return e.filter(W4)}jr.getPatternsOutsideCurrentDirectory=EKe;function W4(e){return e.startsWith("..")||e.startsWith("./..")}jr.isPatternRelatedToParentDirectory=W4;function IKe(e){return sKe(e,{flipBackslashes:!1})}jr.getBaseDirectory=IKe;function CKe(e){return e.includes(Zae)}jr.hasGlobStar=CKe;function rle(e){return e.endsWith("/"+Zae)}jr.endsWithSlashGlobStar=rle;function wKe(e){let t=iKe.basename(e);return rle(e)||$ae(t)}jr.isAffectDepthOfReadingPattern=wKe;function BKe(e){return e.reduce((t,r)=>t.concat(nle(r)),[])}jr.expandPatternsWithBraceExpansion=BKe;function nle(e){let t=q4.braces(e,{expand:!0,nodupes:!0,keepEscaping:!0});return t.sort((r,s)=>r.length-s.length),t.filter(r=>r!=="")}jr.expandBraceExpansion=nle;function vKe(e,t){let{parts:r}=q4.scan(e,Object.assign(Object.assign({},t),{parts:!0}));return r.length===0&&(r=[e]),r[0].startsWith("/")&&(r[0]=r[0].slice(1),r.unshift("")),r}jr.getPatternParts=vKe;function ile(e,t){return q4.makeRe(e,t)}jr.makeRe=ile;function SKe(e,t){return e.map(r=>ile(r,t))}jr.convertPatternsToRe=SKe;function DKe(e,t){return t.some(r=>r.test(e))}jr.matchAny=DKe;function bKe(e){return e.replace(AKe,"/")}jr.removeDuplicateSlashes=bKe});var cle=G((hFt,lle)=>{"use strict";var PKe=Ie("stream"),ole=PKe.PassThrough,xKe=Array.prototype.slice;lle.exports=kKe;function kKe(){let e=[],t=xKe.call(arguments),r=!1,s=t[t.length-1];s&&!Array.isArray(s)&&s.pipe==null?t.pop():s={};let a=s.end!==!1,n=s.pipeError===!0;s.objectMode==null&&(s.objectMode=!0),s.highWaterMark==null&&(s.highWaterMark=64*1024);let c=ole(s);function f(){for(let E=0,C=arguments.length;E0||(r=!1,p())}function x(I){function T(){I.removeListener("merge2UnpipeEnd",T),I.removeListener("end",T),n&&I.removeListener("error",O),S()}function O(U){c.emit("error",U)}if(I._readableState.endEmitted)return S();I.on("merge2UnpipeEnd",T),I.on("end",T),n&&I.on("error",O),I.pipe(c,{end:!1}),I.resume()}for(let I=0;I{"use strict";Object.defineProperty(nQ,"__esModule",{value:!0});nQ.merge=void 0;var QKe=cle();function RKe(e){let t=QKe(e);return e.forEach(r=>{r.once("error",s=>t.emit("error",s))}),t.once("close",()=>ule(e)),t.once("end",()=>ule(e)),t}nQ.merge=RKe;function ule(e){e.forEach(t=>t.emit("close"))}});var Ale=G(eI=>{"use strict";Object.defineProperty(eI,"__esModule",{value:!0});eI.isEmpty=eI.isString=void 0;function TKe(e){return typeof e=="string"}eI.isString=TKe;function FKe(e){return e===""}eI.isEmpty=FKe});var Qp=G($o=>{"use strict";Object.defineProperty($o,"__esModule",{value:!0});$o.string=$o.stream=$o.pattern=$o.path=$o.fs=$o.errno=$o.array=void 0;var NKe=Mae();$o.array=NKe;var OKe=Uae();$o.errno=OKe;var LKe=_ae();$o.fs=LKe;var MKe=qae();$o.path=MKe;var UKe=sle();$o.pattern=UKe;var _Ke=fle();$o.stream=_Ke;var HKe=Ale();$o.string=HKe});var gle=G(ea=>{"use strict";Object.defineProperty(ea,"__esModule",{value:!0});ea.convertPatternGroupToTask=ea.convertPatternGroupsToTasks=ea.groupPatternsByBaseDirectory=ea.getNegativePatternsAsPositive=ea.getPositivePatterns=ea.convertPatternsToTasks=ea.generate=void 0;var Uu=Qp();function jKe(e,t){let r=ple(e,t),s=ple(t.ignore,t),a=hle(r),n=dle(r,s),c=a.filter(E=>Uu.pattern.isStaticPattern(E,t)),f=a.filter(E=>Uu.pattern.isDynamicPattern(E,t)),p=Y4(c,n,!1),h=Y4(f,n,!0);return p.concat(h)}ea.generate=jKe;function ple(e,t){let r=e;return t.braceExpansion&&(r=Uu.pattern.expandPatternsWithBraceExpansion(r)),t.baseNameMatch&&(r=r.map(s=>s.includes("/")?s:`**/${s}`)),r.map(s=>Uu.pattern.removeDuplicateSlashes(s))}function Y4(e,t,r){let s=[],a=Uu.pattern.getPatternsOutsideCurrentDirectory(e),n=Uu.pattern.getPatternsInsideCurrentDirectory(e),c=V4(a),f=V4(n);return s.push(...J4(c,t,r)),"."in f?s.push(K4(".",n,t,r)):s.push(...J4(f,t,r)),s}ea.convertPatternsToTasks=Y4;function hle(e){return Uu.pattern.getPositivePatterns(e)}ea.getPositivePatterns=hle;function dle(e,t){return Uu.pattern.getNegativePatterns(e).concat(t).map(Uu.pattern.convertToPositivePattern)}ea.getNegativePatternsAsPositive=dle;function V4(e){let t={};return e.reduce((r,s)=>{let a=Uu.pattern.getBaseDirectory(s);return a in r?r[a].push(s):r[a]=[s],r},t)}ea.groupPatternsByBaseDirectory=V4;function J4(e,t,r){return Object.keys(e).map(s=>K4(s,e[s],t,r))}ea.convertPatternGroupsToTasks=J4;function K4(e,t,r,s){return{dynamic:s,positive:t,negative:r,base:e,patterns:[].concat(t,r.map(Uu.pattern.convertToNegativePattern))}}ea.convertPatternGroupToTask=K4});var yle=G(iQ=>{"use strict";Object.defineProperty(iQ,"__esModule",{value:!0});iQ.read=void 0;function GKe(e,t,r){t.fs.lstat(e,(s,a)=>{if(s!==null){mle(r,s);return}if(!a.isSymbolicLink()||!t.followSymbolicLink){z4(r,a);return}t.fs.stat(e,(n,c)=>{if(n!==null){if(t.throwErrorOnBrokenSymbolicLink){mle(r,n);return}z4(r,a);return}t.markSymbolicLink&&(c.isSymbolicLink=()=>!0),z4(r,c)})})}iQ.read=GKe;function mle(e,t){e(t)}function z4(e,t){e(null,t)}});var Ele=G(sQ=>{"use strict";Object.defineProperty(sQ,"__esModule",{value:!0});sQ.read=void 0;function qKe(e,t){let r=t.fs.lstatSync(e);if(!r.isSymbolicLink()||!t.followSymbolicLink)return r;try{let s=t.fs.statSync(e);return t.markSymbolicLink&&(s.isSymbolicLink=()=>!0),s}catch(s){if(!t.throwErrorOnBrokenSymbolicLink)return r;throw s}}sQ.read=qKe});var Ile=G(p0=>{"use strict";Object.defineProperty(p0,"__esModule",{value:!0});p0.createFileSystemAdapter=p0.FILE_SYSTEM_ADAPTER=void 0;var oQ=Ie("fs");p0.FILE_SYSTEM_ADAPTER={lstat:oQ.lstat,stat:oQ.stat,lstatSync:oQ.lstatSync,statSync:oQ.statSync};function WKe(e){return e===void 0?p0.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},p0.FILE_SYSTEM_ADAPTER),e)}p0.createFileSystemAdapter=WKe});var Cle=G(Z4=>{"use strict";Object.defineProperty(Z4,"__esModule",{value:!0});var YKe=Ile(),X4=class{constructor(t={}){this._options=t,this.followSymbolicLink=this._getValue(this._options.followSymbolicLink,!0),this.fs=YKe.createFileSystemAdapter(this._options.fs),this.markSymbolicLink=this._getValue(this._options.markSymbolicLink,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0)}_getValue(t,r){return t??r}};Z4.default=X4});var zg=G(h0=>{"use strict";Object.defineProperty(h0,"__esModule",{value:!0});h0.statSync=h0.stat=h0.Settings=void 0;var wle=yle(),VKe=Ele(),$4=Cle();h0.Settings=$4.default;function JKe(e,t,r){if(typeof t=="function"){wle.read(e,e3(),t);return}wle.read(e,e3(t),r)}h0.stat=JKe;function KKe(e,t){let r=e3(t);return VKe.read(e,r)}h0.statSync=KKe;function e3(e={}){return e instanceof $4.default?e:new $4.default(e)}});var Sle=G((vFt,vle)=>{var Ble;vle.exports=typeof queueMicrotask=="function"?queueMicrotask.bind(typeof window<"u"?window:global):e=>(Ble||(Ble=Promise.resolve())).then(e).catch(t=>setTimeout(()=>{throw t},0))});var ble=G((SFt,Dle)=>{Dle.exports=XKe;var zKe=Sle();function XKe(e,t){let r,s,a,n=!0;Array.isArray(e)?(r=[],s=e.length):(a=Object.keys(e),r={},s=a.length);function c(p){function h(){t&&t(p,r),t=null}n?zKe(h):h()}function f(p,h,E){r[p]=E,(--s===0||h)&&c(h)}s?a?a.forEach(function(p){e[p](function(h,E){f(p,h,E)})}):e.forEach(function(p,h){p(function(E,C){f(h,E,C)})}):c(null),n=!1}});var t3=G(lQ=>{"use strict";Object.defineProperty(lQ,"__esModule",{value:!0});lQ.IS_SUPPORT_READDIR_WITH_FILE_TYPES=void 0;var aQ=process.versions.node.split(".");if(aQ[0]===void 0||aQ[1]===void 0)throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`);var Ple=Number.parseInt(aQ[0],10),ZKe=Number.parseInt(aQ[1],10),xle=10,$Ke=10,eze=Ple>xle,tze=Ple===xle&&ZKe>=$Ke;lQ.IS_SUPPORT_READDIR_WITH_FILE_TYPES=eze||tze});var kle=G(cQ=>{"use strict";Object.defineProperty(cQ,"__esModule",{value:!0});cQ.createDirentFromStats=void 0;var r3=class{constructor(t,r){this.name=t,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function rze(e,t){return new r3(e,t)}cQ.createDirentFromStats=rze});var n3=G(uQ=>{"use strict";Object.defineProperty(uQ,"__esModule",{value:!0});uQ.fs=void 0;var nze=kle();uQ.fs=nze});var i3=G(fQ=>{"use strict";Object.defineProperty(fQ,"__esModule",{value:!0});fQ.joinPathSegments=void 0;function ize(e,t,r){return e.endsWith(r)?e+t:e+r+t}fQ.joinPathSegments=ize});var Ole=G(d0=>{"use strict";Object.defineProperty(d0,"__esModule",{value:!0});d0.readdir=d0.readdirWithFileTypes=d0.read=void 0;var sze=zg(),Qle=ble(),oze=t3(),Rle=n3(),Tle=i3();function aze(e,t,r){if(!t.stats&&oze.IS_SUPPORT_READDIR_WITH_FILE_TYPES){Fle(e,t,r);return}Nle(e,t,r)}d0.read=aze;function Fle(e,t,r){t.fs.readdir(e,{withFileTypes:!0},(s,a)=>{if(s!==null){AQ(r,s);return}let n=a.map(f=>({dirent:f,name:f.name,path:Tle.joinPathSegments(e,f.name,t.pathSegmentSeparator)}));if(!t.followSymbolicLinks){s3(r,n);return}let c=n.map(f=>lze(f,t));Qle(c,(f,p)=>{if(f!==null){AQ(r,f);return}s3(r,p)})})}d0.readdirWithFileTypes=Fle;function lze(e,t){return r=>{if(!e.dirent.isSymbolicLink()){r(null,e);return}t.fs.stat(e.path,(s,a)=>{if(s!==null){if(t.throwErrorOnBrokenSymbolicLink){r(s);return}r(null,e);return}e.dirent=Rle.fs.createDirentFromStats(e.name,a),r(null,e)})}}function Nle(e,t,r){t.fs.readdir(e,(s,a)=>{if(s!==null){AQ(r,s);return}let n=a.map(c=>{let f=Tle.joinPathSegments(e,c,t.pathSegmentSeparator);return p=>{sze.stat(f,t.fsStatSettings,(h,E)=>{if(h!==null){p(h);return}let C={name:c,path:f,dirent:Rle.fs.createDirentFromStats(c,E)};t.stats&&(C.stats=E),p(null,C)})}});Qle(n,(c,f)=>{if(c!==null){AQ(r,c);return}s3(r,f)})})}d0.readdir=Nle;function AQ(e,t){e(t)}function s3(e,t){e(null,t)}});var Hle=G(g0=>{"use strict";Object.defineProperty(g0,"__esModule",{value:!0});g0.readdir=g0.readdirWithFileTypes=g0.read=void 0;var cze=zg(),uze=t3(),Lle=n3(),Mle=i3();function fze(e,t){return!t.stats&&uze.IS_SUPPORT_READDIR_WITH_FILE_TYPES?Ule(e,t):_le(e,t)}g0.read=fze;function Ule(e,t){return t.fs.readdirSync(e,{withFileTypes:!0}).map(s=>{let a={dirent:s,name:s.name,path:Mle.joinPathSegments(e,s.name,t.pathSegmentSeparator)};if(a.dirent.isSymbolicLink()&&t.followSymbolicLinks)try{let n=t.fs.statSync(a.path);a.dirent=Lle.fs.createDirentFromStats(a.name,n)}catch(n){if(t.throwErrorOnBrokenSymbolicLink)throw n}return a})}g0.readdirWithFileTypes=Ule;function _le(e,t){return t.fs.readdirSync(e).map(s=>{let a=Mle.joinPathSegments(e,s,t.pathSegmentSeparator),n=cze.statSync(a,t.fsStatSettings),c={name:s,path:a,dirent:Lle.fs.createDirentFromStats(s,n)};return t.stats&&(c.stats=n),c})}g0.readdir=_le});var jle=G(m0=>{"use strict";Object.defineProperty(m0,"__esModule",{value:!0});m0.createFileSystemAdapter=m0.FILE_SYSTEM_ADAPTER=void 0;var tI=Ie("fs");m0.FILE_SYSTEM_ADAPTER={lstat:tI.lstat,stat:tI.stat,lstatSync:tI.lstatSync,statSync:tI.statSync,readdir:tI.readdir,readdirSync:tI.readdirSync};function Aze(e){return e===void 0?m0.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},m0.FILE_SYSTEM_ADAPTER),e)}m0.createFileSystemAdapter=Aze});var Gle=G(a3=>{"use strict";Object.defineProperty(a3,"__esModule",{value:!0});var pze=Ie("path"),hze=zg(),dze=jle(),o3=class{constructor(t={}){this._options=t,this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!1),this.fs=dze.createFileSystemAdapter(this._options.fs),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,pze.sep),this.stats=this._getValue(this._options.stats,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0),this.fsStatSettings=new hze.Settings({followSymbolicLink:this.followSymbolicLinks,fs:this.fs,throwErrorOnBrokenSymbolicLink:this.throwErrorOnBrokenSymbolicLink})}_getValue(t,r){return t??r}};a3.default=o3});var pQ=G(y0=>{"use strict";Object.defineProperty(y0,"__esModule",{value:!0});y0.Settings=y0.scandirSync=y0.scandir=void 0;var qle=Ole(),gze=Hle(),l3=Gle();y0.Settings=l3.default;function mze(e,t,r){if(typeof t=="function"){qle.read(e,c3(),t);return}qle.read(e,c3(t),r)}y0.scandir=mze;function yze(e,t){let r=c3(t);return gze.read(e,r)}y0.scandirSync=yze;function c3(e={}){return e instanceof l3.default?e:new l3.default(e)}});var Yle=G((NFt,Wle)=>{"use strict";function Eze(e){var t=new e,r=t;function s(){var n=t;return n.next?t=n.next:(t=new e,r=t),n.next=null,n}function a(n){r.next=n,r=n}return{get:s,release:a}}Wle.exports=Eze});var Jle=G((OFt,u3)=>{"use strict";var Ize=Yle();function Vle(e,t,r){if(typeof e=="function"&&(r=t,t=e,e=null),!(r>=1))throw new Error("fastqueue concurrency must be equal to or greater than 1");var s=Ize(Cze),a=null,n=null,c=0,f=null,p={push:T,drain:Rc,saturated:Rc,pause:E,paused:!1,get concurrency(){return r},set concurrency(ue){if(!(ue>=1))throw new Error("fastqueue concurrency must be equal to or greater than 1");if(r=ue,!p.paused)for(;a&&c=r||p.paused?n?(n.next=ge,n=ge):(a=ge,n=ge,p.saturated()):(c++,t.call(e,ge.value,ge.worked))}function O(ue,ae){var ge=s.get();ge.context=e,ge.release=U,ge.value=ue,ge.callback=ae||Rc,ge.errorHandler=f,c>=r||p.paused?a?(ge.next=a,a=ge):(a=ge,n=ge,p.saturated()):(c++,t.call(e,ge.value,ge.worked))}function U(ue){ue&&s.release(ue);var ae=a;ae&&c<=r?p.paused?c--:(n===a&&(n=null),a=ae.next,ae.next=null,t.call(e,ae.value,ae.worked),n===null&&p.empty()):--c===0&&p.drain()}function V(){a=null,n=null,p.drain=Rc}function te(){a=null,n=null,p.drain(),p.drain=Rc}function ie(ue){f=ue}}function Rc(){}function Cze(){this.value=null,this.callback=Rc,this.next=null,this.release=Rc,this.context=null,this.errorHandler=null;var e=this;this.worked=function(r,s){var a=e.callback,n=e.errorHandler,c=e.value;e.value=null,e.callback=Rc,e.errorHandler&&n(r,c),a.call(e.context,r,s),e.release(e)}}function wze(e,t,r){typeof e=="function"&&(r=t,t=e,e=null);function s(E,C){t.call(this,E).then(function(S){C(null,S)},C)}var a=Vle(e,s,r),n=a.push,c=a.unshift;return a.push=f,a.unshift=p,a.drained=h,a;function f(E){var C=new Promise(function(S,x){n(E,function(I,T){if(I){x(I);return}S(T)})});return C.catch(Rc),C}function p(E){var C=new Promise(function(S,x){c(E,function(I,T){if(I){x(I);return}S(T)})});return C.catch(Rc),C}function h(){if(a.idle())return new Promise(function(S){S()});var E=a.drain,C=new Promise(function(S){a.drain=function(){E(),S()}});return C}}u3.exports=Vle;u3.exports.promise=wze});var hQ=G($f=>{"use strict";Object.defineProperty($f,"__esModule",{value:!0});$f.joinPathSegments=$f.replacePathSegmentSeparator=$f.isAppliedFilter=$f.isFatalError=void 0;function Bze(e,t){return e.errorFilter===null?!0:!e.errorFilter(t)}$f.isFatalError=Bze;function vze(e,t){return e===null||e(t)}$f.isAppliedFilter=vze;function Sze(e,t){return e.split(/[/\\]/).join(t)}$f.replacePathSegmentSeparator=Sze;function Dze(e,t,r){return e===""?t:e.endsWith(r)?e+t:e+r+t}$f.joinPathSegments=Dze});var p3=G(A3=>{"use strict";Object.defineProperty(A3,"__esModule",{value:!0});var bze=hQ(),f3=class{constructor(t,r){this._root=t,this._settings=r,this._root=bze.replacePathSegmentSeparator(t,r.pathSegmentSeparator)}};A3.default=f3});var g3=G(d3=>{"use strict";Object.defineProperty(d3,"__esModule",{value:!0});var Pze=Ie("events"),xze=pQ(),kze=Jle(),dQ=hQ(),Qze=p3(),h3=class extends Qze.default{constructor(t,r){super(t,r),this._settings=r,this._scandir=xze.scandir,this._emitter=new Pze.EventEmitter,this._queue=kze(this._worker.bind(this),this._settings.concurrency),this._isFatalError=!1,this._isDestroyed=!1,this._queue.drain=()=>{this._isFatalError||this._emitter.emit("end")}}read(){return this._isFatalError=!1,this._isDestroyed=!1,setImmediate(()=>{this._pushToQueue(this._root,this._settings.basePath)}),this._emitter}get isDestroyed(){return this._isDestroyed}destroy(){if(this._isDestroyed)throw new Error("The reader is already destroyed");this._isDestroyed=!0,this._queue.killAndDrain()}onEntry(t){this._emitter.on("entry",t)}onError(t){this._emitter.once("error",t)}onEnd(t){this._emitter.once("end",t)}_pushToQueue(t,r){let s={directory:t,base:r};this._queue.push(s,a=>{a!==null&&this._handleError(a)})}_worker(t,r){this._scandir(t.directory,this._settings.fsScandirSettings,(s,a)=>{if(s!==null){r(s,void 0);return}for(let n of a)this._handleEntry(n,t.base);r(null,void 0)})}_handleError(t){this._isDestroyed||!dQ.isFatalError(this._settings,t)||(this._isFatalError=!0,this._isDestroyed=!0,this._emitter.emit("error",t))}_handleEntry(t,r){if(this._isDestroyed||this._isFatalError)return;let s=t.path;r!==void 0&&(t.path=dQ.joinPathSegments(r,t.name,this._settings.pathSegmentSeparator)),dQ.isAppliedFilter(this._settings.entryFilter,t)&&this._emitEntry(t),t.dirent.isDirectory()&&dQ.isAppliedFilter(this._settings.deepFilter,t)&&this._pushToQueue(s,r===void 0?void 0:t.path)}_emitEntry(t){this._emitter.emit("entry",t)}};d3.default=h3});var Kle=G(y3=>{"use strict";Object.defineProperty(y3,"__esModule",{value:!0});var Rze=g3(),m3=class{constructor(t,r){this._root=t,this._settings=r,this._reader=new Rze.default(this._root,this._settings),this._storage=[]}read(t){this._reader.onError(r=>{Tze(t,r)}),this._reader.onEntry(r=>{this._storage.push(r)}),this._reader.onEnd(()=>{Fze(t,this._storage)}),this._reader.read()}};y3.default=m3;function Tze(e,t){e(t)}function Fze(e,t){e(null,t)}});var zle=G(I3=>{"use strict";Object.defineProperty(I3,"__esModule",{value:!0});var Nze=Ie("stream"),Oze=g3(),E3=class{constructor(t,r){this._root=t,this._settings=r,this._reader=new Oze.default(this._root,this._settings),this._stream=new Nze.Readable({objectMode:!0,read:()=>{},destroy:()=>{this._reader.isDestroyed||this._reader.destroy()}})}read(){return this._reader.onError(t=>{this._stream.emit("error",t)}),this._reader.onEntry(t=>{this._stream.push(t)}),this._reader.onEnd(()=>{this._stream.push(null)}),this._reader.read(),this._stream}};I3.default=E3});var Xle=G(w3=>{"use strict";Object.defineProperty(w3,"__esModule",{value:!0});var Lze=pQ(),gQ=hQ(),Mze=p3(),C3=class extends Mze.default{constructor(){super(...arguments),this._scandir=Lze.scandirSync,this._storage=[],this._queue=new Set}read(){return this._pushToQueue(this._root,this._settings.basePath),this._handleQueue(),this._storage}_pushToQueue(t,r){this._queue.add({directory:t,base:r})}_handleQueue(){for(let t of this._queue.values())this._handleDirectory(t.directory,t.base)}_handleDirectory(t,r){try{let s=this._scandir(t,this._settings.fsScandirSettings);for(let a of s)this._handleEntry(a,r)}catch(s){this._handleError(s)}}_handleError(t){if(gQ.isFatalError(this._settings,t))throw t}_handleEntry(t,r){let s=t.path;r!==void 0&&(t.path=gQ.joinPathSegments(r,t.name,this._settings.pathSegmentSeparator)),gQ.isAppliedFilter(this._settings.entryFilter,t)&&this._pushToStorage(t),t.dirent.isDirectory()&&gQ.isAppliedFilter(this._settings.deepFilter,t)&&this._pushToQueue(s,r===void 0?void 0:t.path)}_pushToStorage(t){this._storage.push(t)}};w3.default=C3});var Zle=G(v3=>{"use strict";Object.defineProperty(v3,"__esModule",{value:!0});var Uze=Xle(),B3=class{constructor(t,r){this._root=t,this._settings=r,this._reader=new Uze.default(this._root,this._settings)}read(){return this._reader.read()}};v3.default=B3});var $le=G(D3=>{"use strict";Object.defineProperty(D3,"__esModule",{value:!0});var _ze=Ie("path"),Hze=pQ(),S3=class{constructor(t={}){this._options=t,this.basePath=this._getValue(this._options.basePath,void 0),this.concurrency=this._getValue(this._options.concurrency,Number.POSITIVE_INFINITY),this.deepFilter=this._getValue(this._options.deepFilter,null),this.entryFilter=this._getValue(this._options.entryFilter,null),this.errorFilter=this._getValue(this._options.errorFilter,null),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,_ze.sep),this.fsScandirSettings=new Hze.Settings({followSymbolicLinks:this._options.followSymbolicLinks,fs:this._options.fs,pathSegmentSeparator:this._options.pathSegmentSeparator,stats:this._options.stats,throwErrorOnBrokenSymbolicLink:this._options.throwErrorOnBrokenSymbolicLink})}_getValue(t,r){return t??r}};D3.default=S3});var yQ=G(eA=>{"use strict";Object.defineProperty(eA,"__esModule",{value:!0});eA.Settings=eA.walkStream=eA.walkSync=eA.walk=void 0;var ece=Kle(),jze=zle(),Gze=Zle(),b3=$le();eA.Settings=b3.default;function qze(e,t,r){if(typeof t=="function"){new ece.default(e,mQ()).read(t);return}new ece.default(e,mQ(t)).read(r)}eA.walk=qze;function Wze(e,t){let r=mQ(t);return new Gze.default(e,r).read()}eA.walkSync=Wze;function Yze(e,t){let r=mQ(t);return new jze.default(e,r).read()}eA.walkStream=Yze;function mQ(e={}){return e instanceof b3.default?e:new b3.default(e)}});var EQ=G(x3=>{"use strict";Object.defineProperty(x3,"__esModule",{value:!0});var Vze=Ie("path"),Jze=zg(),tce=Qp(),P3=class{constructor(t){this._settings=t,this._fsStatSettings=new Jze.Settings({followSymbolicLink:this._settings.followSymbolicLinks,fs:this._settings.fs,throwErrorOnBrokenSymbolicLink:this._settings.followSymbolicLinks})}_getFullEntryPath(t){return Vze.resolve(this._settings.cwd,t)}_makeEntry(t,r){let s={name:r,path:r,dirent:tce.fs.createDirentFromStats(r,t)};return this._settings.stats&&(s.stats=t),s}_isFatalError(t){return!tce.errno.isEnoentCodeError(t)&&!this._settings.suppressErrors}};x3.default=P3});var R3=G(Q3=>{"use strict";Object.defineProperty(Q3,"__esModule",{value:!0});var Kze=Ie("stream"),zze=zg(),Xze=yQ(),Zze=EQ(),k3=class extends Zze.default{constructor(){super(...arguments),this._walkStream=Xze.walkStream,this._stat=zze.stat}dynamic(t,r){return this._walkStream(t,r)}static(t,r){let s=t.map(this._getFullEntryPath,this),a=new Kze.PassThrough({objectMode:!0});a._write=(n,c,f)=>this._getEntry(s[n],t[n],r).then(p=>{p!==null&&r.entryFilter(p)&&a.push(p),n===s.length-1&&a.end(),f()}).catch(f);for(let n=0;nthis._makeEntry(a,r)).catch(a=>{if(s.errorFilter(a))return null;throw a})}_getStat(t){return new Promise((r,s)=>{this._stat(t,this._fsStatSettings,(a,n)=>a===null?r(n):s(a))})}};Q3.default=k3});var rce=G(F3=>{"use strict";Object.defineProperty(F3,"__esModule",{value:!0});var $ze=yQ(),eXe=EQ(),tXe=R3(),T3=class extends eXe.default{constructor(){super(...arguments),this._walkAsync=$ze.walk,this._readerStream=new tXe.default(this._settings)}dynamic(t,r){return new Promise((s,a)=>{this._walkAsync(t,r,(n,c)=>{n===null?s(c):a(n)})})}async static(t,r){let s=[],a=this._readerStream.static(t,r);return new Promise((n,c)=>{a.once("error",c),a.on("data",f=>s.push(f)),a.once("end",()=>n(s))})}};F3.default=T3});var nce=G(O3=>{"use strict";Object.defineProperty(O3,"__esModule",{value:!0});var bB=Qp(),N3=class{constructor(t,r,s){this._patterns=t,this._settings=r,this._micromatchOptions=s,this._storage=[],this._fillStorage()}_fillStorage(){for(let t of this._patterns){let r=this._getPatternSegments(t),s=this._splitSegmentsIntoSections(r);this._storage.push({complete:s.length<=1,pattern:t,segments:r,sections:s})}}_getPatternSegments(t){return bB.pattern.getPatternParts(t,this._micromatchOptions).map(s=>bB.pattern.isDynamicPattern(s,this._settings)?{dynamic:!0,pattern:s,patternRe:bB.pattern.makeRe(s,this._micromatchOptions)}:{dynamic:!1,pattern:s})}_splitSegmentsIntoSections(t){return bB.array.splitWhen(t,r=>r.dynamic&&bB.pattern.hasGlobStar(r.pattern))}};O3.default=N3});var ice=G(M3=>{"use strict";Object.defineProperty(M3,"__esModule",{value:!0});var rXe=nce(),L3=class extends rXe.default{match(t){let r=t.split("/"),s=r.length,a=this._storage.filter(n=>!n.complete||n.segments.length>s);for(let n of a){let c=n.sections[0];if(!n.complete&&s>c.length||r.every((p,h)=>{let E=n.segments[h];return!!(E.dynamic&&E.patternRe.test(p)||!E.dynamic&&E.pattern===p)}))return!0}return!1}};M3.default=L3});var sce=G(_3=>{"use strict";Object.defineProperty(_3,"__esModule",{value:!0});var IQ=Qp(),nXe=ice(),U3=class{constructor(t,r){this._settings=t,this._micromatchOptions=r}getFilter(t,r,s){let a=this._getMatcher(r),n=this._getNegativePatternsRe(s);return c=>this._filter(t,c,a,n)}_getMatcher(t){return new nXe.default(t,this._settings,this._micromatchOptions)}_getNegativePatternsRe(t){let r=t.filter(IQ.pattern.isAffectDepthOfReadingPattern);return IQ.pattern.convertPatternsToRe(r,this._micromatchOptions)}_filter(t,r,s,a){if(this._isSkippedByDeep(t,r.path)||this._isSkippedSymbolicLink(r))return!1;let n=IQ.path.removeLeadingDotSegment(r.path);return this._isSkippedByPositivePatterns(n,s)?!1:this._isSkippedByNegativePatterns(n,a)}_isSkippedByDeep(t,r){return this._settings.deep===1/0?!1:this._getEntryLevel(t,r)>=this._settings.deep}_getEntryLevel(t,r){let s=r.split("/").length;if(t==="")return s;let a=t.split("/").length;return s-a}_isSkippedSymbolicLink(t){return!this._settings.followSymbolicLinks&&t.dirent.isSymbolicLink()}_isSkippedByPositivePatterns(t,r){return!this._settings.baseNameMatch&&!r.match(t)}_isSkippedByNegativePatterns(t,r){return!IQ.pattern.matchAny(t,r)}};_3.default=U3});var oce=G(j3=>{"use strict";Object.defineProperty(j3,"__esModule",{value:!0});var Xg=Qp(),H3=class{constructor(t,r){this._settings=t,this._micromatchOptions=r,this.index=new Map}getFilter(t,r){let s=Xg.pattern.convertPatternsToRe(t,this._micromatchOptions),a=Xg.pattern.convertPatternsToRe(r,Object.assign(Object.assign({},this._micromatchOptions),{dot:!0}));return n=>this._filter(n,s,a)}_filter(t,r,s){let a=Xg.path.removeLeadingDotSegment(t.path);if(this._settings.unique&&this._isDuplicateEntry(a)||this._onlyFileFilter(t)||this._onlyDirectoryFilter(t)||this._isSkippedByAbsoluteNegativePatterns(a,s))return!1;let n=t.dirent.isDirectory(),c=this._isMatchToPatterns(a,r,n)&&!this._isMatchToPatterns(a,s,n);return this._settings.unique&&c&&this._createIndexRecord(a),c}_isDuplicateEntry(t){return this.index.has(t)}_createIndexRecord(t){this.index.set(t,void 0)}_onlyFileFilter(t){return this._settings.onlyFiles&&!t.dirent.isFile()}_onlyDirectoryFilter(t){return this._settings.onlyDirectories&&!t.dirent.isDirectory()}_isSkippedByAbsoluteNegativePatterns(t,r){if(!this._settings.absolute)return!1;let s=Xg.path.makeAbsolute(this._settings.cwd,t);return Xg.pattern.matchAny(s,r)}_isMatchToPatterns(t,r,s){let a=Xg.pattern.matchAny(t,r);return!a&&s?Xg.pattern.matchAny(t+"/",r):a}};j3.default=H3});var ace=G(q3=>{"use strict";Object.defineProperty(q3,"__esModule",{value:!0});var iXe=Qp(),G3=class{constructor(t){this._settings=t}getFilter(){return t=>this._isNonFatalError(t)}_isNonFatalError(t){return iXe.errno.isEnoentCodeError(t)||this._settings.suppressErrors}};q3.default=G3});var cce=G(Y3=>{"use strict";Object.defineProperty(Y3,"__esModule",{value:!0});var lce=Qp(),W3=class{constructor(t){this._settings=t}getTransformer(){return t=>this._transform(t)}_transform(t){let r=t.path;return this._settings.absolute&&(r=lce.path.makeAbsolute(this._settings.cwd,r),r=lce.path.unixify(r)),this._settings.markDirectories&&t.dirent.isDirectory()&&(r+="/"),this._settings.objectMode?Object.assign(Object.assign({},t),{path:r}):r}};Y3.default=W3});var CQ=G(J3=>{"use strict";Object.defineProperty(J3,"__esModule",{value:!0});var sXe=Ie("path"),oXe=sce(),aXe=oce(),lXe=ace(),cXe=cce(),V3=class{constructor(t){this._settings=t,this.errorFilter=new lXe.default(this._settings),this.entryFilter=new aXe.default(this._settings,this._getMicromatchOptions()),this.deepFilter=new oXe.default(this._settings,this._getMicromatchOptions()),this.entryTransformer=new cXe.default(this._settings)}_getRootDirectory(t){return sXe.resolve(this._settings.cwd,t.base)}_getReaderOptions(t){let r=t.base==="."?"":t.base;return{basePath:r,pathSegmentSeparator:"/",concurrency:this._settings.concurrency,deepFilter:this.deepFilter.getFilter(r,t.positive,t.negative),entryFilter:this.entryFilter.getFilter(t.positive,t.negative),errorFilter:this.errorFilter.getFilter(),followSymbolicLinks:this._settings.followSymbolicLinks,fs:this._settings.fs,stats:this._settings.stats,throwErrorOnBrokenSymbolicLink:this._settings.throwErrorOnBrokenSymbolicLink,transform:this.entryTransformer.getTransformer()}}_getMicromatchOptions(){return{dot:this._settings.dot,matchBase:this._settings.baseNameMatch,nobrace:!this._settings.braceExpansion,nocase:!this._settings.caseSensitiveMatch,noext:!this._settings.extglob,noglobstar:!this._settings.globstar,posix:!0,strictSlashes:!1}}};J3.default=V3});var uce=G(z3=>{"use strict";Object.defineProperty(z3,"__esModule",{value:!0});var uXe=rce(),fXe=CQ(),K3=class extends fXe.default{constructor(){super(...arguments),this._reader=new uXe.default(this._settings)}async read(t){let r=this._getRootDirectory(t),s=this._getReaderOptions(t);return(await this.api(r,t,s)).map(n=>s.transform(n))}api(t,r,s){return r.dynamic?this._reader.dynamic(t,s):this._reader.static(r.patterns,s)}};z3.default=K3});var fce=G(Z3=>{"use strict";Object.defineProperty(Z3,"__esModule",{value:!0});var AXe=Ie("stream"),pXe=R3(),hXe=CQ(),X3=class extends hXe.default{constructor(){super(...arguments),this._reader=new pXe.default(this._settings)}read(t){let r=this._getRootDirectory(t),s=this._getReaderOptions(t),a=this.api(r,t,s),n=new AXe.Readable({objectMode:!0,read:()=>{}});return a.once("error",c=>n.emit("error",c)).on("data",c=>n.emit("data",s.transform(c))).once("end",()=>n.emit("end")),n.once("close",()=>a.destroy()),n}api(t,r,s){return r.dynamic?this._reader.dynamic(t,s):this._reader.static(r.patterns,s)}};Z3.default=X3});var Ace=G(e8=>{"use strict";Object.defineProperty(e8,"__esModule",{value:!0});var dXe=zg(),gXe=yQ(),mXe=EQ(),$3=class extends mXe.default{constructor(){super(...arguments),this._walkSync=gXe.walkSync,this._statSync=dXe.statSync}dynamic(t,r){return this._walkSync(t,r)}static(t,r){let s=[];for(let a of t){let n=this._getFullEntryPath(a),c=this._getEntry(n,a,r);c===null||!r.entryFilter(c)||s.push(c)}return s}_getEntry(t,r,s){try{let a=this._getStat(t);return this._makeEntry(a,r)}catch(a){if(s.errorFilter(a))return null;throw a}}_getStat(t){return this._statSync(t,this._fsStatSettings)}};e8.default=$3});var pce=G(r8=>{"use strict";Object.defineProperty(r8,"__esModule",{value:!0});var yXe=Ace(),EXe=CQ(),t8=class extends EXe.default{constructor(){super(...arguments),this._reader=new yXe.default(this._settings)}read(t){let r=this._getRootDirectory(t),s=this._getReaderOptions(t);return this.api(r,t,s).map(s.transform)}api(t,r,s){return r.dynamic?this._reader.dynamic(t,s):this._reader.static(r.patterns,s)}};r8.default=t8});var hce=G(nI=>{"use strict";Object.defineProperty(nI,"__esModule",{value:!0});nI.DEFAULT_FILE_SYSTEM_ADAPTER=void 0;var rI=Ie("fs"),IXe=Ie("os"),CXe=Math.max(IXe.cpus().length,1);nI.DEFAULT_FILE_SYSTEM_ADAPTER={lstat:rI.lstat,lstatSync:rI.lstatSync,stat:rI.stat,statSync:rI.statSync,readdir:rI.readdir,readdirSync:rI.readdirSync};var n8=class{constructor(t={}){this._options=t,this.absolute=this._getValue(this._options.absolute,!1),this.baseNameMatch=this._getValue(this._options.baseNameMatch,!1),this.braceExpansion=this._getValue(this._options.braceExpansion,!0),this.caseSensitiveMatch=this._getValue(this._options.caseSensitiveMatch,!0),this.concurrency=this._getValue(this._options.concurrency,CXe),this.cwd=this._getValue(this._options.cwd,process.cwd()),this.deep=this._getValue(this._options.deep,1/0),this.dot=this._getValue(this._options.dot,!1),this.extglob=this._getValue(this._options.extglob,!0),this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!0),this.fs=this._getFileSystemMethods(this._options.fs),this.globstar=this._getValue(this._options.globstar,!0),this.ignore=this._getValue(this._options.ignore,[]),this.markDirectories=this._getValue(this._options.markDirectories,!1),this.objectMode=this._getValue(this._options.objectMode,!1),this.onlyDirectories=this._getValue(this._options.onlyDirectories,!1),this.onlyFiles=this._getValue(this._options.onlyFiles,!0),this.stats=this._getValue(this._options.stats,!1),this.suppressErrors=this._getValue(this._options.suppressErrors,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!1),this.unique=this._getValue(this._options.unique,!0),this.onlyDirectories&&(this.onlyFiles=!1),this.stats&&(this.objectMode=!0),this.ignore=[].concat(this.ignore)}_getValue(t,r){return t===void 0?r:t}_getFileSystemMethods(t={}){return Object.assign(Object.assign({},nI.DEFAULT_FILE_SYSTEM_ADAPTER),t)}};nI.default=n8});var wQ=G((aNt,gce)=>{"use strict";var dce=gle(),wXe=uce(),BXe=fce(),vXe=pce(),i8=hce(),Tc=Qp();async function s8(e,t){_u(e);let r=o8(e,wXe.default,t),s=await Promise.all(r);return Tc.array.flatten(s)}(function(e){e.glob=e,e.globSync=t,e.globStream=r,e.async=e;function t(h,E){_u(h);let C=o8(h,vXe.default,E);return Tc.array.flatten(C)}e.sync=t;function r(h,E){_u(h);let C=o8(h,BXe.default,E);return Tc.stream.merge(C)}e.stream=r;function s(h,E){_u(h);let C=[].concat(h),S=new i8.default(E);return dce.generate(C,S)}e.generateTasks=s;function a(h,E){_u(h);let C=new i8.default(E);return Tc.pattern.isDynamicPattern(h,C)}e.isDynamicPattern=a;function n(h){return _u(h),Tc.path.escape(h)}e.escapePath=n;function c(h){return _u(h),Tc.path.convertPathToPattern(h)}e.convertPathToPattern=c;let f;(function(h){function E(S){return _u(S),Tc.path.escapePosixPath(S)}h.escapePath=E;function C(S){return _u(S),Tc.path.convertPosixPathToPattern(S)}h.convertPathToPattern=C})(f=e.posix||(e.posix={}));let p;(function(h){function E(S){return _u(S),Tc.path.escapeWindowsPath(S)}h.escapePath=E;function C(S){return _u(S),Tc.path.convertWindowsPathToPattern(S)}h.convertPathToPattern=C})(p=e.win32||(e.win32={}))})(s8||(s8={}));function o8(e,t,r){let s=[].concat(e),a=new i8.default(r),n=dce.generate(s,a),c=new t(a);return n.map(c.read,c)}function _u(e){if(![].concat(e).every(s=>Tc.string.isString(s)&&!Tc.string.isEmpty(s)))throw new TypeError("Patterns must be a string (non empty) or an array of strings")}gce.exports=s8});var Ln={};Vt(Ln,{checksumFile:()=>vQ,checksumPattern:()=>SQ,makeHash:()=>fs});function fs(...e){let t=(0,BQ.createHash)("sha512"),r="";for(let s of e)typeof s=="string"?r+=s:s&&(r&&(t.update(r),r=""),t.update(s));return r&&t.update(r),t.digest("hex")}async function vQ(e,{baseFs:t,algorithm:r}={baseFs:le,algorithm:"sha512"}){let s=await t.openPromise(e,"r");try{let n=Buffer.allocUnsafeSlow(65536),c=(0,BQ.createHash)(r),f=0;for(;(f=await t.readPromise(s,n,0,65536))!==0;)c.update(f===65536?n:n.slice(0,f));return c.digest("hex")}finally{await t.closePromise(s)}}async function SQ(e,{cwd:t}){let s=(await(0,a8.default)(e,{cwd:fe.fromPortablePath(t),onlyDirectories:!0})).map(f=>`${f}/**/*`),a=await(0,a8.default)([e,...s],{cwd:fe.fromPortablePath(t),onlyFiles:!1});a.sort();let n=await Promise.all(a.map(async f=>{let p=[Buffer.from(f)],h=J.join(t,fe.toPortablePath(f)),E=await le.lstatPromise(h);return E.isSymbolicLink()?p.push(Buffer.from(await le.readlinkPromise(h))):E.isFile()&&p.push(await le.readFilePromise(h)),p.join("\0")})),c=(0,BQ.createHash)("sha512");for(let f of n)c.update(f);return c.digest("hex")}var BQ,a8,E0=Xe(()=>{Dt();BQ=Ie("crypto"),a8=et(wQ())});var j={};Vt(j,{allPeerRequests:()=>OB,areDescriptorsEqual:()=>Ice,areIdentsEqual:()=>QB,areLocatorsEqual:()=>RB,areVirtualPackagesEquivalent:()=>TXe,bindDescriptor:()=>QXe,bindLocator:()=>RXe,convertDescriptorToLocator:()=>DQ,convertLocatorToDescriptor:()=>f8,convertPackageToLocator:()=>PXe,convertToIdent:()=>bXe,convertToManifestRange:()=>GXe,copyPackage:()=>xB,devirtualizeDescriptor:()=>kB,devirtualizeLocator:()=>sI,ensureDevirtualizedDescriptor:()=>xXe,ensureDevirtualizedLocator:()=>kXe,getIdentVendorPath:()=>d8,isPackageCompatible:()=>QQ,isPackageInRange:()=>JXe,isVirtualDescriptor:()=>Rp,isVirtualLocator:()=>Hu,makeDescriptor:()=>Mn,makeIdent:()=>ka,makeLocator:()=>Js,makeRange:()=>xQ,parseDescriptor:()=>I0,parseFileStyleRange:()=>HXe,parseIdent:()=>xa,parseLocator:()=>Tp,parseRange:()=>Zg,prettyDependent:()=>U4,prettyDescriptor:()=>oi,prettyIdent:()=>$i,prettyLocator:()=>Yr,prettyLocatorNoColors:()=>M4,prettyRange:()=>aI,prettyReference:()=>FB,prettyResolution:()=>DB,prettyWorkspace:()=>NB,renamePackage:()=>A8,slugifyIdent:()=>c8,slugifyLocator:()=>oI,sortDescriptors:()=>lI,stringifyDescriptor:()=>gl,stringifyIdent:()=>fn,stringifyLocator:()=>ml,tryParseDescriptor:()=>TB,tryParseIdent:()=>Cce,tryParseLocator:()=>PQ,tryParseRange:()=>_Xe,unwrapIdentFromScope:()=>WXe,virtualizeDescriptor:()=>p8,virtualizePackage:()=>h8,wrapIdentIntoScope:()=>qXe});function ka(e,t){if(e?.startsWith("@"))throw new Error("Invalid scope: don't prefix it with '@'");return{identHash:fs(e,t),scope:e,name:t}}function Mn(e,t){return{identHash:e.identHash,scope:e.scope,name:e.name,descriptorHash:fs(e.identHash,t),range:t}}function Js(e,t){return{identHash:e.identHash,scope:e.scope,name:e.name,locatorHash:fs(e.identHash,t),reference:t}}function bXe(e){return{identHash:e.identHash,scope:e.scope,name:e.name}}function DQ(e){return{identHash:e.identHash,scope:e.scope,name:e.name,locatorHash:e.descriptorHash,reference:e.range}}function f8(e){return{identHash:e.identHash,scope:e.scope,name:e.name,descriptorHash:e.locatorHash,range:e.reference}}function PXe(e){return{identHash:e.identHash,scope:e.scope,name:e.name,locatorHash:e.locatorHash,reference:e.reference}}function A8(e,t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.locatorHash,reference:t.reference,version:e.version,languageName:e.languageName,linkType:e.linkType,conditions:e.conditions,dependencies:new Map(e.dependencies),peerDependencies:new Map(e.peerDependencies),dependenciesMeta:new Map(e.dependenciesMeta),peerDependenciesMeta:new Map(e.peerDependenciesMeta),bin:new Map(e.bin)}}function xB(e){return A8(e,e)}function p8(e,t){if(t.includes("#"))throw new Error("Invalid entropy");return Mn(e,`virtual:${t}#${e.range}`)}function h8(e,t){if(t.includes("#"))throw new Error("Invalid entropy");return A8(e,Js(e,`virtual:${t}#${e.reference}`))}function Rp(e){return e.range.startsWith(PB)}function Hu(e){return e.reference.startsWith(PB)}function kB(e){if(!Rp(e))throw new Error("Not a virtual descriptor");return Mn(e,e.range.replace(bQ,""))}function sI(e){if(!Hu(e))throw new Error("Not a virtual descriptor");return Js(e,e.reference.replace(bQ,""))}function xXe(e){return Rp(e)?Mn(e,e.range.replace(bQ,"")):e}function kXe(e){return Hu(e)?Js(e,e.reference.replace(bQ,"")):e}function QXe(e,t){return e.range.includes("::")?e:Mn(e,`${e.range}::${iI.default.stringify(t)}`)}function RXe(e,t){return e.reference.includes("::")?e:Js(e,`${e.reference}::${iI.default.stringify(t)}`)}function QB(e,t){return e.identHash===t.identHash}function Ice(e,t){return e.descriptorHash===t.descriptorHash}function RB(e,t){return e.locatorHash===t.locatorHash}function TXe(e,t){if(!Hu(e))throw new Error("Invalid package type");if(!Hu(t))throw new Error("Invalid package type");if(!QB(e,t)||e.dependencies.size!==t.dependencies.size)return!1;for(let r of e.dependencies.values()){let s=t.dependencies.get(r.identHash);if(!s||!Ice(r,s))return!1}return!0}function xa(e){let t=Cce(e);if(!t)throw new Error(`Invalid ident (${e})`);return t}function Cce(e){let t=e.match(FXe);if(!t)return null;let[,r,s]=t;return ka(typeof r<"u"?r:null,s)}function I0(e,t=!1){let r=TB(e,t);if(!r)throw new Error(`Invalid descriptor (${e})`);return r}function TB(e,t=!1){let r=t?e.match(NXe):e.match(OXe);if(!r)return null;let[,s,a,n]=r;if(n===l8)throw new Error(`Invalid range (${e})`);let c=typeof s<"u"?s:null,f=typeof n<"u"?n:l8;return Mn(ka(c,a),f)}function Tp(e,t=!1){let r=PQ(e,t);if(!r)throw new Error(`Invalid locator (${e})`);return r}function PQ(e,t=!1){let r=t?e.match(LXe):e.match(MXe);if(!r)return null;let[,s,a,n]=r;if(n==="unknown")throw new Error(`Invalid reference (${e})`);let c=typeof s<"u"?s:null,f=typeof n<"u"?n:"unknown";return Js(ka(c,a),f)}function Zg(e,t){let r=e.match(UXe);if(r===null)throw new Error(`Invalid range (${e})`);let s=typeof r[1]<"u"?r[1]:null;if(typeof t?.requireProtocol=="string"&&s!==t.requireProtocol)throw new Error(`Invalid protocol (${s})`);if(t?.requireProtocol&&s===null)throw new Error(`Missing protocol (${s})`);let a=typeof r[3]<"u"?decodeURIComponent(r[2]):null;if(t?.requireSource&&a===null)throw new Error(`Missing source (${e})`);let n=typeof r[3]<"u"?decodeURIComponent(r[3]):decodeURIComponent(r[2]),c=t?.parseSelector?iI.default.parse(n):n,f=typeof r[4]<"u"?iI.default.parse(r[4]):null;return{protocol:s,source:a,selector:c,params:f}}function _Xe(e,t){try{return Zg(e,t)}catch{return null}}function HXe(e,{protocol:t}){let{selector:r,params:s}=Zg(e,{requireProtocol:t,requireBindings:!0});if(typeof s.locator!="string")throw new Error(`Assertion failed: Invalid bindings for ${e}`);return{parentLocator:Tp(s.locator,!0),path:r}}function mce(e){return e=e.replaceAll("%","%25"),e=e.replaceAll(":","%3A"),e=e.replaceAll("#","%23"),e}function jXe(e){return e===null?!1:Object.entries(e).length>0}function xQ({protocol:e,source:t,selector:r,params:s}){let a="";return e!==null&&(a+=`${e}`),t!==null&&(a+=`${mce(t)}#`),a+=mce(r),jXe(s)&&(a+=`::${iI.default.stringify(s)}`),a}function GXe(e){let{params:t,protocol:r,source:s,selector:a}=Zg(e);for(let n in t)n.startsWith("__")&&delete t[n];return xQ({protocol:r,source:s,params:t,selector:a})}function fn(e){return e.scope?`@${e.scope}/${e.name}`:`${e.name}`}function qXe(e,t){return e.scope?ka(t,`${e.scope}__${e.name}`):ka(t,e.name)}function WXe(e,t){if(e.scope!==t)return e;let r=e.name.indexOf("__");if(r===-1)return ka(null,e.name);let s=e.name.slice(0,r),a=e.name.slice(r+2);return ka(s,a)}function gl(e){return e.scope?`@${e.scope}/${e.name}@${e.range}`:`${e.name}@${e.range}`}function ml(e){return e.scope?`@${e.scope}/${e.name}@${e.reference}`:`${e.name}@${e.reference}`}function c8(e){return e.scope!==null?`@${e.scope}-${e.name}`:e.name}function oI(e){let{protocol:t,selector:r}=Zg(e.reference),s=t!==null?t.replace(YXe,""):"exotic",a=u8.default.valid(r),n=a!==null?`${s}-${a}`:`${s}`,c=10;return e.scope?`${c8(e)}-${n}-${e.locatorHash.slice(0,c)}`:`${c8(e)}-${n}-${e.locatorHash.slice(0,c)}`}function $i(e,t){return t.scope?`${jt(e,`@${t.scope}/`,dt.SCOPE)}${jt(e,t.name,dt.NAME)}`:`${jt(e,t.name,dt.NAME)}`}function kQ(e){if(e.startsWith(PB)){let t=kQ(e.substring(e.indexOf("#")+1)),r=e.substring(PB.length,PB.length+SXe);return`${t} [${r}]`}else return e.replace(VXe,"?[...]")}function aI(e,t){return`${jt(e,kQ(t),dt.RANGE)}`}function oi(e,t){return`${$i(e,t)}${jt(e,"@",dt.RANGE)}${aI(e,t.range)}`}function FB(e,t){return`${jt(e,kQ(t),dt.REFERENCE)}`}function Yr(e,t){return`${$i(e,t)}${jt(e,"@",dt.REFERENCE)}${FB(e,t.reference)}`}function M4(e){return`${fn(e)}@${kQ(e.reference)}`}function lI(e){return Vs(e,[t=>fn(t),t=>t.range])}function NB(e,t){return $i(e,t.anchoredLocator)}function DB(e,t,r){let s=Rp(t)?kB(t):t;return r===null?`${oi(e,s)} \u2192 ${L4(e).Cross}`:s.identHash===r.identHash?`${oi(e,s)} \u2192 ${FB(e,r.reference)}`:`${oi(e,s)} \u2192 ${Yr(e,r)}`}function U4(e,t,r){return r===null?`${Yr(e,t)}`:`${Yr(e,t)} (via ${aI(e,r.range)})`}function d8(e){return`node_modules/${fn(e)}`}function JXe(e,t){return t===l8||!e.version?!0:u8.default.satisfies(e.version??"",t)}function QQ(e,t){return e.conditions?DXe(e.conditions,r=>{let[,s,a]=r.match(Ece),n=t[s];return n?n.includes(a):!0}):!0}function OB(e){let t=new Set;if("children"in e)t.add(e);else for(let r of e.requests.values())t.add(r);for(let r of t)for(let s of r.children.values())t.add(s);return t}var iI,u8,yce,PB,SXe,Ece,DXe,bQ,FXe,NXe,OXe,l8,LXe,MXe,UXe,YXe,VXe,Zo=Xe(()=>{iI=et(Ie("querystring")),u8=et(pi()),yce=et(Hie());Qc();E0();kc();Zo();PB="virtual:",SXe=5,Ece=/(os|cpu|libc)=([a-z0-9_-]+)/,DXe=(0,yce.makeParser)(Ece);bQ=/^[^#]*#/;FXe=/^(?:@([^/]+?)\/)?([^@/]+)$/;NXe=/^(?:@([^/]+?)\/)?([^@/]+?)(?:@(.+))$/,OXe=/^(?:@([^/]+?)\/)?([^@/]+?)(?:@(.+))?$/,l8="unknown";LXe=/^(?:@([^/]+?)\/)?([^@/]+?)(?:@(.+))$/,MXe=/^(?:@([^/]+?)\/)?([^@/]+?)(?:@(.+))?$/;UXe=/^([^#:]*:)?((?:(?!::)[^#])*)(?:#((?:(?!::).)*))?(?:::(.*))?$/;YXe=/:$/;VXe=/\?.*/});var wce,Bce=Xe(()=>{Zo();wce={hooks:{reduceDependency:(e,t,r,s,{resolver:a,resolveOptions:n})=>{for(let{pattern:c,reference:f}of t.topLevelWorkspace.manifest.resolutions){if(c.from&&(c.from.fullName!==fn(r)||t.configuration.normalizeLocator(Js(xa(c.from.fullName),c.from.description??r.reference)).locatorHash!==r.locatorHash)||c.descriptor.fullName!==fn(e)||t.configuration.normalizeDependency(Mn(Tp(c.descriptor.fullName),c.descriptor.description??e.range)).descriptorHash!==e.descriptorHash)continue;return a.bindDescriptor(t.configuration.normalizeDependency(Mn(e,f)),t.topLevelWorkspace.anchoredLocator,n)}return e},validateProject:async(e,t)=>{for(let r of e.workspaces){let s=NB(e.configuration,r);await e.configuration.triggerHook(a=>a.validateWorkspace,r,{reportWarning:(a,n)=>t.reportWarning(a,`${s}: ${n}`),reportError:(a,n)=>t.reportError(a,`${s}: ${n}`)})}},validateWorkspace:async(e,t)=>{let{manifest:r}=e;r.resolutions.length&&e.cwd!==e.project.cwd&&r.errors.push(new Error("Resolutions field will be ignored"));for(let s of r.errors)t.reportWarning(57,s.message)}}}});var Ii,$g=Xe(()=>{Ii=class e{static{this.protocol="workspace:"}supportsDescriptor(t,r){return!!(t.range.startsWith(e.protocol)||r.project.tryWorkspaceByDescriptor(t)!==null)}supportsLocator(t,r){return!!t.reference.startsWith(e.protocol)}shouldPersistResolution(t,r){return!1}bindDescriptor(t,r,s){return t}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){return[s.project.getWorkspaceByDescriptor(t).anchoredLocator]}async getSatisfying(t,r,s,a){let[n]=await this.getCandidates(t,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(t,r){let s=r.project.getWorkspaceByCwd(t.reference.slice(e.protocol.length));return{...t,version:s.manifest.version||"0.0.0",languageName:"unknown",linkType:"SOFT",conditions:null,dependencies:r.project.configuration.normalizeDependencyMap(new Map([...s.manifest.dependencies,...s.manifest.devDependencies])),peerDependencies:new Map([...s.manifest.peerDependencies]),dependenciesMeta:s.manifest.dependenciesMeta,peerDependenciesMeta:s.manifest.peerDependenciesMeta,bin:s.manifest.bin}}}});var kr={};Vt(kr,{SemVer:()=>Pce.SemVer,clean:()=>zXe,getComparator:()=>Dce,mergeComparators:()=>g8,satisfiesWithPrereleases:()=>tA,simplifyRanges:()=>m8,stringifyComparator:()=>bce,validRange:()=>yl});function tA(e,t,r=!1){if(!e)return!1;let s=`${t}${r}`,a=vce.get(s);if(typeof a>"u")try{a=new Fp.default.Range(t,{includePrerelease:!0,loose:r})}catch{return!1}finally{vce.set(s,a||null)}else if(a===null)return!1;let n;try{n=new Fp.default.SemVer(e,a)}catch{return!1}return a.test(n)?!0:(n.prerelease&&(n.prerelease=[]),a.set.some(c=>{for(let f of c)f.semver.prerelease&&(f.semver.prerelease=[]);return c.every(f=>f.test(n))}))}function yl(e){if(e.indexOf(":")!==-1)return null;let t=Sce.get(e);if(typeof t<"u")return t;try{t=new Fp.default.Range(e)}catch{t=null}return Sce.set(e,t),t}function zXe(e){let t=KXe.exec(e);return t?t[1]:null}function Dce(e){if(e.semver===Fp.default.Comparator.ANY)return{gt:null,lt:null};switch(e.operator){case"":return{gt:[">=",e.semver],lt:["<=",e.semver]};case">":case">=":return{gt:[e.operator,e.semver],lt:null};case"<":case"<=":return{gt:null,lt:[e.operator,e.semver]};default:throw new Error(`Assertion failed: Unexpected comparator operator (${e.operator})`)}}function g8(e){if(e.length===0)return null;let t=null,r=null;for(let s of e){if(s.gt){let a=t!==null?Fp.default.compare(s.gt[1],t[1]):null;(a===null||a>0||a===0&&s.gt[0]===">")&&(t=s.gt)}if(s.lt){let a=r!==null?Fp.default.compare(s.lt[1],r[1]):null;(a===null||a<0||a===0&&s.lt[0]==="<")&&(r=s.lt)}}if(t&&r){let s=Fp.default.compare(t[1],r[1]);if(s===0&&(t[0]===">"||r[0]==="<")||s>0)return null}return{gt:t,lt:r}}function bce(e){if(e.gt&&e.lt){if(e.gt[0]===">="&&e.lt[0]==="<="&&e.gt[1].version===e.lt[1].version)return e.gt[1].version;if(e.gt[0]===">="&&e.lt[0]==="<"){if(e.lt[1].version===`${e.gt[1].major+1}.0.0-0`)return`^${e.gt[1].version}`;if(e.lt[1].version===`${e.gt[1].major}.${e.gt[1].minor+1}.0-0`)return`~${e.gt[1].version}`}}let t=[];return e.gt&&t.push(e.gt[0]+e.gt[1].version),e.lt&&t.push(e.lt[0]+e.lt[1].version),t.length?t.join(" "):"*"}function m8(e){let t=e.map(XXe).map(s=>yl(s).set.map(a=>a.map(n=>Dce(n)))),r=t.shift().map(s=>g8(s)).filter(s=>s!==null);for(let s of t){let a=[];for(let n of r)for(let c of s){let f=g8([n,...c]);f!==null&&a.push(f)}r=a}return r.length===0?null:r.map(s=>bce(s)).join(" || ")}function XXe(e){let t=e.split("||");if(t.length>1){let r=new Set;for(let s of t)t.some(a=>a!==s&&Fp.default.subset(s,a))||r.add(s);if(r.size{Fp=et(pi()),Pce=et(pi()),vce=new Map;Sce=new Map;KXe=/^(?:[\sv=]*?)((0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?)(?:\s*)$/});function xce(e){let t=e.match(/^[ \t]+/m);return t?t[0]:" "}function kce(e){return e.charCodeAt(0)===65279?e.slice(1):e}function Qa(e){return e.replace(/\\/g,"/")}function RQ(e,{yamlCompatibilityMode:t}){return t?k4(e):typeof e>"u"||typeof e=="boolean"?e:null}function Qce(e,t){let r=t.search(/[^!]/);if(r===-1)return"invalid";let s=r%2===0?"":"!",a=t.slice(r);return`${s}${e}=${a}`}function y8(e,t){return t.length===1?Qce(e,t[0]):`(${t.map(r=>Qce(e,r)).join(" | ")})`}var Rce,_t,cI=Xe(()=>{Dt();vc();Rce=et(pi());$g();kc();Np();Zo();_t=class e{constructor(){this.indent=" ";this.name=null;this.version=null;this.os=null;this.cpu=null;this.libc=null;this.type=null;this.packageManager=null;this.private=!1;this.license=null;this.main=null;this.module=null;this.browser=null;this.languageName=null;this.bin=new Map;this.scripts=new Map;this.dependencies=new Map;this.devDependencies=new Map;this.peerDependencies=new Map;this.workspaceDefinitions=[];this.dependenciesMeta=new Map;this.peerDependenciesMeta=new Map;this.resolutions=[];this.files=null;this.publishConfig=null;this.installConfig=null;this.preferUnplugged=null;this.raw={};this.errors=[]}static{this.fileName="package.json"}static{this.allDependencies=["dependencies","devDependencies","peerDependencies"]}static{this.hardDependencies=["dependencies","devDependencies"]}static async tryFind(t,{baseFs:r=new Vn}={}){let s=J.join(t,"package.json");try{return await e.fromFile(s,{baseFs:r})}catch(a){if(a.code==="ENOENT")return null;throw a}}static async find(t,{baseFs:r}={}){let s=await e.tryFind(t,{baseFs:r});if(s===null)throw new Error("Manifest not found");return s}static async fromFile(t,{baseFs:r=new Vn}={}){let s=new e;return await s.loadFile(t,{baseFs:r}),s}static fromText(t){let r=new e;return r.loadFromText(t),r}loadFromText(t){let r;try{r=JSON.parse(kce(t)||"{}")}catch(s){throw s.message+=` (when parsing ${t})`,s}this.load(r),this.indent=xce(t)}async loadFile(t,{baseFs:r=new Vn}){let s=await r.readFilePromise(t,"utf8"),a;try{a=JSON.parse(kce(s)||"{}")}catch(n){throw n.message+=` (when parsing ${t})`,n}this.load(a),this.indent=xce(s)}load(t,{yamlCompatibilityMode:r=!1}={}){if(typeof t!="object"||t===null)throw new Error(`Utterly invalid manifest data (${t})`);this.raw=t;let s=[];if(this.name=null,typeof t.name=="string")try{this.name=xa(t.name)}catch{s.push(new Error("Parsing failed for the 'name' field"))}if(typeof t.version=="string"?this.version=t.version:this.version=null,Array.isArray(t.os)){let n=[];this.os=n;for(let c of t.os)typeof c!="string"?s.push(new Error("Parsing failed for the 'os' field")):n.push(c)}else this.os=null;if(Array.isArray(t.cpu)){let n=[];this.cpu=n;for(let c of t.cpu)typeof c!="string"?s.push(new Error("Parsing failed for the 'cpu' field")):n.push(c)}else this.cpu=null;if(Array.isArray(t.libc)){let n=[];this.libc=n;for(let c of t.libc)typeof c!="string"?s.push(new Error("Parsing failed for the 'libc' field")):n.push(c)}else this.libc=null;if(typeof t.type=="string"?this.type=t.type:this.type=null,typeof t.packageManager=="string"?this.packageManager=t.packageManager:this.packageManager=null,typeof t.private=="boolean"?this.private=t.private:this.private=!1,typeof t.license=="string"?this.license=t.license:this.license=null,typeof t.languageName=="string"?this.languageName=t.languageName:this.languageName=null,typeof t.main=="string"?this.main=Qa(t.main):this.main=null,typeof t.module=="string"?this.module=Qa(t.module):this.module=null,t.browser!=null)if(typeof t.browser=="string")this.browser=Qa(t.browser);else{this.browser=new Map;for(let[n,c]of Object.entries(t.browser))this.browser.set(Qa(n),typeof c=="string"?Qa(c):c)}else this.browser=null;if(this.bin=new Map,typeof t.bin=="string")t.bin.trim()===""?s.push(new Error("Invalid bin field")):this.name!==null?this.bin.set(this.name.name,Qa(t.bin)):s.push(new Error("String bin field, but no attached package name"));else if(typeof t.bin=="object"&&t.bin!==null)for(let[n,c]of Object.entries(t.bin)){if(typeof c!="string"||c.trim()===""){s.push(new Error(`Invalid bin definition for '${n}'`));continue}let f=xa(n);this.bin.set(f.name,Qa(c))}if(this.scripts=new Map,typeof t.scripts=="object"&&t.scripts!==null)for(let[n,c]of Object.entries(t.scripts)){if(typeof c!="string"){s.push(new Error(`Invalid script definition for '${n}'`));continue}this.scripts.set(n,c)}if(this.dependencies=new Map,typeof t.dependencies=="object"&&t.dependencies!==null)for(let[n,c]of Object.entries(t.dependencies)){if(typeof c!="string"){s.push(new Error(`Invalid dependency range for '${n}'`));continue}let f;try{f=xa(n)}catch{s.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=Mn(f,c);this.dependencies.set(p.identHash,p)}if(this.devDependencies=new Map,typeof t.devDependencies=="object"&&t.devDependencies!==null)for(let[n,c]of Object.entries(t.devDependencies)){if(typeof c!="string"){s.push(new Error(`Invalid dependency range for '${n}'`));continue}let f;try{f=xa(n)}catch{s.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=Mn(f,c);this.devDependencies.set(p.identHash,p)}if(this.peerDependencies=new Map,typeof t.peerDependencies=="object"&&t.peerDependencies!==null)for(let[n,c]of Object.entries(t.peerDependencies)){let f;try{f=xa(n)}catch{s.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}(typeof c!="string"||!c.startsWith(Ii.protocol)&&!yl(c))&&(s.push(new Error(`Invalid dependency range for '${n}'`)),c="*");let p=Mn(f,c);this.peerDependencies.set(p.identHash,p)}typeof t.workspaces=="object"&&t.workspaces!==null&&t.workspaces.nohoist&&s.push(new Error("'nohoist' is deprecated, please use 'installConfig.hoistingLimits' instead"));let a=Array.isArray(t.workspaces)?t.workspaces:typeof t.workspaces=="object"&&t.workspaces!==null&&Array.isArray(t.workspaces.packages)?t.workspaces.packages:[];this.workspaceDefinitions=[];for(let n of a){if(typeof n!="string"){s.push(new Error(`Invalid workspace definition for '${n}'`));continue}this.workspaceDefinitions.push({pattern:n})}if(this.dependenciesMeta=new Map,typeof t.dependenciesMeta=="object"&&t.dependenciesMeta!==null)for(let[n,c]of Object.entries(t.dependenciesMeta)){if(typeof c!="object"||c===null){s.push(new Error(`Invalid meta field for '${n}`));continue}let f=I0(n),p=this.ensureDependencyMeta(f),h=RQ(c.built,{yamlCompatibilityMode:r});if(h===null){s.push(new Error(`Invalid built meta field for '${n}'`));continue}let E=RQ(c.optional,{yamlCompatibilityMode:r});if(E===null){s.push(new Error(`Invalid optional meta field for '${n}'`));continue}let C=RQ(c.unplugged,{yamlCompatibilityMode:r});if(C===null){s.push(new Error(`Invalid unplugged meta field for '${n}'`));continue}Object.assign(p,{built:h,optional:E,unplugged:C})}if(this.peerDependenciesMeta=new Map,typeof t.peerDependenciesMeta=="object"&&t.peerDependenciesMeta!==null)for(let[n,c]of Object.entries(t.peerDependenciesMeta)){if(typeof c!="object"||c===null){s.push(new Error(`Invalid meta field for '${n}'`));continue}let f=I0(n),p=this.ensurePeerDependencyMeta(f),h=RQ(c.optional,{yamlCompatibilityMode:r});if(h===null){s.push(new Error(`Invalid optional meta field for '${n}'`));continue}Object.assign(p,{optional:h})}if(this.resolutions=[],typeof t.resolutions=="object"&&t.resolutions!==null)for(let[n,c]of Object.entries(t.resolutions)){if(typeof c!="string"){s.push(new Error(`Invalid resolution entry for '${n}'`));continue}try{this.resolutions.push({pattern:px(n),reference:c})}catch(f){s.push(f);continue}}if(Array.isArray(t.files)){this.files=new Set;for(let n of t.files){if(typeof n!="string"){s.push(new Error(`Invalid files entry for '${n}'`));continue}this.files.add(n)}}else this.files=null;if(typeof t.publishConfig=="object"&&t.publishConfig!==null){if(this.publishConfig={},typeof t.publishConfig.access=="string"&&(this.publishConfig.access=t.publishConfig.access),typeof t.publishConfig.main=="string"&&(this.publishConfig.main=Qa(t.publishConfig.main)),typeof t.publishConfig.module=="string"&&(this.publishConfig.module=Qa(t.publishConfig.module)),t.publishConfig.browser!=null)if(typeof t.publishConfig.browser=="string")this.publishConfig.browser=Qa(t.publishConfig.browser);else{this.publishConfig.browser=new Map;for(let[n,c]of Object.entries(t.publishConfig.browser))this.publishConfig.browser.set(Qa(n),typeof c=="string"?Qa(c):c)}if(typeof t.publishConfig.registry=="string"&&(this.publishConfig.registry=t.publishConfig.registry),typeof t.publishConfig.provenance=="boolean"&&(this.publishConfig.provenance=t.publishConfig.provenance),typeof t.publishConfig.bin=="string")this.name!==null?this.publishConfig.bin=new Map([[this.name.name,Qa(t.publishConfig.bin)]]):s.push(new Error("String bin field, but no attached package name"));else if(typeof t.publishConfig.bin=="object"&&t.publishConfig.bin!==null){this.publishConfig.bin=new Map;for(let[n,c]of Object.entries(t.publishConfig.bin)){if(typeof c!="string"){s.push(new Error(`Invalid bin definition for '${n}'`));continue}this.publishConfig.bin.set(n,Qa(c))}}if(Array.isArray(t.publishConfig.executableFiles)){this.publishConfig.executableFiles=new Set;for(let n of t.publishConfig.executableFiles){if(typeof n!="string"){s.push(new Error("Invalid executable file definition"));continue}this.publishConfig.executableFiles.add(Qa(n))}}}else this.publishConfig=null;if(typeof t.installConfig=="object"&&t.installConfig!==null){this.installConfig={};for(let n of Object.keys(t.installConfig))n==="hoistingLimits"?typeof t.installConfig.hoistingLimits=="string"?this.installConfig.hoistingLimits=t.installConfig.hoistingLimits:s.push(new Error("Invalid hoisting limits definition")):n=="selfReferences"?typeof t.installConfig.selfReferences=="boolean"?this.installConfig.selfReferences=t.installConfig.selfReferences:s.push(new Error("Invalid selfReferences definition, must be a boolean value")):s.push(new Error(`Unrecognized installConfig key: ${n}`))}else this.installConfig=null;if(typeof t.optionalDependencies=="object"&&t.optionalDependencies!==null)for(let[n,c]of Object.entries(t.optionalDependencies)){if(typeof c!="string"){s.push(new Error(`Invalid dependency range for '${n}'`));continue}let f;try{f=xa(n)}catch{s.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=Mn(f,c);this.dependencies.set(p.identHash,p);let h=Mn(f,"unknown"),E=this.ensureDependencyMeta(h);Object.assign(E,{optional:!0})}typeof t.preferUnplugged=="boolean"?this.preferUnplugged=t.preferUnplugged:this.preferUnplugged=null,this.errors=s}getForScope(t){switch(t){case"dependencies":return this.dependencies;case"devDependencies":return this.devDependencies;case"peerDependencies":return this.peerDependencies;default:throw new Error(`Unsupported value ("${t}")`)}}hasConsumerDependency(t){return!!(this.dependencies.has(t.identHash)||this.peerDependencies.has(t.identHash))}hasHardDependency(t){return!!(this.dependencies.has(t.identHash)||this.devDependencies.has(t.identHash))}hasSoftDependency(t){return!!this.peerDependencies.has(t.identHash)}hasDependency(t){return!!(this.hasHardDependency(t)||this.hasSoftDependency(t))}getConditions(){let t=[];return this.os&&this.os.length>0&&t.push(y8("os",this.os)),this.cpu&&this.cpu.length>0&&t.push(y8("cpu",this.cpu)),this.libc&&this.libc.length>0&&t.push(y8("libc",this.libc)),t.length>0?t.join(" & "):null}ensureDependencyMeta(t){if(t.range!=="unknown"&&!Rce.default.valid(t.range))throw new Error(`Invalid meta field range for '${gl(t)}'`);let r=fn(t),s=t.range!=="unknown"?t.range:null,a=this.dependenciesMeta.get(r);a||this.dependenciesMeta.set(r,a=new Map);let n=a.get(s);return n||a.set(s,n={}),n}ensurePeerDependencyMeta(t){if(t.range!=="unknown")throw new Error(`Invalid meta field range for '${gl(t)}'`);let r=fn(t),s=this.peerDependenciesMeta.get(r);return s||this.peerDependenciesMeta.set(r,s={}),s}setRawField(t,r,{after:s=[]}={}){let a=new Set(s.filter(n=>Object.hasOwn(this.raw,n)));if(a.size===0||Object.hasOwn(this.raw,t))this.raw[t]=r;else{let n=this.raw,c=this.raw={},f=!1;for(let p of Object.keys(n))c[p]=n[p],f||(a.delete(p),a.size===0&&(c[t]=r,f=!0))}}exportTo(t,{compatibilityMode:r=!0}={}){if(Object.assign(t,this.raw),this.name!==null?t.name=fn(this.name):delete t.name,this.version!==null?t.version=this.version:delete t.version,this.os!==null?t.os=this.os:delete t.os,this.cpu!==null?t.cpu=this.cpu:delete t.cpu,this.type!==null?t.type=this.type:delete t.type,this.packageManager!==null?t.packageManager=this.packageManager:delete t.packageManager,this.private?t.private=!0:delete t.private,this.license!==null?t.license=this.license:delete t.license,this.languageName!==null?t.languageName=this.languageName:delete t.languageName,this.main!==null?t.main=this.main:delete t.main,this.module!==null?t.module=this.module:delete t.module,this.browser!==null){let n=this.browser;typeof n=="string"?t.browser=n:n instanceof Map&&(t.browser=Object.assign({},...Array.from(n.keys()).sort().map(c=>({[c]:n.get(c)}))))}else delete t.browser;this.bin.size===1&&this.name!==null&&this.bin.has(this.name.name)?t.bin=this.bin.get(this.name.name):this.bin.size>0?t.bin=Object.assign({},...Array.from(this.bin.keys()).sort().map(n=>({[n]:this.bin.get(n)}))):delete t.bin,this.workspaceDefinitions.length>0?this.raw.workspaces&&!Array.isArray(this.raw.workspaces)?t.workspaces={...this.raw.workspaces,packages:this.workspaceDefinitions.map(({pattern:n})=>n)}:t.workspaces=this.workspaceDefinitions.map(({pattern:n})=>n):this.raw.workspaces&&!Array.isArray(this.raw.workspaces)&&Object.keys(this.raw.workspaces).length>0?t.workspaces=this.raw.workspaces:delete t.workspaces;let s=[],a=[];for(let n of this.dependencies.values()){let c=this.dependenciesMeta.get(fn(n)),f=!1;if(r&&c){let p=c.get(null);p&&p.optional&&(f=!0)}f?a.push(n):s.push(n)}s.length>0?t.dependencies=Object.assign({},...lI(s).map(n=>({[fn(n)]:n.range}))):delete t.dependencies,a.length>0?t.optionalDependencies=Object.assign({},...lI(a).map(n=>({[fn(n)]:n.range}))):delete t.optionalDependencies,this.devDependencies.size>0?t.devDependencies=Object.assign({},...lI(this.devDependencies.values()).map(n=>({[fn(n)]:n.range}))):delete t.devDependencies,this.peerDependencies.size>0?t.peerDependencies=Object.assign({},...lI(this.peerDependencies.values()).map(n=>({[fn(n)]:n.range}))):delete t.peerDependencies,t.dependenciesMeta={};for(let[n,c]of Vs(this.dependenciesMeta.entries(),([f,p])=>f))for(let[f,p]of Vs(c.entries(),([h,E])=>h!==null?`0${h}`:"1")){let h=f!==null?gl(Mn(xa(n),f)):n,E={...p};r&&f===null&&delete E.optional,Object.keys(E).length!==0&&(t.dependenciesMeta[h]=E)}if(Object.keys(t.dependenciesMeta).length===0&&delete t.dependenciesMeta,this.peerDependenciesMeta.size>0?t.peerDependenciesMeta=Object.assign({},...Vs(this.peerDependenciesMeta.entries(),([n,c])=>n).map(([n,c])=>({[n]:c}))):delete t.peerDependenciesMeta,this.resolutions.length>0?t.resolutions=Object.assign({},...this.resolutions.map(({pattern:n,reference:c})=>({[hx(n)]:c}))):delete t.resolutions,this.files!==null?t.files=Array.from(this.files):delete t.files,this.preferUnplugged!==null?t.preferUnplugged=this.preferUnplugged:delete t.preferUnplugged,this.scripts!==null&&this.scripts.size>0){t.scripts??={};for(let n of Object.keys(t.scripts))this.scripts.has(n)||delete t.scripts[n];for(let[n,c]of this.scripts.entries())t.scripts[n]=c}else delete t.scripts;return t}}});function $Xe(e){return typeof e.reportCode<"u"}var Tce,Fce,ZXe,Lt,yo,Fc=Xe(()=>{zl();Tce=Ie("stream"),Fce=Ie("string_decoder"),ZXe=15,Lt=class extends Error{constructor(r,s,a){super(s);this.reportExtra=a;this.reportCode=r}};yo=class{constructor(){this.cacheHits=new Set;this.cacheMisses=new Set;this.reportedInfos=new Set;this.reportedWarnings=new Set;this.reportedErrors=new Set}getRecommendedLength(){return 180}reportCacheHit(t){this.cacheHits.add(t.locatorHash)}reportCacheMiss(t,r){this.cacheMisses.add(t.locatorHash)}static progressViaCounter(t){let r=0,s,a=new Promise(p=>{s=p}),n=p=>{let h=s;a=new Promise(E=>{s=E}),r=p,h()},c=(p=0)=>{n(r+1)},f=async function*(){for(;r{r=c}),a=d4(c=>{let f=r;s=new Promise(p=>{r=p}),t=c,f()},1e3/ZXe),n=async function*(){for(;;)await s,yield{title:t}}();return{[Symbol.asyncIterator](){return n},hasProgress:!1,hasTitle:!0,setTitle:a}}async startProgressPromise(t,r){let s=this.reportProgress(t);try{return await r(t)}finally{s.stop()}}startProgressSync(t,r){let s=this.reportProgress(t);try{return r(t)}finally{s.stop()}}reportInfoOnce(t,r,s){let a=s&&s.key?s.key:r;this.reportedInfos.has(a)||(this.reportedInfos.add(a),this.reportInfo(t,r),s?.reportExtra?.(this))}reportWarningOnce(t,r,s){let a=s&&s.key?s.key:r;this.reportedWarnings.has(a)||(this.reportedWarnings.add(a),this.reportWarning(t,r),s?.reportExtra?.(this))}reportErrorOnce(t,r,s){let a=s&&s.key?s.key:r;this.reportedErrors.has(a)||(this.reportedErrors.add(a),this.reportError(t,r),s?.reportExtra?.(this))}reportExceptionOnce(t){$Xe(t)?this.reportErrorOnce(t.reportCode,t.message,{key:t,reportExtra:t.reportExtra}):this.reportErrorOnce(1,t.stack||t.message,{key:t})}createStreamReporter(t=null){let r=new Tce.PassThrough,s=new Fce.StringDecoder,a="";return r.on("data",n=>{let c=s.write(n),f;do if(f=c.indexOf(` +`),f!==-1){let p=a+c.substring(0,f);c=c.substring(f+1),a="",t!==null?this.reportInfo(null,`${t} ${p}`):this.reportInfo(null,p)}while(f!==-1);a+=c}),r.on("end",()=>{let n=s.end();n!==""&&(t!==null?this.reportInfo(null,`${t} ${n}`):this.reportInfo(null,n))}),r}}});var uI,E8=Xe(()=>{Fc();Zo();uI=class{constructor(t){this.fetchers=t}supports(t,r){return!!this.tryFetcher(t,r)}getLocalPath(t,r){return this.getFetcher(t,r).getLocalPath(t,r)}async fetch(t,r){return await this.getFetcher(t,r).fetch(t,r)}tryFetcher(t,r){let s=this.fetchers.find(a=>a.supports(t,r));return s||null}getFetcher(t,r){let s=this.fetchers.find(a=>a.supports(t,r));if(!s)throw new Lt(11,`${Yr(r.project.configuration,t)} isn't supported by any available fetcher`);return s}}});var em,I8=Xe(()=>{Zo();em=class{constructor(t){this.resolvers=t.filter(r=>r)}supportsDescriptor(t,r){return!!this.tryResolverByDescriptor(t,r)}supportsLocator(t,r){return!!this.tryResolverByLocator(t,r)}shouldPersistResolution(t,r){return this.getResolverByLocator(t,r).shouldPersistResolution(t,r)}bindDescriptor(t,r,s){return this.getResolverByDescriptor(t,s).bindDescriptor(t,r,s)}getResolutionDependencies(t,r){return this.getResolverByDescriptor(t,r).getResolutionDependencies(t,r)}async getCandidates(t,r,s){return await this.getResolverByDescriptor(t,s).getCandidates(t,r,s)}async getSatisfying(t,r,s,a){return this.getResolverByDescriptor(t,a).getSatisfying(t,r,s,a)}async resolve(t,r){return await this.getResolverByLocator(t,r).resolve(t,r)}tryResolverByDescriptor(t,r){let s=this.resolvers.find(a=>a.supportsDescriptor(t,r));return s||null}getResolverByDescriptor(t,r){let s=this.resolvers.find(a=>a.supportsDescriptor(t,r));if(!s)throw new Error(`${oi(r.project.configuration,t)} isn't supported by any available resolver`);return s}tryResolverByLocator(t,r){let s=this.resolvers.find(a=>a.supportsLocator(t,r));return s||null}getResolverByLocator(t,r){let s=this.resolvers.find(a=>a.supportsLocator(t,r));if(!s)throw new Error(`${Yr(r.project.configuration,t)} isn't supported by any available resolver`);return s}}});var fI,C8=Xe(()=>{Dt();Zo();fI=class{supports(t){return!!t.reference.startsWith("virtual:")}getLocalPath(t,r){let s=t.reference.indexOf("#");if(s===-1)throw new Error("Invalid virtual package reference");let a=t.reference.slice(s+1),n=Js(t,a);return r.fetcher.getLocalPath(n,r)}async fetch(t,r){let s=t.reference.indexOf("#");if(s===-1)throw new Error("Invalid virtual package reference");let a=t.reference.slice(s+1),n=Js(t,a),c=await r.fetcher.fetch(n,r);return await this.ensureVirtualLink(t,c,r)}getLocatorFilename(t){return oI(t)}async ensureVirtualLink(t,r,s){let a=r.packageFs.getRealPath(),n=s.project.configuration.get("virtualFolder"),c=this.getLocatorFilename(t),f=mo.makeVirtualPath(n,c,a),p=new Gf(f,{baseFs:r.packageFs,pathUtils:J});return{...r,packageFs:p}}}});var TQ,Nce=Xe(()=>{TQ=class e{static{this.protocol="virtual:"}static isVirtualDescriptor(t){return!!t.range.startsWith(e.protocol)}static isVirtualLocator(t){return!!t.reference.startsWith(e.protocol)}supportsDescriptor(t,r){return e.isVirtualDescriptor(t)}supportsLocator(t,r){return e.isVirtualLocator(t)}shouldPersistResolution(t,r){return!1}bindDescriptor(t,r,s){throw new Error('Assertion failed: calling "bindDescriptor" on a virtual descriptor is unsupported')}getResolutionDependencies(t,r){throw new Error('Assertion failed: calling "getResolutionDependencies" on a virtual descriptor is unsupported')}async getCandidates(t,r,s){throw new Error('Assertion failed: calling "getCandidates" on a virtual descriptor is unsupported')}async getSatisfying(t,r,s,a){throw new Error('Assertion failed: calling "getSatisfying" on a virtual descriptor is unsupported')}async resolve(t,r){throw new Error('Assertion failed: calling "resolve" on a virtual locator is unsupported')}}});var AI,w8=Xe(()=>{Dt();$g();AI=class{supports(t){return!!t.reference.startsWith(Ii.protocol)}getLocalPath(t,r){return this.getWorkspace(t,r).cwd}async fetch(t,r){let s=this.getWorkspace(t,r).cwd;return{packageFs:new bn(s),prefixPath:vt.dot,localPath:s}}getWorkspace(t,r){return r.project.getWorkspaceByCwd(t.reference.slice(Ii.protocol.length))}}});function LB(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Oce(e){return typeof e>"u"?3:LB(e)?0:Array.isArray(e)?1:2}function S8(e,t){return Object.hasOwn(e,t)}function tZe(e){return LB(e)&&S8(e,"onConflict")&&typeof e.onConflict=="string"}function rZe(e){if(typeof e>"u")return{onConflict:"default",value:e};if(!tZe(e))return{onConflict:"default",value:e};if(S8(e,"value"))return e;let{onConflict:t,...r}=e;return{onConflict:t,value:r}}function Lce(e,t){let r=LB(e)&&S8(e,t)?e[t]:void 0;return rZe(r)}function pI(e,t){return[e,t,Mce]}function D8(e){return Array.isArray(e)?e[2]===Mce:!1}function B8(e,t){if(LB(e)){let r={};for(let s of Object.keys(e))r[s]=B8(e[s],t);return pI(t,r)}return Array.isArray(e)?pI(t,e.map(r=>B8(r,t))):pI(t,e)}function v8(e,t,r,s,a){let n,c=[],f=a,p=0;for(let E=a-1;E>=s;--E){let[C,S]=e[E],{onConflict:x,value:I}=Lce(S,r),T=Oce(I);if(T!==3){if(n??=T,T!==n||x==="hardReset"){p=f;break}if(T===2)return pI(C,I);if(c.unshift([C,I]),x==="reset"){p=E;break}x==="extend"&&E===s&&(s=0),f=E}}if(typeof n>"u")return null;let h=c.map(([E])=>E).join(", ");switch(n){case 1:return pI(h,new Array().concat(...c.map(([E,C])=>C.map(S=>B8(S,E)))));case 0:{let E=Object.assign({},...c.map(([,T])=>T)),C=Object.keys(E),S={},x=e.map(([T,O])=>[T,Lce(O,r).value]),I=eZe(x,([T,O])=>{let U=Oce(O);return U!==0&&U!==3});if(I!==-1){let T=x.slice(I+1);for(let O of C)S[O]=v8(T,t,O,0,T.length)}else for(let T of C)S[T]=v8(x,t,T,p,x.length);return pI(h,S)}default:throw new Error("Assertion failed: Non-extendable value type")}}function Uce(e){return v8(e.map(([t,r])=>[t,{".":r}]),[],".",0,e.length)}function MB(e){return D8(e)?e[1]:e}function FQ(e){let t=D8(e)?e[1]:e;if(Array.isArray(t))return t.map(r=>FQ(r));if(LB(t)){let r={};for(let[s,a]of Object.entries(t))r[s]=FQ(a);return r}return t}function b8(e){return D8(e)?e[0]:null}var eZe,Mce,_ce=Xe(()=>{eZe=(e,t,r)=>{let s=[...e];return s.reverse(),s.findIndex(t,r)};Mce=Symbol()});var NQ={};Vt(NQ,{getDefaultGlobalFolder:()=>x8,getHomeFolder:()=>hI,isFolderInside:()=>k8});function x8(){if(process.platform==="win32"){let e=fe.toPortablePath(process.env.LOCALAPPDATA||fe.join((0,P8.homedir)(),"AppData","Local"));return J.resolve(e,"Yarn/Berry")}if(process.env.XDG_DATA_HOME){let e=fe.toPortablePath(process.env.XDG_DATA_HOME);return J.resolve(e,"yarn/berry")}return J.resolve(hI(),".yarn/berry")}function hI(){return fe.toPortablePath((0,P8.homedir)()||"/usr/local/share")}function k8(e,t){let r=J.relative(t,e);return r&&!r.startsWith("..")&&!J.isAbsolute(r)}var P8,OQ=Xe(()=>{Dt();P8=Ie("os")});var Gce=G((NNt,jce)=>{"use strict";var Q8=Ie("https"),R8=Ie("http"),{URL:Hce}=Ie("url"),T8=class extends R8.Agent{constructor(t){let{proxy:r,proxyRequestOptions:s,...a}=t;super(a),this.proxy=typeof r=="string"?new Hce(r):r,this.proxyRequestOptions=s||{}}createConnection(t,r){let s={...this.proxyRequestOptions,method:"CONNECT",host:this.proxy.hostname,port:this.proxy.port,path:`${t.host}:${t.port}`,setHost:!1,headers:{...this.proxyRequestOptions.headers,connection:this.keepAlive?"keep-alive":"close",host:`${t.host}:${t.port}`},agent:!1,timeout:t.timeout||0};if(this.proxy.username||this.proxy.password){let n=Buffer.from(`${decodeURIComponent(this.proxy.username||"")}:${decodeURIComponent(this.proxy.password||"")}`).toString("base64");s.headers["proxy-authorization"]=`Basic ${n}`}this.proxy.protocol==="https:"&&(s.servername=this.proxy.hostname);let a=(this.proxy.protocol==="http:"?R8:Q8).request(s);a.once("connect",(n,c,f)=>{a.removeAllListeners(),c.removeAllListeners(),n.statusCode===200?r(null,c):(c.destroy(),r(new Error(`Bad response: ${n.statusCode}`),null))}),a.once("timeout",()=>{a.destroy(new Error("Proxy timeout"))}),a.once("error",n=>{a.removeAllListeners(),r(n,null)}),a.end()}},F8=class extends Q8.Agent{constructor(t){let{proxy:r,proxyRequestOptions:s,...a}=t;super(a),this.proxy=typeof r=="string"?new Hce(r):r,this.proxyRequestOptions=s||{}}createConnection(t,r){let s={...this.proxyRequestOptions,method:"CONNECT",host:this.proxy.hostname,port:this.proxy.port,path:`${t.host}:${t.port}`,setHost:!1,headers:{...this.proxyRequestOptions.headers,connection:this.keepAlive?"keep-alive":"close",host:`${t.host}:${t.port}`},agent:!1,timeout:t.timeout||0};if(this.proxy.username||this.proxy.password){let n=Buffer.from(`${decodeURIComponent(this.proxy.username||"")}:${decodeURIComponent(this.proxy.password||"")}`).toString("base64");s.headers["proxy-authorization"]=`Basic ${n}`}this.proxy.protocol==="https:"&&(s.servername=this.proxy.hostname);let a=(this.proxy.protocol==="http:"?R8:Q8).request(s);a.once("connect",(n,c,f)=>{if(a.removeAllListeners(),c.removeAllListeners(),n.statusCode===200){let p=super.createConnection({...t,socket:c});r(null,p)}else c.destroy(),r(new Error(`Bad response: ${n.statusCode}`),null)}),a.once("timeout",()=>{a.destroy(new Error("Proxy timeout"))}),a.once("error",n=>{a.removeAllListeners(),r(n,null)}),a.end()}};jce.exports={HttpProxyAgent:T8,HttpsProxyAgent:F8}});var N8,qce,Wce,Yce=Xe(()=>{N8=et(Gce(),1),qce=N8.default.HttpProxyAgent,Wce=N8.default.HttpsProxyAgent});var Lp=G((Op,LQ)=>{"use strict";Object.defineProperty(Op,"__esModule",{value:!0});var Vce=["Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"];function iZe(e){return Vce.includes(e)}var sZe=["Function","Generator","AsyncGenerator","GeneratorFunction","AsyncGeneratorFunction","AsyncFunction","Observable","Array","Buffer","Blob","Object","RegExp","Date","Error","Map","Set","WeakMap","WeakSet","ArrayBuffer","SharedArrayBuffer","DataView","Promise","URL","FormData","URLSearchParams","HTMLElement",...Vce];function oZe(e){return sZe.includes(e)}var aZe=["null","undefined","string","number","bigint","boolean","symbol"];function lZe(e){return aZe.includes(e)}function dI(e){return t=>typeof t===e}var{toString:Jce}=Object.prototype,UB=e=>{let t=Jce.call(e).slice(8,-1);if(/HTML\w+Element/.test(t)&&Pe.domElement(e))return"HTMLElement";if(oZe(t))return t},hi=e=>t=>UB(t)===e;function Pe(e){if(e===null)return"null";switch(typeof e){case"undefined":return"undefined";case"string":return"string";case"number":return"number";case"boolean":return"boolean";case"function":return"Function";case"bigint":return"bigint";case"symbol":return"symbol";default:}if(Pe.observable(e))return"Observable";if(Pe.array(e))return"Array";if(Pe.buffer(e))return"Buffer";let t=UB(e);if(t)return t;if(e instanceof String||e instanceof Boolean||e instanceof Number)throw new TypeError("Please don't use object wrappers for primitive types");return"Object"}Pe.undefined=dI("undefined");Pe.string=dI("string");var cZe=dI("number");Pe.number=e=>cZe(e)&&!Pe.nan(e);Pe.bigint=dI("bigint");Pe.function_=dI("function");Pe.null_=e=>e===null;Pe.class_=e=>Pe.function_(e)&&e.toString().startsWith("class ");Pe.boolean=e=>e===!0||e===!1;Pe.symbol=dI("symbol");Pe.numericString=e=>Pe.string(e)&&!Pe.emptyStringOrWhitespace(e)&&!Number.isNaN(Number(e));Pe.array=(e,t)=>Array.isArray(e)?Pe.function_(t)?e.every(t):!0:!1;Pe.buffer=e=>{var t,r,s,a;return(a=(s=(r=(t=e)===null||t===void 0?void 0:t.constructor)===null||r===void 0?void 0:r.isBuffer)===null||s===void 0?void 0:s.call(r,e))!==null&&a!==void 0?a:!1};Pe.blob=e=>hi("Blob")(e);Pe.nullOrUndefined=e=>Pe.null_(e)||Pe.undefined(e);Pe.object=e=>!Pe.null_(e)&&(typeof e=="object"||Pe.function_(e));Pe.iterable=e=>{var t;return Pe.function_((t=e)===null||t===void 0?void 0:t[Symbol.iterator])};Pe.asyncIterable=e=>{var t;return Pe.function_((t=e)===null||t===void 0?void 0:t[Symbol.asyncIterator])};Pe.generator=e=>{var t,r;return Pe.iterable(e)&&Pe.function_((t=e)===null||t===void 0?void 0:t.next)&&Pe.function_((r=e)===null||r===void 0?void 0:r.throw)};Pe.asyncGenerator=e=>Pe.asyncIterable(e)&&Pe.function_(e.next)&&Pe.function_(e.throw);Pe.nativePromise=e=>hi("Promise")(e);var uZe=e=>{var t,r;return Pe.function_((t=e)===null||t===void 0?void 0:t.then)&&Pe.function_((r=e)===null||r===void 0?void 0:r.catch)};Pe.promise=e=>Pe.nativePromise(e)||uZe(e);Pe.generatorFunction=hi("GeneratorFunction");Pe.asyncGeneratorFunction=e=>UB(e)==="AsyncGeneratorFunction";Pe.asyncFunction=e=>UB(e)==="AsyncFunction";Pe.boundFunction=e=>Pe.function_(e)&&!e.hasOwnProperty("prototype");Pe.regExp=hi("RegExp");Pe.date=hi("Date");Pe.error=hi("Error");Pe.map=e=>hi("Map")(e);Pe.set=e=>hi("Set")(e);Pe.weakMap=e=>hi("WeakMap")(e);Pe.weakSet=e=>hi("WeakSet")(e);Pe.int8Array=hi("Int8Array");Pe.uint8Array=hi("Uint8Array");Pe.uint8ClampedArray=hi("Uint8ClampedArray");Pe.int16Array=hi("Int16Array");Pe.uint16Array=hi("Uint16Array");Pe.int32Array=hi("Int32Array");Pe.uint32Array=hi("Uint32Array");Pe.float32Array=hi("Float32Array");Pe.float64Array=hi("Float64Array");Pe.bigInt64Array=hi("BigInt64Array");Pe.bigUint64Array=hi("BigUint64Array");Pe.arrayBuffer=hi("ArrayBuffer");Pe.sharedArrayBuffer=hi("SharedArrayBuffer");Pe.dataView=hi("DataView");Pe.enumCase=(e,t)=>Object.values(t).includes(e);Pe.directInstanceOf=(e,t)=>Object.getPrototypeOf(e)===t.prototype;Pe.urlInstance=e=>hi("URL")(e);Pe.urlString=e=>{if(!Pe.string(e))return!1;try{return new URL(e),!0}catch{return!1}};Pe.truthy=e=>!!e;Pe.falsy=e=>!e;Pe.nan=e=>Number.isNaN(e);Pe.primitive=e=>Pe.null_(e)||lZe(typeof e);Pe.integer=e=>Number.isInteger(e);Pe.safeInteger=e=>Number.isSafeInteger(e);Pe.plainObject=e=>{if(Jce.call(e)!=="[object Object]")return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.getPrototypeOf({})};Pe.typedArray=e=>iZe(UB(e));var fZe=e=>Pe.safeInteger(e)&&e>=0;Pe.arrayLike=e=>!Pe.nullOrUndefined(e)&&!Pe.function_(e)&&fZe(e.length);Pe.inRange=(e,t)=>{if(Pe.number(t))return e>=Math.min(0,t)&&e<=Math.max(t,0);if(Pe.array(t)&&t.length===2)return e>=Math.min(...t)&&e<=Math.max(...t);throw new TypeError(`Invalid range: ${JSON.stringify(t)}`)};var AZe=1,pZe=["innerHTML","ownerDocument","style","attributes","nodeValue"];Pe.domElement=e=>Pe.object(e)&&e.nodeType===AZe&&Pe.string(e.nodeName)&&!Pe.plainObject(e)&&pZe.every(t=>t in e);Pe.observable=e=>{var t,r,s,a;return e?e===((r=(t=e)[Symbol.observable])===null||r===void 0?void 0:r.call(t))||e===((a=(s=e)["@@observable"])===null||a===void 0?void 0:a.call(s)):!1};Pe.nodeStream=e=>Pe.object(e)&&Pe.function_(e.pipe)&&!Pe.observable(e);Pe.infinite=e=>e===1/0||e===-1/0;var Kce=e=>t=>Pe.integer(t)&&Math.abs(t%2)===e;Pe.evenInteger=Kce(0);Pe.oddInteger=Kce(1);Pe.emptyArray=e=>Pe.array(e)&&e.length===0;Pe.nonEmptyArray=e=>Pe.array(e)&&e.length>0;Pe.emptyString=e=>Pe.string(e)&&e.length===0;var hZe=e=>Pe.string(e)&&!/\S/.test(e);Pe.emptyStringOrWhitespace=e=>Pe.emptyString(e)||hZe(e);Pe.nonEmptyString=e=>Pe.string(e)&&e.length>0;Pe.nonEmptyStringAndNotWhitespace=e=>Pe.string(e)&&!Pe.emptyStringOrWhitespace(e);Pe.emptyObject=e=>Pe.object(e)&&!Pe.map(e)&&!Pe.set(e)&&Object.keys(e).length===0;Pe.nonEmptyObject=e=>Pe.object(e)&&!Pe.map(e)&&!Pe.set(e)&&Object.keys(e).length>0;Pe.emptySet=e=>Pe.set(e)&&e.size===0;Pe.nonEmptySet=e=>Pe.set(e)&&e.size>0;Pe.emptyMap=e=>Pe.map(e)&&e.size===0;Pe.nonEmptyMap=e=>Pe.map(e)&&e.size>0;Pe.propertyKey=e=>Pe.any([Pe.string,Pe.number,Pe.symbol],e);Pe.formData=e=>hi("FormData")(e);Pe.urlSearchParams=e=>hi("URLSearchParams")(e);var zce=(e,t,r)=>{if(!Pe.function_(t))throw new TypeError(`Invalid predicate: ${JSON.stringify(t)}`);if(r.length===0)throw new TypeError("Invalid number of values");return e.call(r,t)};Pe.any=(e,...t)=>(Pe.array(e)?e:[e]).some(s=>zce(Array.prototype.some,s,t));Pe.all=(e,...t)=>zce(Array.prototype.every,e,t);var Ht=(e,t,r,s={})=>{if(!e){let{multipleValues:a}=s,n=a?`received values of types ${[...new Set(r.map(c=>`\`${Pe(c)}\``))].join(", ")}`:`received value of type \`${Pe(r)}\``;throw new TypeError(`Expected value which is \`${t}\`, ${n}.`)}};Op.assert={undefined:e=>Ht(Pe.undefined(e),"undefined",e),string:e=>Ht(Pe.string(e),"string",e),number:e=>Ht(Pe.number(e),"number",e),bigint:e=>Ht(Pe.bigint(e),"bigint",e),function_:e=>Ht(Pe.function_(e),"Function",e),null_:e=>Ht(Pe.null_(e),"null",e),class_:e=>Ht(Pe.class_(e),"Class",e),boolean:e=>Ht(Pe.boolean(e),"boolean",e),symbol:e=>Ht(Pe.symbol(e),"symbol",e),numericString:e=>Ht(Pe.numericString(e),"string with a number",e),array:(e,t)=>{Ht(Pe.array(e),"Array",e),t&&e.forEach(t)},buffer:e=>Ht(Pe.buffer(e),"Buffer",e),blob:e=>Ht(Pe.blob(e),"Blob",e),nullOrUndefined:e=>Ht(Pe.nullOrUndefined(e),"null or undefined",e),object:e=>Ht(Pe.object(e),"Object",e),iterable:e=>Ht(Pe.iterable(e),"Iterable",e),asyncIterable:e=>Ht(Pe.asyncIterable(e),"AsyncIterable",e),generator:e=>Ht(Pe.generator(e),"Generator",e),asyncGenerator:e=>Ht(Pe.asyncGenerator(e),"AsyncGenerator",e),nativePromise:e=>Ht(Pe.nativePromise(e),"native Promise",e),promise:e=>Ht(Pe.promise(e),"Promise",e),generatorFunction:e=>Ht(Pe.generatorFunction(e),"GeneratorFunction",e),asyncGeneratorFunction:e=>Ht(Pe.asyncGeneratorFunction(e),"AsyncGeneratorFunction",e),asyncFunction:e=>Ht(Pe.asyncFunction(e),"AsyncFunction",e),boundFunction:e=>Ht(Pe.boundFunction(e),"Function",e),regExp:e=>Ht(Pe.regExp(e),"RegExp",e),date:e=>Ht(Pe.date(e),"Date",e),error:e=>Ht(Pe.error(e),"Error",e),map:e=>Ht(Pe.map(e),"Map",e),set:e=>Ht(Pe.set(e),"Set",e),weakMap:e=>Ht(Pe.weakMap(e),"WeakMap",e),weakSet:e=>Ht(Pe.weakSet(e),"WeakSet",e),int8Array:e=>Ht(Pe.int8Array(e),"Int8Array",e),uint8Array:e=>Ht(Pe.uint8Array(e),"Uint8Array",e),uint8ClampedArray:e=>Ht(Pe.uint8ClampedArray(e),"Uint8ClampedArray",e),int16Array:e=>Ht(Pe.int16Array(e),"Int16Array",e),uint16Array:e=>Ht(Pe.uint16Array(e),"Uint16Array",e),int32Array:e=>Ht(Pe.int32Array(e),"Int32Array",e),uint32Array:e=>Ht(Pe.uint32Array(e),"Uint32Array",e),float32Array:e=>Ht(Pe.float32Array(e),"Float32Array",e),float64Array:e=>Ht(Pe.float64Array(e),"Float64Array",e),bigInt64Array:e=>Ht(Pe.bigInt64Array(e),"BigInt64Array",e),bigUint64Array:e=>Ht(Pe.bigUint64Array(e),"BigUint64Array",e),arrayBuffer:e=>Ht(Pe.arrayBuffer(e),"ArrayBuffer",e),sharedArrayBuffer:e=>Ht(Pe.sharedArrayBuffer(e),"SharedArrayBuffer",e),dataView:e=>Ht(Pe.dataView(e),"DataView",e),enumCase:(e,t)=>Ht(Pe.enumCase(e,t),"EnumCase",e),urlInstance:e=>Ht(Pe.urlInstance(e),"URL",e),urlString:e=>Ht(Pe.urlString(e),"string with a URL",e),truthy:e=>Ht(Pe.truthy(e),"truthy",e),falsy:e=>Ht(Pe.falsy(e),"falsy",e),nan:e=>Ht(Pe.nan(e),"NaN",e),primitive:e=>Ht(Pe.primitive(e),"primitive",e),integer:e=>Ht(Pe.integer(e),"integer",e),safeInteger:e=>Ht(Pe.safeInteger(e),"integer",e),plainObject:e=>Ht(Pe.plainObject(e),"plain object",e),typedArray:e=>Ht(Pe.typedArray(e),"TypedArray",e),arrayLike:e=>Ht(Pe.arrayLike(e),"array-like",e),domElement:e=>Ht(Pe.domElement(e),"HTMLElement",e),observable:e=>Ht(Pe.observable(e),"Observable",e),nodeStream:e=>Ht(Pe.nodeStream(e),"Node.js Stream",e),infinite:e=>Ht(Pe.infinite(e),"infinite number",e),emptyArray:e=>Ht(Pe.emptyArray(e),"empty array",e),nonEmptyArray:e=>Ht(Pe.nonEmptyArray(e),"non-empty array",e),emptyString:e=>Ht(Pe.emptyString(e),"empty string",e),emptyStringOrWhitespace:e=>Ht(Pe.emptyStringOrWhitespace(e),"empty string or whitespace",e),nonEmptyString:e=>Ht(Pe.nonEmptyString(e),"non-empty string",e),nonEmptyStringAndNotWhitespace:e=>Ht(Pe.nonEmptyStringAndNotWhitespace(e),"non-empty string and not whitespace",e),emptyObject:e=>Ht(Pe.emptyObject(e),"empty object",e),nonEmptyObject:e=>Ht(Pe.nonEmptyObject(e),"non-empty object",e),emptySet:e=>Ht(Pe.emptySet(e),"empty set",e),nonEmptySet:e=>Ht(Pe.nonEmptySet(e),"non-empty set",e),emptyMap:e=>Ht(Pe.emptyMap(e),"empty map",e),nonEmptyMap:e=>Ht(Pe.nonEmptyMap(e),"non-empty map",e),propertyKey:e=>Ht(Pe.propertyKey(e),"PropertyKey",e),formData:e=>Ht(Pe.formData(e),"FormData",e),urlSearchParams:e=>Ht(Pe.urlSearchParams(e),"URLSearchParams",e),evenInteger:e=>Ht(Pe.evenInteger(e),"even integer",e),oddInteger:e=>Ht(Pe.oddInteger(e),"odd integer",e),directInstanceOf:(e,t)=>Ht(Pe.directInstanceOf(e,t),"T",e),inRange:(e,t)=>Ht(Pe.inRange(e,t),"in range",e),any:(e,...t)=>Ht(Pe.any(e,...t),"predicate returns truthy for any value",t,{multipleValues:!0}),all:(e,...t)=>Ht(Pe.all(e,...t),"predicate returns truthy for all values",t,{multipleValues:!0})};Object.defineProperties(Pe,{class:{value:Pe.class_},function:{value:Pe.function_},null:{value:Pe.null_}});Object.defineProperties(Op.assert,{class:{value:Op.assert.class_},function:{value:Op.assert.function_},null:{value:Op.assert.null_}});Op.default=Pe;LQ.exports=Pe;LQ.exports.default=Pe;LQ.exports.assert=Op.assert});var Xce=G((LNt,O8)=>{"use strict";var MQ=class extends Error{constructor(t){super(t||"Promise was canceled"),this.name="CancelError"}get isCanceled(){return!0}},UQ=class e{static fn(t){return(...r)=>new e((s,a,n)=>{r.push(n),t(...r).then(s,a)})}constructor(t){this._cancelHandlers=[],this._isPending=!0,this._isCanceled=!1,this._rejectOnCancel=!0,this._promise=new Promise((r,s)=>{this._reject=s;let a=f=>{this._isPending=!1,r(f)},n=f=>{this._isPending=!1,s(f)},c=f=>{if(!this._isPending)throw new Error("The `onCancel` handler was attached after the promise settled.");this._cancelHandlers.push(f)};return Object.defineProperties(c,{shouldReject:{get:()=>this._rejectOnCancel,set:f=>{this._rejectOnCancel=f}}}),t(a,n,c)})}then(t,r){return this._promise.then(t,r)}catch(t){return this._promise.catch(t)}finally(t){return this._promise.finally(t)}cancel(t){if(!(!this._isPending||this._isCanceled)){if(this._cancelHandlers.length>0)try{for(let r of this._cancelHandlers)r()}catch(r){this._reject(r)}this._isCanceled=!0,this._rejectOnCancel&&this._reject(new MQ(t))}}get isCanceled(){return this._isCanceled}};Object.setPrototypeOf(UQ.prototype,Promise.prototype);O8.exports=UQ;O8.exports.CancelError=MQ});var Zce=G((M8,U8)=>{"use strict";Object.defineProperty(M8,"__esModule",{value:!0});function dZe(e){return e.encrypted}var L8=(e,t)=>{let r;typeof t=="function"?r={connect:t}:r=t;let s=typeof r.connect=="function",a=typeof r.secureConnect=="function",n=typeof r.close=="function",c=()=>{s&&r.connect(),dZe(e)&&a&&(e.authorized?r.secureConnect():e.authorizationError||e.once("secureConnect",r.secureConnect)),n&&e.once("close",r.close)};e.writable&&!e.connecting?c():e.connecting?e.once("connect",c):e.destroyed&&n&&r.close(e._hadError)};M8.default=L8;U8.exports=L8;U8.exports.default=L8});var $ce=G((H8,j8)=>{"use strict";Object.defineProperty(H8,"__esModule",{value:!0});var gZe=Zce(),mZe=Number(process.versions.node.split(".")[0]),_8=e=>{let t={start:Date.now(),socket:void 0,lookup:void 0,connect:void 0,secureConnect:void 0,upload:void 0,response:void 0,end:void 0,error:void 0,abort:void 0,phases:{wait:void 0,dns:void 0,tcp:void 0,tls:void 0,request:void 0,firstByte:void 0,download:void 0,total:void 0}};e.timings=t;let r=c=>{let f=c.emit.bind(c);c.emit=(p,...h)=>(p==="error"&&(t.error=Date.now(),t.phases.total=t.error-t.start,c.emit=f),f(p,...h))};r(e),e.prependOnceListener("abort",()=>{t.abort=Date.now(),(!t.response||mZe>=13)&&(t.phases.total=Date.now()-t.start)});let s=c=>{t.socket=Date.now(),t.phases.wait=t.socket-t.start;let f=()=>{t.lookup=Date.now(),t.phases.dns=t.lookup-t.socket};c.prependOnceListener("lookup",f),gZe.default(c,{connect:()=>{t.connect=Date.now(),t.lookup===void 0&&(c.removeListener("lookup",f),t.lookup=t.connect,t.phases.dns=t.lookup-t.socket),t.phases.tcp=t.connect-t.lookup},secureConnect:()=>{t.secureConnect=Date.now(),t.phases.tls=t.secureConnect-t.connect}})};e.socket?s(e.socket):e.prependOnceListener("socket",s);let a=()=>{var c;t.upload=Date.now(),t.phases.request=t.upload-(c=t.secureConnect,c??t.connect)};return(typeof e.writableFinished=="boolean"?e.writableFinished:e.finished&&e.outputSize===0&&(!e.socket||e.socket.writableLength===0))?a():e.prependOnceListener("finish",a),e.prependOnceListener("response",c=>{t.response=Date.now(),t.phases.firstByte=t.response-t.upload,c.timings=t,r(c),c.prependOnceListener("end",()=>{t.end=Date.now(),t.phases.download=t.end-t.response,t.phases.total=t.end-t.start})}),t};H8.default=_8;j8.exports=_8;j8.exports.default=_8});var oue=G((MNt,W8)=>{"use strict";var{V4MAPPED:yZe,ADDRCONFIG:EZe,ALL:sue,promises:{Resolver:eue},lookup:IZe}=Ie("dns"),{promisify:G8}=Ie("util"),CZe=Ie("os"),gI=Symbol("cacheableLookupCreateConnection"),q8=Symbol("cacheableLookupInstance"),tue=Symbol("expires"),wZe=typeof sue=="number",rue=e=>{if(!(e&&typeof e.createConnection=="function"))throw new Error("Expected an Agent instance as the first argument")},BZe=e=>{for(let t of e)t.family!==6&&(t.address=`::ffff:${t.address}`,t.family=6)},nue=()=>{let e=!1,t=!1;for(let r of Object.values(CZe.networkInterfaces()))for(let s of r)if(!s.internal&&(s.family==="IPv6"?t=!0:e=!0,e&&t))return{has4:e,has6:t};return{has4:e,has6:t}},vZe=e=>Symbol.iterator in e,iue={ttl:!0},SZe={all:!0},_Q=class{constructor({cache:t=new Map,maxTtl:r=1/0,fallbackDuration:s=3600,errorTtl:a=.15,resolver:n=new eue,lookup:c=IZe}={}){if(this.maxTtl=r,this.errorTtl=a,this._cache=t,this._resolver=n,this._dnsLookup=G8(c),this._resolver instanceof eue?(this._resolve4=this._resolver.resolve4.bind(this._resolver),this._resolve6=this._resolver.resolve6.bind(this._resolver)):(this._resolve4=G8(this._resolver.resolve4.bind(this._resolver)),this._resolve6=G8(this._resolver.resolve6.bind(this._resolver))),this._iface=nue(),this._pending={},this._nextRemovalTime=!1,this._hostnamesToFallback=new Set,s<1)this._fallback=!1;else{this._fallback=!0;let f=setInterval(()=>{this._hostnamesToFallback.clear()},s*1e3);f.unref&&f.unref()}this.lookup=this.lookup.bind(this),this.lookupAsync=this.lookupAsync.bind(this)}set servers(t){this.clear(),this._resolver.setServers(t)}get servers(){return this._resolver.getServers()}lookup(t,r,s){if(typeof r=="function"?(s=r,r={}):typeof r=="number"&&(r={family:r}),!s)throw new Error("Callback must be a function.");this.lookupAsync(t,r).then(a=>{r.all?s(null,a):s(null,a.address,a.family,a.expires,a.ttl)},s)}async lookupAsync(t,r={}){typeof r=="number"&&(r={family:r});let s=await this.query(t);if(r.family===6){let a=s.filter(n=>n.family===6);r.hints&yZe&&(wZe&&r.hints&sue||a.length===0)?BZe(s):s=a}else r.family===4&&(s=s.filter(a=>a.family===4));if(r.hints&EZe){let{_iface:a}=this;s=s.filter(n=>n.family===6?a.has6:a.has4)}if(s.length===0){let a=new Error(`cacheableLookup ENOTFOUND ${t}`);throw a.code="ENOTFOUND",a.hostname=t,a}return r.all?s:s[0]}async query(t){let r=await this._cache.get(t);if(!r){let s=this._pending[t];if(s)r=await s;else{let a=this.queryAndCache(t);this._pending[t]=a,r=await a}}return r=r.map(s=>({...s})),r}async _resolve(t){let r=async h=>{try{return await h}catch(E){if(E.code==="ENODATA"||E.code==="ENOTFOUND")return[];throw E}},[s,a]=await Promise.all([this._resolve4(t,iue),this._resolve6(t,iue)].map(h=>r(h))),n=0,c=0,f=0,p=Date.now();for(let h of s)h.family=4,h.expires=p+h.ttl*1e3,n=Math.max(n,h.ttl);for(let h of a)h.family=6,h.expires=p+h.ttl*1e3,c=Math.max(c,h.ttl);return s.length>0?a.length>0?f=Math.min(n,c):f=n:f=c,{entries:[...s,...a],cacheTtl:f}}async _lookup(t){try{return{entries:await this._dnsLookup(t,{all:!0}),cacheTtl:0}}catch{return{entries:[],cacheTtl:0}}}async _set(t,r,s){if(this.maxTtl>0&&s>0){s=Math.min(s,this.maxTtl)*1e3,r[tue]=Date.now()+s;try{await this._cache.set(t,r,s)}catch(a){this.lookupAsync=async()=>{let n=new Error("Cache Error. Please recreate the CacheableLookup instance.");throw n.cause=a,n}}vZe(this._cache)&&this._tick(s)}}async queryAndCache(t){if(this._hostnamesToFallback.has(t))return this._dnsLookup(t,SZe);try{let r=await this._resolve(t);r.entries.length===0&&this._fallback&&(r=await this._lookup(t),r.entries.length!==0&&this._hostnamesToFallback.add(t));let s=r.entries.length===0?this.errorTtl:r.cacheTtl;return await this._set(t,r.entries,s),delete this._pending[t],r.entries}catch(r){throw delete this._pending[t],r}}_tick(t){let r=this._nextRemovalTime;(!r||t{this._nextRemovalTime=!1;let s=1/0,a=Date.now();for(let[n,c]of this._cache){let f=c[tue];a>=f?this._cache.delete(n):f("lookup"in r||(r.lookup=this.lookup),t[gI](r,s))}uninstall(t){if(rue(t),t[gI]){if(t[q8]!==this)throw new Error("The agent is not owned by this CacheableLookup instance");t.createConnection=t[gI],delete t[gI],delete t[q8]}}updateInterfaceInfo(){let{_iface:t}=this;this._iface=nue(),(t.has4&&!this._iface.has4||t.has6&&!this._iface.has6)&&this._cache.clear()}clear(t){if(t){this._cache.delete(t);return}this._cache.clear()}};W8.exports=_Q;W8.exports.default=_Q});var cue=G((UNt,Y8)=>{"use strict";var DZe=typeof URL>"u"?Ie("url").URL:URL,bZe="text/plain",PZe="us-ascii",aue=(e,t)=>t.some(r=>r instanceof RegExp?r.test(e):r===e),xZe=(e,{stripHash:t})=>{let r=e.match(/^data:([^,]*?),([^#]*?)(?:#(.*))?$/);if(!r)throw new Error(`Invalid URL: ${e}`);let s=r[1].split(";"),a=r[2],n=t?"":r[3],c=!1;s[s.length-1]==="base64"&&(s.pop(),c=!0);let f=(s.shift()||"").toLowerCase(),h=[...s.map(E=>{let[C,S=""]=E.split("=").map(x=>x.trim());return C==="charset"&&(S=S.toLowerCase(),S===PZe)?"":`${C}${S?`=${S}`:""}`}).filter(Boolean)];return c&&h.push("base64"),(h.length!==0||f&&f!==bZe)&&h.unshift(f),`data:${h.join(";")},${c?a.trim():a}${n?`#${n}`:""}`},lue=(e,t)=>{if(t={defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0,...t},Reflect.has(t,"normalizeHttps"))throw new Error("options.normalizeHttps is renamed to options.forceHttp");if(Reflect.has(t,"normalizeHttp"))throw new Error("options.normalizeHttp is renamed to options.forceHttps");if(Reflect.has(t,"stripFragment"))throw new Error("options.stripFragment is renamed to options.stripHash");if(e=e.trim(),/^data:/i.test(e))return xZe(e,t);let r=e.startsWith("//");!r&&/^\.*\//.test(e)||(e=e.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,t.defaultProtocol));let a=new DZe(e);if(t.forceHttp&&t.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(t.forceHttp&&a.protocol==="https:"&&(a.protocol="http:"),t.forceHttps&&a.protocol==="http:"&&(a.protocol="https:"),t.stripAuthentication&&(a.username="",a.password=""),t.stripHash&&(a.hash=""),a.pathname&&(a.pathname=a.pathname.replace(/((?!:).|^)\/{2,}/g,(n,c)=>/^(?!\/)/g.test(c)?`${c}/`:"/")),a.pathname&&(a.pathname=decodeURI(a.pathname)),t.removeDirectoryIndex===!0&&(t.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(t.removeDirectoryIndex)&&t.removeDirectoryIndex.length>0){let n=a.pathname.split("/"),c=n[n.length-1];aue(c,t.removeDirectoryIndex)&&(n=n.slice(0,n.length-1),a.pathname=n.slice(1).join("/")+"/")}if(a.hostname&&(a.hostname=a.hostname.replace(/\.$/,""),t.stripWWW&&/^www\.([a-z\-\d]{2,63})\.([a-z.]{2,5})$/.test(a.hostname)&&(a.hostname=a.hostname.replace(/^www\./,""))),Array.isArray(t.removeQueryParameters))for(let n of[...a.searchParams.keys()])aue(n,t.removeQueryParameters)&&a.searchParams.delete(n);return t.sortQueryParameters&&a.searchParams.sort(),t.removeTrailingSlash&&(a.pathname=a.pathname.replace(/\/$/,"")),e=a.toString(),(t.removeTrailingSlash||a.pathname==="/")&&a.hash===""&&(e=e.replace(/\/$/,"")),r&&!t.normalizeProtocol&&(e=e.replace(/^http:\/\//,"//")),t.stripProtocol&&(e=e.replace(/^(?:https?:)?\/\//,"")),e};Y8.exports=lue;Y8.exports.default=lue});var Aue=G((_Nt,fue)=>{fue.exports=uue;function uue(e,t){if(e&&t)return uue(e)(t);if(typeof e!="function")throw new TypeError("need wrapper function");return Object.keys(e).forEach(function(s){r[s]=e[s]}),r;function r(){for(var s=new Array(arguments.length),a=0;a{var pue=Aue();V8.exports=pue(HQ);V8.exports.strict=pue(hue);HQ.proto=HQ(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return HQ(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return hue(this)},configurable:!0})});function HQ(e){var t=function(){return t.called?t.value:(t.called=!0,t.value=e.apply(this,arguments))};return t.called=!1,t}function hue(e){var t=function(){if(t.called)throw new Error(t.onceError);return t.called=!0,t.value=e.apply(this,arguments)},r=e.name||"Function wrapped with `once`";return t.onceError=r+" shouldn't be called more than once",t.called=!1,t}});var K8=G((jNt,gue)=>{var kZe=J8(),QZe=function(){},RZe=function(e){return e.setHeader&&typeof e.abort=="function"},TZe=function(e){return e.stdio&&Array.isArray(e.stdio)&&e.stdio.length===3},due=function(e,t,r){if(typeof t=="function")return due(e,null,t);t||(t={}),r=kZe(r||QZe);var s=e._writableState,a=e._readableState,n=t.readable||t.readable!==!1&&e.readable,c=t.writable||t.writable!==!1&&e.writable,f=function(){e.writable||p()},p=function(){c=!1,n||r.call(e)},h=function(){n=!1,c||r.call(e)},E=function(I){r.call(e,I?new Error("exited with error code: "+I):null)},C=function(I){r.call(e,I)},S=function(){if(n&&!(a&&a.ended))return r.call(e,new Error("premature close"));if(c&&!(s&&s.ended))return r.call(e,new Error("premature close"))},x=function(){e.req.on("finish",p)};return RZe(e)?(e.on("complete",p),e.on("abort",S),e.req?x():e.on("request",x)):c&&!s&&(e.on("end",f),e.on("close",f)),TZe(e)&&e.on("exit",E),e.on("end",h),e.on("finish",p),t.error!==!1&&e.on("error",C),e.on("close",S),function(){e.removeListener("complete",p),e.removeListener("abort",S),e.removeListener("request",x),e.req&&e.req.removeListener("finish",p),e.removeListener("end",f),e.removeListener("close",f),e.removeListener("finish",p),e.removeListener("exit",E),e.removeListener("end",h),e.removeListener("error",C),e.removeListener("close",S)}};gue.exports=due});var Eue=G((GNt,yue)=>{var FZe=J8(),NZe=K8(),z8=Ie("fs"),_B=function(){},OZe=/^v?\.0/.test(process.version),jQ=function(e){return typeof e=="function"},LZe=function(e){return!OZe||!z8?!1:(e instanceof(z8.ReadStream||_B)||e instanceof(z8.WriteStream||_B))&&jQ(e.close)},MZe=function(e){return e.setHeader&&jQ(e.abort)},UZe=function(e,t,r,s){s=FZe(s);var a=!1;e.on("close",function(){a=!0}),NZe(e,{readable:t,writable:r},function(c){if(c)return s(c);a=!0,s()});var n=!1;return function(c){if(!a&&!n){if(n=!0,LZe(e))return e.close(_B);if(MZe(e))return e.abort();if(jQ(e.destroy))return e.destroy();s(c||new Error("stream was destroyed"))}}},mue=function(e){e()},_Ze=function(e,t){return e.pipe(t)},HZe=function(){var e=Array.prototype.slice.call(arguments),t=jQ(e[e.length-1]||_B)&&e.pop()||_B;if(Array.isArray(e[0])&&(e=e[0]),e.length<2)throw new Error("pump requires two streams per minimum");var r,s=e.map(function(a,n){var c=n0;return UZe(a,c,f,function(p){r||(r=p),p&&s.forEach(mue),!c&&(s.forEach(mue),t(r))})});return e.reduce(_Ze)};yue.exports=HZe});var Cue=G((qNt,Iue)=>{"use strict";var{PassThrough:jZe}=Ie("stream");Iue.exports=e=>{e={...e};let{array:t}=e,{encoding:r}=e,s=r==="buffer",a=!1;t?a=!(r||s):r=r||"utf8",s&&(r=null);let n=new jZe({objectMode:a});r&&n.setEncoding(r);let c=0,f=[];return n.on("data",p=>{f.push(p),a?c=f.length:c+=p.length}),n.getBufferedValue=()=>t?f:s?Buffer.concat(f,c):f.join(""),n.getBufferedLength=()=>c,n}});var wue=G((WNt,mI)=>{"use strict";var GZe=Eue(),qZe=Cue(),GQ=class extends Error{constructor(){super("maxBuffer exceeded"),this.name="MaxBufferError"}};async function qQ(e,t){if(!e)return Promise.reject(new Error("Expected a stream"));t={maxBuffer:1/0,...t};let{maxBuffer:r}=t,s;return await new Promise((a,n)=>{let c=f=>{f&&(f.bufferedData=s.getBufferedValue()),n(f)};s=GZe(e,qZe(t),f=>{if(f){c(f);return}a()}),s.on("data",()=>{s.getBufferedLength()>r&&c(new GQ)})}),s.getBufferedValue()}mI.exports=qQ;mI.exports.default=qQ;mI.exports.buffer=(e,t)=>qQ(e,{...t,encoding:"buffer"});mI.exports.array=(e,t)=>qQ(e,{...t,array:!0});mI.exports.MaxBufferError=GQ});var vue=G((VNt,Bue)=>{"use strict";var WZe=new Set([200,203,204,206,300,301,308,404,405,410,414,501]),YZe=new Set([200,203,204,300,301,302,303,307,308,404,405,410,414,501]),VZe=new Set([500,502,503,504]),JZe={date:!0,connection:!0,"keep-alive":!0,"proxy-authenticate":!0,"proxy-authorization":!0,te:!0,trailer:!0,"transfer-encoding":!0,upgrade:!0},KZe={"content-length":!0,"content-encoding":!0,"transfer-encoding":!0,"content-range":!0};function tm(e){let t=parseInt(e,10);return isFinite(t)?t:0}function zZe(e){return e?VZe.has(e.status):!0}function X8(e){let t={};if(!e)return t;let r=e.trim().split(/,/);for(let s of r){let[a,n]=s.split(/=/,2);t[a.trim()]=n===void 0?!0:n.trim().replace(/^"|"$/g,"")}return t}function XZe(e){let t=[];for(let r in e){let s=e[r];t.push(s===!0?r:r+"="+s)}if(t.length)return t.join(", ")}Bue.exports=class{constructor(t,r,{shared:s,cacheHeuristic:a,immutableMinTimeToLive:n,ignoreCargoCult:c,_fromObject:f}={}){if(f){this._fromObject(f);return}if(!r||!r.headers)throw Error("Response headers missing");this._assertRequestHasHeaders(t),this._responseTime=this.now(),this._isShared=s!==!1,this._cacheHeuristic=a!==void 0?a:.1,this._immutableMinTtl=n!==void 0?n:24*3600*1e3,this._status="status"in r?r.status:200,this._resHeaders=r.headers,this._rescc=X8(r.headers["cache-control"]),this._method="method"in t?t.method:"GET",this._url=t.url,this._host=t.headers.host,this._noAuthorization=!t.headers.authorization,this._reqHeaders=r.headers.vary?t.headers:null,this._reqcc=X8(t.headers["cache-control"]),c&&"pre-check"in this._rescc&&"post-check"in this._rescc&&(delete this._rescc["pre-check"],delete this._rescc["post-check"],delete this._rescc["no-cache"],delete this._rescc["no-store"],delete this._rescc["must-revalidate"],this._resHeaders=Object.assign({},this._resHeaders,{"cache-control":XZe(this._rescc)}),delete this._resHeaders.expires,delete this._resHeaders.pragma),r.headers["cache-control"]==null&&/no-cache/.test(r.headers.pragma)&&(this._rescc["no-cache"]=!0)}now(){return Date.now()}storable(){return!!(!this._reqcc["no-store"]&&(this._method==="GET"||this._method==="HEAD"||this._method==="POST"&&this._hasExplicitExpiration())&&YZe.has(this._status)&&!this._rescc["no-store"]&&(!this._isShared||!this._rescc.private)&&(!this._isShared||this._noAuthorization||this._allowsStoringAuthenticated())&&(this._resHeaders.expires||this._rescc["max-age"]||this._isShared&&this._rescc["s-maxage"]||this._rescc.public||WZe.has(this._status)))}_hasExplicitExpiration(){return this._isShared&&this._rescc["s-maxage"]||this._rescc["max-age"]||this._resHeaders.expires}_assertRequestHasHeaders(t){if(!t||!t.headers)throw Error("Request headers missing")}satisfiesWithoutRevalidation(t){this._assertRequestHasHeaders(t);let r=X8(t.headers["cache-control"]);return r["no-cache"]||/no-cache/.test(t.headers.pragma)||r["max-age"]&&this.age()>r["max-age"]||r["min-fresh"]&&this.timeToLive()<1e3*r["min-fresh"]||this.stale()&&!(r["max-stale"]&&!this._rescc["must-revalidate"]&&(r["max-stale"]===!0||r["max-stale"]>this.age()-this.maxAge()))?!1:this._requestMatches(t,!1)}_requestMatches(t,r){return(!this._url||this._url===t.url)&&this._host===t.headers.host&&(!t.method||this._method===t.method||r&&t.method==="HEAD")&&this._varyMatches(t)}_allowsStoringAuthenticated(){return this._rescc["must-revalidate"]||this._rescc.public||this._rescc["s-maxage"]}_varyMatches(t){if(!this._resHeaders.vary)return!0;if(this._resHeaders.vary==="*")return!1;let r=this._resHeaders.vary.trim().toLowerCase().split(/\s*,\s*/);for(let s of r)if(t.headers[s]!==this._reqHeaders[s])return!1;return!0}_copyWithoutHopByHopHeaders(t){let r={};for(let s in t)JZe[s]||(r[s]=t[s]);if(t.connection){let s=t.connection.trim().split(/\s*,\s*/);for(let a of s)delete r[a]}if(r.warning){let s=r.warning.split(/,/).filter(a=>!/^\s*1[0-9][0-9]/.test(a));s.length?r.warning=s.join(",").trim():delete r.warning}return r}responseHeaders(){let t=this._copyWithoutHopByHopHeaders(this._resHeaders),r=this.age();return r>3600*24&&!this._hasExplicitExpiration()&&this.maxAge()>3600*24&&(t.warning=(t.warning?`${t.warning}, `:"")+'113 - "rfc7234 5.5.4"'),t.age=`${Math.round(r)}`,t.date=new Date(this.now()).toUTCString(),t}date(){let t=Date.parse(this._resHeaders.date);return isFinite(t)?t:this._responseTime}age(){let t=this._ageValue(),r=(this.now()-this._responseTime)/1e3;return t+r}_ageValue(){return tm(this._resHeaders.age)}maxAge(){if(!this.storable()||this._rescc["no-cache"]||this._isShared&&this._resHeaders["set-cookie"]&&!this._rescc.public&&!this._rescc.immutable||this._resHeaders.vary==="*")return 0;if(this._isShared){if(this._rescc["proxy-revalidate"])return 0;if(this._rescc["s-maxage"])return tm(this._rescc["s-maxage"])}if(this._rescc["max-age"])return tm(this._rescc["max-age"]);let t=this._rescc.immutable?this._immutableMinTtl:0,r=this.date();if(this._resHeaders.expires){let s=Date.parse(this._resHeaders.expires);return Number.isNaN(s)||ss)return Math.max(t,(r-s)/1e3*this._cacheHeuristic)}return t}timeToLive(){let t=this.maxAge()-this.age(),r=t+tm(this._rescc["stale-if-error"]),s=t+tm(this._rescc["stale-while-revalidate"]);return Math.max(0,t,r,s)*1e3}stale(){return this.maxAge()<=this.age()}_useStaleIfError(){return this.maxAge()+tm(this._rescc["stale-if-error"])>this.age()}useStaleWhileRevalidate(){return this.maxAge()+tm(this._rescc["stale-while-revalidate"])>this.age()}static fromObject(t){return new this(void 0,void 0,{_fromObject:t})}_fromObject(t){if(this._responseTime)throw Error("Reinitialized");if(!t||t.v!==1)throw Error("Invalid serialization");this._responseTime=t.t,this._isShared=t.sh,this._cacheHeuristic=t.ch,this._immutableMinTtl=t.imm!==void 0?t.imm:24*3600*1e3,this._status=t.st,this._resHeaders=t.resh,this._rescc=t.rescc,this._method=t.m,this._url=t.u,this._host=t.h,this._noAuthorization=t.a,this._reqHeaders=t.reqh,this._reqcc=t.reqcc}toObject(){return{v:1,t:this._responseTime,sh:this._isShared,ch:this._cacheHeuristic,imm:this._immutableMinTtl,st:this._status,resh:this._resHeaders,rescc:this._rescc,m:this._method,u:this._url,h:this._host,a:this._noAuthorization,reqh:this._reqHeaders,reqcc:this._reqcc}}revalidationHeaders(t){this._assertRequestHasHeaders(t);let r=this._copyWithoutHopByHopHeaders(t.headers);if(delete r["if-range"],!this._requestMatches(t,!0)||!this.storable())return delete r["if-none-match"],delete r["if-modified-since"],r;if(this._resHeaders.etag&&(r["if-none-match"]=r["if-none-match"]?`${r["if-none-match"]}, ${this._resHeaders.etag}`:this._resHeaders.etag),r["accept-ranges"]||r["if-match"]||r["if-unmodified-since"]||this._method&&this._method!="GET"){if(delete r["if-modified-since"],r["if-none-match"]){let a=r["if-none-match"].split(/,/).filter(n=>!/^\s*W\//.test(n));a.length?r["if-none-match"]=a.join(",").trim():delete r["if-none-match"]}}else this._resHeaders["last-modified"]&&!r["if-modified-since"]&&(r["if-modified-since"]=this._resHeaders["last-modified"]);return r}revalidatedPolicy(t,r){if(this._assertRequestHasHeaders(t),this._useStaleIfError()&&zZe(r))return{modified:!1,matches:!1,policy:this};if(!r||!r.headers)throw Error("Response headers missing");let s=!1;if(r.status!==void 0&&r.status!=304?s=!1:r.headers.etag&&!/^\s*W\//.test(r.headers.etag)?s=this._resHeaders.etag&&this._resHeaders.etag.replace(/^\s*W\//,"")===r.headers.etag:this._resHeaders.etag&&r.headers.etag?s=this._resHeaders.etag.replace(/^\s*W\//,"")===r.headers.etag.replace(/^\s*W\//,""):this._resHeaders["last-modified"]?s=this._resHeaders["last-modified"]===r.headers["last-modified"]:!this._resHeaders.etag&&!this._resHeaders["last-modified"]&&!r.headers.etag&&!r.headers["last-modified"]&&(s=!0),!s)return{policy:new this.constructor(t,r),modified:r.status!=304,matches:!1};let a={};for(let c in this._resHeaders)a[c]=c in r.headers&&!KZe[c]?r.headers[c]:this._resHeaders[c];let n=Object.assign({},r,{status:this._status,method:this._method,headers:a});return{policy:new this.constructor(t,n,{shared:this._isShared,cacheHeuristic:this._cacheHeuristic,immutableMinTimeToLive:this._immutableMinTtl}),modified:!1,matches:!0}}}});var WQ=G((JNt,Sue)=>{"use strict";Sue.exports=e=>{let t={};for(let[r,s]of Object.entries(e))t[r.toLowerCase()]=s;return t}});var bue=G((KNt,Due)=>{"use strict";var ZZe=Ie("stream").Readable,$Ze=WQ(),Z8=class extends ZZe{constructor(t,r,s,a){if(typeof t!="number")throw new TypeError("Argument `statusCode` should be a number");if(typeof r!="object")throw new TypeError("Argument `headers` should be an object");if(!(s instanceof Buffer))throw new TypeError("Argument `body` should be a buffer");if(typeof a!="string")throw new TypeError("Argument `url` should be a string");super(),this.statusCode=t,this.headers=$Ze(r),this.body=s,this.url=a}_read(){this.push(this.body),this.push(null)}};Due.exports=Z8});var xue=G((zNt,Pue)=>{"use strict";var e$e=["destroy","setTimeout","socket","headers","trailers","rawHeaders","statusCode","httpVersion","httpVersionMinor","httpVersionMajor","rawTrailers","statusMessage"];Pue.exports=(e,t)=>{let r=new Set(Object.keys(e).concat(e$e));for(let s of r)s in t||(t[s]=typeof e[s]=="function"?e[s].bind(e):e[s])}});var Que=G((XNt,kue)=>{"use strict";var t$e=Ie("stream").PassThrough,r$e=xue(),n$e=e=>{if(!(e&&e.pipe))throw new TypeError("Parameter `response` must be a response stream.");let t=new t$e;return r$e(e,t),e.pipe(t)};kue.exports=n$e});var Rue=G($8=>{$8.stringify=function e(t){if(typeof t>"u")return t;if(t&&Buffer.isBuffer(t))return JSON.stringify(":base64:"+t.toString("base64"));if(t&&t.toJSON&&(t=t.toJSON()),t&&typeof t=="object"){var r="",s=Array.isArray(t);r=s?"[":"{";var a=!0;for(var n in t){var c=typeof t[n]=="function"||!s&&typeof t[n]>"u";Object.hasOwnProperty.call(t,n)&&!c&&(a||(r+=","),a=!1,s?t[n]==null?r+="null":r+=e(t[n]):t[n]!==void 0&&(r+=e(n)+":"+e(t[n])))}return r+=s?"]":"}",r}else return typeof t=="string"?JSON.stringify(/^:/.test(t)?":"+t:t):typeof t>"u"?"null":JSON.stringify(t)};$8.parse=function(e){return JSON.parse(e,function(t,r){return typeof r=="string"?/^:base64:/.test(r)?Buffer.from(r.substring(8),"base64"):/^:/.test(r)?r.substring(1):r:r})}});var Oue=G(($Nt,Nue)=>{"use strict";var i$e=Ie("events"),Tue=Rue(),s$e=e=>{let t={redis:"@keyv/redis",rediss:"@keyv/redis",mongodb:"@keyv/mongo",mongo:"@keyv/mongo",sqlite:"@keyv/sqlite",postgresql:"@keyv/postgres",postgres:"@keyv/postgres",mysql:"@keyv/mysql",etcd:"@keyv/etcd",offline:"@keyv/offline",tiered:"@keyv/tiered"};if(e.adapter||e.uri){let r=e.adapter||/^[^:+]*/.exec(e.uri)[0];return new(Ie(t[r]))(e)}return new Map},Fue=["sqlite","postgres","mysql","mongo","redis","tiered"],eH=class extends i$e{constructor(t,{emitErrors:r=!0,...s}={}){if(super(),this.opts={namespace:"keyv",serialize:Tue.stringify,deserialize:Tue.parse,...typeof t=="string"?{uri:t}:t,...s},!this.opts.store){let n={...this.opts};this.opts.store=s$e(n)}if(this.opts.compression){let n=this.opts.compression;this.opts.serialize=n.serialize.bind(n),this.opts.deserialize=n.deserialize.bind(n)}typeof this.opts.store.on=="function"&&r&&this.opts.store.on("error",n=>this.emit("error",n)),this.opts.store.namespace=this.opts.namespace;let a=n=>async function*(){for await(let[c,f]of typeof n=="function"?n(this.opts.store.namespace):n){let p=await this.opts.deserialize(f);if(!(this.opts.store.namespace&&!c.includes(this.opts.store.namespace))){if(typeof p.expires=="number"&&Date.now()>p.expires){this.delete(c);continue}yield[this._getKeyUnprefix(c),p.value]}}};typeof this.opts.store[Symbol.iterator]=="function"&&this.opts.store instanceof Map?this.iterator=a(this.opts.store):typeof this.opts.store.iterator=="function"&&this.opts.store.opts&&this._checkIterableAdaptar()&&(this.iterator=a(this.opts.store.iterator.bind(this.opts.store)))}_checkIterableAdaptar(){return Fue.includes(this.opts.store.opts.dialect)||Fue.findIndex(t=>this.opts.store.opts.url.includes(t))>=0}_getKeyPrefix(t){return`${this.opts.namespace}:${t}`}_getKeyPrefixArray(t){return t.map(r=>`${this.opts.namespace}:${r}`)}_getKeyUnprefix(t){return t.split(":").splice(1).join(":")}get(t,r){let{store:s}=this.opts,a=Array.isArray(t),n=a?this._getKeyPrefixArray(t):this._getKeyPrefix(t);if(a&&s.getMany===void 0){let c=[];for(let f of n)c.push(Promise.resolve().then(()=>s.get(f)).then(p=>typeof p=="string"?this.opts.deserialize(p):this.opts.compression?this.opts.deserialize(p):p).then(p=>{if(p!=null)return typeof p.expires=="number"&&Date.now()>p.expires?this.delete(f).then(()=>{}):r&&r.raw?p:p.value}));return Promise.allSettled(c).then(f=>{let p=[];for(let h of f)p.push(h.value);return p})}return Promise.resolve().then(()=>a?s.getMany(n):s.get(n)).then(c=>typeof c=="string"?this.opts.deserialize(c):this.opts.compression?this.opts.deserialize(c):c).then(c=>{if(c!=null)return a?c.map((f,p)=>{if(typeof f=="string"&&(f=this.opts.deserialize(f)),f!=null){if(typeof f.expires=="number"&&Date.now()>f.expires){this.delete(t[p]).then(()=>{});return}return r&&r.raw?f:f.value}}):typeof c.expires=="number"&&Date.now()>c.expires?this.delete(t).then(()=>{}):r&&r.raw?c:c.value})}set(t,r,s){let a=this._getKeyPrefix(t);typeof s>"u"&&(s=this.opts.ttl),s===0&&(s=void 0);let{store:n}=this.opts;return Promise.resolve().then(()=>{let c=typeof s=="number"?Date.now()+s:null;return typeof r=="symbol"&&this.emit("error","symbol cannot be serialized"),r={value:r,expires:c},this.opts.serialize(r)}).then(c=>n.set(a,c,s)).then(()=>!0)}delete(t){let{store:r}=this.opts;if(Array.isArray(t)){let a=this._getKeyPrefixArray(t);if(r.deleteMany===void 0){let n=[];for(let c of a)n.push(r.delete(c));return Promise.allSettled(n).then(c=>c.every(f=>f.value===!0))}return Promise.resolve().then(()=>r.deleteMany(a))}let s=this._getKeyPrefix(t);return Promise.resolve().then(()=>r.delete(s))}clear(){let{store:t}=this.opts;return Promise.resolve().then(()=>t.clear())}has(t){let r=this._getKeyPrefix(t),{store:s}=this.opts;return Promise.resolve().then(async()=>typeof s.has=="function"?s.has(r):await s.get(r)!==void 0)}disconnect(){let{store:t}=this.opts;if(typeof t.disconnect=="function")return t.disconnect()}};Nue.exports=eH});var Uue=G((tOt,Mue)=>{"use strict";var o$e=Ie("events"),YQ=Ie("url"),a$e=cue(),l$e=wue(),tH=vue(),Lue=bue(),c$e=WQ(),u$e=Que(),f$e=Oue(),HB=class e{constructor(t,r){if(typeof t!="function")throw new TypeError("Parameter `request` must be a function");return this.cache=new f$e({uri:typeof r=="string"&&r,store:typeof r!="string"&&r,namespace:"cacheable-request"}),this.createCacheableRequest(t)}createCacheableRequest(t){return(r,s)=>{let a;if(typeof r=="string")a=rH(YQ.parse(r)),r={};else if(r instanceof YQ.URL)a=rH(YQ.parse(r.toString())),r={};else{let[C,...S]=(r.path||"").split("?"),x=S.length>0?`?${S.join("?")}`:"";a=rH({...r,pathname:C,search:x})}r={headers:{},method:"GET",cache:!0,strictTtl:!1,automaticFailover:!1,...r,...A$e(a)},r.headers=c$e(r.headers);let n=new o$e,c=a$e(YQ.format(a),{stripWWW:!1,removeTrailingSlash:!1,stripAuthentication:!1}),f=`${r.method}:${c}`,p=!1,h=!1,E=C=>{h=!0;let S=!1,x,I=new Promise(O=>{x=()=>{S||(S=!0,O())}}),T=O=>{if(p&&!C.forceRefresh){O.status=O.statusCode;let V=tH.fromObject(p.cachePolicy).revalidatedPolicy(C,O);if(!V.modified){let te=V.policy.responseHeaders();O=new Lue(p.statusCode,te,p.body,p.url),O.cachePolicy=V.policy,O.fromCache=!0}}O.fromCache||(O.cachePolicy=new tH(C,O,C),O.fromCache=!1);let U;C.cache&&O.cachePolicy.storable()?(U=u$e(O),(async()=>{try{let V=l$e.buffer(O);if(await Promise.race([I,new Promise(ae=>O.once("end",ae))]),S)return;let te=await V,ie={cachePolicy:O.cachePolicy.toObject(),url:O.url,statusCode:O.fromCache?p.statusCode:O.statusCode,body:te},ue=C.strictTtl?O.cachePolicy.timeToLive():void 0;C.maxTtl&&(ue=ue?Math.min(ue,C.maxTtl):C.maxTtl),await this.cache.set(f,ie,ue)}catch(V){n.emit("error",new e.CacheError(V))}})()):C.cache&&p&&(async()=>{try{await this.cache.delete(f)}catch(V){n.emit("error",new e.CacheError(V))}})(),n.emit("response",U||O),typeof s=="function"&&s(U||O)};try{let O=t(C,T);O.once("error",x),O.once("abort",x),n.emit("request",O)}catch(O){n.emit("error",new e.RequestError(O))}};return(async()=>{let C=async x=>{await Promise.resolve();let I=x.cache?await this.cache.get(f):void 0;if(typeof I>"u")return E(x);let T=tH.fromObject(I.cachePolicy);if(T.satisfiesWithoutRevalidation(x)&&!x.forceRefresh){let O=T.responseHeaders(),U=new Lue(I.statusCode,O,I.body,I.url);U.cachePolicy=T,U.fromCache=!0,n.emit("response",U),typeof s=="function"&&s(U)}else p=I,x.headers=T.revalidationHeaders(x),E(x)},S=x=>n.emit("error",new e.CacheError(x));this.cache.once("error",S),n.on("response",()=>this.cache.removeListener("error",S));try{await C(r)}catch(x){r.automaticFailover&&!h&&E(r),n.emit("error",new e.CacheError(x))}})(),n}}};function A$e(e){let t={...e};return t.path=`${e.pathname||"/"}${e.search||""}`,delete t.pathname,delete t.search,t}function rH(e){return{protocol:e.protocol,auth:e.auth,hostname:e.hostname||e.host||"localhost",port:e.port,pathname:e.pathname,search:e.search}}HB.RequestError=class extends Error{constructor(e){super(e.message),this.name="RequestError",Object.assign(this,e)}};HB.CacheError=class extends Error{constructor(e){super(e.message),this.name="CacheError",Object.assign(this,e)}};Mue.exports=HB});var Hue=G((iOt,_ue)=>{"use strict";var p$e=["aborted","complete","headers","httpVersion","httpVersionMinor","httpVersionMajor","method","rawHeaders","rawTrailers","setTimeout","socket","statusCode","statusMessage","trailers","url"];_ue.exports=(e,t)=>{if(t._readableState.autoDestroy)throw new Error("The second stream must have the `autoDestroy` option set to `false`");let r=new Set(Object.keys(e).concat(p$e)),s={};for(let a of r)a in t||(s[a]={get(){let n=e[a];return typeof n=="function"?n.bind(e):n},set(n){e[a]=n},enumerable:!0,configurable:!1});return Object.defineProperties(t,s),e.once("aborted",()=>{t.destroy(),t.emit("aborted")}),e.once("close",()=>{e.complete&&t.readable?t.once("end",()=>{t.emit("close")}):t.emit("close")}),t}});var Gue=G((sOt,jue)=>{"use strict";var{Transform:h$e,PassThrough:d$e}=Ie("stream"),nH=Ie("zlib"),g$e=Hue();jue.exports=e=>{let t=(e.headers["content-encoding"]||"").toLowerCase();if(!["gzip","deflate","br"].includes(t))return e;let r=t==="br";if(r&&typeof nH.createBrotliDecompress!="function")return e.destroy(new Error("Brotli is not supported on Node.js < 12")),e;let s=!0,a=new h$e({transform(f,p,h){s=!1,h(null,f)},flush(f){f()}}),n=new d$e({autoDestroy:!1,destroy(f,p){e.destroy(),p(f)}}),c=r?nH.createBrotliDecompress():nH.createUnzip();return c.once("error",f=>{if(s&&!e.readable){n.end();return}n.destroy(f)}),g$e(e,n),e.pipe(a).pipe(c).pipe(n),n}});var sH=G((oOt,que)=>{"use strict";var iH=class{constructor(t={}){if(!(t.maxSize&&t.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");this.maxSize=t.maxSize,this.onEviction=t.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_set(t,r){if(this.cache.set(t,r),this._size++,this._size>=this.maxSize){if(this._size=0,typeof this.onEviction=="function")for(let[s,a]of this.oldCache.entries())this.onEviction(s,a);this.oldCache=this.cache,this.cache=new Map}}get(t){if(this.cache.has(t))return this.cache.get(t);if(this.oldCache.has(t)){let r=this.oldCache.get(t);return this.oldCache.delete(t),this._set(t,r),r}}set(t,r){return this.cache.has(t)?this.cache.set(t,r):this._set(t,r),this}has(t){return this.cache.has(t)||this.oldCache.has(t)}peek(t){if(this.cache.has(t))return this.cache.get(t);if(this.oldCache.has(t))return this.oldCache.get(t)}delete(t){let r=this.cache.delete(t);return r&&this._size--,this.oldCache.delete(t)||r}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}*keys(){for(let[t]of this)yield t}*values(){for(let[,t]of this)yield t}*[Symbol.iterator](){for(let t of this.cache)yield t;for(let t of this.oldCache){let[r]=t;this.cache.has(r)||(yield t)}}get size(){let t=0;for(let r of this.oldCache.keys())this.cache.has(r)||t++;return Math.min(this._size+t,this.maxSize)}};que.exports=iH});var aH=G((aOt,Jue)=>{"use strict";var m$e=Ie("events"),y$e=Ie("tls"),E$e=Ie("http2"),I$e=sH(),Ra=Symbol("currentStreamsCount"),Wue=Symbol("request"),Nc=Symbol("cachedOriginSet"),yI=Symbol("gracefullyClosing"),C$e=["maxDeflateDynamicTableSize","maxSessionMemory","maxHeaderListPairs","maxOutstandingPings","maxReservedRemoteStreams","maxSendHeaderBlockLength","paddingStrategy","localAddress","path","rejectUnauthorized","minDHSize","ca","cert","clientCertEngine","ciphers","key","pfx","servername","minVersion","maxVersion","secureProtocol","crl","honorCipherOrder","ecdhCurve","dhparam","secureOptions","sessionIdContext"],w$e=(e,t,r)=>{let s=0,a=e.length;for(;s>>1;r(e[n],t)?s=n+1:a=n}return s},B$e=(e,t)=>e.remoteSettings.maxConcurrentStreams>t.remoteSettings.maxConcurrentStreams,oH=(e,t)=>{for(let r of e)r[Nc].lengtht[Nc].includes(s))&&r[Ra]+t[Ra]<=t.remoteSettings.maxConcurrentStreams&&Vue(r)},v$e=(e,t)=>{for(let r of e)t[Nc].lengthr[Nc].includes(s))&&t[Ra]+r[Ra]<=r.remoteSettings.maxConcurrentStreams&&Vue(t)},Yue=({agent:e,isFree:t})=>{let r={};for(let s in e.sessions){let n=e.sessions[s].filter(c=>{let f=c[rm.kCurrentStreamsCount]{e[yI]=!0,e[Ra]===0&&e.close()},rm=class e extends m$e{constructor({timeout:t=6e4,maxSessions:r=1/0,maxFreeSessions:s=10,maxCachedTlsSessions:a=100}={}){super(),this.sessions={},this.queue={},this.timeout=t,this.maxSessions=r,this.maxFreeSessions=s,this._freeSessionsCount=0,this._sessionsCount=0,this.settings={enablePush:!1},this.tlsSessionCache=new I$e({maxSize:a})}static normalizeOrigin(t,r){return typeof t=="string"&&(t=new URL(t)),r&&t.hostname!==r&&(t.hostname=r),t.origin}normalizeOptions(t){let r="";if(t)for(let s of C$e)t[s]&&(r+=`:${t[s]}`);return r}_tryToCreateNewSession(t,r){if(!(t in this.queue)||!(r in this.queue[t]))return;let s=this.queue[t][r];this._sessionsCount{Array.isArray(s)?(s=[...s],a()):s=[{resolve:a,reject:n}];let c=this.normalizeOptions(r),f=e.normalizeOrigin(t,r&&r.servername);if(f===void 0){for(let{reject:E}of s)E(new TypeError("The `origin` argument needs to be a string or an URL object"));return}if(c in this.sessions){let E=this.sessions[c],C=-1,S=-1,x;for(let I of E){let T=I.remoteSettings.maxConcurrentStreams;if(T=T||I[yI]||I.destroyed)continue;x||(C=T),O>S&&(x=I,S=O)}}if(x){if(s.length!==1){for(let{reject:I}of s){let T=new Error(`Expected the length of listeners to be 1, got ${s.length}. +Please report this to https://github.com/szmarczak/http2-wrapper/`);I(T)}return}s[0].resolve(x);return}}if(c in this.queue){if(f in this.queue[c]){this.queue[c][f].listeners.push(...s),this._tryToCreateNewSession(c,f);return}}else this.queue[c]={};let p=()=>{c in this.queue&&this.queue[c][f]===h&&(delete this.queue[c][f],Object.keys(this.queue[c]).length===0&&delete this.queue[c])},h=()=>{let E=`${f}:${c}`,C=!1;try{let S=E$e.connect(t,{createConnection:this.createConnection,settings:this.settings,session:this.tlsSessionCache.get(E),...r});S[Ra]=0,S[yI]=!1;let x=()=>S[Ra]{this.tlsSessionCache.set(E,O)}),S.once("error",O=>{for(let{reject:U}of s)U(O);this.tlsSessionCache.delete(E)}),S.setTimeout(this.timeout,()=>{S.destroy()}),S.once("close",()=>{if(C){I&&this._freeSessionsCount--,this._sessionsCount--;let O=this.sessions[c];O.splice(O.indexOf(S),1),O.length===0&&delete this.sessions[c]}else{let O=new Error("Session closed without receiving a SETTINGS frame");O.code="HTTP2WRAPPER_NOSETTINGS";for(let{reject:U}of s)U(O);p()}this._tryToCreateNewSession(c,f)});let T=()=>{if(!(!(c in this.queue)||!x())){for(let O of S[Nc])if(O in this.queue[c]){let{listeners:U}=this.queue[c][O];for(;U.length!==0&&x();)U.shift().resolve(S);let V=this.queue[c];if(V[O].listeners.length===0&&(delete V[O],Object.keys(V).length===0)){delete this.queue[c];break}if(!x())break}}};S.on("origin",()=>{S[Nc]=S.originSet,x()&&(T(),oH(this.sessions[c],S))}),S.once("remoteSettings",()=>{if(S.ref(),S.unref(),this._sessionsCount++,h.destroyed){let O=new Error("Agent has been destroyed");for(let U of s)U.reject(O);S.destroy();return}S[Nc]=S.originSet;{let O=this.sessions;if(c in O){let U=O[c];U.splice(w$e(U,S,B$e),0,S)}else O[c]=[S]}this._freeSessionsCount+=1,C=!0,this.emit("session",S),T(),p(),S[Ra]===0&&this._freeSessionsCount>this.maxFreeSessions&&S.close(),s.length!==0&&(this.getSession(f,r,s),s.length=0),S.on("remoteSettings",()=>{T(),oH(this.sessions[c],S)})}),S[Wue]=S.request,S.request=(O,U)=>{if(S[yI])throw new Error("The session is gracefully closing. No new streams are allowed.");let V=S[Wue](O,U);return S.ref(),++S[Ra],S[Ra]===S.remoteSettings.maxConcurrentStreams&&this._freeSessionsCount--,V.once("close",()=>{if(I=x(),--S[Ra],!S.destroyed&&!S.closed&&(v$e(this.sessions[c],S),x()&&!S.closed)){I||(this._freeSessionsCount++,I=!0);let te=S[Ra]===0;te&&S.unref(),te&&(this._freeSessionsCount>this.maxFreeSessions||S[yI])?S.close():(oH(this.sessions[c],S),T())}}),V}}catch(S){for(let x of s)x.reject(S);p()}};h.listeners=s,h.completed=!1,h.destroyed=!1,this.queue[c][f]=h,this._tryToCreateNewSession(c,f)})}request(t,r,s,a){return new Promise((n,c)=>{this.getSession(t,r,[{reject:c,resolve:f=>{try{n(f.request(s,a))}catch(p){c(p)}}}])})}createConnection(t,r){return e.connect(t,r)}static connect(t,r){r.ALPNProtocols=["h2"];let s=t.port||443,a=t.hostname||t.host;return typeof r.servername>"u"&&(r.servername=a),y$e.connect(s,a,r)}closeFreeSessions(){for(let t of Object.values(this.sessions))for(let r of t)r[Ra]===0&&r.close()}destroy(t){for(let r of Object.values(this.sessions))for(let s of r)s.destroy(t);for(let r of Object.values(this.queue))for(let s of Object.values(r))s.destroyed=!0;this.queue={}}get freeSessions(){return Yue({agent:this,isFree:!0})}get busySessions(){return Yue({agent:this,isFree:!1})}};rm.kCurrentStreamsCount=Ra;rm.kGracefullyClosing=yI;Jue.exports={Agent:rm,globalAgent:new rm}});var cH=G((lOt,Kue)=>{"use strict";var{Readable:S$e}=Ie("stream"),lH=class extends S$e{constructor(t,r){super({highWaterMark:r,autoDestroy:!1}),this.statusCode=null,this.statusMessage="",this.httpVersion="2.0",this.httpVersionMajor=2,this.httpVersionMinor=0,this.headers={},this.trailers={},this.req=null,this.aborted=!1,this.complete=!1,this.upgrade=null,this.rawHeaders=[],this.rawTrailers=[],this.socket=t,this.connection=t,this._dumped=!1}_destroy(t){this.req._request.destroy(t)}setTimeout(t,r){return this.req.setTimeout(t,r),this}_dump(){this._dumped||(this._dumped=!0,this.removeAllListeners("data"),this.resume())}_read(){this.req&&this.req._request.resume()}};Kue.exports=lH});var uH=G((cOt,zue)=>{"use strict";zue.exports=e=>{let t={protocol:e.protocol,hostname:typeof e.hostname=="string"&&e.hostname.startsWith("[")?e.hostname.slice(1,-1):e.hostname,host:e.host,hash:e.hash,search:e.search,pathname:e.pathname,href:e.href,path:`${e.pathname||""}${e.search||""}`};return typeof e.port=="string"&&e.port.length!==0&&(t.port=Number(e.port)),(e.username||e.password)&&(t.auth=`${e.username||""}:${e.password||""}`),t}});var Zue=G((uOt,Xue)=>{"use strict";Xue.exports=(e,t,r)=>{for(let s of r)e.on(s,(...a)=>t.emit(s,...a))}});var efe=G((fOt,$ue)=>{"use strict";$ue.exports=e=>{switch(e){case":method":case":scheme":case":authority":case":path":return!0;default:return!1}}});var rfe=G((pOt,tfe)=>{"use strict";var EI=(e,t,r)=>{tfe.exports[t]=class extends e{constructor(...a){super(typeof r=="string"?r:r(a)),this.name=`${super.name} [${t}]`,this.code=t}}};EI(TypeError,"ERR_INVALID_ARG_TYPE",e=>{let t=e[0].includes(".")?"property":"argument",r=e[1],s=Array.isArray(r);return s&&(r=`${r.slice(0,-1).join(", ")} or ${r.slice(-1)}`),`The "${e[0]}" ${t} must be ${s?"one of":"of"} type ${r}. Received ${typeof e[2]}`});EI(TypeError,"ERR_INVALID_PROTOCOL",e=>`Protocol "${e[0]}" not supported. Expected "${e[1]}"`);EI(Error,"ERR_HTTP_HEADERS_SENT",e=>`Cannot ${e[0]} headers after they are sent to the client`);EI(TypeError,"ERR_INVALID_HTTP_TOKEN",e=>`${e[0]} must be a valid HTTP token [${e[1]}]`);EI(TypeError,"ERR_HTTP_INVALID_HEADER_VALUE",e=>`Invalid value "${e[0]} for header "${e[1]}"`);EI(TypeError,"ERR_INVALID_CHAR",e=>`Invalid character in ${e[0]} [${e[1]}]`)});var dH=G((hOt,cfe)=>{"use strict";var D$e=Ie("http2"),{Writable:b$e}=Ie("stream"),{Agent:nfe,globalAgent:P$e}=aH(),x$e=cH(),k$e=uH(),Q$e=Zue(),R$e=efe(),{ERR_INVALID_ARG_TYPE:fH,ERR_INVALID_PROTOCOL:T$e,ERR_HTTP_HEADERS_SENT:ife,ERR_INVALID_HTTP_TOKEN:F$e,ERR_HTTP_INVALID_HEADER_VALUE:N$e,ERR_INVALID_CHAR:O$e}=rfe(),{HTTP2_HEADER_STATUS:sfe,HTTP2_HEADER_METHOD:ofe,HTTP2_HEADER_PATH:afe,HTTP2_METHOD_CONNECT:L$e}=D$e.constants,ta=Symbol("headers"),AH=Symbol("origin"),pH=Symbol("session"),lfe=Symbol("options"),VQ=Symbol("flushedHeaders"),jB=Symbol("jobs"),M$e=/^[\^`\-\w!#$%&*+.|~]+$/,U$e=/[^\t\u0020-\u007E\u0080-\u00FF]/,hH=class extends b$e{constructor(t,r,s){super({autoDestroy:!1});let a=typeof t=="string"||t instanceof URL;if(a&&(t=k$e(t instanceof URL?t:new URL(t))),typeof r=="function"||r===void 0?(s=r,r=a?t:{...t}):r={...t,...r},r.h2session)this[pH]=r.h2session;else if(r.agent===!1)this.agent=new nfe({maxFreeSessions:0});else if(typeof r.agent>"u"||r.agent===null)typeof r.createConnection=="function"?(this.agent=new nfe({maxFreeSessions:0}),this.agent.createConnection=r.createConnection):this.agent=P$e;else if(typeof r.agent.request=="function")this.agent=r.agent;else throw new fH("options.agent",["Agent-like Object","undefined","false"],r.agent);if(r.protocol&&r.protocol!=="https:")throw new T$e(r.protocol,"https:");let n=r.port||r.defaultPort||this.agent&&this.agent.defaultPort||443,c=r.hostname||r.host||"localhost";delete r.hostname,delete r.host,delete r.port;let{timeout:f}=r;if(r.timeout=void 0,this[ta]=Object.create(null),this[jB]=[],this.socket=null,this.connection=null,this.method=r.method||"GET",this.path=r.path,this.res=null,this.aborted=!1,this.reusedSocket=!1,r.headers)for(let[p,h]of Object.entries(r.headers))this.setHeader(p,h);r.auth&&!("authorization"in this[ta])&&(this[ta].authorization="Basic "+Buffer.from(r.auth).toString("base64")),r.session=r.tlsSession,r.path=r.socketPath,this[lfe]=r,n===443?(this[AH]=`https://${c}`,":authority"in this[ta]||(this[ta][":authority"]=c)):(this[AH]=`https://${c}:${n}`,":authority"in this[ta]||(this[ta][":authority"]=`${c}:${n}`)),f&&this.setTimeout(f),s&&this.once("response",s),this[VQ]=!1}get method(){return this[ta][ofe]}set method(t){t&&(this[ta][ofe]=t.toUpperCase())}get path(){return this[ta][afe]}set path(t){t&&(this[ta][afe]=t)}get _mustNotHaveABody(){return this.method==="GET"||this.method==="HEAD"||this.method==="DELETE"}_write(t,r,s){if(this._mustNotHaveABody){s(new Error("The GET, HEAD and DELETE methods must NOT have a body"));return}this.flushHeaders();let a=()=>this._request.write(t,r,s);this._request?a():this[jB].push(a)}_final(t){if(this.destroyed)return;this.flushHeaders();let r=()=>{if(this._mustNotHaveABody){t();return}this._request.end(t)};this._request?r():this[jB].push(r)}abort(){this.res&&this.res.complete||(this.aborted||process.nextTick(()=>this.emit("abort")),this.aborted=!0,this.destroy())}_destroy(t,r){this.res&&this.res._dump(),this._request&&this._request.destroy(),r(t)}async flushHeaders(){if(this[VQ]||this.destroyed)return;this[VQ]=!0;let t=this.method===L$e,r=s=>{if(this._request=s,this.destroyed){s.destroy();return}t||Q$e(s,this,["timeout","continue","close","error"]);let a=c=>(...f)=>{!this.writable&&!this.destroyed?c(...f):this.once("finish",()=>{c(...f)})};s.once("response",a((c,f,p)=>{let h=new x$e(this.socket,s.readableHighWaterMark);this.res=h,h.req=this,h.statusCode=c[sfe],h.headers=c,h.rawHeaders=p,h.once("end",()=>{this.aborted?(h.aborted=!0,h.emit("aborted")):(h.complete=!0,h.socket=null,h.connection=null)}),t?(h.upgrade=!0,this.emit("connect",h,s,Buffer.alloc(0))?this.emit("close"):s.destroy()):(s.on("data",E=>{!h._dumped&&!h.push(E)&&s.pause()}),s.once("end",()=>{h.push(null)}),this.emit("response",h)||h._dump())})),s.once("headers",a(c=>this.emit("information",{statusCode:c[sfe]}))),s.once("trailers",a((c,f,p)=>{let{res:h}=this;h.trailers=c,h.rawTrailers=p}));let{socket:n}=s.session;this.socket=n,this.connection=n;for(let c of this[jB])c();this.emit("socket",this.socket)};if(this[pH])try{r(this[pH].request(this[ta]))}catch(s){this.emit("error",s)}else{this.reusedSocket=!0;try{r(await this.agent.request(this[AH],this[lfe],this[ta]))}catch(s){this.emit("error",s)}}}getHeader(t){if(typeof t!="string")throw new fH("name","string",t);return this[ta][t.toLowerCase()]}get headersSent(){return this[VQ]}removeHeader(t){if(typeof t!="string")throw new fH("name","string",t);if(this.headersSent)throw new ife("remove");delete this[ta][t.toLowerCase()]}setHeader(t,r){if(this.headersSent)throw new ife("set");if(typeof t!="string"||!M$e.test(t)&&!R$e(t))throw new F$e("Header name",t);if(typeof r>"u")throw new N$e(r,t);if(U$e.test(r))throw new O$e("header content",t);this[ta][t.toLowerCase()]=r}setNoDelay(){}setSocketKeepAlive(){}setTimeout(t,r){let s=()=>this._request.setTimeout(t,r);return this._request?s():this[jB].push(s),this}get maxHeadersCount(){if(!this.destroyed&&this._request)return this._request.session.localSettings.maxHeaderListSize}set maxHeadersCount(t){}};cfe.exports=hH});var ffe=G((dOt,ufe)=>{"use strict";var _$e=Ie("tls");ufe.exports=(e={},t=_$e.connect)=>new Promise((r,s)=>{let a=!1,n,c=async()=>{await p,n.off("timeout",f),n.off("error",s),e.resolveSocket?(r({alpnProtocol:n.alpnProtocol,socket:n,timeout:a}),a&&(await Promise.resolve(),n.emit("timeout"))):(n.destroy(),r({alpnProtocol:n.alpnProtocol,timeout:a}))},f=async()=>{a=!0,c()},p=(async()=>{try{n=await t(e,c),n.on("error",s),n.once("timeout",f)}catch(h){s(h)}})()})});var pfe=G((gOt,Afe)=>{"use strict";var H$e=Ie("net");Afe.exports=e=>{let t=e.host,r=e.headers&&e.headers.host;return r&&(r.startsWith("[")?r.indexOf("]")===-1?t=r:t=r.slice(1,-1):t=r.split(":",1)[0]),H$e.isIP(t)?"":t}});var gfe=G((mOt,mH)=>{"use strict";var hfe=Ie("http"),gH=Ie("https"),j$e=ffe(),G$e=sH(),q$e=dH(),W$e=pfe(),Y$e=uH(),JQ=new G$e({maxSize:100}),GB=new Map,dfe=(e,t,r)=>{t._httpMessage={shouldKeepAlive:!0};let s=()=>{e.emit("free",t,r)};t.on("free",s);let a=()=>{e.removeSocket(t,r)};t.on("close",a);let n=()=>{e.removeSocket(t,r),t.off("close",a),t.off("free",s),t.off("agentRemove",n)};t.on("agentRemove",n),e.emit("free",t,r)},V$e=async e=>{let t=`${e.host}:${e.port}:${e.ALPNProtocols.sort()}`;if(!JQ.has(t)){if(GB.has(t))return(await GB.get(t)).alpnProtocol;let{path:r,agent:s}=e;e.path=e.socketPath;let a=j$e(e);GB.set(t,a);try{let{socket:n,alpnProtocol:c}=await a;if(JQ.set(t,c),e.path=r,c==="h2")n.destroy();else{let{globalAgent:f}=gH,p=gH.Agent.prototype.createConnection;s?s.createConnection===p?dfe(s,n,e):n.destroy():f.createConnection===p?dfe(f,n,e):n.destroy()}return GB.delete(t),c}catch(n){throw GB.delete(t),n}}return JQ.get(t)};mH.exports=async(e,t,r)=>{if((typeof e=="string"||e instanceof URL)&&(e=Y$e(new URL(e))),typeof t=="function"&&(r=t,t=void 0),t={ALPNProtocols:["h2","http/1.1"],...e,...t,resolveSocket:!0},!Array.isArray(t.ALPNProtocols)||t.ALPNProtocols.length===0)throw new Error("The `ALPNProtocols` option must be an Array with at least one entry");t.protocol=t.protocol||"https:";let s=t.protocol==="https:";t.host=t.hostname||t.host||"localhost",t.session=t.tlsSession,t.servername=t.servername||W$e(t),t.port=t.port||(s?443:80),t._defaultAgent=s?gH.globalAgent:hfe.globalAgent;let a=t.agent;if(a){if(a.addRequest)throw new Error("The `options.agent` object can contain only `http`, `https` or `http2` properties");t.agent=a[s?"https":"http"]}return s&&await V$e(t)==="h2"?(a&&(t.agent=a.http2),new q$e(t,r)):hfe.request(t,r)};mH.exports.protocolCache=JQ});var yfe=G((yOt,mfe)=>{"use strict";var J$e=Ie("http2"),K$e=aH(),yH=dH(),z$e=cH(),X$e=gfe(),Z$e=(e,t,r)=>new yH(e,t,r),$$e=(e,t,r)=>{let s=new yH(e,t,r);return s.end(),s};mfe.exports={...J$e,ClientRequest:yH,IncomingMessage:z$e,...K$e,request:Z$e,get:$$e,auto:X$e}});var IH=G(EH=>{"use strict";Object.defineProperty(EH,"__esModule",{value:!0});var Efe=Lp();EH.default=e=>Efe.default.nodeStream(e)&&Efe.default.function_(e.getBoundary)});var Bfe=G(CH=>{"use strict";Object.defineProperty(CH,"__esModule",{value:!0});var Cfe=Ie("fs"),wfe=Ie("util"),Ife=Lp(),eet=IH(),tet=wfe.promisify(Cfe.stat);CH.default=async(e,t)=>{if(t&&"content-length"in t)return Number(t["content-length"]);if(!e)return 0;if(Ife.default.string(e))return Buffer.byteLength(e);if(Ife.default.buffer(e))return e.length;if(eet.default(e))return wfe.promisify(e.getLength.bind(e))();if(e instanceof Cfe.ReadStream){let{size:r}=await tet(e.path);return r===0?void 0:r}}});var BH=G(wH=>{"use strict";Object.defineProperty(wH,"__esModule",{value:!0});function ret(e,t,r){let s={};for(let a of r)s[a]=(...n)=>{t.emit(a,...n)},e.on(a,s[a]);return()=>{for(let a of r)e.off(a,s[a])}}wH.default=ret});var vfe=G(vH=>{"use strict";Object.defineProperty(vH,"__esModule",{value:!0});vH.default=()=>{let e=[];return{once(t,r,s){t.once(r,s),e.push({origin:t,event:r,fn:s})},unhandleAll(){for(let t of e){let{origin:r,event:s,fn:a}=t;r.removeListener(s,a)}e.length=0}}}});var Dfe=G(qB=>{"use strict";Object.defineProperty(qB,"__esModule",{value:!0});qB.TimeoutError=void 0;var net=Ie("net"),iet=vfe(),Sfe=Symbol("reentry"),set=()=>{},KQ=class extends Error{constructor(t,r){super(`Timeout awaiting '${r}' for ${t}ms`),this.event=r,this.name="TimeoutError",this.code="ETIMEDOUT"}};qB.TimeoutError=KQ;qB.default=(e,t,r)=>{if(Sfe in e)return set;e[Sfe]=!0;let s=[],{once:a,unhandleAll:n}=iet.default(),c=(C,S,x)=>{var I;let T=setTimeout(S,C,C,x);(I=T.unref)===null||I===void 0||I.call(T);let O=()=>{clearTimeout(T)};return s.push(O),O},{host:f,hostname:p}=r,h=(C,S)=>{e.destroy(new KQ(C,S))},E=()=>{for(let C of s)C();n()};if(e.once("error",C=>{if(E(),e.listenerCount("error")===0)throw C}),e.once("close",E),a(e,"response",C=>{a(C,"end",E)}),typeof t.request<"u"&&c(t.request,h,"request"),typeof t.socket<"u"){let C=()=>{h(t.socket,"socket")};e.setTimeout(t.socket,C),s.push(()=>{e.removeListener("timeout",C)})}return a(e,"socket",C=>{var S;let{socketPath:x}=e;if(C.connecting){let I=!!(x??net.isIP((S=p??f)!==null&&S!==void 0?S:"")!==0);if(typeof t.lookup<"u"&&!I&&typeof C.address().address>"u"){let T=c(t.lookup,h,"lookup");a(C,"lookup",T)}if(typeof t.connect<"u"){let T=()=>c(t.connect,h,"connect");I?a(C,"connect",T()):a(C,"lookup",O=>{O===null&&a(C,"connect",T())})}typeof t.secureConnect<"u"&&r.protocol==="https:"&&a(C,"connect",()=>{let T=c(t.secureConnect,h,"secureConnect");a(C,"secureConnect",T)})}if(typeof t.send<"u"){let I=()=>c(t.send,h,"send");C.connecting?a(C,"connect",()=>{a(e,"upload-complete",I())}):a(e,"upload-complete",I())}}),typeof t.response<"u"&&a(e,"upload-complete",()=>{let C=c(t.response,h,"response");a(e,"response",C)}),E}});var Pfe=G(SH=>{"use strict";Object.defineProperty(SH,"__esModule",{value:!0});var bfe=Lp();SH.default=e=>{e=e;let t={protocol:e.protocol,hostname:bfe.default.string(e.hostname)&&e.hostname.startsWith("[")?e.hostname.slice(1,-1):e.hostname,host:e.host,hash:e.hash,search:e.search,pathname:e.pathname,href:e.href,path:`${e.pathname||""}${e.search||""}`};return bfe.default.string(e.port)&&e.port.length>0&&(t.port=Number(e.port)),(e.username||e.password)&&(t.auth=`${e.username||""}:${e.password||""}`),t}});var xfe=G(DH=>{"use strict";Object.defineProperty(DH,"__esModule",{value:!0});var oet=Ie("url"),aet=["protocol","host","hostname","port","pathname","search"];DH.default=(e,t)=>{var r,s;if(t.path){if(t.pathname)throw new TypeError("Parameters `path` and `pathname` are mutually exclusive.");if(t.search)throw new TypeError("Parameters `path` and `search` are mutually exclusive.");if(t.searchParams)throw new TypeError("Parameters `path` and `searchParams` are mutually exclusive.")}if(t.search&&t.searchParams)throw new TypeError("Parameters `search` and `searchParams` are mutually exclusive.");if(!e){if(!t.protocol)throw new TypeError("No URL protocol specified");e=`${t.protocol}//${(s=(r=t.hostname)!==null&&r!==void 0?r:t.host)!==null&&s!==void 0?s:""}`}let a=new oet.URL(e);if(t.path){let n=t.path.indexOf("?");n===-1?t.pathname=t.path:(t.pathname=t.path.slice(0,n),t.search=t.path.slice(n+1)),delete t.path}for(let n of aet)t[n]&&(a[n]=t[n].toString());return a}});var kfe=G(PH=>{"use strict";Object.defineProperty(PH,"__esModule",{value:!0});var bH=class{constructor(){this.weakMap=new WeakMap,this.map=new Map}set(t,r){typeof t=="object"?this.weakMap.set(t,r):this.map.set(t,r)}get(t){return typeof t=="object"?this.weakMap.get(t):this.map.get(t)}has(t){return typeof t=="object"?this.weakMap.has(t):this.map.has(t)}};PH.default=bH});var kH=G(xH=>{"use strict";Object.defineProperty(xH,"__esModule",{value:!0});var cet=async e=>{let t=[],r=0;for await(let s of e)t.push(s),r+=Buffer.byteLength(s);return Buffer.isBuffer(t[0])?Buffer.concat(t,r):Buffer.from(t.join(""))};xH.default=cet});var Rfe=G(nm=>{"use strict";Object.defineProperty(nm,"__esModule",{value:!0});nm.dnsLookupIpVersionToFamily=nm.isDnsLookupIpVersion=void 0;var Qfe={auto:0,ipv4:4,ipv6:6};nm.isDnsLookupIpVersion=e=>e in Qfe;nm.dnsLookupIpVersionToFamily=e=>{if(nm.isDnsLookupIpVersion(e))return Qfe[e];throw new Error("Invalid DNS lookup IP version")}});var QH=G(zQ=>{"use strict";Object.defineProperty(zQ,"__esModule",{value:!0});zQ.isResponseOk=void 0;zQ.isResponseOk=e=>{let{statusCode:t}=e,r=e.request.options.followRedirect?299:399;return t>=200&&t<=r||t===304}});var Ffe=G(RH=>{"use strict";Object.defineProperty(RH,"__esModule",{value:!0});var Tfe=new Set;RH.default=e=>{Tfe.has(e)||(Tfe.add(e),process.emitWarning(`Got: ${e}`,{type:"DeprecationWarning"}))}});var Nfe=G(TH=>{"use strict";Object.defineProperty(TH,"__esModule",{value:!0});var Di=Lp(),uet=(e,t)=>{if(Di.default.null_(e.encoding))throw new TypeError("To get a Buffer, set `options.responseType` to `buffer` instead");Di.assert.any([Di.default.string,Di.default.undefined],e.encoding),Di.assert.any([Di.default.boolean,Di.default.undefined],e.resolveBodyOnly),Di.assert.any([Di.default.boolean,Di.default.undefined],e.methodRewriting),Di.assert.any([Di.default.boolean,Di.default.undefined],e.isStream),Di.assert.any([Di.default.string,Di.default.undefined],e.responseType),e.responseType===void 0&&(e.responseType="text");let{retry:r}=e;if(t?e.retry={...t.retry}:e.retry={calculateDelay:s=>s.computedValue,limit:0,methods:[],statusCodes:[],errorCodes:[],maxRetryAfter:void 0},Di.default.object(r)?(e.retry={...e.retry,...r},e.retry.methods=[...new Set(e.retry.methods.map(s=>s.toUpperCase()))],e.retry.statusCodes=[...new Set(e.retry.statusCodes)],e.retry.errorCodes=[...new Set(e.retry.errorCodes)]):Di.default.number(r)&&(e.retry.limit=r),Di.default.undefined(e.retry.maxRetryAfter)&&(e.retry.maxRetryAfter=Math.min(...[e.timeout.request,e.timeout.connect].filter(Di.default.number))),Di.default.object(e.pagination)){t&&(e.pagination={...t.pagination,...e.pagination});let{pagination:s}=e;if(!Di.default.function_(s.transform))throw new Error("`options.pagination.transform` must be implemented");if(!Di.default.function_(s.shouldContinue))throw new Error("`options.pagination.shouldContinue` must be implemented");if(!Di.default.function_(s.filter))throw new TypeError("`options.pagination.filter` must be implemented");if(!Di.default.function_(s.paginate))throw new Error("`options.pagination.paginate` must be implemented")}return e.responseType==="json"&&e.headers.accept===void 0&&(e.headers.accept="application/json"),e};TH.default=uet});var Ofe=G(WB=>{"use strict";Object.defineProperty(WB,"__esModule",{value:!0});WB.retryAfterStatusCodes=void 0;WB.retryAfterStatusCodes=new Set([413,429,503]);var fet=({attemptCount:e,retryOptions:t,error:r,retryAfter:s})=>{if(e>t.limit)return 0;let a=t.methods.includes(r.options.method),n=t.errorCodes.includes(r.code),c=r.response&&t.statusCodes.includes(r.response.statusCode);if(!a||!n&&!c)return 0;if(r.response){if(s)return t.maxRetryAfter===void 0||s>t.maxRetryAfter?0:s;if(r.response.statusCode===413)return 0}let f=Math.random()*100;return 2**(e-1)*1e3+f};WB.default=fet});var JB=G(Un=>{"use strict";Object.defineProperty(Un,"__esModule",{value:!0});Un.UnsupportedProtocolError=Un.ReadError=Un.TimeoutError=Un.UploadError=Un.CacheError=Un.HTTPError=Un.MaxRedirectsError=Un.RequestError=Un.setNonEnumerableProperties=Un.knownHookEvents=Un.withoutBody=Un.kIsNormalizedAlready=void 0;var Lfe=Ie("util"),Mfe=Ie("stream"),Aet=Ie("fs"),C0=Ie("url"),Ufe=Ie("http"),FH=Ie("http"),pet=Ie("https"),het=$ce(),det=oue(),_fe=Uue(),get=Gue(),met=yfe(),yet=WQ(),lt=Lp(),Eet=Bfe(),Hfe=IH(),Iet=BH(),jfe=Dfe(),Cet=Pfe(),Gfe=xfe(),wet=kfe(),Bet=kH(),qfe=Rfe(),vet=QH(),w0=Ffe(),Det=Nfe(),bet=Ofe(),NH,Eo=Symbol("request"),$Q=Symbol("response"),II=Symbol("responseSize"),CI=Symbol("downloadedSize"),wI=Symbol("bodySize"),BI=Symbol("uploadedSize"),XQ=Symbol("serverResponsesPiped"),Wfe=Symbol("unproxyEvents"),Yfe=Symbol("isFromCache"),OH=Symbol("cancelTimeouts"),Vfe=Symbol("startedReading"),vI=Symbol("stopReading"),ZQ=Symbol("triggerRead"),B0=Symbol("body"),YB=Symbol("jobs"),Jfe=Symbol("originalResponse"),Kfe=Symbol("retryTimeout");Un.kIsNormalizedAlready=Symbol("isNormalizedAlready");var Pet=lt.default.string(process.versions.brotli);Un.withoutBody=new Set(["GET","HEAD"]);Un.knownHookEvents=["init","beforeRequest","beforeRedirect","beforeError","beforeRetry","afterResponse"];function xet(e){for(let t in e){let r=e[t];if(!lt.default.string(r)&&!lt.default.number(r)&&!lt.default.boolean(r)&&!lt.default.null_(r)&&!lt.default.undefined(r))throw new TypeError(`The \`searchParams\` value '${String(r)}' must be a string, number, boolean or null`)}}function ket(e){return lt.default.object(e)&&!("statusCode"in e)}var LH=new wet.default,Qet=async e=>new Promise((t,r)=>{let s=a=>{r(a)};e.pending||t(),e.once("error",s),e.once("ready",()=>{e.off("error",s),t()})}),Ret=new Set([300,301,302,303,304,307,308]),Tet=["context","body","json","form"];Un.setNonEnumerableProperties=(e,t)=>{let r={};for(let s of e)if(s)for(let a of Tet)a in s&&(r[a]={writable:!0,configurable:!0,enumerable:!1,value:s[a]});Object.defineProperties(t,r)};var As=class extends Error{constructor(t,r,s){var a;if(super(t),Error.captureStackTrace(this,this.constructor),this.name="RequestError",this.code=r.code,s instanceof oR?(Object.defineProperty(this,"request",{enumerable:!1,value:s}),Object.defineProperty(this,"response",{enumerable:!1,value:s[$Q]}),Object.defineProperty(this,"options",{enumerable:!1,value:s.options})):Object.defineProperty(this,"options",{enumerable:!1,value:s}),this.timings=(a=this.request)===null||a===void 0?void 0:a.timings,lt.default.string(r.stack)&<.default.string(this.stack)){let n=this.stack.indexOf(this.message)+this.message.length,c=this.stack.slice(n).split(` +`).reverse(),f=r.stack.slice(r.stack.indexOf(r.message)+r.message.length).split(` +`).reverse();for(;f.length!==0&&f[0]===c[0];)c.shift();this.stack=`${this.stack.slice(0,n)}${c.reverse().join(` +`)}${f.reverse().join(` +`)}`}}};Un.RequestError=As;var eR=class extends As{constructor(t){super(`Redirected ${t.options.maxRedirects} times. Aborting.`,{},t),this.name="MaxRedirectsError"}};Un.MaxRedirectsError=eR;var tR=class extends As{constructor(t){super(`Response code ${t.statusCode} (${t.statusMessage})`,{},t.request),this.name="HTTPError"}};Un.HTTPError=tR;var rR=class extends As{constructor(t,r){super(t.message,t,r),this.name="CacheError"}};Un.CacheError=rR;var nR=class extends As{constructor(t,r){super(t.message,t,r),this.name="UploadError"}};Un.UploadError=nR;var iR=class extends As{constructor(t,r,s){super(t.message,t,s),this.name="TimeoutError",this.event=t.event,this.timings=r}};Un.TimeoutError=iR;var VB=class extends As{constructor(t,r){super(t.message,t,r),this.name="ReadError"}};Un.ReadError=VB;var sR=class extends As{constructor(t){super(`Unsupported protocol "${t.url.protocol}"`,{},t),this.name="UnsupportedProtocolError"}};Un.UnsupportedProtocolError=sR;var Fet=["socket","connect","continue","information","upgrade","timeout"],oR=class extends Mfe.Duplex{constructor(t,r={},s){super({autoDestroy:!1,highWaterMark:0}),this[CI]=0,this[BI]=0,this.requestInitialized=!1,this[XQ]=new Set,this.redirects=[],this[vI]=!1,this[ZQ]=!1,this[YB]=[],this.retryCount=0,this._progressCallbacks=[];let a=()=>this._unlockWrite(),n=()=>this._lockWrite();this.on("pipe",h=>{h.prependListener("data",a),h.on("data",n),h.prependListener("end",a),h.on("end",n)}),this.on("unpipe",h=>{h.off("data",a),h.off("data",n),h.off("end",a),h.off("end",n)}),this.on("pipe",h=>{h instanceof FH.IncomingMessage&&(this.options.headers={...h.headers,...this.options.headers})});let{json:c,body:f,form:p}=r;if((c||f||p)&&this._lockWrite(),Un.kIsNormalizedAlready in r)this.options=r;else try{this.options=this.constructor.normalizeArguments(t,r,s)}catch(h){lt.default.nodeStream(r.body)&&r.body.destroy(),this.destroy(h);return}(async()=>{var h;try{this.options.body instanceof Aet.ReadStream&&await Qet(this.options.body);let{url:E}=this.options;if(!E)throw new TypeError("Missing `url` property");if(this.requestUrl=E.toString(),decodeURI(this.requestUrl),await this._finalizeBody(),await this._makeRequest(),this.destroyed){(h=this[Eo])===null||h===void 0||h.destroy();return}for(let C of this[YB])C();this[YB].length=0,this.requestInitialized=!0}catch(E){if(E instanceof As){this._beforeError(E);return}this.destroyed||this.destroy(E)}})()}static normalizeArguments(t,r,s){var a,n,c,f,p;let h=r;if(lt.default.object(t)&&!lt.default.urlInstance(t))r={...s,...t,...r};else{if(t&&r&&r.url!==void 0)throw new TypeError("The `url` option is mutually exclusive with the `input` argument");r={...s,...r},t!==void 0&&(r.url=t),lt.default.urlInstance(r.url)&&(r.url=new C0.URL(r.url.toString()))}if(r.cache===!1&&(r.cache=void 0),r.dnsCache===!1&&(r.dnsCache=void 0),lt.assert.any([lt.default.string,lt.default.undefined],r.method),lt.assert.any([lt.default.object,lt.default.undefined],r.headers),lt.assert.any([lt.default.string,lt.default.urlInstance,lt.default.undefined],r.prefixUrl),lt.assert.any([lt.default.object,lt.default.undefined],r.cookieJar),lt.assert.any([lt.default.object,lt.default.string,lt.default.undefined],r.searchParams),lt.assert.any([lt.default.object,lt.default.string,lt.default.undefined],r.cache),lt.assert.any([lt.default.object,lt.default.number,lt.default.undefined],r.timeout),lt.assert.any([lt.default.object,lt.default.undefined],r.context),lt.assert.any([lt.default.object,lt.default.undefined],r.hooks),lt.assert.any([lt.default.boolean,lt.default.undefined],r.decompress),lt.assert.any([lt.default.boolean,lt.default.undefined],r.ignoreInvalidCookies),lt.assert.any([lt.default.boolean,lt.default.undefined],r.followRedirect),lt.assert.any([lt.default.number,lt.default.undefined],r.maxRedirects),lt.assert.any([lt.default.boolean,lt.default.undefined],r.throwHttpErrors),lt.assert.any([lt.default.boolean,lt.default.undefined],r.http2),lt.assert.any([lt.default.boolean,lt.default.undefined],r.allowGetBody),lt.assert.any([lt.default.string,lt.default.undefined],r.localAddress),lt.assert.any([qfe.isDnsLookupIpVersion,lt.default.undefined],r.dnsLookupIpVersion),lt.assert.any([lt.default.object,lt.default.undefined],r.https),lt.assert.any([lt.default.boolean,lt.default.undefined],r.rejectUnauthorized),r.https&&(lt.assert.any([lt.default.boolean,lt.default.undefined],r.https.rejectUnauthorized),lt.assert.any([lt.default.function_,lt.default.undefined],r.https.checkServerIdentity),lt.assert.any([lt.default.string,lt.default.object,lt.default.array,lt.default.undefined],r.https.certificateAuthority),lt.assert.any([lt.default.string,lt.default.object,lt.default.array,lt.default.undefined],r.https.key),lt.assert.any([lt.default.string,lt.default.object,lt.default.array,lt.default.undefined],r.https.certificate),lt.assert.any([lt.default.string,lt.default.undefined],r.https.passphrase),lt.assert.any([lt.default.string,lt.default.buffer,lt.default.array,lt.default.undefined],r.https.pfx)),lt.assert.any([lt.default.object,lt.default.undefined],r.cacheOptions),lt.default.string(r.method)?r.method=r.method.toUpperCase():r.method="GET",r.headers===s?.headers?r.headers={...r.headers}:r.headers=yet({...s?.headers,...r.headers}),"slashes"in r)throw new TypeError("The legacy `url.Url` has been deprecated. Use `URL` instead.");if("auth"in r)throw new TypeError("Parameter `auth` is deprecated. Use `username` / `password` instead.");if("searchParams"in r&&r.searchParams&&r.searchParams!==s?.searchParams){let x;if(lt.default.string(r.searchParams)||r.searchParams instanceof C0.URLSearchParams)x=new C0.URLSearchParams(r.searchParams);else{xet(r.searchParams),x=new C0.URLSearchParams;for(let I in r.searchParams){let T=r.searchParams[I];T===null?x.append(I,""):T!==void 0&&x.append(I,T)}}(a=s?.searchParams)===null||a===void 0||a.forEach((I,T)=>{x.has(T)||x.append(T,I)}),r.searchParams=x}if(r.username=(n=r.username)!==null&&n!==void 0?n:"",r.password=(c=r.password)!==null&&c!==void 0?c:"",lt.default.undefined(r.prefixUrl)?r.prefixUrl=(f=s?.prefixUrl)!==null&&f!==void 0?f:"":(r.prefixUrl=r.prefixUrl.toString(),r.prefixUrl!==""&&!r.prefixUrl.endsWith("/")&&(r.prefixUrl+="/")),lt.default.string(r.url)){if(r.url.startsWith("/"))throw new Error("`input` must not start with a slash when using `prefixUrl`");r.url=Gfe.default(r.prefixUrl+r.url,r)}else(lt.default.undefined(r.url)&&r.prefixUrl!==""||r.protocol)&&(r.url=Gfe.default(r.prefixUrl,r));if(r.url){"port"in r&&delete r.port;let{prefixUrl:x}=r;Object.defineProperty(r,"prefixUrl",{set:T=>{let O=r.url;if(!O.href.startsWith(T))throw new Error(`Cannot change \`prefixUrl\` from ${x} to ${T}: ${O.href}`);r.url=new C0.URL(T+O.href.slice(x.length)),x=T},get:()=>x});let{protocol:I}=r.url;if(I==="unix:"&&(I="http:",r.url=new C0.URL(`http://unix${r.url.pathname}${r.url.search}`)),r.searchParams&&(r.url.search=r.searchParams.toString()),I!=="http:"&&I!=="https:")throw new sR(r);r.username===""?r.username=r.url.username:r.url.username=r.username,r.password===""?r.password=r.url.password:r.url.password=r.password}let{cookieJar:E}=r;if(E){let{setCookie:x,getCookieString:I}=E;lt.assert.function_(x),lt.assert.function_(I),x.length===4&&I.length===0&&(x=Lfe.promisify(x.bind(r.cookieJar)),I=Lfe.promisify(I.bind(r.cookieJar)),r.cookieJar={setCookie:x,getCookieString:I})}let{cache:C}=r;if(C&&(LH.has(C)||LH.set(C,new _fe((x,I)=>{let T=x[Eo](x,I);return lt.default.promise(T)&&(T.once=(O,U)=>{if(O==="error")T.catch(U);else if(O==="abort")(async()=>{try{(await T).once("abort",U)}catch{}})();else throw new Error(`Unknown HTTP2 promise event: ${O}`);return T}),T},C))),r.cacheOptions={...r.cacheOptions},r.dnsCache===!0)NH||(NH=new det.default),r.dnsCache=NH;else if(!lt.default.undefined(r.dnsCache)&&!r.dnsCache.lookup)throw new TypeError(`Parameter \`dnsCache\` must be a CacheableLookup instance or a boolean, got ${lt.default(r.dnsCache)}`);lt.default.number(r.timeout)?r.timeout={request:r.timeout}:s&&r.timeout!==s.timeout?r.timeout={...s.timeout,...r.timeout}:r.timeout={...r.timeout},r.context||(r.context={});let S=r.hooks===s?.hooks;r.hooks={...r.hooks};for(let x of Un.knownHookEvents)if(x in r.hooks)if(lt.default.array(r.hooks[x]))r.hooks[x]=[...r.hooks[x]];else throw new TypeError(`Parameter \`${x}\` must be an Array, got ${lt.default(r.hooks[x])}`);else r.hooks[x]=[];if(s&&!S)for(let x of Un.knownHookEvents)s.hooks[x].length>0&&(r.hooks[x]=[...s.hooks[x],...r.hooks[x]]);if("family"in r&&w0.default('"options.family" was never documented, please use "options.dnsLookupIpVersion"'),s?.https&&(r.https={...s.https,...r.https}),"rejectUnauthorized"in r&&w0.default('"options.rejectUnauthorized" is now deprecated, please use "options.https.rejectUnauthorized"'),"checkServerIdentity"in r&&w0.default('"options.checkServerIdentity" was never documented, please use "options.https.checkServerIdentity"'),"ca"in r&&w0.default('"options.ca" was never documented, please use "options.https.certificateAuthority"'),"key"in r&&w0.default('"options.key" was never documented, please use "options.https.key"'),"cert"in r&&w0.default('"options.cert" was never documented, please use "options.https.certificate"'),"passphrase"in r&&w0.default('"options.passphrase" was never documented, please use "options.https.passphrase"'),"pfx"in r&&w0.default('"options.pfx" was never documented, please use "options.https.pfx"'),"followRedirects"in r)throw new TypeError("The `followRedirects` option does not exist. Use `followRedirect` instead.");if(r.agent){for(let x in r.agent)if(x!=="http"&&x!=="https"&&x!=="http2")throw new TypeError(`Expected the \`options.agent\` properties to be \`http\`, \`https\` or \`http2\`, got \`${x}\``)}return r.maxRedirects=(p=r.maxRedirects)!==null&&p!==void 0?p:0,Un.setNonEnumerableProperties([s,h],r),Det.default(r,s)}_lockWrite(){let t=()=>{throw new TypeError("The payload has been already provided")};this.write=t,this.end=t}_unlockWrite(){this.write=super.write,this.end=super.end}async _finalizeBody(){let{options:t}=this,{headers:r}=t,s=!lt.default.undefined(t.form),a=!lt.default.undefined(t.json),n=!lt.default.undefined(t.body),c=s||a||n,f=Un.withoutBody.has(t.method)&&!(t.method==="GET"&&t.allowGetBody);if(this._cannotHaveBody=f,c){if(f)throw new TypeError(`The \`${t.method}\` method cannot be used with a body`);if([n,s,a].filter(p=>p).length>1)throw new TypeError("The `body`, `json` and `form` options are mutually exclusive");if(n&&!(t.body instanceof Mfe.Readable)&&!lt.default.string(t.body)&&!lt.default.buffer(t.body)&&!Hfe.default(t.body))throw new TypeError("The `body` option must be a stream.Readable, string or Buffer");if(s&&!lt.default.object(t.form))throw new TypeError("The `form` option must be an Object");{let p=!lt.default.string(r["content-type"]);n?(Hfe.default(t.body)&&p&&(r["content-type"]=`multipart/form-data; boundary=${t.body.getBoundary()}`),this[B0]=t.body):s?(p&&(r["content-type"]="application/x-www-form-urlencoded"),this[B0]=new C0.URLSearchParams(t.form).toString()):(p&&(r["content-type"]="application/json"),this[B0]=t.stringifyJson(t.json));let h=await Eet.default(this[B0],t.headers);lt.default.undefined(r["content-length"])&<.default.undefined(r["transfer-encoding"])&&!f&&!lt.default.undefined(h)&&(r["content-length"]=String(h))}}else f?this._lockWrite():this._unlockWrite();this[wI]=Number(r["content-length"])||void 0}async _onResponseBase(t){let{options:r}=this,{url:s}=r;this[Jfe]=t,r.decompress&&(t=get(t));let a=t.statusCode,n=t;n.statusMessage=n.statusMessage?n.statusMessage:Ufe.STATUS_CODES[a],n.url=r.url.toString(),n.requestUrl=this.requestUrl,n.redirectUrls=this.redirects,n.request=this,n.isFromCache=t.fromCache||!1,n.ip=this.ip,n.retryCount=this.retryCount,this[Yfe]=n.isFromCache,this[II]=Number(t.headers["content-length"])||void 0,this[$Q]=t,t.once("end",()=>{this[II]=this[CI],this.emit("downloadProgress",this.downloadProgress)}),t.once("error",f=>{t.destroy(),this._beforeError(new VB(f,this))}),t.once("aborted",()=>{this._beforeError(new VB({name:"Error",message:"The server aborted pending request",code:"ECONNRESET"},this))}),this.emit("downloadProgress",this.downloadProgress);let c=t.headers["set-cookie"];if(lt.default.object(r.cookieJar)&&c){let f=c.map(async p=>r.cookieJar.setCookie(p,s.toString()));r.ignoreInvalidCookies&&(f=f.map(async p=>p.catch(()=>{})));try{await Promise.all(f)}catch(p){this._beforeError(p);return}}if(r.followRedirect&&t.headers.location&&Ret.has(a)){if(t.resume(),this[Eo]&&(this[OH](),delete this[Eo],this[Wfe]()),(a===303&&r.method!=="GET"&&r.method!=="HEAD"||!r.methodRewriting)&&(r.method="GET","body"in r&&delete r.body,"json"in r&&delete r.json,"form"in r&&delete r.form,this[B0]=void 0,delete r.headers["content-length"]),this.redirects.length>=r.maxRedirects){this._beforeError(new eR(this));return}try{let p=Buffer.from(t.headers.location,"binary").toString(),h=new C0.URL(p,s),E=h.toString();decodeURI(E),h.hostname!==s.hostname||h.port!==s.port?("host"in r.headers&&delete r.headers.host,"cookie"in r.headers&&delete r.headers.cookie,"authorization"in r.headers&&delete r.headers.authorization,(r.username||r.password)&&(r.username="",r.password="")):(h.username=r.username,h.password=r.password),this.redirects.push(E),r.url=h;for(let C of r.hooks.beforeRedirect)await C(r,n);this.emit("redirect",n,r),await this._makeRequest()}catch(p){this._beforeError(p);return}return}if(r.isStream&&r.throwHttpErrors&&!vet.isResponseOk(n)){this._beforeError(new tR(n));return}t.on("readable",()=>{this[ZQ]&&this._read()}),this.on("resume",()=>{t.resume()}),this.on("pause",()=>{t.pause()}),t.once("end",()=>{this.push(null)}),this.emit("response",t);for(let f of this[XQ])if(!f.headersSent){for(let p in t.headers){let h=r.decompress?p!=="content-encoding":!0,E=t.headers[p];h&&f.setHeader(p,E)}f.statusCode=a}}async _onResponse(t){try{await this._onResponseBase(t)}catch(r){this._beforeError(r)}}_onRequest(t){let{options:r}=this,{timeout:s,url:a}=r;het.default(t),this[OH]=jfe.default(t,s,a);let n=r.cache?"cacheableResponse":"response";t.once(n,p=>{this._onResponse(p)}),t.once("error",p=>{var h;t.destroy(),(h=t.res)===null||h===void 0||h.removeAllListeners("end"),p=p instanceof jfe.TimeoutError?new iR(p,this.timings,this):new As(p.message,p,this),this._beforeError(p)}),this[Wfe]=Iet.default(t,this,Fet),this[Eo]=t,this.emit("uploadProgress",this.uploadProgress);let c=this[B0],f=this.redirects.length===0?this:t;lt.default.nodeStream(c)?(c.pipe(f),c.once("error",p=>{this._beforeError(new nR(p,this))})):(this._unlockWrite(),lt.default.undefined(c)?(this._cannotHaveBody||this._noPipe)&&(f.end(),this._lockWrite()):(this._writeRequest(c,void 0,()=>{}),f.end(),this._lockWrite())),this.emit("request",t)}async _createCacheableRequest(t,r){return new Promise((s,a)=>{Object.assign(r,Cet.default(t)),delete r.url;let n,c=LH.get(r.cache)(r,async f=>{f._readableState.autoDestroy=!1,n&&(await n).emit("cacheableResponse",f),s(f)});r.url=t,c.once("error",a),c.once("request",async f=>{n=f,s(n)})})}async _makeRequest(){var t,r,s,a,n;let{options:c}=this,{headers:f}=c;for(let U in f)if(lt.default.undefined(f[U]))delete f[U];else if(lt.default.null_(f[U]))throw new TypeError(`Use \`undefined\` instead of \`null\` to delete the \`${U}\` header`);if(c.decompress&<.default.undefined(f["accept-encoding"])&&(f["accept-encoding"]=Pet?"gzip, deflate, br":"gzip, deflate"),c.cookieJar){let U=await c.cookieJar.getCookieString(c.url.toString());lt.default.nonEmptyString(U)&&(c.headers.cookie=U)}for(let U of c.hooks.beforeRequest){let V=await U(c);if(!lt.default.undefined(V)){c.request=()=>V;break}}c.body&&this[B0]!==c.body&&(this[B0]=c.body);let{agent:p,request:h,timeout:E,url:C}=c;if(c.dnsCache&&!("lookup"in c)&&(c.lookup=c.dnsCache.lookup),C.hostname==="unix"){let U=/(?.+?):(?.+)/.exec(`${C.pathname}${C.search}`);if(U?.groups){let{socketPath:V,path:te}=U.groups;Object.assign(c,{socketPath:V,path:te,host:""})}}let S=C.protocol==="https:",x;c.http2?x=met.auto:x=S?pet.request:Ufe.request;let I=(t=c.request)!==null&&t!==void 0?t:x,T=c.cache?this._createCacheableRequest:I;p&&!c.http2&&(c.agent=p[S?"https":"http"]),c[Eo]=I,delete c.request,delete c.timeout;let O=c;if(O.shared=(r=c.cacheOptions)===null||r===void 0?void 0:r.shared,O.cacheHeuristic=(s=c.cacheOptions)===null||s===void 0?void 0:s.cacheHeuristic,O.immutableMinTimeToLive=(a=c.cacheOptions)===null||a===void 0?void 0:a.immutableMinTimeToLive,O.ignoreCargoCult=(n=c.cacheOptions)===null||n===void 0?void 0:n.ignoreCargoCult,c.dnsLookupIpVersion!==void 0)try{O.family=qfe.dnsLookupIpVersionToFamily(c.dnsLookupIpVersion)}catch{throw new Error("Invalid `dnsLookupIpVersion` option value")}c.https&&("rejectUnauthorized"in c.https&&(O.rejectUnauthorized=c.https.rejectUnauthorized),c.https.checkServerIdentity&&(O.checkServerIdentity=c.https.checkServerIdentity),c.https.certificateAuthority&&(O.ca=c.https.certificateAuthority),c.https.certificate&&(O.cert=c.https.certificate),c.https.key&&(O.key=c.https.key),c.https.passphrase&&(O.passphrase=c.https.passphrase),c.https.pfx&&(O.pfx=c.https.pfx));try{let U=await T(C,O);lt.default.undefined(U)&&(U=x(C,O)),c.request=h,c.timeout=E,c.agent=p,c.https&&("rejectUnauthorized"in c.https&&delete O.rejectUnauthorized,c.https.checkServerIdentity&&delete O.checkServerIdentity,c.https.certificateAuthority&&delete O.ca,c.https.certificate&&delete O.cert,c.https.key&&delete O.key,c.https.passphrase&&delete O.passphrase,c.https.pfx&&delete O.pfx),ket(U)?this._onRequest(U):this.writable?(this.once("finish",()=>{this._onResponse(U)}),this._unlockWrite(),this.end(),this._lockWrite()):this._onResponse(U)}catch(U){throw U instanceof _fe.CacheError?new rR(U,this):new As(U.message,U,this)}}async _error(t){try{for(let r of this.options.hooks.beforeError)t=await r(t)}catch(r){t=new As(r.message,r,this)}this.destroy(t)}_beforeError(t){if(this[vI])return;let{options:r}=this,s=this.retryCount+1;this[vI]=!0,t instanceof As||(t=new As(t.message,t,this));let a=t,{response:n}=a;(async()=>{if(n&&!n.body){n.setEncoding(this._readableState.encoding);try{n.rawBody=await Bet.default(n),n.body=n.rawBody.toString()}catch{}}if(this.listenerCount("retry")!==0){let c;try{let f;n&&"retry-after"in n.headers&&(f=Number(n.headers["retry-after"]),Number.isNaN(f)?(f=Date.parse(n.headers["retry-after"])-Date.now(),f<=0&&(f=1)):f*=1e3),c=await r.retry.calculateDelay({attemptCount:s,retryOptions:r.retry,error:a,retryAfter:f,computedValue:bet.default({attemptCount:s,retryOptions:r.retry,error:a,retryAfter:f,computedValue:0})})}catch(f){this._error(new As(f.message,f,this));return}if(c){let f=async()=>{try{for(let p of this.options.hooks.beforeRetry)await p(this.options,a,s)}catch(p){this._error(new As(p.message,t,this));return}this.destroyed||(this.destroy(),this.emit("retry",s,t))};this[Kfe]=setTimeout(f,c);return}}this._error(a)})()}_read(){this[ZQ]=!0;let t=this[$Q];if(t&&!this[vI]){t.readableLength&&(this[ZQ]=!1);let r;for(;(r=t.read())!==null;){this[CI]+=r.length,this[Vfe]=!0;let s=this.downloadProgress;s.percent<1&&this.emit("downloadProgress",s),this.push(r)}}}_write(t,r,s){let a=()=>{this._writeRequest(t,r,s)};this.requestInitialized?a():this[YB].push(a)}_writeRequest(t,r,s){this[Eo].destroyed||(this._progressCallbacks.push(()=>{this[BI]+=Buffer.byteLength(t,r);let a=this.uploadProgress;a.percent<1&&this.emit("uploadProgress",a)}),this[Eo].write(t,r,a=>{!a&&this._progressCallbacks.length>0&&this._progressCallbacks.shift()(),s(a)}))}_final(t){let r=()=>{for(;this._progressCallbacks.length!==0;)this._progressCallbacks.shift()();if(!(Eo in this)){t();return}if(this[Eo].destroyed){t();return}this[Eo].end(s=>{s||(this[wI]=this[BI],this.emit("uploadProgress",this.uploadProgress),this[Eo].emit("upload-complete")),t(s)})};this.requestInitialized?r():this[YB].push(r)}_destroy(t,r){var s;this[vI]=!0,clearTimeout(this[Kfe]),Eo in this&&(this[OH](),!((s=this[$Q])===null||s===void 0)&&s.complete||this[Eo].destroy()),t!==null&&!lt.default.undefined(t)&&!(t instanceof As)&&(t=new As(t.message,t,this)),r(t)}get _isAboutToError(){return this[vI]}get ip(){var t;return(t=this.socket)===null||t===void 0?void 0:t.remoteAddress}get aborted(){var t,r,s;return((r=(t=this[Eo])===null||t===void 0?void 0:t.destroyed)!==null&&r!==void 0?r:this.destroyed)&&!(!((s=this[Jfe])===null||s===void 0)&&s.complete)}get socket(){var t,r;return(r=(t=this[Eo])===null||t===void 0?void 0:t.socket)!==null&&r!==void 0?r:void 0}get downloadProgress(){let t;return this[II]?t=this[CI]/this[II]:this[II]===this[CI]?t=1:t=0,{percent:t,transferred:this[CI],total:this[II]}}get uploadProgress(){let t;return this[wI]?t=this[BI]/this[wI]:this[wI]===this[BI]?t=1:t=0,{percent:t,transferred:this[BI],total:this[wI]}}get timings(){var t;return(t=this[Eo])===null||t===void 0?void 0:t.timings}get isFromCache(){return this[Yfe]}pipe(t,r){if(this[Vfe])throw new Error("Failed to pipe. The response has been emitted already.");return t instanceof FH.ServerResponse&&this[XQ].add(t),super.pipe(t,r)}unpipe(t){return t instanceof FH.ServerResponse&&this[XQ].delete(t),super.unpipe(t),this}};Un.default=oR});var KB=G(ju=>{"use strict";var Net=ju&&ju.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r),Object.defineProperty(e,s,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),Oet=ju&&ju.__exportStar||function(e,t){for(var r in e)r!=="default"&&!Object.prototype.hasOwnProperty.call(t,r)&&Net(t,e,r)};Object.defineProperty(ju,"__esModule",{value:!0});ju.CancelError=ju.ParseError=void 0;var zfe=JB(),MH=class extends zfe.RequestError{constructor(t,r){let{options:s}=r.request;super(`${t.message} in "${s.url.toString()}"`,t,r.request),this.name="ParseError"}};ju.ParseError=MH;var UH=class extends zfe.RequestError{constructor(t){super("Promise was canceled",{},t),this.name="CancelError"}get isCanceled(){return!0}};ju.CancelError=UH;Oet(JB(),ju)});var Zfe=G(_H=>{"use strict";Object.defineProperty(_H,"__esModule",{value:!0});var Xfe=KB(),Let=(e,t,r,s)=>{let{rawBody:a}=e;try{if(t==="text")return a.toString(s);if(t==="json")return a.length===0?"":r(a.toString());if(t==="buffer")return a;throw new Xfe.ParseError({message:`Unknown body type '${t}'`,name:"Error"},e)}catch(n){throw new Xfe.ParseError(n,e)}};_H.default=Let});var HH=G(v0=>{"use strict";var Met=v0&&v0.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r),Object.defineProperty(e,s,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),Uet=v0&&v0.__exportStar||function(e,t){for(var r in e)r!=="default"&&!Object.prototype.hasOwnProperty.call(t,r)&&Met(t,e,r)};Object.defineProperty(v0,"__esModule",{value:!0});var _et=Ie("events"),Het=Lp(),jet=Xce(),aR=KB(),$fe=Zfe(),eAe=JB(),Get=BH(),qet=kH(),tAe=QH(),Wet=["request","response","redirect","uploadProgress","downloadProgress"];function rAe(e){let t,r,s=new _et.EventEmitter,a=new jet((c,f,p)=>{let h=E=>{let C=new eAe.default(void 0,e);C.retryCount=E,C._noPipe=!0,p(()=>C.destroy()),p.shouldReject=!1,p(()=>f(new aR.CancelError(C))),t=C,C.once("response",async I=>{var T;if(I.retryCount=E,I.request.aborted)return;let O;try{O=await qet.default(C),I.rawBody=O}catch{return}if(C._isAboutToError)return;let U=((T=I.headers["content-encoding"])!==null&&T!==void 0?T:"").toLowerCase(),V=["gzip","deflate","br"].includes(U),{options:te}=C;if(V&&!te.decompress)I.body=O;else try{I.body=$fe.default(I,te.responseType,te.parseJson,te.encoding)}catch(ie){if(I.body=O.toString(),tAe.isResponseOk(I)){C._beforeError(ie);return}}try{for(let[ie,ue]of te.hooks.afterResponse.entries())I=await ue(I,async ae=>{let ge=eAe.default.normalizeArguments(void 0,{...ae,retry:{calculateDelay:()=>0},throwHttpErrors:!1,resolveBodyOnly:!1},te);ge.hooks.afterResponse=ge.hooks.afterResponse.slice(0,ie);for(let Ce of ge.hooks.beforeRetry)await Ce(ge);let Ae=rAe(ge);return p(()=>{Ae.catch(()=>{}),Ae.cancel()}),Ae})}catch(ie){C._beforeError(new aR.RequestError(ie.message,ie,C));return}if(!tAe.isResponseOk(I)){C._beforeError(new aR.HTTPError(I));return}r=I,c(C.options.resolveBodyOnly?I.body:I)});let S=I=>{if(a.isCanceled)return;let{options:T}=C;if(I instanceof aR.HTTPError&&!T.throwHttpErrors){let{response:O}=I;c(C.options.resolveBodyOnly?O.body:O);return}f(I)};C.once("error",S);let x=C.options.body;C.once("retry",(I,T)=>{var O,U;if(x===((O=T.request)===null||O===void 0?void 0:O.options.body)&&Het.default.nodeStream((U=T.request)===null||U===void 0?void 0:U.options.body)){S(T);return}h(I)}),Get.default(C,s,Wet)};h(0)});a.on=(c,f)=>(s.on(c,f),a);let n=c=>{let f=(async()=>{await a;let{options:p}=r.request;return $fe.default(r,c,p.parseJson,p.encoding)})();return Object.defineProperties(f,Object.getOwnPropertyDescriptors(a)),f};return a.json=()=>{let{headers:c}=t.options;return!t.writableFinished&&c.accept===void 0&&(c.accept="application/json"),n("json")},a.buffer=()=>n("buffer"),a.text=()=>n("text"),a}v0.default=rAe;Uet(KB(),v0)});var nAe=G(jH=>{"use strict";Object.defineProperty(jH,"__esModule",{value:!0});var Yet=KB();function Vet(e,...t){let r=(async()=>{if(e instanceof Yet.RequestError)try{for(let a of t)if(a)for(let n of a)e=await n(e)}catch(a){e=a}throw e})(),s=()=>r;return r.json=s,r.text=s,r.buffer=s,r.on=s,r}jH.default=Vet});var oAe=G(GH=>{"use strict";Object.defineProperty(GH,"__esModule",{value:!0});var iAe=Lp();function sAe(e){for(let t of Object.values(e))(iAe.default.plainObject(t)||iAe.default.array(t))&&sAe(t);return Object.freeze(e)}GH.default=sAe});var lAe=G(aAe=>{"use strict";Object.defineProperty(aAe,"__esModule",{value:!0})});var qH=G(Lc=>{"use strict";var Jet=Lc&&Lc.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r),Object.defineProperty(e,s,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),Ket=Lc&&Lc.__exportStar||function(e,t){for(var r in e)r!=="default"&&!Object.prototype.hasOwnProperty.call(t,r)&&Jet(t,e,r)};Object.defineProperty(Lc,"__esModule",{value:!0});Lc.defaultHandler=void 0;var cAe=Lp(),Oc=HH(),zet=nAe(),cR=JB(),Xet=oAe(),Zet={RequestError:Oc.RequestError,CacheError:Oc.CacheError,ReadError:Oc.ReadError,HTTPError:Oc.HTTPError,MaxRedirectsError:Oc.MaxRedirectsError,TimeoutError:Oc.TimeoutError,ParseError:Oc.ParseError,CancelError:Oc.CancelError,UnsupportedProtocolError:Oc.UnsupportedProtocolError,UploadError:Oc.UploadError},$et=async e=>new Promise(t=>{setTimeout(t,e)}),{normalizeArguments:lR}=cR.default,uAe=(...e)=>{let t;for(let r of e)t=lR(void 0,r,t);return t},ett=e=>e.isStream?new cR.default(void 0,e):Oc.default(e),ttt=e=>"defaults"in e&&"options"in e.defaults,rtt=["get","post","put","patch","head","delete"];Lc.defaultHandler=(e,t)=>t(e);var fAe=(e,t)=>{if(e)for(let r of e)r(t)},AAe=e=>{e._rawHandlers=e.handlers,e.handlers=e.handlers.map(s=>(a,n)=>{let c,f=s(a,p=>(c=n(p),c));if(f!==c&&!a.isStream&&c){let p=f,{then:h,catch:E,finally:C}=p;Object.setPrototypeOf(p,Object.getPrototypeOf(c)),Object.defineProperties(p,Object.getOwnPropertyDescriptors(c)),p.then=h,p.catch=E,p.finally=C}return f});let t=(s,a={},n)=>{var c,f;let p=0,h=E=>e.handlers[p++](E,p===e.handlers.length?ett:h);if(cAe.default.plainObject(s)){let E={...s,...a};cR.setNonEnumerableProperties([s,a],E),a=E,s=void 0}try{let E;try{fAe(e.options.hooks.init,a),fAe((c=a.hooks)===null||c===void 0?void 0:c.init,a)}catch(S){E=S}let C=lR(s,a,n??e.options);if(C[cR.kIsNormalizedAlready]=!0,E)throw new Oc.RequestError(E.message,E,C);return h(C)}catch(E){if(a.isStream)throw E;return zet.default(E,e.options.hooks.beforeError,(f=a.hooks)===null||f===void 0?void 0:f.beforeError)}};t.extend=(...s)=>{let a=[e.options],n=[...e._rawHandlers],c;for(let f of s)ttt(f)?(a.push(f.defaults.options),n.push(...f.defaults._rawHandlers),c=f.defaults.mutableDefaults):(a.push(f),"handlers"in f&&n.push(...f.handlers),c=f.mutableDefaults);return n=n.filter(f=>f!==Lc.defaultHandler),n.length===0&&n.push(Lc.defaultHandler),AAe({options:uAe(...a),handlers:n,mutableDefaults:!!c})};let r=async function*(s,a){let n=lR(s,a,e.options);n.resolveBodyOnly=!1;let c=n.pagination;if(!cAe.default.object(c))throw new TypeError("`options.pagination` must be implemented");let f=[],{countLimit:p}=c,h=0;for(;h{let n=[];for await(let c of r(s,a))n.push(c);return n},t.paginate.each=r,t.stream=(s,a)=>t(s,{...a,isStream:!0});for(let s of rtt)t[s]=(a,n)=>t(a,{...n,method:s}),t.stream[s]=(a,n)=>t(a,{...n,method:s,isStream:!0});return Object.assign(t,Zet),Object.defineProperty(t,"defaults",{value:e.mutableDefaults?e:Xet.default(e),writable:e.mutableDefaults,configurable:e.mutableDefaults,enumerable:!0}),t.mergeOptions=uAe,t};Lc.default=AAe;Ket(lAe(),Lc)});var dAe=G((Mp,uR)=>{"use strict";var ntt=Mp&&Mp.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r),Object.defineProperty(e,s,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),pAe=Mp&&Mp.__exportStar||function(e,t){for(var r in e)r!=="default"&&!Object.prototype.hasOwnProperty.call(t,r)&&ntt(t,e,r)};Object.defineProperty(Mp,"__esModule",{value:!0});var itt=Ie("url"),hAe=qH(),stt={options:{method:"GET",retry:{limit:2,methods:["GET","PUT","HEAD","DELETE","OPTIONS","TRACE"],statusCodes:[408,413,429,500,502,503,504,521,522,524],errorCodes:["ETIMEDOUT","ECONNRESET","EADDRINUSE","ECONNREFUSED","EPIPE","ENOTFOUND","ENETUNREACH","EAI_AGAIN"],maxRetryAfter:void 0,calculateDelay:({computedValue:e})=>e},timeout:{},headers:{"user-agent":"got (https://github.com/sindresorhus/got)"},hooks:{init:[],beforeRequest:[],beforeRedirect:[],beforeRetry:[],beforeError:[],afterResponse:[]},cache:void 0,dnsCache:void 0,decompress:!0,throwHttpErrors:!0,followRedirect:!0,isStream:!1,responseType:"text",resolveBodyOnly:!1,maxRedirects:10,prefixUrl:"",methodRewriting:!0,ignoreInvalidCookies:!1,context:{},http2:!1,allowGetBody:!1,https:void 0,pagination:{transform:e=>e.request.options.responseType==="json"?e.body:JSON.parse(e.body),paginate:e=>{if(!Reflect.has(e.headers,"link"))return!1;let t=e.headers.link.split(","),r;for(let s of t){let a=s.split(";");if(a[1].includes("next")){r=a[0].trimStart().trim(),r=r.slice(1,-1);break}}return r?{url:new itt.URL(r)}:!1},filter:()=>!0,shouldContinue:()=>!0,countLimit:1/0,backoff:0,requestLimit:1e4,stackAllItems:!0},parseJson:e=>JSON.parse(e),stringifyJson:e=>JSON.stringify(e),cacheOptions:{}},handlers:[hAe.defaultHandler],mutableDefaults:!1},WH=hAe.default(stt);Mp.default=WH;uR.exports=WH;uR.exports.default=WH;uR.exports.__esModule=!0;pAe(qH(),Mp);pAe(HH(),Mp)});var nn={};Vt(nn,{Method:()=>CAe,del:()=>utt,get:()=>JH,getNetworkSettings:()=>IAe,post:()=>KH,put:()=>ctt,request:()=>zB});async function YH(e){return Zl(mAe,e,()=>le.readFilePromise(e).then(t=>(mAe.set(e,t),t)))}function ltt({statusCode:e,statusMessage:t},r){let s=jt(r,e,dt.NUMBER),a=`https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/${e}`;return ZE(r,`${s}${t?` (${t})`:""}`,a)}async function fR(e,{configuration:t,customErrorMessage:r}){try{return await e}catch(s){if(s.name!=="HTTPError")throw s;let a=r?.(s,t)??s.response.body?.error;a==null&&(s.message.startsWith("Response code")?a="The remote server failed to provide the requested resource":a=s.message),s.code==="ETIMEDOUT"&&s.event==="socket"&&(a+=`(can be increased via ${jt(t,"httpTimeout",dt.SETTING)})`);let n=new Lt(35,a,c=>{s.response&&c.reportError(35,` ${Zf(t,{label:"Response Code",value:Mu(dt.NO_HINT,ltt(s.response,t))})}`),s.request&&(c.reportError(35,` ${Zf(t,{label:"Request Method",value:Mu(dt.NO_HINT,s.request.options.method)})}`),c.reportError(35,` ${Zf(t,{label:"Request URL",value:Mu(dt.URL,s.request.requestUrl)})}`)),s.request.redirects.length>0&&c.reportError(35,` ${Zf(t,{label:"Request Redirects",value:Mu(dt.NO_HINT,O4(t,s.request.redirects,dt.URL))})}`),s.request.retryCount===s.request.options.retry.limit&&c.reportError(35,` ${Zf(t,{label:"Request Retry Count",value:Mu(dt.NO_HINT,`${jt(t,s.request.retryCount,dt.NUMBER)} (can be increased via ${jt(t,"httpRetry",dt.SETTING)})`)})}`)});throw n.originalError=s,n}}function IAe(e,t){let r=[...t.configuration.get("networkSettings")].sort(([c],[f])=>f.length-c.length),s={enableNetwork:void 0,httpsCaFilePath:void 0,httpProxy:void 0,httpsProxy:void 0,httpsKeyFilePath:void 0,httpsCertFilePath:void 0},a=Object.keys(s),n=typeof e=="string"?new URL(e):e;for(let[c,f]of r)if(VH.default.isMatch(n.hostname,c))for(let p of a){let h=f.get(p);h!==null&&typeof s[p]>"u"&&(s[p]=h)}for(let c of a)typeof s[c]>"u"&&(s[c]=t.configuration.get(c));return s}async function zB(e,t,{configuration:r,headers:s,jsonRequest:a,jsonResponse:n,method:c="GET",wrapNetworkRequest:f}){let p={target:e,body:t,configuration:r,headers:s,jsonRequest:a,jsonResponse:n,method:c},h=async()=>await ftt(e,t,p),E=typeof f<"u"?await f(h,p):h;return await(await r.reduceHook(S=>S.wrapNetworkRequest,E,p))()}async function JH(e,{configuration:t,jsonResponse:r,customErrorMessage:s,wrapNetworkRequest:a,...n}){let c=()=>fR(zB(e,null,{configuration:t,wrapNetworkRequest:a,...n}),{configuration:t,customErrorMessage:s}).then(p=>p.body),f=await(typeof a<"u"?c():Zl(gAe,e,()=>c().then(p=>(gAe.set(e,p),p))));return r?JSON.parse(f.toString()):f}async function ctt(e,t,{customErrorMessage:r,...s}){return(await fR(zB(e,t,{...s,method:"PUT"}),{customErrorMessage:r,configuration:s.configuration})).body}async function KH(e,t,{customErrorMessage:r,...s}){return(await fR(zB(e,t,{...s,method:"POST"}),{customErrorMessage:r,configuration:s.configuration})).body}async function utt(e,{customErrorMessage:t,...r}){return(await fR(zB(e,null,{...r,method:"DELETE"}),{customErrorMessage:t,configuration:r.configuration})).body}async function ftt(e,t,{configuration:r,headers:s,jsonRequest:a,jsonResponse:n,method:c="GET"}){let f=typeof e=="string"?new URL(e):e,p=IAe(f,{configuration:r});if(p.enableNetwork===!1)throw new Lt(80,`Request to '${f.href}' has been blocked because of your configuration settings`);if(f.protocol==="http:"&&!VH.default.isMatch(f.hostname,r.get("unsafeHttpWhitelist")))throw new Lt(81,`Unsafe http requests must be explicitly whitelisted in your configuration (${f.hostname})`);let h={headers:s,method:c};h.responseType=n?"json":"buffer",t!==null&&(Buffer.isBuffer(t)||!a&&typeof t=="string"?h.body=t:h.json=t);let E=r.get("httpTimeout"),C=r.get("httpRetry"),S=r.get("enableStrictSsl"),x=p.httpsCaFilePath,I=p.httpsCertFilePath,T=p.httpsKeyFilePath,{default:O}=await Promise.resolve().then(()=>et(dAe())),U=x?await YH(x):void 0,V=I?await YH(I):void 0,te=T?await YH(T):void 0,ie={rejectUnauthorized:S,ca:U,cert:V,key:te},ue={http:p.httpProxy?new qce({proxy:p.httpProxy,proxyRequestOptions:ie}):ott,https:p.httpsProxy?new Wce({proxy:p.httpsProxy,proxyRequestOptions:ie}):att},ae=O.extend({timeout:{socket:E},retry:C,agent:ue,https:{rejectUnauthorized:S,certificateAuthority:U,certificate:V,key:te},...h});return r.getLimit("networkConcurrency")(()=>ae(f))}var yAe,EAe,VH,gAe,mAe,ott,att,CAe,AR=Xe(()=>{Dt();Yce();yAe=Ie("https"),EAe=Ie("http"),VH=et(zo());Fc();Qc();kc();gAe=new Map,mAe=new Map,ott=new EAe.Agent({keepAlive:!0}),att=new yAe.Agent({keepAlive:!0});CAe=(a=>(a.GET="GET",a.PUT="PUT",a.POST="POST",a.DELETE="DELETE",a))(CAe||{})});var Ui={};Vt(Ui,{availableParallelism:()=>XH,getArchitecture:()=>XB,getArchitectureName:()=>gtt,getArchitectureSet:()=>zH,getCaller:()=>Itt,major:()=>Att,openUrl:()=>ptt});function dtt(){if(process.platform!=="linux")return null;let e;try{e=le.readFileSync(htt)}catch{}if(typeof e<"u"){if(e&&(e.includes("GLIBC")||e.includes("GNU libc")||e.includes("GNU C Library")))return"glibc";if(e&&e.includes("musl"))return"musl"}let r=(process.report?.getReport()??{}).sharedObjects??[],s=/\/(?:(ld-linux-|[^/]+-linux-gnu\/)|(libc.musl-|ld-musl-))/;return A0(r,a=>{let n=a.match(s);if(!n)return A0.skip;if(n[1])return"glibc";if(n[2])return"musl";throw new Error("Assertion failed: Expected the libc variant to have been detected")})??null}function XB(){return BAe=BAe??{os:(process.env.YARN_IS_TEST_ENV?process.env.YARN_OS_OVERRIDE:void 0)??process.platform,cpu:(process.env.YARN_IS_TEST_ENV?process.env.YARN_CPU_OVERRIDE:void 0)??process.arch,libc:(process.env.YARN_IS_TEST_ENV?process.env.YARN_LIBC_OVERRIDE:void 0)??dtt()}}function gtt(e=XB()){return e.libc?`${e.os}-${e.cpu}-${e.libc}`:`${e.os}-${e.cpu}`}function zH(){let e=XB();return vAe=vAe??{os:[e.os],cpu:[e.cpu],libc:e.libc?[e.libc]:[]}}function Ett(e){let t=mtt.exec(e);if(!t)return null;let r=t[2]&&t[2].indexOf("native")===0,s=t[2]&&t[2].indexOf("eval")===0,a=ytt.exec(t[2]);return s&&a!=null&&(t[2]=a[1],t[3]=a[2],t[4]=a[3]),{file:r?null:t[2],methodName:t[1]||"",arguments:r?[t[2]]:[],line:t[3]?+t[3]:null,column:t[4]?+t[4]:null}}function Itt(){let t=new Error().stack.split(` +`)[3];return Ett(t)}function XH(){return typeof pR.default.availableParallelism<"u"?pR.default.availableParallelism():Math.max(1,pR.default.cpus().length)}var pR,Att,wAe,ptt,htt,BAe,vAe,mtt,ytt,hR=Xe(()=>{Dt();pR=et(Ie("os"));dR();kc();Att=Number(process.versions.node.split(".")[0]),wAe=new Map([["darwin","open"],["linux","xdg-open"],["win32","explorer.exe"]]).get(process.platform),ptt=typeof wAe<"u"?async e=>{try{return await ZH(wAe,[e],{cwd:J.cwd()}),!0}catch{return!1}}:void 0,htt="/usr/bin/ldd";mtt=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||\/|[a-z]:\\|\\\\).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,ytt=/\((\S*)(?::(\d+))(?::(\d+))\)/});function ij(e,t,r,s,a){let n=MB(r);if(s.isArray||s.type==="ANY"&&Array.isArray(n))return Array.isArray(n)?n.map((c,f)=>$H(e,`${t}[${f}]`,c,s,a)):String(n).split(/,/).map(c=>$H(e,t,c,s,a));if(Array.isArray(n))throw new Error(`Non-array configuration settings "${t}" cannot be an array`);return $H(e,t,r,s,a)}function $H(e,t,r,s,a){let n=MB(r);switch(s.type){case"ANY":return FQ(n);case"SHAPE":return vtt(e,t,r,s,a);case"MAP":return Stt(e,t,r,s,a)}if(n===null&&!s.isNullable&&s.default!==null)throw new Error(`Non-nullable configuration settings "${t}" cannot be set to null`);if("values"in s&&s.values?.includes(n))return n;let f=(()=>{if(s.type==="BOOLEAN"&&typeof n!="string")return wB(n);if(typeof n!="string")throw new Error(`Expected configuration setting "${t}" to be a string, got ${typeof n}`);let p=Yk(n,{env:e.env});switch(s.type){case"ABSOLUTE_PATH":{let h=a,E=b8(r);return E&&E[0]!=="<"&&(h=J.dirname(E)),J.resolve(h,fe.toPortablePath(p))}case"LOCATOR_LOOSE":return Tp(p,!1);case"NUMBER":return parseInt(p);case"LOCATOR":return Tp(p);case"BOOLEAN":return wB(p);case"DURATION":return Vk(p,s.unit);default:return p}})();if("values"in s&&s.values&&!s.values.includes(f))throw new Error(`Invalid value, expected one of ${s.values.join(", ")}`);return f}function vtt(e,t,r,s,a){let n=MB(r);if(typeof n!="object"||Array.isArray(n))throw new it(`Object configuration settings "${t}" must be an object`);let c=sj(e,s,{ignoreArrays:!0});if(n===null)return c;for(let[f,p]of Object.entries(n)){let h=`${t}.${f}`;if(!s.properties[f])throw new it(`Unrecognized configuration settings found: ${t}.${f} - run "yarn config" to see the list of settings supported in Yarn`);c.set(f,ij(e,h,p,s.properties[f],a))}return c}function Stt(e,t,r,s,a){let n=MB(r),c=new Map;if(typeof n!="object"||Array.isArray(n))throw new it(`Map configuration settings "${t}" must be an object`);if(n===null)return c;for(let[f,p]of Object.entries(n)){let h=s.normalizeKeys?s.normalizeKeys(f):f,E=`${t}['${h}']`,C=s.valueDefinition;c.set(h,ij(e,E,p,C,a))}return c}function sj(e,t,{ignoreArrays:r=!1}={}){switch(t.type){case"SHAPE":{if(t.isArray&&!r)return[];let s=new Map;for(let[a,n]of Object.entries(t.properties))s.set(a,sj(e,n));return s}case"MAP":return t.isArray&&!r?[]:new Map;case"ABSOLUTE_PATH":return t.default===null?null:e.projectCwd===null?Array.isArray(t.default)?t.default.map(s=>J.normalize(s)):J.isAbsolute(t.default)?J.normalize(t.default):t.isNullable?null:void 0:Array.isArray(t.default)?t.default.map(s=>J.resolve(e.projectCwd,s)):J.resolve(e.projectCwd,t.default);case"DURATION":return Vk(t.default,t.unit);default:return t.default}}function mR(e,t,r){if(t.type==="SECRET"&&typeof e=="string"&&r.hideSecrets)return Btt;if(t.type==="ABSOLUTE_PATH"&&typeof e=="string"&&r.getNativePaths)return fe.fromPortablePath(e);if(t.isArray&&Array.isArray(e)){let s=[];for(let a of e)s.push(mR(a,t,r));return s}if(t.type==="MAP"&&e instanceof Map){if(e.size===0)return;let s=new Map;for(let[a,n]of e.entries()){let c=mR(n,t.valueDefinition,r);typeof c<"u"&&s.set(a,c)}return s}if(t.type==="SHAPE"&&e instanceof Map){if(e.size===0)return;let s=new Map;for(let[a,n]of e.entries()){let c=t.properties[a],f=mR(n,c,r);typeof f<"u"&&s.set(a,f)}return s}return e}function Dtt(){let e={};for(let[t,r]of Object.entries(process.env))t=t.toLowerCase(),t.startsWith(yR)&&(t=(0,DAe.default)(t.slice(yR.length)),e[t]=r);return e}function tj(){let e=`${yR}rc_filename`;for(let[t,r]of Object.entries(process.env))if(t.toLowerCase()===e&&typeof r=="string")return r;return rj}async function SAe(e){try{return await le.readFilePromise(e)}catch{return Buffer.of()}}async function btt(e,t){return Buffer.compare(...await Promise.all([SAe(e),SAe(t)]))===0}async function Ptt(e,t){let[r,s]=await Promise.all([le.statPromise(e),le.statPromise(t)]);return r.dev===s.dev&&r.ino===s.ino}async function ktt({configuration:e,selfPath:t}){let r=e.get("yarnPath");return e.get("ignorePath")||r===null||r===t||await xtt(r,t)?null:r}var DAe,Up,bAe,PAe,xAe,ej,Ctt,ZB,wtt,_p,yR,rj,Btt,SI,kAe,nj,ER,gR,xtt,ze,$B=Xe(()=>{Dt();vc();DAe=et(Wte()),Up=et(Rg());Yt();bAe=et(Mre()),PAe=Ie("module"),xAe=et(Ng()),ej=Ie("stream");Bce();cI();E8();I8();C8();Nce();w8();$g();_ce();OQ();Qc();E0();AR();kc();hR();Np();Zo();Ctt=function(){if(!Up.GITHUB_ACTIONS||!process.env.GITHUB_EVENT_PATH)return!1;let e=fe.toPortablePath(process.env.GITHUB_EVENT_PATH),t;try{t=le.readJsonSync(e)}catch{return!1}return!(!("repository"in t)||!t.repository||(t.repository.private??!0))}(),ZB=new Set(["@yarnpkg/plugin-constraints","@yarnpkg/plugin-exec","@yarnpkg/plugin-interactive-tools","@yarnpkg/plugin-stage","@yarnpkg/plugin-typescript","@yarnpkg/plugin-version","@yarnpkg/plugin-workspace-tools"]),wtt=new Set(["isTestEnv","injectNpmUser","injectNpmPassword","injectNpm2FaToken","zipDataEpilogue","cacheCheckpointOverride","cacheVersionOverride","lockfileVersionOverride","osOverride","cpuOverride","libcOverride","binFolder","version","flags","profile","gpg","ignoreNode","wrapOutput","home","confDir","registry","ignoreCwd"]),_p=/^(?!v)[a-z0-9._-]+$/i,yR="yarn_",rj=".yarnrc.yml",Btt="********",SI=(C=>(C.ANY="ANY",C.BOOLEAN="BOOLEAN",C.ABSOLUTE_PATH="ABSOLUTE_PATH",C.LOCATOR="LOCATOR",C.LOCATOR_LOOSE="LOCATOR_LOOSE",C.NUMBER="NUMBER",C.STRING="STRING",C.DURATION="DURATION",C.SECRET="SECRET",C.SHAPE="SHAPE",C.MAP="MAP",C))(SI||{}),kAe=dt,nj=(c=>(c.MILLISECONDS="ms",c.SECONDS="s",c.MINUTES="m",c.HOURS="h",c.DAYS="d",c.WEEKS="w",c))(nj||{}),ER=(r=>(r.JUNCTIONS="junctions",r.SYMLINKS="symlinks",r))(ER||{}),gR={lastUpdateCheck:{description:"Last timestamp we checked whether new Yarn versions were available",type:"STRING",default:null},yarnPath:{description:"Path to the local executable that must be used over the global one",type:"ABSOLUTE_PATH",default:null},ignorePath:{description:"If true, the local executable will be ignored when using the global one",type:"BOOLEAN",default:!1},globalFolder:{description:"Folder where all system-global files are stored",type:"ABSOLUTE_PATH",default:x8()},cacheFolder:{description:"Folder where the cache files must be written",type:"ABSOLUTE_PATH",default:"./.yarn/cache"},compressionLevel:{description:"Zip files compression level, from 0 to 9 or mixed (a variant of 9, which stores some files uncompressed, when compression doesn't yield good results)",type:"NUMBER",values:["mixed",0,1,2,3,4,5,6,7,8,9],default:0},virtualFolder:{description:"Folder where the virtual packages (cf doc) will be mapped on the disk (must be named __virtual__)",type:"ABSOLUTE_PATH",default:"./.yarn/__virtual__"},installStatePath:{description:"Path of the file where the install state will be persisted",type:"ABSOLUTE_PATH",default:"./.yarn/install-state.gz"},immutablePatterns:{description:"Array of glob patterns; files matching them won't be allowed to change during immutable installs",type:"STRING",default:[],isArray:!0},rcFilename:{description:"Name of the files where the configuration can be found",type:"STRING",default:tj()},enableGlobalCache:{description:"If true, the system-wide cache folder will be used regardless of `cache-folder`",type:"BOOLEAN",default:!0},cacheMigrationMode:{description:"Defines the conditions under which Yarn upgrades should cause the cache archives to be regenerated.",type:"STRING",values:["always","match-spec","required-only"],default:"always"},enableColors:{description:"If true, the CLI is allowed to use colors in its output",type:"BOOLEAN",default:Xk,defaultText:""},enableHyperlinks:{description:"If true, the CLI is allowed to use hyperlinks in its output",type:"BOOLEAN",default:N4,defaultText:""},enableInlineBuilds:{description:"If true, the CLI will print the build output on the command line",type:"BOOLEAN",default:Up.isCI,defaultText:""},enableMessageNames:{description:"If true, the CLI will prefix most messages with codes suitable for search engines",type:"BOOLEAN",default:!0},enableProgressBars:{description:"If true, the CLI is allowed to show a progress bar for long-running events",type:"BOOLEAN",default:!Up.isCI,defaultText:""},enableTimers:{description:"If true, the CLI is allowed to print the time spent executing commands",type:"BOOLEAN",default:!0},enableTips:{description:"If true, installs will print a helpful message every day of the week",type:"BOOLEAN",default:!Up.isCI,defaultText:""},preferInteractive:{description:"If true, the CLI will automatically use the interactive mode when called from a TTY",type:"BOOLEAN",default:!1},preferTruncatedLines:{description:"If true, the CLI will truncate lines that would go beyond the size of the terminal",type:"BOOLEAN",default:!1},progressBarStyle:{description:"Which style of progress bar should be used (only when progress bars are enabled)",type:"STRING",default:void 0,defaultText:""},defaultLanguageName:{description:"Default language mode that should be used when a package doesn't offer any insight",type:"STRING",default:"node"},defaultProtocol:{description:"Default resolution protocol used when resolving pure semver and tag ranges",type:"STRING",default:"npm:"},enableTransparentWorkspaces:{description:"If false, Yarn won't automatically resolve workspace dependencies unless they use the `workspace:` protocol",type:"BOOLEAN",default:!0},supportedArchitectures:{description:"Architectures that Yarn will fetch and inject into the resolver",type:"SHAPE",properties:{os:{description:"Array of supported process.platform strings, or null to target them all",type:"STRING",isArray:!0,isNullable:!0,default:["current"]},cpu:{description:"Array of supported process.arch strings, or null to target them all",type:"STRING",isArray:!0,isNullable:!0,default:["current"]},libc:{description:"Array of supported libc libraries, or null to target them all",type:"STRING",isArray:!0,isNullable:!0,default:["current"]}}},enableMirror:{description:"If true, the downloaded packages will be retrieved and stored in both the local and global folders",type:"BOOLEAN",default:!0},enableNetwork:{description:"If false, Yarn will refuse to use the network if required to",type:"BOOLEAN",default:!0},enableOfflineMode:{description:"If true, Yarn will attempt to retrieve files and metadata from the global cache rather than the network",type:"BOOLEAN",default:!1},httpProxy:{description:"URL of the http proxy that must be used for outgoing http requests",type:"STRING",default:null},httpsProxy:{description:"URL of the http proxy that must be used for outgoing https requests",type:"STRING",default:null},unsafeHttpWhitelist:{description:"List of the hostnames for which http queries are allowed (glob patterns are supported)",type:"STRING",default:[],isArray:!0},httpTimeout:{description:"Timeout of each http request",type:"DURATION",unit:"ms",default:"1m"},httpRetry:{description:"Retry times on http failure",type:"NUMBER",default:3},networkConcurrency:{description:"Maximal number of concurrent requests",type:"NUMBER",default:50},taskPoolConcurrency:{description:"Maximal amount of concurrent heavy task processing",type:"NUMBER",default:XH()},taskPoolMode:{description:"Execution strategy for heavy tasks",type:"STRING",values:["async","workers"],default:"workers"},networkSettings:{description:"Network settings per hostname (glob patterns are supported)",type:"MAP",valueDefinition:{description:"",type:"SHAPE",properties:{httpsCaFilePath:{description:"Path to file containing one or multiple Certificate Authority signing certificates",type:"ABSOLUTE_PATH",default:null},enableNetwork:{description:"If false, the package manager will refuse to use the network if required to",type:"BOOLEAN",default:null},httpProxy:{description:"URL of the http proxy that must be used for outgoing http requests",type:"STRING",default:null},httpsProxy:{description:"URL of the http proxy that must be used for outgoing https requests",type:"STRING",default:null},httpsKeyFilePath:{description:"Path to file containing private key in PEM format",type:"ABSOLUTE_PATH",default:null},httpsCertFilePath:{description:"Path to file containing certificate chain in PEM format",type:"ABSOLUTE_PATH",default:null}}}},httpsCaFilePath:{description:"A path to a file containing one or multiple Certificate Authority signing certificates",type:"ABSOLUTE_PATH",default:null},httpsKeyFilePath:{description:"Path to file containing private key in PEM format",type:"ABSOLUTE_PATH",default:null},httpsCertFilePath:{description:"Path to file containing certificate chain in PEM format",type:"ABSOLUTE_PATH",default:null},enableStrictSsl:{description:"If false, SSL certificate errors will be ignored",type:"BOOLEAN",default:!0},logFilters:{description:"Overrides for log levels",type:"SHAPE",isArray:!0,concatenateValues:!0,properties:{code:{description:"Code of the messages covered by this override",type:"STRING",default:void 0},text:{description:"Code of the texts covered by this override",type:"STRING",default:void 0},pattern:{description:"Code of the patterns covered by this override",type:"STRING",default:void 0},level:{description:"Log level override, set to null to remove override",type:"STRING",values:Object.values($k),isNullable:!0,default:void 0}}},enableTelemetry:{description:"If true, telemetry will be periodically sent, following the rules in https://yarnpkg.com/advanced/telemetry",type:"BOOLEAN",default:!0},telemetryInterval:{description:"Minimal amount of time between two telemetry uploads",type:"DURATION",unit:"d",default:"7d"},telemetryUserId:{description:"If you desire to tell us which project you are, you can set this field. Completely optional and opt-in.",type:"STRING",default:null},enableHardenedMode:{description:"If true, automatically enable --check-resolutions --refresh-lockfile on installs",type:"BOOLEAN",default:Up.isPR&&Ctt,defaultText:""},enableScripts:{description:"If true, packages are allowed to have install scripts by default",type:"BOOLEAN",default:!1},enableStrictSettings:{description:"If true, unknown settings will cause Yarn to abort",type:"BOOLEAN",default:!0},enableImmutableCache:{description:"If true, the cache is reputed immutable and actions that would modify it will throw",type:"BOOLEAN",default:!1},enableCacheClean:{description:"If false, disallows the `cache clean` command",type:"BOOLEAN",default:!0},checksumBehavior:{description:"Enumeration defining what to do when a checksum doesn't match expectations",type:"STRING",default:"throw"},injectEnvironmentFiles:{description:"List of all the environment files that Yarn should inject inside the process when it starts",type:"ABSOLUTE_PATH",default:[".env.yarn?"],isArray:!0},packageExtensions:{description:"Map of package corrections to apply on the dependency tree",type:"MAP",valueDefinition:{description:"The extension that will be applied to any package whose version matches the specified range",type:"SHAPE",properties:{dependencies:{description:"The set of dependencies that must be made available to the current package in order for it to work properly",type:"MAP",valueDefinition:{description:"A range",type:"STRING"}},peerDependencies:{description:"Inherited dependencies - the consumer of the package will be tasked to provide them",type:"MAP",valueDefinition:{description:"A semver range",type:"STRING"}},peerDependenciesMeta:{description:"Extra information related to the dependencies listed in the peerDependencies field",type:"MAP",valueDefinition:{description:"The peerDependency meta",type:"SHAPE",properties:{optional:{description:"If true, the selected peer dependency will be marked as optional by the package manager and the consumer omitting it won't be reported as an error",type:"BOOLEAN",default:!1}}}}}}}};xtt=process.platform==="win32"?btt:Ptt;ze=class e{constructor(t){this.isCI=Up.isCI;this.projectCwd=null;this.plugins=new Map;this.settings=new Map;this.values=new Map;this.sources=new Map;this.invalid=new Map;this.env={};this.limits=new Map;this.packageExtensions=null;this.startingCwd=t}static{this.deleteProperty=Symbol()}static{this.telemetry=null}static create(t,r,s){let a=new e(t);typeof r<"u"&&!(r instanceof Map)&&(a.projectCwd=r),a.importSettings(gR);let n=typeof s<"u"?s:r instanceof Map?r:new Map;for(let[c,f]of n)a.activatePlugin(c,f);return a}static async find(t,r,{strict:s=!0,usePathCheck:a=null,useRc:n=!0}={}){let c=Dtt();delete c.rcFilename;let f=new e(t),p=await e.findRcFiles(t),h=await e.findFolderRcFile(hI());h&&(p.find(ge=>ge.path===h.path)||p.unshift(h));let E=Uce(p.map(ae=>[ae.path,ae.data])),C=vt.dot,S=new Set(Object.keys(gR)),x=({yarnPath:ae,ignorePath:ge,injectEnvironmentFiles:Ae})=>({yarnPath:ae,ignorePath:ge,injectEnvironmentFiles:Ae}),I=({yarnPath:ae,ignorePath:ge,injectEnvironmentFiles:Ae,...Ce})=>{let Ee={};for(let[d,Se]of Object.entries(Ce))S.has(d)&&(Ee[d]=Se);return Ee},T=({yarnPath:ae,ignorePath:ge,...Ae})=>{let Ce={};for(let[Ee,d]of Object.entries(Ae))S.has(Ee)||(Ce[Ee]=d);return Ce};if(f.importSettings(x(gR)),f.useWithSource("",x(c),t,{strict:!1}),E){let[ae,ge]=E;f.useWithSource(ae,x(ge),C,{strict:!1})}if(a){if(await ktt({configuration:f,selfPath:a})!==null)return f;f.useWithSource("",{ignorePath:!0},t,{strict:!1,overwrite:!0})}let O=await e.findProjectCwd(t);f.startingCwd=t,f.projectCwd=O;let U=Object.assign(Object.create(null),process.env);f.env=U;let V=await Promise.all(f.get("injectEnvironmentFiles").map(async ae=>{let ge=ae.endsWith("?")?await le.readFilePromise(ae.slice(0,-1),"utf8").catch(()=>""):await le.readFilePromise(ae,"utf8");return(0,bAe.parse)(ge)}));for(let ae of V)for(let[ge,Ae]of Object.entries(ae))f.env[ge]=Yk(Ae,{env:U});if(f.importSettings(I(gR)),f.useWithSource("",I(c),t,{strict:s}),E){let[ae,ge]=E;f.useWithSource(ae,I(ge),C,{strict:s})}let te=ae=>"default"in ae?ae.default:ae,ie=new Map([["@@core",wce]]);if(r!==null)for(let ae of r.plugins.keys())ie.set(ae,te(r.modules.get(ae)));for(let[ae,ge]of ie)f.activatePlugin(ae,ge);let ue=new Map([]);if(r!==null){let ae=new Map;for(let[Ce,Ee]of r.modules)ae.set(Ce,()=>Ee);let ge=new Set,Ae=async(Ce,Ee)=>{let{factory:d,name:Se}=kp(Ce);if(!d||ge.has(Se))return;let Be=new Map(ae),me=Z=>{if((0,PAe.isBuiltin)(Z))return kp(Z);if(Be.has(Z))return Be.get(Z)();throw new it(`This plugin cannot access the package referenced via ${Z} which is neither a builtin, nor an exposed entry`)},ce=await VE(async()=>te(await d(me)),Z=>`${Z} (when initializing ${Se}, defined in ${Ee})`);ae.set(Se,()=>ce),ge.add(Se),ue.set(Se,ce)};if(c.plugins)for(let Ce of c.plugins.split(";")){let Ee=J.resolve(t,fe.toPortablePath(Ce));await Ae(Ee,"")}for(let{path:Ce,cwd:Ee,data:d}of p)if(n&&Array.isArray(d.plugins))for(let Se of d.plugins){let Be=typeof Se!="string"?Se.path:Se,me=Se?.spec??"",ce=Se?.checksum??"";if(ZB.has(me))continue;let Z=J.resolve(Ee,fe.toPortablePath(Be));if(!await le.existsPromise(Z)){if(!me){let st=jt(f,J.basename(Z,".cjs"),dt.NAME),_=jt(f,".gitignore",dt.NAME),tt=jt(f,f.values.get("rcFilename"),dt.NAME),Ne=jt(f,"https://yarnpkg.com/getting-started/qa#which-files-should-be-gitignored",dt.URL);throw new it(`Missing source for the ${st} plugin - please try to remove the plugin from ${tt} then reinstall it manually. This error usually occurs because ${_} is incorrect, check ${Ne} to make sure your plugin folder isn't gitignored.`)}if(!me.match(/^https?:/)){let st=jt(f,J.basename(Z,".cjs"),dt.NAME),_=jt(f,f.values.get("rcFilename"),dt.NAME);throw new it(`Failed to recognize the source for the ${st} plugin - please try to delete the plugin from ${_} then reinstall it manually.`)}let De=await JH(me,{configuration:f}),Qe=fs(De);if(ce&&ce!==Qe){let st=jt(f,J.basename(Z,".cjs"),dt.NAME),_=jt(f,f.values.get("rcFilename"),dt.NAME),tt=jt(f,`yarn plugin import ${me}`,dt.CODE);throw new it(`Failed to fetch the ${st} plugin from its remote location: its checksum seems to have changed. If this is expected, please remove the plugin from ${_} then run ${tt} to reimport it.`)}await le.mkdirPromise(J.dirname(Z),{recursive:!0}),await le.writeFilePromise(Z,De)}await Ae(Z,Ce)}}for(let[ae,ge]of ue)f.activatePlugin(ae,ge);if(f.useWithSource("",T(c),t,{strict:s}),E){let[ae,ge]=E;f.useWithSource(ae,T(ge),C,{strict:s})}return f.get("enableGlobalCache")&&(f.values.set("cacheFolder",`${f.get("globalFolder")}/cache`),f.sources.set("cacheFolder","")),f}static async findRcFiles(t){let r=tj(),s=[],a=t,n=null;for(;a!==n;){n=a;let c=J.join(n,r);if(le.existsSync(c)){let f,p;try{p=await le.readFilePromise(c,"utf8"),f=cs(p)}catch{let h="";throw p?.match(/^\s+(?!-)[^:]+\s+\S+/m)&&(h=" (in particular, make sure you list the colons after each key name)"),new it(`Parse error when loading ${c}; please check it's proper Yaml${h}`)}s.unshift({path:c,cwd:n,data:f})}a=J.dirname(n)}return s}static async findFolderRcFile(t){let r=J.join(t,Er.rc),s;try{s=await le.readFilePromise(r,"utf8")}catch(n){if(n.code==="ENOENT")return null;throw n}let a=cs(s);return{path:r,cwd:t,data:a}}static async findProjectCwd(t){let r=null,s=t,a=null;for(;s!==a;){if(a=s,le.existsSync(J.join(a,Er.lockfile)))return a;le.existsSync(J.join(a,Er.manifest))&&(r=a),s=J.dirname(a)}return r}static async updateConfiguration(t,r,s={}){let a=tj(),n=J.join(t,a),c=le.existsSync(n)?cs(await le.readFilePromise(n,"utf8")):{},f=!1,p;if(typeof r=="function"){try{p=r(c)}catch{p=r({})}if(p===c)return!1}else{p=c;for(let h of Object.keys(r)){let E=c[h],C=r[h],S;if(typeof C=="function")try{S=C(E)}catch{S=C(void 0)}else S=C;E!==S&&(S===e.deleteProperty?delete p[h]:p[h]=S,f=!0)}if(!f)return!1}return await le.changeFilePromise(n,fl(p),{automaticNewlines:!0}),!0}static async addPlugin(t,r){r.length!==0&&await e.updateConfiguration(t,s=>{let a=s.plugins??[];if(a.length===0)return{...s,plugins:r};let n=[],c=[...r];for(let f of a){let p=typeof f!="string"?f.path:f,h=c.find(E=>E.path===p);h?(n.push(h),c=c.filter(E=>E!==h)):n.push(f)}return n.push(...c),{...s,plugins:n}})}static async updateHomeConfiguration(t){let r=hI();return await e.updateConfiguration(r,t)}activatePlugin(t,r){this.plugins.set(t,r),typeof r.configuration<"u"&&this.importSettings(r.configuration)}importSettings(t){for(let[r,s]of Object.entries(t))if(s!=null){if(this.settings.has(r))throw new Error(`Cannot redefine settings "${r}"`);this.settings.set(r,s),this.values.set(r,sj(this,s))}}useWithSource(t,r,s,a){try{this.use(t,r,s,a)}catch(n){throw n.message+=` (in ${jt(this,t,dt.PATH)})`,n}}use(t,r,s,{strict:a=!0,overwrite:n=!1}={}){a=a&&this.get("enableStrictSettings");for(let c of["enableStrictSettings",...Object.keys(r)]){let f=r[c],p=b8(f);if(p&&(t=p),typeof f>"u"||c==="plugins"||t===""&&wtt.has(c))continue;if(c==="rcFilename")throw new it(`The rcFilename settings can only be set via ${`${yR}RC_FILENAME`.toUpperCase()}, not via a rc file`);let h=this.settings.get(c);if(!h){let C=hI(),S=t[0]!=="<"?J.dirname(t):null;if(a&&!(S!==null?C===S:!1))throw new it(`Unrecognized or legacy configuration settings found: ${c} - run "yarn config" to see the list of settings supported in Yarn`);this.invalid.set(c,t);continue}if(this.sources.has(c)&&!(n||h.type==="MAP"||h.isArray&&h.concatenateValues))continue;let E;try{E=ij(this,c,f,h,s)}catch(C){throw C.message+=` in ${jt(this,t,dt.PATH)}`,C}if(c==="enableStrictSettings"&&t!==""){a=E;continue}if(h.type==="MAP"){let C=this.values.get(c);this.values.set(c,new Map(n?[...C,...E]:[...E,...C])),this.sources.set(c,`${this.sources.get(c)}, ${t}`)}else if(h.isArray&&h.concatenateValues){let C=this.values.get(c);this.values.set(c,n?[...C,...E]:[...E,...C]),this.sources.set(c,`${this.sources.get(c)}, ${t}`)}else this.values.set(c,E),this.sources.set(c,t)}}get(t){if(!this.values.has(t))throw new Error(`Invalid configuration key "${t}"`);return this.values.get(t)}getSpecial(t,{hideSecrets:r=!1,getNativePaths:s=!1}){let a=this.get(t),n=this.settings.get(t);if(typeof n>"u")throw new it(`Couldn't find a configuration settings named "${t}"`);return mR(a,n,{hideSecrets:r,getNativePaths:s})}getSubprocessStreams(t,{header:r,prefix:s,report:a}){let n,c,f=le.createWriteStream(t);if(this.get("enableInlineBuilds")){let p=a.createStreamReporter(`${s} ${jt(this,"STDOUT","green")}`),h=a.createStreamReporter(`${s} ${jt(this,"STDERR","red")}`);n=new ej.PassThrough,n.pipe(p),n.pipe(f),c=new ej.PassThrough,c.pipe(h),c.pipe(f)}else n=f,c=f,typeof r<"u"&&n.write(`${r} +`);return{stdout:n,stderr:c}}makeResolver(){let t=[];for(let r of this.plugins.values())for(let s of r.resolvers||[])t.push(new s);return new em([new TQ,new Ii,...t])}makeFetcher(){let t=[];for(let r of this.plugins.values())for(let s of r.fetchers||[])t.push(new s);return new uI([new fI,new AI,...t])}getLinkers(){let t=[];for(let r of this.plugins.values())for(let s of r.linkers||[])t.push(new s);return t}getSupportedArchitectures(){let t=XB(),r=this.get("supportedArchitectures"),s=r.get("os");s!==null&&(s=s.map(c=>c==="current"?t.os:c));let a=r.get("cpu");a!==null&&(a=a.map(c=>c==="current"?t.cpu:c));let n=r.get("libc");return n!==null&&(n=Xl(n,c=>c==="current"?t.libc??Xl.skip:c)),{os:s,cpu:a,libc:n}}isInteractive({interactive:t,stdout:r}){return r.isTTY?t??this.get("preferInteractive"):!1}async getPackageExtensions(){if(this.packageExtensions!==null)return this.packageExtensions;this.packageExtensions=new Map;let t=this.packageExtensions,r=(s,a,{userProvided:n=!1}={})=>{if(!yl(s.range))throw new Error("Only semver ranges are allowed as keys for the packageExtensions setting");let c=new _t;c.load(a,{yamlCompatibilityMode:!0});let f=CB(t,s.identHash),p=[];f.push([s.range,p]);let h={status:"inactive",userProvided:n,parentDescriptor:s};for(let E of c.dependencies.values())p.push({...h,type:"Dependency",descriptor:E});for(let E of c.peerDependencies.values())p.push({...h,type:"PeerDependency",descriptor:E});for(let[E,C]of c.peerDependenciesMeta)for(let[S,x]of Object.entries(C))p.push({...h,type:"PeerDependencyMeta",selector:E,key:S,value:x})};await this.triggerHook(s=>s.registerPackageExtensions,this,r);for(let[s,a]of this.get("packageExtensions"))r(I0(s,!0),Wk(a),{userProvided:!0});return t}normalizeLocator(t){return yl(t.reference)?Js(t,`${this.get("defaultProtocol")}${t.reference}`):_p.test(t.reference)?Js(t,`${this.get("defaultProtocol")}${t.reference}`):t}normalizeDependency(t){return yl(t.range)?Mn(t,`${this.get("defaultProtocol")}${t.range}`):_p.test(t.range)?Mn(t,`${this.get("defaultProtocol")}${t.range}`):t}normalizeDependencyMap(t){return new Map([...t].map(([r,s])=>[r,this.normalizeDependency(s)]))}normalizePackage(t,{packageExtensions:r}){let s=xB(t),a=r.get(t.identHash);if(typeof a<"u"){let c=t.version;if(c!==null){for(let[f,p]of a)if(tA(c,f))for(let h of p)switch(h.status==="inactive"&&(h.status="redundant"),h.type){case"Dependency":typeof s.dependencies.get(h.descriptor.identHash)>"u"&&(h.status="active",s.dependencies.set(h.descriptor.identHash,this.normalizeDependency(h.descriptor)));break;case"PeerDependency":typeof s.peerDependencies.get(h.descriptor.identHash)>"u"&&(h.status="active",s.peerDependencies.set(h.descriptor.identHash,h.descriptor));break;case"PeerDependencyMeta":{let E=s.peerDependenciesMeta.get(h.selector);(typeof E>"u"||!Object.hasOwn(E,h.key)||E[h.key]!==h.value)&&(h.status="active",Zl(s.peerDependenciesMeta,h.selector,()=>({}))[h.key]=h.value)}break;default:b4(h)}}}let n=c=>c.scope?`${c.scope}__${c.name}`:`${c.name}`;for(let c of s.peerDependenciesMeta.keys()){let f=xa(c);s.peerDependencies.has(f.identHash)||s.peerDependencies.set(f.identHash,Mn(f,"*"))}for(let c of s.peerDependencies.values()){if(c.scope==="types")continue;let f=n(c),p=ka("types",f),h=fn(p);s.peerDependencies.has(p.identHash)||s.peerDependenciesMeta.has(h)||s.dependencies.has(p.identHash)||(s.peerDependencies.set(p.identHash,Mn(p,"*")),s.peerDependenciesMeta.set(h,{optional:!0}))}return s.dependencies=new Map(Vs(s.dependencies,([,c])=>gl(c))),s.peerDependencies=new Map(Vs(s.peerDependencies,([,c])=>gl(c))),s}getLimit(t){return Zl(this.limits,t,()=>(0,xAe.default)(this.get(t)))}async triggerHook(t,...r){for(let s of this.plugins.values()){let a=s.hooks;if(!a)continue;let n=t(a);n&&await n(...r)}}async triggerMultipleHooks(t,r){for(let s of r)await this.triggerHook(t,...s)}async reduceHook(t,r,...s){let a=r;for(let n of this.plugins.values()){let c=n.hooks;if(!c)continue;let f=t(c);f&&(a=await f(a,...s))}return a}async firstHook(t,...r){for(let s of this.plugins.values()){let a=s.hooks;if(!a)continue;let n=t(a);if(!n)continue;let c=await n(...r);if(typeof c<"u")return c}return null}}});var qr={};Vt(qr,{EndStrategy:()=>cj,ExecError:()=>IR,PipeError:()=>ev,execvp:()=>ZH,pipevp:()=>Gu});function im(e){return e!==null&&typeof e.fd=="number"}function oj(){}function aj(){for(let e of sm)e.kill()}async function Gu(e,t,{cwd:r,env:s=process.env,strict:a=!1,stdin:n=null,stdout:c,stderr:f,end:p=2}){let h=["pipe","pipe","pipe"];n===null?h[0]="ignore":im(n)&&(h[0]=n),im(c)&&(h[1]=c),im(f)&&(h[2]=f);let E=(0,lj.default)(e,t,{cwd:fe.fromPortablePath(r),env:{...s,PWD:fe.fromPortablePath(r)},stdio:h});sm.add(E),sm.size===1&&(process.on("SIGINT",oj),process.on("SIGTERM",aj)),!im(n)&&n!==null&&n.pipe(E.stdin),im(c)||E.stdout.pipe(c,{end:!1}),im(f)||E.stderr.pipe(f,{end:!1});let C=()=>{for(let S of new Set([c,f]))im(S)||S.end()};return new Promise((S,x)=>{E.on("error",I=>{sm.delete(E),sm.size===0&&(process.off("SIGINT",oj),process.off("SIGTERM",aj)),(p===2||p===1)&&C(),x(I)}),E.on("close",(I,T)=>{sm.delete(E),sm.size===0&&(process.off("SIGINT",oj),process.off("SIGTERM",aj)),(p===2||p===1&&I!==0)&&C(),I===0||!a?S({code:uj(I,T)}):x(new ev({fileName:e,code:I,signal:T}))})})}async function ZH(e,t,{cwd:r,env:s=process.env,encoding:a="utf8",strict:n=!1}){let c=["ignore","pipe","pipe"],f=[],p=[],h=fe.fromPortablePath(r);typeof s.PWD<"u"&&(s={...s,PWD:h});let E=(0,lj.default)(e,t,{cwd:h,env:s,stdio:c});return E.stdout.on("data",C=>{f.push(C)}),E.stderr.on("data",C=>{p.push(C)}),await new Promise((C,S)=>{E.on("error",x=>{let I=ze.create(r),T=jt(I,e,dt.PATH);S(new Lt(1,`Process ${T} failed to spawn`,O=>{O.reportError(1,` ${Zf(I,{label:"Thrown Error",value:Mu(dt.NO_HINT,x.message)})}`)}))}),E.on("close",(x,I)=>{let T=a==="buffer"?Buffer.concat(f):Buffer.concat(f).toString(a),O=a==="buffer"?Buffer.concat(p):Buffer.concat(p).toString(a);x===0||!n?C({code:uj(x,I),stdout:T,stderr:O}):S(new IR({fileName:e,code:x,signal:I,stdout:T,stderr:O}))})})}function uj(e,t){let r=Qtt.get(t);return typeof r<"u"?128+r:e??1}function Rtt(e,t,{configuration:r,report:s}){s.reportError(1,` ${Zf(r,e!==null?{label:"Exit Code",value:Mu(dt.NUMBER,e)}:{label:"Exit Signal",value:Mu(dt.CODE,t)})}`)}var lj,cj,ev,IR,sm,Qtt,dR=Xe(()=>{Dt();lj=et(vU());$B();Fc();Qc();cj=(s=>(s[s.Never=0]="Never",s[s.ErrorCode=1]="ErrorCode",s[s.Always=2]="Always",s))(cj||{}),ev=class extends Lt{constructor({fileName:t,code:r,signal:s}){let a=ze.create(J.cwd()),n=jt(a,t,dt.PATH);super(1,`Child ${n} reported an error`,c=>{Rtt(r,s,{configuration:a,report:c})}),this.code=uj(r,s)}},IR=class extends ev{constructor({fileName:t,code:r,signal:s,stdout:a,stderr:n}){super({fileName:t,code:r,signal:s}),this.stdout=a,this.stderr=n}};sm=new Set;Qtt=new Map([["SIGINT",2],["SIGQUIT",3],["SIGKILL",9],["SIGTERM",15]])});function RAe(e){QAe=e}function tv(){return typeof fj>"u"&&(fj=QAe()),fj}var fj,QAe,Aj=Xe(()=>{QAe=()=>{throw new Error("Assertion failed: No libzip instance is available, and no factory was configured")}});var TAe=G((CR,hj)=>{var Ttt=Object.assign({},Ie("fs")),pj=function(){var e=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(e=e||__filename),function(t){t=t||{};var r=typeof t<"u"?t:{},s,a;r.ready=new Promise(function(Ke,ot){s=Ke,a=ot});var n={},c;for(c in r)r.hasOwnProperty(c)&&(n[c]=r[c]);var f=[],p="./this.program",h=function(Ke,ot){throw ot},E=!1,C=!0,S="";function x(Ke){return r.locateFile?r.locateFile(Ke,S):S+Ke}var I,T,O,U;C&&(E?S=Ie("path").dirname(S)+"/":S=__dirname+"/",I=function(ot,St){var lr=Ga(ot);return lr?St?lr:lr.toString():(O||(O=Ttt),U||(U=Ie("path")),ot=U.normalize(ot),O.readFileSync(ot,St?null:"utf8"))},T=function(ot){var St=I(ot,!0);return St.buffer||(St=new Uint8Array(St)),Se(St.buffer),St},process.argv.length>1&&(p=process.argv[1].replace(/\\/g,"/")),f=process.argv.slice(2),h=function(Ke){process.exit(Ke)},r.inspect=function(){return"[Emscripten Module object]"});var V=r.print||console.log.bind(console),te=r.printErr||console.warn.bind(console);for(c in n)n.hasOwnProperty(c)&&(r[c]=n[c]);n=null,r.arguments&&(f=r.arguments),r.thisProgram&&(p=r.thisProgram),r.quit&&(h=r.quit);var ie=0,ue=function(Ke){ie=Ke},ae;r.wasmBinary&&(ae=r.wasmBinary);var ge=r.noExitRuntime||!0;typeof WebAssembly!="object"&&ns("no native wasm support detected");function Ae(Ke,ot,St){switch(ot=ot||"i8",ot.charAt(ot.length-1)==="*"&&(ot="i32"),ot){case"i1":return je[Ke>>0];case"i8":return je[Ke>>0];case"i16":return gh((Ke>>1)*2);case"i32":return ao((Ke>>2)*4);case"i64":return ao((Ke>>2)*4);case"float":return df((Ke>>2)*4);case"double":return dh((Ke>>3)*8);default:ns("invalid type for getValue: "+ot)}return null}var Ce,Ee=!1,d;function Se(Ke,ot){Ke||ns("Assertion failed: "+ot)}function Be(Ke){var ot=r["_"+Ke];return Se(ot,"Cannot call unknown function "+Ke+", make sure it is exported"),ot}function me(Ke,ot,St,lr,ee){var ye={string:function(qi){var Fn=0;if(qi!=null&&qi!==0){var Xa=(qi.length<<2)+1;Fn=Bi(Xa),st(qi,Fn,Xa)}return Fn},array:function(qi){var Fn=Bi(qi.length);return Ne(qi,Fn),Fn}};function Oe(qi){return ot==="string"?De(qi):ot==="boolean"?!!qi:qi}var mt=Be(Ke),Et=[],bt=0;if(lr)for(var tr=0;tr=St)&&Re[lr];)++lr;return Z.decode(Re.subarray(Ke,lr))}function Qe(Ke,ot,St,lr){if(!(lr>0))return 0;for(var ee=St,ye=St+lr-1,Oe=0;Oe=55296&&mt<=57343){var Et=Ke.charCodeAt(++Oe);mt=65536+((mt&1023)<<10)|Et&1023}if(mt<=127){if(St>=ye)break;ot[St++]=mt}else if(mt<=2047){if(St+1>=ye)break;ot[St++]=192|mt>>6,ot[St++]=128|mt&63}else if(mt<=65535){if(St+2>=ye)break;ot[St++]=224|mt>>12,ot[St++]=128|mt>>6&63,ot[St++]=128|mt&63}else{if(St+3>=ye)break;ot[St++]=240|mt>>18,ot[St++]=128|mt>>12&63,ot[St++]=128|mt>>6&63,ot[St++]=128|mt&63}}return ot[St]=0,St-ee}function st(Ke,ot,St){return Qe(Ke,Re,ot,St)}function _(Ke){for(var ot=0,St=0;St=55296&&lr<=57343&&(lr=65536+((lr&1023)<<10)|Ke.charCodeAt(++St)&1023),lr<=127?++ot:lr<=2047?ot+=2:lr<=65535?ot+=3:ot+=4}return ot}function tt(Ke){var ot=_(Ke)+1,St=Ya(ot);return St&&Qe(Ke,je,St,ot),St}function Ne(Ke,ot){je.set(Ke,ot)}function ke(Ke,ot){return Ke%ot>0&&(Ke+=ot-Ke%ot),Ke}var be,je,Re,ct,Me,P,w,b,y,F;function z(Ke){be=Ke,r.HEAP_DATA_VIEW=F=new DataView(Ke),r.HEAP8=je=new Int8Array(Ke),r.HEAP16=ct=new Int16Array(Ke),r.HEAP32=P=new Int32Array(Ke),r.HEAPU8=Re=new Uint8Array(Ke),r.HEAPU16=Me=new Uint16Array(Ke),r.HEAPU32=w=new Uint32Array(Ke),r.HEAPF32=b=new Float32Array(Ke),r.HEAPF64=y=new Float64Array(Ke)}var X=r.INITIAL_MEMORY||16777216,$,se=[],xe=[],Fe=[],ut=!1;function Ct(){if(r.preRun)for(typeof r.preRun=="function"&&(r.preRun=[r.preRun]);r.preRun.length;)Pt(r.preRun.shift());Ns(se)}function qt(){ut=!0,Ns(xe)}function ir(){if(r.postRun)for(typeof r.postRun=="function"&&(r.postRun=[r.postRun]);r.postRun.length;)Pr(r.postRun.shift());Ns(Fe)}function Pt(Ke){se.unshift(Ke)}function gn(Ke){xe.unshift(Ke)}function Pr(Ke){Fe.unshift(Ke)}var Cr=0,Or=null,on=null;function li(Ke){Cr++,r.monitorRunDependencies&&r.monitorRunDependencies(Cr)}function Do(Ke){if(Cr--,r.monitorRunDependencies&&r.monitorRunDependencies(Cr),Cr==0&&(Or!==null&&(clearInterval(Or),Or=null),on)){var ot=on;on=null,ot()}}r.preloadedImages={},r.preloadedAudios={};function ns(Ke){r.onAbort&&r.onAbort(Ke),Ke+="",te(Ke),Ee=!0,d=1,Ke="abort("+Ke+"). Build with -s ASSERTIONS=1 for more info.";var ot=new WebAssembly.RuntimeError(Ke);throw a(ot),ot}var so="data:application/octet-stream;base64,";function bo(Ke){return Ke.startsWith(so)}var ji="data:application/octet-stream;base64,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QCAAKAJIIgEgASADaiADEAcaAkAgAyAAKAJsIgFNBEAgACABIANrNgJsDAELIABCADcCbAsgACAAKAJoIANrIgE2AmggACAAKAJYIANrNgJYIAEgACgChC5JBEAgACABNgKELgsgAEH8gAEoAgARAwAgAiADaiECCwJAIAAoAgAiASgCBCIERQ0AIAAoAjwhBSAAIAIgBCACIARJGyICBH8gACgCSCAAKAJoaiAFaiEFIAEgBCACazYCBAJAAkACQAJAIAEoAhwiBCgCFEEBaw4CAQACCyAEQaABaiAFIAEoAgAgAkHcgAEoAgARCAAMAgsgASABKAIwIAUgASgCACACQcSAASgCABEEADYCMAwBCyAFIAEoAgAgAhAHGgsgASABKAIAIAJqNgIAIAEgASgCCCACajYCCCAAKAI8BSAFCyACaiICNgI8AkAgACgChC4iASACakEDSQ0AIAAoAmggAWshAQJAIAAoAnRBgQhPBEAgACAAIAAoAkggAWoiAi0AACACLQABIAAoAnwRAAA2AlQMAQsgAUUNACAAIAFBAWsgACgChAERAgAaCyAAKAKELiAAKAI8IgJBAUZrIgRFDQAgACABIAQgACgCgAERBQAgACAAKAKELiAEazYChC4gACgCPCECCyACQYUCSw0AIAAoAgAoAgRFDQAgACgCMCEBDAELCwJAIAAoAkQiAiAAKAJAIgNNDQAgAAJ/IAAoAjwgACgCaGoiASADSwRAIAAoAkggAWpBACACIAFrIgNBggIgA0GCAkkbIgMQGSABIANqDAELIAFBggJqIgEgA00NASAAKAJIIANqQQAgAiADayICIAEgA2siAyACIANJGyIDEBkgACgCQCADags2AkALC50CAQF/AkAgAAJ/IAAoAqAuIgFBwABGBEAgACgCBCAAKAIQaiAAKQOYLjcAACAAQgA3A5guIAAgACgCEEEIajYCEEEADAELIAFBIE4EQCAAKAIEIAAoAhBqIAApA5guPgAAIAAgAEGcLmo1AgA3A5guIAAgACgCEEEEajYCECAAIAAoAqAuQSBrIgE2AqAuCyABQRBOBEAgACgCBCAAKAIQaiAAKQOYLj0AACAAIAAoAhBBAmo2AhAgACAAKQOYLkIQiDcDmC4gACAAKAKgLkEQayIBNgKgLgsgAUEISA0BIAAgACgCECIBQQFqNgIQ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KAJUIgEEfyABQQAgARAiEBkgACgCVAVBAAsQBiAAQQA2AlQLC9wMAgl/AX4jAEFAaiIGJAACQAJAAkACQAJAIAEoAjBBABAjIgVBAkZBACABKAI4QQAQIyIEQQFGGw0AIAVBAUZBACAEQQJGGw0AIAVBAkciAw0BIARBAkcNAQsgASABLwEMQYAQcjsBDEEAIQMMAQsgASABLwEMQf/vA3E7AQxBACEFIANFBEBB9eABIAEoAjAgAEEIahBpIgVFDQILIAJBgAJxBEAgBSEDDAELIARBAkcEQCAFIQMMAQtB9cYBIAEoAjggAEEIahBpIgNFBEAgBRAcDAILIAMgBTYCAAsgASABLwEMQf7/A3EgAS8BUiIFQQBHcjsBDAJAAkACQAJAAn8CQAJAIAEpAyhC/v///w9WDQAgASkDIEL+////D1YNACACQYAEcUUNASABKQNIQv////8PVA0BCyAFQYECa0H//wNxQQNJIQdBAQwBCyAFQYECa0H//wNxIQQgAkGACnFBgApHDQEgBEEDSSEHQQALIQkgBkIcEBciBEUEQCAAQQhqIgAEQCAAQQA2AgQgAEEONgIACyADEBwMBQsgAkGACHEhBQJAAkAgAkGAAnEEQAJAIAUNACABKQMgQv////8PVg0AIAEpAyhCgICAgBBUDQMLIAQgASkDKBAYIAEpAyAhDAwBCwJAAkACQCAFDQAgASkDIEL/////D1YNACABKQMoIgxC/////w9WDQEgASkDSEKAgICAEFQNBAsgASkDKCIMQv////8PVA0BCyAEIAwQGAsgASkDICIMQv////8PWgRAIAQgDBAYCyABKQNIIgxC/////w9UDQELIAQgDBAYCyAELQAARQRAIABBCGoiAARAIABBADYCBCAAQRQ2AgALIAQQCCADEBwMBQtBASEKQQEgBC0AAAR+IAQpAxAFQgALp0H//wNxIAYQRyEFIAQQCCAFIAM2AgAgBw0BDAILIAMhBSAEQQJLDQELIAZCBxAXIgRFBEAgAEEIaiIABEAgAEEANgIEIABBDjYCAAsgBRAcDAMLIARBAhANIARBhxJBAhAsIAQgAS0AUhBwIAQgAS8BEBANIAQtAABFBEAgAEEIaiIABEAgAEEANgIEIABBFDYCAAsgBBAIDAILQYGyAkEHIAYQRyEDIAQQCCADIAU2AgBBASEL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NgIEIABB7A42AhggGiEdDAMLIARB/wFxIgJBwABxRQRAIAggDSADLwECQQJ0aiAdp0F/IAJ0QX9zcUECdGoiAy0AASICayEIIB0gAq2IIR0gAy0AACIERQ0HDAELCyAEQSBxBEAgB0G//gA2AgQgASECDAgLIAdB0f4ANgIEIABB0A42AhggASECDAcLIB1BfyAGdEF/c62DIBt8IhunIQUgCCAEQQ9xIgNrIQggGiAErUIPg4ghHSABIBdrIgYgAjMBAiAaQX8gA3RBf3Otg3ynIgRPDQIgBCAGayIGIBlNDQEgBygCjEdFDQEgB0HR/gA2AgQgAEG5DDYCGAsgASECIAshBQwFCwJAIA5FBEAgDCARIAZraiEDDAELIAYgDk0EQCAMIA4gBmtqIQMMAQsgDCARIAYgDmsiBmtqIQMgBSAGTQ0AIAUgBmshBQJAAkAgASADTSABIA8gAWusIhogBq0iGyAaIBtUGyIapyIGaiICIANLcQ0AIAMgBmogAUsgASADT3ENACABIAMgBhAHGiACIQEMAQsgASADIAMgAWsiASABQR91IgFqIAFzIgIQByACaiEBIBogAq0iHn0iHFANACACIANqIQIDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgASACKQAANwAAIAEgAikAGDcAGCABIAIpABA3ABAgASACKQAINwAIIBpCIH0hGiACQSBqIQIgAUEgaiEBIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAEgAikAADcAACABIAIpABg3ABggASACKQAQNwAQIAEgAikACDcACCABIAIpADg3ADggASACKQAwNwAwIAEgAikAKDcAKCABIAIpACA3ACAgASACKQBYNwBYIAEgAikAUDcAUCABIAIpAEg3AEggASACKQBANwBAIAEgAikAYDcAYCABIAIpAGg3AGggASACKQBwNwBwIAEgAikAeDcAeCACQYABaiECIAFBgAFqIQEgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAEgAikAADcAACABIAIpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCABIAIpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCABIAIoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCABIAIvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCABIAItAAA6AAAgAkEBaiECIAFBAWohAQsgHEIAUg0ACwsgDiEGIAwhAwsgBSAGSwRAAkACQCABIANNIAEgDyABa6wiGiAGrSIbIBogG1QbIhqnIglqIgIgA0txDQAgAyAJaiABSyABIANPcQ0AIAEgAyAJEAcaDAELIAEgAyADIAFrIgEgAUEfdSIBaiABcyIBEAcgAWohAiAaIAGtIh59IhxQDQAgASADaiEBA0ACQCAcIB4gHCAeVBsiG0IgVARAIBshGgwBCyAbIhpCIH0iIEIFiEIBfEIDgyIfUEUEQANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCAaQiB9IRogAUEgaiEBIAJBIGohAiAfQgF9Ih9CAFINAAsLICBC4ABUDQADQCACIAEpAAA3AAAgAiABKQAYNwAYIAIgASkAEDcAECACIAEpAAg3AAggAiABKQA4NwA4IAIgASkAMDcAMCACIAEpACg3ACggAiABKQAgNwAgIAIgASkAWDcAWCACIAEpAFA3AFAgAiABKQBINwBIIAIgASkAQDcAQCACIAEpAGA3AGAgAiABKQBoNwBoIAIgASkAcDcAcCACIAEpAHg3AHggAUGAAWohASACQYABaiECIBpCgAF9IhpCH1YNAAsLIBpCEFoEQCACIAEpAAA3AAAgAiABKQAINwAIIBpCEH0hGiACQRBqIQIgAUEQaiEBCyAaQghaBEAgAiABKQAANwAAIBpCCH0hGiACQQhqIQIgAUEIaiEBCyAaQgRaBEAgAiABKAAANgAAIBpCBH0hGiACQQRqIQIgAUEEaiEBCyAaQgJaBEAgAiABLwAAOwAAIBpCAn0hGiACQQJqIQIgAUECaiEBCyAcIBt9IRwgGlBFBEAgAiABLQAAOgAAIAJBAWohAiABQQFqIQELIBxCAFINAAsLIAUgBmshAUEAIARrIQUCQCAEQQdLBEAgBCEDDAELIAEgBE0EQCAEIQMMAQsgAiAEayEFA0ACQCACIAUpAAA3AAAgBEEBdCEDIAEgBGshASACIARqIQIgBEEDSw0AIAMhBCABIANLDQELC0EAIANrIQULIAIgBWohBAJAIAUgDyACa6wiGiABrSIbIBogG1QbIhqnIgFIIAVBf0pxDQAgBUEBSCABIARqIAJLcQ0AIAIgBCABEAcgAWohAgwDCyACIAQgAyADQR91IgFqIAFzIgEQByABaiECIBogAa0iHn0iHFANAiABIARqIQEDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIBpCIH0hGiABQSBqIQEgAkEgaiECIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCACIAEpADg3ADggAiABKQAwNwAwIAIgASkAKDcAKCACIAEpACA3ACAgAiABKQBYNwBYIAIgASkAUDcAUCACIAEpAEg3AEggAiABKQBANwBAIAIgASkAYDcAYCACIAEpAGg3AGggAiABKQBwNwBwIAIgASkAeDcAeCABQYABaiEBIAJBgAFqIQIgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAIgASkAADcAACACIAEpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCACIAEpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCACIAEoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCACIAEvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCACIAEtAAA6AAAgAkEBaiECIAFBAWohAQsgHFBFDQALDAILAkAgASADTSABIA8gAWusIhogBa0iGyAaIBtUGyIapyIEaiICIANLcQ0AIAMgBGogAUsgASADT3ENACABIAMgBBAHGgwCCyABIAMgAyABayIBIAFBH3UiAWogAXMiARAHIAFqIQIgGiABrSIefSIcUA0BIAEgA2ohAQNAAkAgHCAeIBwgHlQbIhtCIFQEQCAbIRoMAQsgGyIaQiB9IiBCBYhCAXxCA4MiH1BFBEADQCACIAEpAAA3AAAgAiABKQAYNwAYIAIgASkAEDcAECACIAEpAAg3AAggGkIgfSEaIAFBIGohASACQSBqIQIgH0IBfSIfQgBSDQALCyAgQuAAVA0AA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIAIgASkAODcAOCACIAEpADA3ADAgAiABKQAoNwAoIAIgASkAIDcAICACIAEpAFg3AFggAiABKQBQNwBQIAIgASkASDcASCACIAEpAEA3AEAgAiABKQBgNwBgIAIgASkAaDcAaCACIAEpAHA3AHAgAiABKQB4NwB4IAFBgAFqIQEgAkGAAWohAiAaQoABfSIaQh9WDQALCyAaQhBaBEAgAiABKQAANwAAIAIgASkACDcACCAaQhB9IRogAkEQaiECIAFBEGohAQsgGkIIWgRAIAIgASkAADcAACAaQgh9IRogAkEIaiECIAFBCGohAQsgGkIEWgRAIAIgASgAADYAACAaQgR9IRogAkEEaiECIAFBBGohAQsgGkICWgRAIAIgAS8AADsAACAaQgJ9IRogAkECaiECIAFBAmohAQsgHCAbfSEcIBpQRQRAIAIgAS0AADoAACACQQFqIQIgAUEBaiEBCyAcUEUNAAsMAQsCQAJAIBYEQAJAIAQgBUkEQCAHKAKYRyAESw0BCyABIARrIQMCQEEAIARrIgVBf0ogDyABa6wiGiAbIBogG1QbIhqnIgIgBUpxDQAgBUEBSCACIANqIAFLcQ0AIAEgAyACEAcgAmohAgwFCyABIAMgBCAEQR91IgFqIAFzIgEQByABaiECIBogAa0iHn0iHFANBCABIANqIQEDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIBpCIH0hGiABQSBqIQEgAkEgaiECIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCACIAEpADg3ADggAiABKQAwNwAwIAIgASkAKDcAKCACIAEpACA3ACAgAiABKQBYNwBYIAIgASkAUDcAUCACIAEpAEg3AEggAiABKQBANwBAIAIgASkAYDcAYCACIAEpAGg3AGggAiABKQBwNwBwIAIgASkAeDcAeCABQYABaiEBIAJBgAFqIQIgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAIgASkAADcAACACIAEpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCACIAEpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCACIAEoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCACIAEvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCACIAEtAAA6AAAgAkEBaiECIAFBAWohAQsgHFBFDQALDAQLIBAgAWsiCUEBaiIGIAUgBSAGSxshAyABIARrIQIgAUEHcUUNAiADRQ0CIAEgAi0AADoAACACQQFqIQIgAUEBaiIGQQdxQQAgA0EBayIFGw0BIAYhASAFIQMgCSEGDAILAkAgBCAFSQRAIAcoAphHIARLDQELIAEgASAEayIGKQAANwAAIAEgBUEBa0EHcUEBaiIDaiECIAUgA2siBEUNAyADIAZqIQEDQCACIAEpAAA3AAAgAUEIaiEBIAJBCGohAiAEQQhrIgQNAAsMAwsgASAEIAUQPyECDAILIAEgAi0AADoAASAJQQFrIQYgA0ECayEFIAJBAWohAgJAIAFBAmoiCkEHcUUNACAFRQ0AIAEgAi0AADoAAiAJQQJrIQYgA0EDayEFIAJBAWohAgJAIAFBA2oiCkEHcUUNACAFRQ0AIAEgAi0AADoAAyAJQQNrIQYgA0EEayEFIAJBAWohAgJAIAFBBGoiCkEHcUUNACAFRQ0AIAEgAi0AADoABCAJQQRrIQYgA0EFayEFIAJBAWohAgJAIAFBBWoiCkEHcUUNACAFRQ0AIAEgAi0AADoABSAJQQVrIQYgA0EGayEFIAJBAWohAgJAIAFBBmoiCkEHcUUNACAFRQ0AIAEgAi0AADoABiAJQQZrIQYgA0EHayEFIAJBAWohAgJAIAFBB2oiCkEHcUUNACAFRQ0AIAEgAi0AADoAByAJQQdrIQYgA0EIayEDIAFBCGohASACQQFqIQIMBgsgCiEBIAUhAwwFCyAKIQEgBSEDDAQLIAohASAFIQMMAwsgCiEBIAUhAwwCCyAKIQEgBSEDDAELIAohASAFIQMLAkACQCAGQRdNBEAgA0UNASADQQFrIQUgA0EHcSIEBEADQCABIAItAAA6AAAgA0EBayEDIAFBAWohASACQQFqIQIgBEEBayIEDQALCyAFQQdJDQEDQCABIAItAAA6AAAgASACLQABOgABIAEgAi0AAjoAAiABIAItAAM6AAMgASACLQAEOgAEIAEgAi0ABToABSABIAItAAY6AAYgASACLQAHOgAHIAFBCGohASACQQhqIQIgA0EIayIDDQALDAELIAMNAQsgASECDAELIAEgBCADED8hAgsgCyEFDAELIAEgAy0AAjoAACABQQFqIQILIAUgFE8NACACIBNJDQELCyAAIAI2AgwgACAFIAhBA3ZrIgE2AgAgACATIAJrQYMCajYCECAAIBQgAWtBDmo2AgQgByAIQQdxIgA2AogBIAcgHUJ/IACthkJ/hYM+AoQBC+cFAQR/IAMgAiACIANLGyEEIAAgAWshAgJAIABBB3FFDQAgBEUNACAAIAItAAA6AAAgA0EBayEGIAJBAWohAiAAQQFqIgdBB3FBACAEQQFrIgUbRQRAIAchACAFIQQgBiEDDAELIAAgAi0AADoAASADQQJrIQYgBEECayEFIAJBAWohAgJAIABBAmoiB0EHcUUNACAFRQ0AIAAgAi0AADoAAiADQQNrIQYgBEEDayEFIAJBAWohAgJAIABBA2oiB0EHcUUNACAFRQ0AIAAgAi0AADoAAyADQQRrIQYgBEEEayEFIAJBAWohAgJAIABBBGoiB0EHcUUNACAFRQ0AIAAgAi0AADoABCADQQVrIQYgBEEFayEFIAJBAWohAgJAIABBBWoiB0EHcUUNACAFRQ0AIAAgAi0AADoABSADQQZrIQYgBEEGayEFIAJBAWohAgJAIABBBmoiB0EHcUUNACAFRQ0AIAAgAi0AADoABiADQQdrIQYgBEEHayEFIAJBAWohAgJAIABBB2oiB0EHcUUNACAFRQ0AIAAgAi0AADoAByADQQhrIQMgBEEIayEEIABBCGohACACQQFqIQIMBgsgByEAIAUhBCAGIQMMBQsgByEAIAUhBCAGIQMMBAsgByEAIAUhBCAGIQMMAwsgByEAIAUhBCAGIQMMAgsgByEAIAUhBCAGIQMMAQsgByEAIAUhBCAGIQMLAkAgA0EXTQRAIARFDQEgBEEBayEBIARBB3EiAwRAA0AgACACLQAAOgAAIARBAWshBCAAQQFqIQAgAkEBaiECIANBAWsi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CyAAIAMtAAAEfiADKQMQBUIAC6dB//8DcSADKAIEEEcLIQUgAxAICyAEQRBqJAAgBQvgAQICfwF+QTAQCSICRQRAIAEEQCABQQA2AgQgAUEONgIAC0EADwsgAkIANwMIIAJBADYCACACQgA3AxAgAkIANwMYIAJCADcDICACQgA3ACUgAFAEQCACDwsCQCAAQv////8AVg0AIACnQQR0EAkiA0UNACACIAM2AgBBACEBQgEhBANAIAMgAUEEdGoiAUIANwIAIAFCADcABSAAIARSBEAgBKchASAEQgF8IQQMAQsLIAIgADcDCCACIAA3AxAgAg8LIAEEQCABQQA2AgQgAUEONgIAC0EAEBAgAhAGQQAL7gECA38BfiMAQRBrIgQkAAJAIARBDGpCBBAXIgNFBEBBfyECDAELAkAgAQRAIAJBgAZxIQUDQAJAIAUgASgCBHFFDQACQCADKQMIQgBUBEAgA0EAOgAADAELIANCADcDECADQQE6AAALIAMgAS8BCBANIAMgAS8BChANIAMtAABFBEAgAEEIaiIABEAgAEEANgIEIABBFDYCAAtBfyECDAQLQX8hAiAAIARBDGpCBBAbQQBIDQMgATMBCiIGUA0AIAAgASgCDCAGEBtBAEgNAwsgASgCACIBDQALC0EAIQILIAMQCAsgBEEQaiQAIAILPAEBfyAABEAgAUGABnEhAQNAIAEgACgCBHEEQCACIAAvAQpqQQRqIQILIAAoAgAiAA0ACwsgAkH//wNxC5wBAQN/IABFBEBBAA8LIAAhAwNAAn8CQAJAIAAvAQgiAUH04AFNBEAgAUEBRg0BIAFB9cYBRg0BDAILIAFBgbICRg0AIAFB9eABRw0BCyAAKAIAIQEgAEEANgIAIAAoAgwQBiAAEAYgASADIAAgA0YbIQMCQCACRQRAQQAhAgwBCyACIAE2AgALIAEMAQsgACICKAIACyIADQALIAMLsgQCBX8BfgJAAkACQCAAIAGtEBciAQRAIAEtAAANAUEAIQAMAgsgBARAIARBADYCBCAEQQ42AgALQQAPC0EAIQADQCABLQAABH4gASkDCCABKQMQfQVCAAtCBFQNASABEAwhByABIAEQDCIGrRATIghFBEBBACECIAQEQCAEQQA2AgQgBEEVNgIACyABEAggAEUNAwNAIAAoAgAhASAAKAIMEAYg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DCAAQRg2AggLDAMLIAAgBiAFLwFqQQAgBCABEQYAIQEgBhALIAFFDQILAkAgDUUEQCABIQMMAQsgACABIAUvAWgQgQEhAyABEAsgA0UNAQsCQCAJRSAMckUEQCADIQEMAQsgACADQQEQgAEhASADEAsgAUUNAQsgASEDDAELQQAhAwsgBUHwAGokACADC4UBAQF/IAFFBEAgAEEIaiIABEAgAEEANgIEIABBEjYCAAtBAA8LQTgQCSIDRQRAIABBCGoiAARAIABBADYCBCAAQQ42AgALQQAPCyADQQA2AhAgA0IANwIIIANCADcDKCADQQA2AgQgAyACNgIAIANCADcDGCADQQA2AjAgACABQTsgAxBCCw8AIAAgASACQQBBABCCAQusAgECfyABRQRAIABBCGoiAARAIABBADYCBCAAQRI2AgALQQAPCwJAIAJBfUsNACACQf//A3FBCEYNACAAQQhqIgAEQCAAQQA2AgQgAEEQNgIAC0EADwsCQEGwwAAQCSIFBEAgBUEANgIIIAVCADcCACAFQYiBAUGogQEgAxs2AqhAIAUgAjYCFCAFIAM6ABAgBUEAOgAPIAVBADsBDCAFIAMgAkF9SyIGcToADiAFQQggAiAGG0H//wNxIAQgBUGIgQFBqIEBIAMbKAIAEQAAIgI2AqxAIAINASAFEDEgBRAGCyAAQQhqIgAEQCAAQQA2AgQgAEEONgIAC0EADwsgACABQTogBRBCIgAEfyAABSAFKAKsQCAFKAKoQCgCBBEDACAFEDEgBRAGQQALC6ABAQF/IAIgACgCBCIDIAIgA0kbIgIEQCAAIAMgAms2AgQCQAJAAkACQCAAKAIcIgMoAhRBAWsOAgEAAgsgA0GgAWogASAAKAIAIAJB3IABKAIAEQgADAILIAAgACgCMCABIAAoAgAgAkHEgAEoAgARBAA2AjAMAQsgASAAKAIAIAIQBxoLIAAgACgCACACajYCACAAIAAoAgggAmo2AggLC7cCAQR/QX4hAgJAIABFDQAgACgCIEUNACAAKAIkIgRFDQAgACgCHCIBRQ0AIAEoAgAgAEcNAAJAAkAgASgCICIDQTlrDjkBAgICAgICAgICAgIBAgICAQICAgICAgICAgICAgICAgICAQICAgICAgICAgICAQICAgICAgICAgEACyADQZoFRg0AIANBKkcN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DCABajYCDCAGIAYoAgggAWo2AgggBSAFKAIUIAFqNgIUIAUgBSgCECABazYCECAGIAYoAhAgAWsiATYCECABDQAgBiAGKAIENgIIC0EAIQRBACEJIAMoAhBFDQAMCgsgAygCHCgCJCEGIAMgAygCGCIBQQFqNgIYIAEgBmotAAAhASADIARBAWo2AhAgAygCBCAEaiABOgAAIAEEQCADKAIQIQQMAQsLIAMoAhwoAixFDQAgAygCECIGIAlNDQAgBQJ/IAUoAjAhBEEAIAMoAgQgCWoiAUUNABogBCABIAYgCWtB1IABKAIAEQAACzYCMAsgA0HnADYCIAsCQCADKAIcKAIsBEAgAygCDCADKAIQIgFBAmpJBH8gBRAKIAMoAhANAkEABSABCyADKAIEaiAFKAIwOwAAIAMgAygCEEECajYCECADQaABakHkgAEoAgARAQAaCyADQfEANgIgIAUQCiADKAIQRQ0BDAcLDAYLIAUoAgQNAQsgAygCPA0AIApFDQEgAygCIEGaBUYNAQsCfyADKAKIASIBRQRAIAMgChCFAQwBCwJAAkACQCADKAKMAUECaw4CAAECCwJ/AkADQAJAAkAgAygCPA0AIAMQLyADKAI8DQAgCg0BQQAMBAsgAygCSCADKAJoai0AACEEIAMgAygC8C0iAUEBajYC8C0gASADKALsLWpBADoAACADIAMoAvAtIgFBAWo2AvAtIAEgAygC7C1qQQA6AAAgAyADKALwLSIBQQFqNgLwLSABIAMoAuwtaiAEOgAAIAMgBEECdGoiASABLwHkAUEBajsB5AEgAyADKAI8QQFrNgI8IAMgAygCaEEBaiIBNgJoIAMoAvAtIAMoAvQtRw0BQQAhBCADIAMoAlgiBkEATgR/IAMoAkggBmoFQQALIAEgBmtBABAPIAMgAygCaDYCWCADKAIAEAogAygCACgCEA0BDAILCyADQQA2AoQuIApBBEYEQCADIAMoAlgiAUEATgR/IAMoAkggAWoFQQALIAMoAmggAWtBARAPIAMgAygCaDYCWCADKAIAEApBA0ECIAMoAgAoAhAbDAILIAMoAvAtBEBBACEEIAMgAygCWCIBQQBOBH8gAygCSCABagVBAAsgAygCaCABa0EAEA8gAyADKAJoNgJYIAMoAgAQCiADKAIAKAIQRQ0BC0EBIQQLIAQL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bGl0ZXJhbC9sZW5ndGhzIHNldABpbnZhbGlkIGNvZGUgbGVuZ3RocyBzZXQAdW5rbm93biBoZWFkZXIgZmxhZ3Mgc2V0AGludmFsaWQgZGlzdGFuY2VzIHNldABpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0AEZpbGUgYWxyZWFkeSBleGlzdHMAdG9vIG1hbnkgbGVuZ3RoIG9yIGRpc3RhbmNlIHN5bWJvbHMAaW52YWxpZCBzdG9yZWQgYmxvY2sgbGVuZ3RocwAlcyVzJXMAYnVmZmVyIGVycm9yAE5vIGVycm9yAHN0cmVhbSBlcnJvcgBUZWxsIGVycm9yAEludGVybmFsIGVycm9yAFNlZWsgZXJyb3IAV3JpdGUgZXJyb3IAZmlsZSBlcnJvcgBSZWFkIGVycm9yAFpsaWIgZXJyb3IAZGF0YSBlcnJvcgBDUkMgZXJyb3IAaW5jb21wYXRpYmxlIHZlcnNpb24AaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrAGluY29ycmVjdCBoZWFkZXIgY2hlY2sAaW5jb3JyZWN0IGxlbmd0aCBjaGVjawBpbmNvcnJlY3QgZGF0YSBjaGVjawBpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjawBoZWFkZXIgY3JjIG1pc21hdGNoADEuMi4xMy56bGliLW5nAGludmFsaWQgd2luZG93IHNpemUAUmVhZC1vbmx5IGFyY2hpdmUATm90IGEgemlwIGFyY2hpdmUAUmVzb3VyY2Ugc3RpbGwgaW4gdXNlAE1hbGxvYyBmYWlsdXJlAGludmFsaWQgYmxvY2sgdHlwZQBGYWlsdXJlIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgZmlsZQBDYW4ndCBvcGVuIGZpbGUATm8gc3VjaCBmaWxlAFByZW1hdHVyZSBlbmQgb2YgZmlsZQBDYW4ndCByZW1vdmUgZmlsZQBpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUAaW52YWxpZCBkaXN0YW5jZSBjb2RlAHVua25vd24gY29tcHJlc3Npb24gbWV0aG9kAHN0cmVhbSBlbmQAQ29tcHJlc3NlZCBkYXRhIGludmFsaWQATXVsdGktZGlzayB6aXAgYXJjaGl2ZXMgbm90IHN1cHBvcnRl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UgAIANIACAAyAAgAsgAIAHIACADyAAgACgAIAIoACABKAAgAygAIACoACACqAAgAagAIAOoACAAaAAgAmgAIAFoACADaAAgAOgAIALoACAB6AAgA+gAIAAYACACGAAgARgAIAMYACAAmAAgApgAIAGYACADmAAgAFgAIAJYACABWAAgA1gAIADYACAC2AAgAdgAIAPYACAAOAAgAjgAIAE4ACADOAAgALgAIAK4ACABuAAgA7gAIAB4ACACeAAgAXgAIAN4ACAA+AAgAvgAIAH4ACAD+AAgAAQAIAIEACABBAAgAwQAIACEACAChAAgAYQAIAOEACAARAAgAkQAIAFEACADRAAgAMQAIALEACABxAAgA8QAIAAkACACJAAgASQAIAMkACAApAAgAqQAIAGkACADpAAgAGQAIAJkACABZAAgA2QAIADkACAC5AAgAeQAIAPkACAAFAAgAhQAIAEUACADFAAgAJQAIAKUACABlAAgA5QAIABUACACVAAgAVQAIANUACAA1AAgAtQAIAHUACAD1AAgADQAIAI0ACABNAAgAzQAIAC0ACACtAAgAbQAIAO0ACAAdAAgAnQAIAF0ACADdAAgAPQAIAL0ACAB9AAgA/QAIABMACQATAQkAkwAJAJMBCQBTAAkAUwEJANMACQDTAQkAMwAJADMBCQCzAAkAswEJAHMACQBzAQkA8wAJAPMBCQALAAkACwEJAIsACQCLAQkASwAJAEsBCQDLAAkAywEJACsACQArAQkAqwAJAKsBCQBrAAkAawEJAOsACQDrAQkAGwAJABsBCQCbAAkAmwEJAFsACQBbAQkA2wAJANsBCQA7AAkAOwEJALsACQC7AQkAewAJAHsBCQD7AAkA+wEJAAcACQAHAQkAhwAJAIcBCQBHAAkARwEJAMcACQDHAQkAJwAJACcBCQCnAAkApwEJAGcACQBnAQkA5wAJAOcBCQAXAAkAFwEJAJcACQCXAQkAVwAJAFcBCQDXAAkA1wEJADcACQA3AQkAtwAJALcBCQB3AAkAdwEJAPcACQD3AQkADwAJAA8BCQCPAAkAjwEJAE8ACQBPAQkAzwAJAM8BCQAvAAkALwEJAK8ACQCvAQkAbwAJAG8BCQDvAAkA7wEJAB8ACQAfAQkAnwAJAJ8BCQBfAAkAXwEJAN8ACQDfAQkAPwAJAD8BCQC/AAkA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SXMgYSBkaXJlY3RvcnkAVGV4dCBmaWxlIGJ1c3kARXhlYyBmb3JtYXQgZXJyb3IASW52YWxpZCBhcmd1bWVudABBcmd1bWVudCBsaXN0IHRvbyBsb25nAFN5bWJvbGljIGxpbmsgbG9vcABGaWxlbmFtZSB0b28gbG9uZwBUb28gbWFueSBvcGVuIGZpbGVzIGluIHN5c3RlbQBObyBmaWxlIGRlc2NyaXB0b3JzIGF2YWlsYWJsZQBCYWQgZmlsZSBkZXNjcmlwdG9yAE5vIGNoaWxkIHByb2Nlc3MAQmFkIGFkZHJlc3MARmlsZSB0b28gbGFyZ2UAVG9vIG1hbnkgbGlua3MATm8gbG9ja3MgYXZhaWxhYmxlAFJlc291cmNlIGRlYWRsb2NrIHdvdWxkIG9jY3VyAFN0YXRlIG5vdCByZWNvdmVyYWJsZQBQcmV2aW91cyBvd25lciBkaWVkAE9wZXJhdGlvbiBjYW5jZWxlZABGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQATm8gbWVzc2FnZSBvZiBkZXNpcmVkIHR5cGUASWRlbnRpZmllciByZW1vdmVkAERldmljZSBub3QgYSBzdHJlYW0ATm8gZGF0YSBhdmFpbGFibGUARGV2aWNlIHRpbWVvdXQAT3V0IG9mIHN0cmVhbXMgcmVzb3VyY2VzAExpbmsgaGFzIGJlZW4gc2V2ZXJlZABQcm90b2NvbCBlcnJvcgBCYWQgbWVzc2FnZQBGaWxlIGRlc2NyaXB0b3IgaW4gYmFkIHN0YXRlAE5vdCBhIHNvY2tldABEZXN0aW5hdGlvbiBhZGRyZXNzIHJlcXVpcmVkAE1lc3NhZ2UgdG9vIGxhcmdlAFByb3RvY29sIHdyb25nIHR5cGUgZm9yIHNvY2tldABQcm90b2NvbCBub3QgYXZhaWxhYmxlAFByb3RvY29sIG5vdCBzdXBwb3J0ZWQAU29ja2V0IHR5cGUgbm90IHN1cHBvcnRlZABOb3Qgc3VwcG9ydGVkAFByb3RvY29sIGZhbWlseSBub3Qgc3VwcG9ydGVkAEFkZHJlc3MgZmFtaWx5IG5vdCBzdXBwb3J0ZWQgYnkgcHJvdG9jb2wAQWRkcmVzcyBub3QgYXZhaWxhYmxlAE5ldHdvcmsgaXMgZG93bgBOZXR3b3JrIHVucmVhY2hhYmxlAENvbm5lY3Rpb24gcmVzZXQgYnkgbmV0d29yawBDb25uZWN0aW9uIGFib3J0ZWQATm8gYnVmZmVyIHNwYWNlIGF2YWlsYWJsZQBTb2NrZXQgaXMgY29ubmVjdGVkAFNvY2tldCBub3QgY29ubmVjdGVkAENhbm5vdCBzZW5kIGFmdGVyIHNvY2tldCBzaHV0ZG93bgBPcGVyYXRpb24gYWxyZWFkeSBpbiBwcm9ncmVzcwBPcGVyYXRpb24gaW4gcHJvZ3Jlc3MAU3RhbGUgZmlsZSBoYW5kbGUAUmVtb3RlIEkvTyBlcnJvcgBRdW90YSBleGNlZWRlZABObyBtZWRpdW0gZm91bmQAV3JvbmcgbWVkaXVtIHR5cGUATm8gZXJyb3IgaW5mb3JtYXRpb24AQcCAAQuFARMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAgERQADEAAAAyAAAAMwAAADQAAAA1AAAANgAAADcAAAA4AAAAOQAAADIAAAAzAAAANAAAADUAAAA2AAAANwAAADgAQfSCAQsCXEQAQbCDAQsQ/////////////////////w==";bo(ji)||(ji=x(ji));function oo(Ke){try{if(Ke==ji&&ae)return new Uint8Array(ae);var ot=Ga(Ke);if(ot)return ot;if(T)return T(Ke);throw"sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)"}catch(St){ns(St)}}function Po(Ke,ot){var St,lr,ee;try{ee=oo(Ke),lr=new WebAssembly.Module(ee),St=new WebAssembly.Instance(lr,ot)}catch(Oe){var ye=Oe.toString();throw te("failed to compile wasm module: "+ye),(ye.includes("imported Memory")||ye.includes("memory import"))&&te("Memory size incompatibility issues may be due to changing INITIAL_MEMORY at runtime to something too large. Use ALLOW_MEMORY_GROWTH to allow any size memory (and also make sure not to set INITIAL_MEMORY at runtime to something smaller than it was at compile time)."),Oe}return[St,lr]}function TA(){var Ke={a:Ue};function ot(ee,ye){var Oe=ee.exports;r.asm=Oe,Ce=r.asm.g,z(Ce.buffer),$=r.asm.W,gn(r.asm.h),Do("wasm-instantiate")}if(li("wasm-instantiate"),r.instantiateWasm)try{var St=r.instantiateWasm(Ke,ot);return St}catch(ee){return te("Module.instantiateWasm callback failed with error: "+ee),!1}var lr=Po(ji,Ke);return ot(lr[0]),r.asm}function df(Ke){return F.getFloat32(Ke,!0)}function dh(Ke){return F.getFloat64(Ke,!0)}function gh(Ke){return F.getInt16(Ke,!0)}function ao(Ke){return F.getInt32(Ke,!0)}function Gn(Ke,ot){F.setInt32(Ke,ot,!0)}function Ns(Ke){for(;Ke.length>0;){var ot=Ke.shift();if(typeof ot=="function"){ot(r);continue}var St=ot.func;typeof St=="number"?ot.arg===void 0?$.get(St)():$.get(St)(ot.arg):St(ot.arg===void 0?null:ot.arg)}}function lo(Ke,ot){var St=new Date(ao((Ke>>2)*4)*1e3);Gn((ot>>2)*4,St.getUTCSeconds()),Gn((ot+4>>2)*4,St.getUTCMinutes()),Gn((ot+8>>2)*4,St.getUTCHours()),Gn((ot+12>>2)*4,St.getUTCDate()),Gn((ot+16>>2)*4,St.getUTCMonth()),Gn((ot+20>>2)*4,St.getUTCFullYear()-1900),Gn((ot+24>>2)*4,St.getUTCDay()),Gn((ot+36>>2)*4,0),Gn((ot+32>>2)*4,0);var lr=Date.UTC(St.getUTCFullYear(),0,1,0,0,0,0),ee=(St.getTime()-lr)/(1e3*60*60*24)|0;return Gn((ot+28>>2)*4,ee),lo.GMTString||(lo.GMTString=tt("GMT")),Gn((ot+40>>2)*4,lo.GMTString),ot}function su(Ke,ot){return lo(Ke,ot)}function ou(Ke,ot,St){Re.copyWithin(Ke,ot,ot+St)}function au(Ke){try{return Ce.grow(Ke-be.byteLength+65535>>>16),z(Ce.buffer),1}catch{}}function FA(Ke){var ot=Re.length;Ke=Ke>>>0;var St=2147483648;if(Ke>St)return!1;for(var lr=1;lr<=4;lr*=2){var ee=ot*(1+.2/lr);ee=Math.min(ee,Ke+100663296);var ye=Math.min(St,ke(Math.max(Ke,ee),65536)),Oe=au(ye);if(Oe)return!0}return!1}function NA(Ke){ue(Ke)}function fa(Ke){var ot=Date.now()/1e3|0;return Ke&&Gn((Ke>>2)*4,ot),ot}function Aa(){if(Aa.called)return;Aa.called=!0;var Ke=new Date().getFullYear(),ot=new Date(Ke,0,1),St=new Date(Ke,6,1),lr=ot.getTimezoneOffset(),ee=St.getTimezoneOffset(),ye=Math.max(lr,ee);Gn((Ql()>>2)*4,ye*60),Gn((Bs()>>2)*4,+(lr!=ee));function Oe(pn){var ci=pn.toTimeString().match(/\(([A-Za-z ]+)\)$/);return ci?ci[1]:"GMT"}var mt=Oe(ot),Et=Oe(St),bt=tt(mt),tr=tt(Et);ee>2)*4,bt),Gn((Mi()+4>>2)*4,tr)):(Gn((Mi()>>2)*4,tr),Gn((Mi()+4>>2)*4,bt))}function OA(Ke){Aa();var ot=Date.UTC(ao((Ke+20>>2)*4)+1900,ao((Ke+16>>2)*4),ao((Ke+12>>2)*4),ao((Ke+8>>2)*4),ao((Ke+4>>2)*4),ao((Ke>>2)*4),0),St=new Date(ot);Gn((Ke+24>>2)*4,St.getUTCDay());var lr=Date.UTC(St.getUTCFullYear(),0,1,0,0,0,0),ee=(St.getTime()-lr)/(1e3*60*60*24)|0;return Gn((Ke+28>>2)*4,ee),St.getTime()/1e3|0}var dr=typeof atob=="function"?atob:function(Ke){var ot="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",St="",lr,ee,ye,Oe,mt,Et,bt,tr=0;Ke=Ke.replace(/[^A-Za-z0-9\+\/\=]/g,"");do Oe=ot.indexOf(Ke.charAt(tr++)),mt=ot.indexOf(Ke.charAt(tr++)),Et=ot.indexOf(Ke.charAt(tr++)),bt=ot.indexOf(Ke.charAt(tr++)),lr=Oe<<2|mt>>4,ee=(mt&15)<<4|Et>>2,ye=(Et&3)<<6|bt,St=St+String.fromCharCode(lr),Et!==64&&(St=St+String.fromCharCode(ee)),bt!==64&&(St=St+String.fromCharCode(ye));while(tr0||(Ct(),Cr>0))return;function ot(){Tn||(Tn=!0,r.calledRun=!0,!Ee&&(qt(),s(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),ir()))}r.setStatus?(r.setStatus("Running..."),setTimeout(function(){setTimeout(function(){r.setStatus("")},1),ot()},1)):ot()}if(r.run=hc,r.preInit)for(typeof r.preInit=="function"&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();return hc(),t}}();typeof CR=="object"&&typeof hj=="object"?hj.exports=pj:typeof define=="function"&&define.amd?define([],function(){return pj}):typeof CR=="object"&&(CR.createModule=pj)});var Hp,FAe,NAe,OAe=Xe(()=>{Hp=["number","number"],FAe=(Z=>(Z[Z.ZIP_ER_OK=0]="ZIP_ER_OK",Z[Z.ZIP_ER_MULTIDISK=1]="ZIP_ER_MULTIDISK",Z[Z.ZIP_ER_RENAME=2]="ZIP_ER_RENAME",Z[Z.ZIP_ER_CLOSE=3]="ZIP_ER_CLOSE",Z[Z.ZIP_ER_SEEK=4]="ZIP_ER_SEEK",Z[Z.ZIP_ER_READ=5]="ZIP_ER_READ",Z[Z.ZIP_ER_WRITE=6]="ZIP_ER_WRITE",Z[Z.ZIP_ER_CRC=7]="ZIP_ER_CRC",Z[Z.ZIP_ER_ZIPCLOSED=8]="ZIP_ER_ZIPCLOSED",Z[Z.ZIP_ER_NOENT=9]="ZIP_ER_NOENT",Z[Z.ZIP_ER_EXISTS=10]="ZIP_ER_EXISTS",Z[Z.ZIP_ER_OPEN=11]="ZIP_ER_OPEN",Z[Z.ZIP_ER_TMPOPEN=12]="ZIP_ER_TMPOPEN",Z[Z.ZIP_ER_ZLIB=13]="ZIP_ER_ZLIB",Z[Z.ZIP_ER_MEMORY=14]="ZIP_ER_MEMORY",Z[Z.ZIP_ER_CHANGED=15]="ZIP_ER_CHANGED",Z[Z.ZIP_ER_COMPNOTSUPP=16]="ZIP_ER_COMPNOTSUPP",Z[Z.ZIP_ER_EOF=17]="ZIP_ER_EOF",Z[Z.ZIP_ER_INVAL=18]="ZIP_ER_INVAL",Z[Z.ZIP_ER_NOZIP=19]="ZIP_ER_NOZIP",Z[Z.ZIP_ER_INTERNAL=20]="ZIP_ER_INTERNAL",Z[Z.ZIP_ER_INCONS=21]="ZIP_ER_INCONS",Z[Z.ZIP_ER_REMOVE=22]="ZIP_ER_REMOVE",Z[Z.ZIP_ER_DELETED=23]="ZIP_ER_DELETED",Z[Z.ZIP_ER_ENCRNOTSUPP=24]="ZIP_ER_ENCRNOTSUPP",Z[Z.ZIP_ER_RDONLY=25]="ZIP_ER_RDONLY",Z[Z.ZIP_ER_NOPASSWD=26]="ZIP_ER_NOPASSWD",Z[Z.ZIP_ER_WRONGPASSWD=27]="ZIP_ER_WRONGPASSWD",Z[Z.ZIP_ER_OPNOTSUPP=28]="ZIP_ER_OPNOTSUPP",Z[Z.ZIP_ER_INUSE=29]="ZIP_ER_INUSE",Z[Z.ZIP_ER_TELL=30]="ZIP_ER_TELL",Z[Z.ZIP_ER_COMPRESSED_DATA=31]="ZIP_ER_COMPRESSED_DATA",Z))(FAe||{}),NAe=e=>({get HEAPU8(){return e.HEAPU8},errors:FAe,SEEK_SET:0,SEEK_CUR:1,SEEK_END:2,ZIP_CHECKCONS:4,ZIP_EXCL:2,ZIP_RDONLY:16,ZIP_FL_OVERWRITE:8192,ZIP_FL_COMPRESSED:4,ZIP_OPSYS_DOS:0,ZIP_OPSYS_AMIGA:1,ZIP_OPSYS_OPENVMS:2,ZIP_OPSYS_UNIX:3,ZIP_OPSYS_VM_CMS:4,ZIP_OPSYS_ATARI_ST:5,ZIP_OPSYS_OS_2:6,ZIP_OPSYS_MACINTOSH:7,ZIP_OPSYS_Z_SYSTEM:8,ZIP_OPSYS_CPM:9,ZIP_OPSYS_WINDOWS_NTFS:10,ZIP_OPSYS_MVS:11,ZIP_OPSYS_VSE:12,ZIP_OPSYS_ACORN_RISC:13,ZIP_OPSYS_VFAT:14,ZIP_OPSYS_ALTERNATE_MVS:15,ZIP_OPSYS_BEOS:16,ZIP_OPSYS_TANDEM:17,ZIP_OPSYS_OS_400:18,ZIP_OPSYS_OS_X:19,ZIP_CM_DEFAULT:-1,ZIP_CM_STORE:0,ZIP_CM_DEFLATE:8,uint08S:e._malloc(1),uint32S:e._malloc(4),malloc:e._malloc,free:e._free,getValue:e.getValue,openFromSource:e.cwrap("zip_open_from_source","number",["number","number","number"]),close:e.cwrap("zip_close","number",["number"]),discard:e.cwrap("zip_discard",null,["number"]),getError:e.cwrap("zip_get_error","number",["number"]),getName:e.cwrap("zip_get_name","string",["number","number","number"]),getNumEntries:e.cwrap("zip_get_num_entries","number",["number","number"]),delete:e.cwrap("zip_delete","number",["number","number"]),statIndex:e.cwrap("zip_stat_index","number",["number",...Hp,"number","number"]),fopenIndex:e.cwrap("zip_fopen_index","number",["number",...Hp,"number"]),fread:e.cwrap("zip_fread","number",["number","number","number","number"]),fclose:e.cwrap("zip_fclose","number",["number"]),dir:{add:e.cwrap("zip_dir_add","number",["number","string"])},file:{add:e.cwrap("zip_file_add","number",["number","string","number","number"]),getError:e.cwrap("zip_file_get_error","number",["number"]),getExternalAttributes:e.cwrap("zip_file_get_external_attributes","number",["number",...Hp,"number","number","number"]),setExternalAttributes:e.cwrap("zip_file_set_external_attributes","number",["number",...Hp,"number","number","number"]),setMtime:e.cwrap("zip_file_set_mtime","number",["number",...Hp,"number","number"]),setCompression:e.cwrap("zip_set_file_compression","number",["number",...Hp,"number","number"])},ext:{countSymlinks:e.cwrap("zip_ext_count_symlinks","number",["number"])},error:{initWithCode:e.cwrap("zip_error_init_with_code",null,["number","number"]),strerror:e.cwrap("zip_error_strerror","string",["number"])},name:{locate:e.cwrap("zip_name_locate","number",["number","string","number"])},source:{fromUnattachedBuffer:e.cwrap("zip_source_buffer_create","number",["number",...Hp,"number","number"]),fromBuffer:e.cwrap("zip_source_buffer","number",["number","number",...Hp,"number"]),free:e.cwrap("zip_source_free",null,["number"]),keep:e.cwrap("zip_source_keep",null,["number"]),open:e.cwrap("zip_source_open","number",["number"]),close:e.cwrap("zip_source_close","number",["number"]),seek:e.cwrap("zip_source_seek","number",["number",...Hp,"number"]),tell:e.cwrap("zip_source_tell","number",["number"]),read:e.cwrap("zip_source_read","number",["number","number","number"]),error:e.cwrap("zip_source_error","number",["number"])},struct:{statS:e.cwrap("zipstruct_statS","number",[]),statSize:e.cwrap("zipstruct_stat_size","number",["number"]),statCompSize:e.cwrap("zipstruct_stat_comp_size","number",["number"]),statCompMethod:e.cwrap("zipstruct_stat_comp_method","number",["number"]),statMtime:e.cwrap("zipstruct_stat_mtime","number",["number"]),statCrc:e.cwrap("zipstruct_stat_crc","number",["number"]),errorS:e.cwrap("zipstruct_errorS","number",[]),errorCodeZip:e.cwrap("zipstruct_error_code_zip","number",["number"])}})});function dj(e,t){let r=e.indexOf(t);if(r<=0)return null;let s=r;for(;r>=0&&(s=r+t.length,e[s]!==J.sep);){if(e[r-1]===J.sep)return null;r=e.indexOf(t,s)}return e.length>s&&e[s]!==J.sep?null:e.slice(0,s)}var rA,LAe=Xe(()=>{Dt();Dt();nA();rA=class e extends $h{static async openPromise(t,r){let s=new e(r);try{return await t(s)}finally{s.saveAndClose()}}constructor(t={}){let r=t.fileExtensions,s=t.readOnlyArchives,a=typeof r>"u"?f=>dj(f,".zip"):f=>{for(let p of r){let h=dj(f,p);if(h)return h}return null},n=(f,p)=>new ps(p,{baseFs:f,readOnly:s,stats:f.statSync(p),customZipImplementation:t.customZipImplementation}),c=async(f,p)=>{let h={baseFs:f,readOnly:s,stats:await f.statPromise(p),customZipImplementation:t.customZipImplementation};return()=>new ps(p,h)};super({...t,factorySync:n,factoryPromise:c,getMountPoint:a})}}});var gj,DI,mj=Xe(()=>{Aj();gj=class extends Error{constructor(t,r){super(t),this.name="Libzip Error",this.code=r}},DI=class{constructor(t){this.filesShouldBeCached=!0;let r="buffer"in t?t.buffer:t.baseFs.readFileSync(t.path);this.libzip=tv();let s=this.libzip.malloc(4);try{let c=0;t.readOnly&&(c|=this.libzip.ZIP_RDONLY);let f=this.allocateUnattachedSource(r);try{this.zip=this.libzip.openFromSource(f,c,s),this.lzSource=f}catch(p){throw this.libzip.source.free(f),p}if(this.zip===0){let p=this.libzip.struct.errorS();throw this.libzip.error.initWithCode(p,this.libzip.getValue(s,"i32")),this.makeLibzipError(p)}}finally{this.libzip.free(s)}let a=this.libzip.getNumEntries(this.zip,0),n=new Array(a);for(let c=0;c>>0,n=this.libzip.struct.statMtime(r)>>>0,c=this.libzip.struct.statCrc(r)>>>0;return{size:a,mtime:n,crc:c}}makeLibzipError(t){let r=this.libzip.struct.errorCodeZip(t),s=this.libzip.error.strerror(t),a=new gj(s,this.libzip.errors[r]);if(r===this.libzip.errors.ZIP_ER_CHANGED)throw new Error(`Assertion failed: Unexpected libzip error: ${a.message}`);return a}setFileSource(t,r,s){let a=this.allocateSource(s);try{let n=this.libzip.file.add(this.zip,t,a,this.libzip.ZIP_FL_OVERWRITE);if(n===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));if(r!==null&&this.libzip.file.setCompression(this.zip,n,0,r[0],r[1])===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return n}catch(n){throw this.libzip.source.free(a),n}}setMtime(t,r){if(this.libzip.file.setMtime(this.zip,t,0,r,0)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}getExternalAttributes(t){if(this.libzip.file.getExternalAttributes(this.zip,t,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let s=this.libzip.getValue(this.libzip.uint08S,"i8")>>>0,a=this.libzip.getValue(this.libzip.uint32S,"i32")>>>0;return[s,a]}setExternalAttributes(t,r,s){if(this.libzip.file.setExternalAttributes(this.zip,t,0,0,r,s)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}locate(t){return this.libzip.name.locate(this.zip,t,0)}getFileSource(t){let r=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,t,0,0,r)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let a=this.libzip.struct.statCompSize(r),n=this.libzip.struct.statCompMethod(r),c=this.libzip.malloc(a);try{let f=this.libzip.fopenIndex(this.zip,t,0,this.libzip.ZIP_FL_COMPRESSED);if(f===0)throw this.makeLibzipError(this.libzip.getError(this.zip));try{let p=this.libzip.fread(f,c,a,0);if(p===-1)throw this.makeLibzipError(this.libzip.file.getError(f));if(pa)throw new Error("Overread");let h=this.libzip.HEAPU8.subarray(c,c+a);return{data:Buffer.from(h),compressionMethod:n}}finally{this.libzip.fclose(f)}}finally{this.libzip.free(c)}}deleteEntry(t){if(this.libzip.delete(this.zip,t)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}addDirectory(t){let r=this.libzip.dir.add(this.zip,t);if(r===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return r}getBufferAndClose(){try{if(this.libzip.source.keep(this.lzSource),this.libzip.close(this.zip)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));if(this.libzip.source.open(this.lzSource)===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));if(this.libzip.source.seek(this.lzSource,0,0,this.libzip.SEEK_END)===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));let t=this.libzip.source.tell(this.lzSource);if(t===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));if(this.libzip.source.seek(this.lzSource,0,0,this.libzip.SEEK_SET)===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));let r=this.libzip.malloc(t);if(!r)throw new Error("Couldn't allocate enough memory");try{let s=this.libzip.source.read(this.lzSource,r,t);if(s===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));if(st)throw new Error("Overread");let a=Buffer.from(this.libzip.HEAPU8.subarray(r,r+t));return process.env.YARN_IS_TEST_ENV&&process.env.YARN_ZIP_DATA_EPILOGUE&&(a=Buffer.concat([a,Buffer.from(process.env.YARN_ZIP_DATA_EPILOGUE)])),a}finally{this.libzip.free(r)}}finally{this.libzip.source.close(this.lzSource),this.libzip.source.free(this.lzSource)}}allocateBuffer(t){Buffer.isBuffer(t)||(t=Buffer.from(t));let r=this.libzip.malloc(t.byteLength);if(!r)throw new Error("Couldn't allocate enough memory");return new Uint8Array(this.libzip.HEAPU8.buffer,r,t.byteLength).set(t),{buffer:r,byteLength:t.byteLength}}allocateUnattachedSource(t){let r=this.libzip.struct.errorS(),{buffer:s,byteLength:a}=this.allocateBuffer(t),n=this.libzip.source.fromUnattachedBuffer(s,a,0,1,r);if(n===0)throw this.libzip.free(r),this.makeLibzipError(r);return n}allocateSource(t){let{buffer:r,byteLength:s}=this.allocateBuffer(t),a=this.libzip.source.fromBuffer(this.zip,r,s,0,1);if(a===0)throw this.libzip.free(r),this.makeLibzipError(this.libzip.getError(this.zip));return a}discard(){this.libzip.discard(this.zip)}}});function Ftt(e){if(typeof e=="string"&&String(+e)===e)return+e;if(typeof e=="number"&&Number.isFinite(e))return e<0?Date.now()/1e3:e;if(MAe.types.isDate(e))return e.getTime()/1e3;throw new Error("Invalid time")}function wR(){return Buffer.from([80,75,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])}var Ta,yj,MAe,Ej,om,Ij,Cj,UAe,ps,BR=Xe(()=>{Dt();Dt();Dt();Dt();Dt();Dt();Ta=Ie("fs"),yj=Ie("stream"),MAe=Ie("util"),Ej=et(Ie("zlib"));mj();om=3,Ij=0,Cj=8,UAe="mixed";ps=class extends jf{constructor(r,s={}){super();this.listings=new Map;this.entries=new Map;this.fileSources=new Map;this.fds=new Map;this.nextFd=0;this.ready=!1;this.readOnly=!1;s.readOnly&&(this.readOnly=!0);let a=s;this.level=typeof a.level<"u"?a.level:UAe;let n=s.customZipImplementation??DI;if(typeof r=="string"){let{baseFs:f=new Vn}=a;this.baseFs=f,this.path=r}else this.path=null,this.baseFs=null;if(s.stats)this.stats=s.stats;else if(typeof r=="string")try{this.stats=this.baseFs.statSync(r)}catch(f){if(f.code==="ENOENT"&&a.create)this.stats=al.makeDefaultStats();else throw f}else this.stats=al.makeDefaultStats();typeof r=="string"?s.create?this.zipImpl=new n({buffer:wR(),readOnly:this.readOnly}):this.zipImpl=new n({path:r,baseFs:this.baseFs,readOnly:this.readOnly,size:this.stats.size}):this.zipImpl=new n({buffer:r??wR(),readOnly:this.readOnly}),this.listings.set(vt.root,new Set);let c=this.zipImpl.getListings();for(let f=0;f{this.closeSync(f)}})}async readPromise(r,s,a,n,c){return this.readSync(r,s,a,n,c)}readSync(r,s,a=0,n=s.byteLength,c=-1){let f=this.fds.get(r);if(typeof f>"u")throw or.EBADF("read");let p=c===-1||c===null?f.cursor:c,h=this.readFileSync(f.p);h.copy(s,a,p,p+n);let E=Math.max(0,Math.min(h.length-p,n));return(c===-1||c===null)&&(f.cursor+=E),E}async writePromise(r,s,a,n,c){return typeof s=="string"?this.writeSync(r,s,c):this.writeSync(r,s,a,n,c)}writeSync(r,s,a,n,c){throw typeof this.fds.get(r)>"u"?or.EBADF("read"):new Error("Unimplemented")}async closePromise(r){return this.closeSync(r)}closeSync(r){if(typeof this.fds.get(r)>"u")throw or.EBADF("read");this.fds.delete(r)}createReadStream(r,{encoding:s}={}){if(r===null)throw new Error("Unimplemented");let a=this.openSync(r,"r"),n=Object.assign(new yj.PassThrough({emitClose:!0,autoDestroy:!0,destroy:(f,p)=>{clearImmediate(c),this.closeSync(a),p(f)}}),{close(){n.destroy()},bytesRead:0,path:r,pending:!1}),c=setImmediate(async()=>{try{let f=await this.readFilePromise(r,s);n.bytesRead=f.length,n.end(f)}catch(f){n.destroy(f)}});return n}createWriteStream(r,{encoding:s}={}){if(this.readOnly)throw or.EROFS(`open '${r}'`);if(r===null)throw new Error("Unimplemented");let a=[],n=this.openSync(r,"w"),c=Object.assign(new yj.PassThrough({autoDestroy:!0,emitClose:!0,destroy:(f,p)=>{try{f?p(f):(this.writeFileSync(r,Buffer.concat(a),s),p(null))}catch(h){p(h)}finally{this.closeSync(n)}}}),{close(){c.destroy()},bytesWritten:0,path:r,pending:!1});return c.on("data",f=>{let p=Buffer.from(f);c.bytesWritten+=p.length,a.push(p)}),c}async realpathPromise(r){return this.realpathSync(r)}realpathSync(r){let s=this.resolveFilename(`lstat '${r}'`,r);if(!this.entries.has(s)&&!this.listings.has(s))throw or.ENOENT(`lstat '${r}'`);return s}async existsPromise(r){return this.existsSync(r)}existsSync(r){if(!this.ready)throw or.EBUSY(`archive closed, existsSync '${r}'`);if(this.symlinkCount===0){let a=J.resolve(vt.root,r);return this.entries.has(a)||this.listings.has(a)}let s;try{s=this.resolveFilename(`stat '${r}'`,r,void 0,!1)}catch{return!1}return s===void 0?!1:this.entries.has(s)||this.listings.has(s)}async accessPromise(r,s){return this.accessSync(r,s)}accessSync(r,s=Ta.constants.F_OK){let a=this.resolveFilename(`access '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw or.ENOENT(`access '${r}'`);if(this.readOnly&&s&Ta.constants.W_OK)throw or.EROFS(`access '${r}'`)}async statPromise(r,s={bigint:!1}){return s.bigint?this.statSync(r,{bigint:!0}):this.statSync(r)}statSync(r,s={bigint:!1,throwIfNoEntry:!0}){let a=this.resolveFilename(`stat '${r}'`,r,void 0,s.throwIfNoEntry);if(a!==void 0){if(!this.entries.has(a)&&!this.listings.has(a)){if(s.throwIfNoEntry===!1)return;throw or.ENOENT(`stat '${r}'`)}if(r[r.length-1]==="/"&&!this.listings.has(a))throw or.ENOTDIR(`stat '${r}'`);return this.statImpl(`stat '${r}'`,a,s)}}async fstatPromise(r,s){return this.fstatSync(r,s)}fstatSync(r,s){let a=this.fds.get(r);if(typeof a>"u")throw or.EBADF("fstatSync");let{p:n}=a,c=this.resolveFilename(`stat '${n}'`,n);if(!this.entries.has(c)&&!this.listings.has(c))throw or.ENOENT(`stat '${n}'`);if(n[n.length-1]==="/"&&!this.listings.has(c))throw or.ENOTDIR(`stat '${n}'`);return this.statImpl(`fstat '${n}'`,c,s)}async lstatPromise(r,s={bigint:!1}){return s.bigint?this.lstatSync(r,{bigint:!0}):this.lstatSync(r)}lstatSync(r,s={bigint:!1,throwIfNoEntry:!0}){let a=this.resolveFilename(`lstat '${r}'`,r,!1,s.throwIfNoEntry);if(a!==void 0){if(!this.entries.has(a)&&!this.listings.has(a)){if(s.throwIfNoEntry===!1)return;throw or.ENOENT(`lstat '${r}'`)}if(r[r.length-1]==="/"&&!this.listings.has(a))throw or.ENOTDIR(`lstat '${r}'`);return this.statImpl(`lstat '${r}'`,a,s)}}statImpl(r,s,a={}){let n=this.entries.get(s);if(typeof n<"u"){let c=this.zipImpl.stat(n),f=c.crc,p=c.size,h=c.mtime*1e3,E=this.stats.uid,C=this.stats.gid,S=512,x=Math.ceil(c.size/S),I=h,T=h,O=h,U=new Date(I),V=new Date(T),te=new Date(O),ie=new Date(h),ue=this.listings.has(s)?Ta.constants.S_IFDIR:this.isSymbolicLink(n)?Ta.constants.S_IFLNK:Ta.constants.S_IFREG,ae=ue===Ta.constants.S_IFDIR?493:420,ge=ue|this.getUnixMode(n,ae)&511,Ae=Object.assign(new al.StatEntry,{uid:E,gid:C,size:p,blksize:S,blocks:x,atime:U,birthtime:V,ctime:te,mtime:ie,atimeMs:I,birthtimeMs:T,ctimeMs:O,mtimeMs:h,mode:ge,crc:f});return a.bigint===!0?al.convertToBigIntStats(Ae):Ae}if(this.listings.has(s)){let c=this.stats.uid,f=this.stats.gid,p=0,h=512,E=0,C=this.stats.mtimeMs,S=this.stats.mtimeMs,x=this.stats.mtimeMs,I=this.stats.mtimeMs,T=new Date(C),O=new Date(S),U=new Date(x),V=new Date(I),te=Ta.constants.S_IFDIR|493,ue=Object.assign(new al.StatEntry,{uid:c,gid:f,size:p,blksize:h,blocks:E,atime:T,birthtime:O,ctime:U,mtime:V,atimeMs:C,birthtimeMs:S,ctimeMs:x,mtimeMs:I,mode:te,crc:0});return a.bigint===!0?al.convertToBigIntStats(ue):ue}throw new Error("Unreachable")}getUnixMode(r,s){let[a,n]=this.zipImpl.getExternalAttributes(r);return a!==om?s:n>>>16}registerListing(r){let s=this.listings.get(r);if(s)return s;this.registerListing(J.dirname(r)).add(J.basename(r));let n=new Set;return this.listings.set(r,n),n}registerEntry(r,s){this.registerListing(J.dirname(r)).add(J.basename(r)),this.entries.set(r,s)}unregisterListing(r){this.listings.delete(r),this.listings.get(J.dirname(r))?.delete(J.basename(r))}unregisterEntry(r){this.unregisterListing(r);let s=this.entries.get(r);this.entries.delete(r),!(typeof s>"u")&&(this.fileSources.delete(s),this.isSymbolicLink(s)&&this.symlinkCount--)}deleteEntry(r,s){this.unregisterEntry(r),this.zipImpl.deleteEntry(s)}resolveFilename(r,s,a=!0,n=!0){if(!this.ready)throw or.EBUSY(`archive closed, ${r}`);let c=J.resolve(vt.root,s);if(c==="/")return vt.root;let f=this.entries.get(c);if(a&&f!==void 0)if(this.symlinkCount!==0&&this.isSymbolicLink(f)){let p=this.getFileSource(f).toString();return this.resolveFilename(r,J.resolve(J.dirname(c),p),!0,n)}else return c;for(;;){let p=this.resolveFilename(r,J.dirname(c),!0,n);if(p===void 0)return p;let h=this.listings.has(p),E=this.entries.has(p);if(!h&&!E){if(n===!1)return;throw or.ENOENT(r)}if(!h)throw or.ENOTDIR(r);if(c=J.resolve(p,J.basename(c)),!a||this.symlinkCount===0)break;let C=this.zipImpl.locate(c.slice(1));if(C===-1)break;if(this.isSymbolicLink(C)){let S=this.getFileSource(C).toString();c=J.resolve(J.dirname(c),S)}else break}return c}setFileSource(r,s){let a=Buffer.isBuffer(s)?s:Buffer.from(s),n=J.relative(vt.root,r),c=null;this.level!=="mixed"&&(c=[this.level===0?Ij:Cj,this.level]);let f=this.zipImpl.setFileSource(n,c,a);return this.fileSources.set(f,a),f}isSymbolicLink(r){if(this.symlinkCount===0)return!1;let[s,a]=this.zipImpl.getExternalAttributes(r);return s!==om?!1:(a>>>16&Ta.constants.S_IFMT)===Ta.constants.S_IFLNK}getFileSource(r,s={asyncDecompress:!1}){let a=this.fileSources.get(r);if(typeof a<"u")return a;let{data:n,compressionMethod:c}=this.zipImpl.getFileSource(r);if(c===Ij)return this.zipImpl.filesShouldBeCached&&this.fileSources.set(r,n),n;if(c===Cj){if(s.asyncDecompress)return new Promise((f,p)=>{Ej.default.inflateRaw(n,(h,E)=>{h?p(h):(this.zipImpl.filesShouldBeCached&&this.fileSources.set(r,E),f(E))})});{let f=Ej.default.inflateRawSync(n);return this.zipImpl.filesShouldBeCached&&this.fileSources.set(r,f),f}}else throw new Error(`Unsupported compression method: ${c}`)}async fchmodPromise(r,s){return this.chmodPromise(this.fdToPath(r,"fchmod"),s)}fchmodSync(r,s){return this.chmodSync(this.fdToPath(r,"fchmodSync"),s)}async chmodPromise(r,s){return this.chmodSync(r,s)}chmodSync(r,s){if(this.readOnly)throw or.EROFS(`chmod '${r}'`);s&=493;let a=this.resolveFilename(`chmod '${r}'`,r,!1),n=this.entries.get(a);if(typeof n>"u")throw new Error(`Assertion failed: The entry should have been registered (${a})`);let f=this.getUnixMode(n,Ta.constants.S_IFREG|0)&-512|s;this.zipImpl.setExternalAttributes(n,om,f<<16)}async fchownPromise(r,s,a){return this.chownPromise(this.fdToPath(r,"fchown"),s,a)}fchownSync(r,s,a){return this.chownSync(this.fdToPath(r,"fchownSync"),s,a)}async chownPromise(r,s,a){return this.chownSync(r,s,a)}chownSync(r,s,a){throw new Error("Unimplemented")}async renamePromise(r,s){return this.renameSync(r,s)}renameSync(r,s){throw new Error("Unimplemented")}async copyFilePromise(r,s,a){let{indexSource:n,indexDest:c,resolvedDestP:f}=this.prepareCopyFile(r,s,a),p=await this.getFileSource(n,{asyncDecompress:!0}),h=this.setFileSource(f,p);h!==c&&this.registerEntry(f,h)}copyFileSync(r,s,a=0){let{indexSource:n,indexDest:c,resolvedDestP:f}=this.prepareCopyFile(r,s,a),p=this.getFileSource(n),h=this.setFileSource(f,p);h!==c&&this.registerEntry(f,h)}prepareCopyFile(r,s,a=0){if(this.readOnly)throw or.EROFS(`copyfile '${r} -> '${s}'`);if(a&Ta.constants.COPYFILE_FICLONE_FORCE)throw or.ENOSYS("unsupported clone operation",`copyfile '${r}' -> ${s}'`);let n=this.resolveFilename(`copyfile '${r} -> ${s}'`,r),c=this.entries.get(n);if(typeof c>"u")throw or.EINVAL(`copyfile '${r}' -> '${s}'`);let f=this.resolveFilename(`copyfile '${r}' -> ${s}'`,s),p=this.entries.get(f);if(a&(Ta.constants.COPYFILE_EXCL|Ta.constants.COPYFILE_FICLONE_FORCE)&&typeof p<"u")throw or.EEXIST(`copyfile '${r}' -> '${s}'`);return{indexSource:c,resolvedDestP:f,indexDest:p}}async appendFilePromise(r,s,a){if(this.readOnly)throw or.EROFS(`open '${r}'`);return typeof a>"u"?a={flag:"a"}:typeof a=="string"?a={flag:"a",encoding:a}:typeof a.flag>"u"&&(a={flag:"a",...a}),this.writeFilePromise(r,s,a)}appendFileSync(r,s,a={}){if(this.readOnly)throw or.EROFS(`open '${r}'`);return typeof a>"u"?a={flag:"a"}:typeof a=="string"?a={flag:"a",encoding:a}:typeof a.flag>"u"&&(a={flag:"a",...a}),this.writeFileSync(r,s,a)}fdToPath(r,s){let a=this.fds.get(r)?.p;if(typeof a>"u")throw or.EBADF(s);return a}async writeFilePromise(r,s,a){let{encoding:n,mode:c,index:f,resolvedP:p}=this.prepareWriteFile(r,a);f!==void 0&&typeof a=="object"&&a.flag&&a.flag.includes("a")&&(s=Buffer.concat([await this.getFileSource(f,{asyncDecompress:!0}),Buffer.from(s)])),n!==null&&(s=s.toString(n));let h=this.setFileSource(p,s);h!==f&&this.registerEntry(p,h),c!==null&&await this.chmodPromise(p,c)}writeFileSync(r,s,a){let{encoding:n,mode:c,index:f,resolvedP:p}=this.prepareWriteFile(r,a);f!==void 0&&typeof a=="object"&&a.flag&&a.flag.includes("a")&&(s=Buffer.concat([this.getFileSource(f),Buffer.from(s)])),n!==null&&(s=s.toString(n));let h=this.setFileSource(p,s);h!==f&&this.registerEntry(p,h),c!==null&&this.chmodSync(p,c)}prepareWriteFile(r,s){if(typeof r=="number"&&(r=this.fdToPath(r,"read")),this.readOnly)throw or.EROFS(`open '${r}'`);let a=this.resolveFilename(`open '${r}'`,r);if(this.listings.has(a))throw or.EISDIR(`open '${r}'`);let n=null,c=null;typeof s=="string"?n=s:typeof s=="object"&&({encoding:n=null,mode:c=null}=s);let f=this.entries.get(a);return{encoding:n,mode:c,resolvedP:a,index:f}}async unlinkPromise(r){return this.unlinkSync(r)}unlinkSync(r){if(this.readOnly)throw or.EROFS(`unlink '${r}'`);let s=this.resolveFilename(`unlink '${r}'`,r);if(this.listings.has(s))throw or.EISDIR(`unlink '${r}'`);let a=this.entries.get(s);if(typeof a>"u")throw or.EINVAL(`unlink '${r}'`);this.deleteEntry(s,a)}async utimesPromise(r,s,a){return this.utimesSync(r,s,a)}utimesSync(r,s,a){if(this.readOnly)throw or.EROFS(`utimes '${r}'`);let n=this.resolveFilename(`utimes '${r}'`,r);this.utimesImpl(n,a)}async lutimesPromise(r,s,a){return this.lutimesSync(r,s,a)}lutimesSync(r,s,a){if(this.readOnly)throw or.EROFS(`lutimes '${r}'`);let n=this.resolveFilename(`utimes '${r}'`,r,!1);this.utimesImpl(n,a)}utimesImpl(r,s){this.listings.has(r)&&(this.entries.has(r)||this.hydrateDirectory(r));let a=this.entries.get(r);if(a===void 0)throw new Error("Unreachable");this.zipImpl.setMtime(a,Ftt(s))}async mkdirPromise(r,s){return this.mkdirSync(r,s)}mkdirSync(r,{mode:s=493,recursive:a=!1}={}){if(a)return this.mkdirpSync(r,{chmod:s});if(this.readOnly)throw or.EROFS(`mkdir '${r}'`);let n=this.resolveFilename(`mkdir '${r}'`,r);if(this.entries.has(n)||this.listings.has(n))throw or.EEXIST(`mkdir '${r}'`);this.hydrateDirectory(n),this.chmodSync(n,s)}async rmdirPromise(r,s){return this.rmdirSync(r,s)}rmdirSync(r,{recursive:s=!1}={}){if(this.readOnly)throw or.EROFS(`rmdir '${r}'`);if(s){this.removeSync(r);return}let a=this.resolveFilename(`rmdir '${r}'`,r),n=this.listings.get(a);if(!n)throw or.ENOTDIR(`rmdir '${r}'`);if(n.size>0)throw or.ENOTEMPTY(`rmdir '${r}'`);let c=this.entries.get(a);if(typeof c>"u")throw or.EINVAL(`rmdir '${r}'`);this.deleteEntry(r,c)}async rmPromise(r,s){return this.rmSync(r,s)}rmSync(r,{recursive:s=!1}={}){if(this.readOnly)throw or.EROFS(`rm '${r}'`);if(s){this.removeSync(r);return}let a=this.resolveFilename(`rm '${r}'`,r),n=this.listings.get(a);if(!n)throw or.ENOTDIR(`rm '${r}'`);if(n.size>0)throw or.ENOTEMPTY(`rm '${r}'`);let c=this.entries.get(a);if(typeof c>"u")throw or.EINVAL(`rm '${r}'`);this.deleteEntry(r,c)}hydrateDirectory(r){let s=this.zipImpl.addDirectory(J.relative(vt.root,r));return this.registerListing(r),this.registerEntry(r,s),s}async linkPromise(r,s){return this.linkSync(r,s)}linkSync(r,s){throw or.EOPNOTSUPP(`link '${r}' -> '${s}'`)}async symlinkPromise(r,s){return this.symlinkSync(r,s)}symlinkSync(r,s){if(this.readOnly)throw or.EROFS(`symlink '${r}' -> '${s}'`);let a=this.resolveFilename(`symlink '${r}' -> '${s}'`,s);if(this.listings.has(a))throw or.EISDIR(`symlink '${r}' -> '${s}'`);if(this.entries.has(a))throw or.EEXIST(`symlink '${r}' -> '${s}'`);let n=this.setFileSource(a,r);this.registerEntry(a,n),this.zipImpl.setExternalAttributes(n,om,(Ta.constants.S_IFLNK|511)<<16),this.symlinkCount+=1}async readFilePromise(r,s){typeof s=="object"&&(s=s?s.encoding:void 0);let a=await this.readFileBuffer(r,{asyncDecompress:!0});return s?a.toString(s):a}readFileSync(r,s){typeof s=="object"&&(s=s?s.encoding:void 0);let a=this.readFileBuffer(r);return s?a.toString(s):a}readFileBuffer(r,s={asyncDecompress:!1}){typeof r=="number"&&(r=this.fdToPath(r,"read"));let a=this.resolveFilename(`open '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw or.ENOENT(`open '${r}'`);if(r[r.length-1]==="/"&&!this.listings.has(a))throw or.ENOTDIR(`open '${r}'`);if(this.listings.has(a))throw or.EISDIR("read");let n=this.entries.get(a);if(n===void 0)throw new Error("Unreachable");return this.getFileSource(n,s)}async readdirPromise(r,s){return this.readdirSync(r,s)}readdirSync(r,s){let a=this.resolveFilename(`scandir '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw or.ENOENT(`scandir '${r}'`);let n=this.listings.get(a);if(!n)throw or.ENOTDIR(`scandir '${r}'`);if(s?.recursive)if(s?.withFileTypes){let c=Array.from(n,f=>Object.assign(this.statImpl("lstat",J.join(r,f)),{name:f,path:vt.dot,parentPath:vt.dot}));for(let f of c){if(!f.isDirectory())continue;let p=J.join(f.path,f.name),h=this.listings.get(J.join(a,p));for(let E of h)c.push(Object.assign(this.statImpl("lstat",J.join(r,p,E)),{name:E,path:p,parentPath:p}))}return c}else{let c=[...n];for(let f of c){let p=this.listings.get(J.join(a,f));if(!(typeof p>"u"))for(let h of p)c.push(J.join(f,h))}return c}else return s?.withFileTypes?Array.from(n,c=>Object.assign(this.statImpl("lstat",J.join(r,c)),{name:c,path:void 0,parentPath:void 0})):[...n]}async readlinkPromise(r){let s=this.prepareReadlink(r);return(await this.getFileSource(s,{asyncDecompress:!0})).toString()}readlinkSync(r){let s=this.prepareReadlink(r);return this.getFileSource(s).toString()}prepareReadlink(r){let s=this.resolveFilename(`readlink '${r}'`,r,!1);if(!this.entries.has(s)&&!this.listings.has(s))throw or.ENOENT(`readlink '${r}'`);if(r[r.length-1]==="/"&&!this.listings.has(s))throw or.ENOTDIR(`open '${r}'`);if(this.listings.has(s))throw or.EINVAL(`readlink '${r}'`);let a=this.entries.get(s);if(a===void 0)throw new Error("Unreachable");if(!this.isSymbolicLink(a))throw or.EINVAL(`readlink '${r}'`);return a}async truncatePromise(r,s=0){let a=this.resolveFilename(`open '${r}'`,r),n=this.entries.get(a);if(typeof n>"u")throw or.EINVAL(`open '${r}'`);let c=await this.getFileSource(n,{asyncDecompress:!0}),f=Buffer.alloc(s,0);return c.copy(f),await this.writeFilePromise(r,f)}truncateSync(r,s=0){let a=this.resolveFilename(`open '${r}'`,r),n=this.entries.get(a);if(typeof n>"u")throw or.EINVAL(`open '${r}'`);let c=this.getFileSource(n),f=Buffer.alloc(s,0);return c.copy(f),this.writeFileSync(r,f)}async ftruncatePromise(r,s){return this.truncatePromise(this.fdToPath(r,"ftruncate"),s)}ftruncateSync(r,s){return this.truncateSync(this.fdToPath(r,"ftruncateSync"),s)}watch(r,s,a){let n;switch(typeof s){case"function":case"string":case"undefined":n=!0;break;default:({persistent:n=!0}=s);break}if(!n)return{on:()=>{},close:()=>{}};let c=setInterval(()=>{},24*60*60*1e3);return{on:()=>{},close:()=>{clearInterval(c)}}}watchFile(r,s,a){let n=J.resolve(vt.root,r);return lE(this,n,s,a)}unwatchFile(r,s){let a=J.resolve(vt.root,r);return dg(this,a,s)}}});function HAe(e,t,r=Buffer.alloc(0),s){let a=new ps(r),n=C=>C===t||C.startsWith(`${t}/`)?C.slice(0,t.length):null,c=async(C,S)=>()=>a,f=(C,S)=>a,p={...e},h=new Vn(p),E=new $h({baseFs:h,getMountPoint:n,factoryPromise:c,factorySync:f,magicByte:21,maxAge:1/0,typeCheck:s?.typeCheck});return Q2(_Ae.default,new e0(E)),a}var _Ae,jAe=Xe(()=>{Dt();_Ae=et(Ie("fs"));BR()});var GAe=Xe(()=>{LAe();BR();jAe()});var wj,rv,vR,qAe=Xe(()=>{Dt();BR();wj={CENTRAL_DIRECTORY:33639248,END_OF_CENTRAL_DIRECTORY:101010256},rv=22,vR=class e{constructor(t){this.filesShouldBeCached=!1;if("buffer"in t)throw new Error("Buffer based zip archives are not supported");if(!t.readOnly)throw new Error("Writable zip archives are not supported");this.baseFs=t.baseFs,this.fd=this.baseFs.openSync(t.path,"r");try{this.entries=e.readZipSync(this.fd,this.baseFs,t.size)}catch(r){throw this.baseFs.closeSync(this.fd),this.fd="closed",r}}static readZipSync(t,r,s){if(s=0;O--)if(n.readUInt32LE(O)===wj.END_OF_CENTRAL_DIRECTORY){a=O;break}if(a===-1)throw new Error("Not a zip archive")}let c=n.readUInt16LE(a+10),f=n.readUInt32LE(a+12),p=n.readUInt32LE(a+16),h=n.readUInt16LE(a+20);if(a+h+rv>n.length)throw new Error("Zip archive inconsistent");if(c==65535||f==4294967295||p==4294967295)throw new Error("Zip 64 is not supported");if(f>s)throw new Error("Zip archive inconsistent");if(c>f/46)throw new Error("Zip archive inconsistent");let E=Buffer.alloc(f);if(r.readSync(t,E,0,E.length,p)!==E.length)throw new Error("Zip archive inconsistent");let C=[],S=0,x=0,I=0;for(;xE.length)throw new Error("Zip archive inconsistent");if(E.readUInt32LE(S)!==wj.CENTRAL_DIRECTORY)throw new Error("Zip archive inconsistent");let O=E.readUInt16LE(S+4)>>>8;if(E.readUInt16LE(S+8)&1)throw new Error("Encrypted zip files are not supported");let V=E.readUInt16LE(S+10),te=E.readUInt32LE(S+16),ie=E.readUInt16LE(S+28),ue=E.readUInt16LE(S+30),ae=E.readUInt16LE(S+32),ge=E.readUInt32LE(S+42),Ae=E.toString("utf8",S+46,S+46+ie).replaceAll("\0"," ");if(Ae.includes("\0"))throw new Error("Invalid ZIP file");let Ce=E.readUInt32LE(S+20),Ee=E.readUInt32LE(S+38);C.push({name:Ae,os:O,mtime:Ai.SAFE_TIME,crc:te,compressionMethod:V,isSymbolicLink:O===om&&(Ee>>>16&Ai.S_IFMT)===Ai.S_IFLNK,size:E.readUInt32LE(S+24),compressedSize:Ce,externalAttributes:Ee,localHeaderOffset:ge}),I+=Ce,x+=1,S+=46+ie+ue+ae}if(I>s)throw new Error("Zip archive inconsistent");if(S!==E.length)throw new Error("Zip archive inconsistent");return C}getExternalAttributes(t){let r=this.entries[t];return[r.os,r.externalAttributes]}getListings(){return this.entries.map(t=>t.name)}getSymlinkCount(){let t=0;for(let r of this.entries)r.isSymbolicLink&&(t+=1);return t}stat(t){let r=this.entries[t];return{crc:r.crc,mtime:r.mtime,size:r.size}}locate(t){for(let r=0;rUAe,DEFLATE:()=>Cj,JsZipImpl:()=>vR,LibZipImpl:()=>DI,STORE:()=>Ij,ZIP_UNIX:()=>om,ZipFS:()=>ps,ZipOpenFS:()=>rA,getArchivePart:()=>dj,getLibzipPromise:()=>Ott,getLibzipSync:()=>Ntt,makeEmptyArchive:()=>wR,mountMemoryDrive:()=>HAe});function Ntt(){return tv()}async function Ott(){return tv()}var WAe,nA=Xe(()=>{Aj();WAe=et(TAe());OAe();GAe();qAe();mj();RAe(()=>{let e=(0,WAe.default)();return NAe(e)})});var iv,YAe=Xe(()=>{Dt();Yt();sv();iv=class extends at{constructor(){super(...arguments);this.cwd=he.String("--cwd",process.cwd(),{description:"The directory to run the command in"});this.commandName=he.String();this.args=he.Proxy()}static{this.usage={description:"run a command using yarn's portable shell",details:` + This command will run a command using Yarn's portable shell. + + Make sure to escape glob patterns, redirections, and other features that might be expanded by your own shell. + + Note: To escape something from Yarn's shell, you might have to escape it twice, the first time from your own shell. + + Note: Don't use this command in Yarn scripts, as Yarn's shell is automatically used. + + For a list of features, visit: https://github.com/yarnpkg/berry/blob/master/packages/yarnpkg-shell/README.md. + `,examples:[["Run a simple command","$0 echo Hello"],["Run a command with a glob pattern","$0 echo '*.js'"],["Run a command with a redirection","$0 echo Hello World '>' hello.txt"],["Run a command with an escaped glob pattern (The double escape is needed in Unix shells)",`$0 echo '"*.js"'`],["Run a command with a variable (Double quotes are needed in Unix shells, to prevent them from expanding the variable)",'$0 "GREETING=Hello echo $GREETING World"']]}}async execute(){let r=this.args.length>0?`${this.commandName} ${this.args.join(" ")}`:this.commandName;return await bI(r,[],{cwd:fe.toPortablePath(this.cwd),stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}}});var $l,VAe=Xe(()=>{$l=class extends Error{constructor(t){super(t),this.name="ShellError"}}});var bR={};Vt(bR,{fastGlobOptions:()=>zAe,isBraceExpansion:()=>Bj,isGlobPattern:()=>Ltt,match:()=>Mtt,micromatchOptions:()=>DR});function Ltt(e){if(!SR.default.scan(e,DR).isGlob)return!1;try{SR.default.parse(e,DR)}catch{return!1}return!0}function Mtt(e,{cwd:t,baseFs:r}){return(0,JAe.default)(e,{...zAe,cwd:fe.fromPortablePath(t),fs:ax(KAe.default,new e0(r))})}function Bj(e){return SR.default.scan(e,DR).isBrace}var JAe,KAe,SR,DR,zAe,XAe=Xe(()=>{Dt();JAe=et(wQ()),KAe=et(Ie("fs")),SR=et(zo()),DR={strictBrackets:!0},zAe={onlyDirectories:!1,onlyFiles:!1}});function vj(){}function Sj(){for(let e of am)e.kill()}function tpe(e,t,r,s){return a=>{let n=a[0]instanceof iA.Transform?"pipe":a[0],c=a[1]instanceof iA.Transform?"pipe":a[1],f=a[2]instanceof iA.Transform?"pipe":a[2],p=(0,$Ae.default)(e,t,{...s,stdio:[n,c,f]});return am.add(p),am.size===1&&(process.on("SIGINT",vj),process.on("SIGTERM",Sj)),a[0]instanceof iA.Transform&&a[0].pipe(p.stdin),a[1]instanceof iA.Transform&&p.stdout.pipe(a[1],{end:!1}),a[2]instanceof iA.Transform&&p.stderr.pipe(a[2],{end:!1}),{stdin:p.stdin,promise:new Promise(h=>{p.on("error",E=>{switch(am.delete(p),am.size===0&&(process.off("SIGINT",vj),process.off("SIGTERM",Sj)),E.code){case"ENOENT":a[2].write(`command not found: ${e} +`),h(127);break;case"EACCES":a[2].write(`permission denied: ${e} +`),h(128);break;default:a[2].write(`uncaught error: ${E.message} +`),h(1);break}}),p.on("close",E=>{am.delete(p),am.size===0&&(process.off("SIGINT",vj),process.off("SIGTERM",Sj)),h(E!==null?E:129)})})}}}function rpe(e){return t=>{let r=t[0]==="pipe"?new iA.PassThrough:t[0];return{stdin:r,promise:Promise.resolve().then(()=>e({stdin:r,stdout:t[1],stderr:t[2]}))}}}function PR(e,t){return bj.start(e,t)}function ZAe(e,t=null){let r=new iA.PassThrough,s=new epe.StringDecoder,a="";return r.on("data",n=>{let c=s.write(n),f;do if(f=c.indexOf(` +`),f!==-1){let p=a+c.substring(0,f);c=c.substring(f+1),a="",e(t!==null?`${t} ${p}`:p)}while(f!==-1);a+=c}),r.on("end",()=>{let n=s.end();n!==""&&e(t!==null?`${t} ${n}`:n)}),r}function npe(e,{prefix:t}){return{stdout:ZAe(r=>e.stdout.write(`${r} +`),e.stdout.isTTY?t:null),stderr:ZAe(r=>e.stderr.write(`${r} +`),e.stderr.isTTY?t:null)}}var $Ae,iA,epe,am,Mc,Dj,bj,Pj=Xe(()=>{$Ae=et(vU()),iA=Ie("stream"),epe=Ie("string_decoder"),am=new Set;Mc=class{constructor(t){this.stream=t}close(){}get(){return this.stream}},Dj=class{constructor(){this.stream=null}close(){if(this.stream===null)throw new Error("Assertion failed: No stream attached");this.stream.end()}attach(t){this.stream=t}get(){if(this.stream===null)throw new Error("Assertion failed: No stream attached");return this.stream}},bj=class e{constructor(t,r){this.stdin=null;this.stdout=null;this.stderr=null;this.pipe=null;this.ancestor=t,this.implementation=r}static start(t,{stdin:r,stdout:s,stderr:a}){let n=new e(null,t);return n.stdin=r,n.stdout=s,n.stderr=a,n}pipeTo(t,r=1){let s=new e(this,t),a=new Dj;return s.pipe=a,s.stdout=this.stdout,s.stderr=this.stderr,(r&1)===1?this.stdout=a:this.ancestor!==null&&(this.stderr=this.ancestor.stdout),(r&2)===2?this.stderr=a:this.ancestor!==null&&(this.stderr=this.ancestor.stderr),s}async exec(){let t=["ignore","ignore","ignore"];if(this.pipe)t[0]="pipe";else{if(this.stdin===null)throw new Error("Assertion failed: No input stream registered");t[0]=this.stdin.get()}let r;if(this.stdout===null)throw new Error("Assertion failed: No output stream registered");r=this.stdout,t[1]=r.get();let s;if(this.stderr===null)throw new Error("Assertion failed: No error stream registered");s=this.stderr,t[2]=s.get();let a=this.implementation(t);return this.pipe&&this.pipe.attach(a.stdin),await a.promise.then(n=>(r.close(),s.close(),n))}async run(){let t=[];for(let s=this;s;s=s.ancestor)t.push(s.exec());return(await Promise.all(t))[0]}}});var cv={};Vt(cv,{EntryCommand:()=>iv,ShellError:()=>$l,execute:()=>bI,globUtils:()=>bR});function ipe(e,t,r){let s=new ec.PassThrough({autoDestroy:!0});switch(e){case 0:(t&1)===1&&r.stdin.pipe(s,{end:!1}),(t&2)===2&&r.stdin instanceof ec.Writable&&s.pipe(r.stdin,{end:!1});break;case 1:(t&1)===1&&r.stdout.pipe(s,{end:!1}),(t&2)===2&&s.pipe(r.stdout,{end:!1});break;case 2:(t&1)===1&&r.stderr.pipe(s,{end:!1}),(t&2)===2&&s.pipe(r.stderr,{end:!1});break;default:throw new $l(`Bad file descriptor: "${e}"`)}return s}function kR(e,t={}){let r={...e,...t};return r.environment={...e.environment,...t.environment},r.variables={...e.variables,...t.variables},r}async function _tt(e,t,r){let s=[],a=new ec.PassThrough;return a.on("data",n=>s.push(n)),await QR(e,t,kR(r,{stdout:a})),Buffer.concat(s).toString().replace(/[\r\n]+$/,"")}async function spe(e,t,r){let s=e.map(async n=>{let c=await lm(n.args,t,r);return{name:n.name,value:c.join(" ")}});return(await Promise.all(s)).reduce((n,c)=>(n[c.name]=c.value,n),{})}function xR(e){return e.match(/[^ \r\n\t]+/g)||[]}async function fpe(e,t,r,s,a=s){switch(e.name){case"$":s(String(process.pid));break;case"#":s(String(t.args.length));break;case"@":if(e.quoted)for(let n of t.args)a(n);else for(let n of t.args){let c=xR(n);for(let f=0;f=0&&n"u"&&(e.defaultValue?c=(await lm(e.defaultValue,t,r)).join(" "):e.alternativeValue&&(c="")),typeof c>"u")throw f?new $l(`Unbound argument #${n}`):new $l(`Unbound variable "${e.name}"`);if(e.quoted)s(c);else{let p=xR(c);for(let E=0;Es.push(n));let a=Number(s.join(" "));return Number.isNaN(a)?ov({type:"variable",name:s.join(" ")},t,r):ov({type:"number",value:a},t,r)}else return Htt[e.type](await ov(e.left,t,r),await ov(e.right,t,r))}async function lm(e,t,r){let s=new Map,a=[],n=[],c=E=>{n.push(E)},f=()=>{n.length>0&&a.push(n.join("")),n=[]},p=E=>{c(E),f()},h=(E,C,S)=>{let x=JSON.stringify({type:E,fd:C}),I=s.get(x);typeof I>"u"&&s.set(x,I=[]),I.push(S)};for(let E of e){let C=!1;switch(E.type){case"redirection":{let S=await lm(E.args,t,r);for(let x of S)h(E.subtype,E.fd,x)}break;case"argument":for(let S of E.segments)switch(S.type){case"text":c(S.text);break;case"glob":c(S.pattern),C=!0;break;case"shell":{let x=await _tt(S.shell,t,r);if(S.quoted)c(x);else{let I=xR(x);for(let T=0;T"u")throw new Error("Assertion failed: Expected a glob pattern to have been set");let x=await t.glob.match(S,{cwd:r.cwd,baseFs:t.baseFs});if(x.length===0){let I=Bj(S)?". Note: Brace expansion of arbitrary strings isn't currently supported. For more details, please read this issue: https://github.com/yarnpkg/berry/issues/22":"";throw new $l(`No matches found: "${S}"${I}`)}for(let I of x.sort())p(I)}}if(s.size>0){let E=[];for(let[C,S]of s.entries())E.splice(E.length,0,C,String(S.length),...S);a.splice(0,0,"__ysh_set_redirects",...E,"--")}return a}function av(e,t,r){t.builtins.has(e[0])||(e=["command",...e]);let s=fe.fromPortablePath(r.cwd),a=r.environment;typeof a.PWD<"u"&&(a={...a,PWD:s});let[n,...c]=e;if(n==="command")return tpe(c[0],c.slice(1),t,{cwd:s,env:a});let f=t.builtins.get(n);if(typeof f>"u")throw new Error(`Assertion failed: A builtin should exist for "${n}"`);return rpe(async({stdin:p,stdout:h,stderr:E})=>{let{stdin:C,stdout:S,stderr:x}=r;r.stdin=p,r.stdout=h,r.stderr=E;try{return await f(c,t,r)}finally{r.stdin=C,r.stdout=S,r.stderr=x}})}function jtt(e,t,r){return s=>{let a=new ec.PassThrough,n=QR(e,t,kR(r,{stdin:a}));return{stdin:a,promise:n}}}function Gtt(e,t,r){return s=>{let a=new ec.PassThrough,n=QR(e,t,r);return{stdin:a,promise:n}}}function ope(e,t,r,s){if(t.length===0)return e;{let a;do a=String(Math.random());while(Object.hasOwn(s.procedures,a));return s.procedures={...s.procedures},s.procedures[a]=e,av([...t,"__ysh_run_procedure",a],r,s)}}async function ape(e,t,r){let s=e,a=null,n=null;for(;s;){let c=s.then?{...r}:r,f;switch(s.type){case"command":{let p=await lm(s.args,t,r),h=await spe(s.envs,t,r);f=s.envs.length?av(p,t,kR(c,{environment:h})):av(p,t,c)}break;case"subshell":{let p=await lm(s.args,t,r),h=jtt(s.subshell,t,c);f=ope(h,p,t,c)}break;case"group":{let p=await lm(s.args,t,r),h=Gtt(s.group,t,c);f=ope(h,p,t,c)}break;case"envs":{let p=await spe(s.envs,t,r);c.environment={...c.environment,...p},f=av(["true"],t,c)}break}if(typeof f>"u")throw new Error("Assertion failed: An action should have been generated");if(a===null)n=PR(f,{stdin:new Mc(c.stdin),stdout:new Mc(c.stdout),stderr:new Mc(c.stderr)});else{if(n===null)throw new Error("Assertion failed: The execution pipeline should have been setup");switch(a){case"|":n=n.pipeTo(f,1);break;case"|&":n=n.pipeTo(f,3);break}}s.then?(a=s.then.type,s=s.then.chain):s=null}if(n===null)throw new Error("Assertion failed: The execution pipeline should have been setup");return await n.run()}async function qtt(e,t,r,{background:s=!1}={}){function a(n){let c=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],f=c[n%c.length];return lpe.default.hex(f)}if(s){let n=r.nextBackgroundJobIndex++,c=a(n),f=`[${n}]`,p=c(f),{stdout:h,stderr:E}=npe(r,{prefix:p});return r.backgroundJobs.push(ape(e,t,kR(r,{stdout:h,stderr:E})).catch(C=>E.write(`${C.message} +`)).finally(()=>{r.stdout.isTTY&&r.stdout.write(`Job ${p}, '${c(dE(e))}' has ended +`)})),0}return await ape(e,t,r)}async function Wtt(e,t,r,{background:s=!1}={}){let a,n=f=>{a=f,r.variables["?"]=String(f)},c=async f=>{try{return await qtt(f.chain,t,r,{background:s&&typeof f.then>"u"})}catch(p){if(!(p instanceof $l))throw p;return r.stderr.write(`${p.message} +`),1}};for(n(await c(e));e.then;){if(r.exitCode!==null)return r.exitCode;switch(e.then.type){case"&&":a===0&&n(await c(e.then.line));break;case"||":a!==0&&n(await c(e.then.line));break;default:throw new Error(`Assertion failed: Unsupported command type: "${e.then.type}"`)}e=e.then.line}return a}async function QR(e,t,r){let s=r.backgroundJobs;r.backgroundJobs=[];let a=0;for(let{command:n,type:c}of e){if(a=await Wtt(n,t,r,{background:c==="&"}),r.exitCode!==null)return r.exitCode;r.variables["?"]=String(a)}return await Promise.all(r.backgroundJobs),r.backgroundJobs=s,a}function Ape(e){switch(e.type){case"variable":return e.name==="@"||e.name==="#"||e.name==="*"||Number.isFinite(parseInt(e.name,10))||"defaultValue"in e&&!!e.defaultValue&&e.defaultValue.some(t=>lv(t))||"alternativeValue"in e&&!!e.alternativeValue&&e.alternativeValue.some(t=>lv(t));case"arithmetic":return xj(e.arithmetic);case"shell":return kj(e.shell);default:return!1}}function lv(e){switch(e.type){case"redirection":return e.args.some(t=>lv(t));case"argument":return e.segments.some(t=>Ape(t));default:throw new Error(`Assertion failed: Unsupported argument type: "${e.type}"`)}}function xj(e){switch(e.type){case"variable":return Ape(e);case"number":return!1;default:return xj(e.left)||xj(e.right)}}function kj(e){return e.some(({command:t})=>{for(;t;){let r=t.chain;for(;r;){let s;switch(r.type){case"subshell":s=kj(r.subshell);break;case"command":s=r.envs.some(a=>a.args.some(n=>lv(n)))||r.args.some(a=>lv(a));break}if(s)return!0;if(!r.then)break;r=r.then.chain}if(!t.then)break;t=t.then.line}return!1})}async function bI(e,t=[],{baseFs:r=new Vn,builtins:s={},cwd:a=fe.toPortablePath(process.cwd()),env:n=process.env,stdin:c=process.stdin,stdout:f=process.stdout,stderr:p=process.stderr,variables:h={},glob:E=bR}={}){let C={};for(let[I,T]of Object.entries(n))typeof T<"u"&&(C[I]=T);let S=new Map(Utt);for(let[I,T]of Object.entries(s))S.set(I,T);c===null&&(c=new ec.PassThrough,c.end());let x=ux(e,E);if(!kj(x)&&x.length>0&&t.length>0){let{command:I}=x[x.length-1];for(;I.then;)I=I.then.line;let T=I.chain;for(;T.then;)T=T.then.chain;T.type==="command"&&(T.args=T.args.concat(t.map(O=>({type:"argument",segments:[{type:"text",text:O}]}))))}return await QR(x,{args:t,baseFs:r,builtins:S,initialStdin:c,initialStdout:f,initialStderr:p,glob:E},{cwd:a,environment:C,exitCode:null,procedures:{},stdin:c,stdout:f,stderr:p,variables:Object.assign({},h,{"?":0}),nextBackgroundJobIndex:1,backgroundJobs:[]})}var lpe,cpe,ec,upe,Utt,Htt,sv=Xe(()=>{Dt();vc();lpe=et(NE()),cpe=Ie("os"),ec=Ie("stream"),upe=Ie("timers/promises");YAe();VAe();XAe();Pj();Pj();Utt=new Map([["cd",async([e=(0,cpe.homedir)(),...t],r,s)=>{let a=J.resolve(s.cwd,fe.toPortablePath(e));if(!(await r.baseFs.statPromise(a).catch(c=>{throw c.code==="ENOENT"?new $l(`cd: no such file or directory: ${e}`):c})).isDirectory())throw new $l(`cd: not a directory: ${e}`);return s.cwd=a,0}],["pwd",async(e,t,r)=>(r.stdout.write(`${fe.fromPortablePath(r.cwd)} +`),0)],[":",async(e,t,r)=>0],["true",async(e,t,r)=>0],["false",async(e,t,r)=>1],["exit",async([e,...t],r,s)=>s.exitCode=parseInt(e??s.variables["?"],10)],["echo",async(e,t,r)=>(r.stdout.write(`${e.join(" ")} +`),0)],["sleep",async([e],t,r)=>{if(typeof e>"u")throw new $l("sleep: missing operand");let s=Number(e);if(Number.isNaN(s))throw new $l(`sleep: invalid time interval '${e}'`);return await(0,upe.setTimeout)(1e3*s,0)}],["unset",async(e,t,r)=>{for(let s of e)delete r.environment[s],delete r.variables[s];return 0}],["__ysh_run_procedure",async(e,t,r)=>{let s=r.procedures[e[0]];return await PR(s,{stdin:new Mc(r.stdin),stdout:new Mc(r.stdout),stderr:new Mc(r.stderr)}).run()}],["__ysh_set_redirects",async(e,t,r)=>{let s=r.stdin,a=r.stdout,n=r.stderr,c=[],f=[],p=[],h=0;for(;e[h]!=="--";){let C=e[h++],{type:S,fd:x}=JSON.parse(C),I=V=>{switch(x){case null:case 0:c.push(V);break;default:throw new Error(`Unsupported file descriptor: "${x}"`)}},T=V=>{switch(x){case null:case 1:f.push(V);break;case 2:p.push(V);break;default:throw new Error(`Unsupported file descriptor: "${x}"`)}},O=Number(e[h++]),U=h+O;for(let V=h;Vt.baseFs.createReadStream(J.resolve(r.cwd,fe.toPortablePath(e[V]))));break;case"<<<":I(()=>{let te=new ec.PassThrough;return process.nextTick(()=>{te.write(`${e[V]} +`),te.end()}),te});break;case"<&":I(()=>ipe(Number(e[V]),1,r));break;case">":case">>":{let te=J.resolve(r.cwd,fe.toPortablePath(e[V]));T(te==="/dev/null"?new ec.Writable({autoDestroy:!0,emitClose:!0,write(ie,ue,ae){setImmediate(ae)}}):t.baseFs.createWriteStream(te,S===">>"?{flags:"a"}:void 0))}break;case">&":T(ipe(Number(e[V]),2,r));break;default:throw new Error(`Assertion failed: Unsupported redirection type: "${S}"`)}}if(c.length>0){let C=new ec.PassThrough;s=C;let S=x=>{if(x===c.length)C.end();else{let I=c[x]();I.pipe(C,{end:!1}),I.on("end",()=>{S(x+1)})}};S(0)}if(f.length>0){let C=new ec.PassThrough;a=C;for(let S of f)C.pipe(S)}if(p.length>0){let C=new ec.PassThrough;n=C;for(let S of p)C.pipe(S)}let E=await PR(av(e.slice(h+1),t,r),{stdin:new Mc(s),stdout:new Mc(a),stderr:new Mc(n)}).run();return await Promise.all(f.map(C=>new Promise((S,x)=>{C.on("error",I=>{x(I)}),C.on("close",()=>{S()}),C.end()}))),await Promise.all(p.map(C=>new Promise((S,x)=>{C.on("error",I=>{x(I)}),C.on("close",()=>{S()}),C.end()}))),E}]]);Htt={addition:(e,t)=>e+t,subtraction:(e,t)=>e-t,multiplication:(e,t)=>e*t,division:(e,t)=>Math.trunc(e/t)}});var ppe=G((HMt,RR)=>{function Ytt(){var e=0,t=1,r=2,s=3,a=4,n=5,c=6,f=7,p=8,h=9,E=10,C=11,S=12,x=13,I=14,T=15,O=16,U=17,V=0,te=1,ie=2,ue=3,ae=4;function ge(d,Se){return 55296<=d.charCodeAt(Se)&&d.charCodeAt(Se)<=56319&&56320<=d.charCodeAt(Se+1)&&d.charCodeAt(Se+1)<=57343}function Ae(d,Se){Se===void 0&&(Se=0);var Be=d.charCodeAt(Se);if(55296<=Be&&Be<=56319&&Se=1){var me=d.charCodeAt(Se-1),ce=Be;return 55296<=me&&me<=56319?(me-55296)*1024+(ce-56320)+65536:ce}return Be}function Ce(d,Se,Be){var me=[d].concat(Se).concat([Be]),ce=me[me.length-2],Z=Be,De=me.lastIndexOf(I);if(De>1&&me.slice(1,De).every(function(_){return _==s})&&[s,x,U].indexOf(d)==-1)return ie;var Qe=me.lastIndexOf(a);if(Qe>0&&me.slice(1,Qe).every(function(_){return _==a})&&[S,a].indexOf(ce)==-1)return me.filter(function(_){return _==a}).length%2==1?ue:ae;if(ce==e&&Z==t)return V;if(ce==r||ce==e||ce==t)return Z==I&&Se.every(function(_){return _==s})?ie:te;if(Z==r||Z==e||Z==t)return te;if(ce==c&&(Z==c||Z==f||Z==h||Z==E))return V;if((ce==h||ce==f)&&(Z==f||Z==p))return V;if((ce==E||ce==p)&&Z==p)return V;if(Z==s||Z==T)return V;if(Z==n)return V;if(ce==S)return V;var st=me.indexOf(s)!=-1?me.lastIndexOf(s)-1:me.length-2;return[x,U].indexOf(me[st])!=-1&&me.slice(st+1,-1).every(function(_){return _==s})&&Z==I||ce==T&&[O,U].indexOf(Z)!=-1?V:Se.indexOf(a)!=-1?ie:ce==a&&Z==a?V:te}this.nextBreak=function(d,Se){if(Se===void 0&&(Se=0),Se<0)return 0;if(Se>=d.length-1)return d.length;for(var Be=Ee(Ae(d,Se)),me=[],ce=Se+1;ce{var Vtt=/^(.*?)(\x1b\[[^m]+m|\x1b\]8;;.*?(\x1b\\|\u0007))/,TR;function Jtt(){if(TR)return TR;if(typeof Intl.Segmenter<"u"){let e=new Intl.Segmenter("en",{granularity:"grapheme"});return TR=t=>Array.from(e.segment(t),({segment:r})=>r)}else{let e=ppe(),t=new e;return TR=r=>t.splitGraphemes(r)}}hpe.exports=(e,t=0,r=e.length)=>{if(t<0||r<0)throw new RangeError("Negative indices aren't supported by this implementation");let s=r-t,a="",n=0,c=0;for(;e.length>0;){let f=e.match(Vtt)||[e,e,void 0],p=Jtt()(f[1]),h=Math.min(t-n,p.length);p=p.slice(h);let E=Math.min(s-c,p.length);a+=p.slice(0,E).join(""),n+=h,c+=E,typeof f[2]<"u"&&(a+=f[2]),e=e.slice(f[0].length)}return a}});var An,uv=Xe(()=>{An=process.env.YARN_IS_TEST_ENV?"0.0.0":"4.14.1"});function Cpe(e,{configuration:t,json:r}){if(!t.get("enableMessageNames"))return"";let a=Kf(e===null?0:e);return!r&&e===null?jt(t,a,"grey"):a}function Qj(e,{configuration:t,json:r}){let s=Cpe(e,{configuration:t,json:r});if(!s||e===null||e===0)return s;let a=Ir[e],n=`https://yarnpkg.com/advanced/error-codes#${s}---${a}`.toLowerCase();return ZE(t,s,n)}async function PI({configuration:e,stdout:t,forceError:r},s){let a=await Ot.start({configuration:e,stdout:t,includeFooter:!1},async n=>{let c=!1,f=!1;for(let p of s)typeof p.option<"u"&&(p.error||r?(f=!0,n.reportError(50,p.message)):(c=!0,n.reportWarning(50,p.message)),p.callback?.());c&&!f&&n.reportSeparator()});return a.hasErrors()?a.exitCode():null}var Epe,FR,Ktt,gpe,mpe,S0,Ipe,ype,ztt,Xtt,NR,Ztt,Ot,fv=Xe(()=>{Epe=et(dpe()),FR=et(Rg());Gx();Fc();uv();Qc();Ktt="\xB7",gpe=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],mpe=80,S0=FR.default.GITHUB_ACTIONS?{start:e=>`::group::${e} +`,end:e=>`::endgroup:: +`}:FR.default.TRAVIS?{start:e=>`travis_fold:start:${e} +`,end:e=>`travis_fold:end:${e} +`}:FR.default.GITLAB?{start:e=>`section_start:${Math.floor(Date.now()/1e3)}:${e.toLowerCase().replace(/\W+/g,"_")}[collapsed=true]\r\x1B[0K${e} +`,end:e=>`section_end:${Math.floor(Date.now()/1e3)}:${e.toLowerCase().replace(/\W+/g,"_")}\r\x1B[0K`}:null,Ipe=S0!==null,ype=new Date,ztt=["iTerm.app","Apple_Terminal","WarpTerminal","vscode"].includes(process.env.TERM_PROGRAM)||!!process.env.WT_SESSION,Xtt=e=>e,NR=Xtt({patrick:{date:[17,3],chars:["\u{1F340}","\u{1F331}"],size:40},simba:{date:[19,7],chars:["\u{1F981}","\u{1F334}"],size:40},jack:{date:[31,10],chars:["\u{1F383}","\u{1F987}"],size:40},hogsfather:{date:[31,12],chars:["\u{1F389}","\u{1F384}"],size:40},default:{chars:["=","-"],size:80}}),Ztt=ztt&&Object.keys(NR).find(e=>{let t=NR[e];return!(t.date&&(t.date[0]!==ype.getDate()||t.date[1]!==ype.getMonth()+1))})||"default";Ot=class extends yo{constructor({configuration:r,stdout:s,json:a=!1,forceSectionAlignment:n=!1,includeNames:c=!0,includePrefix:f=!0,includeFooter:p=!0,includeLogs:h=!a,includeInfos:E=h,includeWarnings:C=h}){super();this.uncommitted=new Set;this.warningCount=0;this.errorCount=0;this.timerFooter=[];this.startTime=Date.now();this.indent=0;this.level=0;this.progress=new Map;this.progressTime=0;this.progressFrame=0;this.progressTimeout=null;this.progressStyle=null;this.progressMaxScaledSize=null;if(SB(this,{configuration:r}),this.configuration=r,this.forceSectionAlignment=n,this.includeNames=c,this.includePrefix=f,this.includeFooter=p,this.includeInfos=E,this.includeWarnings=C,this.json=a,this.stdout=s,r.get("enableProgressBars")&&!a&&s.isTTY&&s.columns>22){let S=r.get("progressBarStyle")||Ztt;if(!Object.hasOwn(NR,S))throw new Error("Assertion failed: Invalid progress bar style");this.progressStyle=NR[S];let x=Math.min(this.getRecommendedLength(),80);this.progressMaxScaledSize=Math.floor(this.progressStyle.size*x/80)}}static async start(r,s){let a=new this(r),n=process.emitWarning;process.emitWarning=(c,f)=>{if(typeof c!="string"){let h=c;c=h.message,f=f??h.name}let p=typeof f<"u"?`${f}: ${c}`:c;a.reportWarning(0,p)},r.includeVersion&&a.reportInfo(0,Jg(r.configuration,`Yarn ${An}`,2));try{await s(a)}catch(c){a.reportExceptionOnce(c)}finally{await a.finalize(),process.emitWarning=n}return a}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}getRecommendedLength(){let s=this.progressStyle!==null?this.stdout.columns-1:super.getRecommendedLength();return Math.max(40,s-12-this.indent*2)}startSectionSync({reportHeader:r,reportFooter:s,skipIfEmpty:a},n){let c={committed:!1,action:()=>{r?.()}};a?this.uncommitted.add(c):(c.action(),c.committed=!0);let f=Date.now();try{return n()}catch(p){throw this.reportExceptionOnce(p),p}finally{let p=Date.now();this.uncommitted.delete(c),c.committed&&s?.(p-f)}}async startSectionPromise({reportHeader:r,reportFooter:s,skipIfEmpty:a},n){let c={committed:!1,action:()=>{r?.()}};a?this.uncommitted.add(c):(c.action(),c.committed=!0);let f=Date.now();try{return await n()}catch(p){throw this.reportExceptionOnce(p),p}finally{let p=Date.now();this.uncommitted.delete(c),c.committed&&s?.(p-f)}}startTimerImpl(r,s,a){return{cb:typeof s=="function"?s:a,reportHeader:()=>{this.level+=1,this.reportInfo(null,`\u250C ${r}`),this.indent+=1,S0!==null&&!this.json&&this.includeInfos&&this.stdout.write(S0.start(r))},reportFooter:f=>{if(this.indent-=1,S0!==null&&!this.json&&this.includeInfos){this.stdout.write(S0.end(r));for(let p of this.timerFooter)p()}this.configuration.get("enableTimers")&&f>200?this.reportInfo(null,`\u2514 Completed in ${jt(this.configuration,f,dt.DURATION)}`):this.reportInfo(null,"\u2514 Completed"),this.level-=1},skipIfEmpty:(typeof s=="function"?{}:s).skipIfEmpty}}startTimerSync(r,s,a){let{cb:n,...c}=this.startTimerImpl(r,s,a);return this.startSectionSync(c,n)}async startTimerPromise(r,s,a){let{cb:n,...c}=this.startTimerImpl(r,s,a);return this.startSectionPromise(c,n)}reportSeparator(){this.indent===0?this.writeLine(""):this.reportInfo(null,"")}reportInfo(r,s){if(!this.includeInfos)return;this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:"",c=`${this.formatPrefix(n,"blueBright")}${s}`;this.json?this.reportJson({type:"info",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:s}):this.writeLine(c)}reportWarning(r,s){if(this.warningCount+=1,!this.includeWarnings)return;this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:"";this.json?this.reportJson({type:"warning",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:s}):this.writeLine(`${this.formatPrefix(n,"yellowBright")}${s}`)}reportError(r,s){this.errorCount+=1,this.timerFooter.push(()=>this.reportErrorImpl(r,s)),this.reportErrorImpl(r,s)}reportErrorImpl(r,s){this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:"";this.json?this.reportJson({type:"error",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:s}):this.writeLine(`${this.formatPrefix(n,"redBright")}${s}`,{truncate:!1})}reportFold(r,s){if(!S0)return;let a=`${S0.start(r)}${s}${S0.end(r)}`;this.timerFooter.push(()=>this.stdout.write(a))}reportProgress(r){if(this.progressStyle===null)return{...Promise.resolve(),stop:()=>{}};if(r.hasProgress&&r.hasTitle)throw new Error("Unimplemented: Progress bars can't have both progress and titles.");let s=!1,a=Promise.resolve().then(async()=>{let c={progress:r.hasProgress?0:void 0,title:r.hasTitle?"":void 0};this.progress.set(r,{definition:c,lastScaledSize:r.hasProgress?-1:void 0,lastTitle:void 0}),this.refreshProgress({delta:-1});for await(let{progress:f,title:p}of r)s||c.progress===f&&c.title===p||(c.progress=f,c.title=p,this.refreshProgress());n()}),n=()=>{s||(s=!0,this.progress.delete(r),this.refreshProgress({delta:1}))};return{...a,stop:n}}reportJson(r){this.json&&this.writeLine(`${JSON.stringify(r)}`)}async finalize(){if(!this.includeFooter)return;let r="";this.errorCount>0?r="Failed with errors":this.warningCount>0?r="Done with warnings":r="Done";let s=jt(this.configuration,Date.now()-this.startTime,dt.DURATION),a=this.configuration.get("enableTimers")?`${r} in ${s}`:r;this.errorCount>0?this.reportError(0,a):this.warningCount>0?this.reportWarning(0,a):this.reportInfo(0,a)}writeLine(r,{truncate:s}={}){this.clearProgress({clear:!0}),this.stdout.write(`${this.truncate(r,{truncate:s})} +`),this.writeProgress()}writeLines(r,{truncate:s}={}){this.clearProgress({delta:r.length});for(let a of r)this.stdout.write(`${this.truncate(a,{truncate:s})} +`);this.writeProgress()}commit(){let r=this.uncommitted;this.uncommitted=new Set;for(let s of r)s.committed=!0,s.action()}clearProgress({delta:r=0,clear:s=!1}){this.progressStyle!==null&&this.progress.size+r>0&&(this.stdout.write(`\x1B[${this.progress.size+r}A`),(r>0||s)&&this.stdout.write("\x1B[0J"))}writeProgress(){if(this.progressStyle===null||(this.progressTimeout!==null&&clearTimeout(this.progressTimeout),this.progressTimeout=null,this.progress.size===0))return;let r=Date.now();r-this.progressTime>mpe&&(this.progressFrame=(this.progressFrame+1)%gpe.length,this.progressTime=r);let s=gpe[this.progressFrame];for(let a of this.progress.values()){let n="";if(typeof a.lastScaledSize<"u"){let h=this.progressStyle.chars[0].repeat(a.lastScaledSize),E=this.progressStyle.chars[1].repeat(this.progressMaxScaledSize-a.lastScaledSize);n=` ${h}${E}`}let c=this.formatName(null),f=c?`${c}: `:"",p=a.definition.title?` ${a.definition.title}`:"";this.stdout.write(`${jt(this.configuration,"\u27A4","blueBright")} ${f}${s}${n}${p} +`)}this.progressTimeout=setTimeout(()=>{this.refreshProgress({force:!0})},mpe)}refreshProgress({delta:r=0,force:s=!1}={}){let a=!1,n=!1;if(s||this.progress.size===0)a=!0;else for(let c of this.progress.values()){let f=typeof c.definition.progress<"u"?Math.trunc(this.progressMaxScaledSize*c.definition.progress):void 0,p=c.lastScaledSize;c.lastScaledSize=f;let h=c.lastTitle;if(c.lastTitle=c.definition.title,f!==p||(n=h!==c.definition.title)){a=!0;break}}a&&(this.clearProgress({delta:r,clear:n}),this.writeProgress())}truncate(r,{truncate:s}={}){return this.progressStyle===null&&(s=!1),typeof s>"u"&&(s=this.configuration.get("preferTruncatedLines")),s&&(r=(0,Epe.default)(r,0,this.stdout.columns-1)),r}formatName(r){return this.includeNames?Cpe(r,{configuration:this.configuration,json:this.json}):""}formatPrefix(r,s){return this.includePrefix?`${jt(this.configuration,"\u27A4",s)} ${r}${this.formatIndent()}`:""}formatNameWithHyperlink(r){return this.includeNames?Qj(r,{configuration:this.configuration,json:this.json}):""}formatIndent(){return this.level>0||!this.forceSectionAlignment?"\u2502 ".repeat(this.indent):`${Ktt} `}}});var Cn={};Vt(Cn,{PackageManager:()=>Bpe,detectPackageManager:()=>vpe,executePackageAccessibleBinary:()=>xpe,executePackageScript:()=>OR,executePackageShellcode:()=>Rj,executeWorkspaceAccessibleBinary:()=>srt,executeWorkspaceLifecycleScript:()=>bpe,executeWorkspaceScript:()=>Dpe,getPackageAccessibleBinaries:()=>LR,getWorkspaceAccessibleBinaries:()=>Ppe,hasPackageScript:()=>rrt,hasWorkspaceScript:()=>Tj,isNodeScript:()=>Fj,makeScriptEnv:()=>Av,maybeExecuteWorkspaceLifecycleScript:()=>irt,prepareExternalProject:()=>trt});async function D0(e,t,r,s=[]){if(process.platform==="win32"){let a=`@goto #_undefined_# 2>NUL || @title %COMSPEC% & @setlocal & @"${r}" ${s.map(n=>`"${n.replace('"','""')}"`).join(" ")} %*`;await le.writeFilePromise(J.format({dir:e,name:t,ext:".cmd"}),a)}await le.writeFilePromise(J.join(e,t),`#!/bin/sh +exec "${r}" ${s.map(a=>`'${a.replace(/'/g,`'"'"'`)}'`).join(" ")} "$@" +`,{mode:493})}async function vpe(e){let t=await _t.tryFind(e);if(t?.packageManager){let s=PQ(t.packageManager);if(s?.name){let a=`found ${JSON.stringify({packageManager:t.packageManager})} in manifest`,[n]=s.reference.split(".");switch(s.name){case"yarn":return{packageManagerField:!0,packageManager:Number(n)===1?"Yarn Classic":"Yarn",reason:a};case"npm":return{packageManagerField:!0,packageManager:"npm",reason:a};case"pnpm":return{packageManagerField:!0,packageManager:"pnpm",reason:a}}}}let r;try{r=await le.readFilePromise(J.join(e,Er.lockfile),"utf8")}catch{}return r!==void 0?r.match(/^__metadata:$/m)?{packageManager:"Yarn",reason:'"__metadata" key found in yarn.lock'}:{packageManager:"Yarn Classic",reason:'"__metadata" key not found in yarn.lock, must be a Yarn classic lockfile'}:le.existsSync(J.join(e,"package-lock.json"))?{packageManager:"npm",reason:`found npm's "package-lock.json" lockfile`}:le.existsSync(J.join(e,"pnpm-lock.yaml"))?{packageManager:"pnpm",reason:`found pnpm's "pnpm-lock.yaml" lockfile`}:null}async function Av({project:e,locator:t,binFolder:r,ignoreCorepack:s,lifecycleScript:a,baseEnv:n=e?.configuration.env??process.env}){let c={};for(let[E,C]of Object.entries(n))typeof C<"u"&&(c[E.toLowerCase()!=="path"?E:"PATH"]=C);let f=fe.fromPortablePath(r);c.BERRY_BIN_FOLDER=fe.fromPortablePath(f);let p=process.env.COREPACK_ROOT&&!s?fe.join(process.env.COREPACK_ROOT,"dist/yarn.js"):process.argv[1];if(await Promise.all([D0(r,"node",process.execPath),...An!==null?[D0(r,"run",process.execPath,[p,"run"]),D0(r,"yarn",process.execPath,[p]),D0(r,"yarnpkg",process.execPath,[p]),D0(r,"node-gyp",process.execPath,[p,"run","--top-level","node-gyp"])]:[]]),e&&(c.INIT_CWD=fe.fromPortablePath(e.configuration.startingCwd),c.PROJECT_CWD=fe.fromPortablePath(e.cwd)),c.PATH=c.PATH?`${f}${fe.delimiter}${c.PATH}`:`${f}`,c.npm_execpath=`${f}${fe.sep}yarn`,c.npm_node_execpath=`${f}${fe.sep}node`,t){if(!e)throw new Error("Assertion failed: Missing project");let E=e.tryWorkspaceByLocator(t),C=E?E.manifest.version??"":e.storedPackages.get(t.locatorHash).version??"";c.npm_package_name=fn(t),c.npm_package_version=C;let S;if(E)S=E.cwd;else{let x=e.storedPackages.get(t.locatorHash);if(!x)throw new Error(`Package for ${Yr(e.configuration,t)} not found in the project`);let I=e.configuration.getLinkers(),T={project:e,report:new Ot({stdout:new b0.PassThrough,configuration:e.configuration})},O=I.find(U=>U.supportsPackage(x,T));if(!O)throw new Error(`The package ${Yr(e.configuration,x)} isn't supported by any of the available linkers`);S=await O.findPackageLocation(x,T)}c.npm_package_json=fe.fromPortablePath(J.join(S,Er.manifest))}let h=An!==null?`yarn/${An}`:`yarn/${kp("@yarnpkg/core").version}-core`;return c.npm_config_user_agent=`${h} npm/? node/${process.version} ${process.platform} ${process.arch}`,a&&(c.npm_lifecycle_event=a),e&&await e.configuration.triggerHook(E=>E.setupScriptEnvironment,e,c,async(E,C,S)=>await D0(r,E,C,S)),c}async function trt(e,t,{configuration:r,report:s,workspace:a=null,locator:n=null}){await ert(async()=>{await le.mktempPromise(async c=>{let f=J.join(c,"pack.log"),p=null,{stdout:h,stderr:E}=r.getSubprocessStreams(f,{prefix:fe.fromPortablePath(e),report:s}),C=n&&Hu(n)?sI(n):n,S=C?ml(C):"an external project";h.write(`Packing ${S} from sources +`);let x=await vpe(e),I;x!==null?(h.write(`Using ${x.packageManager} for bootstrap. Reason: ${x.reason} + +`),I=x.packageManager):(h.write(`No package manager configuration detected; defaulting to Yarn + +`),I="Yarn");let T=I==="Yarn"&&!x?.packageManagerField;await le.mktempPromise(async O=>{let U=await Av({binFolder:O,ignoreCorepack:T,baseEnv:{...process.env,COREPACK_ENABLE_AUTO_PIN:"0"}}),te=new Map([["Yarn Classic",async()=>{let ue=a!==null?["workspace",a]:[],ae=J.join(e,Er.manifest),ge=await le.readFilePromise(ae),Ae=await Gu(process.execPath,[process.argv[1],"set","version","classic","--only-if-needed","--yarn-path"],{cwd:e,env:U,stdin:p,stdout:h,stderr:E,end:1});if(Ae.code!==0)return Ae.code;await le.writeFilePromise(ae,ge),await le.appendFilePromise(J.join(e,".npmignore"),`/.yarn +`),h.write(` +`),delete U.NODE_ENV;let Ce=await Gu("yarn",["install"],{cwd:e,env:U,stdin:p,stdout:h,stderr:E,end:1});if(Ce.code!==0)return Ce.code;h.write(` +`);let Ee=await Gu("yarn",[...ue,"pack","--filename",fe.fromPortablePath(t)],{cwd:e,env:U,stdin:p,stdout:h,stderr:E});return Ee.code!==0?Ee.code:0}],["Yarn",async()=>{let ue=a!==null?["workspace",a]:[];U.YARN_ENABLE_INLINE_BUILDS="1";let ae=J.join(e,Er.lockfile);await le.existsPromise(ae)||await le.writeFilePromise(ae,"");let ge=await Gu("yarn",[...ue,"pack","--install-if-needed","--filename",fe.fromPortablePath(t)],{cwd:e,env:U,stdin:p,stdout:h,stderr:E});return ge.code!==0?ge.code:0}],["npm",async()=>{if(a!==null){let Se=new b0.PassThrough,Be=JE(Se);Se.pipe(h,{end:!1});let me=await Gu("npm",["--version"],{cwd:e,env:U,stdin:p,stdout:Se,stderr:E,end:0});if(Se.end(),me.code!==0)return h.end(),E.end(),me.code;let ce=(await Be).toString().trim();if(!tA(ce,">=7.x")){let Z=ka(null,"npm"),De=Mn(Z,ce),Qe=Mn(Z,">=7.x");throw new Error(`Workspaces aren't supported by ${oi(r,De)}; please upgrade to ${oi(r,Qe)} (npm has been detected as the primary package manager for ${jt(r,e,dt.PATH)})`)}}let ue=a!==null?["--workspace",a]:[];delete U.npm_config_user_agent,delete U.npm_config_production,delete U.NPM_CONFIG_PRODUCTION,delete U.NODE_ENV;let ae=await Gu("npm",["install","--legacy-peer-deps"],{cwd:e,env:U,stdin:p,stdout:h,stderr:E,end:1});if(ae.code!==0)return ae.code;let ge=new b0.PassThrough,Ae=JE(ge);ge.pipe(h);let Ce=await Gu("npm",["pack","--silent",...ue],{cwd:e,env:U,stdin:p,stdout:ge,stderr:E});if(Ce.code!==0)return Ce.code;let Ee=(await Ae).toString().trim().replace(/^.*\n/s,""),d=J.resolve(e,fe.toPortablePath(Ee));return await le.renamePromise(d,t),0}]]).get(I);if(typeof te>"u")throw new Error("Assertion failed: Unsupported workflow");let ie=await te();if(!(ie===0||typeof ie>"u"))throw le.detachTemp(c),new Lt(58,`Packing the package failed (exit code ${ie}, logs can be found here: ${jt(r,f,dt.PATH)})`)})})})}async function rrt(e,t,{project:r}){let s=r.tryWorkspaceByLocator(e);if(s!==null)return Tj(s,t);let a=r.storedPackages.get(e.locatorHash);if(!a)throw new Error(`Package for ${Yr(r.configuration,e)} not found in the project`);return await rA.openPromise(async n=>{let c=r.configuration,f=r.configuration.getLinkers(),p={project:r,report:new Ot({stdout:new b0.PassThrough,configuration:c})},h=f.find(x=>x.supportsPackage(a,p));if(!h)throw new Error(`The package ${Yr(r.configuration,a)} isn't supported by any of the available linkers`);let E=await h.findPackageLocation(a,p),C=new bn(E,{baseFs:n});return(await _t.find(vt.dot,{baseFs:C})).scripts.has(t)})}async function OR(e,t,r,{cwd:s,project:a,stdin:n,stdout:c,stderr:f}){return await le.mktempPromise(async p=>{let{manifest:h,env:E,cwd:C}=await Spe(e,{project:a,binFolder:p,cwd:s,lifecycleScript:t}),S=h.scripts.get(t);if(typeof S>"u")return 1;let x=async()=>await bI(S,r,{cwd:C,env:E,stdin:n,stdout:c,stderr:f});return await(await a.configuration.reduceHook(T=>T.wrapScriptExecution,x,a,e,t,{script:S,args:r,cwd:C,env:E,stdin:n,stdout:c,stderr:f}))()})}async function Rj(e,t,r,{cwd:s,project:a,stdin:n,stdout:c,stderr:f}){return await le.mktempPromise(async p=>{let{env:h,cwd:E}=await Spe(e,{project:a,binFolder:p,cwd:s});return await bI(t,r,{cwd:E,env:h,stdin:n,stdout:c,stderr:f})})}async function nrt(e,{binFolder:t,cwd:r,lifecycleScript:s}){let a=await Av({project:e.project,locator:e.anchoredLocator,binFolder:t,lifecycleScript:s});return await Nj(t,await Ppe(e)),typeof r>"u"&&(r=J.dirname(await le.realpathPromise(J.join(e.cwd,"package.json")))),{manifest:e.manifest,binFolder:t,env:a,cwd:r}}async function Spe(e,{project:t,binFolder:r,cwd:s,lifecycleScript:a}){let n=t.tryWorkspaceByLocator(e);if(n!==null)return nrt(n,{binFolder:r,cwd:s,lifecycleScript:a});let c=t.storedPackages.get(e.locatorHash);if(!c)throw new Error(`Package for ${Yr(t.configuration,e)} not found in the project`);return await rA.openPromise(async f=>{let p=t.configuration,h=t.configuration.getLinkers(),E={project:t,report:new Ot({stdout:new b0.PassThrough,configuration:p})},C=h.find(O=>O.supportsPackage(c,E));if(!C)throw new Error(`The package ${Yr(t.configuration,c)} isn't supported by any of the available linkers`);let S=await Av({project:t,locator:e,binFolder:r,lifecycleScript:a});await Nj(r,await LR(e,{project:t}));let x=await C.findPackageLocation(c,E),I=new bn(x,{baseFs:f}),T=await _t.find(vt.dot,{baseFs:I});return typeof s>"u"&&(s=x),{manifest:T,binFolder:r,env:S,cwd:s}})}async function Dpe(e,t,r,{cwd:s,stdin:a,stdout:n,stderr:c}){return await OR(e.anchoredLocator,t,r,{cwd:s,project:e.project,stdin:a,stdout:n,stderr:c})}function Tj(e,t){return e.manifest.scripts.has(t)}async function bpe(e,t,{cwd:r,report:s}){let{configuration:a}=e.project,n=null;await le.mktempPromise(async c=>{let f=J.join(c,`${t}.log`),p=`# This file contains the result of Yarn calling the "${t}" lifecycle script inside a workspace ("${fe.fromPortablePath(e.cwd)}") +`,{stdout:h,stderr:E}=a.getSubprocessStreams(f,{report:s,prefix:Yr(a,e.anchoredLocator),header:p});s.reportInfo(36,`Calling the "${t}" lifecycle script`);let C=await Dpe(e,t,[],{cwd:r,stdin:n,stdout:h,stderr:E});if(h.end(),E.end(),C!==0)throw le.detachTemp(c),new Lt(36,`${EB(t)} script failed (exit code ${jt(a,C,dt.NUMBER)}, logs can be found here: ${jt(a,f,dt.PATH)}); run ${jt(a,`yarn ${t}`,dt.CODE)} to investigate`)})}async function irt(e,t,r){Tj(e,t)&&await bpe(e,t,r)}function Fj(e){let t=J.extname(e);if(t.match(/\.[cm]?[jt]sx?$/))return!0;if(t===".exe"||t===".bin")return!1;let r=Buffer.alloc(4),s;try{s=le.openSync(e,"r")}catch{return!0}try{le.readSync(s,r,0,r.length,0)}finally{le.closeSync(s)}let a=r.readUint32BE();return!(a===3405691582||a===3489328638||a===2135247942||(a&4294901760)===1297743872)}async function LR(e,{project:t}){let r=t.configuration,s=new Map,a=t.storedPackages.get(e.locatorHash);if(!a)throw new Error(`Package for ${Yr(r,e)} not found in the project`);let n=new b0.Writable,c=r.getLinkers(),f={project:t,report:new Ot({configuration:r,stdout:n})},p=new Set([e.locatorHash]);for(let E of a.dependencies.values()){let C=t.storedResolutions.get(E.descriptorHash);if(!C)throw new Error(`Assertion failed: The resolution (${oi(r,E)}) should have been registered`);p.add(C)}let h=await Promise.all(Array.from(p,async E=>{let C=t.storedPackages.get(E);if(!C)throw new Error(`Assertion failed: The package (${E}) should have been registered`);if(C.bin.size===0)return Xl.skip;let S=c.find(I=>I.supportsPackage(C,f));if(!S)return Xl.skip;let x=null;try{x=await S.findPackageLocation(C,f)}catch(I){if(I.code==="LOCATOR_NOT_INSTALLED")return Xl.skip;throw I}return{dependency:C,packageLocation:x}}));for(let E of h){if(E===Xl.skip)continue;let{dependency:C,packageLocation:S}=E;for(let[x,I]of C.bin){let T=J.resolve(S,I);s.set(x,[C,fe.fromPortablePath(T),Fj(T)])}}return s}async function Ppe(e){return await LR(e.anchoredLocator,{project:e.project})}async function Nj(e,t){await Promise.all(Array.from(t,([r,[,s,a]])=>a?D0(e,r,process.execPath,[s]):D0(e,r,s,[])))}async function xpe(e,t,r,{cwd:s,project:a,stdin:n,stdout:c,stderr:f,nodeArgs:p=[],packageAccessibleBinaries:h}){h??=await LR(e,{project:a});let E=h.get(t);if(!E)throw new Error(`Binary not found (${t}) for ${Yr(a.configuration,e)}`);return await le.mktempPromise(async C=>{let[,S]=E,x=await Av({project:a,locator:e,binFolder:C});await Nj(x.BERRY_BIN_FOLDER,h);let I=Fj(fe.toPortablePath(S))?Gu(process.execPath,[...p,S,...r],{cwd:s,env:x,stdin:n,stdout:c,stderr:f}):Gu(S,r,{cwd:s,env:x,stdin:n,stdout:c,stderr:f}),T;try{T=await I}finally{await le.removePromise(x.BERRY_BIN_FOLDER)}return T.code})}async function srt(e,t,r,{cwd:s,stdin:a,stdout:n,stderr:c,packageAccessibleBinaries:f}){return await xpe(e.anchoredLocator,t,r,{project:e.project,cwd:s,stdin:a,stdout:n,stderr:c,packageAccessibleBinaries:f})}var wpe,b0,Bpe,$tt,ert,Oj=Xe(()=>{Dt();Dt();nA();sv();zl();wpe=et(Ng()),b0=Ie("stream");cI();Fc();fv();uv();dR();Qc();kc();Np();Zo();Bpe=(a=>(a.Yarn1="Yarn Classic",a.Yarn2="Yarn",a.Npm="npm",a.Pnpm="pnpm",a))(Bpe||{});$tt=2,ert=(0,wpe.default)($tt)});function ynt(e,t,r){let s=t,a=t?t.next:e.head,n=new _6(r,s,a,e);return n.next===void 0&&(e.tail=n),n.prev===void 0&&(e.head=n),e.length++,n}function Ent(e,t){e.tail=new _6(t,e.tail,void 0,e),e.head||(e.head=e.tail),e.length++}function Int(e,t){e.head=new _6(t,void 0,e.head,e),e.tail||(e.tail=e.head),e.length++}var ohe,Na,pT,R6,ahe,F6,Em,dT,uhe,cT,O0,Fpe,fhe,ym,mhe,Fv,Vu,h6,whe,w6,j6,Phe,G6,wn,ds,q6,Lv,MI,Il,The,Nv,W6,El,V6,ort,art,kpe,lrt,crt,urt,jp,Gp,P0,MR,pv,UR,Qpe,_R,Rpe,qu,xI,Ks,hv,TI,zs,Fa,Xs,Lj,HR,ra,es,Mj,Uj,Tpe,_j,sA,Hj,jR,dv,cm,tc,gv,frt,Art,prt,hrt,lhe,drt,grt,mrt,vm,yrt,M0,Ku,mv,Jn,jj,Vp,Gj,u6,f6,bv,GR,LI,UI,qj,FI,U0,Ju,R0,oA,NI,Wj,Yp,yv,Yj,ZR,um,$R,Im,T6,Ert,hT,che,Irt,Crt,wrt,Brt,vrt,Srt,Drt,N6,Ov,brt,cA,Prt,Npe,xrt,Vj,Cm,qR,Jj,O6,Ahe,krt,Qrt,phe,Rrt,Trt,hhe,Frt,Nrt,Ort,Lrt,Mrt,Urt,_rt,Hrt,dhe,ghe,jrt,eT,Grt,gT,L6,wm,qrt,fm,Kj,Wrt,T0,Yrt,Vrt,Jrt,F0,Krt,zrt,Xrt,zj,Zrt,Am,uT,$rt,ent,tnt,rnt,cn,Ehe,mT,nnt,A6,p6,int,Uc,pm,qp,Xj,Ope,aA,Ev,x0,Lpe,Ci,Wp,k0,Zj,hm,hs,WR,YR,$j,Mpe,Upe,Iv,e6,VR,kI,Q0,JR,dm,KR,zR,_pe,snt,Bm,Pv,ont,Ihe,ant,lnt,yT,Che,cnt,Hpe,M6,ET,U6,unt,fnt,jpe,Ant,Bhe,pnt,Gpe,qpe,Wpe,d6,Ype,Cv,tT,g6,rT,m6,y6,E6,I6,N0,fT,C6,t6,lA,vhe,hnt,dnt,gnt,mnt,_6,Vpe,Jpe,nT,wv,Wu,gm,mm,Bv,r6,Yu,n6,iT,Kpe,B6,v6,sT,oT,zpe,i6,aT,She,s6,IT,H6,Cnt,wnt,Dhe,bhe,Bnt,vnt,uUt,Snt,Dnt,bnt,Pnt,xnt,xhe,knt,Qnt,Rnt,khe,S6,AT,Tnt,Qhe,Fnt,Rhe,Fhe,CT,Nnt,Ont,D6,Nhe,Lnt,Mnt,o6,Xpe,QI,Unt,_nt,Hnt,jnt,Gnt,qnt,Zpe,b6,$pe,P6,_c,x6,k6,lT,ehe,the,Dv,rhe,nhe,a6,L0,Zs,XR,ihe,RI,l6,c6,Q6,xv,kv,Qv,Rv,Wnt,Tv,Ynt,Vnt,Jnt,she,Y6,vv,Ohe,Knt,znt,fUt,Xnt,Znt,$nt,eit,tit,Sv,AUt,rit,Lhe=Xe(()=>{ohe=et(Ie("events"),1),Na=et(Ie("fs"),1),pT=Ie("node:events"),R6=et(Ie("node:stream"),1),ahe=Ie("node:string_decoder"),F6=et(Ie("node:path"),1),Em=et(Ie("node:fs"),1),dT=Ie("path"),uhe=Ie("events"),cT=et(Ie("assert"),1),O0=Ie("buffer"),Fpe=et(Ie("zlib"),1),fhe=et(Ie("zlib"),1),ym=Ie("node:path"),mhe=Ie("node:path"),Fv=et(Ie("fs"),1),Vu=et(Ie("fs"),1),h6=et(Ie("path"),1),whe=Ie("node:path"),w6=et(Ie("path"),1),j6=et(Ie("node:fs"),1),Phe=et(Ie("node:assert"),1),G6=Ie("node:crypto"),wn=et(Ie("node:fs"),1),ds=et(Ie("node:path"),1),q6=et(Ie("fs"),1),Lv=et(Ie("node:fs"),1),MI=et(Ie("node:path"),1),Il=et(Ie("node:fs"),1),The=et(Ie("node:fs/promises"),1),Nv=et(Ie("node:path"),1),W6=Ie("node:path"),El=et(Ie("node:fs"),1),V6=et(Ie("node:path"),1),ort=Object.defineProperty,art=(e,t)=>{for(var r in t)ort(e,r,{get:t[r],enumerable:!0})},kpe=typeof process=="object"&&process?process:{stdout:null,stderr:null},lrt=e=>!!e&&typeof e=="object"&&(e instanceof vm||e instanceof R6.default||crt(e)||urt(e)),crt=e=>!!e&&typeof e=="object"&&e instanceof pT.EventEmitter&&typeof e.pipe=="function"&&e.pipe!==R6.default.Writable.prototype.pipe,urt=e=>!!e&&typeof e=="object"&&e instanceof pT.EventEmitter&&typeof e.write=="function"&&typeof e.end=="function",jp=Symbol("EOF"),Gp=Symbol("maybeEmitEnd"),P0=Symbol("emittedEnd"),MR=Symbol("emittingEnd"),pv=Symbol("emittedError"),UR=Symbol("closed"),Qpe=Symbol("read"),_R=Symbol("flush"),Rpe=Symbol("flushChunk"),qu=Symbol("encoding"),xI=Symbol("decoder"),Ks=Symbol("flowing"),hv=Symbol("paused"),TI=Symbol("resume"),zs=Symbol("buffer"),Fa=Symbol("pipes"),Xs=Symbol("bufferLength"),Lj=Symbol("bufferPush"),HR=Symbol("bufferShift"),ra=Symbol("objectMode"),es=Symbol("destroyed"),Mj=Symbol("error"),Uj=Symbol("emitData"),Tpe=Symbol("emitEnd"),_j=Symbol("emitEnd2"),sA=Symbol("async"),Hj=Symbol("abort"),jR=Symbol("aborted"),dv=Symbol("signal"),cm=Symbol("dataListeners"),tc=Symbol("discarded"),gv=e=>Promise.resolve().then(e),frt=e=>e(),Art=e=>e==="end"||e==="finish"||e==="prefinish",prt=e=>e instanceof ArrayBuffer||!!e&&typeof e=="object"&&e.constructor&&e.constructor.name==="ArrayBuffer"&&e.byteLength>=0,hrt=e=>!Buffer.isBuffer(e)&&ArrayBuffer.isView(e),lhe=class{src;dest;opts;ondrain;constructor(e,t,r){this.src=e,this.dest=t,this.opts=r,this.ondrain=()=>e[TI](),this.dest.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(e){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},drt=class extends lhe{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(e,t,r){super(e,t,r),this.proxyErrors=s=>t.emit("error",s),e.on("error",this.proxyErrors)}},grt=e=>!!e.objectMode,mrt=e=>!e.objectMode&&!!e.encoding&&e.encoding!=="buffer",vm=class extends pT.EventEmitter{[Ks]=!1;[hv]=!1;[Fa]=[];[zs]=[];[ra];[qu];[sA];[xI];[jp]=!1;[P0]=!1;[MR]=!1;[UR]=!1;[pv]=null;[Xs]=0;[es]=!1;[dv];[jR]=!1;[cm]=0;[tc]=!1;writable=!0;readable=!0;constructor(...e){let t=e[0]||{};if(super(),t.objectMode&&typeof t.encoding=="string")throw new TypeError("Encoding and objectMode may not be used together");grt(t)?(this[ra]=!0,this[qu]=null):mrt(t)?(this[qu]=t.encoding,this[ra]=!1):(this[ra]=!1,this[qu]=null),this[sA]=!!t.async,this[xI]=this[qu]?new ahe.StringDecoder(this[qu]):null,t&&t.debugExposeBuffer===!0&&Object.defineProperty(this,"buffer",{get:()=>this[zs]}),t&&t.debugExposePipes===!0&&Object.defineProperty(this,"pipes",{get:()=>this[Fa]});let{signal:r}=t;r&&(this[dv]=r,r.aborted?this[Hj]():r.addEventListener("abort",()=>this[Hj]()))}get bufferLength(){return this[Xs]}get encoding(){return this[qu]}set encoding(e){throw new Error("Encoding must be set at instantiation time")}setEncoding(e){throw new Error("Encoding must be set at instantiation time")}get objectMode(){return this[ra]}set objectMode(e){throw new Error("objectMode must be set at instantiation time")}get async(){return this[sA]}set async(e){this[sA]=this[sA]||!!e}[Hj](){this[jR]=!0,this.emit("abort",this[dv]?.reason),this.destroy(this[dv]?.reason)}get aborted(){return this[jR]}set aborted(e){}write(e,t,r){if(this[jR])return!1;if(this[jp])throw new Error("write after end");if(this[es])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;typeof t=="function"&&(r=t,t="utf8"),t||(t="utf8");let s=this[sA]?gv:frt;if(!this[ra]&&!Buffer.isBuffer(e)){if(hrt(e))e=Buffer.from(e.buffer,e.byteOffset,e.byteLength);else if(prt(e))e=Buffer.from(e);else if(typeof e!="string")throw new Error("Non-contiguous data written to non-objectMode stream")}return this[ra]?(this[Ks]&&this[Xs]!==0&&this[_R](!0),this[Ks]?this.emit("data",e):this[Lj](e),this[Xs]!==0&&this.emit("readable"),r&&s(r),this[Ks]):e.length?(typeof e=="string"&&!(t===this[qu]&&!this[xI]?.lastNeed)&&(e=Buffer.from(e,t)),Buffer.isBuffer(e)&&this[qu]&&(e=this[xI].write(e)),this[Ks]&&this[Xs]!==0&&this[_R](!0),this[Ks]?this.emit("data",e):this[Lj](e),this[Xs]!==0&&this.emit("readable"),r&&s(r),this[Ks]):(this[Xs]!==0&&this.emit("readable"),r&&s(r),this[Ks])}read(e){if(this[es])return null;if(this[tc]=!1,this[Xs]===0||e===0||e&&e>this[Xs])return this[Gp](),null;this[ra]&&(e=null),this[zs].length>1&&!this[ra]&&(this[zs]=[this[qu]?this[zs].join(""):Buffer.concat(this[zs],this[Xs])]);let t=this[Qpe](e||null,this[zs][0]);return this[Gp](),t}[Qpe](e,t){if(this[ra])this[HR]();else{let r=t;e===r.length||e===null?this[HR]():typeof r=="string"?(this[zs][0]=r.slice(e),t=r.slice(0,e),this[Xs]-=e):(this[zs][0]=r.subarray(e),t=r.subarray(0,e),this[Xs]-=e)}return this.emit("data",t),!this[zs].length&&!this[jp]&&this.emit("drain"),t}end(e,t,r){return typeof e=="function"&&(r=e,e=void 0),typeof t=="function"&&(r=t,t="utf8"),e!==void 0&&this.write(e,t),r&&this.once("end",r),this[jp]=!0,this.writable=!1,(this[Ks]||!this[hv])&&this[Gp](),this}[TI](){this[es]||(!this[cm]&&!this[Fa].length&&(this[tc]=!0),this[hv]=!1,this[Ks]=!0,this.emit("resume"),this[zs].length?this[_R]():this[jp]?this[Gp]():this.emit("drain"))}resume(){return this[TI]()}pause(){this[Ks]=!1,this[hv]=!0,this[tc]=!1}get destroyed(){return this[es]}get flowing(){return this[Ks]}get paused(){return this[hv]}[Lj](e){this[ra]?this[Xs]+=1:this[Xs]+=e.length,this[zs].push(e)}[HR](){return this[ra]?this[Xs]-=1:this[Xs]-=this[zs][0].length,this[zs].shift()}[_R](e=!1){do;while(this[Rpe](this[HR]())&&this[zs].length);!e&&!this[zs].length&&!this[jp]&&this.emit("drain")}[Rpe](e){return this.emit("data",e),this[Ks]}pipe(e,t){if(this[es])return e;this[tc]=!1;let r=this[P0];return t=t||{},e===kpe.stdout||e===kpe.stderr?t.end=!1:t.end=t.end!==!1,t.proxyErrors=!!t.proxyErrors,r?t.end&&e.end():(this[Fa].push(t.proxyErrors?new drt(this,e,t):new lhe(this,e,t)),this[sA]?gv(()=>this[TI]()):this[TI]()),e}unpipe(e){let t=this[Fa].find(r=>r.dest===e);t&&(this[Fa].length===1?(this[Ks]&&this[cm]===0&&(this[Ks]=!1),this[Fa]=[]):this[Fa].splice(this[Fa].indexOf(t),1),t.unpipe())}addListener(e,t){return this.on(e,t)}on(e,t){let r=super.on(e,t);if(e==="data")this[tc]=!1,this[cm]++,!this[Fa].length&&!this[Ks]&&this[TI]();else if(e==="readable"&&this[Xs]!==0)super.emit("readable");else if(Art(e)&&this[P0])super.emit(e),this.removeAllListeners(e);else if(e==="error"&&this[pv]){let s=t;this[sA]?gv(()=>s.call(this,this[pv])):s.call(this,this[pv])}return r}removeListener(e,t){return this.off(e,t)}off(e,t){let r=super.off(e,t);return e==="data"&&(this[cm]=this.listeners("data").length,this[cm]===0&&!this[tc]&&!this[Fa].length&&(this[Ks]=!1)),r}removeAllListeners(e){let t=super.removeAllListeners(e);return(e==="data"||e===void 0)&&(this[cm]=0,!this[tc]&&!this[Fa].length&&(this[Ks]=!1)),t}get emittedEnd(){return this[P0]}[Gp](){!this[MR]&&!this[P0]&&!this[es]&&this[zs].length===0&&this[jp]&&(this[MR]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[UR]&&this.emit("close"),this[MR]=!1)}emit(e,...t){let r=t[0];if(e!=="error"&&e!=="close"&&e!==es&&this[es])return!1;if(e==="data")return!this[ra]&&!r?!1:this[sA]?(gv(()=>this[Uj](r)),!0):this[Uj](r);if(e==="end")return this[Tpe]();if(e==="close"){if(this[UR]=!0,!this[P0]&&!this[es])return!1;let a=super.emit("close");return this.removeAllListeners("close"),a}else if(e==="error"){this[pv]=r,super.emit(Mj,r);let a=!this[dv]||this.listeners("error").length?super.emit("error",r):!1;return this[Gp](),a}else if(e==="resume"){let a=super.emit("resume");return this[Gp](),a}else if(e==="finish"||e==="prefinish"){let a=super.emit(e);return this.removeAllListeners(e),a}let s=super.emit(e,...t);return this[Gp](),s}[Uj](e){for(let r of this[Fa])r.dest.write(e)===!1&&this.pause();let t=this[tc]?!1:super.emit("data",e);return this[Gp](),t}[Tpe](){return this[P0]?!1:(this[P0]=!0,this.readable=!1,this[sA]?(gv(()=>this[_j]()),!0):this[_j]())}[_j](){if(this[xI]){let t=this[xI].end();if(t){for(let r of this[Fa])r.dest.write(t);this[tc]||super.emit("data",t)}}for(let t of this[Fa])t.end();let e=super.emit("end");return this.removeAllListeners("end"),e}async collect(){let e=Object.assign([],{dataLength:0});this[ra]||(e.dataLength=0);let t=this.promise();return this.on("data",r=>{e.push(r),this[ra]||(e.dataLength+=r.length)}),await t,e}async concat(){if(this[ra])throw new Error("cannot concat in objectMode");let e=await this.collect();return this[qu]?e.join(""):Buffer.concat(e,e.dataLength)}async promise(){return new Promise((e,t)=>{this.on(es,()=>t(new Error("stream destroyed"))),this.on("error",r=>t(r)),this.on("end",()=>e())})}[Symbol.asyncIterator](){this[tc]=!1;let e=!1,t=async()=>(this.pause(),e=!0,{value:void 0,done:!0});return{next:()=>{if(e)return t();let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[jp])return t();let s,a,n=h=>{this.off("data",c),this.off("end",f),this.off(es,p),t(),a(h)},c=h=>{this.off("error",n),this.off("end",f),this.off(es,p),this.pause(),s({value:h,done:!!this[jp]})},f=()=>{this.off("error",n),this.off("data",c),this.off(es,p),t(),s({done:!0,value:void 0})},p=()=>n(new Error("stream destroyed"));return new Promise((h,E)=>{a=E,s=h,this.once(es,p),this.once("error",n),this.once("end",f),this.once("data",c)})},throw:t,return:t,[Symbol.asyncIterator](){return this}}}[Symbol.iterator](){this[tc]=!1;let e=!1,t=()=>(this.pause(),this.off(Mj,t),this.off(es,t),this.off("end",t),e=!0,{done:!0,value:void 0}),r=()=>{if(e)return t();let s=this.read();return s===null?t():{done:!1,value:s}};return this.once("end",t),this.once(Mj,t),this.once(es,t),{next:r,throw:t,return:t,[Symbol.iterator](){return this}}}destroy(e){if(this[es])return e?this.emit("error",e):this.emit(es),this;this[es]=!0,this[tc]=!0,this[zs].length=0,this[Xs]=0;let t=this;return typeof t.close=="function"&&!this[UR]&&t.close(),e?this.emit("error",e):this.emit(es),this}static get isStream(){return lrt}},yrt=Na.default.writev,M0=Symbol("_autoClose"),Ku=Symbol("_close"),mv=Symbol("_ended"),Jn=Symbol("_fd"),jj=Symbol("_finished"),Vp=Symbol("_flags"),Gj=Symbol("_flush"),u6=Symbol("_handleChunk"),f6=Symbol("_makeBuf"),bv=Symbol("_mode"),GR=Symbol("_needDrain"),LI=Symbol("_onerror"),UI=Symbol("_onopen"),qj=Symbol("_onread"),FI=Symbol("_onwrite"),U0=Symbol("_open"),Ju=Symbol("_path"),R0=Symbol("_pos"),oA=Symbol("_queue"),NI=Symbol("_read"),Wj=Symbol("_readSize"),Yp=Symbol("_reading"),yv=Symbol("_remain"),Yj=Symbol("_size"),ZR=Symbol("_write"),um=Symbol("_writing"),$R=Symbol("_defaultFlag"),Im=Symbol("_errored"),T6=class extends vm{[Im]=!1;[Jn];[Ju];[Wj];[Yp]=!1;[Yj];[yv];[M0];constructor(e,t){if(t=t||{},super(t),this.readable=!0,this.writable=!1,typeof e!="string")throw new TypeError("path must be a string");this[Im]=!1,this[Jn]=typeof t.fd=="number"?t.fd:void 0,this[Ju]=e,this[Wj]=t.readSize||16*1024*1024,this[Yp]=!1,this[Yj]=typeof t.size=="number"?t.size:1/0,this[yv]=this[Yj],this[M0]=typeof t.autoClose=="boolean"?t.autoClose:!0,typeof this[Jn]=="number"?this[NI]():this[U0]()}get fd(){return this[Jn]}get path(){return this[Ju]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[U0](){Na.default.open(this[Ju],"r",(e,t)=>this[UI](e,t))}[UI](e,t){e?this[LI](e):(this[Jn]=t,this.emit("open",t),this[NI]())}[f6](){return Buffer.allocUnsafe(Math.min(this[Wj],this[yv]))}[NI](){if(!this[Yp]){this[Yp]=!0;let e=this[f6]();if(e.length===0)return process.nextTick(()=>this[qj](null,0,e));Na.default.read(this[Jn],e,0,e.length,null,(t,r,s)=>this[qj](t,r,s))}}[qj](e,t,r){this[Yp]=!1,e?this[LI](e):this[u6](t,r)&&this[NI]()}[Ku](){if(this[M0]&&typeof this[Jn]=="number"){let e=this[Jn];this[Jn]=void 0,Na.default.close(e,t=>t?this.emit("error",t):this.emit("close"))}}[LI](e){this[Yp]=!0,this[Ku](),this.emit("error",e)}[u6](e,t){let r=!1;return this[yv]-=e,e>0&&(r=super.write(ethis[UI](e,t))}[UI](e,t){this[$R]&&this[Vp]==="r+"&&e&&e.code==="ENOENT"?(this[Vp]="w",this[U0]()):e?this[LI](e):(this[Jn]=t,this.emit("open",t),this[um]||this[Gj]())}end(e,t){return e&&this.write(e,t),this[mv]=!0,!this[um]&&!this[oA].length&&typeof this[Jn]=="number"&&this[FI](null,0),this}write(e,t){return typeof e=="string"&&(e=Buffer.from(e,t)),this[mv]?(this.emit("error",new Error("write() after end()")),!1):this[Jn]===void 0||this[um]||this[oA].length?(this[oA].push(e),this[GR]=!0,!1):(this[um]=!0,this[ZR](e),!0)}[ZR](e){Na.default.write(this[Jn],e,0,e.length,this[R0],(t,r)=>this[FI](t,r))}[FI](e,t){e?this[LI](e):(this[R0]!==void 0&&typeof t=="number"&&(this[R0]+=t),this[oA].length?this[Gj]():(this[um]=!1,this[mv]&&!this[jj]?(this[jj]=!0,this[Ku](),this.emit("finish")):this[GR]&&(this[GR]=!1,this.emit("drain"))))}[Gj](){if(this[oA].length===0)this[mv]&&this[FI](null,0);else if(this[oA].length===1)this[ZR](this[oA].pop());else{let e=this[oA];this[oA]=[],yrt(this[Jn],e,this[R0],(t,r)=>this[FI](t,r))}}[Ku](){if(this[M0]&&typeof this[Jn]=="number"){let e=this[Jn];this[Jn]=void 0,Na.default.close(e,t=>t?this.emit("error",t):this.emit("close"))}}},che=class extends hT{[U0](){let e;if(this[$R]&&this[Vp]==="r+")try{e=Na.default.openSync(this[Ju],this[Vp],this[bv])}catch(t){if(t?.code==="ENOENT")return this[Vp]="w",this[U0]();throw t}else e=Na.default.openSync(this[Ju],this[Vp],this[bv]);this[UI](null,e)}[Ku](){if(this[M0]&&typeof this[Jn]=="number"){let e=this[Jn];this[Jn]=void 0,Na.default.closeSync(e),this.emit("close")}}[ZR](e){let t=!0;try{this[FI](null,Na.default.writeSync(this[Jn],e,0,e.length,this[R0])),t=!1}finally{if(t)try{this[Ku]()}catch{}}}},Irt=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"],["onentry","onReadEntry"]]),Crt=e=>!!e.sync&&!!e.file,wrt=e=>!e.sync&&!!e.file,Brt=e=>!!e.sync&&!e.file,vrt=e=>!e.sync&&!e.file,Srt=e=>!!e.file,Drt=e=>Irt.get(e)||e,N6=(e={})=>{if(!e)return{};let t={};for(let[r,s]of Object.entries(e)){let a=Drt(r);t[a]=s}return t.chmod===void 0&&t.noChmod===!1&&(t.chmod=!0),delete t.noChmod,t},Ov=(e,t,r,s,a)=>Object.assign((n=[],c,f)=>{Array.isArray(n)&&(c=n,n={}),typeof c=="function"&&(f=c,c=void 0),c?c=Array.from(c):c=[];let p=N6(n);if(a?.(p,c),Crt(p)){if(typeof f=="function")throw new TypeError("callback not supported for sync tar functions");return e(p,c)}else if(wrt(p)){let h=t(p,c),E=f||void 0;return E?h.then(()=>E(),E):h}else if(Brt(p)){if(typeof f=="function")throw new TypeError("callback not supported for sync tar functions");return r(p,c)}else if(vrt(p)){if(typeof f=="function")throw new TypeError("callback only supported with file option");return s(p,c)}else throw new Error("impossible options??")},{syncFile:e,asyncFile:t,syncNoFile:r,asyncNoFile:s,validate:a}),brt=fhe.default.constants||{ZLIB_VERNUM:4736},cA=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:1/0,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},brt)),Prt=O0.Buffer.concat,Npe=Object.getOwnPropertyDescriptor(O0.Buffer,"concat"),xrt=e=>e,Vj=Npe?.writable===!0||Npe?.set!==void 0?e=>{O0.Buffer.concat=e?xrt:Prt}:e=>{},Cm=Symbol("_superWrite"),qR=class extends Error{code;errno;constructor(e,t){super("zlib: "+e.message,{cause:e}),this.code=e.code,this.errno=e.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+e.message,Error.captureStackTrace(this,t??this.constructor)}get name(){return"ZlibError"}},Jj=Symbol("flushFlag"),O6=class extends vm{#e=!1;#t=!1;#s;#r;#i;#n;#o;get sawError(){return this.#e}get handle(){return this.#n}get flushFlag(){return this.#s}constructor(e,t){if(!e||typeof e!="object")throw new TypeError("invalid options for ZlibBase constructor");if(super(e),this.#s=e.flush??0,this.#r=e.finishFlush??0,this.#i=e.fullFlushFlag??0,typeof Fpe[t]!="function")throw new TypeError("Compression method not supported: "+t);try{this.#n=new Fpe[t](e)}catch(r){throw new qR(r,this.constructor)}this.#o=r=>{this.#e||(this.#e=!0,this.close(),this.emit("error",r))},this.#n?.on("error",r=>this.#o(new qR(r))),this.once("end",()=>this.close)}close(){this.#n&&(this.#n.close(),this.#n=void 0,this.emit("close"))}reset(){if(!this.#e)return(0,cT.default)(this.#n,"zlib binding closed"),this.#n.reset?.()}flush(e){this.ended||(typeof e!="number"&&(e=this.#i),this.write(Object.assign(O0.Buffer.alloc(0),{[Jj]:e})))}end(e,t,r){return typeof e=="function"&&(r=e,t=void 0,e=void 0),typeof t=="function"&&(r=t,t=void 0),e&&(t?this.write(e,t):this.write(e)),this.flush(this.#r),this.#t=!0,super.end(r)}get ended(){return this.#t}[Cm](e){return super.write(e)}write(e,t,r){if(typeof t=="function"&&(r=t,t="utf8"),typeof e=="string"&&(e=O0.Buffer.from(e,t)),this.#e)return;(0,cT.default)(this.#n,"zlib binding closed");let s=this.#n._handle,a=s.close;s.close=()=>{};let n=this.#n.close;this.#n.close=()=>{},Vj(!0);let c;try{let p=typeof e[Jj]=="number"?e[Jj]:this.#s;c=this.#n._processChunk(e,p),Vj(!1)}catch(p){Vj(!1),this.#o(new qR(p,this.write))}finally{this.#n&&(this.#n._handle=s,s.close=a,this.#n.close=n,this.#n.removeAllListeners("error"))}this.#n&&this.#n.on("error",p=>this.#o(new qR(p,this.write)));let f;if(c)if(Array.isArray(c)&&c.length>0){let p=c[0];f=this[Cm](O0.Buffer.from(p));for(let h=1;h{typeof s=="function"&&(a=s,s=this.flushFlag),this.flush(s),a?.()};try{this.handle.params(e,t)}finally{this.handle.flush=r}this.handle&&(this.#e=e,this.#t=t)}}}},krt=class extends Ahe{#e;constructor(e){super(e,"Gzip"),this.#e=e&&!!e.portable}[Cm](e){return this.#e?(this.#e=!1,e[9]=255,super[Cm](e)):super[Cm](e)}},Qrt=class extends Ahe{constructor(e){super(e,"Unzip")}},phe=class extends O6{constructor(e,t){e=e||{},e.flush=e.flush||cA.BROTLI_OPERATION_PROCESS,e.finishFlush=e.finishFlush||cA.BROTLI_OPERATION_FINISH,e.fullFlushFlag=cA.BROTLI_OPERATION_FLUSH,super(e,t)}},Rrt=class extends phe{constructor(e){super(e,"BrotliCompress")}},Trt=class extends phe{constructor(e){super(e,"BrotliDecompress")}},hhe=class extends O6{constructor(e,t){e=e||{},e.flush=e.flush||cA.ZSTD_e_continue,e.finishFlush=e.finishFlush||cA.ZSTD_e_end,e.fullFlushFlag=cA.ZSTD_e_flush,super(e,t)}},Frt=class extends hhe{constructor(e){super(e,"ZstdCompress")}},Nrt=class extends hhe{constructor(e){super(e,"ZstdDecompress")}},Ort=(e,t)=>{if(Number.isSafeInteger(e))e<0?Mrt(e,t):Lrt(e,t);else throw Error("cannot encode number outside of javascript safe integer range");return t},Lrt=(e,t)=>{t[0]=128;for(var r=t.length;r>1;r--)t[r-1]=e&255,e=Math.floor(e/256)},Mrt=(e,t)=>{t[0]=255;var r=!1;e=e*-1;for(var s=t.length;s>1;s--){var a=e&255;e=Math.floor(e/256),r?t[s-1]=dhe(a):a===0?t[s-1]=0:(r=!0,t[s-1]=ghe(a))}},Urt=e=>{let t=e[0],r=t===128?Hrt(e.subarray(1,e.length)):t===255?_rt(e):null;if(r===null)throw Error("invalid base256 encoding");if(!Number.isSafeInteger(r))throw Error("parsed number outside of javascript safe integer range");return r},_rt=e=>{for(var t=e.length,r=0,s=!1,a=t-1;a>-1;a--){var n=Number(e[a]),c;s?c=dhe(n):n===0?c=n:(s=!0,c=ghe(n)),c!==0&&(r-=c*Math.pow(256,t-a-1))}return r},Hrt=e=>{for(var t=e.length,r=0,s=t-1;s>-1;s--){var a=Number(e[s]);a!==0&&(r+=a*Math.pow(256,t-s-1))}return r},dhe=e=>(255^e)&255,ghe=e=>(255^e)+1&255,jrt={};art(jrt,{code:()=>L6,isCode:()=>eT,isName:()=>Grt,name:()=>gT});eT=e=>gT.has(e),Grt=e=>L6.has(e),gT=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]),L6=new Map(Array.from(gT).map(e=>[e[1],e[0]])),wm=class{cksumValid=!1;needPax=!1;nullBlock=!1;block;path;mode;uid;gid;size;cksum;#e="Unsupported";linkpath;uname;gname;devmaj=0;devmin=0;atime;ctime;mtime;charset;comment;constructor(e,t=0,r,s){Buffer.isBuffer(e)?this.decode(e,t||0,r,s):e&&this.#t(e)}decode(e,t,r,s){if(t||(t=0),!e||!(e.length>=t+512))throw new Error("need 512 bytes for header");this.path=r?.path??fm(e,t,100),this.mode=r?.mode??s?.mode??T0(e,t+100,8),this.uid=r?.uid??s?.uid??T0(e,t+108,8),this.gid=r?.gid??s?.gid??T0(e,t+116,8),this.size=r?.size??s?.size??T0(e,t+124,12),this.mtime=r?.mtime??s?.mtime??Kj(e,t+136,12),this.cksum=T0(e,t+148,12),s&&this.#t(s,!0),r&&this.#t(r);let a=fm(e,t+156,1);if(eT(a)&&(this.#e=a||"0"),this.#e==="0"&&this.path.slice(-1)==="/"&&(this.#e="5"),this.#e==="5"&&(this.size=0),this.linkpath=fm(e,t+157,100),e.subarray(t+257,t+265).toString()==="ustar\x0000")if(this.uname=r?.uname??s?.uname??fm(e,t+265,32),this.gname=r?.gname??s?.gname??fm(e,t+297,32),this.devmaj=r?.devmaj??s?.devmaj??T0(e,t+329,8)??0,this.devmin=r?.devmin??s?.devmin??T0(e,t+337,8)??0,e[t+475]!==0){let c=fm(e,t+345,155);this.path=c+"/"+this.path}else{let c=fm(e,t+345,130);c&&(this.path=c+"/"+this.path),this.atime=r?.atime??s?.atime??Kj(e,t+476,12),this.ctime=r?.ctime??s?.ctime??Kj(e,t+488,12)}let n=256;for(let c=t;c!(s==null||r==="path"&&t||r==="linkpath"&&t||r==="global"))))}encode(e,t=0){if(e||(e=this.block=Buffer.alloc(512)),this.#e==="Unsupported"&&(this.#e="0"),!(e.length>=t+512))throw new Error("need 512 bytes for header");let r=this.ctime||this.atime?130:155,s=qrt(this.path||"",r),a=s[0],n=s[1];this.needPax=!!s[2],this.needPax=Am(e,t,100,a)||this.needPax,this.needPax=F0(e,t+100,8,this.mode)||this.needPax,this.needPax=F0(e,t+108,8,this.uid)||this.needPax,this.needPax=F0(e,t+116,8,this.gid)||this.needPax,this.needPax=F0(e,t+124,12,this.size)||this.needPax,this.needPax=zj(e,t+136,12,this.mtime)||this.needPax,e[t+156]=this.#e.charCodeAt(0),this.needPax=Am(e,t+157,100,this.linkpath)||this.needPax,e.write("ustar\x0000",t+257,8),this.needPax=Am(e,t+265,32,this.uname)||this.needPax,this.needPax=Am(e,t+297,32,this.gname)||this.needPax,this.needPax=F0(e,t+329,8,this.devmaj)||this.needPax,this.needPax=F0(e,t+337,8,this.devmin)||this.needPax,this.needPax=Am(e,t+345,r,n)||this.needPax,e[t+475]!==0?this.needPax=Am(e,t+345,155,n)||this.needPax:(this.needPax=Am(e,t+345,130,n)||this.needPax,this.needPax=zj(e,t+476,12,this.atime)||this.needPax,this.needPax=zj(e,t+488,12,this.ctime)||this.needPax);let c=256;for(let f=t;f{let r=e,s="",a,n=ym.posix.parse(e).root||".";if(Buffer.byteLength(r)<100)a=[r,s,!1];else{s=ym.posix.dirname(r),r=ym.posix.basename(r);do Buffer.byteLength(r)<=100&&Buffer.byteLength(s)<=t?a=[r,s,!1]:Buffer.byteLength(r)>100&&Buffer.byteLength(s)<=t?a=[r.slice(0,99),s,!0]:(r=ym.posix.join(ym.posix.basename(s),r),s=ym.posix.dirname(s));while(s!==n&&a===void 0);a||(a=[e.slice(0,99),"",!0])}return a},fm=(e,t,r)=>e.subarray(t,t+r).toString("utf8").replace(/\0.*/,""),Kj=(e,t,r)=>Wrt(T0(e,t,r)),Wrt=e=>e===void 0?void 0:new Date(e*1e3),T0=(e,t,r)=>Number(e[t])&128?Urt(e.subarray(t,t+r)):Vrt(e,t,r),Yrt=e=>isNaN(e)?void 0:e,Vrt=(e,t,r)=>Yrt(parseInt(e.subarray(t,t+r).toString("utf8").replace(/\0.*$/,"").trim(),8)),Jrt={12:8589934591,8:2097151},F0=(e,t,r,s)=>s===void 0?!1:s>Jrt[r]||s<0?(Ort(s,e.subarray(t,t+r)),!0):(Krt(e,t,r,s),!1),Krt=(e,t,r,s)=>e.write(zrt(s,r),t,r,"ascii"),zrt=(e,t)=>Xrt(Math.floor(e).toString(8),t),Xrt=(e,t)=>(e.length===t-1?e:new Array(t-e.length-1).join("0")+e+" ")+"\0",zj=(e,t,r,s)=>s===void 0?!1:F0(e,t,r,s.getTime()/1e3),Zrt=new Array(156).join("\0"),Am=(e,t,r,s)=>s===void 0?!1:(e.write(s+Zrt,t,r,"utf8"),s.length!==Buffer.byteLength(s)||s.length>r),uT=class yhe{atime;mtime;ctime;charset;comment;gid;uid;gname;uname;linkpath;dev;ino;nlink;path;size;mode;global;constructor(t,r=!1){this.atime=t.atime,this.charset=t.charset,this.comment=t.comment,this.ctime=t.ctime,this.dev=t.dev,this.gid=t.gid,this.global=r,this.gname=t.gname,this.ino=t.ino,this.linkpath=t.linkpath,this.mtime=t.mtime,this.nlink=t.nlink,this.path=t.path,this.size=t.size,this.uid=t.uid,this.uname=t.uname}encode(){let t=this.encodeBody();if(t==="")return Buffer.allocUnsafe(0);let r=Buffer.byteLength(t),s=512*Math.ceil(1+r/512),a=Buffer.allocUnsafe(s);for(let n=0;n<512;n++)a[n]=0;new wm({path:("PaxHeader/"+(0,mhe.basename)(this.path??"")).slice(0,99),mode:this.mode||420,uid:this.uid,gid:this.gid,size:r,mtime:this.mtime,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime,ctime:this.ctime}).encode(a),a.write(t,512,r,"utf8");for(let n=r+512;n=Math.pow(10,c)&&(c+=1),c+n+a}static parse(t,r,s=!1){return new yhe($rt(ent(t),r),s)}},$rt=(e,t)=>t?Object.assign({},t,e):e,ent=e=>e.replace(/\n$/,"").split(` +`).reduce(tnt,Object.create(null)),tnt=(e,t)=>{let r=parseInt(t,10);if(r!==Buffer.byteLength(t)+1)return e;t=t.slice((r+" ").length);let s=t.split("="),a=s.shift();if(!a)return e;let n=a.replace(/^SCHILY\.(dev|ino|nlink)/,"$1"),c=s.join("=");return e[n]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(n)?new Date(Number(c)*1e3):/^[0-9]+$/.test(c)?+c:c,e},rnt=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,cn=rnt!=="win32"?e=>e:e=>e&&e.replace(/\\/g,"/"),Ehe=class extends vm{extended;globalExtended;header;startBlockSize;blockRemain;remain;type;meta=!1;ignore=!1;path;mode;uid;gid;uname;gname;size=0;mtime;atime;ctime;linkpath;dev;ino;nlink;invalid=!1;absolute;unsupported=!1;constructor(e,t,r){switch(super({}),this.pause(),this.extended=t,this.globalExtended=r,this.header=e,this.remain=e.size??0,this.startBlockSize=512*Math.ceil(this.remain/512),this.blockRemain=this.startBlockSize,this.type=e.type,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=!0;break;default:this.ignore=!0}if(!e.path)throw new Error("no path provided for tar.ReadEntry");this.path=cn(e.path),this.mode=e.mode,this.mode&&(this.mode=this.mode&4095),this.uid=e.uid,this.gid=e.gid,this.uname=e.uname,this.gname=e.gname,this.size=this.remain,this.mtime=e.mtime,this.atime=e.atime,this.ctime=e.ctime,this.linkpath=e.linkpath?cn(e.linkpath):void 0,this.uname=e.uname,this.gname=e.gname,t&&this.#e(t),r&&this.#e(r,!0)}write(e){let t=e.length;if(t>this.blockRemain)throw new Error("writing more to entry than is appropriate");let r=this.remain,s=this.blockRemain;return this.remain=Math.max(0,r-t),this.blockRemain=Math.max(0,s-t),this.ignore?!0:r>=t?super.write(e):super.write(e.subarray(0,r))}#e(e,t=!1){e.path&&(e.path=cn(e.path)),e.linkpath&&(e.linkpath=cn(e.linkpath)),Object.assign(this,Object.fromEntries(Object.entries(e).filter(([r,s])=>!(s==null||r==="path"&&t))))}},mT=(e,t,r,s={})=>{e.file&&(s.file=e.file),e.cwd&&(s.cwd=e.cwd),s.code=r instanceof Error&&r.code||t,s.tarCode=t,!e.strict&&s.recoverable!==!1?(r instanceof Error&&(s=Object.assign(r,s),r=r.message),e.emit("warn",t,r,s)):r instanceof Error?e.emit("error",Object.assign(r,s)):e.emit("error",Object.assign(new Error(`${t}: ${r}`),s))},nnt=1024*1024,A6=Buffer.from([31,139]),p6=Buffer.from([40,181,47,253]),int=Math.max(A6.length,p6.length),Uc=Symbol("state"),pm=Symbol("writeEntry"),qp=Symbol("readEntry"),Xj=Symbol("nextEntry"),Ope=Symbol("processEntry"),aA=Symbol("extendedHeader"),Ev=Symbol("globalExtendedHeader"),x0=Symbol("meta"),Lpe=Symbol("emitMeta"),Ci=Symbol("buffer"),Wp=Symbol("queue"),k0=Symbol("ended"),Zj=Symbol("emittedEnd"),hm=Symbol("emit"),hs=Symbol("unzip"),WR=Symbol("consumeChunk"),YR=Symbol("consumeChunkSub"),$j=Symbol("consumeBody"),Mpe=Symbol("consumeMeta"),Upe=Symbol("consumeHeader"),Iv=Symbol("consuming"),e6=Symbol("bufferConcat"),VR=Symbol("maybeEnd"),kI=Symbol("writing"),Q0=Symbol("aborted"),JR=Symbol("onDone"),dm=Symbol("sawValidEntry"),KR=Symbol("sawNullBlock"),zR=Symbol("sawEOF"),_pe=Symbol("closeStream"),snt=()=>!0,Bm=class extends uhe.EventEmitter{file;strict;maxMetaEntrySize;filter;brotli;zstd;writable=!0;readable=!1;[Wp]=[];[Ci];[qp];[pm];[Uc]="begin";[x0]="";[aA];[Ev];[k0]=!1;[hs];[Q0]=!1;[dm];[KR]=!1;[zR]=!1;[kI]=!1;[Iv]=!1;[Zj]=!1;constructor(e={}){super(),this.file=e.file||"",this.on(JR,()=>{(this[Uc]==="begin"||this[dm]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),e.ondone?this.on(JR,e.ondone):this.on(JR,()=>{this.emit("prefinish"),this.emit("finish"),this.emit("end")}),this.strict=!!e.strict,this.maxMetaEntrySize=e.maxMetaEntrySize||nnt,this.filter=typeof e.filter=="function"?e.filter:snt;let t=e.file&&(e.file.endsWith(".tar.br")||e.file.endsWith(".tbr"));this.brotli=!(e.gzip||e.zstd)&&e.brotli!==void 0?e.brotli:t?void 0:!1;let r=e.file&&(e.file.endsWith(".tar.zst")||e.file.endsWith(".tzst"));this.zstd=!(e.gzip||e.brotli)&&e.zstd!==void 0?e.zstd:r?!0:void 0,this.on("end",()=>this[_pe]()),typeof e.onwarn=="function"&&this.on("warn",e.onwarn),typeof e.onReadEntry=="function"&&this.on("entry",e.onReadEntry)}warn(e,t,r={}){mT(this,e,t,r)}[Upe](e,t){this[dm]===void 0&&(this[dm]=!1);let r;try{r=new wm(e,t,this[aA],this[Ev])}catch(s){return this.warn("TAR_ENTRY_INVALID",s)}if(r.nullBlock)this[KR]?(this[zR]=!0,this[Uc]==="begin"&&(this[Uc]="header"),this[hm]("eof")):(this[KR]=!0,this[hm]("nullBlock"));else if(this[KR]=!1,!r.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:r});else if(!r.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:r});else{let s=r.type;if(/^(Symbolic)?Link$/.test(s)&&!r.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:r});else if(!/^(Symbolic)?Link$/.test(s)&&!/^(Global)?ExtendedHeader$/.test(s)&&r.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:r});else{let a=this[pm]=new Ehe(r,this[aA],this[Ev]);if(!this[dm])if(a.remain){let n=()=>{a.invalid||(this[dm]=!0)};a.on("end",n)}else this[dm]=!0;a.meta?a.size>this.maxMetaEntrySize?(a.ignore=!0,this[hm]("ignoredEntry",a),this[Uc]="ignore",a.resume()):a.size>0&&(this[x0]="",a.on("data",n=>this[x0]+=n),this[Uc]="meta"):(this[aA]=void 0,a.ignore=a.ignore||!this.filter(a.path,a),a.ignore?(this[hm]("ignoredEntry",a),this[Uc]=a.remain?"ignore":"header",a.resume()):(a.remain?this[Uc]="body":(this[Uc]="header",a.end()),this[qp]?this[Wp].push(a):(this[Wp].push(a),this[Xj]())))}}}[_pe](){queueMicrotask(()=>this.emit("close"))}[Ope](e){let t=!0;if(!e)this[qp]=void 0,t=!1;else if(Array.isArray(e)){let[r,...s]=e;this.emit(r,...s)}else this[qp]=e,this.emit("entry",e),e.emittedEnd||(e.on("end",()=>this[Xj]()),t=!1);return t}[Xj](){do;while(this[Ope](this[Wp].shift()));if(!this[Wp].length){let e=this[qp];!e||e.flowing||e.size===e.remain?this[kI]||this.emit("drain"):e.once("drain",()=>this.emit("drain"))}}[$j](e,t){let r=this[pm];if(!r)throw new Error("attempt to consume body without entry??");let s=r.blockRemain??0,a=s>=e.length&&t===0?e:e.subarray(t,t+s);return r.write(a),r.blockRemain||(this[Uc]="header",this[pm]=void 0,r.end()),a.length}[Mpe](e,t){let r=this[pm],s=this[$j](e,t);return!this[pm]&&r&&this[Lpe](r),s}[hm](e,t,r){!this[Wp].length&&!this[qp]?this.emit(e,t,r):this[Wp].push([e,t,r])}[Lpe](e){switch(this[hm]("meta",this[x0]),e.type){case"ExtendedHeader":case"OldExtendedHeader":this[aA]=uT.parse(this[x0],this[aA],!1);break;case"GlobalExtendedHeader":this[Ev]=uT.parse(this[x0],this[Ev],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":{let t=this[aA]??Object.create(null);this[aA]=t,t.path=this[x0].replace(/\0.*/,"");break}case"NextFileHasLongLinkpath":{let t=this[aA]||Object.create(null);this[aA]=t,t.linkpath=this[x0].replace(/\0.*/,"");break}default:throw new Error("unknown meta: "+e.type)}}abort(e){this[Q0]=!0,this.emit("abort",e),this.warn("TAR_ABORT",e,{recoverable:!1})}write(e,t,r){if(typeof t=="function"&&(r=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,typeof t=="string"?t:"utf8")),this[Q0])return r?.(),!1;if((this[hs]===void 0||this.brotli===void 0&&this[hs]===!1)&&e){if(this[Ci]&&(e=Buffer.concat([this[Ci],e]),this[Ci]=void 0),e.lengththis[WR](p)),this[hs].on("error",p=>this.abort(p)),this[hs].on("end",()=>{this[k0]=!0,this[WR]()}),this[kI]=!0;let f=!!this[hs][c?"end":"write"](e);return this[kI]=!1,r?.(),f}}this[kI]=!0,this[hs]?this[hs].write(e):this[WR](e),this[kI]=!1;let s=this[Wp].length?!1:this[qp]?this[qp].flowing:!0;return!s&&!this[Wp].length&&this[qp]?.once("drain",()=>this.emit("drain")),r?.(),s}[e6](e){e&&!this[Q0]&&(this[Ci]=this[Ci]?Buffer.concat([this[Ci],e]):e)}[VR](){if(this[k0]&&!this[Zj]&&!this[Q0]&&!this[Iv]){this[Zj]=!0;let e=this[pm];if(e&&e.blockRemain){let t=this[Ci]?this[Ci].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${e.blockRemain} more bytes, only ${t} available)`,{entry:e}),this[Ci]&&e.write(this[Ci]),e.end()}this[hm](JR)}}[WR](e){if(this[Iv]&&e)this[e6](e);else if(!e&&!this[Ci])this[VR]();else if(e){if(this[Iv]=!0,this[Ci]){this[e6](e);let t=this[Ci];this[Ci]=void 0,this[YR](t)}else this[YR](e);for(;this[Ci]&&this[Ci]?.length>=512&&!this[Q0]&&!this[zR];){let t=this[Ci];this[Ci]=void 0,this[YR](t)}this[Iv]=!1}(!this[Ci]||this[k0])&&this[VR]()}[YR](e){let t=0,r=e.length;for(;t+512<=r&&!this[Q0]&&!this[zR];)switch(this[Uc]){case"begin":case"header":this[Upe](e,t),t+=512;break;case"ignore":case"body":t+=this[$j](e,t);break;case"meta":t+=this[Mpe](e,t);break;default:throw new Error("invalid state: "+this[Uc])}t{let t=e.length-1,r=-1;for(;t>-1&&e.charAt(t)==="/";)r=t,t--;return r===-1?e:e.slice(0,r)},ont=e=>{let t=e.onReadEntry;e.onReadEntry=t?r=>{t(r),r.resume()}:r=>r.resume()},Ihe=(e,t)=>{let r=new Map(t.map(n=>[Pv(n),!0])),s=e.filter,a=(n,c="")=>{let f=c||(0,dT.parse)(n).root||".",p;if(n===f)p=!1;else{let h=r.get(n);h!==void 0?p=h:p=a((0,dT.dirname)(n),f)}return r.set(n,p),p};e.filter=s?(n,c)=>s(n,c)&&a(Pv(n)):n=>a(Pv(n))},ant=e=>{let t=new Bm(e),r=e.file,s;try{s=Em.default.openSync(r,"r");let a=Em.default.fstatSync(s),n=e.maxReadSize||16*1024*1024;if(a.size{let r=new Bm(e),s=e.maxReadSize||16*1024*1024,a=e.file;return new Promise((n,c)=>{r.on("error",c),r.on("end",n),Em.default.stat(a,(f,p)=>{if(f)c(f);else{let h=new T6(a,{readSize:s,size:p.size});h.on("error",c),h.pipe(r)}})})},yT=Ov(ant,lnt,e=>new Bm(e),e=>new Bm(e),(e,t)=>{t?.length&&Ihe(e,t),e.noResume||ont(e)}),Che=(e,t,r)=>(e&=4095,r&&(e=(e|384)&-19),t&&(e&256&&(e|=64),e&32&&(e|=8),e&4&&(e|=1)),e),{isAbsolute:cnt,parse:Hpe}=whe.win32,M6=e=>{let t="",r=Hpe(e);for(;cnt(e)||r.root;){let s=e.charAt(0)==="/"&&e.slice(0,4)!=="//?/"?"/":r.root;e=e.slice(s.length),t+=s,r=Hpe(e)}return[t,e]},ET=["|","<",">","?",":"],U6=ET.map(e=>String.fromCharCode(61440+e.charCodeAt(0))),unt=new Map(ET.map((e,t)=>[e,U6[t]])),fnt=new Map(U6.map((e,t)=>[e,ET[t]])),jpe=e=>ET.reduce((t,r)=>t.split(r).join(unt.get(r)),e),Ant=e=>U6.reduce((t,r)=>t.split(r).join(fnt.get(r)),e),Bhe=(e,t)=>t?(e=cn(e).replace(/^\.(\/|$)/,""),Pv(t)+"/"+e):cn(e),pnt=16*1024*1024,Gpe=Symbol("process"),qpe=Symbol("file"),Wpe=Symbol("directory"),d6=Symbol("symlink"),Ype=Symbol("hardlink"),Cv=Symbol("header"),tT=Symbol("read"),g6=Symbol("lstat"),rT=Symbol("onlstat"),m6=Symbol("onread"),y6=Symbol("onreadlink"),E6=Symbol("openfile"),I6=Symbol("onopenfile"),N0=Symbol("close"),fT=Symbol("mode"),C6=Symbol("awaitDrain"),t6=Symbol("ondrain"),lA=Symbol("prefix"),vhe=class extends vm{path;portable;myuid=process.getuid&&process.getuid()||0;myuser=process.env.USER||"";maxReadSize;linkCache;statCache;preservePaths;cwd;strict;mtime;noPax;noMtime;prefix;fd;blockLen=0;blockRemain=0;buf;pos=0;remain=0;length=0;offset=0;win32;absolute;header;type;linkpath;stat;onWriteEntry;#e=!1;constructor(e,t={}){let r=N6(t);super(),this.path=cn(e),this.portable=!!r.portable,this.maxReadSize=r.maxReadSize||pnt,this.linkCache=r.linkCache||new Map,this.statCache=r.statCache||new Map,this.preservePaths=!!r.preservePaths,this.cwd=cn(r.cwd||process.cwd()),this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.mtime=r.mtime,this.prefix=r.prefix?cn(r.prefix):void 0,this.onWriteEntry=r.onWriteEntry,typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let s=!1;if(!this.preservePaths){let[n,c]=M6(this.path);n&&typeof c=="string"&&(this.path=c,s=n)}this.win32=!!r.win32||process.platform==="win32",this.win32&&(this.path=Ant(this.path.replace(/\\/g,"/")),e=e.replace(/\\/g,"/")),this.absolute=cn(r.absolute||h6.default.resolve(this.cwd,e)),this.path===""&&(this.path="./"),s&&this.warn("TAR_ENTRY_INFO",`stripping ${s} from absolute path`,{entry:this,path:s+this.path});let a=this.statCache.get(this.absolute);a?this[rT](a):this[g6]()}warn(e,t,r={}){return mT(this,e,t,r)}emit(e,...t){return e==="error"&&(this.#e=!0),super.emit(e,...t)}[g6](){Vu.default.lstat(this.absolute,(e,t)=>{if(e)return this.emit("error",e);this[rT](t)})}[rT](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=gnt(e),this.emit("stat",e),this[Gpe]()}[Gpe](){switch(this.type){case"File":return this[qpe]();case"Directory":return this[Wpe]();case"SymbolicLink":return this[d6]();default:return this.end()}}[fT](e){return Che(e,this.type==="Directory",this.portable)}[lA](e){return Bhe(e,this.prefix)}[Cv](){if(!this.stat)throw new Error("cannot write header before stat");this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.onWriteEntry?.(this),this.header=new wm({path:this[lA](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[lA](this.linkpath):this.linkpath,mode:this[fT](this.stat.mode),uid:this.portable?void 0:this.stat.uid,gid:this.portable?void 0:this.stat.gid,size:this.stat.size,mtime:this.noMtime?void 0:this.mtime||this.stat.mtime,type:this.type==="Unsupported"?void 0:this.type,uname:this.portable?void 0:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?void 0:this.stat.atime,ctime:this.portable?void 0:this.stat.ctime}),this.header.encode()&&!this.noPax&&super.write(new uT({atime:this.portable?void 0:this.header.atime,ctime:this.portable?void 0:this.header.ctime,gid:this.portable?void 0:this.header.gid,mtime:this.noMtime?void 0:this.mtime||this.header.mtime,path:this[lA](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[lA](this.linkpath):this.linkpath,size:this.header.size,uid:this.portable?void 0:this.header.uid,uname:this.portable?void 0:this.header.uname,dev:this.portable?void 0:this.stat.dev,ino:this.portable?void 0:this.stat.ino,nlink:this.portable?void 0:this.stat.nlink}).encode());let e=this.header?.block;if(!e)throw new Error("failed to encode header");super.write(e)}[Wpe](){if(!this.stat)throw new Error("cannot create directory entry without stat");this.path.slice(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[Cv](),this.end()}[d6](){Vu.default.readlink(this.absolute,(e,t)=>{if(e)return this.emit("error",e);this[y6](t)})}[y6](e){this.linkpath=cn(e),this[Cv](),this.end()}[Ype](e){if(!this.stat)throw new Error("cannot create link entry without stat");this.type="Link",this.linkpath=cn(h6.default.relative(this.cwd,e)),this.stat.size=0,this[Cv](),this.end()}[qpe](){if(!this.stat)throw new Error("cannot create file entry without stat");if(this.stat.nlink>1){let e=`${this.stat.dev}:${this.stat.ino}`,t=this.linkCache.get(e);if(t?.indexOf(this.cwd)===0)return this[Ype](t);this.linkCache.set(e,this.absolute)}if(this[Cv](),this.stat.size===0)return this.end();this[E6]()}[E6](){Vu.default.open(this.absolute,"r",(e,t)=>{if(e)return this.emit("error",e);this[I6](t)})}[I6](e){if(this.fd=e,this.#e)return this[N0]();if(!this.stat)throw new Error("should stat before calling onopenfile");this.blockLen=512*Math.ceil(this.stat.size/512),this.blockRemain=this.blockLen;let t=Math.min(this.blockLen,this.maxReadSize);this.buf=Buffer.allocUnsafe(t),this.offset=0,this.pos=0,this.remain=this.stat.size,this.length=this.buf.length,this[tT]()}[tT](){let{fd:e,buf:t,offset:r,length:s,pos:a}=this;if(e===void 0||t===void 0)throw new Error("cannot read file without first opening");Vu.default.read(e,t,r,s,a,(n,c)=>{if(n)return this[N0](()=>this.emit("error",n));this[m6](c)})}[N0](e=()=>{}){this.fd!==void 0&&Vu.default.close(this.fd,e)}[m6](e){if(e<=0&&this.remain>0){let r=Object.assign(new Error("encountered unexpected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[N0](()=>this.emit("error",r))}if(e>this.remain){let r=Object.assign(new Error("did not encounter expected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[N0](()=>this.emit("error",r))}if(!this.buf)throw new Error("should have created buffer prior to reading");if(e===this.remain)for(let r=e;rthis[t6]())}[C6](e){this.once("drain",e)}write(e,t,r){if(typeof t=="function"&&(r=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,typeof t=="string"?t:"utf8")),this.blockRemaine?this.emit("error",e):this.end());if(!this.buf)throw new Error("buffer lost somehow in ONDRAIN");this.offset>=this.length&&(this.buf=Buffer.allocUnsafe(Math.min(this.blockRemain,this.buf.length)),this.offset=0),this.length=this.buf.length-this.offset,this[tT]()}},hnt=class extends vhe{sync=!0;[g6](){this[rT](Vu.default.lstatSync(this.absolute))}[d6](){this[y6](Vu.default.readlinkSync(this.absolute))}[E6](){this[I6](Vu.default.openSync(this.absolute,"r"))}[tT](){let e=!0;try{let{fd:t,buf:r,offset:s,length:a,pos:n}=this;if(t===void 0||r===void 0)throw new Error("fd and buf must be set in READ method");let c=Vu.default.readSync(t,r,s,a,n);this[m6](c),e=!1}finally{if(e)try{this[N0](()=>{})}catch{}}}[C6](e){e()}[N0](e=()=>{}){this.fd!==void 0&&Vu.default.closeSync(this.fd),e()}},dnt=class extends vm{blockLen=0;blockRemain=0;buf=0;pos=0;remain=0;length=0;preservePaths;portable;strict;noPax;noMtime;readEntry;type;prefix;path;mode;uid;gid;uname;gname;header;mtime;atime;ctime;linkpath;size;onWriteEntry;warn(e,t,r={}){return mT(this,e,t,r)}constructor(e,t={}){let r=N6(t);super(),this.preservePaths=!!r.preservePaths,this.portable=!!r.portable,this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.onWriteEntry=r.onWriteEntry,this.readEntry=e;let{type:s}=e;if(s==="Unsupported")throw new Error("writing entry that should be ignored");this.type=s,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.prefix=r.prefix,this.path=cn(e.path),this.mode=e.mode!==void 0?this[fT](e.mode):void 0,this.uid=this.portable?void 0:e.uid,this.gid=this.portable?void 0:e.gid,this.uname=this.portable?void 0:e.uname,this.gname=this.portable?void 0:e.gname,this.size=e.size,this.mtime=this.noMtime?void 0:r.mtime||e.mtime,this.atime=this.portable?void 0:e.atime,this.ctime=this.portable?void 0:e.ctime,this.linkpath=e.linkpath!==void 0?cn(e.linkpath):void 0,typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let a=!1;if(!this.preservePaths){let[c,f]=M6(this.path);c&&typeof f=="string"&&(this.path=f,a=c)}this.remain=e.size,this.blockRemain=e.startBlockSize,this.onWriteEntry?.(this),this.header=new wm({path:this[lA](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[lA](this.linkpath):this.linkpath,mode:this.mode,uid:this.portable?void 0:this.uid,gid:this.portable?void 0:this.gid,size:this.size,mtime:this.noMtime?void 0:this.mtime,type:this.type,uname:this.portable?void 0:this.uname,atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime}),a&&this.warn("TAR_ENTRY_INFO",`stripping ${a} from absolute path`,{entry:this,path:a+this.path}),this.header.encode()&&!this.noPax&&super.write(new uT({atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime,gid:this.portable?void 0:this.gid,mtime:this.noMtime?void 0:this.mtime,path:this[lA](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[lA](this.linkpath):this.linkpath,size:this.size,uid:this.portable?void 0:this.uid,uname:this.portable?void 0:this.uname,dev:this.portable?void 0:this.readEntry.dev,ino:this.portable?void 0:this.readEntry.ino,nlink:this.portable?void 0:this.readEntry.nlink}).encode());let n=this.header?.block;if(!n)throw new Error("failed to encode header");super.write(n),e.pipe(this)}[lA](e){return Bhe(e,this.prefix)}[fT](e){return Che(e,this.type==="Directory",this.portable)}write(e,t,r){typeof t=="function"&&(r=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,typeof t=="string"?t:"utf8"));let s=e.length;if(s>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=s,super.write(e,r)}end(e,t,r){return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),typeof e=="function"&&(r=e,t=void 0,e=void 0),typeof t=="function"&&(r=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,t??"utf8")),r&&this.once("finish",r),e?super.end(e,r):super.end(r),this}},gnt=e=>e.isFile()?"File":e.isDirectory()?"Directory":e.isSymbolicLink()?"SymbolicLink":"Unsupported",mnt=class OI{tail;head;length=0;static create(t=[]){return new OI(t)}constructor(t=[]){for(let r of t)this.push(r)}*[Symbol.iterator](){for(let t=this.head;t;t=t.next)yield t.value}removeNode(t){if(t.list!==this)throw new Error("removing node which does not belong to this list");let r=t.next,s=t.prev;return r&&(r.prev=s),s&&(s.next=r),t===this.head&&(this.head=r),t===this.tail&&(this.tail=s),this.length--,t.next=void 0,t.prev=void 0,t.list=void 0,r}unshiftNode(t){if(t===this.head)return;t.list&&t.list.removeNode(t);let r=this.head;t.list=this,t.next=r,r&&(r.prev=t),this.head=t,this.tail||(this.tail=t),this.length++}pushNode(t){if(t===this.tail)return;t.list&&t.list.removeNode(t);let r=this.tail;t.list=this,t.prev=r,r&&(r.next=t),this.tail=t,this.head||(this.head=t),this.length++}push(...t){for(let r=0,s=t.length;r1)s=r;else if(this.head)a=this.head.next,s=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;a;n++)s=t(s,a.value,n),a=a.next;return s}reduceReverse(t,r){let s,a=this.tail;if(arguments.length>1)s=r;else if(this.tail)a=this.tail.prev,s=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(let n=this.length-1;a;n--)s=t(s,a.value,n),a=a.prev;return s}toArray(){let t=new Array(this.length);for(let r=0,s=this.head;s;r++)t[r]=s.value,s=s.next;return t}toArrayReverse(){let t=new Array(this.length);for(let r=0,s=this.tail;s;r++)t[r]=s.value,s=s.prev;return t}slice(t=0,r=this.length){r<0&&(r+=this.length),t<0&&(t+=this.length);let s=new OI;if(rthis.length&&(r=this.length);let a=this.head,n=0;for(n=0;a&&nthis.length&&(r=this.length);let a=this.length,n=this.tail;for(;n&&a>r;a--)n=n.prev;for(;n&&a>t;a--,n=n.prev)s.push(n.value);return s}splice(t,r=0,...s){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);let a=this.head;for(let c=0;a&&c1)throw new TypeError("gzip, brotli, zstd are mutually exclusive");if(e.gzip&&(typeof e.gzip!="object"&&(e.gzip={}),this.portable&&(e.gzip.portable=!0),this.zip=new krt(e.gzip)),e.brotli&&(typeof e.brotli!="object"&&(e.brotli={}),this.zip=new Rrt(e.brotli)),e.zstd&&(typeof e.zstd!="object"&&(e.zstd={}),this.zip=new Frt(e.zstd)),!this.zip)throw new Error("impossible");let t=this.zip;t.on("data",r=>super.write(r)),t.on("end",()=>super.end()),t.on("drain",()=>this[s6]()),this.on("resume",()=>t.resume())}else this.on("drain",this[s6]);this.noDirRecurse=!!e.noDirRecurse,this.follow=!!e.follow,this.noMtime=!!e.noMtime,e.mtime&&(this.mtime=e.mtime),this.filter=typeof e.filter=="function"?e.filter:()=>!0,this[Wu]=new mnt,this[Yu]=0,this.jobs=Number(e.jobs)||4,this[Bv]=!1,this[wv]=!1}[She](e){return super.write(e)}add(e){return this.write(e),this}end(e,t,r){return typeof e=="function"&&(r=e,e=void 0),typeof t=="function"&&(r=t,t=void 0),e&&this.add(e),this[wv]=!0,this[mm](),r&&r(),this}write(e){if(this[wv])throw new Error("write after end");return e instanceof Ehe?this[Kpe](e):this[iT](e),this.flowing}[Kpe](e){let t=cn(w6.default.resolve(this.cwd,e.path));if(!this.filter(e.path,e))e.resume();else{let r=new Vpe(e.path,t);r.entry=new dnt(e,this[i6](r)),r.entry.on("end",()=>this[n6](r)),this[Yu]+=1,this[Wu].push(r)}this[mm]()}[iT](e){let t=cn(w6.default.resolve(this.cwd,e));this[Wu].push(new Vpe(e,t)),this[mm]()}[B6](e){e.pending=!0,this[Yu]+=1;let t=this.follow?"stat":"lstat";Fv.default[t](e.absolute,(r,s)=>{e.pending=!1,this[Yu]-=1,r?this.emit("error",r):this[nT](e,s)})}[nT](e,t){this.statCache.set(e.absolute,t),e.stat=t,this.filter(e.path,t)?t.isFile()&&t.nlink>1&&e===this[gm]&&!this.linkCache.get(`${t.dev}:${t.ino}`)&&!this.sync&&this[r6](e):e.ignore=!0,this[mm]()}[v6](e){e.pending=!0,this[Yu]+=1,Fv.default.readdir(e.absolute,(t,r)=>{if(e.pending=!1,this[Yu]-=1,t)return this.emit("error",t);this[sT](e,r)})}[sT](e,t){this.readdirCache.set(e.absolute,t),e.readdir=t,this[mm]()}[mm](){if(!this[Bv]){this[Bv]=!0;for(let e=this[Wu].head;e&&this[Yu]this.warn(t,r,s),noPax:this.noPax,cwd:this.cwd,absolute:e.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime,prefix:this.prefix,onWriteEntry:this.onWriteEntry}}[zpe](e){this[Yu]+=1;try{return new this[aT](e.path,this[i6](e)).on("end",()=>this[n6](e)).on("error",t=>this.emit("error",t))}catch(t){this.emit("error",t)}}[s6](){this[gm]&&this[gm].entry&&this[gm].entry.resume()}[oT](e){e.piped=!0,e.readdir&&e.readdir.forEach(s=>{let a=e.path,n=a==="./"?"":a.replace(/\/*$/,"/");this[iT](n+s)});let t=e.entry,r=this.zip;if(!t)throw new Error("cannot pipe without source");r?t.on("data",s=>{r.write(s)||t.pause()}):t.on("data",s=>{super.write(s)||t.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}warn(e,t,r={}){mT(this,e,t,r)}},H6=class extends IT{sync=!0;constructor(e){super(e),this[aT]=hnt}pause(){}resume(){}[B6](e){let t=this.follow?"statSync":"lstatSync";this[nT](e,Fv.default[t](e.absolute))}[v6](e){this[sT](e,Fv.default.readdirSync(e.absolute))}[oT](e){let t=e.entry,r=this.zip;if(e.readdir&&e.readdir.forEach(s=>{let a=e.path,n=a==="./"?"":a.replace(/\/*$/,"/");this[iT](n+s)}),!t)throw new Error("Cannot pipe without source");r?t.on("data",s=>{r.write(s)}):t.on("data",s=>{super[She](s)})}},Cnt=(e,t)=>{let r=new H6(e),s=new che(e.file,{mode:e.mode||438});r.pipe(s),Dhe(r,t)},wnt=(e,t)=>{let r=new IT(e),s=new hT(e.file,{mode:e.mode||438});r.pipe(s);let a=new Promise((n,c)=>{s.on("error",c),s.on("close",n),r.on("error",c)});return bhe(r,t),a},Dhe=(e,t)=>{t.forEach(r=>{r.charAt(0)==="@"?yT({file:F6.default.resolve(e.cwd,r.slice(1)),sync:!0,noResume:!0,onReadEntry:s=>e.add(s)}):e.add(r)}),e.end()},bhe=async(e,t)=>{for(let r=0;r{e.add(a)}}):e.add(s)}e.end()},Bnt=(e,t)=>{let r=new H6(e);return Dhe(r,t),r},vnt=(e,t)=>{let r=new IT(e);return bhe(r,t),r},uUt=Ov(Cnt,wnt,Bnt,vnt,(e,t)=>{if(!t?.length)throw new TypeError("no paths specified to add to archive")}),Snt=process.platform,Dnt=Snt==="win32",{O_CREAT:bnt,O_TRUNC:Pnt,O_WRONLY:xnt}=q6.default.constants,xhe=Number(process.env.__FAKE_FS_O_FILENAME__)||q6.default.constants.UV_FS_O_FILEMAP||0,knt=Dnt&&!!xhe,Qnt=512*1024,Rnt=xhe|Pnt|bnt|xnt,khe=knt?e=>e"w",S6=(e,t,r)=>{try{return Lv.default.lchownSync(e,t,r)}catch(s){if(s?.code!=="ENOENT")throw s}},AT=(e,t,r,s)=>{Lv.default.lchown(e,t,r,a=>{s(a&&a?.code!=="ENOENT"?a:null)})},Tnt=(e,t,r,s,a)=>{if(t.isDirectory())Qhe(MI.default.resolve(e,t.name),r,s,n=>{if(n)return a(n);let c=MI.default.resolve(e,t.name);AT(c,r,s,a)});else{let n=MI.default.resolve(e,t.name);AT(n,r,s,a)}},Qhe=(e,t,r,s)=>{Lv.default.readdir(e,{withFileTypes:!0},(a,n)=>{if(a){if(a.code==="ENOENT")return s();if(a.code!=="ENOTDIR"&&a.code!=="ENOTSUP")return s(a)}if(a||!n.length)return AT(e,t,r,s);let c=n.length,f=null,p=h=>{if(!f){if(h)return s(f=h);if(--c===0)return AT(e,t,r,s)}};for(let h of n)Tnt(e,h,t,r,p)})},Fnt=(e,t,r,s)=>{t.isDirectory()&&Rhe(MI.default.resolve(e,t.name),r,s),S6(MI.default.resolve(e,t.name),r,s)},Rhe=(e,t,r)=>{let s;try{s=Lv.default.readdirSync(e,{withFileTypes:!0})}catch(a){let n=a;if(n?.code==="ENOENT")return;if(n?.code==="ENOTDIR"||n?.code==="ENOTSUP")return S6(e,t,r);throw n}for(let a of s)Fnt(e,a,t,r);return S6(e,t,r)},Fhe=class extends Error{path;code;syscall="chdir";constructor(e,t){super(`${t}: Cannot cd into '${e}'`),this.path=e,this.code=t}get name(){return"CwdError"}},CT=class extends Error{path;symlink;syscall="symlink";code="TAR_SYMLINK_ERROR";constructor(e,t){super("TAR_SYMLINK_ERROR: Cannot extract through symbolic link"),this.symlink=e,this.path=t}get name(){return"SymlinkError"}},Nnt=(e,t)=>{Il.default.stat(e,(r,s)=>{(r||!s.isDirectory())&&(r=new Fhe(e,r?.code||"ENOTDIR")),t(r)})},Ont=(e,t,r)=>{e=cn(e);let s=t.umask??18,a=t.mode|448,n=(a&s)!==0,c=t.uid,f=t.gid,p=typeof c=="number"&&typeof f=="number"&&(c!==t.processUid||f!==t.processGid),h=t.preserve,E=t.unlink,C=cn(t.cwd),S=(I,T)=>{I?r(I):T&&p?Qhe(T,c,f,O=>S(O)):n?Il.default.chmod(e,a,r):r()};if(e===C)return Nnt(e,S);if(h)return The.default.mkdir(e,{mode:a,recursive:!0}).then(I=>S(null,I??void 0),S);let x=cn(Nv.default.relative(C,e)).split("/");D6(C,x,a,E,C,void 0,S)},D6=(e,t,r,s,a,n,c)=>{if(!t.length)return c(null,n);let f=t.shift(),p=cn(Nv.default.resolve(e+"/"+f));Il.default.mkdir(p,r,Nhe(p,t,r,s,a,n,c))},Nhe=(e,t,r,s,a,n,c)=>f=>{f?Il.default.lstat(e,(p,h)=>{if(p)p.path=p.path&&cn(p.path),c(p);else if(h.isDirectory())D6(e,t,r,s,a,n,c);else if(s)Il.default.unlink(e,E=>{if(E)return c(E);Il.default.mkdir(e,r,Nhe(e,t,r,s,a,n,c))});else{if(h.isSymbolicLink())return c(new CT(e,e+"/"+t.join("/")));c(f)}}):(n=n||e,D6(e,t,r,s,a,n,c))},Lnt=e=>{let t=!1,r;try{t=Il.default.statSync(e).isDirectory()}catch(s){r=s?.code}finally{if(!t)throw new Fhe(e,r??"ENOTDIR")}},Mnt=(e,t)=>{e=cn(e);let r=t.umask??18,s=t.mode|448,a=(s&r)!==0,n=t.uid,c=t.gid,f=typeof n=="number"&&typeof c=="number"&&(n!==t.processUid||c!==t.processGid),p=t.preserve,h=t.unlink,E=cn(t.cwd),C=I=>{I&&f&&Rhe(I,n,c),a&&Il.default.chmodSync(e,s)};if(e===E)return Lnt(E),C();if(p)return C(Il.default.mkdirSync(e,{mode:s,recursive:!0})??void 0);let S=cn(Nv.default.relative(E,e)).split("/"),x;for(let I=S.shift(),T=E;I&&(T+="/"+I);I=S.shift()){T=cn(Nv.default.resolve(T));try{Il.default.mkdirSync(T,s),x=x||T}catch{let O=Il.default.lstatSync(T);if(O.isDirectory())continue;if(h){Il.default.unlinkSync(T),Il.default.mkdirSync(T,s),x=x||T;continue}else if(O.isSymbolicLink())return new CT(T,T+"/"+S.join("/"))}}return C(x)},o6=Object.create(null),Xpe=1e4,QI=new Set,Unt=e=>{QI.has(e)?QI.delete(e):o6[e]=e.normalize("NFD").toLocaleLowerCase("en").toLocaleUpperCase("en"),QI.add(e);let t=o6[e],r=QI.size-Xpe;if(r>Xpe/10){for(let s of QI)if(QI.delete(s),delete o6[s],--r<=0)break}return t},_nt=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,Hnt=_nt==="win32",jnt=e=>e.split("/").slice(0,-1).reduce((t,r)=>{let s=t[t.length-1];return s!==void 0&&(r=(0,W6.join)(s,r)),t.push(r||"/"),t},[]),Gnt=class{#e=new Map;#t=new Map;#s=new Set;reserve(e,t){e=Hnt?["win32 parallelization disabled"]:e.map(s=>Pv((0,W6.join)(Unt(s))));let r=new Set(e.map(s=>jnt(s)).reduce((s,a)=>s.concat(a)));this.#t.set(t,{dirs:r,paths:e});for(let s of e){let a=this.#e.get(s);a?a.push(t):this.#e.set(s,[t])}for(let s of r){let a=this.#e.get(s);if(!a)this.#e.set(s,[new Set([t])]);else{let n=a[a.length-1];n instanceof Set?n.add(t):a.push(new Set([t]))}}return this.#i(t)}#r(e){let t=this.#t.get(e);if(!t)throw new Error("function does not have any path reservations");return{paths:t.paths.map(r=>this.#e.get(r)),dirs:[...t.dirs].map(r=>this.#e.get(r))}}check(e){let{paths:t,dirs:r}=this.#r(e);return t.every(s=>s&&s[0]===e)&&r.every(s=>s&&s[0]instanceof Set&&s[0].has(e))}#i(e){return this.#s.has(e)||!this.check(e)?!1:(this.#s.add(e),e(()=>this.#n(e)),!0)}#n(e){if(!this.#s.has(e))return!1;let t=this.#t.get(e);if(!t)throw new Error("invalid reservation");let{paths:r,dirs:s}=t,a=new Set;for(let n of r){let c=this.#e.get(n);if(!c||c?.[0]!==e)continue;let f=c[1];if(!f){this.#e.delete(n);continue}if(c.shift(),typeof f=="function")a.add(f);else for(let p of f)a.add(p)}for(let n of s){let c=this.#e.get(n),f=c?.[0];if(!(!c||!(f instanceof Set)))if(f.size===1&&c.length===1){this.#e.delete(n);continue}else if(f.size===1){c.shift();let p=c[0];typeof p=="function"&&a.add(p)}else f.delete(e)}return this.#s.delete(e),a.forEach(n=>this.#i(n)),!0}},qnt=()=>process.umask(),Zpe=Symbol("onEntry"),b6=Symbol("checkFs"),$pe=Symbol("checkFs2"),P6=Symbol("isReusable"),_c=Symbol("makeFs"),x6=Symbol("file"),k6=Symbol("directory"),lT=Symbol("link"),ehe=Symbol("symlink"),the=Symbol("hardlink"),Dv=Symbol("ensureNoSymlink"),rhe=Symbol("unsupported"),nhe=Symbol("checkPath"),a6=Symbol("stripAbsolutePath"),L0=Symbol("mkdir"),Zs=Symbol("onError"),XR=Symbol("pending"),ihe=Symbol("pend"),RI=Symbol("unpend"),l6=Symbol("ended"),c6=Symbol("maybeClose"),Q6=Symbol("skip"),xv=Symbol("doChown"),kv=Symbol("uid"),Qv=Symbol("gid"),Rv=Symbol("checkedCwd"),Wnt=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,Tv=Wnt==="win32",Ynt=1024,Vnt=(e,t)=>{if(!Tv)return wn.default.unlink(e,t);let r=e+".DELETE."+(0,G6.randomBytes)(16).toString("hex");wn.default.rename(e,r,s=>{if(s)return t(s);wn.default.unlink(r,t)})},Jnt=e=>{if(!Tv)return wn.default.unlinkSync(e);let t=e+".DELETE."+(0,G6.randomBytes)(16).toString("hex");wn.default.renameSync(e,t),wn.default.unlinkSync(t)},she=(e,t,r)=>e!==void 0&&e===e>>>0?e:t!==void 0&&t===t>>>0?t:r,Y6=class extends Bm{[l6]=!1;[Rv]=!1;[XR]=0;reservations=new Gnt;transform;writable=!0;readable=!1;uid;gid;setOwner;preserveOwner;processGid;processUid;maxDepth;forceChown;win32;newer;keep;noMtime;preservePaths;unlink;cwd;strip;processUmask;umask;dmode;fmode;chmod;constructor(e={}){if(e.ondone=()=>{this[l6]=!0,this[c6]()},super(e),this.transform=e.transform,this.chmod=!!e.chmod,typeof e.uid=="number"||typeof e.gid=="number"){if(typeof e.uid!="number"||typeof e.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(e.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=e.uid,this.gid=e.gid,this.setOwner=!0}else this.uid=void 0,this.gid=void 0,this.setOwner=!1;e.preserveOwner===void 0&&typeof e.uid!="number"?this.preserveOwner=!!(process.getuid&&process.getuid()===0):this.preserveOwner=!!e.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():void 0,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():void 0,this.maxDepth=typeof e.maxDepth=="number"?e.maxDepth:Ynt,this.forceChown=e.forceChown===!0,this.win32=!!e.win32||Tv,this.newer=!!e.newer,this.keep=!!e.keep,this.noMtime=!!e.noMtime,this.preservePaths=!!e.preservePaths,this.unlink=!!e.unlink,this.cwd=cn(ds.default.resolve(e.cwd||process.cwd())),this.strip=Number(e.strip)||0,this.processUmask=this.chmod?typeof e.processUmask=="number"?e.processUmask:qnt():0,this.umask=typeof e.umask=="number"?e.umask:this.processUmask,this.dmode=e.dmode||511&~this.umask,this.fmode=e.fmode||438&~this.umask,this.on("entry",t=>this[Zpe](t))}warn(e,t,r={}){return(e==="TAR_BAD_ARCHIVE"||e==="TAR_ABORT")&&(r.recoverable=!1),super.warn(e,t,r)}[c6](){this[l6]&&this[XR]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"))}[a6](e,t){let r=e[t],{type:s}=e;if(!r||this.preservePaths)return!0;let a=r.split("/");if(a.includes("..")||Tv&&/^[a-z]:\.\.$/i.test(a[0]??"")){if(t==="path"||s==="Link")return this.warn("TAR_ENTRY_ERROR",`${t} contains '..'`,{entry:e,[t]:r}),!1;{let f=ds.default.posix.dirname(e.path),p=ds.default.posix.normalize(ds.default.posix.join(f,r));if(p.startsWith("../")||p==="..")return this.warn("TAR_ENTRY_ERROR",`${t} escapes extraction directory`,{entry:e,[t]:r}),!1}}let[n,c]=M6(r);return n&&(e[t]=String(c),this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute ${t}`,{entry:e,[t]:r})),!0}[nhe](e){let t=cn(e.path),r=t.split("/");if(this.strip){if(r.length=this.strip)e.linkpath=s.slice(this.strip).join("/");else return!1}r.splice(0,this.strip),e.path=r.join("/")}if(isFinite(this.maxDepth)&&r.length>this.maxDepth)return this.warn("TAR_ENTRY_ERROR","path excessively deep",{entry:e,path:t,depth:r.length,maxDepth:this.maxDepth}),!1;if(!this[a6](e,"path")||!this[a6](e,"linkpath"))return!1;if(ds.default.isAbsolute(e.path)?e.absolute=cn(ds.default.resolve(e.path)):e.absolute=cn(ds.default.resolve(this.cwd,e.path)),!this.preservePaths&&typeof e.absolute=="string"&&e.absolute.indexOf(this.cwd+"/")!==0&&e.absolute!==this.cwd)return this.warn("TAR_ENTRY_ERROR","path escaped extraction target",{entry:e,path:cn(e.path),resolvedPath:e.absolute,cwd:this.cwd}),!1;if(e.absolute===this.cwd&&e.type!=="Directory"&&e.type!=="GNUDumpDir")return!1;if(this.win32){let{root:s}=ds.default.win32.parse(String(e.absolute));e.absolute=s+jpe(String(e.absolute).slice(s.length));let{root:a}=ds.default.win32.parse(e.path);e.path=a+jpe(e.path.slice(a.length))}return!0}[Zpe](e){if(!this[nhe](e))return e.resume();switch(Phe.default.equal(typeof e.absolute,"string"),e.type){case"Directory":case"GNUDumpDir":e.mode&&(e.mode=e.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[b6](e);default:return this[rhe](e)}}[Zs](e,t){e.name==="CwdError"?this.emit("error",e):(this.warn("TAR_ENTRY_ERROR",e,{entry:t}),this[RI](),t.resume())}[L0](e,t,r){Ont(cn(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:t},r)}[xv](e){return this.forceChown||this.preserveOwner&&(typeof e.uid=="number"&&e.uid!==this.processUid||typeof e.gid=="number"&&e.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[kv](e){return she(this.uid,e.uid,this.processUid)}[Qv](e){return she(this.gid,e.gid,this.processGid)}[x6](e,t){let r=typeof e.mode=="number"?e.mode&4095:this.fmode,s=new hT(String(e.absolute),{flags:khe(e.size),mode:r,autoClose:!1});s.on("error",f=>{s.fd&&wn.default.close(s.fd,()=>{}),s.write=()=>!0,this[Zs](f,e),t()});let a=1,n=f=>{if(f){s.fd&&wn.default.close(s.fd,()=>{}),this[Zs](f,e),t();return}--a===0&&s.fd!==void 0&&wn.default.close(s.fd,p=>{p?this[Zs](p,e):this[RI](),t()})};s.on("finish",()=>{let f=String(e.absolute),p=s.fd;if(typeof p=="number"&&e.mtime&&!this.noMtime){a++;let h=e.atime||new Date,E=e.mtime;wn.default.futimes(p,h,E,C=>C?wn.default.utimes(f,h,E,S=>n(S&&C)):n())}if(typeof p=="number"&&this[xv](e)){a++;let h=this[kv](e),E=this[Qv](e);typeof h=="number"&&typeof E=="number"&&wn.default.fchown(p,h,E,C=>C?wn.default.chown(f,h,E,S=>n(S&&C)):n())}n()});let c=this.transform&&this.transform(e)||e;c!==e&&(c.on("error",f=>{this[Zs](f,e),t()}),e.pipe(c)),c.pipe(s)}[k6](e,t){let r=typeof e.mode=="number"?e.mode&4095:this.dmode;this[L0](String(e.absolute),r,s=>{if(s){this[Zs](s,e),t();return}let a=1,n=()=>{--a===0&&(t(),this[RI](),e.resume())};e.mtime&&!this.noMtime&&(a++,wn.default.utimes(String(e.absolute),e.atime||new Date,e.mtime,n)),this[xv](e)&&(a++,wn.default.chown(String(e.absolute),Number(this[kv](e)),Number(this[Qv](e)),n)),n()})}[rhe](e){e.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${e.type}`,{entry:e}),e.resume()}[ehe](e,t){let r=cn(ds.default.relative(this.cwd,ds.default.resolve(ds.default.dirname(String(e.absolute)),String(e.linkpath)))).split("/");this[Dv](e,this.cwd,r,()=>this[lT](e,String(e.linkpath),"symlink",t),s=>{this[Zs](s,e),t()})}[the](e,t){let r=cn(ds.default.resolve(this.cwd,String(e.linkpath))),s=cn(String(e.linkpath)).split("/");this[Dv](e,this.cwd,s,()=>this[lT](e,r,"link",t),a=>{this[Zs](a,e),t()})}[Dv](e,t,r,s,a){let n=r.shift();if(this.preservePaths||n===void 0)return s();let c=ds.default.resolve(t,n);wn.default.lstat(c,(f,p)=>{if(f)return s();if(p?.isSymbolicLink())return a(new CT(c,ds.default.resolve(c,r.join("/"))));this[Dv](e,c,r,s,a)})}[ihe](){this[XR]++}[RI](){this[XR]--,this[c6]()}[Q6](e){this[RI](),e.resume()}[P6](e,t){return e.type==="File"&&!this.unlink&&t.isFile()&&t.nlink<=1&&!Tv}[b6](e){this[ihe]();let t=[e.path];e.linkpath&&t.push(e.linkpath),this.reservations.reserve(t,r=>this[$pe](e,r))}[$pe](e,t){let r=c=>{t(c)},s=()=>{this[L0](this.cwd,this.dmode,c=>{if(c){this[Zs](c,e),r();return}this[Rv]=!0,a()})},a=()=>{if(e.absolute!==this.cwd){let c=cn(ds.default.dirname(String(e.absolute)));if(c!==this.cwd)return this[L0](c,this.dmode,f=>{if(f){this[Zs](f,e),r();return}n()})}n()},n=()=>{wn.default.lstat(String(e.absolute),(c,f)=>{if(f&&(this.keep||this.newer&&f.mtime>(e.mtime??f.mtime))){this[Q6](e),r();return}if(c||this[P6](e,f))return this[_c](null,e,r);if(f.isDirectory()){if(e.type==="Directory"){let p=this.chmod&&e.mode&&(f.mode&4095)!==e.mode,h=E=>this[_c](E??null,e,r);return p?wn.default.chmod(String(e.absolute),Number(e.mode),h):h()}if(e.absolute!==this.cwd)return wn.default.rmdir(String(e.absolute),p=>this[_c](p??null,e,r))}if(e.absolute===this.cwd)return this[_c](null,e,r);Vnt(String(e.absolute),p=>this[_c](p??null,e,r))})};this[Rv]?a():s()}[_c](e,t,r){if(e){this[Zs](e,t),r();return}switch(t.type){case"File":case"OldFile":case"ContiguousFile":return this[x6](t,r);case"Link":return this[the](t,r);case"SymbolicLink":return this[ehe](t,r);case"Directory":case"GNUDumpDir":return this[k6](t,r)}}[lT](e,t,r,s){wn.default[r](t,String(e.absolute),a=>{a?this[Zs](a,e):(this[RI](),e.resume()),s()})}},vv=e=>{try{return[null,e()]}catch(t){return[t,null]}},Ohe=class extends Y6{sync=!0;[_c](e,t){return super[_c](e,t,()=>{})}[b6](e){if(!this[Rv]){let a=this[L0](this.cwd,this.dmode);if(a)return this[Zs](a,e);this[Rv]=!0}if(e.absolute!==this.cwd){let a=cn(ds.default.dirname(String(e.absolute)));if(a!==this.cwd){let n=this[L0](a,this.dmode);if(n)return this[Zs](n,e)}}let[t,r]=vv(()=>wn.default.lstatSync(String(e.absolute)));if(r&&(this.keep||this.newer&&r.mtime>(e.mtime??r.mtime)))return this[Q6](e);if(t||this[P6](e,r))return this[_c](null,e);if(r.isDirectory()){if(e.type==="Directory"){let n=this.chmod&&e.mode&&(r.mode&4095)!==e.mode,[c]=n?vv(()=>{wn.default.chmodSync(String(e.absolute),Number(e.mode))}):[];return this[_c](c,e)}let[a]=vv(()=>wn.default.rmdirSync(String(e.absolute)));this[_c](a,e)}let[s]=e.absolute===this.cwd?[]:vv(()=>Jnt(String(e.absolute)));this[_c](s,e)}[x6](e,t){let r=typeof e.mode=="number"?e.mode&4095:this.fmode,s=c=>{let f;try{wn.default.closeSync(a)}catch(p){f=p}(c||f)&&this[Zs](c||f,e),t()},a;try{a=wn.default.openSync(String(e.absolute),khe(e.size),r)}catch(c){return s(c)}let n=this.transform&&this.transform(e)||e;n!==e&&(n.on("error",c=>this[Zs](c,e)),e.pipe(n)),n.on("data",c=>{try{wn.default.writeSync(a,c,0,c.length)}catch(f){s(f)}}),n.on("end",()=>{let c=null;if(e.mtime&&!this.noMtime){let f=e.atime||new Date,p=e.mtime;try{wn.default.futimesSync(a,f,p)}catch(h){try{wn.default.utimesSync(String(e.absolute),f,p)}catch{c=h}}}if(this[xv](e)){let f=this[kv](e),p=this[Qv](e);try{wn.default.fchownSync(a,Number(f),Number(p))}catch(h){try{wn.default.chownSync(String(e.absolute),Number(f),Number(p))}catch{c=c||h}}}s(c)})}[k6](e,t){let r=typeof e.mode=="number"?e.mode&4095:this.dmode,s=this[L0](String(e.absolute),r);if(s){this[Zs](s,e),t();return}if(e.mtime&&!this.noMtime)try{wn.default.utimesSync(String(e.absolute),e.atime||new Date,e.mtime)}catch{}if(this[xv](e))try{wn.default.chownSync(String(e.absolute),Number(this[kv](e)),Number(this[Qv](e)))}catch{}t(),e.resume()}[L0](e,t){try{return Mnt(cn(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:t})}catch(r){return r}}[Dv](e,t,r,s,a){if(this.preservePaths||!r.length)return s();let n=t;for(let c of r){n=ds.default.resolve(n,c);let[f,p]=vv(()=>wn.default.lstatSync(n));if(f)return s();if(p.isSymbolicLink())return a(new CT(n,ds.default.resolve(t,r.join("/"))))}s()}[lT](e,t,r,s){let a=`${r}Sync`;try{wn.default[a](t,String(e.absolute)),s(),e.resume()}catch(n){return this[Zs](n,e)}}},Knt=e=>{let t=new Ohe(e),r=e.file,s=j6.default.statSync(r),a=e.maxReadSize||16*1024*1024;new Ert(r,{readSize:a,size:s.size}).pipe(t)},znt=(e,t)=>{let r=new Y6(e),s=e.maxReadSize||16*1024*1024,a=e.file;return new Promise((n,c)=>{r.on("error",c),r.on("close",n),j6.default.stat(a,(f,p)=>{if(f)c(f);else{let h=new T6(a,{readSize:s,size:p.size});h.on("error",c),h.pipe(r)}})})},fUt=Ov(Knt,znt,e=>new Ohe(e),e=>new Y6(e),(e,t)=>{t?.length&&Ihe(e,t)}),Xnt=(e,t)=>{let r=new H6(e),s=!0,a,n;try{try{a=El.default.openSync(e.file,"r+")}catch(p){if(p?.code==="ENOENT")a=El.default.openSync(e.file,"w+");else throw p}let c=El.default.fstatSync(a),f=Buffer.alloc(512);e:for(n=0;nc.size)break;n+=h,e.mtimeCache&&p.mtime&&e.mtimeCache.set(String(p.path),p.mtime)}s=!1,Znt(e,r,n,a,t)}finally{if(s)try{El.default.closeSync(a)}catch{}}},Znt=(e,t,r,s,a)=>{let n=new che(e.file,{fd:s,start:r});t.pipe(n),eit(t,a)},$nt=(e,t)=>{t=Array.from(t);let r=new IT(e),s=(a,n,c)=>{let f=(S,x)=>{S?El.default.close(a,I=>c(S)):c(null,x)},p=0;if(n===0)return f(null,0);let h=0,E=Buffer.alloc(512),C=(S,x)=>{if(S||typeof x>"u")return f(S);if(h+=x,h<512&&x)return El.default.read(a,E,h,E.length-h,p+h,C);if(p===0&&E[0]===31&&E[1]===139)return f(new Error("cannot append to compressed archives"));if(h<512)return f(null,p);let I=new wm(E);if(!I.cksumValid)return f(null,p);let T=512*Math.ceil((I.size??0)/512);if(p+T+512>n||(p+=T+512,p>=n))return f(null,p);e.mtimeCache&&I.mtime&&e.mtimeCache.set(String(I.path),I.mtime),h=0,El.default.read(a,E,0,512,p,C)};El.default.read(a,E,0,512,p,C)};return new Promise((a,n)=>{r.on("error",n);let c="r+",f=(p,h)=>{if(p&&p.code==="ENOENT"&&c==="r+")return c="w+",El.default.open(e.file,c,f);if(p||!h)return n(p);El.default.fstat(h,(E,C)=>{if(E)return El.default.close(h,()=>n(E));s(h,C.size,(S,x)=>{if(S)return n(S);let I=new hT(e.file,{fd:h,start:x});r.pipe(I),I.on("error",n),I.on("close",a),tit(r,t)})})};El.default.open(e.file,c,f)})},eit=(e,t)=>{t.forEach(r=>{r.charAt(0)==="@"?yT({file:V6.default.resolve(e.cwd,r.slice(1)),sync:!0,noResume:!0,onReadEntry:s=>e.add(s)}):e.add(r)}),e.end()},tit=async(e,t)=>{for(let r=0;re.add(a)}):e.add(s)}e.end()},Sv=Ov(Xnt,$nt,()=>{throw new TypeError("file is required")},()=>{throw new TypeError("file is required")},(e,t)=>{if(!Srt(e))throw new TypeError("file is required");if(e.gzip||e.brotli||e.zstd||e.file.endsWith(".br")||e.file.endsWith(".tbr"))throw new TypeError("cannot append to compressed archives");if(!t?.length)throw new TypeError("no paths specified to add/replace")}),AUt=Ov(Sv.syncFile,Sv.asyncFile,Sv.syncNoFile,Sv.asyncNoFile,(e,t=[])=>{Sv.validate?.(e,t),rit(e)}),rit=e=>{let t=e.filter;e.mtimeCache||(e.mtimeCache=new Map),e.filter=t?(r,s)=>t(r,s)&&!((e.mtimeCache?.get(r)??s.mtime??0)>(s.mtime??0)):(r,s)=>!((e.mtimeCache?.get(r)??s.mtime??0)>(s.mtime??0))}});var J6,Mhe,_0,Mv,Uv,Uhe=Xe(()=>{J6=et(Ng()),Mhe=Ie("worker_threads"),_0=Symbol("kTaskInfo"),Mv=class{constructor(t,r){this.fn=t;this.limit=(0,J6.default)(r.poolSize)}run(t){return this.limit(()=>this.fn(t))}},Uv=class{constructor(t,r){this.source=t;this.workers=[];this.limit=(0,J6.default)(r.poolSize),this.cleanupInterval=setInterval(()=>{if(this.limit.pendingCount===0&&this.limit.activeCount===0){let s=this.workers.pop();s?s.terminate():clearInterval(this.cleanupInterval)}},5e3).unref()}createWorker(){this.cleanupInterval.refresh();let t=new Mhe.Worker(this.source,{eval:!0,execArgv:[...process.execArgv,"--unhandled-rejections=strict"]});return t.on("message",r=>{if(!t[_0])throw new Error("Assertion failed: Worker sent a result without having a task assigned");t[_0].resolve(r),t[_0]=null,t.unref(),this.workers.push(t)}),t.on("error",r=>{t[_0]?.reject(r),t[_0]=null}),t.on("exit",r=>{r!==0&&t[_0]?.reject(new Error(`Worker exited with code ${r}`)),t[_0]=null}),t}run(t){return this.limit(()=>{let r=this.workers.pop()??this.createWorker();return r.ref(),new Promise((s,a)=>{r[_0]={resolve:s,reject:a},r.postMessage(t)})})}}});var Hhe=G((JUt,_he)=>{var K6;_he.exports.getContent=()=>(typeof K6>"u"&&(K6=Ie("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),K6)});var gs={};Vt(gs,{convertToZip:()=>ait,convertToZipWorker:()=>Z6,extractArchiveTo:()=>Whe,getDefaultTaskPool:()=>Ghe,getTaskPoolForConfiguration:()=>qhe,makeArchiveFromDirectory:()=>oit});function iit(e,t){switch(e){case"async":return new Mv(Z6,{poolSize:t});case"workers":return new Uv((0,X6.getContent)(),{poolSize:t});default:throw new Error(`Assertion failed: Unknown value ${e} for taskPoolMode`)}}function Ghe(){return typeof z6>"u"&&(z6=iit("workers",Ui.availableParallelism())),z6}function qhe(e){return typeof e>"u"?Ghe():Zl(sit,e,()=>{let t=e.get("taskPoolMode"),r=e.get("taskPoolConcurrency");switch(t){case"async":return new Mv(Z6,{poolSize:r});case"workers":return new Uv((0,X6.getContent)(),{poolSize:r});default:throw new Error(`Assertion failed: Unknown value ${t} for taskPoolMode`)}})}async function Z6(e){let{tmpFile:t,tgz:r,compressionLevel:s,extractBufferOpts:a}=e,n=new ps(t,{create:!0,level:s,stats:al.makeDefaultStats()}),c=Buffer.from(r.buffer,r.byteOffset,r.byteLength);return await Whe(c,n,a),n.saveAndClose(),t}async function oit(e,{baseFs:t=new Vn,prefixPath:r=vt.root,compressionLevel:s,inMemory:a=!1}={}){let n;if(a)n=new ps(null,{level:s});else{let f=await le.mktempPromise(),p=J.join(f,"archive.zip");n=new ps(p,{create:!0,level:s})}let c=J.resolve(vt.root,r);return await n.copyPromise(c,e,{baseFs:t,stableTime:!0,stableSort:!0}),n}async function ait(e,t={}){let r=await le.mktempPromise(),s=J.join(r,"archive.zip"),a=t.compressionLevel??t.configuration?.get("compressionLevel")??"mixed",n={prefixPath:t.prefixPath,stripComponents:t.stripComponents};return await(t.taskPool??qhe(t.configuration)).run({tmpFile:s,tgz:e,compressionLevel:a,extractBufferOpts:n}),new ps(s,{level:t.compressionLevel})}async function*lit(e){let t=new Bm,r=new jhe.PassThrough({objectMode:!0,autoDestroy:!0,emitClose:!0});t.on("entry",s=>{r.write(s)}),t.on("error",s=>{r.destroy(s)}),t.on("close",()=>{r.destroyed||r.end()}),t.end(e);for await(let s of r){let a=s;yield a,a.resume()}}async function Whe(e,t,{stripComponents:r=0,prefixPath:s=vt.dot}={}){function a(n){if(n.path[0]==="/")return!0;let c=n.path.split(/\//g);return!!(c.some(f=>f==="..")||c.length<=r)}for await(let n of lit(e)){if(a(n))continue;let c=J.normalize(fe.toPortablePath(n.path)).replace(/\/$/,"").split(/\//g);if(c.length<=r)continue;let f=c.slice(r).join("/"),p=J.join(s,f),h=420;switch((n.type==="Directory"||(n.mode??0)&73)&&(h|=73),n.type){case"Directory":t.mkdirpSync(J.dirname(p),{chmod:493,utimes:[Ai.SAFE_TIME,Ai.SAFE_TIME]}),t.mkdirSync(p,{mode:h}),t.utimesSync(p,Ai.SAFE_TIME,Ai.SAFE_TIME);break;case"OldFile":case"File":t.mkdirpSync(J.dirname(p),{chmod:493,utimes:[Ai.SAFE_TIME,Ai.SAFE_TIME]}),t.writeFileSync(p,await JE(n),{mode:h}),t.utimesSync(p,Ai.SAFE_TIME,Ai.SAFE_TIME);break;case"SymbolicLink":t.mkdirpSync(J.dirname(p),{chmod:493,utimes:[Ai.SAFE_TIME,Ai.SAFE_TIME]}),t.symlinkSync(n.linkpath,p),t.lutimesSync(p,Ai.SAFE_TIME,Ai.SAFE_TIME);break}}return t}var jhe,X6,z6,sit,Yhe=Xe(()=>{qe();Dt();nA();jhe=Ie("stream");Lhe();Uhe();kc();X6=et(Hhe());sit=new WeakMap});var Jhe=G(($6,Vhe)=>{(function(e,t){typeof $6=="object"?Vhe.exports=t():typeof define=="function"&&define.amd?define(t):e.treeify=t()})($6,function(){function e(a,n){var c=n?"\u2514":"\u251C";return a?c+="\u2500 ":c+="\u2500\u2500\u2510",c}function t(a,n){var c=[];for(var f in a)a.hasOwnProperty(f)&&(n&&typeof a[f]=="function"||c.push(f));return c}function r(a,n,c,f,p,h,E){var C="",S=0,x,I,T=f.slice(0);if(T.push([n,c])&&f.length>0&&(f.forEach(function(U,V){V>0&&(C+=(U[1]?" ":"\u2502")+" "),!I&&U[0]===n&&(I=!0)}),C+=e(a,c)+a,p&&(typeof n!="object"||n instanceof Date)&&(C+=": "+n),I&&(C+=" (circular ref.)"),E(C)),!I&&typeof n=="object"){var O=t(n,h);O.forEach(function(U){x=++S===O.length,r(U,n[U],x,T,p,h,E)})}}var s={};return s.asLines=function(a,n,c,f){var p=typeof c!="function"?c:!1;r(".",a,!1,[],n,p,f||c)},s.asTree=function(a,n,c){var f="";return r(".",a,!1,[],n,c,function(p){f+=p+` +`}),f},s})});var Rs={};Vt(Rs,{emitList:()=>cit,emitTree:()=>Zhe,treeNodeToJson:()=>Xhe,treeNodeToTreeify:()=>zhe});function zhe(e,{configuration:t}){let r={},s=0,a=(n,c)=>{let f=Array.isArray(n)?n.entries():Object.entries(n);for(let[p,h]of f){if(!h)continue;let{label:E,value:C,children:S}=h,x=[];typeof E<"u"&&x.push(Jg(t,E,2)),typeof C<"u"&&x.push(jt(t,C[0],C[1])),x.length===0&&x.push(Jg(t,`${p}`,2));let I=x.join(": ").trim(),T=`\0${s++}\0`,O=c[`${T}${I}`]={};typeof S<"u"&&a(S,O)}};if(typeof e.children>"u")throw new Error("The root node must only contain children");return a(e.children,r),r}function Xhe(e){let t=r=>{if(typeof r.children>"u"){if(typeof r.value>"u")throw new Error("Assertion failed: Expected a value to be set if the children are missing");return Kg(r.value[0],r.value[1])}let s=Array.isArray(r.children)?r.children.entries():Object.entries(r.children??{}),a=Array.isArray(r.children)?[]:{};for(let[n,c]of s)c&&(a[uit(n)]=t(c));return typeof r.value>"u"?a:{value:Kg(r.value[0],r.value[1]),children:a}};return t(e)}function cit(e,{configuration:t,stdout:r,json:s}){let a=e.map(n=>({value:n}));Zhe({children:a},{configuration:t,stdout:r,json:s})}function Zhe(e,{configuration:t,stdout:r,json:s,separators:a=0}){if(s){let c=Array.isArray(e.children)?e.children.values():Object.values(e.children??{});for(let f of c)f&&r.write(`${JSON.stringify(Xhe(f))} +`);return}let n=(0,Khe.asTree)(zhe(e,{configuration:t}),!1,!1);if(n=n.replace(/\0[0-9]+\0/g,""),a>=1&&(n=n.replace(/^([├└]─)/gm,`\u2502 +$1`).replace(/^│\n/,"")),a>=2)for(let c=0;c<2;++c)n=n.replace(/^([│ ].{2}[├│ ].{2}[^\n]+\n)(([│ ]).{2}[├└].{2}[^\n]*\n[│ ].{2}[│ ].{2}[├└]─)/gm,`$1$3 \u2502 +$2`).replace(/^│\n/,"");if(a>=3)throw new Error("Only the first two levels are accepted by treeUtils.emitTree");r.write(n)}function uit(e){return typeof e=="string"?e.replace(/^\0[0-9]+\0/,""):e}var Khe,$he=Xe(()=>{Khe=et(Jhe());Qc()});var wT,e0e=Xe(()=>{wT=class{constructor(t){this.releaseFunction=t;this.map=new Map}addOrCreate(t,r){let s=this.map.get(t);if(typeof s<"u"){if(s.refCount<=0)throw new Error(`Race condition in RefCountedMap. While adding a new key the refCount is: ${s.refCount} for ${JSON.stringify(t)}`);return s.refCount++,{value:s.value,release:()=>this.release(t)}}else{let a=r();return this.map.set(t,{refCount:1,value:a}),{value:a,release:()=>this.release(t)}}}release(t){let r=this.map.get(t);if(!r)throw new Error(`Unbalanced calls to release. No known instances of: ${JSON.stringify(t)}`);let s=r.refCount;if(s<=0)throw new Error(`Unbalanced calls to release. Too many release vs alloc refcount would become: ${s-1} of ${JSON.stringify(t)}`);s==1?(this.map.delete(t),this.releaseFunction(r.value)):r.refCount--}}});function _v(e){let t=e.match(fit);if(!t?.groups)throw new Error("Assertion failed: Expected the checksum to match the requested pattern");let r=t.groups.cacheVersion?parseInt(t.groups.cacheVersion):null;return{cacheKey:t.groups.cacheKey??null,cacheVersion:r,cacheSpec:t.groups.cacheSpec??null,hash:t.groups.hash}}var t0e,eG,tG,BT,Kr,fit,rG=Xe(()=>{qe();Dt();Dt();nA();t0e=Ie("crypto"),eG=et(Ie("fs"));e0e();Fc();E0();kc();Zo();tG=KE(process.env.YARN_CACHE_CHECKPOINT_OVERRIDE??process.env.YARN_CACHE_VERSION_OVERRIDE??9),BT=KE(process.env.YARN_CACHE_VERSION_OVERRIDE??10),Kr=class e{constructor(t,{configuration:r,immutable:s=r.get("enableImmutableCache"),check:a=!1}){this.markedFiles=new Set;this.mutexes=new Map;this.refCountedZipFsCache=new wT(t=>{t.discardAndClose()});this.cacheId=`-${(0,t0e.randomBytes)(8).toString("hex")}.tmp`;this.configuration=r,this.cwd=t,this.immutable=s,this.check=a;let{cacheSpec:n,cacheKey:c}=e.getCacheKey(r);this.cacheSpec=n,this.cacheKey=c}static async find(t,{immutable:r,check:s}={}){let a=new e(t.get("cacheFolder"),{configuration:t,immutable:r,check:s});return await a.setup(),a}static getCacheKey(t){let r=t.get("compressionLevel"),s=r!=="mixed"?`c${r}`:"";return{cacheKey:[BT,s].join(""),cacheSpec:s}}get mirrorCwd(){if(!this.configuration.get("enableMirror"))return null;let t=`${this.configuration.get("globalFolder")}/cache`;return t!==this.cwd?t:null}getVersionFilename(t){return`${oI(t)}-${this.cacheKey}.zip`}getChecksumFilename(t,r){let a=_v(r).hash.slice(0,10);return`${oI(t)}-${a}.zip`}isChecksumCompatible(t){if(t===null)return!1;let{cacheVersion:r,cacheSpec:s}=_v(t);if(r===null||r{let Ae=new ps,Ce=J.join(vt.root,d8(t));return Ae.mkdirSync(Ce,{recursive:!0}),Ae.writeJsonSync(J.join(Ce,Er.manifest),{name:fn(t),mocked:!0}),Ae},E=async(Ae,{isColdHit:Ce,controlPath:Ee=null})=>{if(Ee===null&&c.unstablePackages?.has(t.locatorHash))return{isValid:!0,hash:null};let d=r&&!Ce?_v(r).cacheKey:this.cacheKey,Se=!c.skipIntegrityCheck||!r?`${d}/${await vQ(Ae)}`:r;if(Ee!==null){let me=!c.skipIntegrityCheck||!r?`${this.cacheKey}/${await vQ(Ee)}`:r;if(Se!==me)throw new Lt(18,"The remote archive doesn't match the local checksum - has the local cache been corrupted?")}let Be=null;switch(r!==null&&Se!==r&&(this.check?Be="throw":_v(r).cacheKey!==_v(Se).cacheKey?Be="update":Be=this.configuration.get("checksumBehavior")),Be){case null:case"update":return{isValid:!0,hash:Se};case"ignore":return{isValid:!0,hash:r};case"reset":return{isValid:!1,hash:r};default:case"throw":throw new Lt(18,"The remote archive doesn't match the expected checksum")}},C=async Ae=>{if(!n)throw new Error(`Cache check required but no loader configured for ${Yr(this.configuration,t)}`);let Ce=await n(),Ee=Ce.getRealPath();Ce.saveAndClose(),await le.chmodPromise(Ee,420);let d=await E(Ae,{controlPath:Ee,isColdHit:!1});if(!d.isValid)throw new Error("Assertion failed: Expected a valid checksum");return d.hash},S=async()=>{if(f===null||!await le.existsPromise(f)){let Ae=await n(),Ce=Ae.getRealPath();return Ae.saveAndClose(),{source:"loader",path:Ce}}return{source:"mirror",path:f}},x=async()=>{if(!n)throw new Error(`Cache entry required but missing for ${Yr(this.configuration,t)}`);if(this.immutable)throw new Lt(56,`Cache entry required but missing for ${Yr(this.configuration,t)}`);let{path:Ae,source:Ce}=await S(),{hash:Ee}=await E(Ae,{isColdHit:!0}),d=this.getLocatorPath(t,Ee),Se=[];Ce!=="mirror"&&f!==null&&Se.push(async()=>{let me=`${f}${this.cacheId}`;await le.copyFilePromise(Ae,me,eG.default.constants.COPYFILE_FICLONE),await le.chmodPromise(me,420),await le.renamePromise(me,f)}),(!c.mirrorWriteOnly||f===null)&&Se.push(async()=>{let me=`${d}${this.cacheId}`;await le.copyFilePromise(Ae,me,eG.default.constants.COPYFILE_FICLONE),await le.chmodPromise(me,420),await le.renamePromise(me,d)});let Be=c.mirrorWriteOnly?f??d:d;return await Promise.all(Se.map(me=>me())),[!1,Be,Ee]},I=async()=>{let Ce=(async()=>{let Ee=c.unstablePackages?.has(t.locatorHash),d=Ee||!r||this.isChecksumCompatible(r)?this.getLocatorPath(t,r):null,Se=d!==null?this.markedFiles.has(d)||await p.existsPromise(d):!1,Be=!!c.mockedPackages?.has(t.locatorHash)&&(!this.check||!Se),me=Be||Se,ce=me?s:a;if(ce&&ce(),me){let Z=null,De=d;if(!Be)if(this.check)Z=await C(De);else{let Qe=await E(De,{isColdHit:!1});if(Qe.isValid)Z=Qe.hash;else return x()}return[Be,De,Z]}else{if(this.immutable&&Ee)throw new Lt(56,`Cache entry required but missing for ${Yr(this.configuration,t)}; consider defining ${pe.pretty(this.configuration,"supportedArchitectures",pe.Type.CODE)} to cache packages for multiple systems`);return x()}})();this.mutexes.set(t.locatorHash,Ce);try{return await Ce}finally{this.mutexes.delete(t.locatorHash)}};for(let Ae;Ae=this.mutexes.get(t.locatorHash);)await Ae;let[T,O,U]=await I();T||this.markedFiles.add(O);let V=()=>this.refCountedZipFsCache.addOrCreate(O,()=>T?h():new ps(O,{baseFs:p,readOnly:!0})),te,ie=new cE(()=>x4(()=>(te=V(),te.value),Ae=>`Failed to open the cache entry for ${Yr(this.configuration,t)}: ${Ae}`),J),ue=new Gf(O,{baseFs:ie,pathUtils:J}),ae=()=>{te?.release()},ge=c.unstablePackages?.has(t.locatorHash)?null:U;return[ue,ae,ge]}},fit=/^(?:(?(?[0-9]+)(?.*))\/)?(?.*)$/});var vT,r0e=Xe(()=>{vT=(r=>(r[r.SCRIPT=0]="SCRIPT",r[r.SHELLCODE=1]="SHELLCODE",r))(vT||{})});var Ait,_I,nG=Xe(()=>{Dt();vc();Np();Zo();Ait=[[/^(git(?:\+(?:https|ssh))?:\/\/.*(?:\.git)?)#(.*)$/,(e,t,r,s)=>`${r}#commit=${s}`],[/^https:\/\/((?:[^/]+?)@)?codeload\.github\.com\/([^/]+\/[^/]+)\/tar\.gz\/([0-9a-f]+)$/,(e,t,r="",s,a)=>`https://${r}github.com/${s}.git#commit=${a}`],[/^https:\/\/((?:[^/]+?)@)?github\.com\/([^/]+\/[^/]+?)(?:\.git)?#([0-9a-f]+)$/,(e,t,r="",s,a)=>`https://${r}github.com/${s}.git#commit=${a}`],[/^https?:\/\/[^/]+\/(?:[^/]+\/)*(?:@.+(?:\/|(?:%2f)))?([^/]+)\/(?:-|download)\/\1-[^/]+\.tgz(?:#|$)/,e=>`npm:${e}`],[/^https:\/\/npm\.pkg\.github\.com\/download\/(?:@[^/]+)\/(?:[^/]+)\/(?:[^/]+)\/(?:[0-9a-f]+)(?:#|$)/,e=>`npm:${e}`],[/^https:\/\/npm\.fontawesome\.com\/(?:@[^/]+)\/([^/]+)\/-\/([^/]+)\/\1-\2.tgz(?:#|$)/,e=>`npm:${e}`],[/^https?:\/\/[^/]+\/.*\/(@[^/]+)\/([^/]+)\/-\/\1\/\2-(?:[.\d\w-]+)\.tgz(?:#|$)/,(e,t)=>xQ({protocol:"npm:",source:null,selector:e,params:{__archiveUrl:t}})],[/^[^/]+\.tgz#[0-9a-f]+$/,e=>`npm:${e}`]],_I=class{constructor(t){this.resolver=t;this.resolutions=null}async setup(t,{report:r}){let s=J.join(t.cwd,Er.lockfile);if(!le.existsSync(s))return;let a=await le.readFilePromise(s,"utf8"),n=cs(a);if(Object.hasOwn(n,"__metadata"))return;let c=this.resolutions=new Map;for(let f of Object.keys(n)){let p=TB(f);if(!p){r.reportWarning(14,`Failed to parse the string "${f}" into a proper descriptor`);continue}let h=yl(p.range)?Mn(p,`npm:${p.range}`):p,{version:E,resolved:C}=n[f];if(!C)continue;let S;for(let[I,T]of Ait){let O=C.match(I);if(O){S=T(E,...O);break}}if(!S){r.reportWarning(14,`${oi(t.configuration,h)}: Only some patterns can be imported from legacy lockfiles (not "${C}")`);continue}let x=h;try{let I=Zg(h.range),T=TB(I.selector,!0);T&&(x=T)}catch{}c.set(h.descriptorHash,Js(x,S))}}supportsDescriptor(t,r){return this.resolutions?this.resolutions.has(t.descriptorHash):!1}supportsLocator(t,r){return!1}shouldPersistResolution(t,r){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}bindDescriptor(t,r,s){return t}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){if(!this.resolutions)throw new Error("Assertion failed: The resolution store should have been setup");let a=this.resolutions.get(t.descriptorHash);if(!a)throw new Error("Assertion failed: The resolution should have been registered");let n=f8(a),c=s.project.configuration.normalizeDependency(n);return await this.resolver.getCandidates(c,r,s)}async getSatisfying(t,r,s,a){let[n]=await this.getCandidates(t,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(t,r){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}}});var uA,n0e=Xe(()=>{Fc();fv();Qc();uA=class extends yo{constructor({configuration:r,stdout:s,suggestInstall:a=!0}){super();this.errorCount=0;SB(this,{configuration:r}),this.configuration=r,this.stdout=s,this.suggestInstall=a}static async start(r,s){let a=new this(r);try{await s(a)}catch(n){a.reportExceptionOnce(n)}finally{await a.finalize()}return a}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(r){}reportCacheMiss(r){}startSectionSync(r,s){return s()}async startSectionPromise(r,s){return await s()}startTimerSync(r,s,a){return(typeof s=="function"?s:a)()}async startTimerPromise(r,s,a){return await(typeof s=="function"?s:a)()}reportSeparator(){}reportInfo(r,s){}reportWarning(r,s){}reportError(r,s){this.errorCount+=1,this.stdout.write(`${jt(this.configuration,"\u27A4","redBright")} ${this.formatNameWithHyperlink(r)}: ${s} +`)}reportProgress(r){return{...Promise.resolve().then(async()=>{for await(let{}of r);}),stop:()=>{}}}reportJson(r){}reportFold(r,s){}async finalize(){this.errorCount>0&&(this.stdout.write(` +`),this.stdout.write(`${jt(this.configuration,"\u27A4","redBright")} Errors happened when preparing the environment required to run this command. +`),this.suggestInstall&&this.stdout.write(`${jt(this.configuration,"\u27A4","redBright")} This might be caused by packages being missing from the lockfile, in which case running "yarn install" might help. +`))}formatNameWithHyperlink(r){return Qj(r,{configuration:this.configuration,json:!1})}}});var HI,iG=Xe(()=>{Zo();HI=class{constructor(t){this.resolver=t}supportsDescriptor(t,r){return!!(r.project.storedResolutions.get(t.descriptorHash)||r.project.originalPackages.has(DQ(t).locatorHash))}supportsLocator(t,r){return!!(r.project.originalPackages.has(t.locatorHash)&&!r.project.lockfileNeedsRefresh)}shouldPersistResolution(t,r){throw new Error("The shouldPersistResolution method shouldn't be called on the lockfile resolver, which would always answer yes")}bindDescriptor(t,r,s){return t}getResolutionDependencies(t,r){return this.resolver.getResolutionDependencies(t,r)}async getCandidates(t,r,s){let a=s.project.storedResolutions.get(t.descriptorHash);if(a){let c=s.project.originalPackages.get(a);if(c)return[c]}let n=s.project.originalPackages.get(DQ(t).locatorHash);if(n)return[n];throw new Error("Resolution expected from the lockfile data")}async getSatisfying(t,r,s,a){let[n]=await this.getCandidates(t,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(t,r){let s=r.project.originalPackages.get(t.locatorHash);if(!s)throw new Error("The lockfile resolver isn't meant to resolve packages - they should already have been stored into a cache");return s}}});function Jp(){}function pit(e,t,r,s,a){for(var n=0,c=t.length,f=0,p=0;nx.length?T:x}),h.value=e.join(E)}else h.value=e.join(r.slice(f,f+h.count));f+=h.count,h.added||(p+=h.count)}}var S=t[c-1];return c>1&&typeof S.value=="string"&&(S.added||S.removed)&&e.equals("",S.value)&&(t[c-2].value+=S.value,t.pop()),t}function hit(e){return{newPos:e.newPos,components:e.components.slice(0)}}function dit(e,t){if(typeof e=="function")t.callback=e;else if(e)for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);return t}function o0e(e,t,r){return r=dit(r,{ignoreWhitespace:!0}),cG.diff(e,t,r)}function git(e,t,r){return uG.diff(e,t,r)}function ST(e){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?ST=function(t){return typeof t}:ST=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ST(e)}function sG(e){return Eit(e)||Iit(e)||Cit(e)||wit()}function Eit(e){if(Array.isArray(e))return oG(e)}function Iit(e){if(typeof Symbol<"u"&&Symbol.iterator in Object(e))return Array.from(e)}function Cit(e,t){if(e){if(typeof e=="string")return oG(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return oG(e,t)}}function oG(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,s=new Array(t);r"u"&&(c.context=4);var f=git(r,s,c);if(!f)return;f.push({value:"",lines:[]});function p(U){return U.map(function(V){return" "+V})}for(var h=[],E=0,C=0,S=[],x=1,I=1,T=function(V){var te=f[V],ie=te.lines||te.value.replace(/\n$/,"").split(` +`);if(te.lines=ie,te.added||te.removed){var ue;if(!E){var ae=f[V-1];E=x,C=I,ae&&(S=c.context>0?p(ae.lines.slice(-c.context)):[],E-=S.length,C-=S.length)}(ue=S).push.apply(ue,sG(ie.map(function(me){return(te.added?"+":"-")+me}))),te.added?I+=ie.length:x+=ie.length}else{if(E)if(ie.length<=c.context*2&&V=f.length-2&&ie.length<=c.context){var d=/\n$/.test(r),Se=/\n$/.test(s),Be=ie.length==0&&S.length>Ee.oldLines;!d&&Be&&r.length>0&&S.splice(Ee.oldLines,0,"\\ No newline at end of file"),(!d&&!Be||!Se)&&S.push("\\ No newline at end of file")}h.push(Ee),E=0,C=0,S=[]}x+=ie.length,I+=ie.length}},O=0;O{Jp.prototype={diff:function(t,r){var s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},a=s.callback;typeof s=="function"&&(a=s,s={}),this.options=s;var n=this;function c(T){return a?(setTimeout(function(){a(void 0,T)},0),!0):T}t=this.castInput(t),r=this.castInput(r),t=this.removeEmpty(this.tokenize(t)),r=this.removeEmpty(this.tokenize(r));var f=r.length,p=t.length,h=1,E=f+p;s.maxEditLength&&(E=Math.min(E,s.maxEditLength));var C=[{newPos:-1,components:[]}],S=this.extractCommon(C[0],r,t,0);if(C[0].newPos+1>=f&&S+1>=p)return c([{value:this.join(r),count:r.length}]);function x(){for(var T=-1*h;T<=h;T+=2){var O=void 0,U=C[T-1],V=C[T+1],te=(V?V.newPos:0)-T;U&&(C[T-1]=void 0);var ie=U&&U.newPos+1=f&&te+1>=p)return c(pit(n,O.components,r,t,n.useLongestToken));C[T]=O}h++}if(a)(function T(){setTimeout(function(){if(h>E)return a();x()||T()},0)})();else for(;h<=E;){var I=x();if(I)return I}},pushComponent:function(t,r,s){var a=t[t.length-1];a&&a.added===r&&a.removed===s?t[t.length-1]={count:a.count+1,added:r,removed:s}:t.push({count:1,added:r,removed:s})},extractCommon:function(t,r,s,a){for(var n=r.length,c=s.length,f=t.newPos,p=f-a,h=0;f+1"u"?r:c}:s;return typeof e=="string"?e:JSON.stringify(aG(e,null,null,a),a," ")};Hv.equals=function(e,t){return Jp.prototype.equals.call(Hv,e.replace(/,([\r\n])/g,"$1"),t.replace(/,([\r\n])/g,"$1"))};lG=new Jp;lG.tokenize=function(e){return e.slice()};lG.join=lG.removeEmpty=function(e){return e}});var DT,l0e=Xe(()=>{Fc();DT=class{constructor(t){this.resolver=t}supportsDescriptor(t,r){return this.resolver.supportsDescriptor(t,r)}supportsLocator(t,r){return this.resolver.supportsLocator(t,r)}shouldPersistResolution(t,r){return this.resolver.shouldPersistResolution(t,r)}bindDescriptor(t,r,s){return this.resolver.bindDescriptor(t,r,s)}getResolutionDependencies(t,r){return this.resolver.getResolutionDependencies(t,r)}async getCandidates(t,r,s){throw new Lt(20,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}async getSatisfying(t,r,s,a){throw new Lt(20,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}async resolve(t,r){throw new Lt(20,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}}});var ki,AG=Xe(()=>{Fc();ki=class extends yo{reportCacheHit(t){}reportCacheMiss(t){}startSectionSync(t,r){return r()}async startSectionPromise(t,r){return await r()}startTimerSync(t,r,s){return(typeof r=="function"?r:s)()}async startTimerPromise(t,r,s){return await(typeof r=="function"?r:s)()}reportSeparator(){}reportInfo(t,r){}reportWarning(t,r){}reportError(t,r){}reportProgress(t){return{...Promise.resolve().then(async()=>{for await(let{}of t);}),stop:()=>{}}}reportJson(t){}reportFold(t,r){}async finalize(){}}});var c0e,jI,pG=Xe(()=>{Dt();c0e=et(wQ());cI();$g();Qc();E0();Np();Zo();jI=class{constructor(t,{project:r}){this.workspacesCwds=new Set;this.project=r,this.cwd=t}async setup(){this.manifest=await _t.tryFind(this.cwd)??new _t,this.relativeCwd=J.relative(this.project.cwd,this.cwd)||vt.dot;let t=this.manifest.name?this.manifest.name:ka(null,`${this.computeCandidateName()}-${fs(this.relativeCwd).substring(0,6)}`);this.anchoredDescriptor=Mn(t,`${Ii.protocol}${this.relativeCwd}`),this.anchoredLocator=Js(t,`${Ii.protocol}${this.relativeCwd}`);let r=this.manifest.workspaceDefinitions.map(({pattern:a})=>a);if(r.length===0)return;let s=await(0,c0e.default)(r,{cwd:fe.fromPortablePath(this.cwd),onlyDirectories:!0,ignore:["**/node_modules","**/.git","**/.yarn"]});s.sort(),await s.reduce(async(a,n)=>{let c=J.resolve(this.cwd,fe.toPortablePath(n)),f=await le.existsPromise(J.join(c,"package.json"));await a,f&&this.workspacesCwds.add(c)},Promise.resolve())}get anchoredPackage(){let t=this.project.storedPackages.get(this.anchoredLocator.locatorHash);if(!t)throw new Error(`Assertion failed: Expected workspace ${NB(this.project.configuration,this)} (${jt(this.project.configuration,J.join(this.cwd,Er.manifest),dt.PATH)}) to have been resolved. Run "yarn install" to update the lockfile`);return t}accepts(t){let r=t.indexOf(":"),s=r!==-1?t.slice(0,r+1):null,a=r!==-1?t.slice(r+1):t;if(s===Ii.protocol&&J.normalize(a)===this.relativeCwd||s===Ii.protocol&&(a==="*"||a==="^"||a==="~"))return!0;let n=yl(a);return n?s===Ii.protocol?n.test(this.manifest.version??"0.0.0"):this.project.configuration.get("enableTransparentWorkspaces")&&this.manifest.version!==null?n.test(this.manifest.version):!1:!1}computeCandidateName(){return this.cwd===this.project.cwd?"root-workspace":`${J.basename(this.cwd)}`||"unnamed-workspace"}getRecursiveWorkspaceDependencies({dependencies:t=_t.hardDependencies}={}){let r=new Set,s=a=>{for(let n of t)for(let c of a.manifest[n].values()){let f=this.project.tryWorkspaceByDescriptor(c);f===null||r.has(f)||(r.add(f),s(f))}};return s(this),r}getRecursiveWorkspaceDependents({dependencies:t=_t.hardDependencies}={}){let r=new Set,s=a=>{for(let n of this.project.workspaces)t.some(f=>[...n.manifest[f].values()].some(p=>{let h=this.project.tryWorkspaceByDescriptor(p);return h!==null&&RB(h.anchoredLocator,a.anchoredLocator)}))&&!r.has(n)&&(r.add(n),s(n))};return s(this),r}getRecursiveWorkspaceChildren(){let t=new Set([this]);for(let r of t)for(let s of r.workspacesCwds){let a=this.project.workspacesByCwd.get(s);a&&t.add(a)}return t.delete(this),Array.from(t)}async persistManifest(){let t={};this.manifest.exportTo(t);let r=J.join(this.cwd,_t.fileName),s=`${JSON.stringify(t,null,this.manifest.indent)} +`;await le.changeFilePromise(r,s,{automaticNewlines:!0}),this.manifest.raw=t}}});function xit({project:e,allDescriptors:t,allResolutions:r,allPackages:s,accessibleLocators:a=new Set,optionalBuilds:n=new Set,peerRequirements:c=new Map,peerWarnings:f=[],peerRequirementNodes:p=new Map,volatileDescriptors:h=new Set}){let E=new Map,C=[],S=new Map,x=new Map,I=new Map,T=new Map,O=new Map,U=new Map(e.workspaces.map(ae=>{let ge=ae.anchoredLocator.locatorHash,Ae=s.get(ge);if(typeof Ae>"u")throw new Error("Assertion failed: The workspace should have an associated package");return[ge,xB(Ae)]})),V=()=>{let ae=le.mktempSync(),ge=J.join(ae,"stacktrace.log"),Ae=String(C.length+1).length,Ce=C.map((Ee,d)=>`${`${d+1}.`.padStart(Ae," ")} ${ml(Ee)} +`).join("");throw le.writeFileSync(ge,Ce),le.detachTemp(ae),new Lt(45,`Encountered a stack overflow when resolving peer dependencies; cf ${fe.fromPortablePath(ge)}`)},te=ae=>{let ge=r.get(ae.descriptorHash);if(typeof ge>"u")throw new Error("Assertion failed: The resolution should have been registered");let Ae=s.get(ge);if(!Ae)throw new Error("Assertion failed: The package could not be found");return Ae},ie=(ae,ge,Ae,{top:Ce,optional:Ee})=>{C.length>1e3&&V(),C.push(ge);let d=ue(ae,ge,Ae,{top:Ce,optional:Ee});return C.pop(),d},ue=(ae,ge,Ae,{top:Ce,optional:Ee})=>{if(Ee||n.delete(ge.locatorHash),a.has(ge.locatorHash))return;a.add(ge.locatorHash);let d=s.get(ge.locatorHash);if(!d)throw new Error(`Assertion failed: The package (${Yr(e.configuration,ge)}) should have been registered`);let Se=new Set,Be=new Map,me=[],ce=[],Z=[],De=[];for(let Qe of Array.from(d.dependencies.values())){if(d.peerDependencies.has(Qe.identHash)&&d.locatorHash!==Ce)continue;if(Rp(Qe))throw new Error("Assertion failed: Virtual packages shouldn't be encountered when virtualizing a branch");h.delete(Qe.descriptorHash);let st=Ee;if(!st){let Re=d.dependenciesMeta.get(fn(Qe));if(typeof Re<"u"){let ct=Re.get(null);typeof ct<"u"&&ct.optional&&(st=!0)}}let _=r.get(Qe.descriptorHash);if(!_)throw new Error(`Assertion failed: The resolution (${oi(e.configuration,Qe)}) should have been registered`);let tt=U.get(_)||s.get(_);if(!tt)throw new Error(`Assertion failed: The package (${_}, resolved from ${oi(e.configuration,Qe)}) should have been registered`);if(tt.peerDependencies.size===0){ie(Qe,tt,new Map,{top:Ce,optional:st});continue}let Ne,ke,be=new Set,je=new Map;me.push(()=>{Ne=p8(Qe,ge.locatorHash),ke=h8(tt,ge.locatorHash),d.dependencies.set(Qe.identHash,Ne),r.set(Ne.descriptorHash,ke.locatorHash),t.set(Ne.descriptorHash,Ne),s.set(ke.locatorHash,ke),xp(T,ke.locatorHash).add(Ne.descriptorHash),Se.add(ke.locatorHash)}),ce.push(()=>{O.set(ke.locatorHash,je);for(let Re of ke.peerDependencies.values()){let Me=Zl(Be,Re.identHash,()=>{let P=Ae.get(Re.identHash)??null,w=d.dependencies.get(Re.identHash);return!w&&QB(ge,Re)&&(ae.identHash===ge.identHash?w=ae:(w=Mn(ge,ae.range),t.set(w.descriptorHash,w),r.set(w.descriptorHash,ge.locatorHash),h.delete(w.descriptorHash),P=null)),w||(w=Mn(Re,"missing:")),{subject:ge,ident:Re,provided:w,root:!P,requests:new Map,hash:`p${fs(ge.locatorHash,Re.identHash).slice(0,6)}`}}).provided;if(Me.range==="missing:"&&ke.dependencies.has(Re.identHash)){ke.peerDependencies.delete(Re.identHash);continue}if(je.set(Re.identHash,{requester:ke,descriptor:Re,meta:ke.peerDependenciesMeta.get(fn(Re)),children:new Map}),ke.dependencies.set(Re.identHash,Me),Rp(Me)){let P=r.get(Me.descriptorHash);xp(I,P).add(ke.locatorHash)}S.set(Me.identHash,Me),Me.range==="missing:"&&be.add(Me.identHash)}ke.dependencies=new Map(Vs(ke.dependencies,([Re,ct])=>fn(ct)))}),Z.push(()=>{if(!s.has(ke.locatorHash))return;let Re=E.get(tt.locatorHash);typeof Re=="number"&&Re>=2&&V();let ct=E.get(tt.locatorHash),Me=typeof ct<"u"?ct+1:1;E.set(tt.locatorHash,Me),ie(Ne,ke,je,{top:Ce,optional:st}),E.set(tt.locatorHash,Me-1)}),De.push(()=>{let Re=r.get(Ne.descriptorHash);if(typeof Re>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");let ct=O.get(Re);if(typeof ct>"u")throw new Error("Assertion failed: Expected the peer requests to be registered");for(let Me of Be.values()){let P=ct.get(Me.ident.identHash);P&&(Me.requests.set(Ne.descriptorHash,P),p.set(Me.hash,Me),Me.root||Ae.get(Me.ident.identHash)?.children.set(Ne.descriptorHash,P))}if(s.has(ke.locatorHash))for(let Me of be)ke.dependencies.delete(Me)})}for(let Qe of[...me,...ce])Qe();for(let Qe of Se){Se.delete(Qe);let st=s.get(Qe),_=fs(sI(st).locatorHash,...Array.from(st.dependencies.values(),be=>{let je=be.range!=="missing:"?r.get(be.descriptorHash):"missing:";if(typeof je>"u")throw new Error(`Assertion failed: Expected the resolution for ${oi(e.configuration,be)} to have been registered`);return je===Ce?`${je} (top)`:je})),tt=x.get(_);if(typeof tt>"u"){x.set(_,st);continue}let Ne=xp(T,tt.locatorHash);for(let be of T.get(st.locatorHash)??[])r.set(be,tt.locatorHash),Ne.add(be);s.delete(st.locatorHash),a.delete(st.locatorHash),Se.delete(st.locatorHash);let ke=I.get(st.locatorHash);if(ke!==void 0){let be=xp(I,tt.locatorHash);for(let je of ke)be.add(je),Se.add(je)}}for(let Qe of[...Z,...De])Qe()};for(let ae of e.workspaces){let ge=ae.anchoredLocator;h.delete(ae.anchoredDescriptor.descriptorHash),ie(ae.anchoredDescriptor,ge,new Map,{top:ge.locatorHash,optional:!1})}for(let ae of p.values()){if(!ae.root)continue;let ge=s.get(ae.subject.locatorHash);if(typeof ge>"u")continue;for(let Ce of ae.requests.values()){let Ee=`p${fs(ae.subject.locatorHash,fn(ae.ident),Ce.requester.locatorHash).slice(0,6)}`;c.set(Ee,{subject:ae.subject.locatorHash,requested:ae.ident,rootRequester:Ce.requester.locatorHash,allRequesters:Array.from(OB(Ce),d=>d.requester.locatorHash)})}let Ae=[...OB(ae)];if(ae.provided.range!=="missing:"){let Ce=te(ae.provided),Ee=Ce.version??"0.0.0",d=Be=>{if(Be.startsWith(Ii.protocol)){if(!e.tryWorkspaceByLocator(Ce))return null;Be=Be.slice(Ii.protocol.length),(Be==="^"||Be==="~")&&(Be="*")}return Be},Se=!0;for(let Be of Ae){let me=d(Be.descriptor.range);if(me===null){Se=!1;continue}if(!tA(Ee,me)){Se=!1;let ce=`p${fs(ae.subject.locatorHash,fn(ae.ident),Be.requester.locatorHash).slice(0,6)}`;f.push({type:1,subject:ge,requested:ae.ident,requester:Be.requester,version:Ee,hash:ce,requirementCount:Ae.length})}}if(!Se){let Be=Ae.map(me=>d(me.descriptor.range));f.push({type:3,node:ae,range:Be.includes(null)?null:m8(Be),hash:ae.hash})}}else{let Ce=!0;for(let Ee of Ae)if(!Ee.meta?.optional){Ce=!1;let d=`p${fs(ae.subject.locatorHash,fn(ae.ident),Ee.requester.locatorHash).slice(0,6)}`;f.push({type:0,subject:ge,requested:ae.ident,requester:Ee.requester,hash:d})}Ce||f.push({type:2,node:ae,hash:ae.hash})}}}function*kit(e){let t=new Map;if("children"in e)t.set(e,e);else for(let r of e.requests.values())t.set(r,r);for(let[r,s]of t){yield{request:r,root:s};for(let a of r.children.values())t.has(a)||t.set(a,s)}}function Qit(e,t){let r=[],s=[],a=!1;for(let n of e.peerWarnings)if(!(n.type===1||n.type===0)){if(!e.tryWorkspaceByLocator(n.node.subject)){a=!0;continue}if(n.type===3){let c=e.storedResolutions.get(n.node.provided.descriptorHash);if(typeof c>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");let f=e.storedPackages.get(c);if(typeof f>"u")throw new Error("Assertion failed: Expected the package to be registered");let p=A0(kit(n.node),({request:C,root:S})=>tA(f.version??"0.0.0",C.descriptor.range)?A0.skip:C===S?$i(e.configuration,C.requester):`${$i(e.configuration,C.requester)} (via ${$i(e.configuration,S.requester)})`),h=[...OB(n.node)].length>1?"and other dependencies request":"requests",E=n.range?aI(e.configuration,n.range):jt(e.configuration,"but they have non-overlapping ranges!","redBright");r.push(`${$i(e.configuration,n.node.ident)} is listed by your project with version ${FB(e.configuration,f.version??"0.0.0")} (${jt(e.configuration,n.hash,dt.CODE)}), which doesn't satisfy what ${p} ${h} (${E}).`)}if(n.type===2){let c=n.node.requests.size>1?" and other dependencies":"";s.push(`${Yr(e.configuration,n.node.subject)} doesn't provide ${$i(e.configuration,n.node.ident)} (${jt(e.configuration,n.hash,dt.CODE)}), requested by ${$i(e.configuration,n.node.requests.values().next().value.requester)}${c}.`)}}t.startSectionSync({reportFooter:()=>{t.reportWarning(86,`Some peer dependencies are incorrectly met by your project; run ${jt(e.configuration,"yarn explain peer-requirements ",dt.CODE)} for details, where ${jt(e.configuration,"",dt.CODE)} is the six-letter p-prefixed code.`)},skipIfEmpty:!0},()=>{for(let n of Vs(r,c=>XE.default(c)))t.reportWarning(60,n);for(let n of Vs(s,c=>XE.default(c)))t.reportWarning(2,n)}),a&&t.reportWarning(86,`Some peer dependencies are incorrectly met by dependencies; run ${jt(e.configuration,"yarn explain peer-requirements",dt.CODE)} for details.`)}var bT,PT,A0e,gG,dG,mG,xT,vit,Sit,u0e,Dit,bit,Pit,Oa,hG,kT,f0e,Rt,p0e=Xe(()=>{Dt();Dt();vc();Yt();bT=Ie("crypto");fG();zl();PT=et(Ng()),A0e=et(pi()),gG=Ie("util"),dG=et(Ie("v8")),mG=et(Ie("zlib"));rG();$B();nG();iG();cI();I8();Fc();l0e();fv();AG();$g();pG();OQ();Qc();E0();kc();hR();Oj();Np();Zo();xT=KE(process.env.YARN_LOCKFILE_VERSION_OVERRIDE??9),vit=3,Sit=/ *, */g,u0e=/\/$/,Dit=32,bit=(0,gG.promisify)(mG.default.gzip),Pit=(0,gG.promisify)(mG.default.gunzip),Oa=(r=>(r.UpdateLockfile="update-lockfile",r.SkipBuild="skip-build",r))(Oa||{}),hG={restoreLinkersCustomData:["linkersCustomData"],restoreResolutions:["accessibleLocators","conditionalLocators","disabledLocators","optionalBuilds","storedDescriptors","storedResolutions","storedPackages","lockFileChecksum"],restoreBuildState:["skippedBuilds","storedBuildState"]},kT=(a=>(a[a.NotProvided=0]="NotProvided",a[a.NotCompatible=1]="NotCompatible",a[a.NodeNotProvided=2]="NodeNotProvided",a[a.NodeNotCompatible=3]="NodeNotCompatible",a))(kT||{}),f0e=e=>fs(`${vit}`,e),Rt=class e{constructor(t,{configuration:r}){this.resolutionAliases=new Map;this.workspaces=[];this.workspacesByCwd=new Map;this.workspacesByIdent=new Map;this.storedResolutions=new Map;this.storedDescriptors=new Map;this.storedPackages=new Map;this.storedChecksums=new Map;this.storedBuildState=new Map;this.accessibleLocators=new Set;this.conditionalLocators=new Set;this.disabledLocators=new Set;this.originalPackages=new Map;this.optionalBuilds=new Set;this.skippedBuilds=new Set;this.lockfileLastVersion=null;this.lockfileNeedsRefresh=!1;this.peerRequirements=new Map;this.peerWarnings=[];this.peerRequirementNodes=new Map;this.linkersCustomData=new Map;this.lockFileChecksum=null;this.installStateChecksum=null;this.configuration=r,this.cwd=t}static async find(t,r){if(!t.projectCwd)throw new it(`No project found in ${r}`);let s=t.projectCwd,a=r,n=null;for(;n!==t.projectCwd;){if(n=a,le.existsSync(J.join(n,Er.manifest))){s=n;break}a=J.dirname(n)}let c=new e(t.projectCwd,{configuration:t});ze.telemetry?.reportProject(c.cwd),await c.setupResolutions(),await c.setupWorkspaces(),ze.telemetry?.reportWorkspaceCount(c.workspaces.length),ze.telemetry?.reportDependencyCount(c.workspaces.reduce((I,T)=>I+T.manifest.dependencies.size+T.manifest.devDependencies.size,0));let f=c.tryWorkspaceByCwd(s);if(f)return{project:c,workspace:f,locator:f.anchoredLocator};let p=await c.findLocatorForLocation(`${s}/`,{strict:!0});if(p)return{project:c,locator:p,workspace:null};let h=jt(t,c.cwd,dt.PATH),E=jt(t,J.relative(c.cwd,s),dt.PATH),C=`- If ${h} isn't intended to be a project, remove any yarn.lock and/or package.json file there.`,S=`- If ${h} is intended to be a project, it might be that you forgot to list ${E} in its workspace configuration.`,x=`- Finally, if ${h} is fine and you intend ${E} to be treated as a completely separate project (not even a workspace), create an empty yarn.lock file in it.`;throw new it(`The nearest package directory (${jt(t,s,dt.PATH)}) doesn't seem to be part of the project declared in ${jt(t,c.cwd,dt.PATH)}. + +${[C,S,x].join(` +`)}`)}async setupResolutions(){this.storedResolutions=new Map,this.storedDescriptors=new Map,this.storedPackages=new Map,this.lockFileChecksum=null;let t=J.join(this.cwd,Er.lockfile),r=this.configuration.get("defaultLanguageName");if(le.existsSync(t)){let s=await le.readFilePromise(t,"utf8");this.lockFileChecksum=f0e(s);let a=cs(s);if(a.__metadata){let n=a.__metadata.version,c=a.__metadata.cacheKey;this.lockfileLastVersion=n,this.lockfileNeedsRefresh=n"u")throw new Error(`Assertion failed: Expected the lockfile entry to have a resolution field (${f})`);let h=Tp(p.resolution,!0),E=new _t;E.load(p,{yamlCompatibilityMode:!0});let C=E.version,S=E.languageName||r,x=p.linkType.toUpperCase(),I=p.conditions??null,T=E.dependencies,O=E.peerDependencies,U=E.dependenciesMeta,V=E.peerDependenciesMeta,te=E.bin;if(p.checksum!=null){let ue=typeof c<"u"&&!p.checksum.includes("/")?`${c}/${p.checksum}`:p.checksum;this.storedChecksums.set(h.locatorHash,ue)}let ie={...h,version:C,languageName:S,linkType:x,conditions:I,dependencies:T,peerDependencies:O,dependenciesMeta:U,peerDependenciesMeta:V,bin:te};this.originalPackages.set(ie.locatorHash,ie);for(let ue of f.split(Sit)){let ae=I0(ue);n<=6&&(ae=this.configuration.normalizeDependency(ae),ae=Mn(ae,ae.range.replace(/^patch:[^@]+@(?!npm(:|%3A))/,"$1npm%3A"))),this.storedDescriptors.set(ae.descriptorHash,ae),this.storedResolutions.set(ae.descriptorHash,h.locatorHash)}}}else s.includes("yarn lockfile v1")&&(this.lockfileLastVersion=-1)}}async setupWorkspaces(){this.workspaces=[],this.workspacesByCwd=new Map,this.workspacesByIdent=new Map;let t=new Set,r=(0,PT.default)(4),s=async(a,n)=>{if(t.has(n))return a;t.add(n);let c=new jI(n,{project:this});await r(()=>c.setup());let f=a.then(()=>{this.addWorkspace(c)});return Array.from(c.workspacesCwds).reduce(s,f)};await s(Promise.resolve(),this.cwd)}addWorkspace(t){let r=this.workspacesByIdent.get(t.anchoredLocator.identHash);if(typeof r<"u")throw new Error(`Duplicate workspace name ${$i(this.configuration,t.anchoredLocator)}: ${fe.fromPortablePath(t.cwd)} conflicts with ${fe.fromPortablePath(r.cwd)}`);this.workspaces.push(t),this.workspacesByCwd.set(t.cwd,t),this.workspacesByIdent.set(t.anchoredLocator.identHash,t)}get topLevelWorkspace(){return this.getWorkspaceByCwd(this.cwd)}tryWorkspaceByCwd(t){J.isAbsolute(t)||(t=J.resolve(this.cwd,t)),t=J.normalize(t).replace(/\/+$/,"");let r=this.workspacesByCwd.get(t);return r||null}getWorkspaceByCwd(t){let r=this.tryWorkspaceByCwd(t);if(!r)throw new Error(`Workspace not found (${t})`);return r}tryWorkspaceByFilePath(t){let r=null;for(let s of this.workspaces)J.relative(s.cwd,t).startsWith("../")||r&&r.cwd.length>=s.cwd.length||(r=s);return r||null}getWorkspaceByFilePath(t){let r=this.tryWorkspaceByFilePath(t);if(!r)throw new Error(`Workspace not found (${t})`);return r}tryWorkspaceByIdent(t){let r=this.workspacesByIdent.get(t.identHash);return typeof r>"u"?null:r}getWorkspaceByIdent(t){let r=this.tryWorkspaceByIdent(t);if(!r)throw new Error(`Workspace not found (${$i(this.configuration,t)})`);return r}tryWorkspaceByDescriptor(t){if(t.range.startsWith(Ii.protocol)){let s=t.range.slice(Ii.protocol.length);if(s!=="^"&&s!=="~"&&s!=="*"&&!yl(s))return this.tryWorkspaceByCwd(s)}let r=this.tryWorkspaceByIdent(t);return r===null||(Rp(t)&&(t=kB(t)),!r.accepts(t.range))?null:r}getWorkspaceByDescriptor(t){let r=this.tryWorkspaceByDescriptor(t);if(r===null)throw new Error(`Workspace not found (${oi(this.configuration,t)})`);return r}tryWorkspaceByLocator(t){let r=this.tryWorkspaceByIdent(t);return r===null||(Hu(t)&&(t=sI(t)),r.anchoredLocator.locatorHash!==t.locatorHash)?null:r}getWorkspaceByLocator(t){let r=this.tryWorkspaceByLocator(t);if(!r)throw new Error(`Workspace not found (${Yr(this.configuration,t)})`);return r}deleteDescriptor(t){this.storedResolutions.delete(t),this.storedDescriptors.delete(t)}deleteLocator(t){this.originalPackages.delete(t),this.storedPackages.delete(t),this.accessibleLocators.delete(t)}forgetResolution(t){if("descriptorHash"in t){let r=this.storedResolutions.get(t.descriptorHash);this.deleteDescriptor(t.descriptorHash);let s=new Set(this.storedResolutions.values());typeof r<"u"&&!s.has(r)&&this.deleteLocator(r)}if("locatorHash"in t){this.deleteLocator(t.locatorHash);for(let[r,s]of this.storedResolutions)s===t.locatorHash&&this.deleteDescriptor(r)}}forgetTransientResolutions(){let t=this.configuration.makeResolver(),r=new Map;for(let[s,a]of this.storedResolutions.entries()){let n=r.get(a);n||r.set(a,n=new Set),n.add(s)}for(let s of this.originalPackages.values()){let a;try{a=t.shouldPersistResolution(s,{project:this,resolver:t})}catch{a=!1}if(!a){this.deleteLocator(s.locatorHash);let n=r.get(s.locatorHash);if(n){r.delete(s.locatorHash);for(let c of n)this.deleteDescriptor(c)}}}}forgetVirtualResolutions(){for(let t of this.storedPackages.values())for(let[r,s]of t.dependencies)Rp(s)&&t.dependencies.set(r,kB(s))}getDependencyMeta(t,r){let s={},n=this.topLevelWorkspace.manifest.dependenciesMeta.get(fn(t));if(!n)return s;let c=n.get(null);if(c&&Object.assign(s,c),r===null||!A0e.default.valid(r))return s;for(let[f,p]of n)f!==null&&f===r&&Object.assign(s,p);return s}async findLocatorForLocation(t,{strict:r=!1}={}){let s=new ki,a=this.configuration.getLinkers(),n={project:this,report:s};for(let c of a){let f=await c.findPackageLocator(t,n);if(f){if(r&&(await c.findPackageLocation(f,n)).replace(u0e,"")!==t.replace(u0e,""))continue;return f}}return null}async loadUserConfig(){let t=J.join(this.cwd,".pnp.cjs");await le.existsPromise(t)&&kp(t).setup();let r=J.join(this.cwd,"yarn.config.cjs");return await le.existsPromise(r)?kp(r):null}async preparePackage(t,{resolver:r,resolveOptions:s}){let a=await this.configuration.getPackageExtensions(),n=this.configuration.normalizePackage(t,{packageExtensions:a});for(let[c,f]of n.dependencies){let p=await this.configuration.reduceHook(E=>E.reduceDependency,f,this,n,f,{resolver:r,resolveOptions:s});if(!QB(f,p))throw new Error("Assertion failed: The descriptor ident cannot be changed through aliases");let h=r.bindDescriptor(p,n,s);n.dependencies.set(c,h)}return n}async resolveEverything(t){if(!this.workspacesByCwd||!this.workspacesByIdent)throw new Error("Workspaces must have been setup before calling this function");this.forgetVirtualResolutions();let r=new Map(this.originalPackages),s=[];t.lockfileOnly||this.forgetTransientResolutions();let a=t.resolver||this.configuration.makeResolver(),n=new _I(a);await n.setup(this,{report:t.report});let c=t.lockfileOnly?[new DT(a)]:[n,a],f=new em([new HI(a),...c]),p=new em([...c]),h=this.configuration.makeFetcher(),E=t.lockfileOnly?{project:this,report:t.report,resolver:f}:{project:this,report:t.report,resolver:f,fetchOptions:{project:this,cache:t.cache,checksums:this.storedChecksums,report:t.report,fetcher:h,cacheOptions:{mirrorWriteOnly:!0}}},C=new Map,S=new Map,x=new Map,I=new Map,T=new Map,O=new Map,U=this.topLevelWorkspace.anchoredLocator,V=new Set,te=[],ie=zH(),ue=this.configuration.getSupportedArchitectures();await t.report.startProgressPromise(yo.progressViaTitle(),async ce=>{let Z=async tt=>{let Ne=await VE(async()=>await f.resolve(tt,E),Re=>`${Yr(this.configuration,tt)}: ${Re}`);if(!RB(tt,Ne))throw new Error(`Assertion failed: The locator cannot be changed by the resolver (went from ${Yr(this.configuration,tt)} to ${Yr(this.configuration,Ne)})`);I.set(Ne.locatorHash,Ne),!r.delete(Ne.locatorHash)&&!this.tryWorkspaceByLocator(Ne)&&s.push(Ne);let be=await this.preparePackage(Ne,{resolver:f,resolveOptions:E}),je=Lu([...be.dependencies.values()].map(Re=>_(Re)));return te.push(je),je.catch(()=>{}),S.set(be.locatorHash,be),be},De=async tt=>{let Ne=T.get(tt.locatorHash);if(typeof Ne<"u")return Ne;let ke=Promise.resolve().then(()=>Z(tt));return T.set(tt.locatorHash,ke),ke},Qe=async(tt,Ne)=>{let ke=await _(Ne);return C.set(tt.descriptorHash,tt),x.set(tt.descriptorHash,ke.locatorHash),ke},st=async tt=>{ce.setTitle(oi(this.configuration,tt));let Ne=this.resolutionAliases.get(tt.descriptorHash);if(typeof Ne<"u")return Qe(tt,this.storedDescriptors.get(Ne));let ke=f.getResolutionDependencies(tt,E),be=Object.fromEntries(await Lu(Object.entries(ke).map(async([ct,Me])=>{let P=f.bindDescriptor(Me,U,E),w=await _(P);return V.add(w.locatorHash),[ct,w]}))),Re=(await VE(async()=>await f.getCandidates(tt,be,E),ct=>`${oi(this.configuration,tt)}: ${ct}`))[0];if(typeof Re>"u")throw new Lt(82,`${oi(this.configuration,tt)}: No candidates found`);if(t.checkResolutions){let{locators:ct}=await p.getSatisfying(tt,be,[Re],{...E,resolver:p});if(!ct.find(Me=>Me.locatorHash===Re.locatorHash))throw new Lt(78,`Invalid resolution ${DB(this.configuration,tt,Re)}`)}return C.set(tt.descriptorHash,tt),x.set(tt.descriptorHash,Re.locatorHash),De(Re)},_=tt=>{let Ne=O.get(tt.descriptorHash);if(typeof Ne<"u")return Ne;C.set(tt.descriptorHash,tt);let ke=Promise.resolve().then(()=>st(tt));return O.set(tt.descriptorHash,ke),ke};for(let tt of this.workspaces){let Ne=tt.anchoredDescriptor;te.push(_(Ne))}for(;te.length>0;){let tt=[...te];te.length=0,await Lu(tt)}});let ae=Xl(r.values(),ce=>this.tryWorkspaceByLocator(ce)?Xl.skip:ce);if(s.length>0||ae.length>0){let ce=new Set(this.workspaces.flatMap(tt=>{let Ne=S.get(tt.anchoredLocator.locatorHash);if(!Ne)throw new Error("Assertion failed: The workspace should have been resolved");return Array.from(Ne.dependencies.values(),ke=>{let be=x.get(ke.descriptorHash);if(!be)throw new Error("Assertion failed: The resolution should have been registered");return be})})),Z=tt=>ce.has(tt.locatorHash)?"0":"1",De=tt=>ml(tt),Qe=Vs(s,[Z,De]),st=Vs(ae,[Z,De]),_=t.report.getRecommendedLength();Qe.length>0&&t.report.reportInfo(85,`${jt(this.configuration,"+",dt.ADDED)} ${Zk(this.configuration,Qe,_)}`),st.length>0&&t.report.reportInfo(85,`${jt(this.configuration,"-",dt.REMOVED)} ${Zk(this.configuration,st,_)}`)}let ge=new Set(this.resolutionAliases.values()),Ae=new Set(S.keys()),Ce=new Set,Ee=new Map,d=[],Se=new Map;xit({project:this,accessibleLocators:Ce,volatileDescriptors:ge,optionalBuilds:Ae,peerRequirements:Ee,peerWarnings:d,peerRequirementNodes:Se,allDescriptors:C,allResolutions:x,allPackages:S});for(let ce of V)Ae.delete(ce);for(let ce of ge)C.delete(ce),x.delete(ce);let Be=new Set,me=new Set;for(let ce of S.values())ce.conditions!=null&&Ae.has(ce.locatorHash)&&(QQ(ce,ue)||(QQ(ce,ie)&&t.report.reportWarningOnce(77,`${Yr(this.configuration,ce)}: Your current architecture (${process.platform}-${process.arch}) is supported by this package, but is missing from the ${jt(this.configuration,"supportedArchitectures",dt.SETTING)} setting`),me.add(ce.locatorHash)),Be.add(ce.locatorHash));this.storedResolutions=x,this.storedDescriptors=C,this.storedPackages=S,this.accessibleLocators=Ce,this.conditionalLocators=Be,this.disabledLocators=me,this.originalPackages=I,this.optionalBuilds=Ae,this.peerRequirements=Ee,this.peerWarnings=d,this.peerRequirementNodes=Se}async fetchEverything({cache:t,report:r,fetcher:s,mode:a,persistProject:n=!0}){let c={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators},f=s||this.configuration.makeFetcher(),p={checksums:this.storedChecksums,project:this,cache:t,fetcher:f,report:r,cacheOptions:c},h=Array.from(new Set(Vs(this.storedResolutions.values(),[I=>{let T=this.storedPackages.get(I);if(!T)throw new Error("Assertion failed: The locator should have been registered");return ml(T)}])));a==="update-lockfile"&&(h=h.filter(I=>!this.storedChecksums.has(I)));let E=!1,C=yo.progressViaCounter(h.length);await r.reportProgress(C);let S=(0,PT.default)(Dit);if(await Lu(h.map(I=>S(async()=>{let T=this.storedPackages.get(I);if(!T)throw new Error("Assertion failed: The locator should have been registered");if(Hu(T))return;let O;try{O=await f.fetch(T,p)}catch(U){U.message=`${Yr(this.configuration,T)}: ${U.message}`,r.reportExceptionOnce(U),E=U;return}O.checksum!=null?this.storedChecksums.set(T.locatorHash,O.checksum):this.storedChecksums.delete(T.locatorHash),O.releaseFs&&O.releaseFs()}).finally(()=>{C.tick()}))),E)throw E;let x=n&&a!=="update-lockfile"?await this.cacheCleanup({cache:t,report:r}):null;if(r.cacheMisses.size>0||x){let T=(await Promise.all([...r.cacheMisses].map(async ae=>{let ge=this.storedPackages.get(ae),Ae=this.storedChecksums.get(ae)??null,Ce=t.getLocatorPath(ge,Ae);return(await le.statPromise(Ce)).size}))).reduce((ae,ge)=>ae+ge,0)-(x?.size??0),O=r.cacheMisses.size,U=x?.count??0,V=`${qk(O,{zero:"No new packages",one:"A package was",more:`${jt(this.configuration,O,dt.NUMBER)} packages were`})} added to the project`,te=`${qk(U,{zero:"none were",one:"one was",more:`${jt(this.configuration,U,dt.NUMBER)} were`})} removed`,ie=T!==0?` (${jt(this.configuration,T,dt.SIZE_DIFF)})`:"",ue=U>0?O>0?`${V}, and ${te}${ie}.`:`${V}, but ${te}${ie}.`:`${V}${ie}.`;r.reportInfo(13,ue)}}async linkEverything({cache:t,report:r,fetcher:s,mode:a}){let n={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators,skipIntegrityCheck:!0},c=s||this.configuration.makeFetcher(),f={checksums:this.storedChecksums,project:this,cache:t,fetcher:c,report:r,cacheOptions:n},p=this.configuration.getLinkers(),h={project:this,report:r},E=new Map(p.map(Be=>{let me=Be.makeInstaller(h),ce=Be.getCustomDataKey(),Z=this.linkersCustomData.get(ce);return typeof Z<"u"&&me.attachCustomData(Z),[Be,me]})),C=new Map,S=new Map,x=new Map,I=new Map(await Lu([...this.accessibleLocators].map(async Be=>{let me=this.storedPackages.get(Be);if(!me)throw new Error("Assertion failed: The locator should have been registered");return[Be,await c.fetch(me,f)]}))),T=[],O=new Set,U=[];for(let Be of this.accessibleLocators){let me=this.storedPackages.get(Be);if(typeof me>"u")throw new Error("Assertion failed: The locator should have been registered");let ce=I.get(me.locatorHash);if(typeof ce>"u")throw new Error("Assertion failed: The fetch result should have been registered");let Z=[],De=st=>{Z.push(st)},Qe=this.tryWorkspaceByLocator(me);if(Qe!==null){let st=[],{scripts:_}=Qe.manifest;for(let Ne of["preinstall","install","postinstall"])_.has(Ne)&&st.push({type:0,script:Ne});try{for(let[Ne,ke]of E)if(Ne.supportsPackage(me,h)&&(await ke.installPackage(me,ce,{holdFetchResult:De})).buildRequest!==null)throw new Error("Assertion failed: Linkers can't return build directives for workspaces; this responsibility befalls to the Yarn core")}finally{Z.length===0?ce.releaseFs?.():T.push(Lu(Z).catch(()=>{}).then(()=>{ce.releaseFs?.()}))}let tt=J.join(ce.packageFs.getRealPath(),ce.prefixPath);S.set(me.locatorHash,tt),!Hu(me)&&st.length>0&&x.set(me.locatorHash,{buildDirectives:st,buildLocations:[tt]})}else{let st=p.find(Ne=>Ne.supportsPackage(me,h));if(!st)throw new Lt(12,`${Yr(this.configuration,me)} isn't supported by any available linker`);let _=E.get(st);if(!_)throw new Error("Assertion failed: The installer should have been registered");let tt;try{tt=await _.installPackage(me,ce,{holdFetchResult:De})}finally{Z.length===0?ce.releaseFs?.():T.push(Lu(Z).then(()=>{}).then(()=>{ce.releaseFs?.()}))}C.set(me.locatorHash,st),S.set(me.locatorHash,tt.packageLocation),tt.buildRequest&&tt.packageLocation&&(tt.buildRequest.skipped?(O.add(me.locatorHash),this.skippedBuilds.has(me.locatorHash)||U.push([me,tt.buildRequest.explain])):x.set(me.locatorHash,{buildDirectives:tt.buildRequest.directives,buildLocations:[tt.packageLocation]}))}}let V=new Map;for(let Be of this.accessibleLocators){let me=this.storedPackages.get(Be);if(!me)throw new Error("Assertion failed: The locator should have been registered");let ce=this.tryWorkspaceByLocator(me)!==null,Z=async(De,Qe)=>{let st=S.get(me.locatorHash);if(typeof st>"u")throw new Error(`Assertion failed: The package (${Yr(this.configuration,me)}) should have been registered`);let _=[];for(let tt of me.dependencies.values()){let Ne=this.storedResolutions.get(tt.descriptorHash);if(typeof Ne>"u")throw new Error(`Assertion failed: The resolution (${oi(this.configuration,tt)}, from ${Yr(this.configuration,me)})should have been registered`);let ke=this.storedPackages.get(Ne);if(typeof ke>"u")throw new Error(`Assertion failed: The package (${Ne}, resolved from ${oi(this.configuration,tt)}) should have been registered`);let be=this.tryWorkspaceByLocator(ke)===null?C.get(Ne):null;if(typeof be>"u")throw new Error(`Assertion failed: The package (${Ne}, resolved from ${oi(this.configuration,tt)}) should have been registered`);be===De||be===null?S.get(ke.locatorHash)!==null&&_.push([tt,ke]):!ce&&st!==null&&CB(V,Ne).push(st)}st!==null&&await Qe.attachInternalDependencies(me,_)};if(ce)for(let[De,Qe]of E)De.supportsPackage(me,h)&&await Z(De,Qe);else{let De=C.get(me.locatorHash);if(!De)throw new Error("Assertion failed: The linker should have been found");let Qe=E.get(De);if(!Qe)throw new Error("Assertion failed: The installer should have been registered");await Z(De,Qe)}}for(let[Be,me]of V){let ce=this.storedPackages.get(Be);if(!ce)throw new Error("Assertion failed: The package should have been registered");let Z=C.get(ce.locatorHash);if(!Z)throw new Error("Assertion failed: The linker should have been found");let De=E.get(Z);if(!De)throw new Error("Assertion failed: The installer should have been registered");await De.attachExternalDependents(ce,me)}let te=new Map;for(let[Be,me]of E){let ce=await me.finalizeInstall();for(let Z of ce?.records??[])Z.buildRequest.skipped?(O.add(Z.locator.locatorHash),this.skippedBuilds.has(Z.locator.locatorHash)||U.push([Z.locator,Z.buildRequest.explain])):x.set(Z.locator.locatorHash,{buildDirectives:Z.buildRequest.directives,buildLocations:Z.buildLocations});typeof ce?.customData<"u"&&te.set(Be.getCustomDataKey(),ce.customData)}if(this.linkersCustomData=te,await Lu(T),a==="skip-build")return;for(let[,Be]of Vs(U,([me])=>ml(me)))Be(r);let ie=new Set(x.keys()),ue=(0,bT.createHash)("sha512");ue.update(process.versions.node),await this.configuration.triggerHook(Be=>Be.globalHashGeneration,this,Be=>{ue.update("\0"),ue.update(Be)});let ae=ue.digest("hex"),ge=new Map,Ae=Be=>{let me=ge.get(Be.locatorHash);if(typeof me<"u")return me;let ce=this.storedPackages.get(Be.locatorHash);if(typeof ce>"u")throw new Error("Assertion failed: The package should have been registered");let Z=(0,bT.createHash)("sha512");Z.update(Be.locatorHash),ge.set(Be.locatorHash,"");for(let De of ce.dependencies.values()){let Qe=this.storedResolutions.get(De.descriptorHash);if(typeof Qe>"u")throw new Error(`Assertion failed: The resolution (${oi(this.configuration,De)}) should have been registered`);let st=this.storedPackages.get(Qe);if(typeof st>"u")throw new Error("Assertion failed: The package should have been registered");Z.update(Ae(st))}return me=Z.digest("hex"),ge.set(Be.locatorHash,me),me},Ce=(Be,me)=>{let ce=(0,bT.createHash)("sha512");ce.update(ae),ce.update(Ae(Be));for(let Z of me)ce.update(Z);return ce.digest("hex")},Ee=new Map,d=!1,Se=Be=>{let me=new Set([Be.locatorHash]);for(let ce of me){let Z=this.storedPackages.get(ce);if(!Z)throw new Error("Assertion failed: The package should have been registered");for(let De of Z.dependencies.values()){let Qe=this.storedResolutions.get(De.descriptorHash);if(!Qe)throw new Error(`Assertion failed: The resolution (${oi(this.configuration,De)}) should have been registered`);if(Qe!==Be.locatorHash&&ie.has(Qe))return!1;let st=this.storedPackages.get(Qe);if(!st)throw new Error("Assertion failed: The package should have been registered");let _=this.tryWorkspaceByLocator(st);if(_){if(_.anchoredLocator.locatorHash!==Be.locatorHash&&ie.has(_.anchoredLocator.locatorHash))return!1;me.add(_.anchoredLocator.locatorHash)}me.add(Qe)}}return!0};for(;ie.size>0;){let Be=ie.size,me=[];for(let ce of ie){let Z=this.storedPackages.get(ce);if(!Z)throw new Error("Assertion failed: The package should have been registered");if(!Se(Z))continue;let De=x.get(Z.locatorHash);if(!De)throw new Error("Assertion failed: The build directive should have been registered");let Qe=Ce(Z,De.buildLocations);if(this.storedBuildState.get(Z.locatorHash)===Qe){Ee.set(Z.locatorHash,Qe),ie.delete(ce);continue}d||(await this.persistInstallStateFile(),d=!0),this.storedBuildState.has(Z.locatorHash)?r.reportInfo(8,`${Yr(this.configuration,Z)} must be rebuilt because its dependency tree changed`):r.reportInfo(7,`${Yr(this.configuration,Z)} must be built because it never has been before or the last one failed`);let st=De.buildLocations.map(async _=>{if(!J.isAbsolute(_))throw new Error(`Assertion failed: Expected the build location to be absolute (not ${_})`);for(let tt of De.buildDirectives){let Ne=`# This file contains the result of Yarn building a package (${ml(Z)}) +`;switch(tt.type){case 0:Ne+=`# Script name: ${tt.script} +`;break;case 1:Ne+=`# Script code: ${tt.script} +`;break}let ke=null;if(!await le.mktempPromise(async je=>{let Re=J.join(je,"build.log"),{stdout:ct,stderr:Me}=this.configuration.getSubprocessStreams(Re,{header:Ne,prefix:Yr(this.configuration,Z),report:r}),P;try{switch(tt.type){case 0:P=await OR(Z,tt.script,[],{cwd:_,project:this,stdin:ke,stdout:ct,stderr:Me});break;case 1:P=await Rj(Z,tt.script,[],{cwd:_,project:this,stdin:ke,stdout:ct,stderr:Me});break}}catch(y){Me.write(y.stack),P=1}if(ct.end(),Me.end(),P===0)return!0;le.detachTemp(je);let w=`${Yr(this.configuration,Z)} couldn't be built successfully (exit code ${jt(this.configuration,P,dt.NUMBER)}, logs can be found here: ${jt(this.configuration,Re,dt.PATH)})`,b=this.optionalBuilds.has(Z.locatorHash);return b?r.reportInfo(9,w):r.reportError(9,w),Ipe&&r.reportFold(fe.fromPortablePath(Re),le.readFileSync(Re,"utf8")),b}))return!1}return!0});me.push(...st,Promise.allSettled(st).then(_=>{ie.delete(ce),_.every(tt=>tt.status==="fulfilled"&&tt.value===!0)&&Ee.set(Z.locatorHash,Qe)}))}if(await Lu(me),Be===ie.size){let ce=Array.from(ie).map(Z=>{let De=this.storedPackages.get(Z);if(!De)throw new Error("Assertion failed: The package should have been registered");return Yr(this.configuration,De)}).join(", ");r.reportError(3,`Some packages have circular dependencies that make their build order unsatisfiable - as a result they won't be built (affected packages are: ${ce})`);break}}this.storedBuildState=Ee,this.skippedBuilds=O}async installWithNewReport(t,r){return(await Ot.start({configuration:this.configuration,json:t.json,stdout:t.stdout,forceSectionAlignment:!0,includeLogs:!t.json&&!t.quiet,includeVersion:!0},async a=>{await this.install({...r,report:a})})).exitCode()}async install(t){let r=this.configuration.get("nodeLinker");ze.telemetry?.reportInstall(r);let s=!1;if(await t.report.startTimerPromise("Project validation",{skipIfEmpty:!0},async()=>{this.configuration.get("enableOfflineMode")&&t.report.reportWarning(90,"Offline work is enabled; Yarn won't fetch packages from the remote registry if it can avoid it"),await this.configuration.triggerHook(E=>E.validateProject,this,{reportWarning:(E,C)=>{t.report.reportWarning(E,C)},reportError:(E,C)=>{t.report.reportError(E,C),s=!0}})}),s)return;let a=await this.configuration.getPackageExtensions();for(let E of a.values())for(let[,C]of E)for(let S of C)S.status="inactive";let n=J.join(this.cwd,Er.lockfile),c=null;if(t.immutable)try{c=await le.readFilePromise(n,"utf8")}catch(E){throw E.code==="ENOENT"?new Lt(28,"The lockfile would have been created by this install, which is explicitly forbidden."):E}await t.report.startTimerPromise("Resolution step",async()=>{await this.resolveEverything(t)}),await t.report.startTimerPromise("Post-resolution validation",{skipIfEmpty:!0},async()=>{Qit(this,t.report);for(let[,E]of a)for(let[,C]of E)for(let S of C)if(S.userProvided){let x=jt(this.configuration,S,dt.PACKAGE_EXTENSION);switch(S.status){case"inactive":t.report.reportWarning(68,`${x}: No matching package in the dependency tree; you may not need this rule anymore.`);break;case"redundant":t.report.reportWarning(69,`${x}: This rule seems redundant when applied on the original package; the extension may have been applied upstream.`);break}}if(c!==null){let E=mg(c,this.generateLockfile());if(E!==c){let C=a0e(n,n,c,E,void 0,void 0,{maxEditLength:100});if(C){t.report.reportSeparator();for(let S of C.hunks){t.report.reportInfo(null,`@@ -${S.oldStart},${S.oldLines} +${S.newStart},${S.newLines} @@`);for(let x of S.lines)x.startsWith("+")?t.report.reportError(28,jt(this.configuration,x,dt.ADDED)):x.startsWith("-")?t.report.reportError(28,jt(this.configuration,x,dt.REMOVED)):t.report.reportInfo(null,jt(this.configuration,x,"grey"))}t.report.reportSeparator()}throw new Lt(28,"The lockfile would have been modified by this install, which is explicitly forbidden.")}}});for(let E of a.values())for(let[,C]of E)for(let S of C)S.userProvided&&S.status==="active"&&ze.telemetry?.reportPackageExtension(Kg(S,dt.PACKAGE_EXTENSION));await t.report.startTimerPromise("Fetch step",async()=>{await this.fetchEverything(t)});let f=t.immutable?[...new Set(this.configuration.get("immutablePatterns"))].sort():[],p=await Promise.all(f.map(async E=>SQ(E,{cwd:this.cwd})));(typeof t.persistProject>"u"||t.persistProject)&&await this.persist(),await t.report.startTimerPromise("Link step",async()=>{if(t.mode==="update-lockfile"){t.report.reportWarning(73,`Skipped due to ${jt(this.configuration,"mode=update-lockfile",dt.CODE)}`);return}await this.linkEverything(t);let E=await Promise.all(f.map(async C=>SQ(C,{cwd:this.cwd})));for(let C=0;C{await this.configuration.triggerHook(E=>E.validateProjectAfterInstall,this,{reportWarning:(E,C)=>{t.report.reportWarning(E,C)},reportError:(E,C)=>{t.report.reportError(E,C),h=!0}})}),!h&&await this.configuration.triggerHook(E=>E.afterAllInstalled,this,t)}generateLockfile(){let t=new Map;for(let[n,c]of this.storedResolutions.entries()){let f=t.get(c);f||t.set(c,f=new Set),f.add(n)}let r={},{cacheKey:s}=Kr.getCacheKey(this.configuration);r.__metadata={version:xT,cacheKey:s};for(let[n,c]of t.entries()){let f=this.originalPackages.get(n);if(!f)continue;let p=[];for(let C of c){let S=this.storedDescriptors.get(C);if(!S)throw new Error("Assertion failed: The descriptor should have been registered");p.push(S)}let h=p.map(C=>gl(C)).sort().join(", "),E=new _t;E.version=f.linkType==="HARD"?f.version:"0.0.0-use.local",E.languageName=f.languageName,E.dependencies=new Map(f.dependencies),E.peerDependencies=new Map(f.peerDependencies),E.dependenciesMeta=new Map(f.dependenciesMeta),E.peerDependenciesMeta=new Map(f.peerDependenciesMeta),E.bin=new Map(f.bin),r[h]={...E.exportTo({},{compatibilityMode:!1}),linkType:f.linkType.toLowerCase(),resolution:ml(f),checksum:this.storedChecksums.get(f.locatorHash),conditions:f.conditions||void 0}}return`${[`# This file is generated by running "yarn install" inside your project. +`,`# Manual changes might be lost - proceed with caution! +`].join("")} +`+fl(r)}async persistLockfile(){let t=J.join(this.cwd,Er.lockfile),r="";try{r=await le.readFilePromise(t,"utf8")}catch{}let s=this.generateLockfile(),a=mg(r,s);a!==r&&(await le.writeFilePromise(t,a),this.lockFileChecksum=f0e(a),this.lockfileNeedsRefresh=!1)}async persistInstallStateFile(){let t=[];for(let c of Object.values(hG))t.push(...c);let r=Vg(this,t),s=dG.default.serialize(r),a=fs(s);if(this.installStateChecksum===a)return;let n=this.configuration.get("installStatePath");await le.mkdirPromise(J.dirname(n),{recursive:!0}),await le.writeFilePromise(n,await bit(s)),this.installStateChecksum=a}async restoreInstallState({restoreLinkersCustomData:t=!0,restoreResolutions:r=!0,restoreBuildState:s=!0}={}){let a=this.configuration.get("installStatePath"),n;try{let c=await Pit(await le.readFilePromise(a));n=dG.default.deserialize(c),this.installStateChecksum=fs(c)}catch{r&&await this.applyLightResolution();return}t&&typeof n.linkersCustomData<"u"&&(this.linkersCustomData=n.linkersCustomData),s&&Object.assign(this,Vg(n,hG.restoreBuildState)),r&&(n.lockFileChecksum===this.lockFileChecksum?Object.assign(this,Vg(n,hG.restoreResolutions)):await this.applyLightResolution())}async applyLightResolution(){await this.resolveEverything({lockfileOnly:!0,report:new ki}),await this.persistInstallStateFile()}async persist(){let t=(0,PT.default)(4);await Promise.all([this.persistLockfile(),...this.workspaces.map(r=>t(()=>r.persistManifest()))])}async cacheCleanup({cache:t,report:r}){if(this.configuration.get("enableGlobalCache"))return null;let s=new Set([".gitignore"]);if(!k8(t.cwd,this.cwd)||!await le.existsPromise(t.cwd))return null;let a=[];for(let c of await le.readdirPromise(t.cwd)){if(s.has(c))continue;let f=J.resolve(t.cwd,c);t.markedFiles.has(f)||(t.immutable?r.reportError(56,`${jt(this.configuration,J.basename(f),"magenta")} appears to be unused and would be marked for deletion, but the cache is immutable`):a.push(le.lstatPromise(f).then(async p=>(await le.removePromise(f),p.size))))}if(a.length===0)return null;let n=await Promise.all(a);return{count:a.length,size:n.reduce((c,f)=>c+f,0)}}}});function Rit(e){let s=Math.floor(e.timeNow/864e5),a=e.updateInterval*864e5,n=e.state.lastUpdate??e.timeNow+a+Math.floor(a*e.randomInitialInterval),c=n+a,f=e.state.lastTips??s*864e5,p=f+864e5+8*36e5-e.timeZone,h=c<=e.timeNow,E=p<=e.timeNow,C=null;return(h||E||!e.state.lastUpdate||!e.state.lastTips)&&(C={},C.lastUpdate=h?e.timeNow:n,C.lastTips=f,C.blocks=h?{}:e.state.blocks,C.displayedTips=e.state.displayedTips),{nextState:C,triggerUpdate:h,triggerTips:E,nextTips:E?s*864e5:f}}var GI,h0e=Xe(()=>{Dt();uv();E0();AR();kc();Np();GI=class{constructor(t,r){this.values=new Map;this.hits=new Map;this.enumerators=new Map;this.nextTips=0;this.displayedTips=[];this.shouldCommitTips=!1;this.configuration=t;let s=this.getRegistryPath();this.isNew=!le.existsSync(s),this.shouldShowTips=!1,this.sendReport(r),this.startBuffer()}commitTips(){this.shouldShowTips&&(this.shouldCommitTips=!0)}selectTip(t){let r=new Set(this.displayedTips),s=f=>f&&An?tA(An,f):!1,a=t.map((f,p)=>p).filter(f=>t[f]&&s(t[f]?.selector));if(a.length===0)return null;let n=a.filter(f=>!r.has(f));if(n.length===0){let f=Math.floor(a.length*.2);this.displayedTips=f>0?this.displayedTips.slice(-f):[],n=a.filter(p=>!r.has(p))}let c=n[Math.floor(Math.random()*n.length)];return this.displayedTips.push(c),this.commitTips(),t[c]}reportVersion(t){this.reportValue("version",t.replace(/-git\..*/,"-git"))}reportCommandName(t){this.reportValue("commandName",t||"")}reportPluginName(t){this.reportValue("pluginName",t)}reportProject(t){this.reportEnumerator("projectCount",t)}reportInstall(t){this.reportHit("installCount",t)}reportPackageExtension(t){this.reportValue("packageExtension",t)}reportWorkspaceCount(t){this.reportValue("workspaceCount",String(t))}reportDependencyCount(t){this.reportValue("dependencyCount",String(t))}reportValue(t,r){xp(this.values,t).add(r)}reportEnumerator(t,r){xp(this.enumerators,t).add(fs(r))}reportHit(t,r="*"){let s=P4(this.hits,t),a=Zl(s,r,()=>0);s.set(r,a+1)}getRegistryPath(){let t=this.configuration.get("globalFolder");return J.join(t,"telemetry.json")}sendReport(t){let r=this.getRegistryPath(),s;try{s=le.readJsonSync(r)}catch{s={}}let{nextState:a,triggerUpdate:n,triggerTips:c,nextTips:f}=Rit({state:s,timeNow:Date.now(),timeZone:new Date().getTimezoneOffset()*60*1e3,randomInitialInterval:Math.random(),updateInterval:this.configuration.get("telemetryInterval")});if(this.nextTips=f,this.displayedTips=s.displayedTips??[],a!==null)try{le.mkdirSync(J.dirname(r),{recursive:!0}),le.writeJsonSync(r,a)}catch{return!1}if(c&&this.configuration.get("enableTips")&&(this.shouldShowTips=!0),n){let p=s.blocks??{};if(Object.keys(p).length===0){let h=`https://browser-http-intake.logs.datadoghq.eu/v1/input/${t}?ddsource=yarn`,E=C=>KH(h,C,{configuration:this.configuration}).catch(()=>{});for(let[C,S]of Object.entries(s.blocks??{})){if(Object.keys(S).length===0)continue;let x=S;x.userId=C,x.reportType="primary";for(let O of Object.keys(x.enumerators??{}))x.enumerators[O]=x.enumerators[O].length;E(x);let I=new Map,T=20;for(let[O,U]of Object.entries(x.values))U.length>0&&I.set(O,U.slice(0,T));for(;I.size>0;){let O={};O.userId=C,O.reportType="secondary",O.metrics={};for(let[U,V]of I)O.metrics[U]=V.shift(),V.length===0&&I.delete(U);E(O)}}}}return!0}applyChanges(){let t=this.getRegistryPath(),r;try{r=le.readJsonSync(t)}catch{r={}}let s=this.configuration.get("telemetryUserId")??"*",a=r.blocks=r.blocks??{},n=a[s]=a[s]??{};for(let c of this.hits.keys()){let f=n.hits=n.hits??{},p=f[c]=f[c]??{};for(let[h,E]of this.hits.get(c))p[h]=(p[h]??0)+E}for(let c of["values","enumerators"])for(let f of this[c].keys()){let p=n[c]=n[c]??{};p[f]=[...new Set([...p[f]??[],...this[c].get(f)??[]])]}this.shouldCommitTips&&(r.lastTips=this.nextTips,r.displayedTips=this.displayedTips),le.mkdirSync(J.dirname(t),{recursive:!0}),le.writeJsonSync(t,r)}startBuffer(){process.on("exit",()=>{try{this.applyChanges()}catch{}})}}});var jv={};Vt(jv,{BuildDirectiveType:()=>vT,CACHE_CHECKPOINT:()=>tG,CACHE_VERSION:()=>BT,Cache:()=>Kr,Configuration:()=>ze,DEFAULT_RC_FILENAME:()=>rj,DurationUnit:()=>nj,FormatType:()=>kAe,InstallMode:()=>Oa,LEGACY_PLUGINS:()=>ZB,LOCKFILE_VERSION:()=>xT,LegacyMigrationResolver:()=>_I,LightReport:()=>uA,LinkType:()=>zE,LockfileResolver:()=>HI,Manifest:()=>_t,MessageName:()=>Ir,MultiFetcher:()=>uI,PackageExtensionStatus:()=>R4,PackageExtensionType:()=>Q4,PeerWarningType:()=>kT,Project:()=>Rt,Report:()=>yo,ReportError:()=>Lt,SettingsType:()=>SI,StreamReport:()=>Ot,TAG_REGEXP:()=>_p,TelemetryManager:()=>GI,ThrowReport:()=>ki,VirtualFetcher:()=>fI,WindowsLinkType:()=>ER,Workspace:()=>jI,WorkspaceFetcher:()=>AI,WorkspaceResolver:()=>Ii,YarnVersion:()=>An,execUtils:()=>qr,folderUtils:()=>NQ,formatUtils:()=>pe,hashUtils:()=>Ln,httpUtils:()=>nn,miscUtils:()=>Ge,nodeUtils:()=>Ui,parseMessageName:()=>jx,reportOptionDeprecations:()=>PI,scriptUtils:()=>Cn,semverUtils:()=>kr,stringifyMessageName:()=>Kf,structUtils:()=>j,tgzUtils:()=>gs,treeUtils:()=>Rs});var qe=Xe(()=>{dR();OQ();Qc();E0();AR();kc();hR();Oj();Np();Zo();Yhe();$he();rG();$B();$B();r0e();nG();n0e();iG();cI();Gx();E8();p0e();Fc();fv();h0e();AG();C8();w8();$g();pG();uv();Nae()});var I0e=G((X4t,qv)=>{"use strict";var Fit=process.env.TERM_PROGRAM==="Hyper",Nit=process.platform==="win32",m0e=process.platform==="linux",yG={ballotDisabled:"\u2612",ballotOff:"\u2610",ballotOn:"\u2611",bullet:"\u2022",bulletWhite:"\u25E6",fullBlock:"\u2588",heart:"\u2764",identicalTo:"\u2261",line:"\u2500",mark:"\u203B",middot:"\xB7",minus:"\uFF0D",multiplication:"\xD7",obelus:"\xF7",pencilDownRight:"\u270E",pencilRight:"\u270F",pencilUpRight:"\u2710",percent:"%",pilcrow2:"\u2761",pilcrow:"\xB6",plusMinus:"\xB1",section:"\xA7",starsOff:"\u2606",starsOn:"\u2605",upDownArrow:"\u2195"},y0e=Object.assign({},yG,{check:"\u221A",cross:"\xD7",ellipsisLarge:"...",ellipsis:"...",info:"i",question:"?",questionSmall:"?",pointer:">",pointerSmall:"\xBB",radioOff:"( )",radioOn:"(*)",warning:"\u203C"}),E0e=Object.assign({},yG,{ballotCross:"\u2718",check:"\u2714",cross:"\u2716",ellipsisLarge:"\u22EF",ellipsis:"\u2026",info:"\u2139",question:"?",questionFull:"\uFF1F",questionSmall:"\uFE56",pointer:m0e?"\u25B8":"\u276F",pointerSmall:m0e?"\u2023":"\u203A",radioOff:"\u25EF",radioOn:"\u25C9",warning:"\u26A0"});qv.exports=Nit&&!Fit?y0e:E0e;Reflect.defineProperty(qv.exports,"common",{enumerable:!1,value:yG});Reflect.defineProperty(qv.exports,"windows",{enumerable:!1,value:y0e});Reflect.defineProperty(qv.exports,"other",{enumerable:!1,value:E0e})});var zu=G((Z4t,EG)=>{"use strict";var Oit=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),Lit=/[\u001b\u009b][[\]#;?()]*(?:(?:(?:[^\W_]*;?[^\W_]*)\u0007)|(?:(?:[0-9]{1,4}(;[0-9]{0,4})*)?[~0-9=<>cf-nqrtyA-PRZ]))/g,C0e=()=>{let e={enabled:!0,visible:!0,styles:{},keys:{}};"FORCE_COLOR"in process.env&&(e.enabled=process.env.FORCE_COLOR!=="0");let t=n=>{let c=n.open=`\x1B[${n.codes[0]}m`,f=n.close=`\x1B[${n.codes[1]}m`,p=n.regex=new RegExp(`\\u001b\\[${n.codes[1]}m`,"g");return n.wrap=(h,E)=>{h.includes(f)&&(h=h.replace(p,f+c));let C=c+h+f;return E?C.replace(/\r*\n/g,`${f}$&${c}`):C},n},r=(n,c,f)=>typeof n=="function"?n(c):n.wrap(c,f),s=(n,c)=>{if(n===""||n==null)return"";if(e.enabled===!1)return n;if(e.visible===!1)return"";let f=""+n,p=f.includes(` +`),h=c.length;for(h>0&&c.includes("unstyle")&&(c=[...new Set(["unstyle",...c])].reverse());h-- >0;)f=r(e.styles[c[h]],f,p);return f},a=(n,c,f)=>{e.styles[n]=t({name:n,codes:c}),(e.keys[f]||(e.keys[f]=[])).push(n),Reflect.defineProperty(e,n,{configurable:!0,enumerable:!0,set(h){e.alias(n,h)},get(){let h=E=>s(E,h.stack);return Reflect.setPrototypeOf(h,e),h.stack=this.stack?this.stack.concat(n):[n],h}})};return a("reset",[0,0],"modifier"),a("bold",[1,22],"modifier"),a("dim",[2,22],"modifier"),a("italic",[3,23],"modifier"),a("underline",[4,24],"modifier"),a("inverse",[7,27],"modifier"),a("hidden",[8,28],"modifier"),a("strikethrough",[9,29],"modifier"),a("black",[30,39],"color"),a("red",[31,39],"color"),a("green",[32,39],"color"),a("yellow",[33,39],"color"),a("blue",[34,39],"color"),a("magenta",[35,39],"color"),a("cyan",[36,39],"color"),a("white",[37,39],"color"),a("gray",[90,39],"color"),a("grey",[90,39],"color"),a("bgBlack",[40,49],"bg"),a("bgRed",[41,49],"bg"),a("bgGreen",[42,49],"bg"),a("bgYellow",[43,49],"bg"),a("bgBlue",[44,49],"bg"),a("bgMagenta",[45,49],"bg"),a("bgCyan",[46,49],"bg"),a("bgWhite",[47,49],"bg"),a("blackBright",[90,39],"bright"),a("redBright",[91,39],"bright"),a("greenBright",[92,39],"bright"),a("yellowBright",[93,39],"bright"),a("blueBright",[94,39],"bright"),a("magentaBright",[95,39],"bright"),a("cyanBright",[96,39],"bright"),a("whiteBright",[97,39],"bright"),a("bgBlackBright",[100,49],"bgBright"),a("bgRedBright",[101,49],"bgBright"),a("bgGreenBright",[102,49],"bgBright"),a("bgYellowBright",[103,49],"bgBright"),a("bgBlueBright",[104,49],"bgBright"),a("bgMagentaBright",[105,49],"bgBright"),a("bgCyanBright",[106,49],"bgBright"),a("bgWhiteBright",[107,49],"bgBright"),e.ansiRegex=Lit,e.hasColor=e.hasAnsi=n=>(e.ansiRegex.lastIndex=0,typeof n=="string"&&n!==""&&e.ansiRegex.test(n)),e.alias=(n,c)=>{let f=typeof c=="string"?e[c]:c;if(typeof f!="function")throw new TypeError("Expected alias to be the name of an existing color (string) or a function");f.stack||(Reflect.defineProperty(f,"name",{value:n}),e.styles[n]=f,f.stack=[n]),Reflect.defineProperty(e,n,{configurable:!0,enumerable:!0,set(p){e.alias(n,p)},get(){let p=h=>s(h,p.stack);return Reflect.setPrototypeOf(p,e),p.stack=this.stack?this.stack.concat(f.stack):f.stack,p}})},e.theme=n=>{if(!Oit(n))throw new TypeError("Expected theme to be an object");for(let c of Object.keys(n))e.alias(c,n[c]);return e},e.alias("unstyle",n=>typeof n=="string"&&n!==""?(e.ansiRegex.lastIndex=0,n.replace(e.ansiRegex,"")):""),e.alias("noop",n=>n),e.none=e.clear=e.noop,e.stripColor=e.unstyle,e.symbols=I0e(),e.define=a,e};EG.exports=C0e();EG.exports.create=C0e});var na=G(hn=>{"use strict";var Mit=Object.prototype.toString,Hc=zu(),w0e=!1,IG=[],B0e={yellow:"blue",cyan:"red",green:"magenta",black:"white",blue:"yellow",red:"cyan",magenta:"green",white:"black"};hn.longest=(e,t)=>e.reduce((r,s)=>Math.max(r,t?s[t].length:s.length),0);hn.hasColor=e=>!!e&&Hc.hasColor(e);var RT=hn.isObject=e=>e!==null&&typeof e=="object"&&!Array.isArray(e);hn.nativeType=e=>Mit.call(e).slice(8,-1).toLowerCase().replace(/\s/g,"");hn.isAsyncFn=e=>hn.nativeType(e)==="asyncfunction";hn.isPrimitive=e=>e!=null&&typeof e!="object"&&typeof e!="function";hn.resolve=(e,t,...r)=>typeof t=="function"?t.call(e,...r):t;hn.scrollDown=(e=[])=>[...e.slice(1),e[0]];hn.scrollUp=(e=[])=>[e.pop(),...e];hn.reorder=(e=[])=>{let t=e.slice();return t.sort((r,s)=>r.index>s.index?1:r.index{let s=e.length,a=r===s?0:r<0?s-1:r,n=e[t];e[t]=e[a],e[a]=n};hn.width=(e,t=80)=>{let r=e&&e.columns?e.columns:t;return e&&typeof e.getWindowSize=="function"&&(r=e.getWindowSize()[0]),process.platform==="win32"?r-1:r};hn.height=(e,t=20)=>{let r=e&&e.rows?e.rows:t;return e&&typeof e.getWindowSize=="function"&&(r=e.getWindowSize()[1]),r};hn.wordWrap=(e,t={})=>{if(!e)return e;typeof t=="number"&&(t={width:t});let{indent:r="",newline:s=` +`+r,width:a=80}=t,n=(s+r).match(/[^\S\n]/g)||[];a-=n.length;let c=`.{1,${a}}([\\s\\u200B]+|$)|[^\\s\\u200B]+?([\\s\\u200B]+|$)`,f=e.trim(),p=new RegExp(c,"g"),h=f.match(p)||[];return h=h.map(E=>E.replace(/\n$/,"")),t.padEnd&&(h=h.map(E=>E.padEnd(a," "))),t.padStart&&(h=h.map(E=>E.padStart(a," "))),r+h.join(s)};hn.unmute=e=>{let t=e.stack.find(s=>Hc.keys.color.includes(s));return t?Hc[t]:e.stack.find(s=>s.slice(2)==="bg")?Hc[t.slice(2)]:s=>s};hn.pascal=e=>e?e[0].toUpperCase()+e.slice(1):"";hn.inverse=e=>{if(!e||!e.stack)return e;let t=e.stack.find(s=>Hc.keys.color.includes(s));if(t){let s=Hc["bg"+hn.pascal(t)];return s?s.black:e}let r=e.stack.find(s=>s.slice(0,2)==="bg");return r?Hc[r.slice(2).toLowerCase()]||e:Hc.none};hn.complement=e=>{if(!e||!e.stack)return e;let t=e.stack.find(s=>Hc.keys.color.includes(s)),r=e.stack.find(s=>s.slice(0,2)==="bg");if(t&&!r)return Hc[B0e[t]||t];if(r){let s=r.slice(2).toLowerCase(),a=B0e[s];return a&&Hc["bg"+hn.pascal(a)]||e}return Hc.none};hn.meridiem=e=>{let t=e.getHours(),r=e.getMinutes(),s=t>=12?"pm":"am";t=t%12;let a=t===0?12:t,n=r<10?"0"+r:r;return a+":"+n+" "+s};hn.set=(e={},t="",r)=>t.split(".").reduce((s,a,n,c)=>{let f=c.length-1>n?s[a]||{}:r;return!hn.isObject(f)&&n{let s=e[t]==null?t.split(".").reduce((a,n)=>a&&a[n],e):e[t];return s??r};hn.mixin=(e,t)=>{if(!RT(e))return t;if(!RT(t))return e;for(let r of Object.keys(t)){let s=Object.getOwnPropertyDescriptor(t,r);if(s.hasOwnProperty("value"))if(e.hasOwnProperty(r)&&RT(s.value)){let a=Object.getOwnPropertyDescriptor(e,r);RT(a.value)?e[r]=hn.merge({},e[r],t[r]):Reflect.defineProperty(e,r,s)}else Reflect.defineProperty(e,r,s);else Reflect.defineProperty(e,r,s)}return e};hn.merge=(...e)=>{let t={};for(let r of e)hn.mixin(t,r);return t};hn.mixinEmitter=(e,t)=>{let r=t.constructor.prototype;for(let s of Object.keys(r)){let a=r[s];typeof a=="function"?hn.define(e,s,a.bind(t)):hn.define(e,s,a)}};hn.onExit=e=>{let t=(r,s)=>{w0e||(w0e=!0,IG.forEach(a=>a()),r===!0&&process.exit(128+s))};IG.length===0&&(process.once("SIGTERM",t.bind(null,!0,15)),process.once("SIGINT",t.bind(null,!0,2)),process.once("exit",t)),IG.push(e)};hn.define=(e,t,r)=>{Reflect.defineProperty(e,t,{value:r})};hn.defineExport=(e,t,r)=>{let s;Reflect.defineProperty(e,t,{enumerable:!0,configurable:!0,set(a){s=a},get(){return s?s():r()}})}});var v0e=G(VI=>{"use strict";VI.ctrl={a:"first",b:"backward",c:"cancel",d:"deleteForward",e:"last",f:"forward",g:"reset",i:"tab",k:"cutForward",l:"reset",n:"newItem",m:"cancel",j:"submit",p:"search",r:"remove",s:"save",u:"undo",w:"cutLeft",x:"toggleCursor",v:"paste"};VI.shift={up:"shiftUp",down:"shiftDown",left:"shiftLeft",right:"shiftRight",tab:"prev"};VI.fn={up:"pageUp",down:"pageDown",left:"pageLeft",right:"pageRight",delete:"deleteForward"};VI.option={b:"backward",f:"forward",d:"cutRight",left:"cutLeft",up:"altUp",down:"altDown"};VI.keys={pageup:"pageUp",pagedown:"pageDown",home:"home",end:"end",cancel:"cancel",delete:"deleteForward",backspace:"delete",down:"down",enter:"submit",escape:"cancel",left:"left",space:"space",number:"number",return:"submit",right:"right",tab:"next",up:"up"}});var b0e=G((t3t,D0e)=>{"use strict";var S0e=Ie("readline"),Uit=v0e(),_it=/^(?:\x1b)([a-zA-Z0-9])$/,Hit=/^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/,jit={OP:"f1",OQ:"f2",OR:"f3",OS:"f4","[11~":"f1","[12~":"f2","[13~":"f3","[14~":"f4","[[A":"f1","[[B":"f2","[[C":"f3","[[D":"f4","[[E":"f5","[15~":"f5","[17~":"f6","[18~":"f7","[19~":"f8","[20~":"f9","[21~":"f10","[23~":"f11","[24~":"f12","[A":"up","[B":"down","[C":"right","[D":"left","[E":"clear","[F":"end","[H":"home",OA:"up",OB:"down",OC:"right",OD:"left",OE:"clear",OF:"end",OH:"home","[1~":"home","[2~":"insert","[3~":"delete","[4~":"end","[5~":"pageup","[6~":"pagedown","[[5~":"pageup","[[6~":"pagedown","[7~":"home","[8~":"end","[a":"up","[b":"down","[c":"right","[d":"left","[e":"clear","[2$":"insert","[3$":"delete","[5$":"pageup","[6$":"pagedown","[7$":"home","[8$":"end",Oa:"up",Ob:"down",Oc:"right",Od:"left",Oe:"clear","[2^":"insert","[3^":"delete","[5^":"pageup","[6^":"pagedown","[7^":"home","[8^":"end","[Z":"tab"};function Git(e){return["[a","[b","[c","[d","[e","[2$","[3$","[5$","[6$","[7$","[8$","[Z"].includes(e)}function qit(e){return["Oa","Ob","Oc","Od","Oe","[2^","[3^","[5^","[6^","[7^","[8^"].includes(e)}var TT=(e="",t={})=>{let r,s={name:t.name,ctrl:!1,meta:!1,shift:!1,option:!1,sequence:e,raw:e,...t};if(Buffer.isBuffer(e)?e[0]>127&&e[1]===void 0?(e[0]-=128,e="\x1B"+String(e)):e=String(e):e!==void 0&&typeof e!="string"?e=String(e):e||(e=s.sequence||""),s.sequence=s.sequence||e||s.name,e==="\r")s.raw=void 0,s.name="return";else if(e===` +`)s.name="enter";else if(e===" ")s.name="tab";else if(e==="\b"||e==="\x7F"||e==="\x1B\x7F"||e==="\x1B\b")s.name="backspace",s.meta=e.charAt(0)==="\x1B";else if(e==="\x1B"||e==="\x1B\x1B")s.name="escape",s.meta=e.length===2;else if(e===" "||e==="\x1B ")s.name="space",s.meta=e.length===2;else if(e<="")s.name=String.fromCharCode(e.charCodeAt(0)+97-1),s.ctrl=!0;else if(e.length===1&&e>="0"&&e<="9")s.name="number";else if(e.length===1&&e>="a"&&e<="z")s.name=e;else if(e.length===1&&e>="A"&&e<="Z")s.name=e.toLowerCase(),s.shift=!0;else if(r=_it.exec(e))s.meta=!0,s.shift=/^[A-Z]$/.test(r[1]);else if(r=Hit.exec(e)){let a=[...e];a[0]==="\x1B"&&a[1]==="\x1B"&&(s.option=!0);let n=[r[1],r[2],r[4],r[6]].filter(Boolean).join(""),c=(r[3]||r[5]||1)-1;s.ctrl=!!(c&4),s.meta=!!(c&10),s.shift=!!(c&1),s.code=n,s.name=jit[n],s.shift=Git(n)||s.shift,s.ctrl=qit(n)||s.ctrl}return s};TT.listen=(e={},t)=>{let{stdin:r}=e;if(!r||r!==process.stdin&&!r.isTTY)throw new Error("Invalid stream passed");let s=S0e.createInterface({terminal:!0,input:r});S0e.emitKeypressEvents(r,s);let a=(f,p)=>t(f,TT(f,p),s),n=r.isRaw;return r.isTTY&&r.setRawMode(!0),r.on("keypress",a),s.resume(),()=>{r.isTTY&&r.setRawMode(n),r.removeListener("keypress",a),s.pause(),s.close()}};TT.action=(e,t,r)=>{let s={...Uit,...r};return t.ctrl?(t.action=s.ctrl[t.name],t):t.option&&s.option?(t.action=s.option[t.name],t):t.shift?(t.action=s.shift[t.name],t):(t.action=s.keys[t.name],t)};D0e.exports=TT});var x0e=G((r3t,P0e)=>{"use strict";P0e.exports=e=>{e.timers=e.timers||{};let t=e.options.timers;if(t)for(let r of Object.keys(t)){let s=t[r];typeof s=="number"&&(s={interval:s}),Wit(e,r,s)}};function Wit(e,t,r={}){let s=e.timers[t]={name:t,start:Date.now(),ms:0,tick:0},a=r.interval||120;s.frames=r.frames||[],s.loading=!0;let n=setInterval(()=>{s.ms=Date.now()-s.start,s.tick++,e.render()},a);return s.stop=()=>{s.loading=!1,clearInterval(n)},Reflect.defineProperty(s,"interval",{value:n}),e.once("close",()=>s.stop()),s.stop}});var Q0e=G((n3t,k0e)=>{"use strict";var{define:Yit,width:Vit}=na(),CG=class{constructor(t){let r=t.options;Yit(this,"_prompt",t),this.type=t.type,this.name=t.name,this.message="",this.header="",this.footer="",this.error="",this.hint="",this.input="",this.cursor=0,this.index=0,this.lines=0,this.tick=0,this.prompt="",this.buffer="",this.width=Vit(r.stdout||process.stdout),Object.assign(this,r),this.name=this.name||this.message,this.message=this.message||this.name,this.symbols=t.symbols,this.styles=t.styles,this.required=new Set,this.cancelled=!1,this.submitted=!1}clone(){let t={...this};return t.status=this.status,t.buffer=Buffer.from(t.buffer),delete t.clone,t}set color(t){this._color=t}get color(){let t=this.prompt.styles;if(this.cancelled)return t.cancelled;if(this.submitted)return t.submitted;let r=this._color||t[this.status];return typeof r=="function"?r:t.pending}set loading(t){this._loading=t}get loading(){return typeof this._loading=="boolean"?this._loading:this.loadingChoices?"choices":!1}get status(){return this.cancelled?"cancelled":this.submitted?"submitted":"pending"}};k0e.exports=CG});var T0e=G((i3t,R0e)=>{"use strict";var wG=na(),Io=zu(),BG={default:Io.noop,noop:Io.noop,set inverse(e){this._inverse=e},get inverse(){return this._inverse||wG.inverse(this.primary)},set complement(e){this._complement=e},get complement(){return this._complement||wG.complement(this.primary)},primary:Io.cyan,success:Io.green,danger:Io.magenta,strong:Io.bold,warning:Io.yellow,muted:Io.dim,disabled:Io.gray,dark:Io.dim.gray,underline:Io.underline,set info(e){this._info=e},get info(){return this._info||this.primary},set em(e){this._em=e},get em(){return this._em||this.primary.underline},set heading(e){this._heading=e},get heading(){return this._heading||this.muted.underline},set pending(e){this._pending=e},get pending(){return this._pending||this.primary},set submitted(e){this._submitted=e},get submitted(){return this._submitted||this.success},set cancelled(e){this._cancelled=e},get cancelled(){return this._cancelled||this.danger},set typing(e){this._typing=e},get typing(){return this._typing||this.dim},set placeholder(e){this._placeholder=e},get placeholder(){return this._placeholder||this.primary.dim},set highlight(e){this._highlight=e},get highlight(){return this._highlight||this.inverse}};BG.merge=(e={})=>{e.styles&&typeof e.styles.enabled=="boolean"&&(Io.enabled=e.styles.enabled),e.styles&&typeof e.styles.visible=="boolean"&&(Io.visible=e.styles.visible);let t=wG.merge({},BG,e.styles);delete t.merge;for(let r of Object.keys(Io))t.hasOwnProperty(r)||Reflect.defineProperty(t,r,{get:()=>Io[r]});for(let r of Object.keys(Io.styles))t.hasOwnProperty(r)||Reflect.defineProperty(t,r,{get:()=>Io[r]});return t};R0e.exports=BG});var N0e=G((s3t,F0e)=>{"use strict";var vG=process.platform==="win32",Kp=zu(),Jit=na(),SG={...Kp.symbols,upDownDoubleArrow:"\u21D5",upDownDoubleArrow2:"\u2B0D",upDownArrow:"\u2195",asterisk:"*",asterism:"\u2042",bulletWhite:"\u25E6",electricArrow:"\u2301",ellipsisLarge:"\u22EF",ellipsisSmall:"\u2026",fullBlock:"\u2588",identicalTo:"\u2261",indicator:Kp.symbols.check,leftAngle:"\u2039",mark:"\u203B",minus:"\u2212",multiplication:"\xD7",obelus:"\xF7",percent:"%",pilcrow:"\xB6",pilcrow2:"\u2761",pencilUpRight:"\u2710",pencilDownRight:"\u270E",pencilRight:"\u270F",plus:"+",plusMinus:"\xB1",pointRight:"\u261E",rightAngle:"\u203A",section:"\xA7",hexagon:{off:"\u2B21",on:"\u2B22",disabled:"\u2B22"},ballot:{on:"\u2611",off:"\u2610",disabled:"\u2612"},stars:{on:"\u2605",off:"\u2606",disabled:"\u2606"},folder:{on:"\u25BC",off:"\u25B6",disabled:"\u25B6"},prefix:{pending:Kp.symbols.question,submitted:Kp.symbols.check,cancelled:Kp.symbols.cross},separator:{pending:Kp.symbols.pointerSmall,submitted:Kp.symbols.middot,cancelled:Kp.symbols.middot},radio:{off:vG?"( )":"\u25EF",on:vG?"(*)":"\u25C9",disabled:vG?"(|)":"\u24BE"},numbers:["\u24EA","\u2460","\u2461","\u2462","\u2463","\u2464","\u2465","\u2466","\u2467","\u2468","\u2469","\u246A","\u246B","\u246C","\u246D","\u246E","\u246F","\u2470","\u2471","\u2472","\u2473","\u3251","\u3252","\u3253","\u3254","\u3255","\u3256","\u3257","\u3258","\u3259","\u325A","\u325B","\u325C","\u325D","\u325E","\u325F","\u32B1","\u32B2","\u32B3","\u32B4","\u32B5","\u32B6","\u32B7","\u32B8","\u32B9","\u32BA","\u32BB","\u32BC","\u32BD","\u32BE","\u32BF"]};SG.merge=e=>{let t=Jit.merge({},Kp.symbols,SG,e.symbols);return delete t.merge,t};F0e.exports=SG});var L0e=G((o3t,O0e)=>{"use strict";var Kit=T0e(),zit=N0e(),Xit=na();O0e.exports=e=>{e.options=Xit.merge({},e.options.theme,e.options),e.symbols=zit.merge(e.options),e.styles=Kit.merge(e.options)}});var j0e=G((_0e,H0e)=>{"use strict";var M0e=process.env.TERM_PROGRAM==="Apple_Terminal",Zit=zu(),DG=na(),Xu=H0e.exports=_0e,_i="\x1B[",U0e="\x07",bG=!1,H0=Xu.code={bell:U0e,beep:U0e,beginning:`${_i}G`,down:`${_i}J`,esc:_i,getPosition:`${_i}6n`,hide:`${_i}?25l`,line:`${_i}2K`,lineEnd:`${_i}K`,lineStart:`${_i}1K`,restorePosition:_i+(M0e?"8":"u"),savePosition:_i+(M0e?"7":"s"),screen:`${_i}2J`,show:`${_i}?25h`,up:`${_i}1J`},Sm=Xu.cursor={get hidden(){return bG},hide(){return bG=!0,H0.hide},show(){return bG=!1,H0.show},forward:(e=1)=>`${_i}${e}C`,backward:(e=1)=>`${_i}${e}D`,nextLine:(e=1)=>`${_i}E`.repeat(e),prevLine:(e=1)=>`${_i}F`.repeat(e),up:(e=1)=>e?`${_i}${e}A`:"",down:(e=1)=>e?`${_i}${e}B`:"",right:(e=1)=>e?`${_i}${e}C`:"",left:(e=1)=>e?`${_i}${e}D`:"",to(e,t){return t?`${_i}${t+1};${e+1}H`:`${_i}${e+1}G`},move(e=0,t=0){let r="";return r+=e<0?Sm.left(-e):e>0?Sm.right(e):"",r+=t<0?Sm.up(-t):t>0?Sm.down(t):"",r},restore(e={}){let{after:t,cursor:r,initial:s,input:a,prompt:n,size:c,value:f}=e;if(s=DG.isPrimitive(s)?String(s):"",a=DG.isPrimitive(a)?String(a):"",f=DG.isPrimitive(f)?String(f):"",c){let p=Xu.cursor.up(c)+Xu.cursor.to(n.length),h=a.length-r;return h>0&&(p+=Xu.cursor.left(h)),p}if(f||t){let p=!a&&s?-s.length:-a.length+r;return t&&(p-=t.length),a===""&&s&&!n.includes(s)&&(p+=s.length),Xu.cursor.move(p)}}},PG=Xu.erase={screen:H0.screen,up:H0.up,down:H0.down,line:H0.line,lineEnd:H0.lineEnd,lineStart:H0.lineStart,lines(e){let t="";for(let r=0;r{if(!t)return PG.line+Sm.to(0);let r=n=>[...Zit.unstyle(n)].length,s=e.split(/\r?\n/),a=0;for(let n of s)a+=1+Math.floor(Math.max(r(n)-1,0)/t);return(PG.line+Sm.prevLine()).repeat(a-1)+PG.line+Sm.to(0)}});var JI=G((a3t,q0e)=>{"use strict";var $it=Ie("events"),G0e=zu(),xG=b0e(),est=x0e(),tst=Q0e(),rst=L0e(),Cl=na(),Dm=j0e(),kG=class e extends $it{constructor(t={}){super(),this.name=t.name,this.type=t.type,this.options=t,rst(this),est(this),this.state=new tst(this),this.initial=[t.initial,t.default].find(r=>r!=null),this.stdout=t.stdout||process.stdout,this.stdin=t.stdin||process.stdin,this.scale=t.scale||1,this.term=this.options.term||process.env.TERM_PROGRAM,this.margin=ist(this.options.margin),this.setMaxListeners(0),nst(this)}async keypress(t,r={}){this.keypressed=!0;let s=xG.action(t,xG(t,r),this.options.actions);this.state.keypress=s,this.emit("keypress",t,s),this.emit("state",this.state.clone());let a=this.options[s.action]||this[s.action]||this.dispatch;if(typeof a=="function")return await a.call(this,t,s);this.alert()}alert(){delete this.state.alert,this.options.show===!1?this.emit("alert"):this.stdout.write(Dm.code.beep)}cursorHide(){this.stdout.write(Dm.cursor.hide()),Cl.onExit(()=>this.cursorShow())}cursorShow(){this.stdout.write(Dm.cursor.show())}write(t){t&&(this.stdout&&this.state.show!==!1&&this.stdout.write(t),this.state.buffer+=t)}clear(t=0){let r=this.state.buffer;this.state.buffer="",!(!r&&!t||this.options.show===!1)&&this.stdout.write(Dm.cursor.down(t)+Dm.clear(r,this.width))}restore(){if(this.state.closed||this.options.show===!1)return;let{prompt:t,after:r,rest:s}=this.sections(),{cursor:a,initial:n="",input:c="",value:f=""}=this,p=this.state.size=s.length,h={after:r,cursor:a,initial:n,input:c,prompt:t,size:p,value:f},E=Dm.cursor.restore(h);E&&this.stdout.write(E)}sections(){let{buffer:t,input:r,prompt:s}=this.state;s=G0e.unstyle(s);let a=G0e.unstyle(t),n=a.indexOf(s),c=a.slice(0,n),p=a.slice(n).split(` +`),h=p[0],E=p[p.length-1],S=(s+(r?" "+r:"")).length,x=St.call(this,this.value),this.result=()=>s.call(this,this.value),typeof r.initial=="function"&&(this.initial=await r.initial.call(this,this)),typeof r.onRun=="function"&&await r.onRun.call(this,this),typeof r.onSubmit=="function"){let a=r.onSubmit.bind(this),n=this.submit.bind(this);delete this.options.onSubmit,this.submit=async()=>(await a(this.name,this.value,this),n())}await this.start(),await this.render()}render(){throw new Error("expected prompt to have a custom render method")}run(){return new Promise(async(t,r)=>{if(this.once("submit",t),this.once("cancel",r),await this.skip())return this.render=()=>{},this.submit();await this.initialize(),this.emit("run")})}async element(t,r,s){let{options:a,state:n,symbols:c,timers:f}=this,p=f&&f[t];n.timer=p;let h=a[t]||n[t]||c[t],E=r&&r[t]!=null?r[t]:await h;if(E==="")return E;let C=await this.resolve(E,n,r,s);return!C&&r&&r[t]?this.resolve(h,n,r,s):C}async prefix(){let t=await this.element("prefix")||this.symbols,r=this.timers&&this.timers.prefix,s=this.state;return s.timer=r,Cl.isObject(t)&&(t=t[s.status]||t.pending),Cl.hasColor(t)?t:(this.styles[s.status]||this.styles.pending)(t)}async message(){let t=await this.element("message");return Cl.hasColor(t)?t:this.styles.strong(t)}async separator(){let t=await this.element("separator")||this.symbols,r=this.timers&&this.timers.separator,s=this.state;s.timer=r;let a=t[s.status]||t.pending||s.separator,n=await this.resolve(a,s);return Cl.isObject(n)&&(n=n[s.status]||n.pending),Cl.hasColor(n)?n:this.styles.muted(n)}async pointer(t,r){let s=await this.element("pointer",t,r);if(typeof s=="string"&&Cl.hasColor(s))return s;if(s){let a=this.styles,n=this.index===r,c=n?a.primary:h=>h,f=await this.resolve(s[n?"on":"off"]||s,this.state),p=Cl.hasColor(f)?f:c(f);return n?p:" ".repeat(f.length)}}async indicator(t,r){let s=await this.element("indicator",t,r);if(typeof s=="string"&&Cl.hasColor(s))return s;if(s){let a=this.styles,n=t.enabled===!0,c=n?a.success:a.dark,f=s[n?"on":"off"]||s;return Cl.hasColor(f)?f:c(f)}return""}body(){return null}footer(){if(this.state.status==="pending")return this.element("footer")}header(){if(this.state.status==="pending")return this.element("header")}async hint(){if(this.state.status==="pending"&&!this.isValue(this.state.input)){let t=await this.element("hint");return Cl.hasColor(t)?t:this.styles.muted(t)}}error(t){return this.state.submitted?"":t||this.state.error}format(t){return t}result(t){return t}validate(t){return this.options.required===!0?this.isValue(t):!0}isValue(t){return t!=null&&t!==""}resolve(t,...r){return Cl.resolve(this,t,...r)}get base(){return e.prototype}get style(){return this.styles[this.state.status]}get height(){return this.options.rows||Cl.height(this.stdout,25)}get width(){return this.options.columns||Cl.width(this.stdout,80)}get size(){return{width:this.width,height:this.height}}set cursor(t){this.state.cursor=t}get cursor(){return this.state.cursor}set input(t){this.state.input=t}get input(){return this.state.input}set value(t){this.state.value=t}get value(){let{input:t,value:r}=this.state,s=[r,t].find(this.isValue.bind(this));return this.isValue(s)?s:this.initial}static get prompt(){return t=>new this(t).run()}};function nst(e){let t=a=>e[a]===void 0||typeof e[a]=="function",r=["actions","choices","initial","margin","roles","styles","symbols","theme","timers","value"],s=["body","footer","error","header","hint","indicator","message","prefix","separator","skip"];for(let a of Object.keys(e.options)){if(r.includes(a)||/^on[A-Z]/.test(a))continue;let n=e.options[a];typeof n=="function"&&t(a)?s.includes(a)||(e[a]=n.bind(e)):typeof e[a]!="function"&&(e[a]=n)}}function ist(e){typeof e=="number"&&(e=[e,e,e,e]);let t=[].concat(e||[]),r=a=>a%2===0?` +`:" ",s=[];for(let a=0;a<4;a++){let n=r(a);t[a]?s.push(n.repeat(t[a])):s.push("")}return s}q0e.exports=kG});var V0e=G((l3t,Y0e)=>{"use strict";var sst=na(),W0e={default(e,t){return t},checkbox(e,t){throw new Error("checkbox role is not implemented yet")},editable(e,t){throw new Error("editable role is not implemented yet")},expandable(e,t){throw new Error("expandable role is not implemented yet")},heading(e,t){return t.disabled="",t.indicator=[t.indicator," "].find(r=>r!=null),t.message=t.message||"",t},input(e,t){throw new Error("input role is not implemented yet")},option(e,t){return W0e.default(e,t)},radio(e,t){throw new Error("radio role is not implemented yet")},separator(e,t){return t.disabled="",t.indicator=[t.indicator," "].find(r=>r!=null),t.message=t.message||e.symbols.line.repeat(5),t},spacer(e,t){return t}};Y0e.exports=(e,t={})=>{let r=sst.merge({},W0e,t.roles);return r[e]||r.default}});var Wv=G((c3t,z0e)=>{"use strict";var ost=zu(),ast=JI(),lst=V0e(),FT=na(),{reorder:QG,scrollUp:cst,scrollDown:ust,isObject:J0e,swap:fst}=FT,RG=class extends ast{constructor(t){super(t),this.cursorHide(),this.maxSelected=t.maxSelected||1/0,this.multiple=t.multiple||!1,this.initial=t.initial||0,this.delay=t.delay||0,this.longest=0,this.num=""}async initialize(){typeof this.options.initial=="function"&&(this.initial=await this.options.initial.call(this)),await this.reset(!0),await super.initialize()}async reset(){let{choices:t,initial:r,autofocus:s,suggest:a}=this.options;if(this.state._choices=[],this.state.choices=[],this.choices=await Promise.all(await this.toChoices(t)),this.choices.forEach(n=>n.enabled=!1),typeof a!="function"&&this.selectable.length===0)throw new Error("At least one choice must be selectable");J0e(r)&&(r=Object.keys(r)),Array.isArray(r)?(s!=null&&(this.index=this.findIndex(s)),r.forEach(n=>this.enable(this.find(n))),await this.render()):(s!=null&&(r=s),typeof r=="string"&&(r=this.findIndex(r)),typeof r=="number"&&r>-1&&(this.index=Math.max(0,Math.min(r,this.choices.length)),this.enable(this.find(this.index)))),this.isDisabled(this.focused)&&await this.down()}async toChoices(t,r){this.state.loadingChoices=!0;let s=[],a=0,n=async(c,f)=>{typeof c=="function"&&(c=await c.call(this)),c instanceof Promise&&(c=await c);for(let p=0;p(this.state.loadingChoices=!1,c))}async toChoice(t,r,s){if(typeof t=="function"&&(t=await t.call(this,this)),t instanceof Promise&&(t=await t),typeof t=="string"&&(t={name:t}),t.normalized)return t;t.normalized=!0;let a=t.value;if(t=lst(t.role,this.options)(this,t),typeof t.disabled=="string"&&!t.hint&&(t.hint=t.disabled,t.disabled=!0),t.disabled===!0&&t.hint==null&&(t.hint="(disabled)"),t.index!=null)return t;t.name=t.name||t.key||t.title||t.value||t.message,t.message=t.message||t.name||"",t.value=[t.value,t.name].find(this.isValue.bind(this)),t.input="",t.index=r,t.cursor=0,FT.define(t,"parent",s),t.level=s?s.level+1:1,t.indent==null&&(t.indent=s?s.indent+" ":t.indent||""),t.path=s?s.path+"."+t.name:t.name,t.enabled=!!(this.multiple&&!this.isDisabled(t)&&(t.enabled||this.isSelected(t))),this.isDisabled(t)||(this.longest=Math.max(this.longest,ost.unstyle(t.message).length));let c={...t};return t.reset=(f=c.input,p=c.value)=>{for(let h of Object.keys(c))t[h]=c[h];t.input=f,t.value=p},a==null&&typeof t.initial=="function"&&(t.input=await t.initial.call(this,this.state,t,r)),t}async onChoice(t,r){this.emit("choice",t,r,this),typeof t.onChoice=="function"&&await t.onChoice.call(this,this.state,t,r)}async addChoice(t,r,s){let a=await this.toChoice(t,r,s);return this.choices.push(a),this.index=this.choices.length-1,this.limit=this.choices.length,a}async newItem(t,r,s){let a={name:"New choice name?",editable:!0,newChoice:!0,...t},n=await this.addChoice(a,r,s);return n.updateChoice=()=>{delete n.newChoice,n.name=n.message=n.input,n.input="",n.cursor=0},this.render()}indent(t){return t.indent==null?t.level>1?" ".repeat(t.level-1):"":t.indent}dispatch(t,r){if(this.multiple&&this[r.name])return this[r.name]();this.alert()}focus(t,r){return typeof r!="boolean"&&(r=t.enabled),r&&!t.enabled&&this.selected.length>=this.maxSelected?this.alert():(this.index=t.index,t.enabled=r&&!this.isDisabled(t),t)}space(){return this.multiple?(this.toggle(this.focused),this.render()):this.alert()}a(){if(this.maxSelectedr.enabled);return this.choices.forEach(r=>r.enabled=!t),this.render()}i(){return this.choices.length-this.selected.length>this.maxSelected?this.alert():(this.choices.forEach(t=>t.enabled=!t.enabled),this.render())}g(t=this.focused){return this.choices.some(r=>!!r.parent)?(this.toggle(t.parent&&!t.choices?t.parent:t),this.render()):this.a()}toggle(t,r){if(!t.enabled&&this.selected.length>=this.maxSelected)return this.alert();typeof r!="boolean"&&(r=!t.enabled),t.enabled=r,t.choices&&t.choices.forEach(a=>this.toggle(a,r));let s=t.parent;for(;s;){let a=s.choices.filter(n=>this.isDisabled(n));s.enabled=a.every(n=>n.enabled===!0),s=s.parent}return K0e(this,this.choices),this.emit("toggle",t,this),t}enable(t){return this.selected.length>=this.maxSelected?this.alert():(t.enabled=!this.isDisabled(t),t.choices&&t.choices.forEach(this.enable.bind(this)),t)}disable(t){return t.enabled=!1,t.choices&&t.choices.forEach(this.disable.bind(this)),t}number(t){this.num+=t;let r=s=>{let a=Number(s);if(a>this.choices.length-1)return this.alert();let n=this.focused,c=this.choices.find(f=>a===f.index);if(!c.enabled&&this.selected.length>=this.maxSelected)return this.alert();if(this.visible.indexOf(c)===-1){let f=QG(this.choices),p=f.indexOf(c);if(n.index>p){let h=f.slice(p,p+this.limit),E=f.filter(C=>!h.includes(C));this.choices=h.concat(E)}else{let h=p-this.limit+1;this.choices=f.slice(h).concat(f.slice(0,h))}}return this.index=this.choices.indexOf(c),this.toggle(this.focused),this.render()};return clearTimeout(this.numberTimeout),new Promise(s=>{let a=this.choices.length,n=this.num,c=(f=!1,p)=>{clearTimeout(this.numberTimeout),f&&(p=r(n)),this.num="",s(p)};if(n==="0"||n.length===1&&+(n+"0")>a)return c(!0);if(Number(n)>a)return c(!1,this.alert());this.numberTimeout=setTimeout(()=>c(!0),this.delay)})}home(){return this.choices=QG(this.choices),this.index=0,this.render()}end(){let t=this.choices.length-this.limit,r=QG(this.choices);return this.choices=r.slice(t).concat(r.slice(0,t)),this.index=this.limit-1,this.render()}first(){return this.index=0,this.render()}last(){return this.index=this.visible.length-1,this.render()}prev(){return this.visible.length<=1?this.alert():this.up()}next(){return this.visible.length<=1?this.alert():this.down()}right(){return this.cursor>=this.input.length?this.alert():(this.cursor++,this.render())}left(){return this.cursor<=0?this.alert():(this.cursor--,this.render())}up(){let t=this.choices.length,r=this.visible.length,s=this.index;return this.options.scroll===!1&&s===0?this.alert():t>r&&s===0?this.scrollUp():(this.index=(s-1%t+t)%t,this.isDisabled()?this.up():this.render())}down(){let t=this.choices.length,r=this.visible.length,s=this.index;return this.options.scroll===!1&&s===r-1?this.alert():t>r&&s===r-1?this.scrollDown():(this.index=(s+1)%t,this.isDisabled()?this.down():this.render())}scrollUp(t=0){return this.choices=cst(this.choices),this.index=t,this.isDisabled()?this.up():this.render()}scrollDown(t=this.visible.length-1){return this.choices=ust(this.choices),this.index=t,this.isDisabled()?this.down():this.render()}async shiftUp(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index-1),await this.up(),this.sorting=!1;return}return this.scrollUp(this.index)}async shiftDown(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index+1),await this.down(),this.sorting=!1;return}return this.scrollDown(this.index)}pageUp(){return this.visible.length<=1?this.alert():(this.limit=Math.max(this.limit-1,0),this.index=Math.min(this.limit-1,this.index),this._limit=this.limit,this.isDisabled()?this.up():this.render())}pageDown(){return this.visible.length>=this.choices.length?this.alert():(this.index=Math.max(0,this.index),this.limit=Math.min(this.limit+1,this.choices.length),this._limit=this.limit,this.isDisabled()?this.down():this.render())}swap(t){fst(this.choices,this.index,t)}isDisabled(t=this.focused){return t&&["disabled","collapsed","hidden","completing","readonly"].some(s=>t[s]===!0)?!0:t&&t.role==="heading"}isEnabled(t=this.focused){if(Array.isArray(t))return t.every(r=>this.isEnabled(r));if(t.choices){let r=t.choices.filter(s=>!this.isDisabled(s));return t.enabled&&r.every(s=>this.isEnabled(s))}return t.enabled&&!this.isDisabled(t)}isChoice(t,r){return t.name===r||t.index===Number(r)}isSelected(t){return Array.isArray(this.initial)?this.initial.some(r=>this.isChoice(t,r)):this.isChoice(t,this.initial)}map(t=[],r="value"){return[].concat(t||[]).reduce((s,a)=>(s[a]=this.find(a,r),s),{})}filter(t,r){let a=typeof t=="function"?t:(f,p)=>[f.name,p].includes(t),c=(this.options.multiple?this.state._choices:this.choices).filter(a);return r?c.map(f=>f[r]):c}find(t,r){if(J0e(t))return r?t[r]:t;let a=typeof t=="function"?t:(c,f)=>[c.name,f].includes(t),n=this.choices.find(a);if(n)return r?n[r]:n}findIndex(t){return this.choices.indexOf(this.find(t))}async submit(){let t=this.focused;if(!t)return this.alert();if(t.newChoice)return t.input?(t.updateChoice(),this.render()):this.alert();if(this.choices.some(c=>c.newChoice))return this.alert();let{reorder:r,sort:s}=this.options,a=this.multiple===!0,n=this.selected;return n===void 0?this.alert():(Array.isArray(n)&&r!==!1&&s!==!0&&(n=FT.reorder(n)),this.value=a?n.map(c=>c.name):n.name,super.submit())}set choices(t=[]){this.state._choices=this.state._choices||[],this.state.choices=t;for(let r of t)this.state._choices.some(s=>s.name===r.name)||this.state._choices.push(r);if(!this._initial&&this.options.initial){this._initial=!0;let r=this.initial;if(typeof r=="string"||typeof r=="number"){let s=this.find(r);s&&(this.initial=s.index,this.focus(s,!0))}}}get choices(){return K0e(this,this.state.choices||[])}set visible(t){this.state.visible=t}get visible(){return(this.state.visible||this.choices).slice(0,this.limit)}set limit(t){this.state.limit=t}get limit(){let{state:t,options:r,choices:s}=this,a=t.limit||this._limit||r.limit||s.length;return Math.min(a,this.height)}set value(t){super.value=t}get value(){return typeof super.value!="string"&&super.value===this.initial?this.input:super.value}set index(t){this.state.index=t}get index(){return Math.max(0,this.state?this.state.index:0)}get enabled(){return this.filter(this.isEnabled.bind(this))}get focused(){let t=this.choices[this.index];return t&&this.state.submitted&&this.multiple!==!0&&(t.enabled=!0),t}get selectable(){return this.choices.filter(t=>!this.isDisabled(t))}get selected(){return this.multiple?this.enabled:this.focused}};function K0e(e,t){if(t instanceof Promise)return t;if(typeof t=="function"){if(FT.isAsyncFn(t))return t;t=t.call(e,e)}for(let r of t){if(Array.isArray(r.choices)){let s=r.choices.filter(a=>!e.isDisabled(a));r.enabled=s.every(a=>a.enabled===!0)}e.isDisabled(r)===!0&&delete r.enabled}return t}z0e.exports=RG});var j0=G((u3t,X0e)=>{"use strict";var Ast=Wv(),TG=na(),FG=class extends Ast{constructor(t){super(t),this.emptyError=this.options.emptyError||"No items were selected"}async dispatch(t,r){if(this.multiple)return this[r.name]?await this[r.name](t,r):await super.dispatch(t,r);this.alert()}separator(){if(this.options.separator)return super.separator();let t=this.styles.muted(this.symbols.ellipsis);return this.state.submitted?super.separator():t}pointer(t,r){return!this.multiple||this.options.pointer?super.pointer(t,r):""}indicator(t,r){return this.multiple?super.indicator(t,r):""}choiceMessage(t,r){let s=this.resolve(t.message,this.state,t,r);return t.role==="heading"&&!TG.hasColor(s)&&(s=this.styles.strong(s)),this.resolve(s,this.state,t,r)}choiceSeparator(){return":"}async renderChoice(t,r){await this.onChoice(t,r);let s=this.index===r,a=await this.pointer(t,r),n=await this.indicator(t,r)+(t.pad||""),c=await this.resolve(t.hint,this.state,t,r);c&&!TG.hasColor(c)&&(c=this.styles.muted(c));let f=this.indent(t),p=await this.choiceMessage(t,r),h=()=>[this.margin[3],f+a+n,p,this.margin[1],c].filter(Boolean).join(" ");return t.role==="heading"?h():t.disabled?(TG.hasColor(p)||(p=this.styles.disabled(p)),h()):(s&&(p=this.styles.em(p)),h())}async renderChoices(){if(this.state.loading==="choices")return this.styles.warning("Loading choices");if(this.state.submitted)return"";let t=this.visible.map(async(n,c)=>await this.renderChoice(n,c)),r=await Promise.all(t);r.length||r.push(this.styles.danger("No matching choices"));let s=this.margin[0]+r.join(` +`),a;return this.options.choicesHeader&&(a=await this.resolve(this.options.choicesHeader,this.state)),[a,s].filter(Boolean).join(` +`)}format(){return!this.state.submitted||this.state.cancelled?"":Array.isArray(this.selected)?this.selected.map(t=>this.styles.primary(t.name)).join(", "):this.styles.primary(this.selected.name)}async render(){let{submitted:t,size:r}=this.state,s="",a=await this.header(),n=await this.prefix(),c=await this.separator(),f=await this.message();this.options.promptLine!==!1&&(s=[n,f,c,""].join(" "),this.state.prompt=s);let p=await this.format(),h=await this.error()||await this.hint(),E=await this.renderChoices(),C=await this.footer();p&&(s+=p),h&&!s.includes(h)&&(s+=" "+h),t&&!p&&!E.trim()&&this.multiple&&this.emptyError!=null&&(s+=this.styles.danger(this.emptyError)),this.clear(r),this.write([a,s,E,C].filter(Boolean).join(` +`)),this.write(this.margin[2]),this.restore()}};X0e.exports=FG});var $0e=G((f3t,Z0e)=>{"use strict";var pst=j0(),hst=(e,t)=>{let r=e.toLowerCase();return s=>{let n=s.toLowerCase().indexOf(r),c=t(s.slice(n,n+r.length));return n>=0?s.slice(0,n)+c+s.slice(n+r.length):s}},NG=class extends pst{constructor(t){super(t),this.cursorShow()}moveCursor(t){this.state.cursor+=t}dispatch(t){return this.append(t)}space(t){return this.options.multiple?super.space(t):this.append(t)}append(t){let{cursor:r,input:s}=this.state;return this.input=s.slice(0,r)+t+s.slice(r),this.moveCursor(1),this.complete()}delete(){let{cursor:t,input:r}=this.state;return r?(this.input=r.slice(0,t-1)+r.slice(t),this.moveCursor(-1),this.complete()):this.alert()}deleteForward(){let{cursor:t,input:r}=this.state;return r[t]===void 0?this.alert():(this.input=`${r}`.slice(0,t)+`${r}`.slice(t+1),this.complete())}number(t){return this.append(t)}async complete(){this.completing=!0,this.choices=await this.suggest(this.input,this.state._choices),this.state.limit=void 0,this.index=Math.min(Math.max(this.visible.length-1,0),this.index),await this.render(),this.completing=!1}suggest(t=this.input,r=this.state._choices){if(typeof this.options.suggest=="function")return this.options.suggest.call(this,t,r);let s=t.toLowerCase();return r.filter(a=>a.message.toLowerCase().includes(s))}pointer(){return""}format(){if(!this.focused)return this.input;if(this.options.multiple&&this.state.submitted)return this.selected.map(t=>this.styles.primary(t.message)).join(", ");if(this.state.submitted){let t=this.value=this.input=this.focused.value;return this.styles.primary(t)}return this.input}async render(){if(this.state.status!=="pending")return super.render();let t=this.options.highlight?this.options.highlight.bind(this):this.styles.placeholder,r=hst(this.input,t),s=this.choices;this.choices=s.map(a=>({...a,message:r(a.message)})),await super.render(),this.choices=s}submit(){return this.options.multiple&&(this.value=this.selected.map(t=>t.name)),super.submit()}};Z0e.exports=NG});var LG=G((A3t,ede)=>{"use strict";var OG=na();ede.exports=(e,t={})=>{e.cursorHide();let{input:r="",initial:s="",pos:a,showCursor:n=!0,color:c}=t,f=c||e.styles.placeholder,p=OG.inverse(e.styles.primary),h=T=>p(e.styles.black(T)),E=r,C=" ",S=h(C);if(e.blink&&e.blink.off===!0&&(h=T=>T,S=""),n&&a===0&&s===""&&r==="")return h(C);if(n&&a===0&&(r===s||r===""))return h(s[0])+f(s.slice(1));s=OG.isPrimitive(s)?`${s}`:"",r=OG.isPrimitive(r)?`${r}`:"";let x=s&&s.startsWith(r)&&s!==r,I=x?h(s[r.length]):S;if(a!==r.length&&n===!0&&(E=r.slice(0,a)+h(r[a])+r.slice(a+1),I=""),n===!1&&(I=""),x){let T=e.styles.unstyle(E+I);return E+I+f(s.slice(T.length))}return E+I}});var NT=G((p3t,tde)=>{"use strict";var dst=zu(),gst=j0(),mst=LG(),MG=class extends gst{constructor(t){super({...t,multiple:!0}),this.type="form",this.initial=this.options.initial,this.align=[this.options.align,"right"].find(r=>r!=null),this.emptyError="",this.values={}}async reset(t){return await super.reset(),t===!0&&(this._index=this.index),this.index=this._index,this.values={},this.choices.forEach(r=>r.reset&&r.reset()),this.render()}dispatch(t){return!!t&&this.append(t)}append(t){let r=this.focused;if(!r)return this.alert();let{cursor:s,input:a}=r;return r.value=r.input=a.slice(0,s)+t+a.slice(s),r.cursor++,this.render()}delete(){let t=this.focused;if(!t||t.cursor<=0)return this.alert();let{cursor:r,input:s}=t;return t.value=t.input=s.slice(0,r-1)+s.slice(r),t.cursor--,this.render()}deleteForward(){let t=this.focused;if(!t)return this.alert();let{cursor:r,input:s}=t;if(s[r]===void 0)return this.alert();let a=`${s}`.slice(0,r)+`${s}`.slice(r+1);return t.value=t.input=a,this.render()}right(){let t=this.focused;return t?t.cursor>=t.input.length?this.alert():(t.cursor++,this.render()):this.alert()}left(){let t=this.focused;return t?t.cursor<=0?this.alert():(t.cursor--,this.render()):this.alert()}space(t,r){return this.dispatch(t,r)}number(t,r){return this.dispatch(t,r)}next(){let t=this.focused;if(!t)return this.alert();let{initial:r,input:s}=t;return r&&r.startsWith(s)&&s!==r?(t.value=t.input=r,t.cursor=t.value.length,this.render()):super.next()}prev(){let t=this.focused;return t?t.cursor===0?super.prev():(t.value=t.input="",t.cursor=0,this.render()):this.alert()}separator(){return""}format(t){return this.state.submitted?"":super.format(t)}pointer(){return""}indicator(t){return t.input?"\u29BF":"\u2299"}async choiceSeparator(t,r){let s=await this.resolve(t.separator,this.state,t,r)||":";return s?" "+this.styles.disabled(s):""}async renderChoice(t,r){await this.onChoice(t,r);let{state:s,styles:a}=this,{cursor:n,initial:c="",name:f,hint:p,input:h=""}=t,{muted:E,submitted:C,primary:S,danger:x}=a,I=p,T=this.index===r,O=t.validate||(()=>!0),U=await this.choiceSeparator(t,r),V=t.message;this.align==="right"&&(V=V.padStart(this.longest+1," ")),this.align==="left"&&(V=V.padEnd(this.longest+1," "));let te=this.values[f]=h||c,ie=h?"success":"dark";await O.call(t,te,this.state)!==!0&&(ie="danger");let ue=a[ie],ae=ue(await this.indicator(t,r))+(t.pad||""),ge=this.indent(t),Ae=()=>[ge,ae,V+U,h,I].filter(Boolean).join(" ");if(s.submitted)return V=dst.unstyle(V),h=C(h),I="",Ae();if(t.format)h=await t.format.call(this,h,t,r);else{let Ce=this.styles.muted;h=mst(this,{input:h,initial:c,pos:n,showCursor:T,color:Ce})}return this.isValue(h)||(h=this.styles.muted(this.symbols.ellipsis)),t.result&&(this.values[f]=await t.result.call(this,te,t,r)),T&&(V=S(V)),t.error?h+=(h?" ":"")+x(t.error.trim()):t.hint&&(h+=(h?" ":"")+E(t.hint.trim())),Ae()}async submit(){return this.value=this.values,super.base.submit.call(this)}};tde.exports=MG});var UG=G((h3t,nde)=>{"use strict";var yst=NT(),Est=()=>{throw new Error("expected prompt to have a custom authenticate method")},rde=(e=Est)=>{class t extends yst{constructor(s){super(s)}async submit(){this.value=await e.call(this,this.values,this.state),super.base.submit.call(this)}static create(s){return rde(s)}}return t};nde.exports=rde()});var ode=G((d3t,sde)=>{"use strict";var Ist=UG();function Cst(e,t){return e.username===this.options.username&&e.password===this.options.password}var ide=(e=Cst)=>{let t=[{name:"username",message:"username"},{name:"password",message:"password",format(s){return this.options.showPassword?s:(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(s.length))}}];class r extends Ist.create(e){constructor(a){super({...a,choices:t})}static create(a){return ide(a)}}return r};sde.exports=ide()});var OT=G((g3t,ade)=>{"use strict";var wst=JI(),{isPrimitive:Bst,hasColor:vst}=na(),_G=class extends wst{constructor(t){super(t),this.cursorHide()}async initialize(){let t=await this.resolve(this.initial,this.state);this.input=await this.cast(t),await super.initialize()}dispatch(t){return this.isValue(t)?(this.input=t,this.submit()):this.alert()}format(t){let{styles:r,state:s}=this;return s.submitted?r.success(t):r.primary(t)}cast(t){return this.isTrue(t)}isTrue(t){return/^[ty1]/i.test(t)}isFalse(t){return/^[fn0]/i.test(t)}isValue(t){return Bst(t)&&(this.isTrue(t)||this.isFalse(t))}async hint(){if(this.state.status==="pending"){let t=await this.element("hint");return vst(t)?t:this.styles.muted(t)}}async render(){let{input:t,size:r}=this.state,s=await this.prefix(),a=await this.separator(),n=await this.message(),c=this.styles.muted(this.default),f=[s,n,c,a].filter(Boolean).join(" ");this.state.prompt=f;let p=await this.header(),h=this.value=this.cast(t),E=await this.format(h),C=await this.error()||await this.hint(),S=await this.footer();C&&!f.includes(C)&&(E+=" "+C),f+=" "+E,this.clear(r),this.write([p,f,S].filter(Boolean).join(` +`)),this.restore()}set value(t){super.value=t}get value(){return this.cast(super.value)}};ade.exports=_G});var cde=G((m3t,lde)=>{"use strict";var Sst=OT(),HG=class extends Sst{constructor(t){super(t),this.default=this.options.default||(this.initial?"(Y/n)":"(y/N)")}};lde.exports=HG});var fde=G((y3t,ude)=>{"use strict";var Dst=j0(),bst=NT(),KI=bst.prototype,jG=class extends Dst{constructor(t){super({...t,multiple:!0}),this.align=[this.options.align,"left"].find(r=>r!=null),this.emptyError="",this.values={}}dispatch(t,r){let s=this.focused,a=s.parent||{};return!s.editable&&!a.editable&&(t==="a"||t==="i")?super[t]():KI.dispatch.call(this,t,r)}append(t,r){return KI.append.call(this,t,r)}delete(t,r){return KI.delete.call(this,t,r)}space(t){return this.focused.editable?this.append(t):super.space()}number(t){return this.focused.editable?this.append(t):super.number(t)}next(){return this.focused.editable?KI.next.call(this):super.next()}prev(){return this.focused.editable?KI.prev.call(this):super.prev()}async indicator(t,r){let s=t.indicator||"",a=t.editable?s:super.indicator(t,r);return await this.resolve(a,this.state,t,r)||""}indent(t){return t.role==="heading"?"":t.editable?" ":" "}async renderChoice(t,r){return t.indent="",t.editable?KI.renderChoice.call(this,t,r):super.renderChoice(t,r)}error(){return""}footer(){return this.state.error}async validate(){let t=!0;for(let r of this.choices){if(typeof r.validate!="function"||r.role==="heading")continue;let s=r.parent?this.value[r.parent.name]:this.value;if(r.editable?s=r.value===r.name?r.initial||"":r.value:this.isDisabled(r)||(s=r.enabled===!0),t=await r.validate(s,this.state),t!==!0)break}return t!==!0&&(this.state.error=typeof t=="string"?t:"Invalid Input"),t}submit(){if(this.focused.newChoice===!0)return super.submit();if(this.choices.some(t=>t.newChoice))return this.alert();this.value={};for(let t of this.choices){let r=t.parent?this.value[t.parent.name]:this.value;if(t.role==="heading"){this.value[t.name]={};continue}t.editable?r[t.name]=t.value===t.name?t.initial||"":t.value:this.isDisabled(t)||(r[t.name]=t.enabled===!0)}return this.base.submit.call(this)}};ude.exports=jG});var bm=G((E3t,Ade)=>{"use strict";var Pst=JI(),xst=LG(),{isPrimitive:kst}=na(),GG=class extends Pst{constructor(t){super(t),this.initial=kst(this.initial)?String(this.initial):"",this.initial&&this.cursorHide(),this.state.prevCursor=0,this.state.clipboard=[]}async keypress(t,r={}){let s=this.state.prevKeypress;return this.state.prevKeypress=r,this.options.multiline===!0&&r.name==="return"&&(!s||s.name!=="return")?this.append(` +`,r):super.keypress(t,r)}moveCursor(t){this.cursor+=t}reset(){return this.input=this.value="",this.cursor=0,this.render()}dispatch(t,r){if(!t||r.ctrl||r.code)return this.alert();this.append(t)}append(t){let{cursor:r,input:s}=this.state;this.input=`${s}`.slice(0,r)+t+`${s}`.slice(r),this.moveCursor(String(t).length),this.render()}insert(t){this.append(t)}delete(){let{cursor:t,input:r}=this.state;if(t<=0)return this.alert();this.input=`${r}`.slice(0,t-1)+`${r}`.slice(t),this.moveCursor(-1),this.render()}deleteForward(){let{cursor:t,input:r}=this.state;if(r[t]===void 0)return this.alert();this.input=`${r}`.slice(0,t)+`${r}`.slice(t+1),this.render()}cutForward(){let t=this.cursor;if(this.input.length<=t)return this.alert();this.state.clipboard.push(this.input.slice(t)),this.input=this.input.slice(0,t),this.render()}cutLeft(){let t=this.cursor;if(t===0)return this.alert();let r=this.input.slice(0,t),s=this.input.slice(t),a=r.split(" ");this.state.clipboard.push(a.pop()),this.input=a.join(" "),this.cursor=this.input.length,this.input+=s,this.render()}paste(){if(!this.state.clipboard.length)return this.alert();this.insert(this.state.clipboard.pop()),this.render()}toggleCursor(){this.state.prevCursor?(this.cursor=this.state.prevCursor,this.state.prevCursor=0):(this.state.prevCursor=this.cursor,this.cursor=0),this.render()}first(){this.cursor=0,this.render()}last(){this.cursor=this.input.length-1,this.render()}next(){let t=this.initial!=null?String(this.initial):"";if(!t||!t.startsWith(this.input))return this.alert();this.input=this.initial,this.cursor=this.initial.length,this.render()}prev(){if(!this.input)return this.alert();this.reset()}backward(){return this.left()}forward(){return this.right()}right(){return this.cursor>=this.input.length?this.alert():(this.moveCursor(1),this.render())}left(){return this.cursor<=0?this.alert():(this.moveCursor(-1),this.render())}isValue(t){return!!t}async format(t=this.value){let r=await this.resolve(this.initial,this.state);return this.state.submitted?this.styles.submitted(t||r):xst(this,{input:t,initial:r,pos:this.cursor})}async render(){let t=this.state.size,r=await this.prefix(),s=await this.separator(),a=await this.message(),n=[r,a,s].filter(Boolean).join(" ");this.state.prompt=n;let c=await this.header(),f=await this.format(),p=await this.error()||await this.hint(),h=await this.footer();p&&!f.includes(p)&&(f+=" "+p),n+=" "+f,this.clear(t),this.write([c,n,h].filter(Boolean).join(` +`)),this.restore()}};Ade.exports=GG});var hde=G((I3t,pde)=>{"use strict";var Qst=e=>e.filter((t,r)=>e.lastIndexOf(t)===r),LT=e=>Qst(e).filter(Boolean);pde.exports=(e,t={},r="")=>{let{past:s=[],present:a=""}=t,n,c;switch(e){case"prev":case"undo":return n=s.slice(0,s.length-1),c=s[s.length-1]||"",{past:LT([r,...n]),present:c};case"next":case"redo":return n=s.slice(1),c=s[0]||"",{past:LT([...n,r]),present:c};case"save":return{past:LT([...s,r]),present:""};case"remove":return c=LT(s.filter(f=>f!==r)),a="",c.length&&(a=c.pop()),{past:c,present:a};default:throw new Error(`Invalid action: "${e}"`)}}});var WG=G((C3t,gde)=>{"use strict";var Rst=bm(),dde=hde(),qG=class extends Rst{constructor(t){super(t);let r=this.options.history;if(r&&r.store){let s=r.values||this.initial;this.autosave=!!r.autosave,this.store=r.store,this.data=this.store.get("values")||{past:[],present:s},this.initial=this.data.present||this.data.past[this.data.past.length-1]}}completion(t){return this.store?(this.data=dde(t,this.data,this.input),this.data.present?(this.input=this.data.present,this.cursor=this.input.length,this.render()):this.alert()):this.alert()}altUp(){return this.completion("prev")}altDown(){return this.completion("next")}prev(){return this.save(),super.prev()}save(){this.store&&(this.data=dde("save",this.data,this.input),this.store.set("values",this.data))}submit(){return this.store&&this.autosave===!0&&this.save(),super.submit()}};gde.exports=qG});var yde=G((w3t,mde)=>{"use strict";var Tst=bm(),YG=class extends Tst{format(){return""}};mde.exports=YG});var Ide=G((B3t,Ede)=>{"use strict";var Fst=bm(),VG=class extends Fst{constructor(t={}){super(t),this.sep=this.options.separator||/, */,this.initial=t.initial||""}split(t=this.value){return t?String(t).split(this.sep):[]}format(){let t=this.state.submitted?this.styles.primary:r=>r;return this.list.map(t).join(", ")}async submit(t){let r=this.state.error||await this.validate(this.list,this.state);return r!==!0?(this.state.error=r,super.submit()):(this.value=this.list,super.submit())}get list(){return this.split()}};Ede.exports=VG});var wde=G((v3t,Cde)=>{"use strict";var Nst=j0(),JG=class extends Nst{constructor(t){super({...t,multiple:!0})}};Cde.exports=JG});var zG=G((S3t,Bde)=>{"use strict";var Ost=bm(),KG=class extends Ost{constructor(t={}){super({style:"number",...t}),this.min=this.isValue(t.min)?this.toNumber(t.min):-1/0,this.max=this.isValue(t.max)?this.toNumber(t.max):1/0,this.delay=t.delay!=null?t.delay:1e3,this.float=t.float!==!1,this.round=t.round===!0||t.float===!1,this.major=t.major||10,this.minor=t.minor||1,this.initial=t.initial!=null?t.initial:"",this.input=String(this.initial),this.cursor=this.input.length,this.cursorShow()}append(t){return!/[-+.]/.test(t)||t==="."&&this.input.includes(".")?this.alert("invalid number"):super.append(t)}number(t){return super.append(t)}next(){return this.input&&this.input!==this.initial?this.alert():this.isValue(this.initial)?(this.input=this.initial,this.cursor=String(this.initial).length,this.render()):this.alert()}up(t){let r=t||this.minor,s=this.toNumber(this.input);return s>this.max+r?this.alert():(this.input=`${s+r}`,this.render())}down(t){let r=t||this.minor,s=this.toNumber(this.input);return sthis.isValue(r));return this.value=this.toNumber(t||0),super.submit()}};Bde.exports=KG});var Sde=G((D3t,vde)=>{vde.exports=zG()});var bde=G((b3t,Dde)=>{"use strict";var Lst=bm(),XG=class extends Lst{constructor(t){super(t),this.cursorShow()}format(t=this.input){return this.keypressed?(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(t.length)):""}};Dde.exports=XG});var kde=G((P3t,xde)=>{"use strict";var Mst=zu(),Ust=Wv(),Pde=na(),ZG=class extends Ust{constructor(t={}){super(t),this.widths=[].concat(t.messageWidth||50),this.align=[].concat(t.align||"left"),this.linebreak=t.linebreak||!1,this.edgeLength=t.edgeLength||3,this.newline=t.newline||` + `;let r=t.startNumber||1;typeof this.scale=="number"&&(this.scaleKey=!1,this.scale=Array(this.scale).fill(0).map((s,a)=>({name:a+r})))}async reset(){return this.tableized=!1,await super.reset(),this.render()}tableize(){if(this.tableized===!0)return;this.tableized=!0;let t=0;for(let r of this.choices){t=Math.max(t,r.message.length),r.scaleIndex=r.initial||2,r.scale=[];for(let s=0;s=this.scale.length-1?this.alert():(t.scaleIndex++,this.render())}left(){let t=this.focused;return t.scaleIndex<=0?this.alert():(t.scaleIndex--,this.render())}indent(){return""}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.index)).join(", "):""}pointer(){return""}renderScaleKey(){return this.scaleKey===!1||this.state.submitted?"":["",...this.scale.map(s=>` ${s.name} - ${s.message}`)].map(s=>this.styles.muted(s)).join(` +`)}renderScaleHeading(t){let r=this.scale.map(p=>p.name);typeof this.options.renderScaleHeading=="function"&&(r=this.options.renderScaleHeading.call(this,t));let s=this.scaleLength-r.join("").length,a=Math.round(s/(r.length-1)),c=r.map(p=>this.styles.strong(p)).join(" ".repeat(a)),f=" ".repeat(this.widths[0]);return this.margin[3]+f+this.margin[1]+c}scaleIndicator(t,r,s){if(typeof this.options.scaleIndicator=="function")return this.options.scaleIndicator.call(this,t,r,s);let a=t.scaleIndex===r.index;return r.disabled?this.styles.hint(this.symbols.radio.disabled):a?this.styles.success(this.symbols.radio.on):this.symbols.radio.off}renderScale(t,r){let s=t.scale.map(n=>this.scaleIndicator(t,n,r)),a=this.term==="Hyper"?"":" ";return s.join(a+this.symbols.line.repeat(this.edgeLength))}async renderChoice(t,r){await this.onChoice(t,r);let s=this.index===r,a=await this.pointer(t,r),n=await t.hint;n&&!Pde.hasColor(n)&&(n=this.styles.muted(n));let c=I=>this.margin[3]+I.replace(/\s+$/,"").padEnd(this.widths[0]," "),f=this.newline,p=this.indent(t),h=await this.resolve(t.message,this.state,t,r),E=await this.renderScale(t,r),C=this.margin[1]+this.margin[3];this.scaleLength=Mst.unstyle(E).length,this.widths[0]=Math.min(this.widths[0],this.width-this.scaleLength-C.length);let x=Pde.wordWrap(h,{width:this.widths[0],newline:f}).split(` +`).map(I=>c(I)+this.margin[1]);return s&&(E=this.styles.info(E),x=x.map(I=>this.styles.info(I))),x[0]+=E,this.linebreak&&x.push(""),[p+a,x.join(` +`)].filter(Boolean)}async renderChoices(){if(this.state.submitted)return"";this.tableize();let t=this.visible.map(async(a,n)=>await this.renderChoice(a,n)),r=await Promise.all(t),s=await this.renderScaleHeading();return this.margin[0]+[s,...r.map(a=>a.join(" "))].join(` +`)}async render(){let{submitted:t,size:r}=this.state,s=await this.prefix(),a=await this.separator(),n=await this.message(),c="";this.options.promptLine!==!1&&(c=[s,n,a,""].join(" "),this.state.prompt=c);let f=await this.header(),p=await this.format(),h=await this.renderScaleKey(),E=await this.error()||await this.hint(),C=await this.renderChoices(),S=await this.footer(),x=this.emptyError;p&&(c+=p),E&&!c.includes(E)&&(c+=" "+E),t&&!p&&!C.trim()&&this.multiple&&x!=null&&(c+=this.styles.danger(x)),this.clear(r),this.write([f,c,h,C,S].filter(Boolean).join(` +`)),this.state.submitted||this.write(this.margin[2]),this.restore()}submit(){this.value={};for(let t of this.choices)this.value[t.name]=t.scaleIndex;return this.base.submit.call(this)}};xde.exports=ZG});var Tde=G((x3t,Rde)=>{"use strict";var Qde=zu(),_st=(e="")=>typeof e=="string"?e.replace(/^['"]|['"]$/g,""):"",e5=class{constructor(t){this.name=t.key,this.field=t.field||{},this.value=_st(t.initial||this.field.initial||""),this.message=t.message||this.name,this.cursor=0,this.input="",this.lines=[]}},Hst=async(e={},t={},r=s=>s)=>{let s=new Set,a=e.fields||[],n=e.template,c=[],f=[],p=[],h=1;typeof n=="function"&&(n=await n());let E=-1,C=()=>n[++E],S=()=>n[E+1],x=I=>{I.line=h,c.push(I)};for(x({type:"bos",value:""});Eie.name===U.key);U.field=a.find(ie=>ie.name===U.key),te||(te=new e5(U),f.push(te)),te.lines.push(U.line-1);continue}let T=c[c.length-1];T.type==="text"&&T.line===h?T.value+=I:x({type:"text",value:I})}return x({type:"eos",value:""}),{input:n,tabstops:c,unique:s,keys:p,items:f}};Rde.exports=async e=>{let t=e.options,r=new Set(t.required===!0?[]:t.required||[]),s={...t.values,...t.initial},{tabstops:a,items:n,keys:c}=await Hst(t,s),f=$G("result",e,t),p=$G("format",e,t),h=$G("validate",e,t,!0),E=e.isValue.bind(e);return async(C={},S=!1)=>{let x=0;C.required=r,C.items=n,C.keys=c,C.output="";let I=async(V,te,ie,ue)=>{let ae=await h(V,te,ie,ue);return ae===!1?"Invalid field "+ie.name:ae};for(let V of a){let te=V.value,ie=V.key;if(V.type!=="template"){te&&(C.output+=te);continue}if(V.type==="template"){let ue=n.find(Ee=>Ee.name===ie);t.required===!0&&C.required.add(ue.name);let ae=[ue.input,C.values[ue.value],ue.value,te].find(E),Ae=(ue.field||{}).message||V.inner;if(S){let Ee=await I(C.values[ie],C,ue,x);if(Ee&&typeof Ee=="string"||Ee===!1){C.invalid.set(ie,Ee);continue}C.invalid.delete(ie);let d=await f(C.values[ie],C,ue,x);C.output+=Qde.unstyle(d);continue}ue.placeholder=!1;let Ce=te;te=await p(te,C,ue,x),ae!==te?(C.values[ie]=ae,te=e.styles.typing(ae),C.missing.delete(Ae)):(C.values[ie]=void 0,ae=`<${Ae}>`,te=e.styles.primary(ae),ue.placeholder=!0,C.required.has(ie)&&C.missing.add(Ae)),C.missing.has(Ae)&&C.validating&&(te=e.styles.warning(ae)),C.invalid.has(ie)&&C.validating&&(te=e.styles.danger(ae)),x===C.index&&(Ce!==te?te=e.styles.underline(te):te=e.styles.heading(Qde.unstyle(te))),x++}te&&(C.output+=te)}let T=C.output.split(` +`).map(V=>" "+V),O=n.length,U=0;for(let V of n)C.invalid.has(V.name)&&V.lines.forEach(te=>{T[te][0]===" "&&(T[te]=C.styles.danger(C.symbols.bullet)+T[te].slice(1))}),e.isValue(C.values[V.name])&&U++;return C.completed=(U/O*100).toFixed(0),C.output=T.join(` +`),C.output}};function $G(e,t,r,s){return(a,n,c,f)=>typeof c.field[e]=="function"?c.field[e].call(t,a,n,c,f):[s,a].find(p=>t.isValue(p))}});var Nde=G((k3t,Fde)=>{"use strict";var jst=zu(),Gst=Tde(),qst=JI(),t5=class extends qst{constructor(t){super(t),this.cursorHide(),this.reset(!0)}async initialize(){this.interpolate=await Gst(this),await super.initialize()}async reset(t){this.state.keys=[],this.state.invalid=new Map,this.state.missing=new Set,this.state.completed=0,this.state.values={},t!==!0&&(await this.initialize(),await this.render())}moveCursor(t){let r=this.getItem();this.cursor+=t,r.cursor+=t}dispatch(t,r){if(!r.code&&!r.ctrl&&t!=null&&this.getItem()){this.append(t,r);return}this.alert()}append(t,r){let s=this.getItem(),a=s.input.slice(0,this.cursor),n=s.input.slice(this.cursor);this.input=s.input=`${a}${t}${n}`,this.moveCursor(1),this.render()}delete(){let t=this.getItem();if(this.cursor<=0||!t.input)return this.alert();let r=t.input.slice(this.cursor),s=t.input.slice(0,this.cursor-1);this.input=t.input=`${s}${r}`,this.moveCursor(-1),this.render()}increment(t){return t>=this.state.keys.length-1?0:t+1}decrement(t){return t<=0?this.state.keys.length-1:t-1}first(){this.state.index=0,this.render()}last(){this.state.index=this.state.keys.length-1,this.render()}right(){if(this.cursor>=this.input.length)return this.alert();this.moveCursor(1),this.render()}left(){if(this.cursor<=0)return this.alert();this.moveCursor(-1),this.render()}prev(){this.state.index=this.decrement(this.state.index),this.getItem(),this.render()}next(){this.state.index=this.increment(this.state.index),this.getItem(),this.render()}up(){this.prev()}down(){this.next()}format(t){let r=this.state.completed<100?this.styles.warning:this.styles.success;return this.state.submitted===!0&&this.state.completed!==100&&(r=this.styles.danger),r(`${this.state.completed}% completed`)}async render(){let{index:t,keys:r=[],submitted:s,size:a}=this.state,n=[this.options.newline,` +`].find(V=>V!=null),c=await this.prefix(),f=await this.separator(),p=await this.message(),h=[c,p,f].filter(Boolean).join(" ");this.state.prompt=h;let E=await this.header(),C=await this.error()||"",S=await this.hint()||"",x=s?"":await this.interpolate(this.state),I=this.state.key=r[t]||"",T=await this.format(I),O=await this.footer();T&&(h+=" "+T),S&&!T&&this.state.completed===0&&(h+=" "+S),this.clear(a);let U=[E,h,x,O,C.trim()];this.write(U.filter(Boolean).join(n)),this.restore()}getItem(t){let{items:r,keys:s,index:a}=this.state,n=r.find(c=>c.name===s[a]);return n&&n.input!=null&&(this.input=n.input,this.cursor=n.cursor),n}async submit(){typeof this.interpolate!="function"&&await this.initialize(),await this.interpolate(this.state,!0);let{invalid:t,missing:r,output:s,values:a}=this.state;if(t.size){let f="";for(let[p,h]of t)f+=`Invalid ${p}: ${h} +`;return this.state.error=f,super.submit()}if(r.size)return this.state.error="Required: "+[...r.keys()].join(", "),super.submit();let c=jst.unstyle(s).split(` +`).map(f=>f.slice(1)).join(` +`);return this.value={values:a,result:c},super.submit()}};Fde.exports=t5});var Lde=G((Q3t,Ode)=>{"use strict";var Wst="(Use + to sort)",Yst=j0(),r5=class extends Yst{constructor(t){super({...t,reorder:!1,sort:!0,multiple:!0}),this.state.hint=[this.options.hint,Wst].find(this.isValue.bind(this))}indicator(){return""}async renderChoice(t,r){let s=await super.renderChoice(t,r),a=this.symbols.identicalTo+" ",n=this.index===r&&this.sorting?this.styles.muted(a):" ";return this.options.drag===!1&&(n=""),this.options.numbered===!0?n+`${r+1} - `+s:n+s}get selected(){return this.choices}submit(){return this.value=this.choices.map(t=>t.value),super.submit()}};Ode.exports=r5});var Ude=G((R3t,Mde)=>{"use strict";var Vst=Wv(),n5=class extends Vst{constructor(t={}){if(super(t),this.emptyError=t.emptyError||"No items were selected",this.term=process.env.TERM_PROGRAM,!this.options.header){let r=["","4 - Strongly Agree","3 - Agree","2 - Neutral","1 - Disagree","0 - Strongly Disagree",""];r=r.map(s=>this.styles.muted(s)),this.state.header=r.join(` + `)}}async toChoices(...t){if(this.createdScales)return!1;this.createdScales=!0;let r=await super.toChoices(...t);for(let s of r)s.scale=Jst(5,this.options),s.scaleIdx=2;return r}dispatch(){this.alert()}space(){let t=this.focused,r=t.scale[t.scaleIdx],s=r.selected;return t.scale.forEach(a=>a.selected=!1),r.selected=!s,this.render()}indicator(){return""}pointer(){return""}separator(){return this.styles.muted(this.symbols.ellipsis)}right(){let t=this.focused;return t.scaleIdx>=t.scale.length-1?this.alert():(t.scaleIdx++,this.render())}left(){let t=this.focused;return t.scaleIdx<=0?this.alert():(t.scaleIdx--,this.render())}indent(){return" "}async renderChoice(t,r){await this.onChoice(t,r);let s=this.index===r,a=this.term==="Hyper",n=a?9:8,c=a?"":" ",f=this.symbols.line.repeat(n),p=" ".repeat(n+(a?0:1)),h=te=>(te?this.styles.success("\u25C9"):"\u25EF")+c,E=r+1+".",C=s?this.styles.heading:this.styles.noop,S=await this.resolve(t.message,this.state,t,r),x=this.indent(t),I=x+t.scale.map((te,ie)=>h(ie===t.scaleIdx)).join(f),T=te=>te===t.scaleIdx?C(te):te,O=x+t.scale.map((te,ie)=>T(ie)).join(p),U=()=>[E,S].filter(Boolean).join(" "),V=()=>[U(),I,O," "].filter(Boolean).join(` +`);return s&&(I=this.styles.cyan(I),O=this.styles.cyan(O)),V()}async renderChoices(){if(this.state.submitted)return"";let t=this.visible.map(async(s,a)=>await this.renderChoice(s,a)),r=await Promise.all(t);return r.length||r.push(this.styles.danger("No matching choices")),r.join(` +`)}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.scaleIdx)).join(", "):""}async render(){let{submitted:t,size:r}=this.state,s=await this.prefix(),a=await this.separator(),n=await this.message(),c=[s,n,a].filter(Boolean).join(" ");this.state.prompt=c;let f=await this.header(),p=await this.format(),h=await this.error()||await this.hint(),E=await this.renderChoices(),C=await this.footer();(p||!h)&&(c+=" "+p),h&&!c.includes(h)&&(c+=" "+h),t&&!p&&!E&&this.multiple&&this.type!=="form"&&(c+=this.styles.danger(this.emptyError)),this.clear(r),this.write([c,f,E,C].filter(Boolean).join(` +`)),this.restore()}submit(){this.value={};for(let t of this.choices)this.value[t.name]=t.scaleIdx;return this.base.submit.call(this)}};function Jst(e,t={}){if(Array.isArray(t.scale))return t.scale.map(s=>({...s}));let r=[];for(let s=1;s{_de.exports=WG()});var Gde=G((F3t,jde)=>{"use strict";var Kst=OT(),i5=class extends Kst{async initialize(){await super.initialize(),this.value=this.initial=!!this.options.initial,this.disabled=this.options.disabled||"no",this.enabled=this.options.enabled||"yes",await this.render()}reset(){this.value=this.initial,this.render()}delete(){this.alert()}toggle(){this.value=!this.value,this.render()}enable(){if(this.value===!0)return this.alert();this.value=!0,this.render()}disable(){if(this.value===!1)return this.alert();this.value=!1,this.render()}up(){this.toggle()}down(){this.toggle()}right(){this.toggle()}left(){this.toggle()}next(){this.toggle()}prev(){this.toggle()}dispatch(t="",r){switch(t.toLowerCase()){case" ":return this.toggle();case"1":case"y":case"t":return this.enable();case"0":case"n":case"f":return this.disable();default:return this.alert()}}format(){let t=s=>this.styles.primary.underline(s);return[this.value?this.disabled:t(this.disabled),this.value?t(this.enabled):this.enabled].join(this.styles.muted(" / "))}async render(){let{size:t}=this.state,r=await this.header(),s=await this.prefix(),a=await this.separator(),n=await this.message(),c=await this.format(),f=await this.error()||await this.hint(),p=await this.footer(),h=[s,n,a,c].join(" ");this.state.prompt=h,f&&!h.includes(f)&&(h+=" "+f),this.clear(t),this.write([r,h,p].filter(Boolean).join(` +`)),this.write(this.margin[2]),this.restore()}};jde.exports=i5});var Wde=G((N3t,qde)=>{"use strict";var zst=j0(),s5=class extends zst{constructor(t){if(super(t),typeof this.options.correctChoice!="number"||this.options.correctChoice<0)throw new Error("Please specify the index of the correct answer from the list of choices")}async toChoices(t,r){let s=await super.toChoices(t,r);if(s.length<2)throw new Error("Please give at least two choices to the user");if(this.options.correctChoice>s.length)throw new Error("Please specify the index of the correct answer from the list of choices");return s}check(t){return t.index===this.options.correctChoice}async result(t){return{selectedAnswer:t,correctAnswer:this.options.choices[this.options.correctChoice].value,correct:await this.check(this.state)}}};qde.exports=s5});var Vde=G(o5=>{"use strict";var Yde=na(),Ts=(e,t)=>{Yde.defineExport(o5,e,t),Yde.defineExport(o5,e.toLowerCase(),t)};Ts("AutoComplete",()=>$0e());Ts("BasicAuth",()=>ode());Ts("Confirm",()=>cde());Ts("Editable",()=>fde());Ts("Form",()=>NT());Ts("Input",()=>WG());Ts("Invisible",()=>yde());Ts("List",()=>Ide());Ts("MultiSelect",()=>wde());Ts("Numeral",()=>Sde());Ts("Password",()=>bde());Ts("Scale",()=>kde());Ts("Select",()=>j0());Ts("Snippet",()=>Nde());Ts("Sort",()=>Lde());Ts("Survey",()=>Ude());Ts("Text",()=>Hde());Ts("Toggle",()=>Gde());Ts("Quiz",()=>Wde())});var Kde=G((L3t,Jde)=>{Jde.exports={ArrayPrompt:Wv(),AuthPrompt:UG(),BooleanPrompt:OT(),NumberPrompt:zG(),StringPrompt:bm()}});var Vv=G((M3t,Xde)=>{"use strict";var zde=Ie("assert"),l5=Ie("events"),G0=na(),Zu=class extends l5{constructor(t,r){super(),this.options=G0.merge({},t),this.answers={...r}}register(t,r){if(G0.isObject(t)){for(let a of Object.keys(t))this.register(a,t[a]);return this}zde.equal(typeof r,"function","expected a function");let s=t.toLowerCase();return r.prototype instanceof this.Prompt?this.prompts[s]=r:this.prompts[s]=r(this.Prompt,this),this}async prompt(t=[]){for(let r of[].concat(t))try{typeof r=="function"&&(r=await r.call(this)),await this.ask(G0.merge({},this.options,r))}catch(s){return Promise.reject(s)}return this.answers}async ask(t){typeof t=="function"&&(t=await t.call(this));let r=G0.merge({},this.options,t),{type:s,name:a}=t,{set:n,get:c}=G0;if(typeof s=="function"&&(s=await s.call(this,t,this.answers)),!s)return this.answers[a];zde(this.prompts[s],`Prompt "${s}" is not registered`);let f=new this.prompts[s](r),p=c(this.answers,a);f.state.answers=this.answers,f.enquirer=this,a&&f.on("submit",E=>{this.emit("answer",a,E,f),n(this.answers,a,E)});let h=f.emit.bind(f);return f.emit=(...E)=>(this.emit.call(this,...E),h(...E)),this.emit("prompt",f,this),r.autofill&&p!=null?(f.value=f.input=p,r.autofill==="show"&&await f.submit()):p=f.value=await f.run(),p}use(t){return t.call(this,this),this}set Prompt(t){this._Prompt=t}get Prompt(){return this._Prompt||this.constructor.Prompt}get prompts(){return this.constructor.prompts}static set Prompt(t){this._Prompt=t}static get Prompt(){return this._Prompt||JI()}static get prompts(){return Vde()}static get types(){return Kde()}static get prompt(){let t=(r,...s)=>{let a=new this(...s),n=a.emit.bind(a);return a.emit=(...c)=>(t.emit(...c),n(...c)),a.prompt(r)};return G0.mixinEmitter(t,new l5),t}};G0.mixinEmitter(Zu,new l5);var a5=Zu.prompts;for(let e of Object.keys(a5)){let t=e.toLowerCase(),r=s=>new a5[e](s).run();Zu.prompt[t]=r,Zu[t]=r,Zu[e]||Reflect.defineProperty(Zu,e,{get:()=>a5[e]})}var Yv=e=>{G0.defineExport(Zu,e,()=>Zu.types[e])};Yv("ArrayPrompt");Yv("AuthPrompt");Yv("BooleanPrompt");Yv("NumberPrompt");Yv("StringPrompt");Xde.exports=Zu});var sge=G((aHt,sot)=>{sot.exports={name:"@yarnpkg/cli",version:"4.14.1",license:"BSD-2-Clause",main:"./sources/index.ts",exports:{".":"./sources/index.ts","./polyfills":"./sources/polyfills.ts","./package.json":"./package.json"},dependencies:{"@yarnpkg/core":"workspace:^","@yarnpkg/fslib":"workspace:^","@yarnpkg/libzip":"workspace:^","@yarnpkg/parsers":"workspace:^","@yarnpkg/plugin-catalog":"workspace:^","@yarnpkg/plugin-compat":"workspace:^","@yarnpkg/plugin-constraints":"workspace:^","@yarnpkg/plugin-dlx":"workspace:^","@yarnpkg/plugin-essentials":"workspace:^","@yarnpkg/plugin-exec":"workspace:^","@yarnpkg/plugin-file":"workspace:^","@yarnpkg/plugin-git":"workspace:^","@yarnpkg/plugin-github":"workspace:^","@yarnpkg/plugin-http":"workspace:^","@yarnpkg/plugin-init":"workspace:^","@yarnpkg/plugin-interactive-tools":"workspace:^","@yarnpkg/plugin-jsr":"workspace:^","@yarnpkg/plugin-link":"workspace:^","@yarnpkg/plugin-nm":"workspace:^","@yarnpkg/plugin-npm":"workspace:^","@yarnpkg/plugin-npm-cli":"workspace:^","@yarnpkg/plugin-pack":"workspace:^","@yarnpkg/plugin-patch":"workspace:^","@yarnpkg/plugin-pnp":"workspace:^","@yarnpkg/plugin-pnpm":"workspace:^","@yarnpkg/plugin-stage":"workspace:^","@yarnpkg/plugin-typescript":"workspace:^","@yarnpkg/plugin-version":"workspace:^","@yarnpkg/plugin-workspace-tools":"workspace:^","@yarnpkg/shell":"workspace:^","ci-info":"^4.0.0",clipanion:"^4.0.0-rc.2",semver:"^7.1.2",tslib:"^2.4.0",typanion:"^3.14.0"},devDependencies:{"@types/semver":"^7.1.0","@yarnpkg/builder":"workspace:^","@yarnpkg/monorepo":"workspace:^","@yarnpkg/pnpify":"workspace:^"},peerDependencies:{"@yarnpkg/core":"workspace:^"},scripts:{postpack:"rm -rf lib",prepack:'run build:compile "$(pwd)"',"build:cli+hook":"run build:pnp:hook && builder build bundle","build:cli":"builder build bundle","run:cli":"builder run","update-local":"run build:cli --no-git-hash && rsync -a --delete bundles/ bin/"},publishConfig:{main:"./lib/index.js",bin:null,exports:{".":"./lib/index.js","./package.json":"./package.json"}},files:["/lib/**/*","!/lib/pluginConfiguration.*","!/lib/cli.*"],"@yarnpkg/builder":{bundles:{standard:["@yarnpkg/plugin-essentials","@yarnpkg/plugin-catalog","@yarnpkg/plugin-compat","@yarnpkg/plugin-constraints","@yarnpkg/plugin-dlx","@yarnpkg/plugin-exec","@yarnpkg/plugin-file","@yarnpkg/plugin-git","@yarnpkg/plugin-github","@yarnpkg/plugin-http","@yarnpkg/plugin-init","@yarnpkg/plugin-interactive-tools","@yarnpkg/plugin-jsr","@yarnpkg/plugin-link","@yarnpkg/plugin-nm","@yarnpkg/plugin-npm","@yarnpkg/plugin-npm-cli","@yarnpkg/plugin-pack","@yarnpkg/plugin-patch","@yarnpkg/plugin-pnp","@yarnpkg/plugin-pnpm","@yarnpkg/plugin-stage","@yarnpkg/plugin-typescript","@yarnpkg/plugin-version","@yarnpkg/plugin-workspace-tools"]}},repository:{type:"git",url:"git+https://github.com/yarnpkg/berry.git",directory:"packages/yarnpkg-cli"},engines:{node:">=18.12.0"}}});var B5=G((LGt,mge)=>{"use strict";mge.exports=function(t,r){r===!0&&(r=0);var s="";if(typeof t=="string")try{s=new URL(t).protocol}catch{}else t&&t.constructor===URL&&(s=t.protocol);var a=s.split(/\:|\+/).filter(Boolean);return typeof r=="number"?a[r]:a}});var Ege=G((MGt,yge)=>{"use strict";var Sot=B5();function Dot(e){var t={protocols:[],protocol:null,port:null,resource:"",host:"",user:"",password:"",pathname:"",hash:"",search:"",href:e,query:{},parse_failed:!1};try{var r=new URL(e);t.protocols=Sot(r),t.protocol=t.protocols[0],t.port=r.port,t.resource=r.hostname,t.host=r.host,t.user=r.username||"",t.password=r.password||"",t.pathname=r.pathname,t.hash=r.hash.slice(1),t.search=r.search.slice(1),t.href=r.href,t.query=Object.fromEntries(r.searchParams)}catch{t.protocols=["file"],t.protocol=t.protocols[0],t.port="",t.resource="",t.user="",t.pathname="",t.hash="",t.search="",t.href=e,t.query={},t.parse_failed=!0}return t}yge.exports=Dot});var wge=G((UGt,Cge)=>{"use strict";var bot=Ege();function Pot(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var xot=Pot(bot),kot="text/plain",Qot="us-ascii",Ige=(e,t)=>t.some(r=>r instanceof RegExp?r.test(e):r===e),Rot=(e,{stripHash:t})=>{let r=/^data:(?[^,]*?),(?[^#]*?)(?:#(?.*))?$/.exec(e);if(!r)throw new Error(`Invalid URL: ${e}`);let{type:s,data:a,hash:n}=r.groups,c=s.split(";");n=t?"":n;let f=!1;c[c.length-1]==="base64"&&(c.pop(),f=!0);let p=(c.shift()||"").toLowerCase(),E=[...c.map(C=>{let[S,x=""]=C.split("=").map(I=>I.trim());return S==="charset"&&(x=x.toLowerCase(),x===Qot)?"":`${S}${x?`=${x}`:""}`}).filter(Boolean)];return f&&E.push("base64"),(E.length>0||p&&p!==kot)&&E.unshift(p),`data:${E.join(";")},${f?a.trim():a}${n?`#${n}`:""}`};function Tot(e,t){if(t={defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripTextFragment:!0,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeSingleSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0,...t},e=e.trim(),/^data:/i.test(e))return Rot(e,t);if(/^view-source:/i.test(e))throw new Error("`view-source:` is not supported as it is a non-standard protocol");let r=e.startsWith("//");!r&&/^\.*\//.test(e)||(e=e.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,t.defaultProtocol));let a=new URL(e);if(t.forceHttp&&t.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(t.forceHttp&&a.protocol==="https:"&&(a.protocol="http:"),t.forceHttps&&a.protocol==="http:"&&(a.protocol="https:"),t.stripAuthentication&&(a.username="",a.password=""),t.stripHash?a.hash="":t.stripTextFragment&&(a.hash=a.hash.replace(/#?:~:text.*?$/i,"")),a.pathname){let c=/\b[a-z][a-z\d+\-.]{1,50}:\/\//g,f=0,p="";for(;;){let E=c.exec(a.pathname);if(!E)break;let C=E[0],S=E.index,x=a.pathname.slice(f,S);p+=x.replace(/\/{2,}/g,"/"),p+=C,f=S+C.length}let h=a.pathname.slice(f,a.pathname.length);p+=h.replace(/\/{2,}/g,"/"),a.pathname=p}if(a.pathname)try{a.pathname=decodeURI(a.pathname)}catch{}if(t.removeDirectoryIndex===!0&&(t.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(t.removeDirectoryIndex)&&t.removeDirectoryIndex.length>0){let c=a.pathname.split("/"),f=c[c.length-1];Ige(f,t.removeDirectoryIndex)&&(c=c.slice(0,-1),a.pathname=c.slice(1).join("/")+"/")}if(a.hostname&&(a.hostname=a.hostname.replace(/\.$/,""),t.stripWWW&&/^www\.(?!www\.)[a-z\-\d]{1,63}\.[a-z.\-\d]{2,63}$/.test(a.hostname)&&(a.hostname=a.hostname.replace(/^www\./,""))),Array.isArray(t.removeQueryParameters))for(let c of[...a.searchParams.keys()])Ige(c,t.removeQueryParameters)&&a.searchParams.delete(c);if(t.removeQueryParameters===!0&&(a.search=""),t.sortQueryParameters){a.searchParams.sort();try{a.search=decodeURIComponent(a.search)}catch{}}t.removeTrailingSlash&&(a.pathname=a.pathname.replace(/\/$/,""));let n=e;return e=a.toString(),!t.removeSingleSlash&&a.pathname==="/"&&!n.endsWith("/")&&a.hash===""&&(e=e.replace(/\/$/,"")),(t.removeTrailingSlash||a.pathname==="/")&&a.hash===""&&t.removeSingleSlash&&(e=e.replace(/\/$/,"")),r&&!t.normalizeProtocol&&(e=e.replace(/^http:\/\//,"//")),t.stripProtocol&&(e=e.replace(/^(?:https?:)?\/\//,"")),e}var v5=(e,t=!1)=>{let r=/^(?:([a-z_][a-z0-9_-]{0,31})@|https?:\/\/)([\w\.\-@]+)[\/:]([\~,\.\w,\-,\_,\/]+?(?:\.git|\/)?)$/,s=n=>{let c=new Error(n);throw c.subject_url=e,c};(typeof e!="string"||!e.trim())&&s("Invalid url."),e.length>v5.MAX_INPUT_LENGTH&&s("Input exceeds maximum length. If needed, change the value of parseUrl.MAX_INPUT_LENGTH."),t&&(typeof t!="object"&&(t={stripHash:!1}),e=Tot(e,t));let a=xot.default(e);if(a.parse_failed){let n=a.href.match(r);n?(a.protocols=["ssh"],a.protocol="ssh",a.resource=n[2],a.host=n[2],a.user=n[1],a.pathname=`/${n[3]}`,a.parse_failed=!1):s("URL parsing failed.")}return a};v5.MAX_INPUT_LENGTH=2048;Cge.exports=v5});var Sge=G((_Gt,vge)=>{"use strict";var Fot=B5();function Bge(e){if(Array.isArray(e))return e.indexOf("ssh")!==-1||e.indexOf("rsync")!==-1;if(typeof e!="string")return!1;var t=Fot(e);if(e=e.substring(e.indexOf("://")+3),Bge(t))return!0;var r=new RegExp(".([a-zA-Z\\d]+):(\\d+)/");return!e.match(r)&&e.indexOf("@"){"use strict";var Not=wge(),Dge=Sge();function Oot(e){var t=Not(e);return t.token="",t.password==="x-oauth-basic"?t.token=t.user:t.user==="x-token-auth"&&(t.token=t.password),Dge(t.protocols)||t.protocols.length===0&&Dge(e)?t.protocol="ssh":t.protocols.length?t.protocol=t.protocols[0]:(t.protocol="file",t.protocols=["file"]),t.href=t.href.replace(/\/$/,""),t}bge.exports=Oot});var kge=G((jGt,xge)=>{"use strict";var Lot=Pge();function S5(e){if(typeof e!="string")throw new Error("The url must be a string.");var t=/^([a-z\d-]{1,39})\/([-\.\w]{1,100})$/i;t.test(e)&&(e="https://github.com/"+e);var r=Lot(e),s=r.resource.split("."),a=null;switch(r.toString=function(O){return S5.stringify(this,O)},r.source=s.length>2?s.slice(1-s.length).join("."):r.source=r.resource,r.git_suffix=/\.git$/.test(r.pathname),r.name=decodeURIComponent((r.pathname||r.href).replace(/(^\/)|(\/$)/g,"").replace(/\.git$/,"")),r.owner=decodeURIComponent(r.user),r.source){case"git.cloudforge.com":r.owner=r.user,r.organization=s[0],r.source="cloudforge.com";break;case"visualstudio.com":if(r.resource==="vs-ssh.visualstudio.com"){a=r.name.split("/"),a.length===4&&(r.organization=a[1],r.owner=a[2],r.name=a[3],r.full_name=a[2]+"/"+a[3]);break}else{a=r.name.split("/"),a.length===2?(r.owner=a[1],r.name=a[1],r.full_name="_git/"+r.name):a.length===3?(r.name=a[2],a[0]==="DefaultCollection"?(r.owner=a[2],r.organization=a[0],r.full_name=r.organization+"/_git/"+r.name):(r.owner=a[0],r.full_name=r.owner+"/_git/"+r.name)):a.length===4&&(r.organization=a[0],r.owner=a[1],r.name=a[3],r.full_name=r.organization+"/"+r.owner+"/_git/"+r.name);break}case"dev.azure.com":case"azure.com":if(r.resource==="ssh.dev.azure.com"){a=r.name.split("/"),a.length===4&&(r.organization=a[1],r.owner=a[2],r.name=a[3]);break}else{a=r.name.split("/"),a.length===5?(r.organization=a[0],r.owner=a[1],r.name=a[4],r.full_name="_git/"+r.name):a.length===3?(r.name=a[2],a[0]==="DefaultCollection"?(r.owner=a[2],r.organization=a[0],r.full_name=r.organization+"/_git/"+r.name):(r.owner=a[0],r.full_name=r.owner+"/_git/"+r.name)):a.length===4&&(r.organization=a[0],r.owner=a[1],r.name=a[3],r.full_name=r.organization+"/"+r.owner+"/_git/"+r.name),r.query&&r.query.path&&(r.filepath=r.query.path.replace(/^\/+/g,"")),r.query&&r.query.version&&(r.ref=r.query.version.replace(/^GB/,""));break}default:a=r.name.split("/");var n=a.length-1;if(a.length>=2){var c=a.indexOf("-",2),f=a.indexOf("blob",2),p=a.indexOf("tree",2),h=a.indexOf("commit",2),E=a.indexOf("src",2),C=a.indexOf("raw",2),S=a.indexOf("edit",2);n=c>0?c-1:f>0?f-1:p>0?p-1:h>0?h-1:E>0?E-1:C>0?C-1:S>0?S-1:n,r.owner=a.slice(0,n).join("/"),r.name=a[n],h&&(r.commit=a[n+2])}r.ref="",r.filepathtype="",r.filepath="";var x=a.length>n&&a[n+1]==="-"?n+1:n;a.length>x+2&&["raw","src","blob","tree","edit"].indexOf(a[x+1])>=0&&(r.filepathtype=a[x+1],r.ref=a[x+2],a.length>x+3&&(r.filepath=a.slice(x+3).join("/"))),r.organization=r.owner;break}r.full_name||(r.full_name=r.owner,r.name&&(r.full_name&&(r.full_name+="/"),r.full_name+=r.name)),r.owner.startsWith("scm/")&&(r.source="bitbucket-server",r.owner=r.owner.replace("scm/",""),r.organization=r.owner,r.full_name=r.owner+"/"+r.name);var I=/(projects|users)\/(.*?)\/repos\/(.*?)((\/.*$)|$)/,T=I.exec(r.pathname);return T!=null&&(r.source="bitbucket-server",T[1]==="users"?r.owner="~"+T[2]:r.owner=T[2],r.organization=r.owner,r.name=T[3],a=T[4].split("/"),a.length>1&&(["raw","browse"].indexOf(a[1])>=0?(r.filepathtype=a[1],a.length>2&&(r.filepath=a.slice(2).join("/"))):a[1]==="commits"&&a.length>2&&(r.commit=a[2])),r.full_name=r.owner+"/"+r.name,r.query.at?r.ref=r.query.at:r.ref=""),r}S5.stringify=function(e,t){t=t||(e.protocols&&e.protocols.length?e.protocols.join("+"):e.protocol);var r=e.port?":"+e.port:"",s=e.user||"git",a=e.git_suffix?".git":"";switch(t){case"ssh":return r?"ssh://"+s+"@"+e.resource+r+"/"+e.full_name+a:s+"@"+e.resource+":"+e.full_name+a;case"git+ssh":case"ssh+git":case"ftp":case"ftps":return t+"://"+s+"@"+e.resource+r+"/"+e.full_name+a;case"http":case"https":var n=e.token?Mot(e):e.user&&(e.protocols.includes("http")||e.protocols.includes("https"))?e.user+"@":"";return t+"://"+n+e.resource+r+"/"+Uot(e)+a;default:return e.href}};function Mot(e){switch(e.source){case"bitbucket.org":return"x-token-auth:"+e.token+"@";default:return e.token+"@"}}function Uot(e){switch(e.source){case"bitbucket-server":return"scm/"+e.full_name;default:return""+e.full_name}}xge.exports=S5});function nat(e,t){return t===1&&rat.has(e[0])}function nS(e){let t=Array.isArray(e)?e:Ou(e);return t.map((s,a)=>eat.test(s)?`[${s}]`:tat.test(s)&&!nat(t,a)?`.${s}`:`[${JSON.stringify(s)}]`).join("").replace(/^\./,"")}function iat(e,t){let r=[];if(t.methodName!==null&&r.push(pe.pretty(e,t.methodName,pe.Type.CODE)),t.file!==null){let s=[];s.push(pe.pretty(e,t.file,pe.Type.PATH)),t.line!==null&&(s.push(pe.pretty(e,t.line,pe.Type.NUMBER)),t.column!==null&&s.push(pe.pretty(e,t.column,pe.Type.NUMBER))),r.push(`(${s.join(pe.pretty(e,":","grey"))})`)}return r.join(" ")}function jT(e,{manifestUpdates:t,reportedErrors:r},{fix:s}={}){let a=new Map,n=new Map,c=[...r.keys()].map(f=>[f,new Map]);for(let[f,p]of[...c,...t]){let h=r.get(f)?.map(x=>({text:x,fixable:!1}))??[],E=!1,C=e.getWorkspaceByCwd(f),S=C.manifest.exportTo({});for(let[x,I]of p){if(I.size>1){let T=[...I].map(([O,U])=>{let V=pe.pretty(e.configuration,O,pe.Type.INSPECT),te=U.size>0?iat(e.configuration,U.values().next().value):null;return te!==null?` +${V} at ${te}`:` +${V}`}).join("");h.push({text:`Conflict detected in constraint targeting ${pe.pretty(e.configuration,x,pe.Type.CODE)}; conflicting values are:${T}`,fixable:!1})}else{let[[T]]=I,O=Pa(S,x);if(JSON.stringify(O)===JSON.stringify(T))continue;if(!s){let U=typeof O>"u"?`Missing field ${pe.pretty(e.configuration,x,pe.Type.CODE)}; expected ${pe.pretty(e.configuration,T,pe.Type.INSPECT)}`:typeof T>"u"?`Extraneous field ${pe.pretty(e.configuration,x,pe.Type.CODE)} currently set to ${pe.pretty(e.configuration,O,pe.Type.INSPECT)}`:`Invalid field ${pe.pretty(e.configuration,x,pe.Type.CODE)}; expected ${pe.pretty(e.configuration,T,pe.Type.INSPECT)}, found ${pe.pretty(e.configuration,O,pe.Type.INSPECT)}`;h.push({text:U,fixable:!0});continue}typeof T>"u"?f0(S,x):Yg(S,x,T),E=!0}E&&a.set(C,S)}h.length>0&&n.set(C,h)}return{changedWorkspaces:a,remainingErrors:n}}function Wge(e,{configuration:t}){let r={children:[]};for(let[s,a]of e){let n=[];for(let f of a){let p=f.text.split(/\n/);f.fixable&&(p[0]=`${pe.pretty(t,"\u2699","gray")} ${p[0]}`),n.push({value:pe.tuple(pe.Type.NO_HINT,p[0]),children:p.slice(1).map(h=>({value:pe.tuple(pe.Type.NO_HINT,h)}))})}let c={value:pe.tuple(pe.Type.LOCATOR,s.anchoredLocator),children:Ge.sortMap(n,f=>f.value[1])};r.children.push(c)}return r.children=Ge.sortMap(r.children,s=>s.value[1]),r}var OC,eat,tat,rat,iS=Xe(()=>{qe();zl();OC=class{constructor(t){this.indexedFields=t;this.items=[];this.indexes={};this.clear()}clear(){this.items=[];for(let t of this.indexedFields)this.indexes[t]=new Map}insert(t){this.items.push(t);for(let r of this.indexedFields){let s=Object.hasOwn(t,r)?t[r]:void 0;if(typeof s>"u")continue;Ge.getArrayWithDefault(this.indexes[r],s).push(t)}return t}find(t){if(typeof t>"u")return this.items;let r=Object.entries(t);if(r.length===0)return this.items;let s=[],a;for(let[c,f]of r){let p=c,h=Object.hasOwn(this.indexes,p)?this.indexes[p]:void 0;if(typeof h>"u"){s.push([p,f]);continue}let E=new Set(h.get(f)??[]);if(E.size===0)return[];if(typeof a>"u")a=E;else for(let C of a)E.has(C)||a.delete(C);if(a.size===0)break}let n=[...a??[]];return s.length>0&&(n=n.filter(c=>{for(let[f,p]of s)if(!(typeof p<"u"?Object.hasOwn(c,f)&&c[f]===p:Object.hasOwn(c,f)===!1))return!1;return!0})),n}},eat=/^[0-9]+$/,tat=/^[a-zA-Z0-9_]+$/,rat=new Set(["scripts",..._t.allDependencies])});var Yge=G((q9t,G5)=>{var sat;(function(e){var t=function(){return{"append/2":[new e.type.Rule(new e.type.Term("append",[new e.type.Var("X"),new e.type.Var("L")]),new e.type.Term("foldl",[new e.type.Term("append",[]),new e.type.Var("X"),new e.type.Term("[]",[]),new e.type.Var("L")]))],"append/3":[new e.type.Rule(new e.type.Term("append",[new e.type.Term("[]",[]),new e.type.Var("X"),new e.type.Var("X")]),null),new e.type.Rule(new e.type.Term("append",[new e.type.Term(".",[new e.type.Var("H"),new e.type.Var("T")]),new e.type.Var("X"),new e.type.Term(".",[new e.type.Var("H"),new e.type.Var("S")])]),new e.type.Term("append",[new e.type.Var("T"),new e.type.Var("X"),new e.type.Var("S")]))],"member/2":[new e.type.Rule(new e.type.Term("member",[new e.type.Var("X"),new e.type.Term(".",[new e.type.Var("X"),new e.type.Var("_")])]),null),new e.type.Rule(new e.type.Term("member",[new e.type.Var("X"),new e.type.Term(".",[new e.type.Var("_"),new e.type.Var("Xs")])]),new e.type.Term("member",[new e.type.Var("X"),new e.type.Var("Xs")]))],"permutation/2":[new e.type.Rule(new e.type.Term("permutation",[new e.type.Term("[]",[]),new e.type.Term("[]",[])]),null),new e.type.Rule(new e.type.Term("permutation",[new e.type.Term(".",[new e.type.Var("H"),new e.type.Var("T")]),new e.type.Var("S")]),new e.type.Term(",",[new e.type.Term("permutation",[new e.type.Var("T"),new e.type.Var("P")]),new e.type.Term(",",[new e.type.Term("append",[new e.type.Var("X"),new e.type.Var("Y"),new e.type.Var("P")]),new e.type.Term("append",[new e.type.Var("X"),new e.type.Term(".",[new e.type.Var("H"),new e.type.Var("Y")]),new e.type.Var("S")])])]))],"maplist/2":[new e.type.Rule(new e.type.Term("maplist",[new e.type.Var("_"),new e.type.Term("[]",[])]),null),new e.type.Rule(new e.type.Term("maplist",[new e.type.Var("P"),new e.type.Term(".",[new e.type.Var("X"),new e.type.Var("Xs")])]),new e.type.Term(",",[new e.type.Term("call",[new e.type.Var("P"),new e.type.Var("X")]),new e.type.Term("maplist",[new e.type.Var("P"),new e.type.Var("Xs")])]))],"maplist/3":[new e.type.Rule(new e.type.Term("maplist",[new e.type.Var("_"),new e.type.Term("[]",[]),new e.type.Term("[]",[])]),null),new e.type.Rule(new e.type.Term("maplist",[new e.type.Var("P"),new e.type.Term(".",[new e.type.Var("A"),new e.type.Var("As")]),new e.type.Term(".",[new e.type.Var("B"),new e.type.Var("Bs")])]),new e.type.Term(",",[new e.type.Term("call",[new e.type.Var("P"),new e.type.Var("A"),new e.type.Var("B")]),new e.type.Term("maplist",[new e.type.Var("P"),new e.type.Var("As"),new e.type.Var("Bs")])]))],"maplist/4":[new e.type.Rule(new e.type.Term("maplist",[new e.type.Var("_"),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[])]),null),new e.type.Rule(new e.type.Term("maplist",[new e.type.Var("P"),new e.type.Term(".",[new e.type.Var("A"),new e.type.Var("As")]),new e.type.Term(".",[new e.type.Var("B"),new e.type.Var("Bs")]),new e.type.Term(".",[new e.type.Var("C"),new e.type.Var("Cs")])]),new e.type.Term(",",[new e.type.Term("call",[new e.type.Var("P"),new e.type.Var("A"),new e.type.Var("B"),new e.type.Var("C")]),new e.type.Term("maplist",[new e.type.Var("P"),new e.type.Var("As"),new e.type.Var("Bs"),new e.type.Var("Cs")])]))],"maplist/5":[new e.type.Rule(new e.type.Term("maplist",[new e.type.Var("_"),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[])]),null),new e.type.Rule(new e.type.Term("maplist",[new e.type.Var("P"),new e.type.Term(".",[new e.type.Var("A"),new e.type.Var("As")]),new e.type.Term(".",[new e.type.Var("B"),new e.type.Var("Bs")]),new e.type.Term(".",[new e.type.Var("C"),new e.type.Var("Cs")]),new e.type.Term(".",[new e.type.Var("D"),new e.type.Var("Ds")])]),new e.type.Term(",",[new e.type.Term("call",[new e.type.Var("P"),new e.type.Var("A"),new e.type.Var("B"),new e.type.Var("C"),new e.type.Var("D")]),new e.type.Term("maplist",[new e.type.Var("P"),new e.type.Var("As"),new e.type.Var("Bs"),new e.type.Var("Cs"),new e.type.Var("Ds")])]))],"maplist/6":[new e.type.Rule(new e.type.Term("maplist",[new e.type.Var("_"),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[])]),null),new e.type.Rule(new e.type.Term("maplist",[new e.type.Var("P"),new e.type.Term(".",[new e.type.Var("A"),new e.type.Var("As")]),new e.type.Term(".",[new e.type.Var("B"),new e.type.Var("Bs")]),new e.type.Term(".",[new e.type.Var("C"),new e.type.Var("Cs")]),new e.type.Term(".",[new e.type.Var("D"),new e.type.Var("Ds")]),new e.type.Term(".",[new e.type.Var("E"),new e.type.Var("Es")])]),new e.type.Term(",",[new e.type.Term("call",[new e.type.Var("P"),new e.type.Var("A"),new e.type.Var("B"),new e.type.Var("C"),new e.type.Var("D"),new e.type.Var("E")]),new e.type.Term("maplist",[new e.type.Var("P"),new e.type.Var("As"),new e.type.Var("Bs"),new e.type.Var("Cs"),new e.type.Var("Ds"),new e.type.Var("Es")])]))],"maplist/7":[new e.type.Rule(new e.type.Term("maplist",[new e.type.Var("_"),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[])]),null),new e.type.Rule(new e.type.Term("maplist",[new e.type.Var("P"),new e.type.Term(".",[new e.type.Var("A"),new e.type.Var("As")]),new e.type.Term(".",[new e.type.Var("B"),new e.type.Var("Bs")]),new e.type.Term(".",[new e.type.Var("C"),new e.type.Var("Cs")]),new e.type.Term(".",[new e.type.Var("D"),new e.type.Var("Ds")]),new e.type.Term(".",[new e.type.Var("E"),new e.type.Var("Es")]),new e.type.Term(".",[new e.type.Var("F"),new e.type.Var("Fs")])]),new e.type.Term(",",[new e.type.Term("call",[new e.type.Var("P"),new e.type.Var("A"),new e.type.Var("B"),new e.type.Var("C"),new e.type.Var("D"),new e.type.Var("E"),new e.type.Var("F")]),new e.type.Term("maplist",[new e.type.Var("P"),new e.type.Var("As"),new e.type.Var("Bs"),new e.type.Var("Cs"),new e.type.Var("Ds"),new e.type.Var("Es"),new e.type.Var("Fs")])]))],"maplist/8":[new e.type.Rule(new e.type.Term("maplist",[new e.type.Var("_"),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[]),new e.type.Term("[]",[])]),null),new e.type.Rule(new e.type.Term("maplist",[new e.type.Var("P"),new e.type.Term(".",[new e.type.Var("A"),new e.type.Var("As")]),new e.type.Term(".",[new e.type.Var("B"),new e.type.Var("Bs")]),new e.type.Term(".",[new e.type.Var("C"),new e.type.Var("Cs")]),new e.type.Term(".",[new e.type.Var("D"),new e.type.Var("Ds")]),new e.type.Term(".",[new e.type.Var("E"),new e.type.Var("Es")]),new e.type.Term(".",[new e.type.Var("F"),new e.type.Var("Fs")]),new e.type.Term(".",[new e.type.Var("G"),new e.type.Var("Gs")])]),new e.type.Term(",",[new e.type.Term("call",[new e.type.Var("P"),new e.type.Var("A"),new e.type.Var("B"),new e.type.Var("C"),new e.type.Var("D"),new e.type.Var("E"),new e.type.Var("F"),new e.type.Var("G")]),new e.type.Term("maplist",[new e.type.Var("P"),new e.type.Var("As"),new e.type.Var("Bs"),new e.type.Var("Cs"),new e.type.Var("Ds"),new e.type.Var("Es"),new e.type.Var("Fs"),new e.type.Var("Gs")])]))],"include/3":[new e.type.Rule(new e.type.Term("include",[new e.type.Var("_"),new e.type.Term("[]",[]),new e.type.Term("[]",[])]),null),new e.type.Rule(new e.type.Term("include",[new e.type.Var("P"),new e.type.Term(".",[new e.type.Var("H"),new e.type.Var("T")]),new e.type.Var("L")]),new e.type.Term(",",[new e.type.Term("=..",[new e.type.Var("P"),new e.type.Var("A")]),new e.type.Term(",",[new e.type.Term("append",[new e.type.Var("A"),new e.type.Term(".",[new e.type.Var("H"),new e.type.Term("[]",[])]),new e.type.Var("B")]),new e.type.Term(",",[new e.type.Term("=..",[new e.type.Var("F"),new e.type.Var("B")]),new e.type.Term(",",[new e.type.Term(";",[new e.type.Term(",",[new e.type.Term("call",[new e.type.Var("F")]),new e.type.Term(",",[new e.type.Term("=",[new e.type.Var("L"),new e.type.Term(".",[new e.type.Var("H"),new e.type.Var("S")])]),new e.type.Term("!",[])])]),new e.type.Term("=",[new e.type.Var("L"),new e.type.Var("S")])]),new e.type.Term("include",[new e.type.Var("P"),new e.type.Var("T"),new e.type.Var("S")])])])])]))],"exclude/3":[new e.type.Rule(new e.type.Term("exclude",[new e.type.Var("_"),new e.type.Term("[]",[]),new e.type.Term("[]",[])]),null),new e.type.Rule(new e.type.Term("exclude",[new e.type.Var("P"),new e.type.Term(".",[new e.type.Var("H"),new e.type.Var("T")]),new e.type.Var("S")]),new e.type.Term(",",[new e.type.Term("exclude",[new e.type.Var("P"),new e.type.Var("T"),new e.type.Var("E")]),new e.type.Term(",",[new e.type.Term("=..",[new e.type.Var("P"),new e.type.Var("L")]),new e.type.Term(",",[new e.type.Term("append",[new e.type.Var("L"),new e.type.Term(".",[new e.type.Var("H"),new e.type.Term("[]",[])]),new e.type.Var("Q")]),new e.type.Term(",",[new e.type.Term("=..",[new e.type.Var("R"),new e.type.Var("Q")]),new e.type.Term(";",[new e.type.Term(",",[new e.type.Term("call",[new e.type.Var("R")]),new e.type.Term(",",[new e.type.Term("!",[]),new e.type.Term("=",[new e.type.Var("S"),new e.type.Var("E")])])]),new e.type.Term("=",[new e.type.Var("S"),new e.type.Term(".",[new e.type.Var("H"),new e.type.Var("E")])])])])])])]))],"foldl/4":[new e.type.Rule(new e.type.Term("foldl",[new e.type.Var("_"),new e.type.Term("[]",[]),new e.type.Var("I"),new e.type.Var("I")]),null),new e.type.Rule(new e.type.Term("foldl",[new e.type.Var("P"),new e.type.Term(".",[new e.type.Var("H"),new e.type.Var("T")]),new e.type.Var("I"),new e.type.Var("R")]),new e.type.Term(",",[new e.type.Term("=..",[new e.type.Var("P"),new e.type.Var("L")]),new e.type.Term(",",[new e.type.Term("append",[new e.type.Var("L"),new e.type.Term(".",[new e.type.Var("I"),new e.type.Term(".",[new e.type.Var("H"),new e.type.Term(".",[new e.type.Var("X"),new e.type.Term("[]",[])])])]),new e.type.Var("L2")]),new e.type.Term(",",[new e.type.Term("=..",[new e.type.Var("P2"),new e.type.Var("L2")]),new e.type.Term(",",[new e.type.Term("call",[new e.type.Var("P2")]),new e.type.Term("foldl",[new e.type.Var("P"),new e.type.Var("T"),new e.type.Var("X"),new e.type.Var("R")])])])])]))],"select/3":[new e.type.Rule(new e.type.Term("select",[new e.type.Var("E"),new e.type.Term(".",[new e.type.Var("E"),new e.type.Var("Xs")]),new e.type.Var("Xs")]),null),new e.type.Rule(new e.type.Term("select",[new e.type.Var("E"),new e.type.Term(".",[new e.type.Var("X"),new e.type.Var("Xs")]),new e.type.Term(".",[new e.type.Var("X"),new e.type.Var("Ys")])]),new e.type.Term("select",[new e.type.Var("E"),new e.type.Var("Xs"),new e.type.Var("Ys")]))],"sum_list/2":[new e.type.Rule(new e.type.Term("sum_list",[new e.type.Term("[]",[]),new e.type.Num(0,!1)]),null),new e.type.Rule(new e.type.Term("sum_list",[new e.type.Term(".",[new e.type.Var("X"),new e.type.Var("Xs")]),new e.type.Var("S")]),new e.type.Term(",",[new e.type.Term("sum_list",[new e.type.Var("Xs"),new e.type.Var("Y")]),new e.type.Term("is",[new e.type.Var("S"),new e.type.Term("+",[new e.type.Var("X"),new e.type.Var("Y")])])]))],"max_list/2":[new e.type.Rule(new e.type.Term("max_list",[new e.type.Term(".",[new e.type.Var("X"),new e.type.Term("[]",[])]),new e.type.Var("X")]),null),new e.type.Rule(new e.type.Term("max_list",[new e.type.Term(".",[new e.type.Var("X"),new e.type.Var("Xs")]),new e.type.Var("S")]),new e.type.Term(",",[new e.type.Term("max_list",[new e.type.Var("Xs"),new e.type.Var("Y")]),new e.type.Term(";",[new e.type.Term(",",[new e.type.Term(">=",[new e.type.Var("X"),new e.type.Var("Y")]),new e.type.Term(",",[new e.type.Term("=",[new e.type.Var("S"),new e.type.Var("X")]),new e.type.Term("!",[])])]),new e.type.Term("=",[new e.type.Var("S"),new e.type.Var("Y")])])]))],"min_list/2":[new e.type.Rule(new e.type.Term("min_list",[new e.type.Term(".",[new e.type.Var("X"),new e.type.Term("[]",[])]),new e.type.Var("X")]),null),new e.type.Rule(new e.type.Term("min_list",[new e.type.Term(".",[new e.type.Var("X"),new e.type.Var("Xs")]),new e.type.Var("S")]),new e.type.Term(",",[new e.type.Term("min_list",[new e.type.Var("Xs"),new e.type.Var("Y")]),new e.type.Term(";",[new e.type.Term(",",[new e.type.Term("=<",[new e.type.Var("X"),new e.type.Var("Y")]),new e.type.Term(",",[new e.type.Term("=",[new e.type.Var("S"),new e.type.Var("X")]),new e.type.Term("!",[])])]),new e.type.Term("=",[new e.type.Var("S"),new e.type.Var("Y")])])]))],"prod_list/2":[new e.type.Rule(new e.type.Term("prod_list",[new e.type.Term("[]",[]),new e.type.Num(1,!1)]),null),new e.type.Rule(new e.type.Term("prod_list",[new e.type.Term(".",[new e.type.Var("X"),new e.type.Var("Xs")]),new e.type.Var("S")]),new e.type.Term(",",[new e.type.Term("prod_list",[new e.type.Var("Xs"),new e.type.Var("Y")]),new e.type.Term("is",[new e.type.Var("S"),new e.type.Term("*",[new e.type.Var("X"),new e.type.Var("Y")])])]))],"last/2":[new e.type.Rule(new e.type.Term("last",[new e.type.Term(".",[new e.type.Var("X"),new e.type.Term("[]",[])]),new e.type.Var("X")]),null),new e.type.Rule(new e.type.Term("last",[new e.type.Term(".",[new e.type.Var("_"),new e.type.Var("Xs")]),new e.type.Var("X")]),new e.type.Term("last",[new e.type.Var("Xs"),new e.type.Var("X")]))],"prefix/2":[new e.type.Rule(new e.type.Term("prefix",[new e.type.Var("Part"),new e.type.Var("Whole")]),new e.type.Term("append",[new e.type.Var("Part"),new e.type.Var("_"),new e.type.Var("Whole")]))],"nth0/3":[new e.type.Rule(new e.type.Term("nth0",[new e.type.Var("X"),new e.type.Var("Y"),new e.type.Var("Z")]),new e.type.Term(";",[new e.type.Term("->",[new e.type.Term("var",[new e.type.Var("X")]),new e.type.Term("nth",[new e.type.Num(0,!1),new e.type.Var("X"),new e.type.Var("Y"),new e.type.Var("Z"),new e.type.Var("_")])]),new e.type.Term(",",[new e.type.Term(">=",[new e.type.Var("X"),new e.type.Num(0,!1)]),new e.type.Term(",",[new e.type.Term("nth",[new e.type.Num(0,!1),new e.type.Var("X"),new e.type.Var("Y"),new e.type.Var("Z"),new e.type.Var("_")]),new e.type.Term("!",[])])])]))],"nth1/3":[new e.type.Rule(new e.type.Term("nth1",[new e.type.Var("X"),new e.type.Var("Y"),new e.type.Var("Z")]),new e.type.Term(";",[new e.type.Term("->",[new e.type.Term("var",[new e.type.Var("X")]),new e.type.Term("nth",[new e.type.Num(1,!1),new e.type.Var("X"),new e.type.Var("Y"),new e.type.Var("Z"),new e.type.Var("_")])]),new e.type.Term(",",[new e.type.Term(">",[new e.type.Var("X"),new e.type.Num(0,!1)]),new e.type.Term(",",[new e.type.Term("nth",[new e.type.Num(1,!1),new e.type.Var("X"),new e.type.Var("Y"),new e.type.Var("Z"),new e.type.Var("_")]),new e.type.Term("!",[])])])]))],"nth0/4":[new e.type.Rule(new e.type.Term("nth0",[new e.type.Var("X"),new e.type.Var("Y"),new e.type.Var("Z"),new e.type.Var("W")]),new e.type.Term(";",[new e.type.Term("->",[new e.type.Term("var",[new e.type.Var("X")]),new e.type.Term("nth",[new e.type.Num(0,!1),new e.type.Var("X"),new e.type.Var("Y"),new e.type.Var("Z"),new e.type.Var("W")])]),new e.type.Term(",",[new e.type.Term(">=",[new e.type.Var("X"),new e.type.Num(0,!1)]),new e.type.Term(",",[new e.type.Term("nth",[new e.type.Num(0,!1),new e.type.Var("X"),new e.type.Var("Y"),new e.type.Var("Z"),new e.type.Var("W")]),new e.type.Term("!",[])])])]))],"nth1/4":[new e.type.Rule(new e.type.Term("nth1",[new e.type.Var("X"),new e.type.Var("Y"),new e.type.Var("Z"),new e.type.Var("W")]),new e.type.Term(";",[new e.type.Term("->",[new e.type.Term("var",[new e.type.Var("X")]),new e.type.Term("nth",[new e.type.Num(1,!1),new e.type.Var("X"),new e.type.Var("Y"),new e.type.Var("Z"),new e.type.Var("W")])]),new e.type.Term(",",[new e.type.Term(">",[new e.type.Var("X"),new e.type.Num(0,!1)]),new e.type.Term(",",[new e.type.Term("nth",[new e.type.Num(1,!1),new e.type.Var("X"),new e.type.Var("Y"),new e.type.Var("Z"),new e.type.Var("W")]),new e.type.Term("!",[])])])]))],"nth/5":[new e.type.Rule(new e.type.Term("nth",[new e.type.Var("N"),new e.type.Var("N"),new e.type.Term(".",[new e.type.Var("X"),new e.type.Var("Xs")]),new e.type.Var("X"),new e.type.Var("Xs")]),null),new e.type.Rule(new e.type.Term("nth",[new e.type.Var("N"),new e.type.Var("O"),new e.type.Term(".",[new e.type.Var("X"),new e.type.Var("Xs")]),new e.type.Var("Y"),new e.type.Term(".",[new e.type.Var("X"),new e.type.Var("Ys")])]),new e.type.Term(",",[new e.type.Term("is",[new e.type.Var("M"),new e.type.Term("+",[new e.type.Var("N"),new e.type.Num(1,!1)])]),new e.type.Term("nth",[new e.type.Var("M"),new e.type.Var("O"),new e.type.Var("Xs"),new e.type.Var("Y"),new e.type.Var("Ys")])]))],"length/2":function(s,a,n){var c=n.args[0],f=n.args[1];if(!e.type.is_variable(f)&&!e.type.is_integer(f))s.throw_error(e.error.type("integer",f,n.indicator));else if(e.type.is_integer(f)&&f.value<0)s.throw_error(e.error.domain("not_less_than_zero",f,n.indicator));else{var p=new e.type.Term("length",[c,new e.type.Num(0,!1),f]);e.type.is_integer(f)&&(p=new e.type.Term(",",[p,new e.type.Term("!",[])])),s.prepend([new e.type.State(a.goal.replace(p),a.substitution,a)])}},"length/3":[new e.type.Rule(new e.type.Term("length",[new e.type.Term("[]",[]),new e.type.Var("N"),new e.type.Var("N")]),null),new e.type.Rule(new e.type.Term("length",[new e.type.Term(".",[new e.type.Var("_"),new e.type.Var("X")]),new e.type.Var("A"),new e.type.Var("N")]),new e.type.Term(",",[new e.type.Term("succ",[new e.type.Var("A"),new e.type.Var("B")]),new e.type.Term("length",[new e.type.Var("X"),new e.type.Var("B"),new e.type.Var("N")])]))],"replicate/3":function(s,a,n){var c=n.args[0],f=n.args[1],p=n.args[2];if(e.type.is_variable(f))s.throw_error(e.error.instantiation(n.indicator));else if(!e.type.is_integer(f))s.throw_error(e.error.type("integer",f,n.indicator));else if(f.value<0)s.throw_error(e.error.domain("not_less_than_zero",f,n.indicator));else if(!e.type.is_variable(p)&&!e.type.is_list(p))s.throw_error(e.error.type("list",p,n.indicator));else{for(var h=new e.type.Term("[]"),E=0;E0;C--)E[C].equals(E[C-1])&&E.splice(C,1);for(var S=new e.type.Term("[]"),C=E.length-1;C>=0;C--)S=new e.type.Term(".",[E[C],S]);s.prepend([new e.type.State(a.goal.replace(new e.type.Term("=",[S,f])),a.substitution,a)])}}},"msort/2":function(s,a,n){var c=n.args[0],f=n.args[1];if(e.type.is_variable(c))s.throw_error(e.error.instantiation(n.indicator));else if(!e.type.is_variable(f)&&!e.type.is_fully_list(f))s.throw_error(e.error.type("list",f,n.indicator));else{for(var p=[],h=c;h.indicator==="./2";)p.push(h.args[0]),h=h.args[1];if(e.type.is_variable(h))s.throw_error(e.error.instantiation(n.indicator));else if(!e.type.is_empty_list(h))s.throw_error(e.error.type("list",c,n.indicator));else{for(var E=p.sort(e.compare),C=new e.type.Term("[]"),S=E.length-1;S>=0;S--)C=new e.type.Term(".",[E[S],C]);s.prepend([new e.type.State(a.goal.replace(new e.type.Term("=",[C,f])),a.substitution,a)])}}},"keysort/2":function(s,a,n){var c=n.args[0],f=n.args[1];if(e.type.is_variable(c))s.throw_error(e.error.instantiation(n.indicator));else if(!e.type.is_variable(f)&&!e.type.is_fully_list(f))s.throw_error(e.error.type("list",f,n.indicator));else{for(var p=[],h,E=c;E.indicator==="./2";){if(h=E.args[0],e.type.is_variable(h)){s.throw_error(e.error.instantiation(n.indicator));return}else if(!e.type.is_term(h)||h.indicator!=="-/2"){s.throw_error(e.error.type("pair",h,n.indicator));return}h.args[0].pair=h.args[1],p.push(h.args[0]),E=E.args[1]}if(e.type.is_variable(E))s.throw_error(e.error.instantiation(n.indicator));else if(!e.type.is_empty_list(E))s.throw_error(e.error.type("list",c,n.indicator));else{for(var C=p.sort(e.compare),S=new e.type.Term("[]"),x=C.length-1;x>=0;x--)S=new e.type.Term(".",[new e.type.Term("-",[C[x],C[x].pair]),S]),delete C[x].pair;s.prepend([new e.type.State(a.goal.replace(new e.type.Term("=",[S,f])),a.substitution,a)])}}},"take/3":function(s,a,n){var c=n.args[0],f=n.args[1],p=n.args[2];if(e.type.is_variable(f)||e.type.is_variable(c))s.throw_error(e.error.instantiation(n.indicator));else if(!e.type.is_list(f))s.throw_error(e.error.type("list",f,n.indicator));else if(!e.type.is_integer(c))s.throw_error(e.error.type("integer",c,n.indicator));else if(!e.type.is_variable(p)&&!e.type.is_list(p))s.throw_error(e.error.type("list",p,n.indicator));else{for(var h=c.value,E=[],C=f;h>0&&C.indicator==="./2";)E.push(C.args[0]),C=C.args[1],h--;if(h===0){for(var S=new e.type.Term("[]"),h=E.length-1;h>=0;h--)S=new e.type.Term(".",[E[h],S]);s.prepend([new e.type.State(a.goal.replace(new e.type.Term("=",[S,p])),a.substitution,a)])}}},"drop/3":function(s,a,n){var c=n.args[0],f=n.args[1],p=n.args[2];if(e.type.is_variable(f)||e.type.is_variable(c))s.throw_error(e.error.instantiation(n.indicator));else if(!e.type.is_list(f))s.throw_error(e.error.type("list",f,n.indicator));else if(!e.type.is_integer(c))s.throw_error(e.error.type("integer",c,n.indicator));else if(!e.type.is_variable(p)&&!e.type.is_list(p))s.throw_error(e.error.type("list",p,n.indicator));else{for(var h=c.value,E=[],C=f;h>0&&C.indicator==="./2";)E.push(C.args[0]),C=C.args[1],h--;h===0&&s.prepend([new e.type.State(a.goal.replace(new e.type.Term("=",[C,p])),a.substitution,a)])}},"reverse/2":function(s,a,n){var c=n.args[0],f=n.args[1],p=e.type.is_instantiated_list(c),h=e.type.is_instantiated_list(f);if(e.type.is_variable(c)&&e.type.is_variable(f))s.throw_error(e.error.instantiation(n.indicator));else if(!e.type.is_variable(c)&&!e.type.is_fully_list(c))s.throw_error(e.error.type("list",c,n.indicator));else if(!e.type.is_variable(f)&&!e.type.is_fully_list(f))s.throw_error(e.error.type("list",f,n.indicator));else if(!p&&!h)s.throw_error(e.error.instantiation(n.indicator));else{for(var E=p?c:f,C=new e.type.Term("[]",[]);E.indicator==="./2";)C=new e.type.Term(".",[E.args[0],C]),E=E.args[1];s.prepend([new e.type.State(a.goal.replace(new e.type.Term("=",[C,p?f:c])),a.substitution,a)])}},"list_to_set/2":function(s,a,n){var c=n.args[0],f=n.args[1];if(e.type.is_variable(c))s.throw_error(e.error.instantiation(n.indicator));else{for(var p=c,h=[];p.indicator==="./2";)h.push(p.args[0]),p=p.args[1];if(e.type.is_variable(p))s.throw_error(e.error.instantiation(n.indicator));else if(!e.type.is_term(p)||p.indicator!=="[]/0")s.throw_error(e.error.type("list",c,n.indicator));else{for(var E=[],C=new e.type.Term("[]",[]),S,x=0;x=0;x--)C=new e.type.Term(".",[E[x],C]);s.prepend([new e.type.State(a.goal.replace(new e.type.Term("=",[f,C])),a.substitution,a)])}}}}},r=["append/2","append/3","member/2","permutation/2","maplist/2","maplist/3","maplist/4","maplist/5","maplist/6","maplist/7","maplist/8","include/3","exclude/3","foldl/4","sum_list/2","max_list/2","min_list/2","prod_list/2","last/2","prefix/2","nth0/3","nth1/3","nth0/4","nth1/4","length/2","replicate/3","select/3","sort/2","msort/2","keysort/2","take/3","drop/3","reverse/2","list_to_set/2"];typeof G5<"u"?G5.exports=function(s){e=s,new e.type.Module("lists",t(),r)}:new e.type.Module("lists",t(),r)})(sat)});var ame=G($r=>{"use strict";var km=process.platform==="win32",q5="aes-256-cbc",oat="sha256",Kge="The current environment doesn't support interactive reading from TTY.",ai=Ie("fs"),Vge=process.binding("tty_wrap").TTY,Y5=Ie("child_process"),W0=Ie("path"),V5={prompt:"> ",hideEchoBack:!1,mask:"*",limit:[],limitMessage:"Input another, please.$<( [)limit(])>",defaultInput:"",trueValue:[],falseValue:[],caseSensitive:!1,keepWhitespace:!1,encoding:"utf8",bufferSize:1024,print:void 0,history:!0,cd:!1,phContent:void 0,preCheck:void 0},Xp="none",ef,MC,Jge=!1,q0,qT,W5,aat=0,Z5="",xm=[],WT,zge=!1,J5=!1,sS=!1;function Xge(e){function t(r){return r.replace(/[^\w\u0080-\uFFFF]/g,function(s){return"#"+s.charCodeAt(0)+";"})}return qT.concat(function(r){var s=[];return Object.keys(r).forEach(function(a){r[a]==="boolean"?e[a]&&s.push("--"+a):r[a]==="string"&&e[a]&&s.push("--"+a,t(e[a]))}),s}({display:"string",displayOnly:"boolean",keyIn:"boolean",hideEchoBack:"boolean",mask:"string",limit:"string",caseSensitive:"boolean"}))}function lat(e,t){function r(U){var V,te="",ie;for(W5=W5||Ie("os").tmpdir();;){V=W0.join(W5,U+te);try{ie=ai.openSync(V,"wx")}catch(ue){if(ue.code==="EEXIST"){te++;continue}else throw ue}ai.closeSync(ie);break}return V}var s,a,n,c={},f,p,h=r("readline-sync.stdout"),E=r("readline-sync.stderr"),C=r("readline-sync.exit"),S=r("readline-sync.done"),x=Ie("crypto"),I,T,O;I=x.createHash(oat),I.update(""+process.pid+aat+++Math.random()),O=I.digest("hex"),T=x.createDecipher(q5,O),s=Xge(e),km?(a=process.env.ComSpec||"cmd.exe",process.env.Q='"',n=["/V:ON","/S","/C","(%Q%"+a+"%Q% /V:ON /S /C %Q%%Q%"+q0+"%Q%"+s.map(function(U){return" %Q%"+U+"%Q%"}).join("")+" & (echo !ERRORLEVEL!)>%Q%"+C+"%Q%%Q%) 2>%Q%"+E+"%Q% |%Q%"+process.execPath+"%Q% %Q%"+__dirname+"\\encrypt.js%Q% %Q%"+q5+"%Q% %Q%"+O+"%Q% >%Q%"+h+"%Q% & (echo 1)>%Q%"+S+"%Q%"]):(a="/bin/sh",n=["-c",'("'+q0+'"'+s.map(function(U){return" '"+U.replace(/'/g,"'\\''")+"'"}).join("")+'; echo $?>"'+C+'") 2>"'+E+'" |"'+process.execPath+'" "'+__dirname+'/encrypt.js" "'+q5+'" "'+O+'" >"'+h+'"; echo 1 >"'+S+'"']),sS&&sS("_execFileSync",s);try{Y5.spawn(a,n,t)}catch(U){c.error=new Error(U.message),c.error.method="_execFileSync - spawn",c.error.program=a,c.error.args=n}for(;ai.readFileSync(S,{encoding:e.encoding}).trim()!=="1";);return(f=ai.readFileSync(C,{encoding:e.encoding}).trim())==="0"?c.input=T.update(ai.readFileSync(h,{encoding:"binary"}),"hex",e.encoding)+T.final(e.encoding):(p=ai.readFileSync(E,{encoding:e.encoding}).trim(),c.error=new Error(Kge+(p?` +`+p:"")),c.error.method="_execFileSync",c.error.program=a,c.error.args=n,c.error.extMessage=p,c.error.exitCode=+f),ai.unlinkSync(h),ai.unlinkSync(E),ai.unlinkSync(C),ai.unlinkSync(S),c}function cat(e){var t,r={},s,a={env:process.env,encoding:e.encoding};if(q0||(km?process.env.PSModulePath?(q0="powershell.exe",qT=["-ExecutionPolicy","Bypass","-File",__dirname+"\\read.ps1"]):(q0="cscript.exe",qT=["//nologo",__dirname+"\\read.cs.js"]):(q0="/bin/sh",qT=[__dirname+"/read.sh"])),km&&!process.env.PSModulePath&&(a.stdio=[process.stdin]),Y5.execFileSync){t=Xge(e),sS&&sS("execFileSync",t);try{r.input=Y5.execFileSync(q0,t,a)}catch(n){s=n.stderr?(n.stderr+"").trim():"",r.error=new Error(Kge+(s?` +`+s:"")),r.error.method="execFileSync",r.error.program=q0,r.error.args=t,r.error.extMessage=s,r.error.exitCode=n.status,r.error.code=n.code,r.error.signal=n.signal}}else r=lat(e,a);return r.error||(r.input=r.input.replace(/^\s*'|'\s*$/g,""),e.display=""),r}function K5(e){var t="",r=e.display,s=!e.display&&e.keyIn&&e.hideEchoBack&&!e.mask;function a(){var n=cat(e);if(n.error)throw n.error;return n.input}return J5&&J5(e),function(){var n,c,f;function p(){return n||(n=process.binding("fs"),c=process.binding("constants")),n}if(typeof Xp=="string")if(Xp=null,km){if(f=function(h){var E=h.replace(/^\D+/,"").split("."),C=0;return(E[0]=+E[0])&&(C+=E[0]*1e4),(E[1]=+E[1])&&(C+=E[1]*100),(E[2]=+E[2])&&(C+=E[2]),C}(process.version),!(f>=20302&&f<40204||f>=5e4&&f<50100||f>=50600&&f<60200)&&process.stdin.isTTY)process.stdin.pause(),Xp=process.stdin.fd,MC=process.stdin._handle;else try{Xp=p().open("CONIN$",c.O_RDWR,parseInt("0666",8)),MC=new Vge(Xp,!0)}catch{}if(process.stdout.isTTY)ef=process.stdout.fd;else{try{ef=ai.openSync("\\\\.\\CON","w")}catch{}if(typeof ef!="number")try{ef=p().open("CONOUT$",c.O_RDWR,parseInt("0666",8))}catch{}}}else{if(process.stdin.isTTY){process.stdin.pause();try{Xp=ai.openSync("/dev/tty","r"),MC=process.stdin._handle}catch{}}else try{Xp=ai.openSync("/dev/tty","r"),MC=new Vge(Xp,!1)}catch{}if(process.stdout.isTTY)ef=process.stdout.fd;else try{ef=ai.openSync("/dev/tty","w")}catch{}}}(),function(){var n,c,f=!e.hideEchoBack&&!e.keyIn,p,h,E,C,S;WT="";function x(I){return I===Jge?!0:MC.setRawMode(I)!==0?!1:(Jge=I,!0)}if(zge||!MC||typeof ef!="number"&&(e.display||!f)){t=a();return}if(e.display&&(ai.writeSync(ef,e.display),e.display=""),!e.displayOnly){if(!x(!f)){t=a();return}for(h=e.keyIn?1:e.bufferSize,p=Buffer.allocUnsafe&&Buffer.alloc?Buffer.alloc(h):new Buffer(h),e.keyIn&&e.limit&&(c=new RegExp("[^"+e.limit+"]","g"+(e.caseSensitive?"":"i")));;){E=0;try{E=ai.readSync(Xp,p,0,h)}catch(I){if(I.code!=="EOF"){x(!1),t+=a();return}}if(E>0?(C=p.toString(e.encoding,0,E),WT+=C):(C=` +`,WT+="\0"),C&&typeof(S=(C.match(/^(.*?)[\r\n]/)||[])[1])=="string"&&(C=S,n=!0),C&&(C=C.replace(/[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]/g,"")),C&&c&&(C=C.replace(c,"")),C&&(f||(e.hideEchoBack?e.mask&&ai.writeSync(ef,new Array(C.length+1).join(e.mask)):ai.writeSync(ef,C)),t+=C),!e.keyIn&&n||e.keyIn&&t.length>=h)break}!f&&!s&&ai.writeSync(ef,` +`),x(!1)}}(),e.print&&!s&&e.print(r+(e.displayOnly?"":(e.hideEchoBack?new Array(t.length+1).join(e.mask):t)+` +`),e.encoding),e.displayOnly?"":Z5=e.keepWhitespace||e.keyIn?t:t.trim()}function uat(e,t){var r=[];function s(a){a!=null&&(Array.isArray(a)?a.forEach(s):(!t||t(a))&&r.push(a))}return s(e),r}function $5(e){return e.replace(/[\x00-\x7f]/g,function(t){return"\\x"+("00"+t.charCodeAt().toString(16)).substr(-2)})}function $s(){var e=Array.prototype.slice.call(arguments),t,r;return e.length&&typeof e[0]=="boolean"&&(r=e.shift(),r&&(t=Object.keys(V5),e.unshift(V5))),e.reduce(function(s,a){return a==null||(a.hasOwnProperty("noEchoBack")&&!a.hasOwnProperty("hideEchoBack")&&(a.hideEchoBack=a.noEchoBack,delete a.noEchoBack),a.hasOwnProperty("noTrim")&&!a.hasOwnProperty("keepWhitespace")&&(a.keepWhitespace=a.noTrim,delete a.noTrim),r||(t=Object.keys(a)),t.forEach(function(n){var c;if(a.hasOwnProperty(n))switch(c=a[n],n){case"mask":case"limitMessage":case"defaultInput":case"encoding":c=c!=null?c+"":"",c&&n!=="limitMessage"&&(c=c.replace(/[\r\n]/g,"")),s[n]=c;break;case"bufferSize":!isNaN(c=parseInt(c,10))&&typeof c=="number"&&(s[n]=c);break;case"displayOnly":case"keyIn":case"hideEchoBack":case"caseSensitive":case"keepWhitespace":case"history":case"cd":s[n]=!!c;break;case"limit":case"trueValue":case"falseValue":s[n]=uat(c,function(f){var p=typeof f;return p==="string"||p==="number"||p==="function"||f instanceof RegExp}).map(function(f){return typeof f=="string"?f.replace(/[\r\n]/g,""):f});break;case"print":case"phContent":case"preCheck":s[n]=typeof c=="function"?c:void 0;break;case"prompt":case"display":s[n]=c??"";break}})),s},{})}function z5(e,t,r){return t.some(function(s){var a=typeof s;return a==="string"?r?e===s:e.toLowerCase()===s.toLowerCase():a==="number"?parseFloat(e)===s:a==="function"?s(e):s instanceof RegExp?s.test(e):!1})}function e9(e,t){var r=W0.normalize(km?(process.env.HOMEDRIVE||"")+(process.env.HOMEPATH||""):process.env.HOME||"").replace(/[\/\\]+$/,"");return e=W0.normalize(e),t?e.replace(/^~(?=\/|\\|$)/,r):e.replace(new RegExp("^"+$5(r)+"(?=\\/|\\\\|$)",km?"i":""),"~")}function UC(e,t){var r="(?:\\(([\\s\\S]*?)\\))?(\\w+|.-.)(?:\\(([\\s\\S]*?)\\))?",s=new RegExp("(\\$)?(\\$<"+r+">)","g"),a=new RegExp("(\\$)?(\\$\\{"+r+"\\})","g");function n(c,f,p,h,E,C){var S;return f||typeof(S=t(E))!="string"?p:S?(h||"")+S+(C||""):""}return e.replace(s,n).replace(a,n)}function Zge(e,t,r){var s,a=[],n=-1,c=0,f="",p;function h(E,C){return C.length>3?(E.push(C[0]+"..."+C[C.length-1]),p=!0):C.length&&(E=E.concat(C)),E}return s=e.reduce(function(E,C){return E.concat((C+"").split(""))},[]).reduce(function(E,C){var S,x;return t||(C=C.toLowerCase()),S=/^\d$/.test(C)?1:/^[A-Z]$/.test(C)?2:/^[a-z]$/.test(C)?3:0,r&&S===0?f+=C:(x=C.charCodeAt(0),S&&S===n&&x===c+1?a.push(C):(E=h(E,a),a=[C],n=S),c=x),E},[]),s=h(s,a),f&&(s.push(f),p=!0),{values:s,suppressed:p}}function $ge(e,t){return e.join(e.length>2?", ":t?" / ":"/")}function eme(e,t){var r,s,a={},n;if(t.phContent&&(r=t.phContent(e,t)),typeof r!="string")switch(e){case"hideEchoBack":case"mask":case"defaultInput":case"caseSensitive":case"keepWhitespace":case"encoding":case"bufferSize":case"history":case"cd":r=t.hasOwnProperty(e)?typeof t[e]=="boolean"?t[e]?"on":"off":t[e]+"":"";break;case"limit":case"trueValue":case"falseValue":s=t[t.hasOwnProperty(e+"Src")?e+"Src":e],t.keyIn?(a=Zge(s,t.caseSensitive),s=a.values):s=s.filter(function(c){var f=typeof c;return f==="string"||f==="number"}),r=$ge(s,a.suppressed);break;case"limitCount":case"limitCountNotZero":r=t[t.hasOwnProperty("limitSrc")?"limitSrc":"limit"].length,r=r||e!=="limitCountNotZero"?r+"":"";break;case"lastInput":r=Z5;break;case"cwd":case"CWD":case"cwdHome":r=process.cwd(),e==="CWD"?r=W0.basename(r):e==="cwdHome"&&(r=e9(r));break;case"date":case"time":case"localeDate":case"localeTime":r=new Date()["to"+e.replace(/^./,function(c){return c.toUpperCase()})+"String"]();break;default:typeof(n=(e.match(/^history_m(\d+)$/)||[])[1])=="string"&&(r=xm[xm.length-n]||"")}return r}function tme(e){var t=/^(.)-(.)$/.exec(e),r="",s,a,n,c;if(!t)return null;for(s=t[1].charCodeAt(0),a=t[2].charCodeAt(0),c=s +And the length must be: $`,trueValue:null,falseValue:null,caseSensitive:!0},t,{history:!1,cd:!1,phContent:function(x){return x==="charlist"?r.text:x==="length"?s+"..."+a:null}}),c,f,p,h,E,C,S;for(t=t||{},c=UC(t.charlist?t.charlist+"":"$",tme),(isNaN(s=parseInt(t.min,10))||typeof s!="number")&&(s=12),(isNaN(a=parseInt(t.max,10))||typeof a!="number")&&(a=24),h=new RegExp("^["+$5(c)+"]{"+s+","+a+"}$"),r=Zge([c],n.caseSensitive,!0),r.text=$ge(r.values,r.suppressed),f=t.confirmMessage!=null?t.confirmMessage:"Reinput a same one to confirm it: ",p=t.unmatchMessage!=null?t.unmatchMessage:"It differs from first one. Hit only the Enter key if you want to retry from first one.",e==null&&(e="Input new password: "),E=n.limitMessage;!S;)n.limit=h,n.limitMessage=E,C=$r.question(e,n),n.limit=[C,""],n.limitMessage=p,S=$r.question(f,n);return C};function ime(e,t,r){var s;function a(n){return s=r(n),!isNaN(s)&&typeof s=="number"}return $r.question(e,$s({limitMessage:"Input valid number, please."},t,{limit:a,cd:!1})),s}$r.questionInt=function(e,t){return ime(e,t,function(r){return parseInt(r,10)})};$r.questionFloat=function(e,t){return ime(e,t,parseFloat)};$r.questionPath=function(e,t){var r,s="",a=$s({hideEchoBack:!1,limitMessage:`$Input valid path, please.$<( Min:)min>$<( Max:)max>`,history:!0,cd:!0},t,{keepWhitespace:!1,limit:function(n){var c,f,p;n=e9(n,!0),s="";function h(E){E.split(/\/|\\/).reduce(function(C,S){var x=W0.resolve(C+=S+W0.sep);if(!ai.existsSync(x))ai.mkdirSync(x);else if(!ai.statSync(x).isDirectory())throw new Error("Non directory already exists: "+x);return C},"")}try{if(c=ai.existsSync(n),r=c?ai.realpathSync(n):W0.resolve(n),!t.hasOwnProperty("exists")&&!c||typeof t.exists=="boolean"&&t.exists!==c)return s=(c?"Already exists":"No such file or directory")+": "+r,!1;if(!c&&t.create&&(t.isDirectory?h(r):(h(W0.dirname(r)),ai.closeSync(ai.openSync(r,"w"))),r=ai.realpathSync(r)),c&&(t.min||t.max||t.isFile||t.isDirectory)){if(f=ai.statSync(r),t.isFile&&!f.isFile())return s="Not file: "+r,!1;if(t.isDirectory&&!f.isDirectory())return s="Not directory: "+r,!1;if(t.min&&f.size<+t.min||t.max&&f.size>+t.max)return s="Size "+f.size+" is out of range: "+r,!1}if(typeof t.validate=="function"&&(p=t.validate(r))!==!0)return typeof p=="string"&&(s=p),!1}catch(E){return s=E+"",!1}return!0},phContent:function(n){return n==="error"?s:n!=="min"&&n!=="max"?null:t.hasOwnProperty(n)?t[n]+"":""}});return t=t||{},e==null&&(e='Input path (you can "cd" and "pwd"): '),$r.question(e,a),r};function sme(e,t){var r={},s={};return typeof e=="object"?(Object.keys(e).forEach(function(a){typeof e[a]=="function"&&(s[t.caseSensitive?a:a.toLowerCase()]=e[a])}),r.preCheck=function(a){var n;return r.args=X5(a),n=r.args[0]||"",t.caseSensitive||(n=n.toLowerCase()),r.hRes=n!=="_"&&s.hasOwnProperty(n)?s[n].apply(a,r.args.slice(1)):s.hasOwnProperty("_")?s._.apply(a,r.args):null,{res:a,forceNext:!1}},s.hasOwnProperty("_")||(r.limit=function(){var a=r.args[0]||"";return t.caseSensitive||(a=a.toLowerCase()),s.hasOwnProperty(a)})):r.preCheck=function(a){return r.args=X5(a),r.hRes=typeof e=="function"?e.apply(a,r.args):!0,{res:a,forceNext:!1}},r}$r.promptCL=function(e,t){var r=$s({hideEchoBack:!1,limitMessage:"Requested command is not available.",caseSensitive:!1,history:!0},t),s=sme(e,r);return r.limit=s.limit,r.preCheck=s.preCheck,$r.prompt(r),s.args};$r.promptLoop=function(e,t){for(var r=$s({hideEchoBack:!1,trueValue:null,falseValue:null,caseSensitive:!1,history:!0},t);!e($r.prompt(r)););};$r.promptCLLoop=function(e,t){var r=$s({hideEchoBack:!1,limitMessage:"Requested command is not available.",caseSensitive:!1,history:!0},t),s=sme(e,r);for(r.limit=s.limit,r.preCheck=s.preCheck;$r.prompt(r),!s.hRes;);};$r.promptSimShell=function(e){return $r.prompt($s({hideEchoBack:!1,history:!0},e,{prompt:function(){return km?"$>":(process.env.USER||"")+(process.env.HOSTNAME?"@"+process.env.HOSTNAME.replace(/\..*$/,""):"")+":$$ "}()}))};function ome(e,t,r){var s;return e==null&&(e="Are you sure? "),(!t||t.guide!==!1)&&(e+="")&&(e=e.replace(/\s*:?\s*$/,"")+" [y/n]: "),s=$r.keyIn(e,$s(t,{hideEchoBack:!1,limit:r,trueValue:"y",falseValue:"n",caseSensitive:!1})),typeof s=="boolean"?s:""}$r.keyInYN=function(e,t){return ome(e,t)};$r.keyInYNStrict=function(e,t){return ome(e,t,"yn")};$r.keyInPause=function(e,t){e==null&&(e="Continue..."),(!t||t.guide!==!1)&&(e+="")&&(e=e.replace(/\s+$/,"")+" (Hit any key)"),$r.keyIn(e,$s({limit:null},t,{hideEchoBack:!0,mask:""}))};$r.keyInSelect=function(e,t,r){var s=$s({hideEchoBack:!1},r,{trueValue:null,falseValue:null,caseSensitive:!1,phContent:function(p){return p==="itemsCount"?e.length+"":p==="firstItem"?(e[0]+"").trim():p==="lastItem"?(e[e.length-1]+"").trim():null}}),a="",n={},c=49,f=` +`;if(!Array.isArray(e)||!e.length||e.length>35)throw"`items` must be Array (max length: 35).";return e.forEach(function(p,h){var E=String.fromCharCode(c);a+=E,n[E]=h,f+="["+E+"] "+(p+"").trim()+` +`,c=c===57?97:c+1}),(!r||r.cancel!==!1)&&(a+="0",n[0]=-1,f+="[0] "+(r&&r.cancel!=null&&typeof r.cancel!="boolean"?(r.cancel+"").trim():"CANCEL")+` +`),s.limit=a,f+=` +`,t==null&&(t="Choose one from list: "),(t+="")&&((!r||r.guide!==!1)&&(t=t.replace(/\s*:?\s*$/,"")+" [$]: "),f+=t),n[$r.keyIn(f,s).toLowerCase()]};$r.getRawInput=function(){return WT};function oS(e,t){var r;return t.length&&(r={},r[e]=t[0]),$r.setDefaultOptions(r)[e]}$r.setPrint=function(){return oS("print",arguments)};$r.setPrompt=function(){return oS("prompt",arguments)};$r.setEncoding=function(){return oS("encoding",arguments)};$r.setMask=function(){return oS("mask",arguments)};$r.setBufferSize=function(){return oS("bufferSize",arguments)}});var t9=G((Y9t,rc)=>{(function(){var e={major:0,minor:2,patch:66,status:"beta"};tau_file_system={files:{},open:function(w,b,y){var F=tau_file_system.files[w];if(!F){if(y==="read")return null;F={path:w,text:"",type:b,get:function(z,X){return X===this.text.length||X>this.text.length?"end_of_file":this.text.substring(X,X+z)},put:function(z,X){return X==="end_of_file"?(this.text+=z,!0):X==="past_end_of_file"?null:(this.text=this.text.substring(0,X)+z+this.text.substring(X+z.length),!0)},get_byte:function(z){if(z==="end_of_stream")return-1;var X=Math.floor(z/2);if(this.text.length<=X)return-1;var $=n(this.text[Math.floor(z/2)],0);return z%2===0?$&255:$/256>>>0},put_byte:function(z,X){var $=X==="end_of_stream"?this.text.length:Math.floor(X/2);if(this.text.length<$)return null;var se=this.text.length===$?-1:n(this.text[Math.floor(X/2)],0);return X%2===0?(se=se/256>>>0,se=(se&255)<<8|z&255):(se=se&255,se=(z&255)<<8|se&255),this.text.length===$?this.text+=c(se):this.text=this.text.substring(0,$)+c(se)+this.text.substring($+1),!0},flush:function(){return!0},close:function(){var z=tau_file_system.files[this.path];return z?!0:null}},tau_file_system.files[w]=F}return y==="write"&&(F.text=""),F}},tau_user_input={buffer:"",get:function(w,b){for(var y;tau_user_input.buffer.length\?\@\^\~\\]+|'(?:[^']*?(?:\\(?:x?\d+)?\\)*(?:'')*(?:\\')*)*')/,number:/^(?:0o[0-7]+|0x[0-9a-fA-F]+|0b[01]+|0'(?:''|\\[abfnrtv\\'"`]|\\x?\d+\\|[^\\])|\d+(?:\.\d+(?:[eE][+-]?\d+)?)?)/,string:/^(?:"([^"]|""|\\")*"|`([^`]|``|\\`)*`)/,l_brace:/^(?:\[)/,r_brace:/^(?:\])/,l_bracket:/^(?:\{)/,r_bracket:/^(?:\})/,bar:/^(?:\|)/,l_paren:/^(?:\()/,r_paren:/^(?:\))/};function O(w,b){return w.get_flag("char_conversion").id==="on"?b.replace(/./g,function(y){return w.get_char_conversion(y)}):b}function U(w){this.thread=w,this.text="",this.tokens=[]}U.prototype.set_last_tokens=function(w){return this.tokens=w},U.prototype.new_text=function(w){this.text=w,this.tokens=[]},U.prototype.get_tokens=function(w){var b,y=0,F=0,z=0,X=[],$=!1;if(w){var se=this.tokens[w-1];y=se.len,b=O(this.thread,this.text.substr(se.len)),F=se.line,z=se.start}else b=this.text;if(/^\s*$/.test(b))return null;for(;b!=="";){var xe=[],Fe=!1;if(/^\n/.exec(b)!==null){F++,z=0,y++,b=b.replace(/\n/,""),$=!0;continue}for(var ut in T)if(T.hasOwnProperty(ut)){var Ct=T[ut].exec(b);Ct&&xe.push({value:Ct[0],name:ut,matches:Ct})}if(!xe.length)return this.set_last_tokens([{value:b,matches:[],name:"lexical",line:F,start:z}]);var se=r(xe,function(Pr,Cr){return Pr.value.length>=Cr.value.length?Pr:Cr});switch(se.start=z,se.line=F,b=b.replace(se.value,""),z+=se.value.length,y+=se.value.length,se.name){case"atom":se.raw=se.value,se.value.charAt(0)==="'"&&(se.value=S(se.value.substr(1,se.value.length-2),"'"),se.value===null&&(se.name="lexical",se.value="unknown escape sequence"));break;case"number":se.float=se.value.substring(0,2)!=="0x"&&se.value.match(/[.eE]/)!==null&&se.value!=="0'.",se.value=I(se.value),se.blank=Fe;break;case"string":var qt=se.value.charAt(0);se.value=S(se.value.substr(1,se.value.length-2),qt),se.value===null&&(se.name="lexical",se.value="unknown escape sequence");break;case"whitespace":var ir=X[X.length-1];ir&&(ir.space=!0),Fe=!0;continue;case"r_bracket":X.length>0&&X[X.length-1].name==="l_bracket"&&(se=X.pop(),se.name="atom",se.value="{}",se.raw="{}",se.space=!1);break;case"r_brace":X.length>0&&X[X.length-1].name==="l_brace"&&(se=X.pop(),se.name="atom",se.value="[]",se.raw="[]",se.space=!1);break}se.len=y,X.push(se),Fe=!1}var Pt=this.set_last_tokens(X);return Pt.length===0?null:Pt};function V(w,b,y,F,z){if(!b[y])return{type:f,value:P.error.syntax(b[y-1],"expression expected",!0)};var X;if(F==="0"){var $=b[y];switch($.name){case"number":return{type:p,len:y+1,value:new P.type.Num($.value,$.float)};case"variable":return{type:p,len:y+1,value:new P.type.Var($.value)};case"string":var se;switch(w.get_flag("double_quotes").id){case"atom":se=new _($.value,[]);break;case"codes":se=new _("[]",[]);for(var xe=$.value.length-1;xe>=0;xe--)se=new _(".",[new P.type.Num(n($.value,xe),!1),se]);break;case"chars":se=new _("[]",[]);for(var xe=$.value.length-1;xe>=0;xe--)se=new _(".",[new P.type.Term($.value.charAt(xe),[]),se]);break}return{type:p,len:y+1,value:se};case"l_paren":var Pt=V(w,b,y+1,w.__get_max_priority(),!0);return Pt.type!==p?Pt:b[Pt.len]&&b[Pt.len].name==="r_paren"?(Pt.len++,Pt):{type:f,derived:!0,value:P.error.syntax(b[Pt.len]?b[Pt.len]:b[Pt.len-1],") or operator expected",!b[Pt.len])};case"l_bracket":var Pt=V(w,b,y+1,w.__get_max_priority(),!0);return Pt.type!==p?Pt:b[Pt.len]&&b[Pt.len].name==="r_bracket"?(Pt.len++,Pt.value=new _("{}",[Pt.value]),Pt):{type:f,derived:!0,value:P.error.syntax(b[Pt.len]?b[Pt.len]:b[Pt.len-1],"} or operator expected",!b[Pt.len])}}var Fe=te(w,b,y,z);return Fe.type===p||Fe.derived||(Fe=ie(w,b,y),Fe.type===p||Fe.derived)?Fe:{type:f,derived:!1,value:P.error.syntax(b[y],"unexpected token")}}var ut=w.__get_max_priority(),Ct=w.__get_next_priority(F),qt=y;if(b[y].name==="atom"&&b[y+1]&&(b[y].space||b[y+1].name!=="l_paren")){var $=b[y++],ir=w.__lookup_operator_classes(F,$.value);if(ir&&ir.indexOf("fy")>-1){var Pt=V(w,b,y,F,z);if(Pt.type!==f)return $.value==="-"&&!$.space&&P.type.is_number(Pt.value)?{value:new P.type.Num(-Pt.value.value,Pt.value.is_float),len:Pt.len,type:p}:{value:new P.type.Term($.value,[Pt.value]),len:Pt.len,type:p};X=Pt}else if(ir&&ir.indexOf("fx")>-1){var Pt=V(w,b,y,Ct,z);if(Pt.type!==f)return{value:new P.type.Term($.value,[Pt.value]),len:Pt.len,type:p};X=Pt}}y=qt;var Pt=V(w,b,y,Ct,z);if(Pt.type===p){y=Pt.len;var $=b[y];if(b[y]&&(b[y].name==="atom"&&w.__lookup_operator_classes(F,$.value)||b[y].name==="bar"&&w.__lookup_operator_classes(F,"|"))){var gn=Ct,Pr=F,ir=w.__lookup_operator_classes(F,$.value);if(ir.indexOf("xf")>-1)return{value:new P.type.Term($.value,[Pt.value]),len:++Pt.len,type:p};if(ir.indexOf("xfx")>-1){var Cr=V(w,b,y+1,gn,z);return Cr.type===p?{value:new P.type.Term($.value,[Pt.value,Cr.value]),len:Cr.len,type:p}:(Cr.derived=!0,Cr)}else if(ir.indexOf("xfy")>-1){var Cr=V(w,b,y+1,Pr,z);return Cr.type===p?{value:new P.type.Term($.value,[Pt.value,Cr.value]),len:Cr.len,type:p}:(Cr.derived=!0,Cr)}else if(Pt.type!==f)for(;;){y=Pt.len;var $=b[y];if($&&$.name==="atom"&&w.__lookup_operator_classes(F,$.value)){var ir=w.__lookup_operator_classes(F,$.value);if(ir.indexOf("yf")>-1)Pt={value:new P.type.Term($.value,[Pt.value]),len:++y,type:p};else if(ir.indexOf("yfx")>-1){var Cr=V(w,b,++y,gn,z);if(Cr.type===f)return Cr.derived=!0,Cr;y=Cr.len,Pt={value:new P.type.Term($.value,[Pt.value,Cr.value]),len:y,type:p}}else break}else break}}else X={type:f,value:P.error.syntax(b[Pt.len-1],"operator expected")};return Pt}return Pt}function te(w,b,y,F){if(!b[y]||b[y].name==="atom"&&b[y].raw==="."&&!F&&(b[y].space||!b[y+1]||b[y+1].name!=="l_paren"))return{type:f,derived:!1,value:P.error.syntax(b[y-1],"unfounded token")};var z=b[y],X=[];if(b[y].name==="atom"&&b[y].raw!==","){if(y++,b[y-1].space)return{type:p,len:y,value:new P.type.Term(z.value,X)};if(b[y]&&b[y].name==="l_paren"){if(b[y+1]&&b[y+1].name==="r_paren")return{type:f,derived:!0,value:P.error.syntax(b[y+1],"argument expected")};var $=V(w,b,++y,"999",!0);if($.type===f)return $.derived?$:{type:f,derived:!0,value:P.error.syntax(b[y]?b[y]:b[y-1],"argument expected",!b[y])};for(X.push($.value),y=$.len;b[y]&&b[y].name==="atom"&&b[y].value===",";){if($=V(w,b,y+1,"999",!0),$.type===f)return $.derived?$:{type:f,derived:!0,value:P.error.syntax(b[y+1]?b[y+1]:b[y],"argument expected",!b[y+1])};X.push($.value),y=$.len}if(b[y]&&b[y].name==="r_paren")y++;else return{type:f,derived:!0,value:P.error.syntax(b[y]?b[y]:b[y-1],", or ) expected",!b[y])}}return{type:p,len:y,value:new P.type.Term(z.value,X)}}return{type:f,derived:!1,value:P.error.syntax(b[y],"term expected")}}function ie(w,b,y){if(!b[y])return{type:f,derived:!1,value:P.error.syntax(b[y-1],"[ expected")};if(b[y]&&b[y].name==="l_brace"){var F=V(w,b,++y,"999",!0),z=[F.value],X=void 0;if(F.type===f)return b[y]&&b[y].name==="r_brace"?{type:p,len:y+1,value:new P.type.Term("[]",[])}:{type:f,derived:!0,value:P.error.syntax(b[y],"] expected")};for(y=F.len;b[y]&&b[y].name==="atom"&&b[y].value===",";){if(F=V(w,b,y+1,"999",!0),F.type===f)return F.derived?F:{type:f,derived:!0,value:P.error.syntax(b[y+1]?b[y+1]:b[y],"argument expected",!b[y+1])};z.push(F.value),y=F.len}var $=!1;if(b[y]&&b[y].name==="bar"){if($=!0,F=V(w,b,y+1,"999",!0),F.type===f)return F.derived?F:{type:f,derived:!0,value:P.error.syntax(b[y+1]?b[y+1]:b[y],"argument expected",!b[y+1])};X=F.value,y=F.len}return b[y]&&b[y].name==="r_brace"?{type:p,len:y+1,value:d(z,X)}:{type:f,derived:!0,value:P.error.syntax(b[y]?b[y]:b[y-1],$?"] expected":", or | or ] expected",!b[y])}}return{type:f,derived:!1,value:P.error.syntax(b[y],"list expected")}}function ue(w,b,y){var F=b[y].line,z=V(w,b,y,w.__get_max_priority(),!1),X=null,$;if(z.type!==f)if(y=z.len,b[y]&&b[y].name==="atom"&&b[y].raw===".")if(y++,P.type.is_term(z.value)){if(z.value.indicator===":-/2"?(X=new P.type.Rule(z.value.args[0],Ee(z.value.args[1])),$={value:X,len:y,type:p}):z.value.indicator==="-->/2"?(X=Ae(new P.type.Rule(z.value.args[0],z.value.args[1]),w),X.body=Ee(X.body),$={value:X,len:y,type:P.type.is_rule(X)?p:f}):(X=new P.type.Rule(z.value,null),$={value:X,len:y,type:p}),X){var se=X.singleton_variables();se.length>0&&w.throw_warning(P.warning.singleton(se,X.head.indicator,F))}return $}else return{type:f,value:P.error.syntax(b[y],"callable expected")};else return{type:f,value:P.error.syntax(b[y]?b[y]:b[y-1],". or operator expected")};return z}function ae(w,b,y){y=y||{},y.from=y.from?y.from:"$tau-js",y.reconsult=y.reconsult!==void 0?y.reconsult:!0;var F=new U(w),z={},X;F.new_text(b);var $=0,se=F.get_tokens($);do{if(se===null||!se[$])break;var xe=ue(w,se,$);if(xe.type===f)return new _("throw",[xe.value]);if(xe.value.body===null&&xe.value.head.indicator==="?-/1"){var Fe=new ct(w.session);Fe.add_goal(xe.value.head.args[0]),Fe.answer(function(Ct){P.type.is_error(Ct)?w.throw_warning(Ct.args[0]):(Ct===!1||Ct===null)&&w.throw_warning(P.warning.failed_goal(xe.value.head.args[0],xe.len))}),$=xe.len;var ut=!0}else if(xe.value.body===null&&xe.value.head.indicator===":-/1"){var ut=w.run_directive(xe.value.head.args[0]);$=xe.len,xe.value.head.args[0].indicator==="char_conversion/2"&&(se=F.get_tokens($),$=0)}else{X=xe.value.head.indicator,y.reconsult!==!1&&z[X]!==!0&&!w.is_multifile_predicate(X)&&(w.session.rules[X]=a(w.session.rules[X]||[],function(qt){return qt.dynamic}),z[X]=!0);var ut=w.add_rule(xe.value,y);$=xe.len}if(!ut)return ut}while(!0);return!0}function ge(w,b){var y=new U(w);y.new_text(b);var F=0;do{var z=y.get_tokens(F);if(z===null)break;var X=V(w,z,0,w.__get_max_priority(),!1);if(X.type!==f){var $=X.len,se=$;if(z[$]&&z[$].name==="atom"&&z[$].raw===".")w.add_goal(Ee(X.value));else{var xe=z[$];return new _("throw",[P.error.syntax(xe||z[$-1],". or operator expected",!xe)])}F=X.len+1}else return new _("throw",[X.value])}while(!0);return!0}function Ae(w,b){w=w.rename(b);var y=b.next_free_variable(),F=Ce(w.body,y,b);return F.error?F.value:(w.body=F.value,w.head.args=w.head.args.concat([y,F.variable]),w.head=new _(w.head.id,w.head.args),w)}function Ce(w,b,y){var F;if(P.type.is_term(w)&&w.indicator==="!/0")return{value:w,variable:b,error:!1};if(P.type.is_term(w)&&w.indicator===",/2"){var z=Ce(w.args[0],b,y);if(z.error)return z;var X=Ce(w.args[1],z.variable,y);return X.error?X:{value:new _(",",[z.value,X.value]),variable:X.variable,error:!1}}else{if(P.type.is_term(w)&&w.indicator==="{}/1")return{value:w.args[0],variable:b,error:!1};if(P.type.is_empty_list(w))return{value:new _("true",[]),variable:b,error:!1};if(P.type.is_list(w)){F=y.next_free_variable();for(var $=w,se;$.indicator==="./2";)se=$,$=$.args[1];return P.type.is_variable($)?{value:P.error.instantiation("DCG"),variable:b,error:!0}:P.type.is_empty_list($)?(se.args[1]=F,{value:new _("=",[b,w]),variable:F,error:!1}):{value:P.error.type("list",w,"DCG"),variable:b,error:!0}}else return P.type.is_callable(w)?(F=y.next_free_variable(),w.args=w.args.concat([b,F]),w=new _(w.id,w.args),{value:w,variable:F,error:!1}):{value:P.error.type("callable",w,"DCG"),variable:b,error:!0}}}function Ee(w){return P.type.is_variable(w)?new _("call",[w]):P.type.is_term(w)&&[",/2",";/2","->/2"].indexOf(w.indicator)!==-1?new _(w.id,[Ee(w.args[0]),Ee(w.args[1])]):w}function d(w,b){for(var y=b||new P.type.Term("[]",[]),F=w.length-1;F>=0;F--)y=new P.type.Term(".",[w[F],y]);return y}function Se(w,b){for(var y=w.length-1;y>=0;y--)w[y]===b&&w.splice(y,1)}function Be(w){for(var b={},y=[],F=0;F=0;b--)if(w.charAt(b)==="/")return new _("/",[new _(w.substring(0,b)),new Qe(parseInt(w.substring(b+1)),!1)])}function De(w){this.id=w}function Qe(w,b){this.is_float=b!==void 0?b:parseInt(w)!==w,this.value=this.is_float?w:parseInt(w)}var st=0;function _(w,b,y){this.ref=y||++st,this.id=w,this.args=b||[],this.indicator=w+"/"+this.args.length}var tt=0;function Ne(w,b,y,F,z,X){this.id=tt++,this.stream=w,this.mode=b,this.alias=y,this.type=F!==void 0?F:"text",this.reposition=z!==void 0?z:!0,this.eof_action=X!==void 0?X:"eof_code",this.position=this.mode==="append"?"end_of_stream":0,this.output=this.mode==="write"||this.mode==="append",this.input=this.mode==="read"}function ke(w){w=w||{},this.links=w}function be(w,b,y){b=b||new ke,y=y||null,this.goal=w,this.substitution=b,this.parent=y}function je(w,b,y){this.head=w,this.body=b,this.dynamic=y||!1}function Re(w){w=w===void 0||w<=0?1e3:w,this.rules={},this.src_predicates={},this.rename=0,this.modules=[],this.thread=new ct(this),this.total_threads=1,this.renamed_variables={},this.public_predicates={},this.multifile_predicates={},this.limit=w,this.streams={user_input:new Ne(typeof rc<"u"&&rc.exports?nodejs_user_input:tau_user_input,"read","user_input","text",!1,"reset"),user_output:new Ne(typeof rc<"u"&&rc.exports?nodejs_user_output:tau_user_output,"write","user_output","text",!1,"eof_code")},this.file_system=typeof rc<"u"&&rc.exports?nodejs_file_system:tau_file_system,this.standard_input=this.streams.user_input,this.standard_output=this.streams.user_output,this.current_input=this.streams.user_input,this.current_output=this.streams.user_output,this.format_success=function(b){return b.substitution},this.format_error=function(b){return b.goal},this.flag={bounded:P.flag.bounded.value,max_integer:P.flag.max_integer.value,min_integer:P.flag.min_integer.value,integer_rounding_function:P.flag.integer_rounding_function.value,char_conversion:P.flag.char_conversion.value,debug:P.flag.debug.value,max_arity:P.flag.max_arity.value,unknown:P.flag.unknown.value,double_quotes:P.flag.double_quotes.value,occurs_check:P.flag.occurs_check.value,dialect:P.flag.dialect.value,version_data:P.flag.version_data.value,nodejs:P.flag.nodejs.value},this.__loaded_modules=[],this.__char_conversion={},this.__operators={1200:{":-":["fx","xfx"],"-->":["xfx"],"?-":["fx"]},1100:{";":["xfy"]},1050:{"->":["xfy"]},1e3:{",":["xfy"]},900:{"\\+":["fy"]},700:{"=":["xfx"],"\\=":["xfx"],"==":["xfx"],"\\==":["xfx"],"@<":["xfx"],"@=<":["xfx"],"@>":["xfx"],"@>=":["xfx"],"=..":["xfx"],is:["xfx"],"=:=":["xfx"],"=\\=":["xfx"],"<":["xfx"],"=<":["xfx"],">":["xfx"],">=":["xfx"]},600:{":":["xfy"]},500:{"+":["yfx"],"-":["yfx"],"/\\":["yfx"],"\\/":["yfx"]},400:{"*":["yfx"],"/":["yfx"],"//":["yfx"],rem:["yfx"],mod:["yfx"],"<<":["yfx"],">>":["yfx"]},200:{"**":["xfx"],"^":["xfy"],"-":["fy"],"+":["fy"],"\\":["fy"]}}}function ct(w){this.epoch=Date.now(),this.session=w,this.session.total_threads++,this.total_steps=0,this.cpu_time=0,this.cpu_time_last=0,this.points=[],this.debugger=!1,this.debugger_states=[],this.level="top_level/0",this.__calls=[],this.current_limit=this.session.limit,this.warnings=[]}function Me(w,b,y){this.id=w,this.rules=b,this.exports=y,P.module[w]=this}Me.prototype.exports_predicate=function(w){return this.exports.indexOf(w)!==-1},De.prototype.unify=function(w,b){if(b&&t(w.variables(),this.id)!==-1&&!P.type.is_variable(w))return null;var y={};return y[this.id]=w,new ke(y)},Qe.prototype.unify=function(w,b){return P.type.is_number(w)&&this.value===w.value&&this.is_float===w.is_float?new ke:null},_.prototype.unify=function(w,b){if(P.type.is_term(w)&&this.indicator===w.indicator){for(var y=new ke,F=0;F=0){var F=this.args[0].value,z=Math.floor(F/26),X=F%26;return"ABCDEFGHIJKLMNOPQRSTUVWXYZ"[X]+(z!==0?z:"")}switch(this.indicator){case"[]/0":case"{}/0":case"!/0":return this.id;case"{}/1":return"{"+this.args[0].toString(w)+"}";case"./2":for(var $="["+this.args[0].toString(w),se=this.args[1];se.indicator==="./2";)$+=", "+se.args[0].toString(w),se=se.args[1];return se.indicator!=="[]/0"&&($+="|"+se.toString(w)),$+="]",$;case",/2":return"("+this.args[0].toString(w)+", "+this.args[1].toString(w)+")";default:var xe=this.id,Fe=w.session?w.session.lookup_operator(this.id,this.args.length):null;if(w.session===void 0||w.ignore_ops||Fe===null)return w.quoted&&!/^(!|,|;|[a-z][0-9a-zA-Z_]*)$/.test(xe)&&xe!=="{}"&&xe!=="[]"&&(xe="'"+x(xe)+"'"),xe+(this.args.length?"("+s(this.args,function(ir){return ir.toString(w)}).join(", ")+")":"");var ut=Fe.priority>b.priority||Fe.priority===b.priority&&(Fe.class==="xfy"&&this.indicator!==b.indicator||Fe.class==="yfx"&&this.indicator!==b.indicator||this.indicator===b.indicator&&Fe.class==="yfx"&&y==="right"||this.indicator===b.indicator&&Fe.class==="xfy"&&y==="left");Fe.indicator=this.indicator;var Ct=ut?"(":"",qt=ut?")":"";return this.args.length===0?"("+this.id+")":["fy","fx"].indexOf(Fe.class)!==-1?Ct+xe+" "+this.args[0].toString(w,Fe)+qt:["yf","xf"].indexOf(Fe.class)!==-1?Ct+this.args[0].toString(w,Fe)+" "+xe+qt:Ct+this.args[0].toString(w,Fe,"left")+" "+this.id+" "+this.args[1].toString(w,Fe,"right")+qt}},Ne.prototype.toString=function(w){return"("+this.id+")"},ke.prototype.toString=function(w){var b="{";for(var y in this.links)this.links.hasOwnProperty(y)&&(b!=="{"&&(b+=", "),b+=y+"/"+this.links[y].toString(w));return b+="}",b},be.prototype.toString=function(w){return this.goal===null?"<"+this.substitution.toString(w)+">":"<"+this.goal.toString(w)+", "+this.substitution.toString(w)+">"},je.prototype.toString=function(w){return this.body?this.head.toString(w)+" :- "+this.body.toString(w)+".":this.head.toString(w)+"."},Re.prototype.toString=function(w){for(var b="",y=0;y=0;z--)F=new _(".",[b[z],F]);return F}return new _(this.id,s(this.args,function(X){return X.apply(w)}),this.ref)},Ne.prototype.apply=function(w){return this},je.prototype.apply=function(w){return new je(this.head.apply(w),this.body!==null?this.body.apply(w):null)},ke.prototype.apply=function(w){var b,y={};for(b in this.links)this.links.hasOwnProperty(b)&&(y[b]=this.links[b].apply(w));return new ke(y)},_.prototype.select=function(){for(var w=this;w.indicator===",/2";)w=w.args[0];return w},_.prototype.replace=function(w){return this.indicator===",/2"?this.args[0].indicator===",/2"?new _(",",[this.args[0].replace(w),this.args[1]]):w===null?this.args[1]:new _(",",[w,this.args[1]]):w},_.prototype.search=function(w){if(P.type.is_term(w)&&w.ref!==void 0&&this.ref===w.ref)return!0;for(var b=0;bb&&F0&&(b=this.head_point().substitution.domain());t(b,P.format_variable(this.session.rename))!==-1;)this.session.rename++;if(w.id==="_")return new De(P.format_variable(this.session.rename));this.session.renamed_variables[w.id]=P.format_variable(this.session.rename)}return new De(this.session.renamed_variables[w.id])},Re.prototype.next_free_variable=function(){return this.thread.next_free_variable()},ct.prototype.next_free_variable=function(){this.session.rename++;var w=[];for(this.points.length>0&&(w=this.head_point().substitution.domain());t(w,P.format_variable(this.session.rename))!==-1;)this.session.rename++;return new De(P.format_variable(this.session.rename))},Re.prototype.is_public_predicate=function(w){return!this.public_predicates.hasOwnProperty(w)||this.public_predicates[w]===!0},ct.prototype.is_public_predicate=function(w){return this.session.is_public_predicate(w)},Re.prototype.is_multifile_predicate=function(w){return this.multifile_predicates.hasOwnProperty(w)&&this.multifile_predicates[w]===!0},ct.prototype.is_multifile_predicate=function(w){return this.session.is_multifile_predicate(w)},Re.prototype.prepend=function(w){return this.thread.prepend(w)},ct.prototype.prepend=function(w){for(var b=w.length-1;b>=0;b--)this.points.push(w[b])},Re.prototype.success=function(w,b){return this.thread.success(w,b)},ct.prototype.success=function(w,y){var y=typeof y>"u"?w:y;this.prepend([new be(w.goal.replace(null),w.substitution,y)])},Re.prototype.throw_error=function(w){return this.thread.throw_error(w)},ct.prototype.throw_error=function(w){this.prepend([new be(new _("throw",[w]),new ke,null,null)])},Re.prototype.step_rule=function(w,b){return this.thread.step_rule(w,b)},ct.prototype.step_rule=function(w,b){var y=b.indicator;if(w==="user"&&(w=null),w===null&&this.session.rules.hasOwnProperty(y))return this.session.rules[y];for(var F=w===null?this.session.modules:t(this.session.modules,w)===-1?[]:[w],z=0;z1)&&this.again()},Re.prototype.answers=function(w,b,y){return this.thread.answers(w,b,y)},ct.prototype.answers=function(w,b,y){var F=b||1e3,z=this;if(b<=0){y&&y();return}this.answer(function(X){w(X),X!==!1?setTimeout(function(){z.answers(w,b-1,y)},1):y&&y()})},Re.prototype.again=function(w){return this.thread.again(w)},ct.prototype.again=function(w){for(var b,y=Date.now();this.__calls.length>0;){for(this.warnings=[],w!==!1&&(this.current_limit=this.session.limit);this.current_limit>0&&this.points.length>0&&this.head_point().goal!==null&&!P.type.is_error(this.head_point().goal);)if(this.current_limit--,this.step()===!0)return;var F=Date.now();this.cpu_time_last=F-y,this.cpu_time+=this.cpu_time_last;var z=this.__calls.shift();this.current_limit<=0?z(null):this.points.length===0?z(!1):P.type.is_error(this.head_point().goal)?(b=this.session.format_error(this.points.pop()),this.points=[],z(b)):(this.debugger&&this.debugger_states.push(this.head_point()),b=this.session.format_success(this.points.pop()),z(b))}},Re.prototype.unfold=function(w){if(w.body===null)return!1;var b=w.head,y=w.body,F=y.select(),z=new ct(this),X=[];z.add_goal(F),z.step();for(var $=z.points.length-1;$>=0;$--){var se=z.points[$],xe=b.apply(se.substitution),Fe=y.replace(se.goal);Fe!==null&&(Fe=Fe.apply(se.substitution)),X.push(new je(xe,Fe))}var ut=this.rules[b.indicator],Ct=t(ut,w);return X.length>0&&Ct!==-1?(ut.splice.apply(ut,[Ct,1].concat(X)),!0):!1},ct.prototype.unfold=function(w){return this.session.unfold(w)},De.prototype.interpret=function(w){return P.error.instantiation(w.level)},Qe.prototype.interpret=function(w){return this},_.prototype.interpret=function(w){return P.type.is_unitary_list(this)?this.args[0].interpret(w):P.operate(w,this)},De.prototype.compare=function(w){return this.idw.id?1:0},Qe.prototype.compare=function(w){if(this.value===w.value&&this.is_float===w.is_float)return 0;if(this.valuew.value)return 1},_.prototype.compare=function(w){if(this.args.lengthw.args.length||this.args.length===w.args.length&&this.id>w.id)return 1;for(var b=0;bF)return 1;if(w.constructor===Qe){if(w.is_float&&b.is_float)return 0;if(w.is_float)return-1;if(b.is_float)return 1}return 0},is_substitution:function(w){return w instanceof ke},is_state:function(w){return w instanceof be},is_rule:function(w){return w instanceof je},is_variable:function(w){return w instanceof De},is_stream:function(w){return w instanceof Ne},is_anonymous_var:function(w){return w instanceof De&&w.id==="_"},is_callable:function(w){return w instanceof _},is_number:function(w){return w instanceof Qe},is_integer:function(w){return w instanceof Qe&&!w.is_float},is_float:function(w){return w instanceof Qe&&w.is_float},is_term:function(w){return w instanceof _},is_atom:function(w){return w instanceof _&&w.args.length===0},is_ground:function(w){if(w instanceof De)return!1;if(w instanceof _){for(var b=0;b0},is_list:function(w){return w instanceof _&&(w.indicator==="[]/0"||w.indicator==="./2")},is_empty_list:function(w){return w instanceof _&&w.indicator==="[]/0"},is_non_empty_list:function(w){return w instanceof _&&w.indicator==="./2"},is_fully_list:function(w){for(;w instanceof _&&w.indicator==="./2";)w=w.args[1];return w instanceof De||w instanceof _&&w.indicator==="[]/0"},is_instantiated_list:function(w){for(;w instanceof _&&w.indicator==="./2";)w=w.args[1];return w instanceof _&&w.indicator==="[]/0"},is_unitary_list:function(w){return w instanceof _&&w.indicator==="./2"&&w.args[1]instanceof _&&w.args[1].indicator==="[]/0"},is_character:function(w){return w instanceof _&&(w.id.length===1||w.id.length>0&&w.id.length<=2&&n(w.id,0)>=65536)},is_character_code:function(w){return w instanceof Qe&&!w.is_float&&w.value>=0&&w.value<=1114111},is_byte:function(w){return w instanceof Qe&&!w.is_float&&w.value>=0&&w.value<=255},is_operator:function(w){return w instanceof _&&P.arithmetic.evaluation[w.indicator]},is_directive:function(w){return w instanceof _&&P.directive[w.indicator]!==void 0},is_builtin:function(w){return w instanceof _&&P.predicate[w.indicator]!==void 0},is_error:function(w){return w instanceof _&&w.indicator==="throw/1"},is_predicate_indicator:function(w){return w instanceof _&&w.indicator==="//2"&&w.args[0]instanceof _&&w.args[0].args.length===0&&w.args[1]instanceof Qe&&w.args[1].is_float===!1},is_flag:function(w){return w instanceof _&&w.args.length===0&&P.flag[w.id]!==void 0},is_value_flag:function(w,b){if(!P.type.is_flag(w))return!1;for(var y in P.flag[w.id].allowed)if(P.flag[w.id].allowed.hasOwnProperty(y)&&P.flag[w.id].allowed[y].equals(b))return!0;return!1},is_io_mode:function(w){return P.type.is_atom(w)&&["read","write","append"].indexOf(w.id)!==-1},is_stream_option:function(w){return P.type.is_term(w)&&(w.indicator==="alias/1"&&P.type.is_atom(w.args[0])||w.indicator==="reposition/1"&&P.type.is_atom(w.args[0])&&(w.args[0].id==="true"||w.args[0].id==="false")||w.indicator==="type/1"&&P.type.is_atom(w.args[0])&&(w.args[0].id==="text"||w.args[0].id==="binary")||w.indicator==="eof_action/1"&&P.type.is_atom(w.args[0])&&(w.args[0].id==="error"||w.args[0].id==="eof_code"||w.args[0].id==="reset"))},is_stream_position:function(w){return P.type.is_integer(w)&&w.value>=0||P.type.is_atom(w)&&(w.id==="end_of_stream"||w.id==="past_end_of_stream")},is_stream_property:function(w){return P.type.is_term(w)&&(w.indicator==="input/0"||w.indicator==="output/0"||w.indicator==="alias/1"&&(P.type.is_variable(w.args[0])||P.type.is_atom(w.args[0]))||w.indicator==="file_name/1"&&(P.type.is_variable(w.args[0])||P.type.is_atom(w.args[0]))||w.indicator==="position/1"&&(P.type.is_variable(w.args[0])||P.type.is_stream_position(w.args[0]))||w.indicator==="reposition/1"&&(P.type.is_variable(w.args[0])||P.type.is_atom(w.args[0])&&(w.args[0].id==="true"||w.args[0].id==="false"))||w.indicator==="type/1"&&(P.type.is_variable(w.args[0])||P.type.is_atom(w.args[0])&&(w.args[0].id==="text"||w.args[0].id==="binary"))||w.indicator==="mode/1"&&(P.type.is_variable(w.args[0])||P.type.is_atom(w.args[0])&&(w.args[0].id==="read"||w.args[0].id==="write"||w.args[0].id==="append"))||w.indicator==="eof_action/1"&&(P.type.is_variable(w.args[0])||P.type.is_atom(w.args[0])&&(w.args[0].id==="error"||w.args[0].id==="eof_code"||w.args[0].id==="reset"))||w.indicator==="end_of_stream/1"&&(P.type.is_variable(w.args[0])||P.type.is_atom(w.args[0])&&(w.args[0].id==="at"||w.args[0].id==="past"||w.args[0].id==="not")))},is_streamable:function(w){return w.__proto__.stream!==void 0},is_read_option:function(w){return P.type.is_term(w)&&["variables/1","variable_names/1","singletons/1"].indexOf(w.indicator)!==-1},is_write_option:function(w){return P.type.is_term(w)&&(w.indicator==="quoted/1"&&P.type.is_atom(w.args[0])&&(w.args[0].id==="true"||w.args[0].id==="false")||w.indicator==="ignore_ops/1"&&P.type.is_atom(w.args[0])&&(w.args[0].id==="true"||w.args[0].id==="false")||w.indicator==="numbervars/1"&&P.type.is_atom(w.args[0])&&(w.args[0].id==="true"||w.args[0].id==="false"))},is_close_option:function(w){return P.type.is_term(w)&&w.indicator==="force/1"&&P.type.is_atom(w.args[0])&&(w.args[0].id==="true"||w.args[0].id==="false")},is_modifiable_flag:function(w){return P.type.is_flag(w)&&P.flag[w.id].changeable},is_module:function(w){return w instanceof _&&w.indicator==="library/1"&&w.args[0]instanceof _&&w.args[0].args.length===0&&P.module[w.args[0].id]!==void 0}},arithmetic:{evaluation:{"e/0":{type_args:null,type_result:!0,fn:function(w){return Math.E}},"pi/0":{type_args:null,type_result:!0,fn:function(w){return Math.PI}},"tau/0":{type_args:null,type_result:!0,fn:function(w){return 2*Math.PI}},"epsilon/0":{type_args:null,type_result:!0,fn:function(w){return Number.EPSILON}},"+/1":{type_args:null,type_result:null,fn:function(w,b){return w}},"-/1":{type_args:null,type_result:null,fn:function(w,b){return-w}},"\\/1":{type_args:!1,type_result:!1,fn:function(w,b){return~w}},"abs/1":{type_args:null,type_result:null,fn:function(w,b){return Math.abs(w)}},"sign/1":{type_args:null,type_result:null,fn:function(w,b){return Math.sign(w)}},"float_integer_part/1":{type_args:!0,type_result:!1,fn:function(w,b){return parseInt(w)}},"float_fractional_part/1":{type_args:!0,type_result:!0,fn:function(w,b){return w-parseInt(w)}},"float/1":{type_args:null,type_result:!0,fn:function(w,b){return parseFloat(w)}},"floor/1":{type_args:!0,type_result:!1,fn:function(w,b){return Math.floor(w)}},"truncate/1":{type_args:!0,type_result:!1,fn:function(w,b){return parseInt(w)}},"round/1":{type_args:!0,type_result:!1,fn:function(w,b){return Math.round(w)}},"ceiling/1":{type_args:!0,type_result:!1,fn:function(w,b){return Math.ceil(w)}},"sin/1":{type_args:null,type_result:!0,fn:function(w,b){return Math.sin(w)}},"cos/1":{type_args:null,type_result:!0,fn:function(w,b){return Math.cos(w)}},"tan/1":{type_args:null,type_result:!0,fn:function(w,b){return Math.tan(w)}},"asin/1":{type_args:null,type_result:!0,fn:function(w,b){return Math.asin(w)}},"acos/1":{type_args:null,type_result:!0,fn:function(w,b){return Math.acos(w)}},"atan/1":{type_args:null,type_result:!0,fn:function(w,b){return Math.atan(w)}},"atan2/2":{type_args:null,type_result:!0,fn:function(w,b,y){return Math.atan2(w,b)}},"exp/1":{type_args:null,type_result:!0,fn:function(w,b){return Math.exp(w)}},"sqrt/1":{type_args:null,type_result:!0,fn:function(w,b){return Math.sqrt(w)}},"log/1":{type_args:null,type_result:!0,fn:function(w,b){return w>0?Math.log(w):P.error.evaluation("undefined",b.__call_indicator)}},"+/2":{type_args:null,type_result:null,fn:function(w,b,y){return w+b}},"-/2":{type_args:null,type_result:null,fn:function(w,b,y){return w-b}},"*/2":{type_args:null,type_result:null,fn:function(w,b,y){return w*b}},"//2":{type_args:null,type_result:!0,fn:function(w,b,y){return b?w/b:P.error.evaluation("zero_division",y.__call_indicator)}},"///2":{type_args:!1,type_result:!1,fn:function(w,b,y){return b?parseInt(w/b):P.error.evaluation("zero_division",y.__call_indicator)}},"**/2":{type_args:null,type_result:!0,fn:function(w,b,y){return Math.pow(w,b)}},"^/2":{type_args:null,type_result:null,fn:function(w,b,y){return Math.pow(w,b)}},"<>/2":{type_args:!1,type_result:!1,fn:function(w,b,y){return w>>b}},"/\\/2":{type_args:!1,type_result:!1,fn:function(w,b,y){return w&b}},"\\//2":{type_args:!1,type_result:!1,fn:function(w,b,y){return w|b}},"xor/2":{type_args:!1,type_result:!1,fn:function(w,b,y){return w^b}},"rem/2":{type_args:!1,type_result:!1,fn:function(w,b,y){return b?w%b:P.error.evaluation("zero_division",y.__call_indicator)}},"mod/2":{type_args:!1,type_result:!1,fn:function(w,b,y){return b?w-parseInt(w/b)*b:P.error.evaluation("zero_division",y.__call_indicator)}},"max/2":{type_args:null,type_result:null,fn:function(w,b,y){return Math.max(w,b)}},"min/2":{type_args:null,type_result:null,fn:function(w,b,y){return Math.min(w,b)}}}},directive:{"dynamic/1":function(w,b){var y=b.args[0];if(P.type.is_variable(y))w.throw_error(P.error.instantiation(b.indicator));else if(!P.type.is_compound(y)||y.indicator!=="//2")w.throw_error(P.error.type("predicate_indicator",y,b.indicator));else if(P.type.is_variable(y.args[0])||P.type.is_variable(y.args[1]))w.throw_error(P.error.instantiation(b.indicator));else if(!P.type.is_atom(y.args[0]))w.throw_error(P.error.type("atom",y.args[0],b.indicator));else if(!P.type.is_integer(y.args[1]))w.throw_error(P.error.type("integer",y.args[1],b.indicator));else{var F=b.args[0].args[0].id+"/"+b.args[0].args[1].value;w.session.public_predicates[F]=!0,w.session.rules[F]||(w.session.rules[F]=[])}},"multifile/1":function(w,b){var y=b.args[0];P.type.is_variable(y)?w.throw_error(P.error.instantiation(b.indicator)):!P.type.is_compound(y)||y.indicator!=="//2"?w.throw_error(P.error.type("predicate_indicator",y,b.indicator)):P.type.is_variable(y.args[0])||P.type.is_variable(y.args[1])?w.throw_error(P.error.instantiation(b.indicator)):P.type.is_atom(y.args[0])?P.type.is_integer(y.args[1])?w.session.multifile_predicates[b.args[0].args[0].id+"/"+b.args[0].args[1].value]=!0:w.throw_error(P.error.type("integer",y.args[1],b.indicator)):w.throw_error(P.error.type("atom",y.args[0],b.indicator))},"set_prolog_flag/2":function(w,b){var y=b.args[0],F=b.args[1];P.type.is_variable(y)||P.type.is_variable(F)?w.throw_error(P.error.instantiation(b.indicator)):P.type.is_atom(y)?P.type.is_flag(y)?P.type.is_value_flag(y,F)?P.type.is_modifiable_flag(y)?w.session.flag[y.id]=F:w.throw_error(P.error.permission("modify","flag",y)):w.throw_error(P.error.domain("flag_value",new _("+",[y,F]),b.indicator)):w.throw_error(P.error.domain("prolog_flag",y,b.indicator)):w.throw_error(P.error.type("atom",y,b.indicator))},"use_module/1":function(w,b){var y=b.args[0];if(P.type.is_variable(y))w.throw_error(P.error.instantiation(b.indicator));else if(!P.type.is_term(y))w.throw_error(P.error.type("term",y,b.indicator));else if(P.type.is_module(y)){var F=y.args[0].id;t(w.session.modules,F)===-1&&w.session.modules.push(F)}},"char_conversion/2":function(w,b){var y=b.args[0],F=b.args[1];P.type.is_variable(y)||P.type.is_variable(F)?w.throw_error(P.error.instantiation(b.indicator)):P.type.is_character(y)?P.type.is_character(F)?y.id===F.id?delete w.session.__char_conversion[y.id]:w.session.__char_conversion[y.id]=F.id:w.throw_error(P.error.type("character",F,b.indicator)):w.throw_error(P.error.type("character",y,b.indicator))},"op/3":function(w,b){var y=b.args[0],F=b.args[1],z=b.args[2];if(P.type.is_variable(y)||P.type.is_variable(F)||P.type.is_variable(z))w.throw_error(P.error.instantiation(b.indicator));else if(!P.type.is_integer(y))w.throw_error(P.error.type("integer",y,b.indicator));else if(!P.type.is_atom(F))w.throw_error(P.error.type("atom",F,b.indicator));else if(!P.type.is_atom(z))w.throw_error(P.error.type("atom",z,b.indicator));else if(y.value<0||y.value>1200)w.throw_error(P.error.domain("operator_priority",y,b.indicator));else if(z.id===",")w.throw_error(P.error.permission("modify","operator",z,b.indicator));else if(z.id==="|"&&(y.value<1001||F.id.length!==3))w.throw_error(P.error.permission("modify","operator",z,b.indicator));else if(["fy","fx","yf","xf","xfx","yfx","xfy"].indexOf(F.id)===-1)w.throw_error(P.error.domain("operator_specifier",F,b.indicator));else{var X={prefix:null,infix:null,postfix:null};for(var $ in w.session.__operators)if(w.session.__operators.hasOwnProperty($)){var se=w.session.__operators[$][z.id];se&&(t(se,"fx")!==-1&&(X.prefix={priority:$,type:"fx"}),t(se,"fy")!==-1&&(X.prefix={priority:$,type:"fy"}),t(se,"xf")!==-1&&(X.postfix={priority:$,type:"xf"}),t(se,"yf")!==-1&&(X.postfix={priority:$,type:"yf"}),t(se,"xfx")!==-1&&(X.infix={priority:$,type:"xfx"}),t(se,"xfy")!==-1&&(X.infix={priority:$,type:"xfy"}),t(se,"yfx")!==-1&&(X.infix={priority:$,type:"yfx"}))}var xe;switch(F.id){case"fy":case"fx":xe="prefix";break;case"yf":case"xf":xe="postfix";break;default:xe="infix";break}if(((X.prefix&&xe==="prefix"||X.postfix&&xe==="postfix"||X.infix&&xe==="infix")&&X[xe].type!==F.id||X.infix&&xe==="postfix"||X.postfix&&xe==="infix")&&y.value!==0)w.throw_error(P.error.permission("create","operator",z,b.indicator));else return X[xe]&&(Se(w.session.__operators[X[xe].priority][z.id],F.id),w.session.__operators[X[xe].priority][z.id].length===0&&delete w.session.__operators[X[xe].priority][z.id]),y.value>0&&(w.session.__operators[y.value]||(w.session.__operators[y.value.toString()]={}),w.session.__operators[y.value][z.id]||(w.session.__operators[y.value][z.id]=[]),w.session.__operators[y.value][z.id].push(F.id)),!0}}},predicate:{"op/3":function(w,b,y){P.directive["op/3"](w,y)&&w.success(b)},"current_op/3":function(w,b,y){var F=y.args[0],z=y.args[1],X=y.args[2],$=[];for(var se in w.session.__operators)for(var xe in w.session.__operators[se])for(var Fe=0;Fe/2"){var F=w.points,z=w.session.format_success,X=w.session.format_error;w.session.format_success=function(Fe){return Fe.substitution},w.session.format_error=function(Fe){return Fe.goal},w.points=[new be(y.args[0].args[0],b.substitution,b)];var $=function(Fe){w.points=F,w.session.format_success=z,w.session.format_error=X,Fe===!1?w.prepend([new be(b.goal.replace(y.args[1]),b.substitution,b)]):P.type.is_error(Fe)?w.throw_error(Fe.args[0]):Fe===null?(w.prepend([b]),w.__calls.shift()(null)):w.prepend([new be(b.goal.replace(y.args[0].args[1]).apply(Fe),b.substitution.apply(Fe),b)])};w.__calls.unshift($)}else{var se=new be(b.goal.replace(y.args[0]),b.substitution,b),xe=new be(b.goal.replace(y.args[1]),b.substitution,b);w.prepend([se,xe])}},"!/0":function(w,b,y){var F,z,X=[];for(F=b,z=null;F.parent!==null&&F.parent.goal.search(y);)if(z=F,F=F.parent,F.goal!==null){var $=F.goal.select();if($&&$.id==="call"&&$.search(y)){F=z;break}}for(var se=w.points.length-1;se>=0;se--){for(var xe=w.points[se],Fe=xe.parent;Fe!==null&&Fe!==F.parent;)Fe=Fe.parent;Fe===null&&Fe!==F.parent&&X.push(xe)}w.points=X.reverse(),w.success(b)},"\\+/1":function(w,b,y){var F=y.args[0];P.type.is_variable(F)?w.throw_error(P.error.instantiation(w.level)):P.type.is_callable(F)?w.prepend([new be(b.goal.replace(new _(",",[new _(",",[new _("call",[F]),new _("!",[])]),new _("fail",[])])),b.substitution,b),new be(b.goal.replace(null),b.substitution,b)]):w.throw_error(P.error.type("callable",F,w.level))},"->/2":function(w,b,y){var F=b.goal.replace(new _(",",[y.args[0],new _(",",[new _("!"),y.args[1]])]));w.prepend([new be(F,b.substitution,b)])},"fail/0":function(w,b,y){},"false/0":function(w,b,y){},"true/0":function(w,b,y){w.success(b)},"call/1":ce(1),"call/2":ce(2),"call/3":ce(3),"call/4":ce(4),"call/5":ce(5),"call/6":ce(6),"call/7":ce(7),"call/8":ce(8),"once/1":function(w,b,y){var F=y.args[0];w.prepend([new be(b.goal.replace(new _(",",[new _("call",[F]),new _("!",[])])),b.substitution,b)])},"forall/2":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new be(b.goal.replace(new _("\\+",[new _(",",[new _("call",[F]),new _("\\+",[new _("call",[z])])])])),b.substitution,b)])},"repeat/0":function(w,b,y){w.prepend([new be(b.goal.replace(null),b.substitution,b),b])},"throw/1":function(w,b,y){P.type.is_variable(y.args[0])?w.throw_error(P.error.instantiation(w.level)):w.throw_error(y.args[0])},"catch/3":function(w,b,y){var F=w.points;w.points=[],w.prepend([new be(y.args[0],b.substitution,b)]);var z=w.session.format_success,X=w.session.format_error;w.session.format_success=function(se){return se.substitution},w.session.format_error=function(se){return se.goal};var $=function(se){var xe=w.points;if(w.points=F,w.session.format_success=z,w.session.format_error=X,P.type.is_error(se)){for(var Fe=[],ut=w.points.length-1;ut>=0;ut--){for(var ir=w.points[ut],Ct=ir.parent;Ct!==null&&Ct!==b.parent;)Ct=Ct.parent;Ct===null&&Ct!==b.parent&&Fe.push(ir)}w.points=Fe;var qt=w.get_flag("occurs_check").indicator==="true/0",ir=new be,Pt=P.unify(se.args[0],y.args[1],qt);Pt!==null?(ir.substitution=b.substitution.apply(Pt),ir.goal=b.goal.replace(y.args[2]).apply(Pt),ir.parent=b,w.prepend([ir])):w.throw_error(se.args[0])}else if(se!==!1){for(var gn=se===null?[]:[new be(b.goal.apply(se).replace(null),b.substitution.apply(se),b)],Pr=[],ut=xe.length-1;ut>=0;ut--){Pr.push(xe[ut]);var Cr=xe[ut].goal!==null?xe[ut].goal.select():null;if(P.type.is_term(Cr)&&Cr.indicator==="!/0")break}var Or=s(Pr,function(on){return on.goal===null&&(on.goal=new _("true",[])),on=new be(b.goal.replace(new _("catch",[on.goal,y.args[1],y.args[2]])),b.substitution.apply(on.substitution),on.parent),on.exclude=y.args[0].variables(),on}).reverse();w.prepend(Or),w.prepend(gn),se===null&&(this.current_limit=0,w.__calls.shift()(null))}};w.__calls.unshift($)},"=/2":function(w,b,y){var F=w.get_flag("occurs_check").indicator==="true/0",z=new be,X=P.unify(y.args[0],y.args[1],F);X!==null&&(z.goal=b.goal.apply(X).replace(null),z.substitution=b.substitution.apply(X),z.parent=b,w.prepend([z]))},"unify_with_occurs_check/2":function(w,b,y){var F=new be,z=P.unify(y.args[0],y.args[1],!0);z!==null&&(F.goal=b.goal.apply(z).replace(null),F.substitution=b.substitution.apply(z),F.parent=b,w.prepend([F]))},"\\=/2":function(w,b,y){var F=w.get_flag("occurs_check").indicator==="true/0",z=P.unify(y.args[0],y.args[1],F);z===null&&w.success(b)},"subsumes_term/2":function(w,b,y){var F=w.get_flag("occurs_check").indicator==="true/0",z=P.unify(y.args[1],y.args[0],F);z!==null&&y.args[1].apply(z).equals(y.args[1])&&w.success(b)},"findall/3":function(w,b,y){var F=y.args[0],z=y.args[1],X=y.args[2];if(P.type.is_variable(z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_callable(z))w.throw_error(P.error.type("callable",z,y.indicator));else if(!P.type.is_variable(X)&&!P.type.is_list(X))w.throw_error(P.error.type("list",X,y.indicator));else{var $=w.next_free_variable(),se=new _(",",[z,new _("=",[$,F])]),xe=w.points,Fe=w.session.limit,ut=w.session.format_success;w.session.format_success=function(ir){return ir.substitution},w.add_goal(se,!0,b);var Ct=[],qt=function(ir){if(ir!==!1&&ir!==null&&!P.type.is_error(ir))w.__calls.unshift(qt),Ct.push(ir.links[$.id]),w.session.limit=w.current_limit;else if(w.points=xe,w.session.limit=Fe,w.session.format_success=ut,P.type.is_error(ir))w.throw_error(ir.args[0]);else if(w.current_limit>0){for(var Pt=new _("[]"),gn=Ct.length-1;gn>=0;gn--)Pt=new _(".",[Ct[gn],Pt]);w.prepend([new be(b.goal.replace(new _("=",[X,Pt])),b.substitution,b)])}};w.__calls.unshift(qt)}},"bagof/3":function(w,b,y){var F,z=y.args[0],X=y.args[1],$=y.args[2];if(P.type.is_variable(X))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_callable(X))w.throw_error(P.error.type("callable",X,y.indicator));else if(!P.type.is_variable($)&&!P.type.is_list($))w.throw_error(P.error.type("list",$,y.indicator));else{var se=w.next_free_variable(),xe;X.indicator==="^/2"?(xe=X.args[0].variables(),X=X.args[1]):xe=[],xe=xe.concat(z.variables());for(var Fe=X.variables().filter(function(Or){return t(xe,Or)===-1}),ut=new _("[]"),Ct=Fe.length-1;Ct>=0;Ct--)ut=new _(".",[new De(Fe[Ct]),ut]);var qt=new _(",",[X,new _("=",[se,new _(",",[ut,z])])]),ir=w.points,Pt=w.session.limit,gn=w.session.format_success;w.session.format_success=function(Or){return Or.substitution},w.add_goal(qt,!0,b);var Pr=[],Cr=function(Or){if(Or!==!1&&Or!==null&&!P.type.is_error(Or)){w.__calls.unshift(Cr);var on=!1,li=Or.links[se.id].args[0],Do=Or.links[se.id].args[1];for(var ns in Pr)if(Pr.hasOwnProperty(ns)){var so=Pr[ns];if(so.variables.equals(li)){so.answers.push(Do),on=!0;break}}on||Pr.push({variables:li,answers:[Do]}),w.session.limit=w.current_limit}else if(w.points=ir,w.session.limit=Pt,w.session.format_success=gn,P.type.is_error(Or))w.throw_error(Or.args[0]);else if(w.current_limit>0){for(var bo=[],ji=0;ji=0;Po--)oo=new _(".",[Or[Po],oo]);bo.push(new be(b.goal.replace(new _(",",[new _("=",[ut,Pr[ji].variables]),new _("=",[$,oo])])),b.substitution,b))}w.prepend(bo)}};w.__calls.unshift(Cr)}},"setof/3":function(w,b,y){var F,z=y.args[0],X=y.args[1],$=y.args[2];if(P.type.is_variable(X))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_callable(X))w.throw_error(P.error.type("callable",X,y.indicator));else if(!P.type.is_variable($)&&!P.type.is_list($))w.throw_error(P.error.type("list",$,y.indicator));else{var se=w.next_free_variable(),xe;X.indicator==="^/2"?(xe=X.args[0].variables(),X=X.args[1]):xe=[],xe=xe.concat(z.variables());for(var Fe=X.variables().filter(function(Or){return t(xe,Or)===-1}),ut=new _("[]"),Ct=Fe.length-1;Ct>=0;Ct--)ut=new _(".",[new De(Fe[Ct]),ut]);var qt=new _(",",[X,new _("=",[se,new _(",",[ut,z])])]),ir=w.points,Pt=w.session.limit,gn=w.session.format_success;w.session.format_success=function(Or){return Or.substitution},w.add_goal(qt,!0,b);var Pr=[],Cr=function(Or){if(Or!==!1&&Or!==null&&!P.type.is_error(Or)){w.__calls.unshift(Cr);var on=!1,li=Or.links[se.id].args[0],Do=Or.links[se.id].args[1];for(var ns in Pr)if(Pr.hasOwnProperty(ns)){var so=Pr[ns];if(so.variables.equals(li)){so.answers.push(Do),on=!0;break}}on||Pr.push({variables:li,answers:[Do]}),w.session.limit=w.current_limit}else if(w.points=ir,w.session.limit=Pt,w.session.format_success=gn,P.type.is_error(Or))w.throw_error(Or.args[0]);else if(w.current_limit>0){for(var bo=[],ji=0;ji=0;Po--)oo=new _(".",[Or[Po],oo]);bo.push(new be(b.goal.replace(new _(",",[new _("=",[ut,Pr[ji].variables]),new _("=",[$,oo])])),b.substitution,b))}w.prepend(bo)}};w.__calls.unshift(Cr)}},"functor/3":function(w,b,y){var F,z=y.args[0],X=y.args[1],$=y.args[2];if(P.type.is_variable(z)&&(P.type.is_variable(X)||P.type.is_variable($)))w.throw_error(P.error.instantiation("functor/3"));else if(!P.type.is_variable($)&&!P.type.is_integer($))w.throw_error(P.error.type("integer",y.args[2],"functor/3"));else if(!P.type.is_variable(X)&&!P.type.is_atomic(X))w.throw_error(P.error.type("atomic",y.args[1],"functor/3"));else if(P.type.is_integer(X)&&P.type.is_integer($)&&$.value!==0)w.throw_error(P.error.type("atom",y.args[1],"functor/3"));else if(P.type.is_variable(z)){if(y.args[2].value>=0){for(var se=[],xe=0;xe<$.value;xe++)se.push(w.next_free_variable());var Fe=P.type.is_integer(X)?X:new _(X.id,se);w.prepend([new be(b.goal.replace(new _("=",[z,Fe])),b.substitution,b)])}}else{var ut=P.type.is_integer(z)?z:new _(z.id,[]),Ct=P.type.is_integer(z)?new Qe(0,!1):new Qe(z.args.length,!1),qt=new _(",",[new _("=",[ut,X]),new _("=",[Ct,$])]);w.prepend([new be(b.goal.replace(qt),b.substitution,b)])}},"arg/3":function(w,b,y){if(P.type.is_variable(y.args[0])||P.type.is_variable(y.args[1]))w.throw_error(P.error.instantiation(y.indicator));else if(y.args[0].value<0)w.throw_error(P.error.domain("not_less_than_zero",y.args[0],y.indicator));else if(!P.type.is_compound(y.args[1]))w.throw_error(P.error.type("compound",y.args[1],y.indicator));else{var F=y.args[0].value;if(F>0&&F<=y.args[1].args.length){var z=new _("=",[y.args[1].args[F-1],y.args[2]]);w.prepend([new be(b.goal.replace(z),b.substitution,b)])}}},"=../2":function(w,b,y){var F;if(P.type.is_variable(y.args[0])&&(P.type.is_variable(y.args[1])||P.type.is_non_empty_list(y.args[1])&&P.type.is_variable(y.args[1].args[0])))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_fully_list(y.args[1]))w.throw_error(P.error.type("list",y.args[1],y.indicator));else if(P.type.is_variable(y.args[0])){if(!P.type.is_variable(y.args[1])){var X=[];for(F=y.args[1].args[1];F.indicator==="./2";)X.push(F.args[0]),F=F.args[1];P.type.is_variable(y.args[0])&&P.type.is_variable(F)?w.throw_error(P.error.instantiation(y.indicator)):X.length===0&&P.type.is_compound(y.args[1].args[0])?w.throw_error(P.error.type("atomic",y.args[1].args[0],y.indicator)):X.length>0&&(P.type.is_compound(y.args[1].args[0])||P.type.is_number(y.args[1].args[0]))?w.throw_error(P.error.type("atom",y.args[1].args[0],y.indicator)):X.length===0?w.prepend([new be(b.goal.replace(new _("=",[y.args[1].args[0],y.args[0]],b)),b.substitution,b)]):w.prepend([new be(b.goal.replace(new _("=",[new _(y.args[1].args[0].id,X),y.args[0]])),b.substitution,b)])}}else{if(P.type.is_atomic(y.args[0]))F=new _(".",[y.args[0],new _("[]")]);else{F=new _("[]");for(var z=y.args[0].args.length-1;z>=0;z--)F=new _(".",[y.args[0].args[z],F]);F=new _(".",[new _(y.args[0].id),F])}w.prepend([new be(b.goal.replace(new _("=",[F,y.args[1]])),b.substitution,b)])}},"copy_term/2":function(w,b,y){var F=y.args[0].rename(w);w.prepend([new be(b.goal.replace(new _("=",[F,y.args[1]])),b.substitution,b.parent)])},"term_variables/2":function(w,b,y){var F=y.args[0],z=y.args[1];if(!P.type.is_fully_list(z))w.throw_error(P.error.type("list",z,y.indicator));else{var X=d(s(Be(F.variables()),function($){return new De($)}));w.prepend([new be(b.goal.replace(new _("=",[z,X])),b.substitution,b)])}},"clause/2":function(w,b,y){if(P.type.is_variable(y.args[0]))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_callable(y.args[0]))w.throw_error(P.error.type("callable",y.args[0],y.indicator));else if(!P.type.is_variable(y.args[1])&&!P.type.is_callable(y.args[1]))w.throw_error(P.error.type("callable",y.args[1],y.indicator));else if(w.session.rules[y.args[0].indicator]!==void 0)if(w.is_public_predicate(y.args[0].indicator)){var F=[];for(var z in w.session.rules[y.args[0].indicator])if(w.session.rules[y.args[0].indicator].hasOwnProperty(z)){var X=w.session.rules[y.args[0].indicator][z];w.session.renamed_variables={},X=X.rename(w),X.body===null&&(X.body=new _("true"));var $=new _(",",[new _("=",[X.head,y.args[0]]),new _("=",[X.body,y.args[1]])]);F.push(new be(b.goal.replace($),b.substitution,b))}w.prepend(F)}else w.throw_error(P.error.permission("access","private_procedure",y.args[0].indicator,y.indicator))},"current_predicate/1":function(w,b,y){var F=y.args[0];if(!P.type.is_variable(F)&&(!P.type.is_compound(F)||F.indicator!=="//2"))w.throw_error(P.error.type("predicate_indicator",F,y.indicator));else if(!P.type.is_variable(F)&&!P.type.is_variable(F.args[0])&&!P.type.is_atom(F.args[0]))w.throw_error(P.error.type("atom",F.args[0],y.indicator));else if(!P.type.is_variable(F)&&!P.type.is_variable(F.args[1])&&!P.type.is_integer(F.args[1]))w.throw_error(P.error.type("integer",F.args[1],y.indicator));else{var z=[];for(var X in w.session.rules)if(w.session.rules.hasOwnProperty(X)){var $=X.lastIndexOf("/"),se=X.substr(0,$),xe=parseInt(X.substr($+1,X.length-($+1))),Fe=new _("/",[new _(se),new Qe(xe,!1)]),ut=new _("=",[Fe,F]);z.push(new be(b.goal.replace(ut),b.substitution,b))}w.prepend(z)}},"asserta/1":function(w,b,y){if(P.type.is_variable(y.args[0]))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_callable(y.args[0]))w.throw_error(P.error.type("callable",y.args[0],y.indicator));else{var F,z;y.args[0].indicator===":-/2"?(F=y.args[0].args[0],z=Ee(y.args[0].args[1])):(F=y.args[0],z=null),P.type.is_callable(F)?z!==null&&!P.type.is_callable(z)?w.throw_error(P.error.type("callable",z,y.indicator)):w.is_public_predicate(F.indicator)?(w.session.rules[F.indicator]===void 0&&(w.session.rules[F.indicator]=[]),w.session.public_predicates[F.indicator]=!0,w.session.rules[F.indicator]=[new je(F,z,!0)].concat(w.session.rules[F.indicator]),w.success(b)):w.throw_error(P.error.permission("modify","static_procedure",F.indicator,y.indicator)):w.throw_error(P.error.type("callable",F,y.indicator))}},"assertz/1":function(w,b,y){if(P.type.is_variable(y.args[0]))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_callable(y.args[0]))w.throw_error(P.error.type("callable",y.args[0],y.indicator));else{var F,z;y.args[0].indicator===":-/2"?(F=y.args[0].args[0],z=Ee(y.args[0].args[1])):(F=y.args[0],z=null),P.type.is_callable(F)?z!==null&&!P.type.is_callable(z)?w.throw_error(P.error.type("callable",z,y.indicator)):w.is_public_predicate(F.indicator)?(w.session.rules[F.indicator]===void 0&&(w.session.rules[F.indicator]=[]),w.session.public_predicates[F.indicator]=!0,w.session.rules[F.indicator].push(new je(F,z,!0)),w.success(b)):w.throw_error(P.error.permission("modify","static_procedure",F.indicator,y.indicator)):w.throw_error(P.error.type("callable",F,y.indicator))}},"retract/1":function(w,b,y){if(P.type.is_variable(y.args[0]))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_callable(y.args[0]))w.throw_error(P.error.type("callable",y.args[0],y.indicator));else{var F,z;if(y.args[0].indicator===":-/2"?(F=y.args[0].args[0],z=y.args[0].args[1]):(F=y.args[0],z=new _("true")),typeof b.retract>"u")if(w.is_public_predicate(F.indicator)){if(w.session.rules[F.indicator]!==void 0){for(var X=[],$=0;$w.get_flag("max_arity").value)w.throw_error(P.error.representation("max_arity",y.indicator));else{var F=y.args[0].args[0].id+"/"+y.args[0].args[1].value;w.is_public_predicate(F)?(delete w.session.rules[F],w.success(b)):w.throw_error(P.error.permission("modify","static_procedure",F,y.indicator))}},"atom_length/2":function(w,b,y){if(P.type.is_variable(y.args[0]))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_atom(y.args[0]))w.throw_error(P.error.type("atom",y.args[0],y.indicator));else if(!P.type.is_variable(y.args[1])&&!P.type.is_integer(y.args[1]))w.throw_error(P.error.type("integer",y.args[1],y.indicator));else if(P.type.is_integer(y.args[1])&&y.args[1].value<0)w.throw_error(P.error.domain("not_less_than_zero",y.args[1],y.indicator));else{var F=new Qe(y.args[0].id.length,!1);w.prepend([new be(b.goal.replace(new _("=",[F,y.args[1]])),b.substitution,b)])}},"atom_concat/3":function(w,b,y){var F,z,X=y.args[0],$=y.args[1],se=y.args[2];if(P.type.is_variable(se)&&(P.type.is_variable(X)||P.type.is_variable($)))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_variable(X)&&!P.type.is_atom(X))w.throw_error(P.error.type("atom",X,y.indicator));else if(!P.type.is_variable($)&&!P.type.is_atom($))w.throw_error(P.error.type("atom",$,y.indicator));else if(!P.type.is_variable(se)&&!P.type.is_atom(se))w.throw_error(P.error.type("atom",se,y.indicator));else{var xe=P.type.is_variable(X),Fe=P.type.is_variable($);if(!xe&&!Fe)z=new _("=",[se,new _(X.id+$.id)]),w.prepend([new be(b.goal.replace(z),b.substitution,b)]);else if(xe&&!Fe)F=se.id.substr(0,se.id.length-$.id.length),F+$.id===se.id&&(z=new _("=",[X,new _(F)]),w.prepend([new be(b.goal.replace(z),b.substitution,b)]));else if(Fe&&!xe)F=se.id.substr(X.id.length),X.id+F===se.id&&(z=new _("=",[$,new _(F)]),w.prepend([new be(b.goal.replace(z),b.substitution,b)]));else{for(var ut=[],Ct=0;Ct<=se.id.length;Ct++){var qt=new _(se.id.substr(0,Ct)),ir=new _(se.id.substr(Ct));z=new _(",",[new _("=",[qt,X]),new _("=",[ir,$])]),ut.push(new be(b.goal.replace(z),b.substitution,b))}w.prepend(ut)}}},"sub_atom/5":function(w,b,y){var F,z=y.args[0],X=y.args[1],$=y.args[2],se=y.args[3],xe=y.args[4];if(P.type.is_variable(z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_variable(X)&&!P.type.is_integer(X))w.throw_error(P.error.type("integer",X,y.indicator));else if(!P.type.is_variable($)&&!P.type.is_integer($))w.throw_error(P.error.type("integer",$,y.indicator));else if(!P.type.is_variable(se)&&!P.type.is_integer(se))w.throw_error(P.error.type("integer",se,y.indicator));else if(P.type.is_integer(X)&&X.value<0)w.throw_error(P.error.domain("not_less_than_zero",X,y.indicator));else if(P.type.is_integer($)&&$.value<0)w.throw_error(P.error.domain("not_less_than_zero",$,y.indicator));else if(P.type.is_integer(se)&&se.value<0)w.throw_error(P.error.domain("not_less_than_zero",se,y.indicator));else{var Fe=[],ut=[],Ct=[];if(P.type.is_variable(X))for(F=0;F<=z.id.length;F++)Fe.push(F);else Fe.push(X.value);if(P.type.is_variable($))for(F=0;F<=z.id.length;F++)ut.push(F);else ut.push($.value);if(P.type.is_variable(se))for(F=0;F<=z.id.length;F++)Ct.push(F);else Ct.push(se.value);var qt=[];for(var ir in Fe)if(Fe.hasOwnProperty(ir)){F=Fe[ir];for(var Pt in ut)if(ut.hasOwnProperty(Pt)){var gn=ut[Pt],Pr=z.id.length-F-gn;if(t(Ct,Pr)!==-1&&F+gn+Pr===z.id.length){var Cr=z.id.substr(F,gn);if(z.id===z.id.substr(0,F)+Cr+z.id.substr(F+gn,Pr)){var Or=new _("=",[new _(Cr),xe]),on=new _("=",[X,new Qe(F)]),li=new _("=",[$,new Qe(gn)]),Do=new _("=",[se,new Qe(Pr)]),ns=new _(",",[new _(",",[new _(",",[on,li]),Do]),Or]);qt.push(new be(b.goal.replace(ns),b.substitution,b))}}}}w.prepend(qt)}},"atom_chars/2":function(w,b,y){var F=y.args[0],z=y.args[1];if(P.type.is_variable(F)&&P.type.is_variable(z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_variable(F)&&!P.type.is_atom(F))w.throw_error(P.error.type("atom",F,y.indicator));else if(P.type.is_variable(F)){for(var se=z,xe=P.type.is_variable(F),Fe="";se.indicator==="./2";){if(P.type.is_character(se.args[0]))Fe+=se.args[0].id;else if(P.type.is_variable(se.args[0])&&xe){w.throw_error(P.error.instantiation(y.indicator));return}else if(!P.type.is_variable(se.args[0])){w.throw_error(P.error.type("character",se.args[0],y.indicator));return}se=se.args[1]}P.type.is_variable(se)&&xe?w.throw_error(P.error.instantiation(y.indicator)):!P.type.is_empty_list(se)&&!P.type.is_variable(se)?w.throw_error(P.error.type("list",z,y.indicator)):w.prepend([new be(b.goal.replace(new _("=",[new _(Fe),F])),b.substitution,b)])}else{for(var X=new _("[]"),$=F.id.length-1;$>=0;$--)X=new _(".",[new _(F.id.charAt($)),X]);w.prepend([new be(b.goal.replace(new _("=",[z,X])),b.substitution,b)])}},"atom_codes/2":function(w,b,y){var F=y.args[0],z=y.args[1];if(P.type.is_variable(F)&&P.type.is_variable(z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_variable(F)&&!P.type.is_atom(F))w.throw_error(P.error.type("atom",F,y.indicator));else if(P.type.is_variable(F)){for(var se=z,xe=P.type.is_variable(F),Fe="";se.indicator==="./2";){if(P.type.is_character_code(se.args[0]))Fe+=c(se.args[0].value);else if(P.type.is_variable(se.args[0])&&xe){w.throw_error(P.error.instantiation(y.indicator));return}else if(!P.type.is_variable(se.args[0])){w.throw_error(P.error.representation("character_code",y.indicator));return}se=se.args[1]}P.type.is_variable(se)&&xe?w.throw_error(P.error.instantiation(y.indicator)):!P.type.is_empty_list(se)&&!P.type.is_variable(se)?w.throw_error(P.error.type("list",z,y.indicator)):w.prepend([new be(b.goal.replace(new _("=",[new _(Fe),F])),b.substitution,b)])}else{for(var X=new _("[]"),$=F.id.length-1;$>=0;$--)X=new _(".",[new Qe(n(F.id,$),!1),X]);w.prepend([new be(b.goal.replace(new _("=",[z,X])),b.substitution,b)])}},"char_code/2":function(w,b,y){var F=y.args[0],z=y.args[1];if(P.type.is_variable(F)&&P.type.is_variable(z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_variable(F)&&!P.type.is_character(F))w.throw_error(P.error.type("character",F,y.indicator));else if(!P.type.is_variable(z)&&!P.type.is_integer(z))w.throw_error(P.error.type("integer",z,y.indicator));else if(!P.type.is_variable(z)&&!P.type.is_character_code(z))w.throw_error(P.error.representation("character_code",y.indicator));else if(P.type.is_variable(z)){var X=new Qe(n(F.id,0),!1);w.prepend([new be(b.goal.replace(new _("=",[X,z])),b.substitution,b)])}else{var $=new _(c(z.value));w.prepend([new be(b.goal.replace(new _("=",[$,F])),b.substitution,b)])}},"number_chars/2":function(w,b,y){var F,z=y.args[0],X=y.args[1];if(P.type.is_variable(z)&&P.type.is_variable(X))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_variable(z)&&!P.type.is_number(z))w.throw_error(P.error.type("number",z,y.indicator));else if(!P.type.is_variable(X)&&!P.type.is_list(X))w.throw_error(P.error.type("list",X,y.indicator));else{var $=P.type.is_variable(z);if(!P.type.is_variable(X)){var se=X,xe=!0;for(F="";se.indicator==="./2";){if(P.type.is_character(se.args[0]))F+=se.args[0].id;else if(P.type.is_variable(se.args[0]))xe=!1;else if(!P.type.is_variable(se.args[0])){w.throw_error(P.error.type("character",se.args[0],y.indicator));return}se=se.args[1]}if(xe=xe&&P.type.is_empty_list(se),!P.type.is_empty_list(se)&&!P.type.is_variable(se)){w.throw_error(P.error.type("list",X,y.indicator));return}if(!xe&&$){w.throw_error(P.error.instantiation(y.indicator));return}else if(xe)if(P.type.is_variable(se)&&$){w.throw_error(P.error.instantiation(y.indicator));return}else{var Fe=w.parse(F),ut=Fe.value;!P.type.is_number(ut)||Fe.tokens[Fe.tokens.length-1].space?w.throw_error(P.error.syntax_by_predicate("parseable_number",y.indicator)):w.prepend([new be(b.goal.replace(new _("=",[z,ut])),b.substitution,b)]);return}}if(!$){F=z.toString();for(var Ct=new _("[]"),qt=F.length-1;qt>=0;qt--)Ct=new _(".",[new _(F.charAt(qt)),Ct]);w.prepend([new be(b.goal.replace(new _("=",[X,Ct])),b.substitution,b)])}}},"number_codes/2":function(w,b,y){var F,z=y.args[0],X=y.args[1];if(P.type.is_variable(z)&&P.type.is_variable(X))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_variable(z)&&!P.type.is_number(z))w.throw_error(P.error.type("number",z,y.indicator));else if(!P.type.is_variable(X)&&!P.type.is_list(X))w.throw_error(P.error.type("list",X,y.indicator));else{var $=P.type.is_variable(z);if(!P.type.is_variable(X)){var se=X,xe=!0;for(F="";se.indicator==="./2";){if(P.type.is_character_code(se.args[0]))F+=c(se.args[0].value);else if(P.type.is_variable(se.args[0]))xe=!1;else if(!P.type.is_variable(se.args[0])){w.throw_error(P.error.type("character_code",se.args[0],y.indicator));return}se=se.args[1]}if(xe=xe&&P.type.is_empty_list(se),!P.type.is_empty_list(se)&&!P.type.is_variable(se)){w.throw_error(P.error.type("list",X,y.indicator));return}if(!xe&&$){w.throw_error(P.error.instantiation(y.indicator));return}else if(xe)if(P.type.is_variable(se)&&$){w.throw_error(P.error.instantiation(y.indicator));return}else{var Fe=w.parse(F),ut=Fe.value;!P.type.is_number(ut)||Fe.tokens[Fe.tokens.length-1].space?w.throw_error(P.error.syntax_by_predicate("parseable_number",y.indicator)):w.prepend([new be(b.goal.replace(new _("=",[z,ut])),b.substitution,b)]);return}}if(!$){F=z.toString();for(var Ct=new _("[]"),qt=F.length-1;qt>=0;qt--)Ct=new _(".",[new Qe(n(F,qt),!1),Ct]);w.prepend([new be(b.goal.replace(new _("=",[X,Ct])),b.substitution,b)])}}},"upcase_atom/2":function(w,b,y){var F=y.args[0],z=y.args[1];P.type.is_variable(F)?w.throw_error(P.error.instantiation(y.indicator)):P.type.is_atom(F)?!P.type.is_variable(z)&&!P.type.is_atom(z)?w.throw_error(P.error.type("atom",z,y.indicator)):w.prepend([new be(b.goal.replace(new _("=",[z,new _(F.id.toUpperCase(),[])])),b.substitution,b)]):w.throw_error(P.error.type("atom",F,y.indicator))},"downcase_atom/2":function(w,b,y){var F=y.args[0],z=y.args[1];P.type.is_variable(F)?w.throw_error(P.error.instantiation(y.indicator)):P.type.is_atom(F)?!P.type.is_variable(z)&&!P.type.is_atom(z)?w.throw_error(P.error.type("atom",z,y.indicator)):w.prepend([new be(b.goal.replace(new _("=",[z,new _(F.id.toLowerCase(),[])])),b.substitution,b)]):w.throw_error(P.error.type("atom",F,y.indicator))},"atomic_list_concat/2":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new be(b.goal.replace(new _("atomic_list_concat",[F,new _("",[]),z])),b.substitution,b)])},"atomic_list_concat/3":function(w,b,y){var F=y.args[0],z=y.args[1],X=y.args[2];if(P.type.is_variable(z)||P.type.is_variable(F)&&P.type.is_variable(X))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_variable(F)&&!P.type.is_list(F))w.throw_error(P.error.type("list",F,y.indicator));else if(!P.type.is_variable(X)&&!P.type.is_atom(X))w.throw_error(P.error.type("atom",X,y.indicator));else if(P.type.is_variable(X)){for(var se="",xe=F;P.type.is_term(xe)&&xe.indicator==="./2";){if(!P.type.is_atom(xe.args[0])&&!P.type.is_number(xe.args[0])){w.throw_error(P.error.type("atomic",xe.args[0],y.indicator));return}se!==""&&(se+=z.id),P.type.is_atom(xe.args[0])?se+=xe.args[0].id:se+=""+xe.args[0].value,xe=xe.args[1]}se=new _(se,[]),P.type.is_variable(xe)?w.throw_error(P.error.instantiation(y.indicator)):!P.type.is_term(xe)||xe.indicator!=="[]/0"?w.throw_error(P.error.type("list",F,y.indicator)):w.prepend([new be(b.goal.replace(new _("=",[se,X])),b.substitution,b)])}else{var $=d(s(X.id.split(z.id),function(Fe){return new _(Fe,[])}));w.prepend([new be(b.goal.replace(new _("=",[$,F])),b.substitution,b)])}},"@=/2":function(w,b,y){P.compare(y.args[0],y.args[1])>0&&w.success(b)},"@>=/2":function(w,b,y){P.compare(y.args[0],y.args[1])>=0&&w.success(b)},"compare/3":function(w,b,y){var F=y.args[0],z=y.args[1],X=y.args[2];if(!P.type.is_variable(F)&&!P.type.is_atom(F))w.throw_error(P.error.type("atom",F,y.indicator));else if(P.type.is_atom(F)&&["<",">","="].indexOf(F.id)===-1)w.throw_error(P.type.domain("order",F,y.indicator));else{var $=P.compare(z,X);$=$===0?"=":$===-1?"<":">",w.prepend([new be(b.goal.replace(new _("=",[F,new _($,[])])),b.substitution,b)])}},"is/2":function(w,b,y){var F=y.args[1].interpret(w);P.type.is_number(F)?w.prepend([new be(b.goal.replace(new _("=",[y.args[0],F],w.level)),b.substitution,b)]):w.throw_error(F)},"between/3":function(w,b,y){var F=y.args[0],z=y.args[1],X=y.args[2];if(P.type.is_variable(F)||P.type.is_variable(z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_integer(F))w.throw_error(P.error.type("integer",F,y.indicator));else if(!P.type.is_integer(z))w.throw_error(P.error.type("integer",z,y.indicator));else if(!P.type.is_variable(X)&&!P.type.is_integer(X))w.throw_error(P.error.type("integer",X,y.indicator));else if(P.type.is_variable(X)){var $=[new be(b.goal.replace(new _("=",[X,F])),b.substitution,b)];F.value=X.value&&w.success(b)},"succ/2":function(w,b,y){var F=y.args[0],z=y.args[1];P.type.is_variable(F)&&P.type.is_variable(z)?w.throw_error(P.error.instantiation(y.indicator)):!P.type.is_variable(F)&&!P.type.is_integer(F)?w.throw_error(P.error.type("integer",F,y.indicator)):!P.type.is_variable(z)&&!P.type.is_integer(z)?w.throw_error(P.error.type("integer",z,y.indicator)):!P.type.is_variable(F)&&F.value<0?w.throw_error(P.error.domain("not_less_than_zero",F,y.indicator)):!P.type.is_variable(z)&&z.value<0?w.throw_error(P.error.domain("not_less_than_zero",z,y.indicator)):(P.type.is_variable(z)||z.value>0)&&(P.type.is_variable(F)?w.prepend([new be(b.goal.replace(new _("=",[F,new Qe(z.value-1,!1)])),b.substitution,b)]):w.prepend([new be(b.goal.replace(new _("=",[z,new Qe(F.value+1,!1)])),b.substitution,b)]))},"=:=/2":function(w,b,y){var F=P.arithmetic_compare(w,y.args[0],y.args[1]);P.type.is_term(F)?w.throw_error(F):F===0&&w.success(b)},"=\\=/2":function(w,b,y){var F=P.arithmetic_compare(w,y.args[0],y.args[1]);P.type.is_term(F)?w.throw_error(F):F!==0&&w.success(b)},"/2":function(w,b,y){var F=P.arithmetic_compare(w,y.args[0],y.args[1]);P.type.is_term(F)?w.throw_error(F):F>0&&w.success(b)},">=/2":function(w,b,y){var F=P.arithmetic_compare(w,y.args[0],y.args[1]);P.type.is_term(F)?w.throw_error(F):F>=0&&w.success(b)},"var/1":function(w,b,y){P.type.is_variable(y.args[0])&&w.success(b)},"atom/1":function(w,b,y){P.type.is_atom(y.args[0])&&w.success(b)},"atomic/1":function(w,b,y){P.type.is_atomic(y.args[0])&&w.success(b)},"compound/1":function(w,b,y){P.type.is_compound(y.args[0])&&w.success(b)},"integer/1":function(w,b,y){P.type.is_integer(y.args[0])&&w.success(b)},"float/1":function(w,b,y){P.type.is_float(y.args[0])&&w.success(b)},"number/1":function(w,b,y){P.type.is_number(y.args[0])&&w.success(b)},"nonvar/1":function(w,b,y){P.type.is_variable(y.args[0])||w.success(b)},"ground/1":function(w,b,y){y.variables().length===0&&w.success(b)},"acyclic_term/1":function(w,b,y){for(var F=b.substitution.apply(b.substitution),z=y.args[0].variables(),X=0;X0?Pt[Pt.length-1]:null,Pt!==null&&(qt=V(w,Pt,0,w.__get_max_priority(),!1))}if(qt.type===p&&qt.len===Pt.length-1&&gn.value==="."){qt=qt.value.rename(w);var Pr=new _("=",[z,qt]);if(se.variables){var Cr=d(s(Be(qt.variables()),function(Or){return new De(Or)}));Pr=new _(",",[Pr,new _("=",[se.variables,Cr])])}if(se.variable_names){var Cr=d(s(Be(qt.variables()),function(on){var li;for(li in w.session.renamed_variables)if(w.session.renamed_variables.hasOwnProperty(li)&&w.session.renamed_variables[li]===on)break;return new _("=",[new _(li,[]),new De(on)])}));Pr=new _(",",[Pr,new _("=",[se.variable_names,Cr])])}if(se.singletons){var Cr=d(s(new je(qt,null).singleton_variables(),function(on){var li;for(li in w.session.renamed_variables)if(w.session.renamed_variables.hasOwnProperty(li)&&w.session.renamed_variables[li]===on)break;return new _("=",[new _(li,[]),new De(on)])}));Pr=new _(",",[Pr,new _("=",[se.singletons,Cr])])}w.prepend([new be(b.goal.replace(Pr),b.substitution,b)])}else qt.type===p?w.throw_error(P.error.syntax(Pt[qt.len],"unexpected token",!1)):w.throw_error(qt.value)}}},"write/1":function(w,b,y){var F=y.args[0];w.prepend([new be(b.goal.replace(new _(",",[new _("current_output",[new De("S")]),new _("write",[new De("S"),F])])),b.substitution,b)])},"write/2":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new be(b.goal.replace(new _("write_term",[F,z,new _(".",[new _("quoted",[new _("false",[])]),new _(".",[new _("ignore_ops",[new _("false")]),new _(".",[new _("numbervars",[new _("true")]),new _("[]",[])])])])])),b.substitution,b)])},"writeq/1":function(w,b,y){var F=y.args[0];w.prepend([new be(b.goal.replace(new _(",",[new _("current_output",[new De("S")]),new _("writeq",[new De("S"),F])])),b.substitution,b)])},"writeq/2":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new be(b.goal.replace(new _("write_term",[F,z,new _(".",[new _("quoted",[new _("true",[])]),new _(".",[new _("ignore_ops",[new _("false")]),new _(".",[new _("numbervars",[new _("true")]),new _("[]",[])])])])])),b.substitution,b)])},"write_canonical/1":function(w,b,y){var F=y.args[0];w.prepend([new be(b.goal.replace(new _(",",[new _("current_output",[new De("S")]),new _("write_canonical",[new De("S"),F])])),b.substitution,b)])},"write_canonical/2":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new be(b.goal.replace(new _("write_term",[F,z,new _(".",[new _("quoted",[new _("true",[])]),new _(".",[new _("ignore_ops",[new _("true")]),new _(".",[new _("numbervars",[new _("false")]),new _("[]",[])])])])])),b.substitution,b)])},"write_term/2":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new be(b.goal.replace(new _(",",[new _("current_output",[new De("S")]),new _("write_term",[new De("S"),F,z])])),b.substitution,b)])},"write_term/3":function(w,b,y){var F=y.args[0],z=y.args[1],X=y.args[2],$=P.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(P.type.is_variable(F)||P.type.is_variable(X))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_list(X))w.throw_error(P.error.type("list",X,y.indicator));else if(!P.type.is_stream(F)&&!P.type.is_atom(F))w.throw_error(P.error.domain("stream_or_alias",F,y.indicator));else if(!P.type.is_stream($)||$.stream===null)w.throw_error(P.error.existence("stream",F,y.indicator));else if($.input)w.throw_error(P.error.permission("output","stream",F,y.indicator));else if($.type==="binary")w.throw_error(P.error.permission("output","binary_stream",F,y.indicator));else if($.position==="past_end_of_stream"&&$.eof_action==="error")w.throw_error(P.error.permission("output","past_end_of_stream",F,y.indicator));else{for(var se={},xe=X,Fe;P.type.is_term(xe)&&xe.indicator==="./2";){if(Fe=xe.args[0],P.type.is_variable(Fe)){w.throw_error(P.error.instantiation(y.indicator));return}else if(!P.type.is_write_option(Fe)){w.throw_error(P.error.domain("write_option",Fe,y.indicator));return}se[Fe.id]=Fe.args[0].id==="true",xe=xe.args[1]}if(xe.indicator!=="[]/0"){P.type.is_variable(xe)?w.throw_error(P.error.instantiation(y.indicator)):w.throw_error(P.error.type("list",X,y.indicator));return}else{se.session=w.session;var ut=z.toString(se);$.stream.put(ut,$.position),typeof $.position=="number"&&($.position+=ut.length),w.success(b)}}},"halt/0":function(w,b,y){w.points=[]},"halt/1":function(w,b,y){var F=y.args[0];P.type.is_variable(F)?w.throw_error(P.error.instantiation(y.indicator)):P.type.is_integer(F)?w.points=[]:w.throw_error(P.error.type("integer",F,y.indicator))},"current_prolog_flag/2":function(w,b,y){var F=y.args[0],z=y.args[1];if(!P.type.is_variable(F)&&!P.type.is_atom(F))w.throw_error(P.error.type("atom",F,y.indicator));else if(!P.type.is_variable(F)&&!P.type.is_flag(F))w.throw_error(P.error.domain("prolog_flag",F,y.indicator));else{var X=[];for(var $ in P.flag)if(P.flag.hasOwnProperty($)){var se=new _(",",[new _("=",[new _($),F]),new _("=",[w.get_flag($),z])]);X.push(new be(b.goal.replace(se),b.substitution,b))}w.prepend(X)}},"set_prolog_flag/2":function(w,b,y){var F=y.args[0],z=y.args[1];P.type.is_variable(F)||P.type.is_variable(z)?w.throw_error(P.error.instantiation(y.indicator)):P.type.is_atom(F)?P.type.is_flag(F)?P.type.is_value_flag(F,z)?P.type.is_modifiable_flag(F)?(w.session.flag[F.id]=z,w.success(b)):w.throw_error(P.error.permission("modify","flag",F)):w.throw_error(P.error.domain("flag_value",new _("+",[F,z]),y.indicator)):w.throw_error(P.error.domain("prolog_flag",F,y.indicator)):w.throw_error(P.error.type("atom",F,y.indicator))}},flag:{bounded:{allowed:[new _("true"),new _("false")],value:new _("true"),changeable:!1},max_integer:{allowed:[new Qe(Number.MAX_SAFE_INTEGER)],value:new Qe(Number.MAX_SAFE_INTEGER),changeable:!1},min_integer:{allowed:[new Qe(Number.MIN_SAFE_INTEGER)],value:new Qe(Number.MIN_SAFE_INTEGER),changeable:!1},integer_rounding_function:{allowed:[new _("down"),new _("toward_zero")],value:new _("toward_zero"),changeable:!1},char_conversion:{allowed:[new _("on"),new _("off")],value:new _("on"),changeable:!0},debug:{allowed:[new _("on"),new _("off")],value:new _("off"),changeable:!0},max_arity:{allowed:[new _("unbounded")],value:new _("unbounded"),changeable:!1},unknown:{allowed:[new _("error"),new _("fail"),new _("warning")],value:new _("error"),changeable:!0},double_quotes:{allowed:[new _("chars"),new _("codes"),new _("atom")],value:new _("codes"),changeable:!0},occurs_check:{allowed:[new _("false"),new _("true")],value:new _("false"),changeable:!0},dialect:{allowed:[new _("tau")],value:new _("tau"),changeable:!1},version_data:{allowed:[new _("tau",[new Qe(e.major,!1),new Qe(e.minor,!1),new Qe(e.patch,!1),new _(e.status)])],value:new _("tau",[new Qe(e.major,!1),new Qe(e.minor,!1),new Qe(e.patch,!1),new _(e.status)]),changeable:!1},nodejs:{allowed:[new _("yes"),new _("no")],value:new _(typeof rc<"u"&&rc.exports?"yes":"no"),changeable:!1}},unify:function(w,b,y){y=y===void 0?!1:y;for(var F=[{left:w,right:b}],z={};F.length!==0;){var X=F.pop();if(w=X.left,b=X.right,P.type.is_term(w)&&P.type.is_term(b)){if(w.indicator!==b.indicator)return null;for(var $=0;$z.value?1:0:z}else return F},operate:function(w,b){if(P.type.is_operator(b)){for(var y=P.type.is_operator(b),F=[],z,X=!1,$=0;$w.get_flag("max_integer").value||z0?w.start+w.matches[0].length:w.start,z=y?new _("token_not_found"):new _("found",[new _(w.value.toString())]),X=new _(".",[new _("line",[new Qe(w.line+1)]),new _(".",[new _("column",[new Qe(F+1)]),new _(".",[z,new _("[]",[])])])]);return new _("error",[new _("syntax_error",[new _(b)]),X])},syntax_by_predicate:function(w,b){return new _("error",[new _("syntax_error",[new _(w)]),Z(b)])}},warning:{singleton:function(w,b,y){for(var F=new _("[]"),z=w.length-1;z>=0;z--)F=new _(".",[new De(w[z]),F]);return new _("warning",[new _("singleton_variables",[F,Z(b)]),new _(".",[new _("line",[new Qe(y,!1)]),new _("[]")])])},failed_goal:function(w,b){return new _("warning",[new _("failed_goal",[w]),new _(".",[new _("line",[new Qe(b,!1)]),new _("[]")])])}},format_variable:function(w){return"_"+w},format_answer:function(w,b,F){b instanceof Re&&(b=b.thread);var F=F||{};if(F.session=b?b.session:void 0,P.type.is_error(w))return"uncaught exception: "+w.args[0].toString();if(w===!1)return"false.";if(w===null)return"limit exceeded ;";var z=0,X="";if(P.type.is_substitution(w)){var $=w.domain(!0);w=w.filter(function(Fe,ut){return!P.type.is_variable(ut)||$.indexOf(ut.id)!==-1&&Fe!==ut.id})}for(var se in w.links)w.links.hasOwnProperty(se)&&(z++,X!==""&&(X+=", "),X+=se.toString(F)+" = "+w.links[se].toString(F));var xe=typeof b>"u"||b.points.length>0?" ;":".";return z===0?"true"+xe:X+xe},flatten_error:function(w){if(!P.type.is_error(w))return null;w=w.args[0];var b={};return b.type=w.args[0].id,b.thrown=b.type==="syntax_error"?null:w.args[1].id,b.expected=null,b.found=null,b.representation=null,b.existence=null,b.existence_type=null,b.line=null,b.column=null,b.permission_operation=null,b.permission_type=null,b.evaluation_type=null,b.type==="type_error"||b.type==="domain_error"?(b.expected=w.args[0].args[0].id,b.found=w.args[0].args[1].toString()):b.type==="syntax_error"?w.args[1].indicator==="./2"?(b.expected=w.args[0].args[0].id,b.found=w.args[1].args[1].args[1].args[0],b.found=b.found.id==="token_not_found"?b.found.id:b.found.args[0].id,b.line=w.args[1].args[0].args[0].value,b.column=w.args[1].args[1].args[0].args[0].value):b.thrown=w.args[1].id:b.type==="permission_error"?(b.found=w.args[0].args[2].toString(),b.permission_operation=w.args[0].args[0].id,b.permission_type=w.args[0].args[1].id):b.type==="evaluation_error"?b.evaluation_type=w.args[0].args[0].id:b.type==="representation_error"?b.representation=w.args[0].args[0].id:b.type==="existence_error"&&(b.existence=w.args[0].args[1].toString(),b.existence_type=w.args[0].args[0].id),b},create:function(w){return new P.type.Session(w)}};typeof rc<"u"?rc.exports=P:window.pl=P})()});function lme(e,t,r){e.prepend(r.map(s=>new wl.default.type.State(t.goal.replace(s),t.substitution,t)))}function r9(e){let t=ume.get(e.session);if(t==null)throw new Error("Assertion failed: A project should have been registered for the active session");return t}function fme(e,t){ume.set(e,t),e.consult(`:- use_module(library(${pat.id})).`)}var wl,cme,Y0,fat,Aat,ume,pat,Ame=Xe(()=>{qe();zl();wl=et(t9()),cme=et(Ie("vm")),{is_atom:Y0,is_variable:fat,is_instantiated_list:Aat}=wl.default.type;ume=new WeakMap;pat=new wl.default.type.Module("constraints",{"project_workspaces_by_descriptor/3":(e,t,r)=>{let[s,a,n]=r.args;if(!Y0(s)||!Y0(a)){e.throw_error(wl.default.error.instantiation(r.indicator));return}let c=j.parseIdent(s.id),f=j.makeDescriptor(c,a.id),h=r9(e).tryWorkspaceByDescriptor(f);fat(n)&&h!==null&&lme(e,t,[new wl.default.type.Term("=",[n,new wl.default.type.Term(String(h.relativeCwd))])]),Y0(n)&&h!==null&&h.relativeCwd===n.id&&e.success(t)},"workspace_field/3":(e,t,r)=>{let[s,a,n]=r.args;if(!Y0(s)||!Y0(a)){e.throw_error(wl.default.error.instantiation(r.indicator));return}let f=r9(e).tryWorkspaceByCwd(s.id);if(f==null)return;let p=Pa(f.manifest.raw,a.id);typeof p>"u"||lme(e,t,[new wl.default.type.Term("=",[n,new wl.default.type.Term(typeof p=="object"?JSON.stringify(p):p)])])},"workspace_field_test/3":(e,t,r)=>{let[s,a,n]=r.args;e.prepend([new wl.default.type.State(t.goal.replace(new wl.default.type.Term("workspace_field_test",[s,a,n,new wl.default.type.Term("[]",[])])),t.substitution,t)])},"workspace_field_test/4":(e,t,r)=>{let[s,a,n,c]=r.args;if(!Y0(s)||!Y0(a)||!Y0(n)||!Aat(c)){e.throw_error(wl.default.error.instantiation(r.indicator));return}let p=r9(e).tryWorkspaceByCwd(s.id);if(p==null)return;let h=Pa(p.manifest.raw,a.id);if(typeof h>"u")return;let E={$$:h};for(let[S,x]of c.toJavaScript().entries())E[`$${S}`]=x;cme.default.runInNewContext(n.id,E)&&e.success(t)}},["project_workspaces_by_descriptor/3","workspace_field/3","workspace_field_test/3","workspace_field_test/4"])});var aS={};Vt(aS,{Constraints:()=>i9,DependencyType:()=>gme});function Co(e){if(e instanceof _C.default.type.Num)return e.value;if(e instanceof _C.default.type.Term)switch(e.indicator){case"throw/1":return Co(e.args[0]);case"error/1":return Co(e.args[0]);case"error/2":if(e.args[0]instanceof _C.default.type.Term&&e.args[0].indicator==="syntax_error/1")return Object.assign(Co(e.args[0]),...Co(e.args[1]));{let t=Co(e.args[0]);return t.message+=` (in ${Co(e.args[1])})`,t}case"syntax_error/1":return new Lt(43,`Syntax error: ${Co(e.args[0])}`);case"existence_error/2":return new Lt(44,`Existence error: ${Co(e.args[0])} ${Co(e.args[1])} not found`);case"instantiation_error/0":return new Lt(75,"Instantiation error: an argument is variable when an instantiated argument was expected");case"line/1":return{line:Co(e.args[0])};case"column/1":return{column:Co(e.args[0])};case"found/1":return{found:Co(e.args[0])};case"./2":return[Co(e.args[0])].concat(Co(e.args[1]));case"//2":return`${Co(e.args[0])}/${Co(e.args[1])}`;default:return e.id}throw`couldn't pretty print because of unsupported node ${e}`}function hme(e){let t;try{t=Co(e)}catch(r){throw typeof r=="string"?new Lt(42,`Unknown error: ${e} (note: ${r})`):r}return typeof t.line<"u"&&typeof t.column<"u"&&(t.message+=` at line ${t.line}, column ${t.column}`),t}function Qm(e){return e.id==="null"?null:`${e.toJavaScript()}`}function hat(e){if(e.id==="null")return null;{let t=e.toJavaScript();if(typeof t!="string")return JSON.stringify(t);try{return JSON.stringify(JSON.parse(t))}catch{return JSON.stringify(t)}}}function V0(e){return typeof e=="string"?`'${e}'`:"[]"}var dme,_C,gme,pme,n9,i9,lS=Xe(()=>{qe();qe();Dt();dme=et(Yge()),_C=et(t9());iS();Ame();(0,dme.default)(_C.default);gme=(s=>(s.Dependencies="dependencies",s.DevDependencies="devDependencies",s.PeerDependencies="peerDependencies",s))(gme||{}),pme=["dependencies","devDependencies","peerDependencies"];n9=class{constructor(t,r){let s=1e3*t.workspaces.length;this.session=_C.default.create(s),fme(this.session,t),this.session.consult(":- use_module(library(lists))."),this.session.consult(r)}fetchNextAnswer(){return new Promise(t=>{this.session.answer(r=>{t(r)})})}async*makeQuery(t){let r=this.session.query(t);if(r!==!0)throw hme(r);for(;;){let s=await this.fetchNextAnswer();if(s===null)throw new Lt(79,"Resolution limit exceeded");if(!s)break;if(s.id==="throw")throw hme(s);yield s}}};i9=class e{constructor(t){this.source="";this.project=t;let r=t.configuration.get("constraintsPath");le.existsSync(r)&&(this.source=le.readFileSync(r,"utf8"))}static async find(t){return new e(t)}getProjectDatabase(){let t="";for(let r of pme)t+=`dependency_type(${r}). +`;for(let r of this.project.workspacesByCwd.values()){let s=r.relativeCwd;t+=`workspace(${V0(s)}). +`,t+=`workspace_ident(${V0(s)}, ${V0(j.stringifyIdent(r.anchoredLocator))}). +`,t+=`workspace_version(${V0(s)}, ${V0(r.manifest.version)}). +`;for(let a of pme)for(let n of r.manifest[a].values())t+=`workspace_has_dependency(${V0(s)}, ${V0(j.stringifyIdent(n))}, ${V0(n.range)}, ${a}). +`}return t+=`workspace(_) :- false. +`,t+=`workspace_ident(_, _) :- false. +`,t+=`workspace_version(_, _) :- false. +`,t+=`workspace_has_dependency(_, _, _, _) :- false. +`,t}getDeclarations(){let t="";return t+=`gen_enforced_dependency(_, _, _, _) :- false. +`,t+=`gen_enforced_field(_, _, _) :- false. +`,t}get fullSource(){return`${this.getProjectDatabase()} +${this.source} +${this.getDeclarations()}`}createSession(){return new n9(this.project,this.fullSource)}async processClassic(){let t=this.createSession();return{enforcedDependencies:await this.genEnforcedDependencies(t),enforcedFields:await this.genEnforcedFields(t)}}async process(){let{enforcedDependencies:t,enforcedFields:r}=await this.processClassic(),s=new Map;for(let{workspace:a,dependencyIdent:n,dependencyRange:c,dependencyType:f}of t){let p=nS([f,j.stringifyIdent(n)]),h=Ge.getMapWithDefault(s,a.cwd);Ge.getMapWithDefault(h,p).set(c??void 0,new Set)}for(let{workspace:a,fieldPath:n,fieldValue:c}of r){let f=nS(n),p=Ge.getMapWithDefault(s,a.cwd);Ge.getMapWithDefault(p,f).set(JSON.parse(c)??void 0,new Set)}return{manifestUpdates:s,reportedErrors:new Map}}async genEnforcedDependencies(t){let r=[];for await(let s of t.makeQuery("workspace(WorkspaceCwd), dependency_type(DependencyType), gen_enforced_dependency(WorkspaceCwd, DependencyIdent, DependencyRange, DependencyType).")){let a=J.resolve(this.project.cwd,Qm(s.links.WorkspaceCwd)),n=Qm(s.links.DependencyIdent),c=Qm(s.links.DependencyRange),f=Qm(s.links.DependencyType);if(a===null||n===null)throw new Error("Invalid rule");let p=this.project.getWorkspaceByCwd(a),h=j.parseIdent(n);r.push({workspace:p,dependencyIdent:h,dependencyRange:c,dependencyType:f})}return Ge.sortMap(r,[({dependencyRange:s})=>s!==null?"0":"1",({workspace:s})=>j.stringifyIdent(s.anchoredLocator),({dependencyIdent:s})=>j.stringifyIdent(s)])}async genEnforcedFields(t){let r=[];for await(let s of t.makeQuery("workspace(WorkspaceCwd), gen_enforced_field(WorkspaceCwd, FieldPath, FieldValue).")){let a=J.resolve(this.project.cwd,Qm(s.links.WorkspaceCwd)),n=Qm(s.links.FieldPath),c=hat(s.links.FieldValue);if(a===null||n===null)throw new Error("Invalid rule");let f=this.project.getWorkspaceByCwd(a);r.push({workspace:f,fieldPath:n,fieldValue:c})}return Ge.sortMap(r,[({workspace:s})=>j.stringifyIdent(s.anchoredLocator),({fieldPath:s})=>s])}async*query(t){let r=this.createSession();for await(let s of r.makeQuery(t)){let a={};for(let[n,c]of Object.entries(s.links))n!=="_"&&(a[n]=Qm(c));yield a}}}});var Sme=G(KT=>{"use strict";Object.defineProperty(KT,"__esModule",{value:!0});function BS(e){let t=[...e.caches],r=t.shift();return r===void 0?vme():{get(s,a,n={miss:()=>Promise.resolve()}){return r.get(s,a,n).catch(()=>BS({caches:t}).get(s,a,n))},set(s,a){return r.set(s,a).catch(()=>BS({caches:t}).set(s,a))},delete(s){return r.delete(s).catch(()=>BS({caches:t}).delete(s))},clear(){return r.clear().catch(()=>BS({caches:t}).clear())}}}function vme(){return{get(e,t,r={miss:()=>Promise.resolve()}){return t().then(a=>Promise.all([a,r.miss(a)])).then(([a])=>a)},set(e,t){return Promise.resolve(t)},delete(e){return Promise.resolve()},clear(){return Promise.resolve()}}}KT.createFallbackableCache=BS;KT.createNullCache=vme});var bme=G((xYt,Dme)=>{Dme.exports=Sme()});var Pme=G(y9=>{"use strict";Object.defineProperty(y9,"__esModule",{value:!0});function Tat(e={serializable:!0}){let t={};return{get(r,s,a={miss:()=>Promise.resolve()}){let n=JSON.stringify(r);if(n in t)return Promise.resolve(e.serializable?JSON.parse(t[n]):t[n]);let c=s(),f=a&&a.miss||(()=>Promise.resolve());return c.then(p=>f(p)).then(()=>c)},set(r,s){return t[JSON.stringify(r)]=e.serializable?JSON.stringify(s):s,Promise.resolve(s)},delete(r){return delete t[JSON.stringify(r)],Promise.resolve()},clear(){return t={},Promise.resolve()}}}y9.createInMemoryCache=Tat});var kme=G((QYt,xme)=>{xme.exports=Pme()});var Rme=G(tf=>{"use strict";Object.defineProperty(tf,"__esModule",{value:!0});function Fat(e,t,r){let s={"x-algolia-api-key":r,"x-algolia-application-id":t};return{headers(){return e===E9.WithinHeaders?s:{}},queryParameters(){return e===E9.WithinQueryParameters?s:{}}}}function Nat(e){let t=0,r=()=>(t++,new Promise(s=>{setTimeout(()=>{s(e(r))},Math.min(100*t,1e3))}));return e(r)}function Qme(e,t=(r,s)=>Promise.resolve()){return Object.assign(e,{wait(r){return Qme(e.then(s=>Promise.all([t(s,r),s])).then(s=>s[1]))}})}function Oat(e){let t=e.length-1;for(t;t>0;t--){let r=Math.floor(Math.random()*(t+1)),s=e[t];e[t]=e[r],e[r]=s}return e}function Lat(e,t){return t&&Object.keys(t).forEach(r=>{e[r]=t[r](e)}),e}function Mat(e,...t){let r=0;return e.replace(/%s/g,()=>encodeURIComponent(t[r++]))}var Uat="4.22.1",_at=e=>()=>e.transporter.requester.destroy(),E9={WithinQueryParameters:0,WithinHeaders:1};tf.AuthMode=E9;tf.addMethods=Lat;tf.createAuth=Fat;tf.createRetryablePromise=Nat;tf.createWaitablePromise=Qme;tf.destroy=_at;tf.encode=Mat;tf.shuffle=Oat;tf.version=Uat});var vS=G((TYt,Tme)=>{Tme.exports=Rme()});var Fme=G(I9=>{"use strict";Object.defineProperty(I9,"__esModule",{value:!0});var Hat={Delete:"DELETE",Get:"GET",Post:"POST",Put:"PUT"};I9.MethodEnum=Hat});var SS=G((NYt,Nme)=>{Nme.exports=Fme()});var zme=G(Yi=>{"use strict";Object.defineProperty(Yi,"__esModule",{value:!0});var Lme=SS();function C9(e,t){let r=e||{},s=r.data||{};return Object.keys(r).forEach(a=>{["timeout","headers","queryParameters","data","cacheable"].indexOf(a)===-1&&(s[a]=r[a])}),{data:Object.entries(s).length>0?s:void 0,timeout:r.timeout||t,headers:r.headers||{},queryParameters:r.queryParameters||{},cacheable:r.cacheable}}var DS={Read:1,Write:2,Any:3},zC={Up:1,Down:2,Timeouted:3},Mme=2*60*1e3;function B9(e,t=zC.Up){return{...e,status:t,lastUpdate:Date.now()}}function Ume(e){return e.status===zC.Up||Date.now()-e.lastUpdate>Mme}function _me(e){return e.status===zC.Timeouted&&Date.now()-e.lastUpdate<=Mme}function v9(e){return typeof e=="string"?{protocol:"https",url:e,accept:DS.Any}:{protocol:e.protocol||"https",url:e.url,accept:e.accept||DS.Any}}function jat(e,t){return Promise.all(t.map(r=>e.get(r,()=>Promise.resolve(B9(r))))).then(r=>{let s=r.filter(f=>Ume(f)),a=r.filter(f=>_me(f)),n=[...s,...a],c=n.length>0?n.map(f=>v9(f)):t;return{getTimeout(f,p){return(a.length===0&&f===0?1:a.length+3+f)*p},statelessHosts:c}})}var Gat=({isTimedOut:e,status:t})=>!e&&~~t===0,qat=e=>{let t=e.status;return e.isTimedOut||Gat(e)||~~(t/100)!==2&&~~(t/100)!==4},Wat=({status:e})=>~~(e/100)===2,Yat=(e,t)=>qat(e)?t.onRetry(e):Wat(e)?t.onSuccess(e):t.onFail(e);function Ome(e,t,r,s){let a=[],n=Wme(r,s),c=Yme(e,s),f=r.method,p=r.method!==Lme.MethodEnum.Get?{}:{...r.data,...s.data},h={"x-algolia-agent":e.userAgent.value,...e.queryParameters,...p,...s.queryParameters},E=0,C=(S,x)=>{let I=S.pop();if(I===void 0)throw Kme(w9(a));let T={data:n,headers:c,method:f,url:Gme(I,r.path,h),connectTimeout:x(E,e.timeouts.connect),responseTimeout:x(E,s.timeout)},O=V=>{let te={request:T,response:V,host:I,triesLeft:S.length};return a.push(te),te},U={onSuccess:V=>Hme(V),onRetry(V){let te=O(V);return V.isTimedOut&&E++,Promise.all([e.logger.info("Retryable failure",S9(te)),e.hostsCache.set(I,B9(I,V.isTimedOut?zC.Timeouted:zC.Down))]).then(()=>C(S,x))},onFail(V){throw O(V),jme(V,w9(a))}};return e.requester.send(T).then(V=>Yat(V,U))};return jat(e.hostsCache,t).then(S=>C([...S.statelessHosts].reverse(),S.getTimeout))}function Vat(e){let{hostsCache:t,logger:r,requester:s,requestsCache:a,responsesCache:n,timeouts:c,userAgent:f,hosts:p,queryParameters:h,headers:E}=e,C={hostsCache:t,logger:r,requester:s,requestsCache:a,responsesCache:n,timeouts:c,userAgent:f,headers:E,queryParameters:h,hosts:p.map(S=>v9(S)),read(S,x){let I=C9(x,C.timeouts.read),T=()=>Ome(C,C.hosts.filter(V=>(V.accept&DS.Read)!==0),S,I);if((I.cacheable!==void 0?I.cacheable:S.cacheable)!==!0)return T();let U={request:S,mappedRequestOptions:I,transporter:{queryParameters:C.queryParameters,headers:C.headers}};return C.responsesCache.get(U,()=>C.requestsCache.get(U,()=>C.requestsCache.set(U,T()).then(V=>Promise.all([C.requestsCache.delete(U),V]),V=>Promise.all([C.requestsCache.delete(U),Promise.reject(V)])).then(([V,te])=>te)),{miss:V=>C.responsesCache.set(U,V)})},write(S,x){return Ome(C,C.hosts.filter(I=>(I.accept&DS.Write)!==0),S,C9(x,C.timeouts.write))}};return C}function Jat(e){let t={value:`Algolia for JavaScript (${e})`,add(r){let s=`; ${r.segment}${r.version!==void 0?` (${r.version})`:""}`;return t.value.indexOf(s)===-1&&(t.value=`${t.value}${s}`),t}};return t}function Hme(e){try{return JSON.parse(e.content)}catch(t){throw Jme(t.message,e)}}function jme({content:e,status:t},r){let s=e;try{s=JSON.parse(e).message}catch{}return Vme(s,t,r)}function Kat(e,...t){let r=0;return e.replace(/%s/g,()=>encodeURIComponent(t[r++]))}function Gme(e,t,r){let s=qme(r),a=`${e.protocol}://${e.url}/${t.charAt(0)==="/"?t.substr(1):t}`;return s.length&&(a+=`?${s}`),a}function qme(e){let t=r=>Object.prototype.toString.call(r)==="[object Object]"||Object.prototype.toString.call(r)==="[object Array]";return Object.keys(e).map(r=>Kat("%s=%s",r,t(e[r])?JSON.stringify(e[r]):e[r])).join("&")}function Wme(e,t){if(e.method===Lme.MethodEnum.Get||e.data===void 0&&t.data===void 0)return;let r=Array.isArray(e.data)?e.data:{...e.data,...t.data};return JSON.stringify(r)}function Yme(e,t){let r={...e.headers,...t.headers},s={};return Object.keys(r).forEach(a=>{let n=r[a];s[a.toLowerCase()]=n}),s}function w9(e){return e.map(t=>S9(t))}function S9(e){let t=e.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return{...e,request:{...e.request,headers:{...e.request.headers,...t}}}}function Vme(e,t,r){return{name:"ApiError",message:e,status:t,transporterStackTrace:r}}function Jme(e,t){return{name:"DeserializationError",message:e,response:t}}function Kme(e){return{name:"RetryError",message:"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.",transporterStackTrace:e}}Yi.CallEnum=DS;Yi.HostStatusEnum=zC;Yi.createApiError=Vme;Yi.createDeserializationError=Jme;Yi.createMappedRequestOptions=C9;Yi.createRetryError=Kme;Yi.createStatefulHost=B9;Yi.createStatelessHost=v9;Yi.createTransporter=Vat;Yi.createUserAgent=Jat;Yi.deserializeFailure=jme;Yi.deserializeSuccess=Hme;Yi.isStatefulHostTimeouted=_me;Yi.isStatefulHostUp=Ume;Yi.serializeData=Wme;Yi.serializeHeaders=Yme;Yi.serializeQueryParameters=qme;Yi.serializeUrl=Gme;Yi.stackFrameWithoutCredentials=S9;Yi.stackTraceWithoutCredentials=w9});var bS=G((LYt,Xme)=>{Xme.exports=zme()});var Zme=G(K0=>{"use strict";Object.defineProperty(K0,"__esModule",{value:!0});var XC=vS(),zat=bS(),PS=SS(),Xat=e=>{let t=e.region||"us",r=XC.createAuth(XC.AuthMode.WithinHeaders,e.appId,e.apiKey),s=zat.createTransporter({hosts:[{url:`analytics.${t}.algolia.com`}],...e,headers:{...r.headers(),"content-type":"application/json",...e.headers},queryParameters:{...r.queryParameters(),...e.queryParameters}}),a=e.appId;return XC.addMethods({appId:a,transporter:s},e.methods)},Zat=e=>(t,r)=>e.transporter.write({method:PS.MethodEnum.Post,path:"2/abtests",data:t},r),$at=e=>(t,r)=>e.transporter.write({method:PS.MethodEnum.Delete,path:XC.encode("2/abtests/%s",t)},r),elt=e=>(t,r)=>e.transporter.read({method:PS.MethodEnum.Get,path:XC.encode("2/abtests/%s",t)},r),tlt=e=>t=>e.transporter.read({method:PS.MethodEnum.Get,path:"2/abtests"},t),rlt=e=>(t,r)=>e.transporter.write({method:PS.MethodEnum.Post,path:XC.encode("2/abtests/%s/stop",t)},r);K0.addABTest=Zat;K0.createAnalyticsClient=Xat;K0.deleteABTest=$at;K0.getABTest=elt;K0.getABTests=tlt;K0.stopABTest=rlt});var eye=G((UYt,$me)=>{$me.exports=Zme()});var rye=G(xS=>{"use strict";Object.defineProperty(xS,"__esModule",{value:!0});var D9=vS(),nlt=bS(),tye=SS(),ilt=e=>{let t=e.region||"us",r=D9.createAuth(D9.AuthMode.WithinHeaders,e.appId,e.apiKey),s=nlt.createTransporter({hosts:[{url:`personalization.${t}.algolia.com`}],...e,headers:{...r.headers(),"content-type":"application/json",...e.headers},queryParameters:{...r.queryParameters(),...e.queryParameters}});return D9.addMethods({appId:e.appId,transporter:s},e.methods)},slt=e=>t=>e.transporter.read({method:tye.MethodEnum.Get,path:"1/strategies/personalization"},t),olt=e=>(t,r)=>e.transporter.write({method:tye.MethodEnum.Post,path:"1/strategies/personalization",data:t},r);xS.createPersonalizationClient=ilt;xS.getPersonalizationStrategy=slt;xS.setPersonalizationStrategy=olt});var iye=G((HYt,nye)=>{nye.exports=rye()});var yye=G(Ft=>{"use strict";Object.defineProperty(Ft,"__esModule",{value:!0});var Jt=vS(),Bl=bS(),br=SS(),alt=Ie("crypto");function zT(e){let t=r=>e.request(r).then(s=>{if(e.batch!==void 0&&e.batch(s.hits),!e.shouldStop(s))return s.cursor?t({cursor:s.cursor}):t({page:(r.page||0)+1})});return t({})}var llt=e=>{let t=e.appId,r=Jt.createAuth(e.authMode!==void 0?e.authMode:Jt.AuthMode.WithinHeaders,t,e.apiKey),s=Bl.createTransporter({hosts:[{url:`${t}-dsn.algolia.net`,accept:Bl.CallEnum.Read},{url:`${t}.algolia.net`,accept:Bl.CallEnum.Write}].concat(Jt.shuffle([{url:`${t}-1.algolianet.com`},{url:`${t}-2.algolianet.com`},{url:`${t}-3.algolianet.com`}])),...e,headers:{...r.headers(),"content-type":"application/x-www-form-urlencoded",...e.headers},queryParameters:{...r.queryParameters(),...e.queryParameters}}),a={transporter:s,appId:t,addAlgoliaAgent(n,c){s.userAgent.add({segment:n,version:c})},clearCache(){return Promise.all([s.requestsCache.clear(),s.responsesCache.clear()]).then(()=>{})}};return Jt.addMethods(a,e.methods)};function sye(){return{name:"MissingObjectIDError",message:"All objects must have an unique objectID (like a primary key) to be valid. Algolia is also able to generate objectIDs automatically but *it's not recommended*. To do it, use the `{'autoGenerateObjectIDIfNotExist': true}` option."}}function oye(){return{name:"ObjectNotFoundError",message:"Object not found."}}function aye(){return{name:"ValidUntilNotFoundError",message:"ValidUntil not found in given secured api key."}}var clt=e=>(t,r)=>{let{queryParameters:s,...a}=r||{},n={acl:t,...s!==void 0?{queryParameters:s}:{}},c=(f,p)=>Jt.createRetryablePromise(h=>kS(e)(f.key,p).catch(E=>{if(E.status!==404)throw E;return h()}));return Jt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:"1/keys",data:n},a),c)},ult=e=>(t,r,s)=>{let a=Bl.createMappedRequestOptions(s);return a.queryParameters["X-Algolia-User-ID"]=t,e.transporter.write({method:br.MethodEnum.Post,path:"1/clusters/mapping",data:{cluster:r}},a)},flt=e=>(t,r,s)=>e.transporter.write({method:br.MethodEnum.Post,path:"1/clusters/mapping/batch",data:{users:t,cluster:r}},s),Alt=e=>(t,r)=>Jt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Jt.encode("/1/dictionaries/%s/batch",t),data:{clearExistingDictionaryEntries:!0,requests:{action:"addEntry",body:[]}}},r),(s,a)=>ZC(e)(s.taskID,a)),XT=e=>(t,r,s)=>{let a=(n,c)=>QS(e)(t,{methods:{waitTask:ms}}).waitTask(n.taskID,c);return Jt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Jt.encode("1/indexes/%s/operation",t),data:{operation:"copy",destination:r}},s),a)},plt=e=>(t,r,s)=>XT(e)(t,r,{...s,scope:[$T.Rules]}),hlt=e=>(t,r,s)=>XT(e)(t,r,{...s,scope:[$T.Settings]}),dlt=e=>(t,r,s)=>XT(e)(t,r,{...s,scope:[$T.Synonyms]}),glt=e=>(t,r)=>t.method===br.MethodEnum.Get?e.transporter.read(t,r):e.transporter.write(t,r),mlt=e=>(t,r)=>{let s=(a,n)=>Jt.createRetryablePromise(c=>kS(e)(t,n).then(c).catch(f=>{if(f.status!==404)throw f}));return Jt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Delete,path:Jt.encode("1/keys/%s",t)},r),s)},ylt=e=>(t,r,s)=>{let a=r.map(n=>({action:"deleteEntry",body:{objectID:n}}));return Jt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Jt.encode("/1/dictionaries/%s/batch",t),data:{clearExistingDictionaryEntries:!1,requests:a}},s),(n,c)=>ZC(e)(n.taskID,c))},Elt=()=>(e,t)=>{let r=Bl.serializeQueryParameters(t),s=alt.createHmac("sha256",e).update(r).digest("hex");return Buffer.from(s+r).toString("base64")},kS=e=>(t,r)=>e.transporter.read({method:br.MethodEnum.Get,path:Jt.encode("1/keys/%s",t)},r),lye=e=>(t,r)=>e.transporter.read({method:br.MethodEnum.Get,path:Jt.encode("1/task/%s",t.toString())},r),Ilt=e=>t=>e.transporter.read({method:br.MethodEnum.Get,path:"/1/dictionaries/*/settings"},t),Clt=e=>t=>e.transporter.read({method:br.MethodEnum.Get,path:"1/logs"},t),wlt=()=>e=>{let t=Buffer.from(e,"base64").toString("ascii"),r=/validUntil=(\d+)/,s=t.match(r);if(s===null)throw aye();return parseInt(s[1],10)-Math.round(new Date().getTime()/1e3)},Blt=e=>t=>e.transporter.read({method:br.MethodEnum.Get,path:"1/clusters/mapping/top"},t),vlt=e=>(t,r)=>e.transporter.read({method:br.MethodEnum.Get,path:Jt.encode("1/clusters/mapping/%s",t)},r),Slt=e=>t=>{let{retrieveMappings:r,...s}=t||{};return r===!0&&(s.getClusters=!0),e.transporter.read({method:br.MethodEnum.Get,path:"1/clusters/mapping/pending"},s)},QS=e=>(t,r={})=>{let s={transporter:e.transporter,appId:e.appId,indexName:t};return Jt.addMethods(s,r.methods)},Dlt=e=>t=>e.transporter.read({method:br.MethodEnum.Get,path:"1/keys"},t),blt=e=>t=>e.transporter.read({method:br.MethodEnum.Get,path:"1/clusters"},t),Plt=e=>t=>e.transporter.read({method:br.MethodEnum.Get,path:"1/indexes"},t),xlt=e=>t=>e.transporter.read({method:br.MethodEnum.Get,path:"1/clusters/mapping"},t),klt=e=>(t,r,s)=>{let a=(n,c)=>QS(e)(t,{methods:{waitTask:ms}}).waitTask(n.taskID,c);return Jt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Jt.encode("1/indexes/%s/operation",t),data:{operation:"move",destination:r}},s),a)},Qlt=e=>(t,r)=>{let s=(a,n)=>Promise.all(Object.keys(a.taskID).map(c=>QS(e)(c,{methods:{waitTask:ms}}).waitTask(a.taskID[c],n)));return Jt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:"1/indexes/*/batch",data:{requests:t}},r),s)},Rlt=e=>(t,r)=>e.transporter.read({method:br.MethodEnum.Post,path:"1/indexes/*/objects",data:{requests:t}},r),Tlt=e=>(t,r)=>{let s=t.map(a=>({...a,params:Bl.serializeQueryParameters(a.params||{})}));return e.transporter.read({method:br.MethodEnum.Post,path:"1/indexes/*/queries",data:{requests:s},cacheable:!0},r)},Flt=e=>(t,r)=>Promise.all(t.map(s=>{let{facetName:a,facetQuery:n,...c}=s.params;return QS(e)(s.indexName,{methods:{searchForFacetValues:dye}}).searchForFacetValues(a,n,{...r,...c})})),Nlt=e=>(t,r)=>{let s=Bl.createMappedRequestOptions(r);return s.queryParameters["X-Algolia-User-ID"]=t,e.transporter.write({method:br.MethodEnum.Delete,path:"1/clusters/mapping"},s)},Olt=e=>(t,r,s)=>{let a=r.map(n=>({action:"addEntry",body:n}));return Jt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Jt.encode("/1/dictionaries/%s/batch",t),data:{clearExistingDictionaryEntries:!0,requests:a}},s),(n,c)=>ZC(e)(n.taskID,c))},Llt=e=>(t,r)=>{let s=(a,n)=>Jt.createRetryablePromise(c=>kS(e)(t,n).catch(f=>{if(f.status!==404)throw f;return c()}));return Jt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Jt.encode("1/keys/%s/restore",t)},r),s)},Mlt=e=>(t,r,s)=>{let a=r.map(n=>({action:"addEntry",body:n}));return Jt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Jt.encode("/1/dictionaries/%s/batch",t),data:{clearExistingDictionaryEntries:!1,requests:a}},s),(n,c)=>ZC(e)(n.taskID,c))},Ult=e=>(t,r,s)=>e.transporter.read({method:br.MethodEnum.Post,path:Jt.encode("/1/dictionaries/%s/search",t),data:{query:r},cacheable:!0},s),_lt=e=>(t,r)=>e.transporter.read({method:br.MethodEnum.Post,path:"1/clusters/mapping/search",data:{query:t}},r),Hlt=e=>(t,r)=>Jt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Put,path:"/1/dictionaries/*/settings",data:t},r),(s,a)=>ZC(e)(s.taskID,a)),jlt=e=>(t,r)=>{let s=Object.assign({},r),{queryParameters:a,...n}=r||{},c=a?{queryParameters:a}:{},f=["acl","indexes","referers","restrictSources","queryParameters","description","maxQueriesPerIPPerHour","maxHitsPerQuery"],p=E=>Object.keys(s).filter(C=>f.indexOf(C)!==-1).every(C=>{if(Array.isArray(E[C])&&Array.isArray(s[C])){let S=E[C];return S.length===s[C].length&&S.every((x,I)=>x===s[C][I])}else return E[C]===s[C]}),h=(E,C)=>Jt.createRetryablePromise(S=>kS(e)(t,C).then(x=>p(x)?Promise.resolve():S()));return Jt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Put,path:Jt.encode("1/keys/%s",t),data:c},n),h)},ZC=e=>(t,r)=>Jt.createRetryablePromise(s=>lye(e)(t,r).then(a=>a.status!=="published"?s():void 0)),cye=e=>(t,r)=>{let s=(a,n)=>ms(e)(a.taskID,n);return Jt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Jt.encode("1/indexes/%s/batch",e.indexName),data:{requests:t}},r),s)},Glt=e=>t=>zT({shouldStop:r=>r.cursor===void 0,...t,request:r=>e.transporter.read({method:br.MethodEnum.Post,path:Jt.encode("1/indexes/%s/browse",e.indexName),data:r},t)}),qlt=e=>t=>{let r={hitsPerPage:1e3,...t};return zT({shouldStop:s=>s.hits.length({...a,hits:a.hits.map(n=>(delete n._highlightResult,n))}))}})},Wlt=e=>t=>{let r={hitsPerPage:1e3,...t};return zT({shouldStop:s=>s.hits.length({...a,hits:a.hits.map(n=>(delete n._highlightResult,n))}))}})},ZT=e=>(t,r,s)=>{let{batchSize:a,...n}=s||{},c={taskIDs:[],objectIDs:[]},f=(p=0)=>{let h=[],E;for(E=p;E({action:r,body:C})),n).then(C=>(c.objectIDs=c.objectIDs.concat(C.objectIDs),c.taskIDs.push(C.taskID),E++,f(E)))};return Jt.createWaitablePromise(f(),(p,h)=>Promise.all(p.taskIDs.map(E=>ms(e)(E,h))))},Ylt=e=>t=>Jt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Jt.encode("1/indexes/%s/clear",e.indexName)},t),(r,s)=>ms(e)(r.taskID,s)),Vlt=e=>t=>{let{forwardToReplicas:r,...s}=t||{},a=Bl.createMappedRequestOptions(s);return r&&(a.queryParameters.forwardToReplicas=1),Jt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Jt.encode("1/indexes/%s/rules/clear",e.indexName)},a),(n,c)=>ms(e)(n.taskID,c))},Jlt=e=>t=>{let{forwardToReplicas:r,...s}=t||{},a=Bl.createMappedRequestOptions(s);return r&&(a.queryParameters.forwardToReplicas=1),Jt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Jt.encode("1/indexes/%s/synonyms/clear",e.indexName)},a),(n,c)=>ms(e)(n.taskID,c))},Klt=e=>(t,r)=>Jt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Jt.encode("1/indexes/%s/deleteByQuery",e.indexName),data:t},r),(s,a)=>ms(e)(s.taskID,a)),zlt=e=>t=>Jt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Delete,path:Jt.encode("1/indexes/%s",e.indexName)},t),(r,s)=>ms(e)(r.taskID,s)),Xlt=e=>(t,r)=>Jt.createWaitablePromise(uye(e)([t],r).then(s=>({taskID:s.taskIDs[0]})),(s,a)=>ms(e)(s.taskID,a)),uye=e=>(t,r)=>{let s=t.map(a=>({objectID:a}));return ZT(e)(s,Tm.DeleteObject,r)},Zlt=e=>(t,r)=>{let{forwardToReplicas:s,...a}=r||{},n=Bl.createMappedRequestOptions(a);return s&&(n.queryParameters.forwardToReplicas=1),Jt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Delete,path:Jt.encode("1/indexes/%s/rules/%s",e.indexName,t)},n),(c,f)=>ms(e)(c.taskID,f))},$lt=e=>(t,r)=>{let{forwardToReplicas:s,...a}=r||{},n=Bl.createMappedRequestOptions(a);return s&&(n.queryParameters.forwardToReplicas=1),Jt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Delete,path:Jt.encode("1/indexes/%s/synonyms/%s",e.indexName,t)},n),(c,f)=>ms(e)(c.taskID,f))},ect=e=>t=>fye(e)(t).then(()=>!0).catch(r=>{if(r.status!==404)throw r;return!1}),tct=e=>(t,r,s)=>e.transporter.read({method:br.MethodEnum.Post,path:Jt.encode("1/answers/%s/prediction",e.indexName),data:{query:t,queryLanguages:r},cacheable:!0},s),rct=e=>(t,r)=>{let{query:s,paginate:a,...n}=r||{},c=0,f=()=>hye(e)(s||"",{...n,page:c}).then(p=>{for(let[h,E]of Object.entries(p.hits))if(t(E))return{object:E,position:parseInt(h,10),page:c};if(c++,a===!1||c>=p.nbPages)throw oye();return f()});return f()},nct=e=>(t,r)=>e.transporter.read({method:br.MethodEnum.Get,path:Jt.encode("1/indexes/%s/%s",e.indexName,t)},r),ict=()=>(e,t)=>{for(let[r,s]of Object.entries(e.hits))if(s.objectID===t)return parseInt(r,10);return-1},sct=e=>(t,r)=>{let{attributesToRetrieve:s,...a}=r||{},n=t.map(c=>({indexName:e.indexName,objectID:c,...s?{attributesToRetrieve:s}:{}}));return e.transporter.read({method:br.MethodEnum.Post,path:"1/indexes/*/objects",data:{requests:n}},a)},oct=e=>(t,r)=>e.transporter.read({method:br.MethodEnum.Get,path:Jt.encode("1/indexes/%s/rules/%s",e.indexName,t)},r),fye=e=>t=>e.transporter.read({method:br.MethodEnum.Get,path:Jt.encode("1/indexes/%s/settings",e.indexName),data:{getVersion:2}},t),act=e=>(t,r)=>e.transporter.read({method:br.MethodEnum.Get,path:Jt.encode("1/indexes/%s/synonyms/%s",e.indexName,t)},r),Aye=e=>(t,r)=>e.transporter.read({method:br.MethodEnum.Get,path:Jt.encode("1/indexes/%s/task/%s",e.indexName,t.toString())},r),lct=e=>(t,r)=>Jt.createWaitablePromise(pye(e)([t],r).then(s=>({objectID:s.objectIDs[0],taskID:s.taskIDs[0]})),(s,a)=>ms(e)(s.taskID,a)),pye=e=>(t,r)=>{let{createIfNotExists:s,...a}=r||{},n=s?Tm.PartialUpdateObject:Tm.PartialUpdateObjectNoCreate;return ZT(e)(t,n,a)},cct=e=>(t,r)=>{let{safe:s,autoGenerateObjectIDIfNotExist:a,batchSize:n,...c}=r||{},f=(I,T,O,U)=>Jt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Jt.encode("1/indexes/%s/operation",I),data:{operation:O,destination:T}},U),(V,te)=>ms(e)(V.taskID,te)),p=Math.random().toString(36).substring(7),h=`${e.indexName}_tmp_${p}`,E=b9({appId:e.appId,transporter:e.transporter,indexName:h}),C=[],S=f(e.indexName,h,"copy",{...c,scope:["settings","synonyms","rules"]});C.push(S);let x=(s?S.wait(c):S).then(()=>{let I=E(t,{...c,autoGenerateObjectIDIfNotExist:a,batchSize:n});return C.push(I),s?I.wait(c):I}).then(()=>{let I=f(h,e.indexName,"move",c);return C.push(I),s?I.wait(c):I}).then(()=>Promise.all(C)).then(([I,T,O])=>({objectIDs:T.objectIDs,taskIDs:[I.taskID,...T.taskIDs,O.taskID]}));return Jt.createWaitablePromise(x,(I,T)=>Promise.all(C.map(O=>O.wait(T))))},uct=e=>(t,r)=>P9(e)(t,{...r,clearExistingRules:!0}),fct=e=>(t,r)=>x9(e)(t,{...r,clearExistingSynonyms:!0}),Act=e=>(t,r)=>Jt.createWaitablePromise(b9(e)([t],r).then(s=>({objectID:s.objectIDs[0],taskID:s.taskIDs[0]})),(s,a)=>ms(e)(s.taskID,a)),b9=e=>(t,r)=>{let{autoGenerateObjectIDIfNotExist:s,...a}=r||{},n=s?Tm.AddObject:Tm.UpdateObject;if(n===Tm.UpdateObject){for(let c of t)if(c.objectID===void 0)return Jt.createWaitablePromise(Promise.reject(sye()))}return ZT(e)(t,n,a)},pct=e=>(t,r)=>P9(e)([t],r),P9=e=>(t,r)=>{let{forwardToReplicas:s,clearExistingRules:a,...n}=r||{},c=Bl.createMappedRequestOptions(n);return s&&(c.queryParameters.forwardToReplicas=1),a&&(c.queryParameters.clearExistingRules=1),Jt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Jt.encode("1/indexes/%s/rules/batch",e.indexName),data:t},c),(f,p)=>ms(e)(f.taskID,p))},hct=e=>(t,r)=>x9(e)([t],r),x9=e=>(t,r)=>{let{forwardToReplicas:s,clearExistingSynonyms:a,replaceExistingSynonyms:n,...c}=r||{},f=Bl.createMappedRequestOptions(c);return s&&(f.queryParameters.forwardToReplicas=1),(n||a)&&(f.queryParameters.replaceExistingSynonyms=1),Jt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Jt.encode("1/indexes/%s/synonyms/batch",e.indexName),data:t},f),(p,h)=>ms(e)(p.taskID,h))},hye=e=>(t,r)=>e.transporter.read({method:br.MethodEnum.Post,path:Jt.encode("1/indexes/%s/query",e.indexName),data:{query:t},cacheable:!0},r),dye=e=>(t,r,s)=>e.transporter.read({method:br.MethodEnum.Post,path:Jt.encode("1/indexes/%s/facets/%s/query",e.indexName,t),data:{facetQuery:r},cacheable:!0},s),gye=e=>(t,r)=>e.transporter.read({method:br.MethodEnum.Post,path:Jt.encode("1/indexes/%s/rules/search",e.indexName),data:{query:t}},r),mye=e=>(t,r)=>e.transporter.read({method:br.MethodEnum.Post,path:Jt.encode("1/indexes/%s/synonyms/search",e.indexName),data:{query:t}},r),dct=e=>(t,r)=>{let{forwardToReplicas:s,...a}=r||{},n=Bl.createMappedRequestOptions(a);return s&&(n.queryParameters.forwardToReplicas=1),Jt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Put,path:Jt.encode("1/indexes/%s/settings",e.indexName),data:t},n),(c,f)=>ms(e)(c.taskID,f))},ms=e=>(t,r)=>Jt.createRetryablePromise(s=>Aye(e)(t,r).then(a=>a.status!=="published"?s():void 0)),gct={AddObject:"addObject",Analytics:"analytics",Browser:"browse",DeleteIndex:"deleteIndex",DeleteObject:"deleteObject",EditSettings:"editSettings",Inference:"inference",ListIndexes:"listIndexes",Logs:"logs",Personalization:"personalization",Recommendation:"recommendation",Search:"search",SeeUnretrievableAttributes:"seeUnretrievableAttributes",Settings:"settings",Usage:"usage"},Tm={AddObject:"addObject",UpdateObject:"updateObject",PartialUpdateObject:"partialUpdateObject",PartialUpdateObjectNoCreate:"partialUpdateObjectNoCreate",DeleteObject:"deleteObject",DeleteIndex:"delete",ClearIndex:"clear"},$T={Settings:"settings",Synonyms:"synonyms",Rules:"rules"},mct={None:"none",StopIfEnoughMatches:"stopIfEnoughMatches"},yct={Synonym:"synonym",OneWaySynonym:"oneWaySynonym",AltCorrection1:"altCorrection1",AltCorrection2:"altCorrection2",Placeholder:"placeholder"};Ft.ApiKeyACLEnum=gct;Ft.BatchActionEnum=Tm;Ft.ScopeEnum=$T;Ft.StrategyEnum=mct;Ft.SynonymEnum=yct;Ft.addApiKey=clt;Ft.assignUserID=ult;Ft.assignUserIDs=flt;Ft.batch=cye;Ft.browseObjects=Glt;Ft.browseRules=qlt;Ft.browseSynonyms=Wlt;Ft.chunkedBatch=ZT;Ft.clearDictionaryEntries=Alt;Ft.clearObjects=Ylt;Ft.clearRules=Vlt;Ft.clearSynonyms=Jlt;Ft.copyIndex=XT;Ft.copyRules=plt;Ft.copySettings=hlt;Ft.copySynonyms=dlt;Ft.createBrowsablePromise=zT;Ft.createMissingObjectIDError=sye;Ft.createObjectNotFoundError=oye;Ft.createSearchClient=llt;Ft.createValidUntilNotFoundError=aye;Ft.customRequest=glt;Ft.deleteApiKey=mlt;Ft.deleteBy=Klt;Ft.deleteDictionaryEntries=ylt;Ft.deleteIndex=zlt;Ft.deleteObject=Xlt;Ft.deleteObjects=uye;Ft.deleteRule=Zlt;Ft.deleteSynonym=$lt;Ft.exists=ect;Ft.findAnswers=tct;Ft.findObject=rct;Ft.generateSecuredApiKey=Elt;Ft.getApiKey=kS;Ft.getAppTask=lye;Ft.getDictionarySettings=Ilt;Ft.getLogs=Clt;Ft.getObject=nct;Ft.getObjectPosition=ict;Ft.getObjects=sct;Ft.getRule=oct;Ft.getSecuredApiKeyRemainingValidity=wlt;Ft.getSettings=fye;Ft.getSynonym=act;Ft.getTask=Aye;Ft.getTopUserIDs=Blt;Ft.getUserID=vlt;Ft.hasPendingMappings=Slt;Ft.initIndex=QS;Ft.listApiKeys=Dlt;Ft.listClusters=blt;Ft.listIndices=Plt;Ft.listUserIDs=xlt;Ft.moveIndex=klt;Ft.multipleBatch=Qlt;Ft.multipleGetObjects=Rlt;Ft.multipleQueries=Tlt;Ft.multipleSearchForFacetValues=Flt;Ft.partialUpdateObject=lct;Ft.partialUpdateObjects=pye;Ft.removeUserID=Nlt;Ft.replaceAllObjects=cct;Ft.replaceAllRules=uct;Ft.replaceAllSynonyms=fct;Ft.replaceDictionaryEntries=Olt;Ft.restoreApiKey=Llt;Ft.saveDictionaryEntries=Mlt;Ft.saveObject=Act;Ft.saveObjects=b9;Ft.saveRule=pct;Ft.saveRules=P9;Ft.saveSynonym=hct;Ft.saveSynonyms=x9;Ft.search=hye;Ft.searchDictionaryEntries=Ult;Ft.searchForFacetValues=dye;Ft.searchRules=gye;Ft.searchSynonyms=mye;Ft.searchUserIDs=_lt;Ft.setDictionarySettings=Hlt;Ft.setSettings=dct;Ft.updateApiKey=jlt;Ft.waitAppTask=ZC;Ft.waitTask=ms});var Iye=G((GYt,Eye)=>{Eye.exports=yye()});var Cye=G(eF=>{"use strict";Object.defineProperty(eF,"__esModule",{value:!0});function Ect(){return{debug(e,t){return Promise.resolve()},info(e,t){return Promise.resolve()},error(e,t){return Promise.resolve()}}}var Ict={Debug:1,Info:2,Error:3};eF.LogLevelEnum=Ict;eF.createNullLogger=Ect});var Bye=G((WYt,wye)=>{wye.exports=Cye()});var bye=G(k9=>{"use strict";Object.defineProperty(k9,"__esModule",{value:!0});var vye=Ie("http"),Sye=Ie("https"),Cct=Ie("url"),Dye={keepAlive:!0},wct=new vye.Agent(Dye),Bct=new Sye.Agent(Dye);function vct({agent:e,httpAgent:t,httpsAgent:r,requesterOptions:s={}}={}){let a=t||e||wct,n=r||e||Bct;return{send(c){return new Promise(f=>{let p=Cct.parse(c.url),h=p.query===null?p.pathname:`${p.pathname}?${p.query}`,E={...s,agent:p.protocol==="https:"?n:a,hostname:p.hostname,path:h,method:c.method,headers:{...s&&s.headers?s.headers:{},...c.headers},...p.port!==void 0?{port:p.port||""}:{}},C=(p.protocol==="https:"?Sye:vye).request(E,T=>{let O=[];T.on("data",U=>{O=O.concat(U)}),T.on("end",()=>{clearTimeout(x),clearTimeout(I),f({status:T.statusCode||0,content:Buffer.concat(O).toString(),isTimedOut:!1})})}),S=(T,O)=>setTimeout(()=>{C.abort(),f({status:0,content:O,isTimedOut:!0})},T*1e3),x=S(c.connectTimeout,"Connection timeout"),I;C.on("error",T=>{clearTimeout(x),clearTimeout(I),f({status:0,content:T.message,isTimedOut:!1})}),C.once("response",()=>{clearTimeout(x),I=S(c.responseTimeout,"Socket timeout")}),c.data!==void 0&&C.write(c.data),C.end()})},destroy(){return a.destroy(),n.destroy(),Promise.resolve()}}}k9.createNodeHttpRequester=vct});var xye=G((VYt,Pye)=>{Pye.exports=bye()});var Tye=G((JYt,Rye)=>{"use strict";var kye=bme(),Sct=kme(),$C=eye(),R9=vS(),Q9=iye(),Gt=Iye(),Dct=Bye(),bct=xye(),Pct=bS();function Qye(e,t,r){let s={appId:e,apiKey:t,timeouts:{connect:2,read:5,write:30},requester:bct.createNodeHttpRequester(),logger:Dct.createNullLogger(),responsesCache:kye.createNullCache(),requestsCache:kye.createNullCache(),hostsCache:Sct.createInMemoryCache(),userAgent:Pct.createUserAgent(R9.version).add({segment:"Node.js",version:process.versions.node})},a={...s,...r},n=()=>c=>Q9.createPersonalizationClient({...s,...c,methods:{getPersonalizationStrategy:Q9.getPersonalizationStrategy,setPersonalizationStrategy:Q9.setPersonalizationStrategy}});return Gt.createSearchClient({...a,methods:{search:Gt.multipleQueries,searchForFacetValues:Gt.multipleSearchForFacetValues,multipleBatch:Gt.multipleBatch,multipleGetObjects:Gt.multipleGetObjects,multipleQueries:Gt.multipleQueries,copyIndex:Gt.copyIndex,copySettings:Gt.copySettings,copyRules:Gt.copyRules,copySynonyms:Gt.copySynonyms,moveIndex:Gt.moveIndex,listIndices:Gt.listIndices,getLogs:Gt.getLogs,listClusters:Gt.listClusters,multipleSearchForFacetValues:Gt.multipleSearchForFacetValues,getApiKey:Gt.getApiKey,addApiKey:Gt.addApiKey,listApiKeys:Gt.listApiKeys,updateApiKey:Gt.updateApiKey,deleteApiKey:Gt.deleteApiKey,restoreApiKey:Gt.restoreApiKey,assignUserID:Gt.assignUserID,assignUserIDs:Gt.assignUserIDs,getUserID:Gt.getUserID,searchUserIDs:Gt.searchUserIDs,listUserIDs:Gt.listUserIDs,getTopUserIDs:Gt.getTopUserIDs,removeUserID:Gt.removeUserID,hasPendingMappings:Gt.hasPendingMappings,generateSecuredApiKey:Gt.generateSecuredApiKey,getSecuredApiKeyRemainingValidity:Gt.getSecuredApiKeyRemainingValidity,destroy:R9.destroy,clearDictionaryEntries:Gt.clearDictionaryEntries,deleteDictionaryEntries:Gt.deleteDictionaryEntries,getDictionarySettings:Gt.getDictionarySettings,getAppTask:Gt.getAppTask,replaceDictionaryEntries:Gt.replaceDictionaryEntries,saveDictionaryEntries:Gt.saveDictionaryEntries,searchDictionaryEntries:Gt.searchDictionaryEntries,setDictionarySettings:Gt.setDictionarySettings,waitAppTask:Gt.waitAppTask,customRequest:Gt.customRequest,initIndex:c=>f=>Gt.initIndex(c)(f,{methods:{batch:Gt.batch,delete:Gt.deleteIndex,findAnswers:Gt.findAnswers,getObject:Gt.getObject,getObjects:Gt.getObjects,saveObject:Gt.saveObject,saveObjects:Gt.saveObjects,search:Gt.search,searchForFacetValues:Gt.searchForFacetValues,waitTask:Gt.waitTask,setSettings:Gt.setSettings,getSettings:Gt.getSettings,partialUpdateObject:Gt.partialUpdateObject,partialUpdateObjects:Gt.partialUpdateObjects,deleteObject:Gt.deleteObject,deleteObjects:Gt.deleteObjects,deleteBy:Gt.deleteBy,clearObjects:Gt.clearObjects,browseObjects:Gt.browseObjects,getObjectPosition:Gt.getObjectPosition,findObject:Gt.findObject,exists:Gt.exists,saveSynonym:Gt.saveSynonym,saveSynonyms:Gt.saveSynonyms,getSynonym:Gt.getSynonym,searchSynonyms:Gt.searchSynonyms,browseSynonyms:Gt.browseSynonyms,deleteSynonym:Gt.deleteSynonym,clearSynonyms:Gt.clearSynonyms,replaceAllObjects:Gt.replaceAllObjects,replaceAllSynonyms:Gt.replaceAllSynonyms,searchRules:Gt.searchRules,getRule:Gt.getRule,deleteRule:Gt.deleteRule,saveRule:Gt.saveRule,saveRules:Gt.saveRules,replaceAllRules:Gt.replaceAllRules,browseRules:Gt.browseRules,clearRules:Gt.clearRules}}),initAnalytics:()=>c=>$C.createAnalyticsClient({...s,...c,methods:{addABTest:$C.addABTest,getABTest:$C.getABTest,getABTests:$C.getABTests,stopABTest:$C.stopABTest,deleteABTest:$C.deleteABTest}}),initPersonalization:n,initRecommendation:()=>c=>(a.logger.info("The `initRecommendation` method is deprecated. Use `initPersonalization` instead."),n()(c))}})}Qye.version=R9.version;Rye.exports=Qye});var F9=G((KYt,T9)=>{var Fye=Tye();T9.exports=Fye;T9.exports.default=Fye});var L9=G((XYt,Lye)=>{"use strict";var Oye=Object.getOwnPropertySymbols,kct=Object.prototype.hasOwnProperty,Qct=Object.prototype.propertyIsEnumerable;function Rct(e){if(e==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}function Tct(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de",Object.getOwnPropertyNames(e)[0]==="5")return!1;for(var t={},r=0;r<10;r++)t["_"+String.fromCharCode(r)]=r;var s=Object.getOwnPropertyNames(t).map(function(n){return t[n]});if(s.join("")!=="0123456789")return!1;var a={};return"abcdefghijklmnopqrst".split("").forEach(function(n){a[n]=n}),Object.keys(Object.assign({},a)).join("")==="abcdefghijklmnopqrst"}catch{return!1}}Lye.exports=Tct()?Object.assign:function(e,t){for(var r,s=Rct(e),a,n=1;n{"use strict";var U9=L9(),ew=60103,_ye=60106;Pn.Fragment=60107;Pn.StrictMode=60108;Pn.Profiler=60114;var Hye=60109,jye=60110,Gye=60112;Pn.Suspense=60113;var qye=60115,Wye=60116;typeof Symbol=="function"&&Symbol.for&&(jc=Symbol.for,ew=jc("react.element"),_ye=jc("react.portal"),Pn.Fragment=jc("react.fragment"),Pn.StrictMode=jc("react.strict_mode"),Pn.Profiler=jc("react.profiler"),Hye=jc("react.provider"),jye=jc("react.context"),Gye=jc("react.forward_ref"),Pn.Suspense=jc("react.suspense"),qye=jc("react.memo"),Wye=jc("react.lazy"));var jc,Mye=typeof Symbol=="function"&&Symbol.iterator;function Fct(e){return e===null||typeof e!="object"?null:(e=Mye&&e[Mye]||e["@@iterator"],typeof e=="function"?e:null)}function RS(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,r=1;r{"use strict";eEe.exports=$ye()});var nF=G((eVt,tEe)=>{function Uct(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}tEe.exports=Uct});var nEe=G((tVt,rEe)=>{var _ct=typeof global=="object"&&global&&global.Object===Object&&global;rEe.exports=_ct});var q9=G((rVt,iEe)=>{var Hct=nEe(),jct=typeof self=="object"&&self&&self.Object===Object&&self,Gct=Hct||jct||Function("return this")();iEe.exports=Gct});var oEe=G((nVt,sEe)=>{var qct=q9(),Wct=function(){return qct.Date.now()};sEe.exports=Wct});var lEe=G((iVt,aEe)=>{var Yct=/\s/;function Vct(e){for(var t=e.length;t--&&Yct.test(e.charAt(t)););return t}aEe.exports=Vct});var uEe=G((sVt,cEe)=>{var Jct=lEe(),Kct=/^\s+/;function zct(e){return e&&e.slice(0,Jct(e)+1).replace(Kct,"")}cEe.exports=zct});var W9=G((oVt,fEe)=>{var Xct=q9(),Zct=Xct.Symbol;fEe.exports=Zct});var dEe=G((aVt,hEe)=>{var AEe=W9(),pEe=Object.prototype,$ct=pEe.hasOwnProperty,eut=pEe.toString,TS=AEe?AEe.toStringTag:void 0;function tut(e){var t=$ct.call(e,TS),r=e[TS];try{e[TS]=void 0;var s=!0}catch{}var a=eut.call(e);return s&&(t?e[TS]=r:delete e[TS]),a}hEe.exports=tut});var mEe=G((lVt,gEe)=>{var rut=Object.prototype,nut=rut.toString;function iut(e){return nut.call(e)}gEe.exports=iut});var CEe=G((cVt,IEe)=>{var yEe=W9(),sut=dEe(),out=mEe(),aut="[object Null]",lut="[object Undefined]",EEe=yEe?yEe.toStringTag:void 0;function cut(e){return e==null?e===void 0?lut:aut:EEe&&EEe in Object(e)?sut(e):out(e)}IEe.exports=cut});var BEe=G((uVt,wEe)=>{function uut(e){return e!=null&&typeof e=="object"}wEe.exports=uut});var SEe=G((fVt,vEe)=>{var fut=CEe(),Aut=BEe(),put="[object Symbol]";function hut(e){return typeof e=="symbol"||Aut(e)&&fut(e)==put}vEe.exports=hut});var xEe=G((AVt,PEe)=>{var dut=uEe(),DEe=nF(),gut=SEe(),bEe=NaN,mut=/^[-+]0x[0-9a-f]+$/i,yut=/^0b[01]+$/i,Eut=/^0o[0-7]+$/i,Iut=parseInt;function Cut(e){if(typeof e=="number")return e;if(gut(e))return bEe;if(DEe(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=DEe(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=dut(e);var r=yut.test(e);return r||Eut.test(e)?Iut(e.slice(2),r?2:8):mut.test(e)?bEe:+e}PEe.exports=Cut});var REe=G((pVt,QEe)=>{var wut=nF(),Y9=oEe(),kEe=xEe(),But="Expected a function",vut=Math.max,Sut=Math.min;function Dut(e,t,r){var s,a,n,c,f,p,h=0,E=!1,C=!1,S=!0;if(typeof e!="function")throw new TypeError(But);t=kEe(t)||0,wut(r)&&(E=!!r.leading,C="maxWait"in r,n=C?vut(kEe(r.maxWait)||0,t):n,S="trailing"in r?!!r.trailing:S);function x(ae){var ge=s,Ae=a;return s=a=void 0,h=ae,c=e.apply(Ae,ge),c}function I(ae){return h=ae,f=setTimeout(U,t),E?x(ae):c}function T(ae){var ge=ae-p,Ae=ae-h,Ce=t-ge;return C?Sut(Ce,n-Ae):Ce}function O(ae){var ge=ae-p,Ae=ae-h;return p===void 0||ge>=t||ge<0||C&&Ae>=n}function U(){var ae=Y9();if(O(ae))return V(ae);f=setTimeout(U,T(ae))}function V(ae){return f=void 0,S&&s?x(ae):(s=a=void 0,c)}function te(){f!==void 0&&clearTimeout(f),h=0,s=p=a=f=void 0}function ie(){return f===void 0?c:V(Y9())}function ue(){var ae=Y9(),ge=O(ae);if(s=arguments,a=this,p=ae,ge){if(f===void 0)return I(p);if(C)return clearTimeout(f),f=setTimeout(U,t),x(p)}return f===void 0&&(f=setTimeout(U,t)),c}return ue.cancel=te,ue.flush=ie,ue}QEe.exports=Dut});var FEe=G((hVt,TEe)=>{var but=REe(),Put=nF(),xut="Expected a function";function kut(e,t,r){var s=!0,a=!0;if(typeof e!="function")throw new TypeError(xut);return Put(r)&&(s="leading"in r?!!r.leading:s,a="trailing"in r?!!r.trailing:a),but(e,t,{leading:s,maxWait:t,trailing:a})}TEe.exports=kut});var J9=G((dVt,V9)=>{"use strict";var Bn=V9.exports;V9.exports.default=Bn;var $n="\x1B[",NS="\x1B]",rw="\x07",iF=";",NEe=process.env.TERM_PROGRAM==="Apple_Terminal";Bn.cursorTo=(e,t)=>{if(typeof e!="number")throw new TypeError("The `x` argument is required");return typeof t!="number"?$n+(e+1)+"G":$n+(t+1)+";"+(e+1)+"H"};Bn.cursorMove=(e,t)=>{if(typeof e!="number")throw new TypeError("The `x` argument is required");let r="";return e<0?r+=$n+-e+"D":e>0&&(r+=$n+e+"C"),t<0?r+=$n+-t+"A":t>0&&(r+=$n+t+"B"),r};Bn.cursorUp=(e=1)=>$n+e+"A";Bn.cursorDown=(e=1)=>$n+e+"B";Bn.cursorForward=(e=1)=>$n+e+"C";Bn.cursorBackward=(e=1)=>$n+e+"D";Bn.cursorLeft=$n+"G";Bn.cursorSavePosition=NEe?"\x1B7":$n+"s";Bn.cursorRestorePosition=NEe?"\x1B8":$n+"u";Bn.cursorGetPosition=$n+"6n";Bn.cursorNextLine=$n+"E";Bn.cursorPrevLine=$n+"F";Bn.cursorHide=$n+"?25l";Bn.cursorShow=$n+"?25h";Bn.eraseLines=e=>{let t="";for(let r=0;r[NS,"8",iF,iF,t,rw,e,NS,"8",iF,iF,rw].join("");Bn.image=(e,t={})=>{let r=`${NS}1337;File=inline=1`;return t.width&&(r+=`;width=${t.width}`),t.height&&(r+=`;height=${t.height}`),t.preserveAspectRatio===!1&&(r+=";preserveAspectRatio=0"),r+":"+e.toString("base64")+rw};Bn.iTerm={setCwd:(e=process.cwd())=>`${NS}50;CurrentDir=${e}${rw}`,annotation:(e,t={})=>{let r=`${NS}1337;`,s=typeof t.x<"u",a=typeof t.y<"u";if((s||a)&&!(s&&a&&typeof t.length<"u"))throw new Error("`x`, `y` and `length` must be defined when `x` or `y` is defined");return e=e.replace(/\|/g,""),r+=t.isHidden?"AddHiddenAnnotation=":"AddAnnotation=",t.length>0?r+=(s?[e,t.length,t.x,t.y]:[t.length,e]).join("|"):r+=e,r+rw}}});var LEe=G((gVt,K9)=>{"use strict";var OEe=(e,t)=>{for(let r of Reflect.ownKeys(t))Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r));return e};K9.exports=OEe;K9.exports.default=OEe});var UEe=G((mVt,oF)=>{"use strict";var Qut=LEe(),sF=new WeakMap,MEe=(e,t={})=>{if(typeof e!="function")throw new TypeError("Expected a function");let r,s=0,a=e.displayName||e.name||"",n=function(...c){if(sF.set(n,++s),s===1)r=e.apply(this,c),e=null;else if(t.throw===!0)throw new Error(`Function \`${a}\` can only be called once`);return r};return Qut(n,e),sF.set(n,s),n};oF.exports=MEe;oF.exports.default=MEe;oF.exports.callCount=e=>{if(!sF.has(e))throw new Error(`The given function \`${e.name}\` is not wrapped by the \`onetime\` package`);return sF.get(e)}});var _Ee=G((yVt,aF)=>{aF.exports=["SIGABRT","SIGALRM","SIGHUP","SIGINT","SIGTERM"];process.platform!=="win32"&&aF.exports.push("SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&aF.exports.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT","SIGUNUSED")});var Z9=G((EVt,sw)=>{var Qi=global.process,Fm=function(e){return e&&typeof e=="object"&&typeof e.removeListener=="function"&&typeof e.emit=="function"&&typeof e.reallyExit=="function"&&typeof e.listeners=="function"&&typeof e.kill=="function"&&typeof e.pid=="number"&&typeof e.on=="function"};Fm(Qi)?(HEe=Ie("assert"),nw=_Ee(),jEe=/^win/i.test(Qi.platform),OS=Ie("events"),typeof OS!="function"&&(OS=OS.EventEmitter),Qi.__signal_exit_emitter__?eo=Qi.__signal_exit_emitter__:(eo=Qi.__signal_exit_emitter__=new OS,eo.count=0,eo.emitted={}),eo.infinite||(eo.setMaxListeners(1/0),eo.infinite=!0),sw.exports=function(e,t){if(!Fm(global.process))return function(){};HEe.equal(typeof e,"function","a callback must be provided for exit handler"),iw===!1&&z9();var r="exit";t&&t.alwaysLast&&(r="afterexit");var s=function(){eo.removeListener(r,e),eo.listeners("exit").length===0&&eo.listeners("afterexit").length===0&&lF()};return eo.on(r,e),s},lF=function(){!iw||!Fm(global.process)||(iw=!1,nw.forEach(function(t){try{Qi.removeListener(t,cF[t])}catch{}}),Qi.emit=uF,Qi.reallyExit=X9,eo.count-=1)},sw.exports.unload=lF,Nm=function(t,r,s){eo.emitted[t]||(eo.emitted[t]=!0,eo.emit(t,r,s))},cF={},nw.forEach(function(e){cF[e]=function(){if(Fm(global.process)){var r=Qi.listeners(e);r.length===eo.count&&(lF(),Nm("exit",null,e),Nm("afterexit",null,e),jEe&&e==="SIGHUP"&&(e="SIGINT"),Qi.kill(Qi.pid,e))}}}),sw.exports.signals=function(){return nw},iw=!1,z9=function(){iw||!Fm(global.process)||(iw=!0,eo.count+=1,nw=nw.filter(function(t){try{return Qi.on(t,cF[t]),!0}catch{return!1}}),Qi.emit=qEe,Qi.reallyExit=GEe)},sw.exports.load=z9,X9=Qi.reallyExit,GEe=function(t){Fm(global.process)&&(Qi.exitCode=t||0,Nm("exit",Qi.exitCode,null),Nm("afterexit",Qi.exitCode,null),X9.call(Qi,Qi.exitCode))},uF=Qi.emit,qEe=function(t,r){if(t==="exit"&&Fm(global.process)){r!==void 0&&(Qi.exitCode=r);var s=uF.apply(this,arguments);return Nm("exit",Qi.exitCode,null),Nm("afterexit",Qi.exitCode,null),s}else return uF.apply(this,arguments)}):sw.exports=function(){return function(){}};var HEe,nw,jEe,OS,eo,lF,Nm,cF,iw,z9,X9,GEe,uF,qEe});var YEe=G((IVt,WEe)=>{"use strict";var Rut=UEe(),Tut=Z9();WEe.exports=Rut(()=>{Tut(()=>{process.stderr.write("\x1B[?25h")},{alwaysLast:!0})})});var $9=G(ow=>{"use strict";var Fut=YEe(),fF=!1;ow.show=(e=process.stderr)=>{e.isTTY&&(fF=!1,e.write("\x1B[?25h"))};ow.hide=(e=process.stderr)=>{e.isTTY&&(Fut(),fF=!0,e.write("\x1B[?25l"))};ow.toggle=(e,t)=>{e!==void 0&&(fF=e),fF?ow.show(t):ow.hide(t)}});var zEe=G(LS=>{"use strict";var KEe=LS&&LS.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(LS,"__esModule",{value:!0});var VEe=KEe(J9()),JEe=KEe($9()),Nut=(e,{showCursor:t=!1}={})=>{let r=0,s="",a=!1,n=c=>{!t&&!a&&(JEe.default.hide(),a=!0);let f=c+` +`;f!==s&&(s=f,e.write(VEe.default.eraseLines(r)+f),r=f.split(` +`).length)};return n.clear=()=>{e.write(VEe.default.eraseLines(r)),s="",r=0},n.done=()=>{s="",r=0,t||(JEe.default.show(),a=!1)},n};LS.default={create:Nut}});var XEe=G((BVt,Out)=>{Out.exports=[{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI",pr:"SYSTEM_PULLREQUEST_PULLREQUESTID"},{name:"Bamboo",constant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT",pr:"BITBUCKET_PR_ID"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITRISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDDY_EXECUTION_PULL_REQUEST_ID"},{name:"Buildkite",constant:"BUILDKITE",env:"BUILDKITE",pr:{env:"BUILDKITE_PULL_REQUEST",ne:"false"}},{name:"CircleCI",constant:"CIRCLE",env:"CIRCLECI",pr:"CIRCLE_PULL_REQUEST"},{name:"Cirrus CI",constant:"CIRRUS",env:"CIRRUS_CI",pr:"CIRRUS_PR"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN"},{name:"Codeship",constant:"CODESHIP",env:{CI_NAME:"codeship"}},{name:"Drone",constant:"DRONE",env:"DRONE",pr:{DRONE_BUILD_EVENT:"pull_request"}},{name:"dsari",constant:"DSARI",env:"DSARI"},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY_BUILD_BASE",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Shippable",constant:"SHIPPABLE",env:"SHIPPABLE",pr:{IS_PULL_REQUEST:"true"}},{name:"Solano CI",constant:"SOLANO",env:"TDDIUM",pr:"TDDIUM_PR_ID"},{name:"Strider CD",constant:"STRIDER",env:"STRIDER"},{name:"TaskCluster",constant:"TASKCLUSTER",env:["TASK_ID","RUN_ID"]},{name:"TeamCity",constant:"TEAMCITY",env:"TEAMCITY_VERSION"},{name:"Travis CI",constant:"TRAVIS",env:"TRAVIS",pr:{env:"TRAVIS_PULL_REQUEST",ne:"false"}}]});var eIe=G(nc=>{"use strict";var $Ee=XEe(),AA=process.env;Object.defineProperty(nc,"_vendors",{value:$Ee.map(function(e){return e.constant})});nc.name=null;nc.isPR=null;$Ee.forEach(function(e){var t=Array.isArray(e.env)?e.env:[e.env],r=t.every(function(s){return ZEe(s)});if(nc[e.constant]=r,r)switch(nc.name=e.name,typeof e.pr){case"string":nc.isPR=!!AA[e.pr];break;case"object":"env"in e.pr?nc.isPR=e.pr.env in AA&&AA[e.pr.env]!==e.pr.ne:"any"in e.pr?nc.isPR=e.pr.any.some(function(s){return!!AA[s]}):nc.isPR=ZEe(e.pr);break;default:nc.isPR=null}});nc.isCI=!!(AA.CI||AA.CONTINUOUS_INTEGRATION||AA.BUILD_NUMBER||AA.RUN_ID||nc.name);function ZEe(e){return typeof e=="string"?!!AA[e]:Object.keys(e).every(function(t){return AA[t]===e[t]})}});var rIe=G((SVt,tIe)=>{"use strict";tIe.exports=eIe().isCI});var iIe=G((DVt,nIe)=>{"use strict";var Lut=e=>{let t=new Set;do for(let r of Reflect.ownKeys(e))t.add([e,r]);while((e=Reflect.getPrototypeOf(e))&&e!==Object.prototype);return t};nIe.exports=(e,{include:t,exclude:r}={})=>{let s=a=>{let n=c=>typeof c=="string"?a===c:c.test(a);return t?t.some(n):r?!r.some(n):!0};for(let[a,n]of Lut(e.constructor.prototype)){if(n==="constructor"||!s(n))continue;let c=Reflect.getOwnPropertyDescriptor(a,n);c&&typeof c.value=="function"&&(e[n]=e[n].bind(e))}return e}});var uIe=G(Kn=>{"use strict";var lw,_S,dF,oq;typeof performance=="object"&&typeof performance.now=="function"?(sIe=performance,Kn.unstable_now=function(){return sIe.now()}):(eq=Date,oIe=eq.now(),Kn.unstable_now=function(){return eq.now()-oIe});var sIe,eq,oIe;typeof window>"u"||typeof MessageChannel!="function"?(aw=null,tq=null,rq=function(){if(aw!==null)try{var e=Kn.unstable_now();aw(!0,e),aw=null}catch(t){throw setTimeout(rq,0),t}},lw=function(e){aw!==null?setTimeout(lw,0,e):(aw=e,setTimeout(rq,0))},_S=function(e,t){tq=setTimeout(e,t)},dF=function(){clearTimeout(tq)},Kn.unstable_shouldYield=function(){return!1},oq=Kn.unstable_forceFrameRate=function(){}):(aIe=window.setTimeout,lIe=window.clearTimeout,typeof console<"u"&&(cIe=window.cancelAnimationFrame,typeof window.requestAnimationFrame!="function"&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),typeof cIe!="function"&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills")),MS=!1,US=null,AF=-1,nq=5,iq=0,Kn.unstable_shouldYield=function(){return Kn.unstable_now()>=iq},oq=function(){},Kn.unstable_forceFrameRate=function(e){0>e||125>>1,a=e[s];if(a!==void 0&&0hF(c,r))p!==void 0&&0>hF(p,c)?(e[s]=p,e[f]=r,s=f):(e[s]=c,e[n]=r,s=n);else if(p!==void 0&&0>hF(p,r))e[s]=p,e[f]=r,s=f;else break e}}return t}return null}function hF(e,t){var r=e.sortIndex-t.sortIndex;return r!==0?r:e.id-t.id}var pA=[],z0=[],Mut=1,Gc=null,ia=3,mF=!1,Om=!1,HS=!1;function lq(e){for(var t=rf(z0);t!==null;){if(t.callback===null)gF(z0);else if(t.startTime<=e)gF(z0),t.sortIndex=t.expirationTime,aq(pA,t);else break;t=rf(z0)}}function cq(e){if(HS=!1,lq(e),!Om)if(rf(pA)!==null)Om=!0,lw(uq);else{var t=rf(z0);t!==null&&_S(cq,t.startTime-e)}}function uq(e,t){Om=!1,HS&&(HS=!1,dF()),mF=!0;var r=ia;try{for(lq(t),Gc=rf(pA);Gc!==null&&(!(Gc.expirationTime>t)||e&&!Kn.unstable_shouldYield());){var s=Gc.callback;if(typeof s=="function"){Gc.callback=null,ia=Gc.priorityLevel;var a=s(Gc.expirationTime<=t);t=Kn.unstable_now(),typeof a=="function"?Gc.callback=a:Gc===rf(pA)&&gF(pA),lq(t)}else gF(pA);Gc=rf(pA)}if(Gc!==null)var n=!0;else{var c=rf(z0);c!==null&&_S(cq,c.startTime-t),n=!1}return n}finally{Gc=null,ia=r,mF=!1}}var Uut=oq;Kn.unstable_IdlePriority=5;Kn.unstable_ImmediatePriority=1;Kn.unstable_LowPriority=4;Kn.unstable_NormalPriority=3;Kn.unstable_Profiling=null;Kn.unstable_UserBlockingPriority=2;Kn.unstable_cancelCallback=function(e){e.callback=null};Kn.unstable_continueExecution=function(){Om||mF||(Om=!0,lw(uq))};Kn.unstable_getCurrentPriorityLevel=function(){return ia};Kn.unstable_getFirstCallbackNode=function(){return rf(pA)};Kn.unstable_next=function(e){switch(ia){case 1:case 2:case 3:var t=3;break;default:t=ia}var r=ia;ia=t;try{return e()}finally{ia=r}};Kn.unstable_pauseExecution=function(){};Kn.unstable_requestPaint=Uut;Kn.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var r=ia;ia=e;try{return t()}finally{ia=r}};Kn.unstable_scheduleCallback=function(e,t,r){var s=Kn.unstable_now();switch(typeof r=="object"&&r!==null?(r=r.delay,r=typeof r=="number"&&0s?(e.sortIndex=r,aq(z0,e),rf(pA)===null&&e===rf(z0)&&(HS?dF():HS=!0,_S(cq,r-s))):(e.sortIndex=a,aq(pA,e),Om||mF||(Om=!0,lw(uq))),e};Kn.unstable_wrapCallback=function(e){var t=ia;return function(){var r=ia;ia=t;try{return e.apply(this,arguments)}finally{ia=r}}}});var fq=G((PVt,fIe)=>{"use strict";fIe.exports=uIe()});var AIe=G((xVt,jS)=>{jS.exports=function(t){var r={},s=L9(),a=dn(),n=fq();function c(v){for(var D="https://reactjs.org/docs/error-decoder.html?invariant="+v,Q=1;Q_e||Y[ve]!==ne[_e])return` +`+Y[ve].replace(" at new "," at ");while(1<=ve&&0<=_e);break}}}finally{we=!1,Error.prepareStackTrace=Q}return(v=v?v.displayName||v.name:"")?lc(v):""}var cc=[],Oi=-1;function co(v){return{current:v}}function Tt(v){0>Oi||(v.current=cc[Oi],cc[Oi]=null,Oi--)}function Qn(v,D){Oi++,cc[Oi]=v.current,v.current=D}var pa={},Gi=co(pa),Li=co(!1),qa=pa;function mn(v,D){var Q=v.type.contextTypes;if(!Q)return pa;var H=v.stateNode;if(H&&H.__reactInternalMemoizedUnmaskedChildContext===D)return H.__reactInternalMemoizedMaskedChildContext;var Y={},ne;for(ne in Q)Y[ne]=D[ne];return H&&(v=v.stateNode,v.__reactInternalMemoizedUnmaskedChildContext=D,v.__reactInternalMemoizedMaskedChildContext=Y),Y}function Xn(v){return v=v.childContextTypes,v!=null}function uu(){Tt(Li),Tt(Gi)}function mh(v,D,Q){if(Gi.current!==pa)throw Error(c(168));Qn(Gi,D),Qn(Li,Q)}function Wa(v,D,Q){var H=v.stateNode;if(v=D.childContextTypes,typeof H.getChildContext!="function")return Q;H=H.getChildContext();for(var Y in H)if(!(Y in v))throw Error(c(108,d(D)||"Unknown",Y));return s({},Q,H)}function Ya(v){return v=(v=v.stateNode)&&v.__reactInternalMemoizedMergedChildContext||pa,qa=Gi.current,Qn(Gi,v),Qn(Li,Li.current),!0}function Va(v,D,Q){var H=v.stateNode;if(!H)throw Error(c(169));Q?(v=Wa(v,D,qa),H.__reactInternalMemoizedMergedChildContext=v,Tt(Li),Tt(Gi),Qn(Gi,v)):Tt(Li),Qn(Li,Q)}var $e=null,Ja=null,mf=n.unstable_now;mf();var uc=0,vn=8;function ha(v){if(1&v)return vn=15,1;if(2&v)return vn=14,2;if(4&v)return vn=13,4;var D=24&v;return D!==0?(vn=12,D):v&32?(vn=11,32):(D=192&v,D!==0?(vn=10,D):v&256?(vn=9,256):(D=3584&v,D!==0?(vn=8,D):v&4096?(vn=7,4096):(D=4186112&v,D!==0?(vn=6,D):(D=62914560&v,D!==0?(vn=5,D):v&67108864?(vn=4,67108864):v&134217728?(vn=3,134217728):(D=805306368&v,D!==0?(vn=2,D):1073741824&v?(vn=1,1073741824):(vn=8,v))))))}function UA(v){switch(v){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}function _A(v){switch(v){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(c(358,v))}}function da(v,D){var Q=v.pendingLanes;if(Q===0)return vn=0;var H=0,Y=0,ne=v.expiredLanes,ve=v.suspendedLanes,_e=v.pingedLanes;if(ne!==0)H=ne,Y=vn=15;else if(ne=Q&134217727,ne!==0){var ht=ne&~ve;ht!==0?(H=ha(ht),Y=vn):(_e&=ne,_e!==0&&(H=ha(_e),Y=vn))}else ne=Q&~ve,ne!==0?(H=ha(ne),Y=vn):_e!==0&&(H=ha(_e),Y=vn);if(H===0)return 0;if(H=31-is(H),H=Q&((0>H?0:1<Q;Q++)D.push(v);return D}function Ka(v,D,Q){v.pendingLanes|=D;var H=D-1;v.suspendedLanes&=H,v.pingedLanes&=H,v=v.eventTimes,D=31-is(D),v[D]=Q}var is=Math.clz32?Math.clz32:Ac,fc=Math.log,fu=Math.LN2;function Ac(v){return v===0?32:31-(fc(v)/fu|0)|0}var za=n.unstable_runWithPriority,Mi=n.unstable_scheduleCallback,Bs=n.unstable_cancelCallback,Ql=n.unstable_shouldYield,yf=n.unstable_requestPaint,pc=n.unstable_now,Bi=n.unstable_getCurrentPriorityLevel,Tn=n.unstable_ImmediatePriority,hc=n.unstable_UserBlockingPriority,Ke=n.unstable_NormalPriority,ot=n.unstable_LowPriority,St=n.unstable_IdlePriority,lr={},ee=yf!==void 0?yf:function(){},ye=null,Oe=null,mt=!1,Et=pc(),bt=1e4>Et?pc:function(){return pc()-Et};function tr(){switch(Bi()){case Tn:return 99;case hc:return 98;case Ke:return 97;case ot:return 96;case St:return 95;default:throw Error(c(332))}}function pn(v){switch(v){case 99:return Tn;case 98:return hc;case 97:return Ke;case 96:return ot;case 95:return St;default:throw Error(c(332))}}function ci(v,D){return v=pn(v),za(v,D)}function qi(v,D,Q){return v=pn(v),Mi(v,D,Q)}function Fn(){if(Oe!==null){var v=Oe;Oe=null,Bs(v)}Xa()}function Xa(){if(!mt&&ye!==null){mt=!0;var v=0;try{var D=ye;ci(99,function(){for(;vNn?(Hn=Qr,Qr=null):Hn=Qr.sibling;var zr=Zt(rt,Qr,gt[Nn],Xt);if(zr===null){Qr===null&&(Qr=Hn);break}v&&Qr&&zr.alternate===null&&D(rt,Qr),We=ne(zr,We,Nn),ti===null?Dr=zr:ti.sibling=zr,ti=zr,Qr=Hn}if(Nn===gt.length)return Q(rt,Qr),Dr;if(Qr===null){for(;NnNn?(Hn=Qr,Qr=null):Hn=Qr.sibling;var ui=Zt(rt,Qr,zr.value,Xt);if(ui===null){Qr===null&&(Qr=Hn);break}v&&Qr&&ui.alternate===null&&D(rt,Qr),We=ne(ui,We,Nn),ti===null?Dr=ui:ti.sibling=ui,ti=ui,Qr=Hn}if(zr.done)return Q(rt,Qr),Dr;if(Qr===null){for(;!zr.done;Nn++,zr=gt.next())zr=Lr(rt,zr.value,Xt),zr!==null&&(We=ne(zr,We,Nn),ti===null?Dr=zr:ti.sibling=zr,ti=zr);return Dr}for(Qr=H(rt,Qr);!zr.done;Nn++,zr=gt.next())zr=Zn(Qr,rt,Nn,zr.value,Xt),zr!==null&&(v&&zr.alternate!==null&&Qr.delete(zr.key===null?Nn:zr.key),We=ne(zr,We,Nn),ti===null?Dr=zr:ti.sibling=zr,ti=zr);return v&&Qr.forEach(function(vu){return D(rt,vu)}),Dr}return function(rt,We,gt,Xt){var Dr=typeof gt=="object"&>!==null&>.type===E&>.key===null;Dr&&(gt=gt.props.children);var ti=typeof gt=="object"&>!==null;if(ti)switch(gt.$$typeof){case p:e:{for(ti=gt.key,Dr=We;Dr!==null;){if(Dr.key===ti){switch(Dr.tag){case 7:if(gt.type===E){Q(rt,Dr.sibling),We=Y(Dr,gt.props.children),We.return=rt,rt=We;break e}break;default:if(Dr.elementType===gt.type){Q(rt,Dr.sibling),We=Y(Dr,gt.props),We.ref=yt(rt,Dr,gt),We.return=rt,rt=We;break e}}Q(rt,Dr);break}else D(rt,Dr);Dr=Dr.sibling}gt.type===E?(We=Tf(gt.props.children,rt.mode,Xt,gt.key),We.return=rt,rt=We):(Xt=ng(gt.type,gt.key,gt.props,null,rt.mode,Xt),Xt.ref=yt(rt,We,gt),Xt.return=rt,rt=Xt)}return ve(rt);case h:e:{for(Dr=gt.key;We!==null;){if(We.key===Dr)if(We.tag===4&&We.stateNode.containerInfo===gt.containerInfo&&We.stateNode.implementation===gt.implementation){Q(rt,We.sibling),We=Y(We,gt.children||[]),We.return=rt,rt=We;break e}else{Q(rt,We);break}else D(rt,We);We=We.sibling}We=Lo(gt,rt.mode,Xt),We.return=rt,rt=We}return ve(rt)}if(typeof gt=="string"||typeof gt=="number")return gt=""+gt,We!==null&&We.tag===6?(Q(rt,We.sibling),We=Y(We,gt),We.return=rt,rt=We):(Q(rt,We),We=E2(gt,rt.mode,Xt),We.return=rt,rt=We),ve(rt);if(If(gt))return Ei(rt,We,gt,Xt);if(Ee(gt))return il(rt,We,gt,Xt);if(ti&&pu(rt,gt),typeof gt>"u"&&!Dr)switch(rt.tag){case 1:case 22:case 0:case 11:case 15:throw Error(c(152,d(rt.type)||"Component"))}return Q(rt,We)}}var Od=Dy(!0),Y1=Dy(!1),Bh={},ur=co(Bh),zi=co(Bh),Cf=co(Bh);function Za(v){if(v===Bh)throw Error(c(174));return v}function Ld(v,D){Qn(Cf,D),Qn(zi,v),Qn(ur,Bh),v=st(D),Tt(ur),Qn(ur,v)}function hu(){Tt(ur),Tt(zi),Tt(Cf)}function wf(v){var D=Za(Cf.current),Q=Za(ur.current);D=_(Q,v.type,D),Q!==D&&(Qn(zi,v),Qn(ur,D))}function wt(v){zi.current===v&&(Tt(ur),Tt(zi))}var mi=co(0);function WA(v){for(var D=v;D!==null;){if(D.tag===13){var Q=D.memoizedState;if(Q!==null&&(Q=Q.dehydrated,Q===null||dr(Q)||xo(Q)))return D}else if(D.tag===19&&D.memoizedProps.revealOrder!==void 0){if(D.flags&64)return D}else if(D.child!==null){D.child.return=D,D=D.child;continue}if(D===v)break;for(;D.sibling===null;){if(D.return===null||D.return===v)return null;D=D.return}D.sibling.return=D.return,D=D.sibling}return null}var $a=null,ma=null,el=!1;function Md(v,D){var Q=nl(5,null,null,0);Q.elementType="DELETED",Q.type="DELETED",Q.stateNode=D,Q.return=v,Q.flags=8,v.lastEffect!==null?(v.lastEffect.nextEffect=Q,v.lastEffect=Q):v.firstEffect=v.lastEffect=Q}function vh(v,D){switch(v.tag){case 5:return D=Aa(D,v.type,v.pendingProps),D!==null?(v.stateNode=D,!0):!1;case 6:return D=OA(D,v.pendingProps),D!==null?(v.stateNode=D,!0):!1;case 13:return!1;default:return!1}}function Ud(v){if(el){var D=ma;if(D){var Q=D;if(!vh(v,D)){if(D=Ga(Q),!D||!vh(v,D)){v.flags=v.flags&-1025|2,el=!1,$a=v;return}Md($a,Q)}$a=v,ma=Ue(D)}else v.flags=v.flags&-1025|2,el=!1,$a=v}}function by(v){for(v=v.return;v!==null&&v.tag!==5&&v.tag!==3&&v.tag!==13;)v=v.return;$a=v}function YA(v){if(!X||v!==$a)return!1;if(!el)return by(v),el=!0,!1;var D=v.type;if(v.tag!==5||D!=="head"&&D!=="body"&&!ct(D,v.memoizedProps))for(D=ma;D;)Md(v,D),D=Ga(D);if(by(v),v.tag===13){if(!X)throw Error(c(316));if(v=v.memoizedState,v=v!==null?v.dehydrated:null,!v)throw Error(c(317));ma=LA(v)}else ma=$a?Ga(v.stateNode):null;return!0}function _d(){X&&(ma=$a=null,el=!1)}var du=[];function gu(){for(var v=0;vne))throw Error(c(301));ne+=1,Pi=ss=null,D.updateQueue=null,Bf.current=re,v=Q(H,Y)}while(vf)}if(Bf.current=kt,D=ss!==null&&ss.next!==null,mu=0,Pi=ss=qn=null,VA=!1,D)throw Error(c(300));return v}function os(){var v={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return Pi===null?qn.memoizedState=Pi=v:Pi=Pi.next=v,Pi}function Nl(){if(ss===null){var v=qn.alternate;v=v!==null?v.memoizedState:null}else v=ss.next;var D=Pi===null?qn.memoizedState:Pi.next;if(D!==null)Pi=D,ss=v;else{if(v===null)throw Error(c(310));ss=v,v={memoizedState:ss.memoizedState,baseState:ss.baseState,baseQueue:ss.baseQueue,queue:ss.queue,next:null},Pi===null?qn.memoizedState=Pi=v:Pi=Pi.next=v}return Pi}function Fo(v,D){return typeof D=="function"?D(v):D}function Sf(v){var D=Nl(),Q=D.queue;if(Q===null)throw Error(c(311));Q.lastRenderedReducer=v;var H=ss,Y=H.baseQueue,ne=Q.pending;if(ne!==null){if(Y!==null){var ve=Y.next;Y.next=ne.next,ne.next=ve}H.baseQueue=Y=ne,Q.pending=null}if(Y!==null){Y=Y.next,H=H.baseState;var _e=ve=ne=null,ht=Y;do{var Wt=ht.lane;if((mu&Wt)===Wt)_e!==null&&(_e=_e.next={lane:0,action:ht.action,eagerReducer:ht.eagerReducer,eagerState:ht.eagerState,next:null}),H=ht.eagerReducer===v?ht.eagerState:v(H,ht.action);else{var Sr={lane:Wt,action:ht.action,eagerReducer:ht.eagerReducer,eagerState:ht.eagerState,next:null};_e===null?(ve=_e=Sr,ne=H):_e=_e.next=Sr,qn.lanes|=Wt,zd|=Wt}ht=ht.next}while(ht!==null&&ht!==Y);_e===null?ne=H:_e.next=ve,ko(H,D.memoizedState)||(Je=!0),D.memoizedState=H,D.baseState=ne,D.baseQueue=_e,Q.lastRenderedState=H}return[D.memoizedState,Q.dispatch]}function Df(v){var D=Nl(),Q=D.queue;if(Q===null)throw Error(c(311));Q.lastRenderedReducer=v;var H=Q.dispatch,Y=Q.pending,ne=D.memoizedState;if(Y!==null){Q.pending=null;var ve=Y=Y.next;do ne=v(ne,ve.action),ve=ve.next;while(ve!==Y);ko(ne,D.memoizedState)||(Je=!0),D.memoizedState=ne,D.baseQueue===null&&(D.baseState=ne),Q.lastRenderedState=ne}return[ne,H]}function Ol(v,D,Q){var H=D._getVersion;H=H(D._source);var Y=y?D._workInProgressVersionPrimary:D._workInProgressVersionSecondary;if(Y!==null?v=Y===H:(v=v.mutableReadLanes,(v=(mu&v)===v)&&(y?D._workInProgressVersionPrimary=H:D._workInProgressVersionSecondary=H,du.push(D))),v)return Q(D._source);throw du.push(D),Error(c(350))}function En(v,D,Q,H){var Y=fo;if(Y===null)throw Error(c(349));var ne=D._getVersion,ve=ne(D._source),_e=Bf.current,ht=_e.useState(function(){return Ol(Y,D,Q)}),Wt=ht[1],Sr=ht[0];ht=Pi;var Lr=v.memoizedState,Zt=Lr.refs,Zn=Zt.getSnapshot,Ei=Lr.source;Lr=Lr.subscribe;var il=qn;return v.memoizedState={refs:Zt,source:D,subscribe:H},_e.useEffect(function(){Zt.getSnapshot=Q,Zt.setSnapshot=Wt;var rt=ne(D._source);if(!ko(ve,rt)){rt=Q(D._source),ko(Sr,rt)||(Wt(rt),rt=Ds(il),Y.mutableReadLanes|=rt&Y.pendingLanes),rt=Y.mutableReadLanes,Y.entangledLanes|=rt;for(var We=Y.entanglements,gt=rt;0Q?98:Q,function(){v(!0)}),ci(97c2&&(D.flags|=64,Y=!0,$A(H,!1),D.lanes=33554432)}else{if(!Y)if(v=WA(ne),v!==null){if(D.flags|=64,Y=!0,v=v.updateQueue,v!==null&&(D.updateQueue=v,D.flags|=4),$A(H,!0),H.tail===null&&H.tailMode==="hidden"&&!ne.alternate&&!el)return D=D.lastEffect=H.lastEffect,D!==null&&(D.nextEffect=null),null}else 2*bt()-H.renderingStartTime>c2&&Q!==1073741824&&(D.flags|=64,Y=!0,$A(H,!1),D.lanes=33554432);H.isBackwards?(ne.sibling=D.child,D.child=ne):(v=H.last,v!==null?v.sibling=ne:D.child=ne,H.last=ne)}return H.tail!==null?(v=H.tail,H.rendering=v,H.tail=v.sibling,H.lastEffect=D.lastEffect,H.renderingStartTime=bt(),v.sibling=null,D=mi.current,Qn(mi,Y?D&1|2:D&1),v):null;case 23:case 24:return d2(),v!==null&&v.memoizedState!==null!=(D.memoizedState!==null)&&H.mode!=="unstable-defer-without-hiding"&&(D.flags|=4),null}throw Error(c(156,D.tag))}function bL(v){switch(v.tag){case 1:Xn(v.type)&&uu();var D=v.flags;return D&4096?(v.flags=D&-4097|64,v):null;case 3:if(hu(),Tt(Li),Tt(Gi),gu(),D=v.flags,D&64)throw Error(c(285));return v.flags=D&-4097|64,v;case 5:return wt(v),null;case 13:return Tt(mi),D=v.flags,D&4096?(v.flags=D&-4097|64,v):null;case 19:return Tt(mi),null;case 4:return hu(),null;case 10:return Fd(v),null;case 23:case 24:return d2(),null;default:return null}}function qd(v,D){try{var Q="",H=D;do Q+=W1(H),H=H.return;while(H);var Y=Q}catch(ne){Y=` +Error generating stack: `+ne.message+` +`+ne.stack}return{value:v,source:D,stack:Y}}function Wd(v,D){try{console.error(D.value)}catch(Q){setTimeout(function(){throw Q})}}var PL=typeof WeakMap=="function"?WeakMap:Map;function z1(v,D,Q){Q=Tl(-1,Q),Q.tag=3,Q.payload={element:null};var H=D.value;return Q.callback=function(){Gy||(Gy=!0,u2=H),Wd(v,D)},Q}function Yd(v,D,Q){Q=Tl(-1,Q),Q.tag=3;var H=v.type.getDerivedStateFromError;if(typeof H=="function"){var Y=D.value;Q.payload=function(){return Wd(v,D),H(Y)}}var ne=v.stateNode;return ne!==null&&typeof ne.componentDidCatch=="function"&&(Q.callback=function(){typeof H!="function"&&(gc===null?gc=new Set([this]):gc.add(this),Wd(v,D));var ve=D.stack;this.componentDidCatch(D.value,{componentStack:ve!==null?ve:""})}),Q}var xL=typeof WeakSet=="function"?WeakSet:Set;function X1(v){var D=v.ref;if(D!==null)if(typeof D=="function")try{D(null)}catch(Q){Rf(v,Q)}else D.current=null}function Ry(v,D){switch(D.tag){case 0:case 11:case 15:case 22:return;case 1:if(D.flags&256&&v!==null){var Q=v.memoizedProps,H=v.memoizedState;v=D.stateNode,D=v.getSnapshotBeforeUpdate(D.elementType===D.type?Q:Qo(D.type,Q),H),v.__reactInternalSnapshotBeforeUpdate=D}return;case 3:F&&D.flags&256&&Ns(D.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(c(163))}function Qh(v,D){if(D=D.updateQueue,D=D!==null?D.lastEffect:null,D!==null){var Q=D=D.next;do{if((Q.tag&v)===v){var H=Q.destroy;Q.destroy=void 0,H!==void 0&&H()}Q=Q.next}while(Q!==D)}}function uP(v,D,Q){switch(Q.tag){case 0:case 11:case 15:case 22:if(D=Q.updateQueue,D=D!==null?D.lastEffect:null,D!==null){v=D=D.next;do{if((v.tag&3)===3){var H=v.create;v.destroy=H()}v=v.next}while(v!==D)}if(D=Q.updateQueue,D=D!==null?D.lastEffect:null,D!==null){v=D=D.next;do{var Y=v;H=Y.next,Y=Y.tag,Y&4&&Y&1&&(vP(Q,v),ML(Q,v)),v=H}while(v!==D)}return;case 1:v=Q.stateNode,Q.flags&4&&(D===null?v.componentDidMount():(H=Q.elementType===Q.type?D.memoizedProps:Qo(Q.type,D.memoizedProps),v.componentDidUpdate(H,D.memoizedState,v.__reactInternalSnapshotBeforeUpdate))),D=Q.updateQueue,D!==null&&vy(Q,D,v);return;case 3:if(D=Q.updateQueue,D!==null){if(v=null,Q.child!==null)switch(Q.child.tag){case 5:v=Qe(Q.child.stateNode);break;case 1:v=Q.child.stateNode}vy(Q,D,v)}return;case 5:v=Q.stateNode,D===null&&Q.flags&4&&so(v,Q.type,Q.memoizedProps,Q);return;case 6:return;case 4:return;case 12:return;case 13:X&&Q.memoizedState===null&&(Q=Q.alternate,Q!==null&&(Q=Q.memoizedState,Q!==null&&(Q=Q.dehydrated,Q!==null&&lu(Q))));return;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(c(163))}function fP(v,D){if(F)for(var Q=v;;){if(Q.tag===5){var H=Q.stateNode;D?dh(H):ao(Q.stateNode,Q.memoizedProps)}else if(Q.tag===6)H=Q.stateNode,D?gh(H):Gn(H,Q.memoizedProps);else if((Q.tag!==23&&Q.tag!==24||Q.memoizedState===null||Q===v)&&Q.child!==null){Q.child.return=Q,Q=Q.child;continue}if(Q===v)break;for(;Q.sibling===null;){if(Q.return===null||Q.return===v)return;Q=Q.return}Q.sibling.return=Q.return,Q=Q.sibling}}function Ty(v,D){if(Ja&&typeof Ja.onCommitFiberUnmount=="function")try{Ja.onCommitFiberUnmount($e,D)}catch{}switch(D.tag){case 0:case 11:case 14:case 15:case 22:if(v=D.updateQueue,v!==null&&(v=v.lastEffect,v!==null)){var Q=v=v.next;do{var H=Q,Y=H.destroy;if(H=H.tag,Y!==void 0)if(H&4)vP(D,Q);else{H=D;try{Y()}catch(ne){Rf(H,ne)}}Q=Q.next}while(Q!==v)}break;case 1:if(X1(D),v=D.stateNode,typeof v.componentWillUnmount=="function")try{v.props=D.memoizedProps,v.state=D.memoizedState,v.componentWillUnmount()}catch(ne){Rf(D,ne)}break;case 5:X1(D);break;case 4:F?dP(v,D):z&&z&&(D=D.stateNode.containerInfo,v=su(D),FA(D,v))}}function AP(v,D){for(var Q=D;;)if(Ty(v,Q),Q.child===null||F&&Q.tag===4){if(Q===D)break;for(;Q.sibling===null;){if(Q.return===null||Q.return===D)return;Q=Q.return}Q.sibling.return=Q.return,Q=Q.sibling}else Q.child.return=Q,Q=Q.child}function Fy(v){v.alternate=null,v.child=null,v.dependencies=null,v.firstEffect=null,v.lastEffect=null,v.memoizedProps=null,v.memoizedState=null,v.pendingProps=null,v.return=null,v.updateQueue=null}function pP(v){return v.tag===5||v.tag===3||v.tag===4}function hP(v){if(F){e:{for(var D=v.return;D!==null;){if(pP(D))break e;D=D.return}throw Error(c(160))}var Q=D;switch(D=Q.stateNode,Q.tag){case 5:var H=!1;break;case 3:D=D.containerInfo,H=!0;break;case 4:D=D.containerInfo,H=!0;break;default:throw Error(c(161))}Q.flags&16&&(df(D),Q.flags&=-17);e:t:for(Q=v;;){for(;Q.sibling===null;){if(Q.return===null||pP(Q.return)){Q=null;break e}Q=Q.return}for(Q.sibling.return=Q.return,Q=Q.sibling;Q.tag!==5&&Q.tag!==6&&Q.tag!==18;){if(Q.flags&2||Q.child===null||Q.tag===4)continue t;Q.child.return=Q,Q=Q.child}if(!(Q.flags&2)){Q=Q.stateNode;break e}}H?Z1(v,Q,D):$1(v,Q,D)}}function Z1(v,D,Q){var H=v.tag,Y=H===5||H===6;if(Y)v=Y?v.stateNode:v.stateNode.instance,D?oo(Q,v,D):Do(Q,v);else if(H!==4&&(v=v.child,v!==null))for(Z1(v,D,Q),v=v.sibling;v!==null;)Z1(v,D,Q),v=v.sibling}function $1(v,D,Q){var H=v.tag,Y=H===5||H===6;if(Y)v=Y?v.stateNode:v.stateNode.instance,D?ji(Q,v,D):li(Q,v);else if(H!==4&&(v=v.child,v!==null))for($1(v,D,Q),v=v.sibling;v!==null;)$1(v,D,Q),v=v.sibling}function dP(v,D){for(var Q=D,H=!1,Y,ne;;){if(!H){H=Q.return;e:for(;;){if(H===null)throw Error(c(160));switch(Y=H.stateNode,H.tag){case 5:ne=!1;break e;case 3:Y=Y.containerInfo,ne=!0;break e;case 4:Y=Y.containerInfo,ne=!0;break e}H=H.return}H=!0}if(Q.tag===5||Q.tag===6)AP(v,Q),ne?TA(Y,Q.stateNode):Po(Y,Q.stateNode);else if(Q.tag===4){if(Q.child!==null){Y=Q.stateNode.containerInfo,ne=!0,Q.child.return=Q,Q=Q.child;continue}}else if(Ty(v,Q),Q.child!==null){Q.child.return=Q,Q=Q.child;continue}if(Q===D)break;for(;Q.sibling===null;){if(Q.return===null||Q.return===D)return;Q=Q.return,Q.tag===4&&(H=!1)}Q.sibling.return=Q.return,Q=Q.sibling}}function e2(v,D){if(F){switch(D.tag){case 0:case 11:case 14:case 15:case 22:Qh(3,D);return;case 1:return;case 5:var Q=D.stateNode;if(Q!=null){var H=D.memoizedProps;v=v!==null?v.memoizedProps:H;var Y=D.type,ne=D.updateQueue;D.updateQueue=null,ne!==null&&bo(Q,ne,Y,v,H,D)}return;case 6:if(D.stateNode===null)throw Error(c(162));Q=D.memoizedProps,ns(D.stateNode,v!==null?v.memoizedProps:Q,Q);return;case 3:X&&(D=D.stateNode,D.hydrate&&(D.hydrate=!1,MA(D.containerInfo)));return;case 12:return;case 13:gP(D),Vd(D);return;case 19:Vd(D);return;case 17:return;case 23:case 24:fP(D,D.memoizedState!==null);return}throw Error(c(163))}switch(D.tag){case 0:case 11:case 14:case 15:case 22:Qh(3,D);return;case 12:return;case 13:gP(D),Vd(D);return;case 19:Vd(D);return;case 3:X&&(Q=D.stateNode,Q.hydrate&&(Q.hydrate=!1,MA(Q.containerInfo)));break;case 23:case 24:return}e:if(z){switch(D.tag){case 1:case 5:case 6:case 20:break e;case 3:case 4:D=D.stateNode,FA(D.containerInfo,D.pendingChildren);break e}throw Error(c(163))}}function gP(v){v.memoizedState!==null&&(l2=bt(),F&&fP(v.child,!0))}function Vd(v){var D=v.updateQueue;if(D!==null){v.updateQueue=null;var Q=v.stateNode;Q===null&&(Q=v.stateNode=new xL),D.forEach(function(H){var Y=_L.bind(null,v,H);Q.has(H)||(Q.add(H),H.then(Y,Y))})}}function kL(v,D){return v!==null&&(v=v.memoizedState,v===null||v.dehydrated!==null)?(D=D.memoizedState,D!==null&&D.dehydrated===null):!1}var Ny=0,Oy=1,Ly=2,Jd=3,My=4;if(typeof Symbol=="function"&&Symbol.for){var Kd=Symbol.for;Ny=Kd("selector.component"),Oy=Kd("selector.has_pseudo_class"),Ly=Kd("selector.role"),Jd=Kd("selector.test_id"),My=Kd("selector.text")}function Uy(v){var D=$(v);if(D!=null){if(typeof D.memoizedProps["data-testname"]!="string")throw Error(c(364));return D}if(v=ir(v),v===null)throw Error(c(362));return v.stateNode.current}function Pf(v,D){switch(D.$$typeof){case Ny:if(v.type===D.value)return!0;break;case Oy:e:{D=D.value,v=[v,0];for(var Q=0;Q";case Oy:return":has("+(xf(v)||"")+")";case Ly:return'[role="'+v.value+'"]';case My:return'"'+v.value+'"';case Jd:return'[data-testname="'+v.value+'"]';default:throw Error(c(365,v))}}function t2(v,D){var Q=[];v=[v,0];for(var H=0;HY&&(Y=ve),Q&=~ne}if(Q=Y,Q=bt()-Q,Q=(120>Q?120:480>Q?480:1080>Q?1080:1920>Q?1920:3e3>Q?3e3:4320>Q?4320:1960*RL(Q/1960))-Q,10 component higher in the tree to provide a loading indicator or placeholder to display.`)}Ss!==5&&(Ss=2),ht=qd(ht,_e),Zt=ve;do{switch(Zt.tag){case 3:ne=ht,Zt.flags|=4096,D&=-D,Zt.lanes|=D;var ti=z1(Zt,ne,D);By(Zt,ti);break e;case 1:ne=ht;var Qr=Zt.type,Nn=Zt.stateNode;if(!(Zt.flags&64)&&(typeof Qr.getDerivedStateFromError=="function"||Nn!==null&&typeof Nn.componentDidCatch=="function"&&(gc===null||!gc.has(Nn)))){Zt.flags|=4096,D&=-D,Zt.lanes|=D;var Hn=Yd(Zt,ne,D);By(Zt,Hn);break e}}Zt=Zt.return}while(Zt!==null)}BP(Q)}catch(zr){D=zr,Xi===Q&&Q!==null&&(Xi=Q=Q.return);continue}break}while(!0)}function CP(){var v=Hy.current;return Hy.current=kt,v===null?kt:v}function rg(v,D){var Q=xr;xr|=16;var H=CP();fo===v&&Ms===D||Nh(v,D);do try{FL();break}catch(Y){IP(v,Y)}while(!0);if(Rd(),xr=Q,Hy.current=H,Xi!==null)throw Error(c(261));return fo=null,Ms=0,Ss}function FL(){for(;Xi!==null;)wP(Xi)}function NL(){for(;Xi!==null&&!Ql();)wP(Xi)}function wP(v){var D=bP(v.alternate,v,ep);v.memoizedProps=v.pendingProps,D===null?BP(v):Xi=D,n2.current=null}function BP(v){var D=v;do{var Q=D.alternate;if(v=D.return,D.flags&2048){if(Q=bL(D),Q!==null){Q.flags&=2047,Xi=Q;return}v!==null&&(v.firstEffect=v.lastEffect=null,v.flags|=2048)}else{if(Q=DL(Q,D,ep),Q!==null){Xi=Q;return}if(Q=D,Q.tag!==24&&Q.tag!==23||Q.memoizedState===null||ep&1073741824||!(Q.mode&4)){for(var H=0,Y=Q.child;Y!==null;)H|=Y.lanes|Y.childLanes,Y=Y.sibling;Q.childLanes=H}v!==null&&!(v.flags&2048)&&(v.firstEffect===null&&(v.firstEffect=D.firstEffect),D.lastEffect!==null&&(v.lastEffect!==null&&(v.lastEffect.nextEffect=D.firstEffect),v.lastEffect=D.lastEffect),1bt()-l2?Nh(v,0):o2|=Q),Ia(v,D)}function _L(v,D){var Q=v.stateNode;Q!==null&&Q.delete(D),D=0,D===0&&(D=v.mode,D&2?D&4?(Cu===0&&(Cu=Rh),D=Rn(62914560&~Cu),D===0&&(D=4194304)):D=tr()===99?1:2:D=1),Q=Oo(),v=Yy(v,D),v!==null&&(Ka(v,D,Q),Ia(v,Q))}var bP;bP=function(v,D,Q){var H=D.lanes;if(v!==null)if(v.memoizedProps!==D.pendingProps||Li.current)Je=!0;else if(Q&H)Je=!!(v.flags&16384);else{switch(Je=!1,D.tag){case 3:ky(D),_d();break;case 5:wf(D);break;case 1:Xn(D.type)&&Ya(D);break;case 4:Ld(D,D.stateNode.containerInfo);break;case 10:Td(D,D.memoizedProps.value);break;case 13:if(D.memoizedState!==null)return Q&D.child.childLanes?J1(v,D,Q):(Qn(mi,mi.current&1),D=Wn(v,D,Q),D!==null?D.sibling:null);Qn(mi,mi.current&1);break;case 19:if(H=(Q&D.childLanes)!==0,v.flags&64){if(H)return cP(v,D,Q);D.flags|=64}var Y=D.memoizedState;if(Y!==null&&(Y.rendering=null,Y.tail=null,Y.lastEffect=null),Qn(mi,mi.current),H)break;return null;case 23:case 24:return D.lanes=0,yi(v,D,Q)}return Wn(v,D,Q)}else Je=!1;switch(D.lanes=0,D.tag){case 2:if(H=D.type,v!==null&&(v.alternate=null,D.alternate=null,D.flags|=2),v=D.pendingProps,Y=mn(D,Gi.current),Ef(D,Q),Y=jd(null,D,H,v,Y,Q),D.flags|=1,typeof Y=="object"&&Y!==null&&typeof Y.render=="function"&&Y.$$typeof===void 0){if(D.tag=1,D.memoizedState=null,D.updateQueue=null,Xn(H)){var ne=!0;Ya(D)}else ne=!1;D.memoizedState=Y.state!==null&&Y.state!==void 0?Y.state:null,wh(D);var ve=H.getDerivedStateFromProps;typeof ve=="function"&&jA(D,H,ve,v),Y.updater=GA,D.stateNode=Y,Y._reactInternals=D,To(D,H,v,Q),D=V1(null,D,H,!0,ne,Q)}else D.tag=0,pt(null,D,Y,Q),D=D.child;return D;case 16:Y=D.elementType;e:{switch(v!==null&&(v.alternate=null,D.alternate=null,D.flags|=2),v=D.pendingProps,ne=Y._init,Y=ne(Y._payload),D.type=Y,ne=D.tag=jL(Y),v=Qo(Y,v),ne){case 0:D=zA(null,D,Y,v,Q);break e;case 1:D=lP(null,D,Y,v,Q);break e;case 11:D=gr(null,D,Y,v,Q);break e;case 14:D=vr(null,D,Y,Qo(Y.type,v),H,Q);break e}throw Error(c(306,Y,""))}return D;case 0:return H=D.type,Y=D.pendingProps,Y=D.elementType===H?Y:Qo(H,Y),zA(v,D,H,Y,Q);case 1:return H=D.type,Y=D.pendingProps,Y=D.elementType===H?Y:Qo(H,Y),lP(v,D,H,Y,Q);case 3:if(ky(D),H=D.updateQueue,v===null||H===null)throw Error(c(282));if(H=D.pendingProps,Y=D.memoizedState,Y=Y!==null?Y.element:null,Nd(v,D),HA(D,H,null,Q),H=D.memoizedState.element,H===Y)_d(),D=Wn(v,D,Q);else{if(Y=D.stateNode,(ne=Y.hydrate)&&(X?(ma=Ue(D.stateNode.containerInfo),$a=D,ne=el=!0):ne=!1),ne){if(X&&(v=Y.mutableSourceEagerHydrationData,v!=null))for(Y=0;Y=Wt&&ne>=Lr&&Y<=Sr&&ve<=Zt){v.splice(D,1);break}else if(H!==Wt||Q.width!==ht.width||Ztve){if(!(ne!==Lr||Q.height!==ht.height||SrY)){Wt>H&&(ht.width+=Wt-H,ht.x=H),Srne&&(ht.height+=Lr-ne,ht.y=ne),ZtQ&&(Q=ve)),ve ")+` + +No matching component was found for: + `)+v.join(" > ")}return null},r.getPublicRootInstance=function(v){if(v=v.current,!v.child)return null;switch(v.child.tag){case 5:return Qe(v.child.stateNode);default:return v.child.stateNode}},r.injectIntoDevTools=function(v){if(v={bundleType:v.bundleType,version:v.version,rendererPackageName:v.rendererPackageName,rendererConfig:v.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:f.ReactCurrentDispatcher,findHostInstanceByFiber:WL,findFiberByHostInstance:v.findFiberByHostInstance||YL,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null},typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u")v=!1;else{var D=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!D.isDisabled&&D.supportsFiber)try{$e=D.inject(v),Ja=D}catch{}v=!0}return v},r.observeVisibleRects=function(v,D,Q,H){if(!qt)throw Error(c(363));v=r2(v,D);var Y=on(v,Q,H).disconnect;return{disconnect:function(){Y()}}},r.registerMutableSourceForHydration=function(v,D){var Q=D._getVersion;Q=Q(D._source),v.mutableSourceEagerHydrationData==null?v.mutableSourceEagerHydrationData=[D,Q]:v.mutableSourceEagerHydrationData.push(D,Q)},r.runWithPriority=function(v,D){var Q=uc;try{return uc=v,D()}finally{uc=Q}},r.shouldSuspend=function(){return!1},r.unbatchedUpdates=function(v,D){var Q=xr;xr&=-2,xr|=8;try{return v(D)}finally{xr=Q,xr===0&&(kf(),Fn())}},r.updateContainer=function(v,D,Q,H){var Y=D.current,ne=Oo(),ve=Ds(Y);e:if(Q){Q=Q._reactInternals;t:{if(Se(Q)!==Q||Q.tag!==1)throw Error(c(170));var _e=Q;do{switch(_e.tag){case 3:_e=_e.stateNode.context;break t;case 1:if(Xn(_e.type)){_e=_e.stateNode.__reactInternalMemoizedMergedChildContext;break t}}_e=_e.return}while(_e!==null);throw Error(c(171))}if(Q.tag===1){var ht=Q.type;if(Xn(ht)){Q=Wa(Q,ht,_e);break e}}Q=_e}else Q=pa;return D.context===null?D.context=Q:D.pendingContext=Q,D=Tl(ne,ve),D.payload={element:v},H=H===void 0?null:H,H!==null&&(D.callback=H),Fl(Y,D),Ul(Y,ve,ne),ve},r}});var hIe=G((kVt,pIe)=>{"use strict";pIe.exports=AIe()});var gIe=G((QVt,dIe)=>{"use strict";var _ut={ALIGN_COUNT:8,ALIGN_AUTO:0,ALIGN_FLEX_START:1,ALIGN_CENTER:2,ALIGN_FLEX_END:3,ALIGN_STRETCH:4,ALIGN_BASELINE:5,ALIGN_SPACE_BETWEEN:6,ALIGN_SPACE_AROUND:7,DIMENSION_COUNT:2,DIMENSION_WIDTH:0,DIMENSION_HEIGHT:1,DIRECTION_COUNT:3,DIRECTION_INHERIT:0,DIRECTION_LTR:1,DIRECTION_RTL:2,DISPLAY_COUNT:2,DISPLAY_FLEX:0,DISPLAY_NONE:1,EDGE_COUNT:9,EDGE_LEFT:0,EDGE_TOP:1,EDGE_RIGHT:2,EDGE_BOTTOM:3,EDGE_START:4,EDGE_END:5,EDGE_HORIZONTAL:6,EDGE_VERTICAL:7,EDGE_ALL:8,EXPERIMENTAL_FEATURE_COUNT:1,EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS:0,FLEX_DIRECTION_COUNT:4,FLEX_DIRECTION_COLUMN:0,FLEX_DIRECTION_COLUMN_REVERSE:1,FLEX_DIRECTION_ROW:2,FLEX_DIRECTION_ROW_REVERSE:3,JUSTIFY_COUNT:6,JUSTIFY_FLEX_START:0,JUSTIFY_CENTER:1,JUSTIFY_FLEX_END:2,JUSTIFY_SPACE_BETWEEN:3,JUSTIFY_SPACE_AROUND:4,JUSTIFY_SPACE_EVENLY:5,LOG_LEVEL_COUNT:6,LOG_LEVEL_ERROR:0,LOG_LEVEL_WARN:1,LOG_LEVEL_INFO:2,LOG_LEVEL_DEBUG:3,LOG_LEVEL_VERBOSE:4,LOG_LEVEL_FATAL:5,MEASURE_MODE_COUNT:3,MEASURE_MODE_UNDEFINED:0,MEASURE_MODE_EXACTLY:1,MEASURE_MODE_AT_MOST:2,NODE_TYPE_COUNT:2,NODE_TYPE_DEFAULT:0,NODE_TYPE_TEXT:1,OVERFLOW_COUNT:3,OVERFLOW_VISIBLE:0,OVERFLOW_HIDDEN:1,OVERFLOW_SCROLL:2,POSITION_TYPE_COUNT:2,POSITION_TYPE_RELATIVE:0,POSITION_TYPE_ABSOLUTE:1,PRINT_OPTIONS_COUNT:3,PRINT_OPTIONS_LAYOUT:1,PRINT_OPTIONS_STYLE:2,PRINT_OPTIONS_CHILDREN:4,UNIT_COUNT:4,UNIT_UNDEFINED:0,UNIT_POINT:1,UNIT_PERCENT:2,UNIT_AUTO:3,WRAP_COUNT:3,WRAP_NO_WRAP:0,WRAP_WRAP:1,WRAP_WRAP_REVERSE:2};dIe.exports=_ut});var IIe=G((RVt,EIe)=>{"use strict";var Hut=Object.assign||function(e){for(var t=1;t"}}]),e}(),mIe=function(){yF(e,null,[{key:"fromJS",value:function(r){var s=r.width,a=r.height;return new e(s,a)}}]);function e(t,r){pq(this,e),this.width=t,this.height=r}return yF(e,[{key:"fromJS",value:function(r){r(this.width,this.height)}},{key:"toString",value:function(){return""}}]),e}(),yIe=function(){function e(t,r){pq(this,e),this.unit=t,this.value=r}return yF(e,[{key:"fromJS",value:function(r){r(this.unit,this.value)}},{key:"toString",value:function(){switch(this.unit){case nf.UNIT_POINT:return String(this.value);case nf.UNIT_PERCENT:return this.value+"%";case nf.UNIT_AUTO:return"auto";default:return this.value+"?"}}},{key:"valueOf",value:function(){return this.value}}]),e}();EIe.exports=function(e,t){function r(c,f,p){var h=c[f];c[f]=function(){for(var E=arguments.length,C=Array(E),S=0;S1?C-1:0),x=1;x1&&arguments[1]!==void 0?arguments[1]:NaN,p=arguments.length>2&&arguments[2]!==void 0?arguments[2]:NaN,h=arguments.length>3&&arguments[3]!==void 0?arguments[3]:nf.DIRECTION_LTR;return c.call(this,f,p,h)}),Hut({Config:t.Config,Node:t.Node,Layout:e("Layout",jut),Size:e("Size",mIe),Value:e("Value",yIe),getInstanceCount:function(){return t.getInstanceCount.apply(t,arguments)}},nf)}});var CIe=G((exports,module)=>{(function(e,t){typeof define=="function"&&define.amd?define([],function(){return t}):typeof module=="object"&&module.exports?module.exports=t:(e.nbind=e.nbind||{}).init=t})(exports,function(Module,cb){typeof Module=="function"&&(cb=Module,Module={}),Module.onRuntimeInitialized=function(e,t){return function(){e&&e.apply(this,arguments);try{Module.ccall("nbind_init")}catch(r){t(r);return}t(null,{bind:Module._nbind_value,reflect:Module.NBind.reflect,queryType:Module.NBind.queryType,toggleLightGC:Module.toggleLightGC,lib:Module})}}(Module.onRuntimeInitialized,cb);var Module;Module||(Module=(typeof Module<"u"?Module:null)||{});var moduleOverrides={};for(var key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1;if(Module.ENVIRONMENT)if(Module.ENVIRONMENT==="WEB")ENVIRONMENT_IS_WEB=!0;else if(Module.ENVIRONMENT==="WORKER")ENVIRONMENT_IS_WORKER=!0;else if(Module.ENVIRONMENT==="NODE")ENVIRONMENT_IS_NODE=!0;else if(Module.ENVIRONMENT==="SHELL")ENVIRONMENT_IS_SHELL=!0;else throw new Error("The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.");else ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof importScripts=="function",ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof Ie=="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER,ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(ENVIRONMENT_IS_NODE){Module.print||(Module.print=console.log),Module.printErr||(Module.printErr=console.warn);var nodeFS,nodePath;Module.read=function(t,r){nodeFS||(nodeFS={}("")),nodePath||(nodePath={}("")),t=nodePath.normalize(t);var s=nodeFS.readFileSync(t);return r?s:s.toString()},Module.readBinary=function(t){var r=Module.read(t,!0);return r.buffer||(r=new Uint8Array(r)),assert(r.buffer),r},Module.load=function(t){globalEval(read(t))},Module.thisProgram||(process.argv.length>1?Module.thisProgram=process.argv[1].replace(/\\/g,"/"):Module.thisProgram="unknown-program"),Module.arguments=process.argv.slice(2),typeof module<"u"&&(module.exports=Module),Module.inspect=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL)Module.print||(Module.print=print),typeof printErr<"u"&&(Module.printErr=printErr),typeof read<"u"?Module.read=read:Module.read=function(){throw"no read() available"},Module.readBinary=function(t){if(typeof readbuffer=="function")return new Uint8Array(readbuffer(t));var r=read(t,"binary");return assert(typeof r=="object"),r},typeof scriptArgs<"u"?Module.arguments=scriptArgs:typeof arguments<"u"&&(Module.arguments=arguments),typeof quit=="function"&&(Module.quit=function(e,t){quit(e)});else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(Module.read=function(t){var r=new XMLHttpRequest;return r.open("GET",t,!1),r.send(null),r.responseText},ENVIRONMENT_IS_WORKER&&(Module.readBinary=function(t){var r=new XMLHttpRequest;return r.open("GET",t,!1),r.responseType="arraybuffer",r.send(null),new Uint8Array(r.response)}),Module.readAsync=function(t,r,s){var a=new XMLHttpRequest;a.open("GET",t,!0),a.responseType="arraybuffer",a.onload=function(){a.status==200||a.status==0&&a.response?r(a.response):s()},a.onerror=s,a.send(null)},typeof arguments<"u"&&(Module.arguments=arguments),typeof console<"u")Module.print||(Module.print=function(t){console.log(t)}),Module.printErr||(Module.printErr=function(t){console.warn(t)});else{var TRY_USE_DUMP=!1;Module.print||(Module.print=TRY_USE_DUMP&&typeof dump<"u"?function(e){dump(e)}:function(e){})}ENVIRONMENT_IS_WORKER&&(Module.load=importScripts),typeof Module.setWindowTitle>"u"&&(Module.setWindowTitle=function(e){document.title=e})}else throw"Unknown runtime environment. Where are we?";function globalEval(e){eval.call(null,e)}!Module.load&&Module.read&&(Module.load=function(t){globalEval(Module.read(t))}),Module.print||(Module.print=function(){}),Module.printErr||(Module.printErr=Module.print),Module.arguments||(Module.arguments=[]),Module.thisProgram||(Module.thisProgram="./this.program"),Module.quit||(Module.quit=function(e,t){throw t}),Module.print=Module.print,Module.printErr=Module.printErr,Module.preRun=[],Module.postRun=[];for(var key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=void 0;var Runtime={setTempRet0:function(e){return tempRet0=e,e},getTempRet0:function(){return tempRet0},stackSave:function(){return STACKTOP},stackRestore:function(e){STACKTOP=e},getNativeTypeSize:function(e){switch(e){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(e[e.length-1]==="*")return Runtime.QUANTUM_SIZE;if(e[0]==="i"){var t=parseInt(e.substr(1));return assert(t%8===0),t/8}else return 0}}},getNativeFieldSize:function(e){return Math.max(Runtime.getNativeTypeSize(e),Runtime.QUANTUM_SIZE)},STACK_ALIGN:16,prepVararg:function(e,t){return t==="double"||t==="i64"?e&7&&(assert((e&7)===4),e+=4):assert((e&3)===0),e},getAlignSize:function(e,t,r){return!r&&(e=="i64"||e=="double")?8:e?Math.min(t||(e?Runtime.getNativeFieldSize(e):0),Runtime.QUANTUM_SIZE):Math.min(t,8)},dynCall:function(e,t,r){return r&&r.length?Module["dynCall_"+e].apply(null,[t].concat(r)):Module["dynCall_"+e].call(null,t)},functionPointers:[],addFunction:function(e){for(var t=0;t>2],r=(t+e+15|0)&-16;if(HEAP32[DYNAMICTOP_PTR>>2]=r,r>=TOTAL_MEMORY){var s=enlargeMemory();if(!s)return HEAP32[DYNAMICTOP_PTR>>2]=t,0}return t},alignMemory:function(e,t){var r=e=Math.ceil(e/(t||16))*(t||16);return r},makeBigInt:function(e,t,r){var s=r?+(e>>>0)+ +(t>>>0)*4294967296:+(e>>>0)+ +(t|0)*4294967296;return s},GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module.Runtime=Runtime;var ABORT=0,EXITSTATUS=0;function assert(e,t){e||abort("Assertion failed: "+t)}function getCFunc(ident){var func=Module["_"+ident];if(!func)try{func=eval("_"+ident)}catch(e){}return assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)"),func}var cwrap,ccall;(function(){var JSfuncs={stackSave:function(){Runtime.stackSave()},stackRestore:function(){Runtime.stackRestore()},arrayToC:function(e){var t=Runtime.stackAlloc(e.length);return writeArrayToMemory(e,t),t},stringToC:function(e){var t=0;if(e!=null&&e!==0){var r=(e.length<<2)+1;t=Runtime.stackAlloc(r),stringToUTF8(e,t,r)}return t}},toC={string:JSfuncs.stringToC,array:JSfuncs.arrayToC};ccall=function(t,r,s,a,n){var c=getCFunc(t),f=[],p=0;if(a)for(var h=0;h>0]=t;break;case"i8":HEAP8[e>>0]=t;break;case"i16":HEAP16[e>>1]=t;break;case"i32":HEAP32[e>>2]=t;break;case"i64":tempI64=[t>>>0,(tempDouble=t,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[e>>2]=tempI64[0],HEAP32[e+4>>2]=tempI64[1];break;case"float":HEAPF32[e>>2]=t;break;case"double":HEAPF64[e>>3]=t;break;default:abort("invalid type for setValue: "+r)}}Module.setValue=setValue;function getValue(e,t,r){switch(t=t||"i8",t.charAt(t.length-1)==="*"&&(t="i32"),t){case"i1":return HEAP8[e>>0];case"i8":return HEAP8[e>>0];case"i16":return HEAP16[e>>1];case"i32":return HEAP32[e>>2];case"i64":return HEAP32[e>>2];case"float":return HEAPF32[e>>2];case"double":return HEAPF64[e>>3];default:abort("invalid type for setValue: "+t)}return null}Module.getValue=getValue;var ALLOC_NORMAL=0,ALLOC_STACK=1,ALLOC_STATIC=2,ALLOC_DYNAMIC=3,ALLOC_NONE=4;Module.ALLOC_NORMAL=ALLOC_NORMAL,Module.ALLOC_STACK=ALLOC_STACK,Module.ALLOC_STATIC=ALLOC_STATIC,Module.ALLOC_DYNAMIC=ALLOC_DYNAMIC,Module.ALLOC_NONE=ALLOC_NONE;function allocate(e,t,r,s){var a,n;typeof e=="number"?(a=!0,n=e):(a=!1,n=e.length);var c=typeof t=="string"?t:null,f;if(r==ALLOC_NONE?f=s:f=[typeof _malloc=="function"?_malloc:Runtime.staticAlloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][r===void 0?ALLOC_STATIC:r](Math.max(n,c?1:t.length)),a){var s=f,p;for(assert((f&3)==0),p=f+(n&-4);s>2]=0;for(p=f+n;s>0]=0;return f}if(c==="i8")return e.subarray||e.slice?HEAPU8.set(e,f):HEAPU8.set(new Uint8Array(e),f),f;for(var h=0,E,C,S;h>0],r|=s,!(s==0&&!t||(a++,t&&a==t)););t||(t=a);var n="";if(r<128){for(var c=1024,f;t>0;)f=String.fromCharCode.apply(String,HEAPU8.subarray(e,e+Math.min(t,c))),n=n?n+f:f,e+=c,t-=c;return n}return Module.UTF8ToString(e)}Module.Pointer_stringify=Pointer_stringify;function AsciiToString(e){for(var t="";;){var r=HEAP8[e++>>0];if(!r)return t;t+=String.fromCharCode(r)}}Module.AsciiToString=AsciiToString;function stringToAscii(e,t){return writeAsciiToMemory(e,t,!1)}Module.stringToAscii=stringToAscii;var UTF8Decoder=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function UTF8ArrayToString(e,t){for(var r=t;e[r];)++r;if(r-t>16&&e.subarray&&UTF8Decoder)return UTF8Decoder.decode(e.subarray(t,r));for(var s,a,n,c,f,p,h="";;){if(s=e[t++],!s)return h;if(!(s&128)){h+=String.fromCharCode(s);continue}if(a=e[t++]&63,(s&224)==192){h+=String.fromCharCode((s&31)<<6|a);continue}if(n=e[t++]&63,(s&240)==224?s=(s&15)<<12|a<<6|n:(c=e[t++]&63,(s&248)==240?s=(s&7)<<18|a<<12|n<<6|c:(f=e[t++]&63,(s&252)==248?s=(s&3)<<24|a<<18|n<<12|c<<6|f:(p=e[t++]&63,s=(s&1)<<30|a<<24|n<<18|c<<12|f<<6|p))),s<65536)h+=String.fromCharCode(s);else{var E=s-65536;h+=String.fromCharCode(55296|E>>10,56320|E&1023)}}}Module.UTF8ArrayToString=UTF8ArrayToString;function UTF8ToString(e){return UTF8ArrayToString(HEAPU8,e)}Module.UTF8ToString=UTF8ToString;function stringToUTF8Array(e,t,r,s){if(!(s>0))return 0;for(var a=r,n=r+s-1,c=0;c=55296&&f<=57343&&(f=65536+((f&1023)<<10)|e.charCodeAt(++c)&1023),f<=127){if(r>=n)break;t[r++]=f}else if(f<=2047){if(r+1>=n)break;t[r++]=192|f>>6,t[r++]=128|f&63}else if(f<=65535){if(r+2>=n)break;t[r++]=224|f>>12,t[r++]=128|f>>6&63,t[r++]=128|f&63}else if(f<=2097151){if(r+3>=n)break;t[r++]=240|f>>18,t[r++]=128|f>>12&63,t[r++]=128|f>>6&63,t[r++]=128|f&63}else if(f<=67108863){if(r+4>=n)break;t[r++]=248|f>>24,t[r++]=128|f>>18&63,t[r++]=128|f>>12&63,t[r++]=128|f>>6&63,t[r++]=128|f&63}else{if(r+5>=n)break;t[r++]=252|f>>30,t[r++]=128|f>>24&63,t[r++]=128|f>>18&63,t[r++]=128|f>>12&63,t[r++]=128|f>>6&63,t[r++]=128|f&63}}return t[r]=0,r-a}Module.stringToUTF8Array=stringToUTF8Array;function stringToUTF8(e,t,r){return stringToUTF8Array(e,HEAPU8,t,r)}Module.stringToUTF8=stringToUTF8;function lengthBytesUTF8(e){for(var t=0,r=0;r=55296&&s<=57343&&(s=65536+((s&1023)<<10)|e.charCodeAt(++r)&1023),s<=127?++t:s<=2047?t+=2:s<=65535?t+=3:s<=2097151?t+=4:s<=67108863?t+=5:t+=6}return t}Module.lengthBytesUTF8=lengthBytesUTF8;var UTF16Decoder=typeof TextDecoder<"u"?new TextDecoder("utf-16le"):void 0;function demangle(e){var t=Module.___cxa_demangle||Module.__cxa_demangle;if(t){try{var r=e.substr(1),s=lengthBytesUTF8(r)+1,a=_malloc(s);stringToUTF8(r,a,s);var n=_malloc(4),c=t(a,0,0,n);if(getValue(n,"i32")===0&&c)return Pointer_stringify(c)}catch{}finally{a&&_free(a),n&&_free(n),c&&_free(c)}return e}return Runtime.warnOnce("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling"),e}function demangleAll(e){var t=/__Z[\w\d_]+/g;return e.replace(t,function(r){var s=demangle(r);return r===s?r:r+" ["+s+"]"})}function jsStackTrace(){var e=new Error;if(!e.stack){try{throw new Error(0)}catch(t){e=t}if(!e.stack)return"(no stack trace available)"}return e.stack.toString()}function stackTrace(){var e=jsStackTrace();return Module.extraStackTrace&&(e+=` +`+Module.extraStackTrace()),demangleAll(e)}Module.stackTrace=stackTrace;var HEAP,buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferViews(){Module.HEAP8=HEAP8=new Int8Array(buffer),Module.HEAP16=HEAP16=new Int16Array(buffer),Module.HEAP32=HEAP32=new Int32Array(buffer),Module.HEAPU8=HEAPU8=new Uint8Array(buffer),Module.HEAPU16=HEAPU16=new Uint16Array(buffer),Module.HEAPU32=HEAPU32=new Uint32Array(buffer),Module.HEAPF32=HEAPF32=new Float32Array(buffer),Module.HEAPF64=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed,STACK_BASE,STACKTOP,STACK_MAX,DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0,staticSealed=!1;function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}function enlargeMemory(){abortOnCannotGrowMemory()}var TOTAL_STACK=Module.TOTAL_STACK||5242880,TOTAL_MEMORY=Module.TOTAL_MEMORY||134217728;TOTAL_MEMORY0;){var t=e.shift();if(typeof t=="function"){t();continue}var r=t.func;typeof r=="number"?t.arg===void 0?Module.dynCall_v(r):Module.dynCall_vi(r,t.arg):r(t.arg===void 0?null:t.arg)}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATEXIT__=[],__ATPOSTRUN__=[],runtimeInitialized=!1,runtimeExited=!1;function preRun(){if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){runtimeInitialized||(runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__))}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__),runtimeExited=!0}function postRun(){if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(e){__ATPRERUN__.unshift(e)}Module.addOnPreRun=addOnPreRun;function addOnInit(e){__ATINIT__.unshift(e)}Module.addOnInit=addOnInit;function addOnPreMain(e){__ATMAIN__.unshift(e)}Module.addOnPreMain=addOnPreMain;function addOnExit(e){__ATEXIT__.unshift(e)}Module.addOnExit=addOnExit;function addOnPostRun(e){__ATPOSTRUN__.unshift(e)}Module.addOnPostRun=addOnPostRun;function intArrayFromString(e,t,r){var s=r>0?r:lengthBytesUTF8(e)+1,a=new Array(s),n=stringToUTF8Array(e,a,0,a.length);return t&&(a.length=n),a}Module.intArrayFromString=intArrayFromString;function intArrayToString(e){for(var t=[],r=0;r255&&(s&=255),t.push(String.fromCharCode(s))}return t.join("")}Module.intArrayToString=intArrayToString;function writeStringToMemory(e,t,r){Runtime.warnOnce("writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!");var s,a;r&&(a=t+lengthBytesUTF8(e),s=HEAP8[a]),stringToUTF8(e,t,1/0),r&&(HEAP8[a]=s)}Module.writeStringToMemory=writeStringToMemory;function writeArrayToMemory(e,t){HEAP8.set(e,t)}Module.writeArrayToMemory=writeArrayToMemory;function writeAsciiToMemory(e,t,r){for(var s=0;s>0]=e.charCodeAt(s);r||(HEAP8[t>>0]=0)}if(Module.writeAsciiToMemory=writeAsciiToMemory,(!Math.imul||Math.imul(4294967295,5)!==-5)&&(Math.imul=function e(t,r){var s=t>>>16,a=t&65535,n=r>>>16,c=r&65535;return a*c+(s*c+a*n<<16)|0}),Math.imul=Math.imul,!Math.fround){var froundBuffer=new Float32Array(1);Math.fround=function(e){return froundBuffer[0]=e,froundBuffer[0]}}Math.fround=Math.fround,Math.clz32||(Math.clz32=function(e){e=e>>>0;for(var t=0;t<32;t++)if(e&1<<31-t)return t;return 32}),Math.clz32=Math.clz32,Math.trunc||(Math.trunc=function(e){return e<0?Math.ceil(e):Math.floor(e)}),Math.trunc=Math.trunc;var Math_abs=Math.abs,Math_cos=Math.cos,Math_sin=Math.sin,Math_tan=Math.tan,Math_acos=Math.acos,Math_asin=Math.asin,Math_atan=Math.atan,Math_atan2=Math.atan2,Math_exp=Math.exp,Math_log=Math.log,Math_sqrt=Math.sqrt,Math_ceil=Math.ceil,Math_floor=Math.floor,Math_pow=Math.pow,Math_imul=Math.imul,Math_fround=Math.fround,Math_round=Math.round,Math_min=Math.min,Math_clz32=Math.clz32,Math_trunc=Math.trunc,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function getUniqueRunDependency(e){return e}function addRunDependency(e){runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}Module.addRunDependency=addRunDependency;function removeRunDependency(e){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var t=dependenciesFulfilled;dependenciesFulfilled=null,t()}}Module.removeRunDependency=removeRunDependency,Module.preloadedImages={},Module.preloadedAudios={};var ASM_CONSTS=[function(e,t,r,s,a,n,c,f){return _nbind.callbackSignatureList[e].apply(this,arguments)}];function _emscripten_asm_const_iiiiiiii(e,t,r,s,a,n,c,f){return ASM_CONSTS[e](t,r,s,a,n,c,f)}function _emscripten_asm_const_iiiii(e,t,r,s,a){return ASM_CONSTS[e](t,r,s,a)}function _emscripten_asm_const_iiidddddd(e,t,r,s,a,n,c,f,p){return ASM_CONSTS[e](t,r,s,a,n,c,f,p)}function _emscripten_asm_const_iiididi(e,t,r,s,a,n,c){return ASM_CONSTS[e](t,r,s,a,n,c)}function _emscripten_asm_const_iiii(e,t,r,s){return ASM_CONSTS[e](t,r,s)}function _emscripten_asm_const_iiiid(e,t,r,s,a){return ASM_CONSTS[e](t,r,s,a)}function _emscripten_asm_const_iiiiii(e,t,r,s,a,n){return ASM_CONSTS[e](t,r,s,a,n)}STATIC_BASE=Runtime.GLOBAL_BASE,STATICTOP=STATIC_BASE+12800,__ATINIT__.push({func:function(){__GLOBAL__sub_I_Yoga_cpp()}},{func:function(){__GLOBAL__sub_I_nbind_cc()}},{func:function(){__GLOBAL__sub_I_common_cc()}},{func:function(){__GLOBAL__sub_I_Binding_cc()}}),allocate([0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,192,127,0,0,192,127,3,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,3,0,0,0,0,0,192,127,3,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,0,0,128,191,0,0,128,191,0,0,192,127,0,0,0,0,0,0,0,0,0,0,128,63,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,190,12,0,0,200,12,0,0,208,12,0,0,216,12,0,0,230,12,0,0,242,12,0,0,1,0,0,0,3,0,0,0,0,0,0,0,2,0,0,0,0,0,192,127,3,0,0,0,180,45,0,0,181,45,0,0,182,45,0,0,181,45,0,0,182,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,1,0,0,0,4,0,0,0,183,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,184,45,0,0,185,45,0,0,181,45,0,0,181,45,0,0,182,45,0,0,186,45,0,0,185,45,0,0,148,4,0,0,3,0,0,0,187,45,0,0,164,4,0,0,188,45,0,0,2,0,0,0,189,45,0,0,164,4,0,0,188,45,0,0,185,45,0,0,164,4,0,0,185,45,0,0,164,4,0,0,188,45,0,0,181,45,0,0,182,45,0,0,181,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,183,45,0,0,182,45,0,0,181,45,0,0,190,45,0,0,190,45,0,0,182,45,0,0,182,45,0,0,185,45,0,0,181,45,0,0,185,45,0,0,182,45,0,0,181,45,0,0,185,45,0,0,182,45,0,0,185,45,0,0,48,5,0,0,3,0,0,0,56,5,0,0,1,0,0,0,189,45,0,0,185,45,0,0,164,4,0,0,76,5,0,0,2,0,0,0,191,45,0,0,186,45,0,0,182,45,0,0,185,45,0,0,192,45,0,0,185,45,0,0,182,45,0,0,186,45,0,0,185,45,0,0,76,5,0,0,76,5,0,0,136,5,0,0,182,45,0,0,181,45,0,0,2,0,0,0,190,45,0,0,136,5,0,0,56,19,0,0,156,5,0,0,2,0,0,0,184,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,9,0,0,0,1,0,0,0,10,0,0,0,204,5,0,0,181,45,0,0,181,45,0,0,2,0,0,0,180,45,0,0,204,5,0,0,2,0,0,0,195,45,0,0,236,5,0,0,97,19,0,0,198,45,0,0,211,45,0,0,212,45,0,0,213,45,0,0,214,45,0,0,215,45,0,0,188,45,0,0,182,45,0,0,216,45,0,0,217,45,0,0,218,45,0,0,219,45,0,0,192,45,0,0,181,45,0,0,0,0,0,0,185,45,0,0,110,19,0,0,186,45,0,0,115,19,0,0,221,45,0,0,120,19,0,0,148,4,0,0,132,19,0,0,96,6,0,0,145,19,0,0,222,45,0,0,164,19,0,0,223,45,0,0,173,19,0,0,0,0,0,0,3,0,0,0,104,6,0,0,1,0,0,0,187,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,11,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,185,45,0,0,224,45,0,0,164,6,0,0,188,45,0,0,172,6,0,0,180,6,0,0,2,0,0,0,188,6,0,0,7,0,0,0,224,45,0,0,7,0,0,0,164,6,0,0,1,0,0,0,213,45,0,0,185,45,0,0,224,45,0,0,172,6,0,0,185,45,0,0,224,45,0,0,164,6,0,0,185,45,0,0,224,45,0,0,211,45,0,0,211,45,0,0,222,45,0,0,211,45,0,0,224,45,0,0,222,45,0,0,211,45,0,0,224,45,0,0,172,6,0,0,222,45,0,0,211,45,0,0,224,45,0,0,188,45,0,0,222,45,0,0,211,45,0,0,40,7,0,0,188,45,0,0,2,0,0,0,224,45,0,0,185,45,0,0,188,45,0,0,188,45,0,0,188,45,0,0,188,45,0,0,222,45,0,0,224,45,0,0,148,4,0,0,185,45,0,0,148,4,0,0,148,4,0,0,148,4,0,0,148,4,0,0,148,4,0,0,185,45,0,0,164,6,0,0,148,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,14,0,0,0,15,0,0,0,1,0,0,0,16,0,0,0,148,7,0,0,2,0,0,0,225,45,0,0,183,45,0,0,188,45,0,0,168,7,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,234,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,9,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,2,0,0,0,242,45,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,111,117,108,100,32,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,110,111,100,101,0,67,97,110,110,111,116,32,114,101,115,101,116,32,97,32,110,111,100,101,32,119,104,105,99,104,32,115,116,105,108,108,32,104,97,115,32,99,104,105,108,100,114,101,110,32,97,116,116,97,99,104,101,100,0,67,97,110,110,111,116,32,114,101,115,101,116,32,97,32,110,111,100,101,32,115,116,105,108,108,32,97,116,116,97,99,104,101,100,32,116,111,32,97,32,112,97,114,101,110,116,0,67,111,117,108,100,32,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,99,111,110,102,105,103,0,67,97,110,110,111,116,32,115,101,116,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,58,32,78,111,100,101,115,32,119,105,116,104,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,32,99,97,110,110,111,116,32,104,97,118,101,32,99,104,105,108,100,114,101,110,46,0,67,104,105,108,100,32,97,108,114,101,97,100,121,32,104,97,115,32,97,32,112,97,114,101,110,116,44,32,105,116,32,109,117,115,116,32,98,101,32,114,101,109,111,118,101,100,32,102,105,114,115,116,46,0,67,97,110,110,111,116,32,97,100,100,32,99,104,105,108,100,58,32,78,111,100,101,115,32,119,105,116,104,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,32,99,97,110,110,111,116,32,104,97,118,101,32,99,104,105,108,100,114,101,110,46,0,79,110,108,121,32,108,101,97,102,32,110,111,100,101,115,32,119,105,116,104,32,99,117,115,116,111,109,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,115,104,111,117,108,100,32,109,97,110,117,97,108,108,121,32,109,97,114,107,32,116,104,101,109,115,101,108,118,101,115,32,97,115,32,100,105,114,116,121,0,67,97,110,110,111,116,32,103,101,116,32,108,97,121,111,117,116,32,112,114,111,112,101,114,116,105,101,115,32,111,102,32,109,117,108,116,105,45,101,100,103,101,32,115,104,111,114,116,104,97,110,100,115,0,37,115,37,100,46,123,91,115,107,105,112,112,101,100,93,32,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,97,119,58,32,37,102,32,97,104,58,32,37,102,32,61,62,32,100,58,32,40,37,102,44,32,37,102,41,32,37,115,10,0,37,115,37,100,46,123,37,115,0,42,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,97,119,58,32,37,102,32,97,104,58,32,37,102,32,37,115,10,0,37,115,37,100,46,125,37,115,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,100,58,32,40,37,102,44,32,37,102,41,32,37,115,10,0,79,117,116,32,111,102,32,99,97,99,104,101,32,101,110,116,114,105,101,115,33,10,0,83,99,97,108,101,32,102,97,99,116,111,114,32,115,104,111,117,108,100,32,110,111,116,32,98,101,32,108,101,115,115,32,116,104,97,110,32,122,101,114,111,0,105,110,105,116,105,97,108,0,37,115,10,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,85,78,68,69,70,73,78,69,68,0,69,88,65,67,84,76,89,0,65,84,95,77,79,83,84,0,76,65,89,95,85,78,68,69,70,73,78,69,68,0,76,65,89,95,69,88,65,67,84,76,89,0,76,65,89,95,65,84,95,77,79,83,84,0,97,118,97,105,108,97,98,108,101,87,105,100,116,104,32,105,115,32,105,110,100,101,102,105,110,105,116,101,32,115,111,32,119,105,100,116,104,77,101,97,115,117,114,101,77,111,100,101,32,109,117,115,116,32,98,101,32,89,71,77,101,97,115,117,114,101,77,111,100,101,85,110,100,101,102,105,110,101,100,0,97,118,97,105,108,97,98,108,101,72,101,105,103,104,116,32,105,115,32,105,110,100,101,102,105,110,105,116,101,32,115,111,32,104,101,105,103,104,116,77,101,97,115,117,114,101,77,111,100,101,32,109,117,115,116,32,98,101,32,89,71,77,101,97,115,117,114,101,77,111,100,101,85,110,100,101,102,105,110,101,100,0,102,108,101,120,0,115,116,114,101,116,99,104,0,109,117,108,116,105,108,105,110,101,45,115,116,114,101,116,99,104,0,69,120,112,101,99,116,101,100,32,110,111,100,101,32,116,111,32,104,97,118,101,32,99,117,115,116,111,109,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,0,109,101,97,115,117,114,101,0,69,120,112,101,99,116,32,99,117,115,116,111,109,32,98,97,115,101,108,105,110,101,32,102,117,110,99,116,105,111,110,32,116,111,32,110,111,116,32,114,101,116,117,114,110,32,78,97,78,0,97,98,115,45,109,101,97,115,117,114,101,0,97,98,115,45,108,97,121,111,117,116,0,78,111,100,101,0,99,114,101,97,116,101,68,101,102,97,117,108,116,0,99,114,101,97,116,101,87,105,116,104,67,111,110,102,105,103,0,100,101,115,116,114,111,121,0,114,101,115,101,116,0,99,111,112,121,83,116,121,108,101,0,115,101,116,80,111,115,105,116,105,111,110,84,121,112,101,0,115,101,116,80,111,115,105,116,105,111,110,0,115,101,116,80,111,115,105,116,105,111,110,80,101,114,99,101,110,116,0,115,101,116,65,108,105,103,110,67,111,110,116,101,110,116,0,115,101,116,65,108,105,103,110,73,116,101,109,115,0,115,101,116,65,108,105,103,110,83,101,108,102,0,115,101,116,70,108,101,120,68,105,114,101,99,116,105,111,110,0,115,101,116,70,108,101,120,87,114,97,112,0,115,101,116,74,117,115,116,105,102,121,67,111,110,116,101,110,116,0,115,101,116,77,97,114,103,105,110,0,115,101,116,77,97,114,103,105,110,80,101,114,99,101,110,116,0,115,101,116,77,97,114,103,105,110,65,117,116,111,0,115,101,116,79,118,101,114,102,108,111,119,0,115,101,116,68,105,115,112,108,97,121,0,115,101,116,70,108,101,120,0,115,101,116,70,108,101,120,66,97,115,105,115,0,115,101,116,70,108,101,120,66,97,115,105,115,80,101,114,99,101,110,116,0,115,101,116,70,108,101,120,71,114,111,119,0,115,101,116,70,108,101,120,83,104,114,105,110,107,0,115,101,116,87,105,100,116,104,0,115,101,116,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,87,105,100,116,104,65,117,116,111,0,115,101,116,72,101,105,103,104,116,0,115,101,116,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,72,101,105,103,104,116,65,117,116,111,0,115,101,116,77,105,110,87,105,100,116,104,0,115,101,116,77,105,110,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,77,105,110,72,101,105,103,104,116,0,115,101,116,77,105,110,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,77,97,120,87,105,100,116,104,0,115,101,116,77,97,120,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,77,97,120,72,101,105,103,104,116,0,115,101,116,77,97,120,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,65,115,112,101,99,116,82,97,116,105,111,0,115,101,116,66,111,114,100,101,114,0,115,101,116,80,97,100,100,105,110,103,0,115,101,116,80,97,100,100,105,110,103,80,101,114,99,101,110,116,0,103,101,116,80,111,115,105,116,105,111,110,84,121,112,101,0,103,101,116,80,111,115,105,116,105,111,110,0,103,101,116,65,108,105,103,110,67,111,110,116,101,110,116,0,103,101,116,65,108,105,103,110,73,116,101,109,115,0,103,101,116,65,108,105,103,110,83,101,108,102,0,103,101,116,70,108,101,120,68,105,114,101,99,116,105,111,110,0,103,101,116,70,108,101,120,87,114,97,112,0,103,101,116,74,117,115,116,105,102,121,67,111,110,116,101,110,116,0,103,101,116,77,97,114,103,105,110,0,103,101,116,70,108,101,120,66,97,115,105,115,0,103,101,116,70,108,101,120,71,114,111,119,0,103,101,116,70,108,101,120,83,104,114,105,110,107,0,103,101,116,87,105,100,116,104,0,103,101,116,72,101,105,103,104,116,0,103,101,116,77,105,110,87,105,100,116,104,0,103,101,116,77,105,110,72,101,105,103,104,116,0,103,101,116,77,97,120,87,105,100,116,104,0,103,101,116,77,97,120,72,101,105,103,104,116,0,103,101,116,65,115,112,101,99,116,82,97,116,105,111,0,103,101,116,66,111,114,100,101,114,0,103,101,116,79,118,101,114,102,108,111,119,0,103,101,116,68,105,115,112,108,97,121,0,103,101,116,80,97,100,100,105,110,103,0,105,110,115,101,114,116,67,104,105,108,100,0,114,101,109,111,118,101,67,104,105,108,100,0,103,101,116,67,104,105,108,100,67,111,117,110,116,0,103,101,116,80,97,114,101,110,116,0,103,101,116,67,104,105,108,100,0,115,101,116,77,101,97,115,117,114,101,70,117,110,99,0,117,110,115,101,116,77,101,97,115,117,114,101,70,117,110,99,0,109,97,114,107,68,105,114,116,121,0,105,115,68,105,114,116,121,0,99,97,108,99,117,108,97,116,101,76,97,121,111,117,116,0,103,101,116,67,111,109,112,117,116,101,100,76,101,102,116,0,103,101,116,67,111,109,112,117,116,101,100,82,105,103,104,116,0,103,101,116,67,111,109,112,117,116,101,100,84,111,112,0,103,101,116,67,111,109,112,117,116,101,100,66,111,116,116,111,109,0,103,101,116,67,111,109,112,117,116,101,100,87,105,100,116,104,0,103,101,116,67,111,109,112,117,116,101,100,72,101,105,103,104,116,0,103,101,116,67,111,109,112,117,116,101,100,76,97,121,111,117,116,0,103,101,116,67,111,109,112,117,116,101,100,77,97,114,103,105,110,0,103,101,116,67,111,109,112,117,116,101,100,66,111,114,100,101,114,0,103,101,116,67,111,109,112,117,116,101,100,80,97,100,100,105,110,103,0,67,111,110,102,105,103,0,99,114,101,97,116,101,0,115,101,116,69,120,112,101,114,105,109,101,110,116,97,108,70,101,97,116,117,114,101,69,110,97,98,108,101,100,0,115,101,116,80,111,105,110,116,83,99,97,108,101,70,97,99,116,111,114,0,105,115,69,120,112,101,114,105,109,101,110,116,97,108,70,101,97,116,117,114,101,69,110,97,98,108,101,100,0,86,97,108,117,101,0,76,97,121,111,117,116,0,83,105,122,101,0,103,101,116,73,110,115,116,97,110,99,101,67,111,117,110,116,0,73,110,116,54,52,0,1,1,1,2,2,4,4,4,4,8,8,4,8,118,111,105,100,0,98,111,111,108,0,115,116,100,58,58,115,116,114,105,110,103,0,99,98,70,117,110,99,116,105,111,110,32,38,0,99,111,110,115,116,32,99,98,70,117,110,99,116,105,111,110,32,38,0,69,120,116,101,114,110,97,108,0,66,117,102,102,101,114,0,78,66,105,110,100,73,68,0,78,66,105,110,100,0,98,105,110,100,95,118,97,108,117,101,0,114,101,102,108,101,99,116,0,113,117,101,114,121,84,121,112,101,0,108,97,108,108,111,99,0,108,114,101,115,101,116,0,123,114,101,116,117,114,110,40,95,110,98,105,110,100,46,99,97,108,108,98,97,99,107,83,105,103,110,97,116,117,114,101,76,105,115,116,91,36,48,93,46,97,112,112,108,121,40,116,104,105,115,44,97,114,103,117,109,101,110,116,115,41,41,59,125,0,95,110,98,105,110,100,95,110,101,119,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,46,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE);var tempDoublePtr=STATICTOP;STATICTOP+=16;function _atexit(e,t){__ATEXIT__.unshift({func:e,arg:t})}function ___cxa_atexit(){return _atexit.apply(null,arguments)}function _abort(){Module.abort()}function __ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj(){Module.printErr("missing function: _ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj"),abort(-1)}function __decorate(e,t,r,s){var a=arguments.length,n=a<3?t:s===null?s=Object.getOwnPropertyDescriptor(t,r):s,c;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")n=Reflect.decorate(e,t,r,s);else for(var f=e.length-1;f>=0;f--)(c=e[f])&&(n=(a<3?c(n):a>3?c(t,r,n):c(t,r))||n);return a>3&&n&&Object.defineProperty(t,r,n),n}function _defineHidden(e){return function(t,r){Object.defineProperty(t,r,{configurable:!1,enumerable:!1,value:e,writable:!0})}}var _nbind={};function __nbind_free_external(e){_nbind.externalList[e].dereference(e)}function __nbind_reference_external(e){_nbind.externalList[e].reference()}function _llvm_stackrestore(e){var t=_llvm_stacksave,r=t.LLVM_SAVEDSTACKS[e];t.LLVM_SAVEDSTACKS.splice(e,1),Runtime.stackRestore(r)}function __nbind_register_pool(e,t,r,s){_nbind.Pool.pageSize=e,_nbind.Pool.usedPtr=t/4,_nbind.Pool.rootPtr=r,_nbind.Pool.pagePtr=s/4,HEAP32[t/4]=16909060,HEAP8[t]==1&&(_nbind.bigEndian=!0),HEAP32[t/4]=0,_nbind.makeTypeKindTbl=(n={},n[1024]=_nbind.PrimitiveType,n[64]=_nbind.Int64Type,n[2048]=_nbind.BindClass,n[3072]=_nbind.BindClassPtr,n[4096]=_nbind.SharedClassPtr,n[5120]=_nbind.ArrayType,n[6144]=_nbind.ArrayType,n[7168]=_nbind.CStringType,n[9216]=_nbind.CallbackType,n[10240]=_nbind.BindType,n),_nbind.makeTypeNameTbl={Buffer:_nbind.BufferType,External:_nbind.ExternalType,Int64:_nbind.Int64Type,_nbind_new:_nbind.CreateValueType,bool:_nbind.BooleanType,"cbFunction &":_nbind.CallbackType,"const cbFunction &":_nbind.CallbackType,"const std::string &":_nbind.StringType,"std::string":_nbind.StringType},Module.toggleLightGC=_nbind.toggleLightGC,_nbind.callUpcast=Module.dynCall_ii;var a=_nbind.makeType(_nbind.constructType,{flags:2048,id:0,name:""});a.proto=Module,_nbind.BindClass.list.push(a);var n}function _emscripten_set_main_loop_timing(e,t){if(Browser.mainLoop.timingMode=e,Browser.mainLoop.timingValue=t,!Browser.mainLoop.func)return 1;if(e==0)Browser.mainLoop.scheduler=function(){var c=Math.max(0,Browser.mainLoop.tickStartTime+t-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,c)},Browser.mainLoop.method="timeout";else if(e==1)Browser.mainLoop.scheduler=function(){Browser.requestAnimationFrame(Browser.mainLoop.runner)},Browser.mainLoop.method="rAF";else if(e==2){if(!window.setImmediate){let n=function(c){c.source===window&&c.data===s&&(c.stopPropagation(),r.shift()())};var a=n,r=[],s="setimmediate";window.addEventListener("message",n,!0),window.setImmediate=function(f){r.push(f),ENVIRONMENT_IS_WORKER?(Module.setImmediates===void 0&&(Module.setImmediates=[]),Module.setImmediates.push(f),window.postMessage({target:s})):window.postMessage(s,"*")}}Browser.mainLoop.scheduler=function(){window.setImmediate(Browser.mainLoop.runner)},Browser.mainLoop.method="immediate"}return 0}function _emscripten_get_now(){abort()}function _emscripten_set_main_loop(e,t,r,s,a){Module.noExitRuntime=!0,assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters."),Browser.mainLoop.func=e,Browser.mainLoop.arg=s;var n;typeof s<"u"?n=function(){Module.dynCall_vi(e,s)}:n=function(){Module.dynCall_v(e)};var c=Browser.mainLoop.currentlyRunningMainloop;if(Browser.mainLoop.runner=function(){if(!ABORT){if(Browser.mainLoop.queue.length>0){var p=Date.now(),h=Browser.mainLoop.queue.shift();if(h.func(h.arg),Browser.mainLoop.remainingBlockers){var E=Browser.mainLoop.remainingBlockers,C=E%1==0?E-1:Math.floor(E);h.counted?Browser.mainLoop.remainingBlockers=C:(C=C+.5,Browser.mainLoop.remainingBlockers=(8*E+C)/9)}if(console.log('main loop blocker "'+h.name+'" took '+(Date.now()-p)+" ms"),Browser.mainLoop.updateStatus(),c1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else Browser.mainLoop.timingMode==0&&(Browser.mainLoop.tickStartTime=_emscripten_get_now());Browser.mainLoop.method==="timeout"&&Module.ctx&&(Module.printErr("Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!"),Browser.mainLoop.method=""),Browser.mainLoop.runIter(n),!(c0?_emscripten_set_main_loop_timing(0,1e3/t):_emscripten_set_main_loop_timing(1,1),Browser.mainLoop.scheduler()),r)throw"SimulateInfiniteLoop"}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null,Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var e=Browser.mainLoop.timingMode,t=Browser.mainLoop.timingValue,r=Browser.mainLoop.func;Browser.mainLoop.func=null,_emscripten_set_main_loop(r,0,!1,Browser.mainLoop.arg,!0),_emscripten_set_main_loop_timing(e,t),Browser.mainLoop.scheduler()},updateStatus:function(){if(Module.setStatus){var e=Module.statusMessage||"Please wait...",t=Browser.mainLoop.remainingBlockers,r=Browser.mainLoop.expectedBlockers;t?t"u"&&(console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available."),Module.noImageDecoding=!0);var e={};e.canHandle=function(n){return!Module.noImageDecoding&&/\.(jpg|jpeg|png|bmp)$/i.test(n)},e.handle=function(n,c,f,p){var h=null;if(Browser.hasBlobConstructor)try{h=new Blob([n],{type:Browser.getMimetype(c)}),h.size!==n.length&&(h=new Blob([new Uint8Array(n).buffer],{type:Browser.getMimetype(c)}))}catch(x){Runtime.warnOnce("Blob constructor present but fails: "+x+"; falling back to blob builder")}if(!h){var E=new Browser.BlobBuilder;E.append(new Uint8Array(n).buffer),h=E.getBlob()}var C=Browser.URLObject.createObjectURL(h),S=new Image;S.onload=function(){assert(S.complete,"Image "+c+" could not be decoded");var I=document.createElement("canvas");I.width=S.width,I.height=S.height;var T=I.getContext("2d");T.drawImage(S,0,0),Module.preloadedImages[c]=I,Browser.URLObject.revokeObjectURL(C),f&&f(n)},S.onerror=function(I){console.log("Image "+C+" could not be decoded"),p&&p()},S.src=C},Module.preloadPlugins.push(e);var t={};t.canHandle=function(n){return!Module.noAudioDecoding&&n.substr(-4)in{".ogg":1,".wav":1,".mp3":1}},t.handle=function(n,c,f,p){var h=!1;function E(T){h||(h=!0,Module.preloadedAudios[c]=T,f&&f(n))}function C(){h||(h=!0,Module.preloadedAudios[c]=new Audio,p&&p())}if(Browser.hasBlobConstructor){try{var S=new Blob([n],{type:Browser.getMimetype(c)})}catch{return C()}var x=Browser.URLObject.createObjectURL(S),I=new Audio;I.addEventListener("canplaythrough",function(){E(I)},!1),I.onerror=function(O){if(h)return;console.log("warning: browser could not fully decode audio "+c+", trying slower base64 approach");function U(V){for(var te="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",ie="=",ue="",ae=0,ge=0,Ae=0;Ae=6;){var Ce=ae>>ge-6&63;ge-=6,ue+=te[Ce]}return ge==2?(ue+=te[(ae&3)<<4],ue+=ie+ie):ge==4&&(ue+=te[(ae&15)<<2],ue+=ie),ue}I.src="data:audio/x-"+c.substr(-3)+";base64,"+U(n),E(I)},I.src=x,Browser.safeSetTimeout(function(){E(I)},1e4)}else return C()},Module.preloadPlugins.push(t);function r(){Browser.pointerLock=document.pointerLockElement===Module.canvas||document.mozPointerLockElement===Module.canvas||document.webkitPointerLockElement===Module.canvas||document.msPointerLockElement===Module.canvas}var s=Module.canvas;s&&(s.requestPointerLock=s.requestPointerLock||s.mozRequestPointerLock||s.webkitRequestPointerLock||s.msRequestPointerLock||function(){},s.exitPointerLock=document.exitPointerLock||document.mozExitPointerLock||document.webkitExitPointerLock||document.msExitPointerLock||function(){},s.exitPointerLock=s.exitPointerLock.bind(document),document.addEventListener("pointerlockchange",r,!1),document.addEventListener("mozpointerlockchange",r,!1),document.addEventListener("webkitpointerlockchange",r,!1),document.addEventListener("mspointerlockchange",r,!1),Module.elementPointerLock&&s.addEventListener("click",function(a){!Browser.pointerLock&&Module.canvas.requestPointerLock&&(Module.canvas.requestPointerLock(),a.preventDefault())},!1))},createContext:function(e,t,r,s){if(t&&Module.ctx&&e==Module.canvas)return Module.ctx;var a,n;if(t){var c={antialias:!1,alpha:!1};if(s)for(var f in s)c[f]=s[f];n=GL.createContext(e,c),n&&(a=GL.getContext(n).GLctx)}else a=e.getContext("2d");return a?(r&&(t||assert(typeof GLctx>"u","cannot set in module if GLctx is used, but we are a non-GL context that would replace it"),Module.ctx=a,t&&GL.makeContextCurrent(n),Module.useWebGL=t,Browser.moduleContextCreatedCallbacks.forEach(function(p){p()}),Browser.init()),a):null},destroyContext:function(e,t,r){},fullscreenHandlersInstalled:!1,lockPointer:void 0,resizeCanvas:void 0,requestFullscreen:function(e,t,r){Browser.lockPointer=e,Browser.resizeCanvas=t,Browser.vrDevice=r,typeof Browser.lockPointer>"u"&&(Browser.lockPointer=!0),typeof Browser.resizeCanvas>"u"&&(Browser.resizeCanvas=!1),typeof Browser.vrDevice>"u"&&(Browser.vrDevice=null);var s=Module.canvas;function a(){Browser.isFullscreen=!1;var c=s.parentNode;(document.fullscreenElement||document.mozFullScreenElement||document.msFullscreenElement||document.webkitFullscreenElement||document.webkitCurrentFullScreenElement)===c?(s.exitFullscreen=document.exitFullscreen||document.cancelFullScreen||document.mozCancelFullScreen||document.msExitFullscreen||document.webkitCancelFullScreen||function(){},s.exitFullscreen=s.exitFullscreen.bind(document),Browser.lockPointer&&s.requestPointerLock(),Browser.isFullscreen=!0,Browser.resizeCanvas&&Browser.setFullscreenCanvasSize()):(c.parentNode.insertBefore(s,c),c.parentNode.removeChild(c),Browser.resizeCanvas&&Browser.setWindowedCanvasSize()),Module.onFullScreen&&Module.onFullScreen(Browser.isFullscreen),Module.onFullscreen&&Module.onFullscreen(Browser.isFullscreen),Browser.updateCanvasDimensions(s)}Browser.fullscreenHandlersInstalled||(Browser.fullscreenHandlersInstalled=!0,document.addEventListener("fullscreenchange",a,!1),document.addEventListener("mozfullscreenchange",a,!1),document.addEventListener("webkitfullscreenchange",a,!1),document.addEventListener("MSFullscreenChange",a,!1));var n=document.createElement("div");s.parentNode.insertBefore(n,s),n.appendChild(s),n.requestFullscreen=n.requestFullscreen||n.mozRequestFullScreen||n.msRequestFullscreen||(n.webkitRequestFullscreen?function(){n.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)}:null)||(n.webkitRequestFullScreen?function(){n.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)}:null),r?n.requestFullscreen({vrDisplay:r}):n.requestFullscreen()},requestFullScreen:function(e,t,r){return Module.printErr("Browser.requestFullScreen() is deprecated. Please call Browser.requestFullscreen instead."),Browser.requestFullScreen=function(s,a,n){return Browser.requestFullscreen(s,a,n)},Browser.requestFullscreen(e,t,r)},nextRAF:0,fakeRequestAnimationFrame:function(e){var t=Date.now();if(Browser.nextRAF===0)Browser.nextRAF=t+1e3/60;else for(;t+2>=Browser.nextRAF;)Browser.nextRAF+=1e3/60;var r=Math.max(Browser.nextRAF-t,0);setTimeout(e,r)},requestAnimationFrame:function e(t){typeof window>"u"?Browser.fakeRequestAnimationFrame(t):(window.requestAnimationFrame||(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame||Browser.fakeRequestAnimationFrame),window.requestAnimationFrame(t))},safeCallback:function(e){return function(){if(!ABORT)return e.apply(null,arguments)}},allowAsyncCallbacks:!0,queuedAsyncCallbacks:[],pauseAsyncCallbacks:function(){Browser.allowAsyncCallbacks=!1},resumeAsyncCallbacks:function(){if(Browser.allowAsyncCallbacks=!0,Browser.queuedAsyncCallbacks.length>0){var e=Browser.queuedAsyncCallbacks;Browser.queuedAsyncCallbacks=[],e.forEach(function(t){t()})}},safeRequestAnimationFrame:function(e){return Browser.requestAnimationFrame(function(){ABORT||(Browser.allowAsyncCallbacks?e():Browser.queuedAsyncCallbacks.push(e))})},safeSetTimeout:function(e,t){return Module.noExitRuntime=!0,setTimeout(function(){ABORT||(Browser.allowAsyncCallbacks?e():Browser.queuedAsyncCallbacks.push(e))},t)},safeSetInterval:function(e,t){return Module.noExitRuntime=!0,setInterval(function(){ABORT||Browser.allowAsyncCallbacks&&e()},t)},getMimetype:function(e){return{jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",bmp:"image/bmp",ogg:"audio/ogg",wav:"audio/wav",mp3:"audio/mpeg"}[e.substr(e.lastIndexOf(".")+1)]},getUserMedia:function(e){window.getUserMedia||(window.getUserMedia=navigator.getUserMedia||navigator.mozGetUserMedia),window.getUserMedia(e)},getMovementX:function(e){return e.movementX||e.mozMovementX||e.webkitMovementX||0},getMovementY:function(e){return e.movementY||e.mozMovementY||e.webkitMovementY||0},getMouseWheelDelta:function(e){var t=0;switch(e.type){case"DOMMouseScroll":t=e.detail;break;case"mousewheel":t=e.wheelDelta;break;case"wheel":t=e.deltaY;break;default:throw"unrecognized mouse wheel event: "+e.type}return t},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(e){if(Browser.pointerLock)e.type!="mousemove"&&"mozMovementX"in e?Browser.mouseMovementX=Browser.mouseMovementY=0:(Browser.mouseMovementX=Browser.getMovementX(e),Browser.mouseMovementY=Browser.getMovementY(e)),typeof SDL<"u"?(Browser.mouseX=SDL.mouseX+Browser.mouseMovementX,Browser.mouseY=SDL.mouseY+Browser.mouseMovementY):(Browser.mouseX+=Browser.mouseMovementX,Browser.mouseY+=Browser.mouseMovementY);else{var t=Module.canvas.getBoundingClientRect(),r=Module.canvas.width,s=Module.canvas.height,a=typeof window.scrollX<"u"?window.scrollX:window.pageXOffset,n=typeof window.scrollY<"u"?window.scrollY:window.pageYOffset;if(e.type==="touchstart"||e.type==="touchend"||e.type==="touchmove"){var c=e.touch;if(c===void 0)return;var f=c.pageX-(a+t.left),p=c.pageY-(n+t.top);f=f*(r/t.width),p=p*(s/t.height);var h={x:f,y:p};if(e.type==="touchstart")Browser.lastTouches[c.identifier]=h,Browser.touches[c.identifier]=h;else if(e.type==="touchend"||e.type==="touchmove"){var E=Browser.touches[c.identifier];E||(E=h),Browser.lastTouches[c.identifier]=E,Browser.touches[c.identifier]=h}return}var C=e.pageX-(a+t.left),S=e.pageY-(n+t.top);C=C*(r/t.width),S=S*(s/t.height),Browser.mouseMovementX=C-Browser.mouseX,Browser.mouseMovementY=S-Browser.mouseY,Browser.mouseX=C,Browser.mouseY=S}},asyncLoad:function(e,t,r,s){var a=s?"":"al "+e;Module.readAsync(e,function(n){assert(n,'Loading data file "'+e+'" failed (no arrayBuffer).'),t(new Uint8Array(n)),a&&removeRunDependency(a)},function(n){if(r)r();else throw'Loading data file "'+e+'" failed.'}),a&&addRunDependency(a)},resizeListeners:[],updateResizeListeners:function(){var e=Module.canvas;Browser.resizeListeners.forEach(function(t){t(e.width,e.height)})},setCanvasSize:function(e,t,r){var s=Module.canvas;Browser.updateCanvasDimensions(s,e,t),r||Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL<"u"){var e=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];e=e|8388608,HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=e}Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL<"u"){var e=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];e=e&-8388609,HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=e}Browser.updateResizeListeners()},updateCanvasDimensions:function(e,t,r){t&&r?(e.widthNative=t,e.heightNative=r):(t=e.widthNative,r=e.heightNative);var s=t,a=r;if(Module.forcedAspectRatio&&Module.forcedAspectRatio>0&&(s/a>2];return t},getStr:function(){var e=Pointer_stringify(SYSCALLS.get());return e},get64:function(){var e=SYSCALLS.get(),t=SYSCALLS.get();return e>=0?assert(t===0):assert(t===-1),e},getZero:function(){assert(SYSCALLS.get()===0)}};function ___syscall6(e,t){SYSCALLS.varargs=t;try{var r=SYSCALLS.getStreamFromFD();return FS.close(r),0}catch(s){return(typeof FS>"u"||!(s instanceof FS.ErrnoError))&&abort(s),-s.errno}}function ___syscall54(e,t){SYSCALLS.varargs=t;try{return 0}catch(r){return(typeof FS>"u"||!(r instanceof FS.ErrnoError))&&abort(r),-r.errno}}function _typeModule(e){var t=[[0,1,"X"],[1,1,"const X"],[128,1,"X *"],[256,1,"X &"],[384,1,"X &&"],[512,1,"std::shared_ptr"],[640,1,"std::unique_ptr"],[5120,1,"std::vector"],[6144,2,"std::array"],[9216,-1,"std::function"]];function r(p,h,E,C,S,x){if(h==1){var I=C&896;(I==128||I==256||I==384)&&(p="X const")}var T;return x?T=E.replace("X",p).replace("Y",S):T=p.replace("X",E).replace("Y",S),T.replace(/([*&]) (?=[*&])/g,"$1")}function s(p,h,E,C,S){throw new Error(p+" type "+E.replace("X",h+"?")+(C?" with flag "+C:"")+" in "+S)}function a(p,h,E,C,S,x,I,T){x===void 0&&(x="X"),T===void 0&&(T=1);var O=E(p);if(O)return O;var U=C(p),V=U.placeholderFlag,te=t[V];I&&te&&(x=r(I[2],I[0],x,te[0],"?",!0));var ie;V==0&&(ie="Unbound"),V>=10&&(ie="Corrupt"),T>20&&(ie="Deeply nested"),ie&&s(ie,p,x,V,S||"?");var ue=U.paramList[0],ae=a(ue,h,E,C,S,x,te,T+1),ge,Ae={flags:te[0],id:p,name:"",paramList:[ae]},Ce=[],Ee="?";switch(U.placeholderFlag){case 1:ge=ae.spec;break;case 2:if((ae.flags&15360)==1024&&ae.spec.ptrSize==1){Ae.flags=7168;break}case 3:case 6:case 5:ge=ae.spec,ae.flags&15360;break;case 8:Ee=""+U.paramList[1],Ae.paramList.push(U.paramList[1]);break;case 9:for(var d=0,Se=U.paramList[1];d>2]=e),e}function _llvm_stacksave(){var e=_llvm_stacksave;return e.LLVM_SAVEDSTACKS||(e.LLVM_SAVEDSTACKS=[]),e.LLVM_SAVEDSTACKS.push(Runtime.stackSave()),e.LLVM_SAVEDSTACKS.length-1}function ___syscall140(e,t){SYSCALLS.varargs=t;try{var r=SYSCALLS.getStreamFromFD(),s=SYSCALLS.get(),a=SYSCALLS.get(),n=SYSCALLS.get(),c=SYSCALLS.get(),f=a;return FS.llseek(r,f,c),HEAP32[n>>2]=r.position,r.getdents&&f===0&&c===0&&(r.getdents=null),0}catch(p){return(typeof FS>"u"||!(p instanceof FS.ErrnoError))&&abort(p),-p.errno}}function ___syscall146(e,t){SYSCALLS.varargs=t;try{var r=SYSCALLS.get(),s=SYSCALLS.get(),a=SYSCALLS.get(),n=0;___syscall146.buffer||(___syscall146.buffers=[null,[],[]],___syscall146.printChar=function(E,C){var S=___syscall146.buffers[E];assert(S),C===0||C===10?((E===1?Module.print:Module.printErr)(UTF8ArrayToString(S,0)),S.length=0):S.push(C)});for(var c=0;c>2],p=HEAP32[s+(c*8+4)>>2],h=0;h"u"||!(E instanceof FS.ErrnoError))&&abort(E),-E.errno}}function __nbind_finish(){for(var e=0,t=_nbind.BindClass.list;ee.pageSize/2||t>e.pageSize-r){var s=_nbind.typeNameTbl.NBind.proto;return s.lalloc(t)}else return HEAPU32[e.usedPtr]=r+t,e.rootPtr+r},e.lreset=function(t,r){var s=HEAPU32[e.pagePtr];if(s){var a=_nbind.typeNameTbl.NBind.proto;a.lreset(t,r)}else HEAPU32[e.usedPtr]=t},e}();_nbind.Pool=Pool;function constructType(e,t){var r=e==10240?_nbind.makeTypeNameTbl[t.name]||_nbind.BindType:_nbind.makeTypeKindTbl[e],s=new r(t);return typeIdTbl[t.id]=s,_nbind.typeNameTbl[t.name]=s,s}_nbind.constructType=constructType;function getType(e){return typeIdTbl[e]}_nbind.getType=getType;function queryType(e){var t=HEAPU8[e],r=_nbind.structureList[t][1];e/=4,r<0&&(++e,r=HEAPU32[e]+1);var s=Array.prototype.slice.call(HEAPU32.subarray(e+1,e+1+r));return t==9&&(s=[s[0],s.slice(1)]),{paramList:s,placeholderFlag:t}}_nbind.queryType=queryType;function getTypes(e,t){return e.map(function(r){return typeof r=="number"?_nbind.getComplexType(r,constructType,getType,queryType,t):_nbind.typeNameTbl[r]})}_nbind.getTypes=getTypes;function readTypeIdList(e,t){return Array.prototype.slice.call(HEAPU32,e/4,e/4+t)}_nbind.readTypeIdList=readTypeIdList;function readAsciiString(e){for(var t=e;HEAPU8[t++];);return String.fromCharCode.apply("",HEAPU8.subarray(e,t-1))}_nbind.readAsciiString=readAsciiString;function readPolicyList(e){var t={};if(e)for(;;){var r=HEAPU32[e/4];if(!r)break;t[readAsciiString(r)]=!0,e+=4}return t}_nbind.readPolicyList=readPolicyList;function getDynCall(e,t){var r={float32_t:"d",float64_t:"d",int64_t:"d",uint64_t:"d",void:"v"},s=e.map(function(n){return r[n.name]||"i"}).join(""),a=Module["dynCall_"+s];if(!a)throw new Error("dynCall_"+s+" not found for "+t+"("+e.map(function(n){return n.name}).join(", ")+")");return a}_nbind.getDynCall=getDynCall;function addMethod(e,t,r,s){var a=e[t];e.hasOwnProperty(t)&&a?((a.arity||a.arity===0)&&(a=_nbind.makeOverloader(a,a.arity),e[t]=a),a.addMethod(r,s)):(r.arity=s,e[t]=r)}_nbind.addMethod=addMethod;function throwError(e){throw new Error(e)}_nbind.throwError=throwError,_nbind.bigEndian=!1,_a=_typeModule(_typeModule),_nbind.Type=_a.Type,_nbind.makeType=_a.makeType,_nbind.getComplexType=_a.getComplexType,_nbind.structureList=_a.structureList;var BindType=function(e){__extends(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.heap=HEAPU32,r.ptrSize=4,r}return t.prototype.needsWireRead=function(r){return!!this.wireRead||!!this.makeWireRead},t.prototype.needsWireWrite=function(r){return!!this.wireWrite||!!this.makeWireWrite},t}(_nbind.Type);_nbind.BindType=BindType;var PrimitiveType=function(e){__extends(t,e);function t(r){var s=e.call(this,r)||this,a=r.flags&32?{32:HEAPF32,64:HEAPF64}:r.flags&8?{8:HEAPU8,16:HEAPU16,32:HEAPU32}:{8:HEAP8,16:HEAP16,32:HEAP32};return s.heap=a[r.ptrSize*8],s.ptrSize=r.ptrSize,s}return t.prototype.needsWireWrite=function(r){return!!r&&!!r.Strict},t.prototype.makeWireWrite=function(r,s){return s&&s.Strict&&function(a){if(typeof a=="number")return a;throw new Error("Type mismatch")}},t}(BindType);_nbind.PrimitiveType=PrimitiveType;function pushCString(e,t){if(e==null){if(t&&t.Nullable)return 0;throw new Error("Type mismatch")}if(t&&t.Strict){if(typeof e!="string")throw new Error("Type mismatch")}else e=e.toString();var r=Module.lengthBytesUTF8(e)+1,s=_nbind.Pool.lalloc(r);return Module.stringToUTF8Array(e,HEAPU8,s,r),s}_nbind.pushCString=pushCString;function popCString(e){return e===0?null:Module.Pointer_stringify(e)}_nbind.popCString=popCString;var CStringType=function(e){__extends(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.wireRead=popCString,r.wireWrite=pushCString,r.readResources=[_nbind.resources.pool],r.writeResources=[_nbind.resources.pool],r}return t.prototype.makeWireWrite=function(r,s){return function(a){return pushCString(a,s)}},t}(BindType);_nbind.CStringType=CStringType;var BooleanType=function(e){__extends(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.wireRead=function(s){return!!s},r}return t.prototype.needsWireWrite=function(r){return!!r&&!!r.Strict},t.prototype.makeWireRead=function(r){return"!!("+r+")"},t.prototype.makeWireWrite=function(r,s){return s&&s.Strict&&function(a){if(typeof a=="boolean")return a;throw new Error("Type mismatch")}||r},t}(BindType);_nbind.BooleanType=BooleanType;var Wrapper=function(){function e(){}return e.prototype.persist=function(){this.__nbindState|=1},e}();_nbind.Wrapper=Wrapper;function makeBound(e,t){var r=function(s){__extends(a,s);function a(n,c,f,p){var h=s.call(this)||this;if(!(h instanceof a))return new(Function.prototype.bind.apply(a,Array.prototype.concat.apply([null],arguments)));var E=c,C=f,S=p;if(n!==_nbind.ptrMarker){var x=h.__nbindConstructor.apply(h,arguments);E=4608,S=HEAPU32[x/4],C=HEAPU32[x/4+1]}var I={configurable:!0,enumerable:!1,value:null,writable:!1},T={__nbindFlags:E,__nbindPtr:C};S&&(T.__nbindShared=S,_nbind.mark(h));for(var O=0,U=Object.keys(T);O>=1;var r=_nbind.valueList[e];return _nbind.valueList[e]=firstFreeValue,firstFreeValue=e,r}else{if(t)return _nbind.popShared(e,t);throw new Error("Invalid value slot "+e)}}_nbind.popValue=popValue;var valueBase=18446744073709552e3;function push64(e){return typeof e=="number"?e:pushValue(e)*4096+valueBase}function pop64(e){return e=3?c=Buffer.from(n):c=new Buffer(n),c.copy(s)}else getBuffer(s).set(n)}}_nbind.commitBuffer=commitBuffer;var dirtyList=[],gcTimer=0;function sweep(){for(var e=0,t=dirtyList;e>2]=DYNAMIC_BASE,staticSealed=!0;function invoke_viiiii(e,t,r,s,a,n){try{Module.dynCall_viiiii(e,t,r,s,a,n)}catch(c){if(typeof c!="number"&&c!=="longjmp")throw c;Module.setThrew(1,0)}}function invoke_vif(e,t,r){try{Module.dynCall_vif(e,t,r)}catch(s){if(typeof s!="number"&&s!=="longjmp")throw s;Module.setThrew(1,0)}}function invoke_vid(e,t,r){try{Module.dynCall_vid(e,t,r)}catch(s){if(typeof s!="number"&&s!=="longjmp")throw s;Module.setThrew(1,0)}}function invoke_fiff(e,t,r,s){try{return Module.dynCall_fiff(e,t,r,s)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_vi(e,t){try{Module.dynCall_vi(e,t)}catch(r){if(typeof r!="number"&&r!=="longjmp")throw r;Module.setThrew(1,0)}}function invoke_vii(e,t,r){try{Module.dynCall_vii(e,t,r)}catch(s){if(typeof s!="number"&&s!=="longjmp")throw s;Module.setThrew(1,0)}}function invoke_ii(e,t){try{return Module.dynCall_ii(e,t)}catch(r){if(typeof r!="number"&&r!=="longjmp")throw r;Module.setThrew(1,0)}}function invoke_viddi(e,t,r,s,a){try{Module.dynCall_viddi(e,t,r,s,a)}catch(n){if(typeof n!="number"&&n!=="longjmp")throw n;Module.setThrew(1,0)}}function invoke_vidd(e,t,r,s){try{Module.dynCall_vidd(e,t,r,s)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_iiii(e,t,r,s){try{return Module.dynCall_iiii(e,t,r,s)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_diii(e,t,r,s){try{return Module.dynCall_diii(e,t,r,s)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_di(e,t){try{return Module.dynCall_di(e,t)}catch(r){if(typeof r!="number"&&r!=="longjmp")throw r;Module.setThrew(1,0)}}function invoke_iid(e,t,r){try{return Module.dynCall_iid(e,t,r)}catch(s){if(typeof s!="number"&&s!=="longjmp")throw s;Module.setThrew(1,0)}}function invoke_iii(e,t,r){try{return Module.dynCall_iii(e,t,r)}catch(s){if(typeof s!="number"&&s!=="longjmp")throw s;Module.setThrew(1,0)}}function invoke_viiddi(e,t,r,s,a,n){try{Module.dynCall_viiddi(e,t,r,s,a,n)}catch(c){if(typeof c!="number"&&c!=="longjmp")throw c;Module.setThrew(1,0)}}function invoke_viiiiii(e,t,r,s,a,n,c){try{Module.dynCall_viiiiii(e,t,r,s,a,n,c)}catch(f){if(typeof f!="number"&&f!=="longjmp")throw f;Module.setThrew(1,0)}}function invoke_dii(e,t,r){try{return Module.dynCall_dii(e,t,r)}catch(s){if(typeof s!="number"&&s!=="longjmp")throw s;Module.setThrew(1,0)}}function invoke_i(e){try{return Module.dynCall_i(e)}catch(t){if(typeof t!="number"&&t!=="longjmp")throw t;Module.setThrew(1,0)}}function invoke_iiiiii(e,t,r,s,a,n){try{return Module.dynCall_iiiiii(e,t,r,s,a,n)}catch(c){if(typeof c!="number"&&c!=="longjmp")throw c;Module.setThrew(1,0)}}function invoke_viiid(e,t,r,s,a){try{Module.dynCall_viiid(e,t,r,s,a)}catch(n){if(typeof n!="number"&&n!=="longjmp")throw n;Module.setThrew(1,0)}}function invoke_viififi(e,t,r,s,a,n,c){try{Module.dynCall_viififi(e,t,r,s,a,n,c)}catch(f){if(typeof f!="number"&&f!=="longjmp")throw f;Module.setThrew(1,0)}}function invoke_viii(e,t,r,s){try{Module.dynCall_viii(e,t,r,s)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_v(e){try{Module.dynCall_v(e)}catch(t){if(typeof t!="number"&&t!=="longjmp")throw t;Module.setThrew(1,0)}}function invoke_viid(e,t,r,s){try{Module.dynCall_viid(e,t,r,s)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_idd(e,t,r){try{return Module.dynCall_idd(e,t,r)}catch(s){if(typeof s!="number"&&s!=="longjmp")throw s;Module.setThrew(1,0)}}function invoke_viiii(e,t,r,s,a){try{Module.dynCall_viiii(e,t,r,s,a)}catch(n){if(typeof n!="number"&&n!=="longjmp")throw n;Module.setThrew(1,0)}}Module.asmGlobalArg={Math,Int8Array,Int16Array,Int32Array,Uint8Array,Uint16Array,Uint32Array,Float32Array,Float64Array,NaN:NaN,Infinity:1/0},Module.asmLibraryArg={abort,assert,enlargeMemory,getTotalMemory,abortOnCannotGrowMemory,invoke_viiiii,invoke_vif,invoke_vid,invoke_fiff,invoke_vi,invoke_vii,invoke_ii,invoke_viddi,invoke_vidd,invoke_iiii,invoke_diii,invoke_di,invoke_iid,invoke_iii,invoke_viiddi,invoke_viiiiii,invoke_dii,invoke_i,invoke_iiiiii,invoke_viiid,invoke_viififi,invoke_viii,invoke_v,invoke_viid,invoke_idd,invoke_viiii,_emscripten_asm_const_iiiii,_emscripten_asm_const_iiidddddd,_emscripten_asm_const_iiiid,__nbind_reference_external,_emscripten_asm_const_iiiiiiii,_removeAccessorPrefix,_typeModule,__nbind_register_pool,__decorate,_llvm_stackrestore,___cxa_atexit,__extends,__nbind_get_value_object,__ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj,_emscripten_set_main_loop_timing,__nbind_register_primitive,__nbind_register_type,_emscripten_memcpy_big,__nbind_register_function,___setErrNo,__nbind_register_class,__nbind_finish,_abort,_nbind_value,_llvm_stacksave,___syscall54,_defineHidden,_emscripten_set_main_loop,_emscripten_get_now,__nbind_register_callback_signature,_emscripten_asm_const_iiiiii,__nbind_free_external,_emscripten_asm_const_iiii,_emscripten_asm_const_iiididi,___syscall6,_atexit,___syscall140,___syscall146,DYNAMICTOP_PTR,tempDoublePtr,ABORT,STACKTOP,STACK_MAX,cttz_i8,___dso_handle};var asm=function(e,t,r){var s=new e.Int8Array(r),a=new e.Int16Array(r),n=new e.Int32Array(r),c=new e.Uint8Array(r),f=new e.Uint16Array(r),p=new e.Uint32Array(r),h=new e.Float32Array(r),E=new e.Float64Array(r),C=t.DYNAMICTOP_PTR|0,S=t.tempDoublePtr|0,x=t.ABORT|0,I=t.STACKTOP|0,T=t.STACK_MAX|0,O=t.cttz_i8|0,U=t.___dso_handle|0,V=0,te=0,ie=0,ue=0,ae=e.NaN,ge=e.Infinity,Ae=0,Ce=0,Ee=0,d=0,Se=0,Be=0,me=e.Math.floor,ce=e.Math.abs,Z=e.Math.sqrt,De=e.Math.pow,Qe=e.Math.cos,st=e.Math.sin,_=e.Math.tan,tt=e.Math.acos,Ne=e.Math.asin,ke=e.Math.atan,be=e.Math.atan2,je=e.Math.exp,Re=e.Math.log,ct=e.Math.ceil,Me=e.Math.imul,P=e.Math.min,w=e.Math.max,b=e.Math.clz32,y=e.Math.fround,F=t.abort,z=t.assert,X=t.enlargeMemory,$=t.getTotalMemory,se=t.abortOnCannotGrowMemory,xe=t.invoke_viiiii,Fe=t.invoke_vif,ut=t.invoke_vid,Ct=t.invoke_fiff,qt=t.invoke_vi,ir=t.invoke_vii,Pt=t.invoke_ii,gn=t.invoke_viddi,Pr=t.invoke_vidd,Cr=t.invoke_iiii,Or=t.invoke_diii,on=t.invoke_di,li=t.invoke_iid,Do=t.invoke_iii,ns=t.invoke_viiddi,so=t.invoke_viiiiii,bo=t.invoke_dii,ji=t.invoke_i,oo=t.invoke_iiiiii,Po=t.invoke_viiid,TA=t.invoke_viififi,df=t.invoke_viii,dh=t.invoke_v,gh=t.invoke_viid,ao=t.invoke_idd,Gn=t.invoke_viiii,Ns=t._emscripten_asm_const_iiiii,lo=t._emscripten_asm_const_iiidddddd,su=t._emscripten_asm_const_iiiid,ou=t.__nbind_reference_external,au=t._emscripten_asm_const_iiiiiiii,FA=t._removeAccessorPrefix,NA=t._typeModule,fa=t.__nbind_register_pool,Aa=t.__decorate,OA=t._llvm_stackrestore,dr=t.___cxa_atexit,xo=t.__extends,Ga=t.__nbind_get_value_object,Ue=t.__ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj,wr=t._emscripten_set_main_loop_timing,gf=t.__nbind_register_primitive,LA=t.__nbind_register_type,MA=t._emscripten_memcpy_big,lu=t.__nbind_register_function,cu=t.___setErrNo,lc=t.__nbind_register_class,we=t.__nbind_finish,Nt=t._abort,cc=t._nbind_value,Oi=t._llvm_stacksave,co=t.___syscall54,Tt=t._defineHidden,Qn=t._emscripten_set_main_loop,pa=t._emscripten_get_now,Gi=t.__nbind_register_callback_signature,Li=t._emscripten_asm_const_iiiiii,qa=t.__nbind_free_external,mn=t._emscripten_asm_const_iiii,Xn=t._emscripten_asm_const_iiididi,uu=t.___syscall6,mh=t._atexit,Wa=t.___syscall140,Ya=t.___syscall146,Va=y(0);let $e=y(0);function Ja(o){o=o|0;var l=0;return l=I,I=I+o|0,I=I+15&-16,l|0}function mf(){return I|0}function uc(o){o=o|0,I=o}function vn(o,l){o=o|0,l=l|0,I=o,T=l}function ha(o,l){o=o|0,l=l|0,V||(V=o,te=l)}function UA(o){o=o|0,Be=o}function _A(){return Be|0}function da(){var o=0,l=0;Rr(8104,8,400)|0,Rr(8504,408,540)|0,o=9044,l=o+44|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));s[9088]=0,s[9089]=1,n[2273]=0,n[2274]=948,n[2275]=948,dr(17,8104,U|0)|0}function kl(o){o=o|0,mt(o+948|0)}function Ut(o){return o=y(o),((fP(o)|0)&2147483647)>>>0>2139095040|0}function Rn(o,l,u){o=o|0,l=l|0,u=u|0;e:do if(n[o+(l<<3)+4>>2]|0)o=o+(l<<3)|0;else{if((l|2|0)==3&&n[o+60>>2]|0){o=o+56|0;break}switch(l|0){case 0:case 2:case 4:case 5:{if(n[o+52>>2]|0){o=o+48|0;break e}break}default:}if(n[o+68>>2]|0){o=o+64|0;break}else{o=(l|1|0)==5?948:u;break}}while(!1);return o|0}function ga(o){o=o|0;var l=0;return l=_P(1e3)|0,Ka(o,(l|0)!=0,2456),n[2276]=(n[2276]|0)+1,Rr(l|0,8104,1e3)|0,s[o+2>>0]|0&&(n[l+4>>2]=2,n[l+12>>2]=4),n[l+976>>2]=o,l|0}function Ka(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0;g=I,I=I+16|0,A=g,l||(n[A>>2]=u,Gd(o,5,3197,A)),I=g}function is(){return ga(956)|0}function fc(o){o=o|0;var l=0;return l=Kt(1e3)|0,fu(l,o),Ka(n[o+976>>2]|0,1,2456),n[2276]=(n[2276]|0)+1,n[l+944>>2]=0,l|0}function fu(o,l){o=o|0,l=l|0;var u=0;Rr(o|0,l|0,948)|0,xy(o+948|0,l+948|0),u=o+960|0,o=l+960|0,l=u+40|0;do n[u>>2]=n[o>>2],u=u+4|0,o=o+4|0;while((u|0)<(l|0))}function Ac(o){o=o|0;var l=0,u=0,A=0,g=0;if(l=o+944|0,u=n[l>>2]|0,u|0&&(za(u+948|0,o)|0,n[l>>2]=0),u=Mi(o)|0,u|0){l=0;do n[(Bs(o,l)|0)+944>>2]=0,l=l+1|0;while((l|0)!=(u|0))}u=o+948|0,A=n[u>>2]|0,g=o+952|0,l=n[g>>2]|0,(l|0)!=(A|0)&&(n[g>>2]=l+(~((l+-4-A|0)>>>2)<<2)),Ql(u),HP(o),n[2276]=(n[2276]|0)+-1}function za(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0;A=n[o>>2]|0,k=o+4|0,u=n[k>>2]|0,m=u;e:do if((A|0)==(u|0))g=A,B=4;else for(o=A;;){if((n[o>>2]|0)==(l|0)){g=o,B=4;break e}if(o=o+4|0,(o|0)==(u|0)){o=0;break}}while(!1);return(B|0)==4&&((g|0)!=(u|0)?(A=g+4|0,o=m-A|0,l=o>>2,l&&(B2(g|0,A|0,o|0)|0,u=n[k>>2]|0),o=g+(l<<2)|0,(u|0)==(o|0)||(n[k>>2]=u+(~((u+-4-o|0)>>>2)<<2)),o=1):o=0),o|0}function Mi(o){return o=o|0,(n[o+952>>2]|0)-(n[o+948>>2]|0)>>2|0}function Bs(o,l){o=o|0,l=l|0;var u=0;return u=n[o+948>>2]|0,(n[o+952>>2]|0)-u>>2>>>0>l>>>0?o=n[u+(l<<2)>>2]|0:o=0,o|0}function Ql(o){o=o|0;var l=0,u=0,A=0,g=0;A=I,I=I+32|0,l=A,g=n[o>>2]|0,u=(n[o+4>>2]|0)-g|0,((n[o+8>>2]|0)-g|0)>>>0>u>>>0&&(g=u>>2,Ty(l,g,g,o+8|0),AP(o,l),Fy(l)),I=A}function yf(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,R=0,M=0;M=Mi(o)|0;do if(M|0){if((n[(Bs(o,0)|0)+944>>2]|0)==(o|0)){if(!(za(o+948|0,l)|0))break;Rr(l+400|0,8504,540)|0,n[l+944>>2]=0,Oe(o);break}B=n[(n[o+976>>2]|0)+12>>2]|0,k=o+948|0,R=(B|0)==0,u=0,m=0;do A=n[(n[k>>2]|0)+(m<<2)>>2]|0,(A|0)==(l|0)?Oe(o):(g=fc(A)|0,n[(n[k>>2]|0)+(u<<2)>>2]=g,n[g+944>>2]=o,R||eU[B&15](A,g,o,u),u=u+1|0),m=m+1|0;while((m|0)!=(M|0));if(u>>>0>>0){R=o+948|0,k=o+952|0,B=u,u=n[k>>2]|0;do m=(n[R>>2]|0)+(B<<2)|0,A=m+4|0,g=u-A|0,l=g>>2,l&&(B2(m|0,A|0,g|0)|0,u=n[k>>2]|0),g=u,A=m+(l<<2)|0,(g|0)!=(A|0)&&(u=g+(~((g+-4-A|0)>>>2)<<2)|0,n[k>>2]=u),B=B+1|0;while((B|0)!=(M|0))}}while(!1)}function pc(o){o=o|0;var l=0,u=0,A=0,g=0;Bi(o,(Mi(o)|0)==0,2491),Bi(o,(n[o+944>>2]|0)==0,2545),l=o+948|0,u=n[l>>2]|0,A=o+952|0,g=n[A>>2]|0,(g|0)!=(u|0)&&(n[A>>2]=g+(~((g+-4-u|0)>>>2)<<2)),Ql(l),l=o+976|0,u=n[l>>2]|0,Rr(o|0,8104,1e3)|0,s[u+2>>0]|0&&(n[o+4>>2]=2,n[o+12>>2]=4),n[l>>2]=u}function Bi(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0;g=I,I=I+16|0,A=g,l||(n[A>>2]=u,No(o,5,3197,A)),I=g}function Tn(){return n[2276]|0}function hc(){var o=0;return o=_P(20)|0,Ke((o|0)!=0,2592),n[2277]=(n[2277]|0)+1,n[o>>2]=n[239],n[o+4>>2]=n[240],n[o+8>>2]=n[241],n[o+12>>2]=n[242],n[o+16>>2]=n[243],o|0}function Ke(o,l){o=o|0,l=l|0;var u=0,A=0;A=I,I=I+16|0,u=A,o||(n[u>>2]=l,No(0,5,3197,u)),I=A}function ot(o){o=o|0,HP(o),n[2277]=(n[2277]|0)+-1}function St(o,l){o=o|0,l=l|0;var u=0;l?(Bi(o,(Mi(o)|0)==0,2629),u=1):(u=0,l=0),n[o+964>>2]=l,n[o+988>>2]=u}function lr(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;A=I,I=I+16|0,m=A+8|0,g=A+4|0,B=A,n[g>>2]=l,Bi(o,(n[l+944>>2]|0)==0,2709),Bi(o,(n[o+964>>2]|0)==0,2763),ee(o),l=o+948|0,n[B>>2]=(n[l>>2]|0)+(u<<2),n[m>>2]=n[B>>2],ye(l,m,g)|0,n[(n[g>>2]|0)+944>>2]=o,Oe(o),I=A}function ee(o){o=o|0;var l=0,u=0,A=0,g=0,m=0,B=0,k=0;if(u=Mi(o)|0,u|0&&(n[(Bs(o,0)|0)+944>>2]|0)!=(o|0)){A=n[(n[o+976>>2]|0)+12>>2]|0,g=o+948|0,m=(A|0)==0,l=0;do B=n[(n[g>>2]|0)+(l<<2)>>2]|0,k=fc(B)|0,n[(n[g>>2]|0)+(l<<2)>>2]=k,n[k+944>>2]=o,m||eU[A&15](B,k,o,l),l=l+1|0;while((l|0)!=(u|0))}}function ye(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0,Ve=0,Le=0,Te=0,nt=0,Ze=0;nt=I,I=I+64|0,q=nt+52|0,k=nt+48|0,oe=nt+28|0,Ve=nt+24|0,Le=nt+20|0,Te=nt,A=n[o>>2]|0,m=A,l=A+((n[l>>2]|0)-m>>2<<2)|0,A=o+4|0,g=n[A>>2]|0,B=o+8|0;do if(g>>>0<(n[B>>2]|0)>>>0){if((l|0)==(g|0)){n[l>>2]=n[u>>2],n[A>>2]=(n[A>>2]|0)+4;break}pP(o,l,g,l+4|0),l>>>0<=u>>>0&&(u=(n[A>>2]|0)>>>0>u>>>0?u+4|0:u),n[l>>2]=n[u>>2]}else{A=(g-m>>2)+1|0,g=N(o)|0,g>>>0>>0&&an(o),L=n[o>>2]|0,M=(n[B>>2]|0)-L|0,m=M>>1,Ty(Te,M>>2>>>0>>1>>>0?m>>>0>>0?A:m:g,l-L>>2,o+8|0),L=Te+8|0,A=n[L>>2]|0,m=Te+12|0,M=n[m>>2]|0,B=M,R=A;do if((A|0)==(M|0)){if(M=Te+4|0,A=n[M>>2]|0,Ze=n[Te>>2]|0,g=Ze,A>>>0<=Ze>>>0){A=B-g>>1,A=A|0?A:1,Ty(oe,A,A>>>2,n[Te+16>>2]|0),n[Ve>>2]=n[M>>2],n[Le>>2]=n[L>>2],n[k>>2]=n[Ve>>2],n[q>>2]=n[Le>>2],Z1(oe,k,q),A=n[Te>>2]|0,n[Te>>2]=n[oe>>2],n[oe>>2]=A,A=oe+4|0,Ze=n[M>>2]|0,n[M>>2]=n[A>>2],n[A>>2]=Ze,A=oe+8|0,Ze=n[L>>2]|0,n[L>>2]=n[A>>2],n[A>>2]=Ze,A=oe+12|0,Ze=n[m>>2]|0,n[m>>2]=n[A>>2],n[A>>2]=Ze,Fy(oe),A=n[L>>2]|0;break}m=A,B=((m-g>>2)+1|0)/-2|0,k=A+(B<<2)|0,g=R-m|0,m=g>>2,m&&(B2(k|0,A|0,g|0)|0,A=n[M>>2]|0),Ze=k+(m<<2)|0,n[L>>2]=Ze,n[M>>2]=A+(B<<2),A=Ze}while(!1);n[A>>2]=n[u>>2],n[L>>2]=(n[L>>2]|0)+4,l=hP(o,Te,l)|0,Fy(Te)}while(!1);return I=nt,l|0}function Oe(o){o=o|0;var l=0;do{if(l=o+984|0,s[l>>0]|0)break;s[l>>0]=1,h[o+504>>2]=y(ae),o=n[o+944>>2]|0}while(o|0)}function mt(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-4-A|0)>>>2)<<2)),It(u))}function Et(o){return o=o|0,n[o+944>>2]|0}function bt(o){o=o|0,Bi(o,(n[o+964>>2]|0)!=0,2832),Oe(o)}function tr(o){return o=o|0,(s[o+984>>0]|0)!=0|0}function pn(o,l){o=o|0,l=l|0,K8e(o,l,400)|0&&(Rr(o|0,l|0,400)|0,Oe(o))}function ci(o){o=o|0;var l=$e;return l=y(h[o+44>>2]),o=Ut(l)|0,y(o?y(0):l)}function qi(o){o=o|0;var l=$e;return l=y(h[o+48>>2]),Ut(l)|0&&(l=s[(n[o+976>>2]|0)+2>>0]|0?y(1):y(0)),y(l)}function Fn(o,l){o=o|0,l=l|0,n[o+980>>2]=l}function Xa(o){return o=o|0,n[o+980>>2]|0}function Iy(o,l){o=o|0,l=l|0;var u=0;u=o+4|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function q1(o){return o=o|0,n[o+4>>2]|0}function ko(o,l){o=o|0,l=l|0;var u=0;u=o+8|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Cy(o){return o=o|0,n[o+8>>2]|0}function yh(o,l){o=o|0,l=l|0;var u=0;u=o+12|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function W1(o){return o=o|0,n[o+12>>2]|0}function Qo(o,l){o=o|0,l=l|0;var u=0;u=o+16|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Eh(o){return o=o|0,n[o+16>>2]|0}function Ih(o,l){o=o|0,l=l|0;var u=0;u=o+20|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Au(o){return o=o|0,n[o+20>>2]|0}function Ch(o,l){o=o|0,l=l|0;var u=0;u=o+24|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Rd(o){return o=o|0,n[o+24>>2]|0}function Td(o,l){o=o|0,l=l|0;var u=0;u=o+28|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Fd(o){return o=o|0,n[o+28>>2]|0}function wy(o,l){o=o|0,l=l|0;var u=0;u=o+32|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Ef(o){return o=o|0,n[o+32>>2]|0}function Ro(o,l){o=o|0,l=l|0;var u=0;u=o+36|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Rl(o){return o=o|0,n[o+36>>2]|0}function wh(o,l){o=o|0,l=y(l);var u=0;u=o+40|0,y(h[u>>2])!=l&&(h[u>>2]=l,Oe(o))}function Nd(o,l){o=o|0,l=y(l);var u=0;u=o+44|0,y(h[u>>2])!=l&&(h[u>>2]=l,Oe(o))}function Tl(o,l){o=o|0,l=y(l);var u=0;u=o+48|0,y(h[u>>2])!=l&&(h[u>>2]=l,Oe(o))}function Fl(o,l){o=o|0,l=y(l);var u=0,A=0,g=0,m=0;m=Ut(l)|0,u=(m^1)&1,A=o+52|0,g=o+56|0,m|y(h[A>>2])==l&&(n[g>>2]|0)==(u|0)||(h[A>>2]=l,n[g>>2]=u,Oe(o))}function By(o,l){o=o|0,l=y(l);var u=0,A=0;A=o+52|0,u=o+56|0,y(h[A>>2])==l&&(n[u>>2]|0)==2||(h[A>>2]=l,A=Ut(l)|0,n[u>>2]=A?3:2,Oe(o))}function HA(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+52|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function vy(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,g=0,m=0;m=Ut(u)|0,A=(m^1)&1,g=o+132+(l<<3)|0,l=o+132+(l<<3)+4|0,m|y(h[g>>2])==u&&(n[l>>2]|0)==(A|0)||(h[g>>2]=u,n[l>>2]=A,Oe(o))}function Sy(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,g=0,m=0;m=Ut(u)|0,A=m?0:2,g=o+132+(l<<3)|0,l=o+132+(l<<3)+4|0,m|y(h[g>>2])==u&&(n[l>>2]|0)==(A|0)||(h[g>>2]=u,n[l>>2]=A,Oe(o))}function jA(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=l+132+(u<<3)|0,l=n[A+4>>2]|0,u=o,n[u>>2]=n[A>>2],n[u+4>>2]=l}function GA(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,g=0,m=0;m=Ut(u)|0,A=(m^1)&1,g=o+60+(l<<3)|0,l=o+60+(l<<3)+4|0,m|y(h[g>>2])==u&&(n[l>>2]|0)==(A|0)||(h[g>>2]=u,n[l>>2]=A,Oe(o))}function W(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,g=0,m=0;m=Ut(u)|0,A=m?0:2,g=o+60+(l<<3)|0,l=o+60+(l<<3)+4|0,m|y(h[g>>2])==u&&(n[l>>2]|0)==(A|0)||(h[g>>2]=u,n[l>>2]=A,Oe(o))}function xt(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=l+60+(u<<3)|0,l=n[A+4>>2]|0,u=o,n[u>>2]=n[A>>2],n[u+4>>2]=l}function qA(o,l){o=o|0,l=l|0;var u=0;u=o+60+(l<<3)+4|0,(n[u>>2]|0)!=3&&(h[o+60+(l<<3)>>2]=y(ae),n[u>>2]=3,Oe(o))}function To(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,g=0,m=0;m=Ut(u)|0,A=(m^1)&1,g=o+204+(l<<3)|0,l=o+204+(l<<3)+4|0,m|y(h[g>>2])==u&&(n[l>>2]|0)==(A|0)||(h[g>>2]=u,n[l>>2]=A,Oe(o))}function If(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,g=0,m=0;m=Ut(u)|0,A=m?0:2,g=o+204+(l<<3)|0,l=o+204+(l<<3)+4|0,m|y(h[g>>2])==u&&(n[l>>2]|0)==(A|0)||(h[g>>2]=u,n[l>>2]=A,Oe(o))}function yt(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=l+204+(u<<3)|0,l=n[A+4>>2]|0,u=o,n[u>>2]=n[A>>2],n[u+4>>2]=l}function pu(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,g=0,m=0;m=Ut(u)|0,A=(m^1)&1,g=o+276+(l<<3)|0,l=o+276+(l<<3)+4|0,m|y(h[g>>2])==u&&(n[l>>2]|0)==(A|0)||(h[g>>2]=u,n[l>>2]=A,Oe(o))}function Dy(o,l){return o=o|0,l=l|0,y(h[o+276+(l<<3)>>2])}function Od(o,l){o=o|0,l=y(l);var u=0,A=0,g=0,m=0;m=Ut(l)|0,u=(m^1)&1,A=o+348|0,g=o+352|0,m|y(h[A>>2])==l&&(n[g>>2]|0)==(u|0)||(h[A>>2]=l,n[g>>2]=u,Oe(o))}function Y1(o,l){o=o|0,l=y(l);var u=0,A=0;A=o+348|0,u=o+352|0,y(h[A>>2])==l&&(n[u>>2]|0)==2||(h[A>>2]=l,A=Ut(l)|0,n[u>>2]=A?3:2,Oe(o))}function Bh(o){o=o|0;var l=0;l=o+352|0,(n[l>>2]|0)!=3&&(h[o+348>>2]=y(ae),n[l>>2]=3,Oe(o))}function ur(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+348|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function zi(o,l){o=o|0,l=y(l);var u=0,A=0,g=0,m=0;m=Ut(l)|0,u=(m^1)&1,A=o+356|0,g=o+360|0,m|y(h[A>>2])==l&&(n[g>>2]|0)==(u|0)||(h[A>>2]=l,n[g>>2]=u,Oe(o))}function Cf(o,l){o=o|0,l=y(l);var u=0,A=0;A=o+356|0,u=o+360|0,y(h[A>>2])==l&&(n[u>>2]|0)==2||(h[A>>2]=l,A=Ut(l)|0,n[u>>2]=A?3:2,Oe(o))}function Za(o){o=o|0;var l=0;l=o+360|0,(n[l>>2]|0)!=3&&(h[o+356>>2]=y(ae),n[l>>2]=3,Oe(o))}function Ld(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+356|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function hu(o,l){o=o|0,l=y(l);var u=0,A=0,g=0,m=0;m=Ut(l)|0,u=(m^1)&1,A=o+364|0,g=o+368|0,m|y(h[A>>2])==l&&(n[g>>2]|0)==(u|0)||(h[A>>2]=l,n[g>>2]=u,Oe(o))}function wf(o,l){o=o|0,l=y(l);var u=0,A=0,g=0,m=0;m=Ut(l)|0,u=m?0:2,A=o+364|0,g=o+368|0,m|y(h[A>>2])==l&&(n[g>>2]|0)==(u|0)||(h[A>>2]=l,n[g>>2]=u,Oe(o))}function wt(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+364|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function mi(o,l){o=o|0,l=y(l);var u=0,A=0,g=0,m=0;m=Ut(l)|0,u=(m^1)&1,A=o+372|0,g=o+376|0,m|y(h[A>>2])==l&&(n[g>>2]|0)==(u|0)||(h[A>>2]=l,n[g>>2]=u,Oe(o))}function WA(o,l){o=o|0,l=y(l);var u=0,A=0,g=0,m=0;m=Ut(l)|0,u=m?0:2,A=o+372|0,g=o+376|0,m|y(h[A>>2])==l&&(n[g>>2]|0)==(u|0)||(h[A>>2]=l,n[g>>2]=u,Oe(o))}function $a(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+372|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function ma(o,l){o=o|0,l=y(l);var u=0,A=0,g=0,m=0;m=Ut(l)|0,u=(m^1)&1,A=o+380|0,g=o+384|0,m|y(h[A>>2])==l&&(n[g>>2]|0)==(u|0)||(h[A>>2]=l,n[g>>2]=u,Oe(o))}function el(o,l){o=o|0,l=y(l);var u=0,A=0,g=0,m=0;m=Ut(l)|0,u=m?0:2,A=o+380|0,g=o+384|0,m|y(h[A>>2])==l&&(n[g>>2]|0)==(u|0)||(h[A>>2]=l,n[g>>2]=u,Oe(o))}function Md(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+380|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function vh(o,l){o=o|0,l=y(l);var u=0,A=0,g=0,m=0;m=Ut(l)|0,u=(m^1)&1,A=o+388|0,g=o+392|0,m|y(h[A>>2])==l&&(n[g>>2]|0)==(u|0)||(h[A>>2]=l,n[g>>2]=u,Oe(o))}function Ud(o,l){o=o|0,l=y(l);var u=0,A=0,g=0,m=0;m=Ut(l)|0,u=m?0:2,A=o+388|0,g=o+392|0,m|y(h[A>>2])==l&&(n[g>>2]|0)==(u|0)||(h[A>>2]=l,n[g>>2]=u,Oe(o))}function by(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+388|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function YA(o,l){o=o|0,l=y(l);var u=0;u=o+396|0,y(h[u>>2])!=l&&(h[u>>2]=l,Oe(o))}function _d(o){return o=o|0,y(h[o+396>>2])}function du(o){return o=o|0,y(h[o+400>>2])}function gu(o){return o=o|0,y(h[o+404>>2])}function Bf(o){return o=o|0,y(h[o+408>>2])}function Os(o){return o=o|0,y(h[o+412>>2])}function mu(o){return o=o|0,y(h[o+416>>2])}function qn(o){return o=o|0,y(h[o+420>>2])}function ss(o,l){switch(o=o|0,l=l|0,Bi(o,(l|0)<6,2918),l|0){case 0:{l=(n[o+496>>2]|0)==2?5:4;break}case 2:{l=(n[o+496>>2]|0)==2?4:5;break}default:}return y(h[o+424+(l<<2)>>2])}function Pi(o,l){switch(o=o|0,l=l|0,Bi(o,(l|0)<6,2918),l|0){case 0:{l=(n[o+496>>2]|0)==2?5:4;break}case 2:{l=(n[o+496>>2]|0)==2?4:5;break}default:}return y(h[o+448+(l<<2)>>2])}function VA(o,l){switch(o=o|0,l=l|0,Bi(o,(l|0)<6,2918),l|0){case 0:{l=(n[o+496>>2]|0)==2?5:4;break}case 2:{l=(n[o+496>>2]|0)==2?4:5;break}default:}return y(h[o+472+(l<<2)>>2])}function vf(o,l){o=o|0,l=l|0;var u=0,A=$e;return u=n[o+4>>2]|0,(u|0)==(n[l+4>>2]|0)?u?(A=y(h[o>>2]),o=y(ce(y(A-y(h[l>>2]))))>2]=0,n[A+4>>2]=0,n[A+8>>2]=0,Ue(A|0,o|0,l|0,0),No(o,3,(s[A+11>>0]|0)<0?n[A>>2]|0:A,u),yHe(A),I=u}function os(o,l,u,A){o=y(o),l=y(l),u=u|0,A=A|0;var g=$e;o=y(o*l),g=y(JM(o,y(1)));do if(yn(g,y(0))|0)o=y(o-g);else{if(o=y(o-g),yn(g,y(1))|0){o=y(o+y(1));break}if(u){o=y(o+y(1));break}A||(g>y(.5)?g=y(1):(A=yn(g,y(.5))|0,g=y(A?1:0)),o=y(o+g))}while(!1);return y(o/l)}function Nl(o,l,u,A,g,m,B,k,R,M,L,q,oe){o=o|0,l=y(l),u=u|0,A=y(A),g=g|0,m=y(m),B=B|0,k=y(k),R=y(R),M=y(M),L=y(L),q=y(q),oe=oe|0;var Ve=0,Le=$e,Te=$e,nt=$e,Ze=$e,ft=$e,He=$e;return R>2]),Le!=y(0))?(nt=y(os(l,Le,0,0)),Ze=y(os(A,Le,0,0)),Te=y(os(m,Le,0,0)),Le=y(os(k,Le,0,0))):(Te=m,nt=l,Le=k,Ze=A),(g|0)==(o|0)?Ve=yn(Te,nt)|0:Ve=0,(B|0)==(u|0)?oe=yn(Le,Ze)|0:oe=0,!Ve&&(ft=y(l-L),!(Fo(o,ft,R)|0))&&!(Sf(o,ft,g,R)|0)?Ve=Df(o,ft,g,m,R)|0:Ve=1,!oe&&(He=y(A-q),!(Fo(u,He,M)|0))&&!(Sf(u,He,B,M)|0)?oe=Df(u,He,B,k,M)|0:oe=1,oe=Ve&oe),oe|0}function Fo(o,l,u){return o=o|0,l=y(l),u=y(u),(o|0)==1?o=yn(l,u)|0:o=0,o|0}function Sf(o,l,u,A){return o=o|0,l=y(l),u=u|0,A=y(A),(o|0)==2&(u|0)==0?l>=A?o=1:o=yn(l,A)|0:o=0,o|0}function Df(o,l,u,A,g){return o=o|0,l=y(l),u=u|0,A=y(A),g=y(g),(o|0)==2&(u|0)==2&A>l?g<=l?o=1:o=yn(l,g)|0:o=0,o|0}function Ol(o,l,u,A,g,m,B,k,R,M,L){o=o|0,l=y(l),u=y(u),A=A|0,g=g|0,m=m|0,B=y(B),k=y(k),R=R|0,M=M|0,L=L|0;var q=0,oe=0,Ve=0,Le=0,Te=$e,nt=$e,Ze=0,ft=0,He=0,Ye=0,Mt=0,Gr=0,fr=0,$t=0,Tr=0,Hr=0,cr=0,jn=$e,Mo=$e,Uo=$e,_o=0,ol=0;cr=I,I=I+160|0,$t=cr+152|0,fr=cr+120|0,Gr=cr+104|0,He=cr+72|0,Le=cr+56|0,Mt=cr+8|0,ft=cr,Ye=(n[2279]|0)+1|0,n[2279]=Ye,Tr=o+984|0,s[Tr>>0]|0&&(n[o+512>>2]|0)!=(n[2278]|0)?Ze=4:(n[o+516>>2]|0)==(A|0)?Hr=0:Ze=4,(Ze|0)==4&&(n[o+520>>2]=0,n[o+924>>2]=-1,n[o+928>>2]=-1,h[o+932>>2]=y(-1),h[o+936>>2]=y(-1),Hr=1);e:do if(n[o+964>>2]|0)if(Te=y(En(o,2,B)),nt=y(En(o,0,B)),q=o+916|0,Uo=y(h[q>>2]),Mo=y(h[o+920>>2]),jn=y(h[o+932>>2]),Nl(g,l,m,u,n[o+924>>2]|0,Uo,n[o+928>>2]|0,Mo,jn,y(h[o+936>>2]),Te,nt,L)|0)Ze=22;else if(Ve=n[o+520>>2]|0,!Ve)Ze=21;else for(oe=0;;){if(q=o+524+(oe*24|0)|0,jn=y(h[q>>2]),Mo=y(h[o+524+(oe*24|0)+4>>2]),Uo=y(h[o+524+(oe*24|0)+16>>2]),Nl(g,l,m,u,n[o+524+(oe*24|0)+8>>2]|0,jn,n[o+524+(oe*24|0)+12>>2]|0,Mo,Uo,y(h[o+524+(oe*24|0)+20>>2]),Te,nt,L)|0){Ze=22;break e}if(oe=oe+1|0,oe>>>0>=Ve>>>0){Ze=21;break}}else{if(R){if(q=o+916|0,!(yn(y(h[q>>2]),l)|0)){Ze=21;break}if(!(yn(y(h[o+920>>2]),u)|0)){Ze=21;break}if((n[o+924>>2]|0)!=(g|0)){Ze=21;break}q=(n[o+928>>2]|0)==(m|0)?q:0,Ze=22;break}if(Ve=n[o+520>>2]|0,!Ve)Ze=21;else for(oe=0;;){if(q=o+524+(oe*24|0)|0,yn(y(h[q>>2]),l)|0&&yn(y(h[o+524+(oe*24|0)+4>>2]),u)|0&&(n[o+524+(oe*24|0)+8>>2]|0)==(g|0)&&(n[o+524+(oe*24|0)+12>>2]|0)==(m|0)){Ze=22;break e}if(oe=oe+1|0,oe>>>0>=Ve>>>0){Ze=21;break}}}while(!1);do if((Ze|0)==21)s[11697]|0?(q=0,Ze=28):(q=0,Ze=31);else if((Ze|0)==22){if(oe=(s[11697]|0)!=0,!((q|0)!=0&(Hr^1)))if(oe){Ze=28;break}else{Ze=31;break}Le=q+16|0,n[o+908>>2]=n[Le>>2],Ve=q+20|0,n[o+912>>2]=n[Ve>>2],(s[11698]|0)==0|oe^1||(n[ft>>2]=yu(Ye)|0,n[ft+4>>2]=Ye,No(o,4,2972,ft),oe=n[o+972>>2]|0,oe|0&&op[oe&127](o),g=ya(g,R)|0,m=ya(m,R)|0,ol=+y(h[Le>>2]),_o=+y(h[Ve>>2]),n[Mt>>2]=g,n[Mt+4>>2]=m,E[Mt+8>>3]=+l,E[Mt+16>>3]=+u,E[Mt+24>>3]=ol,E[Mt+32>>3]=_o,n[Mt+40>>2]=M,No(o,4,2989,Mt))}while(!1);return(Ze|0)==28&&(oe=yu(Ye)|0,n[Le>>2]=oe,n[Le+4>>2]=Ye,n[Le+8>>2]=Hr?3047:11699,No(o,4,3038,Le),oe=n[o+972>>2]|0,oe|0&&op[oe&127](o),Mt=ya(g,R)|0,Ze=ya(m,R)|0,n[He>>2]=Mt,n[He+4>>2]=Ze,E[He+8>>3]=+l,E[He+16>>3]=+u,n[He+24>>2]=M,No(o,4,3049,He),Ze=31),(Ze|0)==31&&(Ls(o,l,u,A,g,m,B,k,R,L),s[11697]|0&&(oe=n[2279]|0,Mt=yu(oe)|0,n[Gr>>2]=Mt,n[Gr+4>>2]=oe,n[Gr+8>>2]=Hr?3047:11699,No(o,4,3083,Gr),oe=n[o+972>>2]|0,oe|0&&op[oe&127](o),Mt=ya(g,R)|0,Gr=ya(m,R)|0,_o=+y(h[o+908>>2]),ol=+y(h[o+912>>2]),n[fr>>2]=Mt,n[fr+4>>2]=Gr,E[fr+8>>3]=_o,E[fr+16>>3]=ol,n[fr+24>>2]=M,No(o,4,3092,fr)),n[o+516>>2]=A,q||(oe=o+520|0,q=n[oe>>2]|0,(q|0)==16&&(s[11697]|0&&No(o,4,3124,$t),n[oe>>2]=0,q=0),R?q=o+916|0:(n[oe>>2]=q+1,q=o+524+(q*24|0)|0),h[q>>2]=l,h[q+4>>2]=u,n[q+8>>2]=g,n[q+12>>2]=m,n[q+16>>2]=n[o+908>>2],n[q+20>>2]=n[o+912>>2],q=0)),R&&(n[o+416>>2]=n[o+908>>2],n[o+420>>2]=n[o+912>>2],s[o+985>>0]=1,s[Tr>>0]=0),n[2279]=(n[2279]|0)+-1,n[o+512>>2]=n[2278],I=cr,Hr|(q|0)==0|0}function En(o,l,u){o=o|0,l=l|0,u=y(u);var A=$e;return A=y(K(o,l,u)),y(A+y(re(o,l,u)))}function No(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0;m=I,I=I+16|0,g=m,n[g>>2]=A,o?A=n[o+976>>2]|0:A=0,bh(A,o,l,u,g),I=m}function yu(o){return o=o|0,(o>>>0>60?3201:3201+(60-o)|0)|0}function ya(o,l){o=o|0,l=l|0;var u=0,A=0,g=0;return g=I,I=I+32|0,u=g+12|0,A=g,n[u>>2]=n[254],n[u+4>>2]=n[255],n[u+8>>2]=n[256],n[A>>2]=n[257],n[A+4>>2]=n[258],n[A+8>>2]=n[259],(o|0)>2?o=11699:o=n[(l?A:u)+(o<<2)>>2]|0,I=g,o|0}function Ls(o,l,u,A,g,m,B,k,R,M){o=o|0,l=y(l),u=y(u),A=A|0,g=g|0,m=m|0,B=y(B),k=y(k),R=R|0,M=M|0;var L=0,q=0,oe=0,Ve=0,Le=$e,Te=$e,nt=$e,Ze=$e,ft=$e,He=$e,Ye=$e,Mt=0,Gr=0,fr=0,$t=$e,Tr=$e,Hr=0,cr=$e,jn=0,Mo=0,Uo=0,_o=0,ol=0,qh=0,Wh=0,mc=0,Yh=0,Of=0,Lf=0,Vh=0,Jh=0,Kh=0,ln=0,yc=0,zh=0,Du=0,Xh=$e,Zh=$e,Mf=$e,Uf=$e,bu=$e,Ao=0,ql=0,wa=0,Ec=0,lp=0,cp=$e,_f=$e,up=$e,fp=$e,po=$e,Hs=$e,Ic=0,Yn=$e,Ap=$e,Ho=$e,Pu=$e,jo=$e,xu=$e,pp=0,hp=0,ku=$e,ho=$e,Cc=0,dp=0,gp=0,mp=0,Nr=$e,fi=0,js=0,Go=0,go=0,Mr=0,Ar=0,wc=0,zt=$e,yp=0,vi=0;wc=I,I=I+16|0,Ao=wc+12|0,ql=wc+8|0,wa=wc+4|0,Ec=wc,Bi(o,(g|0)==0|(Ut(l)|0)^1,3326),Bi(o,(m|0)==0|(Ut(u)|0)^1,3406),js=pt(o,A)|0,n[o+496>>2]=js,Mr=gr(2,js)|0,Ar=gr(0,js)|0,h[o+440>>2]=y(K(o,Mr,B)),h[o+444>>2]=y(re(o,Mr,B)),h[o+428>>2]=y(K(o,Ar,B)),h[o+436>>2]=y(re(o,Ar,B)),h[o+464>>2]=y(vr(o,Mr)),h[o+468>>2]=y(_n(o,Mr)),h[o+452>>2]=y(vr(o,Ar)),h[o+460>>2]=y(_n(o,Ar)),h[o+488>>2]=y(yi(o,Mr,B)),h[o+492>>2]=y(vs(o,Mr,B)),h[o+476>>2]=y(yi(o,Ar,B)),h[o+484>>2]=y(vs(o,Ar,B));do if(n[o+964>>2]|0)zA(o,l,u,g,m,B,k);else{if(Go=o+948|0,go=(n[o+952>>2]|0)-(n[Go>>2]|0)>>2,!go){lP(o,l,u,g,m,B,k);break}if(!R&&V1(o,l,u,g,m,B,k)|0)break;ee(o),yc=o+508|0,s[yc>>0]=0,Mr=gr(n[o+4>>2]|0,js)|0,Ar=ky(Mr,js)|0,fi=de(Mr)|0,zh=n[o+8>>2]|0,dp=o+28|0,Du=(n[dp>>2]|0)!=0,jo=fi?B:k,ku=fi?k:B,Xh=y(xh(o,Mr,B)),Zh=y(J1(o,Mr,B)),Le=y(xh(o,Ar,B)),xu=y(tl(o,Mr,B)),ho=y(tl(o,Ar,B)),fr=fi?g:m,Cc=fi?m:g,Nr=fi?xu:ho,ft=fi?ho:xu,Pu=y(En(o,2,B)),Ze=y(En(o,0,B)),Te=y(y(Zr(o+364|0,B))-Nr),nt=y(y(Zr(o+380|0,B))-Nr),He=y(y(Zr(o+372|0,k))-ft),Ye=y(y(Zr(o+388|0,k))-ft),Mf=fi?Te:He,Uf=fi?nt:Ye,Pu=y(l-Pu),l=y(Pu-Nr),Ut(l)|0?Nr=l:Nr=y(ri(y(fg(l,nt)),Te)),Ap=y(u-Ze),l=y(Ap-ft),Ut(l)|0?Ho=l:Ho=y(ri(y(fg(l,Ye)),He)),Te=fi?Nr:Ho,Yn=fi?Ho:Nr;e:do if((fr|0)==1)for(A=0,q=0;;){if(L=Bs(o,q)|0,!A)y(XA(L))>y(0)&&y(kh(L))>y(0)?A=L:A=0;else if(K1(L)|0){Ve=0;break e}if(q=q+1|0,q>>>0>=go>>>0){Ve=A;break}}else Ve=0;while(!1);Mt=Ve+500|0,Gr=Ve+504|0,A=0,L=0,l=y(0),oe=0;do{if(q=n[(n[Go>>2]|0)+(oe<<2)>>2]|0,(n[q+36>>2]|0)==1)Qy(q),s[q+985>>0]=1,s[q+984>>0]=0;else{bf(q),R&&Dh(q,pt(q,js)|0,Te,Yn,Nr);do if((n[q+24>>2]|0)!=1)if((q|0)==(Ve|0)){n[Mt>>2]=n[2278],h[Gr>>2]=y(0);break}else{cP(o,q,Nr,g,Ho,Nr,Ho,m,js,M);break}else L|0&&(n[L+960>>2]=q),n[q+960>>2]=0,L=q,A=A|0?A:q;while(!1);Hs=y(h[q+504>>2]),l=y(l+y(Hs+y(En(q,Mr,Nr))))}oe=oe+1|0}while((oe|0)!=(go|0));for(Uo=l>Te,Ic=Du&((fr|0)==2&Uo)?1:fr,jn=(Cc|0)==1,ol=jn&(R^1),qh=(Ic|0)==1,Wh=(Ic|0)==2,mc=976+(Mr<<2)|0,Yh=(Cc|2|0)==2,Kh=jn&(Du^1),Of=1040+(Ar<<2)|0,Lf=1040+(Mr<<2)|0,Vh=976+(Ar<<2)|0,Jh=(Cc|0)!=1,Uo=Du&((fr|0)!=0&Uo),Mo=o+976|0,jn=jn^1,l=Te,Hr=0,_o=0,Hs=y(0),bu=y(0);;){e:do if(Hr>>>0>>0)for(Gr=n[Go>>2]|0,oe=0,Ye=y(0),He=y(0),nt=y(0),Te=y(0),q=0,L=0,Ve=Hr;;){if(Mt=n[Gr+(Ve<<2)>>2]|0,(n[Mt+36>>2]|0)!=1&&(n[Mt+940>>2]=_o,(n[Mt+24>>2]|0)!=1)){if(Ze=y(En(Mt,Mr,Nr)),ln=n[mc>>2]|0,u=y(Zr(Mt+380+(ln<<3)|0,jo)),ft=y(h[Mt+504>>2]),u=y(fg(u,ft)),u=y(ri(y(Zr(Mt+364+(ln<<3)|0,jo)),u)),Du&(oe|0)!=0&y(Ze+y(He+u))>l){m=oe,Ze=Ye,fr=Ve;break e}Ze=y(Ze+u),u=y(He+Ze),Ze=y(Ye+Ze),K1(Mt)|0&&(nt=y(nt+y(XA(Mt))),Te=y(Te-y(ft*y(kh(Mt))))),L|0&&(n[L+960>>2]=Mt),n[Mt+960>>2]=0,oe=oe+1|0,L=Mt,q=q|0?q:Mt}else Ze=Ye,u=He;if(Ve=Ve+1|0,Ve>>>0>>0)Ye=Ze,He=u;else{m=oe,fr=Ve;break}}else m=0,Ze=y(0),nt=y(0),Te=y(0),q=0,fr=Hr;while(!1);ln=nt>y(0)&nty(0)&TeUf&((Ut(Uf)|0)^1))l=Uf,ln=51;else if(s[(n[Mo>>2]|0)+3>>0]|0)ln=51;else{if($t!=y(0)&&y(XA(o))!=y(0)){ln=53;break}l=Ze,ln=53}while(!1);if((ln|0)==51&&(ln=0,Ut(l)|0?ln=53:(Tr=y(l-Ze),cr=l)),(ln|0)==53&&(ln=0,Ze>2]|0,Ve=Try(0),He=y(Tr/$t),nt=y(0),Ze=y(0),l=y(0),L=q;do u=y(Zr(L+380+(oe<<3)|0,jo)),Te=y(Zr(L+364+(oe<<3)|0,jo)),Te=y(fg(u,y(ri(Te,y(h[L+504>>2]))))),Ve?(u=y(Te*y(kh(L))),u!=y(-0)&&(zt=y(Te-y(ft*u)),cp=y(Wn(L,Mr,zt,cr,Nr)),zt!=cp)&&(nt=y(nt-y(cp-Te)),l=y(l+u))):Mt&&(_f=y(XA(L)),_f!=y(0))&&(zt=y(Te+y(He*_f)),up=y(Wn(L,Mr,zt,cr,Nr)),zt!=up)&&(nt=y(nt-y(up-Te)),Ze=y(Ze-_f)),L=n[L+960>>2]|0;while(L|0);if(l=y(Ye+l),Te=y(Tr+nt),lp)l=y(0);else{ft=y($t+Ze),Ve=n[mc>>2]|0,Mt=Tey(0),ft=y(Te/ft),l=y(0);do{zt=y(Zr(q+380+(Ve<<3)|0,jo)),nt=y(Zr(q+364+(Ve<<3)|0,jo)),nt=y(fg(zt,y(ri(nt,y(h[q+504>>2]))))),Mt?(zt=y(nt*y(kh(q))),Te=y(-zt),zt!=y(-0)?(zt=y(He*Te),Te=y(Wn(q,Mr,y(nt+(Gr?Te:zt)),cr,Nr))):Te=nt):oe&&(fp=y(XA(q)),fp!=y(0))?Te=y(Wn(q,Mr,y(nt+y(ft*fp)),cr,Nr)):Te=nt,l=y(l-y(Te-nt)),Ze=y(En(q,Mr,Nr)),u=y(En(q,Ar,Nr)),Te=y(Te+Ze),h[ql>>2]=Te,n[Ec>>2]=1,nt=y(h[q+396>>2]);e:do if(Ut(nt)|0){L=Ut(Yn)|0;do if(!L){if(Uo|(uo(q,Ar,Yn)|0|jn)||(as(o,q)|0)!=4||(n[(Ll(q,Ar)|0)+4>>2]|0)==3||(n[(Ml(q,Ar)|0)+4>>2]|0)==3)break;h[Ao>>2]=Yn,n[wa>>2]=1;break e}while(!1);if(uo(q,Ar,Yn)|0){L=n[q+992+(n[Vh>>2]<<2)>>2]|0,zt=y(u+y(Zr(L,Yn))),h[Ao>>2]=zt,L=Jh&(n[L+4>>2]|0)==2,n[wa>>2]=((Ut(zt)|0|L)^1)&1;break}else{h[Ao>>2]=Yn,n[wa>>2]=L?0:2;break}}else zt=y(Te-Ze),$t=y(zt/nt),zt=y(nt*zt),n[wa>>2]=1,h[Ao>>2]=y(u+(fi?$t:zt));while(!1);Eu(q,Mr,cr,Nr,Ec,ql),Eu(q,Ar,Yn,Nr,wa,Ao);do if(!(uo(q,Ar,Yn)|0)&&(as(o,q)|0)==4){if((n[(Ll(q,Ar)|0)+4>>2]|0)==3){L=0;break}L=(n[(Ml(q,Ar)|0)+4>>2]|0)!=3}else L=0;while(!1);zt=y(h[ql>>2]),$t=y(h[Ao>>2]),yp=n[Ec>>2]|0,vi=n[wa>>2]|0,Ol(q,fi?zt:$t,fi?$t:zt,js,fi?yp:vi,fi?vi:yp,Nr,Ho,R&(L^1),3488,M)|0,s[yc>>0]=s[yc>>0]|s[q+508>>0],q=n[q+960>>2]|0}while(q|0)}}else l=y(0);if(l=y(Tr+l),vi=l>0]=vi|c[yc>>0],Wh&l>y(0)?(L=n[mc>>2]|0,n[o+364+(L<<3)+4>>2]|0&&(po=y(Zr(o+364+(L<<3)|0,jo)),po>=y(0))?Te=y(ri(y(0),y(po-y(cr-l)))):Te=y(0)):Te=l,Mt=Hr>>>0>>0,Mt){Ve=n[Go>>2]|0,oe=Hr,L=0;do q=n[Ve+(oe<<2)>>2]|0,n[q+24>>2]|0||(L=((n[(Ll(q,Mr)|0)+4>>2]|0)==3&1)+L|0,L=L+((n[(Ml(q,Mr)|0)+4>>2]|0)==3&1)|0),oe=oe+1|0;while((oe|0)!=(fr|0));L?(Ze=y(0),u=y(0)):ln=101}else ln=101;e:do if((ln|0)==101)switch(ln=0,zh|0){case 1:{L=0,Ze=y(Te*y(.5)),u=y(0);break e}case 2:{L=0,Ze=Te,u=y(0);break e}case 3:{if(m>>>0<=1){L=0,Ze=y(0),u=y(0);break e}u=y((m+-1|0)>>>0),L=0,Ze=y(0),u=y(y(ri(Te,y(0)))/u);break e}case 5:{u=y(Te/y((m+1|0)>>>0)),L=0,Ze=u;break e}case 4:{u=y(Te/y(m>>>0)),L=0,Ze=y(u*y(.5));break e}default:{L=0,Ze=y(0),u=y(0);break e}}while(!1);if(l=y(Xh+Ze),Mt){nt=y(Te/y(L|0)),oe=n[Go>>2]|0,q=Hr,Te=y(0);do{L=n[oe+(q<<2)>>2]|0;e:do if((n[L+36>>2]|0)!=1){switch(n[L+24>>2]|0){case 1:{if(Ea(L,Mr)|0){if(!R)break e;zt=y(ZA(L,Mr,cr)),zt=y(zt+y(vr(o,Mr))),zt=y(zt+y(K(L,Mr,Nr))),h[L+400+(n[Lf>>2]<<2)>>2]=zt;break e}break}case 0:if(vi=(n[(Ll(L,Mr)|0)+4>>2]|0)==3,zt=y(nt+l),l=vi?zt:l,R&&(vi=L+400+(n[Lf>>2]<<2)|0,h[vi>>2]=y(l+y(h[vi>>2]))),vi=(n[(Ml(L,Mr)|0)+4>>2]|0)==3,zt=y(nt+l),l=vi?zt:l,ol){zt=y(u+y(En(L,Mr,Nr))),Te=Yn,l=y(l+y(zt+y(h[L+504>>2])));break e}else{l=y(l+y(u+y($A(L,Mr,Nr)))),Te=y(ri(Te,y($A(L,Ar,Nr))));break e}default:}R&&(zt=y(Ze+y(vr(o,Mr))),vi=L+400+(n[Lf>>2]<<2)|0,h[vi>>2]=y(zt+y(h[vi>>2])))}while(!1);q=q+1|0}while((q|0)!=(fr|0))}else Te=y(0);if(u=y(Zh+l),Yh?Ze=y(y(Wn(o,Ar,y(ho+Te),ku,B))-ho):Ze=Yn,nt=y(y(Wn(o,Ar,y(ho+(Kh?Yn:Te)),ku,B))-ho),Mt&R){q=Hr;do{oe=n[(n[Go>>2]|0)+(q<<2)>>2]|0;do if((n[oe+36>>2]|0)!=1){if((n[oe+24>>2]|0)==1){if(Ea(oe,Ar)|0){if(zt=y(ZA(oe,Ar,Yn)),zt=y(zt+y(vr(o,Ar))),zt=y(zt+y(K(oe,Ar,Nr))),L=n[Of>>2]|0,h[oe+400+(L<<2)>>2]=zt,!(Ut(zt)|0))break}else L=n[Of>>2]|0;zt=y(vr(o,Ar)),h[oe+400+(L<<2)>>2]=y(zt+y(K(oe,Ar,Nr)));break}L=as(o,oe)|0;do if((L|0)==4){if((n[(Ll(oe,Ar)|0)+4>>2]|0)==3){ln=139;break}if((n[(Ml(oe,Ar)|0)+4>>2]|0)==3){ln=139;break}if(uo(oe,Ar,Yn)|0){l=Le;break}yp=n[oe+908+(n[mc>>2]<<2)>>2]|0,n[Ao>>2]=yp,l=y(h[oe+396>>2]),vi=Ut(l)|0,Te=(n[S>>2]=yp,y(h[S>>2])),vi?l=nt:(Tr=y(En(oe,Ar,Nr)),zt=y(Te/l),l=y(l*Te),l=y(Tr+(fi?zt:l))),h[ql>>2]=l,h[Ao>>2]=y(y(En(oe,Mr,Nr))+Te),n[wa>>2]=1,n[Ec>>2]=1,Eu(oe,Mr,cr,Nr,wa,Ao),Eu(oe,Ar,Yn,Nr,Ec,ql),l=y(h[Ao>>2]),Tr=y(h[ql>>2]),zt=fi?l:Tr,l=fi?Tr:l,vi=((Ut(zt)|0)^1)&1,Ol(oe,zt,l,js,vi,((Ut(l)|0)^1)&1,Nr,Ho,1,3493,M)|0,l=Le}else ln=139;while(!1);e:do if((ln|0)==139){ln=0,l=y(Ze-y($A(oe,Ar,Nr)));do if((n[(Ll(oe,Ar)|0)+4>>2]|0)==3){if((n[(Ml(oe,Ar)|0)+4>>2]|0)!=3)break;l=y(Le+y(ri(y(0),y(l*y(.5)))));break e}while(!1);if((n[(Ml(oe,Ar)|0)+4>>2]|0)==3){l=Le;break}if((n[(Ll(oe,Ar)|0)+4>>2]|0)==3){l=y(Le+y(ri(y(0),l)));break}switch(L|0){case 1:{l=Le;break e}case 2:{l=y(Le+y(l*y(.5)));break e}default:{l=y(Le+l);break e}}}while(!1);zt=y(Hs+l),vi=oe+400+(n[Of>>2]<<2)|0,h[vi>>2]=y(zt+y(h[vi>>2]))}while(!1);q=q+1|0}while((q|0)!=(fr|0))}if(Hs=y(Hs+nt),bu=y(ri(bu,u)),m=_o+1|0,fr>>>0>=go>>>0)break;l=cr,Hr=fr,_o=m}do if(R){if(L=m>>>0>1,!L&&!(DL(o)|0))break;if(!(Ut(Yn)|0)){l=y(Yn-Hs);e:do switch(n[o+12>>2]|0){case 3:{Le=y(Le+l),He=y(0);break}case 2:{Le=y(Le+y(l*y(.5))),He=y(0);break}case 4:{Yn>Hs?He=y(l/y(m>>>0)):He=y(0);break}case 7:if(Yn>Hs){Le=y(Le+y(l/y(m<<1>>>0))),He=y(l/y(m>>>0)),He=L?He:y(0);break e}else{Le=y(Le+y(l*y(.5))),He=y(0);break e}case 6:{He=y(l/y(_o>>>0)),He=Yn>Hs&L?He:y(0);break}default:He=y(0)}while(!1);if(m|0)for(Mt=1040+(Ar<<2)|0,Gr=976+(Ar<<2)|0,Ve=0,q=0;;){e:do if(q>>>0>>0)for(Te=y(0),nt=y(0),l=y(0),oe=q;;){L=n[(n[Go>>2]|0)+(oe<<2)>>2]|0;do if((n[L+36>>2]|0)!=1&&!(n[L+24>>2]|0)){if((n[L+940>>2]|0)!=(Ve|0))break e;if(bL(L,Ar)|0&&(zt=y(h[L+908+(n[Gr>>2]<<2)>>2]),l=y(ri(l,y(zt+y(En(L,Ar,Nr)))))),(as(o,L)|0)!=5)break;po=y(qd(L)),po=y(po+y(K(L,0,Nr))),zt=y(h[L+912>>2]),zt=y(y(zt+y(En(L,0,Nr)))-po),po=y(ri(nt,po)),zt=y(ri(Te,zt)),Te=zt,nt=po,l=y(ri(l,y(po+zt)))}while(!1);if(L=oe+1|0,L>>>0>>0)oe=L;else{oe=L;break}}else nt=y(0),l=y(0),oe=q;while(!1);if(ft=y(He+l),u=Le,Le=y(Le+ft),q>>>0>>0){Ze=y(u+nt),L=q;do{q=n[(n[Go>>2]|0)+(L<<2)>>2]|0;e:do if((n[q+36>>2]|0)!=1&&!(n[q+24>>2]|0))switch(as(o,q)|0){case 1:{zt=y(u+y(K(q,Ar,Nr))),h[q+400+(n[Mt>>2]<<2)>>2]=zt;break e}case 3:{zt=y(y(Le-y(re(q,Ar,Nr)))-y(h[q+908+(n[Gr>>2]<<2)>>2])),h[q+400+(n[Mt>>2]<<2)>>2]=zt;break e}case 2:{zt=y(u+y(y(ft-y(h[q+908+(n[Gr>>2]<<2)>>2]))*y(.5))),h[q+400+(n[Mt>>2]<<2)>>2]=zt;break e}case 4:{if(zt=y(u+y(K(q,Ar,Nr))),h[q+400+(n[Mt>>2]<<2)>>2]=zt,uo(q,Ar,Yn)|0||(fi?(Te=y(h[q+908>>2]),l=y(Te+y(En(q,Mr,Nr))),nt=ft):(nt=y(h[q+912>>2]),nt=y(nt+y(En(q,Ar,Nr))),l=ft,Te=y(h[q+908>>2])),yn(l,Te)|0&&yn(nt,y(h[q+912>>2]))|0))break e;Ol(q,l,nt,js,1,1,Nr,Ho,1,3501,M)|0;break e}case 5:{h[q+404>>2]=y(y(Ze-y(qd(q)))+y(ZA(q,0,Yn)));break e}default:break e}while(!1);L=L+1|0}while((L|0)!=(oe|0))}if(Ve=Ve+1|0,(Ve|0)==(m|0))break;q=oe}}}while(!1);if(h[o+908>>2]=y(Wn(o,2,Pu,B,B)),h[o+912>>2]=y(Wn(o,0,Ap,k,B)),Ic|0&&(pp=n[o+32>>2]|0,hp=(Ic|0)==2,!(hp&(pp|0)!=2))?hp&(pp|0)==2&&(l=y(xu+cr),l=y(ri(y(fg(l,y(Wd(o,Mr,bu,jo)))),xu)),ln=198):(l=y(Wn(o,Mr,bu,jo,B)),ln=198),(ln|0)==198&&(h[o+908+(n[976+(Mr<<2)>>2]<<2)>>2]=l),Cc|0&&(gp=n[o+32>>2]|0,mp=(Cc|0)==2,!(mp&(gp|0)!=2))?mp&(gp|0)==2&&(l=y(ho+Yn),l=y(ri(y(fg(l,y(Wd(o,Ar,y(ho+Hs),ku)))),ho)),ln=204):(l=y(Wn(o,Ar,y(ho+Hs),ku,B)),ln=204),(ln|0)==204&&(h[o+908+(n[976+(Ar<<2)>>2]<<2)>>2]=l),R){if((n[dp>>2]|0)==2){q=976+(Ar<<2)|0,oe=1040+(Ar<<2)|0,L=0;do Ve=Bs(o,L)|0,n[Ve+24>>2]|0||(yp=n[q>>2]|0,zt=y(h[o+908+(yp<<2)>>2]),vi=Ve+400+(n[oe>>2]<<2)|0,zt=y(zt-y(h[vi>>2])),h[vi>>2]=y(zt-y(h[Ve+908+(yp<<2)>>2]))),L=L+1|0;while((L|0)!=(go|0))}if(A|0){L=fi?Ic:g;do PL(o,A,Nr,L,Ho,js,M),A=n[A+960>>2]|0;while(A|0)}if(L=(Mr|2|0)==3,q=(Ar|2|0)==3,L|q){A=0;do oe=n[(n[Go>>2]|0)+(A<<2)>>2]|0,(n[oe+36>>2]|0)!=1&&(L&&z1(o,oe,Mr),q&&z1(o,oe,Ar)),A=A+1|0;while((A|0)!=(go|0))}}}while(!1);I=wc}function Sh(o,l){o=o|0,l=y(l);var u=0;Ka(o,l>=y(0),3147),u=l==y(0),h[o+4>>2]=u?y(0):l}function JA(o,l,u,A){o=o|0,l=y(l),u=y(u),A=A|0;var g=$e,m=$e,B=0,k=0,R=0;n[2278]=(n[2278]|0)+1,bf(o),uo(o,2,l)|0?(g=y(Zr(n[o+992>>2]|0,l)),R=1,g=y(g+y(En(o,2,l)))):(g=y(Zr(o+380|0,l)),g>=y(0)?R=2:(R=((Ut(l)|0)^1)&1,g=l)),uo(o,0,u)|0?(m=y(Zr(n[o+996>>2]|0,u)),k=1,m=y(m+y(En(o,0,l)))):(m=y(Zr(o+388|0,u)),m>=y(0)?k=2:(k=((Ut(u)|0)^1)&1,m=u)),B=o+976|0,Ol(o,g,m,A,R,k,l,u,1,3189,n[B>>2]|0)|0&&(Dh(o,n[o+496>>2]|0,l,u,l),KA(o,y(h[(n[B>>2]|0)+4>>2]),y(0),y(0)),s[11696]|0)&&Hd(o,7)}function bf(o){o=o|0;var l=0,u=0,A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0;k=I,I=I+32|0,B=k+24|0,m=k+16|0,A=k+8|0,g=k,u=0;do l=o+380+(u<<3)|0,n[o+380+(u<<3)+4>>2]|0&&(R=l,M=n[R+4>>2]|0,L=A,n[L>>2]=n[R>>2],n[L+4>>2]=M,L=o+364+(u<<3)|0,M=n[L+4>>2]|0,R=g,n[R>>2]=n[L>>2],n[R+4>>2]=M,n[m>>2]=n[A>>2],n[m+4>>2]=n[A+4>>2],n[B>>2]=n[g>>2],n[B+4>>2]=n[g+4>>2],vf(m,B)|0)||(l=o+348+(u<<3)|0),n[o+992+(u<<2)>>2]=l,u=u+1|0;while((u|0)!=2);I=k}function uo(o,l,u){o=o|0,l=l|0,u=y(u);var A=0;switch(o=n[o+992+(n[976+(l<<2)>>2]<<2)>>2]|0,n[o+4>>2]|0){case 0:case 3:{o=0;break}case 1:{y(h[o>>2])>2])>2]|0){case 2:{l=y(y(y(h[o>>2])*l)/y(100));break}case 1:{l=y(h[o>>2]);break}default:l=y(ae)}return y(l)}function Dh(o,l,u,A,g){o=o|0,l=l|0,u=y(u),A=y(A),g=y(g);var m=0,B=$e;l=n[o+944>>2]|0?l:1,m=gr(n[o+4>>2]|0,l)|0,l=ky(m,l)|0,u=y(uP(o,m,u)),A=y(uP(o,l,A)),B=y(u+y(K(o,m,g))),h[o+400+(n[1040+(m<<2)>>2]<<2)>>2]=B,u=y(u+y(re(o,m,g))),h[o+400+(n[1e3+(m<<2)>>2]<<2)>>2]=u,u=y(A+y(K(o,l,g))),h[o+400+(n[1040+(l<<2)>>2]<<2)>>2]=u,g=y(A+y(re(o,l,g))),h[o+400+(n[1e3+(l<<2)>>2]<<2)>>2]=g}function KA(o,l,u,A){o=o|0,l=y(l),u=y(u),A=y(A);var g=0,m=0,B=$e,k=$e,R=0,M=0,L=$e,q=0,oe=$e,Ve=$e,Le=$e,Te=$e;if(l!=y(0)&&(g=o+400|0,Te=y(h[g>>2]),m=o+404|0,Le=y(h[m>>2]),q=o+416|0,Ve=y(h[q>>2]),M=o+420|0,B=y(h[M>>2]),oe=y(Te+u),L=y(Le+A),A=y(oe+Ve),k=y(L+B),R=(n[o+988>>2]|0)==1,h[g>>2]=y(os(Te,l,0,R)),h[m>>2]=y(os(Le,l,0,R)),u=y(JM(y(Ve*l),y(1))),yn(u,y(0))|0?m=0:m=(yn(u,y(1))|0)^1,u=y(JM(y(B*l),y(1))),yn(u,y(0))|0?g=0:g=(yn(u,y(1))|0)^1,Te=y(os(A,l,R&m,R&(m^1))),h[q>>2]=y(Te-y(os(oe,l,0,R))),Te=y(os(k,l,R&g,R&(g^1))),h[M>>2]=y(Te-y(os(L,l,0,R))),m=(n[o+952>>2]|0)-(n[o+948>>2]|0)>>2,m|0)){g=0;do KA(Bs(o,g)|0,l,oe,L),g=g+1|0;while((g|0)!=(m|0))}}function Py(o,l,u,A,g){switch(o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,u|0){case 5:case 0:{o=_X(n[489]|0,A,g)|0;break}default:o=hHe(A,g)|0}return o|0}function Gd(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0;g=I,I=I+16|0,m=g,n[m>>2]=A,bh(o,0,l,u,m),I=g}function bh(o,l,u,A,g){if(o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,o=o|0?o:956,aZ[n[o+8>>2]&1](o,l,u,A,g)|0,(u|0)==5)Nt();else return}function dc(o,l,u){o=o|0,l=l|0,u=u|0,s[o+l>>0]=u&1}function xy(o,l){o=o|0,l=l|0;var u=0,A=0;n[o>>2]=0,n[o+4>>2]=0,n[o+8>>2]=0,u=l+4|0,A=(n[u>>2]|0)-(n[l>>2]|0)>>2,A|0&&(Ph(o,A),kt(o,n[l>>2]|0,n[u>>2]|0,A))}function Ph(o,l){o=o|0,l=l|0;var u=0;if((N(o)|0)>>>0>>0&&an(o),l>>>0>1073741823)Nt();else{u=Kt(l<<2)|0,n[o+4>>2]=u,n[o>>2]=u,n[o+8>>2]=u+(l<<2);return}}function kt(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,A=o+4|0,o=u-l|0,(o|0)>0&&(Rr(n[A>>2]|0,l|0,o|0)|0,n[A>>2]=(n[A>>2]|0)+(o>>>2<<2))}function N(o){return o=o|0,1073741823}function K(o,l,u){return o=o|0,l=l|0,u=y(u),de(l)|0&&n[o+96>>2]|0?o=o+92|0:o=Rn(o+60|0,n[1040+(l<<2)>>2]|0,992)|0,y(Je(o,u))}function re(o,l,u){return o=o|0,l=l|0,u=y(u),de(l)|0&&n[o+104>>2]|0?o=o+100|0:o=Rn(o+60|0,n[1e3+(l<<2)>>2]|0,992)|0,y(Je(o,u))}function de(o){return o=o|0,(o|1|0)==3|0}function Je(o,l){return o=o|0,l=y(l),(n[o+4>>2]|0)==3?l=y(0):l=y(Zr(o,l)),y(l)}function pt(o,l){return o=o|0,l=l|0,o=n[o>>2]|0,(o|0?o:(l|0)>1?l:1)|0}function gr(o,l){o=o|0,l=l|0;var u=0;e:do if((l|0)==2){switch(o|0){case 2:{o=3;break e}case 3:break;default:{u=4;break e}}o=2}else u=4;while(!1);return o|0}function vr(o,l){o=o|0,l=l|0;var u=$e;return de(l)|0&&n[o+312>>2]|0&&(u=y(h[o+308>>2]),u>=y(0))||(u=y(ri(y(h[(Rn(o+276|0,n[1040+(l<<2)>>2]|0,992)|0)>>2]),y(0)))),y(u)}function _n(o,l){o=o|0,l=l|0;var u=$e;return de(l)|0&&n[o+320>>2]|0&&(u=y(h[o+316>>2]),u>=y(0))||(u=y(ri(y(h[(Rn(o+276|0,n[1e3+(l<<2)>>2]|0,992)|0)>>2]),y(0)))),y(u)}function yi(o,l,u){o=o|0,l=l|0,u=y(u);var A=$e;return de(l)|0&&n[o+240>>2]|0&&(A=y(Zr(o+236|0,u)),A>=y(0))||(A=y(ri(y(Zr(Rn(o+204|0,n[1040+(l<<2)>>2]|0,992)|0,u)),y(0)))),y(A)}function vs(o,l,u){o=o|0,l=l|0,u=y(u);var A=$e;return de(l)|0&&n[o+248>>2]|0&&(A=y(Zr(o+244|0,u)),A>=y(0))||(A=y(ri(y(Zr(Rn(o+204|0,n[1e3+(l<<2)>>2]|0,992)|0,u)),y(0)))),y(A)}function zA(o,l,u,A,g,m,B){o=o|0,l=y(l),u=y(u),A=A|0,g=g|0,m=y(m),B=y(B);var k=$e,R=$e,M=$e,L=$e,q=$e,oe=$e,Ve=0,Le=0,Te=0;Te=I,I=I+16|0,Ve=Te,Le=o+964|0,Bi(o,(n[Le>>2]|0)!=0,3519),k=y(tl(o,2,l)),R=y(tl(o,0,l)),M=y(En(o,2,l)),L=y(En(o,0,l)),Ut(l)|0?q=l:q=y(ri(y(0),y(y(l-M)-k))),Ut(u)|0?oe=u:oe=y(ri(y(0),y(y(u-L)-R))),(A|0)==1&(g|0)==1?(h[o+908>>2]=y(Wn(o,2,y(l-M),m,m)),l=y(Wn(o,0,y(u-L),B,m))):(lZ[n[Le>>2]&1](Ve,o,q,A,oe,g),q=y(k+y(h[Ve>>2])),oe=y(l-M),h[o+908>>2]=y(Wn(o,2,(A|2|0)==2?q:oe,m,m)),oe=y(R+y(h[Ve+4>>2])),l=y(u-L),l=y(Wn(o,0,(g|2|0)==2?oe:l,B,m))),h[o+912>>2]=l,I=Te}function lP(o,l,u,A,g,m,B){o=o|0,l=y(l),u=y(u),A=A|0,g=g|0,m=y(m),B=y(B);var k=$e,R=$e,M=$e,L=$e;M=y(tl(o,2,m)),k=y(tl(o,0,m)),L=y(En(o,2,m)),R=y(En(o,0,m)),l=y(l-L),h[o+908>>2]=y(Wn(o,2,(A|2|0)==2?M:l,m,m)),u=y(u-R),h[o+912>>2]=y(Wn(o,0,(g|2|0)==2?k:u,B,m))}function V1(o,l,u,A,g,m,B){o=o|0,l=y(l),u=y(u),A=A|0,g=g|0,m=y(m),B=y(B);var k=0,R=$e,M=$e;return k=(A|0)==2,!(l<=y(0)&k)&&!(u<=y(0)&(g|0)==2)&&!((A|0)==1&(g|0)==1)?o=0:(R=y(En(o,0,m)),M=y(En(o,2,m)),k=l>2]=y(Wn(o,2,k?y(0):l,m,m)),l=y(u-R),k=u>2]=y(Wn(o,0,k?y(0):l,B,m)),o=1),o|0}function ky(o,l){return o=o|0,l=l|0,Yd(o)|0?o=gr(2,l)|0:o=0,o|0}function xh(o,l,u){return o=o|0,l=l|0,u=y(u),u=y(yi(o,l,u)),y(u+y(vr(o,l)))}function J1(o,l,u){return o=o|0,l=l|0,u=y(u),u=y(vs(o,l,u)),y(u+y(_n(o,l)))}function tl(o,l,u){o=o|0,l=l|0,u=y(u);var A=$e;return A=y(xh(o,l,u)),y(A+y(J1(o,l,u)))}function K1(o){return o=o|0,n[o+24>>2]|0?o=0:y(XA(o))!=y(0)?o=1:o=y(kh(o))!=y(0),o|0}function XA(o){o=o|0;var l=$e;if(n[o+944>>2]|0){if(l=y(h[o+44>>2]),Ut(l)|0)return l=y(h[o+40>>2]),o=l>y(0)&((Ut(l)|0)^1),y(o?l:y(0))}else l=y(0);return y(l)}function kh(o){o=o|0;var l=$e,u=0,A=$e;do if(n[o+944>>2]|0){if(l=y(h[o+48>>2]),Ut(l)|0){if(u=s[(n[o+976>>2]|0)+2>>0]|0,!(u<<24>>24)&&(A=y(h[o+40>>2]),A>24?y(1):y(0)}}else l=y(0);while(!1);return y(l)}function Qy(o){o=o|0;var l=0,u=0;if(nE(o+400|0,0,540)|0,s[o+985>>0]=1,ee(o),u=Mi(o)|0,u|0){l=o+948|0,o=0;do Qy(n[(n[l>>2]|0)+(o<<2)>>2]|0),o=o+1|0;while((o|0)!=(u|0))}}function cP(o,l,u,A,g,m,B,k,R,M){o=o|0,l=l|0,u=y(u),A=A|0,g=y(g),m=y(m),B=y(B),k=k|0,R=R|0,M=M|0;var L=0,q=$e,oe=0,Ve=0,Le=$e,Te=$e,nt=0,Ze=$e,ft=0,He=$e,Ye=0,Mt=0,Gr=0,fr=0,$t=0,Tr=0,Hr=0,cr=0,jn=0,Mo=0;jn=I,I=I+16|0,Gr=jn+12|0,fr=jn+8|0,$t=jn+4|0,Tr=jn,cr=gr(n[o+4>>2]|0,R)|0,Ye=de(cr)|0,q=y(Zr(xL(l)|0,Ye?m:B)),Mt=uo(l,2,m)|0,Hr=uo(l,0,B)|0;do if(!(Ut(q)|0)&&!(Ut(Ye?u:g)|0)){if(L=l+504|0,!(Ut(y(h[L>>2]))|0)&&(!(X1(n[l+976>>2]|0,0)|0)||(n[l+500>>2]|0)==(n[2278]|0)))break;h[L>>2]=y(ri(q,y(tl(l,cr,m))))}else oe=7;while(!1);do if((oe|0)==7){if(ft=Ye^1,!(ft|Mt^1)){B=y(Zr(n[l+992>>2]|0,m)),h[l+504>>2]=y(ri(B,y(tl(l,2,m))));break}if(!(Ye|Hr^1)){B=y(Zr(n[l+996>>2]|0,B)),h[l+504>>2]=y(ri(B,y(tl(l,0,m))));break}h[Gr>>2]=y(ae),h[fr>>2]=y(ae),n[$t>>2]=0,n[Tr>>2]=0,Ze=y(En(l,2,m)),He=y(En(l,0,m)),Mt?(Le=y(Ze+y(Zr(n[l+992>>2]|0,m))),h[Gr>>2]=Le,n[$t>>2]=1,Ve=1):(Ve=0,Le=y(ae)),Hr?(q=y(He+y(Zr(n[l+996>>2]|0,B))),h[fr>>2]=q,n[Tr>>2]=1,L=1):(L=0,q=y(ae)),oe=n[o+32>>2]|0,Ye&(oe|0)==2?oe=2:Ut(Le)|0&&!(Ut(u)|0)&&(h[Gr>>2]=u,n[$t>>2]=2,Ve=2,Le=u),!((oe|0)==2&ft)&&Ut(q)|0&&!(Ut(g)|0)&&(h[fr>>2]=g,n[Tr>>2]=2,L=2,q=g),Te=y(h[l+396>>2]),nt=Ut(Te)|0;do if(nt)oe=Ve;else{if((Ve|0)==1&ft){h[fr>>2]=y(y(Le-Ze)/Te),n[Tr>>2]=1,L=1,oe=1;break}Ye&(L|0)==1?(h[Gr>>2]=y(Te*y(q-He)),n[$t>>2]=1,L=1,oe=1):oe=Ve}while(!1);Mo=Ut(u)|0,Ve=(as(o,l)|0)!=4,!(Ye|Mt|((A|0)!=1|Mo)|(Ve|(oe|0)==1))&&(h[Gr>>2]=u,n[$t>>2]=1,!nt)&&(h[fr>>2]=y(y(u-Ze)/Te),n[Tr>>2]=1,L=1),!(Hr|ft|((k|0)!=1|(Ut(g)|0))|(Ve|(L|0)==1))&&(h[fr>>2]=g,n[Tr>>2]=1,!nt)&&(h[Gr>>2]=y(Te*y(g-He)),n[$t>>2]=1),Eu(l,2,m,m,$t,Gr),Eu(l,0,B,m,Tr,fr),u=y(h[Gr>>2]),g=y(h[fr>>2]),Ol(l,u,g,R,n[$t>>2]|0,n[Tr>>2]|0,m,B,0,3565,M)|0,B=y(h[l+908+(n[976+(cr<<2)>>2]<<2)>>2]),h[l+504>>2]=y(ri(B,y(tl(l,cr,m))))}while(!1);n[l+500>>2]=n[2278],I=jn}function Wn(o,l,u,A,g){return o=o|0,l=l|0,u=y(u),A=y(A),g=y(g),A=y(Wd(o,l,u,A)),y(ri(A,y(tl(o,l,g))))}function as(o,l){return o=o|0,l=l|0,l=l+20|0,l=n[(n[l>>2]|0?l:o+16|0)>>2]|0,(l|0)==5&&Yd(n[o+4>>2]|0)|0&&(l=1),l|0}function Ll(o,l){return o=o|0,l=l|0,de(l)|0&&n[o+96>>2]|0?l=4:l=n[1040+(l<<2)>>2]|0,o+60+(l<<3)|0}function Ml(o,l){return o=o|0,l=l|0,de(l)|0&&n[o+104>>2]|0?l=5:l=n[1e3+(l<<2)>>2]|0,o+60+(l<<3)|0}function Eu(o,l,u,A,g,m){switch(o=o|0,l=l|0,u=y(u),A=y(A),g=g|0,m=m|0,u=y(Zr(o+380+(n[976+(l<<2)>>2]<<3)|0,u)),u=y(u+y(En(o,l,A))),n[g>>2]|0){case 2:case 1:{g=Ut(u)|0,A=y(h[m>>2]),h[m>>2]=g|A>2]=2,h[m>>2]=u);break}default:}}function Ea(o,l){return o=o|0,l=l|0,o=o+132|0,de(l)|0&&n[(Rn(o,4,948)|0)+4>>2]|0?o=1:o=(n[(Rn(o,n[1040+(l<<2)>>2]|0,948)|0)+4>>2]|0)!=0,o|0}function ZA(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,g=0;return o=o+132|0,de(l)|0&&(A=Rn(o,4,948)|0,(n[A+4>>2]|0)!=0)?g=4:(A=Rn(o,n[1040+(l<<2)>>2]|0,948)|0,n[A+4>>2]|0?g=4:u=y(0)),(g|0)==4&&(u=y(Zr(A,u))),y(u)}function $A(o,l,u){o=o|0,l=l|0,u=y(u);var A=$e;return A=y(h[o+908+(n[976+(l<<2)>>2]<<2)>>2]),A=y(A+y(K(o,l,u))),y(A+y(re(o,l,u)))}function DL(o){o=o|0;var l=0,u=0,A=0;e:do if(Yd(n[o+4>>2]|0)|0)l=0;else if((n[o+16>>2]|0)!=5)if(u=Mi(o)|0,!u)l=0;else for(l=0;;){if(A=Bs(o,l)|0,!(n[A+24>>2]|0)&&(n[A+20>>2]|0)==5){l=1;break e}if(l=l+1|0,l>>>0>=u>>>0){l=0;break}}else l=1;while(!1);return l|0}function bL(o,l){o=o|0,l=l|0;var u=$e;return u=y(h[o+908+(n[976+(l<<2)>>2]<<2)>>2]),u>=y(0)&((Ut(u)|0)^1)|0}function qd(o){o=o|0;var l=$e,u=0,A=0,g=0,m=0,B=0,k=0,R=$e;if(u=n[o+968>>2]|0,u)R=y(h[o+908>>2]),l=y(h[o+912>>2]),l=y(nZ[u&0](o,R,l)),Bi(o,(Ut(l)|0)^1,3573);else{m=Mi(o)|0;do if(m|0){for(u=0,g=0;;){if(A=Bs(o,g)|0,n[A+940>>2]|0){B=8;break}if((n[A+24>>2]|0)!=1)if(k=(as(o,A)|0)==5,k){u=A;break}else u=u|0?u:A;if(g=g+1|0,g>>>0>=m>>>0){B=8;break}}if((B|0)==8&&!u)break;return l=y(qd(u)),y(l+y(h[u+404>>2]))}while(!1);l=y(h[o+912>>2])}return y(l)}function Wd(o,l,u,A){o=o|0,l=l|0,u=y(u),A=y(A);var g=$e,m=0;return Yd(l)|0?(l=1,m=3):de(l)|0?(l=0,m=3):(A=y(ae),g=y(ae)),(m|0)==3&&(g=y(Zr(o+364+(l<<3)|0,A)),A=y(Zr(o+380+(l<<3)|0,A))),m=A=y(0)&((Ut(A)|0)^1)),u=m?A:u,m=g>=y(0)&((Ut(g)|0)^1)&u>2]|0,m)|0,Le=ky(nt,m)|0,Te=de(nt)|0,q=y(En(l,2,u)),oe=y(En(l,0,u)),uo(l,2,u)|0?k=y(q+y(Zr(n[l+992>>2]|0,u))):Ea(l,2)|0&&Ry(l,2)|0?(k=y(h[o+908>>2]),R=y(vr(o,2)),R=y(k-y(R+y(_n(o,2)))),k=y(ZA(l,2,u)),k=y(Wn(l,2,y(R-y(k+y(Qh(l,2,u)))),u,u))):k=y(ae),uo(l,0,g)|0?R=y(oe+y(Zr(n[l+996>>2]|0,g))):Ea(l,0)|0&&Ry(l,0)|0?(R=y(h[o+912>>2]),ft=y(vr(o,0)),ft=y(R-y(ft+y(_n(o,0)))),R=y(ZA(l,0,g)),R=y(Wn(l,0,y(ft-y(R+y(Qh(l,0,g)))),g,u))):R=y(ae),M=Ut(k)|0,L=Ut(R)|0;do if(M^L&&(Ve=y(h[l+396>>2]),!(Ut(Ve)|0)))if(M){k=y(q+y(y(R-oe)*Ve));break}else{ft=y(oe+y(y(k-q)/Ve)),R=L?ft:R;break}while(!1);L=Ut(k)|0,M=Ut(R)|0,L|M&&(He=(L^1)&1,A=u>y(0)&((A|0)!=0&L),k=Te?k:A?u:k,Ol(l,k,R,m,Te?He:A?2:He,L&(M^1)&1,k,R,0,3623,B)|0,k=y(h[l+908>>2]),k=y(k+y(En(l,2,u))),R=y(h[l+912>>2]),R=y(R+y(En(l,0,u)))),Ol(l,k,R,m,1,1,k,R,1,3635,B)|0,Ry(l,nt)|0&&!(Ea(l,nt)|0)?(He=n[976+(nt<<2)>>2]|0,ft=y(h[o+908+(He<<2)>>2]),ft=y(ft-y(h[l+908+(He<<2)>>2])),ft=y(ft-y(_n(o,nt))),ft=y(ft-y(re(l,nt,u))),ft=y(ft-y(Qh(l,nt,Te?u:g))),h[l+400+(n[1040+(nt<<2)>>2]<<2)>>2]=ft):Ze=21;do if((Ze|0)==21){if(!(Ea(l,nt)|0)&&(n[o+8>>2]|0)==1){He=n[976+(nt<<2)>>2]|0,ft=y(h[o+908+(He<<2)>>2]),ft=y(y(ft-y(h[l+908+(He<<2)>>2]))*y(.5)),h[l+400+(n[1040+(nt<<2)>>2]<<2)>>2]=ft;break}!(Ea(l,nt)|0)&&(n[o+8>>2]|0)==2&&(He=n[976+(nt<<2)>>2]|0,ft=y(h[o+908+(He<<2)>>2]),ft=y(ft-y(h[l+908+(He<<2)>>2])),h[l+400+(n[1040+(nt<<2)>>2]<<2)>>2]=ft)}while(!1);Ry(l,Le)|0&&!(Ea(l,Le)|0)?(He=n[976+(Le<<2)>>2]|0,ft=y(h[o+908+(He<<2)>>2]),ft=y(ft-y(h[l+908+(He<<2)>>2])),ft=y(ft-y(_n(o,Le))),ft=y(ft-y(re(l,Le,u))),ft=y(ft-y(Qh(l,Le,Te?g:u))),h[l+400+(n[1040+(Le<<2)>>2]<<2)>>2]=ft):Ze=30;do if((Ze|0)==30&&!(Ea(l,Le)|0)){if((as(o,l)|0)==2){He=n[976+(Le<<2)>>2]|0,ft=y(h[o+908+(He<<2)>>2]),ft=y(y(ft-y(h[l+908+(He<<2)>>2]))*y(.5)),h[l+400+(n[1040+(Le<<2)>>2]<<2)>>2]=ft;break}He=(as(o,l)|0)==3,He^(n[o+28>>2]|0)==2&&(He=n[976+(Le<<2)>>2]|0,ft=y(h[o+908+(He<<2)>>2]),ft=y(ft-y(h[l+908+(He<<2)>>2])),h[l+400+(n[1040+(Le<<2)>>2]<<2)>>2]=ft)}while(!1)}function z1(o,l,u){o=o|0,l=l|0,u=u|0;var A=$e,g=0;g=n[976+(u<<2)>>2]|0,A=y(h[l+908+(g<<2)>>2]),A=y(y(h[o+908+(g<<2)>>2])-A),A=y(A-y(h[l+400+(n[1040+(u<<2)>>2]<<2)>>2])),h[l+400+(n[1e3+(u<<2)>>2]<<2)>>2]=A}function Yd(o){return o=o|0,(o|1|0)==1|0}function xL(o){o=o|0;var l=$e;switch(n[o+56>>2]|0){case 0:case 3:{l=y(h[o+40>>2]),l>y(0)&((Ut(l)|0)^1)?o=s[(n[o+976>>2]|0)+2>>0]|0?1056:992:o=1056;break}default:o=o+52|0}return o|0}function X1(o,l){return o=o|0,l=l|0,(s[o+l>>0]|0)!=0|0}function Ry(o,l){return o=o|0,l=l|0,o=o+132|0,de(l)|0&&n[(Rn(o,5,948)|0)+4>>2]|0?o=1:o=(n[(Rn(o,n[1e3+(l<<2)>>2]|0,948)|0)+4>>2]|0)!=0,o|0}function Qh(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,g=0;return o=o+132|0,de(l)|0&&(A=Rn(o,5,948)|0,(n[A+4>>2]|0)!=0)?g=4:(A=Rn(o,n[1e3+(l<<2)>>2]|0,948)|0,n[A+4>>2]|0?g=4:u=y(0)),(g|0)==4&&(u=y(Zr(A,u))),y(u)}function uP(o,l,u){return o=o|0,l=l|0,u=y(u),Ea(o,l)|0?u=y(ZA(o,l,u)):u=y(-y(Qh(o,l,u))),y(u)}function fP(o){return o=y(o),h[S>>2]=o,n[S>>2]|0|0}function Ty(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>1073741823)Nt();else{g=Kt(l<<2)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u<<2)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l<<2)}function AP(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(g>>2)<<2)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function Fy(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-4-l|0)>>>2)<<2)),o=n[o>>2]|0,o|0&&It(o)}function pP(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0;if(B=o+4|0,k=n[B>>2]|0,g=k-A|0,m=g>>2,o=l+(m<<2)|0,o>>>0>>0){A=k;do n[A>>2]=n[o>>2],o=o+4|0,A=(n[B>>2]|0)+4|0,n[B>>2]=A;while(o>>>0>>0)}m|0&&B2(k+(0-m<<2)|0,l|0,g|0)|0}function hP(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,R=0;return k=l+4|0,R=n[k>>2]|0,g=n[o>>2]|0,B=u,m=B-g|0,A=R+(0-(m>>2)<<2)|0,n[k>>2]=A,(m|0)>0&&Rr(A|0,g|0,m|0)|0,g=o+4|0,m=l+8|0,A=(n[g>>2]|0)-B|0,(A|0)>0&&(Rr(n[m>>2]|0,u|0,A|0)|0,n[m>>2]=(n[m>>2]|0)+(A>>>2<<2)),B=n[o>>2]|0,n[o>>2]=n[k>>2],n[k>>2]=B,B=n[g>>2]|0,n[g>>2]=n[m>>2],n[m>>2]=B,B=o+8|0,u=l+12|0,o=n[B>>2]|0,n[B>>2]=n[u>>2],n[u>>2]=o,n[l>>2]=n[k>>2],R|0}function Z1(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;if(B=n[l>>2]|0,m=n[u>>2]|0,(B|0)!=(m|0)){g=o+8|0,u=((m+-4-B|0)>>>2)+1|0,o=B,A=n[g>>2]|0;do n[A>>2]=n[o>>2],A=(n[g>>2]|0)+4|0,n[g>>2]=A,o=o+4|0;while((o|0)!=(m|0));n[l>>2]=B+(u<<2)}}function $1(){da()}function dP(){var o=0;return o=Kt(4)|0,e2(o),o|0}function e2(o){o=o|0,n[o>>2]=hc()|0}function gP(o){o=o|0,o|0&&(Vd(o),It(o))}function Vd(o){o=o|0,ot(n[o>>2]|0)}function kL(o,l,u){o=o|0,l=l|0,u=u|0,dc(n[o>>2]|0,l,u)}function Ny(o,l){o=o|0,l=y(l),Sh(n[o>>2]|0,l)}function Oy(o,l){return o=o|0,l=l|0,X1(n[o>>2]|0,l)|0}function Ly(){var o=0;return o=Kt(8)|0,Jd(o,0),o|0}function Jd(o,l){o=o|0,l=l|0,l?l=ga(n[l>>2]|0)|0:l=is()|0,n[o>>2]=l,n[o+4>>2]=0,Fn(l,o)}function My(o){o=o|0;var l=0;return l=Kt(8)|0,Jd(l,o),l|0}function Kd(o){o=o|0,o|0&&(Uy(o),It(o))}function Uy(o){o=o|0;var l=0;Ac(n[o>>2]|0),l=o+4|0,o=n[l>>2]|0,n[l>>2]=0,o|0&&(Pf(o),It(o))}function Pf(o){o=o|0,xf(o)}function xf(o){o=o|0,o=n[o>>2]|0,o|0&&qa(o|0)}function t2(o){return o=o|0,Xa(o)|0}function r2(o){o=o|0;var l=0,u=0;u=o+4|0,l=n[u>>2]|0,n[u>>2]=0,l|0&&(Pf(l),It(l)),pc(n[o>>2]|0)}function _y(o,l){o=o|0,l=l|0,pn(n[o>>2]|0,n[l>>2]|0)}function QL(o,l){o=o|0,l=l|0,Ch(n[o>>2]|0,l)}function RL(o,l,u){o=o|0,l=l|0,u=+u,vy(n[o>>2]|0,l,y(u))}function Hy(o,l,u){o=o|0,l=l|0,u=+u,Sy(n[o>>2]|0,l,y(u))}function n2(o,l){o=o|0,l=l|0,yh(n[o>>2]|0,l)}function i2(o,l){o=o|0,l=l|0,Qo(n[o>>2]|0,l)}function xr(o,l){o=o|0,l=l|0,Ih(n[o>>2]|0,l)}function fo(o,l){o=o|0,l=l|0,Iy(n[o>>2]|0,l)}function Xi(o,l){o=o|0,l=l|0,Td(n[o>>2]|0,l)}function Ms(o,l){o=o|0,l=l|0,ko(n[o>>2]|0,l)}function ep(o,l,u){o=o|0,l=l|0,u=+u,GA(n[o>>2]|0,l,y(u))}function s2(o,l,u){o=o|0,l=l|0,u=+u,W(n[o>>2]|0,l,y(u))}function Ss(o,l){o=o|0,l=l|0,qA(n[o>>2]|0,l)}function jy(o,l){o=o|0,l=l|0,wy(n[o>>2]|0,l)}function Rh(o,l){o=o|0,l=l|0,Ro(n[o>>2]|0,l)}function zd(o,l){o=o|0,l=+l,wh(n[o>>2]|0,y(l))}function Th(o,l){o=o|0,l=+l,Fl(n[o>>2]|0,y(l))}function o2(o,l){o=o|0,l=+l,By(n[o>>2]|0,y(l))}function a2(o,l){o=o|0,l=+l,Nd(n[o>>2]|0,y(l))}function l2(o,l){o=o|0,l=+l,Tl(n[o>>2]|0,y(l))}function c2(o,l){o=o|0,l=+l,Od(n[o>>2]|0,y(l))}function kf(o,l){o=o|0,l=+l,Y1(n[o>>2]|0,y(l))}function sr(o){o=o|0,Bh(n[o>>2]|0)}function Gy(o,l){o=o|0,l=+l,zi(n[o>>2]|0,y(l))}function u2(o,l){o=o|0,l=+l,Cf(n[o>>2]|0,y(l))}function gc(o){o=o|0,Za(n[o>>2]|0)}function Qf(o,l){o=o|0,l=+l,hu(n[o>>2]|0,y(l))}function Xd(o,l){o=o|0,l=+l,wf(n[o>>2]|0,y(l))}function Zd(o,l){o=o|0,l=+l,mi(n[o>>2]|0,y(l))}function f2(o,l){o=o|0,l=+l,WA(n[o>>2]|0,y(l))}function A2(o,l){o=o|0,l=+l,ma(n[o>>2]|0,y(l))}function Iu(o,l){o=o|0,l=+l,el(n[o>>2]|0,y(l))}function $d(o,l){o=o|0,l=+l,vh(n[o>>2]|0,y(l))}function p2(o,l){o=o|0,l=+l,Ud(n[o>>2]|0,y(l))}function qy(o,l){o=o|0,l=+l,YA(n[o>>2]|0,y(l))}function Cu(o,l,u){o=o|0,l=l|0,u=+u,pu(n[o>>2]|0,l,y(u))}function Wy(o,l,u){o=o|0,l=l|0,u=+u,To(n[o>>2]|0,l,y(u))}function eg(o,l,u){o=o|0,l=l|0,u=+u,If(n[o>>2]|0,l,y(u))}function tg(o){return o=o|0,Rd(n[o>>2]|0)|0}function Oo(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0;A=I,I=I+16|0,g=A,jA(g,n[l>>2]|0,u),Ds(o,g),I=A}function Ds(o,l){o=o|0,l=l|0,Ul(o,n[l+4>>2]|0,+y(h[l>>2]))}function Ul(o,l,u){o=o|0,l=l|0,u=+u,n[o>>2]=l,E[o+8>>3]=u}function Yy(o){return o=o|0,W1(n[o>>2]|0)|0}function Ia(o){return o=o|0,Eh(n[o>>2]|0)|0}function mP(o){return o=o|0,Au(n[o>>2]|0)|0}function Fh(o){return o=o|0,q1(n[o>>2]|0)|0}function h2(o){return o=o|0,Fd(n[o>>2]|0)|0}function TL(o){return o=o|0,Cy(n[o>>2]|0)|0}function yP(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0;A=I,I=I+16|0,g=A,xt(g,n[l>>2]|0,u),Ds(o,g),I=A}function EP(o){return o=o|0,Ef(n[o>>2]|0)|0}function Vy(o){return o=o|0,Rl(n[o>>2]|0)|0}function d2(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,HA(A,n[l>>2]|0),Ds(o,A),I=u}function Nh(o){return o=o|0,+ +y(ci(n[o>>2]|0))}function IP(o){return o=o|0,+ +y(qi(n[o>>2]|0))}function CP(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,ur(A,n[l>>2]|0),Ds(o,A),I=u}function rg(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,Ld(A,n[l>>2]|0),Ds(o,A),I=u}function FL(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,wt(A,n[l>>2]|0),Ds(o,A),I=u}function NL(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,$a(A,n[l>>2]|0),Ds(o,A),I=u}function wP(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,Md(A,n[l>>2]|0),Ds(o,A),I=u}function BP(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,by(A,n[l>>2]|0),Ds(o,A),I=u}function tp(o){return o=o|0,+ +y(_d(n[o>>2]|0))}function OL(o,l){return o=o|0,l=l|0,+ +y(Dy(n[o>>2]|0,l))}function LL(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0;A=I,I=I+16|0,g=A,yt(g,n[l>>2]|0,u),Ds(o,g),I=A}function wu(o,l,u){o=o|0,l=l|0,u=u|0,lr(n[o>>2]|0,n[l>>2]|0,u)}function ML(o,l){o=o|0,l=l|0,yf(n[o>>2]|0,n[l>>2]|0)}function vP(o){return o=o|0,Mi(n[o>>2]|0)|0}function UL(o){return o=o|0,o=Et(n[o>>2]|0)|0,o?o=t2(o)|0:o=0,o|0}function SP(o,l){return o=o|0,l=l|0,o=Bs(n[o>>2]|0,l)|0,o?o=t2(o)|0:o=0,o|0}function Rf(o,l){o=o|0,l=l|0;var u=0,A=0;A=Kt(4)|0,DP(A,l),u=o+4|0,l=n[u>>2]|0,n[u>>2]=A,l|0&&(Pf(l),It(l)),St(n[o>>2]|0,1)}function DP(o,l){o=o|0,l=l|0,qL(o,l)}function _L(o,l,u,A,g,m){o=o|0,l=l|0,u=y(u),A=A|0,g=y(g),m=m|0;var B=0,k=0;B=I,I=I+16|0,k=B,bP(k,Xa(l)|0,+u,A,+g,m),h[o>>2]=y(+E[k>>3]),h[o+4>>2]=y(+E[k+8>>3]),I=B}function bP(o,l,u,A,g,m){o=o|0,l=l|0,u=+u,A=A|0,g=+g,m=m|0;var B=0,k=0,R=0,M=0,L=0;B=I,I=I+32|0,L=B+8|0,M=B+20|0,R=B,k=B+16|0,E[L>>3]=u,n[M>>2]=A,E[R>>3]=g,n[k>>2]=m,Jy(o,n[l+4>>2]|0,L,M,R,k),I=B}function Jy(o,l,u,A,g,m){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,m=m|0;var B=0,k=0;B=I,I=I+16|0,k=B,Hl(k),l=Us(l)|0,PP(o,l,+E[u>>3],n[A>>2]|0,+E[g>>3],n[m>>2]|0),jl(k),I=B}function Us(o){return o=o|0,n[o>>2]|0}function PP(o,l,u,A,g,m){o=o|0,l=l|0,u=+u,A=A|0,g=+g,m=m|0;var B=0;B=Ca(g2()|0)|0,u=+rl(u),A=Ky(A)|0,g=+rl(g),HL(o,Xn(0,B|0,l|0,+u,A|0,+g,Ky(m)|0)|0)}function g2(){var o=0;return s[7608]|0||(y2(9120),o=7608,n[o>>2]=1,n[o+4>>2]=0),9120}function Ca(o){return o=o|0,n[o+8>>2]|0}function rl(o){return o=+o,+ +Tf(o)}function Ky(o){return o=o|0,ng(o)|0}function HL(o,l){o=o|0,l=l|0;var u=0,A=0,g=0;g=I,I=I+32|0,u=g,A=l,A&1?(nl(u,0),Ga(A|0,u|0)|0,m2(o,u),jL(u)):(n[o>>2]=n[l>>2],n[o+4>>2]=n[l+4>>2],n[o+8>>2]=n[l+8>>2],n[o+12>>2]=n[l+12>>2]),I=g}function nl(o,l){o=o|0,l=l|0,Bu(o,l),n[o+8>>2]=0,s[o+24>>0]=0}function m2(o,l){o=o|0,l=l|0,l=l+8|0,n[o>>2]=n[l>>2],n[o+4>>2]=n[l+4>>2],n[o+8>>2]=n[l+8>>2],n[o+12>>2]=n[l+12>>2]}function jL(o){o=o|0,s[o+24>>0]=0}function Bu(o,l){o=o|0,l=l|0,n[o>>2]=l}function ng(o){return o=o|0,o|0}function Tf(o){return o=+o,+o}function y2(o){o=o|0,Lo(o,E2()|0,4)}function E2(){return 1064}function Lo(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u,n[o+8>>2]=Gi(l|0,u+1|0)|0}function qL(o,l){o=o|0,l=l|0,l=n[l>>2]|0,n[o>>2]=l,ou(l|0)}function xP(o){o=o|0;var l=0,u=0;u=o+4|0,l=n[u>>2]|0,n[u>>2]=0,l|0&&(Pf(l),It(l)),St(n[o>>2]|0,0)}function kP(o){o=o|0,bt(n[o>>2]|0)}function zy(o){return o=o|0,tr(n[o>>2]|0)|0}function WL(o,l,u,A){o=o|0,l=+l,u=+u,A=A|0,JA(n[o>>2]|0,y(l),y(u),A)}function YL(o){return o=o|0,+ +y(du(n[o>>2]|0))}function v(o){return o=o|0,+ +y(Bf(n[o>>2]|0))}function D(o){return o=o|0,+ +y(gu(n[o>>2]|0))}function Q(o){return o=o|0,+ +y(Os(n[o>>2]|0))}function H(o){return o=o|0,+ +y(mu(n[o>>2]|0))}function Y(o){return o=o|0,+ +y(qn(n[o>>2]|0))}function ne(o,l){o=o|0,l=l|0,E[o>>3]=+y(du(n[l>>2]|0)),E[o+8>>3]=+y(Bf(n[l>>2]|0)),E[o+16>>3]=+y(gu(n[l>>2]|0)),E[o+24>>3]=+y(Os(n[l>>2]|0)),E[o+32>>3]=+y(mu(n[l>>2]|0)),E[o+40>>3]=+y(qn(n[l>>2]|0))}function ve(o,l){return o=o|0,l=l|0,+ +y(ss(n[o>>2]|0,l))}function _e(o,l){return o=o|0,l=l|0,+ +y(Pi(n[o>>2]|0,l))}function ht(o,l){return o=o|0,l=l|0,+ +y(VA(n[o>>2]|0,l))}function Wt(){return Tn()|0}function Sr(){Lr(),Zt(),Zn(),Ei(),il(),rt()}function Lr(){eUe(11713,4938,1)}function Zt(){EMe(10448)}function Zn(){eMe(10408)}function Ei(){BLe(10324)}function il(){QNe(10096)}function rt(){We(9132)}function We(o){o=o|0;var l=0,u=0,A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0,Ve=0,Le=0,Te=0,nt=0,Ze=0,ft=0,He=0,Ye=0,Mt=0,Gr=0,fr=0,$t=0,Tr=0,Hr=0,cr=0,jn=0,Mo=0,Uo=0,_o=0,ol=0,qh=0,Wh=0,mc=0,Yh=0,Of=0,Lf=0,Vh=0,Jh=0,Kh=0,ln=0,yc=0,zh=0,Du=0,Xh=0,Zh=0,Mf=0,Uf=0,bu=0,Ao=0,ql=0,wa=0,Ec=0,lp=0,cp=0,_f=0,up=0,fp=0,po=0,Hs=0,Ic=0,Yn=0,Ap=0,Ho=0,Pu=0,jo=0,xu=0,pp=0,hp=0,ku=0,ho=0,Cc=0,dp=0,gp=0,mp=0,Nr=0,fi=0,js=0,Go=0,go=0,Mr=0,Ar=0,wc=0;l=I,I=I+672|0,u=l+656|0,wc=l+648|0,Ar=l+640|0,Mr=l+632|0,go=l+624|0,Go=l+616|0,js=l+608|0,fi=l+600|0,Nr=l+592|0,mp=l+584|0,gp=l+576|0,dp=l+568|0,Cc=l+560|0,ho=l+552|0,ku=l+544|0,hp=l+536|0,pp=l+528|0,xu=l+520|0,jo=l+512|0,Pu=l+504|0,Ho=l+496|0,Ap=l+488|0,Yn=l+480|0,Ic=l+472|0,Hs=l+464|0,po=l+456|0,fp=l+448|0,up=l+440|0,_f=l+432|0,cp=l+424|0,lp=l+416|0,Ec=l+408|0,wa=l+400|0,ql=l+392|0,Ao=l+384|0,bu=l+376|0,Uf=l+368|0,Mf=l+360|0,Zh=l+352|0,Xh=l+344|0,Du=l+336|0,zh=l+328|0,yc=l+320|0,ln=l+312|0,Kh=l+304|0,Jh=l+296|0,Vh=l+288|0,Lf=l+280|0,Of=l+272|0,Yh=l+264|0,mc=l+256|0,Wh=l+248|0,qh=l+240|0,ol=l+232|0,_o=l+224|0,Uo=l+216|0,Mo=l+208|0,jn=l+200|0,cr=l+192|0,Hr=l+184|0,Tr=l+176|0,$t=l+168|0,fr=l+160|0,Gr=l+152|0,Mt=l+144|0,Ye=l+136|0,He=l+128|0,ft=l+120|0,Ze=l+112|0,nt=l+104|0,Te=l+96|0,Le=l+88|0,Ve=l+80|0,oe=l+72|0,q=l+64|0,L=l+56|0,M=l+48|0,R=l+40|0,k=l+32|0,B=l+24|0,m=l+16|0,g=l+8|0,A=l,gt(o,3646),Xt(o,3651,2)|0,Dr(o,3665,2)|0,ti(o,3682,18)|0,n[wc>>2]=19,n[wc+4>>2]=0,n[u>>2]=n[wc>>2],n[u+4>>2]=n[wc+4>>2],Qr(o,3690,u)|0,n[Ar>>2]=1,n[Ar+4>>2]=0,n[u>>2]=n[Ar>>2],n[u+4>>2]=n[Ar+4>>2],Nn(o,3696,u)|0,n[Mr>>2]=2,n[Mr+4>>2]=0,n[u>>2]=n[Mr>>2],n[u+4>>2]=n[Mr+4>>2],Hn(o,3706,u)|0,n[go>>2]=1,n[go+4>>2]=0,n[u>>2]=n[go>>2],n[u+4>>2]=n[go+4>>2],zr(o,3722,u)|0,n[Go>>2]=2,n[Go+4>>2]=0,n[u>>2]=n[Go>>2],n[u+4>>2]=n[Go+4>>2],zr(o,3734,u)|0,n[js>>2]=3,n[js+4>>2]=0,n[u>>2]=n[js>>2],n[u+4>>2]=n[js+4>>2],Hn(o,3753,u)|0,n[fi>>2]=4,n[fi+4>>2]=0,n[u>>2]=n[fi>>2],n[u+4>>2]=n[fi+4>>2],Hn(o,3769,u)|0,n[Nr>>2]=5,n[Nr+4>>2]=0,n[u>>2]=n[Nr>>2],n[u+4>>2]=n[Nr+4>>2],Hn(o,3783,u)|0,n[mp>>2]=6,n[mp+4>>2]=0,n[u>>2]=n[mp>>2],n[u+4>>2]=n[mp+4>>2],Hn(o,3796,u)|0,n[gp>>2]=7,n[gp+4>>2]=0,n[u>>2]=n[gp>>2],n[u+4>>2]=n[gp+4>>2],Hn(o,3813,u)|0,n[dp>>2]=8,n[dp+4>>2]=0,n[u>>2]=n[dp>>2],n[u+4>>2]=n[dp+4>>2],Hn(o,3825,u)|0,n[Cc>>2]=3,n[Cc+4>>2]=0,n[u>>2]=n[Cc>>2],n[u+4>>2]=n[Cc+4>>2],zr(o,3843,u)|0,n[ho>>2]=4,n[ho+4>>2]=0,n[u>>2]=n[ho>>2],n[u+4>>2]=n[ho+4>>2],zr(o,3853,u)|0,n[ku>>2]=9,n[ku+4>>2]=0,n[u>>2]=n[ku>>2],n[u+4>>2]=n[ku+4>>2],Hn(o,3870,u)|0,n[hp>>2]=10,n[hp+4>>2]=0,n[u>>2]=n[hp>>2],n[u+4>>2]=n[hp+4>>2],Hn(o,3884,u)|0,n[pp>>2]=11,n[pp+4>>2]=0,n[u>>2]=n[pp>>2],n[u+4>>2]=n[pp+4>>2],Hn(o,3896,u)|0,n[xu>>2]=1,n[xu+4>>2]=0,n[u>>2]=n[xu>>2],n[u+4>>2]=n[xu+4>>2],ui(o,3907,u)|0,n[jo>>2]=2,n[jo+4>>2]=0,n[u>>2]=n[jo>>2],n[u+4>>2]=n[jo+4>>2],ui(o,3915,u)|0,n[Pu>>2]=3,n[Pu+4>>2]=0,n[u>>2]=n[Pu>>2],n[u+4>>2]=n[Pu+4>>2],ui(o,3928,u)|0,n[Ho>>2]=4,n[Ho+4>>2]=0,n[u>>2]=n[Ho>>2],n[u+4>>2]=n[Ho+4>>2],ui(o,3948,u)|0,n[Ap>>2]=5,n[Ap+4>>2]=0,n[u>>2]=n[Ap>>2],n[u+4>>2]=n[Ap+4>>2],ui(o,3960,u)|0,n[Yn>>2]=6,n[Yn+4>>2]=0,n[u>>2]=n[Yn>>2],n[u+4>>2]=n[Yn+4>>2],ui(o,3974,u)|0,n[Ic>>2]=7,n[Ic+4>>2]=0,n[u>>2]=n[Ic>>2],n[u+4>>2]=n[Ic+4>>2],ui(o,3983,u)|0,n[Hs>>2]=20,n[Hs+4>>2]=0,n[u>>2]=n[Hs>>2],n[u+4>>2]=n[Hs+4>>2],Qr(o,3999,u)|0,n[po>>2]=8,n[po+4>>2]=0,n[u>>2]=n[po>>2],n[u+4>>2]=n[po+4>>2],ui(o,4012,u)|0,n[fp>>2]=9,n[fp+4>>2]=0,n[u>>2]=n[fp>>2],n[u+4>>2]=n[fp+4>>2],ui(o,4022,u)|0,n[up>>2]=21,n[up+4>>2]=0,n[u>>2]=n[up>>2],n[u+4>>2]=n[up+4>>2],Qr(o,4039,u)|0,n[_f>>2]=10,n[_f+4>>2]=0,n[u>>2]=n[_f>>2],n[u+4>>2]=n[_f+4>>2],ui(o,4053,u)|0,n[cp>>2]=11,n[cp+4>>2]=0,n[u>>2]=n[cp>>2],n[u+4>>2]=n[cp+4>>2],ui(o,4065,u)|0,n[lp>>2]=12,n[lp+4>>2]=0,n[u>>2]=n[lp>>2],n[u+4>>2]=n[lp+4>>2],ui(o,4084,u)|0,n[Ec>>2]=13,n[Ec+4>>2]=0,n[u>>2]=n[Ec>>2],n[u+4>>2]=n[Ec+4>>2],ui(o,4097,u)|0,n[wa>>2]=14,n[wa+4>>2]=0,n[u>>2]=n[wa>>2],n[u+4>>2]=n[wa+4>>2],ui(o,4117,u)|0,n[ql>>2]=15,n[ql+4>>2]=0,n[u>>2]=n[ql>>2],n[u+4>>2]=n[ql+4>>2],ui(o,4129,u)|0,n[Ao>>2]=16,n[Ao+4>>2]=0,n[u>>2]=n[Ao>>2],n[u+4>>2]=n[Ao+4>>2],ui(o,4148,u)|0,n[bu>>2]=17,n[bu+4>>2]=0,n[u>>2]=n[bu>>2],n[u+4>>2]=n[bu+4>>2],ui(o,4161,u)|0,n[Uf>>2]=18,n[Uf+4>>2]=0,n[u>>2]=n[Uf>>2],n[u+4>>2]=n[Uf+4>>2],ui(o,4181,u)|0,n[Mf>>2]=5,n[Mf+4>>2]=0,n[u>>2]=n[Mf>>2],n[u+4>>2]=n[Mf+4>>2],zr(o,4196,u)|0,n[Zh>>2]=6,n[Zh+4>>2]=0,n[u>>2]=n[Zh>>2],n[u+4>>2]=n[Zh+4>>2],zr(o,4206,u)|0,n[Xh>>2]=7,n[Xh+4>>2]=0,n[u>>2]=n[Xh>>2],n[u+4>>2]=n[Xh+4>>2],zr(o,4217,u)|0,n[Du>>2]=3,n[Du+4>>2]=0,n[u>>2]=n[Du>>2],n[u+4>>2]=n[Du+4>>2],vu(o,4235,u)|0,n[zh>>2]=1,n[zh+4>>2]=0,n[u>>2]=n[zh>>2],n[u+4>>2]=n[zh+4>>2],VL(o,4251,u)|0,n[yc>>2]=4,n[yc+4>>2]=0,n[u>>2]=n[yc>>2],n[u+4>>2]=n[yc+4>>2],vu(o,4263,u)|0,n[ln>>2]=5,n[ln+4>>2]=0,n[u>>2]=n[ln>>2],n[u+4>>2]=n[ln+4>>2],vu(o,4279,u)|0,n[Kh>>2]=6,n[Kh+4>>2]=0,n[u>>2]=n[Kh>>2],n[u+4>>2]=n[Kh+4>>2],vu(o,4293,u)|0,n[Jh>>2]=7,n[Jh+4>>2]=0,n[u>>2]=n[Jh>>2],n[u+4>>2]=n[Jh+4>>2],vu(o,4306,u)|0,n[Vh>>2]=8,n[Vh+4>>2]=0,n[u>>2]=n[Vh>>2],n[u+4>>2]=n[Vh+4>>2],vu(o,4323,u)|0,n[Lf>>2]=9,n[Lf+4>>2]=0,n[u>>2]=n[Lf>>2],n[u+4>>2]=n[Lf+4>>2],vu(o,4335,u)|0,n[Of>>2]=2,n[Of+4>>2]=0,n[u>>2]=n[Of>>2],n[u+4>>2]=n[Of+4>>2],VL(o,4353,u)|0,n[Yh>>2]=12,n[Yh+4>>2]=0,n[u>>2]=n[Yh>>2],n[u+4>>2]=n[Yh+4>>2],ig(o,4363,u)|0,n[mc>>2]=1,n[mc+4>>2]=0,n[u>>2]=n[mc>>2],n[u+4>>2]=n[mc+4>>2],rp(o,4376,u)|0,n[Wh>>2]=2,n[Wh+4>>2]=0,n[u>>2]=n[Wh>>2],n[u+4>>2]=n[Wh+4>>2],rp(o,4388,u)|0,n[qh>>2]=13,n[qh+4>>2]=0,n[u>>2]=n[qh>>2],n[u+4>>2]=n[qh+4>>2],ig(o,4402,u)|0,n[ol>>2]=14,n[ol+4>>2]=0,n[u>>2]=n[ol>>2],n[u+4>>2]=n[ol+4>>2],ig(o,4411,u)|0,n[_o>>2]=15,n[_o+4>>2]=0,n[u>>2]=n[_o>>2],n[u+4>>2]=n[_o+4>>2],ig(o,4421,u)|0,n[Uo>>2]=16,n[Uo+4>>2]=0,n[u>>2]=n[Uo>>2],n[u+4>>2]=n[Uo+4>>2],ig(o,4433,u)|0,n[Mo>>2]=17,n[Mo+4>>2]=0,n[u>>2]=n[Mo>>2],n[u+4>>2]=n[Mo+4>>2],ig(o,4446,u)|0,n[jn>>2]=18,n[jn+4>>2]=0,n[u>>2]=n[jn>>2],n[u+4>>2]=n[jn+4>>2],ig(o,4458,u)|0,n[cr>>2]=3,n[cr+4>>2]=0,n[u>>2]=n[cr>>2],n[u+4>>2]=n[cr+4>>2],rp(o,4471,u)|0,n[Hr>>2]=1,n[Hr+4>>2]=0,n[u>>2]=n[Hr>>2],n[u+4>>2]=n[Hr+4>>2],QP(o,4486,u)|0,n[Tr>>2]=10,n[Tr+4>>2]=0,n[u>>2]=n[Tr>>2],n[u+4>>2]=n[Tr+4>>2],vu(o,4496,u)|0,n[$t>>2]=11,n[$t+4>>2]=0,n[u>>2]=n[$t>>2],n[u+4>>2]=n[$t+4>>2],vu(o,4508,u)|0,n[fr>>2]=3,n[fr+4>>2]=0,n[u>>2]=n[fr>>2],n[u+4>>2]=n[fr+4>>2],VL(o,4519,u)|0,n[Gr>>2]=4,n[Gr+4>>2]=0,n[u>>2]=n[Gr>>2],n[u+4>>2]=n[Gr+4>>2],lPe(o,4530,u)|0,n[Mt>>2]=19,n[Mt+4>>2]=0,n[u>>2]=n[Mt>>2],n[u+4>>2]=n[Mt+4>>2],cPe(o,4542,u)|0,n[Ye>>2]=12,n[Ye+4>>2]=0,n[u>>2]=n[Ye>>2],n[u+4>>2]=n[Ye+4>>2],uPe(o,4554,u)|0,n[He>>2]=13,n[He+4>>2]=0,n[u>>2]=n[He>>2],n[u+4>>2]=n[He+4>>2],fPe(o,4568,u)|0,n[ft>>2]=2,n[ft+4>>2]=0,n[u>>2]=n[ft>>2],n[u+4>>2]=n[ft+4>>2],APe(o,4578,u)|0,n[Ze>>2]=20,n[Ze+4>>2]=0,n[u>>2]=n[Ze>>2],n[u+4>>2]=n[Ze+4>>2],pPe(o,4587,u)|0,n[nt>>2]=22,n[nt+4>>2]=0,n[u>>2]=n[nt>>2],n[u+4>>2]=n[nt+4>>2],Qr(o,4602,u)|0,n[Te>>2]=23,n[Te+4>>2]=0,n[u>>2]=n[Te>>2],n[u+4>>2]=n[Te+4>>2],Qr(o,4619,u)|0,n[Le>>2]=14,n[Le+4>>2]=0,n[u>>2]=n[Le>>2],n[u+4>>2]=n[Le+4>>2],hPe(o,4629,u)|0,n[Ve>>2]=1,n[Ve+4>>2]=0,n[u>>2]=n[Ve>>2],n[u+4>>2]=n[Ve+4>>2],dPe(o,4637,u)|0,n[oe>>2]=4,n[oe+4>>2]=0,n[u>>2]=n[oe>>2],n[u+4>>2]=n[oe+4>>2],rp(o,4653,u)|0,n[q>>2]=5,n[q+4>>2]=0,n[u>>2]=n[q>>2],n[u+4>>2]=n[q+4>>2],rp(o,4669,u)|0,n[L>>2]=6,n[L+4>>2]=0,n[u>>2]=n[L>>2],n[u+4>>2]=n[L+4>>2],rp(o,4686,u)|0,n[M>>2]=7,n[M+4>>2]=0,n[u>>2]=n[M>>2],n[u+4>>2]=n[M+4>>2],rp(o,4701,u)|0,n[R>>2]=8,n[R+4>>2]=0,n[u>>2]=n[R>>2],n[u+4>>2]=n[R+4>>2],rp(o,4719,u)|0,n[k>>2]=9,n[k+4>>2]=0,n[u>>2]=n[k>>2],n[u+4>>2]=n[k+4>>2],rp(o,4736,u)|0,n[B>>2]=21,n[B+4>>2]=0,n[u>>2]=n[B>>2],n[u+4>>2]=n[B+4>>2],gPe(o,4754,u)|0,n[m>>2]=2,n[m+4>>2]=0,n[u>>2]=n[m>>2],n[u+4>>2]=n[m+4>>2],QP(o,4772,u)|0,n[g>>2]=3,n[g+4>>2]=0,n[u>>2]=n[g>>2],n[u+4>>2]=n[g+4>>2],QP(o,4790,u)|0,n[A>>2]=4,n[A+4>>2]=0,n[u>>2]=n[A>>2],n[u+4>>2]=n[A+4>>2],QP(o,4808,u)|0,I=l}function gt(o,l){o=o|0,l=l|0;var u=0;u=wNe()|0,n[o>>2]=u,BNe(u,l),Hh(n[o>>2]|0)}function Xt(o,l,u){return o=o|0,l=l|0,u=u|0,lNe(o,Sn(l)|0,u,0),o|0}function Dr(o,l,u){return o=o|0,l=l|0,u=u|0,YFe(o,Sn(l)|0,u,0),o|0}function ti(o,l,u){return o=o|0,l=l|0,u=u|0,RFe(o,Sn(l)|0,u,0),o|0}function Qr(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],gFe(o,l,g),I=A,o|0}function Nn(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],XTe(o,l,g),I=A,o|0}function Hn(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],NTe(o,l,g),I=A,o|0}function zr(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],ETe(o,l,g),I=A,o|0}function ui(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],nTe(o,l,g),I=A,o|0}function vu(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],HRe(o,l,g),I=A,o|0}function VL(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],SRe(o,l,g),I=A,o|0}function ig(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],XQe(o,l,g),I=A,o|0}function rp(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],NQe(o,l,g),I=A,o|0}function QP(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],EQe(o,l,g),I=A,o|0}function lPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],nQe(o,l,g),I=A,o|0}function cPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],Hke(o,l,g),I=A,o|0}function uPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],Dke(o,l,g),I=A,o|0}function fPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],fke(o,l,g),I=A,o|0}function APe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],Jxe(o,l,g),I=A,o|0}function pPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],Qxe(o,l,g),I=A,o|0}function hPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],dxe(o,l,g),I=A,o|0}function dPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],XPe(o,l,g),I=A,o|0}function gPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],mPe(o,l,g),I=A,o|0}function mPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],yPe(o,u,g,1),I=A}function Sn(o){return o=o|0,o|0}function yPe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,R=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=JL()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=EPe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,IPe(m,A)|0,A),I=g}function JL(){var o=0,l=0;if(s[7616]|0||(LK(9136),dr(24,9136,U|0)|0,l=7616,n[l>>2]=1,n[l+4>>2]=0),!(_r(9136)|0)){o=9136,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));LK(9136)}return 9136}function EPe(o){return o=o|0,0}function IPe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=JL()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],OK(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(BPe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Dn(o,l,u,A,g,m){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,m=m|0;var B=0,k=0,R=0,M=0,L=0,q=0,oe=0,Ve=0;B=I,I=I+32|0,oe=B+24|0,q=B+20|0,R=B+16|0,L=B+12|0,M=B+8|0,k=B+4|0,Ve=B,n[q>>2]=l,n[R>>2]=u,n[L>>2]=A,n[M>>2]=g,n[k>>2]=m,m=o+28|0,n[Ve>>2]=n[m>>2],n[oe>>2]=n[Ve>>2],CPe(o+24|0,oe,q,L,M,R,k)|0,n[m>>2]=n[n[m>>2]>>2],I=B}function CPe(o,l,u,A,g,m,B){return o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,m=m|0,B=B|0,o=wPe(l)|0,l=Kt(24)|0,NK(l+4|0,n[u>>2]|0,n[A>>2]|0,n[g>>2]|0,n[m>>2]|0,n[B>>2]|0),n[l>>2]=n[o>>2],n[o>>2]=l,l|0}function wPe(o){return o=o|0,n[o>>2]|0}function NK(o,l,u,A,g,m){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,m=m|0,n[o>>2]=l,n[o+4>>2]=u,n[o+8>>2]=A,n[o+12>>2]=g,n[o+16>>2]=m}function yr(o,l){return o=o|0,l=l|0,l|o|0}function OK(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function BPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,g=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=vPe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,SPe(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],OK(m,A,u),n[R>>2]=(n[R>>2]|0)+12,DPe(o,k),bPe(k),I=M;return}}function vPe(o){return o=o|0,357913941}function SPe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{g=Kt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function DPe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function bPe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function LK(o){o=o|0,kPe(o)}function PPe(o){o=o|0,xPe(o+24|0)}function _r(o){return o=o|0,n[o>>2]|0}function xPe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function kPe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,3,l,QPe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function tn(){return 9228}function QPe(){return 1140}function RPe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0;return u=I,I=I+16|0,A=u+8|0,g=u,m=TPe(o)|0,o=n[m+4>>2]|0,n[g>>2]=n[m>>2],n[g+4>>2]=o,n[A>>2]=n[g>>2],n[A+4>>2]=n[g+4>>2],l=FPe(l,A)|0,I=u,l|0}function rn(o,l,u,A,g,m){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,m=m|0,n[o>>2]=l,n[o+4>>2]=u,n[o+8>>2]=A,n[o+12>>2]=g,n[o+16>>2]=m}function TPe(o){return o=o|0,(n[(JL()|0)+24>>2]|0)+(o*12|0)|0}function FPe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0;return g=I,I=I+48|0,A=g,u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),ap[u&31](A,o),A=NPe(A)|0,I=g,A|0}function NPe(o){o=o|0;var l=0,u=0,A=0,g=0;return g=I,I=I+32|0,l=g+12|0,u=g,A=KL(MK()|0)|0,A?(zL(l,A),XL(u,l),OPe(o,u),o=ZL(l)|0):o=LPe(o)|0,I=g,o|0}function MK(){var o=0;return s[7632]|0||(VPe(9184),dr(25,9184,U|0)|0,o=7632,n[o>>2]=1,n[o+4>>2]=0),9184}function KL(o){return o=o|0,n[o+36>>2]|0}function zL(o,l){o=o|0,l=l|0,n[o>>2]=l,n[o+4>>2]=o,n[o+8>>2]=0}function XL(o,l){o=o|0,l=l|0,n[o>>2]=n[l>>2],n[o+4>>2]=n[l+4>>2],n[o+8>>2]=0}function OPe(o,l){o=o|0,l=l|0,HPe(l,o,o+8|0,o+16|0,o+24|0,o+32|0,o+40|0)|0}function ZL(o){return o=o|0,n[(n[o+4>>2]|0)+8>>2]|0}function LPe(o){o=o|0;var l=0,u=0,A=0,g=0,m=0,B=0,k=0,R=0;R=I,I=I+16|0,u=R+4|0,A=R,g=_l(8)|0,m=g,B=Kt(48)|0,k=B,l=k+48|0;do n[k>>2]=n[o>>2],k=k+4|0,o=o+4|0;while((k|0)<(l|0));return l=m+4|0,n[l>>2]=B,k=Kt(8)|0,B=n[l>>2]|0,n[A>>2]=0,n[u>>2]=n[A>>2],UK(k,B,u),n[g>>2]=k,I=R,m|0}function UK(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Kt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1092,n[u+12>>2]=l,n[o+4>>2]=u}function MPe(o){o=o|0,rE(o),It(o)}function UPe(o){o=o|0,o=n[o+12>>2]|0,o|0&&It(o)}function _Pe(o){o=o|0,It(o)}function HPe(o,l,u,A,g,m,B){return o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,m=m|0,B=B|0,m=jPe(n[o>>2]|0,l,u,A,g,m,B)|0,B=o+4|0,n[(n[B>>2]|0)+8>>2]=m,n[(n[B>>2]|0)+8>>2]|0}function jPe(o,l,u,A,g,m,B){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,m=m|0,B=B|0;var k=0,R=0;return k=I,I=I+16|0,R=k,Hl(R),o=Us(o)|0,B=GPe(o,+E[l>>3],+E[u>>3],+E[A>>3],+E[g>>3],+E[m>>3],+E[B>>3])|0,jl(R),I=k,B|0}function GPe(o,l,u,A,g,m,B){o=o|0,l=+l,u=+u,A=+A,g=+g,m=+m,B=+B;var k=0;return k=Ca(qPe()|0)|0,l=+rl(l),u=+rl(u),A=+rl(A),g=+rl(g),m=+rl(m),lo(0,k|0,o|0,+l,+u,+A,+g,+m,+ +rl(B))|0}function qPe(){var o=0;return s[7624]|0||(WPe(9172),o=7624,n[o>>2]=1,n[o+4>>2]=0),9172}function WPe(o){o=o|0,Lo(o,YPe()|0,6)}function YPe(){return 1112}function VPe(o){o=o|0,Oh(o)}function JPe(o){o=o|0,_K(o+24|0),HK(o+16|0)}function _K(o){o=o|0,zPe(o)}function HK(o){o=o|0,KPe(o)}function KPe(o){o=o|0;var l=0,u=0;if(l=n[o>>2]|0,l|0)do u=l,l=n[l>>2]|0,It(u);while(l|0);n[o>>2]=0}function zPe(o){o=o|0;var l=0,u=0;if(l=n[o>>2]|0,l|0)do u=l,l=n[l>>2]|0,It(u);while(l|0);n[o>>2]=0}function Oh(o){o=o|0;var l=0;n[o+16>>2]=0,n[o+20>>2]=0,l=o+24|0,n[l>>2]=0,n[o+28>>2]=l,n[o+36>>2]=0,s[o+40>>0]=0,s[o+41>>0]=0}function XPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],ZPe(o,u,g,0),I=A}function ZPe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,R=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=$L()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=$Pe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,exe(m,A)|0,A),I=g}function $L(){var o=0,l=0;if(s[7640]|0||(GK(9232),dr(26,9232,U|0)|0,l=7640,n[l>>2]=1,n[l+4>>2]=0),!(_r(9232)|0)){o=9232,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));GK(9232)}return 9232}function $Pe(o){return o=o|0,0}function exe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=$L()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],jK(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(txe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function jK(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function txe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,g=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=rxe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,nxe(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],jK(m,A,u),n[R>>2]=(n[R>>2]|0)+12,ixe(o,k),sxe(k),I=M;return}}function rxe(o){return o=o|0,357913941}function nxe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{g=Kt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function ixe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function sxe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function GK(o){o=o|0,lxe(o)}function oxe(o){o=o|0,axe(o+24|0)}function axe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function lxe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,1,l,cxe()|0,3),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function cxe(){return 1144}function uxe(o,l,u,A,g){o=o|0,l=l|0,u=+u,A=+A,g=g|0;var m=0,B=0,k=0,R=0;m=I,I=I+16|0,B=m+8|0,k=m,R=fxe(o)|0,o=n[R+4>>2]|0,n[k>>2]=n[R>>2],n[k+4>>2]=o,n[B>>2]=n[k>>2],n[B+4>>2]=n[k+4>>2],Axe(l,B,u,A,g),I=m}function fxe(o){return o=o|0,(n[($L()|0)+24>>2]|0)+(o*12|0)|0}function Axe(o,l,u,A,g){o=o|0,l=l|0,u=+u,A=+A,g=g|0;var m=0,B=0,k=0,R=0,M=0;M=I,I=I+16|0,B=M+2|0,k=M+1|0,R=M,m=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(m=n[(n[o>>2]|0)+m>>2]|0),Ff(B,u),u=+Nf(B,u),Ff(k,A),A=+Nf(k,A),np(R,g),R=ip(R,g)|0,iZ[m&1](o,u,A,R),I=M}function Ff(o,l){o=o|0,l=+l}function Nf(o,l){return o=o|0,l=+l,+ +hxe(l)}function np(o,l){o=o|0,l=l|0}function ip(o,l){return o=o|0,l=l|0,pxe(l)|0}function pxe(o){return o=o|0,o|0}function hxe(o){return o=+o,+o}function dxe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],gxe(o,u,g,1),I=A}function gxe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,R=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=eM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=mxe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,yxe(m,A)|0,A),I=g}function eM(){var o=0,l=0;if(s[7648]|0||(WK(9268),dr(27,9268,U|0)|0,l=7648,n[l>>2]=1,n[l+4>>2]=0),!(_r(9268)|0)){o=9268,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));WK(9268)}return 9268}function mxe(o){return o=o|0,0}function yxe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=eM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],qK(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(Exe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function qK(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function Exe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,g=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=Ixe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,Cxe(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],qK(m,A,u),n[R>>2]=(n[R>>2]|0)+12,wxe(o,k),Bxe(k),I=M;return}}function Ixe(o){return o=o|0,357913941}function Cxe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{g=Kt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function wxe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function Bxe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function WK(o){o=o|0,Dxe(o)}function vxe(o){o=o|0,Sxe(o+24|0)}function Sxe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function Dxe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,4,l,bxe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function bxe(){return 1160}function Pxe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0;return u=I,I=I+16|0,A=u+8|0,g=u,m=xxe(o)|0,o=n[m+4>>2]|0,n[g>>2]=n[m>>2],n[g+4>>2]=o,n[A>>2]=n[g>>2],n[A+4>>2]=n[g+4>>2],l=kxe(l,A)|0,I=u,l|0}function xxe(o){return o=o|0,(n[(eM()|0)+24>>2]|0)+(o*12|0)|0}function kxe(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),YK(pg[u&31](o)|0)|0}function YK(o){return o=o|0,o&1|0}function Qxe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],Rxe(o,u,g,0),I=A}function Rxe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,R=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=tM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=Txe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,Fxe(m,A)|0,A),I=g}function tM(){var o=0,l=0;if(s[7656]|0||(JK(9304),dr(28,9304,U|0)|0,l=7656,n[l>>2]=1,n[l+4>>2]=0),!(_r(9304)|0)){o=9304,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));JK(9304)}return 9304}function Txe(o){return o=o|0,0}function Fxe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=tM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],VK(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(Nxe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function VK(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function Nxe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,g=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=Oxe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,Lxe(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],VK(m,A,u),n[R>>2]=(n[R>>2]|0)+12,Mxe(o,k),Uxe(k),I=M;return}}function Oxe(o){return o=o|0,357913941}function Lxe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{g=Kt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function Mxe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function Uxe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function JK(o){o=o|0,jxe(o)}function _xe(o){o=o|0,Hxe(o+24|0)}function Hxe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function jxe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,5,l,Gxe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function Gxe(){return 1164}function qxe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;A=I,I=I+16|0,g=A+8|0,m=A,B=Wxe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],Yxe(l,g,u),I=A}function Wxe(o){return o=o|0,(n[(tM()|0)+24>>2]|0)+(o*12|0)|0}function Yxe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0;m=I,I=I+16|0,g=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),Lh(g,u),u=Mh(g,u)|0,ap[A&31](o,u),Uh(g),I=m}function Lh(o,l){o=o|0,l=l|0,Vxe(o,l)}function Mh(o,l){return o=o|0,l=l|0,o|0}function Uh(o){o=o|0,Pf(o)}function Vxe(o,l){o=o|0,l=l|0,rM(o,l)}function rM(o,l){o=o|0,l=l|0,n[o>>2]=l}function Jxe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],Kxe(o,u,g,0),I=A}function Kxe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,R=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=nM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=zxe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,Xxe(m,A)|0,A),I=g}function nM(){var o=0,l=0;if(s[7664]|0||(zK(9340),dr(29,9340,U|0)|0,l=7664,n[l>>2]=1,n[l+4>>2]=0),!(_r(9340)|0)){o=9340,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));zK(9340)}return 9340}function zxe(o){return o=o|0,0}function Xxe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=nM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],KK(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(Zxe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function KK(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function Zxe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,g=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=$xe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,eke(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],KK(m,A,u),n[R>>2]=(n[R>>2]|0)+12,tke(o,k),rke(k),I=M;return}}function $xe(o){return o=o|0,357913941}function eke(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{g=Kt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function tke(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function rke(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function zK(o){o=o|0,ske(o)}function nke(o){o=o|0,ike(o+24|0)}function ike(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function ske(o){o=o|0;var l=0;l=tn()|0,rn(o,2,4,l,oke()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function oke(){return 1180}function ake(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=lke(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],u=cke(l,g,u)|0,I=A,u|0}function lke(o){return o=o|0,(n[(nM()|0)+24>>2]|0)+(o*12|0)|0}function cke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0;return m=I,I=I+16|0,g=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),sg(g,u),g=og(g,u)|0,g=RP($M[A&15](o,g)|0)|0,I=m,g|0}function sg(o,l){o=o|0,l=l|0}function og(o,l){return o=o|0,l=l|0,uke(l)|0}function RP(o){return o=o|0,o|0}function uke(o){return o=o|0,o|0}function fke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],Ake(o,u,g,0),I=A}function Ake(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,R=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=iM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=pke(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,hke(m,A)|0,A),I=g}function iM(){var o=0,l=0;if(s[7672]|0||(ZK(9376),dr(30,9376,U|0)|0,l=7672,n[l>>2]=1,n[l+4>>2]=0),!(_r(9376)|0)){o=9376,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));ZK(9376)}return 9376}function pke(o){return o=o|0,0}function hke(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=iM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],XK(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(dke(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function XK(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function dke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,g=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=gke(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,mke(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],XK(m,A,u),n[R>>2]=(n[R>>2]|0)+12,yke(o,k),Eke(k),I=M;return}}function gke(o){return o=o|0,357913941}function mke(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{g=Kt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function yke(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function Eke(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function ZK(o){o=o|0,wke(o)}function Ike(o){o=o|0,Cke(o+24|0)}function Cke(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function wke(o){o=o|0;var l=0;l=tn()|0,rn(o,2,5,l,$K()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function $K(){return 1196}function Bke(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0;return u=I,I=I+16|0,A=u+8|0,g=u,m=vke(o)|0,o=n[m+4>>2]|0,n[g>>2]=n[m>>2],n[g+4>>2]=o,n[A>>2]=n[g>>2],n[A+4>>2]=n[g+4>>2],l=Ske(l,A)|0,I=u,l|0}function vke(o){return o=o|0,(n[(iM()|0)+24>>2]|0)+(o*12|0)|0}function Ske(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),RP(pg[u&31](o)|0)|0}function Dke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],bke(o,u,g,1),I=A}function bke(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,R=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=sM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=Pke(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,xke(m,A)|0,A),I=g}function sM(){var o=0,l=0;if(s[7680]|0||(tz(9412),dr(31,9412,U|0)|0,l=7680,n[l>>2]=1,n[l+4>>2]=0),!(_r(9412)|0)){o=9412,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));tz(9412)}return 9412}function Pke(o){return o=o|0,0}function xke(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=sM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],ez(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(kke(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function ez(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function kke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,g=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=Qke(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,Rke(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],ez(m,A,u),n[R>>2]=(n[R>>2]|0)+12,Tke(o,k),Fke(k),I=M;return}}function Qke(o){return o=o|0,357913941}function Rke(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{g=Kt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function Tke(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function Fke(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function tz(o){o=o|0,Lke(o)}function Nke(o){o=o|0,Oke(o+24|0)}function Oke(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function Lke(o){o=o|0;var l=0;l=tn()|0,rn(o,2,6,l,rz()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function rz(){return 1200}function Mke(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0;return u=I,I=I+16|0,A=u+8|0,g=u,m=Uke(o)|0,o=n[m+4>>2]|0,n[g>>2]=n[m>>2],n[g+4>>2]=o,n[A>>2]=n[g>>2],n[A+4>>2]=n[g+4>>2],l=_ke(l,A)|0,I=u,l|0}function Uke(o){return o=o|0,(n[(sM()|0)+24>>2]|0)+(o*12|0)|0}function _ke(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),TP(pg[u&31](o)|0)|0}function TP(o){return o=o|0,o|0}function Hke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],jke(o,u,g,0),I=A}function jke(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,R=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=oM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=Gke(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,qke(m,A)|0,A),I=g}function oM(){var o=0,l=0;if(s[7688]|0||(iz(9448),dr(32,9448,U|0)|0,l=7688,n[l>>2]=1,n[l+4>>2]=0),!(_r(9448)|0)){o=9448,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));iz(9448)}return 9448}function Gke(o){return o=o|0,0}function qke(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=oM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],nz(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(Wke(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function nz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function Wke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,g=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=Yke(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,Vke(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],nz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,Jke(o,k),Kke(k),I=M;return}}function Yke(o){return o=o|0,357913941}function Vke(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{g=Kt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function Jke(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function Kke(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function iz(o){o=o|0,Zke(o)}function zke(o){o=o|0,Xke(o+24|0)}function Xke(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function Zke(o){o=o|0;var l=0;l=tn()|0,rn(o,2,6,l,sz()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function sz(){return 1204}function $ke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;A=I,I=I+16|0,g=A+8|0,m=A,B=eQe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],tQe(l,g,u),I=A}function eQe(o){return o=o|0,(n[(oM()|0)+24>>2]|0)+(o*12|0)|0}function tQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0;m=I,I=I+16|0,g=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),aM(g,u),g=lM(g,u)|0,ap[A&31](o,g),I=m}function aM(o,l){o=o|0,l=l|0}function lM(o,l){return o=o|0,l=l|0,rQe(l)|0}function rQe(o){return o=o|0,o|0}function nQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],iQe(o,u,g,0),I=A}function iQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,R=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=cM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=sQe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,oQe(m,A)|0,A),I=g}function cM(){var o=0,l=0;if(s[7696]|0||(az(9484),dr(33,9484,U|0)|0,l=7696,n[l>>2]=1,n[l+4>>2]=0),!(_r(9484)|0)){o=9484,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));az(9484)}return 9484}function sQe(o){return o=o|0,0}function oQe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=cM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],oz(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(aQe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function oz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function aQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,g=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=lQe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,cQe(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],oz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,uQe(o,k),fQe(k),I=M;return}}function lQe(o){return o=o|0,357913941}function cQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{g=Kt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function uQe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function fQe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function az(o){o=o|0,hQe(o)}function AQe(o){o=o|0,pQe(o+24|0)}function pQe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function hQe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,1,l,dQe()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function dQe(){return 1212}function gQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0;g=I,I=I+16|0,m=g+8|0,B=g,k=mQe(o)|0,o=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=o,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],yQe(l,m,u,A),I=g}function mQe(o){return o=o|0,(n[(cM()|0)+24>>2]|0)+(o*12|0)|0}function yQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0;k=I,I=I+16|0,m=k+1|0,B=k,g=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(g=n[(n[o>>2]|0)+g>>2]|0),aM(m,u),m=lM(m,u)|0,sg(B,A),B=og(B,A)|0,D2[g&15](o,m,B),I=k}function EQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],IQe(o,u,g,1),I=A}function IQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,R=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=uM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=CQe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,wQe(m,A)|0,A),I=g}function uM(){var o=0,l=0;if(s[7704]|0||(cz(9520),dr(34,9520,U|0)|0,l=7704,n[l>>2]=1,n[l+4>>2]=0),!(_r(9520)|0)){o=9520,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));cz(9520)}return 9520}function CQe(o){return o=o|0,0}function wQe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=uM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],lz(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(BQe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function lz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function BQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,g=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=vQe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,SQe(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],lz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,DQe(o,k),bQe(k),I=M;return}}function vQe(o){return o=o|0,357913941}function SQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{g=Kt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function DQe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function bQe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function cz(o){o=o|0,kQe(o)}function PQe(o){o=o|0,xQe(o+24|0)}function xQe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function kQe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,1,l,QQe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function QQe(){return 1224}function RQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;return g=I,I=I+16|0,m=g+8|0,B=g,k=TQe(o)|0,o=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=o,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],A=+FQe(l,m,u),I=g,+A}function TQe(o){return o=o|0,(n[(uM()|0)+24>>2]|0)+(o*12|0)|0}function FQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return m=I,I=I+16|0,g=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),np(g,u),g=ip(g,u)|0,B=+Tf(+oZ[A&7](o,g)),I=m,+B}function NQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],OQe(o,u,g,1),I=A}function OQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,R=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=fM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=LQe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,MQe(m,A)|0,A),I=g}function fM(){var o=0,l=0;if(s[7712]|0||(fz(9556),dr(35,9556,U|0)|0,l=7712,n[l>>2]=1,n[l+4>>2]=0),!(_r(9556)|0)){o=9556,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));fz(9556)}return 9556}function LQe(o){return o=o|0,0}function MQe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=fM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],uz(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(UQe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function uz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function UQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,g=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=_Qe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,HQe(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],uz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,jQe(o,k),GQe(k),I=M;return}}function _Qe(o){return o=o|0,357913941}function HQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{g=Kt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function jQe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function GQe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function fz(o){o=o|0,YQe(o)}function qQe(o){o=o|0,WQe(o+24|0)}function WQe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function YQe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,5,l,VQe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function VQe(){return 1232}function JQe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=KQe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],u=+zQe(l,g),I=A,+u}function KQe(o){return o=o|0,(n[(fM()|0)+24>>2]|0)+(o*12|0)|0}function zQe(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),+ +Tf(+sZ[u&15](o))}function XQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],ZQe(o,u,g,1),I=A}function ZQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,R=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=AM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=$Qe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,eRe(m,A)|0,A),I=g}function AM(){var o=0,l=0;if(s[7720]|0||(pz(9592),dr(36,9592,U|0)|0,l=7720,n[l>>2]=1,n[l+4>>2]=0),!(_r(9592)|0)){o=9592,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));pz(9592)}return 9592}function $Qe(o){return o=o|0,0}function eRe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=AM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],Az(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(tRe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Az(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function tRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,g=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=rRe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,nRe(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Az(m,A,u),n[R>>2]=(n[R>>2]|0)+12,iRe(o,k),sRe(k),I=M;return}}function rRe(o){return o=o|0,357913941}function nRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{g=Kt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function iRe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function sRe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function pz(o){o=o|0,lRe(o)}function oRe(o){o=o|0,aRe(o+24|0)}function aRe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function lRe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,7,l,cRe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function cRe(){return 1276}function uRe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0;return u=I,I=I+16|0,A=u+8|0,g=u,m=fRe(o)|0,o=n[m+4>>2]|0,n[g>>2]=n[m>>2],n[g+4>>2]=o,n[A>>2]=n[g>>2],n[A+4>>2]=n[g+4>>2],l=ARe(l,A)|0,I=u,l|0}function fRe(o){return o=o|0,(n[(AM()|0)+24>>2]|0)+(o*12|0)|0}function ARe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0;return g=I,I=I+16|0,A=g,u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),ap[u&31](A,o),A=hz(A)|0,I=g,A|0}function hz(o){o=o|0;var l=0,u=0,A=0,g=0;return g=I,I=I+32|0,l=g+12|0,u=g,A=KL(dz()|0)|0,A?(zL(l,A),XL(u,l),pRe(o,u),o=ZL(l)|0):o=hRe(o)|0,I=g,o|0}function dz(){var o=0;return s[7736]|0||(vRe(9640),dr(25,9640,U|0)|0,o=7736,n[o>>2]=1,n[o+4>>2]=0),9640}function pRe(o,l){o=o|0,l=l|0,yRe(l,o,o+8|0)|0}function hRe(o){o=o|0;var l=0,u=0,A=0,g=0,m=0,B=0,k=0;return u=I,I=I+16|0,g=u+4|0,B=u,A=_l(8)|0,l=A,k=Kt(16)|0,n[k>>2]=n[o>>2],n[k+4>>2]=n[o+4>>2],n[k+8>>2]=n[o+8>>2],n[k+12>>2]=n[o+12>>2],m=l+4|0,n[m>>2]=k,o=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[g>>2]=n[B>>2],pM(o,m,g),n[A>>2]=o,I=u,l|0}function pM(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Kt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1244,n[u+12>>2]=l,n[o+4>>2]=u}function dRe(o){o=o|0,rE(o),It(o)}function gRe(o){o=o|0,o=n[o+12>>2]|0,o|0&&It(o)}function mRe(o){o=o|0,It(o)}function yRe(o,l,u){return o=o|0,l=l|0,u=u|0,l=ERe(n[o>>2]|0,l,u)|0,u=o+4|0,n[(n[u>>2]|0)+8>>2]=l,n[(n[u>>2]|0)+8>>2]|0}function ERe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0;return A=I,I=I+16|0,g=A,Hl(g),o=Us(o)|0,u=IRe(o,n[l>>2]|0,+E[u>>3])|0,jl(g),I=A,u|0}function IRe(o,l,u){o=o|0,l=l|0,u=+u;var A=0;return A=Ca(CRe()|0)|0,l=Ky(l)|0,su(0,A|0,o|0,l|0,+ +rl(u))|0}function CRe(){var o=0;return s[7728]|0||(wRe(9628),o=7728,n[o>>2]=1,n[o+4>>2]=0),9628}function wRe(o){o=o|0,Lo(o,BRe()|0,2)}function BRe(){return 1264}function vRe(o){o=o|0,Oh(o)}function SRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],DRe(o,u,g,1),I=A}function DRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,R=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=hM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=bRe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,PRe(m,A)|0,A),I=g}function hM(){var o=0,l=0;if(s[7744]|0||(mz(9684),dr(37,9684,U|0)|0,l=7744,n[l>>2]=1,n[l+4>>2]=0),!(_r(9684)|0)){o=9684,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));mz(9684)}return 9684}function bRe(o){return o=o|0,0}function PRe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=hM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],gz(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(xRe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function gz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function xRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,g=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=kRe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,QRe(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],gz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,RRe(o,k),TRe(k),I=M;return}}function kRe(o){return o=o|0,357913941}function QRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{g=Kt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function RRe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function TRe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function mz(o){o=o|0,ORe(o)}function FRe(o){o=o|0,NRe(o+24|0)}function NRe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function ORe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,5,l,LRe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function LRe(){return 1280}function MRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=URe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],u=_Re(l,g,u)|0,I=A,u|0}function URe(o){return o=o|0,(n[(hM()|0)+24>>2]|0)+(o*12|0)|0}function _Re(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return B=I,I=I+32|0,g=B,m=B+16|0,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),np(m,u),m=ip(m,u)|0,D2[A&15](g,o,m),m=hz(g)|0,I=B,m|0}function HRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],jRe(o,u,g,1),I=A}function jRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,R=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=dM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=GRe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,qRe(m,A)|0,A),I=g}function dM(){var o=0,l=0;if(s[7752]|0||(Ez(9720),dr(38,9720,U|0)|0,l=7752,n[l>>2]=1,n[l+4>>2]=0),!(_r(9720)|0)){o=9720,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Ez(9720)}return 9720}function GRe(o){return o=o|0,0}function qRe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=dM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],yz(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(WRe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function yz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function WRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,g=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=YRe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,VRe(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],yz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,JRe(o,k),KRe(k),I=M;return}}function YRe(o){return o=o|0,357913941}function VRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{g=Kt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function JRe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function KRe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Ez(o){o=o|0,ZRe(o)}function zRe(o){o=o|0,XRe(o+24|0)}function XRe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function ZRe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,8,l,$Re()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function $Re(){return 1288}function eTe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0;return u=I,I=I+16|0,A=u+8|0,g=u,m=tTe(o)|0,o=n[m+4>>2]|0,n[g>>2]=n[m>>2],n[g+4>>2]=o,n[A>>2]=n[g>>2],n[A+4>>2]=n[g+4>>2],l=rTe(l,A)|0,I=u,l|0}function tTe(o){return o=o|0,(n[(dM()|0)+24>>2]|0)+(o*12|0)|0}function rTe(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),ng(pg[u&31](o)|0)|0}function nTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],iTe(o,u,g,0),I=A}function iTe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,R=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=gM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=sTe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,oTe(m,A)|0,A),I=g}function gM(){var o=0,l=0;if(s[7760]|0||(Cz(9756),dr(39,9756,U|0)|0,l=7760,n[l>>2]=1,n[l+4>>2]=0),!(_r(9756)|0)){o=9756,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Cz(9756)}return 9756}function sTe(o){return o=o|0,0}function oTe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=gM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],Iz(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(aTe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Iz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function aTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,g=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=lTe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,cTe(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Iz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,uTe(o,k),fTe(k),I=M;return}}function lTe(o){return o=o|0,357913941}function cTe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{g=Kt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function uTe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function fTe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Cz(o){o=o|0,hTe(o)}function ATe(o){o=o|0,pTe(o+24|0)}function pTe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function hTe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,8,l,dTe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function dTe(){return 1292}function gTe(o,l,u){o=o|0,l=l|0,u=+u;var A=0,g=0,m=0,B=0;A=I,I=I+16|0,g=A+8|0,m=A,B=mTe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],yTe(l,g,u),I=A}function mTe(o){return o=o|0,(n[(gM()|0)+24>>2]|0)+(o*12|0)|0}function yTe(o,l,u){o=o|0,l=l|0,u=+u;var A=0,g=0,m=0;m=I,I=I+16|0,g=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),Ff(g,u),u=+Nf(g,u),rZ[A&31](o,u),I=m}function ETe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],ITe(o,u,g,0),I=A}function ITe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,R=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=mM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=CTe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,wTe(m,A)|0,A),I=g}function mM(){var o=0,l=0;if(s[7768]|0||(Bz(9792),dr(40,9792,U|0)|0,l=7768,n[l>>2]=1,n[l+4>>2]=0),!(_r(9792)|0)){o=9792,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Bz(9792)}return 9792}function CTe(o){return o=o|0,0}function wTe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=mM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],wz(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(BTe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function wz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function BTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,g=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=vTe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,STe(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],wz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,DTe(o,k),bTe(k),I=M;return}}function vTe(o){return o=o|0,357913941}function STe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{g=Kt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function DTe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function bTe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Bz(o){o=o|0,kTe(o)}function PTe(o){o=o|0,xTe(o+24|0)}function xTe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function kTe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,1,l,QTe()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function QTe(){return 1300}function RTe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=+A;var g=0,m=0,B=0,k=0;g=I,I=I+16|0,m=g+8|0,B=g,k=TTe(o)|0,o=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=o,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],FTe(l,m,u,A),I=g}function TTe(o){return o=o|0,(n[(mM()|0)+24>>2]|0)+(o*12|0)|0}function FTe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=+A;var g=0,m=0,B=0,k=0;k=I,I=I+16|0,m=k+1|0,B=k,g=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(g=n[(n[o>>2]|0)+g>>2]|0),np(m,u),m=ip(m,u)|0,Ff(B,A),A=+Nf(B,A),uZ[g&15](o,m,A),I=k}function NTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],OTe(o,u,g,0),I=A}function OTe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,R=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=yM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=LTe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,MTe(m,A)|0,A),I=g}function yM(){var o=0,l=0;if(s[7776]|0||(Sz(9828),dr(41,9828,U|0)|0,l=7776,n[l>>2]=1,n[l+4>>2]=0),!(_r(9828)|0)){o=9828,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Sz(9828)}return 9828}function LTe(o){return o=o|0,0}function MTe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=yM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],vz(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(UTe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function vz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function UTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,g=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=_Te(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,HTe(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],vz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,jTe(o,k),GTe(k),I=M;return}}function _Te(o){return o=o|0,357913941}function HTe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{g=Kt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function jTe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function GTe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Sz(o){o=o|0,YTe(o)}function qTe(o){o=o|0,WTe(o+24|0)}function WTe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function YTe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,7,l,VTe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function VTe(){return 1312}function JTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;A=I,I=I+16|0,g=A+8|0,m=A,B=KTe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],zTe(l,g,u),I=A}function KTe(o){return o=o|0,(n[(yM()|0)+24>>2]|0)+(o*12|0)|0}function zTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0;m=I,I=I+16|0,g=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),np(g,u),g=ip(g,u)|0,ap[A&31](o,g),I=m}function XTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],ZTe(o,u,g,0),I=A}function ZTe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,R=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=EM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=$Te(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,eFe(m,A)|0,A),I=g}function EM(){var o=0,l=0;if(s[7784]|0||(bz(9864),dr(42,9864,U|0)|0,l=7784,n[l>>2]=1,n[l+4>>2]=0),!(_r(9864)|0)){o=9864,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));bz(9864)}return 9864}function $Te(o){return o=o|0,0}function eFe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=EM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],Dz(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(tFe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Dz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function tFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,g=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=rFe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,nFe(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Dz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,iFe(o,k),sFe(k),I=M;return}}function rFe(o){return o=o|0,357913941}function nFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{g=Kt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function iFe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function sFe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function bz(o){o=o|0,lFe(o)}function oFe(o){o=o|0,aFe(o+24|0)}function aFe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function lFe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,8,l,cFe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function cFe(){return 1320}function uFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;A=I,I=I+16|0,g=A+8|0,m=A,B=fFe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],AFe(l,g,u),I=A}function fFe(o){return o=o|0,(n[(EM()|0)+24>>2]|0)+(o*12|0)|0}function AFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0;m=I,I=I+16|0,g=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),pFe(g,u),g=hFe(g,u)|0,ap[A&31](o,g),I=m}function pFe(o,l){o=o|0,l=l|0}function hFe(o,l){return o=o|0,l=l|0,dFe(l)|0}function dFe(o){return o=o|0,o|0}function gFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],mFe(o,u,g,0),I=A}function mFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,R=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=IM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=yFe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,EFe(m,A)|0,A),I=g}function IM(){var o=0,l=0;if(s[7792]|0||(xz(9900),dr(43,9900,U|0)|0,l=7792,n[l>>2]=1,n[l+4>>2]=0),!(_r(9900)|0)){o=9900,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));xz(9900)}return 9900}function yFe(o){return o=o|0,0}function EFe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=IM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],Pz(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(IFe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Pz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function IFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,g=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=CFe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,wFe(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Pz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,BFe(o,k),vFe(k),I=M;return}}function CFe(o){return o=o|0,357913941}function wFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{g=Kt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function BFe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function vFe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function xz(o){o=o|0,bFe(o)}function SFe(o){o=o|0,DFe(o+24|0)}function DFe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function bFe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,22,l,PFe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function PFe(){return 1344}function xFe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0;u=I,I=I+16|0,A=u+8|0,g=u,m=kFe(o)|0,o=n[m+4>>2]|0,n[g>>2]=n[m>>2],n[g+4>>2]=o,n[A>>2]=n[g>>2],n[A+4>>2]=n[g+4>>2],QFe(l,A),I=u}function kFe(o){return o=o|0,(n[(IM()|0)+24>>2]|0)+(o*12|0)|0}function QFe(o,l){o=o|0,l=l|0;var u=0;u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),op[u&127](o)}function RFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0;m=n[o>>2]|0,g=CM()|0,o=TFe(u)|0,Dn(m,l,g,o,FFe(u,A)|0,A)}function CM(){var o=0,l=0;if(s[7800]|0||(Qz(9936),dr(44,9936,U|0)|0,l=7800,n[l>>2]=1,n[l+4>>2]=0),!(_r(9936)|0)){o=9936,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Qz(9936)}return 9936}function TFe(o){return o=o|0,o|0}function FFe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,g=k,m=k+4|0,n[g>>2]=o,R=CM()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(kz(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(NFe(B,g,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function kz(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function NFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,g=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=OFe(o)|0,A>>>0>>0)an(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,LFe(g,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=g+8|0,kz(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,MFe(o,g),UFe(g),I=k;return}}function OFe(o){return o=o|0,536870911}function LFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{g=Kt(l<<3)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l<<3)}function MFe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(g>>3)<<3)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function UFe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function Qz(o){o=o|0,jFe(o)}function _Fe(o){o=o|0,HFe(o+24|0)}function HFe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function jFe(o){o=o|0;var l=0;l=tn()|0,rn(o,1,23,l,sz()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function GFe(o,l){o=o|0,l=l|0,WFe(n[(qFe(o)|0)>>2]|0,l)}function qFe(o){return o=o|0,(n[(CM()|0)+24>>2]|0)+(o<<3)|0}function WFe(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,aM(A,l),l=lM(A,l)|0,op[o&127](l),I=u}function YFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0;m=n[o>>2]|0,g=wM()|0,o=VFe(u)|0,Dn(m,l,g,o,JFe(u,A)|0,A)}function wM(){var o=0,l=0;if(s[7808]|0||(Tz(9972),dr(45,9972,U|0)|0,l=7808,n[l>>2]=1,n[l+4>>2]=0),!(_r(9972)|0)){o=9972,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Tz(9972)}return 9972}function VFe(o){return o=o|0,o|0}function JFe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,g=k,m=k+4|0,n[g>>2]=o,R=wM()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(Rz(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(KFe(B,g,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function Rz(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function KFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,g=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=zFe(o)|0,A>>>0>>0)an(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,XFe(g,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=g+8|0,Rz(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,ZFe(o,g),$Fe(g),I=k;return}}function zFe(o){return o=o|0,536870911}function XFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{g=Kt(l<<3)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l<<3)}function ZFe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(g>>3)<<3)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function $Fe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function Tz(o){o=o|0,rNe(o)}function eNe(o){o=o|0,tNe(o+24|0)}function tNe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function rNe(o){o=o|0;var l=0;l=tn()|0,rn(o,1,9,l,nNe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function nNe(){return 1348}function iNe(o,l){return o=o|0,l=l|0,oNe(n[(sNe(o)|0)>>2]|0,l)|0}function sNe(o){return o=o|0,(n[(wM()|0)+24>>2]|0)+(o<<3)|0}function oNe(o,l){o=o|0,l=l|0;var u=0,A=0;return u=I,I=I+16|0,A=u,Fz(A,l),l=Nz(A,l)|0,l=RP(pg[o&31](l)|0)|0,I=u,l|0}function Fz(o,l){o=o|0,l=l|0}function Nz(o,l){return o=o|0,l=l|0,aNe(l)|0}function aNe(o){return o=o|0,o|0}function lNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0;m=n[o>>2]|0,g=BM()|0,o=cNe(u)|0,Dn(m,l,g,o,uNe(u,A)|0,A)}function BM(){var o=0,l=0;if(s[7816]|0||(Lz(10008),dr(46,10008,U|0)|0,l=7816,n[l>>2]=1,n[l+4>>2]=0),!(_r(10008)|0)){o=10008,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Lz(10008)}return 10008}function cNe(o){return o=o|0,o|0}function uNe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,g=k,m=k+4|0,n[g>>2]=o,R=BM()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(Oz(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(fNe(B,g,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function Oz(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function fNe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,g=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=ANe(o)|0,A>>>0>>0)an(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,pNe(g,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=g+8|0,Oz(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,hNe(o,g),dNe(g),I=k;return}}function ANe(o){return o=o|0,536870911}function pNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{g=Kt(l<<3)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l<<3)}function hNe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(g>>3)<<3)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function dNe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function Lz(o){o=o|0,yNe(o)}function gNe(o){o=o|0,mNe(o+24|0)}function mNe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function yNe(o){o=o|0;var l=0;l=tn()|0,rn(o,1,15,l,$K()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function ENe(o){return o=o|0,CNe(n[(INe(o)|0)>>2]|0)|0}function INe(o){return o=o|0,(n[(BM()|0)+24>>2]|0)+(o<<3)|0}function CNe(o){return o=o|0,RP(VP[o&7]()|0)|0}function wNe(){var o=0;return s[7832]|0||(kNe(10052),dr(25,10052,U|0)|0,o=7832,n[o>>2]=1,n[o+4>>2]=0),10052}function BNe(o,l){o=o|0,l=l|0,n[o>>2]=vNe()|0,n[o+4>>2]=SNe()|0,n[o+12>>2]=l,n[o+8>>2]=DNe()|0,n[o+32>>2]=2}function vNe(){return 11709}function SNe(){return 1188}function DNe(){return FP()|0}function bNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(_h(A,896)|0)==512?u|0&&(PNe(u),It(u)):l|0&&(Uy(l),It(l))}function _h(o,l){return o=o|0,l=l|0,l&o|0}function PNe(o){o=o|0,o=n[o+4>>2]|0,o|0&&jh(o)}function FP(){var o=0;return s[7824]|0||(n[2511]=xNe()|0,n[2512]=0,o=7824,n[o>>2]=1,n[o+4>>2]=0),10044}function xNe(){return 0}function kNe(o){o=o|0,Oh(o)}function QNe(o){o=o|0;var l=0,u=0,A=0,g=0,m=0;l=I,I=I+32|0,u=l+24|0,m=l+16|0,g=l+8|0,A=l,RNe(o,4827),TNe(o,4834,3)|0,FNe(o,3682,47)|0,n[m>>2]=9,n[m+4>>2]=0,n[u>>2]=n[m>>2],n[u+4>>2]=n[m+4>>2],NNe(o,4841,u)|0,n[g>>2]=1,n[g+4>>2]=0,n[u>>2]=n[g>>2],n[u+4>>2]=n[g+4>>2],ONe(o,4871,u)|0,n[A>>2]=10,n[A+4>>2]=0,n[u>>2]=n[A>>2],n[u+4>>2]=n[A+4>>2],LNe(o,4891,u)|0,I=l}function RNe(o,l){o=o|0,l=l|0;var u=0;u=dLe()|0,n[o>>2]=u,gLe(u,l),Hh(n[o>>2]|0)}function TNe(o,l,u){return o=o|0,l=l|0,u=u|0,$Oe(o,Sn(l)|0,u,0),o|0}function FNe(o,l,u){return o=o|0,l=l|0,u=u|0,MOe(o,Sn(l)|0,u,0),o|0}function NNe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],EOe(o,l,g),I=A,o|0}function ONe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],eOe(o,l,g),I=A,o|0}function LNe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],MNe(o,l,g),I=A,o|0}function MNe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],UNe(o,u,g,1),I=A}function UNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,R=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=vM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=_Ne(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,HNe(m,A)|0,A),I=g}function vM(){var o=0,l=0;if(s[7840]|0||(Uz(10100),dr(48,10100,U|0)|0,l=7840,n[l>>2]=1,n[l+4>>2]=0),!(_r(10100)|0)){o=10100,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Uz(10100)}return 10100}function _Ne(o){return o=o|0,0}function HNe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=vM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],Mz(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(jNe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Mz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function jNe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,g=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=GNe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,qNe(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Mz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,WNe(o,k),YNe(k),I=M;return}}function GNe(o){return o=o|0,357913941}function qNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{g=Kt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function WNe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function YNe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Uz(o){o=o|0,KNe(o)}function VNe(o){o=o|0,JNe(o+24|0)}function JNe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function KNe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,6,l,zNe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function zNe(){return 1364}function XNe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;return A=I,I=I+16|0,g=A+8|0,m=A,B=ZNe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],u=$Ne(l,g,u)|0,I=A,u|0}function ZNe(o){return o=o|0,(n[(vM()|0)+24>>2]|0)+(o*12|0)|0}function $Ne(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0;return m=I,I=I+16|0,g=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),np(g,u),g=ip(g,u)|0,g=YK($M[A&15](o,g)|0)|0,I=m,g|0}function eOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],tOe(o,u,g,0),I=A}function tOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,R=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=SM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=rOe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,nOe(m,A)|0,A),I=g}function SM(){var o=0,l=0;if(s[7848]|0||(Hz(10136),dr(49,10136,U|0)|0,l=7848,n[l>>2]=1,n[l+4>>2]=0),!(_r(10136)|0)){o=10136,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Hz(10136)}return 10136}function rOe(o){return o=o|0,0}function nOe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=SM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],_z(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(iOe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function _z(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function iOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,g=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=sOe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,oOe(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],_z(m,A,u),n[R>>2]=(n[R>>2]|0)+12,aOe(o,k),lOe(k),I=M;return}}function sOe(o){return o=o|0,357913941}function oOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{g=Kt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function aOe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function lOe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Hz(o){o=o|0,fOe(o)}function cOe(o){o=o|0,uOe(o+24|0)}function uOe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function fOe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,9,l,AOe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function AOe(){return 1372}function pOe(o,l,u){o=o|0,l=l|0,u=+u;var A=0,g=0,m=0,B=0;A=I,I=I+16|0,g=A+8|0,m=A,B=hOe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],dOe(l,g,u),I=A}function hOe(o){return o=o|0,(n[(SM()|0)+24>>2]|0)+(o*12|0)|0}function dOe(o,l,u){o=o|0,l=l|0,u=+u;var A=0,g=0,m=0,B=$e;m=I,I=I+16|0,g=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),gOe(g,u),B=y(mOe(g,u)),tZ[A&1](o,B),I=m}function gOe(o,l){o=o|0,l=+l}function mOe(o,l){return o=o|0,l=+l,y(yOe(l))}function yOe(o){return o=+o,y(o)}function EOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,g=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[g>>2]=n[m>>2],n[g+4>>2]=n[m+4>>2],IOe(o,u,g,0),I=A}function IOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0,R=0,M=0,L=0;g=I,I=I+32|0,m=g+16|0,L=g+8|0,k=g,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=DM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=COe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,wOe(m,A)|0,A),I=g}function DM(){var o=0,l=0;if(s[7856]|0||(Gz(10172),dr(50,10172,U|0)|0,l=7856,n[l>>2]=1,n[l+4>>2]=0),!(_r(10172)|0)){o=10172,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Gz(10172)}return 10172}function COe(o){return o=o|0,0}function wOe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,g=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=DM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[g>>2]=n[B>>2],n[g+4>>2]=n[B+4>>2],jz(u,g,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(BOe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function jz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function BOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,g=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=vOe(o)|0,m>>>0>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,SOe(k,oe>>>0>>1>>>0?q>>>0>>0?g:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,g=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=g,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],jz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,DOe(o,k),bOe(k),I=M;return}}function vOe(o){return o=o|0,357913941}function SOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{g=Kt(l*12|0)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l*12|0)}function DOe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((g|0)/-12|0)*12|0)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function bOe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Gz(o){o=o|0,kOe(o)}function POe(o){o=o|0,xOe(o+24|0)}function xOe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function kOe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,3,l,QOe()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function QOe(){return 1380}function ROe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0;g=I,I=I+16|0,m=g+8|0,B=g,k=TOe(o)|0,o=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=o,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],FOe(l,m,u,A),I=g}function TOe(o){return o=o|0,(n[(DM()|0)+24>>2]|0)+(o*12|0)|0}function FOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0;k=I,I=I+16|0,m=k+1|0,B=k,g=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(g=n[(n[o>>2]|0)+g>>2]|0),np(m,u),m=ip(m,u)|0,NOe(B,A),B=OOe(B,A)|0,D2[g&15](o,m,B),I=k}function NOe(o,l){o=o|0,l=l|0}function OOe(o,l){return o=o|0,l=l|0,LOe(l)|0}function LOe(o){return o=o|0,(o|0)!=0|0}function MOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0;m=n[o>>2]|0,g=bM()|0,o=UOe(u)|0,Dn(m,l,g,o,_Oe(u,A)|0,A)}function bM(){var o=0,l=0;if(s[7864]|0||(Wz(10208),dr(51,10208,U|0)|0,l=7864,n[l>>2]=1,n[l+4>>2]=0),!(_r(10208)|0)){o=10208,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Wz(10208)}return 10208}function UOe(o){return o=o|0,o|0}function _Oe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,g=k,m=k+4|0,n[g>>2]=o,R=bM()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(qz(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(HOe(B,g,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function qz(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function HOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,g=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=jOe(o)|0,A>>>0>>0)an(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,GOe(g,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=g+8|0,qz(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,qOe(o,g),WOe(g),I=k;return}}function jOe(o){return o=o|0,536870911}function GOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{g=Kt(l<<3)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l<<3)}function qOe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(g>>3)<<3)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function WOe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function Wz(o){o=o|0,JOe(o)}function YOe(o){o=o|0,VOe(o+24|0)}function VOe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function JOe(o){o=o|0;var l=0;l=tn()|0,rn(o,1,24,l,KOe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function KOe(){return 1392}function zOe(o,l){o=o|0,l=l|0,ZOe(n[(XOe(o)|0)>>2]|0,l)}function XOe(o){return o=o|0,(n[(bM()|0)+24>>2]|0)+(o<<3)|0}function ZOe(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,Fz(A,l),l=Nz(A,l)|0,op[o&127](l),I=u}function $Oe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0;m=n[o>>2]|0,g=PM()|0,o=eLe(u)|0,Dn(m,l,g,o,tLe(u,A)|0,A)}function PM(){var o=0,l=0;if(s[7872]|0||(Vz(10244),dr(52,10244,U|0)|0,l=7872,n[l>>2]=1,n[l+4>>2]=0),!(_r(10244)|0)){o=10244,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Vz(10244)}return 10244}function eLe(o){return o=o|0,o|0}function tLe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,g=k,m=k+4|0,n[g>>2]=o,R=PM()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(Yz(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(rLe(B,g,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function Yz(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function rLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,g=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=nLe(o)|0,A>>>0>>0)an(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,iLe(g,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=g+8|0,Yz(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,sLe(o,g),oLe(g),I=k;return}}function nLe(o){return o=o|0,536870911}function iLe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{g=Kt(l<<3)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l<<3)}function sLe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(g>>3)<<3)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function oLe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function Vz(o){o=o|0,cLe(o)}function aLe(o){o=o|0,lLe(o+24|0)}function lLe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function cLe(o){o=o|0;var l=0;l=tn()|0,rn(o,1,16,l,uLe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function uLe(){return 1400}function fLe(o){return o=o|0,pLe(n[(ALe(o)|0)>>2]|0)|0}function ALe(o){return o=o|0,(n[(PM()|0)+24>>2]|0)+(o<<3)|0}function pLe(o){return o=o|0,hLe(VP[o&7]()|0)|0}function hLe(o){return o=o|0,o|0}function dLe(){var o=0;return s[7880]|0||(wLe(10280),dr(25,10280,U|0)|0,o=7880,n[o>>2]=1,n[o+4>>2]=0),10280}function gLe(o,l){o=o|0,l=l|0,n[o>>2]=mLe()|0,n[o+4>>2]=yLe()|0,n[o+12>>2]=l,n[o+8>>2]=ELe()|0,n[o+32>>2]=4}function mLe(){return 11711}function yLe(){return 1356}function ELe(){return FP()|0}function ILe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(_h(A,896)|0)==512?u|0&&(CLe(u),It(u)):l|0&&(Vd(l),It(l))}function CLe(o){o=o|0,o=n[o+4>>2]|0,o|0&&jh(o)}function wLe(o){o=o|0,Oh(o)}function BLe(o){o=o|0,vLe(o,4920),SLe(o)|0,DLe(o)|0}function vLe(o,l){o=o|0,l=l|0;var u=0;u=dz()|0,n[o>>2]=u,VLe(u,l),Hh(n[o>>2]|0)}function SLe(o){o=o|0;var l=0;return l=n[o>>2]|0,ag(l,LLe()|0),o|0}function DLe(o){o=o|0;var l=0;return l=n[o>>2]|0,ag(l,bLe()|0),o|0}function bLe(){var o=0;return s[7888]|0||(Jz(10328),dr(53,10328,U|0)|0,o=7888,n[o>>2]=1,n[o+4>>2]=0),_r(10328)|0||Jz(10328),10328}function ag(o,l){o=o|0,l=l|0,Dn(o,0,l,0,0,0)}function Jz(o){o=o|0,kLe(o),lg(o,10)}function PLe(o){o=o|0,xLe(o+24|0)}function xLe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function kLe(o){o=o|0;var l=0;l=tn()|0,rn(o,5,1,l,FLe()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function QLe(o,l,u){o=o|0,l=l|0,u=+u,RLe(o,l,u)}function lg(o,l){o=o|0,l=l|0,n[o+20>>2]=l}function RLe(o,l,u){o=o|0,l=l|0,u=+u;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+16|0,m=A+8|0,k=A+13|0,g=A,B=A+12|0,np(k,l),n[m>>2]=ip(k,l)|0,Ff(B,u),E[g>>3]=+Nf(B,u),TLe(o,m,g),I=A}function TLe(o,l,u){o=o|0,l=l|0,u=u|0,Ul(o+8|0,n[l>>2]|0,+E[u>>3]),s[o+24>>0]=1}function FLe(){return 1404}function NLe(o,l){return o=o|0,l=+l,OLe(o,l)|0}function OLe(o,l){o=o|0,l=+l;var u=0,A=0,g=0,m=0,B=0,k=0,R=0;return A=I,I=I+16|0,m=A+4|0,B=A+8|0,k=A,g=_l(8)|0,u=g,R=Kt(16)|0,np(m,o),o=ip(m,o)|0,Ff(B,l),Ul(R,o,+Nf(B,l)),B=u+4|0,n[B>>2]=R,o=Kt(8)|0,B=n[B>>2]|0,n[k>>2]=0,n[m>>2]=n[k>>2],pM(o,B,m),n[g>>2]=o,I=A,u|0}function LLe(){var o=0;return s[7896]|0||(Kz(10364),dr(54,10364,U|0)|0,o=7896,n[o>>2]=1,n[o+4>>2]=0),_r(10364)|0||Kz(10364),10364}function Kz(o){o=o|0,_Le(o),lg(o,55)}function MLe(o){o=o|0,ULe(o+24|0)}function ULe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function _Le(o){o=o|0;var l=0;l=tn()|0,rn(o,5,4,l,qLe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function HLe(o){o=o|0,jLe(o)}function jLe(o){o=o|0,GLe(o)}function GLe(o){o=o|0,zz(o+8|0),s[o+24>>0]=1}function zz(o){o=o|0,n[o>>2]=0,E[o+8>>3]=0}function qLe(){return 1424}function WLe(){return YLe()|0}function YLe(){var o=0,l=0,u=0,A=0,g=0,m=0,B=0;return l=I,I=I+16|0,g=l+4|0,B=l,u=_l(8)|0,o=u,A=Kt(16)|0,zz(A),m=o+4|0,n[m>>2]=A,A=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[g>>2]=n[B>>2],pM(A,m,g),n[u>>2]=A,I=l,o|0}function VLe(o,l){o=o|0,l=l|0,n[o>>2]=JLe()|0,n[o+4>>2]=KLe()|0,n[o+12>>2]=l,n[o+8>>2]=zLe()|0,n[o+32>>2]=5}function JLe(){return 11710}function KLe(){return 1416}function zLe(){return NP()|0}function XLe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(_h(A,896)|0)==512?u|0&&(ZLe(u),It(u)):l|0&&It(l)}function ZLe(o){o=o|0,o=n[o+4>>2]|0,o|0&&jh(o)}function NP(){var o=0;return s[7904]|0||(n[2600]=$Le()|0,n[2601]=0,o=7904,n[o>>2]=1,n[o+4>>2]=0),10400}function $Le(){return n[357]|0}function eMe(o){o=o|0,tMe(o,4926),rMe(o)|0}function tMe(o,l){o=o|0,l=l|0;var u=0;u=MK()|0,n[o>>2]=u,pMe(u,l),Hh(n[o>>2]|0)}function rMe(o){o=o|0;var l=0;return l=n[o>>2]|0,ag(l,nMe()|0),o|0}function nMe(){var o=0;return s[7912]|0||(Xz(10412),dr(56,10412,U|0)|0,o=7912,n[o>>2]=1,n[o+4>>2]=0),_r(10412)|0||Xz(10412),10412}function Xz(o){o=o|0,oMe(o),lg(o,57)}function iMe(o){o=o|0,sMe(o+24|0)}function sMe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function oMe(o){o=o|0;var l=0;l=tn()|0,rn(o,5,5,l,uMe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function aMe(o){o=o|0,lMe(o)}function lMe(o){o=o|0,cMe(o)}function cMe(o){o=o|0;var l=0,u=0;l=o+8|0,u=l+48|0;do n[l>>2]=0,l=l+4|0;while((l|0)<(u|0));s[o+56>>0]=1}function uMe(){return 1432}function fMe(){return AMe()|0}function AMe(){var o=0,l=0,u=0,A=0,g=0,m=0,B=0,k=0;B=I,I=I+16|0,o=B+4|0,l=B,u=_l(8)|0,A=u,g=Kt(48)|0,m=g,k=m+48|0;do n[m>>2]=0,m=m+4|0;while((m|0)<(k|0));return m=A+4|0,n[m>>2]=g,k=Kt(8)|0,m=n[m>>2]|0,n[l>>2]=0,n[o>>2]=n[l>>2],UK(k,m,o),n[u>>2]=k,I=B,A|0}function pMe(o,l){o=o|0,l=l|0,n[o>>2]=hMe()|0,n[o+4>>2]=dMe()|0,n[o+12>>2]=l,n[o+8>>2]=gMe()|0,n[o+32>>2]=6}function hMe(){return 11704}function dMe(){return 1436}function gMe(){return NP()|0}function mMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(_h(A,896)|0)==512?u|0&&(yMe(u),It(u)):l|0&&It(l)}function yMe(o){o=o|0,o=n[o+4>>2]|0,o|0&&jh(o)}function EMe(o){o=o|0,IMe(o,4933),CMe(o)|0,wMe(o)|0}function IMe(o,l){o=o|0,l=l|0;var u=0;u=YMe()|0,n[o>>2]=u,VMe(u,l),Hh(n[o>>2]|0)}function CMe(o){o=o|0;var l=0;return l=n[o>>2]|0,ag(l,OMe()|0),o|0}function wMe(o){o=o|0;var l=0;return l=n[o>>2]|0,ag(l,BMe()|0),o|0}function BMe(){var o=0;return s[7920]|0||(Zz(10452),dr(58,10452,U|0)|0,o=7920,n[o>>2]=1,n[o+4>>2]=0),_r(10452)|0||Zz(10452),10452}function Zz(o){o=o|0,DMe(o),lg(o,1)}function vMe(o){o=o|0,SMe(o+24|0)}function SMe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function DMe(o){o=o|0;var l=0;l=tn()|0,rn(o,5,1,l,kMe()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function bMe(o,l,u){o=o|0,l=+l,u=+u,PMe(o,l,u)}function PMe(o,l,u){o=o|0,l=+l,u=+u;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+32|0,m=A+8|0,k=A+17|0,g=A,B=A+16|0,Ff(k,l),E[m>>3]=+Nf(k,l),Ff(B,u),E[g>>3]=+Nf(B,u),xMe(o,m,g),I=A}function xMe(o,l,u){o=o|0,l=l|0,u=u|0,$z(o+8|0,+E[l>>3],+E[u>>3]),s[o+24>>0]=1}function $z(o,l,u){o=o|0,l=+l,u=+u,E[o>>3]=l,E[o+8>>3]=u}function kMe(){return 1472}function QMe(o,l){return o=+o,l=+l,RMe(o,l)|0}function RMe(o,l){o=+o,l=+l;var u=0,A=0,g=0,m=0,B=0,k=0,R=0;return A=I,I=I+16|0,B=A+4|0,k=A+8|0,R=A,g=_l(8)|0,u=g,m=Kt(16)|0,Ff(B,o),o=+Nf(B,o),Ff(k,l),$z(m,o,+Nf(k,l)),k=u+4|0,n[k>>2]=m,m=Kt(8)|0,k=n[k>>2]|0,n[R>>2]=0,n[B>>2]=n[R>>2],eX(m,k,B),n[g>>2]=m,I=A,u|0}function eX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Kt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1452,n[u+12>>2]=l,n[o+4>>2]=u}function TMe(o){o=o|0,rE(o),It(o)}function FMe(o){o=o|0,o=n[o+12>>2]|0,o|0&&It(o)}function NMe(o){o=o|0,It(o)}function OMe(){var o=0;return s[7928]|0||(tX(10488),dr(59,10488,U|0)|0,o=7928,n[o>>2]=1,n[o+4>>2]=0),_r(10488)|0||tX(10488),10488}function tX(o){o=o|0,UMe(o),lg(o,60)}function LMe(o){o=o|0,MMe(o+24|0)}function MMe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function UMe(o){o=o|0;var l=0;l=tn()|0,rn(o,5,6,l,GMe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function _Me(o){o=o|0,HMe(o)}function HMe(o){o=o|0,jMe(o)}function jMe(o){o=o|0,rX(o+8|0),s[o+24>>0]=1}function rX(o){o=o|0,n[o>>2]=0,n[o+4>>2]=0,n[o+8>>2]=0,n[o+12>>2]=0}function GMe(){return 1492}function qMe(){return WMe()|0}function WMe(){var o=0,l=0,u=0,A=0,g=0,m=0,B=0;return l=I,I=I+16|0,g=l+4|0,B=l,u=_l(8)|0,o=u,A=Kt(16)|0,rX(A),m=o+4|0,n[m>>2]=A,A=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[g>>2]=n[B>>2],eX(A,m,g),n[u>>2]=A,I=l,o|0}function YMe(){var o=0;return s[7936]|0||($Me(10524),dr(25,10524,U|0)|0,o=7936,n[o>>2]=1,n[o+4>>2]=0),10524}function VMe(o,l){o=o|0,l=l|0,n[o>>2]=JMe()|0,n[o+4>>2]=KMe()|0,n[o+12>>2]=l,n[o+8>>2]=zMe()|0,n[o+32>>2]=7}function JMe(){return 11700}function KMe(){return 1484}function zMe(){return NP()|0}function XMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(_h(A,896)|0)==512?u|0&&(ZMe(u),It(u)):l|0&&It(l)}function ZMe(o){o=o|0,o=n[o+4>>2]|0,o|0&&jh(o)}function $Me(o){o=o|0,Oh(o)}function eUe(o,l,u){o=o|0,l=l|0,u=u|0,o=Sn(l)|0,l=tUe(u)|0,u=rUe(u,0)|0,RUe(o,l,u,xM()|0,0)}function tUe(o){return o=o|0,o|0}function rUe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,g=k,m=k+4|0,n[g>>2]=o,R=xM()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(iX(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(cUe(B,g,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function xM(){var o=0,l=0;if(s[7944]|0||(nX(10568),dr(61,10568,U|0)|0,l=7944,n[l>>2]=1,n[l+4>>2]=0),!(_r(10568)|0)){o=10568,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));nX(10568)}return 10568}function nX(o){o=o|0,sUe(o)}function nUe(o){o=o|0,iUe(o+24|0)}function iUe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function sUe(o){o=o|0;var l=0;l=tn()|0,rn(o,1,17,l,rz()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function oUe(o){return o=o|0,lUe(n[(aUe(o)|0)>>2]|0)|0}function aUe(o){return o=o|0,(n[(xM()|0)+24>>2]|0)+(o<<3)|0}function lUe(o){return o=o|0,TP(VP[o&7]()|0)|0}function iX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function cUe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,g=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=uUe(o)|0,A>>>0>>0)an(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,fUe(g,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=g+8|0,iX(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,AUe(o,g),pUe(g),I=k;return}}function uUe(o){return o=o|0,536870911}function fUe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{g=Kt(l<<3)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l<<3)}function AUe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(g>>3)<<3)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function pUe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function hUe(){dUe()}function dUe(){gUe(10604)}function gUe(o){o=o|0,mUe(o,4955)}function mUe(o,l){o=o|0,l=l|0;var u=0;u=yUe()|0,n[o>>2]=u,EUe(u,l),Hh(n[o>>2]|0)}function yUe(){var o=0;return s[7952]|0||(PUe(10612),dr(25,10612,U|0)|0,o=7952,n[o>>2]=1,n[o+4>>2]=0),10612}function EUe(o,l){o=o|0,l=l|0,n[o>>2]=BUe()|0,n[o+4>>2]=vUe()|0,n[o+12>>2]=l,n[o+8>>2]=SUe()|0,n[o+32>>2]=8}function Hh(o){o=o|0;var l=0,u=0;l=I,I=I+16|0,u=l,Xy()|0,n[u>>2]=o,IUe(10608,u),I=l}function Xy(){return s[11714]|0||(n[2652]=0,dr(62,10608,U|0)|0,s[11714]=1),10608}function IUe(o,l){o=o|0,l=l|0;var u=0;u=Kt(8)|0,n[u+4>>2]=n[l>>2],n[u>>2]=n[o>>2],n[o>>2]=u}function CUe(o){o=o|0,wUe(o)}function wUe(o){o=o|0;var l=0,u=0;if(l=n[o>>2]|0,l|0)do u=l,l=n[l>>2]|0,It(u);while(l|0);n[o>>2]=0}function BUe(){return 11715}function vUe(){return 1496}function SUe(){return FP()|0}function DUe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(_h(A,896)|0)==512?u|0&&(bUe(u),It(u)):l|0&&It(l)}function bUe(o){o=o|0,o=n[o+4>>2]|0,o|0&&jh(o)}function PUe(o){o=o|0,Oh(o)}function xUe(o,l){o=o|0,l=l|0;var u=0,A=0;Xy()|0,u=n[2652]|0;e:do if(u|0){for(;A=n[u+4>>2]|0,!(A|0&&!(UX(kM(A)|0,o)|0));)if(u=n[u>>2]|0,!u)break e;kUe(A,l)}while(!1)}function kM(o){return o=o|0,n[o+12>>2]|0}function kUe(o,l){o=o|0,l=l|0;var u=0;o=o+36|0,u=n[o>>2]|0,u|0&&(Pf(u),It(u)),u=Kt(4)|0,DP(u,l),n[o>>2]=u}function QM(){return s[11716]|0||(n[2664]=0,dr(63,10656,U|0)|0,s[11716]=1),10656}function sX(){var o=0;return s[11717]|0?o=n[2665]|0:(QUe(),n[2665]=1504,s[11717]=1,o=1504),o|0}function QUe(){s[11740]|0||(s[11718]=yr(yr(8,0)|0,0)|0,s[11719]=yr(yr(0,0)|0,0)|0,s[11720]=yr(yr(0,16)|0,0)|0,s[11721]=yr(yr(8,0)|0,0)|0,s[11722]=yr(yr(0,0)|0,0)|0,s[11723]=yr(yr(8,0)|0,0)|0,s[11724]=yr(yr(0,0)|0,0)|0,s[11725]=yr(yr(8,0)|0,0)|0,s[11726]=yr(yr(0,0)|0,0)|0,s[11727]=yr(yr(8,0)|0,0)|0,s[11728]=yr(yr(0,0)|0,0)|0,s[11729]=yr(yr(0,0)|0,32)|0,s[11730]=yr(yr(0,0)|0,32)|0,s[11740]=1)}function oX(){return 1572}function RUe(o,l,u,A,g){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0;var m=0,B=0,k=0,R=0,M=0,L=0;m=I,I=I+32|0,L=m+16|0,M=m+12|0,R=m+8|0,k=m+4|0,B=m,n[L>>2]=o,n[M>>2]=l,n[R>>2]=u,n[k>>2]=A,n[B>>2]=g,QM()|0,TUe(10656,L,M,R,k,B),I=m}function TUe(o,l,u,A,g,m){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,m=m|0;var B=0;B=Kt(24)|0,NK(B+4|0,n[l>>2]|0,n[u>>2]|0,n[A>>2]|0,n[g>>2]|0,n[m>>2]|0),n[B>>2]=n[o>>2],n[o>>2]=B}function aX(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0,Ve=0,Le=0,Te=0,nt=0,Ze=0,ft=0;if(ft=I,I=I+32|0,Le=ft+20|0,Te=ft+8|0,nt=ft+4|0,Ze=ft,l=n[l>>2]|0,l|0){Ve=Le+4|0,R=Le+8|0,M=Te+4|0,L=Te+8|0,q=Te+8|0,oe=Le+8|0;do{if(B=l+4|0,k=RM(B)|0,k|0){if(g=I2(k)|0,n[Le>>2]=0,n[Ve>>2]=0,n[R>>2]=0,A=(C2(k)|0)+1|0,FUe(Le,A),A|0)for(;A=A+-1|0,Su(Te,n[g>>2]|0),m=n[Ve>>2]|0,m>>>0<(n[oe>>2]|0)>>>0?(n[m>>2]=n[Te>>2],n[Ve>>2]=(n[Ve>>2]|0)+4):TM(Le,Te),A;)g=g+4|0;A=w2(k)|0,n[Te>>2]=0,n[M>>2]=0,n[L>>2]=0;e:do if(n[A>>2]|0)for(g=0,m=0;;){if((g|0)==(m|0)?NUe(Te,A):(n[g>>2]=n[A>>2],n[M>>2]=(n[M>>2]|0)+4),A=A+4|0,!(n[A>>2]|0))break e;g=n[M>>2]|0,m=n[q>>2]|0}while(!1);n[nt>>2]=OP(B)|0,n[Ze>>2]=_r(k)|0,OUe(u,o,nt,Ze,Le,Te),FM(Te),sp(Le)}l=n[l>>2]|0}while(l|0)}I=ft}function RM(o){return o=o|0,n[o+12>>2]|0}function I2(o){return o=o|0,n[o+12>>2]|0}function C2(o){return o=o|0,n[o+16>>2]|0}function FUe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0;g=I,I=I+32|0,u=g,A=n[o>>2]|0,(n[o+8>>2]|0)-A>>2>>>0>>0&&(dX(u,l,(n[o+4>>2]|0)-A>>2,o+8|0),gX(o,u),mX(u)),I=g}function TM(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,R=0,M=0;if(B=I,I=I+32|0,u=B,A=o+4|0,g=((n[A>>2]|0)-(n[o>>2]|0)>>2)+1|0,m=hX(o)|0,m>>>0>>0)an(o);else{k=n[o>>2]|0,M=(n[o+8>>2]|0)-k|0,R=M>>1,dX(u,M>>2>>>0>>1>>>0?R>>>0>>0?g:R:m,(n[A>>2]|0)-k>>2,o+8|0),m=u+8|0,n[n[m>>2]>>2]=n[l>>2],n[m>>2]=(n[m>>2]|0)+4,gX(o,u),mX(u),I=B;return}}function w2(o){return o=o|0,n[o+8>>2]|0}function NUe(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,R=0,M=0;if(B=I,I=I+32|0,u=B,A=o+4|0,g=((n[A>>2]|0)-(n[o>>2]|0)>>2)+1|0,m=pX(o)|0,m>>>0>>0)an(o);else{k=n[o>>2]|0,M=(n[o+8>>2]|0)-k|0,R=M>>1,t_e(u,M>>2>>>0>>1>>>0?R>>>0>>0?g:R:m,(n[A>>2]|0)-k>>2,o+8|0),m=u+8|0,n[n[m>>2]>>2]=n[l>>2],n[m>>2]=(n[m>>2]|0)+4,r_e(o,u),n_e(u),I=B;return}}function OP(o){return o=o|0,n[o>>2]|0}function OUe(o,l,u,A,g,m){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,m=m|0,LUe(o,l,u,A,g,m)}function FM(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-4-A|0)>>>2)<<2)),It(u))}function sp(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-4-A|0)>>>2)<<2)),It(u))}function LUe(o,l,u,A,g,m){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,m=m|0;var B=0,k=0,R=0,M=0,L=0,q=0;B=I,I=I+48|0,L=B+40|0,k=B+32|0,q=B+24|0,R=B+12|0,M=B,Hl(k),o=Us(o)|0,n[q>>2]=n[l>>2],u=n[u>>2]|0,A=n[A>>2]|0,NM(R,g),MUe(M,m),n[L>>2]=n[q>>2],UUe(o,L,u,A,R,M),FM(M),sp(R),jl(k),I=B}function NM(o,l){o=o|0,l=l|0;var u=0,A=0;n[o>>2]=0,n[o+4>>2]=0,n[o+8>>2]=0,u=l+4|0,A=(n[u>>2]|0)-(n[l>>2]|0)>>2,A|0&&($Ue(o,A),e_e(o,n[l>>2]|0,n[u>>2]|0,A))}function MUe(o,l){o=o|0,l=l|0;var u=0,A=0;n[o>>2]=0,n[o+4>>2]=0,n[o+8>>2]=0,u=l+4|0,A=(n[u>>2]|0)-(n[l>>2]|0)>>2,A|0&&(XUe(o,A),ZUe(o,n[l>>2]|0,n[u>>2]|0,A))}function UUe(o,l,u,A,g,m){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,m=m|0;var B=0,k=0,R=0,M=0,L=0,q=0;B=I,I=I+32|0,L=B+28|0,q=B+24|0,k=B+12|0,R=B,M=Ca(_Ue()|0)|0,n[q>>2]=n[l>>2],n[L>>2]=n[q>>2],l=cg(L)|0,u=lX(u)|0,A=OM(A)|0,n[k>>2]=n[g>>2],L=g+4|0,n[k+4>>2]=n[L>>2],q=g+8|0,n[k+8>>2]=n[q>>2],n[q>>2]=0,n[L>>2]=0,n[g>>2]=0,g=LM(k)|0,n[R>>2]=n[m>>2],L=m+4|0,n[R+4>>2]=n[L>>2],q=m+8|0,n[R+8>>2]=n[q>>2],n[q>>2]=0,n[L>>2]=0,n[m>>2]=0,au(0,M|0,o|0,l|0,u|0,A|0,g|0,HUe(R)|0)|0,FM(R),sp(k),I=B}function _Ue(){var o=0;return s[7968]|0||(KUe(10708),o=7968,n[o>>2]=1,n[o+4>>2]=0),10708}function cg(o){return o=o|0,uX(o)|0}function lX(o){return o=o|0,cX(o)|0}function OM(o){return o=o|0,TP(o)|0}function LM(o){return o=o|0,GUe(o)|0}function HUe(o){return o=o|0,jUe(o)|0}function jUe(o){o=o|0;var l=0,u=0,A=0;if(A=(n[o+4>>2]|0)-(n[o>>2]|0)|0,u=A>>2,A=_l(A+4|0)|0,n[A>>2]=u,u|0){l=0;do n[A+4+(l<<2)>>2]=cX(n[(n[o>>2]|0)+(l<<2)>>2]|0)|0,l=l+1|0;while((l|0)!=(u|0))}return A|0}function cX(o){return o=o|0,o|0}function GUe(o){o=o|0;var l=0,u=0,A=0;if(A=(n[o+4>>2]|0)-(n[o>>2]|0)|0,u=A>>2,A=_l(A+4|0)|0,n[A>>2]=u,u|0){l=0;do n[A+4+(l<<2)>>2]=uX((n[o>>2]|0)+(l<<2)|0)|0,l=l+1|0;while((l|0)!=(u|0))}return A|0}function uX(o){o=o|0;var l=0,u=0,A=0,g=0;return g=I,I=I+32|0,l=g+12|0,u=g,A=KL(fX()|0)|0,A?(zL(l,A),XL(u,l),S8e(o,u),o=ZL(l)|0):o=qUe(o)|0,I=g,o|0}function fX(){var o=0;return s[7960]|0||(JUe(10664),dr(25,10664,U|0)|0,o=7960,n[o>>2]=1,n[o+4>>2]=0),10664}function qUe(o){o=o|0;var l=0,u=0,A=0,g=0,m=0,B=0,k=0;return u=I,I=I+16|0,g=u+4|0,B=u,A=_l(8)|0,l=A,k=Kt(4)|0,n[k>>2]=n[o>>2],m=l+4|0,n[m>>2]=k,o=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[g>>2]=n[B>>2],AX(o,m,g),n[A>>2]=o,I=u,l|0}function AX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Kt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1656,n[u+12>>2]=l,n[o+4>>2]=u}function WUe(o){o=o|0,rE(o),It(o)}function YUe(o){o=o|0,o=n[o+12>>2]|0,o|0&&It(o)}function VUe(o){o=o|0,It(o)}function JUe(o){o=o|0,Oh(o)}function KUe(o){o=o|0,Lo(o,zUe()|0,5)}function zUe(){return 1676}function XUe(o,l){o=o|0,l=l|0;var u=0;if((pX(o)|0)>>>0>>0&&an(o),l>>>0>1073741823)Nt();else{u=Kt(l<<2)|0,n[o+4>>2]=u,n[o>>2]=u,n[o+8>>2]=u+(l<<2);return}}function ZUe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,A=o+4|0,o=u-l|0,(o|0)>0&&(Rr(n[A>>2]|0,l|0,o|0)|0,n[A>>2]=(n[A>>2]|0)+(o>>>2<<2))}function pX(o){return o=o|0,1073741823}function $Ue(o,l){o=o|0,l=l|0;var u=0;if((hX(o)|0)>>>0>>0&&an(o),l>>>0>1073741823)Nt();else{u=Kt(l<<2)|0,n[o+4>>2]=u,n[o>>2]=u,n[o+8>>2]=u+(l<<2);return}}function e_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,A=o+4|0,o=u-l|0,(o|0)>0&&(Rr(n[A>>2]|0,l|0,o|0)|0,n[A>>2]=(n[A>>2]|0)+(o>>>2<<2))}function hX(o){return o=o|0,1073741823}function t_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>1073741823)Nt();else{g=Kt(l<<2)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u<<2)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l<<2)}function r_e(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(g>>2)<<2)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function n_e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-4-l|0)>>>2)<<2)),o=n[o>>2]|0,o|0&&It(o)}function dX(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>1073741823)Nt();else{g=Kt(l<<2)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u<<2)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l<<2)}function gX(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(g>>2)<<2)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function mX(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-4-l|0)>>>2)<<2)),o=n[o>>2]|0,o|0&&It(o)}function i_e(o,l,u,A,g){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0;var m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0,Ve=0,Le=0,Te=0;if(Te=I,I=I+32|0,L=Te+20|0,q=Te+12|0,M=Te+16|0,oe=Te+4|0,Ve=Te,Le=Te+8|0,k=sX()|0,m=n[k>>2]|0,B=n[m>>2]|0,B|0)for(R=n[k+8>>2]|0,k=n[k+4>>2]|0;Su(L,B),s_e(o,L,k,R),m=m+4|0,B=n[m>>2]|0,B;)R=R+1|0,k=k+1|0;if(m=oX()|0,B=n[m>>2]|0,B|0)do Su(L,B),n[q>>2]=n[m+4>>2],o_e(l,L,q),m=m+8|0,B=n[m>>2]|0;while(B|0);if(m=n[(Xy()|0)>>2]|0,m|0)do l=n[m+4>>2]|0,Su(L,n[(Zy(l)|0)>>2]|0),n[q>>2]=kM(l)|0,a_e(u,L,q),m=n[m>>2]|0;while(m|0);if(Su(M,0),m=QM()|0,n[L>>2]=n[M>>2],aX(L,m,g),m=n[(Xy()|0)>>2]|0,m|0){o=L+4|0,l=L+8|0,u=L+8|0;do{if(R=n[m+4>>2]|0,Su(q,n[(Zy(R)|0)>>2]|0),l_e(oe,yX(R)|0),B=n[oe>>2]|0,B|0){n[L>>2]=0,n[o>>2]=0,n[l>>2]=0;do Su(Ve,n[(Zy(n[B+4>>2]|0)|0)>>2]|0),k=n[o>>2]|0,k>>>0<(n[u>>2]|0)>>>0?(n[k>>2]=n[Ve>>2],n[o>>2]=(n[o>>2]|0)+4):TM(L,Ve),B=n[B>>2]|0;while(B|0);c_e(A,q,L),sp(L)}n[Le>>2]=n[q>>2],M=EX(R)|0,n[L>>2]=n[Le>>2],aX(L,M,g),HK(oe),m=n[m>>2]|0}while(m|0)}I=Te}function s_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,C_e(o,l,u,A)}function o_e(o,l,u){o=o|0,l=l|0,u=u|0,I_e(o,l,u)}function Zy(o){return o=o|0,o|0}function a_e(o,l,u){o=o|0,l=l|0,u=u|0,g_e(o,l,u)}function yX(o){return o=o|0,o+16|0}function l_e(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,R=0;if(m=I,I=I+16|0,g=m+8|0,u=m,n[o>>2]=0,A=n[l>>2]|0,n[g>>2]=A,n[u>>2]=o,u=d_e(u)|0,A|0){if(A=Kt(12)|0,B=(IX(g)|0)+4|0,o=n[B+4>>2]|0,l=A+4|0,n[l>>2]=n[B>>2],n[l+4>>2]=o,l=n[n[g>>2]>>2]|0,n[g>>2]=l,!l)o=A;else for(l=A;o=Kt(12)|0,R=(IX(g)|0)+4|0,k=n[R+4>>2]|0,B=o+4|0,n[B>>2]=n[R>>2],n[B+4>>2]=k,n[l>>2]=o,B=n[n[g>>2]>>2]|0,n[g>>2]=B,B;)l=o;n[o>>2]=n[u>>2],n[u>>2]=A}I=m}function c_e(o,l,u){o=o|0,l=l|0,u=u|0,u_e(o,l,u)}function EX(o){return o=o|0,o+24|0}function u_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+32|0,B=A+24|0,g=A+16|0,k=A+12|0,m=A,Hl(g),o=Us(o)|0,n[k>>2]=n[l>>2],NM(m,u),n[B>>2]=n[k>>2],f_e(o,B,m),sp(m),jl(g),I=A}function f_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=I,I=I+32|0,B=A+16|0,k=A+12|0,g=A,m=Ca(A_e()|0)|0,n[k>>2]=n[l>>2],n[B>>2]=n[k>>2],l=cg(B)|0,n[g>>2]=n[u>>2],B=u+4|0,n[g+4>>2]=n[B>>2],k=u+8|0,n[g+8>>2]=n[k>>2],n[k>>2]=0,n[B>>2]=0,n[u>>2]=0,Ns(0,m|0,o|0,l|0,LM(g)|0)|0,sp(g),I=A}function A_e(){var o=0;return s[7976]|0||(p_e(10720),o=7976,n[o>>2]=1,n[o+4>>2]=0),10720}function p_e(o){o=o|0,Lo(o,h_e()|0,2)}function h_e(){return 1732}function d_e(o){return o=o|0,n[o>>2]|0}function IX(o){return o=o|0,n[o>>2]|0}function g_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;A=I,I=I+32|0,m=A+16|0,g=A+8|0,B=A,Hl(g),o=Us(o)|0,n[B>>2]=n[l>>2],u=n[u>>2]|0,n[m>>2]=n[B>>2],CX(o,m,u),jl(g),I=A}function CX(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;A=I,I=I+16|0,m=A+4|0,B=A,g=Ca(m_e()|0)|0,n[B>>2]=n[l>>2],n[m>>2]=n[B>>2],l=cg(m)|0,Ns(0,g|0,o|0,l|0,lX(u)|0)|0,I=A}function m_e(){var o=0;return s[7984]|0||(y_e(10732),o=7984,n[o>>2]=1,n[o+4>>2]=0),10732}function y_e(o){o=o|0,Lo(o,E_e()|0,2)}function E_e(){return 1744}function I_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;A=I,I=I+32|0,m=A+16|0,g=A+8|0,B=A,Hl(g),o=Us(o)|0,n[B>>2]=n[l>>2],u=n[u>>2]|0,n[m>>2]=n[B>>2],CX(o,m,u),jl(g),I=A}function C_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0;g=I,I=I+32|0,B=g+16|0,m=g+8|0,k=g,Hl(m),o=Us(o)|0,n[k>>2]=n[l>>2],u=s[u>>0]|0,A=s[A>>0]|0,n[B>>2]=n[k>>2],w_e(o,B,u,A),jl(m),I=g}function w_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0;g=I,I=I+16|0,B=g+4|0,k=g,m=Ca(B_e()|0)|0,n[k>>2]=n[l>>2],n[B>>2]=n[k>>2],l=cg(B)|0,u=$y(u)|0,Li(0,m|0,o|0,l|0,u|0,$y(A)|0)|0,I=g}function B_e(){var o=0;return s[7992]|0||(S_e(10744),o=7992,n[o>>2]=1,n[o+4>>2]=0),10744}function $y(o){return o=o|0,v_e(o)|0}function v_e(o){return o=o|0,o&255|0}function S_e(o){o=o|0,Lo(o,D_e()|0,3)}function D_e(){return 1756}function b_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;switch(oe=I,I=I+32|0,k=oe+8|0,R=oe+4|0,M=oe+20|0,L=oe,rM(o,0),A=v8e(l)|0,n[k>>2]=0,q=k+4|0,n[q>>2]=0,n[k+8>>2]=0,A<<24>>24){case 0:{s[M>>0]=0,P_e(R,u,M),LP(o,R)|0,xf(R);break}case 8:{q=GM(l)|0,s[M>>0]=8,Su(L,n[q+4>>2]|0),x_e(R,u,M,L,q+8|0),LP(o,R)|0,xf(R);break}case 9:{if(m=GM(l)|0,l=n[m+4>>2]|0,l|0)for(B=k+8|0,g=m+12|0;l=l+-1|0,Su(R,n[g>>2]|0),A=n[q>>2]|0,A>>>0<(n[B>>2]|0)>>>0?(n[A>>2]=n[R>>2],n[q>>2]=(n[q>>2]|0)+4):TM(k,R),l;)g=g+4|0;s[M>>0]=9,Su(L,n[m+8>>2]|0),k_e(R,u,M,L,k),LP(o,R)|0,xf(R);break}default:q=GM(l)|0,s[M>>0]=A,Su(L,n[q+4>>2]|0),Q_e(R,u,M,L),LP(o,R)|0,xf(R)}sp(k),I=oe}function P_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0;A=I,I=I+16|0,g=A,Hl(g),l=Us(l)|0,q_e(o,l,s[u>>0]|0),jl(g),I=A}function LP(o,l){o=o|0,l=l|0;var u=0;return u=n[o>>2]|0,u|0&&qa(u|0),n[o>>2]=n[l>>2],n[l>>2]=0,o|0}function x_e(o,l,u,A,g){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0;var m=0,B=0,k=0,R=0;m=I,I=I+32|0,k=m+16|0,B=m+8|0,R=m,Hl(B),l=Us(l)|0,u=s[u>>0]|0,n[R>>2]=n[A>>2],g=n[g>>2]|0,n[k>>2]=n[R>>2],__e(o,l,u,k,g),jl(B),I=m}function k_e(o,l,u,A,g){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0;var m=0,B=0,k=0,R=0,M=0;m=I,I=I+32|0,R=m+24|0,B=m+16|0,M=m+12|0,k=m,Hl(B),l=Us(l)|0,u=s[u>>0]|0,n[M>>2]=n[A>>2],NM(k,g),n[R>>2]=n[M>>2],O_e(o,l,u,R,k),sp(k),jl(B),I=m}function Q_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0;g=I,I=I+32|0,B=g+16|0,m=g+8|0,k=g,Hl(m),l=Us(l)|0,u=s[u>>0]|0,n[k>>2]=n[A>>2],n[B>>2]=n[k>>2],R_e(o,l,u,B),jl(m),I=g}function R_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0,B=0,k=0;g=I,I=I+16|0,m=g+4|0,k=g,B=Ca(T_e()|0)|0,u=$y(u)|0,n[k>>2]=n[A>>2],n[m>>2]=n[k>>2],MP(o,Ns(0,B|0,l|0,u|0,cg(m)|0)|0),I=g}function T_e(){var o=0;return s[8e3]|0||(F_e(10756),o=8e3,n[o>>2]=1,n[o+4>>2]=0),10756}function MP(o,l){o=o|0,l=l|0,rM(o,l)}function F_e(o){o=o|0,Lo(o,N_e()|0,2)}function N_e(){return 1772}function O_e(o,l,u,A,g){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0;var m=0,B=0,k=0,R=0,M=0;m=I,I=I+32|0,R=m+16|0,M=m+12|0,B=m,k=Ca(L_e()|0)|0,u=$y(u)|0,n[M>>2]=n[A>>2],n[R>>2]=n[M>>2],A=cg(R)|0,n[B>>2]=n[g>>2],R=g+4|0,n[B+4>>2]=n[R>>2],M=g+8|0,n[B+8>>2]=n[M>>2],n[M>>2]=0,n[R>>2]=0,n[g>>2]=0,MP(o,Li(0,k|0,l|0,u|0,A|0,LM(B)|0)|0),sp(B),I=m}function L_e(){var o=0;return s[8008]|0||(M_e(10768),o=8008,n[o>>2]=1,n[o+4>>2]=0),10768}function M_e(o){o=o|0,Lo(o,U_e()|0,3)}function U_e(){return 1784}function __e(o,l,u,A,g){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0;var m=0,B=0,k=0,R=0;m=I,I=I+16|0,k=m+4|0,R=m,B=Ca(H_e()|0)|0,u=$y(u)|0,n[R>>2]=n[A>>2],n[k>>2]=n[R>>2],A=cg(k)|0,MP(o,Li(0,B|0,l|0,u|0,A|0,OM(g)|0)|0),I=m}function H_e(){var o=0;return s[8016]|0||(j_e(10780),o=8016,n[o>>2]=1,n[o+4>>2]=0),10780}function j_e(o){o=o|0,Lo(o,G_e()|0,3)}function G_e(){return 1800}function q_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=Ca(W_e()|0)|0,MP(o,mn(0,A|0,l|0,$y(u)|0)|0)}function W_e(){var o=0;return s[8024]|0||(Y_e(10792),o=8024,n[o>>2]=1,n[o+4>>2]=0),10792}function Y_e(o){o=o|0,Lo(o,V_e()|0,1)}function V_e(){return 1816}function J_e(){K_e(),z_e(),X_e()}function K_e(){n[2702]=KX(65536)|0}function z_e(){m4e(10856)}function X_e(){Z_e(10816)}function Z_e(o){o=o|0,$_e(o,5044),e4e(o)|0}function $_e(o,l){o=o|0,l=l|0;var u=0;u=fX()|0,n[o>>2]=u,f4e(u,l),Hh(n[o>>2]|0)}function e4e(o){o=o|0;var l=0;return l=n[o>>2]|0,ag(l,t4e()|0),o|0}function t4e(){var o=0;return s[8032]|0||(wX(10820),dr(64,10820,U|0)|0,o=8032,n[o>>2]=1,n[o+4>>2]=0),_r(10820)|0||wX(10820),10820}function wX(o){o=o|0,i4e(o),lg(o,25)}function r4e(o){o=o|0,n4e(o+24|0)}function n4e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function i4e(o){o=o|0;var l=0;l=tn()|0,rn(o,5,18,l,l4e()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function s4e(o,l){o=o|0,l=l|0,o4e(o,l)}function o4e(o,l){o=o|0,l=l|0;var u=0,A=0,g=0;u=I,I=I+16|0,A=u,g=u+4|0,sg(g,l),n[A>>2]=og(g,l)|0,a4e(o,A),I=u}function a4e(o,l){o=o|0,l=l|0,BX(o+4|0,n[l>>2]|0),s[o+8>>0]=1}function BX(o,l){o=o|0,l=l|0,n[o>>2]=l}function l4e(){return 1824}function c4e(o){return o=o|0,u4e(o)|0}function u4e(o){o=o|0;var l=0,u=0,A=0,g=0,m=0,B=0,k=0;return u=I,I=I+16|0,g=u+4|0,B=u,A=_l(8)|0,l=A,k=Kt(4)|0,sg(g,o),BX(k,og(g,o)|0),m=l+4|0,n[m>>2]=k,o=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[g>>2]=n[B>>2],AX(o,m,g),n[A>>2]=o,I=u,l|0}function _l(o){o=o|0;var l=0,u=0;return o=o+7&-8,o>>>0<=32768&&(l=n[2701]|0,o>>>0<=(65536-l|0)>>>0)?(u=(n[2702]|0)+l|0,n[2701]=l+o,o=u):(o=KX(o+8|0)|0,n[o>>2]=n[2703],n[2703]=o,o=o+8|0),o|0}function f4e(o,l){o=o|0,l=l|0,n[o>>2]=A4e()|0,n[o+4>>2]=p4e()|0,n[o+12>>2]=l,n[o+8>>2]=h4e()|0,n[o+32>>2]=9}function A4e(){return 11744}function p4e(){return 1832}function h4e(){return NP()|0}function d4e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(_h(A,896)|0)==512?u|0&&(g4e(u),It(u)):l|0&&It(l)}function g4e(o){o=o|0,o=n[o+4>>2]|0,o|0&&jh(o)}function m4e(o){o=o|0,y4e(o,5052),E4e(o)|0,I4e(o,5058,26)|0,C4e(o,5069,1)|0,w4e(o,5077,10)|0,B4e(o,5087,19)|0,v4e(o,5094,27)|0}function y4e(o,l){o=o|0,l=l|0;var u=0;u=g8e()|0,n[o>>2]=u,m8e(u,l),Hh(n[o>>2]|0)}function E4e(o){o=o|0;var l=0;return l=n[o>>2]|0,ag(l,r8e()|0),o|0}function I4e(o,l,u){return o=o|0,l=l|0,u=u|0,M3e(o,Sn(l)|0,u,0),o|0}function C4e(o,l,u){return o=o|0,l=l|0,u=u|0,B3e(o,Sn(l)|0,u,0),o|0}function w4e(o,l,u){return o=o|0,l=l|0,u=u|0,t3e(o,Sn(l)|0,u,0),o|0}function B4e(o,l,u){return o=o|0,l=l|0,u=u|0,_4e(o,Sn(l)|0,u,0),o|0}function vX(o,l){o=o|0,l=l|0;var u=0,A=0;e:for(;;){for(u=n[2703]|0;;){if((u|0)==(l|0))break e;if(A=n[u>>2]|0,n[2703]=A,!u)u=A;else break}It(u)}n[2701]=o}function v4e(o,l,u){return o=o|0,l=l|0,u=u|0,S4e(o,Sn(l)|0,u,0),o|0}function S4e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0;m=n[o>>2]|0,g=MM()|0,o=D4e(u)|0,Dn(m,l,g,o,b4e(u,A)|0,A)}function MM(){var o=0,l=0;if(s[8040]|0||(DX(10860),dr(65,10860,U|0)|0,l=8040,n[l>>2]=1,n[l+4>>2]=0),!(_r(10860)|0)){o=10860,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));DX(10860)}return 10860}function D4e(o){return o=o|0,o|0}function b4e(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,g=k,m=k+4|0,n[g>>2]=o,R=MM()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(SX(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(P4e(B,g,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function SX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function P4e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,g=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=x4e(o)|0,A>>>0>>0)an(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,k4e(g,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=g+8|0,SX(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,Q4e(o,g),R4e(g),I=k;return}}function x4e(o){return o=o|0,536870911}function k4e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{g=Kt(l<<3)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l<<3)}function Q4e(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(g>>3)<<3)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function R4e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function DX(o){o=o|0,N4e(o)}function T4e(o){o=o|0,F4e(o+24|0)}function F4e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function N4e(o){o=o|0;var l=0;l=tn()|0,rn(o,1,11,l,O4e()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function O4e(){return 1840}function L4e(o,l,u){o=o|0,l=l|0,u=u|0,U4e(n[(M4e(o)|0)>>2]|0,l,u)}function M4e(o){return o=o|0,(n[(MM()|0)+24>>2]|0)+(o<<3)|0}function U4e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0;A=I,I=I+16|0,m=A+1|0,g=A,sg(m,l),l=og(m,l)|0,sg(g,u),u=og(g,u)|0,ap[o&31](l,u),I=A}function _4e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0;m=n[o>>2]|0,g=UM()|0,o=H4e(u)|0,Dn(m,l,g,o,j4e(u,A)|0,A)}function UM(){var o=0,l=0;if(s[8048]|0||(PX(10896),dr(66,10896,U|0)|0,l=8048,n[l>>2]=1,n[l+4>>2]=0),!(_r(10896)|0)){o=10896,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));PX(10896)}return 10896}function H4e(o){return o=o|0,o|0}function j4e(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,g=k,m=k+4|0,n[g>>2]=o,R=UM()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(bX(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(G4e(B,g,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function bX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function G4e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,g=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=q4e(o)|0,A>>>0>>0)an(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,W4e(g,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=g+8|0,bX(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,Y4e(o,g),V4e(g),I=k;return}}function q4e(o){return o=o|0,536870911}function W4e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{g=Kt(l<<3)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l<<3)}function Y4e(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(g>>3)<<3)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function V4e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function PX(o){o=o|0,z4e(o)}function J4e(o){o=o|0,K4e(o+24|0)}function K4e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function z4e(o){o=o|0;var l=0;l=tn()|0,rn(o,1,11,l,X4e()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function X4e(){return 1852}function Z4e(o,l){return o=o|0,l=l|0,e3e(n[($4e(o)|0)>>2]|0,l)|0}function $4e(o){return o=o|0,(n[(UM()|0)+24>>2]|0)+(o<<3)|0}function e3e(o,l){o=o|0,l=l|0;var u=0,A=0;return u=I,I=I+16|0,A=u,sg(A,l),l=og(A,l)|0,l=TP(pg[o&31](l)|0)|0,I=u,l|0}function t3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0;m=n[o>>2]|0,g=_M()|0,o=r3e(u)|0,Dn(m,l,g,o,n3e(u,A)|0,A)}function _M(){var o=0,l=0;if(s[8056]|0||(kX(10932),dr(67,10932,U|0)|0,l=8056,n[l>>2]=1,n[l+4>>2]=0),!(_r(10932)|0)){o=10932,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));kX(10932)}return 10932}function r3e(o){return o=o|0,o|0}function n3e(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,g=k,m=k+4|0,n[g>>2]=o,R=_M()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(xX(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(i3e(B,g,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function xX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function i3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,g=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=s3e(o)|0,A>>>0>>0)an(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,o3e(g,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=g+8|0,xX(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,a3e(o,g),l3e(g),I=k;return}}function s3e(o){return o=o|0,536870911}function o3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{g=Kt(l<<3)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l<<3)}function a3e(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(g>>3)<<3)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function l3e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function kX(o){o=o|0,f3e(o)}function c3e(o){o=o|0,u3e(o+24|0)}function u3e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function f3e(o){o=o|0;var l=0;l=tn()|0,rn(o,1,7,l,A3e()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function A3e(){return 1860}function p3e(o,l,u){return o=o|0,l=l|0,u=u|0,d3e(n[(h3e(o)|0)>>2]|0,l,u)|0}function h3e(o){return o=o|0,(n[(_M()|0)+24>>2]|0)+(o<<3)|0}function d3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,R=0;return A=I,I=I+32|0,B=A+12|0,m=A+8|0,k=A,R=A+16|0,g=A+4|0,g3e(R,l),m3e(k,R,l),Lh(g,u),u=Mh(g,u)|0,n[B>>2]=n[k>>2],D2[o&15](m,B,u),u=y3e(m)|0,xf(m),Uh(g),I=A,u|0}function g3e(o,l){o=o|0,l=l|0}function m3e(o,l,u){o=o|0,l=l|0,u=u|0,E3e(o,u)}function y3e(o){return o=o|0,Us(o)|0}function E3e(o,l){o=o|0,l=l|0;var u=0,A=0,g=0;g=I,I=I+16|0,u=g,A=l,A&1?(I3e(u,0),Ga(A|0,u|0)|0,C3e(o,u),w3e(u)):n[o>>2]=n[l>>2],I=g}function I3e(o,l){o=o|0,l=l|0,Bu(o,l),n[o+4>>2]=0,s[o+8>>0]=0}function C3e(o,l){o=o|0,l=l|0,n[o>>2]=n[l+4>>2]}function w3e(o){o=o|0,s[o+8>>0]=0}function B3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0;m=n[o>>2]|0,g=HM()|0,o=v3e(u)|0,Dn(m,l,g,o,S3e(u,A)|0,A)}function HM(){var o=0,l=0;if(s[8064]|0||(RX(10968),dr(68,10968,U|0)|0,l=8064,n[l>>2]=1,n[l+4>>2]=0),!(_r(10968)|0)){o=10968,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));RX(10968)}return 10968}function v3e(o){return o=o|0,o|0}function S3e(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,g=k,m=k+4|0,n[g>>2]=o,R=HM()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(QX(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(D3e(B,g,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function QX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function D3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,g=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=b3e(o)|0,A>>>0>>0)an(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,P3e(g,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=g+8|0,QX(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,x3e(o,g),k3e(g),I=k;return}}function b3e(o){return o=o|0,536870911}function P3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{g=Kt(l<<3)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l<<3)}function x3e(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(g>>3)<<3)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function k3e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function RX(o){o=o|0,T3e(o)}function Q3e(o){o=o|0,R3e(o+24|0)}function R3e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function T3e(o){o=o|0;var l=0;l=tn()|0,rn(o,1,1,l,F3e()|0,5),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function F3e(){return 1872}function N3e(o,l,u,A,g,m){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,m=m|0,L3e(n[(O3e(o)|0)>>2]|0,l,u,A,g,m)}function O3e(o){return o=o|0,(n[(HM()|0)+24>>2]|0)+(o<<3)|0}function L3e(o,l,u,A,g,m){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,m=m|0;var B=0,k=0,R=0,M=0,L=0,q=0;B=I,I=I+32|0,k=B+16|0,R=B+12|0,M=B+8|0,L=B+4|0,q=B,Lh(k,l),l=Mh(k,l)|0,Lh(R,u),u=Mh(R,u)|0,Lh(M,A),A=Mh(M,A)|0,Lh(L,g),g=Mh(L,g)|0,Lh(q,m),m=Mh(q,m)|0,eZ[o&1](l,u,A,g,m),Uh(q),Uh(L),Uh(M),Uh(R),Uh(k),I=B}function M3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0;m=n[o>>2]|0,g=jM()|0,o=U3e(u)|0,Dn(m,l,g,o,_3e(u,A)|0,A)}function jM(){var o=0,l=0;if(s[8072]|0||(FX(11004),dr(69,11004,U|0)|0,l=8072,n[l>>2]=1,n[l+4>>2]=0),!(_r(11004)|0)){o=11004,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));FX(11004)}return 11004}function U3e(o){return o=o|0,o|0}function _3e(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,g=k,m=k+4|0,n[g>>2]=o,R=jM()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(TX(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(H3e(B,g,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function TX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function H3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,g=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=j3e(o)|0,A>>>0>>0)an(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,G3e(g,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=g+8|0,TX(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,q3e(o,g),W3e(g),I=k;return}}function j3e(o){return o=o|0,536870911}function G3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{g=Kt(l<<3)|0;break}else g=0;while(!1);n[o>>2]=g,A=g+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=g+(l<<3)}function q3e(o,l){o=o|0,l=l|0;var u=0,A=0,g=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,g=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(g>>3)<<3)|0,n[m>>2]=u,(g|0)>0?(Rr(u|0,A|0,g|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,g=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=g,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function W3e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function FX(o){o=o|0,J3e(o)}function Y3e(o){o=o|0,V3e(o+24|0)}function V3e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function J3e(o){o=o|0;var l=0;l=tn()|0,rn(o,1,12,l,K3e()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function K3e(){return 1896}function z3e(o,l,u){o=o|0,l=l|0,u=u|0,Z3e(n[(X3e(o)|0)>>2]|0,l,u)}function X3e(o){return o=o|0,(n[(jM()|0)+24>>2]|0)+(o<<3)|0}function Z3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0;A=I,I=I+16|0,m=A+4|0,g=A,$3e(m,l),l=e8e(m,l)|0,Lh(g,u),u=Mh(g,u)|0,ap[o&31](l,u),Uh(g),I=A}function $3e(o,l){o=o|0,l=l|0}function e8e(o,l){return o=o|0,l=l|0,t8e(l)|0}function t8e(o){return o=o|0,o|0}function r8e(){var o=0;return s[8080]|0||(NX(11040),dr(70,11040,U|0)|0,o=8080,n[o>>2]=1,n[o+4>>2]=0),_r(11040)|0||NX(11040),11040}function NX(o){o=o|0,s8e(o),lg(o,71)}function n8e(o){o=o|0,i8e(o+24|0)}function i8e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function s8e(o){o=o|0;var l=0;l=tn()|0,rn(o,5,7,l,c8e()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function o8e(o){o=o|0,a8e(o)}function a8e(o){o=o|0,l8e(o)}function l8e(o){o=o|0,s[o+8>>0]=1}function c8e(){return 1936}function u8e(){return f8e()|0}function f8e(){var o=0,l=0,u=0,A=0,g=0,m=0,B=0;return l=I,I=I+16|0,g=l+4|0,B=l,u=_l(8)|0,o=u,m=o+4|0,n[m>>2]=Kt(1)|0,A=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[g>>2]=n[B>>2],A8e(A,m,g),n[u>>2]=A,I=l,o|0}function A8e(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Kt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1916,n[u+12>>2]=l,n[o+4>>2]=u}function p8e(o){o=o|0,rE(o),It(o)}function h8e(o){o=o|0,o=n[o+12>>2]|0,o|0&&It(o)}function d8e(o){o=o|0,It(o)}function g8e(){var o=0;return s[8088]|0||(B8e(11076),dr(25,11076,U|0)|0,o=8088,n[o>>2]=1,n[o+4>>2]=0),11076}function m8e(o,l){o=o|0,l=l|0,n[o>>2]=y8e()|0,n[o+4>>2]=E8e()|0,n[o+12>>2]=l,n[o+8>>2]=I8e()|0,n[o+32>>2]=10}function y8e(){return 11745}function E8e(){return 1940}function I8e(){return FP()|0}function C8e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(_h(A,896)|0)==512?u|0&&(w8e(u),It(u)):l|0&&It(l)}function w8e(o){o=o|0,o=n[o+4>>2]|0,o|0&&jh(o)}function B8e(o){o=o|0,Oh(o)}function Su(o,l){o=o|0,l=l|0,n[o>>2]=l}function GM(o){return o=o|0,n[o>>2]|0}function v8e(o){return o=o|0,s[n[o>>2]>>0]|0}function S8e(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,n[A>>2]=n[o>>2],D8e(l,A)|0,I=u}function D8e(o,l){o=o|0,l=l|0;var u=0;return u=b8e(n[o>>2]|0,l)|0,l=o+4|0,n[(n[l>>2]|0)+8>>2]=u,n[(n[l>>2]|0)+8>>2]|0}function b8e(o,l){o=o|0,l=l|0;var u=0,A=0;return u=I,I=I+16|0,A=u,Hl(A),o=Us(o)|0,l=P8e(o,n[l>>2]|0)|0,jl(A),I=u,l|0}function Hl(o){o=o|0,n[o>>2]=n[2701],n[o+4>>2]=n[2703]}function P8e(o,l){o=o|0,l=l|0;var u=0;return u=Ca(x8e()|0)|0,mn(0,u|0,o|0,OM(l)|0)|0}function jl(o){o=o|0,vX(n[o>>2]|0,n[o+4>>2]|0)}function x8e(){var o=0;return s[8096]|0||(k8e(11120),o=8096,n[o>>2]=1,n[o+4>>2]=0),11120}function k8e(o){o=o|0,Lo(o,Q8e()|0,1)}function Q8e(){return 1948}function R8e(){T8e()}function T8e(){var o=0,l=0,u=0,A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0,Ve=0,Le=0,Te=0;if(Le=I,I=I+16|0,L=Le+4|0,q=Le,fa(65536,10804,n[2702]|0,10812),u=sX()|0,l=n[u>>2]|0,o=n[l>>2]|0,o|0)for(A=n[u+8>>2]|0,u=n[u+4>>2]|0;gf(o|0,c[u>>0]|0|0,s[A>>0]|0),l=l+4|0,o=n[l>>2]|0,o;)A=A+1|0,u=u+1|0;if(o=oX()|0,l=n[o>>2]|0,l|0)do LA(l|0,n[o+4>>2]|0),o=o+8|0,l=n[o>>2]|0;while(l|0);LA(F8e()|0,5167),M=Xy()|0,o=n[M>>2]|0;e:do if(o|0){do N8e(n[o+4>>2]|0),o=n[o>>2]|0;while(o|0);if(o=n[M>>2]|0,o|0){R=M;do{for(;g=o,o=n[o>>2]|0,g=n[g+4>>2]|0,!!(O8e(g)|0);)if(n[q>>2]=R,n[L>>2]=n[q>>2],L8e(M,L)|0,!o)break e;if(M8e(g),R=n[R>>2]|0,l=OX(g)|0,m=Oi()|0,B=I,I=I+((1*(l<<2)|0)+15&-16)|0,k=I,I=I+((1*(l<<2)|0)+15&-16)|0,l=n[(yX(g)|0)>>2]|0,l|0)for(u=B,A=k;n[u>>2]=n[(Zy(n[l+4>>2]|0)|0)>>2],n[A>>2]=n[l+8>>2],l=n[l>>2]|0,l;)u=u+4|0,A=A+4|0;Te=Zy(g)|0,l=U8e(g)|0,u=OX(g)|0,A=_8e(g)|0,lc(Te|0,l|0,B|0,k|0,u|0,A|0,kM(g)|0),OA(m|0)}while(o|0)}}while(!1);if(o=n[(QM()|0)>>2]|0,o|0)do Te=o+4|0,M=RM(Te)|0,g=w2(M)|0,m=I2(M)|0,B=(C2(M)|0)+1|0,k=UP(M)|0,R=LX(Te)|0,M=_r(M)|0,L=OP(Te)|0,q=qM(Te)|0,lu(0,g|0,m|0,B|0,k|0,R|0,M|0,L|0,q|0,WM(Te)|0),o=n[o>>2]|0;while(o|0);o=n[(Xy()|0)>>2]|0;e:do if(o|0){t:for(;;){if(l=n[o+4>>2]|0,l|0&&(oe=n[(Zy(l)|0)>>2]|0,Ve=n[(EX(l)|0)>>2]|0,Ve|0)){u=Ve;do{l=u+4|0,A=RM(l)|0;r:do if(A|0)switch(_r(A)|0){case 0:break t;case 4:case 3:case 2:{k=w2(A)|0,R=I2(A)|0,M=(C2(A)|0)+1|0,L=UP(A)|0,q=_r(A)|0,Te=OP(l)|0,lu(oe|0,k|0,R|0,M|0,L|0,0,q|0,Te|0,qM(l)|0,WM(l)|0);break r}case 1:{B=w2(A)|0,k=I2(A)|0,R=(C2(A)|0)+1|0,M=UP(A)|0,L=LX(l)|0,q=_r(A)|0,Te=OP(l)|0,lu(oe|0,B|0,k|0,R|0,M|0,L|0,q|0,Te|0,qM(l)|0,WM(l)|0);break r}case 5:{M=w2(A)|0,L=I2(A)|0,q=(C2(A)|0)+1|0,Te=UP(A)|0,lu(oe|0,M|0,L|0,q|0,Te|0,H8e(A)|0,_r(A)|0,0,0,0);break r}default:break r}while(!1);u=n[u>>2]|0}while(u|0)}if(o=n[o>>2]|0,!o)break e}Nt()}while(!1);we(),I=Le}function F8e(){return 11703}function N8e(o){o=o|0,s[o+40>>0]=0}function O8e(o){return o=o|0,(s[o+40>>0]|0)!=0|0}function L8e(o,l){return o=o|0,l=l|0,l=j8e(l)|0,o=n[l>>2]|0,n[l>>2]=n[o>>2],It(o),n[l>>2]|0}function M8e(o){o=o|0,s[o+40>>0]=1}function OX(o){return o=o|0,n[o+20>>2]|0}function U8e(o){return o=o|0,n[o+8>>2]|0}function _8e(o){return o=o|0,n[o+32>>2]|0}function UP(o){return o=o|0,n[o+4>>2]|0}function LX(o){return o=o|0,n[o+4>>2]|0}function qM(o){return o=o|0,n[o+8>>2]|0}function WM(o){return o=o|0,n[o+16>>2]|0}function H8e(o){return o=o|0,n[o+20>>2]|0}function j8e(o){return o=o|0,n[o>>2]|0}function _P(o){o=o|0;var l=0,u=0,A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0,Ve=0,Le=0,Te=0,nt=0,Ze=0,ft=0,He=0,Ye=0,Mt=0;Mt=I,I=I+16|0,oe=Mt;do if(o>>>0<245){if(M=o>>>0<11?16:o+11&-8,o=M>>>3,q=n[2783]|0,u=q>>>o,u&3|0)return l=(u&1^1)+o|0,o=11172+(l<<1<<2)|0,u=o+8|0,A=n[u>>2]|0,g=A+8|0,m=n[g>>2]|0,(o|0)==(m|0)?n[2783]=q&~(1<>2]=o,n[u>>2]=m),Ye=l<<3,n[A+4>>2]=Ye|3,Ye=A+Ye+4|0,n[Ye>>2]=n[Ye>>2]|1,Ye=g,I=Mt,Ye|0;if(L=n[2785]|0,M>>>0>L>>>0){if(u|0)return l=2<>>12&16,l=l>>>B,u=l>>>5&8,l=l>>>u,g=l>>>2&4,l=l>>>g,o=l>>>1&2,l=l>>>o,A=l>>>1&1,A=(u|B|g|o|A)+(l>>>A)|0,l=11172+(A<<1<<2)|0,o=l+8|0,g=n[o>>2]|0,B=g+8|0,u=n[B>>2]|0,(l|0)==(u|0)?(o=q&~(1<>2]=l,n[o>>2]=u,o=q),m=(A<<3)-M|0,n[g+4>>2]=M|3,A=g+M|0,n[A+4>>2]=m|1,n[A+m>>2]=m,L|0&&(g=n[2788]|0,l=L>>>3,u=11172+(l<<1<<2)|0,l=1<>2]|0):(n[2783]=o|l,l=u,o=u+8|0),n[o>>2]=g,n[l+12>>2]=g,n[g+8>>2]=l,n[g+12>>2]=u),n[2785]=m,n[2788]=A,Ye=B,I=Mt,Ye|0;if(k=n[2784]|0,k){if(u=(k&0-k)+-1|0,B=u>>>12&16,u=u>>>B,m=u>>>5&8,u=u>>>m,R=u>>>2&4,u=u>>>R,A=u>>>1&2,u=u>>>A,o=u>>>1&1,o=n[11436+((m|B|R|A|o)+(u>>>o)<<2)>>2]|0,u=(n[o+4>>2]&-8)-M|0,A=n[o+16+(((n[o+16>>2]|0)==0&1)<<2)>>2]|0,!A)R=o,m=u;else{do B=(n[A+4>>2]&-8)-M|0,R=B>>>0>>0,u=R?B:u,o=R?A:o,A=n[A+16+(((n[A+16>>2]|0)==0&1)<<2)>>2]|0;while(A|0);R=o,m=u}if(B=R+M|0,R>>>0>>0){g=n[R+24>>2]|0,l=n[R+12>>2]|0;do if((l|0)==(R|0)){if(o=R+20|0,l=n[o>>2]|0,!l&&(o=R+16|0,l=n[o>>2]|0,!l)){u=0;break}for(;;){if(u=l+20|0,A=n[u>>2]|0,A|0){l=A,o=u;continue}if(u=l+16|0,A=n[u>>2]|0,A)l=A,o=u;else break}n[o>>2]=0,u=l}else u=n[R+8>>2]|0,n[u+12>>2]=l,n[l+8>>2]=u,u=l;while(!1);do if(g|0){if(l=n[R+28>>2]|0,o=11436+(l<<2)|0,(R|0)==(n[o>>2]|0)){if(n[o>>2]=u,!u){n[2784]=k&~(1<>2]|0)!=(R|0)&1)<<2)>>2]=u,!u)break;n[u+24>>2]=g,l=n[R+16>>2]|0,l|0&&(n[u+16>>2]=l,n[l+24>>2]=u),l=n[R+20>>2]|0,l|0&&(n[u+20>>2]=l,n[l+24>>2]=u)}while(!1);return m>>>0<16?(Ye=m+M|0,n[R+4>>2]=Ye|3,Ye=R+Ye+4|0,n[Ye>>2]=n[Ye>>2]|1):(n[R+4>>2]=M|3,n[B+4>>2]=m|1,n[B+m>>2]=m,L|0&&(A=n[2788]|0,l=L>>>3,u=11172+(l<<1<<2)|0,l=1<>2]|0):(n[2783]=q|l,l=u,o=u+8|0),n[o>>2]=A,n[l+12>>2]=A,n[A+8>>2]=l,n[A+12>>2]=u),n[2785]=m,n[2788]=B),Ye=R+8|0,I=Mt,Ye|0}else q=M}else q=M}else q=M}else if(o>>>0<=4294967231)if(o=o+11|0,M=o&-8,R=n[2784]|0,R){A=0-M|0,o=o>>>8,o?M>>>0>16777215?k=31:(q=(o+1048320|0)>>>16&8,He=o<>>16&4,He=He<>>16&2,k=14-(L|q|k)+(He<>>15)|0,k=M>>>(k+7|0)&1|k<<1):k=0,u=n[11436+(k<<2)>>2]|0;e:do if(!u)u=0,o=0,He=57;else for(o=0,B=M<<((k|0)==31?0:25-(k>>>1)|0),m=0;;){if(g=(n[u+4>>2]&-8)-M|0,g>>>0>>0)if(g)o=u,A=g;else{o=u,A=0,g=u,He=61;break e}if(g=n[u+20>>2]|0,u=n[u+16+(B>>>31<<2)>>2]|0,m=(g|0)==0|(g|0)==(u|0)?m:g,g=(u|0)==0,g){u=m,He=57;break}else B=B<<((g^1)&1)}while(!1);if((He|0)==57){if((u|0)==0&(o|0)==0){if(o=2<>>12&16,q=q>>>B,m=q>>>5&8,q=q>>>m,k=q>>>2&4,q=q>>>k,L=q>>>1&2,q=q>>>L,u=q>>>1&1,o=0,u=n[11436+((m|B|k|L|u)+(q>>>u)<<2)>>2]|0}u?(g=u,He=61):(k=o,B=A)}if((He|0)==61)for(;;)if(He=0,u=(n[g+4>>2]&-8)-M|0,q=u>>>0>>0,u=q?u:A,o=q?g:o,g=n[g+16+(((n[g+16>>2]|0)==0&1)<<2)>>2]|0,g)A=u,He=61;else{k=o,B=u;break}if(k|0&&B>>>0<((n[2785]|0)-M|0)>>>0){if(m=k+M|0,k>>>0>=m>>>0)return Ye=0,I=Mt,Ye|0;g=n[k+24>>2]|0,l=n[k+12>>2]|0;do if((l|0)==(k|0)){if(o=k+20|0,l=n[o>>2]|0,!l&&(o=k+16|0,l=n[o>>2]|0,!l)){l=0;break}for(;;){if(u=l+20|0,A=n[u>>2]|0,A|0){l=A,o=u;continue}if(u=l+16|0,A=n[u>>2]|0,A)l=A,o=u;else break}n[o>>2]=0}else Ye=n[k+8>>2]|0,n[Ye+12>>2]=l,n[l+8>>2]=Ye;while(!1);do if(g){if(o=n[k+28>>2]|0,u=11436+(o<<2)|0,(k|0)==(n[u>>2]|0)){if(n[u>>2]=l,!l){A=R&~(1<>2]|0)!=(k|0)&1)<<2)>>2]=l,!l){A=R;break}n[l+24>>2]=g,o=n[k+16>>2]|0,o|0&&(n[l+16>>2]=o,n[o+24>>2]=l),o=n[k+20>>2]|0,o&&(n[l+20>>2]=o,n[o+24>>2]=l),A=R}else A=R;while(!1);do if(B>>>0>=16){if(n[k+4>>2]=M|3,n[m+4>>2]=B|1,n[m+B>>2]=B,l=B>>>3,B>>>0<256){u=11172+(l<<1<<2)|0,o=n[2783]|0,l=1<>2]|0):(n[2783]=o|l,l=u,o=u+8|0),n[o>>2]=m,n[l+12>>2]=m,n[m+8>>2]=l,n[m+12>>2]=u;break}if(l=B>>>8,l?B>>>0>16777215?l=31:(He=(l+1048320|0)>>>16&8,Ye=l<>>16&4,Ye=Ye<>>16&2,l=14-(ft|He|l)+(Ye<>>15)|0,l=B>>>(l+7|0)&1|l<<1):l=0,u=11436+(l<<2)|0,n[m+28>>2]=l,o=m+16|0,n[o+4>>2]=0,n[o>>2]=0,o=1<>2]=m,n[m+24>>2]=u,n[m+12>>2]=m,n[m+8>>2]=m;break}for(o=B<<((l|0)==31?0:25-(l>>>1)|0),u=n[u>>2]|0;;){if((n[u+4>>2]&-8|0)==(B|0)){He=97;break}if(A=u+16+(o>>>31<<2)|0,l=n[A>>2]|0,l)o=o<<1,u=l;else{He=96;break}}if((He|0)==96){n[A>>2]=m,n[m+24>>2]=u,n[m+12>>2]=m,n[m+8>>2]=m;break}else if((He|0)==97){He=u+8|0,Ye=n[He>>2]|0,n[Ye+12>>2]=m,n[He>>2]=m,n[m+8>>2]=Ye,n[m+12>>2]=u,n[m+24>>2]=0;break}}else Ye=B+M|0,n[k+4>>2]=Ye|3,Ye=k+Ye+4|0,n[Ye>>2]=n[Ye>>2]|1;while(!1);return Ye=k+8|0,I=Mt,Ye|0}else q=M}else q=M;else q=-1;while(!1);if(u=n[2785]|0,u>>>0>=q>>>0)return l=u-q|0,o=n[2788]|0,l>>>0>15?(Ye=o+q|0,n[2788]=Ye,n[2785]=l,n[Ye+4>>2]=l|1,n[Ye+l>>2]=l,n[o+4>>2]=q|3):(n[2785]=0,n[2788]=0,n[o+4>>2]=u|3,Ye=o+u+4|0,n[Ye>>2]=n[Ye>>2]|1),Ye=o+8|0,I=Mt,Ye|0;if(B=n[2786]|0,B>>>0>q>>>0)return ft=B-q|0,n[2786]=ft,Ye=n[2789]|0,He=Ye+q|0,n[2789]=He,n[He+4>>2]=ft|1,n[Ye+4>>2]=q|3,Ye=Ye+8|0,I=Mt,Ye|0;if(n[2901]|0?o=n[2903]|0:(n[2903]=4096,n[2902]=4096,n[2904]=-1,n[2905]=-1,n[2906]=0,n[2894]=0,o=oe&-16^1431655768,n[oe>>2]=o,n[2901]=o,o=4096),k=q+48|0,R=q+47|0,m=o+R|0,g=0-o|0,M=m&g,M>>>0<=q>>>0||(o=n[2893]|0,o|0&&(L=n[2891]|0,oe=L+M|0,oe>>>0<=L>>>0|oe>>>0>o>>>0)))return Ye=0,I=Mt,Ye|0;e:do if(n[2894]&4)l=0,He=133;else{u=n[2789]|0;t:do if(u){for(A=11580;o=n[A>>2]|0,!(o>>>0<=u>>>0&&(Te=A+4|0,(o+(n[Te>>2]|0)|0)>>>0>u>>>0));)if(o=n[A+8>>2]|0,o)A=o;else{He=118;break t}if(l=m-B&g,l>>>0<2147483647)if(o=Gh(l|0)|0,(o|0)==((n[A>>2]|0)+(n[Te>>2]|0)|0)){if((o|0)!=-1){B=l,m=o,He=135;break e}}else A=o,He=126;else l=0}else He=118;while(!1);do if((He|0)==118)if(u=Gh(0)|0,(u|0)!=-1&&(l=u,Ve=n[2902]|0,Le=Ve+-1|0,l=(Le&l|0?(Le+l&0-Ve)-l|0:0)+M|0,Ve=n[2891]|0,Le=l+Ve|0,l>>>0>q>>>0&l>>>0<2147483647)){if(Te=n[2893]|0,Te|0&&Le>>>0<=Ve>>>0|Le>>>0>Te>>>0){l=0;break}if(o=Gh(l|0)|0,(o|0)==(u|0)){B=l,m=u,He=135;break e}else A=o,He=126}else l=0;while(!1);do if((He|0)==126){if(u=0-l|0,!(k>>>0>l>>>0&(l>>>0<2147483647&(A|0)!=-1)))if((A|0)==-1){l=0;break}else{B=l,m=A,He=135;break e}if(o=n[2903]|0,o=R-l+o&0-o,o>>>0>=2147483647){B=l,m=A,He=135;break e}if((Gh(o|0)|0)==-1){Gh(u|0)|0,l=0;break}else{B=o+l|0,m=A,He=135;break e}}while(!1);n[2894]=n[2894]|4,He=133}while(!1);if((He|0)==133&&M>>>0<2147483647&&(ft=Gh(M|0)|0,Te=Gh(0)|0,nt=Te-ft|0,Ze=nt>>>0>(q+40|0)>>>0,!((ft|0)==-1|Ze^1|ft>>>0>>0&((ft|0)!=-1&(Te|0)!=-1)^1))&&(B=Ze?nt:l,m=ft,He=135),(He|0)==135){l=(n[2891]|0)+B|0,n[2891]=l,l>>>0>(n[2892]|0)>>>0&&(n[2892]=l),R=n[2789]|0;do if(R){for(l=11580;;){if(o=n[l>>2]|0,u=l+4|0,A=n[u>>2]|0,(m|0)==(o+A|0)){He=145;break}if(g=n[l+8>>2]|0,g)l=g;else break}if((He|0)==145&&!(n[l+12>>2]&8|0)&&R>>>0>>0&R>>>0>=o>>>0){n[u>>2]=A+B,Ye=R+8|0,Ye=Ye&7|0?0-Ye&7:0,He=R+Ye|0,Ye=(n[2786]|0)+(B-Ye)|0,n[2789]=He,n[2786]=Ye,n[He+4>>2]=Ye|1,n[He+Ye+4>>2]=40,n[2790]=n[2905];break}for(m>>>0<(n[2787]|0)>>>0&&(n[2787]=m),u=m+B|0,l=11580;;){if((n[l>>2]|0)==(u|0)){He=153;break}if(o=n[l+8>>2]|0,o)l=o;else break}if((He|0)==153&&!(n[l+12>>2]&8|0)){n[l>>2]=m,L=l+4|0,n[L>>2]=(n[L>>2]|0)+B,L=m+8|0,L=m+(L&7|0?0-L&7:0)|0,l=u+8|0,l=u+(l&7|0?0-l&7:0)|0,M=L+q|0,k=l-L-q|0,n[L+4>>2]=q|3;do if((l|0)!=(R|0)){if((l|0)==(n[2788]|0)){Ye=(n[2785]|0)+k|0,n[2785]=Ye,n[2788]=M,n[M+4>>2]=Ye|1,n[M+Ye>>2]=Ye;break}if(o=n[l+4>>2]|0,(o&3|0)==1){B=o&-8,A=o>>>3;e:do if(o>>>0<256)if(o=n[l+8>>2]|0,u=n[l+12>>2]|0,(u|0)==(o|0)){n[2783]=n[2783]&~(1<>2]=u,n[u+8>>2]=o;break}else{m=n[l+24>>2]|0,o=n[l+12>>2]|0;do if((o|0)==(l|0)){if(A=l+16|0,u=A+4|0,o=n[u>>2]|0,!o)if(o=n[A>>2]|0,o)u=A;else{o=0;break}for(;;){if(A=o+20|0,g=n[A>>2]|0,g|0){o=g,u=A;continue}if(A=o+16|0,g=n[A>>2]|0,g)o=g,u=A;else break}n[u>>2]=0}else Ye=n[l+8>>2]|0,n[Ye+12>>2]=o,n[o+8>>2]=Ye;while(!1);if(!m)break;u=n[l+28>>2]|0,A=11436+(u<<2)|0;do if((l|0)!=(n[A>>2]|0)){if(n[m+16+(((n[m+16>>2]|0)!=(l|0)&1)<<2)>>2]=o,!o)break e}else{if(n[A>>2]=o,o|0)break;n[2784]=n[2784]&~(1<>2]=m,u=l+16|0,A=n[u>>2]|0,A|0&&(n[o+16>>2]=A,n[A+24>>2]=o),u=n[u+4>>2]|0,!u)break;n[o+20>>2]=u,n[u+24>>2]=o}while(!1);l=l+B|0,g=B+k|0}else g=k;if(l=l+4|0,n[l>>2]=n[l>>2]&-2,n[M+4>>2]=g|1,n[M+g>>2]=g,l=g>>>3,g>>>0<256){u=11172+(l<<1<<2)|0,o=n[2783]|0,l=1<>2]|0):(n[2783]=o|l,l=u,o=u+8|0),n[o>>2]=M,n[l+12>>2]=M,n[M+8>>2]=l,n[M+12>>2]=u;break}l=g>>>8;do if(!l)l=0;else{if(g>>>0>16777215){l=31;break}He=(l+1048320|0)>>>16&8,Ye=l<>>16&4,Ye=Ye<>>16&2,l=14-(ft|He|l)+(Ye<>>15)|0,l=g>>>(l+7|0)&1|l<<1}while(!1);if(A=11436+(l<<2)|0,n[M+28>>2]=l,o=M+16|0,n[o+4>>2]=0,n[o>>2]=0,o=n[2784]|0,u=1<>2]=M,n[M+24>>2]=A,n[M+12>>2]=M,n[M+8>>2]=M;break}for(o=g<<((l|0)==31?0:25-(l>>>1)|0),u=n[A>>2]|0;;){if((n[u+4>>2]&-8|0)==(g|0)){He=194;break}if(A=u+16+(o>>>31<<2)|0,l=n[A>>2]|0,l)o=o<<1,u=l;else{He=193;break}}if((He|0)==193){n[A>>2]=M,n[M+24>>2]=u,n[M+12>>2]=M,n[M+8>>2]=M;break}else if((He|0)==194){He=u+8|0,Ye=n[He>>2]|0,n[Ye+12>>2]=M,n[He>>2]=M,n[M+8>>2]=Ye,n[M+12>>2]=u,n[M+24>>2]=0;break}}else Ye=(n[2786]|0)+k|0,n[2786]=Ye,n[2789]=M,n[M+4>>2]=Ye|1;while(!1);return Ye=L+8|0,I=Mt,Ye|0}for(l=11580;o=n[l>>2]|0,!(o>>>0<=R>>>0&&(Ye=o+(n[l+4>>2]|0)|0,Ye>>>0>R>>>0));)l=n[l+8>>2]|0;g=Ye+-47|0,o=g+8|0,o=g+(o&7|0?0-o&7:0)|0,g=R+16|0,o=o>>>0>>0?R:o,l=o+8|0,u=m+8|0,u=u&7|0?0-u&7:0,He=m+u|0,u=B+-40-u|0,n[2789]=He,n[2786]=u,n[He+4>>2]=u|1,n[He+u+4>>2]=40,n[2790]=n[2905],u=o+4|0,n[u>>2]=27,n[l>>2]=n[2895],n[l+4>>2]=n[2896],n[l+8>>2]=n[2897],n[l+12>>2]=n[2898],n[2895]=m,n[2896]=B,n[2898]=0,n[2897]=l,l=o+24|0;do He=l,l=l+4|0,n[l>>2]=7;while((He+8|0)>>>0>>0);if((o|0)!=(R|0)){if(m=o-R|0,n[u>>2]=n[u>>2]&-2,n[R+4>>2]=m|1,n[o>>2]=m,l=m>>>3,m>>>0<256){u=11172+(l<<1<<2)|0,o=n[2783]|0,l=1<>2]|0):(n[2783]=o|l,l=u,o=u+8|0),n[o>>2]=R,n[l+12>>2]=R,n[R+8>>2]=l,n[R+12>>2]=u;break}if(l=m>>>8,l?m>>>0>16777215?u=31:(He=(l+1048320|0)>>>16&8,Ye=l<>>16&4,Ye=Ye<>>16&2,u=14-(ft|He|u)+(Ye<>>15)|0,u=m>>>(u+7|0)&1|u<<1):u=0,A=11436+(u<<2)|0,n[R+28>>2]=u,n[R+20>>2]=0,n[g>>2]=0,l=n[2784]|0,o=1<>2]=R,n[R+24>>2]=A,n[R+12>>2]=R,n[R+8>>2]=R;break}for(o=m<<((u|0)==31?0:25-(u>>>1)|0),u=n[A>>2]|0;;){if((n[u+4>>2]&-8|0)==(m|0)){He=216;break}if(A=u+16+(o>>>31<<2)|0,l=n[A>>2]|0,l)o=o<<1,u=l;else{He=215;break}}if((He|0)==215){n[A>>2]=R,n[R+24>>2]=u,n[R+12>>2]=R,n[R+8>>2]=R;break}else if((He|0)==216){He=u+8|0,Ye=n[He>>2]|0,n[Ye+12>>2]=R,n[He>>2]=R,n[R+8>>2]=Ye,n[R+12>>2]=u,n[R+24>>2]=0;break}}}else{Ye=n[2787]|0,(Ye|0)==0|m>>>0>>0&&(n[2787]=m),n[2895]=m,n[2896]=B,n[2898]=0,n[2792]=n[2901],n[2791]=-1,l=0;do Ye=11172+(l<<1<<2)|0,n[Ye+12>>2]=Ye,n[Ye+8>>2]=Ye,l=l+1|0;while((l|0)!=32);Ye=m+8|0,Ye=Ye&7|0?0-Ye&7:0,He=m+Ye|0,Ye=B+-40-Ye|0,n[2789]=He,n[2786]=Ye,n[He+4>>2]=Ye|1,n[He+Ye+4>>2]=40,n[2790]=n[2905]}while(!1);if(l=n[2786]|0,l>>>0>q>>>0)return ft=l-q|0,n[2786]=ft,Ye=n[2789]|0,He=Ye+q|0,n[2789]=He,n[He+4>>2]=ft|1,n[Ye+4>>2]=q|3,Ye=Ye+8|0,I=Mt,Ye|0}return n[(eE()|0)>>2]=12,Ye=0,I=Mt,Ye|0}function HP(o){o=o|0;var l=0,u=0,A=0,g=0,m=0,B=0,k=0,R=0;if(o){u=o+-8|0,g=n[2787]|0,o=n[o+-4>>2]|0,l=o&-8,R=u+l|0;do if(o&1)k=u,B=u;else{if(A=n[u>>2]|0,!(o&3)||(B=u+(0-A)|0,m=A+l|0,B>>>0>>0))return;if((B|0)==(n[2788]|0)){if(o=R+4|0,l=n[o>>2]|0,(l&3|0)!=3){k=B,l=m;break}n[2785]=m,n[o>>2]=l&-2,n[B+4>>2]=m|1,n[B+m>>2]=m;return}if(u=A>>>3,A>>>0<256)if(o=n[B+8>>2]|0,l=n[B+12>>2]|0,(l|0)==(o|0)){n[2783]=n[2783]&~(1<>2]=l,n[l+8>>2]=o,k=B,l=m;break}g=n[B+24>>2]|0,o=n[B+12>>2]|0;do if((o|0)==(B|0)){if(u=B+16|0,l=u+4|0,o=n[l>>2]|0,!o)if(o=n[u>>2]|0,o)l=u;else{o=0;break}for(;;){if(u=o+20|0,A=n[u>>2]|0,A|0){o=A,l=u;continue}if(u=o+16|0,A=n[u>>2]|0,A)o=A,l=u;else break}n[l>>2]=0}else k=n[B+8>>2]|0,n[k+12>>2]=o,n[o+8>>2]=k;while(!1);if(g){if(l=n[B+28>>2]|0,u=11436+(l<<2)|0,(B|0)==(n[u>>2]|0)){if(n[u>>2]=o,!o){n[2784]=n[2784]&~(1<>2]|0)!=(B|0)&1)<<2)>>2]=o,!o){k=B,l=m;break}n[o+24>>2]=g,l=B+16|0,u=n[l>>2]|0,u|0&&(n[o+16>>2]=u,n[u+24>>2]=o),l=n[l+4>>2]|0,l?(n[o+20>>2]=l,n[l+24>>2]=o,k=B,l=m):(k=B,l=m)}else k=B,l=m}while(!1);if(!(B>>>0>=R>>>0)&&(o=R+4|0,A=n[o>>2]|0,!!(A&1))){if(A&2)n[o>>2]=A&-2,n[k+4>>2]=l|1,n[B+l>>2]=l,g=l;else{if(o=n[2788]|0,(R|0)==(n[2789]|0)){if(R=(n[2786]|0)+l|0,n[2786]=R,n[2789]=k,n[k+4>>2]=R|1,(k|0)!=(o|0))return;n[2788]=0,n[2785]=0;return}if((R|0)==(o|0)){R=(n[2785]|0)+l|0,n[2785]=R,n[2788]=B,n[k+4>>2]=R|1,n[B+R>>2]=R;return}g=(A&-8)+l|0,u=A>>>3;do if(A>>>0<256)if(l=n[R+8>>2]|0,o=n[R+12>>2]|0,(o|0)==(l|0)){n[2783]=n[2783]&~(1<>2]=o,n[o+8>>2]=l;break}else{m=n[R+24>>2]|0,o=n[R+12>>2]|0;do if((o|0)==(R|0)){if(u=R+16|0,l=u+4|0,o=n[l>>2]|0,!o)if(o=n[u>>2]|0,o)l=u;else{u=0;break}for(;;){if(u=o+20|0,A=n[u>>2]|0,A|0){o=A,l=u;continue}if(u=o+16|0,A=n[u>>2]|0,A)o=A,l=u;else break}n[l>>2]=0,u=o}else u=n[R+8>>2]|0,n[u+12>>2]=o,n[o+8>>2]=u,u=o;while(!1);if(m|0){if(o=n[R+28>>2]|0,l=11436+(o<<2)|0,(R|0)==(n[l>>2]|0)){if(n[l>>2]=u,!u){n[2784]=n[2784]&~(1<>2]|0)!=(R|0)&1)<<2)>>2]=u,!u)break;n[u+24>>2]=m,o=R+16|0,l=n[o>>2]|0,l|0&&(n[u+16>>2]=l,n[l+24>>2]=u),o=n[o+4>>2]|0,o|0&&(n[u+20>>2]=o,n[o+24>>2]=u)}}while(!1);if(n[k+4>>2]=g|1,n[B+g>>2]=g,(k|0)==(n[2788]|0)){n[2785]=g;return}}if(o=g>>>3,g>>>0<256){u=11172+(o<<1<<2)|0,l=n[2783]|0,o=1<>2]|0):(n[2783]=l|o,o=u,l=u+8|0),n[l>>2]=k,n[o+12>>2]=k,n[k+8>>2]=o,n[k+12>>2]=u;return}o=g>>>8,o?g>>>0>16777215?o=31:(B=(o+1048320|0)>>>16&8,R=o<>>16&4,R=R<>>16&2,o=14-(m|B|o)+(R<>>15)|0,o=g>>>(o+7|0)&1|o<<1):o=0,A=11436+(o<<2)|0,n[k+28>>2]=o,n[k+20>>2]=0,n[k+16>>2]=0,l=n[2784]|0,u=1<>>1)|0),u=n[A>>2]|0;;){if((n[u+4>>2]&-8|0)==(g|0)){o=73;break}if(A=u+16+(l>>>31<<2)|0,o=n[A>>2]|0,o)l=l<<1,u=o;else{o=72;break}}if((o|0)==72){n[A>>2]=k,n[k+24>>2]=u,n[k+12>>2]=k,n[k+8>>2]=k;break}else if((o|0)==73){B=u+8|0,R=n[B>>2]|0,n[R+12>>2]=k,n[B>>2]=k,n[k+8>>2]=R,n[k+12>>2]=u,n[k+24>>2]=0;break}}else n[2784]=l|u,n[A>>2]=k,n[k+24>>2]=A,n[k+12>>2]=k,n[k+8>>2]=k;while(!1);if(R=(n[2791]|0)+-1|0,n[2791]=R,!R)o=11588;else return;for(;o=n[o>>2]|0,o;)o=o+8|0;n[2791]=-1}}}function G8e(){return 11628}function q8e(o){o=o|0;var l=0,u=0;return l=I,I=I+16|0,u=l,n[u>>2]=V8e(n[o+60>>2]|0)|0,o=jP(uu(6,u|0)|0)|0,I=l,o|0}function MX(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0,Ve=0;q=I,I=I+48|0,M=q+16|0,m=q,g=q+32|0,k=o+28|0,A=n[k>>2]|0,n[g>>2]=A,R=o+20|0,A=(n[R>>2]|0)-A|0,n[g+4>>2]=A,n[g+8>>2]=l,n[g+12>>2]=u,A=A+u|0,B=o+60|0,n[m>>2]=n[B>>2],n[m+4>>2]=g,n[m+8>>2]=2,m=jP(Ya(146,m|0)|0)|0;e:do if((A|0)!=(m|0)){for(l=2;!((m|0)<0);)if(A=A-m|0,Ve=n[g+4>>2]|0,oe=m>>>0>Ve>>>0,g=oe?g+8|0:g,l=(oe<<31>>31)+l|0,Ve=m-(oe?Ve:0)|0,n[g>>2]=(n[g>>2]|0)+Ve,oe=g+4|0,n[oe>>2]=(n[oe>>2]|0)-Ve,n[M>>2]=n[B>>2],n[M+4>>2]=g,n[M+8>>2]=l,m=jP(Ya(146,M|0)|0)|0,(A|0)==(m|0)){L=3;break e}n[o+16>>2]=0,n[k>>2]=0,n[R>>2]=0,n[o>>2]=n[o>>2]|32,(l|0)==2?u=0:u=u-(n[g+4>>2]|0)|0}else L=3;while(!1);return(L|0)==3&&(Ve=n[o+44>>2]|0,n[o+16>>2]=Ve+(n[o+48>>2]|0),n[k>>2]=Ve,n[R>>2]=Ve),I=q,u|0}function W8e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0;return g=I,I=I+32|0,m=g,A=g+20|0,n[m>>2]=n[o+60>>2],n[m+4>>2]=0,n[m+8>>2]=l,n[m+12>>2]=A,n[m+16>>2]=u,(jP(Wa(140,m|0)|0)|0)<0?(n[A>>2]=-1,o=-1):o=n[A>>2]|0,I=g,o|0}function jP(o){return o=o|0,o>>>0>4294963200&&(n[(eE()|0)>>2]=0-o,o=-1),o|0}function eE(){return(Y8e()|0)+64|0}function Y8e(){return YM()|0}function YM(){return 2084}function V8e(o){return o=o|0,o|0}function J8e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0;return g=I,I=I+32|0,A=g,n[o+36>>2]=1,!(n[o>>2]&64|0)&&(n[A>>2]=n[o+60>>2],n[A+4>>2]=21523,n[A+8>>2]=g+16,co(54,A|0)|0)&&(s[o+75>>0]=-1),A=MX(o,l,u)|0,I=g,A|0}function UX(o,l){o=o|0,l=l|0;var u=0,A=0;if(u=s[o>>0]|0,A=s[l>>0]|0,!(u<<24>>24)||u<<24>>24!=A<<24>>24)o=A;else{do o=o+1|0,l=l+1|0,u=s[o>>0]|0,A=s[l>>0]|0;while(!(!(u<<24>>24)||u<<24>>24!=A<<24>>24));o=A}return(u&255)-(o&255)|0}function K8e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0;e:do if(!u)o=0;else{for(;A=s[o>>0]|0,g=s[l>>0]|0,A<<24>>24==g<<24>>24;)if(u=u+-1|0,u)o=o+1|0,l=l+1|0;else{o=0;break e}o=(A&255)-(g&255)|0}while(!1);return o|0}function _X(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0,Ve=0,Le=0,Te=0;Te=I,I=I+224|0,L=Te+120|0,q=Te+80|0,Ve=Te,Le=Te+136|0,A=q,g=A+40|0;do n[A>>2]=0,A=A+4|0;while((A|0)<(g|0));return n[L>>2]=n[u>>2],(VM(0,l,L,Ve,q)|0)<0?u=-1:((n[o+76>>2]|0)>-1?oe=z8e(o)|0:oe=0,u=n[o>>2]|0,M=u&32,(s[o+74>>0]|0)<1&&(n[o>>2]=u&-33),A=o+48|0,n[A>>2]|0?u=VM(o,l,L,Ve,q)|0:(g=o+44|0,m=n[g>>2]|0,n[g>>2]=Le,B=o+28|0,n[B>>2]=Le,k=o+20|0,n[k>>2]=Le,n[A>>2]=80,R=o+16|0,n[R>>2]=Le+80,u=VM(o,l,L,Ve,q)|0,m&&(YP[n[o+36>>2]&7](o,0,0)|0,u=n[k>>2]|0?u:-1,n[g>>2]=m,n[A>>2]=0,n[R>>2]=0,n[B>>2]=0,n[k>>2]=0)),A=n[o>>2]|0,n[o>>2]=A|M,oe|0&&X8e(o),u=A&32|0?-1:u),I=Te,u|0}function VM(o,l,u,A,g){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0;var m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0,Ve=0,Le=0,Te=0,nt=0,Ze=0,ft=0,He=0,Ye=0,Mt=0,Gr=0,fr=0,$t=0,Tr=0,Hr=0,cr=0;cr=I,I=I+64|0,fr=cr+16|0,$t=cr,Mt=cr+24|0,Tr=cr+8|0,Hr=cr+20|0,n[fr>>2]=l,ft=(o|0)!=0,He=Mt+40|0,Ye=He,Mt=Mt+39|0,Gr=Tr+4|0,B=0,m=0,L=0;e:for(;;){do if((m|0)>-1)if((B|0)>(2147483647-m|0)){n[(eE()|0)>>2]=75,m=-1;break}else{m=B+m|0;break}while(!1);if(B=s[l>>0]|0,B<<24>>24)k=l;else{Ze=87;break}t:for(;;){switch(B<<24>>24){case 37:{B=k,Ze=9;break t}case 0:{B=k;break t}default:}nt=k+1|0,n[fr>>2]=nt,B=s[nt>>0]|0,k=nt}t:do if((Ze|0)==9)for(;;){if(Ze=0,(s[k+1>>0]|0)!=37)break t;if(B=B+1|0,k=k+2|0,n[fr>>2]=k,(s[k>>0]|0)==37)Ze=9;else break}while(!1);if(B=B-l|0,ft&&bs(o,l,B),B|0){l=k;continue}R=k+1|0,B=(s[R>>0]|0)+-48|0,B>>>0<10?(nt=(s[k+2>>0]|0)==36,Te=nt?B:-1,L=nt?1:L,R=nt?k+3|0:R):Te=-1,n[fr>>2]=R,B=s[R>>0]|0,k=(B<<24>>24)+-32|0;t:do if(k>>>0<32)for(M=0,q=B;;){if(B=1<>2]=R,B=s[R>>0]|0,k=(B<<24>>24)+-32|0,k>>>0>=32)break;q=B}else M=0;while(!1);if(B<<24>>24==42){if(k=R+1|0,B=(s[k>>0]|0)+-48|0,B>>>0<10&&(s[R+2>>0]|0)==36)n[g+(B<<2)>>2]=10,B=n[A+((s[k>>0]|0)+-48<<3)>>2]|0,L=1,R=R+3|0;else{if(L|0){m=-1;break}ft?(L=(n[u>>2]|0)+3&-4,B=n[L>>2]|0,n[u>>2]=L+4,L=0,R=k):(B=0,L=0,R=k)}n[fr>>2]=R,nt=(B|0)<0,B=nt?0-B|0:B,M=nt?M|8192:M}else{if(B=HX(fr)|0,(B|0)<0){m=-1;break}R=n[fr>>2]|0}do if((s[R>>0]|0)==46){if((s[R+1>>0]|0)!=42){n[fr>>2]=R+1,k=HX(fr)|0,R=n[fr>>2]|0;break}if(q=R+2|0,k=(s[q>>0]|0)+-48|0,k>>>0<10&&(s[R+3>>0]|0)==36){n[g+(k<<2)>>2]=10,k=n[A+((s[q>>0]|0)+-48<<3)>>2]|0,R=R+4|0,n[fr>>2]=R;break}if(L|0){m=-1;break e}ft?(nt=(n[u>>2]|0)+3&-4,k=n[nt>>2]|0,n[u>>2]=nt+4):k=0,n[fr>>2]=q,R=q}else k=-1;while(!1);for(Le=0;;){if(((s[R>>0]|0)+-65|0)>>>0>57){m=-1;break e}if(nt=R+1|0,n[fr>>2]=nt,q=s[(s[R>>0]|0)+-65+(5178+(Le*58|0))>>0]|0,oe=q&255,(oe+-1|0)>>>0<8)Le=oe,R=nt;else break}if(!(q<<24>>24)){m=-1;break}Ve=(Te|0)>-1;do if(q<<24>>24==19)if(Ve){m=-1;break e}else Ze=49;else{if(Ve){n[g+(Te<<2)>>2]=oe,Ve=A+(Te<<3)|0,Te=n[Ve+4>>2]|0,Ze=$t,n[Ze>>2]=n[Ve>>2],n[Ze+4>>2]=Te,Ze=49;break}if(!ft){m=0;break e}jX($t,oe,u)}while(!1);if((Ze|0)==49&&(Ze=0,!ft)){B=0,l=nt;continue}R=s[R>>0]|0,R=(Le|0)!=0&(R&15|0)==3?R&-33:R,Ve=M&-65537,Te=M&8192|0?Ve:M;t:do switch(R|0){case 110:switch((Le&255)<<24>>24){case 0:{n[n[$t>>2]>>2]=m,B=0,l=nt;continue e}case 1:{n[n[$t>>2]>>2]=m,B=0,l=nt;continue e}case 2:{B=n[$t>>2]|0,n[B>>2]=m,n[B+4>>2]=((m|0)<0)<<31>>31,B=0,l=nt;continue e}case 3:{a[n[$t>>2]>>1]=m,B=0,l=nt;continue e}case 4:{s[n[$t>>2]>>0]=m,B=0,l=nt;continue e}case 6:{n[n[$t>>2]>>2]=m,B=0,l=nt;continue e}case 7:{B=n[$t>>2]|0,n[B>>2]=m,n[B+4>>2]=((m|0)<0)<<31>>31,B=0,l=nt;continue e}default:{B=0,l=nt;continue e}}case 112:{R=120,k=k>>>0>8?k:8,l=Te|8,Ze=61;break}case 88:case 120:{l=Te,Ze=61;break}case 111:{R=$t,l=n[R>>2]|0,R=n[R+4>>2]|0,oe=$8e(l,R,He)|0,Ve=Ye-oe|0,M=0,q=5642,k=(Te&8|0)==0|(k|0)>(Ve|0)?k:Ve+1|0,Ve=Te,Ze=67;break}case 105:case 100:if(R=$t,l=n[R>>2]|0,R=n[R+4>>2]|0,(R|0)<0){l=GP(0,0,l|0,R|0)|0,R=Be,M=$t,n[M>>2]=l,n[M+4>>2]=R,M=1,q=5642,Ze=66;break t}else{M=(Te&2049|0)!=0&1,q=Te&2048|0?5643:Te&1|0?5644:5642,Ze=66;break t}case 117:{R=$t,M=0,q=5642,l=n[R>>2]|0,R=n[R+4>>2]|0,Ze=66;break}case 99:{s[Mt>>0]=n[$t>>2],l=Mt,M=0,q=5642,oe=He,R=1,k=Ve;break}case 109:{R=eHe(n[(eE()|0)>>2]|0)|0,Ze=71;break}case 115:{R=n[$t>>2]|0,R=R|0?R:5652,Ze=71;break}case 67:{n[Tr>>2]=n[$t>>2],n[Gr>>2]=0,n[$t>>2]=Tr,oe=-1,R=Tr,Ze=75;break}case 83:{l=n[$t>>2]|0,k?(oe=k,R=l,Ze=75):(_s(o,32,B,0,Te),l=0,Ze=84);break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{B=rHe(o,+E[$t>>3],B,k,Te,R)|0,l=nt;continue e}default:M=0,q=5642,oe=He,R=k,k=Te}while(!1);t:do if((Ze|0)==61)Te=$t,Le=n[Te>>2]|0,Te=n[Te+4>>2]|0,oe=Z8e(Le,Te,He,R&32)|0,q=(l&8|0)==0|(Le|0)==0&(Te|0)==0,M=q?0:2,q=q?5642:5642+(R>>4)|0,Ve=l,l=Le,R=Te,Ze=67;else if((Ze|0)==66)oe=tE(l,R,He)|0,Ve=Te,Ze=67;else if((Ze|0)==71)Ze=0,Te=tHe(R,0,k)|0,Le=(Te|0)==0,l=R,M=0,q=5642,oe=Le?R+k|0:Te,R=Le?k:Te-R|0,k=Ve;else if((Ze|0)==75){for(Ze=0,q=R,l=0,k=0;M=n[q>>2]|0,!(!M||(k=GX(Hr,M)|0,(k|0)<0|k>>>0>(oe-l|0)>>>0));)if(l=k+l|0,oe>>>0>l>>>0)q=q+4|0;else break;if((k|0)<0){m=-1;break e}if(_s(o,32,B,l,Te),!l)l=0,Ze=84;else for(M=0;;){if(k=n[R>>2]|0,!k){Ze=84;break t}if(k=GX(Hr,k)|0,M=k+M|0,(M|0)>(l|0)){Ze=84;break t}if(bs(o,Hr,k),M>>>0>=l>>>0){Ze=84;break}else R=R+4|0}}while(!1);if((Ze|0)==67)Ze=0,R=(l|0)!=0|(R|0)!=0,Te=(k|0)!=0|R,R=((R^1)&1)+(Ye-oe)|0,l=Te?oe:He,oe=He,R=Te?(k|0)>(R|0)?k:R:k,k=(k|0)>-1?Ve&-65537:Ve;else if((Ze|0)==84){Ze=0,_s(o,32,B,l,Te^8192),B=(B|0)>(l|0)?B:l,l=nt;continue}Le=oe-l|0,Ve=(R|0)<(Le|0)?Le:R,Te=Ve+M|0,B=(B|0)<(Te|0)?Te:B,_s(o,32,B,Te,k),bs(o,q,M),_s(o,48,B,Te,k^65536),_s(o,48,Ve,Le,0),bs(o,l,Le),_s(o,32,B,Te,k^8192),l=nt}e:do if((Ze|0)==87&&!o)if(!L)m=0;else{for(m=1;l=n[g+(m<<2)>>2]|0,!!l;)if(jX(A+(m<<3)|0,l,u),m=m+1|0,(m|0)>=10){m=1;break e}for(;;){if(n[g+(m<<2)>>2]|0){m=-1;break e}if(m=m+1|0,(m|0)>=10){m=1;break}}}while(!1);return I=cr,m|0}function z8e(o){return o=o|0,0}function X8e(o){o=o|0}function bs(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]&32||fHe(l,u,o)|0}function HX(o){o=o|0;var l=0,u=0,A=0;if(u=n[o>>2]|0,A=(s[u>>0]|0)+-48|0,A>>>0<10){l=0;do l=A+(l*10|0)|0,u=u+1|0,n[o>>2]=u,A=(s[u>>0]|0)+-48|0;while(A>>>0<10)}else l=0;return l|0}function jX(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0;e:do if(l>>>0<=20)do switch(l|0){case 9:{A=(n[u>>2]|0)+3&-4,l=n[A>>2]|0,n[u>>2]=A+4,n[o>>2]=l;break e}case 10:{A=(n[u>>2]|0)+3&-4,l=n[A>>2]|0,n[u>>2]=A+4,A=o,n[A>>2]=l,n[A+4>>2]=((l|0)<0)<<31>>31;break e}case 11:{A=(n[u>>2]|0)+3&-4,l=n[A>>2]|0,n[u>>2]=A+4,A=o,n[A>>2]=l,n[A+4>>2]=0;break e}case 12:{A=(n[u>>2]|0)+7&-8,l=A,g=n[l>>2]|0,l=n[l+4>>2]|0,n[u>>2]=A+8,A=o,n[A>>2]=g,n[A+4>>2]=l;break e}case 13:{g=(n[u>>2]|0)+3&-4,A=n[g>>2]|0,n[u>>2]=g+4,A=(A&65535)<<16>>16,g=o,n[g>>2]=A,n[g+4>>2]=((A|0)<0)<<31>>31;break e}case 14:{g=(n[u>>2]|0)+3&-4,A=n[g>>2]|0,n[u>>2]=g+4,g=o,n[g>>2]=A&65535,n[g+4>>2]=0;break e}case 15:{g=(n[u>>2]|0)+3&-4,A=n[g>>2]|0,n[u>>2]=g+4,A=(A&255)<<24>>24,g=o,n[g>>2]=A,n[g+4>>2]=((A|0)<0)<<31>>31;break e}case 16:{g=(n[u>>2]|0)+3&-4,A=n[g>>2]|0,n[u>>2]=g+4,g=o,n[g>>2]=A&255,n[g+4>>2]=0;break e}case 17:{g=(n[u>>2]|0)+7&-8,m=+E[g>>3],n[u>>2]=g+8,E[o>>3]=m;break e}case 18:{g=(n[u>>2]|0)+7&-8,m=+E[g>>3],n[u>>2]=g+8,E[o>>3]=m;break e}default:break e}while(!1);while(!1)}function Z8e(o,l,u,A){if(o=o|0,l=l|0,u=u|0,A=A|0,!((o|0)==0&(l|0)==0))do u=u+-1|0,s[u>>0]=c[5694+(o&15)>>0]|0|A,o=qP(o|0,l|0,4)|0,l=Be;while(!((o|0)==0&(l|0)==0));return u|0}function $8e(o,l,u){if(o=o|0,l=l|0,u=u|0,!((o|0)==0&(l|0)==0))do u=u+-1|0,s[u>>0]=o&7|48,o=qP(o|0,l|0,3)|0,l=Be;while(!((o|0)==0&(l|0)==0));return u|0}function tE(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;if(l>>>0>0|(l|0)==0&o>>>0>4294967295){for(;A=XM(o|0,l|0,10,0)|0,u=u+-1|0,s[u>>0]=A&255|48,A=o,o=zM(o|0,l|0,10,0)|0,l>>>0>9|(l|0)==9&A>>>0>4294967295;)l=Be;l=o}else l=o;if(l)for(;u=u+-1|0,s[u>>0]=(l>>>0)%10|0|48,!(l>>>0<10);)l=(l>>>0)/10|0;return u|0}function eHe(o){return o=o|0,aHe(o,n[(oHe()|0)+188>>2]|0)|0}function tHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;m=l&255,A=(u|0)!=0;e:do if(A&(o&3|0)!=0)for(g=l&255;;){if((s[o>>0]|0)==g<<24>>24){B=6;break e}if(o=o+1|0,u=u+-1|0,A=(u|0)!=0,!(A&(o&3|0)!=0)){B=5;break}}else B=5;while(!1);(B|0)==5&&(A?B=6:u=0);e:do if((B|0)==6&&(g=l&255,(s[o>>0]|0)!=g<<24>>24)){A=Me(m,16843009)|0;t:do if(u>>>0>3){for(;m=n[o>>2]^A,!((m&-2139062144^-2139062144)&m+-16843009|0);)if(o=o+4|0,u=u+-4|0,u>>>0<=3){B=11;break t}}else B=11;while(!1);if((B|0)==11&&!u){u=0;break}for(;;){if((s[o>>0]|0)==g<<24>>24)break e;if(o=o+1|0,u=u+-1|0,!u){u=0;break}}}while(!1);return(u|0?o:0)|0}function _s(o,l,u,A,g){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0;var m=0,B=0;if(B=I,I=I+256|0,m=B,(u|0)>(A|0)&(g&73728|0)==0){if(g=u-A|0,nE(m|0,l|0,(g>>>0<256?g:256)|0)|0,g>>>0>255){l=u-A|0;do bs(o,m,256),g=g+-256|0;while(g>>>0>255);g=l&255}bs(o,m,g)}I=B}function GX(o,l){return o=o|0,l=l|0,o?o=iHe(o,l,0)|0:o=0,o|0}function rHe(o,l,u,A,g,m){o=o|0,l=+l,u=u|0,A=A|0,g=g|0,m=m|0;var B=0,k=0,R=0,M=0,L=0,q=0,oe=0,Ve=0,Le=0,Te=0,nt=0,Ze=0,ft=0,He=0,Ye=0,Mt=0,Gr=0,fr=0,$t=0,Tr=0,Hr=0,cr=0,jn=0;jn=I,I=I+560|0,R=jn+8|0,nt=jn,cr=jn+524|0,Hr=cr,M=jn+512|0,n[nt>>2]=0,Tr=M+12|0,qX(l)|0,(Be|0)<0?(l=-l,fr=1,Gr=5659):(fr=(g&2049|0)!=0&1,Gr=g&2048|0?5662:g&1|0?5665:5660),qX(l)|0,$t=Be&2146435072;do if($t>>>0<2146435072|($t|0)==2146435072&!1){if(Ve=+nHe(l,nt)*2,B=Ve!=0,B&&(n[nt>>2]=(n[nt>>2]|0)+-1),ft=m|32,(ft|0)==97){Le=m&32,oe=Le|0?Gr+9|0:Gr,q=fr|2,B=12-A|0;do if(A>>>0>11|(B|0)==0)l=Ve;else{l=8;do B=B+-1|0,l=l*16;while(B|0);if((s[oe>>0]|0)==45){l=-(l+(-Ve-l));break}else{l=Ve+l-l;break}}while(!1);k=n[nt>>2]|0,B=(k|0)<0?0-k|0:k,B=tE(B,((B|0)<0)<<31>>31,Tr)|0,(B|0)==(Tr|0)&&(B=M+11|0,s[B>>0]=48),s[B+-1>>0]=(k>>31&2)+43,L=B+-2|0,s[L>>0]=m+15,M=(A|0)<1,R=(g&8|0)==0,B=cr;do $t=~~l,k=B+1|0,s[B>>0]=c[5694+$t>>0]|Le,l=(l-+($t|0))*16,(k-Hr|0)==1&&!(R&(M&l==0))?(s[k>>0]=46,B=B+2|0):B=k;while(l!=0);$t=B-Hr|0,Hr=Tr-L|0,Tr=(A|0)!=0&($t+-2|0)<(A|0)?A+2|0:$t,B=Hr+q+Tr|0,_s(o,32,u,B,g),bs(o,oe,q),_s(o,48,u,B,g^65536),bs(o,cr,$t),_s(o,48,Tr-$t|0,0,0),bs(o,L,Hr),_s(o,32,u,B,g^8192);break}k=(A|0)<0?6:A,B?(B=(n[nt>>2]|0)+-28|0,n[nt>>2]=B,l=Ve*268435456):(l=Ve,B=n[nt>>2]|0),$t=(B|0)<0?R:R+288|0,R=$t;do Ye=~~l>>>0,n[R>>2]=Ye,R=R+4|0,l=(l-+(Ye>>>0))*1e9;while(l!=0);if((B|0)>0)for(M=$t,q=R;;){if(L=(B|0)<29?B:29,B=q+-4|0,B>>>0>=M>>>0){R=0;do He=zX(n[B>>2]|0,0,L|0)|0,He=KM(He|0,Be|0,R|0,0)|0,Ye=Be,Ze=XM(He|0,Ye|0,1e9,0)|0,n[B>>2]=Ze,R=zM(He|0,Ye|0,1e9,0)|0,B=B+-4|0;while(B>>>0>=M>>>0);R&&(M=M+-4|0,n[M>>2]=R)}for(R=q;!(R>>>0<=M>>>0);)if(B=R+-4|0,!(n[B>>2]|0))R=B;else break;if(B=(n[nt>>2]|0)-L|0,n[nt>>2]=B,(B|0)>0)q=R;else break}else M=$t;if((B|0)<0){A=((k+25|0)/9|0)+1|0,Te=(ft|0)==102;do{if(Le=0-B|0,Le=(Le|0)<9?Le:9,M>>>0>>0){L=(1<>>Le,oe=0,B=M;do Ye=n[B>>2]|0,n[B>>2]=(Ye>>>Le)+oe,oe=Me(Ye&L,q)|0,B=B+4|0;while(B>>>0>>0);B=n[M>>2]|0?M:M+4|0,oe?(n[R>>2]=oe,M=B,B=R+4|0):(M=B,B=R)}else M=n[M>>2]|0?M:M+4|0,B=R;R=Te?$t:M,R=(B-R>>2|0)>(A|0)?R+(A<<2)|0:B,B=(n[nt>>2]|0)+Le|0,n[nt>>2]=B}while((B|0)<0);B=M,A=R}else B=M,A=R;if(Ye=$t,B>>>0>>0){if(R=(Ye-B>>2)*9|0,L=n[B>>2]|0,L>>>0>=10){M=10;do M=M*10|0,R=R+1|0;while(L>>>0>=M>>>0)}}else R=0;if(Te=(ft|0)==103,Ze=(k|0)!=0,M=k-((ft|0)!=102?R:0)+((Ze&Te)<<31>>31)|0,(M|0)<(((A-Ye>>2)*9|0)+-9|0)){if(M=M+9216|0,Le=$t+4+(((M|0)/9|0)+-1024<<2)|0,M=((M|0)%9|0)+1|0,(M|0)<9){L=10;do L=L*10|0,M=M+1|0;while((M|0)!=9)}else L=10;if(q=n[Le>>2]|0,oe=(q>>>0)%(L>>>0)|0,M=(Le+4|0)==(A|0),M&(oe|0)==0)M=Le;else if(Ve=((q>>>0)/(L>>>0)|0)&1|0?9007199254740994:9007199254740992,He=(L|0)/2|0,l=oe>>>0>>0?.5:M&(oe|0)==(He|0)?1:1.5,fr&&(He=(s[Gr>>0]|0)==45,l=He?-l:l,Ve=He?-Ve:Ve),M=q-oe|0,n[Le>>2]=M,Ve+l!=Ve){if(He=M+L|0,n[Le>>2]=He,He>>>0>999999999)for(R=Le;M=R+-4|0,n[R>>2]=0,M>>>0>>0&&(B=B+-4|0,n[B>>2]=0),He=(n[M>>2]|0)+1|0,n[M>>2]=He,He>>>0>999999999;)R=M;else M=Le;if(R=(Ye-B>>2)*9|0,q=n[B>>2]|0,q>>>0>=10){L=10;do L=L*10|0,R=R+1|0;while(q>>>0>=L>>>0)}}else M=Le;M=M+4|0,M=A>>>0>M>>>0?M:A,He=B}else M=A,He=B;for(ft=M;;){if(ft>>>0<=He>>>0){nt=0;break}if(B=ft+-4|0,!(n[B>>2]|0))ft=B;else{nt=1;break}}A=0-R|0;do if(Te)if(B=((Ze^1)&1)+k|0,(B|0)>(R|0)&(R|0)>-5?(L=m+-1|0,k=B+-1-R|0):(L=m+-2|0,k=B+-1|0),B=g&8,B)Le=B;else{if(nt&&(Mt=n[ft+-4>>2]|0,(Mt|0)!=0))if((Mt>>>0)%10|0)M=0;else{M=0,B=10;do B=B*10|0,M=M+1|0;while(!((Mt>>>0)%(B>>>0)|0|0))}else M=9;if(B=((ft-Ye>>2)*9|0)+-9|0,(L|32|0)==102){Le=B-M|0,Le=(Le|0)>0?Le:0,k=(k|0)<(Le|0)?k:Le,Le=0;break}else{Le=B+R-M|0,Le=(Le|0)>0?Le:0,k=(k|0)<(Le|0)?k:Le,Le=0;break}}else L=m,Le=g&8;while(!1);if(Te=k|Le,q=(Te|0)!=0&1,oe=(L|32|0)==102,oe)Ze=0,B=(R|0)>0?R:0;else{if(B=(R|0)<0?A:R,B=tE(B,((B|0)<0)<<31>>31,Tr)|0,M=Tr,(M-B|0)<2)do B=B+-1|0,s[B>>0]=48;while((M-B|0)<2);s[B+-1>>0]=(R>>31&2)+43,B=B+-2|0,s[B>>0]=L,Ze=B,B=M-B|0}if(B=fr+1+k+q+B|0,_s(o,32,u,B,g),bs(o,Gr,fr),_s(o,48,u,B,g^65536),oe){L=He>>>0>$t>>>0?$t:He,Le=cr+9|0,q=Le,oe=cr+8|0,M=L;do{if(R=tE(n[M>>2]|0,0,Le)|0,(M|0)==(L|0))(R|0)==(Le|0)&&(s[oe>>0]=48,R=oe);else if(R>>>0>cr>>>0){nE(cr|0,48,R-Hr|0)|0;do R=R+-1|0;while(R>>>0>cr>>>0)}bs(o,R,q-R|0),M=M+4|0}while(M>>>0<=$t>>>0);if(Te|0&&bs(o,5710,1),M>>>0>>0&(k|0)>0)for(;;){if(R=tE(n[M>>2]|0,0,Le)|0,R>>>0>cr>>>0){nE(cr|0,48,R-Hr|0)|0;do R=R+-1|0;while(R>>>0>cr>>>0)}if(bs(o,R,(k|0)<9?k:9),M=M+4|0,R=k+-9|0,M>>>0>>0&(k|0)>9)k=R;else{k=R;break}}_s(o,48,k+9|0,9,0)}else{if(Te=nt?ft:He+4|0,(k|0)>-1){nt=cr+9|0,Le=(Le|0)==0,A=nt,q=0-Hr|0,oe=cr+8|0,L=He;do{R=tE(n[L>>2]|0,0,nt)|0,(R|0)==(nt|0)&&(s[oe>>0]=48,R=oe);do if((L|0)==(He|0)){if(M=R+1|0,bs(o,R,1),Le&(k|0)<1){R=M;break}bs(o,5710,1),R=M}else{if(R>>>0<=cr>>>0)break;nE(cr|0,48,R+q|0)|0;do R=R+-1|0;while(R>>>0>cr>>>0)}while(!1);Hr=A-R|0,bs(o,R,(k|0)>(Hr|0)?Hr:k),k=k-Hr|0,L=L+4|0}while(L>>>0>>0&(k|0)>-1)}_s(o,48,k+18|0,18,0),bs(o,Ze,Tr-Ze|0)}_s(o,32,u,B,g^8192)}else cr=(m&32|0)!=0,B=fr+3|0,_s(o,32,u,B,g&-65537),bs(o,Gr,fr),bs(o,l!=l|!1?cr?5686:5690:cr?5678:5682,3),_s(o,32,u,B,g^8192);while(!1);return I=jn,((B|0)<(u|0)?u:B)|0}function qX(o){o=+o;var l=0;return E[S>>3]=o,l=n[S>>2]|0,Be=n[S+4>>2]|0,l|0}function nHe(o,l){return o=+o,l=l|0,+ +WX(o,l)}function WX(o,l){o=+o,l=l|0;var u=0,A=0,g=0;switch(E[S>>3]=o,u=n[S>>2]|0,A=n[S+4>>2]|0,g=qP(u|0,A|0,52)|0,g&2047){case 0:{o!=0?(o=+WX(o*18446744073709552e3,l),u=(n[l>>2]|0)+-64|0):u=0,n[l>>2]=u;break}case 2047:break;default:n[l>>2]=(g&2047)+-1022,n[S>>2]=u,n[S+4>>2]=A&-2146435073|1071644672,o=+E[S>>3]}return+o}function iHe(o,l,u){o=o|0,l=l|0,u=u|0;do if(o){if(l>>>0<128){s[o>>0]=l,o=1;break}if(!(n[n[(sHe()|0)+188>>2]>>2]|0))if((l&-128|0)==57216){s[o>>0]=l,o=1;break}else{n[(eE()|0)>>2]=84,o=-1;break}if(l>>>0<2048){s[o>>0]=l>>>6|192,s[o+1>>0]=l&63|128,o=2;break}if(l>>>0<55296|(l&-8192|0)==57344){s[o>>0]=l>>>12|224,s[o+1>>0]=l>>>6&63|128,s[o+2>>0]=l&63|128,o=3;break}if((l+-65536|0)>>>0<1048576){s[o>>0]=l>>>18|240,s[o+1>>0]=l>>>12&63|128,s[o+2>>0]=l>>>6&63|128,s[o+3>>0]=l&63|128,o=4;break}else{n[(eE()|0)>>2]=84,o=-1;break}}else o=1;while(!1);return o|0}function sHe(){return YM()|0}function oHe(){return YM()|0}function aHe(o,l){o=o|0,l=l|0;var u=0,A=0;for(A=0;;){if((c[5712+A>>0]|0)==(o|0)){o=2;break}if(u=A+1|0,(u|0)==87){u=5800,A=87,o=5;break}else A=u}if((o|0)==2&&(A?(u=5800,o=5):u=5800),(o|0)==5)for(;;){do o=u,u=u+1|0;while(s[o>>0]|0);if(A=A+-1|0,A)o=5;else break}return lHe(u,n[l+20>>2]|0)|0}function lHe(o,l){return o=o|0,l=l|0,cHe(o,l)|0}function cHe(o,l){return o=o|0,l=l|0,l?l=uHe(n[l>>2]|0,n[l+4>>2]|0,o)|0:l=0,(l|0?l:o)|0}function uHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;oe=(n[o>>2]|0)+1794895138|0,m=ug(n[o+8>>2]|0,oe)|0,A=ug(n[o+12>>2]|0,oe)|0,g=ug(n[o+16>>2]|0,oe)|0;e:do if(m>>>0>>2>>>0&&(q=l-(m<<2)|0,A>>>0>>0&g>>>0>>0)&&!((g|A)&3|0)){for(q=A>>>2,L=g>>>2,M=0;;){if(k=m>>>1,R=M+k|0,B=R<<1,g=B+q|0,A=ug(n[o+(g<<2)>>2]|0,oe)|0,g=ug(n[o+(g+1<<2)>>2]|0,oe)|0,!(g>>>0>>0&A>>>0<(l-g|0)>>>0)){A=0;break e}if(s[o+(g+A)>>0]|0){A=0;break e}if(A=UX(u,o+g|0)|0,!A)break;if(A=(A|0)<0,(m|0)==1){A=0;break e}else M=A?M:R,m=A?k:m-k|0}A=B+L|0,g=ug(n[o+(A<<2)>>2]|0,oe)|0,A=ug(n[o+(A+1<<2)>>2]|0,oe)|0,A>>>0>>0&g>>>0<(l-A|0)>>>0?A=s[o+(A+g)>>0]|0?0:o+A|0:A=0}else A=0;while(!1);return A|0}function ug(o,l){o=o|0,l=l|0;var u=0;return u=$X(o|0)|0,(l|0?u:o)|0}function fHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0,k=0;A=u+16|0,g=n[A>>2]|0,g?m=5:AHe(u)|0?A=0:(g=n[A>>2]|0,m=5);e:do if((m|0)==5){if(k=u+20|0,B=n[k>>2]|0,A=B,(g-B|0)>>>0>>0){A=YP[n[u+36>>2]&7](u,o,l)|0;break}t:do if((s[u+75>>0]|0)>-1){for(B=l;;){if(!B){m=0,g=o;break t}if(g=B+-1|0,(s[o+g>>0]|0)==10)break;B=g}if(A=YP[n[u+36>>2]&7](u,o,B)|0,A>>>0>>0)break e;m=B,g=o+B|0,l=l-B|0,A=n[k>>2]|0}else m=0,g=o;while(!1);Rr(A|0,g|0,l|0)|0,n[k>>2]=(n[k>>2]|0)+l,A=m+l|0}while(!1);return A|0}function AHe(o){o=o|0;var l=0,u=0;return l=o+74|0,u=s[l>>0]|0,s[l>>0]=u+255|u,l=n[o>>2]|0,l&8?(n[o>>2]=l|32,o=-1):(n[o+8>>2]=0,n[o+4>>2]=0,u=n[o+44>>2]|0,n[o+28>>2]=u,n[o+20>>2]=u,n[o+16>>2]=u+(n[o+48>>2]|0),o=0),o|0}function ri(o,l){o=y(o),l=y(l);var u=0,A=0;u=YX(o)|0;do if((u&2147483647)>>>0<=2139095040){if(A=YX(l)|0,(A&2147483647)>>>0<=2139095040)if((A^u|0)<0){o=(u|0)<0?l:o;break}else{o=o>2]=o,n[S>>2]|0|0}function fg(o,l){o=y(o),l=y(l);var u=0,A=0;u=VX(o)|0;do if((u&2147483647)>>>0<=2139095040){if(A=VX(l)|0,(A&2147483647)>>>0<=2139095040)if((A^u|0)<0){o=(u|0)<0?o:l;break}else{o=o>2]=o,n[S>>2]|0|0}function JM(o,l){o=y(o),l=y(l);var u=0,A=0,g=0,m=0,B=0,k=0,R=0,M=0;m=(h[S>>2]=o,n[S>>2]|0),k=(h[S>>2]=l,n[S>>2]|0),u=m>>>23&255,B=k>>>23&255,R=m&-2147483648,g=k<<1;e:do if(g|0&&!((u|0)==255|((pHe(l)|0)&2147483647)>>>0>2139095040)){if(A=m<<1,A>>>0<=g>>>0)return l=y(o*y(0)),y((A|0)==(g|0)?l:o);if(u)A=m&8388607|8388608;else{if(u=m<<9,(u|0)>-1){A=u,u=0;do u=u+-1|0,A=A<<1;while((A|0)>-1)}else u=0;A=m<<1-u}if(B)k=k&8388607|8388608;else{if(m=k<<9,(m|0)>-1){g=0;do g=g+-1|0,m=m<<1;while((m|0)>-1)}else g=0;B=g,k=k<<1-g}g=A-k|0,m=(g|0)>-1;t:do if((u|0)>(B|0)){for(;;){if(m)if(g)A=g;else break;if(A=A<<1,u=u+-1|0,g=A-k|0,m=(g|0)>-1,(u|0)<=(B|0))break t}l=y(o*y(0));break e}while(!1);if(m)if(g)A=g;else{l=y(o*y(0));break}if(A>>>0<8388608)do A=A<<1,u=u+-1|0;while(A>>>0<8388608);(u|0)>0?u=A+-8388608|u<<23:u=A>>>(1-u|0),l=(n[S>>2]=u|R,y(h[S>>2]))}else M=3;while(!1);return(M|0)==3&&(l=y(o*l),l=y(l/l)),y(l)}function pHe(o){return o=y(o),h[S>>2]=o,n[S>>2]|0|0}function hHe(o,l){return o=o|0,l=l|0,_X(n[582]|0,o,l)|0}function an(o){o=o|0,Nt()}function rE(o){o=o|0}function dHe(o,l){return o=o|0,l=l|0,0}function gHe(o){return o=o|0,(JX(o+4|0)|0)==-1?(op[n[(n[o>>2]|0)+8>>2]&127](o),o=1):o=0,o|0}function JX(o){o=o|0;var l=0;return l=n[o>>2]|0,n[o>>2]=l+-1,l+-1|0}function jh(o){o=o|0,gHe(o)|0&&mHe(o)}function mHe(o){o=o|0;var l=0;l=o+8|0,n[l>>2]|0&&(JX(l)|0)!=-1||op[n[(n[o>>2]|0)+16>>2]&127](o)}function Kt(o){o=o|0;var l=0;for(l=o|0?o:1;o=_P(l)|0,!(o|0);){if(o=EHe()|0,!o){o=0;break}cZ[o&0]()}return o|0}function KX(o){return o=o|0,Kt(o)|0}function It(o){o=o|0,HP(o)}function yHe(o){o=o|0,(s[o+11>>0]|0)<0&&It(n[o>>2]|0)}function EHe(){var o=0;return o=n[2923]|0,n[2923]=o+0,o|0}function IHe(){}function GP(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,A=l-A-(u>>>0>o>>>0|0)>>>0,Be=A,o-u>>>0|0|0}function KM(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,u=o+u>>>0,Be=l+A+(u>>>0>>0|0)>>>0,u|0|0}function nE(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0,B=0;if(m=o+u|0,l=l&255,(u|0)>=67){for(;o&3;)s[o>>0]=l,o=o+1|0;for(A=m&-4|0,g=A-64|0,B=l|l<<8|l<<16|l<<24;(o|0)<=(g|0);)n[o>>2]=B,n[o+4>>2]=B,n[o+8>>2]=B,n[o+12>>2]=B,n[o+16>>2]=B,n[o+20>>2]=B,n[o+24>>2]=B,n[o+28>>2]=B,n[o+32>>2]=B,n[o+36>>2]=B,n[o+40>>2]=B,n[o+44>>2]=B,n[o+48>>2]=B,n[o+52>>2]=B,n[o+56>>2]=B,n[o+60>>2]=B,o=o+64|0;for(;(o|0)<(A|0);)n[o>>2]=B,o=o+4|0}for(;(o|0)<(m|0);)s[o>>0]=l,o=o+1|0;return m-u|0}function zX(o,l,u){return o=o|0,l=l|0,u=u|0,(u|0)<32?(Be=l<>>32-u,o<>>u,o>>>u|(l&(1<>>u-32|0)}function Rr(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,g=0,m=0;if((u|0)>=8192)return MA(o|0,l|0,u|0)|0;if(m=o|0,g=o+u|0,(o&3)==(l&3)){for(;o&3;){if(!u)return m|0;s[o>>0]=s[l>>0]|0,o=o+1|0,l=l+1|0,u=u-1|0}for(u=g&-4|0,A=u-64|0;(o|0)<=(A|0);)n[o>>2]=n[l>>2],n[o+4>>2]=n[l+4>>2],n[o+8>>2]=n[l+8>>2],n[o+12>>2]=n[l+12>>2],n[o+16>>2]=n[l+16>>2],n[o+20>>2]=n[l+20>>2],n[o+24>>2]=n[l+24>>2],n[o+28>>2]=n[l+28>>2],n[o+32>>2]=n[l+32>>2],n[o+36>>2]=n[l+36>>2],n[o+40>>2]=n[l+40>>2],n[o+44>>2]=n[l+44>>2],n[o+48>>2]=n[l+48>>2],n[o+52>>2]=n[l+52>>2],n[o+56>>2]=n[l+56>>2],n[o+60>>2]=n[l+60>>2],o=o+64|0,l=l+64|0;for(;(o|0)<(u|0);)n[o>>2]=n[l>>2],o=o+4|0,l=l+4|0}else for(u=g-4|0;(o|0)<(u|0);)s[o>>0]=s[l>>0]|0,s[o+1>>0]=s[l+1>>0]|0,s[o+2>>0]=s[l+2>>0]|0,s[o+3>>0]=s[l+3>>0]|0,o=o+4|0,l=l+4|0;for(;(o|0)<(g|0);)s[o>>0]=s[l>>0]|0,o=o+1|0,l=l+1|0;return m|0}function XX(o){o=o|0;var l=0;return l=s[O+(o&255)>>0]|0,(l|0)<8?l|0:(l=s[O+(o>>8&255)>>0]|0,(l|0)<8?l+8|0:(l=s[O+(o>>16&255)>>0]|0,(l|0)<8?l+16|0:(s[O+(o>>>24)>>0]|0)+24|0))}function ZX(o,l,u,A,g){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0;var m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0,Ve=0,Le=0;if(L=o,R=l,M=R,B=u,oe=A,k=oe,!M)return m=(g|0)!=0,k?m?(n[g>>2]=o|0,n[g+4>>2]=l&0,oe=0,g=0,Be=oe,g|0):(oe=0,g=0,Be=oe,g|0):(m&&(n[g>>2]=(L>>>0)%(B>>>0),n[g+4>>2]=0),oe=0,g=(L>>>0)/(B>>>0)>>>0,Be=oe,g|0);m=(k|0)==0;do if(B){if(!m){if(m=(b(k|0)|0)-(b(M|0)|0)|0,m>>>0<=31){q=m+1|0,k=31-m|0,l=m-31>>31,B=q,o=L>>>(q>>>0)&l|M<>>(q>>>0)&l,m=0,k=L<>2]=o|0,n[g+4>>2]=R|l&0,oe=0,g=0,Be=oe,g|0):(oe=0,g=0,Be=oe,g|0)}if(m=B-1|0,m&B|0){k=(b(B|0)|0)+33-(b(M|0)|0)|0,Le=64-k|0,q=32-k|0,R=q>>31,Ve=k-32|0,l=Ve>>31,B=k,o=q-1>>31&M>>>(Ve>>>0)|(M<>>(k>>>0))&l,l=l&M>>>(k>>>0),m=L<>>(Ve>>>0))&R|L<>31;break}return g|0&&(n[g>>2]=m&L,n[g+4>>2]=0),(B|0)==1?(Ve=R|l&0,Le=o|0|0,Be=Ve,Le|0):(Le=XX(B|0)|0,Ve=M>>>(Le>>>0)|0,Le=M<<32-Le|L>>>(Le>>>0)|0,Be=Ve,Le|0)}else{if(m)return g|0&&(n[g>>2]=(M>>>0)%(B>>>0),n[g+4>>2]=0),Ve=0,Le=(M>>>0)/(B>>>0)>>>0,Be=Ve,Le|0;if(!L)return g|0&&(n[g>>2]=0,n[g+4>>2]=(M>>>0)%(k>>>0)),Ve=0,Le=(M>>>0)/(k>>>0)>>>0,Be=Ve,Le|0;if(m=k-1|0,!(m&k))return g|0&&(n[g>>2]=o|0,n[g+4>>2]=m&M|l&0),Ve=0,Le=M>>>((XX(k|0)|0)>>>0),Be=Ve,Le|0;if(m=(b(k|0)|0)-(b(M|0)|0)|0,m>>>0<=30){l=m+1|0,k=31-m|0,B=l,o=M<>>(l>>>0),l=M>>>(l>>>0),m=0,k=L<>2]=o|0,n[g+4>>2]=R|l&0,Ve=0,Le=0,Be=Ve,Le|0):(Ve=0,Le=0,Be=Ve,Le|0)}while(!1);if(!B)M=k,R=0,k=0;else{q=u|0|0,L=oe|A&0,M=KM(q|0,L|0,-1,-1)|0,u=Be,R=k,k=0;do A=R,R=m>>>31|R<<1,m=k|m<<1,A=o<<1|A>>>31|0,oe=o>>>31|l<<1|0,GP(M|0,u|0,A|0,oe|0)|0,Le=Be,Ve=Le>>31|((Le|0)<0?-1:0)<<1,k=Ve&1,o=GP(A|0,oe|0,Ve&q|0,(((Le|0)<0?-1:0)>>31|((Le|0)<0?-1:0)<<1)&L|0)|0,l=Be,B=B-1|0;while(B|0);M=R,R=0}return B=0,g|0&&(n[g>>2]=o,n[g+4>>2]=l),Ve=(m|0)>>>31|(M|B)<<1|(B<<1|m>>>31)&0|R,Le=(m<<1|0)&-2|k,Be=Ve,Le|0}function zM(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,ZX(o,l,u,A,0)|0}function Gh(o){o=o|0;var l=0,u=0;return u=o+15&-16|0,l=n[C>>2]|0,o=l+u|0,(u|0)>0&(o|0)<(l|0)|(o|0)<0?(se()|0,cu(12),-1):(n[C>>2]=o,(o|0)>($()|0)&&!(X()|0)?(n[C>>2]=l,cu(12),-1):l|0)}function B2(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;if((l|0)<(o|0)&(o|0)<(l+u|0)){for(A=o,l=l+u|0,o=o+u|0;(u|0)>0;)o=o-1|0,l=l-1|0,u=u-1|0,s[o>>0]=s[l>>0]|0;o=A}else Rr(o,l,u)|0;return o|0}function XM(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var g=0,m=0;return m=I,I=I+16|0,g=m|0,ZX(o,l,u,A,g)|0,I=m,Be=n[g+4>>2]|0,n[g>>2]|0|0}function $X(o){return o=o|0,(o&255)<<24|(o>>8&255)<<16|(o>>16&255)<<8|o>>>24|0}function CHe(o,l,u,A,g,m){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,m=m|0,eZ[o&1](l|0,u|0,A|0,g|0,m|0)}function wHe(o,l,u){o=o|0,l=l|0,u=y(u),tZ[o&1](l|0,y(u))}function BHe(o,l,u){o=o|0,l=l|0,u=+u,rZ[o&31](l|0,+u)}function vHe(o,l,u,A){return o=o|0,l=l|0,u=y(u),A=y(A),y(nZ[o&0](l|0,y(u),y(A)))}function SHe(o,l){o=o|0,l=l|0,op[o&127](l|0)}function DHe(o,l,u){o=o|0,l=l|0,u=u|0,ap[o&31](l|0,u|0)}function bHe(o,l){return o=o|0,l=l|0,pg[o&31](l|0)|0}function PHe(o,l,u,A,g){o=o|0,l=l|0,u=+u,A=+A,g=g|0,iZ[o&1](l|0,+u,+A,g|0)}function xHe(o,l,u,A){o=o|0,l=l|0,u=+u,A=+A,cje[o&1](l|0,+u,+A)}function kHe(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,YP[o&7](l|0,u|0,A|0)|0}function QHe(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,+uje[o&1](l|0,u|0,A|0)}function RHe(o,l){return o=o|0,l=l|0,+sZ[o&15](l|0)}function THe(o,l,u){return o=o|0,l=l|0,u=+u,fje[o&1](l|0,+u)|0}function FHe(o,l,u){return o=o|0,l=l|0,u=u|0,$M[o&15](l|0,u|0)|0}function NHe(o,l,u,A,g,m){o=o|0,l=l|0,u=u|0,A=+A,g=+g,m=m|0,Aje[o&1](l|0,u|0,+A,+g,m|0)}function OHe(o,l,u,A,g,m,B){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,m=m|0,B=B|0,pje[o&1](l|0,u|0,A|0,g|0,m|0,B|0)}function LHe(o,l,u){return o=o|0,l=l|0,u=u|0,+oZ[o&7](l|0,u|0)}function MHe(o){return o=o|0,VP[o&7]()|0}function UHe(o,l,u,A,g,m){return o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,m=m|0,aZ[o&1](l|0,u|0,A|0,g|0,m|0)|0}function _He(o,l,u,A,g){o=o|0,l=l|0,u=u|0,A=A|0,g=+g,hje[o&1](l|0,u|0,A|0,+g)}function HHe(o,l,u,A,g,m,B){o=o|0,l=l|0,u=u|0,A=y(A),g=g|0,m=y(m),B=B|0,lZ[o&1](l|0,u|0,y(A),g|0,y(m),B|0)}function jHe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,D2[o&15](l|0,u|0,A|0)}function GHe(o){o=o|0,cZ[o&0]()}function qHe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=+A,uZ[o&15](l|0,u|0,+A)}function WHe(o,l,u){return o=o|0,l=+l,u=+u,dje[o&1](+l,+u)|0}function YHe(o,l,u,A,g){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,eU[o&15](l|0,u|0,A|0,g|0)}function VHe(o,l,u,A,g){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,F(0)}function JHe(o,l){o=o|0,l=y(l),F(1)}function sl(o,l){o=o|0,l=+l,F(2)}function KHe(o,l,u){return o=o|0,l=y(l),u=y(u),F(3),$e}function Br(o){o=o|0,F(4)}function v2(o,l){o=o|0,l=l|0,F(5)}function Gl(o){return o=o|0,F(6),0}function zHe(o,l,u,A){o=o|0,l=+l,u=+u,A=A|0,F(7)}function XHe(o,l,u){o=o|0,l=+l,u=+u,F(8)}function ZHe(o,l,u){return o=o|0,l=l|0,u=u|0,F(9),0}function $He(o,l,u){return o=o|0,l=l|0,u=u|0,F(10),0}function Ag(o){return o=o|0,F(11),0}function eje(o,l){return o=o|0,l=+l,F(12),0}function S2(o,l){return o=o|0,l=l|0,F(13),0}function tje(o,l,u,A,g){o=o|0,l=l|0,u=+u,A=+A,g=g|0,F(14)}function rje(o,l,u,A,g,m){o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,m=m|0,F(15)}function ZM(o,l){return o=o|0,l=l|0,F(16),0}function nje(){return F(17),0}function ije(o,l,u,A,g){return o=o|0,l=l|0,u=u|0,A=A|0,g=g|0,F(18),0}function sje(o,l,u,A){o=o|0,l=l|0,u=u|0,A=+A,F(19)}function oje(o,l,u,A,g,m){o=o|0,l=l|0,u=y(u),A=A|0,g=y(g),m=m|0,F(20)}function WP(o,l,u){o=o|0,l=l|0,u=u|0,F(21)}function aje(){F(22)}function iE(o,l,u){o=o|0,l=l|0,u=+u,F(23)}function lje(o,l){return o=+o,l=+l,F(24),0}function sE(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,F(25)}var eZ=[VHe,i_e],tZ=[JHe,Ny],rZ=[sl,zd,Th,o2,a2,l2,c2,kf,Gy,u2,Qf,Xd,Zd,f2,A2,Iu,$d,p2,qy,sl,sl,sl,sl,sl,sl,sl,sl,sl,sl,sl,sl,sl],nZ=[KHe],op=[Br,rE,MPe,UPe,_Pe,dRe,gRe,mRe,TMe,FMe,NMe,WUe,YUe,VUe,p8e,h8e,d8e,kl,Kd,r2,sr,gc,xP,kP,PPe,JPe,oxe,vxe,_xe,nke,Ike,Nke,zke,AQe,PQe,qQe,oRe,FRe,zRe,ATe,PTe,qTe,oFe,SFe,_Fe,eNe,gNe,gP,VNe,cOe,POe,YOe,aLe,PLe,MLe,HLe,iMe,aMe,vMe,LMe,_Me,nUe,CUe,_K,r4e,T4e,J4e,c3e,Q3e,Y3e,n8e,o8e,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br,Br],ap=[v2,_y,QL,n2,i2,xr,fo,Xi,Ms,Ss,jy,Rh,d2,CP,rg,FL,NL,wP,BP,ML,Rf,ne,xFe,GFe,zOe,s4e,xUe,vX,v2,v2,v2,v2],pg=[Gl,q8e,My,tg,Yy,Ia,mP,Fh,h2,TL,EP,Vy,vP,UL,zy,ENe,fLe,oUe,c4e,_l,Gl,Gl,Gl,Gl,Gl,Gl,Gl,Gl,Gl,Gl,Gl,Gl],iZ=[zHe,WL],cje=[XHe,bMe],YP=[ZHe,MX,W8e,J8e,ake,MRe,XNe,p3e],uje=[$He,RQe],sZ=[Ag,Nh,IP,tp,YL,v,D,Q,H,Y,Ag,Ag,Ag,Ag,Ag,Ag],fje=[eje,NLe],$M=[S2,dHe,SP,RPe,Pxe,Bke,Mke,uRe,eTe,iNe,Oy,Z4e,S2,S2,S2,S2],Aje=[tje,uxe],pje=[rje,N3e],oZ=[ZM,OL,ve,_e,ht,JQe,ZM,ZM],VP=[nje,Wt,Ly,dP,WLe,fMe,qMe,u8e],aZ=[ije,Py],hje=[sje,RTe],lZ=[oje,_L],D2=[WP,Oo,yP,LL,wu,qxe,$ke,JTe,uFe,kL,b_e,L4e,z3e,WP,WP,WP],cZ=[aje],uZ=[iE,RL,Hy,ep,s2,Cu,Wy,eg,gTe,pOe,QLe,iE,iE,iE,iE,iE],dje=[lje,QMe],eU=[sE,gQe,bNe,ROe,ILe,XLe,mMe,XMe,DUe,d4e,C8e,sE,sE,sE,sE,sE];return{_llvm_bswap_i32:$X,dynCall_idd:WHe,dynCall_i:MHe,_i64Subtract:GP,___udivdi3:zM,dynCall_vif:wHe,setThrew:ha,dynCall_viii:jHe,_bitshift64Lshr:qP,_bitshift64Shl:zX,dynCall_vi:SHe,dynCall_viiddi:NHe,dynCall_diii:QHe,dynCall_iii:FHe,_memset:nE,_sbrk:Gh,_memcpy:Rr,__GLOBAL__sub_I_Yoga_cpp:$1,dynCall_vii:DHe,___uremdi3:XM,dynCall_vid:BHe,stackAlloc:Ja,_nbind_init:R8e,getTempRet0:_A,dynCall_di:RHe,dynCall_iid:THe,setTempRet0:UA,_i64Add:KM,dynCall_fiff:vHe,dynCall_iiii:kHe,_emscripten_get_global_libc:G8e,dynCall_viid:qHe,dynCall_viiid:_He,dynCall_viififi:HHe,dynCall_ii:bHe,__GLOBAL__sub_I_Binding_cc:J_e,dynCall_viiii:YHe,dynCall_iiiiii:UHe,stackSave:mf,dynCall_viiiii:CHe,__GLOBAL__sub_I_nbind_cc:Sr,dynCall_vidd:xHe,_free:HP,runPostSets:IHe,dynCall_viiiiii:OHe,establishStackSpace:vn,_memmove:B2,stackRestore:uc,_malloc:_P,__GLOBAL__sub_I_common_cc:hUe,dynCall_viddi:PHe,dynCall_dii:LHe,dynCall_v:GHe}}(Module.asmGlobalArg,Module.asmLibraryArg,buffer),_llvm_bswap_i32=Module._llvm_bswap_i32=asm._llvm_bswap_i32,getTempRet0=Module.getTempRet0=asm.getTempRet0,___udivdi3=Module.___udivdi3=asm.___udivdi3,setThrew=Module.setThrew=asm.setThrew,_bitshift64Lshr=Module._bitshift64Lshr=asm._bitshift64Lshr,_bitshift64Shl=Module._bitshift64Shl=asm._bitshift64Shl,_memset=Module._memset=asm._memset,_sbrk=Module._sbrk=asm._sbrk,_memcpy=Module._memcpy=asm._memcpy,stackAlloc=Module.stackAlloc=asm.stackAlloc,___uremdi3=Module.___uremdi3=asm.___uremdi3,_nbind_init=Module._nbind_init=asm._nbind_init,_i64Subtract=Module._i64Subtract=asm._i64Subtract,setTempRet0=Module.setTempRet0=asm.setTempRet0,_i64Add=Module._i64Add=asm._i64Add,_emscripten_get_global_libc=Module._emscripten_get_global_libc=asm._emscripten_get_global_libc,__GLOBAL__sub_I_Yoga_cpp=Module.__GLOBAL__sub_I_Yoga_cpp=asm.__GLOBAL__sub_I_Yoga_cpp,__GLOBAL__sub_I_Binding_cc=Module.__GLOBAL__sub_I_Binding_cc=asm.__GLOBAL__sub_I_Binding_cc,stackSave=Module.stackSave=asm.stackSave,__GLOBAL__sub_I_nbind_cc=Module.__GLOBAL__sub_I_nbind_cc=asm.__GLOBAL__sub_I_nbind_cc,_free=Module._free=asm._free,runPostSets=Module.runPostSets=asm.runPostSets,establishStackSpace=Module.establishStackSpace=asm.establishStackSpace,_memmove=Module._memmove=asm._memmove,stackRestore=Module.stackRestore=asm.stackRestore,_malloc=Module._malloc=asm._malloc,__GLOBAL__sub_I_common_cc=Module.__GLOBAL__sub_I_common_cc=asm.__GLOBAL__sub_I_common_cc,dynCall_viiiii=Module.dynCall_viiiii=asm.dynCall_viiiii,dynCall_vif=Module.dynCall_vif=asm.dynCall_vif,dynCall_vid=Module.dynCall_vid=asm.dynCall_vid,dynCall_fiff=Module.dynCall_fiff=asm.dynCall_fiff,dynCall_vi=Module.dynCall_vi=asm.dynCall_vi,dynCall_vii=Module.dynCall_vii=asm.dynCall_vii,dynCall_ii=Module.dynCall_ii=asm.dynCall_ii,dynCall_viddi=Module.dynCall_viddi=asm.dynCall_viddi,dynCall_vidd=Module.dynCall_vidd=asm.dynCall_vidd,dynCall_iiii=Module.dynCall_iiii=asm.dynCall_iiii,dynCall_diii=Module.dynCall_diii=asm.dynCall_diii,dynCall_di=Module.dynCall_di=asm.dynCall_di,dynCall_iid=Module.dynCall_iid=asm.dynCall_iid,dynCall_iii=Module.dynCall_iii=asm.dynCall_iii,dynCall_viiddi=Module.dynCall_viiddi=asm.dynCall_viiddi,dynCall_viiiiii=Module.dynCall_viiiiii=asm.dynCall_viiiiii,dynCall_dii=Module.dynCall_dii=asm.dynCall_dii,dynCall_i=Module.dynCall_i=asm.dynCall_i,dynCall_iiiiii=Module.dynCall_iiiiii=asm.dynCall_iiiiii,dynCall_viiid=Module.dynCall_viiid=asm.dynCall_viiid,dynCall_viififi=Module.dynCall_viififi=asm.dynCall_viififi,dynCall_viii=Module.dynCall_viii=asm.dynCall_viii,dynCall_v=Module.dynCall_v=asm.dynCall_v,dynCall_viid=Module.dynCall_viid=asm.dynCall_viid,dynCall_idd=Module.dynCall_idd=asm.dynCall_idd,dynCall_viiii=Module.dynCall_viiii=asm.dynCall_viiii;Runtime.stackAlloc=Module.stackAlloc,Runtime.stackSave=Module.stackSave,Runtime.stackRestore=Module.stackRestore,Runtime.establishStackSpace=Module.establishStackSpace,Runtime.setTempRet0=Module.setTempRet0,Runtime.getTempRet0=Module.getTempRet0,Module.asm=asm;function ExitStatus(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}ExitStatus.prototype=new Error,ExitStatus.prototype.constructor=ExitStatus;var initialStackTop,preloadStartTime=null,calledMain=!1;dependenciesFulfilled=function e(){Module.calledRun||run(),Module.calledRun||(dependenciesFulfilled=e)},Module.callMain=Module.callMain=function e(t){t=t||[],ensureInitRuntime();var r=t.length+1;function s(){for(var p=0;p<3;p++)a.push(0)}var a=[allocate(intArrayFromString(Module.thisProgram),"i8",ALLOC_NORMAL)];s();for(var n=0;n0||(preRun(),runDependencies>0)||Module.calledRun)return;function t(){Module.calledRun||(Module.calledRun=!0,!ABORT&&(ensureInitRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),Module._main&&shouldRunNow&&Module.callMain(e),postRun()))}Module.setStatus?(Module.setStatus("Running..."),setTimeout(function(){setTimeout(function(){Module.setStatus("")},1),t()},1)):t()}Module.run=Module.run=run;function exit(e,t){t&&Module.noExitRuntime||(Module.noExitRuntime||(ABORT=!0,EXITSTATUS=e,STACKTOP=initialStackTop,exitRuntime(),Module.onExit&&Module.onExit(e)),ENVIRONMENT_IS_NODE&&process.exit(e),Module.quit(e,new ExitStatus(e)))}Module.exit=Module.exit=exit;var abortDecorators=[];function abort(e){Module.onAbort&&Module.onAbort(e),e!==void 0?(Module.print(e),Module.printErr(e),e=JSON.stringify(e)):e="",ABORT=!0,EXITSTATUS=1;var t=` +If this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.`,r="abort("+e+") at "+stackTrace()+t;throw abortDecorators&&abortDecorators.forEach(function(s){r=s(r,e)}),r}if(Module.abort=Module.abort=abort,Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();var shouldRunNow=!0;Module.noInitialRun&&(shouldRunNow=!1),run()})});var Lm=G((FVt,wIe)=>{"use strict";var Gut=IIe(),qut=CIe(),hq=!1,dq=null;qut({},function(e,t){if(!hq){if(hq=!0,e)throw e;dq=t}});if(!hq)throw new Error("Failed to load the yoga module - it needed to be loaded synchronously, but didn't");wIe.exports=Gut(dq.bind,dq.lib)});var mq=G((NVt,gq)=>{"use strict";var BIe=e=>Number.isNaN(e)?!1:e>=4352&&(e<=4447||e===9001||e===9002||11904<=e&&e<=12871&&e!==12351||12880<=e&&e<=19903||19968<=e&&e<=42182||43360<=e&&e<=43388||44032<=e&&e<=55203||63744<=e&&e<=64255||65040<=e&&e<=65049||65072<=e&&e<=65131||65281<=e&&e<=65376||65504<=e&&e<=65510||110592<=e&&e<=110593||127488<=e&&e<=127569||131072<=e&&e<=262141);gq.exports=BIe;gq.exports.default=BIe});var SIe=G((OVt,vIe)=>{"use strict";vIe.exports=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g}});var GS=G((LVt,yq)=>{"use strict";var Wut=dk(),Yut=mq(),Vut=SIe(),DIe=e=>{if(typeof e!="string"||e.length===0||(e=Wut(e),e.length===0))return 0;e=e.replace(Vut()," ");let t=0;for(let r=0;r=127&&s<=159||s>=768&&s<=879||(s>65535&&r++,t+=Yut(s)?2:1)}return t};yq.exports=DIe;yq.exports.default=DIe});var Iq=G((MVt,Eq)=>{"use strict";var Jut=GS(),bIe=e=>{let t=0;for(let r of e.split(` +`))t=Math.max(t,Jut(r));return t};Eq.exports=bIe;Eq.exports.default=bIe});var PIe=G(qS=>{"use strict";var Kut=qS&&qS.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(qS,"__esModule",{value:!0});var zut=Kut(Iq()),Cq={};qS.default=e=>{if(e.length===0)return{width:0,height:0};if(Cq[e])return Cq[e];let t=zut.default(e),r=e.split(` +`).length;return Cq[e]={width:t,height:r},{width:t,height:r}}});var xIe=G(WS=>{"use strict";var Xut=WS&&WS.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(WS,"__esModule",{value:!0});var xn=Xut(Lm()),Zut=(e,t)=>{"position"in t&&e.setPositionType(t.position==="absolute"?xn.default.POSITION_TYPE_ABSOLUTE:xn.default.POSITION_TYPE_RELATIVE)},$ut=(e,t)=>{"marginLeft"in t&&e.setMargin(xn.default.EDGE_START,t.marginLeft||0),"marginRight"in t&&e.setMargin(xn.default.EDGE_END,t.marginRight||0),"marginTop"in t&&e.setMargin(xn.default.EDGE_TOP,t.marginTop||0),"marginBottom"in t&&e.setMargin(xn.default.EDGE_BOTTOM,t.marginBottom||0)},eft=(e,t)=>{"paddingLeft"in t&&e.setPadding(xn.default.EDGE_LEFT,t.paddingLeft||0),"paddingRight"in t&&e.setPadding(xn.default.EDGE_RIGHT,t.paddingRight||0),"paddingTop"in t&&e.setPadding(xn.default.EDGE_TOP,t.paddingTop||0),"paddingBottom"in t&&e.setPadding(xn.default.EDGE_BOTTOM,t.paddingBottom||0)},tft=(e,t)=>{var r;"flexGrow"in t&&e.setFlexGrow((r=t.flexGrow)!==null&&r!==void 0?r:0),"flexShrink"in t&&e.setFlexShrink(typeof t.flexShrink=="number"?t.flexShrink:1),"flexDirection"in t&&(t.flexDirection==="row"&&e.setFlexDirection(xn.default.FLEX_DIRECTION_ROW),t.flexDirection==="row-reverse"&&e.setFlexDirection(xn.default.FLEX_DIRECTION_ROW_REVERSE),t.flexDirection==="column"&&e.setFlexDirection(xn.default.FLEX_DIRECTION_COLUMN),t.flexDirection==="column-reverse"&&e.setFlexDirection(xn.default.FLEX_DIRECTION_COLUMN_REVERSE)),"flexBasis"in t&&(typeof t.flexBasis=="number"?e.setFlexBasis(t.flexBasis):typeof t.flexBasis=="string"?e.setFlexBasisPercent(Number.parseInt(t.flexBasis,10)):e.setFlexBasis(NaN)),"alignItems"in t&&((t.alignItems==="stretch"||!t.alignItems)&&e.setAlignItems(xn.default.ALIGN_STRETCH),t.alignItems==="flex-start"&&e.setAlignItems(xn.default.ALIGN_FLEX_START),t.alignItems==="center"&&e.setAlignItems(xn.default.ALIGN_CENTER),t.alignItems==="flex-end"&&e.setAlignItems(xn.default.ALIGN_FLEX_END)),"alignSelf"in t&&((t.alignSelf==="auto"||!t.alignSelf)&&e.setAlignSelf(xn.default.ALIGN_AUTO),t.alignSelf==="flex-start"&&e.setAlignSelf(xn.default.ALIGN_FLEX_START),t.alignSelf==="center"&&e.setAlignSelf(xn.default.ALIGN_CENTER),t.alignSelf==="flex-end"&&e.setAlignSelf(xn.default.ALIGN_FLEX_END)),"justifyContent"in t&&((t.justifyContent==="flex-start"||!t.justifyContent)&&e.setJustifyContent(xn.default.JUSTIFY_FLEX_START),t.justifyContent==="center"&&e.setJustifyContent(xn.default.JUSTIFY_CENTER),t.justifyContent==="flex-end"&&e.setJustifyContent(xn.default.JUSTIFY_FLEX_END),t.justifyContent==="space-between"&&e.setJustifyContent(xn.default.JUSTIFY_SPACE_BETWEEN),t.justifyContent==="space-around"&&e.setJustifyContent(xn.default.JUSTIFY_SPACE_AROUND))},rft=(e,t)=>{var r,s;"width"in t&&(typeof t.width=="number"?e.setWidth(t.width):typeof t.width=="string"?e.setWidthPercent(Number.parseInt(t.width,10)):e.setWidthAuto()),"height"in t&&(typeof t.height=="number"?e.setHeight(t.height):typeof t.height=="string"?e.setHeightPercent(Number.parseInt(t.height,10)):e.setHeightAuto()),"minWidth"in t&&(typeof t.minWidth=="string"?e.setMinWidthPercent(Number.parseInt(t.minWidth,10)):e.setMinWidth((r=t.minWidth)!==null&&r!==void 0?r:0)),"minHeight"in t&&(typeof t.minHeight=="string"?e.setMinHeightPercent(Number.parseInt(t.minHeight,10)):e.setMinHeight((s=t.minHeight)!==null&&s!==void 0?s:0))},nft=(e,t)=>{"display"in t&&e.setDisplay(t.display==="flex"?xn.default.DISPLAY_FLEX:xn.default.DISPLAY_NONE)},ift=(e,t)=>{if("borderStyle"in t){let r=typeof t.borderStyle=="string"?1:0;e.setBorder(xn.default.EDGE_TOP,r),e.setBorder(xn.default.EDGE_BOTTOM,r),e.setBorder(xn.default.EDGE_LEFT,r),e.setBorder(xn.default.EDGE_RIGHT,r)}};WS.default=(e,t={})=>{Zut(e,t),$ut(e,t),eft(e,t),tft(e,t),rft(e,t),nft(e,t),ift(e,t)}});var RIe=G((HVt,QIe)=>{"use strict";var YS=GS(),sft=dk(),oft=ik(),Bq=new Set(["\x1B","\x9B"]),aft=39,kIe=e=>`${Bq.values().next().value}[${e}m`,lft=e=>e.split(" ").map(t=>YS(t)),wq=(e,t,r)=>{let s=[...t],a=!1,n=YS(sft(e[e.length-1]));for(let[c,f]of s.entries()){let p=YS(f);if(n+p<=r?e[e.length-1]+=f:(e.push(f),n=0),Bq.has(f))a=!0;else if(a&&f==="m"){a=!1;continue}a||(n+=p,n===r&&c0&&e.length>1&&(e[e.length-2]+=e.pop())},cft=e=>{let t=e.split(" "),r=t.length;for(;r>0&&!(YS(t[r-1])>0);)r--;return r===t.length?e:t.slice(0,r).join(" ")+t.slice(r).join("")},uft=(e,t,r={})=>{if(r.trim!==!1&&e.trim()==="")return"";let s="",a="",n,c=lft(e),f=[""];for(let[p,h]of e.split(" ").entries()){r.trim!==!1&&(f[f.length-1]=f[f.length-1].trimLeft());let E=YS(f[f.length-1]);if(p!==0&&(E>=t&&(r.wordWrap===!1||r.trim===!1)&&(f.push(""),E=0),(E>0||r.trim===!1)&&(f[f.length-1]+=" ",E++)),r.hard&&c[p]>t){let C=t-E,S=1+Math.floor((c[p]-C-1)/t);Math.floor((c[p]-1)/t)t&&E>0&&c[p]>0){if(r.wordWrap===!1&&Et&&r.wordWrap===!1){wq(f,h,t);continue}f[f.length-1]+=h}r.trim!==!1&&(f=f.map(cft)),s=f.join(` +`);for(let[p,h]of[...s].entries()){if(a+=h,Bq.has(h)){let C=parseFloat(/\d[^m]*/.exec(s.slice(p,p+4)));n=C===aft?null:C}let E=oft.codes.get(Number(n));n&&E&&(s[p+1]===` +`?a+=kIe(E):h===` +`&&(a+=kIe(n)))}return a};QIe.exports=(e,t,r)=>String(e).normalize().replace(/\r\n/g,` +`).split(` +`).map(s=>uft(s,t,r)).join(` +`)});var NIe=G((jVt,FIe)=>{"use strict";var TIe="[\uD800-\uDBFF][\uDC00-\uDFFF]",fft=e=>e&&e.exact?new RegExp(`^${TIe}$`):new RegExp(TIe,"g");FIe.exports=fft});var vq=G((GVt,UIe)=>{"use strict";var Aft=mq(),pft=NIe(),OIe=ik(),MIe=["\x1B","\x9B"],EF=e=>`${MIe[0]}[${e}m`,LIe=(e,t,r)=>{let s=[];e=[...e];for(let a of e){let n=a;a.match(";")&&(a=a.split(";")[0][0]+"0");let c=OIe.codes.get(parseInt(a,10));if(c){let f=e.indexOf(c.toString());f>=0?e.splice(f,1):s.push(EF(t?c:n))}else if(t){s.push(EF(0));break}else s.push(EF(n))}if(t&&(s=s.filter((a,n)=>s.indexOf(a)===n),r!==void 0)){let a=EF(OIe.codes.get(parseInt(r,10)));s=s.reduce((n,c)=>c===a?[c,...n]:[...n,c],[])}return s.join("")};UIe.exports=(e,t,r)=>{let s=[...e.normalize()],a=[];r=typeof r=="number"?r:s.length;let n=!1,c,f=0,p="";for(let[h,E]of s.entries()){let C=!1;if(MIe.includes(E)){let S=/\d[^m]*/.exec(e.slice(h,h+18));c=S&&S.length>0?S[0]:void 0,ft&&f<=r)p+=E;else if(f===t&&!n&&c!==void 0)p=LIe(a);else if(f>=r){p+=LIe(a,!0,c);break}}return p}});var HIe=G((qVt,_Ie)=>{"use strict";var X0=vq(),hft=GS();function IF(e,t,r){if(e.charAt(t)===" ")return t;for(let s=1;s<=3;s++)if(r){if(e.charAt(t+s)===" ")return t+s}else if(e.charAt(t-s)===" ")return t-s;return t}_Ie.exports=(e,t,r)=>{r={position:"end",preferTruncationOnSpace:!1,...r};let{position:s,space:a,preferTruncationOnSpace:n}=r,c="\u2026",f=1;if(typeof e!="string")throw new TypeError(`Expected \`input\` to be a string, got ${typeof e}`);if(typeof t!="number")throw new TypeError(`Expected \`columns\` to be a number, got ${typeof t}`);if(t<1)return"";if(t===1)return c;let p=hft(e);if(p<=t)return e;if(s==="start"){if(n){let h=IF(e,p-t+1,!0);return c+X0(e,h,p).trim()}return a===!0&&(c+=" ",f=2),c+X0(e,p-t+f,p)}if(s==="middle"){a===!0&&(c=" "+c+" ",f=3);let h=Math.floor(t/2);if(n){let E=IF(e,h),C=IF(e,p-(t-h)+1,!0);return X0(e,0,E)+c+X0(e,C,p).trim()}return X0(e,0,h)+c+X0(e,p-(t-h)+f,p)}if(s==="end"){if(n){let h=IF(e,t-1);return X0(e,0,h)+c}return a===!0&&(c=" "+c,f=2),X0(e,0,t-f)+c}throw new Error(`Expected \`options.position\` to be either \`start\`, \`middle\` or \`end\`, got ${s}`)}});var Dq=G(VS=>{"use strict";var jIe=VS&&VS.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(VS,"__esModule",{value:!0});var dft=jIe(RIe()),gft=jIe(HIe()),Sq={};VS.default=(e,t,r)=>{let s=e+String(t)+String(r);if(Sq[s])return Sq[s];let a=e;if(r==="wrap"&&(a=dft.default(e,t,{trim:!1,hard:!0})),r.startsWith("truncate")){let n="end";r==="truncate-middle"&&(n="middle"),r==="truncate-start"&&(n="start"),a=gft.default(e,t,{position:n})}return Sq[s]=a,a}});var Pq=G(bq=>{"use strict";Object.defineProperty(bq,"__esModule",{value:!0});var GIe=e=>{let t="";if(e.childNodes.length>0)for(let r of e.childNodes){let s="";r.nodeName==="#text"?s=r.nodeValue:((r.nodeName==="ink-text"||r.nodeName==="ink-virtual-text")&&(s=GIe(r)),s.length>0&&typeof r.internal_transform=="function"&&(s=r.internal_transform(s))),t+=s}return t};bq.default=GIe});var xq=G(bi=>{"use strict";var JS=bi&&bi.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(bi,"__esModule",{value:!0});bi.setTextNodeValue=bi.createTextNode=bi.setStyle=bi.setAttribute=bi.removeChildNode=bi.insertBeforeNode=bi.appendChildNode=bi.createNode=bi.TEXT_NAME=void 0;var mft=JS(Lm()),qIe=JS(PIe()),yft=JS(xIe()),Eft=JS(Dq()),Ift=JS(Pq());bi.TEXT_NAME="#text";bi.createNode=e=>{var t;let r={nodeName:e,style:{},attributes:{},childNodes:[],parentNode:null,yogaNode:e==="ink-virtual-text"?void 0:mft.default.Node.create()};return e==="ink-text"&&((t=r.yogaNode)===null||t===void 0||t.setMeasureFunc(Cft.bind(null,r))),r};bi.appendChildNode=(e,t)=>{var r;t.parentNode&&bi.removeChildNode(t.parentNode,t),t.parentNode=e,e.childNodes.push(t),t.yogaNode&&((r=e.yogaNode)===null||r===void 0||r.insertChild(t.yogaNode,e.yogaNode.getChildCount())),(e.nodeName==="ink-text"||e.nodeName==="ink-virtual-text")&&CF(e)};bi.insertBeforeNode=(e,t,r)=>{var s,a;t.parentNode&&bi.removeChildNode(t.parentNode,t),t.parentNode=e;let n=e.childNodes.indexOf(r);if(n>=0){e.childNodes.splice(n,0,t),t.yogaNode&&((s=e.yogaNode)===null||s===void 0||s.insertChild(t.yogaNode,n));return}e.childNodes.push(t),t.yogaNode&&((a=e.yogaNode)===null||a===void 0||a.insertChild(t.yogaNode,e.yogaNode.getChildCount())),(e.nodeName==="ink-text"||e.nodeName==="ink-virtual-text")&&CF(e)};bi.removeChildNode=(e,t)=>{var r,s;t.yogaNode&&((s=(r=t.parentNode)===null||r===void 0?void 0:r.yogaNode)===null||s===void 0||s.removeChild(t.yogaNode)),t.parentNode=null;let a=e.childNodes.indexOf(t);a>=0&&e.childNodes.splice(a,1),(e.nodeName==="ink-text"||e.nodeName==="ink-virtual-text")&&CF(e)};bi.setAttribute=(e,t,r)=>{e.attributes[t]=r};bi.setStyle=(e,t)=>{e.style=t,e.yogaNode&&yft.default(e.yogaNode,t)};bi.createTextNode=e=>{let t={nodeName:"#text",nodeValue:e,yogaNode:void 0,parentNode:null,style:{}};return bi.setTextNodeValue(t,e),t};var Cft=function(e,t){var r,s;let a=e.nodeName==="#text"?e.nodeValue:Ift.default(e),n=qIe.default(a);if(n.width<=t||n.width>=1&&t>0&&t<1)return n;let c=(s=(r=e.style)===null||r===void 0?void 0:r.textWrap)!==null&&s!==void 0?s:"wrap",f=Eft.default(a,t,c);return qIe.default(f)},WIe=e=>{var t;if(!(!e||!e.parentNode))return(t=e.yogaNode)!==null&&t!==void 0?t:WIe(e.parentNode)},CF=e=>{let t=WIe(e);t?.markDirty()};bi.setTextNodeValue=(e,t)=>{typeof t!="string"&&(t=String(t)),e.nodeValue=t,CF(e)}});var zIe=G(KS=>{"use strict";var KIe=KS&&KS.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(KS,"__esModule",{value:!0});var YIe=fq(),wft=KIe(hIe()),VIe=KIe(Lm()),sa=xq(),JIe=e=>{e?.unsetMeasureFunc(),e?.freeRecursive()};KS.default=wft.default({schedulePassiveEffects:YIe.unstable_scheduleCallback,cancelPassiveEffects:YIe.unstable_cancelCallback,now:Date.now,getRootHostContext:()=>({isInsideText:!1}),prepareForCommit:()=>null,preparePortalMount:()=>null,clearContainer:()=>!1,shouldDeprioritizeSubtree:()=>!1,resetAfterCommit:e=>{if(e.isStaticDirty){e.isStaticDirty=!1,typeof e.onImmediateRender=="function"&&e.onImmediateRender();return}typeof e.onRender=="function"&&e.onRender()},getChildHostContext:(e,t)=>{let r=e.isInsideText,s=t==="ink-text"||t==="ink-virtual-text";return r===s?e:{isInsideText:s}},shouldSetTextContent:()=>!1,createInstance:(e,t,r,s)=>{if(s.isInsideText&&e==="ink-box")throw new Error(" can\u2019t be nested inside component");let a=e==="ink-text"&&s.isInsideText?"ink-virtual-text":e,n=sa.createNode(a);for(let[c,f]of Object.entries(t))c!=="children"&&(c==="style"?sa.setStyle(n,f):c==="internal_transform"?n.internal_transform=f:c==="internal_static"?n.internal_static=!0:sa.setAttribute(n,c,f));return n},createTextInstance:(e,t,r)=>{if(!r.isInsideText)throw new Error(`Text string "${e}" must be rendered inside component`);return sa.createTextNode(e)},resetTextContent:()=>{},hideTextInstance:e=>{sa.setTextNodeValue(e,"")},unhideTextInstance:(e,t)=>{sa.setTextNodeValue(e,t)},getPublicInstance:e=>e,hideInstance:e=>{var t;(t=e.yogaNode)===null||t===void 0||t.setDisplay(VIe.default.DISPLAY_NONE)},unhideInstance:e=>{var t;(t=e.yogaNode)===null||t===void 0||t.setDisplay(VIe.default.DISPLAY_FLEX)},appendInitialChild:sa.appendChildNode,appendChild:sa.appendChildNode,insertBefore:sa.insertBeforeNode,finalizeInitialChildren:(e,t,r,s)=>(e.internal_static&&(s.isStaticDirty=!0,s.staticNode=e),!1),supportsMutation:!0,appendChildToContainer:sa.appendChildNode,insertInContainerBefore:sa.insertBeforeNode,removeChildFromContainer:(e,t)=>{sa.removeChildNode(e,t),JIe(t.yogaNode)},prepareUpdate:(e,t,r,s,a)=>{e.internal_static&&(a.isStaticDirty=!0);let n={},c=Object.keys(s);for(let f of c)if(s[f]!==r[f]){if(f==="style"&&typeof s.style=="object"&&typeof r.style=="object"){let h=s.style,E=r.style,C=Object.keys(h);for(let S of C){if(S==="borderStyle"||S==="borderColor"){if(typeof n.style!="object"){let x={};n.style=x}n.style.borderStyle=h.borderStyle,n.style.borderColor=h.borderColor}if(h[S]!==E[S]){if(typeof n.style!="object"){let x={};n.style=x}n.style[S]=h[S]}}continue}n[f]=s[f]}return n},commitUpdate:(e,t)=>{for(let[r,s]of Object.entries(t))r!=="children"&&(r==="style"?sa.setStyle(e,s):r==="internal_transform"?e.internal_transform=s:r==="internal_static"?e.internal_static=!0:sa.setAttribute(e,r,s))},commitTextUpdate:(e,t,r)=>{sa.setTextNodeValue(e,r)},removeChild:(e,t)=>{sa.removeChildNode(e,t),JIe(t.yogaNode)}})});var ZIe=G((KVt,XIe)=>{"use strict";XIe.exports=(e,t=1,r)=>{if(r={indent:" ",includeEmptyLines:!1,...r},typeof e!="string")throw new TypeError(`Expected \`input\` to be a \`string\`, got \`${typeof e}\``);if(typeof t!="number")throw new TypeError(`Expected \`count\` to be a \`number\`, got \`${typeof t}\``);if(typeof r.indent!="string")throw new TypeError(`Expected \`options.indent\` to be a \`string\`, got \`${typeof r.indent}\``);if(t===0)return e;let s=r.includeEmptyLines?/^/gm:/^(?!\s*$)/gm;return e.replace(s,r.indent.repeat(t))}});var $Ie=G(zS=>{"use strict";var Bft=zS&&zS.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(zS,"__esModule",{value:!0});var wF=Bft(Lm());zS.default=e=>e.getComputedWidth()-e.getComputedPadding(wF.default.EDGE_LEFT)-e.getComputedPadding(wF.default.EDGE_RIGHT)-e.getComputedBorder(wF.default.EDGE_LEFT)-e.getComputedBorder(wF.default.EDGE_RIGHT)});var eCe=G((XVt,vft)=>{vft.exports={single:{topLeft:"\u250C",topRight:"\u2510",bottomRight:"\u2518",bottomLeft:"\u2514",vertical:"\u2502",horizontal:"\u2500"},double:{topLeft:"\u2554",topRight:"\u2557",bottomRight:"\u255D",bottomLeft:"\u255A",vertical:"\u2551",horizontal:"\u2550"},round:{topLeft:"\u256D",topRight:"\u256E",bottomRight:"\u256F",bottomLeft:"\u2570",vertical:"\u2502",horizontal:"\u2500"},bold:{topLeft:"\u250F",topRight:"\u2513",bottomRight:"\u251B",bottomLeft:"\u2517",vertical:"\u2503",horizontal:"\u2501"},singleDouble:{topLeft:"\u2553",topRight:"\u2556",bottomRight:"\u255C",bottomLeft:"\u2559",vertical:"\u2551",horizontal:"\u2500"},doubleSingle:{topLeft:"\u2552",topRight:"\u2555",bottomRight:"\u255B",bottomLeft:"\u2558",vertical:"\u2502",horizontal:"\u2550"},classic:{topLeft:"+",topRight:"+",bottomRight:"+",bottomLeft:"+",vertical:"|",horizontal:"-"}}});var rCe=G((ZVt,kq)=>{"use strict";var tCe=eCe();kq.exports=tCe;kq.exports.default=tCe});var Qq=G(ZS=>{"use strict";var Sft=ZS&&ZS.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ZS,"__esModule",{value:!0});var XS=Sft(NE()),Dft=/^(rgb|hsl|hsv|hwb)\(\s?(\d+),\s?(\d+),\s?(\d+)\s?\)$/,bft=/^(ansi|ansi256)\(\s?(\d+)\s?\)$/,BF=(e,t)=>t==="foreground"?e:"bg"+e[0].toUpperCase()+e.slice(1);ZS.default=(e,t,r)=>{if(!t)return e;if(t in XS.default){let a=BF(t,r);return XS.default[a](e)}if(t.startsWith("#")){let a=BF("hex",r);return XS.default[a](t)(e)}if(t.startsWith("ansi")){let a=bft.exec(t);if(!a)return e;let n=BF(a[1],r),c=Number(a[2]);return XS.default[n](c)(e)}if(t.startsWith("rgb")||t.startsWith("hsl")||t.startsWith("hsv")||t.startsWith("hwb")){let a=Dft.exec(t);if(!a)return e;let n=BF(a[1],r),c=Number(a[2]),f=Number(a[3]),p=Number(a[4]);return XS.default[n](c,f,p)(e)}return e}});var iCe=G($S=>{"use strict";var nCe=$S&&$S.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty($S,"__esModule",{value:!0});var Pft=nCe(rCe()),Rq=nCe(Qq());$S.default=(e,t,r,s)=>{if(typeof r.style.borderStyle=="string"){let a=r.yogaNode.getComputedWidth(),n=r.yogaNode.getComputedHeight(),c=r.style.borderColor,f=Pft.default[r.style.borderStyle],p=Rq.default(f.topLeft+f.horizontal.repeat(a-2)+f.topRight,c,"foreground"),h=(Rq.default(f.vertical,c,"foreground")+` +`).repeat(n-2),E=Rq.default(f.bottomLeft+f.horizontal.repeat(a-2)+f.bottomRight,c,"foreground");s.write(e,t,p,{transformers:[]}),s.write(e,t+1,h,{transformers:[]}),s.write(e+a-1,t+1,h,{transformers:[]}),s.write(e,t+n-1,E,{transformers:[]})}}});var oCe=G(eD=>{"use strict";var Mm=eD&&eD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(eD,"__esModule",{value:!0});var xft=Mm(Lm()),kft=Mm(Iq()),Qft=Mm(ZIe()),Rft=Mm(Dq()),Tft=Mm($Ie()),Fft=Mm(Pq()),Nft=Mm(iCe()),Oft=(e,t)=>{var r;let s=(r=e.childNodes[0])===null||r===void 0?void 0:r.yogaNode;if(s){let a=s.getComputedLeft(),n=s.getComputedTop();t=` +`.repeat(n)+Qft.default(t,a)}return t},sCe=(e,t,r)=>{var s;let{offsetX:a=0,offsetY:n=0,transformers:c=[],skipStaticElements:f}=r;if(f&&e.internal_static)return;let{yogaNode:p}=e;if(p){if(p.getDisplay()===xft.default.DISPLAY_NONE)return;let h=a+p.getComputedLeft(),E=n+p.getComputedTop(),C=c;if(typeof e.internal_transform=="function"&&(C=[e.internal_transform,...c]),e.nodeName==="ink-text"){let S=Fft.default(e);if(S.length>0){let x=kft.default(S),I=Tft.default(p);if(x>I){let T=(s=e.style.textWrap)!==null&&s!==void 0?s:"wrap";S=Rft.default(S,I,T)}S=Oft(e,S),t.write(h,E,S,{transformers:C})}return}if(e.nodeName==="ink-box"&&Nft.default(h,E,e,t),e.nodeName==="ink-root"||e.nodeName==="ink-box")for(let S of e.childNodes)sCe(S,t,{offsetX:h,offsetY:E,transformers:C,skipStaticElements:f})}};eD.default=sCe});var cCe=G(tD=>{"use strict";var lCe=tD&&tD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(tD,"__esModule",{value:!0});var aCe=lCe(vq()),Lft=lCe(GS()),Tq=class{constructor(t){this.writes=[];let{width:r,height:s}=t;this.width=r,this.height=s}write(t,r,s,a){let{transformers:n}=a;s&&this.writes.push({x:t,y:r,text:s,transformers:n})}get(){let t=[];for(let s=0;ss.trimRight()).join(` +`),height:t.length}}};tD.default=Tq});var ACe=G(rD=>{"use strict";var Fq=rD&&rD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(rD,"__esModule",{value:!0});var Mft=Fq(Lm()),uCe=Fq(oCe()),fCe=Fq(cCe());rD.default=(e,t)=>{var r;if(e.yogaNode.setWidth(t),e.yogaNode){e.yogaNode.calculateLayout(void 0,void 0,Mft.default.DIRECTION_LTR);let s=new fCe.default({width:e.yogaNode.getComputedWidth(),height:e.yogaNode.getComputedHeight()});uCe.default(e,s,{skipStaticElements:!0});let a;!((r=e.staticNode)===null||r===void 0)&&r.yogaNode&&(a=new fCe.default({width:e.staticNode.yogaNode.getComputedWidth(),height:e.staticNode.yogaNode.getComputedHeight()}),uCe.default(e.staticNode,a,{skipStaticElements:!1}));let{output:n,height:c}=s.get();return{output:n,outputHeight:c,staticOutput:a?`${a.get().output} +`:""}}return{output:"",outputHeight:0,staticOutput:""}}});var gCe=G((i7t,dCe)=>{"use strict";var pCe=Ie("stream"),hCe=["assert","count","countReset","debug","dir","dirxml","error","group","groupCollapsed","groupEnd","info","log","table","time","timeEnd","timeLog","trace","warn"],Nq={},Uft=e=>{let t=new pCe.PassThrough,r=new pCe.PassThrough;t.write=a=>e("stdout",a),r.write=a=>e("stderr",a);let s=new console.Console(t,r);for(let a of hCe)Nq[a]=console[a],console[a]=s[a];return()=>{for(let a of hCe)console[a]=Nq[a];Nq={}}};dCe.exports=Uft});var Lq=G(Oq=>{"use strict";Object.defineProperty(Oq,"__esModule",{value:!0});Oq.default=new WeakMap});var Uq=G(Mq=>{"use strict";Object.defineProperty(Mq,"__esModule",{value:!0});var _ft=dn(),mCe=_ft.createContext({exit:()=>{}});mCe.displayName="InternalAppContext";Mq.default=mCe});var Hq=G(_q=>{"use strict";Object.defineProperty(_q,"__esModule",{value:!0});var Hft=dn(),yCe=Hft.createContext({stdin:void 0,setRawMode:()=>{},isRawModeSupported:!1,internal_exitOnCtrlC:!0});yCe.displayName="InternalStdinContext";_q.default=yCe});var Gq=G(jq=>{"use strict";Object.defineProperty(jq,"__esModule",{value:!0});var jft=dn(),ECe=jft.createContext({stdout:void 0,write:()=>{}});ECe.displayName="InternalStdoutContext";jq.default=ECe});var Wq=G(qq=>{"use strict";Object.defineProperty(qq,"__esModule",{value:!0});var Gft=dn(),ICe=Gft.createContext({stderr:void 0,write:()=>{}});ICe.displayName="InternalStderrContext";qq.default=ICe});var vF=G(Yq=>{"use strict";Object.defineProperty(Yq,"__esModule",{value:!0});var qft=dn(),CCe=qft.createContext({activeId:void 0,add:()=>{},remove:()=>{},activate:()=>{},deactivate:()=>{},enableFocus:()=>{},disableFocus:()=>{},focusNext:()=>{},focusPrevious:()=>{},focus:()=>{}});CCe.displayName="InternalFocusContext";Yq.default=CCe});var BCe=G((f7t,wCe)=>{"use strict";var Wft=/[|\\{}()[\]^$+*?.-]/g;wCe.exports=e=>{if(typeof e!="string")throw new TypeError("Expected a string");return e.replace(Wft,"\\$&")}});var bCe=G((A7t,DCe)=>{"use strict";var Yft=BCe(),Vft=typeof process=="object"&&process&&typeof process.cwd=="function"?process.cwd():".",SCe=[].concat(Ie("module").builtinModules,"bootstrap_node","node").map(e=>new RegExp(`(?:\\((?:node:)?${e}(?:\\.js)?:\\d+:\\d+\\)$|^\\s*at (?:node:)?${e}(?:\\.js)?:\\d+:\\d+$)`));SCe.push(/\((?:node:)?internal\/[^:]+:\d+:\d+\)$/,/\s*at (?:node:)?internal\/[^:]+:\d+:\d+$/,/\/\.node-spawn-wrap-\w+-\w+\/node:\d+:\d+\)?$/);var Vq=class e{constructor(t){t={ignoredPackages:[],...t},"internals"in t||(t.internals=e.nodeInternals()),"cwd"in t||(t.cwd=Vft),this._cwd=t.cwd.replace(/\\/g,"/"),this._internals=[].concat(t.internals,Jft(t.ignoredPackages)),this._wrapCallSite=t.wrapCallSite||!1}static nodeInternals(){return[...SCe]}clean(t,r=0){r=" ".repeat(r),Array.isArray(t)||(t=t.split(` +`)),!/^\s*at /.test(t[0])&&/^\s*at /.test(t[1])&&(t=t.slice(1));let s=!1,a=null,n=[];return t.forEach(c=>{if(c=c.replace(/\\/g,"/"),this._internals.some(p=>p.test(c)))return;let f=/^\s*at /.test(c);s?c=c.trimEnd().replace(/^(\s+)at /,"$1"):(c=c.trim(),f&&(c=c.slice(3))),c=c.replace(`${this._cwd}/`,""),c&&(f?(a&&(n.push(a),a=null),n.push(c)):(s=!0,a=c))}),n.map(c=>`${r}${c} +`).join("")}captureString(t,r=this.captureString){typeof t=="function"&&(r=t,t=1/0);let{stackTraceLimit:s}=Error;t&&(Error.stackTraceLimit=t);let a={};Error.captureStackTrace(a,r);let{stack:n}=a;return Error.stackTraceLimit=s,this.clean(n)}capture(t,r=this.capture){typeof t=="function"&&(r=t,t=1/0);let{prepareStackTrace:s,stackTraceLimit:a}=Error;Error.prepareStackTrace=(f,p)=>this._wrapCallSite?p.map(this._wrapCallSite):p,t&&(Error.stackTraceLimit=t);let n={};Error.captureStackTrace(n,r);let{stack:c}=n;return Object.assign(Error,{prepareStackTrace:s,stackTraceLimit:a}),c}at(t=this.at){let[r]=this.capture(1,t);if(!r)return{};let s={line:r.getLineNumber(),column:r.getColumnNumber()};vCe(s,r.getFileName(),this._cwd),r.isConstructor()&&(s.constructor=!0),r.isEval()&&(s.evalOrigin=r.getEvalOrigin()),r.isNative()&&(s.native=!0);let a;try{a=r.getTypeName()}catch{}a&&a!=="Object"&&a!=="[object Object]"&&(s.type=a);let n=r.getFunctionName();n&&(s.function=n);let c=r.getMethodName();return c&&n!==c&&(s.method=c),s}parseLine(t){let r=t&&t.match(Kft);if(!r)return null;let s=r[1]==="new",a=r[2],n=r[3],c=r[4],f=Number(r[5]),p=Number(r[6]),h=r[7],E=r[8],C=r[9],S=r[10]==="native",x=r[11]===")",I,T={};if(E&&(T.line=Number(E)),C&&(T.column=Number(C)),x&&h){let O=0;for(let U=h.length-1;U>0;U--)if(h.charAt(U)===")")O++;else if(h.charAt(U)==="("&&h.charAt(U-1)===" "&&(O--,O===-1&&h.charAt(U-1)===" ")){let V=h.slice(0,U-1);h=h.slice(U+1),a+=` (${V}`;break}}if(a){let O=a.match(zft);O&&(a=O[1],I=O[2])}return vCe(T,h,this._cwd),s&&(T.constructor=!0),n&&(T.evalOrigin=n,T.evalLine=f,T.evalColumn=p,T.evalFile=c&&c.replace(/\\/g,"/")),S&&(T.native=!0),a&&(T.function=a),I&&a!==I&&(T.method=I),T}};function vCe(e,t,r){t&&(t=t.replace(/\\/g,"/"),t.startsWith(`${r}/`)&&(t=t.slice(r.length+1)),e.file=t)}function Jft(e){if(e.length===0)return[];let t=e.map(r=>Yft(r));return new RegExp(`[/\\\\]node_modules[/\\\\](?:${t.join("|")})[/\\\\][^:]+:\\d+:\\d+`)}var Kft=new RegExp("^(?:\\s*at )?(?:(new) )?(?:(.*?) \\()?(?:eval at ([^ ]+) \\((.+?):(\\d+):(\\d+)\\), )?(?:(.+?):(\\d+):(\\d+)|(native))(\\)?)$"),zft=/^(.*?) \[as (.*?)\]$/;DCe.exports=Vq});var xCe=G((p7t,PCe)=>{"use strict";PCe.exports=(e,t)=>e.replace(/^\t+/gm,r=>" ".repeat(r.length*(t||2)))});var QCe=G((h7t,kCe)=>{"use strict";var Xft=xCe(),Zft=(e,t)=>{let r=[],s=e-t,a=e+t;for(let n=s;n<=a;n++)r.push(n);return r};kCe.exports=(e,t,r)=>{if(typeof e!="string")throw new TypeError("Source code is missing.");if(!t||t<1)throw new TypeError("Line number must start from `1`.");if(e=Xft(e).split(/\r?\n/),!(t>e.length))return r={around:3,...r},Zft(t,r.around).filter(s=>e[s-1]!==void 0).map(s=>({line:s,value:e[s-1]}))}});var SF=G(sf=>{"use strict";var $ft=sf&&sf.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r),Object.defineProperty(e,s,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),eAt=sf&&sf.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),tAt=sf&&sf.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.hasOwnProperty.call(e,r)&&$ft(t,e,r);return eAt(t,e),t},rAt=sf&&sf.__rest||function(e,t){var r={};for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&t.indexOf(s)<0&&(r[s]=e[s]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,s=Object.getOwnPropertySymbols(e);a{var{children:r}=e,s=rAt(e,["children"]);let a=Object.assign(Object.assign({},s),{marginLeft:s.marginLeft||s.marginX||s.margin||0,marginRight:s.marginRight||s.marginX||s.margin||0,marginTop:s.marginTop||s.marginY||s.margin||0,marginBottom:s.marginBottom||s.marginY||s.margin||0,paddingLeft:s.paddingLeft||s.paddingX||s.padding||0,paddingRight:s.paddingRight||s.paddingX||s.padding||0,paddingTop:s.paddingTop||s.paddingY||s.padding||0,paddingBottom:s.paddingBottom||s.paddingY||s.padding||0});return RCe.default.createElement("ink-box",{ref:t,style:a},r)});Jq.displayName="Box";Jq.defaultProps={flexDirection:"row",flexGrow:0,flexShrink:1};sf.default=Jq});var Xq=G(nD=>{"use strict";var Kq=nD&&nD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(nD,"__esModule",{value:!0});var nAt=Kq(dn()),cw=Kq(NE()),TCe=Kq(Qq()),zq=({color:e,backgroundColor:t,dimColor:r,bold:s,italic:a,underline:n,strikethrough:c,inverse:f,wrap:p,children:h})=>{if(h==null)return null;let E=C=>(r&&(C=cw.default.dim(C)),e&&(C=TCe.default(C,e,"foreground")),t&&(C=TCe.default(C,t,"background")),s&&(C=cw.default.bold(C)),a&&(C=cw.default.italic(C)),n&&(C=cw.default.underline(C)),c&&(C=cw.default.strikethrough(C)),f&&(C=cw.default.inverse(C)),C);return nAt.default.createElement("ink-text",{style:{flexGrow:0,flexShrink:1,flexDirection:"row",textWrap:p},internal_transform:E},h)};zq.displayName="Text";zq.defaultProps={dimColor:!1,bold:!1,italic:!1,underline:!1,strikethrough:!1,wrap:"wrap"};nD.default=zq});var LCe=G(of=>{"use strict";var iAt=of&&of.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r),Object.defineProperty(e,s,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),sAt=of&&of.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),oAt=of&&of.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.hasOwnProperty.call(e,r)&&iAt(t,e,r);return sAt(t,e),t},iD=of&&of.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(of,"__esModule",{value:!0});var FCe=oAt(Ie("fs")),Fs=iD(dn()),NCe=iD(bCe()),aAt=iD(QCe()),$p=iD(SF()),hA=iD(Xq()),OCe=new NCe.default({cwd:process.cwd(),internals:NCe.default.nodeInternals()}),lAt=({error:e})=>{let t=e.stack?e.stack.split(` +`).slice(1):void 0,r=t?OCe.parseLine(t[0]):void 0,s,a=0;if(r?.file&&r?.line&&FCe.existsSync(r.file)){let n=FCe.readFileSync(r.file,"utf8");if(s=aAt.default(n,r.line),s)for(let{line:c}of s)a=Math.max(a,String(c).length)}return Fs.default.createElement($p.default,{flexDirection:"column",padding:1},Fs.default.createElement($p.default,null,Fs.default.createElement(hA.default,{backgroundColor:"red",color:"white"}," ","ERROR"," "),Fs.default.createElement(hA.default,null," ",e.message)),r&&Fs.default.createElement($p.default,{marginTop:1},Fs.default.createElement(hA.default,{dimColor:!0},r.file,":",r.line,":",r.column)),r&&s&&Fs.default.createElement($p.default,{marginTop:1,flexDirection:"column"},s.map(({line:n,value:c})=>Fs.default.createElement($p.default,{key:n},Fs.default.createElement($p.default,{width:a+1},Fs.default.createElement(hA.default,{dimColor:n!==r.line,backgroundColor:n===r.line?"red":void 0,color:n===r.line?"white":void 0},String(n).padStart(a," "),":")),Fs.default.createElement(hA.default,{key:n,backgroundColor:n===r.line?"red":void 0,color:n===r.line?"white":void 0}," "+c)))),e.stack&&Fs.default.createElement($p.default,{marginTop:1,flexDirection:"column"},e.stack.split(` +`).slice(1).map(n=>{let c=OCe.parseLine(n);return c?Fs.default.createElement($p.default,{key:n},Fs.default.createElement(hA.default,{dimColor:!0},"- "),Fs.default.createElement(hA.default,{dimColor:!0,bold:!0},c.function),Fs.default.createElement(hA.default,{dimColor:!0,color:"gray"}," ","(",c.file,":",c.line,":",c.column,")")):Fs.default.createElement($p.default,{key:n},Fs.default.createElement(hA.default,{dimColor:!0},"- "),Fs.default.createElement(hA.default,{dimColor:!0,bold:!0},n))})))};of.default=lAt});var UCe=G(af=>{"use strict";var cAt=af&&af.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r),Object.defineProperty(e,s,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),uAt=af&&af.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),fAt=af&&af.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.hasOwnProperty.call(e,r)&&cAt(t,e,r);return uAt(t,e),t},_m=af&&af.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(af,"__esModule",{value:!0});var Um=fAt(dn()),MCe=_m($9()),AAt=_m(Uq()),pAt=_m(Hq()),hAt=_m(Gq()),dAt=_m(Wq()),gAt=_m(vF()),mAt=_m(LCe()),yAt=" ",EAt="\x1B[Z",IAt="\x1B",DF=class extends Um.PureComponent{constructor(){super(...arguments),this.state={isFocusEnabled:!0,activeFocusId:void 0,focusables:[],error:void 0},this.rawModeEnabledCount=0,this.handleSetRawMode=t=>{let{stdin:r}=this.props;if(!this.isRawModeSupported())throw r===process.stdin?new Error(`Raw mode is not supported on the current process.stdin, which Ink uses as input stream by default. +Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`):new Error(`Raw mode is not supported on the stdin provided to Ink. +Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`);if(r.setEncoding("utf8"),t){this.rawModeEnabledCount===0&&(r.addListener("data",this.handleInput),r.resume(),r.setRawMode(!0)),this.rawModeEnabledCount++;return}--this.rawModeEnabledCount===0&&(r.setRawMode(!1),r.removeListener("data",this.handleInput),r.pause())},this.handleInput=t=>{t===""&&this.props.exitOnCtrlC&&this.handleExit(),t===IAt&&this.state.activeFocusId&&this.setState({activeFocusId:void 0}),this.state.isFocusEnabled&&this.state.focusables.length>0&&(t===yAt&&this.focusNext(),t===EAt&&this.focusPrevious())},this.handleExit=t=>{this.isRawModeSupported()&&this.handleSetRawMode(!1),this.props.onExit(t)},this.enableFocus=()=>{this.setState({isFocusEnabled:!0})},this.disableFocus=()=>{this.setState({isFocusEnabled:!1})},this.focus=t=>{this.setState(r=>r.focusables.some(a=>a?.id===t)?{activeFocusId:t}:r)},this.focusNext=()=>{this.setState(t=>{var r;let s=(r=t.focusables[0])===null||r===void 0?void 0:r.id;return{activeFocusId:this.findNextFocusable(t)||s}})},this.focusPrevious=()=>{this.setState(t=>{var r;let s=(r=t.focusables[t.focusables.length-1])===null||r===void 0?void 0:r.id;return{activeFocusId:this.findPreviousFocusable(t)||s}})},this.addFocusable=(t,{autoFocus:r})=>{this.setState(s=>{let a=s.activeFocusId;return!a&&r&&(a=t),{activeFocusId:a,focusables:[...s.focusables,{id:t,isActive:!0}]}})},this.removeFocusable=t=>{this.setState(r=>({activeFocusId:r.activeFocusId===t?void 0:r.activeFocusId,focusables:r.focusables.filter(s=>s.id!==t)}))},this.activateFocusable=t=>{this.setState(r=>({focusables:r.focusables.map(s=>s.id!==t?s:{id:t,isActive:!0})}))},this.deactivateFocusable=t=>{this.setState(r=>({activeFocusId:r.activeFocusId===t?void 0:r.activeFocusId,focusables:r.focusables.map(s=>s.id!==t?s:{id:t,isActive:!1})}))},this.findNextFocusable=t=>{var r;let s=t.focusables.findIndex(a=>a.id===t.activeFocusId);for(let a=s+1;a{var r;let s=t.focusables.findIndex(a=>a.id===t.activeFocusId);for(let a=s-1;a>=0;a--)if(!((r=t.focusables[a])===null||r===void 0)&&r.isActive)return t.focusables[a].id}}static getDerivedStateFromError(t){return{error:t}}isRawModeSupported(){return this.props.stdin.isTTY}render(){return Um.default.createElement(AAt.default.Provider,{value:{exit:this.handleExit}},Um.default.createElement(pAt.default.Provider,{value:{stdin:this.props.stdin,setRawMode:this.handleSetRawMode,isRawModeSupported:this.isRawModeSupported(),internal_exitOnCtrlC:this.props.exitOnCtrlC}},Um.default.createElement(hAt.default.Provider,{value:{stdout:this.props.stdout,write:this.props.writeToStdout}},Um.default.createElement(dAt.default.Provider,{value:{stderr:this.props.stderr,write:this.props.writeToStderr}},Um.default.createElement(gAt.default.Provider,{value:{activeId:this.state.activeFocusId,add:this.addFocusable,remove:this.removeFocusable,activate:this.activateFocusable,deactivate:this.deactivateFocusable,enableFocus:this.enableFocus,disableFocus:this.disableFocus,focusNext:this.focusNext,focusPrevious:this.focusPrevious,focus:this.focus}},this.state.error?Um.default.createElement(mAt.default,{error:this.state.error}):this.props.children)))))}componentDidMount(){MCe.default.hide(this.props.stdout)}componentWillUnmount(){MCe.default.show(this.props.stdout),this.isRawModeSupported()&&this.handleSetRawMode(!1)}componentDidCatch(t){this.handleExit(t)}};af.default=DF;DF.displayName="InternalApp"});var jCe=G(lf=>{"use strict";var CAt=lf&&lf.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r),Object.defineProperty(e,s,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),wAt=lf&&lf.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),BAt=lf&&lf.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.hasOwnProperty.call(e,r)&&CAt(t,e,r);return wAt(t,e),t},cf=lf&&lf.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(lf,"__esModule",{value:!0});var vAt=cf(dn()),_Ce=FEe(),SAt=cf(zEe()),DAt=cf(J9()),bAt=cf(rIe()),PAt=cf(iIe()),Zq=cf(zIe()),xAt=cf(ACe()),kAt=cf(Z9()),QAt=cf(gCe()),RAt=BAt(xq()),TAt=cf(Lq()),FAt=cf(UCe()),uw=process.env.CI==="false"?!1:bAt.default,HCe=()=>{},$q=class{constructor(t){this.resolveExitPromise=()=>{},this.rejectExitPromise=()=>{},this.unsubscribeExit=()=>{},this.onRender=()=>{if(this.isUnmounted)return;let{output:r,outputHeight:s,staticOutput:a}=xAt.default(this.rootNode,this.options.stdout.columns||80),n=a&&a!==` +`;if(this.options.debug){n&&(this.fullStaticOutput+=a),this.options.stdout.write(this.fullStaticOutput+r);return}if(uw){n&&this.options.stdout.write(a),this.lastOutput=r;return}if(n&&(this.fullStaticOutput+=a),s>=this.options.stdout.rows){this.options.stdout.write(DAt.default.clearTerminal+this.fullStaticOutput+r),this.lastOutput=r;return}n&&(this.log.clear(),this.options.stdout.write(a),this.log(r)),!n&&r!==this.lastOutput&&this.throttledLog(r),this.lastOutput=r},PAt.default(this),this.options=t,this.rootNode=RAt.createNode("ink-root"),this.rootNode.onRender=t.debug?this.onRender:_Ce(this.onRender,32,{leading:!0,trailing:!0}),this.rootNode.onImmediateRender=this.onRender,this.log=SAt.default.create(t.stdout),this.throttledLog=t.debug?this.log:_Ce(this.log,void 0,{leading:!0,trailing:!0}),this.isUnmounted=!1,this.lastOutput="",this.fullStaticOutput="",this.container=Zq.default.createContainer(this.rootNode,0,!1,null),this.unsubscribeExit=kAt.default(this.unmount,{alwaysLast:!1}),t.patchConsole&&this.patchConsole(),uw||(t.stdout.on("resize",this.onRender),this.unsubscribeResize=()=>{t.stdout.off("resize",this.onRender)})}render(t){let r=vAt.default.createElement(FAt.default,{stdin:this.options.stdin,stdout:this.options.stdout,stderr:this.options.stderr,writeToStdout:this.writeToStdout,writeToStderr:this.writeToStderr,exitOnCtrlC:this.options.exitOnCtrlC,onExit:this.unmount},t);Zq.default.updateContainer(r,this.container,null,HCe)}writeToStdout(t){if(!this.isUnmounted){if(this.options.debug){this.options.stdout.write(t+this.fullStaticOutput+this.lastOutput);return}if(uw){this.options.stdout.write(t);return}this.log.clear(),this.options.stdout.write(t),this.log(this.lastOutput)}}writeToStderr(t){if(!this.isUnmounted){if(this.options.debug){this.options.stderr.write(t),this.options.stdout.write(this.fullStaticOutput+this.lastOutput);return}if(uw){this.options.stderr.write(t);return}this.log.clear(),this.options.stderr.write(t),this.log(this.lastOutput)}}unmount(t){this.isUnmounted||(this.onRender(),this.unsubscribeExit(),typeof this.restoreConsole=="function"&&this.restoreConsole(),typeof this.unsubscribeResize=="function"&&this.unsubscribeResize(),uw?this.options.stdout.write(this.lastOutput+` +`):this.options.debug||this.log.done(),this.isUnmounted=!0,Zq.default.updateContainer(null,this.container,null,HCe),TAt.default.delete(this.options.stdout),t instanceof Error?this.rejectExitPromise(t):this.resolveExitPromise())}waitUntilExit(){return this.exitPromise||(this.exitPromise=new Promise((t,r)=>{this.resolveExitPromise=t,this.rejectExitPromise=r})),this.exitPromise}clear(){!uw&&!this.options.debug&&this.log.clear()}patchConsole(){this.options.debug||(this.restoreConsole=QAt.default((t,r)=>{t==="stdout"&&this.writeToStdout(r),t==="stderr"&&(r.startsWith("The above error occurred")||this.writeToStderr(r))}))}};lf.default=$q});var qCe=G(sD=>{"use strict";var GCe=sD&&sD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(sD,"__esModule",{value:!0});var NAt=GCe(jCe()),bF=GCe(Lq()),OAt=Ie("stream"),LAt=(e,t)=>{let r=Object.assign({stdout:process.stdout,stdin:process.stdin,stderr:process.stderr,debug:!1,exitOnCtrlC:!0,patchConsole:!0},MAt(t)),s=UAt(r.stdout,()=>new NAt.default(r));return s.render(e),{rerender:s.render,unmount:()=>s.unmount(),waitUntilExit:s.waitUntilExit,cleanup:()=>bF.default.delete(r.stdout),clear:s.clear}};sD.default=LAt;var MAt=(e={})=>e instanceof OAt.Stream?{stdout:e,stdin:process.stdin}:e,UAt=(e,t)=>{let r;return bF.default.has(e)?r=bF.default.get(e):(r=t(),bF.default.set(e,r)),r}});var YCe=G(eh=>{"use strict";var _At=eh&&eh.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r),Object.defineProperty(e,s,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),HAt=eh&&eh.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),jAt=eh&&eh.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.hasOwnProperty.call(e,r)&&_At(t,e,r);return HAt(t,e),t};Object.defineProperty(eh,"__esModule",{value:!0});var oD=jAt(dn()),WCe=e=>{let{items:t,children:r,style:s}=e,[a,n]=oD.useState(0),c=oD.useMemo(()=>t.slice(a),[t,a]);oD.useLayoutEffect(()=>{n(t.length)},[t.length]);let f=c.map((h,E)=>r(h,a+E)),p=oD.useMemo(()=>Object.assign({position:"absolute",flexDirection:"column"},s),[s]);return oD.default.createElement("ink-box",{internal_static:!0,style:p},f)};WCe.displayName="Static";eh.default=WCe});var JCe=G(aD=>{"use strict";var GAt=aD&&aD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(aD,"__esModule",{value:!0});var qAt=GAt(dn()),VCe=({children:e,transform:t})=>e==null?null:qAt.default.createElement("ink-text",{style:{flexGrow:0,flexShrink:1,flexDirection:"row"},internal_transform:t},e);VCe.displayName="Transform";aD.default=VCe});var zCe=G(lD=>{"use strict";var WAt=lD&&lD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(lD,"__esModule",{value:!0});var YAt=WAt(dn()),KCe=({count:e=1})=>YAt.default.createElement("ink-text",null,` +`.repeat(e));KCe.displayName="Newline";lD.default=KCe});var $Ce=G(cD=>{"use strict";var XCe=cD&&cD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(cD,"__esModule",{value:!0});var VAt=XCe(dn()),JAt=XCe(SF()),ZCe=()=>VAt.default.createElement(JAt.default,{flexGrow:1});ZCe.displayName="Spacer";cD.default=ZCe});var PF=G(uD=>{"use strict";var KAt=uD&&uD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(uD,"__esModule",{value:!0});var zAt=dn(),XAt=KAt(Hq()),ZAt=()=>zAt.useContext(XAt.default);uD.default=ZAt});var twe=G(fD=>{"use strict";var $At=fD&&fD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(fD,"__esModule",{value:!0});var ewe=dn(),ept=$At(PF()),tpt=(e,t={})=>{let{stdin:r,setRawMode:s,internal_exitOnCtrlC:a}=ept.default();ewe.useEffect(()=>{if(t.isActive!==!1)return s(!0),()=>{s(!1)}},[t.isActive,s]),ewe.useEffect(()=>{if(t.isActive===!1)return;let n=c=>{let f=String(c),p={upArrow:f==="\x1B[A",downArrow:f==="\x1B[B",leftArrow:f==="\x1B[D",rightArrow:f==="\x1B[C",pageDown:f==="\x1B[6~",pageUp:f==="\x1B[5~",return:f==="\r",escape:f==="\x1B",ctrl:!1,shift:!1,tab:f===" "||f==="\x1B[Z",backspace:f==="\b",delete:f==="\x7F"||f==="\x1B[3~",meta:!1};f<=""&&!p.return&&(f=String.fromCharCode(f.charCodeAt(0)+97-1),p.ctrl=!0),f.startsWith("\x1B")&&(f=f.slice(1),p.meta=!0);let h=f>="A"&&f<="Z",E=f>="\u0410"&&f<="\u042F";f.length===1&&(h||E)&&(p.shift=!0),p.tab&&f==="[Z"&&(p.shift=!0),(p.tab||p.backspace||p.delete)&&(f=""),(!(f==="c"&&p.ctrl)||!a)&&e(f,p)};return r?.on("data",n),()=>{r?.off("data",n)}},[t.isActive,r,a,e])};fD.default=tpt});var rwe=G(AD=>{"use strict";var rpt=AD&&AD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(AD,"__esModule",{value:!0});var npt=dn(),ipt=rpt(Uq()),spt=()=>npt.useContext(ipt.default);AD.default=spt});var nwe=G(pD=>{"use strict";var opt=pD&&pD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(pD,"__esModule",{value:!0});var apt=dn(),lpt=opt(Gq()),cpt=()=>apt.useContext(lpt.default);pD.default=cpt});var iwe=G(hD=>{"use strict";var upt=hD&&hD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(hD,"__esModule",{value:!0});var fpt=dn(),Apt=upt(Wq()),ppt=()=>fpt.useContext(Apt.default);hD.default=ppt});var owe=G(gD=>{"use strict";var swe=gD&&gD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(gD,"__esModule",{value:!0});var dD=dn(),hpt=swe(vF()),dpt=swe(PF()),gpt=({isActive:e=!0,autoFocus:t=!1,id:r}={})=>{let{isRawModeSupported:s,setRawMode:a}=dpt.default(),{activeId:n,add:c,remove:f,activate:p,deactivate:h,focus:E}=dD.useContext(hpt.default),C=dD.useMemo(()=>r??Math.random().toString().slice(2,7),[r]);return dD.useEffect(()=>(c(C,{autoFocus:t}),()=>{f(C)}),[C,t]),dD.useEffect(()=>{e?p(C):h(C)},[e,C]),dD.useEffect(()=>{if(!(!s||!e))return a(!0),()=>{a(!1)}},[e]),{isFocused:!!C&&n===C,focus:E}};gD.default=gpt});var awe=G(mD=>{"use strict";var mpt=mD&&mD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(mD,"__esModule",{value:!0});var ypt=dn(),Ept=mpt(vF()),Ipt=()=>{let e=ypt.useContext(Ept.default);return{enableFocus:e.enableFocus,disableFocus:e.disableFocus,focusNext:e.focusNext,focusPrevious:e.focusPrevious,focus:e.focus}};mD.default=Ipt});var lwe=G(eW=>{"use strict";Object.defineProperty(eW,"__esModule",{value:!0});eW.default=e=>{var t,r,s,a;return{width:(r=(t=e.yogaNode)===null||t===void 0?void 0:t.getComputedWidth())!==null&&r!==void 0?r:0,height:(a=(s=e.yogaNode)===null||s===void 0?void 0:s.getComputedHeight())!==null&&a!==void 0?a:0}}});var qc=G(wo=>{"use strict";Object.defineProperty(wo,"__esModule",{value:!0});var Cpt=qCe();Object.defineProperty(wo,"render",{enumerable:!0,get:function(){return Cpt.default}});var wpt=SF();Object.defineProperty(wo,"Box",{enumerable:!0,get:function(){return wpt.default}});var Bpt=Xq();Object.defineProperty(wo,"Text",{enumerable:!0,get:function(){return Bpt.default}});var vpt=YCe();Object.defineProperty(wo,"Static",{enumerable:!0,get:function(){return vpt.default}});var Spt=JCe();Object.defineProperty(wo,"Transform",{enumerable:!0,get:function(){return Spt.default}});var Dpt=zCe();Object.defineProperty(wo,"Newline",{enumerable:!0,get:function(){return Dpt.default}});var bpt=$Ce();Object.defineProperty(wo,"Spacer",{enumerable:!0,get:function(){return bpt.default}});var Ppt=twe();Object.defineProperty(wo,"useInput",{enumerable:!0,get:function(){return Ppt.default}});var xpt=rwe();Object.defineProperty(wo,"useApp",{enumerable:!0,get:function(){return xpt.default}});var kpt=PF();Object.defineProperty(wo,"useStdin",{enumerable:!0,get:function(){return kpt.default}});var Qpt=nwe();Object.defineProperty(wo,"useStdout",{enumerable:!0,get:function(){return Qpt.default}});var Rpt=iwe();Object.defineProperty(wo,"useStderr",{enumerable:!0,get:function(){return Rpt.default}});var Tpt=owe();Object.defineProperty(wo,"useFocus",{enumerable:!0,get:function(){return Tpt.default}});var Fpt=awe();Object.defineProperty(wo,"useFocusManager",{enumerable:!0,get:function(){return Fpt.default}});var Npt=lwe();Object.defineProperty(wo,"measureElement",{enumerable:!0,get:function(){return Npt.default}})});var rW={};Vt(rW,{Gem:()=>tW});var cwe,Hm,tW,xF=Xe(()=>{cwe=et(qc()),Hm=et(dn()),tW=(0,Hm.memo)(({active:e})=>{let t=(0,Hm.useMemo)(()=>e?"\u25C9":"\u25EF",[e]),r=(0,Hm.useMemo)(()=>e?"green":"yellow",[e]);return Hm.default.createElement(cwe.Text,{color:r},t)})});var nW={};Vt(nW,{useKeypress:()=>jm});function jm({active:e},t,r){let{stdin:s}=(0,uwe.useStdin)(),a=(0,kF.useCallback)((n,c)=>t(n,c),r);(0,kF.useEffect)(()=>{if(!(!e||!s))return s.on("keypress",a),()=>{s.off("keypress",a)}},[e,a,s])}var uwe,kF,fw=Xe(()=>{uwe=et(qc()),kF=et(dn())});var Awe={};Vt(Awe,{FocusRequest:()=>fwe,useFocusRequest:()=>iW});var fwe,iW,sW=Xe(()=>{fw();fwe=(r=>(r.BEFORE="before",r.AFTER="after",r))(fwe||{}),iW=function({active:e},t,r){jm({active:e},(s,a)=>{a.name==="tab"&&(a.shift?t("before"):t("after"))},r)}});var pwe={};Vt(pwe,{useListInput:()=>yD});var yD,QF=Xe(()=>{fw();yD=function(e,t,{active:r,minus:s,plus:a,set:n,loop:c=!0}){jm({active:r},(f,p)=>{let h=t.indexOf(e);switch(p.name){case s:{let E=h-1;if(c){n(t[(t.length+E)%t.length]);return}if(E<0)return;n(t[E])}break;case a:{let E=h+1;if(c){n(t[E%t.length]);return}if(E>=t.length)return;n(t[E])}break}},[t,e,a,n,c])}});var RF={};Vt(RF,{ScrollableItems:()=>Opt});var Z0,vl,Opt,TF=Xe(()=>{Z0=et(qc()),vl=et(dn());sW();QF();Opt=({active:e=!0,children:t=[],radius:r=10,size:s=1,loop:a=!0,onFocusRequest:n,willReachEnd:c})=>{let f=O=>{if(O.key===null)throw new Error("Expected all children to have a key");return O.key},p=vl.default.Children.map(t,O=>f(O)),h=p[0],[E,C]=(0,vl.useState)(h),S=p.indexOf(E);(0,vl.useEffect)(()=>{p.includes(E)||C(h)},[t]),(0,vl.useEffect)(()=>{c&&S>=p.length-2&&c()},[S]),iW({active:e&&!!n},O=>{n?.(O)},[n]),yD(E,p,{active:e,minus:"up",plus:"down",set:C,loop:a});let x=S-r,I=S+r;I>p.length&&(x-=I-p.length,I=p.length),x<0&&(I+=-x,x=0),I>=p.length&&(I=p.length-1);let T=[];for(let O=x;O<=I;++O){let U=p[O],V=e&&U===E;T.push(vl.default.createElement(Z0.Box,{key:U,height:s},vl.default.createElement(Z0.Box,{marginLeft:1,marginRight:1},vl.default.createElement(Z0.Text,null,V?vl.default.createElement(Z0.Text,{color:"cyan",bold:!0},">"):" ")),vl.default.createElement(Z0.Box,null,vl.default.cloneElement(t[O],{active:V}))))}return vl.default.createElement(Z0.Box,{flexDirection:"column",width:"100%"},T)}});var hwe,th,dwe,FF,gwe,oW=Xe(()=>{hwe=et(qc()),th=et(dn()),dwe=Ie("readline"),FF=th.default.createContext(null),gwe=({children:e})=>{let{stdin:t,setRawMode:r}=(0,hwe.useStdin)();(0,th.useEffect)(()=>{r&&r(!0),t&&(0,dwe.emitKeypressEvents)(t)},[t,r]);let[s,a]=(0,th.useState)(new Map),n=(0,th.useMemo)(()=>({getAll:()=>s,get:c=>s.get(c),set:(c,f)=>a(p=>new Map([...p,[c,f]])),setAll:c=>a(f=>new Map([...f,...c]))}),[s,a]);return th.default.createElement(FF.Provider,{value:n,children:e})}});var aW={};Vt(aW,{useMinistore:()=>Lpt,useMinistoreSetAll:()=>Mpt});function Lpt(e,t){let r=(0,ED.useContext)(FF);if(r===null)throw new Error("Expected this hook to run with a ministore context attached");if(typeof e>"u")return r.getAll();let s=(0,ED.useCallback)(n=>{r.set(e,n)},[e,r.set]),a=r.get(e);return typeof a>"u"&&(a=t),[a,s]}function Mpt(){let e=(0,ED.useContext)(FF);if(e===null)throw new Error("Expected this hook to run with a ministore context attached");return e.setAll}var ED,lW=Xe(()=>{ED=et(dn());oW()});var OF={};Vt(OF,{renderForm:()=>Upt});async function Upt(e,t,{stdin:r,stdout:s,stderr:a}){let n,c=p=>{let{exit:h}=(0,NF.useApp)();jm({active:!0},(E,C)=>{C.name==="return"&&(n=p,h())},[h,p])},{waitUntilExit:f}=(0,NF.render)(cW.default.createElement(gwe,null,cW.default.createElement(e,{...t,useSubmit:c})),{stdin:r,stdout:s,stderr:a});return await f(),n}var NF,cW,LF=Xe(()=>{NF=et(qc()),cW=et(dn());oW();fw()});var Iwe=G(ID=>{"use strict";Object.defineProperty(ID,"__esModule",{value:!0});ID.UncontrolledTextInput=void 0;var ywe=dn(),uW=dn(),mwe=qc(),Gm=NE(),Ewe=({value:e,placeholder:t="",focus:r=!0,mask:s,highlightPastedText:a=!1,showCursor:n=!0,onChange:c,onSubmit:f})=>{let[{cursorOffset:p,cursorWidth:h},E]=uW.useState({cursorOffset:(e||"").length,cursorWidth:0});uW.useEffect(()=>{E(T=>{if(!r||!n)return T;let O=e||"";return T.cursorOffset>O.length-1?{cursorOffset:O.length,cursorWidth:0}:T})},[e,r,n]);let C=a?h:0,S=s?s.repeat(e.length):e,x=S,I=t?Gm.grey(t):void 0;if(n&&r){I=t.length>0?Gm.inverse(t[0])+Gm.grey(t.slice(1)):Gm.inverse(" "),x=S.length>0?"":Gm.inverse(" ");let T=0;for(let O of S)T>=p-C&&T<=p?x+=Gm.inverse(O):x+=O,T++;S.length>0&&p===S.length&&(x+=Gm.inverse(" "))}return mwe.useInput((T,O)=>{if(O.upArrow||O.downArrow||O.ctrl&&T==="c"||O.tab||O.shift&&O.tab)return;if(O.return){f&&f(e);return}let U=p,V=e,te=0;O.leftArrow?n&&U--:O.rightArrow?n&&U++:O.backspace||O.delete?p>0&&(V=e.slice(0,p-1)+e.slice(p,e.length),U--):(V=e.slice(0,p)+T+e.slice(p,e.length),U+=T.length,T.length>1&&(te=T.length)),p<0&&(U=0),p>e.length&&(U=e.length),E({cursorOffset:U,cursorWidth:te}),V!==e&&c(V)},{isActive:r}),ywe.createElement(mwe.Text,null,t?S.length>0?x:I:x)};ID.default=Ewe;ID.UncontrolledTextInput=({initialValue:e="",...t})=>{let[r,s]=uW.useState(e);return ywe.createElement(Ewe,Object.assign({},t,{value:r,onChange:s}))}});var Bwe={};Vt(Bwe,{Pad:()=>fW});var Cwe,wwe,fW,AW=Xe(()=>{Cwe=et(qc()),wwe=et(dn()),fW=({length:e,active:t})=>{if(e===0)return null;let r=e>1?` ${"-".repeat(e-1)}`:" ";return wwe.default.createElement(Cwe.Text,{dimColor:!t},r)}});var vwe={};Vt(vwe,{ItemOptions:()=>_pt});var wD,$0,_pt,Swe=Xe(()=>{wD=et(qc()),$0=et(dn());QF();xF();AW();_pt=function({active:e,skewer:t,options:r,value:s,onChange:a,sizes:n=[]}){let c=r.filter(({label:p})=>!!p).map(({value:p})=>p),f=r.findIndex(p=>p.value===s&&p.label!="");return yD(s,c,{active:e,minus:"left",plus:"right",set:a}),$0.default.createElement($0.default.Fragment,null,r.map(({label:p},h)=>{let E=h===f,C=n[h]-1||0,S=p.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,""),x=Math.max(0,C-S.length-2);return p?$0.default.createElement(wD.Box,{key:p,width:C,marginLeft:1},$0.default.createElement(wD.Text,{wrap:"truncate"},$0.default.createElement(tW,{active:E})," ",p),t?$0.default.createElement(fW,{active:e,length:x}):null):$0.default.createElement(wD.Box,{key:`spacer-${h}`,width:C,marginLeft:1})}))}});var _we=G((yKt,Uwe)=>{var BW;Uwe.exports=()=>(typeof BW>"u"&&(BW=Ie("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),BW)});var a1e=G((GKt,o1e)=>{var RW=Symbol("arg flag"),Wc=class e extends Error{constructor(t,r){super(t),this.name="ArgError",this.code=r,Object.setPrototypeOf(this,e.prototype)}};function UD(e,{argv:t=process.argv.slice(2),permissive:r=!1,stopAtPositional:s=!1}={}){if(!e)throw new Wc("argument specification object is required","ARG_CONFIG_NO_SPEC");let a={_:[]},n={},c={};for(let f of Object.keys(e)){if(!f)throw new Wc("argument key cannot be an empty string","ARG_CONFIG_EMPTY_KEY");if(f[0]!=="-")throw new Wc(`argument key must start with '-' but found: '${f}'`,"ARG_CONFIG_NONOPT_KEY");if(f.length===1)throw new Wc(`argument key must have a name; singular '-' keys are not allowed: ${f}`,"ARG_CONFIG_NONAME_KEY");if(typeof e[f]=="string"){n[f]=e[f];continue}let p=e[f],h=!1;if(Array.isArray(p)&&p.length===1&&typeof p[0]=="function"){let[E]=p;p=(C,S,x=[])=>(x.push(E(C,S,x[x.length-1])),x),h=E===Boolean||E[RW]===!0}else if(typeof p=="function")h=p===Boolean||p[RW]===!0;else throw new Wc(`type missing or not a function or valid array type: ${f}`,"ARG_CONFIG_VAD_TYPE");if(f[1]!=="-"&&f.length>2)throw new Wc(`short argument keys (with a single hyphen) must have only one character: ${f}`,"ARG_CONFIG_SHORTOPT_TOOLONG");c[f]=[p,h]}for(let f=0,p=t.length;f0){a._=a._.concat(t.slice(f));break}if(h==="--"){a._=a._.concat(t.slice(f+1));break}if(h.length>1&&h[0]==="-"){let E=h[1]==="-"||h.length===2?[h]:h.slice(1).split("").map(C=>`-${C}`);for(let C=0;C1&&t[f+1][0]==="-"&&!(t[f+1].match(/^-?\d*(\.(?=\d))?\d*$/)&&(O===Number||typeof BigInt<"u"&&O===BigInt))){let V=x===T?"":` (alias for ${T})`;throw new Wc(`option requires argument: ${x}${V}`,"ARG_MISSING_REQUIRED_LONGARG")}a[T]=O(t[f+1],T,a[T]),++f}else a[T]=O(I,T,a[T])}}else a._.push(h)}return a}UD.flag=e=>(e[RW]=!0,e);UD.COUNT=UD.flag((e,t,r)=>(r||0)+1);UD.ArgError=Wc;o1e.exports=UD});var h1e=G((Ezt,p1e)=>{var LW;p1e.exports=()=>(typeof LW>"u"&&(LW=Ie("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),LW)});var E1e=G((GW,qW)=>{(function(e){GW&&typeof GW=="object"&&typeof qW<"u"?qW.exports=e():typeof define=="function"&&define.amd?define([],e):typeof window<"u"?window.isWindows=e():typeof global<"u"?global.isWindows=e():typeof self<"u"?self.isWindows=e():this.isWindows=e()})(function(){"use strict";return function(){return process&&(process.platform==="win32"||/^(msys|cygwin)$/.test(process.env.OSTYPE))}})});var B1e=G((mXt,w1e)=>{"use strict";WW.ifExists=Hht;var yw=Ie("util"),Yc=Ie("path"),I1e=E1e(),Mht=/^#!\s*(?:\/usr\/bin\/env)?\s*([^ \t]+)(.*)$/,Uht={createPwshFile:!0,createCmdFile:I1e(),fs:Ie("fs")},_ht=new Map([[".js","node"],[".cjs","node"],[".mjs","node"],[".cmd","cmd"],[".bat","cmd"],[".ps1","pwsh"],[".sh","sh"]]);function C1e(e){let t={...Uht,...e},r=t.fs;return t.fs_={chmod:r.chmod?yw.promisify(r.chmod):async()=>{},mkdir:yw.promisify(r.mkdir),readFile:yw.promisify(r.readFile),stat:yw.promisify(r.stat),unlink:yw.promisify(r.unlink),writeFile:yw.promisify(r.writeFile)},t}async function WW(e,t,r){let s=C1e(r);await s.fs_.stat(e),await Ght(e,t,s)}function Hht(e,t,r){return WW(e,t,r).catch(()=>{})}function jht(e,t){return t.fs_.unlink(e).catch(()=>{})}async function Ght(e,t,r){let s=await Jht(e,r);return await qht(t,r),Wht(e,t,s,r)}function qht(e,t){return t.fs_.mkdir(Yc.dirname(e),{recursive:!0})}function Wht(e,t,r,s){let a=C1e(s),n=[{generator:Xht,extension:""}];return a.createCmdFile&&n.push({generator:zht,extension:".cmd"}),a.createPwshFile&&n.push({generator:Zht,extension:".ps1"}),Promise.all(n.map(c=>Kht(e,t+c.extension,r,c.generator,a)))}function Yht(e,t){return jht(e,t)}function Vht(e,t){return $ht(e,t)}async function Jht(e,t){let a=(await t.fs_.readFile(e,"utf8")).trim().split(/\r*\n/)[0].match(Mht);if(!a){let n=Yc.extname(e).toLowerCase();return{program:_ht.get(n)||null,additionalArgs:""}}return{program:a[1],additionalArgs:a[2]}}async function Kht(e,t,r,s,a){let n=a.preserveSymlinks?"--preserve-symlinks":"",c=[r.additionalArgs,n].filter(f=>f).join(" ");return a=Object.assign({},a,{prog:r.program,args:c}),await Yht(t,a),await a.fs_.writeFile(t,s(e,t,a),"utf8"),Vht(t,a)}function zht(e,t,r){let a=Yc.relative(Yc.dirname(t),e).split("/").join("\\"),n=Yc.isAbsolute(a)?`"${a}"`:`"%~dp0\\${a}"`,c,f=r.prog,p=r.args||"",h=YW(r.nodePath).win32;f?(c=`"%~dp0\\${f}.exe"`,a=n):(f=n,p="",a="");let E=r.progArgs?`${r.progArgs.join(" ")} `:"",C=h?`@SET NODE_PATH=${h}\r +`:"";return c?C+=`@IF EXIST ${c} (\r + ${c} ${p} ${a} ${E}%*\r +) ELSE (\r + @SETLOCAL\r + @SET PATHEXT=%PATHEXT:;.JS;=;%\r + ${f} ${p} ${a} ${E}%*\r +)\r +`:C+=`@${f} ${p} ${a} ${E}%*\r +`,C}function Xht(e,t,r){let s=Yc.relative(Yc.dirname(t),e),a=r.prog&&r.prog.split("\\").join("/"),n;s=s.split("\\").join("/");let c=Yc.isAbsolute(s)?`"${s}"`:`"$basedir/${s}"`,f=r.args||"",p=YW(r.nodePath).posix;a?(n=`"$basedir/${r.prog}"`,s=c):(a=c,f="",s="");let h=r.progArgs?`${r.progArgs.join(" ")} `:"",E=`#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\\\,/,g')") + +case \`uname\` in + *CYGWIN*) basedir=\`cygpath -w "$basedir"\`;; +esac + +`,C=r.nodePath?`export NODE_PATH="${p}" +`:"";return n?E+=`${C}if [ -x ${n} ]; then + exec ${n} ${f} ${s} ${h}"$@" +else + exec ${a} ${f} ${s} ${h}"$@" +fi +`:E+=`${C}${a} ${f} ${s} ${h}"$@" +exit $? +`,E}function Zht(e,t,r){let s=Yc.relative(Yc.dirname(t),e),a=r.prog&&r.prog.split("\\").join("/"),n=a&&`"${a}$exe"`,c;s=s.split("\\").join("/");let f=Yc.isAbsolute(s)?`"${s}"`:`"$basedir/${s}"`,p=r.args||"",h=YW(r.nodePath),E=h.win32,C=h.posix;n?(c=`"$basedir/${r.prog}$exe"`,s=f):(n=f,p="",s="");let S=r.progArgs?`${r.progArgs.join(" ")} `:"",x=`#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +${r.nodePath?`$env_node_path=$env:NODE_PATH +$env:NODE_PATH="${E}" +`:""}if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +}`;return r.nodePath&&(x+=` else { + $env:NODE_PATH="${C}" +}`),c?x+=` +$ret=0 +if (Test-Path ${c}) { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & ${c} ${p} ${s} ${S}$args + } else { + & ${c} ${p} ${s} ${S}$args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & ${n} ${p} ${s} ${S}$args + } else { + & ${n} ${p} ${s} ${S}$args + } + $ret=$LASTEXITCODE +} +${r.nodePath?`$env:NODE_PATH=$env_node_path +`:""}exit $ret +`:x+=` +# Support pipeline input +if ($MyInvocation.ExpectingInput) { + $input | & ${n} ${p} ${s} ${S}$args +} else { + & ${n} ${p} ${s} ${S}$args +} +${r.nodePath?`$env:NODE_PATH=$env_node_path +`:""}exit $LASTEXITCODE +`,x}function $ht(e,t){return t.fs_.chmod(e,493)}function YW(e){if(!e)return{win32:"",posix:""};let t=typeof e=="string"?e.split(Yc.delimiter):Array.from(e),r={};for(let s=0;s`/mnt/${f.toLowerCase()}`):t[s];r.win32=r.win32?`${r.win32};${a}`:a,r.posix=r.posix?`${r.posix}:${n}`:n,r[s]={win32:a,posix:n}}return r}w1e.exports=WW});var oY=G((WZt,j1e)=>{j1e.exports=Ie("stream")});var Y1e=G((YZt,W1e)=>{"use strict";function G1e(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),r.push.apply(r,s)}return r}function T0t(e){for(var t=1;t0?this.tail.next=s:this.head=s,this.tail=s,++this.length}},{key:"unshift",value:function(r){var s={data:r,next:this.head};this.length===0&&(this.tail=s),this.head=s,++this.length}},{key:"shift",value:function(){if(this.length!==0){var r=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,r}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(r){if(this.length===0)return"";for(var s=this.head,a=""+s.data;s=s.next;)a+=r+s.data;return a}},{key:"concat",value:function(r){if(this.length===0)return XF.alloc(0);for(var s=XF.allocUnsafe(r>>>0),a=this.head,n=0;a;)_0t(a.data,s,n),n+=a.data.length,a=a.next;return s}},{key:"consume",value:function(r,s){var a;return rc.length?c.length:r;if(f===c.length?n+=c:n+=c.slice(0,r),r-=f,r===0){f===c.length?(++a,s.next?this.head=s.next:this.head=this.tail=null):(this.head=s,s.data=c.slice(f));break}++a}return this.length-=a,n}},{key:"_getBuffer",value:function(r){var s=XF.allocUnsafe(r),a=this.head,n=1;for(a.data.copy(s),r-=a.data.length;a=a.next;){var c=a.data,f=r>c.length?c.length:r;if(c.copy(s,s.length-r,0,f),r-=f,r===0){f===c.length?(++n,a.next?this.head=a.next:this.head=this.tail=null):(this.head=a,a.data=c.slice(f));break}++n}return this.length-=n,s}},{key:U0t,value:function(r,s){return aY(this,T0t({},s,{depth:0,customInspect:!1}))}}]),e}()});var cY=G((VZt,J1e)=>{"use strict";function H0t(e,t){var r=this,s=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return s||a?(t?t(e):e&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(lY,this,e)):process.nextTick(lY,this,e)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(n){!t&&n?r._writableState?r._writableState.errorEmitted?process.nextTick(ZF,r):(r._writableState.errorEmitted=!0,process.nextTick(V1e,r,n)):process.nextTick(V1e,r,n):t?(process.nextTick(ZF,r),t(n)):process.nextTick(ZF,r)}),this)}function V1e(e,t){lY(e,t),ZF(e)}function ZF(e){e._writableState&&!e._writableState.emitClose||e._readableState&&!e._readableState.emitClose||e.emit("close")}function j0t(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function lY(e,t){e.emit("error",t)}function G0t(e,t){var r=e._readableState,s=e._writableState;r&&r.autoDestroy||s&&s.autoDestroy?e.destroy(t):e.emit("error",t)}J1e.exports={destroy:H0t,undestroy:j0t,errorOrDestroy:G0t}});var od=G((JZt,X1e)=>{"use strict";var z1e={};function Jc(e,t,r){r||(r=Error);function s(n,c,f){return typeof t=="string"?t:t(n,c,f)}class a extends r{constructor(c,f,p){super(s(c,f,p))}}a.prototype.name=r.name,a.prototype.code=e,z1e[e]=a}function K1e(e,t){if(Array.isArray(e)){let r=e.length;return e=e.map(s=>String(s)),r>2?`one of ${t} ${e.slice(0,r-1).join(", ")}, or `+e[r-1]:r===2?`one of ${t} ${e[0]} or ${e[1]}`:`of ${t} ${e[0]}`}else return`of ${t} ${String(e)}`}function q0t(e,t,r){return e.substr(!r||r<0?0:+r,t.length)===t}function W0t(e,t,r){return(r===void 0||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}function Y0t(e,t,r){return typeof r!="number"&&(r=0),r+t.length>e.length?!1:e.indexOf(t,r)!==-1}Jc("ERR_INVALID_OPT_VALUE",function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'},TypeError);Jc("ERR_INVALID_ARG_TYPE",function(e,t,r){let s;typeof t=="string"&&q0t(t,"not ")?(s="must not be",t=t.replace(/^not /,"")):s="must be";let a;if(W0t(e," argument"))a=`The ${e} ${s} ${K1e(t,"type")}`;else{let n=Y0t(e,".")?"property":"argument";a=`The "${e}" ${n} ${s} ${K1e(t,"type")}`}return a+=`. Received type ${typeof r}`,a},TypeError);Jc("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");Jc("ERR_METHOD_NOT_IMPLEMENTED",function(e){return"The "+e+" method is not implemented"});Jc("ERR_STREAM_PREMATURE_CLOSE","Premature close");Jc("ERR_STREAM_DESTROYED",function(e){return"Cannot call "+e+" after a stream was destroyed"});Jc("ERR_MULTIPLE_CALLBACK","Callback called multiple times");Jc("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");Jc("ERR_STREAM_WRITE_AFTER_END","write after end");Jc("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);Jc("ERR_UNKNOWN_ENCODING",function(e){return"Unknown encoding: "+e},TypeError);Jc("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");X1e.exports.codes=z1e});var uY=G((KZt,Z1e)=>{"use strict";var V0t=od().codes.ERR_INVALID_OPT_VALUE;function J0t(e,t,r){return e.highWaterMark!=null?e.highWaterMark:t?e[r]:null}function K0t(e,t,r,s){var a=J0t(t,s,r);if(a!=null){if(!(isFinite(a)&&Math.floor(a)===a)||a<0){var n=s?r:"highWaterMark";throw new V0t(n,a)}return Math.floor(a)}return e.objectMode?16:16*1024}Z1e.exports={getHighWaterMark:K0t}});var $1e=G((zZt,fY)=>{typeof Object.create=="function"?fY.exports=function(t,r){r&&(t.super_=r,t.prototype=Object.create(r.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:fY.exports=function(t,r){if(r){t.super_=r;var s=function(){};s.prototype=r.prototype,t.prototype=new s,t.prototype.constructor=t}}});var ad=G((XZt,pY)=>{try{if(AY=Ie("util"),typeof AY.inherits!="function")throw"";pY.exports=AY.inherits}catch{pY.exports=$1e()}var AY});var t2e=G((ZZt,e2e)=>{e2e.exports=Ie("util").deprecate});var gY=G(($Zt,a2e)=>{"use strict";a2e.exports=Vi;function n2e(e){var t=this;this.next=null,this.entry=null,this.finish=function(){wdt(t,e)}}var vw;Vi.WritableState=ZD;var z0t={deprecate:t2e()},i2e=oY(),eN=Ie("buffer").Buffer,X0t=global.Uint8Array||function(){};function Z0t(e){return eN.from(e)}function $0t(e){return eN.isBuffer(e)||e instanceof X0t}var dY=cY(),edt=uY(),tdt=edt.getHighWaterMark,ld=od().codes,rdt=ld.ERR_INVALID_ARG_TYPE,ndt=ld.ERR_METHOD_NOT_IMPLEMENTED,idt=ld.ERR_MULTIPLE_CALLBACK,sdt=ld.ERR_STREAM_CANNOT_PIPE,odt=ld.ERR_STREAM_DESTROYED,adt=ld.ERR_STREAM_NULL_VALUES,ldt=ld.ERR_STREAM_WRITE_AFTER_END,cdt=ld.ERR_UNKNOWN_ENCODING,Sw=dY.errorOrDestroy;ad()(Vi,i2e);function udt(){}function ZD(e,t,r){vw=vw||Km(),e=e||{},typeof r!="boolean"&&(r=t instanceof vw),this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.writableObjectMode),this.highWaterMark=tdt(this,e,"writableHighWaterMark",r),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var s=e.decodeStrings===!1;this.decodeStrings=!s,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(a){mdt(t,a)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=e.emitClose!==!1,this.autoDestroy=!!e.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new n2e(this)}ZD.prototype.getBuffer=function(){for(var t=this.bufferedRequest,r=[];t;)r.push(t),t=t.next;return r};(function(){try{Object.defineProperty(ZD.prototype,"buffer",{get:z0t.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}})();var $F;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?($F=Function.prototype[Symbol.hasInstance],Object.defineProperty(Vi,Symbol.hasInstance,{value:function(t){return $F.call(this,t)?!0:this!==Vi?!1:t&&t._writableState instanceof ZD}})):$F=function(t){return t instanceof this};function Vi(e){vw=vw||Km();var t=this instanceof vw;if(!t&&!$F.call(Vi,this))return new Vi(e);this._writableState=new ZD(e,this,t),this.writable=!0,e&&(typeof e.write=="function"&&(this._write=e.write),typeof e.writev=="function"&&(this._writev=e.writev),typeof e.destroy=="function"&&(this._destroy=e.destroy),typeof e.final=="function"&&(this._final=e.final)),i2e.call(this)}Vi.prototype.pipe=function(){Sw(this,new sdt)};function fdt(e,t){var r=new ldt;Sw(e,r),process.nextTick(t,r)}function Adt(e,t,r,s){var a;return r===null?a=new adt:typeof r!="string"&&!t.objectMode&&(a=new rdt("chunk",["string","Buffer"],r)),a?(Sw(e,a),process.nextTick(s,a),!1):!0}Vi.prototype.write=function(e,t,r){var s=this._writableState,a=!1,n=!s.objectMode&&$0t(e);return n&&!eN.isBuffer(e)&&(e=Z0t(e)),typeof t=="function"&&(r=t,t=null),n?t="buffer":t||(t=s.defaultEncoding),typeof r!="function"&&(r=udt),s.ending?fdt(this,r):(n||Adt(this,s,e,r))&&(s.pendingcb++,a=hdt(this,s,n,e,t,r)),a};Vi.prototype.cork=function(){this._writableState.corked++};Vi.prototype.uncork=function(){var e=this._writableState;e.corked&&(e.corked--,!e.writing&&!e.corked&&!e.bufferProcessing&&e.bufferedRequest&&s2e(this,e))};Vi.prototype.setDefaultEncoding=function(t){if(typeof t=="string"&&(t=t.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((t+"").toLowerCase())>-1))throw new cdt(t);return this._writableState.defaultEncoding=t,this};Object.defineProperty(Vi.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function pdt(e,t,r){return!e.objectMode&&e.decodeStrings!==!1&&typeof t=="string"&&(t=eN.from(t,r)),t}Object.defineProperty(Vi.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function hdt(e,t,r,s,a,n){if(!r){var c=pdt(t,s,a);s!==c&&(r=!0,a="buffer",s=c)}var f=t.objectMode?1:s.length;t.length+=f;var p=t.length{"use strict";var Bdt=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};c2e.exports=yA;var l2e=EY(),yY=gY();ad()(yA,l2e);for(mY=Bdt(yY.prototype),tN=0;tN{var nN=Ie("buffer"),oh=nN.Buffer;function u2e(e,t){for(var r in e)t[r]=e[r]}oh.from&&oh.alloc&&oh.allocUnsafe&&oh.allocUnsafeSlow?f2e.exports=nN:(u2e(nN,IY),IY.Buffer=Dw);function Dw(e,t,r){return oh(e,t,r)}u2e(oh,Dw);Dw.from=function(e,t,r){if(typeof e=="number")throw new TypeError("Argument must not be a number");return oh(e,t,r)};Dw.alloc=function(e,t,r){if(typeof e!="number")throw new TypeError("Argument must be a number");var s=oh(e);return t!==void 0?typeof r=="string"?s.fill(t,r):s.fill(t):s.fill(0),s};Dw.allocUnsafe=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return oh(e)};Dw.allocUnsafeSlow=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return nN.SlowBuffer(e)}});var BY=G(h2e=>{"use strict";var wY=A2e().Buffer,p2e=wY.isEncoding||function(e){switch(e=""+e,e&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function Ddt(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}function bdt(e){var t=Ddt(e);if(typeof t!="string"&&(wY.isEncoding===p2e||!p2e(e)))throw new Error("Unknown encoding: "+e);return t||e}h2e.StringDecoder=$D;function $D(e){this.encoding=bdt(e);var t;switch(this.encoding){case"utf16le":this.text=Tdt,this.end=Fdt,t=4;break;case"utf8":this.fillLast=kdt,t=4;break;case"base64":this.text=Ndt,this.end=Odt,t=3;break;default:this.write=Ldt,this.end=Mdt;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=wY.allocUnsafe(t)}$D.prototype.write=function(e){if(e.length===0)return"";var t,r;if(this.lastNeed){if(t=this.fillLast(e),t===void 0)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r>5===6?2:e>>4===14?3:e>>3===30?4:e>>6===2?-1:-2}function Pdt(e,t,r){var s=t.length-1;if(s=0?(a>0&&(e.lastNeed=a-1),a):--s=0?(a>0&&(e.lastNeed=a-2),a):--s=0?(a>0&&(a===2?a=0:e.lastNeed=a-3),a):0))}function xdt(e,t,r){if((t[0]&192)!==128)return e.lastNeed=0,"\uFFFD";if(e.lastNeed>1&&t.length>1){if((t[1]&192)!==128)return e.lastNeed=1,"\uFFFD";if(e.lastNeed>2&&t.length>2&&(t[2]&192)!==128)return e.lastNeed=2,"\uFFFD"}}function kdt(e){var t=this.lastTotal-this.lastNeed,r=xdt(this,e,t);if(r!==void 0)return r;if(this.lastNeed<=e.length)return e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,t,0,e.length),this.lastNeed-=e.length}function Qdt(e,t){var r=Pdt(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=r;var s=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,s),e.toString("utf8",t,s)}function Rdt(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+"\uFFFD":t}function Tdt(e,t){if((e.length-t)%2===0){var r=e.toString("utf16le",t);if(r){var s=r.charCodeAt(r.length-1);if(s>=55296&&s<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function Fdt(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,r)}return t}function Ndt(e,t){var r=(e.length-t)%3;return r===0?e.toString("base64",t):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-r))}function Odt(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function Ldt(e){return e.toString(this.encoding)}function Mdt(e){return e&&e.length?this.write(e):""}});var iN=G((r$t,m2e)=>{"use strict";var d2e=od().codes.ERR_STREAM_PREMATURE_CLOSE;function Udt(e){var t=!1;return function(){if(!t){t=!0;for(var r=arguments.length,s=new Array(r),a=0;a{"use strict";var sN;function cd(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var jdt=iN(),ud=Symbol("lastResolve"),zm=Symbol("lastReject"),eb=Symbol("error"),oN=Symbol("ended"),Xm=Symbol("lastPromise"),vY=Symbol("handlePromise"),Zm=Symbol("stream");function fd(e,t){return{value:e,done:t}}function Gdt(e){var t=e[ud];if(t!==null){var r=e[Zm].read();r!==null&&(e[Xm]=null,e[ud]=null,e[zm]=null,t(fd(r,!1)))}}function qdt(e){process.nextTick(Gdt,e)}function Wdt(e,t){return function(r,s){e.then(function(){if(t[oN]){r(fd(void 0,!0));return}t[vY](r,s)},s)}}var Ydt=Object.getPrototypeOf(function(){}),Vdt=Object.setPrototypeOf((sN={get stream(){return this[Zm]},next:function(){var t=this,r=this[eb];if(r!==null)return Promise.reject(r);if(this[oN])return Promise.resolve(fd(void 0,!0));if(this[Zm].destroyed)return new Promise(function(c,f){process.nextTick(function(){t[eb]?f(t[eb]):c(fd(void 0,!0))})});var s=this[Xm],a;if(s)a=new Promise(Wdt(s,this));else{var n=this[Zm].read();if(n!==null)return Promise.resolve(fd(n,!1));a=new Promise(this[vY])}return this[Xm]=a,a}},cd(sN,Symbol.asyncIterator,function(){return this}),cd(sN,"return",function(){var t=this;return new Promise(function(r,s){t[Zm].destroy(null,function(a){if(a){s(a);return}r(fd(void 0,!0))})})}),sN),Ydt),Jdt=function(t){var r,s=Object.create(Vdt,(r={},cd(r,Zm,{value:t,writable:!0}),cd(r,ud,{value:null,writable:!0}),cd(r,zm,{value:null,writable:!0}),cd(r,eb,{value:null,writable:!0}),cd(r,oN,{value:t._readableState.endEmitted,writable:!0}),cd(r,vY,{value:function(n,c){var f=s[Zm].read();f?(s[Xm]=null,s[ud]=null,s[zm]=null,n(fd(f,!1))):(s[ud]=n,s[zm]=c)},writable:!0}),r));return s[Xm]=null,jdt(t,function(a){if(a&&a.code!=="ERR_STREAM_PREMATURE_CLOSE"){var n=s[zm];n!==null&&(s[Xm]=null,s[ud]=null,s[zm]=null,n(a)),s[eb]=a;return}var c=s[ud];c!==null&&(s[Xm]=null,s[ud]=null,s[zm]=null,c(fd(void 0,!0))),s[oN]=!0}),t.on("readable",qdt.bind(null,s)),s};y2e.exports=Jdt});var B2e=G((i$t,w2e)=>{"use strict";function I2e(e,t,r,s,a,n,c){try{var f=e[n](c),p=f.value}catch(h){r(h);return}f.done?t(p):Promise.resolve(p).then(s,a)}function Kdt(e){return function(){var t=this,r=arguments;return new Promise(function(s,a){var n=e.apply(t,r);function c(p){I2e(n,s,a,c,f,"next",p)}function f(p){I2e(n,s,a,c,f,"throw",p)}c(void 0)})}}function C2e(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),r.push.apply(r,s)}return r}function zdt(e){for(var t=1;t{"use strict";T2e.exports=kn;var bw;kn.ReadableState=b2e;var s$t=Ie("events").EventEmitter,D2e=function(t,r){return t.listeners(r).length},rb=oY(),aN=Ie("buffer").Buffer,egt=global.Uint8Array||function(){};function tgt(e){return aN.from(e)}function rgt(e){return aN.isBuffer(e)||e instanceof egt}var SY=Ie("util"),un;SY&&SY.debuglog?un=SY.debuglog("stream"):un=function(){};var ngt=Y1e(),RY=cY(),igt=uY(),sgt=igt.getHighWaterMark,lN=od().codes,ogt=lN.ERR_INVALID_ARG_TYPE,agt=lN.ERR_STREAM_PUSH_AFTER_EOF,lgt=lN.ERR_METHOD_NOT_IMPLEMENTED,cgt=lN.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,Pw,DY,bY;ad()(kn,rb);var tb=RY.errorOrDestroy,PY=["error","close","destroy","pause","resume"];function ugt(e,t,r){if(typeof e.prependListener=="function")return e.prependListener(t,r);!e._events||!e._events[t]?e.on(t,r):Array.isArray(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]}function b2e(e,t,r){bw=bw||Km(),e=e||{},typeof r!="boolean"&&(r=t instanceof bw),this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.readableObjectMode),this.highWaterMark=sgt(this,e,"readableHighWaterMark",r),this.buffer=new ngt,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=e.emitClose!==!1,this.autoDestroy=!!e.autoDestroy,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(Pw||(Pw=BY().StringDecoder),this.decoder=new Pw(e.encoding),this.encoding=e.encoding)}function kn(e){if(bw=bw||Km(),!(this instanceof kn))return new kn(e);var t=this instanceof bw;this._readableState=new b2e(e,this,t),this.readable=!0,e&&(typeof e.read=="function"&&(this._read=e.read),typeof e.destroy=="function"&&(this._destroy=e.destroy)),rb.call(this)}Object.defineProperty(kn.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(t){this._readableState&&(this._readableState.destroyed=t)}});kn.prototype.destroy=RY.destroy;kn.prototype._undestroy=RY.undestroy;kn.prototype._destroy=function(e,t){t(e)};kn.prototype.push=function(e,t){var r=this._readableState,s;return r.objectMode?s=!0:typeof e=="string"&&(t=t||r.defaultEncoding,t!==r.encoding&&(e=aN.from(e,t),t=""),s=!0),P2e(this,e,t,!1,s)};kn.prototype.unshift=function(e){return P2e(this,e,null,!0,!1)};function P2e(e,t,r,s,a){un("readableAddChunk",t);var n=e._readableState;if(t===null)n.reading=!1,pgt(e,n);else{var c;if(a||(c=fgt(n,t)),c)tb(e,c);else if(n.objectMode||t&&t.length>0)if(typeof t!="string"&&!n.objectMode&&Object.getPrototypeOf(t)!==aN.prototype&&(t=tgt(t)),s)n.endEmitted?tb(e,new cgt):xY(e,n,t,!0);else if(n.ended)tb(e,new agt);else{if(n.destroyed)return!1;n.reading=!1,n.decoder&&!r?(t=n.decoder.write(t),n.objectMode||t.length!==0?xY(e,n,t,!1):QY(e,n)):xY(e,n,t,!1)}else s||(n.reading=!1,QY(e,n))}return!n.ended&&(n.length=v2e?e=v2e:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}function S2e(e,t){return e<=0||t.length===0&&t.ended?0:t.objectMode?1:e!==e?t.flowing&&t.length?t.buffer.head.data.length:t.length:(e>t.highWaterMark&&(t.highWaterMark=Agt(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}kn.prototype.read=function(e){un("read",e),e=parseInt(e,10);var t=this._readableState,r=e;if(e!==0&&(t.emittedReadable=!1),e===0&&t.needReadable&&((t.highWaterMark!==0?t.length>=t.highWaterMark:t.length>0)||t.ended))return un("read: emitReadable",t.length,t.ended),t.length===0&&t.ended?kY(this):cN(this),null;if(e=S2e(e,t),e===0&&t.ended)return t.length===0&&kY(this),null;var s=t.needReadable;un("need readable",s),(t.length===0||t.length-e0?a=Q2e(e,t):a=null,a===null?(t.needReadable=t.length<=t.highWaterMark,e=0):(t.length-=e,t.awaitDrain=0),t.length===0&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&kY(this)),a!==null&&this.emit("data",a),a};function pgt(e,t){if(un("onEofChunk"),!t.ended){if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,t.sync?cN(e):(t.needReadable=!1,t.emittedReadable||(t.emittedReadable=!0,x2e(e)))}}function cN(e){var t=e._readableState;un("emitReadable",t.needReadable,t.emittedReadable),t.needReadable=!1,t.emittedReadable||(un("emitReadable",t.flowing),t.emittedReadable=!0,process.nextTick(x2e,e))}function x2e(e){var t=e._readableState;un("emitReadable_",t.destroyed,t.length,t.ended),!t.destroyed&&(t.length||t.ended)&&(e.emit("readable"),t.emittedReadable=!1),t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark,TY(e)}function QY(e,t){t.readingMore||(t.readingMore=!0,process.nextTick(hgt,e,t))}function hgt(e,t){for(;!t.reading&&!t.ended&&(t.length1&&R2e(s.pipes,e)!==-1)&&!h&&(un("false write response, pause",s.awaitDrain),s.awaitDrain++),r.pause())}function S(O){un("onerror",O),T(),e.removeListener("error",S),D2e(e,"error")===0&&tb(e,O)}ugt(e,"error",S);function x(){e.removeListener("finish",I),T()}e.once("close",x);function I(){un("onfinish"),e.removeListener("close",x),T()}e.once("finish",I);function T(){un("unpipe"),r.unpipe(e)}return e.emit("pipe",r),s.flowing||(un("pipe resume"),r.resume()),e};function dgt(e){return function(){var r=e._readableState;un("pipeOnDrain",r.awaitDrain),r.awaitDrain&&r.awaitDrain--,r.awaitDrain===0&&D2e(e,"data")&&(r.flowing=!0,TY(e))}}kn.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(t.pipesCount===0)return this;if(t.pipesCount===1)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,r),this);if(!e){var s=t.pipes,a=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var n=0;n0,s.flowing!==!1&&this.resume()):e==="readable"&&!s.endEmitted&&!s.readableListening&&(s.readableListening=s.needReadable=!0,s.flowing=!1,s.emittedReadable=!1,un("on readable",s.length,s.reading),s.length?cN(this):s.reading||process.nextTick(ggt,this)),r};kn.prototype.addListener=kn.prototype.on;kn.prototype.removeListener=function(e,t){var r=rb.prototype.removeListener.call(this,e,t);return e==="readable"&&process.nextTick(k2e,this),r};kn.prototype.removeAllListeners=function(e){var t=rb.prototype.removeAllListeners.apply(this,arguments);return(e==="readable"||e===void 0)&&process.nextTick(k2e,this),t};function k2e(e){var t=e._readableState;t.readableListening=e.listenerCount("readable")>0,t.resumeScheduled&&!t.paused?t.flowing=!0:e.listenerCount("data")>0&&e.resume()}function ggt(e){un("readable nexttick read 0"),e.read(0)}kn.prototype.resume=function(){var e=this._readableState;return e.flowing||(un("resume"),e.flowing=!e.readableListening,mgt(this,e)),e.paused=!1,this};function mgt(e,t){t.resumeScheduled||(t.resumeScheduled=!0,process.nextTick(ygt,e,t))}function ygt(e,t){un("resume",t.reading),t.reading||e.read(0),t.resumeScheduled=!1,e.emit("resume"),TY(e),t.flowing&&!t.reading&&e.read(0)}kn.prototype.pause=function(){return un("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(un("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function TY(e){var t=e._readableState;for(un("flow",t.flowing);t.flowing&&e.read()!==null;);}kn.prototype.wrap=function(e){var t=this,r=this._readableState,s=!1;e.on("end",function(){if(un("wrapped end"),r.decoder&&!r.ended){var c=r.decoder.end();c&&c.length&&t.push(c)}t.push(null)}),e.on("data",function(c){if(un("wrapped data"),r.decoder&&(c=r.decoder.write(c)),!(r.objectMode&&c==null)&&!(!r.objectMode&&(!c||!c.length))){var f=t.push(c);f||(s=!0,e.pause())}});for(var a in e)this[a]===void 0&&typeof e[a]=="function"&&(this[a]=function(f){return function(){return e[f].apply(e,arguments)}}(a));for(var n=0;n=t.length?(t.decoder?r=t.buffer.join(""):t.buffer.length===1?r=t.buffer.first():r=t.buffer.concat(t.length),t.buffer.clear()):r=t.buffer.consume(e,t.decoder),r}function kY(e){var t=e._readableState;un("endReadable",t.endEmitted),t.endEmitted||(t.ended=!0,process.nextTick(Egt,t,e))}function Egt(e,t){if(un("endReadableNT",e.endEmitted,e.length),!e.endEmitted&&e.length===0&&(e.endEmitted=!0,t.readable=!1,t.emit("end"),e.autoDestroy)){var r=t._writableState;(!r||r.autoDestroy&&r.finished)&&t.destroy()}}typeof Symbol=="function"&&(kn.from=function(e,t){return bY===void 0&&(bY=B2e()),bY(kn,e,t)});function R2e(e,t){for(var r=0,s=e.length;r{"use strict";N2e.exports=ah;var uN=od().codes,Igt=uN.ERR_METHOD_NOT_IMPLEMENTED,Cgt=uN.ERR_MULTIPLE_CALLBACK,wgt=uN.ERR_TRANSFORM_ALREADY_TRANSFORMING,Bgt=uN.ERR_TRANSFORM_WITH_LENGTH_0,fN=Km();ad()(ah,fN);function vgt(e,t){var r=this._transformState;r.transforming=!1;var s=r.writecb;if(s===null)return this.emit("error",new Cgt);r.writechunk=null,r.writecb=null,t!=null&&this.push(t),s(e);var a=this._readableState;a.reading=!1,(a.needReadable||a.length{"use strict";L2e.exports=nb;var O2e=FY();ad()(nb,O2e);function nb(e){if(!(this instanceof nb))return new nb(e);O2e.call(this,e)}nb.prototype._transform=function(e,t,r){r(null,e)}});var G2e=G((c$t,j2e)=>{"use strict";var NY;function Dgt(e){var t=!1;return function(){t||(t=!0,e.apply(void 0,arguments))}}var H2e=od().codes,bgt=H2e.ERR_MISSING_ARGS,Pgt=H2e.ERR_STREAM_DESTROYED;function U2e(e){if(e)throw e}function xgt(e){return e.setHeader&&typeof e.abort=="function"}function kgt(e,t,r,s){s=Dgt(s);var a=!1;e.on("close",function(){a=!0}),NY===void 0&&(NY=iN()),NY(e,{readable:t,writable:r},function(c){if(c)return s(c);a=!0,s()});var n=!1;return function(c){if(!a&&!n){if(n=!0,xgt(e))return e.abort();if(typeof e.destroy=="function")return e.destroy();s(c||new Pgt("pipe"))}}}function _2e(e){e()}function Qgt(e,t){return e.pipe(t)}function Rgt(e){return!e.length||typeof e[e.length-1]!="function"?U2e:e.pop()}function Tgt(){for(var e=arguments.length,t=new Array(e),r=0;r0;return kgt(c,p,h,function(E){a||(a=E),E&&n.forEach(_2e),!p&&(n.forEach(_2e),s(a))})});return t.reduce(Qgt)}j2e.exports=Tgt});var xw=G((Kc,sb)=>{var ib=Ie("stream");process.env.READABLE_STREAM==="disable"&&ib?(sb.exports=ib.Readable,Object.assign(sb.exports,ib),sb.exports.Stream=ib):(Kc=sb.exports=EY(),Kc.Stream=ib||Kc,Kc.Readable=Kc,Kc.Writable=gY(),Kc.Duplex=Km(),Kc.Transform=FY(),Kc.PassThrough=M2e(),Kc.finished=iN(),Kc.pipeline=G2e())});var Y2e=G((u$t,W2e)=>{"use strict";var{Buffer:Af}=Ie("buffer"),q2e=Symbol.for("BufferList");function wi(e){if(!(this instanceof wi))return new wi(e);wi._init.call(this,e)}wi._init=function(t){Object.defineProperty(this,q2e,{value:!0}),this._bufs=[],this.length=0,t&&this.append(t)};wi.prototype._new=function(t){return new wi(t)};wi.prototype._offset=function(t){if(t===0)return[0,0];let r=0;for(let s=0;sthis.length||t<0)return;let r=this._offset(t);return this._bufs[r[0]][r[1]]};wi.prototype.slice=function(t,r){return typeof t=="number"&&t<0&&(t+=this.length),typeof r=="number"&&r<0&&(r+=this.length),this.copy(null,0,t,r)};wi.prototype.copy=function(t,r,s,a){if((typeof s!="number"||s<0)&&(s=0),(typeof a!="number"||a>this.length)&&(a=this.length),s>=this.length||a<=0)return t||Af.alloc(0);let n=!!t,c=this._offset(s),f=a-s,p=f,h=n&&r||0,E=c[1];if(s===0&&a===this.length){if(!n)return this._bufs.length===1?this._bufs[0]:Af.concat(this._bufs,this.length);for(let C=0;CS)this._bufs[C].copy(t,h,E),h+=S;else{this._bufs[C].copy(t,h,E,E+p),h+=S;break}p-=S,E&&(E=0)}return t.length>h?t.slice(0,h):t};wi.prototype.shallowSlice=function(t,r){if(t=t||0,r=typeof r!="number"?this.length:r,t<0&&(t+=this.length),r<0&&(r+=this.length),t===r)return this._new();let s=this._offset(t),a=this._offset(r),n=this._bufs.slice(s[0],a[0]+1);return a[1]===0?n.pop():n[n.length-1]=n[n.length-1].slice(0,a[1]),s[1]!==0&&(n[0]=n[0].slice(s[1])),this._new(n)};wi.prototype.toString=function(t,r,s){return this.slice(r,s).toString(t)};wi.prototype.consume=function(t){if(t=Math.trunc(t),Number.isNaN(t)||t<=0)return this;for(;this._bufs.length;)if(t>=this._bufs[0].length)t-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(t),this.length-=t;break}return this};wi.prototype.duplicate=function(){let t=this._new();for(let r=0;rthis.length?this.length:t;let s=this._offset(t),a=s[0],n=s[1];for(;a=e.length){let p=c.indexOf(e,n);if(p!==-1)return this._reverseOffset([a,p]);n=c.length-e.length+1}else{let p=this._reverseOffset([a,n]);if(this._match(p,e))return p;n++}n=0}return-1};wi.prototype._match=function(e,t){if(this.length-e{"use strict";var OY=xw().Duplex,Fgt=ad(),ob=Y2e();function aa(e){if(!(this instanceof aa))return new aa(e);if(typeof e=="function"){this._callback=e;let t=function(s){this._callback&&(this._callback(s),this._callback=null)}.bind(this);this.on("pipe",function(s){s.on("error",t)}),this.on("unpipe",function(s){s.removeListener("error",t)}),e=null}ob._init.call(this,e),OY.call(this)}Fgt(aa,OY);Object.assign(aa.prototype,ob.prototype);aa.prototype._new=function(t){return new aa(t)};aa.prototype._write=function(t,r,s){this._appendBuffer(t),typeof s=="function"&&s()};aa.prototype._read=function(t){if(!this.length)return this.push(null);t=Math.min(t,this.length),this.push(this.slice(0,t)),this.consume(t)};aa.prototype.end=function(t){OY.prototype.end.call(this,t),this._callback&&(this._callback(null,this.slice()),this._callback=null)};aa.prototype._destroy=function(t,r){this._bufs.length=0,this.length=0,r(t)};aa.prototype._isBufferList=function(t){return t instanceof aa||t instanceof ob||aa.isBufferList(t)};aa.isBufferList=ob.isBufferList;AN.exports=aa;AN.exports.BufferListStream=aa;AN.exports.BufferList=ob});var UY=G(Qw=>{var Ngt=Buffer.alloc,Ogt="0000000000000000000",Lgt="7777777777777777777",J2e=48,K2e=Buffer.from("ustar\0","binary"),Mgt=Buffer.from("00","binary"),Ugt=Buffer.from("ustar ","binary"),_gt=Buffer.from(" \0","binary"),Hgt=parseInt("7777",8),ab=257,MY=263,jgt=function(e,t,r){return typeof e!="number"?r:(e=~~e,e>=t?t:e>=0||(e+=t,e>=0)?e:0)},Ggt=function(e){switch(e){case 0:return"file";case 1:return"link";case 2:return"symlink";case 3:return"character-device";case 4:return"block-device";case 5:return"directory";case 6:return"fifo";case 7:return"contiguous-file";case 72:return"pax-header";case 55:return"pax-global-header";case 27:return"gnu-long-link-path";case 28:case 30:return"gnu-long-path"}return null},qgt=function(e){switch(e){case"file":return 0;case"link":return 1;case"symlink":return 2;case"character-device":return 3;case"block-device":return 4;case"directory":return 5;case"fifo":return 6;case"contiguous-file":return 7;case"pax-header":return 72}return 0},z2e=function(e,t,r,s){for(;rt?Lgt.slice(0,t)+" ":Ogt.slice(0,t-e.length)+e+" "};function Wgt(e){var t;if(e[0]===128)t=!0;else if(e[0]===255)t=!1;else return null;for(var r=[],s=e.length-1;s>0;s--){var a=e[s];t?r.push(a):r.push(255-a)}var n=0,c=r.length;for(s=0;s=Math.pow(10,r)&&r++,t+r+e};Qw.decodeLongPath=function(e,t){return kw(e,0,e.length,t)};Qw.encodePax=function(e){var t="";e.name&&(t+=LY(" path="+e.name+` +`)),e.linkname&&(t+=LY(" linkpath="+e.linkname+` +`));var r=e.pax;if(r)for(var s in r)t+=LY(" "+s+"="+r[s]+` +`);return Buffer.from(t)};Qw.decodePax=function(e){for(var t={};e.length;){for(var r=0;r100;){var a=r.indexOf("/");if(a===-1)return null;s+=s?"/"+r.slice(0,a):r.slice(0,a),r=r.slice(a+1)}return Buffer.byteLength(r)>100||Buffer.byteLength(s)>155||e.linkname&&Buffer.byteLength(e.linkname)>100?null:(t.write(r),t.write(Ad(e.mode&Hgt,6),100),t.write(Ad(e.uid,6),108),t.write(Ad(e.gid,6),116),t.write(Ad(e.size,11),124),t.write(Ad(e.mtime.getTime()/1e3|0,11),136),t[156]=J2e+qgt(e.type),e.linkname&&t.write(e.linkname,157),K2e.copy(t,ab),Mgt.copy(t,MY),e.uname&&t.write(e.uname,265),e.gname&&t.write(e.gname,297),t.write(Ad(e.devmajor||0,6),329),t.write(Ad(e.devminor||0,6),337),s&&t.write(s,345),t.write(Ad(X2e(t),6),148),t)};Qw.decode=function(e,t,r){var s=e[156]===0?0:e[156]-J2e,a=kw(e,0,100,t),n=pd(e,100,8),c=pd(e,108,8),f=pd(e,116,8),p=pd(e,124,12),h=pd(e,136,12),E=Ggt(s),C=e[157]===0?null:kw(e,157,100,t),S=kw(e,265,32),x=kw(e,297,32),I=pd(e,329,8),T=pd(e,337,8),O=X2e(e);if(O===8*32)return null;if(O!==pd(e,148,8))throw new Error("Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?");if(K2e.compare(e,ab,ab+6)===0)e[345]&&(a=kw(e,345,155,t)+"/"+a);else if(!(Ugt.compare(e,ab,ab+6)===0&&_gt.compare(e,MY,MY+2)===0)){if(!r)throw new Error("Invalid tar header: unknown format.")}return s===0&&a&&a[a.length-1]==="/"&&(s=5),{name:a,mode:n,uid:c,gid:f,size:p,mtime:new Date(1e3*h),type:E,linkname:C,uname:S,gname:x,devmajor:I,devminor:T}}});var iBe=G((p$t,nBe)=>{var $2e=Ie("util"),Ygt=V2e(),lb=UY(),eBe=xw().Writable,tBe=xw().PassThrough,rBe=function(){},Z2e=function(e){return e&=511,e&&512-e},Vgt=function(e,t){var r=new pN(e,t);return r.end(),r},Jgt=function(e,t){return t.path&&(e.name=t.path),t.linkpath&&(e.linkname=t.linkpath),t.size&&(e.size=parseInt(t.size,10)),e.pax=t,e},pN=function(e,t){this._parent=e,this.offset=t,tBe.call(this,{autoDestroy:!1})};$2e.inherits(pN,tBe);pN.prototype.destroy=function(e){this._parent.destroy(e)};var lh=function(e){if(!(this instanceof lh))return new lh(e);eBe.call(this,e),e=e||{},this._offset=0,this._buffer=Ygt(),this._missing=0,this._partial=!1,this._onparse=rBe,this._header=null,this._stream=null,this._overflow=null,this._cb=null,this._locked=!1,this._destroyed=!1,this._pax=null,this._paxGlobal=null,this._gnuLongPath=null,this._gnuLongLinkPath=null;var t=this,r=t._buffer,s=function(){t._continue()},a=function(S){if(t._locked=!1,S)return t.destroy(S);t._stream||s()},n=function(){t._stream=null;var S=Z2e(t._header.size);S?t._parse(S,c):t._parse(512,C),t._locked||s()},c=function(){t._buffer.consume(Z2e(t._header.size)),t._parse(512,C),s()},f=function(){var S=t._header.size;t._paxGlobal=lb.decodePax(r.slice(0,S)),r.consume(S),n()},p=function(){var S=t._header.size;t._pax=lb.decodePax(r.slice(0,S)),t._paxGlobal&&(t._pax=Object.assign({},t._paxGlobal,t._pax)),r.consume(S),n()},h=function(){var S=t._header.size;this._gnuLongPath=lb.decodeLongPath(r.slice(0,S),e.filenameEncoding),r.consume(S),n()},E=function(){var S=t._header.size;this._gnuLongLinkPath=lb.decodeLongPath(r.slice(0,S),e.filenameEncoding),r.consume(S),n()},C=function(){var S=t._offset,x;try{x=t._header=lb.decode(r.slice(0,512),e.filenameEncoding,e.allowUnknownFormat)}catch(I){t.emit("error",I)}if(r.consume(512),!x){t._parse(512,C),s();return}if(x.type==="gnu-long-path"){t._parse(x.size,h),s();return}if(x.type==="gnu-long-link-path"){t._parse(x.size,E),s();return}if(x.type==="pax-global-header"){t._parse(x.size,f),s();return}if(x.type==="pax-header"){t._parse(x.size,p),s();return}if(t._gnuLongPath&&(x.name=t._gnuLongPath,t._gnuLongPath=null),t._gnuLongLinkPath&&(x.linkname=t._gnuLongLinkPath,t._gnuLongLinkPath=null),t._pax&&(t._header=x=Jgt(x,t._pax),t._pax=null),t._locked=!0,!x.size||x.type==="directory"){t._parse(512,C),t.emit("entry",x,Vgt(t,S),a);return}t._stream=new pN(t,S),t.emit("entry",x,t._stream,a),t._parse(x.size,n),s()};this._onheader=C,this._parse(512,C)};$2e.inherits(lh,eBe);lh.prototype.destroy=function(e){this._destroyed||(this._destroyed=!0,e&&this.emit("error",e),this.emit("close"),this._stream&&this._stream.emit("close"))};lh.prototype._parse=function(e,t){this._destroyed||(this._offset+=e,this._missing=e,t===this._onheader&&(this._partial=!1),this._onparse=t)};lh.prototype._continue=function(){if(!this._destroyed){var e=this._cb;this._cb=rBe,this._overflow?this._write(this._overflow,void 0,e):e()}};lh.prototype._write=function(e,t,r){if(!this._destroyed){var s=this._stream,a=this._buffer,n=this._missing;if(e.length&&(this._partial=!0),e.lengthn&&(c=e.slice(n),e=e.slice(0,n)),s?s.end(e):a.append(e),this._overflow=c,this._onparse()}};lh.prototype._final=function(e){if(this._partial)return this.destroy(new Error("Unexpected end of data"));e()};nBe.exports=lh});var oBe=G((h$t,sBe)=>{sBe.exports=Ie("fs").constants||Ie("constants")});var fBe=G((d$t,uBe)=>{var Rw=oBe(),aBe=K8(),dN=ad(),Kgt=Buffer.alloc,lBe=xw().Readable,Tw=xw().Writable,zgt=Ie("string_decoder").StringDecoder,hN=UY(),Xgt=parseInt("755",8),Zgt=parseInt("644",8),cBe=Kgt(1024),HY=function(){},_Y=function(e,t){t&=511,t&&e.push(cBe.slice(0,512-t))};function $gt(e){switch(e&Rw.S_IFMT){case Rw.S_IFBLK:return"block-device";case Rw.S_IFCHR:return"character-device";case Rw.S_IFDIR:return"directory";case Rw.S_IFIFO:return"fifo";case Rw.S_IFLNK:return"symlink"}return"file"}var gN=function(e){Tw.call(this),this.written=0,this._to=e,this._destroyed=!1};dN(gN,Tw);gN.prototype._write=function(e,t,r){if(this.written+=e.length,this._to.push(e))return r();this._to._drain=r};gN.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var mN=function(){Tw.call(this),this.linkname="",this._decoder=new zgt("utf-8"),this._destroyed=!1};dN(mN,Tw);mN.prototype._write=function(e,t,r){this.linkname+=this._decoder.write(e),r()};mN.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var ub=function(){Tw.call(this),this._destroyed=!1};dN(ub,Tw);ub.prototype._write=function(e,t,r){r(new Error("No body allowed for this entry"))};ub.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var EA=function(e){if(!(this instanceof EA))return new EA(e);lBe.call(this,e),this._drain=HY,this._finalized=!1,this._finalizing=!1,this._destroyed=!1,this._stream=null};dN(EA,lBe);EA.prototype.entry=function(e,t,r){if(this._stream)throw new Error("already piping an entry");if(!(this._finalized||this._destroyed)){typeof t=="function"&&(r=t,t=null),r||(r=HY);var s=this;if((!e.size||e.type==="symlink")&&(e.size=0),e.type||(e.type=$gt(e.mode)),e.mode||(e.mode=e.type==="directory"?Xgt:Zgt),e.uid||(e.uid=0),e.gid||(e.gid=0),e.mtime||(e.mtime=new Date),typeof t=="string"&&(t=Buffer.from(t)),Buffer.isBuffer(t)){e.size=t.length,this._encode(e);var a=this.push(t);return _Y(s,e.size),a?process.nextTick(r):this._drain=r,new ub}if(e.type==="symlink"&&!e.linkname){var n=new mN;return aBe(n,function(f){if(f)return s.destroy(),r(f);e.linkname=n.linkname,s._encode(e),r()}),n}if(this._encode(e),e.type!=="file"&&e.type!=="contiguous-file")return process.nextTick(r),new ub;var c=new gN(this);return this._stream=c,aBe(c,function(f){if(s._stream=null,f)return s.destroy(),r(f);if(c.written!==e.size)return s.destroy(),r(new Error("size mismatch"));_Y(s,e.size),s._finalizing&&s.finalize(),r()}),c}};EA.prototype.finalize=function(){if(this._stream){this._finalizing=!0;return}this._finalized||(this._finalized=!0,this.push(cBe),this.push(null))};EA.prototype.destroy=function(e){this._destroyed||(this._destroyed=!0,e&&this.emit("error",e),this.emit("close"),this._stream&&this._stream.destroy&&this._stream.destroy())};EA.prototype._encode=function(e){if(!e.pax){var t=hN.encode(e);if(t){this.push(t);return}}this._encodePax(e)};EA.prototype._encodePax=function(e){var t=hN.encodePax({name:e.name,linkname:e.linkname,pax:e.pax}),r={name:"PaxHeader",mode:e.mode,uid:e.uid,gid:e.gid,size:t.length,mtime:e.mtime,type:"pax-header",linkname:e.linkname&&"PaxHeader",uname:e.uname,gname:e.gname,devmajor:e.devmajor,devminor:e.devminor};this.push(hN.encode(r)),this.push(t),_Y(this,t.length),r.size=e.size,r.type=e.type,this.push(hN.encode(r))};EA.prototype._read=function(e){var t=this._drain;this._drain=HY,t()};uBe.exports=EA});var ABe=G(jY=>{jY.extract=iBe();jY.pack=fBe()});var SBe=G(Ua=>{"use strict";var Amt=Ua&&Ua.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Ua,"__esModule",{value:!0});Ua.Minipass=Ua.isWritable=Ua.isReadable=Ua.isStream=void 0;var IBe=typeof process=="object"&&process?process:{stdout:null,stderr:null},eV=Ie("node:events"),vBe=Amt(Ie("node:stream")),pmt=Ie("node:string_decoder"),hmt=e=>!!e&&typeof e=="object"&&(e instanceof DN||e instanceof vBe.default||(0,Ua.isReadable)(e)||(0,Ua.isWritable)(e));Ua.isStream=hmt;var dmt=e=>!!e&&typeof e=="object"&&e instanceof eV.EventEmitter&&typeof e.pipe=="function"&&e.pipe!==vBe.default.Writable.prototype.pipe;Ua.isReadable=dmt;var gmt=e=>!!e&&typeof e=="object"&&e instanceof eV.EventEmitter&&typeof e.write=="function"&&typeof e.end=="function";Ua.isWritable=gmt;var ch=Symbol("EOF"),uh=Symbol("maybeEmitEnd"),hd=Symbol("emittedEnd"),IN=Symbol("emittingEnd"),fb=Symbol("emittedError"),CN=Symbol("closed"),CBe=Symbol("read"),wN=Symbol("flush"),wBe=Symbol("flushChunk"),pf=Symbol("encoding"),Nw=Symbol("decoder"),to=Symbol("flowing"),Ab=Symbol("paused"),Ow=Symbol("resume"),ro=Symbol("buffer"),Ma=Symbol("pipes"),no=Symbol("bufferLength"),JY=Symbol("bufferPush"),BN=Symbol("bufferShift"),la=Symbol("objectMode"),rs=Symbol("destroyed"),KY=Symbol("error"),zY=Symbol("emitData"),BBe=Symbol("emitEnd"),XY=Symbol("emitEnd2"),CA=Symbol("async"),ZY=Symbol("abort"),vN=Symbol("aborted"),pb=Symbol("signal"),$m=Symbol("dataListeners"),ic=Symbol("discarded"),hb=e=>Promise.resolve().then(e),mmt=e=>e(),ymt=e=>e==="end"||e==="finish"||e==="prefinish",Emt=e=>e instanceof ArrayBuffer||!!e&&typeof e=="object"&&e.constructor&&e.constructor.name==="ArrayBuffer"&&e.byteLength>=0,Imt=e=>!Buffer.isBuffer(e)&&ArrayBuffer.isView(e),SN=class{src;dest;opts;ondrain;constructor(t,r,s){this.src=t,this.dest=r,this.opts=s,this.ondrain=()=>t[Ow](),this.dest.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(t){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},$Y=class extends SN{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(t,r,s){super(t,r,s),this.proxyErrors=a=>r.emit("error",a),t.on("error",this.proxyErrors)}},Cmt=e=>!!e.objectMode,wmt=e=>!e.objectMode&&!!e.encoding&&e.encoding!=="buffer",DN=class extends eV.EventEmitter{[to]=!1;[Ab]=!1;[Ma]=[];[ro]=[];[la];[pf];[CA];[Nw];[ch]=!1;[hd]=!1;[IN]=!1;[CN]=!1;[fb]=null;[no]=0;[rs]=!1;[pb];[vN]=!1;[$m]=0;[ic]=!1;writable=!0;readable=!0;constructor(...t){let r=t[0]||{};if(super(),r.objectMode&&typeof r.encoding=="string")throw new TypeError("Encoding and objectMode may not be used together");Cmt(r)?(this[la]=!0,this[pf]=null):wmt(r)?(this[pf]=r.encoding,this[la]=!1):(this[la]=!1,this[pf]=null),this[CA]=!!r.async,this[Nw]=this[pf]?new pmt.StringDecoder(this[pf]):null,r&&r.debugExposeBuffer===!0&&Object.defineProperty(this,"buffer",{get:()=>this[ro]}),r&&r.debugExposePipes===!0&&Object.defineProperty(this,"pipes",{get:()=>this[Ma]});let{signal:s}=r;s&&(this[pb]=s,s.aborted?this[ZY]():s.addEventListener("abort",()=>this[ZY]()))}get bufferLength(){return this[no]}get encoding(){return this[pf]}set encoding(t){throw new Error("Encoding must be set at instantiation time")}setEncoding(t){throw new Error("Encoding must be set at instantiation time")}get objectMode(){return this[la]}set objectMode(t){throw new Error("objectMode must be set at instantiation time")}get async(){return this[CA]}set async(t){this[CA]=this[CA]||!!t}[ZY](){this[vN]=!0,this.emit("abort",this[pb]?.reason),this.destroy(this[pb]?.reason)}get aborted(){return this[vN]}set aborted(t){}write(t,r,s){if(this[vN])return!1;if(this[ch])throw new Error("write after end");if(this[rs])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;typeof r=="function"&&(s=r,r="utf8"),r||(r="utf8");let a=this[CA]?hb:mmt;if(!this[la]&&!Buffer.isBuffer(t)){if(Imt(t))t=Buffer.from(t.buffer,t.byteOffset,t.byteLength);else if(Emt(t))t=Buffer.from(t);else if(typeof t!="string")throw new Error("Non-contiguous data written to non-objectMode stream")}return this[la]?(this[to]&&this[no]!==0&&this[wN](!0),this[to]?this.emit("data",t):this[JY](t),this[no]!==0&&this.emit("readable"),s&&a(s),this[to]):t.length?(typeof t=="string"&&!(r===this[pf]&&!this[Nw]?.lastNeed)&&(t=Buffer.from(t,r)),Buffer.isBuffer(t)&&this[pf]&&(t=this[Nw].write(t)),this[to]&&this[no]!==0&&this[wN](!0),this[to]?this.emit("data",t):this[JY](t),this[no]!==0&&this.emit("readable"),s&&a(s),this[to]):(this[no]!==0&&this.emit("readable"),s&&a(s),this[to])}read(t){if(this[rs])return null;if(this[ic]=!1,this[no]===0||t===0||t&&t>this[no])return this[uh](),null;this[la]&&(t=null),this[ro].length>1&&!this[la]&&(this[ro]=[this[pf]?this[ro].join(""):Buffer.concat(this[ro],this[no])]);let r=this[CBe](t||null,this[ro][0]);return this[uh](),r}[CBe](t,r){if(this[la])this[BN]();else{let s=r;t===s.length||t===null?this[BN]():typeof s=="string"?(this[ro][0]=s.slice(t),r=s.slice(0,t),this[no]-=t):(this[ro][0]=s.subarray(t),r=s.subarray(0,t),this[no]-=t)}return this.emit("data",r),!this[ro].length&&!this[ch]&&this.emit("drain"),r}end(t,r,s){return typeof t=="function"&&(s=t,t=void 0),typeof r=="function"&&(s=r,r="utf8"),t!==void 0&&this.write(t,r),s&&this.once("end",s),this[ch]=!0,this.writable=!1,(this[to]||!this[Ab])&&this[uh](),this}[Ow](){this[rs]||(!this[$m]&&!this[Ma].length&&(this[ic]=!0),this[Ab]=!1,this[to]=!0,this.emit("resume"),this[ro].length?this[wN]():this[ch]?this[uh]():this.emit("drain"))}resume(){return this[Ow]()}pause(){this[to]=!1,this[Ab]=!0,this[ic]=!1}get destroyed(){return this[rs]}get flowing(){return this[to]}get paused(){return this[Ab]}[JY](t){this[la]?this[no]+=1:this[no]+=t.length,this[ro].push(t)}[BN](){return this[la]?this[no]-=1:this[no]-=this[ro][0].length,this[ro].shift()}[wN](t=!1){do;while(this[wBe](this[BN]())&&this[ro].length);!t&&!this[ro].length&&!this[ch]&&this.emit("drain")}[wBe](t){return this.emit("data",t),this[to]}pipe(t,r){if(this[rs])return t;this[ic]=!1;let s=this[hd];return r=r||{},t===IBe.stdout||t===IBe.stderr?r.end=!1:r.end=r.end!==!1,r.proxyErrors=!!r.proxyErrors,s?r.end&&t.end():(this[Ma].push(r.proxyErrors?new $Y(this,t,r):new SN(this,t,r)),this[CA]?hb(()=>this[Ow]()):this[Ow]()),t}unpipe(t){let r=this[Ma].find(s=>s.dest===t);r&&(this[Ma].length===1?(this[to]&&this[$m]===0&&(this[to]=!1),this[Ma]=[]):this[Ma].splice(this[Ma].indexOf(r),1),r.unpipe())}addListener(t,r){return this.on(t,r)}on(t,r){let s=super.on(t,r);if(t==="data")this[ic]=!1,this[$m]++,!this[Ma].length&&!this[to]&&this[Ow]();else if(t==="readable"&&this[no]!==0)super.emit("readable");else if(ymt(t)&&this[hd])super.emit(t),this.removeAllListeners(t);else if(t==="error"&&this[fb]){let a=r;this[CA]?hb(()=>a.call(this,this[fb])):a.call(this,this[fb])}return s}removeListener(t,r){return this.off(t,r)}off(t,r){let s=super.off(t,r);return t==="data"&&(this[$m]=this.listeners("data").length,this[$m]===0&&!this[ic]&&!this[Ma].length&&(this[to]=!1)),s}removeAllListeners(t){let r=super.removeAllListeners(t);return(t==="data"||t===void 0)&&(this[$m]=0,!this[ic]&&!this[Ma].length&&(this[to]=!1)),r}get emittedEnd(){return this[hd]}[uh](){!this[IN]&&!this[hd]&&!this[rs]&&this[ro].length===0&&this[ch]&&(this[IN]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[CN]&&this.emit("close"),this[IN]=!1)}emit(t,...r){let s=r[0];if(t!=="error"&&t!=="close"&&t!==rs&&this[rs])return!1;if(t==="data")return!this[la]&&!s?!1:this[CA]?(hb(()=>this[zY](s)),!0):this[zY](s);if(t==="end")return this[BBe]();if(t==="close"){if(this[CN]=!0,!this[hd]&&!this[rs])return!1;let n=super.emit("close");return this.removeAllListeners("close"),n}else if(t==="error"){this[fb]=s,super.emit(KY,s);let n=!this[pb]||this.listeners("error").length?super.emit("error",s):!1;return this[uh](),n}else if(t==="resume"){let n=super.emit("resume");return this[uh](),n}else if(t==="finish"||t==="prefinish"){let n=super.emit(t);return this.removeAllListeners(t),n}let a=super.emit(t,...r);return this[uh](),a}[zY](t){for(let s of this[Ma])s.dest.write(t)===!1&&this.pause();let r=this[ic]?!1:super.emit("data",t);return this[uh](),r}[BBe](){return this[hd]?!1:(this[hd]=!0,this.readable=!1,this[CA]?(hb(()=>this[XY]()),!0):this[XY]())}[XY](){if(this[Nw]){let r=this[Nw].end();if(r){for(let s of this[Ma])s.dest.write(r);this[ic]||super.emit("data",r)}}for(let r of this[Ma])r.end();let t=super.emit("end");return this.removeAllListeners("end"),t}async collect(){let t=Object.assign([],{dataLength:0});this[la]||(t.dataLength=0);let r=this.promise();return this.on("data",s=>{t.push(s),this[la]||(t.dataLength+=s.length)}),await r,t}async concat(){if(this[la])throw new Error("cannot concat in objectMode");let t=await this.collect();return this[pf]?t.join(""):Buffer.concat(t,t.dataLength)}async promise(){return new Promise((t,r)=>{this.on(rs,()=>r(new Error("stream destroyed"))),this.on("error",s=>r(s)),this.on("end",()=>t())})}[Symbol.asyncIterator](){this[ic]=!1;let t=!1,r=async()=>(this.pause(),t=!0,{value:void 0,done:!0});return{next:()=>{if(t)return r();let a=this.read();if(a!==null)return Promise.resolve({done:!1,value:a});if(this[ch])return r();let n,c,f=C=>{this.off("data",p),this.off("end",h),this.off(rs,E),r(),c(C)},p=C=>{this.off("error",f),this.off("end",h),this.off(rs,E),this.pause(),n({value:C,done:!!this[ch]})},h=()=>{this.off("error",f),this.off("data",p),this.off(rs,E),r(),n({done:!0,value:void 0})},E=()=>f(new Error("stream destroyed"));return new Promise((C,S)=>{c=S,n=C,this.once(rs,E),this.once("error",f),this.once("end",h),this.once("data",p)})},throw:r,return:r,[Symbol.asyncIterator](){return this}}}[Symbol.iterator](){this[ic]=!1;let t=!1,r=()=>(this.pause(),this.off(KY,r),this.off(rs,r),this.off("end",r),t=!0,{done:!0,value:void 0}),s=()=>{if(t)return r();let a=this.read();return a===null?r():{done:!1,value:a}};return this.once("end",r),this.once(KY,r),this.once(rs,r),{next:s,throw:r,return:r,[Symbol.iterator](){return this}}}destroy(t){if(this[rs])return t?this.emit("error",t):this.emit(rs),this;this[rs]=!0,this[ic]=!0,this[ro].length=0,this[no]=0;let r=this;return typeof r.close=="function"&&!this[CN]&&r.close(),t?this.emit("error",t):this.emit(rs),this}static get isStream(){return Ua.isStream}};Ua.Minipass=DN});var PBe=G((O$t,wA)=>{"use strict";var gb=Ie("crypto"),{Minipass:Bmt}=SBe(),rV=["sha512","sha384","sha256"],iV=["sha512"],vmt=/^[a-z0-9+/]+(?:=?=?)$/i,Smt=/^([a-z0-9]+)-([^?]+)([?\S*]*)$/,Dmt=/^([a-z0-9]+)-([A-Za-z0-9+/=]{44,88})(\?[\x21-\x7E]*)?$/,bmt=/^[\x21-\x7E]+$/,mb=e=>e?.length?`?${e.join("?")}`:"",nV=class extends Bmt{#e;#t;#s;constructor(t){super(),this.size=0,this.opts=t,this.#r(),t?.algorithms?this.algorithms=[...t.algorithms]:this.algorithms=[...iV],this.algorithm!==null&&!this.algorithms.includes(this.algorithm)&&this.algorithms.push(this.algorithm),this.hashes=this.algorithms.map(gb.createHash)}#r(){this.sri=this.opts?.integrity?sc(this.opts?.integrity,this.opts):null,this.expectedSize=this.opts?.size,this.sri?this.sri.isHash?(this.goodSri=!0,this.algorithm=this.sri.algorithm):(this.goodSri=!this.sri.isEmpty(),this.algorithm=this.sri.pickAlgorithm(this.opts)):this.algorithm=null,this.digests=this.goodSri?this.sri[this.algorithm]:null,this.optString=mb(this.opts?.options)}on(t,r){return t==="size"&&this.#t?r(this.#t):t==="integrity"&&this.#e?r(this.#e):t==="verified"&&this.#s?r(this.#s):super.on(t,r)}emit(t,r){return t==="end"&&this.#i(),super.emit(t,r)}write(t){return this.size+=t.length,this.hashes.forEach(r=>r.update(t)),super.write(t)}#i(){this.goodSri||this.#r();let t=sc(this.hashes.map((s,a)=>`${this.algorithms[a]}-${s.digest("base64")}${this.optString}`).join(" "),this.opts),r=this.goodSri&&t.match(this.sri,this.opts);if(typeof this.expectedSize=="number"&&this.size!==this.expectedSize){let s=new Error(`stream size mismatch when checking ${this.sri}. + Wanted: ${this.expectedSize} + Found: ${this.size}`);s.code="EBADSIZE",s.found=this.size,s.expected=this.expectedSize,s.sri=this.sri,this.emit("error",s)}else if(this.sri&&!r){let s=new Error(`${this.sri} integrity checksum failed when using ${this.algorithm}: wanted ${this.digests} but got ${t}. (${this.size} bytes)`);s.code="EINTEGRITY",s.found=t,s.expected=this.digests,s.algorithm=this.algorithm,s.sri=this.sri,this.emit("error",s)}else this.#t=this.size,this.emit("size",this.size),this.#e=t,this.emit("integrity",t),r&&(this.#s=r,this.emit("verified",r))}},fh=class{get isHash(){return!0}constructor(t,r){let s=r?.strict;this.source=t.trim(),this.digest="",this.algorithm="",this.options=[];let a=this.source.match(s?Dmt:Smt);if(!a||s&&!rV.includes(a[1]))return;this.algorithm=a[1],this.digest=a[2];let n=a[3];n&&(this.options=n.slice(1).split("?"))}hexDigest(){return this.digest&&Buffer.from(this.digest,"base64").toString("hex")}toJSON(){return this.toString()}match(t,r){let s=sc(t,r);if(!s)return!1;if(s.isIntegrity){let a=s.pickAlgorithm(r,[this.algorithm]);if(!a)return!1;let n=s[a].find(c=>c.digest===this.digest);return n||!1}return s.digest===this.digest?s:!1}toString(t){return t?.strict&&!(rV.includes(this.algorithm)&&this.digest.match(vmt)&&this.options.every(r=>r.match(bmt)))?"":`${this.algorithm}-${this.digest}${mb(this.options)}`}};function DBe(e,t,r,s){let a=e!=="",n=!1,c="",f=s.length-1;for(let h=0;hs[a].find(c=>n.digest===c.digest)))throw new Error("hashes do not match, cannot update integrity")}else this[a]=s[a]}match(t,r){let s=sc(t,r);if(!s)return!1;let a=s.pickAlgorithm(r,Object.keys(this));return!!a&&this[a]&&s[a]&&this[a].find(n=>s[a].find(c=>n.digest===c.digest))||!1}pickAlgorithm(t,r){let s=t?.pickAlgorithm||Nmt,a=Object.keys(this).filter(n=>r?.length?r.includes(n):!0);return a.length?a.reduce((n,c)=>s(n,c)||n):null}};wA.exports.parse=sc;function sc(e,t){if(!e)return null;if(typeof e=="string")return tV(e,t);if(e.algorithm&&e.digest){let r=new ey;return r[e.algorithm]=[e],tV(db(r,t),t)}else return tV(db(e,t),t)}function tV(e,t){if(t?.single)return new fh(e,t);let r=e.trim().split(/\s+/).reduce((s,a)=>{let n=new fh(a,t);if(n.algorithm&&n.digest){let c=n.algorithm;s[c]||(s[c]=[]),s[c].push(n)}return s},new ey);return r.isEmpty()?null:r}wA.exports.stringify=db;function db(e,t){return e.algorithm&&e.digest?fh.prototype.toString.call(e,t):typeof e=="string"?db(sc(e,t),t):ey.prototype.toString.call(e,t)}wA.exports.fromHex=Pmt;function Pmt(e,t,r){let s=mb(r?.options);return sc(`${t}-${Buffer.from(e,"hex").toString("base64")}${s}`,r)}wA.exports.fromData=xmt;function xmt(e,t){let r=t?.algorithms||[...iV],s=mb(t?.options);return r.reduce((a,n)=>{let c=gb.createHash(n).update(e).digest("base64"),f=new fh(`${n}-${c}${s}`,t);if(f.algorithm&&f.digest){let p=f.algorithm;a[p]||(a[p]=[]),a[p].push(f)}return a},new ey)}wA.exports.fromStream=kmt;function kmt(e,t){let r=sV(t);return new Promise((s,a)=>{e.pipe(r),e.on("error",a),r.on("error",a);let n;r.on("integrity",c=>{n=c}),r.on("end",()=>s(n)),r.resume()})}wA.exports.checkData=Qmt;function Qmt(e,t,r){if(t=sc(t,r),!t||!Object.keys(t).length){if(r?.error)throw Object.assign(new Error("No valid integrity hashes to check against"),{code:"EINTEGRITY"});return!1}let s=t.pickAlgorithm(r),a=gb.createHash(s).update(e).digest("base64"),n=sc({algorithm:s,digest:a}),c=n.match(t,r);if(r=r||{},c||!r.error)return c;if(typeof r.size=="number"&&e.length!==r.size){let f=new Error(`data size mismatch when checking ${t}. + Wanted: ${r.size} + Found: ${e.length}`);throw f.code="EBADSIZE",f.found=e.length,f.expected=r.size,f.sri=t,f}else{let f=new Error(`Integrity checksum failed when using ${s}: Wanted ${t}, but got ${n}. (${e.length} bytes)`);throw f.code="EINTEGRITY",f.found=n,f.expected=t,f.algorithm=s,f.sri=t,f}}wA.exports.checkStream=Rmt;function Rmt(e,t,r){if(r=r||Object.create(null),r.integrity=t,t=sc(t,r),!t||!Object.keys(t).length)return Promise.reject(Object.assign(new Error("No valid integrity hashes to check against"),{code:"EINTEGRITY"}));let s=sV(r);return new Promise((a,n)=>{e.pipe(s),e.on("error",n),s.on("error",n);let c;s.on("verified",f=>{c=f}),s.on("end",()=>a(c)),s.resume()})}wA.exports.integrityStream=sV;function sV(e=Object.create(null)){return new nV(e)}wA.exports.create=Tmt;function Tmt(e){let t=e?.algorithms||[...iV],r=mb(e?.options),s=t.map(gb.createHash);return{update:function(a,n){return s.forEach(c=>c.update(a,n)),this},digest:function(){return t.reduce((n,c)=>{let f=s.shift().digest("base64"),p=new fh(`${c}-${f}${r}`,e);if(p.algorithm&&p.digest){let h=p.algorithm;n[h]||(n[h]=[]),n[h].push(p)}return n},new ey)}}}var Fmt=gb.getHashes(),bBe=["md5","whirlpool","sha1","sha224","sha256","sha384","sha512","sha3","sha3-256","sha3-384","sha3-512","sha3_256","sha3_384","sha3_512"].filter(e=>Fmt.includes(e));function Nmt(e,t){return bBe.indexOf(e.toLowerCase())>=bBe.indexOf(t.toLowerCase())?e:t}});var oV=G(dd=>{"use strict";Object.defineProperty(dd,"__esModule",{value:!0});dd.Signature=dd.Envelope=void 0;dd.Envelope={fromJSON(e){return{payload:bN(e.payload)?Buffer.from(xBe(e.payload)):Buffer.alloc(0),payloadType:bN(e.payloadType)?globalThis.String(e.payloadType):"",signatures:globalThis.Array.isArray(e?.signatures)?e.signatures.map(t=>dd.Signature.fromJSON(t)):[]}},toJSON(e){let t={};return e.payload.length!==0&&(t.payload=kBe(e.payload)),e.payloadType!==""&&(t.payloadType=e.payloadType),e.signatures?.length&&(t.signatures=e.signatures.map(r=>dd.Signature.toJSON(r))),t}};dd.Signature={fromJSON(e){return{sig:bN(e.sig)?Buffer.from(xBe(e.sig)):Buffer.alloc(0),keyid:bN(e.keyid)?globalThis.String(e.keyid):""}},toJSON(e){let t={};return e.sig.length!==0&&(t.sig=kBe(e.sig)),e.keyid!==""&&(t.keyid=e.keyid),t}};function xBe(e){return Uint8Array.from(globalThis.Buffer.from(e,"base64"))}function kBe(e){return globalThis.Buffer.from(e).toString("base64")}function bN(e){return e!=null}});var RBe=G(PN=>{"use strict";Object.defineProperty(PN,"__esModule",{value:!0});PN.Timestamp=void 0;PN.Timestamp={fromJSON(e){return{seconds:QBe(e.seconds)?globalThis.String(e.seconds):"0",nanos:QBe(e.nanos)?globalThis.Number(e.nanos):0}},toJSON(e){let t={};return e.seconds!=="0"&&(t.seconds=e.seconds),e.nanos!==0&&(t.nanos=Math.round(e.nanos)),t}};function QBe(e){return e!=null}});var Lw=G(Ur=>{"use strict";Object.defineProperty(Ur,"__esModule",{value:!0});Ur.TimeRange=Ur.X509CertificateChain=Ur.SubjectAlternativeName=Ur.X509Certificate=Ur.DistinguishedName=Ur.ObjectIdentifierValuePair=Ur.ObjectIdentifier=Ur.PublicKeyIdentifier=Ur.PublicKey=Ur.RFC3161SignedTimestamp=Ur.LogId=Ur.MessageSignature=Ur.HashOutput=Ur.SubjectAlternativeNameType=Ur.PublicKeyDetails=Ur.HashAlgorithm=void 0;Ur.hashAlgorithmFromJSON=FBe;Ur.hashAlgorithmToJSON=NBe;Ur.publicKeyDetailsFromJSON=OBe;Ur.publicKeyDetailsToJSON=LBe;Ur.subjectAlternativeNameTypeFromJSON=MBe;Ur.subjectAlternativeNameTypeToJSON=UBe;var Omt=RBe(),Sl;(function(e){e[e.HASH_ALGORITHM_UNSPECIFIED=0]="HASH_ALGORITHM_UNSPECIFIED",e[e.SHA2_256=1]="SHA2_256",e[e.SHA2_384=2]="SHA2_384",e[e.SHA2_512=3]="SHA2_512",e[e.SHA3_256=4]="SHA3_256",e[e.SHA3_384=5]="SHA3_384"})(Sl||(Ur.HashAlgorithm=Sl={}));function FBe(e){switch(e){case 0:case"HASH_ALGORITHM_UNSPECIFIED":return Sl.HASH_ALGORITHM_UNSPECIFIED;case 1:case"SHA2_256":return Sl.SHA2_256;case 2:case"SHA2_384":return Sl.SHA2_384;case 3:case"SHA2_512":return Sl.SHA2_512;case 4:case"SHA3_256":return Sl.SHA3_256;case 5:case"SHA3_384":return Sl.SHA3_384;default:throw new globalThis.Error("Unrecognized enum value "+e+" for enum HashAlgorithm")}}function NBe(e){switch(e){case Sl.HASH_ALGORITHM_UNSPECIFIED:return"HASH_ALGORITHM_UNSPECIFIED";case Sl.SHA2_256:return"SHA2_256";case Sl.SHA2_384:return"SHA2_384";case Sl.SHA2_512:return"SHA2_512";case Sl.SHA3_256:return"SHA3_256";case Sl.SHA3_384:return"SHA3_384";default:throw new globalThis.Error("Unrecognized enum value "+e+" for enum HashAlgorithm")}}var sn;(function(e){e[e.PUBLIC_KEY_DETAILS_UNSPECIFIED=0]="PUBLIC_KEY_DETAILS_UNSPECIFIED",e[e.PKCS1_RSA_PKCS1V5=1]="PKCS1_RSA_PKCS1V5",e[e.PKCS1_RSA_PSS=2]="PKCS1_RSA_PSS",e[e.PKIX_RSA_PKCS1V5=3]="PKIX_RSA_PKCS1V5",e[e.PKIX_RSA_PSS=4]="PKIX_RSA_PSS",e[e.PKIX_RSA_PKCS1V15_2048_SHA256=9]="PKIX_RSA_PKCS1V15_2048_SHA256",e[e.PKIX_RSA_PKCS1V15_3072_SHA256=10]="PKIX_RSA_PKCS1V15_3072_SHA256",e[e.PKIX_RSA_PKCS1V15_4096_SHA256=11]="PKIX_RSA_PKCS1V15_4096_SHA256",e[e.PKIX_RSA_PSS_2048_SHA256=16]="PKIX_RSA_PSS_2048_SHA256",e[e.PKIX_RSA_PSS_3072_SHA256=17]="PKIX_RSA_PSS_3072_SHA256",e[e.PKIX_RSA_PSS_4096_SHA256=18]="PKIX_RSA_PSS_4096_SHA256",e[e.PKIX_ECDSA_P256_HMAC_SHA_256=6]="PKIX_ECDSA_P256_HMAC_SHA_256",e[e.PKIX_ECDSA_P256_SHA_256=5]="PKIX_ECDSA_P256_SHA_256",e[e.PKIX_ECDSA_P384_SHA_384=12]="PKIX_ECDSA_P384_SHA_384",e[e.PKIX_ECDSA_P521_SHA_512=13]="PKIX_ECDSA_P521_SHA_512",e[e.PKIX_ED25519=7]="PKIX_ED25519",e[e.PKIX_ED25519_PH=8]="PKIX_ED25519_PH",e[e.LMS_SHA256=14]="LMS_SHA256",e[e.LMOTS_SHA256=15]="LMOTS_SHA256"})(sn||(Ur.PublicKeyDetails=sn={}));function OBe(e){switch(e){case 0:case"PUBLIC_KEY_DETAILS_UNSPECIFIED":return sn.PUBLIC_KEY_DETAILS_UNSPECIFIED;case 1:case"PKCS1_RSA_PKCS1V5":return sn.PKCS1_RSA_PKCS1V5;case 2:case"PKCS1_RSA_PSS":return sn.PKCS1_RSA_PSS;case 3:case"PKIX_RSA_PKCS1V5":return sn.PKIX_RSA_PKCS1V5;case 4:case"PKIX_RSA_PSS":return sn.PKIX_RSA_PSS;case 9:case"PKIX_RSA_PKCS1V15_2048_SHA256":return sn.PKIX_RSA_PKCS1V15_2048_SHA256;case 10:case"PKIX_RSA_PKCS1V15_3072_SHA256":return sn.PKIX_RSA_PKCS1V15_3072_SHA256;case 11:case"PKIX_RSA_PKCS1V15_4096_SHA256":return sn.PKIX_RSA_PKCS1V15_4096_SHA256;case 16:case"PKIX_RSA_PSS_2048_SHA256":return sn.PKIX_RSA_PSS_2048_SHA256;case 17:case"PKIX_RSA_PSS_3072_SHA256":return sn.PKIX_RSA_PSS_3072_SHA256;case 18:case"PKIX_RSA_PSS_4096_SHA256":return sn.PKIX_RSA_PSS_4096_SHA256;case 6:case"PKIX_ECDSA_P256_HMAC_SHA_256":return sn.PKIX_ECDSA_P256_HMAC_SHA_256;case 5:case"PKIX_ECDSA_P256_SHA_256":return sn.PKIX_ECDSA_P256_SHA_256;case 12:case"PKIX_ECDSA_P384_SHA_384":return sn.PKIX_ECDSA_P384_SHA_384;case 13:case"PKIX_ECDSA_P521_SHA_512":return sn.PKIX_ECDSA_P521_SHA_512;case 7:case"PKIX_ED25519":return sn.PKIX_ED25519;case 8:case"PKIX_ED25519_PH":return sn.PKIX_ED25519_PH;case 14:case"LMS_SHA256":return sn.LMS_SHA256;case 15:case"LMOTS_SHA256":return sn.LMOTS_SHA256;default:throw new globalThis.Error("Unrecognized enum value "+e+" for enum PublicKeyDetails")}}function LBe(e){switch(e){case sn.PUBLIC_KEY_DETAILS_UNSPECIFIED:return"PUBLIC_KEY_DETAILS_UNSPECIFIED";case sn.PKCS1_RSA_PKCS1V5:return"PKCS1_RSA_PKCS1V5";case sn.PKCS1_RSA_PSS:return"PKCS1_RSA_PSS";case sn.PKIX_RSA_PKCS1V5:return"PKIX_RSA_PKCS1V5";case sn.PKIX_RSA_PSS:return"PKIX_RSA_PSS";case sn.PKIX_RSA_PKCS1V15_2048_SHA256:return"PKIX_RSA_PKCS1V15_2048_SHA256";case sn.PKIX_RSA_PKCS1V15_3072_SHA256:return"PKIX_RSA_PKCS1V15_3072_SHA256";case sn.PKIX_RSA_PKCS1V15_4096_SHA256:return"PKIX_RSA_PKCS1V15_4096_SHA256";case sn.PKIX_RSA_PSS_2048_SHA256:return"PKIX_RSA_PSS_2048_SHA256";case sn.PKIX_RSA_PSS_3072_SHA256:return"PKIX_RSA_PSS_3072_SHA256";case sn.PKIX_RSA_PSS_4096_SHA256:return"PKIX_RSA_PSS_4096_SHA256";case sn.PKIX_ECDSA_P256_HMAC_SHA_256:return"PKIX_ECDSA_P256_HMAC_SHA_256";case sn.PKIX_ECDSA_P256_SHA_256:return"PKIX_ECDSA_P256_SHA_256";case sn.PKIX_ECDSA_P384_SHA_384:return"PKIX_ECDSA_P384_SHA_384";case sn.PKIX_ECDSA_P521_SHA_512:return"PKIX_ECDSA_P521_SHA_512";case sn.PKIX_ED25519:return"PKIX_ED25519";case sn.PKIX_ED25519_PH:return"PKIX_ED25519_PH";case sn.LMS_SHA256:return"LMS_SHA256";case sn.LMOTS_SHA256:return"LMOTS_SHA256";default:throw new globalThis.Error("Unrecognized enum value "+e+" for enum PublicKeyDetails")}}var BA;(function(e){e[e.SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED=0]="SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED",e[e.EMAIL=1]="EMAIL",e[e.URI=2]="URI",e[e.OTHER_NAME=3]="OTHER_NAME"})(BA||(Ur.SubjectAlternativeNameType=BA={}));function MBe(e){switch(e){case 0:case"SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED":return BA.SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED;case 1:case"EMAIL":return BA.EMAIL;case 2:case"URI":return BA.URI;case 3:case"OTHER_NAME":return BA.OTHER_NAME;default:throw new globalThis.Error("Unrecognized enum value "+e+" for enum SubjectAlternativeNameType")}}function UBe(e){switch(e){case BA.SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED:return"SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED";case BA.EMAIL:return"EMAIL";case BA.URI:return"URI";case BA.OTHER_NAME:return"OTHER_NAME";default:throw new globalThis.Error("Unrecognized enum value "+e+" for enum SubjectAlternativeNameType")}}Ur.HashOutput={fromJSON(e){return{algorithm:Es(e.algorithm)?FBe(e.algorithm):0,digest:Es(e.digest)?Buffer.from(ty(e.digest)):Buffer.alloc(0)}},toJSON(e){let t={};return e.algorithm!==0&&(t.algorithm=NBe(e.algorithm)),e.digest.length!==0&&(t.digest=ry(e.digest)),t}};Ur.MessageSignature={fromJSON(e){return{messageDigest:Es(e.messageDigest)?Ur.HashOutput.fromJSON(e.messageDigest):void 0,signature:Es(e.signature)?Buffer.from(ty(e.signature)):Buffer.alloc(0)}},toJSON(e){let t={};return e.messageDigest!==void 0&&(t.messageDigest=Ur.HashOutput.toJSON(e.messageDigest)),e.signature.length!==0&&(t.signature=ry(e.signature)),t}};Ur.LogId={fromJSON(e){return{keyId:Es(e.keyId)?Buffer.from(ty(e.keyId)):Buffer.alloc(0)}},toJSON(e){let t={};return e.keyId.length!==0&&(t.keyId=ry(e.keyId)),t}};Ur.RFC3161SignedTimestamp={fromJSON(e){return{signedTimestamp:Es(e.signedTimestamp)?Buffer.from(ty(e.signedTimestamp)):Buffer.alloc(0)}},toJSON(e){let t={};return e.signedTimestamp.length!==0&&(t.signedTimestamp=ry(e.signedTimestamp)),t}};Ur.PublicKey={fromJSON(e){return{rawBytes:Es(e.rawBytes)?Buffer.from(ty(e.rawBytes)):void 0,keyDetails:Es(e.keyDetails)?OBe(e.keyDetails):0,validFor:Es(e.validFor)?Ur.TimeRange.fromJSON(e.validFor):void 0}},toJSON(e){let t={};return e.rawBytes!==void 0&&(t.rawBytes=ry(e.rawBytes)),e.keyDetails!==0&&(t.keyDetails=LBe(e.keyDetails)),e.validFor!==void 0&&(t.validFor=Ur.TimeRange.toJSON(e.validFor)),t}};Ur.PublicKeyIdentifier={fromJSON(e){return{hint:Es(e.hint)?globalThis.String(e.hint):""}},toJSON(e){let t={};return e.hint!==""&&(t.hint=e.hint),t}};Ur.ObjectIdentifier={fromJSON(e){return{id:globalThis.Array.isArray(e?.id)?e.id.map(t=>globalThis.Number(t)):[]}},toJSON(e){let t={};return e.id?.length&&(t.id=e.id.map(r=>Math.round(r))),t}};Ur.ObjectIdentifierValuePair={fromJSON(e){return{oid:Es(e.oid)?Ur.ObjectIdentifier.fromJSON(e.oid):void 0,value:Es(e.value)?Buffer.from(ty(e.value)):Buffer.alloc(0)}},toJSON(e){let t={};return e.oid!==void 0&&(t.oid=Ur.ObjectIdentifier.toJSON(e.oid)),e.value.length!==0&&(t.value=ry(e.value)),t}};Ur.DistinguishedName={fromJSON(e){return{organization:Es(e.organization)?globalThis.String(e.organization):"",commonName:Es(e.commonName)?globalThis.String(e.commonName):""}},toJSON(e){let t={};return e.organization!==""&&(t.organization=e.organization),e.commonName!==""&&(t.commonName=e.commonName),t}};Ur.X509Certificate={fromJSON(e){return{rawBytes:Es(e.rawBytes)?Buffer.from(ty(e.rawBytes)):Buffer.alloc(0)}},toJSON(e){let t={};return e.rawBytes.length!==0&&(t.rawBytes=ry(e.rawBytes)),t}};Ur.SubjectAlternativeName={fromJSON(e){return{type:Es(e.type)?MBe(e.type):0,identity:Es(e.regexp)?{$case:"regexp",regexp:globalThis.String(e.regexp)}:Es(e.value)?{$case:"value",value:globalThis.String(e.value)}:void 0}},toJSON(e){let t={};return e.type!==0&&(t.type=UBe(e.type)),e.identity?.$case==="regexp"?t.regexp=e.identity.regexp:e.identity?.$case==="value"&&(t.value=e.identity.value),t}};Ur.X509CertificateChain={fromJSON(e){return{certificates:globalThis.Array.isArray(e?.certificates)?e.certificates.map(t=>Ur.X509Certificate.fromJSON(t)):[]}},toJSON(e){let t={};return e.certificates?.length&&(t.certificates=e.certificates.map(r=>Ur.X509Certificate.toJSON(r))),t}};Ur.TimeRange={fromJSON(e){return{start:Es(e.start)?TBe(e.start):void 0,end:Es(e.end)?TBe(e.end):void 0}},toJSON(e){let t={};return e.start!==void 0&&(t.start=e.start.toISOString()),e.end!==void 0&&(t.end=e.end.toISOString()),t}};function ty(e){return Uint8Array.from(globalThis.Buffer.from(e,"base64"))}function ry(e){return globalThis.Buffer.from(e).toString("base64")}function Lmt(e){let t=(globalThis.Number(e.seconds)||0)*1e3;return t+=(e.nanos||0)/1e6,new globalThis.Date(t)}function TBe(e){return e instanceof globalThis.Date?e:typeof e=="string"?new globalThis.Date(e):Lmt(Omt.Timestamp.fromJSON(e))}function Es(e){return e!=null}});var aV=G(Is=>{"use strict";Object.defineProperty(Is,"__esModule",{value:!0});Is.TransparencyLogEntry=Is.InclusionPromise=Is.InclusionProof=Is.Checkpoint=Is.KindVersion=void 0;var _Be=Lw();Is.KindVersion={fromJSON(e){return{kind:Ha(e.kind)?globalThis.String(e.kind):"",version:Ha(e.version)?globalThis.String(e.version):""}},toJSON(e){let t={};return e.kind!==""&&(t.kind=e.kind),e.version!==""&&(t.version=e.version),t}};Is.Checkpoint={fromJSON(e){return{envelope:Ha(e.envelope)?globalThis.String(e.envelope):""}},toJSON(e){let t={};return e.envelope!==""&&(t.envelope=e.envelope),t}};Is.InclusionProof={fromJSON(e){return{logIndex:Ha(e.logIndex)?globalThis.String(e.logIndex):"0",rootHash:Ha(e.rootHash)?Buffer.from(xN(e.rootHash)):Buffer.alloc(0),treeSize:Ha(e.treeSize)?globalThis.String(e.treeSize):"0",hashes:globalThis.Array.isArray(e?.hashes)?e.hashes.map(t=>Buffer.from(xN(t))):[],checkpoint:Ha(e.checkpoint)?Is.Checkpoint.fromJSON(e.checkpoint):void 0}},toJSON(e){let t={};return e.logIndex!=="0"&&(t.logIndex=e.logIndex),e.rootHash.length!==0&&(t.rootHash=kN(e.rootHash)),e.treeSize!=="0"&&(t.treeSize=e.treeSize),e.hashes?.length&&(t.hashes=e.hashes.map(r=>kN(r))),e.checkpoint!==void 0&&(t.checkpoint=Is.Checkpoint.toJSON(e.checkpoint)),t}};Is.InclusionPromise={fromJSON(e){return{signedEntryTimestamp:Ha(e.signedEntryTimestamp)?Buffer.from(xN(e.signedEntryTimestamp)):Buffer.alloc(0)}},toJSON(e){let t={};return e.signedEntryTimestamp.length!==0&&(t.signedEntryTimestamp=kN(e.signedEntryTimestamp)),t}};Is.TransparencyLogEntry={fromJSON(e){return{logIndex:Ha(e.logIndex)?globalThis.String(e.logIndex):"0",logId:Ha(e.logId)?_Be.LogId.fromJSON(e.logId):void 0,kindVersion:Ha(e.kindVersion)?Is.KindVersion.fromJSON(e.kindVersion):void 0,integratedTime:Ha(e.integratedTime)?globalThis.String(e.integratedTime):"0",inclusionPromise:Ha(e.inclusionPromise)?Is.InclusionPromise.fromJSON(e.inclusionPromise):void 0,inclusionProof:Ha(e.inclusionProof)?Is.InclusionProof.fromJSON(e.inclusionProof):void 0,canonicalizedBody:Ha(e.canonicalizedBody)?Buffer.from(xN(e.canonicalizedBody)):Buffer.alloc(0)}},toJSON(e){let t={};return e.logIndex!=="0"&&(t.logIndex=e.logIndex),e.logId!==void 0&&(t.logId=_Be.LogId.toJSON(e.logId)),e.kindVersion!==void 0&&(t.kindVersion=Is.KindVersion.toJSON(e.kindVersion)),e.integratedTime!=="0"&&(t.integratedTime=e.integratedTime),e.inclusionPromise!==void 0&&(t.inclusionPromise=Is.InclusionPromise.toJSON(e.inclusionPromise)),e.inclusionProof!==void 0&&(t.inclusionProof=Is.InclusionProof.toJSON(e.inclusionProof)),e.canonicalizedBody.length!==0&&(t.canonicalizedBody=kN(e.canonicalizedBody)),t}};function xN(e){return Uint8Array.from(globalThis.Buffer.from(e,"base64"))}function kN(e){return globalThis.Buffer.from(e).toString("base64")}function Ha(e){return e!=null}});var lV=G(zc=>{"use strict";Object.defineProperty(zc,"__esModule",{value:!0});zc.Bundle=zc.VerificationMaterial=zc.TimestampVerificationData=void 0;var HBe=oV(),vA=Lw(),jBe=aV();zc.TimestampVerificationData={fromJSON(e){return{rfc3161Timestamps:globalThis.Array.isArray(e?.rfc3161Timestamps)?e.rfc3161Timestamps.map(t=>vA.RFC3161SignedTimestamp.fromJSON(t)):[]}},toJSON(e){let t={};return e.rfc3161Timestamps?.length&&(t.rfc3161Timestamps=e.rfc3161Timestamps.map(r=>vA.RFC3161SignedTimestamp.toJSON(r))),t}};zc.VerificationMaterial={fromJSON(e){return{content:gd(e.publicKey)?{$case:"publicKey",publicKey:vA.PublicKeyIdentifier.fromJSON(e.publicKey)}:gd(e.x509CertificateChain)?{$case:"x509CertificateChain",x509CertificateChain:vA.X509CertificateChain.fromJSON(e.x509CertificateChain)}:gd(e.certificate)?{$case:"certificate",certificate:vA.X509Certificate.fromJSON(e.certificate)}:void 0,tlogEntries:globalThis.Array.isArray(e?.tlogEntries)?e.tlogEntries.map(t=>jBe.TransparencyLogEntry.fromJSON(t)):[],timestampVerificationData:gd(e.timestampVerificationData)?zc.TimestampVerificationData.fromJSON(e.timestampVerificationData):void 0}},toJSON(e){let t={};return e.content?.$case==="publicKey"?t.publicKey=vA.PublicKeyIdentifier.toJSON(e.content.publicKey):e.content?.$case==="x509CertificateChain"?t.x509CertificateChain=vA.X509CertificateChain.toJSON(e.content.x509CertificateChain):e.content?.$case==="certificate"&&(t.certificate=vA.X509Certificate.toJSON(e.content.certificate)),e.tlogEntries?.length&&(t.tlogEntries=e.tlogEntries.map(r=>jBe.TransparencyLogEntry.toJSON(r))),e.timestampVerificationData!==void 0&&(t.timestampVerificationData=zc.TimestampVerificationData.toJSON(e.timestampVerificationData)),t}};zc.Bundle={fromJSON(e){return{mediaType:gd(e.mediaType)?globalThis.String(e.mediaType):"",verificationMaterial:gd(e.verificationMaterial)?zc.VerificationMaterial.fromJSON(e.verificationMaterial):void 0,content:gd(e.messageSignature)?{$case:"messageSignature",messageSignature:vA.MessageSignature.fromJSON(e.messageSignature)}:gd(e.dsseEnvelope)?{$case:"dsseEnvelope",dsseEnvelope:HBe.Envelope.fromJSON(e.dsseEnvelope)}:void 0}},toJSON(e){let t={};return e.mediaType!==""&&(t.mediaType=e.mediaType),e.verificationMaterial!==void 0&&(t.verificationMaterial=zc.VerificationMaterial.toJSON(e.verificationMaterial)),e.content?.$case==="messageSignature"?t.messageSignature=vA.MessageSignature.toJSON(e.content.messageSignature):e.content?.$case==="dsseEnvelope"&&(t.dsseEnvelope=HBe.Envelope.toJSON(e.content.dsseEnvelope)),t}};function gd(e){return e!=null}});var cV=G(Ti=>{"use strict";Object.defineProperty(Ti,"__esModule",{value:!0});Ti.ClientTrustConfig=Ti.SigningConfig=Ti.TrustedRoot=Ti.CertificateAuthority=Ti.TransparencyLogInstance=void 0;var Dl=Lw();Ti.TransparencyLogInstance={fromJSON(e){return{baseUrl:ca(e.baseUrl)?globalThis.String(e.baseUrl):"",hashAlgorithm:ca(e.hashAlgorithm)?(0,Dl.hashAlgorithmFromJSON)(e.hashAlgorithm):0,publicKey:ca(e.publicKey)?Dl.PublicKey.fromJSON(e.publicKey):void 0,logId:ca(e.logId)?Dl.LogId.fromJSON(e.logId):void 0,checkpointKeyId:ca(e.checkpointKeyId)?Dl.LogId.fromJSON(e.checkpointKeyId):void 0}},toJSON(e){let t={};return e.baseUrl!==""&&(t.baseUrl=e.baseUrl),e.hashAlgorithm!==0&&(t.hashAlgorithm=(0,Dl.hashAlgorithmToJSON)(e.hashAlgorithm)),e.publicKey!==void 0&&(t.publicKey=Dl.PublicKey.toJSON(e.publicKey)),e.logId!==void 0&&(t.logId=Dl.LogId.toJSON(e.logId)),e.checkpointKeyId!==void 0&&(t.checkpointKeyId=Dl.LogId.toJSON(e.checkpointKeyId)),t}};Ti.CertificateAuthority={fromJSON(e){return{subject:ca(e.subject)?Dl.DistinguishedName.fromJSON(e.subject):void 0,uri:ca(e.uri)?globalThis.String(e.uri):"",certChain:ca(e.certChain)?Dl.X509CertificateChain.fromJSON(e.certChain):void 0,validFor:ca(e.validFor)?Dl.TimeRange.fromJSON(e.validFor):void 0}},toJSON(e){let t={};return e.subject!==void 0&&(t.subject=Dl.DistinguishedName.toJSON(e.subject)),e.uri!==""&&(t.uri=e.uri),e.certChain!==void 0&&(t.certChain=Dl.X509CertificateChain.toJSON(e.certChain)),e.validFor!==void 0&&(t.validFor=Dl.TimeRange.toJSON(e.validFor)),t}};Ti.TrustedRoot={fromJSON(e){return{mediaType:ca(e.mediaType)?globalThis.String(e.mediaType):"",tlogs:globalThis.Array.isArray(e?.tlogs)?e.tlogs.map(t=>Ti.TransparencyLogInstance.fromJSON(t)):[],certificateAuthorities:globalThis.Array.isArray(e?.certificateAuthorities)?e.certificateAuthorities.map(t=>Ti.CertificateAuthority.fromJSON(t)):[],ctlogs:globalThis.Array.isArray(e?.ctlogs)?e.ctlogs.map(t=>Ti.TransparencyLogInstance.fromJSON(t)):[],timestampAuthorities:globalThis.Array.isArray(e?.timestampAuthorities)?e.timestampAuthorities.map(t=>Ti.CertificateAuthority.fromJSON(t)):[]}},toJSON(e){let t={};return e.mediaType!==""&&(t.mediaType=e.mediaType),e.tlogs?.length&&(t.tlogs=e.tlogs.map(r=>Ti.TransparencyLogInstance.toJSON(r))),e.certificateAuthorities?.length&&(t.certificateAuthorities=e.certificateAuthorities.map(r=>Ti.CertificateAuthority.toJSON(r))),e.ctlogs?.length&&(t.ctlogs=e.ctlogs.map(r=>Ti.TransparencyLogInstance.toJSON(r))),e.timestampAuthorities?.length&&(t.timestampAuthorities=e.timestampAuthorities.map(r=>Ti.CertificateAuthority.toJSON(r))),t}};Ti.SigningConfig={fromJSON(e){return{mediaType:ca(e.mediaType)?globalThis.String(e.mediaType):"",caUrl:ca(e.caUrl)?globalThis.String(e.caUrl):"",oidcUrl:ca(e.oidcUrl)?globalThis.String(e.oidcUrl):"",tlogUrls:globalThis.Array.isArray(e?.tlogUrls)?e.tlogUrls.map(t=>globalThis.String(t)):[],tsaUrls:globalThis.Array.isArray(e?.tsaUrls)?e.tsaUrls.map(t=>globalThis.String(t)):[]}},toJSON(e){let t={};return e.mediaType!==""&&(t.mediaType=e.mediaType),e.caUrl!==""&&(t.caUrl=e.caUrl),e.oidcUrl!==""&&(t.oidcUrl=e.oidcUrl),e.tlogUrls?.length&&(t.tlogUrls=e.tlogUrls),e.tsaUrls?.length&&(t.tsaUrls=e.tsaUrls),t}};Ti.ClientTrustConfig={fromJSON(e){return{mediaType:ca(e.mediaType)?globalThis.String(e.mediaType):"",trustedRoot:ca(e.trustedRoot)?Ti.TrustedRoot.fromJSON(e.trustedRoot):void 0,signingConfig:ca(e.signingConfig)?Ti.SigningConfig.fromJSON(e.signingConfig):void 0}},toJSON(e){let t={};return e.mediaType!==""&&(t.mediaType=e.mediaType),e.trustedRoot!==void 0&&(t.trustedRoot=Ti.TrustedRoot.toJSON(e.trustedRoot)),e.signingConfig!==void 0&&(t.signingConfig=Ti.SigningConfig.toJSON(e.signingConfig)),t}};function ca(e){return e!=null}});var WBe=G(Vr=>{"use strict";Object.defineProperty(Vr,"__esModule",{value:!0});Vr.Input=Vr.Artifact=Vr.ArtifactVerificationOptions_ObserverTimestampOptions=Vr.ArtifactVerificationOptions_TlogIntegratedTimestampOptions=Vr.ArtifactVerificationOptions_TimestampAuthorityOptions=Vr.ArtifactVerificationOptions_CtlogOptions=Vr.ArtifactVerificationOptions_TlogOptions=Vr.ArtifactVerificationOptions=Vr.PublicKeyIdentities=Vr.CertificateIdentities=Vr.CertificateIdentity=void 0;var GBe=lV(),md=Lw(),qBe=cV();Vr.CertificateIdentity={fromJSON(e){return{issuer:gi(e.issuer)?globalThis.String(e.issuer):"",san:gi(e.san)?md.SubjectAlternativeName.fromJSON(e.san):void 0,oids:globalThis.Array.isArray(e?.oids)?e.oids.map(t=>md.ObjectIdentifierValuePair.fromJSON(t)):[]}},toJSON(e){let t={};return e.issuer!==""&&(t.issuer=e.issuer),e.san!==void 0&&(t.san=md.SubjectAlternativeName.toJSON(e.san)),e.oids?.length&&(t.oids=e.oids.map(r=>md.ObjectIdentifierValuePair.toJSON(r))),t}};Vr.CertificateIdentities={fromJSON(e){return{identities:globalThis.Array.isArray(e?.identities)?e.identities.map(t=>Vr.CertificateIdentity.fromJSON(t)):[]}},toJSON(e){let t={};return e.identities?.length&&(t.identities=e.identities.map(r=>Vr.CertificateIdentity.toJSON(r))),t}};Vr.PublicKeyIdentities={fromJSON(e){return{publicKeys:globalThis.Array.isArray(e?.publicKeys)?e.publicKeys.map(t=>md.PublicKey.fromJSON(t)):[]}},toJSON(e){let t={};return e.publicKeys?.length&&(t.publicKeys=e.publicKeys.map(r=>md.PublicKey.toJSON(r))),t}};Vr.ArtifactVerificationOptions={fromJSON(e){return{signers:gi(e.certificateIdentities)?{$case:"certificateIdentities",certificateIdentities:Vr.CertificateIdentities.fromJSON(e.certificateIdentities)}:gi(e.publicKeys)?{$case:"publicKeys",publicKeys:Vr.PublicKeyIdentities.fromJSON(e.publicKeys)}:void 0,tlogOptions:gi(e.tlogOptions)?Vr.ArtifactVerificationOptions_TlogOptions.fromJSON(e.tlogOptions):void 0,ctlogOptions:gi(e.ctlogOptions)?Vr.ArtifactVerificationOptions_CtlogOptions.fromJSON(e.ctlogOptions):void 0,tsaOptions:gi(e.tsaOptions)?Vr.ArtifactVerificationOptions_TimestampAuthorityOptions.fromJSON(e.tsaOptions):void 0,integratedTsOptions:gi(e.integratedTsOptions)?Vr.ArtifactVerificationOptions_TlogIntegratedTimestampOptions.fromJSON(e.integratedTsOptions):void 0,observerOptions:gi(e.observerOptions)?Vr.ArtifactVerificationOptions_ObserverTimestampOptions.fromJSON(e.observerOptions):void 0}},toJSON(e){let t={};return e.signers?.$case==="certificateIdentities"?t.certificateIdentities=Vr.CertificateIdentities.toJSON(e.signers.certificateIdentities):e.signers?.$case==="publicKeys"&&(t.publicKeys=Vr.PublicKeyIdentities.toJSON(e.signers.publicKeys)),e.tlogOptions!==void 0&&(t.tlogOptions=Vr.ArtifactVerificationOptions_TlogOptions.toJSON(e.tlogOptions)),e.ctlogOptions!==void 0&&(t.ctlogOptions=Vr.ArtifactVerificationOptions_CtlogOptions.toJSON(e.ctlogOptions)),e.tsaOptions!==void 0&&(t.tsaOptions=Vr.ArtifactVerificationOptions_TimestampAuthorityOptions.toJSON(e.tsaOptions)),e.integratedTsOptions!==void 0&&(t.integratedTsOptions=Vr.ArtifactVerificationOptions_TlogIntegratedTimestampOptions.toJSON(e.integratedTsOptions)),e.observerOptions!==void 0&&(t.observerOptions=Vr.ArtifactVerificationOptions_ObserverTimestampOptions.toJSON(e.observerOptions)),t}};Vr.ArtifactVerificationOptions_TlogOptions={fromJSON(e){return{threshold:gi(e.threshold)?globalThis.Number(e.threshold):0,performOnlineVerification:gi(e.performOnlineVerification)?globalThis.Boolean(e.performOnlineVerification):!1,disable:gi(e.disable)?globalThis.Boolean(e.disable):!1}},toJSON(e){let t={};return e.threshold!==0&&(t.threshold=Math.round(e.threshold)),e.performOnlineVerification!==!1&&(t.performOnlineVerification=e.performOnlineVerification),e.disable!==!1&&(t.disable=e.disable),t}};Vr.ArtifactVerificationOptions_CtlogOptions={fromJSON(e){return{threshold:gi(e.threshold)?globalThis.Number(e.threshold):0,disable:gi(e.disable)?globalThis.Boolean(e.disable):!1}},toJSON(e){let t={};return e.threshold!==0&&(t.threshold=Math.round(e.threshold)),e.disable!==!1&&(t.disable=e.disable),t}};Vr.ArtifactVerificationOptions_TimestampAuthorityOptions={fromJSON(e){return{threshold:gi(e.threshold)?globalThis.Number(e.threshold):0,disable:gi(e.disable)?globalThis.Boolean(e.disable):!1}},toJSON(e){let t={};return e.threshold!==0&&(t.threshold=Math.round(e.threshold)),e.disable!==!1&&(t.disable=e.disable),t}};Vr.ArtifactVerificationOptions_TlogIntegratedTimestampOptions={fromJSON(e){return{threshold:gi(e.threshold)?globalThis.Number(e.threshold):0,disable:gi(e.disable)?globalThis.Boolean(e.disable):!1}},toJSON(e){let t={};return e.threshold!==0&&(t.threshold=Math.round(e.threshold)),e.disable!==!1&&(t.disable=e.disable),t}};Vr.ArtifactVerificationOptions_ObserverTimestampOptions={fromJSON(e){return{threshold:gi(e.threshold)?globalThis.Number(e.threshold):0,disable:gi(e.disable)?globalThis.Boolean(e.disable):!1}},toJSON(e){let t={};return e.threshold!==0&&(t.threshold=Math.round(e.threshold)),e.disable!==!1&&(t.disable=e.disable),t}};Vr.Artifact={fromJSON(e){return{data:gi(e.artifactUri)?{$case:"artifactUri",artifactUri:globalThis.String(e.artifactUri)}:gi(e.artifact)?{$case:"artifact",artifact:Buffer.from(Mmt(e.artifact))}:gi(e.artifactDigest)?{$case:"artifactDigest",artifactDigest:md.HashOutput.fromJSON(e.artifactDigest)}:void 0}},toJSON(e){let t={};return e.data?.$case==="artifactUri"?t.artifactUri=e.data.artifactUri:e.data?.$case==="artifact"?t.artifact=Umt(e.data.artifact):e.data?.$case==="artifactDigest"&&(t.artifactDigest=md.HashOutput.toJSON(e.data.artifactDigest)),t}};Vr.Input={fromJSON(e){return{artifactTrustRoot:gi(e.artifactTrustRoot)?qBe.TrustedRoot.fromJSON(e.artifactTrustRoot):void 0,artifactVerificationOptions:gi(e.artifactVerificationOptions)?Vr.ArtifactVerificationOptions.fromJSON(e.artifactVerificationOptions):void 0,bundle:gi(e.bundle)?GBe.Bundle.fromJSON(e.bundle):void 0,artifact:gi(e.artifact)?Vr.Artifact.fromJSON(e.artifact):void 0}},toJSON(e){let t={};return e.artifactTrustRoot!==void 0&&(t.artifactTrustRoot=qBe.TrustedRoot.toJSON(e.artifactTrustRoot)),e.artifactVerificationOptions!==void 0&&(t.artifactVerificationOptions=Vr.ArtifactVerificationOptions.toJSON(e.artifactVerificationOptions)),e.bundle!==void 0&&(t.bundle=GBe.Bundle.toJSON(e.bundle)),e.artifact!==void 0&&(t.artifact=Vr.Artifact.toJSON(e.artifact)),t}};function Mmt(e){return Uint8Array.from(globalThis.Buffer.from(e,"base64"))}function Umt(e){return globalThis.Buffer.from(e).toString("base64")}function gi(e){return e!=null}});var yb=G(Xc=>{"use strict";var _mt=Xc&&Xc.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||("get"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),Mw=Xc&&Xc.__exportStar||function(e,t){for(var r in e)r!=="default"&&!Object.prototype.hasOwnProperty.call(t,r)&&_mt(t,e,r)};Object.defineProperty(Xc,"__esModule",{value:!0});Mw(oV(),Xc);Mw(lV(),Xc);Mw(Lw(),Xc);Mw(aV(),Xc);Mw(cV(),Xc);Mw(WBe(),Xc)});var QN=G(bl=>{"use strict";Object.defineProperty(bl,"__esModule",{value:!0});bl.BUNDLE_V03_MEDIA_TYPE=bl.BUNDLE_V03_LEGACY_MEDIA_TYPE=bl.BUNDLE_V02_MEDIA_TYPE=bl.BUNDLE_V01_MEDIA_TYPE=void 0;bl.isBundleWithCertificateChain=Hmt;bl.isBundleWithPublicKey=jmt;bl.isBundleWithMessageSignature=Gmt;bl.isBundleWithDsseEnvelope=qmt;bl.BUNDLE_V01_MEDIA_TYPE="application/vnd.dev.sigstore.bundle+json;version=0.1";bl.BUNDLE_V02_MEDIA_TYPE="application/vnd.dev.sigstore.bundle+json;version=0.2";bl.BUNDLE_V03_LEGACY_MEDIA_TYPE="application/vnd.dev.sigstore.bundle+json;version=0.3";bl.BUNDLE_V03_MEDIA_TYPE="application/vnd.dev.sigstore.bundle.v0.3+json";function Hmt(e){return e.verificationMaterial.content.$case==="x509CertificateChain"}function jmt(e){return e.verificationMaterial.content.$case==="publicKey"}function Gmt(e){return e.content.$case==="messageSignature"}function qmt(e){return e.content.$case==="dsseEnvelope"}});var VBe=G(TN=>{"use strict";Object.defineProperty(TN,"__esModule",{value:!0});TN.toMessageSignatureBundle=Ymt;TN.toDSSEBundle=Vmt;var Wmt=yb(),RN=QN();function Ymt(e){return{mediaType:e.certificateChain?RN.BUNDLE_V02_MEDIA_TYPE:RN.BUNDLE_V03_MEDIA_TYPE,content:{$case:"messageSignature",messageSignature:{messageDigest:{algorithm:Wmt.HashAlgorithm.SHA2_256,digest:e.digest},signature:e.signature}},verificationMaterial:YBe(e)}}function Vmt(e){return{mediaType:e.certificateChain?RN.BUNDLE_V02_MEDIA_TYPE:RN.BUNDLE_V03_MEDIA_TYPE,content:{$case:"dsseEnvelope",dsseEnvelope:Jmt(e)},verificationMaterial:YBe(e)}}function Jmt(e){return{payloadType:e.artifactType,payload:e.artifact,signatures:[Kmt(e)]}}function Kmt(e){return{keyid:e.keyHint||"",sig:e.signature}}function YBe(e){return{content:zmt(e),tlogEntries:[],timestampVerificationData:{rfc3161Timestamps:[]}}}function zmt(e){return e.certificate?e.certificateChain?{$case:"x509CertificateChain",x509CertificateChain:{certificates:[{rawBytes:e.certificate}]}}:{$case:"certificate",certificate:{rawBytes:e.certificate}}:{$case:"publicKey",publicKey:{hint:e.keyHint||""}}}});var fV=G(FN=>{"use strict";Object.defineProperty(FN,"__esModule",{value:!0});FN.ValidationError=void 0;var uV=class extends Error{constructor(t,r){super(t),this.fields=r}};FN.ValidationError=uV});var AV=G(ny=>{"use strict";Object.defineProperty(ny,"__esModule",{value:!0});ny.assertBundle=Xmt;ny.assertBundleV01=JBe;ny.isBundleV01=Zmt;ny.assertBundleV02=$mt;ny.assertBundleLatest=eyt;var NN=fV();function Xmt(e){let t=ON(e);if(t.length>0)throw new NN.ValidationError("invalid bundle",t)}function JBe(e){let t=[];if(t.push(...ON(e)),t.push(...tyt(e)),t.length>0)throw new NN.ValidationError("invalid v0.1 bundle",t)}function Zmt(e){try{return JBe(e),!0}catch{return!1}}function $mt(e){let t=[];if(t.push(...ON(e)),t.push(...KBe(e)),t.length>0)throw new NN.ValidationError("invalid v0.2 bundle",t)}function eyt(e){let t=[];if(t.push(...ON(e)),t.push(...KBe(e)),t.push(...ryt(e)),t.length>0)throw new NN.ValidationError("invalid bundle",t)}function ON(e){let t=[];if((e.mediaType===void 0||!e.mediaType.match(/^application\/vnd\.dev\.sigstore\.bundle\+json;version=\d\.\d/)&&!e.mediaType.match(/^application\/vnd\.dev\.sigstore\.bundle\.v\d\.\d\+json/))&&t.push("mediaType"),e.content===void 0)t.push("content");else switch(e.content.$case){case"messageSignature":e.content.messageSignature.messageDigest===void 0?t.push("content.messageSignature.messageDigest"):e.content.messageSignature.messageDigest.digest.length===0&&t.push("content.messageSignature.messageDigest.digest"),e.content.messageSignature.signature.length===0&&t.push("content.messageSignature.signature");break;case"dsseEnvelope":e.content.dsseEnvelope.payload.length===0&&t.push("content.dsseEnvelope.payload"),e.content.dsseEnvelope.signatures.length!==1?t.push("content.dsseEnvelope.signatures"):e.content.dsseEnvelope.signatures[0].sig.length===0&&t.push("content.dsseEnvelope.signatures[0].sig");break}if(e.verificationMaterial===void 0)t.push("verificationMaterial");else{if(e.verificationMaterial.content===void 0)t.push("verificationMaterial.content");else switch(e.verificationMaterial.content.$case){case"x509CertificateChain":e.verificationMaterial.content.x509CertificateChain.certificates.length===0&&t.push("verificationMaterial.content.x509CertificateChain.certificates"),e.verificationMaterial.content.x509CertificateChain.certificates.forEach((r,s)=>{r.rawBytes.length===0&&t.push(`verificationMaterial.content.x509CertificateChain.certificates[${s}].rawBytes`)});break;case"certificate":e.verificationMaterial.content.certificate.rawBytes.length===0&&t.push("verificationMaterial.content.certificate.rawBytes");break}e.verificationMaterial.tlogEntries===void 0?t.push("verificationMaterial.tlogEntries"):e.verificationMaterial.tlogEntries.length>0&&e.verificationMaterial.tlogEntries.forEach((r,s)=>{r.logId===void 0&&t.push(`verificationMaterial.tlogEntries[${s}].logId`),r.kindVersion===void 0&&t.push(`verificationMaterial.tlogEntries[${s}].kindVersion`)})}return t}function tyt(e){let t=[];return e.verificationMaterial&&e.verificationMaterial.tlogEntries?.length>0&&e.verificationMaterial.tlogEntries.forEach((r,s)=>{r.inclusionPromise===void 0&&t.push(`verificationMaterial.tlogEntries[${s}].inclusionPromise`)}),t}function KBe(e){let t=[];return e.verificationMaterial&&e.verificationMaterial.tlogEntries?.length>0&&e.verificationMaterial.tlogEntries.forEach((r,s)=>{r.inclusionProof===void 0?t.push(`verificationMaterial.tlogEntries[${s}].inclusionProof`):r.inclusionProof.checkpoint===void 0&&t.push(`verificationMaterial.tlogEntries[${s}].inclusionProof.checkpoint`)}),t}function ryt(e){let t=[];return e.verificationMaterial?.content?.$case==="x509CertificateChain"&&t.push("verificationMaterial.content.$case"),t}});var XBe=G(SA=>{"use strict";Object.defineProperty(SA,"__esModule",{value:!0});SA.envelopeToJSON=SA.envelopeFromJSON=SA.bundleToJSON=SA.bundleFromJSON=void 0;var LN=yb(),zBe=QN(),pV=AV(),nyt=e=>{let t=LN.Bundle.fromJSON(e);switch(t.mediaType){case zBe.BUNDLE_V01_MEDIA_TYPE:(0,pV.assertBundleV01)(t);break;case zBe.BUNDLE_V02_MEDIA_TYPE:(0,pV.assertBundleV02)(t);break;default:(0,pV.assertBundleLatest)(t);break}return t};SA.bundleFromJSON=nyt;var iyt=e=>LN.Bundle.toJSON(e);SA.bundleToJSON=iyt;var syt=e=>LN.Envelope.fromJSON(e);SA.envelopeFromJSON=syt;var oyt=e=>LN.Envelope.toJSON(e);SA.envelopeToJSON=oyt});var Ib=G(Xr=>{"use strict";Object.defineProperty(Xr,"__esModule",{value:!0});Xr.isBundleV01=Xr.assertBundleV02=Xr.assertBundleV01=Xr.assertBundleLatest=Xr.assertBundle=Xr.envelopeToJSON=Xr.envelopeFromJSON=Xr.bundleToJSON=Xr.bundleFromJSON=Xr.ValidationError=Xr.isBundleWithPublicKey=Xr.isBundleWithMessageSignature=Xr.isBundleWithDsseEnvelope=Xr.isBundleWithCertificateChain=Xr.BUNDLE_V03_MEDIA_TYPE=Xr.BUNDLE_V03_LEGACY_MEDIA_TYPE=Xr.BUNDLE_V02_MEDIA_TYPE=Xr.BUNDLE_V01_MEDIA_TYPE=Xr.toMessageSignatureBundle=Xr.toDSSEBundle=void 0;var ZBe=VBe();Object.defineProperty(Xr,"toDSSEBundle",{enumerable:!0,get:function(){return ZBe.toDSSEBundle}});Object.defineProperty(Xr,"toMessageSignatureBundle",{enumerable:!0,get:function(){return ZBe.toMessageSignatureBundle}});var yd=QN();Object.defineProperty(Xr,"BUNDLE_V01_MEDIA_TYPE",{enumerable:!0,get:function(){return yd.BUNDLE_V01_MEDIA_TYPE}});Object.defineProperty(Xr,"BUNDLE_V02_MEDIA_TYPE",{enumerable:!0,get:function(){return yd.BUNDLE_V02_MEDIA_TYPE}});Object.defineProperty(Xr,"BUNDLE_V03_LEGACY_MEDIA_TYPE",{enumerable:!0,get:function(){return yd.BUNDLE_V03_LEGACY_MEDIA_TYPE}});Object.defineProperty(Xr,"BUNDLE_V03_MEDIA_TYPE",{enumerable:!0,get:function(){return yd.BUNDLE_V03_MEDIA_TYPE}});Object.defineProperty(Xr,"isBundleWithCertificateChain",{enumerable:!0,get:function(){return yd.isBundleWithCertificateChain}});Object.defineProperty(Xr,"isBundleWithDsseEnvelope",{enumerable:!0,get:function(){return yd.isBundleWithDsseEnvelope}});Object.defineProperty(Xr,"isBundleWithMessageSignature",{enumerable:!0,get:function(){return yd.isBundleWithMessageSignature}});Object.defineProperty(Xr,"isBundleWithPublicKey",{enumerable:!0,get:function(){return yd.isBundleWithPublicKey}});var ayt=fV();Object.defineProperty(Xr,"ValidationError",{enumerable:!0,get:function(){return ayt.ValidationError}});var MN=XBe();Object.defineProperty(Xr,"bundleFromJSON",{enumerable:!0,get:function(){return MN.bundleFromJSON}});Object.defineProperty(Xr,"bundleToJSON",{enumerable:!0,get:function(){return MN.bundleToJSON}});Object.defineProperty(Xr,"envelopeFromJSON",{enumerable:!0,get:function(){return MN.envelopeFromJSON}});Object.defineProperty(Xr,"envelopeToJSON",{enumerable:!0,get:function(){return MN.envelopeToJSON}});var Eb=AV();Object.defineProperty(Xr,"assertBundle",{enumerable:!0,get:function(){return Eb.assertBundle}});Object.defineProperty(Xr,"assertBundleLatest",{enumerable:!0,get:function(){return Eb.assertBundleLatest}});Object.defineProperty(Xr,"assertBundleV01",{enumerable:!0,get:function(){return Eb.assertBundleV01}});Object.defineProperty(Xr,"assertBundleV02",{enumerable:!0,get:function(){return Eb.assertBundleV02}});Object.defineProperty(Xr,"isBundleV01",{enumerable:!0,get:function(){return Eb.isBundleV01}})});var Cb=G(_N=>{"use strict";Object.defineProperty(_N,"__esModule",{value:!0});_N.ByteStream=void 0;var hV=class extends Error{},UN=class e{constructor(t){this.start=0,t?(this.buf=t,this.view=Buffer.from(t)):(this.buf=new ArrayBuffer(0),this.view=Buffer.from(this.buf))}get buffer(){return this.view.subarray(0,this.start)}get length(){return this.view.byteLength}get position(){return this.start}seek(t){this.start=t}slice(t,r){let s=t+r;if(s>this.length)throw new hV("request past end of buffer");return this.view.subarray(t,s)}appendChar(t){this.ensureCapacity(1),this.view[this.start]=t,this.start+=1}appendUint16(t){this.ensureCapacity(2);let r=new Uint16Array([t]),s=new Uint8Array(r.buffer);this.view[this.start]=s[1],this.view[this.start+1]=s[0],this.start+=2}appendUint24(t){this.ensureCapacity(3);let r=new Uint32Array([t]),s=new Uint8Array(r.buffer);this.view[this.start]=s[2],this.view[this.start+1]=s[1],this.view[this.start+2]=s[0],this.start+=3}appendView(t){this.ensureCapacity(t.length),this.view.set(t,this.start),this.start+=t.length}getBlock(t){if(t<=0)return Buffer.alloc(0);if(this.start+t>this.view.length)throw new Error("request past end of buffer");let r=this.view.subarray(this.start,this.start+t);return this.start+=t,r}getUint8(){return this.getBlock(1)[0]}getUint16(){let t=this.getBlock(2);return t[0]<<8|t[1]}ensureCapacity(t){if(this.start+t>this.view.byteLength){let r=e.BLOCK_SIZE+(t>e.BLOCK_SIZE?t:0);this.realloc(this.view.byteLength+r)}}realloc(t){let r=new ArrayBuffer(t),s=Buffer.from(r);s.set(this.view),this.buf=r,this.view=s}};_N.ByteStream=UN;UN.BLOCK_SIZE=1024});var HN=G(Uw=>{"use strict";Object.defineProperty(Uw,"__esModule",{value:!0});Uw.ASN1TypeError=Uw.ASN1ParseError=void 0;var dV=class extends Error{};Uw.ASN1ParseError=dV;var gV=class extends Error{};Uw.ASN1TypeError=gV});var eve=G(jN=>{"use strict";Object.defineProperty(jN,"__esModule",{value:!0});jN.decodeLength=lyt;jN.encodeLength=cyt;var $Be=HN();function lyt(e){let t=e.getUint8();if(!(t&128))return t;let r=t&127;if(r>6)throw new $Be.ASN1ParseError("length exceeds 6 byte limit");let s=0;for(let a=0;a0n;)r.unshift(Number(t&255n)),t=t>>8n;return Buffer.from([128|r.length,...r])}});var rve=G(Ed=>{"use strict";Object.defineProperty(Ed,"__esModule",{value:!0});Ed.parseInteger=Ayt;Ed.parseStringASCII=tve;Ed.parseTime=pyt;Ed.parseOID=hyt;Ed.parseBoolean=dyt;Ed.parseBitString=gyt;var uyt=/^(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\.\d{3})?Z$/,fyt=/^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\.\d{3})?Z$/;function Ayt(e){let t=0,r=e.length,s=e[t],a=s>127,n=a?255:0;for(;s==n&&++t=50?1900:2e3,s[1]=a.toString()}return new Date(`${s[1]}-${s[2]}-${s[3]}T${s[4]}:${s[5]}:${s[6]}Z`)}function hyt(e){let t=0,r=e.length,s=e[t++],a=Math.floor(s/40),n=s%40,c=`${a}.${n}`,f=0;for(;t=f;--p)a.push(c>>p&1)}return a}});var ive=G(GN=>{"use strict";Object.defineProperty(GN,"__esModule",{value:!0});GN.ASN1Tag=void 0;var nve=HN(),iy={BOOLEAN:1,INTEGER:2,BIT_STRING:3,OCTET_STRING:4,OBJECT_IDENTIFIER:6,SEQUENCE:16,SET:17,PRINTABLE_STRING:19,UTC_TIME:23,GENERALIZED_TIME:24},mV={UNIVERSAL:0,APPLICATION:1,CONTEXT_SPECIFIC:2,PRIVATE:3},yV=class{constructor(t){if(this.number=t&31,this.constructed=(t&32)===32,this.class=t>>6,this.number===31)throw new nve.ASN1ParseError("long form tags not supported");if(this.class===mV.UNIVERSAL&&this.number===0)throw new nve.ASN1ParseError("unsupported tag 0x00")}isUniversal(){return this.class===mV.UNIVERSAL}isContextSpecific(t){let r=this.class===mV.CONTEXT_SPECIFIC;return t!==void 0?r&&this.number===t:r}isBoolean(){return this.isUniversal()&&this.number===iy.BOOLEAN}isInteger(){return this.isUniversal()&&this.number===iy.INTEGER}isBitString(){return this.isUniversal()&&this.number===iy.BIT_STRING}isOctetString(){return this.isUniversal()&&this.number===iy.OCTET_STRING}isOID(){return this.isUniversal()&&this.number===iy.OBJECT_IDENTIFIER}isUTCTime(){return this.isUniversal()&&this.number===iy.UTC_TIME}isGeneralizedTime(){return this.isUniversal()&&this.number===iy.GENERALIZED_TIME}toDER(){return this.number|(this.constructed?32:0)|this.class<<6}};GN.ASN1Tag=yV});var lve=G(WN=>{"use strict";Object.defineProperty(WN,"__esModule",{value:!0});WN.ASN1Obj=void 0;var EV=Cb(),sy=HN(),ove=eve(),_w=rve(),myt=ive(),qN=class{constructor(t,r,s){this.tag=t,this.value=r,this.subs=s}static parseBuffer(t){return ave(new EV.ByteStream(t))}toDER(){let t=new EV.ByteStream;if(this.subs.length>0)for(let a of this.subs)t.appendView(a.toDER());else t.appendView(this.value);let r=t.buffer,s=new EV.ByteStream;return s.appendChar(this.tag.toDER()),s.appendView((0,ove.encodeLength)(r.length)),s.appendView(r),s.buffer}toBoolean(){if(!this.tag.isBoolean())throw new sy.ASN1TypeError("not a boolean");return(0,_w.parseBoolean)(this.value)}toInteger(){if(!this.tag.isInteger())throw new sy.ASN1TypeError("not an integer");return(0,_w.parseInteger)(this.value)}toOID(){if(!this.tag.isOID())throw new sy.ASN1TypeError("not an OID");return(0,_w.parseOID)(this.value)}toDate(){switch(!0){case this.tag.isUTCTime():return(0,_w.parseTime)(this.value,!0);case this.tag.isGeneralizedTime():return(0,_w.parseTime)(this.value,!1);default:throw new sy.ASN1TypeError("not a date")}}toBitString(){if(!this.tag.isBitString())throw new sy.ASN1TypeError("not a bit string");return(0,_w.parseBitString)(this.value)}};WN.ASN1Obj=qN;function ave(e){let t=new myt.ASN1Tag(e.getUint8()),r=(0,ove.decodeLength)(e),s=e.slice(e.position,r),a=e.position,n=[];if(t.constructed)n=sve(e,r);else if(t.isOctetString())try{n=sve(e,r)}catch{}return n.length===0&&e.seek(a+r),new qN(t,s,n)}function sve(e,t){let r=e.position+t;if(r>e.length)throw new sy.ASN1ParseError("invalid length");let s=[];for(;e.position{"use strict";Object.defineProperty(YN,"__esModule",{value:!0});YN.ASN1Obj=void 0;var yyt=lve();Object.defineProperty(YN,"ASN1Obj",{enumerable:!0,get:function(){return yyt.ASN1Obj}})});var Hw=G(Id=>{"use strict";var Eyt=Id&&Id.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Id,"__esModule",{value:!0});Id.createPublicKey=Iyt;Id.digest=Cyt;Id.verify=wyt;Id.bufferEqual=Byt;var wb=Eyt(Ie("crypto"));function Iyt(e,t="spki"){return typeof e=="string"?wb.default.createPublicKey(e):wb.default.createPublicKey({key:e,format:"der",type:t})}function Cyt(e,...t){let r=wb.default.createHash(e);for(let s of t)r.update(s);return r.digest()}function wyt(e,t,r,s){try{return wb.default.verify(s,e,t,r)}catch{return!1}}function Byt(e,t){try{return wb.default.timingSafeEqual(e,t)}catch{return!1}}});var cve=G(IV=>{"use strict";Object.defineProperty(IV,"__esModule",{value:!0});IV.preAuthEncoding=Syt;var vyt="DSSEv1";function Syt(e,t){let r=[vyt,e.length,e,t.length,""].join(" ");return Buffer.concat([Buffer.from(r,"ascii"),t])}});var Ave=G(JN=>{"use strict";Object.defineProperty(JN,"__esModule",{value:!0});JN.base64Encode=Dyt;JN.base64Decode=byt;var uve="base64",fve="utf-8";function Dyt(e){return Buffer.from(e,fve).toString(uve)}function byt(e){return Buffer.from(e,uve).toString(fve)}});var pve=G(wV=>{"use strict";Object.defineProperty(wV,"__esModule",{value:!0});wV.canonicalize=CV;function CV(e){let t="";if(e===null||typeof e!="object"||e.toJSON!=null)t+=JSON.stringify(e);else if(Array.isArray(e)){t+="[";let r=!0;e.forEach(s=>{r||(t+=","),r=!1,t+=CV(s)}),t+="]"}else{t+="{";let r=!0;Object.keys(e).sort().forEach(s=>{r||(t+=","),r=!1,t+=JSON.stringify(s),t+=":",t+=CV(e[s])}),t+="}"}return t}});var BV=G(KN=>{"use strict";Object.defineProperty(KN,"__esModule",{value:!0});KN.toDER=kyt;KN.fromDER=Qyt;var Pyt=/-----BEGIN (.*)-----/,xyt=/-----END (.*)-----/;function kyt(e){let t="";return e.split(` +`).forEach(r=>{r.match(Pyt)||r.match(xyt)||(t+=r)}),Buffer.from(t,"base64")}function Qyt(e,t="CERTIFICATE"){let s=e.toString("base64").match(/.{1,64}/g)||"";return[`-----BEGIN ${t}-----`,...s,`-----END ${t}-----`].join(` +`).concat(` +`)}});var zN=G(jw=>{"use strict";Object.defineProperty(jw,"__esModule",{value:!0});jw.SHA2_HASH_ALGOS=jw.ECDSA_SIGNATURE_ALGOS=void 0;jw.ECDSA_SIGNATURE_ALGOS={"1.2.840.10045.4.3.1":"sha224","1.2.840.10045.4.3.2":"sha256","1.2.840.10045.4.3.3":"sha384","1.2.840.10045.4.3.4":"sha512"};jw.SHA2_HASH_ALGOS={"2.16.840.1.101.3.4.2.1":"sha256","2.16.840.1.101.3.4.2.2":"sha384","2.16.840.1.101.3.4.2.3":"sha512"}});var SV=G(XN=>{"use strict";Object.defineProperty(XN,"__esModule",{value:!0});XN.RFC3161TimestampVerificationError=void 0;var vV=class extends Error{};XN.RFC3161TimestampVerificationError=vV});var dve=G(DA=>{"use strict";var Ryt=DA&&DA.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||("get"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),Tyt=DA&&DA.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Fyt=DA&&DA.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&Ryt(t,e,r);return Tyt(t,e),t};Object.defineProperty(DA,"__esModule",{value:!0});DA.TSTInfo=void 0;var hve=Fyt(Hw()),Nyt=zN(),Oyt=SV(),DV=class{constructor(t){this.root=t}get version(){return this.root.subs[0].toInteger()}get genTime(){return this.root.subs[4].toDate()}get messageImprintHashAlgorithm(){let t=this.messageImprintObj.subs[0].subs[0].toOID();return Nyt.SHA2_HASH_ALGOS[t]}get messageImprintHashedMessage(){return this.messageImprintObj.subs[1].value}get raw(){return this.root.toDER()}verify(t){let r=hve.digest(this.messageImprintHashAlgorithm,t);if(!hve.bufferEqual(r,this.messageImprintHashedMessage))throw new Oyt.RFC3161TimestampVerificationError("message imprint does not match artifact")}get messageImprintObj(){return this.root.subs[2]}};DA.TSTInfo=DV});var mve=G(bA=>{"use strict";var Lyt=bA&&bA.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||("get"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),Myt=bA&&bA.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Uyt=bA&&bA.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&Lyt(t,e,r);return Myt(t,e),t};Object.defineProperty(bA,"__esModule",{value:!0});bA.RFC3161Timestamp=void 0;var _yt=VN(),bV=Uyt(Hw()),gve=zN(),Bb=SV(),Hyt=dve(),jyt="1.2.840.113549.1.7.2",Gyt="1.2.840.113549.1.9.16.1.4",qyt="1.2.840.113549.1.9.4",PV=class e{constructor(t){this.root=t}static parse(t){let r=_yt.ASN1Obj.parseBuffer(t);return new e(r)}get status(){return this.pkiStatusInfoObj.subs[0].toInteger()}get contentType(){return this.contentTypeObj.toOID()}get eContentType(){return this.eContentTypeObj.toOID()}get signingTime(){return this.tstInfo.genTime}get signerIssuer(){return this.signerSidObj.subs[0].value}get signerSerialNumber(){return this.signerSidObj.subs[1].value}get signerDigestAlgorithm(){let t=this.signerDigestAlgorithmObj.subs[0].toOID();return gve.SHA2_HASH_ALGOS[t]}get signatureAlgorithm(){let t=this.signatureAlgorithmObj.subs[0].toOID();return gve.ECDSA_SIGNATURE_ALGOS[t]}get signatureValue(){return this.signatureValueObj.value}get tstInfo(){return new Hyt.TSTInfo(this.eContentObj.subs[0].subs[0])}verify(t,r){if(!this.timeStampTokenObj)throw new Bb.RFC3161TimestampVerificationError("timeStampToken is missing");if(this.contentType!==jyt)throw new Bb.RFC3161TimestampVerificationError(`incorrect content type: ${this.contentType}`);if(this.eContentType!==Gyt)throw new Bb.RFC3161TimestampVerificationError(`incorrect encapsulated content type: ${this.eContentType}`);this.tstInfo.verify(t),this.verifyMessageDigest(),this.verifySignature(r)}verifyMessageDigest(){let t=bV.digest(this.signerDigestAlgorithm,this.tstInfo.raw),r=this.messageDigestAttributeObj.subs[1].subs[0].value;if(!bV.bufferEqual(t,r))throw new Bb.RFC3161TimestampVerificationError("signed data does not match tstInfo")}verifySignature(t){let r=this.signedAttrsObj.toDER();if(r[0]=49,!bV.verify(r,t,this.signatureValue,this.signatureAlgorithm))throw new Bb.RFC3161TimestampVerificationError("signature verification failed")}get pkiStatusInfoObj(){return this.root.subs[0]}get timeStampTokenObj(){return this.root.subs[1]}get contentTypeObj(){return this.timeStampTokenObj.subs[0]}get signedDataObj(){return this.timeStampTokenObj.subs.find(r=>r.tag.isContextSpecific(0)).subs[0]}get encapContentInfoObj(){return this.signedDataObj.subs[2]}get signerInfosObj(){let t=this.signedDataObj;return t.subs[t.subs.length-1]}get signerInfoObj(){return this.signerInfosObj.subs[0]}get eContentTypeObj(){return this.encapContentInfoObj.subs[0]}get eContentObj(){return this.encapContentInfoObj.subs[1]}get signedAttrsObj(){return this.signerInfoObj.subs.find(r=>r.tag.isContextSpecific(0))}get messageDigestAttributeObj(){return this.signedAttrsObj.subs.find(r=>r.subs[0].tag.isOID()&&r.subs[0].toOID()===qyt)}get signerSidObj(){return this.signerInfoObj.subs[1]}get signerDigestAlgorithmObj(){return this.signerInfoObj.subs[2]}get signatureAlgorithmObj(){return this.signerInfoObj.subs[4]}get signatureValueObj(){return this.signerInfoObj.subs[5]}};bA.RFC3161Timestamp=PV});var yve=G(ZN=>{"use strict";Object.defineProperty(ZN,"__esModule",{value:!0});ZN.RFC3161Timestamp=void 0;var Wyt=mve();Object.defineProperty(ZN,"RFC3161Timestamp",{enumerable:!0,get:function(){return Wyt.RFC3161Timestamp}})});var Ive=G(PA=>{"use strict";var Yyt=PA&&PA.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||("get"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),Vyt=PA&&PA.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Jyt=PA&&PA.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&Yyt(t,e,r);return Vyt(t,e),t};Object.defineProperty(PA,"__esModule",{value:!0});PA.SignedCertificateTimestamp=void 0;var Kyt=Jyt(Hw()),Eve=Cb(),xV=class e{constructor(t){this.version=t.version,this.logID=t.logID,this.timestamp=t.timestamp,this.extensions=t.extensions,this.hashAlgorithm=t.hashAlgorithm,this.signatureAlgorithm=t.signatureAlgorithm,this.signature=t.signature}get datetime(){return new Date(Number(this.timestamp.readBigInt64BE()))}get algorithm(){switch(this.hashAlgorithm){case 0:return"none";case 1:return"md5";case 2:return"sha1";case 3:return"sha224";case 4:return"sha256";case 5:return"sha384";case 6:return"sha512";default:return"unknown"}}verify(t,r){let s=new Eve.ByteStream;return s.appendChar(this.version),s.appendChar(0),s.appendView(this.timestamp),s.appendUint16(1),s.appendView(t),s.appendUint16(this.extensions.byteLength),this.extensions.byteLength>0&&s.appendView(this.extensions),Kyt.verify(s.buffer,r,this.signature,this.algorithm)}static parse(t){let r=new Eve.ByteStream(t),s=r.getUint8(),a=r.getBlock(32),n=r.getBlock(8),c=r.getUint16(),f=r.getBlock(c),p=r.getUint8(),h=r.getUint8(),E=r.getUint16(),C=r.getBlock(E);if(r.position!==t.length)throw new Error("SCT buffer length mismatch");return new e({version:s,logID:a,timestamp:n,extensions:f,hashAlgorithm:p,signatureAlgorithm:h,signature:C})}};PA.SignedCertificateTimestamp=xV});var OV=G(ua=>{"use strict";Object.defineProperty(ua,"__esModule",{value:!0});ua.X509SCTExtension=ua.X509SubjectKeyIDExtension=ua.X509AuthorityKeyIDExtension=ua.X509SubjectAlternativeNameExtension=ua.X509KeyUsageExtension=ua.X509BasicConstraintsExtension=ua.X509Extension=void 0;var zyt=Cb(),Xyt=Ive(),Ah=class{constructor(t){this.root=t}get oid(){return this.root.subs[0].toOID()}get critical(){return this.root.subs.length===3?this.root.subs[1].toBoolean():!1}get value(){return this.extnValueObj.value}get valueObj(){return this.extnValueObj}get extnValueObj(){return this.root.subs[this.root.subs.length-1]}};ua.X509Extension=Ah;var kV=class extends Ah{get isCA(){return this.sequence.subs[0]?.toBoolean()??!1}get pathLenConstraint(){return this.sequence.subs.length>1?this.sequence.subs[1].toInteger():void 0}get sequence(){return this.extnValueObj.subs[0]}};ua.X509BasicConstraintsExtension=kV;var QV=class extends Ah{get digitalSignature(){return this.bitString[0]===1}get keyCertSign(){return this.bitString[5]===1}get crlSign(){return this.bitString[6]===1}get bitString(){return this.extnValueObj.subs[0].toBitString()}};ua.X509KeyUsageExtension=QV;var RV=class extends Ah{get rfc822Name(){return this.findGeneralName(1)?.value.toString("ascii")}get uri(){return this.findGeneralName(6)?.value.toString("ascii")}otherName(t){let r=this.findGeneralName(0);return r===void 0||r.subs[0].toOID()!==t?void 0:r.subs[1].subs[0].value.toString("ascii")}findGeneralName(t){return this.generalNames.find(r=>r.tag.isContextSpecific(t))}get generalNames(){return this.extnValueObj.subs[0].subs}};ua.X509SubjectAlternativeNameExtension=RV;var TV=class extends Ah{get keyIdentifier(){return this.findSequenceMember(0)?.value}findSequenceMember(t){return this.sequence.subs.find(r=>r.tag.isContextSpecific(t))}get sequence(){return this.extnValueObj.subs[0]}};ua.X509AuthorityKeyIDExtension=TV;var FV=class extends Ah{get keyIdentifier(){return this.extnValueObj.subs[0].value}};ua.X509SubjectKeyIDExtension=FV;var NV=class extends Ah{constructor(t){super(t)}get signedCertificateTimestamps(){let t=this.extnValueObj.subs[0].value,r=new zyt.ByteStream(t),s=r.getUint16()+2,a=[];for(;r.position{"use strict";var Zyt=oc&&oc.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||("get"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),$yt=oc&&oc.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),wve=oc&&oc.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&Zyt(t,e,r);return $yt(t,e),t};Object.defineProperty(oc,"__esModule",{value:!0});oc.X509Certificate=oc.EXTENSION_OID_SCT=void 0;var eEt=VN(),Cve=wve(Hw()),tEt=zN(),rEt=wve(BV()),oy=OV(),nEt="2.5.29.14",iEt="2.5.29.15",sEt="2.5.29.17",oEt="2.5.29.19",aEt="2.5.29.35";oc.EXTENSION_OID_SCT="1.3.6.1.4.1.11129.2.4.2";var LV=class e{constructor(t){this.root=t}static parse(t){let r=typeof t=="string"?rEt.toDER(t):t,s=eEt.ASN1Obj.parseBuffer(r);return new e(s)}get tbsCertificate(){return this.tbsCertificateObj}get version(){return`v${(this.versionObj.subs[0].toInteger()+BigInt(1)).toString()}`}get serialNumber(){return this.serialNumberObj.value}get notBefore(){return this.validityObj.subs[0].toDate()}get notAfter(){return this.validityObj.subs[1].toDate()}get issuer(){return this.issuerObj.value}get subject(){return this.subjectObj.value}get publicKey(){return this.subjectPublicKeyInfoObj.toDER()}get signatureAlgorithm(){let t=this.signatureAlgorithmObj.subs[0].toOID();return tEt.ECDSA_SIGNATURE_ALGOS[t]}get signatureValue(){return this.signatureValueObj.value.subarray(1)}get subjectAltName(){let t=this.extSubjectAltName;return t?.uri||t?.rfc822Name}get extensions(){return this.extensionsObj?.subs[0]?.subs||[]}get extKeyUsage(){let t=this.findExtension(iEt);return t?new oy.X509KeyUsageExtension(t):void 0}get extBasicConstraints(){let t=this.findExtension(oEt);return t?new oy.X509BasicConstraintsExtension(t):void 0}get extSubjectAltName(){let t=this.findExtension(sEt);return t?new oy.X509SubjectAlternativeNameExtension(t):void 0}get extAuthorityKeyID(){let t=this.findExtension(aEt);return t?new oy.X509AuthorityKeyIDExtension(t):void 0}get extSubjectKeyID(){let t=this.findExtension(nEt);return t?new oy.X509SubjectKeyIDExtension(t):void 0}get extSCT(){let t=this.findExtension(oc.EXTENSION_OID_SCT);return t?new oy.X509SCTExtension(t):void 0}get isCA(){let t=this.extBasicConstraints?.isCA||!1;return this.extKeyUsage?t&&this.extKeyUsage.keyCertSign:t}extension(t){let r=this.findExtension(t);return r?new oy.X509Extension(r):void 0}verify(t){let r=t?.publicKey||this.publicKey,s=Cve.createPublicKey(r);return Cve.verify(this.tbsCertificate.toDER(),s,this.signatureValue,this.signatureAlgorithm)}validForDate(t){return this.notBefore<=t&&t<=this.notAfter}equals(t){return this.root.toDER().equals(t.root.toDER())}clone(){let t=this.root.toDER(),r=Buffer.alloc(t.length);return t.copy(r),e.parse(r)}findExtension(t){return this.extensions.find(r=>r.subs[0].toOID()===t)}get tbsCertificateObj(){return this.root.subs[0]}get signatureAlgorithmObj(){return this.root.subs[1]}get signatureValueObj(){return this.root.subs[2]}get versionObj(){return this.tbsCertificateObj.subs[0]}get serialNumberObj(){return this.tbsCertificateObj.subs[1]}get issuerObj(){return this.tbsCertificateObj.subs[3]}get validityObj(){return this.tbsCertificateObj.subs[4]}get subjectObj(){return this.tbsCertificateObj.subs[5]}get subjectPublicKeyInfoObj(){return this.tbsCertificateObj.subs[6]}get extensionsObj(){return this.tbsCertificateObj.subs.find(t=>t.tag.isContextSpecific(3))}};oc.X509Certificate=LV});var Sve=G(Cd=>{"use strict";Object.defineProperty(Cd,"__esModule",{value:!0});Cd.X509SCTExtension=Cd.X509Certificate=Cd.EXTENSION_OID_SCT=void 0;var vve=Bve();Object.defineProperty(Cd,"EXTENSION_OID_SCT",{enumerable:!0,get:function(){return vve.EXTENSION_OID_SCT}});Object.defineProperty(Cd,"X509Certificate",{enumerable:!0,get:function(){return vve.X509Certificate}});var lEt=OV();Object.defineProperty(Cd,"X509SCTExtension",{enumerable:!0,get:function(){return lEt.X509SCTExtension}})});var Pl=G(zn=>{"use strict";var cEt=zn&&zn.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||("get"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),uEt=zn&&zn.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),vb=zn&&zn.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&cEt(t,e,r);return uEt(t,e),t};Object.defineProperty(zn,"__esModule",{value:!0});zn.X509SCTExtension=zn.X509Certificate=zn.EXTENSION_OID_SCT=zn.ByteStream=zn.RFC3161Timestamp=zn.pem=zn.json=zn.encoding=zn.dsse=zn.crypto=zn.ASN1Obj=void 0;var fEt=VN();Object.defineProperty(zn,"ASN1Obj",{enumerable:!0,get:function(){return fEt.ASN1Obj}});zn.crypto=vb(Hw());zn.dsse=vb(cve());zn.encoding=vb(Ave());zn.json=vb(pve());zn.pem=vb(BV());var AEt=yve();Object.defineProperty(zn,"RFC3161Timestamp",{enumerable:!0,get:function(){return AEt.RFC3161Timestamp}});var pEt=Cb();Object.defineProperty(zn,"ByteStream",{enumerable:!0,get:function(){return pEt.ByteStream}});var MV=Sve();Object.defineProperty(zn,"EXTENSION_OID_SCT",{enumerable:!0,get:function(){return MV.EXTENSION_OID_SCT}});Object.defineProperty(zn,"X509Certificate",{enumerable:!0,get:function(){return MV.X509Certificate}});Object.defineProperty(zn,"X509SCTExtension",{enumerable:!0,get:function(){return MV.X509SCTExtension}})});var Dve=G(UV=>{"use strict";Object.defineProperty(UV,"__esModule",{value:!0});UV.extractJWTSubject=dEt;var hEt=Pl();function dEt(e){let t=e.split(".",3),r=JSON.parse(hEt.encoding.base64Decode(t[1]));switch(r.iss){case"https://accounts.google.com":case"https://oauth2.sigstore.dev/auth":return r.email;default:return r.sub}}});var bve=G((Ier,gEt)=>{gEt.exports={name:"@sigstore/sign",version:"3.1.0",description:"Sigstore signing library",main:"dist/index.js",types:"dist/index.d.ts",scripts:{clean:"shx rm -rf dist *.tsbuildinfo",build:"tsc --build",test:"jest"},files:["dist"],author:"bdehamer@github.com",license:"Apache-2.0",repository:{type:"git",url:"git+https://github.com/sigstore/sigstore-js.git"},bugs:{url:"https://github.com/sigstore/sigstore-js/issues"},homepage:"https://github.com/sigstore/sigstore-js/tree/main/packages/sign#readme",publishConfig:{provenance:!0},devDependencies:{"@sigstore/jest":"^0.0.0","@sigstore/mock":"^0.10.0","@sigstore/rekor-types":"^3.0.0","@types/make-fetch-happen":"^10.0.4","@types/promise-retry":"^1.1.6"},dependencies:{"@sigstore/bundle":"^3.1.0","@sigstore/core":"^2.0.0","@sigstore/protobuf-specs":"^0.4.0","make-fetch-happen":"^14.0.2","proc-log":"^5.0.0","promise-retry":"^2.0.1"},engines:{node:"^18.17.0 || >=20.5.0"}}});var xve=G(Gw=>{"use strict";var mEt=Gw&&Gw.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Gw,"__esModule",{value:!0});Gw.getUserAgent=void 0;var Pve=mEt(Ie("os")),yEt=()=>{let e=bve().version,t=process.version,r=Pve.default.platform(),s=Pve.default.arch();return`sigstore-js/${e} (Node ${t}) (${r}/${s})`};Gw.getUserAgent=yEt});var wd=G(Ji=>{"use strict";var EEt=Ji&&Ji.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||("get"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),IEt=Ji&&Ji.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),kve=Ji&&Ji.__importStar||function(){var e=function(t){return e=Object.getOwnPropertyNames||function(r){var s=[];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(s[s.length]=a);return s},e(t)};return function(t){if(t&&t.__esModule)return t;var r={};if(t!=null)for(var s=e(t),a=0;a{"use strict";Object.defineProperty($N,"__esModule",{value:!0});$N.BaseBundleBuilder=void 0;var _V=class{constructor(t){this.signer=t.signer,this.witnesses=t.witnesses}async create(t){let r=await this.prepare(t).then(f=>this.signer.sign(f)),s=await this.package(t,r),a=await Promise.all(this.witnesses.map(f=>f.testify(s.content,CEt(r.key)))),n=[],c=[];return a.forEach(({tlogEntries:f,rfc3161Timestamps:p})=>{n.push(...f??[]),c.push(...p??[])}),s.verificationMaterial.tlogEntries=n,s.verificationMaterial.timestampVerificationData={rfc3161Timestamps:c},s}async prepare(t){return t.data}};$N.BaseBundleBuilder=_V;function CEt(e){switch(e.$case){case"publicKey":return e.publicKey;case"x509Certificate":return e.certificate}}});var GV=G(xA=>{"use strict";var wEt=xA&&xA.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||("get"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),BEt=xA&&xA.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),vEt=xA&&xA.__importStar||function(){var e=function(t){return e=Object.getOwnPropertyNames||function(r){var s=[];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(s[s.length]=a);return s},e(t)};return function(t){if(t&&t.__esModule)return t;var r={};if(t!=null)for(var s=e(t),a=0;a{"use strict";Object.defineProperty(eO,"__esModule",{value:!0});eO.DSSEBundleBuilder=void 0;var bEt=wd(),PEt=HV(),xEt=GV(),qV=class extends PEt.BaseBundleBuilder{constructor(t){super(t),this.certificateChain=t.certificateChain??!1}async prepare(t){let r=Rve(t);return bEt.dsse.preAuthEncoding(r.type,r.data)}async package(t,r){return(0,xEt.toDSSEBundle)(Rve(t),r,this.certificateChain)}};eO.DSSEBundleBuilder=qV;function Rve(e){return{...e,type:e.type??""}}});var Fve=G(tO=>{"use strict";Object.defineProperty(tO,"__esModule",{value:!0});tO.MessageSignatureBundleBuilder=void 0;var kEt=HV(),QEt=GV(),WV=class extends kEt.BaseBundleBuilder{constructor(t){super(t)}async package(t,r){return(0,QEt.toMessageSignatureBundle)(t,r)}};tO.MessageSignatureBundleBuilder=WV});var Nve=G(qw=>{"use strict";Object.defineProperty(qw,"__esModule",{value:!0});qw.MessageSignatureBundleBuilder=qw.DSSEBundleBuilder=void 0;var REt=Tve();Object.defineProperty(qw,"DSSEBundleBuilder",{enumerable:!0,get:function(){return REt.DSSEBundleBuilder}});var TEt=Fve();Object.defineProperty(qw,"MessageSignatureBundleBuilder",{enumerable:!0,get:function(){return TEt.MessageSignatureBundleBuilder}})});var nO=G(rO=>{"use strict";Object.defineProperty(rO,"__esModule",{value:!0});rO.HTTPError=void 0;var YV=class extends Error{constructor({status:t,message:r,location:s}){super(`(${t}) ${r}`),this.statusCode=t,this.location=s}};rO.HTTPError=YV});var Ww=G(Db=>{"use strict";Object.defineProperty(Db,"__esModule",{value:!0});Db.InternalError=void 0;Db.internalError=NEt;var FEt=nO(),iO=class extends Error{constructor({code:t,message:r,cause:s}){super(r),this.name=this.constructor.name,this.cause=s,this.code=t}};Db.InternalError=iO;function NEt(e,t,r){throw e instanceof FEt.HTTPError&&(r+=` - ${e.message}`),new iO({code:t,message:r,cause:e})}});var sO=G((ker,Ove)=>{Ove.exports=fetch});var Lve=G(Yw=>{"use strict";var OEt=Yw&&Yw.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Yw,"__esModule",{value:!0});Yw.CIContextProvider=void 0;var LEt=OEt(sO()),MEt=[UEt,_Et],VV=class{constructor(t="sigstore"){this.audience=t}async getToken(){return Promise.any(MEt.map(t=>t(this.audience))).catch(()=>Promise.reject("CI: no tokens available"))}};Yw.CIContextProvider=VV;async function UEt(e){if(!process.env.ACTIONS_ID_TOKEN_REQUEST_URL||!process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN)return Promise.reject("no token available");let t=new URL(process.env.ACTIONS_ID_TOKEN_REQUEST_URL);return t.searchParams.append("audience",e),(await(0,LEt.default)(t.href,{retry:2,headers:{Accept:"application/json",Authorization:`Bearer ${process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN}`}})).json().then(s=>s.value)}async function _Et(){return process.env.SIGSTORE_ID_TOKEN?process.env.SIGSTORE_ID_TOKEN:Promise.reject("no token available")}});var Mve=G(oO=>{"use strict";Object.defineProperty(oO,"__esModule",{value:!0});oO.CIContextProvider=void 0;var HEt=Lve();Object.defineProperty(oO,"CIContextProvider",{enumerable:!0,get:function(){return HEt.CIContextProvider}})});var _ve=G((Ter,Uve)=>{var jEt=Symbol("proc-log.meta");Uve.exports={META:jEt,output:{LEVELS:["standard","error","buffer","flush"],KEYS:{standard:"standard",error:"error",buffer:"buffer",flush:"flush"},standard:function(...e){return process.emit("output","standard",...e)},error:function(...e){return process.emit("output","error",...e)},buffer:function(...e){return process.emit("output","buffer",...e)},flush:function(...e){return process.emit("output","flush",...e)}},log:{LEVELS:["notice","error","warn","info","verbose","http","silly","timing","pause","resume"],KEYS:{notice:"notice",error:"error",warn:"warn",info:"info",verbose:"verbose",http:"http",silly:"silly",timing:"timing",pause:"pause",resume:"resume"},error:function(...e){return process.emit("log","error",...e)},notice:function(...e){return process.emit("log","notice",...e)},warn:function(...e){return process.emit("log","warn",...e)},info:function(...e){return process.emit("log","info",...e)},verbose:function(...e){return process.emit("log","verbose",...e)},http:function(...e){return process.emit("log","http",...e)},silly:function(...e){return process.emit("log","silly",...e)},timing:function(...e){return process.emit("log","timing",...e)},pause:function(){return process.emit("log","pause")},resume:function(){return process.emit("log","resume")}},time:{LEVELS:["start","end"],KEYS:{start:"start",end:"end"},start:function(e,t){process.emit("time","start",e);function r(){return process.emit("time","end",e)}if(typeof t=="function"){let s=t();return s&&s.finally?s.finally(r):(r(),s)}return r},end:function(e){return process.emit("time","end",e)}},input:{LEVELS:["start","end","read"],KEYS:{start:"start",end:"end",read:"read"},start:function(e){process.emit("input","start");function t(){return process.emit("input","end")}if(typeof e=="function"){let r=e();return r&&r.finally?r.finally(t):(t(),r)}return t},end:function(){return process.emit("input","end")},read:function(...e){let t,r,s=new Promise((a,n)=>{t=a,r=n});return process.emit("input","read",t,r,...e),s}}}});var Gve=G((Fer,jve)=>{"use strict";function Hve(e,t){for(let r in t)Object.defineProperty(e,r,{value:t[r],enumerable:!0,configurable:!0});return e}function GEt(e,t,r){if(!e||typeof e=="string")throw new TypeError("Please pass an Error to err-code");r||(r={}),typeof t=="object"&&(r=t,t=void 0),t!=null&&(r.code=t);try{return Hve(e,r)}catch{r.message=e.message,r.stack=e.stack;let a=function(){};return a.prototype=Object.create(Object.getPrototypeOf(e)),Hve(new a,r)}}jve.exports=GEt});var Wve=G((Ner,qve)=>{function Zc(e,t){typeof t=="boolean"&&(t={forever:t}),this._originalTimeouts=JSON.parse(JSON.stringify(e)),this._timeouts=e,this._options=t||{},this._maxRetryTime=t&&t.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}qve.exports=Zc;Zc.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts};Zc.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timeouts=[],this._cachedTimeouts=null};Zc.prototype.retry=function(e){if(this._timeout&&clearTimeout(this._timeout),!e)return!1;var t=new Date().getTime();if(e&&t-this._operationStart>=this._maxRetryTime)return this._errors.unshift(new Error("RetryOperation timeout occurred")),!1;this._errors.push(e);var r=this._timeouts.shift();if(r===void 0)if(this._cachedTimeouts)this._errors.splice(this._errors.length-1,this._errors.length),this._timeouts=this._cachedTimeouts.slice(0),r=this._timeouts.shift();else return!1;var s=this,a=setTimeout(function(){s._attempts++,s._operationTimeoutCb&&(s._timeout=setTimeout(function(){s._operationTimeoutCb(s._attempts)},s._operationTimeout),s._options.unref&&s._timeout.unref()),s._fn(s._attempts)},r);return this._options.unref&&a.unref(),!0};Zc.prototype.attempt=function(e,t){this._fn=e,t&&(t.timeout&&(this._operationTimeout=t.timeout),t.cb&&(this._operationTimeoutCb=t.cb));var r=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){r._operationTimeoutCb()},r._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)};Zc.prototype.try=function(e){console.log("Using RetryOperation.try() is deprecated"),this.attempt(e)};Zc.prototype.start=function(e){console.log("Using RetryOperation.start() is deprecated"),this.attempt(e)};Zc.prototype.start=Zc.prototype.try;Zc.prototype.errors=function(){return this._errors};Zc.prototype.attempts=function(){return this._attempts};Zc.prototype.mainError=function(){if(this._errors.length===0)return null;for(var e={},t=null,r=0,s=0;s=r&&(t=a,r=c)}return t}});var Yve=G(ay=>{var qEt=Wve();ay.operation=function(e){var t=ay.timeouts(e);return new qEt(t,{forever:e&&e.forever,unref:e&&e.unref,maxRetryTime:e&&e.maxRetryTime})};ay.timeouts=function(e){if(e instanceof Array)return[].concat(e);var t={retries:10,factor:2,minTimeout:1*1e3,maxTimeout:1/0,randomize:!1};for(var r in e)t[r]=e[r];if(t.minTimeout>t.maxTimeout)throw new Error("minTimeout is greater than maxTimeout");for(var s=[],a=0;a{Vve.exports=Yve()});var Xve=G((Mer,zve)=>{"use strict";var WEt=Gve(),YEt=Jve(),VEt=Object.prototype.hasOwnProperty;function Kve(e){return e&&e.code==="EPROMISERETRY"&&VEt.call(e,"retried")}function JEt(e,t){var r,s;return typeof e=="object"&&typeof t=="function"&&(r=t,t=e,e=r),s=YEt.operation(t),new Promise(function(a,n){s.attempt(function(c){Promise.resolve().then(function(){return e(function(f){throw Kve(f)&&(f=f.retried),WEt(new Error("Retrying"),"EPROMISERETRY",{retried:f})},c)}).then(a,function(f){Kve(f)&&(f=f.retried,s.retry(f||new Error))||n(f)})})})}zve.exports=JEt});var aO=G(bb=>{"use strict";var $ve=bb&&bb.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(bb,"__esModule",{value:!0});bb.fetchWithRetry=oIt;var KEt=Ie("http2"),zEt=$ve(sO()),Zve=_ve(),XEt=$ve(Xve()),ZEt=wd(),$Et=nO(),{HTTP2_HEADER_LOCATION:eIt,HTTP2_HEADER_CONTENT_TYPE:tIt,HTTP2_HEADER_USER_AGENT:rIt,HTTP_STATUS_INTERNAL_SERVER_ERROR:nIt,HTTP_STATUS_TOO_MANY_REQUESTS:iIt,HTTP_STATUS_REQUEST_TIMEOUT:sIt}=KEt.constants;async function oIt(e,t){return(0,XEt.default)(async(r,s)=>{let a=t.method||"POST",n={[rIt]:ZEt.ua.getUserAgent(),...t.headers},c=await(0,zEt.default)(e,{method:a,headers:n,body:t.body,timeout:t.timeout,retry:!1}).catch(f=>(Zve.log.http("fetch",`${a} ${e} attempt ${s} failed with ${f}`),r(f)));if(c.ok)return c;{let f=await aIt(c);if(Zve.log.http("fetch",`${a} ${e} attempt ${s} failed with ${c.status}`),lIt(c.status))return r(f);throw f}},cIt(t.retry))}var aIt=async e=>{let t=e.statusText,r=e.headers.get(eIt)||void 0;if(e.headers.get(tIt)?.includes("application/json"))try{t=(await e.json()).message||t}catch{}return new $Et.HTTPError({status:e.status,message:t,location:r})},lIt=e=>[sIt,iIt].includes(e)||e>=nIt,cIt=e=>typeof e=="boolean"?{retries:e?1:0}:typeof e=="number"?{retries:e}:{retries:0,...e}});var eSe=G(lO=>{"use strict";Object.defineProperty(lO,"__esModule",{value:!0});lO.Fulcio=void 0;var uIt=aO(),JV=class{constructor(t){this.options=t}async createSigningCertificate(t){let{baseURL:r,retry:s,timeout:a}=this.options,n=`${r}/api/v2/signingCert`;return(await(0,uIt.fetchWithRetry)(n,{headers:{"Content-Type":"application/json"},body:JSON.stringify(t),timeout:a,retry:s})).json()}};lO.Fulcio=JV});var tSe=G(cO=>{"use strict";Object.defineProperty(cO,"__esModule",{value:!0});cO.CAClient=void 0;var fIt=Ww(),AIt=eSe(),KV=class{constructor(t){this.fulcio=new AIt.Fulcio({baseURL:t.fulcioBaseURL,retry:t.retry,timeout:t.timeout})}async createSigningCertificate(t,r,s){let a=pIt(t,r,s);try{let n=await this.fulcio.createSigningCertificate(a);return(n.signedCertificateEmbeddedSct?n.signedCertificateEmbeddedSct:n.signedCertificateDetachedSct).chain.certificates}catch(n){(0,fIt.internalError)(n,"CA_CREATE_SIGNING_CERTIFICATE_ERROR","error creating signing certificate")}}};cO.CAClient=KV;function pIt(e,t,r){return{credentials:{oidcIdentityToken:e},publicKeyRequest:{publicKey:{algorithm:"ECDSA",content:t},proofOfPossession:r.toString("base64")}}}});var nSe=G(Vw=>{"use strict";var hIt=Vw&&Vw.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Vw,"__esModule",{value:!0});Vw.EphemeralSigner=void 0;var rSe=hIt(Ie("crypto")),dIt="ec",gIt="P-256",zV=class{constructor(){this.keypair=rSe.default.generateKeyPairSync(dIt,{namedCurve:gIt})}async sign(t){let r=rSe.default.sign(null,t,this.keypair.privateKey),s=this.keypair.publicKey.export({format:"pem",type:"spki"}).toString("ascii");return{signature:r,key:{$case:"publicKey",publicKey:s}}}};Vw.EphemeralSigner=zV});var iSe=G(ly=>{"use strict";Object.defineProperty(ly,"__esModule",{value:!0});ly.FulcioSigner=ly.DEFAULT_FULCIO_URL=void 0;var XV=Ww(),mIt=wd(),yIt=tSe(),EIt=nSe();ly.DEFAULT_FULCIO_URL="https://fulcio.sigstore.dev";var ZV=class{constructor(t){this.ca=new yIt.CAClient({...t,fulcioBaseURL:t.fulcioBaseURL||ly.DEFAULT_FULCIO_URL}),this.identityProvider=t.identityProvider,this.keyHolder=t.keyHolder||new EIt.EphemeralSigner}async sign(t){let r=await this.getIdentityToken(),s;try{s=mIt.oidc.extractJWTSubject(r)}catch(f){throw new XV.InternalError({code:"IDENTITY_TOKEN_PARSE_ERROR",message:`invalid identity token: ${r}`,cause:f})}let a=await this.keyHolder.sign(Buffer.from(s));if(a.key.$case!=="publicKey")throw new XV.InternalError({code:"CA_CREATE_SIGNING_CERTIFICATE_ERROR",message:"unexpected format for signing key"});let n=await this.ca.createSigningCertificate(r,a.key.publicKey,a.signature);return{signature:(await this.keyHolder.sign(t)).signature,key:{$case:"x509Certificate",certificate:n[0]}}}async getIdentityToken(){try{return await this.identityProvider.getToken()}catch(t){throw new XV.InternalError({code:"IDENTITY_TOKEN_READ_ERROR",message:"error retrieving identity token",cause:t})}}};ly.FulcioSigner=ZV});var oSe=G(Jw=>{"use strict";Object.defineProperty(Jw,"__esModule",{value:!0});Jw.FulcioSigner=Jw.DEFAULT_FULCIO_URL=void 0;var sSe=iSe();Object.defineProperty(Jw,"DEFAULT_FULCIO_URL",{enumerable:!0,get:function(){return sSe.DEFAULT_FULCIO_URL}});Object.defineProperty(Jw,"FulcioSigner",{enumerable:!0,get:function(){return sSe.FulcioSigner}})});var cSe=G(uO=>{"use strict";Object.defineProperty(uO,"__esModule",{value:!0});uO.Rekor=void 0;var aSe=aO(),$V=class{constructor(t){this.options=t}async createEntry(t){let{baseURL:r,timeout:s,retry:a}=this.options,n=`${r}/api/v1/log/entries`,f=await(await(0,aSe.fetchWithRetry)(n,{headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(t),timeout:s,retry:a})).json();return lSe(f)}async getEntry(t){let{baseURL:r,timeout:s,retry:a}=this.options,n=`${r}/api/v1/log/entries/${t}`,f=await(await(0,aSe.fetchWithRetry)(n,{method:"GET",headers:{Accept:"application/json"},timeout:s,retry:a})).json();return lSe(f)}};uO.Rekor=$V;function lSe(e){let t=Object.entries(e);if(t.length!=1)throw new Error("Received multiple entries in Rekor response");let[r,s]=t[0];return{...s,uuid:r}}});var fSe=G(fO=>{"use strict";Object.defineProperty(fO,"__esModule",{value:!0});fO.TLogClient=void 0;var uSe=Ww(),IIt=nO(),CIt=cSe(),e7=class{constructor(t){this.fetchOnConflict=t.fetchOnConflict??!1,this.rekor=new CIt.Rekor({baseURL:t.rekorBaseURL,retry:t.retry,timeout:t.timeout})}async createEntry(t){let r;try{r=await this.rekor.createEntry(t)}catch(s){if(wIt(s)&&this.fetchOnConflict){let a=s.location.split("/").pop()||"";try{r=await this.rekor.getEntry(a)}catch(n){(0,uSe.internalError)(n,"TLOG_FETCH_ENTRY_ERROR","error fetching tlog entry")}}else(0,uSe.internalError)(s,"TLOG_CREATE_ENTRY_ERROR","error creating tlog entry")}return r}};fO.TLogClient=e7;function wIt(e){return e instanceof IIt.HTTPError&&e.statusCode===409&&e.location!==void 0}});var ASe=G(t7=>{"use strict";Object.defineProperty(t7,"__esModule",{value:!0});t7.toProposedEntry=vIt;var BIt=Ib(),Bd=wd(),Pb="sha256";function vIt(e,t,r="dsse"){switch(e.$case){case"dsseEnvelope":return r==="intoto"?bIt(e.dsseEnvelope,t):DIt(e.dsseEnvelope,t);case"messageSignature":return SIt(e.messageSignature,t)}}function SIt(e,t){let r=e.messageDigest.digest.toString("hex"),s=e.signature.toString("base64"),a=Bd.encoding.base64Encode(t);return{apiVersion:"0.0.1",kind:"hashedrekord",spec:{data:{hash:{algorithm:Pb,value:r}},signature:{content:s,publicKey:{content:a}}}}}function DIt(e,t){let r=JSON.stringify((0,BIt.envelopeToJSON)(e)),s=Bd.encoding.base64Encode(t);return{apiVersion:"0.0.1",kind:"dsse",spec:{proposedContent:{envelope:r,verifiers:[s]}}}}function bIt(e,t){let r=Bd.crypto.digest(Pb,e.payload).toString("hex"),s=PIt(e,t),a=Bd.encoding.base64Encode(e.payload.toString("base64")),n=Bd.encoding.base64Encode(e.signatures[0].sig.toString("base64")),c=e.signatures[0].keyid,f=Bd.encoding.base64Encode(t),p={payloadType:e.payloadType,payload:a,signatures:[{sig:n,publicKey:f}]};return c.length>0&&(p.signatures[0].keyid=c),{apiVersion:"0.0.2",kind:"intoto",spec:{content:{envelope:p,hash:{algorithm:Pb,value:s},payloadHash:{algorithm:Pb,value:r}}}}}function PIt(e,t){let r={payloadType:e.payloadType,payload:e.payload.toString("base64"),signatures:[{sig:e.signatures[0].sig.toString("base64"),publicKey:t}]};return e.signatures[0].keyid.length>0&&(r.signatures[0].keyid=e.signatures[0].keyid),Bd.crypto.digest(Pb,Bd.json.canonicalize(r)).toString("hex")}});var pSe=G(cy=>{"use strict";Object.defineProperty(cy,"__esModule",{value:!0});cy.RekorWitness=cy.DEFAULT_REKOR_URL=void 0;var xIt=wd(),kIt=fSe(),QIt=ASe();cy.DEFAULT_REKOR_URL="https://rekor.sigstore.dev";var r7=class{constructor(t){this.entryType=t.entryType,this.tlog=new kIt.TLogClient({...t,rekorBaseURL:t.rekorBaseURL||cy.DEFAULT_REKOR_URL})}async testify(t,r){let s=(0,QIt.toProposedEntry)(t,r,this.entryType),a=await this.tlog.createEntry(s);return RIt(a)}};cy.RekorWitness=r7;function RIt(e){let t=Buffer.from(e.logID,"hex"),r=xIt.encoding.base64Decode(e.body),s=JSON.parse(r),a=e?.verification?.signedEntryTimestamp?TIt(e.verification.signedEntryTimestamp):void 0,n=e?.verification?.inclusionProof?FIt(e.verification.inclusionProof):void 0;return{tlogEntries:[{logIndex:e.logIndex.toString(),logId:{keyId:t},integratedTime:e.integratedTime.toString(),kindVersion:{kind:s.kind,version:s.apiVersion},inclusionPromise:a,inclusionProof:n,canonicalizedBody:Buffer.from(e.body,"base64")}]}}function TIt(e){return{signedEntryTimestamp:Buffer.from(e,"base64")}}function FIt(e){return{logIndex:e.logIndex.toString(),treeSize:e.treeSize.toString(),rootHash:Buffer.from(e.rootHash,"hex"),hashes:e.hashes.map(t=>Buffer.from(t,"hex")),checkpoint:{envelope:e.checkpoint}}}});var hSe=G(AO=>{"use strict";Object.defineProperty(AO,"__esModule",{value:!0});AO.TimestampAuthority=void 0;var NIt=aO(),n7=class{constructor(t){this.options=t}async createTimestamp(t){let{baseURL:r,timeout:s,retry:a}=this.options,n=`${r}/api/v1/timestamp`;return(await(0,NIt.fetchWithRetry)(n,{headers:{"Content-Type":"application/json"},body:JSON.stringify(t),timeout:s,retry:a})).buffer()}};AO.TimestampAuthority=n7});var gSe=G(pO=>{"use strict";Object.defineProperty(pO,"__esModule",{value:!0});pO.TSAClient=void 0;var OIt=Ww(),LIt=hSe(),MIt=wd(),dSe="sha256",i7=class{constructor(t){this.tsa=new LIt.TimestampAuthority({baseURL:t.tsaBaseURL,retry:t.retry,timeout:t.timeout})}async createTimestamp(t){let r={artifactHash:MIt.crypto.digest(dSe,t).toString("base64"),hashAlgorithm:dSe};try{return await this.tsa.createTimestamp(r)}catch(s){(0,OIt.internalError)(s,"TSA_CREATE_TIMESTAMP_ERROR","error creating timestamp")}}};pO.TSAClient=i7});var mSe=G(hO=>{"use strict";Object.defineProperty(hO,"__esModule",{value:!0});hO.TSAWitness=void 0;var UIt=gSe(),s7=class{constructor(t){this.tsa=new UIt.TSAClient({tsaBaseURL:t.tsaBaseURL,retry:t.retry,timeout:t.timeout})}async testify(t){let r=_It(t);return{rfc3161Timestamps:[{signedTimestamp:await this.tsa.createTimestamp(r)}]}}};hO.TSAWitness=s7;function _It(e){switch(e.$case){case"dsseEnvelope":return e.dsseEnvelope.signatures[0].sig;case"messageSignature":return e.messageSignature.signature}}});var ESe=G(vd=>{"use strict";Object.defineProperty(vd,"__esModule",{value:!0});vd.TSAWitness=vd.RekorWitness=vd.DEFAULT_REKOR_URL=void 0;var ySe=pSe();Object.defineProperty(vd,"DEFAULT_REKOR_URL",{enumerable:!0,get:function(){return ySe.DEFAULT_REKOR_URL}});Object.defineProperty(vd,"RekorWitness",{enumerable:!0,get:function(){return ySe.RekorWitness}});var HIt=mSe();Object.defineProperty(vd,"TSAWitness",{enumerable:!0,get:function(){return HIt.TSAWitness}})});var a7=G(Cs=>{"use strict";Object.defineProperty(Cs,"__esModule",{value:!0});Cs.TSAWitness=Cs.RekorWitness=Cs.DEFAULT_REKOR_URL=Cs.FulcioSigner=Cs.DEFAULT_FULCIO_URL=Cs.CIContextProvider=Cs.InternalError=Cs.MessageSignatureBundleBuilder=Cs.DSSEBundleBuilder=void 0;var ISe=Nve();Object.defineProperty(Cs,"DSSEBundleBuilder",{enumerable:!0,get:function(){return ISe.DSSEBundleBuilder}});Object.defineProperty(Cs,"MessageSignatureBundleBuilder",{enumerable:!0,get:function(){return ISe.MessageSignatureBundleBuilder}});var jIt=Ww();Object.defineProperty(Cs,"InternalError",{enumerable:!0,get:function(){return jIt.InternalError}});var GIt=Mve();Object.defineProperty(Cs,"CIContextProvider",{enumerable:!0,get:function(){return GIt.CIContextProvider}});var CSe=oSe();Object.defineProperty(Cs,"DEFAULT_FULCIO_URL",{enumerable:!0,get:function(){return CSe.DEFAULT_FULCIO_URL}});Object.defineProperty(Cs,"FulcioSigner",{enumerable:!0,get:function(){return CSe.FulcioSigner}});var o7=ESe();Object.defineProperty(Cs,"DEFAULT_REKOR_URL",{enumerable:!0,get:function(){return o7.DEFAULT_REKOR_URL}});Object.defineProperty(Cs,"RekorWitness",{enumerable:!0,get:function(){return o7.RekorWitness}});Object.defineProperty(Cs,"TSAWitness",{enumerable:!0,get:function(){return o7.TSAWitness}})});var BSe=G(xb=>{"use strict";var wSe=xb&&xb.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(xb,"__esModule",{value:!0});xb.appDataPath=WIt;var qIt=wSe(Ie("os")),Kw=wSe(Ie("path"));function WIt(e){let t=qIt.default.homedir();switch(process.platform){case"darwin":{let r=Kw.default.join(t,"Library","Application Support");return Kw.default.join(r,e)}case"win32":{let r=process.env.LOCALAPPDATA||Kw.default.join(t,"AppData","Local");return Kw.default.join(r,e,"Data")}default:{let r=process.env.XDG_DATA_HOME||Kw.default.join(t,".local","share");return Kw.default.join(r,e)}}}});var kA=G(xl=>{"use strict";Object.defineProperty(xl,"__esModule",{value:!0});xl.UnsupportedAlgorithmError=xl.CryptoError=xl.LengthOrHashMismatchError=xl.UnsignedMetadataError=xl.RepositoryError=xl.ValueError=void 0;var l7=class extends Error{};xl.ValueError=l7;var kb=class extends Error{};xl.RepositoryError=kb;var c7=class extends kb{};xl.UnsignedMetadataError=c7;var u7=class extends kb{};xl.LengthOrHashMismatchError=u7;var dO=class extends Error{};xl.CryptoError=dO;var f7=class extends dO{};xl.UnsupportedAlgorithmError=f7});var SSe=G(Sd=>{"use strict";Object.defineProperty(Sd,"__esModule",{value:!0});Sd.isDefined=YIt;Sd.isObject=vSe;Sd.isStringArray=VIt;Sd.isObjectArray=JIt;Sd.isStringRecord=KIt;Sd.isObjectRecord=zIt;function YIt(e){return e!==void 0}function vSe(e){return typeof e=="object"&&e!==null}function VIt(e){return Array.isArray(e)&&e.every(t=>typeof t=="string")}function JIt(e){return Array.isArray(e)&&e.every(vSe)}function KIt(e){return typeof e=="object"&&e!==null&&Object.keys(e).every(t=>typeof t=="string")&&Object.values(e).every(t=>typeof t=="string")}function zIt(e){return typeof e=="object"&&e!==null&&Object.keys(e).every(t=>typeof t=="string")&&Object.values(e).every(t=>typeof t=="object"&&t!==null)}});var p7=G((ntr,PSe)=>{var DSe=",",XIt=":",ZIt="[",$It="]",eCt="{",tCt="}";function A7(e){let t=[];if(typeof e=="string")t.push(bSe(e));else if(typeof e=="boolean")t.push(JSON.stringify(e));else if(Number.isInteger(e))t.push(JSON.stringify(e));else if(e===null)t.push(JSON.stringify(e));else if(Array.isArray(e)){t.push(ZIt);let r=!0;e.forEach(s=>{r||t.push(DSe),r=!1,t.push(A7(s))}),t.push($It)}else if(typeof e=="object"){t.push(eCt);let r=!0;Object.keys(e).sort().forEach(s=>{r||t.push(DSe),r=!1,t.push(bSe(s)),t.push(XIt),t.push(A7(e[s]))}),t.push(tCt)}else throw new TypeError("cannot encode "+e.toString());return t.join("")}function bSe(e){return'"'+e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')+'"'}PSe.exports={canonicalize:A7}});var xSe=G(zw=>{"use strict";var rCt=zw&&zw.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(zw,"__esModule",{value:!0});zw.verifySignature=void 0;var nCt=p7(),iCt=rCt(Ie("crypto")),sCt=(e,t,r)=>{let s=Buffer.from((0,nCt.canonicalize)(e));return iCt.default.verify(void 0,s,t,Buffer.from(r,"hex"))};zw.verifySignature=sCt});var hf=G($c=>{"use strict";var oCt=$c&&$c.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||("get"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),aCt=$c&&$c.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),kSe=$c&&$c.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&oCt(t,e,r);return aCt(t,e),t};Object.defineProperty($c,"__esModule",{value:!0});$c.crypto=$c.guard=void 0;$c.guard=kSe(SSe());$c.crypto=kSe(xSe())});var uy=G(ph=>{"use strict";var lCt=ph&&ph.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ph,"__esModule",{value:!0});ph.Signed=ph.MetadataKind=void 0;ph.isMetadataKind=uCt;var cCt=lCt(Ie("util")),Qb=kA(),h7=hf(),QSe=["1","0","31"],d7;(function(e){e.Root="root",e.Timestamp="timestamp",e.Snapshot="snapshot",e.Targets="targets"})(d7||(ph.MetadataKind=d7={}));function uCt(e){return typeof e=="string"&&Object.values(d7).includes(e)}var g7=class e{constructor(t){this.specVersion=t.specVersion||QSe.join(".");let r=this.specVersion.split(".");if(!(r.length===2||r.length===3)||!r.every(s=>fCt(s)))throw new Qb.ValueError("Failed to parse specVersion");if(r[0]!=QSe[0])throw new Qb.ValueError("Unsupported specVersion");this.expires=t.expires,this.version=t.version,this.unrecognizedFields=t.unrecognizedFields||{}}equals(t){return t instanceof e?this.specVersion===t.specVersion&&this.expires===t.expires&&this.version===t.version&&cCt.default.isDeepStrictEqual(this.unrecognizedFields,t.unrecognizedFields):!1}isExpired(t){return t||(t=new Date),t>=new Date(this.expires)}static commonFieldsFromJSON(t){let{spec_version:r,expires:s,version:a,...n}=t;if(h7.guard.isDefined(r)){if(typeof r!="string")throw new TypeError("spec_version must be a string")}else throw new Qb.ValueError("spec_version is not defined");if(h7.guard.isDefined(s)){if(typeof s!="string")throw new TypeError("expires must be a string")}else throw new Qb.ValueError("expires is not defined");if(h7.guard.isDefined(a)){if(typeof a!="number")throw new TypeError("version must be a number")}else throw new Qb.ValueError("version is not defined");return{specVersion:r,expires:s,version:a,unrecognizedFields:n}}};ph.Signed=g7;function fCt(e){return!isNaN(Number(e))}});var Rb=G(bd=>{"use strict";var RSe=bd&&bd.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(bd,"__esModule",{value:!0});bd.TargetFile=bd.MetaFile=void 0;var TSe=RSe(Ie("crypto")),mO=RSe(Ie("util")),Dd=kA(),gO=hf(),m7=class e{constructor(t){if(t.version<=0)throw new Dd.ValueError("Metafile version must be at least 1");t.length!==void 0&&FSe(t.length),this.version=t.version,this.length=t.length,this.hashes=t.hashes,this.unrecognizedFields=t.unrecognizedFields||{}}equals(t){return t instanceof e?this.version===t.version&&this.length===t.length&&mO.default.isDeepStrictEqual(this.hashes,t.hashes)&&mO.default.isDeepStrictEqual(this.unrecognizedFields,t.unrecognizedFields):!1}verify(t){if(this.length!==void 0&&t.length!==this.length)throw new Dd.LengthOrHashMismatchError(`Expected length ${this.length} but got ${t.length}`);this.hashes&&Object.entries(this.hashes).forEach(([r,s])=>{let a;try{a=TSe.default.createHash(r)}catch{throw new Dd.LengthOrHashMismatchError(`Hash algorithm ${r} not supported`)}let n=a.update(t).digest("hex");if(n!==s)throw new Dd.LengthOrHashMismatchError(`Expected hash ${s} but got ${n}`)})}toJSON(){let t={version:this.version,...this.unrecognizedFields};return this.length!==void 0&&(t.length=this.length),this.hashes&&(t.hashes=this.hashes),t}static fromJSON(t){let{version:r,length:s,hashes:a,...n}=t;if(typeof r!="number")throw new TypeError("version must be a number");if(gO.guard.isDefined(s)&&typeof s!="number")throw new TypeError("length must be a number");if(gO.guard.isDefined(a)&&!gO.guard.isStringRecord(a))throw new TypeError("hashes must be string keys and values");return new e({version:r,length:s,hashes:a,unrecognizedFields:n})}};bd.MetaFile=m7;var y7=class e{constructor(t){FSe(t.length),this.length=t.length,this.path=t.path,this.hashes=t.hashes,this.unrecognizedFields=t.unrecognizedFields||{}}get custom(){let t=this.unrecognizedFields.custom;return!t||Array.isArray(t)||typeof t!="object"?{}:t}equals(t){return t instanceof e?this.length===t.length&&this.path===t.path&&mO.default.isDeepStrictEqual(this.hashes,t.hashes)&&mO.default.isDeepStrictEqual(this.unrecognizedFields,t.unrecognizedFields):!1}async verify(t){let r=0,s=Object.keys(this.hashes).reduce((a,n)=>{try{a[n]=TSe.default.createHash(n)}catch{throw new Dd.LengthOrHashMismatchError(`Hash algorithm ${n} not supported`)}return a},{});for await(let a of t)r+=a.length,Object.values(s).forEach(n=>{n.update(a)});if(r!==this.length)throw new Dd.LengthOrHashMismatchError(`Expected length ${this.length} but got ${r}`);Object.entries(s).forEach(([a,n])=>{let c=this.hashes[a],f=n.digest("hex");if(f!==c)throw new Dd.LengthOrHashMismatchError(`Expected hash ${c} but got ${f}`)})}toJSON(){return{length:this.length,hashes:this.hashes,...this.unrecognizedFields}}static fromJSON(t,r){let{length:s,hashes:a,...n}=r;if(typeof s!="number")throw new TypeError("length must be a number");if(!gO.guard.isStringRecord(a))throw new TypeError("hashes must have string keys and values");return new e({length:s,path:t,hashes:a,unrecognizedFields:n})}};bd.TargetFile=y7;function FSe(e){if(e<0)throw new Dd.ValueError("Length must be at least 0")}});var NSe=G(E7=>{"use strict";Object.defineProperty(E7,"__esModule",{value:!0});E7.encodeOIDString=pCt;var ACt=6;function pCt(e){let t=e.split("."),r=parseInt(t[0],10)*40+parseInt(t[1],10),s=[];t.slice(2).forEach(n=>{let c=hCt(parseInt(n,10));s.push(...c)});let a=Buffer.from([r,...s]);return Buffer.from([ACt,a.length,...a])}function hCt(e){let t=[],r=0;for(;e>0;)t.unshift(e&127|r),e>>=7,r=128;return t}});var USe=G(Fb=>{"use strict";var dCt=Fb&&Fb.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Fb,"__esModule",{value:!0});Fb.getPublicKey=ECt;var Xw=dCt(Ie("crypto")),Tb=kA(),I7=NSe(),yO=48,OSe=3,LSe=0,gCt="1.3.101.112",mCt="1.2.840.10045.2.1",yCt="1.2.840.10045.3.1.7",C7="-----BEGIN PUBLIC KEY-----";function ECt(e){switch(e.keyType){case"rsa":return ICt(e);case"ed25519":return CCt(e);case"ecdsa":case"ecdsa-sha2-nistp256":case"ecdsa-sha2-nistp384":return wCt(e);default:throw new Tb.UnsupportedAlgorithmError(`Unsupported key type: ${e.keyType}`)}}function ICt(e){if(!e.keyVal.startsWith(C7))throw new Tb.CryptoError("Invalid key format");let t=Xw.default.createPublicKey(e.keyVal);switch(e.scheme){case"rsassa-pss-sha256":return{key:t,padding:Xw.default.constants.RSA_PKCS1_PSS_PADDING};default:throw new Tb.UnsupportedAlgorithmError(`Unsupported RSA scheme: ${e.scheme}`)}}function CCt(e){let t;if(e.keyVal.startsWith(C7))t=Xw.default.createPublicKey(e.keyVal);else{if(!MSe(e.keyVal))throw new Tb.CryptoError("Invalid key format");t=Xw.default.createPublicKey({key:BCt.hexToDER(e.keyVal),format:"der",type:"spki"})}return{key:t}}function wCt(e){let t;if(e.keyVal.startsWith(C7))t=Xw.default.createPublicKey(e.keyVal);else{if(!MSe(e.keyVal))throw new Tb.CryptoError("Invalid key format");t=Xw.default.createPublicKey({key:vCt.hexToDER(e.keyVal),format:"der",type:"spki"})}return{key:t}}var BCt={hexToDER:e=>{let t=Buffer.from(e,"hex"),r=(0,I7.encodeOIDString)(gCt),s=Buffer.concat([Buffer.concat([Buffer.from([yO]),Buffer.from([r.length]),r]),Buffer.concat([Buffer.from([OSe]),Buffer.from([t.length+1]),Buffer.from([LSe]),t])]);return Buffer.concat([Buffer.from([yO]),Buffer.from([s.length]),s])}},vCt={hexToDER:e=>{let t=Buffer.from(e,"hex"),r=Buffer.concat([Buffer.from([OSe]),Buffer.from([t.length+1]),Buffer.from([LSe]),t]),s=Buffer.concat([(0,I7.encodeOIDString)(mCt),(0,I7.encodeOIDString)(yCt)]),a=Buffer.concat([Buffer.from([yO]),Buffer.from([s.length]),s]);return Buffer.concat([Buffer.from([yO]),Buffer.from([a.length+r.length]),a,r])}},MSe=e=>/^[0-9a-fA-F]+$/.test(e)});var EO=G(Zw=>{"use strict";var SCt=Zw&&Zw.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Zw,"__esModule",{value:!0});Zw.Key=void 0;var _Se=SCt(Ie("util")),Nb=kA(),HSe=hf(),DCt=USe(),w7=class e{constructor(t){let{keyID:r,keyType:s,scheme:a,keyVal:n,unrecognizedFields:c}=t;this.keyID=r,this.keyType=s,this.scheme=a,this.keyVal=n,this.unrecognizedFields=c||{}}verifySignature(t){let r=t.signatures[this.keyID];if(!r)throw new Nb.UnsignedMetadataError("no signature for key found in metadata");if(!this.keyVal.public)throw new Nb.UnsignedMetadataError("no public key found");let s=(0,DCt.getPublicKey)({keyType:this.keyType,scheme:this.scheme,keyVal:this.keyVal.public}),a=t.signed.toJSON();try{if(!HSe.crypto.verifySignature(a,s,r.sig))throw new Nb.UnsignedMetadataError(`failed to verify ${this.keyID} signature`)}catch(n){throw n instanceof Nb.UnsignedMetadataError?n:new Nb.UnsignedMetadataError(`failed to verify ${this.keyID} signature`)}}equals(t){return t instanceof e?this.keyID===t.keyID&&this.keyType===t.keyType&&this.scheme===t.scheme&&_Se.default.isDeepStrictEqual(this.keyVal,t.keyVal)&&_Se.default.isDeepStrictEqual(this.unrecognizedFields,t.unrecognizedFields):!1}toJSON(){return{keytype:this.keyType,scheme:this.scheme,keyval:this.keyVal,...this.unrecognizedFields}}static fromJSON(t,r){let{keytype:s,scheme:a,keyval:n,...c}=r;if(typeof s!="string")throw new TypeError("keytype must be a string");if(typeof a!="string")throw new TypeError("scheme must be a string");if(!HSe.guard.isStringRecord(n))throw new TypeError("keyval must be a string record");return new e({keyID:t,keyType:s,scheme:a,keyVal:n,unrecognizedFields:c})}};Zw.Key=w7});var YSe=G((ftr,WSe)=>{"use strict";WSe.exports=GSe;function GSe(e,t,r){e instanceof RegExp&&(e=jSe(e,r)),t instanceof RegExp&&(t=jSe(t,r));var s=qSe(e,t,r);return s&&{start:s[0],end:s[1],pre:r.slice(0,s[0]),body:r.slice(s[0]+e.length,s[1]),post:r.slice(s[1]+t.length)}}function jSe(e,t){var r=t.match(e);return r?r[0]:null}GSe.range=qSe;function qSe(e,t,r){var s,a,n,c,f,p=r.indexOf(e),h=r.indexOf(t,p+1),E=p;if(p>=0&&h>0){for(s=[],n=r.length;E>=0&&!f;)E==p?(s.push(E),p=r.indexOf(e,E+1)):s.length==1?f=[s.pop(),h]:(a=s.pop(),a=0?p:h;s.length&&(f=[n,c])}return f}});var eDe=G((Atr,$Se)=>{var VSe=YSe();$Se.exports=xCt;var JSe="\0SLASH"+Math.random()+"\0",KSe="\0OPEN"+Math.random()+"\0",v7="\0CLOSE"+Math.random()+"\0",zSe="\0COMMA"+Math.random()+"\0",XSe="\0PERIOD"+Math.random()+"\0";function B7(e){return parseInt(e,10)==e?parseInt(e,10):e.charCodeAt(0)}function bCt(e){return e.split("\\\\").join(JSe).split("\\{").join(KSe).split("\\}").join(v7).split("\\,").join(zSe).split("\\.").join(XSe)}function PCt(e){return e.split(JSe).join("\\").split(KSe).join("{").split(v7).join("}").split(zSe).join(",").split(XSe).join(".")}function ZSe(e){if(!e)return[""];var t=[],r=VSe("{","}",e);if(!r)return e.split(",");var s=r.pre,a=r.body,n=r.post,c=s.split(",");c[c.length-1]+="{"+a+"}";var f=ZSe(n);return n.length&&(c[c.length-1]+=f.shift(),c.push.apply(c,f)),t.push.apply(t,c),t}function xCt(e){return e?(e.substr(0,2)==="{}"&&(e="\\{\\}"+e.substr(2)),Ob(bCt(e),!0).map(PCt)):[]}function kCt(e){return"{"+e+"}"}function QCt(e){return/^-?0\d/.test(e)}function RCt(e,t){return e<=t}function TCt(e,t){return e>=t}function Ob(e,t){var r=[],s=VSe("{","}",e);if(!s)return[e];var a=s.pre,n=s.post.length?Ob(s.post,!1):[""];if(/\$$/.test(s.pre))for(var c=0;c=0;if(!E&&!C)return s.post.match(/,.*\}/)?(e=s.pre+"{"+s.body+v7+s.post,Ob(e)):[e];var S;if(E)S=s.body.split(/\.\./);else if(S=ZSe(s.body),S.length===1&&(S=Ob(S[0],!1).map(kCt),S.length===1))return n.map(function(Ee){return s.pre+S[0]+Ee});var x;if(E){var I=B7(S[0]),T=B7(S[1]),O=Math.max(S[0].length,S[1].length),U=S.length==3?Math.abs(B7(S[2])):1,V=RCt,te=T0){var Ae=new Array(ge+1).join("0");ue<0?ae="-"+Ae+ae.slice(1):ae=Ae+ae}}x.push(ae)}}else{x=[];for(var Ce=0;Ce{"use strict";Object.defineProperty(IO,"__esModule",{value:!0});IO.assertValidPattern=void 0;var FCt=1024*64,NCt=e=>{if(typeof e!="string")throw new TypeError("invalid pattern");if(e.length>FCt)throw new TypeError("pattern is too long")};IO.assertValidPattern=NCt});var nDe=G(CO=>{"use strict";Object.defineProperty(CO,"__esModule",{value:!0});CO.parseClass=void 0;var OCt={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},Lb=e=>e.replace(/[[\]\\-]/g,"\\$&"),LCt=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),rDe=e=>e.join(""),MCt=(e,t)=>{let r=t;if(e.charAt(r)!=="[")throw new Error("not in a brace expression");let s=[],a=[],n=r+1,c=!1,f=!1,p=!1,h=!1,E=r,C="";e:for(;nC?s.push(Lb(C)+"-"+Lb(T)):T===C&&s.push(Lb(T)),C="",n++;continue}if(e.startsWith("-]",n+1)){s.push(Lb(T+"-")),n+=2;continue}if(e.startsWith("-",n+1)){C=T,n+=2;continue}s.push(Lb(T)),n++}if(E{"use strict";Object.defineProperty(wO,"__esModule",{value:!0});wO.unescape=void 0;var UCt=(e,{windowsPathsNoEscape:t=!1}={})=>t?e.replace(/\[([^\/\\])\]/g,"$1"):e.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1");wO.unescape=UCt});var b7=G(DO=>{"use strict";Object.defineProperty(DO,"__esModule",{value:!0});DO.AST=void 0;var _Ct=nDe(),vO=BO(),HCt=new Set(["!","?","+","*","@"]),iDe=e=>HCt.has(e),jCt="(?!(?:^|/)\\.\\.?(?:$|/))",SO="(?!\\.)",GCt=new Set(["[","."]),qCt=new Set(["..","."]),WCt=new Set("().*{}+?[]^$\\!"),YCt=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),D7="[^/]",sDe=D7+"*?",oDe=D7+"+?",S7=class e{type;#e;#t;#s=!1;#r=[];#i;#n;#o;#l=!1;#a;#c;#f=!1;constructor(t,r,s={}){this.type=t,t&&(this.#t=!0),this.#i=r,this.#e=this.#i?this.#i.#e:this,this.#a=this.#e===this?s:this.#e.#a,this.#o=this.#e===this?[]:this.#e.#o,t==="!"&&!this.#e.#l&&this.#o.push(this),this.#n=this.#i?this.#i.#r.length:0}get hasMagic(){if(this.#t!==void 0)return this.#t;for(let t of this.#r)if(typeof t!="string"&&(t.type||t.hasMagic))return this.#t=!0;return this.#t}toString(){return this.#c!==void 0?this.#c:this.type?this.#c=this.type+"("+this.#r.map(t=>String(t)).join("|")+")":this.#c=this.#r.map(t=>String(t)).join("")}#p(){if(this!==this.#e)throw new Error("should only call on root");if(this.#l)return this;this.toString(),this.#l=!0;let t;for(;t=this.#o.pop();){if(t.type!=="!")continue;let r=t,s=r.#i;for(;s;){for(let a=r.#n+1;!s.type&&atypeof r=="string"?r:r.toJSON()):[this.type,...this.#r.map(r=>r.toJSON())];return this.isStart()&&!this.type&&t.unshift([]),this.isEnd()&&(this===this.#e||this.#e.#l&&this.#i?.type==="!")&&t.push({}),t}isStart(){if(this.#e===this)return!0;if(!this.#i?.isStart())return!1;if(this.#n===0)return!0;let t=this.#i;for(let r=0;r{let[I,T,O,U]=typeof x=="string"?e.#h(x,this.#t,p):x.toRegExpSource(t);return this.#t=this.#t||O,this.#s=this.#s||U,I}).join(""),E="";if(this.isStart()&&typeof this.#r[0]=="string"&&!(this.#r.length===1&&qCt.has(this.#r[0]))){let I=GCt,T=r&&I.has(h.charAt(0))||h.startsWith("\\.")&&I.has(h.charAt(2))||h.startsWith("\\.\\.")&&I.has(h.charAt(4)),O=!r&&!t&&I.has(h.charAt(0));E=T?jCt:O?SO:""}let C="";return this.isEnd()&&this.#e.#l&&this.#i?.type==="!"&&(C="(?:$|\\/)"),[E+h+C,(0,vO.unescape)(h),this.#t=!!this.#t,this.#s]}let s=this.type==="*"||this.type==="+",a=this.type==="!"?"(?:(?!(?:":"(?:",n=this.#A(r);if(this.isStart()&&this.isEnd()&&!n&&this.type!=="!"){let p=this.toString();return this.#r=[p],this.type=null,this.#t=void 0,[p,(0,vO.unescape)(this.toString()),!1,!1]}let c=!s||t||r||!SO?"":this.#A(!0);c===n&&(c=""),c&&(n=`(?:${n})(?:${c})*?`);let f="";if(this.type==="!"&&this.#f)f=(this.isStart()&&!r?SO:"")+oDe;else{let p=this.type==="!"?"))"+(this.isStart()&&!r&&!t?SO:"")+sDe+")":this.type==="@"?")":this.type==="?"?")?":this.type==="+"&&c?")":this.type==="*"&&c?")?":`)${this.type}`;f=a+n+p}return[f,(0,vO.unescape)(n),this.#t=!!this.#t,this.#s]}#A(t){return this.#r.map(r=>{if(typeof r=="string")throw new Error("string type in extglob ast??");let[s,a,n,c]=r.toRegExpSource(t);return this.#s=this.#s||c,s}).filter(r=>!(this.isStart()&&this.isEnd())||!!r).join("|")}static#h(t,r,s=!1){let a=!1,n="",c=!1;for(let f=0;f{"use strict";Object.defineProperty(bO,"__esModule",{value:!0});bO.escape=void 0;var VCt=(e,{windowsPathsNoEscape:t=!1}={})=>t?e.replace(/[?*()[\]]/g,"[$&]"):e.replace(/[?*()[\]\\]/g,"\\$&");bO.escape=VCt});var pDe=G(pr=>{"use strict";var JCt=pr&&pr.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(pr,"__esModule",{value:!0});pr.unescape=pr.escape=pr.AST=pr.Minimatch=pr.match=pr.makeRe=pr.braceExpand=pr.defaults=pr.filter=pr.GLOBSTAR=pr.sep=pr.minimatch=void 0;var KCt=JCt(eDe()),PO=tDe(),cDe=b7(),zCt=P7(),XCt=BO(),ZCt=(e,t,r={})=>((0,PO.assertValidPattern)(t),!r.nocomment&&t.charAt(0)==="#"?!1:new fy(t,r).match(e));pr.minimatch=ZCt;var $Ct=/^\*+([^+@!?\*\[\(]*)$/,ewt=e=>t=>!t.startsWith(".")&&t.endsWith(e),twt=e=>t=>t.endsWith(e),rwt=e=>(e=e.toLowerCase(),t=>!t.startsWith(".")&&t.toLowerCase().endsWith(e)),nwt=e=>(e=e.toLowerCase(),t=>t.toLowerCase().endsWith(e)),iwt=/^\*+\.\*+$/,swt=e=>!e.startsWith(".")&&e.includes("."),owt=e=>e!=="."&&e!==".."&&e.includes("."),awt=/^\.\*+$/,lwt=e=>e!=="."&&e!==".."&&e.startsWith("."),cwt=/^\*+$/,uwt=e=>e.length!==0&&!e.startsWith("."),fwt=e=>e.length!==0&&e!=="."&&e!=="..",Awt=/^\?+([^+@!?\*\[\(]*)?$/,pwt=([e,t=""])=>{let r=uDe([e]);return t?(t=t.toLowerCase(),s=>r(s)&&s.toLowerCase().endsWith(t)):r},hwt=([e,t=""])=>{let r=fDe([e]);return t?(t=t.toLowerCase(),s=>r(s)&&s.toLowerCase().endsWith(t)):r},dwt=([e,t=""])=>{let r=fDe([e]);return t?s=>r(s)&&s.endsWith(t):r},gwt=([e,t=""])=>{let r=uDe([e]);return t?s=>r(s)&&s.endsWith(t):r},uDe=([e])=>{let t=e.length;return r=>r.length===t&&!r.startsWith(".")},fDe=([e])=>{let t=e.length;return r=>r.length===t&&r!=="."&&r!==".."},ADe=typeof process=="object"&&process?typeof process.env=="object"&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:"posix",aDe={win32:{sep:"\\"},posix:{sep:"/"}};pr.sep=ADe==="win32"?aDe.win32.sep:aDe.posix.sep;pr.minimatch.sep=pr.sep;pr.GLOBSTAR=Symbol("globstar **");pr.minimatch.GLOBSTAR=pr.GLOBSTAR;var mwt="[^/]",ywt=mwt+"*?",Ewt="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",Iwt="(?:(?!(?:\\/|^)\\.).)*?",Cwt=(e,t={})=>r=>(0,pr.minimatch)(r,e,t);pr.filter=Cwt;pr.minimatch.filter=pr.filter;var eu=(e,t={})=>Object.assign({},e,t),wwt=e=>{if(!e||typeof e!="object"||!Object.keys(e).length)return pr.minimatch;let t=pr.minimatch;return Object.assign((s,a,n={})=>t(s,a,eu(e,n)),{Minimatch:class extends t.Minimatch{constructor(a,n={}){super(a,eu(e,n))}static defaults(a){return t.defaults(eu(e,a)).Minimatch}},AST:class extends t.AST{constructor(a,n,c={}){super(a,n,eu(e,c))}static fromGlob(a,n={}){return t.AST.fromGlob(a,eu(e,n))}},unescape:(s,a={})=>t.unescape(s,eu(e,a)),escape:(s,a={})=>t.escape(s,eu(e,a)),filter:(s,a={})=>t.filter(s,eu(e,a)),defaults:s=>t.defaults(eu(e,s)),makeRe:(s,a={})=>t.makeRe(s,eu(e,a)),braceExpand:(s,a={})=>t.braceExpand(s,eu(e,a)),match:(s,a,n={})=>t.match(s,a,eu(e,n)),sep:t.sep,GLOBSTAR:pr.GLOBSTAR})};pr.defaults=wwt;pr.minimatch.defaults=pr.defaults;var Bwt=(e,t={})=>((0,PO.assertValidPattern)(e),t.nobrace||!/\{(?:(?!\{).)*\}/.test(e)?[e]:(0,KCt.default)(e));pr.braceExpand=Bwt;pr.minimatch.braceExpand=pr.braceExpand;var vwt=(e,t={})=>new fy(e,t).makeRe();pr.makeRe=vwt;pr.minimatch.makeRe=pr.makeRe;var Swt=(e,t,r={})=>{let s=new fy(t,r);return e=e.filter(a=>s.match(a)),s.options.nonull&&!e.length&&e.push(t),e};pr.match=Swt;pr.minimatch.match=pr.match;var lDe=/[?*]|[+@!]\(.*?\)|\[|\]/,Dwt=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),fy=class{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;regexp;constructor(t,r={}){(0,PO.assertValidPattern)(t),r=r||{},this.options=r,this.pattern=t,this.platform=r.platform||ADe,this.isWindows=this.platform==="win32",this.windowsPathsNoEscape=!!r.windowsPathsNoEscape||r.allowWindowsEscape===!1,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!r.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!r.nonegate,this.comment=!1,this.empty=!1,this.partial=!!r.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=r.windowsNoMagicRoot!==void 0?r.windowsNoMagicRoot:!!(this.isWindows&&this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(let t of this.set)for(let r of t)if(typeof r!="string")return!0;return!1}debug(...t){}make(){let t=this.pattern,r=this.options;if(!r.nocomment&&t.charAt(0)==="#"){this.comment=!0;return}if(!t){this.empty=!0;return}this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],r.debug&&(this.debug=(...n)=>console.error(...n)),this.debug(this.pattern,this.globSet);let s=this.globSet.map(n=>this.slashSplit(n));this.globParts=this.preprocess(s),this.debug(this.pattern,this.globParts);let a=this.globParts.map((n,c,f)=>{if(this.isWindows&&this.windowsNoMagicRoot){let p=n[0]===""&&n[1]===""&&(n[2]==="?"||!lDe.test(n[2]))&&!lDe.test(n[3]),h=/^[a-z]:/i.test(n[0]);if(p)return[...n.slice(0,4),...n.slice(4).map(E=>this.parse(E))];if(h)return[n[0],...n.slice(1).map(E=>this.parse(E))]}return n.map(p=>this.parse(p))});if(this.debug(this.pattern,a),this.set=a.filter(n=>n.indexOf(!1)===-1),this.isWindows)for(let n=0;n=2?(t=this.firstPhasePreProcess(t),t=this.secondPhasePreProcess(t)):r>=1?t=this.levelOneOptimize(t):t=this.adjascentGlobstarOptimize(t),t}adjascentGlobstarOptimize(t){return t.map(r=>{let s=-1;for(;(s=r.indexOf("**",s+1))!==-1;){let a=s;for(;r[a+1]==="**";)a++;a!==s&&r.splice(s,a-s)}return r})}levelOneOptimize(t){return t.map(r=>(r=r.reduce((s,a)=>{let n=s[s.length-1];return a==="**"&&n==="**"?s:a===".."&&n&&n!==".."&&n!=="."&&n!=="**"?(s.pop(),s):(s.push(a),s)},[]),r.length===0?[""]:r))}levelTwoFileOptimize(t){Array.isArray(t)||(t=this.slashSplit(t));let r=!1;do{if(r=!1,!this.preserveMultipleSlashes){for(let a=1;aa&&s.splice(a+1,c-a);let f=s[a+1],p=s[a+2],h=s[a+3];if(f!==".."||!p||p==="."||p===".."||!h||h==="."||h==="..")continue;r=!0,s.splice(a,1);let E=s.slice(0);E[a]="**",t.push(E),a--}if(!this.preserveMultipleSlashes){for(let c=1;cr.length)}partsMatch(t,r,s=!1){let a=0,n=0,c=[],f="";for(;ate?r=r.slice(ie):te>ie&&(t=t.slice(te)))}}let{optimizationLevel:n=1}=this.options;n>=2&&(t=this.levelTwoFileOptimize(t)),this.debug("matchOne",this,{file:t,pattern:r}),this.debug("matchOne",t.length,r.length);for(var c=0,f=0,p=t.length,h=r.length;c>> no match, partial?`,t,S,r,x),S===p))}let T;if(typeof E=="string"?(T=C===E,this.debug("string match",E,C,T)):(T=E.test(C),this.debug("pattern match",E,C,T)),!T)return!1}if(c===p&&f===h)return!0;if(c===p)return s;if(f===h)return c===p-1&&t[c]==="";throw new Error("wtf?")}braceExpand(){return(0,pr.braceExpand)(this.pattern,this.options)}parse(t){(0,PO.assertValidPattern)(t);let r=this.options;if(t==="**")return pr.GLOBSTAR;if(t==="")return"";let s,a=null;(s=t.match(cwt))?a=r.dot?fwt:uwt:(s=t.match($Ct))?a=(r.nocase?r.dot?nwt:rwt:r.dot?twt:ewt)(s[1]):(s=t.match(Awt))?a=(r.nocase?r.dot?hwt:pwt:r.dot?dwt:gwt)(s):(s=t.match(iwt))?a=r.dot?owt:swt:(s=t.match(awt))&&(a=lwt);let n=cDe.AST.fromGlob(t,this.options).toMMPattern();return a&&typeof n=="object"&&Reflect.defineProperty(n,"test",{value:a}),n}makeRe(){if(this.regexp||this.regexp===!1)return this.regexp;let t=this.set;if(!t.length)return this.regexp=!1,this.regexp;let r=this.options,s=r.noglobstar?ywt:r.dot?Ewt:Iwt,a=new Set(r.nocase?["i"]:[]),n=t.map(p=>{let h=p.map(E=>{if(E instanceof RegExp)for(let C of E.flags.split(""))a.add(C);return typeof E=="string"?Dwt(E):E===pr.GLOBSTAR?pr.GLOBSTAR:E._src});return h.forEach((E,C)=>{let S=h[C+1],x=h[C-1];E!==pr.GLOBSTAR||x===pr.GLOBSTAR||(x===void 0?S!==void 0&&S!==pr.GLOBSTAR?h[C+1]="(?:\\/|"+s+"\\/)?"+S:h[C]=s:S===void 0?h[C-1]=x+"(?:\\/|"+s+")?":S!==pr.GLOBSTAR&&(h[C-1]=x+"(?:\\/|\\/"+s+"\\/)"+S,h[C+1]=pr.GLOBSTAR))}),h.filter(E=>E!==pr.GLOBSTAR).join("/")}).join("|"),[c,f]=t.length>1?["(?:",")"]:["",""];n="^"+c+n+f+"$",this.negate&&(n="^(?!"+n+").+$");try{this.regexp=new RegExp(n,[...a].join(""))}catch{this.regexp=!1}return this.regexp}slashSplit(t){return this.preserveMultipleSlashes?t.split("/"):this.isWindows&&/^\/\/[^\/]+/.test(t)?["",...t.split(/\/+/)]:t.split(/\/+/)}match(t,r=this.partial){if(this.debug("match",t,this.pattern),this.comment)return!1;if(this.empty)return t==="";if(t==="/"&&r)return!0;let s=this.options;this.isWindows&&(t=t.split("\\").join("/"));let a=this.slashSplit(t);this.debug(this.pattern,"split",a);let n=this.set;this.debug(this.pattern,"set",n);let c=a[a.length-1];if(!c)for(let f=a.length-2;!c&&f>=0;f--)c=a[f];for(let f=0;f{"use strict";var hDe=tu&&tu.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(tu,"__esModule",{value:!0});tu.SuccinctRoles=tu.DelegatedRole=tu.Role=tu.TOP_LEVEL_ROLE_NAMES=void 0;var dDe=hDe(Ie("crypto")),kwt=pDe(),xO=hDe(Ie("util")),kO=kA(),Ay=hf();tu.TOP_LEVEL_ROLE_NAMES=["root","targets","snapshot","timestamp"];var Mb=class e{constructor(t){let{keyIDs:r,threshold:s,unrecognizedFields:a}=t;if(Qwt(r))throw new kO.ValueError("duplicate key IDs found");if(s<1)throw new kO.ValueError("threshold must be at least 1");this.keyIDs=r,this.threshold=s,this.unrecognizedFields=a||{}}equals(t){return t instanceof e?this.threshold===t.threshold&&xO.default.isDeepStrictEqual(this.keyIDs,t.keyIDs)&&xO.default.isDeepStrictEqual(this.unrecognizedFields,t.unrecognizedFields):!1}toJSON(){return{keyids:this.keyIDs,threshold:this.threshold,...this.unrecognizedFields}}static fromJSON(t){let{keyids:r,threshold:s,...a}=t;if(!Ay.guard.isStringArray(r))throw new TypeError("keyids must be an array");if(typeof s!="number")throw new TypeError("threshold must be a number");return new e({keyIDs:r,threshold:s,unrecognizedFields:a})}};tu.Role=Mb;function Qwt(e){return new Set(e).size!==e.length}var x7=class e extends Mb{constructor(t){super(t);let{name:r,terminating:s,paths:a,pathHashPrefixes:n}=t;if(this.name=r,this.terminating=s,t.paths&&t.pathHashPrefixes)throw new kO.ValueError("paths and pathHashPrefixes are mutually exclusive");this.paths=a,this.pathHashPrefixes=n}equals(t){return t instanceof e?super.equals(t)&&this.name===t.name&&this.terminating===t.terminating&&xO.default.isDeepStrictEqual(this.paths,t.paths)&&xO.default.isDeepStrictEqual(this.pathHashPrefixes,t.pathHashPrefixes):!1}isDelegatedPath(t){if(this.paths)return this.paths.some(r=>Twt(t,r));if(this.pathHashPrefixes){let s=dDe.default.createHash("sha256").update(t).digest("hex");return this.pathHashPrefixes.some(a=>s.startsWith(a))}return!1}toJSON(){let t={...super.toJSON(),name:this.name,terminating:this.terminating};return this.paths&&(t.paths=this.paths),this.pathHashPrefixes&&(t.path_hash_prefixes=this.pathHashPrefixes),t}static fromJSON(t){let{keyids:r,threshold:s,name:a,terminating:n,paths:c,path_hash_prefixes:f,...p}=t;if(!Ay.guard.isStringArray(r))throw new TypeError("keyids must be an array of strings");if(typeof s!="number")throw new TypeError("threshold must be a number");if(typeof a!="string")throw new TypeError("name must be a string");if(typeof n!="boolean")throw new TypeError("terminating must be a boolean");if(Ay.guard.isDefined(c)&&!Ay.guard.isStringArray(c))throw new TypeError("paths must be an array of strings");if(Ay.guard.isDefined(f)&&!Ay.guard.isStringArray(f))throw new TypeError("path_hash_prefixes must be an array of strings");return new e({keyIDs:r,threshold:s,name:a,terminating:n,paths:c,pathHashPrefixes:f,unrecognizedFields:p})}};tu.DelegatedRole=x7;var Rwt=(e,t)=>e.map((r,s)=>[r,t[s]]);function Twt(e,t){let r=e.split("/"),s=t.split("/");return s.length!=r.length?!1:Rwt(r,s).every(([a,n])=>(0,kwt.minimatch)(a,n))}var k7=class e extends Mb{constructor(t){super(t);let{bitLength:r,namePrefix:s}=t;if(r<=0||r>32)throw new kO.ValueError("bitLength must be between 1 and 32");this.bitLength=r,this.namePrefix=s,this.numberOfBins=Math.pow(2,r),this.suffixLen=(this.numberOfBins-1).toString(16).length}equals(t){return t instanceof e?super.equals(t)&&this.bitLength===t.bitLength&&this.namePrefix===t.namePrefix:!1}getRoleForTarget(t){let a=dDe.default.createHash("sha256").update(t).digest().subarray(0,4),n=32-this.bitLength,f=(a.readUInt32BE()>>>n).toString(16).padStart(this.suffixLen,"0");return`${this.namePrefix}-${f}`}*getRoles(){for(let t=0;t{"use strict";var Fwt=$w&&$w.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty($w,"__esModule",{value:!0});$w.Root=void 0;var gDe=Fwt(Ie("util")),R7=uy(),mDe=kA(),Nwt=EO(),QO=Q7(),RO=hf(),T7=class e extends R7.Signed{constructor(t){if(super(t),this.type=R7.MetadataKind.Root,this.keys=t.keys||{},this.consistentSnapshot=t.consistentSnapshot??!0,!t.roles)this.roles=QO.TOP_LEVEL_ROLE_NAMES.reduce((r,s)=>({...r,[s]:new QO.Role({keyIDs:[],threshold:1})}),{});else{let r=new Set(Object.keys(t.roles));if(!QO.TOP_LEVEL_ROLE_NAMES.every(s=>r.has(s)))throw new mDe.ValueError("missing top-level role");this.roles=t.roles}}addKey(t,r){if(!this.roles[r])throw new mDe.ValueError(`role ${r} does not exist`);this.roles[r].keyIDs.includes(t.keyID)||this.roles[r].keyIDs.push(t.keyID),this.keys[t.keyID]=t}equals(t){return t instanceof e?super.equals(t)&&this.consistentSnapshot===t.consistentSnapshot&&gDe.default.isDeepStrictEqual(this.keys,t.keys)&&gDe.default.isDeepStrictEqual(this.roles,t.roles):!1}toJSON(){return{_type:this.type,spec_version:this.specVersion,version:this.version,expires:this.expires,keys:Owt(this.keys),roles:Lwt(this.roles),consistent_snapshot:this.consistentSnapshot,...this.unrecognizedFields}}static fromJSON(t){let{unrecognizedFields:r,...s}=R7.Signed.commonFieldsFromJSON(t),{keys:a,roles:n,consistent_snapshot:c,...f}=r;if(typeof c!="boolean")throw new TypeError("consistent_snapshot must be a boolean");return new e({...s,keys:Mwt(a),roles:Uwt(n),consistentSnapshot:c,unrecognizedFields:f})}};$w.Root=T7;function Owt(e){return Object.entries(e).reduce((t,[r,s])=>({...t,[r]:s.toJSON()}),{})}function Lwt(e){return Object.entries(e).reduce((t,[r,s])=>({...t,[r]:s.toJSON()}),{})}function Mwt(e){let t;if(RO.guard.isDefined(e)){if(!RO.guard.isObjectRecord(e))throw new TypeError("keys must be an object");t=Object.entries(e).reduce((r,[s,a])=>({...r,[s]:Nwt.Key.fromJSON(s,a)}),{})}return t}function Uwt(e){let t;if(RO.guard.isDefined(e)){if(!RO.guard.isObjectRecord(e))throw new TypeError("roles must be an object");t=Object.entries(e).reduce((r,[s,a])=>({...r,[s]:QO.Role.fromJSON(a)}),{})}return t}});var O7=G(TO=>{"use strict";Object.defineProperty(TO,"__esModule",{value:!0});TO.Signature=void 0;var N7=class e{constructor(t){let{keyID:r,sig:s}=t;this.keyID=r,this.sig=s}toJSON(){return{keyid:this.keyID,sig:this.sig}}static fromJSON(t){let{keyid:r,sig:s}=t;if(typeof r!="string")throw new TypeError("keyid must be a string");if(typeof s!="string")throw new TypeError("sig must be a string");return new e({keyID:r,sig:s})}};TO.Signature=N7});var U7=G(e1=>{"use strict";var _wt=e1&&e1.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e1,"__esModule",{value:!0});e1.Snapshot=void 0;var Hwt=_wt(Ie("util")),L7=uy(),EDe=Rb(),yDe=hf(),M7=class e extends L7.Signed{constructor(t){super(t),this.type=L7.MetadataKind.Snapshot,this.meta=t.meta||{"targets.json":new EDe.MetaFile({version:1})}}equals(t){return t instanceof e?super.equals(t)&&Hwt.default.isDeepStrictEqual(this.meta,t.meta):!1}toJSON(){return{_type:this.type,meta:jwt(this.meta),spec_version:this.specVersion,version:this.version,expires:this.expires,...this.unrecognizedFields}}static fromJSON(t){let{unrecognizedFields:r,...s}=L7.Signed.commonFieldsFromJSON(t),{meta:a,...n}=r;return new e({...s,meta:Gwt(a),unrecognizedFields:n})}};e1.Snapshot=M7;function jwt(e){return Object.entries(e).reduce((t,[r,s])=>({...t,[r]:s.toJSON()}),{})}function Gwt(e){let t;if(yDe.guard.isDefined(e))if(yDe.guard.isObjectRecord(e))t=Object.entries(e).reduce((r,[s,a])=>({...r,[s]:EDe.MetaFile.fromJSON(a)}),{});else throw new TypeError("meta field is malformed");return t}});var IDe=G(t1=>{"use strict";var qwt=t1&&t1.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t1,"__esModule",{value:!0});t1.Delegations=void 0;var FO=qwt(Ie("util")),Wwt=kA(),Ywt=EO(),_7=Q7(),NO=hf(),H7=class e{constructor(t){if(this.keys=t.keys,this.unrecognizedFields=t.unrecognizedFields||{},t.roles&&Object.keys(t.roles).some(r=>_7.TOP_LEVEL_ROLE_NAMES.includes(r)))throw new Wwt.ValueError("Delegated role name conflicts with top-level role name");this.succinctRoles=t.succinctRoles,this.roles=t.roles}equals(t){return t instanceof e?FO.default.isDeepStrictEqual(this.keys,t.keys)&&FO.default.isDeepStrictEqual(this.roles,t.roles)&&FO.default.isDeepStrictEqual(this.unrecognizedFields,t.unrecognizedFields)&&FO.default.isDeepStrictEqual(this.succinctRoles,t.succinctRoles):!1}*rolesForTarget(t){if(this.roles)for(let r of Object.values(this.roles))r.isDelegatedPath(t)&&(yield{role:r.name,terminating:r.terminating});else this.succinctRoles&&(yield{role:this.succinctRoles.getRoleForTarget(t),terminating:!0})}toJSON(){let t={keys:Vwt(this.keys),...this.unrecognizedFields};return this.roles?t.roles=Jwt(this.roles):this.succinctRoles&&(t.succinct_roles=this.succinctRoles.toJSON()),t}static fromJSON(t){let{keys:r,roles:s,succinct_roles:a,...n}=t,c;return NO.guard.isObject(a)&&(c=_7.SuccinctRoles.fromJSON(a)),new e({keys:Kwt(r),roles:zwt(s),unrecognizedFields:n,succinctRoles:c})}};t1.Delegations=H7;function Vwt(e){return Object.entries(e).reduce((t,[r,s])=>({...t,[r]:s.toJSON()}),{})}function Jwt(e){return Object.values(e).map(t=>t.toJSON())}function Kwt(e){if(!NO.guard.isObjectRecord(e))throw new TypeError("keys is malformed");return Object.entries(e).reduce((t,[r,s])=>({...t,[r]:Ywt.Key.fromJSON(r,s)}),{})}function zwt(e){let t;if(NO.guard.isDefined(e)){if(!NO.guard.isObjectArray(e))throw new TypeError("roles is malformed");t=e.reduce((r,s)=>{let a=_7.DelegatedRole.fromJSON(s);return{...r,[a.name]:a}},{})}return t}});var q7=G(r1=>{"use strict";var Xwt=r1&&r1.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(r1,"__esModule",{value:!0});r1.Targets=void 0;var CDe=Xwt(Ie("util")),j7=uy(),Zwt=IDe(),$wt=Rb(),OO=hf(),G7=class e extends j7.Signed{constructor(t){super(t),this.type=j7.MetadataKind.Targets,this.targets=t.targets||{},this.delegations=t.delegations}addTarget(t){this.targets[t.path]=t}equals(t){return t instanceof e?super.equals(t)&&CDe.default.isDeepStrictEqual(this.targets,t.targets)&&CDe.default.isDeepStrictEqual(this.delegations,t.delegations):!1}toJSON(){let t={_type:this.type,spec_version:this.specVersion,version:this.version,expires:this.expires,targets:e1t(this.targets),...this.unrecognizedFields};return this.delegations&&(t.delegations=this.delegations.toJSON()),t}static fromJSON(t){let{unrecognizedFields:r,...s}=j7.Signed.commonFieldsFromJSON(t),{targets:a,delegations:n,...c}=r;return new e({...s,targets:t1t(a),delegations:r1t(n),unrecognizedFields:c})}};r1.Targets=G7;function e1t(e){return Object.entries(e).reduce((t,[r,s])=>({...t,[r]:s.toJSON()}),{})}function t1t(e){let t;if(OO.guard.isDefined(e))if(OO.guard.isObjectRecord(e))t=Object.entries(e).reduce((r,[s,a])=>({...r,[s]:$wt.TargetFile.fromJSON(s,a)}),{});else throw new TypeError("targets must be an object");return t}function r1t(e){let t;if(OO.guard.isDefined(e))if(OO.guard.isObject(e))t=Zwt.Delegations.fromJSON(e);else throw new TypeError("delegations must be an object");return t}});var J7=G(LO=>{"use strict";Object.defineProperty(LO,"__esModule",{value:!0});LO.Timestamp=void 0;var W7=uy(),wDe=Rb(),Y7=hf(),V7=class e extends W7.Signed{constructor(t){super(t),this.type=W7.MetadataKind.Timestamp,this.snapshotMeta=t.snapshotMeta||new wDe.MetaFile({version:1})}equals(t){return t instanceof e?super.equals(t)&&this.snapshotMeta.equals(t.snapshotMeta):!1}toJSON(){return{_type:this.type,spec_version:this.specVersion,version:this.version,expires:this.expires,meta:{"snapshot.json":this.snapshotMeta.toJSON()},...this.unrecognizedFields}}static fromJSON(t){let{unrecognizedFields:r,...s}=W7.Signed.commonFieldsFromJSON(t),{meta:a,...n}=r;return new e({...s,snapshotMeta:n1t(a),unrecognizedFields:n})}};LO.Timestamp=V7;function n1t(e){let t;if(Y7.guard.isDefined(e)){let r=e["snapshot.json"];if(!Y7.guard.isDefined(r)||!Y7.guard.isObject(r))throw new TypeError("missing snapshot.json in meta");t=wDe.MetaFile.fromJSON(r)}return t}});var vDe=G(i1=>{"use strict";var i1t=i1&&i1.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(i1,"__esModule",{value:!0});i1.Metadata=void 0;var s1t=p7(),BDe=i1t(Ie("util")),n1=uy(),Ub=kA(),o1t=F7(),a1t=O7(),l1t=U7(),c1t=q7(),u1t=J7(),K7=hf(),z7=class e{constructor(t,r,s){this.signed=t,this.signatures=r||{},this.unrecognizedFields=s||{}}sign(t,r=!0){let s=Buffer.from((0,s1t.canonicalize)(this.signed.toJSON())),a=t(s);r||(this.signatures={}),this.signatures[a.keyID]=a}verifyDelegate(t,r){let s,a={};switch(this.signed.type){case n1.MetadataKind.Root:a=this.signed.keys,s=this.signed.roles[t];break;case n1.MetadataKind.Targets:if(!this.signed.delegations)throw new Ub.ValueError(`No delegations found for ${t}`);a=this.signed.delegations.keys,this.signed.delegations.roles?s=this.signed.delegations.roles[t]:this.signed.delegations.succinctRoles&&this.signed.delegations.succinctRoles.isDelegatedRole(t)&&(s=this.signed.delegations.succinctRoles);break;default:throw new TypeError("invalid metadata type")}if(!s)throw new Ub.ValueError(`no delegation found for ${t}`);let n=new Set;if(s.keyIDs.forEach(c=>{let f=a[c];if(f)try{f.verifySignature(r),n.add(f.keyID)}catch{}}),n.sizer.toJSON()),signed:this.signed.toJSON(),...this.unrecognizedFields}}static fromJSON(t,r){let{signed:s,signatures:a,...n}=r;if(!K7.guard.isDefined(s)||!K7.guard.isObject(s))throw new TypeError("signed is not defined");if(t!==s._type)throw new Ub.ValueError(`expected '${t}', got ${s._type}`);if(!K7.guard.isObjectArray(a))throw new TypeError("signatures is not an array");let c;switch(t){case n1.MetadataKind.Root:c=o1t.Root.fromJSON(s);break;case n1.MetadataKind.Timestamp:c=u1t.Timestamp.fromJSON(s);break;case n1.MetadataKind.Snapshot:c=l1t.Snapshot.fromJSON(s);break;case n1.MetadataKind.Targets:c=c1t.Targets.fromJSON(s);break;default:throw new TypeError("invalid metadata type")}let f={};return a.forEach(p=>{let h=a1t.Signature.fromJSON(p);if(f[h.keyID])throw new Ub.ValueError(`multiple signatures found for keyid: ${h.keyID}`);f[h.keyID]=h}),new e(c,f,n)}};i1.Metadata=z7});var MO=G(Fi=>{"use strict";Object.defineProperty(Fi,"__esModule",{value:!0});Fi.Timestamp=Fi.Targets=Fi.Snapshot=Fi.Signature=Fi.Root=Fi.Metadata=Fi.Key=Fi.TargetFile=Fi.MetaFile=Fi.ValueError=Fi.MetadataKind=void 0;var f1t=uy();Object.defineProperty(Fi,"MetadataKind",{enumerable:!0,get:function(){return f1t.MetadataKind}});var A1t=kA();Object.defineProperty(Fi,"ValueError",{enumerable:!0,get:function(){return A1t.ValueError}});var SDe=Rb();Object.defineProperty(Fi,"MetaFile",{enumerable:!0,get:function(){return SDe.MetaFile}});Object.defineProperty(Fi,"TargetFile",{enumerable:!0,get:function(){return SDe.TargetFile}});var p1t=EO();Object.defineProperty(Fi,"Key",{enumerable:!0,get:function(){return p1t.Key}});var h1t=vDe();Object.defineProperty(Fi,"Metadata",{enumerable:!0,get:function(){return h1t.Metadata}});var d1t=F7();Object.defineProperty(Fi,"Root",{enumerable:!0,get:function(){return d1t.Root}});var g1t=O7();Object.defineProperty(Fi,"Signature",{enumerable:!0,get:function(){return g1t.Signature}});var m1t=U7();Object.defineProperty(Fi,"Snapshot",{enumerable:!0,get:function(){return m1t.Snapshot}});var y1t=q7();Object.defineProperty(Fi,"Targets",{enumerable:!0,get:function(){return y1t.Targets}});var E1t=J7();Object.defineProperty(Fi,"Timestamp",{enumerable:!0,get:function(){return E1t.Timestamp}})});var bDe=G((Qtr,DDe)=>{var s1=1e3,o1=s1*60,a1=o1*60,py=a1*24,I1t=py*7,C1t=py*365.25;DDe.exports=function(e,t){t=t||{};var r=typeof e;if(r==="string"&&e.length>0)return w1t(e);if(r==="number"&&isFinite(e))return t.long?v1t(e):B1t(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function w1t(e){if(e=String(e),!(e.length>100)){var t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(t){var r=parseFloat(t[1]),s=(t[2]||"ms").toLowerCase();switch(s){case"years":case"year":case"yrs":case"yr":case"y":return r*C1t;case"weeks":case"week":case"w":return r*I1t;case"days":case"day":case"d":return r*py;case"hours":case"hour":case"hrs":case"hr":case"h":return r*a1;case"minutes":case"minute":case"mins":case"min":case"m":return r*o1;case"seconds":case"second":case"secs":case"sec":case"s":return r*s1;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function B1t(e){var t=Math.abs(e);return t>=py?Math.round(e/py)+"d":t>=a1?Math.round(e/a1)+"h":t>=o1?Math.round(e/o1)+"m":t>=s1?Math.round(e/s1)+"s":e+"ms"}function v1t(e){var t=Math.abs(e);return t>=py?UO(e,t,py,"day"):t>=a1?UO(e,t,a1,"hour"):t>=o1?UO(e,t,o1,"minute"):t>=s1?UO(e,t,s1,"second"):e+" ms"}function UO(e,t,r,s){var a=t>=r*1.5;return Math.round(e/r)+" "+s+(a?"s":"")}});var X7=G((Rtr,PDe)=>{function S1t(e){r.debug=r,r.default=r,r.coerce=p,r.disable=c,r.enable=a,r.enabled=f,r.humanize=bDe(),r.destroy=h,Object.keys(e).forEach(E=>{r[E]=e[E]}),r.names=[],r.skips=[],r.formatters={};function t(E){let C=0;for(let S=0;S{if(ae==="%%")return"%";ie++;let Ae=r.formatters[ge];if(typeof Ae=="function"){let Ce=O[ie];ae=Ae.call(U,Ce),O.splice(ie,1),ie--}return ae}),r.formatArgs.call(U,O),(U.log||r.log).apply(U,O)}return T.namespace=E,T.useColors=r.useColors(),T.color=r.selectColor(E),T.extend=s,T.destroy=r.destroy,Object.defineProperty(T,"enabled",{enumerable:!0,configurable:!1,get:()=>S!==null?S:(x!==r.namespaces&&(x=r.namespaces,I=r.enabled(E)),I),set:O=>{S=O}}),typeof r.init=="function"&&r.init(T),T}function s(E,C){let S=r(this.namespace+(typeof C>"u"?":":C)+E);return S.log=this.log,S}function a(E){r.save(E),r.namespaces=E,r.names=[],r.skips=[];let C=(typeof E=="string"?E:"").trim().replace(" ",",").split(",").filter(Boolean);for(let S of C)S[0]==="-"?r.skips.push(S.slice(1)):r.names.push(S)}function n(E,C){let S=0,x=0,I=-1,T=0;for(;S"-"+C)].join(",");return r.enable(""),E}function f(E){for(let C of r.skips)if(n(E,C))return!1;for(let C of r.names)if(n(E,C))return!0;return!1}function p(E){return E instanceof Error?E.stack||E.message:E}function h(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return r.enable(r.load()),r}PDe.exports=S1t});var xDe=G((ac,_O)=>{ac.formatArgs=b1t;ac.save=P1t;ac.load=x1t;ac.useColors=D1t;ac.storage=k1t();ac.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();ac.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function D1t(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let e;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(e=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(e[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function b1t(e){if(e[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+e[0]+(this.useColors?"%c ":" ")+"+"+_O.exports.humanize(this.diff),!this.useColors)return;let t="color: "+this.color;e.splice(1,0,t,"color: inherit");let r=0,s=0;e[0].replace(/%[a-zA-Z%]/g,a=>{a!=="%%"&&(r++,a==="%c"&&(s=r))}),e.splice(s,0,t)}ac.log=console.debug||console.log||(()=>{});function P1t(e){try{e?ac.storage.setItem("debug",e):ac.storage.removeItem("debug")}catch{}}function x1t(){let e;try{e=ac.storage.getItem("debug")}catch{}return!e&&typeof process<"u"&&"env"in process&&(e=process.env.DEBUG),e}function k1t(){try{return localStorage}catch{}}_O.exports=X7()(ac);var{formatters:Q1t}=_O.exports;Q1t.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}}});var QDe=G((io,jO)=>{var R1t=Ie("tty"),HO=Ie("util");io.init=U1t;io.log=O1t;io.formatArgs=F1t;io.save=L1t;io.load=M1t;io.useColors=T1t;io.destroy=HO.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");io.colors=[6,2,3,4,5,1];try{let e=Ie("supports-color");e&&(e.stderr||e).level>=2&&(io.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}io.inspectOpts=Object.keys(process.env).filter(e=>/^debug_/i.test(e)).reduce((e,t)=>{let r=t.substring(6).toLowerCase().replace(/_([a-z])/g,(a,n)=>n.toUpperCase()),s=process.env[t];return/^(yes|on|true|enabled)$/i.test(s)?s=!0:/^(no|off|false|disabled)$/i.test(s)?s=!1:s==="null"?s=null:s=Number(s),e[r]=s,e},{});function T1t(){return"colors"in io.inspectOpts?!!io.inspectOpts.colors:R1t.isatty(process.stderr.fd)}function F1t(e){let{namespace:t,useColors:r}=this;if(r){let s=this.color,a="\x1B[3"+(s<8?s:"8;5;"+s),n=` ${a};1m${t} \x1B[0m`;e[0]=n+e[0].split(` +`).join(` +`+n),e.push(a+"m+"+jO.exports.humanize(this.diff)+"\x1B[0m")}else e[0]=N1t()+t+" "+e[0]}function N1t(){return io.inspectOpts.hideDate?"":new Date().toISOString()+" "}function O1t(...e){return process.stderr.write(HO.formatWithOptions(io.inspectOpts,...e)+` +`)}function L1t(e){e?process.env.DEBUG=e:delete process.env.DEBUG}function M1t(){return process.env.DEBUG}function U1t(e){e.inspectOpts={};let t=Object.keys(io.inspectOpts);for(let r=0;rt.trim()).join(" ")};kDe.O=function(e){return this.inspectOpts.colors=this.useColors,HO.inspect(e,this.inspectOpts)}});var $7=G((Ttr,Z7)=>{typeof process>"u"||process.type==="renderer"||process.browser===!0||process.__nwjs?Z7.exports=xDe():Z7.exports=QDe()});var qO=G(Ki=>{"use strict";Object.defineProperty(Ki,"__esModule",{value:!0});Ki.DownloadHTTPError=Ki.DownloadLengthMismatchError=Ki.DownloadError=Ki.ExpiredMetadataError=Ki.EqualVersionError=Ki.BadVersionError=Ki.RepositoryError=Ki.PersistError=Ki.RuntimeError=Ki.ValueError=void 0;var eJ=class extends Error{};Ki.ValueError=eJ;var tJ=class extends Error{};Ki.RuntimeError=tJ;var rJ=class extends Error{};Ki.PersistError=rJ;var _b=class extends Error{};Ki.RepositoryError=_b;var GO=class extends _b{};Ki.BadVersionError=GO;var nJ=class extends GO{};Ki.EqualVersionError=nJ;var iJ=class extends _b{};Ki.ExpiredMetadataError=iJ;var Hb=class extends Error{};Ki.DownloadError=Hb;var sJ=class extends Hb{};Ki.DownloadLengthMismatchError=sJ;var oJ=class extends Hb{constructor(t,r){super(t),this.statusCode=r}};Ki.DownloadHTTPError=oJ});var TDe=G(l1=>{"use strict";var lJ=l1&&l1.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(l1,"__esModule",{value:!0});l1.withTempFile=void 0;var aJ=lJ(Ie("fs/promises")),_1t=lJ(Ie("os")),RDe=lJ(Ie("path")),H1t=async e=>j1t(async t=>e(RDe.default.join(t,"tempfile")));l1.withTempFile=H1t;var j1t=async e=>{let t=await aJ.default.realpath(_1t.default.tmpdir()),r=await aJ.default.mkdtemp(t+RDe.default.sep);try{return await e(r)}finally{await aJ.default.rm(r,{force:!0,recursive:!0,maxRetries:3})}}});var uJ=G(Pd=>{"use strict";var YO=Pd&&Pd.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Pd,"__esModule",{value:!0});Pd.DefaultFetcher=Pd.BaseFetcher=void 0;var G1t=YO($7()),FDe=YO(Ie("fs")),q1t=YO(sO()),W1t=YO(Ie("util")),NDe=qO(),Y1t=TDe(),V1t=(0,G1t.default)("tuf:fetch"),WO=class{async downloadFile(t,r,s){return(0,Y1t.withTempFile)(async a=>{let n=await this.fetch(t),c=0,f=FDe.default.createWriteStream(a);try{for await(let p of n){let h=Buffer.from(p);if(c+=h.length,c>r)throw new NDe.DownloadLengthMismatchError("Max length reached");await J1t(f,h)}}finally{await W1t.default.promisify(f.close).bind(f)()}return s(a)})}async downloadBytes(t,r){return this.downloadFile(t,r,async s=>{let a=FDe.default.createReadStream(s),n=[];for await(let c of a)n.push(c);return Buffer.concat(n)})}};Pd.BaseFetcher=WO;var cJ=class extends WO{constructor(t={}){super(),this.timeout=t.timeout,this.retry=t.retry}async fetch(t){V1t("GET %s",t);let r=await(0,q1t.default)(t,{timeout:this.timeout,retry:this.retry});if(!r.ok||!r?.body)throw new NDe.DownloadHTTPError("Failed to download",r.status);return r.body}};Pd.DefaultFetcher=cJ;var J1t=async(e,t)=>new Promise((r,s)=>{e.write(t,a=>{a&&s(a),r(!0)})})});var ODe=G(VO=>{"use strict";Object.defineProperty(VO,"__esModule",{value:!0});VO.defaultConfig=void 0;VO.defaultConfig={maxRootRotations:256,maxDelegations:32,rootMaxLength:512e3,timestampMaxLength:16384,snapshotMaxLength:2e6,targetsMaxLength:5e6,prefixTargetsWithHash:!0,fetchTimeout:1e5,fetchRetries:void 0,fetchRetry:2}});var LDe=G(JO=>{"use strict";Object.defineProperty(JO,"__esModule",{value:!0});JO.TrustedMetadataStore=void 0;var ws=MO(),Hi=qO(),fJ=class{constructor(t){this.trustedSet={},this.referenceTime=new Date,this.loadTrustedRoot(t)}get root(){if(!this.trustedSet.root)throw new ReferenceError("No trusted root metadata");return this.trustedSet.root}get timestamp(){return this.trustedSet.timestamp}get snapshot(){return this.trustedSet.snapshot}get targets(){return this.trustedSet.targets}getRole(t){return this.trustedSet[t]}updateRoot(t){let r=JSON.parse(t.toString("utf8")),s=ws.Metadata.fromJSON(ws.MetadataKind.Root,r);if(s.signed.type!=ws.MetadataKind.Root)throw new Hi.RepositoryError(`Expected 'root', got ${s.signed.type}`);if(this.root.verifyDelegate(ws.MetadataKind.Root,s),s.signed.version!=this.root.signed.version+1)throw new Hi.BadVersionError(`Expected version ${this.root.signed.version+1}, got ${s.signed.version}`);return s.verifyDelegate(ws.MetadataKind.Root,s),this.trustedSet.root=s,s}updateTimestamp(t){if(this.snapshot)throw new Hi.RuntimeError("Cannot update timestamp after snapshot");if(this.root.signed.isExpired(this.referenceTime))throw new Hi.ExpiredMetadataError("Final root.json is expired");let r=JSON.parse(t.toString("utf8")),s=ws.Metadata.fromJSON(ws.MetadataKind.Timestamp,r);if(s.signed.type!=ws.MetadataKind.Timestamp)throw new Hi.RepositoryError(`Expected 'timestamp', got ${s.signed.type}`);if(this.root.verifyDelegate(ws.MetadataKind.Timestamp,s),this.timestamp){if(s.signed.version{let p=n.signed.meta[c];if(!p)throw new Hi.RepositoryError(`Missing file ${c} in new snapshot`);if(p.version{"use strict";Object.defineProperty(AJ,"__esModule",{value:!0});AJ.join=z1t;var K1t=Ie("url");function z1t(e,t){return new K1t.URL(X1t(e)+Z1t(t)).toString()}function X1t(e){return e.endsWith("/")?e:e+"/"}function Z1t(e){return e.startsWith("/")?e.slice(1):e}});var UDe=G(ru=>{"use strict";var $1t=ru&&ru.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||("get"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),e2t=ru&&ru.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),dJ=ru&&ru.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&$1t(t,e,r);return e2t(t,e),t},t2t=ru&&ru.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ru,"__esModule",{value:!0});ru.Updater=void 0;var QA=MO(),r2t=t2t($7()),c1=dJ(Ie("fs")),KO=dJ(Ie("path")),n2t=ODe(),hy=qO(),i2t=uJ(),s2t=LDe(),jb=dJ(MDe()),pJ=(0,r2t.default)("tuf:cache"),hJ=class{constructor(t){let{metadataDir:r,metadataBaseUrl:s,targetDir:a,targetBaseUrl:n,fetcher:c,config:f}=t;this.dir=r,this.metadataBaseUrl=s,this.targetDir=a,this.targetBaseUrl=n,this.forceCache=t.forceCache??!1;let p=this.loadLocalMetadata(QA.MetadataKind.Root);this.trustedSet=new s2t.TrustedMetadataStore(p),this.config={...n2t.defaultConfig,...f},this.fetcher=c||new i2t.DefaultFetcher({timeout:this.config.fetchTimeout,retry:this.config.fetchRetries??this.config.fetchRetry})}async refresh(){if(this.forceCache)try{await this.loadTimestamp({checkRemote:!1})}catch{await this.loadRoot(),await this.loadTimestamp()}else await this.loadRoot(),await this.loadTimestamp();await this.loadSnapshot(),await this.loadTargets(QA.MetadataKind.Targets,QA.MetadataKind.Root)}async getTargetInfo(t){return this.trustedSet.targets||await this.refresh(),this.preorderDepthFirstWalk(t)}async downloadTarget(t,r,s){let a=r||this.generateTargetPath(t);if(!s){if(!this.targetBaseUrl)throw new hy.ValueError("Target base URL not set");s=this.targetBaseUrl}let n=t.path;if(this.trustedSet.root.signed.consistentSnapshot&&this.config.prefixTargetsWithHash){let p=Object.values(t.hashes),{dir:h,base:E}=KO.parse(n),C=`${p[0]}.${E}`;n=h?`${h}/${C}`:C}let f=jb.join(s,n);return await this.fetcher.downloadFile(f,t.length,async p=>{await t.verify(c1.createReadStream(p)),pJ("WRITE %s",a),c1.copyFileSync(p,a)}),a}async findCachedTarget(t,r){r||(r=this.generateTargetPath(t));try{if(c1.existsSync(r))return await t.verify(c1.createReadStream(r)),r}catch{return}}loadLocalMetadata(t){let r=KO.join(this.dir,`${t}.json`);return pJ("READ %s",r),c1.readFileSync(r)}async loadRoot(){let r=this.trustedSet.root.signed.version+1,s=r+this.config.maxRootRotations;for(let a=r;a0;){let{roleName:a,parentRoleName:n}=r.pop();if(s.has(a))continue;let c=(await this.loadTargets(a,n))?.signed;if(!c)continue;let f=c.targets?.[t];if(f)return f;if(s.add(a),c.delegations){let p=[],h=c.delegations.rolesForTarget(t);for(let{role:E,terminating:C}of h)if(p.push({roleName:E,parentRoleName:a}),C){r.splice(0);break}p.reverse(),r.push(...p)}}}generateTargetPath(t){if(!this.targetDir)throw new hy.ValueError("Target directory not set");let r=encodeURIComponent(t.path);return KO.join(this.targetDir,r)}persistMetadata(t,r){let s=encodeURIComponent(t);try{let a=KO.join(this.dir,`${s}.json`);pJ("WRITE %s",a),c1.writeFileSync(a,r.toString("utf8"))}catch(a){throw new hy.PersistError(`Failed to persist metadata ${s} error: ${a}`)}}};ru.Updater=hJ});var _De=G(xd=>{"use strict";Object.defineProperty(xd,"__esModule",{value:!0});xd.Updater=xd.BaseFetcher=xd.TargetFile=void 0;var o2t=MO();Object.defineProperty(xd,"TargetFile",{enumerable:!0,get:function(){return o2t.TargetFile}});var a2t=uJ();Object.defineProperty(xd,"BaseFetcher",{enumerable:!0,get:function(){return a2t.BaseFetcher}});var l2t=UDe();Object.defineProperty(xd,"Updater",{enumerable:!0,get:function(){return l2t.Updater}})});var mJ=G(zO=>{"use strict";Object.defineProperty(zO,"__esModule",{value:!0});zO.TUFError=void 0;var gJ=class extends Error{constructor({code:t,message:r,cause:s}){super(r),this.code=t,this.cause=s,this.name=this.constructor.name}};zO.TUFError=gJ});var HDe=G(Gb=>{"use strict";var c2t=Gb&&Gb.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Gb,"__esModule",{value:!0});Gb.readTarget=f2t;var u2t=c2t(Ie("fs")),XO=mJ();async function f2t(e,t){let r=await A2t(e,t);return new Promise((s,a)=>{u2t.default.readFile(r,"utf-8",(n,c)=>{n?a(new XO.TUFError({code:"TUF_READ_TARGET_ERROR",message:`error reading target ${r}`,cause:n})):s(c)})})}async function A2t(e,t){let r;try{r=await e.getTargetInfo(t)}catch(a){throw new XO.TUFError({code:"TUF_REFRESH_METADATA_ERROR",message:"error refreshing TUF metadata",cause:a})}if(!r)throw new XO.TUFError({code:"TUF_FIND_TARGET_ERROR",message:`target ${t} not found`});let s=await e.findCachedTarget(r);if(!s)try{s=await e.downloadTarget(r)}catch(a){throw new XO.TUFError({code:"TUF_DOWNLOAD_TARGET_ERROR",message:`error downloading target ${s}`,cause:a})}return s}});var jDe=G((qtr,p2t)=>{p2t.exports={"https://tuf-repo-cdn.sigstore.dev":{"root.json":"ewogInNpZ25hdHVyZXMiOiBbCiAgewogICAia2V5aWQiOiAiNmYyNjAwODlkNTkyM2RhZjIwMTY2Y2E2NTdjNTQzYWY2MTgzNDZhYjk3MTg4NGE5OTk2MmIwMTk4OGJiZTBjMyIsCiAgICJzaWciOiAiMzA0NjAyMjEwMDhhYjFmNmYxN2Q0ZjllNmQ3ZGNmMWM4ODkxMmI2YjUzY2MxMDM4ODY0NGFlMWYwOWJjMzdhMDgyY2QwNjAwM2UwMjIxMDBlMTQ1ZWY0YzdiNzgyZDRlODEwN2I1MzQzN2U2NjlkMDQ3Njg5MmNlOTk5OTAzYWUzM2QxNDQ0ODM2Njk5NmU3IgogIH0sCiAgewogICAia2V5aWQiOiAiZTcxYTU0ZDU0MzgzNWJhODZhZGFkOTQ2MDM3OWM3NjQxZmI4NzI2ZDE2NGVhNzY2ODAxYTFjNTIyYWJhN2VhMiIsCiAgICJzaWciOiAiMzA0NTAyMjEwMGM3NjhiMmY4NmRhOTk1NjkwMTljMTYwYTA4MWRhNTRhZTM2YzM0YzBhMzEyMGQzY2I2OWI1M2I3ZDExMzc1OGUwMjIwNGY2NzE1MThmNjE3YjIwZDQ2NTM3ZmFlNmMzYjYzYmFlODkxM2Y0ZjE5NjIxNTYxMDVjYzRmMDE5YWMzNWM2YSIKICB9LAogIHsKICAgImtleWlkIjogIjIyZjRjYWVjNmQ4ZTZmOTU1NWFmNjZiM2Q0YzNjYjA2YTNiYjIzZmRjN2UzOWM5MTZjNjFmNDYyZTZmNTJiMDYiLAogICAic2lnIjogIjMwNDUwMjIxMDBiNDQzNGU2OTk1ZDM2OGQyM2U3NDc1OWFjZDBjYjkwMTNjODNhNWQzNTExZjBmOTk3ZWM1NGM0NTZhZTQzNTBhMDIyMDE1YjBlMjY1ZDE4MmQyYjYxZGM3NGUxNTVkOThiM2MzZmJlNTY0YmEwNTI4NmFhMTRjOGRmMDJjOWI3NTY1MTYiCiAgfSwKICB7CiAgICJrZXlpZCI6ICI2MTY0MzgzODEyNWI0NDBiNDBkYjY5NDJmNWNiNWEzMWMwZGMwNDM2ODMxNmViMmFhYTU4Yjk1OTA0YTU4MjIyIiwKICAgInNpZyI6ICIzMDQ1MDIyMTAwODJjNTg0MTFkOTg5ZWI5Zjg2MTQxMDg1N2Q0MjM4MTU5MGVjOTQyNGRiZGFhNTFlNzhlZDEzNTE1NDMxOTA0ZTAyMjAxMTgxODVkYTZhNmMyOTQ3MTMxYzE3Nzk3ZTJiYjc2MjBjZTI2ZTVmMzAxZDFjZWFjNWYyYTdlNThmOWRjZjJlIgogIH0sCiAgewogICAia2V5aWQiOiAiYTY4N2U1YmY0ZmFiODJiMGVlNThkNDZlMDVjOTUzNTE0NWEyYzlhZmI0NThmNDNkNDJiNDVjYTBmZGNlMmE3MCIsCiAgICJzaWciOiAiMzA0NjAyMjEwMGM3ODUxMzg1NGNhZTljMzJlYWE2Yjg4ZTE4OTEyZjQ4MDA2YzI3NTdhMjU4ZjkxNzMxMmNhYmE3NTk0OGViOWUwMjIxMDBkOWUxYjRjZTBhZGZlOWZkMmUyMTQ4ZDdmYTI3YTJmNDBiYTExMjJiZDY5ZGE3NjEyZDhkMTc3NmIwMTNjOTFkIgogIH0sCiAgewogICAia2V5aWQiOiAiZmRmYTgzYTA3YjVhODM1ODliODdkZWQ0MWY3N2YzOWQyMzJhZDkxZjdjY2U1Mjg2OGRhY2QwNmJhMDg5ODQ5ZiIsCiAgICJzaWciOiAiMzA0NTAyMjA1NjQ4M2EyZDVkOWVhOWNlYzZlMTFlYWRmYjMzYzQ4NGI2MTQyOThmYWNhMTVhY2YxYzQzMWIxMWVkN2Y3MzRjMDIyMTAwZDBjMWQ3MjZhZjkyYTg3ZTRlNjY0NTljYTVhZGYzOGEwNWI0NGUxZjk0MzE4NDIzZjk1NGJhZThiY2E1YmIyZSIKICB9LAogIHsKICAgImtleWlkIjogImUyZjU5YWNiOTQ4ODUxOTQwN2UxOGNiZmM5MzI5NTEwYmUwM2MwNGFjYTk5MjlkMmYwMzAxMzQzZmVjODU1MjMiLAogICAic2lnIjogIjMwNDYwMjIxMDBkMDA0ZGU4ODAyNGMzMmRjNTY1M2E5ZjQ4NDNjZmM1MjE1NDI3MDQ4YWQ5NjAwZDJjZjljOTY5ZTZlZGZmM2QyMDIyMTAwZDllYmI3OThmNWZjNjZhZjEwODk5ZGVjZTAxNGE4NjI4Y2NmM2M1NDAyY2Q0YTQyNzAyMDc0NzJmOGY2ZTcxMiIKICB9LAogIHsKICAgImtleWlkIjogIjNjMzQ0YWEwNjhmZDRjYzRlODdkYzUwYjYxMmMwMjQzMWZiYzc3MWU5NTAwMzk5MzY4M2EyYjBiZjI2MGNmMGUiLAogICAic2lnIjogIjMwNDYwMjIxMDBiN2IwOTk5NmM0NWNhMmQ0YjA1NjAzZTU2YmFlZmEyOTcxOGEwYjcxMTQ3Y2Y4YzZlNjYzNDliYWE2MTQ3N2RmMDIyMTAwYzRkYTgwYzcxN2I0ZmE3YmJhMGZkNWM3MmRhOGEwNDk5MzU4YjAxMzU4YjIzMDlmNDFkMTQ1NmVhMWU3ZTFkOSIKICB9LAogIHsKICAgImtleWlkIjogImVjODE2Njk3MzRlMDE3OTk2YzViODVmM2QwMmMzZGUxZGQ0NjM3YTE1MjAxOWZlMWFmMTI1ZDJmOTM2OGI5NWUiLAogICAic2lnIjogIjMwNDYwMjIxMDBiZTk3ODJjMzA3NDRlNDExYTgyZmE4NWI1MTM4ZDYwMWNlMTQ4YmMxOTI1OGFlYzY0ZTdlYzI0NDc4ZjM4ODEyMDIyMTAwY2FlZjYzZGNhZjFhNGI5YTUwMGQzYmQwZTNmMTY0ZWMxOGYxYjYzZDdhOTQ2MGQ5YWNhYjEwNjZkYjBmMDE2ZCIKICB9LAogIHsKICAgImtleWlkIjogIjFlMWQ2NWNlOThiMTBhZGRhZDQ3NjRmZWJmN2RkYTJkMDQzNmIzZDNhMzg5MzU3OWMwZGRkYWVhMjBlNTQ4NDkiLAogICAic2lnIjogIjMwNDUwMjIwNzQ2ZWMzZjg1MzRjZTU1NTMxZDBkMDFmZjY0OTY0ZWY0NDBkMWU3ZDJjNGMxNDI0MDliOGU5NzY5ZjFhZGE2ZjAyMjEwMGUzYjkyOWZjZDkzZWExOGZlYWEwODI1ODg3YTcyMTA0ODk4NzlhNjY3ODBjMDdhODNmNGJkNDZlMmYwOWFiM2IiCiAgfQogXSwKICJzaWduZWQiOiB7CiAgIl90eXBlIjogInJvb3QiLAogICJjb25zaXN0ZW50X3NuYXBzaG90IjogdHJ1ZSwKICAiZXhwaXJlcyI6ICIyMDI1LTAyLTE5VDA4OjA0OjMyWiIsCiAgImtleXMiOiB7CiAgICIyMmY0Y2FlYzZkOGU2Zjk1NTVhZjY2YjNkNGMzY2IwNmEzYmIyM2ZkYzdlMzljOTE2YzYxZjQ2MmU2ZjUyYjA2IjogewogICAgImtleWlkX2hhc2hfYWxnb3JpdGhtcyI6IFsKICAgICAic2hhMjU2IiwKICAgICAic2hhNTEyIgogICAgXSwKICAgICJrZXl0eXBlIjogImVjZHNhIiwKICAgICJrZXl2YWwiOiB7CiAgICAgInB1YmxpYyI6ICItLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLVxuTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFekJ6Vk9tSENQb2pNVkxTSTM2NFdpaVY4TlByRFxuNklnUnhWbGlza3ovdit5M0pFUjVtY1ZHY09ObGlEY1dNQzVKMmxmSG1qUE5QaGI0SDd4bThMemZTQT09XG4tLS0tLUVORCBQVUJMSUMgS0VZLS0tLS1cbiIKICAgIH0sCiAgICAic2NoZW1lIjogImVjZHNhLXNoYTItbmlzdHAyNTYiLAogICAgIngtdHVmLW9uLWNpLWtleW93bmVyIjogIkBzYW50aWFnb3RvcnJlcyIKICAgfSwKICAgIjYxNjQzODM4MTI1YjQ0MGI0MGRiNjk0MmY1Y2I1YTMxYzBkYzA0MzY4MzE2ZWIyYWFhNThiOTU5MDRhNTgyMjIiOiB7CiAgICAia2V5aWRfaGFzaF9hbGdvcml0aG1zIjogWwogICAgICJzaGEyNTYiLAogICAgICJzaGE1MTIiCiAgICBdLAogICAgImtleXR5cGUiOiAiZWNkc2EiLAogICAgImtleXZhbCI6IHsKICAgICAicHVibGljIjogIi0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tXG5NRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVpbmlrU3NBUW1Za05lSDVlWXEvQ25JekxhYWNPXG54bFNhYXdRRE93cUt5L3RDcXhxNXh4UFNKYzIxSzRXSWhzOUd5T2tLZnp1ZVkzR0lMemNNSlo0Y1d3PT1cbi0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLVxuIgogICAgfSwKICAgICJzY2hlbWUiOiAiZWNkc2Etc2hhMi1uaXN0cDI1NiIsCiAgICAieC10dWYtb24tY2kta2V5b3duZXIiOiAiQGJvYmNhbGxhd2F5IgogICB9LAogICAiNmYyNjAwODlkNTkyM2RhZjIwMTY2Y2E2NTdjNTQzYWY2MTgzNDZhYjk3MTg4NGE5OTk2MmIwMTk4OGJiZTBjMyI6IHsKICAgICJrZXlpZF9oYXNoX2FsZ29yaXRobXMiOiBbCiAgICAgInNoYTI1NiIsCiAgICAgInNoYTUxMiIKICAgIF0sCiAgICAia2V5dHlwZSI6ICJlY2RzYSIsCiAgICAia2V5dmFsIjogewogICAgICJwdWJsaWMiOiAiLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cbk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXk4WEtzbWhCWURJOEpjMEd3ekJ4ZUtheDBjbTVcblNUS0VVNjVIUEZ1blVuNDFzVDhwaTBGak00SWtIei9ZVW13bUxVTzBXdDdseGhqNkJrTElLNHFZQXc9PVxuLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tXG4iCiAgICB9LAogICAgInNjaGVtZSI6ICJlY2RzYS1zaGEyLW5pc3RwMjU2IiwKICAgICJ4LXR1Zi1vbi1jaS1rZXlvd25lciI6ICJAZGxvcmVuYyIKICAgfSwKICAgIjcyNDdmMGRiYWQ4NWIxNDdlMTg2M2JhZGU3NjEyNDNjYzc4NWRjYjdhYTQxMGU3MTA1ZGQzZDJiNjFhMzZkMmMiOiB7CiAgICAia2V5aWRfaGFzaF9hbGdvcml0aG1zIjogWwogICAgICJzaGEyNTYiLAogICAgICJzaGE1MTIiCiAgICBdLAogICAgImtleXR5cGUiOiAiZWNkc2EiLAogICAgImtleXZhbCI6IHsKICAgICAicHVibGljIjogIi0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tXG5NRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVXUmlHcjUraiszSjVTc0grWnRyNW5FMkgyd083XG5CVituTzNzOTNnTGNhMThxVE96SFkxb1d5QUdEeWtNU3NHVFVCU3Q5RCtBbjBLZktzRDJtZlNNNDJRPT1cbi0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLVxuIgogICAgfSwKICAgICJzY2hlbWUiOiAiZWNkc2Etc2hhMi1uaXN0cDI1NiIsCiAgICAieC10dWYtb24tY2ktb25saW5lLXVyaSI6ICJnY3BrbXM6Ly9wcm9qZWN0cy9zaWdzdG9yZS1yb290LXNpZ25pbmcvbG9jYXRpb25zL2dsb2JhbC9rZXlSaW5ncy9yb290L2NyeXB0b0tleXMvdGltZXN0YW1wIgogICB9LAogICAiYTY4N2U1YmY0ZmFiODJiMGVlNThkNDZlMDVjOTUzNTE0NWEyYzlhZmI0NThmNDNkNDJiNDVjYTBmZGNlMmE3MCI6IHsKICAgICJrZXlpZF9oYXNoX2FsZ29yaXRobXMiOiBbCiAgICAgInNoYTI1NiIsCiAgICAgInNoYTUxMiIKICAgIF0sCiAgICAia2V5dHlwZSI6ICJlY2RzYSIsCiAgICAia2V5dmFsIjogewogICAgICJwdWJsaWMiOiAiLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cbk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRTBnaHJoOTJMdzFZcjNpZEdWNVdxQ3RNREI4Q3hcbitEOGhkQzR3MlpMTklwbFZSb1ZHTHNrWWEzZ2hlTXlPamlKOGtQaTE1YVEyLy83UCtvajdVdkpQR3c9PVxuLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tXG4iCiAgICB9LAogICAgInNjaGVtZSI6ICJlY2RzYS1zaGEyLW5pc3RwMjU2IiwKICAgICJ4LXR1Zi1vbi1jaS1rZXlvd25lciI6ICJAam9zaHVhZ2wiCiAgIH0sCiAgICJlNzFhNTRkNTQzODM1YmE4NmFkYWQ5NDYwMzc5Yzc2NDFmYjg3MjZkMTY0ZWE3NjY4MDFhMWM1MjJhYmE3ZWEyIjogewogICAgImtleWlkX2hhc2hfYWxnb3JpdGhtcyI6IFsKICAgICAic2hhMjU2IiwKICAgICAic2hhNTEyIgogICAgXSwKICAgICJrZXl0eXBlIjogImVjZHNhIiwKICAgICJrZXl2YWwiOiB7CiAgICAgInB1YmxpYyI6ICItLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLVxuTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFRVhzejNTWlhGYjhqTVY0Mmo2cEpseWpialI4S1xuTjNCd29jZXhxNkxNSWI1cXNXS09RdkxOMTZOVWVmTGM0SHN3T291bVJzVlZhYWpTcFFTNmZvYmtSdz09XG4tLS0tLUVORCBQVUJMSUMgS0VZLS0tLS1cbiIKICAgIH0sCiAgICAic2NoZW1lIjogImVjZHNhLXNoYTItbmlzdHAyNTYiLAogICAgIngtdHVmLW9uLWNpLWtleW93bmVyIjogIkBtbm02NzgiCiAgIH0KICB9LAogICJyb2xlcyI6IHsKICAgInJvb3QiOiB7CiAgICAia2V5aWRzIjogWwogICAgICI2ZjI2MDA4OWQ1OTIzZGFmMjAxNjZjYTY1N2M1NDNhZjYxODM0NmFiOTcxODg0YTk5OTYyYjAxOTg4YmJlMGMzIiwKICAgICAiZTcxYTU0ZDU0MzgzNWJhODZhZGFkOTQ2MDM3OWM3NjQxZmI4NzI2ZDE2NGVhNzY2ODAxYTFjNTIyYWJhN2VhMiIsCiAgICAgIjIyZjRjYWVjNmQ4ZTZmOTU1NWFmNjZiM2Q0YzNjYjA2YTNiYjIzZmRjN2UzOWM5MTZjNjFmNDYyZTZmNTJiMDYiLAogICAgICI2MTY0MzgzODEyNWI0NDBiNDBkYjY5NDJmNWNiNWEzMWMwZGMwNDM2ODMxNmViMmFhYTU4Yjk1OTA0YTU4MjIyIiwKICAgICAiYTY4N2U1YmY0ZmFiODJiMGVlNThkNDZlMDVjOTUzNTE0NWEyYzlhZmI0NThmNDNkNDJiNDVjYTBmZGNlMmE3MCIKICAgIF0sCiAgICAidGhyZXNob2xkIjogMwogICB9LAogICAic25hcHNob3QiOiB7CiAgICAia2V5aWRzIjogWwogICAgICI3MjQ3ZjBkYmFkODViMTQ3ZTE4NjNiYWRlNzYxMjQzY2M3ODVkY2I3YWE0MTBlNzEwNWRkM2QyYjYxYTM2ZDJjIgogICAgXSwKICAgICJ0aHJlc2hvbGQiOiAxLAogICAgIngtdHVmLW9uLWNpLWV4cGlyeS1wZXJpb2QiOiAzNjUwLAogICAgIngtdHVmLW9uLWNpLXNpZ25pbmctcGVyaW9kIjogMzY1CiAgIH0sCiAgICJ0YXJnZXRzIjogewogICAgImtleWlkcyI6IFsKICAgICAiNmYyNjAwODlkNTkyM2RhZjIwMTY2Y2E2NTdjNTQzYWY2MTgzNDZhYjk3MTg4NGE5OTk2MmIwMTk4OGJiZTBjMyIsCiAgICAgImU3MWE1NGQ1NDM4MzViYTg2YWRhZDk0NjAzNzljNzY0MWZiODcyNmQxNjRlYTc2NjgwMWExYzUyMmFiYTdlYTIiLAogICAgICIyMmY0Y2FlYzZkOGU2Zjk1NTVhZjY2YjNkNGMzY2IwNmEzYmIyM2ZkYzdlMzljOTE2YzYxZjQ2MmU2ZjUyYjA2IiwKICAgICAiNjE2NDM4MzgxMjViNDQwYjQwZGI2OTQyZjVjYjVhMzFjMGRjMDQzNjgzMTZlYjJhYWE1OGI5NTkwNGE1ODIyMiIsCiAgICAgImE2ODdlNWJmNGZhYjgyYjBlZTU4ZDQ2ZTA1Yzk1MzUxNDVhMmM5YWZiNDU4ZjQzZDQyYjQ1Y2EwZmRjZTJhNzAiCiAgICBdLAogICAgInRocmVzaG9sZCI6IDMKICAgfSwKICAgInRpbWVzdGFtcCI6IHsKICAgICJrZXlpZHMiOiBbCiAgICAgIjcyNDdmMGRiYWQ4NWIxNDdlMTg2M2JhZGU3NjEyNDNjYzc4NWRjYjdhYTQxMGU3MTA1ZGQzZDJiNjFhMzZkMmMiCiAgICBdLAogICAgInRocmVzaG9sZCI6IDEsCiAgICAieC10dWYtb24tY2ktZXhwaXJ5LXBlcmlvZCI6IDcsCiAgICAieC10dWYtb24tY2ktc2lnbmluZy1wZXJpb2QiOiA0CiAgIH0KICB9LAogICJzcGVjX3ZlcnNpb24iOiAiMS4wIiwKICAidmVyc2lvbiI6IDEwLAogICJ4LXR1Zi1vbi1jaS1leHBpcnktcGVyaW9kIjogMTgyLAogICJ4LXR1Zi1vbi1jaS1zaWduaW5nLXBlcmlvZCI6IDMxCiB9Cn0=",targets:{"trusted_root.json":"ewogICJtZWRpYVR5cGUiOiAiYXBwbGljYXRpb24vdm5kLmRldi5zaWdzdG9yZS50cnVzdGVkcm9vdCtqc29uO3ZlcnNpb249MC4xIiwKICAidGxvZ3MiOiBbCiAgICB7CiAgICAgICJiYXNlVXJsIjogImh0dHBzOi8vcmVrb3Iuc2lnc3RvcmUuZGV2IiwKICAgICAgImhhc2hBbGdvcml0aG0iOiAiU0hBMl8yNTYiLAogICAgICAicHVibGljS2V5IjogewogICAgICAgICJyYXdCeXRlcyI6ICJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUyRzJZKzJ0YWJkVFY1QmNHaUJJeDBhOWZBRndya0JibUxTR3RrczRMM3FYNnlZWTB6dWZCbmhDOFVyL2l5NTVHaFdQLzlBL2JZMkxoQzMwTTkrUll0dz09IiwKICAgICAgICAia2V5RGV0YWlscyI6ICJQS0lYX0VDRFNBX1AyNTZfU0hBXzI1NiIsCiAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgInN0YXJ0IjogIjIwMjEtMDEtMTJUMTE6NTM6MjcuMDAwWiIKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJsb2dJZCI6IHsKICAgICAgICAia2V5SWQiOiAid05JOWF0UUdseitWV2ZPNkxSeWdINFFVZlkvOFc0UkZ3aVQ1aTVXUmdCMD0iCiAgICAgIH0KICAgIH0KICBdLAogICJjZXJ0aWZpY2F0ZUF1dGhvcml0aWVzIjogWwogICAgewogICAgICAic3ViamVjdCI6IHsKICAgICAgICAib3JnYW5pemF0aW9uIjogInNpZ3N0b3JlLmRldiIsCiAgICAgICAgImNvbW1vbk5hbWUiOiAic2lnc3RvcmUiCiAgICAgIH0sCiAgICAgICJ1cmkiOiAiaHR0cHM6Ly9mdWxjaW8uc2lnc3RvcmUuZGV2IiwKICAgICAgImNlcnRDaGFpbiI6IHsKICAgICAgICAiY2VydGlmaWNhdGVzIjogWwogICAgICAgICAgewogICAgICAgICAgICAicmF3Qnl0ZXMiOiAiTUlJQitEQ0NBWDZnQXdJQkFnSVROVmtEWm9DaW9mUERzeTdkZm02Z2VMYnVoekFLQmdncWhrak9QUVFEQXpBcU1SVXdFd1lEVlFRS0V3eHphV2R6ZEc5eVpTNWtaWFl4RVRBUEJnTlZCQU1UQ0hOcFozTjBiM0psTUI0WERUSXhNRE13TnpBek1qQXlPVm9YRFRNeE1ESXlNekF6TWpBeU9Wb3dLakVWTUJNR0ExVUVDaE1NYzJsbmMzUnZjbVV1WkdWMk1SRXdEd1lEVlFRREV3aHphV2R6ZEc5eVpUQjJNQkFHQnlxR1NNNDlBZ0VHQlN1QkJBQWlBMklBQkxTeUE3SWk1aytwTk84WkVXWTB5bGVtV0Rvd09rTmEza0wrR1pFNVo1R1dlaEw5L0E5YlJOQTNSYnJzWjVpMEpjYXN0YVJMN1NwNWZwL2pENWR4cWMvVWRUVm5sdlMxNmFuKzJZZnN3ZS9RdUxvbFJVQ3JjT0UyKzJpQTUrdHpkNk5tTUdRd0RnWURWUjBQQVFIL0JBUURBZ0VHTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFFd0hRWURWUjBPQkJZRUZNakZIUUJCbWlRcE1sRWs2dzJ1U3UxS0J0UHNNQjhHQTFVZEl3UVlNQmFBRk1qRkhRQkJtaVFwTWxFazZ3MnVTdTFLQnRQc01Bb0dDQ3FHU000OUJBTURBMmdBTUdVQ01IOGxpV0pmTXVpNnZYWEJoakRnWTRNd3NsbU4vVEp4VmUvODNXckZvbXdtTmYwNTZ5MVg0OEY5YzRtM2Ezb3pYQUl4QUtqUmF5NS9hai9qc0tLR0lrbVFhdGpJOHV1cEhyLytDeEZ2YUpXbXBZcU5rTERHUlUrOW9yemg1aEkyUnJjdWFRPT0iCiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICAidmFsaWRGb3IiOiB7CiAgICAgICAgInN0YXJ0IjogIjIwMjEtMDMtMDdUMDM6MjA6MjkuMDAwWiIsCiAgICAgICAgImVuZCI6ICIyMDIyLTEyLTMxVDIzOjU5OjU5Ljk5OVoiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJzdWJqZWN0IjogewogICAgICAgICJvcmdhbml6YXRpb24iOiAic2lnc3RvcmUuZGV2IiwKICAgICAgICAiY29tbW9uTmFtZSI6ICJzaWdzdG9yZSIKICAgICAgfSwKICAgICAgInVyaSI6ICJodHRwczovL2Z1bGNpby5zaWdzdG9yZS5kZXYiLAogICAgICAiY2VydENoYWluIjogewogICAgICAgICJjZXJ0aWZpY2F0ZXMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJyYXdCeXRlcyI6ICJNSUlDR2pDQ0FhR2dBd0lCQWdJVUFMblZpVmZuVTBickphc21Sa0hybi9VbmZhUXdDZ1lJS29aSXpqMEVBd013S2pFVk1CTUdBMVVFQ2hNTWMybG5jM1J2Y21VdVpHVjJNUkV3RHdZRFZRUURFd2h6YVdkemRHOXlaVEFlRncweU1qQTBNVE15TURBMk1UVmFGdzB6TVRFd01EVXhNelUyTlRoYU1EY3hGVEFUQmdOVkJBb1RESE5wWjNOMGIzSmxMbVJsZGpFZU1Cd0dBMVVFQXhNVmMybG5jM1J2Y21VdGFXNTBaWEp0WldScFlYUmxNSFl3RUFZSEtvWkl6ajBDQVFZRks0RUVBQ0lEWWdBRThSVlMveXNIK05PdnVEWnlQSVp0aWxnVUY5TmxhcllwQWQ5SFAxdkJCSDFVNUNWNzdMU1M3czBaaUg0bkU3SHY3cHRTNkx2dlIvU1RrNzk4TFZnTXpMbEo0SGVJZkYzdEhTYWV4TGNZcFNBU3Ixa1MwTi9SZ0JKei85aldDaVhubzNzd2VUQU9CZ05WSFE4QkFmOEVCQU1DQVFZd0V3WURWUjBsQkF3d0NnWUlLd1lCQlFVSEF3TXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFkQmdOVkhRNEVGZ1FVMzlQcHoxWWtFWmI1cU5qcEtGV2l4aTRZWkQ4d0h3WURWUjBqQkJnd0ZvQVVXTUFlWDVGRnBXYXBlc3lRb1pNaTBDckZ4Zm93Q2dZSUtvWkl6ajBFQXdNRFp3QXdaQUl3UENzUUs0RFlpWllEUElhRGk1SEZLbmZ4WHg2QVNTVm1FUmZzeW5ZQmlYMlg2U0pSblpVODQvOURaZG5GdnZ4bUFqQk90NlFwQmxjNEovMER4dmtUQ3FwY2x2emlMNkJDQ1BuamRsSUIzUHUzQnhzUG15Z1VZN0lpMnpiZENkbGlpb3c9IgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInJhd0J5dGVzIjogIk1JSUI5ekNDQVh5Z0F3SUJBZ0lVQUxaTkFQRmR4SFB3amVEbG9Ed3lZQ2hBTy80d0NnWUlLb1pJemowRUF3TXdLakVWTUJNR0ExVUVDaE1NYzJsbmMzUnZjbVV1WkdWMk1SRXdEd1lEVlFRREV3aHphV2R6ZEc5eVpUQWVGdzB5TVRFd01EY3hNelUyTlRsYUZ3MHpNVEV3TURVeE16VTJOVGhhTUNveEZUQVRCZ05WQkFvVERITnBaM04wYjNKbExtUmxkakVSTUE4R0ExVUVBeE1JYzJsbmMzUnZjbVV3ZGpBUUJnY3Foa2pPUFFJQkJnVXJnUVFBSWdOaUFBVDdYZUZUNHJiM1BRR3dTNElhanRMazMvT2xucGdhbmdhQmNsWXBzWUJyNWkrNHluQjA3Y2ViM0xQME9JT1pkeGV4WDY5YzVpVnV5SlJRK0h6MDV5aStVRjN1QldBbEhwaVM1c2gwK0gyR0hFN1NYcmsxRUM1bTFUcjE5TDlnZzkyall6QmhNQTRHQTFVZER3RUIvd1FFQXdJQkJqQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRV0JCUll3QjVma1VXbFpxbDZ6SkNoa3lMUUtzWEYrakFmQmdOVkhTTUVHREFXZ0JSWXdCNWZrVVdsWnFsNnpKQ2hreUxRS3NYRitqQUtCZ2dxaGtqT1BRUURBd05wQURCbUFqRUFqMW5IZVhacCsxM05XQk5hK0VEc0RQOEcxV1dnMXRDTVdQL1dIUHFwYVZvMGpoc3dlTkZaZ1NzMGVFN3dZSTRxQWpFQTJXQjlvdDk4c0lrb0YzdlpZZGQzL1Z0V0I1YjlUTk1lYTdJeC9zdEo1VGZjTExlQUJMRTRCTkpPc1E0dm5CSEoiCiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICAidmFsaWRGb3IiOiB7CiAgICAgICAgInN0YXJ0IjogIjIwMjItMDQtMTNUMjA6MDY6MTUuMDAwWiIKICAgICAgfQogICAgfQogIF0sCiAgImN0bG9ncyI6IFsKICAgIHsKICAgICAgImJhc2VVcmwiOiAiaHR0cHM6Ly9jdGZlLnNpZ3N0b3JlLmRldi90ZXN0IiwKICAgICAgImhhc2hBbGdvcml0aG0iOiAiU0hBMl8yNTYiLAogICAgICAicHVibGljS2V5IjogewogICAgICAgICJyYXdCeXRlcyI6ICJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUViZndSK1JKdWRYc2NnUkJScEtYMVhGRHkzUHl1ZER4ei9TZm5SaTFmVDhla3BmQmQyTzF1b3o3anIzWjhuS3p4QTY5RVVRK2VGQ0ZJM3pldWJQV1U3dz09IiwKICAgICAgICAia2V5RGV0YWlscyI6ICJQS0lYX0VDRFNBX1AyNTZfU0hBXzI1NiIsCiAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgInN0YXJ0IjogIjIwMjEtMDMtMTRUMDA6MDA6MDAuMDAwWiIsCiAgICAgICAgICAiZW5kIjogIjIwMjItMTAtMzFUMjM6NTk6NTkuOTk5WiIKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJsb2dJZCI6IHsKICAgICAgICAia2V5SWQiOiAiQ0dDUzhDaFMvMmhGMGRGcko0U2NSV2NZckJZOXd6alNiZWE4SWdZMmIzST0iCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJiYXNlVXJsIjogImh0dHBzOi8vY3RmZS5zaWdzdG9yZS5kZXYvMjAyMiIsCiAgICAgICJoYXNoQWxnb3JpdGhtIjogIlNIQTJfMjU2IiwKICAgICAgInB1YmxpY0tleSI6IHsKICAgICAgICAicmF3Qnl0ZXMiOiAiTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFaVBTbEZpMENtRlRmRWpDVXFGOUh1Q0VjWVhOS0FhWWFsSUptQlo4eXllelBqVHFoeHJLQnBNbmFvY1Z0TEpCSTFlTTN1WG5RelFHQUpkSjRnczlGeXc9PSIsCiAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICJ2YWxpZEZvciI6IHsKICAgICAgICAgICJzdGFydCI6ICIyMDIyLTEwLTIwVDAwOjAwOjAwLjAwMFoiCiAgICAgICAgfQogICAgICB9LAogICAgICAibG9nSWQiOiB7CiAgICAgICAgImtleUlkIjogIjNUMHdhc2JIRVRKakdSNGNtV2MzQXFKS1hyamVQSzMvaDRweWdDOHA3bzQ9IgogICAgICB9CiAgICB9CiAgXSwKICAidGltZXN0YW1wQXV0aG9yaXRpZXMiOiBbCiAgICB7CiAgICAgICJzdWJqZWN0IjogewogICAgICAgICJvcmdhbml6YXRpb24iOiAiR2l0SHViLCBJbmMuIiwKICAgICAgICAiY29tbW9uTmFtZSI6ICJJbnRlcm5hbCBTZXJ2aWNlcyBSb290IgogICAgICB9LAogICAgICAiY2VydENoYWluIjogewogICAgICAgICJjZXJ0aWZpY2F0ZXMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJyYXdCeXRlcyI6ICJNSUlCM0RDQ0FXS2dBd0lCQWdJVWNoa05zSDM2WGEwNGIxTHFJYytxcjlEVmVjTXdDZ1lJS29aSXpqMEVBd013TWpFVk1CTUdBMVVFQ2hNTVIybDBTSFZpTENCSmJtTXVNUmt3RndZRFZRUURFeEJVVTBFZ2FXNTBaWEp0WldScFlYUmxNQjRYRFRJek1EUXhOREF3TURBd01Gb1hEVEkwTURReE16QXdNREF3TUZvd01qRVZNQk1HQTFVRUNoTU1SMmwwU0hWaUxDQkpibU11TVJrd0Z3WURWUVFERXhCVVUwRWdWR2x0WlhOMFlXMXdhVzVuTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFVUQ1Wk5iU3FZTWQ2cjhxcE9PRVg5aWJHblpUOUdzdVhPaHIvZjhVOUZKdWdCR0V4S1lwNDBPVUxTMGVyalpXN3hWOXhWNTJObkpmNU9lRHE0ZTVaS3FOV01GUXdEZ1lEVlIwUEFRSC9CQVFEQWdlQU1CTUdBMVVkSlFRTU1Bb0dDQ3NHQVFVRkJ3TUlNQXdHQTFVZEV3RUIvd1FDTUFBd0h3WURWUjBqQkJnd0ZvQVVhVzFSdWRPZ1Z0MGxlcVkwV0tZYnVQcjQ3d0F3Q2dZSUtvWkl6ajBFQXdNRGFBQXdaUUl3YlVIOUh2RDRlakNaSk9XUW5xQWxrcVVSbGx2dTlNOCtWcUxiaVJLK3pTZlpDWndzaWxqUm44TVFRUlNrWEVFNUFqRUFnK1Z4cXRvamZWZnU4RGh6emhDeDlHS0VUYkpIYjE5aVY3Mm1NS1ViREFGbXpaNmJROGI1NFpiOHRpZHk1YVdlIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInJhd0J5dGVzIjogIk1JSUNFRENDQVpXZ0F3SUJBZ0lVWDhaTzVRWFA3dk40ZE1RNWU5c1UzbnViOE9nd0NnWUlLb1pJemowRUF3TXdPREVWTUJNR0ExVUVDaE1NUjJsMFNIVmlMQ0JKYm1NdU1SOHdIUVlEVlFRREV4WkpiblJsY201aGJDQlRaWEoyYVdObGN5QlNiMjkwTUI0WERUSXpNRFF4TkRBd01EQXdNRm9YRFRJNE1EUXhNakF3TURBd01Gb3dNakVWTUJNR0ExVUVDaE1NUjJsMFNIVmlMQ0JKYm1NdU1Sa3dGd1lEVlFRREV4QlVVMEVnYVc1MFpYSnRaV1JwWVhSbE1IWXdFQVlIS29aSXpqMENBUVlGSzRFRUFDSURZZ0FFdk1MWS9kVFZidklKWUFOQXVzekV3Sm5RRTFsbGZ0eW55TUtJTWhoNDhIbXFiVnI1eWd5YnpzTFJMVktiQldPZFoyMWFlSnorZ1ppeXRaZXRxY3lGOVdsRVI1TkVNZjZKVjdaTm9qUXB4SHE0UkhHb0dTY2VRdi9xdlRpWnhFREtvMll3WkRBT0JnTlZIUThCQWY4RUJBTUNBUVl3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBZEJnTlZIUTRFRmdRVWFXMVJ1ZE9nVnQwbGVxWTBXS1lidVByNDd3QXdId1lEVlIwakJCZ3dGb0FVOU5ZWWxvYm5BRzRjMC9xanh5SC9scS93eitRd0NnWUlLb1pJemowRUF3TURhUUF3WmdJeEFLMUIxODV5Z0NySVlGbElzM0dqc3dqbndTTUc2TFk4d29MVmRha0tEWnhWYThmOGNxTXMxRGhjeEowKzA5dzk1UUl4QU8rdEJ6Wms3dmpVSjlpSmdENFI2WldUeFFXS3FObTc0ak85OW8rbzlzdjRGSS9TWlRaVEZ5TW4wSUpFSGRObXlBPT0iCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAicmF3Qnl0ZXMiOiAiTUlJQjlEQ0NBWHFnQXdJQkFnSVVhL0pBa2RVaks0SlV3c3F0YWlSSkdXaHFMU293Q2dZSUtvWkl6ajBFQXdNd09ERVZNQk1HQTFVRUNoTU1SMmwwU0hWaUxDQkpibU11TVI4d0hRWURWUVFERXhaSmJuUmxjbTVoYkNCVFpYSjJhV05sY3lCU2IyOTBNQjRYRFRJek1EUXhOREF3TURBd01Gb1hEVE16TURReE1UQXdNREF3TUZvd09ERVZNQk1HQTFVRUNoTU1SMmwwU0hWaUxDQkpibU11TVI4d0hRWURWUVFERXhaSmJuUmxjbTVoYkNCVFpYSjJhV05sY3lCU2IyOTBNSFl3RUFZSEtvWkl6ajBDQVFZRks0RUVBQ0lEWWdBRWY5akZBWHh6NGt4NjhBSFJNT2tGQmhmbERjTVR2emFYejR4L0ZDY1hqSi8xcUVLb24vcVBJR25hVVJza0R0eU5iTkRPcGVKVERERnF0NDhpTVBybnpweDZJWndxZW1mVUpONHhCRVpmemErcFl0L2l5b2QrOXRacjIwUlJXU3YvbzBVd1F6QU9CZ05WSFE4QkFmOEVCQU1DQVFZd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFqQWRCZ05WSFE0RUZnUVU5TllZbG9ibkFHNGMwL3FqeHlIL2xxL3d6K1F3Q2dZSUtvWkl6ajBFQXdNRGFBQXdaUUl4QUxaTFo4QmdSWHpLeExNTU45VklsTytlNGhyQm5OQmdGN3R6N0hucm93djJOZXRaRXJJQUNLRnltQmx2V0R2dE1BSXdaTytraTZzc1ExYnNabzk4TzhtRUFmMk5aN2lpQ2dERFUwVndqZWNvNnp5ZWgwekJUczkvN2dWNkFITlE1M3hEIgogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfSwKICAgICAgInZhbGlkRm9yIjogewogICAgICAgICJzdGFydCI6ICIyMDIzLTA0LTE0VDAwOjAwOjAwLjAwMFoiCiAgICAgIH0KICAgIH0KICBdCn0K","registry.npmjs.org%2Fkeys.json":"ewogICAgImtleXMiOiBbCiAgICAgICAgewogICAgICAgICAgICAia2V5SWQiOiAiU0hBMjU2OmpsM2J3c3d1ODBQampva0NnaDBvMnc1YzJVNExoUUFFNTdnajljejFrekEiLAogICAgICAgICAgICAia2V5VXNhZ2UiOiAibnBtOnNpZ25hdHVyZXMiLAogICAgICAgICAgICAicHVibGljS2V5IjogewogICAgICAgICAgICAgICAgInJhd0J5dGVzIjogIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRTFPbGIzek1BRkZ4WEtIaUlrUU81Y0ozWWhsNWk2VVBwK0lodXRlQkpidUhjQTVVb2dLbzBFV3RsV3dXNktTYUtvVE5FWUw3SmxDUWlWbmtoQmt0VWdnPT0iLAogICAgICAgICAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgICAgICAgICAgICJzdGFydCI6ICIxOTk5LTAxLTAxVDAwOjAwOjAwLjAwMFoiLAogICAgICAgICAgICAgICAgICAgICJlbmQiOiAiMjAyNS0wMS0yOVQwMDowMDowMC4wMDBaIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJrZXlJZCI6ICJTSEEyNTY6amwzYndzd3U4MFBqam9rQ2doMG8ydzVjMlU0TGhRQUU1N2dqOWN6MWt6QSIsCiAgICAgICAgICAgICJrZXlVc2FnZSI6ICJucG06YXR0ZXN0YXRpb25zIiwKICAgICAgICAgICAgInB1YmxpY0tleSI6IHsKICAgICAgICAgICAgICAgICJyYXdCeXRlcyI6ICJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUxT2xiM3pNQUZGeFhLSGlJa1FPNWNKM1lobDVpNlVQcCtJaHV0ZUJKYnVIY0E1VW9nS28wRVd0bFd3VzZLU2FLb1RORVlMN0psQ1FpVm5raEJrdFVnZz09IiwKICAgICAgICAgICAgICAgICJrZXlEZXRhaWxzIjogIlBLSVhfRUNEU0FfUDI1Nl9TSEFfMjU2IiwKICAgICAgICAgICAgICAgICJ2YWxpZEZvciI6IHsKICAgICAgICAgICAgICAgICAgICAic3RhcnQiOiAiMjAyMi0xMi0wMVQwMDowMDowMC4wMDBaIiwKICAgICAgICAgICAgICAgICAgICAiZW5kIjogIjIwMjUtMDEtMjlUMDA6MDA6MDAuMDAwWiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAia2V5SWQiOiAiU0hBMjU2OkRoUTh3UjVBUEJ2RkhMRi8rVGMrQVl2UE9kVHBjSURxT2h4c0JIUndDN1UiLAogICAgICAgICAgICAia2V5VXNhZ2UiOiAibnBtOnNpZ25hdHVyZXMiLAogICAgICAgICAgICAicHVibGljS2V5IjogewogICAgICAgICAgICAgICAgInJhd0J5dGVzIjogIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVk2WWE3VysrN2FVUHp2TVRyZXpINlljeDNjK0hPS1lDY05HeWJKWlNDSnEvZmQ3UWE4dXVBS3RkSWtVUXRRaUVLRVJoQW1FNWxNTUpoUDhPa0RPYTJnPT0iLAogICAgICAgICAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgICAgICAgICAgICJzdGFydCI6ICIyMDI1LTAxLTEzVDAwOjAwOjAwLjAwMFoiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgImtleUlkIjogIlNIQTI1NjpEaFE4d1I1QVBCdkZITEYvK1RjK0FZdlBPZFRwY0lEcU9oeHNCSFJ3QzdVIiwKICAgICAgICAgICAgImtleVVzYWdlIjogIm5wbTphdHRlc3RhdGlvbnMiLAogICAgICAgICAgICAicHVibGljS2V5IjogewogICAgICAgICAgICAgICAgInJhd0J5dGVzIjogIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVk2WWE3VysrN2FVUHp2TVRyZXpINlljeDNjK0hPS1lDY05HeWJKWlNDSnEvZmQ3UWE4dXVBS3RkSWtVUXRRaUVLRVJoQW1FNWxNTUpoUDhPa0RPYTJnPT0iLAogICAgICAgICAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgICAgICAgICAgICJzdGFydCI6ICIyMDI1LTAxLTEzVDAwOjAwOjAwLjAwMFoiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICBdCn0K"}}}});var qDe=G(u1=>{"use strict";var GDe=u1&&u1.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(u1,"__esModule",{value:!0});u1.TUFClient=void 0;var kd=GDe(Ie("fs")),qb=GDe(Ie("path")),h2t=_De(),d2t=ZO(),g2t=HDe(),EJ="targets",yJ=class{constructor(t){let r=new URL(t.mirrorURL),s=encodeURIComponent(r.host+r.pathname.replace(/\/$/,"")),a=qb.default.join(t.cachePath,s);m2t(a),y2t({cachePath:a,mirrorURL:t.mirrorURL,tufRootPath:t.rootPath,forceInit:t.forceInit}),this.updater=E2t({mirrorURL:t.mirrorURL,cachePath:a,forceCache:t.forceCache,retry:t.retry,timeout:t.timeout})}async refresh(){return this.updater.refresh()}getTarget(t){return(0,g2t.readTarget)(this.updater,t)}};u1.TUFClient=yJ;function m2t(e){let t=qb.default.join(e,EJ);kd.default.existsSync(e)||kd.default.mkdirSync(e,{recursive:!0}),kd.default.existsSync(t)||kd.default.mkdirSync(t)}function y2t({cachePath:e,mirrorURL:t,tufRootPath:r,forceInit:s}){let a=qb.default.join(e,"root.json");if(!kd.default.existsSync(a)||s)if(r)kd.default.copyFileSync(r,a);else{let c=jDe()[t];if(!c)throw new d2t.TUFError({code:"TUF_INIT_CACHE_ERROR",message:`No root.json found for mirror: ${t}`});kd.default.writeFileSync(a,Buffer.from(c["root.json"],"base64")),Object.entries(c.targets).forEach(([f,p])=>{kd.default.writeFileSync(qb.default.join(e,EJ,f),Buffer.from(p,"base64"))})}}function E2t(e){let t={fetchTimeout:e.timeout,fetchRetry:e.retry};return new h2t.Updater({metadataBaseUrl:e.mirrorURL,targetBaseUrl:`${e.mirrorURL}/targets`,metadataDir:e.cachePath,targetDir:qb.default.join(e.cachePath,EJ),forceCache:e.forceCache,config:t})}});var ZO=G(hh=>{"use strict";Object.defineProperty(hh,"__esModule",{value:!0});hh.TUFError=hh.DEFAULT_MIRROR_URL=void 0;hh.getTrustedRoot=b2t;hh.initTUF=P2t;var I2t=yb(),C2t=BSe(),w2t=qDe();hh.DEFAULT_MIRROR_URL="https://tuf-repo-cdn.sigstore.dev";var B2t="sigstore-js",v2t={retries:2},S2t=5e3,D2t="trusted_root.json";async function b2t(e={}){let r=await WDe(e).getTarget(D2t);return I2t.TrustedRoot.fromJSON(JSON.parse(r))}async function P2t(e={}){let t=WDe(e);return t.refresh().then(()=>t)}function WDe(e){return new w2t.TUFClient({cachePath:e.cachePath||(0,C2t.appDataPath)(B2t),rootPath:e.rootPath,mirrorURL:e.mirrorURL||hh.DEFAULT_MIRROR_URL,retry:e.retry??v2t,timeout:e.timeout??S2t,forceCache:e.forceCache??!1,forceInit:e.forceInit??e.force??!1})}var x2t=mJ();Object.defineProperty(hh,"TUFError",{enumerable:!0,get:function(){return x2t.TUFError}})});var YDe=G($O=>{"use strict";Object.defineProperty($O,"__esModule",{value:!0});$O.DSSESignatureContent=void 0;var Wb=Pl(),IJ=class{constructor(t){this.env=t}compareDigest(t){return Wb.crypto.bufferEqual(t,Wb.crypto.digest("sha256",this.env.payload))}compareSignature(t){return Wb.crypto.bufferEqual(t,this.signature)}verifySignature(t){return Wb.crypto.verify(this.preAuthEncoding,t,this.signature)}get signature(){return this.env.signatures.length>0?this.env.signatures[0].sig:Buffer.from("")}get preAuthEncoding(){return Wb.dsse.preAuthEncoding(this.env.payloadType,this.env.payload)}};$O.DSSESignatureContent=IJ});var VDe=G(eL=>{"use strict";Object.defineProperty(eL,"__esModule",{value:!0});eL.MessageSignatureContent=void 0;var CJ=Pl(),wJ=class{constructor(t,r){this.signature=t.signature,this.messageDigest=t.messageDigest.digest,this.artifact=r}compareSignature(t){return CJ.crypto.bufferEqual(t,this.signature)}compareDigest(t){return CJ.crypto.bufferEqual(t,this.messageDigest)}verifySignature(t){return CJ.crypto.verify(this.artifact,t,this.signature)}};eL.MessageSignatureContent=wJ});var KDe=G(tL=>{"use strict";Object.defineProperty(tL,"__esModule",{value:!0});tL.toSignedEntity=R2t;tL.signatureContent=JDe;var BJ=Pl(),k2t=YDe(),Q2t=VDe();function R2t(e,t){let{tlogEntries:r,timestampVerificationData:s}=e.verificationMaterial,a=[];for(let n of r)a.push({$case:"transparency-log",tlogEntry:n});for(let n of s?.rfc3161Timestamps??[])a.push({$case:"timestamp-authority",timestamp:BJ.RFC3161Timestamp.parse(n.signedTimestamp)});return{signature:JDe(e,t),key:T2t(e),tlogEntries:r,timestamps:a}}function JDe(e,t){switch(e.content.$case){case"dsseEnvelope":return new k2t.DSSESignatureContent(e.content.dsseEnvelope);case"messageSignature":return new Q2t.MessageSignatureContent(e.content.messageSignature,t)}}function T2t(e){switch(e.verificationMaterial.content.$case){case"publicKey":return{$case:"public-key",hint:e.verificationMaterial.content.publicKey.hint};case"x509CertificateChain":return{$case:"certificate",certificate:BJ.X509Certificate.parse(e.verificationMaterial.content.x509CertificateChain.certificates[0].rawBytes)};case"certificate":return{$case:"certificate",certificate:BJ.X509Certificate.parse(e.verificationMaterial.content.certificate.rawBytes)}}}});var So=G(f1=>{"use strict";Object.defineProperty(f1,"__esModule",{value:!0});f1.PolicyError=f1.VerificationError=void 0;var rL=class extends Error{constructor({code:t,message:r,cause:s}){super(r),this.code=t,this.cause=s,this.name=this.constructor.name}},vJ=class extends rL{};f1.VerificationError=vJ;var SJ=class extends rL{};f1.PolicyError=SJ});var zDe=G(nL=>{"use strict";Object.defineProperty(nL,"__esModule",{value:!0});nL.filterCertAuthorities=F2t;nL.filterTLogAuthorities=N2t;function F2t(e,t){return e.filter(r=>r.validFor.start<=t.start&&r.validFor.end>=t.end)}function N2t(e,t){return e.filter(r=>t.logID&&!r.logID.equals(t.logID)?!1:r.validFor.start<=t.targetDate&&t.targetDate<=r.validFor.end)}});var gy=G(dy=>{"use strict";Object.defineProperty(dy,"__esModule",{value:!0});dy.filterTLogAuthorities=dy.filterCertAuthorities=void 0;dy.toTrustMaterial=L2t;var DJ=Pl(),Yb=yb(),O2t=So(),bJ=new Date(0),PJ=new Date(864e13),$De=zDe();Object.defineProperty(dy,"filterCertAuthorities",{enumerable:!0,get:function(){return $De.filterCertAuthorities}});Object.defineProperty(dy,"filterTLogAuthorities",{enumerable:!0,get:function(){return $De.filterTLogAuthorities}});function L2t(e,t){let r=typeof t=="function"?t:M2t(t);return{certificateAuthorities:e.certificateAuthorities.map(ZDe),timestampAuthorities:e.timestampAuthorities.map(ZDe),tlogs:e.tlogs.map(XDe),ctlogs:e.ctlogs.map(XDe),publicKey:r}}function XDe(e){let t=e.publicKey.keyDetails,r=t===Yb.PublicKeyDetails.PKCS1_RSA_PKCS1V5||t===Yb.PublicKeyDetails.PKIX_RSA_PKCS1V5||t===Yb.PublicKeyDetails.PKIX_RSA_PKCS1V15_2048_SHA256||t===Yb.PublicKeyDetails.PKIX_RSA_PKCS1V15_3072_SHA256||t===Yb.PublicKeyDetails.PKIX_RSA_PKCS1V15_4096_SHA256?"pkcs1":"spki";return{logID:e.logId.keyId,publicKey:DJ.crypto.createPublicKey(e.publicKey.rawBytes,r),validFor:{start:e.publicKey.validFor?.start||bJ,end:e.publicKey.validFor?.end||PJ}}}function ZDe(e){return{certChain:e.certChain.certificates.map(t=>DJ.X509Certificate.parse(t.rawBytes)),validFor:{start:e.validFor?.start||bJ,end:e.validFor?.end||PJ}}}function M2t(e){return t=>{let r=(e||{})[t];if(!r)throw new O2t.VerificationError({code:"PUBLIC_KEY_ERROR",message:`key not found: ${t}`});return{publicKey:DJ.crypto.createPublicKey(r.rawBytes),validFor:s=>(r.validFor?.start||bJ)<=s&&(r.validFor?.end||PJ)>=s}}}});var xJ=G(Vb=>{"use strict";Object.defineProperty(Vb,"__esModule",{value:!0});Vb.CertificateChainVerifier=void 0;Vb.verifyCertificateChain=_2t;var my=So(),U2t=gy();function _2t(e,t){let r=(0,U2t.filterCertAuthorities)(t,{start:e.notBefore,end:e.notAfter}),s;for(let a of r)try{return new iL({trustedCerts:a.certChain,untrustedCert:e}).verify()}catch(n){s=n}throw new my.VerificationError({code:"CERTIFICATE_ERROR",message:"Failed to verify certificate chain",cause:s})}var iL=class{constructor(t){this.untrustedCert=t.untrustedCert,this.trustedCerts=t.trustedCerts,this.localCerts=H2t([...t.trustedCerts,t.untrustedCert])}verify(){let t=this.sort();return this.checkPath(t),t}sort(){let t=this.untrustedCert,r=this.buildPaths(t);if(r=r.filter(a=>a.some(n=>this.trustedCerts.includes(n))),r.length===0)throw new my.VerificationError({code:"CERTIFICATE_ERROR",message:"no trusted certificate path found"});let s=r.reduce((a,n)=>a.length{if(s&&a.extSubjectKeyID){a.extSubjectKeyID.keyIdentifier.equals(s)&&r.push(a);return}a.subject.equals(t.issuer)&&r.push(a)}),r=r.filter(a=>{try{return t.verify(a)}catch{return!1}}),r)}checkPath(t){if(t.length<1)throw new my.VerificationError({code:"CERTIFICATE_ERROR",message:"certificate chain must contain at least one certificate"});if(!t.slice(1).every(s=>s.isCA))throw new my.VerificationError({code:"CERTIFICATE_ERROR",message:"intermediate certificate is not a CA"});for(let s=t.length-2;s>=0;s--)if(!t[s].issuer.equals(t[s+1].subject))throw new my.VerificationError({code:"CERTIFICATE_ERROR",message:"incorrect certificate name chaining"});for(let s=0;s{"use strict";Object.defineProperty(kJ,"__esModule",{value:!0});kJ.verifySCTs=q2t;var sL=Pl(),j2t=So(),G2t=gy();function q2t(e,t,r){let s,a=e.clone();for(let p=0;p{if(!(0,G2t.filterTLogAuthorities)(r,{logID:p.logID,targetDate:p.datetime}).some(C=>p.verify(n.buffer,C.publicKey)))throw new j2t.VerificationError({code:"CERTIFICATE_ERROR",message:"SCT verification failed"});return p.logID})}});var rbe=G(oL=>{"use strict";Object.defineProperty(oL,"__esModule",{value:!0});oL.verifyPublicKey=z2t;oL.verifyCertificate=X2t;var W2t=Pl(),tbe=So(),Y2t=xJ(),V2t=ebe(),J2t="1.3.6.1.4.1.57264.1.1",K2t="1.3.6.1.4.1.57264.1.8";function z2t(e,t,r){let s=r.publicKey(e);return t.forEach(a=>{if(!s.validFor(a))throw new tbe.VerificationError({code:"PUBLIC_KEY_ERROR",message:`Public key is not valid for timestamp: ${a.toISOString()}`})}),{key:s.publicKey}}function X2t(e,t,r){let s=(0,Y2t.verifyCertificateChain)(e,r.certificateAuthorities);if(!t.every(n=>s.every(c=>c.validForDate(n))))throw new tbe.VerificationError({code:"CERTIFICATE_ERROR",message:"certificate is not valid or expired at the specified date"});return{scts:(0,V2t.verifySCTs)(s[0],s[1],r.ctlogs),signer:Z2t(s[0])}}function Z2t(e){let t,r=e.extension(K2t);r?t=r.valueObj.subs?.[0]?.value.toString("ascii"):t=e.extension(J2t)?.value.toString("ascii");let s={extensions:{issuer:t},subjectAlternativeName:e.subjectAltName};return{key:W2t.crypto.createPublicKey(e.publicKey),identity:s}}});var ibe=G(aL=>{"use strict";Object.defineProperty(aL,"__esModule",{value:!0});aL.verifySubjectAlternativeName=$2t;aL.verifyExtensions=eBt;var nbe=So();function $2t(e,t){if(t===void 0||!t.match(e))throw new nbe.PolicyError({code:"UNTRUSTED_SIGNER_ERROR",message:`certificate identity error - expected ${e}, got ${t}`})}function eBt(e,t={}){let r;for(r in e)if(t[r]!==e[r])throw new nbe.PolicyError({code:"UNTRUSTED_SIGNER_ERROR",message:`invalid certificate extension - expected ${r}=${e[r]}, got ${r}=${t[r]}`})}});var sbe=G(NJ=>{"use strict";Object.defineProperty(NJ,"__esModule",{value:!0});NJ.verifyCheckpoint=nBt;var RJ=Pl(),A1=So(),tBt=gy(),QJ=` + +`,rBt=/\u2014 (\S+) (\S+)\n/g;function nBt(e,t){let r=(0,tBt.filterTLogAuthorities)(t,{targetDate:new Date(Number(e.integratedTime)*1e3)}),s=e.inclusionProof,a=TJ.fromString(s.checkpoint.envelope),n=FJ.fromString(a.note);if(!iBt(a,r))throw new A1.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"invalid checkpoint signature"});if(!RJ.crypto.bufferEqual(n.logHash,s.rootHash))throw new A1.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"root hash mismatch"})}function iBt(e,t){let r=Buffer.from(e.note,"utf-8");return e.signatures.every(s=>{let a=t.find(n=>RJ.crypto.bufferEqual(n.logID.subarray(0,4),s.keyHint));return a?RJ.crypto.verify(r,a.publicKey,s.signature):!1})}var TJ=class e{constructor(t,r){this.note=t,this.signatures=r}static fromString(t){if(!t.includes(QJ))throw new A1.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"missing checkpoint separator"});let r=t.indexOf(QJ),s=t.slice(0,r+1),n=t.slice(r+QJ.length).matchAll(rBt),c=Array.from(n,f=>{let[,p,h]=f,E=Buffer.from(h,"base64");if(E.length<5)throw new A1.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"malformed checkpoint signature"});return{name:p,keyHint:E.subarray(0,4),signature:E.subarray(4)}});if(c.length===0)throw new A1.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"no signatures found in checkpoint"});return new e(s,c)}},FJ=class e{constructor(t,r,s,a){this.origin=t,this.logSize=r,this.logHash=s,this.rest=a}static fromString(t){let r=t.trimEnd().split(` +`);if(r.length<3)throw new A1.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"too few lines in checkpoint header"});let s=r[0],a=BigInt(r[1]),n=Buffer.from(r[2],"base64"),c=r.slice(3);return new e(s,a,n,c)}}});var obe=G(UJ=>{"use strict";Object.defineProperty(UJ,"__esModule",{value:!0});UJ.verifyMerkleInclusion=aBt;var MJ=Pl(),OJ=So(),sBt=Buffer.from([0]),oBt=Buffer.from([1]);function aBt(e){let t=e.inclusionProof,r=BigInt(t.logIndex),s=BigInt(t.treeSize);if(r<0n||r>=s)throw new OJ.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:`invalid index: ${r}`});let{inner:a,border:n}=lBt(r,s);if(t.hashes.length!==a+n)throw new OJ.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"invalid hash count"});let c=t.hashes.slice(0,a),f=t.hashes.slice(a),p=hBt(e.canonicalizedBody),h=uBt(cBt(p,c,r),f);if(!MJ.crypto.bufferEqual(h,t.rootHash))throw new OJ.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"calculated root hash does not match inclusion proof"})}function lBt(e,t){let r=fBt(e,t),s=ABt(e>>BigInt(r));return{inner:r,border:s}}function cBt(e,t,r){return t.reduce((s,a,n)=>r>>BigInt(n)&BigInt(1)?LJ(a,s):LJ(s,a),e)}function uBt(e,t){return t.reduce((r,s)=>LJ(s,r),e)}function fBt(e,t){return pBt(e^t-BigInt(1))}function ABt(e){return e.toString(2).split("1").length-1}function pBt(e){return e===0n?0:e.toString(2).length}function LJ(e,t){return MJ.crypto.digest("sha256",oBt,e,t)}function hBt(e){return MJ.crypto.digest("sha256",sBt,e)}});var lbe=G(_J=>{"use strict";Object.defineProperty(_J,"__esModule",{value:!0});_J.verifyTLogSET=mBt;var abe=Pl(),dBt=So(),gBt=gy();function mBt(e,t){if(!(0,gBt.filterTLogAuthorities)(t,{logID:e.logId.keyId,targetDate:new Date(Number(e.integratedTime)*1e3)}).some(a=>{let n=yBt(e),c=Buffer.from(abe.json.canonicalize(n),"utf8"),f=e.inclusionPromise.signedEntryTimestamp;return abe.crypto.verify(c,a.publicKey,f)}))throw new dBt.VerificationError({code:"TLOG_INCLUSION_PROMISE_ERROR",message:"inclusion promise could not be verified"})}function yBt(e){let{integratedTime:t,logIndex:r,logId:s,canonicalizedBody:a}=e;return{body:a.toString("base64"),integratedTime:Number(t),logIndex:Number(r),logID:s.keyId.toString("hex")}}});var cbe=G(GJ=>{"use strict";Object.defineProperty(GJ,"__esModule",{value:!0});GJ.verifyRFC3161Timestamp=CBt;var HJ=Pl(),jJ=So(),EBt=xJ(),IBt=gy();function CBt(e,t,r){let s=e.signingTime;if(r=(0,IBt.filterCertAuthorities)(r,{start:s,end:s}),r=BBt(r,{serialNumber:e.signerSerialNumber,issuer:e.signerIssuer}),!r.some(n=>{try{return wBt(e,t,n),!0}catch{return!1}}))throw new jJ.VerificationError({code:"TIMESTAMP_ERROR",message:"timestamp could not be verified"})}function wBt(e,t,r){let[s,...a]=r.certChain,n=HJ.crypto.createPublicKey(s.publicKey),c=e.signingTime;try{new EBt.CertificateChainVerifier({untrustedCert:s,trustedCerts:a}).verify()}catch{throw new jJ.VerificationError({code:"TIMESTAMP_ERROR",message:"invalid certificate chain"})}if(!r.certChain.every(p=>p.validForDate(c)))throw new jJ.VerificationError({code:"TIMESTAMP_ERROR",message:"timestamp was signed with an expired certificate"});e.verify(t,n)}function BBt(e,t){return e.filter(r=>r.certChain.length>0&&HJ.crypto.bufferEqual(r.certChain[0].serialNumber,t.serialNumber)&&HJ.crypto.bufferEqual(r.certChain[0].issuer,t.issuer))}});var ube=G(lL=>{"use strict";Object.defineProperty(lL,"__esModule",{value:!0});lL.verifyTSATimestamp=xBt;lL.verifyTLogTimestamp=kBt;var vBt=So(),SBt=sbe(),DBt=obe(),bBt=lbe(),PBt=cbe();function xBt(e,t,r){return(0,PBt.verifyRFC3161Timestamp)(e,t,r),{type:"timestamp-authority",logID:e.signerSerialNumber,timestamp:e.signingTime}}function kBt(e,t){let r=!1;if(QBt(e)&&((0,bBt.verifyTLogSET)(e,t),r=!0),RBt(e)&&((0,DBt.verifyMerkleInclusion)(e),(0,SBt.verifyCheckpoint)(e,t),r=!0),!r)throw new vBt.VerificationError({code:"TLOG_MISSING_INCLUSION_ERROR",message:"inclusion could not be verified"});return{type:"transparency-log",logID:e.logId.keyId,timestamp:new Date(Number(e.integratedTime)*1e3)}}function QBt(e){return e.inclusionPromise!==void 0}function RBt(e){return e.inclusionProof!==void 0}});var fbe=G(qJ=>{"use strict";Object.defineProperty(qJ,"__esModule",{value:!0});qJ.verifyDSSETLogBody=TBt;var cL=So();function TBt(e,t){switch(e.apiVersion){case"0.0.1":return FBt(e,t);default:throw new cL.VerificationError({code:"TLOG_BODY_ERROR",message:`unsupported dsse version: ${e.apiVersion}`})}}function FBt(e,t){if(e.spec.signatures?.length!==1)throw new cL.VerificationError({code:"TLOG_BODY_ERROR",message:"signature count mismatch"});let r=e.spec.signatures[0].signature;if(!t.compareSignature(Buffer.from(r,"base64")))throw new cL.VerificationError({code:"TLOG_BODY_ERROR",message:"tlog entry signature mismatch"});let s=e.spec.payloadHash?.value||"";if(!t.compareDigest(Buffer.from(s,"hex")))throw new cL.VerificationError({code:"TLOG_BODY_ERROR",message:"DSSE payload hash mismatch"})}});var Abe=G(YJ=>{"use strict";Object.defineProperty(YJ,"__esModule",{value:!0});YJ.verifyHashedRekordTLogBody=NBt;var WJ=So();function NBt(e,t){switch(e.apiVersion){case"0.0.1":return OBt(e,t);default:throw new WJ.VerificationError({code:"TLOG_BODY_ERROR",message:`unsupported hashedrekord version: ${e.apiVersion}`})}}function OBt(e,t){let r=e.spec.signature.content||"";if(!t.compareSignature(Buffer.from(r,"base64")))throw new WJ.VerificationError({code:"TLOG_BODY_ERROR",message:"signature mismatch"});let s=e.spec.data.hash?.value||"";if(!t.compareDigest(Buffer.from(s,"hex")))throw new WJ.VerificationError({code:"TLOG_BODY_ERROR",message:"digest mismatch"})}});var pbe=G(VJ=>{"use strict";Object.defineProperty(VJ,"__esModule",{value:!0});VJ.verifyIntotoTLogBody=LBt;var uL=So();function LBt(e,t){switch(e.apiVersion){case"0.0.2":return MBt(e,t);default:throw new uL.VerificationError({code:"TLOG_BODY_ERROR",message:`unsupported intoto version: ${e.apiVersion}`})}}function MBt(e,t){if(e.spec.content.envelope.signatures?.length!==1)throw new uL.VerificationError({code:"TLOG_BODY_ERROR",message:"signature count mismatch"});let r=UBt(e.spec.content.envelope.signatures[0].sig);if(!t.compareSignature(Buffer.from(r,"base64")))throw new uL.VerificationError({code:"TLOG_BODY_ERROR",message:"tlog entry signature mismatch"});let s=e.spec.content.payloadHash?.value||"";if(!t.compareDigest(Buffer.from(s,"hex")))throw new uL.VerificationError({code:"TLOG_BODY_ERROR",message:"DSSE payload hash mismatch"})}function UBt(e){return Buffer.from(e,"base64").toString("utf-8")}});var dbe=G(JJ=>{"use strict";Object.defineProperty(JJ,"__esModule",{value:!0});JJ.verifyTLogBody=GBt;var hbe=So(),_Bt=fbe(),HBt=Abe(),jBt=pbe();function GBt(e,t){let{kind:r,version:s}=e.kindVersion,a=JSON.parse(e.canonicalizedBody.toString("utf8"));if(r!==a.kind||s!==a.apiVersion)throw new hbe.VerificationError({code:"TLOG_BODY_ERROR",message:`kind/version mismatch - expected: ${r}/${s}, received: ${a.kind}/${a.apiVersion}`});switch(a.kind){case"dsse":return(0,_Bt.verifyDSSETLogBody)(a,t);case"intoto":return(0,jBt.verifyIntotoTLogBody)(a,t);case"hashedrekord":return(0,HBt.verifyHashedRekordTLogBody)(a,t);default:throw new hbe.VerificationError({code:"TLOG_BODY_ERROR",message:`unsupported kind: ${r}`})}}});var Ibe=G(fL=>{"use strict";Object.defineProperty(fL,"__esModule",{value:!0});fL.Verifier=void 0;var qBt=Ie("util"),p1=So(),gbe=rbe(),mbe=ibe(),ybe=ube(),WBt=dbe(),KJ=class{constructor(t,r={}){this.trustMaterial=t,this.options={ctlogThreshold:r.ctlogThreshold??1,tlogThreshold:r.tlogThreshold??1,tsaThreshold:r.tsaThreshold??0}}verify(t,r){let s=this.verifyTimestamps(t),a=this.verifySigningKey(t,s);return this.verifyTLogs(t),this.verifySignature(t,a),r&&this.verifyPolicy(r,a.identity||{}),a}verifyTimestamps(t){let r=0,s=0,a=t.timestamps.map(n=>{switch(n.$case){case"timestamp-authority":return s++,(0,ybe.verifyTSATimestamp)(n.timestamp,t.signature.signature,this.trustMaterial.timestampAuthorities);case"transparency-log":return r++,(0,ybe.verifyTLogTimestamp)(n.tlogEntry,this.trustMaterial.tlogs)}});if(Ebe(a))throw new p1.VerificationError({code:"TIMESTAMP_ERROR",message:"duplicate timestamp"});if(rn.timestamp)}verifySigningKey({key:t},r){switch(t.$case){case"public-key":return(0,gbe.verifyPublicKey)(t.hint,r,this.trustMaterial);case"certificate":{let s=(0,gbe.verifyCertificate)(t.certificate,r,this.trustMaterial);if(Ebe(s.scts))throw new p1.VerificationError({code:"CERTIFICATE_ERROR",message:"duplicate SCT"});if(s.scts.length(0,WBt.verifyTLogBody)(s,t))}verifySignature(t,r){if(!t.signature.verifySignature(r.key))throw new p1.VerificationError({code:"SIGNATURE_ERROR",message:"signature verification failed"})}verifyPolicy(t,r){t.subjectAlternativeName&&(0,mbe.verifySubjectAlternativeName)(t.subjectAlternativeName,r.subjectAlternativeName),t.extensions&&(0,mbe.verifyExtensions)(t.extensions,r.extensions)}};fL.Verifier=KJ;function Ebe(e){for(let t=0;t{"use strict";Object.defineProperty(nu,"__esModule",{value:!0});nu.Verifier=nu.toTrustMaterial=nu.VerificationError=nu.PolicyError=nu.toSignedEntity=void 0;var YBt=KDe();Object.defineProperty(nu,"toSignedEntity",{enumerable:!0,get:function(){return YBt.toSignedEntity}});var Cbe=So();Object.defineProperty(nu,"PolicyError",{enumerable:!0,get:function(){return Cbe.PolicyError}});Object.defineProperty(nu,"VerificationError",{enumerable:!0,get:function(){return Cbe.VerificationError}});var VBt=gy();Object.defineProperty(nu,"toTrustMaterial",{enumerable:!0,get:function(){return VBt.toTrustMaterial}});var JBt=Ibe();Object.defineProperty(nu,"Verifier",{enumerable:!0,get:function(){return JBt.Verifier}})});var wbe=G(ja=>{"use strict";Object.defineProperty(ja,"__esModule",{value:!0});ja.DEFAULT_TIMEOUT=ja.DEFAULT_RETRY=void 0;ja.createBundleBuilder=XBt;ja.createKeyFinder=ZBt;ja.createVerificationPolicy=$Bt;var KBt=Pl(),h1=a7(),zBt=AL();ja.DEFAULT_RETRY={retries:2};ja.DEFAULT_TIMEOUT=5e3;function XBt(e,t){let r={signer:evt(t),witnesses:rvt(t)};switch(e){case"messageSignature":return new h1.MessageSignatureBundleBuilder(r);case"dsseEnvelope":return new h1.DSSEBundleBuilder({...r,certificateChain:t.legacyCompatibility})}}function ZBt(e){return t=>{let r=e(t);if(!r)throw new zBt.VerificationError({code:"PUBLIC_KEY_ERROR",message:`key not found: ${t}`});return{publicKey:KBt.crypto.createPublicKey(r),validFor:()=>!0}}}function $Bt(e){let t={},r=e.certificateIdentityEmail||e.certificateIdentityURI;return r&&(t.subjectAlternativeName=r),e.certificateIssuer&&(t.extensions={issuer:e.certificateIssuer}),t}function evt(e){return new h1.FulcioSigner({fulcioBaseURL:e.fulcioURL,identityProvider:e.identityProvider||tvt(e),retry:e.retry??ja.DEFAULT_RETRY,timeout:e.timeout??ja.DEFAULT_TIMEOUT})}function tvt(e){let t=e.identityToken;return t?{getToken:()=>Promise.resolve(t)}:new h1.CIContextProvider("sigstore")}function rvt(e){let t=[];return nvt(e)&&t.push(new h1.RekorWitness({rekorBaseURL:e.rekorURL,entryType:e.legacyCompatibility?"intoto":"dsse",fetchOnConflict:!1,retry:e.retry??ja.DEFAULT_RETRY,timeout:e.timeout??ja.DEFAULT_TIMEOUT})),ivt(e)&&t.push(new h1.TSAWitness({tsaBaseURL:e.tsaServerURL,retry:e.retry??ja.DEFAULT_RETRY,timeout:e.timeout??ja.DEFAULT_TIMEOUT})),t}function nvt(e){return e.tlogUpload!==!1}function ivt(e){return e.tsaServerURL!==void 0}});var Sbe=G(iu=>{"use strict";var svt=iu&&iu.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||("get"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),ovt=iu&&iu.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Bbe=iu&&iu.__importStar||function(){var e=function(t){return e=Object.getOwnPropertyNames||function(r){var s=[];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(s[s.length]=a);return s},e(t)};return function(t){if(t&&t.__esModule)return t;var r={};if(t!=null)for(var s=e(t),a=0;aa.verify(e,s))}async function vbe(e={}){let t=await avt.getTrustedRoot({mirrorURL:e.tufMirrorURL,rootPath:e.tufRootPath,cachePath:e.tufCachePath,forceCache:e.tufForceCache,retry:e.retry??d1.DEFAULT_RETRY,timeout:e.timeout??d1.DEFAULT_TIMEOUT}),r=e.keySelector?d1.createKeyFinder(e.keySelector):void 0,s=(0,zJ.toTrustMaterial)(t,r),a={ctlogThreshold:e.ctLogThreshold,tlogThreshold:e.tlogThreshold},n=new zJ.Verifier(s,a),c=d1.createVerificationPolicy(e);return{verify:(f,p)=>{let h=(0,XJ.bundleFromJSON)(f),E=(0,zJ.toSignedEntity)(h,p);n.verify(E,c)}}}});var bbe=G(Ni=>{"use strict";Object.defineProperty(Ni,"__esModule",{value:!0});Ni.verify=Ni.sign=Ni.createVerifier=Ni.attest=Ni.VerificationError=Ni.PolicyError=Ni.TUFError=Ni.InternalError=Ni.DEFAULT_REKOR_URL=Ni.DEFAULT_FULCIO_URL=Ni.ValidationError=void 0;var fvt=Ib();Object.defineProperty(Ni,"ValidationError",{enumerable:!0,get:function(){return fvt.ValidationError}});var ZJ=a7();Object.defineProperty(Ni,"DEFAULT_FULCIO_URL",{enumerable:!0,get:function(){return ZJ.DEFAULT_FULCIO_URL}});Object.defineProperty(Ni,"DEFAULT_REKOR_URL",{enumerable:!0,get:function(){return ZJ.DEFAULT_REKOR_URL}});Object.defineProperty(Ni,"InternalError",{enumerable:!0,get:function(){return ZJ.InternalError}});var Avt=ZO();Object.defineProperty(Ni,"TUFError",{enumerable:!0,get:function(){return Avt.TUFError}});var Dbe=AL();Object.defineProperty(Ni,"PolicyError",{enumerable:!0,get:function(){return Dbe.PolicyError}});Object.defineProperty(Ni,"VerificationError",{enumerable:!0,get:function(){return Dbe.VerificationError}});var pL=Sbe();Object.defineProperty(Ni,"attest",{enumerable:!0,get:function(){return pL.attest}});Object.defineProperty(Ni,"createVerifier",{enumerable:!0,get:function(){return pL.createVerifier}});Object.defineProperty(Ni,"sign",{enumerable:!0,get:function(){return pL.sign}});Object.defineProperty(Ni,"verify",{enumerable:!0,get:function(){return pL.verify}})});Dt();qe();Dt();var nPe=Ie("child_process"),iPe=et(Rg());Yt();var qI=new Map([]);var Gv={};Vt(Gv,{BaseCommand:()=>At,WorkspaceRequiredError:()=>ar,getCli:()=>g0e,getDynamicLibs:()=>d0e,getPluginConfiguration:()=>YI,openWorkspace:()=>WI,pluginCommands:()=>qI,runExit:()=>QT});Yt();var At=class extends at{constructor(){super(...arguments);this.cwd=he.String("--cwd",{hidden:!0})}validateAndExecute(){if(typeof this.cwd<"u")throw new it("The --cwd option is ambiguous when used anywhere else than the very first parameter provided in the command line, before even the command path");return super.validateAndExecute()}};qe();Dt();Yt();var ar=class extends it{constructor(t,r){let s=J.relative(t,r),a=J.join(t,_t.fileName);super(`This command can only be run from within a workspace of your project (${s} isn't a workspace of ${a}).`)}};qe();Dt();nA();vc();sv();Yt();var Tit=et(pi());Al();var d0e=()=>new Map([["@yarnpkg/cli",Gv],["@yarnpkg/core",jv],["@yarnpkg/fslib",R2],["@yarnpkg/libzip",nv],["@yarnpkg/parsers",_2],["@yarnpkg/shell",cv],["clipanion",Z2],["semver",Tit],["typanion",Jo]]);qe();async function WI(e,t){let{project:r,workspace:s}=await Rt.find(e,t);if(!s)throw new ar(r.cwd,t);return s}qe();Dt();nA();vc();sv();Yt();var OSt=et(pi());Al();var T5={};Vt(T5,{AddCommand:()=>zI,BinCommand:()=>XI,CacheCleanCommand:()=>ZI,ClipanionCommand:()=>iC,ConfigCommand:()=>rC,ConfigGetCommand:()=>$I,ConfigSetCommand:()=>eC,ConfigUnsetCommand:()=>tC,DedupeCommand:()=>nC,EntryCommand:()=>oC,ExecCommand:()=>lC,ExplainCommand:()=>fC,ExplainPeerRequirementsCommand:()=>cC,HelpCommand:()=>sC,InfoCommand:()=>AC,LinkCommand:()=>hC,NodeCommand:()=>dC,PluginCheckCommand:()=>gC,PluginImportCommand:()=>EC,PluginImportSourcesCommand:()=>IC,PluginListCommand:()=>mC,PluginRemoveCommand:()=>CC,PluginRuntimeCommand:()=>wC,RebuildCommand:()=>BC,RemoveCommand:()=>vC,RunCommand:()=>DC,RunIndexCommand:()=>SC,SetResolutionCommand:()=>bC,SetVersionCommand:()=>uC,SetVersionSourcesCommand:()=>yC,UnlinkCommand:()=>PC,UpCommand:()=>xC,VersionCommand:()=>aC,WhyCommand:()=>kC,WorkspaceCommand:()=>NC,WorkspacesListCommand:()=>FC,YarnCommand:()=>pC,dedupeUtils:()=>_T,default:()=>Vot,suggestUtils:()=>$u});var Uge=et(Rg());qe();qe();qe();Yt();var nge=et(Vv());Al();var $u={};Vt($u,{Modifier:()=>u5,Strategy:()=>MT,Target:()=>Jv,WorkspaceModifier:()=>Zde,applyModifier:()=>$st,extractDescriptorFromPath:()=>f5,extractRangeModifier:()=>$de,fetchDescriptorFrom:()=>A5,findProjectDescriptors:()=>rge,getModifier:()=>Kv,getSuggestedDescriptors:()=>zv,makeWorkspaceDescriptor:()=>tge,toWorkspaceModifier:()=>ege});qe();qe();Dt();var c5=et(pi()),Xst="workspace:",Jv=(s=>(s.REGULAR="dependencies",s.DEVELOPMENT="devDependencies",s.PEER="peerDependencies",s))(Jv||{}),u5=(s=>(s.CARET="^",s.TILDE="~",s.EXACT="",s))(u5||{}),Zde=(s=>(s.CARET="^",s.TILDE="~",s.EXACT="*",s))(Zde||{}),MT=(n=>(n.KEEP="keep",n.REUSE="reuse",n.PROJECT="project",n.LATEST="latest",n.CACHE="cache",n))(MT||{});function Kv(e,t){return e.exact?"":e.caret?"^":e.tilde?"~":t.configuration.get("defaultSemverRangePrefix")}var Zst=/^([\^~]?)[0-9]+(?:\.[0-9]+){0,2}(?:-\S+)?$/;function $de(e,{project:t}){let r=e.match(Zst);return r?r[1]:t.configuration.get("defaultSemverRangePrefix")}function $st(e,t){let{protocol:r,source:s,params:a,selector:n}=j.parseRange(e.range);return c5.default.valid(n)&&(n=`${t}${e.range}`),j.makeDescriptor(e,j.makeRange({protocol:r,source:s,params:a,selector:n}))}function ege(e){switch(e){case"^":return"^";case"~":return"~";case"":return"*";default:throw new Error(`Assertion failed: Unknown modifier: "${e}"`)}}function tge(e,t){return j.makeDescriptor(e.anchoredDescriptor,`${Xst}${ege(t)}`)}async function rge(e,{project:t,target:r}){let s=new Map,a=n=>{let c=s.get(n.descriptorHash);return c||s.set(n.descriptorHash,c={descriptor:n,locators:[]}),c};for(let n of t.workspaces)if(r==="peerDependencies"){let c=n.manifest.peerDependencies.get(e.identHash);c!==void 0&&a(c).locators.push(n.anchoredLocator)}else{let c=n.manifest.dependencies.get(e.identHash),f=n.manifest.devDependencies.get(e.identHash);r==="devDependencies"?f!==void 0?a(f).locators.push(n.anchoredLocator):c!==void 0&&a(c).locators.push(n.anchoredLocator):c!==void 0?a(c).locators.push(n.anchoredLocator):f!==void 0&&a(f).locators.push(n.anchoredLocator)}return s}async function f5(e,{cwd:t,workspace:r}){return await tot(async s=>{J.isAbsolute(e)||(e=J.relative(r.cwd,J.resolve(t,e)),e.match(/^\.{0,2}\//)||(e=`./${e}`));let{project:a}=r,n=await A5(j.makeIdent(null,"archive"),e,{project:r.project,cache:s,workspace:r});if(!n)throw new Error("Assertion failed: The descriptor should have been found");let c=new ki,f=a.configuration.makeResolver(),p=a.configuration.makeFetcher(),h={checksums:a.storedChecksums,project:a,cache:s,fetcher:p,report:c,resolver:f},E=f.bindDescriptor(n,r.anchoredLocator,h),C=j.convertDescriptorToLocator(E),S=await p.fetch(C,h),x=await _t.find(S.prefixPath,{baseFs:S.packageFs});if(!x.name)throw new Error("Target path doesn't have a name");return j.makeDescriptor(x.name,e)})}function eot(e){if(e.range==="unknown")return{type:"resolve",range:"latest"};if(kr.validRange(e.range))return{type:"fixed",range:e.range};if(_p.test(e.range))return{type:"resolve",range:e.range};let t=e.range.match(/^(?:jsr:|npm:)(.*)/);if(!t)return{type:"fixed",range:e.range};let[,r]=t,s=`${j.stringifyIdent(e)}@`;return r.startsWith(s)&&(r=r.slice(s.length)),kr.validRange(r)?{type:"fixed",range:e.range}:_p.test(r)?{type:"resolve",range:e.range}:{type:"fixed",range:e.range}}async function zv(e,{project:t,workspace:r,cache:s,target:a,fixed:n,modifier:c,strategies:f,maxResults:p=1/0}){if(!(p>=0))throw new Error(`Invalid maxResults (${p})`);let h=!n||e.range==="unknown"?eot(e):{type:"fixed",range:e.range};if(h.type==="fixed")return{suggestions:[{descriptor:e,name:`Use ${j.prettyDescriptor(t.configuration,e)}`,reason:"(unambiguous explicit request)"}],rejections:[]};let E=typeof r<"u"&&r!==null&&r.manifest[a].get(e.identHash)||null,C=[],S=[],x=async I=>{try{await I()}catch(T){S.push(T)}};for(let I of f){if(C.length>=p)break;switch(I){case"keep":await x(async()=>{E&&C.push({descriptor:E,name:`Keep ${j.prettyDescriptor(t.configuration,E)}`,reason:"(no changes)"})});break;case"reuse":await x(async()=>{for(let{descriptor:T,locators:O}of(await rge(e,{project:t,target:a})).values()){if(O.length===1&&O[0].locatorHash===r.anchoredLocator.locatorHash&&f.includes("keep"))continue;let U=`(originally used by ${j.prettyLocator(t.configuration,O[0])}`;U+=O.length>1?` and ${O.length-1} other${O.length>2?"s":""})`:")",C.push({descriptor:T,name:`Reuse ${j.prettyDescriptor(t.configuration,T)}`,reason:U})}});break;case"cache":await x(async()=>{for(let T of t.storedDescriptors.values())T.identHash===e.identHash&&C.push({descriptor:T,name:`Reuse ${j.prettyDescriptor(t.configuration,T)}`,reason:"(already used somewhere in the lockfile)"})});break;case"project":await x(async()=>{if(r.manifest.name!==null&&e.identHash===r.manifest.name.identHash)return;let T=t.tryWorkspaceByIdent(e);if(T===null)return;let O=tge(T,c);C.push({descriptor:O,name:`Attach ${j.prettyDescriptor(t.configuration,O)}`,reason:`(local workspace at ${pe.pretty(t.configuration,T.relativeCwd,pe.Type.PATH)})`})});break;case"latest":{let T=t.configuration.get("enableNetwork"),O=t.configuration.get("enableOfflineMode");await x(async()=>{if(a==="peerDependencies")C.push({descriptor:j.makeDescriptor(e,"*"),name:"Use *",reason:"(catch-all peer dependency pattern)"});else if(!T&&!O)C.push({descriptor:null,name:"Resolve from latest",reason:pe.pretty(t.configuration,"(unavailable because enableNetwork is toggled off)","grey")});else{let U=await A5(e,h.range,{project:t,cache:s,workspace:r,modifier:c});U&&C.push({descriptor:U,name:`Use ${j.prettyDescriptor(t.configuration,U)}`,reason:`(resolved from ${O?"the cache":"latest"})`})}})}break}}return{suggestions:C.slice(0,p),rejections:S.slice(0,p)}}async function A5(e,t,{project:r,cache:s,workspace:a,preserveModifier:n=!0,modifier:c}){let f=r.configuration.normalizeDependency(j.makeDescriptor(e,t)),p=new ki,h=r.configuration.makeFetcher(),E=r.configuration.makeResolver(),C={project:r,fetcher:h,cache:s,checksums:r.storedChecksums,report:p,cacheOptions:{skipIntegrityCheck:!0}},S={...C,resolver:E,fetchOptions:C},x=E.bindDescriptor(f,a.anchoredLocator,S),I=await E.getCandidates(x,{},S);if(I.length===0)return null;let T=I[0],{protocol:O,source:U,params:V,selector:te}=j.parseRange(j.convertToManifestRange(T.reference));if(O===r.configuration.get("defaultProtocol")&&(O=null),c5.default.valid(te)){let ie=te;if(typeof c<"u")te=c+te;else if(n!==!1){let ge=typeof n=="string"?n:f.range;te=$de(ge,{project:r})+te}let ue=j.makeDescriptor(T,j.makeRange({protocol:O,source:U,params:V,selector:te}));(await E.getCandidates(r.configuration.normalizeDependency(ue),{},S)).length!==1&&(te=ie)}return j.makeDescriptor(T,j.makeRange({protocol:O,source:U,params:V,selector:te}))}async function tot(e){return await le.mktempPromise(async t=>{let r=ze.create(t);return r.useWithSource(t,{enableMirror:!1,compressionLevel:0},t,{overwrite:!0}),await e(new Kr(t,{configuration:r,check:!1,immutable:!1}))})}var zI=class extends At{constructor(){super(...arguments);this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.fixed=he.Boolean("-F,--fixed",!1,{description:"Store dependency tags as-is instead of resolving them"});this.exact=he.Boolean("-E,--exact",!1,{description:"Don't use any semver modifier on the resolved range"});this.tilde=he.Boolean("-T,--tilde",!1,{description:"Use the `~` semver modifier on the resolved range"});this.caret=he.Boolean("-C,--caret",!1,{description:"Use the `^` semver modifier on the resolved range"});this.dev=he.Boolean("-D,--dev",!1,{description:"Add a package as a dev dependency"});this.peer=he.Boolean("-P,--peer",!1,{description:"Add a package as a peer dependency"});this.optional=he.Boolean("-O,--optional",!1,{description:"Add / upgrade a package to an optional regular / peer dependency"});this.preferDev=he.Boolean("--prefer-dev",!1,{description:"Add / upgrade a package to a dev dependency"});this.interactive=he.Boolean("-i,--interactive",{description:"Reuse the specified package from other workspaces in the project"});this.cached=he.Boolean("--cached",!1,{description:"Reuse the highest version already used somewhere within the project"});this.mode=he.String("--mode",{description:"Change what artifacts installs generate",validator:ks(Oa)});this.silent=he.Boolean("--silent",{hidden:!0});this.packages=he.Rest()}static{this.paths=[["add"]]}static{this.usage=at.Usage({description:"add dependencies to the project",details:"\n This command adds a package to the package.json for the nearest workspace.\n\n - If it didn't exist before, the package will by default be added to the regular `dependencies` field, but this behavior can be overriden thanks to the `-D,--dev` flag (which will cause the dependency to be added to the `devDependencies` field instead) and the `-P,--peer` flag (which will do the same but for `peerDependencies`).\n\n - If the package was already listed in your dependencies, it will by default be upgraded whether it's part of your `dependencies` or `devDependencies` (it won't ever update `peerDependencies`, though).\n\n - If set, the `--prefer-dev` flag will operate as a more flexible `-D,--dev` in that it will add the package to your `devDependencies` if it isn't already listed in either `dependencies` or `devDependencies`, but it will also happily upgrade your `dependencies` if that's what you already use (whereas `-D,--dev` would throw an exception).\n\n - If set, the `-O,--optional` flag will add the package to the `optionalDependencies` field and, in combination with the `-P,--peer` flag, it will add the package as an optional peer dependency. If the package was already listed in your `dependencies`, it will be upgraded to `optionalDependencies`. If the package was already listed in your `peerDependencies`, in combination with the `-P,--peer` flag, it will be upgraded to an optional peer dependency: `\"peerDependenciesMeta\": { \"\": { \"optional\": true } }`\n\n - If the added package doesn't specify a range at all its `latest` tag will be resolved and the returned version will be used to generate a new semver range (using the `^` modifier by default unless otherwise configured via the `defaultSemverRangePrefix` configuration, or the `~` modifier if `-T,--tilde` is specified, or no modifier at all if `-E,--exact` is specified). Two exceptions to this rule: the first one is that if the package is a workspace then its local version will be used, and the second one is that if you use `-P,--peer` the default range will be `*` and won't be resolved at all.\n\n - If the added package specifies a range (such as `^1.0.0`, `latest`, or `rc`), Yarn will add this range as-is in the resulting package.json entry (in particular, tags such as `rc` will be encoded as-is rather than being converted into a semver range).\n\n If the `--cached` option is used, Yarn will preferably reuse the highest version already used somewhere within the project, even if through a transitive dependency.\n\n If the `-i,--interactive` option is used (or if the `preferInteractive` settings is toggled on) the command will first try to check whether other workspaces in the project use the specified package and, if so, will offer to reuse them.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n For a compilation of all the supported protocols, please consult the dedicated page from our website: https://yarnpkg.com/protocols.\n ",examples:[["Add a regular package to the current workspace","$0 add lodash"],["Add a specific version for a package to the current workspace","$0 add lodash@1.2.3"],["Add a package from a GitHub repository (the master branch) to the current workspace using a URL","$0 add lodash@https://github.com/lodash/lodash"],["Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol","$0 add lodash@github:lodash/lodash"],["Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol (shorthand)","$0 add lodash@lodash/lodash"],["Add a package from a specific branch of a GitHub repository to the current workspace using the GitHub protocol (shorthand)","$0 add lodash-es@lodash/lodash#es"],["Add a local package (gzipped tarball format) to the current workspace","$0 add local-package-name@file:../path/to/local-package-name-v0.1.2.tgz"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Kr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=this.fixed,f=r.isInteractive({interactive:this.interactive,stdout:this.context.stdout}),p=f||r.get("preferReuse"),h=Kv(this,s),E=[p?"reuse":void 0,"project",this.cached?"cache":void 0,"latest"].filter(V=>typeof V<"u"),C=f?1/0:1,S=V=>{let te=j.tryParseDescriptor(V.slice(4));return te?te.range==="unknown"?j.makeDescriptor(te,`jsr:${j.stringifyIdent(te)}@latest`):j.makeDescriptor(te,`jsr:${te.range}`):null},x=await Promise.all(this.packages.map(async V=>{let te=V.match(/^\.{0,2}\//)?await f5(V,{cwd:this.context.cwd,workspace:a}):V.startsWith("jsr:")?S(V):j.tryParseDescriptor(V),ie=V.match(/^(https?:|git@github)/);if(ie)throw new it(`It seems you are trying to add a package using a ${pe.pretty(r,`${ie[0]}...`,pe.Type.RANGE)} url; we now require package names to be explicitly specified. +Try running the command again with the package name prefixed: ${pe.pretty(r,"yarn add",pe.Type.CODE)} ${pe.pretty(r,j.makeDescriptor(j.makeIdent(null,"my-package"),`${ie[0]}...`),pe.Type.DESCRIPTOR)}`);if(!te)throw new it(`The ${pe.pretty(r,V,pe.Type.CODE)} string didn't match the required format (package-name@range). Did you perhaps forget to explicitly reference the package name?`);let ue=rot(a,te,{dev:this.dev,peer:this.peer,preferDev:this.preferDev,optional:this.optional});return await Promise.all(ue.map(async ge=>{let Ae=await zv(te,{project:s,workspace:a,cache:n,fixed:c,target:ge,modifier:h,strategies:E,maxResults:C});return{request:te,suggestedDescriptors:Ae,target:ge}}))})).then(V=>V.flat()),I=await uA.start({configuration:r,stdout:this.context.stdout,suggestInstall:!1},async V=>{for(let{request:te,suggestedDescriptors:{suggestions:ie,rejections:ue}}of x)if(ie.filter(ge=>ge.descriptor!==null).length===0){let[ge]=ue;if(typeof ge>"u")throw new Error("Assertion failed: Expected an error to have been set");s.configuration.get("enableNetwork")?V.reportError(27,`${j.prettyDescriptor(r,te)} can't be resolved to a satisfying range`):V.reportError(27,`${j.prettyDescriptor(r,te)} can't be resolved to a satisfying range (note: network resolution has been disabled)`),V.reportSeparator(),V.reportExceptionOnce(ge)}});if(I.hasErrors())return I.exitCode();let T=!1,O=[],U=[];for(let{suggestedDescriptors:{suggestions:V},target:te}of x){let ie,ue=V.filter(Ce=>Ce.descriptor!==null),ae=ue[0].descriptor,ge=ue.every(Ce=>j.areDescriptorsEqual(Ce.descriptor,ae));ue.length===1||ge?ie=ae:(T=!0,{answer:ie}=await(0,nge.prompt)({type:"select",name:"answer",message:"Which range do you want to use?",choices:V.map(({descriptor:Ce,name:Ee,reason:d})=>Ce?{name:Ee,hint:d,descriptor:Ce}:{name:Ee,hint:d,disabled:!0}),onCancel:()=>process.exit(130),result(Ce){return this.find(Ce,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let Ae=a.manifest[te].get(ie.identHash);(typeof Ae>"u"||Ae.descriptorHash!==ie.descriptorHash)&&(a.manifest[te].set(ie.identHash,ie),this.optional&&(te==="dependencies"?a.manifest.ensureDependencyMeta({...ie,range:"unknown"}).optional=!0:te==="peerDependencies"&&(a.manifest.ensurePeerDependencyMeta({...ie,range:"unknown"}).optional=!0)),typeof Ae>"u"?O.push([a,te,ie,E]):U.push([a,te,Ae,ie]))}return await r.triggerMultipleHooks(V=>V.afterWorkspaceDependencyAddition,O),await r.triggerMultipleHooks(V=>V.afterWorkspaceDependencyReplacement,U),T&&this.context.stdout.write(` +`),await s.installWithNewReport({json:this.json,stdout:this.context.stdout,quiet:this.context.quiet},{cache:n,mode:this.mode})}};function rot(e,t,{dev:r,peer:s,preferDev:a,optional:n}){let c=e.manifest.dependencies.has(t.identHash),f=e.manifest.devDependencies.has(t.identHash),p=e.manifest.peerDependencies.has(t.identHash);if((r||s)&&c)throw new it(`Package "${j.prettyIdent(e.project.configuration,t)}" is already listed as a regular dependency - remove the -D,-P flags or remove it from your dependencies first`);if(!r&&!s&&p)throw new it(`Package "${j.prettyIdent(e.project.configuration,t)}" is already listed as a peer dependency - use either of -D or -P, or remove it from your peer dependencies first`);if(n&&f)throw new it(`Package "${j.prettyIdent(e.project.configuration,t)}" is already listed as a dev dependency - remove the -O flag or remove it from your dev dependencies first`);if(n&&!s&&p)throw new it(`Package "${j.prettyIdent(e.project.configuration,t)}" is already listed as a peer dependency - remove the -O flag or add the -P flag or remove it from your peer dependencies first`);if((r||a)&&n)throw new it(`Package "${j.prettyIdent(e.project.configuration,t)}" cannot simultaneously be a dev dependency and an optional dependency`);let h=[];return s&&h.push("peerDependencies"),(r||a)&&h.push("devDependencies"),n&&h.push("dependencies"),h.length>0?h:f?["devDependencies"]:p?["peerDependencies"]:["dependencies"]}qe();qe();Yt();var XI=class extends At{constructor(){super(...arguments);this.verbose=he.Boolean("-v,--verbose",!1,{description:"Print both the binary name and the locator of the package that provides the binary"});this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.name=he.String({required:!1})}static{this.paths=[["bin"]]}static{this.usage=at.Usage({description:"get the path to a binary script",details:` + When used without arguments, this command will print the list of all the binaries available in the current workspace. Adding the \`-v,--verbose\` flag will cause the output to contain both the binary name and the locator of the package that provides the binary. + + When an argument is specified, this command will just print the path to the binary on the standard output and exit. Note that the reported path may be stored within a zip archive. + `,examples:[["List all the available binaries","$0 bin"],["Print the path to a specific binary","$0 bin eslint"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,locator:a}=await Rt.find(r,this.context.cwd);if(await s.restoreInstallState(),this.name){let f=(await Cn.getPackageAccessibleBinaries(a,{project:s})).get(this.name);if(!f)throw new it(`Couldn't find a binary named "${this.name}" for package "${j.prettyLocator(r,a)}"`);let[,p]=f;return this.context.stdout.write(`${p} +`),0}return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async c=>{let f=await Cn.getPackageAccessibleBinaries(a,{project:s}),h=Array.from(f.keys()).reduce((E,C)=>Math.max(E,C.length),0);for(let[E,[C,S]]of f)c.reportJson({name:E,source:j.stringifyIdent(C),path:S});if(this.verbose)for(let[E,[C]]of f)c.reportInfo(null,`${E.padEnd(h," ")} ${j.prettyLocator(r,C)}`);else for(let E of f.keys())c.reportInfo(null,E)})).exitCode()}};qe();Dt();Yt();var ZI=class extends At{constructor(){super(...arguments);this.mirror=he.Boolean("--mirror",!1,{description:"Remove the global cache files instead of the local cache files"});this.all=he.Boolean("--all",!1,{description:"Remove both the global cache files and the local cache files of the current project"})}static{this.paths=[["cache","clean"],["cache","clear"]]}static{this.usage=at.Usage({description:"remove the shared cache files",details:` + This command will remove all the files from the cache. + `,examples:[["Remove all the local archives","$0 cache clean"],["Remove all the archives stored in the ~/.yarn directory","$0 cache clean --mirror"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);if(!r.get("enableCacheClean"))throw new it("Cache cleaning is currently disabled. To enable it, set `enableCacheClean: true` in your configuration file. Note: Cache cleaning is typically not required and should be avoided when using Zero-Installs.");let s=await Kr.find(r);return(await Ot.start({configuration:r,stdout:this.context.stdout},async()=>{let n=(this.all||this.mirror)&&s.mirrorCwd!==null,c=!this.mirror;n&&(await le.removePromise(s.mirrorCwd),await r.triggerHook(f=>f.cleanGlobalArtifacts,r)),c&&await le.removePromise(s.cwd)})).exitCode()}};qe();Yt();zl();var p5=Ie("util"),$I=class extends At{constructor(){super(...arguments);this.why=he.Boolean("--why",!1,{description:"Print the explanation for why a setting has its value"});this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.unsafe=he.Boolean("--no-redacted",!1,{description:"Don't redact secrets (such as tokens) from the output"});this.name=he.String()}static{this.paths=[["config","get"]]}static{this.usage=at.Usage({description:"read a configuration settings",details:` + This command will print a configuration setting. + + Secrets (such as tokens) will be redacted from the output by default. If this behavior isn't desired, set the \`--no-redacted\` to get the untransformed value. + `,examples:[["Print a simple configuration setting","yarn config get yarnPath"],["Print a complex configuration setting","yarn config get packageExtensions"],["Print a nested field from the configuration",`yarn config get 'npmScopes["my-company"].npmRegistryServer'`],["Print a token from the configuration","yarn config get npmAuthToken --no-redacted"],["Print a configuration setting as JSON","yarn config get packageExtensions --json"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=this.name.replace(/[.[].*$/,""),a=this.name.replace(/^[^.[]*/,"");if(typeof r.settings.get(s)>"u")throw new it(`Couldn't find a configuration settings named "${s}"`);let c=r.getSpecial(s,{hideSecrets:!this.unsafe,getNativePaths:!0}),f=Ge.convertMapsToIndexableObjects(c),p=a?Pa(f,a):f,h=await Ot.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async E=>{E.reportJson(p)});if(!this.json){if(typeof p=="string")return this.context.stdout.write(`${p} +`),h.exitCode();p5.inspect.styles.name="cyan",this.context.stdout.write(`${(0,p5.inspect)(p,{depth:1/0,colors:r.get("enableColors"),compact:!1})} +`)}return h.exitCode()}};qe();Yt();zl();var h5=Ie("util"),eC=class extends At{constructor(){super(...arguments);this.json=he.Boolean("--json",!1,{description:"Set complex configuration settings to JSON values"});this.home=he.Boolean("-H,--home",!1,{description:"Update the home configuration instead of the project configuration"});this.name=he.String();this.value=he.String()}static{this.paths=[["config","set"]]}static{this.usage=at.Usage({description:"change a configuration settings",details:` + This command will set a configuration setting. + + When used without the \`--json\` flag, it can only set a simple configuration setting (a string, a number, or a boolean). + + When used with the \`--json\` flag, it can set both simple and complex configuration settings, including Arrays and Objects. + `,examples:[["Set a simple configuration setting (a string, a number, or a boolean)","yarn config set initScope myScope"],["Set a simple configuration setting (a string, a number, or a boolean) using the `--json` flag",'yarn config set initScope --json \\"myScope\\"'],["Set a complex configuration setting (an Array) using the `--json` flag",`yarn config set unsafeHttpWhitelist --json '["*.example.com", "example.com"]'`],["Set a complex configuration setting (an Object) using the `--json` flag",`yarn config set packageExtensions --json '{ "@babel/parser@*": { "dependencies": { "@babel/types": "*" } } }'`],["Set a nested configuration setting",'yarn config set npmScopes.company.npmRegistryServer "https://npm.example.com"'],["Set a nested configuration setting using indexed access for non-simple keys",`yarn config set 'npmRegistries["//npm.example.com"].npmAuthToken' "ffffffff-ffff-ffff-ffff-ffffffffffff"`]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=()=>{if(!r.projectCwd)throw new it("This command must be run from within a project folder");return r.projectCwd},a=this.name.replace(/[.[].*$/,""),n=this.name.replace(/^[^.[]*\.?/,"");if(typeof r.settings.get(a)>"u")throw new it(`Couldn't find a configuration settings named "${a}"`);if(a==="enableStrictSettings")throw new it("This setting only affects the file it's in, and thus cannot be set from the CLI");let f=this.json?JSON.parse(this.value):this.value;await(this.home?I=>ze.updateHomeConfiguration(I):I=>ze.updateConfiguration(s(),I))(I=>{if(n){let T=u0(I);return Yg(T,this.name,f),T}else return{...I,[a]:f}});let E=(await ze.find(this.context.cwd,this.context.plugins)).getSpecial(a,{hideSecrets:!0,getNativePaths:!0}),C=Ge.convertMapsToIndexableObjects(E),S=n?Pa(C,n):C;return(await Ot.start({configuration:r,includeFooter:!1,stdout:this.context.stdout},async I=>{h5.inspect.styles.name="cyan",I.reportInfo(0,`Successfully set ${this.name} to ${(0,h5.inspect)(S,{depth:1/0,colors:r.get("enableColors"),compact:!1})}`)})).exitCode()}};qe();Yt();zl();var tC=class extends At{constructor(){super(...arguments);this.home=he.Boolean("-H,--home",!1,{description:"Update the home configuration instead of the project configuration"});this.name=he.String()}static{this.paths=[["config","unset"]]}static{this.usage=at.Usage({description:"unset a configuration setting",details:` + This command will unset a configuration setting. + `,examples:[["Unset a simple configuration setting","yarn config unset initScope"],["Unset a complex configuration setting","yarn config unset packageExtensions"],["Unset a nested configuration setting","yarn config unset npmScopes.company.npmRegistryServer"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=()=>{if(!r.projectCwd)throw new it("This command must be run from within a project folder");return r.projectCwd},a=this.name.replace(/[.[].*$/,""),n=this.name.replace(/^[^.[]*\.?/,"");if(typeof r.settings.get(a)>"u")throw new it(`Couldn't find a configuration settings named "${a}"`);let f=this.home?h=>ze.updateHomeConfiguration(h):h=>ze.updateConfiguration(s(),h);return(await Ot.start({configuration:r,includeFooter:!1,stdout:this.context.stdout},async h=>{let E=!1;await f(C=>{if(!gB(C,this.name))return h.reportWarning(0,`Configuration doesn't contain setting ${this.name}; there is nothing to unset`),E=!0,C;let S=n?u0(C):{...C};return f0(S,this.name),S}),E||h.reportInfo(0,`Successfully unset ${this.name}`)})).exitCode()}};qe();Dt();Yt();var UT=Ie("util"),rC=class extends At{constructor(){super(...arguments);this.noDefaults=he.Boolean("--no-defaults",!1,{description:"Omit the default values from the display"});this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.verbose=he.Boolean("-v,--verbose",{hidden:!0});this.why=he.Boolean("--why",{hidden:!0});this.names=he.Rest()}static{this.paths=[["config"]]}static{this.usage=at.Usage({description:"display the current configuration",details:` + This command prints the current active configuration settings. + `,examples:[["Print the active configuration settings","$0 config"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins,{strict:!1}),s=await PI({configuration:r,stdout:this.context.stdout,forceError:this.json},[{option:this.verbose,message:"The --verbose option is deprecated, the settings' descriptions are now always displayed"},{option:this.why,message:"The --why option is deprecated, the settings' sources are now always displayed"}]);if(s!==null)return s;let a=this.names.length>0?[...new Set(this.names)].sort():[...r.settings.keys()].sort(),n,c=await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async f=>{if(r.invalid.size>0&&!this.json){for(let[p,h]of r.invalid)f.reportError(34,`Invalid configuration key "${p}" in ${h}`);f.reportSeparator()}if(this.json)for(let p of a){if(this.noDefaults&&!r.sources.has(p))continue;let h=r.settings.get(p);typeof h>"u"&&f.reportError(34,`No configuration key named "${p}"`);let E=r.getSpecial(p,{hideSecrets:!0,getNativePaths:!0}),C=r.sources.get(p)??"",S=C&&C[0]!=="<"?fe.fromPortablePath(C):C;f.reportJson({key:p,effective:E,source:S,...h})}else{let p={breakLength:1/0,colors:r.get("enableColors"),maxArrayLength:2},h={},E={children:h};for(let C of a){if(this.noDefaults&&!r.sources.has(C))continue;let S=r.settings.get(C),x=r.sources.get(C)??"",I=r.getSpecial(C,{hideSecrets:!0,getNativePaths:!0}),T={Description:{label:"Description",value:pe.tuple(pe.Type.MARKDOWN,{text:S.description,format:this.cli.format(),paragraphs:!1})},Source:{label:"Source",value:pe.tuple(x[0]==="<"?pe.Type.CODE:pe.Type.PATH,x)}};h[C]={value:pe.tuple(pe.Type.CODE,C),children:T};let O=(U,V)=>{for(let[te,ie]of V)if(ie instanceof Map){let ue={};U[te]={children:ue},O(ue,ie)}else U[te]={label:te,value:pe.tuple(pe.Type.NO_HINT,(0,UT.inspect)(ie,p))}};I instanceof Map?O(T,I):T.Value={label:"Value",value:pe.tuple(pe.Type.NO_HINT,(0,UT.inspect)(I,p))}}a.length!==1&&(n=void 0),Rs.emitTree(E,{configuration:r,json:this.json,stdout:this.context.stdout,separators:2})}});if(!this.json&&typeof n<"u"){let f=a[0],p=(0,UT.inspect)(r.getSpecial(f,{hideSecrets:!0,getNativePaths:!0}),{colors:r.get("enableColors")});this.context.stdout.write(` +`),this.context.stdout.write(`${p} +`)}return c.exitCode()}};qe();Yt();Al();var _T={};Vt(_T,{Strategy:()=>Xv,acceptedStrategies:()=>not,dedupe:()=>d5});qe();qe();var ige=et(zo()),Xv=(t=>(t.HIGHEST="highest",t))(Xv||{}),not=new Set(Object.values(Xv)),iot={highest:async(e,t,{resolver:r,fetcher:s,resolveOptions:a,fetchOptions:n})=>{let c=new Map;for(let[p,h]of e.storedResolutions){let E=e.storedDescriptors.get(p);if(typeof E>"u")throw new Error(`Assertion failed: The descriptor (${p}) should have been registered`);Ge.getSetWithDefault(c,E.identHash).add(h)}let f=new Map(Ge.mapAndFilter(e.storedDescriptors.values(),p=>j.isVirtualDescriptor(p)?Ge.mapAndFilter.skip:[p.descriptorHash,Ge.makeDeferred()]));for(let p of e.storedDescriptors.values()){let h=f.get(p.descriptorHash);if(typeof h>"u")throw new Error(`Assertion failed: The descriptor (${p.descriptorHash}) should have been registered`);let E=e.storedResolutions.get(p.descriptorHash);if(typeof E>"u")throw new Error(`Assertion failed: The resolution (${p.descriptorHash}) should have been registered`);let C=e.originalPackages.get(E);if(typeof C>"u")throw new Error(`Assertion failed: The package (${E}) should have been registered`);Promise.resolve().then(async()=>{let S=r.getResolutionDependencies(p,a),x=Object.fromEntries(await Ge.allSettledSafe(Object.entries(S).map(async([te,ie])=>{let ue=f.get(ie.descriptorHash);if(typeof ue>"u")throw new Error(`Assertion failed: The descriptor (${ie.descriptorHash}) should have been registered`);let ae=await ue.promise;if(!ae)throw new Error("Assertion failed: Expected the dependency to have been through the dedupe process itself");return[te,ae.updatedPackage]})));if(t.length&&!ige.default.isMatch(j.stringifyIdent(p),t)||!r.shouldPersistResolution(C,a))return C;let I=c.get(p.identHash);if(typeof I>"u")throw new Error(`Assertion failed: The resolutions (${p.identHash}) should have been registered`);if(I.size===1)return C;let T=[...I].map(te=>{let ie=e.originalPackages.get(te);if(typeof ie>"u")throw new Error(`Assertion failed: The package (${te}) should have been registered`);return ie}),O=await r.getSatisfying(p,x,T,a),U=O.locators?.[0];if(typeof U>"u"||!O.sorted)return C;let V=e.originalPackages.get(U.locatorHash);if(typeof V>"u")throw new Error(`Assertion failed: The package (${U.locatorHash}) should have been registered`);return V}).then(async S=>{let x=await e.preparePackage(S,{resolver:r,resolveOptions:a});h.resolve({descriptor:p,currentPackage:C,updatedPackage:S,resolvedPackage:x})}).catch(S=>{h.reject(S)})}return[...f.values()].map(p=>p.promise)}};async function d5(e,{strategy:t,patterns:r,cache:s,report:a}){let{configuration:n}=e,c=new ki,f=n.makeResolver(),p=n.makeFetcher(),h={cache:s,checksums:e.storedChecksums,fetcher:p,project:e,report:c,cacheOptions:{skipIntegrityCheck:!0}},E={project:e,resolver:f,report:c,fetchOptions:h};return await a.startTimerPromise("Deduplication step",async()=>{let C=iot[t],S=await C(e,r,{resolver:f,resolveOptions:E,fetcher:p,fetchOptions:h}),x=yo.progressViaCounter(S.length);await a.reportProgress(x);let I=0;await Promise.all(S.map(U=>U.then(V=>{if(V===null||V.currentPackage.locatorHash===V.updatedPackage.locatorHash)return;I++;let{descriptor:te,currentPackage:ie,updatedPackage:ue}=V;a.reportInfo(0,`${j.prettyDescriptor(n,te)} can be deduped from ${j.prettyLocator(n,ie)} to ${j.prettyLocator(n,ue)}`),a.reportJson({descriptor:j.stringifyDescriptor(te),currentResolution:j.stringifyLocator(ie),updatedResolution:j.stringifyLocator(ue)}),e.storedResolutions.set(te.descriptorHash,ue.locatorHash)}).finally(()=>x.tick())));let T;switch(I){case 0:T="No packages";break;case 1:T="One package";break;default:T=`${I} packages`}let O=pe.pretty(n,t,pe.Type.CODE);return a.reportInfo(0,`${T} can be deduped using the ${O} strategy`),I})}var nC=class extends At{constructor(){super(...arguments);this.strategy=he.String("-s,--strategy","highest",{description:"The strategy to use when deduping dependencies",validator:ks(Xv)});this.check=he.Boolean("-c,--check",!1,{description:"Exit with exit code 1 when duplicates are found, without persisting the dependency tree"});this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.mode=he.String("--mode",{description:"Change what artifacts installs generate",validator:ks(Oa)});this.patterns=he.Rest()}static{this.paths=[["dedupe"]]}static{this.usage=at.Usage({description:"deduplicate dependencies with overlapping ranges",details:"\n Duplicates are defined as descriptors with overlapping ranges being resolved and locked to different locators. They are a natural consequence of Yarn's deterministic installs, but they can sometimes pile up and unnecessarily increase the size of your project.\n\n This command dedupes dependencies in the current project using different strategies (only one is implemented at the moment):\n\n - `highest`: Reuses (where possible) the locators with the highest versions. This means that dependencies can only be upgraded, never downgraded. It's also guaranteed that it never takes more than a single pass to dedupe the entire dependency tree.\n\n **Note:** Even though it never produces a wrong dependency tree, this command should be used with caution, as it modifies the dependency tree, which can sometimes cause problems when packages don't strictly follow semver recommendations. Because of this, it is recommended to also review the changes manually.\n\n If set, the `-c,--check` flag will only report the found duplicates, without persisting the modified dependency tree. If changes are found, the command will exit with a non-zero exit code, making it suitable for CI purposes.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n ### In-depth explanation:\n\n Yarn doesn't deduplicate dependencies by default, otherwise installs wouldn't be deterministic and the lockfile would be useless. What it actually does is that it tries to not duplicate dependencies in the first place.\n\n **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@*`will cause Yarn to reuse `foo@2.3.4`, even if the latest `foo` is actually `foo@2.10.14`, thus preventing unnecessary duplication.\n\n Duplication happens when Yarn can't unlock dependencies that have already been locked inside the lockfile.\n\n **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@2.10.14` will cause Yarn to install `foo@2.10.14` because the existing resolution doesn't satisfy the range `2.10.14`. This behavior can lead to (sometimes) unwanted duplication, since now the lockfile contains 2 separate resolutions for the 2 `foo` descriptors, even though they have overlapping ranges, which means that the lockfile can be simplified so that both descriptors resolve to `foo@2.10.14`.\n ",examples:[["Dedupe all packages","$0 dedupe"],["Dedupe all packages using a specific strategy","$0 dedupe --strategy highest"],["Dedupe a specific package","$0 dedupe lodash"],["Dedupe all packages with the `@babel/*` scope","$0 dedupe '@babel/*'"],["Check for duplicates (can be used as a CI step)","$0 dedupe --check"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Rt.find(r,this.context.cwd),a=await Kr.find(r);await s.restoreInstallState({restoreResolutions:!1});let n=0,c=await Ot.start({configuration:r,includeFooter:!1,stdout:this.context.stdout,json:this.json},async f=>{n=await d5(s,{strategy:this.strategy,patterns:this.patterns,cache:a,report:f})});return c.hasErrors()?c.exitCode():this.check?n?1:0:await s.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:a,mode:this.mode})}};qe();Yt();var iC=class extends At{static{this.paths=[["--clipanion=definitions"]]}async execute(){let{plugins:t}=await ze.find(this.context.cwd,this.context.plugins),r=[];for(let c of t){let{commands:f}=c[1];if(f){let h=Sa.from(f).definitions();r.push([c[0],h])}}let s=this.cli.definitions(),a=(c,f)=>c.split(" ").slice(1).join()===f.split(" ").slice(1).join(),n=sge()["@yarnpkg/builder"].bundles.standard;for(let c of r){let f=c[1];for(let p of f)s.find(h=>a(h.path,p.path)).plugin={name:c[0],isDefault:n.includes(c[0])}}this.context.stdout.write(`${JSON.stringify(s,null,2)} +`)}};var sC=class extends At{static{this.paths=[["help"],["--help"],["-h"]]}async execute(){this.context.stdout.write(this.cli.usage(null))}};qe();Dt();Yt();var oC=class extends At{constructor(){super(...arguments);this.leadingArgument=he.String();this.args=he.Proxy()}async execute(){if(this.leadingArgument.match(/[\\/]/)&&!j.tryParseIdent(this.leadingArgument)){let r=J.resolve(this.context.cwd,fe.toPortablePath(this.leadingArgument));return await this.cli.run(this.args,{cwd:r})}else return await this.cli.run(["run",this.leadingArgument,...this.args])}};qe();var aC=class extends At{static{this.paths=[["-v"],["--version"]]}async execute(){this.context.stdout.write(`${An||""} +`)}};qe();qe();Yt();var lC=class extends At{constructor(){super(...arguments);this.commandName=he.String();this.args=he.Proxy()}static{this.paths=[["exec"]]}static{this.usage=at.Usage({description:"execute a shell script",details:` + This command simply executes a shell script within the context of the root directory of the active workspace using the portable shell. + + It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment). + `,examples:[["Execute a single shell command","$0 exec echo Hello World"],["Execute a shell script",'$0 exec "tsc & babel src --out-dir lib"']]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,locator:a}=await Rt.find(r,this.context.cwd);return await s.restoreInstallState(),await Cn.executePackageShellcode(a,this.commandName,this.args,{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,project:s})}};qe();Yt();Al();var cC=class extends At{constructor(){super(...arguments);this.hash=he.String({required:!1,validator:Nx(SE(),[q2(/^p[0-9a-f]{6}$/)])})}static{this.paths=[["explain","peer-requirements"]]}static{this.usage=at.Usage({description:"explain a set of peer requirements",details:` + A peer requirement represents all peer requests that a subject must satisfy when providing a requested package to requesters. + + When the hash argument is specified, this command prints a detailed explanation of the peer requirement corresponding to the hash and whether it is satisfied or not. + + When used without arguments, this command lists all peer requirements and the corresponding hash that can be used to get detailed information about a given requirement. + + **Note:** A hash is a seven-letter code consisting of the letter 'p' followed by six characters that can be obtained from peer dependency warnings or from the list of all peer requirements(\`yarn explain peer-requirements\`). + `,examples:[["Explain the corresponding peer requirement for a hash","$0 explain peer-requirements p1a4ed"],["List all peer requirements","$0 explain peer-requirements"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Rt.find(r,this.context.cwd);return await s.restoreInstallState({restoreResolutions:!1}),await s.applyLightResolution(),typeof this.hash<"u"?await oot(this.hash,s,{stdout:this.context.stdout}):await aot(s,{stdout:this.context.stdout})}};async function oot(e,t,r){let s=t.peerRequirementNodes.get(e);if(typeof s>"u")throw new Error(`No peerDependency requirements found for hash: "${e}"`);let a=new Set,n=p=>a.has(p.requester.locatorHash)?{value:pe.tuple(pe.Type.DEPENDENT,{locator:p.requester,descriptor:p.descriptor}),children:p.children.size>0?[{value:pe.tuple(pe.Type.NO_HINT,"...")}]:[]}:(a.add(p.requester.locatorHash),{value:pe.tuple(pe.Type.DEPENDENT,{locator:p.requester,descriptor:p.descriptor}),children:Object.fromEntries(Array.from(p.children.values(),h=>[j.stringifyLocator(h.requester),n(h)]))}),c=t.peerWarnings.find(p=>p.hash===e);return(await Ot.start({configuration:t.configuration,stdout:r.stdout,includeFooter:!1,includePrefix:!1},async p=>{let h=pe.mark(t.configuration),E=c?h.Cross:h.Check;if(p.reportInfo(0,`Package ${pe.pretty(t.configuration,s.subject,pe.Type.LOCATOR)} is requested to provide ${pe.pretty(t.configuration,s.ident,pe.Type.IDENT)} by its descendants`),p.reportSeparator(),p.reportInfo(0,pe.pretty(t.configuration,s.subject,pe.Type.LOCATOR)),Rs.emitTree({children:Object.fromEntries(Array.from(s.requests.values(),C=>[j.stringifyLocator(C.requester),n(C)]))},{configuration:t.configuration,stdout:r.stdout,json:!1}),p.reportSeparator(),s.provided.range==="missing:"){let C=c?"":" , but all peer requests are optional";p.reportInfo(0,`${E} Package ${pe.pretty(t.configuration,s.subject,pe.Type.LOCATOR)} does not provide ${pe.pretty(t.configuration,s.ident,pe.Type.IDENT)}${C}.`)}else{let C=t.storedResolutions.get(s.provided.descriptorHash);if(!C)throw new Error("Assertion failed: Expected the descriptor to be registered");let S=t.storedPackages.get(C);if(!S)throw new Error("Assertion failed: Expected the package to be registered");p.reportInfo(0,`${E} Package ${pe.pretty(t.configuration,s.subject,pe.Type.LOCATOR)} provides ${pe.pretty(t.configuration,s.ident,pe.Type.IDENT)} with version ${j.prettyReference(t.configuration,S.version??"0.0.0")}, ${c?"which does not satisfy all requests.":"which satisfies all requests"}`),c?.type===3&&(c.range?p.reportInfo(0,` The combined requested range is ${pe.pretty(t.configuration,c.range,pe.Type.RANGE)}`):p.reportInfo(0," Unfortunately, the requested ranges have no overlap"))}})).exitCode()}async function aot(e,t){return(await Ot.start({configuration:e.configuration,stdout:t.stdout,includeFooter:!1,includePrefix:!1},async s=>{let a=pe.mark(e.configuration),n=Ge.sortMap(e.peerRequirementNodes,[([,c])=>j.stringifyLocator(c.subject),([,c])=>j.stringifyIdent(c.ident)]);for(let[,c]of n.values()){if(!c.root)continue;let f=e.peerWarnings.find(E=>E.hash===c.hash),p=[...j.allPeerRequests(c)],h;if(p.length>2?h=` and ${p.length-1} other dependencies`:p.length===2?h=" and 1 other dependency":h="",c.provided.range!=="missing:"){let E=e.storedResolutions.get(c.provided.descriptorHash);if(!E)throw new Error("Assertion failed: Expected the resolution to have been registered");let C=e.storedPackages.get(E);if(!C)throw new Error("Assertion failed: Expected the provided package to have been registered");let S=`${pe.pretty(e.configuration,c.hash,pe.Type.CODE)} \u2192 ${f?a.Cross:a.Check} ${j.prettyLocator(e.configuration,c.subject)} provides ${j.prettyLocator(e.configuration,C)} to ${j.prettyLocator(e.configuration,p[0].requester)}${h}`;f?s.reportWarning(0,S):s.reportInfo(0,S)}else{let E=`${pe.pretty(e.configuration,c.hash,pe.Type.CODE)} \u2192 ${f?a.Cross:a.Check} ${j.prettyLocator(e.configuration,c.subject)} doesn't provide ${j.prettyIdent(e.configuration,c.ident)} to ${j.prettyLocator(e.configuration,p[0].requester)}${h}`;f?s.reportWarning(0,E):s.reportInfo(0,E)}}})).exitCode()}qe();Yt();Al();qe();qe();Dt();Yt();var oge=et(pi()),uC=class extends At{constructor(){super(...arguments);this.useYarnPath=he.Boolean("--yarn-path",{description:"Set the yarnPath setting even if the version can be accessed by Corepack"});this.onlyIfNeeded=he.Boolean("--only-if-needed",!1,{description:"Only lock the Yarn version if it isn't already locked"});this.version=he.String()}static{this.paths=[["set","version"]]}static{this.usage=at.Usage({description:"lock the Yarn version used by the project",details:"\n This command will set a specific release of Yarn to be used by Corepack: https://nodejs.org/api/corepack.html.\n\n By default it only will set the `packageManager` field at the root of your project, but if the referenced release cannot be represented this way, if you already have `yarnPath` configured, or if you set the `--yarn-path` command line flag, then the release will also be downloaded from the Yarn GitHub repository, stored inside your project, and referenced via the `yarnPath` settings from your project `.yarnrc.yml` file.\n\n A very good use case for this command is to enforce the version of Yarn used by any single member of your team inside the same project - by doing this you ensure that you have control over Yarn upgrades and downgrades (including on your deployment servers), and get rid of most of the headaches related to someone using a slightly different version and getting different behavior.\n\n The version specifier can be:\n\n - a tag:\n - `latest` / `berry` / `stable` -> the most recent stable berry (`>=2.0.0`) release\n - `canary` -> the most recent canary (release candidate) berry (`>=2.0.0`) release\n - `classic` -> the most recent classic (`^0.x || ^1.x`) release\n\n - a semver range (e.g. `2.x`) -> the most recent version satisfying the range (limited to berry releases)\n\n - a semver version (e.g. `2.4.1`, `1.22.1`)\n\n - a local file referenced through either a relative or absolute path\n\n - `self` -> the version used to invoke the command\n ",examples:[["Download the latest release from the Yarn repository","$0 set version latest"],["Download the latest canary release from the Yarn repository","$0 set version canary"],["Download the latest classic release from the Yarn repository","$0 set version classic"],["Download the most recent Yarn 3 build","$0 set version 3.x"],["Download a specific Yarn 2 build","$0 set version 2.0.0-rc.30"],["Switch back to a specific Yarn 1 release","$0 set version 1.22.1"],["Use a release from the local filesystem","$0 set version ./yarn.cjs"],["Use a release from a URL","$0 set version https://repo.yarnpkg.com/3.1.0/packages/yarnpkg-cli/bin/yarn.js"],["Download the version used to invoke the command","$0 set version self"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);if(this.onlyIfNeeded&&r.get("yarnPath")){let f=r.sources.get("yarnPath");if(!f)throw new Error("Assertion failed: Expected 'yarnPath' to have a source");let p=r.projectCwd??r.startingCwd;if(J.contains(p,f))return 0}let s=()=>{if(typeof An>"u")throw new it("The --install flag can only be used without explicit version specifier from the Yarn CLI");return`file://${process.argv[1]}`},a,n=(f,p)=>({version:p,url:f.replace(/\{\}/g,p)});if(this.version==="self")a={url:s(),version:An??"self"};else if(this.version==="latest"||this.version==="berry"||this.version==="stable")a=n("https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js",await Zv(r,"stable"));else if(this.version==="canary")a=n("https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js",await Zv(r,"canary"));else if(this.version==="classic")a={url:"https://classic.yarnpkg.com/latest.js",version:"classic"};else if(this.version.match(/^https?:/))a={url:this.version,version:"remote"};else if(this.version.match(/^\.{0,2}[\\/]/)||fe.isAbsolute(this.version))a={url:`file://${J.resolve(fe.toPortablePath(this.version))}`,version:"file"};else if(kr.satisfiesWithPrereleases(this.version,">=2.0.0"))a=n("https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js",this.version);else if(kr.satisfiesWithPrereleases(this.version,"^0.x || ^1.x"))a=n("https://github.com/yarnpkg/yarn/releases/download/v{}/yarn-{}.js",this.version);else if(kr.validRange(this.version))a=n("https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js",await lot(r,this.version));else throw new it(`Invalid version descriptor "${this.version}"`);return(await Ot.start({configuration:r,stdout:this.context.stdout,includeLogs:!this.context.quiet},async f=>{let p=async()=>{let h="file://";return a.url.startsWith(h)?(f.reportInfo(0,`Retrieving ${pe.pretty(r,a.url,pe.Type.PATH)}`),await le.readFilePromise(a.url.slice(h.length))):(f.reportInfo(0,`Downloading ${pe.pretty(r,a.url,pe.Type.URL)}`),await nn.get(a.url,{configuration:r}))};await g5(r,a.version,p,{report:f,useYarnPath:this.useYarnPath})})).exitCode()}};async function lot(e,t){let s=(await nn.get("https://repo.yarnpkg.com/tags",{configuration:e,jsonResponse:!0})).tags.filter(a=>kr.satisfiesWithPrereleases(a,t));if(s.length===0)throw new it(`No matching release found for range ${pe.pretty(e,t,pe.Type.RANGE)}.`);return s[0]}async function Zv(e,t){let r=await nn.get("https://repo.yarnpkg.com/tags",{configuration:e,jsonResponse:!0});if(!r.latest[t])throw new it(`Tag ${pe.pretty(e,t,pe.Type.RANGE)} not found`);return r.latest[t]}async function g5(e,t,r,{report:s,useYarnPath:a}){let n,c=async()=>(typeof n>"u"&&(n=await r()),n);if(t===null){let te=await c();await le.mktempPromise(async ie=>{let ue=J.join(ie,"yarn.cjs");await le.writeFilePromise(ue,te);let{stdout:ae}=await qr.execvp(process.execPath,[fe.fromPortablePath(ue),"--version"],{cwd:ie,env:{...e.env,YARN_IGNORE_PATH:"1"}});if(t=ae.trim(),!oge.default.valid(t))throw new Error(`Invalid semver version. ${pe.pretty(e,"yarn --version",pe.Type.CODE)} returned: +${t}`)})}let f=e.projectCwd??e.startingCwd,p=J.resolve(f,".yarn/releases"),h=J.resolve(p,`yarn-${t}.cjs`),E=J.relative(e.startingCwd,h),C=Ge.isTaggedYarnVersion(t),S=e.get("yarnPath"),x=!C,I=x||!!S||!!a;if(a===!1){if(x)throw new Lt(0,"You explicitly opted out of yarnPath usage in your command line, but the version you specified cannot be represented by Corepack");I=!1}else!I&&!process.env.COREPACK_ROOT&&(s.reportWarning(0,`You don't seem to have ${pe.applyHyperlink(e,"Corepack","https://nodejs.org/api/corepack.html")} enabled; we'll have to rely on ${pe.applyHyperlink(e,"yarnPath","https://yarnpkg.com/configuration/yarnrc#yarnPath")} instead`),I=!0);if(I){let te=await c();s.reportInfo(0,`Saving the new release in ${pe.pretty(e,E,"magenta")}`),await le.removePromise(J.dirname(h)),await le.mkdirPromise(J.dirname(h),{recursive:!0}),await le.writeFilePromise(h,te,{mode:493}),await ze.updateConfiguration(f,{yarnPath:J.relative(f,h)})}else await le.removePromise(J.dirname(h)),await ze.updateConfiguration(f,{yarnPath:ze.deleteProperty});let T=await _t.tryFind(f)||new _t;T.packageManager=`yarn@${C?t:await Zv(e,"stable")}`;let O={};T.exportTo(O);let U=J.join(f,_t.fileName),V=`${JSON.stringify(O,null,T.indent)} +`;return await le.changeFilePromise(U,V,{automaticNewlines:!0}),{bundleVersion:t}}function age(e){return Ir[jx(e)]}var cot=/## (?YN[0-9]{4}) - `(?[A-Z_]+)`\n\n(?
(?:.(?!##))+)/gs;async function uot(e){let r=`https://repo.yarnpkg.com/${Ge.isTaggedYarnVersion(An)?An:await Zv(e,"canary")}/packages/docusaurus/docs/advanced/01-general-reference/error-codes.mdx`,s=await nn.get(r,{configuration:e});return new Map(Array.from(s.toString().matchAll(cot),({groups:a})=>{if(!a)throw new Error("Assertion failed: Expected the match to have been successful");let n=age(a.code);if(a.name!==n)throw new Error(`Assertion failed: Invalid error code data: Expected "${a.name}" to be named "${n}"`);return[a.code,a.details]}))}var fC=class extends At{constructor(){super(...arguments);this.code=he.String({required:!1,validator:W2(SE(),[q2(/^YN[0-9]{4}$/)])});this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["explain"]]}static{this.usage=at.Usage({description:"explain an error code",details:` + When the code argument is specified, this command prints its name and its details. + + When used without arguments, this command lists all error codes and their names. + `,examples:[["Explain an error code","$0 explain YN0006"],["List all error codes","$0 explain"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);if(typeof this.code<"u"){let s=age(this.code),a=pe.pretty(r,s,pe.Type.CODE),n=this.cli.format().header(`${this.code} - ${a}`),f=(await uot(r)).get(this.code),p=typeof f<"u"?pe.jsonOrPretty(this.json,r,pe.tuple(pe.Type.MARKDOWN,{text:f,format:this.cli.format(),paragraphs:!0})):`This error code does not have a description. + +You can help us by editing this page on GitHub \u{1F642}: +${pe.jsonOrPretty(this.json,r,pe.tuple(pe.Type.URL,"https://github.com/yarnpkg/berry/blob/master/packages/docusaurus/docs/advanced/01-general-reference/error-codes.mdx"))} +`;this.json?this.context.stdout.write(`${JSON.stringify({code:this.code,name:s,details:p})} +`):this.context.stdout.write(`${n} + +${p} +`)}else{let s={children:Ge.mapAndFilter(Object.entries(Ir),([a,n])=>Number.isNaN(Number(a))?Ge.mapAndFilter.skip:{label:Kf(Number(a)),value:pe.tuple(pe.Type.CODE,n)})};Rs.emitTree(s,{configuration:r,stdout:this.context.stdout,json:this.json})}}};qe();Dt();Yt();var lge=et(zo()),AC=class extends At{constructor(){super(...arguments);this.all=he.Boolean("-A,--all",!1,{description:"Print versions of a package from the whole project"});this.recursive=he.Boolean("-R,--recursive",!1,{description:"Print information for all packages, including transitive dependencies"});this.extra=he.Array("-X,--extra",[],{description:"An array of requests of extra data provided by plugins"});this.cache=he.Boolean("--cache",!1,{description:"Print information about the cache entry of a package (path, size, checksum)"});this.dependents=he.Boolean("--dependents",!1,{description:"Print all dependents for each matching package"});this.manifest=he.Boolean("--manifest",!1,{description:"Print data obtained by looking at the package archive (license, homepage, ...)"});this.nameOnly=he.Boolean("--name-only",!1,{description:"Only print the name for the matching packages"});this.virtuals=he.Boolean("--virtuals",!1,{description:"Print each instance of the virtual packages"});this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.patterns=he.Rest()}static{this.paths=[["info"]]}static{this.usage=at.Usage({description:"see information related to packages",details:"\n This command prints various information related to the specified packages, accepting glob patterns.\n\n By default, if the locator reference is missing, Yarn will default to print the information about all the matching direct dependencies of the package for the active workspace. To instead print all versions of the package that are direct dependencies of any of your workspaces, use the `-A,--all` flag. Adding the `-R,--recursive` flag will also report transitive dependencies.\n\n Some fields will be hidden by default in order to keep the output readable, but can be selectively displayed by using additional options (`--dependents`, `--manifest`, `--virtuals`, ...) described in the option descriptions.\n\n Note that this command will only print the information directly related to the selected packages - if you wish to know why the package is there in the first place, use `yarn why` which will do just that (it also provides a `-R,--recursive` flag that may be of some help).\n ",examples:[["Show information about Lodash","$0 info lodash"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Kr.find(r);if(!a&&!this.all)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let c=new Set(this.extra);this.cache&&c.add("cache"),this.dependents&&c.add("dependents"),this.manifest&&c.add("manifest");let f=(ie,{recursive:ue})=>{let ae=ie.anchoredLocator.locatorHash,ge=new Map,Ae=[ae];for(;Ae.length>0;){let Ce=Ae.shift();if(ge.has(Ce))continue;let Ee=s.storedPackages.get(Ce);if(typeof Ee>"u")throw new Error("Assertion failed: Expected the package to be registered");if(ge.set(Ce,Ee),j.isVirtualLocator(Ee)&&Ae.push(j.devirtualizeLocator(Ee).locatorHash),!(!ue&&Ce!==ae))for(let d of Ee.dependencies.values()){let Se=s.storedResolutions.get(d.descriptorHash);if(typeof Se>"u")throw new Error("Assertion failed: Expected the resolution to be registered");Ae.push(Se)}}return ge.values()},p=({recursive:ie})=>{let ue=new Map;for(let ae of s.workspaces)for(let ge of f(ae,{recursive:ie}))ue.set(ge.locatorHash,ge);return ue.values()},h=({all:ie,recursive:ue})=>ie&&ue?s.storedPackages.values():ie?p({recursive:ue}):f(a,{recursive:ue}),E=({all:ie,recursive:ue})=>{let ae=h({all:ie,recursive:ue}),ge=this.patterns.map(Ee=>{let d=j.parseLocator(Ee),Se=lge.default.makeRe(j.stringifyIdent(d)),Be=j.isVirtualLocator(d),me=Be?j.devirtualizeLocator(d):d;return ce=>{let Z=j.stringifyIdent(ce);if(!Se.test(Z))return!1;if(d.reference==="unknown")return!0;let De=j.isVirtualLocator(ce),Qe=De?j.devirtualizeLocator(ce):ce;return!(Be&&De&&d.reference!==ce.reference||me.reference!==Qe.reference)}}),Ae=Ge.sortMap([...ae],Ee=>j.stringifyLocator(Ee));return{selection:Ae.filter(Ee=>ge.length===0||ge.some(d=>d(Ee))),sortedLookup:Ae}},{selection:C,sortedLookup:S}=E({all:this.all,recursive:this.recursive});if(C.length===0)throw new it("No package matched your request");let x=new Map;if(this.dependents)for(let ie of S)for(let ue of ie.dependencies.values()){let ae=s.storedResolutions.get(ue.descriptorHash);if(typeof ae>"u")throw new Error("Assertion failed: Expected the resolution to be registered");Ge.getArrayWithDefault(x,ae).push(ie)}let I=new Map;for(let ie of S){if(!j.isVirtualLocator(ie))continue;let ue=j.devirtualizeLocator(ie);Ge.getArrayWithDefault(I,ue.locatorHash).push(ie)}let T={},O={children:T},U=r.makeFetcher(),V={project:s,fetcher:U,cache:n,checksums:s.storedChecksums,report:new ki,cacheOptions:{skipIntegrityCheck:!0}},te=[async(ie,ue,ae)=>{if(!ue.has("manifest"))return;let ge=await U.fetch(ie,V),Ae;try{Ae=await _t.find(ge.prefixPath,{baseFs:ge.packageFs})}finally{ge.releaseFs?.()}ae("Manifest",{License:pe.tuple(pe.Type.NO_HINT,Ae.license),Homepage:pe.tuple(pe.Type.URL,Ae.raw.homepage??null)})},async(ie,ue,ae)=>{if(!ue.has("cache"))return;let ge=s.storedChecksums.get(ie.locatorHash)??null,Ae=n.getLocatorPath(ie,ge),Ce;if(Ae!==null)try{Ce=await le.statPromise(Ae)}catch{}let Ee=typeof Ce<"u"?[Ce.size,pe.Type.SIZE]:void 0;ae("Cache",{Checksum:pe.tuple(pe.Type.NO_HINT,ge),Path:pe.tuple(pe.Type.PATH,Ae),Size:Ee})}];for(let ie of C){let ue=j.isVirtualLocator(ie);if(!this.virtuals&&ue)continue;let ae={},ge={value:[ie,pe.Type.LOCATOR],children:ae};if(T[j.stringifyLocator(ie)]=ge,this.nameOnly){delete ge.children;continue}let Ae=I.get(ie.locatorHash);typeof Ae<"u"&&(ae.Instances={label:"Instances",value:pe.tuple(pe.Type.NUMBER,Ae.length)}),ae.Version={label:"Version",value:pe.tuple(pe.Type.NO_HINT,ie.version)};let Ce=(d,Se)=>{let Be={};if(ae[d]=Be,Array.isArray(Se))Be.children=Se.map(me=>({value:me}));else{let me={};Be.children=me;for(let[ce,Z]of Object.entries(Se))typeof Z>"u"||(me[ce]={label:ce,value:Z})}};if(!ue){for(let d of te)await d(ie,c,Ce);await r.triggerHook(d=>d.fetchPackageInfo,ie,c,Ce)}ie.bin.size>0&&!ue&&Ce("Exported Binaries",[...ie.bin.keys()].map(d=>pe.tuple(pe.Type.PATH,d)));let Ee=x.get(ie.locatorHash);typeof Ee<"u"&&Ee.length>0&&Ce("Dependents",Ee.map(d=>pe.tuple(pe.Type.LOCATOR,d))),ie.dependencies.size>0&&!ue&&Ce("Dependencies",[...ie.dependencies.values()].map(d=>{let Se=s.storedResolutions.get(d.descriptorHash),Be=typeof Se<"u"?s.storedPackages.get(Se)??null:null;return pe.tuple(pe.Type.RESOLUTION,{descriptor:d,locator:Be})})),ie.peerDependencies.size>0&&ue&&Ce("Peer dependencies",[...ie.peerDependencies.values()].map(d=>{let Se=ie.dependencies.get(d.identHash),Be=typeof Se<"u"?s.storedResolutions.get(Se.descriptorHash)??null:null,me=Be!==null?s.storedPackages.get(Be)??null:null;return pe.tuple(pe.Type.RESOLUTION,{descriptor:d,locator:me})}))}Rs.emitTree(O,{configuration:r,json:this.json,stdout:this.context.stdout,separators:this.nameOnly?0:2})}};qe();Dt();vc();var HT=et(Rg());Yt();var m5=et(pi());Al();var fot=[{selector:e=>e===-1,name:"nodeLinker",value:"node-modules"},{selector:e=>e!==-1&&e<8,name:"enableGlobalCache",value:!1},{selector:e=>e!==-1&&e<8,name:"compressionLevel",value:"mixed"},{selector:e=>e<9,name:"approvedGitRepositories",value:["**"]},{selector:e=>e<9,name:"enableScripts",value:!0}],pC=class extends At{constructor(){super(...arguments);this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.immutable=he.Boolean("--immutable",{description:"Abort with an error exit code if the lockfile was to be modified"});this.immutableCache=he.Boolean("--immutable-cache",{description:"Abort with an error exit code if the cache folder was to be modified"});this.refreshLockfile=he.Boolean("--refresh-lockfile",{description:"Refresh the package metadata stored in the lockfile"});this.checkCache=he.Boolean("--check-cache",{description:"Always refetch the packages and ensure that their checksums are consistent"});this.checkResolutions=he.Boolean("--check-resolutions",{description:"Validates that the package resolutions are coherent"});this.inlineBuilds=he.Boolean("--inline-builds",{description:"Verbosely print the output of the build steps of dependencies"});this.mode=he.String("--mode",{description:"Change what artifacts installs generate",validator:ks(Oa)});this.cacheFolder=he.String("--cache-folder",{hidden:!0});this.frozenLockfile=he.Boolean("--frozen-lockfile",{hidden:!0});this.ignoreEngines=he.Boolean("--ignore-engines",{hidden:!0});this.nonInteractive=he.Boolean("--non-interactive",{hidden:!0});this.preferOffline=he.Boolean("--prefer-offline",{hidden:!0});this.production=he.Boolean("--production",{hidden:!0});this.registry=he.String("--registry",{hidden:!0});this.silent=he.Boolean("--silent",{hidden:!0});this.networkTimeout=he.String("--network-timeout",{hidden:!0})}static{this.paths=[["install"],at.Default]}static{this.usage=at.Usage({description:"install the project dependencies",details:"\n This command sets up your project if needed. The installation is split into four different steps that each have their own characteristics:\n\n - **Resolution:** First the package manager will resolve your dependencies. The exact way a dependency version is privileged over another isn't standardized outside of the regular semver guarantees. If a package doesn't resolve to what you would expect, check that all dependencies are correctly declared (also check our website for more information: ).\n\n - **Fetch:** Then we download all the dependencies if needed, and make sure that they're all stored within our cache (check the value of `cacheFolder` in `yarn config` to see where the cache files are stored).\n\n - **Link:** Then we send the dependency tree information to internal plugins tasked with writing them on the disk in some form (for example by generating the `.pnp.cjs` file you might know).\n\n - **Build:** Once the dependency tree has been written on the disk, the package manager will now be free to run the build scripts for all packages that might need it, in a topological order compatible with the way they depend on one another. See https://yarnpkg.com/advanced/lifecycle-scripts for detail.\n\n Note that running this command is not part of the recommended workflow. Yarn supports zero-installs, which means that as long as you store your cache and your `.pnp.cjs` file inside your repository, everything will work without requiring any install right after cloning your repository or switching branches.\n\n If the `--immutable` option is set (defaults to true on CI), Yarn will abort with an error exit code if the lockfile was to be modified (other paths can be added using the `immutablePatterns` configuration setting). For backward compatibility we offer an alias under the name of `--frozen-lockfile`, but it will be removed in a later release.\n\n If the `--immutable-cache` option is set, Yarn will abort with an error exit code if the cache folder was to be modified (either because files would be added, or because they'd be removed).\n\n If the `--refresh-lockfile` option is set, Yarn will keep the same resolution for the packages currently in the lockfile but will refresh their metadata. If used together with `--immutable`, it can validate that the lockfile information are consistent. This flag is enabled by default when Yarn detects it runs within a pull request context.\n\n If the `--check-cache` option is set, Yarn will always refetch the packages and will ensure that their checksum matches what's 1/ described in the lockfile 2/ inside the existing cache files (if present). This is recommended as part of your CI workflow if you're both following the Zero-Installs model and accepting PRs from third-parties, as they'd otherwise have the ability to alter the checked-in packages before submitting them.\n\n If the `--inline-builds` option is set, Yarn will verbosely print the output of the build steps of your dependencies (instead of writing them into individual files). This is likely useful mostly for debug purposes only when using Docker-like environments.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n ",examples:[["Install the project","$0 install"],["Validate a project when using Zero-Installs","$0 install --immutable --immutable-cache"],["Validate a project when using Zero-Installs (slightly safer if you accept external PRs)","$0 install --immutable --immutable-cache --check-cache"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);typeof this.inlineBuilds<"u"&&r.useWithSource("",{enableInlineBuilds:this.inlineBuilds},r.startingCwd,{overwrite:!0});let s=!!process.env.FUNCTION_TARGET||!!process.env.GOOGLE_RUNTIME,a=await PI({configuration:r,stdout:this.context.stdout},[{option:this.ignoreEngines,message:"The --ignore-engines option is deprecated; engine checking isn't a core feature anymore",error:!HT.default.VERCEL},{option:this.registry,message:"The --registry option is deprecated; prefer setting npmRegistryServer in your .yarnrc.yml file"},{option:this.preferOffline,message:"The --prefer-offline flag is deprecated; use the --cached flag with 'yarn add' instead",error:!HT.default.VERCEL},{option:this.production,message:"The --production option is deprecated on 'install'; use 'yarn workspaces focus' instead",error:!0},{option:this.nonInteractive,message:"The --non-interactive option is deprecated",error:!s},{option:this.frozenLockfile,message:"The --frozen-lockfile option is deprecated; use --immutable and/or --immutable-cache instead",callback:()=>this.immutable=this.frozenLockfile},{option:this.cacheFolder,message:"The cache-folder option has been deprecated; use rc settings instead",error:!HT.default.NETLIFY}]);if(a!==null)return a;let n=this.mode==="update-lockfile";if(n&&(this.immutable||this.immutableCache))throw new it(`${pe.pretty(r,"--immutable",pe.Type.CODE)} and ${pe.pretty(r,"--immutable-cache",pe.Type.CODE)} cannot be used with ${pe.pretty(r,"--mode=update-lockfile",pe.Type.CODE)}`);let c=(this.immutable??r.get("enableImmutableInstalls"))&&!n,f=this.immutableCache&&!n;if(r.projectCwd!==null){let T=await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async O=>{let U=!1;await hot(r,c)&&(O.reportInfo(48,"Automatically removed core plugins that are now builtins \u{1F44D}"),U=!0),await pot(r,c)&&(O.reportInfo(48,"Automatically fixed merge conflicts \u{1F44D}"),U=!0),U&&O.reportSeparator()});if(T.hasErrors())return T.exitCode()}if(r.projectCwd!==null){let T=await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async O=>{if(ze.telemetry?.isNew)ze.telemetry.commitTips(),O.reportInfo(65,"Yarn will periodically gather anonymous telemetry: https://yarnpkg.com/advanced/telemetry"),O.reportInfo(65,`Run ${pe.pretty(r,"yarn config set --home enableTelemetry 0",pe.Type.CODE)} to disable`),O.reportSeparator();else if(ze.telemetry?.shouldShowTips){let U=await nn.get("https://repo.yarnpkg.com/tags",{configuration:r,jsonResponse:!0}).catch(()=>null);if(U!==null){let V=null;if(An!==null){let ie=m5.default.prerelease(An)?"canary":"stable",ue=U.latest[ie];ue!==null&&m5.default.gt(ue,An)&&(V=[ie,ue])}if(V)ze.telemetry.commitTips(),O.reportInfo(88,`${pe.applyStyle(r,`A new ${V[0]} version of Yarn is available:`,pe.Style.BOLD)} ${j.prettyReference(r,V[1])}!`),O.reportInfo(88,`Upgrade now by running ${pe.pretty(r,`yarn set version ${V[1]}`,pe.Type.CODE)}`),O.reportSeparator();else{let te=ze.telemetry.selectTip(U.tips);te&&(O.reportInfo(89,pe.pretty(r,te.message,pe.Type.MARKDOWN_INLINE)),te.url&&O.reportInfo(89,`Learn more at ${te.url}`),O.reportSeparator())}}}});if(T.hasErrors())return T.exitCode()}let{project:p,workspace:h}=await Rt.find(r,this.context.cwd),E=p.lockfileLastVersion;if(E!==null){let T=await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async O=>{let U={};for(let V of fot)V.selector(E)&&typeof r.sources.get(V.name)>"u"&&(r.use("",{[V.name]:V.value},p.cwd,{overwrite:!0}),U[V.name]=V.value);Object.keys(U).length>0&&(await ze.updateConfiguration(p.cwd,U),O.reportInfo(87,"Migrated your project to the latest Yarn version \u{1F680}"),O.reportSeparator())});if(T.hasErrors())return T.exitCode()}let C=await Kr.find(r,{immutable:f,check:this.checkCache});if(!h)throw new ar(p.cwd,this.context.cwd);await p.restoreInstallState({restoreResolutions:!1});let S=r.get("enableHardenedMode");S&&typeof r.sources.get("enableHardenedMode")>"u"&&await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async T=>{T.reportWarning(0,"Yarn detected that the current workflow is executed from a public pull request. For safety the hardened mode has been enabled."),T.reportWarning(0,`It will prevent malicious lockfile manipulations, in exchange for a slower install time. You can opt-out if necessary; check our ${pe.applyHyperlink(r,"documentation","https://yarnpkg.com/features/security#hardened-mode")} for more details.`),T.reportSeparator()}),(this.refreshLockfile??S)&&(p.lockfileNeedsRefresh=!0);let x=this.checkResolutions??S;return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,forceSectionAlignment:!0,includeLogs:!0,includeVersion:!0},async T=>{await p.install({cache:C,report:T,immutable:c,checkResolutions:x,mode:this.mode})})).exitCode()}},Aot="<<<<<<<";async function pot(e,t){if(!e.projectCwd)return!1;let r=J.join(e.projectCwd,Er.lockfile);if(!await le.existsPromise(r)||!(await le.readFilePromise(r,"utf8")).includes(Aot))return!1;if(t)throw new Lt(47,"Cannot autofix a lockfile when running an immutable install");let a=await qr.execvp("git",["rev-parse","MERGE_HEAD","HEAD"],{cwd:e.projectCwd});if(a.code!==0&&(a=await qr.execvp("git",["rev-parse","REBASE_HEAD","HEAD"],{cwd:e.projectCwd})),a.code!==0&&(a=await qr.execvp("git",["rev-parse","CHERRY_PICK_HEAD","HEAD"],{cwd:e.projectCwd})),a.code!==0)throw new Lt(83,"Git returned an error when trying to find the commits pertaining to the conflict");let n=await Promise.all(a.stdout.trim().split(/\n/).map(async f=>{let p=await qr.execvp("git",["show",`${f}:./${Er.lockfile}`],{cwd:e.projectCwd});if(p.code!==0)throw new Lt(83,`Git returned an error when trying to access the lockfile content in ${f}`);try{return cs(p.stdout)}catch{throw new Lt(46,"A variant of the conflicting lockfile failed to parse")}}));n=n.filter(f=>!!f.__metadata);for(let f of n){if(f.__metadata.version<7)for(let p of Object.keys(f)){if(p==="__metadata")continue;let h=j.parseDescriptor(p,!0),E=e.normalizeDependency(h),C=j.stringifyDescriptor(E);C!==p&&(f[C]=f[p],delete f[p])}for(let p of Object.keys(f)){if(p==="__metadata")continue;let h=f[p].checksum;typeof h>"u"||h.includes("/")||(f[p].checksum=`${f.__metadata.cacheKey}/${h}`)}}let c=Object.assign({},...n);c.__metadata.version=`${Math.min(...n.map(f=>parseInt(f.__metadata.version??0)))}`,c.__metadata.cacheKey="merged";for(let[f,p]of Object.entries(c))typeof p=="string"&&delete c[f];return await le.changeFilePromise(r,fl(c),{automaticNewlines:!0}),!0}async function hot(e,t){if(!e.projectCwd)return!1;let r=[],s=J.join(e.projectCwd,".yarn/plugins/@yarnpkg");return await ze.updateConfiguration(e.projectCwd,{plugins:n=>{if(!Array.isArray(n))return n;let c=n.filter(f=>{if(!f.path)return!0;let p=J.resolve(e.projectCwd,f.path),h=ZB.has(f.spec)&&J.contains(s,p);return h&&r.push(p),!h});return c.length===0?ze.deleteProperty:c.length===n.length?n:c}},{immutable:t})?(await Promise.all(r.map(async n=>{await le.removePromise(n)})),!0):!1}qe();Dt();Yt();var hC=class extends At{constructor(){super(...arguments);this.all=he.Boolean("-A,--all",!1,{description:"Link all workspaces belonging to the target projects to the current one"});this.private=he.Boolean("-p,--private",!1,{description:"Also link private workspaces belonging to the target projects to the current one"});this.relative=he.Boolean("-r,--relative",!1,{description:"Link workspaces using relative paths instead of absolute paths"});this.destinations=he.Rest()}static{this.paths=[["link"]]}static{this.usage=at.Usage({description:"connect the local project to another one",details:"\n This command will set a new `resolutions` field in the project-level manifest and point it to the workspace at the specified location (even if part of another project).\n ",examples:[["Register one or more remote workspaces for use in the current project","$0 link ~/ts-loader ~/jest"],["Register all workspaces from a remote project for use in the current project","$0 link ~/jest --all"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Kr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=s.topLevelWorkspace,f=[];for(let p of this.destinations){let h=J.resolve(this.context.cwd,fe.toPortablePath(p)),E=await ze.find(h,this.context.plugins,{useRc:!1,strict:!1}),{project:C,workspace:S}=await Rt.find(E,h);if(s.cwd===C.cwd)throw new it(`Invalid destination '${p}'; Can't link the project to itself`);if(!S)throw new ar(C.cwd,h);if(this.all){let x=!1;for(let I of C.workspaces)I.manifest.name&&(!I.manifest.private||this.private)&&(f.push(I),x=!0);if(!x)throw new it(`No workspace found to be linked in the target project: ${p}`)}else{if(!S.manifest.name)throw new it(`The target workspace at '${p}' doesn't have a name and thus cannot be linked`);if(S.manifest.private&&!this.private)throw new it(`The target workspace at '${p}' is marked private - use the --private flag to link it anyway`);f.push(S)}}for(let p of f){let h=j.stringifyIdent(p.anchoredLocator),E=this.relative?J.relative(s.cwd,p.cwd):p.cwd;c.manifest.resolutions.push({pattern:{descriptor:{fullName:h}},reference:`portal:${E}`})}return await s.installWithNewReport({stdout:this.context.stdout},{cache:n})}};Yt();var dC=class extends At{constructor(){super(...arguments);this.args=he.Proxy()}static{this.paths=[["node"]]}static{this.usage=at.Usage({description:"run node with the hook already setup",details:` + This command simply runs Node. It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment). + + The Node process will use the exact same version of Node as the one used to run Yarn itself, which might be a good way to ensure that your commands always use a consistent Node version. + `,examples:[["Run a Node script","$0 node ./my-script.js"]]})}async execute(){return this.cli.run(["exec","node",...this.args])}};qe();Yt();var gC=class extends At{constructor(){super(...arguments);this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["plugin","check"]]}static{this.usage=at.Usage({category:"Plugin-related commands",description:"find all third-party plugins that differ from their own spec",details:` + Check only the plugins from https. + + If this command detects any plugin differences in the CI environment, it will throw an error. + `,examples:[["find all third-party plugins that differ from their own spec","$0 plugin check"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=await ze.findRcFiles(this.context.cwd);return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async n=>{for(let c of s)if(c.data?.plugins)for(let f of c.data.plugins){if(!f.checksum||!f.spec.match(/^https?:/))continue;let p=await nn.get(f.spec,{configuration:r}),h=Ln.makeHash(p);if(f.checksum===h)continue;let E=pe.pretty(r,f.path,pe.Type.PATH),C=pe.pretty(r,f.spec,pe.Type.URL),S=`${E} is different from the file provided by ${C}`;n.reportJson({...f,newChecksum:h}),n.reportError(0,S)}})).exitCode()}};qe();qe();Dt();Yt();var pge=Ie("os");qe();Dt();Yt();var cge=Ie("os");qe();vc();Yt();var dot="https://raw.githubusercontent.com/yarnpkg/berry/master/plugins.yml";async function Pm(e,t){let r=await nn.get(dot,{configuration:e}),s=cs(r.toString());return Object.fromEntries(Object.entries(s).filter(([a,n])=>!t||kr.satisfiesWithPrereleases(t,n.range??"<4.0.0-rc.1")))}var mC=class extends At{constructor(){super(...arguments);this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["plugin","list"]]}static{this.usage=at.Usage({category:"Plugin-related commands",description:"list the available official plugins",details:"\n This command prints the plugins available directly from the Yarn repository. Only those plugins can be referenced by name in `yarn plugin import`.\n ",examples:[["List the official plugins","$0 plugin list"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async a=>{let n=await Pm(r,An);for(let[c,{experimental:f,...p}]of Object.entries(n)){let h=c;f&&(h+=" [experimental]"),a.reportJson({name:c,experimental:f,...p}),a.reportInfo(null,h)}})).exitCode()}};var got=/^[0-9]+$/,mot=process.platform==="win32";function uge(e){return got.test(e)?`pull/${e}/head`:e}var yot=({repository:e,branch:t},r)=>[["git","init",fe.fromPortablePath(r)],["git","remote","add","origin",e],["git","fetch","origin","--depth=1",uge(t)],["git","reset","--hard","FETCH_HEAD"]],Eot=({branch:e})=>[["git","fetch","origin","--depth=1",uge(e),"--force"],["git","reset","--hard","FETCH_HEAD"],["git","clean","-dfx","-e","packages/yarnpkg-cli/bundles"]],Iot=({plugins:e,noMinify:t},r,s)=>[["yarn","build:cli",...new Array().concat(...e.map(a=>["--plugin",J.resolve(s,a)])),...t?["--no-minify"]:[],"|"],[mot?"move":"mv","packages/yarnpkg-cli/bundles/yarn.js",fe.fromPortablePath(r),"|"]],yC=class extends At{constructor(){super(...arguments);this.installPath=he.String("--path",{description:"The path where the repository should be cloned to"});this.repository=he.String("--repository","https://github.com/yarnpkg/berry.git",{description:"The repository that should be cloned"});this.branch=he.String("--branch","master",{description:"The branch of the repository that should be cloned"});this.plugins=he.Array("--plugin",[],{description:"An array of additional plugins that should be included in the bundle"});this.dryRun=he.Boolean("-n,--dry-run",!1,{description:"If set, the bundle will be built but not added to the project"});this.noMinify=he.Boolean("--no-minify",!1,{description:"Build a bundle for development (debugging) - non-minified and non-mangled"});this.force=he.Boolean("-f,--force",!1,{description:"Always clone the repository instead of trying to fetch the latest commits"});this.skipPlugins=he.Boolean("--skip-plugins",!1,{description:"Skip updating the contrib plugins"})}static{this.paths=[["set","version","from","sources"]]}static{this.usage=at.Usage({description:"build Yarn from master",details:` + This command will clone the Yarn repository into a temporary folder, then build it. The resulting bundle will then be copied into the local project. + + By default, it also updates all contrib plugins to the same commit the bundle is built from. This behavior can be disabled by using the \`--skip-plugins\` flag. + `,examples:[["Build Yarn from master","$0 set version from sources"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Rt.find(r,this.context.cwd),a=typeof this.installPath<"u"?J.resolve(this.context.cwd,fe.toPortablePath(this.installPath)):J.resolve(fe.toPortablePath((0,cge.tmpdir)()),"yarnpkg-sources",Ln.makeHash(this.repository).slice(0,6));return(await Ot.start({configuration:r,stdout:this.context.stdout},async c=>{await y5(this,{configuration:r,report:c,target:a}),c.reportSeparator(),c.reportInfo(0,"Building a fresh bundle"),c.reportSeparator();let f=await qr.execvp("git",["rev-parse","--short","HEAD"],{cwd:a,strict:!0}),p=J.join(a,`packages/yarnpkg-cli/bundles/yarn-${f.stdout.trim()}.js`);le.existsSync(p)||(await $v(Iot(this,p,a),{configuration:r,context:this.context,target:a}),c.reportSeparator());let h=await le.readFilePromise(p);if(!this.dryRun){let{bundleVersion:E}=await g5(r,null,async()=>h,{report:c});this.skipPlugins||await Cot(this,E,{project:s,report:c,target:a})}})).exitCode()}};async function $v(e,{configuration:t,context:r,target:s}){for(let[a,...n]of e){let c=n[n.length-1]==="|";if(c&&n.pop(),c)await qr.pipevp(a,n,{cwd:s,stdin:r.stdin,stdout:r.stdout,stderr:r.stderr,strict:!0});else{r.stdout.write(`${pe.pretty(t,` $ ${[a,...n].join(" ")}`,"grey")} +`);try{await qr.execvp(a,n,{cwd:s,strict:!0})}catch(f){throw r.stdout.write(f.stdout||f.stack),f}}}}async function y5(e,{configuration:t,report:r,target:s}){let a=!1;if(!e.force&&le.existsSync(J.join(s,".git"))){r.reportInfo(0,"Fetching the latest commits"),r.reportSeparator();try{await $v(Eot(e),{configuration:t,context:e.context,target:s}),a=!0}catch{r.reportSeparator(),r.reportWarning(0,"Repository update failed; we'll try to regenerate it")}}a||(r.reportInfo(0,"Cloning the remote repository"),r.reportSeparator(),await le.removePromise(s),await le.mkdirPromise(s,{recursive:!0}),await $v(yot(e,s),{configuration:t,context:e.context,target:s}))}async function Cot(e,t,{project:r,report:s,target:a}){let n=await Pm(r.configuration,t),c=new Set(Object.keys(n));for(let f of r.configuration.plugins.keys())c.has(f)&&await E5(f,e,{project:r,report:s,target:a})}qe();qe();Dt();Yt();var fge=et(pi()),Age=Ie("vm");var EC=class extends At{constructor(){super(...arguments);this.name=he.String();this.checksum=he.Boolean("--checksum",!0,{description:"Whether to care if this plugin is modified"})}static{this.paths=[["plugin","import"]]}static{this.usage=at.Usage({category:"Plugin-related commands",description:"download a plugin",details:` + This command downloads the specified plugin from its remote location and updates the configuration to reference it in further CLI invocations. + + Three types of plugin references are accepted: + + - If the plugin is stored within the Yarn repository, it can be referenced by name. + - Third-party plugins can be referenced directly through their public urls. + - Local plugins can be referenced by their path on the disk. + + If the \`--no-checksum\` option is set, Yarn will no longer care if the plugin is modified. + + Plugins cannot be downloaded from the npm registry, and aren't allowed to have dependencies (they need to be bundled into a single file, possibly thanks to the \`@yarnpkg/builder\` package). + `,examples:[['Download and activate the "@yarnpkg/plugin-exec" plugin',"$0 plugin import @yarnpkg/plugin-exec"],['Download and activate the "@yarnpkg/plugin-exec" plugin (shorthand)',"$0 plugin import exec"],["Download and activate a community plugin","$0 plugin import https://example.org/path/to/plugin.js"],["Activate a local plugin","$0 plugin import ./path/to/plugin.js"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);return(await Ot.start({configuration:r,stdout:this.context.stdout},async a=>{let{project:n}=await Rt.find(r,this.context.cwd),c,f;if(this.name.match(/^\.{0,2}[\\/]/)||fe.isAbsolute(this.name)){let p=J.resolve(this.context.cwd,fe.toPortablePath(this.name));a.reportInfo(0,`Reading ${pe.pretty(r,p,pe.Type.PATH)}`),c=J.relative(n.cwd,p),f=await le.readFilePromise(p)}else{let p;if(this.name.match(/^https?:/)){try{new URL(this.name)}catch{throw new Lt(52,`Plugin specifier "${this.name}" is neither a plugin name nor a valid url`)}c=this.name,p=this.name}else{let h=j.parseLocator(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-"));if(h.reference!=="unknown"&&!fge.default.valid(h.reference))throw new Lt(0,"Official plugins only accept strict version references. Use an explicit URL if you wish to download them from another location.");let E=j.stringifyIdent(h),C=await Pm(r,An);if(!Object.hasOwn(C,E)){let S=`Couldn't find a plugin named ${j.prettyIdent(r,h)} on the remote registry. +`;throw r.plugins.has(E)?S+=`A plugin named ${j.prettyIdent(r,h)} is already installed; possibly attempting to import a built-in plugin.`:S+=`Note that only the plugins referenced on our website (${pe.pretty(r,"https://github.com/yarnpkg/berry/blob/master/plugins.yml",pe.Type.URL)}) can be referenced by their name; any other plugin will have to be referenced through its public url (for example ${pe.pretty(r,"https://github.com/yarnpkg/berry/raw/master/packages/plugin-typescript/bin/%40yarnpkg/plugin-typescript.js",pe.Type.URL)}).`,new Lt(51,S)}c=E,p=C[E].url,h.reference!=="unknown"?p=p.replace(/\/master\//,`/${E}/${h.reference}/`):An!==null&&(p=p.replace(/\/master\//,`/@yarnpkg/cli/${An}/`))}a.reportInfo(0,`Downloading ${pe.pretty(r,p,"green")}`),f=await nn.get(p,{configuration:r})}await I5(c,f,{checksum:this.checksum,project:n,report:a})})).exitCode()}};async function I5(e,t,{checksum:r=!0,project:s,report:a}){let{configuration:n}=s,c={},f={exports:c};(0,Age.runInNewContext)(t.toString(),{module:f,exports:c});let h=`.yarn/plugins/${f.exports.name}.cjs`,E=J.resolve(s.cwd,h);a.reportInfo(0,`Saving the new plugin in ${pe.pretty(n,h,"magenta")}`),await le.mkdirPromise(J.dirname(E),{recursive:!0}),await le.writeFilePromise(E,t);let C={path:h,spec:e};r&&(C.checksum=Ln.makeHash(t)),await ze.addPlugin(s.cwd,[C])}var wot=({pluginName:e,noMinify:t},r)=>[["yarn",`build:${e}`,...t?["--no-minify"]:[],"|"]],IC=class extends At{constructor(){super(...arguments);this.installPath=he.String("--path",{description:"The path where the repository should be cloned to"});this.repository=he.String("--repository","https://github.com/yarnpkg/berry.git",{description:"The repository that should be cloned"});this.branch=he.String("--branch","master",{description:"The branch of the repository that should be cloned"});this.noMinify=he.Boolean("--no-minify",!1,{description:"Build a plugin for development (debugging) - non-minified and non-mangled"});this.force=he.Boolean("-f,--force",!1,{description:"Always clone the repository instead of trying to fetch the latest commits"});this.name=he.String()}static{this.paths=[["plugin","import","from","sources"]]}static{this.usage=at.Usage({category:"Plugin-related commands",description:"build a plugin from sources",details:` + This command clones the Yarn repository into a temporary folder, builds the specified contrib plugin and updates the configuration to reference it in further CLI invocations. + + The plugins can be referenced by their short name if sourced from the official Yarn repository. + `,examples:[['Build and activate the "@yarnpkg/plugin-exec" plugin',"$0 plugin import from sources @yarnpkg/plugin-exec"],['Build and activate the "@yarnpkg/plugin-exec" plugin (shorthand)',"$0 plugin import from sources exec"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=typeof this.installPath<"u"?J.resolve(this.context.cwd,fe.toPortablePath(this.installPath)):J.resolve(fe.toPortablePath((0,pge.tmpdir)()),"yarnpkg-sources",Ln.makeHash(this.repository).slice(0,6));return(await Ot.start({configuration:r,stdout:this.context.stdout},async n=>{let{project:c}=await Rt.find(r,this.context.cwd),f=j.parseIdent(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-")),p=j.stringifyIdent(f),h=await Pm(r,An);if(!Object.hasOwn(h,p))throw new Lt(51,`Couldn't find a plugin named "${p}" on the remote registry. Note that only the plugins referenced on our website (https://github.com/yarnpkg/berry/blob/master/plugins.yml) can be built and imported from sources.`);let E=p;await y5(this,{configuration:r,report:n,target:s}),await E5(E,this,{project:c,report:n,target:s})})).exitCode()}};async function E5(e,{context:t,noMinify:r},{project:s,report:a,target:n}){let c=e.replace(/@yarnpkg\//,""),{configuration:f}=s;a.reportSeparator(),a.reportInfo(0,`Building a fresh ${c}`),a.reportSeparator(),await $v(wot({pluginName:c,noMinify:r},n),{configuration:f,context:t,target:n}),a.reportSeparator();let p=J.resolve(n,`packages/${c}/bundles/${e}.js`),h=await le.readFilePromise(p);await I5(e,h,{project:s,report:a})}qe();Dt();Yt();var CC=class extends At{constructor(){super(...arguments);this.name=he.String()}static{this.paths=[["plugin","remove"]]}static{this.usage=at.Usage({category:"Plugin-related commands",description:"remove a plugin",details:` + This command deletes the specified plugin from the .yarn/plugins folder and removes it from the configuration. + + **Note:** The plugins have to be referenced by their name property, which can be obtained using the \`yarn plugin runtime\` command. Shorthands are not allowed. + `,examples:[["Remove a plugin imported from the Yarn repository","$0 plugin remove @yarnpkg/plugin-typescript"],["Remove a plugin imported from a local file","$0 plugin remove my-local-plugin"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Rt.find(r,this.context.cwd);return(await Ot.start({configuration:r,stdout:this.context.stdout},async n=>{let c=this.name,f=j.parseIdent(c);if(!r.plugins.has(c))throw new it(`${j.prettyIdent(r,f)} isn't referenced by the current configuration`);let p=`.yarn/plugins/${c}.cjs`,h=J.resolve(s.cwd,p);le.existsSync(h)&&(n.reportInfo(0,`Removing ${pe.pretty(r,p,pe.Type.PATH)}...`),await le.removePromise(h)),n.reportInfo(0,"Updating the configuration..."),await ze.updateConfiguration(s.cwd,{plugins:E=>{if(!Array.isArray(E))return E;let C=E.filter(S=>S.path!==p);return C.length===0?ze.deleteProperty:C.length===E.length?E:C}})})).exitCode()}};qe();Yt();var wC=class extends At{constructor(){super(...arguments);this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["plugin","runtime"]]}static{this.usage=at.Usage({category:"Plugin-related commands",description:"list the active plugins",details:` + This command prints the currently active plugins. Will be displayed both builtin plugins and external plugins. + `,examples:[["List the currently active plugins","$0 plugin runtime"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async a=>{for(let n of r.plugins.keys()){let c=this.context.plugins.plugins.has(n),f=n;c&&(f+=" [builtin]"),a.reportJson({name:n,builtin:c}),a.reportInfo(null,`${f}`)}})).exitCode()}};qe();qe();Yt();var BC=class extends At{constructor(){super(...arguments);this.idents=he.Rest()}static{this.paths=[["rebuild"]]}static{this.usage=at.Usage({description:"rebuild the project's native packages",details:` + This command will automatically cause Yarn to forget about previous compilations of the given packages and to run them again. + + Note that while Yarn forgets the compilation, the previous artifacts aren't erased from the filesystem and may affect the next builds (in good or bad). To avoid this, you may remove the .yarn/unplugged folder, or any other relevant location where packages might have been stored (Yarn may offer a way to do that automatically in the future). + + By default all packages will be rebuilt, but you can filter the list by specifying the names of the packages you want to clear from memory. + `,examples:[["Rebuild all packages","$0 rebuild"],["Rebuild fsevents only","$0 rebuild fsevents"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Kr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);let c=new Set;for(let f of this.idents)c.add(j.parseIdent(f).identHash);if(await s.restoreInstallState({restoreResolutions:!1}),await s.resolveEverything({cache:n,report:new ki}),c.size>0)for(let f of s.storedPackages.values())c.has(f.identHash)&&(s.storedBuildState.delete(f.locatorHash),s.skippedBuilds.delete(f.locatorHash));else s.storedBuildState.clear(),s.skippedBuilds.clear();return await s.installWithNewReport({stdout:this.context.stdout,quiet:this.context.quiet},{cache:n})}};qe();qe();qe();Yt();var C5=et(zo());Al();var vC=class extends At{constructor(){super(...arguments);this.all=he.Boolean("-A,--all",!1,{description:"Apply the operation to all workspaces from the current project"});this.mode=he.String("--mode",{description:"Change what artifacts installs generate",validator:ks(Oa)});this.patterns=he.Rest()}static{this.paths=[["remove"]]}static{this.usage=at.Usage({description:"remove dependencies from the project",details:` + This command will remove the packages matching the specified patterns from the current workspace. + + If the \`--mode=\` option is set, Yarn will change which artifacts are generated. The modes currently supported are: + + - \`skip-build\` will not run the build scripts at all. Note that this is different from setting \`enableScripts\` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run. + + - \`update-lockfile\` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost. + + This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them. + `,examples:[["Remove a dependency from the current project","$0 remove lodash"],["Remove a dependency from all workspaces at once","$0 remove lodash --all"],["Remove all dependencies starting with `eslint-`","$0 remove 'eslint-*'"],["Remove all dependencies with the `@babel` scope","$0 remove '@babel/*'"],["Remove all dependencies matching `react-dom` or `react-helmet`","$0 remove 'react-{dom,helmet}'"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Kr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=this.all?s.workspaces:[a],f=["dependencies","devDependencies","peerDependencies"],p=[],h=!1,E=[];for(let I of this.patterns){let T=!1,O=j.parseIdent(I);for(let U of c){let V=[...U.manifest.peerDependenciesMeta.keys()];for(let te of(0,C5.default)(V,I))U.manifest.peerDependenciesMeta.delete(te),h=!0,T=!0;for(let te of f){let ie=U.manifest.getForScope(te),ue=[...ie.values()].map(ae=>j.stringifyIdent(ae));for(let ae of(0,C5.default)(ue,j.stringifyIdent(O))){let{identHash:ge}=j.parseIdent(ae),Ae=ie.get(ge);if(typeof Ae>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");U.manifest[te].delete(ge),E.push([U,te,Ae]),h=!0,T=!0}}}T||p.push(I)}let C=p.length>1?"Patterns":"Pattern",S=p.length>1?"don't":"doesn't",x=this.all?"any":"this";if(p.length>0)throw new it(`${C} ${pe.prettyList(r,p,pe.Type.CODE)} ${S} match any packages referenced by ${x} workspace`);return h?(await r.triggerMultipleHooks(I=>I.afterWorkspaceDependencyRemoval,E),await s.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})):0}};qe();qe();Yt();var hge=Ie("util"),SC=class extends At{constructor(){super(...arguments);this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["run"]]}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);return(await Ot.start({configuration:r,stdout:this.context.stdout,json:this.json},async c=>{let f=a.manifest.scripts,p=Ge.sortMap(f.keys(),C=>C),h={breakLength:1/0,colors:r.get("enableColors"),maxArrayLength:2},E=p.reduce((C,S)=>Math.max(C,S.length),0);for(let[C,S]of f.entries())c.reportInfo(null,`${C.padEnd(E," ")} ${(0,hge.inspect)(S,h)}`),c.reportJson({name:C,script:S})})).exitCode()}};qe();qe();Yt();var DC=class extends At{constructor(){super(...arguments);this.inspect=he.String("--inspect",!1,{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"});this.inspectBrk=he.String("--inspect-brk",!1,{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"});this.topLevel=he.Boolean("-T,--top-level",!1,{description:"Check the root workspace for scripts and/or binaries instead of the current one"});this.binariesOnly=he.Boolean("-B,--binaries-only",!1,{description:"Ignore any user defined scripts and only check for binaries"});this.require=he.String("--require",{description:"Forwarded to the underlying Node process when executing a binary"});this.silent=he.Boolean("--silent",{hidden:!0});this.scriptName=he.String();this.args=he.Proxy()}static{this.paths=[["run"]]}static{this.usage=at.Usage({description:"run a script defined in the package.json",details:` + This command will run a tool. The exact tool that will be executed will depend on the current state of your workspace: + + - If the \`scripts\` field from your local package.json contains a matching script name, its definition will get executed. + + - Otherwise, if one of the local workspace's dependencies exposes a binary with a matching name, this binary will get executed. + + - Otherwise, if the specified name contains a colon character and if one of the workspaces in the project contains exactly one script with a matching name, then this script will get executed. + + Whatever happens, the cwd of the spawned process will be the workspace that declares the script (which makes it possible to call commands cross-workspaces using the third syntax). + `,examples:[["Run the tests from the local workspace","$0 run test"],['Same thing, but without the "run" keyword',"$0 test"],["Inspect Webpack while running","$0 run --inspect-brk webpack"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a,locator:n}=await Rt.find(r,this.context.cwd);await s.restoreInstallState();let c=this.topLevel?s.topLevelWorkspace.anchoredLocator:n;if(!this.binariesOnly&&await Cn.hasPackageScript(c,this.scriptName,{project:s}))return await Cn.executePackageScript(c,this.scriptName,this.args,{project:s,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});let f=await Cn.getPackageAccessibleBinaries(c,{project:s});if(f.get(this.scriptName)){let h=[];return this.inspect&&(typeof this.inspect=="string"?h.push(`--inspect=${this.inspect}`):h.push("--inspect")),this.inspectBrk&&(typeof this.inspectBrk=="string"?h.push(`--inspect-brk=${this.inspectBrk}`):h.push("--inspect-brk")),this.require&&h.push(`--require=${this.require}`),await Cn.executePackageAccessibleBinary(c,this.scriptName,this.args,{cwd:this.context.cwd,project:s,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,nodeArgs:h,packageAccessibleBinaries:f})}if(!this.topLevel&&!this.binariesOnly&&a&&this.scriptName.includes(":")){let E=(await Promise.all(s.workspaces.map(async C=>C.manifest.scripts.has(this.scriptName)?C:null))).filter(C=>C!==null);if(E.length===1)return await Cn.executeWorkspaceScript(E[0],this.scriptName,this.args,{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}if(this.topLevel)throw this.scriptName==="node-gyp"?new it(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${j.prettyLocator(r,n)}). This typically happens because some package depends on "node-gyp" to build itself, but didn't list it in their dependencies. To fix that, please run "yarn add node-gyp" into your top-level workspace. You also can open an issue on the repository of the specified package to suggest them to use an optional peer dependency.`):new it(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${j.prettyLocator(r,n)}).`);{if(this.scriptName==="global")throw new it("The 'yarn global' commands have been removed in 2.x - consider using 'yarn dlx' or a third-party plugin instead");let h=[this.scriptName].concat(this.args);for(let[E,C]of qI)for(let S of C)if(h.length>=S.length&&JSON.stringify(h.slice(0,S.length))===JSON.stringify(S))throw new it(`Couldn't find a script named "${this.scriptName}", but a matching command can be found in the ${E} plugin. You can install it with "yarn plugin import ${E}".`);throw new it(`Couldn't find a script named "${this.scriptName}".`)}}};qe();qe();Yt();var bC=class extends At{constructor(){super(...arguments);this.descriptor=he.String();this.resolution=he.String()}static{this.paths=[["set","resolution"]]}static{this.usage=at.Usage({description:"enforce a package resolution",details:'\n This command updates the resolution table so that `descriptor` is resolved by `resolution`.\n\n Note that by default this command only affect the current resolution table - meaning that this "manual override" will disappear if you remove the lockfile, or if the package disappear from the table. If you wish to make the enforced resolution persist whatever happens, edit the `resolutions` field in your top-level manifest.\n\n Note that no attempt is made at validating that `resolution` is a valid resolution entry for `descriptor`.\n ',examples:[["Force all instances of lodash@npm:^1.2.3 to resolve to 1.5.0","$0 set resolution lodash@npm:^1.2.3 npm:1.5.0"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Kr.find(r);if(await s.restoreInstallState({restoreResolutions:!1}),!a)throw new ar(s.cwd,this.context.cwd);let c=j.parseDescriptor(this.descriptor,!0),f=j.makeDescriptor(c,this.resolution);return s.storedDescriptors.set(c.descriptorHash,c),s.storedDescriptors.set(f.descriptorHash,f),s.resolutionAliases.set(c.descriptorHash,f.descriptorHash),await s.installWithNewReport({stdout:this.context.stdout},{cache:n})}};qe();Dt();Yt();var dge=et(zo()),PC=class extends At{constructor(){super(...arguments);this.all=he.Boolean("-A,--all",!1,{description:"Unlink all workspaces belonging to the target project from the current one"});this.leadingArguments=he.Rest()}static{this.paths=[["unlink"]]}static{this.usage=at.Usage({description:"disconnect the local project from another one",details:` + This command will remove any resolutions in the project-level manifest that would have been added via a yarn link with similar arguments. + `,examples:[["Unregister a remote workspace in the current project","$0 unlink ~/ts-loader"],["Unregister all workspaces from a remote project in the current project","$0 unlink ~/jest --all"],["Unregister all previously linked workspaces","$0 unlink --all"],["Unregister all workspaces matching a glob","$0 unlink '@babel/*' 'pkg-{a,b}'"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Kr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);let c=s.topLevelWorkspace,f=new Set;if(this.leadingArguments.length===0&&this.all)for(let{pattern:p,reference:h}of c.manifest.resolutions)h.startsWith("portal:")&&f.add(p.descriptor.fullName);if(this.leadingArguments.length>0)for(let p of this.leadingArguments){let h=J.resolve(this.context.cwd,fe.toPortablePath(p));if(Ge.isPathLike(p)){let E=await ze.find(h,this.context.plugins,{useRc:!1,strict:!1}),{project:C,workspace:S}=await Rt.find(E,h);if(!S)throw new ar(C.cwd,h);if(this.all){for(let x of C.workspaces)x.manifest.name&&f.add(j.stringifyIdent(x.anchoredLocator));if(f.size===0)throw new it("No workspace found to be unlinked in the target project")}else{if(!S.manifest.name)throw new it("The target workspace doesn't have a name and thus cannot be unlinked");f.add(j.stringifyIdent(S.anchoredLocator))}}else{let E=[...c.manifest.resolutions.map(({pattern:C})=>C.descriptor.fullName)];for(let C of(0,dge.default)(E,p))f.add(C)}}return c.manifest.resolutions=c.manifest.resolutions.filter(({pattern:p})=>!f.has(p.descriptor.fullName)),await s.installWithNewReport({stdout:this.context.stdout,quiet:this.context.quiet},{cache:n})}};qe();qe();qe();Yt();var gge=et(Vv()),w5=et(zo());Al();var xC=class extends At{constructor(){super(...arguments);this.interactive=he.Boolean("-i,--interactive",{description:"Offer various choices, depending on the detected upgrade paths"});this.fixed=he.Boolean("-F,--fixed",!1,{description:"Store dependency tags as-is instead of resolving them"});this.exact=he.Boolean("-E,--exact",!1,{description:"Don't use any semver modifier on the resolved range"});this.tilde=he.Boolean("-T,--tilde",!1,{description:"Use the `~` semver modifier on the resolved range"});this.caret=he.Boolean("-C,--caret",!1,{description:"Use the `^` semver modifier on the resolved range"});this.recursive=he.Boolean("-R,--recursive",!1,{description:"Resolve again ALL resolutions for those packages"});this.mode=he.String("--mode",{description:"Change what artifacts installs generate",validator:ks(Oa)});this.patterns=he.Rest()}static{this.paths=[["up"]]}static{this.usage=at.Usage({description:"upgrade dependencies across the project",details:"\n This command upgrades the packages matching the list of specified patterns to their latest available version across the whole project (regardless of whether they're part of `dependencies` or `devDependencies` - `peerDependencies` won't be affected). This is a project-wide command: all workspaces will be upgraded in the process.\n\n If `-R,--recursive` is set the command will change behavior and no other switch will be allowed. When operating under this mode `yarn up` will force all ranges matching the selected packages to be resolved again (often to the highest available versions) before being stored in the lockfile. It however won't touch your manifests anymore, so depending on your needs you might want to run both `yarn up` and `yarn up -R` to cover all bases.\n\n If `-i,--interactive` is set (or if the `preferInteractive` settings is toggled on) the command will offer various choices, depending on the detected upgrade paths. Some upgrades require this flag in order to resolve ambiguities.\n\n The, `-C,--caret`, `-E,--exact` and `-T,--tilde` options have the same meaning as in the `add` command (they change the modifier used when the range is missing or a tag, and are ignored when the range is explicitly set).\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n Generally you can see `yarn up` as a counterpart to what was `yarn upgrade --latest` in Yarn 1 (ie it ignores the ranges previously listed in your manifests), but unlike `yarn upgrade` which only upgraded dependencies in the current workspace, `yarn up` will upgrade all workspaces at the same time.\n\n This command accepts glob patterns as arguments (if valid Descriptors and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n **Note:** The ranges have to be static, only the package scopes and names can contain glob patterns.\n ",examples:[["Upgrade all instances of lodash to the latest release","$0 up lodash"],["Upgrade all instances of lodash to the latest release, but ask confirmation for each","$0 up lodash -i"],["Upgrade all instances of lodash to 1.2.3","$0 up lodash@1.2.3"],["Upgrade all instances of packages with the `@babel` scope to the latest release","$0 up '@babel/*'"],["Upgrade all instances of packages containing the word `jest` to the latest release","$0 up '*jest*'"],["Upgrade all instances of packages with the `@babel` scope to 7.0.0","$0 up '@babel/*@7.0.0'"]]})}static{this.schema=[V2("recursive",Vf.Forbids,["interactive","exact","tilde","caret"],{ignore:[void 0,!1]})]}async execute(){return this.recursive?await this.executeUpRecursive():await this.executeUpClassic()}async executeUpRecursive(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Kr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=[...s.storedDescriptors.values()],f=c.map(E=>j.stringifyIdent(E)),p=new Set;for(let E of this.patterns){if(j.parseDescriptor(E).range!=="unknown")throw new it("Ranges aren't allowed when using --recursive");for(let C of(0,w5.default)(f,E)){let S=j.parseIdent(C);p.add(S.identHash)}}let h=c.filter(E=>p.has(E.identHash));for(let E of h)s.storedDescriptors.delete(E.descriptorHash),s.storedResolutions.delete(E.descriptorHash);return await s.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})}async executeUpClassic(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Kr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=this.fixed,f=r.isInteractive({interactive:this.interactive,stdout:this.context.stdout}),p=Kv(this,s),h=f?["keep","reuse","project","latest"]:["project","latest"],E=[],C=[];for(let O of this.patterns){let U=!1,V=j.parseDescriptor(O),te=j.stringifyIdent(V);for(let ie of s.workspaces)for(let ue of["dependencies","devDependencies"]){let ge=[...ie.manifest.getForScope(ue).values()].map(Ce=>j.stringifyIdent(Ce)),Ae=te==="*"?ge:(0,w5.default)(ge,te);for(let Ce of Ae){let Ee=j.parseIdent(Ce),d=ie.manifest[ue].get(Ee.identHash);if(typeof d>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");let Se=j.makeDescriptor(Ee,V.range);E.push(Promise.resolve().then(async()=>[ie,ue,d,await zv(Se,{project:s,workspace:ie,cache:n,target:ue,fixed:c,modifier:p,strategies:h})])),U=!0}}U||C.push(O)}if(C.length>1)throw new it(`Patterns ${pe.prettyList(r,C,pe.Type.CODE)} don't match any packages referenced by any workspace`);if(C.length>0)throw new it(`Pattern ${pe.prettyList(r,C,pe.Type.CODE)} doesn't match any packages referenced by any workspace`);let S=await Promise.all(E),x=await uA.start({configuration:r,stdout:this.context.stdout,suggestInstall:!1},async O=>{for(let[,,U,{suggestions:V,rejections:te}]of S){let ie=V.filter(ue=>ue.descriptor!==null);if(ie.length===0){let[ue]=te;if(typeof ue>"u")throw new Error("Assertion failed: Expected an error to have been set");let ae=this.cli.error(ue);s.configuration.get("enableNetwork")?O.reportError(27,`${j.prettyDescriptor(r,U)} can't be resolved to a satisfying range + +${ae}`):O.reportError(27,`${j.prettyDescriptor(r,U)} can't be resolved to a satisfying range (note: network resolution has been disabled) + +${ae}`)}else ie.length>1&&!f&&O.reportError(27,`${j.prettyDescriptor(r,U)} has multiple possible upgrade strategies; use -i to disambiguate manually`)}});if(x.hasErrors())return x.exitCode();let I=!1,T=[];for(let[O,U,,{suggestions:V}]of S){let te,ie=V.filter(Ae=>Ae.descriptor!==null),ue=ie[0].descriptor,ae=ie.every(Ae=>j.areDescriptorsEqual(Ae.descriptor,ue));ie.length===1||ae?te=ue:(I=!0,{answer:te}=await(0,gge.prompt)({type:"select",name:"answer",message:`Which range do you want to use in ${j.prettyWorkspace(r,O)} \u276F ${U}?`,choices:V.map(({descriptor:Ae,name:Ce,reason:Ee})=>Ae?{name:Ce,hint:Ee,descriptor:Ae}:{name:Ce,hint:Ee,disabled:!0}),onCancel:()=>process.exit(130),result(Ae){return this.find(Ae,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let ge=O.manifest[U].get(te.identHash);if(typeof ge>"u")throw new Error("Assertion failed: This descriptor should have a matching entry");if(ge.descriptorHash!==te.descriptorHash)O.manifest[U].set(te.identHash,te),T.push([O,U,ge,te]);else{let Ae=r.makeResolver(),Ce={project:s,resolver:Ae},Ee=r.normalizeDependency(ge),d=Ae.bindDescriptor(Ee,O.anchoredLocator,Ce);s.forgetResolution(d)}}return await r.triggerMultipleHooks(O=>O.afterWorkspaceDependencyReplacement,T),I&&this.context.stdout.write(` +`),await s.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})}};qe();qe();Yt();var kC=class extends At{constructor(){super(...arguments);this.recursive=he.Boolean("-R,--recursive",!1,{description:"List, for each workspace, what are all the paths that lead to the dependency"});this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.peers=he.Boolean("--peers",!1,{description:"Also print the peer dependencies that match the specified name"});this.package=he.String()}static{this.paths=[["why"]]}static{this.usage=at.Usage({description:"display the reason why a package is needed",details:` + This command prints the exact reasons why a package appears in the dependency tree. Specify a version or range to determine why the dependency tree contains a specific version of a package. This is particularly useful when trying to find out why your project depends on lower versions. + + If \`-R,--recursive\` is set, the listing will go in depth and will list, for each workspaces, what are all the paths that lead to the dependency. Note that the display is somewhat optimized in that it will not print the package listing twice for a single package, so if you see a leaf named "Foo" when looking for "Bar", it means that "Foo" already got printed higher in the tree. + `,examples:[["Explain why lodash is used in your project","$0 why lodash"],["Explain why version 3.3.1 of lodash is in your project","$0 why lodash@3.3.1"],["Explain why version 3.X of lodash is in your project","$0 why lodash@^3"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let n=j.parseDescriptor(this.package,!1);if(n.range!=="unknown"&&kr.validRange(n.range)===null)throw new it(`Expected a valid semver range, got ${n.range}`);let c=this.recursive?vot(s,n,{configuration:r,peers:this.peers}):Bot(s,n,{configuration:r,peers:this.peers});Rs.emitTree(c,{configuration:r,stdout:this.context.stdout,json:this.json,separators:1})}};function Bot(e,t,{configuration:r,peers:s}){let a=Ge.sortMap(e.storedPackages.values(),f=>j.stringifyLocator(f)),n={},c={children:n};for(let f of a){let p={};for(let E of f.dependencies.values()){if(!s&&f.peerDependencies.has(E.identHash))continue;let C=e.storedResolutions.get(E.descriptorHash);if(!C)throw new Error("Assertion failed: The resolution should have been registered");let S=e.storedPackages.get(C);if(!S)throw new Error("Assertion failed: The package should have been registered");if(!j.areIdentsEqual(S,t)||!j.isPackageInRange(S,t.range))continue;{let I=j.stringifyLocator(f);n[I]={value:[f,pe.Type.LOCATOR],children:p}}let x=j.stringifyLocator(S);p[x]={value:[{descriptor:E,locator:S},pe.Type.DEPENDENT]}}}return c}function vot(e,t,{configuration:r,peers:s}){let a=Ge.sortMap(e.workspaces,S=>j.stringifyLocator(S.anchoredLocator)),n=new Set,c=new Set,f=S=>{if(n.has(S.locatorHash))return c.has(S.locatorHash);if(n.add(S.locatorHash),j.areIdentsEqual(S,t)&&j.isPackageInRange(S,t.range))return c.add(S.locatorHash),!0;let x=!1;for(let I of S.dependencies.values()){if(!s&&S.peerDependencies.has(I.identHash))continue;let T=e.storedResolutions.get(I.descriptorHash);if(!T)throw new Error("Assertion failed: The resolution should have been registered");let O=e.storedPackages.get(T);if(!O)throw new Error("Assertion failed: The package should have been registered");f(O)&&(x=!0)}return x&&c.add(S.locatorHash),x};for(let S of a)f(S.anchoredPackage);let p=new Set,h={},E={children:h},C=(S,x,I)=>{if(!c.has(S.locatorHash))return;let T=I!==null?pe.tuple(pe.Type.DEPENDENT,{locator:S,descriptor:I}):pe.tuple(pe.Type.LOCATOR,S),O={},U={value:T,children:O},V=j.stringifyLocator(S);if(x[V]=U,!(I!==null&&e.tryWorkspaceByLocator(S))&&!p.has(S.locatorHash)){p.add(S.locatorHash);for(let te of S.dependencies.values()){if(!s&&S.peerDependencies.has(te.identHash))continue;let ie=e.storedResolutions.get(te.descriptorHash);if(!ie)throw new Error("Assertion failed: The resolution should have been registered");let ue=e.storedPackages.get(ie);if(!ue)throw new Error("Assertion failed: The package should have been registered");C(ue,O,te)}}};for(let S of a)C(S.anchoredPackage,h,null);return E}qe();var R5={};Vt(R5,{GitFetcher:()=>tS,GitResolver:()=>rS,default:()=>Wot,gitUtils:()=>La});qe();Dt();var La={};Vt(La,{TreeishProtocols:()=>eS,clone:()=>Q5,fetchBase:()=>Lge,fetchChangedFiles:()=>Mge,fetchChangedWorkspaces:()=>Got,fetchRoot:()=>Oge,isGitUrl:()=>TC,lsRemote:()=>Nge,normalizeLocator:()=>jot,normalizeRepoUrl:()=>QC,resolveUrl:()=>k5,splitRepoUrl:()=>zp,validateRepoUrl:()=>x5});qe();Dt();Yt();zl();var Tge=et(kge()),RC=et(Ie("querystring")),b5=et(pi());function D5(e,t,r){let s=e.indexOf(r);return e.lastIndexOf(t,s>-1?s:1/0)}function Qge(e){try{return new URL(e)}catch{return}}function _ot(e){let t=D5(e,"@","#"),r=D5(e,":","#");return r>t&&(e=`${e.slice(0,r)}/${e.slice(r+1)}`),D5(e,":","#")===-1&&e.indexOf("//")===-1&&(e=`ssh://${e}`),e}function Rge(e){return Qge(e)||Qge(_ot(e))}function QC(e,{git:t=!1}={}){if(e=e.replace(/^git\+https:/,"https:"),e=e.replace(/^(?:github:|https:\/\/github\.com\/|git:\/\/github\.com\/)?(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)(?:\.git)?(#.*)?$/,"https://github.com/$1/$2.git$3"),e=e.replace(/^https:\/\/github\.com\/(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\/tarball\/(.+)?$/,"https://github.com/$1/$2.git#$3"),t){let r=Rge(e);r&&(e=r.href),e=e.replace(/^git\+([^:]+):/,"$1:")}return e}function Fge(){return{...process.env,GIT_SSH_COMMAND:process.env.GIT_SSH_COMMAND||`${process.env.GIT_SSH||"ssh"} -o BatchMode=yes`}}var Hot=[/^ssh:/,/^git(?:\+[^:]+)?:/,/^(?:git\+)?https?:[^#]+\/[^#]+(?:\.git)(?:#.*)?$/,/^git@[^#]+\/[^#]+\.git(?:#.*)?$/,/^(?:github:|https:\/\/github\.com\/)?(?!\.{1,2}\/)([a-zA-Z._0-9-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z._0-9-]+?)(?:\.git)?(?:#.*)?$/,/^https:\/\/github\.com\/(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\/tarball\/(.+)?$/],eS=(a=>(a.Commit="commit",a.Head="head",a.Tag="tag",a.Semver="semver",a))(eS||{});function TC(e){return e?Hot.some(t=>!!e.match(t)):!1}function zp(e){e=QC(e);let t=e.indexOf("#");if(t===-1)return{repo:e,treeish:{protocol:"head",request:"HEAD"},extra:{}};let r=e.slice(0,t),s=e.slice(t+1);if(s.match(/^[a-z]+=/)){let a=RC.default.parse(s);for(let[p,h]of Object.entries(a))if(typeof h!="string")throw new Error(`Assertion failed: The ${p} parameter must be a literal string`);let n=Object.values(eS).find(p=>Object.hasOwn(a,p)),[c,f]=typeof n<"u"?[n,a[n]]:["head","HEAD"];for(let p of Object.values(eS))delete a[p];return{repo:r,treeish:{protocol:c,request:f},extra:a}}else{let a=s.indexOf(":"),[n,c]=a===-1?[null,s]:[s.slice(0,a),s.slice(a+1)];return{repo:r,treeish:{protocol:n,request:c},extra:{}}}}function jot(e){return j.makeLocator(e,QC(e.reference))}function x5(e,{configuration:t}){let{repo:r}=zp(e),s=QC(r,{git:!0});if(!nn.getNetworkSettings(`https://${(0,Tge.default)(s).resource}`,{configuration:t}).enableNetwork)throw new Lt(80,`Request to '${s}' has been blocked because of your configuration settings`);let n=Ge.buildIgnorePattern(t.get("approvedGitRepositories"));if(n===null||!s.match(n))throw new Lt(80,`Request to '${s}' has been blocked because it doesn't match any of the patterns in 'approvedGitRepositories'`);return s}async function Nge(e,t){let r=x5(e,{configuration:t}),s=await P5("listing refs",["ls-remote",r],{cwd:t.startingCwd,env:Fge()},{configuration:t,normalizedRepoUrl:r}),a=new Map,n=/^([a-f0-9]{40})\t([^\n]+)/gm,c;for(;(c=n.exec(s.stdout))!==null;)a.set(c[2],c[1]);return a}async function k5(e,t){let{repo:r,treeish:{protocol:s,request:a},extra:n}=zp(e),c=await Nge(r,t),f=(h,E)=>{switch(h){case"commit":{if(!E.match(/^[a-f0-9]{40}$/))throw new Error("Invalid commit hash");return RC.default.stringify({...n,commit:E})}case"head":{let C=c.get(E==="HEAD"?E:`refs/heads/${E}`);if(typeof C>"u")throw new Error(`Unknown head ("${E}")`);return RC.default.stringify({...n,commit:C})}case"tag":{let C=c.get(`refs/tags/${E}`);if(typeof C>"u")throw new Error(`Unknown tag ("${E}")`);return RC.default.stringify({...n,commit:C})}case"semver":{let C=kr.validRange(E);if(!C)throw new Error(`Invalid range ("${E}")`);let S=new Map([...c.entries()].filter(([I])=>I.startsWith("refs/tags/")).map(([I,T])=>[b5.default.parse(I.slice(10)),T]).filter(I=>I[0]!==null)),x=b5.default.maxSatisfying([...S.keys()],C);if(x===null)throw new Error(`No matching range ("${E}")`);return RC.default.stringify({...n,commit:S.get(x)})}case null:{let C;if((C=p("commit",E))!==null||(C=p("tag",E))!==null||(C=p("head",E))!==null)return C;throw E.match(/^[a-f0-9]+$/)?new Error(`Couldn't resolve "${E}" as either a commit, a tag, or a head - if a commit, use the 40-characters commit hash`):new Error(`Couldn't resolve "${E}" as either a commit, a tag, or a head`)}default:throw new Error(`Invalid Git resolution protocol ("${h}")`)}},p=(h,E)=>{try{return f(h,E)}catch{return null}};return QC(`${r}#${f(s,a)}`)}async function Q5(e,t){return await t.getLimit("cloneConcurrency")(async()=>{let{repo:r,treeish:{protocol:s,request:a}}=zp(e);if(s!=="commit")throw new Error("Invalid treeish protocol when cloning");let n=x5(r,{configuration:t}),c=await le.mktempPromise(),f={cwd:c,env:Fge()};return await P5("cloning the repository",["clone","-c","core.autocrlf=false",n,fe.fromPortablePath(c)],f,{configuration:t,normalizedRepoUrl:n}),await P5("switching branch",["checkout",`${a}`],f,{configuration:t,normalizedRepoUrl:n}),c})}async function Oge(e){let t,r=e;do{if(t=r,await le.existsPromise(J.join(t,".git")))return t;r=J.dirname(t)}while(r!==t);return null}async function Lge(e,{baseRefs:t}){if(t.length===0)throw new it("Can't run this command with zero base refs specified.");let r=[];for(let f of t){let{code:p}=await qr.execvp("git",["merge-base",f,"HEAD"],{cwd:e});p===0&&r.push(f)}if(r.length===0)throw new it(`No ancestor could be found between any of HEAD and ${t.join(", ")}`);let{stdout:s}=await qr.execvp("git",["merge-base","HEAD",...r],{cwd:e,strict:!0}),a=s.trim(),{stdout:n}=await qr.execvp("git",["show","--quiet","--pretty=format:%s",a],{cwd:e,strict:!0}),c=n.trim();return{hash:a,title:c}}async function Mge(e,{base:t,project:r}){let s=Ge.buildIgnorePattern(r.configuration.get("changesetIgnorePatterns")),{stdout:a}=await qr.execvp("git",["diff","--name-only",`${t}`],{cwd:e,strict:!0}),n=a.split(/\r\n|\r|\n/).filter(h=>h.length>0).map(h=>J.resolve(e,fe.toPortablePath(h))),{stdout:c}=await qr.execvp("git",["ls-files","--others","--exclude-standard"],{cwd:e,strict:!0}),f=c.split(/\r\n|\r|\n/).filter(h=>h.length>0).map(h=>J.resolve(e,fe.toPortablePath(h))),p=[...new Set([...n,...f].sort())];return s?p.filter(h=>!J.relative(r.cwd,h).match(s)):p}async function Got({ref:e,project:t}){if(t.configuration.projectCwd===null)throw new it("This command can only be run from within a Yarn project");let r=[J.resolve(t.cwd,Er.lockfile),J.resolve(t.cwd,t.configuration.get("cacheFolder")),J.resolve(t.cwd,t.configuration.get("installStatePath")),J.resolve(t.cwd,t.configuration.get("virtualFolder"))];await t.configuration.triggerHook(c=>c.populateYarnPaths,t,c=>{c!=null&&r.push(c)});let s=await Oge(t.configuration.projectCwd);if(s==null)throw new it("This command can only be run on Git repositories");let a=await Lge(s,{baseRefs:typeof e=="string"?[e]:t.configuration.get("changesetBaseRefs")}),n=await Mge(s,{base:a.hash,project:t});return new Set(Ge.mapAndFilter(n,c=>{let f=t.tryWorkspaceByFilePath(c);return f===null?Ge.mapAndFilter.skip:r.some(p=>c.startsWith(p))?Ge.mapAndFilter.skip:f}))}async function P5(e,t,r,{configuration:s,normalizedRepoUrl:a}){try{return await qr.execvp("git",t,{...r,strict:!0})}catch(n){if(!(n instanceof qr.ExecError))throw n;let c=n.reportExtra,f=n.stderr.toString();throw new Lt(1,`Failed ${e}`,p=>{p.reportError(1,` ${pe.prettyField(s,{label:"Repository URL",value:pe.tuple(pe.Type.URL,a)})}`);for(let h of f.matchAll(/^(.+?): (.*)$/gm)){let[,E,C]=h;E=E.toLowerCase();let S=E==="error"?"Error":`${EB(E)} Error`;p.reportError(1,` ${pe.prettyField(s,{label:S,value:pe.tuple(pe.Type.NO_HINT,C)})}`)}c?.(p)})}}var tS=class{supports(t,r){return TC(t.reference)}getLocalPath(t,r){return null}async fetch(t,r){let s=r.checksums.get(t.locatorHash)||null,a=new Map(r.checksums);a.set(t.locatorHash,s);let n={...r,checksums:a},c=await this.downloadHosted(t,n);if(c!==null)return c;let[f,p,h]=await r.cache.fetchPackageFromCache(t,s,{onHit:()=>r.report.reportCacheHit(t),onMiss:()=>r.report.reportCacheMiss(t,`${j.prettyLocator(r.project.configuration,t)} can't be found in the cache and will be fetched from the remote repository`),loader:()=>this.cloneFromRemote(t,n),...r.cacheOptions});return{packageFs:f,releaseFs:p,prefixPath:j.getIdentVendorPath(t),checksum:h}}async downloadHosted(t,r){return r.project.configuration.reduceHook(s=>s.fetchHostedRepository,null,t,r)}async cloneFromRemote(t,r){let s=zp(t.reference),a=await Q5(t.reference,r.project.configuration),n=J.resolve(a,s.extra.cwd??vt.dot),c=J.join(n,"package.tgz");await Cn.prepareExternalProject(n,c,{configuration:r.project.configuration,report:r.report,workspace:s.extra.workspace,locator:t});let f=await le.readFilePromise(c);return await Ge.releaseAfterUseAsync(async()=>await gs.convertToZip(f,{configuration:r.project.configuration,prefixPath:j.getIdentVendorPath(t),stripComponents:1}))}};qe();qe();var rS=class{supportsDescriptor(t,r){return TC(t.range)}supportsLocator(t,r){return TC(t.reference)}shouldPersistResolution(t,r){return!0}bindDescriptor(t,r,s){return t}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){let a=await k5(t.range,s.project.configuration);return[j.makeLocator(t,a)]}async getSatisfying(t,r,s,a){let n=zp(t.range);return{locators:s.filter(f=>{if(f.identHash!==t.identHash)return!1;let p=zp(f.reference);return!(n.repo!==p.repo||n.treeish.protocol==="commit"&&n.treeish.request!==p.treeish.request)}),sorted:!1}}async resolve(t,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let s=await r.fetchOptions.fetcher.fetch(t,r.fetchOptions),a=await Ge.releaseAfterUseAsync(async()=>await _t.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...t,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var qot={configuration:{approvedGitRepositories:{description:"Array of git repository URL glob patterns that are allowed to be fetched",type:"STRING",default:[],isArray:!0},changesetBaseRefs:{description:"The base git refs that the current HEAD is compared against when detecting changes. Supports git branches, tags, and commits.",type:"STRING",isArray:!0,isNullable:!1,default:["master","origin/master","upstream/master","main","origin/main","upstream/main"]},changesetIgnorePatterns:{description:"Array of glob patterns; files matching them will be ignored when fetching the changed files",type:"STRING",default:[],isArray:!0},cloneConcurrency:{description:"Maximal number of concurrent clones",type:"NUMBER",default:2}},fetchers:[tS],resolvers:[rS]};var Wot=qot;Yt();var FC=class extends At{constructor(){super(...arguments);this.since=he.String("--since",{description:"Only include workspaces that have been changed since the specified ref.",tolerateBoolean:!0});this.recursive=he.Boolean("-R,--recursive",!1,{description:"Find packages via dependencies/devDependencies instead of using the workspaces field"});this.noPrivate=he.Boolean("--no-private",{description:"Exclude workspaces that have the private field set to true"});this.verbose=he.Boolean("-v,--verbose",!1,{description:"Also return the cross-dependencies between workspaces"});this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["workspaces","list"]]}static{this.usage=at.Usage({category:"Workspace-related commands",description:"list all available workspaces",details:"\n This command will print the list of all workspaces in the project.\n\n - If `--since` is set, Yarn will only list workspaces that have been modified since the specified ref. By default Yarn will use the refs specified by the `changesetBaseRefs` configuration option.\n\n - If `-R,--recursive` is set, Yarn will find workspaces to run the command on by recursively evaluating `dependencies` and `devDependencies` fields, instead of looking at the `workspaces` fields.\n\n - If `--no-private` is set, Yarn will not list any workspaces that have the `private` field set to `true`.\n\n - If both the `-v,--verbose` and `--json` options are set, Yarn will also return the cross-dependencies between each workspaces (useful when you wish to automatically generate Buck / Bazel rules).\n "})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Rt.find(r,this.context.cwd);return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async n=>{let c=this.since?await La.fetchChangedWorkspaces({ref:this.since,project:s}):s.workspaces,f=new Set(c);if(this.recursive)for(let p of[...c].map(h=>h.getRecursiveWorkspaceDependents()))for(let h of p)f.add(h);for(let p of f){let{manifest:h}=p;if(h.private&&this.noPrivate)continue;let E;if(this.verbose){let C=new Set,S=new Set;for(let x of _t.hardDependencies)for(let[I,T]of h.getForScope(x)){let O=s.tryWorkspaceByDescriptor(T);O===null?s.workspacesByIdent.has(I)&&S.add(T):C.add(O)}E={workspaceDependencies:Array.from(C).map(x=>x.relativeCwd),mismatchedWorkspaceDependencies:Array.from(S).map(x=>j.stringifyDescriptor(x))}}n.reportInfo(null,`${p.relativeCwd}`),n.reportJson({location:p.relativeCwd,name:h.name?j.stringifyIdent(h.name):null,...E})}})).exitCode()}};qe();qe();Yt();var NC=class extends At{constructor(){super(...arguments);this.workspaceName=he.String();this.commandName=he.String();this.args=he.Proxy()}static{this.paths=[["workspace"]]}static{this.usage=at.Usage({category:"Workspace-related commands",description:"run a command within the specified workspace",details:` + This command will run a given sub-command on a single workspace. + `,examples:[["Add a package to a single workspace","yarn workspace components add -D react"],["Run build script on a single workspace","yarn workspace components run build"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);let n=s.workspaces,c=new Map(n.map(p=>[j.stringifyIdent(p.anchoredLocator),p])),f=c.get(this.workspaceName);if(f===void 0){let p=Array.from(c.keys()).sort();throw new it(`Workspace '${this.workspaceName}' not found. Did you mean any of the following: + - ${p.join(` + - `)}?`)}return this.cli.run([this.commandName,...this.args],{cwd:f.cwd})}};var Yot={configuration:{enableImmutableInstalls:{description:"If true (the default on CI), prevents the install command from modifying the lockfile",type:"BOOLEAN",default:Uge.isCI},defaultSemverRangePrefix:{description:"The default save prefix: '^', '~' or ''",type:"STRING",values:["^","~",""],default:"^"},preferReuse:{description:"If true, `yarn add` will attempt to reuse the most common dependency range in other workspaces.",type:"BOOLEAN",default:!1}},commands:[ZI,$I,eC,tC,bC,yC,uC,FC,iC,sC,oC,aC,zI,XI,rC,nC,lC,cC,fC,AC,pC,hC,PC,dC,gC,IC,EC,CC,mC,wC,BC,vC,SC,DC,xC,kC,NC]},Vot=Yot;var L5={};Vt(L5,{default:()=>Xot});qe();qe();var F5="catalog:";var N5=e=>e.startsWith(F5),Jot=e=>e.range.slice(F5.length)||null,_ge=e=>e===null?"default catalog":`catalog "${e}"`,Kot=e=>e.scope?`@${e.scope}/${e.name}`:e.name,O5=(e,t,r,s)=>{let a=Jot(t),n;if(a===null)n=e.configuration.get("catalog");else try{let E=e.configuration.get("catalogs");E&&(n=E.get(a))}catch{n=void 0}if(!n||n.size===0)throw new Lt(82,`${j.prettyDescriptor(e.configuration,t)}: ${_ge(a)} not found or empty`);let c=Kot(t),f=n.get(c);if(!f)throw new Lt(82,`${j.prettyDescriptor(e.configuration,t)}: entry not found in ${_ge(a)}`);let p=e.configuration.normalizeDependency(j.makeDescriptor(t,f));return r.supportsDescriptor(p,s)?r.bindDescriptor(p,e.topLevelWorkspace.anchoredLocator,s):p};var zot={configuration:{catalog:{description:"The default catalog of packages",type:"MAP",valueDefinition:{description:"The catalog of packages",type:"STRING"}},catalogs:{description:"Named catalogs of packages",type:"MAP",valueDefinition:{description:"A named catalog",type:"MAP",valueDefinition:{description:"Package version in the catalog",type:"STRING"}}}},hooks:{beforeWorkspacePacking:(e,t)=>{let r=e.project,s=r.configuration.makeResolver(),a={project:r,resolver:s,report:new ki};for(let n of _t.allDependencies){let c=t[n];if(c)for(let[f,p]of Object.entries(c)){if(typeof p!="string"||!N5(p))continue;let h=j.parseIdent(f),E=j.makeDescriptor(h,p),C=O5(r,E,s,a),{protocol:S,source:x,params:I,selector:T}=j.parseRange(j.convertToManifestRange(C.range));S===e.project.configuration.get("defaultProtocol")&&(S=null),c[f]=j.makeRange({protocol:S,source:x,params:I,selector:T})}}},reduceDependency:async(e,t,r,s,{resolver:a,resolveOptions:n})=>N5(e.range)?O5(t,e,a,n):e}},Xot=zot;var j5={};Vt(j5,{default:()=>$ot});qe();var Qt={optional:!0},M5=[["@tailwindcss/aspect-ratio@<0.2.1",{peerDependencies:{tailwindcss:"^2.0.2"}}],["@tailwindcss/line-clamp@<0.2.1",{peerDependencies:{tailwindcss:"^2.0.2"}}],["@fullhuman/postcss-purgecss@3.1.3 || 3.1.3-alpha.0",{peerDependencies:{postcss:"^8.0.0"}}],["@samverschueren/stream-to-observable@<0.3.1",{peerDependenciesMeta:{rxjs:Qt,zenObservable:Qt}}],["any-observable@<0.5.1",{peerDependenciesMeta:{rxjs:Qt,zenObservable:Qt}}],["@pm2/agent@<1.0.4",{dependencies:{debug:"*"}}],["debug@<4.2.0",{peerDependenciesMeta:{"supports-color":Qt}}],["got@<11",{dependencies:{"@types/responselike":"^1.0.0","@types/keyv":"^3.1.1"}}],["cacheable-lookup@<4.1.2",{dependencies:{"@types/keyv":"^3.1.1"}}],["http-link-dataloader@*",{peerDependencies:{graphql:"^0.13.1 || ^14.0.0"}}],["typescript-language-server@*",{dependencies:{"vscode-jsonrpc":"^5.0.1","vscode-languageserver-protocol":"^3.15.0"}}],["postcss-syntax@*",{peerDependenciesMeta:{"postcss-html":Qt,"postcss-jsx":Qt,"postcss-less":Qt,"postcss-markdown":Qt,"postcss-scss":Qt}}],["jss-plugin-rule-value-function@<=10.1.1",{dependencies:{"tiny-warning":"^1.0.2"}}],["ink-select-input@<4.1.0",{peerDependencies:{react:"^16.8.2"}}],["license-webpack-plugin@<2.3.18",{peerDependenciesMeta:{webpack:Qt}}],["snowpack@>=3.3.0",{dependencies:{"node-gyp":"^7.1.0"}}],["promise-inflight@*",{peerDependenciesMeta:{bluebird:Qt}}],["reactcss@*",{peerDependencies:{react:"*"}}],["react-color@<=2.19.0",{peerDependencies:{react:"*"}}],["gatsby-plugin-i18n@*",{dependencies:{ramda:"^0.24.1"}}],["useragent@^2.0.0",{dependencies:{request:"^2.88.0",yamlparser:"0.0.x",semver:"5.5.x"}}],["@apollographql/apollo-tools@<=0.5.2",{peerDependencies:{graphql:"^14.2.1 || ^15.0.0"}}],["material-table@^2.0.0",{dependencies:{"@babel/runtime":"^7.11.2"}}],["@babel/parser@*",{dependencies:{"@babel/types":"^7.8.3"}}],["fork-ts-checker-webpack-plugin@<=6.3.4",{peerDependencies:{eslint:">= 6",typescript:">= 2.7",webpack:">= 4","vue-template-compiler":"*"},peerDependenciesMeta:{eslint:Qt,"vue-template-compiler":Qt}}],["rc-animate@<=3.1.1",{peerDependencies:{react:">=16.9.0","react-dom":">=16.9.0"}}],["react-bootstrap-table2-paginator@*",{dependencies:{classnames:"^2.2.6"}}],["react-draggable@<=4.4.3",{peerDependencies:{react:">= 16.3.0","react-dom":">= 16.3.0"}}],["apollo-upload-client@<14",{peerDependencies:{graphql:"14 - 15"}}],["react-instantsearch-core@<=6.7.0",{peerDependencies:{algoliasearch:">= 3.1 < 5"}}],["react-instantsearch-dom@<=6.7.0",{dependencies:{"react-fast-compare":"^3.0.0"}}],["ws@<7.2.1",{peerDependencies:{bufferutil:"^4.0.1","utf-8-validate":"^5.0.2"},peerDependenciesMeta:{bufferutil:Qt,"utf-8-validate":Qt}}],["react-portal@<4.2.2",{peerDependencies:{"react-dom":"^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0"}}],["react-scripts@<=4.0.1",{peerDependencies:{react:"*"}}],["testcafe@<=1.10.1",{dependencies:{"@babel/plugin-transform-for-of":"^7.12.1","@babel/runtime":"^7.12.5"}}],["testcafe-legacy-api@<=4.2.0",{dependencies:{"testcafe-hammerhead":"^17.0.1","read-file-relative":"^1.2.0"}}],["@google-cloud/firestore@<=4.9.3",{dependencies:{protobufjs:"^6.8.6"}}],["gatsby-source-apiserver@*",{dependencies:{"babel-polyfill":"^6.26.0"}}],["@webpack-cli/package-utils@<=1.0.1-alpha.4",{dependencies:{"cross-spawn":"^7.0.3"}}],["gatsby-remark-prismjs@<3.3.28",{dependencies:{lodash:"^4"}}],["gatsby-plugin-favicon@*",{peerDependencies:{webpack:"*"}}],["gatsby-plugin-sharp@<=4.6.0-next.3",{dependencies:{debug:"^4.3.1"}}],["gatsby-react-router-scroll@<=5.6.0-next.0",{dependencies:{"prop-types":"^15.7.2"}}],["@rebass/forms@*",{dependencies:{"@styled-system/should-forward-prop":"^5.0.0"},peerDependencies:{react:"^16.8.6"}}],["rebass@*",{peerDependencies:{react:"^16.8.6"}}],["@ant-design/react-slick@<=0.28.3",{peerDependencies:{react:">=16.0.0"}}],["mqtt@<4.2.7",{dependencies:{duplexify:"^4.1.1"}}],["vue-cli-plugin-vuetify@<=2.0.3",{dependencies:{semver:"^6.3.0"},peerDependenciesMeta:{"sass-loader":Qt,"vuetify-loader":Qt}}],["vue-cli-plugin-vuetify@<=2.0.4",{dependencies:{"null-loader":"^3.0.0"}}],["vue-cli-plugin-vuetify@>=2.4.3",{peerDependencies:{vue:"*"}}],["@vuetify/cli-plugin-utils@<=0.0.4",{dependencies:{semver:"^6.3.0"},peerDependenciesMeta:{"sass-loader":Qt}}],["@vue/cli-plugin-typescript@<=5.0.0-alpha.0",{dependencies:{"babel-loader":"^8.1.0"}}],["@vue/cli-plugin-typescript@<=5.0.0-beta.0",{dependencies:{"@babel/core":"^7.12.16"},peerDependencies:{"vue-template-compiler":"^2.0.0"},peerDependenciesMeta:{"vue-template-compiler":Qt}}],["cordova-ios@<=6.3.0",{dependencies:{underscore:"^1.9.2"}}],["cordova-lib@<=10.0.1",{dependencies:{underscore:"^1.9.2"}}],["git-node-fs@*",{peerDependencies:{"js-git":"^0.7.8"},peerDependenciesMeta:{"js-git":Qt}}],["consolidate@<0.16.0",{peerDependencies:{mustache:"^3.0.0"},peerDependenciesMeta:{mustache:Qt}}],["consolidate@<=0.16.0",{peerDependencies:{velocityjs:"^2.0.1",tinyliquid:"^0.2.34","liquid-node":"^3.0.1",jade:"^1.11.0","then-jade":"*",dust:"^0.3.0","dustjs-helpers":"^1.7.4","dustjs-linkedin":"^2.7.5",swig:"^1.4.2","swig-templates":"^2.0.3","razor-tmpl":"^1.3.1",atpl:">=0.7.6",liquor:"^0.0.5",twig:"^1.15.2",ejs:"^3.1.5",eco:"^1.1.0-rc-3",jazz:"^0.0.18",jqtpl:"~1.1.0",hamljs:"^0.6.2",hamlet:"^0.3.3",whiskers:"^0.4.0","haml-coffee":"^1.14.1","hogan.js":"^3.0.2",templayed:">=0.2.3",handlebars:"^4.7.6",underscore:"^1.11.0",lodash:"^4.17.20",pug:"^3.0.0","then-pug":"*",qejs:"^3.0.5",walrus:"^0.10.1",mustache:"^4.0.1",just:"^0.1.8",ect:"^0.5.9",mote:"^0.2.0",toffee:"^0.3.6",dot:"^1.1.3","bracket-template":"^1.1.5",ractive:"^1.3.12",nunjucks:"^3.2.2",htmling:"^0.0.8","babel-core":"^6.26.3",plates:"~0.4.11","react-dom":"^16.13.1",react:"^16.13.1","arc-templates":"^0.5.3",vash:"^0.13.0",slm:"^2.0.0",marko:"^3.14.4",teacup:"^2.0.0","coffee-script":"^1.12.7",squirrelly:"^5.1.0",twing:"^5.0.2"},peerDependenciesMeta:{velocityjs:Qt,tinyliquid:Qt,"liquid-node":Qt,jade:Qt,"then-jade":Qt,dust:Qt,"dustjs-helpers":Qt,"dustjs-linkedin":Qt,swig:Qt,"swig-templates":Qt,"razor-tmpl":Qt,atpl:Qt,liquor:Qt,twig:Qt,ejs:Qt,eco:Qt,jazz:Qt,jqtpl:Qt,hamljs:Qt,hamlet:Qt,whiskers:Qt,"haml-coffee":Qt,"hogan.js":Qt,templayed:Qt,handlebars:Qt,underscore:Qt,lodash:Qt,pug:Qt,"then-pug":Qt,qejs:Qt,walrus:Qt,mustache:Qt,just:Qt,ect:Qt,mote:Qt,toffee:Qt,dot:Qt,"bracket-template":Qt,ractive:Qt,nunjucks:Qt,htmling:Qt,"babel-core":Qt,plates:Qt,"react-dom":Qt,react:Qt,"arc-templates":Qt,vash:Qt,slm:Qt,marko:Qt,teacup:Qt,"coffee-script":Qt,squirrelly:Qt,twing:Qt}}],["vue-loader@<=16.3.3",{peerDependencies:{"@vue/compiler-sfc":"^3.0.8",webpack:"^4.1.0 || ^5.0.0-0"},peerDependenciesMeta:{"@vue/compiler-sfc":Qt}}],["vue-loader@^16.7.0",{peerDependencies:{"@vue/compiler-sfc":"^3.0.8",vue:"^3.2.13"},peerDependenciesMeta:{"@vue/compiler-sfc":Qt,vue:Qt}}],["scss-parser@<=1.0.5",{dependencies:{lodash:"^4.17.21"}}],["query-ast@<1.0.5",{dependencies:{lodash:"^4.17.21"}}],["redux-thunk@<=2.3.0",{peerDependencies:{redux:"^4.0.0"}}],["skypack@<=0.3.2",{dependencies:{tar:"^6.1.0"}}],["@npmcli/metavuln-calculator@<2.0.0",{dependencies:{"json-parse-even-better-errors":"^2.3.1"}}],["bin-links@<2.3.0",{dependencies:{"mkdirp-infer-owner":"^1.0.2"}}],["rollup-plugin-polyfill-node@<=0.8.0",{peerDependencies:{rollup:"^1.20.0 || ^2.0.0"}}],["snowpack@<3.8.6",{dependencies:{"magic-string":"^0.25.7"}}],["elm-webpack-loader@*",{dependencies:{temp:"^0.9.4"}}],["winston-transport@<=4.4.0",{dependencies:{logform:"^2.2.0"}}],["jest-vue-preprocessor@*",{dependencies:{"@babel/core":"7.8.7","@babel/template":"7.8.6"},peerDependencies:{pug:"^2.0.4"},peerDependenciesMeta:{pug:Qt}}],["redux-persist@*",{peerDependencies:{react:">=16"},peerDependenciesMeta:{react:Qt}}],["sodium@>=3",{dependencies:{"node-gyp":"^3.8.0"}}],["babel-plugin-graphql-tag@<=3.1.0",{peerDependencies:{graphql:"^14.0.0 || ^15.0.0"}}],["@playwright/test@<=1.14.1",{dependencies:{"jest-matcher-utils":"^26.4.2"}}],...["babel-plugin-remove-graphql-queries@<3.14.0-next.1","babel-preset-gatsby-package@<1.14.0-next.1","create-gatsby@<1.14.0-next.1","gatsby-admin@<0.24.0-next.1","gatsby-cli@<3.14.0-next.1","gatsby-core-utils@<2.14.0-next.1","gatsby-design-tokens@<3.14.0-next.1","gatsby-legacy-polyfills@<1.14.0-next.1","gatsby-plugin-benchmark-reporting@<1.14.0-next.1","gatsby-plugin-graphql-config@<0.23.0-next.1","gatsby-plugin-image@<1.14.0-next.1","gatsby-plugin-mdx@<2.14.0-next.1","gatsby-plugin-netlify-cms@<5.14.0-next.1","gatsby-plugin-no-sourcemaps@<3.14.0-next.1","gatsby-plugin-page-creator@<3.14.0-next.1","gatsby-plugin-preact@<5.14.0-next.1","gatsby-plugin-preload-fonts@<2.14.0-next.1","gatsby-plugin-schema-snapshot@<2.14.0-next.1","gatsby-plugin-styletron@<6.14.0-next.1","gatsby-plugin-subfont@<3.14.0-next.1","gatsby-plugin-utils@<1.14.0-next.1","gatsby-recipes@<0.25.0-next.1","gatsby-source-shopify@<5.6.0-next.1","gatsby-source-wikipedia@<3.14.0-next.1","gatsby-transformer-screenshot@<3.14.0-next.1","gatsby-worker@<0.5.0-next.1"].map(e=>[e,{dependencies:{"@babel/runtime":"^7.14.8"}}]),["gatsby-core-utils@<2.14.0-next.1",{dependencies:{got:"8.3.2"}}],["gatsby-plugin-gatsby-cloud@<=3.1.0-next.0",{dependencies:{"gatsby-core-utils":"^2.13.0-next.0"}}],["gatsby-plugin-gatsby-cloud@<=3.2.0-next.1",{peerDependencies:{webpack:"*"}}],["babel-plugin-remove-graphql-queries@<=3.14.0-next.1",{dependencies:{"gatsby-core-utils":"^2.8.0-next.1"}}],["gatsby-plugin-netlify@3.13.0-next.1",{dependencies:{"gatsby-core-utils":"^2.13.0-next.0"}}],["clipanion-v3-codemod@<=0.2.0",{peerDependencies:{jscodeshift:"^0.11.0"}}],["react-live@*",{peerDependencies:{"react-dom":"*",react:"*"}}],["webpack@<4.44.1",{peerDependenciesMeta:{"webpack-cli":Qt,"webpack-command":Qt}}],["webpack@<5.0.0-beta.23",{peerDependenciesMeta:{"webpack-cli":Qt}}],["webpack-dev-server@<3.10.2",{peerDependenciesMeta:{"webpack-cli":Qt}}],["@docusaurus/responsive-loader@<1.5.0",{peerDependenciesMeta:{sharp:Qt,jimp:Qt}}],["eslint-module-utils@*",{peerDependenciesMeta:{"eslint-import-resolver-node":Qt,"eslint-import-resolver-typescript":Qt,"eslint-import-resolver-webpack":Qt,"@typescript-eslint/parser":Qt}}],["eslint-plugin-import@*",{peerDependenciesMeta:{"@typescript-eslint/parser":Qt}}],["critters-webpack-plugin@<3.0.2",{peerDependenciesMeta:{"html-webpack-plugin":Qt}}],["terser@<=5.10.0",{dependencies:{acorn:"^8.5.0"}}],["babel-preset-react-app@10.0.x <10.0.2",{dependencies:{"@babel/plugin-proposal-private-property-in-object":"^7.16.7"}}],["eslint-config-react-app@*",{peerDependenciesMeta:{typescript:Qt}}],["@vue/eslint-config-typescript@<11.0.0",{peerDependenciesMeta:{typescript:Qt}}],["unplugin-vue2-script-setup@<0.9.1",{peerDependencies:{"@vue/composition-api":"^1.4.3","@vue/runtime-dom":"^3.2.26"}}],["@cypress/snapshot@*",{dependencies:{debug:"^3.2.7"}}],["auto-relay@<=0.14.0",{peerDependencies:{"reflect-metadata":"^0.1.13"}}],["vue-template-babel-compiler@<1.2.0",{peerDependencies:{"vue-template-compiler":"^2.6.0"}}],["@parcel/transformer-image@<2.5.0",{peerDependencies:{"@parcel/core":"*"}}],["@parcel/transformer-js@<2.5.0",{peerDependencies:{"@parcel/core":"*"}}],["parcel@*",{peerDependenciesMeta:{"@parcel/core":Qt}}],["react-scripts@*",{peerDependencies:{eslint:"*"}}],["focus-trap-react@^8.0.0",{dependencies:{tabbable:"^5.3.2"}}],["react-rnd@<10.3.7",{peerDependencies:{react:">=16.3.0","react-dom":">=16.3.0"}}],["connect-mongo@<5.0.0",{peerDependencies:{"express-session":"^1.17.1"}}],["vue-i18n@<9",{peerDependencies:{vue:"^2"}}],["vue-router@<4",{peerDependencies:{vue:"^2"}}],["unified@<10",{dependencies:{"@types/unist":"^2.0.0"}}],["react-github-btn@<=1.3.0",{peerDependencies:{react:">=16.3.0"}}],["react-dev-utils@*",{peerDependencies:{typescript:">=2.7",webpack:">=4"},peerDependenciesMeta:{typescript:Qt}}],["@asyncapi/react-component@<=1.0.0-next.39",{peerDependencies:{react:">=16.8.0","react-dom":">=16.8.0"}}],["xo@*",{peerDependencies:{webpack:">=1.11.0"},peerDependenciesMeta:{webpack:Qt}}],["babel-plugin-remove-graphql-queries@<=4.20.0-next.0",{dependencies:{"@babel/types":"^7.15.4"}}],["gatsby-plugin-page-creator@<=4.20.0-next.1",{dependencies:{"fs-extra":"^10.1.0"}}],["gatsby-plugin-utils@<=3.14.0-next.1",{dependencies:{fastq:"^1.13.0"},peerDependencies:{graphql:"^15.0.0"}}],["gatsby-plugin-mdx@<3.1.0-next.1",{dependencies:{mkdirp:"^1.0.4"}}],["gatsby-plugin-mdx@^2",{peerDependencies:{gatsby:"^3.0.0-next"}}],["fdir@<=5.2.0",{peerDependencies:{picomatch:"2.x"},peerDependenciesMeta:{picomatch:Qt}}],["babel-plugin-transform-typescript-metadata@<=0.3.2",{peerDependencies:{"@babel/core":"^7","@babel/traverse":"^7"},peerDependenciesMeta:{"@babel/traverse":Qt}}],["graphql-compose@>=9.0.10",{peerDependencies:{graphql:"^14.2.0 || ^15.0.0 || ^16.0.0"}}],["vite-plugin-vuetify@<=1.0.2",{peerDependencies:{vue:"^3.0.0"}}],["webpack-plugin-vuetify@<=2.0.1",{peerDependencies:{vue:"^3.2.6"}}],["eslint-import-resolver-vite@<2.0.1",{dependencies:{debug:"^4.3.4",resolve:"^1.22.8"}}],["notistack@^3.0.0",{dependencies:{csstype:"^3.0.10"}}],["@fastify/type-provider-typebox@^5.0.0",{peerDependencies:{fastify:"^5.0.0"}}],["@fastify/type-provider-typebox@^4.0.0",{peerDependencies:{fastify:"^4.0.0"}}]];var U5;function Hge(){return typeof U5>"u"&&(U5=Ie("zlib").brotliDecompressSync(Buffer.from("G7weAByFTVk3Vs7UfHhq4yykgEM7pbW7TI43SG2S5tvGrwHBAzdz+s/npQ6tgEvobvxisrPIadkXeUAJotBn5bDZ5kAhcRqsIHe3F75Walet5hNalwgFDtxb0BiDUjiUQkjG0yW2hto9HPgiCkm316d6bC0kST72YN7D7rfkhCE9x4J0XwB0yavalxpUu2t9xszHrmtwalOxT7VslsxWcB1qpqZwERUra4psWhTV8BgwWeizurec82Caf1ABL11YMfbf8FJ9JBceZOkgmvrQPbC9DUldX/yMbmX06UQluCEjSwUoyO+EZPIjofr+/oAZUck2enraRD+oWLlnlYnj8xB+gwSo9lmmks4fXv574qSqcWA6z21uYkzMu3EWj+K23RxeQlLqiE35/rC8GcS4CGkKHKKq+zAIQwD9iRDNfiAqueLLpicFFrNsAI4zeTD/eO9MHcnRa5m8UT+M2+V+AkFST4BlKneiAQRSdST8KEAIyFlULt6wa9EBd0Ds28VmpaxquJdVt+nwdEs5xUskI13OVtFyY0UrQIRAlCuvvWivvlSKQfTO+2Q8OyUR1W5RvetaPz4jD27hdtwHFFA1Ptx6Ee/t2cY2rg2G46M1pNDRf2pWhvpy8pqMnuI3++4OF3+7OFIWXGjh+o7Nr2jNvbiYcQdQS1h903/jVFgOpA0yJ78z+x759bFA0rq+6aY5qPB4FzS3oYoLupDUhD9nDz6F6H7hpnlMf18KNKDu4IKjTWwrAnY6MFQw1W6ymOALHlFyCZmQhldg1MQHaMVVQTVgDC60TfaBqG++Y8PEoFhN/PBTZT175KNP/BlHDYGOOBmnBdzqJKplZ/ljiVG0ZBzfqeBRrrUkn6rA54462SgiliKoYVnbeptMdXNfAuaupIEi0bApF10TlgHfmEJAPUVidRVFyDupSem5po5vErPqWKhKbUIp0LozpYsIKK57dM/HKr+nguF+7924IIWMICkQ8JUigs9D+W+c4LnNoRtPPKNRUiCYmP+Jfo2lfKCKw8qpraEeWU3uiNRO6zcyKQoXPR5htmzzLznke7b4YbXW3I1lIRzmgG02Udb58U+7TpwyN7XymCgH+wuPDthZVQvRZuEP+SnLtMicz9m5zASWOBiAcLmkuFlTKuHspSIhCBD0yUPKcxu81A+4YD78rA2vtwsUEday9WNyrShyrl60rWmA+SmbYZkQOwFJWArxRYYc5jGhA5ikxYw1rx3ei4NmeX/lKiwpZ9Ln1tV2Ae7sArvxuVLbJjqJRjW1vFXAyHpvLG+8MJ6T2Ubx5M2KDa2SN6vuIGxJ9WQM9Mk3Q7aCNiZONXllhqq24DmoLbQfW2rYWsOgHWjtOmIQMyMKdiHZDjoyIq5+U700nZ6odJAoYXPQBvFNiQ78d5jaXliBqLTJEqUCwi+LiH2mx92EmNKDsJL74Z613+3lf20pxkV1+erOrjj8pW00vsPaahKUM+05ssd5uwM7K482KWEf3TCwlg/o3e5ngto7qSMz7YteIgCsF1UOcsLk7F7MxWbvrPMY473ew0G+noVL8EPbkmEMftMSeL6HFub/zy+2JQ==","base64")).toString()),U5}var _5;function jge(){return typeof _5>"u"&&(_5=Ie("zlib").brotliDecompressSync(Buffer.from("G8MSIIzURnVBnObTcvb3XE6v2S9Qgc2K801Oa5otNKEtK8BINZNcaQHy+9/vf/WXBimwutXC33P2DPc64pps5rz7NGGWaOKNSPL4Y2KRE8twut2lFOIN+OXPtRmPMRhMTILib2bEQx43az2I5d3YS8Roa5UZpF/ujHb3Djd3GDvYUfvFYSUQ39vb2cmifp/rgB4J/65JK3wRBTvMBoNBmn3mbXC63/gbBkW/2IRPri0O8bcsRBsmarF328pAln04nyJFkwUAvNu934supAqLtyerZZpJ8I8suJHhf/ocMV+scKwa8NOiDKIPXw6Ex/EEZD6TEGaW8N5zvNHYF10l6Lfooj7D5W2k3dgvQSbp2Wv8TGOayS978gxlOLVjTGXs66ozewbrjwElLtyrYNnWTfzzdEutgROUFPVMhnMoy8EjJLLlWwIEoySxliim9kYW30JUHiPVyjt0iAw/ZpPmCbUCltYPnq6ZNblIKhTNhqS/oqC9iya5sGKZTOVsTEg34n92uZTf2iPpcZih8rPW8CzA+adIGmyCPcKdLMsBLShd+zuEbTrqpwuh+DLmracZcjPC5Sdf5odDAhKpFuOsQS67RT+1VgWWygSv3YwxDnylc04/PYuaMeIzhBkLrvs7e/OUzRTF56MmfY6rI63QtEjEQzq637zQqJ39nNhu3NmoRRhW/086bHGBUtx0PE0j3aEGvkdh9WJC8y8j8mqqke9/dQ5la+Q3ba4RlhvTbnfQhPDDab3tUifkjKuOsp13mXEmO00Mu88F/M67R7LXfoFDFLNtgCSWjWX+3Jn1371pJTK9xPBiMJafvDjtFyAzu8rxeQ0TKMQXNPs5xxiBOd+BRJP8KP88XPtJIbZKh/cdW8KvBUkpqKpGoiIaA32c3/JnQr4efXt85mXvidOvn/eU3Pase1typLYBalJ14mCso9h79nuMOuCa/kZAOkJHmTjP5RM2WNoPasZUAnT1TAE/NH25hUxcQv6hQWR/m1PKk4ooXMcM4SR1iYU3fUohvqk4RY2hbmTVVIXv6TvqO+0doOjgeVFAcom+RlwJQmOVH7pr1Q9LoJT6n1DeQEB+NHygsATbIwTcOKZlJsY8G4+suX1uQLjUWwLjjs0mvSvZcLTpIGAekeR7GCgl8eo3ndAqEe2XCav4huliHjdbIPBsGJuPX7lrO9HX1UbXRH5opOe1x6JsOSgHZR+EaxuXVhpLLxm6jk1LJtZfHSc6BKPun3CpYYVMJGwEUyk8MTGG0XL5MfEwaXpnc9TKnBmlGn6nHiGREc3ysn47XIBDzA+YvFdjZzVIEDcKGpS6PbUJehFRjEne8D0lVU1XuRtlgszq6pTNlQ/3MzNOEgCWPyTct22V2mEi2krizn5VDo9B19/X2DB3hCGRMM7ONbtnAcIx/OWB1u5uPbW1gsH8irXxT/IzG0PoXWYjhbMsH3KTuoOl5o17PulcgvsfTSnKFM354GWI8luqZnrswWjiXy3G+Vbyo1KMopFmmvBwNELgaS8z8dNZchx/Cl/xjddxhMcyqtzFyONb2Zdu90NkI8pAeufe7YlXrp53v8Dj/l8vWeVspRKBGXScBBPI/HinSTGmLDOGGOCIyH0JFdOZx0gWsacNlQLJMIrBhqRxXxHF/5pseWwejlAAvZ3klZSDSYY8mkToaWejXhgNomeGtx1DTLEUFMRkgF5yFB22WYdJnaWN14r1YJj81hGi45+jrADS5nYRhCiSlCJJ1nL8pYX+HDSMhdTEWyRcgHVp/IsUIZYMfT+YYncUQPgcxNGCHfZ88vDdrcUuaGIl6zhAsiaq7R5dfqrqXH/JcBhfjT8D0azayIyEz75Nxp6YkcyDxlJq3EXnJUpqDohJJOysL1t1uNiHESlvsxPb5cpbW0+ICZqJmUZus1BMW0F5IVBODLIo2zHHjA0=","base64")).toString()),_5}var H5;function Gge(){return typeof H5>"u"&&(H5=Ie("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),H5}var qge=new Map([[j.makeIdent(null,"fsevents").identHash,Hge],[j.makeIdent(null,"resolve").identHash,jge],[j.makeIdent(null,"typescript").identHash,Gge]]),Zot={hooks:{registerPackageExtensions:async(e,t)=>{for(let[r,s]of M5)t(j.parseDescriptor(r,!0),s)},getBuiltinPatch:async(e,t)=>{let r="compat/";if(!t.startsWith(r))return;let s=j.parseIdent(t.slice(r.length)),a=qge.get(s.identHash)?.();return typeof a<"u"?a:null},reduceDependency:async(e,t,r,s)=>typeof qge.get(e.identHash)>"u"?e:j.makeDescriptor(e,j.makeRange({protocol:"patch:",source:j.stringifyDescriptor(e),selector:`optional!builtin`,params:null}))}},$ot=Zot;var s9={};Vt(s9,{ConstraintsCheckCommand:()=>GC,ConstraintsQueryCommand:()=>HC,ConstraintsSourceCommand:()=>jC,default:()=>yat});qe();qe();iS();var LC=class{constructor(t){this.project=t}createEnvironment(){let t=new OC(["cwd","ident"]),r=new OC(["workspace","type","ident"]),s=new OC(["ident"]),a={manifestUpdates:new Map,reportedErrors:new Map},n=new Map,c=new Map;for(let f of this.project.storedPackages.values()){let p=Array.from(f.peerDependencies.values(),h=>[j.stringifyIdent(h),h.range]);n.set(f.locatorHash,{workspace:null,ident:j.stringifyIdent(f),version:f.version,dependencies:new Map,peerDependencies:new Map(p.filter(([h])=>f.peerDependenciesMeta.get(h)?.optional!==!0)),optionalPeerDependencies:new Map(p.filter(([h])=>f.peerDependenciesMeta.get(h)?.optional===!0))})}for(let f of this.project.storedPackages.values()){let p=n.get(f.locatorHash);p.dependencies=new Map(Array.from(f.dependencies.values(),h=>{let E=this.project.storedResolutions.get(h.descriptorHash);if(typeof E>"u")throw new Error("Assertion failed: The resolution should have been registered");let C=n.get(E);if(typeof C>"u")throw new Error("Assertion failed: The package should have been registered");return[j.stringifyIdent(h),C]})),p.dependencies.delete(p.ident)}for(let f of this.project.workspaces){let p=j.stringifyIdent(f.anchoredLocator),h=f.manifest.exportTo({}),E=n.get(f.anchoredLocator.locatorHash);if(typeof E>"u")throw new Error("Assertion failed: The package should have been registered");let C=(T,O,{caller:U=Ui.getCaller()}={})=>{let V=nS(T),te=Ge.getMapWithDefault(a.manifestUpdates,f.cwd),ie=Ge.getMapWithDefault(te,V),ue=Ge.getSetWithDefault(ie,O);U!==null&&ue.add(U)},S=T=>C(T,void 0,{caller:Ui.getCaller()}),x=T=>{Ge.getArrayWithDefault(a.reportedErrors,f.cwd).push(T)},I=t.insert({cwd:f.relativeCwd,ident:p,manifest:h,pkg:E,set:C,unset:S,error:x});c.set(f,I);for(let T of _t.allDependencies)for(let O of f.manifest[T].values()){let U=j.stringifyIdent(O),V=()=>{C([T,U],void 0,{caller:Ui.getCaller()})},te=ue=>{C([T,U],ue,{caller:Ui.getCaller()})},ie=null;if(T!=="peerDependencies"&&(T!=="dependencies"||!f.manifest.devDependencies.has(O.identHash))){let ue=f.anchoredPackage.dependencies.get(O.identHash);if(ue){if(typeof ue>"u")throw new Error("Assertion failed: The dependency should have been registered");let ae=this.project.storedResolutions.get(ue.descriptorHash);if(typeof ae>"u")throw new Error("Assertion failed: The resolution should have been registered");let ge=n.get(ae);if(typeof ge>"u")throw new Error("Assertion failed: The package should have been registered");ie=ge}}r.insert({workspace:I,ident:U,range:O.range,type:T,resolution:ie,update:te,delete:V,error:x})}}for(let f of this.project.storedPackages.values()){let p=this.project.tryWorkspaceByLocator(f);if(!p)continue;let h=c.get(p);if(typeof h>"u")throw new Error("Assertion failed: The workspace should have been registered");let E=n.get(f.locatorHash);if(typeof E>"u")throw new Error("Assertion failed: The package should have been registered");E.workspace=h}return{workspaces:t,dependencies:r,packages:s,result:a}}async process(){let t=this.createEnvironment(),r={Yarn:{workspace:a=>t.workspaces.find(a)[0]??null,workspaces:a=>t.workspaces.find(a),dependency:a=>t.dependencies.find(a)[0]??null,dependencies:a=>t.dependencies.find(a),package:a=>t.packages.find(a)[0]??null,packages:a=>t.packages.find(a)}},s=await this.project.loadUserConfig();return s?.constraints?(await s.constraints(r),t.result):null}};qe();qe();Yt();var HC=class extends At{constructor(){super(...arguments);this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.query=he.String()}static{this.paths=[["constraints","query"]]}static{this.usage=at.Usage({category:"Constraints-related commands",description:"query the constraints fact database",details:` + This command will output all matches to the given prolog query. + `,examples:[["List all dependencies throughout the workspace","yarn constraints query 'workspace_has_dependency(_, DependencyName, _, _).'"]]})}async execute(){let{Constraints:r}=await Promise.resolve().then(()=>(lS(),aS)),s=await ze.find(this.context.cwd,this.context.plugins),{project:a}=await Rt.find(s,this.context.cwd),n=await r.find(a),c=this.query;return c.endsWith(".")||(c=`${c}.`),(await Ot.start({configuration:s,json:this.json,stdout:this.context.stdout},async p=>{for await(let h of n.query(c)){let E=Array.from(Object.entries(h)),C=E.length,S=E.reduce((x,[I])=>Math.max(x,I.length),0);for(let x=0;x(lS(),aS)),s=await ze.find(this.context.cwd,this.context.plugins),{project:a}=await Rt.find(s,this.context.cwd),n=await r.find(a);this.context.stdout.write(this.verbose?n.fullSource:n.source)}};qe();qe();Yt();iS();var GC=class extends At{constructor(){super(...arguments);this.fix=he.Boolean("--fix",!1,{description:"Attempt to automatically fix unambiguous issues, following a multi-pass process"});this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["constraints"]]}static{this.usage=at.Usage({category:"Constraints-related commands",description:"check that the project constraints are met",details:` + This command will run constraints on your project and emit errors for each one that is found but isn't met. If any error is emitted the process will exit with a non-zero exit code. + + If the \`--fix\` flag is used, Yarn will attempt to automatically fix the issues the best it can, following a multi-pass process (with a maximum of 10 iterations). Some ambiguous patterns cannot be autofixed, in which case you'll have to manually specify the right resolution. + + For more information as to how to write constraints, please consult our dedicated page on our website: https://yarnpkg.com/features/constraints. + `,examples:[["Check that all constraints are satisfied","yarn constraints"],["Autofix all unmet constraints","yarn constraints --fix"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Rt.find(r,this.context.cwd);await s.restoreInstallState();let a=await s.loadUserConfig(),n;if(a?.constraints)n=new LC(s);else{let{Constraints:h}=await Promise.resolve().then(()=>(lS(),aS));n=await h.find(s)}let c,f=!1,p=!1;for(let h=this.fix?10:1;h>0;--h){let E=await n.process();if(!E)break;let{changedWorkspaces:C,remainingErrors:S}=jT(s,E,{fix:this.fix}),x=[];for(let[I,T]of C){let O=I.manifest.indent;I.manifest=new _t,I.manifest.indent=O,I.manifest.load(T),x.push(I.persistManifest())}if(await Promise.all(x),!(C.size>0&&h>1)){c=Wge(S,{configuration:r}),f=!1,p=!0;for(let[,I]of S)for(let T of I)T.fixable?f=!0:p=!1}}if(c.children.length===0)return 0;if(f){let h=p?`Those errors can all be fixed by running ${pe.pretty(r,"yarn constraints --fix",pe.Type.CODE)}`:`Errors prefixed by '\u2699' can be fixed by running ${pe.pretty(r,"yarn constraints --fix",pe.Type.CODE)}`;await Ot.start({configuration:r,stdout:this.context.stdout,includeNames:!1,includeFooter:!1},async E=>{E.reportInfo(0,h),E.reportSeparator()})}return c.children=Ge.sortMap(c.children,h=>h.value[1]),Rs.emitTree(c,{configuration:r,stdout:this.context.stdout,json:this.json,separators:1}),1}};iS();var mat={configuration:{enableConstraintsChecks:{description:"If true, constraints will run during installs",type:"BOOLEAN",default:!1},constraintsPath:{description:"The path of the constraints file.",type:"ABSOLUTE_PATH",default:"./constraints.pro"}},commands:[HC,jC,GC],hooks:{async validateProjectAfterInstall(e,{reportError:t}){if(!e.configuration.get("enableConstraintsChecks"))return;let r=await e.loadUserConfig(),s;if(r?.constraints)s=new LC(e);else{let{Constraints:c}=await Promise.resolve().then(()=>(lS(),aS));s=await c.find(e)}let a=await s.process();if(!a)return;let{remainingErrors:n}=jT(e,a);if(n.size!==0)if(e.configuration.isCI)for(let[c,f]of n)for(let p of f)t(84,`${pe.pretty(e.configuration,c.anchoredLocator,pe.Type.IDENT)}: ${p.text}`);else t(84,`Constraint check failed; run ${pe.pretty(e.configuration,"yarn constraints",pe.Type.CODE)} for more details`)}}},yat=mat;var o9={};Vt(o9,{CreateCommand:()=>qC,DlxCommand:()=>WC,default:()=>Iat});qe();Yt();var qC=class extends At{constructor(){super(...arguments);this.pkg=he.String("-p,--package",{description:"The package to run the provided command from"});this.quiet=he.Boolean("-q,--quiet",!1,{description:"Only report critical errors instead of printing the full install logs"});this.command=he.String();this.args=he.Proxy()}static{this.paths=[["create"]]}async execute(){let r=[];this.pkg&&r.push("--package",this.pkg),this.quiet&&r.push("--quiet");let s=this.command.replace(/^(@[^@/]+)(@|$)/,"$1/create$2"),a=j.parseDescriptor(s),n=a.name.match(/^create(-|$)/)?a:a.scope?j.makeIdent(a.scope,`create-${a.name}`):j.makeIdent(null,`create-${a.name}`),c=j.stringifyIdent(n);return a.range!=="unknown"&&(c+=`@${a.range}`),this.cli.run(["dlx",...r,c,...this.args])}};qe();qe();Dt();Yt();var WC=class extends At{constructor(){super(...arguments);this.packages=he.Array("-p,--package",{description:"The package(s) to install before running the command"});this.quiet=he.Boolean("-q,--quiet",!1,{description:"Only report critical errors instead of printing the full install logs"});this.command=he.String();this.args=he.Proxy()}static{this.paths=[["dlx"]]}static{this.usage=at.Usage({description:"run a package in a temporary environment",details:"\n This command will install a package within a temporary environment, and run its binary script if it contains any. The binary will run within the current cwd.\n\n By default Yarn will download the package named `command`, but this can be changed through the use of the `-p,--package` flag which will instruct Yarn to still run the same command but from a different package.\n\n Using `yarn dlx` as a replacement of `yarn add` isn't recommended, as it makes your project non-deterministic (Yarn doesn't keep track of the packages installed through `dlx` - neither their name, nor their version).\n ",examples:[["Use create-vite to scaffold a new Vite project","yarn dlx create-vite"],["Install multiple packages for a single command",`yarn dlx -p typescript -p ts-node ts-node --transpile-only -e "console.log('hello!')"`]]})}async execute(){return ze.telemetry=null,await le.mktempPromise(async r=>{let s=J.join(r,`dlx-${process.pid}`);await le.mkdirPromise(s),await le.writeFilePromise(J.join(s,"package.json"),`{} +`),await le.writeFilePromise(J.join(s,"yarn.lock"),"");let a=J.join(s,".yarnrc.yml"),n=await ze.findProjectCwd(this.context.cwd),f={enableGlobalCache:!(await ze.find(this.context.cwd,null,{strict:!1})).get("enableGlobalCache"),enableTelemetry:!1,logFilters:[{code:Kf(68),level:pe.LogLevel.Discard}]},p=n!==null?J.join(n,".yarnrc.yml"):null;p!==null&&le.existsSync(p)?(await le.copyFilePromise(p,a),await ze.updateConfiguration(s,O=>{let U=Ge.toMerged(O,f);return Array.isArray(O.plugins)&&(U.plugins=O.plugins.map(V=>{let te=typeof V=="string"?V:V.path,ie=fe.isAbsolute(te)?te:fe.resolve(fe.fromPortablePath(n),te);return typeof V=="string"?ie:{path:ie,spec:V.spec}})),U})):await le.writeJsonPromise(a,f);let h=this.packages??[this.command],E=j.parseDescriptor(this.command).name,C=await this.cli.run(["add","--fixed","--",...h],{cwd:s,quiet:this.quiet});if(C!==0)return C;this.quiet||this.context.stdout.write(` +`);let S=await ze.find(s,this.context.plugins),{project:x,workspace:I}=await Rt.find(S,s);if(I===null)throw new ar(x.cwd,s);await x.restoreInstallState();let T=await Cn.getWorkspaceAccessibleBinaries(I);return T.has(E)===!1&&T.size===1&&typeof this.packages>"u"&&(E=Array.from(T)[0][0]),await Cn.executeWorkspaceAccessibleBinary(I,E,this.args,{packageAccessibleBinaries:T,cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})})}};var Eat={commands:[qC,WC]},Iat=Eat;var c9={};Vt(c9,{ExecFetcher:()=>uS,ExecResolver:()=>fS,default:()=>Bat,execUtils:()=>YT});qe();qe();qe();Dt();var fA="exec:";var YT={};Vt(YT,{loadGeneratorFile:()=>cS,makeLocator:()=>l9,makeSpec:()=>mme,parseSpec:()=>a9});qe();Dt();function a9(e){let{params:t,selector:r}=j.parseRange(e),s=fe.toPortablePath(r);return{parentLocator:t&&typeof t.locator=="string"?j.parseLocator(t.locator):null,path:s}}function mme({parentLocator:e,path:t,generatorHash:r,protocol:s}){let a=e!==null?{locator:j.stringifyLocator(e)}:{},n=typeof r<"u"?{hash:r}:{};return j.makeRange({protocol:s,source:t,selector:t,params:{...n,...a}})}function l9(e,{parentLocator:t,path:r,generatorHash:s,protocol:a}){return j.makeLocator(e,mme({parentLocator:t,path:r,generatorHash:s,protocol:a}))}async function cS(e,t,r){let{parentLocator:s,path:a}=j.parseFileStyleRange(e,{protocol:t}),n=J.isAbsolute(a)?{packageFs:new bn(vt.root),prefixPath:vt.dot,localPath:vt.root}:await r.fetcher.fetch(s,r),c=n.localPath?{packageFs:new bn(vt.root),prefixPath:J.relative(vt.root,n.localPath)}:n;n!==c&&n.releaseFs&&n.releaseFs();let f=c.packageFs,p=J.join(c.prefixPath,a);return await f.readFilePromise(p,"utf8")}var uS=class{supports(t,r){return!!t.reference.startsWith(fA)}getLocalPath(t,r){let{parentLocator:s,path:a}=j.parseFileStyleRange(t.reference,{protocol:fA});if(J.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(s,r);return n===null?null:J.resolve(n,a)}async fetch(t,r){let s=r.checksums.get(t.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(t,s,{onHit:()=>r.report.reportCacheHit(t),onMiss:()=>r.report.reportCacheMiss(t),loader:()=>this.fetchFromDisk(t,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:j.getIdentVendorPath(t),localPath:this.getLocalPath(t,r),checksum:c}}async fetchFromDisk(t,r){let s=r.project.getDependencyMeta(t,null);if(!r.project.configuration.get("enableScripts")&&!s.built)throw new Lt(4,`${j.prettyLocator(r.project.configuration,t)} can't be built with the exec: protocol because all scripts have been disabled.`);let a=await cS(t.reference,fA,r);return le.mktempPromise(async n=>{let c=J.join(n,"generator.js");return await le.writeFilePromise(c,a),le.mktempPromise(async f=>{if(await this.generatePackage(f,t,c,r),!le.existsSync(J.join(f,"build")))throw new Error("The script should have generated a build directory");return await gs.makeArchiveFromDirectory(J.join(f,"build"),{prefixPath:j.getIdentVendorPath(t),compressionLevel:r.project.configuration.get("compressionLevel")})})})}async generatePackage(t,r,s,a){return await le.mktempPromise(async n=>{let c=await Cn.makeScriptEnv({project:a.project,binFolder:n}),f=J.join(t,"runtime.js");return await le.mktempPromise(async p=>{let h=J.join(p,"buildfile.log"),E=J.join(t,"generator"),C=J.join(t,"build");await le.mkdirPromise(E),await le.mkdirPromise(C);let S={tempDir:fe.fromPortablePath(E),buildDir:fe.fromPortablePath(C),locator:j.stringifyLocator(r)};await le.writeFilePromise(f,` + // Expose 'Module' as a global variable + Object.defineProperty(global, 'Module', { + get: () => require('module'), + configurable: true, + enumerable: false, + }); + + // Expose non-hidden built-in modules as global variables + for (const name of Module.builtinModules.filter((name) => name !== 'module' && !name.startsWith('_'))) { + Object.defineProperty(global, name, { + get: () => require(name), + configurable: true, + enumerable: false, + }); + } + + // Expose the 'execEnv' global variable + Object.defineProperty(global, 'execEnv', { + value: { + ...${JSON.stringify(S)}, + }, + enumerable: true, + }); + `);let x=c.NODE_OPTIONS||"",I=/\s*--require\s+\S*\.pnp\.c?js\s*/g;x=x.replace(I," ").trim(),c.NODE_OPTIONS=x;let{stdout:T,stderr:O}=a.project.configuration.getSubprocessStreams(h,{header:`# This file contains the result of Yarn generating a package (${j.stringifyLocator(r)}) +`,prefix:j.prettyLocator(a.project.configuration,r),report:a.report}),{code:U}=await qr.pipevp(process.execPath,["--require",fe.fromPortablePath(f),fe.fromPortablePath(s),j.stringifyIdent(r)],{cwd:t,env:c,stdin:null,stdout:T,stderr:O});if(U!==0)throw le.detachTemp(p),new Error(`Package generation failed (exit code ${U}, logs can be found here: ${pe.pretty(a.project.configuration,h,pe.Type.PATH)})`)})})}};qe();qe();qe();var Cat=2,fS=class{supportsDescriptor(t,r){return!!t.range.startsWith(fA)}supportsLocator(t,r){return!!t.reference.startsWith(fA)}shouldPersistResolution(t,r){return!1}bindDescriptor(t,r,s){if(s.project.tryWorkspaceByLocator(r)===null)throw new Lt(57,`${j.prettyLocator(s.project.configuration,r)} lists ${j.prettyDescriptor(s.project.configuration,t)} as dependency, but only workspaces can depend on exec: packages.`);return j.bindDescriptor(t,{locator:j.stringifyLocator(r)})}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){if(!s.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{path:a,parentLocator:n}=a9(t.range);if(n===null)throw new Error("Assertion failed: The descriptor should have been bound");let c=await cS(j.makeRange({protocol:fA,source:a,selector:a,params:{locator:j.stringifyLocator(n)}}),fA,s.fetchOptions),f=Ln.makeHash(`${Cat}`,c).slice(0,6);return[l9(t,{parentLocator:n,path:a,generatorHash:f,protocol:fA})]}async getSatisfying(t,r,s,a){let[n]=await this.getCandidates(t,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(t,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let s=await r.fetchOptions.fetcher.fetch(t,r.fetchOptions),a=await Ge.releaseAfterUseAsync(async()=>await _t.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...t,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var wat={fetchers:[uS],resolvers:[fS]},Bat=wat;var f9={};Vt(f9,{FileFetcher:()=>dS,FileResolver:()=>gS,TarballFileFetcher:()=>mS,TarballFileResolver:()=>yS,default:()=>Dat,fileUtils:()=>Rm});qe();Dt();var YC=/^(?:[a-zA-Z]:[\\/]|\.{0,2}\/)/,AS=/^[^?]*\.(?:tar\.gz|tgz)(?:::.*)?$/,ts="file:";var Rm={};Vt(Rm,{fetchArchiveFromLocator:()=>hS,makeArchiveFromLocator:()=>VT,makeBufferFromLocator:()=>u9,makeLocator:()=>VC,makeSpec:()=>yme,parseSpec:()=>pS});qe();Dt();function pS(e){let{params:t,selector:r}=j.parseRange(e),s=fe.toPortablePath(r);return{parentLocator:t&&typeof t.locator=="string"?j.parseLocator(t.locator):null,path:s}}function yme({parentLocator:e,path:t,hash:r,protocol:s}){let a=e!==null?{locator:j.stringifyLocator(e)}:{},n=typeof r<"u"?{hash:r}:{};return j.makeRange({protocol:s,source:t,selector:t,params:{...n,...a}})}function VC(e,{parentLocator:t,path:r,hash:s,protocol:a}){return j.makeLocator(e,yme({parentLocator:t,path:r,hash:s,protocol:a}))}async function hS(e,t){let{parentLocator:r,path:s}=j.parseFileStyleRange(e.reference,{protocol:ts}),a=J.isAbsolute(s)?{packageFs:new bn(vt.root),prefixPath:vt.dot,localPath:vt.root}:await t.fetcher.fetch(r,t),n=a.localPath?{packageFs:new bn(vt.root),prefixPath:J.relative(vt.root,a.localPath)}:a;a!==n&&a.releaseFs&&a.releaseFs();let c=n.packageFs,f=J.join(n.prefixPath,s);return await Ge.releaseAfterUseAsync(async()=>await c.readFilePromise(f),n.releaseFs)}async function VT(e,{protocol:t,fetchOptions:r,inMemory:s=!1}){let{parentLocator:a,path:n}=j.parseFileStyleRange(e.reference,{protocol:t}),c=J.isAbsolute(n)?{packageFs:new bn(vt.root),prefixPath:vt.dot,localPath:vt.root}:await r.fetcher.fetch(a,r),f=c.localPath?{packageFs:new bn(vt.root),prefixPath:J.relative(vt.root,c.localPath)}:c;c!==f&&c.releaseFs&&c.releaseFs();let p=f.packageFs,h=J.join(f.prefixPath,n);return await Ge.releaseAfterUseAsync(async()=>await gs.makeArchiveFromDirectory(h,{baseFs:p,prefixPath:j.getIdentVendorPath(e),compressionLevel:r.project.configuration.get("compressionLevel"),inMemory:s}),f.releaseFs)}async function u9(e,{protocol:t,fetchOptions:r}){return(await VT(e,{protocol:t,fetchOptions:r,inMemory:!0})).getBufferAndClose()}var dS=class{supports(t,r){return!!t.reference.startsWith(ts)}getLocalPath(t,r){let{parentLocator:s,path:a}=j.parseFileStyleRange(t.reference,{protocol:ts});if(J.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(s,r);return n===null?null:J.resolve(n,a)}async fetch(t,r){let s=r.checksums.get(t.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(t,s,{onHit:()=>r.report.reportCacheHit(t),onMiss:()=>r.report.reportCacheMiss(t,`${j.prettyLocator(r.project.configuration,t)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(t,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:j.getIdentVendorPath(t),localPath:this.getLocalPath(t,r),checksum:c}}async fetchFromDisk(t,r){return VT(t,{protocol:ts,fetchOptions:r})}};qe();qe();var vat=2,gS=class{supportsDescriptor(t,r){return t.range.match(YC)?!0:!!t.range.startsWith(ts)}supportsLocator(t,r){return!!t.reference.startsWith(ts)}shouldPersistResolution(t,r){return!1}bindDescriptor(t,r,s){return YC.test(t.range)&&(t=j.makeDescriptor(t,`${ts}${t.range}`)),j.bindDescriptor(t,{locator:j.stringifyLocator(r)})}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){if(!s.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{path:a,parentLocator:n}=pS(t.range);if(n===null)throw new Error("Assertion failed: The descriptor should have been bound");let c=await u9(j.makeLocator(t,j.makeRange({protocol:ts,source:a,selector:a,params:{locator:j.stringifyLocator(n)}})),{protocol:ts,fetchOptions:s.fetchOptions}),f=Ln.makeHash(`${vat}`,c).slice(0,6);return[VC(t,{parentLocator:n,path:a,hash:f,protocol:ts})]}async getSatisfying(t,r,s,a){let[n]=await this.getCandidates(t,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(t,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let s=await r.fetchOptions.fetcher.fetch(t,r.fetchOptions),a=await Ge.releaseAfterUseAsync(async()=>await _t.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...t,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};qe();var mS=class{supports(t,r){return AS.test(t.reference)?!!t.reference.startsWith(ts):!1}getLocalPath(t,r){return null}async fetch(t,r){let s=r.checksums.get(t.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(t,s,{onHit:()=>r.report.reportCacheHit(t),onMiss:()=>r.report.reportCacheMiss(t,`${j.prettyLocator(r.project.configuration,t)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(t,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:j.getIdentVendorPath(t),checksum:c}}async fetchFromDisk(t,r){let s=await hS(t,r);return await gs.convertToZip(s,{configuration:r.project.configuration,prefixPath:j.getIdentVendorPath(t),stripComponents:1})}};qe();qe();qe();var yS=class{supportsDescriptor(t,r){return AS.test(t.range)?!!(t.range.startsWith(ts)||YC.test(t.range)):!1}supportsLocator(t,r){return AS.test(t.reference)?!!t.reference.startsWith(ts):!1}shouldPersistResolution(t,r){return!1}bindDescriptor(t,r,s){return YC.test(t.range)&&(t=j.makeDescriptor(t,`${ts}${t.range}`)),j.bindDescriptor(t,{locator:j.stringifyLocator(r)})}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){if(!s.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{path:a,parentLocator:n}=pS(t.range);if(n===null)throw new Error("Assertion failed: The descriptor should have been bound");let c=VC(t,{parentLocator:n,path:a,hash:"",protocol:ts}),f=await hS(c,s.fetchOptions),p=Ln.makeHash(f).slice(0,6);return[VC(t,{parentLocator:n,path:a,hash:p,protocol:ts})]}async getSatisfying(t,r,s,a){let[n]=await this.getCandidates(t,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(t,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let s=await r.fetchOptions.fetcher.fetch(t,r.fetchOptions),a=await Ge.releaseAfterUseAsync(async()=>await _t.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...t,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var Sat={fetchers:[mS,dS],resolvers:[yS,gS]},Dat=Sat;var h9={};Vt(h9,{GithubFetcher:()=>ES,default:()=>Pat,githubUtils:()=>JT});qe();Dt();var JT={};Vt(JT,{invalidGithubUrlMessage:()=>Cme,isGithubUrl:()=>A9,parseGithubUrl:()=>p9});var Eme=et(Ie("querystring")),Ime=[/^https?:\/\/(?:([^/]+?)@)?github.com\/([^/#]+)\/([^/#]+)\/tarball\/([^/#]+)(?:#(.*))?$/,/^https?:\/\/(?:([^/]+?)@)?github.com\/([^/#]+)\/([^/#]+?)(?:\.git)?(?:#(.*))?$/];function A9(e){return e?Ime.some(t=>!!e.match(t)):!1}function p9(e){let t;for(let f of Ime)if(t=e.match(f),t)break;if(!t)throw new Error(Cme(e));let[,r,s,a,n="master"]=t,{commit:c}=Eme.default.parse(n);return n=c||n.replace(/[^:]*:/,""),{auth:r,username:s,reponame:a,treeish:n}}function Cme(e){return`Input cannot be parsed as a valid GitHub URL ('${e}').`}var ES=class{supports(t,r){return!!A9(t.reference)}getLocalPath(t,r){return null}async fetch(t,r){let s=r.checksums.get(t.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(t,s,{onHit:()=>r.report.reportCacheHit(t),onMiss:()=>r.report.reportCacheMiss(t,`${j.prettyLocator(r.project.configuration,t)} can't be found in the cache and will be fetched from GitHub`),loader:()=>this.fetchFromNetwork(t,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:j.getIdentVendorPath(t),checksum:c}}async fetchFromNetwork(t,r){let s=await nn.get(this.getLocatorUrl(t,r),{configuration:r.project.configuration});return await le.mktempPromise(async a=>{let n=new bn(a);await gs.extractArchiveTo(s,n,{stripComponents:1});let c=La.splitRepoUrl(t.reference),f=J.join(a,"package.tgz");await Cn.prepareExternalProject(a,f,{configuration:r.project.configuration,report:r.report,workspace:c.extra.workspace,locator:t});let p=await le.readFilePromise(f);return await gs.convertToZip(p,{configuration:r.project.configuration,prefixPath:j.getIdentVendorPath(t),stripComponents:1})})}getLocatorUrl(t,r){let{auth:s,username:a,reponame:n,treeish:c}=p9(t.reference);return`https://${s?`${s}@`:""}github.com/${a}/${n}/archive/${c}.tar.gz`}};var bat={hooks:{async fetchHostedRepository(e,t,r){if(e!==null)return e;let s=new ES;if(!s.supports(t,r))return null;try{return await s.fetch(t,r)}catch{return null}}}},Pat=bat;var d9={};Vt(d9,{TarballHttpFetcher:()=>CS,TarballHttpResolver:()=>wS,default:()=>kat});qe();function IS(e){let t;try{t=new URL(e)}catch{return!1}return!(t.protocol!=="http:"&&t.protocol!=="https:"||!t.pathname.match(/(\.tar\.gz|\.tgz|\/[^.]+)$/))}var CS=class{supports(t,r){return IS(t.reference)}getLocalPath(t,r){return null}async fetch(t,r){let s=r.checksums.get(t.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(t,s,{onHit:()=>r.report.reportCacheHit(t),onMiss:()=>r.report.reportCacheMiss(t,`${j.prettyLocator(r.project.configuration,t)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(t,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:j.getIdentVendorPath(t),checksum:c}}async fetchFromNetwork(t,r){let s=await nn.get(t.reference,{configuration:r.project.configuration});return await gs.convertToZip(s,{configuration:r.project.configuration,prefixPath:j.getIdentVendorPath(t),stripComponents:1})}};qe();qe();var wS=class{supportsDescriptor(t,r){return IS(t.range)}supportsLocator(t,r){return IS(t.reference)}shouldPersistResolution(t,r){return!0}bindDescriptor(t,r,s){return t}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){return[j.convertDescriptorToLocator(t)]}async getSatisfying(t,r,s,a){let[n]=await this.getCandidates(t,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(t,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let s=await r.fetchOptions.fetcher.fetch(t,r.fetchOptions),a=await Ge.releaseAfterUseAsync(async()=>await _t.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...t,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var xat={fetchers:[CS],resolvers:[wS]},kat=xat;var g9={};Vt(g9,{InitCommand:()=>J0,InitInitializerCommand:()=>JC,default:()=>Rat});Yt();qe();qe();Dt();Yt();var J0=class extends At{constructor(){super(...arguments);this.private=he.Boolean("-p,--private",!1,{description:"Initialize a private package"});this.workspace=he.Boolean("-w,--workspace",!1,{description:"Initialize a workspace root with a `packages/` directory"});this.install=he.String("-i,--install",!1,{tolerateBoolean:!0,description:"Initialize a package with a specific bundle that will be locked in the project"});this.name=he.String("-n,--name",{description:"Initialize a package with the given name"});this.usev2=he.Boolean("-2",!1,{hidden:!0});this.yes=he.Boolean("-y,--yes",{hidden:!0})}static{this.paths=[["init"]]}static{this.usage=at.Usage({description:"create a new package",details:"\n This command will setup a new package in your local directory.\n\n If the `-p,--private` or `-w,--workspace` options are set, the package will be private by default.\n\n If the `-w,--workspace` option is set, the package will be configured to accept a set of workspaces in the `packages/` directory.\n\n If the `-i,--install` option is given a value, Yarn will first download it using `yarn set version` and only then forward the init call to the newly downloaded bundle. Without arguments, the downloaded bundle will be `latest`.\n\n The initial settings of the manifest can be changed by using the `initScope` and `initFields` configuration values. Additionally, Yarn will generate an EditorConfig file whose rules can be altered via `initEditorConfig`, and will initialize a Git repository in the current directory.\n ",examples:[["Create a new package in the local directory","yarn init"],["Create a new private package in the local directory","yarn init -p"],["Create a new package and store the Yarn release inside","yarn init -i=latest"],["Create a new private package and defines it as a workspace root","yarn init -w"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=typeof this.install=="string"?this.install:this.usev2||this.install===!0?"latest":null;return s!==null?await this.executeProxy(r,s):await this.executeRegular(r)}async executeProxy(r,s){if(r.projectCwd!==null&&r.projectCwd!==this.context.cwd)throw new it("Cannot use the --install flag from within a project subdirectory");le.existsSync(this.context.cwd)||await le.mkdirPromise(this.context.cwd,{recursive:!0});let a=J.join(this.context.cwd,Er.lockfile);le.existsSync(a)||await le.writeFilePromise(a,"");let n=await this.cli.run(["set","version",s],{quiet:!0});if(n!==0)return n;let c=[];return this.private&&c.push("-p"),this.workspace&&c.push("-w"),this.name&&c.push(`-n=${this.name}`),this.yes&&c.push("-y"),await le.mktempPromise(async f=>{let{code:p}=await qr.pipevp("yarn",["init",...c],{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,env:await Cn.makeScriptEnv({binFolder:f})});return p})}async initialize(){}async executeRegular(r){let s=null;try{s=(await Rt.find(r,this.context.cwd)).project}catch{s=null}le.existsSync(this.context.cwd)||await le.mkdirPromise(this.context.cwd,{recursive:!0});let a=await _t.tryFind(this.context.cwd),n=a??new _t,c=Object.fromEntries(r.get("initFields").entries());n.load(c),n.name=n.name??j.makeIdent(r.get("initScope"),this.name??J.basename(this.context.cwd)),n.packageManager=An&&Ge.isTaggedYarnVersion(An)?`yarn@${An}`:null,(!a&&this.workspace||this.private)&&(n.private=!0),this.workspace&&n.workspaceDefinitions.length===0&&(await le.mkdirPromise(J.join(this.context.cwd,"packages"),{recursive:!0}),n.workspaceDefinitions=[{pattern:"packages/*"}]);let f={};n.exportTo(f);let p=J.join(this.context.cwd,_t.fileName);await le.changeFilePromise(p,`${JSON.stringify(f,null,2)} +`,{automaticNewlines:!0});let h=[p],E=J.join(this.context.cwd,"README.md");if(le.existsSync(E)||(await le.writeFilePromise(E,`# ${j.stringifyIdent(n.name)} +`),h.push(E)),!s||s.cwd===this.context.cwd){let C=J.join(this.context.cwd,Er.lockfile);le.existsSync(C)||(await le.writeFilePromise(C,""),h.push(C));let x=[".yarn/*","!.yarn/patches","!.yarn/plugins","!.yarn/releases","!.yarn/sdks","!.yarn/versions","","# Whether you use PnP or not, the node_modules folder is often used to store","# build artifacts that should be gitignored","node_modules","","# Swap the comments on the following lines if you wish to use zero-installs","# In that case, don't forget to run `yarn config set enableGlobalCache false`!","# Documentation here: https://yarnpkg.com/features/caching#zero-installs","","#!.yarn/cache",".pnp.*"].map(ue=>`${ue} +`).join(""),I=J.join(this.context.cwd,".gitignore");le.existsSync(I)||(await le.writeFilePromise(I,x),h.push(I));let O=["/.yarn/** linguist-vendored","/.yarn/releases/* binary","/.yarn/plugins/**/* binary","/.pnp.* binary linguist-generated"].map(ue=>`${ue} +`).join(""),U=J.join(this.context.cwd,".gitattributes");le.existsSync(U)||(await le.writeFilePromise(U,O),h.push(U));let V={"*":{charset:"utf-8",endOfLine:"lf",indentSize:2,indentStyle:"space",insertFinalNewline:!0}};Ge.mergeIntoTarget(V,r.get("initEditorConfig"));let te=`root = true +`;for(let[ue,ae]of Object.entries(V)){te+=` +[${ue}] +`;for(let[ge,Ae]of Object.entries(ae)){let Ce=ge.replace(/[A-Z]/g,Ee=>`_${Ee.toLowerCase()}`);te+=`${Ce} = ${Ae} +`}}let ie=J.join(this.context.cwd,".editorconfig");le.existsSync(ie)||(await le.writeFilePromise(ie,te),h.push(ie)),await this.cli.run(["install"],{quiet:!0}),await this.initialize(),le.existsSync(J.join(this.context.cwd,".git"))||(await qr.execvp("git",["init"],{cwd:this.context.cwd}),await qr.execvp("git",["add","--",...h],{cwd:this.context.cwd}),await qr.execvp("git",["commit","--allow-empty","-m","First commit"],{cwd:this.context.cwd}))}}};var JC=class extends J0{constructor(){super(...arguments);this.initializer=he.String();this.argv=he.Proxy()}static{this.paths=[["init"]]}async initialize(){this.context.stdout.write(` +`),await this.cli.run(["dlx",this.initializer,...this.argv],{quiet:!0})}};var Qat={configuration:{initScope:{description:"Scope used when creating packages via the init command",type:"STRING",default:null},initFields:{description:"Additional fields to set when creating packages via the init command",type:"MAP",valueDefinition:{description:"",type:"ANY"}},initEditorConfig:{description:"Extra rules to define in the generator editorconfig",type:"MAP",valueDefinition:{description:"",type:"ANY"}}},commands:[J0,JC]},Rat=Qat;var pW={};Vt(pW,{SearchCommand:()=>Aw,UpgradeInteractiveCommand:()=>pw,default:()=>jpt});qe();var Bme=et(Ie("os"));function KC({stdout:e}){if(Bme.default.endianness()==="BE")throw new Error("Interactive commands cannot be used on big-endian systems because ink depends on yoga-layout-prebuilt which only supports little-endian architectures");if(!e.isTTY)throw new Error("Interactive commands can only be used inside a TTY environment")}Yt();var Nye=et(F9()),N9={appId:"OFCNCOG2CU",apiKey:"6fe4476ee5a1832882e326b506d14126",indexName:"npm-search"},xct=(0,Nye.default)(N9.appId,N9.apiKey).initIndex(N9.indexName),O9=async(e,t=0)=>await xct.search(e,{analyticsTags:["yarn-plugin-interactive-tools"],attributesToRetrieve:["name","version","owner","repository","humanDownloadsLast30Days"],page:t,hitsPerPage:10});var CD=["regular","dev","peer"],Aw=class extends At{static{this.paths=[["search"]]}static{this.usage=at.Usage({category:"Interactive commands",description:"open the search interface",details:` + This command opens a fullscreen terminal interface where you can search for and install packages from the npm registry. + `,examples:[["Open the search window","yarn search"]]})}async execute(){KC(this.context);let{Gem:t}=await Promise.resolve().then(()=>(xF(),rW)),{ScrollableItems:r}=await Promise.resolve().then(()=>(TF(),RF)),{useKeypress:s}=await Promise.resolve().then(()=>(fw(),nW)),{useMinistore:a}=await Promise.resolve().then(()=>(lW(),aW)),{renderForm:n}=await Promise.resolve().then(()=>(LF(),OF)),{default:c}=await Promise.resolve().then(()=>et(Iwe())),{Box:f,Text:p}=await Promise.resolve().then(()=>et(qc())),{default:h,useEffect:E,useState:C}=await Promise.resolve().then(()=>et(dn())),S=await ze.find(this.context.cwd,this.context.plugins),x=()=>h.createElement(f,{flexDirection:"row"},h.createElement(f,{flexDirection:"column",width:48},h.createElement(f,null,h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},""),"/",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to move between packages.")),h.createElement(f,null,h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to select a package.")),h.createElement(f,null,h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," again to change the target."))),h.createElement(f,{flexDirection:"column"},h.createElement(f,{marginLeft:1},h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to install the selected packages.")),h.createElement(f,{marginLeft:1},h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to abort.")))),I=()=>h.createElement(h.Fragment,null,h.createElement(f,{width:15},h.createElement(p,{bold:!0,underline:!0,color:"gray"},"Owner")),h.createElement(f,{width:11},h.createElement(p,{bold:!0,underline:!0,color:"gray"},"Version")),h.createElement(f,{width:10},h.createElement(p,{bold:!0,underline:!0,color:"gray"},"Downloads"))),T=()=>h.createElement(f,{width:17},h.createElement(p,{bold:!0,underline:!0,color:"gray"},"Target")),O=({hit:Ae,active:Ce})=>{let[Ee,d]=a(Ae.name,null);s({active:Ce},(me,ce)=>{if(ce.name!=="space")return;if(!Ee){d(CD[0]);return}let Z=CD.indexOf(Ee)+1;Z===CD.length?d(null):d(CD[Z])},[Ee,d]);let Se=j.parseIdent(Ae.name),Be=j.prettyIdent(S,Se);return h.createElement(f,null,h.createElement(f,{width:45},h.createElement(p,{bold:!0,wrap:"wrap"},Be)),h.createElement(f,{width:14,marginLeft:1},h.createElement(p,{bold:!0,wrap:"truncate"},Ae.owner.name)),h.createElement(f,{width:10,marginLeft:1},h.createElement(p,{italic:!0,wrap:"truncate"},Ae.version)),h.createElement(f,{width:16,marginLeft:1},h.createElement(p,null,Ae.humanDownloadsLast30Days)))},U=({name:Ae,active:Ce})=>{let[Ee]=a(Ae,null),d=j.parseIdent(Ae);return h.createElement(f,null,h.createElement(f,{width:47},h.createElement(p,{bold:!0}," - ",j.prettyIdent(S,d))),CD.map(Se=>h.createElement(f,{key:Se,width:14,marginLeft:1},h.createElement(p,null," ",h.createElement(t,{active:Ee===Se})," ",h.createElement(p,{bold:!0},Se)))))},V=()=>h.createElement(f,{marginTop:1},h.createElement(p,null,"Powered by Algolia.")),ie=await n(({useSubmit:Ae})=>{let Ce=a();Ae(Ce);let Ee=Array.from(Ce.keys()).filter(_=>Ce.get(_)!==null),[d,Se]=C(""),[Be,me]=C(0),[ce,Z]=C([]),De=_=>{_.match(/\t| /)||Se(_)},Qe=async()=>{me(0);let _=await O9(d);_.query===d&&Z(_.hits)},st=async()=>{let _=await O9(d,Be+1);_.query===d&&_.page-1===Be&&(me(_.page),Z([...ce,..._.hits]))};return E(()=>{d?Qe():Z([])},[d]),h.createElement(f,{flexDirection:"column"},h.createElement(x,null),h.createElement(f,{flexDirection:"row",marginTop:1},h.createElement(p,{bold:!0},"Search: "),h.createElement(f,{width:41},h.createElement(c,{value:d,onChange:De,placeholder:"i.e. babel, webpack, react...",showCursor:!1})),h.createElement(I,null)),ce.length?h.createElement(r,{radius:2,loop:!1,children:ce.map(_=>h.createElement(O,{key:_.name,hit:_,active:!1})),willReachEnd:st}):h.createElement(p,{color:"gray"},"Start typing..."),h.createElement(f,{flexDirection:"row",marginTop:1},h.createElement(f,{width:49},h.createElement(p,{bold:!0},"Selected:")),h.createElement(T,null)),Ee.length?Ee.map(_=>h.createElement(U,{key:_,name:_,active:!1})):h.createElement(p,{color:"gray"},"No selected packages..."),h.createElement(V,null))},{},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof ie>"u")return 1;let ue=Array.from(ie.keys()).filter(Ae=>ie.get(Ae)==="regular"),ae=Array.from(ie.keys()).filter(Ae=>ie.get(Ae)==="dev"),ge=Array.from(ie.keys()).filter(Ae=>ie.get(Ae)==="peer");return ue.length&&await this.cli.run(["add",...ue]),ae.length&&await this.cli.run(["add","--dev",...ae]),ge&&await this.cli.run(["add","--peer",...ge]),0}};qe();Yt();fG();var bwe=et(pi());Al();var Dwe=/^((?:[\^~]|>=?)?)([0-9]+)(\.[0-9]+)(\.[0-9]+)((?:-\S+)?)$/;function Pwe(e,t){return e.length>0?[e.slice(0,t)].concat(Pwe(e.slice(t),t)):[]}var pw=class extends At{constructor(){super(...arguments);this.mode=he.String("--mode",{description:"Change what artifacts installs generate",validator:ks(Oa)})}static{this.paths=[["upgrade-interactive"]]}static{this.usage=at.Usage({category:"Interactive commands",description:"open the upgrade interface",details:"\n This command opens a fullscreen terminal interface where you can see any out of date packages used by your application, their status compared to the latest versions available on the remote registry, and select packages to upgrade.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n ",examples:[["Open the upgrade window","yarn upgrade-interactive"]]})}async execute(){KC(this.context);let{ItemOptions:r}=await Promise.resolve().then(()=>(Swe(),vwe)),{Pad:s}=await Promise.resolve().then(()=>(AW(),Bwe)),{ScrollableItems:a}=await Promise.resolve().then(()=>(TF(),RF)),{useMinistore:n,useMinistoreSetAll:c}=await Promise.resolve().then(()=>(lW(),aW)),{useKeypress:f}=await Promise.resolve().then(()=>(fw(),nW)),{renderForm:p}=await Promise.resolve().then(()=>(LF(),OF)),{Box:h,Text:E}=await Promise.resolve().then(()=>et(qc())),{default:C,useCallback:S,useEffect:x,useRef:I,useState:T}=await Promise.resolve().then(()=>et(dn())),O=await ze.find(this.context.cwd,this.context.plugins),{project:U,workspace:V}=await Rt.find(O,this.context.cwd),te=await Kr.find(O);if(!V)throw new ar(U.cwd,this.context.cwd);await U.restoreInstallState({restoreResolutions:!1});let ie=this.context.stdout.rows-8,ue=(Z,De)=>{let Qe=o0e(Z,De),st="";for(let _ of Qe)_.added?st+=pe.pretty(O,_.value,"green"):_.removed||(st+=_.value);return st},ae=(Z,De)=>{if(Z===De)return De;let Qe=j.parseRange(Z),st=j.parseRange(De),_=Qe.selector.match(Dwe),tt=st.selector.match(Dwe);if(!_||!tt)return ue(Z,De);let Ne=["gray","red","yellow","green","magenta"],ke=null,be="";for(let je=1;je{let st=await $u.fetchDescriptorFrom(Z,Qe,{project:U,cache:te,preserveModifier:De,workspace:V});return st!==null?st.range:Z.range},Ae=async Z=>{let De=bwe.default.valid(Z.range)?`^${Z.range}`:Z.range,[Qe,st]=await Promise.all([ge(Z,Z.range,De).catch(()=>null),ge(Z,Z.range,"latest").catch(()=>null)]),_=[{value:null,label:Z.range}];return Qe&&Qe!==Z.range?_.push({value:Qe,label:ae(Z.range,Qe)}):_.push({value:null,label:""}),st&&st!==Qe&&st!==Z.range?_.push({value:st,label:ae(Z.range,st)}):_.push({value:null,label:""}),_},Ce=()=>C.createElement(h,{flexDirection:"row"},C.createElement(h,{flexDirection:"column",width:49},C.createElement(h,{marginLeft:1},C.createElement(E,null,"Press ",C.createElement(E,{bold:!0,color:"cyanBright"},""),"/",C.createElement(E,{bold:!0,color:"cyanBright"},"")," to select packages.")),C.createElement(h,{marginLeft:1},C.createElement(E,null,"Press ",C.createElement(E,{bold:!0,color:"cyanBright"},""),"/",C.createElement(E,{bold:!0,color:"cyanBright"},"")," to select versions.")),C.createElement(h,{marginLeft:1},C.createElement(E,null,"Press ",C.createElement(E,{bold:!0,color:"cyanBright"},"c"),"/",C.createElement(E,{bold:!0,color:"cyanBright"},"r"),"/",C.createElement(E,{bold:!0,color:"cyanBright"},"l")," to select all ",C.createElement(E,{bold:!0,color:"cyanBright"},"current"),"/",C.createElement(E,{bold:!0,color:"cyanBright"},"range"),"/",C.createElement(E,{bold:!0,color:"cyanBright"},"latest"),"."))),C.createElement(h,{flexDirection:"column"},C.createElement(h,{marginLeft:1},C.createElement(E,null,"Press ",C.createElement(E,{bold:!0,color:"cyanBright"},"")," to install.")),C.createElement(h,{marginLeft:1},C.createElement(E,null,"Press ",C.createElement(E,{bold:!0,color:"cyanBright"},"")," to abort.")))),Ee=()=>C.createElement(h,{flexDirection:"row",paddingTop:1,paddingBottom:1},C.createElement(h,{width:50},C.createElement(E,{bold:!0},C.createElement(E,{color:"greenBright"},"?")," Pick the packages you want to upgrade.")),C.createElement(h,{width:17},C.createElement(E,{bold:!0,underline:!0,color:"gray"},"Current")),C.createElement(h,{width:17},C.createElement(E,{bold:!0,underline:!0,color:"gray"},"Range")),C.createElement(h,{width:17},C.createElement(E,{bold:!0,underline:!0,color:"gray"},"Latest"))),d=({active:Z,descriptor:De,suggestions:Qe})=>{let[st,_]=n(De.descriptorHash,null),tt=j.stringifyIdent(De),Ne=Math.max(0,45-tt.length);return C.createElement(C.Fragment,null,C.createElement(h,null,C.createElement(h,{width:45},C.createElement(E,{bold:!0},j.prettyIdent(O,De)),C.createElement(s,{active:Z,length:Ne})),C.createElement(r,{active:Z,options:Qe,value:st,skewer:!0,onChange:_,sizes:[17,17,17]})))},Se=({dependencies:Z})=>{let De=c(),[Qe,st]=T(Z.map(()=>null)),_=I(!0),tt=async ke=>{let be=await Ae(ke);return be.filter(je=>je.label!=="").length<=1?null:{descriptor:ke,suggestions:be}};x(()=>()=>{_.current=!1},[]),x(()=>{let ke=Math.trunc(ie*1.75),be=Z.slice(0,ke),je=Z.slice(ke),Re=Pwe(je,ie),ct=be.map(tt).reduce(async(Me,P)=>{await Me;let w=await P;w!==null&&_.current&&st(b=>{let y=b.findIndex(z=>z===null),F=[...b];return F[y]=w,F})},Promise.resolve());Re.reduce((Me,P)=>Promise.all(P.map(w=>Promise.resolve().then(()=>tt(w)))).then(async w=>{w=w.filter(b=>b!==null),await Me,_.current&&st(b=>{let y=b.findIndex(F=>F===null);return b.slice(0,y).concat(w).concat(b.slice(y+w.length))})}),ct).then(()=>{_.current&&st(Me=>Me.filter(P=>P!==null))})},[]);let Ne=S(ke=>{if(ke!=="c"&&ke!=="r"&&ke!=="l")return;let be=[];for(let je of Qe){if(je===null)continue;let Re;ke==="c"?Re=null:ke==="r"?Re=je.suggestions[1].value:Re=je.suggestions[2].value??je.suggestions[1].value,be.push([je.descriptor.descriptorHash,Re])}De(be)},[Qe,De]);return f({active:!0},Ne,[Ne]),Qe.length?C.createElement(a,{radius:ie>>1,children:Qe.map((ke,be)=>ke!==null?C.createElement(d,{key:be,active:!1,descriptor:ke.descriptor,suggestions:ke.suggestions}):C.createElement(E,{key:be},"Loading..."))}):C.createElement(E,null,"No upgrades found")},me=await p(({useSubmit:Z})=>{Z(n());let De=new Map;for(let st of U.workspaces)for(let _ of["dependencies","devDependencies"])for(let tt of st.manifest[_].values())U.tryWorkspaceByDescriptor(tt)===null&&(tt.range.startsWith("link:")||De.set(tt.descriptorHash,tt));let Qe=Ge.sortMap(De.values(),st=>j.stringifyDescriptor(st));return C.createElement(h,{flexDirection:"column"},C.createElement(Ce,null),C.createElement(Ee,null),C.createElement(Se,{dependencies:Qe}))},{},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof me>"u")return 1;let ce=!1;for(let Z of U.workspaces)for(let De of["dependencies","devDependencies"]){let Qe=Z.manifest[De];for(let st of Qe.values()){let _=me.get(st.descriptorHash);typeof _<"u"&&_!==null&&(Qe.set(st.identHash,j.makeDescriptor(st,_)),ce=!0)}}return ce?await U.installWithNewReport({quiet:this.context.quiet,stdout:this.context.stdout},{cache:te,mode:this.mode}):0}};var Hpt={commands:[Aw,pw]},jpt=Hpt;var dW={};Vt(dW,{default:()=>Ypt});qe();var BD="jsr:";qe();qe();function hw(e){let t=e.range.slice(4);if(kr.validRange(t))return j.makeDescriptor(e,`npm:${j.stringifyIdent(j.wrapIdentIntoScope(e,"jsr"))}@${t}`);let r=j.tryParseDescriptor(t,!0);if(r!==null)return j.makeDescriptor(e,`npm:${j.stringifyIdent(j.wrapIdentIntoScope(r,"jsr"))}@${r.range}`);throw new Error(`Invalid range: ${e.range}`)}function dw(e){return j.makeLocator(j.wrapIdentIntoScope(e,"jsr"),`npm:${e.reference.slice(4)}`)}function hW(e){return j.makeLocator(j.unwrapIdentFromScope(e,"jsr"),`jsr:${e.reference.slice(4)}`)}var MF=class{supports(t,r){return t.reference.startsWith(BD)}getLocalPath(t,r){let s=dw(t);return r.fetcher.getLocalPath(s,r)}fetch(t,r){let s=dw(t);return r.fetcher.fetch(s,r)}};var UF=class{supportsDescriptor(t,r){return!!t.range.startsWith(BD)}supportsLocator(t,r){return!!t.reference.startsWith(BD)}shouldPersistResolution(t,r){let s=dw(t);return r.resolver.shouldPersistResolution(s,r)}bindDescriptor(t,r,s){return t}getResolutionDependencies(t,r){return{inner:hw(t)}}async getCandidates(t,r,s){let a=s.project.configuration.normalizeDependency(hw(t));return(await s.resolver.getCandidates(a,r,s)).map(c=>hW(c))}async getSatisfying(t,r,s,a){let n=a.project.configuration.normalizeDependency(hw(t));return a.resolver.getSatisfying(n,r,s,a)}async resolve(t,r){let s=dw(t),a=await r.resolver.resolve(s,r);return{...a,...hW(a)}}};var Gpt=["dependencies","devDependencies","peerDependencies"];function qpt(e,t){for(let r of Gpt)for(let s of e.manifest.getForScope(r).values()){if(!s.range.startsWith("jsr:"))continue;let a=hw(s),n=r==="dependencies"?j.makeDescriptor(s,"unknown"):null,c=n!==null&&e.manifest.ensureDependencyMeta(n).optional?"optionalDependencies":r;t[c][j.stringifyIdent(s)]=a.range}}var Wpt={hooks:{beforeWorkspacePacking:qpt},resolvers:[UF],fetchers:[MF]},Ypt=Wpt;var gW={};Vt(gW,{LinkFetcher:()=>vD,LinkResolver:()=>SD,PortalFetcher:()=>DD,PortalResolver:()=>bD,default:()=>Jpt});qe();Dt();var rh="portal:",nh="link:";var vD=class{supports(t,r){return!!t.reference.startsWith(nh)}getLocalPath(t,r){let{parentLocator:s,path:a}=j.parseFileStyleRange(t.reference,{protocol:nh});if(J.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(s,r);return n===null?null:J.resolve(n,a)}async fetch(t,r){let{parentLocator:s,path:a}=j.parseFileStyleRange(t.reference,{protocol:nh}),n=J.isAbsolute(a)?{packageFs:new bn(vt.root),prefixPath:vt.dot,localPath:vt.root}:await r.fetcher.fetch(s,r),c=n.localPath?{packageFs:new bn(vt.root),prefixPath:J.relative(vt.root,n.localPath),localPath:vt.root}:n;n!==c&&n.releaseFs&&n.releaseFs();let f=c.packageFs,p=J.resolve(c.localPath??c.packageFs.getRealPath(),c.prefixPath,a);return n.localPath?{packageFs:new bn(p,{baseFs:f}),releaseFs:c.releaseFs,prefixPath:vt.dot,discardFromLookup:!0,localPath:p}:{packageFs:new qf(p,{baseFs:f}),releaseFs:c.releaseFs,prefixPath:vt.dot,discardFromLookup:!0}}};qe();Dt();var SD=class{supportsDescriptor(t,r){return!!t.range.startsWith(nh)}supportsLocator(t,r){return!!t.reference.startsWith(nh)}shouldPersistResolution(t,r){return!1}bindDescriptor(t,r,s){return j.bindDescriptor(t,{locator:j.stringifyLocator(r)})}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){let a=t.range.slice(nh.length);return[j.makeLocator(t,`${nh}${fe.toPortablePath(a)}`)]}async getSatisfying(t,r,s,a){let[n]=await this.getCandidates(t,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(t,r){return{...t,version:"0.0.0",languageName:r.project.configuration.get("defaultLanguageName"),linkType:"SOFT",conditions:null,dependencies:new Map,peerDependencies:new Map,dependenciesMeta:new Map,peerDependenciesMeta:new Map,bin:new Map}}};qe();Dt();var DD=class{supports(t,r){return!!t.reference.startsWith(rh)}getLocalPath(t,r){let{parentLocator:s,path:a}=j.parseFileStyleRange(t.reference,{protocol:rh});if(J.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(s,r);return n===null?null:J.resolve(n,a)}async fetch(t,r){let{parentLocator:s,path:a}=j.parseFileStyleRange(t.reference,{protocol:rh}),n=J.isAbsolute(a)?{packageFs:new bn(vt.root),prefixPath:vt.dot,localPath:vt.root}:await r.fetcher.fetch(s,r),c=n.localPath?{packageFs:new bn(vt.root),prefixPath:J.relative(vt.root,n.localPath),localPath:vt.root}:n;n!==c&&n.releaseFs&&n.releaseFs();let f=c.packageFs,p=J.resolve(c.localPath??c.packageFs.getRealPath(),c.prefixPath,a);return n.localPath?{packageFs:new bn(p,{baseFs:f}),releaseFs:c.releaseFs,prefixPath:vt.dot,localPath:p}:{packageFs:new qf(p,{baseFs:f}),releaseFs:c.releaseFs,prefixPath:vt.dot}}};qe();qe();Dt();var bD=class{supportsDescriptor(t,r){return!!t.range.startsWith(rh)}supportsLocator(t,r){return!!t.reference.startsWith(rh)}shouldPersistResolution(t,r){return!1}bindDescriptor(t,r,s){return j.bindDescriptor(t,{locator:j.stringifyLocator(r)})}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){let a=t.range.slice(rh.length);return[j.makeLocator(t,`${rh}${fe.toPortablePath(a)}`)]}async getSatisfying(t,r,s,a){let[n]=await this.getCandidates(t,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(t,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let s=await r.fetchOptions.fetcher.fetch(t,r.fetchOptions),a=await Ge.releaseAfterUseAsync(async()=>await _t.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...t,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"SOFT",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var Vpt={fetchers:[vD,DD],resolvers:[SD,bD]},Jpt=Vpt;var eY={};Vt(eY,{NodeModulesLinker:()=>jD,NodeModulesMode:()=>zW,PnpLooseLinker:()=>GD,default:()=>f0t});Dt();qe();Dt();Dt();var yW=(e,t)=>`${e}@${t}`,xwe=(e,t)=>{let r=t.indexOf("#"),s=r>=0?t.substring(r+1):t;return yW(e,s)};var Qwe=(e,t={})=>{let r=t.debugLevel||Number(process.env.NM_DEBUG_LEVEL||-1),s=t.check||r>=9,a=t.hoistingLimits||new Map,n={check:s,debugLevel:r,hoistingLimits:a,fastLookupPossible:!0},c;n.debugLevel>=0&&(c=Date.now());let f=tht(e,n),p=!1,h=0;do{let E=EW(f,[f],new Set([f.locator]),new Map,n);p=E.anotherRoundNeeded||E.isGraphChanged,n.fastLookupPossible=!1,h++}while(p);if(n.debugLevel>=0&&console.log(`hoist time: ${Date.now()-c}ms, rounds: ${h}`),n.debugLevel>=1){let E=PD(f);if(EW(f,[f],new Set([f.locator]),new Map,n).isGraphChanged)throw new Error(`The hoisting result is not terminal, prev tree: +${E}, next tree: +${PD(f)}`);let S=Rwe(f);if(S)throw new Error(`${S}, after hoisting finished: +${PD(f)}`)}return n.debugLevel>=2&&console.log(PD(f)),rht(f)},Kpt=e=>{let t=e[e.length-1],r=new Map,s=new Set,a=n=>{if(!s.has(n)){s.add(n);for(let c of n.hoistedDependencies.values())r.set(c.name,c);for(let c of n.dependencies.values())n.peerNames.has(c.name)||a(c)}};return a(t),r},zpt=e=>{let t=e[e.length-1],r=new Map,s=new Set,a=new Set,n=(c,f)=>{if(s.has(c))return;s.add(c);for(let h of c.hoistedDependencies.values())if(!f.has(h.name)){let E;for(let C of e)E=C.dependencies.get(h.name),E&&r.set(E.name,E)}let p=new Set;for(let h of c.dependencies.values())p.add(h.name);for(let h of c.dependencies.values())c.peerNames.has(h.name)||n(h,p)};return n(t,a),r},kwe=(e,t)=>{if(t.decoupled)return t;let{name:r,references:s,ident:a,locator:n,dependencies:c,originalDependencies:f,hoistedDependencies:p,peerNames:h,reasons:E,isHoistBorder:C,hoistPriority:S,dependencyKind:x,hoistedFrom:I,hoistedTo:T}=t,O={name:r,references:new Set(s),ident:a,locator:n,dependencies:new Map(c),originalDependencies:new Map(f),hoistedDependencies:new Map(p),peerNames:new Set(h),reasons:new Map(E),decoupled:!0,isHoistBorder:C,hoistPriority:S,dependencyKind:x,hoistedFrom:new Map(I),hoistedTo:new Map(T)},U=O.dependencies.get(r);return U&&U.ident==O.ident&&O.dependencies.set(r,O),e.dependencies.set(O.name,O),O},Xpt=(e,t)=>{let r=new Map([[e.name,[e.ident]]]);for(let a of e.dependencies.values())e.peerNames.has(a.name)||r.set(a.name,[a.ident]);let s=Array.from(t.keys());s.sort((a,n)=>{let c=t.get(a),f=t.get(n);if(f.hoistPriority!==c.hoistPriority)return f.hoistPriority-c.hoistPriority;{let p=c.dependents.size+c.peerDependents.size;return f.dependents.size+f.peerDependents.size-p}});for(let a of s){let n=a.substring(0,a.indexOf("@",1)),c=a.substring(n.length+1);if(!e.peerNames.has(n)){let f=r.get(n);f||(f=[],r.set(n,f)),f.indexOf(c)<0&&f.push(c)}}return r},mW=e=>{let t=new Set,r=(s,a=new Set)=>{if(!a.has(s)){a.add(s);for(let n of s.peerNames)if(!e.peerNames.has(n)){let c=e.dependencies.get(n);c&&!t.has(c)&&r(c,a)}t.add(s)}};for(let s of e.dependencies.values())e.peerNames.has(s.name)||r(s);return t},EW=(e,t,r,s,a,n=new Set)=>{let c=t[t.length-1];if(n.has(c))return{anotherRoundNeeded:!1,isGraphChanged:!1};n.add(c);let f=nht(c),p=Xpt(c,f),h=e==c?new Map:a.fastLookupPossible?Kpt(t):zpt(t),E,C=!1,S=!1,x=new Map(Array.from(p.entries()).map(([T,O])=>[T,O[0]])),I=new Map;do{let T=eht(e,t,r,h,x,p,s,I,a);T.isGraphChanged&&(S=!0),T.anotherRoundNeeded&&(C=!0),E=!1;for(let[O,U]of p)U.length>1&&!c.dependencies.has(O)&&(x.delete(O),U.shift(),x.set(O,U[0]),E=!0)}while(E);for(let T of c.dependencies.values())if(!c.peerNames.has(T.name)&&!r.has(T.locator)){r.add(T.locator);let O=EW(e,[...t,T],r,I,a);O.isGraphChanged&&(S=!0),O.anotherRoundNeeded&&(C=!0),r.delete(T.locator)}return{anotherRoundNeeded:C,isGraphChanged:S}},Zpt=e=>{for(let[t,r]of e.dependencies)if(!e.peerNames.has(t)&&r.ident!==e.ident)return!0;return!1},$pt=(e,t,r,s,a,n,c,f,{outputReason:p,fastLookupPossible:h})=>{let E,C=null,S=new Set;p&&(E=`${Array.from(t).map(O=>Bo(O)).join("\u2192")}`);let x=r[r.length-1],T=!(s.ident===x.ident);if(p&&!T&&(C="- self-reference"),T&&(T=s.dependencyKind!==1,p&&!T&&(C="- workspace")),T&&s.dependencyKind===2&&(T=!Zpt(s),p&&!T&&(C="- external soft link with unhoisted dependencies")),T&&(T=!e.peerNames.has(s.name),p&&!T&&(C=`- cannot shadow peer: ${Bo(e.originalDependencies.get(s.name).locator)} at ${E}`)),T){let O=!1,U=a.get(s.name);if(O=!U||U.ident===s.ident,p&&!O&&(C=`- filled by: ${Bo(U.locator)} at ${E}`),O)for(let V=r.length-1;V>=1;V--){let ie=r[V].dependencies.get(s.name);if(ie&&ie.ident!==s.ident){O=!1;let ue=f.get(x);ue||(ue=new Set,f.set(x,ue)),ue.add(s.name),p&&(C=`- filled by ${Bo(ie.locator)} at ${r.slice(0,V).map(ae=>Bo(ae.locator)).join("\u2192")}`);break}}T=O}if(T&&(T=n.get(s.name)===s.ident,p&&!T&&(C=`- filled by: ${Bo(c.get(s.name)[0])} at ${E}`)),T){let O=!0,U=new Set(s.peerNames);for(let V=r.length-1;V>=1;V--){let te=r[V];for(let ie of U){if(te.peerNames.has(ie)&&te.originalDependencies.has(ie))continue;let ue=te.dependencies.get(ie);ue&&e.dependencies.get(ie)!==ue&&(V===r.length-1?S.add(ue):(S=null,O=!1,p&&(C=`- peer dependency ${Bo(ue.locator)} from parent ${Bo(te.locator)} was not hoisted to ${E}`))),U.delete(ie)}if(!O)break}T=O}if(T&&!h)for(let O of s.hoistedDependencies.values()){let U=a.get(O.name)||e.dependencies.get(O.name);if(!U||O.ident!==U.ident){T=!1,p&&(C=`- previously hoisted dependency mismatch, needed: ${Bo(O.locator)}, available: ${Bo(U?.locator)}`);break}}return S!==null&&S.size>0?{isHoistable:2,dependsOn:S,reason:C}:{isHoistable:T?0:1,reason:C}},_F=e=>`${e.name}@${e.locator}`,eht=(e,t,r,s,a,n,c,f,p)=>{let h=t[t.length-1],E=new Set,C=!1,S=!1,x=(U,V,te,ie,ue)=>{if(E.has(ie))return;let ae=[...V,_F(ie)],ge=[...te,_F(ie)],Ae=new Map,Ce=new Map;for(let me of mW(ie)){let ce=$pt(h,r,[h,...U,ie],me,s,a,n,f,{outputReason:p.debugLevel>=2,fastLookupPossible:p.fastLookupPossible});if(Ce.set(me,ce),ce.isHoistable===2)for(let Z of ce.dependsOn){let De=Ae.get(Z.name)||new Set;De.add(me.name),Ae.set(Z.name,De)}}let Ee=new Set,d=(me,ce,Z)=>{if(!Ee.has(me)){Ee.add(me),Ce.set(me,{isHoistable:1,reason:Z});for(let De of Ae.get(me.name)||[])d(ie.dependencies.get(De),ce,p.debugLevel>=2?`- peer dependency ${Bo(me.locator)} from parent ${Bo(ie.locator)} was not hoisted`:"")}};for(let[me,ce]of Ce)ce.isHoistable===1&&d(me,ce,ce.reason);let Se=!1;for(let me of Ce.keys())if(!Ee.has(me)){S=!0;let ce=c.get(ie);ce&&ce.has(me.name)&&(C=!0),Se=!0,ie.dependencies.delete(me.name),ie.hoistedDependencies.set(me.name,me),ie.reasons.delete(me.name);let Z=h.dependencies.get(me.name);if(p.debugLevel>=2){let De=Array.from(V).concat([ie.locator]).map(st=>Bo(st)).join("\u2192"),Qe=h.hoistedFrom.get(me.name);Qe||(Qe=[],h.hoistedFrom.set(me.name,Qe)),Qe.push(De),ie.hoistedTo.set(me.name,Array.from(t).map(st=>Bo(st.locator)).join("\u2192"))}if(!Z)h.ident!==me.ident&&(h.dependencies.set(me.name,me),ue.add(me));else for(let De of me.references)Z.references.add(De)}if(ie.dependencyKind===2&&Se&&(C=!0),p.check){let me=Rwe(e);if(me)throw new Error(`${me}, after hoisting dependencies of ${[h,...U,ie].map(ce=>Bo(ce.locator)).join("\u2192")}: +${PD(e)}`)}let Be=mW(ie);for(let me of Be)if(Ee.has(me)){let ce=Ce.get(me);if((a.get(me.name)===me.ident||!ie.reasons.has(me.name))&&ce.isHoistable!==0&&ie.reasons.set(me.name,ce.reason),!me.isHoistBorder&&ge.indexOf(_F(me))<0){E.add(ie);let De=kwe(ie,me);x([...U,ie],ae,ge,De,T),E.delete(ie)}}},I,T=new Set(mW(h)),O=Array.from(t).map(U=>_F(U));do{I=T,T=new Set;for(let U of I){if(U.locator===h.locator||U.isHoistBorder)continue;let V=kwe(h,U);x([],Array.from(r),O,V,T)}}while(T.size>0);return{anotherRoundNeeded:C,isGraphChanged:S}},Rwe=e=>{let t=[],r=new Set,s=new Set,a=(n,c,f)=>{if(r.has(n)||(r.add(n),s.has(n)))return;let p=new Map(c);for(let h of n.dependencies.values())n.peerNames.has(h.name)||p.set(h.name,h);for(let h of n.originalDependencies.values()){let E=p.get(h.name),C=()=>`${Array.from(s).concat([n]).map(S=>Bo(S.locator)).join("\u2192")}`;if(n.peerNames.has(h.name)){let S=c.get(h.name);(S!==E||!S||S.ident!==h.ident)&&t.push(`${C()} - broken peer promise: expected ${h.ident} but found ${S&&S.ident}`)}else{let S=f.hoistedFrom.get(n.name),x=n.hoistedTo.get(h.name),I=`${S?` hoisted from ${S.join(", ")}`:""}`,T=`${x?` hoisted to ${x}`:""}`,O=`${C()}${I}`;E?E.ident!==h.ident&&t.push(`${O} - broken require promise for ${h.name}${T}: expected ${h.ident}, but found: ${E.ident}`):t.push(`${O} - broken require promise: no required dependency ${h.name}${T} found`)}}s.add(n);for(let h of n.dependencies.values())n.peerNames.has(h.name)||a(h,p,n);s.delete(n)};return a(e,e.dependencies,e),t.join(` +`)},tht=(e,t)=>{let{identName:r,name:s,reference:a,peerNames:n}=e,c={name:s,references:new Set([a]),locator:yW(r,a),ident:xwe(r,a),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(n),reasons:new Map,decoupled:!0,isHoistBorder:!0,hoistPriority:0,dependencyKind:1,hoistedFrom:new Map,hoistedTo:new Map},f=new Map([[e,c]]),p=(h,E)=>{let C=f.get(h),S=!!C;if(!C){let{name:x,identName:I,reference:T,peerNames:O,hoistPriority:U,dependencyKind:V}=h,te=t.hoistingLimits.get(E.locator);C={name:x,references:new Set([T]),locator:yW(I,T),ident:xwe(I,T),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(O),reasons:new Map,decoupled:!0,isHoistBorder:te?te.has(x):!1,hoistPriority:U||0,dependencyKind:V||0,hoistedFrom:new Map,hoistedTo:new Map},f.set(h,C)}if(E.dependencies.set(h.name,C),E.originalDependencies.set(h.name,C),S){let x=new Set,I=T=>{if(!x.has(T)){x.add(T),T.decoupled=!1;for(let O of T.dependencies.values())T.peerNames.has(O.name)||I(O)}};I(C)}else for(let x of h.dependencies)p(x,C)};for(let h of e.dependencies)p(h,c);return c},IW=e=>e.substring(0,e.indexOf("@",1)),rht=e=>{let t={name:e.name,identName:IW(e.locator),references:new Set(e.references),dependencies:new Set},r=new Set([e]),s=(a,n,c)=>{let f=r.has(a),p;if(n===a)p=c;else{let{name:h,references:E,locator:C}=a;p={name:h,identName:IW(C),references:E,dependencies:new Set}}if(c.dependencies.add(p),!f){r.add(a);for(let h of a.dependencies.values())a.peerNames.has(h.name)||s(h,a,p);r.delete(a)}};for(let a of e.dependencies.values())s(a,e,t);return t},nht=e=>{let t=new Map,r=new Set([e]),s=c=>`${c.name}@${c.ident}`,a=c=>{let f=s(c),p=t.get(f);return p||(p={dependents:new Set,peerDependents:new Set,hoistPriority:0},t.set(f,p)),p},n=(c,f)=>{let p=!!r.has(f);if(a(f).dependents.add(c.ident),!p){r.add(f);for(let E of f.dependencies.values()){let C=a(E);C.hoistPriority=Math.max(C.hoistPriority,E.hoistPriority),f.peerNames.has(E.name)?C.peerDependents.add(f.ident):n(f,E)}}};for(let c of e.dependencies.values())e.peerNames.has(c.name)||n(e,c);return t},Bo=e=>{if(!e)return"none";let t=e.indexOf("@",1),r=e.substring(0,t);r.endsWith("$wsroot$")&&(r=`wh:${r.replace("$wsroot$","")}`);let s=e.substring(t+1);if(s==="workspace:.")return".";if(s){let a=(s.indexOf("#")>0?s.split("#")[1]:s).replace("npm:","");return s.startsWith("virtual")&&(r=`v:${r}`),a.startsWith("workspace")&&(r=`w:${r}`,a=""),`${r}${a?`@${a}`:""}`}else return`${r}`};var PD=e=>{let t=0,r=(a,n,c="")=>{if(t>5e4||n.has(a))return"";t++;let f=Array.from(a.dependencies.values()).sort((h,E)=>h.name===E.name?0:h.name>E.name?1:-1),p="";n.add(a);for(let h=0;h":"")+(S!==E.name?`a:${E.name}:`:"")+Bo(E.locator)+(C?` ${C}`:"")} +`,p+=r(E,n,`${c}${h5e4?` +Tree is too large, part of the tree has been dunped +`:"")};var xD=(s=>(s.WORKSPACES="workspaces",s.DEPENDENCIES="dependencies",s.NONE="none",s))(xD||{}),Twe="node_modules",ed="$wsroot$";var kD=(e,t)=>{let{packageTree:r,hoistingLimits:s,errors:a,preserveSymlinksRequired:n}=sht(e,t),c=null;if(a.length===0){let f=Qwe(r,{hoistingLimits:s});c=aht(e,f,t)}return{tree:c,errors:a,preserveSymlinksRequired:n}},dA=e=>`${e.name}@${e.reference}`,wW=e=>{let t=new Map;for(let[r,s]of e.entries())if(!s.dirList){let a=t.get(s.locator);a||(a={target:s.target,linkType:s.linkType,locations:[],aliases:s.aliases},t.set(s.locator,a)),a.locations.push(r)}for(let r of t.values())r.locations=r.locations.sort((s,a)=>{let n=s.split(J.delimiter).length,c=a.split(J.delimiter).length;return a===s?0:n!==c?c-n:a>s?1:-1});return t},Fwe=(e,t)=>{let r=j.isVirtualLocator(e)?j.devirtualizeLocator(e):e,s=j.isVirtualLocator(t)?j.devirtualizeLocator(t):t;return j.areLocatorsEqual(r,s)},CW=(e,t,r,s)=>{if(e.linkType!=="SOFT")return!1;let a=fe.toPortablePath(r.resolveVirtual&&t.reference&&t.reference.startsWith("virtual:")?r.resolveVirtual(e.packageLocation):e.packageLocation);return J.contains(s,a)===null},iht=e=>{let t=e.getPackageInformation(e.topLevel);if(t===null)throw new Error("Assertion failed: Expected the top-level package to have been registered");if(e.findPackageLocator(t.packageLocation)===null)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");let s=fe.toPortablePath(t.packageLocation.slice(0,-1)),a=new Map,n={children:new Map},c=e.getDependencyTreeRoots(),f=new Map,p=new Set,h=(S,x)=>{let I=dA(S);if(p.has(I))return;p.add(I);let T=e.getPackageInformation(S);if(T){let O=x?dA(x):"";if(dA(S)!==O&&T.linkType==="SOFT"&&!S.reference.startsWith("link:")&&!CW(T,S,e,s)){let U=Nwe(T,S,e);(!f.get(U)||S.reference.startsWith("workspace:"))&&f.set(U,S)}for(let[U,V]of T.packageDependencies)V!==null&&(T.packagePeers.has(U)||h(e.getLocator(U,V),S))}};for(let S of c)h(S,null);let E=s.split(J.sep);for(let S of f.values()){let x=e.getPackageInformation(S),T=fe.toPortablePath(x.packageLocation.slice(0,-1)).split(J.sep).slice(E.length),O=n;for(let U of T){let V=O.children.get(U);V||(V={children:new Map},O.children.set(U,V)),O=V}O.workspaceLocator=S}let C=(S,x)=>{if(S.workspaceLocator){let I=dA(x),T=a.get(I);T||(T=new Set,a.set(I,T)),T.add(S.workspaceLocator)}for(let I of S.children.values())C(I,S.workspaceLocator||x)};for(let S of n.children.values())C(S,n.workspaceLocator);return a},sht=(e,t)=>{let r=[],s=!1,a=new Map,n=iht(e),c=e.getPackageInformation(e.topLevel);if(c===null)throw new Error("Assertion failed: Expected the top-level package to have been registered");let f=e.findPackageLocator(c.packageLocation);if(f===null)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");let p=fe.toPortablePath(c.packageLocation.slice(0,-1)),h={name:f.name,identName:f.name,reference:f.reference,peerNames:c.packagePeers,dependencies:new Set,dependencyKind:1},E=new Map,C=(x,I)=>`${dA(I)}:${x}`,S=(x,I,T,O,U,V,te,ie)=>{let ue=C(x,T),ae=E.get(ue),ge=!!ae;!ge&&T.name===f.name&&T.reference===f.reference&&(ae=h,E.set(ue,h));let Ae=CW(I,T,e,p);if(!ae){let me=0;Ae?me=2:I.linkType==="SOFT"&&T.name.endsWith(ed)&&(me=1),ae={name:x,identName:T.name,reference:T.reference,dependencies:new Set,peerNames:me===1?new Set:I.packagePeers,dependencyKind:me},E.set(ue,ae)}let Ce;if(Ae?Ce=2:U.linkType==="SOFT"?Ce=1:Ce=0,ae.hoistPriority=Math.max(ae.hoistPriority||0,Ce),ie&&!Ae){let me=dA({name:O.identName,reference:O.reference}),ce=a.get(me)||new Set;a.set(me,ce),ce.add(ae.name)}let Ee=new Map(I.packageDependencies);if(t.project){let me=t.project.workspacesByCwd.get(fe.toPortablePath(I.packageLocation.slice(0,-1)));if(me){let ce=new Set([...Array.from(me.manifest.peerDependencies.values(),Z=>j.stringifyIdent(Z)),...Array.from(me.manifest.peerDependenciesMeta.keys())]);for(let Z of ce)Ee.has(Z)||(Ee.set(Z,V.get(Z)||null),ae.peerNames.add(Z))}}let d=dA({name:T.name.replace(ed,""),reference:T.reference}),Se=n.get(d);if(Se)for(let me of Se)Ee.set(`${me.name}${ed}`,me.reference);(I!==U||I.linkType!=="SOFT"||!Ae&&(!t.selfReferencesByCwd||t.selfReferencesByCwd.get(te)))&&O.dependencies.add(ae);let Be=T!==f&&I.linkType==="SOFT"&&!T.name.endsWith(ed)&&!Ae;if(!ge&&!Be){let me=new Map;for(let[ce,Z]of Ee)if(Z!==null){let De=e.getLocator(ce,Z),Qe=e.getLocator(ce.replace(ed,""),Z),st=e.getPackageInformation(Qe);if(st===null)throw new Error("Assertion failed: Expected the package to have been registered");let _=CW(st,De,e,p);if(t.validateExternalSoftLinks&&t.project&&_){st.packageDependencies.size>0&&(s=!0);for(let[je,Re]of st.packageDependencies)if(Re!==null){let ct=j.parseLocator(Array.isArray(Re)?`${Re[0]}@${Re[1]}`:`${je}@${Re}`);if(dA(ct)!==dA(De)){let Me=Ee.get(je);if(Me){let P=j.parseLocator(Array.isArray(Me)?`${Me[0]}@${Me[1]}`:`${je}@${Me}`);Fwe(P,ct)||r.push({messageName:71,text:`Cannot link ${j.prettyIdent(t.project.configuration,j.parseIdent(De.name))} into ${j.prettyLocator(t.project.configuration,j.parseLocator(`${T.name}@${T.reference}`))} dependency ${j.prettyLocator(t.project.configuration,ct)} conflicts with parent dependency ${j.prettyLocator(t.project.configuration,P)}`})}else{let P=me.get(je);if(P){let w=P.target,b=j.parseLocator(Array.isArray(w)?`${w[0]}@${w[1]}`:`${je}@${w}`);Fwe(b,ct)||r.push({messageName:71,text:`Cannot link ${j.prettyIdent(t.project.configuration,j.parseIdent(De.name))} into ${j.prettyLocator(t.project.configuration,j.parseLocator(`${T.name}@${T.reference}`))} dependency ${j.prettyLocator(t.project.configuration,ct)} conflicts with dependency ${j.prettyLocator(t.project.configuration,b)} from sibling portal ${j.prettyIdent(t.project.configuration,j.parseIdent(P.portal.name))}`})}else me.set(je,{target:ct.reference,portal:De})}}}}let tt=t.hoistingLimitsByCwd?.get(te),Ne=_?te:J.relative(p,fe.toPortablePath(st.packageLocation))||vt.dot,ke=t.hoistingLimitsByCwd?.get(Ne);S(ce,st,De,ae,I,Ee,Ne,tt==="dependencies"||ke==="dependencies"||ke==="workspaces")}}};return S(f.name,c,f,h,c,c.packageDependencies,vt.dot,!1),{packageTree:h,hoistingLimits:a,errors:r,preserveSymlinksRequired:s}};function Nwe(e,t,r){let s=r.resolveVirtual&&t.reference&&t.reference.startsWith("virtual:")?r.resolveVirtual(e.packageLocation):e.packageLocation;return fe.toPortablePath(s||e.packageLocation)}function oht(e,t,r){let s=t.getLocator(e.name.replace(ed,""),e.reference),a=t.getPackageInformation(s);if(a===null)throw new Error("Assertion failed: Expected the package to be registered");return r.pnpifyFs?{linkType:"SOFT",target:fe.toPortablePath(a.packageLocation)}:{linkType:a.linkType,target:Nwe(a,e,t)}}var aht=(e,t,r)=>{let s=new Map,a=(E,C,S)=>{let{linkType:x,target:I}=oht(E,e,r);return{locator:dA(E),nodePath:C,target:I,linkType:x,aliases:S}},n=E=>{let[C,S]=E.split("/");return S?{scope:C,name:S}:{scope:null,name:C}},c=new Set,f=(E,C,S)=>{if(c.has(E))return;c.add(E);let x=Array.from(E.references).sort().join("#");for(let I of E.dependencies){let T=Array.from(I.references).sort().join("#");if(I.identName===E.identName.replace(ed,"")&&T===x)continue;let O=Array.from(I.references).sort(),U={name:I.identName,reference:O[0]},{name:V,scope:te}=n(I.name),ie=te?[te,V]:[V],ue=J.join(C,Twe),ae=J.join(ue,...ie),ge=`${S}/${U.name}`,Ae=a(U,S,O.slice(1)),Ce=!1;if(Ae.linkType==="SOFT"&&r.project){let Ee=r.project.workspacesByCwd.get(Ae.target.slice(0,-1));Ce=!!(Ee&&!Ee.manifest.name)}if(!I.name.endsWith(ed)&&!Ce){let Ee=s.get(ae);if(Ee){if(Ee.dirList)throw new Error(`Assertion failed: ${ae} cannot merge dir node with leaf node`);{let Be=j.parseLocator(Ee.locator),me=j.parseLocator(Ae.locator);if(Ee.linkType!==Ae.linkType)throw new Error(`Assertion failed: ${ae} cannot merge nodes with different link types ${Ee.nodePath}/${j.stringifyLocator(Be)} and ${S}/${j.stringifyLocator(me)}`);if(Be.identHash!==me.identHash)throw new Error(`Assertion failed: ${ae} cannot merge nodes with different idents ${Ee.nodePath}/${j.stringifyLocator(Be)} and ${S}/s${j.stringifyLocator(me)}`);Ae.aliases=[...Ae.aliases,...Ee.aliases,j.parseLocator(Ee.locator).reference]}}s.set(ae,Ae);let d=ae.split("/"),Se=d.indexOf(Twe);for(let Be=d.length-1;Se>=0&&Be>Se;Be--){let me=fe.toPortablePath(d.slice(0,Be).join(J.sep)),ce=d[Be],Z=s.get(me);if(!Z)s.set(me,{dirList:new Set([ce])});else if(Z.dirList){if(Z.dirList.has(ce))break;Z.dirList.add(ce)}}}f(I,Ae.linkType==="SOFT"?Ae.target:ae,ge)}},p=a({name:t.name,reference:Array.from(t.references)[0]},"",[]),h=p.target;return s.set(h,p),f(t,h,""),s};qe();qe();Dt();Dt();nA();vc();var jW={};Vt(jW,{PnpInstaller:()=>Ym,PnpLinker:()=>nd,UnplugCommand:()=>mw,default:()=>Lht,getPnpPath:()=>id,jsInstallUtils:()=>mA,pnpUtils:()=>HD,quotePathIfNeeded:()=>y1e});Dt();var m1e=Ie("url");qe();qe();Dt();Dt();var Owe={DEFAULT:{collapsed:!1,next:{"*":"DEFAULT"}},TOP_LEVEL:{collapsed:!1,next:{fallbackExclusionList:"FALLBACK_EXCLUSION_LIST",packageRegistryData:"PACKAGE_REGISTRY_DATA","*":"DEFAULT"}},FALLBACK_EXCLUSION_LIST:{collapsed:!1,next:{"*":"FALLBACK_EXCLUSION_ENTRIES"}},FALLBACK_EXCLUSION_ENTRIES:{collapsed:!0,next:{"*":"FALLBACK_EXCLUSION_DATA"}},FALLBACK_EXCLUSION_DATA:{collapsed:!0,next:{"*":"DEFAULT"}},PACKAGE_REGISTRY_DATA:{collapsed:!1,next:{"*":"PACKAGE_REGISTRY_ENTRIES"}},PACKAGE_REGISTRY_ENTRIES:{collapsed:!0,next:{"*":"PACKAGE_STORE_DATA"}},PACKAGE_STORE_DATA:{collapsed:!1,next:{"*":"PACKAGE_STORE_ENTRIES"}},PACKAGE_STORE_ENTRIES:{collapsed:!0,next:{"*":"PACKAGE_INFORMATION_DATA"}},PACKAGE_INFORMATION_DATA:{collapsed:!1,next:{packageDependencies:"PACKAGE_DEPENDENCIES","*":"DEFAULT"}},PACKAGE_DEPENDENCIES:{collapsed:!1,next:{"*":"PACKAGE_DEPENDENCY"}},PACKAGE_DEPENDENCY:{collapsed:!0,next:{"*":"DEFAULT"}}};function lht(e,t,r){let s="";s+="[";for(let a=0,n=e.length;a"u"||(f!==0&&(a+=", "),a+=JSON.stringify(p),a+=": ",a+=HF(p,h,t,r).replace(/^ +/g,""),f+=1)}return a+="}",a}function fht(e,t,r){let s=Object.keys(e),a=`${r} `,n="";n+=r,n+=`{ +`;let c=0;for(let f=0,p=s.length;f"u"||(c!==0&&(n+=",",n+=` +`),n+=a,n+=JSON.stringify(h),n+=": ",n+=HF(h,E,t,a).replace(/^ +/g,""),c+=1)}return c!==0&&(n+=` +`),n+=r,n+="}",n}function HF(e,t,r,s){let{next:a}=Owe[r],n=a[e]||a["*"];return Lwe(t,n,s)}function Lwe(e,t,r){let{collapsed:s}=Owe[t];return Array.isArray(e)?s?lht(e,t,r):cht(e,t,r):typeof e=="object"&&e!==null?s?uht(e,t,r):fht(e,t,r):JSON.stringify(e)}function Mwe(e){return Lwe(e,"TOP_LEVEL","")}function QD(e,t){let r=Array.from(e);Array.isArray(t)||(t=[t]);let s=[];for(let n of t)s.push(r.map(c=>n(c)));let a=r.map((n,c)=>c);return a.sort((n,c)=>{for(let f of s){let p=f[n]f[c]?1:0;if(p!==0)return p}return 0}),a.map(n=>r[n])}function Aht(e){let t=new Map,r=QD(e.fallbackExclusionList||[],[({name:s,reference:a})=>s,({name:s,reference:a})=>a]);for(let{name:s,reference:a}of r){let n=t.get(s);typeof n>"u"&&t.set(s,n=new Set),n.add(a)}return Array.from(t).map(([s,a])=>[s,Array.from(a)])}function pht(e){return QD(e.fallbackPool||[],([t])=>t)}function hht(e){let t=[],r=e.dependencyTreeRoots.find(s=>e.packageRegistry.get(s.name)?.get(s.reference)?.packageLocation==="./");for(let[s,a]of QD(e.packageRegistry,([n])=>n===null?"0":`1${n}`)){if(s===null)continue;let n=[];t.push([s,n]);for(let[c,{packageLocation:f,packageDependencies:p,packagePeers:h,linkType:E,discardFromLookup:C}]of QD(a,([S])=>S===null?"0":`1${S}`)){if(c===null)continue;let S=[];s!==null&&c!==null&&!p.has(s)&&S.push([s,c]);for(let[U,V]of p)S.push([U,V]);let x=QD(S,([U])=>U),I=h&&h.size>0?Array.from(h):void 0,O={packageLocation:f,packageDependencies:x,packagePeers:I,linkType:E,discardFromLookup:C||void 0};n.push([c,O]),r&&s===r.name&&c===r.reference&&t.unshift([null,[[null,O]]])}}return t}function RD(e){return{__info:["This file is automatically generated. Do not touch it, or risk","your modifications being lost."],dependencyTreeRoots:e.dependencyTreeRoots,enableTopLevelFallback:e.enableTopLevelFallback||!1,ignorePatternData:e.ignorePattern||null,pnpZipBackend:e.pnpZipBackend,fallbackExclusionList:Aht(e),fallbackPool:pht(e),packageRegistryData:hht(e)}}var Hwe=et(_we());function jwe(e,t){return[e?`${e} +`:"",`/* eslint-disable */ +`,`// @ts-nocheck +`,`"use strict"; +`,` +`,t,` +`,(0,Hwe.default)()].join("")}function dht(e){return JSON.stringify(e,null,2)}function ght(e){return`'${e.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\n/g,`\\ +`)}'`}function mht(e){return[`const RAW_RUNTIME_STATE = +`,`${ght(Mwe(e))}; + +`,`function $$SETUP_STATE(hydrateRuntimeState, basePath) { +`,` return hydrateRuntimeState(JSON.parse(RAW_RUNTIME_STATE), {basePath: basePath || __dirname}); +`,`} +`].join("")}function yht(){return[`function $$SETUP_STATE(hydrateRuntimeState, basePath) { +`,` const fs = require('fs'); +`,` const path = require('path'); +`,` const pnpDataFilepath = path.resolve(__dirname, ${JSON.stringify(Er.pnpData)}); +`,` return hydrateRuntimeState(JSON.parse(fs.readFileSync(pnpDataFilepath, 'utf8')), {basePath: basePath || __dirname}); +`,`} +`].join("")}function Gwe(e){let t=RD(e),r=mht(t);return jwe(e.shebang,r)}function qwe(e){let t=RD(e),r=yht(),s=jwe(e.shebang,r);return{dataFile:dht(t),loaderFile:s}}Dt();function vW(e,{basePath:t}){let r=fe.toPortablePath(t),s=J.resolve(r),a=e.ignorePatternData!==null?new RegExp(e.ignorePatternData):null,n=new Map,c=new Map(e.packageRegistryData.map(([C,S])=>[C,new Map(S.map(([x,I])=>{if(C===null!=(x===null))throw new Error("Assertion failed: The name and reference should be null, or neither should");let T=I.discardFromLookup??!1,O={name:C,reference:x},U=n.get(I.packageLocation);U?(U.discardFromLookup=U.discardFromLookup&&T,T||(U.locator=O)):n.set(I.packageLocation,{locator:O,discardFromLookup:T});let V=null;return[x,{packageDependencies:new Map(I.packageDependencies),packagePeers:new Set(I.packagePeers),linkType:I.linkType,discardFromLookup:T,get packageLocation(){return V||(V=J.join(s,I.packageLocation))}}]}))])),f=new Map(e.fallbackExclusionList.map(([C,S])=>[C,new Set(S)])),p=new Map(e.fallbackPool),h=e.dependencyTreeRoots,E=e.enableTopLevelFallback;return{basePath:r,dependencyTreeRoots:h,enableTopLevelFallback:E,fallbackExclusionList:f,pnpZipBackend:e.pnpZipBackend,fallbackPool:p,ignorePattern:a,packageLocatorsByLocations:n,packageRegistry:c}}Dt();Dt();var ih=Ie("module"),Wm=Ie("url"),NW=Ie("util");var oa=Ie("url");var Jwe=et(Ie("assert"));var SW=Array.isArray,TD=JSON.stringify,FD=Object.getOwnPropertyNames,qm=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),DW=(e,t)=>RegExp.prototype.exec.call(e,t),bW=(e,...t)=>RegExp.prototype[Symbol.replace].apply(e,t),td=(e,...t)=>String.prototype.endsWith.apply(e,t),PW=(e,...t)=>String.prototype.includes.apply(e,t),xW=(e,...t)=>String.prototype.lastIndexOf.apply(e,t),ND=(e,...t)=>String.prototype.indexOf.apply(e,t),Wwe=(e,...t)=>String.prototype.replace.apply(e,t),rd=(e,...t)=>String.prototype.slice.apply(e,t),gA=(e,...t)=>String.prototype.startsWith.apply(e,t),Ywe=Map,Vwe=JSON.parse;function OD(e,t,r){return class extends r{constructor(...s){super(t(...s)),this.code=e,this.name=`${r.name} [${e}]`}}}var Kwe=OD("ERR_PACKAGE_IMPORT_NOT_DEFINED",(e,t,r)=>`Package import specifier "${e}" is not defined${t?` in package ${t}package.json`:""} imported from ${r}`,TypeError),kW=OD("ERR_INVALID_MODULE_SPECIFIER",(e,t,r=void 0)=>`Invalid module "${e}" ${t}${r?` imported from ${r}`:""}`,TypeError),zwe=OD("ERR_INVALID_PACKAGE_TARGET",(e,t,r,s=!1,a=void 0)=>{let n=typeof r=="string"&&!s&&r.length&&!gA(r,"./");return t==="."?((0,Jwe.default)(s===!1),`Invalid "exports" main target ${TD(r)} defined in the package config ${e}package.json${a?` imported from ${a}`:""}${n?'; targets must start with "./"':""}`):`Invalid "${s?"imports":"exports"}" target ${TD(r)} defined for '${t}' in the package config ${e}package.json${a?` imported from ${a}`:""}${n?'; targets must start with "./"':""}`},Error),LD=OD("ERR_INVALID_PACKAGE_CONFIG",(e,t,r)=>`Invalid package config ${e}${t?` while importing ${t}`:""}${r?`. ${r}`:""}`,Error),Xwe=OD("ERR_PACKAGE_PATH_NOT_EXPORTED",(e,t,r=void 0)=>t==="."?`No "exports" main defined in ${e}package.json${r?` imported from ${r}`:""}`:`Package subpath '${t}' is not defined by "exports" in ${e}package.json${r?` imported from ${r}`:""}`,Error);var GF=Ie("url");function Zwe(e,t){let r=Object.create(null);for(let s=0;st):e+t}MD(r,e,s,c,a)}DW(e1e,rd(e,2))!==null&&MD(r,e,s,c,a);let p=new URL(e,s),h=p.pathname,E=new URL(".",s).pathname;if(gA(h,E)||MD(r,e,s,c,a),t==="")return p;if(DW(e1e,t)!==null){let C=n?Wwe(r,"*",()=>t):r+t;Cht(C,s,c,a)}return n?new URL(bW(t1e,p.href,()=>t)):new URL(t,p)}function Bht(e){let t=+e;return`${t}`!==e?!1:t>=0&&t<4294967295}function gw(e,t,r,s,a,n,c,f){if(typeof t=="string")return wht(t,r,s,e,a,n,c,f);if(SW(t)){if(t.length===0)return null;let p;for(let h=0;hn?-1:n>a||r===-1?1:s===-1||e.length>t.length?-1:t.length>e.length?1:0}function vht(e,t,r){if(typeof e=="string"||SW(e))return!0;if(typeof e!="object"||e===null)return!1;let s=FD(e),a=!1,n=0;for(let c=0;c=h.length&&td(t,C)&&n1e(n,h)===1&&xW(h,"*")===E&&(n=h,c=rd(t,E,t.length-C.length))}}if(n){let p=r[n],h=gw(e,p,c,n,s,!0,!1,a);return h==null&&QW(t,e,s),h}QW(t,e,s)}function s1e({name:e,base:t,conditions:r,readFileSyncFn:s}){if(e==="#"||gA(e,"#/")||td(e,"/")){let c="is not a valid internal imports specifier name";throw new kW(e,c,(0,oa.fileURLToPath)(t))}let a,n=$we(t,s);if(n.exists){a=(0,oa.pathToFileURL)(n.pjsonPath);let c=n.imports;if(c)if(qm(c,e)&&!PW(e,"*")){let f=gw(a,c[e],"",e,t,!1,!0,r);if(f!=null)return f}else{let f="",p,h=FD(c);for(let E=0;E=C.length&&td(e,x)&&n1e(f,C)===1&&xW(C,"*")===S&&(f=C,p=rd(e,S,e.length-x.length))}}if(f){let E=c[f],C=gw(a,E,p,f,t,!0,!0,r);if(C!=null)return C}}}Iht(e,a,t)}Dt();var Dht=new Set(["BUILTIN_NODE_RESOLUTION_FAILED","MISSING_DEPENDENCY","MISSING_PEER_DEPENDENCY","QUALIFIED_PATH_RESOLUTION_FAILED","UNDECLARED_DEPENDENCY"]);function ys(e,t,r={},s){s??=Dht.has(e)?"MODULE_NOT_FOUND":e;let a={configurable:!0,writable:!0,enumerable:!1};return Object.defineProperties(new Error(t),{code:{...a,value:s},pnpCode:{...a,value:e},data:{...a,value:r}})}function uf(e){return fe.normalize(fe.fromPortablePath(e))}var c1e=et(a1e());function u1e(e){return bht(),TW[e]}var TW;function bht(){TW||(TW={"--conditions":[],...l1e(Pht()),...l1e(process.execArgv)})}function l1e(e){return(0,c1e.default)({"--conditions":[String],"-C":"--conditions"},{argv:e,permissive:!0})}function Pht(){let e=[],t=xht(process.env.NODE_OPTIONS||"",e);return e.length,t}function xht(e,t){let r=[],s=!1,a=!0;for(let n=0;nparseInt(e,10)),f1e=vo>19||vo===19&&ff>=2||vo===18&&ff>=13,WKt=vo===20&&ff<6||vo===19&&ff>=3,YKt=vo>19||vo===19&&ff>=6,VKt=vo>=21||vo===20&&ff>=10||vo===18&&ff>=19,JKt=vo>=21||vo===20&&ff>=10||vo===18&&ff>=20,KKt=vo>=22,zKt=vo>25||vo===25&&ff>=7||vo===24&&ff>=15;function FW(e){if(process.env.WATCH_REPORT_DEPENDENCIES&&process.send){let t=e.map(r=>fe.fromPortablePath(mo.resolveVirtual(r)));if(f1e)process.send({"watch:require":t});else for(let r of t)process.send({"watch:require":r})}}function OW(e,t){let r=Number(process.env.PNP_ALWAYS_WARN_ON_FALLBACK)>0,s=Number(process.env.PNP_DEBUG_LEVEL),a=/^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:node:)?(?:@[^/]+\/)?[^/]+)\/*(.*|)$/,n=/^(\/|\.{1,2}(\/|$))/,c=/\/$/,f=/^\.{0,2}\//,p={name:null,reference:null},h=[],E=new Set;if(e.enableTopLevelFallback===!0&&h.push(p),t.compatibilityMode!==!1)for(let Ne of["react-scripts","gatsby"]){let ke=e.packageRegistry.get(Ne);if(ke)for(let be of ke.keys()){if(be===null)throw new Error("Assertion failed: This reference shouldn't be null");h.push({name:Ne,reference:be})}}let{ignorePattern:C,packageRegistry:S,packageLocatorsByLocations:x}=e;function I(Ne,ke){return{fn:Ne,args:ke,error:null,result:null}}function T(Ne){let ke=process.stderr?.hasColors?.()??process.stdout.isTTY,be=(ct,Me)=>`\x1B[${ct}m${Me}\x1B[0m`,je=Ne.error;console.error(je?be("31;1",`\u2716 ${Ne.error?.message.replace(/\n.*/s,"")}`):be("33;1","\u203C Resolution")),Ne.args.length>0&&console.error();for(let ct of Ne.args)console.error(` ${be("37;1","In \u2190")} ${(0,NW.inspect)(ct,{colors:ke,compact:!0})}`);Ne.result&&(console.error(),console.error(` ${be("37;1","Out \u2192")} ${(0,NW.inspect)(Ne.result,{colors:ke,compact:!0})}`));let Re=new Error().stack.match(/(?<=^ +)at.*/gm)?.slice(2)??[];if(Re.length>0){console.error();for(let ct of Re)console.error(` ${be("38;5;244",ct)}`)}console.error()}function O(Ne,ke){if(t.allowDebug===!1)return ke;if(Number.isFinite(s)){if(s>=2)return(...be)=>{let je=I(Ne,be);try{return je.result=ke(...be)}catch(Re){throw je.error=Re}finally{T(je)}};if(s>=1)return(...be)=>{try{return ke(...be)}catch(je){let Re=I(Ne,be);throw Re.error=je,T(Re),je}}}return ke}function U(Ne){let ke=d(Ne);if(!ke)throw ys("INTERNAL","Couldn't find a matching entry in the dependency tree for the specified parent (this is probably an internal error)");return ke}function V(Ne){if(Ne.name===null)return!0;for(let ke of e.dependencyTreeRoots)if(ke.name===Ne.name&&ke.reference===Ne.reference)return!0;return!1}let te=new Set(["node","require",...u1e("--conditions")]);function ie(Ne,ke=te,be){let je=me(J.join(Ne,"internal.js"),{resolveIgnored:!0,includeDiscardFromLookup:!0});if(je===null)throw ys("INTERNAL",`The locator that owns the "${Ne}" path can't be found inside the dependency tree (this is probably an internal error)`);let{packageLocation:Re}=U(je),ct=J.join(Re,Er.manifest);if(!t.fakeFs.existsSync(ct))return null;let Me=JSON.parse(t.fakeFs.readFileSync(ct,"utf8"));if(Me.exports==null)return null;let P=J.contains(Re,Ne);if(P===null)throw ys("INTERNAL","unqualifiedPath doesn't contain the packageLocation (this is probably an internal error)");P!=="."&&!f.test(P)&&(P=`./${P}`);try{let w=i1e({packageJSONUrl:(0,Wm.pathToFileURL)(fe.fromPortablePath(ct)),packageSubpath:P,exports:Me.exports,base:be?(0,Wm.pathToFileURL)(fe.fromPortablePath(be)):null,conditions:ke});return fe.toPortablePath((0,Wm.fileURLToPath)(w))}catch(w){throw ys("EXPORTS_RESOLUTION_FAILED",w.message,{unqualifiedPath:uf(Ne),locator:je,pkgJson:Me,subpath:uf(P),conditions:ke},w.code)}}function ue(Ne,ke,{extensions:be}){let je;try{ke.push(Ne),je=t.fakeFs.statSync(Ne)}catch{}if(je&&!je.isDirectory())return t.fakeFs.realpathSync(Ne);if(je&&je.isDirectory()){let Re;try{Re=JSON.parse(t.fakeFs.readFileSync(J.join(Ne,Er.manifest),"utf8"))}catch{}let ct;if(Re&&Re.main&&(ct=J.resolve(Ne,Re.main)),ct&&ct!==Ne){let Me=ue(ct,ke,{extensions:be});if(Me!==null)return Me}}for(let Re=0,ct=be.length;Re{let P=JSON.stringify(Me.name);if(je.has(P))return;je.add(P);let w=Se(Me);for(let b of w)if(U(b).packagePeers.has(Ne))Re(b);else{let F=be.get(b.name);typeof F>"u"&&be.set(b.name,F=new Set),F.add(b.reference)}};Re(ke);let ct=[];for(let Me of[...be.keys()].sort())for(let P of[...be.get(Me)].sort())ct.push({name:Me,reference:P});return ct}function me(Ne,{resolveIgnored:ke=!1,includeDiscardFromLookup:be=!1}={}){if(Ae(Ne)&&!ke)return null;let je=J.relative(e.basePath,Ne);je.match(n)||(je=`./${je}`),je.endsWith("/")||(je=`${je}/`);do{let Re=x.get(je);if(typeof Re>"u"||Re.discardFromLookup&&!be){je=je.substring(0,je.lastIndexOf("/",je.length-2)+1);continue}return Re.locator}while(je!=="");return null}function ce(Ne){try{return t.fakeFs.readFileSync(fe.toPortablePath(Ne),"utf8")}catch(ke){if(ke.code==="ENOENT")return;throw ke}}function Z(Ne,ke,{considerBuiltins:be=!0}={}){if(Ne.startsWith("#"))throw new Error("resolveToUnqualified can not handle private import mappings");if(Ne==="pnpapi")return fe.toPortablePath(t.pnpapiResolution);if(be&&(0,ih.isBuiltin)(Ne))return null;let je=uf(Ne),Re=ke&&uf(ke);if(ke&&Ae(ke)&&(!J.isAbsolute(Ne)||me(Ne)===null)){let P=ge(Ne,ke);if(P===!1)throw ys("BUILTIN_NODE_RESOLUTION_FAILED",`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer was explicitely ignored by the regexp) + +Require request: "${je}" +Required by: ${Re} +`,{request:je,issuer:Re});return fe.toPortablePath(P)}let ct,Me=Ne.match(a);if(Me){if(!ke)throw ys("API_ERROR","The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:je,issuer:Re});let[,P,w]=Me,b=me(ke);if(!b){let Fe=ge(Ne,ke);if(Fe===!1)throw ys("BUILTIN_NODE_RESOLUTION_FAILED",`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer doesn't seem to be part of the Yarn-managed dependency tree). + +Require path: "${je}" +Required by: ${Re} +`,{request:je,issuer:Re});return fe.toPortablePath(Fe)}let F=U(b).packageDependencies.get(P),z=null;if(F==null&&b.name!==null){let Fe=e.fallbackExclusionList.get(b.name);if(!Fe||!Fe.has(b.reference)){for(let Ct=0,qt=h.length;CtV(ut))?X=ys("MISSING_PEER_DEPENDENCY",`${b.name} tried to access ${P} (a peer dependency) but it isn't provided by your application; this makes the require call ambiguous and unsound. + +Required package: ${P}${P!==je?` (via "${je}")`:""} +Required by: ${b.name}@${b.reference} (via ${Re}) +${Fe.map(ut=>`Ancestor breaking the chain: ${ut.name}@${ut.reference} +`).join("")} +`,{request:je,issuer:Re,issuerLocator:Object.assign({},b),dependencyName:P,brokenAncestors:Fe}):X=ys("MISSING_PEER_DEPENDENCY",`${b.name} tried to access ${P} (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound. + +Required package: ${P}${P!==je?` (via "${je}")`:""} +Required by: ${b.name}@${b.reference} (via ${Re}) + +${Fe.map(ut=>`Ancestor breaking the chain: ${ut.name}@${ut.reference} +`).join("")} +`,{request:je,issuer:Re,issuerLocator:Object.assign({},b),dependencyName:P,brokenAncestors:Fe})}else F===void 0&&(!be&&(0,ih.isBuiltin)(Ne)?V(b)?X=ys("UNDECLARED_DEPENDENCY",`Your application tried to access ${P}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${P} isn't otherwise declared in your dependencies, this makes the require call ambiguous and unsound. + +Required package: ${P}${P!==je?` (via "${je}")`:""} +Required by: ${Re} +`,{request:je,issuer:Re,dependencyName:P}):X=ys("UNDECLARED_DEPENDENCY",`${b.name} tried to access ${P}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${P} isn't otherwise declared in ${b.name}'s dependencies, this makes the require call ambiguous and unsound. + +Required package: ${P}${P!==je?` (via "${je}")`:""} +Required by: ${Re} +`,{request:je,issuer:Re,issuerLocator:Object.assign({},b),dependencyName:P}):V(b)?X=ys("UNDECLARED_DEPENDENCY",`Your application tried to access ${P}, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound. + +Required package: ${P}${P!==je?` (via "${je}")`:""} +Required by: ${Re} +`,{request:je,issuer:Re,dependencyName:P}):X=ys("UNDECLARED_DEPENDENCY",`${b.name} tried to access ${P}, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound. + +Required package: ${P}${P!==je?` (via "${je}")`:""} +Required by: ${b.name}@${b.reference} (via ${Re}) +`,{request:je,issuer:Re,issuerLocator:Object.assign({},b),dependencyName:P}));if(F==null){if(z===null||X===null)throw X||new Error("Assertion failed: Expected an error to have been set");F=z;let Fe=X.message.replace(/\n.*/g,"");X.message=Fe,!E.has(Fe)&&s!==0&&(E.add(Fe),process.emitWarning(X))}let $=Array.isArray(F)?{name:F[0],reference:F[1]}:{name:P,reference:F},se=U($);if(!se.packageLocation)throw ys("MISSING_DEPENDENCY",`A dependency seems valid but didn't get installed for some reason. This might be caused by a partial install, such as dev vs prod. + +Required package: ${$.name}@${$.reference}${$.name!==je?` (via "${je}")`:""} +Required by: ${b.name}@${b.reference} (via ${Re}) +`,{request:je,issuer:Re,dependencyLocator:Object.assign({},$)});let xe=se.packageLocation;w?ct=J.join(xe,w):ct=xe}else if(J.isAbsolute(Ne))ct=J.normalize(Ne);else{if(!ke)throw ys("API_ERROR","The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:je,issuer:Re});let P=J.resolve(ke);ke.match(c)?ct=J.normalize(J.join(P,Ne)):ct=J.normalize(J.join(J.dirname(P),Ne))}return J.normalize(ct)}function De(Ne,ke,be=te,je){if(n.test(Ne))return ke;let Re=ie(ke,be,je);return Re?J.normalize(Re):ke}function Qe(Ne,{extensions:ke=Object.keys(ih.Module._extensions)}={}){let be=[],je=ue(Ne,be,{extensions:ke});if(je)return FW([je]),J.normalize(je);{FW(be);let Re=uf(Ne),ct=me(Ne);if(ct){let{packageLocation:Me}=U(ct),P=!0;try{t.fakeFs.accessSync(Me)}catch(w){if(w?.code==="ENOENT")P=!1;else{let b=(w?.message??w??"empty exception thrown").replace(/^[A-Z]/,y=>y.toLowerCase());throw ys("QUALIFIED_PATH_RESOLUTION_FAILED",`Required package exists but could not be accessed (${b}). + +Missing package: ${ct.name}@${ct.reference} +Expected package location: ${uf(Me)} +`,{unqualifiedPath:Re,extensions:ke})}}if(!P){let w=Me.includes("/unplugged/")?"Required unplugged package missing from disk. This may happen when switching branches without running installs (unplugged packages must be fully materialized on disk to work).":"Required package missing from disk. If you keep your packages inside your repository then restarting the Node process may be enough. Otherwise, try to run an install first.";throw ys("QUALIFIED_PATH_RESOLUTION_FAILED",`${w} + +Missing package: ${ct.name}@${ct.reference} +Expected package location: ${uf(Me)} +`,{unqualifiedPath:Re,extensions:ke})}}throw ys("QUALIFIED_PATH_RESOLUTION_FAILED",`Qualified path resolution failed: we looked for the following paths, but none could be accessed. + +Source path: ${Re} +${be.map(Me=>`Not found: ${uf(Me)} +`).join("")}`,{unqualifiedPath:Re,extensions:ke})}}function st(Ne,ke,be){if(!ke)throw new Error("Assertion failed: An issuer is required to resolve private import mappings");let je=s1e({name:Ne,base:(0,Wm.pathToFileURL)(fe.fromPortablePath(ke)),conditions:be.conditions??te,readFileSyncFn:ce});if(je instanceof URL)return Qe(fe.toPortablePath((0,Wm.fileURLToPath)(je)),{extensions:be.extensions});if(je.startsWith("#"))throw new Error("Mapping from one private import to another isn't allowed");return _(je,ke,be)}function _(Ne,ke,be={}){try{if(Ne.startsWith("#"))return st(Ne,ke,be);let{considerBuiltins:je,extensions:Re,conditions:ct}=be,Me=Z(Ne,ke,{considerBuiltins:je});if(Ne==="pnpapi")return Me;if(Me===null)return null;let P=()=>ke!==null?Ae(ke):!1,w=(!je||!(0,ih.isBuiltin)(Ne))&&!P()?De(Ne,Me,ct,ke):Me;return Qe(w,{extensions:Re})}catch(je){throw Object.hasOwn(je,"pnpCode")&&Object.assign(je.data,{request:uf(Ne),issuer:ke&&uf(ke)}),je}}function tt(Ne){let ke=J.normalize(Ne),be=mo.resolveVirtual(ke);return be!==ke?be:null}return{VERSIONS:Ce,topLevel:Ee,getLocator:(Ne,ke)=>Array.isArray(ke)?{name:ke[0],reference:ke[1]}:{name:Ne,reference:ke},getDependencyTreeRoots:()=>[...e.dependencyTreeRoots],getAllLocators(){let Ne=[];for(let[ke,be]of S)for(let je of be.keys())ke!==null&&je!==null&&Ne.push({name:ke,reference:je});return Ne},getPackageInformation:Ne=>{let ke=d(Ne);if(ke===null)return null;let be=fe.fromPortablePath(ke.packageLocation);return{...ke,packageLocation:be}},findPackageLocator:Ne=>me(fe.toPortablePath(Ne)),resolveToUnqualified:O("resolveToUnqualified",(Ne,ke,be)=>{let je=ke!==null?fe.toPortablePath(ke):null,Re=Z(fe.toPortablePath(Ne),je,be);return Re===null?null:fe.fromPortablePath(Re)}),resolveUnqualified:O("resolveUnqualified",(Ne,ke)=>fe.fromPortablePath(Qe(fe.toPortablePath(Ne),ke))),resolveRequest:O("resolveRequest",(Ne,ke,be)=>{let je=ke!==null?fe.toPortablePath(ke):null,Re=_(fe.toPortablePath(Ne),je,be);return Re===null?null:fe.fromPortablePath(Re)}),resolveVirtual:O("resolveVirtual",Ne=>{let ke=tt(fe.toPortablePath(Ne));return ke!==null?fe.fromPortablePath(ke):null})}}Dt();var A1e=(e,t,r)=>{let s=RD(e),a=vW(s,{basePath:t}),n=fe.join(t,Er.pnpCjs);return OW(a,{fakeFs:r,pnpapiResolution:n})};var MW=et(h1e());Yt();var mA={};Vt(mA,{checkManifestCompatibility:()=>d1e,extractBuildRequest:()=>qF,getExtractHint:()=>UW,hasBindingGyp:()=>_W});qe();Dt();function d1e(e){return j.isPackageCompatible(e,Ui.getArchitectureSet())}function qF(e,t,r,{configuration:s}){let a=[];for(let n of["preinstall","install","postinstall"])t.manifest.scripts.has(n)&&a.push({type:0,script:n});return!t.manifest.scripts.has("install")&&t.misc.hasBindingGyp&&a.push({type:1,script:"node-gyp rebuild"}),a.length===0?null:e.linkType!=="HARD"?{skipped:!0,explain:n=>n.reportWarningOnce(6,`${j.prettyLocator(s,e)} lists build scripts, but is referenced through a soft link. Soft links don't support build scripts, so they'll be ignored.`)}:r&&r.built===!1?{skipped:!0,explain:n=>n.reportInfoOnce(5,`${j.prettyLocator(s,e)} lists build scripts, but its build has been explicitly disabled through configuration.`)}:!s.get("enableScripts")&&!r.built?{skipped:!0,explain:n=>n.reportWarningOnce(4,`${j.prettyLocator(s,e)} lists build scripts, but all build scripts have been disabled.`)}:d1e(e)?{skipped:!1,directives:a}:{skipped:!0,explain:n=>n.reportWarningOnce(76,`${j.prettyLocator(s,e)} The ${Ui.getArchitectureName()} architecture is incompatible with this package, build skipped.`)}}var Qht=new Set([".exe",".bin",".h",".hh",".hpp",".c",".cc",".cpp",".java",".jar",".node"]);function UW(e){return e.packageFs.getExtractHint({relevantExtensions:Qht})}function _W(e){let t=J.join(e.prefixPath,"binding.gyp");return e.packageFs.existsSync(t)}var HD={};Vt(HD,{getUnpluggedPath:()=>_D});qe();Dt();function _D(e,{configuration:t}){return J.resolve(t.get("pnpUnpluggedFolder"),j.slugifyLocator(e))}var Rht=new Set([j.makeIdent(null,"open").identHash,j.makeIdent(null,"opn").identHash]),nd=class{constructor(){this.mode="strict";this.pnpCache=new Map}getCustomDataKey(){return JSON.stringify({name:"PnpLinker",version:2})}supportsPackage(t,r){return this.isEnabled(r)}async findPackageLocation(t,r){if(!this.isEnabled(r))throw new Error("Assertion failed: Expected the PnP linker to be enabled");let s=id(r.project).cjs;if(!le.existsSync(s))throw new it(`The project in ${pe.pretty(r.project.configuration,`${r.project.cwd}/package.json`,pe.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let a=Ge.getFactoryWithDefault(this.pnpCache,s,()=>Ge.dynamicRequire(s,{cachingStrategy:Ge.CachingStrategy.FsTime})),n={name:j.stringifyIdent(t),reference:t.reference},c=a.getPackageInformation(n);if(!c)throw new it(`Couldn't find ${j.prettyLocator(r.project.configuration,t)} in the currently installed PnP map - running an install might help`);return fe.toPortablePath(c.packageLocation)}async findPackageLocator(t,r){if(!this.isEnabled(r))return null;let s=id(r.project).cjs;if(!le.existsSync(s))return null;let n=Ge.getFactoryWithDefault(this.pnpCache,s,()=>Ge.dynamicRequire(s,{cachingStrategy:Ge.CachingStrategy.FsTime})).findPackageLocator(fe.fromPortablePath(t));return n?j.makeLocator(j.parseIdent(n.name),n.reference):null}makeInstaller(t){return new Ym(t)}isEnabled(t){return!(t.project.configuration.get("nodeLinker")!=="pnp"||t.project.configuration.get("pnpMode")!==this.mode)}},Ym=class{constructor(t){this.opts=t;this.mode="strict";this.asyncActions=new Ge.AsyncActions(10);this.packageRegistry=new Map;this.virtualTemplates=new Map;this.isESMLoaderRequired=!1;this.customData={store:new Map};this.unpluggedPaths=new Set;this.opts=t}attachCustomData(t){this.customData=t}async installPackage(t,r,s){let a=j.stringifyIdent(t),n=t.reference,c=!!this.opts.project.tryWorkspaceByLocator(t),f=j.isVirtualLocator(t),p=t.peerDependencies.size>0&&!f,h=!p&&!c,E=!p&&t.linkType!=="SOFT",C,S;if(h||E){let te=f?j.devirtualizeLocator(t):t;C=this.customData.store.get(te.locatorHash),typeof C>"u"&&(C=await Tht(r),t.linkType==="HARD"&&this.customData.store.set(te.locatorHash,C)),C.manifest.type==="module"&&(this.isESMLoaderRequired=!0),S=this.opts.project.getDependencyMeta(te,t.version)}let x=h?qF(t,C,S,{configuration:this.opts.project.configuration}):null,I=E?await this.unplugPackageIfNeeded(t,C,r,S,s):r.packageFs;if(J.isAbsolute(r.prefixPath))throw new Error(`Assertion failed: Expected the prefix path (${r.prefixPath}) to be relative to the parent`);let T=J.resolve(I.getRealPath(),r.prefixPath),O=HW(this.opts.project.cwd,T),U=new Map,V=new Set;if(f){for(let te of t.peerDependencies.values())U.set(j.stringifyIdent(te),null),V.add(j.stringifyIdent(te));if(!c){let te=j.devirtualizeLocator(t);this.virtualTemplates.set(te.locatorHash,{location:HW(this.opts.project.cwd,mo.resolveVirtual(T)),locator:te})}}return Ge.getMapWithDefault(this.packageRegistry,a).set(n,{packageLocation:O,packageDependencies:U,packagePeers:V,linkType:t.linkType,discardFromLookup:r.discardFromLookup||!1}),{packageLocation:T,buildRequest:x}}async attachInternalDependencies(t,r){let s=this.getPackageInformation(t);for(let[a,n]of r){let c=j.areIdentsEqual(a,n)?n.reference:[j.stringifyIdent(n),n.reference];s.packageDependencies.set(j.stringifyIdent(a),c)}}async attachExternalDependents(t,r){for(let s of r)this.getDiskInformation(s).packageDependencies.set(j.stringifyIdent(t),t.reference)}async finalizeInstall(){if(this.opts.project.configuration.get("pnpMode")!==this.mode)return;let t=id(this.opts.project);if(this.isEsmEnabled()||await le.removePromise(t.esmLoader),this.opts.project.configuration.get("nodeLinker")!=="pnp"){await le.removePromise(t.cjs),await le.removePromise(t.data),await le.removePromise(t.esmLoader),await le.removePromise(this.opts.project.configuration.get("pnpUnpluggedFolder"));return}for(let{locator:C,location:S}of this.virtualTemplates.values())Ge.getMapWithDefault(this.packageRegistry,j.stringifyIdent(C)).set(C.reference,{packageLocation:S,packageDependencies:new Map,packagePeers:new Set,linkType:"SOFT",discardFromLookup:!1});let r=this.opts.project.configuration.get("pnpFallbackMode"),s=this.opts.project.workspaces.map(({anchoredLocator:C})=>({name:j.stringifyIdent(C),reference:C.reference})),a=r!=="none",n=[],c=new Map,f=Ge.buildIgnorePattern([".yarn/sdks/**",...this.opts.project.configuration.get("pnpIgnorePatterns")]),p=this.packageRegistry,h=this.opts.project.configuration.get("pnpShebang"),E=this.opts.project.configuration.get("pnpZipBackend");if(r==="dependencies-only")for(let C of this.opts.project.storedPackages.values())this.opts.project.tryWorkspaceByLocator(C)&&n.push({name:j.stringifyIdent(C),reference:C.reference});return await this.asyncActions.wait(),await this.finalizeInstallWithPnp({dependencyTreeRoots:s,enableTopLevelFallback:a,fallbackExclusionList:n,fallbackPool:c,ignorePattern:f,pnpZipBackend:E,packageRegistry:p,shebang:h}),{customData:this.customData}}async transformPnpSettings(t){}isEsmEnabled(){if(this.opts.project.configuration.sources.has("pnpEnableEsmLoader"))return this.opts.project.configuration.get("pnpEnableEsmLoader");if(this.isESMLoaderRequired)return!0;for(let t of this.opts.project.workspaces)if(t.manifest.type==="module")return!0;return!1}async finalizeInstallWithPnp(t){let r=id(this.opts.project),s=await this.locateNodeModules(t.ignorePattern);if(s.length>0){this.opts.report.reportWarning(31,"One or more node_modules have been detected and will be removed. This operation may take some time.");for(let n of s)await le.removePromise(n)}if(await this.transformPnpSettings(t),this.opts.project.configuration.get("pnpEnableInlining")){let n=Gwe(t);await le.changeFilePromise(r.cjs,n,{automaticNewlines:!0,mode:493}),await le.removePromise(r.data)}else{let{dataFile:n,loaderFile:c}=qwe(t);await le.changeFilePromise(r.cjs,c,{automaticNewlines:!0,mode:493}),await le.changeFilePromise(r.data,n,{automaticNewlines:!0,mode:420})}this.isEsmEnabled()&&(this.opts.report.reportWarning(92,"ESM support for PnP uses the experimental loader API and is therefore experimental"),await le.changeFilePromise(r.esmLoader,(0,MW.default)(),{automaticNewlines:!0,mode:420}));let a=this.opts.project.configuration.get("pnpUnpluggedFolder");if(this.unpluggedPaths.size===0)await le.removePromise(a);else for(let n of await le.readdirPromise(a)){let c=J.resolve(a,n);this.unpluggedPaths.has(c)||await le.removePromise(c)}}async locateNodeModules(t){let r=[],s=t?new RegExp(t):null;for(let a of this.opts.project.workspaces){let n=J.join(a.cwd,"node_modules");if(s&&s.test(J.relative(this.opts.project.cwd,a.cwd))||!le.existsSync(n))continue;let c=await le.readdirPromise(n,{withFileTypes:!0}),f=c.filter(p=>!p.isDirectory()||p.name===".bin"||!p.name.startsWith("."));if(f.length===c.length)r.push(n);else for(let p of f)r.push(J.join(n,p.name))}return r}async unplugPackageIfNeeded(t,r,s,a,n){return this.shouldBeUnplugged(t,r,a)?this.unplugPackage(t,s,n):s.packageFs}shouldBeUnplugged(t,r,s){return typeof s.unplugged<"u"?s.unplugged:Rht.has(t.identHash)||t.conditions!=null?!0:r.manifest.preferUnplugged!==null?r.manifest.preferUnplugged:!!(qF(t,r,s,{configuration:this.opts.project.configuration})?.skipped===!1||r.misc.extractHint)}async unplugPackage(t,r,s){let a=_D(t,{configuration:this.opts.project.configuration});return this.opts.project.disabledLocators.has(t.locatorHash)?new Gf(a,{baseFs:r.packageFs,pathUtils:J}):(this.unpluggedPaths.add(a),s.holdFetchResult(this.asyncActions.set(t.locatorHash,async()=>{let n=J.join(a,r.prefixPath,".ready");await le.existsPromise(n)||(this.opts.project.storedBuildState.delete(t.locatorHash),await le.mkdirPromise(a,{recursive:!0}),await le.copyPromise(a,vt.dot,{baseFs:r.packageFs,overwrite:!1}),await le.writeFilePromise(n,""))})),new bn(a))}getPackageInformation(t){let r=j.stringifyIdent(t),s=t.reference,a=this.packageRegistry.get(r);if(!a)throw new Error(`Assertion failed: The package information store should have been available (for ${j.prettyIdent(this.opts.project.configuration,t)})`);let n=a.get(s);if(!n)throw new Error(`Assertion failed: The package information should have been available (for ${j.prettyLocator(this.opts.project.configuration,t)})`);return n}getDiskInformation(t){let r=Ge.getMapWithDefault(this.packageRegistry,"@@disk"),s=HW(this.opts.project.cwd,t);return Ge.getFactoryWithDefault(r,s,()=>({packageLocation:s,packageDependencies:new Map,packagePeers:new Set,linkType:"SOFT",discardFromLookup:!1}))}};function HW(e,t){let r=J.relative(e,t);return r.match(/^\.{0,2}\//)||(r=`./${r}`),r.replace(/\/?$/,"/")}async function Tht(e){let t=await _t.tryFind(e.prefixPath,{baseFs:e.packageFs})??new _t,r=new Set(["preinstall","install","postinstall"]);for(let s of t.scripts.keys())r.has(s)||t.scripts.delete(s);return{manifest:{scripts:t.scripts,preferUnplugged:t.preferUnplugged,type:t.type},misc:{extractHint:UW(e),hasBindingGyp:_W(e)}}}qe();qe();Yt();var g1e=et(zo());var mw=class extends At{constructor(){super(...arguments);this.all=he.Boolean("-A,--all",!1,{description:"Unplug direct dependencies from the entire project"});this.recursive=he.Boolean("-R,--recursive",!1,{description:"Unplug both direct and transitive dependencies"});this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.patterns=he.Rest()}static{this.paths=[["unplug"]]}static{this.usage=at.Usage({description:"force the unpacking of a list of packages",details:"\n This command will add the selectors matching the specified patterns to the list of packages that must be unplugged when installed.\n\n A package being unplugged means that instead of being referenced directly through its archive, it will be unpacked at install time in the directory configured via `pnpUnpluggedFolder`. Note that unpacking packages this way is generally not recommended because it'll make it harder to store your packages within the repository. However, it's a good approach to quickly and safely debug some packages, and can even sometimes be required depending on the context (for example when the package contains shellscripts).\n\n Running the command will set a persistent flag inside your top-level `package.json`, in the `dependenciesMeta` field. As such, to undo its effects, you'll need to revert the changes made to the manifest and run `yarn install` to apply the modification.\n\n By default, only direct dependencies from the current workspace are affected. If `-A,--all` is set, direct dependencies from the entire project are affected. Using the `-R,--recursive` flag will affect transitive dependencies as well as direct ones.\n\n This command accepts glob patterns inside the scope and name components (not the range). Make sure to escape the patterns to prevent your own shell from trying to expand them.\n ",examples:[["Unplug the lodash dependency from the active workspace","yarn unplug lodash"],["Unplug all instances of lodash referenced by any workspace","yarn unplug lodash -A"],["Unplug all instances of lodash referenced by the active workspace and its dependencies","yarn unplug lodash -R"],["Unplug all instances of lodash, anywhere","yarn unplug lodash -AR"],["Unplug one specific version of lodash","yarn unplug lodash@1.2.3"],["Unplug all packages with the `@babel` scope","yarn unplug '@babel/*'"],["Unplug all packages (only for testing, not recommended)","yarn unplug -R '*'"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Kr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);if(r.get("nodeLinker")!=="pnp")throw new it("This command can only be used if the `nodeLinker` option is set to `pnp`");await s.restoreInstallState();let c=new Set(this.patterns),f=this.patterns.map(x=>{let I=j.parseDescriptor(x),T=I.range!=="unknown"?I:j.makeDescriptor(I,"*");if(!kr.validRange(T.range))throw new it(`The range of the descriptor patterns must be a valid semver range (${j.prettyDescriptor(r,T)})`);return O=>{let U=j.stringifyIdent(O);return!g1e.default.isMatch(U,j.stringifyIdent(T))||O.version&&!kr.satisfiesWithPrereleases(O.version,T.range)?!1:(c.delete(x),!0)}}),p=()=>{let x=[];for(let I of s.storedPackages.values())!s.tryWorkspaceByLocator(I)&&!j.isVirtualLocator(I)&&f.some(T=>T(I))&&x.push(I);return x},h=x=>{let I=new Set,T=[],O=(U,V)=>{if(I.has(U.locatorHash))return;let te=!!s.tryWorkspaceByLocator(U);if(!(V>0&&!this.recursive&&te)&&(I.add(U.locatorHash),!s.tryWorkspaceByLocator(U)&&f.some(ie=>ie(U))&&T.push(U),!(V>0&&!this.recursive)))for(let ie of U.dependencies.values()){let ue=s.storedResolutions.get(ie.descriptorHash);if(!ue)throw new Error("Assertion failed: The resolution should have been registered");let ae=s.storedPackages.get(ue);if(!ae)throw new Error("Assertion failed: The package should have been registered");O(ae,V+1)}};for(let U of x)O(U.anchoredPackage,0);return T},E,C;if(this.all&&this.recursive?(E=p(),C="the project"):this.all?(E=h(s.workspaces),C="any workspace"):(E=h([a]),C="this workspace"),c.size>1)throw new it(`Patterns ${pe.prettyList(r,c,pe.Type.CODE)} don't match any packages referenced by ${C}`);if(c.size>0)throw new it(`Pattern ${pe.prettyList(r,c,pe.Type.CODE)} doesn't match any packages referenced by ${C}`);E=Ge.sortMap(E,x=>j.stringifyLocator(x));let S=await Ot.start({configuration:r,stdout:this.context.stdout,json:this.json},async x=>{for(let I of E){let T=I.version??"unknown",O=s.topLevelWorkspace.manifest.ensureDependencyMeta(j.makeDescriptor(I,T));O.unplugged=!0,x.reportInfo(0,`Will unpack ${j.prettyLocator(r,I)} to ${pe.pretty(r,_D(I,{configuration:r}),pe.Type.PATH)}`),x.reportJson({locator:j.stringifyLocator(I),version:T})}await s.topLevelWorkspace.persistManifest(),this.json||x.reportSeparator()});return S.hasErrors()?S.exitCode():await s.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:n})}};var id=e=>({cjs:J.join(e.cwd,Er.pnpCjs),data:J.join(e.cwd,Er.pnpData),esmLoader:J.join(e.cwd,Er.pnpEsmLoader)}),y1e=e=>/\s/.test(e)?JSON.stringify(e):e;async function Fht(e,t,r){let s=/\s*--require\s+\S*\.pnp\.c?js\s*/g,a=/\s*--experimental-loader\s+\S*\.pnp\.loader\.mjs\s*/,n=(t.NODE_OPTIONS??"").replace(s," ").replace(a," ").trim();if(e.configuration.get("nodeLinker")!=="pnp"){t.NODE_OPTIONS=n||void 0;return}let c=id(e),f=`--require ${y1e(fe.fromPortablePath(c.cjs))}`;le.existsSync(c.esmLoader)&&(f=`${f} --experimental-loader ${(0,m1e.pathToFileURL)(fe.fromPortablePath(c.esmLoader)).href}`),le.existsSync(c.cjs)&&(t.NODE_OPTIONS=n?`${f} ${n}`:f)}async function Nht(e,t){let r=id(e);t(r.cjs),t(r.data),t(r.esmLoader),t(e.configuration.get("pnpUnpluggedFolder"))}var Oht={hooks:{populateYarnPaths:Nht,setupScriptEnvironment:Fht},configuration:{nodeLinker:{description:'The linker used for installing Node packages, one of: "pnp", "pnpm", or "node-modules"',type:"STRING",default:"pnp"},minizip:{description:"Whether Yarn should use minizip to extract archives",type:"BOOLEAN",default:!1},winLinkType:{description:"Whether Yarn should use Windows Junctions or symlinks when creating links on Windows.",type:"STRING",values:["junctions","symlinks"],default:"junctions"},pnpMode:{description:"If 'strict', generates standard PnP maps. If 'loose', merges them with the n_m resolution.",type:"STRING",default:"strict"},pnpShebang:{description:"String to prepend to the generated PnP script",type:"STRING",default:"#!/usr/bin/env node"},pnpIgnorePatterns:{description:"Array of glob patterns; files matching them will use the classic resolution",type:"STRING",default:[],isArray:!0},pnpZipBackend:{description:"Whether to use the experimental js implementation for the ZipFS",type:"STRING",values:["libzip","js"],default:"libzip"},pnpEnableEsmLoader:{description:"If true, Yarn will generate an ESM loader (`.pnp.loader.mjs`). If this is not explicitly set Yarn tries to automatically detect whether ESM support is required.",type:"BOOLEAN",default:!1},pnpEnableInlining:{description:"If true, the PnP data will be inlined along with the generated loader",type:"BOOLEAN",default:!0},pnpFallbackMode:{description:"If true, the generated PnP loader will follow the top-level fallback rule",type:"STRING",default:"dependencies-only"},pnpUnpluggedFolder:{description:"Folder where the unplugged packages must be stored",type:"ABSOLUTE_PATH",default:"./.yarn/unplugged"}},linkers:[nd],commands:[mw]},Lht=Oht;var D1e=et(B1e());Yt();var KW=et(Ie("crypto")),b1e=et(Ie("fs")),P1e=1,Ri="node_modules",WF=".bin",x1e=".yarn-state.yml",e0t=1e3,zW=(s=>(s.CLASSIC="classic",s.HARDLINKS_LOCAL="hardlinks-local",s.HARDLINKS_GLOBAL="hardlinks-global",s))(zW||{}),jD=class{constructor(){this.installStateCache=new Map}getCustomDataKey(){return JSON.stringify({name:"NodeModulesLinker",version:3})}supportsPackage(t,r){return this.isEnabled(r)}async findPackageLocation(t,r){if(!this.isEnabled(r))throw new Error("Assertion failed: Expected the node-modules linker to be enabled");let s=r.project.tryWorkspaceByLocator(t);if(s)return s.cwd;let a=await Ge.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await JW(r.project,{unrollAliases:!0}));if(a===null)throw new it("Couldn't find the node_modules state file - running an install might help (findPackageLocation)");let n=a.locatorMap.get(j.stringifyLocator(t));if(!n){let p=new it(`Couldn't find ${j.prettyLocator(r.project.configuration,t)} in the currently installed node_modules map - running an install might help`);throw p.code="LOCATOR_NOT_INSTALLED",p}let c=n.locations.sort((p,h)=>p.split(J.sep).length-h.split(J.sep).length),f=J.join(r.project.configuration.startingCwd,Ri);return c.find(p=>J.contains(f,p))||n.locations[0]}async findPackageLocator(t,r){if(!this.isEnabled(r))return null;let s=await Ge.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await JW(r.project,{unrollAliases:!0}));if(s===null)return null;let{locationRoot:a,segments:n}=YF(J.resolve(t),{skipPrefix:r.project.cwd}),c=s.locationTree.get(a);if(!c)return null;let f=c.locator;for(let p of n){if(c=c.children.get(p),!c)break;f=c.locator||f}return j.parseLocator(f)}makeInstaller(t){return new VW(t)}isEnabled(t){return t.project.configuration.get("nodeLinker")==="node-modules"}},VW=class{constructor(t){this.opts=t;this.localStore=new Map;this.realLocatorChecksums=new Map;this.customData={store:new Map}}attachCustomData(t){this.customData=t}async installPackage(t,r){let s=J.resolve(r.packageFs.getRealPath(),r.prefixPath),a=this.customData.store.get(t.locatorHash);if(typeof a>"u"&&(a=await t0t(t,r),t.linkType==="HARD"&&this.customData.store.set(t.locatorHash,a)),!j.isPackageCompatible(t,this.opts.project.configuration.getSupportedArchitectures()))return{packageLocation:null,buildRequest:null};let n=new Map,c=new Set;n.has(j.stringifyIdent(t))||n.set(j.stringifyIdent(t),t.reference);let f=t;if(j.isVirtualLocator(t)){f=j.devirtualizeLocator(t);for(let E of t.peerDependencies.values())n.set(j.stringifyIdent(E),null),c.add(j.stringifyIdent(E))}let p={packageLocation:`${fe.fromPortablePath(s)}/`,packageDependencies:n,packagePeers:c,linkType:t.linkType,discardFromLookup:r.discardFromLookup??!1};this.localStore.set(t.locatorHash,{pkg:t,customPackageData:a,dependencyMeta:this.opts.project.getDependencyMeta(t,t.version),pnpNode:p});let h=r.checksum?r.checksum.substring(r.checksum.indexOf("/")+1):null;return this.realLocatorChecksums.set(f.locatorHash,h),{packageLocation:s,buildRequest:null}}async attachInternalDependencies(t,r){let s=this.localStore.get(t.locatorHash);if(typeof s>"u")throw new Error("Assertion failed: Expected information object to have been registered");for(let[a,n]of r){let c=j.areIdentsEqual(a,n)?n.reference:[j.stringifyIdent(n),n.reference];s.pnpNode.packageDependencies.set(j.stringifyIdent(a),c)}}async attachExternalDependents(t,r){throw new Error("External dependencies haven't been implemented for the node-modules linker")}async finalizeInstall(){if(this.opts.project.configuration.get("nodeLinker")!=="node-modules")return;let t=new mo({baseFs:new rA({maxOpenFiles:80,readOnlyArchives:!0})}),r=await JW(this.opts.project),s=this.opts.project.configuration.get("nmMode");(r===null||s!==r.nmMode)&&(this.opts.project.storedBuildState.clear(),r={locatorMap:new Map,binSymlinks:new Map,locationTree:new Map,nmMode:s,mtimeMs:0});let a=new Map(this.opts.project.workspaces.map(S=>{let x=this.opts.project.configuration.get("nmHoistingLimits");try{x=Ge.validateEnum(xD,S.manifest.installConfig?.hoistingLimits??x)}catch{let I=j.prettyWorkspace(this.opts.project.configuration,S);this.opts.report.reportWarning(57,`${I}: Invalid 'installConfig.hoistingLimits' value. Expected one of ${Object.values(xD).join(", ")}, using default: "${x}"`)}return[S.relativeCwd,x]})),n=new Map(this.opts.project.workspaces.map(S=>{let x=this.opts.project.configuration.get("nmSelfReferences");return x=S.manifest.installConfig?.selfReferences??x,[S.relativeCwd,x]})),c={VERSIONS:{std:1},topLevel:{name:null,reference:null},getLocator:(S,x)=>Array.isArray(x)?{name:x[0],reference:x[1]}:{name:S,reference:x},getDependencyTreeRoots:()=>this.opts.project.workspaces.map(S=>{let x=S.anchoredLocator;return{name:j.stringifyIdent(x),reference:x.reference}}),getPackageInformation:S=>{let x=S.reference===null?this.opts.project.topLevelWorkspace.anchoredLocator:j.makeLocator(j.parseIdent(S.name),S.reference),I=this.localStore.get(x.locatorHash);if(typeof I>"u")throw new Error("Assertion failed: Expected the package reference to have been registered");return I.pnpNode},findPackageLocator:S=>{let x=this.opts.project.tryWorkspaceByCwd(fe.toPortablePath(S));if(x!==null){let I=x.anchoredLocator;return{name:j.stringifyIdent(I),reference:I.reference}}throw new Error("Assertion failed: Unimplemented")},resolveToUnqualified:()=>{throw new Error("Assertion failed: Unimplemented")},resolveUnqualified:()=>{throw new Error("Assertion failed: Unimplemented")},resolveRequest:()=>{throw new Error("Assertion failed: Unimplemented")},resolveVirtual:S=>fe.fromPortablePath(mo.resolveVirtual(fe.toPortablePath(S)))},{tree:f,errors:p,preserveSymlinksRequired:h}=kD(c,{pnpifyFs:!1,validateExternalSoftLinks:!0,hoistingLimitsByCwd:a,project:this.opts.project,selfReferencesByCwd:n});if(!f){for(let{messageName:S,text:x}of p)this.opts.report.reportError(S,x);return}let E=wW(f);await l0t(r,E,{baseFs:t,project:this.opts.project,report:this.opts.report,realLocatorChecksums:this.realLocatorChecksums,loadManifest:async S=>{let x=j.parseLocator(S),I=this.localStore.get(x.locatorHash);if(typeof I>"u")throw new Error("Assertion failed: Expected the slot to exist");return I.customPackageData.manifest}});let C=[];for(let[S,x]of E.entries()){if(R1e(S))continue;let I=j.parseLocator(S),T=this.localStore.get(I.locatorHash);if(typeof T>"u")throw new Error("Assertion failed: Expected the slot to exist");if(this.opts.project.tryWorkspaceByLocator(T.pkg))continue;let O=mA.extractBuildRequest(T.pkg,T.customPackageData,T.dependencyMeta,{configuration:this.opts.project.configuration});O&&C.push({buildLocations:x.locations,locator:I,buildRequest:O})}return h&&this.opts.report.reportWarning(72,`The application uses portals and that's why ${pe.pretty(this.opts.project.configuration,"--preserve-symlinks",pe.Type.CODE)} Node option is required for launching it`),{customData:this.customData,records:C}}};async function t0t(e,t){let r=await _t.tryFind(t.prefixPath,{baseFs:t.packageFs})??new _t,s=new Set(["preinstall","install","postinstall"]);for(let a of r.scripts.keys())s.has(a)||r.scripts.delete(a);return{manifest:{bin:r.bin,scripts:r.scripts},misc:{hasBindingGyp:mA.hasBindingGyp(t)}}}async function r0t(e,t,r,s,{installChangedByUser:a}){let n="";n+=`# Warning: This file is automatically generated. Removing it is fine, but will +`,n+=`# cause your node_modules installation to become invalidated. +`,n+=` +`,n+=`__metadata: +`,n+=` version: ${P1e} +`,n+=` nmMode: ${s.value} +`;let c=Array.from(t.keys()).sort(),f=j.stringifyLocator(e.topLevelWorkspace.anchoredLocator);for(let E of c){let C=t.get(E);n+=` +`,n+=`${JSON.stringify(E)}: +`,n+=` locations: +`;for(let S of C.locations){let x=J.contains(e.cwd,S);if(x===null)throw new Error(`Assertion failed: Expected the path to be within the project (${S})`);n+=` - ${JSON.stringify(x)} +`}if(C.aliases.length>0){n+=` aliases: +`;for(let S of C.aliases)n+=` - ${JSON.stringify(S)} +`}if(E===f&&r.size>0){n+=` bin: +`;for(let[S,x]of r){let I=J.contains(e.cwd,S);if(I===null)throw new Error(`Assertion failed: Expected the path to be within the project (${S})`);n+=` ${JSON.stringify(I)}: +`;for(let[T,O]of x){let U=J.relative(J.join(S,Ri),O);n+=` ${JSON.stringify(T)}: ${JSON.stringify(U)} +`}}}}let p=e.cwd,h=J.join(p,Ri,x1e);a&&await le.removePromise(h),await le.changeFilePromise(h,n,{automaticNewlines:!0})}async function JW(e,{unrollAliases:t=!1}={}){let r=e.cwd,s=J.join(r,Ri,x1e),a;try{a=await le.statPromise(s)}catch{}if(!a)return null;let n=cs(await le.readFilePromise(s,"utf8"));if(n.__metadata.version>P1e)return null;let c=n.__metadata.nmMode||"classic",f=new Map,p=new Map;delete n.__metadata;for(let[h,E]of Object.entries(n)){let C=E.locations.map(x=>J.join(r,x)),S=E.bin;if(S)for(let[x,I]of Object.entries(S)){let T=J.join(r,fe.toPortablePath(x)),O=Ge.getMapWithDefault(p,T);for(let[U,V]of Object.entries(I))O.set(U,fe.toPortablePath([T,Ri,V].join(J.sep)))}if(f.set(h,{target:vt.dot,linkType:"HARD",locations:C,aliases:E.aliases||[]}),t&&E.aliases)for(let x of E.aliases){let{scope:I,name:T}=j.parseLocator(h),O=j.makeLocator(j.makeIdent(I,T),x),U=j.stringifyLocator(O);f.set(U,{target:vt.dot,linkType:"HARD",locations:C,aliases:[]})}}return{locatorMap:f,binSymlinks:p,locationTree:k1e(f,{skipPrefix:e.cwd}),nmMode:c,mtimeMs:a.mtimeMs}}var Ew=async(e,t)=>{if(e.split(J.sep).indexOf(Ri)<0)throw new Error(`Assertion failed: trying to remove dir that doesn't contain node_modules: ${e}`);try{let r;if(!t.innerLoop&&(r=await le.lstatPromise(e),!r.isDirectory()&&!r.isSymbolicLink()||r.isSymbolicLink()&&!t.isWorkspaceDir)){await le.unlinkPromise(e);return}let s=await le.readdirPromise(e,{withFileTypes:!0});for(let n of s){let c=J.join(e,n.name);n.isDirectory()?(n.name!==Ri||t&&t.innerLoop)&&await Ew(c,{innerLoop:!0,contentsOnly:!1}):await le.unlinkPromise(c)}let a=!t.innerLoop&&t.isWorkspaceDir&&r?.isSymbolicLink();!t.contentsOnly&&!a&&await le.rmdirPromise(e)}catch(r){if(r.code!=="ENOENT"&&r.code!=="ENOTEMPTY")throw r}},v1e=4,YF=(e,{skipPrefix:t})=>{let r=J.contains(t,e);if(r===null)throw new Error(`Assertion failed: Writing attempt prevented to ${e} which is outside project root: ${t}`);let s=r.split(J.sep).filter(p=>p!==""),a=s.indexOf(Ri),n=s.slice(0,a).join(J.sep),c=J.join(t,n),f=s.slice(a);return{locationRoot:c,segments:f}},k1e=(e,{skipPrefix:t})=>{let r=new Map;if(e===null)return r;let s=()=>({children:new Map,linkType:"HARD"});for(let[a,n]of e.entries()){if(n.linkType==="SOFT"&&J.contains(t,n.target)!==null){let f=Ge.getFactoryWithDefault(r,n.target,s);f.locator=a,f.linkType=n.linkType}for(let c of n.locations){let{locationRoot:f,segments:p}=YF(c,{skipPrefix:t}),h=Ge.getFactoryWithDefault(r,f,s);for(let E=0;E{if(process.platform==="win32"&&r==="junctions"){let s;try{s=await le.lstatPromise(e)}catch{}if(!s||s.isDirectory()){await le.symlinkPromise(e,t,"junction");return}}await le.symlinkPromise(J.relative(J.dirname(t),e),t)};async function Q1e(e,t,r){let s=J.join(e,`${KW.default.randomBytes(16).toString("hex")}.tmp`);try{await le.writeFilePromise(s,r);try{await le.linkPromise(s,t)}catch{}}finally{await le.unlinkPromise(s)}}async function n0t({srcPath:e,dstPath:t,entry:r,globalHardlinksStore:s,baseFs:a,nmMode:n}){if(r.kind==="file"){if(n.value==="hardlinks-global"&&s&&r.digest){let f=J.join(s,r.digest.substring(0,2),`${r.digest.substring(2)}.dat`),p;try{let h=await le.statPromise(f);if(h&&(!r.mtimeMs||h.mtimeMs>r.mtimeMs||h.mtimeMs{await le.mkdirPromise(e,{recursive:!0});let f=async(E=vt.dot)=>{let C=J.join(t,E),S=await r.readdirPromise(C,{withFileTypes:!0}),x=new Map;for(let I of S){let T=J.join(E,I.name),O,U=J.join(C,I.name);if(I.isFile()){if(O={kind:"file",mode:(await r.lstatPromise(U)).mode},a.value==="hardlinks-global"){let V=await Ln.checksumFile(U,{baseFs:r,algorithm:"sha1"});O.digest=V}}else if(I.isDirectory())O={kind:"directory"};else if(I.isSymbolicLink())O={kind:"symlink",symlinkTo:await r.readlinkPromise(U)};else throw new Error(`Unsupported file type (file: ${U}, mode: 0o${await r.statSync(U).mode.toString(8).padStart(6,"0")})`);if(x.set(T,O),I.isDirectory()&&T!==Ri){let V=await f(T);for(let[te,ie]of V)x.set(te,ie)}}return x},p;if(a.value==="hardlinks-global"&&s&&c){let E=J.join(s,c.substring(0,2),`${c.substring(2)}.json`);try{p=new Map(Object.entries(JSON.parse(await le.readFilePromise(E,"utf8"))))}catch{p=await f()}}else p=await f();let h=!1;for(let[E,C]of p){let S=J.join(t,E),x=J.join(e,E);if(C.kind==="directory")await le.mkdirPromise(x,{recursive:!0});else if(C.kind==="file"){let I=C.mtimeMs;await n0t({srcPath:S,dstPath:x,entry:C,nmMode:a,baseFs:r,globalHardlinksStore:s}),C.mtimeMs!==I&&(h=!0)}else C.kind==="symlink"&&await XW(J.resolve(J.dirname(x),C.symlinkTo),x,n)}if(a.value==="hardlinks-global"&&s&&h&&c){let E=J.join(s,c.substring(0,2),`${c.substring(2)}.json`);await le.removePromise(E),await Q1e(s,E,Buffer.from(JSON.stringify(Object.fromEntries(p))))}};function s0t(e,t,r,s){let a=new Map,n=new Map,c=new Map,f=!1,p=(h,E,C,S,x)=>{let I=!0,T=J.join(h,E),O=new Set;if(E===Ri||E.startsWith("@")){let V;try{V=le.statSync(T)}catch{}I=!!V,V?V.mtimeMs>r?(f=!0,O=new Set(le.readdirSync(T))):O=new Set(C.children.get(E).children.keys()):f=!0;let te=t.get(h);if(te){let ie=J.join(h,Ri,WF),ue;try{ue=le.statSync(ie)}catch{}if(!ue)f=!0;else if(ue.mtimeMs>r){f=!0;let ae=new Set(le.readdirSync(ie)),ge=new Map;n.set(h,ge);for(let[Ae,Ce]of te)ae.has(Ae)&&ge.set(Ae,Ce)}else n.set(h,te)}}else I=x.has(E);let U=C.children.get(E);if(I){let{linkType:V,locator:te}=U,ie={children:new Map,linkType:V,locator:te};if(S.children.set(E,ie),te){let ue=Ge.getSetWithDefault(c,te);ue.add(T),c.set(te,ue)}for(let ue of U.children.keys())p(T,ue,U,ie,O)}else U.locator&&s.storedBuildState.delete(j.parseLocator(U.locator).locatorHash)};for(let[h,E]of e){let{linkType:C,locator:S}=E,x={children:new Map,linkType:C,locator:S};if(a.set(h,x),S){let I=Ge.getSetWithDefault(c,E.locator);I.add(h),c.set(E.locator,I)}E.children.has(Ri)&&p(h,Ri,E,x,new Set)}return{locationTree:a,binSymlinks:n,locatorLocations:c,installChangedByUser:f}}function R1e(e){let t=j.parseDescriptor(e);return j.isVirtualDescriptor(t)&&(t=j.devirtualizeDescriptor(t)),t.range.startsWith("link:")}async function o0t(e,t,r,{loadManifest:s}){let a=new Map;for(let[f,{locations:p}]of e){let h=R1e(f)?null:await s(f,p[0]),E=new Map;if(h)for(let[C,S]of h.bin){let x=J.join(p[0],S);S!==""&&le.existsSync(x)&&E.set(C,S)}a.set(f,E)}let n=new Map,c=(f,p,h)=>{let E=new Map,C=J.contains(r,f);if(h.locator&&C!==null){let S=a.get(h.locator);for(let[x,I]of S){let T=J.join(f,fe.toPortablePath(I));E.set(x,T)}for(let[x,I]of h.children){let T=J.join(f,x),O=c(T,T,I);O.size>0&&n.set(f,new Map([...n.get(f)||new Map,...O]))}}else for(let[S,x]of h.children){let I=c(J.join(f,S),p,x);for(let[T,O]of I)E.set(T,O)}return E};for(let[f,p]of t){let h=c(f,f,p);h.size>0&&n.set(f,new Map([...n.get(f)||new Map,...h]))}return n}var S1e=(e,t)=>{if(!e||!t)return e===t;let r=j.parseLocator(e);j.isVirtualLocator(r)&&(r=j.devirtualizeLocator(r));let s=j.parseLocator(t);return j.isVirtualLocator(s)&&(s=j.devirtualizeLocator(s)),j.areLocatorsEqual(r,s)};function ZW(e){return J.join(e.get("globalFolder"),"store")}function a0t(e,t){let r=s=>{let a=s.split(J.sep),n=a.lastIndexOf(Ri);if(n<0||n==a.length-1)throw new Error(`Assertion failed. Path is outside of any node_modules package ${s}`);return a.slice(0,n+(a[n+1].startsWith("@")?3:2)).join(J.sep)};for(let s of e.values())for(let[a,n]of s)t.has(r(n))&&s.delete(a)}async function l0t(e,t,{baseFs:r,project:s,report:a,loadManifest:n,realLocatorChecksums:c}){let f=J.join(s.cwd,Ri),{locationTree:p,binSymlinks:h,locatorLocations:E,installChangedByUser:C}=s0t(e.locationTree,e.binSymlinks,e.mtimeMs,s),S=k1e(t,{skipPrefix:s.cwd}),x=[],I=async({srcDir:Ce,dstDir:Ee,linkType:d,globalHardlinksStore:Se,nmMode:Be,windowsLinkType:me,packageChecksum:ce})=>{let Z=(async()=>{try{d==="SOFT"?(await le.mkdirPromise(J.dirname(Ee),{recursive:!0}),await XW(J.resolve(Ce),Ee,me)):await i0t(Ee,Ce,{baseFs:r,globalHardlinksStore:Se,nmMode:Be,windowsLinkType:me,packageChecksum:ce})}catch(De){throw De.message=`While persisting ${Ce} -> ${Ee} ${De.message}`,De}finally{ie.tick()}})().then(()=>x.splice(x.indexOf(Z),1));x.push(Z),x.length>v1e&&await Promise.race(x)},T=async(Ce,Ee,d)=>{let Se=(async()=>{let Be=async(me,ce,Z)=>{try{Z.innerLoop||await le.mkdirPromise(ce,{recursive:!0});let De=await le.readdirPromise(me,{withFileTypes:!0});for(let Qe of De){if(!Z.innerLoop&&Qe.name===WF)continue;let st=J.join(me,Qe.name),_=J.join(ce,Qe.name);Qe.isDirectory()?(Qe.name!==Ri||Z&&Z.innerLoop)&&(await le.mkdirPromise(_,{recursive:!0}),await Be(st,_,{...Z,innerLoop:!0})):ge.value==="hardlinks-local"||ge.value==="hardlinks-global"?await le.linkPromise(st,_):await le.copyFilePromise(st,_,b1e.default.constants.COPYFILE_FICLONE)}}catch(De){throw Z.innerLoop||(De.message=`While cloning ${me} -> ${ce} ${De.message}`),De}finally{Z.innerLoop||ie.tick()}};await Be(Ce,Ee,d)})().then(()=>x.splice(x.indexOf(Se),1));x.push(Se),x.length>v1e&&await Promise.race(x)},O=async(Ce,Ee,d)=>{if(d)for(let[Se,Be]of Ee.children){let me=d.children.get(Se);await O(J.join(Ce,Se),Be,me)}else{Ee.children.has(Ri)&&await Ew(J.join(Ce,Ri),{contentsOnly:!1});let Se=J.basename(Ce)===Ri&&p.has(J.join(J.dirname(Ce)));await Ew(Ce,{contentsOnly:Ce===f,isWorkspaceDir:Se})}};for(let[Ce,Ee]of p){let d=S.get(Ce);for(let[Se,Be]of Ee.children){if(Se===".")continue;let me=d&&d.children.get(Se),ce=J.join(Ce,Se);await O(ce,Be,me)}}let U=async(Ce,Ee,d)=>{if(d){S1e(Ee.locator,d.locator)||await Ew(Ce,{contentsOnly:Ee.linkType==="HARD"});for(let[Se,Be]of Ee.children){let me=d.children.get(Se);await U(J.join(Ce,Se),Be,me)}}else{Ee.children.has(Ri)&&await Ew(J.join(Ce,Ri),{contentsOnly:!0});let Se=J.basename(Ce)===Ri&&S.has(J.join(J.dirname(Ce)));await Ew(Ce,{contentsOnly:Ee.linkType==="HARD",isWorkspaceDir:Se})}};for(let[Ce,Ee]of S){let d=p.get(Ce);for(let[Se,Be]of Ee.children){if(Se===".")continue;let me=d&&d.children.get(Se);await U(J.join(Ce,Se),Be,me)}}let V=new Map,te=[];for(let[Ce,Ee]of E)for(let d of Ee){let{locationRoot:Se,segments:Be}=YF(d,{skipPrefix:s.cwd}),me=S.get(Se),ce=Se;if(me){for(let Z of Be)if(ce=J.join(ce,Z),me=me.children.get(Z),!me)break;if(me){let Z=S1e(me.locator,Ce),De=t.get(me.locator),Qe=De.target,st=ce,_=De.linkType;if(Z)V.has(Qe)||V.set(Qe,st);else if(Qe!==st){let tt=j.parseLocator(me.locator);j.isVirtualLocator(tt)&&(tt=j.devirtualizeLocator(tt)),te.push({srcDir:Qe,dstDir:st,linkType:_,realLocatorHash:tt.locatorHash})}}}}for(let[Ce,{locations:Ee}]of t.entries())for(let d of Ee){let{locationRoot:Se,segments:Be}=YF(d,{skipPrefix:s.cwd}),me=p.get(Se),ce=S.get(Se),Z=Se,De=t.get(Ce),Qe=j.parseLocator(Ce);j.isVirtualLocator(Qe)&&(Qe=j.devirtualizeLocator(Qe));let st=Qe.locatorHash,_=De.target,tt=d;if(_===tt)continue;let Ne=De.linkType;for(let ke of Be)ce=ce.children.get(ke);if(!me)te.push({srcDir:_,dstDir:tt,linkType:Ne,realLocatorHash:st});else for(let ke of Be)if(Z=J.join(Z,ke),me=me.children.get(ke),!me){te.push({srcDir:_,dstDir:tt,linkType:Ne,realLocatorHash:st});break}}let ie=yo.progressViaCounter(te.length),ue=a.reportProgress(ie),ae=s.configuration.get("nmMode"),ge={value:ae},Ae=s.configuration.get("winLinkType");try{let Ce=ge.value==="hardlinks-global"?`${ZW(s.configuration)}/v1`:null;if(Ce&&!await le.existsPromise(Ce)){await le.mkdirpPromise(Ce);for(let d=0;d<256;d++)await le.mkdirPromise(J.join(Ce,d.toString(16).padStart(2,"0")))}for(let d of te)(d.linkType==="SOFT"||!V.has(d.srcDir))&&(V.set(d.srcDir,d.dstDir),await I({...d,globalHardlinksStore:Ce,nmMode:ge,windowsLinkType:Ae,packageChecksum:c.get(d.realLocatorHash)||null}));await Promise.all(x),x.length=0;for(let d of te){let Se=V.get(d.srcDir);d.linkType!=="SOFT"&&d.dstDir!==Se&&await T(Se,d.dstDir,{nmMode:ge})}await Promise.all(x),await le.mkdirPromise(f,{recursive:!0}),a0t(h,new Set(te.map(d=>d.dstDir)));let Ee=await o0t(t,S,s.cwd,{loadManifest:n});await c0t(h,Ee,s.cwd,Ae),await r0t(s,t,Ee,ge,{installChangedByUser:C}),ae=="hardlinks-global"&&ge.value=="hardlinks-local"&&a.reportWarningOnce(74,"'nmMode' has been downgraded to 'hardlinks-local' due to global cache and install folder being on different devices")}finally{ue.stop()}}async function c0t(e,t,r,s){for(let a of e.keys()){if(J.contains(r,a)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${a}`);if(!t.has(a)){let n=J.join(a,Ri,WF);await le.removePromise(n)}}for(let[a,n]of t){if(J.contains(r,a)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${a}`);let c=J.join(a,Ri,WF),f=e.get(a)||new Map;await le.mkdirPromise(c,{recursive:!0});for(let p of f.keys())n.has(p)||(await le.removePromise(J.join(c,p)),process.platform==="win32"&&await le.removePromise(J.join(c,`${p}.cmd`)));for(let[p,h]of n){let E=f.get(p),C=J.join(c,p);E!==h&&(process.platform==="win32"?await(0,D1e.default)(fe.fromPortablePath(h),fe.fromPortablePath(C),{createPwshFile:!1}):(await le.removePromise(C),await XW(h,C,s),J.contains(r,await le.realpathPromise(h))!==null&&await le.chmodPromise(h,493)))}}}qe();Dt();nA();var GD=class extends nd{constructor(){super(...arguments);this.mode="loose"}makeInstaller(r){return new $W(r)}},$W=class extends Ym{constructor(){super(...arguments);this.mode="loose"}async transformPnpSettings(r){let s=new mo({baseFs:new rA({maxOpenFiles:80,readOnlyArchives:!0})}),a=A1e(r,this.opts.project.cwd,s),{tree:n,errors:c}=kD(a,{pnpifyFs:!1,project:this.opts.project});if(!n){for(let{messageName:C,text:S}of c)this.opts.report.reportError(C,S);return}let f=new Map;r.fallbackPool=f;let p=(C,S)=>{let x=j.parseLocator(S.locator),I=j.stringifyIdent(x);I===C?f.set(C,x.reference):f.set(C,[I,x.reference])},h=J.join(this.opts.project.cwd,Er.nodeModules),E=n.get(h);if(!(typeof E>"u")){if("target"in E)throw new Error("Assertion failed: Expected the root junction point to be a directory");for(let C of E.dirList){let S=J.join(h,C),x=n.get(S);if(typeof x>"u")throw new Error("Assertion failed: Expected the child to have been registered");if("target"in x)p(C,x);else for(let I of x.dirList){let T=J.join(S,I),O=n.get(T);if(typeof O>"u")throw new Error("Assertion failed: Expected the subchild to have been registered");if("target"in O)p(`${C}/${I}`,O);else throw new Error("Assertion failed: Expected the leaf junction to be a package")}}}}};var u0t={hooks:{cleanGlobalArtifacts:async e=>{let t=ZW(e);await le.removePromise(t)}},configuration:{nmHoistingLimits:{description:"Prevents packages to be hoisted past specific levels",type:"STRING",values:["workspaces","dependencies","none"],default:"none"},nmMode:{description:"Defines in which measure Yarn must use hardlinks and symlinks when generated `node_modules` directories.",type:"STRING",values:["classic","hardlinks-local","hardlinks-global"],default:"classic"},nmSelfReferences:{description:"Defines whether the linker should generate self-referencing symlinks for workspaces.",type:"BOOLEAN",default:!0}},linkers:[jD,GD]},f0t=u0t;var eK={};Vt(eK,{NpmHttpFetcher:()=>VD,NpmRemapResolver:()=>JD,NpmSemverFetcher:()=>sh,NpmSemverResolver:()=>KD,NpmTagResolver:()=>zD,default:()=>Dvt,npmConfigUtils:()=>di,npmHttpUtils:()=>en,npmPublishUtils:()=>g1});qe();var _1e=et(pi());var ei="npm:";var en={};Vt(en,{AuthType:()=>L1e,customPackageError:()=>Vm,del:()=>P0t,get:()=>Jm,getIdentUrl:()=>WD,getPackageMetadata:()=>Bw,handleInvalidAuthenticationError:()=>sd,post:()=>D0t,put:()=>b0t});qe();qe();Dt();var nY=et(Vv());zl();var O1e=et(pi());var di={};Vt(di,{RegistryType:()=>F1e,getAuditRegistry:()=>A0t,getAuthConfiguration:()=>rY,getDefaultRegistry:()=>qD,getPublishRegistry:()=>p0t,getRegistryConfiguration:()=>N1e,getScopeConfiguration:()=>tY,getScopeRegistry:()=>Iw,isPackageApproved:()=>Cw,normalizeRegistry:()=>Vc});qe();var T1e=et(zo()),F1e=(s=>(s.AUDIT_REGISTRY="npmAuditRegistry",s.FETCH_REGISTRY="npmRegistryServer",s.PUBLISH_REGISTRY="npmPublishRegistry",s))(F1e||{});function Vc(e){return e.replace(/\/$/,"")}function A0t({configuration:e}){return qD({configuration:e,type:"npmAuditRegistry"})}function p0t(e,{configuration:t}){return e.publishConfig?.registry?Vc(e.publishConfig.registry):e.name?Iw(e.name.scope,{configuration:t,type:"npmPublishRegistry"}):qD({configuration:t,type:"npmPublishRegistry"})}function Iw(e,{configuration:t,type:r="npmRegistryServer"}){let s=tY(e,{configuration:t});if(s===null)return qD({configuration:t,type:r});let a=s.get(r);return a===null?qD({configuration:t,type:r}):Vc(a)}function qD({configuration:e,type:t="npmRegistryServer"}){let r=e.get(t);return Vc(r!==null?r:e.get("npmRegistryServer"))}function N1e(e,{configuration:t}){let r=t.get("npmRegistries"),s=Vc(e),a=r.get(s);if(typeof a<"u")return a;let n=r.get(s.replace(/^[a-z]+:/,""));return typeof n<"u"?n:null}var h0t=new Map([["npmRegistryServer","https://npm.jsr.io/"]]);function tY(e,{configuration:t}){if(e===null)return null;let s=t.get("npmScopes").get(e);return s||(e==="jsr"?h0t:null)}function rY(e,{configuration:t,ident:r}){let s=r&&tY(r.scope,{configuration:t});return s?.get("npmAuthIdent")||s?.get("npmAuthToken")?s:N1e(e,{configuration:t})||t}function d0t({configuration:e,version:t,publishTimes:r}){let s=e.get("npmMinimalAgeGate");if(s){let a=r?.[t];if(typeof a>"u"||(new Date().getTime()-new Date(a).getTime())/60/1e3g0t(t,r,s))}function Cw(e){return!d0t(e)||m0t(e)}var L1e=(a=>(a[a.NO_AUTH=0]="NO_AUTH",a[a.BEST_EFFORT=1]="BEST_EFFORT",a[a.CONFIGURATION=2]="CONFIGURATION",a[a.ALWAYS_AUTH=3]="ALWAYS_AUTH",a))(L1e||{});async function sd(e,{attemptedAs:t,registry:r,headers:s,configuration:a}){if(JF(e))throw new Lt(41,"Invalid OTP token");if(e.originalError?.name==="HTTPError"&&e.originalError?.response.statusCode===401)throw new Lt(41,`Invalid authentication (${typeof t!="string"?`as ${await k0t(r,s,{configuration:a})}`:`attempted as ${t}`})`)}function Vm(e,t){let r=e.response?.statusCode;return r?r===404?"Package not found":r>=500&&r<600?`The registry appears to be down (using a ${pe.applyHyperlink(t,"local cache","https://yarnpkg.com/advanced/lexicon#local-cache")} might have protected you against such outages)`:null:null}function WD(e){return e.scope?`/@${e.scope}%2f${e.name}`:`/${e.name}`}var M1e=new Map,y0t=new Map;async function E0t(e){return await Ge.getFactoryWithDefault(M1e,e,async()=>{let t=null;try{t=await le.readJsonPromise(e)}catch{}return t})}async function I0t(e,t,{configuration:r,cached:s,registry:a,headers:n,version:c,...f}){return await Ge.getFactoryWithDefault(y0t,e,async()=>await Jm(WD(t),{...f,customErrorMessage:Vm,configuration:r,registry:a,ident:t,headers:{...n,"If-None-Match":s?.etag,"If-Modified-Since":s?.lastModified},wrapNetworkRequest:async p=>async()=>{let h=await p();if(h.statusCode===304){if(s===null)throw new Error("Assertion failed: cachedMetadata should not be null");return{...h,body:s.metadata}}let E=w0t(JSON.parse(h.body.toString())),C={metadata:E,etag:h.headers.etag,lastModified:h.headers["last-modified"]};return M1e.set(e,Promise.resolve(C)),Promise.resolve().then(async()=>{let S=`${e}-${process.pid}.tmp`;await le.mkdirPromise(J.dirname(S),{recursive:!0}),await le.writeJsonPromise(S,C,{compact:!0}),await le.renamePromise(S,e)}).catch(()=>{}),{...h,body:E}}}))}function C0t(e){return e.scope!==null?`@${e.scope}-${e.name}-${e.scope.length}`:e.name}async function Bw(e,{cache:t,project:r,registry:s,headers:a,version:n,...c}){let{configuration:f}=r;s=YD(f,{ident:e,registry:s});let p=v0t(f,s),h=J.join(p,`${C0t(e)}.json`),E=null;if(!r.lockfileNeedsRefresh&&(E=await E0t(h),E)){if(typeof n<"u"&&typeof E.metadata.versions[n]<"u")return E.metadata;if(f.get("enableOfflineMode")){let C=structuredClone(E.metadata),S=new Set;if(t){for(let I of Object.keys(C.versions)){let T=j.makeLocator(e,`npm:${I}`),O=t.getLocatorMirrorPath(T);(!O||!le.existsSync(O))&&(delete C.versions[I],S.add(I))}let x=C["dist-tags"].latest;if(S.has(x)){let I=Object.keys(E.metadata.versions).sort(O1e.default.compare),T=I.indexOf(x);for(;S.has(I[T])&&T>=0;)T-=1;T>=0?C["dist-tags"].latest=I[T]:delete C["dist-tags"].latest}}return C}}return await I0t(h,e,{...c,configuration:f,cached:E,registry:s,headers:a,version:n})}var U1e=["name","dist.tarball","bin","scripts","os","cpu","libc","dependencies","dependenciesMeta","optionalDependencies","peerDependencies","peerDependenciesMeta","deprecated"];function w0t(e){return{"dist-tags":e["dist-tags"],versions:Object.fromEntries(Object.entries(e.versions).map(([t,r])=>[t,Vg(r,U1e)])),time:e.time}}var B0t=Ln.makeHash("time",...U1e).slice(0,6);function v0t(e,t){let r=S0t(e),s=new URL(t);return J.join(r,B0t,s.hostname)}function S0t(e){return J.join(e.get("globalFolder"),"metadata/npm")}async function Jm(e,{configuration:t,headers:r,ident:s,authType:a,allowOidc:n,registry:c,...f}){c=YD(t,{ident:s,registry:c}),s&&s.scope&&typeof a>"u"&&(a=1);let p=await VF(c,{authType:a,allowOidc:n,configuration:t,ident:s});p&&(r={...r,authorization:p});try{return await nn.get(e.charAt(0)==="/"?`${c}${e}`:e,{configuration:t,headers:r,...f})}catch(h){throw await sd(h,{registry:c,configuration:t,headers:r}),h}}async function D0t(e,t,{attemptedAs:r,configuration:s,headers:a,ident:n,authType:c=3,allowOidc:f,registry:p,otp:h,...E}){p=YD(s,{ident:n,registry:p});let C=await VF(p,{authType:c,allowOidc:f,configuration:s,ident:n});C&&(a={...a,authorization:C}),h&&(a={...a,...ww(h)});try{return await nn.post(p+e,t,{configuration:s,headers:a,...E})}catch(S){if(!JF(S)||h)throw await sd(S,{attemptedAs:r,registry:p,configuration:s,headers:a}),S;h=await iY(S,{configuration:s});let x={...a,...ww(h)};try{return await nn.post(`${p}${e}`,t,{configuration:s,headers:x,...E})}catch(I){throw await sd(I,{attemptedAs:r,registry:p,configuration:s,headers:a}),I}}}async function b0t(e,t,{attemptedAs:r,configuration:s,headers:a,ident:n,authType:c=3,allowOidc:f,registry:p,otp:h,...E}){p=YD(s,{ident:n,registry:p});let C=await VF(p,{authType:c,allowOidc:f,configuration:s,ident:n});C&&(a={...a,authorization:C}),h&&(a={...a,...ww(h)});try{return await nn.put(p+e,t,{configuration:s,headers:a,...E})}catch(S){if(!JF(S))throw await sd(S,{attemptedAs:r,registry:p,configuration:s,headers:a}),S;h=await iY(S,{configuration:s});let x={...a,...ww(h)};try{return await nn.put(`${p}${e}`,t,{configuration:s,headers:x,...E})}catch(I){throw await sd(I,{attemptedAs:r,registry:p,configuration:s,headers:a}),I}}}async function P0t(e,{attemptedAs:t,configuration:r,headers:s,ident:a,authType:n=3,allowOidc:c,registry:f,otp:p,...h}){f=YD(r,{ident:a,registry:f});let E=await VF(f,{authType:n,allowOidc:c,configuration:r,ident:a});E&&(s={...s,authorization:E}),p&&(s={...s,...ww(p)});try{return await nn.del(f+e,{configuration:r,headers:s,...h})}catch(C){if(!JF(C)||p)throw await sd(C,{attemptedAs:t,registry:f,configuration:r,headers:s}),C;p=await iY(C,{configuration:r});let S={...s,...ww(p)};try{return await nn.del(`${f}${e}`,{configuration:r,headers:S,...h})}catch(x){throw await sd(x,{attemptedAs:t,registry:f,configuration:r,headers:s}),x}}}function YD(e,{ident:t,registry:r}){if(typeof r>"u"&&t)return Iw(t.scope,{configuration:e});if(typeof r!="string")throw new Error("Assertion failed: The registry should be a string");return Vc(r)}async function VF(e,{authType:t=2,allowOidc:r=!1,configuration:s,ident:a}){let n=rY(e,{configuration:s,ident:a}),c=x0t(n,t);if(!c)return null;let f=await s.reduceHook(p=>p.getNpmAuthenticationHeader,void 0,e,{configuration:s,ident:a});if(f)return f;if(n.get("npmAuthToken"))return`Bearer ${n.get("npmAuthToken")}`;if(n.get("npmAuthIdent")){let p=n.get("npmAuthIdent");return p.includes(":")?`Basic ${Buffer.from(p).toString("base64")}`:`Basic ${p}`}if(r&&a){let p=await Q0t(e,{configuration:s,ident:a});if(p)return`Bearer ${p}`}if(c&&t!==1)throw new Lt(33,"No authentication configured for request");return null}function x0t(e,t){switch(t){case 2:return e.get("npmAlwaysAuth");case 1:case 3:return!0;case 0:return!1;default:throw new Error("Unreachable")}}async function k0t(e,t,{configuration:r}){if(typeof t>"u"||typeof t.authorization>"u")return"an anonymous user";try{return(await nn.get(new URL(`${e}/-/whoami`).href,{configuration:r,headers:t,jsonResponse:!0})).username??"an unknown user"}catch{return"an unknown user"}}async function iY(e,{configuration:t}){let r=e.originalError?.response.headers["npm-notice"];if(r&&(await Ot.start({configuration:t,stdout:process.stdout,includeFooter:!1},async a=>{if(a.reportInfo(0,r.replace(/(https?:\/\/\S+)/g,pe.pretty(t,"$1",pe.Type.URL))),!process.env.YARN_IS_TEST_ENV){let n=r.match(/open (https?:\/\/\S+)/i);if(n&&Ui.openUrl){let{openNow:c}=await(0,nY.prompt)({type:"confirm",name:"openNow",message:"Do you want to try to open this url now?",required:!0,initial:!0,onCancel:()=>process.exit(130)});c&&(await Ui.openUrl(n[1])||(a.reportSeparator(),a.reportWarning(0,"We failed to automatically open the url; you'll have to open it yourself in your browser of choice.")))}}}),process.stdout.write(` +`)),process.env.YARN_IS_TEST_ENV)return process.env.YARN_INJECT_NPM_2FA_TOKEN||"";let{otp:s}=await(0,nY.prompt)({type:"password",name:"otp",message:"One-time password:",required:!0,onCancel:()=>process.exit(130)});return process.stdout.write(` +`),s}function JF(e){if(e.originalError?.name!=="HTTPError")return!1;try{return(e.originalError?.response.headers["www-authenticate"].split(/,\s*/).map(r=>r.toLowerCase())).includes("otp")}catch{return!1}}function ww(e){return{"npm-otp":e}}async function Q0t(e,{configuration:t,ident:r}){let s=null;if(process.env.GITLAB_CI)s=process.env.NPM_ID_TOKEN||null;else if(process.env.CIRCLECI)s=process.env.NPM_ID_TOKEN||null;else if(process.env.GITHUB_ACTIONS){if(!(process.env.ACTIONS_ID_TOKEN_REQUEST_URL&&process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN))return null;let a=`npm:${new URL(e).host.replace("registry.yarnpkg.com","registry.npmjs.org").replace("yarn.npmjs.org","registry.npmjs.org")}`,n=new URL(process.env.ACTIONS_ID_TOKEN_REQUEST_URL);n.searchParams.append("audience",a),s=(await nn.get(n.href,{configuration:t,jsonResponse:!0,headers:{Authorization:`Bearer ${process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN}`}})).value}if(!s)return null;try{return(await nn.post(`${e}/-/npm/v1/oidc/token/exchange/package${WD(r)}`,null,{configuration:t,jsonResponse:!0,headers:{Authorization:`Bearer ${s}`}})).token||null}catch{}return null}var VD=class{supports(t,r){if(!t.reference.startsWith(ei))return!1;let{selector:s,params:a}=j.parseRange(t.reference);return!(!_1e.default.valid(s)||a===null||typeof a.__archiveUrl!="string")}getLocalPath(t,r){return null}async fetch(t,r){let s=r.checksums.get(t.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(t,s,{onHit:()=>r.report.reportCacheHit(t),onMiss:()=>r.report.reportCacheMiss(t,`${j.prettyLocator(r.project.configuration,t)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(t,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:j.getIdentVendorPath(t),checksum:c}}async fetchFromNetwork(t,r){let{params:s}=j.parseRange(t.reference);if(s===null||typeof s.__archiveUrl!="string")throw new Error("Assertion failed: The archiveUrl querystring parameter should have been available");let a=await Jm(s.__archiveUrl,{customErrorMessage:Vm,configuration:r.project.configuration,ident:t});return await gs.convertToZip(a,{configuration:r.project.configuration,prefixPath:j.getIdentVendorPath(t),stripComponents:1})}};qe();var JD=class{supportsDescriptor(t,r){return!(!t.range.startsWith(ei)||!j.tryParseDescriptor(t.range.slice(ei.length),!0))}supportsLocator(t,r){return!1}shouldPersistResolution(t,r){throw new Error("Unreachable")}bindDescriptor(t,r,s){return t}getResolutionDependencies(t,r){let s=r.project.configuration.normalizeDependency(j.parseDescriptor(t.range.slice(ei.length),!0));return r.resolver.getResolutionDependencies(s,r)}async getCandidates(t,r,s){let a=s.project.configuration.normalizeDependency(j.parseDescriptor(t.range.slice(ei.length),!0));return await s.resolver.getCandidates(a,r,s)}async getSatisfying(t,r,s,a){let n=a.project.configuration.normalizeDependency(j.parseDescriptor(t.range.slice(ei.length),!0));return a.resolver.getSatisfying(n,r,s,a)}resolve(t,r){throw new Error("Unreachable")}};qe();qe();var H1e=et(pi());var sh=class e{supports(t,r){if(!t.reference.startsWith(ei))return!1;let s=new URL(t.reference);return!(!H1e.default.valid(s.pathname)||s.searchParams.has("__archiveUrl"))}getLocalPath(t,r){return null}async fetch(t,r){let s=r.checksums.get(t.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(t,s,{onHit:()=>r.report.reportCacheHit(t),onMiss:()=>r.report.reportCacheMiss(t,`${j.prettyLocator(r.project.configuration,t)} can't be found in the cache and will be fetched from the remote registry`),loader:()=>this.fetchFromNetwork(t,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:j.getIdentVendorPath(t),checksum:c}}async fetchFromNetwork(t,r){let s;try{s=await Jm(e.getLocatorUrl(t),{customErrorMessage:Vm,configuration:r.project.configuration,ident:t})}catch{s=await Jm(e.getLocatorUrl(t).replace(/%2f/g,"/"),{customErrorMessage:Vm,configuration:r.project.configuration,ident:t})}return await gs.convertToZip(s,{configuration:r.project.configuration,prefixPath:j.getIdentVendorPath(t),stripComponents:1})}static isConventionalTarballUrl(t,r,{configuration:s}){let a=Iw(t.scope,{configuration:s}),n=e.getLocatorUrl(t);return r=r.replace(/^https?:(\/\/(?:[^/]+\.)?npmjs.org(?:$|\/))/,"https:$1"),a=a.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"),r=r.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"),r===a+n||r===a+n.replace(/%2f/g,"/")}static getLocatorUrl(t){let r=kr.clean(t.reference.slice(ei.length));if(r===null)throw new Lt(10,"The npm semver resolver got selected, but the version isn't semver");return`${WD(t)}/-/${t.name}-${r}.tgz`}};qe();qe();qe();var sY=et(pi());var KF=j.makeIdent(null,"node-gyp"),R0t=/\b(node-gyp|prebuild-install)\b/,KD=class{supportsDescriptor(t,r){return t.range.startsWith(ei)?!!kr.validRange(t.range.slice(ei.length)):!1}supportsLocator(t,r){if(!t.reference.startsWith(ei))return!1;let{selector:s}=j.parseRange(t.reference);return!!sY.default.valid(s)}shouldPersistResolution(t,r){return!0}bindDescriptor(t,r,s){return t}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){let a=kr.validRange(t.range.slice(ei.length));if(a===null)throw new Error(`Expected a valid range, got ${t.range.slice(ei.length)}`);let n=await Bw(t,{cache:s.fetchOptions?.cache,project:s.project,version:sY.default.valid(a.raw)?a.raw:void 0}),c=Ge.mapAndFilter(Object.keys(n.versions),E=>{try{let C=new kr.SemVer(E);if(a.test(C))return C}catch{}return Ge.mapAndFilter.skip}),f=c.filter(E=>Cw({configuration:s.project.configuration,ident:t,version:E.raw,publishTimes:n.time}));if(c.length>0&&f.length===0)throw new Lt(16,`All versions satisfying "${t.range.slice(ei.length)}" are quarantined`);let p=f.filter(E=>!n.versions[E.raw].deprecated),h=p.length>0?p:f;return h.sort((E,C)=>-E.compare(C)),h.map(E=>{let C=j.makeLocator(t,`${ei}${E.raw}`),S=n.versions[E.raw].dist.tarball;return sh.isConventionalTarballUrl(C,S,{configuration:s.project.configuration})?C:j.bindLocator(C,{__archiveUrl:S})})}async getSatisfying(t,r,s,a){let n=kr.validRange(t.range.slice(ei.length));if(n===null)throw new Error(`Expected a valid range, got ${t.range.slice(ei.length)}`);return{locators:Ge.mapAndFilter(s,p=>{if(p.identHash!==t.identHash)return Ge.mapAndFilter.skip;let h=j.tryParseRange(p.reference,{requireProtocol:ei});if(!h)return Ge.mapAndFilter.skip;let E=new kr.SemVer(h.selector);return n.test(E)?{locator:p,version:E}:Ge.mapAndFilter.skip}).sort((p,h)=>-p.version.compare(h.version)).map(({locator:p})=>p),sorted:!0}}async resolve(t,r){let{selector:s}=j.parseRange(t.reference),a=kr.clean(s);if(a===null)throw new Lt(10,"The npm semver resolver got selected, but the version isn't semver");let n=await Bw(t,{cache:r.fetchOptions?.cache,project:r.project,version:a});if(!Object.hasOwn(n,"versions"))throw new Lt(15,'Registry returned invalid data for - missing "versions" field');if(!Object.hasOwn(n.versions,a))throw new Lt(16,`Registry failed to return reference "${a}"`);let c=new _t;if(c.load(n.versions[a]),!c.dependencies.has(KF.identHash)&&!c.peerDependencies.has(KF.identHash)){for(let f of c.scripts.values())if(f.match(R0t)){c.dependencies.set(KF.identHash,j.makeDescriptor(KF,"latest"));break}}return{...t,version:a,languageName:"node",linkType:"HARD",conditions:c.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(c.dependencies),peerDependencies:c.peerDependencies,dependenciesMeta:c.dependenciesMeta,peerDependenciesMeta:c.peerDependenciesMeta,bin:c.bin}}};qe();qe();var zF=et(pi());var zD=class{supportsDescriptor(t,r){return!(!t.range.startsWith(ei)||!_p.test(t.range.slice(ei.length)))}supportsLocator(t,r){return!1}shouldPersistResolution(t,r){throw new Error("Unreachable")}bindDescriptor(t,r,s){return t}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){let a=t.range.slice(ei.length),n=await Bw(t,{cache:s.fetchOptions?.cache,project:s.project});if(!Object.hasOwn(n,"dist-tags"))throw new Lt(15,'Registry returned invalid data - missing "dist-tags" field');let c=n["dist-tags"];if(!Object.hasOwn(c,a))throw new Lt(16,`Registry failed to return tag "${a}"`);let f=Object.keys(n.versions),p=n.time,h=c[a];if(a==="latest"&&!Cw({configuration:s.project.configuration,ident:t,version:h,publishTimes:p})){let S=h.includes("-"),x=zF.default.rsort(f).find(I=>zF.default.lt(I,h)&&(S||!I.includes("-"))&&Cw({configuration:s.project.configuration,ident:t,version:I,publishTimes:p}));if(!x)throw new Lt(16,`The version for tag "${a}" is quarantined, and no lower version is available`);h=x}let E=j.makeLocator(t,`${ei}${h}`),C=n.versions[h].dist.tarball;return sh.isConventionalTarballUrl(E,C,{configuration:s.project.configuration})?[E]:[j.bindLocator(E,{__archiveUrl:C})]}async getSatisfying(t,r,s,a){let n=[];for(let c of s){if(c.identHash!==t.identHash)continue;let f=j.tryParseRange(c.reference,{requireProtocol:ei});if(!(!f||!zF.default.valid(f.selector))){if(f.params?.__archiveUrl){let p=j.makeRange({protocol:ei,selector:f.selector,source:null,params:null}),[h]=await a.resolver.getCandidates(j.makeDescriptor(t,p),r,a);if(c.reference!==h.reference)continue}n.push(c)}}return{locators:n,sorted:!1}}async resolve(t,r){throw new Error("Unreachable")}};var g1={};Vt(g1,{getGitHead:()=>Bvt,getPublishAccess:()=>Qbe,getReadmeContent:()=>Rbe,makePublishBody:()=>wvt});qe();qe();Dt();var VY={};Vt(VY,{PackCommand:()=>Fw,default:()=>fmt,packUtils:()=>IA});qe();qe();qe();Dt();Yt();var IA={};Vt(IA,{genPackList:()=>EN,genPackStream:()=>YY,genPackageManifest:()=>yBe,hasPackScripts:()=>qY,prepareForPack:()=>WY});qe();Dt();var GY=et(zo()),gBe=et(ABe()),mBe=Ie("zlib"),emt=["/package.json","/readme","/readme.*","/license","/license.*","/licence","/licence.*","/changelog","/changelog.*"],tmt=["/package.tgz",".github",".git",".hg","node_modules",".npmignore",".gitignore",".#*",".DS_Store"];async function qY(e){return!!(Cn.hasWorkspaceScript(e,"prepack")||Cn.hasWorkspaceScript(e,"postpack"))}async function WY(e,{report:t},r){await Cn.maybeExecuteWorkspaceLifecycleScript(e,"prepack",{report:t});try{let s=J.join(e.cwd,_t.fileName);await le.existsPromise(s)&&await e.manifest.loadFile(s,{baseFs:le}),await r()}finally{await Cn.maybeExecuteWorkspaceLifecycleScript(e,"postpack",{report:t})}}async function YY(e,t){typeof t>"u"&&(t=await EN(e));let r=new Set;for(let n of e.manifest.publishConfig?.executableFiles??new Set)r.add(J.normalize(n));for(let n of e.manifest.bin.values())r.add(J.normalize(n));let s=gBe.default.pack();process.nextTick(async()=>{for(let n of t){let c=J.normalize(n),f=J.resolve(e.cwd,c),p=J.join("package",c),h=await le.lstatPromise(f),E={name:p,mtime:new Date(Ai.SAFE_TIME*1e3)},C=r.has(c)?493:420,S,x,I=new Promise((O,U)=>{S=O,x=U}),T=O=>{O?x(O):S()};if(h.isFile()){let O;c==="package.json"?O=Buffer.from(JSON.stringify(await yBe(e),null,2)):O=await le.readFilePromise(f),s.entry({...E,mode:C,type:"file"},O,T)}else h.isSymbolicLink()?s.entry({...E,mode:C,type:"symlink",linkname:await le.readlinkPromise(f)},T):T(new Error(`Unsupported file type ${h.mode} for ${fe.fromPortablePath(c)}`));await I}s.finalize()});let a=(0,mBe.createGzip)();return s.pipe(a),a}async function yBe(e){let t=JSON.parse(JSON.stringify(e.manifest.raw));return await e.project.configuration.triggerHook(r=>r.beforeWorkspacePacking,e,t),t}async function EN(e){let t=e.project,r=t.configuration,s={accept:[],reject:[]};for(let C of tmt)s.reject.push(C);for(let C of emt)s.accept.push(C);s.reject.push(r.get("rcFilename"));let a=C=>{if(C===null||!C.startsWith(`${e.cwd}/`))return;let S=J.relative(e.cwd,C),x=J.resolve(vt.root,S);s.reject.push(x)};a(J.resolve(t.cwd,Er.lockfile)),a(r.get("cacheFolder")),a(r.get("globalFolder")),a(r.get("installStatePath")),a(r.get("virtualFolder")),a(r.get("yarnPath")),await r.triggerHook(C=>C.populateYarnPaths,t,C=>{a(C)});for(let C of t.workspaces){let S=J.relative(e.cwd,C.cwd);S!==""&&!S.match(/^(\.\.)?\//)&&s.reject.push(`/${S}`)}let n={accept:[],reject:[]},c=e.manifest.publishConfig?.main??e.manifest.main,f=e.manifest.publishConfig?.module??e.manifest.module,p=e.manifest.publishConfig?.browser??e.manifest.browser,h=e.manifest.publishConfig?.bin??e.manifest.bin;c!=null&&n.accept.push(J.resolve(vt.root,c)),f!=null&&n.accept.push(J.resolve(vt.root,f)),typeof p=="string"&&n.accept.push(J.resolve(vt.root,p));for(let C of h.values())n.accept.push(J.resolve(vt.root,C));if(p instanceof Map)for(let[C,S]of p.entries())n.accept.push(J.resolve(vt.root,C)),typeof S=="string"&&n.accept.push(J.resolve(vt.root,S));let E=e.manifest.files!==null;if(E){n.reject.push("/*");for(let C of e.manifest.files)EBe(n.accept,C,{cwd:vt.root})}return await rmt(e.cwd,{hasExplicitFileList:E,globalList:s,ignoreList:n})}async function rmt(e,{hasExplicitFileList:t,globalList:r,ignoreList:s}){let a=[],n=new qf(e),c=[[vt.root,[s]]];for(;c.length>0;){let[f,p]=c.pop(),h=await n.lstatPromise(f);if(!hBe(f,{globalList:r,ignoreLists:h.isDirectory()?null:p}))if(h.isDirectory()){let E=await n.readdirPromise(f),C=!1,S=!1;if(!t||f!==vt.root)for(let T of E)C=C||T===".gitignore",S=S||T===".npmignore";let x=S?await pBe(n,f,".npmignore"):C?await pBe(n,f,".gitignore"):null,I=x!==null?[x].concat(p):p;hBe(f,{globalList:r,ignoreLists:p})&&(I=[...p,{accept:[],reject:["**/*"]}]);for(let T of E)c.push([J.resolve(f,T),I])}else(h.isFile()||h.isSymbolicLink())&&a.push(J.relative(vt.root,f))}return a.sort()}async function pBe(e,t,r){let s={accept:[],reject:[]},a=await e.readFilePromise(J.join(t,r),"utf8");for(let n of a.split(/\n/g))EBe(s.reject,n,{cwd:t});return s}function nmt(e,{cwd:t}){let r=e[0]==="!";return r&&(e=e.slice(1)),e.match(/\.{0,1}\//)&&(e=J.resolve(t,e)),r&&(e=`!${e}`),e}function EBe(e,t,{cwd:r}){let s=t.trim();s===""||s[0]==="#"||e.push(nmt(s,{cwd:r}))}function hBe(e,{globalList:t,ignoreLists:r}){let s=yN(e,t.accept);if(s!==0)return s===2;let a=yN(e,t.reject);if(a!==0)return a===1;if(r!==null)for(let n of r){let c=yN(e,n.accept);if(c!==0)return c===2;let f=yN(e,n.reject);if(f!==0)return f===1}return!1}function yN(e,t){let r=t,s=[];for(let a=0;a{await WY(a,{report:p},async()=>{p.reportJson({base:fe.fromPortablePath(a.cwd)});let h=await EN(a);for(let E of h)p.reportInfo(null,fe.fromPortablePath(E)),p.reportJson({location:fe.fromPortablePath(E)});if(!this.dryRun){let E=await YY(a,h);await le.mkdirPromise(J.dirname(c),{recursive:!0});let C=le.createWriteStream(c);E.pipe(C),await new Promise(S=>{C.on("finish",S)})}}),this.dryRun||(p.reportInfo(0,`Package archive generated in ${pe.pretty(r,c,pe.Type.PATH)}`),p.reportJson({output:fe.fromPortablePath(c)}))})).exitCode()}};function imt(e,{workspace:t}){let r=e.replace("%s",smt(t)).replace("%v",omt(t));return fe.toPortablePath(r)}function smt(e){return e.manifest.name!==null?j.slugifyIdent(e.manifest.name):"package"}function omt(e){return e.manifest.version!==null?e.manifest.version:"unknown"}var amt=["dependencies","devDependencies","peerDependencies"],lmt="workspace:",cmt=(e,t)=>{t.publishConfig&&(t.publishConfig.type&&(t.type=t.publishConfig.type),t.publishConfig.main&&(t.main=t.publishConfig.main),t.publishConfig.browser&&(t.browser=t.publishConfig.browser),t.publishConfig.module&&(t.module=t.publishConfig.module),t.publishConfig.exports&&(t.exports=t.publishConfig.exports),t.publishConfig.imports&&(t.imports=t.publishConfig.imports),t.publishConfig.bin&&(t.bin=t.publishConfig.bin));let r=e.project;for(let s of amt)for(let a of e.manifest.getForScope(s).values()){let n=r.tryWorkspaceByDescriptor(a),c=j.parseRange(a.range);if(c.protocol===lmt)if(n===null){if(r.tryWorkspaceByIdent(a)===null)throw new Lt(21,`${j.prettyDescriptor(r.configuration,a)}: No local workspace found for this range`)}else{let f;j.areDescriptorsEqual(a,n.anchoredDescriptor)||c.selector==="*"?f=n.manifest.version??"0.0.0":c.selector==="~"||c.selector==="^"?f=`${c.selector}${n.manifest.version??"0.0.0"}`:f=c.selector;let p=s==="dependencies"?j.makeDescriptor(a,"unknown"):null,h=p!==null&&e.manifest.ensureDependencyMeta(p).optional?"optionalDependencies":s;t[h][j.stringifyIdent(a)]=f}}},umt={hooks:{beforeWorkspacePacking:cmt},commands:[Fw]},fmt=umt;var kbe=et(PBe());qe();var Pbe=et(bbe()),{env:Bt}=process,pvt="application/vnd.in-toto+json",hvt="https://in-toto.io/Statement/v0.1",dvt="https://in-toto.io/Statement/v1",gvt="https://slsa.dev/provenance/v0.2",mvt="https://slsa.dev/provenance/v1",yvt="https://github.com/actions/runner",Evt="https://slsa-framework.github.io/github-actions-buildtypes/workflow/v1",Ivt="https://github.com/npm/cli/gitlab",Cvt="v0alpha1",xbe=async(e,t)=>{let r;if(Bt.GITHUB_ACTIONS){if(!Bt.ACTIONS_ID_TOKEN_REQUEST_URL)throw new Lt(91,'Provenance generation in GitHub Actions requires "write" access to the "id-token" permission');let s=(Bt.GITHUB_WORKFLOW_REF||"").replace(`${Bt.GITHUB_REPOSITORY}/`,""),a=s.indexOf("@"),n=s.slice(0,a),c=s.slice(a+1);r={_type:dvt,subject:e,predicateType:mvt,predicate:{buildDefinition:{buildType:Evt,externalParameters:{workflow:{ref:c,repository:`${Bt.GITHUB_SERVER_URL}/${Bt.GITHUB_REPOSITORY}`,path:n}},internalParameters:{github:{event_name:Bt.GITHUB_EVENT_NAME,repository_id:Bt.GITHUB_REPOSITORY_ID,repository_owner_id:Bt.GITHUB_REPOSITORY_OWNER_ID}},resolvedDependencies:[{uri:`git+${Bt.GITHUB_SERVER_URL}/${Bt.GITHUB_REPOSITORY}@${Bt.GITHUB_REF}`,digest:{gitCommit:Bt.GITHUB_SHA}}]},runDetails:{builder:{id:`${yvt}/${Bt.RUNNER_ENVIRONMENT}`},metadata:{invocationId:`${Bt.GITHUB_SERVER_URL}/${Bt.GITHUB_REPOSITORY}/actions/runs/${Bt.GITHUB_RUN_ID}/attempts/${Bt.GITHUB_RUN_ATTEMPT}`}}}}}else if(Bt.GITLAB_CI){if(!Bt.SIGSTORE_ID_TOKEN)throw new Lt(91,`Provenance generation in GitLab CI requires "SIGSTORE_ID_TOKEN" with "sigstore" audience to be present in "id_tokens". For more info see: +https://docs.gitlab.com/ee/ci/secrets/id_token_authentication.html`);r={_type:hvt,subject:e,predicateType:gvt,predicate:{buildType:`${Ivt}/${Cvt}`,builder:{id:`${Bt.CI_PROJECT_URL}/-/runners/${Bt.CI_RUNNER_ID}`},invocation:{configSource:{uri:`git+${Bt.CI_PROJECT_URL}`,digest:{sha1:Bt.CI_COMMIT_SHA},entryPoint:Bt.CI_JOB_NAME},parameters:{CI:Bt.CI,CI_API_GRAPHQL_URL:Bt.CI_API_GRAPHQL_URL,CI_API_V4_URL:Bt.CI_API_V4_URL,CI_BUILD_BEFORE_SHA:Bt.CI_BUILD_BEFORE_SHA,CI_BUILD_ID:Bt.CI_BUILD_ID,CI_BUILD_NAME:Bt.CI_BUILD_NAME,CI_BUILD_REF:Bt.CI_BUILD_REF,CI_BUILD_REF_NAME:Bt.CI_BUILD_REF_NAME,CI_BUILD_REF_SLUG:Bt.CI_BUILD_REF_SLUG,CI_BUILD_STAGE:Bt.CI_BUILD_STAGE,CI_COMMIT_BEFORE_SHA:Bt.CI_COMMIT_BEFORE_SHA,CI_COMMIT_BRANCH:Bt.CI_COMMIT_BRANCH,CI_COMMIT_REF_NAME:Bt.CI_COMMIT_REF_NAME,CI_COMMIT_REF_PROTECTED:Bt.CI_COMMIT_REF_PROTECTED,CI_COMMIT_REF_SLUG:Bt.CI_COMMIT_REF_SLUG,CI_COMMIT_SHA:Bt.CI_COMMIT_SHA,CI_COMMIT_SHORT_SHA:Bt.CI_COMMIT_SHORT_SHA,CI_COMMIT_TIMESTAMP:Bt.CI_COMMIT_TIMESTAMP,CI_COMMIT_TITLE:Bt.CI_COMMIT_TITLE,CI_CONFIG_PATH:Bt.CI_CONFIG_PATH,CI_DEFAULT_BRANCH:Bt.CI_DEFAULT_BRANCH,CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX:Bt.CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX,CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX:Bt.CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX,CI_DEPENDENCY_PROXY_SERVER:Bt.CI_DEPENDENCY_PROXY_SERVER,CI_DEPENDENCY_PROXY_USER:Bt.CI_DEPENDENCY_PROXY_USER,CI_JOB_ID:Bt.CI_JOB_ID,CI_JOB_NAME:Bt.CI_JOB_NAME,CI_JOB_NAME_SLUG:Bt.CI_JOB_NAME_SLUG,CI_JOB_STAGE:Bt.CI_JOB_STAGE,CI_JOB_STARTED_AT:Bt.CI_JOB_STARTED_AT,CI_JOB_URL:Bt.CI_JOB_URL,CI_NODE_TOTAL:Bt.CI_NODE_TOTAL,CI_PAGES_DOMAIN:Bt.CI_PAGES_DOMAIN,CI_PAGES_URL:Bt.CI_PAGES_URL,CI_PIPELINE_CREATED_AT:Bt.CI_PIPELINE_CREATED_AT,CI_PIPELINE_ID:Bt.CI_PIPELINE_ID,CI_PIPELINE_IID:Bt.CI_PIPELINE_IID,CI_PIPELINE_SOURCE:Bt.CI_PIPELINE_SOURCE,CI_PIPELINE_URL:Bt.CI_PIPELINE_URL,CI_PROJECT_CLASSIFICATION_LABEL:Bt.CI_PROJECT_CLASSIFICATION_LABEL,CI_PROJECT_DESCRIPTION:Bt.CI_PROJECT_DESCRIPTION,CI_PROJECT_ID:Bt.CI_PROJECT_ID,CI_PROJECT_NAME:Bt.CI_PROJECT_NAME,CI_PROJECT_NAMESPACE:Bt.CI_PROJECT_NAMESPACE,CI_PROJECT_NAMESPACE_ID:Bt.CI_PROJECT_NAMESPACE_ID,CI_PROJECT_PATH:Bt.CI_PROJECT_PATH,CI_PROJECT_PATH_SLUG:Bt.CI_PROJECT_PATH_SLUG,CI_PROJECT_REPOSITORY_LANGUAGES:Bt.CI_PROJECT_REPOSITORY_LANGUAGES,CI_PROJECT_ROOT_NAMESPACE:Bt.CI_PROJECT_ROOT_NAMESPACE,CI_PROJECT_TITLE:Bt.CI_PROJECT_TITLE,CI_PROJECT_URL:Bt.CI_PROJECT_URL,CI_PROJECT_VISIBILITY:Bt.CI_PROJECT_VISIBILITY,CI_REGISTRY:Bt.CI_REGISTRY,CI_REGISTRY_IMAGE:Bt.CI_REGISTRY_IMAGE,CI_REGISTRY_USER:Bt.CI_REGISTRY_USER,CI_RUNNER_DESCRIPTION:Bt.CI_RUNNER_DESCRIPTION,CI_RUNNER_ID:Bt.CI_RUNNER_ID,CI_RUNNER_TAGS:Bt.CI_RUNNER_TAGS,CI_SERVER_HOST:Bt.CI_SERVER_HOST,CI_SERVER_NAME:Bt.CI_SERVER_NAME,CI_SERVER_PORT:Bt.CI_SERVER_PORT,CI_SERVER_PROTOCOL:Bt.CI_SERVER_PROTOCOL,CI_SERVER_REVISION:Bt.CI_SERVER_REVISION,CI_SERVER_SHELL_SSH_HOST:Bt.CI_SERVER_SHELL_SSH_HOST,CI_SERVER_SHELL_SSH_PORT:Bt.CI_SERVER_SHELL_SSH_PORT,CI_SERVER_URL:Bt.CI_SERVER_URL,CI_SERVER_VERSION:Bt.CI_SERVER_VERSION,CI_SERVER_VERSION_MAJOR:Bt.CI_SERVER_VERSION_MAJOR,CI_SERVER_VERSION_MINOR:Bt.CI_SERVER_VERSION_MINOR,CI_SERVER_VERSION_PATCH:Bt.CI_SERVER_VERSION_PATCH,CI_TEMPLATE_REGISTRY_HOST:Bt.CI_TEMPLATE_REGISTRY_HOST,GITLAB_CI:Bt.GITLAB_CI,GITLAB_FEATURES:Bt.GITLAB_FEATURES,GITLAB_USER_ID:Bt.GITLAB_USER_ID,GITLAB_USER_LOGIN:Bt.GITLAB_USER_LOGIN,RUNNER_GENERATE_ARTIFACTS_METADATA:Bt.RUNNER_GENERATE_ARTIFACTS_METADATA},environment:{name:Bt.CI_RUNNER_DESCRIPTION,architecture:Bt.CI_RUNNER_EXECUTABLE_ARCH,server:Bt.CI_SERVER_URL,project:Bt.CI_PROJECT_PATH,job:{id:Bt.CI_JOB_ID},pipeline:{id:Bt.CI_PIPELINE_ID,ref:Bt.CI_CONFIG_PATH}}},metadata:{buildInvocationId:`${Bt.CI_JOB_URL}`,completeness:{parameters:!0,environment:!0,materials:!1},reproducible:!1},materials:[{uri:`git+${Bt.CI_PROJECT_URL}`,digest:{sha1:Bt.CI_COMMIT_SHA}}]}}}else throw new Lt(91,"Provenance generation is only supported in GitHub Actions and GitLab CI");return Pbe.attest(Buffer.from(JSON.stringify(r)),pvt,t)};async function wvt(e,t,{access:r,tag:s,registry:a,gitHead:n,provenance:c}){let f=e.manifest.name,p=e.manifest.version,h=j.stringifyIdent(f),E=kbe.default.fromData(t,{algorithms:["sha1","sha512"]}),C=r??Qbe(e,f),S=await Rbe(e),x=await IA.genPackageManifest(e),I=`${h}-${p}.tgz`,T=new URL(`${Vc(a)}/${h}/-/${I}`),O={[I]:{content_type:"application/octet-stream",data:t.toString("base64"),length:t.length}};if(c){let U={name:`pkg:npm/${h.replace(/^@/,"%40")}@${p}`,digest:{sha512:E.sha512[0].hexDigest()}},V=await xbe([U]),te=JSON.stringify(V);O[`${h}-${p}.sigstore`]={content_type:V.mediaType,data:te,length:te.length}}return{_id:h,_attachments:O,name:h,access:C,"dist-tags":{[s]:p},versions:{[p]:{...x,_id:`${h}@${p}`,name:h,version:p,gitHead:n,dist:{shasum:E.sha1[0].hexDigest(),integrity:E.sha512[0].toString(),tarball:T.toString()}}},readme:S}}async function Bvt(e){try{let{stdout:t}=await qr.execvp("git",["rev-parse","--revs-only","HEAD"],{cwd:e});return t.trim()===""?void 0:t.trim()}catch{return}}function Qbe(e,t){let r=e.project.configuration;return e.manifest.publishConfig&&typeof e.manifest.publishConfig.access=="string"?e.manifest.publishConfig.access:r.get("npmPublishAccess")!==null?r.get("npmPublishAccess"):t.scope?"restricted":"public"}async function Rbe(e){let t=fe.toPortablePath(`${e.cwd}/README.md`),r=e.manifest.name,a=`# ${j.stringifyIdent(r)} +`;try{a=await le.readFilePromise(t,"utf8")}catch(n){if(n.code==="ENOENT")return a;throw n}return a}var $J={npmAlwaysAuth:{description:"URL of the selected npm registry (note: npm enterprise isn't supported)",type:"BOOLEAN",default:!1},npmAuthIdent:{description:"Authentication identity for the npm registry (_auth in npm and yarn v1)",type:"SECRET",default:null},npmAuthToken:{description:"Authentication token for the npm registry (_authToken in npm and yarn v1)",type:"SECRET",default:null}},Tbe={npmAuditRegistry:{description:"Registry to query for audit reports",type:"STRING",default:null},npmPublishRegistry:{description:"Registry to push packages to",type:"STRING",default:null},npmRegistryServer:{description:"URL of the selected npm registry (note: npm enterprise isn't supported)",type:"STRING",default:"https://registry.yarnpkg.com"}},vvt={npmMinimalAgeGate:{description:"Minimum age of a package version according to the publish date on the npm registry to be considered for installation",type:"DURATION",unit:"m",default:"0m"},npmPreapprovedPackages:{description:"Array of package descriptors or package name glob patterns to exclude from the minimum release age check",type:"STRING",isArray:!0,default:[]}},Svt={configuration:{...$J,...Tbe,...vvt,npmScopes:{description:"Settings per package scope",type:"MAP",valueDefinition:{description:"",type:"SHAPE",properties:{...$J,...Tbe}}},npmRegistries:{description:"Settings per registry",type:"MAP",normalizeKeys:Vc,valueDefinition:{description:"",type:"SHAPE",properties:{...$J}}}},fetchers:[VD,sh],resolvers:[JD,KD,zD]},Dvt=Svt;var uK={};Vt(uK,{NpmAuditCommand:()=>y1,NpmInfoCommand:()=>E1,NpmLoginCommand:()=>I1,NpmLogoutCommand:()=>w1,NpmPublishCommand:()=>B1,NpmTagAddCommand:()=>S1,NpmTagListCommand:()=>v1,NpmTagRemoveCommand:()=>D1,NpmWhoamiCommand:()=>b1,default:()=>Mvt,npmAuditTypes:()=>zb,npmAuditUtils:()=>hL});qe();qe();Yt();var sK=et(zo());Al();var zb={};Vt(zb,{Environment:()=>Jb,Severity:()=>Kb});var Jb=(s=>(s.All="all",s.Production="production",s.Development="development",s))(Jb||{}),Kb=(n=>(n.Info="info",n.Low="low",n.Moderate="moderate",n.High="high",n.Critical="critical",n))(Kb||{});var hL={};Vt(hL,{allSeverities:()=>m1,getPackages:()=>iK,getReportTree:()=>rK,getSeverityInclusions:()=>tK,getTopLevelDependencies:()=>nK});qe();var Fbe=et(pi());var m1=["info","low","moderate","high","critical"];function tK(e){if(typeof e>"u")return new Set(m1);let t=m1.indexOf(e),r=m1.slice(t);return new Set(r)}function rK(e){let t={},r={children:t};for(let[s,a]of Ge.sortMap(Object.entries(e),n=>n[0]))for(let n of Ge.sortMap(a,c=>`${c.id}`))t[`${s}/${n.id}`]={value:pe.tuple(pe.Type.IDENT,j.parseIdent(s)),children:{ID:typeof n.id<"u"&&{label:"ID",value:pe.tuple(pe.Type.ID,n.id)},Issue:{label:"Issue",value:pe.tuple(pe.Type.NO_HINT,n.title)},URL:typeof n.url<"u"&&{label:"URL",value:pe.tuple(pe.Type.URL,n.url)},Severity:{label:"Severity",value:pe.tuple(pe.Type.NO_HINT,n.severity)},"Vulnerable Versions":{label:"Vulnerable Versions",value:pe.tuple(pe.Type.RANGE,n.vulnerable_versions)},"Tree Versions":{label:"Tree Versions",children:[...n.versions].sort(Fbe.default.compare).map(c=>({value:pe.tuple(pe.Type.REFERENCE,c)}))},Dependents:{label:"Dependents",children:Ge.sortMap(n.dependents,c=>j.stringifyLocator(c)).map(c=>({value:pe.tuple(pe.Type.LOCATOR,c)}))}}};return r}function nK(e,t,{all:r,environment:s}){let a=[],n=r?e.workspaces:[t],c=["all","production"].includes(s),f=["all","development"].includes(s);for(let p of n)for(let h of p.anchoredPackage.dependencies.values())(p.manifest.devDependencies.has(h.identHash)?!f:!c)||a.push({workspace:p,dependency:h});return a}function iK(e,t,{recursive:r}){let s=new Map,a=new Set,n=[],c=e.configuration.makeResolver(),f={project:e,resolver:c},p=(h,E)=>{let C=e.storedResolutions.get(E.descriptorHash);if(typeof C>"u")throw new Error("Assertion failed: The resolution should have been registered");if(!a.has(C))a.add(C);else return;let S=e.storedPackages.get(C);if(typeof S>"u")throw new Error("Assertion failed: The package should have been registered");let x=j.ensureDevirtualizedDescriptor(E);if(c.supportsDescriptor(x,f)){let T=c.getResolutionDependencies(x,f);if(Object.keys(T).length>0)for(let O of Object.values(T))p(h,O)}if(j.ensureDevirtualizedLocator(S).reference.startsWith("npm:")&&S.version!==null){let T=j.stringifyIdent(S),O=Ge.getMapWithDefault(s,T);Ge.getArrayWithDefault(O,S.version).push(h)}if(r)for(let T of S.dependencies.values())n.push([S,T])};for(let{workspace:h,dependency:E}of t)n.push([h.anchoredLocator,E]);for(;n.length>0;){let[h,E]=n.shift();p(h,E)}return s}var y1=class extends At{constructor(){super(...arguments);this.all=he.Boolean("-A,--all",!1,{description:"Audit dependencies from all workspaces"});this.recursive=he.Boolean("-R,--recursive",!1,{description:"Audit transitive dependencies as well"});this.environment=he.String("--environment","all",{description:"Which environments to cover",validator:ks(Jb)});this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.noDeprecations=he.Boolean("--no-deprecations",!1,{description:"Don't warn about deprecated packages"});this.severity=he.String("--severity","info",{description:"Minimal severity requested for packages to be displayed",validator:ks(Kb)});this.excludes=he.Array("--exclude",[],{description:"Array of glob patterns of packages to exclude from audit"});this.ignores=he.Array("--ignore",[],{description:"Array of glob patterns of advisory ID's to ignore in the audit report"})}static{this.paths=[["npm","audit"]]}static{this.usage=at.Usage({description:"perform a vulnerability audit against the installed packages",details:` + This command checks for known security reports on the packages you use. The reports are by default extracted from the npm registry, and may or may not be relevant to your actual program (not all vulnerabilities affect all code paths). + + For consistency with our other commands the default is to only check the direct dependencies for the active workspace. To extend this search to all workspaces, use \`-A,--all\`. To extend this search to both direct and transitive dependencies, use \`-R,--recursive\`. + + Applying the \`--severity\` flag will limit the audit table to vulnerabilities of the corresponding severity and above. Valid values are ${m1.map(r=>`\`${r}\``).join(", ")}. + + If the \`--json\` flag is set, Yarn will print the output exactly as received from the registry. Regardless of this flag, the process will exit with a non-zero exit code if a report is found for the selected packages. + + If certain packages produce false positives for a particular environment, the \`--exclude\` flag can be used to exclude any number of packages from the audit. This can also be set in the configuration file with the \`npmAuditExcludePackages\` option. + + If particular advisories are needed to be ignored, the \`--ignore\` flag can be used with Advisory ID's to ignore any number of advisories in the audit report. This can also be set in the configuration file with the \`npmAuditIgnoreAdvisories\` option. + + To understand the dependency tree requiring vulnerable packages, check the raw report with the \`--json\` flag or use \`yarn why package\` to get more information as to who depends on them. + `,examples:[["Checks for known security issues with the installed packages. The output is a list of known issues.","yarn npm audit"],["Audit dependencies in all workspaces","yarn npm audit --all"],["Limit auditing to `dependencies` (excludes `devDependencies`)","yarn npm audit --environment production"],["Show audit report as valid JSON","yarn npm audit --json"],["Audit all direct and transitive dependencies","yarn npm audit --recursive"],["Output moderate (or more severe) vulnerabilities","yarn npm audit --severity moderate"],["Exclude certain packages","yarn npm audit --exclude package1 --exclude package2"],["Ignore specific advisories","yarn npm audit --ignore 1234567 --ignore 7654321"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let n=nK(s,a,{all:this.all,environment:this.environment}),c=iK(s,n,{recursive:this.recursive}),f=Array.from(new Set([...r.get("npmAuditExcludePackages"),...this.excludes])),p=Object.create(null);for(let[O,U]of c)f.some(V=>sK.default.isMatch(O,V))||(p[O]=[...U.keys()]);let h=di.getAuditRegistry({configuration:r}),E,C=await uA.start({configuration:r,stdout:this.context.stdout},async()=>{let O=en.post("/-/npm/v1/security/advisories/bulk",p,{authType:en.AuthType.BEST_EFFORT,configuration:r,jsonResponse:!0,registry:h}),U=this.noDeprecations?[]:await Promise.all(Array.from(Object.entries(p),async([te,ie])=>{let ue=await en.getPackageMetadata(j.parseIdent(te),{project:s});return Ge.mapAndFilter(ie,ae=>{let{deprecated:ge}=ue.versions[ae];return ge?[te,ae,ge]:Ge.mapAndFilter.skip})})),V=await O;for(let[te,ie,ue]of U.flat(1))Object.hasOwn(V,te)&&V[te].some(ae=>kr.satisfiesWithPrereleases(ie,ae.vulnerable_versions))||(V[te]??=[],V[te].push({id:`${te} (deprecation)`,title:(typeof ue=="string"?ue:"").trim()||"This package has been deprecated.",severity:"moderate",vulnerable_versions:ie}));E=V});if(C.hasErrors())return C.exitCode();let S=tK(this.severity),x=Array.from(new Set([...r.get("npmAuditIgnoreAdvisories"),...this.ignores])),I=Object.create(null);for(let[O,U]of Object.entries(E)){let V=U.filter(te=>!sK.default.isMatch(`${te.id}`,x)&&S.has(te.severity));V.length>0&&(I[O]=V.map(te=>{let ie=c.get(O);if(typeof ie>"u")throw new Error("Assertion failed: Expected the registry to only return packages that were requested");let ue=[...ie.keys()].filter(ge=>kr.satisfiesWithPrereleases(ge,te.vulnerable_versions)),ae=new Map;for(let ge of ue)for(let Ae of ie.get(ge))ae.set(Ae.locatorHash,Ae);return{...te,versions:ue,dependents:[...ae.values()]}}))}let T=Object.keys(I).length>0;return T?(Rs.emitTree(rK(I),{configuration:r,json:this.json,stdout:this.context.stdout,separators:2}),1):(await Ot.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async O=>{O.reportInfo(1,"No audit suggestions")}),T?1:0)}};qe();qe();Dt();Yt();var oK=et(pi()),aK=Ie("util"),E1=class extends At{constructor(){super(...arguments);this.fields=he.String("-f,--fields",{description:"A comma-separated list of manifest fields that should be displayed"});this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.packages=he.Rest()}static{this.paths=[["npm","info"]]}static{this.usage=at.Usage({category:"Npm-related commands",description:"show information about a package",details:"\n This command fetches information about a package from the npm registry and prints it in a tree format.\n\n The package does not have to be installed locally, but needs to have been published (in particular, local changes will be ignored even for workspaces).\n\n Append `@` to the package argument to provide information specific to the latest version that satisfies the range or to the corresponding tagged version. If the range is invalid or if there is no version satisfying the range, the command will print a warning and fall back to the latest version.\n\n If the `-f,--fields` option is set, it's a comma-separated list of fields which will be used to only display part of the package information.\n\n By default, this command won't return the `dist`, `readme`, and `users` fields, since they are often very long. To explicitly request those fields, explicitly list them with the `--fields` flag or request the output in JSON mode.\n ",examples:[["Show all available information about react (except the `dist`, `readme`, and `users` fields)","yarn npm info react"],["Show all available information about react as valid JSON (including the `dist`, `readme`, and `users` fields)","yarn npm info react --json"],["Show all available information about react@16.12.0","yarn npm info react@16.12.0"],["Show all available information about react@next","yarn npm info react@next"],["Show the description of react","yarn npm info react --fields description"],["Show all available versions of react","yarn npm info react --fields versions"],["Show the readme of react","yarn npm info react --fields readme"],["Show a few fields of react","yarn npm info react --fields homepage,repository"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Rt.find(r,this.context.cwd),a=typeof this.fields<"u"?new Set(["name",...this.fields.split(/\s*,\s*/)]):null,n=[],c=!1,f=await Ot.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async p=>{for(let h of this.packages){let E;if(h==="."){let ie=s.topLevelWorkspace;if(!ie.manifest.name)throw new it(`Missing ${pe.pretty(r,"name",pe.Type.CODE)} field in ${fe.fromPortablePath(J.join(ie.cwd,Er.manifest))}`);E=j.makeDescriptor(ie.manifest.name,"unknown")}else E=j.parseDescriptor(h);let C=en.getIdentUrl(E),S=lK(await en.get(C,{configuration:r,ident:E,jsonResponse:!0,customErrorMessage:en.customPackageError})),x=Object.keys(S.versions).sort(oK.default.compareLoose),T=S["dist-tags"].latest||x[x.length-1],O=kr.validRange(E.range);if(O){let ie=oK.default.maxSatisfying(x,O);ie!==null?T=ie:(p.reportWarning(0,`Unmet range ${j.prettyRange(r,E.range)}; falling back to the latest version`),c=!0)}else Object.hasOwn(S["dist-tags"],E.range)?T=S["dist-tags"][E.range]:E.range!=="unknown"&&(p.reportWarning(0,`Unknown tag ${j.prettyRange(r,E.range)}; falling back to the latest version`),c=!0);let U=S.versions[T],V={...S,...U,version:T,versions:x},te;if(a!==null){te={};for(let ie of a){let ue=V[ie];if(typeof ue<"u")te[ie]=ue;else{p.reportWarning(1,`The ${pe.pretty(r,ie,pe.Type.CODE)} field doesn't exist inside ${j.prettyIdent(r,E)}'s information`),c=!0;continue}}}else this.json||(delete V.dist,delete V.readme,delete V.users),te=V;p.reportJson(te),this.json||n.push(te)}});aK.inspect.styles.name="cyan";for(let p of n)(p!==n[0]||c)&&this.context.stdout.write(` +`),this.context.stdout.write(`${(0,aK.inspect)(p,{depth:1/0,colors:!0,compact:!1})} +`);return f.exitCode()}};function lK(e){if(Array.isArray(e)){let t=[];for(let r of e)r=lK(r),r&&t.push(r);return t}else if(typeof e=="object"&&e!==null){let t={};for(let r of Object.keys(e)){if(r.startsWith("_"))continue;let s=lK(e[r]);s&&(t[r]=s)}return t}else return e||null}qe();qe();Yt();var cK=et(Vv()),I1=class extends At{constructor(){super(...arguments);this.scope=he.String("-s,--scope",{description:"Login to the registry configured for a given scope"});this.publish=he.Boolean("--publish",!1,{description:"Login to the publish registry"});this.alwaysAuth=he.Boolean("--always-auth",{description:"Set the npmAlwaysAuth configuration"});this.webLogin=he.Boolean("--web-login",{description:"Enable web login"})}static{this.paths=[["npm","login"]]}static{this.usage=at.Usage({category:"Npm-related commands",description:"store new login info to access the npm registry",details:"\n This command will ask you for your username, password, and 2FA One-Time-Password (when it applies). It will then modify your local configuration (in your home folder, never in the project itself) to reference the new tokens thus generated.\n\n Adding the `-s,--scope` flag will cause the authentication to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\n\n Adding the `--publish` flag will cause the authentication to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\n ",examples:[["Login to the default registry","yarn npm login"],["Login to the registry linked to the @my-scope registry","yarn npm login --scope my-scope"],["Login to the publish registry for the current package","yarn npm login --publish"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=await dL({configuration:r,cwd:this.context.cwd,publish:this.publish,scope:this.scope});return(await Ot.start({configuration:r,stdout:this.context.stdout,includeFooter:!1},async n=>{let c=await Qvt({registry:s,configuration:r,report:n,webLogin:this.webLogin,stdin:this.context.stdin,stdout:this.context.stdout});return await Tvt(s,c,{alwaysAuth:this.alwaysAuth,scope:this.scope}),n.reportInfo(0,"Successfully logged in")})).exitCode()}};async function dL({scope:e,publish:t,configuration:r,cwd:s}){return e&&t?di.getScopeRegistry(e,{configuration:r,type:di.RegistryType.PUBLISH_REGISTRY}):e?di.getScopeRegistry(e,{configuration:r}):t?di.getPublishRegistry((await WI(r,s)).manifest,{configuration:r}):di.getDefaultRegistry({configuration:r})}async function bvt(e,t){let r;try{r=await en.post("/-/v1/login",null,{configuration:t,registry:e,authType:en.AuthType.NO_AUTH,jsonResponse:!0,headers:{"npm-auth-type":"web"}})}catch{return null}return r}async function Pvt(e,t){let r=await nn.request(e,null,{configuration:t,jsonResponse:!0});if(r.statusCode===202){let s=r.headers["retry-after"]??"1";return{type:"waiting",sleep:parseInt(s,10)}}return r.statusCode===200?{type:"success",token:r.body.token}:null}async function xvt({registry:e,configuration:t,report:r}){let s=await bvt(e,t);if(!s)return null;if(Ui.openUrl){r.reportInfo(0,"Starting the web login process..."),r.reportSeparator();let{openNow:a}=await(0,cK.prompt)({type:"confirm",name:"openNow",message:"Do you want to try to open your browser now?",required:!0,initial:!0,onCancel:()=>process.exit(130)});r.reportSeparator(),(!a||!await Ui.openUrl(s.loginUrl))&&(r.reportWarning(0,"We failed to automatically open the url; you'll have to open it yourself in your browser of choice:"),r.reportWarning(0,pe.pretty(t,s.loginUrl,pe.Type.URL)),r.reportSeparator())}for(;;){let a=await Pvt(s.doneUrl,t);if(a===null)return null;if(a.type==="waiting")await new Promise(n=>setTimeout(n,a.sleep*1e3));else return a.token}}var kvt=["https://registry.yarnpkg.com","https://registry.npmjs.org"];async function Qvt(e){if(e.webLogin??kvt.includes(e.registry)){let t=await xvt(e);if(t!==null)return t}return await Rvt(e)}async function Rvt({registry:e,configuration:t,report:r,stdin:s,stdout:a}){let n=await Fvt({configuration:t,registry:e,report:r,stdin:s,stdout:a}),c=`/-/user/org.couchdb.user:${encodeURIComponent(n.name)}`,f={_id:`org.couchdb.user:${n.name}`,name:n.name,password:n.password,type:"user",roles:[],date:new Date().toISOString()},p={attemptedAs:n.name,configuration:t,registry:e,jsonResponse:!0,authType:en.AuthType.NO_AUTH};try{return(await en.put(c,f,p)).token}catch(x){if(!(x.originalError?.name==="HTTPError"&&x.originalError?.response.statusCode===409))throw x}let h={...p,authType:en.AuthType.NO_AUTH,headers:{authorization:`Basic ${Buffer.from(`${n.name}:${n.password}`).toString("base64")}`}},E=await en.get(c,h);for(let[x,I]of Object.entries(E))(!f[x]||x==="roles")&&(f[x]=I);let C=`${c}/-rev/${f._rev}`;return(await en.put(C,f,h)).token}async function Tvt(e,t,{alwaysAuth:r,scope:s}){let a=c=>f=>{let p=Ge.isIndexableObject(f)?f:{},h=p[c],E=Ge.isIndexableObject(h)?h:{};return{...p,[c]:{...E,...r!==void 0?{npmAlwaysAuth:r}:{},npmAuthToken:t}}},n=s?{npmScopes:a(s)}:{npmRegistries:a(e)};return await ze.updateHomeConfiguration(n)}async function Fvt({configuration:e,registry:t,report:r,stdin:s,stdout:a}){r.reportInfo(0,`Logging in to ${pe.pretty(e,t,pe.Type.URL)}`);let n=!1;if(t.match(/^https:\/\/npm\.pkg\.github\.com(\/|$)/)&&(r.reportInfo(0,"You seem to be using the GitHub Package Registry. Tokens must be generated with the 'repo', 'write:packages', and 'read:packages' permissions."),n=!0),r.reportSeparator(),e.env.YARN_IS_TEST_ENV)return{name:e.env.YARN_INJECT_NPM_USER||"",password:e.env.YARN_INJECT_NPM_PASSWORD||""};let c=await(0,cK.prompt)([{type:"input",name:"name",message:"Username:",required:!0,onCancel:()=>process.exit(130),stdin:s,stdout:a},{type:"password",name:"password",message:n?"Token:":"Password:",required:!0,onCancel:()=>process.exit(130),stdin:s,stdout:a}]);return r.reportSeparator(),c}qe();qe();Yt();var C1=new Set(["npmAuthIdent","npmAuthToken"]),w1=class extends At{constructor(){super(...arguments);this.scope=he.String("-s,--scope",{description:"Logout of the registry configured for a given scope"});this.publish=he.Boolean("--publish",!1,{description:"Logout of the publish registry"});this.all=he.Boolean("-A,--all",!1,{description:"Logout of all registries"})}static{this.paths=[["npm","logout"]]}static{this.usage=at.Usage({category:"Npm-related commands",description:"logout of the npm registry",details:"\n This command will log you out by modifying your local configuration (in your home folder, never in the project itself) to delete all credentials linked to a registry.\n\n Adding the `-s,--scope` flag will cause the deletion to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\n\n Adding the `--publish` flag will cause the deletion to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\n\n Adding the `-A,--all` flag will cause the deletion to be done against all registries and scopes.\n ",examples:[["Logout of the default registry","yarn npm logout"],["Logout of the @my-scope scope","yarn npm logout --scope my-scope"],["Logout of the publish registry for the current package","yarn npm logout --publish"],["Logout of all registries","yarn npm logout --all"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=async()=>{let n=await dL({configuration:r,cwd:this.context.cwd,publish:this.publish,scope:this.scope}),c=await ze.find(this.context.cwd,this.context.plugins),f=j.makeIdent(this.scope??null,"pkg");return!di.getAuthConfiguration(n,{configuration:c,ident:f}).get("npmAuthToken")};return(await Ot.start({configuration:r,stdout:this.context.stdout},async n=>{if(this.all&&(await Ovt(),n.reportInfo(0,"Successfully logged out from everything")),this.scope){await Nbe("npmScopes",this.scope),await s()?n.reportInfo(0,`Successfully logged out from ${this.scope}`):n.reportWarning(0,"Scope authentication settings removed, but some other ones settings still apply to it");return}let c=await dL({configuration:r,cwd:this.context.cwd,publish:this.publish});await Nbe("npmRegistries",c),await s()?n.reportInfo(0,`Successfully logged out from ${c}`):n.reportWarning(0,"Registry authentication settings removed, but some other ones settings still apply to it")})).exitCode()}};function Nvt(e,t){let r=e[t];if(!Ge.isIndexableObject(r))return!1;let s=new Set(Object.keys(r));if([...C1].every(n=>!s.has(n)))return!1;for(let n of C1)s.delete(n);if(s.size===0)return e[t]=void 0,!0;let a={...r};for(let n of C1)delete a[n];return e[t]=a,!0}async function Ovt(){let e=t=>{let r=!1,s=Ge.isIndexableObject(t)?{...t}:{};s.npmAuthToken&&(delete s.npmAuthToken,r=!0);for(let a of Object.keys(s))Nvt(s,a)&&(r=!0);if(Object.keys(s).length!==0)return r?s:t};return await ze.updateHomeConfiguration({npmRegistries:e,npmScopes:e})}async function Nbe(e,t){return await ze.updateHomeConfiguration({[e]:r=>{let s=Ge.isIndexableObject(r)?r:{};if(!Object.hasOwn(s,t))return r;let a=s[t],n=Ge.isIndexableObject(a)?a:{},c=new Set(Object.keys(n));if([...C1].every(p=>!c.has(p)))return r;for(let p of C1)c.delete(p);if(c.size===0)return Object.keys(s).length===1?void 0:{...s,[t]:void 0};let f={};for(let p of C1)f[p]=void 0;return{...s,[t]:{...n,...f}}}})}qe();Dt();Yt();var B1=class extends At{constructor(){super(...arguments);this.access=he.String("--access",{description:"The access for the published package (public or restricted)"});this.tag=he.String("--tag","latest",{description:"The tag on the registry that the package should be attached to"});this.tolerateRepublish=he.Boolean("--tolerate-republish",!1,{description:"Warn and exit when republishing an already existing version of a package"});this.otp=he.String("--otp",{description:"The OTP token to use with the command"});this.provenance=he.Boolean("--provenance",!1,{description:"Generate provenance for the package. Only available in GitHub Actions and GitLab CI. Can be set globally through the `npmPublishProvenance` setting or the `YARN_NPM_CONFIG_PROVENANCE` environment variable, or per-package through the `publishConfig.provenance` field in package.json."});this.dryRun=he.Boolean("-n,--dry-run",!1,{description:"Show what would be published without actually publishing"});this.json=he.Boolean("--json",!1,{description:"Output the result in JSON format"})}static{this.paths=[["npm","publish"]]}static{this.usage=at.Usage({category:"Npm-related commands",description:"publish the active workspace to the npm registry",details:'\n This command will pack the active workspace into a fresh archive and upload it to the npm registry.\n\n The package will by default be attached to the `latest` tag on the registry, but this behavior can be overridden by using the `--tag` option.\n\n Note that for legacy reasons scoped packages are by default published with an access set to `restricted` (aka "private packages"). This requires you to register for a paid npm plan. In case you simply wish to publish a public scoped package to the registry (for free), just add the `--access public` flag. This behavior can be enabled by default through the `npmPublishAccess` settings.\n ',examples:[["Publish the active workspace","yarn npm publish"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);if(a.manifest.private)throw new it("Private workspaces cannot be published");if(a.manifest.name===null||a.manifest.version===null)throw new it("Workspaces must have valid names and versions to be published on an external registry");await s.restoreInstallState();let n=a.manifest.name,c=a.manifest.version,f=di.getPublishRegistry(a.manifest,{configuration:r});return(await Ot.start({configuration:r,stdout:this.context.stdout,json:this.json},async h=>{if(h.reportInfo(0,`Publishing to ${f} with tag ${this.tag}`),this.tolerateRepublish)try{let E=await en.get(en.getIdentUrl(n),{configuration:r,registry:f,ident:n,jsonResponse:!0});if(!Object.hasOwn(E,"versions"))throw new Lt(15,'Registry returned invalid data for - missing "versions" field');if(Object.hasOwn(E.versions,c)){let C=`Registry already knows about version ${c}; skipping.`;h.reportWarning(0,C),h.reportJson({name:j.stringifyIdent(n),version:c,registry:f,warning:C,skipped:!0});return}}catch(E){if(E.originalError?.response?.statusCode!==404)throw E}await Cn.maybeExecuteWorkspaceLifecycleScript(a,"prepublish",{report:h}),await IA.prepareForPack(a,{report:h},async()=>{let E=await IA.genPackList(a);for(let V of E)h.reportInfo(null,fe.fromPortablePath(V)),h.reportJson({file:fe.fromPortablePath(V)});let C=await IA.genPackStream(a,E),S=await Ge.bufferStream(C),x=await g1.getGitHead(a.cwd),I=!1,T="";a.manifest.publishConfig&&"provenance"in a.manifest.publishConfig?(I=!!a.manifest.publishConfig.provenance,T=I?"Generating provenance statement because `publishConfig.provenance` field is set.":"Skipping provenance statement because `publishConfig.provenance` field is set to false."):this.provenance?(I=!0,T="Generating provenance statement because `--provenance` flag is set."):r.get("npmPublishProvenance")&&(I=!0,T="Generating provenance statement because `npmPublishProvenance` setting is set."),T&&(h.reportInfo(null,T),h.reportJson({type:"provenance",enabled:I,provenanceMessage:T}));let O=await g1.makePublishBody(a,S,{access:this.access,tag:this.tag,registry:f,gitHead:x,provenance:I});this.dryRun||await en.put(en.getIdentUrl(n),O,{configuration:r,registry:f,ident:n,otp:this.otp,jsonResponse:!0,allowOidc:!!(process.env.CI&&(process.env.GITHUB_ACTIONS||process.env.GITLAB_CI))});let U=this.dryRun?"Package archive not published (dry run)":"Package archive published";h.reportInfo(0,U),h.reportJson({name:j.stringifyIdent(n),version:c,registry:f,tag:this.tag||"latest",files:E.map(V=>fe.fromPortablePath(V)),access:this.access||null,dryRun:this.dryRun,published:!this.dryRun,message:U,provenance:!!I})})})).exitCode()}};qe();Yt();var Obe=et(pi());qe();Dt();Yt();var v1=class extends At{constructor(){super(...arguments);this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.package=he.String({required:!1})}static{this.paths=[["npm","tag","list"]]}static{this.usage=at.Usage({category:"Npm-related commands",description:"list all dist-tags of a package",details:` + This command will list all tags of a package from the npm registry. + + If the package is not specified, Yarn will default to the current workspace. + `,examples:[["List all tags of package `my-pkg`","yarn npm tag list my-pkg"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n;if(typeof this.package<"u")n=j.parseIdent(this.package);else{if(!a)throw new ar(s.cwd,this.context.cwd);if(!a.manifest.name)throw new it(`Missing 'name' field in ${fe.fromPortablePath(J.join(a.cwd,Er.manifest))}`);n=a.manifest.name}let c=await Xb(n,r),p={children:Ge.sortMap(Object.entries(c),([h])=>h).map(([h,E])=>({value:pe.tuple(pe.Type.RESOLUTION,{descriptor:j.makeDescriptor(n,h),locator:j.makeLocator(n,E)})}))};return Rs.emitTree(p,{configuration:r,json:this.json,stdout:this.context.stdout})}};async function Xb(e,t){let r=`/-/package${en.getIdentUrl(e)}/dist-tags`;return en.get(r,{configuration:t,ident:e,jsonResponse:!0,customErrorMessage:en.customPackageError})}var S1=class extends At{constructor(){super(...arguments);this.package=he.String();this.tag=he.String()}static{this.paths=[["npm","tag","add"]]}static{this.usage=at.Usage({category:"Npm-related commands",description:"add a tag for a specific version of a package",details:` + This command will add a tag to the npm registry for a specific version of a package. If the tag already exists, it will be overwritten. + `,examples:[["Add a `beta` tag for version `2.3.4-beta.4` of package `my-pkg`","yarn npm tag add my-pkg@2.3.4-beta.4 beta"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);let n=j.parseDescriptor(this.package,!0),c=n.range;if(!Obe.default.valid(c))throw new it(`The range ${pe.pretty(r,n.range,pe.Type.RANGE)} must be a valid semver version`);let f=di.getPublishRegistry(a.manifest,{configuration:r}),p=pe.pretty(r,n,pe.Type.IDENT),h=pe.pretty(r,c,pe.Type.RANGE),E=pe.pretty(r,this.tag,pe.Type.CODE);return(await Ot.start({configuration:r,stdout:this.context.stdout},async S=>{let x=await Xb(n,r);Object.hasOwn(x,this.tag)&&x[this.tag]===c&&S.reportWarning(0,`Tag ${E} is already set to version ${h}`);let I=`/-/package${en.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await en.put(I,c,{configuration:r,registry:f,ident:n,jsonRequest:!0,jsonResponse:!0}),S.reportInfo(0,`Tag ${E} added to version ${h} of package ${p}`)})).exitCode()}};qe();Yt();var D1=class extends At{constructor(){super(...arguments);this.package=he.String();this.tag=he.String()}static{this.paths=[["npm","tag","remove"]]}static{this.usage=at.Usage({category:"Npm-related commands",description:"remove a tag from a package",details:` + This command will remove a tag from a package from the npm registry. + `,examples:[["Remove the `beta` tag from package `my-pkg`","yarn npm tag remove my-pkg beta"]]})}async execute(){if(this.tag==="latest")throw new it("The 'latest' tag cannot be removed.");let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);let n=j.parseIdent(this.package),c=di.getPublishRegistry(a.manifest,{configuration:r}),f=pe.pretty(r,this.tag,pe.Type.CODE),p=pe.pretty(r,n,pe.Type.IDENT),h=await Xb(n,r);if(!Object.hasOwn(h,this.tag))throw new it(`${f} is not a tag of package ${p}`);return(await Ot.start({configuration:r,stdout:this.context.stdout},async C=>{let S=`/-/package${en.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await en.del(S,{configuration:r,registry:c,ident:n,jsonResponse:!0}),C.reportInfo(0,`Tag ${f} removed from package ${p}`)})).exitCode()}};qe();qe();Yt();var b1=class extends At{constructor(){super(...arguments);this.scope=he.String("-s,--scope",{description:"Print username for the registry configured for a given scope"});this.publish=he.Boolean("--publish",!1,{description:"Print username for the publish registry"})}static{this.paths=[["npm","whoami"]]}static{this.usage=at.Usage({category:"Npm-related commands",description:"display the name of the authenticated user",details:"\n Print the username associated with the current authentication settings to the standard output.\n\n When using `-s,--scope`, the username printed will be the one that matches the authentication settings of the registry associated with the given scope (those settings can be overriden using the `npmRegistries` map, and the registry associated with the scope is configured via the `npmScopes` map).\n\n When using `--publish`, the registry we'll select will by default be the one used when publishing packages (`publishConfig.registry` or `npmPublishRegistry` if available, otherwise we'll fallback to the regular `npmRegistryServer`).\n ",examples:[["Print username for the default registry","yarn npm whoami"],["Print username for the registry on a given scope","yarn npm whoami --scope company"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s;return this.scope&&this.publish?s=di.getScopeRegistry(this.scope,{configuration:r,type:di.RegistryType.PUBLISH_REGISTRY}):this.scope?s=di.getScopeRegistry(this.scope,{configuration:r}):this.publish?s=di.getPublishRegistry((await WI(r,this.context.cwd)).manifest,{configuration:r}):s=di.getDefaultRegistry({configuration:r}),(await Ot.start({configuration:r,stdout:this.context.stdout},async n=>{let c;try{c=await en.get("/-/whoami",{configuration:r,registry:s,authType:en.AuthType.ALWAYS_AUTH,jsonResponse:!0,ident:this.scope?j.makeIdent(this.scope,""):void 0})}catch(f){if(f.response?.statusCode===401||f.response?.statusCode===403){n.reportError(41,"Authentication failed - your credentials may have expired");return}else throw f}n.reportInfo(0,c.username)})).exitCode()}};var Lvt={configuration:{npmPublishAccess:{description:"Default access of the published packages",type:"STRING",default:null},npmPublishProvenance:{description:"Whether to generate provenance for the published packages",type:"BOOLEAN",default:!1},npmAuditExcludePackages:{description:"Array of glob patterns of packages to exclude from npm audit",type:"STRING",default:[],isArray:!0},npmAuditIgnoreAdvisories:{description:"Array of glob patterns of advisory IDs to exclude from npm audit",type:"STRING",default:[],isArray:!0}},commands:[y1,E1,I1,w1,B1,S1,v1,D1,b1]},Mvt=Lvt;var mK={};Vt(mK,{PatchCommand:()=>T1,PatchCommitCommand:()=>R1,PatchFetcher:()=>rP,PatchResolver:()=>nP,default:()=>rSt,patchUtils:()=>yy});qe();qe();Dt();nA();var yy={};Vt(yy,{applyPatchFile:()=>mL,diffFolders:()=>dK,ensureUnpatchedDescriptor:()=>fK,ensureUnpatchedLocator:()=>EL,extractPackageToDisk:()=>hK,extractPatchFlags:()=>Gbe,isParentRequired:()=>pK,isPatchDescriptor:()=>yL,isPatchLocator:()=>Qd,loadPatchFiles:()=>tP,makeDescriptor:()=>IL,makeLocator:()=>AK,makePatchHash:()=>gK,parseDescriptor:()=>$b,parseLocator:()=>eP,parsePatchFile:()=>Zb,unpatchDescriptor:()=>$vt,unpatchLocator:()=>eSt});qe();Dt();qe();Dt();var Uvt=/^@@ -(\d+)(,(\d+))? \+(\d+)(,(\d+))? @@.*/;function P1(e){return J.relative(vt.root,J.resolve(vt.root,fe.toPortablePath(e)))}function _vt(e){let t=e.trim().match(Uvt);if(!t)throw new Error(`Bad header line: '${e}'`);return{original:{start:Math.max(Number(t[1]),1),length:Number(t[3]||1)},patched:{start:Math.max(Number(t[4]),1),length:Number(t[6]||1)}}}var Hvt=420,jvt=493;var Lbe=()=>({semverExclusivity:null,diffLineFromPath:null,diffLineToPath:null,oldMode:null,newMode:null,deletedFileMode:null,newFileMode:null,renameFrom:null,renameTo:null,beforeHash:null,afterHash:null,fromPath:null,toPath:null,hunks:null}),Gvt=e=>({header:_vt(e),parts:[]}),qvt={"@":"header","-":"deletion","+":"insertion"," ":"context","\\":"pragma",undefined:"context"};function Wvt(e){let t=[],r=Lbe(),s="parsing header",a=null,n=null;function c(){a&&(n&&(a.parts.push(n),n=null),r.hunks.push(a),a=null)}function f(){c(),t.push(r),r=Lbe()}for(let p=0;p0?"patch":"mode change",V=null;switch(U){case"rename":{if(!E||!C)throw new Error("Bad parser state: rename from & to not given");t.push({type:"rename",semverExclusivity:s,fromPath:P1(E),toPath:P1(C)}),V=C}break;case"file deletion":{let te=a||I;if(!te)throw new Error("Bad parse state: no path given for file deletion");t.push({type:"file deletion",semverExclusivity:s,hunk:O&&O[0]||null,path:P1(te),mode:gL(p),hash:S})}break;case"file creation":{let te=n||T;if(!te)throw new Error("Bad parse state: no path given for file creation");t.push({type:"file creation",semverExclusivity:s,hunk:O&&O[0]||null,path:P1(te),mode:gL(h),hash:x})}break;case"patch":case"mode change":V=T||n;break;default:Ge.assertNever(U);break}V&&c&&f&&c!==f&&t.push({type:"mode change",semverExclusivity:s,path:P1(V),oldMode:gL(c),newMode:gL(f)}),V&&O&&O.length&&t.push({type:"patch",semverExclusivity:s,path:P1(V),hunks:O,beforeHash:S,afterHash:x})}if(t.length===0)throw new Error("Unable to parse patch file: No changes found. Make sure the patch is a valid UTF8 encoded string");return t}function gL(e){let t=parseInt(e,8)&511;if(t!==Hvt&&t!==jvt)throw new Error(`Unexpected file mode string: ${e}`);return t}function Zb(e){let t=e.split(/\n/g);return t[t.length-1]===""&&t.pop(),Yvt(Wvt(t))}function Vvt(e){let t=0,r=0;for(let{type:s,lines:a}of e.parts)switch(s){case"context":r+=a.length,t+=a.length;break;case"deletion":t+=a.length;break;case"insertion":r+=a.length;break;default:Ge.assertNever(s);break}if(t!==e.header.original.length||r!==e.header.patched.length){let s=a=>a<0?a:`+${a}`;throw new Error(`hunk header integrity check failed (expected @@ ${s(e.header.original.length)} ${s(e.header.patched.length)} @@, got @@ ${s(t)} ${s(r)} @@)`)}}qe();Dt();var x1=class extends Error{constructor(r,s){super(`Cannot apply hunk #${r+1}`);this.hunk=s}};async function k1(e,t,r){let s=await e.lstatPromise(t),a=await r();typeof a<"u"&&(t=a),await e.lutimesPromise(t,s.atime,s.mtime)}async function mL(e,{baseFs:t=new Vn,dryRun:r=!1,version:s=null}={}){for(let a of e)if(!(a.semverExclusivity!==null&&s!==null&&!kr.satisfiesWithPrereleases(s,a.semverExclusivity)))switch(a.type){case"file deletion":if(r){if(!t.existsSync(a.path))throw new Error(`Trying to delete a file that doesn't exist: ${a.path}`)}else await k1(t,J.dirname(a.path),async()=>{await t.unlinkPromise(a.path)});break;case"rename":if(r){if(!t.existsSync(a.fromPath))throw new Error(`Trying to move a file that doesn't exist: ${a.fromPath}`)}else await k1(t,J.dirname(a.fromPath),async()=>{await k1(t,J.dirname(a.toPath),async()=>{await k1(t,a.fromPath,async()=>(await t.movePromise(a.fromPath,a.toPath),a.toPath))})});break;case"file creation":if(r){if(t.existsSync(a.path))throw new Error(`Trying to create a file that already exists: ${a.path}`)}else{let n=a.hunk?a.hunk.parts[0].lines.join(` +`)+(a.hunk.parts[0].noNewlineAtEndOfFile?"":` +`):"";await t.mkdirpPromise(J.dirname(a.path),{chmod:493,utimes:[Ai.SAFE_TIME,Ai.SAFE_TIME]}),await t.writeFilePromise(a.path,n,{mode:a.mode}),await t.utimesPromise(a.path,Ai.SAFE_TIME,Ai.SAFE_TIME)}break;case"patch":await k1(t,a.path,async()=>{await zvt(a,{baseFs:t,dryRun:r})});break;case"mode change":{let c=(await t.statPromise(a.path)).mode;if(Mbe(a.newMode)!==Mbe(c))continue;await k1(t,a.path,async()=>{await t.chmodPromise(a.path,a.newMode)})}break;default:Ge.assertNever(a);break}}function Mbe(e){return(e&64)>0}function Ube(e){return e.replace(/\s+$/,"")}function Kvt(e,t){return Ube(e)===Ube(t)}async function zvt({hunks:e,path:t},{baseFs:r,dryRun:s=!1}){let a=await r.statSync(t).mode,c=(await r.readFileSync(t,"utf8")).split(/\n/),f=[],p=0,h=0;for(let C of e){let S=Math.max(h,C.header.patched.start+p),x=Math.max(0,S-h),I=Math.max(0,c.length-S-C.header.original.length),T=Math.max(x,I),O=0,U=0,V=null;for(;O<=T;){if(O<=x&&(U=S-O,V=_be(C,c,U),V!==null)){O=-O;break}if(O<=I&&(U=S+O,V=_be(C,c,U),V!==null))break;O+=1}if(V===null)throw new x1(e.indexOf(C),C);f.push(V),p+=O,h=U+C.header.original.length}if(s)return;let E=0;for(let C of f)for(let S of C)switch(S.type){case"splice":{let x=S.index+E;c.splice(x,S.numToDelete,...S.linesToInsert),E+=S.linesToInsert.length-S.numToDelete}break;case"pop":c.pop();break;case"push":c.push(S.line);break;default:Ge.assertNever(S);break}await r.writeFilePromise(t,c.join(` +`),{mode:a})}function _be(e,t,r){let s=[];for(let a of e.parts)switch(a.type){case"context":case"deletion":{for(let n of a.lines){let c=t[r];if(c==null||!Kvt(c,n))return null;r+=1}a.type==="deletion"&&(s.push({type:"splice",index:r-a.lines.length,numToDelete:a.lines.length,linesToInsert:[]}),a.noNewlineAtEndOfFile&&s.push({type:"push",line:""}))}break;case"insertion":s.push({type:"splice",index:r,numToDelete:0,linesToInsert:a.lines}),a.noNewlineAtEndOfFile&&s.push({type:"pop"});break;default:Ge.assertNever(a.type);break}return s}var Zvt=/^builtin<([^>]+)>$/;function Q1(e,t){let{protocol:r,source:s,selector:a,params:n}=j.parseRange(e);if(r!=="patch:")throw new Error("Invalid patch range");if(s===null)throw new Error("Patch locators must explicitly define their source");let c=a?a.split(/&/).map(E=>fe.toPortablePath(E)):[],f=n&&typeof n.locator=="string"?j.parseLocator(n.locator):null,p=n&&typeof n.version=="string"?n.version:null,h=t(s);return{parentLocator:f,sourceItem:h,patchPaths:c,sourceVersion:p}}function yL(e){return e.range.startsWith("patch:")}function Qd(e){return e.reference.startsWith("patch:")}function $b(e){let{sourceItem:t,...r}=Q1(e.range,j.parseDescriptor);return{...r,sourceDescriptor:t}}function eP(e){let{sourceItem:t,...r}=Q1(e.reference,j.parseLocator);return{...r,sourceLocator:t}}function $vt(e){let{sourceItem:t}=Q1(e.range,j.parseDescriptor);return t}function eSt(e){let{sourceItem:t}=Q1(e.reference,j.parseLocator);return t}function fK(e){if(!yL(e))return e;let{sourceItem:t}=Q1(e.range,j.parseDescriptor);return t}function EL(e){if(!Qd(e))return e;let{sourceItem:t}=Q1(e.reference,j.parseLocator);return t}function Hbe({parentLocator:e,sourceItem:t,patchPaths:r,sourceVersion:s,patchHash:a},n){let c=e!==null?{locator:j.stringifyLocator(e)}:{},f=typeof s<"u"?{version:s}:{},p=typeof a<"u"?{hash:a}:{};return j.makeRange({protocol:"patch:",source:n(t),selector:r.join("&"),params:{...f,...p,...c}})}function IL(e,{parentLocator:t,sourceDescriptor:r,patchPaths:s}){return j.makeDescriptor(e,Hbe({parentLocator:t,sourceItem:r,patchPaths:s},j.stringifyDescriptor))}function AK(e,{parentLocator:t,sourcePackage:r,patchPaths:s,patchHash:a}){return j.makeLocator(e,Hbe({parentLocator:t,sourceItem:r,sourceVersion:r.version,patchPaths:s,patchHash:a},j.stringifyLocator))}function jbe({onAbsolute:e,onRelative:t,onProject:r,onBuiltin:s},a){let n=a.lastIndexOf("!");n!==-1&&(a=a.slice(n+1));let c=a.match(Zvt);return c!==null?s(c[1]):a.startsWith("~/")?r(a.slice(2)):J.isAbsolute(a)?e(a):t(a)}function Gbe(e){let t=e.lastIndexOf("!");return{optional:(t!==-1?new Set(e.slice(0,t).split(/!/)):new Set).has("optional")}}function pK(e){return jbe({onAbsolute:()=>!1,onRelative:()=>!0,onProject:()=>!1,onBuiltin:()=>!1},e)}async function tP(e,t,r){let s=e!==null?await r.fetcher.fetch(e,r):null,a=s&&s.localPath?{packageFs:new bn(vt.root),prefixPath:J.relative(vt.root,s.localPath)}:s;s&&s!==a&&s.releaseFs&&s.releaseFs();let n=await Ge.releaseAfterUseAsync(async()=>await Promise.all(t.map(async c=>{let f=Gbe(c),p=await jbe({onAbsolute:async h=>await le.readFilePromise(h,"utf8"),onRelative:async h=>{if(a===null)throw new Error("Assertion failed: The parent locator should have been fetched");return await a.packageFs.readFilePromise(J.join(a.prefixPath,h),"utf8")},onProject:async h=>await le.readFilePromise(J.join(r.project.cwd,h),"utf8"),onBuiltin:async h=>await r.project.configuration.firstHook(E=>E.getBuiltinPatch,r.project,h)},c);return{...f,source:p}})));for(let c of n)typeof c.source=="string"&&(c.source=c.source.replace(/\r\n?/g,` +`));return n}async function hK(e,{cache:t,project:r}){let s=r.storedPackages.get(e.locatorHash);if(typeof s>"u")throw new Error("Assertion failed: Expected the package to be registered");let a=EL(e),n=r.storedChecksums,c=new ki,f=await le.mktempPromise(),p=J.join(f,"source"),h=J.join(f,"user"),E=J.join(f,".yarn-patch.json"),C=r.configuration.makeFetcher(),S=[];try{let x,I;if(e.locatorHash===a.locatorHash){let T=await C.fetch(e,{cache:t,project:r,fetcher:C,checksums:n,report:c});S.push(()=>T.releaseFs?.()),x=T,I=T}else x=await C.fetch(e,{cache:t,project:r,fetcher:C,checksums:n,report:c}),S.push(()=>x.releaseFs?.()),I=await C.fetch(e,{cache:t,project:r,fetcher:C,checksums:n,report:c}),S.push(()=>I.releaseFs?.());await Promise.all([le.copyPromise(p,x.prefixPath,{baseFs:x.packageFs}),le.copyPromise(h,I.prefixPath,{baseFs:I.packageFs}),le.writeJsonPromise(E,{locator:j.stringifyLocator(e),version:s.version})])}finally{for(let x of S)x()}return le.detachTemp(f),h}async function dK(e,t){let r=fe.fromPortablePath(e).replace(/\\/g,"/"),s=fe.fromPortablePath(t).replace(/\\/g,"/"),{stdout:a,stderr:n}=await qr.execvp("git",["-c","core.safecrlf=false","diff","--src-prefix=a/","--dst-prefix=b/","--ignore-cr-at-eol","--full-index","--no-index","--no-renames","--text",r,s],{cwd:fe.toPortablePath(process.cwd()),env:{...process.env,GIT_CONFIG_NOSYSTEM:"1",HOME:"",XDG_CONFIG_HOME:"",USERPROFILE:""}});if(n.length>0)throw new Error(`Unable to diff directories. Make sure you have a recent version of 'git' available in PATH. +The following error was reported by 'git': +${n}`);let c=r.startsWith("/")?f=>f.slice(1):f=>f;return a.replace(new RegExp(`(a|b)(${Ge.escapeRegExp(`/${c(r)}/`)})`,"g"),"$1/").replace(new RegExp(`(a|b)${Ge.escapeRegExp(`/${c(s)}/`)}`,"g"),"$1/").replace(new RegExp(Ge.escapeRegExp(`${r}/`),"g"),"").replace(new RegExp(Ge.escapeRegExp(`${s}/`),"g"),"")}function gK(e,t){let r=[];for(let{source:s}of e){if(s===null)continue;let a=Zb(s);for(let n of a){let{semverExclusivity:c,...f}=n;c!==null&&t!==null&&!kr.satisfiesWithPrereleases(t,c)||r.push(JSON.stringify(f))}}return Ln.makeHash(`${3}`,...r).slice(0,6)}qe();function qbe(e,{configuration:t,report:r}){for(let s of e.parts)for(let a of s.lines)switch(s.type){case"context":r.reportInfo(null,` ${pe.pretty(t,a,"grey")}`);break;case"deletion":r.reportError(28,`- ${pe.pretty(t,a,pe.Type.REMOVED)}`);break;case"insertion":r.reportError(28,`+ ${pe.pretty(t,a,pe.Type.ADDED)}`);break;default:Ge.assertNever(s.type)}}var rP=class{supports(t,r){return!!Qd(t)}getLocalPath(t,r){return null}async fetch(t,r){let s=r.checksums.get(t.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(t,s,{onHit:()=>r.report.reportCacheHit(t),onMiss:()=>r.report.reportCacheMiss(t,`${j.prettyLocator(r.project.configuration,t)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.patchPackage(t,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:j.getIdentVendorPath(t),localPath:this.getLocalPath(t,r),checksum:c}}async patchPackage(t,r){let{parentLocator:s,sourceLocator:a,sourceVersion:n,patchPaths:c}=eP(t),f=await tP(s,c,r),p=await le.mktempPromise(),h=J.join(p,"current.zip"),E=await r.fetcher.fetch(a,r),C=j.getIdentVendorPath(t),S=new ps(h,{create:!0,level:r.project.configuration.get("compressionLevel")});await Ge.releaseAfterUseAsync(async()=>{await S.copyPromise(C,E.prefixPath,{baseFs:E.packageFs,stableSort:!0})},E.releaseFs),S.saveAndClose();for(let{source:x,optional:I}of f){if(x===null)continue;let T=new ps(h,{level:r.project.configuration.get("compressionLevel")}),O=new bn(J.resolve(vt.root,C),{baseFs:T});try{await mL(Zb(x),{baseFs:O,version:n})}catch(U){if(!(U instanceof x1))throw U;let V=r.project.configuration.get("enableInlineHunks"),te=!V&&!I?" (set enableInlineHunks for details)":"",ie=`${j.prettyLocator(r.project.configuration,t)}: ${U.message}${te}`,ue=ae=>{V&&qbe(U.hunk,{configuration:r.project.configuration,report:ae})};if(T.discardAndClose(),I){r.report.reportWarningOnce(66,ie,{reportExtra:ue});continue}else throw new Lt(66,ie,ue)}T.saveAndClose()}return new ps(h,{level:r.project.configuration.get("compressionLevel")})}};qe();var nP=class{supportsDescriptor(t,r){return!!yL(t)}supportsLocator(t,r){return!!Qd(t)}shouldPersistResolution(t,r){return!1}bindDescriptor(t,r,s){let{patchPaths:a}=$b(t);return a.every(n=>!pK(n))?t:j.bindDescriptor(t,{locator:j.stringifyLocator(r)})}getResolutionDependencies(t,r){let{sourceDescriptor:s}=$b(t);return{sourceDescriptor:r.project.configuration.normalizeDependency(s)}}async getCandidates(t,r,s){if(!s.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{parentLocator:a,patchPaths:n}=$b(t),c=await tP(a,n,s.fetchOptions),f=r.sourceDescriptor;if(typeof f>"u")throw new Error("Assertion failed: The dependency should have been resolved");let p=gK(c,f.version);return[AK(t,{parentLocator:a,sourcePackage:f,patchPaths:n,patchHash:p})]}async getSatisfying(t,r,s,a){let[n]=await this.getCandidates(t,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(t,r){let{sourceLocator:s}=eP(t);return{...await r.resolver.resolve(s,r),...t}}};qe();Dt();Yt();var R1=class extends At{constructor(){super(...arguments);this.save=he.Boolean("-s,--save",!1,{description:"Add the patch to your resolution entries"});this.patchFolder=he.String()}static{this.paths=[["patch-commit"]]}static{this.usage=at.Usage({description:"generate a patch out of a directory",details:"\n By default, this will print a patchfile on stdout based on the diff between the folder passed in and the original version of the package. Such file is suitable for consumption with the `patch:` protocol.\n\n With the `-s,--save` option set, the patchfile won't be printed on stdout anymore and will instead be stored within a local file (by default kept within `.yarn/patches`, but configurable via the `patchFolder` setting). A `resolutions` entry will also be added to your top-level manifest, referencing the patched package via the `patch:` protocol.\n\n Note that only folders generated by `yarn patch` are accepted as valid input for `yarn patch-commit`.\n "})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let n=J.resolve(this.context.cwd,fe.toPortablePath(this.patchFolder)),c=J.join(n,"../source"),f=J.join(n,"../.yarn-patch.json");if(!le.existsSync(c))throw new it("The argument folder didn't get created by 'yarn patch'");let p=await dK(c,n),h=await le.readJsonPromise(f),E=j.parseLocator(h.locator,!0);if(!s.storedPackages.has(E.locatorHash))throw new it("No package found in the project for the given locator");if(!this.save){this.context.stdout.write(p);return}let C=r.get("patchFolder"),S=J.join(C,`${j.slugifyLocator(E)}.patch`);await le.mkdirPromise(C,{recursive:!0}),await le.writeFilePromise(S,p);let x=[],I=new Map;for(let T of s.storedPackages.values()){if(j.isVirtualLocator(T))continue;let O=T.dependencies.get(E.identHash);if(!O)continue;let U=j.ensureDevirtualizedDescriptor(O),V=fK(U),te=s.storedResolutions.get(V.descriptorHash);if(!te)throw new Error("Assertion failed: Expected the resolution to have been registered");if(!s.storedPackages.get(te))throw new Error("Assertion failed: Expected the package to have been registered");let ue=s.tryWorkspaceByLocator(T);if(ue)x.push(ue);else{let ae=s.originalPackages.get(T.locatorHash);if(!ae)throw new Error("Assertion failed: Expected the original package to have been registered");let ge=ae.dependencies.get(O.identHash);if(!ge)throw new Error("Assertion failed: Expected the original dependency to have been registered");I.set(ge.descriptorHash,ge)}}for(let T of x)for(let O of _t.hardDependencies){let U=T.manifest[O].get(E.identHash);if(!U)continue;let V=IL(U,{parentLocator:null,sourceDescriptor:j.convertLocatorToDescriptor(E),patchPaths:[J.join(Er.home,J.relative(s.cwd,S))]});T.manifest[O].set(U.identHash,V)}for(let T of I.values()){let O=IL(T,{parentLocator:null,sourceDescriptor:j.convertLocatorToDescriptor(E),patchPaths:[J.join(Er.home,J.relative(s.cwd,S))]});s.topLevelWorkspace.manifest.resolutions.push({pattern:{descriptor:{fullName:j.stringifyIdent(O),description:T.range}},reference:O.range})}await s.persist()}};qe();Dt();Yt();var T1=class extends At{constructor(){super(...arguments);this.update=he.Boolean("-u,--update",!1,{description:"Reapply local patches that already apply to this packages"});this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.package=he.String()}static{this.paths=[["patch"]]}static{this.usage=at.Usage({description:"prepare a package for patching",details:"\n This command will cause a package to be extracted in a temporary directory intended to be editable at will.\n\n Once you're done with your changes, run `yarn patch-commit -s path` (with `path` being the temporary directory you received) to generate a patchfile and register it into your top-level manifest via the `patch:` protocol. Run `yarn patch-commit -h` for more details.\n\n Calling the command when you already have a patch won't import it by default (in other words, the default behavior is to reset existing patches). However, adding the `-u,--update` flag will import any current patch.\n "})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Kr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let c=j.parseLocator(this.package);if(c.reference==="unknown"){let f=Ge.mapAndFilter([...s.storedPackages.values()],p=>p.identHash!==c.identHash?Ge.mapAndFilter.skip:j.isVirtualLocator(p)?Ge.mapAndFilter.skip:Qd(p)!==this.update?Ge.mapAndFilter.skip:p);if(f.length===0)throw new it("No package found in the project for the given locator");if(f.length>1)throw new it(`Multiple candidate packages found; explicitly choose one of them (use \`yarn why \` to get more information as to who depends on them): +${f.map(p=>` +- ${j.prettyLocator(r,p)}`).join("")}`);c=f[0]}if(!s.storedPackages.has(c.locatorHash))throw new it("No package found in the project for the given locator");await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async f=>{let p=EL(c),h=await hK(c,{cache:n,project:s});f.reportJson({locator:j.stringifyLocator(p),path:fe.fromPortablePath(h)});let E=this.update?" along with its current modifications":"";f.reportInfo(0,`Package ${j.prettyLocator(r,p)} got extracted with success${E}!`),f.reportInfo(0,`You can now edit the following folder: ${pe.pretty(r,fe.fromPortablePath(h),"magenta")}`),f.reportInfo(0,`Once you are done run ${pe.pretty(r,`yarn patch-commit -s ${process.platform==="win32"?'"':""}${fe.fromPortablePath(h)}${process.platform==="win32"?'"':""}`,"cyan")} and Yarn will store a patchfile based on your changes.`)})}};var tSt={configuration:{enableInlineHunks:{description:"If true, the installs will print unmatched patch hunks",type:"BOOLEAN",default:!1},patchFolder:{description:"Folder where the patch files must be written",type:"ABSOLUTE_PATH",default:"./.yarn/patches"}},commands:[R1,T1],fetchers:[rP],resolvers:[nP]},rSt=tSt;var IK={};Vt(IK,{PnpmLinker:()=>iP,default:()=>lSt});qe();Dt();Yt();var iP=class{getCustomDataKey(){return JSON.stringify({name:"PnpmLinker",version:3})}supportsPackage(t,r){return this.isEnabled(r)}async findPackageLocation(t,r){if(!this.isEnabled(r))throw new Error("Assertion failed: Expected the pnpm linker to be enabled");let s=this.getCustomDataKey(),a=r.project.linkersCustomData.get(s);if(!a)throw new it(`The project in ${pe.pretty(r.project.configuration,`${r.project.cwd}/package.json`,pe.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let n=a.pathsByLocator.get(t.locatorHash);if(typeof n>"u")throw new it(`Couldn't find ${j.prettyLocator(r.project.configuration,t)} in the currently installed pnpm map - running an install might help`);return n.packageLocation}async findPackageLocator(t,r){if(!this.isEnabled(r))return null;let s=this.getCustomDataKey(),a=r.project.linkersCustomData.get(s);if(!a)throw new it(`The project in ${pe.pretty(r.project.configuration,`${r.project.cwd}/package.json`,pe.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let n=t.match(/(^.*\/node_modules\/(@[^/]*\/)?[^/]+)(\/.*$)/);if(n){let p=a.locatorByPath.get(n[1]);if(p)return p}let c=t,f=t;do{f=c,c=J.dirname(f);let p=a.locatorByPath.get(f);if(p)return p}while(c!==f);return null}makeInstaller(t){return new yK(t)}isEnabled(t){return t.project.configuration.get("nodeLinker")==="pnpm"}},yK=class{constructor(t){this.opts=t;this.asyncActions=new Ge.AsyncActions(10);this.customData={pathsByLocator:new Map,locatorByPath:new Map};this.indexFolderPromise=$P(le,{indexPath:J.join(t.project.configuration.get("globalFolder"),"index")})}attachCustomData(t){}async installPackage(t,r,s){switch(t.linkType){case"SOFT":return this.installPackageSoft(t,r,s);case"HARD":return this.installPackageHard(t,r,s)}throw new Error("Assertion failed: Unsupported package link type")}async installPackageSoft(t,r,s){let a=J.resolve(r.packageFs.getRealPath(),r.prefixPath),n=this.opts.project.tryWorkspaceByLocator(t)?J.join(a,Er.nodeModules):null;return this.customData.pathsByLocator.set(t.locatorHash,{packageLocation:a,dependenciesLocation:n}),{packageLocation:a,buildRequest:null}}async installPackageHard(t,r,s){let a=iSt(t,{project:this.opts.project}),n=a.packageLocation;this.customData.locatorByPath.set(n,j.stringifyLocator(t)),this.customData.pathsByLocator.set(t.locatorHash,a),s.holdFetchResult(this.asyncActions.set(t.locatorHash,async()=>{await le.mkdirPromise(n,{recursive:!0}),await le.copyPromise(n,r.prefixPath,{baseFs:r.packageFs,overwrite:!1,linkStrategy:{type:"HardlinkFromIndex",indexPath:await this.indexFolderPromise,autoRepair:!0}})}));let f=j.isVirtualLocator(t)?j.devirtualizeLocator(t):t,p={manifest:await _t.tryFind(r.prefixPath,{baseFs:r.packageFs})??new _t,misc:{hasBindingGyp:mA.hasBindingGyp(r)}},h=this.opts.project.getDependencyMeta(f,t.version),E=mA.extractBuildRequest(t,p,h,{configuration:this.opts.project.configuration});return{packageLocation:n,buildRequest:E}}async attachInternalDependencies(t,r){if(this.opts.project.configuration.get("nodeLinker")!=="pnpm"||!Wbe(t,{project:this.opts.project}))return;let s=this.customData.pathsByLocator.get(t.locatorHash);if(typeof s>"u")throw new Error(`Assertion failed: Expected the package to have been registered (${j.stringifyLocator(t)})`);let{dependenciesLocation:a}=s;a&&this.asyncActions.reduce(t.locatorHash,async n=>{await le.mkdirPromise(a,{recursive:!0});let c=await sSt(a),f=new Map(c),p=[n],h=(C,S)=>{let x=S;Wbe(S,{project:this.opts.project})||(this.opts.report.reportWarningOnce(0,"The pnpm linker doesn't support providing different versions to workspaces' peer dependencies"),x=j.devirtualizeLocator(S));let I=this.customData.pathsByLocator.get(x.locatorHash);if(typeof I>"u")throw new Error(`Assertion failed: Expected the package to have been registered (${j.stringifyLocator(S)})`);let T=j.stringifyIdent(C),O=J.join(a,T),U=J.relative(J.dirname(O),I.packageLocation),V=f.get(T);f.delete(T),p.push(Promise.resolve().then(async()=>{if(V){if(V.isSymbolicLink()&&await le.readlinkPromise(O)===U)return;await le.removePromise(O)}await le.mkdirpPromise(J.dirname(O)),process.platform=="win32"&&this.opts.project.configuration.get("winLinkType")==="junctions"?await le.symlinkPromise(I.packageLocation,O,"junction"):await le.symlinkPromise(U,O)}))},E=!1;for(let[C,S]of r)C.identHash===t.identHash&&(E=!0),h(C,S);!E&&!this.opts.project.tryWorkspaceByLocator(t)&&h(j.convertLocatorToDescriptor(t),t),p.push(oSt(a,f)),await Promise.all(p)})}async attachExternalDependents(t,r){throw new Error("External dependencies haven't been implemented for the pnpm linker")}async finalizeInstall(){let t=Ybe(this.opts.project);if(this.opts.project.configuration.get("nodeLinker")!=="pnpm")await le.removePromise(t);else{let r;try{r=new Set(await le.readdirPromise(t))}catch{r=new Set}for(let{dependenciesLocation:s}of this.customData.pathsByLocator.values()){if(!s)continue;let a=J.contains(t,s);if(a===null)continue;let[n]=a.split(J.sep);r.delete(n)}await Promise.all([...r].map(async s=>{await le.removePromise(J.join(t,s))}))}return await this.asyncActions.wait(),await EK(t),this.opts.project.configuration.get("nodeLinker")!=="node-modules"&&await EK(nSt(this.opts.project)),{customData:this.customData}}};function nSt(e){return J.join(e.cwd,Er.nodeModules)}function Ybe(e){return e.configuration.get("pnpmStoreFolder")}function iSt(e,{project:t}){let r=j.slugifyLocator(e),s=Ybe(t),a=J.join(s,r,"package"),n=J.join(s,r,Er.nodeModules);return{packageLocation:a,dependenciesLocation:n}}function Wbe(e,{project:t}){return!j.isVirtualLocator(e)||!t.tryWorkspaceByLocator(e)}async function sSt(e){let t=new Map,r=[];try{r=await le.readdirPromise(e,{withFileTypes:!0})}catch(s){if(s.code!=="ENOENT")throw s}try{for(let s of r)if(!s.name.startsWith("."))if(s.name.startsWith("@")){let a=await le.readdirPromise(J.join(e,s.name),{withFileTypes:!0});if(a.length===0)t.set(s.name,s);else for(let n of a)t.set(`${s.name}/${n.name}`,n)}else t.set(s.name,s)}catch(s){if(s.code!=="ENOENT")throw s}return t}async function oSt(e,t){let r=[],s=new Set;for(let a of t.keys()){r.push(le.removePromise(J.join(e,a)));let n=j.tryParseIdent(a)?.scope;n&&s.add(`@${n}`)}return Promise.all(r).then(()=>Promise.all([...s].map(a=>EK(J.join(e,a)))))}async function EK(e){try{await le.rmdirPromise(e)}catch(t){if(t.code!=="ENOENT"&&t.code!=="ENOTEMPTY"&&t.code!=="EBUSY")throw t}}var aSt={configuration:{pnpmStoreFolder:{description:"By default, the store is stored in the 'node_modules/.store' of the project. Sometimes in CI scenario's it is convenient to store this in a different location so it can be cached and reused.",type:"ABSOLUTE_PATH",default:"./node_modules/.store"}},linkers:[iP]},lSt=aSt;var bK={};Vt(bK,{StageCommand:()=>F1,default:()=>ESt,stageUtils:()=>wL});qe();Dt();Yt();qe();Dt();var wL={};Vt(wL,{ActionType:()=>CK,checkConsensus:()=>CL,expandDirectory:()=>vK,findConsensus:()=>SK,findVcsRoot:()=>wK,genCommitMessage:()=>DK,getCommitPrefix:()=>Vbe,isYarnFile:()=>BK});Dt();var CK=(n=>(n[n.CREATE=0]="CREATE",n[n.DELETE=1]="DELETE",n[n.ADD=2]="ADD",n[n.REMOVE=3]="REMOVE",n[n.MODIFY=4]="MODIFY",n))(CK||{});async function wK(e,{marker:t}){do if(!le.existsSync(J.join(e,t)))e=J.dirname(e);else return e;while(e!=="/");return null}function BK(e,{roots:t,names:r}){if(r.has(J.basename(e)))return!0;do if(!t.has(e))e=J.dirname(e);else return!0;while(e!=="/");return!1}function vK(e){let t=[],r=[e];for(;r.length>0;){let s=r.pop(),a=le.readdirSync(s);for(let n of a){let c=J.resolve(s,n);le.lstatSync(c).isDirectory()?r.push(c):t.push(c)}}return t}function CL(e,t){let r=0,s=0;for(let a of e)a!=="wip"&&(t.test(a)?r+=1:s+=1);return r>=s}function SK(e){let t=CL(e,/^(\w\(\w+\):\s*)?\w+s/),r=CL(e,/^(\w\(\w+\):\s*)?[A-Z]/),s=CL(e,/^\w\(\w+\):/);return{useThirdPerson:t,useUpperCase:r,useComponent:s}}function Vbe(e){return e.useComponent?"chore(yarn): ":""}var cSt=new Map([[0,"create"],[1,"delete"],[2,"add"],[3,"remove"],[4,"update"]]);function DK(e,t){let r=Vbe(e),s=[],a=t.slice().sort((n,c)=>n[0]-c[0]);for(;a.length>0;){let[n,c]=a.shift(),f=cSt.get(n);e.useUpperCase&&s.length===0&&(f=`${f[0].toUpperCase()}${f.slice(1)}`),e.useThirdPerson&&(f+="s");let p=[c];for(;a.length>0&&a[0][0]===n;){let[,E]=a.shift();p.push(E)}p.sort();let h=p.shift();p.length===1?h+=" (and one other)":p.length>1&&(h+=` (and ${p.length} others)`),s.push(`${f} ${h}`)}return`${r}${s.join(", ")}`}var uSt="Commit generated via `yarn stage`",fSt=11;async function Jbe(e){let{code:t,stdout:r}=await qr.execvp("git",["log","-1","--pretty=format:%H"],{cwd:e});return t===0?r.trim():null}async function ASt(e,t){let r=[],s=t.filter(h=>J.basename(h.path)==="package.json");for(let{action:h,path:E}of s){let C=J.relative(e,E);if(h===4){let S=await Jbe(e),{stdout:x}=await qr.execvp("git",["show",`${S}:${C}`],{cwd:e,strict:!0}),I=await _t.fromText(x),T=await _t.fromFile(E),O=new Map([...T.dependencies,...T.devDependencies]),U=new Map([...I.dependencies,...I.devDependencies]);for(let[V,te]of U){let ie=j.stringifyIdent(te),ue=O.get(V);ue?ue.range!==te.range&&r.push([4,`${ie} to ${ue.range}`]):r.push([3,ie])}for(let[V,te]of O)U.has(V)||r.push([2,j.stringifyIdent(te)])}else if(h===0){let S=await _t.fromFile(E);S.name?r.push([0,j.stringifyIdent(S.name)]):r.push([0,"a package"])}else if(h===1){let S=await Jbe(e),{stdout:x}=await qr.execvp("git",["show",`${S}:${C}`],{cwd:e,strict:!0}),I=await _t.fromText(x);I.name?r.push([1,j.stringifyIdent(I.name)]):r.push([1,"a package"])}else throw new Error("Assertion failed: Unsupported action type")}let{code:a,stdout:n}=await qr.execvp("git",["log",`-${fSt}`,"--pretty=format:%s"],{cwd:e}),c=a===0?n.split(/\n/g).filter(h=>h!==""):[],f=SK(c);return DK(f,r)}var pSt={0:[" A ","?? "],4:[" M "],1:[" D "]},hSt={0:["A "],4:["M "],1:["D "]},Kbe={async findRoot(e){return await wK(e,{marker:".git"})},async filterChanges(e,t,r,s){let{stdout:a}=await qr.execvp("git",["status","-s"],{cwd:e,strict:!0}),n=a.toString().split(/\n/g),c=s?.staged?hSt:pSt;return[].concat(...n.map(p=>{if(p==="")return[];let h=p.slice(0,3),E=J.resolve(e,p.slice(3));if(!s?.staged&&h==="?? "&&p.endsWith("/"))return vK(E).map(C=>({action:0,path:C}));{let S=[0,4,1].find(x=>c[x].includes(h));return S!==void 0?[{action:S,path:E}]:[]}})).filter(p=>BK(p.path,{roots:t,names:r}))},async genCommitMessage(e,t){return await ASt(e,t)},async makeStage(e,t){let r=t.map(s=>fe.fromPortablePath(s.path));await qr.execvp("git",["add","--",...r],{cwd:e,strict:!0})},async makeCommit(e,t,r){let s=t.map(a=>fe.fromPortablePath(a.path));await qr.execvp("git",["add","-N","--",...s],{cwd:e,strict:!0}),await qr.execvp("git",["commit","-m",`${r} + +${uSt} +`,"--",...s],{cwd:e,strict:!0})},async makeReset(e,t){let r=t.map(s=>fe.fromPortablePath(s.path));await qr.execvp("git",["reset","HEAD","--",...r],{cwd:e,strict:!0})}};var dSt=[Kbe],F1=class extends At{constructor(){super(...arguments);this.commit=he.Boolean("-c,--commit",!1,{description:"Commit the staged files"});this.reset=he.Boolean("-r,--reset",!1,{description:"Remove all files from the staging area"});this.dryRun=he.Boolean("-n,--dry-run",!1,{description:"Print the commit message and the list of modified files without staging / committing"});this.update=he.Boolean("-u,--update",!1,{hidden:!0})}static{this.paths=[["stage"]]}static{this.usage=at.Usage({description:"add all yarn files to your vcs",details:"\n This command will add to your staging area the files belonging to Yarn (typically any modified `package.json` and `.yarnrc.yml` files, but also linker-generated files, cache data, etc). It will take your ignore list into account, so the cache files won't be added if the cache is ignored in a `.gitignore` file (assuming you use Git).\n\n Running `--reset` will instead remove them from the staging area (the changes will still be there, but won't be committed until you stage them back).\n\n Since the staging area is a non-existent concept in Mercurial, Yarn will always create a new commit when running this command on Mercurial repositories. You can get this behavior when using Git by using the `--commit` flag which will directly create a commit.\n ",examples:[["Adds all modified project files to the staging area","yarn stage"],["Creates a new commit containing all modified project files","yarn stage --commit"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Rt.find(r,this.context.cwd),{driver:a,root:n}=await gSt(s.cwd),c=[r.get("cacheFolder"),r.get("globalFolder"),r.get("virtualFolder"),r.get("yarnPath")];await r.triggerHook(C=>C.populateYarnPaths,s,C=>{c.push(C)});let f=new Set;for(let C of c)for(let S of mSt(n,C))f.add(S);let p=new Set([r.get("rcFilename"),Er.lockfile,Er.manifest]),h=await a.filterChanges(n,f,p),E=await a.genCommitMessage(n,h);if(this.dryRun)if(this.commit)this.context.stdout.write(`${E} +`);else for(let C of h)this.context.stdout.write(`${fe.fromPortablePath(C.path)} +`);else if(this.reset){let C=await a.filterChanges(n,f,p,{staged:!0});C.length===0?this.context.stdout.write("No staged changes found!"):await a.makeReset(n,C)}else h.length===0?this.context.stdout.write("No changes found!"):this.commit?await a.makeCommit(n,h,E):(await a.makeStage(n,h),this.context.stdout.write(E))}};async function gSt(e){let t=null,r=null;for(let s of dSt)if((r=await s.findRoot(e))!==null){t=s;break}if(t===null||r===null)throw new it("No stage driver has been found for your current project");return{driver:t,root:r}}function mSt(e,t){let r=[];if(t===null)return r;for(;;){(t===e||t.startsWith(`${e}/`))&&r.push(t);let s;try{s=le.statSync(t)}catch{break}if(s.isSymbolicLink())t=J.resolve(J.dirname(t),le.readlinkSync(t));else break}return r}var ySt={commands:[F1]},ESt=ySt;var PK={};Vt(PK,{default:()=>bSt});qe();qe();Dt();var Zbe=et(pi());qe();var zbe=et(F9()),ISt="e8e1bd300d860104bb8c58453ffa1eb4",CSt="OFCNCOG2CU",Xbe=async(e,t)=>{let r=j.stringifyIdent(e),a=wSt(t).initIndex("npm-search");try{return(await a.getObject(r,{attributesToRetrieve:["types"]})).types?.ts==="definitely-typed"}catch{return!1}},wSt=e=>(0,zbe.default)(CSt,ISt,{requester:{async send(r){try{let s=await nn.request(r.url,r.data||null,{configuration:e,headers:r.headers});return{content:s.body,isTimedOut:!1,status:s.statusCode}}catch(s){return{content:s.response.body,isTimedOut:!1,status:s.response.statusCode}}}}});var $be=e=>e.scope?`${e.scope}__${e.name}`:`${e.name}`,BSt=async(e,t,r,s)=>{if(r.scope==="types")return;let{project:a}=e,{configuration:n}=a;if(!(n.get("tsEnableAutoTypes")??(le.existsSync(J.join(e.cwd,"tsconfig.json"))||le.existsSync(J.join(a.cwd,"tsconfig.json")))))return;let f=n.makeResolver(),p={project:a,resolver:f,report:new ki};if(!await Xbe(r,n))return;let E=$be(r),C=j.parseRange(r.range).selector;if(!kr.validRange(C)){let O=n.normalizeDependency(r),U=await f.getCandidates(O,{},p);C=j.parseRange(U[0].reference).selector}let S=Zbe.default.coerce(C);if(S===null)return;let x=`${$u.Modifier.CARET}${S.major}`,I=j.makeDescriptor(j.makeIdent("types",E),x),T=Ge.mapAndFind(a.workspaces,O=>{let U=O.manifest.dependencies.get(r.identHash)?.descriptorHash,V=O.manifest.devDependencies.get(r.identHash)?.descriptorHash;if(U!==r.descriptorHash&&V!==r.descriptorHash)return Ge.mapAndFind.skip;let te=[];for(let ie of _t.allDependencies){let ue=O.manifest[ie].get(I.identHash);typeof ue>"u"||te.push([ie,ue])}return te.length===0?Ge.mapAndFind.skip:te});if(typeof T<"u")for(let[O,U]of T)e.manifest[O].set(U.identHash,U);else{try{let O=n.normalizeDependency(I);if((await f.getCandidates(O,{},p)).length===0)return}catch{return}e.manifest[$u.Target.DEVELOPMENT].set(I.identHash,I)}},vSt=async(e,t,r)=>{if(r.scope==="types")return;let{project:s}=e,{configuration:a}=s;if(!(a.get("tsEnableAutoTypes")??(le.existsSync(J.join(e.cwd,"tsconfig.json"))||le.existsSync(J.join(s.cwd,"tsconfig.json")))))return;let c=$be(r),f=j.makeIdent("types",c);for(let p of _t.allDependencies)typeof e.manifest[p].get(f.identHash)>"u"||e.manifest[p].delete(f.identHash)},SSt=(e,t)=>{t.publishConfig&&t.publishConfig.typings&&(t.typings=t.publishConfig.typings),t.publishConfig&&t.publishConfig.types&&(t.types=t.publishConfig.types)},DSt={configuration:{tsEnableAutoTypes:{description:"Whether Yarn should auto-install @types/ dependencies on 'yarn add'",type:"BOOLEAN",isNullable:!0,default:null}},hooks:{afterWorkspaceDependencyAddition:BSt,afterWorkspaceDependencyRemoval:vSt,beforeWorkspacePacking:SSt}},bSt=DSt;var TK={};Vt(TK,{VersionApplyCommand:()=>M1,VersionCheckCommand:()=>U1,VersionCommand:()=>_1,default:()=>RSt,versionUtils:()=>L1});qe();qe();Yt();var L1={};Vt(L1,{Decision:()=>N1,applyPrerelease:()=>ePe,applyReleases:()=>RK,applyStrategy:()=>sP,clearVersionFiles:()=>xK,getUndecidedDependentWorkspaces:()=>aP,getUndecidedWorkspaces:()=>BL,openVersionFile:()=>O1,requireMoreDecisions:()=>xSt,resolveVersionFiles:()=>oP,suggestStrategy:()=>QK,updateVersionFiles:()=>kK,validateReleaseDecision:()=>Ey});qe();Dt();vc();Yt();zl();var RA=et(pi()),PSt=/^(>=|[~^]|)(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(-(0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(\.(0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*)?(\+[0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+)*)?$/,N1=(h=>(h.UNDECIDED="undecided",h.DECLINE="decline",h.MAJOR="major",h.MINOR="minor",h.PATCH="patch",h.PREMAJOR="premajor",h.PREMINOR="preminor",h.PREPATCH="prepatch",h.PRERELEASE="prerelease",h))(N1||{});function Ey(e){let t=RA.default.valid(e);return t||Ge.validateEnum(I4(N1,"UNDECIDED"),e)}async function oP(e,{prerelease:t=null}={}){let r=new Map,s=e.configuration.get("deferredVersionFolder");if(!le.existsSync(s))return r;let a=await le.readdirPromise(s);for(let n of a){if(!n.endsWith(".yml"))continue;let c=J.join(s,n),f=await le.readFilePromise(c,"utf8"),p=cs(f);for(let[h,E]of Object.entries(p.releases||{})){if(E==="decline")continue;let C=j.parseIdent(h),S=e.tryWorkspaceByIdent(C);if(S===null)throw new Error(`Assertion failed: Expected a release definition file to only reference existing workspaces (${J.basename(c)} references ${h})`);if(S.manifest.version===null)throw new Error(`Assertion failed: Expected the workspace to have a version (${j.prettyLocator(e.configuration,S.anchoredLocator)})`);let x=S.manifest.raw.stableVersion??S.manifest.version,I=r.get(S),T=sP(E==="prerelease"?S.manifest.version:x,Ey(E));if(T===null)throw new Error(`Assertion failed: Expected ${x} to support being bumped via strategy ${E}`);let O=typeof I<"u"?RA.default.gt(T,I)?T:I:T;r.set(S,O)}}return t&&(r=new Map([...r].map(([n,c])=>[n,ePe(c,{current:n.manifest.version,prerelease:t})]))),r}async function xK(e){let t=e.configuration.get("deferredVersionFolder");le.existsSync(t)&&await le.removePromise(t)}async function kK(e,t){let r=new Set(t),s=e.configuration.get("deferredVersionFolder");if(!le.existsSync(s))return;let a=await le.readdirPromise(s);for(let n of a){if(!n.endsWith(".yml"))continue;let c=J.join(s,n),f=await le.readFilePromise(c,"utf8"),p=cs(f),h=p?.releases;if(h){for(let E of Object.keys(h)){let C=j.parseIdent(E),S=e.tryWorkspaceByIdent(C);(S===null||r.has(S))&&delete p.releases[E]}Object.keys(p.releases).length>0?await le.changeFilePromise(c,fl(new fl.PreserveOrdering(p))):await le.unlinkPromise(c)}}}async function O1(e,{allowEmpty:t=!1}={}){let r=e.configuration;if(r.projectCwd===null)throw new it("This command can only be run from within a Yarn project");let s=await La.fetchRoot(r.projectCwd),a=s!==null?await La.fetchBase(s,{baseRefs:r.get("changesetBaseRefs")}):null,n=s!==null?await La.fetchChangedFiles(s,{base:a.hash,project:e}):[],c=r.get("deferredVersionFolder"),f=n.filter(x=>J.contains(c,x)!==null);if(f.length>1)throw new it(`Your current branch contains multiple versioning files; this isn't supported: +- ${f.map(x=>fe.fromPortablePath(x)).join(` +- `)}`);let p=new Set(Ge.mapAndFilter(n,x=>{let I=e.tryWorkspaceByFilePath(x);return I===null?Ge.mapAndFilter.skip:I}));if(f.length===0&&p.size===0&&!t)return null;let h=f.length===1?f[0]:J.join(c,`${Ln.makeHash(Math.random().toString()).slice(0,8)}.yml`),E=le.existsSync(h)?await le.readFilePromise(h,"utf8"):"{}",C=cs(E),S=new Map;for(let x of C.declined||[]){let I=j.parseIdent(x),T=e.getWorkspaceByIdent(I);S.set(T,"decline")}for(let[x,I]of Object.entries(C.releases||{})){let T=j.parseIdent(x),O=e.getWorkspaceByIdent(T);S.set(O,Ey(I))}return{project:e,root:s,baseHash:a!==null?a.hash:null,baseTitle:a!==null?a.title:null,changedFiles:new Set(n),changedWorkspaces:p,releaseRoots:new Set([...p].filter(x=>x.manifest.version!==null)),releases:S,async saveAll(){let x={},I=[],T=[];for(let O of e.workspaces){if(O.manifest.version===null)continue;let U=j.stringifyIdent(O.anchoredLocator),V=S.get(O);V==="decline"?I.push(U):typeof V<"u"?x[U]=Ey(V):p.has(O)&&T.push(U)}await le.mkdirPromise(J.dirname(h),{recursive:!0}),await le.changeFilePromise(h,fl(new fl.PreserveOrdering({releases:Object.keys(x).length>0?x:void 0,declined:I.length>0?I:void 0,undecided:T.length>0?T:void 0})))}}}function xSt(e){return BL(e).size>0||aP(e).length>0}function BL(e){let t=new Set;for(let r of e.changedWorkspaces)r.manifest.version!==null&&(e.releases.has(r)||t.add(r));return t}function aP(e,{include:t=new Set}={}){let r=[],s=new Map(Ge.mapAndFilter([...e.releases],([n,c])=>c==="decline"?Ge.mapAndFilter.skip:[n.anchoredLocator.locatorHash,n])),a=new Map(Ge.mapAndFilter([...e.releases],([n,c])=>c!=="decline"?Ge.mapAndFilter.skip:[n.anchoredLocator.locatorHash,n]));for(let n of e.project.workspaces)if(!(!t.has(n)&&(a.has(n.anchoredLocator.locatorHash)||s.has(n.anchoredLocator.locatorHash)))&&n.manifest.version!==null)for(let c of _t.hardDependencies)for(let f of n.manifest.getForScope(c).values()){let p=e.project.tryWorkspaceByDescriptor(f);p!==null&&s.has(p.anchoredLocator.locatorHash)&&r.push([n,p])}return r}function QK(e,t){let r=RA.default.clean(t);for(let s of Object.values(N1))if(s!=="undecided"&&s!=="decline"&&RA.default.inc(e,s)===r)return s;return null}function sP(e,t){if(RA.default.valid(t))return t;if(e===null)throw new it(`Cannot apply the release strategy "${t}" unless the workspace already has a valid version`);if(!RA.default.valid(e))throw new it(`Cannot apply the release strategy "${t}" on a non-semver version (${e})`);let r=RA.default.inc(e,t);if(r===null)throw new it(`Cannot apply the release strategy "${t}" on the specified version (${e})`);return r}function RK(e,t,{report:r,exact:s}){let a=new Map;for(let n of e.workspaces)for(let c of _t.allDependencies)for(let f of n.manifest[c].values()){let p=e.tryWorkspaceByDescriptor(f);if(p===null||!t.has(p))continue;Ge.getArrayWithDefault(a,p).push([n,c,f.identHash])}for(let[n,c]of t){let f=n.manifest.version;n.manifest.version=c,RA.default.prerelease(c)===null?delete n.manifest.raw.stableVersion:n.manifest.raw.stableVersion||(n.manifest.raw.stableVersion=f);let p=n.manifest.name!==null?j.stringifyIdent(n.manifest.name):null;r.reportInfo(0,`${j.prettyLocator(e.configuration,n.anchoredLocator)}: Bumped to ${c}`),r.reportJson({cwd:fe.fromPortablePath(n.cwd),ident:p,oldVersion:f,newVersion:c});let h=a.get(n);if(!(typeof h>"u"))for(let[E,C,S]of h){let x=E.manifest[C].get(S);if(typeof x>"u")throw new Error("Assertion failed: The dependency should have existed");let I=x.range,T=!1;if(I.startsWith(Ii.protocol)&&(I=I.slice(Ii.protocol.length),T=!0,I===n.relativeCwd))continue;let O=I.match(PSt);if(!O){r.reportWarning(0,`Couldn't auto-upgrade range ${I} (in ${j.prettyLocator(e.configuration,E.anchoredLocator)})`);continue}let U=s?`${c}`:`${O[1]}${c}`;T&&(U=`${Ii.protocol}${U}`);let V=j.makeDescriptor(x,U);E.manifest[C].set(S,V)}}}var kSt=new Map([["%n",{extract:e=>e.length>=1?[e[0],e.slice(1)]:null,generate:(e=0)=>`${e+1}`}]]);function ePe(e,{current:t,prerelease:r}){let s=new RA.default.SemVer(t),a=s.prerelease.slice(),n=[];s.prerelease=[],s.format()!==e&&(a.length=0);let c=!0,f=r.split(/\./g);for(let p of f){let h=kSt.get(p);if(typeof h>"u")n.push(p),a[0]===p?a.shift():c=!1;else{let E=c?h.extract(a):null;E!==null&&typeof E[0]=="number"?(n.push(h.generate(E[0])),a=E[1]):(n.push(h.generate()),c=!1)}}return s.prerelease&&(s.prerelease=[]),`${e}-${n.join(".")}`}var M1=class extends At{constructor(){super(...arguments);this.all=he.Boolean("--all",!1,{description:"Apply the deferred version changes on all workspaces"});this.dryRun=he.Boolean("--dry-run",!1,{description:"Print the versions without actually generating the package archive"});this.prerelease=he.String("--prerelease",{description:"Add a prerelease identifier to new versions",tolerateBoolean:!0});this.exact=he.Boolean("--exact",!1,{description:"Use the exact version of each package, removes any range. Useful for nightly releases where the range might match another version."});this.recursive=he.Boolean("-R,--recursive",{description:"Release the transitive workspaces as well"});this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["version","apply"]]}static{this.usage=at.Usage({category:"Release-related commands",description:"apply all the deferred version bumps at once",details:` + This command will apply the deferred version changes and remove their definitions from the repository. + + Note that if \`--prerelease\` is set, the given prerelease identifier (by default \`rc.%n\`) will be used on all new versions and the version definitions will be kept as-is. + + By default only the current workspace will be bumped, but you can configure this behavior by using one of: + + - \`--recursive\` to also apply the version bump on its dependencies + - \`--all\` to apply the version bump on all packages in the repository + + Note that this command will also update the \`workspace:\` references across all your local workspaces, thus ensuring that they keep referring to the same workspaces even after the version bump. + `,examples:[["Apply the version change to the local workspace","yarn version apply"],["Apply the version change to all the workspaces in the local workspace","yarn version apply --all"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Kr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async f=>{let p=this.prerelease?typeof this.prerelease!="boolean"?this.prerelease:"rc.%n":null,h=await oP(s,{prerelease:p}),E=new Map;if(this.all)E=h;else{let C=this.recursive?a.getRecursiveWorkspaceDependencies():[a];for(let S of C){let x=h.get(S);typeof x<"u"&&E.set(S,x)}}if(E.size===0){let C=h.size>0?" Did you want to add --all?":"";f.reportWarning(0,`The current workspace doesn't seem to require a version bump.${C}`);return}RK(s,E,{report:f,exact:this.exact}),this.dryRun||(p||(this.all?await xK(s):await kK(s,[...E.keys()])),f.reportSeparator())});return this.dryRun||c.hasErrors()?c.exitCode():await s.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:n})}};qe();Dt();Yt();var vL=et(pi());var U1=class extends At{constructor(){super(...arguments);this.interactive=he.Boolean("-i,--interactive",{description:"Open an interactive interface used to set version bumps"})}static{this.paths=[["version","check"]]}static{this.usage=at.Usage({category:"Release-related commands",description:"check that all the relevant packages have been bumped",details:"\n **Warning:** This command currently requires Git.\n\n This command will check that all the packages covered by the files listed in argument have been properly bumped or declined to bump.\n\n In the case of a bump, the check will also cover transitive packages - meaning that should `Foo` be bumped, a package `Bar` depending on `Foo` will require a decision as to whether `Bar` will need to be bumped. This check doesn't cross packages that have declined to bump.\n\n In case no arguments are passed to the function, the list of modified files will be generated by comparing the HEAD against `master`.\n ",examples:[["Check whether the modified packages need a bump","yarn version check"]]})}async execute(){return this.interactive?await this.executeInteractive():await this.executeStandard()}async executeInteractive(){KC(this.context);let{Gem:r}=await Promise.resolve().then(()=>(xF(),rW)),{ScrollableItems:s}=await Promise.resolve().then(()=>(TF(),RF)),{FocusRequest:a}=await Promise.resolve().then(()=>(sW(),Awe)),{useListInput:n}=await Promise.resolve().then(()=>(QF(),pwe)),{renderForm:c}=await Promise.resolve().then(()=>(LF(),OF)),{Box:f,Text:p}=await Promise.resolve().then(()=>et(qc())),{default:h,useCallback:E,useState:C}=await Promise.resolve().then(()=>et(dn())),S=await ze.find(this.context.cwd,this.context.plugins),{project:x,workspace:I}=await Rt.find(S,this.context.cwd);if(!I)throw new ar(x.cwd,this.context.cwd);await x.restoreInstallState();let T=await O1(x);if(T===null||T.releaseRoots.size===0)return 0;if(T.root===null)throw new it("This command can only be run on Git repositories");let O=()=>h.createElement(f,{flexDirection:"row",paddingBottom:1},h.createElement(f,{flexDirection:"column",width:60},h.createElement(f,null,h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},""),"/",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to select workspaces.")),h.createElement(f,null,h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},""),"/",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to select release strategies."))),h.createElement(f,{flexDirection:"column"},h.createElement(f,{marginLeft:1},h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to save.")),h.createElement(f,{marginLeft:1},h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to abort.")))),U=({workspace:ge,active:Ae,decision:Ce,setDecision:Ee})=>{let d=ge.manifest.raw.stableVersion??ge.manifest.version;if(d===null)throw new Error(`Assertion failed: The version should have been set (${j.prettyLocator(S,ge.anchoredLocator)})`);if(vL.default.prerelease(d)!==null)throw new Error(`Assertion failed: Prerelease identifiers shouldn't be found (${d})`);let Se=["undecided","decline","patch","minor","major"];n(Ce,Se,{active:Ae,minus:"left",plus:"right",set:Ee});let Be=Ce==="undecided"?h.createElement(p,{color:"yellow"},d):Ce==="decline"?h.createElement(p,{color:"green"},d):h.createElement(p,null,h.createElement(p,{color:"magenta"},d)," \u2192 ",h.createElement(p,{color:"green"},vL.default.valid(Ce)?Ce:vL.default.inc(d,Ce)));return h.createElement(f,{flexDirection:"column"},h.createElement(f,null,h.createElement(p,null,j.prettyLocator(S,ge.anchoredLocator)," - ",Be)),h.createElement(f,null,Se.map(me=>h.createElement(f,{key:me,paddingLeft:2},h.createElement(p,null,h.createElement(r,{active:me===Ce})," ",me)))))},V=ge=>{let Ae=new Set(T.releaseRoots),Ce=new Map([...ge].filter(([Ee])=>Ae.has(Ee)));for(;;){let Ee=aP({project:T.project,releases:Ce}),d=!1;if(Ee.length>0){for(let[Se]of Ee)if(!Ae.has(Se)){Ae.add(Se),d=!0;let Be=ge.get(Se);typeof Be<"u"&&Ce.set(Se,Be)}}if(!d)break}return{relevantWorkspaces:Ae,relevantReleases:Ce}},te=()=>{let[ge,Ae]=C(()=>new Map(T.releases)),Ce=E((Ee,d)=>{let Se=new Map(ge);d!=="undecided"?Se.set(Ee,d):Se.delete(Ee);let{relevantReleases:Be}=V(Se);Ae(Be)},[ge,Ae]);return[ge,Ce]},ie=({workspaces:ge,releases:Ae})=>{let Ce=[];Ce.push(`${ge.size} total`);let Ee=0,d=0;for(let Se of ge){let Be=Ae.get(Se);typeof Be>"u"?d+=1:Be!=="decline"&&(Ee+=1)}return Ce.push(`${Ee} release${Ee===1?"":"s"}`),Ce.push(`${d} remaining`),h.createElement(p,{color:"yellow"},Ce.join(", "))},ae=await c(({useSubmit:ge})=>{let[Ae,Ce]=te();ge(Ae);let{relevantWorkspaces:Ee}=V(Ae),d=new Set([...Ee].filter(ce=>!T.releaseRoots.has(ce))),[Se,Be]=C(0),me=E(ce=>{switch(ce){case a.BEFORE:Be(Se-1);break;case a.AFTER:Be(Se+1);break}},[Se,Be]);return h.createElement(f,{flexDirection:"column"},h.createElement(O,null),h.createElement(f,null,h.createElement(p,{wrap:"wrap"},"The following files have been modified in your local checkout.")),h.createElement(f,{flexDirection:"column",marginTop:1,paddingLeft:2},[...T.changedFiles].map(ce=>h.createElement(f,{key:ce},h.createElement(p,null,h.createElement(p,{color:"grey"},fe.fromPortablePath(T.root)),fe.sep,fe.relative(fe.fromPortablePath(T.root),fe.fromPortablePath(ce)))))),T.releaseRoots.size>0&&h.createElement(h.Fragment,null,h.createElement(f,{marginTop:1},h.createElement(p,{wrap:"wrap"},"Because of those files having been modified, the following workspaces may need to be released again (note that private workspaces are also shown here, because even though they won't be published, releasing them will allow us to flag their dependents for potential re-release):")),d.size>3?h.createElement(f,{marginTop:1},h.createElement(ie,{workspaces:T.releaseRoots,releases:Ae})):null,h.createElement(f,{marginTop:1,flexDirection:"column"},h.createElement(s,{active:Se%2===0,radius:1,size:2,onFocusRequest:me},[...T.releaseRoots].map(ce=>h.createElement(U,{key:ce.cwd,workspace:ce,decision:Ae.get(ce)||"undecided",setDecision:Z=>Ce(ce,Z)}))))),d.size>0?h.createElement(h.Fragment,null,h.createElement(f,{marginTop:1},h.createElement(p,{wrap:"wrap"},"The following workspaces depend on other workspaces that have been marked for release, and thus may need to be released as well:")),h.createElement(f,null,h.createElement(p,null,"(Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to move the focus between the workspace groups.)")),d.size>5?h.createElement(f,{marginTop:1},h.createElement(ie,{workspaces:d,releases:Ae})):null,h.createElement(f,{marginTop:1,flexDirection:"column"},h.createElement(s,{active:Se%2===1,radius:2,size:2,onFocusRequest:me},[...d].map(ce=>h.createElement(U,{key:ce.cwd,workspace:ce,decision:Ae.get(ce)||"undecided",setDecision:Z=>Ce(ce,Z)}))))):null)},{versionFile:T},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof ae>"u")return 1;T.releases.clear();for(let[ge,Ae]of ae)T.releases.set(ge,Ae);await T.saveAll()}async executeStandard(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);return await s.restoreInstallState(),(await Ot.start({configuration:r,stdout:this.context.stdout},async c=>{let f=await O1(s);if(f===null||f.releaseRoots.size===0)return;if(f.root===null)throw new it("This command can only be run on Git repositories");if(c.reportInfo(0,`Your PR was started right after ${pe.pretty(r,f.baseHash.slice(0,7),"yellow")} ${pe.pretty(r,f.baseTitle,"magenta")}`),f.changedFiles.size>0){c.reportInfo(0,"You have changed the following files since then:"),c.reportSeparator();for(let S of f.changedFiles)c.reportInfo(null,`${pe.pretty(r,fe.fromPortablePath(f.root),"gray")}${fe.sep}${fe.relative(fe.fromPortablePath(f.root),fe.fromPortablePath(S))}`)}let p=!1,h=!1,E=BL(f);if(E.size>0){p||c.reportSeparator();for(let S of E)c.reportError(0,`${j.prettyLocator(r,S.anchoredLocator)} has been modified but doesn't have a release strategy attached`);p=!0}let C=aP(f);for(let[S,x]of C)h||c.reportSeparator(),c.reportError(0,`${j.prettyLocator(r,S.anchoredLocator)} doesn't have a release strategy attached, but depends on ${j.prettyWorkspace(r,x)} which is planned for release.`),h=!0;(p||h)&&(c.reportSeparator(),c.reportInfo(0,"This command detected that at least some workspaces have received modifications without explicit instructions as to how they had to be released (if needed)."),c.reportInfo(0,"To correct these errors, run `yarn version check --interactive` then follow the instructions."))})).exitCode()}};qe();Yt();var SL=et(pi());var _1=class extends At{constructor(){super(...arguments);this.deferred=he.Boolean("-d,--deferred",{description:"Prepare the version to be bumped during the next release cycle"});this.immediate=he.Boolean("-i,--immediate",{description:"Bump the version immediately"});this.strategy=he.String()}static{this.paths=[["version"]]}static{this.usage=at.Usage({category:"Release-related commands",description:"apply a new version to the current package",details:"\n This command will bump the version number for the given package, following the specified strategy:\n\n - If `major`, the first number from the semver range will be increased (`X.0.0`).\n - If `minor`, the second number from the semver range will be increased (`0.X.0`).\n - If `patch`, the third number from the semver range will be increased (`0.0.X`).\n - If prefixed by `pre` (`premajor`, ...), a `-0` suffix will be set (`0.0.0-0`).\n - If `prerelease`, the suffix will be increased (`0.0.0-X`); the third number from the semver range will also be increased if there was no suffix in the previous version.\n - If `decline`, the nonce will be increased for `yarn version check` to pass without version bump.\n - If a valid semver range, it will be used as new version.\n - If unspecified, Yarn will ask you for guidance.\n\n For more information about the `--deferred` flag, consult our documentation (https://yarnpkg.com/features/release-workflow#deferred-versioning).\n ",examples:[["Immediately bump the version to the next major","yarn version major"],["Prepare the version to be bumped to the next major","yarn version major --deferred"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);let n=r.get("preferDeferredVersions");this.deferred&&(n=!0),this.immediate&&(n=!1);let c=SL.default.valid(this.strategy),f=this.strategy==="decline",p;if(c)if(a.manifest.version!==null){let E=QK(a.manifest.version,this.strategy);E!==null?p=E:p=this.strategy}else p=this.strategy;else{let E=a.manifest.version;if(!f){if(E===null)throw new it("Can't bump the version if there wasn't a version to begin with - use 0.0.0 as initial version then run the command again.");if(typeof E!="string"||!SL.default.valid(E))throw new it(`Can't bump the version (${E}) if it's not valid semver`)}p=Ey(this.strategy)}if(!n){let C=(await oP(s)).get(a);if(typeof C<"u"&&p!=="decline"){let S=sP(a.manifest.version,p);if(SL.default.lt(S,C))throw new it(`Can't bump the version to one that would be lower than the current deferred one (${C})`)}}let h=await O1(s,{allowEmpty:!0});return h.releases.set(a,p),await h.saveAll(),n?0:await this.cli.run(["version","apply"])}};var QSt={configuration:{deferredVersionFolder:{description:"Folder where are stored the versioning files",type:"ABSOLUTE_PATH",default:"./.yarn/versions"},preferDeferredVersions:{description:"If true, running `yarn version` will assume the `--deferred` flag unless `--immediate` is set",type:"BOOLEAN",default:!1}},commands:[M1,U1,_1]},RSt=QSt;var FK={};Vt(FK,{WorkspacesFocusCommand:()=>H1,WorkspacesForeachCommand:()=>G1,default:()=>NSt});qe();qe();Yt();var H1=class extends At{constructor(){super(...arguments);this.json=he.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.production=he.Boolean("--production",!1,{description:"Only install regular dependencies by omitting dev dependencies"});this.all=he.Boolean("-A,--all",!1,{description:"Install the entire project"});this.workspaces=he.Rest()}static{this.paths=[["workspaces","focus"]]}static{this.usage=at.Usage({category:"Workspace-related commands",description:"install a single workspace and its dependencies",details:"\n This command will run an install as if the specified workspaces (and all other workspaces they depend on) were the only ones in the project. If no workspaces are explicitly listed, the active one will be assumed.\n\n Note that this command is only very moderately useful when using zero-installs, since the cache will contain all the packages anyway - meaning that the only difference between a full install and a focused install would just be a few extra lines in the `.pnp.cjs` file, at the cost of introducing an extra complexity.\n\n If the `-A,--all` flag is set, the entire project will be installed. Combine with `--production` to replicate the old `yarn install --production`.\n "})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Kr.find(r);await s.restoreInstallState({restoreResolutions:!1});let c;if(this.all)c=new Set(s.workspaces);else if(this.workspaces.length===0){if(!a)throw new ar(s.cwd,this.context.cwd);c=new Set([a])}else c=new Set(this.workspaces.map(f=>s.getWorkspaceByIdent(j.parseIdent(f))));for(let f of c)for(let p of this.production?["dependencies"]:_t.hardDependencies)for(let h of f.manifest.getForScope(p).values()){let E=s.tryWorkspaceByDescriptor(h);E!==null&&c.add(E)}for(let f of s.workspaces)c.has(f)?this.production&&f.manifest.devDependencies.clear():(f.manifest.installConfig=f.manifest.installConfig||{},f.manifest.installConfig.selfReferences=!1,f.manifest.dependencies.clear(),f.manifest.devDependencies.clear(),f.manifest.peerDependencies.clear(),f.manifest.scripts.clear());return await s.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:n,persistProject:!1})}};qe();qe();qe();Yt();var j1=et(zo()),rPe=et(Ng());Al();var G1=class extends At{constructor(){super(...arguments);this.from=he.Array("--from",{description:"An array of glob pattern idents or paths from which to base any recursion"});this.all=he.Boolean("-A,--all",{description:"Run the command on all workspaces of a project"});this.recursive=he.Boolean("-R,--recursive",{description:"Run the command on the current workspace and all of its recursive dependencies"});this.worktree=he.Boolean("-W,--worktree",{description:"Run the command on all workspaces of the current worktree"});this.verbose=he.Counter("-v,--verbose",{description:"Increase level of logging verbosity up to 2 times"});this.parallel=he.Boolean("-p,--parallel",!1,{description:"Run the commands in parallel"});this.interlaced=he.Boolean("-i,--interlaced",!1,{description:"Print the output of commands in real-time instead of buffering it"});this.jobs=he.String("-j,--jobs",{description:"The maximum number of parallel tasks that the execution will be limited to; or `unlimited`",validator:$U([ks(["unlimited"]),W2(ZU(),[t_(),e_(1)])])});this.topological=he.Boolean("-t,--topological",!1,{description:"Run the command after all workspaces it depends on (regular) have finished"});this.topologicalDev=he.Boolean("--topological-dev",!1,{description:"Run the command after all workspaces it depends on (regular + dev) have finished"});this.include=he.Array("--include",[],{description:"An array of glob pattern idents or paths; only matching workspaces will be traversed"});this.exclude=he.Array("--exclude",[],{description:"An array of glob pattern idents or paths; matching workspaces won't be traversed"});this.publicOnly=he.Boolean("--no-private",{description:"Avoid running the command on private workspaces"});this.since=he.String("--since",{description:"Only include workspaces that have been changed since the specified ref.",tolerateBoolean:!0});this.dryRun=he.Boolean("-n,--dry-run",{description:"Print the commands that would be run, without actually running them"});this.commandName=he.String();this.args=he.Proxy()}static{this.paths=[["workspaces","foreach"]]}static{this.usage=at.Usage({category:"Workspace-related commands",description:"run a command on all workspaces",details:"\n This command will run a given sub-command on current and all its descendant workspaces. Various flags can alter the exact behavior of the command:\n\n - If `-p,--parallel` is set, the commands will be ran in parallel; they'll by default be limited to a number of parallel tasks roughly equal to half your core number, but that can be overridden via `-j,--jobs`, or disabled by setting `-j unlimited`.\n\n - If `-p,--parallel` and `-i,--interlaced` are both set, Yarn will print the lines from the output as it receives them. If `-i,--interlaced` wasn't set, it would instead buffer the output from each process and print the resulting buffers only after their source processes have exited.\n\n - If `-t,--topological` is set, Yarn will only run the command after all workspaces that it depends on through the `dependencies` field have successfully finished executing. If `--topological-dev` is set, both the `dependencies` and `devDependencies` fields will be considered when figuring out the wait points.\n\n - If `-A,--all` is set, Yarn will run the command on all the workspaces of a project.\n\n - If `-R,--recursive` is set, Yarn will find workspaces to run the command on by recursively evaluating `dependencies` and `devDependencies` fields, instead of looking at the `workspaces` fields.\n\n - If `-W,--worktree` is set, Yarn will find workspaces to run the command on by looking at the current worktree.\n\n - If `--from` is set, Yarn will use the packages matching the 'from' glob as the starting point for any recursive search.\n\n - If `--since` is set, Yarn will only run the command on workspaces that have been modified since the specified ref. By default Yarn will use the refs specified by the `changesetBaseRefs` configuration option.\n\n - If `--dry-run` is set, Yarn will explain what it would do without actually doing anything.\n\n - The command may apply to only some workspaces through the use of `--include` which acts as a whitelist. The `--exclude` flag will do the opposite and will be a list of packages that mustn't execute the script. Both flags accept glob patterns (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them. You can also use the `--no-private` flag to avoid running the command in private workspaces.\n\n The `-v,--verbose` flag can be passed up to twice: once to prefix output lines with the originating workspace's name, and again to include start/finish/timing log lines. Maximum verbosity is enabled by default in terminal environments.\n\n If the command is `run` and the script being run does not exist the child workspace will be skipped without error.\n ",examples:[["Publish all packages","yarn workspaces foreach -A --no-private npm publish --tolerate-republish"],["Run the build script on all descendant packages","yarn workspaces foreach -A run build"],["Run the build script on current and all descendant packages in parallel, building package dependencies first","yarn workspaces foreach -Apt run build"],["Run the build script on several packages and all their dependencies, building dependencies first","yarn workspaces foreach -Rpt --from '{workspace-a,workspace-b}' run build"]]})}static{this.schema=[V2("all",Vf.Forbids,["from","recursive","since","worktree"],{missingIf:"undefined"}),r_(["all","recursive","since","worktree"],{missingIf:"undefined"})]}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!this.all&&!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let n=this.cli.process([this.commandName,...this.args]),c=n.path.length===1&&n.path[0]==="run"&&typeof n.scriptName<"u"?n.scriptName:null;if(n.path.length===0)throw new it("Invalid subcommand name for iteration - use the 'run' keyword if you wish to execute a script");let f=Ee=>{this.dryRun&&this.context.stdout.write(`${Ee} +`)},p=()=>{let Ee=this.from.map(d=>j1.default.matcher(d));return s.workspaces.filter(d=>{let Se=j.stringifyIdent(d.anchoredLocator),Be=d.relativeCwd;return Ee.some(me=>me(Se)||me(Be))})},h=[];if(this.since?(f("Option --since is set; selecting the changed workspaces as root for workspace selection"),h=Array.from(await La.fetchChangedWorkspaces({ref:this.since,project:s}))):this.from?(f("Option --from is set; selecting the specified workspaces"),h=[...p()]):this.worktree?(f("Option --worktree is set; selecting the current workspace"),h=[a]):this.recursive?(f("Option --recursive is set; selecting the current workspace"),h=[a]):this.all&&(f("Option --all is set; selecting all workspaces"),h=[...s.workspaces]),this.dryRun&&!this.all){for(let Ee of h)f(` +- ${Ee.relativeCwd} + ${j.prettyLocator(r,Ee.anchoredLocator)}`);h.length>0&&f("")}let E;if(this.recursive?this.since?(f("Option --recursive --since is set; recursively selecting all dependent workspaces"),E=new Set(h.map(Ee=>[...Ee.getRecursiveWorkspaceDependents()]).flat())):(f("Option --recursive is set; recursively selecting all transitive dependencies"),E=new Set(h.map(Ee=>[...Ee.getRecursiveWorkspaceDependencies()]).flat())):this.worktree?(f("Option --worktree is set; recursively selecting all nested workspaces"),E=new Set(h.map(Ee=>[...Ee.getRecursiveWorkspaceChildren()]).flat())):E=null,E!==null&&(h=[...new Set([...h,...E])],this.dryRun))for(let Ee of E)f(` +- ${Ee.relativeCwd} + ${j.prettyLocator(r,Ee.anchoredLocator)}`);let C=[],S=!1;if(c?.includes(":")){for(let Ee of s.workspaces)if(Ee.manifest.scripts.has(c)&&(S=!S,S===!1))break}for(let Ee of h){if(c&&!Ee.manifest.scripts.has(c)&&!S&&!(await Cn.getWorkspaceAccessibleBinaries(Ee)).has(c)){f(`Excluding ${Ee.relativeCwd} because it doesn't have a "${c}" script`);continue}if(!(c===r.env.npm_lifecycle_event&&Ee.cwd===a.cwd)){if(this.include.length>0&&!j1.default.isMatch(j.stringifyIdent(Ee.anchoredLocator),this.include)&&!j1.default.isMatch(Ee.relativeCwd,this.include)){f(`Excluding ${Ee.relativeCwd} because it doesn't match the --include filter`);continue}if(this.exclude.length>0&&(j1.default.isMatch(j.stringifyIdent(Ee.anchoredLocator),this.exclude)||j1.default.isMatch(Ee.relativeCwd,this.exclude))){f(`Excluding ${Ee.relativeCwd} because it matches the --exclude filter`);continue}if(this.publicOnly&&Ee.manifest.private===!0){f(`Excluding ${Ee.relativeCwd} because it's a private workspace and --no-private was set`);continue}C.push(Ee)}}if(C.sort((Ee,d)=>j.stringifyIdent(Ee.anchoredLocator).localeCompare(j.stringifyIdent(d.anchoredLocator))),this.dryRun)return 0;let x=this.verbose??(this.context.stdout.isTTY?1/0:0),I=x>0,T=x>1,O=this.parallel?this.jobs==="unlimited"?1/0:Number(this.jobs)||Math.ceil(Ui.availableParallelism()/2):1,U=O===1?!1:this.parallel,V=U?this.interlaced:!0,te=(0,rPe.default)(O),ie=new Map,ue=new Set,ae=0,ge=null,Ae=!1,Ce=await Ot.start({configuration:r,stdout:this.context.stdout,includePrefix:!1},async Ee=>{let d=async(Se,{commandIndex:Be})=>{if(Ae)return-1;!U&&T&&Be>1&&Ee.reportSeparator();let me=TSt(Se,{configuration:r,label:I,commandIndex:Be}),[ce,Z]=tPe(Ee,{prefix:me,interlaced:V}),[De,Qe]=tPe(Ee,{prefix:me,interlaced:V});try{T&&Ee.reportInfo(null,`${me?`${me} `:""}Process started`);let st=Date.now(),_=await this.cli.run([this.commandName,...this.args],{cwd:Se.cwd,stdout:ce,stderr:De})||0;ce.end(),De.end(),await Z,await Qe;let tt=Date.now();if(T){let Ne=r.get("enableTimers")?`, completed in ${pe.pretty(r,tt-st,pe.Type.DURATION)}`:"";Ee.reportInfo(null,`${me?`${me} `:""}Process exited (exit code ${_})${Ne}`)}return _===130&&(Ae=!0,ge=_),_}catch(st){throw ce.end(),De.end(),await Z,await Qe,st}};for(let Se of C)ie.set(Se.anchoredLocator.locatorHash,Se);for(;ie.size>0&&!Ee.hasErrors();){let Se=[];for(let[Z,De]of ie){if(ue.has(De.anchoredDescriptor.descriptorHash))continue;let Qe=!0;if(this.topological||this.topologicalDev){let st=this.topologicalDev?new Map([...De.manifest.dependencies,...De.manifest.devDependencies]):De.manifest.dependencies;for(let _ of st.values()){let tt=s.tryWorkspaceByDescriptor(_);if(Qe=tt===null||!ie.has(tt.anchoredLocator.locatorHash),!Qe)break}}if(Qe&&(ue.add(De.anchoredDescriptor.descriptorHash),Se.push(te(async()=>{let st=await d(De,{commandIndex:++ae});return ie.delete(Z),ue.delete(De.anchoredDescriptor.descriptorHash),{workspace:De,exitCode:st}})),!U))break}if(Se.length===0){let Z=Array.from(ie.values()).map(De=>j.prettyLocator(r,De.anchoredLocator)).join(", ");Ee.reportError(3,`Dependency cycle detected (${Z})`);return}let Be=await Promise.all(Se);Be.forEach(({workspace:Z,exitCode:De})=>{De!==0&&Ee.reportError(0,`The command failed in workspace ${j.prettyLocator(r,Z.anchoredLocator)} with exit code ${De}`)});let ce=Be.map(Z=>Z.exitCode).find(Z=>Z!==0);(this.topological||this.topologicalDev)&&typeof ce<"u"&&Ee.reportError(0,"The command failed for workspaces that are depended upon by other workspaces; can't satisfy the dependency graph")}});return ge!==null?ge:Ce.exitCode()}};function tPe(e,{prefix:t,interlaced:r}){let s=e.createStreamReporter(t),a=new Ge.DefaultStream;a.pipe(s,{end:!1}),a.on("finish",()=>{s.end()});let n=new Promise(f=>{s.on("finish",()=>{f(a.active)})});if(r)return[a,n];let c=new Ge.BufferStream;return c.pipe(a,{end:!1}),c.on("finish",()=>{a.end()}),[c,n]}function TSt(e,{configuration:t,commandIndex:r,label:s}){if(!s)return null;let n=`[${j.stringifyIdent(e.anchoredLocator)}]:`,c=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],f=c[r%c.length];return pe.pretty(t,n,f)}var FSt={commands:[H1,G1]},NSt=FSt;var YI=()=>({modules:new Map([["@yarnpkg/cli",Gv],["@yarnpkg/core",jv],["@yarnpkg/fslib",R2],["@yarnpkg/libzip",nv],["@yarnpkg/parsers",_2],["@yarnpkg/shell",cv],["clipanion",Z2],["semver",OSt],["typanion",Jo],["@yarnpkg/plugin-essentials",T5],["@yarnpkg/plugin-catalog",L5],["@yarnpkg/plugin-compat",j5],["@yarnpkg/plugin-constraints",s9],["@yarnpkg/plugin-dlx",o9],["@yarnpkg/plugin-exec",c9],["@yarnpkg/plugin-file",f9],["@yarnpkg/plugin-git",R5],["@yarnpkg/plugin-github",h9],["@yarnpkg/plugin-http",d9],["@yarnpkg/plugin-init",g9],["@yarnpkg/plugin-interactive-tools",pW],["@yarnpkg/plugin-jsr",dW],["@yarnpkg/plugin-link",gW],["@yarnpkg/plugin-nm",eY],["@yarnpkg/plugin-npm",eK],["@yarnpkg/plugin-npm-cli",uK],["@yarnpkg/plugin-pack",VY],["@yarnpkg/plugin-patch",mK],["@yarnpkg/plugin-pnp",jW],["@yarnpkg/plugin-pnpm",IK],["@yarnpkg/plugin-stage",bK],["@yarnpkg/plugin-typescript",PK],["@yarnpkg/plugin-version",TK],["@yarnpkg/plugin-workspace-tools",FK]]),plugins:new Set(["@yarnpkg/plugin-essentials","@yarnpkg/plugin-catalog","@yarnpkg/plugin-compat","@yarnpkg/plugin-constraints","@yarnpkg/plugin-dlx","@yarnpkg/plugin-exec","@yarnpkg/plugin-file","@yarnpkg/plugin-git","@yarnpkg/plugin-github","@yarnpkg/plugin-http","@yarnpkg/plugin-init","@yarnpkg/plugin-interactive-tools","@yarnpkg/plugin-jsr","@yarnpkg/plugin-link","@yarnpkg/plugin-nm","@yarnpkg/plugin-npm","@yarnpkg/plugin-npm-cli","@yarnpkg/plugin-pack","@yarnpkg/plugin-patch","@yarnpkg/plugin-pnp","@yarnpkg/plugin-pnpm","@yarnpkg/plugin-stage","@yarnpkg/plugin-typescript","@yarnpkg/plugin-version","@yarnpkg/plugin-workspace-tools"])});function sPe({cwd:e,pluginConfiguration:t}){let r=new Sa({binaryLabel:"Yarn Package Manager",binaryName:"yarn",binaryVersion:An??""});return Object.assign(r,{defaultContext:{...Sa.defaultContext,cwd:e,plugins:t,quiet:!1,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr}})}function LSt(e){if(Ge.parseOptionalBoolean(process.env.YARN_IGNORE_NODE))return!0;let r=process.versions.node,s=">=18.12.0";if(kr.satisfiesWithPrereleases(r,s))return!0;let a=new it(`This tool requires a Node version compatible with ${s} (got ${r}). Upgrade Node, or set \`YARN_IGNORE_NODE=1\` in your environment.`);return Sa.defaultContext.stdout.write(e.error(a)),!1}async function oPe({selfPath:e,pluginConfiguration:t}){return await ze.find(fe.toPortablePath(process.cwd()),t,{strict:!1,usePathCheck:e})}function MSt(e,t,{yarnPath:r}){if(!le.existsSync(r))return e.error(new Error(`The "yarn-path" option has been set, but the specified location doesn't exist (${r}).`)),1;process.on("SIGINT",()=>{});let s={stdio:"inherit",env:{...process.env,YARN_IGNORE_PATH:"1"}};try{(0,nPe.execFileSync)(process.execPath,[fe.fromPortablePath(r),...t],s)}catch(a){return a.status??1}return 0}function USt(e,t){let r=null,s=t;return t.length>=2&&t[0]==="--cwd"?(r=fe.toPortablePath(t[1]),s=t.slice(2)):t.length>=1&&t[0].startsWith("--cwd=")?(r=fe.toPortablePath(t[0].slice(6)),s=t.slice(1)):t[0]==="add"&&t[t.length-2]==="--cwd"&&(r=fe.toPortablePath(t[t.length-1]),s=t.slice(0,t.length-2)),e.defaultContext.cwd=r!==null?J.resolve(r):J.cwd(),s}function _St(e,{configuration:t}){if(!t.get("enableTelemetry")||iPe.isCI||!process.stdout.isTTY)return;ze.telemetry=new GI(t,"puba9cdc10ec5790a2cf4969dd413a47270");let s=/^@yarnpkg\/plugin-(.*)$/;for(let a of t.plugins.keys())qI.has(a.match(s)?.[1]??"")&&ze.telemetry?.reportPluginName(a);e.binaryVersion&&ze.telemetry.reportVersion(e.binaryVersion)}function aPe(e,{configuration:t}){for(let r of t.plugins.values())for(let s of r.commands||[])e.register(s)}async function HSt(e,t,{selfPath:r,pluginConfiguration:s}){if(!LSt(e))return 1;let a=await oPe({selfPath:r,pluginConfiguration:s}),n=a.get("yarnPath"),c=a.get("ignorePath");if(n&&!c)return MSt(e,t,{yarnPath:n});delete process.env.YARN_IGNORE_PATH;let f=USt(e,t);_St(e,{configuration:a}),aPe(e,{configuration:a});let p=e.process(f,e.defaultContext);return p.help||ze.telemetry?.reportCommandName(p.path.join(" ")),await e.run(p,e.defaultContext)}async function g0e({cwd:e=J.cwd(),pluginConfiguration:t=YI()}={}){let r=sPe({cwd:e,pluginConfiguration:t}),s=await oPe({pluginConfiguration:t,selfPath:null});return aPe(r,{configuration:s}),r}async function QT(e,{cwd:t=J.cwd(),selfPath:r,pluginConfiguration:s}){let a=sPe({cwd:t,pluginConfiguration:s});function n(){Sa.defaultContext.stdout.write(`ERROR: Yarn is terminating due to an unexpected empty event loop. +Please report this issue at https://github.com/yarnpkg/berry/issues.`)}process.once("beforeExit",n);try{process.exitCode=42,process.exitCode=await HSt(a,e,{selfPath:r,pluginConfiguration:s})}catch(c){Sa.defaultContext.stdout.write(a.error(c)),process.exitCode=1}finally{process.off("beforeExit",n),await le.rmtempPromise()}}QT(process.argv.slice(2),{cwd:J.cwd(),selfPath:fe.toPortablePath(fe.resolve(process.argv[1])),pluginConfiguration:YI()});})(); +/** + @license + Copyright (c) 2015, Rebecca Turner + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THIS SOFTWARE. + */ +/** + @license + Copyright Node.js contributors. All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to + deal in the Software without restriction, including without limitation the + rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + IN THE SOFTWARE. +*/ +/** + @license + The MIT License (MIT) + + Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. +*/ +/** + @license + Copyright Joyent, Inc. and other Node contributors. + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ +/*! Bundled license information: + +is-number/index.js: + (*! + * is-number + * + * Copyright (c) 2014-present, Jon Schlinkert. + * Released under the MIT License. + *) + +to-regex-range/index.js: + (*! + * to-regex-range + * + * Copyright (c) 2015-present, Jon Schlinkert. + * Released under the MIT License. + *) + +fill-range/index.js: + (*! + * fill-range + * + * Copyright (c) 2014-present, Jon Schlinkert. + * Licensed under the MIT License. + *) + +is-extglob/index.js: + (*! + * is-extglob + * + * Copyright (c) 2014-2016, Jon Schlinkert. + * Licensed under the MIT License. + *) + +is-glob/index.js: + (*! + * is-glob + * + * Copyright (c) 2014-2017, Jon Schlinkert. + * Released under the MIT License. + *) + +queue-microtask/index.js: + (*! queue-microtask. MIT License. Feross Aboukhadijeh *) + +run-parallel/index.js: + (*! run-parallel. MIT License. Feross Aboukhadijeh *) + +git-url-parse/lib/index.js: + (*! + * buildToken + * Builds OAuth token prefix (helper function) + * + * @name buildToken + * @function + * @param {GitUrl} obj The parsed Git url object. + * @return {String} token prefix + *) + +object-assign/index.js: + (* + object-assign + (c) Sindre Sorhus + @license MIT + *) + +react/cjs/react.production.min.js: + (** @license React v17.0.2 + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) + +scheduler/cjs/scheduler.production.min.js: + (** @license React v0.20.2 + * scheduler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) + +react-reconciler/cjs/react-reconciler.production.min.js: + (** @license React v0.26.2 + * react-reconciler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) + +is-windows/index.js: + (*! + * is-windows + * + * Copyright © 2015-2018, Jon Schlinkert. + * Released under the MIT License. + *) +*/ diff --git a/.yarnrc.yml b/.yarnrc.yml index 3c83a94e6f5..44d5b0a935a 100644 --- a/.yarnrc.yml +++ b/.yarnrc.yml @@ -1,35 +1,42 @@ +approvedGitRepositories: + - '**' + +compressionLevel: mixed + +enableConstraintsChecks: true + +enableScripts: true + httpProxy: '${http_proxy:-}' httpsProxy: '${https_proxy:-}' nodeLinker: node-modules -plugins: - - path: .yarn/plugin-postinstall.js - -yarnPath: .yarn/releases/yarn-4.13.0.cjs - -npmPublishRegistry: https://nexus.protontech.ch/repository/web-npm/ +npmAuditIgnoreAdvisories: + - 1108110 + - 1108111 -npmScopes: - tpe: - npmRegistryServer: 'https://gitlab.protontech.ch/api/v4/projects/4357/packages/npm/' - npmAuthToken: '${CI_JOB_TOKEN:-}' - proton-meet: - npmRegistryServer: 'https://nexus.protontech.ch/repository/meet-npm/' - proton: - npmRegistryServer: 'https://nexus.protontech.ch/repository/foundation-npm/' +npmMinimalAgeGate: 3d npmPreapprovedPackages: - '@proton/*' - '@protontech/*' + - '@openpgp/*' + - '@tpe/*' -npmAuditIgnoreAdvisories: - # Ignore advisories for xlsx package. This package is depended on by a third-party library rowsncolumns (docs) - # and hasn't gotten any priority to change. - - 1108110 - - 1108111 +npmPublishRegistry: 'https://nexus.protontech.ch/repository/web-npm/' -compressionLevel: mixed +npmScopes: + proton: + npmRegistryServer: 'https://nexus.protontech.ch/repository/foundation-npm/' + proton-meet: + npmRegistryServer: 'https://nexus.protontech.ch/repository/meet-npm/' + tpe: + npmAuthToken: '${CI_JOB_TOKEN:-}' + npmRegistryServer: 'https://gitlab.protontech.ch/api/v4/projects/4357/packages/npm/' -npmMinimalAgeGate: 3d +plugins: + - path: .yarn/plugin-postinstall.js + +yarnPath: .yarn/releases/yarn-4.14.1.cjs diff --git a/applications/account/jest.config.js b/applications/account/jest.config.js index e0413e3208d..5c6f8effaaa 100644 --- a/applications/account/jest.config.js +++ b/applications/account/jest.config.js @@ -3,7 +3,7 @@ module.exports = { moduleDirectories: ['/node_modules', 'node_modules'], testEnvironment: '@proton/jest-env', transformIgnorePatterns: [ - 'node_modules/(?!(@proton/shared|@proton/components|@protontech/telemetry|@protontech/mutex-browser|pmcrypto|openpgp|@openpgp/web-stream-tools|@protontech/bip39|emoji-mart|@preact/signals-core|@scure/base)/)', + 'node_modules/(?!(@proton/shared|@proton/components|@protontech/telemetry|@protontech/mutex-browser|@protontech/crypto|openpgp|@openpgp/web-stream-tools|@protontech/bip39|emoji-mart|@preact/signals-core|@scure/base)/)', ], transform: { '^.+\\.(ts|js|mjs)x?$': [ diff --git a/applications/account/locales/.locale-state.metadata b/applications/account/locales/.locale-state.metadata index af8752391e5..06c1b9806bb 100644 --- a/applications/account/locales/.locale-state.metadata +++ b/applications/account/locales/.locale-state.metadata @@ -1,4 +1,4 @@ { "project": "fe-account", - "locale": "4bf2a73d6cbe2f452ce6d19bc4398139b930f14d" + "locale": "56f76b2a4968631f06688044c64ef3b4b4ac0862" } \ No newline at end of file diff --git a/applications/account/locales/ar_SA.json b/applications/account/locales/ar_SA.json index 70d3f2ffb5e..cbf616a1c43 100644 --- a/applications/account/locales/ar_SA.json +++ b/applications/account/locales/ar_SA.json @@ -76,6 +76,9 @@ "Add": [ "أضف" ], + "Add ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }": [ + "إضافة ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }" + ], "Add ${ BRAND_NAME } Account": [ "إضافة حساب ${ BRAND_NAME }" ], @@ -268,6 +271,9 @@ "Confirm": [ "أكّد" ], + "Confirm email": [ + "تأكيد البريد الإلكتروني" + ], "Confirm opening of link ${ linkToShow }": [ "تأكيد فتح الرابط ${ linkToShow }" ], @@ -313,6 +319,9 @@ "Continue with ${ nameToDisplay } ${ maybeEmailInBrackets }": [ "المتابعة مع ${ nameToDisplay } ${ maybeEmailInBrackets }" ], + "Continue with Free": [ + "تابع مجانا" + ], "Continue with Google": [ "المتابعة باستخدام Google" ], @@ -610,6 +619,9 @@ "Extend": [ "تمديد" ], + "Finish": [ + "انتهى" + ], "Fit to window": [ "ملاءمة للنافذة" ], @@ -4300,6 +4312,9 @@ "Automatically sort your incoming messages before they reach your inbox.": [ "فرز رسائلك الواردة تلقائيًا قبل وصولها إلى صندوق الوارد." ], + "Available storage: ${ storageText }": [ + "التخزين المتاح: ${ storageText }" + ], "Configure this first to activate your organization and customize your email address.": [ "قم بتكوين هذا أولاً لتفعيل مؤسستك وتخصيص عنوان بريدك الإلكتروني." ], @@ -4339,6 +4354,9 @@ "Encrypting and importing contacts... This may take a few minutes. When the process is completed, you can close this modal.": [ "يتم استيراد و تشفير جهات الاتصال... قد يستغرق ذلك بضع دقائق. عند اكتمال العملية ، يمكنك إغلاق هذا النموذج." ], + "Enough room for years of emails, attachments and more.": [ + "مساحة تكفي لسنوات من رسائل البريد الإلكتروني والمرفقات والمزيد." + ], "Ensure secure access to organization data, even if your team is remote or using public WiFi.": [ "اضمن الوصول الآمن إلى بيانات المؤسسة، حتى لو كان فريقك يعمل عن بعد أو يستخدم شبكة واي فاي (WiFi) عامة." ], @@ -4378,15 +4396,15 @@ "No one in your organization can connect to shared servers.": [ "لا يمكن لأي شخص في مؤسستك الاتصال بالخوادم المشتركة" ], - "Send a code to your recovery email or phone": [ - "إرسال رمز إلى بريدك الإلكتروني أو هاتفك المخصصين للاسترداد" - ], "Set up accounts for all users and invite them to join ${ BRAND_NAME }.": [ "أعد حسابات لجميع المستخدمين وادعهم للانضمام إلى ${ BRAND_NAME }." ], "Simplify syncing and scheduling with shared calendars.": [ "بسّط المزامنة والجدولة باستخدام التقويمات المشتركة." ], + "This allows you to regain access to your ${ BRAND_NAME } account but does not recover your encrypted data.": [ + "يتيح لك ذلك استعادة الوصول إلى حساب ${ BRAND_NAME } الخاص بك، لكنه لا يستعيد بياناتك المشفّرة." + ], "To import via a CSV and VCF file, ensure the file does not exceed ${ MAX_IMPORT_FILE_SIZE_STRING } or ${ maxContactString } contacts. If your file is bigger, please split it into smaller files. ${ learnMoreLink }.": [ "لاستيراد جهات الاتصال عبر ملف CSV أو VCF، تأكد من أن حجم الملف لا يتجاوز ${ MAX_IMPORT_FILE_SIZE_STRING } أو ${ maxContactString } جهة اتصال. إذا كان ملفك أكبر من ذلك، يرجى تقسيمه إلى ملفات أصغر. ${ learnMoreLink }." ], @@ -4399,6 +4417,9 @@ "Track the status and activity of your referrals": [ "تتبع حالة ونشاط إحالاتك" ], + "Unlock 15 GB of storage for just ${ config.offerPrice }.": [ + "احصل على 15 غيغابايت من مساحة التخزين مقابل ${ config.offerPrice } فقط." + ], "Upgrade to get ${ activatePmUser } for a shorter, easy-to-remember email address in addition to your current one.": [ "قم بالترقية للحصول على ${ activatePmUser } لعنوان بريد إلكتروني أقصر وسهل التذكر بالإضافة إلى عنوانك الحالي." ], @@ -4416,6 +4437,12 @@ ], "You can merge addresses into one main ${ BRAND_NAME } account using our support guide.": [ "يمكنك دمج العناوين في حساب رئيسي واحد على ${ BRAND_NAME } باستخدام دليل الدعم الخاص بنا." + ], + "Your free ${ MAIL_APP_NAME } account comes with limited storage so we'll only import ${ newUserStorageText } of your most recent Gmail messages": [ + "نظرًا لأن حسابك المجاني في ${ MAIL_APP_NAME } يتضمن مساحة تخزين محدودة، فسنستورد فقط ${ newUserStorageText } من أحدث رسائل Gmail لديك." + ], + "Your free ${ MAIL_APP_NAME } account comes with limited storage so we'll only import your most recent Gmail emails.": [ + "نظرًا لأن حسابك المجاني في ${ MAIL_APP_NAME } يتضمن مساحة تخزين محدودة، فسنستورد فقط أحدث رسائل Gmail لديك." ] }, "description": { @@ -4820,6 +4847,9 @@ "120m": [ "120 متر" ], + "15 minutes": [ + "15 دقيقة" + ], "30 minutes": [ "30 دقيقة" ], @@ -5175,8 +5205,8 @@ "${ user } will not be able to access your account until the next emergency access.": [ "لن يتمكن ${ user } من الوصول إلى حسابك حتى الوصول الطارئ التالي." ], - "**${ contact }** is now your recovery contact. They can help you recover your data after a password reset.": [ - "**${ contact }** أصبحت الآن جهة اتصال الاسترداد الخاصة بك. يمكنها مساعدتك في استعادة بياناتك بعد إعادة تعيين كلمة المرور." + "**${ contact }** is now your recovery contact. They can help you unlock your data after you reset your password.": [ + "أصبح **${ contact }** الآن جهة اتصال الاسترداد الخاصة بك. يمكنه مساعدتك في استعادة الوصول إلى بياناتك بعد إعادة تعيين كلمة المرور." ], "**If they confirm**, click **Approve recovery**. This will unlock their encrypted data.": [ "**إذا أكدوا**، فانقر فوق **الموافقة على الاسترداد**. سيؤدي ذلك إلى فتح بياناتهم المشفرة." @@ -5208,9 +5238,15 @@ "Add emergency contact": [ "إضافة جهة اتصال للطوارئ" ], + "Add option": [ + "إضافة خيار" + ], "Add recovery contact": [ "إضافة جهة اتصال الاسترداد" ], + "Add recovery method": [ + "إضافة طريقة الاسترداد" + ], "Added on ${ formattedDate }": [ "أُضيف في ${ formattedDate }" ], @@ -5328,12 +5364,6 @@ "Less than a minute left": [ "أقل من دقيقة متبقية" ], - "Let ${ user } know it’s really you trying to regain access.": [ - "أخبر ${ user } بأنك أنت فعلاً من يحاول استعادة الوصول." - ], - "None": [ - "لا شيء" - ], "Only ": [ "فقط " ], @@ -5424,14 +5454,11 @@ "Select recovery contact ${ name }": [ "حدد جهة اتصال الاسترداد ${ name }" ], - "Send email request": [ - "أرسل طلب بريد إلكتروني" - ], "Send recovery request": [ "إرسال طلب الاسترداد" ], - "Set account recovery": [ - "تعيين استرداد الحساب" + "Start recovery": [ + "بدء الاسترداد" ], "Stop being recovery contact": [ "توقف عن أن تكون جهة اتصال الاسترداد" @@ -5474,6 +5501,9 @@ "Time required before automatically granting them access": [ "الوقت المطلوب قبل منحهم الوصول تلقائيًا" ], + "To add recovery contacts, you must have a recovery email address or phone number.": [ + "لإضافة جهات اتصال الاسترداد، يجب أن يكون لديك عنوان بريد إلكتروني أو رقم هاتف للاسترداد." + ], "To disable this recovery method, remove all your recovery contacts.": [ "لتعطيل طريقة الاسترداد هذه، قم بإزالة جميع جهات اتصال الاسترداد الخاصة بك." ], @@ -5504,6 +5534,9 @@ "We received a request to unlock the encrypted data of your contact **${ user }**.": [ "تلقينا طلبا لإلغاء قفل البيانات المشفرة لجهة الاتصال الخاصة بك **${ user }**." ], + "We sent an email request to ${ user }. Let them know it's really you trying to regain access.": [ + "أرسلنا طلبًا عبر البريد الإلكتروني إلى ${ user }. أخبره بأنك بالفعل تحاول استعادة الوصول إلى حسابك." + ], "We were not able to verify the recovery data. Proceed anyway?": [ "لم نتمكن من التحقق من بيانات الاسترداد. المضي قدما على أي حال؟" ], @@ -5808,6 +5841,9 @@ "Invalid invitation link": [ "رابط دعوة غير صالح" ], + "Invalid joining link. Please contact your administrator.": [ + "رابط الانضمام غير صالح. يرجى الاتصال بالمسؤول الخاص بك." + ], "Invalid name": [ "اسم غير صحيح" ], @@ -5983,9 +6019,6 @@ "Please try again in a few moments.": [ "عاود المحاولة بعد بضع دقائق." ], - "Please upgrade to a business plan with more than 1 user to get multi-user support": [ - "يرجى الترقية إلى خطة أعمال بها أكثر من مستخدم واحد للحصول على دعم متعدد المستخدمين" - ], "Please upgrade to a business plan with more than 1 user to manage multiple users.": [ "يرجى الترقية إلى خطة أعمال بها أكثر من مستخدم واحد لإدارة عدة مستخدمين." ], @@ -6400,6 +6433,9 @@ "Ask your administrator to enable Account monitor.": [ "اطلب من المسؤول تفعيل مراقب الحساب." ], + "Enable account monitor to start loading event.": [ + "تمكين مراقب الحساب لبدء تحميل الحدث." + ], "Error: ${ errorMessage }": [ "خطأ: ${ errorMessage }" ], @@ -6849,6 +6885,9 @@ "${ MaxVPN } اتصالات VPN", "${ MaxVPN } اتصالات VPN" ], + "10+ premium features": [ + "أكثر من 10 ميزات متميزة" + ], "Access to all countries": [ "الوصول إلى جميع البلدان" ], @@ -6874,6 +6913,12 @@ "Continue": [ "استمرار" ], + "Custom email domain": [ + "نطاق بريد إلكتروني مخصص" + ], + "Email addresses": [ + "عناوين البريد الإلكتروني" + ], "Encrypted cloud storage for files, photos and documents": [ "تخزين سحابي مشفر للملفات والصور والمستندات" ], @@ -6892,6 +6937,9 @@ "Secure streaming support": [ "دعم البث الآمن" ], + "Storage": [ + "تخزين" + ], "Torrenting support (P2P)": [ "دعم التورنت (P2P)" ], @@ -7266,6 +7314,11 @@ "${ BRAND_NAME }. الخصوصية بشكل افتراضي" ] }, + "Force upgrade safety review": { + "I understand that I will no longer be able to sign in to older versions of ${ BRAND_NAME } apps.": [ + "أفهم أنني لن أتمكن بعد الآن من تسجيل الدخول إلى الإصدارات الأقدم من تطبيقات ${ BRAND_NAME }." + ] + }, "Form heading": { "Enter your email address": [ "أدخل عنوان بريدك الإلكتروني" @@ -7461,6 +7514,9 @@ "Select your deal": [ "اختر العرض" ], + "Select your payment method:": [ + "حدد طريقة الدفع المناسبة لك." + ], "Select your pricing plan": [ "حدد خطة التسعير" ], @@ -7564,6 +7620,9 @@ "Contact us": [ "اتصل بنا" ], + "Downloads": [ + "التنزيلات" + ], "Enjoying ${ planName }?": [ "هل تستمتع بـ ${ planName }؟" ], @@ -8277,6 +8336,9 @@ "${ vaultLink } updated": [ "تم تحديث ${ vaultLink }" ], + "${ VPN_SHORT_APP_NAME } hides your traffic. ${ PASS_SHORT_APP_NAME } hides your identity\n— unlimited **hide-my-email aliases** and **dark-web alerts** if your data is ever leaked.": [ + "يُخفي ${ VPN_SHORT_APP_NAME } حركة المرور الخاصة بك. ويُخفي ${ PASS_SHORT_APP_NAME } هويتك\n— مع عناوين **hide-my-email** غير محدودة و**تنبيهات الويب المظلم** إذا تم تسريب بياناتك في أي وقت." + ], "${ vpnPlus } required for Country level connection.": [ "مطلوب ${ vpnPlus } للاتصال على مستوى الدولة." ], @@ -8406,6 +8468,9 @@ "Activity Monitor": [ "مراقب النشاط" ], + "Add ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }": [ + "إضافة ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }" + ], "add a recovery method": [ "إضافة طريقة استرداد" ], @@ -8435,14 +8500,6 @@ "Add your name and logo to create a more personalized experience for your organization.": [ "أضف اسمك وشعارك لإنشاء تجربة أكثر تخصيصًا لمؤسستك." ], - "Adding ${ addedServerCount } gateway servers": [ - "جارٍ إضافة ${ addedServerCount } خادم بوابة", - "جارٍ إضافة ${ addedServerCount } خادم بوابة", - "جارٍ إضافة ${ addedServerCount } خادم بوابة", - "جارٍ إضافة ${ addedServerCount } خوادم بوابة", - "جارٍ إضافة ${ addedServerCount } خوادم بوابة", - "جارٍ إضافة ${ addedServerCount } خوادم بوابة" - ], "Adding an external email address will disable end-to-end encryption for all email communication within that group. Do you want to proceed?": [ "ستؤدي إضافة عنوان بريد إلكتروني خارجي إلى تعطيل التشفير من طرف إلى طرف لجميع اتصالات البريد الإلكتروني داخل تلك المجموعة. هل تريد المتابعة؟" ], @@ -8606,6 +8663,9 @@ "Are you sure you want to revoke certificate **${ name }**": [ "هل أنت متأكد من رغبتك في إبطال الشهادة **${ name }**؟" ], + "Are you sure you want to sign out of this account?": [ + "هل أنت متأكد من أنك تريد تسجيل الخروج من هذا الحساب؟" + ], "Are you sure you want to sort your folders alphabetically?": [ "هل أنت متأكد من رغبتك في فرز مجلداتك أبجديًا؟" ], @@ -8723,9 +8783,6 @@ "Change your password": [ "تغيير كلمة مرورك" ], - "Check the status of imports and forwarding.": [ - "تحقق من حالة الواردات وإعادة التوجيه" - ], "Choose a plan that works best for you.": [ "اختر الخطة التي تناسبك بشكل أفضل." ], @@ -8753,6 +8810,9 @@ "CNET editors choice award with a rating of 8.4 out of 10": [ "جائزة اختيار محرري CNET بتقييم 8.4 من 10" ], + "Code has been re-sent.": [ + "تمت إعادة إرسال الرمز." + ], "Coming soon": [ "قريبًا" ], @@ -8762,6 +8822,9 @@ "Configure SAML authentication for your organization through an identity provider like Okta, Microsoft Azure, or Google Identity Platform. This will enable SAML for the whole organization.": [ "قم بإعداد مصادقة SAML لمؤسستك عبر موفر هوية مثل Okta أو Microsoft Azure أو Google Identity Platform. وهذا سيمكن SAML للمنظمة كُلََّها." ], + "Connect and manage your external mailboxes in ${ MAIL_APP_NAME }.": [ + "قم بربط وإدارة صناديق بريدك الخارجية في ${ MAIL_APP_NAME }." + ], "Connection data will be available in around 1 hour.": [ "ستكون بيانات الاتصال متاحة في غضون ساعة." ], @@ -8815,14 +8878,6 @@ "Create a label for the imported messages, a time range for this import, and the labels you would like to import.": [ "أنشئ تسمية للرسائل المستوردة، ونطاقًا زمنيًا لهذا الاستيراد، والتسميات التي ترغب في استيرادها." ], - "Create a secure cloud for ${ value } members": [ - "أنشئ سحابة آمنة لأعضاء ${ value }.", - "أنشئ سحابة آمنة لعضو واحد (${ value })", - "أنشئ سحابة آمنة لأعضاء ${ value }.", - "أنشئ سحابة آمنة لأعضاء ${ value }.", - "أنشئ سحابة آمنة لأعضاء ${ value }.", - "أنشئ سحابة آمنة لأعضاء ${ value }." - ], "Create an account": [ "إنشاء حساب" ], @@ -9225,6 +9280,9 @@ "For easy access to your passwords and more.": [ "لسهولة الوصول إلى كلمات المرور الخاصة بك والمزيد." ], + "For just ${ bundlePlanPriceInline }": [ + "مقابل ${ bundlePlanPriceInline } فقط" + ], "For users who are switching to ${ MAIL_APP_NAME } from another email service, select the ${ boldAddresses } tab and add all active email addresses before changing the MX record to ensure a smooth transition.": [ "للمستخدمين الذين يرغبون في الانتقال إلى ${ MAIL_APP_NAME } من خدمة بريد إلكتروني أخرى، اختارو علامة التبويب ${ boldAddresses } وأضيفو جميع عناوين البريد الإلكتروني النشطة قبل تغيير سجل MX لضمان انتقال سلس." ], @@ -9249,6 +9307,9 @@ "Gateways": [ "البوابات" ], + "Generating a new recovery phrase will deactivate your current recovery phrase.": [ + "سيؤدي إنشاء عبارة استرداد جديدة إلى تعطيل عبارة الاسترداد الحالية." + ], "Generating a new recovery phrase will deactivate your old one.": [ "سيؤدي إنشاء عبارة استرداد جديدة إلى إلغاء تنشيط عبارتك القديمة." ], @@ -9428,6 +9489,9 @@ "Include device, location, and IP details": [ "تضمين تفاصيل الجهاز والموقع وعنوان IP" ], + "Included": [ + "متضمن" + ], "Increase your account security by verifying your email address.": [ "عزّز أمان حسابك بالتحقق من عنوان بريدك الإلكتروني." ], @@ -9745,6 +9809,9 @@ "No card required": [ "لا توجد بطاقة مطلوبة" ], + "No connected addresses.": [ + "لا توجد عناوين مرتبطة." + ], "No countries enabled": [ "لا توجد بلدان مفعلة" ], @@ -10023,6 +10090,9 @@ "Recently used servers:": [ "الخوادم المستخدمة مؤخرًا:" ], + "RECOMMENDED": [ + "موصى به" + ], "Recommended on trusted devices. ${ keepMeSignedInLearnMoreLink }": [ "موصى به على الأجهزة الموثوقة ${ keepMeSignedInLearnMoreLink }" ], @@ -10665,9 +10735,15 @@ "Unverified email address.": [ "عنوان بريد إلكتروني لم يتم التحقق منه." ], + "Upgrade anytime to bring over the rest": [ + "يمكنك الترقية في أي وقت لنقل بقية العناصر." + ], "Upgrade now to get premium features, products and storage at a special price": [ "قم بالترقية الآن للحصول على الميزات والمنتجات ومساحة التخزين المميزة بسعر خاص" ], + "Upgrade or clear space anytime to bring over the rest": [ + "يمكنك الترقية أو تحرير مساحة تخزين في أي وقت لاستيراد بقية الرسائل." + ], "Upgrade to keep your ${ planTitle } benefits.": [ "قم بالترقية للاحتفاظ بمزايا ${ planTitle } الخاصة بك." ], @@ -11009,9 +11085,6 @@ "You can edit this once to ensure the correct email address for verification.": [ "يمكن تعديل هذا مرة واحدة لضمان صحة عنوان البريد الإلكتروني للتحقق." ], - "You can enable the Photos section from the interface using the toggle below.": [ - "يمكنك تمكين قسم الصور من الواجهة باستخدام مفتاح التبديل في الأسفل" - ], "You can enforce the password rules members of your organization will use when they create or reset the password to their ${ BRAND_NAME } Account.": [ "يمكن فرض قواعد كلمة المرور التي سيستخدمها أعضاء مؤسستك عند إنشاء أو إعادة تعيين كلمة المرور لحساباتهم في ${ BRAND_NAME }." ], @@ -11276,6 +11349,9 @@ "Your recovery phrase is a series of 12 randomly generated words in a specific order.": [ "عبارة الاسترداد الخاصة بك هي سلسلة من 12 كلمة تم إنشاؤها عشوائيًا بترتيب معين." ], + "Your recovery phrase will allow you to sign in and recover your data if you get locked out of your ${ BRAND_NAME } Account. It is composed of 12 words and acts like a backup password.": [ + "تتيح لك عبارة الاسترداد تسجيل الدخول واستعادة بياناتك إذا تم قفلك خارج حساب ${ BRAND_NAME } الخاص بك. تتكوّن من 12 كلمة وتعمل ككلمة مرور احتياطية." + ], "Your scheduled plan starts on ${ renewalTime } and will auto-renew every ${ cycle } months.": [ "تبدأ خطتك المجدولة في ${ renewalTime } وسيتم تجديدها تلقائيًا كل ${ cycle } من الأشهر.", "تبدأ خطتك المجدولة في ${ renewalTime } وسيتم تجديدها تلقائيًا كل شهر (${ cycle }).", @@ -12621,6 +12697,9 @@ "Pending": [ "معلق" ], + "Personal and work emails, plus important updates and notifications": [ + "رسائل البريد الإلكتروني الشخصية والعملية، بالإضافة إلى التحديثات والإشعارات المهمة" + ], "Phone number": [ "رقم الهاتف" ], @@ -15185,9 +15264,6 @@ "${ app } product updates": [ "تحديثات منتج ${ app }" ], - "${ BRAND_NAME } for Business newsletter": [ - "نشرة ${ BRAND_NAME } للأعمال" - ], "${ BRAND_NAME } important announcements": [ "إعلانات ${ BRAND_NAME } الهامة" ], @@ -15239,9 +15315,6 @@ "During your first month of using a ${ BRAND_NAME } product": [ "خلال شهرك الأول من استخدام منتج ${ BRAND_NAME }" ], - "Email subscriptions": [ - "اشتراكات البريد الإلكتروني" - ], "In-app notifications": [ "إشعارات داخل التطبيق" ], @@ -16145,14 +16218,14 @@ "per month, billed every two years": [ "شهريًا، تُدفع الفاتورة كل عامين" ], - "Preparing your Recovery Kit": [ - "جارٍ إعداد مجموعة أدوات الاسترداد الخاصة بك" + "Preparing your recovery phrase": [ + "إعداد عبارة الاسترداد الخاصة بك" ], "Protected by Swiss privacy laws": [ "محمية بواسطة قوانين الخصوصية السويسرية" ], - "Save your recovery kit to continue": [ - "احفظ مجموعة أدوات الاسترداد للمتابعة" + "Save your recovery phrase to continue": [ + "احفظ عبارة الاسترداد الخاصة بك للمتابعة" ], "Secure vault sharing": [ "مشاركة آمنة للخزنة" @@ -17180,6 +17253,11 @@ "يؤدي التحقق من رقم هاتفك إلى زيادة أمان حسابك ويسمح بخيارات إضافية للاسترداد." ] }, + "Recovery score": { + "Add more options to avoid getting locked out of your account.": [ + "أضف المزيد من الخيارات لتجنّب قفل حسابك." + ] + }, "RecoveryPhrase: Action": { "Continue": [ "استمر" @@ -17192,6 +17270,9 @@ ] }, "RecoveryPhrase: Info": { + "**Make sure you keep your recovery phrase accessible after creating it.** For security reasons, we do not store the phrase after saving your changes, and you won’t be able to see it again in the ${ BRAND_NAME } app.": [ + "**تأكّد من الاحتفاظ بعبارة الاسترداد في مكان يسهل الوصول إليه بعد إنشائها.** لأسباب أمنية، لا نقوم بتخزين العبارة بعد حفظ تغييراتك، ولن تتمكن من عرضها مرة أخرى في تطبيق ${ BRAND_NAME }." + ], "copy recovery phrase": [ "نسخ عبارة الاسترداد" ], @@ -17213,14 +17294,11 @@ "Or ${ downloadRecoveryKitSwitchButton } instead.": [ "أو ${ downloadRecoveryKitSwitchButton } بدلًا من ذلك." ], - "Your **Recovery Kit** lets you restore your ${ BRAND_NAME } Account if you’re locked out.": [ - "تتيح لك **مجموعة أدوات الاسترداد** الخاصة بك استعادة حساب ${ BRAND_NAME } الخاص بك إذا تم قفله." + "Your **recovery phrase** lets you restore your ${ BRAND_NAME } Account if you’re locked out.": [ + "تتيح لك **عبارة الاسترداد** استعادة حساب ${ BRAND_NAME } الخاص بك إذا تم قفلك خارجه." ] }, "RecoveryPhrase: Title": { - "Save your Recovery Kit": [ - "احفظ حزمة استردادك" - ], "Save your recovery phrase": [ "احفظ عبارة الاسترداد الخاصة بك" ] @@ -17587,8 +17665,8 @@ "Back to Safety Review": [ "العودة إلى قسم مراجعة الأمان" ], - "Because you reset your password, your current Recovery Kit can only be used to recover the data created before your password reset.": [ - "نظرًا لإعادة تعيين كلمة المرور، لا يمكن استخدام حزمة الاسترداد الحالية إلا لاسترداد البيانات التي تم إنشاؤها قبل إعادة تعيين كلمة المرور." + "Because you reset your password, your current recovery phrase can only be used to recover the data created before your password reset.": [ + "نظرًا لأنك قمت بإعادة تعيين كلمة المرور، يمكن استخدام عبارة الاسترداد الحالية فقط لاستعادة البيانات التي تم إنشاؤها قبل إعادة تعيين كلمة المرور." ], "Can be used to regain access to your account and data": [ "يمكن استخدامها لاستعادة الوصول إلى حسابك وبياناتك" @@ -17617,8 +17695,8 @@ "Download ${ size }": [ "تنزيل ${ size }" ], - "Download your Recovery Kit": [ - "تنزيل حزمة الاسترداد" + "Download your recovery phrase": [ + "قم بتنزيل عبارة الاسترداد الخاصة بك" ], "Email address": [ "عنوان البريد الإلكتروني" @@ -17632,8 +17710,8 @@ "Enable recovery by phone": [ "تفعيل الاسترداد عبر الهاتف" ], - "I understand that I will not be able to recover currently locked data with this Recovery Kit": [ - "أنا على دراية بأنني لن أتمكن من استرداد البيانات المقفلة حاليًا باستخدام حزمة الاسترداد هذه" + "I understand that I will not be able to recover currently locked data with this recovery phrase": [ + "أفهم أنني لن أتمكن من استرداد البيانات المقفلة حاليًا باستخدام عبارة الاسترداد هذه" ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in on this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "في حال نسيت كلمة مرور ${ BRAND_NAME } الخاصة بك واحتجت إلى إعادة تعيينها، في المرة التالية التي تسجل فيها الدخول على هذا الجهاز باستخدام كلمة المرور الجديدة، ستتم استعادة الوصول الكامل إلى حساب ${ BRAND_NAME } الخاص بك." @@ -17641,8 +17719,8 @@ "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "في حال نسيت كلمة مرور ${ BRAND_NAME } الخاصة بك واحتجت إلى إعادة تعيينها، في المرة التالية التي تسجل فيها الدخول على هذا الجهاز باستخدام كلمة المرور الجديدة، ستتم استعادة الوصول الكامل إلى حساب ${ BRAND_NAME } الخاص بك." ], - "If you get locked out of your ${ BRAND_NAME } Account, your Recovery Kit will allow you to sign in and recover your data.": [ - "في حال تم إغلاق حسابك ${ BRAND_NAME }، ستسمح لك حزمة الاسترداد بتسجيل الدخول واسترداد بياناتك." + "If you get locked out of your ${ BRAND_NAME } Account, your recovery phrase will allow you to sign in and recover your data.": [ + "إذا تم قفلك خارج حساب ${ BRAND_NAME } الخاص بك، فستتيح لك عبارة الاسترداد تسجيل الدخول واستعادة بياناتك." ], "If you lose your login details and need to reset your account, **it’s imperative** that you have both an **account recovery and data recovery method** in place, otherwise you might not be able to access any of your emails, contacts, files or passwords.": [ "في حال فقدت تفاصيل تسجيل الدخول وتحتاج إلى إعادة تعيين حسابك، **فمن الضروري** أن تكون لديك **طريقة لاسترداد الحساب وطريقة لاسترداد البيانات**، وإلا فقد لا تتمكن من الوصول إلى أي من رسائلك الإلكترونية أو جهات اتصالك أو ملفاتك أو كلمات المرور." @@ -17686,8 +17764,8 @@ "Take action to secure your account": [ "اتخذ الإجراء لتأمين حسابك" ], - "There was an error generating your Recovery Kit": [ - "حدث خطأ أثناء إنشاء حزمة الاسترداد" + "There was an error generating your recovery phrase": [ + "حدث خطأ أثناء إنشاء عبارة الاسترداد الخاصة بك" ], "There was an error verifying your email": [ "حدث خطأ أثناء التحقق من بريدك الإلكتروني" @@ -17716,11 +17794,11 @@ "to recover your account if you're ever locked out": [ "لاسترداد حسابك في حال تم إغلاقه" ], - "Update your Recovery Kit": [ - "تحديث حزمة الاسترداد" + "Update your recovery phrase": [ + "قم بتحديث عبارة الاسترداد الخاصة بك" ], - "Update your Recovery Kit?": [ - "هل تريد تحديث حزمة الاسترداد؟" + "Update your recovery phrase?": [ + "تحديث عبارة الاسترداد؟" ], "Verify": [ "التحقق" @@ -17737,8 +17815,8 @@ "Verify your recovery phone number": [ "التحقق من رقم هاتف الاسترداد" ], - "We encountered an error while generating your Recovery Kit. Please try again later, or contact support if the issue continues.": [ - "واجهنا خطأ أثناء إنشاء حزمة الاسترداد الخاصة بك. يرجى المحاولة مرة أخرى لاحقًا، أو الاتصال بالدعم إذا استمرت المشكلة." + "We encountered an error while generating your recovery phrase. Please try again later, or contact support if the issue continues.": [ + "واجهنا خطأً أثناء إنشاء عبارة الاسترداد. يرجى المحاولة مرة أخرى لاحقاً، أو التواصل مع الدعم إذا استمرت المشكلة." ], "We encountered an error while verifying your email. Please try again later, or contact support if the issue continues.": [ "واجهنا خطأ أثناء التحقق من بريدك الإلكتروني. يرجى المحاولة مرة أخرى لاحقًا، أو الاتصال بالدعم إذا استمرت المشكلة." @@ -17761,8 +17839,8 @@ "You can disable this at any time.": [ "يمكنك تعطيله في أي وقت." ], - "You can use the recovery phrase in this Recovery Kit to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ - "يمكنك استخدام عبارة الاسترداد الموجودة في حزمة الاسترداد هذه لاستعادة حسابك بالكامل عند إعادة تعيين كلمة المرور، لذا تأكد من حفظها في مكان آمن." + "You can use the recovery phrase in this recovery phrase to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ + "يمكنك استخدام عبارة الاسترداد هذه لاستعادة حسابك بالكامل عند إعادة تعيين كلمة المرور، لذا تأكّد من الاحتفاظ بها في مكان آمن." ], "You can use your email to regain access to your account if you forget your password.": [ "يمكنك استخدام بريدك الإلكتروني لاستعادة الوصول إلى حسابك إذا نسيت كلمة المرور." @@ -17773,8 +17851,8 @@ "You can use your recovery phone to regain access to your account if you forget your password.": [ "يمكنك استخدام هاتفك المخصص للاسترداد لاستعادة الوصول إلى حسابك إذا نسيت كلمة المرور." ], - "You have previously downloaded a Recovery Kit. Downloading a new one will **deactivate the old one**.": [ - "لقد قمت بتنزيل حزمة استرداد سابقا. سيؤدي تنزيل حزمة جديدة إلى **تعطيل الحزمة القديمة**." + "You have previously downloaded a recovery phrase. Downloading a new one will **deactivate the old one**.": [ + "لقد قمت سابقًا بتنزيل عبارة استرداد. سيؤدي تنزيل واحدة جديدة إلى **تعطيل العبارة القديمة**." ], "You have recommended actions to safeguard your account further.": [ "اتخذ الإجراءات الموصى بها لزيادة حماية حسابك." @@ -17839,12 +17917,6 @@ "Your recovery email is set": [ "تم تعيين بريد الاسترداد" ], - "Your Recovery Kit": [ - "حزمة الاسترداد الخاصة بك" - ], - "Your Recovery Kit is set": [ - "تم إعداد حزمة الاسترداد" - ], "Your recovery methods": [ "طرق الاسترداد الخاصة بك" ], @@ -17865,6 +17937,12 @@ ], "Your recovery phone number is:": [ "رقم هاتف الاسترداد الخاص بك هو:" + ], + "Your recovery phrase": [ + "عبارة الاسترداد الخاصة بك" + ], + "Your recovery phrase is set": [ + "تم تعيين عبارة الاسترداد الخاصة بك" ] }, "saml: Action": { @@ -18070,6 +18148,11 @@ "لم يعثر على أي نتائج" ] }, + "Sentinel banner": { + "To ensure the highest possible security of your account, disable recovery via email and SMS.": [ + "لضمان أعلى مستوى ممكن من الأمان لحسابك، عطّل الاسترداد عبر البريد الإلكتروني والرسائل النصية القصيرة." + ] + }, "Server-Info": { "active": [ "نشط" @@ -18425,6 +18508,14 @@ "طلب إعادة تعيين كلمة المرور" ] }, + "Setting": { + "Get updates about comments via email": [ + "احصل على تحديثات حول التعليقات عبر البريد الإلكتروني" + ], + "Include document name in email notifications": [ + "قم بتضمين اسم المستند في إشعارات البريد الإلكتروني" + ] + }, "Settings description": { "Keep your inbox organized with folders and labels. ${ learnMoreLink }": [ "حافظ على تنظيم صندوق الوارد باستخدام المجلدات والتسميات. ${ learnMoreLink }" @@ -18434,6 +18525,9 @@ "Account": [ "الحساب" ], + "Managed Companies": [ + "الشركات التي تديرها" + ], "Organization": [ "المؤسسة" ] @@ -19270,11 +19364,29 @@ ] }, "Spotlight": { + "Assign delegated roles": [ + "تعيين الأدوار المفوّضة" + ], + "Assign roles": [ + "تعيين الأدوار" + ], + "Click Edit to assign roles to this group and manage member access automatically.": [ + "اضغط على «تعديل» لتعيين الأدوار لهذه المجموعة وإدارة وصول الأعضاء تلقائيًا." + ], "Earn up to ${ maxRewardAmount } in credit": [ "اكسب رصيدًا يصل إلى ${ maxRewardAmount }" ], "Get credits when the person you invite subscribes to a ${ BRAND_NAME } plan.": [ "احصل على أرصدة عندما يشترك الشخص الذي تدعوه في خطة ${ BRAND_NAME }." + ], + "New: Roles and permissions tab": [ + "جديد: علامة تبويب الأدوار والأذونات" + ], + "Open this tab to grant specific permissions without full admin access.": [ + "افتح علامة التبويب هذه لمنح أذونات محددة بدون صلاحية وصول كاملة للمشرف." + ], + "You can now assign roles to individual users from this tab.": [ + "يمكنك الآن تعيين الأدوار للمستخدمين الفرديين من علامة التبويب هذه." ] }, "sso": { @@ -20319,6 +20431,12 @@ ], "View VPN session details for your organization.": [ "عرض تفاصيل جلسة VPN لمؤسستك." + ], + "With managed companies, you can add, edit, and remove access for organizations you oversee.": [ + "تتيح لك ميزة الشركات المُدارة إضافة المؤسسات التي تشرف عليها وإدارة صلاحيات الوصول إليها، بما في ذلك تعديلها أو إزالتها." + ], + "Your total monthly cost for all managed companies.": [ + "إجمالي التكلفة الشهرية لكافة الشركات التي تديرها." ] }, "Success": { @@ -20433,9 +20551,6 @@ "Organization logo updated": [ "تم تحديث شعار المؤسسة" ], - "Organization name set": [ - "تم تعيين اسم المؤسسة" - ], "Organization name updated": [ "تم تحديث اسم المؤسسة" ], @@ -20909,6 +21024,9 @@ "Activate user": [ "تفعيل المستخدم" ], + "Activate your email": [ + "قم بتفعيل بريدك الإلكتروني" + ], "Activity monitor": [ "مراقب النشاط" ], @@ -21112,6 +21230,9 @@ "Collaborate on documents": [ "التعاون في المستندات" ], + "Companies": [ + "الشركات" + ], "Compare plans": [ "مقارنة الخطط" ], @@ -21121,18 +21242,12 @@ "Confirm": [ "تأكيد" ], - "Confirm address": [ - "تأكيد العنوان" - ], "Confirm downgrade": [ "تأكيد التخفيض" ], "Confirm loss of ${ BRAND_NAME } bonuses": [ "تأكيد فقدان مكافآت ${ BRAND_NAME }" ], - "Confirm phone number": [ - "تأكيد رقم الهاتف" - ], "Connect ${ name }": [ "اتصال بـ ${ name }" ], @@ -21154,12 +21269,18 @@ "Connect your custom domain": [ "اربط نطاقك المخصَّص" ], + "Connected emails": [ + "رسائل البريد الإلكتروني المتصلة" + ], "Connection status": [ "حالة الاتصال" ], "Contact us": [ "اتصل بنا" ], + "Continue with free storage": [ + "تابع مع التخزين المجاني" + ], "Continue with partial import?": [ "الاستمرار مع استيراد الجزئي؟" ], @@ -21186,6 +21307,9 @@ "Create a new gateway": [ "إنشاء بوابة جديدة" ], + "Create a new password": [ + "قم بإنشاء كلمة مرور جديدة" + ], "Create Gateway": [ "إنشاء بوابة" ], @@ -21264,6 +21388,9 @@ "Data recovery": [ "استرداد البيانات" ], + "Data recovery contacts": [ + "جهات استرداد البيانات" + ], "Data retention": [ "الاحتفاظ بالبيانات" ], @@ -21273,6 +21400,9 @@ "Day theme": [ "سمة الصباح" ], + "Deactivate current phrase?": [ + "إلغاء تنشيط العبارة الحالية؟" + ], "Decrypt key": [ "تشفير المفتاح" ], @@ -21389,6 +21519,9 @@ "Download the mobile apps": [ "تنزيل تطبيقات الجوال" ], + "Download your recovery phrase": [ + "تنزيل عبارة الاسترداد الخاصة بك" + ], "Downloads": [ "التحميلات" ], @@ -21511,6 +21644,9 @@ "Feature access": [ "الوصول إلى الميزة" ], + "Fewer distractions, more focus": [ + "مشتتات أقل، تركيز أكثر" + ], "Filter for more focus": [ "رشح لمزيد من التركيز" ], @@ -21595,6 +21731,9 @@ "Get more from your VPN": [ "احصل على المزيد من VPN الخاص بك" ], + "Get more storage with ${ MAIL_APP_NAME } Plus": [ + "احصل على مساحة تخزين أكبر مع ${ MAIL_APP_NAME } Plus" + ], "Get the app on all your devices and enjoy safe, seamless access anywhere.": [ "احصل على التطبيق على جميع أجهزتك واستمتع بوصول آمن وسلس في أي مكان." ], @@ -21735,6 +21874,9 @@ "Mobile": [ "الجوال" ], + "Monthly Costs": [ + "التكاليف الشهرية" + ], "Multi-user support": [ "دعم متعدد المستخدمين" ], @@ -21768,6 +21910,9 @@ "No events": [ "لا توجد أحداث" ], + "No events yet": [ + "لا توجد أحداث بعد" + ], "No need to empty the trash": [ "لا حاجة لتفريغ المهملات" ], @@ -21849,9 +21994,6 @@ "Phone": [ "الهاتف" ], - "Photos": [ - "الصور" - ], "Pin the extension": [ "تثبيت الملحق" ], @@ -22119,6 +22261,9 @@ "Snooze:": [ "جدولة:" ], + "Something went wrong": [ + "طرأ خللٌ ما" + ], "Sort folders alphabetically": [ "ترتيب المجلدات أبجدياً" ], @@ -22286,6 +22431,9 @@ "Verify it’s you": [ "تحقق من أنك أنت" ], + "Verify your email": [ + "تحقق من بريدك الإلكتروني" + ], "Verifying your card...": [ "جارٍ التحقق من بطاقتك..." ], @@ -22310,6 +22458,9 @@ "Warning: suspected fake website": [ "تحذير: موقع مزيف مشتبه به" ], + "We sent you a code to your email to make sure it’s you. This code is valid for 10 minutes. Please enter it below.": [ + "أرسلنا رمزًا إلى بريدك الإلكتروني للتأكد من هويتك. هذا الرمز صالح لمدة 10 دقائق. يُرجى إدخاله أدناه." + ], "We'll send an email to your new address with instructions on completing the change.": [ "سنرسل بريدًا إلكترونيًا إلى عنوانك الجديد مع إرشادات حول إتمام التغيير." ], @@ -22355,6 +22506,12 @@ "Your ${ planTitle } subscription has started": [ "بدأ اشتراكك ${ planTitle }" ], + "Your admin at ${ orgName } is inviting you to activate your new secure ${ BRAND_NAME } account and update your password.": [ + "يدعوك المسؤول في ${ orgName } لتفعيل حساب ${ BRAND_NAME } الآمن الجديد الخاص بك وتحديث كلمة المرور." + ], + "Your admin is inviting you to activate your new secure ${ BRAND_NAME } account and update your password.": [ + "يدعوك المسؤول لتفعيل حساب ${ BRAND_NAME } الآمن الجديد الخاص بك وتحديث كلمة المرور." + ], "Your calendar link": [ "رابط تقويمك" ], @@ -23336,12 +23493,6 @@ "${ BRAND_NAME } will transfer as much data as possible, starting with your most recent messages.": [ "سينقل ${ BRAND_NAME } أكبر قدر ممكن من البيانات، بدءًا من أحدث رسائلك." ], - "Are you sure you want to delete the phone number?": [ - "هل أنت متأكد من أنك تريد حذف رقم الهاتف؟" - ], - "Are you sure you want to delete this address?": [ - "هل أنت متأكد أنك تريد حذف هذا العنوان؟" - ], "By deleting this address, you will no longer be able to receive daily email notifications.": [ "عند حذف هذا العنوان، لن تلقي إشعارات في البريد الإلكتروني." ], @@ -23351,9 +23502,6 @@ "By deleting this address, you will no longer be able to recover your account.": [ "عند حذف هذا العنوان، لن تستطيع استعادة حسابك." ], - "By deleting this phone number, you will no longer be able to recover your account.": [ - "عند حذف رقم الهاتف، لن تستطيع استرداد حسابك." - ], "If you cancel this import, you won't be able to resume it. ${ BRAND_NAME } saved all progress in your account. Cancel anyway?": [ "إذا ألغيت هذا الاستيراد، فلن تتمكن من استئنافه. لقد حفظ ${ BRAND_NAME } كل التقدم في حسابك. هل تريد الإلغاء على أي حال؟" ], diff --git a/applications/account/locales/be_BY.json b/applications/account/locales/be_BY.json index eddf7676d66..74f505bc1d6 100644 --- a/applications/account/locales/be_BY.json +++ b/applications/account/locales/be_BY.json @@ -39,7 +39,7 @@ "Выяўлены ${ name } і ${ remainingCount } іншыя(х) патэнцыяльныя(х) ўцечкі(ак). Уключыце функцыю ${ DARK_WEB_MONITORING_NAME }, каб паглядзець падрабязнасці і прыняць адпаведныя дзеянні. ${ link }" ], "${ name } and 1 other potential leak detected. Turn on ${ DARK_WEB_MONITORING_NAME } to view details and take action. ${ link }": [ - "Выяўлены ${ name } і 1 іншая патэнцыяльная ўцечка. Уключыце функцыю ${ DARK_WEB_MONITORING_NAME }, каб паглядзець падрабязнасці і прыняць адпаведныя дзеянні. ${ link }" + "Выяўлена ${ name } і яшчэ 1 іншая патэнцыяльная ўцечка даных. Уключыце функцыю ${ DARK_WEB_MONITORING_NAME }, каб паглядзець падрабязнасці і прыняць адпаведныя дзеянні. ${ link }" ], "A potential ${ name } leak was detected. Turn on ${ DARK_WEB_MONITORING_NAME } to view details and take action. ${ link }": [ "Выяўлена патэнцыяльная ўцечка ${ name }. Уключыце функцыю ${ DARK_WEB_MONITORING_NAME }, каб паглядзець падрабязнасці і прыняць адпаведныя дзеянні. ${ link }" @@ -51,7 +51,7 @@ "Выяўлена патэнцыяльная ўцечка ад ${ name }. Уключыце функцыю ${ DARK_WEB_MONITORING_NAME }, каб паглядзець падрабязнасці. ${ link }" ], "Your information was found in at least one data leak. Turn on ${ DARK_WEB_MONITORING_NAME } to view details and take action. ${ link }": [ - "Вашы звесткі былі знойдзены прынамсі ў адной уцечкі даных. Уключыце функцыю ${ DARK_WEB_MONITORING_NAME }, каб паглядзець падрабязнасці і прыняць адпаведныя дзеянні. ${ link }" + "Вашы звесткі былі знойдзены прынамсі ў адной уцечцы даных. Уключыце функцыю ${ DARK_WEB_MONITORING_NAME }, каб паглядзець падрабязнасці і прыняць адпаведныя дзеянні. ${ link }" ] }, "Accounts": { @@ -90,6 +90,9 @@ "Add": [ "Дадаць" ], + "Add ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }": [ + "Дадаць ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }" + ], "Add ${ BRAND_NAME } Account": [ "Дадаць уліковы запіс ${ BRAND_NAME }" ], @@ -162,6 +165,9 @@ "Add user": [ "Дадаць карыстальніка" ], + "Added ${ memberName } as group owner": [ + "Дадаць ${ memberName } як уладальніка групы" + ], "Align center": [ "Выраўнаваць па цэнтры" ], @@ -213,6 +219,9 @@ "Back to sign in": [ "Вярнуцца да ўваходу" ], + "Back to sign-in": [ + "Вярнуцца да ўваходу" + ], "Block": [ "Блакіраваць" ], @@ -309,6 +318,9 @@ "Confirm": [ "Пацвердзіць" ], + "Confirm email": [ + "Пацвердзіць электронную пошту" + ], "Confirm opening of link ${ linkToShow }": [ "Пацвердзіць адкрыццё спасылкі ${ linkToShow }" ], @@ -324,15 +336,15 @@ "Connect Gmail address": [ "Падключэнне адраса Gmail" ], - "Connect to Gmail": [ - "Падключыцца да Gmail" - ], "Connect to video conferencing": [ "Падключыцца да відэаканферэнцыі" ], "Connect your ${ BRAND_NAME } Account": [ "Падключыце свой уліковы запіс ${ BRAND_NAME }" ], + "Connect your email": [ + "Падключыць сваю электронную пошту" + ], "Connected": [ "Падключана" ], @@ -369,6 +381,9 @@ "Continue with ${ nameToDisplay } ${ maybeEmailInBrackets }": [ "Працягнуць з ${ nameToDisplay } ${ maybeEmailInBrackets }" ], + "Continue with Free": [ + "Працягнуць з тарыфным планам Free" + ], "Continue with Google": [ "Працягнуць з Google" ], @@ -444,6 +459,9 @@ "Create organization": [ "Стварыць арганізацыю" ], + "Create recovery phrase": [ + "Стварыць фразу аднаўлення" + ], "Create users": [ "Стварыць карыстальнікаў" ], @@ -516,8 +534,8 @@ "Delete record": [ "Выдаліць запіс" ], - "Delete token ${ token.Account }": [ - "Выдаліць токен ${ token.Account }" + "Delete token ${ tokens[0].Account }": [ + "Выдаліць токен ${ tokens[0].Account }" ], "Delete token “${ token.Name }”": [ "Выдаліць токен “${ token.Name }”" @@ -558,6 +576,9 @@ "Disable categories": [ "Адключыць катэгорыі" ], + "Disable category": [ + "Адключыць катэгорыю" + ], "Disable recovery phrase": [ "Адключыць фразу аднаўлення" ], @@ -633,6 +654,9 @@ "Download the desktop app": [ "Спампаваць праграму для камп'ютара" ], + "Download updated file": [ + "Спампаваць абноўлены файл" + ], "Edit": [ "Рэдагаваць" ], @@ -705,6 +729,9 @@ "Enable ${ darkWebMonitoring }": [ "Уключыць ${ darkWebMonitoring }" ], + "Enable category": [ + "Уключыць катэгорыю" + ], "enable desktop notifications": [ "ўключэнне апавяшчэнняў на працоўным стале" ], @@ -756,6 +783,9 @@ "Filters are being applied. This might take a few minutes.": [ "Адбываецца ўжыванне фільтраў. Гэта можа заняць некалькі хвілін." ], + "Finish": [ + "Гатова" + ], "Fit to window": [ "Па памеры акна" ], @@ -774,6 +804,12 @@ "Generate key": [ "Згенерыраваць ключ" ], + "Generate missing keys": [ + "Згенерыраваць адсутныя ключы" + ], + "Generate new phrase": [ + "Згенерыраваць новую фразу" + ], "Generate new recovery phrase": [ "Згенерыраваць новую фразу аднаўлення" ], @@ -873,6 +909,9 @@ "Go to ${ planOrAppName }": [ "Перайсці ў ${ planOrAppName }" ], + "Go to domain provider": [ + "Перайсці да пастаўшчыка даменаў" + ], "Go to label": [ "Перайсці ў меткі" ], @@ -1269,6 +1308,9 @@ "Remove this notification": [ "Выдаліць гэта апавяшчэнне" ], + "Removed ${ memberName } as group owner": [ + "Выдаліць ${ memberName } як уладальніка групы" + ], "Rename": [ "Перайменаваць" ], @@ -1350,6 +1392,9 @@ "Save": [ "Захаваць" ], + "Save & exit": [ + "Захаваць і выйсці" + ], "Save address": [ "Захаваць адрас" ], @@ -1605,6 +1650,9 @@ "Switch or add account": [ "Змяніць або дадаць уліковы запіс" ], + "Switch to free plan": [ + "Перайсці на бясплатны тарыфны план" + ], "Take a tour": [ "Пачаць знаёмства" ], @@ -1770,6 +1818,9 @@ "View recovery settings": [ "Паглядзець налады аднаўлення" ], + "View recovery setup details": [ + "Паглядзець падрабязнасці наладкі аднаўлення" + ], "Void": [ "Ануляваць" ], @@ -1779,6 +1830,9 @@ "Void all recovery files?": [ "Ануляваць усе файлы аднаўлення?" ], + "Watch the interview": [ + "Глядзець інтэрв'ю" + ], "Welcome": [ "Вітаем" ], @@ -2060,18 +2114,21 @@ ] }, "Admin roles onboarding": { + "2 new admin roles": [ + "2 новыя ролі адміністратара" + ], "3 new admin roles": [ "3 новыя ролі адміністратара" ], - "Admin roles": [ - "Ролі адміністратара" - ], "Configure security policies, data retention, and VPN infrastructure, and manage audit logs.": [ "Канфіграцыя палітык бяспекі, захоўванне даных, інфраструктура VPN і кіраванне журналамі аўдыта." ], "Delegate management by assigning specific admin roles. Give each admin only the access they need. This follows the principle of least privilege, protecting your organization from compromised accounts and accidental errors.": [ "Упаўнаважанае кіраванне з прызначэннем канкрэтных роляў адміністратару. Давайце кожнаму адміністратару толькі той доступ, які яму неабходны. Гэта адпавядае прынцыпу найменшых паўнамоцтваў, дазваляе абараніць вашу арганізацыю ад кампраметацыі ўліковых запісаў і выпадковых памылак." ], + "Delegate management for many users at once. Assign specific admin roles to groups for automatic permissions. This follows the principle of least privilege to save time on onboarding and offboarding while reducing errors.": [ + "Упаўнаважанае кіраванне некалькімі карыстальнікам адначасова. Прызначайце канкрэтныя ролі адміністратарам у групах для аўтаматычнага атрымання дазволаў. Гэта адпавядае прынцыпу найменшых паўнамоцтва і эканоміць час на прыём або вывад адміністратара з групы, а таксама дазваляе скараціць колькасць памылак." + ], "Delegate management with the appropriate admin role.": [ "Упаўнаважанае кіраванне з адпаведнай роляй адміністратара" ], @@ -2084,21 +2141,15 @@ "New: Control admin access for individual users": [ "Новае: кантроль доступу адміністратара для індывідуальных карыстальнікаў" ], - "Organization admin": [ - "Адміністратар арганізацыі" + "New: Control admin access for many users at once": [ + "Новае: кантралюйце доступ адміністратара для некалькіх карыстальнікаў адначасова" ], "Organization admin:": [ "Адміністратар арганізацыі:" ], - "Security admin": [ - "Адміністратар бяспекі" - ], "Security admin:": [ "Адміністратар бяспекі:" ], - "User admin": [ - "Адміністратар карыстальніка" - ], "User admin:": [ "Адміністратар карыстальніка:" ] @@ -2880,15 +2931,66 @@ "${ BRAND_NAME } Migration Assistant": [ "${ BRAND_NAME } Migration Assistant" ], - "Add a custom domain": [ - "Дадаць карыстальніцкі дамен" + "${ migratedCount } of ${ providerUsers.length }": [ + "${ migratedCount } з ${ providerUsers.length }" ], - "App installed": [ - "Праграма ўсталявана" + "**p=none**: do not quarantine or reject unauthorized emails. Usually, people only use this policy to troubleshoot or test.": [ + "**p=none**: не пераводзіць у каранцін і не адхіляе неаўтарызаваныя лісты. Звычайна карыстальнікі выкарыстоўваюць гэту палітыку пры непаладках або тэсціраванні." + ], + "**p=quarantine**: asking the recipient platforms to mark the unauthorized emails as spam or quarantine them.": [ + "**p=quarantine**: просіць платформы атрымальніка пазначаць неаўтарызаваныя электронныя лісты як спам або пераводзіць іх у каранцін." + ], + "**p=reject**: asking the recipient platforms to reject the unauthorized emails.": [ + "**p=reject**: просіць платформы атрымальніка адхіляць неаўтарызаваныя лісты." + ], + "Account connected": [ + "Уліковы запіс падключаны" + ], + "Account disconnected": [ + "Уліковы запіс адключаны" + ], + "Activated": [ + "Актывавана" + ], + "Activation link": [ + "Спасылка актывацыі" + ], + "Activation link copied to clipboard": [ + "Спасылка актывацыі скапіявана ў буфер абмену" + ], + "Add a domain": [ + "Дадаць дамен" + ], + "Add domain": [ + "Дадаць дамен" + ], + "Add users": [ + "Дадаць карыстальнікаў" + ], + "Add users and configure your domain manually for sending and receiving mail. Ideal for small teams starting from a clean slate.": [ + "Дадайце карыстальнікаў і сканфігурыруйце свой дамен уручную для адпраўкі і атрымання пошты. Ідэальна падыходзіць для невялікіх каманд, якія пачынаюць сваю дзейнасць з нуля." + ], + "Address is already used by a user outside of your organization. Please contact customer support to resolve this": [ + "Адрас ужо выкарыстоўваецца карыстальнікам з іншай арганізацыі. Звярніцеся ў службу падтрымкі кліентаў для вырашэння гэтай праблемы" + ], + "All": [ + "Усе" + ], + "An unknown error occurred": [ + "Адбылася невядомая памылка" + ], + "Are you sure you want to proceed? Users who haven't claimed their account before the migration is finalized will need to request a password reset from their ${ BRAND_NAME } organization administrator.": [ + "Вы сапраўды хочаце працягнуць? Карыстальнікі, якія не запыталі свой уліковы запіс да завяршэння пераносу, неабходна будзе скінуць пароль праз адміністратара арганізацыі ${ BRAND_NAME }." + ], + "As soon as the accounts are created, you can share the activation link so users can claim their ${ BRAND_NAME } account.": [ + "Як толькі ўліковыя запісы будуць створаны, вы зможаце абагуліць спасылку актывацыі, карыстальнікі змаглі атрымаць свой уліковы запіс ${ BRAND_NAME }." ], "Authenticate": [ "Аўтэнтыфікаваць" ], + "Authenticate to Google Workspace": [ + "Аўтэнтыфікацыя ў Google Workspace" + ], "Authenticate your Google Workspace account": [ "Аўтэнтыфікацыя вашага ўліковага запісу Google Workspace" ], @@ -2898,23 +3000,68 @@ "Change": [ "Змяніць" ], + "Choose how you want to bring your team and email setup to ${ BRAND_NAME }.": [ + "Выберыце, як перанесці налады сваёй каманды і лісты ў ${ BRAND_NAME }." + ], + "Choose what to migrate. Your choice will apply to all users. The migration will start after you decide which users to copy.": [ + "Выберыце, што вы хочаце перанесці. Ваш выбар будзе прыменены да ўсіх карыстальнікаў. Перанос пачнецца адразу пасля таго, як вы вырашыце якіх карыстальнікаў капіяваць." + ], "Completed": [ "Завершаныя" ], "Configure": [ "Сканфігурыраваць" ], + "Configure domain": [ + "Сканіфігурыраваць дамен" + ], "Configure migration": [ "Сканфігурыраваць перанос" ], + "Configure your domain": [ + "Сканфігурыруйце свой дамен" + ], "Contacts": [ "Кантакты" ], + "Continue migration": [ + "Працягнуць перанос" + ], + "Copy activation link": [ + "Скапіяваць спасылку актывацыі" + ], + "Copy activation link to clipboard": [ + "Скапіюйце спасылку актывацыі ў буфер абмену" + ], + "Copy the below code and paste it in the DNS section of your domain host. You can find an example and some helpful tips ${ hereHref }.": [ + "Скапіюйце код ніжэй і ўстаўце яго ў раздзел DNS вашага даменнага вузла. Прыклады і карысныя парады як гэта зрабіць можна знайсці ў ${ hereHref }." + ], + "Creating accounts": [ + "Стварэнне ўліковых запісаў" + ], + "DKIM adds a digital signature to each email so recipients can verify that the message really came from your domain and was not altered in transit. Without it, messages may be treated as less trustworthy.": [ + "DKIM дадае лічбавы подпіс да кожнага ліста, каб атрымальнікі маглі спраўдзіць, што паведамленне сапраўды паступіла з вашага дамена і не было зменена пры перадачы. Без гэтага спосабу спраўджання паведамленні могуць лічыцца менш надзейнымі." + ], + "DKIM records": [ + "Запісы DKIM" + ], + "DMARC builds on SPF and DKIM by telling receiving servers how to handle messages that fail these checks. It helps protect your domain from impersonation and improves overall delivery reliability.": [ + "DMARC заснаваны на SPF і DKIM. Сутнасць тэхналогіі заключаецца ў тым, што ён паведамляе правілы апрацоўкі паведамленняў, якія не прайшлі спраўджанне на серверы, які атрымаў гэтыя паведамленні. Гэта дапамагае абараніць ваш дамен ад імітацыі і павышае агульную надзейнасць дастаўкі." + ], + "DMARC records": [ + "Запісы DMARC" + ], + "Domain added": [ + "Дамены дададзены" + ], "Domain connected": [ "Дамен падключаны" ], - "Domain ownership verified": [ - "Уладальнік дамена спраўджаны" + "Ensure that your emails reach the inbox, not the spam folder. Updating SPF will allow users to send from ${ BRAND_NAME } and Google simultaneously for the duration of the migration.": [ + "Пераканайцеся, што вашы электронныя лісты трапляюць у паштовую скрыню, а не ў папку са спамам. Абнаўленне SPF дазволіць карыстальнікам адначасова адпраўляць лісты з ${ BRAND_NAME } і Google на працягу ўсяго перыяду пераносу." + ], + "Errors": [ + "Памылкі" ], "Estimated size": [ "Прыблізны памер" @@ -2922,15 +3069,39 @@ "Failed to load OAuth": [ "Не ўдалося загрузіць OAuth" ], + "Finalize migration": [ + "Завяршэнне пераносу" + ], + "Finalize your migration": [ + "Завяршэнне пераносу" + ], + "Finalizing the migration means all your emails will be routed directly to ${ BRAND_NAME }. Users will stop receiving emails on their Google accounts and data will not be synchronized between ${ BRAND_NAME } and Google anymore.": [ + "Завяршэнне пераносу азначае, што ўсе вашы лісты будуць накіроўвацца непасрэдна ў ${ BRAND_NAME }. Карыстальнікі больш не будуць атрымліваць лісты ў сваіх уліковых запісах Google, а даныя больш не будуць сінхранізавацца паміж ${ BRAND_NAME } і Google." + ], + "Find out what can be migrated.": [ + "Даведайцеся, што перанесена." + ], "Finish setting up your business account": [ "Завяршэнне наладкі вашага ўліковага запісу для бізнесу" ], + "Go to Domain names": [ + "Перайсці ў даменныя імёны" + ], "Google Marketplace app to copy data to ${ BRAND_NAME }": [ "Праграма Google Marketplace для капіявання даных у ${ BRAND_NAME }" ], + "Google Workspace account": [ + "Уліковы запіс Google Workspace" + ], + "Hang tight, we're setting up user accounts and will start importing user data shortly.": [ + "Пачакайце крыху... адбываецца наладжванне ўліковых запісаў карыстальнікаў і неўзабаве пачнецца імпартаванне іх даных." + ], "Has errors": [ "З памылкамі" ], + "Import errors for ${ user.AdminSetName }": [ + "Памылкі імпартавання для ${ user.AdminSetName }" + ], "In progress": [ "Выконваецца" ], @@ -2940,14 +3111,20 @@ "Install migration app": [ "Усталяваць праграму пераносу" ], - "Learn more about what can be migrated. Learn more": [ - "Даведайцеся больш аб тым, што можна перанесці. Даведацца больш" + "Install Migration assistant": [ + "Усталяваць Migration Assistant" + ], + "Loading your organization data": [ + "Загрузка даных вашай арганізацыі" ], "Mail": [ "Пошта" ], - "Migrate": [ - "Перанесці" + "Managed via ${ registrar.name }": [ + "Кіруецца праз ${ registrar.name }" + ], + "Member address not found. Please contact customer support to resolve this": [ + "Адрас удзельніка не знойдзены. Звяжыцеся з нашай службай падтрымкі кліентаў, каб вырашыць гэта" ], "Migrate from Google Workspace": [ "Перанесці з Google Workspace" @@ -2955,6 +3132,12 @@ "Migrate users": [ "Перанос карыстальнікаў" ], + "Migrate users to ${ BRAND_NAME }": [ + "Перанесці карыстальнікаў у ${ BRAND_NAME }" + ], + "Migrated": [ + "Перанесена" + ], "Migration includes": [ "Перанос уключаны" ], @@ -2967,8 +3150,35 @@ "Migration status": [ "Статус пераносу" ], - "Not started": [ - "Не запушчана" + "Missing organization private key": [ + "Адсутнічае закрыты ключ арганізацыі" + ], + "Missing organization public key": [ + "Адсутнічае адкрыты ключ арганізацыі" + ], + "More details": [ + "Дадатковая інфармацыя" + ], + "Move your users, emails, and settings from Google Workspace automatically. We’ll guide you through connecting your account, verifying your domain, and migrating users securely.": [ + "Аўтаматычна перамяшчайце сваіх карыстальнікаў, электронныя адрасы і налады з Google Workspace. Майстар дапаможа вам падключыць уліковы запіс, спраўдзіць дамен і бяспечна перанесці карыстальнікаў." + ], + "No error details available. Please contact customer support for more information": [ + "Падрабязнасці памылкі недаступны. Звяжыцеся са службай падтрымкі для атрымання дадатковай інфармацыі." + ], + "No users to display": [ + "Няма карыстальнікаў для адлюстравання" + ], + "Not activated": [ + "Не актываваны" + ], + "Not confirmed": [ + "Не пацверджана" + ], + "Once users have claimed their ${ BRAND_NAME } account, finalize the migration.": [ + "Пасля таго, як карыстальнікі запытаюць свае ўліковыя запісы ${ BRAND_NAME }, завяршыце перанос." + ], + "Once we have confirmed that emails are routed to ${ BRAND_NAME } the migration will be finalized. You will receive a confirmation email to let you know when this happens. This process can take up to 24 hours.": [ + "Як толькі будзе пацверджана, што лісты накіроўваюцца ў ${ BRAND_NAME } перанос будзе завершаны. Вы атрымаеце ліст з пацвярджэннем, калі гэта адбудзецца. Гэты працэс зойме да 24 гадзін." ], "Organization does not have enough seats available": [ "У арганізацыі недастаткова даступных ліцэнзій" @@ -2976,8 +3186,20 @@ "Organization does not have enough storage available": [ "У арганізацыі недастаткова даступнага месца для захоўвання" ], - "Organization settings": [ - "Налады арганізацыі" + "Pending": [ + "У чаканні" + ], + "Please add the following records in your DNS console of your domain provider:": [ + "Дадайце наступныя запісы ў кансоль DNS вашага пастаўшчыка даменаў:" + ], + "Please leave this window open until we're done creating all the users.": [ + "Пакіньце гэта акно адкрытым, пакуль не будзе завершана стварэнне ўсіх карыстальнікаў." + ], + "Please select at least one product to migrate": [ + "Выберыце прынамсі адзін прадукт для пераносу" + ], + "Refresh": [ + "Абнавiць" ], "Required": [ "Абавязкова" @@ -2988,8 +3210,8 @@ "Select at least one user to start a migration": [ "Выберыце прынамсі аднаго карыстальніка, каб пачаць перанос" ], - "Select what you want to migrate, this will apply to all users whether they are created now or later. Migration will start after user accounts are created.": [ - "Выберыце, што вы хочаце перанесці. Гэта дзеянне будзе прыменена да ўсіх карыстальнікаў незалежна ад таго, калі яны былі створаны. Перанос пачнецца пасля стварэння ўліковых запісаў карыстальнікаў." + "Select users to migrate": [ + "Выберыце карыстальнікаў для пераносу" ], "Set up": [ "Наладзіць" @@ -2997,53 +3219,122 @@ "Set up billing information": [ "Наладзіць плацежную інфармацыю" ], + "Set up manually": [ + "Наладзіць ўручную" + ], + "Set up secure sending (DKIM)": [ + "Наладзьце бяспечную адпраўку (DKIM)" + ], + "Set up secure sending (DMARC)": [ + "Наладзьце бяспечную адпраўку (DMARC)" + ], + "Set up secure sending (SPF)": [ + "Наладзьце бяспечную адпраўку (SPF)" + ], "Set up two-factor authentication": [ "Наладзіць двухфактарную аўтэнтыфікацыю" ], "Settings": [ "Налады" ], + "Share the activation link to users so they can claim their ${ BRAND_NAME } account.": [ + "Абагуліце спасылку актывацыі з карыстальнікамі, каб яны змаглі пацвердзіць свой уліковы запіс ${ BRAND_NAME }." + ], "Sign in to Google Workspace": [ "Увайсці ў Google Workspace" ], + "Size": [ + "Памер" + ], + "Some accounts are not claimed": [ + "Некаторыя ўліковыя запісы не пацверджаны" + ], + "SPF records": [ + "Запісы SPF" + ], + "Start migrating": [ + "Пачаць перанос" + ], "Start migration": [ "Пачаць перанос" ], "Status": [ "Статус" ], + "The default setting is none. However, to improve your security we recommend setting this value to p=quarantine.": [ + "Прадвызначаныя налады адсутнічаюць. Аднак для ўдасканалення вашай бяспекі рэкамендуецца наладзіць гэта значэнне ў p=quarantine." + ], + "The “p=” value specifies the action to take for emails that fail DMARC. Here are the available actions:": [ + "Значэнне \"p=\" указвае дзеянне, якое неабходна выканаць для лістоў, якія не прайшлі спраўджанне DMARC. Тут прадстаўлены даступныя дзеянні:" + ], + "This migration has been completed": [ + "Перанос завершаны" + ], "To migrate your organization’s data, you need to install the ${ BRAND_NAME } Migration Assistant app from the Google Workspace Marketplace. This will grant permission to ${ BRAND_NAME } to copy your data. After installing it, come back here to continue.": [ "Вам неабходна ўсталяваць праграму ${ BRAND_NAME } Migration Assistant з Google Workspace Marketplace, каб перанесці даныя сваёй арганізацыі. Гэта дзеянне дазволіць ${ BRAND_NAME } скапіяваць вашы даныя. Вярніцеся сюды для працягу пасля таго, як праграма будзе ўсталявана." ], - "Transfer errors": [ - "Памылкі перадачы" + "Update records for receiving": [ + "Абнавіце запісы для атрымання" ], "User": [ "Карыстальнік" ], + "User needs to activate their account through the activation link shown above": [ + "Карыстальнік павінен актываваць свой уліковы запіс праз спасылку актывацыі паказаную вышэй" + ], + "User status": [ + "Статус карыстальніка" + ], + "Users can use ${ BRAND_NAME } or Google simultaneously for the duration of the migration.": [ + "Карыстальнікі могуць адначасова выкарыстоўваць ${ BRAND_NAME } або Google на працягу ўсяго перыяду пераносу." + ], "Users migrated": [ "Карыстальнікі перанесены" ], + "Verified": [ + "Спраўджана" + ], + "Verify domain ownership": [ + "Спраўдзіце права ўласнасці на дамен" + ], "Verify installation": [ "Спраўдзіць усталяванне" ], "Verify your domain": [ "Спраўдзіць свой дамен" ], - "Verify your domain ownership": [ - "Спраўдзіце, што вы валодаеце даменам" - ], "Verify your domain to start a migration": [ "Спраўдзіце свой дамен, каб пачаць перанос" ], + "We detected the primary domain linked to your Google Workspace account. Confirm it to continue setting up email for your ${ BRAND_NAME } organization.": [ + "Сістэма выявіла, што асноўны дамен звязаны з вашым уліковым запісам Google Workspace. Пацвердзіце яго, каб працягнуць наладжванне электроннай пошты для сваёй арганізацыі ${ BRAND_NAME }." + ], "We were unable to verify the installation, please check that you have installed it in your Google Workspace account and try again.": [ "Немагчыма спраўдзіць усталяванне. Праверце, што ўсталяванне было зроблена ва ўліковым запісе Google Workspace і паспрабуйце яшчэ раз." ], + "We're still checking the MX records with your domain provider.": [ + "Сістэма ўсё яшчэ правярае запісы MX з вашым пастаўшчыком дамена." + ], + "We've noticed some users have not claimed their ${ BRAND_NAME } accounts.": [ + "Звярніце ўвагу, што некаторыя карыстальнікі не запыталі свае ўліковыя запісы ${ BRAND_NAME }." + ], "What are you migrating?": [ "Што вы плануеце перанесці?" ], + "You": [ + "Вы" + ], "You need to grant the permission for ${ BRAND_NAME } to copy your data. After accepting permissions, come back here to continue.": [ "Вам неабходна даць дазвол для ${ BRAND_NAME } на капіяванне вашых даных. Працягвайце далей пасля таго, як будуць прыняты дазволы." + ], + "You're all set!": [ + "Усё гатова!" + ], + "Your current plan allows up to ${ maxMembers } user. To migrate additional users, add more seats to your subscription.": [ + "Ваш бягучы тарыфны план падтрымлівае да ${ maxMembers } карыстальніка. Дадайце больш ліцэнзій у сваю падпіску, каб перанесці дадатковых карыстальнікаў.", + "Ваш бягучы тарыфны план падтрымлівае да ${ maxMembers } карыстальнікаў. Дадайце больш ліцэнзій у сваю падпіску, каб перанесці дадатковых карыстальнікаў.", + "Ваш бягучы тарыфны план падтрымлівае да ${ maxMembers } карыстальнікаў. Дадайце больш ліцэнзій у сваю падпіску, каб перанесці дадатковых карыстальнікаў.", + "Ваш бягучы тарыфны план падтрымлівае да ${ maxMembers } карыстальнікаў. Дадайце больш ліцэнзій у сваю падпіску, каб перанесці дадатковых карыстальнікаў." ] }, "breadcrumb": { @@ -3151,9 +3442,18 @@ ] }, "Button": { + "Add users manually": [ + "Дадаць карыстальнікаў уручную" + ], + "Cancel": [ + "Скасаваць" + ], "Close": [ "Закрыць" ], + "Configure your network": [ + "Сканфігурыруйце сваю сетку" + ], "Continue using ${ MAIL_APP_NAME }.": [ "Працягнуць выкарыстоўваць ${ MAIL_APP_NAME }." ], @@ -3175,6 +3475,12 @@ "Got it": [ "Зразумела" ], + "Invite your team": [ + "Запрасіць сваю каманду" + ], + "Manage global VPN permissions": [ + "Кіраваць глабальнымі дазволамі VPN" + ], "Maybe later": [ "Магчыма пазней" ], @@ -3184,12 +3490,21 @@ "Remind me later": [ "Нагадаць мне пазней" ], + "Secure your organization": [ + "Абараніць сваю арганізацыю" + ], "Send": [ "Адправіць" ], "Set up other features": [ "Наладзіць іншыя функцыі" ], + "Set up SSO": [ + "Наладзіць SSO" + ], + "Sign in": [ + "Увайсці" + ], "Take a tour": [ "Пачаць знаёмства" ] @@ -3798,6 +4113,41 @@ "Калі" ] }, + "Confirm cancellation": { + "Access is restored once usage is back within limits.": [ + "Доступ адновіцца пасля таго, як выкарыстанне вернецца ў дазволеныя абмежаванні." + ], + "Back up photos from your devices": [ + "Рэзерваваць фатаграфіі з вашай прылады" + ], + "Cancel subscription": [ + "Скасаваць падпіску" + ], + "Confirm cancellation": [ + "Пацвердзіць скасаванне" + ], + "If you exceed free plan limits, you won't be able to:": [ + "Вы не зможаце рабіць наступныя рэчы, калі перавысіце абмежаванні бясплатнага тарыфнага плана:" + ], + "Keep current plan": [ + "Пакінуць бягучы тарыфны план" + ], + "Manage your calendar": [ + "Кіраваць сваім календаром" + ], + "Receive new emails": [ + "Атрымліваць новыя лісты" + ], + "Send emails with attachments": [ + "Адпраўляць лісты з далучэннямі" + ], + "Upload any new files": [ + "Запампоўваць любыя новыя файлы" + ], + "When your subscription ends on ${ endDate }, your account will switch to the Free plan. If your usage exceeds Free plan limits, some features may be temporarily unavailable.": [ + "Ваш уліковы запіс будзе пераведзены на тарыфны план Free пасля завяршэння падпіскі ${ endDate }. Некаторыя функцыі могуць быць часова недаступнымі, калі вы перавысіце абмежаванні тарыфнага плана Free." + ] + }, "Confirm modal title": { "Import is incomplete!": [ "Імпартаванне незавершана!" @@ -4763,7 +5113,7 @@ "Здаецца, што ў вашым файле адсутнічае загаловак '${ options.fieldName }'." ], "We detected errors in multiple rows during import, please review your CSV file.": [ - "Мы выявілі памылкі ў некаторых радках падчас імпартавання, праверце ваш файл CSV." + "Сістэма выявіла памылкі ў некаторых радках падчас імпартавання, праверце ваш файл CSV." ] }, "cta": { @@ -4805,6 +5155,9 @@ "/month": [ "/месяц" ], + "/user /month": [ + "/карыстальніка /месяц" + ], "/user per month": [ "/карыстальніка ў месяц" ] @@ -4979,6 +5332,9 @@ ] }, "Description": { + "${ BRAND_NAME }'s end-to-end encryption means only you can unlock your data. Set up recovery options now to ensure you never lose access.": [ + "Скразное шыфраванне ў ${ BRAND_NAME } азначае, што толькі вы можаце разблакіраваць свае даныя. Наладзьце параметры аднаўлення, каб ніколі не згубіць доступ да свайго ўліковага запісу." + ], "${ DOCS_SHORT_APP_NAME } in ${ DRIVE_APP_NAME } allows you to work together with others in a secure, encrypted environment.": [ "${ DOCS_SHORT_APP_NAME } у ${ DRIVE_APP_NAME } дазваляе вам працаваць разам з іншымі ўдзельнікамі ў бяспечным і зашыфраваным асяроддзі." ], @@ -4988,6 +5344,9 @@ "${ MAIL_APP_NAME } is your default mail application.": [ "${ MAIL_APP_NAME } з'яўляецца вашай прадвызначанай паштовай праграмай." ], + "${ MAIL_APP_NAME } keeps your business data secure and lets you send encrypted emails to anyone.": [ + "${ MAIL_APP_NAME } захоўвае вашы дзелавыя даныя ў бяспецы і дазваляе адпраўляць зашыфраваныя лісты любому карыстальніку." + ], "A checked box means the feature is disabled.": [ "Сцяжок азначае, што функцыя адключана." ], @@ -5009,21 +5368,30 @@ "Automatically sort your incoming messages before they reach your inbox.": [ "Аўтаматычна сартуйце свае ўваходныя паведамленні перад тым, як яны трапяць у вашу паштовую скрыню." ], + "Available storage: ${ storageText }": [ + "Даступна ў сховішчы: ${ storageText }" + ], "Available with ${ title }": [ "Даступна з ${ title }" ], "Block Google's ability to profile you. Gmail can't see what you do in ${ MAIL_APP_NAME }": [ "Не давайце магчымасці Google ствараць ваш профіль. Gmail больш не зможа бачыць, што вы робіце ў ${ MAIL_APP_NAME }" ], - "Bring over email, calendar events, and contacts from another provider.": [ + "Bring over your email, calendar events, and contacts from another provider.": [ "Перанясіце свае лісты, падзеі календара і кантакты ад іншага пастаўшчыка." ], + "Build trust and brand recognition with professional email addresses at your own domain.": [ + "Стварайце давер і пазнавальнасць гандлёвай маркі з дапамогай прафесійных адрасоў электроннай пошты са сваім уласным даменам." + ], "Configure this first to activate your organization and customize your email address.": [ "Спачатку сканфігурыруйце гэтыя функцыі для актывацыі сваёй арганізацыі, а потым наладзьце адрас сваёй электроннай пошты." ], "Connect your CRM, website, printers, and more.": [ "Падключыце сваю CRM, вэб-сайт, прынтары і іншае." ], + "Create a Gateway to give your users access to your IT resources through dedicated servers.": [ + "Стварыце шлюз, каб даць карыстальнікам доступ да сваіх ІТ-рэсурсаў праз вылучаныя серверы." + ], "Create a Zoom meeting and add joining details to your event with one click.": [ "Стварыце сустрэчу Zoom і дадайце падрабязнасці аб далучэнні да падзеі адным націскам." ], @@ -5033,9 +5401,15 @@ "Create groups you can email with a single address.": [ "Стварайце групы, на якія можна адпраўляць электронныя лісты, выкарыстоўваючы адзін адрас." ], + "Create new user accounts or import users with SSO (single sign-on) SCIM provisioning.": [ + "Стварыце новы ўліковы запіс карыстальніка або імпартуйце карыстальнікаў з SSO (адзінага ўваходу) забеспячэння SCIM." + ], "Create policies to decide who can connect to shared servers in each country.": [ "Стварыце палітыку, каб вырашаць, хто можа падключацца да абагуленых сервераў у кожнай краіне." ], + "Decide which users can connect to each of our 120+ shared server locations.": [ + "Вырашыце, якія карыстальнікі могуць падключыцца да кожнага з нашых 120+ абагуленых серверных месцазнаходжанняў." + ], "Easily access your email and calendar on desktop and mobile.": [ "Лёгкі доступ да вашай электроннай пошты і календара на камп’ютары або мабільнай прыладзе." ], @@ -5060,6 +5434,9 @@ "Encrypting and importing contacts... This may take a few minutes. When the process is completed, you can close this modal.": [ "Шыфраванне і імпартаванне кантактаў... Гэта можа заняць некалькі хвілін. Калі працэс будзе завершаны, вы зможаце закрыць гэта акно." ], + "Enough room for years of emails, attachments and more.": [ + "Дастаткова месца ў сховішчы, якога хопіць на доўгія гады для захоўвання лістоў, далучэнняў і іншай інфармацыі." + ], "Ensure secure access to organization data, even if your team is remote or using public WiFi.": [ "Забяспечце бяспечны доступ да даных арганізацыі, нават калі ваша каманда працуе аддалена або выкарыстоўвае публічны Wi-Fi." ], @@ -5084,12 +5461,30 @@ "Help your team securely store passwords to sensitive business and client information.": [ "Дапамажыце сваёй камандзе бяспечна захоўваць паролі да важных дзелавых і кліенцкіх звестак." ], + "How our customer support team got our VPN app directly into people's hands.": [ + "Як наша каманда падтрымкі кліентаў забяспечвала непасрэдны доступ да праграмы VPN кожнаму карыстальніку." + ], + "How we fought back when ${ BRAND_NAME } was blocked in an aggressive campaign.": [ + "Як мы супраціўляліся, калі ${ BRAND_NAME } быў заблакіраваны падчас агрэсіўнай кампаніі." + ], + "How we supported local activists when privacy and free speech were threatened.": [ + "Як мы падтрымлівалі мясцовых актывістаў, калі прыватнасць і свабода слова апынуліся пад пагрозай." + ], + "How you unlock your encrypted data if you lose your password.": [ + "Якім чынам вы зможаце разбалкіраваць свае зашыфраваныя даныя ў выпадку страты пароля." + ], + "If you haven’t already, enable some recovery methods to make sure you never lose access to ${ VPN_APP_NAME }.": [ + "Уключыце некаторыя спосабы аднаўлення, каб быць упэўненым у тым, што вы ніколі не страціце доступ да ${ VPN_APP_NAME }." + ], "It looks like the contact list you are importing contains some groups. Please review how these groups should be imported.": [ - "Здаецца, што спіс кантактаў, які вы імпартуеце, змяшчае групы. Паглядзіце, як неабходна імпартаваць такія групы." + "Здаецца, што спіс кантактаў, які вы імпартуеце, змяшчае некаторыя групы. Паглядзіце, як неабходна імпартаваць такія групы." ], "Keep different parts of your life separate and your inbox organized with additional addresses.": [ "Адасобце розныя часткі свайго жыцця і ўпарадкуйце сваю паштовую скрыню з дадатковымі адрасамі." ], + "Keep your team secure on the go with our apps for web, iOS, Android, Windows, Mac, and Linux.": [ + "Забяспечвайце бяспеку сваёй каманды дзе б яны не знаходзіліся з дапамогай нашых праграм для браўзера, iOS, Android, Windows, Mac і Linux." + ], "Learn more about common problems": [ "Даведайцеся больш аб распаўсюджаных праблемах" ], @@ -5099,6 +5494,9 @@ "Make your email footer your own — showcase your unique brand, not ours.": [ "Персаналізуйце ніжні калонтытул ліста. Дэманструйце іншым свой унікальны брэнд, а не наш." ], + "Methods that include both password reset and data recovery.": [ + "Спосабы, якія ўключаюць як скіданне пароля, так і аднаўленне даных." + ], "Most issues can be solved in a few minutes with our step-by-step guides.": [ "Большасць праблем могуць быць вырашаны за некалькіх хвілін з дапамогай нашых пакрокавых дапаможнікаў." ], @@ -5111,8 +5509,8 @@ "Read, reply, and stay on top of Gmail from within ${ MAIL_APP_NAME }": [ "Чытайце, адказвайце і будзьце ў курсе таго, што адбываецца ў Gmail з дапамогай ${ MAIL_APP_NAME }" ], - "Send a code to your recovery email or phone": [ - "Адправіць код на вашу электронную пошту для аднаўлення доступу або на нумар тэлефона" + "Select which categories you want to add and if you want to receive push notifications for each category.": [ + "Выберыце, якія катэгорыі вы хочаце дадаць і ці хочаце вы атрымліваць push-апавяшчэнні для кожнай катэгорыі." ], "Set up accounts for all users and invite them to join ${ BRAND_NAME }.": [ "Наладзьце ўліковыя запісы для ўсіх карыстальнікаў і запрасіце іх далучыцца да ${ BRAND_NAME }." @@ -5126,6 +5524,9 @@ "Still need help? Our support team is here for you.": [ "Усё яшчэ патрэбная дапамога? Наша каманда падтрымкі заўсёды побач." ], + "This allows you to regain access to your ${ BRAND_NAME } account but does not recover your encrypted data.": [ + "Гэта дазволіць вам аднавіць доступ да вашага ўліковага запісу ${ BRAND_NAME }, але вашы даныя застануцца зашыфраванымі." + ], "This may happen if permissions were removed or your password changed.": [ "Гэта магло адбыцца з-за таго, што дазволы былі выдалены або ваш пароль зменены." ], @@ -5156,27 +5557,39 @@ "Track the status and activity of your referrals": [ "Сачэнне за статусам і актыўнасцю вашых рэферальных спасылак" ], + "Unlock 15 GB of storage for just ${ config.offerPrice }.": [ + "Разблакіруйце 15 ГБ сховішча ўсяго за ${ config.offerPrice }" + ], "Upgrade to ${ planName } to connect up to ${ MAX_SYNC_PAID_USER } accounts": [ "Палепшыце тарыфны план да ${ planName }, каб падключыць да ${ MAX_SYNC_PAID_USER } уліковых запісаў" ], "Upgrade to get ${ activatePmUser } for a shorter, easy-to-remember email address in addition to your current one.": [ "Абнавіце падпіску, каб атрымаць больш кароткі і запамінальны адрас электроннай пошты ${ activatePmUser } у дадатак да вашага бягучага." ], + "Use a recovery method to reset your password": [ + "Скарыстайцеся спосабам аднаўлення, каб скінуць свой пароль" + ], "Use this guide to get your organization promptly benefiting from ${ BRAND_NAME }'s industry-leading encryption and privacy ecosystem.": [ "Выкарыстоўвайце гэты дапаможнік, каб ваша арганізацыя хутка змагла атрымаць перавагі ад ${ BRAND_NAME }. Дадзеная экасістэма з'яўляецца адной з лепшых у галіне шыфравання і прыватнасці." ], "We can't access ${ boldEmails } anymore.": [ "Больш не ўдаецца атрымаць доступ да ${ boldEmails }." ], + "We will pause imports at 80% storage to reserve space for new messages.": [ + "Імпартаванне будзе прыпынена, калі сховішча будзе запоўнена на 80%. Гэта дазволіць зарэзерваваць астатняе месца для новых паведамленняў." + ], "We'll bring in your old emails and connect your Gmail to ${ MAIL_APP_NAME } so new messages appear automatically": [ "Мы перанясём вашы старыя паведамленні і падключым ваш Gmail да ${ MAIL_APP_NAME }, каб новыя паведамленні з'яўляліся ў ім аўтаматычна." ], - "We've started importing your email from Gmail. We'll let you know when it's done.": [ + "We've started importing your emails from Gmail. We'll let you know when it's done.": [ "Пачалося імпартаванне вашых лістоў з Gmail. Вы будзеце апавешчаны, калі працэс будзе завершаны." ], "We’re sorry to see you go. If you have a moment, we’d really appreciate hearing why you’d like to cancel. Your feedback helps us make ${ BRAND_NAME } better for everyone.": [ "Нам шкада, што вы пакідаеце нас. Мы будзем вам вельмі ўдзячныя, калі вы знойдзеце крыху часу паведаміць аб прычынах скасавання сваёй падпіскі. Вашы водгукі дапамагаюць зрабіць ${ BRAND_NAME } яшчэ лепш для кожнага карыстальніка." ], + "With new email categories, only important messages land in your primary inbox. Categories work just like spam filters. ${ MAIL_APP_NAME } never reads your emails or shares your data.": [ + "З новымі катэгорыямі лістоў, толькі важныя лісты будуць трапляць у вашу асноўную паштовую скрыню. Катэгорыі працуюць аналагічна фільтрам спаму. ${ MAIL_APP_NAME } ніколі не аналізуе вашы лісты і не абагульвае вашы даныя." + ], "You already have a Gmail address forwarding to ${ MAIL_APP_NAME }. Connect it below to send and receive emails directly from ${ MAIL_APP_NAME }.": [ "У вас ужо ёсць адрас Gmail, які перасылае лісты ў ${ MAIL_APP_NAME }. Падключыце яго ніжэй, каб адпраўляць і атрымліваць лісты наўпрост з ${ MAIL_APP_NAME }." ], @@ -5222,6 +5635,12 @@ "You've connected one external account address to ${ MAIL_APP_NAME }.": [ "Вы падключылі адзін адрас знешняга ўліковага запісу да ${ MAIL_APP_NAME }." ], + "Your free ${ MAIL_APP_NAME } account comes with limited storage so we'll only import ${ newUserStorageText } of your most recent Gmail messages": [ + "У вашага бясплатнага ўліковага запісу ${ MAIL_APP_NAME } абмежаваная ёмістасць сховішча і таму, удалося імпартаваць толькі ${ newUserStorageText } вашых апошніх паведамленняў з паштовай скрыні Gmail" + ], + "Your free ${ MAIL_APP_NAME } account comes with limited storage so we'll only import your most recent Gmail emails.": [ + "У вашага бясплатнага ўліковага запісу ${ MAIL_APP_NAME } абмежаваная ёмістасць сховішча і таму, удалося імпартаваць толькі самыя апошнія вашы лісты з Gmail." + ], "Your plan supports ${ MAX_SYNC_FREE_USER } Gmail address.": [ "Ваш тарыфны план падтрымлівае ${ MAX_SYNC_FREE_USER } адрас Gmail.", "Ваш тарыфны план падтрымлівае ${ MAX_SYNC_FREE_USER } адрасы Gmail.", @@ -5240,12 +5659,17 @@ "скарыстайцеся памочнікам імпартавання Easy Switch" ] }, + "Description for domain modal": { + "Duplicate DMARC record found, go to the DNS console of your domain provider to fix it.": [ + "Знойдзены дублікат запісу DMARC. Перайдзіце ў кансоль DNS свайго пастаўшчыка дамена, каб выправіць гэта." + ] + }, "Description of the purpose of the import CSV modal": { "Also, we have automatically matched CSV fields with vCard fields. You can review and change this matching manually.": [ "Таксама мы аўтаматычна параўналі палі CSV з палямі vCard. Вы можаце праверыць і змяніць гэтыя адпаведнасці ўручную." ], "We have detected the following fields in the CSV file you uploaded. Check the ones you want to import.": [ - "Мы выявілі наступныя палі ў файле CSV, які вы запампавалі. Адзначце тыя, якія вы хочаце імпартаваць." + "Выяўлены наступныя палі ў файле CSV, які вы запампавалі. Адзначце тыя, якія вы хочаце імпартаваць." ] }, "Disable account": { @@ -5663,6 +6087,9 @@ "120m": [ "120 хв" ], + "15 minutes": [ + "15 хвілін" + ], "30 minutes": [ "30 хвілін" ], @@ -6293,8 +6720,8 @@ "${ user } will not be able to access your account until the next emergency access.": [ "${ user } не зможа атрымаць доступ да вашага ўліковага запісу пакуль не наступіць чарговы экстранны доступ." ], - "**${ contact }** is now your recovery contact. They can help you recover your data after a password reset.": [ - "**${ contact }** цяпер з'яўляецца вашым кантактам для аднаўлення. Ён/яна змогуць дапамагчы вам аднавіць вашы даныя пасля скідання пароля." + "**${ contact }** is now your recovery contact. They can help you unlock your data after you reset your password.": [ + "**${ contact }** цяпер з'яўляецца вашым кантактам для аднаўлення. Дадзеныя кантакт зможа дапамагчы вам аднавіць вашы даныя пасля скідання пароля." ], "**If they confirm**, click **Approve recovery**. This will unlock their encrypted data.": [ "Націсніце **зацвердзіць аднаўленне**, **калі яны пацвердзяць**. Гэта разблакіруе іх зашыфраваныя даныя." @@ -6323,12 +6750,21 @@ "Add": [ "Дадаць" ], + "Add 1 more": [ + "Дадаць яшчэ 1" + ], "Add emergency contact": [ "Дадаць экстранны кантакт" ], + "Add option": [ + "Дадаць параметр" + ], "Add recovery contact": [ "Дадаць кантакт для аднаўлення" ], + "Add recovery method": [ + "Дадаць спосаб аднаўлення" + ], "Added on ${ formattedDate }": [ "Дададзена ${ formattedDate }" ], @@ -6371,6 +6807,9 @@ "Contacts": [ "Кантакты" ], + "Data recovery contacts": [ + "Кантакты для аднаўлення даных" + ], "Data successfully recovered. You can now decrypt your existing data and encrypted files.": [ "Даныя паспяхова адноўлены. Цяпер вы можаце расшыфраваць свае існуючыя даныя і зашыфраваныя файлы." ], @@ -6416,6 +6855,12 @@ "Enable auto-renew": [ "Уключыць аўтаматычнае падаўжэнне" ], + "Enter your extra password": [ + "Увядзіце свой дадатковы пароль" + ], + "Explore plans": [ + "Пазнаёміцца з тарыфнымі планамі" + ], "For ${ email }": [ "Для ${ email }" ], @@ -6446,11 +6891,11 @@ "Less than a minute left": [ "Засталося менш за хвіліну" ], - "Let ${ user } know it’s really you trying to regain access.": [ - "Дазвольце карыстальніку ${ user } ведаць, што доступ аднаўляеце менавіта вы." - ], - "None": [ - "Няма" + "Maximum of ${ limit } contact reached. To change, remove a contact and add a new one.": [ + "Дасягнута максімальная колькасць у ${ limit } кантакт. Выдаліце кантакт і дадайце новы, каб змяніць.", + "Дасягнута максімальная колькасць у ${ limit } кантакты. Выдаліце кантакт і дадайце новы, каб змяніць.", + "Дасягнута максімальная колькасць у ${ limit } кантактаў. Выдаліце кантакт і дадайце новы, каб змяніць.", + "Дасягнута максімальная колькасць у ${ limit } кантактаў. Выдаліце кантакт і дадайце новы, каб змяніць." ], "Only ": [ "Толькі " @@ -6542,14 +6987,11 @@ "Select recovery contact ${ name }": [ "Выберыце кантакт для аднаўлення ${ name }" ], - "Send email request": [ - "Адправіць запыт на электронную пошту" - ], "Send recovery request": [ "Адправіць запыт на аднаўленне" ], - "Set account recovery": [ - "Задаць аднаўленне для ўліковага запісу" + "Start recovery": [ + "Пачаць аднаўленне" ], "Stop being recovery contact": [ "Перастаць быць кантактам для аднаўлення" @@ -6569,9 +7011,15 @@ "They added me as trusted contact. I can access their account in case of an emergency.": [ "Яны дадалі мяне ў якасці даверанага кантакту і я магу атрымліваць доступ да іх уліковага запісу ў выпадку экстраннай сітуацыі." ], + "They added you as trusted contact. You can access their account in case of an emergency.": [ + "Яны дадалі вас ў якасці даверанага кантакту і вы можаце атрымліваць доступ да іх уліковага запісу ў выпадку экстраннай сітуацыі." + ], "They may ask to access my account in case of an emergency.": [ "Яны могуць папрасіць доступ да майго ўліковага запісу ў выпадку экстраннай сітуацыі." ], + "They may ask to access your account in case of an emergency.": [ + "Яны могуць папрасіць доступ да вашага ўліковага запісу ў выпадку экстраннай сітуацыі." + ], "They will receive access automatically in **${ days } day**, on **${ formattedAccessibleAt }**, you can reject their request or give them access immediately at any time.": [ "Яны атрымаюць доступ аўтаматычна праз **${ days } дзень**, **${ formattedAccessibleAt }**. Вы можаце адхіліць іх запыт або даць ім доступ неадкладна ў любы час.", "Яны атрымаюць доступ аўтаматычна праз **${ days } дні**, **${ formattedAccessibleAt }**. Вы можаце адхіліць іх запыт або даць ім доступ неадкладна ў любы час.", @@ -6590,6 +7038,9 @@ "Time required before automatically granting them access": [ "Час, які патрэбны на атрыманне дазволу аўтаматычнага доступу" ], + "To add recovery contacts, you must have a recovery email address or phone number.": [ + "Вы павінны мець адрас электроннай пошты або нумар тэлефона для аднаўлення." + ], "To disable this recovery method, remove all your recovery contacts.": [ "Выдаліце ўсе свае кантакты для аднаўлення, каб адключыць гэты спосаб аднаўлення." ], @@ -6599,6 +7050,9 @@ "Unable to recover data": [ "Немагчыма аднавіць даныя" ], + "Unlock ${ PASS_APP_NAME }": [ + "Разблакіраваць ${ PASS_APP_NAME }" + ], "Upgrade": [ "Палепшыць" ], @@ -6620,6 +7074,9 @@ "We received a request to unlock the encrypted data of your contact **${ user }**.": [ "Атрыманы запыт на разблакіроўку зашыфраваных даных вашага кантакту **${ user }**." ], + "We sent an email request to ${ user }. Let them know it's really you trying to regain access.": [ + "Адпраўлены ліст з запытам ${ user }, каб даць карыстальніку зразумець, што гэта сапраўды вы спрабуеце аднавіць доступ." + ], "We were not able to verify the recovery data. Proceed anyway?": [ "Не ўдалося спраўдзіць даныя для аднаўлення. Працягнуць у любым выпадку?" ], @@ -6895,7 +7352,7 @@ "Калі час на вашым тэлевізары завяршыўся, націсніце на ім кнопку \"Абнавіць\" і ўвядзіце код паўторна." ], "IMAP server is required": [ - "Патрабуецца ўвесці сервер IMAP" + "Патрабуецца сервер IMAP" ], "Impossible to create the gateway": [ "Немагчыма стварыць шлюз" @@ -6928,7 +7385,7 @@ "Няправільнае імя карыстальніка" ], "Intended recipient does not support calendar sharing": [ - "У прызначанага атрымальніка недаступна функцыя абагулення календара" + "У прызначанага атрымальніка функцыя абагулення календара не падтрымліваецца" ], "Invalid ${ name } code": [ "Памылковы код ${ name }" @@ -6957,6 +7414,9 @@ "Invalid invitation link": [ "Памылковая спасылка запрашэння" ], + "Invalid joining link. Please contact your administrator.": [ + "Памылковая спасылка на далучэнне. Звяжыцеся са сваім адміністратарам." + ], "Invalid name": [ "Памылковая назва" ], @@ -7137,9 +7597,6 @@ "Please try again in a few moments.": [ "Паўтарыце спробу крыху пазней." ], - "Please upgrade to a business plan with more than 1 user to get multi-user support": [ - "Перайдзіце на тарыфны план для бізнесу з больш чым 1 карыстальнікам, каб атрымаць падтрымку шматкарыстальніцкага рэжыму" - ], "Please upgrade to a business plan with more than 1 user to manage multiple users.": [ "Перайдзіце на тарыфны план для бізнесу з больш чым 1 карыстальнікам, каб атрымаць падтрымку шматкарыстальніцкага рэжыму." ], @@ -7192,10 +7649,10 @@ "Сеанс пратэрмінаваны. Абнавіце старонку." ], "Signature not verified": [ - "Подпіс не правераны" + "Подпіс не спраўджаны" ], "Signature verification failed": [ - "Не ўдалося праверыць подпіс" + "Не ўдалося спраўдзіць подпіс" ], "Some of your folder names are unavailable. Please customize the import to edit these names.": [ "Назвы некаторых вашых папак недаступны. Наладзьце імпартаванне, каб змяніць гэтыя назвы." @@ -7210,7 +7667,7 @@ "Назвы некаторых вашых метак недаступны. Наладзьце імпартаванне, каб змяніць гэтыя назвы." ], "Some of your label names exceed ${ MAIL_APP_NAME }'s maximum character limit. Please customize the import to edit these names.": [ - "Назвы некаторых вашых метак перавышаюць абмежаванні колькасці сімвалаў ${ MAIL_APP_NAME }. Наладзьце імпартаванне, каб змяніць гэтыя назвы." + "Назвы некаторых вашых метак перавышаюць максімальнае абмежаванне па колькасці сімвалаў ${ MAIL_APP_NAME }. Наладзьце імпартаванне, каб змяніць гэтыя назвы." ], "Something went wrong while creating the address": [ "Нешта пайшло не так пры стварэнні адраса" @@ -7284,8 +7741,11 @@ "There are too many folders in your external account. Please customize the import to delete some folders.": [ "У вашым знешнім уліковым запісе занадта шмат папак. Наладзьце імпартаванне, каб выдаліць некаторыя папкі." ], + "There was an error, please try again.": [ + "Адбылася памылка. Паспрабуйце яшчэ раз." + ], "This field exceeds the maximum of ${ maximumLength } characters.": [ - "Гэта поле перавышае максімальную колькасць сімвалаў (максімум: ${ maximumLength })." + "Гэта поле перавышае максімальную колькасць сімвалаў (дазволена: ${ maximumLength })." ], "This field is invalid": [ "Гэта поле з'яўляецца памылковым" @@ -7369,7 +7829,7 @@ "Няправільны код спраўджання. Пераканайцеся, што вы правільна скапіявалі код і паспрабуйце яшчэ раз. Змяненні ўступяць у сілу на працягу 24 гадзін." ], "You already added this holidays calendar": [ - "Вы ўжо дадавалі гэтыя святы ў каляндар" + "Вы ўжо дадавалі каляндар гэтых свят" ], "You have reached the maximum number of calendars.": [ "Вы дасягнулі максімальнай колькасці календароў." @@ -7568,6 +8028,9 @@ "Ask your administrator to enable Account monitor.": [ "Папрасіце свайго адміністратара ўключыць манітор уліковага запісу." ], + "Enable account monitor to start loading event.": [ + "Уключыце маніторынг уліковага запісу для пачатку загрузкі падзеі." + ], "Error: ${ errorMessage }": [ "Памылка: ${ errorMessage }" ], @@ -7995,7 +8458,7 @@ "Вы можаце паменшыць або павялічыць сховішча для гэтага карыстальніка." ], "You left this plan": [ - "Вы выйшлі са складу гэтага тарыфнага плана" + "Вы выйшлі з гэтага тарыфнага плана" ] }, "familyOffer_2023:Info for members section": { @@ -8085,21 +8548,36 @@ ] }, "Feature": { + "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME } desktop app": [ + "Праграма для камп'ютара ${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME }" + ], "${ MaxVPN } VPN connection": [ "${ MaxVPN } падключэнне па VPN", "${ MaxVPN } падключэнні па VPN", "${ MaxVPN } падключэнняў па VPN", "${ MaxVPN } падключэнняў па VPN" ], + "${ PROTON_SENTINEL_NAME } account protection": [ + "Абарона ўліковага запісу ${ PROTON_SENTINEL_NAME }" + ], + "10+ premium features": [ + "Больш за 10 прэміяльных функцый" + ], "15 GB storage": [ "15 ГБ сховішча" ], "3 email domains": [ "3 дамены электроннай пошты" ], + "3 folders, labels and filters": [ + "3 папкі, меткі і фільтры" + ], "500 GB storage": [ "500 ГБ сховішча" ], + "500 MB Mail storage": [ + "500 МБ сховішча для Mail" + ], "500 MB storage": [ "500 МБ сховішча" ], @@ -8124,6 +8602,12 @@ "Continue": [ "Працягнуць" ], + "Custom email domain": [ + "Карыстальніцкі дамен электроннай пошты" + ], + "Email addresses": [ + "Адрасы электроннай пошты" + ], "Encrypted cloud storage for files, photos and documents": [ "Зашыфраванае воблачнае сховішча для файлаў, фатаграфій і дакументаў" ], @@ -8133,23 +8617,41 @@ "More premium features": [ "Больш прэміяльных функцый" ], + "Premium features in Mail, Calendar, Drive, Pass and VPN": [ + "Прэміяльныя функцыі ў Mail, Calendar, Drive, Pass і VPN" + ], "Priority support": [ "Прыярытэтная падтрымка" ], "Remove": [ "Выдаліць" ], + "Schedule and snooze emails": [ + "Планаванне і адкладанне лістоў" + ], "Secure Core servers": [ "Серверы Secure Core" ], "Secure streaming support": [ "Падтрымка бяспечнай трансляцыі" ], + "Short domain @pm.me": [ + "Кароткі дамен @pm.me" + ], + "Storage": [ + "Сховішча" + ], "Torrenting support (P2P)": [ "Падтрымка торэнтаў (P2P)" ], + "Unlimited folders, labels and filters": [ + "Неабмежаваная колькасць папак, метак і фільтраў" + ], "Unlimited hide-my-email aliases": [ "Неабмежаваная колькасць псеўданімаў hide-my-email" + ], + "Use your own email domain": [ + "Выкарыстанне свайго ўласнага дамена электроннай пошты" ] }, "Features": { @@ -8518,10 +9020,13 @@ ] }, "Force upgrade safety review": { - "I understand that I will no longer be able to sign in to older versions of ${ BRAND_NAME } mobile apps.": [ - "Я разумею, што я больш не змагу ўвайсці са старых версій мабільных праграм ${ BRAND_NAME }." - ] - }, + "I understand that I will no longer be able to sign in to older versions of ${ BRAND_NAME } apps.": [ + "Я разумею, што я больш не змагу ўвайсці са старых версій праграм ${ BRAND_NAME }." + ], + "Learn more": [ + "Даведацца больш" + ] + }, "Form heading": { "Enter your email address": [ "Увядзіце адрас сваёй электроннай пошты" @@ -8620,6 +9125,9 @@ ], "Group address:": [ "Адрас групы:" + ], + "Roles and permission:": [ + "Ролі і дазволы:" ] }, "Group member count": { @@ -8681,6 +9189,14 @@ "Прыналежнасць да групы" ] }, + "group_modal": { + "General": [ + "Агульныя" + ], + "Roles and permissions": [ + "Ролі і дазволы" + ] + }, "Header": { "Access": [ "Доступ" @@ -9037,7 +9553,7 @@ "Гэты файл змяшчае адказы на запрашэнне:" ], "This file contains some data that we cannot import:": [ - "Гэты файл змяшчае некаторыя даныя, якія мы не можам імпартаваць:" + "Гэты файл змяшчае некаторыя даныя, якія немагчыма імпартаваць:" ] }, "Import contact": { @@ -9106,13 +9622,13 @@ "${ BRAND_NAME } не можа падключыцца да вашага ўліковага запісу Yahoo. Пераканайцеся, што:" ], "IMAP access is enabled in your external account.": [ - "У вашым знешнім уліковым запісе ўключаны IMAP." + "У вашым знешнім уліковым запісе ўключаны доступ па IMAP." ], "IMAP access is enabled in your Yahoo account.": [ "У вашым уліковым запісе Yahoo уключаны IMAP." ], "Too many recent requests. Please try again in a few moments.": [ - "Занадта шмат запытаў за апошні час. Паспрабуйце яшчэ раз праз некаторы час." + "Занадта шмат запытаў за апошні час. Паспрабуйце яшчэ раз пазней." ], "Two-factor authentication is enabled in your external account.": [ "Двухфактарная аўтэнтыфікацыя ўключана ў вашым знешнім уліковым запісе." @@ -9124,7 +9640,7 @@ "Выкарыстоўвайце свой пароль праграмы, калі:" ], "Use your app password instead of your regular password if:": [ - "Выкарыстоўвайце ваш пароль праграмы замест звычайнага пароля, калі:" + "Выкарыстоўвайце пароль праграмы замест звычайнага пароля, калі:" ], "Your app password is correct. Do not use your regular password.": [ "Ваш пароль праграмы з'яўляецца правільным. Не выкарыстоўвайце свой звычайны пароль." @@ -9139,7 +9655,7 @@ "Ваш адрас электроннай пошты і пароль ад праграмы з'яўляюцца правільнымі. Не выкарыстоўвайце свой звычайны пароль." ], "Your email address and password are correct.": [ - "Вашы адрас электроннай пошты і пароль правільныя." + "Ваш адрас электроннай пошты і пароль правільныя." ], "Your password is correct.": [ "Ваш пароль правільны." @@ -9213,7 +9729,7 @@ "пароль праграмы або ўключыць IMAP" ], "CSV or a VCF (vCard) file": [ - "Файл CSV або VCF (vCard)" + "файл CSV або VCF (vCard)" ], "full calendar view": [ "поўнага выгляду календара" @@ -9227,10 +9743,10 @@ }, "Import instructions step": { "Go to ${ calendarViewLink } in Yahoo.": [ - "Перайсці да ${ calendarViewLink } у Yahoo." + "Перайсці да ${ calendarViewLink } ў Yahoo." ], "Mouse over the calendar you want to import and open the dropdown menu.": [ - "Навядзіце курсор мышы на каляндар, які вы хочаце імпартаваць, і адкрыйце выпадное меню." + "Навядзіце курсор мышы на каляндар, які хочаце імпартаваць, і адкрыйце выпадное меню." ], "Select ${ boldExport } to export the calendar as an ICS file.": [ "Выберыце ${ boldExport }, каб экспартаваць каляндар як файл ICS." @@ -9246,7 +9762,7 @@ "Імпартаваць з ${ providerName }" ], "More import options": [ - "Больш параметраў імпарту" + "Больш параметраў імпартавання" ] }, "Import status": { @@ -9339,6 +9855,15 @@ "${ boldWarning } You will lose access to all current encrypted data in your account if you continue.": [ "${ boldWarning } Вы страціце доступ да ўсіх бягучых зашыфраваных даных у вашым уліковым запісе, калі працягніце." ], + "${ BRAND_NAME } Business plans gives your team all the collaboration tools they need to be productive and organized in their work, while safeguarding your business.": [ + "Тарыфныя планы ${ BRAND_NAME } Business даюць вашай камандзе ўсе інструменты для сумеснай працы, якія ім спатрэбяцца для прадукцыйнай і арганізаванай працы, адначасова абараняючы ваш бізнес." + ], + "${ BRAND_NAME } Free": [ + "${ BRAND_NAME } Free" + ], + "${ BRAND_NAME } is independently funded and operates without advertising. Below are examples of how this independence has been used in practice.": [ + "${ BRAND_NAME } атрымлівае незлаежнае фінанстванне і працуе без рэкламы. Ніжэй прыведзены прыклады таго, як гэтая незалежнасць выкарыстоўвалася на практыцы." + ], "${ BRAND_NAME } is privacy you can trust, ensured by strong encryption, open-source code, and Swiss privacy laws. We believe nobody should be able to exploit your data, period. Our technology and business are based upon this fundamentally stronger definition of privacy.": [ "${ BRAND_NAME } - гэта прыватнасць, якой вы можаце давяраць. Дзякуючы надзейнаму шыфраванню, адкрытаму зыходнаму коду і швейцарскім законам аб прыватнасці. Мы цвёрда перакананыя, што ніхто не павінен выкарыстоўваць вашы даныя. Наша тэхналогія і бізнес заснаваны на гэтым прынцыпова жорсткім вызначэнні прыватнасці." ], @@ -9351,6 +9876,9 @@ "${ BRAND_NAME } will send a verification code to ${ phoneNumber }. Standard message rates may apply.": [ "${ BRAND_NAME } адправіць код спраўджання на нумар тэлефона ${ phoneNumber }. Могуць прымяняцца стандартныя тарыфы за паведамленні." ], + "${ BRAND_NAME } will send a verification code to your recovery phone. Standard message rates may apply.": [ + "${ BRAND_NAME } адправіць код спраўджання на ваш нумар тэлефона для аднаўлення. Могуць прымяняцца стандартныя тарыфы за паведамленне." + ], "${ BRAND_NAME }'s encryption technology means that nobody can access your password - not even us.": [ "Тэхналогія шыфравання ${ BRAND_NAME } азначае, што ніхто не зможа атрымаць доступ да вашага пароля - нават мы." ], @@ -9453,8 +9981,11 @@ "${ name } for Windows": [ "${ name } для Windows" ], + "${ name } is not available": [ + "${ name } недаступна" + ], "${ none }: do not quarantine or reject unauthorized emails. Usually, people only use this policy to troubleshoot or test.": [ - "${ none }: не пераводзіць у каранцін і не адхіляе неаўтарызаваныя электронныя лісты. Звычайна карыстальнікі выкарыстоўваюць гэту палітыку пры непаладках або тэсціраванні." + "${ none }: не пераводзіць у каранцін і не адхіляе неаўтарызаваныя лісты. Звычайна карыстальнікі выкарыстоўваюць гэту палітыку пры непаладках або тэсціраванні." ], "${ noTwoFAMembersLength }/${ canHaveTwoFAMembersLength } member": [ "${ noTwoFAMembersLength } удзельнік з ${ canHaveTwoFAMembersLength }", @@ -9606,6 +10137,9 @@ "${ vaultLink } updated": [ "${ vaultLink } абноўлена" ], + "${ VPN_SHORT_APP_NAME } hides your traffic. ${ PASS_SHORT_APP_NAME } hides your identity\n— unlimited **hide-my-email aliases** and **dark-web alerts** if your data is ever leaked.": [ + "${ VPN_SHORT_APP_NAME } хавае ваш трафік. ${ PASS_SHORT_APP_NAME } хавае вашу ідэнтычнасць\nз дапамогай неабмежаванай колькасці псеўданімаў **hide-my-email** і **папярэджанняў цёмнай сеткі**, калі раптам адбудзецца ўцечка вашых даных." + ], "${ vpnPlus } required for Country level connection.": [ "Для выбару падключэння на ўзроўні краіны патрабуецца тарыфны план ${ vpnPlus }." ], @@ -9645,6 +10179,9 @@ "(formerly Twitter)": [ "(раней вядомы як Twitter)" ], + "**${ appName }** is not available for your account.": [ + "**${ appName }** недаступна для вашага ўліковага запісу." + ], "**${ appName }** is not supported in your organization **${ organizationName }**.": [ "**${ appName }** не падтрымліваецца ў вашай арганізацыі **${ organizationName }**." ], @@ -9673,10 +10210,10 @@ "**Крок 2:** Вашы сябры атрымаюць 2 тыдні бясплатнага выкарыстання на сваім тарыфным плане." ], "**Step 3:** Get ${ referrerRewardAmount } in credits for every person that subscribes to a plan.": [ - "**Крок 3:** Атрымайце ${ referrerRewardAmount } крэдытаў за кожную асобу, якая падпішацца на тарыфны план." + "**Крок 3:** Вы атрымаеце ${ referrerRewardAmount } у крэдытах за кожную асобу, якая падпішацца на тарыфны план." ], "**Step 3:** Get **${ referrerRewardAmount } in credits** for every person that subscribes to a plan.": [ - "**Крок 3:** Атрымайце **${ referrerRewardAmount } крэдытаў** за кожную асобу, якая падпішацца на тарыфны план." + "**Крок 3:** Вы атрымаеце **${ referrerRewardAmount } у крэдытах** за кожную асобу, якая падпішацца на тарыфны план." ], "**Sync codes** to all your devices": [ "**Сінхранізуйце коды** з усімі вашымі прыладамі" @@ -9687,9 +10224,15 @@ "**This will disable end-to-end encrypted email forwardings:** you can set them up again later.": [ "**Гэта дзеянне прывядзе да адключэння скразнога шыфравання пры перасылцы лістоў:** вы зможаце наладзіць яго зноў пазней." ], + "**Your recovery email alone doesn't allow you to recover your encrypted data** after you reset your password.": [ + "**Адна толькі электронная пошта для аднаўлення не дазволіць аднавіць зашыфраваныя даныя** пасля скідання пароля." + ], "**Your recovery methods will be invalidated:** you can generate new recovery data later.": [ "**Вашы метады аднаўлення будуць ануляваны:** вы зможаце згенерыраваць новыя даныя для аднаўлення пазней." ], + "**Your recovery phone alone doesn’t allow you to recover your encrypted data** after you reset your password.": [ + "**Адзін толькі нумар тэлефона для аднаўлення не дазволіць аднавіць зашыфраваныя даныя** пасля скідання пароля." + ], "+ ${ invisibleCount } More": [ "+ яшчэ ${ invisibleCount }", "+ яшчэ ${ invisibleCount }", @@ -9759,15 +10302,27 @@ "Activity Monitor": [ "Манітор актыўнасці" ], + "Add ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }": [ + "Дадаванне ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }" + ], "Add ${ PLAN_NAMES[PLANS.MEET_BUSINESS] }": [ "Дадаць ${ PLAN_NAMES[PLANS.MEET_BUSINESS] }" ], + "Add 1 to 5 people who you trust and can contact easily. They will be able to reset your password for you by signing in to your account. They must already have a ${ BRAND_NAME } Account.": [ + "Дадайце ад 1 да 5 чалавек, якім вы давяраеце і з якімі можаце лёгка звязацца. Давераныя кантакты змогуць дапамагчы вам скінуць пароль, увайшоўшы ў ваш уліковы запіс. У іх ужо павінен быць уліковы запіс ${ BRAND_NAME }." + ], "Add a @pm.me email address to your account. This simple, shorter domain stands for \"${ MAIL_APP_NAME } me\" or \"Private Message me.\"": [ "Дадайце да вашага ўліковага запісу адрас электроннай пошты @pm.me. Гэта просты і кароткі дамен, які азначае \"\"${ MAIL_APP_NAME } me\" або \"Private Message me.\"" ], + "Add a phone number in case we need to contact you": [ + "Дадайце нумар тэлефона на выпадак, калі нам неабходна будзе звязацца з вамі" + ], "add a recovery method": [ "дададзены спосаб аднаўлення" ], + "Add an email address in case we need to contact you": [ + "Дадайце адрас электроннай пошты на выпадак, калі нам спатрэбіцца звязацца з вамі" + ], "Add another layer of security to your account. You’ll need to verify yourself with 2FA every time you sign in.": [ "Дадайце яшчэ адзін слой абароны ў свой уліковы запіс. Вам неабходна будзе спраўдзіць сваю асобу з дапамогай 2ФА пры кожным уваходзе." ], @@ -9798,11 +10353,11 @@ "Add your name and logo to create a more personalized experience for your organization.": [ "Дадайце свае назву і лагатып, каб стварыць больш персаналізаванае ўражанне для сваёй арганізацыі." ], - "Adding ${ addedServerCount } gateway server": [ - "Дадаванне ${ addedServerCount } сервера шлюза", - "Дадаванне ${ addedServerCount } сервераў шлюза", - "Дадаванне ${ addedServerCount } сервераў шлюза", - "Дадаванне ${ addedServerCount } сервераў шлюза" + "Adding ${ total } gateway server": [ + "Дадаванне ${ total } сервера шлюза", + "Дадаванне ${ total } сервераў шлюза", + "Дадаванне ${ total } сервераў шлюза", + "Дадаванне ${ total } сервераў шлюза" ], "Adding an external email address will disable end-to-end encryption for all email communication within that group. Do you want to proceed?": [ "Дадаванне знешніх адрасоў электроннай пошты адключыць скразное шыфраванне для ўсіх зносін па электроннай пошце ў рамках групы. Вы сапраўды хочаце працягнуць?" @@ -9868,10 +10423,10 @@ "Усе вашы змены будуць страчаны." ], "All your contacts will be imported, up to a limit of ${ maxContact }": [ - "Усе вашы кантакты будуць імпартаваны. Абмежаванне імпартавання складае да ${ maxContact }", - "Усе вашы кантакты будуць імпартаваны. Абмежаванне імпартавання складае да ${ maxContact }", - "Усе вашы кантакты будуць імпартаваны. Абмежаванне імпартавання складае да ${ maxContact }", - "Усе вашы кантакты будуць імпартаваны. Абмежаванне імпартавання складае да ${ maxContact }" + "Усе вашы кантакты будуць імпартаваны, але не больш за ${ maxContact }", + "Усе вашы кантакты будуць імпартаваны, але не больш за ${ maxContact }", + "Усе вашы кантакты будуць імпартаваны, але не больш за ${ maxContact }", + "Усе вашы кантакты будуць імпартаваны, але не больш за ${ maxContact }" ], "Allocated": [ "Вылучана" @@ -9882,6 +10437,12 @@ "Allow users to connect to secure shared servers from the **Countries** section of the ${ VPN_APP_NAME } app.": [ "Дазволіць карыстальнікам падключацца да бяспечна абагуленых сервераў з раздзела **Краіны** праграмы ${ VPN_APP_NAME }." ], + "Allowing QR code sign-in will let you sign in by scanning a QR code if you forget your password. All you need is to be signed in to a ${ BRAND_NAME } service on another device.": [ + "Дазвол уваходу па QR-кодзе забяспечыць вам магчымасць увайсці ў сістэму адсканіраваўшы QR-код, калі вы забудзеце свой пароль. Проста ўвайдзіце ў ${ BRAND_NAME } на іншай прыладзе." + ], + "Allowing the password reset from the settings lets you to change your password if you’ve lost it, but are still signed in to ${ BRAND_NAME }.": [ + "Калі вы згубілі пароль, то вы можаце скінуць яго пры ўмове актыўнага сеанса ў ${ BRAND_NAME } і дазволу на скіданне пароля ў наладах." + ], "Already allocated": [ "Ужо вылучана" ], @@ -9987,6 +10548,9 @@ "Are you sure you want to revoke certificate **${ name }**": [ "Вы сапраўды хочаце адклікаць сертыфікат **${ name }**" ], + "Are you sure you want to sign out of this account?": [ + "Вы сапраўды хочаце выйсці з гэтага ўліковага запісу?" + ], "Are you sure you want to sort your folders alphabetically?": [ "Вы сапраўды хочаце сартаваць вашыя папкі па алфавіце?" ], @@ -10083,9 +10647,18 @@ "Before you can start sending and receiving emails from your new addresses you need to create encryption keys for them.": [ "Перад тым, як пачаць адпраўляць і атрымліваць электронную пошту з вашых новых адрасоў, вам неабходна стварыць ключы шыфравання для іх." ], + "BEST FOR TV": [ + "ЛЕПШЫ ВЫБАР ДЛЯ ТЭЛЕВІЗАРА" + ], "Beta": [ "Бэта" ], + "Billed at ${ monthlyDiscountedPrice } for the first 6 months, renews at ${ monthlyRenewalPrice }.": [ + "Аплачваецца ${ monthlyDiscountedPrice } за першыя 6 месяцаў, а падаўжаецца за ${ monthlyRenewalPrice }." + ], + "Billed at ${ yearlyDiscountedPrice } for the first 12 months, renews at ${ yearlyRenewalPrice }.": [ + "Аплачваецца ${ yearlyDiscountedPrice } за першыя 12 месяцаў, а падаўжаецца за ${ yearlyRenewalPrice }." + ], "Billing cycle: ${ text }": [ "Перыяд аплаты: ${ text }" ], @@ -10095,6 +10668,9 @@ "Boost your organization’s brand identity and create a more consistent online experience for your users.": [ "Павысце ідэнтычнасць сваёй арганізацыі і стварыце больш паслядоўны досвед працы ў інтэрнэце для сваіх карыстальнікаў." ], + "By adding people you trust as recovery contacts, we'll be able to send them an email to help you if you're having trouble recovering your data after a password reset. You can also be a recovery contact for others.": [ + "Дадайце людзей, якім вы давяраеце, у якасці кантактаў для аднаўлення. У выпадку ўзнікнення праблем са скіданнем пароля ім можна будзе адправіць ліст з просьбай дапамагчы аднавіць вашы даныя. Вы таксама можаце дапамагаць іншым аднаўляць іх даныя." + ], "By creating a ${ PASS_APP_NAME } account with your SimpleLogin email, you can manage your aliases directly from ${ PASS_APP_NAME }.": [ "Ствараючы ўліковы запіс ${ PASS_APP_NAME } з дапамогай вашай электроннай пошты SimpleLogin, вы можаце кіраваць сваімі псеўданімамі наўпрост з ${ PASS_APP_NAME }." ], @@ -10137,9 +10713,6 @@ "Change your password": [ "Змяніць свой пароль" ], - "Check the status of imports and forwarding.": [ - "Праверка статусу імпартавання і перасылкі." - ], "Check your network and try again.": [ "Праверце сваю сетку і паспрабуйце зноў." ], @@ -10173,6 +10746,9 @@ "CNET editors choice award with a rating of 8.4 out of 10": [ "Узнагарода \"Выбар рэдакцыі CNET\" з рэйтынгам 8,4 з 10" ], + "Code has been re-sent.": [ + "Код быў паўторна адпраўлены" + ], "Coming soon": [ "Неўзабаве з'явіцца" ], @@ -10188,6 +10764,9 @@ "Configure SAML authentication for your organization through an identity provider like Okta, Microsoft Azure, or Google Identity Platform. This will enable SAML for the whole organization.": [ "Канфігурацыя аўтэнтыфікацыі SAML для вашай арганізацыі пры дапамозе пастаўшчыка пасведчанняў (такіх, як Microsoft Azure або Google Identity Platform). Гэта ўключыць SAML для ўсёй арганізацыі." ], + "Connect and manage your external mailboxes in ${ MAIL_APP_NAME }.": [ + "Падключыце і кіруйце вашай знешняй паштовай скрыняй у ${ MAIL_APP_NAME }." + ], "Connection data will be available in around 1 hour.": [ "Даныя аб падключэнні будуць даступны прыблізна праз 1 гадзіну." ], @@ -10206,6 +10785,9 @@ "Continue to connect this entity with your ${ BRAND_NAME } organization.": [ "Працягніце падключэнне гэтага аб'екта з вашай арганізацыяй ${ BRAND_NAME }." ], + "Continue with ${ BRAND_NAME } Free": [ + "Працягнуць з ${ BRAND_NAME } Free" + ], "Continuing will connect your ${ BRAND_NAME } Account to ${ name }.": [ "Працягнуўшы, вы падключыце ўліковы запіс ${ BRAND_NAME } да ${ name }." ], @@ -10248,11 +10830,11 @@ "Create a new code on your TV and try again.": [ "Стварыце новы код на вашым тэлевізары і паспрабуйце зноў." ], - "Create a secure cloud for ${ value } member": [ - "Стварыць бяспечнае воблака для ${ value } удзельніка", - "Стварыць бяспечнае воблака для ${ value } удзельнікаў", - "Стварыць бяспечнае воблака для ${ value } удзельнікаў", - "Стварыць бяспечнае воблака для ${ value } удзельнікаў" + "Create a secure cloud for ${ memberCount } member": [ + "Стварыць бяспечнае воблака для ${ memberCount } удзельніка", + "Стварыць бяспечнае воблака для ${ memberCount } удзельнікаў", + "Стварыць бяспечнае воблака для ${ memberCount } удзельнікаў", + "Стварыць бяспечнае воблака для ${ memberCount } удзельнікаў" ], "Create an account": [ "Стварыце ўліковы запіс" @@ -10272,6 +10854,12 @@ "Стварэнне сервераў шлюза: ${ serverNumber } / ${ total }", "Стварэнне сервераў шлюза: ${ serverNumber } / ${ total }" ], + "Creating gateway with ${ total } server": [ + "Стварэнне шлюза з ${ total } серверам", + "Стварэнне шлюза з ${ total } серверамі", + "варэнне шлюза з ${ total } серверамі", + "варэнне шлюза з ${ total } серверамі" + ], "Creating your account": [ "Стварэнне вашага ўліковага запісу" ], @@ -10320,6 +10908,9 @@ "Data recoverable with recovery phrase": [ "Даныя можна аднавіць з дапамогай фразы аднаўлення" ], + "Data recovery requires a password reset option (email or SMS)": [ + "Аднаўленне даных патрабуе параметр скідання пароля (электронная пошта або SMS)" + ], "dedicated servers": [ "вылучаныя серверы" ], @@ -10368,6 +10959,9 @@ "Disabling authenticator app 2FA will make your account less secure. Only proceed if absolutely necessary.": [ "Адключэнне праграмы аўтэнтыфікацыі 2ФА зробіць ваш уліковы запіс менш бяспечным. Працягвайце толькі ў тым выпадку, калі гэта сапраўды неабходна." ], + "Disabling the data backup on this device will prevent you from automatically unlocking your encrypted data after a password reset.": [ + "Адключэнне рэзервовага капіявання даных на гэтай прыладзе не дазволіць вам аўтаматычна разблакіраваць вашы зашыфраваныя даныя пасля скідання пароля." + ], "Discount": [ "Скідка" ], @@ -10530,6 +11124,9 @@ "Enabling recovery by phrase again will generate a new recovery phrase.": [ "Паўторнае ўключэнне аднаўлення фразай згенерыруе новую фразу аднаўлення." ], + "Enabling the data backup on this device will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset, simply by signing in on this device.": [ + "Уключэнне рэзервовай копіі даных на гэтай прыладзе адновіць доступ да лістоў, кантактаў, файлаў, пароляў і іншых зашыфраваных даных у вашым уліковым запісе пасля скідання пароля. Вам неабходна толькі ўвайсці ў сістэму на гэтай прыладзе." + ], "Encryption setting updated": [ "Налады шыфравання абноўлены" ], @@ -10701,12 +11298,12 @@ "For easy access to your passwords and more.": [ "Для лёгкага доступу да вашых пароляў і не толькі." ], + "For just ${ bundlePlanPriceInline }": [ + "Усяго за ${ bundlePlanPriceInline }" + ], "For users who are switching to ${ MAIL_APP_NAME } from another email service, select the ${ boldAddresses } tab and add all active email addresses before changing the MX record to ensure a smooth transition.": [ "Для забеспячэння плаўнага пераходу карыстальнікаў, якія пераходзяць на ${ MAIL_APP_NAME } з іншых служб электроннай пошты, выберыце ўкладку ${ boldAddresses } і дадайце ўсе актыўныя адрасы электроннай пошты перад змяненнем запісу MX." ], - "Forwarding automatically sends new incoming emails to your Inbox.": [ - "Перасылка аўтаматычна адпраўляе новыя ўваходныя лісты ў вашу паштовую скрыню." - ], "Free forever": [ "Бясплатна назаўсёды" ], @@ -10734,6 +11331,9 @@ "Gateways": [ "шлюзоў" ], + "Generating a new recovery phrase will deactivate your current recovery phrase.": [ + "Генерацыя новай фразы аднаўлення прывядзе да дэактывацыі вашай бягучай фразы аднаўлення." + ], "Generating a new recovery phrase will deactivate your old one.": [ "Генерацыя новай фразы аднаўлення прывядзе да дэактывацыі папярэдняй." ], @@ -10755,12 +11355,18 @@ "Get notified if your password or other personal data was leaked. ${ learnMoreLinkNoBreach }": [ "Атрымлівайце апавяшчэнні, калі адбываецца ўцечка вашага пароля або іншых асабістых даных. ${ learnMoreLinkNoBreach }" ], + "Get started": [ + "Пачатак працы" + ], "Get started with the referral link above.": [ "Пачніце па рэферальнай спасылцы вышэй." ], "Get visibility into account access": [ "Атрымайце агляд доступу да ўліковага запісу" ], + "Get VPN Plus": [ + "Атрымаць VPN Plus" + ], "Give the token a descriptive name, such as the service you plan to use it with, and select one of your active custom domain addresses. Only this address will be able to send emails with this token.": [ "Дайце токену апісальную назву. Гэта можа быць назва паслугі, з якой вы плануеце яго выкарыстоўваць, і выберыце адзін з вашых актыўных адрасоў карыстальніцкіх даменаў. Толькі гэты адрас зможа адпраўляць лісты з гэтым токенам." ], @@ -10818,6 +11424,12 @@ "If another administrator changed this password, you will need to ask them for the new Organization Password.": [ "Калі іншы адміністратар змяніў гэты пароль, вам неабходна будзе спытаць у яго новы пароль арганізацыі." ], + "If disabled, ${ BRAND_NAME } will still use your recovery email to send security notifications.": [ + "Калі функцыя ўключана, то ${ BRAND_NAME } усё яшчэ будзе выкарыстоўваць вашу электронную пошту для аднаўлення, каб адпраўляць апавяшэнні бяспекі." + ], + "If disabled, ${ BRAND_NAME } will still use your recovery phone to send security notifications.": [ + "Калі функцыя ўключана, то ${ BRAND_NAME } усё яшчэ будзе выкарыстоўваць ваш нумар тэлефона для аднаўлення, каб адпраўляць апавяшчэнні бяспекі." + ], "If disabled, only administrators will be able to export data.": [ "Толькі адміністратары будуць здольныя экспартаваць даныя, калі гэты параметр будзе адключаны." ], @@ -10896,6 +11508,9 @@ "If you purchased a gift code or received one from our support team, you can enter it here.": [ "Падарункавы код можна ўвесці ў гэта поле, калі вы купілі яго або атрымалі яго ад нашай службы падтрымкі." ], + "If you recently reset your password, you can ${ recoveryMethodLink } to unlock your data. If this is due to an old password reset, you can stop the message from showing again.": [ + "Вы можаце ${ recoveryMethodLink } для разблакіроўкі сваіх даных, калі нядаўна скідалі пароль. Можна спыніць паўторны паказ паведамлення, калі гэта звязана са скіданнем старога пароля." + ], "If you recently reset your password, you can use a data recovery method to unlock your data": [ "Калі вы нядаўна скінулі пароль, то вы можаце скарыстацца спосабам аднаўлення даных, каб разблакіраваць свае даныя" ], @@ -10962,6 +11577,9 @@ "Include device, location, and IP details": [ "Уключыць падрабязнасці аб прыладзе, месцазнаходжанні і IP" ], + "Included": [ + "Уключае" + ], "Increase your account security by verifying your email address.": [ "Павялічце бяспеку свайго ўліковага запісу з дапамогай спраўджання адраса электроннай пошты." ], @@ -11097,11 +11715,17 @@ "Item updated in vault": [ "Элемент абноўлены ў сховішчы" ], + "It’s often the easiest way to recover your account if you’re signed in.": [ + "У большасці выпадкаў гэты спосаб з'яўляецца самым простым для аднаўлення вашага ўліковага запісу, калі ў вас ёсць актыўны сеанс." + ], + "It’s the only way to instantly recover everything, so make sure you keep it somewhere safe but accessible.": [ + "Гэта адзіны спосаб імгненна аднавіць усе вашы даныя ў сэрвісе. Захавайце яе ў надзейным месцы і каб яна была даступна толькі вам." + ], "JCB logo": [ "Лагатып JCB" ], "Just confirm your selection and we'll do the rest.": [ - "Проста пацвердзіце свой выбар, а мы зробім усё астатняе." + "Проста пацвердзіце свой выбар, а астатнія дзеянні будуць зроблены праграмай." ], "Keep the voucher secure until needed, for example in ${ DRIVE_APP_NAME }.": [ "Захоўвайце ваўчар у бяспечным месцы, пакуль ён не спатрэбіцца. Напрыклад, ён можа прыдасца ў ${ DRIVE_APP_NAME }." @@ -11269,7 +11893,7 @@ "Назва павінна пачынацца з літары." ], "Name your new folder and select the parent folder you want to put it in. If you do not select a parent folder, this new folder will be created as a top level folder.": [ - "Назавіце новую папку і выберыце бацькоўскую папку, у якую вы хочаце яе ўкласці. Калі вы не выбераце бацькоўскую папку, то гэта новая папка будзе створана як папка верхняга ўзроўню." + "Назавіце новую папку і выберыце бацькоўскую папку, у якую вы хочаце яе ўкласці. Калі вы не выберыце бацькоўскую папку, то гэта новая папка будзе створана як папка верхняга ўзроўню." ], "NetShield is an ad-blocking feature from ${ VPN_APP_NAME } that protects your device from ads, trackers, and malware.": [ "NetShield - гэта функцыя блакіроўкі рэкламы ад ${ VPN_APP_NAME }, якая абараняе вашу прыладу ад рэкламы, праграм сачэння і шкодных праграм." @@ -11304,15 +11928,15 @@ "No card required": [ "Банкаўская картка не патрабуецца" ], + "No connected addresses.": [ + "Падключаныя адрасы адсутнічаюць." + ], "No countries enabled": [ "Няма ўключаных краін" ], "No folder selected": [ "Папка не выбрана" ], - "No forwarding history.": [ - "Няма гісторыі перасылак." - ], "No gateways": [ "Без шлюзоў" ], @@ -11376,6 +12000,9 @@ "Only change these settings if you are using PGP with non-${ BRAND_NAME } recipients.": [ "Змяняйце гэтыя налады толькі ў тым выпадку, калі ўжываеце PGP для перапіскі з атрымальнікамі, якія не карыстаюцца ${ BRAND_NAME }." ], + "Only sign in on devices you trust": [ + "Уваходзьце толькі на прыладах якім давяраеце" + ], "Only you can see the label": [ "Толькі вы будзеце бачыць гэту метку" ], @@ -11521,7 +12148,7 @@ "Прайдзіце аўтэнтыфікацыю са сваёй карткай на ўкладцы праверкі." ], "Please authenticate your payment in the verification tab.": [ - "Прайдзіце аўтэнтыфікацыю свайго плацяжу на ўкладцы праверкі." + "Прайдзіце аўтэнтыфікацыю свайго плацяжу на ўкладцы спраўджання." ], "Please check your file for errors, or contact customer support for more information.": [ "Праверце ваш файл на памылкі або звяжыцеся са службай падтрымкі для атрымання дадатковай інфармацыі." @@ -11629,7 +12256,7 @@ "Абаронены швейцарскімі законамі аб прыватнасці" ], "Public figures, journalists, executives, and others who may be the target of cyber attacks are highly encouraged to enable ${ PROTON_SENTINEL_NAME }.": [ - "Грамадскім дзеячам, журналістам і ўсім астатнім, хто можа стаць мішэнню кібератак, мы настойліва раім уключыць ${ PROTON_SENTINEL_NAME }" + "Грамадскім дзеячам, журналістам і ўсім астатнім, хто можа стаць мішэнню кібератак, настойліва рэкамендуецца ўключыць ${ PROTON_SENTINEL_NAME }" ], "Public link invite": [ "Запрашэнне па публічнай спасылцы" @@ -11649,9 +12276,18 @@ "Recently used servers:": [ "Серверы, якімі вы нядаўна карысталіся:" ], + "RECOMMENDED": [ + "РЭКАМЕНДАВАНЫ" + ], "Recommended on trusted devices. ${ keepMeSignedInLearnMoreLink }": [ "Рэкамендавана на давераных прыладах. ${ keepMeSignedInLearnMoreLink }" ], + "Recovery by email is not available while ${ PROTON_SENTINEL_NAME } is enabled.": [ + "Аднаўленне па адрасе электроннай пошты недаступна, калі ${ PROTON_SENTINEL_NAME } уключаны." + ], + "Recovery by phone is not available while ${ PROTON_SENTINEL_NAME } is enabled.": [ + "Аднаўленне па нумары тэлефона недаступна, калі ${ PROTON_SENTINEL_NAME } уключаны." + ], "Recovery file downloaded": [ "Файлы аднаўлення спампаваны" ], @@ -11659,7 +12295,7 @@ "Файлы аднаўлення былі ануляваны" ], "Recovery information will remain on this device unless you select to delete it.": [ - "Інфармацыя з аднаўленнем застанецца на гэтай прыладзе пакуль вы не выдаліце яе." + "Інфармацыя аб аднаўленні застанецца на гэтай прыладзе пакуль вы не выдаліце яе." ], "Recovery phrase copied to clipboard": [ "Фраза аднаўлення скапіявана ў буфер абмену" @@ -11692,7 +12328,7 @@ "Не забудзьце абагуліць падрабязнасці ўваходу з імі." ], "Remove metadata from images to protect your privacy.": [ - "Выдаліць метаданыя з відарысаў каб абараніць вашу прыватнасць." + "Выдаліць метаданыя з відарысаў, каб абараніць вашу прыватнасць." ], "Remove one of your calendars to join this one": [ "Выдаліце адзін з вашых календароў, каб далучыцца да гэтага" @@ -11805,6 +12441,9 @@ "Set up your organization": [ "Наладзьце сваю арганізацыю" ], + "Set up your organization and start protecting your data in a few easy steps.": [ + "Наладзьце сваю арганізацыю і пачніце абараняць свае даныя за некалькі простых крокаў." + ], "Setting successfully saved": [ "Налады паспяхова захаваны" ], @@ -11844,6 +12483,12 @@ "Show each sender's image in the message list. The sender's initials will be shown if a photo is not available.": [ "Паказвае відарыс кожнага адпраўніка ў спісе паведамлення. Будуць паказаны ініцыялы адпраўніка ў выпадку, калі фатаграфія недаступна." ], + "Show fewer benefits": [ + "Паказаць менш пераваг" + ], + "Show more benefits": [ + "Паказаць больш пераваг" + ], "Show original message": [ "Паказаць арыгінальнае паведамленне" ], @@ -11889,9 +12534,6 @@ "Something went wrong. Please try again or contact customer support.": [ "Нешта пайшло не так. Паспрабуйце яшчэ раз або звярніцеся ў службу падтрымкі кліентаў." ], - "Something went wrong. Please try again.": [ - "Нешта пайшло не так. Паспрабуйце яшчэ раз." - ], "Specify the domain which is allowed to authenticate with SAML SSO.": [ "Пазначыць дамен, які можна выкарыстоўваць для аўтэнтыфікацыі з SAML SSO." ], @@ -11985,8 +12627,11 @@ "TechRadar Pro recommended with a rating of 4.2 out of 5 stars": [ "Рэкамендацыя TechRadar Pro з рэйтынгам 4,2 з 5 зорак" ], + "Temporarily unavailable due to high demand. Please try again later.": [ + "Часова недаступна з-за высокага попыту. Паспрабуйце яшчэ раз пазней." + ], "Temporarily unavailable. Please check back later.": [ - "Часова недаступны. Паспрабуйце яшчэ раз пазней." + "Часова недаступна. Паспрабуйце яшчэ раз пазней." ], "Test link": [ "Тэставая спасылка" @@ -12070,7 +12715,7 @@ "Няправільны фармат вашага файла CSV." ], "The groups feature is not supported on your current subscription. Previously created groups are disabled and can only be deleted.": [ - "Функцыя груп не падтрымліваюцца вашай бягучай падпіскай. Папярэдне створаныя групы адключаны і іх можна толькі выдалены." + "Функцыя груп не падтрымліваюцца на вашай бягучай падпісцы. Папярэдне створаныя групы адключаны і іх можна толькі выдаліць." ], "The link to report that you didn't set up a ${ BRAND_NAME } Account has expired. Please get in touch with our support team to resolve this issue.": [ "Спасылка аб справаздачы, што вы не наладзілі ўліковы запіс ${ BRAND_NAME } пратэрмінавана. Звяжыцеся з нашай камандай падтрымкі, каб вырашыць гэту праблему." @@ -12123,6 +12768,9 @@ "This could take some time. Please do not close this page or disconnect from the internet.": [ "Гэта можа заняць некаторы час. Не закрывайце старонку і не адключайцеся ад інтэрнэту." ], + "This data recovery method requires a password reset option (email or SMS)": [ + "Гэты спосаб аднаўлення патрабуе параметр скідання пароля (электронная пошта або SMS)" + ], "This feature delays sending your emails, giving you the opportunity to undo send during the selected time frame.": [ "Гэта функцыя затрымлівае адпраўку вашых паведамленняў, што дае вам магчымасць адрабіць адпраўку на працягу выбранага перыяду часу." ], @@ -12183,6 +12831,9 @@ "This verification can take up to one hour. After successful verification, do not remove the TXT record as it is needed to confirm that you continue to own the domain.": [ "Гэта праверка можа заняць да адной гадзіны. Пасля паспяховай праверкі не выдаляйце гэты запіс TXT, бо ён неабходны для пацвярджэння таго, што вы з'яўляецеся ўладальнікам дамена." ], + "This will allow the TV to access your ${ BRAND_NAME } account.": [ + "Гэта дазволіць тэлевізару атрымаць доступ да вашага ўліковага запісу ${ BRAND_NAME }." + ], "This will delete all previous versions of your files older than ${ rententionLabel }.": [ "Гэта дзеянне прывядзе да выдалення ўсіх папярэдніх версій вашых файлаў, якія старэйшыя за ${ rententionLabel }." ], @@ -12196,7 +12847,7 @@ "Гэта адключыць двухфактарную аўтэнтыфікацыю, а таксама праграму аўтэнтыфікатар і метады ключоў бяспекі." ], "This will disable your current recovery phrase. You won't be able to use it to access your account or decrypt your data.": [ - "Гэта адключыць вашу бягучую фразу аднаўлення. Вы не зможаце выкарыстоўваць яе для доступу да вашага ўліковага запісу або расшыфроўкі даных." + "Гэта адключыць вашу бягучую фразу аднаўлення. Вы не зможаце выкарыстоўваць яе для доступу да вашага ўліковага запісу або расшыфроўкі сваіх даных." ], "This will download a file containing your private key. Protect this file by encrypting it with a password.": [ "Гэта дзеянне прывядзе да спампоўвання файла з вашым закрытым ключом. Зашыфруйце гэты файла, каб ён быў даступны толькі вам." @@ -12204,6 +12855,9 @@ "This will enable PayPal to be used to pay for your ${ BRAND_NAME } subscription. We will redirect you to PayPal in a new browser tab. If you use any pop-up blockers, please disable them to continue.": [ "Гэта дазволіць вам аплачваць падпіску ${ BRAND_NAME } праз PayPal. Мы перанакіруем вас на сайт PayPal, які адкрыецца ў новай укладцы браўзера. Калі вы выкарыстоўваеце пашырэнні блакіроўкі ўсплывальных вокнаў, адключыце іх, каб працягнуць." ], + "This will let you quickly and safely access your ${ BRAND_NAME } Account so you can change you password.": [ + "Гэта функцыя дазволіць вам хутка бяспечна атрымаць доступ да свайго ўліковага запісу ${ BRAND_NAME }, каб вы маглі змяніць свой пароль." + ], "This will permanently delete the data and all email addresses associated with these users.": [ "Гэта дзеянне незваротна выдаліць даныя і ўсе адрасы электроннай пошты, якія звязаны з гэтымі карыстальнікамі." ], @@ -12276,15 +12930,21 @@ "To decrypt and view your locked data after a password reset, select a recovery method.": [ "Выберыце спосаб аднаўлення для расшыфроўкі і прагляду вашых заблакіраваных даных пасля скідання пароля." ], + "To enable post-quantum protection, you’ll need to finish generating your new post-quantum encryption keys.": [ + "Спачатку неабходна завяршыць генерацыю вашых новых постквантавых ключоў шыфравання, а потым уключаць постквантавую абарону." + ], + "To ensure the highest possible security of your account, disable **Recovery by recovery email**.": [ + "Адключыце **Аднаўленне па электроннай пошце** для забеспячэння свайму ўліковаму запісу найвышэйшага з магчымых узроўняў бяспекі." + ], + "To ensure the highest possible security of your account, disable **Recovery by recovery phone**.": [ + "Адключыце **Аднаўленне па нумары тэлефона** для забеспячэння свайму ўліковаму запісу найвышэйшага з магчымых узроўняў бяспекі." + ], "To ensure you don’t lose important data, ${ DRIVE_APP_NAME } saves older versions of your files as you and your collaborators make changes. Select how long ${ BRAND_NAME } should keep previous versions.": [ "${ DRIVE_APP_NAME } захоўвае старыя версіі вашых файлаў, калі вы і іншыя ўдзельнікі сумеснай працы ўносіце змены. Гэта гарантуе, што вы не страціце важныя даныя. Выберыце, як доўга ${ BRAND_NAME } павінен захоўваць папярэднюю версію." ], "To fight spam and abuse, please verify you are human.": [ "У мэтах барацьбы са спамам і іншымі злоўжываннямі, нам неабходна пераканацца, што вы чалавек." ], - "To help keep your account safe, we want to make sure it's really you trying to sign in.": [ - "Пацвердзіце, што менавіта вы хочаце ўвайсці ва ўліковы запіс. Гэта дазволіць захаваць бяспеку вашага ўліковага запісу." - ], "To help keep your account safe, we want to make sure it’s really you trying to sign in.": [ "Пацвердзіце, што менавіта вы хочаце ўвайсці ва ўліковы запіс. Гэта дазволіць захаваць бяспеку вашага ўліковага запісу." ], @@ -12378,6 +13038,9 @@ "Unless you sign out of your account or change your password, your session will remain active. Sessions expire after 60 days of inactivity.": [ "Пакуль вы не выйдзеце са свайго ўліковага запісу або не зменіце свой пароль, ваш сеанс будзе актыўным. Сеансы спыняюцца праз 60 дзён бяздзейнасці." ], + "Unlock streaming with VPN Plus.": [ + "Разблакіраваць трансляцыі з VPN Plus" + ], "Unsaved changes": [ "Незахаваныя змены" ], @@ -12393,9 +13056,15 @@ "Unverified email address.": [ "Неправераны адрас электроннай пошты" ], + "Upgrade anytime to bring over the rest": [ + "Палепшыце ў любы час, каб перанесці астатняе" + ], "Upgrade now to get premium features, products and storage at a special price": [ "Палепшыце свой тарыфны план зараз, каб атрымаць прэміяльныя функцыі, прадукты, а таксама палепшыць сховішча па спецыяльнай цане" ], + "Upgrade or clear space anytime to bring over the rest": [ + "Палепшыце свой тарыфны план або вызваліце месца ў сховішчы, каб перанесці астатняе" + ], "Upgrade to add a shorter @pm.me address to your account that is easier to share. It stands for “${ MAIL_APP_NAME } me” or “Private Message me”.": [ "Палепшыце свой тарыфны план, каб дадаць кароткі адрас @pm да свайго ўліковага запісу, якім лёгка дзяліцца з астатнімі. Ён абазначае “${ MAIL_APP_NAME } me” або “Private Message me”." ], @@ -12525,6 +13194,9 @@ "Visa Secure logo": [ "Лагатып Visa Secure" ], + "VPN Plus": [ + "VPN Plus" + ], "VPN with dedicated servers and IP addresses": [ "VPN з вылучанымі серверамі і IP-адрасамі" ], @@ -12540,6 +13212,12 @@ "We advise you to use official ${ VPN_APP_NAME } applications when possible.": [ "Мы рэкамендуем вам па магчымасці выкарыстоўваць афіцыйныя праграмы ${ VPN_APP_NAME }." ], + "We can use your recovery email to send you a verification code to reset your password, and to contact you if we notice suspicious activity.": [ + "Ваш адрас электроннай пошты для аднаўлення доступу можа выкарыстоўвацца, каб адправіць вам код спраўджання для скідання пароля і сувязі з вамі, калі будзе заўважана падазроная актыўнасць." + ], + "We can use your recovery phone to send you a verification code to reset your password, and to contact you if we notice suspicious activity.": [ + "Ваш адрас нумар тэлефона для аднаўлення доступу можа выкарыстоўвацца, каб адправіць вам код спраўджання для скідання пароля і сувязі з вамі, калі будзе заўважана падазроная актыўнасць." + ], "We couldn't complete the transaction. Please try again.": [ "Немагчыма завяршыць трансакцыю. Паспрабуйце яшчэ раз." ], @@ -12562,7 +13240,7 @@ "Нам неабходна аўтэнтыфікаваць спосаб плацяжу з дапамогай вашага банка." ], "We need to authenticate your payment with your bank.": [ - "Нам неабходна аўтэнтыфікаваць плацеж з дапамогай вашага банка." + "Неабходна аўтэнтыфікаваць плацеж з дапамогай вашага банка." ], "We recommend adding servers in different locations (one per city) to maximize redundancy.": [ "Рэкамендуецца дадаваць серверы ў розных месцазнаходжаннях (па адным на горад), каб разгарнуць лішкавасць." @@ -12585,6 +13263,9 @@ "We stored a backup file in this browser because you allowed data recovery on this ${ deviceLink }. If the backup file is valid, you will immediately regain complete or partial access to your encrypted data.": [ "Мы захавалі рэзервовы файл у гэтым браўзеры, бо вы дазволілі аднаўленне даных на гэтай ${ deviceLink }. Калі рэзервовы файл з'яўляецца сапраўдным, то вы неадкладна атрымаеце поўны або частковы доступ да сваіх зашыфраваных даных." ], + "We strongly recommend that everyone enable recovery by recovery phrase.": [ + "Вельмі рэкамендуецца, каб у кожнага карыстальніка быў уключаны спосаб аднаўлення доступу па фразе" + ], "We use 3-D Secure to protect your payments": [ "Выкарыстоўваецца 3-D Secure для абароны вашых плацяжоў" ], @@ -12777,9 +13458,6 @@ "You can edit this once to ensure the correct email address for verification.": [ "Вы можаце адрэдагаваць адрас адзін раз, каб пераканацца ў правільнасці адраса электроннай пошты для праверкі." ], - "You can enable the Photos section from the interface using the toggle below.": [ - "Вы можаце ўключыць раздзел Фатаграфіі ў інтэрфейсе з дапамогай пераключальніка, які размяшчаецца ніжэй." - ], "You can enforce the password rules members of your organization will use when they create or reset the password to their ${ BRAND_NAME } Account.": [ "Вы можаце прымусова забяспечыць выкананне правіл для пароляў, якія будуць выкарыстоўваць удзельнікі вашай арганізацыі пры стварэнні або скіданні пароля да свайго ўліковага запісу ${ BRAND_NAME }." ], @@ -12841,11 +13519,14 @@ "Вы не задалі спосаб для аднаўлення доступу. Таму, калі вы забудзеце свой пароль, то аднавіць уліковы запіс будзе немагчыма. Працягнуць без спосабу аднаўлення?" ], "You do not have permission to perform this action": [ - "У вас няма правоў, каб выканаць гэта дзеянне" + "У вас няма дазволаў, каб выканаць гэта дзеянне" ], "You don't have any referrals.": [ "У вас пакуль няма рэфералаў." ], + "You don’t need to open or read the file—just download it and store it somewhere safe.": [ + "Няма неабходнасці адкрываць або чытаць файл. Проста спампуйце яго і захавайце дзе-небудзь у надзейным месцы." + ], "You get notified if your password or other data was leaked from a third-party service.": [ "Апавяшчаць, калі адбудзецца ўцечка вашага пароля або іншых даных са старонняга сэрвісу." ], @@ -12898,7 +13579,7 @@ "Перад тым, як панізіць свой тарыфны план, вам неабходна адключыць або выдаліць для ${ MAIL_APP_NAME } дадатковых карыстальнікаў, паштовыя адрасы і карыстальніцкія дамены." ], "You must have a credit card or bank account linked with your PayPal account in order to add it as a payment method.": [ - "Вы павінны прывязаць крэдытную картку або банкаўскі рахунак да вашага ўліковага запісу PayPal для таго, каб выкарыстоўваць яго як спосаб аплаты." + "Вы павінны прывязаць крэдытную картку або банкаўскі рахунак да вашага ўліковага запісу PayPal, каб выкарыстоўваць яго як спосаб аплаты." ], "You need to have an active personal calendar to import your events from ICS.": [ "Вам неабходна мець актыўны асабісты каляндар для імпартавання вашых падзей з ICS." @@ -12993,11 +13674,14 @@ "Your ${ plan } subscription will be replaced with ${ PASS_SHORT_APP_NAME } Lifetime. The remaining balance of your subscription will be added to your account. ${ PASS_SHORT_APP_NAME } lifetime deal has no renewal price, it's a one-time payment for lifetime access to ${ PASS_SHORT_APP_NAME }.": [ "Ваша падпіска ${ plan } будзе заменена на пажыццёвую падпіску ${ PASS_SHORT_APP_NAME }. Рэшта балансу вашай падпіскі будзе дададзена на ваш уліковы запіс. Пажыццёвая прапанова ${ PASS_SHORT_APP_NAME } не прадугледжвае кошту падаўжэння. За пажыццёвы доступ да ${ PASS_SHORT_APP_NAME } уносіцца аднаразовая плата." ], + "Your ${ planDisplayName } plan doesn’t just keep your business data and communications safe. It supports your compliance objectives, makes your business stand out, and keeps your team connected.": [ + "Ваш тарыфны план ${ planDisplayName } не толькі захоўвае вашы дзелавыя даныя і бяспеку зносін, але і падтрымлівае выкананне вашых мэт, вылучае ваш бізнес і захоўвае сувязь паміж вашай камандай." + ], "Your ${ VPN_APP_NAME } and ${ MAIL_APP_NAME } accounts are linked. To delete them both, please sign in at ${ loginLink } and delete your account there.": [ "Вашы ўліковыя запісы ${ VPN_APP_NAME } і ${ MAIL_APP_NAME } звязаны паміж сабой. Каб выдаліць іх абодва, увайдзіце праз ${ loginLink } і там выдаліце свой уліковы запіс." ], "Your account has at least one overdue invoice. Your access will soon get restricted. ${ payInvoiceLink }": [ - "Ваш уліковы запіс мае прынамсі адзін пратэрмінаваны рахунак. Ваш доступ неўзабаве будзе абмежаваны. ${ payInvoiceLink }" + "Ваш уліковы запіс мае прынамсі адзін пратэрмінаваны рахунак. Доступ да сэрвісу неўзабаве будзе абмежаваны. ${ payInvoiceLink }" ], "Your account has been successfully updated.": [ "Ваш уліковы запіс паспяхова абноўлены." @@ -13068,12 +13752,18 @@ "Your recent changes have been published. They will be visible to users in the next few hours.": [ "Вашы нядаўнія змены былі апублікаваны. Яны будуць бачныя карыстальнікам у наступныя некалькі гадзін." ], + "Your recovery file will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset.": [ + "Ваш файл аднаўлення адновіць доступ да лістоў, кантактаў, файлаў, пароляў і іншых зашыфраваных даных у вашым уліковым запісе пасля скідання пароля." + ], "Your recovery phrase": [ "Ваша фраза аднаўлення" ], "Your recovery phrase is a series of 12 randomly generated words in a specific order.": [ "Ваша фраза аднаўлення - гэта паслядоўнасць з 12 выпадкова згенерыраваных слоў у вызначаным парадку." ], + "Your recovery phrase will allow you to sign in and recover your data if you get locked out of your ${ BRAND_NAME } Account. It is composed of 12 words and acts like a backup password.": [ + "Ваша фраза аднаўлення дазволіць вам увайсці і аднавіць вашы даныя ў выпадку, калі вы заблакіруеце свой уліковы запіс ${ BRAND_NAME }. Яна складаецца з 12 слоў і дзейнічае аналагічна рэзервоваму паролю." + ], "Your scheduled plan starts on ${ renewalTime } and will auto-renew every ${ cycle } month.": [ "Ваш запланаваны тарыфны план пачынаецца ${ renewalTime } і будзе аўтаматычна падаўжацца кожны ${ cycle } месяц.", "Ваш запланаваны тарыфны план пачынаецца ${ renewalTime } і будзе аўтаматычна падаўжацца кожныя ${ cycle } месяцы.", @@ -13681,6 +14371,15 @@ "${ Brand } ending with ${ Last4 }": [ "${ Brand }, якая заканчваецца на ${ Last4 }" ], + "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME } Desktop app": [ + "Праграма для камп'ютара ${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME }" + ], + "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME } desktop app": [ + "Праграма для камп'ютара ${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME }" + ], + "${ BRAND_NAME } for Business": [ + "${ BRAND_NAME } for Business" + ], "${ BRAND_NAME } username": [ "Імя карыстальніка ${ BRAND_NAME }" ], @@ -13720,6 +14419,15 @@ "${ pricePerMonthWithCurrency } / month": [ "${ pricePerMonthWithCurrency }/месяц" ], + "${ PROTON_SENTINEL_NAME } account protection": [ + "Абарона ўліковага запісу ${ PROTON_SENTINEL_NAME }" + ], + "${ PROTON_SENTINEL_NAME } protection": [ + "Абарона ${ PROTON_SENTINEL_NAME }" + ], + "${ value.length }/${ maxLength } characters": [ + "Сімвалаў: ${ value.length }/${ maxLength }" + ], "(Temporarily unavailable. Please check back later.)": [ "(Часова недаступна. Паспрабуйце яшчэ раз пазней.)" ], @@ -13846,6 +14554,9 @@ "Allow notifications by email": [ "Дазволіць апавяшчэнні па электроннай пошце" ], + "Allow QR code sign-in": [ + "Дазволіць уваход па QR-кодзе" + ], "Allow random passwords": [ "Дазволіць выпадковыя паролі" ], @@ -13951,6 +14662,9 @@ "Automated confirmations and alerts": [ "Аўтаматычныя пацвярджэнні і абвесткі" ], + "Automatic email forwarding": [ + "Аўтаматычная перасылка пошты" + ], "Automatically save contacts": [ "Аўтаматычна захоўваць кантакты" ], @@ -13990,9 +14704,15 @@ "Block malware, ads and trackers": [ "Блакіраваць шкодныя праграмы, рэкламу і праграмы сачэння" ], + "Block trackers and marketers": [ + "Блакіроўка праграм сачэння і маркетолагаў" + ], "Bookings, billings, and orders": [ "Браніраванні, выстаўленні рахункаў і заказы" ], + "Brand your workspace": [ + "Брэндзіраванне вашай працоўнай прасторы" + ], "Browser": [ "Браўзер" ], @@ -14101,6 +14821,9 @@ "Confirm login password": [ "Пацвердзіць пароль уваходу" ], + "Confirm MX records added": [ + "Пацвярджэнне дадавання запісаў MX" + ], "Confirm new password": [ "Пацвердзіце новы пароль" ], @@ -14167,6 +14890,12 @@ "Custom domain": [ "Карыстальніцкі дамен" ], + "Custom email domain": [ + "Карыстальніцкі дамен электроннай пошты", + "Карыстальніцкія дамены электроннай пошты", + "Карыстальніцкія дамены электроннай пошты", + "Карыстальніцкія дамены электроннай пошты" + ], "Daily email notifications": [ "Штодзённыя апавяшчэнні па электроннай пошце" ], @@ -14272,9 +15001,15 @@ "Email addresses": [ "Адрасы электроннай пошты" ], + "Email addresses per user": [ + "Адрасы электроннай пошты на карыстальніка" + ], "Email or username": [ "Электронная пошта або імя карыстальніка" ], + "Email with @yourcompany.com domain": [ + "Электронная пошта з даменам @yourcompany.com" + ], "Emails (all messages)": [ "Лісты (усе паведамленні)" ], @@ -14293,6 +15028,9 @@ "Enable ${ DARK_WEB_MONITORING_NAME } for ${ domain.DomainName }": [ "Уключыць ${ DARK_WEB_MONITORING_NAME } для ${ domain.DomainName }" ], + "Enable categories": [ + "Уключыць катэгорыі" + ], "Enabled": [ "Уключана" ], @@ -14308,6 +15046,9 @@ "End weekday": [ "Апошні будні дзень" ], + "End-to-end encryption": [ + "Скразное шыфраванне" + ], "Enter code": [ "Увядзіце код" ], @@ -14365,6 +15106,9 @@ "Folder location": [ "Размяшчэнне папкі" ], + "Folders, labels, and filters": [ + "Папкі, меткі і фільтры" + ], "Font family": [ "Сямейства шрыфтоў" ], @@ -14383,6 +15127,9 @@ "Free": [ "Бясплатна" ], + "Free VPN included": [ + "Бясплатны VPN уключае" + ], "From: ${ fromEmail }": [ "Ад: ${ fromEmail }" ], @@ -14431,6 +15178,9 @@ "Highest VPN speed": [ "Найвышэйшая хуткасць VPN" ], + "Host name": [ + "Імя вузла" + ], "I understand that I'll need to add this email address to the other account immediately, to avoid losing this address permanently.": [ "Я разумею, што мне неабходна будзе неадкладна дадаць гэты адрас электроннай пошты ў іншы ўліковы запіс, каб пазбегнуць незваротнай страты гэтага адраса." ], @@ -14548,6 +15298,9 @@ "Main reason for cancelling": [ "Галоўная прычына скасавання" ], + "Make sure you have access to a recovery email or phone, and have a data recovery option.": [ + "Пераканайцеся, што ў вас ёсць доступ да электроннай пошты або нумар тэлефона для аднаўлення доступу, а таксама ці ёсць параметры аднаўлення даных." + ], "Manage categories": [ "Кіраванне катэгорыямі" ], @@ -14620,6 +15373,9 @@ "Must have at least ${ MIN_PASSWORD_LENGTH } characters": [ "Пароль павінен мець прынамсі ${ MIN_PASSWORD_LENGTH } сімвалы(аў)" ], + "MX records": [ + "Запіс MX" + ], "Name": [ "Назва" ], @@ -14686,6 +15442,9 @@ "Online privacy for your whole family": [ "Прыватнасць у інтэрнэце для ўсёй вашай сям'і" ], + "Online productivity suite": [ + "Набор прадукцыйнасці для інтэрнэту" + ], "Only a single personal vault can be created": [ "Можна стварыць толькі адно асабістае сховішча" ], @@ -14755,6 +15514,9 @@ "Pending": [ "У чаканні" ], + "Personal and work emails, plus important updates and notifications": [ + "Асабістыя і працоўныя лісты, а таксама важныя абнаўленні і апавяшчэнні" + ], "Phone number": [ "Нумар тэлефона" ], @@ -14788,12 +15550,18 @@ "Postal code": [ "Паштовы індэкс" ], + "Premium features included": [ + "Прэміяльныя функцыі ўключаны" + ], "Previous password": [ "Папярэдні пароль" ], "Primary": [ "Асноўны" ], + "Priority": [ + "Прыярытэт" + ], "Priority support": [ "Прыярытэтная падтрымка" ], @@ -14806,6 +15574,9 @@ "Proration": [ "Прапарцыянальнае размеркаванне" ], + "Protected by Swiss privacy laws": [ + "Абаронены швейцарскімі законамі аб прыватнасці" + ], "Protection mode": [ "Рэжым абароны" ], @@ -14881,6 +15652,9 @@ "Secure password generator": [ "Надзейны генератар пароля" ], + "See your team's availability": [ + "Прагляд даступнасці вашай каманды" + ], "Select Linux package format": [ "Выберыце фармат пакета Linux" ], @@ -14914,6 +15688,9 @@ "Shared between ${ MAIL_SHORT_APP_NAME }, ${ CALENDAR_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME }, and ${ WALLET_SHORT_APP_NAME }.": [ "Абагулена паміж ${ MAIL_SHORT_APP_NAME }, ${ CALENDAR_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME } і ${ WALLET_SHORT_APP_NAME }." ], + "Short domain @pm.me": [ + "Кароткі дамен @pm.me" + ], "Show ${ n } administrator": [ "Паказаць ${ n } адміністратара", "Паказаць ${ n } адміністратары", @@ -15019,6 +15796,9 @@ "Subscription options": [ "Параметры падпіскі" ], + "Support for multiple users": [ + "Падтрымка для некалькіх карыстальнікаў" + ], "Swipe left action": [ "Дзеянне правядзення ўлева" ], @@ -15115,6 +15895,9 @@ "Use folder colors": [ "Выкарыстоўваць колеры папак" ], + "Use your own email domain": [ + "Выкарыстанне свайго ўласнага дамена электроннай пошты" + ], "User": [ "Карыстальнік" ], @@ -15157,6 +15940,9 @@ "Vulnerable password": [ "Уразлівы пароль" ], + "We securely stored recovery information on this device.": [ + "Інфармацыя для аднаўлення надзейна захоўваецца на гэтай прыладзе." + ], "Weak": [ "Ненадзейны" ], @@ -15187,12 +15973,18 @@ "Yearly": [ "Штогод" ], + "Yearly free storage bonus": [ + "Штогадовы бонус бясплатнага сховішча" + ], "Yes": [ "Так" ], "Yes, I want to permanently delete this account and all its data.": [ "Так, я хачу незваротна выдаліць гэты ўліковы запіс і ўсе яго даныя." ], + "You don't have permissions": [ + "У вас адсутнічаюць дазволы" + ], "Your activation code:": [ "Ваш код актывацыі:" ], @@ -15214,9 +16006,18 @@ "Your plan": [ "Ваш тарыфны план" ], + "Your recovery email": [ + "Ваша электронная пошта для аднаўлення" + ], + "Your recovery phone number": [ + "Ваш нумар тэлефона для аднаўлення доступу" + ], "Your voucher for your reserved ${ BRAND_NAME } email address:": [ "Ваш ваўчар на зарэзерваваны адрас электроннай пошты ${ BRAND_NAME }:" ], + "Zero-access architecture": [ + "Архітэктура нулявога доступу" + ], "ZIP code": [ "Паштовы індэкс" ] @@ -15233,6 +16034,9 @@ ], "Recovery phrase": [ "Фраза аднаўлення" + ], + "Set recovery phone number": [ + "Задаць нумар тэлефона для аднаўлення доступу" ] }, "Label (begin date/advanced search)": { @@ -15276,6 +16080,26 @@ "Дадайце наступны запіс TXT. Заўвага: абнаўленне запісаў DNS можа заняць некалькі гадзін." ] }, + "Label for domain setup": { + "${ capitalizedGroup } record not found": [ + "Запіс ${ capitalizedGroup } не знойдзены" + ], + "Host name": [ + "Імя вузла" + ], + "Invalid ${ group.name } record found": [ + "Знойдзены памылковы запіс ${ group.name }" + ], + "Type": [ + "Тып" + ], + "Use default value": [ + "Выкарыстоўваць прадвызначанае значэнне" + ], + "Valid ${ group.name } record found": [ + "Знойдзены сапраўдны запіс ${ group.name }" + ] + }, "Label for new member": { "Admin": [ "Адміністратар" @@ -15380,13 +16204,13 @@ }, "Limit of calendars reached": { "To add a new calendar, remove an existing one.": [ - "Каб дадаць новы каляндар, выдаліце адзін з існуючых." + "Выдаліце адзін з існуючых календароў, каб дадаць новы." ], "To add a new calendar, remove another calendar or upgrade your ${ BRAND_NAME } plan to a ${ MAIL_SHORT_APP_NAME } paid plan.": [ "Каб дадаць новы каляндар, выдаліце іншы каляндар або палепшыце свой тарыфны план ${ BRAND_NAME } да платнага тарыфнага плана ${ MAIL_SHORT_APP_NAME }." ], "You've reached the maximum number of calendars available in your plan.": [ - "Вы дасягнулі максімальнай колькасці календароў, даступных на вашым тарыфным плане." + "Вы дасягнулі максімальнай колькасці календароў, якія даступны на вашым тарыфным плане." ] }, "Link": { @@ -15441,6 +16265,9 @@ "data recovery option": [ "параметр аднаўлення даных" ], + "Detailed instructions": [ + "Падрабязныя інструкцыі" + ], "Details": [ "Падрабязнасці" ], @@ -15615,6 +16442,9 @@ "Upgrade your plan": [ "Палепшыць тарыфны план" ], + "use a data recovery method": [ + "выкарыстоўваць спосаб аднаўлення даных" + ], "Vault": [ "Сховішча" ], @@ -15681,7 +16511,7 @@ "Збор вашых даных" ], "We're gathering your data from your provider": [ - "Мы збіраем даныя ад вашага пастаўшчыка паслуг" + "Адбываецца збор даных ад вашага пастаўшчыка паслуг" ], "Your import is starting": [ "Пачалося імпартаванне" @@ -15984,21 +16814,45 @@ "Built-in chat": [ "Убудаваны чат" ], + "Cloud storage and file sharing": [ + "Воблачнае сховішча і абагуленне файлаў" + ], + "Data retention policies": [ + "Палітыка захоўвання даных" + ], + "Document and spreadsheet editor": [ + "Рэдактар дакументаў і электронных табліц" + ], + "Email writing assistant": [ + "Памочнік у напісанні лістоў" + ], "End-to-end encrypted screen sharing and ephemeral in-call chat": [ "Дэманстрацыя экрана са скразным шыфраваннем і эфемерны чат пры званках" ], "Hosts can record meetings locally on their computers": [ "Арганізатары могуць запісваць сустрэчы лакальна на сваіх камп'ютарах" ], + "Includes Meet Professional": [ + "Уключае Meet Professional" + ], "Meeting recording": [ "Запіс сустрэчы" ], "One active meeting at a time": [ "Адна актыўная сустрэча адначасова" ], + "Password manager with team vaults": [ + "Менеджар пароляў са сховішчам для каманд" + ], + "Private AI Chat (${ LUMO_SHORT_APP_NAME })": [ + "Прыватны чат з ШІ (${ LUMO_SHORT_APP_NAME })" + ], "Screen-sharing": [ "Абагулены экран" ], + "Secure mail and calendar": [ + "Бяспечная пошта і каляндар" + ], "Unlimited meetings per day": [ "Неабмежаваная колькасць сустрэч у дзень" ], @@ -16019,6 +16873,9 @@ "Відэасустрэчы, ${ n } удзельнікі", "Відэасустрэчы, ${ n } удзельнікаў", "Відэасустрэчы, ${ n } удзельнікаў" + ], + "VPN with ad-blocker and malware protection": [ + "VPN з блакіроўшчыкам рэкламы і абаронай ад шкодных праграм" ] }, "meet_2025: Info": { @@ -16728,6 +17585,9 @@ "99.95% SLA": [ "99.95% SLA" ], + "Access all countries": [ + "Доступ да ўсіх краін" + ], "Activity logs and policy": [ "Журналы актыўнасці і палітыка" ], @@ -16749,6 +17609,9 @@ "Advanced network security": [ "Пашыраная бяспека сеткі" ], + "Advanced workspace security": [ + "Пашыранае бяспека працоўнай прасторы" + ], "All ${ BRAND_NAME } products and features": [ "Усе прадукты і функцыі ${ BRAND_NAME }" ], @@ -16911,6 +17774,9 @@ "Multiple admin roles": [ "Некалькі роляў адміністратара" ], + "No streaming support": [ + "Падтрымка трансляцыі адсутнічае" + ], "No-logs policy": [ "Палітыка адсутнасці журналаў актыўнасці" ], @@ -17079,6 +17945,9 @@ "Unlimited volume/bandwidth": [ "Неабмежаваны аб'ём даных і паласа прапускання" ], + "Unlock streaming": [ + "Разблакіраваць трансляцыі" + ], "Up to ${ n } user": [ "Да ${ n } карыстальніка", "Да ${ n } карыстальнікаў", @@ -17250,7 +18119,7 @@ "Неабмежаваная прыватнасць і больш сховішча. Разлічаны на 1 або 2 карыстальнікі." ], "You’re enjoying a promotional price on your current plan. If you delete your account, you will lose your promotional price and it won’t be available if you create a new account.": [ - "Вы карыстаецеся бягучым тарыфным планам па акцыённым кошце. Калі вы выдаліце свой уліковы запіс, то згубіце гэту перавагу і пры гэтым паўторна вярнуцца на яго вы больш не зможаце, калі паспрабуеце стварыць новы ўліковы запіс." + "Вы карыстаецеся бягучым тарыфным планам па акцыйным кошце. Калі вы выдаліце свой уліковы запіс, то згубіце гэту перавагу і пры гэтым паўторна вярнуцца на яго вы больш не зможаце, калі паспрабуеце стварыць новы ўліковы запіс." ], "You’re enjoying a promotional price on your current plan. If you downgrade your account, you will lose your promotional price and it won’t be available if you try to subscribe again.": [ "Вы карыстаецеся бягучым тарыфным планам па акцыённым кошце. Калі вы панізіце свой уліковы запіс, то згубіце гэту перавагу і больш не зможаце скарыстацца ёй, калі вырашыце падпісацца яшчэ раз." @@ -17569,6 +18438,12 @@ ] }, "new_plans: Upsell attribute": { + "${ n } country": [ + "${ n } краіна", + "${ n } краіны", + "${ n } краін", + "${ n } краін" + ], "Access advanced VPN features": [ "Доступ да пашыраных функцый VPN" ], @@ -17634,8 +18509,8 @@ "${ app } product updates": [ "Абнаўленні прадукту ${ app }" ], - "${ BRAND_NAME } for Business newsletter": [ - "Рассылка ${ BRAND_NAME } for Business" + "${ BRAND_NAME } for Business communications": [ + "Камунікацыі ${ BRAND_NAME } for Business" ], "${ BRAND_NAME } important announcements": [ "Важныя абвяшчэнні ${ BRAND_NAME }" @@ -17688,8 +18563,8 @@ "During your first month of using a ${ BRAND_NAME } product": [ "На працягу першага месяца выкарыстання прадукту ${ BRAND_NAME }" ], - "Email subscriptions": [ - "Падпіскі электроннай пошты" + "Email communications": [ + "Камунікацыі па электроннай пошце" ], "In-app notifications": [ "Апавяшчэнні ў праграме" @@ -17886,7 +18761,7 @@ }, "Oauth instructions": { "Next you'll need to sign in to your Google account and grant ${ BRAND_NAME } access to your data.": [ - "Далей вы павінны ўвайсці ў ваш уліковы запіс Google і даць нам доступ да вашых даных ${ BRAND_NAME }." + "На наступным кроку вы павінны ўвайсці ў свой уліковы запіс Google і даць доступ ${ BRAND_NAME } да сваіх даных." ] }, "Oauth instructions video": { @@ -18290,6 +19165,9 @@ "Plain text": [ "Звычайны тэкст" ], + "Push notifications": [ + "Push-апавяшчэнні" + ], "Receive from all": [ "Атрымліваць ад усіх" ], @@ -18514,6 +19392,11 @@ "PKGBUILD (для іншых дыстрыбутываў)" ] }, + "Paragraph": { + "${ BRAND_NAME } is independently funded and operates without advertising. Below are examples of how this independence has been used in practice.": [ + "${ BRAND_NAME } атрымлівае незлаежнае фінанстванне і працуе без рэкламы. Ніжэй прыведзены прыклады таго, як гэтая незалежнасць выкарыстоўвалася на практыцы." + ] + }, "Participant name": { "You": [ "Вы" @@ -18789,14 +19672,14 @@ "per month, billed every two years": [ "у месяц (аплачваецца кожныя два гады)" ], - "Preparing your Recovery Kit": [ - "Падрыхтоўка камплекту аднаўлення" + "Preparing your recovery phrase": [ + "Падрыхтоўка вашай фразы аднаўлення" ], "Protected by Swiss privacy laws": [ "Абарону швейцарскімі законамі аб прыватнасці" ], - "Save your recovery kit to continue": [ - "Захавайце свой камплект аднаўлення для працягу" + "Save your recovery phrase to continue": [ + "Захавайце свой фразу аднаўлення для працягу" ], "Secure vault sharing": [ "Бяспечнае абагульванне сховішча" @@ -19530,6 +20413,9 @@ "Search for an email or IP address": [ "Пошук па адрасе электроннай пошты або IP" ], + "Search for users or addresses": [ + "Пошук карыстальнікаў або адрасоў" + ], "Search parent folder": [ "Пошук бацькоўскай папкі" ], @@ -19682,19 +20568,14 @@ "Палепшыць да ${ upsellPlanTitle }" ] }, - "PQC account key generation": { - "Couldn’t generate keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\n${ settingsLink } and select 'Generate key' for your account and for each address.": [ - "Не ўдалося згенерыраваць ключы. Вам спатрэбіцца згенерыраваць новыя ключы шыфравання ўручную, каб актываваць постквантавую абарону.\n\n${ settingsLink } і выберыце \"Згенерыраваць ключ\" для вашага ўліковага запісу і для кожнага адраса." - ] - }, "PQC adress key generation": { - "Couldn’t generate address keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\nGo to ${ settingsLink } and select 'Generate key' for each address.": [ - "Не ўдалося згенерыраваць ключы. Вам спатрэбіцца згенерыраваць новыя ключы шыфравання ўручную, каб актываваць постквантавую абарону.\n\nПерайдзіце ў ${ settingsLink } і выберыце \"Згенерыраваць ключ\" для вашага кожнага адраса." + "Couldn’t generate address keys. To activate post-quantum protection, you’ll need to finish generating your new post-quantum encryption keys for each address.\n\n${ goToSettingsLink } and select 'Generate missing keys'.": [ + "Немагчыма згенерыраваць адрасныя ключы. Вам неабходна завяршыць генерацыю вашых новых постквантавых ключоў для кожнага адраса, каб актываваць постквантавую абарону.\n\n${ goToSettingsLink } і выберыце \"Генерыраваць адсутныя ключы\"." ] }, "PQC compatibility warning": { - "**You must update all ${ BRAND_NAME } mobile apps**: your new keys won't work on older app versions.": [ - "**Вы павінны абнавіць усе мабільныя праграмы ${ BRAND_NAME }**: вашы новыя ключы не будуць працаваць са старымі версіямі праграм." + "**You must update all ${ BRAND_NAME } apps**: your new keys won't work on older app versions.": [ + "**Вы павінны абнавіць усе праграмы ${ BRAND_NAME }**: вашы новыя ключы не будуць працаваць са старымі версіямі праграм." ] }, "PQC key generation": { @@ -19857,6 +20738,9 @@ "Verify now": [ "Спраўдзіць" ], + "Verify now this recovery email address: ${ emailData.value }": [ + "Спраўдзіце гэты адрас электроннай пошты для аднаўлення доступу: ${ emailData.value }" + ], "Verify recovery email?": [ "Спраўдзіць электронную пошту для аднаўлення доступу?" ], @@ -19900,17 +20784,56 @@ "Verify recovery phone?": [ "Спраўдзіць нумар тэлефона для аднаўлення доступу?" ], + "Verify this recovery phone number now: ${ phoneData.value }": [ + "Спраўдзіць гэты нумар тэлефона для аднаўлення: ${ phoneData.value }" + ], "Verifying your phone number increases your account security and allows additional options for recovery.": [ "Спраўджанне вашага нумару тэлефона павялічыць бяспеку вашага ўліковага запісу і дазволіць пашырыць параметры для аднаўлення." ] }, "Recovery score": { + "${ score } / ${ maxScore } completed": [ + "${ score } / ${ maxScore } завершана" + ], + "Account protection": [ + "Абарона ўліковага запісу" + ], + "Add more options for stronger protection": [ + "Дадайце больш параметраў, каб павялічыць надзейнасць абароны" + ], + "Add more options to avoid getting locked out of your account.": [ + "Дадайце больш параметраў, каб пазбегнуць блакіроўкі вашага ўліковага запісу." + ], + "Awesome. Keep your options up-to-date for stronger protection.": [ + "Цудоўна. Трымайце свае параметры ў актуальным стане для больш найдзейнай абароны." + ], + "Good start. Add more options for a stronger protection.": [ + "Добры пачатак. Дадайце больш параметраў, каб павялічыць надзейнасць абароны." + ], + "Great. Add more options for a stronger protection.": [ + "Цудоўна. Дадайце больш параметраў, каб павялічыць надзейнасць абароны." + ], + "How you increased your account protection": [ + "Як павялічыць абарону вашага ўліковага запісу" + ], + "Inactive recovery options": [ + "Неактыўныя параметры аднаўлення" + ], "Maximum": [ "Максімальны" ], "Partial": [ "Частковы" ], + "Recovery score: ${ score }": [ + "Ацэнка аднаўлення: ${ score }" + ], + "Require verified password reset option (email or SMS)": [ + "Патрабаваць параметр спраўджання пры скіданні пароля (электронная пошта або SMS)" + ], + "Score: ${ score } / ${ maxScore }": [ + "Рэйтынг: ${ score } / ${ maxScore }" + ], "Strong": [ "Надзейны" ], @@ -19922,8 +20845,77 @@ ] }, "Recovery score item": { + "Add emergency contacts": [ + "Дадаць экстранныя кантакты" + ], + "Add recovery contacts": [ + "Дадаць кантакты для аднаўлення" + ], + "Add recovery email": [ + "Дадаць электронную пошту для аднаўлення" + ], + "Add recovery phone": [ + "Дадаць нумар тэлефона для аднаўлення" + ], + "Allow data recovery on this device": [ + "Дазволіць аднаўленне даных на гэтай прыладзе" + ], + "Allow password reset from settings": [ + "Дазволіць скіданне пароля з наладаў" + ], + "Allow scanning QR code to sign in": [ + "Дазволіць сканіраванне QR-кода для ўваходу" + ], + "Data recovery allowed on this device": [ + "Аднаўленне даных дазволена на гэтай прыладзе" + ], + "Download recovery file": [ + "Спампаваць файл аднаўлення" + ], + "Email recovery enabled": [ + "Аднаўленне доступу па электроннай пошце ўключана" + ], + "Emergency contacts added": [ + "Экстранны кантакты дададзены" + ], + "Enable email recovery": [ + "Уключыць электронную пошту для аднаўлення" + ], + "Enable recovery by phone": [ + "Уключыць аднаўленне па нумары тэлефона" + ], + "Password reset allowed from settings": [ + "Скіданне пароля дазволена з налад" + ], + "Password verified": [ + "Пароль спраўджаны" + ], + "Phone recovery enabled": [ + "Тэлефон для аднаўлення доступу ўключаны" + ], + "Recovery contacts added": [ + "Кантакты для аднаўлення дададзены" + ], + "Recovery file downloaded": [ + "Файлы аднаўлення спампаваны" + ], + "Recovery phrase saved": [ + "Фраза аднаўлення захавана" + ], + "Save recovery phrase": [ + "Захаваць фразу аднаўлення" + ], + "Sign-in with QR code allowed": [ + "Уваход з QR-кодам дазволены" + ], "Verify password": [ "Спраўджанне пароля" + ], + "Verify recovery email": [ + "Спраўдзіць электронную пошту для аднаўлення доступу" + ], + "Verify recovery phone": [ + "Спраўдзіць нумар тэлефона для аднаўлення доступу" ] }, "RecoveryPhrase: Action": { @@ -19938,6 +20930,9 @@ ] }, "RecoveryPhrase: Info": { + "**Make sure you keep your recovery phrase accessible after creating it.** For security reasons, we do not store the phrase after saving your changes, and you won’t be able to see it again in the ${ BRAND_NAME } app.": [ + "**Пасля стварэння фразы аднаўлення пераканайцеся, што яна знаходзіцца ў даступным для вас месцы.** З меркаванняў бяспекі мы не захоўваем яе пасля захавання вашых змяненняў, і вы больш не зможаце ўбачыць яе ў праграме ${ BRAND_NAME }." + ], "copy recovery phrase": [ "скапіюйце фразу аднаўлення" ], @@ -19959,14 +20954,11 @@ "Or ${ downloadRecoveryKitSwitchButton } instead.": [ "Або замест гэтага ${ downloadRecoveryKitSwitchButton }." ], - "Your **Recovery Kit** lets you restore your ${ BRAND_NAME } Account if you’re locked out.": [ - "Ваш **камплект аднаўлення** дазваляе аднавіць ваш уліковы запіс ${ BRAND_NAME } у выпадку яго блакіравання." + "Your **recovery phrase** lets you restore your ${ BRAND_NAME } Account if you’re locked out.": [ + "Ваш **фраза аднаўлення** дазваляе аднавіць ваш уліковы запіс ${ BRAND_NAME } у выпадку яго блакіравання." ] }, "RecoveryPhrase: Title": { - "Save your Recovery Kit": [ - "Захаваць ваш камплект аднаўлення" - ], "Save your recovery phrase": [ "Захавайце сваю фразу аднаўлення" ] @@ -20027,7 +21019,7 @@ "Абагуліць з дапамогай ${ name }" ], "Start earning credits": [ - "Пачніце зарабляць крэдыты" + "Пачаць зарабляць крэдыты" ], "You can get up to **${ maxRewardAmount }** in credit.": [ "Вы можаце атрымаць да **${ maxRewardAmount }** у крэдытах." @@ -20371,8 +21363,8 @@ "Back to Safety Review": [ "Вярнуцца да бяспечнага агляду" ], - "Because you reset your password, your current Recovery Kit can only be used to recover the data created before your password reset.": [ - "Па прычыне таго, што вы скінулі пароль ваш бягучы камплект аднаўлення можа быць выкарыстаны толькі для аднаўлення даных, якія створаны перад яго скіданнем." + "Because you reset your password, your current recovery phrase can only be used to recover the data created before your password reset.": [ + "Паколькі вы скінулі пароль, бягучую фразу аднаўлення можна будзе выкарыстоўваць толькі для аднаўлення даных, створаных да скідання пароля." ], "Can be used to regain access to your account and data": [ "Можа быць выкарыстаны для аднаўлення доступу да вашага ўліковага запісу і даных" @@ -20401,8 +21393,8 @@ "Download ${ size }": [ "Спампаваць ${ size }" ], - "Download your Recovery Kit": [ - "Спампаваць камплект аднаўлення" + "Download your recovery phrase": [ + "Спампаваць сваю фразу аднаўлення" ], "Email address": [ "Адрас электроннай пошты" @@ -20416,8 +21408,8 @@ "Enable recovery by phone": [ "Уключыць аднаўленне па нумары тэлефона" ], - "I understand that I will not be able to recover currently locked data with this Recovery Kit": [ - "Я разумею, што ў мяне не будзе магчымасці аднавіць ужо заблакіраваныя даныя з гэтым камплектам аднаўлення." + "I understand that I will not be able to recover currently locked data with this recovery phrase": [ + "Я разумею, што ў мяне не будзе магчымасці аднавіць ужо заблакіраваныя даныя з гэтай фразай аднаўлення." ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in on this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Поўны доступ да вашага ўліковага запісу ${ BRAND_NAME } будзе адноўлены пры наступным уваходзе на гэту прыладу з дапамогай вашага новага пароля, калі вы забудзеце свой бягучы пароль ${ BRAND_NAME } і вам неабходна будзе скінуць яго." @@ -20425,8 +21417,8 @@ "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Поўны доступ да вашага ўліковага запісу ${ BRAND_NAME } будзе адноўлены пры наступным уваходзе на гэту прыладу з дапамогай вашага новага пароля, калі вы забудзеце свой бягучы пароль ${ BRAND_NAME } і вам неабходна будзе скінуць яго." ], - "If you get locked out of your ${ BRAND_NAME } Account, your Recovery Kit will allow you to sign in and recover your data.": [ - "Ваш камплект аднаўлення дазволіць вам увайсці і аднавіць даныя, калі вы не маеце доступу да свайго ўліковага запісу ${ BRAND_NAME }," + "If you get locked out of your ${ BRAND_NAME } Account, your recovery phrase will allow you to sign in and recover your data.": [ + "Калі вы заблакіруеце свой уліковы запіс ${ BRAND_NAME }, ваша фраза аднаўлення дазволіць вам увайсці і аднавіць свае даныя." ], "If you lose your login details and need to reset your account, **it’s imperative** that you have both an **account recovery and data recovery method** in place, otherwise you might not be able to access any of your emails, contacts, files or passwords.": [ "Калі вы страціце свае ўліковыя даныя для ўваходу і вам неабходна будзе скінуць уліковы запіс, то ў вас **абавязкова** павінен быць як **метад аднаўлення даных, так і метад аднаўлення ўліковага запісу**. У адваротным выпадку без іх вы не зможаце атрымаць доступ да сваіх паведамленняў, файлаў кантактаў або пароляў." @@ -20470,8 +21462,8 @@ "Take action to secure your account": [ "Прыміце меры, каб абараніць свой уліковы запіс" ], - "There was an error generating your Recovery Kit": [ - "Адбылася памылка генерацыі вашага камплекта аднаўлення" + "There was an error generating your recovery phrase": [ + "Адбылася памылка генерацыі вашай фразы аднаўлення" ], "There was an error verifying your email": [ "Адбылася памылка спраўджання вашай электроннай пошты" @@ -20500,11 +21492,11 @@ "to recover your account if you're ever locked out": [ "для аднаўлення вашага ўліковага запісу пры магчымай блакіроўцы" ], - "Update your Recovery Kit": [ - "Абнавіць камплект аднаўлення" + "Update your recovery phrase": [ + "Абнавіце сваю фразу аднаўлення" ], - "Update your Recovery Kit?": [ - "Абнавіць ваш камплект аднаўлення?" + "Update your recovery phrase?": [ + "Абнавіць вашу фразу аднаўлення?" ], "Verify": [ "Спраўджанне" @@ -20521,8 +21513,8 @@ "Verify your recovery phone number": [ "Спраўдзіць нумар тэлефона для аднаўлення" ], - "We encountered an error while generating your Recovery Kit. Please try again later, or contact support if the issue continues.": [ - "Мы сутыкнуліся з памылкай падчас генерацыі вашага камплекта аднаўлення. Паспрабуйце яшчэ раз пазней або звярніцеся ў нашу падтрымку, калі праблема застанецца." + "We encountered an error while generating your recovery phrase. Please try again later, or contact support if the issue continues.": [ + "Сістэма сутыкнулася з памылкай падчас генерацыі вашай фразы аднаўлення. Паспрабуйце яшчэ раз пазней або звярніцеся ў нашу падтрымку, калі праблема застанецца." ], "We encountered an error while verifying your email. Please try again later, or contact support if the issue continues.": [ "Адбылася памылка пры спраўджанні вашай электроннай пошты. Паспрабуйце яшчэ раз пазней або звярніцеся ў службу падтрымкі, калі праблема застанецца." @@ -20545,9 +21537,6 @@ "You can disable this at any time.": [ "Вы зможаце адключыць гэту функцыю ў любы момант." ], - "You can use the recovery phrase in this Recovery Kit to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ - "Вы можаце скарыстацца фразай аднаўлення ў гэтым наборы для поўнага аднаўлення вашага ўліковага запісу, калі вы скінулі свой пароль. Пераканайцеся, што гэта інфармацыя захоўваецца ў надзейным месцы." - ], "You can use your email to regain access to your account if you forget your password.": [ "Вы можаце выкарыстоўваць сваю электронную пошту для аднаўлення доступу да ўліковага запісу, калі забудзеце пароль." ], @@ -20557,8 +21546,8 @@ "You can use your recovery phone to regain access to your account if you forget your password.": [ "Вы можаце выкарыстоўваць свой нумар тэлефона для вяртання доступу да ўліковага запісу, калі вы забудзеце свой пароль." ], - "You have previously downloaded a Recovery Kit. Downloading a new one will **deactivate the old one**.": [ - "Вы ўжо спампоўвалі камплект аднаўлення. Паўторнае спампоўванне **дэактывуе папярэдні экзэмпляр**." + "You have previously downloaded a recovery phrase. Downloading a new one will **deactivate the old one**.": [ + "Вы ўжо спампоўвалі фразу аднаўлення. Паўторнае спампоўванне **дэактывуе папярэдні экзэмпляр**." ], "You have recommended actions to safeguard your account further.": [ "У вас ёсць рэкамендаваныя дзеянні для далейшай абароны вашага ўліковага запісу." @@ -20623,12 +21612,6 @@ "Your recovery email is set": [ "Ваша электронная пошта зададзена" ], - "Your Recovery Kit": [ - "Ваш камплект аднаўлення" - ], - "Your Recovery Kit is set": [ - "Ваш камплект аднаўлення зададзены" - ], "Your recovery methods": [ "Вашы спосабы аднаўлення" ], @@ -20649,6 +21632,242 @@ ], "Your recovery phone number is:": [ "Ваш нумар тэлефона для аднаўлення доступу:" + ], + "Your recovery phrase": [ + "Ваша фраза аднаўлення" + ], + "Your recovery phrase is set": [ + "Ваш нумар фраза аднаўлення зададзена" + ] + }, + "safety_review": { + "${ BRAND_NAME } Account email": [ + "Уліковы запіс электроннай пошты ${ BRAND_NAME }" + ], + "Account protection": [ + "Абарона ўліковага запісу" + ], + "Add": [ + "Дадаць" + ], + "Add an emergency contact": [ + "Дадаць экстранны кантакт" + ], + "Add emergency contacts": [ + "Дадаць экстранныя кантакты" + ], + "Add options": [ + "Дадаць параметры" + ], + "Add people who you trust and can contact easily. Your emergency contact will be able to access your account and reset your password for you if needed.": [ + "Дадайце людзей, якім вы давяраеце і з якімі можаце лёгка звязацца. Вашы экстранныя кантакты змогуць атрымаць доступ да вашага ўліковага запісу і скінуць пароль для вас, калі вам гэта будзе неабходна." + ], + "Add people you trust and can contact easily. They will be able to help you unlock your data after you reset your password.": [ + "Дадайце людзей, якім вы давяраеце і з якімі можаце лёгка звязацца. Яны змогуць дапамагчы разблакіраваць вашы даныя пасля скідання пароля." + ], + "Add phone number": [ + "Дадаць нумар тэлефона" + ], + "Add recovery contacts": [ + "Дадаць кантакты для аднаўлення" + ], + "Add recovery email": [ + "Дадаць электронную пошту для аднаўлення" + ], + "Add recovery phone": [ + "Дадаць тэлефон для аднаўлення" + ], + "Added emergency contacts": [ + "Даданыя экстранныя кантакты" + ], + "Added recovery contacts": [ + "Кантакты для аднаўлення дадзены" + ], + "Added recovery email": [ + "Электронная пошта для аднаўлення доступу дададзена" + ], + "Added recovery phone": [ + "Тэлефон для аднаўлення дададзены" + ], + "Allow": [ + "Дазволіць" + ], + "Allow data recovery from this device": [ + "Дазволіць аднаўленне даных з гэтай прылады" + ], + "Allow password reset from the settings": [ + "Дазволіць скіданне пароля з налад" + ], + "Allow recovery by email": [ + "Дазволіць аднаўленне доступу па электроннай пошце" + ], + "Allow recovery by phone": [ + "Дазволіць аднаўленне па нумары тэлефона" + ], + "Allow scanning a QR code to sign in": [ + "Дазволіць сканіраванне QR-кода для ўваходу" + ], + "Allow trusted friends to unlock your data": [ + "Дазволіць давераным сябрам разблакіроўку вашых даных" + ], + "Back to ${ backLink.appNameString }": [ + "Вярнуцца ў ${ backLink.appNameString }" + ], + "Congratulations": [ + "Віншуем" + ], + "Didn’t receive it? ${ sendANewCode }": [ + "Не атрымалі яго? ${ sendANewCode }" + ], + "Done": [ + "Гатова" + ], + "Download": [ + "Спампаваць" + ], + "Download recovery file": [ + "Спампаваць файл аднаўлення" + ], + "Downloaded recovery file": [ + "Спампаваны файл аднаўлення" + ], + "Emergency contacts enabled": [ + "Экстранныя кантакты ўключаны" + ], + "Enable device recovery": [ + "Уключыць аднаўленне па прыладзе" + ], + "Enable email recovery": [ + "Уключыць электронную пошту для аднаўлення" + ], + "Enable emergency contacts": [ + "Уключыць экстранныя кантакты" + ], + "Enable password reset from settings": [ + "Уключыць скідання пароля з налад" + ], + "Enable phone recovery": [ + "Уключыць электронную пошту для аднаўлення" + ], + "Enable QR code sign-in": [ + "Уключыць уваход па QR-кодзе" + ], + "Enabled device recovery": [ + "Аднаўленне па прыладзе ўключана" + ], + "Enabled email recovery": [ + "Аднаўленне доступу па электроннай пошце ўключана" + ], + "Enabled password reset from settings": [ + "Скіданне пароля з налад уключана" + ], + "Enabled phone recovery": [ + "Аднаўленне па нумары тэлефона ўключана" + ], + "Enabled QR code sign-in": [ + "Уваход па QR-кодзе ўключаны" + ], + "Got it": [ + "Зразумела" + ], + "Here's how you increased your account protection:": [ + "Як павялічыць абарону вашага ўліковага запісу:" + ], + "If you forget your password, you can sign in using a QR code. All you need is to be signed in to a ${ BRAND_NAME } service on another device.": [ + "Вы можаце ўвайсці з дапамогай QR-кода, калі забылі свой пароль. Усё, што вам неабходна, гэта ўвайсці ў сэрвіс ${ BRAND_NAME } на іншай прыладзе." + ], + "If you get locked out of your ${ BRAND_NAME } Account, it will allow you to sign in and recover your data. It’s the only way to instantly restore everything, so make sure you keep it somewhere safe.": [ + "Гэта дазволіць вам увайсці і аднавіць свае даныя, калі вы заблакіруеце свой уліковы запіс ${ BRAND_NAME }. Гэта адзіны спосаб імгненна аднавіць усе вашы даныя ў сэрвісе. Захавайце яе ў надзейным месцы і каб яна была даступна толькі вам." + ], + "Later": [ + "Пазней" + ], + "Protect your legacy with Emergency Access": [ + "Абараніце сваю спадчыну з дапамогай экстраннага доступу" + ], + "Save recovery phrase": [ + "Захаваць фразу аднаўлення" + ], + "Saved recovery phrase": [ + "Фраза аднаўлення захавана" + ], + "They must already have a ${ BRAND_NAME } Account.": [ + "У іх ужо павінен быць уліковы запіс ${ BRAND_NAME }." + ], + "They will not be able to see or access your data.": [ + "У іх не будзе магчымасці ўбачыць або атрымаць доступ да вашых даных." + ], + "This will let you quickly access your ${ BRAND_NAME } Account so you can change your password.": [ + "Гэта функцыя дазволіць вам хутка атрымаць доступ да свайго ўліковага запісу ${ BRAND_NAME }, каб вы маглі змяніць пароль." + ], + "This will let you reset your account password if you’ve lost it, but are still signed in to ${ BRAND_NAME }. It’s often the easiest way to recover your account if you’re signed in.": [ + "Гэта дазволіць скінуць ваш пароль ад уліковага запісу, калі вы згубіце яго. Адзінай умовай з'яўляецца актыўны сеанс у ${ BRAND_NAME }. Гэта самы просты спосаб аднавіць ваш уліковы запіс пры ўмове, што ў вас ёсць актыўны сеанс у сістэме." + ], + "This will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset.": [ + "Гэта дзеянне адновіць доступ да лістоў, кантактаў, файлаў, пароляў і іншых зашыфраваных даных у вашым уліковым запісе пасля скідання пароля." + ], + "To make sure the email address is yours, enter the verification code sent to ${ boldEmail }.": [ + "Увядзіце код спраўджання адпраўлены на электронную пошту ${ boldEmail } для спраўджання таго, што яна належыць менавіта вам." + ], + "To make sure the phone number is yours, enter the verification code sent to ${ boldPhoneNumber }.": [ + "Увядзіце код спраўджання адпраўлены на ваш нумар тэлефона ${ boldPhoneNumber } для пацвярджэння таго, што ён належыць менавіта вам." + ], + "To make sure this address is really yours, we’ll send an email with a verification link.": [ + "Сістэма адправіць вам ліст са спасылкай для спраўджання. Гэта дазволіць пацвердзіць, што гэта сапраўды ваш адрас." + ], + "Upgrade your plan to enable Emergency Access to your account. This will allow you to designate 1 to 5 people who will be able to reset your password for you.": [ + "Палепшыце свой тарыфны план, каб уключыць экстранны доступ да свайго ўліковага запісу. Гэта дазволіць вам прызначыць ад 1 да 5 карыстальнікаў, якія змогуць скінуць ваш пароль." + ], + "Verified password": [ + "Спраўджаны пароль" + ], + "Verified recovery email": [ + "Электронная пошта для аднаўлення доступу спраўджана" + ], + "Verified recovery phone": [ + "Нумар тэлефона для аднаўлення доступу спраўджаны" + ], + "Verify": [ + "Спраўджанне" + ], + "Verify password": [ + "Спраўджанне пароля" + ], + "Verify recovery email": [ + "Спраўдзіць электронную пошту для аднаўлення доступу" + ], + "Verify recovery phone": [ + "Спраўдзіць нумар тэлефона для аднаўлення доступу" + ], + "Verify your recovery email": [ + "Спраўдзіце сваю электронную пошту для аднаўлення доступу" + ], + "Verify your recovery phone": [ + "Спраўдзіце свой нумар тэлефона для аднаўлення доступу" + ], + "You can save a data backup on this device. This will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset, simply by signing in on this device.": [ + "Вы можаце захаваць рэзервовыя копіі даных на гэтай прыладзе. Гэта дзеянне дазволіць аднавіць доступ да лістоў, кантактаў, файлаў, пароляў і іншых зашыфраваных даных у вашым уліковым запісе пасля скідання пароля. Вам неабходна будзе толькі ўвайсці ў сістэму на гэтай прыладзе." + ], + "You can use email verification to regain access to your account if you forget your password.": [ + "Вы можаце выкарыстоўваць спраўджанне па электроннай пошце для аднаўлення доступу да ўліковага запісу, калі забудзеце пароль." + ], + "You can use SMS verification to regain access to your account if you forget your password.": [ + "Вы можаце выкарыстоўваць спраўджанне па SMS для аднаўлення доступу да ўліковага запісу, калі забудзеце пароль." + ], + "You can use your recovery email to regain access to your account if you forget your password.": [ + "Вы можаце выкарыстоўваць сваю электронную пошту для вяртання доступу да ўліковага запісу, калі забудзеце пароль." + ], + "You can use your recovery phone to regain access to your account if you forget your password.": [ + "Вы можаце выкарыстоўваць свой нумар тэлефона для вяртання доступу да ўліковага запісу, калі вы забудзеце свой пароль." + ], + "You don’t need to open or read the file—just download it and store it somewhere safe.": [ + "Няма неабходнасці адкрываць або чытаць файл. Проста спампуйце яго і захавайце дзе-небудзь у надзейным месцы." + ], + "Your recovery checklist": [ + "Ваш кантрольны спіс аднаўлення" + ], + "Your security setup": [ + "Ваша бяспечная наладка" ] }, "saml: Action": { @@ -20854,6 +22073,17 @@ "Нічога не знойдзена" ] }, + "Sentinel banner": { + "To ensure the highest possible security of your account, disable recovery via email and SMS.": [ + "Адключыце аднаўленне праз электронную пошту і SMS для забеспячэння свайму ўліковаму запісу найвышэйшага з магчымых узроўняў бяспекі." + ], + "To make sure that you can always access your ${ BRAND_NAME } Account, download your recovery phrase.": [ + "Спампуйце фразу аднаўлення. Яна заўсёды зможа дапамагчы аднавіць доступ да ўліковага ${ BRAND_NAME }." + ], + "You have recommended actions from ${ PROTON_SENTINEL_NAME }": [ + "У вас ёсць рэкамендаваныя дзеянні ад ${ PROTON_SENTINEL_NAME }" + ] + }, "Server-Info": { "active": [ "актыўна" @@ -21110,7 +22340,7 @@ "У мэтах бяспекі вам давядзецца чакаць **72 гадзіны** перад тым, як вы зможаце змяніць свой пароль." ], "If you have a **recovery method** set up, try account recovery instead. This will allow you to change your password straight away.": [ - "Калі ў вас наладжаны **спосаб аднаўлення** паспрабуйце скарыстацца спачатку ім. Гэта дазволіць адразу змяніць ваш пароль." + "Калі ў вас наладжаны **спосаб аднаўлення**, паспрабуйце скарыстацца спачатку ім. Гэта дазволіць адразу змяніць ваш пароль." ], "We will contact you again when the password reset is available.": [ "Мы паўторна звяжамся з вамі, калі скіданне пароля стане даступным." @@ -21149,6 +22379,9 @@ ] }, "session_recovery:settings:info": { + "To disallow password reset from settings, you must save your recovery phrase.": [ + "Вы павінны захаваць сваю фразу аднаўлення і толькі потым забараняць скіданне пароля з налад." + ], "To disallow password reset, you must have a recovery method set up.": [ "У вас павінен быць наладжаны спосаб аднаўлення, каб забараніць скіданне пароля." ], @@ -21208,9 +22441,6 @@ ] }, "Setting": { - "Enable Photos section": [ - "Уключыць раздзел Фатаграфіі" - ], "Get updates about comments via email": [ "Атрымлівайце абнаўленні аб каментарыях праз электронную пошту" ], @@ -21316,7 +22546,7 @@ }, "Signature verification error when joining calendar": { "Signature verification error": [ - "Памылка праверкі подпісу" + "Памылка спраўджання подпісу" ], "You have enabled address verification for ${ boldSenderEmail }. We couldn't verify the authenticity of this calendar invite. This may be due to changes in the encryption keys of this contact. Please review its advanced PGP settings, or your can ask ${ boldSenderEmail } for a new invite.": [ "Вы ўключылі спраўджанне адраса для ${ boldSenderEmail }. Мы не можам спраўдзіць сапраўднасць гэтага запрашэння календара. Магчыма, што гэта здарылася з прычыны змянення ключоў шыфравання гэтага кантакту. Праверце яго пашыраныя налады PGP або папрасіце ${ boldSenderEmail } адправіць новае запрашэнне." @@ -21956,7 +23186,7 @@ "Бяспечнае патокавае вяшчанне" ], "Support online privacy": [ - "Падтрыманне прыватнасці ў інтэрнэце" + "Падтрымка прыватнасці ў інтэрнэце" ] }, "specialoffer: Footer": { @@ -22120,11 +23350,35 @@ ] }, "Spotlight": { + "Assign delegated roles": [ + "Прызначыць упаўнаважаныя ролі" + ], + "Assign roles": [ + "Прызначыць ролі" + ], + "Click a user's name to manage their role and permissions.": [ + "Націсніце па імі карыстальніка, каб кіраваць яго роллю і дазволамі." + ], + "Click Edit to assign roles to this group and manage member access automatically.": [ + "Націсніце кнопку \"Рэдагаваць\", каб прызначыць ролі ў гэтай групе і аўтаматычна кіраваць доступам удзельнікаў." + ], "Earn up to ${ maxRewardAmount } in credit": [ "Зарабіце да ${ maxRewardAmount } у крэдытах" ], "Get credits when the person you invite subscribes to a ${ BRAND_NAME } plan.": [ "Атрымлівайце крэдыты, калі запрошаная асоба падпішацца на тарыфны план ${ BRAND_NAME }." + ], + "New: Roles and permissions tab": [ + "Новае: укладка ролі і дазволы" + ], + "Open this tab to grant specific permissions without full admin access.": [ + "Адкрыйце гэту ўкладку, каб даць канкрэтныя правы без поўнага доступу адміністратара." + ], + "User roles available": [ + "Даступныя ролі для карыстальнікаў" + ], + "You can now assign roles to individual users from this tab.": [ + "Цяпер вы можаце прызначаць ролі для індывідуальных карыстальнікаў з гэтай укладкі." ] }, "sso": { @@ -22437,11 +23691,29 @@ "${ count } асоб", "${ count } асоб" ], - "Disable QR code sign-in": [ - "Адключыць уваход па QR-коду" + "Add a phone number": [ + "Дадаць нумар тэлефона" + ], + "Add an email address": [ + "Дадаць адрас электроннай пошты" ], - "No contact": [ - "Не кантакт" + "Available on this device": [ + "Даступна на гэтай прыладзе" + ], + "Disable recovery by email": [ + "Адключыць аднаўленне па электроннай пошце" + ], + "Disable recovery by phone": [ + "Адключыць аднаўленне па нумары тэлефона" + ], + "Generate a recovery phrase": [ + "Згенерыраваць фразу аднаўлення" + ], + "Last changed ${ formattedDate }": [ + "Апошняя змена ${ formattedDate }" + ], + "Last updated ${ formattedUpdateDate }": [ + "Апошняе абнаўленне ${ formattedUpdateDate }" ], "Not saved": [ "Не захавана" @@ -22463,6 +23735,9 @@ ], "Verified": [ "Правераны" + ], + "Verify ${ value }": [ + "Спраўджанне ${ value }" ] }, "Step in filter modal": { @@ -22603,7 +23878,7 @@ "URL-адрас календара" ], "To subscribe to an external or public calendar and its updates, enter the URL. A read-only version of the calendar will be added to your Other calendars.\n${ kbLink }": [ - "Для падпіскі на знешні або публічны каляндар і яго абнаўленні, увядзіце URL-адрас. Версія календара толькі для чытання будзе дабаўлена да вашых іншых календароў.\n${ kbLink }" + "Для падпіскі на знешні або публічны каляндар і яго абнаўленні, увядзіце URL-адрас. Версія календара толькі для чытання будзе дададзена да вашых іншых календароў.\n${ kbLink }" ] }, "Subscribe to calendar modal description": { @@ -23197,12 +24472,54 @@ ] }, "Subtitle": { + "${ DRIVE_PLUS_NAME } offers 1 TB storage for your files and photos. You are also eligible for yearly storage bonuses.": [ + "${ DRIVE_PLUS_NAME } прапануе сховішча аб'ёмам 1 ТБ для вашых файлаў і фатаграфій. У вас таксама будзе права атрымаць штогадовыя бонусы ў выглядзе сховішча." + ], + "${ DRIVE_PLUS_NAME } offers 200 GB storage for your files and photos. You are also eligible for yearly storage bonuses.": [ + "${ DRIVE_PLUS_NAME } прапануе сховішча аб'ёмам 200 ГБ для вашых файлаў і фатаграфій. У вас таксама будзе права атрымаць штогадовыя бонусы ў выглядзе сховішча." + ], + "${ planTitle } gives you access to all apps and premium features. Privacy is built-in so you can get on with it, knowing your data and identity are safe.": [ + "${ planTitle } дае вам доступ да ўсіх праграм і прэміяльных функцый. Прыватнасць уключана ў іх прадвызначана і такім чынам, вы атрымліваеце яе адразу ведаючы, што вашы даныя і ідэнтычнасць знаходзяцца ў бяспецы." + ], + "${ planTitle } gives you all apps, all features, early access to new releases, and everything you need to be in control of your data and its security.": [ + "${ planTitle } дае магчымасць карыстацца ўсімі праграмамі і функцыямі, а таксама атрымаць ранні доступ да нашых новых выпускаў і ўсё неабходнае, каб кантраляваць свае даныя і іх бяспеку." + ], + "${ planTitle } gives you unlimited privacy and more storage for up to 2 people.": [ + "${ planTitle } дае вам неабмежаваную прыватнасць і больш сховішча. Разлічаны на 1 або 2 карыстальнікаў." + ], + "${ planTitle } gives your team all the collaboration tools they need to be productive and organized in their work, while safeguarding your business.": [ + "${ planTitle } дае вашай камандзе ўсе інструменты для сумеснай працы, якія ім спатрэбяцца для прадукцыйнай і арганізаванай працы, адначасова абараняючы ваш бізнес." + ], + "${ planTitle } gives your team what they need to be more productive and organized in their work with access to all ${ BRAND_NAME } apps and their advanced features.": [ + "${ planTitle } дае вашай камандзе ўсё неабходнае, каб быць больш прадукцыйнай і арганізаванай у сваёй працы з доступам да ўсіх праграм ${ BRAND_NAME } і іх пашыраных функцый." + ], + "${ planTitle } gives your team what they need to be more productive, organized, and in control of their inbox, schedule, and more.": [ + "${ planTitle } дае вашай камандзе ўсё неабходнае, каб быць больш прадукцыйнай, арганізаванай і кантраляваць сваю паштовую скрыню, расклад і іншыя рэчы." + ], + "${ planTitle } goes beyond the basics to help you be more productive, organized, and in control of your inbox, email identity, and more.": [ + "${ planTitle } выходзіць за рамкі базавага функцыянала, каб вы заставаліся прадукцыйнымі, арганізаванымі і кантралявалі сваю паштовую скрыню, ідэнтычнасць электроннай пошты і іншыя рэчы." + ], + "${ planTitle } helps you ensure that each of your family members — and their data — are protected whenever they’re online.": [ + "${ planTitle } дапамагае забяспечыць абарону кожнага ўдзельніка вашай сям'і і іх даных у любы момант, калі яны знаходзяцца ў інтэрнэце." + ], + "Compare the key differences that matter for your business.": [ + "Параўнайце ключавыя адрозненні, якія маюць значэнне для вашага бізнесу." + ], "Free forever": [ "Бясплатна назаўсёды" ], "per month, billed annually": [ "у месяц (аплачваецца адзін раз у год)" ], + "Save 50% for 1 year, and keep full access": [ + "Зэканомце 50% пры аплаце за 1 год і пакіньце поўны доступ" + ], + "Save 50% for 6 months, and keep full access": [ + "Зэканомце 50% пры аплаце за 6 месяцаў і пакіньце поўны доступ" + ], + "See how ${ MAIL_APP_NAME } compares, and why our independence makes a difference.": [ + "Паглядзіце, як ${ MAIL_APP_NAME } выглядае ў параўнанні з іншымі кліентамі электроннай пошты, і чаму наша незалежнасць мае значэнне." + ], "View VPN session details for your organization.": [ "Паглядзець падрабязнасці сеанса VPN для вашай арганізацыі." ] @@ -23211,6 +24528,9 @@ "Account deleted. Signing out...": [ "Уліковы запіс выдалены. Адбываецца выхад..." ], + "Activation link copied to clipboard": [ + "Спасылка актывацыі скапіявана ў буфер абмену" + ], "Address added": [ "Адрас дададзены" ], @@ -23334,9 +24654,6 @@ "Organization logo updated": [ "Лагатып арганізацыі абноўлены" ], - "Organization name set": [ - "Назва арганізацыі зададзена" - ], "Organization name updated": [ "Назва арганізацыі абноўлена" ], @@ -23558,6 +24875,14 @@ "Абараніце свае файлы з дапамогай зашыфраванага воблачнага сховішча. Уключае гісторыю версій, абагульванне зашыфраваных файлаў і іншыя функцыі." ] }, + "Tab": { + "For personal use": [ + "Для асабістага карыстання" + ], + "For professional use": [ + "Для прафесійнага карыстання" + ] + }, "Tab in domain modal": { "Addresses": [ "Адрасы" @@ -23647,6 +24972,9 @@ ] }, "Temporary need": { + "Continue cancelling": [ + "Працягнуць скасаванне" + ], "Keep current plan": [ "Пакінуць бягучы тарыфны план" ] @@ -23854,12 +25182,18 @@ "Actions": [ "Дзеянні" ], + "Activate multi-user support": [ + "Актываваць падтрымку шматкарыстальніцкага рэжыму" + ], "Activate organization key": [ "Актываваць ключ арганізацыі" ], "Activate user": [ "Актываваць карыстальніка" ], + "Activate your email": [ + "Актывацыя вашай электроннай пошты" + ], "Activity monitor": [ "Манітор актыўнасці" ], @@ -23872,12 +25206,21 @@ "Add a custom logo": [ "Дадаць карыстальніцкі лагатып" ], + "Add a recovery contact": [ + "Дадаць кантакт для аднаўлення" + ], "Add address": [ "Дадаць адрас" ], + "Add an emergency contact": [ + "Дадаць экстранны кантакт" + ], "Add another notification to remind you of this event": [ "Дадаць іншае апавяшчэнне, каб нагадаць вам пра гэту падзею" ], + "Add categories": [ + "Дадаць катэгорыі" + ], "Add contact group name": [ "Дадаць назву групы кантактаў" ], @@ -23938,6 +25281,9 @@ "Address and key verification": [ "Праверка адраса і ключа" ], + "Advanced recovery options": [ + "Пашыраныя параметры аднаўлення" + ], "Allocate storage": [ "Вылучэнне аб'ёму ў сховішчы" ], @@ -23956,9 +25302,6 @@ "An address for each role": [ "Адрас для кожнай ролі" ], - "An error occurred": [ - "Адбылася памылка" - ], "Annual": [ "Штогадовая" ], @@ -24052,6 +25395,9 @@ "Catch-all address": [ "Адрас для ўсёй пошты дамена" ], + "Categories": [ + "Катэгорыі" + ], "Change login password": [ "Змяніць пароль уваходу" ], @@ -24106,18 +25452,12 @@ "Confirm": [ "Пацвердзіць" ], - "Confirm address": [ - "Пацвердзіць адрас" - ], "Confirm downgrade": [ "Пацвердзіць паніжэнне тарыфнага плана" ], "Confirm loss of ${ BRAND_NAME } bonuses": [ "Пацвердзіць страту бонусаў ${ BRAND_NAME }" ], - "Confirm phone number": [ - "Пацвердзіце нумар тэлефона" - ], "Connect ${ name }": [ "Падключыць ${ name }" ], @@ -24142,12 +25482,18 @@ "Connect your custom domain": [ "Падключэнне свайго карыстальніцкага дамена" ], + "Connected emails": [ + "Падключаныя адрасы электроннай пошты" + ], "Connection status": [ "Статус падключэння" ], "Contact us": [ "Звязацца з намі" ], + "Continue with free storage": [ + "Працягнуць карыстацца бясплатным сховішчам" + ], "Continue with partial import?": [ "Працягнуць частковае імпартаванне?" ], @@ -24175,6 +25521,9 @@ "Create a new gateway": [ "Стварэнне новага шлюза" ], + "Create a new password": [ + "Стварыце новы пароль" + ], "Create Gateway": [ "Стварэнне шлюза" ], @@ -24256,6 +25605,12 @@ "Data recovery": [ "Аднаўленне даных" ], + "Data recovery contacts": [ + "Кантакты для аднаўлення даных" + ], + "Data recovery options": [ + "Параметры аднаўлення даных" + ], "Data retention": [ "Захоўванне даных" ], @@ -24265,6 +25620,9 @@ "Day theme": [ "Дзённая тэма" ], + "Deactivate current phrase?": [ + "Дэактываваць бягучую фразу?" + ], "Decrypt key": [ "Расшыфраваць ключ" ], @@ -24337,6 +25695,9 @@ "Device": [ "Прылада" ], + "Device data backup": [ + "Рэзервовая копія даных прылады" + ], "Device name": [ "Назва прылады" ], @@ -24346,6 +25707,9 @@ "Disable categories?": [ "Адключыць катэгорыі?" ], + "Disable device data backup?": [ + "Адключыць рэзервовую копію даных прылады?" + ], "Disable two-factor authentication": [ "Адключыць двухфактарную аўтэнтыфікацыю" ], @@ -24361,6 +25725,9 @@ "Disconnected from Gmail": [ "Адключана ад Gmail" ], + "Dismiss setup checklist": [ + "Адхіліць кантрольны спіс наладкі" + ], "Display name and signature": [ "Бачнае імя і подпіс" ], @@ -24397,6 +25764,9 @@ "Download the mobile apps": [ "Спампоўванне мабільных праграм" ], + "Download your recovery phrase": [ + "Спампаваць сваю фразу аднаўлення" + ], "Downloads": [ "Спампоўкі" ], @@ -24475,6 +25845,9 @@ "Email privacy": [ "Прыватнасць электроннай пошты" ], + "Email verification": [ + "Спраўджанне электроннай пошты" + ], "Emergency access": [ "Экстранны доступ" ], @@ -24535,6 +25908,9 @@ "Feature access": [ "Доступ да функцый" ], + "Fewer distractions, more focus": [ + "Менш фактараў, якія адцягваюць увагу і больш канцэнтрацыі" + ], "Filter for more focus": [ "Фільтр для большай канцэнтрацыі" ], @@ -24565,9 +25941,6 @@ "Forward emails": [ "Перасылка лістоў" ], - "Forwardings": [ - "Перасылка" - ], "Free": [ "Бясплатна" ], @@ -24604,6 +25977,9 @@ "Get ${ planMaxSpace } storage for your files, photos and documents with ${ planName }. ${ upgradeButton }": [ "Атрымайце ${ planMaxSpace } сховішча для вашых файлаў, фатаграфій і дакументаў з тарыфным планам ${ planName }. ${ upgradeButton }" ], + "Get ${ VPN_APP_NAME } on your TV": [ + "Атрымайце ${ VPN_APP_NAME } на свой тэлевізар" + ], "Get ${ vpnPlus } to access all servers": [ "Атрымаць ${ vpnPlus } для доступу да ўсіх сервераў" ], @@ -24634,6 +26010,12 @@ "Get more from your VPN": [ "Атрымайце больш ад свайго VPN" ], + "Get more storage with ${ MAIL_APP_NAME } Plus": [ + "Атрымайце больш сховішча з ${ MAIL_APP_NAME } Plus" + ], + "Get started": [ + "Пачатак працы" + ], "Get the app on all your devices and enjoy safe, seamless access anywhere.": [ "Атрымайце праграму на ўсе свае прылады і атрымлівайце асалоду ад бяспечнага, бесперабойнага доступу ў любым месцы." ], @@ -24664,9 +26046,15 @@ "Help center": [ "Даведачны цэнтр" ], + "Helping activists in Hong Kong": [ + "Дапамога актывістам у Ганконгу" + ], "Home": [ "Галоўная" ], + "How ${ MAIL_APP_NAME } is different": [ + "Чым адрозніваецца ${ MAIL_APP_NAME }" + ], "How did you find out about us?": [ "Як вы даведаліся пра нас?" ], @@ -24781,9 +26169,15 @@ "Link confirmation": [ "Пацвярджэнне спасылкі" ], + "Lower your cost without losing features": [ + "Знізіце выдаткі без страты функцый" + ], "Main password": [ "Галоўны пароль" ], + "Make your business stand out": [ + "Вылучыце свой бізнес" + ], "Manage files across devices on Windows, Mac, Android, and iOS.": [ "Кіраванне файламі на ўсіх прыладах: Windows, Mac, Android і iOS." ], @@ -24838,6 +26232,9 @@ "No events": [ "Няма падзей" ], + "No events yet": [ + "Пакуль няма падзей" + ], "No need to empty the trash": [ "Няма неабходнасці ачышчаць сметніцу" ], @@ -24892,12 +26289,18 @@ "Other sign-in issues": [ "Іншыя праблемы ўваходу" ], + "Our fight against censorship in Russia": [ + "Наша барацьба супраць цэнзуры ў Расіі" + ], "Password": [ "Пароль" ], "Password generator rules": [ "Правілы генератара пароляў" ], + "Password reset options": [ + "Параметры скідання пароля" + ], "Password reset settings": [ "Налады скідання пароля" ], @@ -24931,9 +26334,6 @@ "Phone": [ "Тэлефон" ], - "Photos": [ - "Фотаграфіі" - ], "Pin the extension": [ "Замацаваць пашырэнне" ], @@ -25018,9 +26418,15 @@ "Remove domain": [ "Выдаліць дамен" ], + "Remove email": [ + "Выдаліць электронную пошту" + ], "Remove forwarding address": [ "Выдаліць адрас перасылкі" ], + "Remove recovery phone number": [ + "Выдаліць нумар тэлефона для аднаўлення доступу" + ], "Remove server?": [ "Выдаліць сервер?" ], @@ -25112,7 +26518,7 @@ "Выберыце даныя для імпарту" ], "Select the time to send this notification": [ - "Выберыце час адпраўкі гэтага апавяшчэння" + "Выберыце час для адпраўкі гэтага апавяшчэння" ], "Select the way to send this notification": [ "Выберыце спосаб адпраўкі гэтага апавяшчэння" @@ -25192,6 +26598,9 @@ "Sign in on TV": [ "Увайсці на тэлевізары" ], + "Sign in on TV?": [ + "Увайсці на тэлевізары?" + ], "Sign in to join the Beta program": [ "Увайдзіце, каб далучыцца да бэта-праграмы" ], @@ -25207,6 +26616,9 @@ "Signed in to member account": [ "Уваход ва ўліковы запіс удзельніка" ], + "Signed-in reset": [ + "Скіданне пры актыўным сеансе" + ], "Simplify email distribution": [ "Спрашчэнне распаўсюджвання электроннай пошты" ], @@ -25225,6 +26637,12 @@ "Snooze:": [ "Адкладанне:" ], + "Some of your encrypted data is locked": [ + "Некаторыя вашы зашыфраваныя даныя заблакіраваны" + ], + "Something went wrong": [ + "Нешта пайшло не так" + ], "Sort folders alphabetically": [ "Сартаваць папкі па алфавіце" ], @@ -25252,6 +26670,9 @@ "Status": [ "Статус" ], + "Stay secure and connected anywhere": [ + "Заставайцеся ў бяспецы і на сувязі ў любым месцы" + ], "Strengthen your security on all your devices with ${ passPlusPlanName }. ${ upgradeButton }": [ "Умацуйце сваю бяспеку на ўсіх вашых прыладах з дапамогай ${ passPlusPlanName }. ${ upgradeButton }" ], @@ -25276,6 +26697,9 @@ "Support ticket closed": [ "Запыт у службу падтрымкі закрыты" ], + "Support your compliance objectives": [ + "Падтрымка выканання вашых патрабаванняў" + ], "Switch account": [ "Змяніць уліковы запіс" ], @@ -25345,6 +26769,9 @@ "Type": [ "Тып" ], + "Unblocking internet access in Iran": [ + "Разблакіроўка інтэрнэту ў Іране" + ], "Unlock your data": [ "Разблакіраваць вашы даныя" ], @@ -25414,6 +26841,9 @@ "Verify it’s you": [ "Спраўдзіце, што гэта вы" ], + "Verify your email": [ + "Спраўдзіць вашу электронную пошту" + ], "Verifying your card...": [ "Спраўджанне вашай карткі..." ], @@ -25438,6 +26868,9 @@ "Warning: suspected fake website": [ "Папярэджанне: гэты вэб-сайт можа быць падробленым" ], + "We sent you a code to your email to make sure it’s you. This code is valid for 10 minutes. Please enter it below.": [ + "Код адпраўлены на вашу электронную пошту для пацвярджэння вашай асобы. Код сапраўдны на працягу 10 хвілін. Увядзіце яго ніжэй." + ], "We'll send an email to your new address with instructions on completing the change.": [ "Мы адправілі ліст з інструкцыямі пра завяршэнне змены на ваш новы адрас." ], @@ -25453,6 +26886,9 @@ "Welcome to your new password manager!": [ "Вітаем у вашым новым менеджары пароляў!" ], + "What changes if you switch to the Free plan": [ + "Што зменіцца пры пераходзе на тарыфны план Free" + ], "What is an alias?": [ "Што такое псеўданім?" ], @@ -25486,6 +26922,12 @@ "Your ${ planTitle } subscription has started": [ "Ваша падпіска з тарыфным планам ${ planTitle } пачалася" ], + "Your admin at ${ orgName } is inviting you to activate your new secure ${ BRAND_NAME } account and update your password.": [ + "Ваш адміністратар у ${ orgName } запрашае актываваць ваш новы бяспечны ўліковы запіс ${ BRAND_NAME } і абнавіць пароль." + ], + "Your admin is inviting you to activate your new secure ${ BRAND_NAME } account and update your password.": [ + "Ваш адміністратар запрашае актываваць ваш новы бяспечны ўліковы запіс ${ BRAND_NAME } і абнавіць пароль." + ], "Your calendar link": [ "Ваша спасылка на каляндар" ], @@ -25498,6 +26940,15 @@ "Your plan": [ "Ваш тарыфны план" ], + "Your recovery file": [ + "Ваш файл аднаўлення" + ], + "Your recovery phrase": [ + "Ваша фраза аднаўлення" + ], + "Your recovery setup": [ + "Ваш наладка аднаўлення" + ], "Your referrals": [ "Вашы рэфералы" ], @@ -25630,6 +27081,24 @@ "Admins can manage user accounts and give admin privileges to other users. Only the primary admin can edit the plan of the organization.": [ "Адміністратары могуць кіраваць уліковымі запісамі карыстальнікаў і даваць правы адміністратара іншым карыстальнікам. Толькі асноўны адміністратар можа рэдагаваць тарыфны план арганізацыі." ], + "Allow recovering your account with a one-time code sent to your recovery email": [ + "Дазваляе аднаўленне вашага ўліковага запісу з дапамогай аднаразовага кода, які адпраўляецца на ваш адрас электроннай пошты" + ], + "Allow recovering your account with a one-time code sent to your recovery phone": [ + "Дазваляе аднаўленне вашага ўліковага запісу з дапамогай аднаразовага кода, які адпраўляецца на ваш нумар тэлефона" + ], + "Allow resetting your password from the account settings": [ + "Дазваляе скідаць ваш пароль з налад уліковага запісу" + ], + "Allow scanning a QR code from a ${ BRAND_NAME } mobile app to sign in": [ + "Дазваляе сканіраванне QR-кода з мабільнай праграмы ${ BRAND_NAME } для ўваходу" + ], + "Allow trusted contacts to request access to your account": [ + "Дазволіць давераным кантактам запытваць доступ да вашага ўліковага запісу" + ], + "Allow trusted contacts to unlock your encrypted data after a password reset": [ + "Дазваляць давераным кантактам разблакіраваць вашы зашыфраваныя даныя пасля скідання пароля" + ], "Allows to seamlessly add Zoom video conferencing links to your calendar invitations.": [ "Дазваляе бесперашкодна дадаваць спасылкі на відэаканферэнцыю Zoom у запрашэнні вашага календара." ], @@ -25666,6 +27135,9 @@ "Each imported email will have this label": [ "Кожны імпартаваны ліст будзе мець гэту метку" ], + "Early access to new apps and features.": [ + "Ранні доступ да новых праграм і функцый." + ], "Edit folder names": [ "Рэдагаваць назвы папак" ], @@ -25714,6 +27186,12 @@ "If you purchased a gift code or received one from our support team, you can enter it here.": [ "Калі вы купілі падарункавы код або атрымалі яго ад нашай каманды падтрымкі, то яго можна ўвесці тут." ], + "Includes custom email domains and unlimited hide-my-email aliases in ${ MAIL_APP_NAME }, access to servers in 120+ countries in ${ VPN_SHORT_APP_NAME }, built-in 2FA and secure sharing in ${ PASS_SHORT_APP_NAME }, and more.": [ + "Уключае карыстальніцкія дамены электроннай пошты і неабмежаваную колькасць псеўданімаў hide-my-email у ${ MAIL_APP_NAME }, доступ да сервераў у больш чым 120 краінах свету ў ${ VPN_SHORT_APP_NAME }, убудаваны 2ФА і бяспечнае абагульванне ў ${ PASS_SHORT_APP_NAME } і шмат чаго іншага." + ], + "Includes professional email at @yourdomain.com, cloud storage with collaborative document editing, scheduling and video conferencing, password management, a secure ${ VPN_SHORT_APP_NAME }, and more.": [ + "Уключае прафесійную электронную пошту @yourdomain.com, воблачнае сховішча з сумесным рэдагаваннем дакументаў, расклад і відэаканферэнцыі, менеджар пароляў, а таксама бяспечны ${ VPN_SHORT_APP_NAME } і многае іншае." + ], "Members who do not use 2FA will get an email asking them to enable it as soon as possible. Single sign-on users will not receive the email reminder.": [ "Удзельнікі, якія не выкарыстоўваюць 2ФА, атрымаюць ліст з просьбай уключыць яе як мага хутчэй. Карыстальнікі з адзіным уваходам напамін на сваю электронную пошту не атрымаюць." ], @@ -25735,6 +27213,15 @@ "Remove metadata from images to protect your privacy.": [ "Выдаляйце метаданыя з відарысаў, каб абараніць сваю прыватнасць." ], + "Save 12-word long phrase to unlock your account and your encrypted data instantly if you forgot your password": [ + "Захавайце фразу даўжынёй з 12 слоў у надзейным месцы. Яна дазволіць імгненна разблакіраваць ваш уліковы запіс і зашыфраваныя даныя, калі вы забудзеце свой пароль." + ], + "Save an encryption backup file in this browser to recover your data after a password reset": [ + "Захавайце зашыфраваную рэзервовую копію файла ў гэтым браўзеры, каб аднавіць свае даныя пасля скідання пароля" + ], + "Save an encryption backup file to recover your data after a password reset": [ + "Захавайце рэзервовую копію шыфравання, каб аднавіць свае даныя пасля скідання пароля" + ], "See number of unread messages in the tab icon": [ "Праглядайце колькасць непрачытаных паведамленняў у закладцы значка" ], @@ -25807,8 +27294,8 @@ "This feature is only available on Beta": [ "Гэта функцыя даступна толькі ў рэжыме бэта" ], - "This is the default key used by other ${ MAIL_APP_NAME } users on older mobile apps to encrypt data they send to you": [ - "Гэта прадвызначаны ключ, які выкарыстоўваецца іншымі карыстальнікамі ${ MAIL_APP_NAME } у старых мабільных праграмах для шыфравання даных, якія яны вам адпраўляюць" + "This is the default key used by other ${ MAIL_APP_NAME } users on older apps to encrypt data they send to you": [ + "Гэта прадвызначаны ключ, які выкарыстоўваецца іншымі карыстальнікамі ${ MAIL_APP_NAME } у старых праграмах для шыфравання даных, якія яны вам адпраўляюць" ], "This is the default key used by other ${ MAIL_APP_NAME } users to encrypt data they send to you": [ "Гэта прадвызначаны ключ, які выкарыстоўваецца іншымі карыстальнікамі ${ MAIL_APP_NAME } для шыфравання даных, якія яны вам адпраўляюць" @@ -25896,6 +27383,9 @@ "User is a group": [ "Карыстальнік - гэта група" ], + "via ${ groupName }": [ + "праз ${ groupName }" + ], "Waiting for user to accept the invitation": [ "Чаканне прыняцця запрашэння карыстальнікам" ] @@ -25930,7 +27420,7 @@ "Абагулена з дапамогай скразнога шыфравання" ], "Shared end-to-end encrypted with verified contact": [ - "Абагулена з дапамогай скразнога шыфравання з правераным кантактам" + "Абагулена з дапамогай скразнога шыфравання са спраўджаным кантактам" ] }, "Tor out of date": { @@ -26223,6 +27713,12 @@ ] }, "user_modal": { + "(via ${ groupName })": [ + "(праз ${ groupName })" + ], + "(via group)": [ + "(праз групу)" + ], "Add delegated roles to a user to grant them only the specific permissions they need, keeping full-admin power separate and your environment secure.": [ "Дадайце ўпаўнаважаныя ролі карыстальніку, каб даць яму толькі канкрэтныя правы. Асобна вамі будуць захаваны поўныя правы адміністратара і ваша бяспечнае асяроддзе." ], @@ -26633,11 +28129,14 @@ "${ BRAND_NAME } will transfer as much data as possible, starting with your most recent messages.": [ "${ BRAND_NAME } перанясе столькі даных, колькі будзе магчыма, пачынаючы з самых новых паведамленняў." ], - "Are you sure you want to delete the phone number?": [ - "Вы сапраўды хочаце выдаліць гэты нумар тэлефона?" + "Are you sure you want to remove your notification email?": [ + "Вы сапраўды хочаце выдаліць сваю электронную пошту для апавяшчэнняў?" ], - "Are you sure you want to delete this address?": [ - "Вы сапраўды хочаце выдаліць гэты адрас?" + "Are you sure you want to remove your recovery email?": [ + "Вы сапраўды хочаце выдаліць сваю электронную пошту для аднаўлення доступу?" + ], + "Are you sure you want to remove your recovery phone number?": [ + "Вы сапраўды хочаце выдаліць свой нумар тэлефона для аднаўлення доступу?" ], "By deleting this address, you will no longer be able to receive daily email notifications.": [ "Выдаліўшы гэты адрас, вы больш не зможаце атрымліваць штодзённыя апавяшчэнні па электроннай пошце." @@ -26648,8 +28147,8 @@ "By deleting this address, you will no longer be able to recover your account.": [ "Выдаліўшы гэты адрас, вы больш не зможаце аднавіць доступ да свайго ўліковага запісу." ], - "By deleting this phone number, you will no longer be able to recover your account.": [ - "Выдаліўшы гэты нумар тэлефона, вы больш не зможаце аднавіць свой уліковы запіс." + "By removing this phone number, you will no longer be able to recover your account.": [ + "Выдаліўшы гэты нумар тэлефона, вы больш не зможаце аднавіць свой ўліковы запіс." ], "Could not login. Please open ${ PASS_APP_NAME } browser extension and login from there.": [ "Немагчыма ўвайсці. Адкрыйце пашырэнне для браўзера ${ PASS_APP_NAME } і ўвайдзіце праз яго." @@ -26688,7 +28187,7 @@ "Серверы ў гэтым шлюзе ўвойдуць у 10-дзённы перыяд дэактывацыі. Гэтыя серверы могуць быць дададзены ў новы шлюз, але іх краіна не можа быць зменена." ], "Skip verification?": [ - "Прапусціць праверку?" + "Прапусціць спраўджанне?" ], "The date and time settings on your device are out of sync. ${ learnMore }": [ "Налады даты і часу на вашай прыладзе не сінхранізуюцца. ${ learnMore }" diff --git a/applications/account/locales/ca_ES.json b/applications/account/locales/ca_ES.json index b6d89bae135..11ce47d0b02 100644 --- a/applications/account/locales/ca_ES.json +++ b/applications/account/locales/ca_ES.json @@ -90,6 +90,9 @@ "Add": [ "Afegeix" ], + "Add ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }": [ + "Afegiu ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }" + ], "Add ${ BRAND_NAME } Account": [ "Afegeix un compte de ${ BRAND_NAME }" ], @@ -162,6 +165,9 @@ "Add user": [ "Afegir usuari" ], + "Added ${ memberName } as group owner": [ + "S'ha afegit ${ memberName } com a propietari del grup" + ], "Align center": [ "Alinea al centre" ], @@ -213,6 +219,9 @@ "Back to sign in": [ "Torneu a l'inici de sessió" ], + "Back to sign-in": [ + "Tornar a l'inici de sessió" + ], "Block": [ "Bloqueja" ], @@ -309,6 +318,9 @@ "Confirm": [ "Confirma" ], + "Confirm email": [ + "Confirmeu el correu electrònic" + ], "Confirm opening of link ${ linkToShow }": [ "Confirmeu l'obertura de l'enllaç ${ linkToShow }" ], @@ -324,15 +336,15 @@ "Connect Gmail address": [ "Connecteu l'adreça de Gmail" ], - "Connect to Gmail": [ - "Connecteu-vos a Gmail" - ], "Connect to video conferencing": [ "Connecta't a la videoconferència" ], "Connect your ${ BRAND_NAME } Account": [ "Connecteu el vostre compte de ${ BRAND_NAME }" ], + "Connect your email": [ + "Connecteu el vostre correu electrònic" + ], "Connected": [ "Connectat" ], @@ -369,6 +381,9 @@ "Continue with ${ nameToDisplay } ${ maybeEmailInBrackets }": [ "Continua amb ${ nameToDisplay } ${ maybeEmailInBrackets }" ], + "Continue with Free": [ + "Continuar amb el pla gratuït" + ], "Continue with Google": [ "Continua amb Google" ], @@ -519,8 +534,8 @@ "Delete record": [ "Suprimeix el registre" ], - "Delete token ${ token.Account }": [ - "Elimineu el testimoni \"${ token.Account }\"" + "Delete token ${ tokens[0].Account }": [ + "Eliminar el testimoni \"${ tokens[0].Account }\"" ], "Delete token “${ token.Name }”": [ "Suprimiu el testimoni \"${ token.Name }\"" @@ -561,6 +576,9 @@ "Disable categories": [ "Desactiveu les categories" ], + "Disable category": [ + "Desactivar la categoria" + ], "Disable recovery phrase": [ "Desactivar la frase de recuperació" ], @@ -711,6 +729,9 @@ "Enable ${ darkWebMonitoring }": [ "Activa ${ darkWebMonitoring }" ], + "Enable category": [ + "Habilitar la categoria" + ], "enable desktop notifications": [ "activa les notificacions d'escriptori" ], @@ -762,6 +783,9 @@ "Filters are being applied. This might take a few minutes.": [ "S'estan aplicant els filtres. Això pot trigar uns minuts." ], + "Finish": [ + "Finalitzar" + ], "Fit to window": [ "Ajusta a la finestra" ], @@ -780,6 +804,9 @@ "Generate key": [ "Genereu la clau" ], + "Generate missing keys": [ + "Genereu les claus que falten" + ], "Generate new phrase": [ "Genereu una frase nova" ], @@ -882,6 +909,9 @@ "Go to ${ planOrAppName }": [ "Aneu a ${ planOrAppName }" ], + "Go to domain provider": [ + "Anar al proveïdor de domini" + ], "Go to label": [ "Ves a l'etiqueta" ], @@ -1278,6 +1308,9 @@ "Remove this notification": [ "Esborra aquesta notificació" ], + "Removed ${ memberName } as group owner": [ + "S’ha esborrat ${ memberName } com a propietari del grup" + ], "Rename": [ "Canvia el nom" ], @@ -1359,6 +1392,9 @@ "Save": [ "Desa" ], + "Save & exit": [ + "Deseu i sortiu" + ], "Save address": [ "Desa l'adreça" ], @@ -1474,7 +1510,7 @@ "Estableix com a predeterminat" ], "Set as default mail application": [ - "Establiu com a aplicació de correu per defecte" + "Establiu com aplicació de correu per defecte" ], "Set catch-all": [ "Configura l'adreça d'arreplega" @@ -2058,18 +2094,21 @@ ] }, "Admin roles onboarding": { + "2 new admin roles": [ + "2 nous rols d'administrador/a" + ], "3 new admin roles": [ "3 nous rols d'administrador/a" ], - "Admin roles": [ - "Rols d'administrador/a" - ], "Configure security policies, data retention, and VPN infrastructure, and manage audit logs.": [ "Configureu les polítiques de seguretat, la retenció de dades i la infraestructura VPN, i gestioneu els registres d'auditoria." ], "Delegate management by assigning specific admin roles. Give each admin only the access they need. This follows the principle of least privilege, protecting your organization from compromised accounts and accidental errors.": [ "Delegueu la gestió assignant rols d'administrador/a específics. Doneu a cada administrador només l'accés que necessiti. Això segueix el principi del mínim privilegi, de manera que protegiu la vostra organització de comptes de risc i d'errors accidentals." ], + "Delegate management for many users at once. Assign specific admin roles to groups for automatic permissions. This follows the principle of least privilege to save time on onboarding and offboarding while reducing errors.": [ + "Delegueu la gestió de molts usuaris alhora. Assigneu rols específics d'administrador als grups per a permisos automàtics. Això segueix el principi del mínim privilegi per estalviar temps en la incorporació i la baixa d'usuaris, mentre redueix errors." + ], "Delegate management with the appropriate admin role.": [ "Delegueu la gestió amb el rol d'administrador/a adequat." ], @@ -2082,21 +2121,15 @@ "New: Control admin access for individual users": [ "Nou: Controleu l'accés d'administració per a usuaris individuals" ], - "Organization admin": [ - "Administrador/a de l'organització" + "New: Control admin access for many users at once": [ + "Nou: Control de l'accés d'administrador/a per molts usuaris alhora" ], "Organization admin:": [ "Administrador/a de l'organització:" ], - "Security admin": [ - "Administrador/a de seguretat" - ], "Security admin:": [ "Administrador/a de seguretat:" ], - "User admin": [ - "Administrador/a d'usuaris" - ], "User admin:": [ "Administrador/a d'usuaris:" ] @@ -2864,15 +2897,66 @@ "${ BRAND_NAME } Migration Assistant": [ "Assistent de migració de ${ BRAND_NAME }" ], - "Add a custom domain": [ - "Afegiu un domini personalitzat" + "${ migratedCount } of ${ providerUsers.length }": [ + "${ migratedCount } de ${ providerUsers.length }" + ], + "**p=none**: do not quarantine or reject unauthorized emails. Usually, people only use this policy to troubleshoot or test.": [ + "**p=cap**: no posa en quarantena ni rebutja els correus electrònics no autoritzats. Normalment, aquesta opció només s'utilitza per resoldre problemes o fer proves." + ], + "**p=quarantine**: asking the recipient platforms to mark the unauthorized emails as spam or quarantine them.": [ + "**p=quarantine**: demana a les plataformes receptores que marquin els correus electrònics no autoritzats com a correu brossa o que els posin en quarantena." + ], + "**p=reject**: asking the recipient platforms to reject the unauthorized emails.": [ + "**p=reject**: demaneu a les plataformes receptores que rebutgin els correus electrònics no autoritzats." + ], + "Account connected": [ + "S'ha connectat el compte" + ], + "Account disconnected": [ + "S'ha desconnectat el compte" + ], + "Activated": [ + "Activat" + ], + "Activation link": [ + "Enllaç d'activació" + ], + "Activation link copied to clipboard": [ + "S'ha copiat l'enllaç d'activació al porta-retalls" ], - "App installed": [ - "S'ha instal·lat l'aplicació" + "Add a domain": [ + "Afegiu un domini" + ], + "Add domain": [ + "Afegeix un domini" + ], + "Add users": [ + "Afegiu usuaris" + ], + "Add users and configure your domain manually for sending and receiving mail. Ideal for small teams starting from a clean slate.": [ + "Afegiu usuaris i configureu el vostre domini manualment per enviar i rebre correu. Ideal per a equips petits que comencen de zero." + ], + "Address is already used by a user outside of your organization. Please contact customer support to resolve this": [ + "Aquesta adreça ja la utilitza un usuari de fora de la vostra organització. Poseu-vos en contacte amb el servei d'atenció al client per resoldre-ho" + ], + "All": [ + "Tots" + ], + "An unknown error occurred": [ + "S'ha produït un error desconegut" + ], + "Are you sure you want to proceed? Users who haven't claimed their account before the migration is finalized will need to request a password reset from their ${ BRAND_NAME } organization administrator.": [ + "Segur que voleu continuar? Els usuaris que no hagin demanat el compte abans que finalitzi la migració hauran de sol·licitar un restabliment de contrasenya a l'administrador de la seva organització de ${ BRAND_NAME }." + ], + "As soon as the accounts are created, you can share the activation link so users can claim their ${ BRAND_NAME } account.": [ + "Tan bon punt s'hagin creat els comptes, podreu compartir l'enllaç d'activació perquè els usuaris puguin demanar el seu compte de ${ BRAND_NAME }." ], "Authenticate": [ "Autentiqueu-vos" ], + "Authenticate to Google Workspace": [ + "Autentiqueu-vos a Google Workspace" + ], "Authenticate your Google Workspace account": [ "Autentiqueu el vostre compte de Google Workspace" ], @@ -2882,23 +2966,68 @@ "Change": [ "Canvieu" ], + "Choose how you want to bring your team and email setup to ${ BRAND_NAME }.": [ + "Escolliu com voleu portar el vostre equip i la configuració del correu electrònic a ${ BRAND_NAME }." + ], + "Choose what to migrate. Your choice will apply to all users. The migration will start after you decide which users to copy.": [ + "Escolliu què voleu migrar. La vostra elecció s'aplicarà a tots els usuaris. La migració començarà un cop hàgiu decidit quins usuaris voleu copiar." + ], "Completed": [ "S'ha completat" ], "Configure": [ "Configureu" ], + "Configure domain": [ + "Configureu el domini" + ], "Configure migration": [ "Configureu la migració" ], + "Configure your domain": [ + "Configureu el vostre domini" + ], "Contacts": [ "Contactes" ], + "Continue migration": [ + "Continueu la migració" + ], + "Copy activation link": [ + "Copieu l'enllaç d'activació" + ], + "Copy activation link to clipboard": [ + "Copiar l'enllaç d'activació al porta-retalls" + ], + "Copy the below code and paste it in the DNS section of your domain host. You can find an example and some helpful tips ${ hereHref }.": [ + "Copieu el codi següent i enganxeu-lo a la secció DNS del vostre proveïdor de domini. Podeu trobar un exemple i alguns consells útils a ${ hereHref }." + ], + "Creating accounts": [ + "S'estan creant els comptes" + ], + "DKIM adds a digital signature to each email so recipients can verify that the message really came from your domain and was not altered in transit. Without it, messages may be treated as less trustworthy.": [ + "DKIM afegeix una signatura digital a cada correu electrònic perquè els destinataris puguin verificar que el missatge prové realment del vostre domini i no ha estat alterat durant el trànsit. Sense ella, els missatges poden ser considerats menys fiables." + ], + "DKIM records": [ + "Registres DKIM" + ], + "DMARC builds on SPF and DKIM by telling receiving servers how to handle messages that fail these checks. It helps protect your domain from impersonation and improves overall delivery reliability.": [ + "DMARC es basa en SPF i DKIM indicant als servidors receptors com gestionar els missatges que no superin aquestes comprovacions. Ajuda a protegir el vostre domini contra la suplantació i millora la fiabilitat general dels lliuraments." + ], + "DMARC records": [ + "Registres DMARC" + ], + "Domain added": [ + "S'ha afegit el domini" + ], "Domain connected": [ "S'ha connectat el domini" ], - "Domain ownership verified": [ - "S'ha verificat la propietat del domini" + "Ensure that your emails reach the inbox, not the spam folder. Updating SPF will allow users to send from ${ BRAND_NAME } and Google simultaneously for the duration of the migration.": [ + "Assegureu-vos que els vostres correus electrònics arribin a la bústia d'entrada i no a la carpeta de correu brossa. L'actualització de l'SPF permetrà als usuaris enviar correus des de ${ BRAND_NAME } i Google simultàniament mentre duri la migració." + ], + "Errors": [ + "Errors" ], "Estimated size": [ "Mida estimada" @@ -2906,15 +3035,39 @@ "Failed to load OAuth": [ "No s'ha pogut carregar OAuth" ], + "Finalize migration": [ + "Finalitzeu la migració" + ], + "Finalize your migration": [ + "Finalitzeu la migració" + ], + "Finalizing the migration means all your emails will be routed directly to ${ BRAND_NAME }. Users will stop receiving emails on their Google accounts and data will not be synchronized between ${ BRAND_NAME } and Google anymore.": [ + "Finalitzar la migració significa que tots els vostres correus electrònics s'enviaran directament a ${ BRAND_NAME }. Els usuaris deixaran de rebre correus electrònics als seus comptes de Google i les dades ja no se sincronitzaran més entre ${ BRAND_NAME } i Google." + ], + "Find out what can be migrated.": [ + "Descobriu què es pot migrar." + ], "Finish setting up your business account": [ "Acabeu de configurar el vostre compte d'empresa" ], + "Go to Domain names": [ + "Aneu a Noms de domini" + ], "Google Marketplace app to copy data to ${ BRAND_NAME }": [ "Aplicació de Google Marketplace per copiar dades a ${ BRAND_NAME }" ], + "Google Workspace account": [ + "Compte de Google Workspace" + ], + "Hang tight, we're setting up user accounts and will start importing user data shortly.": [ + "Espereu un moment, estem configurant els comptes d'usuari i començarem a importar les dades d'usuari d'aquí a poc." + ], "Has errors": [ "Té errors" ], + "Import errors for ${ user.AdminSetName }": [ + "S'han produït errors d'importació per a ${ user.AdminSetName }" + ], "In progress": [ "En curs" ], @@ -2924,14 +3077,20 @@ "Install migration app": [ "Instal·leu l’aplicació de migració" ], - "Learn more about what can be migrated. Learn more": [ - "Obtingueu més informació sobre què es pot migrar. Per saber-ne més" + "Install Migration assistant": [ + "Instal·leu l'assistent de migració" + ], + "Loading your organization data": [ + "S'estan carregant les dades de la vostra organització" ], "Mail": [ "Correu" ], - "Migrate": [ - "Migreu" + "Managed via ${ registrar.name }": [ + "Gestionat mitjançant ${ registrar.name }" + ], + "Member address not found. Please contact customer support to resolve this": [ + "No s'ha trobat l'adreça del membre. Poseu-vos en contacte amb el servei d'atenció al client per resoldre-ho" ], "Migrate from Google Workspace": [ "Migreu des de Google Workspace" @@ -2939,6 +3098,12 @@ "Migrate users": [ "Migreu els usuaris" ], + "Migrate users to ${ BRAND_NAME }": [ + "Migreu usuaris a ${ BRAND_NAME }" + ], + "Migrated": [ + "S'ha migrat" + ], "Migration includes": [ "La migració inclou" ], @@ -2949,8 +3114,35 @@ "Migration status": [ "Estat de la migració" ], - "Not started": [ - "No s'ha iniciat" + "Missing organization private key": [ + "Falta la clau privada de l'organització" + ], + "Missing organization public key": [ + "Falta la clau pública de l'organització" + ], + "More details": [ + "Més detalls" + ], + "Move your users, emails, and settings from Google Workspace automatically. We’ll guide you through connecting your account, verifying your domain, and migrating users securely.": [ + "Migreu usuaris, correus electrònics i preferències de Google Workspace automàticament. Us guiarem a través de la connexió del vostre compte, la verificació del domini i la migració segura dels usuaris." + ], + "No error details available. Please contact customer support for more information": [ + "No hi ha detalls de l'error disponibles. Poseu-vos en contacte amb el servei d'atenció al client per més informació" + ], + "No users to display": [ + "No hi ha cap usuari per mostrar" + ], + "Not activated": [ + "No s'ha activat" + ], + "Not confirmed": [ + "No confirmat" + ], + "Once users have claimed their ${ BRAND_NAME } account, finalize the migration.": [ + "Un cop els usuaris hagin demanat el seu compte de ${ BRAND_NAME }, finalitzeu la migració." + ], + "Once we have confirmed that emails are routed to ${ BRAND_NAME } the migration will be finalized. You will receive a confirmation email to let you know when this happens. This process can take up to 24 hours.": [ + "Un cop hàgim confirmat que els correus electrònics s'envien a ${ BRAND_NAME }, la migració es completarà. Rebreu un correu electrònic de confirmació per informar-vos quan això passi. Aquest procés pot trigar fins a 24 hores." ], "Organization does not have enough seats available": [ "L'organització no té prou llicències disponibles" @@ -2958,8 +3150,20 @@ "Organization does not have enough storage available": [ "L'organització no té prou espai d'emmagatzematge disponible" ], - "Organization settings": [ - "Configuració de l'organització" + "Pending": [ + "Està pendent" + ], + "Please add the following records in your DNS console of your domain provider:": [ + "Afegiu els següents registres a la consola DNS del vostre proveïdor de domini:" + ], + "Please leave this window open until we're done creating all the users.": [ + "Deixeu aquesta finestra oberta fins que hàgim creat tots els usuaris." + ], + "Please select at least one product to migrate": [ + "Seleccioneu almenys un producte per migrar" + ], + "Refresh": [ + "Actualitzar" ], "Required": [ "Obligatori" @@ -2970,8 +3174,8 @@ "Select at least one user to start a migration": [ "Seleccioneu almenys un usuari per iniciar una migració" ], - "Select what you want to migrate, this will apply to all users whether they are created now or later. Migration will start after user accounts are created.": [ - "Seleccioneu què voleu migrar; això s'aplicarà a tots els usuaris, tant si es creen ara com més endavant. La migració començarà un cop s'hagin creat els comptes d'usuari." + "Select users to migrate": [ + "Seleccioneu els usuaris que voleu migrar" ], "Set up": [ "Configureu-ho" @@ -2979,53 +3183,120 @@ "Set up billing information": [ "Configureu la informació de facturació" ], + "Set up manually": [ + "Configuració manual" + ], + "Set up secure sending (DKIM)": [ + "Configureu l'enviament segur (DKIM)" + ], + "Set up secure sending (DMARC)": [ + "Configurar l'enviament segur (DMARC)" + ], + "Set up secure sending (SPF)": [ + "Configura l'enviament segur (SPF)" + ], "Set up two-factor authentication": [ "Configureu l’autenticació de doble factor" ], "Settings": [ "Preferències" ], + "Share the activation link to users so they can claim their ${ BRAND_NAME } account.": [ + "Compartiu l'enllaç d'activació amb els usuaris perquè puguin demanar el seu compte de ${ BRAND_NAME }." + ], "Sign in to Google Workspace": [ "Inicieu la sessió a Google Workspace" ], + "Size": [ + "Mida" + ], + "Some accounts are not claimed": [ + "Alguns comptes no s'han reclamat" + ], + "SPF records": [ + "Registres SPF" + ], + "Start migrating": [ + "Inicieu la migració" + ], "Start migration": [ "Inicieu la migració" ], "Status": [ "Estat" ], + "The default setting is none. However, to improve your security we recommend setting this value to p=quarantine.": [ + "La configuració per defecte és cap. Tanmateix, per millorar la vostra seguretat, us recomanem establir aquest valor a p=quarantine." + ], + "The “p=” value specifies the action to take for emails that fail DMARC. Here are the available actions:": [ + "El valor \"p=\" especifica l'acció a prendre per als correus electrònics que no passen la verificació DMARC. A continuació, es mostren les accions disponibles:" + ], + "This migration has been completed": [ + "S'ha completat la migració" + ], "To migrate your organization’s data, you need to install the ${ BRAND_NAME } Migration Assistant app from the Google Workspace Marketplace. This will grant permission to ${ BRAND_NAME } to copy your data. After installing it, come back here to continue.": [ "Per migrar les dades de la vostra organització, heu d'instal·lar l'aplicació ${ BRAND_NAME } Migration Assistant des de Google Workspace Marketplace. Això atorgarà permís a ${ BRAND_NAME } per copiar les vostres dades. Després d'instal·lar-la, torneu aquí per continuar." ], - "Transfer errors": [ - "Errors de transferència" + "Update records for receiving": [ + "Actualitzeu els registres per a la recepció" ], "User": [ "Usuari" ], + "User needs to activate their account through the activation link shown above": [ + "L'usuari ha d'activar el seu compte mitjançant l'enllaç d'activació que es mostra a dalt" + ], + "User status": [ + "Estat de l'usuari" + ], + "Users can use ${ BRAND_NAME } or Google simultaneously for the duration of the migration.": [ + "Els usuaris poden utilitzar ${ BRAND_NAME } o Google simultàniament mentre duri la migració." + ], "Users migrated": [ "S'han migrat els usuaris" ], + "Verified": [ + "Verificat" + ], + "Verify domain ownership": [ + "Verifiqueu la propietat del domini" + ], "Verify installation": [ "Verifiqueu la instal·lació" ], "Verify your domain": [ "Verifiqueu el vostre domini" ], - "Verify your domain ownership": [ - "Verifiqueu la propietat del vostre domini" - ], "Verify your domain to start a migration": [ "Verifiqueu el vostre domini per iniciar una migració" ], + "We detected the primary domain linked to your Google Workspace account. Confirm it to continue setting up email for your ${ BRAND_NAME } organization.": [ + "Hem detectat el domini principal vinculat al vostre compte de Google Workspace. Confirmeu-lo per continuar configurant el correu electrònic per a l'organització ${ BRAND_NAME }." + ], "We were unable to verify the installation, please check that you have installed it in your Google Workspace account and try again.": [ "No s'ha pogut verificar la instal·lació; comproveu que estigui instal·lada al vostre compte de Google Workspace i torneu-ho a provar." ], + "We're still checking the MX records with your domain provider.": [ + "Encara estem comprovant els registres MX amb el vostre proveïdor de domini." + ], + "We've noticed some users have not claimed their ${ BRAND_NAME } accounts.": [ + "Hem observat que alguns usuaris no han demanat els seus comptes de ${ BRAND_NAME }." + ], "What are you migrating?": [ "Què esteu migrant?" ], + "You": [ + "Tú" + ], "You need to grant the permission for ${ BRAND_NAME } to copy your data. After accepting permissions, come back here to continue.": [ "Cal que concediu permís perquè ${ BRAND_NAME } pugui copiar les vostres dades. Un cop acceptats els permisos, torneu aquí per continuar." + ], + "You're all set!": [ + "Ja ho teniu tot a punt!" + ], + "Your current plan allows up to ${ maxMembers } user. To migrate additional users, add more seats to your subscription.": [ + "El vostre pla actual us permet fins a ${ maxMembers } usuari. Per migrar usuaris addicionals, afegiu més llicències a la vostra subscripció.", + "El vostre pla actual us permet fins a ${ maxMembers } usuaris. Per migrar usuaris addicionals, afegiu més llicències a la vostra subscripció." ] }, "breadcrumb": { @@ -3133,9 +3404,18 @@ ] }, "Button": { + "Add users manually": [ + "Afegiu usuaris manualment" + ], + "Cancel": [ + "Cancel·leu-ho" + ], "Close": [ "Tanca" ], + "Configure your network": [ + "Configureu la vostra xarxa" + ], "Continue using ${ MAIL_APP_NAME }.": [ "Continua utilitzant ${ MAIL_APP_NAME }." ], @@ -3157,6 +3437,12 @@ "Got it": [ "Entesos" ], + "Invite your team": [ + "Convideu el vostre equip" + ], + "Manage global VPN permissions": [ + "Gestioneu els permisos de la VPN global" + ], "Maybe later": [ "Potser més tard" ], @@ -3166,12 +3452,21 @@ "Remind me later": [ "Recorda-m'ho més tard" ], + "Secure your organization": [ + "Protegiu la vostra organització" + ], "Send": [ "Enviar" ], "Set up other features": [ "Configureu altres característiques" ], + "Set up SSO": [ + "Configureu l'SSO" + ], + "Sign in": [ + "Inicieu sessió" + ], "Take a tour": [ "Feu una visita guiada" ] @@ -4804,6 +5099,9 @@ "/month": [ "/mes" ], + "/user /month": [ + "/usuari /mes" + ], "/user per month": [ "/usuari per mes" ] @@ -4980,7 +5278,7 @@ "${ MAIL_APP_NAME } no és la vostra aplicació de correu per defecte." ], "${ MAIL_APP_NAME } is your default mail application.": [ - "${ MAIL_APP_NAME } és la vostra aplicació de correu electrònic per defecte." + "${ MAIL_APP_NAME } és la vostra aplicació de correu electrònic per defecte." ], "${ MAIL_APP_NAME } keeps your business data secure and lets you send encrypted emails to anyone.": [ "${ MAIL_APP_NAME } manté segures les dades del vostre negoci i us permet enviar correus electrònics xifrats a qualsevol persona." @@ -5006,14 +5304,17 @@ "Automatically sort your incoming messages before they reach your inbox.": [ "Ordeneu automàticament els missatges entrants abans que arribin a la safata d'entrada." ], + "Available storage: ${ storageText }": [ + "Emmagatzematge disponible: ${ storageText }" + ], "Available with ${ title }": [ "Està disponible amb ${ title }" ], "Block Google's ability to profile you. Gmail can't see what you do in ${ MAIL_APP_NAME }": [ "Bloquegeu la capacitat de Google per crear el vostre perfil. Gmail no podrà veure què feu a ${ MAIL_APP_NAME }" ], - "Bring over email, calendar events, and contacts from another provider.": [ - "Porteu correus electrònics, esdeveniments del calendari i contactes d'un altre proveïdor." + "Bring over your email, calendar events, and contacts from another provider.": [ + "Importeu els vostres correus electrònics, els esdeveniments del calendari i els contactes des d'un altre proveïdor." ], "Build trust and brand recognition with professional email addresses at your own domain.": [ "Bastiu confiança i reconeixement de marca amb adreces de correu electrònic professionals del vostre propi domini." @@ -5024,6 +5325,9 @@ "Connect your CRM, website, printers, and more.": [ "Connecteu el CRM, lloc web, impressores i molt més." ], + "Create a Gateway to give your users access to your IT resources through dedicated servers.": [ + "Creeu una passarel·la per donar accés als usuaris als vostres recursos de TI mitjançant servidors dedicats." + ], "Create a Zoom meeting and add joining details to your event with one click.": [ "Creeu una reunió a Zoom i afegiu els detalls de participació a l'esdeveniment en un clic." ], @@ -5033,9 +5337,15 @@ "Create groups you can email with a single address.": [ "Creeu grups als quals podeu enviar correus amb una única adreça." ], + "Create new user accounts or import users with SSO (single sign-on) SCIM provisioning.": [ + "Creeu nous comptes d'usuari o importeu usuaris amb l'aprovisionament SCIM d'SSO (inici de sessió únic)." + ], "Create policies to decide who can connect to shared servers in each country.": [ "Creeu polítiques per a decidir qui es pot connectar als servidors compartits de cada país." ], + "Decide which users can connect to each of our 120+ shared server locations.": [ + "Decidiu quins usuaris es poden connectar a cadascuna de les nostres més de 120 ubicacions de servidors compartits." + ], "Easily access your email and calendar on desktop and mobile.": [ "Accediu fàcilment al vostre correu i calendari a l'escriptori i al mòbil." ], @@ -5060,6 +5370,9 @@ "Encrypting and importing contacts... This may take a few minutes. When the process is completed, you can close this modal.": [ "Xifrar i importar contactes... És possible que passi uns quants minuts. Quan el procés s'hagi completat, podeu tancar aquesta modalitat." ], + "Enough room for years of emails, attachments and more.": [ + "Espai suficient per anys de correus electrònics, fitxers adjunts i més." + ], "Ensure secure access to organization data, even if your team is remote or using public WiFi.": [ "Assegureu un accés segur a les dades de l'organització, fins i tot si el vostre equip està remot o utilitza una WiFi pública." ], @@ -5093,12 +5406,12 @@ "How we supported local activists when privacy and free speech were threatened.": [ "Com vam donar suport als activistes locals quan la privacitat i la llibertat d'expressió es van veure amenaçades." ], - "How you reset your ${ BRAND_NAME } password. This will not recover your encrypted data.": [ - "Com restablir la vostra contrasenya de ${ BRAND_NAME }. Això no recuperarà les vostres dades xifrades." - ], "How you unlock your encrypted data if you lose your password.": [ "Com desbloquejar les vostres dades xifrades si perdeu la contrasenya." ], + "If you haven’t already, enable some recovery methods to make sure you never lose access to ${ VPN_APP_NAME }.": [ + "Si encara no ho heu fet, habiliteu alguns mètodes de recuperació per assegurar-vos que mai no perdreu l'accés a ${ VPN_APP_NAME }." + ], "It looks like the contact list you are importing contains some groups. Please review how these groups should be imported.": [ "Sembla que la llista de contactes que esteu important conté alguns grups. Reviseu com s'han d'importar aquests grups." ], @@ -5132,8 +5445,8 @@ "Read, reply, and stay on top of Gmail from within ${ MAIL_APP_NAME }": [ "Llegiu, responeu i estigueu al dia de Gmail des de ${ MAIL_APP_NAME }" ], - "Send a code to your recovery email or phone": [ - "Envieu un codi al vostre correu electrònic o telèfon de recuperació." + "Select which categories you want to add and if you want to receive push notifications for each category.": [ + "Seleccioneu quines categories voleu afegir i si voleu rebre notificacions automàtiques per cada categoria." ], "Set up accounts for all users and invite them to join ${ BRAND_NAME }.": [ "Configureu comptes per a tots els usuaris i convideu-los a unir-se a ${ BRAND_NAME }." @@ -5147,6 +5460,9 @@ "Still need help? Our support team is here for you.": [ "Encara necessiteu ajuda? El nostre equip de suport és a la vostra disposició." ], + "This allows you to regain access to your ${ BRAND_NAME } account but does not recover your encrypted data.": [ + "Això us permet recuperar l'accés al compte de ${ BRAND_NAME }, però no recupera les dades xifrades." + ], "This may happen if permissions were removed or your password changed.": [ "Això podria passar si s'han suprimit els permisos o s'ha canviat la contrasenya." ], @@ -5175,27 +5491,39 @@ "Track the status and activity of your referrals": [ "Feu un seguiment de l'estat i l'activitat de les vostres referències" ], + "Unlock 15 GB of storage for just ${ config.offerPrice }.": [ + "Desbloquegeu 15 GB d'emmagatzematge per només ${ config.offerPrice }." + ], "Upgrade to ${ planName } to connect up to ${ MAX_SYNC_PAID_USER } accounts": [ "Milloreu a ${ planName } per connectar fins a ${ MAX_SYNC_PAID_USER } comptes" ], "Upgrade to get ${ activatePmUser } for a shorter, easy-to-remember email address in addition to your current one.": [ "Milloreu el vostre pla per a obtenir ${ activatePmUser } a fi de disposar d'una adreça de correu electrònic més curta i fàcil de recordar, a més de la vostra actual." ], + "Use a recovery method to reset your password": [ + "Feu servir un mètode de recuperació per restablir la contrasenya" + ], "Use this guide to get your organization promptly benefiting from ${ BRAND_NAME }'s industry-leading encryption and privacy ecosystem.": [ "Utilitzeu aquesta guia per aconseguir que la vostra organització es beneficiï ràpidament de l'ecosistema d'encriptació i privadesa líder del sector del ${ BRAND_NAME }." ], "We can't access ${ boldEmails } anymore.": [ "Ja no podem accedir a ${ boldEmails }." ], + "We will pause imports at 80% storage to reserve space for new messages.": [ + "Aturarem les importacions al 80% de l'emmagatzematge per reservar espai per missatges nous." + ], "We'll bring in your old emails and connect your Gmail to ${ MAIL_APP_NAME } so new messages appear automatically": [ "Importarem els vostres correus antics i connectarem el vostre Gmail a ${ MAIL_APP_NAME } perquè els missatges nous apareguin automàticament" ], - "We've started importing your email from Gmail. We'll let you know when it's done.": [ - "Hem començat a importar els vostres correus de Gmail. Us avisarem en acabar." + "We've started importing your emails from Gmail. We'll let you know when it's done.": [ + "Hem començat a importar els vostres correus electrònics des de Gmail. Us avisarem quan hagi acabat." ], "We’re sorry to see you go. If you have a moment, we’d really appreciate hearing why you’d like to cancel. Your feedback helps us make ${ BRAND_NAME } better for everyone.": [ "Ens sap greu que marxeu. Si teniu un moment, us agrairíem molt que ens diguéssiu per què voleu cancel·lar la subscripció. Els vostres comentaris ens ajuden a fer que ${ BRAND_NAME } sigui millor per a tothom." ], + "With new email categories, only important messages land in your primary inbox. Categories work just like spam filters. ${ MAIL_APP_NAME } never reads your emails or shares your data.": [ + "Amb les noves categories de correu electrònic, només els missatges importants arriben a la vostra safata d'entrada principal. Les categories funcionen exactament com els filtres de correu brossa. ${ MAIL_APP_NAME } mai no llegeix els vostres correus electrònics ni comparteix les vostres dades." + ], "You already have a Gmail address forwarding to ${ MAIL_APP_NAME }. Connect it below to send and receive emails directly from ${ MAIL_APP_NAME }.": [ "Ja teniu una adreça de Gmail que es reenvia a ${ MAIL_APP_NAME }. Connecteu-la a continuació per enviar i rebre correus electrònics directament des de ${ MAIL_APP_NAME }." ], @@ -5221,7 +5549,7 @@ "Ara ja podeu enviar correus electrònics des de ${ BRAND_NAME } utilitzant aquesta adreça." ], "You can still login with this address and re-connect at any time.": [ - "Encara podreu iniciar sessió amb aquesta adreça i tornar-la a connectar en qualsevol moment." + "Encara podeu iniciar sessió amb aquesta adreça i reconnectar en qualsevol moment." ], "You will no longer be able to use ${ address.Email } to receive and send emails in ${ BRAND_NAME }. Also note that messages sent to this address from ${ BRAND_NAME } will no longer be end-to-end encrypted.": [ "Ja no podreu utilitzar ${ address.Email } per rebre i enviar correus electrònics a ${ BRAND_NAME }. Tingueu en compte també que els missatges enviats a aquesta adreça des de ${ BRAND_NAME } ja no estaran xifrats d'extrem a extrem." @@ -5237,6 +5565,12 @@ "You've connected one external account address to ${ MAIL_APP_NAME }.": [ "Heu connectat una adreça d'un compte extern a ${ MAIL_APP_NAME }." ], + "Your free ${ MAIL_APP_NAME } account comes with limited storage so we'll only import ${ newUserStorageText } of your most recent Gmail messages": [ + "El vostre compte gratuït de ${ MAIL_APP_NAME } ve amb emmagatzematge limitat, de manera que només importarem ${ newUserStorageText } dels vostres missatges més recents de Gmail" + ], + "Your free ${ MAIL_APP_NAME } account comes with limited storage so we'll only import your most recent Gmail emails.": [ + "El vostre compte gratuït de ${ MAIL_APP_NAME } ve amb emmagatzematge limitat, de manera que només importarem els vostres correus electrònics més recents de Gmail." + ], "Your plan supports ${ MAX_SYNC_FREE_USER } Gmail address.": [ "El vostre pla admet ${ MAX_SYNC_FREE_USER } adreça de Gmail.", "El vostre pla admet ${ MAX_SYNC_FREE_USER } adreces de Gmail." @@ -5251,6 +5585,11 @@ "utilitzeu l'assistent d'importació Easy Switch" ] }, + "Description for domain modal": { + "Duplicate DMARC record found, go to the DNS console of your domain provider to fix it.": [ + "S'ha trobat un registre DMARC duplicat, aneu a la consola DNS del vostre proveïdor de domini per solucionar-ho." + ] + }, "Description of the purpose of the import CSV modal": { "Also, we have automatically matched CSV fields with vCard fields. You can review and change this matching manually.": [ "També hem aparellat automàticament camps CSV amb camps vCard. Podeu revisar i canviar aquest aparellament manualment." @@ -5674,6 +6013,9 @@ "120m": [ "120 min" ], + "15 minutes": [ + "15 minuts" + ], "30 minutes": [ "30 minuts" ], @@ -6152,12 +6494,12 @@ }, "email_forwarding_2023: Link": { "Learn more": [ - "Per saber-ne més" + "Més informació" ] }, "email_forwarding_2023: Outgoing forwarding tab name": { "To me": [ - "Per mi" + "Per a mi" ] }, "email_forwarding_2023: Placeholder": { @@ -6296,8 +6638,8 @@ "${ user } will not be able to access your account until the next emergency access.": [ "${ user } no podrà accedir al vostre compte fins al següent accés d'emergència." ], - "**${ contact }** is now your recovery contact. They can help you recover your data after a password reset.": [ - "**${ contact }** és ara el vostre contacte de recuperació. Us pot ajudar a recuperar les vostres dades després de restablir la contrasenya." + "**${ contact }** is now your recovery contact. They can help you unlock your data after you reset your password.": [ + "**${ contact }** és ara el vostre contacte de recuperació. Us pot ajudar a desbloquejar les dades després de restablir la contrasenya." ], "**If they confirm**, click **Approve recovery**. This will unlock their encrypted data.": [ "**Si ho confirmen**, feu clic a **Aprovar la recuperació**. Això desbloquejarà les seves dades xifrades." @@ -6326,12 +6668,21 @@ "Add": [ "Afegeix" ], + "Add 1 more": [ + "Afegiu-ne 1 més" + ], "Add emergency contact": [ "Afegeix un contacte d'emergència" ], + "Add option": [ + "Afegiu una opció" + ], "Add recovery contact": [ "Afegiu un contacte de recuperació" ], + "Add recovery method": [ + "Afegir un mètode de recuperació" + ], "Added on ${ formattedDate }": [ "S'ha afegit el ${ formattedDate }" ], @@ -6371,12 +6722,12 @@ "Connect with them to confirm they need help to recover their data.": [ "Poseu-vos-hi en contacte per confirmar que necessiten ajuda per recuperar les seves dades." ], - "Contact-assisted recovery": [ - "Recuperació assistida per contactes" - ], "Contacts": [ "Contactes" ], + "Data recovery contacts": [ + "Contactes de recuperació de dades" + ], "Data successfully recovered. You can now decrypt your existing data and encrypted files.": [ "Les dades s'han recuperat correctament. Ara podreu desxifrar les vostres dades i els fitxers xifrats que tingueu." ], @@ -6422,6 +6773,12 @@ "Enable auto-renew": [ "Habilita la renovació automàtica" ], + "Enter your extra password": [ + "Introduïu la contrasenya addicional" + ], + "Explore plans": [ + "Exploreu els plans" + ], "For ${ email }": [ "Per a ${ email }" ], @@ -6452,16 +6809,10 @@ "Less than a minute left": [ "Queda menys d'un minut" ], - "Let ${ user } know it’s really you trying to regain access.": [ - "Feu saber a ${ user } que sou realment vós qui intenteu recuperar l'accés." - ], "Maximum of ${ limit } contact reached. To change, remove a contact and add a new one.": [ "S'ha arribat al màxim d'${ limit } contacte. Per canviar-ho, esborreu un contacte i afegiu-ne un de nou.", "S'ha arribat al màxim de ${ limit } contactes. Per canviar-ho, esborreu un contacte i afegiu-ne un de nou." ], - "None": [ - "Cap" - ], "Only ": [ "Només " ], @@ -6480,9 +6831,6 @@ "People who trust me": [ "Persones que confien en mi" ], - "People you have added as recovery contacts.": [ - "Persones que heu afegit com a contactes de recuperació." - ], "Proceed anyway": [ "Continueu igualment" ], @@ -6555,14 +6903,11 @@ "Select recovery contact ${ name }": [ "Seleccioneu el contacte de recuperació ${ name }." ], - "Send email request": [ - "Enviar sol·licitud de correu electrònic" - ], "Send recovery request": [ "Envieu la sol·licitud de recuperació" ], - "Set account recovery": [ - "Configureu la recuperació del compte" + "Start recovery": [ + "Començar la recuperació" ], "Stop being recovery contact": [ "Deixeu de ser contacte de recuperació." @@ -6607,8 +6952,8 @@ "Time required before automatically granting them access": [ "Temps necessari abans de concedir-li accés automàticament" ], - "To add and use recovery contact, you must have a password reset option.": [ - "Per afegir i utilitzar un contacte de recuperació, heu de tenir una opció de restabliment de contrasenya." + "To add recovery contacts, you must have a recovery email address or phone number.": [ + "Per afegir contactes de recuperació, heu de tenir una adreça de correu electrònic o un número de telèfon de recuperació." ], "To disable this recovery method, remove all your recovery contacts.": [ "Per desactivar aquest mètode de recuperació, esborreu tots els vostres contactes de recuperació." @@ -6619,6 +6964,9 @@ "Unable to recover data": [ "No s'han pogut recuperar les dades" ], + "Unlock ${ PASS_APP_NAME }": [ + "Desbloquejar ${ PASS_APP_NAME }" + ], "Upgrade": [ "Millora" ], @@ -6640,6 +6988,9 @@ "We received a request to unlock the encrypted data of your contact **${ user }**.": [ "Hem rebut una sol·licitud per desbloquejar les dades xifrades del teu contacte **${ user }**." ], + "We sent an email request to ${ user }. Let them know it's really you trying to regain access.": [ + "Hem enviat una sol·licitud per correu electrònic a ${ user }. Feu-li saber que sou vós qui intenta recuperar l'accés." + ], "We were not able to verify the recovery data. Proceed anyway?": [ "No s'han pogut verificar les dades de recuperació. Voleu continuar igualment?" ], @@ -6969,6 +7320,9 @@ "Invalid invitation link": [ "L'enllaç d'invitació no és vàlid" ], + "Invalid joining link. Please contact your administrator.": [ + "L'enllaç d'unió no és vàlid. Contacteu amb el vostre administrador." + ], "Invalid name": [ "Nom no vàlid" ], @@ -7145,9 +7499,6 @@ "Please try again in a few moments.": [ "Torneu-ho a provar d'aquí a uns moments." ], - "Please upgrade to a business plan with more than 1 user to get multi-user support": [ - "Milloreu a un pla per a empreses amb més d'un usuari per a obtenir suport multiusuari." - ], "Please upgrade to a business plan with more than 1 user to manage multiple users.": [ "Milloreu a un pla per a empreses amb més d'un usuari per a gestionar múltiples usuaris." ], @@ -7290,6 +7641,9 @@ "There are too many folders in your external account. Please customize the import to delete some folders.": [ "Hi ha massa carpetes al vostre compte extern. Personalitzeu la importació per eliminar algunes carpetes." ], + "There was an error, please try again.": [ + "Hi ha hagut un error, torneu-ho a provar." + ], "This field exceeds the maximum of ${ maximumLength } characters.": [ "Aquest camp excedeix el màxim de ${ maximumLength } caràcters." ], @@ -7572,6 +7926,9 @@ "Ask your administrator to enable Account monitor.": [ "Demaneu al vostre administrador que habiliti el monitor del compte." ], + "Enable account monitor to start loading event.": [ + "Habiliteu el monitor del compte per començar a carregar l'esdeveniment." + ], "Error: ${ errorMessage }": [ "Error: ${ errorMessage }" ], @@ -8087,6 +8444,9 @@ "${ PROTON_SENTINEL_NAME } account protection": [ "Protecció de comptes de ${ PROTON_SENTINEL_NAME }" ], + "10+ premium features": [ + "Més de 10 característiques prèmium" + ], "15 GB storage": [ "15 GB d'emmagatzematge" ], @@ -8122,6 +8482,12 @@ "Continue": [ "Continua" ], + "Custom email domain": [ + "Domini de correu electrònic personalitzat" + ], + "Email addresses": [ + "Adreces de correu electrònic" + ], "Encrypted cloud storage for files, photos and documents": [ "Emmagatzematge xifrat al núvol per a fitxers, fotos i documents" ], @@ -8152,6 +8518,9 @@ "Short domain @pm.me": [ "Domini curt @pm.me" ], + "Storage": [ + "Emmagatzematge" + ], "Torrenting support (P2P)": [ "Suport torrent (P2P)" ], @@ -8517,8 +8886,11 @@ ] }, "Force upgrade safety review": { - "I understand that I will no longer be able to sign in to older versions of ${ BRAND_NAME } mobile apps.": [ - "Entenc que ja no podré iniciar la sessió en versions antigues de les aplicacions mòbils de ${ BRAND_NAME }." + "I understand that I will no longer be able to sign in to older versions of ${ BRAND_NAME } apps.": [ + "Entenc que ja no podré iniciar sessió en versions antigues de les aplicacions de ${ BRAND_NAME }." + ], + "Learn more": [ + "Per saber-ne més" ] }, "Form heading": { @@ -8619,6 +8991,9 @@ ], "Group address:": [ "Adreça del grup:" + ], + "Roles and permission:": [ + "Rols i permisos:" ] }, "Group member count": { @@ -8678,6 +9053,14 @@ "Membres del grup" ] }, + "group_modal": { + "General": [ + "General" + ], + "Roles and permissions": [ + "Rols i permisos" + ] + }, "Header": { "Access": [ "Accés" @@ -9321,8 +9704,11 @@ "${ BRAND_NAME } Business plans gives your team all the collaboration tools they need to be productive and organized in their work, while safeguarding your business.": [ "Els plans d'empresa de ${ BRAND_NAME } donen al vostre equip totes les eines de col·laboració que necessiten per ser productius i organitzats en la seva feina, mentre protegeixen el vostre negoci." ], - "${ BRAND_NAME } is independently funded and operates without advertising.
Below are examples of how this independence has been used in practice.": [ - "${ BRAND_NAME } es finança de manera independent i funciona sense publicitat.\nA continuació teniu exemples de com s'ha aplicat aquesta independència a la pràctica." + "${ BRAND_NAME } Free": [ + "${ BRAND_NAME } gratuït" + ], + "${ BRAND_NAME } is independently funded and operates without advertising. Below are examples of how this independence has been used in practice.": [ + "${ BRAND_NAME } es finança de manera independent i funciona sense publicitat. A continuació es mostren exemples de com s'ha aplicat aquesta independència en la pràctica." ], "${ BRAND_NAME } is privacy you can trust, ensured by strong encryption, open-source code, and Swiss privacy laws. We believe nobody should be able to exploit your data, period. Our technology and business are based upon this fundamentally stronger definition of privacy.": [ "${ BRAND_NAME } és privacitat en la qual podeu confiar, garantida per un xifratge fort, de codi obert, i lleis de privacitat suïsses. Creiem que ningú hauria de poder explotar les vostres dades i punt. La nostra tecnologia i el nostre negoci estan basats en aquesta definició fonamentalment més forta de la privacitat." @@ -9336,6 +9722,9 @@ "${ BRAND_NAME } will send a verification code to ${ phoneNumber }. Standard message rates may apply.": [ "${ BRAND_NAME } us enviarà un codi de verificació al número ${ phoneNumber }. Pot ser que es carreguin les tarifes de missatgeria estàndard." ], + "${ BRAND_NAME } will send a verification code to your recovery phone. Standard message rates may apply.": [ + "${ BRAND_NAME } us enviarà un codi de verificació al telèfon de recuperació. Podrien aplicar-se tarifes estàndard de missatgeria." + ], "${ BRAND_NAME }'s encryption technology means that nobody can access your password - not even us.": [ "La tecnologia d'encriptació de ${ BRAND_NAME } significa que ningú pot accedir a la vostra contrasenya, ni tan sols nosaltres." ], @@ -9424,6 +9813,9 @@ "${ name } for Windows": [ "${ name } per a Windows" ], + "${ name } is not available": [ + "${ name } no està disponible" + ], "${ none }: do not quarantine or reject unauthorized emails. Usually, people only use this policy to troubleshoot or test.": [ "${ none }: no posar en quarantena ni rebutjar correus electrònics no autoritzats. Normalment, la gent només utilitza aquesta política per solucionar problemes o fer proves." ], @@ -9545,6 +9937,9 @@ "${ vaultLink } updated": [ "S'ha actualitzat ${ vaultLink }." ], + "${ VPN_SHORT_APP_NAME } hides your traffic. ${ PASS_SHORT_APP_NAME } hides your identity\n— unlimited **hide-my-email aliases** and **dark-web alerts** if your data is ever leaked.": [ + "${ VPN_SHORT_APP_NAME } amaga el vostre trànsit. ${ PASS_SHORT_APP_NAME } amaga la vostra identitat— àlies de **hide-my-email** il·limitats i **alertes de la web fosca** si les vostres dades es filtren." + ], "${ vpnPlus } required for Country level connection.": [ "Es requereix ${ vpnPlus } per a la conexió a nivell de país." ], @@ -9582,6 +9977,9 @@ "(formerly Twitter)": [ "(abansTwitter)" ], + "**${ appName }** is not available for your account.": [ + "**${ appName }** no està disponible per al vostre compte." + ], "**${ appName }** is not supported in your organization **${ organizationName }**.": [ "No s'admet **${ appName }** a la vostra organització **${ organizationName }**." ], @@ -9698,6 +10096,9 @@ "Activity Monitor": [ "Monitor d'activitats" ], + "Add ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }": [ + "Afegiu ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }" + ], "Add ${ PLAN_NAMES[PLANS.MEET_BUSINESS] }": [ "Afegiu ${ PLAN_NAMES[PLANS.MEET_BUSINESS] }" ], @@ -9744,9 +10145,9 @@ "Add your name and logo to create a more personalized experience for your organization.": [ "Afegiu el vostre nom i logo per a crear una experiència més personalitzada per a la vostra organització." ], - "Adding ${ addedServerCount } gateway server": [ - "S'està afegint ${ addedServerCount } servidor de passarel·la", - "S'estan afegint ${ addedServerCount } servidors de passarel·la" + "Adding ${ total } gateway server": [ + "S'està afegint ${ total } servidor de passarel·la", + "S'estan afegint ${ total } servidors de passarel·la" ], "Adding an external email address will disable end-to-end encryption for all email communication within that group. Do you want to proceed?": [ "Si afegiu una adreça de correu electrònic externa, es desactivarà el xifratge d'extrem a extrem per a totes les comunicacions de correu electrònic dins d'aquest grup. Voleu continuar?" @@ -9927,6 +10328,9 @@ "Are you sure you want to revoke certificate **${ name }**": [ "Segur que voleu revocar el certificat **${ name }**?" ], + "Are you sure you want to sign out of this account?": [ + "Segur que voleu tancar la sessió d'aquest compte?" + ], "Are you sure you want to sort your folders alphabetically?": [ "Segur que voleu ordenar les carpetes alfabèticament?" ], @@ -10023,6 +10427,9 @@ "Before you can start sending and receiving emails from your new addresses you need to create encryption keys for them.": [ "Abans que pugueu enviar i rebre missatges des de les noves direccions, necessiteu crear les seves claus de xifrat respectives." ], + "BEST FOR TV": [ + "EL MILLOR PER AL TELEVISOR" + ], "Beta": [ "Beta" ], @@ -10047,9 +10454,6 @@ "By creating a ${ PASS_APP_NAME } account with your SimpleLogin email, you can manage your aliases directly from ${ PASS_APP_NAME }.": [ "En crear un compte ${ PASS_APP_NAME } amb el vostre correu electrònic de SimpleLogin, podeu gestionar els vostres àlies directament des de ${ PASS_APP_NAME }." ], - "By disabling account monitor, you will also clear your entire history. Are you sure you want to disable this?": [ - "Si desactiveu el monitor del compte, també s'eliminarà tot el vostre historial. Segur que voleu desactivar-lo?" - ], "By downgrading to a Free plan, you will permanently lose these benefits, even if you upgrade again in the future.": [ "Si baixeu a un pla gratuït, perdreu per sempre aquests avantatges, fins i tot si en tornareu a actualitzar." ], @@ -10086,9 +10490,6 @@ "Change your password": [ "Canvieu la vostra contrasenya" ], - "Check the status of imports and forwarding.": [ - "Comprova l'estat de les importacions i els enviaments." - ], "Check your network and try again.": [ "Comproveu la xarxa i torneu-ho a provar." ], @@ -10122,6 +10523,9 @@ "CNET editors choice award with a rating of 8.4 out of 10": [ "Premi Editors' Choice de CNET amb una puntuació de 8,4 sobre 10" ], + "Code has been re-sent.": [ + "S'ha tornat a enviar el codi." + ], "Coming soon": [ "Pròximament" ], @@ -10137,6 +10541,9 @@ "Configure SAML authentication for your organization through an identity provider like Okta, Microsoft Azure, or Google Identity Platform. This will enable SAML for the whole organization.": [ "Configureu l'autenticació SAML per a la vostra organització mitjançant un proveïdor d'identitat com Okta, Microsoft Azure o Google Identity Platform. Això activarà SAML per a tota l'organització." ], + "Connect and manage your external mailboxes in ${ MAIL_APP_NAME }.": [ + "Connecteu i gestioneu les vostres bústies de correu externes a ${ MAIL_APP_NAME }." + ], "Connection data will be available in around 1 hour.": [ "Les dades de connexió estaran disponibles en aproximadament 1 hora." ], @@ -10155,6 +10562,9 @@ "Continue to connect this entity with your ${ BRAND_NAME } organization.": [ "Continueu connectant aquesta entitat amb la vostra organització de ${ BRAND_NAME }." ], + "Continue with ${ BRAND_NAME } Free": [ + "Continueu amb la versió gratuïta de ${ BRAND_NAME }" + ], "Continuing will connect your ${ BRAND_NAME } Account to ${ name }.": [ "Si continueu, connectareu el vostre compte de ${ BRAND_NAME } amb ${ name }." ], @@ -10195,9 +10605,9 @@ "Create a new code on your TV and try again.": [ "Creeu un codi nou al vostre televisor i torneu-ho a provar." ], - "Create a secure cloud for ${ value } member": [ - "Crea un núvol segur per a ${ value } membre", - "Crea un núvol segur per a ${ value } membres" + "Create a secure cloud for ${ memberCount } member": [ + "Crea un núvol segur per a ${ memberCount } membre", + "Crea un núvol segur per a ${ memberCount } membres" ], "Create an account": [ "Creeu un compte" @@ -10215,6 +10625,10 @@ "S'està creant un servidor de passarel·la: ${ serverNumber } / ${ total }", "S'estan creant servidors de passarel·la: ${ serverNumber } / ${ total }" ], + "Creating gateway with ${ total } server": [ + "S'està creant la passarel·la amb ${ total } servidor", + "S'està creant la passarel·la amb ${ total } servidors" + ], "Creating your account": [ "S'està creant el compte" ], @@ -10263,6 +10677,9 @@ "Data recoverable with recovery phrase": [ "Podeu recuperar les dades amb la frase de recuperació" ], + "Data recovery requires a password reset option (email or SMS)": [ + "La recuperació de dades requereix una opció de restabliment de contrasenya (correu electrònic o SMS)" + ], "dedicated servers": [ "servidors dedicats" ], @@ -10646,12 +11063,12 @@ "For easy access to your passwords and more.": [ "Per a un accés fàcil a les contrasenyes i més." ], + "For just ${ bundlePlanPriceInline }": [ + "Per només ${ bundlePlanPriceInline }" + ], "For users who are switching to ${ MAIL_APP_NAME } from another email service, select the ${ boldAddresses } tab and add all active email addresses before changing the MX record to ensure a smooth transition.": [ "Per als usuaris que canviïn a ${ MAIL_APP_NAME } des d'un altre servei de correu electrònic, seleccioneu la pestanya ${ boldAddresses } i afegiu totes les adreces de correu electrònic actives abans de canviar el registre MX per assegurar una transició sense problemes." ], - "Forwarding automatically sends new incoming emails to your Inbox.": [ - "El reenviament envia automàticament els nous correus electrònics entrants a la vostra bústia d'entrada." - ], "Free forever": [ "Gratuït per sempre" ], @@ -10679,6 +11096,9 @@ "Gateways": [ "Passarel·les" ], + "Generating a new recovery phrase will deactivate your current recovery phrase.": [ + "La generació d'una nova frase de recuperació desactivarà la vostra frase de recuperació actual." + ], "Generating a new recovery phrase will deactivate your old one.": [ "La generació d’una nova frase de recuperació desactivarà l'antiga." ], @@ -10700,12 +11120,18 @@ "Get notified if your password or other personal data was leaked. ${ learnMoreLinkNoBreach }": [ "Rebeu una notificació si la vostra contrasenya o altres dades personals han estat filtrades. ${ learnMoreLinkNoBreach }" ], + "Get started": [ + "Primers passos" + ], "Get started with the referral link above.": [ "Comenceu amb l'enllaç de recomanació anterior." ], "Get visibility into account access": [ "Obtingueu visibilitat sobre l'accés al compte" ], + "Get VPN Plus": [ + "Obtingueu VPN Plus" + ], "Give the token a descriptive name, such as the service you plan to use it with, and select one of your active custom domain addresses. Only this address will be able to send emails with this token.": [ "Poseu un nom descriptiu al testimoni, com ara el servei amb què teniu previst utilitzar-lo, i seleccioneu una de les vostres adreces de domini personalitzat actives. Només aquesta adreça podrà enviar correus amb aquest testimoni." ], @@ -10912,6 +11338,9 @@ "Include device, location, and IP details": [ "Inclou detalls del dispositiu, la ubicació i l'IP" ], + "Included": [ + "Inclòs" + ], "Increase your account security by verifying your email address.": [ "Augmenteu la seguretat del vostre compte verificant la vostra adreça electrònica." ], @@ -11258,15 +11687,15 @@ "No card required": [ "No cal targeta" ], + "No connected addresses.": [ + "No hi ha cap adreça connectada." + ], "No countries enabled": [ "No hi ha cap país habilitat" ], "No folder selected": [ "No hi ha carpetes seleccionades" ], - "No forwarding history.": [ - "No hi ha cap historial de reenviaments." - ], "No gateways": [ "Sense passarel·les" ], @@ -11330,6 +11759,9 @@ "Only change these settings if you are using PGP with non-${ BRAND_NAME } recipients.": [ "Canvieu aquesta configuració només si utilitzeu PGP amb destinataris que no siguin de ${ BRAND_NAME }." ], + "Only sign in on devices you trust": [ + "Inicieu sessió només en dispositius de confiança" + ], "Only you can see the label": [ "Només vós podeu veure l'etiqueta" ], @@ -11595,6 +12027,9 @@ "Recently used servers:": [ "Servidors utilitzats recentment:" ], + "RECOMMENDED": [ + "RECOMANAT" + ], "Recommended on trusted devices. ${ keepMeSignedInLearnMoreLink }": [ "Recomanat en dispositius de confiança. ${ keepMeSignedInLearnMoreLink }" ], @@ -11757,6 +12192,9 @@ "Set up your organization": [ "Configuració de la vostra organització" ], + "Set up your organization and start protecting your data in a few easy steps.": [ + "Configureu la vostra organització i comenceu a protegir les vostres dades en pocs passos senzills." + ], "Setting successfully saved": [ "S'ha desat la configuració correctament" ], @@ -11794,6 +12232,12 @@ "Show each sender's image in the message list. The sender's initials will be shown if a photo is not available.": [ "Mostra la imatge de cada remitent a la llista de missatges. Es mostraran les inicials del remitent si no hi ha una fotografia disponible." ], + "Show fewer benefits": [ + "Mostra menys avantatges" + ], + "Show more benefits": [ + "Mostra més avantatges" + ], "Show original message": [ "Mostra el missatge original" ], @@ -11839,9 +12283,6 @@ "Something went wrong. Please try again or contact customer support.": [ "Alguna cosa ha anat malament. Torneu-ho a provar o poseu-vos en contacte amb el servei d'atenció al client." ], - "Something went wrong. Please try again.": [ - "Alguna cosa ha anat malament. Torneu-ho a provar." - ], "Specify the domain which is allowed to authenticate with SAML SSO.": [ "Especifiqueu el domini que es pot autenticar amb SSO basat en SAML." ], @@ -11931,6 +12372,9 @@ "TechRadar Pro recommended with a rating of 4.2 out of 5 stars": [ "Recomanat per TechRadar Pro amb una puntuació de 4,2 sobre 5 estrelles" ], + "Temporarily unavailable due to high demand. Please try again later.": [ + "Temporalment no disponible a causa de l'alta demanda. Torneu-ho a provar més tard." + ], "Temporarily unavailable. Please check back later.": [ "No està disponible temporalment. Comproveu-ho de nou més tard." ], @@ -12063,6 +12507,9 @@ "This could take some time. Please do not close this page or disconnect from the internet.": [ "Això pot trigar força temps. No tanqueu aquesta pàgina ni us desconnecteu d'internet." ], + "This data recovery method requires a password reset option (email or SMS)": [ + "Aquest mètode de recuperació de dades requereix una opció de restabliment de contrasenya (correu electrònic o SMS)" + ], "This feature delays sending your emails, giving you the opportunity to undo send during the selected time frame.": [ "Aquesta funció retarda l'enviament dels vostres correus electrònics, donant-vos l'oportunitat de desfer l'enviament durant el període de temps seleccionat." ], @@ -12123,6 +12570,9 @@ "This verification can take up to one hour. After successful verification, do not remove the TXT record as it is needed to confirm that you continue to own the domain.": [ "Aquesta verificació pot trigar fins a una hora. Després d'una verificació correcta, no suprimiu el registre TXT, ja que és necessari per confirmar que continueu sent el propietari del domini." ], + "This will allow the TV to access your ${ BRAND_NAME } account.": [ + "Això permetrà que el televisor accedeixi al vostre compte de ${ BRAND_NAME }" + ], "This will delete all previous versions of your files older than ${ rententionLabel }.": [ "Això eliminarà totes les versions anteriors dels vostres fitxers més antigues de ${ rententionLabel }." ], @@ -12219,8 +12669,8 @@ "To decrypt and view your locked data after a password reset, select a recovery method.": [ "Per a desxifrar i veure les dades bloquejades després d'un restabliment de contrasenya, seleccioneu un mètode de recuperació." ], - "To ensure the highest possible security of your account, disable **QR code sign-in**.": [ - "Per garantir la màxima seguretat possible del vostre compte, desactiveu l'**inici de sessió amb codi QR**." + "To enable post-quantum protection, you’ll need to finish generating your new post-quantum encryption keys.": [ + "Per habilitar la protecció postquàntica haureu d'acabar de generar les noves claus de xifratge postquàntic." ], "To ensure the highest possible security of your account, disable **Recovery by recovery email**.": [ "Per garantir la màxima seguretat possible del vostre compte, desactiveu **Recuperació mitjançant correu electrònic de recuperació**." @@ -12228,18 +12678,12 @@ "To ensure the highest possible security of your account, disable **Recovery by recovery phone**.": [ "Per garantir la màxima seguretat possible del vostre compte, desactiveu **Recuperació mitjançant telèfon de recuperació**." ], - "To ensure the highest possible security of your account, disable **Signed-in reset**.": [ - "Per garantir la màxima seguretat possible del vostre compte, desactiveu el **Restabliment amb la sessió iniciada**." - ], "To ensure you don’t lose important data, ${ DRIVE_APP_NAME } saves older versions of your files as you and your collaborators make changes. Select how long ${ BRAND_NAME } should keep previous versions.": [ "Per assegurar-vos que no perdeu dades importants, ${ DRIVE_APP_NAME } desa versions anteriors dels vostres fitxers a mesura que vós i els vostres col·laboradors hi feu canvis. Seleccioneu quant de temps ${ BRAND_NAME } hauria de mantenir les versions anteriors." ], "To fight spam and abuse, please verify you are human.": [ "Per lluitar contra el correu brossa i l'abús, verifiqueu que sou humà." ], - "To help keep your account safe, we want to make sure it's really you trying to sign in.": [ - "Per ajudar-vos a mantenir el compte segur, ens volem assegurar que sou realment vós qui intenteu iniciar sessió." - ], "To help keep your account safe, we want to make sure it’s really you trying to sign in.": [ "Per ajudar-vos a mantenir el compte segur, ens volem assegurar que sou realment vós qui intenteu iniciar sessió." ], @@ -12333,6 +12777,9 @@ "Unless you sign out of your account or change your password, your session will remain active. Sessions expire after 60 days of inactivity.": [ "Tret que tanqueu la sessió del vostre compte o canvieu la vostra contrasenya, la vostra sessió es mantindrà activa. Les sessions expiraran després de 30 dies d'inactivitat." ], + "Unlock streaming with VPN Plus.": [ + "Desbloquegeu la reproducció en continu amb VPN Plus" + ], "Unsaved changes": [ "Canvis no desats" ], @@ -12348,9 +12795,15 @@ "Unverified email address.": [ "No s'ha verificat l'adreça de correu electrònic." ], + "Upgrade anytime to bring over the rest": [ + "Milloreu el pla en qualsevol moment per portar la resta" + ], "Upgrade now to get premium features, products and storage at a special price": [ "Milloreu ara per obtenir característiques prèmium, productes i emmagatzematge a un preu especial" ], + "Upgrade or clear space anytime to bring over the rest": [ + "Milloreu de pla o allibereu espai en qualsevol moment per portar la resta" + ], "Upgrade to add a shorter @pm.me address to your account that is easier to share. It stands for “${ MAIL_APP_NAME } me” or “Private Message me”.": [ "Milloreu de pla per afegir al vostre compte una adreça @pm.me més curta que sigui més fàcil de compartir. Vol dir \"${ MAIL_APP_NAME } me\" o \"Private Message me\"." ], @@ -12480,6 +12933,9 @@ "Visa Secure logo": [ "Logo de Visa Secure" ], + "VPN Plus": [ + "VPN Plus" + ], "VPN with dedicated servers and IP addresses": [ "VPN amb adreces IP i servidors dedicats" ], @@ -12733,9 +13189,6 @@ "You can edit this once to ensure the correct email address for verification.": [ "Podeu editar-ho una vegada per a assegurar-vos que l'adreça de correu electrònic utilitzada per a la verificació és correcta." ], - "You can enable the Photos section from the interface using the toggle below.": [ - "Podeu activar la secció Fotos des de la interfície utilitzant el commutador següent." - ], "You can enforce the password rules members of your organization will use when they create or reset the password to their ${ BRAND_NAME } Account.": [ "Podeu aplicar les regles de contrasenya que els membres de la vostra organització utilitzaran quan creïn o restableixin la contrasenya del seu compte de ${ BRAND_NAME }." ], @@ -13025,8 +13478,8 @@ "Your recovery phrase is a series of 12 randomly generated words in a specific order.": [ "La vostra frase de recuperació és una sèrie de 12 paraules generades aleatòriament en un ordre específic." ], - "Your recovery phrase—contained in your Recovery Kit—will allow you to sign in and recover your data if you get locked out of your ${ BRAND_NAME } Account. It’s is composed of 12 words and acts like a backup password.": [ - "La frase de recuperació, inclosa al vostre paquet de recuperació, us permetrà iniciar sessió i recuperar les vostres dades si us quedeu sense accés al vostre compte de ${ BRAND_NAME }. Està composta per 12 paraules i actua com una contrasenya de seguretat." + "Your recovery phrase will allow you to sign in and recover your data if you get locked out of your ${ BRAND_NAME } Account. It is composed of 12 words and acts like a backup password.": [ + "La vostra frase de recuperació us permetrà iniciar la sessió i recuperar les vostres dades si perdeu l'accés al vostre compte de ${ BRAND_NAME }. Està composta per 12 paraules i actua com una contrasenya de seguretat." ], "Your scheduled plan starts on ${ renewalTime } and will auto-renew every ${ cycle } month.": [ "El vostre pla programat comença el ${ renewalTime } i es renovarà automàticament cada ${ cycle } mes.", @@ -13673,6 +14126,9 @@ "${ PROTON_SENTINEL_NAME } protection": [ "Protecció de ${ PROTON_SENTINEL_NAME }" ], + "${ value.length }/${ maxLength } characters": [ + "${ value.length }/${ maxLength } caràcters" + ], "(Temporarily unavailable. Please check back later.)": [ "(No disponible temporalment. Comproveu-ho de nou més tard.)" ], @@ -14066,6 +14522,9 @@ "Confirm login password": [ "Confirma la contrasenya d'inici de sessió" ], + "Confirm MX records added": [ + "Confirmeu que s'han afegit els registres MX" + ], "Confirm new password": [ "Confirmi la nova contrasenya" ], @@ -14268,6 +14727,9 @@ "Enable ${ DARK_WEB_MONITORING_NAME } for ${ domain.DomainName }": [ "Habiliteu ${ DARK_WEB_MONITORING_NAME } per a ${ domain.DomainName }" ], + "Enable categories": [ + "Habilitar les categories" + ], "Enabled": [ "Habilitat" ], @@ -14415,6 +14877,9 @@ "Highest VPN speed": [ "Velocitat de VPN màxima" ], + "Host name": [ + "Nom del servidor" + ], "I understand that I'll need to add this email address to the other account immediately, to avoid losing this address permanently.": [ "Entenc que he d'afegir aquesta adreça de correu electrònic a l'altre compte immediatament per a evitar perdre-la de manera permanent." ], @@ -14607,6 +15072,9 @@ "Must have at least ${ MIN_PASSWORD_LENGTH } characters": [ "Ha de tenir com a mínim ${ MIN_PASSWORD_LENGTH } caràcters" ], + "MX records": [ + "Registres MX" + ], "Name": [ "Nom" ], @@ -14683,7 +15151,7 @@ "Disponible només amb els plans de pagament de ${ PASS_SHORT_APP_NAME }" ], "Open-source code": [ - "Codi de font obert" + "Codi obert" ], "OpenVPN password": [ "Contrasenya d'OpenVPN" @@ -14745,6 +15213,9 @@ "Pending": [ "Pendent" ], + "Personal and work emails, plus important updates and notifications": [ + "Correus electrònics personals i de la feina, a més d'actualitzacions i notificacions importants" + ], "Phone number": [ "Número de telèfon" ], @@ -14787,6 +15258,9 @@ "Primary": [ "Principal" ], + "Priority": [ + "Prioritat" + ], "Priority support": [ "Suport prioritari" ], @@ -15205,6 +15679,9 @@ "Yes, I want to permanently delete this account and all its data.": [ "Sí, vull suprimir definitivament aquest compte i totes les seves dades." ], + "You don't have permissions": [ + "No teniu permisos" + ], "Your activation code:": [ "El vostre codi d'activació:" ], @@ -15254,6 +15731,9 @@ ], "Recovery phrase": [ "Frase de recuperació" + ], + "Set recovery phone number": [ + "Configureu el número de telèfon de recuperació" ] }, "Label (begin date/advanced search)": { @@ -15295,6 +15775,26 @@ "Afegiu el següent registre TXT. Recordeu que els registres DNS poden trigar diverses hores a actualitzar-se." ] }, + "Label for domain setup": { + "${ capitalizedGroup } record not found": [ + "No s'ha trobat el registre ${ capitalizedGroup }" + ], + "Host name": [ + "Nom del servidor" + ], + "Invalid ${ group.name } record found": [ + "S'ha trobat un registre de ${ group.name } no vàlid" + ], + "Type": [ + "Tipus" + ], + "Use default value": [ + "Feu servir el valor per defecte" + ], + "Valid ${ group.name } record found": [ + "S'ha trobat un registre ${ group.name } vàlid" + ] + }, "Label for new member": { "Admin": [ "Administrador" @@ -15460,6 +15960,9 @@ "data recovery option": [ "opció de recuperació de dades" ], + "Detailed instructions": [ + "Instruccions detallades" + ], "Details": [ "Detalls" ], @@ -15984,21 +16487,45 @@ "Built-in chat": [ "Xat integrat" ], + "Cloud storage and file sharing": [ + "Emmagatzematge al núvol i compartició d'arxius" + ], + "Data retention policies": [ + "Polítiques de conservació de dades" + ], + "Document and spreadsheet editor": [ + "Editor de documents i de fulls de càlcul" + ], + "Email writing assistant": [ + "Assistent d'escriptura de correus electrònics" + ], "End-to-end encrypted screen sharing and ephemeral in-call chat": [ "Compartició de pantalla xifrada d’extrem a extrem i xat efímer durant la trucada" ], "Hosts can record meetings locally on their computers": [ "Els amfitrions poden gravar reunions localment als seus ordinadors" ], + "Includes Meet Professional": [ + "Inclou Meet Professional" + ], "Meeting recording": [ "Enregistrament de la reunió" ], "One active meeting at a time": [ "Una reunió activa alhora" ], + "Password manager with team vaults": [ + "Gestor de contrasenyes amb caixes fortes d'equip" + ], + "Private AI Chat (${ LUMO_SHORT_APP_NAME })": [ + "Xat d'IA privat (${ LUMO_SHORT_APP_NAME })" + ], "Screen-sharing": [ "Compartir pantalla" ], + "Secure mail and calendar": [ + "Correu i calendari segurs" + ], "Unlimited meetings per day": [ "Reunions il·limitades per dia" ], @@ -16013,6 +16540,9 @@ "Video meetings, ${ n } participant": [ "Videoconferències, ${ n } participant", "Videoconferències, ${ n } participants" + ], + "VPN with ad-blocker and malware protection": [ + "VPN amb bloqueig d’anuncis i protecció contra programari maliciós" ] }, "meet_2025: Info": { @@ -16682,6 +17212,9 @@ "99.95% SLA": [ "SLA del 99,5%" ], + "Access all countries": [ + "Accediu a tots els països" + ], "Activity logs and policy": [ "Registres d'activitat i política" ], @@ -16703,6 +17236,9 @@ "Advanced network security": [ "Seguretat de xarxa avançada" ], + "Advanced workspace security": [ + "Seguretat avançada de l'espai de treball" + ], "All ${ BRAND_NAME } products and features": [ "Tots els productes i funcions de ${ BRAND_NAME }" ], @@ -16861,6 +17397,9 @@ "Multiple admin roles": [ "Múltiples rols d'administració" ], + "No streaming support": [ + "No hi ha suport per la reproducció en continu" + ], "No-logs policy": [ "Política de no registres" ], @@ -17027,6 +17566,9 @@ "Unlimited volume/bandwidth": [ "Sense límit de volum / amplada de banda" ], + "Unlock streaming": [ + "Desbloquegeu la reproducció en continu" + ], "Up to ${ n } user": [ "Fins a ${ n } usuari", "Fins a ${ n } usuaris" @@ -17501,6 +18043,10 @@ ] }, "new_plans: Upsell attribute": { + "${ n } country": [ + "${ n } país", + "${ n } països" + ], "Access advanced VPN features": [ "Accediu a característiques de VPN avançades" ], @@ -17562,8 +18108,8 @@ "${ app } product updates": [ "Actualitzacions de producte per a ${ app }" ], - "${ BRAND_NAME } for Business newsletter": [ - "Butlletí de ${ BRAND_NAME } for Business" + "${ BRAND_NAME } for Business communications": [ + "${ BRAND_NAME } per a comunicacions d'empresa" ], "${ BRAND_NAME } important announcements": [ "Anuncis importants de ${ BRAND_NAME }" @@ -17616,8 +18162,8 @@ "During your first month of using a ${ BRAND_NAME } product": [ "Durant el primer mes d'ús d'un producte de ${ BRAND_NAME }" ], - "Email subscriptions": [ - "Subscripcions per correu electrònic" + "Email communications": [ + "Comunicacions per correu electrònic" ], "In-app notifications": [ "Notificacions dins l'aplicació" @@ -18208,6 +18754,9 @@ "Plain text": [ "Text sense format" ], + "Push notifications": [ + "Notificacions automàtiques" + ], "Receive from all": [ "Rep de tots" ], @@ -18704,14 +19253,14 @@ "per month, billed every two years": [ "al mes amb facturació cada dos anys" ], - "Preparing your Recovery Kit": [ - "S'està preparant el vostre kit de recuperació" + "Preparing your recovery phrase": [ + "S'està preparant la frase de recuperació" ], "Protected by Swiss privacy laws": [ "Protegit per les lleis de privacitat suïsses" ], - "Save your recovery kit to continue": [ - "Deseu el vostre kit de recuperació per continuar" + "Save your recovery phrase to continue": [ + "Deseu la frase de recuperació per continuar" ], "Secure vault sharing": [ "Compartició segura de caixes fortes" @@ -19431,6 +19980,9 @@ "Search for an email or IP address": [ "Busqueu un correu electrònic o una adreça IP" ], + "Search for users or addresses": [ + "Cercar un usuari o adreça" + ], "Search parent folder": [ "Cerca la carpeta principal" ], @@ -19580,18 +20132,18 @@ ] }, "PQC account key generation": { - "Couldn’t generate keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\n${ settingsLink } and select 'Generate key' for your account and for each address.": [ - "No s'han pogut generar les claus. Per activar la protecció postquàntica, haureu de generar les vostres noves claus de xifratge manualment.\n\n${ settingsLink } i seleccioneu \"Genera clau\" per al vostre compte i per a cada adreça." + "Couldn’t generate keys. To activate post-quantum protection, you’ll need to finish generating your new post-quantum encryption keys.\n\n${ goToSettingsLink } and select 'Generate missing keys'.": [ + "No s'han pogut generar les claus. Per activar la protecció postquàntica, haureu d'acabar de generar les noves claus de xifratge postquàntic.\n\n${ goToSettingsLink } i seleccioneu \"Generar les claus que falten\"." ] }, "PQC adress key generation": { - "Couldn’t generate address keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\nGo to ${ settingsLink } and select 'Generate key' for each address.": [ - "No s'han pogut generar les claus d'adreça. Per activar la protecció postquàntica, haureu de generar les noves claus de xifratge manualment.\\n\\nAneu a ${ settingsLink } i seleccioneu 'Generar clau' per a cada adreça." + "Couldn’t generate address keys. To activate post-quantum protection, you’ll need to finish generating your new post-quantum encryption keys for each address.\n\n${ goToSettingsLink } and select 'Generate missing keys'.": [ + "No s'han pogut generar les claus d'adreça. Per activar la protecció postquàntica, haureu d'acabar de generar les vostres noves claus de xifratge postquàntic per cada adreça.\n\n${ goToSettingsLink } i seleccioneu \"Genera les claus que falten\"." ] }, "PQC compatibility warning": { - "**You must update all ${ BRAND_NAME } mobile apps**: your new keys won't work on older app versions.": [ - "**Heu d'actualitzar totes les aplicacions mòbils de ${ BRAND_NAME }**: les vostres noves claus no funcionaran en versions antigues de l'aplicació." + "**You must update all ${ BRAND_NAME } apps**: your new keys won't work on older app versions.": [ + "**Cal que actualitzeu totes les aplicacions de ${ BRAND_NAME }**: les vostres claus noves no funcionaran en versions anteriors de les aplicacions." ] }, "PQC key generation": { @@ -19627,7 +20179,7 @@ }, "pqc-optin: Action": { "Close": [ - "Tanqueu" + "Tanca" ], "Got it": [ "Entesos" @@ -19817,8 +20369,8 @@ "Add more options for stronger protection": [ "Afegiu més opcions per a una protecció més robusta" ], - "Add options to avoid getting locked out of your account.": [ - "Afegiu opcions per evitar quedar-vos sense accés al compte." + "Add more options to avoid getting locked out of your account.": [ + "Afegiu més opcions per evitar perdre l'accés al vostre compte." ], "Awesome. Keep your options up-to-date for stronger protection.": [ "Genial. Mantingueu les vostres opcions actualitzades per una protecció més robusta." @@ -19832,12 +20384,21 @@ "How you increased your account protection": [ "Com heu augmentat la protecció del vostre compte" ], + "Inactive recovery options": [ + "Les opcions de recuperació no estan actives" + ], "Maximum": [ "Màxim" ], "Partial": [ "Parcial" ], + "Recovery score: ${ score }": [ + "Puntuació de recuperació: ${ score }" + ], + "Require verified password reset option (email or SMS)": [ + "Cal una opció de restabliment de contrasenya verificada (correu electrònic o SMS)" + ], "Score: ${ score } / ${ maxScore }": [ "Puntuació: ${ score } / ${ maxScore }" ], @@ -19879,13 +20440,13 @@ "Download recovery file": [ "Descarregueu el fitxer de recuperació" ], - "Email verification enabled": [ - "S'ha habilitat la verificació per correu electrònic" + "Email recovery enabled": [ + "S'ha activat la recuperació per correu electrònic" ], "Emergency contacts added": [ "S'han afegit els contactes d'emergència" ], - "Enable recovery by email": [ + "Enable email recovery": [ "Habiliteu la recuperació per correu electrònic" ], "Enable recovery by phone": [ @@ -19897,6 +20458,9 @@ "Password verified": [ "S'ha verificat la contrasenya" ], + "Phone recovery enabled": [ + "S'ha activat la recuperació per telèfon" + ], "Recovery contacts added": [ "S'han afegit els contactes de recuperació" ], @@ -19912,9 +20476,6 @@ "Sign-in with QR code allowed": [ "S'ha permès l'inici de sessió amb codi QR" ], - "SMS verification enabled": [ - "S'ha habilitat la verificació per SMS" - ], "Verify password": [ "Verifiqueu la contrasenya" ], @@ -19937,6 +20498,9 @@ ] }, "RecoveryPhrase: Info": { + "**Make sure you keep your recovery phrase accessible after creating it.** For security reasons, we do not store the phrase after saving your changes, and you won’t be able to see it again in the ${ BRAND_NAME } app.": [ + "**Assegureu-vos de mantenir la vostra frase de recuperació accessible després de crear-la**. Per motius de seguretat, no la guardem un cop hàgiu desat els canvis i no la podreu tornar a veure a l'aplicació ${ BRAND_NAME }." + ], "copy recovery phrase": [ "copia la frase de recuperació" ], @@ -19958,14 +20522,11 @@ "Or ${ downloadRecoveryKitSwitchButton } instead.": [ "O ${ downloadRecoveryKitSwitchButton } en el seu lloc." ], - "Your **Recovery Kit** lets you restore your ${ BRAND_NAME } Account if you’re locked out.": [ - "El **kit de recuperació** us permet restaurar el vostre compte de ${ BRAND_NAME } si us quedeu bloquejat." + "Your **recovery phrase** lets you restore your ${ BRAND_NAME } Account if you’re locked out.": [ + "La **frase de recuperació** us permet restaurar el compte de ${ BRAND_NAME } si en perdeu l'accés." ] }, "RecoveryPhrase: Title": { - "Save your Recovery Kit": [ - "Deseu el vostre kit de recuperació" - ], "Save your recovery phrase": [ "Deseu la vostra frase de recuperació" ] @@ -20358,8 +20919,8 @@ "Back to Safety Review": [ "Torna a la revisió de seguretat" ], - "Because you reset your password, your current Recovery Kit can only be used to recover the data created before your password reset.": [ - "Com que vau restablir la contrasenya, el kit de recuperació actual només es pot utilitzar per recuperar les dades creades abans de restablir la contrasenya." + "Because you reset your password, your current recovery phrase can only be used to recover the data created before your password reset.": [ + "Com que heu restablert la contrasenya, la frase de recuperació actual només la podreu fer servir per recuperar les dades creades abans del restabliment de la contrasenya." ], "Can be used to regain access to your account and data": [ "Es pot utilitzar per recuperar l'accés al vostre compte i a les vostres dades." @@ -20388,8 +20949,8 @@ "Download ${ size }": [ "Descarrega ${ size }" ], - "Download your Recovery Kit": [ - "Descarregueu el vostre kit de recuperació" + "Download your recovery phrase": [ + "Descarregar la frase de recuperació" ], "Email address": [ "Adreça de correu electrònic" @@ -20403,8 +20964,8 @@ "Enable recovery by phone": [ "Activa la recuperació per telèfon" ], - "I understand that I will not be able to recover currently locked data with this Recovery Kit": [ - "Entenc que no podré recuperar les dades bloquejades actualment amb aquest kit de recuperació." + "I understand that I will not be able to recover currently locked data with this recovery phrase": [ + "Entenc que no podré recuperar les dades actualment bloquejades amb aquesta frase de recuperació" ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in on this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Si oblideu la contrasenya de ${ BRAND_NAME } i necessiteu restablir-la, la pròxima vegada que inicieu sessió en aquest dispositiu amb la nova contrasenya, es restaurarà l'accés total al vostre compte de ${ BRAND_NAME }." @@ -20412,8 +20973,8 @@ "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Si oblideu la contrasenya de ${ BRAND_NAME } i necessiteu restablir-la, la pròxima vegada que inicieu sessió en aquest dispositiu amb la contrasenya nova, es restaurarà l'accés total al compte de ${ BRAND_NAME }." ], - "If you get locked out of your ${ BRAND_NAME } Account, your Recovery Kit will allow you to sign in and recover your data.": [ - "Si se us bloqueja el compte de ${ BRAND_NAME }, el vostre kit de recuperació us permetrà iniciar la sessió i recuperar les dades." + "If you get locked out of your ${ BRAND_NAME } Account, your recovery phrase will allow you to sign in and recover your data.": [ + "Si perdeu l'accés al compte de ${ BRAND_NAME }, la frase de recuperació us permetrà iniciar la sessió i recuperar les vostres dades." ], "If you lose your login details and need to reset your account, **it’s imperative** that you have both an **account recovery and data recovery method** in place, otherwise you might not be able to access any of your emails, contacts, files or passwords.": [ "Si perdeu les dades d'inici de sessió i necessiteu restablir el compte, **és imprescindible** que tingueu un **mètode de recuperació del compte i de les dades**. En cas contrari, és possible que no pugueu accedir a cap dels vostres correus electrònics, contactes, fitxers o contrasenyes." @@ -20457,8 +21018,8 @@ "Take action to secure your account": [ "Preneu mesures per protegir el vostre compte." ], - "There was an error generating your Recovery Kit": [ - "S'ha produït un error en generar el vostre kit de recuperació." + "There was an error generating your recovery phrase": [ + "S'ha produït un error en generar la frase de recuperació" ], "There was an error verifying your email": [ "S'ha produït un error en verificar el vostre correu" @@ -20487,11 +21048,11 @@ "to recover your account if you're ever locked out": [ "per recuperar el vostre compte si ja no hi teniu accés." ], - "Update your Recovery Kit": [ - "Actualitzeu el kit de recuperació" + "Update your recovery phrase": [ + "Actualitzeu la vostra frase de recuperació" ], - "Update your Recovery Kit?": [ - "Voleu actualitzar el kit de recuperació?" + "Update your recovery phrase?": [ + "Voleu actualitzar la frase de recuperació?" ], "Verify": [ "Verifica" @@ -20508,8 +21069,8 @@ "Verify your recovery phone number": [ "Verifiqueu el vostre número de telèfon de recuperació" ], - "We encountered an error while generating your Recovery Kit. Please try again later, or contact support if the issue continues.": [ - "Hem trobat un error en generar el vostre kit de recuperació. Torneu-ho a provar més tard o poseu-vos en contacte amb el servei d'atenció al client si el problema continua." + "We encountered an error while generating your recovery phrase. Please try again later, or contact support if the issue continues.": [ + "Hem trobat un error en generar la frase de recuperació. Torneu-ho a provar més tard o contacteu amb el servei de suport si el problema persisteix." ], "We encountered an error while verifying your email. Please try again later, or contact support if the issue continues.": [ "Hi ha hagut un error en verificar el vostre correu. Torneu-ho a provar més tard o poseu-vos en contacte amb el servei d'atenció al client si el problema continua." @@ -20532,8 +21093,8 @@ "You can disable this at any time.": [ "Podeu desactivar això en qualsevol moment." ], - "You can use the recovery phrase in this Recovery Kit to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ - "Podeu utilitzar la frase de recuperació d'aquest kit de recuperació per restaurar completament el vostre compte quan restabliu la contrasenya, així que assegureu-vos de mantenir-la en un lloc segur." + "You can use the recovery phrase in this recovery phrase to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ + "Podeu fer servir la frase de recuperació d'aquest fitxer per restaurar completament el vostre compte quan restabliu la vostra contrasenya; per tant, assegureu-vos de guardar-la en un lloc segur." ], "You can use your email to regain access to your account if you forget your password.": [ "Podeu utilitzar el correu per recuperar l'accés al vostre compte si oblideu la contrasenya." @@ -20544,8 +21105,8 @@ "You can use your recovery phone to regain access to your account if you forget your password.": [ "Podeu utilitzar el vostre telèfon de recuperació per recuperar l'accés al vostre compte si oblideu la contrasenya." ], - "You have previously downloaded a Recovery Kit. Downloading a new one will **deactivate the old one**.": [ - "Abans heu baixat un kit de recuperació. Descarregar-ne un de nou **desactivarà l'antic**." + "You have previously downloaded a recovery phrase. Downloading a new one will **deactivate the old one**.": [ + "Anteriorment heu descarregat una frase de recuperació. Descarregar-ne una de nova **desactivarà l'anterior**." ], "You have recommended actions to safeguard your account further.": [ "Teniu accions recomanades per protegir el compte encara més." @@ -20610,12 +21171,6 @@ "Your recovery email is set": [ "El vostre correu electrònic de recuperació està configurat." ], - "Your Recovery Kit": [ - "Kit de recuperació" - ], - "Your Recovery Kit is set": [ - "El vostre kit de recuperació està configurat." - ], "Your recovery methods": [ "Els vostres mètodes de recuperació" ], @@ -20636,6 +21191,242 @@ ], "Your recovery phone number is:": [ "El número de telèfon de recuperació és:" + ], + "Your recovery phrase": [ + "La vostra frase de recuperació" + ], + "Your recovery phrase is set": [ + "S'ha definit la vostra frase de recuperació" + ] + }, + "safety_review": { + "${ BRAND_NAME } Account email": [ + "Correu electrònic del compte de ${ BRAND_NAME }" + ], + "Account protection": [ + "Protecció del compte" + ], + "Add": [ + "Afegiu" + ], + "Add an emergency contact": [ + "Afegir un contacte d'emergència" + ], + "Add emergency contacts": [ + "Afegiu contactes d'emergència" + ], + "Add options": [ + "Afegir opcions" + ], + "Add people who you trust and can contact easily. Your emergency contact will be able to access your account and reset your password for you if needed.": [ + "Afegiu persones en qui confieu i que hi pugueu contactar fàcilment. El vostre contacte d'emergència podrà accedir al compte i restablir-vos la contrasenya si cal." + ], + "Add people you trust and can contact easily. They will be able to help you unlock your data after you reset your password.": [ + "Afegiu persones de confiança amb qui pugueu contactar fàcilment. Us podran ajudar a desbloquejar les vostres dades després de restablir la contrasenya." + ], + "Add phone number": [ + "Afegiu un número de telèfon" + ], + "Add recovery contacts": [ + "Afegiu contactes de recuperació" + ], + "Add recovery email": [ + "Afegiu un correu electrònic de recuperació" + ], + "Add recovery phone": [ + "Afegiu un telèfon de recuperació" + ], + "Added emergency contacts": [ + "S'han afegit els contactes d'emergència" + ], + "Added recovery contacts": [ + "S'han afegit els contactes de recuperació" + ], + "Added recovery email": [ + "S'ha afegit el correu electrònic de recuperació" + ], + "Added recovery phone": [ + "S'ha afegit el telèfon de recuperació" + ], + "Allow": [ + "Permetre-ho" + ], + "Allow data recovery from this device": [ + "Permeteu la recuperació de dades des d'aquest dispositiu" + ], + "Allow password reset from the settings": [ + "Permeteu el restabliment de la contrasenya des de les preferències" + ], + "Allow recovery by email": [ + "Permeteu la recuperació per correu electrònic" + ], + "Allow recovery by phone": [ + "Permetre la recuperació per telèfon" + ], + "Allow scanning a QR code to sign in": [ + "Permetre l'escaneig d'un codi QR per iniciar sessió" + ], + "Allow trusted friends to unlock your data": [ + "Permeteu que amistats de confiança desbloquegin les vostres dades" + ], + "Back to ${ backLink.appNameString }": [ + "Torneu a ${ backLink.appNameString }" + ], + "Congratulations": [ + "Enhorabona" + ], + "Didn’t receive it? ${ sendANewCode }": [ + "No l'heu rebut? ${ sendANewCode }" + ], + "Done": [ + "Fet" + ], + "Download": [ + "Descarregar" + ], + "Download recovery file": [ + "Descarregueu el fitxer de recuperació" + ], + "Downloaded recovery file": [ + "S'ha descarregat el fitxer de recuperació" + ], + "Emergency contacts enabled": [ + "S'han activat els contactes d'emergència" + ], + "Enable device recovery": [ + "Habiliteu la recuperació del dispositiu" + ], + "Enable email recovery": [ + "Habiliteu la recuperació per correu electrònic" + ], + "Enable emergency contacts": [ + "Habiliteu els contactes d'emergència" + ], + "Enable password reset from settings": [ + "Habiliteu el restabliment de contrasenya des de les preferències" + ], + "Enable phone recovery": [ + "Habiliteu la recuperació per telèfon" + ], + "Enable QR code sign-in": [ + "Activeu l'inici de sessió amb codi QR" + ], + "Enabled device recovery": [ + "S'ha activat la recuperació del dispositiu" + ], + "Enabled email recovery": [ + "S'ha activat la recuperació per correu electrònic" + ], + "Enabled password reset from settings": [ + "S'ha activat el restabliment de contrasenya des de les preferències" + ], + "Enabled phone recovery": [ + "S'ha habilitat la recuperació per telèfon" + ], + "Enabled QR code sign-in": [ + "S'ha activat l'inici de sessió amb codi QR" + ], + "Got it": [ + "Entesos" + ], + "Here's how you increased your account protection:": [ + "Aquí teniu com heu augmentat la protecció del vostre compte:" + ], + "If you forget your password, you can sign in using a QR code. All you need is to be signed in to a ${ BRAND_NAME } service on another device.": [ + "Si oblideu la contrasenya, podeu iniciar sessió mitjançant un codi QR. Només cal que hàgiu iniciat sessió en un servei de ${ BRAND_NAME } en un altre dispositiu." + ], + "If you get locked out of your ${ BRAND_NAME } Account, it will allow you to sign in and recover your data. It’s the only way to instantly restore everything, so make sure you keep it somewhere safe.": [ + "Si perdeu l'accés al vostre compte de ${ BRAND_NAME }, això us permetrà iniciar sessió i recuperar les dades. És l'única manera de restaurar-ho tot a l'instant, així que assegureu-vos de desar-ho en un lloc segur." + ], + "Later": [ + "Més tard" + ], + "Protect your legacy with Emergency Access": [ + "Protegiu el vostre llegat amb l'accés d'emergència" + ], + "Save recovery phrase": [ + "Deseu la frase de recuperació" + ], + "Saved recovery phrase": [ + "S'ha desat la frase de recuperació" + ], + "They must already have a ${ BRAND_NAME } Account.": [ + "Cal que tinguin un compte de ${ BRAND_NAME }." + ], + "They will not be able to see or access your data.": [ + "No podran veure les vostres dades ni accedir-hi." + ], + "This will let you quickly access your ${ BRAND_NAME } Account so you can change your password.": [ + "Això us permetrà accedir ràpidament al vostre compte de ${ BRAND_NAME } perquè pugueu canviar la contrasenya." + ], + "This will let you reset your account password if you’ve lost it, but are still signed in to ${ BRAND_NAME }. It’s often the easiest way to recover your account if you’re signed in.": [ + "Això us permetrà restablir la contrasenya del vostre compte si l'heu perduda, però manteniu la sessió iniciada a ${ BRAND_NAME }. Sovint és la manera més fàcil de recuperar el vostre compte si teniu la sessió iniciada." + ], + "This will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset.": [ + "Això restaurarà l'accés a correus electrònics, contactes, fitxers, contrasenyes i qualsevol altra dada xifrada del vostre compte després d'un restabliment de contrasenya." + ], + "To make sure the email address is yours, enter the verification code sent to ${ boldEmail }.": [ + "Per assegurar-nos que l'adreça de correu electrònic és vostra, introduïu el codi de verificació enviat a ${ boldEmail }." + ], + "To make sure the phone number is yours, enter the verification code sent to ${ boldPhoneNumber }.": [ + "Per assegurar-vos que el número de telèfon és el vostre, introduïu el codi de verificació enviat a ${ boldPhoneNumber }." + ], + "To make sure this address is really yours, we’ll send an email with a verification link.": [ + "Per assegurar-nos que aquesta adreça és realment vostra, us enviarem un correu electrònic amb un enllaç de verificació." + ], + "Upgrade your plan to enable Emergency Access to your account. This will allow you to designate 1 to 5 people who will be able to reset your password for you.": [ + "Milloreu de pla per habilitar l'accés d'emergència al vostre compte. Això us permetrà designar d'1 a 5 persones que us podran restablir la contrasenya." + ], + "Verified password": [ + "S'ha verificat la contrasenya" + ], + "Verified recovery email": [ + "S'ha verificat el correu electrònic de recuperació" + ], + "Verified recovery phone": [ + "S'ha verificat el telèfon de recuperació" + ], + "Verify": [ + "Verifiqueu" + ], + "Verify password": [ + "Verifiqueu la contrasenya" + ], + "Verify recovery email": [ + "Verifiqueu el correu electrònic de recuperació" + ], + "Verify recovery phone": [ + "Verifiqueu el telèfon de recuperació" + ], + "Verify your recovery email": [ + "Verifiqueu el vostre correu electrònic de recuperació" + ], + "Verify your recovery phone": [ + "Verifiqueu el vostre telèfon de recuperació" + ], + "You can save a data backup on this device. This will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset, simply by signing in on this device.": [ + "Podeu desar una còpia de seguretat de les dades en aquest dispositiu. Això restaurarà l'accés a correus electrònics, contactes, fitxers, contrasenyes i qualsevol altra dada xifrada del vostre compte després d'un restabliment de contrasenya, simplement iniciant sessió en aquest dispositiu." + ], + "You can use email verification to regain access to your account if you forget your password.": [ + "Podeu utilitzar la verificació per correu electrònic per tornar a accedir al vostre compte si n'oblideu la contrasenya." + ], + "You can use SMS verification to regain access to your account if you forget your password.": [ + "Podeu utilitzar la verificació per SMS per tornar a accedir al vostre compte si n'oblideu la contrasenya." + ], + "You can use your recovery email to regain access to your account if you forget your password.": [ + "Podeu utilitzar el correu electrònic de recuperació per accedir al vostre compte si n'oblideu la contrasenya." + ], + "You can use your recovery phone to regain access to your account if you forget your password.": [ + "Podeu utilitzar el vostre telèfon de recuperació per recuperar l'accés al vostre compte si n'oblideu la contrasenya." + ], + "You don’t need to open or read the file—just download it and store it somewhere safe.": [ + "No cal que obriu ni llegiu el fitxer; només heu de descarregar-lo i desar-lo en un lloc segur." + ], + "Your recovery checklist": [ + "La vostra llista de verificació de recuperació" + ], + "Your security setup": [ + "La vostra configuració de seguretat" ] }, "saml: Action": { @@ -20842,8 +21633,11 @@ ] }, "Sentinel banner": { - "To ensure the highest possible security of your account, download your recovery phrase and disable the highlighted options.": [ - "Per garantir la màxima seguretat possible del vostre compte, descarregueu la frase de recuperació i desactiveu les opcions ressaltades." + "To ensure the highest possible security of your account, disable recovery via email and SMS.": [ + "Per garantir la màxima seguretat del vostre compte, desactiveu la recuperació mitjançant correu electrònic i SMS." + ], + "To make sure that you can always access your ${ BRAND_NAME } Account, download your recovery phrase.": [ + "Per a assegurar-vos que sempre pugueu accedir al vostre compte de ${ BRAND_NAME }, descarregueu-ne la frase de recuperació." ], "You have recommended actions from ${ PROTON_SENTINEL_NAME }": [ "Teniu accions recomanades per ${ PROTON_SENTINEL_NAME }" @@ -21183,14 +21977,11 @@ ] }, "Setting": { - "Enable Photos section": [ - "Habilitar la secció de fotos" - ], "Get updates about comments via email": [ - "Obtingueu actualitzacions per correu electrònic sobre els comentaris" + "Rebeu actualitzacions per correu electrònic sobre els comentaris" ], "Include document name in email notifications": [ - "Incloeu el nom del document a les notificacions per correu electrònic" + "Incloure el nom del document a les notificacions per correu electrònic" ] }, "Settings description": { @@ -21202,6 +21993,9 @@ "Account": [ "Compte" ], + "Managed Companies": [ + "Empreses gestionades" + ], "Organization": [ "Organització" ] @@ -21945,7 +22739,7 @@ "/ mes" ], "/month": [ - "/mesos" + "/mes" ], "1 year": [ "1 any" @@ -22055,11 +22849,35 @@ ] }, "Spotlight": { + "Assign delegated roles": [ + "Assignar rols delegats" + ], + "Assign roles": [ + "Assignar rols" + ], + "Click a user's name to manage their role and permissions.": [ + "Feu clic al nom d'un usuari per gestionar-ne el rol i els permisos" + ], + "Click Edit to assign roles to this group and manage member access automatically.": [ + "Cliqueu Editar per assignar rols a aquest grup i gestionar l'accés dels membres automàticament." + ], "Earn up to ${ maxRewardAmount } in credit": [ "Obtingueu fins a ${ maxRewardAmount } en crèdits" ], "Get credits when the person you invite subscribes to a ${ BRAND_NAME } plan.": [ "Obtingueu crèdits quan la persona que convideu se subscrigui a un pla de ${ BRAND_NAME }." + ], + "New: Roles and permissions tab": [ + "Nou: Pestanya de rols i permisos" + ], + "Open this tab to grant specific permissions without full admin access.": [ + "Obriu aquesta pestanya per concedir permisos específics sense accés complet d'administrador/a." + ], + "User roles available": [ + "Rols d'usuari disponibles" + ], + "You can now assign roles to individual users from this tab.": [ + "Ara podeu assignar rols a usuaris individuals des d'aquesta pestanya." ] }, "sso": { @@ -22363,18 +23181,12 @@ "Available on this device": [ "Està disponible en aquest dispositiu" ], - "Disable QR code sign-in": [ - "Desactiveu l'inici de sessió amb codi QR" - ], "Disable recovery by email": [ "Desactiveu la recuperació per correu electrònic" ], "Disable recovery by phone": [ "Desactiveu la recuperació per telèfon" ], - "Disable signed-in reset": [ - "Desactiveu el restabliment amb la sessió iniciada" - ], "Generate a recovery phrase": [ "Genereu una frase de recuperació" ], @@ -22384,9 +23196,6 @@ "Last updated ${ formattedUpdateDate }": [ "Darrera actualització el ${ formattedUpdateDate }" ], - "No contact": [ - "No hi ha cap contacte" - ], "Not saved": [ "No s'ha desat" ], @@ -23146,12 +23955,21 @@ ], "View VPN session details for your organization.": [ "Veieu els detalls de la sessió VPN de la vostra organització." + ], + "With managed companies, you can add, edit, and remove access for organizations you oversee.": [ + "Amb les empreses gestionades, podreu afegir, editar i esborrar l'accés de les organitzacions que superviseu." + ], + "Your total monthly cost for all managed companies.": [ + "El vostre cost mensual total per a totes les empreses gestionades." ] }, "Success": { "Account deleted. Signing out...": [ "S'ha eliminat el compte. S'està tancant la sessió..." ], + "Activation link copied to clipboard": [ + "S'ha copiat l'enllaç d'activació al porta-retalls" + ], "Address added": [ "Adreça afegida" ], @@ -23275,9 +24093,6 @@ "Organization logo updated": [ "S'ha actualitzat el logo de l'organització." ], - "Organization name set": [ - "S'ha establert el nom de l'organització" - ], "Organization name updated": [ "S'ha actualitzat el nom de l'organització." ], @@ -23499,6 +24314,14 @@ "Protegiu els vostres fitxers amb emmagatzematge xifrat al núvol. Inclou, entre d'altres, historial de versions i compartició de fitxers xifrats." ] }, + "Tab": { + "For personal use": [ + "Per a ús personal" + ], + "For professional use": [ + "Per a ús professional" + ] + }, "Tab in domain modal": { "Addresses": [ "Adreces" @@ -23774,12 +24597,18 @@ "Actions": [ "Accions" ], + "Activate multi-user support": [ + "Activar el suport multiusuari" + ], "Activate organization key": [ "Activar la clau d'organització" ], "Activate user": [ "Activa l'usuari" ], + "Activate your email": [ + "Activeu el vostre correu electrònic" + ], "Activity monitor": [ "Monitor d'activitats" ], @@ -23802,6 +24631,9 @@ "Add another notification to remind you of this event": [ "Afegeix una altra notificació per recordar-vos aquest esdeveniment" ], + "Add categories": [ + "Afegiu categories" + ], "Add contact group name": [ "Afegeix el nom del grup de contactes" ], @@ -23883,9 +24715,6 @@ "An address for each role": [ "Una adreça per a cada rol" ], - "An error occurred": [ - "Hi ha hagut un error" - ], "Annual": [ "Cada any" ], @@ -23979,6 +24808,9 @@ "Catch-all address": [ "Adreça d'arreplega" ], + "Categories": [ + "Categories" + ], "Change login password": [ "Canvia la contrasenya d'inici de sessió" ], @@ -24001,7 +24833,7 @@ "Canvia la segona contrasenya" ], "Check your default mail application": [ - "Comproveu la vostra aplicació de correu predeterminada" + "Comproveu la vostra aplicació de correu per defecte" ], "Choose a provider": [ "Escolliu un proveïdor" @@ -24024,6 +24856,9 @@ "Collaborate on documents": [ "Col·laboració en documents" ], + "Companies": [ + "Empreses" + ], "Compare plans": [ "Compareu els plans" ], @@ -24033,18 +24868,12 @@ "Confirm": [ "Confirma" ], - "Confirm address": [ - "Confirmar adreça" - ], "Confirm downgrade": [ "Confirma el pas a un pla inferior" ], "Confirm loss of ${ BRAND_NAME } bonuses": [ "Confirmeu la pèrdua de les bonificacions de ${ BRAND_NAME }" ], - "Confirm phone number": [ - "Confirmeu el número de telèfon" - ], "Connect ${ name }": [ "Connecta ${ name }" ], @@ -24069,14 +24898,17 @@ "Connect your custom domain": [ "Connecteu el vostre domini personalitzat" ], + "Connected emails": [ + "Correus electrònics connectats" + ], "Connection status": [ "Estat de la connexió" ], "Contact us": [ "Contacteu amb nosaltres" ], - "Contact-assisted recovery": [ - "Recuperació assistida per contactes" + "Continue with free storage": [ + "Continueu amb l'emmagatzematge gratuït" ], "Continue with partial import?": [ "Continuar amb la importació parcial?" @@ -24103,6 +24935,9 @@ "Create a new gateway": [ "Crea una passarel·la" ], + "Create a new password": [ + "Creeu una nova contrasenya" + ], "Create Gateway": [ "Crea una passarel·la" ], @@ -24184,6 +25019,9 @@ "Data recovery": [ "Recuperació de dades" ], + "Data recovery contacts": [ + "Contactes de recuperació de dades" + ], "Data recovery options": [ "Opcions de recuperació de dades" ], @@ -24196,6 +25034,9 @@ "Day theme": [ "Tema de dia" ], + "Deactivate current phrase?": [ + "Voleu desactivar la frase actual?" + ], "Decrypt key": [ "Desxifra la clau" ], @@ -24296,6 +25137,9 @@ "Disconnected from Gmail": [ "Esteu desconnectat de Gmail" ], + "Dismiss setup checklist": [ + "Descartar la llista de verificació de configuració" + ], "Display name and signature": [ "Nom per a mostrar i signatura" ], @@ -24332,6 +25176,9 @@ "Download the mobile apps": [ "Descarregueu les aplicacions mòbils" ], + "Download your recovery phrase": [ + "Descarregueu la frase de recuperació" + ], "Downloads": [ "Descàrregues" ], @@ -24471,6 +25318,9 @@ "Feature access": [ "Accés a les característiques" ], + "Fewer distractions, more focus": [ + "Menys distraccions, més concentració" + ], "Filter for more focus": [ "Filtreu els vostres missatges per a una millor concentració" ], @@ -24501,9 +25351,6 @@ "Forward emails": [ "Reenviament de correus electrònics" ], - "Forwardings": [ - "Reenviaments" - ], "Free": [ "Gratuït" ], @@ -24540,6 +25387,9 @@ "Get ${ planMaxSpace } storage for your files, photos and documents with ${ planName }. ${ upgradeButton }": [ "Obtingueu ${ planMaxSpace } d'emmagatzematge per als vostres fitxers, fotos i documents amb ${ planName }. ${ upgradeButton }" ], + "Get ${ VPN_APP_NAME } on your TV": [ + "Obtingueu ${ VPN_APP_NAME } al vostre televisor" + ], "Get ${ vpnPlus } to access all servers": [ "Obteniu ${ vpnPlus } per accedir a tots els servidors" ], @@ -24570,6 +25420,12 @@ "Get more from your VPN": [ "Obteniu més de la vostra VPN" ], + "Get more storage with ${ MAIL_APP_NAME } Plus": [ + "Aconseguiu més emmagatzematge amb ${ MAIL_APP_NAME } Plus" + ], + "Get started": [ + "Primers passos" + ], "Get the app on all your devices and enjoy safe, seamless access anywhere.": [ "Obtingueu l'aplicació a tots els vostres dispositius i gaudiu d'un accés segur i fluid des de qualsevol lloc." ], @@ -24751,6 +25607,9 @@ "Monthly": [ "Mensual" ], + "Monthly Costs": [ + "Costos mensuals" + ], "Multi-user support": [ "Suport multi-usuari" ], @@ -24784,6 +25643,9 @@ "No events": [ "No hi ha cap esdeveniment" ], + "No events yet": [ + "Encara no hi ha esdeveniments" + ], "No need to empty the trash": [ "No cal buidar la paperera" ], @@ -24883,9 +25745,6 @@ "Phone": [ "Telèfon" ], - "Photos": [ - "Fotos" - ], "Pin the extension": [ "Fixa l'extensió" ], @@ -24911,7 +25770,7 @@ "Hi ha hagut un problema en processar el vostre pagament" ], "Problem processing your request": [ - "Hi ha hagut un problema en processar la vostra sol·licitud" + "S'ha produit un problema en processar la vostra sol·licitud" ], "Processing...": [ "Processant..." @@ -24970,9 +25829,15 @@ "Remove domain": [ "Esborra el domini" ], + "Remove email": [ + "Eliminar el correu electrònic" + ], "Remove forwarding address": [ "Esborreu l'adreça de reenviament" ], + "Remove recovery phone number": [ + "Elimineu el número de telèfon de recuperació" + ], "Remove server?": [ "Voleu esborrar el servidor?" ], @@ -25144,6 +26009,9 @@ "Sign in on TV": [ "Inicieu sessió al televisor" ], + "Sign in on TV?": [ + "Voleu iniciar sessió al televisor?" + ], "Sign in to join the Beta program": [ "Inicieu la sessió per unir-vos al programa Beta" ], @@ -25183,6 +26051,9 @@ "Some of your encrypted data is locked": [ "Algunes de les vostres dades xifrades estan bloquejades" ], + "Something went wrong": [ + "S'ha produït un error." + ], "Sort folders alphabetically": [ "Ordena les carpetes alfabèticament" ], @@ -25379,6 +26250,9 @@ "Verify it’s you": [ "Verifiqueu que sou vós" ], + "Verify your email": [ + "Verifiqueu el correu electrònic" + ], "Verifying your card...": [ "S'està verificant la targeta…" ], @@ -25403,6 +26277,9 @@ "Warning: suspected fake website": [ "Avís: presumpte lloc web fals" ], + "We sent you a code to your email to make sure it’s you. This code is valid for 10 minutes. Please enter it below.": [ + "Us hem enviat un codi al correu electrònic per assegurar-nos que sou vós. Aquest codi és vàlid durant 10 minuts. Introduïu-lo a continuació." + ], "We'll send an email to your new address with instructions on completing the change.": [ "Enviarem un correu electrònic a la vostra nova adreça amb instruccions per completar el canvi." ], @@ -25454,6 +26331,12 @@ "Your ${ planTitle } subscription has started": [ "La vostra subscripció a ${ planTitle } ha començat" ], + "Your admin at ${ orgName } is inviting you to activate your new secure ${ BRAND_NAME } account and update your password.": [ + "El vostre administrador a ${ orgName } us convida a activar el nou compte segur de ${ BRAND_NAME } i a actualitzar la vostra contrasenya." + ], + "Your admin is inviting you to activate your new secure ${ BRAND_NAME } account and update your password.": [ + "L'administrador us convida a activar el nou compte segur de ${ BRAND_NAME } i a actualitzar la contrasenya." + ], "Your calendar link": [ "Enllaç del vostre calendari" ], @@ -25661,6 +26544,9 @@ "Each imported email will have this label": [ "Tots els correus electrònics importats tindran aquesta etiqueta" ], + "Early access to new apps and features.": [ + "Accés anticipat a noves aplicacions i característiques." + ], "Edit folder names": [ "Edita el nom de les carpetes" ], @@ -25817,8 +26703,8 @@ "This feature is only available on Beta": [ "Aquesta característica només està disponible en la versió beta." ], - "This is the default key used by other ${ MAIL_APP_NAME } users on older mobile apps to encrypt data they send to you": [ - "Aquesta és la clau per defecte que fan servir altres usuaris de ${ MAIL_APP_NAME } a les aplicacions mòbils antigues per xifrar les dades que us envien." + "This is the default key used by other ${ MAIL_APP_NAME } users on older apps to encrypt data they send to you": [ + "Aquesta és la clau predeterminada que utilitzen altres usuaris de ${ MAIL_APP_NAME } en aplicacions antigues per xifrar les dades que us envien" ], "This is the default key used by other ${ MAIL_APP_NAME } users to encrypt data they send to you": [ "Aquesta és la clau per defecte que utilitzen altres usuaris de ${ MAIL_APP_NAME } per xifrar les dades que us envien" @@ -25906,6 +26792,9 @@ "User is a group": [ "L'usuari és un grup" ], + "via ${ groupName }": [ + "mitjançant ${ groupName }" + ], "Waiting for user to accept the invitation": [ "S'està esperant que l'usuari accepti la invitació." ] @@ -26020,7 +26909,7 @@ }, "Unlimited offer": { "/month": [ - "/mesos" + "/mes" ], "Only": [ "Només" @@ -26229,6 +27118,12 @@ ] }, "user_modal": { + "(via ${ groupName })": [ + "(via ${ groupName })" + ], + "(via group)": [ + "(via grup)" + ], "Add delegated roles to a user to grant them only the specific permissions they need, keeping full-admin power separate and your environment secure.": [ "Delegueu rols a un usuari per concedir-li només els permisos específics que necessiti, mentre manteniu separats els poders complets d'administració i el vostre entorn segur." ], @@ -26616,11 +27511,14 @@ "${ BRAND_NAME } will transfer as much data as possible, starting with your most recent messages.": [ "${ BRAND_NAME } transferirà tantes dades com sigui possible, començant pels missatges més recents." ], - "Are you sure you want to delete the phone number?": [ - "Confirmes que vols eliminar el número de telèfon?" + "Are you sure you want to remove your notification email?": [ + "Esteu segur que voleu esborrar el vostre correu electrònic de notificacions?" ], - "Are you sure you want to delete this address?": [ - "Segur que voleu eliminar aquesta adreça?" + "Are you sure you want to remove your recovery email?": [ + "Esteu segur que voleu esborrar el vostre correu electrònic de recuperació?" + ], + "Are you sure you want to remove your recovery phone number?": [ + "Esteu segur que voleu esborrar el vostre telèfon de recuperació?" ], "By deleting this address, you will no longer be able to receive daily email notifications.": [ "Suprimint aquesta adreça, ja no podràs rebre notificacions diàries al correu." @@ -26631,7 +27529,7 @@ "By deleting this address, you will no longer be able to recover your account.": [ "Suprimint aquesta adreça, ja no podràs recuperar el teu compte." ], - "By deleting this phone number, you will no longer be able to recover your account.": [ + "By removing this phone number, you will no longer be able to recover your account.": [ "Si suprimiu aquest número de telèfon, ja no podreu recuperar el vostre compte." ], "Could not login. Please open ${ PASS_APP_NAME } browser extension and login from there.": [ diff --git a/applications/account/locales/cs_CZ.json b/applications/account/locales/cs_CZ.json index f21edf6475b..38c128cdda5 100644 --- a/applications/account/locales/cs_CZ.json +++ b/applications/account/locales/cs_CZ.json @@ -105,6 +105,9 @@ "Add address or domain": [ "Přidat adresu nebo doménu" ], + "Add and verify": [ + "Přidat a ověřit" + ], "Add another account": [ "Přidat další účet" ], @@ -159,6 +162,9 @@ "Add user": [ "Přidat uživatele" ], + "Added ${ memberName } as group owner": [ + "Uživatel ${ memberName } přidán jako vlastník skupiny" + ], "Align center": [ "Zarovnat na střed" ], @@ -261,6 +267,9 @@ "Claim it": [ "Získat ji" ], + "Claim offer": [ + "Využít nabídku" + ], "Claim this address": [ "Nárokovat tuto adresu" ], @@ -276,6 +285,9 @@ "Close navigation": [ "Zavřít menu" ], + "Close search": [ + "Zavřít hledání" + ], "Close tab": [ "Zavřít kartu" ], @@ -300,6 +312,9 @@ "Confirm": [ "Potvrdit" ], + "Confirm email": [ + "Potvrdit e-mail" + ], "Confirm opening of link ${ linkToShow }": [ "Potvrďte otevření odkazu ${ linkToShow }" ], @@ -313,10 +328,7 @@ "Připojit aplikace a zařízení" ], "Connect Gmail address": [ - "Připojte svou Gmail adresu" - ], - "Connect to Gmail": [ - "Připojit ke Gmail" + "Připojte Gmail adresu" ], "Connect to video conferencing": [ "Připojit se k videokonferenci" @@ -324,12 +336,21 @@ "Connect your ${ BRAND_NAME } Account": [ "Připojte váš účet ${ BRAND_NAME }" ], + "Connect your email": [ + "Připojte svůj e-mail" + ], "Connected": [ "Připojeno" ], + "Contact sales": [ + "Kontaktovat obchodní tým" + ], "Contact support": [ "Kontaktovat podporu" ], + "Contact Support Center": [ + "Kontaktovat centrum podpory" + ], "Contact us": [ "Kontaktujte nás" ], @@ -339,6 +360,9 @@ "Continue anyway": [ "Přesto pokračovat" ], + "Continue cancelling": [ + "Pokračovat v rušení" + ], "Continue import": [ "Pokračovat v importu" ], @@ -426,6 +450,9 @@ "Create organization": [ "Vytvořit organizaci" ], + "Create recovery phrase": [ + "Vytvořit obnovovací frázi" + ], "Create users": [ "Vytvořit uživatele" ], @@ -498,9 +525,6 @@ "Delete record": [ "Smazat záznam" ], - "Delete token ${ token.Account }": [ - "Smazat token ${ token.Account }" - ], "Delete token “${ token.Name }”": [ "Smazat token “${ token.Name }”" ], @@ -534,6 +558,9 @@ "Disable": [ "Vypnout" ], + "Disable account monitor": [ + "Deaktivovat monitor účtu" + ], "Disable categories": [ "Deaktivovat kategorie" ], @@ -552,6 +579,9 @@ "Discard Changes": [ "Zahodit změny" ], + "Disconnect": [ + "Odpojit" + ], "Discover ${ planName }": [ "Objevit ${ planName }" ], @@ -609,6 +639,9 @@ "Download the desktop app": [ "Stáhněte si desktopovou aplikaci" ], + "Download updated file": [ + "Stáhnout aktualizovaný soubor" + ], "Edit": [ "Upravit" ], @@ -732,6 +765,9 @@ "Filters are being applied. This might take a few minutes.": [ "Filtry se aplikují. Toto může trvat pár minut." ], + "Finish": [ + "Dokončit" + ], "Fit to window": [ "Přizpůsobit oknu" ], @@ -750,6 +786,9 @@ "Generate key": [ "Vygenerovat klíč" ], + "Generate new phrase": [ + "Vygenerovat novou frázi" + ], "Generate new recovery phrase": [ "Vygenerovat novou obnovovací frázi" ], @@ -882,6 +921,9 @@ "Hide plan features": [ "Skrýt funkce tarifu" ], + "I don't have my 2FA device": [ + "Nemám své zařízení pro 2FA" + ], "I don't have my key": [ "Nemám klíč" ], @@ -1120,7 +1162,7 @@ "nebo se" ], "Or remove forwarding address": [ - "Nebo odebrat adresu přeposílání" + "Nebo odeberte adresu přeposílání" ], "Or use a different Gmail address": [ "Nebo použijte jinou Gmail adresu" @@ -1164,6 +1206,9 @@ "Reactivate keys": [ "Znovu aktivovat klíče" ], + "Read the story": [ + "Přečíst příběh" + ], "Reconnect": [ "Obnovit připojení" ], @@ -1239,6 +1284,9 @@ "Remove this notification": [ "Odstranit toto oznámení" ], + "Removed ${ memberName } as group owner": [ + "Uživatel ${ memberName } odebrán jako vlastník skupiny" + ], "Rename": [ "Přejmenovat" ], @@ -1326,6 +1374,9 @@ "Save and continue": [ "Uložit a pokračovat" ], + "Save and verify": [ + "Uložit a ověřit" + ], "Save changes": [ "Uložit změny" ], @@ -1347,6 +1398,9 @@ "Search settings": [ "Hledat v nastavení" ], + "Secure account": [ + "Zabezpečit účet" + ], "See DNS TXT record": [ "Zobrazit DNS TXT záznam" ], @@ -1428,9 +1482,6 @@ "Set as default": [ "Nastavit jako výchozí" ], - "Set as default mail application": [ - "Nastavit jako výchozí e-mailovou aplikaci" - ], "Set catch-all": [ "Nastavení doménového koše" ], @@ -1569,6 +1620,9 @@ "Switch or add account": [ "Přepnout nebo přidat účet" ], + "Switch to free plan": [ + "Přepnout na bezplatný tarif" + ], "Take a tour": [ "Absolvujte prohlídku" ], @@ -1588,7 +1642,7 @@ "Zkuste jinou metodu" ], "Try another way": [ - "Zkuste to jinak" + "Zkusit jiný způsob" ], "Try for free": [ "Vyzkoušet zdarma" @@ -1704,6 +1758,9 @@ "Verify account": [ "Ověřit účet" ], + "Verify another way": [ + "Jiný způsob ověření" + ], "Verify code": [ "Ověřit kód" ], @@ -1731,6 +1788,9 @@ "View recovery settings": [ "Zobrazit nastavení obnovení" ], + "View recovery setup details": [ + "Zobrazit podrobnosti o nastavení obnovy" + ], "Void": [ "Neplatné" ], @@ -1740,6 +1800,9 @@ "Void all recovery files?": [ "Zrušit všechny soubory pro obnovení?" ], + "Watch the interview": [ + "Shlédněte rozhovor" + ], "Welcome": [ "Vítejte" ], @@ -2021,11 +2084,35 @@ ] }, "Admin roles onboarding": { + "3 new admin roles": [ + "3 nové role správce" + ], + "Configure security policies, data retention, and VPN infrastructure, and manage audit logs.": [ + "Nastavte bezpečnostní zásady, uchovávání dat, VPN infrastrukturu a spravujte auditní logy." + ], + "Delegate management by assigning specific admin roles. Give each admin only the access they need. This follows the principle of least privilege, protecting your organization from compromised accounts and accidental errors.": [ + "Spravujte oprávnění přidělováním konkrétních správcovských rolí. Každému správci přidělte pouze ta oprávnění, která skutečně potřebuje. Tím se řídíte zásadou minimálních oprávnění, která chrání vaši organizaci před zneužitím účtů a náhodnými chybami." + ], + "Delegate management with the appropriate admin role.": [ + "Pověřte uživatele správou tak, že mu přiřadíte vhodnou roli správce." + ], "Manage all users, groups, storage, security, billing, audit logs, and system configurations.": [ - "Spravujte všechny uživatele, skupiny, úložiště, zabezpečení, fakturaci, auditované logy a systémové konfigurace." + "Spravujte všechny uživatele, skupiny, úložiště, zabezpečení, fakturaci, auditní logy a systémové konfigurace." + ], + "Manage users, groups, and storage for all members, assign roles, and allocate licenses.": [ + "Spravujte uživatele, skupiny a úložiště pro všechny členy, přiřazujte role a přidělujte licence." ], "New: Control admin access for individual users": [ "Novinka: Řízení přístupových práv správce pro jednotlivé uživatele" + ], + "Organization admin:": [ + "Správce organizace:" + ], + "Security admin:": [ + "Správce zabezpečení:" + ], + "User admin:": [ + "Správce uživatelů:" ] }, "AdminRole_Info": { @@ -2256,6 +2343,11 @@ "Bezplatná zkušební verze končí za ${ timeRemaining }" ] }, + "Badge": { + "Save ${ discountRate }%": [ + "Ušetřete ${ discountRate } %" + ] + }, "Badge for domain": { "Disabled": [ "Vypnuto" @@ -2798,13 +2890,7 @@ }, "BOSS": { "${ BRAND_NAME } Migration Assistant": [ - "${ BRAND_NAME } Migration Assistant" - ], - "Add a custom domain": [ - "Přidat vlastní doménu" - ], - "App installed": [ - "Aplikace nainstalována" + "Asistent migrace ${ BRAND_NAME }" ], "Authenticate": [ "Ověřit" @@ -2833,9 +2919,6 @@ "Domain connected": [ "Doména připojena" ], - "Domain ownership verified": [ - "Vlastnictví domény ověřeno" - ], "Estimated size": [ "Odhadovaná velikost" ], @@ -2845,6 +2928,9 @@ "Finish setting up your business account": [ "Dokončete nastavení svého firemního účtu" ], + "Google Marketplace app to copy data to ${ BRAND_NAME }": [ + "Aplikace Google Marketplace pro kopírování dat do ${ BRAND_NAME }" + ], "Has errors": [ "Má chyby" ], @@ -2857,15 +2943,9 @@ "Install migration app": [ "Nainstalujte migrační aplikaci" ], - "Learn more about what can be migrated. Learn more": [ - "Zjistěte více o tom, co lze migrovat. Více informací" - ], "Mail": [ "Mail" ], - "Migrate": [ - "Migrovat" - ], "Migrate from Google Workspace": [ "Migrovat z Google Workspace" ], @@ -2884,18 +2964,12 @@ "Migration status": [ "Stav migrace" ], - "Not started": [ - "Nezahájeno" - ], "Organization does not have enough seats available": [ "Organizace nemá dostatek volných licencí" ], "Organization does not have enough storage available": [ "Organizace nemá dostatečně velké úložiště" ], - "Organization settings": [ - "Nastavení organizace" - ], "Required": [ "Vyžadováno" ], @@ -2905,9 +2979,6 @@ "Select at least one user to start a migration": [ "Pro zahájení migrace vyberte alespoň jednoho uživatele" ], - "Select what you want to migrate, this will apply to all users whether they are created now or later. Migration will start after user accounts are created.": [ - "Vyberte, co chcete migrovat. Toto nastavení se použije pro všechny uživatele, ať už jsou vytvořeni nyní nebo později. Migrace začne po vytvoření uživatelských účtů." - ], "Set up": [ "Nastavení" ], @@ -2929,8 +3000,8 @@ "Status": [ "Stav" ], - "Transfer errors": [ - "Chyby přenosu" + "To migrate your organization’s data, you need to install the ${ BRAND_NAME } Migration Assistant app from the Google Workspace Marketplace. This will grant permission to ${ BRAND_NAME } to copy your data. After installing it, come back here to continue.": [ + "Chcete-li migrovat data své organizace, musíte nainstalovat ${ BRAND_NAME } Migration Assistant z Google Workspace Markeplace. Tím udělíte společnosti ${ BRAND_NAME } oprávnění kopírovat vaše data. Po instalaci se vraťte sem a pokračujte." ], "User": [ "Uživatel" @@ -2944,9 +3015,6 @@ "Verify your domain": [ "Ověřte svou doménu" ], - "Verify your domain ownership": [ - "Ověřte vlastnictví své domény" - ], "Verify your domain to start a migration": [ "Ověřte svou doménu a spusťte migraci" ], @@ -3065,9 +3133,18 @@ ] }, "Button": { + "Add users manually": [ + "Přidejte uživatele ručně" + ], + "Cancel": [ + "Zrušit" + ], "Close": [ "Zavřít" ], + "Configure your network": [ + "Nastavte svou síť" + ], "Continue using ${ MAIL_APP_NAME }.": [ "Pokračovat s ${ MAIL_APP_NAME }." ], @@ -3089,6 +3166,12 @@ "Got it": [ "Rozumím" ], + "Invite your team": [ + "Pozvěte svůj tým" + ], + "Manage global VPN permissions": [ + "Správa globálních oprávnění VPN" + ], "Maybe later": [ "Možná později" ], @@ -3098,12 +3181,21 @@ "Remind me later": [ "Připomenout později" ], + "Secure your organization": [ + "Zabezpečte svou organizaci" + ], "Send": [ "Odeslat" ], "Set up other features": [ "Nastavit další funkce" ], + "Set up SSO": [ + "Nastavit SSO" + ], + "Sign in": [ + "Přihlásit se" + ], "Take a tour": [ "Absolvovat prohlídku" ] @@ -3712,6 +3804,41 @@ "Pokud" ] }, + "Confirm cancellation": { + "Access is restored once usage is back within limits.": [ + "Přístup bude obnoven, jakmile se využití vrátí do povolených mezí." + ], + "Back up photos from your devices": [ + "Zálohujte fotky ze svých zařízení" + ], + "Cancel subscription": [ + "Zrušit předplatné" + ], + "Confirm cancellation": [ + "Potvrdit zrušení" + ], + "If you exceed free plan limits, you won't be able to:": [ + "Pokud překročíte limity bezplatného tarifu, nebudete moci:" + ], + "Keep current plan": [ + "Zachovat aktuální tarif" + ], + "Manage your calendar": [ + "Spravujte svůj kalendář" + ], + "Receive new emails": [ + "Přijímat nové e-maily" + ], + "Send emails with attachments": [ + "Odesílat e-maily s přílohami" + ], + "Upload any new files": [ + "Nahrajte jakékoliv nové soubory" + ], + "When your subscription ends on ${ endDate }, your account will switch to the Free plan. If your usage exceeds Free plan limits, some features may be temporarily unavailable.": [ + "Jakmile vaše předplatné skončí ${ endDate }, váš účet přejde na bezplatný tarif. Pokud vaše využití překročí limity bezplatného tarifu, některé funkce mohou být dočasně nedostupné." + ] + }, "Confirm modal title": { "Import is incomplete!": [ "Import nebyl dokončen!" @@ -4893,20 +5020,20 @@ ] }, "Description": { + "${ BRAND_NAME }'s end-to-end encryption means only you can unlock your data. Set up recovery options now to ensure you never lose access.": [ + "Díky koncovému šifrování v ${ BRAND_NAME } můžete svá data odemknout pouze vy. Nastavte si možnosti obnovení ještě dnes, abyste o přístup nikdy nepřišli." + ], "${ DOCS_SHORT_APP_NAME } in ${ DRIVE_APP_NAME } allows you to work together with others in a secure, encrypted environment.": [ "${ DOCS_SHORT_APP_NAME } v ${ DRIVE_APP_NAME } vám umožní spolupracovat s ostatními v bezpečném a šifrovaném prostředí." ], - "${ MAIL_APP_NAME } is not your default mail application.": [ - "${ MAIL_APP_NAME } není vaší výchozí e-mailovou aplikací." - ], - "${ MAIL_APP_NAME } is your default mail application.": [ - "${ MAIL_APP_NAME } je vaše výchozí e-mailová aplikace." + "${ MAIL_APP_NAME } keeps your business data secure and lets you send encrypted emails to anyone.": [ + "${ MAIL_APP_NAME } uchovává vaše firemní data v bezpečí a umožňuje posílat šifrované e-maily komukoli." ], "A checked box means the feature is disabled.": [ "Zaškrtnuté políčko znamená, že je funkce deaktivována." ], "Add extra addresses to your account or use Hide My Email aliases to keep your inbox private.": [ - "Přidejte do svého účtu další e-mailové adresy nebo využijte aliasy služby Hide My Email, abyste zachovali soukromí své doručené pošty." + "Přidejte do svého účtu další e-mailové adresy nebo využijte aliasy Hide My Email, abyste zachovali soukromí své e-mailové schránky." ], "Add folders and files to ${ DRIVE_APP_NAME } and invite team members to view or edit.": [ "Přidejte složky a soubory do ${ DRIVE_APP_NAME } a pozvěte členy týmu k prohlížení nebo úpravám." @@ -4929,8 +5056,11 @@ "Block Google's ability to profile you. Gmail can't see what you do in ${ MAIL_APP_NAME }": [ "Blokujte možnosti Googlu sledovat vaše aktivity. Gmail nemůže vidět, do děláte v ${ MAIL_APP_NAME }" ], - "Bring over email, calendar events, and contacts from another provider.": [ - "Přeneste si e-maily, události v kalendáři a kontakty od jiného poskytovatele." + "Bring over your email, calendar events, and contacts from another provider.": [ + "Přeneste si své e-maily, události v kalendáři a kontakty od jiného poskytovatele." + ], + "Build trust and brand recognition with professional email addresses at your own domain.": [ + "Vybudujte si důvěryhodnost a rozpoznatelnost značky pomocí profesionálních e-mailových adres na vlastní doméně." ], "Configure this first to activate your organization and customize your email address.": [ "Při konfiguraci nejprve aktivujte svou organizaci a přizpůsobte e-mailovou adresu." @@ -4938,6 +5068,9 @@ "Connect your CRM, website, printers, and more.": [ "Propojte svůj CRM, webové stránky, tiskárny a další." ], + "Create a Gateway to give your users access to your IT resources through dedicated servers.": [ + "Vytvořte bránu, která vašim uživatelům umožní přístup k vašim IT zdrojům prostřednictvím dedikovaných serverů." + ], "Create a Zoom meeting and add joining details to your event with one click.": [ "Vytvořte schůzku na Zoomu a jedním kliknutím přidejte podrobnosti o připojení k události." ], @@ -4947,9 +5080,15 @@ "Create groups you can email with a single address.": [ "Vytvářejte skupiny, kterým můžete posílat e-maily pomocí jediné adresy." ], + "Create new user accounts or import users with SSO (single sign-on) SCIM provisioning.": [ + "Vytvářejte nové uživatelské účty nebo importujte uživatele pomocí SSO (jednotného přihlášení) a zajištění SCIM." + ], "Create policies to decide who can connect to shared servers in each country.": [ "Vytvořte zásady, které určují, kdo se může připojit ke sdíleným serverům v jednotlivých zemích." ], + "Decide which users can connect to each of our 120+ shared server locations.": [ + "Rozhodněte, kteří uživatelé se mohou připojit ke každému z našich více než 120 umístění sdílených serverů." + ], "Easily access your email and calendar on desktop and mobile.": [ "Snadný přístup k e-mailu a kalendáři na počítači i v mobilu." ], @@ -4998,12 +5137,30 @@ "Help your team securely store passwords to sensitive business and client information.": [ "Pomozte svému týmu bezpečně ukládat hesla k citlivým obchodním informacím a informacím o klientech." ], + "How our customer support team got our VPN app directly into people's hands.": [ + "Jak náš tým zákaznické podpory dostal naši aplikaci VPN přímo do rukou lidí." + ], + "How we fought back when ${ BRAND_NAME } was blocked in an aggressive campaign.": [ + "Jak jsme se bránili, když byl ${ BRAND_NAME } zablokován v rámci agresivní kampaně." + ], + "How we supported local activists when privacy and free speech were threatened.": [ + "Jak jsme podpořili místní aktivisty, když bylo ohroženo soukromí a svoboda projevu." + ], + "How you unlock your encrypted data if you lose your password.": [ + "Jak odemknout zašifrovaná data v případě ztráty hesla." + ], + "If you haven’t already, enable some recovery methods to make sure you never lose access to ${ VPN_APP_NAME }.": [ + "Pokud jste tak ještě neučinili, povolte některé metody obnovení, abyste se ujistili, že nikdy neztratíte přístup k ${ VPN_APP_NAME }." + ], "It looks like the contact list you are importing contains some groups. Please review how these groups should be imported.": [ "Zdá se, že seznam kontaktů který importujete, zahrnuje nějaké skupiny. Prosím, zkontrolujte jak by tyto skupiny měly být importovány." ], "Keep different parts of your life separate and your inbox organized with additional addresses.": [ "Oddělte různé části svého života a uspořádejte si doručenou poštu s dalšími adresami." ], + "Keep your team secure on the go with our apps for web, iOS, Android, Windows, Mac, and Linux.": [ + "Zabezpečte svůj tým na cestách pomocí našich aplikací pro web, iOS, Android, Windows, Mac a Linux." + ], "Learn more about common problems": [ "Více informací o běžných problémech" ], @@ -5013,6 +5170,9 @@ "Make your email footer your own — showcase your unique brand, not ours.": [ "Vytvořte si vlastní zápatí e-mailu — prezentujte svou jedinečnou značku, ne naši." ], + "Methods that include both password reset and data recovery.": [ + "Metody, které zahrnují jak resetování hesla, tak obnovu dat." + ], "Most issues can be solved in a few minutes with our step-by-step guides.": [ "Většinu problémů lze vyřešit během několika minut pomocí našich podrobných návodů." ], @@ -5025,9 +5185,6 @@ "Read, reply, and stay on top of Gmail from within ${ MAIL_APP_NAME }": [ "Čtěte, odpovídejte a mějte přehled o Gmailu přímo z aplikace ${ MAIL_APP_NAME }" ], - "Send a code to your recovery email or phone": [ - "Odeslání kódu na váš e-mail nebo telefon pro obnovení" - ], "Set up accounts for all users and invite them to join ${ BRAND_NAME }.": [ "Nastavte účty pro všechny uživatele a pozvěte je, aby se připojili k ${ BRAND_NAME }." ], @@ -5037,6 +5194,12 @@ "Simplify syncing and scheduling with shared calendars.": [ "Zjednodušte synchronizaci a plánování pomocí sdílených kalendářů." ], + "Still need help? Our support team is here for you.": [ + "Stále potřebujete pomoc? Náš tým podpory je vám k dispozici." + ], + "This allows you to regain access to your ${ BRAND_NAME } account but does not recover your encrypted data.": [ + "Tímto způsobem získáte opět přístup ke svému účtu ${ BRAND_NAME }, ale vaše zašifrovaná data tím nebudou obnovena." + ], "This may happen if permissions were removed or your password changed.": [ "K tomu může dojít, pokud byla oprávnění odebrána nebo pokud jste změnili heslo." ], @@ -5082,9 +5245,6 @@ "We'll bring in your old emails and connect your Gmail to ${ MAIL_APP_NAME } so new messages appear automatically": [ "Načteme vaše staré e-maily a propojíme váš účet Gmail s aplikací ${ MAIL_APP_NAME }, aby se nové zprávy zobrazovaly automaticky" ], - "We've started importing your email from Gmail. We'll let you know when it's done.": [ - "Zahájili jsme import vašich e-mailů z Gmail. Po dokončení vám dáme vědět." - ], "We’re sorry to see you go. If you have a moment, we’d really appreciate hearing why you’d like to cancel. Your feedback helps us make ${ BRAND_NAME } better for everyone.": [ "Je nám líto, že odcházíte. Pokud máte chvilku, oceníme, pokud nám sdělíte důvod zrušení. Vaše zpětná vazba pomáhá vylepšovat ${ BRAND_NAME } pro všechny." ], @@ -5092,7 +5252,7 @@ "Již máte adresu Gmail, která přeposílá na ${ MAIL_APP_NAME }. Připojte ji níže a posílejte a přijímejte e-maily přímo z ${ MAIL_APP_NAME }." ], "You already have Gmail addresses forwarding to ${ MAIL_APP_NAME }. Connect one below to send and receive emails directly from ${ MAIL_APP_NAME }.": [ - "Již máte nastavené přesměrování adres Gmailu do aplikace ${ MAIL_APP_NAME }. Připojte níže uvedenou adresu, abyste mohli odesílat a přijímat e-maily přímo z aplikace ${ MAIL_APP_NAME }." + "Již máte nastavené přesměrování adres Gmailu do ${ MAIL_APP_NAME }. Připojte níže uvedenou adresu, abyste mohli odesílat a přijímat e-maily přímo z ${ MAIL_APP_NAME }." ], "You can customize the list of domains where certain auto functions in ${ PASS_APP_NAME } browser extension (Autofill, Autosuggest, Autosave) should not be run.": [ "Můžete si přizpůsobit seznam domén, ve kterých se nemají spouštět určité automatické funkce v rozšíření prohlížeče ${ PASS_APP_NAME } (automatické vyplňování, automatické doporučení, automatické ukládání)." @@ -5103,12 +5263,18 @@ "You can import events in iCal format (ICS file). The file should have a maximum size of ${ MAX_IMPORT_FILE_SIZE_STRING } and have up to ${ MAX_IMPORT_EVENTS_STRING } events. If your file is bigger, please split it into smaller files.": [ "Můžete importovat události ve formátu iCal (ICS soubor). Tento soubor by měl mít maximální velikost ${ MAX_IMPORT_FILE_SIZE_STRING } a maximálně ${ MAX_IMPORT_EVENTS_STRING } událostí. Pokud je váš soubor větší, prosím rozdělte ho na menší soubory." ], + "You can manage multiple ${ BRAND_NAME } addresses from a single account, without switching. Aliases and address management tools help keep everything in one inbox.": [ + "Z jednoho účtu můžete spravovat více adres ${ BRAND_NAME } bez přepínání. Díky aliasům a nástrojům pro správu adres můžete mít vše na jednom místě ve své doručené poště." + ], "You can merge addresses into one main ${ BRAND_NAME } account using our support guide.": [ "Adresy můžete sloučit do jednoho hlavního účtu ${ BRAND_NAME } podle pokynů v našem návodu." ], "You can now send emails from ${ BRAND_NAME } using this address.": [ "Nyní můžete odesílat e-maily z ${ BRAND_NAME } pomocí této adresy." ], + "You can still login with this address and re-connect at any time.": [ + "Pořád se můžete kdykoliv přihlásit pomocí této adresy a znovu se připojit." + ], "You will no longer be able to use ${ address.Email } to receive and send emails in ${ BRAND_NAME }. Also note that messages sent to this address from ${ BRAND_NAME } will no longer be end-to-end encrypted.": [ "Na adrese ${ address.Email } již nebudete moci přijímat ani odesílat e-maily v rámci služby ${ BRAND_NAME }. Upozorňujeme také, že zprávy odeslané na tuto adresu ze služby ${ BRAND_NAME } již nebudou koncově šifrovány." ], @@ -6198,9 +6364,6 @@ "${ user } will not be able to access your account until the next emergency access.": [ "${ user } nebude mít přístup k vašemu účtu až do dalšího nouzového přístupu." ], - "**${ contact }** is now your recovery contact. They can help you recover your data after a password reset.": [ - "**${ contact }** je nyní váš kontakt pro obnovení. Pomůže vám obnovit data po resetování hesla." - ], "**If they confirm**, click **Approve recovery**. This will unlock their encrypted data.": [ "**Pokud potvrdí**, klikněte na **Schválit obnovení**. Tím odemknete jejich šifrovaná data." ], @@ -6231,6 +6394,9 @@ "Add emergency contact": [ "Přidat nouzový kontakt" ], + "Add option": [ + "Přidat možnost" + ], "Add recovery contact": [ "Přidat kontakt pro obnovení" ], @@ -6351,11 +6517,11 @@ "Less than a minute left": [ "Zbývá méně než minuta" ], - "Let ${ user } know it’s really you trying to regain access.": [ - "Dejte ${ user } vědět, že jste to opravdu vy, kdo se snaží získat zpět přístup." - ], - "None": [ - "Neomezeně" + "Maximum of ${ limit } contact reached. To change, remove a contact and add a new one.": [ + "Dosaženo maximálního počtu ${ limit } kontaktu. Chcete-li počet změnit, odstraňte jeden kontakt a přidejte nový.", + "Dosaženo maximálního počtu ${ limit } kontaktů. Chcete-li počet změnit, odstraňte jeden kontakt a přidejte nový.", + "Dosaženo maximálního počtu ${ limit } kontaktů. Chcete-li počet změnit, odstraňte jeden kontakt a přidejte nový.", + "Dosaženo maximálního počtu ${ limit } kontaktů. Chcete-li počet změnit, odstraňte jeden kontakt a přidejte nový." ], "Only ": [ "Pouze " @@ -6447,15 +6613,9 @@ "Select recovery contact ${ name }": [ "Vyberte kontakt pro obnovení ${ name }" ], - "Send email request": [ - "Odeslat žádost e-mailem" - ], "Send recovery request": [ "Odeslat žádost o obnovení" ], - "Set account recovery": [ - "Nastavit obnovení účtu" - ], "Stop being recovery contact": [ "Odebrat kontakt pro obnovení" ], @@ -6474,9 +6634,15 @@ "They added me as trusted contact. I can access their account in case of an emergency.": [ "Přidali mě jako důvěryhodný kontakt. Mám přístup k jejich účtu v případě nouze." ], + "They added you as trusted contact. You can access their account in case of an emergency.": [ + "Přidali vás jako důvěryhodný kontakt. V případě nouze máte přístup k jejich účtu." + ], "They may ask to access my account in case of an emergency.": [ "Mohou požádat o přístup k mému účtu v případě nouze." ], + "They may ask to access your account in case of an emergency.": [ + "V případě nouze vás mohou požádat o přístup k vašemu účtu." + ], "They will receive access automatically in **${ days } day**, on **${ formattedAccessibleAt }**, you can reject their request or give them access immediately at any time.": [ "Přístup získají automaticky za **${ days } den**, **${ formattedAccessibleAt }**. Jejich žádost můžete kdykoli odmítnout nebo jim přístup poskytnout okamžitě.", "Přístup získají automaticky za **${ days } dny**, **${ formattedAccessibleAt }**. Jejich žádost můžete kdykoli odmítnout nebo jim přístup poskytnout okamžitě.", @@ -6862,6 +7028,9 @@ "Invalid invitation link": [ "Neplatný odkaz pozvánky" ], + "Invalid joining link. Please contact your administrator.": [ + "Neplatný odkaz pro připojení. Obraťte se prosím na svého správce." + ], "Invalid name": [ "Neplatný název" ], @@ -7042,9 +7211,6 @@ "Please try again in a few moments.": [ "Zkuste to prosím za chvíli znovu." ], - "Please upgrade to a business plan with more than 1 user to get multi-user support": [ - "Chcete-li získat podporu pro více uživatelů, přejděte na firemní tarif" - ], "Please upgrade to a business plan with more than 1 user to manage multiple users.": [ "Chcete-li spravovat více uživatelů, přejděte na firemní tarif." ], @@ -7072,6 +7238,9 @@ "Primary key retrieved for ${ BRAND_NAME } user is not valid for sending": [ "Primární klíč pro uživatele ${ BRAND_NAME } není možné použít pro odesílání" ], + "Private users can be added to group once they've signed in for the first time: ${ displayedNames }": [ + "Soukromí uživatelé mohou být přidáni do skupiny, jakmile se poprvé přihlásí: ${ displayedNames }" + ], "Process aborted": [ "Proces přerušen" ], @@ -7132,6 +7301,9 @@ "Tab closed": [ "Záložka zavřena" ], + "The address is already activated": [ + "Tato adresa je již aktivována" + ], "The address might be misspelled": [ "Adresa může obsahovat překlep" ], @@ -7467,6 +7639,9 @@ "Ask your administrator to enable Account monitor.": [ "Požádejte správce o povolení sledování účtu." ], + "Enable account monitor to start loading event.": [ + "Povolte monitor účtu pro spuštění načítání události." + ], "Error: ${ errorMessage }": [ "Chyba: ${ errorMessage }" ], @@ -7984,12 +8159,36 @@ ] }, "Feature": { + "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME } desktop app": [ + "Desktopová aplikace ${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME }" + ], "${ MaxVPN } VPN connection": [ "${ MaxVPN } VPN připojení", "${ MaxVPN } VPN připojení", "${ MaxVPN } VPN připojení", "${ MaxVPN } VPN připojení" ], + "${ PROTON_SENTINEL_NAME } account protection": [ + "Ochrana účtu ${ PROTON_SENTINEL_NAME }" + ], + "15 GB storage": [ + "15 GB úložiště" + ], + "3 email domains": [ + "3 e-mailové domény" + ], + "3 folders, labels and filters": [ + "3 složky, štítky a filtry" + ], + "500 GB storage": [ + "500 GB úložiště" + ], + "500 MB Mail storage": [ + "500 MB úložiště pro e-maily" + ], + "500 MB storage": [ + "500 MB úložiště" + ], "Access to all countries": [ "Přístup ke všem zemím" ], @@ -8020,20 +8219,38 @@ "More premium features": [ "Další prémiové funkce" ], + "Premium features in Mail, Calendar, Drive, Pass and VPN": [ + "Prémiové funkce v aplikacích Mail, Calendar, Drive, Pass a VPN" + ], + "Priority support": [ + "Přednostní podpora" + ], "Remove": [ "Odebrat" ], + "Schedule and snooze emails": [ + "Naplánujte a odložte e-maily" + ], "Secure Core servers": [ "Servery Secure Core" ], "Secure streaming support": [ "Zabezpečená podpora streamování" ], + "Short domain @pm.me": [ + "Krátká doména @pm.me" + ], "Torrenting support (P2P)": [ "Podpora Torrentu (P2P)" ], + "Unlimited folders, labels and filters": [ + "Neomezený počet složek, štítků a filtrů" + ], "Unlimited hide-my-email aliases": [ "Neomezený počet aliasů Hide-my-email" + ], + "Use your own email domain": [ + "Použijte svou vlastní e-mailovou doménu" ] }, "Features": { @@ -8401,11 +8618,6 @@ "${ BRAND_NAME }. Privacy by default." ] }, - "Force upgrade safety review": { - "I understand that I will no longer be able to sign in to older versions of ${ BRAND_NAME } mobile apps.": [ - "Chápu, že se již nebudu moci přihlásit ve starších verzích mobilních aplikací ${ BRAND_NAME }." - ] - }, "Form heading": { "Enter your email address": [ "Zadejte svou e-mailovou adresu" @@ -8501,6 +8713,9 @@ "Group detail label": { "Description:": [ "Popis:" + ], + "Group address:": [ + "Adresa skupiny:" ] }, "Group member count": { @@ -8764,9 +8979,6 @@ "Contact us": [ "Kontaktujte nás" ], - "Downloads": [ - "Stažení" - ], "Enjoying ${ planName }?": [ "Užíváte si ${ planName }?" ], @@ -9137,6 +9349,9 @@ "Canceled": [ "Zrušeno" ], + "Canceling...": [ + "Ruší se..." + ], "Delayed": [ "Zpožděno" ], @@ -9155,6 +9370,9 @@ "Paused": [ "Pozastaveno" ], + "Undo finished": [ + "Vzetí zpět dokončeno" + ], "Undo in progress": [ "Vzetí zpět probíhá" ] @@ -9214,6 +9432,9 @@ "${ boldWarning } You will lose access to all current encrypted data in your account if you continue.": [ "${ boldWarning } Pokud budete pokračovat, ztratíte přístup ke všem aktuálním zašifrovaným datům na svém účtu." ], + "${ BRAND_NAME } Business plans gives your team all the collaboration tools they need to be productive and organized in their work, while safeguarding your business.": [ + "Tarify ${ BRAND_NAME } Business poskytují vašemu týmu všechny nástroje pro spolupráci, které potřebuje k produktivní a organizované práci, a zároveň chrání vaši firmu." + ], "${ BRAND_NAME } is privacy you can trust, ensured by strong encryption, open-source code, and Swiss privacy laws. We believe nobody should be able to exploit your data, period. Our technology and business are based upon this fundamentally stronger definition of privacy.": [ "${ BRAND_NAME } je soukromí, kterému můžete důvěřovat, zajištěné silným šifrováním, otevřeným zdrojovým kódem a švýcarskými zákony o ochraně osobních údajů. Věříme, že nikdo by neměl mít možnost zneužít vaše data, tečka. Naše technologie a podnikání jsou založeny na takto vysoké definici soukromí." ], @@ -9224,7 +9445,10 @@ "Asistent psaní ${ BRAND_NAME } Scribe" ], "${ BRAND_NAME } will send a verification code to ${ phoneNumber }. Standard message rates may apply.": [ - "${ BRAND_NAME } zašle ověřovací kód na číslo ${ phoneNumber }. Mohou být účtovány standardní poplatky za zaslání zprávy." + "${ BRAND_NAME } zašle ověřovací kód na číslo ${ phoneNumber }. Mohou být účtovány běžné poplatky za zprávy." + ], + "${ BRAND_NAME } will send a verification code to your recovery phone. Standard message rates may apply.": [ + "${ BRAND_NAME } zašle ověřovací kód na váš telefon, který je určen pro obnovení. Mohou být účtovány běžné poplatky za zprávy." ], "${ BRAND_NAME }'s encryption technology means that nobody can access your password - not even us.": [ "Díky šifrovací technologii ${ BRAND_NAME } se k vašemu heslu nikdo nedostane - ani my ne." @@ -9508,6 +9732,9 @@ "(eg. PCMag, TechRadar)": [ "(např. PCMag, TechRadar)" ], + "(eg. The Vergecast, Big Technology Podcast)": [ + "(např. The Vergecast, Big Technology Podcast)" + ], "(Filter if ALL of the following conditions are met)": [ "(Filtrování pokud jsou splněny všechny následující podmínky)" ], @@ -9554,14 +9781,20 @@ "**Synchronizovat kódy** na všechny vaše zařízení" ], "**This will disable 2-factor authentication.**": [ - "**Tím se deaktivuje dvoufázové ověřování.**" + "**Tímto dojde k deaktivaci dvoufázové ověřování.**" ], "**This will disable end-to-end encrypted email forwardings:** you can set them up again later.": [ "**Toto deaktivuje koncově šifrovaná přeposílání e-mailů:** můžete je znovu nastavit později." ], + "**Your recovery email alone doesn't allow you to recover your encrypted data** after you reset your password.": [ + "**Samotný e-mail pro obnovení vám neumožňuje obnovit zašifrovaná data** po resetování vašeho hesla." + ], "**Your recovery methods will be invalidated:** you can generate new recovery data later.": [ "**Vaše metody obnovení budou zneplatněny:** nové údaje pro obnovu si můžete vygenerovat později." ], + "**Your recovery phone alone doesn’t allow you to recover your encrypted data** after you reset your password.": [ + "**Samotný telefon pro obnovení vám neumožňuje obnovit zašifrovaná data** po resetování vašeho hesla." + ], "+ ${ invisibleCount } More": [ "+ ${ invisibleCount } další", "+ ${ invisibleCount } další", @@ -9589,6 +9822,9 @@ "A ${ protonSubdomain } is hosted by ${ BRAND_NAME }, which allows you to quickly set up a subdomain. ${ learnMoreLink }": [ "${ protonSubdomain } hostuje ${ BRAND_NAME }, což umožňuje rychlé zprovoznění subdomény. ${ learnMoreLink }" ], + "A custom domain is required to create groups. If you don't have a custom domain set up, do so first under ${ linkToDomainPage }.": [ + "K vytvoření skupin je nutná vlastní doména. Pokud nemáte nastavenou vlastní doménu, udělejte to nejprve v části ${ linkToDomainPage }." + ], "A name to help you identify where you use it so you can easily revoke it or extend it later.": [ "Název, který vám pomůže zapamatovat si jeho použití, abyste později mohli konfiguraci snadno zrušit nebo rozšířit." ], @@ -9631,12 +9867,21 @@ "Add ${ PLAN_NAMES[PLANS.MEET_BUSINESS] }": [ "Přidat ${ PLAN_NAMES[PLANS.MEET_BUSINESS] }" ], + "Add 1 to 5 people who you trust and can contact easily. They will be able to reset your password for you by signing in to your account. They must already have a ${ BRAND_NAME } Account.": [ + "Přidejte 1 až 5 osob, kterým důvěřujete a které můžete snadno kontaktovat. Tyto osoby budou moci za vás resetovat heslo po přihlášení k vašemu účtu. Musí již mít účet u ${ BRAND_NAME }." + ], "Add a @pm.me email address to your account. This simple, shorter domain stands for \"${ MAIL_APP_NAME } me\" or \"Private Message me.\"": [ "Přidejte e-mailovou adresu @pm.me do svého účtu. Tato jednoduchá a kratší doména znamená \"${ MAIL_APP_NAME } me\" nebo \"Private Message me.\"" ], + "Add a phone number in case we need to contact you": [ + "Přidejte telefonní číslo pro případ, že bychom vás potřebovali kontaktovat" + ], "add a recovery method": [ "přidali metodu obnovení" ], + "Add an email address in case we need to contact you": [ + "Přidejte e-mailovou adresu pro případ, že bychom vás potřebovali kontaktovat" + ], "Add another layer of security to your account. You’ll need to verify yourself with 2FA every time you sign in.": [ "Přidejte další úroveň zabezpečení do vašeho účtu. Budete se muset oveřit pomocí 2FA při každém přihlášení." ], @@ -9658,18 +9903,15 @@ "Přidat servery (${ availableAddedCount } k dispozici)", "Přidat servery (${ availableAddedCount } k dispozici)" ], + "Add users by name or email to this group.": [ + "Přidejte do této skupiny uživatele podle jména nebo e-mailové adresy." + ], "Add video conferencing links to calendar invitations": [ "Přidat odkazy na videokonference do pozvánek kalendáře" ], "Add your name and logo to create a more personalized experience for your organization.": [ "Přidejte své jméno a logo a vytvořte pro svou organizaci personalizované prostředí." ], - "Adding ${ addedServerCount } gateway server": [ - "Přidávání ${ addedServerCount } serveru brány", - "Přidávání ${ addedServerCount } serverů brány", - "Přidávání ${ addedServerCount } serverů brány", - "Přidávání ${ addedServerCount } serverů brány" - ], "Adding an external email address will disable end-to-end encryption for all email communication within that group. Do you want to proceed?": [ "Přidáním externí e-mailové adresy se deaktivuje koncové šifrování pro veškerou e-mailovou komunikaci v rámci této skupiny. Chcete pokračovat?" ], @@ -9748,6 +9990,12 @@ "Allow users to connect to secure shared servers from the **Countries** section of the ${ VPN_APP_NAME } app.": [ "Umožňuje uživatelům připojit se k bezpečným sdíleným serverům ze sekce **Země** v aplikaci ${ VPN_APP_NAME }." ], + "Allowing QR code sign-in will let you sign in by scanning a QR code if you forget your password. All you need is to be signed in to a ${ BRAND_NAME } service on another device.": [ + "Pokud povolíte přihlášení pomocí QR kódu, budete se moci přihlásit naskenováním QR kódu v případě, že zapomenete heslo. Stačí, abyste byli přihlášeni ke službě ${ BRAND_NAME } na jiném zařízení." + ], + "Allowing the password reset from the settings lets you to change your password if you’ve lost it, but are still signed in to ${ BRAND_NAME }.": [ + "Povolení resetování hesla v nastavení vám umožní změnit heslo, pokud jste ho ztratili, ale jste stále přihlášeni do služby ${ BRAND_NAME }." + ], "Already allocated": [ "Již bylo přiděleno" ], @@ -9781,6 +10029,9 @@ "An import is paused because the connection to your email provider was lost.": [ "Import byl pozastaven, protože došlo ke ztrátě připojení k vašemu poskytovateli e-mailových služeb." ], + "An import is paused because your storage is almost full.": [ + "Import je pozastaven, protože vaše úložiště je téměř plné." + ], "An SMS with a verification code was just sent to ${ phoneNumber }.": [ "Na číslo ${ phoneNumber } byla právě odeslána SMS s ověřovacím kódem." ], @@ -9857,7 +10108,7 @@ "Opravdu chcete své štítky řadit podle abecedy?" ], "Ask them to sign in to their ${ ACCOUNT_APP_NAME } in the browser, and go to **Settings → All settings → Recovery → Emergency access→ People who trust me.**": [ - "Požádejte je, aby se v prohlížeči přihlásili ke svému účtu ${ ACCOUNT_APP_NAME } a přešli do části **Nastavení → Všechna nastavení → Obnova → Nouzový přístup → Lidé, kterým důvěřuji.**" + "Požádejte je, aby se v prohlížeči přihlásili ke svému účtu ${ ACCOUNT_APP_NAME } a přešli do části **Nastavení → Všechna nastavení → Obnovení → Nouzový přístup → Lidé, kteří mi důvěřují**." ], "Ask your organization admin to setup Gateways.": [ "Požádejte správce organizace o nastavení brány." @@ -9938,7 +10189,7 @@ "Před vyžádáním nového ověřovacího kódu zkontrolujte složku spamu a zkontrolujte, zda je adresa ${ strong } správná." ], "Before sending a new verification code, check your spam folder for ${ EmailOrPhoneNumber }.": [ - "Než vám zašleme nový ověřovací kód, zkontrolujte prosím složku se spamem, zda se tam nenachází zpráva od ${ EmailOrPhoneNumber }." + "Než vám zašleme nový ověřovací kód, zkontrolujte prosím složku se spamem, zda se tam nenachází zpráva pro ${ EmailOrPhoneNumber }." ], "Before you can receive emails for your custom domain addresses at ${ MAIL_APP_NAME }, you need to add the following two MX records in your DNS console (located on the platform where you purchased the custom domain). You can find an example and some helpful tips ${ kbLink }.": [ "Než budete moci přijímat e-maily na adresy své vlastní domény u služby ${ MAIL_APP_NAME }, je potřeba přidat následující dva záznamy MX do konzole DNS (nachází se na platformě, kde jste zakoupili vlastní doménu). Příklad a několik užitečných tipů naleznete ${ kbLink }." @@ -9949,6 +10200,12 @@ "Beta": [ "Beta" ], + "Billed at ${ monthlyDiscountedPrice } for the first 6 months, renews at ${ monthlyRenewalPrice }.": [ + "Cena za prvních 6 měsíců činí ${ monthlyDiscountedPrice }, při prodloužení pak ${ monthlyRenewalPrice }." + ], + "Billed at ${ yearlyDiscountedPrice } for the first 12 months, renews at ${ yearlyRenewalPrice }.": [ + "Cena za prvních 12 měsíců činí ${ yearlyDiscountedPrice }, při prodloužení pak ${ yearlyRenewalPrice }." + ], "Billing cycle: ${ text }": [ "Fakturační cyklus: ${ text }" ], @@ -9958,9 +10215,15 @@ "Boost your organization’s brand identity and create a more consistent online experience for your users.": [ "Zlepšete identitu značky své organizace a vytvořte konzistentnější online prostředí pro své uživatele." ], + "By adding people you trust as recovery contacts, we'll be able to send them an email to help you if you're having trouble recovering your data after a password reset. You can also be a recovery contact for others.": [ + "Pokud přidáte lidi, kterým důvěřujete, jako své kontakty pro obnovení, budeme jim moci poslat e-mail s žádostí o pomoc, v případě, že budete mít potíže s obnovením dat po resetování hesla. I vy sami se můžete stát pro ostatní kontaktem pro obnovení." + ], "By creating a ${ PASS_APP_NAME } account with your SimpleLogin email, you can manage your aliases directly from ${ PASS_APP_NAME }.": [ "Vytvořením účtu ${ PASS_APP_NAME } s vaším e-mailem SimpleLogin můžete spravovat své aliasy přímo z ${ PASS_APP_NAME }." ], + "By disabling account monitor, you will also clear your entire history. Are you sure you want to disable this?": [ + "Deaktivací monitoru účtu smažete také celou vaší historii. Opravdu chcete pokračovat v deaktivaci?" + ], "By downgrading to a Free plan, you will permanently lose these benefits, even if you upgrade again in the future.": [ "Pokud svůj aktuální tarif snížíte na bezplatnou verzi, navždy ztratíte současné výhody, i když v budoucnu svůj účet znovu povýšíte." ], @@ -9970,11 +10233,14 @@ "By sharing the full event details of this calendar, you accept to grant ${ BRAND_NAME } access to this calendar's encrypted information.": [ "Sdílením úplných údajů o události tohoto kalendáře souhlasíte s udělením přístupu ${ BRAND_NAME } k šifrovaným informacím tohoto kalendáře." ], + "Can you access your active session?": [ + "Máte přístup ke své aktivní relaci?" + ], "Can you access your active web session in another browser?": [ "Máte přístup ke své aktivní webové relaci v jiném prohlížeči?" ], "Can you reach out to your contact?": [ - "Mohl bys se spojit se svým kontaktem?" + "Můžete se spojit se svým kontaktem?" ], "Cancel": [ "Zrušit" @@ -9994,9 +10260,6 @@ "Change your password": [ "Změňte své heslo" ], - "Check the status of imports and forwarding.": [ - "Zkontrolujte stav importování a přeposílání." - ], "Check your network and try again.": [ "Zkontrolujte připojení k síti a zkuste to znovu." ], @@ -10007,13 +10270,13 @@ "Pro pokračování vyberte ID subjektu." ], "Choose your service to connect with": [ - "Vyberte si službu, ke které se chcete připojit" + "Vyberte službu, kterou chcete propojit" ], "Click \"Request new code\" to have a new verification code sent to ${ strong }. If this phone number is incorrect, click \"Edit\" to correct it.": [ "Klikněte na \"Požádat o nový kód\" pro zaslání nového ověřovacího kódu na ${ strong }. Pokud je toto telefonní číslo nesprávné, klepněte na tlačítko \"Upravit\" pro jeho opravu." ], "Click 'Trouble signing in?' on your TV to follow the alternative steps.": [ - "Na televizoru klikněte na možnost „Problémy s přihlášením?“ a postupujte podle alternativních pokynů." + "Na televizoru klikněte na možnost „Potíže s přihlášením?“ a postupujte podle alternativních pokynů." ], "Click **Request password reset** and follow the prompts.": [ "Klikněte na **Požádat o resetování hesla** a postupujte podle pokynů." @@ -10030,6 +10293,9 @@ "CNET editors choice award with a rating of 8.4 out of 10": [ "Cena redakce CNET s hodnocením 8,4 z 10 hvězd" ], + "Code has been re-sent.": [ + "Kód byl znovu odeslán." + ], "Coming soon": [ "Již brzy" ], @@ -10045,6 +10311,9 @@ "Configure SAML authentication for your organization through an identity provider like Okta, Microsoft Azure, or Google Identity Platform. This will enable SAML for the whole organization.": [ "Nastavte pro svoji organizaci ověřování pomocí SAML prostřednictvím poskytovatele identity jako Okta, Microsoft Azure, nebo Google Identity Platform. Tento krok aktivuje SAML pro celou organizaci." ], + "Connect and manage your external mailboxes in ${ MAIL_APP_NAME }.": [ + "Připojte a spravujte své externí poštovní schránky v aplikaci ${ MAIL_APP_NAME }." + ], "Connection data will be available in around 1 hour.": [ "Údaje o připojení budou k dispozici přibližně za 1 hodinu." ], @@ -10105,12 +10374,6 @@ "Create a new code on your TV and try again.": [ "Vytvořte na televizoru nový kód a zkuste to znovu." ], - "Create a secure cloud for ${ value } member": [ - "Vytvořte bezpečný cloud pro ${ value } člena", - "Vytvořte bezpečný cloud pro ${ value } členy", - "Vytvořte bezpečný cloud pro ${ value } členů", - "Vytvořte bezpečný cloud pro ${ value } členů" - ], "Create an account": [ "Vytvořit účet" ], @@ -10174,6 +10437,9 @@ "Data recoverable on this device": [ "Data obnovitelná v tomto zařízení" ], + "Data recoverable with recovery phrase": [ + "Data, která lze obnovit pomocí obnovovací fráze" + ], "dedicated servers": [ "dedikované servery" ], @@ -10222,6 +10488,9 @@ "Disabling authenticator app 2FA will make your account less secure. Only proceed if absolutely necessary.": [ "Deaktivováním dvoufázového ověření bude váš účet méně zabezpečený. Pokračujte pouze zda je to úplně nezbytné." ], + "Disabling the data backup on this device will prevent you from automatically unlocking your encrypted data after a password reset.": [ + "Vypnutím zálohování dat na tomto zařízení zabráníte automatickému odemknutí šifrovaných dat po resetování hesla." + ], "Discount": [ "Sleva" ], @@ -10312,6 +10581,9 @@ "Drop to import": [ "Přetažením provedete import" ], + "Due to end-to-end encryption, you can reset your password, but ${ DataLockedText } until you use a ${ DataRecoveryOptionsLink }:": [ + "Díky koncovému šifrování si můžete heslo resetovat, ale ${ DataLockedText }, dokud nepoužijete ${ DataRecoveryOptionsLink }:" + ], "Each code can only be used once": [ "Každý kód lze použít pouze jednou" ], @@ -10381,6 +10653,9 @@ "Enabling recovery by phrase again will generate a new recovery phrase.": [ "Opětovné povolení obnovení pomocí fráze vygeneruje novou frázi pro obnovení." ], + "Enabling the data backup on this device will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset, simply by signing in on this device.": [ + "Aktivací zálohování dat na tomto zařízení si po resetování hesla obnovíte přístup k e-mailům, kontaktům, souborům, heslům a dalším šifrovaným datům ve vašem účtu – stačí se na tomto zařízení přihlásit." + ], "Encryption setting updated": [ "Nastavení šifrování aktualizováno" ], @@ -10411,6 +10686,9 @@ "Enter a password to finalize your ${ BRAND_NAME } Account and start using ${ VPN_APP_NAME } across all your devices!": [ "Zadejte heslo pro dokončení nastavení svého účtu ${ BRAND_NAME } a začněte používat ${ VPN_APP_NAME } na všech svých zařízeních!" ], + "Enter code": [ + "Zadejte kód" + ], "Enter key manually instead": [ "Místo toho vložte klíč ručně" ], @@ -10537,6 +10815,9 @@ "for ${ price }": [ "za ${ price }" ], + "For a 10-year version history, please contact our sales team.": [ + "Pro 10letou historii verzí prosím kontaktujte náš obchodní tým." + ], "For anytime access to email and an optimized mobile experience, download our ${ androidAppLink } or ${ iosAppLink }.": [ "Chcete-li mít kdykoli přístup k e-mailu a optimalizované mobilní prostředí, stáhněte si naši aplikaci ${ androidAppLink } nebo ${ iosAppLink }." ], @@ -10549,9 +10830,6 @@ "For users who are switching to ${ MAIL_APP_NAME } from another email service, select the ${ boldAddresses } tab and add all active email addresses before changing the MX record to ensure a smooth transition.": [ "Pro uživatele, kteří přecházejí na ${ MAIL_APP_NAME } z jiné e-mailové služby, vyberte kartu ${ boldAddresses } a před změnou záznamu MX přidejte všechny aktivní e-mailové adresy, aby byl zajištěn plynulý přechod." ], - "Forwarding automatically sends new incoming emails to your Inbox.": [ - "Funkce přesměrování automaticky přesouvá nové příchozí e-maily do složky Doručená pošta." - ], "Free forever": [ "Navždy zdarma" ], @@ -10559,13 +10837,16 @@ "Bezplatná zkušební verze" ], "Free up space or upgrade your storage to continue.": [ - "Uvolněte místo nebo si pořiďte větší úložný prostor, abyste mohli pokračovat." + "Pro pokračování uvolněte úložný prostor, nebo zvyšte kapacitu úložiště navýšením svého tarifu." + ], + "Friends and family": [ + "Přátelé a rodina" ], "From there, they can request emergency access to your account by clicking **Request access.**": [ - "Odtud mohou požádat o nouzový přístup k vašemu účtu kliknutím na **Požádat o přístup.**" + "Odtud mohou požádat o nouzový přístup k vašemu účtu kliknutím na **Žádost o přístup**." ], "Gateway couldn't be deleted. Please try again": [ - "Bránu se nepodařilo odstranit. Zkuste to prosím znovu." + "Bránu nešlo smazat. Zkuste to prosím znovu." ], "Gateway deleted": [ "Brána smazána" @@ -10576,6 +10857,9 @@ "Gateways": [ "Brány" ], + "Generating a new recovery phrase will deactivate your current recovery phrase.": [ + "Vytvořením nové obnovovací fráze dojde k deaktivaci vaší současné obnovovací fráze." + ], "Generating a new recovery phrase will deactivate your old one.": [ "Vygenerováním nové obnovovací fráze bude deaktivována stará." ], @@ -10597,6 +10881,9 @@ "Get notified if your password or other personal data was leaked. ${ learnMoreLinkNoBreach }": [ "Dostanete upozornění, pokud došlo k úniku vašeho hesla nebo jiných osobních údajů. ${ learnMoreLinkNoBreach }" ], + "Get started": [ + "Začněme" + ], "Get started with the referral link above.": [ "Začněte s doporučujícím odkazem výše." ], @@ -10612,6 +10899,9 @@ "Go to your identity provider, get the SAML metadata for ${ appName } and import it here.": [ "Navštivte vašeho poskytovatele identity, stáhněte SAML metadata pro ${ appName } a importujte je sem." ], + "Google or other search engine": [ + "Google nebo jiný vyhledávač" + ], "Google Pay mark": [ "Značka Google Pay" ], @@ -10657,6 +10947,12 @@ "If another administrator changed this password, you will need to ask them for the new Organization Password.": [ "Pokud některý ze správců změnil heslo, budete ho muset požádat o nové heslo organizace." ], + "If disabled, ${ BRAND_NAME } will still use your recovery email to send security notifications.": [ + "I v případě deaktivace bude ${ BRAND_NAME } nadále používat vaši e-mailovou adresu pro obnovení k zasílání bezpečnostních oznámení." + ], + "If disabled, ${ BRAND_NAME } will still use your recovery phone to send security notifications.": [ + "I v případě deaktivace bude ${ BRAND_NAME } nadále používat váš telefon pro obnovení k zasílání bezpečnostních oznámení." + ], "If disabled, only administrators will be able to export data.": [ "Pokud je deaktivováno, pouze správci budou moci exportovat data." ], @@ -10675,6 +10971,9 @@ "If keyboard shortcuts are enabled, you can use the following keys for quick actions or to jump to different views. ${ metaKey } + K is always enabled.": [ "Pokud jsou povoleny klávesové zkratky, můžete pro rychlé akce nebo pro přechod do různých zobrazení použít následující klávesy. Zkratka ${ metaKey } + K je vždy povolena." ], + "If possible, when signing in, use a device or a browser where you’ve signed in before.": [ + "Pokud je to možné, použijte při přihlášení zařízení nebo prohlížeč, ve kterém jste se již dříve přihlásili." + ], "If the email you entered was used to reserve a child's email address, we'll resend the activation voucher.": [ "Pokud e-mail, který jste zadali, byl použit k rezervaci e-mailové adresy dítěte, znovu vám zašleme aktivační poukaz." ], @@ -10717,6 +11016,9 @@ "If you lose your two-factor-enabled device, these codes can be used instead of the 6-digit two-factor authentication code to sign in to your account. Each code can only be used once.": [ "Ztratíte-li zařízení určené pro dvoufázové ověření, můžete pro přihlášení použít následující kódy místo 6-místného 2FA kódu. Každý kód může být použit pouze jednou." ], + "If you lost access to your authenticator app, you can use 1 of the 16 backup recovery codes provided when your set up two-factor authentication. ${ learnMoreLink }": [ + "Pokud jste ztratili přístup ke své ověřovací aplikaci, můžete použít jeden ze 16 záložních obnovovacích kódů, které jste obdrželi při nastavování dvoufázového ověřování. ${ learnMoreLink }" + ], "If you proceed with the downgrade, you will lose access to ${ MAIL_APP_NAME } and ${ VPN_APP_NAME } paid features.": [ "Pokud budete pokračovat ve snížení úrovně účtu, ztratíte přístup k placeným funkcím ${ MAIL_APP_NAME } a ${ VPN_APP_NAME }." ], @@ -10729,6 +11031,9 @@ "If you purchased a gift code or received one from our support team, you can enter it here.": [ "Pokud jste zakoupili dárkový kód nebo jej obdrželi od našeho týmu podpory, můžete jej zadat zde." ], + "If you recently reset your password, you can ${ recoveryMethodLink } to unlock your data. If this is due to an old password reset, you can stop the message from showing again.": [ + "Pokud jste si nedávno resetovali heslo, můžete pomocí odkazu ${ recoveryMethodLink } odemknout svá data. Pokud se jedná o starý reset hesla, můžete zabránit opětovnému zobrazování této zprávy." + ], "If you recently reset your password, you can use a data recovery method to unlock your data": [ "Pokud jste nedávno resetovali heslo, můžete svá data odemknout pomocí metody obnovy dat" ], @@ -10831,6 +11136,9 @@ "Internet connection restored.": [ "Připojení k internetu obnoveno." ], + "Invalid code. ${ RequestNewCodeLink } and try again.": [ + "Neplatný kód. ${ RequestNewCodeLink } a zkuste to znovu." + ], "Invitation link expired": [ "Odkazu pozvánky vypršela platnost" ], @@ -10927,6 +11235,12 @@ "Item updated in vault": [ "Položka v trezoru aktualizována" ], + "It’s often the easiest way to recover your account if you’re signed in.": [ + "Pokud jste přihlášeni, je to často nejjednodušší způsob, jak obnovit přístup k účtu." + ], + "It’s the only way to instantly recover everything, so make sure you keep it somewhere safe but accessible.": [ + "Jde o jediný způsob, jak okamžitě obnovit vše, proto zajistěte uložení na bezpečném a dostupném místě." + ], "JCB logo": [ "JCB logo" ], @@ -11116,6 +11430,9 @@ "New VPN connection data will stop being collected and shown.": [ "Data o nových připojeních VPN se přestanou shromažďovat a zobrazovat." ], + "News or media article": [ + "Noviny nebo článek v médiích" + ], "Next billing date": [ "Datum další fakturace" ], @@ -11131,15 +11448,15 @@ "No card required": [ "Není vyžadována karta" ], + "No connected addresses.": [ + "Žádné připojené adresy." + ], "No countries enabled": [ "Žádné povolené země" ], "No folder selected": [ "Není vybrána žádná složka" ], - "No forwarding history.": [ - "Žádná historie přeposílání." - ], "No gateways": [ "Žádné brány" ], @@ -11194,12 +11511,18 @@ "On Ubuntu?": [ "Používáte Ubuntu?" ], + "Once access to your account has been granted, they can access your **Recovery** settings and **change your ${ ACCOUNT_APP_NAME } password** for you.": [ + "Jakmile bude přístup k vašemu účtu povolen, budou mít přístup k vašim nastavením **Obnovení** a budou moci za vás **změnit heslo k aplikaci ${ ACCOUNT_APP_NAME }**." + ], "Once you reset your password:": [ "Po resetu vašeho hesla:" ], "Only change these settings if you are using PGP with non-${ BRAND_NAME } recipients.": [ "Tato nastavení změňte, pouze pokud používáte PGP s příjemci, kteří nepoužívají službu ${ BRAND_NAME }." ], + "Only sign in on devices you trust": [ + "Přihlašujte se pouze na zařízeních, kterým důvěřujete" + ], "Only you can see the label": [ "Pouze vy můžete vidět štítek" ], @@ -11213,7 +11536,7 @@ "Otevřete průvodce, kde najdete doporučené kroky a užitečné odkazy." ], "Open your active session in the browser, and go to **Settings → All settings → Recovery → Password reset settings.**": [ - "Otevřete svou aktivní relaci v prohlížeči a přejděte do části **Nastavení → Všechna nastavení → Obnova → Nastavení obnovení hesla.**" + "Otevřete svou aktivní relaci v prohlížeči a přejděte do části **Nastavení → Všechna nastavení → Obnovení → Nastavení resetování hesla**." ], "Open your Safari settings for the extension and verify site permissions are enabled for ${ BRAND_NAME } domains": [ "Otevřete nastavení Safari pro rozšíření a ověřte, zda jsou oprávnění pro domény ${ BRAND_NAME } povolena." @@ -11251,6 +11574,9 @@ "Organize your dedicated servers into Gateways and decide which members can access them.": [ "Uspořádejte dedikované servery do bran a rozhodněte, kteří členové k nim mohou přistupovat." ], + "Other": [ + "Ostatní" + ], "Other accounts": [ "Další účty" ], @@ -11438,7 +11764,10 @@ "Recenze produktů, žebříčky nebo průvodce" ], "Professional": [ - "Profesionál" + "Professional" + ], + "Protect this device too?": [ + "Chránit i toto zařízení?" ], "Protect your account from quantum computing threats with quantum-resistant cryptographic keys.": [ "Chraňte svůj účet před hrozbami kvantových výpočtů pomocí kvantově odolných kryptografických klíčů." @@ -11470,6 +11799,12 @@ "Recommended on trusted devices. ${ keepMeSignedInLearnMoreLink }": [ "Doporučeno na důvěryhodných zařízeních. ${ keepMeSignedInLearnMoreLink }" ], + "Recovery by email is not available while ${ PROTON_SENTINEL_NAME } is enabled.": [ + "Obnova pomocí e-mailu není k dispozici, pokud je zapnuta služba ${ PROTON_SENTINEL_NAME }." + ], + "Recovery by phone is not available while ${ PROTON_SENTINEL_NAME } is enabled.": [ + "Obnova přes telefon není k dispozici, pokud je aktivována služba ${ PROTON_SENTINEL_NAME }." + ], "Recovery file downloaded": [ "Soubor pro obnovení byl stažen" ], @@ -11524,6 +11859,9 @@ "Resend verification email": [ "Znovu zaslat ověřovací e-mail" ], + "Resetting your password in your active web session will ensure **your encrypted data will remain accessible** after you change your password.": [ + "Resetováním hesla v rámci aktuální webové relace zajistí, že **vaše šifrovaná data zůstanou přístupná** i po změně hesla." + ], "Restore": [ "Obnovit" ], @@ -11620,6 +11958,9 @@ "Set up your organization": [ "Nastavte svou organizaci" ], + "Set up your organization and start protecting your data in a few easy steps.": [ + "Nastavte svou organizaci a začněte chránit svá data v několika snadných krocích." + ], "Setting successfully saved": [ "Nastavení úspěšně uloženo" ], @@ -11746,6 +12087,9 @@ "Store this password and file in a safe place. You’ll need them again to import your key.": [ "Heslo a soubor uschovejte na bezpečném místě. Budete je znovu potřebovat k importu klíče." ], + "Submit": [ + "Odeslat" + ], "Submit a deposit using the following address or scan the QR code. Your deposit will be reflected in your account after confirmation.": [ "Zálohu odešlete na následující adresu nebo naskenujte QR kód. Po potvrzení se vklad promítne na váš účet." ], @@ -11825,7 +12169,7 @@ "Děkujeme za zpětnou vazbu!" ], "The ${ bandwidthLimitLink } was reached. We'll automatically resume it once it resets.": [ - "${ bandwidthLimitLink } byl dosažen. Jakmile se limit vynuluje, automaticky obnovíme připojení." + "${ bandwidthLimitLink } byl dosažen. K automatickému obnovení dojde po resetu limitu." ], "The ${ boldDataLocked } message will no longer be shown, but you can still unlock your data under ${ encryptionAndKeysLink }.": [ "Zpráva ${ boldDataLocked } se již nebude zobrazovat, ale stále můžete svá data odemknout pomocí ${ encryptionAndKeysLink }." @@ -11896,6 +12240,9 @@ "The name will be visible to your users while they are signed in.": [ "Jméno bude viditelné vašim uživatelům, když budou přihlášeni." ], + "The referral credit can be awarded up to 2 months after your friend's trial ended, only if your friend subscribed to a plan.": [ + "Kredit za doporučení lze získat nejpozději do 2 měsíců po skončení zkušební verze vašeho přítele, a to pouze v případě, že si váš přítel předplatil některý z tarifů." + ], "The securest way to browse, stream, and be online.": [ "Nejbezpečnější způsob, jak procházet, streamovat a být online." ], @@ -11989,6 +12336,9 @@ "This verification can take up to one hour. After successful verification, do not remove the TXT record as it is needed to confirm that you continue to own the domain.": [ "Toto ověření může trvat až jednu hodinu. Po úspěšném ověření neodebírejte záznam TXT, protože je potřebný k potvrzení, že jste nadále vlastníkem domény." ], + "This will allow the TV to access your ${ BRAND_NAME } account.": [ + "Díky tomu bude mít televizor přístup k vašemu účtu ${ BRAND_NAME }." + ], "This will delete all previous versions of your files older than ${ rententionLabel }.": [ "Toto smaže všechny předchozí verze vašich souborů, které jsou starší než ${ rententionLabel }." ], @@ -12010,6 +12360,9 @@ "This will enable PayPal to be used to pay for your ${ BRAND_NAME } subscription. We will redirect you to PayPal in a new browser tab. If you use any pop-up blockers, please disable them to continue.": [ "Toto umožní použít Paypal pro platby ${ BRAND_NAME } předplatného. Přesměrujeme vás na váš PayPal v nové záložce prohlížeče. Pokud máte nastaveno blokování vyskakovacích oken, vypněte jej prosím než budete pokračovat." ], + "This will let you quickly and safely access your ${ BRAND_NAME } Account so you can change you password.": [ + "Díky tomu se budete moci rychle a bezpečně přihlásit ke svému účtu ${ BRAND_NAME } a změnit si heslo." + ], "This will permanently delete the data and all email addresses associated with these users.": [ "Tímto trvale smažete data a všechny e-mailové adresy spojené s těmito uživateli." ], @@ -12082,12 +12435,21 @@ "To decrypt and view your locked data after a password reset, select a recovery method.": [ "Chcete-li po resetování hesla dešifrovat a zobrazit uzamčená data, vyberte metodu obnovení." ], + "To ensure the highest possible security of your account, disable **Recovery by recovery email**.": [ + "Chcete-li zajistit co nejvyšší zabezpečení svého účtu, deaktivujte funkci **Obnovení pomocí e-mailu**." + ], + "To ensure the highest possible security of your account, disable **Recovery by recovery phone**.": [ + "Chcete-li zajistit co nejvyšší zabezpečení svého účtu, deaktivujte funkci **Obnovení pomocí telefonu**." + ], "To ensure you don’t lose important data, ${ DRIVE_APP_NAME } saves older versions of your files as you and your collaborators make changes. Select how long ${ BRAND_NAME } should keep previous versions.": [ "Abyste nepřišli o důležitá data, ${ DRIVE_APP_NAME } ukládá starší verze vašich souborů v době, kdy je vy a vaši spolupracovníci měníte.Vyberte, jak dlouho má ${ BRAND_NAME } uchovávat předchozí verze." ], "To fight spam and abuse, please verify you are human.": [ "Abyste zamezili spamu a obtěžování, potvrďte, že jste člověk." ], + "To help keep your account safe, we want to make sure it’s really you trying to sign in.": [ + "Abychom zajistili bezpečnost vašeho účtu, potřebujeme se ujistit, že se skutečně pokoušíte přihlásit vy." + ], "To import events, first create a calendar in ${ CALENDAR_APP_NAME }. This is where the events will appear after the import.": [ "Chcete-li importovat události, nejprve vytvořte kalendář v ${ CALENDAR_APP_NAME }. Po importu se zde zobrazí události." ], @@ -12163,6 +12525,9 @@ "Unable to verify recovery file signature. Please contact support.": [ "Nelze ověřit podpis souboru pro obnovení. Kontaktujte podporu." ], + "Unfortunately there is no recovery method available for this account.": [ + "Bohužel pro tento účet neexistuje žádný způsob obnovení." + ], "Unfortunately there is no recovery method saved for this account.": [ "Bohužel neexistuje žádná metoda obnovení uložená pro tento účet." ], @@ -12295,12 +12660,18 @@ "Verify your identity with a time-based one-time password from an authenticator app": [ "Ověřte totožnost pomocí časově omezeného jednorázového hesla z autentizační aplikace" ], + "Verifying ${ PASS_APP_NAME } browser extension...": [ + "Ověřování rozšíření prohlížeče ${ PASS_APP_NAME }..." + ], "Verifying your payment": [ "Ověřování vaší platby" ], "Version ${ version }": [ "Verze ${ version }" ], + "Version history": [ + "Historie verzí" + ], "Version number successfully copied to clipboard": [ "Číslo verze úspěšně zkopírováno do schránky" ], @@ -12331,6 +12702,12 @@ "We advise you to use official ${ VPN_APP_NAME } applications when possible.": [ "Doporučujeme používat jen oficiální aplikace ${ VPN_APP_NAME }, pokud je to možné." ], + "We can use your recovery email to send you a verification code to reset your password, and to contact you if we notice suspicious activity.": [ + "Na vaši e-mailovou adresu pro obnovení vám můžeme zaslat ověřovací kód pro resetování hesla a také vás kontaktovat, pokud zaznamenáme podezřelou aktivitu." + ], + "We can use your recovery phone to send you a verification code to reset your password, and to contact you if we notice suspicious activity.": [ + "Na váš telefon pro obnovení vám můžeme zaslat ověřovací kód pro resetování hesla a také vás kontaktovat, pokud zaznamenáme podezřelou aktivitu." + ], "We couldn't complete the transaction. Please try again.": [ "Transakci se nepodařilo dokončit. Zkuste to prosím znovu." ], @@ -12338,7 +12715,7 @@ "Vaši platbu jsme nemohli zpracovat." ], "We detected you are already signed in to a ${ BRAND_NAME } web app on **another browser**. You may be able to perform a password reset from your active session.": [ - "Zjistili jsme, že jste již přihlášeni do webové aplikace ${ BRAND_NAME } v **jiném prohlížeči**. Obnovení hesla můžete provést z aktuální relace." + "Zjistili jsme, že jste již přihlášeni do webové aplikace ${ BRAND_NAME } v **jiném prohlížeči**. Obnovení hesla můžete provést z aktivní relace." ], "We generated a strong password for you": [ "Vygenerovali jsme vám silné heslo" @@ -12376,6 +12753,9 @@ "We stored a backup file in this browser because you allowed data recovery on this ${ deviceLink }. If the backup file is valid, you will immediately regain complete or partial access to your encrypted data.": [ "Záložní soubor jsme uložili do tohoto prohlížeče, protože jste povolili obnovení dat na tomto ${ deviceLink }. Pokud je záložní soubor platný, okamžitě získáte úplný nebo částečný přístup k šifrovaným datům." ], + "We strongly recommend that everyone enable recovery by recovery phrase.": [ + "Důrazně doporučujeme, aby si každý aktivoval obnovení pomocí obnovovací fráze." + ], "We use 3-D Secure to protect your payments": [ "K zabezpečení vašich plateb používáme 3-D Secure" ], @@ -12424,9 +12804,6 @@ "When disabled, this prevents remote images from loading without your knowledge.": [ "Pokud je deaktivováno, zabraňuje načítání vzdálených obrázků bez vašeho vědomí." ], - "When enabled, we will check if ${ MAIL_APP_NAME } is your default mail application and notify you if it is not.": [ - "Pokud je povoleno, zkontrolujeme, zda je ${ MAIL_APP_NAME } vaší výchozí e-mailovou aplikací, a upozorníme vás, pokud tomu tak není." - ], "When enabling SAML for ${ appName } in your identity provider, you might be prompted to use the callback (ACS) URL and issuer ID. Just copy-paste the data below into your identity provider fields.": [ "Při povolování SAML pro ${ appName } u poskytovatele identit můžete být vyzváni k použití zpětné adresy URL (ACS) a ID vydavatele. Níže uvedené údaje stačí zkopírovat a vložit do polí poskytovatele identit." ], @@ -12568,9 +12945,6 @@ "You can edit this once to ensure the correct email address for verification.": [ "K zajištění správné e-mailové adresy pro ověření můžete tento údaj jednou upravit." ], - "You can enable the Photos section from the interface using the toggle below.": [ - "Sekci Fotky můžete povolit v rozhraní pomocí přepínače níže." - ], "You can enforce the password rules members of your organization will use when they create or reset the password to their ${ BRAND_NAME } Account.": [ "Můžete zavést pravidla pro hesla, která budou členové vaší organizace muset splnit při vytváření nebo resetování hesla ke svému účtu ${ BRAND_NAME }." ], @@ -12637,6 +13011,9 @@ "You don't have any referrals.": [ "Nikomu jste nedoporučili." ], + "You don’t need to open or read the file—just download it and store it somewhere safe.": [ + "Soubor nemusíte otevírat ani číst – stačí si ho stáhnout a uložit na bezpečné místo." + ], "You get notified if your password or other data was leaked from a third-party service.": [ "Nechte se upozornit, pokud vaše heslo nebo jiná data uniknou ze služby třetí strany." ], @@ -12722,7 +13099,7 @@ "Zprávy, soubory a další data zašifrovaná tímto klíčem NEBUDE možné dešifrovat. Všechna data podepsaná tímto klíčem již nebudou ověřována aplikacemi ${ BRAND_NAME }." ], "You will not be asked for a one-time code or a security key.": [ - "Nebudete požádáni o zadání jednorázového kódu ani bezpečnostního klíče." + "Nebude požadováno, abyste zadávali jednorázový kód ani bezpečnostní klíč." ], "You will regain complete or partial access to your encrypted data.": [ "Získáte zpět úplný nebo částečný přístup ke svým zašifrovaným datům." @@ -12745,6 +13122,12 @@ "You'll receive the credit reward 1 month after your friend subscribes to a yearly plan, and 2 months after they subscribe to a monthly plan.": [ "Odměnu v podobě kreditů získáte 1 měsíc poté, co si vaši přátelé předplatí roční tarif, a 2 měsíce poté, co si předplatí měsíční tarif." ], + "You'll receive the credit reward 1 month after your friend's trial ended.": [ + "Odměnu v podobě kreditu obdržíte 1 měsíc po skončení zkušební doby vašeho přítele." + ], + "You'll receive the credit reward 2 months after your friend's trial ended.": [ + "Odměnu v podobě kreditu obdržíte 2 měsíce po skončení zkušební doby vašeho přítele." + ], "You'll then be billed every ${ renewCycle } month at ${ renewAmountStr }. You can cancel at any time.": [ "Poté vám bude každý ${ renewCycle } měsíc účtováno ${ renewAmountStr }. Zrušit můžete kdykoli.", "Poté vám bude každé ${ renewCycle } měsíce účtováno ${ renewAmountStr }. Zrušit můžete kdykoli.", @@ -12778,6 +13161,9 @@ "Your ${ plan } subscription will be replaced with ${ PASS_SHORT_APP_NAME } Lifetime. The remaining balance of your subscription will be added to your account. ${ PASS_SHORT_APP_NAME } lifetime deal has no renewal price, it's a one-time payment for lifetime access to ${ PASS_SHORT_APP_NAME }.": [ "Vaše předplatné ${ plan } bude nahrazeno doživotním předplatným ${ PASS_SHORT_APP_NAME }. Zbývající část předplatného bude připsána na váš účet. Doživotní nabídka ${ PASS_SHORT_APP_NAME } nemá cenu za obnovení, jedná se o jednorázovou platbu za doživotní přístup k ${ PASS_SHORT_APP_NAME }." ], + "Your ${ planDisplayName } plan doesn’t just keep your business data and communications safe. It supports your compliance objectives, makes your business stand out, and keeps your team connected.": [ + "Váš tarif ${ planDisplayName } nechrání pouze vaše firemní data a komunikaci. Podporuje vaše cíle v oblasti dodržování předpisů, dává vaší firmě vyniknout a udržuje váš tým ve spojení." + ], "Your ${ VPN_APP_NAME } and ${ MAIL_APP_NAME } accounts are linked. To delete them both, please sign in at ${ loginLink } and delete your account there.": [ "Vaše účty ${ VPN_APP_NAME } a ${ MAIL_APP_NAME } jsou propojeny. Chcete-li je odstranit, přihlaste se prosím na ${ loginLink } a smažte tam svůj účet." ], @@ -12853,12 +13239,18 @@ "Your recent changes have been published. They will be visible to users in the next few hours.": [ "Vaše nedávné změny byly publikovány. Budou viditelné pro uživatele v následujících několika hodinách." ], + "Your recovery file will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset.": [ + "Váš soubor pro obnovení po resetování hesla obnoví přístup k e-mailům, kontaktům, souborům, heslům a všem dalším šifrovaným datům ve vašem účtu." + ], "Your recovery phrase": [ "Vaše obnovovací fráze" ], "Your recovery phrase is a series of 12 randomly generated words in a specific order.": [ "Vaše obnovovací fráze je série 12 náhodně vygenerovaných slov v určitém pořadí." ], + "Your recovery phrase will allow you to sign in and recover your data if you get locked out of your ${ BRAND_NAME } Account. It is composed of 12 words and acts like a backup password.": [ + "Pomocí obnovovací fráze se budete moci přihlásit a obnovit svá data, pokud ztratíte přístup ke svému účtu ${ BRAND_NAME }. Skládá se z 12 slov a funguje jako záložní heslo." + ], "Your scheduled plan starts on ${ renewalTime } and will auto-renew every ${ cycle } month.": [ "Váš naplánovaný tarif začíná ${ renewalTime } a bude se automaticky obnovovat každý ${ cycle } měsíc.", "Váš naplánovaný tarif začíná ${ renewalTime } a bude se automaticky obnovovat každé ${ cycle } měsíce.", @@ -13466,7 +13858,16 @@ "${ Brand } ending with ${ Last4 }": [ "${ Brand } končící na ${ Last4 }" ], - "${ BRAND_NAME } username": [ + "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME } Desktop app": [ + "Desktopová aplikace ${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME }" + ], + "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME } desktop app": [ + "Desktopová aplikace ${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME }" + ], + "${ BRAND_NAME } for Business": [ + "${ BRAND_NAME } for Business" + ], + "${ BRAND_NAME } username": [ "Uživatelské jméno ${ BRAND_NAME }" ], "${ group.UserCount } user": [ @@ -13505,6 +13906,12 @@ "${ pricePerMonthWithCurrency } / month": [ "${ pricePerMonthWithCurrency } / měsíc" ], + "${ PROTON_SENTINEL_NAME } account protection": [ + "Ochrana účtu ${ PROTON_SENTINEL_NAME }" + ], + "${ PROTON_SENTINEL_NAME } protection": [ + "Ochrana ${ PROTON_SENTINEL_NAME }" + ], "(Temporarily unavailable. Please check back later.)": [ "(Dočasně nedostupné. Zkontrolujte to prosím později.)" ], @@ -13631,6 +14038,9 @@ "Allow notifications by email": [ "Povolit upozornění e-mailem" ], + "Allow QR code sign-in": [ + "Povolit přihlášení pomocí QR kódu" + ], "Allow random passwords": [ "Povolení náhodných hesel" ], @@ -13736,6 +14146,9 @@ "Automated confirmations and alerts": [ "Automatická potvrzení a upozornění" ], + "Automatic email forwarding": [ + "Automatické přeposílání e-mailů" + ], "Automatically save contacts": [ "Automaticky ukládat kontakty" ], @@ -13775,9 +14188,15 @@ "Block malware, ads and trackers": [ "Blokovat malware, reklamy a sledovací prvky" ], + "Block trackers and marketers": [ + "Blokování sledovacích prvků a marketérů" + ], "Bookings, billings, and orders": [ "Rezervace, fakturace a objednávky" ], + "Brand your workspace": [ + "Vytvořte si vlastní styl svého pracovního prostoru" + ], "Browser": [ "Prohlížeč" ], @@ -13811,6 +14230,9 @@ "Cash": [ "Hotovost" ], + "Catch-all email address": [ + "E-mailová adresa doménového koše" + ], "Categories": [ "Kategorie" ], @@ -13946,9 +14368,21 @@ "Current email": [ "Stávající e-mail" ], + "Custom domain": [ + "Vlastní doména" + ], + "Custom email domain": [ + "Vlastní e-mailová doména", + "Vlastní e-mailové domény", + "Vlastní e-mailové domény", + "Vlastní e-mailové domény" + ], "Daily email notifications": [ "Denní e-mailová upozornění" ], + "Data harvesting": [ + "Sběr dat" + ], "Date": [ "Datum" ], @@ -14036,15 +14470,27 @@ "e.g. example.com": [ "např. priklad.cz" ], + "Early access": [ + "Předběžný přístup" + ], "Email": [ "E-mail" ], "Email address": [ "E-mailová adresa" ], + "Email addresses": [ + "E-mailové adresy" + ], + "Email addresses per user": [ + "E-mailové adresy na uživatele" + ], "Email or username": [ "E-mail nebo uživatelské jméno" ], + "Email with @yourcompany.com domain": [ + "E-mail s doménou @vasefirma.cz" + ], "Emails (all messages)": [ "E-maily (všechny zprávy)" ], @@ -14078,6 +14524,9 @@ "End weekday": [ "Konec pracovního týdne" ], + "End-to-end encryption": [ + "Koncové šifrování" + ], "Enter code": [ "Zadejte kód" ], @@ -14135,6 +14584,9 @@ "Folder location": [ "Umístění složky" ], + "Folders, labels, and filters": [ + "Složky, štítky a filtry" + ], "Font family": [ "Rodina písma" ], @@ -14153,6 +14605,9 @@ "Free": [ "Free" ], + "Free VPN included": [ + "Včetně bezplatné VPN" + ], "From: ${ fromEmail }": [ "Od: ${ fromEmail }" ], @@ -14318,6 +14773,9 @@ "Main reason for cancelling": [ "Hlavní důvod zrušení" ], + "Make sure you have access to a recovery email or phone, and have a data recovery option.": [ + "Ujistěte se, že máte přístup k e-mailu nebo telefonnímu číslu pro obnovení a že máte k dispozici možnost obnovy dat." + ], "Manage categories": [ "Zpravovat kategorie" ], @@ -14369,6 +14827,9 @@ "Moderate NAT": [ "Moderate NAT" ], + "Monthly": [ + "Měsíčně" + ], "More payment methods": [ "Další platební metody" ], @@ -14417,6 +14878,9 @@ "Newsletters": [ "E-mailové zpravodaje" ], + "No": [ + "Ne" + ], "No (users cannot use the app until a vault is shared with them)": [ "Ne (uživatelé nemohou aplikaci používat, dokud s nimi není sdílen trezor)" ], @@ -14450,12 +14914,18 @@ "Online privacy for your whole family": [ "Online soukromí pro celou vaši rodinu" ], + "Online productivity suite": [ + "Sada aplikací pro zvýšení produktivity" + ], "Only a single personal vault can be created": [ "Lze vytvořit pouze jeden osobní trezor" ], "Only available on ${ PASS_SHORT_APP_NAME } paid plans": [ "Dostupné pouze v placených tarifech ${ PASS_SHORT_APP_NAME }" ], + "Open-source code": [ + "Otevřený zdrojový kód" + ], "OpenVPN password": [ "Heslo OpenVPN" ], @@ -14516,6 +14986,9 @@ "Pending": [ "Čekající" ], + "Personal and work emails, plus important updates and notifications": [ + "Osobní a pracovní e-maily, důležité novinky a upozornění" + ], "Phone number": [ "Telefonní číslo" ], @@ -14549,12 +15022,18 @@ "Postal code": [ "PSČ" ], + "Premium features included": [ + "Včetně prémiových funkcí" + ], "Previous password": [ "Předchozí heslo" ], "Primary": [ "Primární" ], + "Priority support": [ + "Prioritní podpora" + ], "Promotions": [ "Propagační akce" ], @@ -14564,6 +15043,9 @@ "Proration": [ "Prorace" ], + "Protected by Swiss privacy laws": [ + "Chráněno švýcarskými zákony o ochraně soukromí" + ], "Protection mode": [ "Ochranný režim" ], @@ -14639,6 +15121,9 @@ "Secure password generator": [ "Generátor bezpečných hesel" ], + "See your team's availability": [ + "Zjistěte dostupnost svého týmu" + ], "Select Linux package format": [ "Vyberte formát balíčku Linux" ], @@ -14672,6 +15157,9 @@ "Shared between ${ MAIL_SHORT_APP_NAME }, ${ CALENDAR_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME }, and ${ WALLET_SHORT_APP_NAME }.": [ "Sdíleno mezi ${ MAIL_SHORT_APP_NAME }, ${ CALENDAR_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME } a ${ WALLET_SHORT_APP_NAME }." ], + "Short domain @pm.me": [ + "Krátká doména @pm.me" + ], "Show ${ n } administrator": [ "Zobrazit ${ n } správce", "Zobrazit ${ n } správce", @@ -14762,6 +15250,9 @@ "Storage": [ "Úložiště" ], + "Storage per user": [ + "Úložiště na uživatele" + ], "Street address": [ "Ulice a č. p." ], @@ -14774,6 +15265,9 @@ "Subscription options": [ "Možnosti předplatného" ], + "Support for multiple users": [ + "Podpora pro více uživatelů" + ], "Swipe left action": [ "Přejetí doleva" ], @@ -14792,6 +15286,9 @@ "Then": [ "Potom" ], + "Third-party ads": [ + "Reklamy třetích stran" + ], "Thomas": [ "Jméno" ], @@ -14867,6 +15364,9 @@ "Use folder colors": [ "Použít barvy složek" ], + "Use your own email domain": [ + "Použijte svou vlastní e-mailovou doménu" + ], "User": [ "Uživatel" ], @@ -14894,6 +15394,9 @@ "Verify keys with Key Transparency": [ "Ověření klíčů pomocí Key Transparency" ], + "Version history": [ + "Historie verzí" + ], "Video conferencing with Zoom": [ "Videokonference s aplikací Zoom" ], @@ -14906,6 +15409,9 @@ "Vulnerable password": [ "Zranitelné heslo" ], + "We securely stored recovery information on this device.": [ + "Na tomto zařízení jsme bezpečně uložili informace pro obnovení." + ], "Weak": [ "Slabé" ], @@ -14933,6 +15439,12 @@ "Without attachment": [ "Bez přílohy" ], + "Yearly": [ + "Ročně" + ], + "Yearly free storage bonus": [ + "Roční bezplatný bonus úložiště" + ], "Yes": [ "Ano" ], @@ -14960,9 +15472,18 @@ "Your plan": [ "Váš tarif" ], + "Your recovery email": [ + "Váš e-mail pro obnovení" + ], + "Your recovery phone number": [ + "Vaše telefonní číslo pro obnovení" + ], "Your voucher for your reserved ${ BRAND_NAME } email address:": [ "Váš poukaz pro vaši rezervovanou e-mailovou adresu ${ BRAND_NAME }:" ], + "Zero-access architecture": [ + "Architektura s nulovým přístupem" + ], "ZIP code": [ "PSČ" ] @@ -15184,6 +15705,9 @@ "Create an alias": [ "Vytvořit alias" ], + "data recovery option": [ + "možnost obnovy dat" + ], "Details": [ "Detaily" ], @@ -15358,6 +15882,9 @@ "Upgrade your plan": [ "Přejít na vyšší tarif" ], + "use a data recovery method": [ + "použít metodu obnovení dat" + ], "Vault": [ "Trezor" ], @@ -15915,6 +16442,9 @@ "A simple step today to ensure your child's digital safety tomorrow. Reserve a private ${ BRAND_NAME } email address for your child.": [ "Jednoduchý krok dnes zajistí digitální bezpečnost vašeho dítěte zítra. Zarezervujte svému dítěti soukromou e-mailovou adresu od společnosti ${ BRAND_NAME }." ], + "Activate the private ${ BRAND_NAME } email address reserved for your child and set up their account.": [ + "Aktivujte soukromou e-mailovou adresu ${ BRAND_NAME } vyhrazenou pro vaše dítě a nastavte mu účet." + ], "Activate your child's ${ BRAND_NAME } account | ${ BRAND_NAME }": [ "Aktivujte účet ${ BRAND_NAME } svého dítěte | ${ BRAND_NAME }" ], @@ -15945,6 +16475,9 @@ "Recover access to the private ${ BRAND_NAME } email address reserved for your child.": [ "Obnovte přístup k soukromé e-mailové adrese ${ BRAND_NAME } vyhrazené pro vaše dítě." ], + "Recover your child's ${ BRAND_NAME } account | ${ BRAND_NAME }": [ + "Obnovte účet ${ BRAND_NAME } svého dítěte | ${ BRAND_NAME }" + ], "Reserve your child's private email | ${ BRAND_NAME }": [ "Zarezervujte si soukromý e-mail pro své dítě | ${ BRAND_NAME }" ], @@ -15977,6 +16510,9 @@ "Request a feature": [ "Požadavek na funkci" ], + "Request a feature or vote on ideas from other users in our feedback forum.": [ + "Požádejte o přidání nové funkce nebo hlasujte pro návrhy ostatních uživatelů na našem fóru pro zpětnou vazbu." + ], "See how ${ BRAND_NAME } apps are evolving with your feedback.": [ "Podívejte se, jak se aplikace ${ BRAND_NAME } vyvíjejí díky vaší zpětné vazbě." ], @@ -16483,6 +17019,9 @@ "Advanced network security": [ "Pokročilé zabezpečení sítě" ], + "Advanced workspace security": [ + "Pokročilé zabezpečení pracovního prostředí" + ], "All ${ BRAND_NAME } products and features": [ "Všechny ${ BRAND_NAME } produkty a funkce" ], @@ -17368,9 +17907,6 @@ "${ app } product updates": [ "Aktualizace produktu ${ app }" ], - "${ BRAND_NAME } for Business newsletter": [ - "Novinky ${ BRAND_NAME } for Business" - ], "${ BRAND_NAME } important announcements": [ "Důležitá oznámení ${ BRAND_NAME }" ], @@ -17417,14 +17953,11 @@ "Denní e-mailová upozornění" ], "Disabling this means you won't get in-app notifications about promotions, new features, new ${ BRAND_NAME } services, and reminders.": [ - "Pokud tuto funkci deaktivujete, nebudete dostávat oznámení v aplikaci o akcích, nových funkcích, nových službách ${ BRAND_NAME } a připomenutích." + "Pokud tuto funkci deaktivujete, nebudete dostávat oznámení v aplikaci o akčních nabídkách, nových funkcích, nových službách ${ BRAND_NAME }, ani připomenutí." ], "During your first month of using a ${ BRAND_NAME } product": [ "Během prvního měsíce používání produktu ${ BRAND_NAME }" ], - "Email subscriptions": [ - "E-mailové odběry" - ], "In-app notifications": [ "Upozornění v aplikaci" ], @@ -18248,6 +18781,11 @@ "PKGBUILD (pro ostatní distribuce)" ] }, + "Paragraph": { + "${ BRAND_NAME } is independently funded and operates without advertising. Below are examples of how this independence has been used in practice.": [ + "${ BRAND_NAME } je nezávisle financován a funguje bez reklamy. Níže uvádíme příklady toho, jak se tato nezávislost uplatňuje v praxi." + ] + }, "Participant name": { "You": [ "Vy" @@ -18523,14 +19061,14 @@ "per month, billed every two years": [ "za měsíc, účtováno kažké dva roky" ], - "Preparing your Recovery Kit": [ - "Příprava sady pro obnovení" + "Preparing your recovery phrase": [ + "Příprava vaší obnovovací fráze" ], "Protected by Swiss privacy laws": [ "Chráněno švýcarskými zákony o ochraně soukromí" ], - "Save your recovery kit to continue": [ - "Chcete-li pokračovat, uložte sadu pro obnovu" + "Save your recovery phrase to continue": [ + "Uložte obnovovací frázi a pokračujte" ], "Secure vault sharing": [ "Zabezpečené sdílení trezorů" @@ -19277,7 +19815,7 @@ "Vybrat" ], "Select a provider": [ - "Vybrat poskytovatele" + "Vyberte poskytovatele" ], "Select a reason": [ "Vyberte důvod" @@ -19416,21 +19954,6 @@ "Navýšit na ${ upsellPlanTitle }" ] }, - "PQC account key generation": { - "Couldn’t generate keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\n${ settingsLink } and select 'Generate key' for your account and for each address.": [ - "Nepodařilo se vygenerovat klíče. Pro aktivaci postkvantové ochrany budete muset vygenerovat své nové šifrovací klíče ručně.\n\n${ settingsLink } a vyberte 'Generovat klíč' pro svůj účet a pro každou adresu." - ] - }, - "PQC adress key generation": { - "Couldn’t generate address keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\nGo to ${ settingsLink } and select 'Generate key' for each address.": [ - "Nepodařilo se vygenerovat klíče adres. Pro aktivaci postkvantové ochrany budete muset vygenerovat své nové šifrovací klíče ručně.\n\nPřejděte do ${ settingsLink } a vyberte 'Generovat klíč' pro každou adresu." - ] - }, - "PQC compatibility warning": { - "**You must update all ${ BRAND_NAME } mobile apps**: your new keys won't work on older app versions.": [ - "**Musíte aktualizovat všechny mobilní aplikace ${ BRAND_NAME }**: vaše nové klíče nebudou fungovat ve starších verzích aplikací." - ] - }, "PQC key generation": { "This will generate new quantum-resistant encryption keys for your account.": [ "Tím se vygenerují nové kvantově odolné šifrovací klíče pro váš účet." @@ -19560,7 +20083,7 @@ "Microsoft 365" ], "Other": [ - "Další" + "Ostatní" ], "Outlook": [ "Outlook" @@ -19687,6 +20210,9 @@ "Verify now": [ "Ověřit nyní" ], + "Verify now this recovery email address: ${ emailData.value }": [ + "Nyní ověřte tuto e-mailovou adresu určenou pro obnovení: ${ emailData.value }" + ], "Verify recovery email?": [ "Ověřit e-mail obnovení?" ], @@ -19730,10 +20256,125 @@ "Verify recovery phone?": [ "Ověřit telefon pro obnovení?" ], + "Verify this recovery phone number now: ${ phoneData.value }": [ + "Ověřte nyní toto telefonní číslo určené pro obnovení: ${ phoneData.value }" + ], "Verifying your phone number increases your account security and allows additional options for recovery.": [ "Ověřením telefonního čísla zvyšujete bezpečnost účtu a umožňujete další možnosti obnovení." ] }, + "Recovery score": { + "${ score } / ${ maxScore } completed": [ + "${ score }/${ maxScore } dokončeno" + ], + "Account protection": [ + "Ochrana účtu" + ], + "Add more options for stronger protection": [ + "Přidejte další možnosti pro lepší ochranu" + ], + "Add more options to avoid getting locked out of your account.": [ + "Přidejte více možnosti, abyste se vyhnuli ztrátě přístupu k účtu." + ], + "Awesome. Keep your options up-to-date for stronger protection.": [ + "Skvělé. Udržujte své možnosti v aktuálním stavu, abyste měli lepší ochranu." + ], + "Good start. Add more options for a stronger protection.": [ + "Dobrý začátek. Přidejte další možnosti pro lepší ochranu." + ], + "Great. Add more options for a stronger protection.": [ + "Skvělé. Přidejte další možnosti pro lepší ochranu." + ], + "How you increased your account protection": [ + "Jak jste zvýšili zabezpečení svého účtu" + ], + "Inactive recovery options": [ + "Neaktivní možnosti obnovy" + ], + "Maximum": [ + "Maximum" + ], + "Partial": [ + "Částečné" + ], + "Score: ${ score } / ${ maxScore }": [ + "Skóre: ${ score } / ${ maxScore }" + ], + "Strong": [ + "Silné" + ], + "Unprotected": [ + "Nechráněno" + ], + "Weak": [ + "Slabé" + ] + }, + "Recovery score item": { + "Add emergency contacts": [ + "Přidat nouzové kontakty" + ], + "Add recovery contacts": [ + "Přidat kontakty pro obnovení" + ], + "Add recovery email": [ + "Přidat e-mail pro obnovení" + ], + "Add recovery phone": [ + "Přidat telefon pro obnovení" + ], + "Allow data recovery on this device": [ + "Povolit obnovu dat na tomto zařízení" + ], + "Allow password reset from settings": [ + "Povolit resetování hesla z Nastavení" + ], + "Allow scanning QR code to sign in": [ + "Povolte skenování QR kódu pro přihlášení" + ], + "Data recovery allowed on this device": [ + "Na tomto zařízení je povoleno obnovení dat" + ], + "Download recovery file": [ + "Stáhnout soubor pro obnovení" + ], + "Emergency contacts added": [ + "Nouzové kontakty přidány" + ], + "Enable recovery by phone": [ + "Povolte obnovení telefonem" + ], + "Password reset allowed from settings": [ + "Reset hesla je možný v nastavení" + ], + "Password verified": [ + "Heslo ověřeno" + ], + "Recovery contacts added": [ + "Kontakty pro obnovení přidány" + ], + "Recovery file downloaded": [ + "Soubor pro obnovení byl stažen" + ], + "Recovery phrase saved": [ + "Obnovovací fráze uložena" + ], + "Save recovery phrase": [ + "Uložit obnovovací frázi" + ], + "Sign-in with QR code allowed": [ + "Přihlášení pomocí QR kódu povoleno" + ], + "Verify password": [ + "Ověření hesla" + ], + "Verify recovery email": [ + "Ověřit e-mail pro obnovení" + ], + "Verify recovery phone": [ + "Ověřit telefon pro obnovení" + ] + }, "RecoveryPhrase: Action": { "Continue": [ "Pokračovat" @@ -19746,6 +20387,9 @@ ] }, "RecoveryPhrase: Info": { + "**Make sure you keep your recovery phrase accessible after creating it.** For security reasons, we do not store the phrase after saving your changes, and you won’t be able to see it again in the ${ BRAND_NAME } app.": [ + "**Po vytvoření si nezapomeňte svou obnovovací frázi uschovat na bezpečném místě.** Z bezpečnostních důvodů tuto frázi po uložení změn neukládáme a v aplikaci ${ BRAND_NAME } ji již nebudete moci znovu zobrazit." + ], "copy recovery phrase": [ "zkopírovat obnovovací frázi" ], @@ -19767,14 +20411,11 @@ "Or ${ downloadRecoveryKitSwitchButton } instead.": [ "Nebo namísto toho ${ downloadRecoveryKitSwitchButton }." ], - "Your **Recovery Kit** lets you restore your ${ BRAND_NAME } Account if you’re locked out.": [ - "**Sada pro obnovu** vám umožní obnovit váš ${ BRAND_NAME } účet, pokud si ho uzamknete." + "Your **recovery phrase** lets you restore your ${ BRAND_NAME } Account if you’re locked out.": [ + "**Obnovovací fráze** vám umožní obnovit váš ${ BRAND_NAME } účet, pokud ztratíte přístup." ] }, "RecoveryPhrase: Title": { - "Save your Recovery Kit": [ - "Uložte si svou sadu pro obnovení" - ], "Save your recovery phrase": [ "Uložte svou obnovovací frázi" ] @@ -20179,8 +20820,8 @@ "Back to Safety Review": [ "Zpět ke kontrole bezpečnosti" ], - "Because you reset your password, your current Recovery Kit can only be used to recover the data created before your password reset.": [ - "Vzhledem k tomu, že jste resetovali heslo, lze aktuální sadu pro obnovení použít pouze k obnovení dat vytvořených před resetem hesla." + "Because you reset your password, your current recovery phrase can only be used to recover the data created before your password reset.": [ + "Vzhledem k tomu, že jste si resetovali heslo, lze vaši aktuální obnovovací frázi použít pouze k obnovení dat vytvořených před resetováním hesla." ], "Can be used to regain access to your account and data": [ "Může být použito pro obnovení přístupu k vašemu účtu a datům" @@ -20209,8 +20850,8 @@ "Download ${ size }": [ "Stáhnout ${ size }" ], - "Download your Recovery Kit": [ - "Stáhněte si svou sadu pro obnovení" + "Download your recovery phrase": [ + "Stáhněte si svou obnovovací frázi" ], "Email address": [ "E-mailová adresa" @@ -20224,8 +20865,8 @@ "Enable recovery by phone": [ "Povolte obnovení telefonem" ], - "I understand that I will not be able to recover currently locked data with this Recovery Kit": [ - "Beru na vědomí, že pomocí této sady pro obnovení nelze obnovit aktuálně uzamčená data" + "I understand that I will not be able to recover currently locked data with this recovery phrase": [ + "Beru na vědomí, že pomocí této obnovovací fráze nebudu moci obnovit aktuálně uzamčená data" ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in on this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Pokud zapomenete své heslo ${ BRAND_NAME } a bude jej nutné resetovat, můžete se přihlásit k účtu pomocí tohoto zařízení a nového hesla a obnovit tím plný přístup ke svému účtu ${ BRAND_NAME }." @@ -20233,8 +20874,8 @@ "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Pokud zapomenete své heslo ${ BRAND_NAME } a bude jej nutné resetovat, můžete se přihlásit k účtu pomocí tohoto zařízení a nového hesla a obnovit tím plný přístup ke svému účtu ${ BRAND_NAME }." ], - "If you get locked out of your ${ BRAND_NAME } Account, your Recovery Kit will allow you to sign in and recover your data.": [ - "Pokud dojde k uzamčení vašeho účtu ${ BRAND_NAME }, vaše sada pro obnovení vám umožní přihlásit se a obnovit vaše data." + "If you get locked out of your ${ BRAND_NAME } Account, your recovery phrase will allow you to sign in and recover your data.": [ + "Pokud ztratíte přístup k vašeho účtu ${ BRAND_NAME }, vaše obnovovací fráze vám umožní přihlásit se a obnovit vaše data." ], "If you lose your login details and need to reset your account, **it’s imperative** that you have both an **account recovery and data recovery method** in place, otherwise you might not be able to access any of your emails, contacts, files or passwords.": [ "Pokud ztratíte přihlašovací údaje a potřebujete resetovat účet, **je nutné** mít k dispozici **metodu obnovení účtu i obnovení dat**, jinak se vám může stát, že nebudete mít přístup k vašim e-mailům, kontaktům, souborům nebo heslům." @@ -20278,8 +20919,8 @@ "Take action to secure your account": [ "Podnikněte kroky k zabezpečení účtu" ], - "There was an error generating your Recovery Kit": [ - "Došlo k chybě při generování vaší sady pro obnovení" + "There was an error generating your recovery phrase": [ + "Došlo k chybě při generování vaší obnovovací fráze" ], "There was an error verifying your email": [ "Došlo k chybě při ověřování vašeho e-mailu" @@ -20308,11 +20949,11 @@ "to recover your account if you're ever locked out": [ "pro obnovení vašeho účtu, pokud kdykoli ztratíte přístup" ], - "Update your Recovery Kit": [ - "Aktualizujte si svou sadu pro obnovení" + "Update your recovery phrase": [ + "Aktualizujte si svou obnovovací frázi" ], - "Update your Recovery Kit?": [ - "Aktualizovat vaši sadu pro obnovení?" + "Update your recovery phrase?": [ + "Aktualizovat vaši obnovovací frázi?" ], "Verify": [ "Ověřit" @@ -20329,8 +20970,8 @@ "Verify your recovery phone number": [ "Ověřte své telefonní číslo určené pro obnovení" ], - "We encountered an error while generating your Recovery Kit. Please try again later, or contact support if the issue continues.": [ - "Došlo k chybě při generování vaší sady pro obnovení. Zkuste to prosím později nebo kontaktujte podporu, pokud problém přetrvává." + "We encountered an error while generating your recovery phrase. Please try again later, or contact support if the issue continues.": [ + "Došlo k chybě při generování vaší obnovovací fráze. Zkuste to prosím později, nebo kontaktujte podporu, pokud problém přetrvává." ], "We encountered an error while verifying your email. Please try again later, or contact support if the issue continues.": [ "Došlo k chybě při ověřování vašeho e-mailu. Zkuste to prosím později nebo kontaktujte podporu, pokud problém přetrvává." @@ -20353,8 +20994,8 @@ "You can disable this at any time.": [ "Toto můžete kdykoli deaktivovat." ], - "You can use the recovery phrase in this Recovery Kit to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ - "Obnovovací frázi této sady pro obnovení můžete použít k úplnému obnovení účtu po resetu hesla, takže ji nezapomeňte uložit na bezpečném místě." + "You can use the recovery phrase in this recovery phrase to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ + "Tuto obnovovací frázi můžete použít k úplnému obnovení svého účtu po resetu hesla, takže ji nezapomeňte uložit na bezpečném místě." ], "You can use your email to regain access to your account if you forget your password.": [ "Váš e-mail můžete použít k opětovnému získání přístupu ke svému účtu, pokud zapomenete heslo." @@ -20365,8 +21006,8 @@ "You can use your recovery phone to regain access to your account if you forget your password.": [ "Váš telefon pro obnovení můžete použít k opětovnému získání přístupu ke svému účtu, pokud zapomenete heslo." ], - "You have previously downloaded a Recovery Kit. Downloading a new one will **deactivate the old one**.": [ - "Již jste si v minulosti stáhli sadu pro obnovení. Stažením nové sady se **stará sada deaktivuje**." + "You have previously downloaded a recovery phrase. Downloading a new one will **deactivate the old one**.": [ + "Již jste si v minulosti stáhli obnovovací frázi. Stažením nové fráze se **stará fráze deaktivuje**." ], "You have recommended actions to safeguard your account further.": [ "Doporučili jsme vám opatření, která vám pomohou ještě lépe zabezpečit váš účet." @@ -20431,12 +21072,6 @@ "Your recovery email is set": [ "Vaše e-mailová adresa pro obnovení je nastavena" ], - "Your Recovery Kit": [ - "Vaše sada pro obnovení" - ], - "Your Recovery Kit is set": [ - "Vaše sada pro obnovení je nastavena" - ], "Your recovery methods": [ "Vaše metody obnovení" ], @@ -20457,6 +21092,12 @@ ], "Your recovery phone number is:": [ "Vaše telefonní číslo pro obnovení je:" + ], + "Your recovery phrase": [ + "Vaše obnovovací fráze" + ], + "Your recovery phrase is set": [ + "Vaše obnovovací fráze je nastavena" ] }, "saml: Action": { @@ -20662,6 +21303,11 @@ "Nebyly nalezeny žádné výsledky" ] }, + "Sentinel banner": { + "You have recommended actions from ${ PROTON_SENTINEL_NAME }": [ + "Máte doporučené akce od ${ PROTON_SENTINEL_NAME }" + ] + }, "Server-Info": { "active": [ "aktivní" @@ -20957,6 +21603,9 @@ ] }, "session_recovery:settings:info": { + "To disallow password reset from settings, you must save your recovery phrase.": [ + "Chcete-li v nastaveních zakázat resetování hesla, musíte si uložit svou obnovovací frázi." + ], "To disallow password reset, you must have a recovery method set up.": [ "Chcete-li zakázat resetování hesla, musíte mít nastavenou metodu obnovení." ], @@ -21015,17 +21664,6 @@ "Žádost o resetování hesla" ] }, - "Setting": { - "Enable Photos section": [ - "Povolit sekci Fotky" - ], - "Get updates about comments via email": [ - "Dostávat e-mailem upozornění na komentáře" - ], - "Include document name in email notifications": [ - "Zahrnout název dokumentu do e-mailových upozornění" - ] - }, "Settings description": { "Keep your inbox organized with folders and labels. ${ learnMoreLink }": [ "Udržujte si v doručené poště pořádek pomocí složek a štítků. ${ learnMoreLink }" @@ -21149,6 +21787,9 @@ "${ FREE_PASS_ALIASES } hide-my-email aliases to fight spam": [ "${ FREE_PASS_ALIASES } aliasů hide-my-email pro boj se spamem" ], + "${ MAIL_SHORT_APP_NAME } Free": [ + "${ MAIL_SHORT_APP_NAME } Free" + ], "${ maxAddresses } address": [ "${ maxAddresses } adresa", "${ maxAddresses } adresy", @@ -21541,6 +22182,9 @@ "Email address": [ "E-mailová adresa" ], + "Name shown in meetings": [ + "Jméno zobrazené během schůzek" + ], "Organization name": [ "Název organizace" ], @@ -21666,6 +22310,9 @@ "Create a ${ BRAND_NAME } account": [ "Vytvořit účet ${ BRAND_NAME }" ], + "Create your ${ BRAND_NAME } account to create rooms": [ + "Vytvořte si účet ${ BRAND_NAME } a začněte vytvářet místnosti" + ], "Create your ${ BRAND_NAME } account to schedule a meeting": [ "Vytvořte svůj ${ BRAND_NAME } účet a naplánujte si schůzku" ], @@ -22229,6 +22876,62 @@ "Rušení předplatného, počkejte prosím" ] }, + "Status": { + "${ count } person": [ + "${ count } osoba", + "${ count } osoby", + "${ count } osob", + "${ count } osob" + ], + "Add a phone number": [ + "Přidat telefonní číslo" + ], + "Add an email address": [ + "Přidejte e-mailovou adresu" + ], + "Available on this device": [ + "K dispozici na tomto zařízení" + ], + "Disable recovery by email": [ + "Deaktivovat obnovení e-mailem" + ], + "Disable recovery by phone": [ + "Deaktivovat obnovení telefonem" + ], + "Generate a recovery phrase": [ + "Vygenerovat obnovovací frázi" + ], + "Last changed ${ formattedDate }": [ + "Poslední změna: ${ formattedDate }" + ], + "Last updated ${ formattedUpdateDate }": [ + "Poslední aktualizace: ${ formattedUpdateDate }" + ], + "Not saved": [ + "Neuložen" + ], + "Off": [ + "Vypnuto" + ], + "On": [ + "Zap." + ], + "Outdated": [ + "Zastaralé" + ], + "Saved": [ + "Uložen" + ], + "Unverified": [ + "Neověřeno" + ], + "Verified": [ + "Ověřeno" + ], + "Verify ${ value }": [ + "Ověřte ${ value }" + ] + }, "Step in filter modal": { "Actions": [ "Akce" @@ -22961,12 +23664,54 @@ ] }, "Subtitle": { + "${ DRIVE_PLUS_NAME } offers 1 TB storage for your files and photos. You are also eligible for yearly storage bonuses.": [ + "${ DRIVE_PLUS_NAME } nabízí 1 TB úložiště pro vaše soubory a fotky. Máte také nárok na roční bonusy k úložišti." + ], + "${ DRIVE_PLUS_NAME } offers 200 GB storage for your files and photos. You are also eligible for yearly storage bonuses.": [ + "${ DRIVE_PLUS_NAME } nabízí 200 GB úložiště pro vaše soubory a fotky. Máte také nárok na roční bonusy k úložišti." + ], + "${ planTitle } gives you access to all apps and premium features. Privacy is built-in so you can get on with it, knowing your data and identity are safe.": [ + "${ planTitle } vám umožní přístup ke všem aplikacím a prémiovým funkcím. Je brán ohled na soukromí, takže můžete pokračovat v práci s vědomím, že vaše data a identita jsou v bezpečí." + ], + "${ planTitle } gives you all apps, all features, early access to new releases, and everything you need to be in control of your data and its security.": [ + "${ planTitle } vám poskytne všechny aplikace, všechny funkce, přednostní přístup k novým verzím a vše, co potřebujete, abyste měli plnou kontrolu nad svými daty a jejich zabezpečením." + ], + "${ planTitle } gives you unlimited privacy and more storage for up to 2 people.": [ + "${ planTitle } nabízí neomezené soukromí a více úložného prostoru pro až 2 uživatele." + ], + "${ planTitle } gives your team all the collaboration tools they need to be productive and organized in their work, while safeguarding your business.": [ + "${ planTitle } poskytuje vašemu týmu všechny nástroje pro spolupráci, které potřebuje k produktivní a organizované práci, a zároveň chrání vaši firmu." + ], + "${ planTitle } gives your team what they need to be more productive and organized in their work with access to all ${ BRAND_NAME } apps and their advanced features.": [ + "${ planTitle } poskytne vašemu týmu vše, co potřebuje k vyšší produktivitě a organizaci práce, a to díky přístupu ke všem aplikacím ${ BRAND_NAME } a jejich pokročilým funkcím." + ], + "${ planTitle } gives your team what they need to be more productive, organized, and in control of their inbox, schedule, and more.": [ + "${ planTitle } poskytne vašemu týmu vše, co potřebuje, aby byl produktivnější, organizovanější a měl pod kontrolou svou poštu, plánování a další věci." + ], + "${ planTitle } goes beyond the basics to help you be more productive, organized, and in control of your inbox, email identity, and more.": [ + "${ planTitle } jde nad to, co je běžné, abyste byli více produktivní, organizovaní a měli kontrolu nad vaší poštovní schránkou, e-mailovou identitou atd.." + ], + "${ planTitle } helps you ensure that each of your family members — and their data — are protected whenever they’re online.": [ + "${ planTitle } vám pomůže zajistit, aby každý člen vaší rodiny — a jeho data — byl chráněn, kdykoli je online." + ], + "Compare the key differences that matter for your business.": [ + "Porovnejte klíčové rozdíly, které jsou pro vaši firmu důležité." + ], "Free forever": [ "Navždy zdarma" ], "per month, billed annually": [ "za měsíc, účtováno ročně" ], + "Save 50% for 1 year, and keep full access": [ + "Ušetřete 50 % na 1 rok a zachovejte si plný přístup" + ], + "Save 50% for 6 months, and keep full access": [ + "Ušetřete 50 % na 6 měsíců a zachovejte si plný přístup" + ], + "See how ${ MAIL_APP_NAME } compares, and why our independence makes a difference.": [ + "Podívejte se, jak si vede ${ MAIL_APP_NAME }, a proč je naše nezávislost tak důležitá." + ], "View VPN session details for your organization.": [ "Zobrazení detailů relace VPN pro vaši organizaci." ] @@ -23098,9 +23843,6 @@ "Organization logo updated": [ "Logo organizace aktualizováno" ], - "Organization name set": [ - "Název organizace nastaven" - ], "Organization name updated": [ "Název organizace aktualizován" ], @@ -23290,6 +24032,9 @@ ], "/user per month": [ "/uživatel měsíčně" + ], + "/year": [ + "/ročně" ] }, "Suffix for price": { @@ -23407,6 +24152,14 @@ "Nebyl nalezen žádný SMTP token" ] }, + "Temporary need": { + "Continue cancelling": [ + "Pokračovat v rušení" + ], + "Keep current plan": [ + "Zachovat aktuální tarif" + ] + }, "Theme": { "Auto": [ "Automaticky" @@ -23610,12 +24363,18 @@ "Actions": [ "Akce" ], + "Activate multi-user support": [ + "Aktivovat podporu více uživatelů" + ], "Activate organization key": [ "Aktivovat klíč organizace" ], "Activate user": [ "Aktivovat uživatele" ], + "Activate your email": [ + "Aktivujte svůj e-mail" + ], "Activity monitor": [ "Monitor aktivity" ], @@ -23628,9 +24387,15 @@ "Add a custom logo": [ "Přidejte vlastní logo" ], + "Add a recovery contact": [ + "Přidat kontakt pro obnovení" + ], "Add address": [ "Přidat adresu" ], + "Add an emergency contact": [ + "Přidat nouzový kontakt" + ], "Add another notification to remind you of this event": [ "Přidat další upozornění pro připomenutí této události" ], @@ -23694,9 +24459,15 @@ "Address and key verification": [ "Ověření adresy a klíče" ], + "Advanced recovery options": [ + "Pokročilé možnosti obnovení" + ], "Allocate storage": [ "Přiřadit úložiště" ], + "Already have multiple accounts?": [ + "Máte již více účtů?" + ], "Also in your plan": [ "Také ve vašem tarifu" ], @@ -23709,9 +24480,6 @@ "An address for each role": [ "Adresa pro každou roli" ], - "An error occurred": [ - "Došlo k chybě" - ], "Annual": [ "Roční" ], @@ -23733,6 +24501,9 @@ "Apply gift code": [ "Použít dárkový kód" ], + "Are you already signed in to ${ BRAND_NAME } in a browser?": [ + "Jste již přihlášeni k účtu ${ BRAND_NAME } v prohlížeči?" + ], "Are you sure you want to close the preview?": [ "Jste si jisti, že chcete náhled zavřít?" ], @@ -23770,7 +24541,7 @@ "Bridge pro ${ platform }" ], "Bring your Gmail into ${ MAIL_APP_NAME }": [ - "Připojte svůj Gmail k aplikaci ${ MAIL_APP_NAME }" + "Připojte svůj Gmail k ${ MAIL_APP_NAME }" ], "Browser extensions": [ "Rozšíření prohlížeče" @@ -23778,6 +24549,9 @@ "Can you access your session in the browser?": [ "Máte v prohlížeči přístup ke své relaci?" ], + "Can you reach out to your emergency contacts?": [ + "Můžete se spojit se svými nouzovými kontakty?" + ], "Cancel ${ MAIL_SHORT_APP_NAME } subscription": [ "Zrušit předplatné ${ MAIL_SHORT_APP_NAME }" ], @@ -23820,9 +24594,6 @@ "Change second password": [ "Změnit druhé heslo" ], - "Check your default mail application": [ - "Zkontrolujte výchozí e-mailovou aplikaci" - ], "Choose a provider": [ "Vybrat poskytovatele" ], @@ -23838,6 +24609,9 @@ "Close": [ "Zavřít" ], + "Code expired": [ + "Platnost kódu vypršela" + ], "Collaborate on documents": [ "Spolupracovat na dokumentech" ], @@ -23850,18 +24624,12 @@ "Confirm": [ "Potvrdit" ], - "Confirm address": [ - "Potvrdit adresu" - ], "Confirm downgrade": [ "Potvrzení snížení" ], "Confirm loss of ${ BRAND_NAME } bonuses": [ "Potvrdit ztrátu bonusů ${ BRAND_NAME }" ], - "Confirm phone number": [ - "Potvrzení telefonního čísla" - ], "Connect ${ name }": [ "Připojit ${ name }" ], @@ -23886,6 +24654,9 @@ "Connect your custom domain": [ "Připojení vlastní domény" ], + "Connected emails": [ + "Propojené e-maily" + ], "Connection status": [ "Stav připojení" ], @@ -23901,6 +24672,9 @@ "Couldn’t create accounts": [ "Nepodařilo se vytvořit účty" ], + "Couldn’t recover your account": [ + "Nepodařilo se obnovit váš účet" + ], "Coupon": [ "Kupón" ], @@ -23916,6 +24690,9 @@ "Create a new gateway": [ "Vytvořit novou bránu" ], + "Create a new password": [ + "Vytvořit nové heslo" + ], "Create Gateway": [ "Vytvořit bránu" ], @@ -23925,6 +24702,9 @@ "Create multiple user accounts": [ "Vytvořit více uživatelských účtů" ], + "Create new addresses easily": [ + "Snadno tvořte nové adresy" + ], "Create new policy": [ "Vytvořit novou zásadu" ], @@ -23994,6 +24774,9 @@ "Data recovery": [ "Obnovení dat" ], + "Data recovery options": [ + "Možnosti obnovy dat" + ], "Data retention": [ "Uchovávání dat" ], @@ -24003,6 +24786,9 @@ "Day theme": [ "Denní motiv" ], + "Deactivate current phrase?": [ + "Deaktivovat aktuální frázi?" + ], "Decrypt key": [ "Dešifrovat klíč" ], @@ -24075,6 +24861,9 @@ "Device": [ "Zařízení" ], + "Device data backup": [ + "Záloha dat zařízení" + ], "Device name": [ "Název zařízení" ], @@ -24084,6 +24873,9 @@ "Disable categories?": [ "Deaktivovat kategorie?" ], + "Disable device data backup?": [ + "Deaktivovat zálohování dat zařízení?" + ], "Disable two-factor authentication": [ "Zakázat dvoufázové ověření" ], @@ -24099,6 +24891,9 @@ "Disconnected from Gmail": [ "Odpojeno od služby Gmail" ], + "Dismiss setup checklist": [ + "Odmítnout kontrolní seznam nastavení" + ], "Display name and signature": [ "Zobrazované jméno a podpis" ], @@ -24135,6 +24930,9 @@ "Download the mobile apps": [ "Stáhnout mobilní aplikace" ], + "Download your recovery phrase": [ + "Stáhněte si svou obnovovací frázi" + ], "Downloads": [ "Stahování" ], @@ -24213,6 +25011,9 @@ "Email privacy": [ "Soukromí emailu" ], + "Email verification": [ + "Ověření e-mailu" + ], "Emergency access": [ "Nouzový přístup" ], @@ -24273,6 +25074,9 @@ "Feature access": [ "Přístup k funkcím" ], + "Fewer distractions, more focus": [ + "Méně rozptylování, více soustředění" + ], "Filter for more focus": [ "Filtrace pošty pro větší zaměření" ], @@ -24303,12 +25107,12 @@ "Forward emails": [ "Přeposlat e-maily" ], - "Forwardings": [ - "Přeposílání" - ], "Free": [ "Free" ], + "Free plan": [ + "Tarif Free" + ], "Gateway": [ "Brána" ], @@ -24351,6 +25155,9 @@ "Get complete privacy coverage": [ "Získejte kompletní ochranu soukromí" ], + "Get direct support": [ + "Získat přímou podporu" + ], "Get help with an issue": [ "Získat pomoc s problémem" ], @@ -24366,6 +25173,9 @@ "Get more from your VPN": [ "Získejte více ze své VPN" ], + "Get started": [ + "Začněme" + ], "Get the app on all your devices and enjoy safe, seamless access anywhere.": [ "Získejte aplikaci pro všechna svá zařízení a užívejte si bezpečný a snadný přístup odkudkoli." ], @@ -24396,9 +25206,15 @@ "Help center": [ "Centrum podpory" ], + "Helping activists in Hong Kong": [ + "Pomoc aktivistům v Hong Kongu" + ], "Home": [ "Domovská stránka" ], + "How ${ MAIL_APP_NAME } is different": [ + "V čem se ${ MAIL_APP_NAME } liší" + ], "How did you find out about us?": [ "Jak jste se o nás dozvěděli?" ], @@ -24513,9 +25329,15 @@ "Link confirmation": [ "Potvrzení před otevřením odkazu" ], + "Lower your cost without losing features": [ + "Snižte náklady, aniž byste přišli o funkce" + ], "Main password": [ "Hlavní heslo" ], + "Make your business stand out": [ + "Dejte vaší firmě vyniknout" + ], "Manage files across devices on Windows, Mac, Android, and iOS.": [ "Spravujte soubory napříč zařízeními s Windows, Mac, Android a iOS." ], @@ -24570,6 +25392,9 @@ "No events": [ "Žádné události" ], + "No events yet": [ + "Zatím žádné události" + ], "No need to empty the trash": [ "Nemusíte sami vyprazdňovat koš" ], @@ -24624,12 +25449,18 @@ "Other sign-in issues": [ "Další problémy s přihlášením" ], + "Our fight against censorship in Russia": [ + "Náš boj proti cenzuře v Rusku" + ], "Password": [ "Heslo" ], "Password generator rules": [ "Pravidla generátoru hesel" ], + "Password reset options": [ + "Možnosti resetování hesla" + ], "Password reset settings": [ "Nastavení resetování hesla" ], @@ -24663,9 +25494,6 @@ "Phone": [ "Telefon" ], - "Photos": [ - "Fotky" - ], "Pin the extension": [ "Připněte rozšíření" ], @@ -24702,6 +25530,9 @@ "QR Code": [ "QR kód" ], + "QR code sign-in": [ + "Přihlášení pomocí QR kódu" + ], "Ready, set, forward": [ "Připravit, nastavit, přeposlat" ], @@ -24726,6 +25557,9 @@ "Recovery file": [ "Soubor pro obnovení" ], + "Recovery phrase": [ + "Obnovovací fráze" + ], "Refer a friend": [ "Doporučte přítele" ], @@ -24744,9 +25578,15 @@ "Remove domain": [ "Odebrat doménu" ], + "Remove email": [ + "Odebrat e-mail" + ], "Remove forwarding address": [ "Odebrat adresu přeposílání" ], + "Remove recovery phone number": [ + "Odebrat telefonní číslo pro obnovení" + ], "Remove server?": [ "Odebrat server?" ], @@ -24916,7 +25756,10 @@ "Přihlaste se a povolte přístup" ], "Sign in on TV": [ - "Přihlásit se na TV" + "Přihlaste se na TV" + ], + "Sign in on TV?": [ + "Přihlásit se na TV?" ], "Sign in to join the Beta program": [ "Přihlaste se do programu Beta" @@ -24933,6 +25776,9 @@ "Signed in to member account": [ "Přihlášeno k členskému účtu" ], + "Signed-in reset": [ + "Resetování v přihlášeném stavu" + ], "Simplify email distribution": [ "Zjednodušení distribuce e-mailů" ], @@ -24942,12 +25788,21 @@ "Single sign-on": [ "Jednotné přihlášení" ], + "SMS verification": [ + "SMS ověření" + ], "SMTP submission": [ "SMTP odesílání" ], "Snooze:": [ "Odložit:" ], + "Some of your encrypted data is locked": [ + "Některá z vašich šifrovaných dat jsou uzamčena" + ], + "Something went wrong": [ + "Něco se pokazilo" + ], "Sort folders alphabetically": [ "Řadit složky abecedně" ], @@ -24975,6 +25830,9 @@ "Status": [ "Stav" ], + "Stay secure and connected anywhere": [ + "Zůstaňte v bezpečí a připojeni kdekoli" + ], "Strengthen your security on all your devices with ${ passPlusPlanName }. ${ upgradeButton }": [ "Zvyšte zabezpečení všech svých zařízení pomocí ${ passPlusPlanName }. ${ upgradeButton }" ], @@ -24999,6 +25857,9 @@ "Support ticket closed": [ "Žádost na podporu uzavřena" ], + "Support your compliance objectives": [ + "Podpořte své cíle v oblasti dodržování předpisů" + ], "Switch account": [ "Přepnout účet" ], @@ -25041,11 +25902,14 @@ "To preview this spreadsheet, open it in ${ SHEETS_APP_NAME } or download it.": [ "Chcete-li si tuto tabulku prohlédnout, otevřete ji v aplikaci ${ SHEETS_APP_NAME } nebo ji stáhněte." ], + "Troubleshoot your issue": [ + "Zjistěte příčinu problému" + ], "Try ${ AUTHENTICATOR_APP_NAME }": [ "Vyzkoušejte ${ AUTHENTICATOR_APP_NAME }" ], "Try changing your password in your active web session": [ - "Zkuste změnit heslo v aktuální webové relaci" + "Zkuste změnit heslo v aktivní webové relaci" ], "Turn on ${ DARK_WEB_MONITORING_NAME }": [ "Zapnout ${ DARK_WEB_MONITORING_NAME }" @@ -25065,6 +25929,9 @@ "Type": [ "Typ" ], + "Unblocking internet access in Iran": [ + "Odblokování internetového přístupu v Íránu" + ], "Unlock your data": [ "Odemknout Vaše data" ], @@ -25105,7 +25972,7 @@ "Použít ${ VPN_SHORT_APP_NAME } pro ochranu soukromí" ], "Use backup recovery code": [ - "Použít kód pro obnovení zálohy" + "Použijte záložní kód pro obnovení" ], "Use one account for all your addresses": [ "Používejte jeden účet pro všechny své adresy" @@ -25134,6 +26001,9 @@ "Verify it’s you": [ "Potvrďte, že jste to vy" ], + "Verify your email": [ + "Ověřte svůj e-mail" + ], "Verifying your card...": [ "Ověřování vaší karty..." ], @@ -25158,6 +26028,9 @@ "Warning: suspected fake website": [ "Varování: podezření na falešnou webovou stránku" ], + "We sent you a code to your email to make sure it’s you. This code is valid for 10 minutes. Please enter it below.": [ + "Na váš e-mail jsme vám zaslali ověřovací kód, abychom se ujistili, že jste to skutečně vy. Tento kód je platný po dobu 10 minut. Zadejte jej prosím níže." + ], "We'll send an email to your new address with instructions on completing the change.": [ "Na vaši novou adresu vám zašleme e-mail s pokyny pro dokončení změny." ], @@ -25173,6 +26046,9 @@ "Welcome to your new password manager!": [ "Vítejte ve svém novém správci hesel!" ], + "What changes if you switch to the Free plan": [ + "Co se změní, pokud přejdete na tarif Free" + ], "What is an alias?": [ "Co je alias?" ], @@ -25206,6 +26082,12 @@ "Your ${ planTitle } subscription has started": [ "Vaše předplatné ${ planTitle } bylo zahájeno" ], + "Your admin at ${ orgName } is inviting you to activate your new secure ${ BRAND_NAME } account and update your password.": [ + "Váš správce v organizaci ${ orgName } vás vyzývá, abyste si aktivovali svůj nový zabezpečený účet ${ BRAND_NAME } a aktualizovali své heslo." + ], + "Your admin is inviting you to activate your new secure ${ BRAND_NAME } account and update your password.": [ + "Váš správce vás vyzývá, abyste si aktivovali svůj nový zabezpečený účet ${ BRAND_NAME } a aktualizovali své heslo." + ], "Your calendar link": [ "URL adresa kalendáře" ], @@ -25218,6 +26100,15 @@ "Your plan": [ "Váš tarif" ], + "Your recovery file": [ + "Váš soubor pro obnovení" + ], + "Your recovery phrase": [ + "Vaše obnovovací fráze" + ], + "Your recovery setup": [ + "Vaše nastavení obnovy" + ], "Your referrals": [ "Vámi doporučení" ], @@ -25350,6 +26241,24 @@ "Admins can manage user accounts and give admin privileges to other users. Only the primary admin can edit the plan of the organization.": [ "Správci mohou spravovat uživatelské účty a udělovat práva správce ostatním uživatelům. Tarif organizace může upravovat pouze hlavní správce." ], + "Allow recovering your account with a one-time code sent to your recovery email": [ + "Umožnit obnovení účtu pomocí jednorázového kódu zaslaného na vaši e-mailovou adresu pro obnovení" + ], + "Allow recovering your account with a one-time code sent to your recovery phone": [ + "Umožnit obnovení účtu pomocí jednorázového kódu zaslaného na váš telefon pro obnovení" + ], + "Allow resetting your password from the account settings": [ + "Umožňuje resetování vašeho hesla v nastavení účtu" + ], + "Allow scanning a QR code from a ${ BRAND_NAME } mobile app to sign in": [ + "Umožnit přihlášení naskenováním QR kódu z mobilní aplikace ${ BRAND_NAME }" + ], + "Allow trusted contacts to request access to your account": [ + "Povolit důvěryhodným kontaktům požádat o přístup k vašemu účtu" + ], + "Allow trusted contacts to unlock your encrypted data after a password reset": [ + "Povolit důvěryhodným kontaktům odemknout vaše šifrovaná data po resetování hesla" + ], "Allows to seamlessly add Zoom video conferencing links to your calendar invitations.": [ "Umožňuje snadno přidávat odkazy na videokonference Zoom do vašich pozvánek kalendáře." ], @@ -25434,6 +26343,12 @@ "If you purchased a gift code or received one from our support team, you can enter it here.": [ "Pokud jste zakoupil dárkový kód nebo jste je obdržel od naší podpory, můžete ho vložit sem." ], + "Includes custom email domains and unlimited hide-my-email aliases in ${ MAIL_APP_NAME }, access to servers in 120+ countries in ${ VPN_SHORT_APP_NAME }, built-in 2FA and secure sharing in ${ PASS_SHORT_APP_NAME }, and more.": [ + "Zahrnuje vlastní e-mailové domény a neomezený počet aliasů hide-my-email v ${ MAIL_APP_NAME }, přístup k serverům ve více než 120 zemích v ${ VPN_SHORT_APP_NAME }, integrované 2FA a bezpečné sdílení v ${ PASS_SHORT_APP_NAME }, a mnoho dalšího." + ], + "Includes professional email at @yourdomain.com, cloud storage with collaborative document editing, scheduling and video conferencing, password management, a secure ${ VPN_SHORT_APP_NAME }, and more.": [ + "Zahrnuje profesionální e-mailovou adresu ve formátu @vasedomena.cz, cloudové úložiště s možností společné úpravy dokumentů, plánování schůzek a videokonference, správu hesel, zabezpečenou ${ VPN_SHORT_APP_NAME } a další funkce." + ], "Members who do not use 2FA will get an email asking them to enable it as soon as possible. Single sign-on users will not receive the email reminder.": [ "Členové, kteří 2FA nepoužívají, dostanou e-mail s výzvou, aby si ho co nejdříve aktivovali. Uživatelé s jednotným přihlášením nebudou dostávat e-mailové připomenutí." ], @@ -25455,6 +26370,15 @@ "Remove metadata from images to protect your privacy.": [ "Odebrání metadat z vašich obrázků pro ochranu vašeho soukromí." ], + "Save 12-word long phrase to unlock your account and your encrypted data instantly if you forgot your password": [ + "Uložte si 12-slovnou frázi, abyste mohli okamžitě odemknout svůj účet a zašifrovaná data, pokud zapomenete heslo" + ], + "Save an encryption backup file in this browser to recover your data after a password reset": [ + "Uložte si v tomto prohlížeči záložní soubor šifrování, abyste mohli obnovit svá data po resetování hesla" + ], + "Save an encryption backup file to recover your data after a password reset": [ + "Uložte si záložní soubor šifrování, abyste mohli obnovit svá data po resetování hesla" + ], "See number of unread messages in the tab icon": [ "Zobrazení počtu nepřečtených zpráv v ikoně záložky" ], @@ -25527,9 +26451,6 @@ "This feature is only available on Beta": [ "Tato funkce je k dispozici pouze ve verzi Beta" ], - "This is the default key used by other ${ MAIL_APP_NAME } users on older mobile apps to encrypt data they send to you": [ - "Toto je výchozí klíč, který používají ostatní uživatelé ${ MAIL_APP_NAME } ve starších mobilních aplikacích k šifrování dat, která vám posílají" - ], "This is the default key used by other ${ MAIL_APP_NAME } users to encrypt data they send to you": [ "Toto je výchozí klíč, který používají ostatní uživatelé ${ MAIL_APP_NAME } k šifrování dat, která vám posílají" ], @@ -25973,6 +26894,9 @@ "Email": [ "E-mail" ], + "General": [ + "Obecný" + ], "Invitation email": [ "E-mail pozvánky" ], @@ -26353,11 +27277,14 @@ "${ BRAND_NAME } will transfer as much data as possible, starting with your most recent messages.": [ "${ BRAND_NAME } přenese co nejvíce dat, počínaje vašimi nejnovějšími zprávami." ], - "Are you sure you want to delete the phone number?": [ - "Jste si jistí, že chcete vymazat telefonní číslo?" + "Are you sure you want to remove your notification email?": [ + "Jste si jisti, že chcete odebrat svůj e-mail pro oznámení?" ], - "Are you sure you want to delete this address?": [ - "Opravdu chcete smazat tuto adresu?" + "Are you sure you want to remove your recovery email?": [ + "Opravdu chcete odebrat svůj e-mail pro obnovení?" + ], + "Are you sure you want to remove your recovery phone number?": [ + "Jste si jisti, že chcete odebrat své telefonní číslo pro obnovení?" ], "By deleting this address, you will no longer be able to receive daily email notifications.": [ "Odstraněním této adresy již nebudete moci dostávat denní e-mailová oznámení." @@ -26368,8 +27295,11 @@ "By deleting this address, you will no longer be able to recover your account.": [ "Po odstraněním této adresy již nebude možné účet obnovit." ], - "By deleting this phone number, you will no longer be able to recover your account.": [ - "Po vymazáním tohoto telefonního čísla, již nebudete moci obnovit svůj účet." + "By removing this phone number, you will no longer be able to recover your account.": [ + "Odebráním telefonního čísla již nikdy nebudete moci obnovit svůj účet." + ], + "Could not login. Please open ${ PASS_APP_NAME } browser extension and login from there.": [ + "Nelze se přihlásit. Otevřete prosím rozšíření prohlížeče ${ PASS_APP_NAME } a přihlaste se odtud." ], "Could not sign up. Please open ${ PASS_APP_NAME } browser extension and sign up from there.": [ "Registrace se nezdařila. Otevřete prosím rozšíření prohlížeče ${ PASS_APP_NAME } a zaregistrujte se tam." @@ -26401,6 +27331,9 @@ "Reports are not end-to-end encrypted, please do not send any sensitive information.": [ "Hlášení nejsou zabezpečena koncovým šifrováním, neposílejte žádné citlivé informace." ], + "Servers in this gateway will enter a 10-day deactivation period. These servers can be added to a new Gateway, but their country cannot be changed.": [ + "Servery této brány začnou běžet v desetidenní deaktivační lhůtě. Tyto servery lze přidat do nové brány, ale jejich zemi nelze změnit." + ], "Skip verification?": [ "Přeskočit ověření?" ], diff --git a/applications/account/locales/da_DK.json b/applications/account/locales/da_DK.json index 787b8490f63..fd8dc7959fd 100644 --- a/applications/account/locales/da_DK.json +++ b/applications/account/locales/da_DK.json @@ -90,6 +90,9 @@ "Add": [ "Tilføj" ], + "Add ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }": [ + "Tilføj ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }" + ], "Add ${ BRAND_NAME } Account": [ "Tilføj ${ BRAND_NAME }-konto" ], @@ -105,6 +108,9 @@ "Add address or domain": [ "Tilføj adresse eller domæne" ], + "Add and verify": [ + "Tilføj og bekræft" + ], "Add another account": [ "Tilføj en anden konto" ], @@ -159,6 +165,9 @@ "Add user": [ "Tilføj bruger" ], + "Added ${ memberName } as group owner": [ + "Tilføjede ${ memberName } som gruppeejer" + ], "Align center": [ "Centrer" ], @@ -210,6 +219,9 @@ "Back to sign in": [ "Tilbage til login" ], + "Back to sign-in": [ + "Tilbage til login" + ], "Block": [ "Blokér" ], @@ -261,6 +273,9 @@ "Claim it": [ "Gør krav på den" ], + "Claim offer": [ + "Indløs tilbud" + ], "Claim this address": [ "Gør krav på denne adresse" ], @@ -303,6 +318,9 @@ "Confirm": [ "Bekræft" ], + "Confirm email": [ + "Bekræft e-mail" + ], "Confirm opening of link ${ linkToShow }": [ "Bekræft åbning af link ${ linkToShow }" ], @@ -318,15 +336,15 @@ "Connect Gmail address": [ "Forbind Gmail-adresse" ], - "Connect to Gmail": [ - "Forbind til Gmail" - ], "Connect to video conferencing": [ "Forbind til videokonferencer" ], "Connect your ${ BRAND_NAME } Account": [ "Forbind din ${ BRAND_NAME }-konto" ], + "Connect your email": [ + "Forbind din e-mail" + ], "Connected": [ "Forbundet" ], @@ -363,6 +381,9 @@ "Continue with ${ nameToDisplay } ${ maybeEmailInBrackets }": [ "Fortsæt med ${ nameToDisplay } ${ maybeEmailInBrackets }" ], + "Continue with Free": [ + "Fortsæt med Free" + ], "Continue with Google": [ "Fortsæt med Google" ], @@ -438,6 +459,9 @@ "Create organization": [ "Opret organisation" ], + "Create recovery phrase": [ + "Opret gendannelsessætning" + ], "Create users": [ "Opret brugere" ], @@ -510,8 +534,8 @@ "Delete record": [ "Slet post" ], - "Delete token ${ token.Account }": [ - "Slet token ${ token.Account }" + "Delete token ${ tokens[0].Account }": [ + "Slet token ${ tokens[0].Account }" ], "Delete token “${ token.Name }”": [ "Slet token “${ token.Name }”" @@ -552,6 +576,9 @@ "Disable categories": [ "Deaktiver kategorier" ], + "Disable category": [ + "Deaktiver kategori" + ], "Disable recovery phrase": [ "Deaktiver gendannelsessætning" ], @@ -627,6 +654,9 @@ "Download the desktop app": [ "Download desktop-appen" ], + "Download updated file": [ + "Download opdateret fil" + ], "Edit": [ "Redigér" ], @@ -699,6 +729,9 @@ "Enable ${ darkWebMonitoring }": [ "Aktiver ${ darkWebMonitoring }" ], + "Enable category": [ + "Aktivér kategori" + ], "enable desktop notifications": [ "at aktivere skrivebordsmeddelelser" ], @@ -750,6 +783,9 @@ "Filters are being applied. This might take a few minutes.": [ "Filtre anvendes. Dette kan tage et par minutter." ], + "Finish": [ + "Afslut" + ], "Fit to window": [ "Tilpas til vinduet" ], @@ -768,6 +804,12 @@ "Generate key": [ "Generér nøgle" ], + "Generate missing keys": [ + "Generér manglende nøgler" + ], + "Generate new phrase": [ + "Generer ny sætning" + ], "Generate new recovery phrase": [ "Opret ny gendannelsessætning" ], @@ -867,6 +909,9 @@ "Go to ${ planOrAppName }": [ "Gå til ${ planOrAppName }" ], + "Go to domain provider": [ + "Gå til domæneudbyder" + ], "Go to label": [ "Gå til etikette" ], @@ -1185,6 +1230,9 @@ "Reactivate keys": [ "Genaktivér nøgler" ], + "Read the story": [ + "Læs hele historien" + ], "Reconnect": [ "Tilslut igen" ], @@ -1260,6 +1308,9 @@ "Remove this notification": [ "Fjern denne notifikation" ], + "Removed ${ memberName } as group owner": [ + "Fjernede ${ memberName } som gruppeejer" + ], "Rename": [ "Omdøb" ], @@ -1341,12 +1392,18 @@ "Save": [ "Gem" ], + "Save & exit": [ + "Gem og afslut" + ], "Save address": [ "Gem adresse" ], "Save and continue": [ "Gem og fortsæt" ], + "Save and verify": [ + "Gem og bekræft" + ], "Save changes": [ "Gem ændringer" ], @@ -1368,6 +1425,9 @@ "Search settings": [ "Søgeindstillinger" ], + "Secure account": [ + "Beskyt din konto" + ], "See DNS TXT record": [ "Se DNS TXT-post" ], @@ -1590,6 +1650,9 @@ "Switch or add account": [ "Skift eller tilføj konto" ], + "Switch to free plan": [ + "Skift til gratis abonnement" + ], "Take a tour": [ "Tag en tour" ], @@ -1755,6 +1818,9 @@ "View recovery settings": [ "Se indstillinger for gendannelse" ], + "View recovery setup details": [ + "Se gendannelseskonfiguration" + ], "Void": [ "Ugyldig" ], @@ -1764,6 +1830,9 @@ "Void all recovery files?": [ "Ugyldiggør alle gendannelsesfiler?" ], + "Watch the interview": [ + "Se interviewet" + ], "Welcome": [ "Velkommen" ], @@ -2024,6 +2093,47 @@ "admin" ] }, + "Admin roles onboarding": { + "2 new admin roles": [ + "2 nye admin-roller" + ], + "3 new admin roles": [ + "3 nye admin-roller" + ], + "Configure security policies, data retention, and VPN infrastructure, and manage audit logs.": [ + "Konfigurer sikkerhedspolitikker, datalagring, og VPN-infrastruktur, og administrer logs." + ], + "Delegate management by assigning specific admin roles. Give each admin only the access they need. This follows the principle of least privilege, protecting your organization from compromised accounts and accidental errors.": [ + "Uddeleger administration ved at tildele specifikke admin-roller. Giv kun hver admin den adgang de skal bruge. Dette er i overensstemmelse med princippet om \"least privilege\", og det hjælper med at beskytte din organisation fra kompromitterede konti og utilsigtede fejl." + ], + "Delegate management for many users at once. Assign specific admin roles to groups for automatic permissions. This follows the principle of least privilege to save time on onboarding and offboarding while reducing errors.": [ + "Uddeleger administration for mange brugere ad gangen. Tildel specifikke admin-roller til grupper for automatisk at give tilladelser. Dette er i overensstemmelse med princippet om \"least privilege\", og sparer tid i forbindelse med onboarding og offboarding, samtidig med at det formindsker fejl." + ], + "Delegate management with the appropriate admin role.": [ + "Uddeleger administration med passende admin-roller" + ], + "Manage all users, groups, storage, security, billing, audit logs, and system configurations.": [ + "Administrer alle brugere, grupper, lager, sikkerhed, fakturering, logs, og systemkonfigurationer." + ], + "Manage users, groups, and storage for all members, assign roles, and allocate licenses.": [ + "Administrer brugere, grupper, og lagerplads for alle medlemmer, og tildel roller samt licenser." + ], + "New: Control admin access for individual users": [ + "Nyt: Kontrollér adminstratoradgang for individuelle brugere" + ], + "New: Control admin access for many users at once": [ + "Nyhed: Administrer admin-adgang for mange brugere på samme tid" + ], + "Organization admin:": [ + "Organisationsadmin:" + ], + "Security admin:": [ + "Sikkerhedsadmin:" + ], + "User admin:": [ + "Brugeradmin:" + ] + }, "AdminRole_Info": { "A role is a group of permissions that you can assign to the members of your organization.": [ "En rolle er en gruppe tilladelser, som du kan tildele medlemmerne af din organisation." @@ -2250,6 +2360,11 @@ "Din gratis prøveperiode udløber om ${ timeRemaining }" ] }, + "Badge": { + "Save ${ discountRate }%": [ + "Spar ${ discountRate }%" + ] + }, "Badge for domain": { "Disabled": [ "Deaktiveret" @@ -2782,15 +2897,66 @@ "${ BRAND_NAME } Migration Assistant": [ "${ BRAND_NAME } Migreringsassistent" ], - "Add a custom domain": [ - "Tilføj et brugerdomæne" + "${ migratedCount } of ${ providerUsers.length }": [ + "${ migratedCount } af ${ providerUsers.length }" + ], + "**p=none**: do not quarantine or reject unauthorized emails. Usually, people only use this policy to troubleshoot or test.": [ + "**p=none**: sæt hverken uautoriserede e-mails i karantæne eller afvis dem. Normalt bruger folk kun denne politik til fejlfinding eller test." + ], + "**p=quarantine**: asking the recipient platforms to mark the unauthorized emails as spam or quarantine them.": [ + "**p=quarantine**: beder modtagerplatformene om at markere de uautoriserede e-mails som spam eller sætte dem i karantæne." + ], + "**p=reject**: asking the recipient platforms to reject the unauthorized emails.": [ + "**p=reject**: beder modtagerplatformene om at afvise de uautoriserede e-mails." + ], + "Account connected": [ + "Konto forbundet" + ], + "Account disconnected": [ + "Kontoen er afbrudt" + ], + "Activated": [ + "Aktiveret" + ], + "Activation link": [ + "Aktiveringslink" + ], + "Activation link copied to clipboard": [ + "Aktiveringslink kopieret til udklipsholder" + ], + "Add a domain": [ + "Tilføj et domæne" + ], + "Add domain": [ + "Tilføj domæne" + ], + "Add users": [ + "Tilføj brugere" + ], + "Add users and configure your domain manually for sending and receiving mail. Ideal for small teams starting from a clean slate.": [ + "Tilføj brugere og konfigurer dit domæne manuelt til at sende og modtage mail. Idealt til mindre teams og for at starte på en frisk." + ], + "Address is already used by a user outside of your organization. Please contact customer support to resolve this": [ + "Adressen bruges allerede af en bruger uden for din organisation. Kontakt kundesupport for at løse dette" + ], + "All": [ + "Alle" + ], + "An unknown error occurred": [ + "Der opstod en ukendt fejl" ], - "App installed": [ - "Appen er installeret." + "Are you sure you want to proceed? Users who haven't claimed their account before the migration is finalized will need to request a password reset from their ${ BRAND_NAME } organization administrator.": [ + "Er du sikker på, at du vil fortsætte? Brugere, som ikke har indløst deres konto før migrationen er færdiggjort, vil skulle anmode om at nulstille adgangskoden fra deres ${ BRAND_NAME } organisationsadministrator." + ], + "As soon as the accounts are created, you can share the activation link so users can claim their ${ BRAND_NAME } account.": [ + "Så snart kontiene er tilføjet, kan du dele aktiveringslinket, så brugerne kan indløse deres ${ BRAND_NAME }-konto." ], "Authenticate": [ "Godkend" ], + "Authenticate to Google Workspace": [ + "Log ind på Google Workspace" + ], "Authenticate your Google Workspace account": [ "Godkend din Google Workspace-konto" ], @@ -2800,23 +2966,68 @@ "Change": [ "Skift" ], + "Choose how you want to bring your team and email setup to ${ BRAND_NAME }.": [ + "Vælg hvordan du vil overføre dit team- og e-mail-setup til ${ BRAND_NAME }." + ], + "Choose what to migrate. Your choice will apply to all users. The migration will start after you decide which users to copy.": [ + "Vælg hvad der skal migreres. Dit valg vil gælde alle brugere. Migrationen starter efter du vælger hvilke brugere der skal kopieres." + ], "Completed": [ "Fuldført" ], "Configure": [ "Opsæt" ], + "Configure domain": [ + "Konfigurer domæne" + ], "Configure migration": [ "Konfigurer migrering" ], + "Configure your domain": [ + "Konfigurer dit domæne" + ], "Contacts": [ "Kontakter" ], + "Continue migration": [ + "Fortsæt migration" + ], + "Copy activation link": [ + "Kopiér aktiveringslink" + ], + "Copy activation link to clipboard": [ + "Kopiér aktiveringslink til udklipsholder" + ], + "Copy the below code and paste it in the DNS section of your domain host. You can find an example and some helpful tips ${ hereHref }.": [ + "Kopiér den nedenstående kode og indsæt det i DNS-sektionen hos din domænevært. Du kan se et eksempel og nogle tips ${ hereHref }." + ], + "Creating accounts": [ + "Kontioprettelse" + ], + "DKIM adds a digital signature to each email so recipients can verify that the message really came from your domain and was not altered in transit. Without it, messages may be treated as less trustworthy.": [ + "DKIM tilføjer en digital signatur til hver e-mail, så modtagerne kan verificere at beskeden virkelig kom fra dit domæne, og ikke blev ændret undervejs. Beskeder kan blive betragtet som mindre troværdige uden den." + ], + "DKIM records": [ + "DKIM-records" + ], + "DMARC builds on SPF and DKIM by telling receiving servers how to handle messages that fail these checks. It helps protect your domain from impersonation and improves overall delivery reliability.": [ + "DMARC bygger på SPF og DKIM ved at fortælle modtagerservere hvordan de skal håndtere beskeder der fejler disse tjek. Det hjælper med at beskytte dit domæne fra falske beskeder der udgiver sig for at være fra dit, og gør generelt levering mere pålidelig." + ], + "DMARC records": [ + "DMARC-records" + ], + "Domain added": [ + "Domæne tilføjet" + ], "Domain connected": [ "Domæne forbundet" ], - "Domain ownership verified": [ - "Domæneejerskab verificeret" + "Ensure that your emails reach the inbox, not the spam folder. Updating SPF will allow users to send from ${ BRAND_NAME } and Google simultaneously for the duration of the migration.": [ + "Sørg for at dine e-mails når indbakken, og ikke spammappen. Ved at opdatere SPF kan brugere sende e-mails fra ${ BRAND_NAME } og Google på samme tid under hele migrationen." + ], + "Errors": [ + "Fejl" ], "Estimated size": [ "Anslået størrelse" @@ -2824,15 +3035,39 @@ "Failed to load OAuth": [ "Kunne ikke indlæse OAuth" ], + "Finalize migration": [ + "Færdiggør migrationen" + ], + "Finalize your migration": [ + "Færdiggør din migration" + ], + "Finalizing the migration means all your emails will be routed directly to ${ BRAND_NAME }. Users will stop receiving emails on their Google accounts and data will not be synchronized between ${ BRAND_NAME } and Google anymore.": [ + "Ved at færdiggøre migrationen bliver alle e-mails sendt direkte til ${ BRAND_NAME }. Brugerne vil ikke længere modtage e-mails på deres Google-konti, og data synkroniseres ikke mellem ${ BRAND_NAME } og Google længere." + ], + "Find out what can be migrated.": [ + "Find ud af hvad der kan migreres." + ], "Finish setting up your business account": [ "Færdiggør konfigurationen af din virksomhedskonto" ], + "Go to Domain names": [ + "Gå til domænenavne" + ], "Google Marketplace app to copy data to ${ BRAND_NAME }": [ "Google Marketplace-app til at kopiere data til ${ BRAND_NAME }" ], + "Google Workspace account": [ + "Google Workspace konto" + ], + "Hang tight, we're setting up user accounts and will start importing user data shortly.": [ + "Hæng på, vi sætter brugerkontiene op, og vil begynde at importere brugerdata snart." + ], "Has errors": [ "Fejlbehæftet" ], + "Import errors for ${ user.AdminSetName }": [ + "Fejl ved import for ${ user.AdminSetName }" + ], "In progress": [ "I gang" ], @@ -2842,14 +3077,20 @@ "Install migration app": [ "Installer migrations app." ], - "Learn more about what can be migrated. Learn more": [ - "Få mere at vide om, hvad der kan migreres. Få mere at vide" + "Install Migration assistant": [ + "Installer migrationsassistenten" + ], + "Loading your organization data": [ + "Indlæser din organisationsdata" ], "Mail": [ "Mail" ], - "Migrate": [ - "Migrér" + "Managed via ${ registrar.name }": [ + "Administreret via ${ registrar.name }" + ], + "Member address not found. Please contact customer support to resolve this": [ + "Adresse for medlem ikke fundet. Kontakt venligst vores kundesupport for at løse dette" ], "Migrate from Google Workspace": [ "Migrer fra Google Workspace" @@ -2857,6 +3098,12 @@ "Migrate users": [ "Migrer brugere" ], + "Migrate users to ${ BRAND_NAME }": [ + "Migrer brugere til ${ BRAND_NAME }" + ], + "Migrated": [ + "Migreret" + ], "Migration includes": [ "Migreringen omfatter" ], @@ -2867,8 +3114,35 @@ "Migration status": [ "Migrationsstatus" ], - "Not started": [ - "Ikke startet" + "Missing organization private key": [ + "Mangler organisationens private nøgle" + ], + "Missing organization public key": [ + "Mangler organisationens offentlige nøgle" + ], + "More details": [ + "Flere detaljer" + ], + "Move your users, emails, and settings from Google Workspace automatically. We’ll guide you through connecting your account, verifying your domain, and migrating users securely.": [ + "Flyt dine brugere, e-mails og indstillinger fra Google Workspace automatisk. Vi vejleder dig igennem at tilslutte din konto, bekræfte dine domæner og sikkert migrere brugere." + ], + "No error details available. Please contact customer support for more information": [ + "Ingen tilgængelige fejloplysninger. Kontakt kundesupport for mere information" + ], + "No users to display": [ + "Ingen brugere at vise" + ], + "Not activated": [ + "Ikke aktiveret" + ], + "Not confirmed": [ + "Ikke bekræftet" + ], + "Once users have claimed their ${ BRAND_NAME } account, finalize the migration.": [ + "Færdiggør migrationen når brugerne har indløst deres ${ BRAND_NAME }-konto." + ], + "Once we have confirmed that emails are routed to ${ BRAND_NAME } the migration will be finalized. You will receive a confirmation email to let you know when this happens. This process can take up to 24 hours.": [ + "Når vi har bekræftet at e-mails bliver dirigeret til ${ BRAND_NAME }, så færdiggøres migrationen. Du vil modtage en bekræftelse på e-mail der fortæller dig hvornår dette sker. Processen kan tage op til 24 timer." ], "Organization does not have enough seats available": [ "Organisationen har ikke nok ledige pladser" @@ -2876,8 +3150,20 @@ "Organization does not have enough storage available": [ "Organisationen har ikke tilstrækkelig ledig lagerplads" ], - "Organization settings": [ - "Organisationsindstillinger" + "Pending": [ + "Afventer" + ], + "Please add the following records in your DNS console of your domain provider:": [ + "Tilføj de følgende records i din domæneudbyders DNS-konsol:" + ], + "Please leave this window open until we're done creating all the users.": [ + "Lad dette vindue være åbent indtil vi er færdige med at oprette alle brugerne." + ], + "Please select at least one product to migrate": [ + "Vælg venligst mindst ét produkt der skal migreres" + ], + "Refresh": [ + "Opdater" ], "Required": [ "Påkrævet" @@ -2888,8 +3174,8 @@ "Select at least one user to start a migration": [ "Vælg mindst én bruger for at starte en migrering" ], - "Select what you want to migrate, this will apply to all users whether they are created now or later. Migration will start after user accounts are created.": [ - "Vælg, hvad du ønsker at migrere. Dette vil blive anvendt på alle brugere, uanset om de oprettes nu eller senere. Migrationen starter, når brugerkonti oprettes." + "Select users to migrate": [ + "Vælg brugere at migrere" ], "Set up": [ "Opsætning" @@ -2897,53 +3183,120 @@ "Set up billing information": [ "Konfigurer faktureringsoplysninger" ], + "Set up manually": [ + "Konfigurer manuelt" + ], + "Set up secure sending (DKIM)": [ + "Konfigurer sikker afsendelse (DKIM)" + ], + "Set up secure sending (DMARC)": [ + "Konfigurer sikker afsendelse (DMARC)" + ], + "Set up secure sending (SPF)": [ + "Konfigurer sikker afsendelse (SPF)" + ], "Set up two-factor authentication": [ "Opsæt to-faktor-godkendelse" ], "Settings": [ "Indstillinger" ], + "Share the activation link to users so they can claim their ${ BRAND_NAME } account.": [ + "Del aktiveringslinket til brugere så de kan oprette deres ${ BRAND_NAME }-konto." + ], "Sign in to Google Workspace": [ "Log ind på Google Workspace" ], + "Size": [ + "Størrelse" + ], + "Some accounts are not claimed": [ + "Nogle konti er ikke indløst" + ], + "SPF records": [ + "SPF-records" + ], + "Start migrating": [ + "Start migration" + ], "Start migration": [ "Start migrering" ], "Status": [ "Status" ], + "The default setting is none. However, to improve your security we recommend setting this value to p=quarantine.": [ + "Standardindstillingen er none. Vi anbefaler dog at sætte denne værdi til p=quarantine for at forbedre din sikkerhed." + ], + "The “p=” value specifies the action to take for emails that fail DMARC. Here are the available actions:": [ + "\"p=\"-værdien angiver den handling der skal tages for de e-mails der fejler DMARC. Her er de tilgængelige handlinger:" + ], + "This migration has been completed": [ + "Denne migration er færdig" + ], "To migrate your organization’s data, you need to install the ${ BRAND_NAME } Migration Assistant app from the Google Workspace Marketplace. This will grant permission to ${ BRAND_NAME } to copy your data. After installing it, come back here to continue.": [ "For at migrere din organisations data skal du installere appen ${ BRAND_NAME } Migration Assistant fra Google Workspace Marketplace. Dette giver ${ BRAND_NAME } tilladelse til at kopiere dine data. Når du har installeret den, så vend tilbage hertil for at fortsætte." ], - "Transfer errors": [ - "Overførselsfejl" + "Update records for receiving": [ + "Opdater records for modtagelse" ], "User": [ "Bruger" ], + "User needs to activate their account through the activation link shown above": [ + "Brugeren skal aktivere deres konto gennem aktiveringslinket vist ovenfor" + ], + "User status": [ + "Brugerstatus" + ], + "Users can use ${ BRAND_NAME } or Google simultaneously for the duration of the migration.": [ + "Brugerne kan bruge ${ BRAND_NAME } eller Google på samme tid under hele migrationen." + ], "Users migrated": [ "Brugere migreret" ], + "Verified": [ + "Bekræftet" + ], + "Verify domain ownership": [ + "Bekræft domæneejerskab" + ], "Verify installation": [ "Bekræft installationen" ], "Verify your domain": [ "Bekræft dit domæne" ], - "Verify your domain ownership": [ - "Bekræft dit domæneejerskab" - ], "Verify your domain to start a migration": [ "Bekræft dit domæne for at starte en migrering" ], + "We detected the primary domain linked to your Google Workspace account. Confirm it to continue setting up email for your ${ BRAND_NAME } organization.": [ + "Vi har registreret det primære domæne tilsluttet din Google Workspace-konto. Bekræft den for at fortsætte med at konfigurere din e-mail til din ${ BRAND_NAME }-organisation." + ], "We were unable to verify the installation, please check that you have installed it in your Google Workspace account and try again.": [ "Vi kunne ikke verificere installationen. Kontrollér, at du har installeret den i din Google Workspace-konto, og prøv igen." ], + "We're still checking the MX records with your domain provider.": [ + "Vi er stadig i gang med at tjekke dine MX-records med din domæneudbyder." + ], + "We've noticed some users have not claimed their ${ BRAND_NAME } accounts.": [ + "Vi har bemærket at nogle brugere ikke har oprettet deres ${ BRAND_NAME }-konti." + ], "What are you migrating?": [ "Hvad migrerer du?" ], + "You": [ + "Dig" + ], "You need to grant the permission for ${ BRAND_NAME } to copy your data. After accepting permissions, come back here to continue.": [ "Du skal give tilladelse til, at ${ BRAND_NAME } kan kopiere dine data. Når du har accepteret tilladelserne, så vend tilbage hertil for at fortsætte." + ], + "You're all set!": [ + "Så er du klar!" + ], + "Your current plan allows up to ${ maxMembers } user. To migrate additional users, add more seats to your subscription.": [ + "Din nuværende plan tillader op til ${ maxMembers } bruger. Tilføj flere pladser til dit abonnement for at migrere flere brugere.", + "Din nuværende plan tillader op til ${ maxMembers } brugere. Tilføj flere pladser til dit abonnement for at migrere flere brugere." ] }, "breadcrumb": { @@ -3051,9 +3404,18 @@ ] }, "Button": { + "Add users manually": [ + "Tilføj brugere manuelt" + ], + "Cancel": [ + "Annuller" + ], "Close": [ "Luk" ], + "Configure your network": [ + "Konfigurer dit netværk" + ], "Continue using ${ MAIL_APP_NAME }.": [ "Fortsæt med at bruge ${ MAIL_APP_NAME }." ], @@ -3075,6 +3437,12 @@ "Got it": [ "Forstået" ], + "Invite your team": [ + "Inviter dit team" + ], + "Manage global VPN permissions": [ + "Administrer globale VPN-tilladelser" + ], "Maybe later": [ "Måske senere" ], @@ -3084,12 +3452,21 @@ "Remind me later": [ "Påmind mig senere" ], + "Secure your organization": [ + "Beskyt din organisation" + ], "Send": [ "Send" ], "Set up other features": [ "Konfigurer andre funktioner" ], + "Set up SSO": [ + "Konfigurer SSO" + ], + "Sign in": [ + "Log ind" + ], "Take a tour": [ "Tag en tour" ] @@ -3684,6 +4061,41 @@ "Hvis" ] }, + "Confirm cancellation": { + "Access is restored once usage is back within limits.": [ + "Adgangen bliver genoprettet så snart forbruget er indenfor grænserne igen." + ], + "Back up photos from your devices": [ + "Opret sikkerhedskopier af fotos fra dine enheder" + ], + "Cancel subscription": [ + "Opsig abonnement" + ], + "Confirm cancellation": [ + "Bekræft opsigelse" + ], + "If you exceed free plan limits, you won't be able to:": [ + "Hvis du overskrider grænserne for det gratis abonnement, kan du ikke:" + ], + "Keep current plan": [ + "Behold nuværende abonnement" + ], + "Manage your calendar": [ + "Administrer din kalender" + ], + "Receive new emails": [ + "Modtag nye e-mails" + ], + "Send emails with attachments": [ + "Send e-mails med vedhæftninger" + ], + "Upload any new files": [ + "Uploade nogen nye filer" + ], + "When your subscription ends on ${ endDate }, your account will switch to the Free plan. If your usage exceeds Free plan limits, some features may be temporarily unavailable.": [ + "Når dit abonnement udløber den ${ endDate } vil din konto skifte over til det gratis abonnement. Hvis dit forbrug overstiger grænserne på det gratis abonnement vil nogle funktioner muligvis være midlertidigt utilgængelige." + ] + }, "Confirm modal title": { "Import is incomplete!": [ "Importen er ufuldstændig!" @@ -4687,6 +5099,9 @@ "/month": [ "/måned" ], + "/user /month": [ + "/pr. bruger /pr. måned" + ], "/user per month": [ "/bruger pr. måned" ] @@ -4853,6 +5268,9 @@ ] }, "Description": { + "${ BRAND_NAME }'s end-to-end encryption means only you can unlock your data. Set up recovery options now to ensure you never lose access.": [ + "${ BRAND_NAME }s end-to-end kryptering betyder at det kun er dig der kan låse op få dine data. Konfigurer metoder til gendannelse for at sikre dig at du aldrig mister adgang." + ], "${ DOCS_SHORT_APP_NAME } in ${ DRIVE_APP_NAME } allows you to work together with others in a secure, encrypted environment.": [ "${ DOCS_SHORT_APP_NAME } i ${ DRIVE_APP_NAME } giver dig mulighed for at samarbejde med andre i et sikkert, krypteret miljø." ], @@ -4860,7 +5278,10 @@ "${ MAIL_APP_NAME } er ikke din standard mailapplikation." ], "${ MAIL_APP_NAME } is your default mail application.": [ - "${ MAIL_APP_NAME } er din standardapplikation til mail." + "${ MAIL_APP_NAME } er din standard mailapplikation." + ], + "${ MAIL_APP_NAME } keeps your business data secure and lets you send encrypted emails to anyone.": [ + "${ MAIL_APP_NAME } holder din virksomhedsdata sikker og lader dig sende krypterede e-mails til alle." ], "A checked box means the feature is disabled.": [ "Et afkrydset felt betyder, at funktionen er deaktiveret." @@ -4883,14 +5304,20 @@ "Automatically sort your incoming messages before they reach your inbox.": [ "Sorter automatisk dine indgående beskeder, før de når din indbakke." ], + "Available storage: ${ storageText }": [ + "Tilgængelig lagerplads: ${ storageText }" + ], "Available with ${ title }": [ "Tilgængelig med ${ title }" ], "Block Google's ability to profile you. Gmail can't see what you do in ${ MAIL_APP_NAME }": [ "Blokér Google fra at profilere dig. Gmail kan ikke se hvad du laver i ${ MAIL_APP_NAME }" ], - "Bring over email, calendar events, and contacts from another provider.": [ - "Overfør e-mail, kalenderbegivenheder og kontakter fra en anden udbyder." + "Bring over your email, calendar events, and contacts from another provider.": [ + "Overfør din e-mail, kalenderbegivenheder og kontakter fra en anden udbyder." + ], + "Build trust and brand recognition with professional email addresses at your own domain.": [ + "Opbyg tillid og brandgenkendelse med professionelle e-mailadresser på dit eget domæne." ], "Configure this first to activate your organization and customize your email address.": [ "Konfigurer dette først for at aktivere din organisation og tilpasse din e-mailadresse." @@ -4898,6 +5325,9 @@ "Connect your CRM, website, printers, and more.": [ "Forbind din CRM, dit websted, dine printere og mere." ], + "Create a Gateway to give your users access to your IT resources through dedicated servers.": [ + "Opret en gateway for at give dine brugere adgang til dine IT-ressourcer via dedikerede servere." + ], "Create a Zoom meeting and add joining details to your event with one click.": [ "Opret et Zoom-møde, og tilføj deltageroplysninger til din begivenhed med et enkelt klik." ], @@ -4907,9 +5337,15 @@ "Create groups you can email with a single address.": [ "Opret grupper, som du kan sende e-mails til med én enkelt adresse." ], + "Create new user accounts or import users with SSO (single sign-on) SCIM provisioning.": [ + "Opret nye brugerkonti eller importér brugere med SSO (single sign-on) SCIM-provisionering." + ], "Create policies to decide who can connect to shared servers in each country.": [ "Opret politikker for at afgøre, hvem der kan forbinde til delte servere i hvert land." ], + "Decide which users can connect to each of our 120+ shared server locations.": [ + "Bestem hvilke brugere der kan forbinde til hver af vores 120+ delte serverplaceringer." + ], "Easily access your email and calendar on desktop and mobile.": [ "Tilgå nemt din e-mail og kalender på desktop og mobil." ], @@ -4934,6 +5370,9 @@ "Encrypting and importing contacts... This may take a few minutes. When the process is completed, you can close this modal.": [ "Krypterer og importerer kontakter... Dette kan tage et par minutter. Når processen er afsluttet, kan du lukke dette vindue." ], + "Enough room for years of emails, attachments and more.": [ + "Nok plads til flere år værd af e-mails, vedhæftninger og mere." + ], "Ensure secure access to organization data, even if your team is remote or using public WiFi.": [ "Sikr sikker adgang til organisationens data, selv hvis jeres team er fjernbaseret eller bruger offentligt WiFi." ], @@ -4958,12 +5397,30 @@ "Help your team securely store passwords to sensitive business and client information.": [ "Hjælp dit team med sikkert at lagre adgangskoder til følsomme forretnings- og klientoplysninger." ], + "How our customer support team got our VPN app directly into people's hands.": [ + "Sådan fik vores kundeserviceteam vores VPN-app leveret direkte til folk." + ], + "How we fought back when ${ BRAND_NAME } was blocked in an aggressive campaign.": [ + "Sådan kæmpede vi imod da ${ BRAND_NAME } blev blokeret i en aggressiv kampagne." + ], + "How we supported local activists when privacy and free speech were threatened.": [ + "Sådan støttede vi lokale aktivister, da privatliv og ytringsfriheden blev truet." + ], + "How you unlock your encrypted data if you lose your password.": [ + "Sådan låser du op for din krypterede data hvis du mister din adgangskode." + ], + "If you haven’t already, enable some recovery methods to make sure you never lose access to ${ VPN_APP_NAME }.": [ + "Hvis du ikke allerede har gjort det kan du aktivere nogle gendannelsesmetoder for at sikre, at du aldrig mister adgangen til ${ VPN_APP_NAME }." + ], "It looks like the contact list you are importing contains some groups. Please review how these groups should be imported.": [ "Det ser ud til at kontaktlisten du importerer indeholder nogle grupper. Gennemgå hvordan disse grupper skal importeres." ], "Keep different parts of your life separate and your inbox organized with additional addresses.": [ "Hold forskellige dele af dit liv adskilt, og hold din indbakke organiseret med yderligere adresser." ], + "Keep your team secure on the go with our apps for web, iOS, Android, Windows, Mac, and Linux.": [ + "Hold dit team sikkert på farten med vores apps til web, iOS, Android, Windows, Mac og Linux." + ], "Learn more about common problems": [ "Få mere at vide om almindelige problemer" ], @@ -4973,6 +5430,9 @@ "Make your email footer your own — showcase your unique brand, not ours.": [ "Gør din e-mailsidefod til din egen – fremvis dit unikke brand, ikke vores." ], + "Methods that include both password reset and data recovery.": [ + "Metoder som inkluderer både nulstilling af adgangskoden og datagendannelse." + ], "Most issues can be solved in a few minutes with our step-by-step guides.": [ "De fleste problemer kan løses på nogle få minutter med vores trinvise vejledninger." ], @@ -4985,8 +5445,8 @@ "Read, reply, and stay on top of Gmail from within ${ MAIL_APP_NAME }": [ "Læs, svar og hold styr på Gmail direkte fra ${ MAIL_APP_NAME }" ], - "Send a code to your recovery email or phone": [ - "Send en kode til din gendannelses-e-mail eller din telefon" + "Select which categories you want to add and if you want to receive push notifications for each category.": [ + "Vælg de kategorier, du gerne vil tilføje, og om du vil modtage push-notifikationer for hver kategori." ], "Set up accounts for all users and invite them to join ${ BRAND_NAME }.": [ "Konfigurer konti for alle brugere, og inviter dem til at tilmelde sig ${ BRAND_NAME }." @@ -5000,6 +5460,9 @@ "Still need help? Our support team is here for you.": [ "Har du stadig brug for hjælp? Vores supportteam er her for at hjælpe." ], + "This allows you to regain access to your ${ BRAND_NAME } account but does not recover your encrypted data.": [ + "Dette giver dig mulighed for at tilgå din ${ BRAND_NAME }-konto igen, men det gendanner ikke din krypterede data." + ], "This may happen if permissions were removed or your password changed.": [ "Dette kan ske hvis nogle tilladelser blev fjernet, eller din adgangskode blev ændret." ], @@ -5028,27 +5491,39 @@ "Track the status and activity of your referrals": [ "Følg status og aktivitet for dine henvisninger" ], + "Unlock 15 GB of storage for just ${ config.offerPrice }.": [ + "Lås op for 15 GB lagerplads til kun ${ config.offerPrice }." + ], "Upgrade to ${ planName } to connect up to ${ MAX_SYNC_PAID_USER } accounts": [ "Opgrader til ${ planName } for at forbinde op til ${ MAX_SYNC_PAID_USER } konti" ], "Upgrade to get ${ activatePmUser } for a shorter, easy-to-remember email address in addition to your current one.": [ "Opgrader for at få ${ activatePmUser } og en kortere e-mailadresse, der er nem at huske, ud over din nuværende." ], + "Use a recovery method to reset your password": [ + "Brug en gendannelsesmetode til at nulstille din adgangskode" + ], "Use this guide to get your organization promptly benefiting from ${ BRAND_NAME }'s industry-leading encryption and privacy ecosystem.": [ "Brug denne vejledning for hurtigt at lade din organisation drage fordel af ${ BRAND_NAME }'s branchens førende kryptering og privatlivsøkosystem." ], "We can't access ${ boldEmails } anymore.": [ "Vi kan ikke længere få adgang til ${ boldEmails }." ], + "We will pause imports at 80% storage to reserve space for new messages.": [ + "Vi sætter importer på pause ved 80% lagerplads for at reservere plads til nye beskeder." + ], "We'll bring in your old emails and connect your Gmail to ${ MAIL_APP_NAME } so new messages appear automatically": [ "Vi importerer dine gamle e-mails og forbinder din Gmail til ${ MAIL_APP_NAME }, så nye beskeder vises automatisk" ], - "We've started importing your email from Gmail. We'll let you know when it's done.": [ - "Vi er begyndt at importere din e-mail fra Gmail. Vi giver dig besked når det er færdigt." + "We've started importing your emails from Gmail. We'll let you know when it's done.": [ + "Vi er begyndt at importere din e-mails fra Gmail. Vi giver dig besked når det er færdigt." ], "We’re sorry to see you go. If you have a moment, we’d really appreciate hearing why you’d like to cancel. Your feedback helps us make ${ BRAND_NAME } better for everyone.": [ "Vi er kede af at du forlader os. Hvis du har et øjeblik, så ville vi sætte stor pris på at høre hvorfor du annullerer. Din feedback hjælper os med at gøre ${ BRAND_NAME } bedre for alle." ], + "With new email categories, only important messages land in your primary inbox. Categories work just like spam filters. ${ MAIL_APP_NAME } never reads your emails or shares your data.": [ + "Med nye e-mailkategorier er det kun vigtige beskeder der lander i din primære indbakke. Kategorier fungerer nøjagtig ligesom spamfiltre. ${ MAIL_APP_NAME } læser aldrig dine e-mails eller deler din data." + ], "You already have a Gmail address forwarding to ${ MAIL_APP_NAME }. Connect it below to send and receive emails directly from ${ MAIL_APP_NAME }.": [ "Du har allerede en Gmail-adresse, der videresender til ${ MAIL_APP_NAME }. Forbind til den nedenfor for at sende og modtage e-mails direkte fra ${ MAIL_APP_NAME }." ], @@ -5090,6 +5565,12 @@ "You've connected one external account address to ${ MAIL_APP_NAME }.": [ "Du har forbundet én ekstern kontoadresse til ${ MAIL_APP_NAME }." ], + "Your free ${ MAIL_APP_NAME } account comes with limited storage so we'll only import ${ newUserStorageText } of your most recent Gmail messages": [ + "Din gratis ${ MAIL_APP_NAME }-konto har begrænset lagerplads, så vi importerer kun ${ newUserStorageText } af dine seneste Gmail-beskeder" + ], + "Your free ${ MAIL_APP_NAME } account comes with limited storage so we'll only import your most recent Gmail emails.": [ + "Din gratis ${ MAIL_APP_NAME }-konto har begrænset lagerplads, så vi importerer kun dine seneste Gmail-beskeder." + ], "Your plan supports ${ MAX_SYNC_FREE_USER } Gmail address.": [ "Dit abonnement understøtter ${ MAX_SYNC_FREE_USER } Gmail-adresse.", "Dit abonnement understøtter ${ MAX_SYNC_FREE_USER } Gmail-adresser." @@ -5104,6 +5585,11 @@ "skal du bruge Easy Switch importassistenten" ] }, + "Description for domain modal": { + "Duplicate DMARC record found, go to the DNS console of your domain provider to fix it.": [ + "Duplikerede DMARC-records fundet, gå til din domæneudbyders DNS-konsol for at fikse det." + ] + }, "Description of the purpose of the import CSV modal": { "Also, we have automatically matched CSV fields with vCard fields. You can review and change this matching manually.": [ "Vi har også automatisk matchet CSV-felter med vCard-felter. Du kan gennemgå og ændre denne matchning manuelt." @@ -5527,6 +6013,9 @@ "120m": [ "120m" ], + "15 minutes": [ + "15 minutter" + ], "30 minutes": [ "30 minutter" ], @@ -6149,7 +6638,7 @@ "${ user } will not be able to access your account until the next emergency access.": [ "${ user } vil ikke kunne få adgang til din konto før næste nødadgang." ], - "**${ contact }** is now your recovery contact. They can help you recover your data after a password reset.": [ + "**${ contact }** is now your recovery contact. They can help you unlock your data after you reset your password.": [ "**${ contact }** er nu din gendannelseskontakt. De kan hjælpe dig med at gendanne dine data efter en nulstilling af adgangskoden." ], "**If they confirm**, click **Approve recovery**. This will unlock their encrypted data.": [ @@ -6179,12 +6668,21 @@ "Add": [ "Tilføj" ], + "Add 1 more": [ + "Tilføj 1 mere" + ], "Add emergency contact": [ "Tilføj nødkontakt" ], + "Add option": [ + "Tilføj mulighed" + ], "Add recovery contact": [ "Tilføj gendannelseskontakt" ], + "Add recovery method": [ + "Tilføj en gendannelsesmetode" + ], "Added on ${ formattedDate }": [ "Tilføjet den ${ formattedDate }" ], @@ -6227,6 +6725,9 @@ "Contacts": [ "Kontakter" ], + "Data recovery contacts": [ + "Kontakter til gendannelse af data" + ], "Data successfully recovered. You can now decrypt your existing data and encrypted files.": [ "Data gendannet. Du kan du dekryptere dine eksisterende data og krypterede filer." ], @@ -6272,6 +6773,12 @@ "Enable auto-renew": [ "Aktivér automatisk fornyelse" ], + "Enter your extra password": [ + "Indtast din ekstra adgangskode" + ], + "Explore plans": [ + "Udforsk abonnementer" + ], "For ${ email }": [ "Til ${ email }" ], @@ -6302,11 +6809,9 @@ "Less than a minute left": [ "Mindre end et minut tilbage" ], - "Let ${ user } know it’s really you trying to regain access.": [ - "Lad ${ user } vide, at det virkelig er dig, der forsøger at genvinde adgang." - ], - "None": [ - "Ingen" + "Maximum of ${ limit } contact reached. To change, remove a contact and add a new one.": [ + "Det maksimale antal på ${ limit } kontakt nået. Fjern en kontakt eller tilføj en ny for at ændre det.", + "Det maksimale antal på ${ limit } kontakter nået. Fjern en kontakt eller tilføj en ny for at ændre det." ], "Only ": [ "Kun " @@ -6398,14 +6903,11 @@ "Select recovery contact ${ name }": [ "Vælg gendannelseskontakt ${ name }" ], - "Send email request": [ - "Send e-mail anmodning" - ], "Send recovery request": [ "Send gendannelsesanmodning" ], - "Set account recovery": [ - "Indstil kontogendannelse" + "Start recovery": [ + "Start gendannelse" ], "Stop being recovery contact": [ "Stop med at være gendannelseskontakt" @@ -6425,9 +6927,15 @@ "They added me as trusted contact. I can access their account in case of an emergency.": [ "De har tilføjet mig som betroet kontakt. Jeg kan få adgang til deres konto i tilfælde af en nødsituation." ], + "They added you as trusted contact. You can access their account in case of an emergency.": [ + "De har tilføjet dig som betroet kontakt. Du kan få adgang til deres konto i en nødsituation." + ], "They may ask to access my account in case of an emergency.": [ "De kan anmode om at få adgang til min konto i tilfælde af en nødsituation." ], + "They may ask to access your account in case of an emergency.": [ + "De kan anmode om at få adgang til din konto i en nødsituation." + ], "They will receive access automatically in **${ days } day**, on **${ formattedAccessibleAt }**, you can reject their request or give them access immediately at any time.": [ "De vil automatisk få adgang om **${ days } dag**, den **${ formattedAccessibleAt }**. Du kan afvise deres anmodning eller du kan når som helst give dem umiddelbar adgang.", "De vil automatisk få adgang om **${ days } dage**, den **${ formattedAccessibleAt }**. Du kan afvise deres anmodning eller du kan når som helst give dem umiddelbar adgang." @@ -6444,6 +6952,9 @@ "Time required before automatically granting them access": [ "Krævet tid før der automatisk gives adgang" ], + "To add recovery contacts, you must have a recovery email address or phone number.": [ + "For at tilføje gendannelseskontakter skal du have en e-mailadresse eller et telefonnummer til gendannelse." + ], "To disable this recovery method, remove all your recovery contacts.": [ "For at deaktivere denne gendannelsesmetode, skal du fjerne alle dine gendannelseskontakter." ], @@ -6453,6 +6964,9 @@ "Unable to recover data": [ "Kan ikke gendanne data" ], + "Unlock ${ PASS_APP_NAME }": [ + "Lås op for ${ PASS_APP_NAME }" + ], "Upgrade": [ "Opgradér" ], @@ -6474,6 +6988,9 @@ "We received a request to unlock the encrypted data of your contact **${ user }**.": [ "Vi har modtaget en anmodning om at låse de krypterede data op for din kontakt **${ user }**." ], + "We sent an email request to ${ user }. Let them know it's really you trying to regain access.": [ + "Vi sendte en e-mail-anmodning til ${ user }. Fortæl dem, at det virkelig er dig, der prøver at få adgang igen." + ], "We were not able to verify the recovery data. Proceed anyway?": [ "Vi kunne ikke verificere gendannelsesdataen. Vil du fortsætte alligevel?" ], @@ -6803,6 +7320,9 @@ "Invalid invitation link": [ "Ugyldigt invitationslink" ], + "Invalid joining link. Please contact your administrator.": [ + "Ugyldigt tilslutningslink. Kontakt din administrator." + ], "Invalid name": [ "Ugyldigt navn" ], @@ -6979,9 +7499,6 @@ "Please try again in a few moments.": [ "Prøv venligst igen om et øjeblik." ], - "Please upgrade to a business plan with more than 1 user to get multi-user support": [ - "Opgrader venligst til et erhversabonnement med mere end 1 bruger for at få support til flere brugere" - ], "Please upgrade to a business plan with more than 1 user to manage multiple users.": [ "Opgradér venligst til et erhvervsabonnement med mere end 1 bruger for at administrere flere brugere." ], @@ -7124,6 +7641,9 @@ "There are too many folders in your external account. Please customize the import to delete some folders.": [ "Der er for mange mapper i din eksterne konto. Rediger venligst importen for at slette nogle mapper." ], + "There was an error, please try again.": [ + "Der opstod en fejl, prøv igen." + ], "This field exceeds the maximum of ${ maximumLength } characters.": [ "Dette felt overskrider det maksimale antal tegn på ${ maximumLength }." ], @@ -7406,6 +7926,9 @@ "Ask your administrator to enable Account monitor.": [ "Bed din administrator aktivere konto-monitorering." ], + "Enable account monitor to start loading event.": [ + "Aktivér kontimonitorering for at indlæse denne event." + ], "Error: ${ errorMessage }": [ "Fejl: ${ errorMessage }" ], @@ -7914,27 +8437,60 @@ ] }, "Feature": { + "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME } desktop app": [ + "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME } skrivebordsapp" + ], "${ MaxVPN } VPN connection": [ "${ MaxVPN } VPN-forbindelse", "${ MaxVPN } VPN-forbindelser" ], - "Access to all countries": [ - "Adgang til alle lande" + "${ PROTON_SENTINEL_NAME } account protection": [ + "${ PROTON_SENTINEL_NAME }-kontobeskyttelse" ], - "Add": [ - "Tilføj" + "10+ premium features": [ + "10+ premium-funktioner" ], - "Add (${ totalAddedCount })": [ - "Tilføj (${ totalAddedCount })", - "Tilføj (${ totalAddedCount })" + "15 GB storage": [ + "15 GB lagerplads" ], - "Connection for up to ${ plusVpnConnections } device": [ + "3 email domains": [ + "3 e-maildomæner" + ], + "3 folders, labels and filters": [ + "3 mapper, etiketter og filtre" + ], + "500 GB storage": [ + "500 GB lagerplads" + ], + "500 MB Mail storage": [ + "500 MB lagerplads til Mail" + ], + "500 MB storage": [ + "500 MB lagerplads" + ], + "Access to all countries": [ + "Adgang til alle lande" + ], + "Add": [ + "Tilføj" + ], + "Add (${ totalAddedCount })": [ + "Tilføj (${ totalAddedCount })", + "Tilføj (${ totalAddedCount })" + ], + "Connection for up to ${ plusVpnConnections } device": [ "Forbindelse af op til ${ plusVpnConnections } enhed", "Forbindelse af op til ${ plusVpnConnections } enheder" ], "Continue": [ "Fortsæt" ], + "Custom email domain": [ + "Brugerdefineret e-maildomæne" + ], + "Email addresses": [ + "E-mailadresser" + ], "Encrypted cloud storage for files, photos and documents": [ "Krypteret sky-lagring til filer, billeder og dokumenter" ], @@ -7944,20 +8500,41 @@ "More premium features": [ "Flere premium-funktioner" ], + "Premium features in Mail, Calendar, Drive, Pass and VPN": [ + "Premium-funktioner i Mail, Calendar, Drive, Pass og VPN" + ], + "Priority support": [ + "Prioriteret support" + ], "Remove": [ "Fjern" ], + "Schedule and snooze emails": [ + "Planlæg og udsæt e-mails" + ], "Secure Core servers": [ "Secure Core servere" ], "Secure streaming support": [ "Understøttelse af sikker streaming" ], + "Short domain @pm.me": [ + "Kort domæne @pm.me" + ], + "Storage": [ + "Lagerplads" + ], "Torrenting support (P2P)": [ "Understøttelse af torrenting (P2P)" ], + "Unlimited folders, labels and filters": [ + "Ubegrænsede mapper, etiketter og filtre" + ], "Unlimited hide-my-email aliases": [ "Ubegrænsede hide-my-email-aliasser" + ], + "Use your own email domain": [ + "Brug dit eget e-mail-domæne" ] }, "Features": { @@ -8312,8 +8889,11 @@ ] }, "Force upgrade safety review": { - "I understand that I will no longer be able to sign in to older versions of ${ BRAND_NAME } mobile apps.": [ - "Jeg forstår, at jeg ikke længere vil kunne logge ind fra ældre versioner af ${ BRAND_NAME }-mobilapps." + "I understand that I will no longer be able to sign in to older versions of ${ BRAND_NAME } apps.": [ + "Jeg forstår, at jeg ikke længere vil kunne logge ind fra ældre versioner af ${ BRAND_NAME }-apps." + ], + "Learn more": [ + "Få mere at vide" ] }, "Form heading": { @@ -8414,6 +8994,9 @@ ], "Group address:": [ "Gruppeadresse:" + ], + "Roles and permission:": [ + "Roller og tilladelser:" ] }, "Group member count": { @@ -8473,6 +9056,14 @@ "Gruppemedlemskab" ] }, + "group_modal": { + "General": [ + "Generelt" + ], + "Roles and permissions": [ + "Roller og tilladelser" + ] + }, "Header": { "Access": [ "Adgang" @@ -9113,6 +9704,15 @@ "${ boldWarning } You will lose access to all current encrypted data in your account if you continue.": [ "${ boldWarning } Du mister adgangen til alle nuværende krypterede data på din konto, hvis du fortsætter." ], + "${ BRAND_NAME } Business plans gives your team all the collaboration tools they need to be productive and organized in their work, while safeguarding your business.": [ + "${ BRAND_NAME } Business abonnementer giver dit team alle værktøjerne til at samarbejde produktivt og på en organiseret måde, samtidig med at holde din virksomhed sikker." + ], + "${ BRAND_NAME } Free": [ + "${ BRAND_NAME } Free" + ], + "${ BRAND_NAME } is independently funded and operates without advertising. Below are examples of how this independence has been used in practice.": [ + "${ BRAND_NAME } er uafhængigt finansieret og drives uden nogen markedsføring. Nedenfor er nogle eksempler på hvordan denne uafhængighed er blevet brugt i praksis." + ], "${ BRAND_NAME } is privacy you can trust, ensured by strong encryption, open-source code, and Swiss privacy laws. We believe nobody should be able to exploit your data, period. Our technology and business are based upon this fundamentally stronger definition of privacy.": [ "${ BRAND_NAME } er privatlivsbeskyttelse du kan stole på, sikret af stærk kryptering, open-source kildekode og schweiziske love om privatlivsbeskyttelse. Vi mener ikke, at nogen skal kunne udnytte dine data, punktum. Vores teknologi og virksomhed er baseret på denne fundamentalt stærkere definition af privatlivsbeskyttelse." ], @@ -9125,6 +9725,9 @@ "${ BRAND_NAME } will send a verification code to ${ phoneNumber }. Standard message rates may apply.": [ "${ BRAND_NAME } sender en bekræftelseskode til ${ phoneNumber }. Standard SMS-takster gælder." ], + "${ BRAND_NAME } will send a verification code to your recovery phone. Standard message rates may apply.": [ + "${ BRAND_NAME } sender en bekræftelseskode til din telefon til gendannelse. Standard SMS-takster gælder." + ], "${ BRAND_NAME }'s encryption technology means that nobody can access your password - not even us.": [ "${ BRAND_NAME }s krypteringsteknologi betyder, at ingen kan få adgang til din adgangskode - ikke engang os." ], @@ -9213,6 +9816,9 @@ "${ name } for Windows": [ "${ name } til Windows" ], + "${ name } is not available": [ + "${ name } er ikke tilgængelig" + ], "${ none }: do not quarantine or reject unauthorized emails. Usually, people only use this policy to troubleshoot or test.": [ "${ none }: sæt hverken uautoriserede e-mails i karantæne eller afvis dem. Normalt bruger folk kun denne politik til fejlfinding eller test." ], @@ -9334,6 +9940,9 @@ "${ vaultLink } updated": [ "${ vaultLink } opdateret" ], + "${ VPN_SHORT_APP_NAME } hides your traffic. ${ PASS_SHORT_APP_NAME } hides your identity\n— unlimited **hide-my-email aliases** and **dark-web alerts** if your data is ever leaked.": [ + "${ VPN_SHORT_APP_NAME } skjuler din internettrafik. ${ PASS_SHORT_APP_NAME } skjuler din identitet – ubegrænsede **hide-my-email-aliasser** og **mørk-net advarsler** hvis dine data lækkes." + ], "${ vpnPlus } required for Country level connection.": [ "${ vpnPlus } påkrævet for forbindelse på landeniveau." ], @@ -9371,6 +9980,9 @@ "(formerly Twitter)": [ "(tidligere Twitter)" ], + "**${ appName }** is not available for your account.": [ + "**${ appName }** er ikke tilgængelig for din konto." + ], "**${ appName }** is not supported in your organization **${ organizationName }**.": [ "**${ appName }** understøttes ikke i din organisation **${ organizationName }**" ], @@ -9413,9 +10025,15 @@ "**This will disable end-to-end encrypted email forwardings:** you can set them up again later.": [ "**Dette vil deaktivere end-to-end krypterede e-mail-videresendelser:** Du kan sætte dem op igen senere." ], + "**Your recovery email alone doesn't allow you to recover your encrypted data** after you reset your password.": [ + "**Din e-mail til gendannelse alene giver dig ikke adgang til at gendanne dine krypterede data** efter du har nulstillet din adgangskode." + ], "**Your recovery methods will be invalidated:** you can generate new recovery data later.": [ "**Dine gendannelsesmetoder vil blive ugyldiggjort:** Du kan generere nye gendannelsesdata senere." ], + "**Your recovery phone alone doesn’t allow you to recover your encrypted data** after you reset your password.": [ + "**Din gendannelsestelefon giver dig ikke adgang til at gendanne dine krypterede data** efter du har nulstillet din adgangskode." + ], "+ ${ invisibleCount } More": [ "+${ invisibleCount } mere", "+${ invisibleCount } mere" @@ -9481,15 +10099,27 @@ "Activity Monitor": [ "Aktivitetsovervågning" ], + "Add ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }": [ + "Tilføj ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }" + ], "Add ${ PLAN_NAMES[PLANS.MEET_BUSINESS] }": [ "Tilføj ${ PLAN_NAMES[PLANS.MEET_BUSINESS] }" ], + "Add 1 to 5 people who you trust and can contact easily. They will be able to reset your password for you by signing in to your account. They must already have a ${ BRAND_NAME } Account.": [ + "Tilføj 1 til 5 personer som du stoler på og kan kontakte nemt. De vil kunne nulstille din adgangskode for dig ved at logge ind på din konto. De skal allerede have en ${ BRAND_NAME }-konto." + ], "Add a @pm.me email address to your account. This simple, shorter domain stands for \"${ MAIL_APP_NAME } me\" or \"Private Message me.\"": [ "Tilføj en @pm.me e-mailadresse til din konto. Dette enkle, kortere domæne står for \"${ MAIL_APP_NAME } me\" eller \"Private Message me\"." ], + "Add a phone number in case we need to contact you": [ + "Tilføj et telefonnummer i tilfælde af at vi får brug for at kontakte dig" + ], "add a recovery method": [ "tilføj en gendannelsesmetode" ], + "Add an email address in case we need to contact you": [ + "Tilføj en e-mailadresse i tilfælde af at vi får brug for at kontakte dig" + ], "Add another layer of security to your account. You’ll need to verify yourself with 2FA every time you sign in.": [ "Tilføj endnu et lag sikkerhed til din konto. Du skal bekræfte dig selv med 2FA hver gang du logger på." ], @@ -9518,9 +10148,9 @@ "Add your name and logo to create a more personalized experience for your organization.": [ "Tilføj dit navn og logo for at gøre oplevelsen mere personlig for din organisation." ], - "Adding ${ addedServerCount } gateway server": [ - "Tilføjer ${ addedServerCount } gateway-server", - "Tilføjer ${ addedServerCount } gateway-servere" + "Adding ${ total } gateway server": [ + "Tilføjer ${ total } gateway-server", + "Tilføjer ${ total } gateway-servere" ], "Adding an external email address will disable end-to-end encryption for all email communication within that group. Do you want to proceed?": [ "Tilføjelse af en ekstern e-mailadresse vil deaktivere end-to-end-kryptering for al e-mail-kommunikation inden for den pågældende gruppe. Vil du fortsætte?" @@ -9590,6 +10220,12 @@ "Allow users to connect to secure shared servers from the **Countries** section of the ${ VPN_APP_NAME } app.": [ "Tillad brugere at forbinde til sikre delte servere fra sektionen **Lande** i ${ VPN_APP_NAME }-appen." ], + "Allowing QR code sign-in will let you sign in by scanning a QR code if you forget your password. All you need is to be signed in to a ${ BRAND_NAME } service on another device.": [ + "Ved at tillade log ind med QR-kode vil du kunne logge ind ved at skanne en QR-kode hvis du glemmer din adgangskode. Alt du har brug for er at være logget ind på en ${ BRAND_NAME }-tjeneste på en anden enhed." + ], + "Allowing the password reset from the settings lets you to change your password if you’ve lost it, but are still signed in to ${ BRAND_NAME }.": [ + "Ved at tillade nulstilling af adgangskoden fra indstillinger kan du ændre din adgangskode, hvis du har mistet den, men stadig er logget ind på ${ BRAND_NAME }." + ], "Already allocated": [ "Allerede tildelt" ], @@ -9695,6 +10331,9 @@ "Are you sure you want to revoke certificate **${ name }**": [ "Er du sikker på, at du vil tilbagekalde certifikatet **${ name }**" ], + "Are you sure you want to sign out of this account?": [ + "Er du sikker på, at du vil logge ud af denne konto?" + ], "Are you sure you want to sort your folders alphabetically?": [ "Er du sikker på, at du vil sortere dine mapper alfabetisk?" ], @@ -9791,9 +10430,18 @@ "Before you can start sending and receiving emails from your new addresses you need to create encryption keys for them.": [ "Inden du kan begynde at sende og modtage e-mails fra dine nye adresser, skal du oprette krypteringsnøgler til dem." ], + "BEST FOR TV": [ + "BEDST TIL TV" + ], "Beta": [ "Beta" ], + "Billed at ${ monthlyDiscountedPrice } for the first 6 months, renews at ${ monthlyRenewalPrice }.": [ + "Faktureret med ${ monthlyDiscountedPrice } i de første 6 måneder, og fornyes til ${ monthlyRenewalPrice }." + ], + "Billed at ${ yearlyDiscountedPrice } for the first 12 months, renews at ${ yearlyRenewalPrice }.": [ + "Faktureret med ${ yearlyDiscountedPrice } i de første 12 måneder, og fornyes til ${ yearlyRenewalPrice }." + ], "Billing cycle: ${ text }": [ "Faktureringsperiode: ${ text }" ], @@ -9803,6 +10451,9 @@ "Boost your organization’s brand identity and create a more consistent online experience for your users.": [ "Styrk din organisations varemærkeidentitet, og skab en mere ensartet onlineoplevelse for dine brugere." ], + "By adding people you trust as recovery contacts, we'll be able to send them an email to help you if you're having trouble recovering your data after a password reset. You can also be a recovery contact for others.": [ + "Ved at tilføje personer du stoler på som gendannelseskontakter, kan vi sende dem en e-mail for at hjælpe dig, hvis du har problemer med at gendanne dine data efter en nulstilling af adgangskoden. Du kan også være en gendannelseskontakt for andre." + ], "By creating a ${ PASS_APP_NAME } account with your SimpleLogin email, you can manage your aliases directly from ${ PASS_APP_NAME }.": [ "Ved at oprette en ${ PASS_APP_NAME }-konto med din SimpleLogin e-mail, kan du administrere dine aliasser direkte fra ${ PASS_APP_NAME }." ], @@ -9845,9 +10496,6 @@ "Change your password": [ "Skift din adgangskode" ], - "Check the status of imports and forwarding.": [ - "Kontrollér status for import og videresendelse." - ], "Check your network and try again.": [ "Kontrollér din netværksforbindelse og prøv igen." ], @@ -9881,6 +10529,9 @@ "CNET editors choice award with a rating of 8.4 out of 10": [ "CNET editors choice award med en bedømmelse på 8,4 ud af 10" ], + "Code has been re-sent.": [ + "Koden er sendt igen." + ], "Coming soon": [ "Kommer snart" ], @@ -9896,6 +10547,9 @@ "Configure SAML authentication for your organization through an identity provider like Okta, Microsoft Azure, or Google Identity Platform. This will enable SAML for the whole organization.": [ "Konfigurer SAML-godkendelse for din organisation via en identitetsudbyder som Okta, Microsoft Azure eller Google identitet platform. Dette vil aktivere SAML for hele organisationen." ], + "Connect and manage your external mailboxes in ${ MAIL_APP_NAME }.": [ + "Forbind og administrer dine eksterne e-mails i ${ MAIL_APP_NAME }." + ], "Connection data will be available in around 1 hour.": [ "Forbindelsesdata vil være tilgængelige inden for cirka 1 time." ], @@ -9914,6 +10568,9 @@ "Continue to connect this entity with your ${ BRAND_NAME } organization.": [ "Forbind stadig denne enhed med din ${ BRAND_NAME } organisation." ], + "Continue with ${ BRAND_NAME } Free": [ + "Fortsæt med ${ BRAND_NAME } Free" + ], "Continuing will connect your ${ BRAND_NAME } Account to ${ name }.": [ "At fortsætte vil forbinde din ${ BRAND_NAME }-konto til ${ name }." ], @@ -9954,9 +10611,9 @@ "Create a new code on your TV and try again.": [ "Opret en ny kode på dit tv, og prøv igen." ], - "Create a secure cloud for ${ value } member": [ - "Opret en sikker sky til ${ value } medlem", - "Opret en sikker sky til ${ value } medlemmer" + "Create a secure cloud for ${ memberCount } member": [ + "Opret en sikker sky til ${ memberCount } medlem", + "Opret en sikker sky til ${ memberCount } medlemmer" ], "Create an account": [ "Opret en konto" @@ -9974,6 +10631,10 @@ "Opretter gateway-server: ${ serverNumber } / ${ total }", "Opretter gateway-servere: ${ serverNumber } / ${ total }" ], + "Creating gateway with ${ total } server": [ + "Opretter gateway med ${ total } server", + "Opretter gateway med ${ total } servere" + ], "Creating your account": [ "Opretter din konto" ], @@ -10022,6 +10683,9 @@ "Data recoverable with recovery phrase": [ "Data kan gendannes med gendannelsessætning" ], + "Data recovery requires a password reset option (email or SMS)": [ + "Datagendannelse kræver en metode til at nulstille adgangskoden (e-mail eller SMS)" + ], "dedicated servers": [ "dedikerede servere" ], @@ -10068,6 +10732,9 @@ "Disabling authenticator app 2FA will make your account less secure. Only proceed if absolutely necessary.": [ "Deaktivering af totrins-godkendelsesappen 2FA gør din konto mindre sikker. Gør kun dette hvis det er absolut nødvendigt." ], + "Disabling the data backup on this device will prevent you from automatically unlocking your encrypted data after a password reset.": [ + "Ved at deaktivere sikkerhedskopiering af data på denne enhed, mister du muligheden for automatisk at låse op for din krypterede data efter du har nulstillet adgangskoden." + ], "Discount": [ "Rabat" ], @@ -10228,6 +10895,9 @@ "Enabling recovery by phrase again will generate a new recovery phrase.": [ "Hvis du aktiverer gendannelse ved hjælp af en sætning igen, genereres der en ny gendannelsessætning." ], + "Enabling the data backup on this device will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset, simply by signing in on this device.": [ + "Ved at aktivere sikkerhedskopiering på denne enhed vil du kunne gendanne adgangen til e-mails, kontakter, filer, adgangskoder, og andet krypteret data på din konto efter adgangskoden er blevet nulstillet, bare ved at logge ind." + ], "Encryption setting updated": [ "Krypteringsindstillinger opdateret" ], @@ -10399,12 +11069,12 @@ "For easy access to your passwords and more.": [ "For nem adgang til dine adgangskoder og mere." ], + "For just ${ bundlePlanPriceInline }": [ + "For kun ${ bundlePlanPriceInline }" + ], "For users who are switching to ${ MAIL_APP_NAME } from another email service, select the ${ boldAddresses } tab and add all active email addresses before changing the MX record to ensure a smooth transition.": [ "For brugere, som skifter til ${ MAIL_APP_NAME } fra en anden e-mailtjeneste, skal du vælge fanen ${ boldAddresses } og tilføje alle aktive e-mailadresser, før du ændrer MX-posten for at sikre en problemfri overgang." ], - "Forwarding automatically sends new incoming emails to your Inbox.": [ - "Videresendelse sender automatisk nye indgående e-mails til din Indbakke." - ], "Free forever": [ "Gratis for evigt" ], @@ -10432,6 +11102,9 @@ "Gateways": [ "Gateways" ], + "Generating a new recovery phrase will deactivate your current recovery phrase.": [ + "Hvis du opretter en ny gendannelsessætning, deaktiveres din gamle gendannelsessætning." + ], "Generating a new recovery phrase will deactivate your old one.": [ "Oprettelse af en ny gendannelsessætning vil deaktivere din gamle." ], @@ -10453,12 +11126,18 @@ "Get notified if your password or other personal data was leaked. ${ learnMoreLinkNoBreach }": [ "Få besked, hvis din adgangskode eller øvrige personlige data er blevet lækket. ${ learnMoreLinkNoBreach }" ], + "Get started": [ + "Kom i gang" + ], "Get started with the referral link above.": [ "Kom i gang med henvisningslinket ovenfor." ], "Get visibility into account access": [ "Få indsigt i kontoadgang" ], + "Get VPN Plus": [ + "Få VPN Plus" + ], "Give the token a descriptive name, such as the service you plan to use it with, and select one of your active custom domain addresses. Only this address will be able to send emails with this token.": [ "Giv tokenet et beskrivende navn, såsom den tjeneste, du planlægger at bruge det til, og vælg en af dine aktive brugerdomæneadresser. Kun denne adresse vil kunne sende e-mails med dette token." ], @@ -10516,6 +11195,12 @@ "If another administrator changed this password, you will need to ask them for the new Organization Password.": [ "Hvis en anden administrator ændrede denne adgangskode, må du bede dem om den nye Organisationsadgangskode." ], + "If disabled, ${ BRAND_NAME } will still use your recovery email to send security notifications.": [ + "${ BRAND_NAME } bruger stadig din e-mail til gendannelse til at sende sikkerhedsnotifikationer, hvis slået fra." + ], + "If disabled, ${ BRAND_NAME } will still use your recovery phone to send security notifications.": [ + "${ BRAND_NAME } bruger stadig din gendannelsestelefon til at sende sikkerhedsnotifikationer, hvis slået fra." + ], "If disabled, only administrators will be able to export data.": [ "Hvis deaktiveret, kan administratorer kun eksportere data." ], @@ -10594,6 +11279,9 @@ "If you purchased a gift code or received one from our support team, you can enter it here.": [ "Hvis du har købt en gavekode eller modtaget en fra vores supportteam, kan du indtaste den her." ], + "If you recently reset your password, you can ${ recoveryMethodLink } to unlock your data. If this is due to an old password reset, you can stop the message from showing again.": [ + "Hvis du for nylig nulstillede din adgangskode kan du ${ recoveryMethodLink } for at låse op for dine data. Hvis dette er på grund af en gammel nulstilling af adgangskoden kan du stoppe beskeden fra at vises igen." + ], "If you recently reset your password, you can use a data recovery method to unlock your data": [ "Hvis du for nylig har nulstillet din adgangskode, kan du bruge en datagendannelsesmetode til at låse dine data op" ], @@ -10656,6 +11344,9 @@ "Include device, location, and IP details": [ "Inkludér detaljer om enhed, placering og IP-adresse." ], + "Included": [ + "Inkluderet" + ], "Increase your account security by verifying your email address.": [ "Forøg din kontosikkerhed, ved at verificere din e-mailadresse" ], @@ -10789,6 +11480,12 @@ "Item updated in vault": [ "Element opdateret i boks" ], + "It’s often the easiest way to recover your account if you’re signed in.": [ + "Det er ofte den letteste måde at gendanne din konto hvis du er logget ind." + ], + "It’s the only way to instantly recover everything, so make sure you keep it somewhere safe but accessible.": [ + "Det er en eneste måde at gendanne alting med det samme, så opbevar den sikkert men stadig tilgængeligt." + ], "JCB logo": [ "JCB logo" ], @@ -10996,15 +11693,15 @@ "No card required": [ "Intet kort krævet" ], + "No connected addresses.": [ + "Ingen forbundne adresser." + ], "No countries enabled": [ "Ingen lande aktiveret" ], "No folder selected": [ "Ingen mappe valgt" ], - "No forwarding history.": [ - "Ingen videresendelseshistorik." - ], "No gateways": [ "Ingen gateways" ], @@ -11068,6 +11765,9 @@ "Only change these settings if you are using PGP with non-${ BRAND_NAME } recipients.": [ "Ændr kun disse indstillinger, hvis du bruger PGP med modtagere der ikke bruger ${ BRAND_NAME }." ], + "Only sign in on devices you trust": [ + "Log kun ind på enheder du stoler på" + ], "Only you can see the label": [ "Det er kun dig, der kan se etiketten" ], @@ -11333,9 +12033,18 @@ "Recently used servers:": [ "Nyligt anvendte servere:" ], + "RECOMMENDED": [ + "FORSLÅET" + ], "Recommended on trusted devices. ${ keepMeSignedInLearnMoreLink }": [ "Anbefales på betroede enheder. ${ keepMeSignedInLearnMoreLink }" ], + "Recovery by email is not available while ${ PROTON_SENTINEL_NAME } is enabled.": [ + "Gendannelse via e-mail er ikke tilgængeligt mens ${ PROTON_SENTINEL_NAME } er aktiveret." + ], + "Recovery by phone is not available while ${ PROTON_SENTINEL_NAME } is enabled.": [ + "Gendannelse via telefon er ikke tilgængeligt mens ${ PROTON_SENTINEL_NAME } er aktiveret." + ], "Recovery file downloaded": [ "Gendannelsesfil downloadet" ], @@ -11489,6 +12198,9 @@ "Set up your organization": [ "Konfigurer din organisation" ], + "Set up your organization and start protecting your data in a few easy steps.": [ + "Konfigurer din organisation, og begynd at beskytte dine data med få enkle trin." + ], "Setting successfully saved": [ "Indstillingen er gemt" ], @@ -11526,6 +12238,12 @@ "Show each sender's image in the message list. The sender's initials will be shown if a photo is not available.": [ "Viser hver afsenders billede i beskedlisten. Afsenderens initialer vises, hvis der ikke er et billede til rådighed." ], + "Show fewer benefits": [ + "Vis færre fordele" + ], + "Show more benefits": [ + "Vis flere fordele" + ], "Show original message": [ "Vis oprindelig besked" ], @@ -11571,9 +12289,6 @@ "Something went wrong. Please try again or contact customer support.": [ "Noget gik galt. Prøv igen eller kontakt kundesupport." ], - "Something went wrong. Please try again.": [ - "Der gik noget galt. Prøv igen." - ], "Specify the domain which is allowed to authenticate with SAML SSO.": [ "Angiv det domæne, der har tilladelse til at autentificere med SAML SSO." ], @@ -11663,6 +12378,9 @@ "TechRadar Pro recommended with a rating of 4.2 out of 5 stars": [ "TechRadar Pro anbefalet - bedømt til 4,2 ud af 5 stjerner" ], + "Temporarily unavailable due to high demand. Please try again later.": [ + "Midlertidigt utilgængelig på grund af høj efterspørgsel. Prøv igen senere." + ], "Temporarily unavailable. Please check back later.": [ "Midlertidigt utilgængelig. Tjek igen senere." ], @@ -11795,6 +12513,9 @@ "This could take some time. Please do not close this page or disconnect from the internet.": [ "Dette kan tage noget tid. Luk ikke denne side, og afbryd ikke forbindelsen til internettet." ], + "This data recovery method requires a password reset option (email or SMS)": [ + "Denne datagendannelsesmetode kræver en metode til at nulstille adgangskoden (e-mail eller SMS)" + ], "This feature delays sending your emails, giving you the opportunity to undo send during the selected time frame.": [ "Denne funktion forsinker afsendelsen af dine e-mails med mulighed for at fortryde afsendelsen inden for den valgte tidsramme." ], @@ -11855,6 +12576,9 @@ "This verification can take up to one hour. After successful verification, do not remove the TXT record as it is needed to confirm that you continue to own the domain.": [ "Denne bekræftelse kan tage op til en time. Efter en vellykket bekræftelse må du ikke fjerne TXT-posten, da den skal bruges til at bekræfte, at du fortsat ejer domænet." ], + "This will allow the TV to access your ${ BRAND_NAME } account.": [ + "Dette giver TV'et tilladelse til at tilgå din ${ BRAND_NAME }-konto." + ], "This will delete all previous versions of your files older than ${ rententionLabel }.": [ "Dette vil slette alle tidligere versioner af dine filer, som er ældre end ${ rententionLabel }." ], @@ -11876,6 +12600,9 @@ "This will enable PayPal to be used to pay for your ${ BRAND_NAME } subscription. We will redirect you to PayPal in a new browser tab. If you use any pop-up blockers, please disable them to continue.": [ "Dette gør det muligt at benytte PayPal til betaling af dit ${ BRAND_NAME }-abonnement. Du omdirigeres til PayPal i en ny browserfane. Benytter du pop-up blockers, bedes du deaktivere disse for at fortsætte." ], + "This will let you quickly and safely access your ${ BRAND_NAME } Account so you can change you password.": [ + "Dette giver dig mulighed for hurtigt og sikkert at tilgå din ${ BRAND_NAME }-konto, så du kan ændre din adgangskode." + ], "This will permanently delete the data and all email addresses associated with these users.": [ "Dette vil permanent slette data og alle e-mailadresser tilknyttet disse brugere." ], @@ -11948,15 +12675,21 @@ "To decrypt and view your locked data after a password reset, select a recovery method.": [ "Vælg en gendannelsesmetode for at dekryptere eller se dine låste data efter en adgangskodenulstilling." ], + "To enable post-quantum protection, you’ll need to finish generating your new post-quantum encryption keys.": [ + "For at aktivere post-kvantebeskyttelse skal du afslutte genereringen af dine nye post-kvante krypteringsnøgler." + ], + "To ensure the highest possible security of your account, disable **Recovery by recovery email**.": [ + "Opnå størst mulig sikkerhed på din konto ved at slå **Gendannelse via e-mail** fra." + ], + "To ensure the highest possible security of your account, disable **Recovery by recovery phone**.": [ + "Opnå størst mulig sikkerhed på din konto ved at slå **Gendannelse via telefon** fra." + ], "To ensure you don’t lose important data, ${ DRIVE_APP_NAME } saves older versions of your files as you and your collaborators make changes. Select how long ${ BRAND_NAME } should keep previous versions.": [ "For at sikre at du ikke mister vigtig data, gemmer ${ DRIVE_APP_NAME } ældre versioner af dine filer, når du og dine samarbejdspartnere foretager ændringer. Vælg, hvor længe ${ BRAND_NAME } skal gemme tidligere versioner." ], "To fight spam and abuse, please verify you are human.": [ "For at bekæmpe spam og misbrug bedes du bekræfte, at du er et menneske." ], - "To help keep your account safe, we want to make sure it's really you trying to sign in.": [ - "For at holde din konto sikker skal vi sikre os at det faktisk er dig der prøver at logge ind." - ], "To help keep your account safe, we want to make sure it’s really you trying to sign in.": [ "For at holde din konto sikker skal vi sikre os at det faktisk er dig der prøver at logge ind." ], @@ -12050,6 +12783,9 @@ "Unless you sign out of your account or change your password, your session will remain active. Sessions expire after 60 days of inactivity.": [ "Medmindre du logger ud eller ændrer din adgangskode, forbliver din session aktiv. Sessioner udløber efter 60 dages inaktivitet." ], + "Unlock streaming with VPN Plus.": [ + "Lås op for streaming med VPN Plus." + ], "Unsaved changes": [ "Ikke-gemte ændringer" ], @@ -12065,9 +12801,15 @@ "Unverified email address.": [ "Uverificeret e-mailadresse." ], + "Upgrade anytime to bring over the rest": [ + "Opgrader når som helst for at overføre resten" + ], "Upgrade now to get premium features, products and storage at a special price": [ "Opgrader nu for at få premium-funktioner, produkter og lagerplads til en speciel pris" ], + "Upgrade or clear space anytime to bring over the rest": [ + "Opgrader eller frigør lagerplads når som helst for at overføre resten" + ], "Upgrade to add a shorter @pm.me address to your account that is easier to share. It stands for “${ MAIL_APP_NAME } me” or “Private Message me”.": [ "Opgradér for at tilføje en kortere @pm.me adresse til din konto, som er nemmere at dele. Det står for \"${ MAIL_APP_NAME } me\" eller \"Private Message me\"." ], @@ -12075,7 +12817,7 @@ "Opgradér for at beholde dine ${ planTitle }-fordele." ], "Upgrade to unlock": [ - "Opgradér for at låse op" + "Opgrader for at låse op" ], "Upgrade to unlock the ${ monitorLink }.": [ "Opgrader for at låse op for ${ monitorLink }." @@ -12197,6 +12939,9 @@ "Visa Secure logo": [ "Visa Secure-logo" ], + "VPN Plus": [ + "VPN Plus" + ], "VPN with dedicated servers and IP addresses": [ "VPN med dedikerede servere og IP-adresser" ], @@ -12212,6 +12957,12 @@ "We advise you to use official ${ VPN_APP_NAME } applications when possible.": [ "Vi råder dig til at bruge officielle ${ VPN_APP_NAME }-applikationer, når det er muligt." ], + "We can use your recovery email to send you a verification code to reset your password, and to contact you if we notice suspicious activity.": [ + "Vi kan bruge din e-mail til gendannelse til at sende dig en bekræftelseskode for at nulstille din adgangskode, og kontakte dig hvis vi registrerer mistænkelig aktivitet." + ], + "We can use your recovery phone to send you a verification code to reset your password, and to contact you if we notice suspicious activity.": [ + "Vi kan bruge din telefon til gendannelse til at sende dig en bekræftelseskode for at nulstille din adgangskode, og kontakte dig hvis vi registrerer mistænkelig aktivitet." + ], "We couldn't complete the transaction. Please try again.": [ "Vi kunne ikke gennemføre transaktionen. Prøv igen." ], @@ -12257,6 +13008,9 @@ "We stored a backup file in this browser because you allowed data recovery on this ${ deviceLink }. If the backup file is valid, you will immediately regain complete or partial access to your encrypted data.": [ "Vi har lagret en sikkerhedskopifil i denne browser, fordi du tillod datagendannelse på denne ${ deviceLink }. Hvis sikkerhedskopifilen er gyldig, vil du omgående genvinde fuld eller delvis adgang til dine krypterede data." ], + "We strongly recommend that everyone enable recovery by recovery phrase.": [ + "Vi anbefaler kraftigt at alle aktiverer gendannelse med en gendannelsessætning." + ], "We use 3-D Secure to protect your payments": [ "Vi bruger 3-D Secure til at sikre dine betalinger" ], @@ -12306,7 +13060,7 @@ "Når deaktiveret, forhindrer dette eksterne billeder i at blive indlæst uden din viden." ], "When enabled, we will check if ${ MAIL_APP_NAME } is your default mail application and notify you if it is not.": [ - "Hvis aktiveret, vil vi tjekke, om ${ MAIL_APP_NAME } er din standard mailapplikation og give dig besked, hvis det ikke er tilfældet." + "Hvis aktiveret, tjekker vi at ${ MAIL_APP_NAME } er din standard mailapplikation, og giver dig besked, hvis det ikke er tilfældet." ], "When enabling SAML for ${ appName } in your identity provider, you might be prompted to use the callback (ACS) URL and issuer ID. Just copy-paste the data below into your identity provider fields.": [ "Ved aktivering af SAML for ${ appName } i din identitetsudbyder, kan du blive bedt om at bruge callback-URL'en (ACS) og udsteder-ID'et. Kopier og indsæt blot nedenstående data i din identitetsudbyders felter." @@ -12441,9 +13195,6 @@ "You can edit this once to ensure the correct email address for verification.": [ "Du kan redigere dette én gang for at sikre den korrekte e-mailadresse til bekræftelse." ], - "You can enable the Photos section from the interface using the toggle below.": [ - "Du kan aktivere billedsektionen fra grænsefladen ved hjælp af indstillingen nedenfor." - ], "You can enforce the password rules members of your organization will use when they create or reset the password to their ${ BRAND_NAME } Account.": [ "Du kan gennemtvinge de adgangskoderegler, som medlemmer af din organisation bruger, når de opretter eller nulstiller adgangskoden til deres ${ BRAND_NAME }- konto." ], @@ -12504,6 +13255,9 @@ "You don't have any referrals.": [ "De har ingen henvisninger." ], + "You don’t need to open or read the file—just download it and store it somewhere safe.": [ + "Du behøver ikke at åbne eller læse filen – bare download den og opbevar den sikkert." + ], "You get notified if your password or other data was leaked from a third-party service.": [ "Du får besked, hvis din adgangskode eller andre data er blevet lækket fra en tredjepartstjeneste." ], @@ -12643,6 +13397,9 @@ "Your ${ plan } subscription will be replaced with ${ PASS_SHORT_APP_NAME } Lifetime. The remaining balance of your subscription will be added to your account. ${ PASS_SHORT_APP_NAME } lifetime deal has no renewal price, it's a one-time payment for lifetime access to ${ PASS_SHORT_APP_NAME }.": [ "Dit ${ plan }-abonnement vil blive erstattet af ${ PASS_SHORT_APP_NAME } Lifetime. Den resterende del af dit abonnement vil blive tilføjet til din konto. ${ PASS_SHORT_APP_NAME } livstidsaftalen har ingen fornyelsespris, det er en engangsbetaling for livstidsadgang til ${ PASS_SHORT_APP_NAME }." ], + "Your ${ planDisplayName } plan doesn’t just keep your business data and communications safe. It supports your compliance objectives, makes your business stand out, and keeps your team connected.": [ + "Dit ${ planDisplayName }-abonnement beskytter ikke bare din virksomheds data og kommunikation. Den understøtter dine mål for compliance, får din virksomhed til at skille sig ud og holder dit team forbundet." + ], "Your ${ VPN_APP_NAME } and ${ MAIL_APP_NAME } accounts are linked. To delete them both, please sign in at ${ loginLink } and delete your account there.": [ "Dine ${ VPN_APP_NAME } og ${ MAIL_APP_NAME } konti er forbundet. Hvis du vil slette dem begge, skal du logge ind på ${ loginLink } og slette din konto der." ], @@ -12718,12 +13475,18 @@ "Your recent changes have been published. They will be visible to users in the next few hours.": [ "Dine seneste ændringer er blevet publiceret. De vil være synlige for brugerne i løbet af de næste par timer." ], + "Your recovery file will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset.": [ + "Din gendannelsesfil genopretter adgangen til e-mails, kontakter, filer, adgangskoder, og alt andet krypteret data på din konto efter adgangskoden er blevet nulstillet." + ], "Your recovery phrase": [ "Din gendannelsessætning" ], "Your recovery phrase is a series of 12 randomly generated words in a specific order.": [ "Din gendannelsessætning er en serie af 12 tilfældigt genererede ord i en bestemt rækkefølge." ], + "Your recovery phrase will allow you to sign in and recover your data if you get locked out of your ${ BRAND_NAME } Account. It is composed of 12 words and acts like a backup password.": [ + "Din gendannelsessætning giver dig mulighed for at logge ind og gendanne din ${ BRAND_NAME }-konto, hvis du bliver låst ude. Den består af 12 ord og fungerer som en backup-adgangskode." + ], "Your scheduled plan starts on ${ renewalTime } and will auto-renew every ${ cycle } month.": [ "Dit planlagte abonnement starter ${ renewalTime } og fornyes automatisk hver ${ cycle } måned.", "Dit planlagte abonnement starter ${ renewalTime } og fornyes automatisk hver ${ cycle } måned." @@ -13323,6 +14086,15 @@ "${ Brand } ending with ${ Last4 }": [ "${ Brand } slutter med ${ Last4 }" ], + "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME } Desktop app": [ + "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME } Skrivebordsapp" + ], + "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME } desktop app": [ + "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME } skrivebordsapp" + ], + "${ BRAND_NAME } for Business": [ + "${ BRAND_NAME } for Business" + ], "${ BRAND_NAME } username": [ "${ BRAND_NAME } brugernavn" ], @@ -13354,6 +14126,15 @@ "${ pricePerMonthWithCurrency } / month": [ "${ pricePerMonthWithCurrency } /måned" ], + "${ PROTON_SENTINEL_NAME } account protection": [ + "${ PROTON_SENTINEL_NAME }-kontobeskyttelse" + ], + "${ PROTON_SENTINEL_NAME } protection": [ + "${ PROTON_SENTINEL_NAME }-beskyttelse" + ], + "${ value.length }/${ maxLength } characters": [ + "${ value.length }/${ maxLength } tegn" + ], "(Temporarily unavailable. Please check back later.)": [ "(Midlertidigt utilgængelig. Tjek igen senere.)" ], @@ -13480,6 +14261,9 @@ "Allow notifications by email": [ "Tillad notifikationer via e-mail" ], + "Allow QR code sign-in": [ + "Tillad login med QR-kode" + ], "Allow random passwords": [ "Tillad tilfældige adgangskoder" ], @@ -13585,6 +14369,9 @@ "Automated confirmations and alerts": [ "Automatiske bekræftelser og advarsler" ], + "Automatic email forwarding": [ + "Automatisk videresendelse af e-mails" + ], "Automatically save contacts": [ "Gem automatisk kontakter" ], @@ -13624,9 +14411,15 @@ "Block malware, ads and trackers": [ "Blokér malware, reklamer og trackere" ], + "Block trackers and marketers": [ + "Blokér trackere og reklamer" + ], "Bookings, billings, and orders": [ "Bookinger, faktureringer og ordrer" ], + "Brand your workspace": [ + "Brand dit arbejdsområde" + ], "Browser": [ "Browser" ], @@ -13660,6 +14453,9 @@ "Cash": [ "Kontant" ], + "Catch-all email address": [ + "Catch-all e-mailadresse" + ], "Categories": [ "Kategorier" ], @@ -13732,6 +14528,9 @@ "Confirm login password": [ "Bekræft adgangskode til login" ], + "Confirm MX records added": [ + "Bekræft tilføjede MX-records" + ], "Confirm new password": [ "Bekræft ny adgangskode" ], @@ -13795,9 +14594,19 @@ "Current email": [ "Nuværende e-mailadresse" ], + "Custom domain": [ + "Brugerdomæne" + ], + "Custom email domain": [ + "Brugerdefineret e-maildomæne", + "Brugerdefinerede e-maildomæner" + ], "Daily email notifications": [ "Daglige e-mailnotifikationer" ], + "Data harvesting": [ + "Dataindsamling" + ], "Date": [ "Dato" ], @@ -13885,15 +14694,27 @@ "e.g. example.com": [ "f.eks. example.com" ], + "Early access": [ + "Tidlig adgang" + ], "Email": [ "E-mail" ], "Email address": [ "E-mail" ], + "Email addresses": [ + "E-mailadresser" + ], + "Email addresses per user": [ + "E-mailadresser per bruger" + ], "Email or username": [ "E-mail eller brugernavn" ], + "Email with @yourcompany.com domain": [ + "E-mail med @dinvirksomhed.com domæne" + ], "Emails (all messages)": [ "E-mails (alle beskeder)" ], @@ -13912,6 +14733,9 @@ "Enable ${ DARK_WEB_MONITORING_NAME } for ${ domain.DomainName }": [ "Aktivér ${ DARK_WEB_MONITORING_NAME } til ${ domain.DomainName }" ], + "Enable categories": [ + "Aktivér kategorier" + ], "Enabled": [ "Aktiveret" ], @@ -13927,6 +14751,9 @@ "End weekday": [ "Sidste ugedag" ], + "End-to-end encryption": [ + "End-to-end kryptering" + ], "Enter code": [ "Indtast kode" ], @@ -13984,6 +14811,9 @@ "Folder location": [ "Mappeplacering" ], + "Folders, labels, and filters": [ + "Mapper, etiketter og filtre" + ], "Font family": [ "Skrifttypefamilie" ], @@ -14002,6 +14832,9 @@ "Free": [ "Free" ], + "Free VPN included": [ + "Gratis VPN inkluderet" + ], "From: ${ fromEmail }": [ "Fra: ${ fromEmail }" ], @@ -14050,6 +14883,9 @@ "Highest VPN speed": [ "Højeste VPN-hastighed" ], + "Host name": [ + "Værtsnavn" + ], "I understand that I'll need to add this email address to the other account immediately, to avoid losing this address permanently.": [ "Jeg forstår, at jeg straks skal tilføje denne e-mailadresse til den anden konto for at undgå at miste denne adresse permanent." ], @@ -14167,6 +15003,9 @@ "Main reason for cancelling": [ "Hovedårsag til at annullere" ], + "Make sure you have access to a recovery email or phone, and have a data recovery option.": [ + "Vær sikker på at du har adgang til en e-mail eller telefon til gendannelse, og har indstillet en metode til datagendannelse." + ], "Manage categories": [ "Administrer kategorier" ], @@ -14218,6 +15057,9 @@ "Moderate NAT": [ "Moderat NAT" ], + "Monthly": [ + "Månedlig" + ], "More payment methods": [ "Flere betalingsmetoder" ], @@ -14236,6 +15078,9 @@ "Must have at least ${ MIN_PASSWORD_LENGTH } characters": [ "Skal være mindst ${ MIN_PASSWORD_LENGTH } tegn" ], + "MX records": [ + "MX-records" + ], "Name": [ "Navn" ], @@ -14266,6 +15111,9 @@ "Newsletters": [ "Nyhedsbreve" ], + "No": [ + "Nej" + ], "No (users cannot use the app until a vault is shared with them)": [ "Nej (brugere kan ikke bruge appen før en boks er delt med dem)" ], @@ -14299,12 +15147,18 @@ "Online privacy for your whole family": [ "Online privatliv for hele familien" ], + "Online productivity suite": [ + "Online produktivitets-suite" + ], "Only a single personal vault can be created": [ "Kun én personlig boks kan oprettes" ], "Only available on ${ PASS_SHORT_APP_NAME } paid plans": [ "Kun tilgængelig i ${ PASS_SHORT_APP_NAME } betalte abonnementer" ], + "Open-source code": [ + "Open-source-kode" + ], "OpenVPN password": [ "OpenVPN-adgangskode" ], @@ -14365,6 +15219,9 @@ "Pending": [ "Afventende" ], + "Personal and work emails, plus important updates and notifications": [ + "Personlige- og arbejds-e-mails, plus vigtige opdateringer og notifikationer" + ], "Phone number": [ "Telefonnummer" ], @@ -14398,12 +15255,21 @@ "Postal code": [ "Postnummer" ], + "Premium features included": [ + "Premium-funktioner inkluderet" + ], "Previous password": [ "Forrige adgangskode" ], "Primary": [ "Primær" ], + "Priority": [ + "Prioritet" + ], + "Priority support": [ + "Prioriteret support" + ], "Promotions": [ "Kampagner" ], @@ -14413,6 +15279,9 @@ "Proration": [ "Proration" ], + "Protected by Swiss privacy laws": [ + "Beskyttet af schweizisk lovgivning om privatlivsbeskyttelse" + ], "Protection mode": [ "Beskyttelsestilstand" ], @@ -14488,6 +15357,9 @@ "Secure password generator": [ "Generator til sikker adgangskode" ], + "See your team's availability": [ + "Se dit teams tilgængelighed" + ], "Select Linux package format": [ "Vælg Linux-pakkeformat" ], @@ -14521,6 +15393,9 @@ "Shared between ${ MAIL_SHORT_APP_NAME }, ${ CALENDAR_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME }, and ${ WALLET_SHORT_APP_NAME }.": [ "Delt mellem ${ MAIL_SHORT_APP_NAME }, ${ CALENDAR_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME } og ${ WALLET_SHORT_APP_NAME }." ], + "Short domain @pm.me": [ + "Kort domæne @pm.me" + ], "Show ${ n } administrator": [ "Vis ${ n } administrator", "Show ${ n } administratorer" @@ -14609,6 +15484,9 @@ "Storage": [ "Lagerplads" ], + "Storage per user": [ + "Lagerplads per bruger" + ], "Street address": [ "Adresse" ], @@ -14621,6 +15499,9 @@ "Subscription options": [ "Abonnementsmuligheder" ], + "Support for multiple users": [ + "Understøtter flere brugere" + ], "Swipe left action": [ "Stryg til venstre-handling" ], @@ -14639,6 +15520,9 @@ "Then": [ "Så" ], + "Third-party ads": [ + "Tredjepartsreklamer" + ], "Thomas": [ "Kim" ], @@ -14714,6 +15598,9 @@ "Use folder colors": [ "Brug mappefarver" ], + "Use your own email domain": [ + "Brug dit eget e-mail-domæne" + ], "User": [ "Bruger" ], @@ -14741,6 +15628,9 @@ "Verify keys with Key Transparency": [ "Bekræft nøgler med Key Transparency" ], + "Version history": [ + "Versionshistorik" + ], "Video conferencing with Zoom": [ "Videokonferencer med Zoom" ], @@ -14753,6 +15643,9 @@ "Vulnerable password": [ "Sårbar adgangskode" ], + "We securely stored recovery information on this device.": [ + "Vi har opbevaret din gendannelsesinformation sikkert på denne enhed." + ], "Weak": [ "Svag" ], @@ -14780,12 +15673,21 @@ "Without attachment": [ "Uden vedhæftning" ], + "Yearly": [ + "Årlig" + ], + "Yearly free storage bonus": [ + "Årlig gratis lagerbonus" + ], "Yes": [ "Ja" ], "Yes, I want to permanently delete this account and all its data.": [ "Ja, jeg ønsker at slette denne konto og alle dens data permanent." ], + "You don't have permissions": [ + "Du har ikke tilladelserne" + ], "Your activation code:": [ "Din aktiveringskode:" ], @@ -14807,9 +15709,18 @@ "Your plan": [ "Dit abonnement" ], + "Your recovery email": [ + "Din gendannelsesmail" + ], + "Your recovery phone number": [ + "Dit telefonnummer til gendannelse" + ], "Your voucher for your reserved ${ BRAND_NAME } email address:": [ "Din værdikupon til din reserverede ${ BRAND_NAME }-e-mailadresse:" ], + "Zero-access architecture": [ + "Nuladgangsarkitektur" + ], "ZIP code": [ "Postnummer" ] @@ -14826,6 +15737,9 @@ ], "Recovery phrase": [ "Gendannelsessætning" + ], + "Set recovery phone number": [ + "Angiv telefonnummer til gendannelse" ] }, "Label (begin date/advanced search)": { @@ -14867,6 +15781,26 @@ "Tilføj følgende TXT-post. Bemærk: Det kan tage flere timer at opdatere DNS-poster." ] }, + "Label for domain setup": { + "${ capitalizedGroup } record not found": [ + "${ capitalizedGroup }-record ikke fundet" + ], + "Host name": [ + "Værtsnavn" + ], + "Invalid ${ group.name } record found": [ + "Ugyldigt ${ group.name }-record fundet" + ], + "Type": [ + "Type" + ], + "Use default value": [ + "Brug standardværdi" + ], + "Valid ${ group.name } record found": [ + "Gyldigt ${ group.name }-record fundet" + ] + }, "Label for new member": { "Admin": [ "Admin" @@ -14984,6 +15918,9 @@ "${ BRAND_NAME } Foundation's": [ "${ BRAND_NAME } Foundations" ], + "Account recovery explained": [ + "Kontogendannelse forklaret" + ], "Activity log": [ "Aktivitetslog" ], @@ -15029,6 +15966,9 @@ "data recovery option": [ "metode til datagendannelse" ], + "Detailed instructions": [ + "Detaljerede instruktioner" + ], "Details": [ "Detaljer" ], @@ -15203,6 +16143,9 @@ "Upgrade your plan": [ "Opgradér abonnement" ], + "use a data recovery method": [ + "brug en metode til datagendannelse" + ], "Vault": [ "Boks" ], @@ -15550,21 +16493,45 @@ "Built-in chat": [ "Indbygget chat" ], + "Cloud storage and file sharing": [ + "Cloudlager og fildeling" + ], + "Data retention policies": [ + "Databevaringspolitikker" + ], + "Document and spreadsheet editor": [ + "Dokument- og regnearkseditor" + ], + "Email writing assistant": [ + "E-mail skriveassistent" + ], "End-to-end encrypted screen sharing and ephemeral in-call chat": [ "End-to-end-krypteret skærmdeling og midlertidig chat under opkald" ], "Hosts can record meetings locally on their computers": [ "Mødeværter kan optage møder lokalt på deres computere" ], + "Includes Meet Professional": [ + "Inkluderer Meet Professional" + ], "Meeting recording": [ "Møde-optagelse" ], "One active meeting at a time": [ "Ét aktivt møde ad gangen" ], + "Password manager with team vaults": [ + "Adgangskodeadministrator med team-bokse" + ], + "Private AI Chat (${ LUMO_SHORT_APP_NAME })": [ + "Privat AI-chat (${ LUMO_SHORT_APP_NAME })" + ], "Screen-sharing": [ "Deling af skærm" ], + "Secure mail and calendar": [ + "Sikker mail og kalender" + ], "Unlimited meetings per day": [ "Ubegrænset antal møder om dagen" ], @@ -15579,6 +16546,9 @@ "Video meetings, ${ n } participant": [ "Videomøder, ${ n } deltager", "Videomøde, ${ n } deltagere" + ], + "VPN with ad-blocker and malware protection": [ + "VPN med annonceblokering og beskyttelse mod malware" ] }, "meet_2025: Info": { @@ -16248,6 +17218,9 @@ "99.95% SLA": [ "99.95% SLA" ], + "Access all countries": [ + "Få adgang til alle lande" + ], "Activity logs and policy": [ "Aktivitetslog og politik" ], @@ -16269,6 +17242,9 @@ "Advanced network security": [ "Avanceret netværkssikkerhed" ], + "Advanced workspace security": [ + "Avanceret sikkerhed for arbejdsområdet" + ], "All ${ BRAND_NAME } products and features": [ "Alle ${ BRAND_NAME }-produkter og funktioner" ], @@ -16427,6 +17403,9 @@ "Multiple admin roles": [ "Flere administratorroller" ], + "No streaming support": [ + "Understøtter ikke streaming" + ], "No-logs policy": [ "Ingen logfiler-politik" ], @@ -16593,6 +17572,9 @@ "Unlimited volume/bandwidth": [ "Ubegrænset mængde/båndbredde" ], + "Unlock streaming": [ + "Lås op for streaming" + ], "Up to ${ n } user": [ "Op til ${ n } bruger", "Op til ${ n } brugere" @@ -17067,6 +18049,10 @@ ] }, "new_plans: Upsell attribute": { + "${ n } country": [ + "${ n } land", + "${ n } lande" + ], "Access advanced VPN features": [ "Få adgang til avancerede VPN-funktioner" ], @@ -17128,8 +18114,8 @@ "${ app } product updates": [ "${ app } produktopdateringer" ], - "${ BRAND_NAME } for Business newsletter": [ - "${ BRAND_NAME } for Business nyhedsbrev" + "${ BRAND_NAME } for Business communications": [ + "${ BRAND_NAME } til erhvervskommunikation" ], "${ BRAND_NAME } important announcements": [ "${ BRAND_NAME } vigtige meddelelser" @@ -17182,8 +18168,8 @@ "During your first month of using a ${ BRAND_NAME } product": [ "I løbet af din første måned med et ${ BRAND_NAME }-produkt" ], - "Email subscriptions": [ - "E-mailabonnementer" + "Email communications": [ + "E-mail-kommunikation" ], "In-app notifications": [ "Notifikationer i appen" @@ -17774,6 +18760,9 @@ "Plain text": [ "Almindelig tekst" ], + "Push notifications": [ + "Push-notifikationer" + ], "Receive from all": [ "Modtag fra alle" ], @@ -17992,6 +18981,11 @@ "PKGBUILD (til andre distributioner)" ] }, + "Paragraph": { + "${ BRAND_NAME } is independently funded and operates without advertising. Below are examples of how this independence has been used in practice.": [ + "${ BRAND_NAME } er uafhængigt finansieret og drives uden nogen markedsføring. Nedenfor er nogle eksempler på hvordan denne uafhængighed er blevet brugt i praksis." + ] + }, "Participant name": { "You": [ "Dig" @@ -18265,14 +19259,14 @@ "per month, billed every two years": [ "pr. måned, faktureres hvert andet år" ], - "Preparing your Recovery Kit": [ - "Forbereder dit gendannelsessæt" + "Preparing your recovery phrase": [ + "Forbereder din gendannelsessætning" ], "Protected by Swiss privacy laws": [ "Beskyttet af schweizisk lovgivning om privatlivsbeskyttelse" ], - "Save your recovery kit to continue": [ - "Gem dit gendannelseskit for at fortsætte" + "Save your recovery phrase to continue": [ + "Gem din gendannelsessætning for at fortsætte" ], "Secure vault sharing": [ "Sikker deling af boks" @@ -18992,6 +19986,9 @@ "Search for an email or IP address": [ "Søg efter en e-mail eller IP-adresse" ], + "Search for users or addresses": [ + "Søg efter brugere eller adresser" + ], "Search parent folder": [ "Søg i overordnet mappe" ], @@ -19141,18 +20138,18 @@ ] }, "PQC account key generation": { - "Couldn’t generate keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\n${ settingsLink } and select 'Generate key' for your account and for each address.": [ - "Nye nøgler kunne ikke genereres. For at aktivere post-kvante-beskyttelse skal du generere dine nye krypteringsnøgler manuelt.\n\n${ settingsLink } og vælg \"Generer nøgle\" for Deres konto og for hver adresse." + "Couldn’t generate keys. To activate post-quantum protection, you’ll need to finish generating your new post-quantum encryption keys.\n\n${ goToSettingsLink } and select 'Generate missing keys'.": [ + "Nøgler kunne ikke genereres. For at aktivere post-kvantebeskyttelse skal du afslutte genereringen af dine nye post-kvante krypteringsnøgler.\n\n${ goToSettingsLink } og vælg \"Generér manglende nøgler\"." ] }, "PQC adress key generation": { - "Couldn’t generate address keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\nGo to ${ settingsLink } and select 'Generate key' for each address.": [ - "Adressenøgler kunne ikke genereres. For at aktivere post-kvantum-beskyttelse skal du generere dine nye krypteringsnøgler manuelt.\n\nGå til ${ settingsLink } og vælg \"Generér nøgle\" for hver adresse." + "Couldn’t generate address keys. To activate post-quantum protection, you’ll need to finish generating your new post-quantum encryption keys for each address.\n\n${ goToSettingsLink } and select 'Generate missing keys'.": [ + "Adressenøgler kunne ikke genereres. For at aktivere post-kvantebeskyttelse skal du afslutte genereringen af dine nye post-kvante krypteringsnøgler for hver adresse.\n\n${ goToSettingsLink } og vælg \"Generér manglende nøgler\"." ] }, "PQC compatibility warning": { - "**You must update all ${ BRAND_NAME } mobile apps**: your new keys won't work on older app versions.": [ - "**Du skal opdatere alle ${ BRAND_NAME }-mobilapps**: Dine nye nøgler vil ikke fungere i ældre appversioner." + "**You must update all ${ BRAND_NAME } apps**: your new keys won't work on older app versions.": [ + "**Du skal opdatere alle ${ BRAND_NAME }-apps**: Dine nye nøgler vil ikke fungere i ældre appversioner." ] }, "PQC key generation": { @@ -19411,6 +20408,9 @@ "Verify now": [ "Bekræft nu" ], + "Verify now this recovery email address: ${ emailData.value }": [ + "Bekræft denne e-mailadresse til gendannelse nu: ${ emailData.value }" + ], "Verify recovery email?": [ "Bekræft e-mail til gendannelse?" ], @@ -19454,13 +20454,143 @@ "Verify recovery phone?": [ "Bekræft telefon til gendannelse?" ], + "Verify this recovery phone number now: ${ phoneData.value }": [ + "Bekræft dette telefonnummer til gendannelse nu: ${ phoneData.value }" + ], "Verifying your phone number increases your account security and allows additional options for recovery.": [ "Ved at Bekræfte dit telefonnummer øger du din kontos sikkerhed og giver flere muligheder for gendannelse." ] }, - "RecoveryPhrase: Action": { - "Continue": [ - "Forsæt" + "Recovery score": { + "${ score } / ${ maxScore } completed": [ + "${ score } / ${ maxScore } gennemført" + ], + "Account protection": [ + "Kontobeskyttelse" + ], + "Add more options for stronger protection": [ + "Tilføj flere muligheder for bedre beskyttelse" + ], + "Add more options to avoid getting locked out of your account.": [ + "Tilføj flere muligheder for at undgå at blive låst ude af din konto." + ], + "Awesome. Keep your options up-to-date for stronger protection.": [ + "Fantastisk. Hold dine muligheder opdateret løbende for stærkere beskyttelse." + ], + "Good start. Add more options for a stronger protection.": [ + "Det er en god start. Tilføj flere muligheder for bedre beskyttelse." + ], + "Great. Add more options for a stronger protection.": [ + "Super. Tilføj flere muligheder for bedre beskyttelse." + ], + "How you increased your account protection": [ + "Sådan forbedrede du din kontobeskyttelse" + ], + "Inactive recovery options": [ + "Inaktive gendannelsesindstillinger" + ], + "Maximum": [ + "Maksimum" + ], + "Partial": [ + "Delvis" + ], + "Recovery score: ${ score }": [ + "Gendannelses-score: ${ score }" + ], + "Require verified password reset option (email or SMS)": [ + "Kræv bekræftet metode til nulstilling af adgangskode (e-mail eller SMS)" + ], + "Score: ${ score } / ${ maxScore }": [ + "Score: ${ score } / ${ maxScore }" + ], + "Strong": [ + "Stærk" + ], + "Unprotected": [ + "Ubeskyttet" + ], + "Weak": [ + "Svag" + ] + }, + "Recovery score item": { + "Add emergency contacts": [ + "Tilføj nødkontakter" + ], + "Add recovery contacts": [ + "Tilføj gendannelseskontakter" + ], + "Add recovery email": [ + "Tilføj e-mail til gendannelse" + ], + "Add recovery phone": [ + "Tilføj gendannelsestelefon" + ], + "Allow data recovery on this device": [ + "Tillad gendannelse af data på denne enhed" + ], + "Allow password reset from settings": [ + "Tillad nulstilling af adgangskode fra indstillinger" + ], + "Allow scanning QR code to sign in": [ + "Tillad skanning af QR-kode for at logge ind" + ], + "Data recovery allowed on this device": [ + "Datagendannelse tilladt på denne enhed" + ], + "Download recovery file": [ + "Download gendannelsesfil" + ], + "Email recovery enabled": [ + "E-mailgendannelse aktiveret" + ], + "Emergency contacts added": [ + "Nødkontakter tilføjet" + ], + "Enable email recovery": [ + "Aktivér e-mailgendannelse" + ], + "Enable recovery by phone": [ + "Aktiver gendannelse via telefonnummer" + ], + "Password reset allowed from settings": [ + "Nulstilling af adgangskoden er tilladt fra indstillinger" + ], + "Password verified": [ + "Adgangskode bekræftet" + ], + "Phone recovery enabled": [ + "Telefongendannelse aktiveret" + ], + "Recovery contacts added": [ + "Gendannelseskontakter tilføjet" + ], + "Recovery file downloaded": [ + "Gendannelsesfil downloadet" + ], + "Recovery phrase saved": [ + "Gendannelsessætning gemt" + ], + "Save recovery phrase": [ + "Gem gendannelsessætning" + ], + "Sign-in with QR code allowed": [ + "Login med QR-kode er tilladt" + ], + "Verify password": [ + "Bekræft adgangskode" + ], + "Verify recovery email": [ + "Bekræft e-mail til gendannelse" + ], + "Verify recovery phone": [ + "Bekræft gendannelsestelefon" + ] + }, + "RecoveryPhrase: Action": { + "Continue": [ + "Forsæt" ], "Copy": [ "Kopiér" @@ -19470,6 +20600,9 @@ ] }, "RecoveryPhrase: Info": { + "**Make sure you keep your recovery phrase accessible after creating it.** For security reasons, we do not store the phrase after saving your changes, and you won’t be able to see it again in the ${ BRAND_NAME } app.": [ + "**Sørg for at opbevare din gendannelsessætning, så den er tilgængelig efter den er oprettet.** Af sikkerhedsmæssige årsager opbevarer vi ikke sætningen efter du har gemt dine ændringer, og du vil ikke kunne se den igen i ${ BRAND_NAME }-appen." + ], "copy recovery phrase": [ "Kopiér gendannelsessætningen" ], @@ -19491,14 +20624,11 @@ "Or ${ downloadRecoveryKitSwitchButton } instead.": [ "Eller brug ${ downloadRecoveryKitSwitchButton } i stedet." ], - "Your **Recovery Kit** lets you restore your ${ BRAND_NAME } Account if you’re locked out.": [ - "Dit **Recovery Kit** giver dig mulighed for at genoprette din ${ BRAND_NAME } konto, hvis du er låst ude." + "Your **recovery phrase** lets you restore your ${ BRAND_NAME } Account if you’re locked out.": [ + "Din **gendannelsessætning** giver dig mulighed for at genoprette din ${ BRAND_NAME } konto, hvis du er låst ude." ] }, "RecoveryPhrase: Title": { - "Save your Recovery Kit": [ - "Gem dit gendannelsessæt" - ], "Save your recovery phrase": [ "Gem din gendannelsessætning" ] @@ -19891,8 +21021,8 @@ "Back to Safety Review": [ "Tilbage til sikkerhedsgennemgang" ], - "Because you reset your password, your current Recovery Kit can only be used to recover the data created before your password reset.": [ - "På grund af nulstillingen af din adgangskode, kan de data, der blev oprettet før nulstillingen, kun gendannes med dit nuværende gendannelsessæt." + "Because you reset your password, your current recovery phrase can only be used to recover the data created before your password reset.": [ + "Fordi du nulstillede din adgangskode, kan din gendannelsessætning kun bruges til at gendanne de data, der blev oprettet før nulstillingen." ], "Can be used to regain access to your account and data": [ "Kan bruges til at få adgang til din konto og dine data igen" @@ -19921,8 +21051,8 @@ "Download ${ size }": [ "Hent ${ size }" ], - "Download your Recovery Kit": [ - "Hent dit gendannelsessæt" + "Download your recovery phrase": [ + "Download din gendannelsessætning" ], "Email address": [ "E-mailadresse" @@ -19936,8 +21066,8 @@ "Enable recovery by phone": [ "Aktiver gendannelse via telefonnummer" ], - "I understand that I will not be able to recover currently locked data with this Recovery Kit": [ - "Jeg er bekendt med, at jeg ikke kan gendanne allerede låste data med dette gendannelsessæt." + "I understand that I will not be able to recover currently locked data with this recovery phrase": [ + "Jeg er bekendt med, at jeg ikke kan gendanne allerede låste data med denne gendannelsessætning." ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in on this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Hvis adgangskoden til ${ BRAND_NAME } bortfalder og skal nulstilles, får du fuld adgang til din ${ BRAND_NAME }, næste gang du logger ind på denne enhed med din nye adgangskode. Kontoen bliver gendannet." @@ -19945,8 +21075,8 @@ "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Hvis adgangskoden til ${ BRAND_NAME } bortfalder og skal nulstilles, får du fuld adgang til din ${ BRAND_NAME }, næste gang du logger ind på denne enhed med din nye adgangskode. Kontoen bliver gendannet." ], - "If you get locked out of your ${ BRAND_NAME } Account, your Recovery Kit will allow you to sign in and recover your data.": [ - "Hvis du bliver låst ude af din ${ BRAND_NAME }-konto, gør dit gendannelsessæt det muligt for dig at logge på og gendanne dine data." + "If you get locked out of your ${ BRAND_NAME } Account, your recovery phrase will allow you to sign in and recover your data.": [ + "Hvis du bliver låst ude af din ${ BRAND_NAME }-konto, vil din gendannelsessætning give dig mulighed for at logge ind og gendanne dine data." ], "If you lose your login details and need to reset your account, **it’s imperative** that you have both an **account recovery and data recovery method** in place, otherwise you might not be able to access any of your emails, contacts, files or passwords.": [ "Hvis du mister dine adgangsoplysninger og har brug for at nulstille din konto, **er det afgørende**, at du har både **konto- og datagendannelsesmetode** på plads, ellers kan du måske ikke tilgå nogen af dine e-mails, kontakter, filer eller adgangskoder." @@ -19990,8 +21120,8 @@ "Take action to secure your account": [ "Gør noget for at sikre din konto" ], - "There was an error generating your Recovery Kit": [ - "Der opstod en fejl under oprettelsen af dit gendannelsessæt" + "There was an error generating your recovery phrase": [ + "Der opstod en fejl under oprettelsen af din gendannelsessætning" ], "There was an error verifying your email": [ "Der opstod en fejl ved bekræftelsen af din e-mail" @@ -20020,11 +21150,11 @@ "to recover your account if you're ever locked out": [ "til at gendanne din konto, hvis du skulle blive låst ude" ], - "Update your Recovery Kit": [ - "Opdater dit gendannelsessæt" + "Update your recovery phrase": [ + "Opdater din gendannelsessætning" ], - "Update your Recovery Kit?": [ - "Opdater dit gendannelsessæt?" + "Update your recovery phrase?": [ + "Opdater din gendannelsessætning?" ], "Verify": [ "Bekræft" @@ -20041,8 +21171,8 @@ "Verify your recovery phone number": [ "Bekræft dit telefonnummer til gendannelse" ], - "We encountered an error while generating your Recovery Kit. Please try again later, or contact support if the issue continues.": [ - "Vi stødte på en fejl under genereringen af dit gendannelsessæt. Prøv igen senere, eller kontakt supporten, hvis problemet fortsætter." + "We encountered an error while generating your recovery phrase. Please try again later, or contact support if the issue continues.": [ + "Vi stødte på en fejl under genereringen af din gendannelsessætning. Prøv igen senere eller kontakt supporten, hvis problemet fortsætter." ], "We encountered an error while verifying your email. Please try again later, or contact support if the issue continues.": [ "Vi stødte på en fejl ved bekræftelsen af din e-mail. Prøv igen senere eller kontakt supporten, hvis problemet fortsætter." @@ -20065,8 +21195,8 @@ "You can disable this at any time.": [ "Du kan slå det fra når som helst." ], - "You can use the recovery phrase in this Recovery Kit to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ - "Du kan bruge gendannelsessætningen i dette gendannelsessæt til at gendanne din konto helt, når du nulstiller din adgangskode, så husk at opbevare den et sikkert sted." + "You can use the recovery phrase in this recovery phrase to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ + "Du kan bruge gendannelsessætningen til at gendanne din konto helt, når du nulstiller din adgangskode, så husk at opbevare den et sikkert sted." ], "You can use your email to regain access to your account if you forget your password.": [ "Du kan bruge din e-mail til at tilgå din konto igen, hvis du glemmer din adgangskode." @@ -20077,8 +21207,8 @@ "You can use your recovery phone to regain access to your account if you forget your password.": [ "Du kan bruge din gendannelsestelefon til at få adgang til din konto igen, hvis du har glemt din adgangskode." ], - "You have previously downloaded a Recovery Kit. Downloading a new one will **deactivate the old one**.": [ - "Du har tidligere hentet et gendannelsessæt. Ved at hente et nyt, bliver det gamle **deaktiveret**." + "You have previously downloaded a recovery phrase. Downloading a new one will **deactivate the old one**.": [ + "Du har tidligere hentet en gendannelsessætning. Ved at hente et nyt, bliver det gamle **deaktiveret**." ], "You have recommended actions to safeguard your account further.": [ "Du har anbefalede handlinger for yderligere at beskytte din konto." @@ -20143,12 +21273,6 @@ "Your recovery email is set": [ "Din gendannelsesmail er indstillet" ], - "Your Recovery Kit": [ - "Dit gendannelsessæt" - ], - "Your Recovery Kit is set": [ - "Dit gendannelsessæt er indstillet" - ], "Your recovery methods": [ "Dine gendannelsesmetoder" ], @@ -20169,6 +21293,242 @@ ], "Your recovery phone number is:": [ "Din telefonnummer til gendannelse er:" + ], + "Your recovery phrase": [ + "Din gendannelsessætning" + ], + "Your recovery phrase is set": [ + "Din gendannelsessætning er indstillet" + ] + }, + "safety_review": { + "${ BRAND_NAME } Account email": [ + "${ BRAND_NAME }-konto e-mail" + ], + "Account protection": [ + "Kontobeskyttelse" + ], + "Add": [ + "Tilføj" + ], + "Add an emergency contact": [ + "Tilføj en nødkontakt" + ], + "Add emergency contacts": [ + "Tilføj nødkontakter" + ], + "Add options": [ + "Tilføj muligheder" + ], + "Add people who you trust and can contact easily. Your emergency contact will be able to access your account and reset your password for you if needed.": [ + "Tilføj personer du stoler på og nemt kan kontakte. Din nødkontakt vil kunne tilgå din konto og nulstille din adgangskode for dig, hvis det bliver nødvendigt." + ], + "Add people you trust and can contact easily. They will be able to help you unlock your data after you reset your password.": [ + "Tilføj personer du stoler på og nemt kan kontakte. De vil kunne hjælpe dig med at låse op for din data efter du har nulstillet din adgangskode." + ], + "Add phone number": [ + "Tilføj telefonnummer" + ], + "Add recovery contacts": [ + "Tilføj gendannelseskontakter" + ], + "Add recovery email": [ + "Tilføj e-mail til gendannelse" + ], + "Add recovery phone": [ + "Tilføj gendannelsestelefon" + ], + "Added emergency contacts": [ + "Tilføjede nødkontakter" + ], + "Added recovery contacts": [ + "Tilføjede gendannelseskontakter" + ], + "Added recovery email": [ + "Tilføjede e-mail til gendannelse" + ], + "Added recovery phone": [ + "Tilføjede gendannelsestelefon" + ], + "Allow": [ + "Tillad" + ], + "Allow data recovery from this device": [ + "Tillad gendannelse af data fra denne enhed" + ], + "Allow password reset from the settings": [ + "Tillad nulstilling af adgangskode fra indstillingerne" + ], + "Allow recovery by email": [ + "Tillad gendannelse via e-mail" + ], + "Allow recovery by phone": [ + "Tillad gendannelse via telefon" + ], + "Allow scanning a QR code to sign in": [ + "Tillad skanning af en QR-kode for at logge ind" + ], + "Allow trusted friends to unlock your data": [ + "Tillad at betroede venner låser op for dine data" + ], + "Back to ${ backLink.appNameString }": [ + "Tilbage til ${ backLink.appNameString }" + ], + "Congratulations": [ + "Tillykke" + ], + "Didn’t receive it? ${ sendANewCode }": [ + "Modtog du den ikke? ${ sendANewCode }" + ], + "Done": [ + "Færdig" + ], + "Download": [ + "Download" + ], + "Download recovery file": [ + "Download gendannelsesfil" + ], + "Downloaded recovery file": [ + "Downloadede gendannelsesfil" + ], + "Emergency contacts enabled": [ + "Nødkontakter aktiveret" + ], + "Enable device recovery": [ + "Aktivér gendannelse via enhed" + ], + "Enable email recovery": [ + "Aktivér e-mailgendannelse" + ], + "Enable emergency contacts": [ + "Aktivér nødkontakter" + ], + "Enable password reset from settings": [ + "Aktivér nulstilling af adgangskode fra indstillinger" + ], + "Enable phone recovery": [ + "Aktivér telefongendannelse" + ], + "Enable QR code sign-in": [ + "Aktivér login med QR-kode" + ], + "Enabled device recovery": [ + "Aktiverede gendannelse via enhed" + ], + "Enabled email recovery": [ + "Aktiverede e-mailgendannelse" + ], + "Enabled password reset from settings": [ + "Aktiverede nulstilling af adgangskode fra indstillinger" + ], + "Enabled phone recovery": [ + "Aktiverede telefongendannelse" + ], + "Enabled QR code sign-in": [ + "Aktiverede login med QR-kode" + ], + "Got it": [ + "Forstået" + ], + "Here's how you increased your account protection:": [ + "Sådan forbedrede du din kontobeskyttelse:" + ], + "If you forget your password, you can sign in using a QR code. All you need is to be signed in to a ${ BRAND_NAME } service on another device.": [ + "Hvis du glemmer din adgangskode kan du logge ind med en QR-kode. Du skal blot være logget ind på en ${ BRAND_NAME }-tjeneste på en anden enhed." + ], + "If you get locked out of your ${ BRAND_NAME } Account, it will allow you to sign in and recover your data. It’s the only way to instantly restore everything, so make sure you keep it somewhere safe.": [ + "Hvis du bliver låst ude af din ${ BRAND_NAME }-konto, vil den kunne logge dig ind og gendanne dine data. Det er den eneste måde at øjeblikkeligt gendanne din konto på, så sørg for at opbevare den et sikkert sted." + ], + "Later": [ + "Senere" + ], + "Protect your legacy with Emergency Access": [ + "Beskyt din arv med nødadgang" + ], + "Save recovery phrase": [ + "Gem gendannelsessætning" + ], + "Saved recovery phrase": [ + "Gemt gendannelsessætning" + ], + "They must already have a ${ BRAND_NAME } Account.": [ + "De skal allerede have en ${ BRAND_NAME }-konto." + ], + "They will not be able to see or access your data.": [ + "De vil ikke kunne se eller tilgå dine data." + ], + "This will let you quickly access your ${ BRAND_NAME } Account so you can change your password.": [ + "Dette giver dig mulighed for hurtigt at tilgå din ${ BRAND_NAME }-konto, så du kan ændre din adgangskode." + ], + "This will let you reset your account password if you’ve lost it, but are still signed in to ${ BRAND_NAME }. It’s often the easiest way to recover your account if you’re signed in.": [ + "Dette lader dig nulstille din adgangskode til din konto hvis du mister den, men stadig er logget ind på ${ BRAND_NAME }. Det er oftest den nemmeste måde at gendanne din konto hvis du er logget ind." + ], + "This will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset.": [ + "Dette genopretter adgangen til e-mails, kontakter, filer, adgangskoder, og alt andet krypteret data på din konto efter adgangskoden er blevet nulstillet." + ], + "To make sure the email address is yours, enter the verification code sent to ${ boldEmail }.": [ + "Indtast bekræftelseskoden sendt til ${ boldEmail } for at bekræfte at e-mailadressen er din." + ], + "To make sure the phone number is yours, enter the verification code sent to ${ boldPhoneNumber }.": [ + "Indtast bekræftelseskoden sendt til ${ boldPhoneNumber } for at bekræfte at telefonnummeret er dit." + ], + "To make sure this address is really yours, we’ll send an email with a verification link.": [ + "Vi sender dig en e-mail med et bekræftelseslink for at bekræfte at denne adresse virkelig er din." + ], + "Upgrade your plan to enable Emergency Access to your account. This will allow you to designate 1 to 5 people who will be able to reset your password for you.": [ + "Opgrader dit abonnement for at aktivere nødadgang til din konto. Dette giver dig mulighed for at angive 1 til 5 personer, som vil kunne nulstille din adgangskode for dig." + ], + "Verified password": [ + "Bekræftet adgangskode" + ], + "Verified recovery email": [ + "Bekræftede e-mail til gendannelse" + ], + "Verified recovery phone": [ + "Bekræftet telefon til gendannelse" + ], + "Verify": [ + "Bekræft" + ], + "Verify password": [ + "Bekræft adgangskode" + ], + "Verify recovery email": [ + "Bekræft e-mail til gendannelse" + ], + "Verify recovery phone": [ + "Bekræft telefon til gendannelse" + ], + "Verify your recovery email": [ + "Bekræft din e-mail til gendannelse" + ], + "Verify your recovery phone": [ + "Bekræft din gendannelsestelefon" + ], + "You can save a data backup on this device. This will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset, simply by signing in on this device.": [ + "Du kan gemme en sikkerhedskopiering på denne enhed. Den vil kunne gendanne adgangen til e-mails, kontakter, filer, adgangskoder, og andet krypteret data på din konto efter adgangskoden er blevet nulstillet, bare ved at logge ind på enheden." + ], + "You can use email verification to regain access to your account if you forget your password.": [ + "Du kan bruge e-mail-bekræftelse til at tilgå din konto igen, hvis du glemmer din adgangskode." + ], + "You can use SMS verification to regain access to your account if you forget your password.": [ + "Du kan bruge SMS-bekræftelse til at tilgå din konto igen, hvis du glemmer din adgangskode." + ], + "You can use your recovery email to regain access to your account if you forget your password.": [ + "Du kan bruge din e-mail til gendannelse til at tilgå din konto igen, hvis du har glemt din adgangskode." + ], + "You can use your recovery phone to regain access to your account if you forget your password.": [ + "Du kan bruge din gendannelsestelefon til at få adgang til din konto igen, hvis du har glemt din adgangskode." + ], + "You don’t need to open or read the file—just download it and store it somewhere safe.": [ + "Du behøver ikke at åbne eller læse filen – bare download den og opbevar den sikkert." + ], + "Your recovery checklist": [ + "Din gendannelsestjekliste" + ], + "Your security setup": [ + "Din sikkerhedskonfiguration" ] }, "saml: Action": { @@ -20374,6 +21734,17 @@ "Ingen resultater fundet" ] }, + "Sentinel banner": { + "To ensure the highest possible security of your account, disable recovery via email and SMS.": [ + "Opnå størst mulig sikkerhed på din konto ved at slå gendannelse via e-mail og SMS fra." + ], + "To make sure that you can always access your ${ BRAND_NAME } Account, download your recovery phrase.": [ + "Download din gendannelsessætning for at sikre, at du altid kan tilgå din ${ BRAND_NAME }-konto." + ], + "You have recommended actions from ${ PROTON_SENTINEL_NAME }": [ + "Du har anbefalinger fra ${ PROTON_SENTINEL_NAME }" + ] + }, "Server-Info": { "active": [ "aktiv" @@ -20645,6 +22016,9 @@ ] }, "session_recovery:settings:info": { + "To disallow password reset from settings, you must save your recovery phrase.": [ + "For at slå nulstilling af adgangskode fra i indstillinger skal du gemme din gendannelsessætning." + ], "To disallow password reset, you must have a recovery method set up.": [ "Hvis du ikke vil tillade nulstilling af adgangskoden, skal du have opsat en gendannelsesmetode." ], @@ -20702,14 +22076,11 @@ ] }, "Setting": { - "Enable Photos section": [ - "Aktivér sektionen Fotos" - ], "Get updates about comments via email": [ "Få opdateringer om kommentarer via e-mail" ], "Include document name in email notifications": [ - "Inkluder dokumentnavn i e-mailnotifikationer" + "Inkludér dokumentnavn i e-mailnotifikationer" ] }, "Settings description": { @@ -20721,6 +22092,9 @@ "Account": [ "Konto" ], + "Managed Companies": [ + "Administrerede selskaber" + ], "Organization": [ "Organisation" ] @@ -21574,11 +22948,35 @@ ] }, "Spotlight": { + "Assign delegated roles": [ + "Tildel delegerede roller" + ], + "Assign roles": [ + "Tildel roller" + ], + "Click a user's name to manage their role and permissions.": [ + "Klik på en brugers navn for at administrere deres rolle og tilladelser." + ], + "Click Edit to assign roles to this group and manage member access automatically.": [ + "Klik Rediger for at tildele roller til denne gruppe og administrere medlemsadgang automatisk." + ], "Earn up to ${ maxRewardAmount } in credit": [ "Få op til ${ maxRewardAmount } i kreditter" ], "Get credits when the person you invite subscribes to a ${ BRAND_NAME } plan.": [ "Få kreditter, når den person, du inviterer, tegner et ${ BRAND_NAME }-abonnement." + ], + "New: Roles and permissions tab": [ + "Nyhed: Rolle- og tilladelsesfane" + ], + "Open this tab to grant specific permissions without full admin access.": [ + "Åbn denne fane for at give specifikke tilladelser uden fuld admin-adgang." + ], + "User roles available": [ + "Tilgængelige brugerroller" + ], + "You can now assign roles to individual users from this tab.": [ + "Du kan nu tildele roller til individuelle brugere fra denne fane." ] }, "sso": { @@ -21868,6 +23266,60 @@ "Opsiger dit abonnement, vent venligst" ] }, + "Status": { + "${ count } person": [ + "${ count } person", + "${ count } personer" + ], + "Add a phone number": [ + "Tilføj et telefonnummer" + ], + "Add an email address": [ + "Tilføj en e-mailadresse" + ], + "Available on this device": [ + "Tilgængeligt på denne enhed" + ], + "Disable recovery by email": [ + "Deaktivér gendannelse via e-mail" + ], + "Disable recovery by phone": [ + "Deaktivér gendannelse via telefon" + ], + "Generate a recovery phrase": [ + "Opret en gendannelsessætning" + ], + "Last changed ${ formattedDate }": [ + "Sidst ændret ${ formattedDate }" + ], + "Last updated ${ formattedUpdateDate }": [ + "Sidst opdateret ${ formattedUpdateDate }" + ], + "Not saved": [ + "Ikke gemt" + ], + "Off": [ + "Fra" + ], + "On": [ + "Til" + ], + "Outdated": [ + "Forældet" + ], + "Saved": [ + "Gemt" + ], + "Unverified": [ + "Ikke bekræftet" + ], + "Verified": [ + "Bekræftet" + ], + "Verify ${ value }": [ + "Bekræft ${ value }" + ] + }, "Step in filter modal": { "Actions": [ "Handlinger" @@ -22173,7 +23625,7 @@ "${ BRAND_NAME } Scribe-skriveassistent" ], "${ CALENDAR_APP_NAME }, ${ DRIVE_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME }, ${ VPN_SHORT_APP_NAME }, ${ MEET_SHORT_APP_NAME }, and ${ LUMO_APP_NAME } with premium features": [ - "${ CALENDAR_APP_NAME }, ${ DRIVE_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME }, ${ VPN_SHORT_APP_NAME }, ${ MEET_SHORT_APP_NAME }, and ${ LUMO_APP_NAME } med premium funktioner" + "${ CALENDAR_APP_NAME }, ${ DRIVE_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME }, ${ VPN_SHORT_APP_NAME }, ${ MEET_SHORT_APP_NAME }, og ${ LUMO_APP_NAME } med premium-funktioner" ], "${ CALENDAR_APP_NAME }, ${ DRIVE_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME }, and ${ VPN_SHORT_APP_NAME } with premium features": [ "${ CALENDAR_APP_NAME }, ${ DRIVE_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME } og ${ VPN_SHORT_APP_NAME } med premium funktioner" @@ -22552,20 +24004,71 @@ ] }, "Subtitle": { + "${ DRIVE_PLUS_NAME } offers 1 TB storage for your files and photos. You are also eligible for yearly storage bonuses.": [ + "${ DRIVE_PLUS_NAME } tilbyder 1 TB lagerplads til dine filer og fotos. Du er også berettiget til årlige lagerbonusser." + ], + "${ DRIVE_PLUS_NAME } offers 200 GB storage for your files and photos. You are also eligible for yearly storage bonuses.": [ + "${ DRIVE_PLUS_NAME } tilbyder 200 GB lagerplads til dine filer og fotos. Du er også berettiget til årlige lagerbonusser." + ], + "${ planTitle } gives you access to all apps and premium features. Privacy is built-in so you can get on with it, knowing your data and identity are safe.": [ + "${ planTitle } giver dig tilgang alle apps og eksklusive funktioner. Privatliv er indbygget, så du kan komme videre med arbejdet velvidende om at dine data og din identitet er sikre." + ], + "${ planTitle } gives you all apps, all features, early access to new releases, and everything you need to be in control of your data and its security.": [ + "${ planTitle } giver dig alle apps, alle funktioner, tidlig adgang til nye udgivelser, og alt hvad der kræves for at have kontrol over dine data og dets sikkerhed." + ], + "${ planTitle } gives you unlimited privacy and more storage for up to 2 people.": [ + "${ planTitle } giver dig ubegrænset privatliv og mere lagerplads til op til 2 personer." + ], + "${ planTitle } gives your team all the collaboration tools they need to be productive and organized in their work, while safeguarding your business.": [ + "${ planTitle } giver dit team alle værktøjerne til at samarbejde produktivt og på en organiseret måde, samtidig med at holde din virksomhed sikker." + ], + "${ planTitle } gives your team what they need to be more productive and organized in their work with access to all ${ BRAND_NAME } apps and their advanced features.": [ + "${ planTitle } giver dit team det, de har brug for at være mere produktive og organiserede i deres arbejde med adgang til alle ${ BRAND_NAME }-apps og deres avancerede funktioner." + ], + "${ planTitle } gives your team what they need to be more productive, organized, and in control of their inbox, schedule, and more.": [ + "${ planTitle } giver dit team det de har brug for at være mere produktive, organiserede og have kontrol over deres indbakke, tidsplan og meget mere." + ], + "${ planTitle } goes beyond the basics to help you be more productive, organized, and in control of your inbox, email identity, and more.": [ + "${ planTitle } giver dig mulighed for at blive mere produktiv, organiseret og få kontrol over din indbakke, e-mailidentitet og meget mere." + ], + "${ planTitle } helps you ensure that each of your family members — and their data — are protected whenever they’re online.": [ + "${ planTitle } hjælper dig med at sikre, at alle dine familiemedlemmer - og deres data - er beskyttet, når de er online." + ], + "Compare the key differences that matter for your business.": [ + "Sammenlign de vigtigste forskelle der har en betydning for din virksomhed." + ], "Free forever": [ "Gratis for altid" ], "per month, billed annually": [ "pr. måned, faktureret årligt" ], + "Save 50% for 1 year, and keep full access": [ + "Spar 50% i 1 år, og behold fuld adgang" + ], + "Save 50% for 6 months, and keep full access": [ + "Spar 50% i 6 måneder, og behold fuld adgang" + ], + "See how ${ MAIL_APP_NAME } compares, and why our independence makes a difference.": [ + "Se hvordan ${ MAIL_APP_NAME } rangerer sig, og hvorfor vores uafhængighed gør en forskel." + ], "View VPN session details for your organization.": [ "Se VPN-sessionsdetaljer for din organisation." + ], + "With managed companies, you can add, edit, and remove access for organizations you oversee.": [ + "Med administrerede virksomheder kan du tilføje, redigere og fjerne adgang for organisationer, du fører tilsyn med." + ], + "Your total monthly cost for all managed companies.": [ + "Dine samlede månedlige omkostninger for alle administrerede selskaber." ] }, "Success": { "Account deleted. Signing out...": [ "Konto slettet, logger ud..." ], + "Activation link copied to clipboard": [ + "Aktiveringslink kopieret til udklipsholder" + ], "Address added": [ "Adresse tilføjet" ], @@ -22689,9 +24192,6 @@ "Organization logo updated": [ "Organisationens logo opdateret" ], - "Organization name set": [ - "Organisationsnavn angivet" - ], "Organization name updated": [ "Organisationens navn opdateret" ], @@ -22881,6 +24381,9 @@ ], "/user per month": [ "/bruger pr. måned" + ], + "/year": [ + "/år" ] }, "Suffix for price": { @@ -22910,6 +24413,14 @@ "Beskyt dine filer med krypteret lagring i skyen. Inkluderer versionshistorik, krypteret fildeling og meget mere." ] }, + "Tab": { + "For personal use": [ + "Til personligt brug" + ], + "For professional use": [ + "Til professionelt brug" + ] + }, "Tab in domain modal": { "Addresses": [ "Adresser" @@ -22998,6 +24509,14 @@ "Ingen SMTP-tokens fundet" ] }, + "Temporary need": { + "Continue cancelling": [ + "Fortsæt annullering" + ], + "Keep current plan": [ + "Behold nuværende abonnement" + ] + }, "Theme": { "Auto": [ "Automatisk" @@ -23177,12 +24696,18 @@ "Actions": [ "Handlinger" ], + "Activate multi-user support": [ + "Aktivér understøttelse af flere brugere" + ], "Activate organization key": [ "Aktivér organisationsnøgle" ], "Activate user": [ "Aktiver bruger" ], + "Activate your email": [ + "Aktivér din e-mail" + ], "Activity monitor": [ "Aktivitetsovervågning" ], @@ -23193,12 +24718,21 @@ "Add a custom logo": [ "Tilføj et brugertilpasset logo" ], + "Add a recovery contact": [ + "Tilføj gendannelseskontakt" + ], "Add address": [ "Tilføj adresse" ], + "Add an emergency contact": [ + "Tilføj en nødkontakt" + ], "Add another notification to remind you of this event": [ "Tilføj endnu en notifikation for at minde dig om denne begivenhed" ], + "Add categories": [ + "Tilføj kategorier" + ], "Add contact group name": [ "Tilføj kontaktgruppenavn" ], @@ -23259,6 +24793,9 @@ "Address and key verification": [ "Adresse- og nøglebekræftelse" ], + "Advanced recovery options": [ + "Avancerede gendannelsesmuligheder" + ], "Allocate storage": [ "Tildel lagerplads" ], @@ -23277,9 +24814,6 @@ "An address for each role": [ "En adresse for hver rolle" ], - "An error occurred": [ - "Der opstod en fejl" - ], "Annual": [ "Årlig" ], @@ -23373,6 +24907,9 @@ "Catch-all address": [ "Catch-all-adresse" ], + "Categories": [ + "Kategorier" + ], "Change login password": [ "Skift login-adgangskode" ], @@ -23395,7 +24932,7 @@ "Ændr anden adgangskode" ], "Check your default mail application": [ - "Tjek din standard-e-mailapplikation" + "Tjek din standard mailapplikation" ], "Choose a provider": [ "Vælg en udbyder" @@ -23418,6 +24955,9 @@ "Collaborate on documents": [ "Arbejd sammen om dokumenter" ], + "Companies": [ + "Virksomheder" + ], "Compare plans": [ "Sammenlign abonnementer" ], @@ -23427,18 +24967,12 @@ "Confirm": [ "Bekræft" ], - "Confirm address": [ - "Bekræft adresse" - ], "Confirm downgrade": [ "Bekræft nedgradering" ], "Confirm loss of ${ BRAND_NAME } bonuses": [ "Bekræft tab af ${ BRAND_NAME }-bonusser" ], - "Confirm phone number": [ - "Bekræft telefonnummer" - ], "Connect ${ name }": [ "Forbind ${ name }" ], @@ -23463,12 +24997,18 @@ "Connect your custom domain": [ "Forbind dit brugerdefinerede domæne" ], + "Connected emails": [ + "Forbundne e-mails" + ], "Connection status": [ "Forbindelsesstatus" ], "Contact us": [ "Kontakt os" ], + "Continue with free storage": [ + "Fortsæt med gratis lagerplads" + ], "Continue with partial import?": [ "Fortsæt med delvis import?" ], @@ -23494,6 +25034,9 @@ "Create a new gateway": [ "Opret en ny gateway" ], + "Create a new password": [ + "Opret en ny adgangskode" + ], "Create Gateway": [ "Opret gateway" ], @@ -23575,6 +25118,12 @@ "Data recovery": [ "Datagendannelse" ], + "Data recovery contacts": [ + "Kontakter til gendannelse af data" + ], + "Data recovery options": [ + "Metoder til datagendannelse" + ], "Data retention": [ "Datalagring" ], @@ -23584,6 +25133,9 @@ "Day theme": [ "Dagstema" ], + "Deactivate current phrase?": [ + "Deaktivér nuværende sætning?" + ], "Decrypt key": [ "Dekryptér nøgle" ], @@ -23654,6 +25206,9 @@ "Device": [ "Enhed" ], + "Device data backup": [ + "Sikkerhedskopiering af data på enheden" + ], "Device name": [ "Enhedsnavn" ], @@ -23663,6 +25218,9 @@ "Disable categories?": [ "Deaktiver kategorier?" ], + "Disable device data backup?": [ + "Deaktiver sikkerhedskopiering af data på enheden" + ], "Disable two-factor authentication": [ "Deaktivér to-faktor-godkendelse" ], @@ -23678,6 +25236,9 @@ "Disconnected from Gmail": [ "Forbindelsen til Gmail er afbrudt" ], + "Dismiss setup checklist": [ + "Skjul konfigurationstjekliste" + ], "Display name and signature": [ "Visningsnavn og signatur" ], @@ -23714,6 +25275,9 @@ "Download the mobile apps": [ "Download appen til din mobil" ], + "Download your recovery phrase": [ + "Download din gendannelsessætning" + ], "Downloads": [ "Downloads" ], @@ -23792,6 +25356,9 @@ "Email privacy": [ "E-mail-privatliv" ], + "Email verification": [ + "Bekræftelse via e-mail" + ], "Emergency access": [ "Nødadgang" ], @@ -23850,6 +25417,9 @@ "Feature access": [ "Funktionsadgang" ], + "Fewer distractions, more focus": [ + "Færre forstyrrelser, mere fokus" + ], "Filter for more focus": [ "Filtrér for mere fokus" ], @@ -23880,12 +25450,12 @@ "Forward emails": [ "Videresend e-mails" ], - "Forwardings": [ - "Videresendelser" - ], "Free": [ "Gratis" ], + "Free plan": [ + "Gratis abonnement" + ], "Gateway": [ "Portal" ], @@ -23916,6 +25486,9 @@ "Get ${ planMaxSpace } storage for your files, photos and documents with ${ planName }. ${ upgradeButton }": [ "Få ${ planMaxSpace } lagerplads til diner filer, billeder og dokumenter med ${ planName }. ${ upgradeButton }" ], + "Get ${ VPN_APP_NAME } on your TV": [ + "Få ${ VPN_APP_NAME } på dit TV" + ], "Get ${ vpnPlus } to access all servers": [ "Få ${ vpnPlus } for at få adgang til alle servere" ], @@ -23946,6 +25519,12 @@ "Get more from your VPN": [ "Få mere ud af deres VPN" ], + "Get more storage with ${ MAIL_APP_NAME } Plus": [ + "Få mere lagerplads med ${ MAIL_APP_NAME } Plus" + ], + "Get started": [ + "Kom i gang" + ], "Get the app on all your devices and enjoy safe, seamless access anywhere.": [ "Få appen på alle dine enheder, og nyd sikker, problemfri adgang overalt." ], @@ -23976,9 +25555,15 @@ "Help center": [ "Hjælp-center" ], + "Helping activists in Hong Kong": [ + "Hjælper aktivister i Hongkong" + ], "Home": [ "Hjem" ], + "How ${ MAIL_APP_NAME } is different": [ + "Hvordan ${ MAIL_APP_NAME } skiller sig ud" + ], "How did you find out about us?": [ "Hvordan fandt du os?" ], @@ -24091,9 +25676,15 @@ "Link confirmation": [ "Linkbekræftelse" ], + "Lower your cost without losing features": [ + "Sænk dine omkostninger uden at miste funktioner" + ], "Main password": [ "Hovedadgangskode" ], + "Make your business stand out": [ + "Få din virksomhed til at skille sig ud" + ], "Manage files across devices on Windows, Mac, Android, and iOS.": [ "Administrér filer på tværs af enheder på Windows, Mac, Android og iOS." ], @@ -24115,6 +25706,9 @@ "Monthly": [ "Månedlig" ], + "Monthly Costs": [ + "Månedlige omkostninger" + ], "Multi-user support": [ "Flerbrugerunderstøttelse" ], @@ -24148,6 +25742,9 @@ "No events": [ "Ingen begivenheder" ], + "No events yet": [ + "Ingen events endnu" + ], "No need to empty the trash": [ "Intet behov for at tømme papirkurven" ], @@ -24202,12 +25799,18 @@ "Other sign-in issues": [ "Andre log ind-problemer" ], + "Our fight against censorship in Russia": [ + "Vores kamp mod censuren i Rusland" + ], "Password": [ "Adgangskode" ], "Password generator rules": [ "Adgangskodegeneratorregler" ], + "Password reset options": [ + "Indstillinger for nulstilling af adgangskode" + ], "Password reset settings": [ "Indstillinger for nulstilling af adgangskode" ], @@ -24241,9 +25844,6 @@ "Phone": [ "Telefon" ], - "Photos": [ - "Fotos" - ], "Pin the extension": [ "Fastgør udvidelsen" ], @@ -24280,6 +25880,9 @@ "QR Code": [ "QR-kode" ], + "QR code sign-in": [ + "Login med QR-kode" + ], "Ready, set, forward": [ "Klar, parat, videresend" ], @@ -24304,6 +25907,9 @@ "Recovery file": [ "Gendannelsesfil" ], + "Recovery phrase": [ + "Gendannelsesssætning" + ], "Refer a friend": [ "Henvis en ven" ], @@ -24322,9 +25928,15 @@ "Remove domain": [ "Fjern domæne" ], + "Remove email": [ + "Fjern e-mail" + ], "Remove forwarding address": [ "Fjern videresendelsesadresse" ], + "Remove recovery phone number": [ + "Fjern telefonnummer til gendannelse" + ], "Remove server?": [ "Fjern server?" ], @@ -24496,6 +26108,9 @@ "Sign in on TV": [ "Log ind på TV" ], + "Sign in on TV?": [ + "Log ind på TV?" + ], "Sign in to join the Beta program": [ "Log ind for tilmelding til Beta programmet" ], @@ -24511,6 +26126,9 @@ "Signed in to member account": [ "Logget ind på medlemskonto" ], + "Signed-in reset": [ + "Nulstilling logget ind" + ], "Simplify email distribution": [ "Forenkl e-maildistribution" ], @@ -24520,12 +26138,21 @@ "Single sign-on": [ "Enkeltlogon" ], + "SMS verification": [ + "Bekræftelse via SMS" + ], "SMTP submission": [ "SMTP-indsendelse" ], "Snooze:": [ "Udsæt:" ], + "Some of your encrypted data is locked": [ + "Noget af din krypteret data er låst" + ], + "Something went wrong": [ + "Et eller andet gik galt" + ], "Sort folders alphabetically": [ "Sortér mapper alfabetisk" ], @@ -24553,6 +26180,9 @@ "Status": [ "Status" ], + "Stay secure and connected anywhere": [ + "Vær sikker og forbundet overalt" + ], "Strengthen your security on all your devices with ${ passPlusPlanName }. ${ upgradeButton }": [ "Styrk din sikkerhed på alle dine enheder med ${ passPlusPlanName }. ${ upgradeButton }" ], @@ -24575,6 +26205,9 @@ "Support ticket closed": [ "Supportsag lukket" ], + "Support your compliance objectives": [ + "Støt dine compliance-målsætninger" + ], "Switch account": [ "Skift konto" ], @@ -24644,6 +26277,9 @@ "Type": [ "Type" ], + "Unblocking internet access in Iran": [ + "Sådan ophævedes internetblokeringen i Iran" + ], "Unlock your data": [ "Lås dine data op" ], @@ -24713,6 +26349,9 @@ "Verify it’s you": [ "Bekræft at det er dig" ], + "Verify your email": [ + "Bekræft din e-mail" + ], "Verifying your card...": [ "Bekræfter dit kort..." ], @@ -24737,6 +26376,9 @@ "Warning: suspected fake website": [ "Advarsel: mistanke om falsk websted" ], + "We sent you a code to your email to make sure it’s you. This code is valid for 10 minutes. Please enter it below.": [ + "Vi har sendt dig en kode til din e-mail for at sikre os at det er dig. Koden er gyldig i 10 minutter. Indtast den nedenfor." + ], "We'll send an email to your new address with instructions on completing the change.": [ "Vi sender en e-mail til din nye adresse med instruktioner om, hvordan du gennemfører ændringen." ], @@ -24752,6 +26394,9 @@ "Welcome to your new password manager!": [ "Velkommen til din nye adgangskodeadministrator!" ], + "What changes if you switch to the Free plan": [ + "Hvad der ændrer sig hvis du skifter til det gratis abonnement" + ], "What is an alias?": [ "Hvad er et alias?" ], @@ -24785,6 +26430,12 @@ "Your ${ planTitle } subscription has started": [ "Dit ${ planTitle }-abonnement er startet" ], + "Your admin at ${ orgName } is inviting you to activate your new secure ${ BRAND_NAME } account and update your password.": [ + "Din admin hos ${ orgName } inviterer dig til at aktivere din nye og sikre ${ BRAND_NAME }-konto og opdatere din adgangskode." + ], + "Your admin is inviting you to activate your new secure ${ BRAND_NAME } account and update your password.": [ + "Din admin inviterer dig til at aktivere din nye og sikre ${ BRAND_NAME }-konto og opdatere din adgangskode." + ], "Your calendar link": [ "Dit kalenderlink" ], @@ -24797,6 +26448,15 @@ "Your plan": [ "Dit abonnement" ], + "Your recovery file": [ + "Din gendannelsesfil" + ], + "Your recovery phrase": [ + "Din gendannelsessætning" + ], + "Your recovery setup": [ + "Din gendannelseskonfiguration" + ], "Your referrals": [ "Dine henvisninger" ], @@ -24929,6 +26589,24 @@ "Admins can manage user accounts and give admin privileges to other users. Only the primary admin can edit the plan of the organization.": [ "Administratorer kan administrere brugerkonti og give administratorrettigheder til andre brugere. Kun den primære administrator kan redigere abonnementet for organisationen." ], + "Allow recovering your account with a one-time code sent to your recovery email": [ + "Tillad gendannelse af din konto med en engangskode som vi sender til din e-mail til gendannelse" + ], + "Allow recovering your account with a one-time code sent to your recovery phone": [ + "Tillad gendannelse af din konto med en engangskode som vi sender til din telefon til gendannelse" + ], + "Allow resetting your password from the account settings": [ + "Tillad nulstilling af din adgangskode fra kontoindstillinger" + ], + "Allow scanning a QR code from a ${ BRAND_NAME } mobile app to sign in": [ + "Tillad at skanne en QR-kode fra en ${ BRAND_NAME }-mobilapp for at logge ind" + ], + "Allow trusted contacts to request access to your account": [ + "Tillad at betroede kontakter anmoder om adgang til din konto" + ], + "Allow trusted contacts to unlock your encrypted data after a password reset": [ + "Tillad at betroede kontakter låser op for dine krypterede data efter adgangskoden er blevet nulstillet" + ], "Allows to seamlessly add Zoom video conferencing links to your calendar invitations.": [ "Giver mulighed for nemt at tilføje Zoom-videokonferencelinks til din kalenderinvitation." ], @@ -24965,6 +26643,9 @@ "Each imported email will have this label": [ "Hver importeret e-mail vil have denne etiket" ], + "Early access to new apps and features.": [ + "Forhåndsadgang til nye apps og funktioner." + ], "Edit folder names": [ "Rediger mappenavne" ], @@ -25013,6 +26694,12 @@ "If you purchased a gift code or received one from our support team, you can enter it here.": [ "Hvis du har købt en gavekode eller modtaget en fra vores supportteam, kan du indtaste den her." ], + "Includes custom email domains and unlimited hide-my-email aliases in ${ MAIL_APP_NAME }, access to servers in 120+ countries in ${ VPN_SHORT_APP_NAME }, built-in 2FA and secure sharing in ${ PASS_SHORT_APP_NAME }, and more.": [ + "Inkluderer brugerdefinerede e-maildomæner og ubegrænsede hide-my-email-aliasser i ${ MAIL_APP_NAME }, adgang til servere i 120+ lande i ${ VPN_SHORT_APP_NAME }, indbygget 2FA og sikker deling i ${ PASS_SHORT_APP_NAME }, og mere." + ], + "Includes professional email at @yourdomain.com, cloud storage with collaborative document editing, scheduling and video conferencing, password management, a secure ${ VPN_SHORT_APP_NAME }, and more.": [ + "Inkluderer professionelle e-mails med @ditdomæne.com, lagerplads i skyen med dokumenter der kan samarbejdes om, planlægning og afholdelse af videomøder, adgangskodehåndtering, en sikker ${ VPN_SHORT_APP_NAME }, og mere." + ], "Members who do not use 2FA will get an email asking them to enable it as soon as possible. Single sign-on users will not receive the email reminder.": [ "Medlemmer, der ikke bruger tofaktorgodkendelse, vil modtage en e-mail, der beder dem aktivere det hurtigst muligt. Enkeltlogonbrugere vil ikke modtage e-mailpåmindelsen." ], @@ -25034,6 +26721,15 @@ "Remove metadata from images to protect your privacy.": [ "Fjern metadata fra billeder for at beskytte dit privatliv." ], + "Save 12-word long phrase to unlock your account and your encrypted data instantly if you forgot your password": [ + "Gem sætningen på 12 ord for at låse op for din konto og dine krypterede data med det samme, hvis du skulle glemme din adgangskode" + ], + "Save an encryption backup file in this browser to recover your data after a password reset": [ + "Gem en krypterings-backupfil i denne browser for at gendanne dine data efter adgangskoden er blevet nulstillet" + ], + "Save an encryption backup file to recover your data after a password reset": [ + "Gem en krypterings-backupfil for at gendanne dine data efter adgangskoden er blevet nulstillet" + ], "See number of unread messages in the tab icon": [ "Se antallet af ulæste beskeder i fane-ikonet" ], @@ -25106,7 +26802,7 @@ "This feature is only available on Beta": [ "Denne funktion er kun tilgængelig på Beta" ], - "This is the default key used by other ${ MAIL_APP_NAME } users on older mobile apps to encrypt data they send to you": [ + "This is the default key used by other ${ MAIL_APP_NAME } users on older apps to encrypt data they send to you": [ "Dette er standardnøglen, der bruges af andre ${ MAIL_APP_NAME }-brugere på ældre mobilapps til at kryptere de data, som de sender til dig" ], "This is the default key used by other ${ MAIL_APP_NAME } users to encrypt data they send to you": [ @@ -25195,6 +26891,9 @@ "User is a group": [ "Brugeren er en gruppe" ], + "via ${ groupName }": [ + "via ${ groupName }" + ], "Waiting for user to accept the invitation": [ "Venter på, at brugeren accepterer invitationen" ] @@ -25518,6 +27217,12 @@ ] }, "user_modal": { + "(via ${ groupName })": [ + "(via ${ groupName })" + ], + "(via group)": [ + "(via gruppe)" + ], "Add delegated roles to a user to grant them only the specific permissions they need, keeping full-admin power separate and your environment secure.": [ "Tilføj delegerede roller til en bruger for kun at give dem de specifikke tilladelser de har brug for, og dermed holde fuld admin-adgang seperat og dit miljø sikkert." ], @@ -25905,11 +27610,14 @@ "${ BRAND_NAME } will transfer as much data as possible, starting with your most recent messages.": [ "${ BRAND_NAME } vil overføre så mange data som muligt, startende med dine seneste beskeder." ], - "Are you sure you want to delete the phone number?": [ - "Er du sikker på, at du vil slette telefonnummeret?" + "Are you sure you want to remove your notification email?": [ + "Er du sikker på at du vil fjerne din notifikations-e-mail?" ], - "Are you sure you want to delete this address?": [ - "Er du sikker på, at du vil slette denne adresse?" + "Are you sure you want to remove your recovery email?": [ + "Er du sikker på at du vil fjerne din e-mail til gendannelse?" + ], + "Are you sure you want to remove your recovery phone number?": [ + "Er du sikker på at du vil fjerne dit telefonnummer til gendannelse?" ], "By deleting this address, you will no longer be able to receive daily email notifications.": [ "Ved at slette denne adresse vil du ikke længere kunne modtage daglige e-mailnotifikationer." @@ -25920,8 +27628,8 @@ "By deleting this address, you will no longer be able to recover your account.": [ "Ved at slette denne adresse vil du ikke længere kunne gendanne din konto." ], - "By deleting this phone number, you will no longer be able to recover your account.": [ - "Ved at slette dette telefonnummer vil du ikke længere være i stand til at gendanne din konto." + "By removing this phone number, you will no longer be able to recover your account.": [ + "Ved at fjerne dette telefonnummer vil du ikke længere være i stand til at gendanne din konto." ], "Could not login. Please open ${ PASS_APP_NAME } browser extension and login from there.": [ "Kunne ikke logge ind. Åbn venligst ${ PASS_APP_NAME } browserudvidelsen og log ind derfra." diff --git a/applications/account/locales/de_DE.json b/applications/account/locales/de_DE.json index 02d6465a6e8..3bcbcab4b54 100644 --- a/applications/account/locales/de_DE.json +++ b/applications/account/locales/de_DE.json @@ -90,6 +90,9 @@ "Add": [ "Hinzufügen" ], + "Add ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }": [ + "${ BRAND_NAME } ${ PASS_SHORT_APP_NAME } hinzufügen" + ], "Add ${ BRAND_NAME } Account": [ "${ BRAND_NAME }-Konto hinzufügen" ], @@ -105,6 +108,9 @@ "Add address or domain": [ "Adresse oder Domain hinzufügen" ], + "Add and verify": [ + "Hinzufügen und verifizieren" + ], "Add another account": [ "Weiteres Konto hinzufügen" ], @@ -159,6 +165,9 @@ "Add user": [ "Benutzer hinzuf." ], + "Added ${ memberName } as group owner": [ + "${ memberName } als Gruppeneigentümer hinzufügen" + ], "Align center": [ "Zentrieren" ], @@ -210,6 +219,9 @@ "Back to sign in": [ "Zurück zur Anmeldung" ], + "Back to sign-in": [ + "Zurück zur Anmeldung" + ], "Block": [ "Sperren" ], @@ -261,6 +273,9 @@ "Claim it": [ "Beanspruchen" ], + "Claim offer": [ + "Angebot holen" + ], "Claim this address": [ "Diese Adresse beanspruchen" ], @@ -318,15 +333,15 @@ "Connect Gmail address": [ "Gmail-Adresse verbinden" ], - "Connect to Gmail": [ - "Mit Gmail verbinden" - ], "Connect to video conferencing": [ "Mit Videokonferenzen verbinden" ], "Connect your ${ BRAND_NAME } Account": [ "${ BRAND_NAME }-Konto verbinden" ], + "Connect your email": [ + "Deine E-Mail-Adresse verbinden" + ], "Connected": [ "Verbunden" ], @@ -363,6 +378,9 @@ "Continue with ${ nameToDisplay } ${ maybeEmailInBrackets }": [ "Weiter mit ${ nameToDisplay } ${ maybeEmailInBrackets }" ], + "Continue with Free": [ + "Weiter mit Free" + ], "Continue with Google": [ "Mit Google anmelden" ], @@ -513,9 +531,6 @@ "Delete record": [ "Eintrag löschen" ], - "Delete token ${ token.Account }": [ - "Token \"${ token.Account }\" löschen" - ], "Delete token “${ token.Name }”": [ "Token \"${ token.Name }\" löschen" ], @@ -555,6 +570,9 @@ "Disable categories": [ "Kategorien deaktivieren" ], + "Disable category": [ + "Kategorie deaktivieren" + ], "Disable recovery phrase": [ "Wiederherstellungsphrase deaktivieren" ], @@ -630,6 +648,9 @@ "Download the desktop app": [ "Desktop-App herunterladen" ], + "Download updated file": [ + "Aktualisierte Datei herunterladen" + ], "Edit": [ "Bearbeiten" ], @@ -702,6 +723,9 @@ "Enable ${ darkWebMonitoring }": [ "${ darkWebMonitoring } aktivieren" ], + "Enable category": [ + "Kategorie aktivieren" + ], "enable desktop notifications": [ "Desktop-Benachrichtigungen zu aktivieren" ], @@ -753,6 +777,9 @@ "Filters are being applied. This might take a few minutes.": [ "Die Filter werden angewendet. Dies kann wenige Minuten dauern." ], + "Finish": [ + "Beenden" + ], "Fit to window": [ "An das Fenster anpassen" ], @@ -771,6 +798,12 @@ "Generate key": [ "Schlüssel erzeugen" ], + "Generate missing keys": [ + "Fehlende Schlüssel erzeugen" + ], + "Generate new phrase": [ + "Neue Wiederherstellungsphrase erzeugen" + ], "Generate new recovery phrase": [ "Neue Wiederherstellungsphrase erstellen" ], @@ -1188,6 +1221,9 @@ "Reactivate keys": [ "Schlüssel reaktivieren" ], + "Read the story": [ + "Artikel lesen" + ], "Reconnect": [ "Erneut verbinden" ], @@ -1263,6 +1299,9 @@ "Remove this notification": [ "Diese Benachrichtigung entfernen" ], + "Removed ${ memberName } as group owner": [ + "${ memberName } als Gruppeneigentümer entfernt" + ], "Rename": [ "Umbenennen" ], @@ -1767,6 +1806,9 @@ "View recovery settings": [ "Wiederherstellungseinstellungen anzeigen" ], + "View recovery setup details": [ + "Details zur Wiederherstellungseinrichtung anzeigen" + ], "Void": [ "Ungültig" ], @@ -2040,18 +2082,21 @@ ] }, "Admin roles onboarding": { + "2 new admin roles": [ + "2 neue Administratorenrollen" + ], "3 new admin roles": [ "3 neue Administratorenrollen" ], - "Admin roles": [ - "Administratorrollen" - ], "Configure security policies, data retention, and VPN infrastructure, and manage audit logs.": [ "Sicherheitsrichtlinien, Datenaufbewahrung und die VPN-Infrastruktur konfigurieren sowie die Prüfprotokolle verwalten." ], "Delegate management by assigning specific admin roles. Give each admin only the access they need. This follows the principle of least privilege, protecting your organization from compromised accounts and accidental errors.": [ "Verwaltungsaufgaben mit der Zuweisung bestimmter Administratorenrollen delegieren. Jedem Administrator nur den benötigten Zugriff gewähren. Dies folgt dem Prinzip der geringsten Rechte und schützt deine Organisation vor gehackten Konten und versehentlichen Fehlern." ], + "Delegate management for many users at once. Assign specific admin roles to groups for automatic permissions. This follows the principle of least privilege to save time on onboarding and offboarding while reducing errors.": [ + "Verwalte Benutzer auf einmal. Weise Gruppen bestimmte Administratorrollen zu, um Berechtigungen automatisch zu vergeben. Dies folgt dem Prinzip der geringsten Privilegien, wodurch Zeit beim Onboarding und Offboarding gespart und Fehler reduziert werden." + ], "Delegate management with the appropriate admin role.": [ "Verwaltungsaufgaben mit den geeigneten Administratorenrollen delegieren" ], @@ -2064,21 +2109,15 @@ "New: Control admin access for individual users": [ "Neu: Administrationsrechte für einzelne Benutzer kontrollieren" ], - "Organization admin": [ - "Organisationsadministrator" + "New: Control admin access for many users at once": [ + "Neu: Administratorzugriff für viele Benutzer auf einmal verwalten" ], "Organization admin:": [ "Organisationsadministrator:" ], - "Security admin": [ - "Sicherheitsadministrator" - ], "Security admin:": [ "Sicherheitsadministrator:" ], - "User admin": [ - "Benutzeradministrator" - ], "User admin:": [ "Benutzeradministrator:" ] @@ -2846,15 +2885,18 @@ "${ BRAND_NAME } Migration Assistant": [ "${ BRAND_NAME }-Migrations-Assistent" ], - "Add a custom domain": [ - "Eigene Domain hinzufügen" + "Add a domain": [ + "Eine Domain hinzufügen" ], - "App installed": [ - "App installiert" + "Add users and configure your domain manually for sending and receiving mail. Ideal for small teams starting from a clean slate.": [ + "Benutzer hinzufügen und deine Domain manuell einrichten, um E-Mails zu senden und erhalten. Ideal für kleine Teams, die ganz von vorne anfangen." ], "Authenticate": [ "Authentifizieren" ], + "Authenticate to Google Workspace": [ + "Bei Google Workspace anmelden" + ], "Authenticate your Google Workspace account": [ "Dein Google Workspace-Konto authentifizieren" ], @@ -2864,6 +2906,9 @@ "Change": [ "Ändern" ], + "Choose how you want to bring your team and email setup to ${ BRAND_NAME }.": [ + "Entscheide, wie du dein Team und deine E-Mail-Einstellungen zu ${ BRAND_NAME } übertragen möchtest." + ], "Completed": [ "Abgeschlossen" ], @@ -2876,21 +2921,27 @@ "Contacts": [ "Kontakte" ], + "Continue migration": [ + "Migration fortsetzen" + ], "Domain connected": [ "Domain verbunden" ], - "Domain ownership verified": [ - "Inhaberschaft der Domain bestätigt" - ], "Estimated size": [ "Geschätzte Größe" ], "Failed to load OAuth": [ "OAuth konnte nicht geladen werden" ], + "Finalize your migration": [ + "Deine Migration fertigstellen" + ], "Finish setting up your business account": [ "Da Einrichten deines Geschäftskontos abschließen" ], + "Go to Domain names": [ + "Zu Domain-Namen gehen" + ], "Google Marketplace app to copy data to ${ BRAND_NAME }": [ "Google Marketplace-App zum Kopieren von Daten nach ${ BRAND_NAME }" ], @@ -2906,14 +2957,14 @@ "Install migration app": [ "Übernahme-App installieren" ], - "Learn more about what can be migrated. Learn more": [ - "Erfahre mehr darüber, was übernommen werden kann. Mehr erfahren" + "Install Migration assistant": [ + "Migrations-Assistenten installieren" ], "Mail": [ "E-Mail" ], - "Migrate": [ - "Übernehmen" + "Member address not found. Please contact customer support to resolve this": [ + "E-Mail-Adresse des Mitglieds fehlt. Bitte kontaktiere den Kundensupport, um das zu beheben." ], "Migrate from Google Workspace": [ "Von Google Workspace übernehmen" @@ -2921,6 +2972,9 @@ "Migrate users": [ "Benutzer übernehmen" ], + "Migrate users to ${ BRAND_NAME }": [ + "Benutzer nach ${ BRAND_NAME } migrieren" + ], "Migration includes": [ "Übernahme beinhaltet" ], @@ -2931,8 +2985,14 @@ "Migration status": [ "Migrationsstatus" ], - "Not started": [ - "Nicht gestartet" + "Missing organization private key": [ + "Privater Schlüssel der Organisation fehlt" + ], + "Missing organization public key": [ + "Öffentlicher Schlüssel der Organisation fehlt" + ], + "Move your users, emails, and settings from Google Workspace automatically. We’ll guide you through connecting your account, verifying your domain, and migrating users securely.": [ + "Deine Benutzer, E-Mails und Einstellungen automatisch aus Google Workspace übertragen. Wir führen dich Schritt für Schritt durch das Verbinden deines Kontos, die Verifizierung deiner Domain und die sichere Migration deiner Benutzer." ], "Organization does not have enough seats available": [ "Organisation hat nicht genügend Lizenzen verfügbar" @@ -2940,9 +3000,6 @@ "Organization does not have enough storage available": [ "Die Organisation hat nicht genügend Speicherplatz verfügbar" ], - "Organization settings": [ - "Organisationseinstellungen" - ], "Required": [ "Erforderlich" ], @@ -2952,15 +3009,15 @@ "Select at least one user to start a migration": [ "Wähle mindestens einen Benutzer aus, um eine Migration zu starten" ], - "Select what you want to migrate, this will apply to all users whether they are created now or later. Migration will start after user accounts are created.": [ - "Wähle aus, was du übernehmen möchtest. Dies gilt für alle Benutzer, unabhängig davon, ob sie jetzt oder später erstellt werden. Die Übernahme beginnt, nachdem die Benutzerkonten erstellt wurden." - ], "Set up": [ "Einrichten" ], "Set up billing information": [ "Zahlungsinformationen einrichten" ], + "Set up manually": [ + "Manuell einrichten" + ], "Set up two-factor authentication": [ "Zwei-Faktor-Authentifizierung einrichten" ], @@ -2979,24 +3036,21 @@ "To migrate your organization’s data, you need to install the ${ BRAND_NAME } Migration Assistant app from the Google Workspace Marketplace. This will grant permission to ${ BRAND_NAME } to copy your data. After installing it, come back here to continue.": [ "Um die Daten deiner Organisation zu migrieren, musst du die ${ BRAND_NAME }-Migrations-Assistenten-App aus dem Google Workspace Marketplace installieren. Dadurch erhält ${ BRAND_NAME } die Berechtigung, deine Daten zu kopieren. Komm nach der Installation hierher zurück, um fortzufahren." ], - "Transfer errors": [ - "Übertragungsfehler" - ], "User": [ "Benutzer" ], "Users migrated": [ "Benutzer übernommen" ], + "Verify domain ownership": [ + "Inhaberschaft der Domain verifizieren" + ], "Verify installation": [ "Installation überprüfen" ], "Verify your domain": [ "Deine Domain verifizieren" ], - "Verify your domain ownership": [ - "Verifiziere deinen Inhaberschaft der Domain" - ], "Verify your domain to start a migration": [ "Überprüfe deine Domain, um eine Migration zu starten" ], @@ -3115,9 +3169,18 @@ ] }, "Button": { + "Add users manually": [ + "Benutzer manuell hinzufügen" + ], + "Cancel": [ + "Abbrechen" + ], "Close": [ "Schliessen" ], + "Configure your network": [ + "Dein Netzwerk konfigurieren" + ], "Continue using ${ MAIL_APP_NAME }.": [ "${ MAIL_APP_NAME } weiterhin verwenden." ], @@ -3139,6 +3202,12 @@ "Got it": [ "Verstanden" ], + "Invite your team": [ + "Team einladen" + ], + "Manage global VPN permissions": [ + "Globale VPN-Berechtigungen verwalten" + ], "Maybe later": [ "Vielleicht später" ], @@ -3148,12 +3217,21 @@ "Remind me later": [ "Später erneut fragen" ], + "Secure your organization": [ + "Deine Organisation sichern" + ], "Send": [ "Senden" ], "Set up other features": [ "Andere Funktionen einrichten" ], + "Set up SSO": [ + "SSO einrichten" + ], + "Sign in": [ + "Anmelden" + ], "Take a tour": [ "Rundgang" ] @@ -3749,6 +3827,9 @@ ] }, "Confirm cancellation": { + "Access is restored once usage is back within limits.": [ + "Der Zugriff wird wiederhergestellt, sobald die Nutzung wieder innerhalb der Limiten liegt." + ], "Back up photos from your devices": [ "Sichere Fotos von deinen Geräten" ], @@ -3758,6 +3839,9 @@ "Confirm cancellation": [ "Kündigung bestätigen" ], + "If you exceed free plan limits, you won't be able to:": [ + "Wenn du die Limiten der kostenlosen Abonnements überschreitest, ist Folgendes nicht mehr möglich:" + ], "Keep current plan": [ "Aktuelles Abonnement beibehalten" ], @@ -3772,6 +3856,9 @@ ], "Upload any new files": [ "Neue Dateien hochladen" + ], + "When your subscription ends on ${ endDate }, your account will switch to the Free plan. If your usage exceeds Free plan limits, some features may be temporarily unavailable.": [ + "Wenn dein Abonnement am ${ endDate } ausläuft, wird dein Konto auf das kostenlose Abonnement umgestellt. Sollte deine Nutzung die Grenzen des kostenlosen Abonnements überschreiten, sind einige Funktionen möglicherweise vorübergehend nicht verfügbar." ] }, "Confirm modal title": { @@ -4777,6 +4864,9 @@ "/month": [ "/Monat" ], + "/user /month": [ + "/Benutzer/Monat" + ], "/user per month": [ "/Benutzer pro Monat" ] @@ -4943,6 +5033,9 @@ ] }, "Description": { + "${ BRAND_NAME }'s end-to-end encryption means only you can unlock your data. Set up recovery options now to ensure you never lose access.": [ + "Die Ende-zu-Ende-Verschlüsselung von ${ BRAND_NAME } bedeutet, dass nur du deine Daten entsperren kannst. Richte jetzt Wiederherstellungsoptionen ein, damit du den Zugriff nie verlieren." + ], "${ DOCS_SHORT_APP_NAME } in ${ DRIVE_APP_NAME } allows you to work together with others in a secure, encrypted environment.": [ "${ DOCS_SHORT_APP_NAME } in ${ DRIVE_APP_NAME } ermöglicht es dir, mit anderen in einer sicheren, verschlüsselten Umgebung zusammenzuarbeiten." ], @@ -4952,6 +5045,9 @@ "${ MAIL_APP_NAME } is your default mail application.": [ "${ MAIL_APP_NAME } ist deine Standard-E-Mail-Anwendung." ], + "${ MAIL_APP_NAME } keeps your business data secure and lets you send encrypted emails to anyone.": [ + "${ MAIL_APP_NAME } schützt deine Geschäftsdaten und ermöglicht dir, verschlüsselte E-Mails an jeden zu versenden." + ], "A checked box means the feature is disabled.": [ "Ein angekreuztes Kästchen bedeutet, dass die Funktion deaktiviert ist." ], @@ -4973,14 +5069,20 @@ "Automatically sort your incoming messages before they reach your inbox.": [ "Sortiere deine eingehenden Nachrichten automatisch, bevor sie deinen Posteingang erreichen." ], + "Available storage: ${ storageText }": [ + "Verfügbarer Speicherplatz: ${ storageText }" + ], "Available with ${ title }": [ "Verfügbar mit ${ title }" ], "Block Google's ability to profile you. Gmail can't see what you do in ${ MAIL_APP_NAME }": [ "Verhindere, dass Google ein Profil von dir erstellt. Gmail kann nicht sehen, was du in ${ MAIL_APP_NAME } machst" ], - "Bring over email, calendar events, and contacts from another provider.": [ - "Bringe E-Mail, Kalenderereignisse und Kontakte von einem anderen Anbieter mit." + "Bring over your email, calendar events, and contacts from another provider.": [ + "Bring E-Mail, Kalendertermine und Kontakte von einem anderen Anbieter mit." + ], + "Build trust and brand recognition with professional email addresses at your own domain.": [ + "Schaffe Vertrauen und Wiedererkennungswert für deine Marke mit professionellen E-Mail-Adressen auf deiner eigenen Domain." ], "Configure this first to activate your organization and customize your email address.": [ "Konfiguriere dies zuerst, um deine Organisation zu aktivieren und deine E-Mail-Adresse anzupassen." @@ -4988,6 +5090,9 @@ "Connect your CRM, website, printers, and more.": [ "Verbinde dein CRM, deine Website, Drucker und mehr." ], + "Create a Gateway to give your users access to your IT resources through dedicated servers.": [ + "Ein Gateway erstellen, damit deine Benutzer über dedizierte Server Zugriff auf deine IT-Ressourcen erhalten." + ], "Create a Zoom meeting and add joining details to your event with one click.": [ "Erstelle ein Zoom-Meeting und füge deine Veranstaltung mit einem Klick Details zur Teilnahme hinzu." ], @@ -4997,9 +5102,15 @@ "Create groups you can email with a single address.": [ "Erstelle Gruppen, an die du E-Mails mit einer einzigen Adresse senden kannst." ], + "Create new user accounts or import users with SSO (single sign-on) SCIM provisioning.": [ + "Neue Benutzerkonten erstellen oder Benutzer mit SSO (Single-Sign-on) SCIM-Provisionierung importieren." + ], "Create policies to decide who can connect to shared servers in each country.": [ "Erstelle Richtlinien, um zu entscheiden, wer sich mit gemeinsamen Servern in jedem Land verbinden darf." ], + "Decide which users can connect to each of our 120+ shared server locations.": [ + "Festlegen, welche Benutzer sich mit jedem unserer über 120 gemeinsam genutzten Server-Standorte verbinden können." + ], "Easily access your email and calendar on desktop and mobile.": [ "Greife einfach auf deine E-Mails und deinen Kalender auf dem Desktop und Mobilgerät zu." ], @@ -5024,6 +5135,9 @@ "Encrypting and importing contacts... This may take a few minutes. When the process is completed, you can close this modal.": [ "Kontakte werden verschlüsselt und importiert… Dies kann einige Minuten dauern. Wenn der Vorgang abgeschlossen ist, kannst du diese Meldung schließen." ], + "Enough room for years of emails, attachments and more.": [ + "Für Jahre genügend Platz für E-Mails, Anhänge und mehr." + ], "Ensure secure access to organization data, even if your team is remote or using public WiFi.": [ "Gewährleiste einen sicheren Zugriff auf Organisationsdaten, selbst wenn dein Team von auswärts arbeitet oder öffentliches WLAN nutzt." ], @@ -5048,12 +5162,27 @@ "Help your team securely store passwords to sensitive business and client information.": [ "Hilf deinem Team, Passwörter zu sensiblen Geschäfts- und Kundeninformationen sicher zu speichern." ], + "How our customer support team got our VPN app directly into people's hands.": [ + "Wie unser Kundensupport-Team es geschafft hat, dass unsere VPN-App direkt bei den Nutzern ankam." + ], + "How we fought back when ${ BRAND_NAME } was blocked in an aggressive campaign.": [ + "Wie wir uns gewehrt haben, als ${ BRAND_NAME } im Rahmen einer aggressiven Kampagne blockiert wurde." + ], + "How we supported local activists when privacy and free speech were threatened.": [ + "Wie wir lokale Aktivisten unterstützt haben, als die Privatsphäre und die Redefreiheit bedroht waren." + ], + "If you haven’t already, enable some recovery methods to make sure you never lose access to ${ VPN_APP_NAME }.": [ + "Falls du es noch nicht getan hast, aktiviere einige Wiederherstellungsmethoden, um sicherzustellen, dass du niemals den Zugriff auf ${ VPN_APP_NAME } verlierst." + ], "It looks like the contact list you are importing contains some groups. Please review how these groups should be imported.": [ "Die Kontaktliste, die du importieren möchtest, enthält anscheinend Gruppen. Bitte lege fest, wie diese Gruppen importiert werden sollen." ], "Keep different parts of your life separate and your inbox organized with additional addresses.": [ "Halte die verschiedenen Bereiche deines Lebens getrennt und organisiere deinen Posteingang mit zusätzlichen Adressen." ], + "Keep your team secure on the go with our apps for web, iOS, Android, Windows, Mac, and Linux.": [ + "Sorge unterwegs für die Sicherheit deines Teams, mit unseren Apps für Web, iOS, Android, Windows, Mac und Linux." + ], "Learn more about common problems": [ "Erfahre mehr über häufige Probleme" ], @@ -5075,8 +5204,8 @@ "Read, reply, and stay on top of Gmail from within ${ MAIL_APP_NAME }": [ "Lies, antworte und behalte den Überblick über Gmail innerhalb von ${ MAIL_APP_NAME }" ], - "Send a code to your recovery email or phone": [ - "Sende einen Code an deine Wiederherstellungs-E-Mail-Adresse oder dein Telefon" + "Select which categories you want to add and if you want to receive push notifications for each category.": [ + "Wähle, welche Kategorien du hinzufügen willst, und ob du Push-Benachrichtigungen für jede Kategorie erhalten möchtest." ], "Set up accounts for all users and invite them to join ${ BRAND_NAME }.": [ "Richte Konten für alle Benutzer ein und lade sie ein, ${ BRAND_NAME } beizutreten." @@ -5090,6 +5219,9 @@ "Still need help? Our support team is here for you.": [ "Brauchst du noch Hilfe? Unser Support-Team ist für dich da." ], + "This allows you to regain access to your ${ BRAND_NAME } account but does not recover your encrypted data.": [ + "Auf diese Weise erhältst du wieder Zugriff auf dein ${ BRAND_NAME }-Konto, deine verschlüsselten Daten werden jedoch nicht wiederhergestellt." + ], "This may happen if permissions were removed or your password changed.": [ "Dies kann passieren, wenn Berechtigungen entfernt wurden oder dein Passwort geändert wurde." ], @@ -5118,27 +5250,39 @@ "Track the status and activity of your referrals": [ "Verfolge den Status und die Aktivität deiner Empfehlungen" ], + "Unlock 15 GB of storage for just ${ config.offerPrice }.": [ + "15 GB Speicherplatz für nur ${ config.offerPrice } freischalten." + ], "Upgrade to ${ planName } to connect up to ${ MAX_SYNC_PAID_USER } accounts": [ "Upgrade auf ${ planName }, um bis zu ${ MAX_SYNC_PAID_USER } Konten zu verbinden" ], "Upgrade to get ${ activatePmUser } for a shorter, easy-to-remember email address in addition to your current one.": [ "Upgrade, um ${ activatePmUser } für eine kürzere, leicht zu merkende E-Mail-Adresse zusätzlich zu deiner aktuellen zu erhalten." ], + "Use a recovery method to reset your password": [ + "Verwende eine Wiederherstellungsmethode, um dein Passwort zurückzusetzen" + ], "Use this guide to get your organization promptly benefiting from ${ BRAND_NAME }'s industry-leading encryption and privacy ecosystem.": [ "Nutze diese Anleitung, damit deine Organisation unverzüglich von der branchenführenden Verschlüsselung und dem Privatsphäre-Ökosystem von ${ BRAND_NAME } profitiert." ], "We can't access ${ boldEmails } anymore.": [ "Wir können nicht mehr auf ${ boldEmails } zugreifen." ], + "We will pause imports at 80% storage to reserve space for new messages.": [ + "Wir werden die Importe bei 80 % der Speicherplatzbelegung anhalten, damit genügend Platz für neue Nachrichten bleibt." + ], "We'll bring in your old emails and connect your Gmail to ${ MAIL_APP_NAME } so new messages appear automatically": [ "Wir holen deine alten E-Mails und verbinden dein Gmail mit ${ MAIL_APP_NAME }, damit neue Nachrichten automatisch angezeigt werden" ], - "We've started importing your email from Gmail. We'll let you know when it's done.": [ - "Wir haben mit dem Import deiner E-Mail-Adresse von Gmail begonnen. Wir benachrichtigen dich, wenn der Vorgang abgeschlossen ist." + "We've started importing your emails from Gmail. We'll let you know when it's done.": [ + "Wir haben mit dem Import deiner E-Mails von Gmail begonnen. Wir benachrichtigen dich, wenn der Vorgang abgeschlossen ist." ], "We’re sorry to see you go. If you have a moment, we’d really appreciate hearing why you’d like to cancel. Your feedback helps us make ${ BRAND_NAME } better for everyone.": [ "Wir bedauern, dass du gehst. Wenn du einen Moment Zeit hast, würden wir uns sehr freuen zu erfahren, warum du kündigen möchtest. Dein Feedback hilft uns, ${ BRAND_NAME } für alle besser zu machen." ], + "With new email categories, only important messages land in your primary inbox. Categories work just like spam filters. ${ MAIL_APP_NAME } never reads your emails or shares your data.": [ + "Mit neuen E-Mail-Kategorien landen nur wichtige Nachrichten in deinem Hauptposteingang. Kategorien funktionieren wie Spamfilter. ${ MAIL_APP_NAME } liest weder deine E-Mails, noch werden deine Daten geteilt." + ], "You already have a Gmail address forwarding to ${ MAIL_APP_NAME }. Connect it below to send and receive emails directly from ${ MAIL_APP_NAME }.": [ "Du hast bereits eine Gmail-Adresse, die an ${ MAIL_APP_NAME } weiterleitet. Verbinde sie unten, um E-Mails direkt von ${ MAIL_APP_NAME } zu senden und zu empfangen." ], @@ -5180,6 +5324,12 @@ "You've connected one external account address to ${ MAIL_APP_NAME }.": [ "Du hast eine externe E-Mail-Adresse mit ${ MAIL_APP_NAME } verbunden." ], + "Your free ${ MAIL_APP_NAME } account comes with limited storage so we'll only import ${ newUserStorageText } of your most recent Gmail messages": [ + "Dein kostenloses ${ MAIL_APP_NAME }-Konto enthält begrenzten Speicherplatz, darum können wir nur ${ newUserStorageText } deiner aktuellsten Gmail-Nachrichten importieren." + ], + "Your free ${ MAIL_APP_NAME } account comes with limited storage so we'll only import your most recent Gmail emails.": [ + "Dein kostenloses ${ MAIL_APP_NAME }-Konto enthält begrenzten Speicherplatz, darum können wir nur deine aktuellsten Gmail-Nachrichten importieren." + ], "Your plan supports ${ MAX_SYNC_FREE_USER } Gmail address.": [ "Dein Abonnement unterstützt ${ MAX_SYNC_FREE_USER } Gmail-Adresse.", "Dein Abonnement unterstützt ${ MAX_SYNC_FREE_USER } Gmail-Adressen." @@ -5617,6 +5767,9 @@ "120m": [ "120 Min." ], + "15 minutes": [ + "15 Minuten" + ], "30 minutes": [ "30 Minuten" ], @@ -6239,8 +6392,8 @@ "${ user } will not be able to access your account until the next emergency access.": [ "${ user } wird erst beim nächsten Notfallzugang auf dein Konto zugreifen können." ], - "**${ contact }** is now your recovery contact. They can help you recover your data after a password reset.": [ - "**${ contact }** ist jetzt dein Wiederherstellungskontakt. Er kann dir helfen, deine Daten nach einem Zurücksetzen des Passworts wiederherzustellen." + "**${ contact }** is now your recovery contact. They can help you unlock your data after you reset your password.": [ + "**${ contact }** ist nun dein Wiederherstellungskontakt. Er kann dir dabei helfen, deine Daten nach einer Passwortzurücksetzung zu entsperren." ], "**If they confirm**, click **Approve recovery**. This will unlock their encrypted data.": [ "**Wenn sie bestätigen**, klicke auf **Wiederherstellung genehmigen**. Dies entsperrt deren verschlüsselte Daten." @@ -6272,9 +6425,15 @@ "Add emergency contact": [ "Notfallkontakt hinzufügen" ], + "Add option": [ + "Option hinzufügen" + ], "Add recovery contact": [ "Wiederherstellungskontakt hinzufügen" ], + "Add recovery method": [ + "Wiederherstellungsmethode hinzufügen" + ], "Added on ${ formattedDate }": [ "Hinzugefügt am ${ formattedDate }" ], @@ -6317,6 +6476,9 @@ "Contacts": [ "Kontakte" ], + "Data recovery contacts": [ + "Wiederherstellungskontakt der Daten" + ], "Data successfully recovered. You can now decrypt your existing data and encrypted files.": [ "Daten erfolgreich wiederhergestellt. Du kannst jetzt deine vorhandenen Daten und verschlüsselten Dateien entschlüsseln." ], @@ -6362,6 +6524,9 @@ "Enable auto-renew": [ "Automatische Verlängerung aktivieren" ], + "Enter your extra password": [ + "Dein zusätzliches Passwort eingeben" + ], "For ${ email }": [ "Für ${ email }" ], @@ -6392,12 +6557,6 @@ "Less than a minute left": [ "Noch weniger als eine Minute" ], - "Let ${ user } know it’s really you trying to regain access.": [ - "Lass ${ user } wissen, dass es wirklich du bist, der versucht, den Zugriff wiederherzustellen." - ], - "None": [ - "Keine" - ], "Only ": [ "Nur " ], @@ -6488,14 +6647,11 @@ "Select recovery contact ${ name }": [ "Wiederherstellungskontakt ${ name } auswählen" ], - "Send email request": [ - "E-Mail-Anfrage senden" - ], "Send recovery request": [ "Wiederherstellungsanfrage senden" ], - "Set account recovery": [ - "Konto-Wiederherstellung festlegen" + "Start recovery": [ + "Wiederherstellung starten" ], "Stop being recovery contact": [ "Kein Wiederherstellungskontakt mehr sein" @@ -6518,6 +6674,9 @@ "They may ask to access my account in case of an emergency.": [ "Sie könnten im Notfall den Zugriff auf mein Konto anfragen." ], + "They may ask to access your account in case of an emergency.": [ + "Sie könnten im Notfall den Zugriff auf mein Konto anfragen." + ], "They will receive access automatically in **${ days } day**, on **${ formattedAccessibleAt }**, you can reject their request or give them access immediately at any time.": [ "Sie erhalten automatisch Zugang in **${ days } Tag**, am **${ formattedAccessibleAt }**. Du kannst ihre Anfrage ablehnen oder ihnen jederzeit sofort Zugang gewähren.", "Sie erhalten automatisch Zugriff in **${ days } Tagen**, am **${ formattedAccessibleAt }**. Du kannst ihre Anfrage jederzeit ablehnen oder ihnen sofort Zugriff gewähren." @@ -6534,6 +6693,9 @@ "Time required before automatically granting them access": [ "Benötigte Zeit, bevor du ihnen automatisch Zugriff gewährst" ], + "To add recovery contacts, you must have a recovery email address or phone number.": [ + "Um einen Wiederherstellungskontakt hinzuzufügen, benötigst du eine Wiederherstellungs-E-Mail-Adresse oder -Telefonnummer." + ], "To disable this recovery method, remove all your recovery contacts.": [ "Um diese Wiederherstellungsmethode zu deaktivieren, entferne alle deine Wiederherstellungskontakte." ], @@ -6543,6 +6705,9 @@ "Unable to recover data": [ "Daten können nicht wiederhergestellt werden" ], + "Unlock ${ PASS_APP_NAME }": [ + "${ PASS_APP_NAME } entsperren" + ], "Upgrade": [ "Upgraden" ], @@ -6564,6 +6729,9 @@ "We received a request to unlock the encrypted data of your contact **${ user }**.": [ "Wir haben eine Anfrage erhalten, die verschlüsselten Daten deines Kontakts **${ user }** zu entsperren." ], + "We sent an email request to ${ user }. Let them know it's really you trying to regain access.": [ + "Wir senden eine E-Mail-Anfrage an ${ user }. Lass ihn wissen, dass du es bist, der versucht Zugriff wiederzuerlangen." + ], "We were not able to verify the recovery data. Proceed anyway?": [ "Wir konnten die Wiederherstellungsdaten nicht überprüfen. Trotzdem fortfahren?" ], @@ -7069,9 +7237,6 @@ "Please try again in a few moments.": [ "Bitte versuche es in wenigen Augenblicken erneut." ], - "Please upgrade to a business plan with more than 1 user to get multi-user support": [ - "Bitte upgrade auf ein Business-Abonnement mit mehr als einem Benutzer, um Support für mehrere Benutzer zu erhalten." - ], "Please upgrade to a business plan with more than 1 user to manage multiple users.": [ "Bitte upgrade auf ein Business-Abonnement mit mehr als einem Benutzer, um mehrere Benutzer zu verwalten." ], @@ -7214,6 +7379,9 @@ "There are too many folders in your external account. Please customize the import to delete some folders.": [ "Es gibt zu viele Ordner in deinem externen Konto. Bitte passe den Import an, um einige Ordner zu löschen." ], + "There was an error, please try again.": [ + "Es ist ein Fehler aufgetreten. Bitte versuche es erneut." + ], "This field exceeds the maximum of ${ maximumLength } characters.": [ "Das Feld überschreitet die maximale Länge von ${ maximumLength } Zeichen." ], @@ -7496,6 +7664,9 @@ "Ask your administrator to enable Account monitor.": [ "Bitte deinen Administrator, die Kontoüberwachung zu aktivieren." ], + "Enable account monitor to start loading event.": [ + "Aktiviere die Kontoüberwachung, um das Laden des Aktivitäten zu starten." + ], "Error: ${ errorMessage }": [ "Fehler: ${ errorMessage }" ], @@ -8011,6 +8182,9 @@ "${ PROTON_SENTINEL_NAME } account protection": [ "${ PROTON_SENTINEL_NAME } Kontoschutz" ], + "10+ premium features": [ + "Mehr als 10 Premium-Funktionen" + ], "15 GB storage": [ "15 GB Speicherplatz" ], @@ -8046,6 +8220,12 @@ "Continue": [ "Fortfahren" ], + "Custom email domain": [ + "Eigene E-Mail-Domain" + ], + "Email addresses": [ + "E-Mail-Adressen" + ], "Encrypted cloud storage for files, photos and documents": [ "Verschlüsselter Cloud-Speicher für Dateien, Fotos und Dokumente" ], @@ -8055,12 +8235,18 @@ "More premium features": [ "Weitere Premium-Funktionen" ], + "Premium features in Mail, Calendar, Drive, Pass and VPN": [ + "Premium-Funktionen in Mail, Kalender, Drive, Pass und VPN" + ], "Priority support": [ "Vorrangiger Support" ], "Remove": [ "Entfernen" ], + "Schedule and snooze emails": [ + "Zeitplan und Wiedervorlagefunktion für E-Mails" + ], "Secure Core servers": [ "Secure Core‐Server" ], @@ -8070,6 +8256,9 @@ "Short domain @pm.me": [ "Kurzdomain @pm.me" ], + "Storage": [ + "Speicher" + ], "Torrenting support (P2P)": [ "Torrent-Unterstützung (P2P)" ], @@ -8078,6 +8267,9 @@ ], "Unlimited hide-my-email aliases": [ "Unbegrenzte hide-my-email-Aliasse" + ], + "Use your own email domain": [ + "Nutze deine eigene E-Mail-Domain" ] }, "Features": { @@ -8432,8 +8624,11 @@ ] }, "Force upgrade safety review": { - "I understand that I will no longer be able to sign in to older versions of ${ BRAND_NAME } mobile apps.": [ - "Mir ist klar, dass ich mich auf älteren Versionen der mobilen ${ BRAND_NAME }-Apps nicht mehr anmelden kann." + "I understand that I will no longer be able to sign in to older versions of ${ BRAND_NAME } apps.": [ + "Mir ist klar, dass ich mich auf älteren Versionen von ${ BRAND_NAME }-Apps nicht mehr anmelden kann." + ], + "Learn more": [ + "Mehr erfahren" ] }, "Form heading": { @@ -8534,6 +8729,9 @@ ], "Group address:": [ "E-Mail-Adresse der Gruppe:" + ], + "Roles and permission:": [ + "Rollen und Rechte:" ] }, "Group member count": { @@ -8593,6 +8791,14 @@ "Gruppenmitgliedschaft" ] }, + "group_modal": { + "General": [ + "Allgemein" + ], + "Roles and permissions": [ + "Rollen und Rechte" + ] + }, "Header": { "Access": [ "Zugriff" @@ -9233,6 +9439,15 @@ "${ boldWarning } You will lose access to all current encrypted data in your account if you continue.": [ "${ boldWarning } Wenn du fortfährst, verlierst du den Zugriff auf alle derzeit verschlüsselten Daten in deinem Konto." ], + "${ BRAND_NAME } Business plans gives your team all the collaboration tools they need to be productive and organized in their work, while safeguarding your business.": [ + "${ BRAND_NAME }-Business-Abonnemente bieten deinem Team alle Tools für die Zusammenarbeit, die es benötigt, um produktiv und gut organisiert zu arbeiten, und schützen gleichzeitig dein Unternehmen." + ], + "${ BRAND_NAME } Free": [ + "${ BRAND_NAME } kostenlos" + ], + "${ BRAND_NAME } is independently funded and operates without advertising. Below are examples of how this independence has been used in practice.": [ + "${ BRAND_NAME } ist unabhängig finanziert und arbeitet ohne Werbung. Im Folgenden findest du Beispiele dafür, wie diese Unabhängigkeit in der Praxis zum Tragen kommt." + ], "${ BRAND_NAME } is privacy you can trust, ensured by strong encryption, open-source code, and Swiss privacy laws. We believe nobody should be able to exploit your data, period. Our technology and business are based upon this fundamentally stronger definition of privacy.": [ "${ BRAND_NAME } ist Datenschutz, dem du vertrauen kannst, gewährleistet durch starke Verschlüsselung, quelloffenen Code und Schweizer Datenschutzgesetze. Wir glauben, dass niemand in der Lage sein sollte, deine Daten auszunutzen, Punkt. Unsere Technologie und unser Geschäft basieren auf dieser grundlegend stärkeren Definition von Privatsphäre." ], @@ -9245,6 +9460,9 @@ "${ BRAND_NAME } will send a verification code to ${ phoneNumber }. Standard message rates may apply.": [ "${ BRAND_NAME } sendet einen Bestätigungscode an ${ phoneNumber }. Es können die üblichen Gebühren für Nachrichten anfallen." ], + "${ BRAND_NAME } will send a verification code to your recovery phone. Standard message rates may apply.": [ + "${ BRAND_NAME } sendet einen Bestätigungscode an deine Wiederherstellungs-Telefonnummer. Es können die üblichen Gebühren für Nachrichten anfallen." + ], "${ BRAND_NAME }'s encryption technology means that nobody can access your password - not even us.": [ "${ BRAND_NAME }'s Verschlüsselungstechnologie bedeutet, dass keiner Zugriff auf dein Passwort hat - nicht einmal wir." ], @@ -9333,6 +9551,9 @@ "${ name } for Windows": [ "${ name } für Windows" ], + "${ name } is not available": [ + "${ name } ist nicht verfügbar" + ], "${ none }: do not quarantine or reject unauthorized emails. Usually, people only use this policy to troubleshoot or test.": [ "${ none }: Keine Quarantäne oder Ablehnung nicht autorisierter E-Mails. Normalerweise wird diese Richtlinie nur zum Troubleshooting oder Testen verwendet." ], @@ -9454,6 +9675,9 @@ "${ vaultLink } updated": [ "${ vaultLink } aktualisiert." ], + "${ VPN_SHORT_APP_NAME } hides your traffic. ${ PASS_SHORT_APP_NAME } hides your identity\n— unlimited **hide-my-email aliases** and **dark-web alerts** if your data is ever leaked.": [ + "${ VPN_SHORT_APP_NAME } verbirgt deinen Datenverkehr. ${ PASS_SHORT_APP_NAME } verbirgt deine Identität - unbegrenzte **Hide-my-email Aliase** und **Dark-Web-Warnungen**, falls deine Daten je nach außen gelangen." + ], "${ vpnPlus } required for Country level connection.": [ "${ vpnPlus } ist für die länderbasierte Verbindung notwendig." ], @@ -9491,6 +9715,9 @@ "(formerly Twitter)": [ "(vormals Twitter)" ], + "**${ appName }** is not available for your account.": [ + "**${ appName }** ist für dein Konto nicht verfügbar" + ], "**${ appName }** is not supported in your organization **${ organizationName }**.": [ "**${ appName }** wird in deiner Organisation **${ organizationName }** nicht unterstützt." ], @@ -9601,12 +9828,21 @@ "Activity Monitor": [ "Aktivitätsüberwachung" ], + "Add ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }": [ + "${ BRAND_NAME } ${ PASS_SHORT_APP_NAME } hinzufügen" + ], "Add ${ PLAN_NAMES[PLANS.MEET_BUSINESS] }": [ "${ PLAN_NAMES[PLANS.MEET_BUSINESS] } hinzufügen" ], + "Add 1 to 5 people who you trust and can contact easily. They will be able to reset your password for you by signing in to your account. They must already have a ${ BRAND_NAME } Account.": [ + "Gib 1 bis 5 Personen an, denen du vertraust und die einfach erreichbar sind. Sie können dein Passwort zurücksetzen, indem sie sich bei deinem Konto anmelden. Sie müssen bereits über ein ${ BRAND_NAME }-Konto verfügen." + ], "Add a @pm.me email address to your account. This simple, shorter domain stands for \"${ MAIL_APP_NAME } me\" or \"Private Message me.\"": [ "Füge deinem Konto eine @pm.me-E-Mail-Adresse hinzu. Diese einfache, kürzere Domain steht für „${ MAIL_APP_NAME } me” oder „Private Message me”." ], + "Add a phone number in case we need to contact you": [ + "Gib bitte eine Telefonnummer an, falls wir dich kontaktieren müssen" + ], "add a recovery method": [ "eine Wiederherstellungsmethode hinzufügst" ], @@ -9638,9 +9874,9 @@ "Add your name and logo to create a more personalized experience for your organization.": [ "Füge deinen Namen und dein Logo hinzu, um deiner Organisation eine persönliche Note zu geben." ], - "Adding ${ addedServerCount } gateway server": [ - "${ addedServerCount } Gateway-Server wird hinzugefügt", - "${ addedServerCount } Gateway-Server werden hinzugefügt" + "Adding ${ total } gateway server": [ + "${ total } Gateway-Server wird hinzugefügt", + "${ total } Gateway-Server werden hinzugefügt" ], "Adding an external email address will disable end-to-end encryption for all email communication within that group. Do you want to proceed?": [ "Das Hinzufügen einer externen E-Mail-Adresse wird die Ende-zu-Ende-Verschlüsselung für alle E-Mail-Kommunikation in dieser Gruppe deaktivieren. Möchtest du fortfahren?" @@ -9710,6 +9946,9 @@ "Allow users to connect to secure shared servers from the **Countries** section of the ${ VPN_APP_NAME } app.": [ "Erlaube Benutzern, sich mit sicheren gemeinsamen Servern aus dem Abschnitt **Länder** der ${ VPN_APP_NAME }-App zu verbinden." ], + "Allowing the password reset from the settings lets you to change your password if you’ve lost it, but are still signed in to ${ BRAND_NAME }.": [ + "Wenn du die Passwortzurücksetzung in den Einstellungen aktivierst, kannst du dein Passwort ändern, falls du es vergessen hast, aber noch bei ${ BRAND_NAME } angemeldet bist." + ], "Already allocated": [ "Bereits zugewiesen" ], @@ -9815,6 +10054,9 @@ "Are you sure you want to revoke certificate **${ name }**": [ "Bist du sicher, dass du das Zertifikat **${ name }** widerrufen möchtest?" ], + "Are you sure you want to sign out of this account?": [ + "Bist du dir sicher, dass du dich von diesem Account abmelden möchtest?" + ], "Are you sure you want to sort your folders alphabetically?": [ "Bist du sicher, dass du deine Ordner alphabetisch sortieren möchtest?" ], @@ -9911,9 +10153,18 @@ "Before you can start sending and receiving emails from your new addresses you need to create encryption keys for them.": [ "Bevor du mit dem Senden und Empfangen von Nachrichten von deinen neuen E-Mail-Adressen beginnen kannst, müssen die dazugehörigen Verschlüsselungscodes erstellt werden." ], + "BEST FOR TV": [ + "Am besten für TV" + ], "Beta": [ "Beta" ], + "Billed at ${ monthlyDiscountedPrice } for the first 6 months, renews at ${ monthlyRenewalPrice }.": [ + "In den ersten 6 Monaten kostet das Abonnement ${ monthlyDiscountedPrice }, danach ${ monthlyRenewalPrice }." + ], + "Billed at ${ yearlyDiscountedPrice } for the first 12 months, renews at ${ yearlyRenewalPrice }.": [ + "In den ersten 12 Monaten kostet das Abonnement ${ yearlyDiscountedPrice }, danach ${ yearlyRenewalPrice }." + ], "Billing cycle: ${ text }": [ "Abrechnungszeitraum: ${ text }" ], @@ -9965,9 +10216,6 @@ "Change your password": [ "Passwort ändern" ], - "Check the status of imports and forwarding.": [ - "Sieh dir den Status deiner Imports und Weiterleitungen an." - ], "Check your network and try again.": [ "Überprüfe dein Netzwerk und versuche es erneut." ], @@ -10016,6 +10264,9 @@ "Configure SAML authentication for your organization through an identity provider like Okta, Microsoft Azure, or Google Identity Platform. This will enable SAML for the whole organization.": [ "Konfiguriere die SAML-Authentifizierung für dein Unternehmen über einen Identitätsanbieter wie Okta, Microsoft Azure oder Google Identity Platform. Dadurch wird SAML für die gesamte Organisation aktiviert." ], + "Connect and manage your external mailboxes in ${ MAIL_APP_NAME }.": [ + "Deine externen Postfächer mit ${ MAIL_APP_NAME } verbinden und verwalten" + ], "Connection data will be available in around 1 hour.": [ "Die Verbindungsdaten werden in etwa 1 Stunde verfügbar sein." ], @@ -10034,6 +10285,9 @@ "Continue to connect this entity with your ${ BRAND_NAME } organization.": [ "Verbinde diese Entität weiterhin mit deiner ${ BRAND_NAME }-Organisation." ], + "Continue with ${ BRAND_NAME } Free": [ + "Mit der kostenlosen Version von ${ BRAND_NAME } fortfahren" + ], "Continuing will connect your ${ BRAND_NAME } Account to ${ name }.": [ "Wenn du fortfährst, wird dein ${ BRAND_NAME }-Konto mit ${ name } verbunden." ], @@ -10074,9 +10328,9 @@ "Create a new code on your TV and try again.": [ "Erstelle einen neuen Code auf deinem TV und versuche es erneut." ], - "Create a secure cloud for ${ value } member": [ - "Erstelle eine sichere Cloud für ${ value } Mitglied", - "Erstelle eine sichere Cloud für ${ value } Mitglieder" + "Create a secure cloud for ${ memberCount } member": [ + "Erstelle eine sichere Cloud für ${ memberCount } Mitglied", + "Erstelle eine sichere Cloud für ${ memberCount } Mitglieder" ], "Create an account": [ "Konto erstellen" @@ -10094,6 +10348,10 @@ "Gateway-Server wird erstellt: ${ serverNumber } / ${ total }", "Gateway-Server werden erstellt: ${ serverNumber } / ${ total }" ], + "Creating gateway with ${ total } server": [ + "Gateway mit ${ total } Server wird erstellt", + "Gateway mit ${ total } Servern wird erstellt" + ], "Creating your account": [ "Dein Konto wird erstellt" ], @@ -10142,6 +10400,9 @@ "Data recoverable with recovery phrase": [ "Daten mit Wiederherstellungsphrase wiederherstellbar" ], + "Data recovery requires a password reset option (email or SMS)": [ + "Datenwiederherstellung benötigt eine Option zur Passwortzurücksetzung (E-Mail oder SMS)" + ], "dedicated servers": [ "dedizierte Server" ], @@ -10519,12 +10780,12 @@ "For easy access to your passwords and more.": [ "Für einfachen Zugang zu deinen Passwörtern und mehr." ], + "For just ${ bundlePlanPriceInline }": [ + "Für nur ${ bundlePlanPriceInline }" + ], "For users who are switching to ${ MAIL_APP_NAME } from another email service, select the ${ boldAddresses } tab and add all active email addresses before changing the MX record to ensure a smooth transition.": [ "Für Benutzer, die von einem anderen E-Mail-Anbieter zu ${ MAIL_APP_NAME } wechseln, wähle den Tab ${ boldAddresses } aus und füge alle aktiven E-Mail-Adressen hinzu, bevor du den MX-Eintrag änderst, damit ein reibungsloser Übergang gewährleistet ist." ], - "Forwarding automatically sends new incoming emails to your Inbox.": [ - "Die automatische Weiterleitung sendet neu eingehende E-Mails automatisch an deinen Posteingang." - ], "Free forever": [ "Für immer kostenlos" ], @@ -10573,12 +10834,18 @@ "Get notified if your password or other personal data was leaked. ${ learnMoreLinkNoBreach }": [ "Lass dich benachrichtigen, wenn dein Passwort oder andere persönliche Daten bekannt geworden sind. ${ learnMoreLinkNoBreach }" ], + "Get started": [ + "Erste Schritte" + ], "Get started with the referral link above.": [ "Leg los mit dem Empfehlungslink oben." ], "Get visibility into account access": [ "Einblick in den Kontozugriff" ], + "Get VPN Plus": [ + "VPN Plus holen" + ], "Give the token a descriptive name, such as the service you plan to use it with, and select one of your active custom domain addresses. Only this address will be able to send emails with this token.": [ "Gib dem Token einen beschreibenden Namen, z. B. den Dienst, für den du es verwenden möchtest und wähle eine deiner aktiven eigenen Domain-Adressen. Nur diese Adresse ist in der Lage, E-Mails mit diesem Token zu senden." ], @@ -10636,6 +10903,9 @@ "If another administrator changed this password, you will need to ask them for the new Organization Password.": [ "Wenn ein anderer Administrator dieses Passwort geändert hat, musst du ihn um das neue Organisationspasswort bitten." ], + "If disabled, ${ BRAND_NAME } will still use your recovery email to send security notifications.": [ + "Auch wenn diese Option deaktiviert ist, verwendet ${ BRAND_NAME } weiterhin deine Wiederherstellungs-E-Mail-Adresse, um Sicherheitsbenachrichtigungen zu versenden." + ], "If disabled, only administrators will be able to export data.": [ "Wenn diese Option deaktiviert ist, können nur Administratoren Daten exportieren." ], @@ -10714,6 +10984,9 @@ "If you purchased a gift code or received one from our support team, you can enter it here.": [ "Wenn du einen Geschenkgutschein gekauft oder von unserem Support-Team erhalten hast, kannst du ihn hier eingeben." ], + "If you recently reset your password, you can ${ recoveryMethodLink } to unlock your data. If this is due to an old password reset, you can stop the message from showing again.": [ + "Wenn du dein Passwort kürzlich zurückgesetzt hast, kannst du über ${ recoveryMethodLink } deine Daten entsperren. Falls dies auf eine frühere Passwortzurücksetzung zurückzuführen ist, kannst du verhindern, dass diese Meldung erneut angezeigt wird." + ], "If you recently reset your password, you can use a data recovery method to unlock your data": [ "Falls du kürzlich dein Passwort zurückgesetzt hast, kannst du deine Daten mit einer Datenwiederherstellungsmethode wiederherstellen" ], @@ -10776,6 +11049,9 @@ "Include device, location, and IP details": [ "Geräte-, Standort- und IP-Details einschließen" ], + "Included": [ + "Enthalten" + ], "Increase your account security by verifying your email address.": [ "Erhöhe die Sicherheit deines Kontos, indem du deine E-Mail-Adresse verifizierst" ], @@ -11116,15 +11392,15 @@ "No card required": [ "Keine Karte erforderlich" ], + "No connected addresses.": [ + "Keine verbundenen E-Mail-Adressen" + ], "No countries enabled": [ "Keine Länder aktiviert" ], "No folder selected": [ "Kein Ordner ausgewählt" ], - "No forwarding history.": [ - "Kein Weiterleitungsverlauf." - ], "No gateways": [ "Keine Gateways" ], @@ -11188,6 +11464,9 @@ "Only change these settings if you are using PGP with non-${ BRAND_NAME } recipients.": [ "Ändere diese Einstellungen nur, wenn du PGP mit Nicht-${ BRAND_NAME }-Empfängern verwendest." ], + "Only sign in on devices you trust": [ + "Melde dich nur auf Geräten an, denen du vertraust" + ], "Only you can see the label": [ "Nur du kannst die Kategorie sehen" ], @@ -11453,9 +11732,18 @@ "Recently used servers:": [ "Zuletzt genutzte Server:" ], + "RECOMMENDED": [ + "EMPFOHLEN" + ], "Recommended on trusted devices. ${ keepMeSignedInLearnMoreLink }": [ "Auf vertrauenswürdigen Geräten empfohlen. ${ keepMeSignedInLearnMoreLink }" ], + "Recovery by email is not available while ${ PROTON_SENTINEL_NAME } is enabled.": [ + "Die Wiederherstellung per E-Mail ist nicht verfügbar, solange ${ PROTON_SENTINEL_NAME } aktiviert ist." + ], + "Recovery by phone is not available while ${ PROTON_SENTINEL_NAME } is enabled.": [ + "Die Wiederherstellung per Telefon ist nicht verfügbar, solange ${ PROTON_SENTINEL_NAME } aktiviert ist." + ], "Recovery file downloaded": [ "Wiederherstellungsdatei wurde heruntergeladen" ], @@ -11609,6 +11897,9 @@ "Set up your organization": [ "Organisation einrichten" ], + "Set up your organization and start protecting your data in a few easy steps.": [ + "Deine Organisation einrichten und beginnen, deine Daten in ein paar einfachen Schritten zu schützen." + ], "Setting successfully saved": [ "Einstellungen erfolgreich gespeichert" ], @@ -11646,6 +11937,12 @@ "Show each sender's image in the message list. The sender's initials will be shown if a photo is not available.": [ "Zeigt das Bild eines jeden Absenders in der Nachrichtenliste an. Wenn kein Foto vorhanden ist, werden die Initialen des Absenders angezeigt." ], + "Show fewer benefits": [ + "Weniger Vorteile anzeigen" + ], + "Show more benefits": [ + "Mehr Vorteile anzeigen" + ], "Show original message": [ "Originalnachricht anzeigen" ], @@ -11691,9 +11988,6 @@ "Something went wrong. Please try again or contact customer support.": [ "Etwas ist schiefgelaufen. Bitte versuche es erneut oder kontaktiere den Kundensupport." ], - "Something went wrong. Please try again.": [ - "Etwas ist schiefgegangen. Bitte versuche es erneut." - ], "Specify the domain which is allowed to authenticate with SAML SSO.": [ "Gib die Domain an, die sich mit SAML SSO authentifizieren darf." ], @@ -11783,6 +12077,9 @@ "TechRadar Pro recommended with a rating of 4.2 out of 5 stars": [ "Empfohlen von TechRadar Pro mit einer Bewertung von 4,2 von 5 Sternen" ], + "Temporarily unavailable due to high demand. Please try again later.": [ + "Vorübergehend wegen hoher Nachfrage nicht verfügbar. Bitte versuche es später nochmals." + ], "Temporarily unavailable. Please check back later.": [ "Vorübergehend nicht verfügbar. Bitte schaue später wieder vorbei." ], @@ -11915,6 +12212,9 @@ "This could take some time. Please do not close this page or disconnect from the internet.": [ "Dies kann einige Zeit dauern. Bitte schließe diese Seite nicht und trenne die Verbindung zum Internet nicht." ], + "This data recovery method requires a password reset option (email or SMS)": [ + "Diese Datenwiederherstellungsmethode benötigt eine Option zur Passwortzurücksetzung (E-Mail oder SMS)" + ], "This feature delays sending your emails, giving you the opportunity to undo send during the selected time frame.": [ "Diese Funktion verzögert den Versand deiner E-Mails und gibt dir die Möglichkeit, den Versand während des gewählten Zeitfensters zu widerrufen." ], @@ -11975,6 +12275,9 @@ "This verification can take up to one hour. After successful verification, do not remove the TXT record as it is needed to confirm that you continue to own the domain.": [ "Diese Verifizierung kann bis zu einer Stunde dauern. Entferne keinesfalls diesen TXT-Eintrag nach der erfolgreichen Verifizierung. Dieser Eintrag wird dazu benötigt, zu bestätigen, dass du weiterhin der Eigentümer der Domain bist." ], + "This will allow the TV to access your ${ BRAND_NAME } account.": [ + "Dadurch kann der Fernseher auf dein ${ BRAND_NAME }-Konto zugreifen." + ], "This will delete all previous versions of your files older than ${ rententionLabel }.": [ "Dadurch werden alle früheren Versionen deiner Dateien gelöscht, die älter als ${ rententionLabel } sind." ], @@ -12068,15 +12371,15 @@ "To decrypt and view your locked data after a password reset, select a recovery method.": [ "Wähle eine Wiederherstellungsmethode aus, um deine gesperrten Daten nach dem Zurücksetzen des Passworts zu entschlüsseln und anzuzeigen." ], + "To enable post-quantum protection, you’ll need to finish generating your new post-quantum encryption keys.": [ + "Um den Post-Quantum-Schutz zu aktivieren, musst du die Generierung deiner neuen Post-Quantum-Verschlüsselungsschlüssel abschließen." + ], "To ensure you don’t lose important data, ${ DRIVE_APP_NAME } saves older versions of your files as you and your collaborators make changes. Select how long ${ BRAND_NAME } should keep previous versions.": [ "Um sicherzustellen, dass du keine wichtigen Daten verlierst, speichert ${ DRIVE_APP_NAME } ältere Versionen deiner Dateien, wenn du \nund deine Mitbearbeiter Änderungen vornehmen. Wähle, wie lange ${ BRAND_NAME } frühere Versionen speichern soll." ], "To fight spam and abuse, please verify you are human.": [ "Bitte beweise, dass du ein Mensch bist, um Spam und Missbrauch zu vermeiden." ], - "To help keep your account safe, we want to make sure it's really you trying to sign in.": [ - "Um dein Konto sicher zu halten, möchten wir sicherstellen, dass du es wirklich bist, der sich anmeldet." - ], "To help keep your account safe, we want to make sure it’s really you trying to sign in.": [ "Um dein Konto sicher zu halten, möchten wir sicherstellen, dass du es wirklich bist, der sich anmeldet." ], @@ -12170,6 +12473,9 @@ "Unless you sign out of your account or change your password, your session will remain active. Sessions expire after 60 days of inactivity.": [ "Solange du dich nicht von deinem Konto abmeldest oder dein Passwort änderst, bleibt deine Sitzung aktiv. Sitzungen laufen nach 60 Tagen Inaktivität aus." ], + "Unlock streaming with VPN Plus.": [ + "Streaming mit VPN Plus freischalten." + ], "Unsaved changes": [ "Ungespeicherte Änderungen" ], @@ -12185,9 +12491,15 @@ "Unverified email address.": [ "Unbestätigte E-Mail-Adresse" ], + "Upgrade anytime to bring over the rest": [ + "Jederzeit upgraden, um den Rest zu übertragen" + ], "Upgrade now to get premium features, products and storage at a special price": [ "Jetzt upgraden um Premium-Funktionen, Produkte und Speicherplatz zu einem Sonderpreis zu erhalten." ], + "Upgrade or clear space anytime to bring over the rest": [ + "Jederzeit upgraden oder Speicherplatz freigeben, um den Rest zu übertragen" + ], "Upgrade to add a shorter @pm.me address to your account that is easier to share. It stands for “${ MAIL_APP_NAME } me” or “Private Message me”.": [ "Führe ein Upgrade durch, um deinem Konto kürzere @pm.me-Adressen hinzuzufügen, die einfacher zu teilen sind. Das steht für „${ MAIL_APP_NAME } me“ oder „Private Message me“." ], @@ -12317,6 +12629,9 @@ "Visa Secure logo": [ "Visa Secure Logo" ], + "VPN Plus": [ + "VPN Plus" + ], "VPN with dedicated servers and IP addresses": [ "VPN mit eigenen Servern und IP-Adressen" ], @@ -12377,6 +12692,9 @@ "We stored a backup file in this browser because you allowed data recovery on this ${ deviceLink }. If the backup file is valid, you will immediately regain complete or partial access to your encrypted data.": [ "Wir haben eine Sicherungsdatei in diesem Browser gespeichert, da du die Datenwiederherstellung auf diesem ${ deviceLink } zugelassen hast. Wenn die Sicherungsdatei gültig ist, erhältst du sofort vollständigen oder teilweisen Zugriff auf deine verschlüsselten Daten." ], + "We strongly recommend that everyone enable recovery by recovery phrase.": [ + "Wir empfehlen dringend, dass jeder die Wiederherstellung per Wiederherstellungsphrase aktiviert." + ], "We use 3-D Secure to protect your payments": [ "Wir verwenden 3-D Secure zum Schutz deiner Zahlungen" ], @@ -12561,9 +12879,6 @@ "You can edit this once to ensure the correct email address for verification.": [ "Du kannst dies einmal bearbeiten, um sicherzustellen, dass die richtige E-Mail-Adresse für die Verifizierung verwendet wird." ], - "You can enable the Photos section from the interface using the toggle below.": [ - "Du kannst den Bereich Fotos über das Interface aktivieren, indem du den Schalter unten betätigst." - ], "You can enforce the password rules members of your organization will use when they create or reset the password to their ${ BRAND_NAME } Account.": [ "Du kannst die Passwortregeln erzwingen, die Mitglieder deiner Organisation verwenden, wenn sie das Passwort für ihr ${ BRAND_NAME }-Konto erstellen oder zurücksetzen." ], @@ -12624,6 +12939,9 @@ "You don't have any referrals.": [ "Du hast keine Empfehlungen." ], + "You don’t need to open or read the file—just download it and store it somewhere safe.": [ + "Du musst die Datei weder öffnen noch lesen – lade sie einfach herunter und speichere sie an einem sicheren Ort." + ], "You get notified if your password or other data was leaked from a third-party service.": [ "Du wirst benachrichtigt, wenn dein Passwort oder andere Daten vom Dienst eines Drittanbieters preisgegeben wurden." ], @@ -12763,6 +13081,9 @@ "Your ${ plan } subscription will be replaced with ${ PASS_SHORT_APP_NAME } Lifetime. The remaining balance of your subscription will be added to your account. ${ PASS_SHORT_APP_NAME } lifetime deal has no renewal price, it's a one-time payment for lifetime access to ${ PASS_SHORT_APP_NAME }.": [ "Dein ${ plan }-Abonnement wird durch ${ PASS_SHORT_APP_NAME } Lifetime ersetzt. Der verbleibende Restbetrag deines Abonnements wird deinem Konto gutgeschrieben. Der ${ PASS_SHORT_APP_NAME } Lifetime Deal hat keine Verlängerungskosten, es handelt sich um eine einmalige Zahlung für lebenslangen Zugang zu ${ PASS_SHORT_APP_NAME }." ], + "Your ${ planDisplayName } plan doesn’t just keep your business data and communications safe. It supports your compliance objectives, makes your business stand out, and keeps your team connected.": [ + "Dein ${ planDisplayName }-Abonnement sorgt nicht nur für die Sicherheit deiner Geschäftsdaten und deiner Kommunikation. Er unterstützt dich bei der Einhaltung deiner Konformitätsziele, hebt dein Unternehmen von der Masse ab und hält dein Team in Verbindung." + ], "Your ${ VPN_APP_NAME } and ${ MAIL_APP_NAME } accounts are linked. To delete them both, please sign in at ${ loginLink } and delete your account there.": [ "Deine ${ VPN_APP_NAME } und ${ MAIL_APP_NAME } Konten sind miteinander verknüpft. Um beide zu löschen, melde dich bitte unter ${ loginLink } an und lösche dort dein Konto." ], @@ -13446,6 +13767,12 @@ "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME } Desktop app": [ "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME } Desktop-App" ], + "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME } desktop app": [ + "${ BRAND_NAME }${ MAIL_SHORT_APP_NAME } Desktop-App" + ], + "${ BRAND_NAME } for Business": [ + "${ BRAND_NAME } für Unternehmen" + ], "${ BRAND_NAME } username": [ "${ BRAND_NAME }-Benutzername" ], @@ -13477,9 +13804,15 @@ "${ pricePerMonthWithCurrency } / month": [ "${ pricePerMonthWithCurrency } / Monat" ], + "${ PROTON_SENTINEL_NAME } account protection": [ + "${ PROTON_SENTINEL_NAME } Kontoschutz" + ], "${ PROTON_SENTINEL_NAME } protection": [ "${ PROTON_SENTINEL_NAME } Schutz" ], + "${ value.length }/${ maxLength } characters": [ + "${ value.length }/${ maxLength } Zeichen" + ], "(Temporarily unavailable. Please check back later.)": [ "(Vorübergehend nicht verfügbar. Bitte schaue später wieder vorbei.)" ], @@ -13759,6 +14092,9 @@ "Bookings, billings, and orders": [ "Buchungen, Abrechnungen und Bestellungen" ], + "Brand your workspace": [ + "Deinen Arbeitsplatz nach deinem Geschmack gestalten" + ], "Browser": [ "Browser" ], @@ -13792,6 +14128,9 @@ "Cash": [ "Bar" ], + "Catch-all email address": [ + "Catch-all-E-Mail-Adresse" + ], "Categories": [ "Kategorien" ], @@ -13927,9 +14266,19 @@ "Current email": [ "Aktuelle E-Mail-Adresse" ], + "Custom domain": [ + "Eigene Domain" + ], + "Custom email domain": [ + "Eigene E-Mail-Domain", + "Eigene E-Mail-Domains" + ], "Daily email notifications": [ "Tägliche E-Mail-Benachrichtigungen" ], + "Data harvesting": [ + "Datenerhebung" + ], "Date": [ "Datum" ], @@ -14017,6 +14366,9 @@ "e.g. example.com": [ "z. B. beispiel.de" ], + "Early access": [ + "Frühzeitiger Zugang" + ], "Email": [ "E-Mail-Adresse" ], @@ -14032,6 +14384,9 @@ "Email or username": [ "E‐Mail‐Adresse oder Benutzername" ], + "Email with @yourcompany.com domain": [ + "E-Mail-Adresse mit einer @yourcompany.com Domain" + ], "Emails (all messages)": [ "E-Mails (alle Nachrichten)" ], @@ -14050,6 +14405,9 @@ "Enable ${ DARK_WEB_MONITORING_NAME } for ${ domain.DomainName }": [ "${ DARK_WEB_MONITORING_NAME } für ${ domain.DomainName } aktivieren" ], + "Enable categories": [ + "Kategorien aktivieren" + ], "Enabled": [ "Aktiviert" ], @@ -14452,6 +14810,9 @@ "Online privacy for your whole family": [ "Online-Privatsphäre für deine ganze Familie" ], + "Online productivity suite": [ + "Online-Produktivitätspaket" + ], "Only a single personal vault can be created": [ "Es kann nur ein persönlicher Tresor erstellt werden" ], @@ -14521,6 +14882,9 @@ "Pending": [ "Ausstehend" ], + "Personal and work emails, plus important updates and notifications": [ + "Private und berufliche E-Mails sowie wichtige Updates und Benachrichtigungen" + ], "Phone number": [ "Telefonnummer" ], @@ -14554,6 +14918,9 @@ "Postal code": [ "Postleitzahl" ], + "Premium features included": [ + "Premium-Funktionen inbegriffen" + ], "Previous password": [ "Bisheriges Passwort" ], @@ -14650,6 +15017,9 @@ "Secure password generator": [ "Sicherer Passwort-Generator" ], + "See your team's availability": [ + "Verfügbarkeit des Teams anzeigen" + ], "Select Linux package format": [ "Linux-Paketformat auswählen" ], @@ -14963,12 +15333,18 @@ "Yearly": [ "Jährlich" ], + "Yearly free storage bonus": [ + "Jährlicher Bonus für kostenlosen Speicherplatz" + ], "Yes": [ "Ja" ], "Yes, I want to permanently delete this account and all its data.": [ "Ja, ich möchte dieses Konto und alle enthaltenen Daten endgültig und unwiderruflich löschen." ], + "You don't have permissions": [ + "Du hast keine Berechtigung" + ], "Your activation code:": [ "Dein Aktivierungscode:" ], @@ -14990,12 +15366,18 @@ "Your plan": [ "Dein Abonnement" ], + "Your recovery email": [ + "Deine Wiederherstellungs-E-Mail-Adresse" + ], "Your recovery phone number": [ "Deine Wiederherstellungs-Telefonnummer" ], "Your voucher for your reserved ${ BRAND_NAME } email address:": [ "Dein Gutschein für deine reservierte ${ BRAND_NAME }-E-Mail-Adresse:" ], + "Zero-access architecture": [ + "Zero-Access-Architektur" + ], "ZIP code": [ "Postleitzahl" ] @@ -15742,21 +16124,45 @@ "Built-in chat": [ "Eingebauter Chat" ], + "Cloud storage and file sharing": [ + "Cloud-Speicher und Dateifreigabe" + ], + "Data retention policies": [ + "Aufbewahrungsrichtlinien für Daten" + ], + "Document and spreadsheet editor": [ + "Dokumenten- und Tabellenkalkulationseditor" + ], + "Email writing assistant": [ + "E-Mail-Schreibassistent" + ], "End-to-end encrypted screen sharing and ephemeral in-call chat": [ "Ende-zu-Ende-verschlüsselte Bildschirmfreigabe und temporärer Chat während des Anrufs" ], "Hosts can record meetings locally on their computers": [ "Organisatoren können Besprechungen lokal auf ihren Computern aufzeichnen" ], + "Includes Meet Professional": [ + "Beinhaltet Meet Professional" + ], "Meeting recording": [ "Meeting wird aufgezeichnet" ], "One active meeting at a time": [ "Ein aktives Meeting gleichzeitig" ], + "Password manager with team vaults": [ + "Passwort-Manager mit Team-Tresoren" + ], + "Private AI Chat (${ LUMO_SHORT_APP_NAME })": [ + "Privater KI-Chat (${ LUMO_SHORT_APP_NAME })" + ], "Screen-sharing": [ "Bildschirmfreigabe" ], + "Secure mail and calendar": [ + "Sichere E-Mail und Kalender" + ], "Unlimited meetings per day": [ "Unbegrenzte Meetings pro Tag" ], @@ -15771,6 +16177,9 @@ "Video meetings, ${ n } participant": [ "Video-Meetings, ${ n } Teilnehmer", "Video-Meetings, ${ n } Teilnehmer" + ], + "VPN with ad-blocker and malware protection": [ + "VPN mit Werbeblocker und Malware-Schutz" ] }, "meet_2025: Info": { @@ -16440,6 +16849,9 @@ "99.95% SLA": [ "Dienstleistungsvereinbarung über 99,95 % Verfügbarkeit" ], + "Access all countries": [ + "Zugriff auf alle Länder" + ], "Activity logs and policy": [ "Aktivitätsprotokolle und Richtlinie" ], @@ -16461,6 +16873,9 @@ "Advanced network security": [ "Fortgeschrittene Netzwerksicherheit" ], + "Advanced workspace security": [ + "Erweiterte Arbeitsplatzsicherheit" + ], "All ${ BRAND_NAME } products and features": [ "Alle ${ BRAND_NAME } Produkte und Funktionen" ], @@ -16619,6 +17034,9 @@ "Multiple admin roles": [ "Mehrere Administratorrollen" ], + "No streaming support": [ + "Keine Unterstützung für Streaming" + ], "No-logs policy": [ "No-Logs-Richtlinie" ], @@ -16785,6 +17203,9 @@ "Unlimited volume/bandwidth": [ "Volumen/Bandbreite unbegrenzt" ], + "Unlock streaming": [ + "Streaming entsperren" + ], "Up to ${ n } user": [ "Bis zu ${ n } Benutzer", "Bis zu ${ n } Benutzer" @@ -17259,6 +17680,10 @@ ] }, "new_plans: Upsell attribute": { + "${ n } country": [ + "${ n } Land", + "${ n } Länder" + ], "Access advanced VPN features": [ "Profitiere von erweiterten VPN-Funktionen" ], @@ -17320,8 +17745,8 @@ "${ app } product updates": [ "${ app }-Produktaktualisierungen" ], - "${ BRAND_NAME } for Business newsletter": [ - "${ BRAND_NAME } for Business-Newsletter" + "${ BRAND_NAME } for Business communications": [ + "${ BRAND_NAME } für die Geschäftskommunikation" ], "${ BRAND_NAME } important announcements": [ "Wichtige Ankündigungen von ${ BRAND_NAME }" @@ -17374,8 +17799,8 @@ "During your first month of using a ${ BRAND_NAME } product": [ "Während des ersten Monats, in dem das Produkt ${ BRAND_NAME } verwendet wird" ], - "Email subscriptions": [ - "E‐Mail‐Abonnements" + "Email communications": [ + "E-Mail-Kommunikation" ], "In-app notifications": [ "Benachrichtigungen in der App" @@ -17966,6 +18391,9 @@ "Plain text": [ "Klartext" ], + "Push notifications": [ + "Push-Benachrichtigungen" + ], "Receive from all": [ "Von allen empfangen" ], @@ -18184,6 +18612,11 @@ "PKGBUILD (für andere Distributionen)" ] }, + "Paragraph": { + "${ BRAND_NAME } is independently funded and operates without advertising. Below are examples of how this independence has been used in practice.": [ + "${ BRAND_NAME } ist unabhängig finanziert und arbeitet ohne Werbung. Im Folgenden findest du Beispiele, wie diese Unabhängigkeit in der Praxis zum Tragen kommt." + ] + }, "Participant name": { "You": [ "Du" @@ -18457,15 +18890,9 @@ "per month, billed every two years": [ "pro Monat, Abrechnung alle zwei Jahre" ], - "Preparing your Recovery Kit": [ - "Dein Wiederherstellungskit wird vorbereitet" - ], "Protected by Swiss privacy laws": [ "Geschützt durch Schweizer Datenschutzgesetze" ], - "Save your recovery kit to continue": [ - "Lade dein Wiederherstellungs-Kit herunter, um fortzufahren." - ], "Secure vault sharing": [ "Sicheres Teilen von Tresoren" ], @@ -19333,18 +19760,18 @@ ] }, "PQC account key generation": { - "Couldn’t generate keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\n${ settingsLink } and select 'Generate key' for your account and for each address.": [ - "Deine Schlüssel konnten nicht generiert werden. Um den Post-Quantum-Schutz zu aktivieren, musst du deine neuen Verschlüsselungsschlüssel manuell generieren.\n\n${ settingsLink } und wähle \"Schlüssel generieren\" für dein Konto und für jede Adresse aus." + "Couldn’t generate keys. To activate post-quantum protection, you’ll need to finish generating your new post-quantum encryption keys.\n\n${ goToSettingsLink } and select 'Generate missing keys'.": [ + "Die Schlüssel konnten nicht erzeugt werden. Um den Post-Quantum-Schutz zu aktivieren, musst du die Generierung deiner neuen Post-Quantum-Verschlüsselungsschlüssel abschließen.\n\nGehe zu ${ goToSettingsLink } und wähle „Fehlende Schlüssel erzeugen“." ] }, "PQC adress key generation": { - "Couldn’t generate address keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\nGo to ${ settingsLink } and select 'Generate key' for each address.": [ - "Deine Adressschlüssel konnten nicht generiert werden. Um den Post-Quantum-Schutz zu aktivieren, musst du deine neuen Verschlüsselungsschlüssel manuell generieren.\n\nGehe zu ${ settingsLink } und wähle \"Schlüssel generieren\" für jede Adresse aus." + "Couldn’t generate address keys. To activate post-quantum protection, you’ll need to finish generating your new post-quantum encryption keys for each address.\n\n${ goToSettingsLink } and select 'Generate missing keys'.": [ + "Die Adressschlüssel konnten nicht erzeugt werden. Um den Post-Quantum-Schutz zu aktivieren, musst du die Generierung deiner neuen Post-Quantum-Verschlüsselungsschlüssel für jede Adresse abschließen.\n\nGehe zu ${ goToSettingsLink } und wähle „Fehlende Schlüssel erzeugen“." ] }, "PQC compatibility warning": { - "**You must update all ${ BRAND_NAME } mobile apps**: your new keys won't work on older app versions.": [ - "**Du musst alle mobilen ${ BRAND_NAME }-Apps aktualisieren**: Deine neuen Schlüssel funktionieren nicht auf älteren App-Versionen." + "**You must update all ${ BRAND_NAME } apps**: your new keys won't work on older app versions.": [ + "**Du musst alle ${ BRAND_NAME }-Apps aktualisieren**: Deine neuen Schlüssel funktionieren nicht auf älteren App-Versionen." ] }, "PQC key generation": { @@ -19657,12 +20084,30 @@ "${ score } / ${ maxScore } completed": [ "${ score }/${ maxScore } abgeschlossen" ], + "Account protection": [ + "Kontoschutz" + ], + "Add more options for stronger protection": [ + "Weitere Optionen für einen besseren Schutz hinzufügen" + ], + "Add more options to avoid getting locked out of your account.": [ + "Füge weitere Optionen hinzu, um zu vermeiden, dass du aus deinem Konto ausgesperrt wirst." + ], + "How you increased your account protection": [ + "So hast du den Schutz deines Kontos erhöht" + ], + "Inactive recovery options": [ + "Inaktive Wiederherstellungsoption" + ], "Maximum": [ "Maximum" ], "Partial": [ "Teilweise" ], + "Score: ${ score } / ${ maxScore }": [ + "Bewertung: ${ score } / ${ maxScore }" + ], "Strong": [ "Stark" ], @@ -19680,17 +20125,26 @@ "Add recovery contacts": [ "Wiederherstellungskontakte hinzufügen" ], + "Add recovery email": [ + "Wiederherstellungs-E-Mail hinzufügen" + ], + "Add recovery phone": [ + "Wiederherstellungs-Telefonnummer hinzufügen" + ], "Allow scanning QR code to sign in": [ "Erlaube, dich mit dem Scannen eines QR-Codes anzumelden" ], + "Data recovery allowed on this device": [ + "Datenwiederherstellung auf diesem Gerät möglich" + ], "Download recovery file": [ "Wiederherstellungsdatei herunterladen" ], "Emergency contacts added": [ "Notfallkontakte hinzugefügt" ], - "Enable recovery by email": [ - "Wiederherstellung per E-Mail aktivieren" + "Enable recovery by phone": [ + "Wiederherstellung per Telefon aktivieren" ], "Password verified": [ "Passwort verifiziert" @@ -19700,6 +20154,24 @@ ], "Recovery file downloaded": [ "Wiederherstellungsdatei heruntergeladen" + ], + "Recovery phrase saved": [ + "Wiederherstellungsphrase gespeichert" + ], + "Save recovery phrase": [ + "Wiederherstellungsphrase speichern" + ], + "Sign-in with QR code allowed": [ + "QR-Code-Anmeldung möglich" + ], + "Verify password": [ + "Passwort bestätigen" + ], + "Verify recovery email": [ + "Wiederherstellungs-E-Mail-Adresse verifizieren" + ], + "Verify recovery phone": [ + "Wiederherstellungs-Telefonnummer verifizieren" ] }, "RecoveryPhrase: Action": { @@ -19734,15 +20206,9 @@ ], "Or ${ downloadRecoveryKitSwitchButton } instead.": [ "Oder stattdessen ${ downloadRecoveryKitSwitchButton }." - ], - "Your **Recovery Kit** lets you restore your ${ BRAND_NAME } Account if you’re locked out.": [ - "Dein **Wiederherstellungsset** lässt dich dein ${ BRAND_NAME }-Konto wiederherstellen, wenn du ausgesperrt bist." ] }, "RecoveryPhrase: Title": { - "Save your Recovery Kit": [ - "Dein Wiederherstellungsset speichern" - ], "Save your recovery phrase": [ "Deine Wiederherstellungsphrase speichern" ] @@ -20135,9 +20601,6 @@ "Back to Safety Review": [ "Zurück zur Sicherheitsüberprüfung" ], - "Because you reset your password, your current Recovery Kit can only be used to recover the data created before your password reset.": [ - "Da du dein Passwort zurückgesetzt hast, kann dein aktuelles Wiederherstellungskit nur zur Wiederherstellung der Daten verwendet werden, die vor dem Zurücksetzen des Passworts erstellt wurden." - ], "Can be used to regain access to your account and data": [ "Kann verwendet werden, um den Zugang zu deinem Konto und deinen Daten wiederherzustellen." ], @@ -20165,9 +20628,6 @@ "Download ${ size }": [ "${ size } herunterladen" ], - "Download your Recovery Kit": [ - "Dein Wiederherstellungskit herunterladen" - ], "Email address": [ "E-Mail-Adresse" ], @@ -20180,18 +20640,12 @@ "Enable recovery by phone": [ "Aktiviere die Wiederherstellung per Telefon" ], - "I understand that I will not be able to recover currently locked data with this Recovery Kit": [ - "Ich verstehe, dass ich mit diesem Wiederherstellungskit keine aktuell gesperrten Daten wiederherstellen kann." - ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in on this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Wenn du dein ${ BRAND_NAME }-Passwort vergessen hast und es zurücksetzen musst, wird bei der nächsten Anmeldung auf diesem Gerät mit deinem neuen Passwort der volle Zugriff auf dein ${ BRAND_NAME }-Konto wiederhergestellt." ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Wenn du dein ${ BRAND_NAME }-Passwort vergessen hast und es zurücksetzen musst, wird bei der nächsten Anmeldung auf diesem Gerät mit deinem neuen Passwort der volle Zugriff auf dein ${ BRAND_NAME }-Konto wiederhergestellt." ], - "If you get locked out of your ${ BRAND_NAME } Account, your Recovery Kit will allow you to sign in and recover your data.": [ - "Wenn du aus deinem ${ BRAND_NAME }-Konto ausgesperrt wirst, kannst du dich mit deinem Wiederherstellungs-Kit anmelden und deine Daten wiederherstellen." - ], "If you lose your login details and need to reset your account, **it’s imperative** that you have both an **account recovery and data recovery method** in place, otherwise you might not be able to access any of your emails, contacts, files or passwords.": [ "Wenn du deine Anmeldedaten verlierst und dein Konto zurücksetzen musst, **ist es unerlässlich**, dass du eine **Methode zur Wiederherstellung des Kontos und der Daten** festgelegt hast, da du sonst möglicherweise nicht mehr auf deine E-Mails, Kontakte, Dateien oder Passwörter zugreifen kannst." ], @@ -20234,9 +20688,6 @@ "Take action to secure your account": [ "Ergreife Maßnahmen zur Absicherung deines Kontos" ], - "There was an error generating your Recovery Kit": [ - "Fehler beim Generieren deines Wiederherstellungskits." - ], "There was an error verifying your email": [ "Fehler beim Verifizieren deiner E-Mail-Adresse." ], @@ -20264,12 +20715,6 @@ "to recover your account if you're ever locked out": [ ", um dein Konto wiederherzustellen, falls du jemals ausgesperrt wirst." ], - "Update your Recovery Kit": [ - "Aktualisiere dein Wiederherstellungskit" - ], - "Update your Recovery Kit?": [ - "Dein Wiederherstellungskit aktualisieren?" - ], "Verify": [ "Verifizieren" ], @@ -20285,9 +20730,6 @@ "Verify your recovery phone number": [ "Verifiziere deine Wiederherstellungs-Telefonnummer" ], - "We encountered an error while generating your Recovery Kit. Please try again later, or contact support if the issue continues.": [ - "Bei der Erstellung deines Wiederherstellungskits ist ein Fehler aufgetreten. Bitte versuche es später noch einmal, oder wende dich an den Support, wenn das Problem weiterhin besteht." - ], "We encountered an error while verifying your email. Please try again later, or contact support if the issue continues.": [ "Bei der Verifizierung deiner E-Mail-Adresse ist ein Fehler aufgetreten. Bitte versuche es später noch einmal oder kontaktiere den Support, wenn das Problem weiterhin besteht." ], @@ -20309,9 +20751,6 @@ "You can disable this at any time.": [ "Du kannst dies jederzeit deaktivieren." ], - "You can use the recovery phrase in this Recovery Kit to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ - "Du kannst die Wiederherstellungsphrase in diesem Wiederherstellungskit verwenden, um dein Konto vollständig wiederherzustellen, wenn du dein Passwort zurücksetzst." - ], "You can use your email to regain access to your account if you forget your password.": [ "Du kannst deine E-Mail verwenden, um wieder Zugang zu deinem Konto zu erhalten, wenn du dein Passwort vergessen hast." ], @@ -20321,9 +20760,6 @@ "You can use your recovery phone to regain access to your account if you forget your password.": [ "Du kannst dein Mobiltelefon für die Wiederherstellung benutzen, um den Zugang zu deinem Konto wiederzuerlangen, wenn du dein Passwort vergisst." ], - "You have previously downloaded a Recovery Kit. Downloading a new one will **deactivate the old one**.": [ - "Du hast bereits ein Wiederherstellungskit heruntergeladen. Wenn du ein neues herunterlädst, wird das alte Kit **deaktiviert**." - ], "You have recommended actions to safeguard your account further.": [ "Es gibt empfohlene Maßnahmen, um dein Konto weiter zu schützen." ], @@ -20387,12 +20823,6 @@ "Your recovery email is set": [ "Deine Wiederherstellungs-E-Mail-Adresse ist festgelegt." ], - "Your Recovery Kit": [ - "Dein Wiederherstellungskit" - ], - "Your Recovery Kit is set": [ - "Dein Wiederherstellungskit ist festgelegt" - ], "Your recovery methods": [ "Deine Wiederherstellungsmethoden" ], @@ -20415,6 +20845,17 @@ "Deine Wiederherstellungs-Telefonnummer ist:" ] }, + "safety_review": { + "Add an emergency contact": [ + "Notfallkontakt hinzufügen" + ], + "Add people who you trust and can contact easily. Your emergency contact will be able to access your account and reset your password for you if needed.": [ + "Personen hinzufügen, denen du vertraust und die du leicht erreichen kannst. Dein Notfallkontakt kann bei Bedarf auf dein Konto zugreifen und dein Passwort für dich zurücksetzen." + ], + "They will not be able to see or access your data.": [ + "Sie können deine Daten weder einsehen noch darauf zugreifen." + ] + }, "saml: Action": { "Cancel": [ "Abbrechen" @@ -20618,6 +21059,14 @@ "Keine Ergebnisse gefunden" ] }, + "Sentinel banner": { + "To ensure the highest possible security of your account, disable recovery via email and SMS.": [ + "Um die größtmögliche Sicherheit deines Kontos sicherzustellen, deaktiviere die Wiederherstellung über E-Mail und SMS." + ], + "To make sure that you can always access your ${ BRAND_NAME } Account, download your recovery phrase.": [ + "Um sicher zu sein, dass du immer Zugriff auf dein ${ BRAND_NAME }-Konto hast, lade deine Wiederherstellungsphrase herunter." + ] + }, "Server-Info": { "active": [ "aktiv" @@ -20889,6 +21338,9 @@ ] }, "session_recovery:settings:info": { + "To disallow password reset from settings, you must save your recovery phrase.": [ + "Um die Passwortzurücksetzung in den Einstellungen zu deaktivieren, musst du deine Wiederherstellungsphrase sichern." + ], "To disallow password reset, you must have a recovery method set up.": [ "Um das Zurücksetzen des Passworts zu verbieten, musst du eine Wiederherstellungsmethode einrichten." ], @@ -20946,11 +21398,8 @@ ] }, "Setting": { - "Enable Photos section": [ - "Bereich „Fotos“ aktivieren" - ], "Get updates about comments via email": [ - "Erhalte Benachrichtigungen über Kommentare via E-Mail." + "E-Mail-Benachrichtigungen über Kommentare erhalten" ], "Include document name in email notifications": [ "Dokumentnamen in E-Mail-Benachrichtigungen einbeziehen" @@ -20965,6 +21414,9 @@ "Account": [ "Konto" ], + "Managed Companies": [ + "Verwaltete Unternehmen" + ], "Organization": [ "Organisation" ] @@ -21818,11 +22270,35 @@ ] }, "Spotlight": { + "Assign delegated roles": [ + "Delegierte Rollen zuweisen" + ], + "Assign roles": [ + "Rollen zuweisen" + ], + "Click a user's name to manage their role and permissions.": [ + "Klicke einen Benutzernamen um dessen Rolle und Berechtigungen zu verwalten." + ], + "Click Edit to assign roles to this group and manage member access automatically.": [ + "Klicke auf „Bearbeiten“, um dieser Gruppe Rollen zuzuweisen und den Zugriff der Mitglieder automatisch zu verwalten." + ], "Earn up to ${ maxRewardAmount } in credit": [ "Verdiene bis zu ${ maxRewardAmount } als Guthaben" ], "Get credits when the person you invite subscribes to a ${ BRAND_NAME } plan.": [ "Du erhältst Guthaben, wenn die von dir eingeladene Person ein ${ BRAND_NAME } Abonnement abschließt." + ], + "New: Roles and permissions tab": [ + "Neu: Registerkarte „Rollen und Berechtigungen“" + ], + "Open this tab to grant specific permissions without full admin access.": [ + "Öffne diese Registerkarte, um bestimmte Berechtigungen ohne vollständige Administratorrechte zu erteilen." + ], + "User roles available": [ + "Benutzerrollen verfügbar" + ], + "You can now assign roles to individual users from this tab.": [ + "Über diese Registerkarte kannst du nun einzelnen Benutzern Rollen zuweisen." ] }, "sso": { @@ -22117,18 +22593,42 @@ "${ count } Person", "${ count } Personen" ], - "No contact": [ - "Kein Kontakt" + "Add a phone number": [ + "Telefonnnummer hinzufügen" + ], + "Add an email address": [ + "E-Mail-Adresse hinzufügen" + ], + "Disable recovery by email": [ + "Wiederherstellung per E-Mail deaktivieren" + ], + "Last changed ${ formattedDate }": [ + "Zuletzt geändert am ${ formattedDate }" + ], + "Last updated ${ formattedUpdateDate }": [ + "Letzte Aktualisierung ${ formattedUpdateDate }" ], "Not saved": [ "Nicht gespeichert" ], + "Off": [ + "Aus" + ], + "On": [ + "Ein" + ], "Outdated": [ "Abgelaufen" ], "Saved": [ "Gespeichert" ], + "Unverified": [ + "Unbestätigt" + ], + "Verified": [ + "Überprüft" + ], "Verify ${ value }": [ "${ value } verifizieren" ] @@ -22817,14 +23317,62 @@ ] }, "Subtitle": { + "${ DRIVE_PLUS_NAME } offers 1 TB storage for your files and photos. You are also eligible for yearly storage bonuses.": [ + "${ DRIVE_PLUS_NAME } bietet 1 TB Speicherplatz für deine Dateien und Fotos. Außerdem hast du Anspruch auf jährliche Speicherplatzboni." + ], + "${ DRIVE_PLUS_NAME } offers 200 GB storage for your files and photos. You are also eligible for yearly storage bonuses.": [ + "${ DRIVE_PLUS_NAME } bietet 200 GB Speicherplatz für deine Dateien und Fotos. Außerdem hast du Anspruch auf jährliche Speicherplatzboni." + ], + "${ planTitle } gives you access to all apps and premium features. Privacy is built-in so you can get on with it, knowing your data and identity are safe.": [ + "Mit ${ planTitle } hast du Zugriff auf alle Apps und Premium-Funktionen. Der Datenschutz ist bereits integriert, sodass du in dem Wissen, dass deine Daten und deine Identität sicher sind, einfach loslegen kannst." + ], + "${ planTitle } gives you all apps, all features, early access to new releases, and everything you need to be in control of your data and its security.": [ + "Mit ${ planTitle } erhältst du alle Apps, alle Funktionen, frühzeitigen Zugang auf neue Versionen und alles, was du brauchst, um die Kontrolle über deine Daten und deren Sicherheit zu behalten." + ], + "${ planTitle } gives you unlimited privacy and more storage for up to 2 people.": [ + "${ planTitle } bietet dir unbegrenzte Privatsphäre und mehr Speicherplatz für bis zu 2 Personen." + ], + "${ planTitle } gives your team all the collaboration tools they need to be productive and organized in their work, while safeguarding your business.": [ + "${ planTitle } bietet deinem Team alle Tools für die Zusammenarbeit, die es benötigt, um produktiv und gut organisiert zu arbeiten, und schützt gleichzeitig dein Unternehmen." + ], + "${ planTitle } gives your team what they need to be more productive and organized in their work with access to all ${ BRAND_NAME } apps and their advanced features.": [ + "${ planTitle } bietet deinem Team alles, was es braucht, um produktiver und besser organisiert zu arbeiten – mit Zugriff auf alle ${ BRAND_NAME }-Apps und deren erweiterte Funktionen." + ], + "${ planTitle } gives your team what they need to be more productive, organized, and in control of their inbox, schedule, and more.": [ + "${ planTitle } bietet deinem Team alles, was es braucht, um produktiver und besser organisiert zu sein und den Überblick über den Posteingang, den Terminkalender und vieles mehr zu behalten." + ], + "${ planTitle } goes beyond the basics to help you be more productive, organized, and in control of your inbox, email identity, and more.": [ + "${ planTitle } geht über die Grundlagen hinaus und hilft dir, produktiver und besser organisiert zu sein und deinen Posteingang, deine E-Mail-Identität und vieles mehr besser im Griff zu haben." + ], + "${ planTitle } helps you ensure that each of your family members — and their data — are protected whenever they’re online.": [ + "${ planTitle } hilft dir, sicherzustellen, dass alle deine Familienmitglieder und deren Daten geschützt sind, wann immer sie online sind." + ], + "Compare the key differences that matter for your business.": [ + "Vergleiche die wichtigsten Unterschiede, die für dein Unternehmen von Bedeutung sind." + ], "Free forever": [ "Dauerhaft kostenlos" ], "per month, billed annually": [ "pro Monat, jährliche Abrechnung" ], + "Save 50% for 1 year, and keep full access": [ + "Spare 1 Jahr lang 50 % und behalte den vollen Zugriff" + ], + "Save 50% for 6 months, and keep full access": [ + "Spare 6 Monate lang 50 % und behalte den vollen Zugriff" + ], + "See how ${ MAIL_APP_NAME } compares, and why our independence makes a difference.": [ + "Erfahre, wie ${ MAIL_APP_NAME } im Vergleich abschneidet, und warum unsere Unabhängigkeit den Unterschied ausmacht." + ], "View VPN session details for your organization.": [ "Zeig die Details der VPN-Sitzung für deine Organisation an." + ], + "With managed companies, you can add, edit, and remove access for organizations you oversee.": [ + "Bei verwalteten Unternehmen kannst du Zugriffsrechte für die von dir betreuten Organisationen hinzufügen, bearbeiten und entfernen." + ], + "Your total monthly cost for all managed companies.": [ + "Deine monatlichen Gesamtkosten für alle verwalteten Unternehmen." ] }, "Success": { @@ -22954,9 +23502,6 @@ "Organization logo updated": [ "Organisationslogo aktualisiert" ], - "Organization name set": [ - "Name der Organisation festgelegt" - ], "Organization name updated": [ "Organisationsname aktualisiert" ], @@ -23178,6 +23723,14 @@ "Sichere deine Dateien mit verschlüsseltem Cloud-Speicher. Beinhaltet Versionsverlauf, verschlüsselte Dateifreigabe und mehr." ] }, + "Tab": { + "For personal use": [ + "Für die private Nutzung" + ], + "For professional use": [ + "Für die berufliche Nutzung" + ] + }, "Tab in domain modal": { "Addresses": [ "Adressen" @@ -23453,6 +24006,9 @@ "Actions": [ "Aktionen" ], + "Activate multi-user support": [ + "Unterstützung für mehrere Benutzer aktivieren" + ], "Activate organization key": [ "Organisationsschlüssel aktivieren" ], @@ -23469,12 +24025,21 @@ "Add a custom logo": [ "Benutzerdefiniertes Logo hinzufügen" ], + "Add a recovery contact": [ + "Wiederherstellungskontakt hinzufügen" + ], "Add address": [ "E-Mail-Adr. hinzufügen" ], + "Add an emergency contact": [ + "Notfallkontakt hinzufügen" + ], "Add another notification to remind you of this event": [ "Weitere Benachrichtigung hinzufügen, um dich an diesen Termin zu erinnern" ], + "Add categories": [ + "Kategorien hinzufügen" + ], "Add contact group name": [ "Name der Kontaktgruppe hinzufügen" ], @@ -23553,9 +24118,6 @@ "An address for each role": [ "Eine Adresse für jede Rolle" ], - "An error occurred": [ - "Ein Fehler ist aufgetreten" - ], "Annual": [ "Jährlich" ], @@ -23649,6 +24211,9 @@ "Catch-all address": [ "Catch-all-Weiterleitungsadresse" ], + "Categories": [ + "Kategorien" + ], "Change login password": [ "Anmeldepasswort ändern" ], @@ -23694,6 +24259,9 @@ "Collaborate on documents": [ "Gemeinsam an Dokumenten arbeiten" ], + "Companies": [ + "Unternehmen" + ], "Compare plans": [ "Abonnemente vergleichen" ], @@ -23703,18 +24271,12 @@ "Confirm": [ "Bestätigen" ], - "Confirm address": [ - "Adresse bestätigen" - ], "Confirm downgrade": [ "Zurückstufen bestätigen" ], "Confirm loss of ${ BRAND_NAME } bonuses": [ "Den Verlust der ${ BRAND_NAME }-Boni bestätigen" ], - "Confirm phone number": [ - "Telefonnummer bestätigen" - ], "Connect ${ name }": [ "Verbinde ${ name }" ], @@ -23739,12 +24301,18 @@ "Connect your custom domain": [ "Verbinde deine eigene Domain" ], + "Connected emails": [ + "Verbundene E-Mail-Adressen" + ], "Connection status": [ "Verbindungsstatus" ], "Contact us": [ "Kontaktiere uns" ], + "Continue with free storage": [ + "Mit dem kostenlosen Speicherplatz fortfahren" + ], "Continue with partial import?": [ "Mit Teilimport fortfahren?" ], @@ -23851,6 +24419,9 @@ "Data recovery": [ "Datenwiederherstellung" ], + "Data recovery contacts": [ + "Wiederherstellungskontakt der Daten" + ], "Data retention": [ "Aufbewahrung von Daten" ], @@ -23930,6 +24501,9 @@ "Device": [ "Gerät" ], + "Device data backup": [ + "Sicherung der Gerätedaten" + ], "Device name": [ "Gerätename" ], @@ -23939,6 +24513,9 @@ "Disable categories?": [ "Kategorien deaktivieren?" ], + "Disable device data backup?": [ + "Sicherung der Gerätedaten deaktivieren?" + ], "Disable two-factor authentication": [ "Zwei-Faktor-Authentifizierung deaktivieren" ], @@ -23954,6 +24531,9 @@ "Disconnected from Gmail": [ "Von Gmail getrennt" ], + "Dismiss setup checklist": [ + "Einrichtungs-Checkliste verwerfen" + ], "Display name and signature": [ "Anzeigename und Signatur" ], @@ -24068,6 +24648,9 @@ "Email privacy": [ "E-Mail-Datenschutz" ], + "Email verification": [ + "E-Mail-Bestätigung" + ], "Emergency access": [ "Notfallzugriff" ], @@ -24126,6 +24709,9 @@ "Feature access": [ "Funktionszugriff" ], + "Fewer distractions, more focus": [ + "Weniger Ablenkungen, mehr Fokus" + ], "Filter for more focus": [ "Filter für mehr Fokus" ], @@ -24156,9 +24742,6 @@ "Forward emails": [ "E-Mails weiterleiten" ], - "Forwardings": [ - "Weiterleitungen" - ], "Free": [ "Kostenlos" ], @@ -24195,6 +24778,9 @@ "Get ${ planMaxSpace } storage for your files, photos and documents with ${ planName }. ${ upgradeButton }": [ "${ planMaxSpace } Speicher für deine Dateien, Fotos und Dokumente mit ${ planName } erhalten. ${ upgradeButton }" ], + "Get ${ VPN_APP_NAME } on your TV": [ + "${ VPN_APP_NAME } auf dein TV holen" + ], "Get ${ vpnPlus } to access all servers": [ "Hol dir ${ vpnPlus }, um Zugriff auf alle Server zu erhalten" ], @@ -24225,6 +24811,12 @@ "Get more from your VPN": [ "Hole mehr aus deinem VPN heraus" ], + "Get more storage with ${ MAIL_APP_NAME } Plus": [ + "Mehr Speicherplatz mit ${ MAIL_APP_NAME } Plus erhalten" + ], + "Get started": [ + "Erste Schritte" + ], "Get the app on all your devices and enjoy safe, seamless access anywhere.": [ "Hol dir die App auf all deine Geräte und genieße überall sicheren, nahtlosen Zugriff." ], @@ -24255,9 +24847,15 @@ "Help center": [ "Hilfezentrum" ], + "Helping activists in Hong Kong": [ + "Hilfe für Aktivisten in Hongkong" + ], "Home": [ "Startseite" ], + "How ${ MAIL_APP_NAME } is different": [ + "Wie sich ${ MAIL_APP_NAME } unterscheidet" + ], "How did you find out about us?": [ "Wie bist du auf uns aufmerksam geworden?" ], @@ -24370,9 +24968,15 @@ "Link confirmation": [ "Linkbestätigung" ], + "Lower your cost without losing features": [ + "Ohne Funktionsverlust deine Kosten reduzieren" + ], "Main password": [ "Primäres Passwort" ], + "Make your business stand out": [ + "Dein Unternehmen hervorheben" + ], "Manage files across devices on Windows, Mac, Android, and iOS.": [ "Dateien geräteübergreifend auf Windows, Mac, Android und iOS verwalten." ], @@ -24394,6 +24998,9 @@ "Monthly": [ "Monatlich" ], + "Monthly Costs": [ + "Monatliche Kosten" + ], "Multi-user support": [ "Mehrbenutzerunterstützung" ], @@ -24427,6 +25034,9 @@ "No events": [ "Keine Ereignisse" ], + "No events yet": [ + "Noch keine Aktivitäten" + ], "No need to empty the trash": [ "Kein Ausleeren des Papierkorbs notwendig" ], @@ -24523,9 +25133,6 @@ "Phone": [ "Telefon" ], - "Photos": [ - "Fotos" - ], "Pin the extension": [ "Erweiterung anheften" ], @@ -24607,9 +25214,15 @@ "Remove domain": [ "Domain entfernen" ], + "Remove email": [ + "E-Mail-Adresse entfernen" + ], "Remove forwarding address": [ "Weiterleitungsadresse entfernen" ], + "Remove recovery phone number": [ + "Wiederherstellungs-Telefonnummer entfernen" + ], "Remove server?": [ "Server entfernen?" ], @@ -24781,6 +25394,9 @@ "Sign in on TV": [ "Auf dem TV anmelden" ], + "Sign in on TV?": [ + "Auf dem TV anmelden?" + ], "Sign in to join the Beta program": [ "Melde dich an, um am Beta-Programm teilzunehmen." ], @@ -24814,6 +25430,9 @@ "Snooze:": [ "Aufgeschoben:" ], + "Something went wrong": [ + "Etwas ist schiefgelaufen" + ], "Sort folders alphabetically": [ "Ordner alphabetisch sortieren" ], @@ -24841,6 +25460,9 @@ "Status": [ "Status" ], + "Stay secure and connected anywhere": [ + "Bleibe überall sicher und verbunden" + ], "Strengthen your security on all your devices with ${ passPlusPlanName }. ${ upgradeButton }": [ "Deine Sicherheit auf all deinen Geräten mit ${ passPlusPlanName } stärken. ${ upgradeButton }" ], @@ -24863,6 +25485,9 @@ "Support ticket closed": [ "Support-Ticket geschlossen" ], + "Support your compliance objectives": [ + "Deine Konformitäts-Ziele unterstützen" + ], "Switch account": [ "Konto wechseln" ], @@ -24932,6 +25557,9 @@ "Type": [ "Typ" ], + "Unblocking internet access in Iran": [ + "Entsperren des Internetzugangs im Iran" + ], "Unlock your data": [ "Entsperre deine Daten" ], @@ -25001,6 +25629,9 @@ "Verify it’s you": [ "Überprüfe, ob du es bist" ], + "Verify your email": [ + "Bestätige deine E-Mail" + ], "Verifying your card...": [ "Deine Karte wird verifiziert..." ], @@ -25088,6 +25719,12 @@ "Your plan": [ "Dein Abonnement" ], + "Your recovery file": [ + "Deine Wiederherstellungsdatei" + ], + "Your recovery setup": [ + "Deine Wiederherstellungseinstellungen" + ], "Your referrals": [ "Deine Empfehlungen" ], @@ -25220,6 +25857,15 @@ "Admins can manage user accounts and give admin privileges to other users. Only the primary admin can edit the plan of the organization.": [ "Admins können Benutzerkonten verwalten und anderen Benutzern Administratorrechte erteilen. Nur der Hauptadministrator kann das Abonnement der Organisation bearbeiten." ], + "Allow recovering your account with a one-time code sent to your recovery email": [ + "Ermögliche die Wiederherstellung deines Kontos mithilfe eines Einmalcodes, der an deine Wiederherstellungs-E-Mail-Adresse gesendet wird" + ], + "Allow scanning a QR code from a ${ BRAND_NAME } mobile app to sign in": [ + "Ermögliche das Scannen eines QR-Codes über eine mobile ${ BRAND_NAME }-App, um sich anzumelden" + ], + "Allow trusted contacts to unlock your encrypted data after a password reset": [ + "Erlaube vertrauenswürdigen Kontakten, deine verschlüsselten Daten nach einer Passwortwiederherstellung zu entsperren" + ], "Allows to seamlessly add Zoom video conferencing links to your calendar invitations.": [ "Ermöglicht das nahtlose Hinzufügen von Links zu Zoom-Videokonferenzen zu Ihren Kalendereinladungen." ], @@ -25256,6 +25902,9 @@ "Each imported email will have this label": [ "Alle importierten Nachrichten werden dieser Kategorie zugeordnet" ], + "Early access to new apps and features.": [ + "Früher Zugang zu neuen Anwendungen und Funktionen." + ], "Edit folder names": [ "Ordnername bearbeiten" ], @@ -25304,6 +25953,12 @@ "If you purchased a gift code or received one from our support team, you can enter it here.": [ "Wenn du einen Geschenkgutschein erworben oder von unserem Support-Team erhalten hast, kannst du ihn hier eingeben." ], + "Includes custom email domains and unlimited hide-my-email aliases in ${ MAIL_APP_NAME }, access to servers in 120+ countries in ${ VPN_SHORT_APP_NAME }, built-in 2FA and secure sharing in ${ PASS_SHORT_APP_NAME }, and more.": [ + "Beinhaltet benutzerdefinierte E-Mail-Domains und unbegrenzte Hide-my-email-Aliase in ${ MAIL_APP_NAME }, Zugriff auf Server in über 120 Ländern in ${ VPN_SHORT_APP_NAME }, integrierte Zwei-Faktor-Authentifizierung und sicheres Teilen in ${ PASS_SHORT_APP_NAME } und vieles mehr." + ], + "Includes professional email at @yourdomain.com, cloud storage with collaborative document editing, scheduling and video conferencing, password management, a secure ${ VPN_SHORT_APP_NAME }, and more.": [ + "Beinhaltet professionelle E-Mail-Adressen unter @yourdomain.com, Cloud-Speicher mit Funktionen zur gemeinsamen Dokumentbearbeitung, Terminplanung und Videokonferenzen, Passwortverwaltung, ein sicheres ${ VPN_SHORT_APP_NAME } und vieles mehr." + ], "Members who do not use 2FA will get an email asking them to enable it as soon as possible. Single sign-on users will not receive the email reminder.": [ "Mitglieder, die keine 2FA verwenden, erhalten eine E-Mail, in der sie aufgefordert werden, diese so bald wie möglich zu aktivieren. Single Sign-On-Benutzer, erhalten diese Aufforderung nicht." ], @@ -25325,6 +25980,12 @@ "Remove metadata from images to protect your privacy.": [ "Metadaten aus Bildern entfernen, um deine Privatsphäre zu schützen." ], + "Save an encryption backup file in this browser to recover your data after a password reset": [ + "Speichere eine Verschlüsselung-Backup-Datei in diesem Browser, um deine Daten nach einem Zurücksetzen des Passworts wiederherzustellen" + ], + "Save an encryption backup file to recover your data after a password reset": [ + "Speichere eine Verschlüsselungs-Backup-Datei, um deine Daten nach einem Zurücksetzen des Passworts wiederherzustellen" + ], "See number of unread messages in the tab icon": [ "Anzahl ungelesener Nachrichten im Tab-Symbol anzeigen" ], @@ -25397,8 +26058,8 @@ "This feature is only available on Beta": [ "Diese Funktion ist nur in der Beta-Version verfügbar." ], - "This is the default key used by other ${ MAIL_APP_NAME } users on older mobile apps to encrypt data they send to you": [ - "Dies ist der Standard-Schlüssel, der von anderen ${ MAIL_APP_NAME }-Benutzern in älteren Mobile-Apps verwendet wird, um Daten zu verschlüsseln, die sie dir senden." + "This is the default key used by other ${ MAIL_APP_NAME } users on older apps to encrypt data they send to you": [ + "Dies ist der Standard-Schlüssel, der von anderen ${ MAIL_APP_NAME }-Benutzern in älteren Apps verwendet wird, um Daten zu verschlüsseln, die sie dir senden." ], "This is the default key used by other ${ MAIL_APP_NAME } users to encrypt data they send to you": [ "Dies ist der Standardschlüssel, der von anderen ${ MAIL_APP_NAME }-Benutzern verwendet wird, um Daten zu verschlüsseln, die sie dir senden." @@ -25486,6 +26147,9 @@ "User is a group": [ "Benutzer ist eine Gruppe" ], + "via ${ groupName }": [ + "über ${ groupName }" + ], "Waiting for user to accept the invitation": [ "Warten auf die Annahme der Einladung durch den Benutzer" ] @@ -25809,6 +26473,12 @@ ] }, "user_modal": { + "(via ${ groupName })": [ + "(über ${ groupName })" + ], + "(via group)": [ + "(über Gruppe)" + ], "Add delegated roles to a user to grant them only the specific permissions they need, keeping full-admin power separate and your environment secure.": [ "Weise einem Benutzer delegierte Rollen zu, um ihm nur die spezifischen Berechtigungen zu erteilen, die er benötigt. Behalte die vollen Administrationsrechte getrennt und deine Umgebung sicher." ], @@ -26196,11 +26866,14 @@ "${ BRAND_NAME } will transfer as much data as possible, starting with your most recent messages.": [ "${ BRAND_NAME } wird so viele Daten wie möglich übertragen, beginnend mit deinen aktuellsten Nachrichten." ], - "Are you sure you want to delete the phone number?": [ - "Möchtest du die Telefonnummer wirklich löschen?" + "Are you sure you want to remove your notification email?": [ + "Bist du sicher, dass du deine Benachrichtigungs-E-Mail-Adresse entfernen willst?" ], - "Are you sure you want to delete this address?": [ - "Möchtest du diese Adresse wirklich löschen?" + "Are you sure you want to remove your recovery email?": [ + "Bist du sicher, dass du deine Wiederherstellungs-E-Mail-Adresse entfernen willst?" + ], + "Are you sure you want to remove your recovery phone number?": [ + "Bist du sicher, dass du deine Wiederherstellungs-Telefonnummer entfernen willst?" ], "By deleting this address, you will no longer be able to receive daily email notifications.": [ "Wenn du diese Adresse löschst, wirst du keine täglichen E-Mail-Benachrichtigungen mehr erhalten." @@ -26211,8 +26884,8 @@ "By deleting this address, you will no longer be able to recover your account.": [ "Wenn du diese Adresse löschst, kannst du dein Konto nicht mehr wiederherstellen." ], - "By deleting this phone number, you will no longer be able to recover your account.": [ - "Wenn du diese Telefonnummer löschst, kannst du dein Konto nicht mehr wiederherstellen." + "By removing this phone number, you will no longer be able to recover your account.": [ + "Wenn du diese Telefonnummer entfernst, kannst du dein Konto nicht mehr wiederherstellen." ], "Could not login. Please open ${ PASS_APP_NAME } browser extension and login from there.": [ "Anmeldung fehlgeschlagen. Bitte öffne die ${ PASS_APP_NAME }-Browser-Erweiterung und melde dich von dort an." diff --git a/applications/account/locales/el_GR.json b/applications/account/locales/el_GR.json index cc132ab2686..a0574acde03 100644 --- a/applications/account/locales/el_GR.json +++ b/applications/account/locales/el_GR.json @@ -90,6 +90,9 @@ "Add": [ "Προσθήκη" ], + "Add ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }": [ + "Προσθήκη ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }" + ], "Add ${ BRAND_NAME } Account": [ "Προσθήκη Λογαριασμού ${ BRAND_NAME }" ], @@ -162,6 +165,9 @@ "Add user": [ "Προσθήκη χρήστη" ], + "Added ${ memberName } as group owner": [ + "Προστέθηκε ο/η ${ memberName } ως ιδιοκτήτης της ομάδας" + ], "Align center": [ "Στοίχιση στο κέντρο" ], @@ -213,6 +219,9 @@ "Back to sign in": [ "Επιστροφή στη σύνδεση" ], + "Back to sign-in": [ + "Επιστροφή στη σύνδεση" + ], "Block": [ "Αποκλεισμός" ], @@ -309,6 +318,9 @@ "Confirm": [ "Επιβεβαίωση" ], + "Confirm email": [ + "Επιβεβαίωση email" + ], "Confirm opening of link ${ linkToShow }": [ "Επιβεβαίωση ανοίγματος συνδέσμου ${ linkToShow }" ], @@ -324,15 +336,15 @@ "Connect Gmail address": [ "Σύνδεση διεύθυνσης Gmail" ], - "Connect to Gmail": [ - "Σύνδεση στο Gmail" - ], "Connect to video conferencing": [ "Σύνδεση σε τηλεδιάσκεψη" ], "Connect your ${ BRAND_NAME } Account": [ "Συνδέστε τον ${ BRAND_NAME } Λογαριασμό σας" ], + "Connect your email": [ + "Συνδέστε τη διεύθυνση email σας" + ], "Connected": [ "Συνδεδεμένο" ], @@ -369,6 +381,9 @@ "Continue with ${ nameToDisplay } ${ maybeEmailInBrackets }": [ "Συνεχίστε με ${ nameToDisplay } ${ maybeEmailInBrackets }" ], + "Continue with Free": [ + "Συνέχεια με Free" + ], "Continue with Google": [ "Συνεχίστε με Google" ], @@ -519,8 +534,8 @@ "Delete record": [ "Διαγραφή εγγραφής" ], - "Delete token ${ token.Account }": [ - "Διαγραφή διακριτικού ${ token.Account }" + "Delete token ${ tokens[0].Account }": [ + "Διαγραφή διακριτικού ${ tokens[0].Account }" ], "Delete token “${ token.Name }”": [ "Διαγραφή διακριτικού “${ token.Name }”" @@ -561,6 +576,9 @@ "Disable categories": [ "Απενεργοποίηση κατηγοριών" ], + "Disable category": [ + "Απενεργοποίηση κατηγορίας" + ], "Disable recovery phrase": [ "Απενεργοποίηση φράσης ανάκτησης" ], @@ -711,6 +729,9 @@ "Enable ${ darkWebMonitoring }": [ "Ενεργοποίηση ${ darkWebMonitoring }" ], + "Enable category": [ + "Ενεργοποίηση κατηγορίας" + ], "enable desktop notifications": [ "ενεργοποίηση ειδοποιήσεων επιφάνειας εργασίας" ], @@ -762,6 +783,9 @@ "Filters are being applied. This might take a few minutes.": [ "Τα φίλτρα εφαρμόζονται. Αυτό μπορεί να πάρει μερικά λεπτά." ], + "Finish": [ + "Ολοκλήρωση" + ], "Fit to window": [ "Προσαρμογή στο παράθυρο" ], @@ -780,6 +804,9 @@ "Generate key": [ "Παραγωγή κλειδιού" ], + "Generate missing keys": [ + "Δημιουργία των κλειδιών που λείπουν" + ], "Generate new phrase": [ "Δημιουργία νέας φράσης" ], @@ -882,6 +909,9 @@ "Go to ${ planOrAppName }": [ "Πηγαίνετε στο ${ planOrAppName }" ], + "Go to domain provider": [ + "Μετάβαση στον πάροχο τομέα" + ], "Go to label": [ "Μετάβαση στην ετικέτα" ], @@ -1278,6 +1308,9 @@ "Remove this notification": [ "Αφαίρεση ειδοποίησης" ], + "Removed ${ memberName } as group owner": [ + "Αφαιρέθηκε ο/η ${ memberName } ως ιδιοκτήτης της ομάδας" + ], "Rename": [ "Μετονομασία" ], @@ -1359,6 +1392,9 @@ "Save": [ "Αποθήκευση" ], + "Save & exit": [ + "Αποθήκευση & έξοδος" + ], "Save address": [ "Αποθήκευση διεύθυνσης" ], @@ -2058,18 +2094,21 @@ ] }, "Admin roles onboarding": { + "2 new admin roles": [ + "2 νέοι ρόλοι διαχειριστή" + ], "3 new admin roles": [ "3 νέοι ρόλοι διαχειριστή" ], - "Admin roles": [ - "Ρόλοι διαχειριστών" - ], "Configure security policies, data retention, and VPN infrastructure, and manage audit logs.": [ "Διαμορφώστε πολιτικές ασφαλείας, διατήρηση δεδομένων και υποδομή VPN, και διαχειριστείτε τα αρχεία ελέγχου." ], "Delegate management by assigning specific admin roles. Give each admin only the access they need. This follows the principle of least privilege, protecting your organization from compromised accounts and accidental errors.": [ "Διαχειριστείτε την ανάθεση εξουσιών αναθέτοντας συγκεκριμένους ρόλους διαχειριστή. Δώστε σε κάθε διαχειριστή μόνο την πρόσβαση που χρειάζεται. Αυτό ακολουθεί την αρχή της ελάχιστης προνομίας, προστατεύοντας τον οργανισμό σας από παραβιασμένους λογαριασμούς και τυχαία σφάλματα." ], + "Delegate management for many users at once. Assign specific admin roles to groups for automatic permissions. This follows the principle of least privilege to save time on onboarding and offboarding while reducing errors.": [ + "Αναθέστε τη διαχείριση σε πολλούς χρήστες ταυτόχρονα. Αναθέστε συγκεκριμένους ρόλους διαχειριστή σε ομάδες για αυτόματα δικαιώματα. Αυτό ακολουθεί την αρχή των ελαχίστων προνομίων για εξοικονόμηση χρόνου κατά την ενσωμάτωση και την αποσύνδεση, μειώνοντας παράλληλα τα σφάλματα." + ], "Delegate management with the appropriate admin role.": [ "Διαχείριση εκπροσώπων με τον κατάλληλο ρόλο διαχειριστή." ], @@ -2082,21 +2121,15 @@ "New: Control admin access for individual users": [ "Νέο: Έλεγχος πρόσβασης διαχειριστή για μεμονωμένους χρήστες" ], - "Organization admin": [ - "Διαχειριστής οργανισμού" + "New: Control admin access for many users at once": [ + "Νέο: Έλεγχος πρόσβασης διαχειριστή για πολλούς χρήστες ταυτόχρονα" ], "Organization admin:": [ "Διαχειριστής οργανισμού:" ], - "Security admin": [ - "Διαχειριστής ασφαλείας" - ], "Security admin:": [ "Διαχειριστής ασφαλείας:" ], - "User admin": [ - "Διαχειριστής χρηστών" - ], "User admin:": [ "Διαχειριστής χρηστών:" ] @@ -2864,15 +2897,66 @@ "${ BRAND_NAME } Migration Assistant": [ "Βοηθός Μετεγκατάστασης ${ BRAND_NAME }" ], - "Add a custom domain": [ - "Προσθήκη προσαρμοσμένου τομέα" + "${ migratedCount } of ${ providerUsers.length }": [ + "${ migratedCount } από ${ providerUsers.length }" + ], + "**p=none**: do not quarantine or reject unauthorized emails. Usually, people only use this policy to troubleshoot or test.": [ + "**p=none**: μη βάζετε σε καραντίνα ή απορρίπτετε μη εξουσιοδοτημένα μηνύματα ηλεκτρονικού ταχυδρομείου. Συνήθως, οι χρήστες χρησιμοποιούν αυτήν την πολιτική μόνο για την αντιμετώπιση προβλημάτων ή τη δοκιμή." + ], + "**p=quarantine**: asking the recipient platforms to mark the unauthorized emails as spam or quarantine them.": [ + "**p=quarantine**: ζητώντας από τις πλατφόρμες παραληπτών να επισημάνουν τα μη εξουσιοδοτημένα μηνύματα ηλεκτρονικού ταχυδρομείου ως ανεπιθύμητα ή να τα θέσουν σε καραντίνα." + ], + "**p=reject**: asking the recipient platforms to reject the unauthorized emails.": [ + "**p=reject**: ζητώντας από τις πλατφόρμες παραληπτών να απορρίψουν τα μη εξουσιοδοτημένα μηνύματα ηλεκτρονικού ταχυδρομείου." + ], + "Account connected": [ + "Ο λογαριασμός συνδέθηκε" + ], + "Account disconnected": [ + "Λογαριασμός αποσυνδεδεμένος" + ], + "Activated": [ + "Ενεργοποιήθηκε" + ], + "Activation link": [ + "Σύνδεσμος ενεργοποίησης" + ], + "Activation link copied to clipboard": [ + "Ο σύνδεσμος ενεργοποίησης αντιγράφηκε στο πρόχειρο" ], - "App installed": [ - "Η εφαρμογή εγκαταστάθηκε" + "Add a domain": [ + "Προσθήκη τομέα" + ], + "Add domain": [ + "Προσθήκη τομέα" + ], + "Add users": [ + "Προσθήκη χρηστών" + ], + "Add users and configure your domain manually for sending and receiving mail. Ideal for small teams starting from a clean slate.": [ + "Προσθέστε χρήστες και διαμορφώστε τον τομέα σας χειροκίνητα για την αποστολή και λήψη μηνυμάτων. Ιδανικό για μικρές ομάδες που ξεκινούν από το μηδέν." + ], + "Address is already used by a user outside of your organization. Please contact customer support to resolve this": [ + "Η διεύθυνση χρησιμοποιείται ήδη από χρήστη εκτός του οργανισμού σας. Για επίλυση, παρακαλούμε απευθυνθείτε στην υποστήριξη πελατών." + ], + "All": [ + "Όλοι" + ], + "An unknown error occurred": [ + "Η λειτουργία απέτυχε λόγω άγνωστου σφάλματος." + ], + "Are you sure you want to proceed? Users who haven't claimed their account before the migration is finalized will need to request a password reset from their ${ BRAND_NAME } organization administrator.": [ + "Είστε σίγουρος ότι θέλετε να συνεχίσετε; Οι χρήστες που δεν έχουν διεκδικήσει τον λογαριασμό τους πριν ολοκληρωθεί η μετεγκατάσταση θα χρειαστεί να ζητήσουν επαναφορά κωδικού πρόσβασης από τον διαχειριστή της οργάνωσης ${ BRAND_NAME }." + ], + "As soon as the accounts are created, you can share the activation link so users can claim their ${ BRAND_NAME } account.": [ + "Μόλις δημιουργηθούν οι λογαριασμοί, μπορείτε να κοινοποιήσετε τον σύνδεσμο ενεργοποίησης, ώστε οι χρήστες να μπορούν να διεκδικήσουν τον λογαριασμό τους ${ BRAND_NAME }." ], "Authenticate": [ "Ταυτοποίηση" ], + "Authenticate to Google Workspace": [ + "Ταυτοποιήστε στο Google Workspace" + ], "Authenticate your Google Workspace account": [ "Ταυτοποιήστε τον λογαριασμό σας στο Google Workspace" ], @@ -2882,23 +2966,68 @@ "Change": [ "Αλλαγή" ], + "Choose how you want to bring your team and email setup to ${ BRAND_NAME }.": [ + "Επιλέξτε πώς θέλετε να φέρετε την ομάδα σας και τη ρύθμιση του ηλεκτρονικού ταχυδρομείου σας στο ${ BRAND_NAME }." + ], + "Choose what to migrate. Your choice will apply to all users. The migration will start after you decide which users to copy.": [ + "Επιλέξτε τι θα μετεγκατασταθεί. Η επιλογή σας θα ισχύει για όλους τους χρήστες. Η μετεγκατάσταση θα ξεκινήσει αφού αποφασίσετε ποιους χρήστες θα αντιγράψετε." + ], "Completed": [ "Ολοκληρώθηκε" ], "Configure": [ "Διαμόρφωση" ], + "Configure domain": [ + "Ρύθμιση τομέα" + ], "Configure migration": [ "Διαμόρφωση μετεγκατάστασης" ], + "Configure your domain": [ + "Ρυθμίστε τον τομέα σας" + ], "Contacts": [ "Επαφές" ], + "Continue migration": [ + "Συνέχιση της μετεγκατάστασης" + ], + "Copy activation link": [ + "Αντιγραφή συνδέσμου ενεργοποίησης" + ], + "Copy activation link to clipboard": [ + "Αντιγραφή συνδέσμου ενεργοποίησης στο πρόχειρο" + ], + "Copy the below code and paste it in the DNS section of your domain host. You can find an example and some helpful tips ${ hereHref }.": [ + "Αντιγράψτε τον παρακάτω κώδικα και επικολλήστε τον στην ενότητα DNS του κεντρικού υπολογιστή του τομέα σας. Μπορείτε να βρείτε ένα παράδειγμα και μερικές χρήσιμες συμβουλές ${ hereHref }." + ], + "Creating accounts": [ + "Δημιουργία λογαριασμών" + ], + "DKIM adds a digital signature to each email so recipients can verify that the message really came from your domain and was not altered in transit. Without it, messages may be treated as less trustworthy.": [ + "Το DKIM προσθέτει μια ψηφιακή υπογραφή σε κάθε μήνυμα ηλεκτρονικού ταχυδρομείου, ώστε οι παραλήπτες να μπορούν να επαληθεύσουν ότι το μήνυμα προήλθε όντως από τον τομέα σας και δεν τροποποιήθηκε κατά τη μεταφορά του. Χωρίς αυτήν, τα μηνύματα ενδέχεται να θεωρηθούν λιγότερο αξιόπιστα." + ], + "DKIM records": [ + "Εγγραφές DKIM" + ], + "DMARC builds on SPF and DKIM by telling receiving servers how to handle messages that fail these checks. It helps protect your domain from impersonation and improves overall delivery reliability.": [ + "Το DMARC βασίζεται στο SPF και το DKIM, υποδεικνύοντας στους διακομιστές λήψης πώς να χειρίζονται τα μηνύματα που αποτυγχάνουν σε αυτούς τους ελέγχους. Βοηθά στην προστασία του τομέα σας από την πλαστοπροσωπία και βελτιώνει τη συνολική αξιοπιστία παράδοσης." + ], + "DMARC records": [ + "Εγγραφές DMARC" + ], + "Domain added": [ + "Προστέθηκε τομέας" + ], "Domain connected": [ "Συνδεδεμένος τομέας" ], - "Domain ownership verified": [ - "Επαληθεύτηκε η ιδιοκτησία τομέα" + "Ensure that your emails reach the inbox, not the spam folder. Updating SPF will allow users to send from ${ BRAND_NAME } and Google simultaneously for the duration of the migration.": [ + "Βεβαιωθείτε ότι τα ηλεκτρονικά μηνύματά σας φτάνουν στα εισερχόμενα και όχι στον φάκελο ανεπιθύμητης αλληλογραφίας. Η ενημέρωση του SPF θα επιτρέψει στους χρήστες να στέλνουν από ${ BRAND_NAME } και την Google ταυτόχρονα κατά τη διάρκεια της μετεγκατάστασης." + ], + "Errors": [ + "Σφάλματα" ], "Estimated size": [ "Εκτιμώμενος χρόνος" @@ -2906,15 +3035,39 @@ "Failed to load OAuth": [ "Αποτυχία φόρτωσης OAuth" ], + "Finalize migration": [ + "Ολοκλήρωση μετεγκατάστασης" + ], + "Finalize your migration": [ + "Ολοκληρώστε τη μετεγκατάστασή σας" + ], + "Finalizing the migration means all your emails will be routed directly to ${ BRAND_NAME }. Users will stop receiving emails on their Google accounts and data will not be synchronized between ${ BRAND_NAME } and Google anymore.": [ + "Η ολοκλήρωση της μετεγκατάστασης σημαίνει ότι όλα τα ηλεκτρονικά μηνύματά σας θα προωθούνται απευθείας στο ${ BRAND_NAME }. Οι χρήστες θα σταματήσουν να λαμβάνουν ηλεκτρονικά μηνύματα στους λογαριασμούς τους Google και τα δεδομένα δεν θα συγχρονίζονται πλέον μεταξύ του ${ BRAND_NAME } και της Google." + ], + "Find out what can be migrated.": [ + "Μάθετε τι μπορεί να μετεγκατασταθεί." + ], "Finish setting up your business account": [ "Ολοκληρώστε τη ρύθμιση του επαγγελματικού σας λογαριασμού" ], + "Go to Domain names": [ + "Μεταβείτε στα Ονόματα τομέα" + ], "Google Marketplace app to copy data to ${ BRAND_NAME }": [ "Εφαρμογή Google Marketplace για αντιγραφή δεδομένων στο ${ BRAND_NAME }" ], + "Google Workspace account": [ + "Λογαριασμός Google Workspace" + ], + "Hang tight, we're setting up user accounts and will start importing user data shortly.": [ + "Υπομονή, δημιουργούμε λογαριασμούς χρηστών και σύντομα θα ξεκινήσουμε την εισαγωγή δεδομένων χρηστών." + ], "Has errors": [ "Έχει σφάλματα" ], + "Import errors for ${ user.AdminSetName }": [ + "Σφάλματα εισαγωγής για ${ user.AdminSetName }" + ], "In progress": [ "Σε εξέλιξη" ], @@ -2924,14 +3077,20 @@ "Install migration app": [ "Εγκατάσταση εφαρμογής μετεγκατάστασης" ], - "Learn more about what can be migrated. Learn more": [ - "Μάθετε περισσότερα για το τι μπορεί να μετεγκατασταθεί. Μάθετε περισσότερα" + "Install Migration assistant": [ + "Εγκαταστήστε τον Βοηθό Μετεγκατάστασης" + ], + "Loading your organization data": [ + "Φόρτωση των δεδομένων του οργανισμού σας" ], "Mail": [ "Ταχυδρομείο" ], - "Migrate": [ - "Μετεγκατάσταση" + "Managed via ${ registrar.name }": [ + "Διαχείριση μέσω ${ registrar.name }" + ], + "Member address not found. Please contact customer support to resolve this": [ + "Η διεύθυνση μέλους δε βρέθηκε. Επικοινωνήστε με την υποστήριξη πελατών για να επιλύσετε αυτό το πρόβλημα." ], "Migrate from Google Workspace": [ "Μετάβαση από το Google Workspace" @@ -2939,6 +3098,12 @@ "Migrate users": [ "Μετεγκατάσταση χρηστών" ], + "Migrate users to ${ BRAND_NAME }": [ + "Μετεγκαταστήστε τους χρήστες στο ${ BRAND_NAME }" + ], + "Migrated": [ + "Μετεγκαταστάθηκε" + ], "Migration includes": [ "Η μετεγκατάσταση περιλαμβάνει" ], @@ -2949,8 +3114,35 @@ "Migration status": [ "Κατάσταση μετεγκατάστασης" ], - "Not started": [ - "Δεν ξεκίνησε" + "Missing organization private key": [ + "Λείπει το ιδιωτικό κλειδί του οργανισμού" + ], + "Missing organization public key": [ + "Λείπει το δημόσιο κλειδί του οργανισμού" + ], + "More details": [ + "Περισσότερες λεπτομέρειες" + ], + "Move your users, emails, and settings from Google Workspace automatically. We’ll guide you through connecting your account, verifying your domain, and migrating users securely.": [ + "Μετακινήστε τους χρήστες, τα ηλεκτρονικά μηνύματα και τις ρυθμίσεις σας από το Google Workspace αυτόματα. Θα σας καθοδηγήσουμε στη σύνδεση του λογαριασμού σας, στην επαλήθευση του τομέα σας και στη μετεγκατάσταση των χρηστών με ασφάλεια." + ], + "No error details available. Please contact customer support for more information": [ + "Δεν υπάρχουν διαθέσιμες λεπτομέρειες σφάλματος. Παρακαλούμε επικοινωνήστε με την υποστήριξη πελατών για περισσότερες πληροφορίες." + ], + "No users to display": [ + "Δεν υπάρχουν χρήστες για εμφάνιση" + ], + "Not activated": [ + "Δεν έχει ενεργοποιηθεί" + ], + "Not confirmed": [ + "Δεν έχει επιβεβαιωθεί" + ], + "Once users have claimed their ${ BRAND_NAME } account, finalize the migration.": [ + "Μόλις οι χρήστες διεκδικήσουν τον λογαριασμό τους ${ BRAND_NAME }, ολοκληρώστε τη μετεγκατάσταση." + ], + "Once we have confirmed that emails are routed to ${ BRAND_NAME } the migration will be finalized. You will receive a confirmation email to let you know when this happens. This process can take up to 24 hours.": [ + "Μόλις επιβεβαιώσουμε ότι τα μηνύματα ηλεκτρονικού ταχυδρομείου προωθούνται στο ${ BRAND_NAME }, η μετεγκατάσταση θα ολοκληρωθεί. Θα λάβετε ένα επιβεβαιωτικό μήνυμα ηλεκτρονικού ταχυδρομείου για να σας ενημερώσουμε πότε θα συμβεί αυτό. Αυτή η διαδικασία μπορεί να διαρκέσει έως και 24 ώρες." ], "Organization does not have enough seats available": [ "Ο οργανισμός δε διαθέτει αρκετές θέσεις διαθέσιμες" @@ -2958,8 +3150,20 @@ "Organization does not have enough storage available": [ "Ο οργανισμός δεν διαθέτει αρκετό χώρο αποθήκευσης" ], - "Organization settings": [ - "Ρυθμίσεις οργανισμού" + "Pending": [ + "Σε εκκρεμότητα" + ], + "Please add the following records in your DNS console of your domain provider:": [ + "Προσθέστε τις ακόλουθες εγγραφές στην κονσόλα DNS του παρόχου τομέα σας:" + ], + "Please leave this window open until we're done creating all the users.": [ + "Αφήστε αυτό το παράθυρο ανοιχτό μέχρι να ολοκληρώσουμε τη δημιουργία όλων των χρηστών." + ], + "Please select at least one product to migrate": [ + "Παρακαλώ επιλέξτε τουλάχιστον ένα προϊόν για μετεγκατάσταση" + ], + "Refresh": [ + "Ανανέωση" ], "Required": [ "Απαιτείται" @@ -2970,8 +3174,8 @@ "Select at least one user to start a migration": [ "Επιλέξτε τουλάχιστον έναν χρήστη για να ξεκινήσετε τη μετεγκατάσταση." ], - "Select what you want to migrate, this will apply to all users whether they are created now or later. Migration will start after user accounts are created.": [ - "Επιλέξτε τι θέλετε να μετεγκαταστήσετε, αυτό θα εφαρμοστεί σε όλους τους χρήστες είτε δημιουργηθούν τώρα είτε αργότερα. Η μετεγκατάσταση θα ξεκινήσει αφού δημιουργηθούν οι λογαριασμοί χρηστών." + "Select users to migrate": [ + "Επιλογή χρηστών για μετεγκατάσταση" ], "Set up": [ "Ρύθμιση" @@ -2979,53 +3183,120 @@ "Set up billing information": [ "Ρύθμιση στοιχείων χρέωσης" ], + "Set up manually": [ + "Ορίστε χειροκίνητα" + ], + "Set up secure sending (DKIM)": [ + "Ρύθμιση ασφαλούς αποστολής (DKIM)" + ], + "Set up secure sending (DMARC)": [ + "Ρύθμιση ασφαλούς αποστολής (DMARC)" + ], + "Set up secure sending (SPF)": [ + "Ρύθμιση ασφαλούς αποστολής (SPF)" + ], "Set up two-factor authentication": [ "Δημιουργήστε έλεγχο ταυτότητας δύο παραγόντων" ], "Settings": [ "Ρυθμίσεις" ], + "Share the activation link to users so they can claim their ${ BRAND_NAME } account.": [ + "Κοινοποιήστε τον σύνδεσμο ενεργοποίησης στους χρήστες, ώστε να μπορούν να διεκδικήσουν τον λογαριασμό τους ${ BRAND_NAME }." + ], "Sign in to Google Workspace": [ "Σύνδεση στο Google Workspace" ], + "Size": [ + "Μέγεθος" + ], + "Some accounts are not claimed": [ + "Ορισμένοι λογαριασμοί δεν έχουν διεκδικηθεί" + ], + "SPF records": [ + "Εγγραφές SPF" + ], + "Start migrating": [ + "Έναρξη μετεγκατάστασης" + ], "Start migration": [ "Έναρξη μετεγκατάστασης" ], "Status": [ "Κατάσταση" ], + "The default setting is none. However, to improve your security we recommend setting this value to p=quarantine.": [ + "Η προεπιλεγμένη ρύθμιση είναι καμία. Ωστόσο, για να βελτιώσετε την ασφάλειά σας, συνιστούμε να ορίσετε αυτήν την τιμή σε p=quarantine." + ], + "The “p=” value specifies the action to take for emails that fail DMARC. Here are the available actions:": [ + "Η τιμή \"p=\" καθορίζει την ενέργεια που πρέπει να ληφθεί για τα μηνύματα ηλεκτρονικού ταχυδρομείου που δεν πληρούν τις απαιτήσεις DMARC. Ακολουθούν οι διαθέσιμες ενέργειες:" + ], + "This migration has been completed": [ + "Αυτή η μετεγκατάσταση έχει ολοκληρωθεί" + ], "To migrate your organization’s data, you need to install the ${ BRAND_NAME } Migration Assistant app from the Google Workspace Marketplace. This will grant permission to ${ BRAND_NAME } to copy your data. After installing it, come back here to continue.": [ "Για να μεταφέρετε τα δεδομένα του οργανισμού σας, πρέπει να εγκαταστήσετε την εφαρμογή ${ BRAND_NAME } Migration Assistant από το Google Workspace Marketplace. Αυτό θα παραχωρήσει άδεια στο ${ BRAND_NAME } να αντιγράψει τα δεδομένα σας. Μετά την εγκατάσταση, επιστρέψτε εδώ για να συνεχίσετε." ], - "Transfer errors": [ - "Σφάλματα μεταφοράς" + "Update records for receiving": [ + "Ενημέρωση αρχείων για παραλαβή" ], "User": [ "Χρήστης" ], + "User needs to activate their account through the activation link shown above": [ + "Ο χρήστης πρέπει να ενεργοποιήσει τον λογαριασμό του μέσω του συνδέσμου ενεργοποίησης που εμφανίζεται παραπάνω" + ], + "User status": [ + "Κατάσταση χρήστη" + ], + "Users can use ${ BRAND_NAME } or Google simultaneously for the duration of the migration.": [ + "Οι χρήστες μπορούν να χρησιμοποιούν ταυτόχρονα το ${ BRAND_NAME } ή το Google για τη διάρκεια της μετανάστευσης." + ], "Users migrated": [ "Οι χρήστες μεταφέρθηκαν" ], + "Verified": [ + "Επικυρωμένο" + ], + "Verify domain ownership": [ + "Επαλήθευση ιδιοκτησίας τομέα" + ], "Verify installation": [ "Επαλήθευση εγκατάστασης" ], "Verify your domain": [ "Επαληθεύστε τον τομέα σας" ], - "Verify your domain ownership": [ - "Επαληθεύστε την ιδιοκτησία του τομέα σας" - ], "Verify your domain to start a migration": [ "Επαληθεύστε τον τομέα σας για να ξεκινήσετε τη μετεγκατάσταση" ], + "We detected the primary domain linked to your Google Workspace account. Confirm it to continue setting up email for your ${ BRAND_NAME } organization.": [ + "Εντοπίσαμε τον κύριο τομέα που είναι συνδεδεμένος με τον λογαριασμό σας Google Workspace. Επιβεβαιώστε τον για να συνεχίσετε τη ρύθμιση του email για τον οργανισμό σας ${ BRAND_NAME }." + ], "We were unable to verify the installation, please check that you have installed it in your Google Workspace account and try again.": [ "Δεν καταφέραμε να επαληθεύσουμε την εγκατάσταση, παρακαλούμε ελέγξτε ότι την έχετε εγκαταστήσει στο Google Workspace λογαριασμό σας και προσπαθήστε ξανά." ], + "We're still checking the MX records with your domain provider.": [ + "Εξακολουθούμε να ελέγχουμε τις εγγραφές MX με τον πάροχο τομέα σας." + ], + "We've noticed some users have not claimed their ${ BRAND_NAME } accounts.": [ + "Παρατηρήσαμε ότι ορισμένοι χρήστες δεν έχουν διεκδικήσει τους λογαριασμούς τους ${ BRAND_NAME }." + ], "What are you migrating?": [ "Τι μεταφέρετε;" ], + "You": [ + "Εσείς" + ], "You need to grant the permission for ${ BRAND_NAME } to copy your data. After accepting permissions, come back here to continue.": [ "Πρέπει να δώσετε την άδεια για το ${ BRAND_NAME } να αντιγράψει τα δεδομένα σας. Αφού αποδεχτείτε τις άδειες, επιστρέψτε εδώ για να συνεχίσετε." + ], + "You're all set!": [ + "Όλα έτοιμα!" + ], + "Your current plan allows up to ${ maxMembers } user. To migrate additional users, add more seats to your subscription.": [ + "Το τρέχον πλάνο σας επιτρέπει έως και ${ maxMembers } χρήστη. Για να μετεγκαταστήσετε επιπλέον χρήστες, προσθέστε περισσότερες θέσεις στη συνδρομή σας.", + "Το τρέχον πλάνο σας επιτρέπει έως και ${ maxMembers } χρήστες. Για να μετεγκαταστήσετε επιπλέον χρήστες, προσθέστε περισσότερες θέσεις στη συνδρομή σας." ] }, "breadcrumb": { @@ -3133,9 +3404,18 @@ ] }, "Button": { + "Add users manually": [ + "Προσθήκη χρηστών χειροκίνητα" + ], + "Cancel": [ + "Ακύρωση" + ], "Close": [ "Κλείσιμο" ], + "Configure your network": [ + "Διαμορφώστε το δίκτυό σας" + ], "Continue using ${ MAIL_APP_NAME }.": [ "Συνεχίστε να χρησιμοποιείτε ${ MAIL_APP_NAME }." ], @@ -3157,6 +3437,12 @@ "Got it": [ "Το κατάλαβα" ], + "Invite your team": [ + "Προσκαλέστε την ομάδα σας" + ], + "Manage global VPN permissions": [ + "Διαχείριση παγκόσμιων δικαιωμάτων VPN" + ], "Maybe later": [ "Ίσως αργότερα" ], @@ -3166,12 +3452,21 @@ "Remind me later": [ "Υπενθύμιση αργότερα" ], + "Secure your organization": [ + "Ασφαλίστε τον οργανισμό σας" + ], "Send": [ "Αποστολή" ], "Set up other features": [ "Ρύθμιση άλλων δυνατοτήτων" ], + "Set up SSO": [ + "Ρύθμιση SSO" + ], + "Sign in": [ + "Σύνδεση" + ], "Take a tour": [ "Κάντε μια περιήγηση" ] @@ -4804,6 +5099,9 @@ "/month": [ "/μήνα" ], + "/user /month": [ + "/χρήστη /μήνα" + ], "/user per month": [ "/χρήστη ανά μήνα" ] @@ -5006,14 +5304,17 @@ "Automatically sort your incoming messages before they reach your inbox.": [ "Ταξινομήστε αυτόματα τα εισερχόμενα μηνύματά σας πριν φτάσουν στα εισερχόμενά σας." ], + "Available storage: ${ storageText }": [ + "Διαθέσιμος χώρος αποθήκευσης: ${ storageText }" + ], "Available with ${ title }": [ "Διατίθεται με το ${ title }" ], "Block Google's ability to profile you. Gmail can't see what you do in ${ MAIL_APP_NAME }": [ "Αποκλείστε την ικανότητα της Google να δημιουργήσει το προφίλ σας. Το Gmail δεν μπορεί να δει τι κάνετε στο ${ MAIL_APP_NAME }" ], - "Bring over email, calendar events, and contacts from another provider.": [ - "Μεταφέρετε μηνύματα, εκδηλώσεις ημερολογίου και επαφές από έναν άλλο πάροχο." + "Bring over your email, calendar events, and contacts from another provider.": [ + "Μεταφέρετε τα μηνύματα, τις εκδηλώσεις ημερολογίου και τις επαφές σας από έναν άλλο πάροχο." ], "Build trust and brand recognition with professional email addresses at your own domain.": [ "Δημιουργήστε εμπιστοσύνη και αναγνώριση επωνυμίας με επαγγελματικές διευθύνσεις ηλεκτρονικού ταχυδρομείου στον δικό σας τομέα." @@ -5024,6 +5325,9 @@ "Connect your CRM, website, printers, and more.": [ "Συνδέστε το CRM, την ιστοσελίδα, τους εκτυπωτές σας και άλλα." ], + "Create a Gateway to give your users access to your IT resources through dedicated servers.": [ + "Δημιουργήστε μια Πύλη για να παρέχετε στους χρήστες σας πρόσβαση στους πόρους τεχνολογίας πληροφοριών μέσω αποκλειστικών διακομιστών." + ], "Create a Zoom meeting and add joining details to your event with one click.": [ "Δημιουργήστε μια σύσκεψη Zoom και προσθέστε λεπτομέρειες συμμετοχής στην εκδήλωσή σας με ένα κλικ." ], @@ -5033,9 +5337,15 @@ "Create groups you can email with a single address.": [ "Δημιουργήστε ομάδες στις οποίες μπορείτε να στείλετε μηνύματα ηλεκτρονικού ταχυδρομείου με μία μόνο ηλεκτρονική διεύθυνση." ], + "Create new user accounts or import users with SSO (single sign-on) SCIM provisioning.": [ + "Δημιουργήστε νέους λογαριασμούς χρηστών ή εισαγάγετε χρήστες με SSO (ενιαία σύνδεση) προμήθεια SCIM." + ], "Create policies to decide who can connect to shared servers in each country.": [ "Δημιουργήστε πολιτικές ώστε να ορίσετε ποιος μπορεί να συνδεθεί στους κοινόχρηστους διακομιστές κάθε χώρας." ], + "Decide which users can connect to each of our 120+ shared server locations.": [ + "Αποφασίστε ποιοι χρήστες μπορούν να συνδεθούν σε καθεμία από τις 120+ τοποθεσίες των κοινόχρηστων διακομιστών μας." + ], "Easily access your email and calendar on desktop and mobile.": [ "Αποκτήστε εύκολα πρόσβαση στην ηλεκτρονική σας διεύθυνση και το ημερολόγιό σας σε υπολογιστή και κινητό." ], @@ -5060,6 +5370,9 @@ "Encrypting and importing contacts... This may take a few minutes. When the process is completed, you can close this modal.": [ "Γίνεται κρυπτογράφηση και εισαγωγή επαφών... Αυτή η διαδικασία ίσως πάρει μερικά λεπτά. Όταν ολοκληρωθεί, μπορείτε να κλείσετε αυτό το παράθυρο." ], + "Enough room for years of emails, attachments and more.": [ + "Αρκετός χώρος για χρόνια από μηνύματα ηλεκτρονικού ταχυδρομείου , συνημμένα και άλλα." + ], "Ensure secure access to organization data, even if your team is remote or using public WiFi.": [ "Εξασφαλίστε ασφαλή πρόσβαση στα δεδομένα του οργανισμού, ακόμα και αν η ομάδα σας είναι απομακρυσμένη ή χρησιμοποιεί δημόσιο WiFi." ], @@ -5093,12 +5406,12 @@ "How we supported local activists when privacy and free speech were threatened.": [ "Πώς υποστηρίξαμε τους τοπικούς ακτιβιστές όταν απειλήθηκε η ιδιωτικότητα και η ελευθερία του λόγου." ], - "How you reset your ${ BRAND_NAME } password. This will not recover your encrypted data.": [ - "Πώς να επαναφέρετε τον κωδικό πρόσβασης του ${ BRAND_NAME }. Αυτό δε θα ανακτήσει τα κρυπτογραφημένα σας δεδομένα." - ], "How you unlock your encrypted data if you lose your password.": [ "Πώς ξεκλειδώνετε τα κρυπτογραφημένα δεδομένα σας αν χάσετε τον κωδικό σας." ], + "If you haven’t already, enable some recovery methods to make sure you never lose access to ${ VPN_APP_NAME }.": [ + "Εάν δεν το έχετε κάνει ήδη, ενεργοποιήστε μερικές μεθόδους ανάκτησης για να βεβαιωθείτε ότι δε θα χάσετε ποτέ την πρόσβαση στο ${ VPN_APP_NAME }." + ], "It looks like the contact list you are importing contains some groups. Please review how these groups should be imported.": [ "Φαίνεται ότι η λίστα επαφών που εισάγετε περιέχει κάποιες ομάδες. Παρακαλούμε εξετάστε τον τρόπο εισαγωγής αυτών των ομάδων." ], @@ -5132,8 +5445,8 @@ "Read, reply, and stay on top of Gmail from within ${ MAIL_APP_NAME }": [ "Διαβάστε, απαντήστε και μείνετε ενημερωμένοι στο Gmail μέσα από το ${ MAIL_APP_NAME }" ], - "Send a code to your recovery email or phone": [ - "Αποστολή κωδικού στη διεύθυνση ηλεκτρονικού ταχυδρομείου ή στο τηλέφωνο ανάκτησης σας" + "Select which categories you want to add and if you want to receive push notifications for each category.": [ + "Επιλέξτε ποιες κατηγορίες θέλετε να προσθέσετε και αν θέλετε να λαμβάνετε ειδοποιήσεις push για κάθε κατηγορία." ], "Set up accounts for all users and invite them to join ${ BRAND_NAME }.": [ "Ρυθμίστε λογαριασμούς για όλους τους χρήστες και προσκαλέστε τους να συμμετάσχουν στο ${ BRAND_NAME }." @@ -5147,6 +5460,9 @@ "Still need help? Our support team is here for you.": [ "Χρειάζεστε ακόμα βοήθεια; Η ομάδα υποστήριξής μας είναι εδώ για εσάς." ], + "This allows you to regain access to your ${ BRAND_NAME } account but does not recover your encrypted data.": [ + "Αυτό σας επιτρέπει να επανακτήσετε την πρόσβαση στον λογαριασμό σας ${ BRAND_NAME }, αλλά δεν ανακτά τα κρυπτογραφημένα δεδομένα σας." + ], "This may happen if permissions were removed or your password changed.": [ "Αυτό μπορεί να συμβεί εάν τα δικαιώματα αφαιρέθηκαν ή αν άλλαξε ο κωδικός σας." ], @@ -5175,27 +5491,39 @@ "Track the status and activity of your referrals": [ "Παρακολουθήστε την κατάσταση και τη δραστηριότητα των παραπομπών σας" ], + "Unlock 15 GB of storage for just ${ config.offerPrice }.": [ + "Ξεκλειδώστε 15 GB αποθηκευτικού χώρου μόνο με ${ config.offerPrice }." + ], "Upgrade to ${ planName } to connect up to ${ MAX_SYNC_PAID_USER } accounts": [ "Αναβαθμίστε στο ${ planName } για να συνδέσετε έως και ${ MAX_SYNC_PAID_USER } λογαριασμούς" ], "Upgrade to get ${ activatePmUser } for a shorter, easy-to-remember email address in addition to your current one.": [ "Αναβαθμίστε για να λάβετε ${ activatePmUser } για μια συντομότερη, εύκολη στην απομνημόνευση διεύθυνση ηλεκτρονικού ταχυδρομείου εκτός από την τρέχουσα." ], + "Use a recovery method to reset your password": [ + "Χρησιμοποιήστε μια μέθοδο ανάκτησης για να επαναφέρετε τον κωδικό πρόσβασής σας" + ], "Use this guide to get your organization promptly benefiting from ${ BRAND_NAME }'s industry-leading encryption and privacy ecosystem.": [ "Χρησιμοποιήστε αυτόν τον οδηγό για να επωφεληθεί άμεσα ο οργανισμός σας από το κορυφαίο οικοσύστημα κρυπτογράφησης και προστασίας προσωπικών δεδομένων του ${ BRAND_NAME }." ], "We can't access ${ boldEmails } anymore.": [ "Δεν μπορούμε πια να έχουμε πρόσβαση στα ${ boldEmails }." ], + "We will pause imports at 80% storage to reserve space for new messages.": [ + "Θα σταματήσουμε τις εισαγωγές στο 80% του αποθηκευτικού χώρου για να κρατήσουμε χώρο για νέα μηνύματα." + ], "We'll bring in your old emails and connect your Gmail to ${ MAIL_APP_NAME } so new messages appear automatically": [ "Θα εισαγάγουμε τα παλιά σας μηνύματα ηλεκτρονικού ταχυδρομείου και θα συνδέσουμε το Gmail σας με το ${ MAIL_APP_NAME } ώστε τα νέα μηνύματα να εμφανίζονται αυτόματα" ], - "We've started importing your email from Gmail. We'll let you know when it's done.": [ - "Ξεκινήσαμε την εισαγωγή του email σας από το Gmail. Θα σας ενημερώσουμε όταν ολοκληρωθεί." + "We've started importing your emails from Gmail. We'll let you know when it's done.": [ + "Ξεκινήσαμε την εισαγωγή των ηλεκτρονικών μηνυμάτων σας από το Gmail. Θα σας ενημερώσουμε όταν ολοκληρωθεί." ], "We’re sorry to see you go. If you have a moment, we’d really appreciate hearing why you’d like to cancel. Your feedback helps us make ${ BRAND_NAME } better for everyone.": [ "Λυπόμαστε που φεύγετε. Αν έχετε λίγο χρόνο, θα εκτιμούσαμε πραγματικά να μας πείτε γιατί θέλετε να ακυρώσετε. Τα σχόλιά σας μας βοηθούν να κάνουμε το ${ BRAND_NAME } καλύτερο για όλους." ], + "With new email categories, only important messages land in your primary inbox. Categories work just like spam filters. ${ MAIL_APP_NAME } never reads your emails or shares your data.": [ + "Με τις νέες κατηγορίες ηλεκτρονικού ταχυδρομείου, μόνο τα σημαντικά μηνύματα προσγειώνονται στο κύριο γραμματοκιβώτιό σας. Οι κατηγορίες λειτουργούν ακριβώς όπως τα φίλτρα ανεπιθύμητης αλληλογραφίας. Το ${ MAIL_APP_NAME } ποτέ δε διαβάζει τα μηνύματα ηλεκτρονικού ταχυδρομείου σας ούτε μοιράζεται τα δεδομένα σας." + ], "You already have a Gmail address forwarding to ${ MAIL_APP_NAME }. Connect it below to send and receive emails directly from ${ MAIL_APP_NAME }.": [ "Έχετε ήδη μια διεύθυνση Gmail που προωθείται στο ${ MAIL_APP_NAME }. Συνδέστε τη παρακάτω για να στείλετε και να λάβετε μηνύματα ηλεκτρονικού ταχυδρομείου απευθείας από το ${ MAIL_APP_NAME }." ], @@ -5237,6 +5565,12 @@ "You've connected one external account address to ${ MAIL_APP_NAME }.": [ "Έχετε συνδέσει μία διεύθυνση εξωτερικού λογαριασμού στο ${ MAIL_APP_NAME }." ], + "Your free ${ MAIL_APP_NAME } account comes with limited storage so we'll only import ${ newUserStorageText } of your most recent Gmail messages": [ + "Ο δωρεάν λογαριασμός σας ${ MAIL_APP_NAME } διαθέτει περιορισμένο αποθηκευτικό χώρο, επομένως θα εισάγουμε μόνο ${ newUserStorageText } από τα πιο πρόσφατα μηνύματά σας στο Gmail" + ], + "Your free ${ MAIL_APP_NAME } account comes with limited storage so we'll only import your most recent Gmail emails.": [ + "Ο δωρεάν λογαριασμός σας ${ MAIL_APP_NAME } διαθέτει περιορισμένο αποθηκευτικό χώρο, επομένως θα εισάγουμε μόνο τα πιο πρόσφατα email σας στο Gmail." + ], "Your plan supports ${ MAX_SYNC_FREE_USER } Gmail address.": [ "Το πλάνο σας υποστηρίζει ${ MAX_SYNC_FREE_USER } διεύθυνση Gmail.", "Το πλάνο σας υποστηρίζει ${ MAX_SYNC_FREE_USER } διευθύνσεις Gmail." @@ -5251,6 +5585,11 @@ "χρησιμοποιήστε τον βοηθό εισαγωγής Easy Switch" ] }, + "Description for domain modal": { + "Duplicate DMARC record found, go to the DNS console of your domain provider to fix it.": [ + "Βρέθηκε διπλότυπη εγγραφή DMARC, μεταβείτε στην κονσόλα DNS του παρόχου τομέα σας για να το διορθώσετε." + ] + }, "Description of the purpose of the import CSV modal": { "Also, we have automatically matched CSV fields with vCard fields. You can review and change this matching manually.": [ "Επίσης, έχουμε αντιστοιχίσει αυτόματα τα πεδία CSV με πεδία vCard. Μπορείτε να ελέγξετε και να αλλάξετε αυτήν την αντιστοίχιση με μη αυτόματο τρόπο." @@ -5674,6 +6013,9 @@ "120m": [ "120λ" ], + "15 minutes": [ + "15 λεπτά" + ], "30 minutes": [ "30 λεπτά" ], @@ -6296,8 +6638,8 @@ "${ user } will not be able to access your account until the next emergency access.": [ "${ user } δεν θα μπορεί να αποκτήσει πρόσβαση στον λογαριασμό σας μέχρι την επόμενη πρόσβαση έκτακτης ανάγκης." ], - "**${ contact }** is now your recovery contact. They can help you recover your data after a password reset.": [ - "**${ contact }** είναι πλέον η επαφή ανάκτησής σας. Μπορεί να σας βοηθήσει να ανακτήσετε τα δεδομένα σας μετά από επαναφορά κωδικού πρόσβασης." + "**${ contact }** is now your recovery contact. They can help you unlock your data after you reset your password.": [ + "**${ contact }** είναι πλέον η επαφή ανάκτησής σας. Μπορεί να σας βοηθήσει να ξεκλειδώσετε τα δεδομένα σας αφού επαναφέρετε τον κωδικό πρόσβασής σας." ], "**If they confirm**, click **Approve recovery**. This will unlock their encrypted data.": [ "**Εάν επιβεβαιώσουν**, κάντε κλικ στο **Έγκριση ανάκτησης**. Αυτό θα ξεκλειδώσει τα κρυπτογραφημένα δεδομένα τους." @@ -6326,12 +6668,21 @@ "Add": [ "Προσθήκη" ], + "Add 1 more": [ + "Προσθέστε 1 ακόμα" + ], "Add emergency contact": [ "Προσθήκη επαφής έκτακτης ανάγκης" ], + "Add option": [ + "Προσθήκη επιλογής" + ], "Add recovery contact": [ "Προσθήκη επαφής ανάκτησης" ], + "Add recovery method": [ + "Προσθήκη μεθόδου ανάκτησης" + ], "Added on ${ formattedDate }": [ "Προστέθηκε στις ${ formattedDate }" ], @@ -6371,12 +6722,12 @@ "Connect with them to confirm they need help to recover their data.": [ "Επικοινωνήστε μαζί τους για να επιβεβαιώσετε ότι χρειάζονται βοήθεια για την ανάκτηση των δεδομένων τους." ], - "Contact-assisted recovery": [ - "Ανάκτηση με υποβοήθηση επαφής" - ], "Contacts": [ "Επαφές" ], + "Data recovery contacts": [ + "Επαφές ανάκτησης δεδομένων" + ], "Data successfully recovered. You can now decrypt your existing data and encrypted files.": [ "Τα δεδομένα ανακτήθηκαν με επιτυχία. Τώρα μπορείτε να αποκρυπτογραφήσετε τα υπάρχοντα δεδομένα και τα κρυπτογραφημένα αρχεία σας." ], @@ -6422,6 +6773,12 @@ "Enable auto-renew": [ "Ενεργοποίηση αυτόματης ανανέωσης" ], + "Enter your extra password": [ + "Εισαγάγετε τον επιπλέον κωδικό πρόσβασής σας" + ], + "Explore plans": [ + "Εξερευνήστε τα πλάνα" + ], "For ${ email }": [ "Για ${ email }" ], @@ -6452,16 +6809,10 @@ "Less than a minute left": [ "Απομένει λιγότερο από ένα λεπτό" ], - "Let ${ user } know it’s really you trying to regain access.": [ - "Ενημερώστε τον ${ user } ότι είστε πραγματικά εσείς που προσπαθείτε να ανακτήσετε την πρόσβαση." - ], "Maximum of ${ limit } contact reached. To change, remove a contact and add a new one.": [ "Έχετε φτάσει στο μέγιστο της ${ limit } επαφής. Για να αλλάξετε, αφαιρέστε μια επαφή και προσθέστε μια νέα.", "Έχετε φτάσει στο μέγιστο των ${ limit } επαφών. Για να αλλάξετε, αφαιρέστε μια επαφή και προσθέστε μια νέα." ], - "None": [ - "Κανένας" - ], "Only ": [ "Μόνο " ], @@ -6480,9 +6831,6 @@ "People who trust me": [ "Άτομα που με εμπιστεύονται" ], - "People you have added as recovery contacts.": [ - "Άτομα που έχετε προσθέσει ως επαφές ανάκτησης." - ], "Proceed anyway": [ "Συνέχεια παρ’ όλα αυτά" ], @@ -6555,14 +6903,11 @@ "Select recovery contact ${ name }": [ "Επιλέξτε επαφή ανάκτησης ${ name }" ], - "Send email request": [ - "Αποστολή αιτήματος μέσω email" - ], "Send recovery request": [ "Αποστολή αιτήματος ανάκτησης" ], - "Set account recovery": [ - "Ρύθμιση ανάκτησης λογαριασμού" + "Start recovery": [ + "Εκκίνηση ανάκτησης" ], "Stop being recovery contact": [ "Διακοπή ως επαφή ανάκτησης" @@ -6607,8 +6952,8 @@ "Time required before automatically granting them access": [ "Απαιτούμενος χρόνος πριν την αυτόματη παροχή πρόσβασης σε αυτούς" ], - "To add and use recovery contact, you must have a password reset option.": [ - "Για να προσθέσετε και να χρησιμοποιήσετε μια επαφή ανάκτησης, πρέπει να έχετε μια επιλογή επαναφοράς κωδικού πρόσβασης." + "To add recovery contacts, you must have a recovery email address or phone number.": [ + "Για να προσθέσετε επαφές ανάκτησης, πρέπει να έχετε μια διεύθυνση ηλεκτρονικού ταχυδρομείου ή έναν αριθμό τηλεφώνου για ανάκτηση." ], "To disable this recovery method, remove all your recovery contacts.": [ "Για να απενεργοποιήσετε αυτή τη μέθοδο ανάκτησης, διαγράψτε όλες τις επαφές ανάκτησης σας." @@ -6619,6 +6964,9 @@ "Unable to recover data": [ "Δεν είναι δυνατή η ανάκτηση των δεδομένων" ], + "Unlock ${ PASS_APP_NAME }": [ + "Ξεκλειδώστε το ${ PASS_APP_NAME }" + ], "Upgrade": [ "Αναβάθμιση" ], @@ -6640,6 +6988,9 @@ "We received a request to unlock the encrypted data of your contact **${ user }**.": [ "Λάβαμε αίτημα για το ξεκλείδωμα των κρυπτογραφημένων δεδομένων της επαφής σας **${ user }**." ], + "We sent an email request to ${ user }. Let them know it's really you trying to regain access.": [ + "Στείλαμε ένα αίτημα μέσω ηλεκτρονικού μηνύματος στον ${ user }. Ενημερώστε τους ότι όντως είστε εσείς που προσπαθείτε να ανακτήσετε την πρόσβαση." + ], "We were not able to verify the recovery data. Proceed anyway?": [ "Δεν μπορέσαμε να επαληθεύσουμε τα δεδομένα ανάκτησης. Θέλετε να συνεχίσετε;" ], @@ -6969,6 +7320,9 @@ "Invalid invitation link": [ "Μη έγκυρος σύνδεσμος πρόσκλησης" ], + "Invalid joining link. Please contact your administrator.": [ + "Μη έγκυρος σύνδεσμος σύνδεσης. Επικοινωνήστε με τον διαχειριστή σας." + ], "Invalid name": [ "Μη έγκυρο όνομα" ], @@ -7145,9 +7499,6 @@ "Please try again in a few moments.": [ "Παρακαλούμε δοκιμάστε ξανά σε λίγο." ], - "Please upgrade to a business plan with more than 1 user to get multi-user support": [ - "Παρακαλώ αναβαθμίστε σε επιχειρηματικό πλάνο με περισσότερους από 1 χρήστες ώστε να λάβετε υποστήριξη πολλαπλών χρηστών" - ], "Please upgrade to a business plan with more than 1 user to manage multiple users.": [ "Παρακαλώ αναβαθμίστε σε επιχειρηματικό πλάνο με περισσότερους από 1 χρήστες ώστε να διαχειριστείτε πολλαπλούς χρήστες." ], @@ -7290,6 +7641,9 @@ "There are too many folders in your external account. Please customize the import to delete some folders.": [ "Υπερβολικός αριθμός φακέλων στον εξωτερικό λογαριασμό σας. Παρακαλούμε προσαρμόστε την εισαγωγή, προς διαγραφή μερικών φακέλων." ], + "There was an error, please try again.": [ + "Παρουσιάστηκε σφάλμα, παρακαλούμε προσπαθήστε ξανά." + ], "This field exceeds the maximum of ${ maximumLength } characters.": [ "Αυτό το πεδίο υπερβαίνει το μέγιστο των χαρακτήρων ${ maximumLength }." ], @@ -7572,6 +7926,9 @@ "Ask your administrator to enable Account monitor.": [ "Ζητήστε από τον διαχειριστή σας να ενεργοποιήσει την παρακολούθηση Λογαριασμού." ], + "Enable account monitor to start loading event.": [ + "Ενεργοποιήστε τον παρακολούθηση λογαριασμού για να ξεκινήσει η φόρτωση του γεγονότος." + ], "Error: ${ errorMessage }": [ "Σφάλμα: ${ errorMessage }" ], @@ -8087,6 +8444,9 @@ "${ PROTON_SENTINEL_NAME } account protection": [ "${ PROTON_SENTINEL_NAME } προστασία λογαριασμού" ], + "10+ premium features": [ + "10+ premium χαρακτηριστικά" + ], "15 GB storage": [ "15 GB αποθηκευτικός χώρος" ], @@ -8122,6 +8482,12 @@ "Continue": [ "Συνέχεια" ], + "Custom email domain": [ + "Προσαρμοσμένος τομέας ηλεκτρονικού ταχυδρομείου" + ], + "Email addresses": [ + "Διευθύνσεις ηλεκτρονικού ταχυδρομείου" + ], "Encrypted cloud storage for files, photos and documents": [ "Κρυπτογραφημένος χώρος αποθήκευσης στο cloud για αρχεία, φωτογραφίες και έγγραφα" ], @@ -8152,6 +8518,9 @@ "Short domain @pm.me": [ "Σύντομος τομέας @pm.me" ], + "Storage": [ + "Αποθηκευτικός χώρος" + ], "Torrenting support (P2P)": [ "Υποστήριξη Torrenting (P2P)" ], @@ -8517,8 +8886,11 @@ ] }, "Force upgrade safety review": { - "I understand that I will no longer be able to sign in to older versions of ${ BRAND_NAME } mobile apps.": [ - "Κατανοώ ότι δε θα μπορώ πλέον να συνδεθώ σε παλαιότερες εκδόσεις των εφαρμογών ${ BRAND_NAME } για κινητά." + "I understand that I will no longer be able to sign in to older versions of ${ BRAND_NAME } apps.": [ + "Κατανοώ ότι δε θα μπορώ πλέον να συνδεθώ σε παλαιότερες εκδόσεις των εφαρμογών ${ BRAND_NAME }." + ], + "Learn more": [ + "Μάθετε περισσότερα" ] }, "Form heading": { @@ -8619,6 +8991,9 @@ ], "Group address:": [ "Διεύθυνση ομάδας:" + ], + "Roles and permission:": [ + "Ρόλοι και δικαιώματα:" ] }, "Group member count": { @@ -8678,6 +9053,14 @@ "Συμμετοχή σε ομάδες" ] }, + "group_modal": { + "General": [ + "Γενικά" + ], + "Roles and permissions": [ + "Ρόλοι και δικαιώματα" + ] + }, "Header": { "Access": [ "Πρόσβαση" @@ -9321,8 +9704,11 @@ "${ BRAND_NAME } Business plans gives your team all the collaboration tools they need to be productive and organized in their work, while safeguarding your business.": [ "Τα ${ BRAND_NAME } Business πλάνα παρέχουν στην ομάδα σας όλα τα εργαλεία συνεργασίας που χρειάζονται για να είναι παραγωγικοί και οργανωμένοι στη δουλειά τους, ενώ ταυτόχρονα προστατεύουν την επιχείρησή σας." ], - "${ BRAND_NAME } is independently funded and operates without advertising.
Below are examples of how this independence has been used in practice.": [ - "${ BRAND_NAME } χρηματοδοτείται ανεξάρτητα και λειτουργεί χωρίς διαφημίσεις.\nΠαρακάτω παρατίθενται παραδείγματα για το πώς αυτή η ανεξαρτησία έχει χρησιμοποιηθεί στην πράξη." + "${ BRAND_NAME } Free": [ + "${ BRAND_NAME } Free" + ], + "${ BRAND_NAME } is independently funded and operates without advertising. Below are examples of how this independence has been used in practice.": [ + "${ BRAND_NAME } χρηματοδοτείται ανεξάρτητα και λειτουργεί χωρίς διαφημίσεις. Παρακάτω παρατίθενται παραδείγματα για το πώς αυτή η ανεξαρτησία έχει χρησιμοποιηθεί στην πράξη." ], "${ BRAND_NAME } is privacy you can trust, ensured by strong encryption, open-source code, and Swiss privacy laws. We believe nobody should be able to exploit your data, period. Our technology and business are based upon this fundamentally stronger definition of privacy.": [ "Το ${ BRAND_NAME } είναι απόρρητο που μπορείτε να εμπιστευτείτε, το οποίο διασφαλίζεται από ισχυρή κρυπτογράφηση, κώδικα ανοιχτού κώδικα και Ελβετικούς νόμους περί απορρήτου. Πιστεύουμε ότι κανείς δεν πρέπει να μπορεί να εκμεταλλευτεί τα δεδομένα σας, τελεία και παύλα. Η τεχνολογία και η επιχείρησή μας βασίζονται σε αυτόν τον θεμελιωδώς ισχυρότερο ορισμό της ιδιωτικής ζωής." @@ -9336,6 +9722,9 @@ "${ BRAND_NAME } will send a verification code to ${ phoneNumber }. Standard message rates may apply.": [ "Η ${ BRAND_NAME } θα στείλει έναν κωδικό επαλήθευσης στο ${ phoneNumber }. Ενδέχεται να ισχύουν οι τυπικές χρεώσεις μηνυμάτων." ], + "${ BRAND_NAME } will send a verification code to your recovery phone. Standard message rates may apply.": [ + "Η ${ BRAND_NAME } θα στείλει έναν κωδικό επαλήθευσης στο τηλέφωνο ανάκτησής σας. Ενδέχεται να ισχύουν οι τυπικές χρεώσεις μηνυμάτων." + ], "${ BRAND_NAME }'s encryption technology means that nobody can access your password - not even us.": [ "Η τεχνολογία κρυπτογράφησης του ${ BRAND_NAME } σημαίνει ότι κανείς δεν μπορεί να έχει πρόσβαση στον κωδικό πρόσβασής σας - ούτε καν εμείς." ], @@ -9424,6 +9813,9 @@ "${ name } for Windows": [ "${ name } για Windows" ], + "${ name } is not available": [ + "${ name } δεν είναι διαθέσιμο" + ], "${ none }: do not quarantine or reject unauthorized emails. Usually, people only use this policy to troubleshoot or test.": [ "${ none }: μη βάζετε σε καραντίνα ή απορρίπτετε μη εξουσιοδοτημένα μηνύματα ηλεκτρονικού ταχυδρομείου. Συνήθως, οι χρήστες χρησιμοποιούν αυτήν την πολιτική μόνο για την αντιμετώπιση προβλημάτων ή τη δοκιμή." ], @@ -9545,6 +9937,9 @@ "${ vaultLink } updated": [ "Η κρύπτη ${ vaultLink } ενημερώθηκε" ], + "${ VPN_SHORT_APP_NAME } hides your traffic. ${ PASS_SHORT_APP_NAME } hides your identity\n— unlimited **hide-my-email aliases** and **dark-web alerts** if your data is ever leaked.": [ + "Το ${ VPN_SHORT_APP_NAME } αποκρύπτει την επισκεψιμότητά σας. Το ${ PASS_SHORT_APP_NAME } αποκρύπτει την ταυτότητά σας\n— απεριόριστα **hide-my-email ψευδώνυμα** και **ειδοποιήσεις dark-web** εάν τα δεδομένα σας διαρρεύσουν ποτέ." + ], "${ vpnPlus } required for Country level connection.": [ "${ vpnPlus } απαιτείται για σύνδεση επιπέδου Χώρας." ], @@ -9582,6 +9977,9 @@ "(formerly Twitter)": [ "(πρώην Twitter)" ], + "**${ appName }** is not available for your account.": [ + "**${ appName }** δεν είναι διαθέσιμο για τον λογαριασμό σας." + ], "**${ appName }** is not supported in your organization **${ organizationName }**.": [ "Το **${ appName }** δεν υποστηρίζεται στον οργανισμό σας **${ organizationName }**." ], @@ -9698,6 +10096,9 @@ "Activity Monitor": [ "Παρακολούθηση Δραστηριότητας" ], + "Add ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }": [ + "Προσθήκη ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }" + ], "Add ${ PLAN_NAMES[PLANS.MEET_BUSINESS] }": [ "Προσθήκη ${ PLAN_NAMES[PLANS.MEET_BUSINESS] }" ], @@ -9744,9 +10145,9 @@ "Add your name and logo to create a more personalized experience for your organization.": [ "Προσθέστε το όνομα και το λογότυπό σας για να δημιουργήσετε μια πιο εξατομικευμένη εμπειρία για τον οργανισμό σας." ], - "Adding ${ addedServerCount } gateway server": [ - "Προσθήκη ${ addedServerCount } διακομιστή πύλης", - "Προσθήκη ${ addedServerCount } διακομιστών πύλης" + "Adding ${ total } gateway server": [ + "Προσθήκη ${ total } διακομιστή πύλης", + "Προσθήκη ${ total } διακομιστών πύλης" ], "Adding an external email address will disable end-to-end encryption for all email communication within that group. Do you want to proceed?": [ "Η προσθήκη μιας εξωτερικής διεύθυνσης ηλεκτρονικού ταχυδρομείου θα απενεργοποιήσει την κρυπτογράφηση από άκρο σε άκρο για όλες τις επικοινωνίες ηλεκτρονικού ταχυδρομείου εντός αυτής της ομάδας. Θέλετε να προχωρήσετε;" @@ -9927,6 +10328,9 @@ "Are you sure you want to revoke certificate **${ name }**": [ "Είστε σίγουροι ότι θέλετε να ανακαλέσετε το πιστοποιητικό **${ name }**" ], + "Are you sure you want to sign out of this account?": [ + "Σίγουρα θες να αποσυνδεθείς από αυτό τον λογαριασμό;" + ], "Are you sure you want to sort your folders alphabetically?": [ "Είστε σίγουροι ότι θέλετε να ταξινομήσετε τους φακέλους σας αλφαβητικά;" ], @@ -10023,6 +10427,9 @@ "Before you can start sending and receiving emails from your new addresses you need to create encryption keys for them.": [ "Προτού αρχίσετε να στέλνετε και να λαμβάνετε μηνύματα ηλεκτρονικού ταχυδρομείου από τις νέες διευθύνσεις σας, πρέπει πρώτα να δημιουργήσετε κλειδιά κρυπτογράφησης για αυτά." ], + "BEST FOR TV": [ + "ΚΑΛΥΤΕΡΟ ΓΙΑ ΤΗΛΕΟΡΑΣΗ" + ], "Beta": [ "Beta (Δοκιμαστική)" ], @@ -10086,9 +10493,6 @@ "Change your password": [ "Αλλάξτε τον κωδικό πρόσβασής σας" ], - "Check the status of imports and forwarding.": [ - "Ελέγξτε την κατάσταση των εισαγωγών και της προώθησης." - ], "Check your network and try again.": [ "Ελέγξτε το δίκτυό σας και δοκιμάστε ξανά." ], @@ -10122,6 +10526,9 @@ "CNET editors choice award with a rating of 8.4 out of 10": [ "Βραβείο επιλογής συντακτών CNET με βαθμολογία 8,4 στα 10" ], + "Code has been re-sent.": [ + "Ο κωδικός έχει σταλεί ξανά." + ], "Coming soon": [ "Έρχεται σύντομα" ], @@ -10137,6 +10544,9 @@ "Configure SAML authentication for your organization through an identity provider like Okta, Microsoft Azure, or Google Identity Platform. This will enable SAML for the whole organization.": [ "Ρυθμίστε τις παραμέτρους ελέγχου ταυτότητας SAML για τον οργανισμό σας μέσω μιας υπηρεσίας παροχής ταυτότητας όπως Okta, Microsoft Azure, ή Google Identity Platform. Αυτό θα ενεργοποιήσει το SAML για ολόκληρο τον οργανισμό." ], + "Connect and manage your external mailboxes in ${ MAIL_APP_NAME }.": [ + "Συνδέστε και διαχειριστείτε τα εξωτερικά σας γραμματοκιβώτια στο ${ MAIL_APP_NAME }." + ], "Connection data will be available in around 1 hour.": [ "Τα δεδομένα σύνδεσης θα είναι διαθέσιμα σε περίπου 1 ώρα." ], @@ -10155,6 +10565,9 @@ "Continue to connect this entity with your ${ BRAND_NAME } organization.": [ "Συνεχίστε για να συνδέσετε αυτήν την οντότητα με τον ${ BRAND_NAME } οργανισμό σας." ], + "Continue with ${ BRAND_NAME } Free": [ + "Συνεχίστε με το ${ BRAND_NAME } Free" + ], "Continuing will connect your ${ BRAND_NAME } Account to ${ name }.": [ "Συνεχίζοντας θα συνδέσετε τον ${ BRAND_NAME } Λογαριασμό σας με το ${ name }." ], @@ -10195,9 +10608,9 @@ "Create a new code on your TV and try again.": [ "Δημιουργήστε έναν νέο κωδικό στην τηλεόρασή σας και δοκιμάστε ξανά." ], - "Create a secure cloud for ${ value } member": [ - "Δημιουργήστε ένα ασφαλές νέφος για ${ value } μέλος", - "Δημιουργήστε ένα ασφαλές νέφος για ${ value } μέλη" + "Create a secure cloud for ${ memberCount } member": [ + "Δημιουργήστε ένα ασφαλές cloud για ${ memberCount } μέλος", + "Δημιουργήστε ένα ασφαλές cloud για ${ memberCount } μέλη" ], "Create an account": [ "Δημιουργία λογαριασμού" @@ -10215,6 +10628,10 @@ "Δημιουργία διακομιστή πύλης: ${ serverNumber } / ${ total }", "Δημιουργία διακομιστών πύλης: ${ serverNumber } / ${ total }" ], + "Creating gateway with ${ total } server": [ + "Δημιουργία πύλης με ${ total } διακομιστή", + "Δημιουργία πύλης με ${ total } διακομιστές" + ], "Creating your account": [ "Δημιουργία του λογαριασμού σας" ], @@ -10263,6 +10680,9 @@ "Data recoverable with recovery phrase": [ "Ανακτήσιμα δεδομένα με φράση ανάκτησης" ], + "Data recovery requires a password reset option (email or SMS)": [ + "Η ανάκτηση δεδομένων απαιτεί επιλογή επαναφοράς κωδικού (ηλεκτρονικό ταχυδρομείο ή SMS)" + ], "dedicated servers": [ "αφοσιωμένοι διακομιστές" ], @@ -10646,12 +11066,12 @@ "For easy access to your passwords and more.": [ "Για εύκολη πρόσβαση στους κωδικούς πρόσβασής σας και πολλά άλλα." ], + "For just ${ bundlePlanPriceInline }": [ + "Μόνο για ${ bundlePlanPriceInline }" + ], "For users who are switching to ${ MAIL_APP_NAME } from another email service, select the ${ boldAddresses } tab and add all active email addresses before changing the MX record to ensure a smooth transition.": [ "Για χρήστες που μεταβαίνουν σε ${ MAIL_APP_NAME } από άλλη υπηρεσία ηλεκτρονικού ταχυδρομείου, επιλέξτε την καρτέλα ${ boldAddresses } και προσθέστε όλες τις ενεργές διευθύνσεις ηλεκτρονικού ταχυδρομείου πριν αλλάξετε την εγγραφή MX για να διασφαλίσετε την ομαλή μετάβαση." ], - "Forwarding automatically sends new incoming emails to your Inbox.": [ - "Η προώθηση στέλνει αυτόματα τα νέα εισερχόμενα μηνύματα στο φάκελο Εισερχόμενα." - ], "Free forever": [ "Δωρεάν για πάντα" ], @@ -10679,6 +11099,9 @@ "Gateways": [ "Πύλες" ], + "Generating a new recovery phrase will deactivate your current recovery phrase.": [ + "Η δημιουργία μιας νέας φράσης ανάκτησης θα απενεργοποιήσει την τρέχουσα φράση ανάκτησής σας." + ], "Generating a new recovery phrase will deactivate your old one.": [ "Η παραγωγή μιας νέας φράσης ανάκτησης θα απενεργοποιήσει την παλιά σας." ], @@ -10700,12 +11123,18 @@ "Get notified if your password or other personal data was leaked. ${ learnMoreLinkNoBreach }": [ "Λάβετε ειδοποίηση εάν ο κωδικός πρόσβασής σας ή άλλα προσωπικά δεδομένα έχουν διαρρεύσει. ${ learnMoreLinkNoBreach }" ], + "Get started": [ + "Ας ξεκινήσουμε" + ], "Get started with the referral link above.": [ "Ξεκινήστε με τον σύνδεσμο παραπομπής παραπάνω." ], "Get visibility into account access": [ "Αποκτήστε ορατότητα στην πρόσβαση λογαριασμού" ], + "Get VPN Plus": [ + "Αποκτήστε το VPN Plus" + ], "Give the token a descriptive name, such as the service you plan to use it with, and select one of your active custom domain addresses. Only this address will be able to send emails with this token.": [ "Δώστε στο διακριτικό ένα περιγραφικό όνομα, όπως την υπηρεσία με την οποία σκοπεύετε να το χρησιμοποιήσετε και επιλέξτε μία από τις ενεργές προσαρμοσμένες διευθύνσεις τομέα σας. Μόνο αυτή η διεύθυνση θα μπορεί να στέλνει μηνύματα ηλ. ταχυδρομείου με αυτό το διακριτικό." ], @@ -10912,6 +11341,9 @@ "Include device, location, and IP details": [ "Περίληψη στοιχεία συσκευής, τοποθεσίας και IP" ], + "Included": [ + "Περιλαμβάνονται" + ], "Increase your account security by verifying your email address.": [ "Αυξήστε την ασφάλεια του λογαριασμού σας επαληθεύοντας τη διεύθυνση ηλεκτρονικού ταχυδρομείου σας." ], @@ -11258,15 +11690,15 @@ "No card required": [ "Δεν απαιτείται κάρτα" ], + "No connected addresses.": [ + "Δεν υπάρχουν συνδεδεμένες διευθύνσεις." + ], "No countries enabled": [ "Δεν υπάρχουν ενεργοποιημένες χώρες" ], "No folder selected": [ "Δεν επιλέχθηκε φάκελος" ], - "No forwarding history.": [ - "Δεν υπάρχει ιστορικό προώθησης." - ], "No gateways": [ "Δεν υπάρχουν πύλες" ], @@ -11330,6 +11762,9 @@ "Only change these settings if you are using PGP with non-${ BRAND_NAME } recipients.": [ "Αλλάξτε αυτές τις ρυθμίσεις μόνο αν χρησιμοποιείτε PGP με παραλήπτες εκτός ${ BRAND_NAME }." ], + "Only sign in on devices you trust": [ + "Συνδεθείτε μόνο σε συσκευές που εμπιστεύεστε" + ], "Only you can see the label": [ "Μόνο εσείς μπορείτε να δείτε την ετικέτα" ], @@ -11595,6 +12030,9 @@ "Recently used servers:": [ "Πρόσφατα χρησιμοποιημένοι διακομιστές:" ], + "RECOMMENDED": [ + "ΠΡΟΤΕΙΝΟΜΕΝΑ" + ], "Recommended on trusted devices. ${ keepMeSignedInLearnMoreLink }": [ "Συνιστάται σε αξιόπιστες συσκευές. ${ keepMeSignedInLearnMoreLink }" ], @@ -11757,6 +12195,9 @@ "Set up your organization": [ "Ρυθμίστε τον οργανισμό σας" ], + "Set up your organization and start protecting your data in a few easy steps.": [ + "Ρυθμίστε την οργάνωσή σας και ξεκινήστε να προστατεύετε τα δεδομένα σας με μερικά απλά βήματα." + ], "Setting successfully saved": [ "Η ρύθμιση αποθηκεύτηκε με επιτυχία" ], @@ -11794,6 +12235,12 @@ "Show each sender's image in the message list. The sender's initials will be shown if a photo is not available.": [ "Να εμφανίζεται η εικόνα κάθε αποστολέα στη λίστα μηνυμάτων. Τα αρχικά του αποστολέα θα εμφανίζονται εάν μια φωτογραφία δεν είναι διαθέσιμη." ], + "Show fewer benefits": [ + "Εμφάνιση λιγότερων προνομίων" + ], + "Show more benefits": [ + "Εμφάνιση περισσότερων προνομίων" + ], "Show original message": [ "Προβολή αρχικού μηνύματος" ], @@ -11839,9 +12286,6 @@ "Something went wrong. Please try again or contact customer support.": [ "Κάτι πήγε στραβά. Παρακαλούμε δοκιμάστε ξανά ή επικοινωνήστε με την υποστήριξη πελατών." ], - "Something went wrong. Please try again.": [ - "Κάτι πήγε στραβά. Παρακαλούμε δοκιμάστε ξανά." - ], "Specify the domain which is allowed to authenticate with SAML SSO.": [ "Καθορίστε τον τομέα στον οποίο επιτρέπεται ο έλεγχος ταυτότητας με SAML SSO." ], @@ -11931,6 +12375,9 @@ "TechRadar Pro recommended with a rating of 4.2 out of 5 stars": [ "Το TechRadar Pro το συνιστά με βαθμολογία 4,2 στα 5 αστέρια" ], + "Temporarily unavailable due to high demand. Please try again later.": [ + "Προσωρινά μη διαθέσιμο λόγω υψηλής ζήτησης. Παρακαλούμε δοκιμάστε ξανά αργότερα." + ], "Temporarily unavailable. Please check back later.": [ "Προσωρινά μη διαθέσιμο. Παρακαλούμε ελέγξτε ξανά αργότερα." ], @@ -12063,6 +12510,9 @@ "This could take some time. Please do not close this page or disconnect from the internet.": [ "Αυτό μπορεί να διαρκέσει αρκετό χρόνο. Μην κλείνετε αυτή τη σελίδα και μην αποσυνδέεστε από το διαδίκτυο." ], + "This data recovery method requires a password reset option (email or SMS)": [ + "Αυτή η μέθοδος ανάκτησης δεδομένων απαιτεί επιλογή επαναφοράς κωδικού (email ή SMS)" + ], "This feature delays sending your emails, giving you the opportunity to undo send during the selected time frame.": [ "Αυτή η λειτουργία καθυστερεί την αποστολή των μηνυμάτων σας, δίνοντάς σας την δυνατότητα να αναιρέσετε την αποστολή κατά τη διάρκεια του επιλεγμένου χρονικού πλαισίου." ], @@ -12123,6 +12573,9 @@ "This verification can take up to one hour. After successful verification, do not remove the TXT record as it is needed to confirm that you continue to own the domain.": [ "Αυτή η επαλήθευση μπορεί να διαρκέσει έως και μία ώρα. Μετά την επιτυχή επαλήθευση, μην καταργήσετε την εγγραφή TXT, καθώς είναι απαραίτητη για να επιβεβαιώσετε ότι εξακολουθείτε να είστε κάτοχος του τομέα." ], + "This will allow the TV to access your ${ BRAND_NAME } account.": [ + "Αυτό θα επιτρέψει στην τηλεόραση να έχει πρόσβαση στον λογαριασμό σας ${ BRAND_NAME }." + ], "This will delete all previous versions of your files older than ${ rententionLabel }.": [ "Αυτό θα διαγράψει όλες τις προηγούμενες εκδόσεις των αρχείων σας που είναι παλαιότερες από ${ rententionLabel }." ], @@ -12219,8 +12672,8 @@ "To decrypt and view your locked data after a password reset, select a recovery method.": [ "Για αποκρυπτογράφηση και προβολή των κλειδωμένων δεδομένων σας μετά από επαναφορά κωδικού πρόσβασης, επιλέξτε μια μέθοδο ανάκτησης." ], - "To ensure the highest possible security of your account, disable **QR code sign-in**.": [ - "Για να διασφαλίσετε τη μέγιστη δυνατή ασφάλεια του λογαριασμού σας, απενεργοποιήστε την **είσοδο με κωδικό QR**." + "To enable post-quantum protection, you’ll need to finish generating your new post-quantum encryption keys.": [ + "Για να ενεργοποιήσετε τη μετα-κβαντική προστασία, θα πρέπει να ολοκληρώσετε τη δημιουργία των νέων κλειδιών κρυπτογράφησης μετά την κβαντική." ], "To ensure the highest possible security of your account, disable **Recovery by recovery email**.": [ "Για να διασφαλίσετε τη μέγιστη δυνατή ασφάλεια του λογαριασμού σας, απενεργοποιήστε την **Ανάκτηση μέσω ηλεκτρονικής διεύθυνσης ανάκτησης**." @@ -12228,18 +12681,12 @@ "To ensure the highest possible security of your account, disable **Recovery by recovery phone**.": [ "Για να διασφαλίσετε τη μέγιστη δυνατή ασφάλεια του λογαριασμού σας, απενεργοποιήστε την **Ανάκτηση μέσω τηλεφώνου ανάκτησης**." ], - "To ensure the highest possible security of your account, disable **Signed-in reset**.": [ - "Για να διασφαλίσετε τη μέγιστη δυνατή ασφάλεια του λογαριασμού σας, απενεργοποιήστε την **Επαναφορά συνδεδεμένου χρήστη**." - ], "To ensure you don’t lose important data, ${ DRIVE_APP_NAME } saves older versions of your files as you and your collaborators make changes. Select how long ${ BRAND_NAME } should keep previous versions.": [ "Για να διασφαλίσετε ότι δε θα χάσετε σημαντικά δεδομένα, το ${ DRIVE_APP_NAME } αποθηκεύει παλαιότερες εκδόσεις των αρχείων σας καθώς εσείς και οι συνεργάτες σας κάνετε αλλαγές. Επιλέξτε πόσο καιρό το ${ BRAND_NAME } θα πρέπει να διατηρεί τις προηγούμενες εκδόσεις." ], "To fight spam and abuse, please verify you are human.": [ "Για την καταπολέμηση ενοχλήσεων και καταχρήσεων, παρακαλούμε επαληθεύστε ότι είστε άνθρωπος." ], - "To help keep your account safe, we want to make sure it's really you trying to sign in.": [ - "Για να βοηθήσουμε να διατηρηθεί ο λογαριασμός σας ασφαλής, θέλουμε να βεβαιωθούμε ότι είστε πραγματικά εσείς που προσπαθείτε να συνδεθείτε." - ], "To help keep your account safe, we want to make sure it’s really you trying to sign in.": [ "Για να βοηθήσουμε να διατηρηθεί ο λογαριασμός σας ασφαλής, θέλουμε να βεβαιωθούμε ότι είστε πραγματικά εσείς που προσπαθείτε να συνδεθείτε." ], @@ -12333,6 +12780,9 @@ "Unless you sign out of your account or change your password, your session will remain active. Sessions expire after 60 days of inactivity.": [ "Εφόσον δεν εξέλθετε του λογαριασμού σας, ούτε αλλάξετε τον κωδικό πρόσβασής σας, η συνεδρία σας θα παραμείνει ενεργή. Οι συνεδρίες λήγουν μετά από 60 ημέρες αδράνειας." ], + "Unlock streaming with VPN Plus.": [ + "Ξεκλειδώστε τη ροή με το VPN Plus." + ], "Unsaved changes": [ "Μη αποθηκευμένες αλλαγές" ], @@ -12348,9 +12798,15 @@ "Unverified email address.": [ "Μη επαληθευμένη διεύθυνση ηλεκτρονικού ταχυδρομείου." ], + "Upgrade anytime to bring over the rest": [ + "Αναβαθμίστε οποιαδήποτε στιγμή για να φέρετε τα υπόλοιπα" + ], "Upgrade now to get premium features, products and storage at a special price": [ "Αναβαθμίστε τώρα τον λογαριασμό σας για να λάβετε premium χαρακτηριστικά, προϊόντα και αποθηκευτικό χώρο σε ειδική τιμή" ], + "Upgrade or clear space anytime to bring over the rest": [ + "Αναβαθμίστε ή εκκενώστε χώρο οποιαδήποτε στιγμή για να φέρετε τα υπόλοιπα" + ], "Upgrade to add a shorter @pm.me address to your account that is easier to share. It stands for “${ MAIL_APP_NAME } me” or “Private Message me”.": [ "Κάντε αναβάθμιση για να προσθέσετε μια συντομότερη διεύθυνση @pm.me στον λογαριασμό σας, η οποία θα είναι πιο εύκολη στην κοινή χρήση. Σημαίνει \"${ MAIL_APP_NAME } me\" ή \"Private Message me\". (Στείλε μου Προσωπικό Μήνυμα)" ], @@ -12480,6 +12936,9 @@ "Visa Secure logo": [ "λογότυπο Visa Secure" ], + "VPN Plus": [ + "VPN Plus" + ], "VPN with dedicated servers and IP addresses": [ "VPN με αποκλειστικούς διακομιστές και διευθύνσεις IP" ], @@ -12733,9 +13192,6 @@ "You can edit this once to ensure the correct email address for verification.": [ "Μπορείτε να το επεξεργαστείτε αυτό μία φορά για να διασφαλίσετε τη σωστή διεύθυνση ηλεκτρονικού ταχυδρομείου για επαλήθευση." ], - "You can enable the Photos section from the interface using the toggle below.": [ - "Μπορείτε να ενεργοποιήσετε την ενότητα Φωτογραφίες από τη διεπαφή με τον παρακάτω διακόπτη." - ], "You can enforce the password rules members of your organization will use when they create or reset the password to their ${ BRAND_NAME } Account.": [ "Μπορείτε να επιβάλετε τους κανόνες κωδικού που θα χρησιμοποιούν τα μέλη του οργανισμού σας όταν δημιουργούν ή κάνουν επαναφορά του κωδικού πρόσβασης για τον ${ BRAND_NAME } λογαριασμό τους." ], @@ -13025,8 +13481,8 @@ "Your recovery phrase is a series of 12 randomly generated words in a specific order.": [ "Η φράση ανάκτησης είναι μια σειρά από 12 τυχαία δημιουργημένες λέξεις με συγκεκριμένη σειρά." ], - "Your recovery phrase—contained in your Recovery Kit—will allow you to sign in and recover your data if you get locked out of your ${ BRAND_NAME } Account. It’s is composed of 12 words and acts like a backup password.": [ - "Η φράση ανάκτησής σας—που περιέχεται στο Κιτ Ανάκτησης σας—θα σας επιτρέψει να συνδεθείτε και να ανακτήσετε τα δεδομένα σας σε περίπτωση που κλειδωθείτε έξω από τον ${ BRAND_NAME } λογαριασμό σας. Αποτελείται από 12 λέξεις και λειτουργεί σαν εφεδρικός κωδικός πρόσβασης." + "Your recovery phrase will allow you to sign in and recover your data if you get locked out of your ${ BRAND_NAME } Account. It is composed of 12 words and acts like a backup password.": [ + "Η φράση ανάκτησής σας θα σας επιτρέψει να συνδεθείτε και να ανακτήσετε τα δεδομένα σας εάν κλειδωθείτε έξω από τον λογαριασμό σας ${ BRAND_NAME }. Αποτελείται από 12 λέξεις και λειτουργεί σαν εφεδρικός κωδικός πρόσβασης." ], "Your scheduled plan starts on ${ renewalTime } and will auto-renew every ${ cycle } month.": [ "Το προγραμματισμένο πλάνο σας ξεκινά από ${ renewalTime } και θα ανανεώνεται αυτόματα κάθε ${ cycle } μήνα.", @@ -13673,6 +14129,9 @@ "${ PROTON_SENTINEL_NAME } protection": [ "${ PROTON_SENTINEL_NAME } προστασία" ], + "${ value.length }/${ maxLength } characters": [ + "${ value.length }/${ maxLength } χαρακτήρες" + ], "(Temporarily unavailable. Please check back later.)": [ "(Προσωρινά μη διαθέσιμο. Παρακαλούμε ελέγξτε ξανά αργότερα.)" ], @@ -14066,6 +14525,9 @@ "Confirm login password": [ "Επιβεβαίωση κωδικού σύνδεσης" ], + "Confirm MX records added": [ + "Επιβεβαίωση προσθήκης εγγραφών MX" + ], "Confirm new password": [ "Επιβεβαίωση νέου κωδικού" ], @@ -14268,6 +14730,9 @@ "Enable ${ DARK_WEB_MONITORING_NAME } for ${ domain.DomainName }": [ "Ενεργοποίηση ${ DARK_WEB_MONITORING_NAME } για ${ domain.DomainName }" ], + "Enable categories": [ + "Ενεργοποίηση κατηγοριών" + ], "Enabled": [ "Ενεργοποιημένο" ], @@ -14415,6 +14880,9 @@ "Highest VPN speed": [ "Ύψιστη ταχύτητα VPN" ], + "Host name": [ + "Όνομα εξυπηρετητή" + ], "I understand that I'll need to add this email address to the other account immediately, to avoid losing this address permanently.": [ "Καταλαβαίνω ότι θα πρέπει να προσθέσω αυτήν τη διεύθυνση ηλεκτρονικού ταχυδρομείου στον άλλο λογαριασμό αμέσως, για να μη χάσω μόνιμα αυτήν τη διεύθυνση." ], @@ -14607,6 +15075,9 @@ "Must have at least ${ MIN_PASSWORD_LENGTH } characters": [ "Πρέπει να περιέχει τουλάχιστον ${ MIN_PASSWORD_LENGTH } χαρακτήρες" ], + "MX records": [ + "Εγγραφές MX" + ], "Name": [ "Όνομα" ], @@ -14745,6 +15216,9 @@ "Pending": [ "Σε εκκρεμότητα" ], + "Personal and work emails, plus important updates and notifications": [ + "Προσωπικά και επαγγελματικά μηνύματα ηλεκτρονικού ταχυδρομείου, καθώς και σημαντικές ενημερώσεις και ειδοποιήσεις" + ], "Phone number": [ "Αριθμός τηλεφώνου" ], @@ -14787,6 +15261,9 @@ "Primary": [ "Κύριο" ], + "Priority": [ + "Προτεραιότητα" + ], "Priority support": [ "Υποστήριξη κατά προτεραιότητα" ], @@ -15205,6 +15682,9 @@ "Yes, I want to permanently delete this account and all its data.": [ "Ναι, θέλω να διαγράψω οριστικά αυτόν τον λογαριασμό και όλα τα δεδομένα του." ], + "You don't have permissions": [ + "Δεν έχετε δικαιώματα" + ], "Your activation code:": [ "Ο κωδικός ενεργοποίησης σας:" ], @@ -15254,6 +15734,9 @@ ], "Recovery phrase": [ "Φράση ανάκτησης" + ], + "Set recovery phone number": [ + "Ορίστε αριθμό τηλεφώνου ανάκτησης" ] }, "Label (begin date/advanced search)": { @@ -15295,6 +15778,26 @@ "Παρακαλούμε προσθέστε την ακόλουθη εγγραφή TXT. Σημειώστε: οι εγγραφές DNS ενδέχεται να χρειαστούν αρκετές ώρες για να ενημερωθούν." ] }, + "Label for domain setup": { + "${ capitalizedGroup } record not found": [ + "Η εγγραφή ${ capitalizedGroup } δεν βρέθηκε" + ], + "Host name": [ + "Όνομα εξυπηρετητή" + ], + "Invalid ${ group.name } record found": [ + "Βρέθηκε μη έγκυρη εγγραφή ${ group.name }" + ], + "Type": [ + "Τύπος" + ], + "Use default value": [ + "Χρήση προκαθορισμένης τιμής" + ], + "Valid ${ group.name } record found": [ + "Βρέθηκε έγκυρη εγγραφή ${ group.name }" + ] + }, "Label for new member": { "Admin": [ "Διαχειριστής" @@ -15460,6 +15963,9 @@ "data recovery option": [ "επιλογή ανάκτησης δεδομένων" ], + "Detailed instructions": [ + "Λεπτομερείς οδηγίες" + ], "Details": [ "Λεπτομέρειες" ], @@ -15984,21 +16490,45 @@ "Built-in chat": [ "Ενσωματωμένη συνομιλία" ], + "Cloud storage and file sharing": [ + "Αποθήκευση στο cloud και κοινοποίηση αρχείων" + ], + "Data retention policies": [ + "Πολιτικές διατήρησης δεδομένων" + ], + "Document and spreadsheet editor": [ + "Επεξεργαστής εγγράφων και υπολογιστικών φύλλων" + ], + "Email writing assistant": [ + "Βοηθός σύνταξης ηλεκτρονικού ταχυδρομείου" + ], "End-to-end encrypted screen sharing and ephemeral in-call chat": [ "Κρυπτογραφημένη κοινή χρήση οθόνης διατερματικά και εφήμερη συνομιλία κατά τη διάρκεια της κλήσης" ], "Hosts can record meetings locally on their computers": [ "Οι οικοδεσπότες μπορούν να καταγράφουν τις συσκέψεις τοπικά στους υπολογιστές τους" ], + "Includes Meet Professional": [ + "Συμπεριλαμβάνει το Meet Professional" + ], "Meeting recording": [ "Ηχογράφηση σύσκεψης" ], "One active meeting at a time": [ "Μία ενεργή σύσκεψη τη φορά" ], + "Password manager with team vaults": [ + "Διαχειριστής κωδικών πρόσβασης με ομαδικές κρύπτες" + ], + "Private AI Chat (${ LUMO_SHORT_APP_NAME })": [ + "Ιδιωτική συνομιλία με τεχνητή νοημοσύνη (${ LUMO_SHORT_APP_NAME })" + ], "Screen-sharing": [ "Κοινή χρήση οθόνης" ], + "Secure mail and calendar": [ + "Ασφαλής αλληλογραφία και ημερολόγιο" + ], "Unlimited meetings per day": [ "Απεριόριστες συσκέψεις ανά ημέρα" ], @@ -16013,6 +16543,9 @@ "Video meetings, ${ n } participant": [ "Βιντεοκλήσεις, ${ n } συμμετέχων", "Βιντεοκλήσεις, ${ n } συμμετέχοντες" + ], + "VPN with ad-blocker and malware protection": [ + "VPN με αποκλεισμός διαφημίσεων και προστασία από κακόβουλο λογισμικό" ] }, "meet_2025: Info": { @@ -16682,6 +17215,9 @@ "99.95% SLA": [ "99.95% SLA" ], + "Access all countries": [ + "Πρόσβαση σε όλες τις χώρες" + ], "Activity logs and policy": [ "Αρχεία καταγραφής δραστηριότητας και πολιτική" ], @@ -16703,6 +17239,9 @@ "Advanced network security": [ "Προχωρημένη ασφάλεια δικτύου" ], + "Advanced workspace security": [ + "Προηγμένη ασφάλεια χώρου εργασίας" + ], "All ${ BRAND_NAME } products and features": [ "Όλα τα προϊόντα και δυνατότητες ${ BRAND_NAME }" ], @@ -16861,6 +17400,9 @@ "Multiple admin roles": [ "Πολλαπλοί ρόλοι διαχειριστή" ], + "No streaming support": [ + "Δεν υπάρχει υποστήριξη ροής" + ], "No-logs policy": [ "Πολιτική μη διατήρησης αρχείων καταγραφής" ], @@ -17027,6 +17569,9 @@ "Unlimited volume/bandwidth": [ "Απεριόριστος όγκος / εύρος ζώνης" ], + "Unlock streaming": [ + "Ξεκλειδώστε τη ροή" + ], "Up to ${ n } user": [ "Μέχρι και ${ n } χρήστη", "Μέχρι και ${ n } χρήστες" @@ -17501,6 +18046,10 @@ ] }, "new_plans: Upsell attribute": { + "${ n } country": [ + "${ n } χώρα", + "${ n } χώρες" + ], "Access advanced VPN features": [ "Πρόσβαση σε προηγμένα χαρακτηριστικά VPN" ], @@ -17562,8 +18111,8 @@ "${ app } product updates": [ "Ενημερώσεις προϊόντος ${ app }" ], - "${ BRAND_NAME } for Business newsletter": [ - "Ενημερωτικό δελτίο ${ BRAND_NAME } για επιχειρήσεις" + "${ BRAND_NAME } for Business communications": [ + "${ BRAND_NAME } για Επιχειρησιακές επικοινωνίες" ], "${ BRAND_NAME } important announcements": [ "Σημαντικές ανακοινώσεις του ${ BRAND_NAME }" @@ -17616,8 +18165,8 @@ "During your first month of using a ${ BRAND_NAME } product": [ "Κατά τη διάρκεια του πρώτου μήνα χρήσης ενός προϊόντος ${ BRAND_NAME }" ], - "Email subscriptions": [ - "Συνδρομές Email" + "Email communications": [ + "Επικοινωνίες μέσω email" ], "In-app notifications": [ "Ειδοποιήσεις εντός εφαρμογής" @@ -18208,6 +18757,9 @@ "Plain text": [ "Ακατέργαστο κείμενο" ], + "Push notifications": [ + "Προώθηση ειδοποιήσεων" + ], "Receive from all": [ "Λήψη από όλους" ], @@ -18704,14 +19256,14 @@ "per month, billed every two years": [ "ανά μήνα, χρεώνεται κάθε δύο χρόνια" ], - "Preparing your Recovery Kit": [ - "Προετοιμασία του Κιτ Αποκατάστασης" + "Preparing your recovery phrase": [ + "Προετοιμασία της φράσης ανάκτησης σας" ], "Protected by Swiss privacy laws": [ "Προστατεύεται από τους Ελβετικούς νόμους περί απορρήτου" ], - "Save your recovery kit to continue": [ - "Αποθηκεύστε το κιτ αποκατάστασης σας για να συνεχίσετε" + "Save your recovery phrase to continue": [ + "Αποθηκεύστε τη φράση ανάκτησης σας για να συνεχίσετε" ], "Secure vault sharing": [ "Ασφαλής κοινή χρήση κρύπτης" @@ -19431,6 +19983,9 @@ "Search for an email or IP address": [ "Αναζήτηση διεύθυνσης ηλεκτρονικού ταχυδρομείου ή IP" ], + "Search for users or addresses": [ + "Αναζήτηση χρηστών ή διευθύνσεων" + ], "Search parent folder": [ "Αναζήτηση σε γονικό φάκελο" ], @@ -19580,18 +20135,18 @@ ] }, "PQC account key generation": { - "Couldn’t generate keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\n${ settingsLink } and select 'Generate key' for your account and for each address.": [ - "Δεν ήταν δυνατή η δημιουργία κλειδιών. Για να ενεργοποιήσετε την προστασία μετά την κβαντική εποχή, θα πρέπει να δημιουργήσετε τα νέα κλειδιά κρυπτογράφησης χειροκίνητα.\n\n${ settingsLink } και επιλέξτε 'Δημιουργία κλειδιού' για τον λογαριασμό σας και για κάθε διεύθυνση." + "Couldn’t generate keys. To activate post-quantum protection, you’ll need to finish generating your new post-quantum encryption keys.\n\n${ goToSettingsLink } and select 'Generate missing keys'.": [ + "Δεν ήταν δυνατή η δημιουργία κλειδιών. Για να ενεργοποιήσετε την προστασία μετά την κβαντική εποχή, θα πρέπει να ολοκληρώσετε τη δημιουργία των νέων κλειδιών κρυπτογράφησης μετά-κβαντικής εποχής.\n\n${ goToSettingsLink } και επιλέξτε «Δημιουργία κλειδιών που λείπουν»." ] }, "PQC adress key generation": { - "Couldn’t generate address keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\nGo to ${ settingsLink } and select 'Generate key' for each address.": [ - "Δεν ήταν δυνατή η δημιουργία κλειδιών διεύθυνσης. Για να ενεργοποιήσετε την προστασία μετά την κβαντική εποχή, θα πρέπει να δημιουργήσετε τα νέα κλειδιά κρυπτογράφησης χειροκίνητα.\n\nΜεταβείτε στο ${ settingsLink } και επιλέξτε 'Δημιουργία κλειδιού' για κάθε διεύθυνση." + "Couldn’t generate address keys. To activate post-quantum protection, you’ll need to finish generating your new post-quantum encryption keys for each address.\n\n${ goToSettingsLink } and select 'Generate missing keys'.": [ + "Δεν ήταν δυνατή η δημιουργία κλειδιών διεύθυνσης. Για να ενεργοποιήσετε την προστασία μετά την κβαντική εποχή, θα πρέπει να ολοκληρώσετε τη δημιουργία των νέων κλειδιών κρυπτογράφησης μετά-κβαντικής εποχής για κάθε διεύθυνση.\n\n${ goToSettingsLink } και επιλέξτε «Δημιουργία κλειδιών που λείπουν»." ] }, "PQC compatibility warning": { - "**You must update all ${ BRAND_NAME } mobile apps**: your new keys won't work on older app versions.": [ - "**Πρέπει να ενημερώσετε όλες τις εφαρμογές για κινητά ${ BRAND_NAME }**: τα νέα κλειδιά σας δε θα λειτουργούν σε παλαιότερες εκδόσεις της εφαρμογής." + "**You must update all ${ BRAND_NAME } apps**: your new keys won't work on older app versions.": [ + "**Πρέπει να ενημερώσετε όλες τις εφαρμογές ${ BRAND_NAME }**: τα νέα σας κλειδιά δε θα λειτουργούν σε παλαιότερες εκδόσεις εφαρμογών." ] }, "PQC key generation": { @@ -19817,8 +20372,8 @@ "Add more options for stronger protection": [ "Προσθέστε περισσότερες επιλογές για ισχυρότερη προστασία" ], - "Add options to avoid getting locked out of your account.": [ - "Προσθέστε επιλογές για να αποφύγετε το κλείδωμα του λογαριασμού σας." + "Add more options to avoid getting locked out of your account.": [ + "Προσθέστε περισσότερες επιλογές για να αποφύγετε το κλείδωμα του λογαριασμού σας." ], "Awesome. Keep your options up-to-date for stronger protection.": [ "Τέλεια. Διατηρήστε τις επιλογές σας ενημερωμένες για ισχυρότερη προστασία." @@ -19832,12 +20387,21 @@ "How you increased your account protection": [ "Πώς αυξήσατε την προστασία του λογαριασμού σας" ], + "Inactive recovery options": [ + "Ανενεργές επιλογές ανάκτησης" + ], "Maximum": [ "Μέγιστο" ], "Partial": [ "Μερική" ], + "Recovery score: ${ score }": [ + "Βαθμολογία ανάκτησης: ${ score }" + ], + "Require verified password reset option (email or SMS)": [ + "Απαιτείται η επιλογή επαληθευμένης επαναφοράς κωδικού πρόσβασης (email ή SMS)" + ], "Score: ${ score } / ${ maxScore }": [ "Βαθμολογία: ${ score } / ${ maxScore }" ], @@ -19879,14 +20443,14 @@ "Download recovery file": [ "Κατέβασμα αρχείου ανάκτησης" ], - "Email verification enabled": [ - "Η επαλήθευση μέσω μηνύματος ηλεκτρονικού ταχυδρομείου ενεργοποιήθηκε" + "Email recovery enabled": [ + "Η ανάκτηση μέσω ηλεκτρονικού μηνύματος ενεργοποιήθηκε" ], "Emergency contacts added": [ "Προστέθηκαν επαφές έκτακτης ανάγκης" ], - "Enable recovery by email": [ - "Ενεργοποίηση ανάκτησης μέσω ηλεκτρονικού ταχυδρομείου" + "Enable email recovery": [ + "Ενεργοποίηση ανάκτησης email" ], "Enable recovery by phone": [ "Ενεργοποίηση ανάκτησης μέσω τηλεφώνου" @@ -19897,6 +20461,9 @@ "Password verified": [ "Ο Κωδικός πρόσβασης επαληθεύτηκε" ], + "Phone recovery enabled": [ + "Η τηλεφωνική ανάκτηση ενεργοποιήθηκε" + ], "Recovery contacts added": [ "Η επαφές ανάκτησης προστέθηκαν" ], @@ -19912,9 +20479,6 @@ "Sign-in with QR code allowed": [ "Επιτρέπεται η σύνδεση με κωδικό QR" ], - "SMS verification enabled": [ - "Η επαλήθευση μέσω SMS ενεργοποιήθηκε" - ], "Verify password": [ "Επαλήθευση κωδικού πρόσβασης" ], @@ -19937,6 +20501,9 @@ ] }, "RecoveryPhrase: Info": { + "**Make sure you keep your recovery phrase accessible after creating it.** For security reasons, we do not store the phrase after saving your changes, and you won’t be able to see it again in the ${ BRAND_NAME } app.": [ + "**Βεβαιωθείτε ότι κρατάτε προσβάσιμη τη φράση ανάκτησής σας μετά τη δημιουργία της.** Για λόγους ασφαλείας, δεν αποθηκεύουμε τη φράση μετά την αποθήκευση των αλλαγών σας και δε θα μπορείτε να τη δείτε ξανά στην εφαρμογή ${ BRAND_NAME }." + ], "copy recovery phrase": [ "αντιγραφή φράσης ανάκτησης" ], @@ -19958,14 +20525,11 @@ "Or ${ downloadRecoveryKitSwitchButton } instead.": [ "Ή ${ downloadRecoveryKitSwitchButton } αντί για αυτό." ], - "Your **Recovery Kit** lets you restore your ${ BRAND_NAME } Account if you’re locked out.": [ - "Το **Κιτ αποκατάστασης** σας επιτρέπει να επαναφέρετε τον λογαριασμό σας ${ BRAND_NAME } αν αποκλειστείτε." + "Your **recovery phrase** lets you restore your ${ BRAND_NAME } Account if you’re locked out.": [ + "Η **φράση ανάκτησης** σάς επιτρέπει να επαναφέρετε τον λογαριασμό σας ${ BRAND_NAME } εάν κλειδωθείτε έξω." ] }, "RecoveryPhrase: Title": { - "Save your Recovery Kit": [ - "Αποθηκεύστε το Κιτ Αποκατάστασης σας" - ], "Save your recovery phrase": [ "Αποθηκεύστε τη φράση ανάκτησής σας" ] @@ -20358,8 +20922,8 @@ "Back to Safety Review": [ "Πίσω στην Επισκόπηση Ασφάλειας" ], - "Because you reset your password, your current Recovery Kit can only be used to recover the data created before your password reset.": [ - "Επειδή επαναφέρετε τον κωδικό πρόσβασής σας, το τρέχον Κιτ Αποκατάστασης μπορεί να χρησιμοποιηθεί μόνο για την ανάκτηση των δεδομένων που δημιουργήθηκαν πριν από την επαναφορά του κωδικού πρόσβασης." + "Because you reset your password, your current recovery phrase can only be used to recover the data created before your password reset.": [ + "Επειδή επαναφέρετε τον κωδικό πρόσβασής σας, η τρέχουσα φράση ανάκτησης μπορεί να χρησιμοποιηθεί μόνο για την ανάκτηση των δεδομένων που δημιουργήθηκαν πριν από την επαναφορά του κωδικού πρόσβασής σας." ], "Can be used to regain access to your account and data": [ "Μπορεί να χρησιμοποιηθεί για την ανάκτηση πρόσβασης στον λογαριασμό και τα δεδομένα σας" @@ -20388,8 +20952,8 @@ "Download ${ size }": [ "Κατεβάστε ${ size }" ], - "Download your Recovery Kit": [ - "Λήψη του Κιτ Αποκατάστασης" + "Download your recovery phrase": [ + "Λήψη της φράσης ανάκτησης" ], "Email address": [ "Διεύθυνση ηλεκτρονικού ταχυδρομείου" @@ -20403,8 +20967,8 @@ "Enable recovery by phone": [ "Ενεργοποίηση ανάκτησης μέσω τηλεφώνου" ], - "I understand that I will not be able to recover currently locked data with this Recovery Kit": [ - "Κατανοώ ότι δε θα μπορέσω να ανακτήσω τα κλειδωμένα δεδομένα με αυτό το Κιτ Ανάκτησης" + "I understand that I will not be able to recover currently locked data with this recovery phrase": [ + "Κατανοώ ότι δε θα μπορέσω να ανακτήσω δεδομένα που είναι επί του παρόντος κλειδωμένα με αυτή τη φράση ανάκτησης" ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in on this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Εάν ξεχάσετε τον κωδικό πρόσβασης ${ BRAND_NAME } σας και πρέπει να τον επαναφέρετε, την επόμενη φορά που θα συνδεθείτε σε αυτήν τη συσκευή χρησιμοποιώντας τον νέο κωδικό πρόσβασης, θα αποκατασταθεί η πλήρης πρόσβαση στον ${ BRAND_NAME } λογαριασμό σας." @@ -20412,8 +20976,8 @@ "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Εάν ξεχάσετε τον κωδικό πρόσβασης ${ BRAND_NAME } σας και πρέπει να τον επαναφέρετε, την επόμενη φορά που θα συνδεθείτε σε αυτήν τη συσκευή χρησιμοποιώντας τον νέο κωδικό πρόσβασης, θα αποκατασταθεί η πλήρης πρόσβαση στον ${ BRAND_NAME } λογαριασμό σας." ], - "If you get locked out of your ${ BRAND_NAME } Account, your Recovery Kit will allow you to sign in and recover your data.": [ - "Εάν κλειδωθείτε έξω από τον ${ BRAND_NAME } Λογαριασμό σας, το Κιτ Ανάκτησης θα σας επιτρέψει να συνδεθείτε και να ανακτήσετε τα δεδομένα σας." + "If you get locked out of your ${ BRAND_NAME } Account, your recovery phrase will allow you to sign in and recover your data.": [ + "Αν αποκλειστείτε από τον λογαριασμό σας ${ BRAND_NAME }, η φράση ανάκτησής σας θα σας επιτρέψει να συνδεθείτε και να ανακτήσετε τα δεδομένα σας." ], "If you lose your login details and need to reset your account, **it’s imperative** that you have both an **account recovery and data recovery method** in place, otherwise you might not be able to access any of your emails, contacts, files or passwords.": [ "Εάν χάσετε τα στοιχεία σύνδεσής σας και πρέπει να επαναφέρετε τον λογαριασμό σας, **είναι επιτακτική ανάγκη** να έχετε εφαρμόσει μια **μέθοδο ανάκτησης λογαριασμού και ανάκτησης δεδομένων**, διαφορετικά ενδέχεται να μην μπορείτε να αποκτήσετε πρόσβαση σε κανένα από τα μηνύματα ηλεκτρονικού ταχυδρομείου, τις επαφές, τα αρχεία ή τους κωδικούς πρόσβασής σας." @@ -20457,8 +21021,8 @@ "Take action to secure your account": [ "Λάβετε μέτρα για να ασφαλίσετε τον λογαριασμό σας" ], - "There was an error generating your Recovery Kit": [ - "Παρουσιάστηκε σφάλμα κατά τη δημιουργία του Κιτ Αποκατάστασης" + "There was an error generating your recovery phrase": [ + "Παρουσιάστηκε σφάλμα κατά τη δημιουργία της φράσης ανάκτησής σας" ], "There was an error verifying your email": [ "Παρουσιάστηκε σφάλμα κατά την επαλήθευση της διεύθυνσης ηλεκτρονικού ταχυδρομείου σας" @@ -20487,11 +21051,11 @@ "to recover your account if you're ever locked out": [ "για να ανακτήσετε τον λογαριασμό σας σε περίπτωση που κλειδωθείτε έξω" ], - "Update your Recovery Kit": [ - "Ενημέρωση του Κιτ Αποκατάστασης" + "Update your recovery phrase": [ + "Ενημερώστε τη φράση ανάκτησης σας" ], - "Update your Recovery Kit?": [ - "Ενημέρωση του Κιτ Αποκατάστασης;" + "Update your recovery phrase?": [ + "Ενημέρωση τη φράση ανάκτησης σας;" ], "Verify": [ "Επαλήθευση" @@ -20508,8 +21072,8 @@ "Verify your recovery phone number": [ "Επαληθεύστε τον αριθμό τηλεφώνου ανάκτησης σας" ], - "We encountered an error while generating your Recovery Kit. Please try again later, or contact support if the issue continues.": [ - "Αντιμετωπίσαμε ένα σφάλμα κατά τη δημιουργία του Κιτ Αποκατάστασης. Παρακαλούμε προσπαθήστε ξανά αργότερα ή επικοινωνήστε με την υποστήριξη, αν το πρόβλημα παραμένει." + "We encountered an error while generating your recovery phrase. Please try again later, or contact support if the issue continues.": [ + "Αντιμετωπίσαμε ένα σφάλμα κατά τη δημιουργία της φράσης ανάκτησής σας. Δοκιμάστε ξανά αργότερα ή επικοινωνήστε με την υποστήριξη εάν το πρόβλημα συνεχιστεί." ], "We encountered an error while verifying your email. Please try again later, or contact support if the issue continues.": [ "Αντιμετωπίσαμε ένα σφάλμα κατά την επαλήθευση του ηλεκτρονικού ταχυδρομείου σας. Παρακαλούμε προσπαθήστε ξανά αργότερα ή επικοινωνήστε με την υποστήριξη, αν το πρόβλημα παραμένει." @@ -20532,8 +21096,8 @@ "You can disable this at any time.": [ "Μπορείτε να το απενεργοποιήσετε ανά πάσα στιγμή." ], - "You can use the recovery phrase in this Recovery Kit to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ - "Μπορείτε να χρησιμοποιήσετε τη φράση ανάκτησης σε αυτό το Κιτ Ανάκτησης για να επαναφέρετε πλήρως τον λογαριασμό σας όταν επαναφέρετε τον κωδικό πρόσβασής σας, επομένως φροντίστε να τον διατηρήσετε κάπου ασφαλή." + "You can use the recovery phrase in this recovery phrase to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ + "Μπορείτε να χρησιμοποιήσετε τη φράση ανάκτησης σε αυτήν τη φράση ανάκτησης για να επαναφέρετε πλήρως τον λογαριασμό σας όταν επαναφέρετε τον κωδικό πρόσβασής σας, επομένως φροντίστε να τον κρατήσετε σε ασφαλές μέρος." ], "You can use your email to regain access to your account if you forget your password.": [ "Μπορείτε να χρησιμοποιήσετε τη διεύθυνση ηλεκτρονικού ταχυδρομείου σας για να αποκτήσετε ξανά πρόσβαση στον λογαριασμό σας, αν ξεχάσετε τον κωδικό πρόσβασής σας." @@ -20544,8 +21108,8 @@ "You can use your recovery phone to regain access to your account if you forget your password.": [ "Μπορείτε να χρησιμοποιήσετε το τηλέφωνο ανάκτησης για να αποκτήσετε ξανά πρόσβαση στον λογαριασμό σας, αν ξεχάσετε τον κωδικό πρόσβασής σας." ], - "You have previously downloaded a Recovery Kit. Downloading a new one will **deactivate the old one**.": [ - "Έχετε κατεβάσει προηγουμένως ένα Κιτ Αποκατάστασης. Η λήψη ενός νέου θα **απενεργοποιήσει το παλιό**." + "You have previously downloaded a recovery phrase. Downloading a new one will **deactivate the old one**.": [ + "Έχετε κατεβάσει προηγουμένως μια φράση ανάκτησης. Η λήψη μιας νέας θα **απενεργοποιήσει την παλιά**." ], "You have recommended actions to safeguard your account further.": [ "Έχετε προτεινόμενες ενέργειες για να προστατεύσετε περαιτέρω τον λογαριασμό σας." @@ -20610,12 +21174,6 @@ "Your recovery email is set": [ "Η διεύθυνση ηλεκτρονικού ταχυδρομείου ανάκτησης σας έχει οριστεί" ], - "Your Recovery Kit": [ - "Το Κιτ Αποκατάστασής σας" - ], - "Your Recovery Kit is set": [ - "Το Κιτ Αποκατάστασής έχει ρυθμιστεί" - ], "Your recovery methods": [ "Οι μέθοδοι ανάκτησής σας" ], @@ -20636,6 +21194,242 @@ ], "Your recovery phone number is:": [ "Ο αριθμός τηλεφώνου ανάκτησης σας είναι:" + ], + "Your recovery phrase": [ + "Η φράση ανάκτησής σας" + ], + "Your recovery phrase is set": [ + "Η φράση ανάκτησής σας έχει οριστεί" + ] + }, + "safety_review": { + "${ BRAND_NAME } Account email": [ + "${ BRAND_NAME } ηλεκτρονική διεύθυνση Λογαριασμού" + ], + "Account protection": [ + "Προστασία λογαριασμού" + ], + "Add": [ + "Προσθήκη" + ], + "Add an emergency contact": [ + "Προσθήκη επαφής έκτακτης ανάγκης" + ], + "Add emergency contacts": [ + "Προσθήκη επαφών έκτακτης ανάγκης" + ], + "Add options": [ + "Προσθήκη επιλογών" + ], + "Add people who you trust and can contact easily. Your emergency contact will be able to access your account and reset your password for you if needed.": [ + "Προσθέστε άτομα που εμπιστεύεστε και μπορείτε να επικοινωνήσετε εύκολα. Το άτομο επαφής έκτακτης ανάγκης θα μπορεί να έχει πρόσβαση στον λογαριασμό σας και να επαναφέρει τον κωδικό πρόσβασής σας εάν χρειαστεί." + ], + "Add people you trust and can contact easily. They will be able to help you unlock your data after you reset your password.": [ + "Προσθέστε άτομα που εμπιστεύεστε και μπορείτε να επικοινωνήσετε εύκολα. Θα μπορούν να σας βοηθήσουν να ξεκλειδώσετε τα δεδομένα σας αφού επαναφέρετε τον κωδικό πρόσβασής σας." + ], + "Add phone number": [ + "Προσθήκη αριθμού τηλεφώνου" + ], + "Add recovery contacts": [ + "Προσθήκη επαφών ανάκτησης" + ], + "Add recovery email": [ + "Προσθήκη διεύθυνσης ηλεκτρονικού ταχυδρομείου ανάκτησης" + ], + "Add recovery phone": [ + "Προσθήκη τηλεφώνου ανάκτησης" + ], + "Added emergency contacts": [ + "Προστέθηκαν επαφές έκτακτης ανάγκης" + ], + "Added recovery contacts": [ + "Προστέθηκαν επαφές ανάκτησης" + ], + "Added recovery email": [ + "Προστέθηκε διεύθυνση ηλεκτρονικού ταχυδρομείου ανάκτησης" + ], + "Added recovery phone": [ + "Προστέθηκε τηλεφωνικός αριθμός ανάκτησης" + ], + "Allow": [ + "Να επιτρέπεται" + ], + "Allow data recovery from this device": [ + "Επιτρέψτε την ανάκτηση δεδομένων από αυτήν τη συσκευή" + ], + "Allow password reset from the settings": [ + "Να επιτρέπεται η επαναφορά κωδικού πρόσβασης από τις ρυθμίσεις" + ], + "Allow recovery by email": [ + "Άδεια ανάκτησης μέσω ηλεκτρονικού ταχυδρομείου" + ], + "Allow recovery by phone": [ + "Άδεια ανάκτησης μέσω τηλεφώνου" + ], + "Allow scanning a QR code to sign in": [ + "Να επιτρέπεται η σάρωση ενός QR κωδικού για σύνδεση" + ], + "Allow trusted friends to unlock your data": [ + "Επιτρέψτε σε έμπιστους φίλους να ξεκλειδώσουν τα δεδομένα σας" + ], + "Back to ${ backLink.appNameString }": [ + "Πίσω στη ${ backLink.appNameString }" + ], + "Congratulations": [ + "Συγχαρητήρια" + ], + "Didn’t receive it? ${ sendANewCode }": [ + "Δεν το λάβατε; ${ sendANewCode }" + ], + "Done": [ + "Ολοκληρώθηκε" + ], + "Download": [ + "Λήψη" + ], + "Download recovery file": [ + "Κατέβασμα αρχείου ανάκτησης" + ], + "Downloaded recovery file": [ + "Λήψη αρχείου ανάκτησης" + ], + "Emergency contacts enabled": [ + "Ενεργοποιήθηκαν οι επαφές έκτακτης ανάγκης" + ], + "Enable device recovery": [ + "Ενεργοποίηση ανάκτησης συσκευής" + ], + "Enable email recovery": [ + "Ενεργοποίηση ανάκτησης email" + ], + "Enable emergency contacts": [ + "Ενεργοποίηση επαφών έκτακτης ανάγκης" + ], + "Enable password reset from settings": [ + "Ενεργοποίηση επαναφοράς κωδικού πρόσβασης από τις ρυθμίσεις" + ], + "Enable phone recovery": [ + "Ενεργοποίηση η ανάκτηση τηλεφώνου" + ], + "Enable QR code sign-in": [ + "Ενεργοποίηση σύνδεσης με κωδικό QR" + ], + "Enabled device recovery": [ + "Ενεργοποιήθηκε η ανάκτηση συσκευής" + ], + "Enabled email recovery": [ + "Ενεργοποιημένη ανάκτηση email" + ], + "Enabled password reset from settings": [ + "Ενεργοποιήθηκε η επαναφορά κωδικού πρόσβασης από τις ρυθμίσεις" + ], + "Enabled phone recovery": [ + "Ενεργοποιήθηκε η ανάκτηση τηλεφώνου" + ], + "Enabled QR code sign-in": [ + "Ενεργοποίηση σύνδεσης με κωδικό QR" + ], + "Got it": [ + "Το κατάλαβα" + ], + "Here's how you increased your account protection:": [ + "Δείτε πώς αυξήσατε την προστασία του λογαριασμού σας:" + ], + "If you forget your password, you can sign in using a QR code. All you need is to be signed in to a ${ BRAND_NAME } service on another device.": [ + "Εάν ξεχάσετε τον κωδικό πρόσβασής σας, μπορείτε να συνδεθείτε χρησιμοποιώντας έναν κωδικό QR. Το μόνο που χρειάζεστε είναι να είστε συνδεδεμένοι σε μια υπηρεσία ${ BRAND_NAME } σε άλλη συσκευή." + ], + "If you get locked out of your ${ BRAND_NAME } Account, it will allow you to sign in and recover your data. It’s the only way to instantly restore everything, so make sure you keep it somewhere safe.": [ + "Εάν κλειδωθείτε έξω από τον λογαριασμό σας ${ BRAND_NAME }, θα σας επιτρέψει να συνδεθείτε και να ανακτήσετε τα δεδομένα σας. Είναι ο μόνος τρόπος για να επαναφέρετε άμεσα τα πάντα, γι' αυτό φροντίστε να τα φυλάξετε σε ασφαλές μέρος." + ], + "Later": [ + "Αργότερα" + ], + "Protect your legacy with Emergency Access": [ + "Προστατέψτε την κληρονομιά σας με Πρόσβαση Έκτακτης Ανάγκης" + ], + "Save recovery phrase": [ + "Αποθήκευση φράσης ανάκτησης" + ], + "Saved recovery phrase": [ + "Αποθηκευμένη φράση ανάκτησης" + ], + "They must already have a ${ BRAND_NAME } Account.": [ + "Πρέπει να έχουν ήδη έναν λογαριασμό ${ BRAND_NAME }." + ], + "They will not be able to see or access your data.": [ + "Δε θα μπορούν να δουν ή να έχουν πρόσβαση στα δεδομένα σας." + ], + "This will let you quickly access your ${ BRAND_NAME } Account so you can change your password.": [ + "Αυτό θα σας επιτρέψει να αποκτήσετε γρήγορη πρόσβαση στον λογαριασμό σας ${ BRAND_NAME }, ώστε να μπορείτε να αλλάξετε τον κωδικό πρόσβασής σας." + ], + "This will let you reset your account password if you’ve lost it, but are still signed in to ${ BRAND_NAME }. It’s often the easiest way to recover your account if you’re signed in.": [ + "Αυτό θα σας επιτρέψει να επαναφέρετε τον κωδικό πρόσβασης του λογαριασμού σας, εάν τον έχετε χάσει, αλλά εξακολουθείτε να είστε συνδεδεμένοι στο ${ BRAND_NAME }. Είναι συχνά ο ευκολότερος τρόπος για να ανακτήσετε τον λογαριασμό σας, εάν είστε συνδεδεμένοι." + ], + "This will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset.": [ + "Αυτό θα επαναφέρει την πρόσβαση σε ηλεκτρονικά μηνύματα, επαφές, αρχεία, κωδικούς πρόσβασης και οποιαδήποτε άλλα κρυπτογραφημένα δεδομένα στον λογαριασμό σας μετά από επαναφορά κωδικού πρόσβασης." + ], + "To make sure the email address is yours, enter the verification code sent to ${ boldEmail }.": [ + "Για να βεβαιωθούμε ότι η διεύθυνση ηλεκτρονικού ταχυδρομείου είναι δική σας, εισαγάγετε τον κωδικό επαλήθευσης που στάλθηκε στο ${ boldEmail }." + ], + "To make sure the phone number is yours, enter the verification code sent to ${ boldPhoneNumber }.": [ + "Για να βεβαιωθούμε ότι το τηλέφωνο είναι δικό σας, εισαγάγετε τον κωδικό επαλήθευσης που στάλθηκε στο ${ boldPhoneNumber }." + ], + "To make sure this address is really yours, we’ll send an email with a verification link.": [ + "Για να βεβαιωθούμε ότι αυτή η διεύθυνση είναι όντως δική σας, θα σας στείλουμε ένα μήνυμα ηλεκτρονικού ταχυδρομείου με έναν σύνδεσμο επαλήθευσης." + ], + "Upgrade your plan to enable Emergency Access to your account. This will allow you to designate 1 to 5 people who will be able to reset your password for you.": [ + "Αναβαθμίστε το πλάνο σας για να ενεργοποιήσετε την Πρόσβαση Έκτακτης Ανάγκης στον λογαριασμό σας. Αυτό θα σας επιτρέψει να ορίσετε από 1 έως 5 άτομα που θα μπορούν να επαναφέρουν τον κωδικό πρόσβασής σας για εσάς." + ], + "Verified password": [ + "Επαληθευμένος κωδικός πρόσβασης" + ], + "Verified recovery email": [ + "Επαληθευμένη ηλεκτρονική διεύθυνση ανάκτησης" + ], + "Verified recovery phone": [ + "Επαληθευμένο τηλέφωνο ανάκτησης" + ], + "Verify": [ + "Επαλήθευση" + ], + "Verify password": [ + "Επαλήθευση κωδικού πρόσβασης" + ], + "Verify recovery email": [ + "Επαλήθευση ηλεκτρονικής διεύθυνσης ανάκτησης" + ], + "Verify recovery phone": [ + "Επαλήθευση τηλέφωνου ανάκτησης" + ], + "Verify your recovery email": [ + "Επαληθεύστε την ηλεκτρονικής διεύθυνσης ανάκτησης σας" + ], + "Verify your recovery phone": [ + "Επαλήθευση τηλεφώνου ανάκτησης σας" + ], + "You can save a data backup on this device. This will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset, simply by signing in on this device.": [ + "Μπορείτε να αποθηκεύσετε ένα αντίγραφο ασφαλείας δεδομένων σε αυτήν τη συσκευή. Αυτό θα επαναφέρει την πρόσβαση σε μηνύματα ηλεκτρονικού ταχυδρομείου, επαφές, αρχεία, κωδικούς πρόσβασης και οποιοδήποτε άλλο κρυπτογραφημένο δεδομένο στον λογαριασμό σας μετά από επαναφορά κωδικού πρόσβασης, απλώς με την είσοδο σε αυτή τη συσκευή." + ], + "You can use email verification to regain access to your account if you forget your password.": [ + "Μπορείτε να χρησιμοποιήσετε την επαλήθευση διεύθυνσης ηλεκτρονικού ταχυδρομείου για να αποκτήσετε ξανά πρόσβαση στον λογαριασμό σας, αν ξεχάσετε τον κωδικό πρόσβασής σας." + ], + "You can use SMS verification to regain access to your account if you forget your password.": [ + "Μπορείτε να χρησιμοποιήσετε την επαλήθευση μέσω SMS για να ανακτήσετε την πρόσβαση στον λογαριασμό σας σε περίπτωση που ξεχάσετε τον κωδικό πρόσβασής σας." + ], + "You can use your recovery email to regain access to your account if you forget your password.": [ + "Μπορείτε να χρησιμοποιήσετε τη διεύθυνση ηλεκτρονικού ταχυδρομείου ανάκτησης για να αποκτήσετε ξανά πρόσβαση στον λογαριασμό σας, αν ξεχάσετε τον κωδικό πρόσβασής σας." + ], + "You can use your recovery phone to regain access to your account if you forget your password.": [ + "Μπορείτε να χρησιμοποιήσετε το τηλέφωνο ανάκτησης για να αποκτήσετε ξανά πρόσβαση στον λογαριασμό σας, αν ξεχάσετε τον κωδικό πρόσβασής σας." + ], + "You don’t need to open or read the file—just download it and store it somewhere safe.": [ + "Δεν χρειάζεται να ανοίξετε ή να διαβάσετε το αρχείο—απλώς κατεβάστε το και αποθηκεύστε το σε ένα ασφαλές μέρος." + ], + "Your recovery checklist": [ + "Η λίστα ελέγχου για ανάκτηση σας" + ], + "Your security setup": [ + "Η ρύθμιση ασφαλείας σας" ] }, "saml: Action": { @@ -20842,8 +21636,11 @@ ] }, "Sentinel banner": { - "To ensure the highest possible security of your account, download your recovery phrase and disable the highlighted options.": [ - "Για να διασφαλίσετε την υψηλότερη δυνατή ασφάλεια του λογαριασμού σας, κατεβάστε τη φράση ανάκτησής σας και απενεργοποιήστε τις επισημασμένες επιλογές." + "To ensure the highest possible security of your account, disable recovery via email and SMS.": [ + "Για να διασφαλίσετε τη μέγιστη δυνατή ασφάλεια του λογαριασμού σας, απενεργοποιήστε την ανάκτηση μέσω ηλεκτρονικής διεύθυνσης ανάκτησης και SMS." + ], + "To make sure that you can always access your ${ BRAND_NAME } Account, download your recovery phrase.": [ + "Για να βεβαιωθείτε ότι έχετε πάντα πρόσβαση στον λογαριασμό σας ${ BRAND_NAME }, κατεβάστε τη φράση ανάκτησης." ], "You have recommended actions from ${ PROTON_SENTINEL_NAME }": [ "Έχετε προτεινόμενες ενέργειες από το ${ PROTON_SENTINEL_NAME }" @@ -21180,9 +21977,6 @@ ] }, "Setting": { - "Enable Photos section": [ - "Ενεργοποίηση ενότητας Φωτογραφίες" - ], "Get updates about comments via email": [ "Λάβετε ενημερώσεις σχετικά με σχόλια μέσω ηλεκτρονικού ταχυδρομείου" ], @@ -21199,6 +21993,9 @@ "Account": [ "Λογαριασμός" ], + "Managed Companies": [ + "Διαχειριζόμενες Εταιρείες" + ], "Organization": [ "Οργανισμός" ] @@ -22052,11 +22849,35 @@ ] }, "Spotlight": { + "Assign delegated roles": [ + "Εκχωρήστε ανατεθειμένους ρόλους" + ], + "Assign roles": [ + "Ανάθεση ρόλων" + ], + "Click a user's name to manage their role and permissions.": [ + "Κάντε κλικ στο όνομα ενός χρήστη για να διαχειριστείτε τον ρόλο και τα δικαιώματά του." + ], + "Click Edit to assign roles to this group and manage member access automatically.": [ + "Κάντε κλικ στο Επεξεργασία για να αναθέσετε ρόλους σε αυτή την ομάδα και να διαχειριστείτε αυτόματα την πρόσβαση των μελών." + ], "Earn up to ${ maxRewardAmount } in credit": [ "Λάβετε έως και ${ maxRewardAmount } σε πιστώσεις" ], "Get credits when the person you invite subscribes to a ${ BRAND_NAME } plan.": [ "Κερδίστε πόντους όταν το άτομο που προσκαλέσατε εγγραφεί σε ένα πλάνο ${ BRAND_NAME }." + ], + "New: Roles and permissions tab": [ + "Νέο: Καρτέλα ρόλων και αδειών" + ], + "Open this tab to grant specific permissions without full admin access.": [ + "Ανοίξτε αυτήν την καρτέλα για να χορηγήσετε συγκεκριμένα δικαιώματα χωρίς πλήρη πρόσβαση διαχειριστή." + ], + "User roles available": [ + "Διαθέσιμοι ρόλοι χρηστών" + ], + "You can now assign roles to individual users from this tab.": [ + "Τώρα μπορείτε να εκχωρείτε ρόλους σε μεμονωμένους χρήστες από αυτήν την καρτέλα." ] }, "sso": { @@ -22360,18 +23181,12 @@ "Available on this device": [ "Διαθέσιμο σε αυτή τη συσκευή" ], - "Disable QR code sign-in": [ - "Απενεργοποίηση σύνδεσης με κωδικό QR" - ], "Disable recovery by email": [ "Απενεργοποίηση ανάκτησης μέσω ηλεκτρονικού ταχυδρομείου" ], "Disable recovery by phone": [ "Απενεργοποίηση ανάκτησης μέσω τηλεφώνου" ], - "Disable signed-in reset": [ - "Απενεργοποίηση επαναφοράς σε κατάσταση σύνδεσης" - ], "Generate a recovery phrase": [ "Παραγωγή μιας φράσης ανάκτησης" ], @@ -22381,9 +23196,6 @@ "Last updated ${ formattedUpdateDate }": [ "Τελευταία ενημέρωση ${ formattedUpdateDate }" ], - "No contact": [ - "Καμμία επαφή" - ], "Not saved": [ "Μη αποθηκευμένο" ], @@ -23143,12 +23955,21 @@ ], "View VPN session details for your organization.": [ "Δείτε τις λεπτομέρειες της περιόδου λειτουργίας VPN για τον οργανισμό σας." + ], + "With managed companies, you can add, edit, and remove access for organizations you oversee.": [ + "Με τις διαχειριζόμενες εταιρείες, μπορείτε να προσθέσετε, να επεξεργαστείτε και να καταργήσετε την πρόσβαση για οργανισμούς που επιβλέπετε." + ], + "Your total monthly cost for all managed companies.": [ + "Το συνολικό μηνιαίο κόστος για όλες τις διαχειριζόμενες εταιρείες." ] }, "Success": { "Account deleted. Signing out...": [ "Ο λογαριασμός διαγράφηκε. Αποσύνδεση..." ], + "Activation link copied to clipboard": [ + "Ο σύνδεσμος ενεργοποίησης αντιγράφηκε στο πρόχειρο" + ], "Address added": [ "Η διεύθυνση προστέθηκε" ], @@ -23272,9 +24093,6 @@ "Organization logo updated": [ "Το λογότυπο του οργανισμού ενημερώθηκε" ], - "Organization name set": [ - "Τέθηκε το όνομα το οργανισμού" - ], "Organization name updated": [ "Το όνομα του οργανισμού ενημερώθηκε" ], @@ -23496,6 +24314,14 @@ "Ασφαλίστε τα αρχεία σας με κρυπτογραφημένο χώρο αποθήκευσης cloud. Περιλαμβάνει ιστορικό εκδόσεων, κρυπτογραφημένη κοινή χρήση αρχείων και πολλά άλλα." ] }, + "Tab": { + "For personal use": [ + "Για προσωπική χρήση" + ], + "For professional use": [ + "Για επαγγελματική χρήση" + ] + }, "Tab in domain modal": { "Addresses": [ "Διευθύνσεις" @@ -23771,12 +24597,18 @@ "Actions": [ "Ενέργειες" ], + "Activate multi-user support": [ + "Ενεργοποίηση υποστήριξης πολλαπλών χρηστών" + ], "Activate organization key": [ "Ενεργοποιήστε το κλειδί οργανισμού" ], "Activate user": [ "Ενεργοποίηση χρήστη" ], + "Activate your email": [ + "Ενεργοποιήστε το email σας" + ], "Activity monitor": [ "Παρακολούθηση δραστηριότητας" ], @@ -23799,6 +24631,9 @@ "Add another notification to remind you of this event": [ "Προσθέστε μια άλλη ειδοποίηση για να σας υπενθυμίσει αυτήν την εκδήλωση" ], + "Add categories": [ + "Προσθέστε κατηγορίες" + ], "Add contact group name": [ "Προσθήκη ονόματος ομάδας επαφών" ], @@ -23880,9 +24715,6 @@ "An address for each role": [ "Μια διεύθυνση για κάθε ρόλο" ], - "An error occurred": [ - "Συνέβη ένα σφάλμα" - ], "Annual": [ "Ετήσια" ], @@ -23976,6 +24808,9 @@ "Catch-all address": [ "Διευθύνσεις Catch all" ], + "Categories": [ + "Κατηγορίες" + ], "Change login password": [ "Αλλαγή κωδικού σύνδεσης" ], @@ -24021,6 +24856,9 @@ "Collaborate on documents": [ "Συνεργαστείτε σε έγγραφα" ], + "Companies": [ + "Εταιρείες" + ], "Compare plans": [ "Σύγκριση πλάνων" ], @@ -24030,18 +24868,12 @@ "Confirm": [ "Επιβεβαίωση" ], - "Confirm address": [ - "Επιβεβαιώση διεύθυνσης" - ], "Confirm downgrade": [ "Επιβεβαιώστε την υποβάθμιση" ], "Confirm loss of ${ BRAND_NAME } bonuses": [ "Επιβεβαιώστε την απώλεια μπόνους ${ BRAND_NAME }" ], - "Confirm phone number": [ - "Επιβεβαίωση αριθμού τηλεφώνου" - ], "Connect ${ name }": [ "Σύνδεση ${ name }" ], @@ -24066,14 +24898,17 @@ "Connect your custom domain": [ "Συνδέστε τον προσαρμοσμένο τομέα σας" ], + "Connected emails": [ + "Συνδεδεμένα email" + ], "Connection status": [ "Κατάσταση σύνδεσης" ], "Contact us": [ "Επικοινωνήστε μαζί μας" ], - "Contact-assisted recovery": [ - "Ανάκτηση με υποβοήθηση επαφής" + "Continue with free storage": [ + "Συνέχεια με δωρεάν αποθηκευτικό χώρο" ], "Continue with partial import?": [ "Συνέχιση με μερική εισαγωγή;" @@ -24100,6 +24935,9 @@ "Create a new gateway": [ "Δημιουργία νέας πύλης" ], + "Create a new password": [ + "Δημιουργία νέου κωδικού πρόσβασης" + ], "Create Gateway": [ "Δημιουργία Πύλης" ], @@ -24181,6 +25019,9 @@ "Data recovery": [ "Ανάκτηση δεδομένων" ], + "Data recovery contacts": [ + "Επαφές ανάκτησης δεδομένων" + ], "Data recovery options": [ "Επιλογές ανάκτησης δεδομένων" ], @@ -24193,6 +25034,9 @@ "Day theme": [ "Ανοιχτό θέμα" ], + "Deactivate current phrase?": [ + "Απενεργοποίηση της τρέχουσας φράσης;" + ], "Decrypt key": [ "Αποκρυπτογράφηση κλειδιού" ], @@ -24293,6 +25137,9 @@ "Disconnected from Gmail": [ "Αποσυνδεδεμένο από το Gmail" ], + "Dismiss setup checklist": [ + "Απόρριψη λίστας ελέγχου εγκατάστασης" + ], "Display name and signature": [ "Εμφανιζόμενο όνομα και υπογραφή" ], @@ -24329,6 +25176,9 @@ "Download the mobile apps": [ "Κατεβάστε τις εφαρμογές για κινητά" ], + "Download your recovery phrase": [ + "Λήψη της φράσης ανάκτησης" + ], "Downloads": [ "Λήψεις" ], @@ -24468,6 +25318,9 @@ "Feature access": [ "Πρόσβαση σε λειτουργίες" ], + "Fewer distractions, more focus": [ + "Λιγότερες περισπασμοί, περισσότερη συγκέντρωση" + ], "Filter for more focus": [ "Φιλτράρισμα για περισσότερη εστίαση" ], @@ -24498,9 +25351,6 @@ "Forward emails": [ "Προώθηση μηνυμάτων ηλεκτρονικού ταχυδρομείου" ], - "Forwardings": [ - "Προωθήσεις" - ], "Free": [ "Δωρεάν" ], @@ -24537,6 +25387,9 @@ "Get ${ planMaxSpace } storage for your files, photos and documents with ${ planName }. ${ upgradeButton }": [ "Αποκτήστε ${ planMaxSpace } αποθηκευτικό χώρο για τα αρχεία, τις φωτογραφίες και τα έγγραφά σας με το ${ planName }. ${ upgradeButton }" ], + "Get ${ VPN_APP_NAME } on your TV": [ + "Αποκτήστε το ${ VPN_APP_NAME } στην τηλεόρασή σας" + ], "Get ${ vpnPlus } to access all servers": [ "Για πρόσβαση σε όλους τους διακομιστές, αποκτήστε το ${ vpnPlus }" ], @@ -24567,6 +25420,12 @@ "Get more from your VPN": [ "Αποκτήστε περισσότερα από το VPN σας." ], + "Get more storage with ${ MAIL_APP_NAME } Plus": [ + "Αποκτήστε περισσότερο χώρο αποθήκευσης με το ${ MAIL_APP_NAME } Plus" + ], + "Get started": [ + "Ας ξεκινήσουμε" + ], "Get the app on all your devices and enjoy safe, seamless access anywhere.": [ "Αποκτήστε την εφαρμογή σε όλες τις συσκευές σας και απολαύστε ασφαλή, απρόσκοπτη πρόσβαση οπουδήποτε." ], @@ -24748,6 +25607,9 @@ "Monthly": [ "Μηνιαία" ], + "Monthly Costs": [ + "Μηνιαίο Κόστος" + ], "Multi-user support": [ "Υποστήριξη Πολλαπλών Χρηστών" ], @@ -24781,6 +25643,9 @@ "No events": [ "Δεν υπάρχουν εκδηλώσεις" ], + "No events yet": [ + "Δεν υπάρχουν ακόμη γεγονότα" + ], "No need to empty the trash": [ "Δε χρειάζεται να αδειάσετε τα διαγραμμένα" ], @@ -24880,9 +25745,6 @@ "Phone": [ "Τηλέφωνο" ], - "Photos": [ - "Φωτογραφίες" - ], "Pin the extension": [ "Καρφίτσωμα της προέκτασης" ], @@ -24967,9 +25829,15 @@ "Remove domain": [ "Αφαίρεση τομέα" ], + "Remove email": [ + "Αφαίρεση email" + ], "Remove forwarding address": [ "Κατάργηση διεύθυνσης προώθησης" ], + "Remove recovery phone number": [ + "Κατάργηση αριθμού τηλεφώνου ανάκτησης" + ], "Remove server?": [ "Αφαίρεση διακομιστή;" ], @@ -25141,6 +26009,9 @@ "Sign in on TV": [ "Σύνδεση στην τηλεόραση" ], + "Sign in on TV?": [ + "Σύνδεση στην τηλεόραση;" + ], "Sign in to join the Beta program": [ "Συνδεθείτε για να συμμετάσχετε στο πρόγραμμα Beta" ], @@ -25180,6 +26051,9 @@ "Some of your encrypted data is locked": [ "Ορισμένα από τα κρυπτογραφημένα δεδομένα σας είναι κλειδωμένα" ], + "Something went wrong": [ + "Κάτι πήγε στραβά" + ], "Sort folders alphabetically": [ "Ταξινόμηση φακέλων αλφαβητικά" ], @@ -25376,6 +26250,9 @@ "Verify it’s you": [ "Επαλήθευση ταυτότητας" ], + "Verify your email": [ + "Επαληθεύστε το email σας" + ], "Verifying your card...": [ "Γίνεται επαλήθευση της κάρτας σας..." ], @@ -25400,6 +26277,9 @@ "Warning: suspected fake website": [ "Προειδοποίηση: υποψία ψεύτικης ιστοσελίδας" ], + "We sent you a code to your email to make sure it’s you. This code is valid for 10 minutes. Please enter it below.": [ + "Σας στείλαμε έναν κωδικό στην ηλεκτρονική διεύθυνση σας για να βεβαιωθούμε ότι είστε εσείς. Ο κωδικός αυτός ισχύει για 10 λεπτά. Παρακαλούμε εισάγετέ τον παρακάτω." + ], "We'll send an email to your new address with instructions on completing the change.": [ "Θα στείλουμε μήνυμα ηλεκτρονικού ταχυδρομείου στη νέα σας διεύθυνση με οδηγίες για την ολοκλήρωση της αλλαγής." ], @@ -25451,6 +26331,12 @@ "Your ${ planTitle } subscription has started": [ "Η ${ planTitle } συνδρομή σας έχει ξεκινήσει" ], + "Your admin at ${ orgName } is inviting you to activate your new secure ${ BRAND_NAME } account and update your password.": [ + "Ο διαχειριστής σας στο ${ orgName } σας προσκαλεί να ενεργοποιήσετε τον νέο ασφαλή λογαριασμό σας ${ BRAND_NAME } και να ενημερώσετε τον κωδικό πρόσβασής σας." + ], + "Your admin is inviting you to activate your new secure ${ BRAND_NAME } account and update your password.": [ + "Ο διαχειριστής σας προσκαλεί να ενεργοποιήσετε τον νέο ασφαλή λογαριασμό σας ${ BRAND_NAME } και να ενημερώσετε τον κωδικό πρόσβασής σας." + ], "Your calendar link": [ "Ο σύνδεσμος του ημερολογίου σας" ], @@ -25658,6 +26544,9 @@ "Each imported email will have this label": [ "Κάθε εισαγόμενο μήνυμα ηλεκτρονικού ταχυδρομείου θα έχει αυτήν την ετικέτα" ], + "Early access to new apps and features.": [ + "Πρώιμη πρόσβαση σε νέες εφαρμογές και δυνατότητες." + ], "Edit folder names": [ "Επεξεργασία ονομάτων φακέλων" ], @@ -25814,8 +26703,8 @@ "This feature is only available on Beta": [ "Αυτή η δυνατότητα είναι διαθέσιμη μόνο στην έκδοση Beta" ], - "This is the default key used by other ${ MAIL_APP_NAME } users on older mobile apps to encrypt data they send to you": [ - "Αυτό είναι το προεπιλεγμένο κλειδί που χρησιμοποιείται από άλλους ${ MAIL_APP_NAME } χρήστες σε παλαιότερες εφαρμογές για κινητά για την κρυπτογράφηση δεδομένων που σας στέλνουν" + "This is the default key used by other ${ MAIL_APP_NAME } users on older apps to encrypt data they send to you": [ + "Αυτό είναι το προεπιλεγμένο κλειδί που χρησιμοποιείται από άλλους ${ MAIL_APP_NAME } χρήστες σε παλαιότερες εφαρμογές για την κρυπτογράφηση δεδομένων που σας στέλνουν" ], "This is the default key used by other ${ MAIL_APP_NAME } users to encrypt data they send to you": [ "Αυτό είναι το προεπιλεγμένο κλειδί που χρησιμοποιείται από άλλους ${ MAIL_APP_NAME } χρήστες για την κρυπτογράφηση δεδομένων που σας στέλνουν" @@ -25903,6 +26792,9 @@ "User is a group": [ "Ο χρήστης είναι μια ομάδα" ], + "via ${ groupName }": [ + "μέσω ${ groupName }" + ], "Waiting for user to accept the invitation": [ "Αναμονή για αποδοχή της πρόσκλησης από τον χρήστη" ] @@ -26226,6 +27118,12 @@ ] }, "user_modal": { + "(via ${ groupName })": [ + "(μέσω ${ groupName })" + ], + "(via group)": [ + "(μέσω ομάδας)" + ], "Add delegated roles to a user to grant them only the specific permissions they need, keeping full-admin power separate and your environment secure.": [ "Προσθέστε ανατεθειμένους ρόλους σε έναν χρήστη για να του εκχωρήσετε μόνο τα συγκεκριμένα δικαιώματα που χρειάζεται, διατηρώντας ξεχωριστή την πλήρη εξουσία διαχειριστή και το περιβάλλον σας ασφαλές." ], @@ -26613,11 +27511,14 @@ "${ BRAND_NAME } will transfer as much data as possible, starting with your most recent messages.": [ "Η ${ BRAND_NAME } θα μεταφέρει όσο το δυνατόν περισσότερα δεδομένα, ξεκινώντας από τα πιο πρόσφατα μηνύματά σας." ], - "Are you sure you want to delete the phone number?": [ - "Θέλετε σίγουρα να διαγράψετε τον αριθμό τηλεφώνου;" + "Are you sure you want to remove your notification email?": [ + "Είστε βέβαιοι ότι θέλετε να καταργήσετε το email ειδοποίησής σας;" ], - "Are you sure you want to delete this address?": [ - "Θέλετε σίγουρα να διαγράψετε αυτήν τη διεύθυνση;" + "Are you sure you want to remove your recovery email?": [ + "Είστε βέβαιοι ότι θέλετε να καταργήσετε τη διεύθυνση ηλεκτρονικού ταχυδρομείου ανάκτησης;" + ], + "Are you sure you want to remove your recovery phone number?": [ + "Είστε βέβαιοι ότι θέλετε να καταργήσετε τον αριθμό τηλεφώνου ανάκτησης;" ], "By deleting this address, you will no longer be able to receive daily email notifications.": [ "Διαγράφοντας αυτή τη διεύθυνση, δεν θα μπορείτε πλέον να λαμβάνετε καθημερινές ειδοποιήσεις μέσω ηλεκτρονικού ταχυδρομείου." @@ -26628,8 +27529,8 @@ "By deleting this address, you will no longer be able to recover your account.": [ "Διαγράφοντας αυτή τη διεύθυνση, δεν θα είστε πλέον σε θέση να ανακτήσετε το λογαριασμό σας." ], - "By deleting this phone number, you will no longer be able to recover your account.": [ - "Διαγράφοντας αυτό το νούμερο τηλεφώνου, δεν θα είστε πλέον σε θέση να ανακτήσετε το λογαριασμό σας." + "By removing this phone number, you will no longer be able to recover your account.": [ + "Με την κατάργηση αυτού του αριθμού τηλεφώνου, δεν θα μπορείτε πλέον να ανακτήσετε τον λογαριασμό σας." ], "Could not login. Please open ${ PASS_APP_NAME } browser extension and login from there.": [ "Δεν ήταν δυνατή η σύνδεση. Παρακαλούμε ανοίξτε την προέκταση προγράμματος περιήγησης ${ PASS_APP_NAME } και συνδεθείτε από εκεί." diff --git a/applications/account/locales/es_ES.json b/applications/account/locales/es_ES.json index c0cb9ed949c..5a7b09e3c9d 100644 --- a/applications/account/locales/es_ES.json +++ b/applications/account/locales/es_ES.json @@ -196,6 +196,9 @@ "Back to sign in": [ "Volver al inicio de sesión" ], + "Back to sign-in": [ + "Volver al inicio de sesión" + ], "Block": [ "Bloquear" ], @@ -307,6 +310,9 @@ "Connect your ${ BRAND_NAME } Account": [ "Conecta tu cuenta de ${ BRAND_NAME }" ], + "Connect your email": [ + "Conectar tu correo" + ], "Connected": [ "Conectado" ], @@ -463,9 +469,6 @@ "Delete record": [ "Eliminar registro" ], - "Delete token ${ token.Account }": [ - "Eliminar token ${ token.Account }" - ], "Delete user": [ "Eliminar usuario" ], @@ -2603,12 +2606,6 @@ "${ BRAND_NAME } Migration Assistant": [ "${ BRAND_NAME } Migration Assistant" ], - "Add a custom domain": [ - "Añadir un dominio personalizado" - ], - "App installed": [ - "Aplicación instalada" - ], "Authenticate": [ "Autentificar" ], @@ -2636,9 +2633,6 @@ "Domain connected": [ "Dominio conectado" ], - "Domain ownership verified": [ - "Se ha verificado la propiedad del dominio" - ], "Estimated size": [ "Tamaño estimado" ], @@ -2663,15 +2657,9 @@ "Install migration app": [ "Instalar aplicación de migración" ], - "Learn more about what can be migrated. Learn more": [ - "Consulta qué se puede migrar. Más información" - ], "Mail": [ "Correo" ], - "Migrate": [ - "Migrar" - ], "Migrate from Google Workspace": [ "Migra desde Google Workspace" ], @@ -2688,18 +2676,12 @@ "Migration status": [ "Estado de la migración" ], - "Not started": [ - "No iniciado" - ], "Organization does not have enough seats available": [ "La organización no tiene suficientes licencias disponibles" ], "Organization does not have enough storage available": [ "La organización no tiene suficiente espacio de almacenamiento disponible" ], - "Organization settings": [ - "Ajustes de la organización" - ], "Required": [ "Requerido" ], @@ -2709,9 +2691,6 @@ "Select at least one user to start a migration": [ "Selecciona al menos un usuario para iniciar una migración" ], - "Select what you want to migrate, this will apply to all users whether they are created now or later. Migration will start after user accounts are created.": [ - "Selecciona qué quieres migrar. Esto se aplicará a todos los usuarios, tanto actuales como futuros. La migración comenzará una vez creadas las cuentas de usuario." - ], "Set up": [ "Configurar" ], @@ -2736,9 +2715,6 @@ "To migrate your organization’s data, you need to install the ${ BRAND_NAME } Migration Assistant app from the Google Workspace Marketplace. This will grant permission to ${ BRAND_NAME } to copy your data. After installing it, come back here to continue.": [ "Para migrar los datos de tu organización, necesitas instalar la aplicación ${ BRAND_NAME } Migration Assistant desde Google Workspace Marketplace. Esto otorgará permiso a ${ BRAND_NAME } para copiar tus datos. Después de instalarla, vuelve aquí para continuar." ], - "Transfer errors": [ - "Errores de transferencia" - ], "User": [ "Usuario" ], @@ -2751,9 +2727,6 @@ "Verify your domain": [ "Verifica tu dominio" ], - "Verify your domain ownership": [ - "Verifica la propiedad de tu dominio" - ], "Verify your domain to start a migration": [ "Verifica tu dominio para iniciar una migración" ], @@ -2872,9 +2845,15 @@ ] }, "Button": { + "Add users manually": [ + "Agregar usuarios manualmente" + ], "Close": [ "Cerrar" ], + "Configure your network": [ + "Configura tu red" + ], "Continue using ${ MAIL_APP_NAME }.": [ "Continuar usando ${ MAIL_APP_NAME }." ], @@ -2896,6 +2875,12 @@ "Got it": [ "Entiendo" ], + "Invite your team": [ + "Invita a tu equipo" + ], + "Manage global VPN permissions": [ + "Gestiona los permisos globales de VPN" + ], "Maybe later": [ "Quizás más tarde" ], @@ -2905,12 +2890,18 @@ "Remind me later": [ "Recordarme más tarde" ], + "Secure your organization": [ + "Protege tu organización" + ], "Send": [ "Enviar" ], "Set up other features": [ "Configura otras funciones" ], + "Set up SSO": [ + "Configurar SSO" + ], "Take a tour": [ "Explora ahora" ] @@ -4617,9 +4608,6 @@ "${ DOCS_SHORT_APP_NAME } in ${ DRIVE_APP_NAME } allows you to work together with others in a secure, encrypted environment.": [ "${ DOCS_SHORT_APP_NAME } en ${ DRIVE_APP_NAME } te permite trabajar con otros en un entorno seguro y cifrado." ], - "${ MAIL_APP_NAME } is your default mail application.": [ - "${ MAIL_APP_NAME } es tu aplicación de correo por defecto." - ], "A checked box means the feature is disabled.": [ "Una casilla marcada significa que la función está desactivada." ], @@ -4641,8 +4629,8 @@ "Automatically sort your incoming messages before they reach your inbox.": [ "Ordena automáticamente tus mensajes entrantes antes de que lleguen a tu bandeja de entrada." ], - "Bring over email, calendar events, and contacts from another provider.": [ - "Trae tus correos, eventos del calendario y contactos de otro proveedor." + "Bring over your email, calendar events, and contacts from another provider.": [ + "Trae tus correos, eventos de calendario y contactos desde otro proveedor." ], "Configure this first to activate your organization and customize your email address.": [ "Configura esto primero para activar tu organización y personalizar tu dirección de correo electrónico." @@ -4650,6 +4638,9 @@ "Connect your CRM, website, printers, and more.": [ "Conecta tu CRM, sitio web, impresoras y mucho más." ], + "Create a Gateway to give your users access to your IT resources through dedicated servers.": [ + "Crea una puerta de enlace para dar a tus usuarios acceso a los recursos de TI por medio de servidores dedicados." + ], "Create a Zoom meeting and add joining details to your event with one click.": [ "Crea una reunión de Zoom y añade los detalles para unirse a tu evento en un clic." ], @@ -4659,9 +4650,15 @@ "Create groups you can email with a single address.": [ "Crea grupos a los que puedas enviar correos electrónicos con una sola dirección." ], + "Create new user accounts or import users with SSO (single sign-on) SCIM provisioning.": [ + "Crear nuevas cuentas o importar usuarios con aprovisionamiento SCIM de SSO (inicio de sesión único)." + ], "Create policies to decide who can connect to shared servers in each country.": [ "Crea políticas para decidir quién puede conectarse a servidores compartidos en cada país." ], + "Decide which users can connect to each of our 120+ shared server locations.": [ + "Decide qué usuarios pueden conectarse a cada una de nuestras más de 120 ubicaciones de servidores compartidos." + ], "Easily access your email and calendar on desktop and mobile.": [ "Accede fácilmente a tu correo electrónico y calendario en el escritorio y en el móvil." ], @@ -4707,6 +4704,9 @@ "Help your team securely store passwords to sensitive business and client information.": [ "Ayuda a tu equipo a almacenar de forma segura las contraseñas de información confidencial de la empresa y de los clientes." ], + "If you haven’t already, enable some recovery methods to make sure you never lose access to ${ VPN_APP_NAME }.": [ + "Si aún no lo has hecho, activa algunos métodos de recuperación para garantizar que no pierdas el acceso a ${ VPN_APP_NAME }." + ], "It looks like the contact list you are importing contains some groups. Please review how these groups should be imported.": [ "Parece que la lista de contactos que estás importando contiene algunos grupos. Verifica cómo deben importarse estos grupos." ], @@ -4728,9 +4728,6 @@ "No one in your organization can connect to shared servers.": [ "Nadie en tu organización puede conectarse a servidores compartidos." ], - "Send a code to your recovery email or phone": [ - "Envíe un código a tu correo electrónico o teléfono de recuperación" - ], "Set up accounts for all users and invite them to join ${ BRAND_NAME }.": [ "Configura cuentas para todos los usuarios e invítalos a unirse a ${ BRAND_NAME }." ], @@ -4740,6 +4737,9 @@ "Still need help? Our support team is here for you.": [ "¿Aún necesitas ayuda? Nuestro equipo de asistencia está aquí para ayudarte." ], + "This allows you to regain access to your ${ BRAND_NAME } account but does not recover your encrypted data.": [ + "Esto te permite recuperar el acceso a tu cuenta de ${ BRAND_NAME }, pero no recupera tus datos cifrados." + ], "To import via a CSV and VCF file, ensure the file does not exceed ${ MAX_IMPORT_FILE_SIZE_STRING } or ${ maxContactString } contacts. If your file is bigger, please split it into smaller files. ${ learnMoreLink }.": [ "Para importar mediante un archivo CSV o VCF, asegúrate de que este no supere los ${ MAX_IMPORT_FILE_SIZE_STRING } o los ${ maxContactString } contactos. Si el archivo es más grande, divídelo en varios archivos más pequeños. ${ learnMoreLink }." ], @@ -4755,6 +4755,9 @@ "Upgrade to get ${ activatePmUser } for a shorter, easy-to-remember email address in addition to your current one.": [ "Mejora tu plan para obtener ${ activatePmUser } para una dirección de correo electrónico más corta y fácil de recordar, además de tu dirección actual." ], + "Use a recovery method to reset your password": [ + "Usa un método de recuperación para restablecer tu contraseña" + ], "Use this guide to get your organization promptly benefiting from ${ BRAND_NAME }'s industry-leading encryption and privacy ecosystem.": [ "Usa esta guía para que tu organización se beneficie rápidamente del cifrado y el ecosistema de privacidad líderes del sector de ${ BRAND_NAME }." ], @@ -5712,9 +5715,6 @@ "${ user } will not be able to access your account until the next emergency access.": [ "${ user } no podrá acceder a tu cuenta hasta el próximo acceso de emergencia." ], - "**${ contact }** is now your recovery contact. They can help you recover your data after a password reset.": [ - "**${ contact }** ya es tu contacto de recuperación. Podrá ayudarte a recuperar tus datos si restableces tu contraseña." - ], "**If they confirm**, click **Approve recovery**. This will unlock their encrypted data.": [ "**Si te lo confirman**, haz clic en **Aprobar recuperación**. Esto desbloqueará sus datos cifrados." ], @@ -5745,6 +5745,9 @@ "Add emergency contact": [ "Añadir contacto de emergencia" ], + "Add option": [ + "Añadir opción" + ], "Add recovery contact": [ "Añadir contacto de recuperación" ], @@ -5865,12 +5868,6 @@ "Less than a minute left": [ "Falta menos de un minuto." ], - "Let ${ user } know it’s really you trying to regain access.": [ - "Avisa a ${ user } de que eres tú quien intenta recuperar el acceso." - ], - "None": [ - "Ninguna" - ], "Only ": [ "Solo " ], @@ -5961,15 +5958,9 @@ "Select recovery contact ${ name }": [ "Seleccionar contacto de recuperación: ${ name }" ], - "Send email request": [ - "Enviar solicitud por correo" - ], "Send recovery request": [ "Enviar solicitud de recuperación" ], - "Set account recovery": [ - "Configurar recuperación de cuenta" - ], "Stop being recovery contact": [ "Dejar de ser contacto de recuperación" ], @@ -6515,9 +6506,6 @@ "Please try again in a few moments.": [ "Vuelve a intentarlo en un momento." ], - "Please upgrade to a business plan with more than 1 user to get multi-user support": [ - "Pasa a un plan para empresa con más de 1 usuario para un soporte multiusuario." - ], "Please upgrade to a business plan with more than 1 user to manage multiple users.": [ "Pasa a un plan para empresa con más de 1 usuario para administrar varios usuarios." ], @@ -6936,6 +6924,9 @@ "Ask your administrator to enable Account monitor.": [ "Pide a tu administrador que active el monitor de cuenta." ], + "Enable account monitor to start loading event.": [ + "Activa el monitor de cuenta para empezar a cargar el evento." + ], "Error: ${ errorMessage }": [ "Error: ${ errorMessage }" ], @@ -7812,11 +7803,6 @@ "${ BRAND_NAME }. Privacy by default." ] }, - "Force upgrade safety review": { - "I understand that I will no longer be able to sign in to older versions of ${ BRAND_NAME } mobile apps.": [ - "Entiendo que ya no podré iniciar sesión en versiones anteriores de las aplicaciones móviles de ${ BRAND_NAME }." - ] - }, "Form heading": { "Enter your email address": [ "Introduce tu dirección de correo electrónico" @@ -8147,9 +8133,6 @@ "Contact us": [ "Contáctanos" ], - "Downloads": [ - "Descargas" - ], "Enjoying ${ planName }?": [ "¿Disfrutando de ${ planName }?" ], @@ -8581,6 +8564,9 @@ "${ BRAND_NAME } Scribe writing assistant": [ "Asistente de escritura ${ BRAND_NAME } Scribe" ], + "${ BRAND_NAME } will send a verification code to your recovery phone. Standard message rates may apply.": [ + "${ BRAND_NAME } envía un código de verificación a tu teléfono de recuperación. Se pueden aplicar las tarifas estándar de mensajes." + ], "${ BRAND_NAME }'s encryption technology means that nobody can access your password - not even us.": [ "La tecnología de cifrado de ${ BRAND_NAME } conlleva que nadie tiene acceso a tu contraseña - ni siquiera nosotros." ], @@ -8922,6 +8908,9 @@ "Activity Monitor": [ "Monitor de actividad" ], + "Add ${ PLAN_NAMES[PLANS.MEET_BUSINESS] }": [ + "Añade ${ PLAN_NAMES[PLANS.MEET_BUSINESS] }" + ], "Add a @pm.me email address to your account. This simple, shorter domain stands for \"${ MAIL_APP_NAME } me\" or \"Private Message me.\"": [ "Añade una dirección de correo electrónico @pm.me a tu cuenta. Este dominio simple y más corto significa \"${ MAIL_APP_NAME } me\" o \"Mensaje privado\"." ], @@ -8950,10 +8939,6 @@ "Add your name and logo to create a more personalized experience for your organization.": [ "Añade tu nombre y logo para crear una experiencia más personalizada para tu organización." ], - "Adding ${ addedServerCount } gateway server": [ - "Añadiendo ${ addedServerCount } servidor de puerta de enlace", - "Añadiendo ${ addedServerCount } servidores de puerta de enlace" - ], "Adding an external email address will disable end-to-end encryption for all email communication within that group. Do you want to proceed?": [ "Al añadir una dirección de correo electrónico externa, se desactivará el cifrado de extremo a extremo para todas las comunicaciones por correo electrónico dentro de este grupo. ¿Deseas continuar?" ], @@ -9232,9 +9217,6 @@ "Change your password": [ "Cambia tu contraseña" ], - "Check the status of imports and forwarding.": [ - "Verifica el estado de las importaciones y de los reenvíos." - ], "Choose a plan that works best for you.": [ "Elige el plan que mejor se adapte a ti." ], @@ -9274,6 +9256,9 @@ "Configure SAML authentication for your organization through an identity provider like Okta, Microsoft Azure, or Google Identity Platform. This will enable SAML for the whole organization.": [ "Configura la autenticación SAML para tu organización con un proveedor de identidad como Okta, Microsoft Azure o Google Identity Platform. Esto habilitará SAML para toda la organización." ], + "Connect and manage your external mailboxes in ${ MAIL_APP_NAME }.": [ + "Conecta y gestiona tus buzones externos en ${ MAIL_APP_NAME }" + ], "Connection data will be available in around 1 hour.": [ "Los datos de conexión estarán disponible en aproximadamente 1 hora." ], @@ -9329,10 +9314,6 @@ "Create a new code on your TV and try again.": [ "Crea un nuevo código en tu TV e inténtalo de nuevo." ], - "Create a secure cloud for ${ value } member": [ - "Crear una nube segura para ${ value } miembro", - "Crear una nube segura para ${ value } miembros" - ], "Create an account": [ "Crear una cuenta" ], @@ -9349,6 +9330,10 @@ "Creando servidor de puerta de enlace: ${ serverNumber } / ${ total }", "Creando servidores de puerta de enlace: ${ serverNumber } / ${ total }" ], + "Creating gateway with ${ total } server": [ + "Creando puerta de enlace con ${ total } servidor", + "Creando puerta de enlace con ${ total } servidores" + ], "Creating your account": [ "Creando tu cuenta" ], @@ -9738,9 +9723,6 @@ "For users who are switching to ${ MAIL_APP_NAME } from another email service, select the ${ boldAddresses } tab and add all active email addresses before changing the MX record to ensure a smooth transition.": [ "Para los usuarios que cambian a ${ MAIL_APP_NAME } desde otro servicio de correo electrónico, selecciona la pestaña ${ boldAddresses } y añade todas las direcciones de correo activas antes de cambiar el registro MX para garantizar una transición sin problemas." ], - "Forwarding automatically sends new incoming emails to your Inbox.": [ - "El reenvío envía automáticamente los nuevos correos entrantes a tu bandeja de entrada." - ], "Free forever": [ "Gratis para siempre" ], @@ -9783,6 +9765,9 @@ "Get notified if your password or other personal data was leaked. ${ learnMoreLinkNoBreach }": [ "Recibe notificaciones si tu contraseña u otro dato personal fue filtrado. ${ learnMoreLinkNoBreach }" ], + "Get started": [ + "Comenzar" + ], "Get started with the referral link above.": [ "Empieza con el enlace de referido de arriba." ], @@ -10281,6 +10266,9 @@ "No card required": [ "No se requiere tarjeta" ], + "No connected addresses.": [ + "No hay direcciones conectadas." + ], "No countries enabled": [ "Sin países activados" ], @@ -10741,6 +10729,9 @@ "Set up your organization": [ "Configura tu organización" ], + "Set up your organization and start protecting your data in a few easy steps.": [ + "Configura tu organización y empieza a proteger tus datos en unos pocos pasos." + ], "Setting up ${ feature }…": [ "Configurando ${ feature }…" ], @@ -11500,9 +11491,6 @@ "When disabled, this prevents remote images from loading without your knowledge.": [ "Cuando está desactivado, esto evita que las imágenes remotas se carguen sin tu conocimiento." ], - "When enabled, we will check if ${ MAIL_APP_NAME } is your default mail application and notify you if it is not.": [ - "Cuando esta opción esté activada, comprobaremos si ${ MAIL_APP_NAME } es tu aplicación de correo por defecto y te notificaremos si no lo es." - ], "When enabling SAML for ${ appName } in your identity provider, you might be prompted to use the callback (ACS) URL and issuer ID. Just copy-paste the data below into your identity provider fields.": [ "Al habilitar SAML para ${ appName } en tu proveedor de identidad, es posible que se te solicite que uses la URL de devolución de llamada (ACS) y el ID del emisor. Simplemente copia y pega los datos a continuación en los campos de tu proveedor de identidad." ], @@ -11630,9 +11618,6 @@ "You can edit this once to ensure the correct email address for verification.": [ "Puedes editar esto una vez para asegurarte de la dirección de correo correcta para verificar." ], - "You can enable the Photos section from the interface using the toggle below.": [ - "Puedes activar la sección Fotos desde la interfaz usando el selector inferior." - ], "You can enforce the password rules members of your organization will use when they create or reset the password to their ${ BRAND_NAME } Account.": [ "Puedes aplicar las reglas de contraseña que los miembros de tu organización usarán cuando creen o restablezcan la contraseña de su cuenta de ${ BRAND_NAME }." ], @@ -13398,6 +13383,9 @@ "Pending": [ "Pendiente" ], + "Personal and work emails, plus important updates and notifications": [ + "Tus correos personales y profesionales, además de actualizaciones y notificaciones importantes" + ], "Phone number": [ "Número de teléfono" ], @@ -15206,6 +15194,9 @@ "Advanced network security": [ "Seguridad de red avanzada" ], + "Advanced workspace security": [ + "Seguridad avanzada de tu espacio de trabajo" + ], "All ${ BRAND_NAME } products and features": [ "Todos los productos y funciones de ${ BRAND_NAME }" ], @@ -16055,8 +16046,8 @@ "${ app } product updates": [ "Actualizaciones de producto para ${ app }" ], - "${ BRAND_NAME } for Business newsletter": [ - "Boletín de ${ BRAND_NAME } for Business" + "${ BRAND_NAME } for Business communications": [ + "${ BRAND_NAME } para comunicaciones empresariales" ], "${ BRAND_NAME } important announcements": [ "Avisos importantes de ${ BRAND_NAME }" @@ -16109,8 +16100,8 @@ "During your first month of using a ${ BRAND_NAME } product": [ "Durante el primer mes de uso de un producto de ${ BRAND_NAME }" ], - "Email subscriptions": [ - "Suscripciones de correo" + "Email communications": [ + "Comunicaciones por correo electrónico" ], "In-app notifications": [ "Notificaciones dentro de la aplicación" @@ -17095,15 +17086,9 @@ "per month, billed every two years": [ "al mes con facturación cada dos años" ], - "Preparing your Recovery Kit": [ - "Preparando tu kit de recuperación" - ], "Protected by Swiss privacy laws": [ "Bajo la protección de las leyes de privacidad suizas" ], - "Save your recovery kit to continue": [ - "Guarda tu kit de recuperación para continuar" - ], "Secure vault sharing": [ "Compartición segura de cajas fuertes" ], @@ -17962,21 +17947,6 @@ "Mejorar a ${ upsellPlanTitle }" ] }, - "PQC account key generation": { - "Couldn’t generate keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\n${ settingsLink } and select 'Generate key' for your account and for each address.": [ - "No se han podido generar las claves. Para activar la protección poscuántica, deberás generar tus nuevas claves de cifrado manualmente.\n\n${ settingsLink } y selecciona «Generar clave» tanto para tu cuenta como para cada dirección." - ] - }, - "PQC adress key generation": { - "Couldn’t generate address keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\nGo to ${ settingsLink } and select 'Generate key' for each address.": [ - "No se han podido generar las claves de las direcciones. Para activar la protección poscuántica, deberás crear tus nuevas claves de cifrado manualmente.\n\nVe a ${ settingsLink } y selecciona «Generar clave» para cada dirección." - ] - }, - "PQC compatibility warning": { - "**You must update all ${ BRAND_NAME } mobile apps**: your new keys won't work on older app versions.": [ - "**Debes actualizar todas las aplicaciones móviles de ${ BRAND_NAME }**: tus nuevas claves no funcionarán en versiones anteriores de la aplicación." - ] - }, "PQC key generation": { "This will generate new quantum-resistant encryption keys for your account.": [ "Esto generará nuevas claves de cifrado resistentes al análisis cuántico para tu cuenta." @@ -18271,6 +18241,11 @@ "Verificar tu número de teléfono aumenta la seguridad de tu cuenta y permite opciones de recuperación adicionales." ] }, + "Recovery score": { + "Add more options to avoid getting locked out of your account.": [ + "Añade más opciones para evitar perder el acceso a tu cuenta." + ] + }, "RecoveryPhrase: Action": { "Continue": [ "Continuar" @@ -18303,15 +18278,9 @@ ], "Or ${ downloadRecoveryKitSwitchButton } instead.": [ "O utiliza ${ downloadRecoveryKitSwitchButton } en su lugar." - ], - "Your **Recovery Kit** lets you restore your ${ BRAND_NAME } Account if you’re locked out.": [ - "Tu **Kit de recuperación** te permite restaurar tu cuenta de ${ BRAND_NAME } si te quedas fuera." ] }, "RecoveryPhrase: Title": { - "Save your Recovery Kit": [ - "Guardar tu Kit de recuperación" - ], "Save your recovery phrase": [ "Guardar tu frase de recuperación" ] @@ -18695,9 +18664,6 @@ "Back to Safety Review": [ "Volver a la verificación de seguridad" ], - "Because you reset your password, your current Recovery Kit can only be used to recover the data created before your password reset.": [ - "Al restablecer tu contraseña, tu kit de recuperación actual solamente se puede usar para recuperar los datos creados antes de restablecer tu contraseña." - ], "Can be used to regain access to your account and data": [ "Puede usarse para recuperar el acceso a la cuenta y sus datos" ], @@ -18725,9 +18691,6 @@ "Download ${ size }": [ "Descargar ${ size }" ], - "Download your Recovery Kit": [ - "Descarga el kit de recuperación" - ], "Email address": [ "Dirección de correo electrónico" ], @@ -18740,18 +18703,12 @@ "Enable recovery by phone": [ "Activar la recuperación por teléfono" ], - "I understand that I will not be able to recover currently locked data with this Recovery Kit": [ - "Entiendo que no podré recuperar los datos bloqueados actualmente con este kit de recuperación." - ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in on this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Si olvidas tu contraseña de ${ BRAND_NAME } y necesitas restablecerla, la próxima vez que inicies sesión en este dispositivo con tu nueva contraseña, el acceso completo a tu cuenta de ${ BRAND_NAME } se restablecerá." ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Si olvidas tu contraseña de ${ BRAND_NAME } y necesitas restablecerla, la próxima vez que inicies sesión en este dispositivo con tu nueva contraseña, el acceso completo a tu cuenta de ${ BRAND_NAME } se restablecerá." ], - "If you get locked out of your ${ BRAND_NAME } Account, your Recovery Kit will allow you to sign in and recover your data.": [ - "Si se bloquea tu cuenta ${ BRAND_NAME }, el kit de recuperación te permitirá iniciar sesión y recuperar tus datos." - ], "If you lose your login details and need to reset your account, **it’s imperative** that you have both an **account recovery and data recovery method** in place, otherwise you might not be able to access any of your emails, contacts, files or passwords.": [ "Si pierdes tus datos de inicio de sesión y necesitas restablecer tu cuenta, **es obligatorio** que tengas configurados **un método de recuperación de la cuenta y de los datos**. De lo contrario, es posible que no puedas acceder a ninguno de tus correos electrónicos, contactos, archivos o contraseñas." ], @@ -18794,9 +18751,6 @@ "Take action to secure your account": [ "Toma medidas para proteger tu cuenta" ], - "There was an error generating your Recovery Kit": [ - "Se ha producido un error al generar el kit de recuperación." - ], "There was an error verifying your email": [ "Se ha producido un error al verificar tu correo electrónico" ], @@ -18824,12 +18778,6 @@ "to recover your account if you're ever locked out": [ "para recuperar la cuenta si alguna vez se bloqueara" ], - "Update your Recovery Kit": [ - "¿Actualizar el kit de recuperación?" - ], - "Update your Recovery Kit?": [ - "¿Actualizar el kit de recuperación?" - ], "Verify": [ "Verificar" ], @@ -18845,9 +18793,6 @@ "Verify your recovery phone number": [ "Verifica el número telefónico de recuperación" ], - "We encountered an error while generating your Recovery Kit. Please try again later, or contact support if the issue continues.": [ - "Hemos encontrado un error al generar tu kit de recuperación. Inténtalo de nuevo más tarde o ponte en contacto con el servicio de asistencia si el problema persiste." - ], "We encountered an error while verifying your email. Please try again later, or contact support if the issue continues.": [ "Se ha producido un error al verificar tu correo electrónico. Inténtalo de nuevo más tarde o ponte en contacto con atención al cliente si el problema persiste." ], @@ -18869,9 +18814,6 @@ "You can disable this at any time.": [ "Puedes desactivar esto en cualquier momento." ], - "You can use the recovery phrase in this Recovery Kit to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ - "Puedes usar la frase de recuperación de este kit de recuperación para restaurar completamente tu cuenta cuando restablezcas tu contraseña, así que asegúrate de guardarla en un lugar seguro." - ], "You can use your email to regain access to your account if you forget your password.": [ "Puedes usar tu correo electrónico para volver a acceder a tu cuenta si olvidas tu contraseña." ], @@ -18881,9 +18823,6 @@ "You can use your recovery phone to regain access to your account if you forget your password.": [ "Puedes usar tu teléfono de recuperación para volver a acceder a tu cuenta si olvidas la contraseña." ], - "You have previously downloaded a Recovery Kit. Downloading a new one will **deactivate the old one**.": [ - "Ya has descargado un kit de recuperación. La descarga de uno nuevo **desactivará el anterior**." - ], "You have recommended actions to safeguard your account further.": [ "Tienes recomendaciones para proteger aún más tu cuenta." ], @@ -18947,12 +18886,6 @@ "Your recovery email is set": [ "El correo electrónico de recuperación está configurado." ], - "Your Recovery Kit": [ - "Kit de recuperación" - ], - "Your Recovery Kit is set": [ - "El kit de recuperación está configurado." - ], "Your recovery methods": [ "Métodos de recuperación" ], @@ -19178,6 +19111,11 @@ "No se han encontrado resultados." ] }, + "Sentinel banner": { + "To ensure the highest possible security of your account, disable recovery via email and SMS.": [ + "Para garantizar la máxima seguridad de tu cuenta, desactiva la recuperación por correo electrónico y SMS." + ] + }, "Server-Info": { "active": [ "activo" @@ -21461,9 +21399,6 @@ "Organization logo updated": [ "Se ha actualizado el logo de la organización." ], - "Organization name set": [ - "Nombre de la organización establecido" - ], "Organization name updated": [ "Se ha actualizado el nombre de la organización." ], @@ -21917,6 +21852,9 @@ "Actions": [ "Acciones" ], + "Activate multi-user support": [ + "Activar el acceso multiusuario" + ], "Activate organization key": [ "Activar clave de la organización" ], @@ -22137,18 +22075,12 @@ "Confirm": [ "Confirmar" ], - "Confirm address": [ - "Confirmar dirección" - ], "Confirm downgrade": [ "Confirmar el paso a un plan inferior" ], "Confirm loss of ${ BRAND_NAME } bonuses": [ "Confirmar la pérdida de beneficios de ${ BRAND_NAME }" ], - "Confirm phone number": [ - "Confirmar el número de teléfono" - ], "Connect ${ name }": [ "Conectar ${ name }" ], @@ -22173,6 +22105,9 @@ "Connect your custom domain": [ "Conecta tu dominio personalizado" ], + "Connected emails": [ + "Correos conectados" + ], "Connection status": [ "Estado de la conexión" ], @@ -22276,6 +22211,9 @@ "Data recovery": [ "Recuperación de datos" ], + "Data recovery contacts": [ + "Contactos de recuperación de datos" + ], "Data retention": [ "Conservación de datos" ], @@ -22370,6 +22308,12 @@ "Discard changes?": [ "¿Descartar los cambios?" ], + "Disconnected from Gmail": [ + "Desconectado de Gmail" + ], + "Dismiss setup checklist": [ + "Descartar la lista de configuración" + ], "Display name and signature": [ "Nombre a mostrar y firma" ], @@ -22536,6 +22480,9 @@ "Feature access": [ "Acceso a funciones" ], + "Fewer distractions, more focus": [ + "Menos distracciones, más concentración" + ], "Filter for more focus": [ "Filtra tus mensajes para una mejor concentración" ], @@ -22566,9 +22513,6 @@ "Forward emails": [ "Reenvío de correos electrónicos" ], - "Forwardings": [ - "Reenvíos" - ], "Free": [ "Gratuito" ], @@ -22629,6 +22573,9 @@ "Get more from your VPN": [ "Obtén más de tu VPN" ], + "Get started": [ + "Comenzar" + ], "Get the app on all your devices and enjoy safe, seamless access anywhere.": [ "Consigue la aplicación en todos tus dispositivos y disfruta de un acceso seguro y sin interrupciones en cualquier lugar." ], @@ -22822,6 +22769,9 @@ "No events": [ "No hay eventos" ], + "No events yet": [ + "Aún no hay eventos" + ], "No need to empty the trash": [ "No es necesario vaciar la papelera" ], @@ -22909,9 +22859,6 @@ "Phone": [ "Teléfono" ], - "Photos": [ - "Fotos" - ], "Pin the extension": [ "Ancla la extensión" ], @@ -22984,9 +22931,15 @@ "Remove domain": [ "Eliminar el dominio" ], + "Remove email": [ + "Eliminar correo electrónico" + ], "Remove forwarding address": [ "Eliminar dirección de reenvío" ], + "Remove recovery phone number": [ + "Eliminar el número de teléfono de recuperación" + ], "Remove server?": [ "¿Eliminar el servidor?" ], @@ -23182,6 +23135,9 @@ "Snooze:": [ "Posponer:" ], + "Something went wrong": [ + "Se ha producido un error." + ], "Sort folders alphabetically": [ "Ordenar las carpetas alfabéticamente" ], @@ -24437,11 +24393,14 @@ "${ BRAND_NAME } will transfer as much data as possible, starting with your most recent messages.": [ "${ BRAND_NAME } transferirá tantos datos como sea posible, comenzando con tus mensajes más recientes." ], - "Are you sure you want to delete the phone number?": [ - "¿Estás seguro de que quieres eliminar este número de teléfono?" + "Are you sure you want to remove your notification email?": [ + "¿Confirmas que quieres eliminar tu correo de notificación?" ], - "Are you sure you want to delete this address?": [ - "¿Estás seguro de que quieres eliminar esta dirección?" + "Are you sure you want to remove your recovery email?": [ + "¿Confirmas que quieres eliminar tu correo de recuperación?" + ], + "Are you sure you want to remove your recovery phone number?": [ + "¿Confirmas que quieres eliminar tu número de teléfono de recuperación?" ], "By deleting this address, you will no longer be able to receive daily email notifications.": [ "Si eliminas esta dirección, ya no podrás recibir notificaciones diarias por correo electrónico." @@ -24452,8 +24411,8 @@ "By deleting this address, you will no longer be able to recover your account.": [ "Si eliminas esta dirección, ya no podrás recuperar tu cuenta." ], - "By deleting this phone number, you will no longer be able to recover your account.": [ - "Al eliminar este número de teléfono, ya no podrás recuperar tu cuenta." + "By removing this phone number, you will no longer be able to recover your account.": [ + "Si eliminas este número de teléfono, ya no puedes recuperar tu cuenta" ], "Could not login. Please open ${ PASS_APP_NAME } browser extension and login from there.": [ "No se ha podido iniciar sesión. Abre la extensión de navegador de ${ PASS_APP_NAME } e inicia sesión desde allí." diff --git a/applications/account/locales/es_LA.json b/applications/account/locales/es_LA.json index d567725fb57..66ec20f0480 100644 --- a/applications/account/locales/es_LA.json +++ b/applications/account/locales/es_LA.json @@ -90,6 +90,9 @@ "Add": [ "Agregar" ], + "Add ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }": [ + "Agregar ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }" + ], "Add ${ BRAND_NAME } Account": [ "Agregar cuenta de ${ BRAND_NAME }" ], @@ -162,6 +165,9 @@ "Add user": [ "Agregar usuario" ], + "Added ${ memberName } as group owner": [ + "${ memberName } se ha añadido a la titularidad de grupo" + ], "Align center": [ "Alinear al centro" ], @@ -213,6 +219,9 @@ "Back to sign in": [ "Volver a iniciar sesión" ], + "Back to sign-in": [ + "Volver a iniciar sesión" + ], "Block": [ "Bloquear" ], @@ -309,6 +318,9 @@ "Confirm": [ "Confirmar" ], + "Confirm email": [ + "Confirmar correo electrónico" + ], "Confirm opening of link ${ linkToShow }": [ "Confirmar apertura del enlace ${ linkToShow }" ], @@ -324,15 +336,15 @@ "Connect Gmail address": [ "Conectar dirección de Gmail" ], - "Connect to Gmail": [ - "Conectar a Gmail" - ], "Connect to video conferencing": [ "Conectarse a la videoconferencia" ], "Connect your ${ BRAND_NAME } Account": [ "Conecte la cuenta de ${ BRAND_NAME }" ], + "Connect your email": [ + "Conectar su correo electrónico" + ], "Connected": [ "Conectado" ], @@ -369,6 +381,9 @@ "Continue with ${ nameToDisplay } ${ maybeEmailInBrackets }": [ "Continuar con ${ nameToDisplay } ${ maybeEmailInBrackets }" ], + "Continue with Free": [ + "Seguir con el plan gratuito" + ], "Continue with Google": [ "Continuar con Google" ], @@ -519,8 +534,8 @@ "Delete record": [ "Eliminar registro" ], - "Delete token ${ token.Account }": [ - "Eliminar token ${ token.Account }" + "Delete token ${ tokens[0].Account }": [ + "Eliminar token ${ tokens[0].Account }" ], "Delete token “${ token.Name }”": [ "Eliminar token «${ token.Name }»" @@ -561,6 +576,9 @@ "Disable categories": [ "Desactivar categorías" ], + "Disable category": [ + "Desactivar categoría" + ], "Disable recovery phrase": [ "Desactivar frase de recuperación" ], @@ -711,6 +729,9 @@ "Enable ${ darkWebMonitoring }": [ "Activar ${ darkWebMonitoring }" ], + "Enable category": [ + "Activar categoría" + ], "enable desktop notifications": [ "activar las notificaciones de escritorio" ], @@ -762,6 +783,9 @@ "Filters are being applied. This might take a few minutes.": [ "Se están aplicando los filtros. Esto puede tomar unos minutos." ], + "Finish": [ + "Terminar" + ], "Fit to window": [ "Ajustar a la ventana" ], @@ -780,6 +804,9 @@ "Generate key": [ "Generar clave" ], + "Generate missing keys": [ + "Generar claves faltantes" + ], "Generate new phrase": [ "Generar otra frase" ], @@ -882,6 +909,9 @@ "Go to ${ planOrAppName }": [ "Acceda a ${ planOrAppName }" ], + "Go to domain provider": [ + "Vaya al proveedor del dominio" + ], "Go to label": [ "Ir a la etiqueta" ], @@ -1278,6 +1308,9 @@ "Remove this notification": [ "Eliminar esta notificación" ], + "Removed ${ memberName } as group owner": [ + "${ memberName } se ha borrado de la titularidad de grupo" + ], "Rename": [ "Renombrar" ], @@ -1359,6 +1392,9 @@ "Save": [ "Guardar" ], + "Save & exit": [ + "Guardar y salir" + ], "Save address": [ "Guardar dirección" ], @@ -2058,18 +2094,21 @@ ] }, "Admin roles onboarding": { + "2 new admin roles": [ + "2 roles de administración nuevos" + ], "3 new admin roles": [ "3 roles nuevos de administración" ], - "Admin roles": [ - "Roles de dadministración" - ], "Configure security policies, data retention, and VPN infrastructure, and manage audit logs.": [ "Configure las políticas de seguridad, conservación de datos, infraestructura VPN y gestione registros de auditoría." ], "Delegate management by assigning specific admin roles. Give each admin only the access they need. This follows the principle of least privilege, protecting your organization from compromised accounts and accidental errors.": [ "Delegue la gestión al asignar roles de administración específicos. Brinde a cada administrador solo el acceso necesario. Esto cumple con el principio de privilegio mínimo, protegiendo su organización de cuentas comprometidas y errores acceidentales." ], + "Delegate management for many users at once. Assign specific admin roles to groups for automatic permissions. This follows the principle of least privilege to save time on onboarding and offboarding while reducing errors.": [ + "Delegue la gestión para varios usuarios a la vez. Asigne roles de administración específicas a grupos con permisos automáticos. Esto cumple con al principio de privilegios mínimos para ahorrar tiempo en integraciones y bajas mientras reduce errores." + ], "Delegate management with the appropriate admin role.": [ "Delegue la gestión con el rol de administración apropiado." ], @@ -2082,21 +2121,15 @@ "New: Control admin access for individual users": [ "Nuevo: Control de acceso administrativo para usuarios individuales" ], - "Organization admin": [ - "Administrador de la organización" + "New: Control admin access for many users at once": [ + "Nuevo: Control de acceso administrativo para muchos usuarios a la vez" ], "Organization admin:": [ "Administrador de la organización:" ], - "Security admin": [ - "Administrador de seguridad" - ], "Security admin:": [ "Administrador de seguridad:" ], - "User admin": [ - "Usuario administrador" - ], "User admin:": [ "Usuario administrador:" ] @@ -2864,15 +2897,66 @@ "${ BRAND_NAME } Migration Assistant": [ "Asistente de migración de ${ BRAND_NAME }" ], - "Add a custom domain": [ - "Añadir un dominio personalizado" + "${ migratedCount } of ${ providerUsers.length }": [ + "${ migratedCount } de ${ providerUsers.length }" + ], + "**p=none**: do not quarantine or reject unauthorized emails. Usually, people only use this policy to troubleshoot or test.": [ + "**p=none**: no poner en cuarentena o rechazar los correos no autorizados. Usualmente las personas solo usan esta política como prueba." + ], + "**p=quarantine**: asking the recipient platforms to mark the unauthorized emails as spam or quarantine them.": [ + "**p=quarantine**: solicitando a las plataformas de destino que marquen los correos no autorizados como spam o los pongan en cuarentena." + ], + "**p=reject**: asking the recipient platforms to reject the unauthorized emails.": [ + "**p=reject**: solicitando a las plataformas de destino rechazar los correos no autorizados." + ], + "Account connected": [ + "Cuenta conectada" + ], + "Account disconnected": [ + "Cuenta desconectada" + ], + "Activated": [ + "Activado" + ], + "Activation link": [ + "Enlace de activación" ], - "App installed": [ - "Aplicación instalada" + "Activation link copied to clipboard": [ + "Enlace de activación copiado al portapapeles" + ], + "Add a domain": [ + "Añadir dominio" + ], + "Add domain": [ + "Añadir dominio" + ], + "Add users": [ + "Añadir usuarios" + ], + "Add users and configure your domain manually for sending and receiving mail. Ideal for small teams starting from a clean slate.": [ + "Agregue usuarios y configure su dominio manualmente para enviar y recibir correo. Ideal para equipos pequeños que empiezan desde cero." + ], + "Address is already used by a user outside of your organization. Please contact customer support to resolve this": [ + "La dirección ya está en uso por otra persona de la organización. Contacte con soporte al cliente para resolverlo." + ], + "All": [ + "Todo" + ], + "An unknown error occurred": [ + "Ocurrió un error desconocido" + ], + "Are you sure you want to proceed? Users who haven't claimed their account before the migration is finalized will need to request a password reset from their ${ BRAND_NAME } organization administrator.": [ + "¿En verdad desea continuar? Los usuarios que no hayan reclamado su cuenta antes de que finalice la migración deberán solicitar un restablecimiento de contraseña al administrador de su organización en ${ BRAND_NAME }." + ], + "As soon as the accounts are created, you can share the activation link so users can claim their ${ BRAND_NAME } account.": [ + "En cuanto se creen las cuentas, puede compartir el enlace de activación para que los usuarios puedan reclamar su cuenta de ${ BRAND_NAME }." ], "Authenticate": [ "Autenticar" ], + "Authenticate to Google Workspace": [ + "Autenticar con cuenta de Google Workspace" + ], "Authenticate your Google Workspace account": [ "Autentique su cuenta de Google Workspace" ], @@ -2882,23 +2966,68 @@ "Change": [ "Cambiar" ], + "Choose how you want to bring your team and email setup to ${ BRAND_NAME }.": [ + "Elija cómo desea importar su configuración de equipo y correo electrónico a ${ BRAND_NAME }." + ], + "Choose what to migrate. Your choice will apply to all users. The migration will start after you decide which users to copy.": [ + "Elija qué migrar. Su elección se aplicará a todos los usuarios. La migración comenzará después de que decida cuáles usuarios copiar." + ], "Completed": [ "Completado" ], "Configure": [ "Configurar" ], + "Configure domain": [ + "Configurar dominio" + ], "Configure migration": [ "Configurar migración" ], + "Configure your domain": [ + "Configure su dominio" + ], "Contacts": [ "Contactos" ], + "Continue migration": [ + "Continuar migración" + ], + "Copy activation link": [ + "Copiar enlace de activación" + ], + "Copy activation link to clipboard": [ + "Copiar el enlace de activación al portapapeles" + ], + "Copy the below code and paste it in the DNS section of your domain host. You can find an example and some helpful tips ${ hereHref }.": [ + "Copie el siguiente código y péguelo en la sección de DNS de su anfitrión de dominio. Puede encontrar un ejemplo y consejos ${ hereHref }." + ], + "Creating accounts": [ + "Creando cuentas" + ], + "DKIM adds a digital signature to each email so recipients can verify that the message really came from your domain and was not altered in transit. Without it, messages may be treated as less trustworthy.": [ + "DKIM añade una firma digital a cada correo para que los destinatarios puedan verificar que el mensaje viene realmente de su dominio y no fue alterado en su tránsito. Sin ella, los mensajes podrían considerarse menos confiables." + ], + "DKIM records": [ + "Registros DKIM" + ], + "DMARC builds on SPF and DKIM by telling receiving servers how to handle messages that fail these checks. It helps protect your domain from impersonation and improves overall delivery reliability.": [ + "DMARC se basa en SPF y DKIM, indicando a los servidores receptores cómo gestionar los mensajes que no superan estas comprobaciones. Esto ayuda a proteger su dominio contra la suplantación de identidad y mejora la fiabilidad general de la entrega." + ], + "DMARC records": [ + "Registros DMARC" + ], + "Domain added": [ + "Dominio añadido" + ], "Domain connected": [ "Dominio conectado" ], - "Domain ownership verified": [ - "Propiedad del dominio verificada" + "Ensure that your emails reach the inbox, not the spam folder. Updating SPF will allow users to send from ${ BRAND_NAME } and Google simultaneously for the duration of the migration.": [ + "Asegúrese de que sus correos electrónicos lleguen a la bandeja de entrada, no a la carpeta de spam. La actualización de SPF permitirá a los usuarios enviar correos desde ${ BRAND_NAME } y Google simultáneamente durante el periodo de migración." + ], + "Errors": [ + "Errores" ], "Estimated size": [ "Tamaño estimado" @@ -2906,15 +3035,39 @@ "Failed to load OAuth": [ "Error al cargar OAuth" ], + "Finalize migration": [ + "Finalizar migración" + ], + "Finalize your migration": [ + "Finalice su migración." + ], + "Finalizing the migration means all your emails will be routed directly to ${ BRAND_NAME }. Users will stop receiving emails on their Google accounts and data will not be synchronized between ${ BRAND_NAME } and Google anymore.": [ + "Finalizar la migración significa que todos sus correos electrónicos se redirigirán directamente a ${ BRAND_NAME }. Los usuarios dejarán de recibir correos electrónicos en sus cuentas de Google y los datos ya no se sincronizarán entre ${ BRAND_NAME } y Google." + ], + "Find out what can be migrated.": [ + "Descubra lo que puede ser migrado." + ], "Finish setting up your business account": [ "Termine de configurar su cuenta de empresa" ], + "Go to Domain names": [ + "Ir a nombres de dominio" + ], "Google Marketplace app to copy data to ${ BRAND_NAME }": [ "Aplicación de Google Marketplace para copiar datos a ${ BRAND_NAME }" ], + "Google Workspace account": [ + "Cuenta de Google Workspace" + ], + "Hang tight, we're setting up user accounts and will start importing user data shortly.": [ + "Un momento, estamos configurando las cuentas de usuario y en breve comenzaremos a importar los datos de los usuarios." + ], "Has errors": [ "Tiene errores" ], + "Import errors for ${ user.AdminSetName }": [ + "Importar errores para ${ user.AdminSetName }" + ], "In progress": [ "En progreso" ], @@ -2924,14 +3077,20 @@ "Install migration app": [ "Instalar aplicación de migración" ], - "Learn more about what can be migrated. Learn more": [ - "Consulte qué se puede migrar. Más información" + "Install Migration assistant": [ + "Instalar asistente de migración" + ], + "Loading your organization data": [ + "Cargando los datos de su organización" ], "Mail": [ "Correo" ], - "Migrate": [ - "Migrar" + "Managed via ${ registrar.name }": [ + "Gestionado mediante ${ registrar.name }" + ], + "Member address not found. Please contact customer support to resolve this": [ + "Falta la dirección de miembro. Contacte son el soporte al cliente para resolver esto" ], "Migrate from Google Workspace": [ "Migrar desde Google Workspace" @@ -2939,6 +3098,12 @@ "Migrate users": [ "Migrar usuarios" ], + "Migrate users to ${ BRAND_NAME }": [ + "Migrar usuarios a ${ BRAND_NAME }" + ], + "Migrated": [ + "Migrado" + ], "Migration includes": [ "La migración incluye" ], @@ -2949,8 +3114,35 @@ "Migration status": [ "Estado de la migración" ], - "Not started": [ - "No iniciado" + "Missing organization private key": [ + "Falta la clave privada de la organización" + ], + "Missing organization public key": [ + "Falta la clave pública de organización" + ], + "More details": [ + "Más detalles" + ], + "Move your users, emails, and settings from Google Workspace automatically. We’ll guide you through connecting your account, verifying your domain, and migrating users securely.": [ + "Mueva sus usuarios, correos electrónicos, y ajustes automáticamente desde Google Workspace. Le guiaremos a conecar su cuenta, verificar su dominio, y migrar usuarios de forma segura." + ], + "No error details available. Please contact customer support for more information": [ + "No hay detalles de error disponibles. Contáctese con soporte al cliente para más información." + ], + "No users to display": [ + "No hay usuarios que mostrar" + ], + "Not activated": [ + "No activado" + ], + "Not confirmed": [ + "No confirmado" + ], + "Once users have claimed their ${ BRAND_NAME } account, finalize the migration.": [ + "Una vez que los usuarios reclamen sus cuentas de ${ BRAND_NAME }, finalice la migración." + ], + "Once we have confirmed that emails are routed to ${ BRAND_NAME } the migration will be finalized. You will receive a confirmation email to let you know when this happens. This process can take up to 24 hours.": [ + "Una vez que hayamos confirmado que los correos electrónicos se enrutan a ${ BRAND_NAME }, la migración finalizará. Recibirá un correo electrónico de confirmación para informarle cuando esto suceda. Este proceso puede tardar hasta 24 horas." ], "Organization does not have enough seats available": [ "La organización no tiene suficientes licencias disponibles" @@ -2958,8 +3150,20 @@ "Organization does not have enough storage available": [ "La organización no tiene suficiente almacenamiento disponible" ], - "Organization settings": [ - "Ajustes de la organización" + "Pending": [ + "Pendiente" + ], + "Please add the following records in your DNS console of your domain provider:": [ + "Añada los siguientes registros en la consola de DNS de su proveedor de dominio:" + ], + "Please leave this window open until we're done creating all the users.": [ + "Deje esta ventana abierta hasta que hayamos terminado de crear todos los usuarios." + ], + "Please select at least one product to migrate": [ + "Seleccione al menos un producto para migrar" + ], + "Refresh": [ + "Actualizar" ], "Required": [ "Obligatorio" @@ -2970,8 +3174,8 @@ "Select at least one user to start a migration": [ "Seleccione al menos un usuario para iniciar una migración" ], - "Select what you want to migrate, this will apply to all users whether they are created now or later. Migration will start after user accounts are created.": [ - "Seleccione qué desea migrar. Esto se aplicará a todos los usuarios, tanto actuales como futuros. La migración comenzará una vez creadas las cuentas de usuario." + "Select users to migrate": [ + "Seleccione los usuarios para migrar" ], "Set up": [ "Configurar" @@ -2979,53 +3183,120 @@ "Set up billing information": [ "Configurar información de facturación" ], + "Set up manually": [ + "Configurar manualmente" + ], + "Set up secure sending (DKIM)": [ + "Configurar el envío seguro (DKIM)" + ], + "Set up secure sending (DMARC)": [ + "Configurar el envío seguro (DMARC)" + ], + "Set up secure sending (SPF)": [ + "Configurar el envío seguro (SPF)" + ], "Set up two-factor authentication": [ "Configurar autenticación de dos factores" ], "Settings": [ "Ajustes" ], + "Share the activation link to users so they can claim their ${ BRAND_NAME } account.": [ + "Comparta el enlace de activación a los usuarios para que puedan reclamar sus cuentas de ${ BRAND_NAME }." + ], "Sign in to Google Workspace": [ "Iniciar sesión en Google Workspace" ], + "Size": [ + "Tamaño" + ], + "Some accounts are not claimed": [ + "Algunas cuentas no están reclamadas" + ], + "SPF records": [ + "Registros SPF" + ], + "Start migrating": [ + "Iniciar migración" + ], "Start migration": [ "Iniciar migración" ], "Status": [ "Estado" ], + "The default setting is none. However, to improve your security we recommend setting this value to p=quarantine.": [ + "La configuración predeterminada es ninguna. Sin embargo, para mejorar su seguridad, le recomendamos establecer este valor en p=quarantine." + ], + "The “p=” value specifies the action to take for emails that fail DMARC. Here are the available actions:": [ + "El valor «p=» especifica la acción que se debe tomar para los correos electrónicos que no cumplen con DMARC. Estas son las acciones disponibles:" + ], + "This migration has been completed": [ + "Esta migración ha sido completada" + ], "To migrate your organization’s data, you need to install the ${ BRAND_NAME } Migration Assistant app from the Google Workspace Marketplace. This will grant permission to ${ BRAND_NAME } to copy your data. After installing it, come back here to continue.": [ "Para migrar los datos de su organización, necesita instalar la aplicación Asistente de migración de ${ BRAND_NAME } desde Google Workspace Marketplace. Esto otorgará permiso a ${ BRAND_NAME } para copiar sus datos. Después de instalarla, vuelva aquí para continuar." ], - "Transfer errors": [ - "Errores de transferencia" + "Update records for receiving": [ + "Actualizar registros para recepción" ], "User": [ "Usuario" ], + "User needs to activate their account through the activation link shown above": [ + "El usuario debe activar su cuenta a través del enlace de activación que se muestra arriba" + ], + "User status": [ + "Estado del usuario" + ], + "Users can use ${ BRAND_NAME } or Google simultaneously for the duration of the migration.": [ + "Los usuarios pueden usar ${ BRAND_NAME } o Google simultáneamente por el tiempo de la migración." + ], "Users migrated": [ "Usuarios migrados" ], + "Verified": [ + "Verificado" + ], + "Verify domain ownership": [ + "Verifique propiedad de dominio" + ], "Verify installation": [ "Verificar instalación" ], "Verify your domain": [ "Verifique su dominio" ], - "Verify your domain ownership": [ - "Verifique la propiedad de tu dominio" - ], "Verify your domain to start a migration": [ "Verifique su dominio para iniciar una migración" ], + "We detected the primary domain linked to your Google Workspace account. Confirm it to continue setting up email for your ${ BRAND_NAME } organization.": [ + "Hemos detectado el dominio principal vinculado a su cuenta de Google Workspace. Confírmelo para continuar configurando el correo electrónico de su organización en ${ BRAND_NAME }." + ], "We were unable to verify the installation, please check that you have installed it in your Google Workspace account and try again.": [ "No pudimos verificar la instalación. Compruebe que la ha instalado en su cuenta de Google Workspace e intente de nuevo." ], + "We're still checking the MX records with your domain provider.": [ + "Aún estamos comprobando los registros MX con su proveedor de dominio." + ], + "We've noticed some users have not claimed their ${ BRAND_NAME } accounts.": [ + "Hemos notado que algunos usuarios no han reclamado sus cuentas de ${ BRAND_NAME }." + ], "What are you migrating?": [ "¿Qué está migrando?" ], + "You": [ + "Usted" + ], "You need to grant the permission for ${ BRAND_NAME } to copy your data. After accepting permissions, come back here to continue.": [ "Necesita otorgar el permiso para que ${ BRAND_NAME } copie sus datos. Después de aceptar los permisos, vuelva aquí para continuar." + ], + "You're all set!": [ + "¡Todo listo!" + ], + "Your current plan allows up to ${ maxMembers } user. To migrate additional users, add more seats to your subscription.": [ + "Su plan actual permite hasta ${ maxMembers } usuario. Para migrar usuarios adicionales, añada más licencias a la suscripción.", + "Su plan actual permite hasta ${ maxMembers } usuarios. Para migrar usuarios adicionales, añada más licencias a la suscripción." ] }, "breadcrumb": { @@ -3133,9 +3404,18 @@ ] }, "Button": { + "Add users manually": [ + "Añadir usuarios manualmente" + ], + "Cancel": [ + "Cancelar" + ], "Close": [ "Cerrar" ], + "Configure your network": [ + "Configure su red" + ], "Continue using ${ MAIL_APP_NAME }.": [ "Continuar usando ${ MAIL_APP_NAME }." ], @@ -3157,6 +3437,12 @@ "Got it": [ "Entendido" ], + "Invite your team": [ + "Invite a su equipo" + ], + "Manage global VPN permissions": [ + "Gestionar permisos globales de VPN" + ], "Maybe later": [ "Quizás más tarde" ], @@ -3166,12 +3452,21 @@ "Remind me later": [ "Recordarme más tarde" ], + "Secure your organization": [ + "Proteja su organización" + ], "Send": [ "Enviar" ], "Set up other features": [ "Configure otras funciones" ], + "Set up SSO": [ + "Configurar SSO" + ], + "Sign in": [ + "Iniciar sesión" + ], "Take a tour": [ "Explore ahora" ] @@ -4804,6 +5099,9 @@ "/month": [ "/mes" ], + "/user /month": [ + "/usuario /al mes" + ], "/user per month": [ "/usuario al mes" ] @@ -5006,14 +5304,17 @@ "Automatically sort your incoming messages before they reach your inbox.": [ "Ordene automáticamente sus mensajes entrantes antes de que lleguen a su bandeja de entrada." ], + "Available storage: ${ storageText }": [ + "Almacenamiento disponible: ${ storageText }" + ], "Available with ${ title }": [ "Disponible con ${ title }" ], "Block Google's ability to profile you. Gmail can't see what you do in ${ MAIL_APP_NAME }": [ "Bloquee la capacidad de Google de perfilarle. Gmail no puede ver lo que usted hace en ${ MAIL_APP_NAME }." ], - "Bring over email, calendar events, and contacts from another provider.": [ - "Traiga correos electrónicos, eventos de calendario y contactos desde otro proveedor." + "Bring over your email, calendar events, and contacts from another provider.": [ + "Traiga su correo electrónico, eventos de calendario y contactos desde otro proveedor." ], "Build trust and brand recognition with professional email addresses at your own domain.": [ "Genere confianza y reconocimiento de marca con direcciones de correo profesionales en su propio dominio." @@ -5024,6 +5325,9 @@ "Connect your CRM, website, printers, and more.": [ "Conecte su CRM, sitio web, impresoras y mucho más." ], + "Create a Gateway to give your users access to your IT resources through dedicated servers.": [ + "Cree una puerta de enlace para brindar a sus usuarios acceso a los recursos de TI a través de servidores dedicados." + ], "Create a Zoom meeting and add joining details to your event with one click.": [ "Cree una reunión de Zoom y agregue detalles de ingreso a su evento con un solo clic." ], @@ -5033,9 +5337,15 @@ "Create groups you can email with a single address.": [ "Cree grupos a los que pueda enviar correos electrónicos con una sola dirección." ], + "Create new user accounts or import users with SSO (single sign-on) SCIM provisioning.": [ + "Cree cuentas de usuario o importe usuarios con aprovisionamiento SCIM de SSO (inicio de sesión único)." + ], "Create policies to decide who can connect to shared servers in each country.": [ "Cree políticas para decidir quién puede conectarse a servidores compartidos en cada país." ], + "Decide which users can connect to each of our 120+ shared server locations.": [ + "Decida cuáles usuarios se pueden conectar a cada una de nuestras más de 120 ubicaciones de servidor compartidas." + ], "Easily access your email and calendar on desktop and mobile.": [ "Acceda fácilmente a su correo electrónico y calendario en computadoras de escritorio y dispositivos móviles." ], @@ -5060,6 +5370,9 @@ "Encrypting and importing contacts... This may take a few minutes. When the process is completed, you can close this modal.": [ "Cifrando e importando contactos... Esto puede tardar unos minutos. Cuando el proceso se complete, puede cerrar esta ventana." ], + "Enough room for years of emails, attachments and more.": [ + "Suficiente espacio para años de correos electrónicos, archivos adjuntos y más." + ], "Ensure secure access to organization data, even if your team is remote or using public WiFi.": [ "Asegúrese de tener un acceso seguro a los datos de la organización, incluso si su equipo está de forma remota o utiliza un Wi-Fi público." ], @@ -5093,12 +5406,12 @@ "How we supported local activists when privacy and free speech were threatened.": [ "Cómo apoyamos a activistas locales cuando la privacidad y la libertad de expresión fueron amenazadas." ], - "How you reset your ${ BRAND_NAME } password. This will not recover your encrypted data.": [ - "Cómo restablecer la contraseña de ${ BRAND_NAME }. Esto no recuperará sus datos cifrados." - ], "How you unlock your encrypted data if you lose your password.": [ "Cómo desbloquear sus datos cifrados si pierde la contraseña." ], + "If you haven’t already, enable some recovery methods to make sure you never lose access to ${ VPN_APP_NAME }.": [ + "Si aún no lo ha hecho, active algunos métodos de recuperación para asegurarse de que nunca pierda el acceso a ${ VPN_APP_NAME }." + ], "It looks like the contact list you are importing contains some groups. Please review how these groups should be imported.": [ "Parece que la lista de contactos que está importando contiene algunos grupos. Revise cómo deben importarse estos grupos." ], @@ -5132,8 +5445,8 @@ "Read, reply, and stay on top of Gmail from within ${ MAIL_APP_NAME }": [ "Lea, responda y manténgase al día con Gmail desde dentro de ${ MAIL_APP_NAME }" ], - "Send a code to your recovery email or phone": [ - "Envíe un código a su correo electrónico o teléfono de recuperación" + "Select which categories you want to add and if you want to receive push notifications for each category.": [ + "Seleccione las categorías que desea agregar y si desea recibir notificaciones push para cada categoría." ], "Set up accounts for all users and invite them to join ${ BRAND_NAME }.": [ "Configure las cuentas para todos los usuarios e invítelos a unirse a ${ BRAND_NAME }." @@ -5147,6 +5460,9 @@ "Still need help? Our support team is here for you.": [ "¿Aún necesita ayuda? Nuestro equipo de soporte está aquí para ayudarle." ], + "This allows you to regain access to your ${ BRAND_NAME } account but does not recover your encrypted data.": [ + "Esto le permite recuperar el acceso a su cuenta de ${ BRAND_NAME } pero no recuperar sus datos ecriptados." + ], "This may happen if permissions were removed or your password changed.": [ "Esto puede suceder si se eliminaron permisos o si cambió su contraseña." ], @@ -5175,27 +5491,39 @@ "Track the status and activity of your referrals": [ "Rastree el estado y actividad de sus referidos" ], + "Unlock 15 GB of storage for just ${ config.offerPrice }.": [ + "Desbloquee 15 GB de almacenamiento por solo ${ config.offerPrice }." + ], "Upgrade to ${ planName } to connect up to ${ MAX_SYNC_PAID_USER } accounts": [ "Actualice a ${ planName } para conectar hasta ${ MAX_SYNC_PAID_USER } cuentas" ], "Upgrade to get ${ activatePmUser } for a shorter, easy-to-remember email address in addition to your current one.": [ "Mejore su plan para obtener ${ activatePmUser } para una dirección de correo electrónico más corta y fácil de recordar, además de su dirección actual." ], + "Use a recovery method to reset your password": [ + "Use un método de recuperación para restablecer su contraseña" + ], "Use this guide to get your organization promptly benefiting from ${ BRAND_NAME }'s industry-leading encryption and privacy ecosystem.": [ "Use esta guía para que su organización se beneficie inmediatamente del cifrado y ecosistema de privacidad líderes en la industria de ${ BRAND_NAME }." ], "We can't access ${ boldEmails } anymore.": [ "Ya no podemos acceder a ${ boldEmails }." ], + "We will pause imports at 80% storage to reserve space for new messages.": [ + "Pausaremos la importación al 80% de almacenamiento para reservar espacio para nuevos mensajes" + ], "We'll bring in your old emails and connect your Gmail to ${ MAIL_APP_NAME } so new messages appear automatically": [ "Importaremos sus correos electrónicos antiguos y conectaremos su Gmail a ${ MAIL_APP_NAME } para que los nuevos mensajes aparezcan automáticamente" ], - "We've started importing your email from Gmail. We'll let you know when it's done.": [ - "Estamos importando su correo electrónico de Gmail. Le avisaremos cuando finalicemos." + "We've started importing your emails from Gmail. We'll let you know when it's done.": [ + "Estamos importando sus correos electrónicos de Gmail. Le avisaremos cuando finalicemos." ], "We’re sorry to see you go. If you have a moment, we’d really appreciate hearing why you’d like to cancel. Your feedback helps us make ${ BRAND_NAME } better for everyone.": [ "Lamentamos que se vaya. Si tiene un momento, agradeceríamos mucho saber por qué desea cancelar. Sus comentarios nos ayudan a mejorar ${ BRAND_NAME } para todos." ], + "With new email categories, only important messages land in your primary inbox. Categories work just like spam filters. ${ MAIL_APP_NAME } never reads your emails or shares your data.": [ + "Con las nuevas categorías de correo electrónico, solo los mensajes importantes se muestran en su bandeja de entrada principal. Las categorías funcionan como filtros de spam. ${ MAIL_APP_NAME } nunca lee sus correos electrónicos o comparte sus datos." + ], "You already have a Gmail address forwarding to ${ MAIL_APP_NAME }. Connect it below to send and receive emails directly from ${ MAIL_APP_NAME }.": [ "Ya tiene una dirección de Gmail que reenvía a ${ MAIL_APP_NAME }. Conéctela a continuación para enviar y recibir correos electrónicos directamente desde ${ MAIL_APP_NAME }." ], @@ -5237,6 +5565,12 @@ "You've connected one external account address to ${ MAIL_APP_NAME }.": [ "Ha conectado una dirección de cuenta externa a ${ MAIL_APP_NAME }." ], + "Your free ${ MAIL_APP_NAME } account comes with limited storage so we'll only import ${ newUserStorageText } of your most recent Gmail messages": [ + "Su cuenta gratuita de ${ MAIL_APP_NAME } incluye almacenamiento limitado, así que solo importaremos ${ newUserStorageText } de sus mensajes de Gmail más recientes." + ], + "Your free ${ MAIL_APP_NAME } account comes with limited storage so we'll only import your most recent Gmail emails.": [ + "Su cuenta gratuita de ${ MAIL_APP_NAME } incluye almacenamiento limitado, así que solo importaremos sus correos electrónicos de Gmail más recientes." + ], "Your plan supports ${ MAX_SYNC_FREE_USER } Gmail address.": [ "Su plan admite ${ MAX_SYNC_FREE_USER } dirección de Gmail.", "Su plan admite ${ MAX_SYNC_FREE_USER } direcciones de Gmail." @@ -5251,6 +5585,11 @@ "use el asistente de importación Easy Switch" ] }, + "Description for domain modal": { + "Duplicate DMARC record found, go to the DNS console of your domain provider to fix it.": [ + "Se encontró un registro DMARC duplicado; vaya a la consola DNS de su proveedor de dominio para solucionarlo." + ] + }, "Description of the purpose of the import CSV modal": { "Also, we have automatically matched CSV fields with vCard fields. You can review and change this matching manually.": [ "Además, hemos emparejado automáticamente los campos CSV con los campos vCard. Puede verificar y cambiar este emparejamiento manualmente." @@ -5674,6 +6013,9 @@ "120m": [ "120 min" ], + "15 minutes": [ + "15 minutos" + ], "30 minutes": [ "30 minutos" ], @@ -6296,8 +6638,8 @@ "${ user } will not be able to access your account until the next emergency access.": [ "${ user } no podrá acceder a su cuenta hasta el próximo acceso de emergencia." ], - "**${ contact }** is now your recovery contact. They can help you recover your data after a password reset.": [ - "**${ contact }** ahora es su contacto de recuperación. Podrá ayudarle a recuperar sus datos después del restablecimiento de la contraseña." + "**${ contact }** is now your recovery contact. They can help you unlock your data after you reset your password.": [ + "**${ contact }** ahora es su contacto de recuperación. Podrá ayudarle a desbloquear sus datos después de restablecer su contraseña." ], "**If they confirm**, click **Approve recovery**. This will unlock their encrypted data.": [ "**Si confirma**, pulse **Aprobar recuperación**. Esto desbloqueará sus datos cifrados." @@ -6326,12 +6668,21 @@ "Add": [ "Agregar" ], + "Add 1 more": [ + "Añadir 1 más" + ], "Add emergency contact": [ "Añadir contacto de emergencia" ], + "Add option": [ + "Añadir opción" + ], "Add recovery contact": [ "Añadir un contacto de recuperación" ], + "Add recovery method": [ + "Agregar método de recuperación" + ], "Added on ${ formattedDate }": [ "Añadido el ${ formattedDate }" ], @@ -6371,12 +6722,12 @@ "Connect with them to confirm they need help to recover their data.": [ "Conéctese con ellos para confirmar si necesitan ayuda para recuperar sus datos." ], - "Contact-assisted recovery": [ - "Recuperación por asistencia de contacto" - ], "Contacts": [ "Contactos" ], + "Data recovery contacts": [ + "Contactos de recuperación de datos" + ], "Data successfully recovered. You can now decrypt your existing data and encrypted files.": [ "Datos recuperados con éxito. Ahora puede descifrar sus datos existentes y los archivos cifrados." ], @@ -6422,6 +6773,12 @@ "Enable auto-renew": [ "Activar la renovación automática" ], + "Enter your extra password": [ + "Ingrese su contraseña adicional" + ], + "Explore plans": [ + "Explorar los planes" + ], "For ${ email }": [ "Para ${ email }" ], @@ -6452,16 +6809,10 @@ "Less than a minute left": [ "Menos de un minuto restante" ], - "Let ${ user } know it’s really you trying to regain access.": [ - "Permita a ${ user } saber que es usted intentando recuperar el acceso." - ], "Maximum of ${ limit } contact reached. To change, remove a contact and add a new one.": [ "Se alcanzó el máximo de ${ limit } contacto. Para cambiarlo, borre un contacto y añada uno nuevo.", "Se alcanzó el máximo de ${ limit } contactos. Para cambiarlo, borre un contacto y añada uno nuevo." ], - "None": [ - "Ninguna" - ], "Only ": [ "Solo " ], @@ -6480,9 +6831,6 @@ "People who trust me": [ "Personas que confían en mí" ], - "People you have added as recovery contacts.": [ - "Personas que ha añadido como contactos de recuperación." - ], "Proceed anyway": [ "Continuar de todos modos" ], @@ -6555,14 +6903,11 @@ "Select recovery contact ${ name }": [ "Seleccionar contacto de recuperación ${ name }" ], - "Send email request": [ - "Enviar solicitud por correo electrónico" - ], "Send recovery request": [ "Enviar solicitud de recuperación" ], - "Set account recovery": [ - "Establecer cuenta de recuperación" + "Start recovery": [ + "Iniciar recuperación" ], "Stop being recovery contact": [ "Dejar de ser contacto de recuperación" @@ -6607,8 +6952,8 @@ "Time required before automatically granting them access": [ "Tiempo necesario antes de otorgarles acceso automáticamente" ], - "To add and use recovery contact, you must have a password reset option.": [ - "Para añadir o usar un contacto de recuperación, debe tener una opción de restablecimiento de contraseña." + "To add recovery contacts, you must have a recovery email address or phone number.": [ + "Para agregar contactos de recuperación, debe tener una dirección de correo electrónico o número de telefono de recuperación." ], "To disable this recovery method, remove all your recovery contacts.": [ "Para desactivar este método de recuperación, elimine todos sus contactos de recuperación." @@ -6619,6 +6964,9 @@ "Unable to recover data": [ "No se pueden recuperar los datos" ], + "Unlock ${ PASS_APP_NAME }": [ + "Desbloquear ${ PASS_APP_NAME }" + ], "Upgrade": [ "Mejorar" ], @@ -6640,6 +6988,9 @@ "We received a request to unlock the encrypted data of your contact **${ user }**.": [ "Recibimos una solicitud para desbloquear los datos cifrados de su contacto **${ user }**." ], + "We sent an email request to ${ user }. Let them know it's really you trying to regain access.": [ + "Le enviamos una solicitud de correo electrónico a ${ user }. Coméntele que es realmente usted quien intenta volver a acceder." + ], "We were not able to verify the recovery data. Proceed anyway?": [ "No pudimos verificar los datos de recuperación. ¿Continuar de todos modos?" ], @@ -6969,6 +7320,9 @@ "Invalid invitation link": [ "Enlace de invitación inválido" ], + "Invalid joining link. Please contact your administrator.": [ + "Enlace de invitación inválido. Contacte con el administrador." + ], "Invalid name": [ "Nombre inválido" ], @@ -7145,9 +7499,6 @@ "Please try again in a few moments.": [ "Vuelva a intentarlo en un momento." ], - "Please upgrade to a business plan with more than 1 user to get multi-user support": [ - "Actualice a un plan profesional con más de 1 usuario para obtener soporte multiusuario" - ], "Please upgrade to a business plan with more than 1 user to manage multiple users.": [ "Actualice a un plan profesional con más de 1 usuario para gestionar el soporte multiusuario." ], @@ -7290,6 +7641,9 @@ "There are too many folders in your external account. Please customize the import to delete some folders.": [ "Hay demasiadas carpetas en la cuenta externa. Personalice la importación para eliminar algunas carpetas." ], + "There was an error, please try again.": [ + "Ocurrió un error, intente de nuevo." + ], "This field exceeds the maximum of ${ maximumLength } characters.": [ "Este campo excede el máximo de ${ maximumLength } caracteres." ], @@ -7572,6 +7926,9 @@ "Ask your administrator to enable Account monitor.": [ "Pida a su administrador que active el monitor de la cuenta." ], + "Enable account monitor to start loading event.": [ + "Active el monitor de cuenta para iniciar la carga de evento." + ], "Error: ${ errorMessage }": [ "Error: ${ errorMessage }" ], @@ -8090,6 +8447,9 @@ "${ PROTON_SENTINEL_NAME } account protection": [ "Protección de la cuenta con ${ PROTON_SENTINEL_NAME }" ], + "10+ premium features": [ + "Más de 10 funciones premium" + ], "15 GB storage": [ "15 GB de almacenamiento" ], @@ -8125,6 +8485,12 @@ "Continue": [ "Continuar" ], + "Custom email domain": [ + "Dominio de correo personalizado" + ], + "Email addresses": [ + "Direcciones de correo electrónico" + ], "Encrypted cloud storage for files, photos and documents": [ "Almacenamiento en la nube cifrado para archivos, fotos y documentos" ], @@ -8155,6 +8521,9 @@ "Short domain @pm.me": [ "Dominio corto @pm.me" ], + "Storage": [ + "Almacenamiento" + ], "Torrenting support (P2P)": [ "Soporte de torrent (P2P)" ], @@ -8520,8 +8889,11 @@ ] }, "Force upgrade safety review": { - "I understand that I will no longer be able to sign in to older versions of ${ BRAND_NAME } mobile apps.": [ - "Entiendo que ya no podré iniciar sesión en versiones anteriores de las aplicaciones móviles de ${ BRAND_NAME }." + "I understand that I will no longer be able to sign in to older versions of ${ BRAND_NAME } apps.": [ + "Entiendo que ya no podré iniciar sesión en versiones anteriores de las aplicaciones de ${ BRAND_NAME }." + ], + "Learn more": [ + "Más información" ] }, "Form heading": { @@ -8622,6 +8994,9 @@ ], "Group address:": [ "Dirección del grupo:" + ], + "Roles and permission:": [ + "Roles y permisos:" ] }, "Group member count": { @@ -8681,6 +9056,14 @@ "Miembros del grupo" ] }, + "group_modal": { + "General": [ + "General" + ], + "Roles and permissions": [ + "Roles y permisos" + ] + }, "Header": { "Access": [ "Acceso" @@ -9324,8 +9707,11 @@ "${ BRAND_NAME } Business plans gives your team all the collaboration tools they need to be productive and organized in their work, while safeguarding your business.": [ "Los planes de ${ BRAND_NAME } Business le ofrece a su equipo todas las herramientas de colaboración que necesitan para ser productivos y organizados en su trabajo, al tiempo que protege su negocio." ], - "${ BRAND_NAME } is independently funded and operates without advertising.
Below are examples of how this independence has been used in practice.": [ - "${ BRAND_NAME } se financia de forma independiente y opera sin publicidad.\nA continuación se muestran ejemplos de cómo se ha usado esta independencia en la práctica." + "${ BRAND_NAME } Free": [ + "${ BRAND_NAME } Free" + ], + "${ BRAND_NAME } is independently funded and operates without advertising. Below are examples of how this independence has been used in practice.": [ + "${ BRAND_NAME } se financia de forma independiente y opera sin publicidad. A continuación se muestran ejemplos de cómo se ha usado esta independencia en la práctica." ], "${ BRAND_NAME } is privacy you can trust, ensured by strong encryption, open-source code, and Swiss privacy laws. We believe nobody should be able to exploit your data, period. Our technology and business are based upon this fundamentally stronger definition of privacy.": [ "${ BRAND_NAME } es la privacidad en la que puede confiar, garantizada por un cifrado sólido, código abierto y leyes de privacidad suizas. Creemos que nadie debería de poder explotar los datos. Nuestra tecnología y negocio se basan en esta definición de privacidad fundamentalmente más fuerte." @@ -9339,6 +9725,9 @@ "${ BRAND_NAME } will send a verification code to ${ phoneNumber }. Standard message rates may apply.": [ "${ BRAND_NAME } enviará un código de verificación a ${ phoneNumber }. Se pueden aplicar tarifas estándar de mensajes." ], + "${ BRAND_NAME } will send a verification code to your recovery phone. Standard message rates may apply.": [ + "${ BRAND_NAME } enviará un código de verificación a su teléfono de recuperación. Se pueden aplicar tarifas estándar de mensajes." + ], "${ BRAND_NAME }'s encryption technology means that nobody can access your password - not even us.": [ "La tecnología de cifrado de ${ BRAND_NAME } significa que nadie tiene acceso a la contraseña, ni siquiera nosotros." ], @@ -9427,6 +9816,9 @@ "${ name } for Windows": [ "${ name } para Windows" ], + "${ name } is not available": [ + "${ name } no está disponible" + ], "${ none }: do not quarantine or reject unauthorized emails. Usually, people only use this policy to troubleshoot or test.": [ "${ none }: no poner en cuarentena o rechazar los correos no autorizados. Usualmente las personas solo usan esta política como prueba." ], @@ -9548,6 +9940,9 @@ "${ vaultLink } updated": [ "${ vaultLink } actualizado" ], + "${ VPN_SHORT_APP_NAME } hides your traffic. ${ PASS_SHORT_APP_NAME } hides your identity\n— unlimited **hide-my-email aliases** and **dark-web alerts** if your data is ever leaked.": [ + "${ VPN_SHORT_APP_NAME } oculta su tráfico. ${ PASS_SHORT_APP_NAME } oculta su identidad, **alias hide-my-email** ilimitados y **alertas de la dark web** si sus datos han sido vulnerados." + ], "${ vpnPlus } required for Country level connection.": [ "Se requiere ${ vpnPlus } para conexión a nivel de país." ], @@ -9585,6 +9980,9 @@ "(formerly Twitter)": [ "(anteriormente Twitter)" ], + "**${ appName }** is not available for your account.": [ + "**${ appName }** no está disponible para su cuenta." + ], "**${ appName }** is not supported in your organization **${ organizationName }**.": [ "**${ appName }** no es compatible con su organización **${ organizationName }**." ], @@ -9701,6 +10099,9 @@ "Activity Monitor": [ "Monitor de actividad" ], + "Add ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }": [ + "Agregar ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }" + ], "Add ${ PLAN_NAMES[PLANS.MEET_BUSINESS] }": [ "Agregar ${ PLAN_NAMES[PLANS.MEET_BUSINESS] }" ], @@ -9747,9 +10148,9 @@ "Add your name and logo to create a more personalized experience for your organization.": [ "Agregue el nombre y logo para crear una experiencia más personalizada para la organización." ], - "Adding ${ addedServerCount } gateway server": [ - "Añadiendo ${ addedServerCount } servidor de puerta de enlace", - "Añadiendo ${ addedServerCount } servidores de puerta de enlace" + "Adding ${ total } gateway server": [ + "Añadiendo ${ total } servidor de puerta de enlace", + "Añadiendo ${ total } servidores de puerta de enlace" ], "Adding an external email address will disable end-to-end encryption for all email communication within that group. Do you want to proceed?": [ "Al agregar una dirección de correo electrónico externa, se desactivará el cifrado de extremo a extremo para todas las comunicaciones por correo electrónico dentro de este grupo. ¿Desea continuar?" @@ -9930,6 +10331,9 @@ "Are you sure you want to revoke certificate **${ name }**": [ "¿En verdad desea revocar el certificado **${ name }**?" ], + "Are you sure you want to sign out of this account?": [ + "¿En verdad desea cerrar la sesión de esta cuenta?" + ], "Are you sure you want to sort your folders alphabetically?": [ "¿En realidad desea ordenar sus carpetas alfabéticamente?" ], @@ -10026,6 +10430,9 @@ "Before you can start sending and receiving emails from your new addresses you need to create encryption keys for them.": [ "Antes de que pueda enviar y recibir mensajes desde sus direcciones nuevas, necesita crear las claves de cifrado para ellas." ], + "BEST FOR TV": [ + "MEJOR PARA TV" + ], "Beta": [ "Beta" ], @@ -10089,9 +10496,6 @@ "Change your password": [ "Cambie la contraseña" ], - "Check the status of imports and forwarding.": [ - "Verificar el estado de las importaciones y reenvío." - ], "Check your network and try again.": [ "Revise su red e intente de nuevo." ], @@ -10125,6 +10529,9 @@ "CNET editors choice award with a rating of 8.4 out of 10": [ "Premio Editors' Choice de CNET con una calificación de 8.4 de 10 estrellas" ], + "Code has been re-sent.": [ + "El código ha sido reenviado." + ], "Coming soon": [ "Próximamente" ], @@ -10140,6 +10547,9 @@ "Configure SAML authentication for your organization through an identity provider like Okta, Microsoft Azure, or Google Identity Platform. This will enable SAML for the whole organization.": [ "Configure la autenticación SAML para la organización con un proveedor de identidad como Okta, Microsoft Azure o Google Identity Platform. Esto activará SAML para toda la organización." ], + "Connect and manage your external mailboxes in ${ MAIL_APP_NAME }.": [ + "Conecte y gestione sus buzones externos en ${ MAIL_APP_NAME }." + ], "Connection data will be available in around 1 hour.": [ "Los datos de conexión estarán disponible en aproximadamente 1 hora." ], @@ -10158,6 +10568,9 @@ "Continue to connect this entity with your ${ BRAND_NAME } organization.": [ "Continúe conectando esta entidad con su organización de ${ BRAND_NAME }." ], + "Continue with ${ BRAND_NAME } Free": [ + "Continuar con ${ BRAND_NAME } Free" + ], "Continuing will connect your ${ BRAND_NAME } Account to ${ name }.": [ "Al continuar se conectará la cuenta de ${ BRAND_NAME } a ${ name }." ], @@ -10198,9 +10611,9 @@ "Create a new code on your TV and try again.": [ "Cree un nuevo código en su TV e inténtelo de nuevo." ], - "Create a secure cloud for ${ value } member": [ - "Crear una nube segura para ${ value } miembro", - "Crear una nube segura para ${ value } miembros" + "Create a secure cloud for ${ memberCount } member": [ + "Crear una nube segura para ${ memberCount } miembro", + "Crear una nube segura para ${ memberCount } miembros" ], "Create an account": [ "Cree una cuenta" @@ -10218,6 +10631,10 @@ "Creando servidor de puerta de enlace: ${ serverNumber } / ${ total }", "Creando servidores de puerta de enlace: ${ serverNumber } / ${ total }" ], + "Creating gateway with ${ total } server": [ + "Creando puerta de enlace con ${ total } servidor", + "Creando puertas de enlace con ${ total } servidores" + ], "Creating your account": [ "Creando la cuenta" ], @@ -10266,6 +10683,9 @@ "Data recoverable with recovery phrase": [ "Datos recuperables con frase de recuperación" ], + "Data recovery requires a password reset option (email or SMS)": [ + "La recuperación de datos requiere una opción de restablecimiento de contraseña (correo electrónico o SMS)" + ], "dedicated servers": [ "servidores dedicados" ], @@ -10649,12 +11069,12 @@ "For easy access to your passwords and more.": [ "Para acceder fácilmente a sus contraseñas y más." ], + "For just ${ bundlePlanPriceInline }": [ + "Por solo ${ bundlePlanPriceInline }" + ], "For users who are switching to ${ MAIL_APP_NAME } from another email service, select the ${ boldAddresses } tab and add all active email addresses before changing the MX record to ensure a smooth transition.": [ "Para los usuarios que cambian a ${ MAIL_APP_NAME } desde otro servicio de correo electrónico, seleccione la pestaña ${ boldAddresses } y agregue todas las direcciones de correo activas antes de cambiar el registro MX para garantizar una transición sin problemas." ], - "Forwarding automatically sends new incoming emails to your Inbox.": [ - "El reenvío envía automáticamente los nuevos correos entrantes a su bandeja de entrada." - ], "Free forever": [ "Gratis para siempre" ], @@ -10682,6 +11102,9 @@ "Gateways": [ "Puertas de enlace" ], + "Generating a new recovery phrase will deactivate your current recovery phrase.": [ + "Generar una frase de recuperación nueva desactivará la actual frase de recuperación." + ], "Generating a new recovery phrase will deactivate your old one.": [ "Generar una frase de recuperación nueva desactivará la anterior." ], @@ -10703,12 +11126,18 @@ "Get notified if your password or other personal data was leaked. ${ learnMoreLinkNoBreach }": [ "Reciba notificaciones si la contraseña u otro dato personal fue filtrado. ${ learnMoreLinkNoBreach }" ], + "Get started": [ + "Comenzar" + ], "Get started with the referral link above.": [ "Comience con el enlace de referidos de arriba." ], "Get visibility into account access": [ "Supervise el acceso a la cuenta" ], + "Get VPN Plus": [ + "Obtener VPN Plus" + ], "Give the token a descriptive name, such as the service you plan to use it with, and select one of your active custom domain addresses. Only this address will be able to send emails with this token.": [ "Dé un nombre descriptivo al token, como el servicio con el que planea usarlo y seleccione una de sus direcciones de dominio personalizado activa. Solo esta dirección podrá enviar correos electrónicos con este token." ], @@ -10915,6 +11344,9 @@ "Include device, location, and IP details": [ "Incluir detalles de dispositivo, ubicación e IP" ], + "Included": [ + "Incluido" + ], "Increase your account security by verifying your email address.": [ "Aumente la seguridad de la cuenta al verificar la dirección de correo." ], @@ -11261,15 +11693,15 @@ "No card required": [ "No se requiere tarjeta" ], + "No connected addresses.": [ + "Sin direcciones conectadas." + ], "No countries enabled": [ "Sin países activados" ], "No folder selected": [ "Ninguna carpeta seleccionada" ], - "No forwarding history.": [ - "Sin historial de reenvío." - ], "No gateways": [ "Sin puertas de enlace" ], @@ -11333,6 +11765,9 @@ "Only change these settings if you are using PGP with non-${ BRAND_NAME } recipients.": [ "Solo cambie estos ajustes si está usando PGP con destinatarios que no son de ${ BRAND_NAME }." ], + "Only sign in on devices you trust": [ + "Solo inicie sesión en dispositivos en los que confía" + ], "Only you can see the label": [ "Solo usted puede ver la etiqueta" ], @@ -11598,6 +12033,9 @@ "Recently used servers:": [ "Servidores usados recientemente:" ], + "RECOMMENDED": [ + "RECOMENDADO" + ], "Recommended on trusted devices. ${ keepMeSignedInLearnMoreLink }": [ "Recomendado en dispositivos de confianza. ${ keepMeSignedInLearnMoreLink }" ], @@ -11760,6 +12198,9 @@ "Set up your organization": [ "Configure la organización" ], + "Set up your organization and start protecting your data in a few easy steps.": [ + "Configure su organización y empiece a proteger sus datos en unos pasos sencillos." + ], "Setting successfully saved": [ "Se actualizó el ajuste." ], @@ -11797,6 +12238,12 @@ "Show each sender's image in the message list. The sender's initials will be shown if a photo is not available.": [ "Muestra la imagen de cada remitente en la lista de mensajes. Si no hay una foto disponible se mostrarán las iniciales." ], + "Show fewer benefits": [ + "Mostrar menos ventajas" + ], + "Show more benefits": [ + "Mostrar más ventajas" + ], "Show original message": [ "Mostrar mensaje original" ], @@ -11842,9 +12289,6 @@ "Something went wrong. Please try again or contact customer support.": [ "Algo salió mal. Intente de nuevo o contacte con soporte al cliente." ], - "Something went wrong. Please try again.": [ - "Algo salió mal. Inténtelo de nuevo." - ], "Specify the domain which is allowed to authenticate with SAML SSO.": [ "Especifique el dominio que puede autenticarse con SAML SSO." ], @@ -11934,6 +12378,9 @@ "TechRadar Pro recommended with a rating of 4.2 out of 5 stars": [ "Recomendado por TechRadar Pro con una calificación de 4,2 sobre 5 estrellas" ], + "Temporarily unavailable due to high demand. Please try again later.": [ + "Temporalmente no disponible por alta demanda. Intente más tarde." + ], "Temporarily unavailable. Please check back later.": [ "No disponible temporalmente. Compruebe más tarde." ], @@ -12066,6 +12513,9 @@ "This could take some time. Please do not close this page or disconnect from the internet.": [ "Esto podría tomar un tiempo. No cierre esta página o se desconecte de internet." ], + "This data recovery method requires a password reset option (email or SMS)": [ + "Este método de recuperación requiere una opción de restablecimiento de contraseña (correo electrónico o SMS)" + ], "This feature delays sending your emails, giving you the opportunity to undo send during the selected time frame.": [ "Esta función retrasa el envío de los correos electrónicos, dándole la oportunidad de deshacer el envío durante el periodo de tiempo seleccionado." ], @@ -12126,6 +12576,9 @@ "This verification can take up to one hour. After successful verification, do not remove the TXT record as it is needed to confirm that you continue to own the domain.": [ "Esta verificación puede tomar hasta una hora. Después de la verificación, no elimine el registro TXT ya que se necesita para confirmar que continúa siendo el propietario del dominio." ], + "This will allow the TV to access your ${ BRAND_NAME } account.": [ + "Esto permitirá al TV acceder a su cuenta de ${ BRAND_NAME }" + ], "This will delete all previous versions of your files older than ${ rententionLabel }.": [ "Esto eliminará todas las versiones anteriores de los archivos previo a ${ rententionLabel }." ], @@ -12222,8 +12675,8 @@ "To decrypt and view your locked data after a password reset, select a recovery method.": [ "Para descifrar y ver los datos bloqueados después de restablecer la contraseña, seleccione un método de recuperación." ], - "To ensure the highest possible security of your account, disable **QR code sign-in**.": [ - "Para asegurar la seguridad máxima posible de la cuenta, desactive **Inicio de sesión con código QR**." + "To enable post-quantum protection, you’ll need to finish generating your new post-quantum encryption keys.": [ + "Para activar la protección postcuántica, necesitará generar sus nuevas claves de cifrado postcuánticas." ], "To ensure the highest possible security of your account, disable **Recovery by recovery email**.": [ "Para asegurar la seguridad máxima posible de la cuenta, desactive **Recuperación por correo electrónico**." @@ -12231,18 +12684,12 @@ "To ensure the highest possible security of your account, disable **Recovery by recovery phone**.": [ "Para asegurar la seguridad máxima posible de la cuenta, desactive **Recuperación por teléfono de recuperación**." ], - "To ensure the highest possible security of your account, disable **Signed-in reset**.": [ - "Para asegurar la seguridad máxima posible de la cuenta, desactive **Inicio de sesión por restablecimiento**." - ], "To ensure you don’t lose important data, ${ DRIVE_APP_NAME } saves older versions of your files as you and your collaborators make changes. Select how long ${ BRAND_NAME } should keep previous versions.": [ "Para asegurarse de no perder datos importantes, ${ DRIVE_APP_NAME } guarda versiones anteriores de los archivos a medida que usted\ny sus colaboradores realizan cambios. Seleccione cuánto tiempo ${ BRAND_NAME } debería de conservar las versiones." ], "To fight spam and abuse, please verify you are human.": [ "Para luchar contra el spam y el abuso, verifique que es humano." ], - "To help keep your account safe, we want to make sure it's really you trying to sign in.": [ - "Para ayudar a mantener su cuenta segura, queremos asegurarnos de que sea usted quien intente iniciar sesión." - ], "To help keep your account safe, we want to make sure it’s really you trying to sign in.": [ "Para ayudar a mantener su cuenta segura, queremos asegurarnos de que sea usted quien intente iniciar sesión." ], @@ -12336,6 +12783,9 @@ "Unless you sign out of your account or change your password, your session will remain active. Sessions expire after 60 days of inactivity.": [ "A menos que cierre la sesión o cambie la contraseña, la sesión permanecerá activa. Las sesiones expiran después de 60 días de inactividad." ], + "Unlock streaming with VPN Plus.": [ + "Desbloquee streaming con VPN Plus." + ], "Unsaved changes": [ "Cambios sin guardar" ], @@ -12351,9 +12801,15 @@ "Unverified email address.": [ "Dirección de correo no verificada." ], + "Upgrade anytime to bring over the rest": [ + "Actualice en cualquier momento para importar el resto" + ], "Upgrade now to get premium features, products and storage at a special price": [ "Actualice ahora para obtener funciones premium, productos y almacenamiento a un precio especial" ], + "Upgrade or clear space anytime to bring over the rest": [ + "Actualice o libere espacio en cualquier momento para importar el resto" + ], "Upgrade to add a shorter @pm.me address to your account that is easier to share. It stands for “${ MAIL_APP_NAME } me” or “Private Message me”.": [ "Mejore para agregar una dirección corta @pm.me a su cuenta para que sea fácil de compartir. Significa “${ MAIL_APP_NAME }” o “mensaje privado” en inglés." ], @@ -12483,6 +12939,9 @@ "Visa Secure logo": [ "Logo de Visa Secure" ], + "VPN Plus": [ + "VPN Plus" + ], "VPN with dedicated servers and IP addresses": [ "VPN con direcciones IP y servidores dedicados" ], @@ -12736,9 +13195,6 @@ "You can edit this once to ensure the correct email address for verification.": [ "Puede editar esto una vez para asegurarse de la dirección de correo correcta para verificar." ], - "You can enable the Photos section from the interface using the toggle below.": [ - "Puede activar la sección Fotos desde la interfaz usando el alternador de abajo." - ], "You can enforce the password rules members of your organization will use when they create or reset the password to their ${ BRAND_NAME } Account.": [ "Puede aplicar las reglas de contraseña que los miembros de su organización usarán cuando creen o restablezcan la contraseña de sus cuentas de ${ BRAND_NAME }." ], @@ -13028,8 +13484,8 @@ "Your recovery phrase is a series of 12 randomly generated words in a specific order.": [ "La frase de recuperación es una serie de 12 palabras generadas aleatoriamente en un orden específico." ], - "Your recovery phrase—contained in your Recovery Kit—will allow you to sign in and recover your data if you get locked out of your ${ BRAND_NAME } Account. It’s is composed of 12 words and acts like a backup password.": [ - "Su frase de recuperación, incluida en su kit de recuperación, le permitirá iniciar sesión y recuperar sus datos si no puede acceder a la cuenta de ${ BRAND_NAME }. Está compuesta por 12 palabras y funciona como una contraseña de respaldo." + "Your recovery phrase will allow you to sign in and recover your data if you get locked out of your ${ BRAND_NAME } Account. It is composed of 12 words and acts like a backup password.": [ + "Su frase de recuperación le permitirá iniciar sesión y recuperar sus datos si no puede acceder a la cuenta de ${ BRAND_NAME }. Está compuesta por 12 palabras y funciona como una contraseña de respaldo." ], "Your scheduled plan starts on ${ renewalTime } and will auto-renew every ${ cycle } month.": [ "Su plan programado comienza el ${ renewalTime } y se renovará automáticamente cada ${ cycle } mes.", @@ -13676,6 +14132,9 @@ "${ PROTON_SENTINEL_NAME } protection": [ "Protección ${ PROTON_SENTINEL_NAME }" ], + "${ value.length }/${ maxLength } characters": [ + "${ value.length }/${ maxLength } caracteres" + ], "(Temporarily unavailable. Please check back later.)": [ "(No disponible temporalmente. Compruebe más tarde.)" ], @@ -14069,6 +14528,9 @@ "Confirm login password": [ "Confirmar contraseña de inicio de sesión" ], + "Confirm MX records added": [ + "Confirmar registros MX añadidos" + ], "Confirm new password": [ "Confirmar contraseña nueva" ], @@ -14271,6 +14733,9 @@ "Enable ${ DARK_WEB_MONITORING_NAME } for ${ domain.DomainName }": [ "Activar ${ DARK_WEB_MONITORING_NAME } para ${ domain.DomainName }" ], + "Enable categories": [ + "Activar categorías" + ], "Enabled": [ "Activada" ], @@ -14418,6 +14883,9 @@ "Highest VPN speed": [ "Máxima velocidad de VPN" ], + "Host name": [ + "Nombre del host" + ], "I understand that I'll need to add this email address to the other account immediately, to avoid losing this address permanently.": [ "Entiendo que debo añadir esta dirección de correo de inmediato a la otra cuenta para evitar la pérdida de esta cuenta permanentemente." ], @@ -14610,6 +15078,9 @@ "Must have at least ${ MIN_PASSWORD_LENGTH } characters": [ "Debe tener al menos ${ MIN_PASSWORD_LENGTH } caracteres" ], + "MX records": [ + "Registros MX" + ], "Name": [ "Nombre" ], @@ -14748,6 +15219,9 @@ "Pending": [ "Pendiente" ], + "Personal and work emails, plus important updates and notifications": [ + "Correos electrónicos personales y profesionales, con actualizaciones y notificaciones importantes" + ], "Phone number": [ "Número telefónico" ], @@ -14790,6 +15264,9 @@ "Primary": [ "Principal" ], + "Priority": [ + "Prioridad" + ], "Priority support": [ "Soporte prioritario" ], @@ -15208,6 +15685,9 @@ "Yes, I want to permanently delete this account and all its data.": [ "Sí, quiero eliminar permanentemente esta cuenta y todos los datos." ], + "You don't have permissions": [ + "No tiene permisos" + ], "Your activation code:": [ "Su código de activación:" ], @@ -15257,6 +15737,9 @@ ], "Recovery phrase": [ "Frase de recuperación" + ], + "Set recovery phone number": [ + "Establecer número de teléfono de recuperación" ] }, "Label (begin date/advanced search)": { @@ -15298,6 +15781,26 @@ "Agregue el siguiente registro TXT. Tome en cuenta que los registros DNS pueden tomar varias horas para actualizarse." ] }, + "Label for domain setup": { + "${ capitalizedGroup } record not found": [ + "Registro ${ capitalizedGroup } no encontrado" + ], + "Host name": [ + "Nombre del host" + ], + "Invalid ${ group.name } record found": [ + "Se encontró un registro inválido de ${ group.name }" + ], + "Type": [ + "Tipo" + ], + "Use default value": [ + "Usar valores por defecto" + ], + "Valid ${ group.name } record found": [ + "Se encontró un registro válido de ${ group.name }" + ] + }, "Label for new member": { "Admin": [ "Administrador" @@ -15463,6 +15966,9 @@ "data recovery option": [ "opción de recuperación de datos" ], + "Detailed instructions": [ + "Instrucciones detalladas" + ], "Details": [ "Detalles" ], @@ -15987,21 +16493,45 @@ "Built-in chat": [ "Chat integrado" ], + "Cloud storage and file sharing": [ + "Almacenamiento en la nube e intercambio de archivos" + ], + "Data retention policies": [ + "Políticas de retención de datos" + ], + "Document and spreadsheet editor": [ + "Editor de documentos y hojas de cálculo" + ], + "Email writing assistant": [ + "Asistente de redacción de correos" + ], "End-to-end encrypted screen sharing and ephemeral in-call chat": [ "Pantalla compartida con cifrado de extremo a extremo y chat efímero en la llamada" ], "Hosts can record meetings locally on their computers": [ "Los anfitriones pueden grabar reuniones localmente en sus computadoras" ], + "Includes Meet Professional": [ + "Incluye Meet Professional" + ], "Meeting recording": [ "Grabación de la reunión" ], "One active meeting at a time": [ "Una reunión activa a la vez" ], + "Password manager with team vaults": [ + "Gestor de contraseñas con bóvedas compartidas" + ], + "Private AI Chat (${ LUMO_SHORT_APP_NAME })": [ + "Chat de IA privado (${ LUMO_SHORT_APP_NAME })" + ], "Screen-sharing": [ "Compartir pantalla" ], + "Secure mail and calendar": [ + "Calendario y correo electrónico seguro" + ], "Unlimited meetings per day": [ "Reuniones ilimitadas al día" ], @@ -16016,6 +16546,9 @@ "Video meetings, ${ n } participant": [ "Videollamadas, ${ n } participante", "Videollamadas, ${ n } participantes" + ], + "VPN with ad-blocker and malware protection": [ + "VPN con bloqueador de publicidad y protección contra malware" ] }, "meet_2025: Info": { @@ -16685,6 +17218,9 @@ "99.95% SLA": [ "SLA del 99,95%" ], + "Access all countries": [ + "Acceso a todos los países disponibles" + ], "Activity logs and policy": [ "Registros de actividad y política" ], @@ -16706,6 +17242,9 @@ "Advanced network security": [ "Seguridad de red avanzada" ], + "Advanced workspace security": [ + "Seguridad avanzada en el espacio de trabajo" + ], "All ${ BRAND_NAME } products and features": [ "Todos los productos y funciones de ${ BRAND_NAME }" ], @@ -16864,6 +17403,9 @@ "Multiple admin roles": [ "Distintos roles de administración" ], + "No streaming support": [ + "Sin soporte de streaming" + ], "No-logs policy": [ "Política de cero registros" ], @@ -17030,6 +17572,9 @@ "Unlimited volume/bandwidth": [ "Ancho de banda/volumen ilimitado" ], + "Unlock streaming": [ + "Desbloquear streaming" + ], "Up to ${ n } user": [ "Hasta ${ n } usuario", "Hasta ${ n } usuarios" @@ -17504,6 +18049,10 @@ ] }, "new_plans: Upsell attribute": { + "${ n } country": [ + "${ n } pais", + "${ n } países" + ], "Access advanced VPN features": [ "Acceso a funciones VPN avanzadas" ], @@ -17565,8 +18114,8 @@ "${ app } product updates": [ "Actualizaciones de producto para ${ app }" ], - "${ BRAND_NAME } for Business newsletter": [ - "Boletín de ${ BRAND_NAME } for Business" + "${ BRAND_NAME } for Business communications": [ + "Comunicaciones de ${ BRAND_NAME } for Business" ], "${ BRAND_NAME } important announcements": [ "Avisos importantes de ${ BRAND_NAME }" @@ -17619,8 +18168,8 @@ "During your first month of using a ${ BRAND_NAME } product": [ "Durante el primer mes de uso de ${ BRAND_NAME }" ], - "Email subscriptions": [ - "Suscripciones de correo" + "Email communications": [ + "Comunicaciones por correo electrónico" ], "In-app notifications": [ "Notificaciones dentro de la aplicación" @@ -18211,6 +18760,9 @@ "Plain text": [ "Texto plano" ], + "Push notifications": [ + "Notificaciones push" + ], "Receive from all": [ "Recibir de todos" ], @@ -18707,14 +19259,14 @@ "per month, billed every two years": [ "al mes con facturación cada dos años" ], - "Preparing your Recovery Kit": [ - "Preparando su kit de recuperación" + "Preparing your recovery phrase": [ + "Preparando su frase de recuperación" ], "Protected by Swiss privacy laws": [ "Bajo la protección de las leyes de privacidad suizas" ], - "Save your recovery kit to continue": [ - "Guarde su kit de recuperación para continuar" + "Save your recovery phrase to continue": [ + "Guarde su frase de recuperación para continuar" ], "Secure vault sharing": [ "Uso compartido seguro de bóvedas" @@ -19434,6 +19986,9 @@ "Search for an email or IP address": [ "Buscar un correo electrónico o una dirección IP" ], + "Search for users or addresses": [ + "Buscar usuarios o direcciones" + ], "Search parent folder": [ "Buscar en la carpeta principal" ], @@ -19583,18 +20138,18 @@ ] }, "PQC account key generation": { - "Couldn’t generate keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\n${ settingsLink } and select 'Generate key' for your account and for each address.": [ - "No se han podido generar las claves. Para activar la protección poscuántica, deberá generar sus nuevas claves de cifrado manualmente.\n\n${ settingsLink } y seleccione «Generar clave» tanto para su cuenta como para cada dirección." + "Couldn’t generate keys. To activate post-quantum protection, you’ll need to finish generating your new post-quantum encryption keys.\n\n${ goToSettingsLink } and select 'Generate missing keys'.": [ + "No se han podido generar las claves. Para activar la protección poscuántica, deberá generar sus nuevas claves de cifrado postcuánticas.\n\nVaya a ${ goToSettingsLink } y seleccione «Generar claves faltantes»." ] }, "PQC adress key generation": { - "Couldn’t generate address keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\nGo to ${ settingsLink } and select 'Generate key' for each address.": [ - "No se han podido generar las claves de las direcciones. Para activar la protección poscuántica, deberá crear sus nuevas claves de cifrado manualmente.\n\nVaya a ${ settingsLink } y seleccione «Generar clave» para cada dirección." + "Couldn’t generate address keys. To activate post-quantum protection, you’ll need to finish generating your new post-quantum encryption keys for each address.\n\n${ goToSettingsLink } and select 'Generate missing keys'.": [ + "No se han podido generar las claves de las direcciones. Para activar la protección poscuántica, deberá generar sus nuevas claves de cifrado postcuánticas para cada dirección.\n\nVaya a ${ goToSettingsLink } y seleccione «Generar claves faltantes»." ] }, "PQC compatibility warning": { - "**You must update all ${ BRAND_NAME } mobile apps**: your new keys won't work on older app versions.": [ - "**Debe actualizar todas las aplicaciones móviles de ${ BRAND_NAME }**: sus nuevas claves no funcionarán en versiones anteriores de la aplicación." + "**You must update all ${ BRAND_NAME } apps**: your new keys won't work on older app versions.": [ + "**Debe actualizar todas las aplicaciones de ${ BRAND_NAME }**: sus nuevas claves no funcionarán en versiones anteriores de la aplicación." ] }, "PQC key generation": { @@ -19916,8 +20471,8 @@ "Add more options for stronger protection": [ "Añada más opciones para una protección más robusta" ], - "Add options to avoid getting locked out of your account.": [ - "Añada opciones para evitar que se bloquee su cuenta." + "Add more options to avoid getting locked out of your account.": [ + "Añada más opciones para evitar que se bloquee su cuenta." ], "Awesome. Keep your options up-to-date for stronger protection.": [ "Magnifico. Mantenga sus opciones actualizadas para una protección robusta." @@ -19931,12 +20486,21 @@ "How you increased your account protection": [ "Cómo incrementó la seguridad de su cuenta" ], + "Inactive recovery options": [ + "Opciones de recuperación inactivas" + ], "Maximum": [ "Máximo" ], "Partial": [ "Parcial" ], + "Recovery score: ${ score }": [ + "Puntuación de recuperación: ${ score }" + ], + "Require verified password reset option (email or SMS)": [ + "Requerir opción de restablecimiento de contraseña verificada (correo electrónico o SMS)" + ], "Score: ${ score } / ${ maxScore }": [ "Puntuación: ${ score } / ${ maxScore }" ], @@ -19978,14 +20542,14 @@ "Download recovery file": [ "Descargar archivo de recuperación" ], - "Email verification enabled": [ - "Verificación de correo activado" + "Email recovery enabled": [ + "Correo de recuperación activado" ], "Emergency contacts added": [ "Contactos de emergencia añadidos" ], - "Enable recovery by email": [ - "Activar la recuperación por correo electrónico" + "Enable email recovery": [ + "Activar correo de recuperación" ], "Enable recovery by phone": [ "Activar la recuperación por teléfono" @@ -19996,6 +20560,9 @@ "Password verified": [ "Contraseña verificada" ], + "Phone recovery enabled": [ + "Número de recuperación activado" + ], "Recovery contacts added": [ "Contactos de recuperación añadidos" ], @@ -20011,9 +20578,6 @@ "Sign-in with QR code allowed": [ "Inicio de sesión con código QR permitido" ], - "SMS verification enabled": [ - "Verificación de SMS activada" - ], "Verify password": [ "Verificar la contraseña" ], @@ -20036,6 +20600,9 @@ ] }, "RecoveryPhrase: Info": { + "**Make sure you keep your recovery phrase accessible after creating it.** For security reasons, we do not store the phrase after saving your changes, and you won’t be able to see it again in the ${ BRAND_NAME } app.": [ + "**Asegúrese de mantener su frase de recuperación accesible después de crearla .** Por razones de seguridad, no almacenamos la frase después de guardar los cambios, y no podrá verla de nuevo en la aplicación de ${ BRAND_NAME }." + ], "copy recovery phrase": [ "copie la frase de recuperación" ], @@ -20057,14 +20624,11 @@ "Or ${ downloadRecoveryKitSwitchButton } instead.": [ "O ${ downloadRecoveryKitSwitchButton } en su lugar." ], - "Your **Recovery Kit** lets you restore your ${ BRAND_NAME } Account if you’re locked out.": [ - "Su **kit de recuperación** le permite restaurar su cuenta de ${ BRAND_NAME } si se queda fuera." + "Your **recovery phrase** lets you restore your ${ BRAND_NAME } Account if you’re locked out.": [ + "Su **frase de recuperación** le permite restaurar su cuenta de ${ BRAND_NAME } si se queda fuera." ] }, "RecoveryPhrase: Title": { - "Save your Recovery Kit": [ - "Guarde su kit de recuperación" - ], "Save your recovery phrase": [ "Guarde su frase de recuperación" ] @@ -20457,8 +21021,8 @@ "Back to Safety Review": [ "Volver a la verificación de seguridad" ], - "Because you reset your password, your current Recovery Kit can only be used to recover the data created before your password reset.": [ - "Como restableció su contraseña, el kit de recuperación actual solo puede usarse para recuperar los datos creados antes del restablecimiento de la contraseña." + "Because you reset your password, your current recovery phrase can only be used to recover the data created before your password reset.": [ + "Como restableció su contraseña, la frase de recuperación actual solo puede usarse para recuperar los datos creados antes del restablecimiento de la contraseña." ], "Can be used to regain access to your account and data": [ "Puede usarse para recuperar el acceso a la cuenta y sus datos" @@ -20487,8 +21051,8 @@ "Download ${ size }": [ "Descargar ${ size }" ], - "Download your Recovery Kit": [ - "Descargar el kit de recuperación" + "Download your recovery phrase": [ + "Descargue su frase de recuperación" ], "Email address": [ "Dirección de correo" @@ -20502,8 +21066,8 @@ "Enable recovery by phone": [ "Activar la recuperación por teléfono" ], - "I understand that I will not be able to recover currently locked data with this Recovery Kit": [ - "Entiendo que no podré recuperar los datos actualmente bloqueados con este kit de recuperación" + "I understand that I will not be able to recover currently locked data with this recovery phrase": [ + "Entiendo que no podré recuperar los datos actualmente bloqueados con esta frase de recuperación" ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in on this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Si olvida su contraseña de ${ BRAND_NAME } y necesita restablecerla, la próxima vez que inicie sesión en este dispositivo con su contraseña nueva, se restaurará el acceso total a la cuenta de ${ BRAND_NAME }." @@ -20511,8 +21075,8 @@ "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Si olvida su contraseña de ${ BRAND_NAME } y necesita restablecerla, la próxima vez que inicie sesión en este dispositivo con su contraseña nueva, se restaurará el acceso total a la cuenta de ${ BRAND_NAME }." ], - "If you get locked out of your ${ BRAND_NAME } Account, your Recovery Kit will allow you to sign in and recover your data.": [ - "Si se bloquea la cuenta ${ BRAND_NAME }, su kit de recuperación le permitirá iniciar sesión y recuperar los datos." + "If you get locked out of your ${ BRAND_NAME } Account, your recovery phrase will allow you to sign in and recover your data.": [ + "Si se bloquea su cuenta de ${ BRAND_NAME }, su frase de recuperación le permitirá iniciar sesión y recuperar sus datos." ], "If you lose your login details and need to reset your account, **it’s imperative** that you have both an **account recovery and data recovery method** in place, otherwise you might not be able to access any of your emails, contacts, files or passwords.": [ "Si pierde los datos de inicio de sesión y necesita restablecer la cuenta, **es obligatorio** que tenga configurados **un método de recuperación de la cuenta y de los datos**, de lo contrario, es posible que no pueda acceder a ninguno de sus correos electrónicos, contactos, archivos o contraseñas." @@ -20556,8 +21120,8 @@ "Take action to secure your account": [ "Tome acciones para asegurar la cuenta" ], - "There was an error generating your Recovery Kit": [ - "Ocurrió un error al generar el kit de recuperación" + "There was an error generating your recovery phrase": [ + "Ocurrió un error al generar su frase de recuperación" ], "There was an error verifying your email": [ "Ocurrió un error al verificar su correo electrónico" @@ -20586,11 +21150,11 @@ "to recover your account if you're ever locked out": [ "para recuperar la cuenta si alguna vez se bloqueara" ], - "Update your Recovery Kit": [ - "Actualice el kit de recuperación" + "Update your recovery phrase": [ + "Actualice su frase de recuperación" ], - "Update your Recovery Kit?": [ - "¿Actualizar el kit de recuperación?" + "Update your recovery phrase?": [ + "¿Actualizar su frase de recuperación?" ], "Verify": [ "Verificar" @@ -20607,8 +21171,8 @@ "Verify your recovery phone number": [ "Verifique el número telefónico de recuperación" ], - "We encountered an error while generating your Recovery Kit. Please try again later, or contact support if the issue continues.": [ - "Encontramos un error al generar el kit de recuperación. Intente de nuevo más tarde o contacte con el soporte si el problema continúa." + "We encountered an error while generating your recovery phrase. Please try again later, or contact support if the issue continues.": [ + "Encontramos un error al generar la frase de recuperación. Intente de nuevo más tarde o contacte con el soporte si el problema continúa." ], "We encountered an error while verifying your email. Please try again later, or contact support if the issue continues.": [ "Encontramos un error al verificar su correo electrónico. Intente de nuevo más tarde o contacte con el soporte si el problema continúa." @@ -20631,8 +21195,8 @@ "You can disable this at any time.": [ "Puede desactivar esto en cualquier momento." ], - "You can use the recovery phrase in this Recovery Kit to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ - "Puede usar la frase de recuperación en el kit de recuperación para restaurar completamente la cuenta cuando restablezca su contraseña, así que asegúrese de mantenerla a salvo en algún lugar." + "You can use the recovery phrase in this recovery phrase to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ + "Puede usar la frase de recuperación para restaurar completamente la cuenta cuando restablezca su contraseña, así que asegúrese de mantenerla a salvo en algún lugar." ], "You can use your email to regain access to your account if you forget your password.": [ "Puede usar su correo electrónico para recuperar el acceso a la cuenta si olvidara la contraseña." @@ -20643,8 +21207,8 @@ "You can use your recovery phone to regain access to your account if you forget your password.": [ "Puede usar su teléfono de recuperación para recuperar el acceso a la cuenta si olvidara la contraseña." ], - "You have previously downloaded a Recovery Kit. Downloading a new one will **deactivate the old one**.": [ - "Previamente descargó un kit de recuperación. Descargar uno nuevo **desactivará el anterior**." + "You have previously downloaded a recovery phrase. Downloading a new one will **deactivate the old one**.": [ + "Previamente descargó una frase de recuperación. Descargar uno nuevo **desactivará el anterior**." ], "You have recommended actions to safeguard your account further.": [ "Tiene recomendaciones para proteger aún más su cuenta." @@ -20709,12 +21273,6 @@ "Your recovery email is set": [ "Se configuró el correo electrónico de recuperación" ], - "Your Recovery Kit": [ - "Kit de recuperación" - ], - "Your Recovery Kit is set": [ - "Se configuró el kit de recuperación" - ], "Your recovery methods": [ "Métodos de recuperación" ], @@ -20735,6 +21293,242 @@ ], "Your recovery phone number is:": [ "El número de teléfono de recuperación es:" + ], + "Your recovery phrase": [ + "Su frase de recuperación" + ], + "Your recovery phrase is set": [ + "Se configuró la frase de recuperación" + ] + }, + "safety_review": { + "${ BRAND_NAME } Account email": [ + "Correo de la cuenta de ${ BRAND_NAME }" + ], + "Account protection": [ + "Protección de la cuenta" + ], + "Add": [ + "Añadir" + ], + "Add an emergency contact": [ + "Añadir un contacto de emergencia" + ], + "Add emergency contacts": [ + "Añadir contactos de emergencia" + ], + "Add options": [ + "Añadir opciones" + ], + "Add people who you trust and can contact easily. Your emergency contact will be able to access your account and reset your password for you if needed.": [ + "Añada a personas de confianza con las que pueda contactar fácilmente. Su contacto de emergencia podrá acceder a su cuenta y restablecer la contraseña si es necesario." + ], + "Add people you trust and can contact easily. They will be able to help you unlock your data after you reset your password.": [ + "Añada personas en las que confía y pueda contactar fácilmente. Podrán ayudarle a desbloquear sus datos después de restablecer la contraseña." + ], + "Add phone number": [ + "Añadir número telefónico" + ], + "Add recovery contacts": [ + "Añadir contactos de recuperación" + ], + "Add recovery email": [ + "Añadir un correo de recuperación" + ], + "Add recovery phone": [ + "Añadir teléfono de recuperación" + ], + "Added emergency contacts": [ + "Contactos de emergencia añadidos" + ], + "Added recovery contacts": [ + "Contactos de recuperación añadidos" + ], + "Added recovery email": [ + "Correo de recuperación añadido" + ], + "Added recovery phone": [ + "Teléfono de recuperación añadido" + ], + "Allow": [ + "Permitir" + ], + "Allow data recovery from this device": [ + "Permitir la recuperación de datos de este dispositivo" + ], + "Allow password reset from the settings": [ + "Permitir el restablecimiento de contraseña desde los ajustes" + ], + "Allow recovery by email": [ + "Permitir recuperación por correo electrónico" + ], + "Allow recovery by phone": [ + "Permitir recuperación por teléfono" + ], + "Allow scanning a QR code to sign in": [ + "Permitir escanear un código QR para iniciar sesión" + ], + "Allow trusted friends to unlock your data": [ + "Permitir amistades de confianza para desbloquear sus datos" + ], + "Back to ${ backLink.appNameString }": [ + "Volver a ${ backLink.appNameString }" + ], + "Congratulations": [ + "Felicitaciones" + ], + "Didn’t receive it? ${ sendANewCode }": [ + "¿No lo recibió? ${ sendANewCode }" + ], + "Done": [ + "Hecho" + ], + "Download": [ + "Descargar" + ], + "Download recovery file": [ + "Descargar archivo de recuperación" + ], + "Downloaded recovery file": [ + "Archivo de recuperación descargado" + ], + "Emergency contacts enabled": [ + "Contactos de emergencia activados" + ], + "Enable device recovery": [ + "Activar recuperación de dispositivo" + ], + "Enable email recovery": [ + "Activar correo de recuperación" + ], + "Enable emergency contacts": [ + "Activar contactos de emergencia" + ], + "Enable password reset from settings": [ + "Activar el restablecimiento de contraseña desde los ajustes" + ], + "Enable phone recovery": [ + "Activar teléfono de recuperación" + ], + "Enable QR code sign-in": [ + "Activar inicio de sesión con código QR" + ], + "Enabled device recovery": [ + "Recuperación de dispositivo activada" + ], + "Enabled email recovery": [ + "Correo de recuperación activado" + ], + "Enabled password reset from settings": [ + "Restablecimiento de contraseña desde los ajustes activado" + ], + "Enabled phone recovery": [ + "Teléfono de recuperación activado" + ], + "Enabled QR code sign-in": [ + "Inicio de sesión con código QR activado" + ], + "Got it": [ + "Entendido" + ], + "Here's how you increased your account protection:": [ + "Así es cómo incrementó la seguridad de su cuenta:" + ], + "If you forget your password, you can sign in using a QR code. All you need is to be signed in to a ${ BRAND_NAME } service on another device.": [ + "Si olvida la contraseña, puede iniciar sesión usando un código QR. Solo necesita haber iniciado sesión en un servicio de ${ BRAND_NAME } en otro dispositivo." + ], + "If you get locked out of your ${ BRAND_NAME } Account, it will allow you to sign in and recover your data. It’s the only way to instantly restore everything, so make sure you keep it somewhere safe.": [ + "Si no pudiera acceder a su cuenta de ${ BRAND_NAME }, le permitirá iniciar sesión y recuperar sus datos. Es la única manera de restaurar todo, así que asegúrese de guardarlo en un lugar seguro." + ], + "Later": [ + "Después" + ], + "Protect your legacy with Emergency Access": [ + "Proteja su legado con Acceso de Emergencia" + ], + "Save recovery phrase": [ + "Guardar frase de recuperación" + ], + "Saved recovery phrase": [ + "Frase de recuperación guardada" + ], + "They must already have a ${ BRAND_NAME } Account.": [ + "Ya debe tener una cuenta de ${ BRAND_NAME }." + ], + "They will not be able to see or access your data.": [ + "Ellos no podrán ver o acceder a sus datos." + ], + "This will let you quickly access your ${ BRAND_NAME } Account so you can change your password.": [ + "Esto le permitirá acceder de forma rápida a su cuenta de ${ BRAND_NAME } para que pueda cambiar la contraseña." + ], + "This will let you reset your account password if you’ve lost it, but are still signed in to ${ BRAND_NAME }. It’s often the easiest way to recover your account if you’re signed in.": [ + "Esto le permitirá restablecer la contraseña de su cuenta si la ha perdido, pero aún ha iniciado sesión en ${ BRAND_NAME }. A menudo es la forma más fácil de recuperar la cuenta si ha iniciado sesión." + ], + "This will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset.": [ + "Esto restaurará el acceso a correos electrónicos, contactos, archivos, contraseñas y cualquier otro dato cifrado en su cuenta después de restablecer la contraseña." + ], + "To make sure the email address is yours, enter the verification code sent to ${ boldEmail }.": [ + "Para asegurarnos que la dirección de correo es suya, ingrese el código de verificación enviado a ${ boldEmail }." + ], + "To make sure the phone number is yours, enter the verification code sent to ${ boldPhoneNumber }.": [ + "Para asegurarnos que el número telefónico es suyo, ingrese el código de verificación enviado a ${ boldPhoneNumber }." + ], + "To make sure this address is really yours, we’ll send an email with a verification link.": [ + "Para asegurarnos de que esta dirección es realmente suya, le enviaremos un correo electrónico con un enlace de verificación." + ], + "Upgrade your plan to enable Emergency Access to your account. This will allow you to designate 1 to 5 people who will be able to reset your password for you.": [ + "Actualice su plan para activar el Acceso de Emergencia a su cuenta. Esto le permitirá designar de 1 a 5 personas que podrán restablecer su contraseña." + ], + "Verified password": [ + "Contraseña verificada" + ], + "Verified recovery email": [ + "Correo de recuperación verificado" + ], + "Verified recovery phone": [ + "Teléfono de recuperación verificado" + ], + "Verify": [ + "Verificar" + ], + "Verify password": [ + "Verificar la contraseña" + ], + "Verify recovery email": [ + "Verificar correo de recuperación" + ], + "Verify recovery phone": [ + "Verificar el teléfono de recuperación" + ], + "Verify your recovery email": [ + "Verifique su correo de recuperación" + ], + "Verify your recovery phone": [ + "Verifique su teléfono de recuperación" + ], + "You can save a data backup on this device. This will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset, simply by signing in on this device.": [ + "Puede guardar una copia de seguridad de datos en este dispositivo. Esto restaurará el acceso a correos electrónicos, contactos, archivos, contraseñas y cualquier otro dato cifrado en su cuenta después de restablecer la contraseña, simplemente iniciando sesión en este dispositivo." + ], + "You can use email verification to regain access to your account if you forget your password.": [ + "Puede usar el correo de verificación para recuperar el acceso a la cuenta si olvidara la contraseña." + ], + "You can use SMS verification to regain access to your account if you forget your password.": [ + "Puede usar SMS para recuperar el acceso a la cuenta si olvidara la contraseña." + ], + "You can use your recovery email to regain access to your account if you forget your password.": [ + "Puede usar su correo electrónico de recuperación para recuperar el acceso a la cuenta si olvidara la contraseña." + ], + "You can use your recovery phone to regain access to your account if you forget your password.": [ + "Puede usar su teléfono de recuperación para recuperar el acceso a la cuenta si olvidara la contraseña." + ], + "You don’t need to open or read the file—just download it and store it somewhere safe.": [ + "No necesita abrir o leer el archivo, solo descárguelo y guárdelo en un lugar seguro." + ], + "Your recovery checklist": [ + "Lista de verificación para su recuperación" + ], + "Your security setup": [ + "Su configuración de seguridad" ] }, "saml: Action": { @@ -20941,8 +21735,11 @@ ] }, "Sentinel banner": { - "To ensure the highest possible security of your account, download your recovery phrase and disable the highlighted options.": [ - "Para asegurar la seguridad máxima de la cuenta, descargue su frase de recuperación y desactive las opciones resaltadas." + "To ensure the highest possible security of your account, disable recovery via email and SMS.": [ + "Para asegurar la máxima seguridad posible de su cuenta, desactive la recuperación por correo electrónico y SMS." + ], + "To make sure that you can always access your ${ BRAND_NAME } Account, download your recovery phrase.": [ + "Para asegurearnos de que siempre pueda acceder a asu cuenta de ${ BRAND_NAME }, descargue su frase de recuperación." ], "You have recommended actions from ${ PROTON_SENTINEL_NAME }": [ "Ha recomendado acciones desde ${ PROTON_SENTINEL_NAME }" @@ -21279,9 +22076,6 @@ ] }, "Setting": { - "Enable Photos section": [ - "Activar sección Fotos" - ], "Get updates about comments via email": [ "Recibir actualizaciones sobre los comentarios por correo electrónico" ], @@ -21298,6 +22092,9 @@ "Account": [ "Cuenta" ], + "Managed Companies": [ + "Gestionar compañías" + ], "Organization": [ "Organización" ] @@ -22151,11 +22948,35 @@ ] }, "Spotlight": { + "Assign delegated roles": [ + "Asignar roles delegados" + ], + "Assign roles": [ + "Asignar roles" + ], + "Click a user's name to manage their role and permissions.": [ + "Pulse en el nombre de usuario para gestionar su rol y permiso" + ], + "Click Edit to assign roles to this group and manage member access automatically.": [ + "Haga clic en Editar para asignar roles a este grupo y gestionar acceso a miembros automáticamente." + ], "Earn up to ${ maxRewardAmount } in credit": [ "Gane hasta ${ maxRewardAmount } en créditos" ], "Get credits when the person you invite subscribes to a ${ BRAND_NAME } plan.": [ "Obtenga créditos cuando la persona que invite se suscriba a un plan de ${ BRAND_NAME }." + ], + "New: Roles and permissions tab": [ + "Nuevo: Pestaña de roles y permisos" + ], + "Open this tab to grant specific permissions without full admin access.": [ + "Abra esta pestaña para otorgar permisos específicos sin acceso administrativo total." + ], + "User roles available": [ + "Roles de usuario disponibles" + ], + "You can now assign roles to individual users from this tab.": [ + "Ahora puede asignar roles a usuarios individuales desde esta pestaña" ] }, "sso": { @@ -22459,18 +23280,12 @@ "Available on this device": [ "Disponible en este dispositivo" ], - "Disable QR code sign-in": [ - "Desactivar inicio de sesión con código QR" - ], "Disable recovery by email": [ "Desactivar recuperación por correo electrónico" ], "Disable recovery by phone": [ "Desactivar la recuperación por teléfono" ], - "Disable signed-in reset": [ - "Desactivar inicio de sesión por restablecimiento" - ], "Generate a recovery phrase": [ "Generar una frase de recuperación" ], @@ -22480,9 +23295,6 @@ "Last updated ${ formattedUpdateDate }": [ "Última actualización el ${ formattedUpdateDate }" ], - "No contact": [ - "No hay contacto" - ], "Not saved": [ "Sin guardar" ], @@ -23242,12 +24054,21 @@ ], "View VPN session details for your organization.": [ "Ver los detalles de la sesión VPN de su organización" + ], + "With managed companies, you can add, edit, and remove access for organizations you oversee.": [ + "Con compañias gestionadas, puede agregar, editar, borrar accesos en organizaciones que supervisa." + ], + "Your total monthly cost for all managed companies.": [ + "Su costo total mensual para todas las compañías gestionadas." ] }, "Success": { "Account deleted. Signing out...": [ "Cuenta eliminada. Cerrando sesión..." ], + "Activation link copied to clipboard": [ + "Enlace de activación copiado al portapapeles" + ], "Address added": [ "Dirección agregada" ], @@ -23371,9 +24192,6 @@ "Organization logo updated": [ "Logo de la organización actualizado" ], - "Organization name set": [ - "Nombre de la organización establecido" - ], "Organization name updated": [ "Nombre de la organización actualizado" ], @@ -23595,6 +24413,14 @@ "Asegure los archivos con almacenamiento en la nube cifrado. Se incluyen el historial de versiones, el intercambio de archivos cifrado y más." ] }, + "Tab": { + "For personal use": [ + "Para uso personal" + ], + "For professional use": [ + "Para uso profesional" + ] + }, "Tab in domain modal": { "Addresses": [ "Direcciones" @@ -23870,12 +24696,18 @@ "Actions": [ "Acciones" ], + "Activate multi-user support": [ + "Activar soporte multi usuario" + ], "Activate organization key": [ "Activar clave de la organización" ], "Activate user": [ "Activar el usuario" ], + "Activate your email": [ + "Active su correo electrónico" + ], "Activity monitor": [ "Monitor de actividades" ], @@ -23898,6 +24730,9 @@ "Add another notification to remind you of this event": [ "Agregue otra notificación para recordarle de este evento" ], + "Add categories": [ + "Agregar categorías" + ], "Add contact group name": [ "Agregar nombre al grupo de contactos" ], @@ -23979,9 +24814,6 @@ "An address for each role": [ "Una dirección para cada rol" ], - "An error occurred": [ - "Ocurrió un error" - ], "Annual": [ "Anual" ], @@ -24075,6 +24907,9 @@ "Catch-all address": [ "Dirección catch-all" ], + "Categories": [ + "Categorías" + ], "Change login password": [ "Cambiar contraseña de inicio de sesión" ], @@ -24120,6 +24955,9 @@ "Collaborate on documents": [ "Colabore en documentos" ], + "Companies": [ + "Compañias" + ], "Compare plans": [ "Compare los planes" ], @@ -24129,18 +24967,12 @@ "Confirm": [ "Confirmar" ], - "Confirm address": [ - "Confirmar dirección" - ], "Confirm downgrade": [ "Confirmar el paso a un plan inferior" ], "Confirm loss of ${ BRAND_NAME } bonuses": [ "Confirmar pérdida de beneficios de ${ BRAND_NAME }" ], - "Confirm phone number": [ - "Confirmar número de teléfono" - ], "Connect ${ name }": [ "Conectar ${ name }" ], @@ -24165,14 +24997,17 @@ "Connect your custom domain": [ "Conecte su dominio personalizado" ], + "Connected emails": [ + "Correos conectados" + ], "Connection status": [ "Estado de la conexión" ], "Contact us": [ "Contáctenos" ], - "Contact-assisted recovery": [ - "Recuperación por asistencia de contacto" + "Continue with free storage": [ + "Continuar con el almacenamiento gratuito" ], "Continue with partial import?": [ "¿Continuar con una importación parcial?" @@ -24199,6 +25034,9 @@ "Create a new gateway": [ "Crear una puerta de enlace" ], + "Create a new password": [ + "Crear una nueva contraseña" + ], "Create Gateway": [ "Crear puerta de enlace" ], @@ -24280,6 +25118,9 @@ "Data recovery": [ "Recuperación de datos" ], + "Data recovery contacts": [ + "Contactos de recuperación de datos" + ], "Data recovery options": [ "Opciones de recuperación de datos" ], @@ -24292,6 +25133,9 @@ "Day theme": [ "Tema de día" ], + "Deactivate current phrase?": [ + "¿Desactivar la frase actual?" + ], "Decrypt key": [ "Descifrar clave" ], @@ -24392,6 +25236,9 @@ "Disconnected from Gmail": [ "Sin conexión a Gmail" ], + "Dismiss setup checklist": [ + "Descartar lista de configuración" + ], "Display name and signature": [ "Nombre a mostrar y firma" ], @@ -24428,6 +25275,9 @@ "Download the mobile apps": [ "Descargue las aplicaciones para dispositivos móviles" ], + "Download your recovery phrase": [ + "Descargue su frase de recuperación" + ], "Downloads": [ "Descargas" ], @@ -24567,6 +25417,9 @@ "Feature access": [ "Acceso a funciones" ], + "Fewer distractions, more focus": [ + "Menos distracciones, más concentración" + ], "Filter for more focus": [ "Filtre sus mensajes para una mejor concentración" ], @@ -24597,9 +25450,6 @@ "Forward emails": [ "Reenvío de correos electrónicos" ], - "Forwardings": [ - "Reenvíos" - ], "Free": [ "Gratis" ], @@ -24636,6 +25486,9 @@ "Get ${ planMaxSpace } storage for your files, photos and documents with ${ planName }. ${ upgradeButton }": [ "Obtenga ${ planMaxSpace } de almacenamiento para sus archivos, fotos y documentos con ${ planName }. ${ upgradeButton }" ], + "Get ${ VPN_APP_NAME } on your TV": [ + "Obtenga ${ VPN_APP_NAME } en su TV" + ], "Get ${ vpnPlus } to access all servers": [ "Obtenga ${ vpnPlus } para acceder a todos los servidores" ], @@ -24666,6 +25519,12 @@ "Get more from your VPN": [ "Obtenga más de su VPN" ], + "Get more storage with ${ MAIL_APP_NAME } Plus": [ + "Obtenga más almacenamiento con ${ MAIL_APP_NAME } Plus" + ], + "Get started": [ + "Comenzar" + ], "Get the app on all your devices and enjoy safe, seamless access anywhere.": [ "Obtenga la aplicación en todos sus dispositivos y acceda de forma segura y sin interrupciones en cualquier lugar." ], @@ -24847,6 +25706,9 @@ "Monthly": [ "Mensual" ], + "Monthly Costs": [ + "Costo mensual" + ], "Multi-user support": [ "Soporte multi usuario" ], @@ -24880,6 +25742,9 @@ "No events": [ "No hay eventos" ], + "No events yet": [ + "Aún no hay eventos" + ], "No need to empty the trash": [ "No es necesario vaciar la papelera" ], @@ -24979,9 +25844,6 @@ "Phone": [ "Teléfono" ], - "Photos": [ - "Fotos" - ], "Pin the extension": [ "Fije la extensión" ], @@ -25066,9 +25928,15 @@ "Remove domain": [ "Eliminar el dominio" ], + "Remove email": [ + "Borrar correo electrónico" + ], "Remove forwarding address": [ "Eliminar dirección de reenvío" ], + "Remove recovery phone number": [ + "Borrar su número de teléfono de recuperación" + ], "Remove server?": [ "¿Eliminar el servidor?" ], @@ -25240,6 +26108,9 @@ "Sign in on TV": [ "Iniciar sesión en TV" ], + "Sign in on TV?": [ + "¿Iniciar sesión en TV?" + ], "Sign in to join the Beta program": [ "Iniciar sesión para unirse al programa Beta" ], @@ -25279,6 +26150,9 @@ "Some of your encrypted data is locked": [ "Algunos de sus datos cifrados están bloqueados" ], + "Something went wrong": [ + "Algo salió mal" + ], "Sort folders alphabetically": [ "Ordenar las carpetas alfabéticamente" ], @@ -25475,6 +26349,9 @@ "Verify it’s you": [ "Verifique que es usted" ], + "Verify your email": [ + "Verifique su correo electrónico" + ], "Verifying your card...": [ "Verificando la tarjeta..." ], @@ -25499,6 +26376,9 @@ "Warning: suspected fake website": [ "Advertencia: presunto sitio web falso" ], + "We sent you a code to your email to make sure it’s you. This code is valid for 10 minutes. Please enter it below.": [ + "Le enviamos un código a su correo electrónico para asegurarnos de que es usted. Este código es válido por 10 minutos. Ingréselo debajo." + ], "We'll send an email to your new address with instructions on completing the change.": [ "Enviaremos un correo a la dirección nueva con instrucciones para completar el cambio." ], @@ -25550,6 +26430,12 @@ "Your ${ planTitle } subscription has started": [ "Su suscripción ${ planTitle } ha comenzado" ], + "Your admin at ${ orgName } is inviting you to activate your new secure ${ BRAND_NAME } account and update your password.": [ + "Su administración en ${ orgName } le invita a activar su nueva cuenta segura de ${ BRAND_NAME } y actualizar su contraseña." + ], + "Your admin is inviting you to activate your new secure ${ BRAND_NAME } account and update your password.": [ + "Su administración le invita a activar su nueva cuenta segura de ${ BRAND_NAME } y actualizar su contraseña." + ], "Your calendar link": [ "Enlace a el calendario" ], @@ -25757,6 +26643,9 @@ "Each imported email will have this label": [ "Cada correo importado tendrá esta etiqueta" ], + "Early access to new apps and features.": [ + "Acceso anticipado a funciones y aplicaciones nuevas." + ], "Edit folder names": [ "Editar nombres de las carpetas" ], @@ -25913,8 +26802,8 @@ "This feature is only available on Beta": [ "Esta función solo está disponible en la versión beta." ], - "This is the default key used by other ${ MAIL_APP_NAME } users on older mobile apps to encrypt data they send to you": [ - "Esta es la clave por defecto que usan otros usuarios de ${ MAIL_APP_NAME } en aplicaciones móviles antiguas para cifrar los datos que le envían a usted." + "This is the default key used by other ${ MAIL_APP_NAME } users on older apps to encrypt data they send to you": [ + "Esta es la clave por defecto que usan otros usuarios de ${ MAIL_APP_NAME } en aplicaciones antiguas para cifrar los datos que le envían a usted." ], "This is the default key used by other ${ MAIL_APP_NAME } users to encrypt data they send to you": [ "Esta es la clave por defecto que utilizan otros usuarios de ${ MAIL_APP_NAME } para cifrar los datos que le envían a usted" @@ -26002,6 +26891,9 @@ "User is a group": [ "El usuario es un grupo" ], + "via ${ groupName }": [ + "vía ${ groupName }" + ], "Waiting for user to accept the invitation": [ "Se está esperando que el usuario acepte la invitación." ] @@ -26325,6 +27217,12 @@ ] }, "user_modal": { + "(via ${ groupName })": [ + "(vía ${ groupName })" + ], + "(via group)": [ + "(vía grupo)" + ], "Add delegated roles to a user to grant them only the specific permissions they need, keeping full-admin power separate and your environment secure.": [ "Añada roles delegados a un usuario para otorgarle solo los permisos específicos que necesita, manteniendo el poder de administrador completo separado y su entorno seguro." ], @@ -26712,11 +27610,14 @@ "${ BRAND_NAME } will transfer as much data as possible, starting with your most recent messages.": [ "${ BRAND_NAME } transferirá tanta información posible, comenzando con los mensajes más recientes." ], - "Are you sure you want to delete the phone number?": [ - "¿Está seguro de que quiere eliminar el número de teléfono?" + "Are you sure you want to remove your notification email?": [ + "¿Realmente desea borrar su correo electrónico de notificación?" ], - "Are you sure you want to delete this address?": [ - "¿Está seguro de que quiere eliminar esta dirección?" + "Are you sure you want to remove your recovery email?": [ + "¿Realmente desea eliminar su correo electrónico de recuperación?" + ], + "Are you sure you want to remove your recovery phone number?": [ + "¿Realmente desea eliminar su número de teléfono de recuperación?" ], "By deleting this address, you will no longer be able to receive daily email notifications.": [ "Si elimina esta dirección, ya no podrá recibir notificaciones diarias de correo electrónico." @@ -26727,8 +27628,8 @@ "By deleting this address, you will no longer be able to recover your account.": [ "Si elimina esta dirección, ya no podrá recuperar la cuenta." ], - "By deleting this phone number, you will no longer be able to recover your account.": [ - "Al eliminar este número de teléfono, ya no podrá recuperar la cuenta." + "By removing this phone number, you will no longer be able to recover your account.": [ + "Al borrar este número de teléfono, ya no podrá recuperar su cuenta." ], "Could not login. Please open ${ PASS_APP_NAME } browser extension and login from there.": [ "No se pudo iniciar sesión. Abra la extensión del navegador ${ PASS_APP_NAME } e inicie sesión desde allí." diff --git a/applications/account/locales/fi_FI.json b/applications/account/locales/fi_FI.json index e6e9fd40e30..54504f62b52 100644 --- a/applications/account/locales/fi_FI.json +++ b/applications/account/locales/fi_FI.json @@ -151,6 +151,9 @@ "Add user": [ "Lisää käyttäjä" ], + "Added ${ memberName } as group owner": [ + "${ memberName } lisättiin ryhmän omistajaksi" + ], "Align center": [ "Keskitä" ], @@ -196,6 +199,9 @@ "Back": [ "Takaisin" ], + "Back to sign-in": [ + "Palaa kirjautumiseen" + ], "Block": [ "Estä" ], @@ -304,9 +310,6 @@ "Connect Gmail address": [ "Yhdistä Gmail-osoite" ], - "Connect to Gmail": [ - "Yhdistä Gmailiin" - ], "Connect to video conferencing": [ "Yhdistä videoneuvotteluun" ], @@ -316,6 +319,9 @@ "Connected": [ "Yhdistetty" ], + "Contact sales": [ + "Ota yhteyttä myyntiin" + ], "Contact support": [ "Ota yhteyttä asiakaspalveluun" ], @@ -442,6 +448,9 @@ "Delete account": [ "Poista tili" ], + "Delete and confirm": [ + "Poista ja vahvista" + ], "Delete filter “${ Name }”": [ "Poista suodatin \"${ Name }\"" ], @@ -478,9 +487,6 @@ "Delete record": [ "Poista tapahtuma" ], - "Delete token ${ token.Account }": [ - "Poista tunniste ${ token.Account }" - ], "Delete user": [ "Poista käyttäjä" ], @@ -1171,6 +1177,9 @@ "Remove this notification": [ "Poista ilmoitus" ], + "Removed ${ memberName } as group owner": [ + "${ memberName } poistettiin ryhmän omistajan asemasta" + ], "Rename": [ "Nimeä uudelleen" ], @@ -2372,9 +2381,6 @@ ] }, "BOSS": { - "Add a custom domain": [ - "Lisää oma verkkotunnus" - ], "Authenticate": [ "Tunnistaudu" ], @@ -2399,9 +2405,6 @@ "Domain connected": [ "Verkkotunnus yhdistetty" ], - "Domain ownership verified": [ - "Verkkotunnuksen omistajuus vahvistettu" - ], "Estimated size": [ "Arvioitu koko" ], @@ -2423,15 +2426,9 @@ "Install migration app": [ "Asenna migraatio-sovellus" ], - "Learn more about what can be migrated. Learn more": [ - "Lisätietoja siirrettävistä tiedoista. Lisätietoja" - ], "Mail": [ "Sähköposti" ], - "Migrate": [ - "Siirrä" - ], "Migrate from Google Workspace": [ "Siirrä Google Workspace -palvelusta" ], @@ -2448,18 +2445,12 @@ "Migration status": [ "Siirron tila" ], - "Not started": [ - "Ei aloitettu" - ], "Organization does not have enough seats available": [ "Organisaatiolla ei ole tarpeeksi paikkoja saatavilla" ], "Organization does not have enough storage available": [ "Organisaatiolla ei ole tarpeeksi tallennustilaa" ], - "Organization settings": [ - "Organisaation asetukset" - ], "Required": [ "Pakollinen" ], @@ -2469,9 +2460,6 @@ "Select at least one user to start a migration": [ "Valitse vähintään yksi käyttäjä siirron aloittamiseksi" ], - "Select what you want to migrate, this will apply to all users whether they are created now or later. Migration will start after user accounts are created.": [ - "Valitse, mitä haluat siirtää. Tämä koskee kaikkia käyttäjiä riippumatta siitä, luodaanko heidät nyt vai myöhemmin. Siirto alkaa, kun käyttäjätilit on luotu." - ], "Set up": [ "Määritä" ], @@ -2493,9 +2481,6 @@ "Status": [ "Tila" ], - "Transfer errors": [ - "Siirtovirheet" - ], "User": [ "Käyttäjä" ], @@ -2505,9 +2490,6 @@ "Verify your domain": [ "Vahvista verkkotunnuksesi" ], - "Verify your domain ownership": [ - "Vahvista verkkotunnuksesi omistajuus" - ], "Verify your domain to start a migration": [ "Varmista verkkotunnuksesi aloittaaksesi siirron" ], @@ -2620,6 +2602,9 @@ ] }, "Button": { + "Cancel": [ + "Peruuta" + ], "Close": [ "Sulje" ], @@ -2659,6 +2644,9 @@ "Set up other features": [ "Määritä muut ominaisuudet" ], + "Sign in": [ + "Kirjaudu sisään" + ], "Take a tour": [ "Katso esittely" ] @@ -4437,9 +4425,6 @@ "Read, reply, and stay on top of Gmail from within ${ MAIL_APP_NAME }": [ "Lue, vastaa ja pysy ajan tasalla Gmailista suoraan ${ MAIL_APP_NAME } -sovelluksessa" ], - "Send a code to your recovery email or phone": [ - "Lähetä koodi palautussähköpostiisi tai -puhelimeesi" - ], "Set up accounts for all users and invite them to join ${ BRAND_NAME }.": [ "Määritä tilit kaikille käyttäjille ja kutsu heidät liittymään ${ BRAND_NAME }iin." ], @@ -4480,15 +4465,15 @@ "Upgrade to get ${ activatePmUser } for a shorter, easy-to-remember email address in addition to your current one.": [ "Päivitä tilauksesi saadaksesi ${ activatePmUser }, toisen lyhyemmän ja helpommin muistettavan sähköpostiosoitten nykyisen lisäksi." ], + "Use a recovery method to reset your password": [ + "Nollaa salasanasi palautustoiminnon avulla" + ], "We can't access ${ boldEmails } anymore.": [ "Emme voi enää käyttää ${ boldEmails } -osoitteita." ], "We'll bring in your old emails and connect your Gmail to ${ MAIL_APP_NAME } so new messages appear automatically": [ "Tuomme vanhat sähköpostisi ja yhdistämme Gmail-tilisi ${ MAIL_APP_NAME } -sovellukseen, jotta uudet viestit näkyvät automaattisesti" ], - "We've started importing your email from Gmail. We'll let you know when it's done.": [ - "Olemme aloittaneet viestiesi tuonnin Gmailista. Ilmoitamme sinulle, kun se on valmis." - ], "You already have a Gmail address forwarding to ${ MAIL_APP_NAME }. Connect it below to send and receive emails directly from ${ MAIL_APP_NAME }.": [ "Sinulla on jo Gmail-osoite, joka ohjataan ${ MAIL_APP_NAME } -sovellukseen. Yhdistä se alla, jotta voit lähettää ja vastaanottaa sähköposteja suoraan ${ MAIL_APP_NAME } -sovelluksesta." ], @@ -4946,6 +4931,9 @@ "120m": [ "120 min" ], + "15 minutes": [ + "15 minuuttia" + ], "30 minutes": [ "30 minuuttia" ], @@ -5394,6 +5382,9 @@ "${ user } is requesting emergency access to your account": [ "${ user } pyytää hätäpääsyä tilillesi" ], + "**${ contact }** is now your recovery contact. They can help you unlock your data after you reset your password.": [ + "**${ contact }** on nyt palautusyhteyshenkilösi. Hän voi auttaa sinua avaamaan tietosi, kun olet nollannut salasanasi." + ], "**If they didn’t request your help**, it is possible that someone else is trying to access their account. In that case, ignore this request.": [ "**Jos hän ei pyytänyt apuasi**, on mahdollista, että joku muu yrittää käyttää hänen tiliään. Jätä tämä pyyntö tällöin huomiotta." ], @@ -5409,6 +5400,9 @@ "Add emergency contact": [ "Lisää hätäyhteyshenkilö" ], + "Add recovery method": [ + "Lisää palautustapa" + ], "Added on ${ formattedDate }": [ "Lisätty ${ formattedDate }" ], @@ -5421,6 +5415,9 @@ "Change wait time": [ "Muuta odotusaikaa" ], + "Data recovery contacts": [ + "Tietojen palautuksen yhteystiedot" + ], "Disabled": [ "ei käytössä" ], @@ -5460,9 +5457,6 @@ "Less than a minute left": [ "Alle minuutti jäljellä" ], - "None": [ - "Ei määritetty" - ], "Only ": [ "Vain " ], @@ -5490,6 +5484,9 @@ "Request access?": [ "Pyydä käyttöoikeutta?" ], + "Start recovery": [ + "Aloita palautus" + ], "They may ask to access my account in case of an emergency.": [ "He voivat pyytää pääsyä tililleni hätätilanteessa." ], @@ -5500,6 +5497,9 @@ "Time required before automatically granting them access": [ "Vaadittu aika ennen automaattisen pääsyn myöntämistä heille." ], + "To add recovery contacts, you must have a recovery email address or phone number.": [ + "Palautustietojen lisäämiseksi, sinulla on oltava palautussähköpostiosoite tai puhelinnumero." + ], "Trusted contact": [ "Luotettu yhteyshenkilö" ], @@ -5518,6 +5518,9 @@ "Wait time saved": [ "Odotusaika tallennettu" ], + "We sent an email request to ${ user }. Let them know it's really you trying to regain access.": [ + "Olemme lähettäneet sähköpostipyynnön käyttäjälle ${ user }. Ilmoita hänelle, että olet todellakin sinä ja yrität saada käyttöoikeutesi takaisin." + ], "You are signed in to the account ${ account }.": [ "Olet kirjautunut tunnuksella ${ account }." ], @@ -5963,9 +5966,6 @@ "Please try again in a few moments.": [ "Yritä hetken kuluttua uudelleen." ], - "Please upgrade to a business plan with more than 1 user to get multi-user support": [ - "Saadaksesi usean käyttäjän tuen, päivitä yritystilaukseen, joka sisältää enemmän kuin yhden käyttäjän." - ], "Please upgrade to a business plan with more than 1 user to manage multiple users.": [ "Hallitaksesi useita käyttäjiä, päivitä yritystilaukseen, joka sisältää enemmän kuin yhden käyttäjän." ], @@ -6108,6 +6108,9 @@ "There are too many folders in your external account. Please customize the import to delete some folders.": [ "Ulkoisella tililläsi on liian monta kansiota. Muokkaa tuontia tai poista joitakin kansioita." ], + "There was an error, please try again.": [ + "Tapahtui virhe, yritä uudelleen." + ], "This field exceeds the maximum of ${ maximumLength } characters.": [ "Kenttä ylittää ${ maximumLength }-merkin enimmäismäärän." ], @@ -7239,8 +7242,8 @@ ] }, "Force upgrade safety review": { - "I understand that I will no longer be able to sign in to older versions of ${ BRAND_NAME } mobile apps.": [ - "Ymmärrän, etten voi enää kirjautua sisään vanhempiin ${ BRAND_NAME } -mobiilisovellusten versioihin." + "I understand that I will no longer be able to sign in to older versions of ${ BRAND_NAME } apps.": [ + "Ymmärrän, etten voi enää kirjautua sisään vanhempiin ${ BRAND_NAME } -sovellusten versioihin." ] }, "Form heading": { @@ -7321,6 +7324,11 @@ "Palvelut" ] }, + "Group detail label": { + "Roles and permission:": [ + "Roolit ja oikeudet:" + ] + }, "Group member count": { "${ memberCount } member": [ "${ memberCount } jäsen", @@ -7378,6 +7386,14 @@ "Ryhmän jäsenyys" ] }, + "group_modal": { + "General": [ + "Yleinen" + ], + "Roles and permissions": [ + "Roolit ja oikeudet" + ] + }, "Header": { "Action": [ "Toiminto" @@ -7978,6 +7994,9 @@ "${ boldWarning } You will lose access to all current encrypted data in your account if you continue.": [ "${ boldWarning } Menetät pääsyn kaikkiin tililläsi tällä hetkellä oleviin salattuihin tietoihin, jos jatkat." ], + "${ BRAND_NAME } is independently funded and operates without advertising. Below are examples of how this independence has been used in practice.": [ + "${ BRAND_NAME } on itsenäisesti rahoitettu ja toimii ilman mainontaa. Alla on esimerkkejä siitä, miten tätä itsenäisyyttä on hyödynnetty käytännössä." + ], "${ BRAND_NAME } is privacy you can trust, ensured by strong encryption, open-source code, and Swiss privacy laws. We believe nobody should be able to exploit your data, period. Our technology and business are based upon this fundamentally stronger definition of privacy.": [ "${ BRAND_NAME } on yksityisyyttä, johon voit luottaa. Sen takaavat vahva salaus, avoin lähdekoodi ja Sveitsin tietosuojalainsäädäntö. Uskomme, että keneenkään ei tulisi pystyä hyväksikäyttämään tietojasi, piste. Teknologiamme ja liiketoimintamme pohjautuvat tälle pohjimmiltaan vahvemmalle yksityisyyden määritelmälle." ], @@ -7990,6 +8009,9 @@ "${ BRAND_NAME } will send a verification code to ${ phoneNumber }. Standard message rates may apply.": [ "${ BRAND_NAME } lähettää vahvistuskoodin numeroon ${ phoneNumber }. Viesteistä saatetaan veloittaa tavanomaiset viestimaksut." ], + "${ BRAND_NAME } will send a verification code to your recovery phone. Standard message rates may apply.": [ + "${ BRAND_NAME } lähettää vahvistuskoodin palautusnumeroosi. Viesteistä saatetaan veloittaa tavanomaiset viestimaksut." + ], "${ BRAND_NAME }'s encryption technology means that nobody can access your password - not even us.": [ "${ BRAND_NAME }in salaustekniikan ansioista kukaan ei voi päästä käsiksi salasanaasi - emme edes me." ], @@ -8014,6 +8036,9 @@ "${ discountPercent }% discount": [ "${ discountPercent }% alennus" ], + "${ DRIVE_APP_NAME } will no longer keep previous versions of your files.": [ + "${ DRIVE_APP_NAME } ei enää säilytä tiedostojesi aiempia versioita." + ], "${ emailAddress } is invalid": [ "${ emailAddress } on virheellinen" ], @@ -8069,6 +8094,9 @@ "${ name } for Windows": [ "${ name } Windowsille" ], + "${ name } is not available": [ + "${ name } ei ole saatavilla" + ], "${ none }: do not quarantine or reject unauthorized emails. Usually, people only use this policy to troubleshoot or test.": [ "${ none }: älä merkitse roskapostiksi tai hylkää luvattomia sähköposteja. Tätä politiikkaa käytetään yleensä vianhakuun ja testaamiseen." ], @@ -8212,6 +8240,9 @@ "(Filter if ANY of the following conditions are met)": [ "(suodata, jos JOTKIN seuraavista ehdoista täyttyvät)" ], + "**${ appName }** is not available for your account.": [ + "**${ appName }** ei ole saatavilla tilillesi." + ], "**${ appName }** is not supported.": [ "**${ appName }** ei ole tuettu." ], @@ -8284,7 +8315,7 @@ "Tili on päivitetty" ], "Activate at least one data recovery method to make sure you can continue to access the contents of your ${ BRAND_NAME } Account if you lose your password.": [ - "Aktivoi tiedoillesi ainakin palautustapa, jolla varmistat pääsysi ${ BRAND_NAME }-tilisi sisältöön, jos kadotat salasanasi." + "Aktivoi vähintään yksi tietojen palautustapa, jotta pääset edelleen ${ BRAND_NAME }-tilisi sisältöön, jos kadotat salasanasi." ], "Active": [ "Aktiiviset" @@ -8323,10 +8354,6 @@ "Add your name and logo to create a more personalized experience for your organization.": [ "Yksilöi organisaatiotasi lisäämällä nimi ja logo." ], - "Adding ${ addedServerCount } gateway server": [ - "Lisätään ${ addedServerCount } yhdyskäytäväpalvelinta", - "Lisätään ${ addedServerCount } yhdyskäytäväpalvelinta" - ], "Adding an external email address will disable end-to-end encryption for all email communication within that group. Do you want to proceed?": [ "Ulkoisen sähköpostiosoitteen lisääminen poistaa päästä päähän -salauksen käytöstä kaikelta kyseisen ryhmän sähköpostiviestinnältä. Haluatko jatkaa?" ], @@ -8590,9 +8617,6 @@ "Change your password": [ "Vaihda salasanasi" ], - "Check the status of imports and forwarding.": [ - "Tarkista tuontien ja ohjausten tila." - ], "Check your network and try again.": [ "Tarkista verkkoyhteytesi ja yritä uudelleen." ], @@ -8690,9 +8714,9 @@ "Create a label for the imported messages, a time range for this import, and the labels you would like to import.": [ "Luo tuoduille viesteille tunniste, ajanjakso tälle tuonnille ja tunnisteet, jotka haluat tuoda." ], - "Create a secure cloud for ${ value } member": [ - "Luo suojattu pilvi ${ value } jäsenelle", - "Luo suojattu pilvi ${ value } jäsenelle" + "Create a secure cloud for ${ memberCount } member": [ + "Luo suojattu pilvi ${ memberCount } jäsenelle", + "Luo suojattu pilvi ${ memberCount } jäsenelle" ], "Create an account": [ "Luo tili" @@ -8710,6 +8734,10 @@ "Luodaan yhdyskäytäväpalvelinta: ${ serverNumber }/${ total }", "Luodaan yhdyskäytäväpalvelimia: ${ serverNumber }/${ total }" ], + "Creating gateway with ${ total } server": [ + "Yhdyskäytävän luominen ${ total }:llä palvelimella", + "Yhdyskäytävän luominen ${ total } palvelimella" + ], "Creating your account": [ "Luodaan tiliä" ], @@ -8758,6 +8786,9 @@ "Data recoverable with recovery phrase": [ "Tiedot, jotka voidaan palauttaa palautuslauseella" ], + "Data recovery requires a password reset option (email or SMS)": [ + "Tietojen palauttaminen edellyttää salasanan nollausmahdollisuutta (sähköpostitse tai tekstiviestillä)" + ], "dedicated servers": [ "omia palvelimia" ], @@ -8967,6 +8998,9 @@ "Ensure fully private and encrypted communication. Claim your free ${ BRAND_NAME } email address now.": [ "Varmistu täysin yksityisestä ja salatusta viestinnästä. Hanki ilmainen ${ BRAND_NAME } -sähköpostiosoitteesi nyt." ], + "Enter code": [ + "Syötä koodi" + ], "Enter key manually instead": [ "Syötä avain sen sijaan manuaalisesti" ], @@ -9078,6 +9112,9 @@ "for ${ price }": [ "hintaan ${ price }" ], + "For a 10-year version history, please contact our sales team.": [ + "10 vuoden versiohistoriaa varten ota yhteyttä myyntiimme." + ], "For anytime access to email and an optimized mobile experience, download our ${ androidAppLink } or ${ iosAppLink }.": [ "Saadaksesi helpon pääsyn sähköpostiisi ja optimoidun kokemuksen mobiililaitteille, lataa ${ androidAppLink } tai ${ iosAppLink }." ], @@ -9090,9 +9127,6 @@ "For users who are switching to ${ MAIL_APP_NAME } from another email service, select the ${ boldAddresses } tab and add all active email addresses before changing the MX record to ensure a smooth transition.": [ "Niiden käyttäjien, jotka siirtyvät käyttämään ${ MAIL_APP_NAME } jostain toisesta sähköpostipalvelusta, tulee valita ${ boldAddresses }-välilehti ja lisätä kaikki aktiiviset sähköpostiosoitteet ennen kuin MX-tietuetta voi muuttaa, jotta siirtymä olisi jouheva." ], - "Forwarding automatically sends new incoming emails to your Inbox.": [ - "Uudet saapuvat sähköpostit ohjataan automaattisesti Saapuneet-kansioon." - ], "Free forever": [ "Pysyvästi ilmainen" ], @@ -9234,6 +9268,9 @@ "If you lose your two-factor-enabled device, these codes can be used instead of the 6-digit two-factor authentication code to sign in to your account. Each code can only be used once.": [ "Jos menetät todennuslaitteesi, voit kirjautua tilillesi käyttäen näitä koodeja 6-numeroisen vahvistuskoodin sijaan. Koodit ovat kertakäyttöisiä." ], + "If you lost access to your authenticator app, you can use 1 of the 16 backup recovery codes provided when your set up two-factor authentication. ${ learnMoreLink }": [ + "Jos et voi käyttää tunnistautumissovellustasi, voit käyttää yhtä kuudestatoista varmuuspalautuskoodistasi, jotka sait lisätessäsi kaksivaiheisen tunnistautumisen. ${ learnMoreLink }" + ], "If you proceed with the downgrade, you will lose access to ${ MAIL_APP_NAME } and ${ VPN_APP_NAME } paid features.": [ "Jos jatkat alennusta, menetät maksullisten ${ MAIL_APP_NAME } ja ${ VPN_APP_NAME } -ominaisuuksien käyttöoikeuden." ], @@ -9621,9 +9658,6 @@ "No folder selected": [ "Kansiota ei valittu" ], - "No forwarding history.": [ - "Ei välityshistoriaa." - ], "No gateways": [ "Yhdyskäytäviä ei ole" ], @@ -9678,6 +9712,9 @@ "Once you reset your password:": [ "Kun nollaat salasanasi:" ], + "Only sign in on devices you trust": [ + "Kirjaudu sisään vain laitteilla, joihin luotat" + ], "Open source": [ "Avoin lähdekoodi" ], @@ -10201,6 +10238,9 @@ "Sync and manage files with the ${ DRIVE_APP_NAME } app. Create and share documents in ${ DOCS_APP_NAME }, and securely store them. All on ${ ios }, ${ android } and ${ desktop }.": [ "Synkronoi ja hallitse tiedostoja ${ DRIVE_APP_NAME }-sovelluksella. Luo ja jaa dokumentit ${ DOCS_APP_NAME }-sovelluksessa, sekä säilytä niitä turvallisesti. Saatavilla ${ ios }, ${ android } ja ${ desktop }." ], + "Temporarily unavailable due to high demand. Please try again later.": [ + "Tilapäisesti poissa käytöstä suuren kysynnän vuoksi. Yritä myöhemmin uudelleen." + ], "Temporarily unavailable. Please check back later.": [ "Tilapäisesti pois käytöstä. Yritä myöhemmin uudelleen." ], @@ -10318,6 +10358,9 @@ "This could take some time. Please do not close this page or disconnect from the internet.": [ "Tämä saattaa kestää jonkin aikaa. Älä sulje tätä sivua tai katkaise Internet-yhteyttäsi." ], + "This data recovery method requires a password reset option (email or SMS)": [ + "Tämä tietojen palautusmenetelmä edellyttää salasanan nollausvaihtoehtoa (sähköposti tai tekstiviesti)" + ], "This feature delays sending your emails, giving you the opportunity to undo send during the selected time frame.": [ "Ominaisuus viivästyttää sähköpostiesi lähetystä mahdollistaen lähetyksen kumoamiseen valitun ajan sisällä." ], @@ -10375,6 +10418,15 @@ "This verification can take up to one hour. After successful verification, do not remove the TXT record as it is needed to confirm that you continue to own the domain.": [ "Tämä vahvistus voi kestää jopa tunnin. Älä poista TXT-tietuetta onnistuneen vahvistuksen jälkeen, koska sitä tarvitaan vahvistamaan, että omistat verkkotunnuksen myös jatkossa." ], + "This will allow the TV to access your ${ BRAND_NAME } account.": [ + "Tämän avulla televisio pääsee käyttämään ${ BRAND_NAME } -tiliäsi." + ], + "This will delete all previous versions of your files older than ${ rententionLabel }.": [ + "Tämä poistaa tiedostojesi kaikki aiemmat versiot, jotka ovat vanhempia kuin ${ rententionLabel }." + ], + "This will delete all previous versions of your files.": [ + "Tämä poistaa tiedostojesi kaikki aiemmat versiot." + ], "This will deny access to **${ email }**. Are you sure you want to continue?": [ "Tämä estää pääsyn käyttäjältä **${ email }**. Haluatko varmasti jatkaa?" ], @@ -10555,6 +10607,9 @@ "Upgrade to keep your ${ planTitle } benefits.": [ "Päivitä säilyttääksesi ${ planTitle } tilauksesi edut." ], + "Upgrade to unlock": [ + "Päivitä avataksesi" + ], "Upgrade to unlock the ${ monitorLink }.": [ "Päivitä avataksesi ${ monitorLink }." ], @@ -10645,6 +10700,9 @@ "Version ${ version }": [ "Versio ${ version }" ], + "Version history": [ + "Versiohistoria" + ], "Version number successfully copied to clipboard": [ "Versionumero kopioitiin leikepöydälle" ], @@ -10883,9 +10941,6 @@ "You can edit this once to ensure the correct email address for verification.": [ "Voit muokata tätä kerran varmistaaksesi sähköpostiosoitteen olevan vahvistusta varten oikea." ], - "You can enable the Photos section from the interface using the toggle below.": [ - "Voit ottaa Kuvat-osion käyttöön käyttöliittymän alla olevalla painikkeella." - ], "You can keep up to ${ MAX_CALENDARS_FREE } calendar. Please remove shared calendar links and any ${ BRAND_NAME } user with whom you shared your calendars before you cancel your ${ MAIL_SHORT_APP_NAME } subscription.": [ "Voit säilyttää enintään ${ MAX_CALENDARS_FREE } kalenterin. Poista ennen ${ MAIL_SHORT_APP_NAME }-tilauksesi perumista kaikki kalenterien jakolinkit ja ${ BRAND_NAME }-käyttäjät, jolle olet jakanut kalentereitasi.", "Voit säilyttää enintään ${ MAX_CALENDARS_FREE } kalenteria. Poista ennen ${ MAIL_SHORT_APP_NAME }-tilauksesi perumista kaikki kalenterien jakolinkit ja ${ BRAND_NAME }-käyttäjät, joille olet jakanut kalentereitasi." @@ -11652,6 +11707,9 @@ "${ pricePerMonthWithCurrency } / month": [ "${ pricePerMonthWithCurrency } / kuukausi" ], + "${ value.length }/${ maxLength } characters": [ + "${ value.length }/${ maxLength } merkkiä" + ], "(Temporarily unavailable. Please check back later.)": [ "(Tilapäisesti pois käytöstä. Yritä myöhemmin uudelleen.)" ], @@ -12126,6 +12184,9 @@ "Don't ask again": [ "Älä kysy uudelleen" ], + "Don't keep versions": [ + "Älä säilytä versioita" + ], "Don't show this again": [ "Älä näytä tätä uudelleen" ], @@ -12579,6 +12640,9 @@ "Pending": [ "Odottaa" ], + "Personal and work emails, plus important updates and notifications": [ + "Henkilökohtaiset ja työsähköpostit sekä tärkeät päivitykset ja ilmoitukset" + ], "Phone number": [ "Puhelinnumero" ], @@ -12964,6 +13028,9 @@ "Yes, I want to permanently delete this account and all its data.": [ "Kyllä, haluan poistaa tilin ja kaikki sen tiedot pysyvästi." ], + "You don't have permissions": [ + "Sinulla ei ole oikeuksia" + ], "Your activation code:": [ "Aktivointikoodisi:" ], @@ -14292,6 +14359,9 @@ "Advanced network security": [ "Edistynyt verkon suojaus" ], + "Advanced workspace security": [ + "Työtilan edistyksellinen tietoturva" + ], "All ${ BRAND_NAME } products and features": [ "Kaikki ${ BRAND_NAME }n tuotteet ja ominaisuudet" ], @@ -15142,8 +15212,8 @@ "${ app } product updates": [ "${ app } -tuotepäivitykset" ], - "${ BRAND_NAME } for Business newsletter": [ - "${ BRAND_NAME } for Business -uutiskirje" + "${ BRAND_NAME } for Business communications": [ + "${ BRAND_NAME } for Business viestintään" ], "${ BRAND_NAME } important announcements": [ "Tärkeät ${ BRAND_NAME } -ilmoitukset" @@ -15196,8 +15266,8 @@ "During your first month of using a ${ BRAND_NAME } product": [ "Ensimmäisen ${ BRAND_NAME } -tuotteen käyttökuukautesi aikana" ], - "Email subscriptions": [ - "Sähköpostitilaukset" + "Email communications": [ + "Sähköpostiviestintä" ], "In-app notifications": [ "Sovelluksensisäiset ilmoitukset" @@ -16170,15 +16240,9 @@ "per month, billed every two years": [ "kuukaudessa, laskutetaan kahden vuoden välein" ], - "Preparing your Recovery Kit": [ - "Palautuspakettiasi valmistellaan" - ], "Protected by Swiss privacy laws": [ "Sveitsin tietosuojalakien suojaama" ], - "Save your recovery kit to continue": [ - "Jatka tallentamalla palautuspakettisi" - ], "Secure vault sharing": [ "Suojattu holvien jako" ], @@ -16966,21 +17030,6 @@ "Päivitä ${ upsellPlanTitle } -tilaukseen" ] }, - "PQC account key generation": { - "Couldn’t generate keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\n${ settingsLink } and select 'Generate key' for your account and for each address.": [ - "Avaimia ei voitu luoda. Aktivoidaksesi post-kvanttisuojauksen, sinun on luotava uudet salausavaimet manuaalisesti.\n\n${ settingsLink } ja valitse ”Luo avain” tilillesi ja jokaiselle osoitteelle." - ] - }, - "PQC adress key generation": { - "Couldn’t generate address keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\nGo to ${ settingsLink } and select 'Generate key' for each address.": [ - "Osoiteavaimia ei voitu luoda. Aktivoidaksesi post-kvanttisuojauksen, sinun on luotava uudet salausavaimet manuaalisesti.\n\nMene ${ settingsLink } ja valitse ”Luo avain” jokaiselle osoitteelle." - ] - }, - "PQC compatibility warning": { - "**You must update all ${ BRAND_NAME } mobile apps**: your new keys won't work on older app versions.": [ - "**Sinun on päivitettävä kaikki ${ BRAND_NAME } -mobiilisovellukset**: uudet avaimesi eivät toimi vanhemmissa sovellusversioissa." - ] - }, "PQC key generation": { "This will generate new quantum-resistant encryption keys for your account.": [ "Tämä luo uusia kvanttikestävät salausavaimet tilillesi." @@ -17264,6 +17313,11 @@ "Puhelinnumeron vahvistus parantaa tilisi suojausta ja mahdollistaa lisää palautusvaihtoehtoja." ] }, + "Recovery score": { + "Inactive recovery options": [ + "Käyttämättömät palautusvaihtoehdot" + ] + }, "RecoveryPhrase: Action": { "Continue": [ "Jatka" @@ -17287,9 +17341,6 @@ ] }, "RecoveryPhrase: Title": { - "Save your Recovery Kit": [ - "Tallenna palautuspakettisi" - ], "Save your recovery phrase": [ "Tallenna palautuslauseesi" ] @@ -17565,9 +17616,6 @@ "Back to Safety Review": [ "Takaisin turvallisuuskatsaukseen" ], - "Because you reset your password, your current Recovery Kit can only be used to recover the data created before your password reset.": [ - "Koska nollasit salasanasi, nykyistä palautuspakettiasi voidaan käyttää vain ennen salasanan nollausta luotujen tietojen palauttamiseen." - ], "Can be used to regain access to your account and data": [ "Voidaan käyttää palauttamaan pääsysi tilillesi ja tietoihisi" ], @@ -17592,9 +17640,6 @@ "Download ${ size }": [ "Lataa ${ size }" ], - "Download your Recovery Kit": [ - "Lataa palautuspakettisi" - ], "Email address": [ "Sähköpostiosoite" ], @@ -17607,18 +17652,12 @@ "Enable recovery by phone": [ "Ota palautus puhelimitse käyttöön" ], - "I understand that I will not be able to recover currently locked data with this Recovery Kit": [ - "Ymmärrän, etten voi palauttaa tällä hetkellä lukittuja tietoja tällä palautuspaketilla." - ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in on this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Jos unohdat ${ BRAND_NAME } -salasanasi ja sinun on nollattava se, kirjautuessasi seuraavan kerran sisään tällä laitteella uutta salasanaasi käyttäen, täysi pääsysi ${ BRAND_NAME } -tilille palautetaan." ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Jos unohdat ${ BRAND_NAME } -salasanasi ja sinun on nollattava se, kirjautuessasi seuraavan kerran sisään tällä laitteella uutta salasanaasi käyttäen, täysi pääsysi ${ BRAND_NAME } -tilille palautetaan." ], - "If you get locked out of your ${ BRAND_NAME } Account, your Recovery Kit will allow you to sign in and recover your data.": [ - "Jos olet menettänyt pääsyn ${ BRAND_NAME }-tilillesi, voit palautuspakettisi avulla kirjautua ja palauttaa tietosi." - ], "If you lose your login details and need to reset your account, **it’s imperative** that you have both an **account recovery and data recovery method** in place, otherwise you might not be able to access any of your emails, contacts, files or passwords.": [ "Jos kadotat kirjautumistietosi ja joudut nollaamaan tilisi, **on erittäin tärkeää**, että olet määrittänyt **tilin ja tietojen palautustavat**, tai et välttämättä pääse käsiksi sähköposteihisi, yhteystietoihisi, tiedostoihisi tai salasanoihisi." ], @@ -17658,9 +17697,6 @@ "Take action to secure your account": [ "Toimi suojataksesi tilisi" ], - "There was an error generating your Recovery Kit": [ - "Virhe luotaessa palautuspakettiasi" - ], "There was an error verifying your recovery email": [ "Virhe vahvistettaessa palautusosoitettasi" ], @@ -17682,12 +17718,6 @@ "to recover your account if you're ever locked out": [ "palauttaaksesi tilisi, jos sinut lukitaan ulos" ], - "Update your Recovery Kit": [ - "Päivitä palautuspakettisi" - ], - "Update your Recovery Kit?": [ - "Päivitetäänkö palautuspakettisi?" - ], "Verify": [ "Vahvista" ], @@ -17703,9 +17733,6 @@ "Verify your recovery phone number": [ "Vahvista palautusnumerosi nyt" ], - "We encountered an error while generating your Recovery Kit. Please try again later, or contact support if the issue continues.": [ - "Virhe luotaessa palautuspakettiasi. Yritä myöhemmin uudelleen tai ole ongelman jatkuessa yhteydessä asiakaspalveluun." - ], "We encountered an error while verifying your recovery email. Please try again later, or contact support if the issue continues.": [ "Palautussähköpostisi vahvistuksessa tapahtui virhe. Yritä myöhemmin uudelleen tai ota yhteyttä tukeen, jos ongelma jatkuu." ], @@ -17724,18 +17751,12 @@ "You can disable this at any time.": [ "Voit poistaa tämän käytöstä milloin tahansa." ], - "You can use the recovery phrase in this Recovery Kit to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ - "Voit käyttää tässä palautuspaketissa olevaa palautuslauseketta tilisi täydelliseen palauttamiseen, kun nollaat salasanasi. Varmista, että säilytät sen jossakin turvallisessa paikassa." - ], "You can use your recovery email to regain access to your account if you forget your password.": [ "Voit käyttää palautussähköpostia päästäksesi takaisin tilillesi, jos unohdat salasanasi." ], "You can use your recovery phone to regain access to your account if you forget your password.": [ "Voit käyttää palautuspuhelinta päästäksesi takaisin tilillesi, jos unohdat salasanasi." ], - "You have previously downloaded a Recovery Kit. Downloading a new one will **deactivate the old one**.": [ - "Olet aiemmin ladannut palautuspaketin. Uuden lataaminen **mitätöi vanhan**." - ], "You have recommended actions.": [ "Sinulle on suositeltuja toimintoja." ], @@ -17781,12 +17802,6 @@ "Your recovery email is set": [ "Palautusosoitteesi on asetettu" ], - "Your Recovery Kit": [ - "Palautuspakettisi" - ], - "Your Recovery Kit is set": [ - "Palautuspakettisi on valmis" - ], "Your recovery methods": [ "Palautustapasi" ], @@ -18009,6 +18024,11 @@ "Tuloksia ei löytynyt" ] }, + "Sentinel banner": { + "To ensure the highest possible security of your account, disable recovery via email and SMS.": [ + "Varmistaaksesi tilisi mahdollisimman korkean turvallisuustason, poista käytöstä palautus sähköpostin ja tekstiviestin kautta." + ] + }, "Server-Info": { "active": [ "aktiivinen" @@ -18336,6 +18356,14 @@ "Salasanan nollauspyyntö" ] }, + "Setting": { + "Get updates about comments via email": [ + "Saat päivityksiä kommenteista sähköpostitse" + ], + "Include document name in email notifications": [ + "Sisällytä dokumentin nimi sähköposti-ilmoituksiin" + ] + }, "Settings description": { "Keep your inbox organized with folders and labels. ${ learnMoreLink }": [ "Pidä postilaatikkosi järjestyksessä kansioiden ja tunnisteiden avulla. ${ learnMoreLink }" @@ -20138,9 +20166,6 @@ "Organization logo updated": [ "Organisaation logo päivitettiin" ], - "Organization name set": [ - "Organisaation nimi asetettiin" - ], "Organization name updated": [ "Organisaation nimi päivitettiin" ], @@ -20813,18 +20838,12 @@ "Confirm": [ "Vahvista" ], - "Confirm address": [ - "Vahvista osoite" - ], "Confirm downgrade": [ "Vahvista alennus" ], "Confirm loss of ${ BRAND_NAME } bonuses": [ "Vahvista ${ BRAND_NAME }-bonusten menetys" ], - "Confirm phone number": [ - "Vahvista puhelinnumero" - ], "Connect ${ name }": [ "Yhdistä palveluun ${ name }" ], @@ -20952,6 +20971,9 @@ "Data recovery": [ "Tietojen palautus" ], + "Data recovery contacts": [ + "Tietojen palautuksen yhteystiedot" + ], "Date": [ "Päiväys" ], @@ -21001,6 +21023,9 @@ "Delete user?": [ "Poistetaanko käyttäjä?" ], + "Delete version history?": [ + "Poistetaanko versiohistoria?" + ], "Deny access to user?": [ "Kielletäänkö käyttäjän käyttöoikeus?" ], @@ -21188,6 +21213,9 @@ "${ failedUsers.length } käyttäjätilin luonti epäonnistui.", "${ failedUsers.length } käyttäjätilin luonti epäonnistui." ], + "Fewer distractions, more focus": [ + "Vähemmän häiriötekijöitä, enemmän keskittymistä" + ], "Filter for more focus": [ "Suodattimet parantamaan keskittymistäsi" ], @@ -21218,9 +21246,6 @@ "Forward emails": [ "Ohjaa viestit" ], - "Forwardings": [ - "Edelleenlähetykset" - ], "Free": [ "Free" ], @@ -21528,9 +21553,6 @@ "Phone": [ "Puhelin" ], - "Photos": [ - "Kuvat" - ], "Pin the extension": [ "Kiinnitä laajennus" ], @@ -21774,6 +21796,9 @@ "Sign in on TV": [ "Kirjaudu sisään TV:ssä" ], + "Sign in on TV?": [ + "Kirjaudu sisään TV:ssä?" + ], "Sign in to join the Beta program": [ "Liity beetaohjelmaan kirjautumalla" ], @@ -21801,6 +21826,9 @@ "Snooze:": [ "Torkutus:" ], + "Something went wrong": [ + "Jotain meni pieleen" + ], "Sort folders alphabetically": [ "Jätjestä kansiot aakkosellisesti" ], @@ -22189,6 +22217,9 @@ "Each imported email will have this label": [ "Jokainen tuotu viesti merkitään tällä tunnisteella" ], + "Early access to new apps and features.": [ + "Varhainen pääsy uusiin sovelluksiin ja ominaisuuksiin." + ], "Edit folder names": [ "Muokkaa kansioiden nimiä" ], @@ -22344,6 +22375,9 @@ "User is a group": [ "Käyttäjä on ryhmä" ], + "via ${ groupName }": [ + "${ groupName } kautta" + ], "Waiting for user to accept the invitation": [ "Odotetaan, että käyttäjä hyväksyy kutsun" ] @@ -22981,12 +23015,6 @@ "${ BRAND_NAME } will transfer as much data as possible, starting with your most recent messages.": [ "${ BRAND_NAME } siirtää mahdollisimman paljon tietoa, aloittaen viimeisimmistä viesteistäsi." ], - "Are you sure you want to delete the phone number?": [ - "Haluatko varmasti poistaa puhelinnumeron?" - ], - "Are you sure you want to delete this address?": [ - "Haluatko varmasti poistaa osoitteen?" - ], "By deleting this address, you will no longer be able to receive daily email notifications.": [ "Jos poistat tämän osoitteen, et voi enää vastaanottaa päivittäisiä sähköposti-ilmoituksia." ], @@ -22996,9 +23024,6 @@ "By deleting this address, you will no longer be able to recover your account.": [ "Jos poistat tämän sähköpostiosoitteen, et voi enää palauttaa tiliäsi." ], - "By deleting this phone number, you will no longer be able to recover your account.": [ - "Jos poistat tämän puhelinnumeron, et voi enää palauttaa tiliäsi." - ], "Could not login. Please open ${ PASS_APP_NAME } browser extension and login from there.": [ "Kirjautuminen epäonnistui. Avaa ${ PASS_APP_NAME }-selainlaajennus ja kirjaudu sisään sieltä." ], diff --git a/applications/account/locales/fil_PH.json b/applications/account/locales/fil_PH.json index 573c6c2075d..3eba025b6a2 100644 --- a/applications/account/locales/fil_PH.json +++ b/applications/account/locales/fil_PH.json @@ -1338,9 +1338,6 @@ "Set as default": [ "I-set bilang default" ], - "Set as default mail application": [ - "I-set bilang default na mail application" - ], "Set catch-all": [ "I-set ang catch-all" ], @@ -2556,9 +2553,6 @@ ] }, "BOSS": { - "Add a custom domain": [ - "Magdagdag ng custom na domain" - ], "Authenticate": [ "Mag-authenticate" ], @@ -2580,9 +2574,6 @@ "Domain connected": [ "Nakakonekta ang domain" ], - "Domain ownership verified": [ - "Na-verify ang pagmamay-ari ng domain" - ], "Estimated size": [ "Tinatayang laki" ], @@ -2592,15 +2583,9 @@ "Install migration app": [ "I-install ang migration app" ], - "Learn more about what can be migrated. Learn more": [ - "Matuto pa tungkol sa kung ano ang pwedeng i-migrate. Matuto pa" - ], "Mail": [ "Mail" ], - "Migrate": [ - "I-migrate" - ], "Migrate from Google Workspace": [ "I-migrate mula sa Google Workspace" ], @@ -2623,9 +2608,6 @@ "Organization does not have enough storage available": [ "Walang sapat na storage ang organisasyon" ], - "Organization settings": [ - "Mga setting ng organisasyon" - ], "Required": [ "Kailangan" ], @@ -2635,9 +2617,6 @@ "Select at least one user to start a migration": [ "Pumili ng kahit isang user upang simulan ang migration" ], - "Select what you want to migrate, this will apply to all users whether they are created now or later. Migration will start after user accounts are created.": [ - "Piliin kung ano ang gusto mong i-migrate, ilalapat ito sa lahat ng user ginawa man sila ngayon o sa ibang pagkakataon. Magsisimula ang migration pagkatapos gawin ang mga account ng user." - ], "Set up": [ "I-set up" ], @@ -2653,18 +2632,12 @@ "Start migration": [ "Simulan ang migration" ], - "Transfer errors": [ - "Mga error sa paglipat" - ], "User": [ "User" ], "Verify your domain": [ "I-verify ang iyong domain" ], - "Verify your domain ownership": [ - "I-verify ang pagmamay-ari ng iyong domain" - ], "Verify your domain to start a migration": [ "I-verify ang iyong domain upang simulan ang migration" ], @@ -4544,12 +4517,6 @@ "${ DOCS_SHORT_APP_NAME } in ${ DRIVE_APP_NAME } allows you to work together with others in a secure, encrypted environment.": [ "Pinapayagan ka ng ${ DOCS_SHORT_APP_NAME } sa ${ DRIVE_APP_NAME } na makipagtulungan sa iba sa isang secure at naka-encrypt na environment." ], - "${ MAIL_APP_NAME } is not your default mail application.": [ - "Hindi ang ${ MAIL_APP_NAME } ang default na mail application." - ], - "${ MAIL_APP_NAME } is your default mail application.": [ - "Ang ${ MAIL_APP_NAME } ay ang iyong default na mail application." - ], "A checked box means the feature is disabled.": [ "Ang naka-check na kahon ay nangangahulugang hindi pinagana ang feature." ], @@ -4652,9 +4619,6 @@ "No one in your organization can connect to shared servers.": [ "Walang sinuman sa iyong organisasyon ang makakakonekta sa mga shared server." ], - "Send a code to your recovery email or phone": [ - "Magpadala ng code sa recovery email o telepono" - ], "Set up accounts for all users and invite them to join ${ BRAND_NAME }.": [ "I-set up ang mga account para sa lahat ng user at imbitahan silang sumali sa ${ BRAND_NAME }." ], @@ -5784,9 +5748,6 @@ "Less than a minute left": [ "Wala pang isang minuto ang natitira" ], - "None": [ - "Wala" - ], "Only ": [ "Tanging " ], @@ -6313,9 +6274,6 @@ "Please try again in a few moments.": [ "Pakisubukang muli sa ilang sandali." ], - "Please upgrade to a business plan with more than 1 user to get multi-user support": [ - "Mangyaring mag-upgrade sa business plan na may mahigit sa 1 user para makakuha ng suporta sa multi-user" - ], "Please upgrade to a business plan with more than 1 user to manage multiple users.": [ "Mangyaring mag-upgrade sa business plan na may mahigit sa 1 user para pamahalaan ang maraming user." ], @@ -7592,11 +7550,6 @@ "${ BRAND_NAME }. Privacy by default." ] }, - "Force upgrade safety review": { - "I understand that I will no longer be able to sign in to older versions of ${ BRAND_NAME } mobile apps.": [ - "Nauunawaan kong hindi na ako makakapag-sign in sa mga lumang bersyon ng ${ BRAND_NAME } mobile app." - ] - }, "Form heading": { "Enter your email address": [ "Ilagay ang email address" @@ -7937,9 +7890,6 @@ "Contact us": [ "Makipag-ugnayan sa amin" ], - "Downloads": [ - "Mga Download" - ], "Enjoying ${ planName }?": [ "Nag-eenjoy sa ${ planName }?" ], @@ -8701,10 +8651,6 @@ "Add your name and logo to create a more personalized experience for your organization.": [ "Idagdag ang pangalan at logo upang lumikha ng mas personalized na karanasan para sa organisasyon." ], - "Adding ${ addedServerCount } gateway server": [ - "Nagdadagdag ng ${ addedServerCount } gateway server", - "Nagdadagdag ng ${ addedServerCount } na gateway server" - ], "Adding an external email address will disable end-to-end encryption for all email communication within that group. Do you want to proceed?": [ "Ang pagdaragdag ng external na email address ay hindi magpapagana sa end-to-end na encryption para sa lahat ng komunikasyon sa email sa loob ng pangkat na iyon. Gusto mo bang magpatuloy?" ], @@ -8985,9 +8931,6 @@ "Change your password": [ "Palitan ang iyong password" ], - "Check the status of imports and forwarding.": [ - "Suriin ang status ng mga import at pag-forward." - ], "Choose a plan that works best for you.": [ "Pumili ng plano na pinakaangkop." ], @@ -9073,10 +9016,6 @@ "Create a label for the imported messages, a time range for this import, and the labels you would like to import.": [ "Gumawa ng label para sa mga na-import na mensahe, hanay ng oras para sa import na ito, at mga label na gustong i-import." ], - "Create a secure cloud for ${ value } member": [ - "Gumawa ng secure na cloud para sa ${ value } miyembro", - "Gumawa ng secure na cloud para sa ${ value } na miyembro" - ], "Create and manage sub-accounts and assign them email addresses on your custom domain.": [ "Gumawa at pamahalaan ang mga sub-account at bigyan sila ng mga email address sa iyong custom na domain." ], @@ -11161,9 +11100,6 @@ "When disabled, this prevents remote images from loading without your knowledge.": [ "Kapag hindi pinagana, pinipigilan nito ang mga remote na larawan na mag-load nang hindi mo nalalaman." ], - "When enabled, we will check if ${ MAIL_APP_NAME } is your default mail application and notify you if it is not.": [ - "Kapag pinagana, susuriin kung ang ${ MAIL_APP_NAME } ay ang iyong default na mail application at aabisuhan ka kung hindi." - ], "When enabling SAML for ${ appName } in your identity provider, you might be prompted to use the callback (ACS) URL and issuer ID. Just copy-paste the data below into your identity provider fields.": [ "Kapag pinagagana ang SAML para sa ${ appName } sa iyong identity provider, maaaring hilingin sa iyo na gamitin ang callback (ACS) URL at ID ng issuer. I-copy-paste lang ang data sa ibaba sa mga field ng iyong identity provider." ], @@ -11288,9 +11224,6 @@ "You can edit this once to ensure the correct email address for verification.": [ "Maaari mo itong i-edit nang isang beses upang matiyak ang tamang email address para sa verification." ], - "You can enable the Photos section from the interface using the toggle below.": [ - "Maaaring paganahin ang seksyong Mga Larawan mula sa interface gamit ang toggle sa ibaba." - ], "You can enforce the password rules members of your organization will use when they create or reset the password to their ${ BRAND_NAME } Account.": [ "Maaaring ipatupad ang mga panuntunan sa password na gagamitin ng mga miyembro ng organisasyon kapag gumawa o nag-reset sila ng password sa kanilang ${ BRAND_NAME } Account." ], @@ -15620,9 +15553,6 @@ "${ app } product updates": [ "Mga product update ng ${ app }" ], - "${ BRAND_NAME } for Business newsletter": [ - "Newsletter ng ${ BRAND_NAME } for Business" - ], "${ BRAND_NAME } important announcements": [ "Mga mahahalagang anunsyo ng ${ BRAND_NAME }" ], @@ -15671,9 +15601,6 @@ "During your first month of using a ${ BRAND_NAME } product": [ "Sa iyong unang buwan ng paggamit ng produktong ${ BRAND_NAME }" ], - "Email subscriptions": [ - "Mga subscription sa email" - ], "In-app notifications": [ "Mga in-app na abiso" ], @@ -16742,15 +16669,9 @@ "per month, billed every two years": [ "kada buwan, sinisingil kada dalawang taon" ], - "Preparing your Recovery Kit": [ - "Inihahanda ang Recovery Kit" - ], "Protected by Swiss privacy laws": [ "Protektado ng Swiss privacy laws" ], - "Save your recovery kit to continue": [ - "I-save ang recovery kit upang magpatuloy" - ], "Secure vault sharing": [ "Ligtas na pag-share ng vault" ], @@ -17531,21 +17452,6 @@ "I-upgrade sa ${ upsellPlanTitle }" ] }, - "PQC account key generation": { - "Couldn’t generate keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\n${ settingsLink } and select 'Generate key' for your account and for each address.": [ - "Hindi makapag-generate ng mga key. Upang i-activate ang post-quantum protection, kakailanganin mong manu-manong mag-generate ng iyong mga bagong encryption key.\n\n${ settingsLink } at piliin ang 'Generate key' para sa iyong account at para sa bawat address." - ] - }, - "PQC adress key generation": { - "Couldn’t generate address keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\nGo to ${ settingsLink } and select 'Generate key' for each address.": [ - "Hindi makabuo ng mga address key. Upang i-activate ang post-quantum protection, kakailanganin mong manu-manong mag-generate ng iyong mga bagong encryption key.\n\nPumunta sa ${ settingsLink } at piliin ang 'Generate key' para sa bawat address." - ] - }, - "PQC compatibility warning": { - "**You must update all ${ BRAND_NAME } mobile apps**: your new keys won't work on older app versions.": [ - "**Kailangan mong i-update ang lahat ng ${ BRAND_NAME } mobile app**: hindi gagana ang iyong mga bagong key sa mga lumang bersyon ng app." - ] - }, "PQC key generation": { "This will generate new quantum-resistant encryption keys for your account.": [ "Mag-ge-generate ito ng mga bagong quantum-resistant na encryption key para sa iyong account." @@ -17765,15 +17671,9 @@ ], "Or ${ downloadRecoveryKitSwitchButton } instead.": [ "O ${ downloadRecoveryKitSwitchButton } sa halip." - ], - "Your **Recovery Kit** lets you restore your ${ BRAND_NAME } Account if you’re locked out.": [ - "Hinahayaan ka ng iyong **Recovery Kit** na ibalik ang iyong ${ BRAND_NAME } Account kung na-lock out ka." ] }, "RecoveryPhrase: Title": { - "Save your Recovery Kit": [ - "I-save ang iyong Recovery Kit" - ], "Save your recovery phrase": [ "I-save ang iyong parirala ng pag-recover" ] @@ -18160,9 +18060,6 @@ "Back to Safety Review": [ "Bumalik sa Safety Review" ], - "Because you reset your password, your current Recovery Kit can only be used to recover the data created before your password reset.": [ - "Dahil nag-reset ka ng password, ang kasalukuyang Recovery Kit ay maaari lang gamitin upang i-recover ang data na ginawa bago ang pag-reset ng password." - ], "Can be used to regain access to your account and data": [ "Maaaring gamitin upang mabawi ang access sa iyong account at data" ], @@ -18190,9 +18087,6 @@ "Download ${ size }": [ "I-download ang ${ size }" ], - "Download your Recovery Kit": [ - "I-download ang Recovery Kit" - ], "Email address": [ "Email address" ], @@ -18205,18 +18099,12 @@ "Enable recovery by phone": [ "Paganahin ang pag-recover sa pamamagitan ng telepono" ], - "I understand that I will not be able to recover currently locked data with this Recovery Kit": [ - "Naiintindihan ko na hindi ko ma-re-recover ang kasalukuyang naka-lock na data gamit ang Recovery Kit na ito" - ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in on this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Kung makalimutan mo ang ${ BRAND_NAME } password at kailangang i-reset ito, sa susunod na mag-sign in ka sa device na ito gamit ang bagong password, ibabalik ang buong access sa iyong ${ BRAND_NAME } Account." ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Kung makalimutan mo ang ${ BRAND_NAME } password at kailangang i-reset ito, sa susunod na mag-sign in ka sa device na ito gamit ang bagong password, ibabalik ang buong access sa iyong ${ BRAND_NAME } Account." ], - "If you get locked out of your ${ BRAND_NAME } Account, your Recovery Kit will allow you to sign in and recover your data.": [ - "Kung ma-lock out ka sa iyong ${ BRAND_NAME } Account, papayagan ka ng Recovery Kit na mag-sign in at i-recover ang data." - ], "If you lose your login details and need to reset your account, **it’s imperative** that you have both an **account recovery and data recovery method** in place, otherwise you might not be able to access any of your emails, contacts, files or passwords.": [ "Kung mawala ang mga detalye sa pag-login at kailangang i-reset ang account, **napakahalaga** na mayroon kang **paraan ng pag-recover ng account at pag-recover ng data**, kung hindi ay maaaring hindi mo ma-access ang alinman sa mga email, contact, file, o password." ], @@ -18259,9 +18147,6 @@ "Take action to secure your account": [ "Kumilos upang i-secure ang account" ], - "There was an error generating your Recovery Kit": [ - "Nagkaroon ng error sa pag-generate ng iyong Recovery Kit" - ], "There was an error verifying your email": [ "Nagkaroon ng error sa pag-verify ng iyong email" ], @@ -18289,12 +18174,6 @@ "to recover your account if you're ever locked out": [ "upang i-recover ang account kung sakaling ma-lock out ka" ], - "Update your Recovery Kit": [ - "I-update ang Recovery Kit" - ], - "Update your Recovery Kit?": [ - "I-update ang Recovery Kit?" - ], "Verify": [ "I-verify" ], @@ -18310,9 +18189,6 @@ "Verify your recovery phone number": [ "I-verify ang recovery phone number" ], - "We encountered an error while generating your Recovery Kit. Please try again later, or contact support if the issue continues.": [ - "Nakaranas kami ng error habang ginagawa ang iyong Recovery Kit. Pakisubukang muli mamaya o makipag-ugnayan sa suporta kung magpapatuloy ang isyu." - ], "We encountered an error while verifying your email. Please try again later, or contact support if the issue continues.": [ "Nakaranas kami ng error habang bini-verify ang iyong email. Pakisubukang muli mamaya o makipag-ugnayan sa suporta kung magpapatuloy ang isyu." ], @@ -18334,9 +18210,6 @@ "You can disable this at any time.": [ "Maaari mo itong huwag paganahin anumang oras." ], - "You can use the recovery phrase in this Recovery Kit to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ - "Maaari mong gamitin ang parirala ng pag-recover sa Recovery Kit na ito upang ganap na ibalik ang iyong account kapag i-ni-reset ang password, kaya siguraduhin na itago ito sa ligtas na lugar." - ], "You can use your email to regain access to your account if you forget your password.": [ "Maaari mong gamitin ang iyong email upang mabawi ang iyong access sa account kung makalimutan mo ang password." ], @@ -18346,9 +18219,6 @@ "You can use your recovery phone to regain access to your account if you forget your password.": [ "Maaari mong gamitin ang recovery phone upang mabawi ang access sa account kung makalimutan mo ang password." ], - "You have previously downloaded a Recovery Kit. Downloading a new one will **deactivate the old one**.": [ - "Nakapag-download ka na dati ng Recovery Kit. Ang pag-download ng bago ay **magde-deactivate sa luma**." - ], "You have recommended actions to safeguard your account further.": [ "May mga inirerekomendang aksyon para mas maprotektahan ang account." ], @@ -18412,12 +18282,6 @@ "Your recovery email is set": [ "Naka-set na ang iyong recovery email" ], - "Your Recovery Kit": [ - "Ang iyong Recovery Kit" - ], - "Your Recovery Kit is set": [ - "Naka-set na ang iyong Recovery Kit" - ], "Your recovery methods": [ "Ang iyong mga recovery method" ], @@ -18930,14 +18794,6 @@ "Request sa pag-reset ng password" ] }, - "Setting": { - "Get updates about comments via email": [ - "Makakuha ng mga update tungkol sa mga komento sa pamamagitan ng email" - ], - "Include document name in email notifications": [ - "Isama ang pangalan ng dokumento sa mga abiso sa email" - ] - }, "Settings description": { "Keep your inbox organized with folders and labels. ${ learnMoreLink }": [ "Panatilihing organisado ang inbox gamit ang mga folder at label. ${ learnMoreLink }" @@ -20764,9 +20620,6 @@ "Organization logo updated": [ "Na-update ang logo ng organisasyon" ], - "Organization name set": [ - "Naitakda na ang pangalan ng organisasyon" - ], "Organization name updated": [ "Na-update ang pangalan ng organisasyon" ], @@ -21418,9 +21271,6 @@ "Change second password": [ "Palitan ang pangalawang password" ], - "Check your default mail application": [ - "Suriin ang default na mail application" - ], "Choose an account": [ "Pumili ng account" ], @@ -21445,18 +21295,12 @@ "Confirm": [ "Kumpirmahin" ], - "Confirm address": [ - "Kumpirmahin ang address" - ], "Confirm downgrade": [ "Kumpirmahin ang pag-downgrade" ], "Confirm loss of ${ BRAND_NAME } bonuses": [ "Kumpirmahin ang pagkawala ng mga bonus sa ${ BRAND_NAME }" ], - "Confirm phone number": [ - "Kumpirmahin ang phone number" - ], "Connect ${ name }": [ "Ikonekta ang ${ name }" ], @@ -21838,6 +21682,9 @@ "Feature access": [ "Access sa feature" ], + "Fewer distractions, more focus": [ + "Mas kaunting abala, mas maraming focus" + ], "Filter for more focus": [ "Mag-filter para mas makapag-focus" ], @@ -22202,9 +22049,6 @@ "Phone": [ "Telepono" ], - "Photos": [ - "Mga Larawan" - ], "Pin the extension": [ "I-pin ang extension" ], @@ -22466,6 +22310,9 @@ "Snooze:": [ "I-snooze:" ], + "Something went wrong": [ + "Nagkaproblema" + ], "Sort folders alphabetically": [ "I-sort ang mga folder nang paalpabeto" ], @@ -23019,9 +22866,6 @@ "This feature is only available on Beta": [ "Available lang ang feature na ito sa Beta" ], - "This is the default key used by other ${ MAIL_APP_NAME } users on older mobile apps to encrypt data they send to you": [ - "Ito ang default na key na ginagamit ng ibang user ng ${ MAIL_APP_NAME } sa mga lumang mobile app upang i-encrypt ang data na ipinapadala nila sa iyo" - ], "This is the default key used by other ${ MAIL_APP_NAME } users to encrypt data they send to you": [ "Ito ang default na key na ginagamit ng ibang mga user ng ${ MAIL_APP_NAME } para i-encrypt ang data na ipinapadala nila sa iyo" ], @@ -23780,12 +23624,6 @@ "${ BRAND_NAME } will transfer as much data as possible, starting with your most recent messages.": [ "Ililipat ng ${ BRAND_NAME } ang pinakamaraming data hangga't maaari, simula sa iyong mga pinakabagong mensahe." ], - "Are you sure you want to delete the phone number?": [ - "Sigurado ka bang gusto mong i-delete ang numero ng telepono?" - ], - "Are you sure you want to delete this address?": [ - "Sigurado ka bang gusto mong i-delete ang address na ito?" - ], "By deleting this address, you will no longer be able to receive daily email notifications.": [ "Sa pag-delete ng address na ito, hindi ka na makakatanggap ng pang-araw-araw na abiso sa email." ], @@ -23795,9 +23633,6 @@ "By deleting this address, you will no longer be able to recover your account.": [ "Sa pag-delete ng address na ito, hindi mo na mare-recover ang iyong account." ], - "By deleting this phone number, you will no longer be able to recover your account.": [ - "Sa pag-delete ng numerong ito ng telepono, hindi mo na mai-recover ang account." - ], "If you cancel this import, you won't be able to resume it. ${ BRAND_NAME } saved all progress in your account. Cancel anyway?": [ "Kung kakanselahin mo ang pag-import na ito, hindi mo na ito maipagpapatuloy. Na-save ng ${ BRAND_NAME } ang lahat ng progreso sa account. Kanselahin pa rin?" ], diff --git a/applications/account/locales/fr_FR.json b/applications/account/locales/fr_FR.json index 34a7377cafe..ffe4be9faa4 100644 --- a/applications/account/locales/fr_FR.json +++ b/applications/account/locales/fr_FR.json @@ -90,6 +90,9 @@ "Add": [ "Ajouter" ], + "Add ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }": [ + "Ajouter ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }" + ], "Add ${ BRAND_NAME } Account": [ "Ajouter un compte ${ BRAND_NAME }" ], @@ -105,6 +108,9 @@ "Add address or domain": [ "Ajouter une adresse ou un domaine" ], + "Add and verify": [ + "Ajouter et vérifier" + ], "Add another account": [ "Ajouter un autre compte" ], @@ -159,6 +165,9 @@ "Add user": [ "Ajouter un utilisateur" ], + "Added ${ memberName } as group owner": [ + "${ memberName } a été ajouté en tant que propriétaire du groupe." + ], "Align center": [ "Centrer" ], @@ -210,6 +219,9 @@ "Back to sign in": [ "Retour à la connexion" ], + "Back to sign-in": [ + "Retour à la connexion" + ], "Block": [ "Bloquer" ], @@ -306,6 +318,9 @@ "Confirm": [ "Confirmer" ], + "Confirm email": [ + "Confirmez l'e-mail" + ], "Confirm opening of link ${ linkToShow }": [ "Confirmer l'ouverture du lien ${ linkToShow }" ], @@ -321,15 +336,15 @@ "Connect Gmail address": [ "Connecter l'adresse Gmail" ], - "Connect to Gmail": [ - "Se connecter à Gmail" - ], "Connect to video conferencing": [ "Se connecter à la vidéoconférence" ], "Connect your ${ BRAND_NAME } Account": [ "Connectez-vous à votre compte ${ BRAND_NAME }" ], + "Connect your email": [ + "Connectez votre e-mail" + ], "Connected": [ "Connecté" ], @@ -366,6 +381,9 @@ "Continue with ${ nameToDisplay } ${ maybeEmailInBrackets }": [ "Continuer avec ${ nameToDisplay } ${ maybeEmailInBrackets }" ], + "Continue with Free": [ + "Continuer avec Free" + ], "Continue with Google": [ "Continuer avec Google" ], @@ -441,6 +459,9 @@ "Create organization": [ "Créer une organisation" ], + "Create recovery phrase": [ + "Créer une phrase de récupération" + ], "Create users": [ "Créer des utilisateurs" ], @@ -513,8 +534,8 @@ "Delete record": [ "Supprimer l'enregistrement" ], - "Delete token ${ token.Account }": [ - "Supprimer le jeton ${ token.Account }" + "Delete token ${ tokens[0].Account }": [ + "Supprimer le jeton ${ tokens[0].Account }" ], "Delete token “${ token.Name }”": [ "Supprimer le token “${ token.Name }”" @@ -555,6 +576,9 @@ "Disable categories": [ "Désactiver les catégories" ], + "Disable category": [ + "Désactiver la catégorie" + ], "Disable recovery phrase": [ "Désactiver la phrase de récupération" ], @@ -630,6 +654,9 @@ "Download the desktop app": [ "Téléchargez l'application de bureau" ], + "Download updated file": [ + "Télécharger le fichier mis à jour" + ], "Edit": [ "Modifier" ], @@ -702,6 +729,9 @@ "Enable ${ darkWebMonitoring }": [ "Activez ${ darkWebMonitoring }" ], + "Enable category": [ + "Activer la catégorie" + ], "enable desktop notifications": [ "activer les notifications de bureau" ], @@ -753,6 +783,9 @@ "Filters are being applied. This might take a few minutes.": [ "Les filtres sont en cours d'application. Cela peut prendre quelques minutes." ], + "Finish": [ + "Terminer" + ], "Fit to window": [ "Ajuster à la fenêtre" ], @@ -771,6 +804,12 @@ "Generate key": [ "Générer la clé" ], + "Generate missing keys": [ + "Générer les clés manquantes" + ], + "Generate new phrase": [ + "Générer une nouvelle phrase" + ], "Generate new recovery phrase": [ "Générer une nouvelle phrase de récupération" ], @@ -870,6 +909,9 @@ "Go to ${ planOrAppName }": [ "Accéder à ${ planOrAppName }" ], + "Go to domain provider": [ + "Accéder au fournisseur de nom de domaine" + ], "Go to label": [ "Afficher le label" ], @@ -1266,6 +1308,9 @@ "Remove this notification": [ "Retirer cette notification" ], + "Removed ${ memberName } as group owner": [ + "${ memberName } a été retiré des propriétaires du groupe." + ], "Rename": [ "Renommer" ], @@ -1347,12 +1392,18 @@ "Save": [ "Enregistrer" ], + "Save & exit": [ + "Enregistrer et quitter" + ], "Save address": [ "Enregistrer l'adresse" ], "Save and continue": [ "Enregistrer et continuer" ], + "Save and verify": [ + "Enregistrer et vérifier" + ], "Save changes": [ "Enregistrer les modifications" ], @@ -1374,6 +1425,9 @@ "Search settings": [ "Rechercher dans les paramètres" ], + "Secure account": [ + "Sécuriser le compte" + ], "See DNS TXT record": [ "Voir l'enregistrement TXT du DNS" ], @@ -1764,6 +1818,9 @@ "View recovery settings": [ "Afficher les paramètres de récupération" ], + "View recovery setup details": [ + "Voir le détail de la configuration de récupération" + ], "Void": [ "Annulée" ], @@ -1773,6 +1830,9 @@ "Void all recovery files?": [ "Annuler tous les fichiers de récupération ?" ], + "Watch the interview": [ + "Voir l'interview" + ], "Welcome": [ "Bienvenue" ], @@ -2034,18 +2094,21 @@ ] }, "Admin roles onboarding": { + "2 new admin roles": [ + "2 nouveaux rôles d'administrateur" + ], "3 new admin roles": [ "3 nouveaux rôles d'administrateur" ], - "Admin roles": [ - "Rôles administrateur" - ], "Configure security policies, data retention, and VPN infrastructure, and manage audit logs.": [ "Configurez les politiques de sécurité, la conservation des données et l’infrastructure VPN, et gérez les journaux d’audit." ], "Delegate management by assigning specific admin roles. Give each admin only the access they need. This follows the principle of least privilege, protecting your organization from compromised accounts and accidental errors.": [ "Déléguez la gestion en attribuant des rôles d’administrateur spécifiques. Donnez à chaque administrateur uniquement l’accès dont il a besoin. Cela suit le principe du moindre privilège, protégeant votre organisation contre les comptes compromis et les erreurs accidentelles." ], + "Delegate management for many users at once. Assign specific admin roles to groups for automatic permissions. This follows the principle of least privilege to save time on onboarding and offboarding while reducing errors.": [ + "Gérez les droits d'accès pour plusieurs utilisateurs à la fois. Attribuez des rôles d'administrateur spécifiques à des groupes pour automatiser l'attribution des autorisations. Cette approche s'inscrit dans le principe du moindre privilège, ce qui permet de gagner du temps lors de l'intégration et du départ des collaborateurs tout en réduisant les erreurs." + ], "Delegate management with the appropriate admin role.": [ "Déléguer la gestion avec le rôle d'administrateur approprié." ], @@ -2058,21 +2121,15 @@ "New: Control admin access for individual users": [ "Nouveau : Contrôlez l'accès administrateur pour les utilisateurs individuels" ], - "Organization admin": [ - "Administrateur de l'organisation" + "New: Control admin access for many users at once": [ + "Nouveau : contrôlez les accès administrateur pour plusieurs utilisateurs à la fois" ], "Organization admin:": [ "Administrateur de l'organisation :" ], - "Security admin": [ - "Administrateur de sécurité" - ], "Security admin:": [ "Administrateur de sécurité :" ], - "User admin": [ - "Administrateur des utilisateurs" - ], "User admin:": [ "Administrateur des utilisateurs :" ] @@ -2303,6 +2360,11 @@ "Votre essai gratuit se termine dans ${ timeRemaining }" ] }, + "Badge": { + "Save ${ discountRate }%": [ + "Économisez ${ discountRate } %" + ] + }, "Badge for domain": { "Disabled": [ "Désactivé" @@ -2835,15 +2897,66 @@ "${ BRAND_NAME } Migration Assistant": [ "${ BRAND_NAME } Migration Assistant" ], - "Add a custom domain": [ - "Ajouter un domaine personnalisé" + "${ migratedCount } of ${ providerUsers.length }": [ + "${ migratedCount } sur ${ providerUsers.length }" + ], + "**p=none**: do not quarantine or reject unauthorized emails. Usually, people only use this policy to troubleshoot or test.": [ + "**p=none** : ne met pas en quarantaine ou ne rejette pas les messages non autorisés. Cette règle est généralement utilisée à des fins de dépannage ou de test." + ], + "**p=quarantine**: asking the recipient platforms to mark the unauthorized emails as spam or quarantine them.": [ + "**p=quarantine** : demande aux plateformes destinataires de marquer les e-mails non autorisés comme indésirables ou de les mettre en quarantaine." + ], + "**p=reject**: asking the recipient platforms to reject the unauthorized emails.": [ + "**p=reject** : demande aux plateformes destinataires de refuser les messages non autorisés." + ], + "Account connected": [ + "Compte connecté" + ], + "Account disconnected": [ + "Compte déconnecté" + ], + "Activated": [ + "Activé" + ], + "Activation link": [ + "Lien d'activation" + ], + "Activation link copied to clipboard": [ + "Le lien d'activation a été copié dans le presse-papiers." + ], + "Add a domain": [ + "Ajouter un domaine" + ], + "Add domain": [ + "Ajouter un domaine" + ], + "Add users": [ + "Ajouter des utilisateurs" + ], + "Add users and configure your domain manually for sending and receiving mail. Ideal for small teams starting from a clean slate.": [ + "Ajoutez des utilisateurs et configurez votre domaine manuellement afin d'envoyer et recevoir des e-mails. Idéal pour les petites équipes qui démarrent de zéro." + ], + "Address is already used by a user outside of your organization. Please contact customer support to resolve this": [ + "L'adresse est déjà utilisée par un utilisateur en dehors de votre organisation. Nous vous invitons à prendre contact avec le service client pour résoudre ce problème." ], - "App installed": [ - "Application installée" + "All": [ + "Tout" + ], + "An unknown error occurred": [ + "Une erreur inconnue s'est produite." + ], + "Are you sure you want to proceed? Users who haven't claimed their account before the migration is finalized will need to request a password reset from their ${ BRAND_NAME } organization administrator.": [ + "Voulez-vous vraiment continuer ? Les utilisateurs qui n'auront pas activé leur compte avant la fin de la migration devront demander une réinitialisation de mot de passe à l'administrateur de leur organisation ${ BRAND_NAME }." + ], + "As soon as the accounts are created, you can share the activation link so users can claim their ${ BRAND_NAME } account.": [ + "Dès que les comptes sont créés, vous pouvez partager le lien d'activation afin que les utilisateurs puissent activer leur compte ${ BRAND_NAME }." ], "Authenticate": [ "S'authentifier" ], + "Authenticate to Google Workspace": [ + "S'authentifiez à Google Workspace" + ], "Authenticate your Google Workspace account": [ "Authentifiez votre compte Google Workspace" ], @@ -2853,23 +2966,68 @@ "Change": [ "Modifier" ], + "Choose how you want to bring your team and email setup to ${ BRAND_NAME }.": [ + "Choisissez comment vous souhaitez migrer votre équipe et votre configuration e-mail vers ${ BRAND_NAME }." + ], + "Choose what to migrate. Your choice will apply to all users. The migration will start after you decide which users to copy.": [ + "Choisissez les éléments à migrer. Votre choix s'appliquera à tous les utilisateurs. La migration commencera une fois que vous aurez sélectionné les utilisateurs à copier." + ], "Completed": [ "Terminé" ], "Configure": [ "Configurer" ], + "Configure domain": [ + "Configurer le domaine" + ], "Configure migration": [ "Configurer la migration" ], + "Configure your domain": [ + "Configurez votre domaine" + ], "Contacts": [ "Contacts" ], + "Continue migration": [ + "Configurer la migration" + ], + "Copy activation link": [ + "Copier le lien d'activation" + ], + "Copy activation link to clipboard": [ + "Copier le lien d'activation dans le presse-papiers" + ], + "Copy the below code and paste it in the DNS section of your domain host. You can find an example and some helpful tips ${ hereHref }.": [ + "Copiez le code ci-dessous et collez-le dans la section DNS de votre hébergeur de domaine. Vous pouvez trouver un exemple et des conseils utiles ${ hereHref }." + ], + "Creating accounts": [ + "Création des comptes en cours" + ], + "DKIM adds a digital signature to each email so recipients can verify that the message really came from your domain and was not altered in transit. Without it, messages may be treated as less trustworthy.": [ + "DKIM ajoute une signature numérique à chaque e-mail afin que les destinataires puissent vérifier que le message provient bien de votre domaine et qu'il n'a pas été altéré pendant son acheminement. Sans cela, les messages risquent d'être considérés comme moins fiables." + ], + "DKIM records": [ + "Enregistrements DKIM" + ], + "DMARC builds on SPF and DKIM by telling receiving servers how to handle messages that fail these checks. It helps protect your domain from impersonation and improves overall delivery reliability.": [ + "DMARC s'appuie sur les protocoles SPF et DKIM pour indiquer aux serveurs destinataires comment traiter les messages qui ne satisfont pas ces vérifications. Il contribue à protéger votre domaine contre l'usurpation d'identité et améliore la fiabilité globale de la distribution des e-mails." + ], + "DMARC records": [ + "Enregistrements DMARC" + ], + "Domain added": [ + "Le domaine a été ajouté." + ], "Domain connected": [ "Domaine connecté" ], - "Domain ownership verified": [ - "La propriété du domaine a été vérifiée" + "Ensure that your emails reach the inbox, not the spam folder. Updating SPF will allow users to send from ${ BRAND_NAME } and Google simultaneously for the duration of the migration.": [ + "Assurez-vous que vos e-mails arrivent dans la boîte de réception et non dans le dossier des indésirables. La mise à jour du SPF permettra aux utilisateurs d'envoyer des e-mails à la fois depuis ${ BRAND_NAME } et depuis Google pendant toute la durée de la migration." + ], + "Errors": [ + "Erreurs" ], "Estimated size": [ "Taille estimée" @@ -2877,15 +3035,39 @@ "Failed to load OAuth": [ "Echec du chargement du OAuth" ], + "Finalize migration": [ + "Terminer la migration" + ], + "Finalize your migration": [ + "Terminer la migration" + ], + "Finalizing the migration means all your emails will be routed directly to ${ BRAND_NAME }. Users will stop receiving emails on their Google accounts and data will not be synchronized between ${ BRAND_NAME } and Google anymore.": [ + "Une fois la migration terminée, tous vos e-mails seront acheminés directement vers ${ BRAND_NAME }. Les utilisateurs ne recevront plus d'e-mails sur leurs comptes Google et les données ne seront plus synchronisées entre ${ BRAND_NAME } et Google." + ], + "Find out what can be migrated.": [ + "Découvrez ce qui peut être migré." + ], "Finish setting up your business account": [ "Terminer la configuration de votre compte entreprise" ], + "Go to Domain names": [ + "Se rendre aux noms de domaine" + ], "Google Marketplace app to copy data to ${ BRAND_NAME }": [ "Application Google Marketplace pour copier des données vers ${ BRAND_NAME }" ], + "Google Workspace account": [ + "Compte Google Workspace" + ], + "Hang tight, we're setting up user accounts and will start importing user data shortly.": [ + "Veuillez patienter, nous sommes en train de créer les comptes utilisateurs et nous allons bientôt commencer à importer les données utilisateurs." + ], "Has errors": [ "Il y a des erreurs" ], + "Import errors for ${ user.AdminSetName }": [ + "Erreurs d'importation pour ${ user.AdminSetName }" + ], "In progress": [ "En cours" ], @@ -2895,14 +3077,20 @@ "Install migration app": [ "Installer l'application de migration" ], - "Learn more about what can be migrated. Learn more": [ - "En savoir plus sur la migration. En savoir plus" + "Install Migration assistant": [ + "Installer l'assistant de migration" + ], + "Loading your organization data": [ + "Chargement des données de votre organisation en cours" ], "Mail": [ "E-mail" ], - "Migrate": [ - "Migrer" + "Managed via ${ registrar.name }": [ + "Géré par ${ registrar.name }" + ], + "Member address not found. Please contact customer support to resolve this": [ + "L'adresse du membre n'a pas été trouvée. Veuillez contacter le service client pour résoudre ce problème." ], "Migrate from Google Workspace": [ "Migrer depuis Google Workspace" @@ -2910,6 +3098,12 @@ "Migrate users": [ "Migrer des utilisateurs" ], + "Migrate users to ${ BRAND_NAME }": [ + "Migrer les utilisateurs vers ${ BRAND_NAME }" + ], + "Migrated": [ + "Migré" + ], "Migration includes": [ "La migration comprend" ], @@ -2920,8 +3114,35 @@ "Migration status": [ "État de la migration" ], - "Not started": [ - "Pas encore commencé" + "Missing organization private key": [ + "La clé privée de l'organisation est absente." + ], + "Missing organization public key": [ + "La clé publique de l'organisation est absente." + ], + "More details": [ + "Plus d'informations" + ], + "Move your users, emails, and settings from Google Workspace automatically. We’ll guide you through connecting your account, verifying your domain, and migrating users securely.": [ + "Déplacez automatiquement vos utilisateurs, e-mails et paramètres depuis Google Workspace. Nous vous aiderons à connecter votre compte, à vérifier votre domaine et à migrer vos utilisateurs en toute sécurité." + ], + "No error details available. Please contact customer support for more information": [ + "Aucun détail sur l'erreur n'est disponible. Veuillez contacter le service client pour plus d'informations." + ], + "No users to display": [ + "Il n'y a aucun utilisateur à afficher." + ], + "Not activated": [ + "Non activé" + ], + "Not confirmed": [ + "Non confirmé" + ], + "Once users have claimed their ${ BRAND_NAME } account, finalize the migration.": [ + "Dès que les utilisateurs auront activé leur compte ${ BRAND_NAME }, finalisez la migration." + ], + "Once we have confirmed that emails are routed to ${ BRAND_NAME } the migration will be finalized. You will receive a confirmation email to let you know when this happens. This process can take up to 24 hours.": [ + "Dès que nous aurons vérifié que les e-mails sont bien acheminés vers ${ BRAND_NAME }, la migration sera finalisée. Vous recevrez un e-mail de confirmation pour vous en informer. Ce processus peut prendre jusqu'à 24 heures." ], "Organization does not have enough seats available": [ "L'organisation n'a pas assez d'accès disponibles." @@ -2929,8 +3150,20 @@ "Organization does not have enough storage available": [ "L'organisation n'a pas assez d'espace de stockage disponible." ], - "Organization settings": [ - "Paramètres de l'organisation" + "Pending": [ + "En attente" + ], + "Please add the following records in your DNS console of your domain provider:": [ + "Veuillez ajouter les enregistrements suivants dans la console DNS de votre fournisseur de domaine :" + ], + "Please leave this window open until we're done creating all the users.": [ + "Veuillez laisser cette fenêtre ouverte jusqu'à ce que nous ayons fini de créer tous les utilisateurs." + ], + "Please select at least one product to migrate": [ + "Veuillez sélectionner au moins un produit à migrer." + ], + "Refresh": [ + "Actualiser" ], "Required": [ "Obligatoire" @@ -2941,8 +3174,8 @@ "Select at least one user to start a migration": [ "Sélectionnez au moins un utilisateur pour commencer une migration" ], - "Select what you want to migrate, this will apply to all users whether they are created now or later. Migration will start after user accounts are created.": [ - "Sélectionnez ce que vous souhaitez migrer, cela s'appliquera à tous les utilisateurs, qu'ils soient créés maintenant ou plus tard. La migration commencera après la création des comptes utilisateurs." + "Select users to migrate": [ + "Sélectionnez les utilisateurs à migrer" ], "Set up": [ "Configurer" @@ -2950,53 +3183,120 @@ "Set up billing information": [ "Configurer les informations de facturation" ], + "Set up manually": [ + "Configurer manuellement" + ], + "Set up secure sending (DKIM)": [ + "Configurer l'envoi sécurisé (DKIM)" + ], + "Set up secure sending (DMARC)": [ + "Configurer l'envoi sécurisé (DMARC)" + ], + "Set up secure sending (SPF)": [ + "Configurer l'envoi sécurisé (SPF)" + ], "Set up two-factor authentication": [ "Configurer l'authentification à deux facteurs" ], "Settings": [ "Paramètres" ], + "Share the activation link to users so they can claim their ${ BRAND_NAME } account.": [ + "Partagez le lien d'activation aux utilisateurs pour qu'ils puissent valider leur compte ${ BRAND_NAME }." + ], "Sign in to Google Workspace": [ "Se connecter à Google Workspace" ], + "Size": [ + "Taille" + ], + "Some accounts are not claimed": [ + "Certains comptes ne sont pas activés." + ], + "SPF records": [ + "Enregistrements SPF" + ], + "Start migrating": [ + "Commencer la migration" + ], "Start migration": [ "Commencer la migration" ], "Status": [ "État" ], + "The default setting is none. However, to improve your security we recommend setting this value to p=quarantine.": [ + "Le paramètre par défaut est none. Cependant, nous recommandons de mettre cette valeur à p=quarantine afin d'améliorer votre sécurité." + ], + "The “p=” value specifies the action to take for emails that fail DMARC. Here are the available actions:": [ + "La valeur « p= » définit l'action à entreprendre pour les e-mails qui ne respectent pas les exigences DMARC. Voici les actions disponibles :" + ], + "This migration has been completed": [ + "Cette migration a été complétée." + ], "To migrate your organization’s data, you need to install the ${ BRAND_NAME } Migration Assistant app from the Google Workspace Marketplace. This will grant permission to ${ BRAND_NAME } to copy your data. After installing it, come back here to continue.": [ "Pour migrer les données de votre organisation, vous devez installer l'application ${ BRAND_NAME } Migration Assistant depuis le Google Workspace Marketplace. Cela accordera l'autorisation à ${ BRAND_NAME } de copier vos données. Une fois l'application installée, revenez ici pour continuer." ], - "Transfer errors": [ - "Erreurs pendant le transfert" + "Update records for receiving": [ + "Mettre à jour les enregistrements pour recevoir" ], "User": [ "Utilisateur" ], + "User needs to activate their account through the activation link shown above": [ + "L'utilisateur doit activer son compte grâce au lien d'activation indiqué ci-dessus." + ], + "User status": [ + "Statut utilisateur" + ], + "Users can use ${ BRAND_NAME } or Google simultaneously for the duration of the migration.": [ + "Pendant toute la durée de la migration, les utilisateurs peuvent utiliser à la fois ${ BRAND_NAME } et Google." + ], "Users migrated": [ "Utilisateurs migrés" ], + "Verified": [ + "Vérifié" + ], + "Verify domain ownership": [ + "Vérifier la propriété du domaine" + ], "Verify installation": [ "Vérifier l'installation" ], "Verify your domain": [ "Vérifiez votre domaine" ], - "Verify your domain ownership": [ - "Vérifiez la propriété de votre domaine" - ], "Verify your domain to start a migration": [ "Vérifiez votre domaine pour commencer une migration" ], + "We detected the primary domain linked to your Google Workspace account. Confirm it to continue setting up email for your ${ BRAND_NAME } organization.": [ + "Nous avons détecté le domaine principal lié à votre compte Google Workspace. Nous vous invitons à le confirmer afin de poursuivre la configuration e-mail pour votre organisation ${ BRAND_NAME }." + ], "We were unable to verify the installation, please check that you have installed it in your Google Workspace account and try again.": [ "Nous n'avons pas pu vérifier l'installation. Veuillez vérifier que vous l'avez installée dans votre compte Google Workspace, puis réessayez." ], + "We're still checking the MX records with your domain provider.": [ + "La vérification des enregistrements MX auprès de votre fournisseur de domaine est toujours en cours." + ], + "We've noticed some users have not claimed their ${ BRAND_NAME } accounts.": [ + "Nous avons remarqué que certains utilisateurs n'ont pas encore activé leur compte ${ BRAND_NAME }." + ], "What are you migrating?": [ "Que migrez-vous ?" ], + "You": [ + "Vous" + ], "You need to grant the permission for ${ BRAND_NAME } to copy your data. After accepting permissions, come back here to continue.": [ "Vous devez accorder à ${ BRAND_NAME } la permission de copier vos données. Après avoir accepté les autorisations, revenez ici pour continuer." + ], + "You're all set!": [ + "Tout est prêt !" + ], + "Your current plan allows up to ${ maxMembers } user. To migrate additional users, add more seats to your subscription.": [ + "Votre offre actuelle prend en charge jusqu'à ${ maxMembers } utilisateur. Pour ajouter d'autres utilisateurs, augmentez le nombre de comptes inclus dans votre abonnement.", + "Votre offre actuelle prend en charge jusqu'à ${ maxMembers } utilisateurs. Pour ajouter d'autres utilisateurs, augmentez le nombre de comptes inclus dans votre abonnement." ] }, "breadcrumb": { @@ -3104,9 +3404,18 @@ ] }, "Button": { + "Add users manually": [ + "Ajouter des utilisateurs manuellement" + ], + "Cancel": [ + "Annuler" + ], "Close": [ "Fermer" ], + "Configure your network": [ + "Configurez votre réseau" + ], "Continue using ${ MAIL_APP_NAME }.": [ "Continuer à utiliser ${ MAIL_APP_NAME }." ], @@ -3128,6 +3437,12 @@ "Got it": [ "J'ai compris" ], + "Invite your team": [ + "Inviter votre équipe" + ], + "Manage global VPN permissions": [ + "Gérer les autorisations VPN globales" + ], "Maybe later": [ "Peut-être plus tard" ], @@ -3137,12 +3452,21 @@ "Remind me later": [ "Me le rappeler plus tard" ], + "Secure your organization": [ + "Sécurisez votre organisation" + ], "Send": [ "Envoyer" ], "Set up other features": [ "Configurez d'autres fonctionnalités" ], + "Set up SSO": [ + "Configurer le SSO" + ], + "Sign in": [ + "Se connecter" + ], "Take a tour": [ "Laissez-vous guider" ] @@ -3741,17 +4065,35 @@ "Access is restored once usage is back within limits.": [ "L'accès est rétabli dès que l'utilisation revient dans les limites autorisées." ], + "Back up photos from your devices": [ + "Sauvegardez des photos depuis vos appareils" + ], "Cancel subscription": [ "Annuler l'abonnement" ], + "Confirm cancellation": [ + "Confirmer l'annulation" + ], + "If you exceed free plan limits, you won't be able to:": [ + "Si vous dépassez les limites de l'abonnement gratuit, vous ne pourrez plus :" + ], "Keep current plan": [ "Conserver l'abonnement actuel" ], + "Manage your calendar": [ + "Gérez votre calendrier" + ], "Receive new emails": [ "Recevoir de nouveaux messages" ], + "Send emails with attachments": [ + "Envoyer des e-mails avec pièces jointes" + ], "Upload any new files": [ "Importer tout nouveau fichier" + ], + "When your subscription ends on ${ endDate }, your account will switch to the Free plan. If your usage exceeds Free plan limits, some features may be temporarily unavailable.": [ + "Lorsque votre abonnement se termine le ${ endDate }, votre compte passera au plan gratuit. Si vous utilisation dépasse les limites du plan gratuit, certaines fonctionnalités pourront être temporairement indisponibles." ] }, "Confirm modal title": { @@ -4757,6 +5099,9 @@ "/month": [ "/mois" ], + "/user /month": [ + "/utilisateur /mois" + ], "/user per month": [ "par utilisateur et par mois" ] @@ -4923,6 +5268,9 @@ ] }, "Description": { + "${ BRAND_NAME }'s end-to-end encryption means only you can unlock your data. Set up recovery options now to ensure you never lose access.": [ + "Le chiffrement de bout en bout de ${ BRAND_NAME } signifie que seul vous pouvez déverrouiller vos données. Configurez des options de récupération afin de ne jamais perdre vos accès." + ], "${ DOCS_SHORT_APP_NAME } in ${ DRIVE_APP_NAME } allows you to work together with others in a secure, encrypted environment.": [ "${ DOCS_SHORT_APP_NAME } dans ${ DRIVE_APP_NAME } vous permet de travailler avec d'autres personnes dans un environnement chiffré et sécurisé." ], @@ -4956,21 +5304,30 @@ "Automatically sort your incoming messages before they reach your inbox.": [ "Triez automatiquement vos messages entrants avant qu'ils n'arrivent dans votre boite de réception." ], + "Available storage: ${ storageText }": [ + "Espace de stockage disponible : ${ storageText }" + ], "Available with ${ title }": [ "Disponible avec ${ title }" ], "Block Google's ability to profile you. Gmail can't see what you do in ${ MAIL_APP_NAME }": [ "Empêchez Google de vous profiler. Gmail ne peut pas voir ce que vous faites dans ${ MAIL_APP_NAME }." ], - "Bring over email, calendar events, and contacts from another provider.": [ + "Bring over your email, calendar events, and contacts from another provider.": [ "Importez vos messages, calendriers et contacts depuis un autre fournisseur." ], + "Build trust and brand recognition with professional email addresses at your own domain.": [ + "Renforcez la confiance et la reconnaissance de votre marque avec des adresses e-mail professionnelles avec votre propre domaine." + ], "Configure this first to activate your organization and customize your email address.": [ "Configurez d'abord cette option pour activer votre organisation et personnaliser votre adresse e-mail." ], "Connect your CRM, website, printers, and more.": [ "Connectez votre CRM, votre site internet, vos imprimantes et bien plus encore." ], + "Create a Gateway to give your users access to your IT resources through dedicated servers.": [ + "Créez une passerelle pour permettre à vos utilisateurs d'accéder à vos ressources informatiques via des serveurs dédiés." + ], "Create a Zoom meeting and add joining details to your event with one click.": [ "Créez une réunion Zoom et ajouter les informations de participation à votre événement en un clic." ], @@ -4980,9 +5337,15 @@ "Create groups you can email with a single address.": [ "Créez des groupes auxquels vous pouvez envoyer des messages avec une seule adresse." ], + "Create new user accounts or import users with SSO (single sign-on) SCIM provisioning.": [ + "Créez de nouveaux comptes utilisateur ou importez des utilisateurs avec l'approvisionnement SCIM SSO (authentification unique)." + ], "Create policies to decide who can connect to shared servers in each country.": [ "Créez des politiques pour déterminer qui peut se connecter aux serveurs partagés dans chaque pays." ], + "Decide which users can connect to each of our 120+ shared server locations.": [ + "Décidez quels utilisateurs peuvent se connecter à chacun de nos plus de 120 emplacements de serveurs partagés." + ], "Easily access your email and calendar on desktop and mobile.": [ "Accédez facilement à votre adresse e-mail et à votre calendrier sur ordinateur et appareil mobile." ], @@ -5007,6 +5370,9 @@ "Encrypting and importing contacts... This may take a few minutes. When the process is completed, you can close this modal.": [ "Chiffrement et importation des contacts en cours, ceci peut prendre quelques minutes. Une fois le processus terminé, vous pourrez fermer cette fenêtre." ], + "Enough room for years of emails, attachments and more.": [ + "Assez d'espace pour stocker des années d'e-mails, de pièces jointes et bien plus encore." + ], "Ensure secure access to organization data, even if your team is remote or using public WiFi.": [ "Assurez un accès sécurisé aux données de l’organisation, même si votre équipe est à distance ou utilise le wifi public." ], @@ -5031,9 +5397,21 @@ "Help your team securely store passwords to sensitive business and client information.": [ "Aidez votre équipe à stocker en toute sécurité les mots de passe relatifs aux informations sensibles de l’entreprise et des clients." ], + "How our customer support team got our VPN app directly into people's hands.": [ + "Voici comment notre équipe d'assistance client a mis notre application VPN directement au service des utilisateurs." + ], + "How we fought back when ${ BRAND_NAME } was blocked in an aggressive campaign.": [ + "Voici comment nous avons riposté lorsque ${ BRAND_NAME } a été bloqué lors d'une campagne agressive." + ], "How we supported local activists when privacy and free speech were threatened.": [ "Voici comment nous avons soutenu les activistes locaux lorsque la vie privée et la liberté d'expression étaient menacées." ], + "How you unlock your encrypted data if you lose your password.": [ + "Comment déverrouiller mes données chiffrées si je perds mon mot de passe." + ], + "If you haven’t already, enable some recovery methods to make sure you never lose access to ${ VPN_APP_NAME }.": [ + "Si ce n'est pas déjà fait, activez des méthodes de récupération pour vous assurer de ne jamais perdre l'accès à ${ VPN_APP_NAME }." + ], "It looks like the contact list you are importing contains some groups. Please review how these groups should be imported.": [ "Il semble que la liste de contacts que vous importez contienne des groupes. Nous vous invitons à vérifier comment ces groupes doivent être importés." ], @@ -5052,6 +5430,9 @@ "Make your email footer your own — showcase your unique brand, not ours.": [ "Faites du pied de page de votre e-mail un reflet distinctif de votre marque, pas de la nôtre." ], + "Methods that include both password reset and data recovery.": [ + "Méthodes qui incluent la réinitialisation du mot de passe et la récupération des données" + ], "Most issues can be solved in a few minutes with our step-by-step guides.": [ "La plupart des problèmes peuvent être résolus en quelques minutes avec nos guides étape par étape." ], @@ -5064,8 +5445,8 @@ "Read, reply, and stay on top of Gmail from within ${ MAIL_APP_NAME }": [ "Lisez, répondez et restez au courant de Gmail depuis ${ MAIL_APP_NAME }" ], - "Send a code to your recovery email or phone": [ - "Envoyer un code à votre adresse e-mail ou à votre téléphone de récupération" + "Select which categories you want to add and if you want to receive push notifications for each category.": [ + "Sélectionnez les catégories que vous voulez ajouter et si vous souhaitez recevoir des notifications push pour chacune d'elles." ], "Set up accounts for all users and invite them to join ${ BRAND_NAME }.": [ "Configurez les comptes pour tous les utilisateurs et invitez-les à rejoindre ${ BRAND_NAME }." @@ -5079,6 +5460,9 @@ "Still need help? Our support team is here for you.": [ "Encore besoin d'aide ? Notre équipe de support est présente pour vous." ], + "This allows you to regain access to your ${ BRAND_NAME } account but does not recover your encrypted data.": [ + "Ceci permet de récupérer les accès à votre compte ${ BRAND_NAME } mais ne permet de récupérer vos données chiffrées." + ], "This may happen if permissions were removed or your password changed.": [ "Cela peut se produire si les autorisations ont été supprimées ou si votre mot de passe a été modifié." ], @@ -5107,27 +5491,39 @@ "Track the status and activity of your referrals": [ "Suivez l'état et l'activité de vos parrainages" ], + "Unlock 15 GB of storage for just ${ config.offerPrice }.": [ + "Bénéficiez de 15 Go de stockage pour seulement ${ config.offerPrice }." + ], "Upgrade to ${ planName } to connect up to ${ MAX_SYNC_PAID_USER } accounts": [ "Passez à ${ planName } pour connecter jusqu'à ${ MAX_SYNC_PAID_USER } comptes." ], "Upgrade to get ${ activatePmUser } for a shorter, easy-to-remember email address in addition to your current one.": [ "Changez d'abonnement pour obtenir ${ activatePmUser } pour une adresse e-mail plus courte et facile à retenir en plus de votre adresse actuelle." ], + "Use a recovery method to reset your password": [ + "Utilisez une méthode de récupération pour réinitialiser votre mot de passe." + ], "Use this guide to get your organization promptly benefiting from ${ BRAND_NAME }'s industry-leading encryption and privacy ecosystem.": [ "Utilisez ce guide pour que votre organisation bénéficie rapidement du chiffrement et de l’écosystème de respect de la vie privée de pointe de ${ BRAND_NAME }." ], "We can't access ${ boldEmails } anymore.": [ "Nous ne pouvons plus accéder à ${ boldEmails }." ], + "We will pause imports at 80% storage to reserve space for new messages.": [ + "Nous suspendrons les importations lorsque le taux de remplissage atteindra 80 % afin de réserver de l'espace pour les nouveaux messages." + ], "We'll bring in your old emails and connect your Gmail to ${ MAIL_APP_NAME } so new messages appear automatically": [ "Nous apporterons vos anciens messages et connecterons votre Gmail à ${ MAIL_APP_NAME } afin que les nouveaux messages apparaissent automatiquement" ], - "We've started importing your email from Gmail. We'll let you know when it's done.": [ - "Nous avons commencé à importer vos messages depuis Gmail. Nous vous informerons une fois que ce sera terminé." + "We've started importing your emails from Gmail. We'll let you know when it's done.": [ + "Nous avons commencé à importer vos messages depuis Gmail. Nous vous préviendrons lorsque l'opération sera terminée." ], "We’re sorry to see you go. If you have a moment, we’d really appreciate hearing why you’d like to cancel. Your feedback helps us make ${ BRAND_NAME } better for everyone.": [ "Nous regrettons de vous voir partir. Si vous avez un moment, nous aimerions beaucoup savoir pourquoi vous souhaitez résilier votre abonnement. Vos commentaires nous aident à améliorer ${ BRAND_NAME } pour le bénéfice de tous." ], + "With new email categories, only important messages land in your primary inbox. Categories work just like spam filters. ${ MAIL_APP_NAME } never reads your emails or shares your data.": [ + "Grâce aux nouvelles catégories de messages, seuls les messages importants arrivent sur votre boîte de réception principale. Les catégories fonctionnent comme des filtres à messages indésirables. ${ MAIL_APP_NAME } ne lit jamais vos e-mails ni ne partage vos données." + ], "You already have a Gmail address forwarding to ${ MAIL_APP_NAME }. Connect it below to send and receive emails directly from ${ MAIL_APP_NAME }.": [ "Vous avez déjà une adresse Gmail transférée vers ${ MAIL_APP_NAME }. Connectez-la ci-dessous pour envoyer et recevoir des e-mails directement depuis ${ MAIL_APP_NAME }." ], @@ -5169,6 +5565,12 @@ "You've connected one external account address to ${ MAIL_APP_NAME }.": [ "Vous avez connecté une adresse de compte externe à ${ MAIL_APP_NAME }." ], + "Your free ${ MAIL_APP_NAME } account comes with limited storage so we'll only import ${ newUserStorageText } of your most recent Gmail messages": [ + "Votre compte ${ MAIL_APP_NAME } gratuit dispose d'un espace de stockage limité, nous n'importerons donc que ${ newUserStorageText } de vos messages Gmail les plus récents." + ], + "Your free ${ MAIL_APP_NAME } account comes with limited storage so we'll only import your most recent Gmail emails.": [ + "Votre compte gratuit sur ${ MAIL_APP_NAME } dispose d'un espace de stockage limité, nous n'importerons donc que vos e-mails Gmail les plus récents." + ], "Your plan supports ${ MAX_SYNC_FREE_USER } Gmail address.": [ "Votre abonnement prend en charge ${ MAX_SYNC_FREE_USER } adresse Gmail.", "Votre abonnement prend en charge ${ MAX_SYNC_FREE_USER } adresses Gmail." @@ -5183,6 +5585,11 @@ "utilisez l'assistant d'importation Easy Switch" ] }, + "Description for domain modal": { + "Duplicate DMARC record found, go to the DNS console of your domain provider to fix it.": [ + "Un doublon de l'enregistrement DMARC a été détecté. Nous vous invitons à vous rendre sur la console DNS de votre fournisseur de domaine pour corriger ce problème." + ] + }, "Description of the purpose of the import CSV modal": { "Also, we have automatically matched CSV fields with vCard fields. You can review and change this matching manually.": [ "De plus, nous avons automatiquement identifié les champs CSV qui correspondent aux champs vCard. Vous pouvez vérifier et modifier cette correspondance manuellement." @@ -5606,6 +6013,9 @@ "120m": [ "120 min" ], + "15 minutes": [ + "15 minutes" + ], "30 minutes": [ "30 minutes" ], @@ -6228,8 +6638,8 @@ "${ user } will not be able to access your account until the next emergency access.": [ "${ user } ne pourra pas accéder à votre compte avant le prochain accès d'urgence." ], - "**${ contact }** is now your recovery contact. They can help you recover your data after a password reset.": [ - "**${ contact }** est maintenant votre contact de récupération. Il peut vous aider à récupérer vos données après une réinitialisation de mot de passe." + "**${ contact }** is now your recovery contact. They can help you unlock your data after you reset your password.": [ + "**${ contact }** est désormais votre contact de récupération. Ce contact peut vous aider à récupérer vos données après une réinitialisation de mot de passe." ], "**If they confirm**, click **Approve recovery**. This will unlock their encrypted data.": [ "**S'ils confirment**, cliquez sur **Approuver la récupération**. Cela déverrouillera leurs données chiffrées." @@ -6258,12 +6668,21 @@ "Add": [ "Ajouter" ], + "Add 1 more": [ + "Ajouter 1 autre" + ], "Add emergency contact": [ "Ajouter un contact d'urgence" ], + "Add option": [ + "Ajouter une option" + ], "Add recovery contact": [ "Ajouter un contact de récupération" ], + "Add recovery method": [ + "Ajouter une méthode de récupération" + ], "Added on ${ formattedDate }": [ "Ajouté le ${ formattedDate }" ], @@ -6306,6 +6725,9 @@ "Contacts": [ "Contacts" ], + "Data recovery contacts": [ + "Contacts de récupération de données" + ], "Data successfully recovered. You can now decrypt your existing data and encrypted files.": [ "Données récupérées avec succès. Vous pouvez maintenant déchiffrer vos données existantes et vos fichiers chiffrés." ], @@ -6351,6 +6773,12 @@ "Enable auto-renew": [ "Activer le renouvellement automatique" ], + "Enter your extra password": [ + "Saisissez votre mot de passe supplémentaire" + ], + "Explore plans": [ + "Découvrir les offres" + ], "For ${ email }": [ "Pour ${ email }" ], @@ -6381,11 +6809,9 @@ "Less than a minute left": [ "Il reste moins d'une minute" ], - "Let ${ user } know it’s really you trying to regain access.": [ - "Faites savoir à ${ user } que c'est bien vous qui tentez de récupérer l'accès." - ], - "None": [ - "Aucun" + "Maximum of ${ limit } contact reached. To change, remove a contact and add a new one.": [ + "Limite de ${ limit } contact atteinte. Pour changer, supprimez un contact et ajoutez en un nouveau.", + "Limite de ${ limit } contacts atteinte. Pour changer, supprimez un contact et ajoutez en un nouveau." ], "Only ": [ "Seulement " @@ -6477,14 +6903,11 @@ "Select recovery contact ${ name }": [ "Sélectionner le contact de récupération ${ name }" ], - "Send email request": [ - "Envoyer une demande par e-mail" - ], "Send recovery request": [ "Envoyer la demande de récupération" ], - "Set account recovery": [ - "Définir la récupération du compte" + "Start recovery": [ + "Démarrer la récupération" ], "Stop being recovery contact": [ "Cesser d'être un contact de récupération" @@ -6504,9 +6927,15 @@ "They added me as trusted contact. I can access their account in case of an emergency.": [ "Ils m'ont ajouté en tant que contact approuvé. Je peux accéder à leur compte en cas d'urgence." ], + "They added you as trusted contact. You can access their account in case of an emergency.": [ + "Ils vous ont ajouté en tant que contact approuvé. Vous pouvez accéder à leur compte en cas d'urgence." + ], "They may ask to access my account in case of an emergency.": [ "Ils peuvent demander à accéder à mon compte en cas d'urgence." ], + "They may ask to access your account in case of an emergency.": [ + "Ils peuvent demander à accéder à votre compte en cas d'urgence." + ], "They will receive access automatically in **${ days } day**, on **${ formattedAccessibleAt }**, you can reject their request or give them access immediately at any time.": [ "Ils auront accès automatiquement dans **${ days } jour**, le **${ formattedAccessibleAt }**. Vous pouvez refuser leur demande ou leur donner accès immédiatement à tout moment.", "Ils recevront l'accès automatiquement dans **${ days } jours**, le **${ formattedAccessibleAt }**. Vous pouvez refuser leur demande ou leur donner accès immédiatement à tout moment." @@ -6523,6 +6952,9 @@ "Time required before automatically granting them access": [ "Temps d’attente avant de leur accorder automatiquement l’accès" ], + "To add recovery contacts, you must have a recovery email address or phone number.": [ + "Pour ajouter des contacts de récupération, vous devez avoir une adresse e-mail ou un numéro de téléphone de récupération." + ], "To disable this recovery method, remove all your recovery contacts.": [ "Pour désactiver cette méthode de récupération, retirez tous vos contacts de récupération." ], @@ -6532,6 +6964,9 @@ "Unable to recover data": [ "Impossible de récupérer les données" ], + "Unlock ${ PASS_APP_NAME }": [ + "Débloquer ${ PASS_APP_NAME }" + ], "Upgrade": [ "Changer d'abonnement" ], @@ -6553,6 +6988,9 @@ "We received a request to unlock the encrypted data of your contact **${ user }**.": [ "Nous avons reçu une demande de déverrouillage des données chiffrées de votre contact **${ user }**." ], + "We sent an email request to ${ user }. Let them know it's really you trying to regain access.": [ + "Nous avons envoyé une demande par e-mail à ${ user }. Faites savoir à votre contact qu'il s'agit bien de vous, et que vous essayez de récupérer vos accès." + ], "We were not able to verify the recovery data. Proceed anyway?": [ "Nous n'avons pas pu vérifier les données de récupération. Continuer quand même ?" ], @@ -6882,6 +7320,9 @@ "Invalid invitation link": [ "Le lien d'invitation n'est pas valide." ], + "Invalid joining link. Please contact your administrator.": [ + "Le lien d'invitation n'est pas valide. Veuillez contacter votre administrateur." + ], "Invalid name": [ "Le nom n'est pas valide." ], @@ -7058,9 +7499,6 @@ "Please try again in a few moments.": [ "Veuillez réessayer dans quelques instants." ], - "Please upgrade to a business plan with more than 1 user to get multi-user support": [ - "Nous vous invitons à passer à un abonnement entreprise, avec plus d'un utilisateur, pour bénéficier de la prise en charge de plusieurs utilisateurs." - ], "Please upgrade to a business plan with more than 1 user to manage multiple users.": [ "Nous vous invitons à passer à un abonnement entreprise avec plus d'un utilisateur pour gérer plusieurs utilisateurs." ], @@ -7203,6 +7641,9 @@ "There are too many folders in your external account. Please customize the import to delete some folders.": [ "Il y a trop de dossiers dans votre compte externe. Nous vous invitons à personnaliser l'importation pour supprimer certains dossiers." ], + "There was an error, please try again.": [ + "Une erreur s’est produite, veuillez réessayer." + ], "This field exceeds the maximum of ${ maximumLength } characters.": [ "Ce champ dépasse le maximum de ${ maximumLength } caractères." ], @@ -7485,6 +7926,9 @@ "Ask your administrator to enable Account monitor.": [ "Demandez à votre administrateur d'activer la surveillance du compte." ], + "Enable account monitor to start loading event.": [ + "Activez la surveillance de compte pour commencer à charger l'événement." + ], "Error: ${ errorMessage }": [ "Erreur : ${ errorMessage }" ], @@ -8000,12 +8444,27 @@ "${ MaxVPN } connexion VPN", "${ MaxVPN } connexions VPN" ], + "${ PROTON_SENTINEL_NAME } account protection": [ + "Protection de compte ${ PROTON_SENTINEL_NAME }" + ], + "10+ premium features": [ + "Plus de 10 fonctionnalités premium" + ], + "15 GB storage": [ + "15 Go de stockage" + ], "3 email domains": [ "3 domaines de messagerie" ], + "3 folders, labels and filters": [ + "3 dossiers, labels et filtres" + ], "500 GB storage": [ "500 Go d'espace de stockage" ], + "500 MB Mail storage": [ + "500 Mo d'espace de stockage d'e-mail" + ], "500 MB storage": [ "500 Mo d'espace de stockage" ], @@ -8026,6 +8485,12 @@ "Continue": [ "Continuer" ], + "Custom email domain": [ + "Domaine de messagerie personnalisé" + ], + "Email addresses": [ + "Adresses e-mail" + ], "Encrypted cloud storage for files, photos and documents": [ "Stockage cloud chiffré pour vos fichiers, photos et documents" ], @@ -8035,6 +8500,12 @@ "More premium features": [ " Fonctionnalités premium en plus" ], + "Premium features in Mail, Calendar, Drive, Pass and VPN": [ + "Fonctionnalités premium dans Mail, Calendar, Drive, Pass et VPN" + ], + "Priority support": [ + "Support prioritaire" + ], "Remove": [ "Retirer" ], @@ -8050,11 +8521,20 @@ "Short domain @pm.me": [ "Domaine court @pm.me" ], + "Storage": [ + "Espace de stockage" + ], "Torrenting support (P2P)": [ "Prise en charge des torrents (P2P)" ], + "Unlimited folders, labels and filters": [ + "Nombre illimité de dossiers, de labels et de filtres" + ], "Unlimited hide-my-email aliases": [ "Nombre illimité d'alias « hide-my-email »" + ], + "Use your own email domain": [ + "Utilisez votre propre domaine de messagerie" ] }, "Features": { @@ -8409,8 +8889,11 @@ ] }, "Force upgrade safety review": { - "I understand that I will no longer be able to sign in to older versions of ${ BRAND_NAME } mobile apps.": [ + "I understand that I will no longer be able to sign in to older versions of ${ BRAND_NAME } apps.": [ "Je comprends que je ne pourrai plus me connecter sur des anciennes versions des applications mobiles ${ BRAND_NAME }." + ], + "Learn more": [ + "En savoir plus" ] }, "Form heading": { @@ -8511,6 +8994,9 @@ ], "Group address:": [ "Adresse du groupe :" + ], + "Roles and permission:": [ + "Rôles et permissions :" ] }, "Group member count": { @@ -8570,6 +9056,14 @@ "Membres du groupe" ] }, + "group_modal": { + "General": [ + "Général" + ], + "Roles and permissions": [ + "Rôles et permissions" + ] + }, "Header": { "Access": [ "Accès" @@ -9193,7 +9687,7 @@ "Si elle est réactivée, la clé sera utilisée pour le déchiffrement" ], "If reactivated, the key will be used for decryption and verification": [ - "Si elle est réactivée, la clé sera utilisée pour le décryptage et la vérification" + "Si elle est réactivée, la clé sera utilisée pour le déchiffrement et la vérification" ] }, "Info": { @@ -9210,8 +9704,14 @@ "${ boldWarning } You will lose access to all current encrypted data in your account if you continue.": [ "${ boldWarning } si vous continuez, vous perdrez l'accès à toutes les données actuellement chiffrées de votre compte." ], - "${ BRAND_NAME } is independently funded and operates without advertising.
Below are examples of how this independence has been used in practice.": [ - "${ BRAND_NAME } est financé de manière indépendante et opère sans publicité.\nCi-dessous se trouvent des exemples pratique de l'utilisation de cette indépendance." + "${ BRAND_NAME } Business plans gives your team all the collaboration tools they need to be productive and organized in their work, while safeguarding your business.": [ + "Les abonnements ${ BRAND_NAME } Business offrent à votre équipe tous les outils dont elle a besoin pour être productive et organisée dans son travail, tout en protégeant votre entreprise." + ], + "${ BRAND_NAME } Free": [ + "${ BRAND_NAME } Free" + ], + "${ BRAND_NAME } is independently funded and operates without advertising. Below are examples of how this independence has been used in practice.": [ + "${ BRAND_NAME } est financé de manière indépendante et opère sans publicité. Ci-dessous se trouvent des exemples pratiques de l'utilisation de cette indépendance." ], "${ BRAND_NAME } is privacy you can trust, ensured by strong encryption, open-source code, and Swiss privacy laws. We believe nobody should be able to exploit your data, period. Our technology and business are based upon this fundamentally stronger definition of privacy.": [ "Vous pouvez faire confiance à ${ BRAND_NAME } pour protéger votre vie privée, grâce à un chiffrement fort, un code open source et la législation suisse en matière de protection des données. Nous pensons que personne ne devrait pouvoir exploiter vos données. Notre technologie et notre activité reposent sur cette définition fondamentalement plus forte de la protection de la vie privée" @@ -9225,6 +9725,9 @@ "${ BRAND_NAME } will send a verification code to ${ phoneNumber }. Standard message rates may apply.": [ "${ BRAND_NAME } enverra un code de vérification au ${ phoneNumber }. Les tarifs habituels des SMS peuvent s'appliquer." ], + "${ BRAND_NAME } will send a verification code to your recovery phone. Standard message rates may apply.": [ + "${ BRAND_NAME } enverra un code de vérification à votre téléphone de récupération. Des frais sur les SMS peuvent s'appliquer." + ], "${ BRAND_NAME }'s encryption technology means that nobody can access your password - not even us.": [ "Avec la technologie de chiffrement de ${ BRAND_NAME }, personne ne peut accéder à votre mot de passe, pas même nous." ], @@ -9313,6 +9816,9 @@ "${ name } for Windows": [ "${ name } pour Windows" ], + "${ name } is not available": [ + "${ name } n'est pas disponible." + ], "${ none }: do not quarantine or reject unauthorized emails. Usually, people only use this policy to troubleshoot or test.": [ "${ none } : ne met pas en quarantaine ou ne rejette pas les messages non autorisés. Cette règle est généralement utilisée à des fins de dépannage ou de test." ], @@ -9434,6 +9940,9 @@ "${ vaultLink } updated": [ "${ vaultLink } a été mis à jour." ], + "${ VPN_SHORT_APP_NAME } hides your traffic. ${ PASS_SHORT_APP_NAME } hides your identity\n— unlimited **hide-my-email aliases** and **dark-web alerts** if your data is ever leaked.": [ + "${ VPN_SHORT_APP_NAME } cache votre trafic. ${ PASS_SHORT_APP_NAME } cache votre identité : alias de messagerie **hide-my-email** illimités et **alertes dark web** en cas de fuite de vos données." + ], "${ vpnPlus } required for Country level connection.": [ "${ vpnPlus } est nécessaire pour une connexion au niveau d'un pays." ], @@ -9471,6 +9980,9 @@ "(formerly Twitter)": [ "(anciennement Twitter)" ], + "**${ appName }** is not available for your account.": [ + "**${ appName }** n'est pas disponible pour votre compte." + ], "**${ appName }** is not supported in your organization **${ organizationName }**.": [ "**${ appName }** n'est pas pris en charge dans votre organisation **${ organizationName }**." ], @@ -9513,9 +10025,15 @@ "**This will disable end-to-end encrypted email forwardings:** you can set them up again later.": [ "**Ceci va désactiver les transferts de messages chiffrés de bout en bout** : vous pourrez les configurer à nouveau plus tard." ], + "**Your recovery email alone doesn't allow you to recover your encrypted data** after you reset your password.": [ + "**Votre e-mail de récupération seul ne vous permet pas de récupérer vos données chiffrées** après la réinitialisation de votre mot de passe." + ], "**Your recovery methods will be invalidated:** you can generate new recovery data later.": [ "**Vos méthodes de récupération seront invalidées :** vous pourrez générer de nouvelles données de récupération ultérieurement." ], + "**Your recovery phone alone doesn’t allow you to recover your encrypted data** after you reset your password.": [ + "**Votre téléphone de récupération seul ne vous permet pas de récupérer vos données chiffrées** après la réinitialisation de votre mot de passe." + ], "+ ${ invisibleCount } More": [ "${ invisibleCount } de plus", "${ invisibleCount } de plus" @@ -9581,15 +10099,27 @@ "Activity Monitor": [ "Surveillance des activités" ], + "Add ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }": [ + "Ajouter ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }" + ], "Add ${ PLAN_NAMES[PLANS.MEET_BUSINESS] }": [ "Ajouter ${ PLAN_NAMES[PLANS.MEET_BUSINESS] }" ], + "Add 1 to 5 people who you trust and can contact easily. They will be able to reset your password for you by signing in to your account. They must already have a ${ BRAND_NAME } Account.": [ + "Ajoutez 1 à 5 personnes en lesquelles vous avez confiance et que vous pouvez contacter facilement. Elles pourront réinitialiser votre mot de passe pour vous en se connecter à votre compte. Elles doivent déjà avoir un compte ${ BRAND_NAME }." + ], "Add a @pm.me email address to your account. This simple, shorter domain stands for \"${ MAIL_APP_NAME } me\" or \"Private Message me.\"": [ "Ajoutez une adresse e-mail @pm.me à votre compte. Ce domaine simple et court signifie « ${ MAIL_APP_NAME } me » ou « Private Message me » (envoyez-moi un message privé)." ], + "Add a phone number in case we need to contact you": [ + "Ajoutez un numéro de téléphone au cas où nous aurions besoin de vous contacter" + ], "add a recovery method": [ "ajouter une méthode de récupération" ], + "Add an email address in case we need to contact you": [ + "Ajoutez une adresse e-mail au cas où nous aurions besoin de vous contacter" + ], "Add another layer of security to your account. You’ll need to verify yourself with 2FA every time you sign in.": [ "Ajoutez une sécurité supplémentaire à votre compte avec une A2F chaque fois que vous vous connecterez." ], @@ -9618,9 +10148,9 @@ "Add your name and logo to create a more personalized experience for your organization.": [ "Ajoutez votre nom et votre logo pour créer une expérience plus personnalisée pour votre organisation." ], - "Adding ${ addedServerCount } gateway server": [ - "Ajout de ${ addedServerCount } serveur de passerelle", - "Ajout de ${ addedServerCount } serveurs de passerelle" + "Adding ${ total } gateway server": [ + "Ajout de ${ total } serveur de passerelle", + "Ajout de ${ total } serveurs de passerelle" ], "Adding an external email address will disable end-to-end encryption for all email communication within that group. Do you want to proceed?": [ "L'ajout d'une adresse e-mail externe désactivera le chiffrement de bout en bout pour toutes les communications par e-mail au sein de ce groupe. Voulez-vous continuer ?" @@ -9690,6 +10220,12 @@ "Allow users to connect to secure shared servers from the **Countries** section of the ${ VPN_APP_NAME } app.": [ "Autorisez les utilisateurs à se connecter à des serveurs partagés sécurisés depuis la section **Pays** de l'application ${ VPN_APP_NAME }." ], + "Allowing QR code sign-in will let you sign in by scanning a QR code if you forget your password. All you need is to be signed in to a ${ BRAND_NAME } service on another device.": [ + "Autoriser la connexion par QR code vous permettra de vous connecter en scannant un QR code si vous oubliez votre mot de passe. Il vous suffira d'être connecté à un service ${ BRAND_NAME } sur un autre appareil." + ], + "Allowing the password reset from the settings lets you to change your password if you’ve lost it, but are still signed in to ${ BRAND_NAME }.": [ + "Autoriser la réinitialisation de mot de passe depuis les paramètres vous permet de changer votre mot de passe si vous l'avez perdu, mais seulement si vous êtes encore connecté sur ${ BRAND_NAME }." + ], "Already allocated": [ "Déjà alloué" ], @@ -9795,6 +10331,9 @@ "Are you sure you want to revoke certificate **${ name }**": [ "Voulez-vous vraiment révoquer le certificat **${ name }**" ], + "Are you sure you want to sign out of this account?": [ + "Voulez-vous vraiment vous déconnecter de ce compte ?" + ], "Are you sure you want to sort your folders alphabetically?": [ "Voulez-vous vraiment trier vos dossiers par ordre alphabétique ?" ], @@ -9891,9 +10430,15 @@ "Before you can start sending and receiving emails from your new addresses you need to create encryption keys for them.": [ "Avant de pouvoir envoyer et recevoir des messages avec vos nouvelles adresses, vous devez leur créer des clés de chiffrement." ], + "BEST FOR TV": [ + "LE MEILLEUR SUR TV" + ], "Beta": [ "Version bêta" ], + "Billed at ${ monthlyDiscountedPrice } for the first 6 months, renews at ${ monthlyRenewalPrice }.": [ + "Facturé ${ monthlyDiscountedPrice } les 6 premiers mois, puis ${ monthlyRenewalPrice }" + ], "Billed at ${ yearlyDiscountedPrice } for the first 12 months, renews at ${ yearlyRenewalPrice }.": [ "Facturé ${ yearlyDiscountedPrice } les 12 premiers mois, puis ${ yearlyRenewalPrice }" ], @@ -9906,6 +10451,9 @@ "Boost your organization’s brand identity and create a more consistent online experience for your users.": [ "Mettez en avant l'image de marque de votre organisation et créez une expérience en ligne plus cohérente pour vos utilisateurs." ], + "By adding people you trust as recovery contacts, we'll be able to send them an email to help you if you're having trouble recovering your data after a password reset. You can also be a recovery contact for others.": [ + "En ajoutant des personnes de confiance comme contacts de récupération, nous pourrons leur envoyer un e-mail afin qu'elles vous aident si vous rencontrez des difficultés pour récupérer vos données après une réinitialisation de mot de passe. Vous pouvez également être un contact de récupération pour d'autres personnes." + ], "By creating a ${ PASS_APP_NAME } account with your SimpleLogin email, you can manage your aliases directly from ${ PASS_APP_NAME }.": [ "En créant un compte ${ PASS_APP_NAME } avec votre e-mail SimpleLogin, vous pouvez gérer vos alias directement depuis ${ PASS_APP_NAME }." ], @@ -9948,9 +10496,6 @@ "Change your password": [ "Modifier votre mot de passe" ], - "Check the status of imports and forwarding.": [ - "Vérifier le statut des importations et des transferts." - ], "Check your network and try again.": [ "Vérifiez votre connexion réseau et réessayez." ], @@ -9984,6 +10529,9 @@ "CNET editors choice award with a rating of 8.4 out of 10": [ "Prix Editors' Choice de CNET avec une note de 8,4 sur 10" ], + "Code has been re-sent.": [ + "Le code a été envoyé à nouveau." + ], "Coming soon": [ "Bientôt disponible" ], @@ -9999,6 +10547,9 @@ "Configure SAML authentication for your organization through an identity provider like Okta, Microsoft Azure, or Google Identity Platform. This will enable SAML for the whole organization.": [ "Configurez l'authentification SAML pour votre organisation, via un fournisseur d'identité comme Okta, Microsoft Azure ou Google Identity Platform. Cela activera SAML pour l'ensemble de l'organisation." ], + "Connect and manage your external mailboxes in ${ MAIL_APP_NAME }.": [ + "Connectez et gérez vos messageries externes dans ${ MAIL_APP_NAME }" + ], "Connection data will be available in around 1 hour.": [ "Les données de connexion seront disponibles dans environ 1 heure." ], @@ -10017,6 +10568,9 @@ "Continue to connect this entity with your ${ BRAND_NAME } organization.": [ "Poursuivez la connexion entre l'entité et votre organisation ${ BRAND_NAME }." ], + "Continue with ${ BRAND_NAME } Free": [ + "Continuer avec ${ BRAND_NAME } Free" + ], "Continuing will connect your ${ BRAND_NAME } Account to ${ name }.": [ "En continuant, vous connecterez votre compte ${ BRAND_NAME } à ${ name }." ], @@ -10057,9 +10611,9 @@ "Create a new code on your TV and try again.": [ "Créez un nouveau code sur votre TV et réessayez." ], - "Create a secure cloud for ${ value } member": [ - "Créer un cloud sécurisé pour ${ value } membre", - "Créer un cloud sécurisé pour ${ value } membres" + "Create a secure cloud for ${ memberCount } member": [ + "Créer un cloud sécurisé pour ${ memberCount } membre", + "Créer un cloud sécurisé pour ${ memberCount } membres" ], "Create an account": [ "Créer un compte" @@ -10077,6 +10631,10 @@ "Création d'un serveur de passerelle : ${ serverNumber } sur ${ total }", "Création de serveurs de passerelle : ${ serverNumber } sur ${ total }" ], + "Creating gateway with ${ total } server": [ + "Création d'une passerelle avec ${ total } serveur en cours", + "Création d'une passerelle avec ${ total } serveurs en cours" + ], "Creating your account": [ "Création de votre compte" ], @@ -10125,6 +10683,9 @@ "Data recoverable with recovery phrase": [ "Données récupérables avec une phrase de récupération" ], + "Data recovery requires a password reset option (email or SMS)": [ + "La récupération des données nécessite une option de réinitialisation du mot de passe (e-mail ou SMS)." + ], "dedicated servers": [ "serveurs dédiés" ], @@ -10171,6 +10732,9 @@ "Disabling authenticator app 2FA will make your account less secure. Only proceed if absolutely necessary.": [ "La désactivation de votre application d'authentification A2F rendra votre compte moins sécurisé. Ne procédez que si c'est absolument nécessaire." ], + "Disabling the data backup on this device will prevent you from automatically unlocking your encrypted data after a password reset.": [ + "Désactiver la sauvegarde des données sur cet appareil vous empêchera de déverrouiller automatiquement vos données chiffrées après une réinitialisation de mot de passe." + ], "Discount": [ "Réduction" ], @@ -10331,6 +10895,9 @@ "Enabling recovery by phrase again will generate a new recovery phrase.": [ "Réactiver la récupération par phrase générera une nouvelle phrase de récupération." ], + "Enabling the data backup on this device will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset, simply by signing in on this device.": [ + "Activer la sauvegarde des données sur cet appareil vous permettra de récupérer l'accès à vos e-mails, contacts, fichiers, mots de passe et à toutes les autres données chiffrées de votre compte après une réinitialisation de mot de passe, simplement en vous connectant sur cet appareil." + ], "Encryption setting updated": [ "Le paramètre de chiffrement a été mis à jour." ], @@ -10502,12 +11069,12 @@ "For easy access to your passwords and more.": [ "Pour un accès facile à vos mots de passe et à d'autres informations sensibles." ], + "For just ${ bundlePlanPriceInline }": [ + "Pour seulement ${ bundlePlanPriceInline }" + ], "For users who are switching to ${ MAIL_APP_NAME } from another email service, select the ${ boldAddresses } tab and add all active email addresses before changing the MX record to ensure a smooth transition.": [ "Pour les utilisateurs qui passent d'un autre service de messagerie à ${ MAIL_APP_NAME }, sélectionnez l'onglet ${ boldAddresses } et ajoutez toutes les adresses de messagerie actives avant de modifier l'enregistrement MX pour assurer une transition fluide." ], - "Forwarding automatically sends new incoming emails to your Inbox.": [ - "Le transfert envoie automatiquement les nouveaux messages entrants dans votre boite de réception." - ], "Free forever": [ "Gratuit pour toujours" ], @@ -10535,6 +11102,9 @@ "Gateways": [ "Passerelles" ], + "Generating a new recovery phrase will deactivate your current recovery phrase.": [ + "La génération d’une nouvelle phrase de récupération désactivera votre phrase actuelle." + ], "Generating a new recovery phrase will deactivate your old one.": [ "La génération d’une nouvelle phrase de récupération désactivera l’ancienne." ], @@ -10556,12 +11126,18 @@ "Get notified if your password or other personal data was leaked. ${ learnMoreLinkNoBreach }": [ "Recevez une notification lorsque votre mot de passe ou d'autres données personnelles ont été exposées. ${ learnMoreLinkNoBreach }" ], + "Get started": [ + "Commencez" + ], "Get started with the referral link above.": [ "Commencez par le lien de parrainage ci-dessus." ], "Get visibility into account access": [ "Obtenez une visibilité sur l'accès au compte" ], + "Get VPN Plus": [ + "Obtenir VPN Plus" + ], "Give the token a descriptive name, such as the service you plan to use it with, and select one of your active custom domain addresses. Only this address will be able to send emails with this token.": [ "Donnez un nom descriptif au jeton, comme le service avec lequel vous prévoyez de l'utiliser, et sélectionnez une de vos adresses de domaine personnalisées actives. Seule cette adresse pourra envoyer des messages avec ce jeton." ], @@ -10619,6 +11195,12 @@ "If another administrator changed this password, you will need to ask them for the new Organization Password.": [ "Si un autre administrateur a modifié ce mot de passe, vous devrez lui demander le nouveau mot de passe de l'organisation." ], + "If disabled, ${ BRAND_NAME } will still use your recovery email to send security notifications.": [ + "Si elle est désactivée, ${ BRAND_NAME } utilisera tout de même votre e-mail de récupération pour vous envoyer des notifications de sécurité." + ], + "If disabled, ${ BRAND_NAME } will still use your recovery phone to send security notifications.": [ + "Si elle est désactivée, ${ BRAND_NAME } utilisera tout de même votre numéro de récupération pour vous envoyer des notifications de sécurité." + ], "If disabled, only administrators will be able to export data.": [ "En cas de désactivation, seuls les administrateurs pourront exporter des données." ], @@ -10697,6 +11279,9 @@ "If you purchased a gift code or received one from our support team, you can enter it here.": [ "Si vous avez acheté un code-cadeau ou si vous en avez reçu un de notre équipe support, vous pouvez le saisir ici." ], + "If you recently reset your password, you can ${ recoveryMethodLink } to unlock your data. If this is due to an old password reset, you can stop the message from showing again.": [ + "Si vous avez récemment réinitialisé votre mot de passe, vous pouvez ${ recoveryMethodLink } pour déverrouiller vos données. Si cela est dû à une ancienne réinitialisation de mot de passe, vous pouvez empêcher le message d'apparaître." + ], "If you recently reset your password, you can use a data recovery method to unlock your data": [ "Si vous avez récemment réinitialisé votre mot de passe, vous pouvez utiliser une méthode de récupération de données pour déverrouiller vos données." ], @@ -10759,6 +11344,9 @@ "Include device, location, and IP details": [ "Inclure les informations sur l'appareil, l'emplacement et l'adresse IP" ], + "Included": [ + "Inclus" + ], "Increase your account security by verifying your email address.": [ "Renforcez la sécurité de votre compte en vérifiant votre adresse e-mail." ], @@ -10892,6 +11480,12 @@ "Item updated in vault": [ "L'élément dans le coffre-fort a été mis à jour." ], + "It’s often the easiest way to recover your account if you’re signed in.": [ + "Il s'agit généralement de la manière la plus simple de récupérer votre compte si vous êtes connecté." + ], + "It’s the only way to instantly recover everything, so make sure you keep it somewhere safe but accessible.": [ + "C'est le seul moyen de tout récupérer instantanément, veillez à le conserver dans un endroit sûr mais accessible." + ], "JCB logo": [ "Logo JCB" ], @@ -11099,15 +11693,15 @@ "No card required": [ "Aucune carte requise" ], + "No connected addresses.": [ + "Aucune adresse n'est connectée." + ], "No countries enabled": [ "Aucun pays activé" ], "No folder selected": [ "Aucun dossier n'est sélectionné." ], - "No forwarding history.": [ - "Aucun historique de transfert." - ], "No gateways": [ "Aucune passerelle" ], @@ -11169,7 +11763,10 @@ "Une fois votre mot de passe réinitialisé :" ], "Only change these settings if you are using PGP with non-${ BRAND_NAME } recipients.": [ - "Modifier ces paramètres seulement si vous utilisez l'encryptage PGP avec des destinataires extérieurs à ${ BRAND_NAME }." + "Modifier ces paramètres seulement si vous utilisez le chiffrement PGP avec des destinataires extérieurs à ${ BRAND_NAME }." + ], + "Only sign in on devices you trust": [ + "Connectez-vous uniquement depuis des appareils de confiance" ], "Only you can see the label": [ "Vous seul pouvez voir le label." @@ -11436,9 +12033,18 @@ "Recently used servers:": [ "Serveurs récemment utilisés :" ], + "RECOMMENDED": [ + "RECOMMANDÉ" + ], "Recommended on trusted devices. ${ keepMeSignedInLearnMoreLink }": [ "Recommandé sur les appareils de confiance. ${ keepMeSignedInLearnMoreLink }" ], + "Recovery by email is not available while ${ PROTON_SENTINEL_NAME } is enabled.": [ + "La récupération par e-mail n'est pas disponible tant que ${ PROTON_SENTINEL_NAME } est activé." + ], + "Recovery by phone is not available while ${ PROTON_SENTINEL_NAME } is enabled.": [ + "La récupération par téléphone n'est pas disponible tant que ${ PROTON_SENTINEL_NAME } est activé." + ], "Recovery file downloaded": [ "Le fichier de récupération a été téléchargé." ], @@ -11592,6 +12198,9 @@ "Set up your organization": [ "Configurez votre organisation" ], + "Set up your organization and start protecting your data in a few easy steps.": [ + "Configurez votre organisation et commencez à protéger vos données en quelques étapes faciles." + ], "Setting successfully saved": [ "Paramètre enregistré avec succès" ], @@ -11629,6 +12238,12 @@ "Show each sender's image in the message list. The sender's initials will be shown if a photo is not available.": [ "Affichez l'image de chaque expéditeur dans la liste des messages. Si aucune photo n'est disponible, les initiales de l'expéditeur seront affichées." ], + "Show fewer benefits": [ + "Afficher moins d'avantages" + ], + "Show more benefits": [ + "Afficher plus d'avantages" + ], "Show original message": [ "Afficher le message d'origine" ], @@ -11674,9 +12289,6 @@ "Something went wrong. Please try again or contact customer support.": [ "Quelque chose n'a pas fonctionné. Veuillez réessayer ou contacter le service clients." ], - "Something went wrong. Please try again.": [ - "Une erreur s'est produite. Nous vous invitons à réessayer." - ], "Specify the domain which is allowed to authenticate with SAML SSO.": [ "Indiquez le domaine autorisant l'authentification unique (SSO) SAML." ], @@ -11766,6 +12378,9 @@ "TechRadar Pro recommended with a rating of 4.2 out of 5 stars": [ "Recommandé par TechRadar Pro avec une note de 4,2 sur 5 étoiles" ], + "Temporarily unavailable due to high demand. Please try again later.": [ + "Temporairement indisponible à cause d'une forte demande. Veuillez réessayer ultérieurement." + ], "Temporarily unavailable. Please check back later.": [ "Temporairement indisponible. Nous vous invitons à vérifier plus tard." ], @@ -11898,6 +12513,9 @@ "This could take some time. Please do not close this page or disconnect from the internet.": [ "Cela peut prendre un moment. Ne fermez pas cette page et ne vous déconnectez pas d'internet." ], + "This data recovery method requires a password reset option (email or SMS)": [ + "Cette méthode de récupération des données nécessite une option de réinitialisation du mot de passe (e-mail ou SMS)." + ], "This feature delays sending your emails, giving you the opportunity to undo send during the selected time frame.": [ "Cette fonctionnalité retarde l'envoi de vos messages, vous donnant la possibilité d'annuler l'envoi dans un délai imparti." ], @@ -11958,6 +12576,9 @@ "This verification can take up to one hour. After successful verification, do not remove the TXT record as it is needed to confirm that you continue to own the domain.": [ "Cette vérification peut prendre jusqu'à une heure. Après une vérification réussie, ne supprimez pas l'enregistrement TXT car il est nécessaire pour confirmer que vous possédez toujours le domaine." ], + "This will allow the TV to access your ${ BRAND_NAME } account.": [ + "Cela permettra au téléviseur d'accéder à votre compte ${ BRAND_NAME }." + ], "This will delete all previous versions of your files older than ${ rententionLabel }.": [ "Cela supprimera toutes les versions précédentes de vos fichiers datant de plus de ${ rententionLabel }." ], @@ -11979,6 +12600,9 @@ "This will enable PayPal to be used to pay for your ${ BRAND_NAME } subscription. We will redirect you to PayPal in a new browser tab. If you use any pop-up blockers, please disable them to continue.": [ "Ceci vous permettra d'utiliser PayPal pour payer votre abonnement ${ BRAND_NAME }. Nous vous redirigerons vers PayPal dans un nouvel onglet du navigateur. Si vous utilisez des bloqueurs de pop-up, veuillez les désactiver pour continuer." ], + "This will let you quickly and safely access your ${ BRAND_NAME } Account so you can change you password.": [ + "Ceci vous permettra d'accéder rapidement et de manière sécurisée à votre compte ${ BRAND_NAME } afin que vous puissiez modifier votre mot de passe." + ], "This will permanently delete the data and all email addresses associated with these users.": [ "Ceci supprimera définitivement les données et toutes les adresses électroniques associées à ces utilisateurs." ], @@ -12051,15 +12675,21 @@ "To decrypt and view your locked data after a password reset, select a recovery method.": [ "Pour déchiffrer et afficher vos données verrouillées après une réinitialisation du mot de passe, sélectionnez une méthode de récupération." ], + "To enable post-quantum protection, you’ll need to finish generating your new post-quantum encryption keys.": [ + "Pour activer la protection post-quantique, vous devez terminer la génération de vos nouvelles clés de chiffrement post-quantiques." + ], + "To ensure the highest possible security of your account, disable **Recovery by recovery email**.": [ + "Pour garantir la sécurité maximale de votre compte, désactivez la **Récupération par e-mail**." + ], + "To ensure the highest possible security of your account, disable **Recovery by recovery phone**.": [ + "Pour garantir la sécurité maximale de votre compte, désactivez la **Récupération par numéro de téléphone**." + ], "To ensure you don’t lose important data, ${ DRIVE_APP_NAME } saves older versions of your files as you and your collaborators make changes. Select how long ${ BRAND_NAME } should keep previous versions.": [ "Pour vous éviter de perdre des données importantes, ${ DRIVE_APP_NAME } enregistre les versions précédentes de vos fichiers au fur et à mesure que vous et vos collaborateurs les modifiez. Sélectionnez la durée pendant laquelle ${ BRAND_NAME } doit conserver les versions précédentes." ], "To fight spam and abuse, please verify you are human.": [ "Pour lutter contre les messages indésirables/spam et les abus, nous vous invitons à prouver que vous n'êtes pas un robot." ], - "To help keep your account safe, we want to make sure it's really you trying to sign in.": [ - "Pour aider à sécuriser votre compte, nous voulons nous assurer que c'est bien vous qui tentez de vous connecter." - ], "To help keep your account safe, we want to make sure it’s really you trying to sign in.": [ "Pour aider à sécuriser votre compte, nous voulons nous assurer que c'est bien vous qui tentez de vous connecter." ], @@ -12153,6 +12783,9 @@ "Unless you sign out of your account or change your password, your session will remain active. Sessions expire after 60 days of inactivity.": [ "Si vous ne vous déconnectez pas de votre compte ou ne changez pas votre mot de passe, votre session restera active. Les sessions expirent après 60 jours d'inactivité." ], + "Unlock streaming with VPN Plus.": [ + "Débloquez le streaming avec VPN Plus." + ], "Unsaved changes": [ "Les modifications ne sont pas enregistrées." ], @@ -12168,9 +12801,15 @@ "Unverified email address.": [ "L'adresse e-mail n'a pas été vérifiée." ], + "Upgrade anytime to bring over the rest": [ + "Changer d'abonnement à tout moment pour transférer le reste" + ], "Upgrade now to get premium features, products and storage at a special price": [ "Passez à la version supérieure pour profiter de fonctionnalités, de produits et d'espace de stockage premium à un tarif avantageux." ], + "Upgrade or clear space anytime to bring over the rest": [ + "Changer d'abonnement ou libérer de l'espace à tout moment pour transférer le reste" + ], "Upgrade to add a shorter @pm.me address to your account that is easier to share. It stands for “${ MAIL_APP_NAME } me” or “Private Message me”.": [ "Changez d'abonnement pour ajouter une adresse plus courte @pm.me à votre compte, plus facile à partager et qui signifie « ${ MAIL_APP_NAME } me » ou « Private Message me » (envoyez-moi un message privé)." ], @@ -12300,6 +12939,9 @@ "Visa Secure logo": [ "Logo Visa Secure" ], + "VPN Plus": [ + "VPN Plus" + ], "VPN with dedicated servers and IP addresses": [ "VPN avec adresses IP et serveurs dédiés" ], @@ -12315,6 +12957,12 @@ "We advise you to use official ${ VPN_APP_NAME } applications when possible.": [ "Nous vous conseillons d'utiliser les applications officielles ${ VPN_APP_NAME } lorsque c'est possible." ], + "We can use your recovery email to send you a verification code to reset your password, and to contact you if we notice suspicious activity.": [ + "Nous pouvons utiliser votre adresse e-mail de récupération pour vous envoyer un code de vérification afin de réinitialiser votre mot de passe, et de vous contacter si nous remarquons une activité suspecte." + ], + "We can use your recovery phone to send you a verification code to reset your password, and to contact you if we notice suspicious activity.": [ + "Nous pouvons utiliser votre téléphone de récupération pour vous envoyer un code de vérification afin de réinitialiser votre mot de passe, et de vous contacter si nous remarquons une activité suspecte." + ], "We couldn't complete the transaction. Please try again.": [ "La transaction n'a pas pu être complétée. Veuillez réessayer." ], @@ -12360,6 +13008,9 @@ "We stored a backup file in this browser because you allowed data recovery on this ${ deviceLink }. If the backup file is valid, you will immediately regain complete or partial access to your encrypted data.": [ "Nous avons stocké un fichier de sauvegarde dans ce navigateur parce que vous avez autorisé la récupération des données sur cet ${ deviceLink }. Si le fichier de sauvegarde est valide, vous retrouverez immédiatement un accès total ou partiel à vos données chiffrées." ], + "We strongly recommend that everyone enable recovery by recovery phrase.": [ + "Nous recommandons fortement que tout le monde active la récupération par phrase de récupération." + ], "We use 3-D Secure to protect your payments": [ "Nous utilisons 3-D Secure pour protéger vos paiements." ], @@ -12544,9 +13195,6 @@ "You can edit this once to ensure the correct email address for verification.": [ "Vous pouvez modifier ceci une fois pour vous assurer que l'adresse e-mail utilisée pour la vérification est correcte." ], - "You can enable the Photos section from the interface using the toggle below.": [ - "Vous pouvez activer la section Photos depuis l'interface en utilisant le commutateur ci-dessous." - ], "You can enforce the password rules members of your organization will use when they create or reset the password to their ${ BRAND_NAME } Account.": [ "Vous pouvez appliquer les règles de mot de passe que les membres de votre organisation utiliseront lorsqu’ils créeront ou réinitialiseront le mot de passe de leur compte ${ BRAND_NAME }." ], @@ -12607,6 +13255,9 @@ "You don't have any referrals.": [ "Vous n'avez aucun parrainage." ], + "You don’t need to open or read the file—just download it and store it somewhere safe.": [ + "Vous n'avez pas besoin d'ouvrir ou de lire le fichier. Téléchargez-le et stockez-le à un endroit sécurisé." + ], "You get notified if your password or other data was leaked from a third-party service.": [ "Vous recevrez une notification lorsque votre mot de passe ou d'autres données ont été exposées par un service tiers." ], @@ -12746,6 +13397,9 @@ "Your ${ plan } subscription will be replaced with ${ PASS_SHORT_APP_NAME } Lifetime. The remaining balance of your subscription will be added to your account. ${ PASS_SHORT_APP_NAME } lifetime deal has no renewal price, it's a one-time payment for lifetime access to ${ PASS_SHORT_APP_NAME }.": [ "Votre abonnement ${ plan } sera remplacé par l'abonnement ${ PASS_SHORT_APP_NAME } Lifetime. Le solde restant sera ajouté à votre compte. L'abonnement ${ PASS_SHORT_APP_NAME } Lifetime n'a pas de prix de renouvellement : il s'agit d'un paiement unique pour un accès à vie à ${ PASS_SHORT_APP_NAME }." ], + "Your ${ planDisplayName } plan doesn’t just keep your business data and communications safe. It supports your compliance objectives, makes your business stand out, and keeps your team connected.": [ + "Votre abonnement ${ planDisplayName } ne se contente pas de protéger les données et les communications de vos activités. Il soutient vos objectifs de conformité, permet à votre entreprise de se détacher du lot et permet à votre équipe de rester connectée." + ], "Your ${ VPN_APP_NAME } and ${ MAIL_APP_NAME } accounts are linked. To delete them both, please sign in at ${ loginLink } and delete your account there.": [ "Vos comptes ${ VPN_APP_NAME } et ${ MAIL_APP_NAME } sont liés. Pour les supprimer tous les deux, nous vous invitons à vous connecter à ${ loginLink } et à y supprimer votre compte." ], @@ -12821,12 +13475,18 @@ "Your recent changes have been published. They will be visible to users in the next few hours.": [ "Vos modifications récentes ont été publiées. Elles seront visibles par les utilisateurs dans les prochaines heures." ], + "Your recovery file will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset.": [ + "Votre fichier de récupération vous permettra de restaurer vos accès aux messages, contacts, fichiers, mots de passe, et toute autre données chiffrées de votre compte après une réinitialisation de mot de passe." + ], "Your recovery phrase": [ "Votre phrase de récupération" ], "Your recovery phrase is a series of 12 randomly generated words in a specific order.": [ "Votre phrase de récupération est une série de 12 mots générés aléatoirement dans un ordre spécifique." ], + "Your recovery phrase will allow you to sign in and recover your data if you get locked out of your ${ BRAND_NAME } Account. It is composed of 12 words and acts like a backup password.": [ + "Votre phrase de récupération vous permettra de vous connecter et de récupérer vos données si vous ne parvenez plus à déverrouiller votre compte ${ BRAND_NAME }. Elle est composée de 12 mots et agis comme un mot de passe de secours." + ], "Your scheduled plan starts on ${ renewalTime } and will auto-renew every ${ cycle } month.": [ "Votre abonnement programmé commence le ${ renewalTime } et se renouvellera automatiquement tous les ${ cycle } mois.", "Votre abonnement programmé commence le ${ renewalTime } et se renouvellera automatiquement tous les ${ cycle } mois." @@ -13096,7 +13756,7 @@ "Ceci générera une nouvelle clé pouvant être utilisée pour chiffrer de futures informations de contact, clés de chiffrements d'email, et autres données." ], "This will generate a new key, which will be used to encrypt future emails and other data, for **${ emailAddress }**.": [ - "Cela générera une nouvelle clé, qui sera utilisée pour crypter les futurs courriels et autres données pour **${ emailAddress }**." + "Cela générera une nouvelle clé, qui sera utilisée pour chiffrer les futurs courriels et autres données pour **${ emailAddress }**." ], "You already have this key type. Unless that key has been compromised, generating **a new key may slow down your account**.": [ "Vous avez déjà ce type de clé. À moins que cette clé ait été compromise, **la génération d'une nouvelle clé pourrait ralentir votre compte**." @@ -13472,6 +14132,9 @@ "${ PROTON_SENTINEL_NAME } protection": [ "Protection ${ PROTON_SENTINEL_NAME }" ], + "${ value.length }/${ maxLength } characters": [ + "${ value.length }/${ maxLength } caractères" + ], "(Temporarily unavailable. Please check back later.)": [ "(temporairement indisponible, nous vous invitons à vérifier plus tard)" ], @@ -13748,6 +14411,9 @@ "Block malware, ads and trackers": [ "Bloquez les logiciels malveillants, publicités et traqueurs" ], + "Block trackers and marketers": [ + "Bloquer les traqueurs et les annonceurs" + ], "Bookings, billings, and orders": [ "Réservations, facturations et commandes" ], @@ -13787,6 +14453,9 @@ "Cash": [ "Espèces" ], + "Catch-all email address": [ + "Adresse e-mail catch-all" + ], "Categories": [ "Catégories" ], @@ -13859,6 +14528,9 @@ "Confirm login password": [ "Confirmer le mot de passe de connexion" ], + "Confirm MX records added": [ + "Vérifier les enregistrements MX ajoutés" + ], "Confirm new password": [ "Confirmer le nouveau mot de passe" ], @@ -13922,6 +14594,9 @@ "Current email": [ "Adresse e-mail actuelle" ], + "Custom domain": [ + "Domaine personnalisé" + ], "Custom email domain": [ "Domaine de messagerie personnalisé", "Domaines de messagerie personnalisés" @@ -14019,6 +14694,9 @@ "e.g. example.com": [ "ex. : exemple.fr" ], + "Early access": [ + "Accès anticipé" + ], "Email": [ "Adresse e-mail" ], @@ -14034,6 +14712,9 @@ "Email or username": [ "E-mail ou nom d'utilisateur" ], + "Email with @yourcompany.com domain": [ + "E-mail avec le domaine @votre-entreprise.com" + ], "Emails (all messages)": [ "Messages (tous les messages)" ], @@ -14052,6 +14733,9 @@ "Enable ${ DARK_WEB_MONITORING_NAME } for ${ domain.DomainName }": [ "Activez ${ DARK_WEB_MONITORING_NAME } pour ${ domain.DomainName }" ], + "Enable categories": [ + "Activer les catégories" + ], "Enabled": [ "Activé" ], @@ -14148,6 +14832,9 @@ "Free": [ "Gratuit" ], + "Free VPN included": [ + "VPN gratuit inclus" + ], "From: ${ fromEmail }": [ "De : ${ fromEmail }" ], @@ -14196,6 +14883,9 @@ "Highest VPN speed": [ "Vitesse VPN maximale" ], + "Host name": [ + "Nom d'hôte" + ], "I understand that I'll need to add this email address to the other account immediately, to avoid losing this address permanently.": [ "Je comprends que je devrai ajouter cette adresse e-mail à l'autre compte immédiatement pour éviter de perdre cette adresse définitivement." ], @@ -14313,6 +15003,9 @@ "Main reason for cancelling": [ "Raison principale de l'annulation" ], + "Make sure you have access to a recovery email or phone, and have a data recovery option.": [ + "Assurez-vous que vous avez accès à une adresse e-mail ou un téléphone de récupération, et que vous avez configuré une méthode de récupération des données." + ], "Manage categories": [ "Gérer les catégories" ], @@ -14385,6 +15078,9 @@ "Must have at least ${ MIN_PASSWORD_LENGTH } characters": [ "Il doit comporter au moins ${ MIN_PASSWORD_LENGTH } caractères." ], + "MX records": [ + "Enregistrements MX" + ], "Name": [ "Nom" ], @@ -14451,6 +15147,9 @@ "Online privacy for your whole family": [ "Respect de la vie privée en ligne pour toute votre famille" ], + "Online productivity suite": [ + "Suite de productivité en ligne" + ], "Only a single personal vault can be created": [ "Un seul coffre-fort personnel peut être créé" ], @@ -14520,6 +15219,9 @@ "Pending": [ "En attente" ], + "Personal and work emails, plus important updates and notifications": [ + "E-mails personnels et professionnels, ainsi que mises à jour et notifications importantes" + ], "Phone number": [ "Numéro de téléphone" ], @@ -14553,12 +15255,21 @@ "Postal code": [ "Code postal" ], + "Premium features included": [ + "Fonctionnalités premium inclues" + ], "Previous password": [ "Mot de passe précédent" ], "Primary": [ "Principale" ], + "Priority": [ + "Priorité" + ], + "Priority support": [ + "Support prioritaire" + ], "Promotions": [ "Promotions" ], @@ -14646,6 +15357,9 @@ "Secure password generator": [ "Générateur de mots de passe sécurisé" ], + "See your team's availability": [ + "Afficher les disponibilités de votre équipe" + ], "Select Linux package format": [ "Sélectionnez le format du paquet Linux" ], @@ -14679,6 +15393,9 @@ "Shared between ${ MAIL_SHORT_APP_NAME }, ${ CALENDAR_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME }, and ${ WALLET_SHORT_APP_NAME }.": [ "Partagé entre ${ MAIL_SHORT_APP_NAME }, ${ CALENDAR_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME } et ${ WALLET_SHORT_APP_NAME }." ], + "Short domain @pm.me": [ + "Domaine court @pm.me" + ], "Show ${ n } administrator": [ "Afficher ${ n } administrateur", "Afficher ${ n } administrateurs" @@ -14782,6 +15499,9 @@ "Subscription options": [ "Options de l'abonnement" ], + "Support for multiple users": [ + "Prise en charge pour plusieurs utilisateurs" + ], "Swipe left action": [ "Glissement à gauche" ], @@ -14800,6 +15520,9 @@ "Then": [ "Alors" ], + "Third-party ads": [ + "Publicités de services tiers" + ], "Thomas": [ "Camille" ], @@ -14905,6 +15628,9 @@ "Verify keys with Key Transparency": [ "Vérifier les clés avec Key Transparency" ], + "Version history": [ + "Historique des versions" + ], "Video conferencing with Zoom": [ "Vidéoconférence avec Zoom" ], @@ -14917,6 +15643,9 @@ "Vulnerable password": [ "Mot de passe vulnérable" ], + "We securely stored recovery information on this device.": [ + "Nous avons stocké les informations de récupération de manière sécurisée sur cet appareil." + ], "Weak": [ "Faible" ], @@ -14944,12 +15673,21 @@ "Without attachment": [ "Sans pièce jointe" ], + "Yearly": [ + "Annuel" + ], + "Yearly free storage bonus": [ + "Bonus annuel gratuit pour votre espace de stockage" + ], "Yes": [ "Oui" ], "Yes, I want to permanently delete this account and all its data.": [ "Oui, je veux supprimer définitivement ce compte et toutes ses données." ], + "You don't have permissions": [ + "Vous n'avez pas d'autorisations." + ], "Your activation code:": [ "Votre code d'activation :" ], @@ -14971,6 +15709,12 @@ "Your plan": [ "Votre abonnement" ], + "Your recovery email": [ + "Votre adresse e-mail de récupération" + ], + "Your recovery phone number": [ + "Votre numéro de téléphone de récupération" + ], "Your voucher for your reserved ${ BRAND_NAME } email address:": [ "Votre bon pour votre adresse e-mail réservée ${ BRAND_NAME } :" ], @@ -14993,6 +15737,9 @@ ], "Recovery phrase": [ "Phrase de récupération" + ], + "Set recovery phone number": [ + "Configurer le numéro de téléphone de récupération" ] }, "Label (begin date/advanced search)": { @@ -15034,6 +15781,26 @@ "Veuillez ajouter l'enregistrement TXT suivant. Attention : les enregistrements DNS peuvent prendre plusieurs heures pour être mis à jour." ] }, + "Label for domain setup": { + "${ capitalizedGroup } record not found": [ + "L'enregistrement ${ capitalizedGroup } n'a pas été trouvé." + ], + "Host name": [ + "Nom d'hôte" + ], + "Invalid ${ group.name } record found": [ + "Un enregistrement ${ group.name } non valide a été trouvé." + ], + "Type": [ + "Type" + ], + "Use default value": [ + "Utiliser la valeur par défaut" + ], + "Valid ${ group.name } record found": [ + "Un enregistrement ${ group.name } valide a été trouvé." + ] + }, "Label for new member": { "Admin": [ "Admin" @@ -15199,6 +15966,9 @@ "data recovery option": [ "option de récupération de données" ], + "Detailed instructions": [ + "Instructions détaillées" + ], "Details": [ "Informations" ], @@ -15373,6 +16143,9 @@ "Upgrade your plan": [ "Changez d'abonnement" ], + "use a data recovery method": [ + "utilisez une méthode de récupération des données" + ], "Vault": [ "Coffre-fort" ], @@ -15720,21 +16493,45 @@ "Built-in chat": [ "Chat intégré" ], + "Cloud storage and file sharing": [ + "Stockage cloud et partage de fichiers" + ], + "Data retention policies": [ + "Politiques de conservation des données" + ], + "Document and spreadsheet editor": [ + "Éditeur de documents et de feuilles de calcul" + ], + "Email writing assistant": [ + "Assistant d’aide à la rédaction de message" + ], "End-to-end encrypted screen sharing and ephemeral in-call chat": [ "Partage d'écran chiffré de bout en bout et chat éphémère pendant les appels" ], "Hosts can record meetings locally on their computers": [ "Les hôtes peuvent enregistrer les réunions localement sur leur ordinateur" ], + "Includes Meet Professional": [ + "Inclut Meet Professionnal" + ], "Meeting recording": [ "Enregistrement de la réunion" ], "One active meeting at a time": [ "Une réunion active à la fois" ], + "Password manager with team vaults": [ + "Gestionnaire de mots de passe avec des coffres-forts d'équipe" + ], + "Private AI Chat (${ LUMO_SHORT_APP_NAME })": [ + "Chat IA privé (${ LUMO_SHORT_APP_NAME })" + ], "Screen-sharing": [ "Partage d'écran" ], + "Secure mail and calendar": [ + "Messagerie et calendrier sécurisés" + ], "Unlimited meetings per day": [ "Réunions illimitées par jour" ], @@ -15749,6 +16546,9 @@ "Video meetings, ${ n } participant": [ "Vidéoconférences, ${ n } participant", "Vidéoconférences, ${ n } participants" + ], + "VPN with ad-blocker and malware protection": [ + "VPN avec bloqueur de publicité et protection contre les logiciels malveillants" ] }, "meet_2025: Info": { @@ -16418,6 +17218,9 @@ "99.95% SLA": [ "SLA/uptime : 99,95 % de disponibilité du service" ], + "Access all countries": [ + "Accédez à tous les pays" + ], "Activity logs and policy": [ "Journaux d'activité et politique" ], @@ -16439,6 +17242,9 @@ "Advanced network security": [ "Sécurité avancée du réseau" ], + "Advanced workspace security": [ + "Sécurité avancée de l'espace de travail" + ], "All ${ BRAND_NAME } products and features": [ "Tous les produits et fonctionnalités ${ BRAND_NAME }" ], @@ -16597,6 +17403,9 @@ "Multiple admin roles": [ "Plusieurs rôles d'administrateur" ], + "No streaming support": [ + "Pas de prise en charge du streaming" + ], "No-logs policy": [ "Politique de non-journalisation (no log)" ], @@ -16763,6 +17572,9 @@ "Unlimited volume/bandwidth": [ "Volume et bande passante illimités" ], + "Unlock streaming": [ + "Débloquez le streaming" + ], "Up to ${ n } user": [ "Jusqu'à ${ n } utilisateur", "Jusqu'à ${ n } utilisateurs" @@ -17237,6 +18049,10 @@ ] }, "new_plans: Upsell attribute": { + "${ n } country": [ + "${ n } pays", + "${ n } pays" + ], "Access advanced VPN features": [ "Accédez à des fonctionnalités VPN avancées." ], @@ -17298,8 +18114,8 @@ "${ app } product updates": [ "Nouveautés sur le produit ${ app }" ], - "${ BRAND_NAME } for Business newsletter": [ - "Newsletter ${ BRAND_NAME } for Business" + "${ BRAND_NAME } for Business communications": [ + "Communications ${ BRAND_NAME } for Business" ], "${ BRAND_NAME } important announcements": [ "Annonces importantes de ${ BRAND_NAME }" @@ -17352,8 +18168,8 @@ "During your first month of using a ${ BRAND_NAME } product": [ "Pendant votre premier mois d'utilisation d'un produit ${ BRAND_NAME }" ], - "Email subscriptions": [ - "Newsletters" + "Email communications": [ + "Communications par e-mail" ], "In-app notifications": [ "Notifications dans l'application" @@ -17944,6 +18760,9 @@ "Plain text": [ "Texte brut" ], + "Push notifications": [ + "Notifications push" + ], "Receive from all": [ "Recevoir de tous" ], @@ -18440,14 +19259,14 @@ "per month, billed every two years": [ "par mois (facturation tous les deux ans)" ], - "Preparing your Recovery Kit": [ - "Préparation de votre kit de récupération" + "Preparing your recovery phrase": [ + "Préparation de votre phrase de récupération en cours" ], "Protected by Swiss privacy laws": [ "Protégé par les lois suisses en matière de données personnelles" ], - "Save your recovery kit to continue": [ - "Enregistrez votre kit de récupération pour continuer." + "Save your recovery phrase to continue": [ + "Enregistrez votre phrase de récupération pour continuer." ], "Secure vault sharing": [ "Partage sécurisé de coffre-fort" @@ -19167,6 +19986,9 @@ "Search for an email or IP address": [ "Rechercher un e-mail ou une adresse IP" ], + "Search for users or addresses": [ + "Rechercher des utilisateurs ou des adresses" + ], "Search parent folder": [ "Rechercher le dossier principal" ], @@ -19316,18 +20138,18 @@ ] }, "PQC account key generation": { - "Couldn’t generate keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\n${ settingsLink } and select 'Generate key' for your account and for each address.": [ - "Impossible de générer les clés. Pour activer la protection post-quantique, vous devrez générer manuellement vos nouvelles clés de chiffrement.\n\n${ settingsLink } et sélectionnez « Générer une clé » pour votre compte et pour chaque adresse." + "Couldn’t generate keys. To activate post-quantum protection, you’ll need to finish generating your new post-quantum encryption keys.\n\n${ goToSettingsLink } and select 'Generate missing keys'.": [ + "Impossible de générer les clés. Pour activer la protection post-quantique, vous devez terminer la génération de vos nouvelles clés de chiffrement post-quantiques.\n\n\n${ goToSettingsLink } puis sélectionnez « Générer les clés manquantes »." ] }, "PQC adress key generation": { - "Couldn’t generate address keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\nGo to ${ settingsLink } and select 'Generate key' for each address.": [ - "Impossible de générer les clés d'adresse. Pour activer la protection post-quantique, vous devrez générer manuellement vos nouvelles clés de chiffrement.\n\nAllez à ${ settingsLink } et sélectionnez « Générer une clé » pour chaque adresse." + "Couldn’t generate address keys. To activate post-quantum protection, you’ll need to finish generating your new post-quantum encryption keys for each address.\n\n${ goToSettingsLink } and select 'Generate missing keys'.": [ + "Impossible de générer les clés d'adresse. Pour activer la protection post-quantique, vous devez terminer la génération de vos nouvelles clés de chiffrement post-quantiques pour chaque adresse.\n\n\n${ goToSettingsLink } puis sélectionnez « Générer les clés manquantes »." ] }, "PQC compatibility warning": { - "**You must update all ${ BRAND_NAME } mobile apps**: your new keys won't work on older app versions.": [ - "**Vous devez mettre à jour toutes les applications mobiles ${ BRAND_NAME }** : vos nouvelles clés ne fonctionneront pas sur les anciennes versions d'application." + "**You must update all ${ BRAND_NAME } apps**: your new keys won't work on older app versions.": [ + "**Vous devez mettre à jour toutes les applications ${ BRAND_NAME }** : vos nouvelles clés ne fonctionneront pas sur des versions antérieures des applications." ] }, "PQC key generation": { @@ -19586,6 +20408,9 @@ "Verify now": [ "Vérifier maintenant" ], + "Verify now this recovery email address: ${ emailData.value }": [ + "Vérifiez maintenant cette adresse e-mail de récupération : ${ emailData.value }" + ], "Verify recovery email?": [ "Vérifier l'e-mail de récupération ?" ], @@ -19629,13 +20454,138 @@ "Verify recovery phone?": [ "Vérifier le téléphone de récupération ?" ], + "Verify this recovery phone number now: ${ phoneData.value }": [ + "Vérifiez maintenant ce numéro de téléphone de récupération : ${ phoneData.value }" + ], "Verifying your phone number increases your account security and allows additional options for recovery.": [ "Vérifier votre numéro de téléphone améliore la sécurité de votre compte et offre des options de récupération supplémentaires." ] }, + "Recovery score": { + "${ score } / ${ maxScore } completed": [ + "${ score } / ${ maxScore } complétés" + ], + "Account protection": [ + "Protection du compte" + ], + "Add more options for stronger protection": [ + "Ajoutez plus d'options de sécurité pour une protection renforcée" + ], + "Add more options to avoid getting locked out of your account.": [ + "Ajouter davantage d'options pour éviter d'être bloqué de votre compte." + ], + "Awesome. Keep your options up-to-date for stronger protection.": [ + "Génial ! Assurez-vous que vos paramètres sont à jour pour une protection renforcée." + ], + "Good start. Add more options for a stronger protection.": [ + "Bon début. Ajoutez plus d'options de sécurité pour une protection renforcée." + ], + "Great. Add more options for a stronger protection.": [ + "Génial ! Ajoutez plus d'options de sécurité pour une protection renforcée." + ], + "How you increased your account protection": [ + "Comment vous avez amélioré la protection de votre compte" + ], + "Inactive recovery options": [ + "Options de récupération inactive" + ], + "Maximum": [ + "Maximum" + ], + "Partial": [ + "Partiel" + ], + "Recovery score: ${ score }": [ + "Score de récupération : ${ score }" + ], + "Require verified password reset option (email or SMS)": [ + "Exiger une option de réinitialisation du mot de passe vérifiée (e-mail ou SMS)" + ], + "Score: ${ score } / ${ maxScore }": [ + "Score : ${ score } / ${ maxScore }" + ], + "Strong": [ + "Fort" + ], + "Unprotected": [ + "Sans protection" + ], + "Weak": [ + "Faible" + ] + }, "Recovery score item": { + "Add emergency contacts": [ + "Ajouter des contacts d'urgence" + ], + "Add recovery contacts": [ + "Ajouter des contacts de récupération" + ], + "Add recovery email": [ + "Ajouter un e-mail de récupération" + ], + "Add recovery phone": [ + "Ajouter un numéro de récupération" + ], + "Allow data recovery on this device": [ + "Autoriser la récupération des données sur cet appareil" + ], + "Allow password reset from settings": [ + "Autorisez la réinitialisation du mot de passe à partir des paramètres" + ], + "Allow scanning QR code to sign in": [ + "Autoriser la lecture d’un QR code pour se connecter" + ], + "Data recovery allowed on this device": [ + "La récupération des données est autorisée sur cet appareil." + ], + "Download recovery file": [ + "Télécharger le fichier de récupération" + ], + "Email recovery enabled": [ + "La récupération par e-mail a été activée." + ], + "Emergency contacts added": [ + "Les contacts d'urgence ont été ajoutés." + ], + "Enable email recovery": [ + "Activer la récupération par e-mail" + ], + "Enable recovery by phone": [ + "Activer la récupération par téléphone" + ], + "Password reset allowed from settings": [ + "La réinitialisation de mot de passe est autorisée depuis les paramètres." + ], + "Password verified": [ + "Le mot de passe a été vérifié." + ], + "Phone recovery enabled": [ + "La récupération par numéro de téléphone est activée." + ], + "Recovery contacts added": [ + "Contacts de récupération ajoutés" + ], + "Recovery file downloaded": [ + "Fichier de récupération téléchargé" + ], + "Recovery phrase saved": [ + "La phrase de récupération a été sauvegardée." + ], + "Save recovery phrase": [ + "Sauvegarder la phrase de récupération" + ], "Sign-in with QR code allowed": [ "Connexion par un QR code autorisée" + ], + "Verify password": [ + "Vérifier le mot de passe" + ], + "Verify recovery email": [ + "Vérifier l'e-mail de récupération" + ], + "Verify recovery phone": [ + "Vérifiez le téléphone de récupération " ] }, "RecoveryPhrase: Action": { @@ -19650,6 +20600,9 @@ ] }, "RecoveryPhrase: Info": { + "**Make sure you keep your recovery phrase accessible after creating it.** For security reasons, we do not store the phrase after saving your changes, and you won’t be able to see it again in the ${ BRAND_NAME } app.": [ + "**Conservez votre phrase de récupération dans un endroit accessible après sa création.** Pour des raisons de sécurité, nous ne la stockons pas après avoir enregistré vos modifications, et vous ne pourrez plus la consulter sur l'application ${ BRAND_NAME }." + ], "copy recovery phrase": [ "copier la phrase de récupération" ], @@ -19671,14 +20624,11 @@ "Or ${ downloadRecoveryKitSwitchButton } instead.": [ "Ou plutôt ${ downloadRecoveryKitSwitchButton }." ], - "Your **Recovery Kit** lets you restore your ${ BRAND_NAME } Account if you’re locked out.": [ - "Votre **Kit de récupération** vous permet de restaurer votre compte ${ BRAND_NAME } si vous êtes bloqué." + "Your **recovery phrase** lets you restore your ${ BRAND_NAME } Account if you’re locked out.": [ + "Votre **phrase de récupération** vous permet de restaurer votre compte ${ BRAND_NAME } en cas de blocage." ] }, "RecoveryPhrase: Title": { - "Save your Recovery Kit": [ - "Enregistrez votre Kit de récupération" - ], "Save your recovery phrase": [ "Enregistrez votre phrase de récupération" ] @@ -19760,7 +20710,7 @@ "Classique" ], "Post-quantum": [ - "Encryptage post-quantique" + "Chiffrement post-quantique" ] }, "Remove calendar section description": { @@ -20071,8 +21021,8 @@ "Back to Safety Review": [ "Revenir à la vérification de sécurité" ], - "Because you reset your password, your current Recovery Kit can only be used to recover the data created before your password reset.": [ - "Étant donné que vous avez réinitialisé votre mot de passe, vous pouvez uniquement utiliser votre kit de récupération actuel pour récupérer les données créées avant la réinitialisation de votre mot de passe." + "Because you reset your password, your current recovery phrase can only be used to recover the data created before your password reset.": [ + "Étant donné que vous avez réinitialisé votre mot de passe, vous pouvez uniquement utiliser votre phrase de récupération actuelle pour récupérer les données créées avant la réinitialisation de votre mot de passe." ], "Can be used to regain access to your account and data": [ "Ceci peut être utilisé pour récupérer l'accès à votre compte et à vos données." @@ -20101,8 +21051,8 @@ "Download ${ size }": [ "Télécharger ${ size }" ], - "Download your Recovery Kit": [ - "Télécharger le kit de récupération" + "Download your recovery phrase": [ + "Téléchargez votre phrase de récupération" ], "Email address": [ "Adresse e-mail" @@ -20116,8 +21066,8 @@ "Enable recovery by phone": [ "Activer la récupération par téléphone" ], - "I understand that I will not be able to recover currently locked data with this Recovery Kit": [ - "Je comprends que je ne pourrai pas récupérer les données actuellement verrouillées avec ce kit de récupération." + "I understand that I will not be able to recover currently locked data with this recovery phrase": [ + "Je comprends que je ne pourrai pas récupérer les données actuellement verrouillées avec cette phrase de récupération." ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in on this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Si vous avez oublié votre mot de passe ${ BRAND_NAME } et vous devez le réinitialiser, la prochaine fois que vous vous connecterez sur cet appareil avec votre nouveau mot de passe, vous aurez de nouveau accès à l'intégralité de votre compte ${ BRAND_NAME }." @@ -20125,8 +21075,8 @@ "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Si vous avez oublié votre mot de passe ${ BRAND_NAME } et vous devez le réinitialiser, la prochaine fois que vous vous connecterez sur cet appareil avec votre nouveau mot de passe, vous aurez de nouveau accès à l'intégralité de votre compte ${ BRAND_NAME }." ], - "If you get locked out of your ${ BRAND_NAME } Account, your Recovery Kit will allow you to sign in and recover your data.": [ - "Si vous ne pouvez pas accéder à votre compte ${ BRAND_NAME }, votre kit de récupération vous permettra de vous connecter et de récupérer vos données." + "If you get locked out of your ${ BRAND_NAME } Account, your recovery phrase will allow you to sign in and recover your data.": [ + "Si vous ne pouvez pas accéder à votre compte ${ BRAND_NAME }, votre phrase de récupération vous permettra de vous connecter et de récupérer vos données." ], "If you lose your login details and need to reset your account, **it’s imperative** that you have both an **account recovery and data recovery method** in place, otherwise you might not be able to access any of your emails, contacts, files or passwords.": [ "Si vous perdez vos informations de connexion et devez réinitialiser votre compte, **vous devez** avoir à la fois **une méthode de récupération de données et une méthode de récupération de compte**. Dans le cas contraire, vous pourriez ne pas pouvoir accéder à vos courriels, contacts, fichiers ou mots de passe." @@ -20170,8 +21120,8 @@ "Take action to secure your account": [ "Prenez les mesures nécessaires pour sécuriser votre compte." ], - "There was an error generating your Recovery Kit": [ - "Une erreur s'est produite lors de la génération du kit de récupération." + "There was an error generating your recovery phrase": [ + "Une erreur s'est produite lors de la génération de votre phrase de récupération." ], "There was an error verifying your email": [ "Une erreur s'est produite lors de la vérification de votre e-mail." @@ -20200,11 +21150,11 @@ "to recover your account if you're ever locked out": [ "pour récupérer votre compte si vous n'avez plus accès à ce dernier." ], - "Update your Recovery Kit": [ - "Mettre à jour le kit de récupération" + "Update your recovery phrase": [ + "Mettre à jour votre phrase de récupération" ], - "Update your Recovery Kit?": [ - "Mettre à jour le kit de récupération ?" + "Update your recovery phrase?": [ + "Mettre à jour votre phrase de récupération ?" ], "Verify": [ "Vérifier" @@ -20221,8 +21171,8 @@ "Verify your recovery phone number": [ "Vérifier le numéro de téléphone de récupération" ], - "We encountered an error while generating your Recovery Kit. Please try again later, or contact support if the issue continues.": [ - "Une erreur est survenue lors de la génération du kit de récupération. Nous vous invitons à réessayer plus tard ou à contacter le service client si le problème persiste." + "We encountered an error while generating your recovery phrase. Please try again later, or contact support if the issue continues.": [ + "Une erreur est survenue lors de la génération de votre phrase de récupération. Nous vous invitons à réessayer plus tard ou à contacter le service client si le problème persiste." ], "We encountered an error while verifying your email. Please try again later, or contact support if the issue continues.": [ "Une erreur est survenue lors de la vérification de votre e-mail. Veuillez réessayer plus tard ou contacter le support si le problème persiste." @@ -20245,8 +21195,8 @@ "You can disable this at any time.": [ "Vous pouvez désactiver ceci à tout moment." ], - "You can use the recovery phrase in this Recovery Kit to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ - "Vous pouvez utiliser la phrase de récupération de ce kit de récupération pour restaurer l'intégralité de votre compte lorsque vous réinitialisez votre mot de passe. Assurez-vous donc de la conserver en lieu sûr." + "You can use the recovery phrase in this recovery phrase to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ + "Vous pouvez utiliser la phrase de récupération pour restaurer l'intégralité de votre compte lorsque vous réinitialisez votre mot de passe. Assurez-vous donc de la conserver en lieu sûr." ], "You can use your email to regain access to your account if you forget your password.": [ "Vous pouvez utiliser votre adresse e-mail pour récupérer l'accès à votre compte si vous oubliez votre mot de passe." @@ -20257,8 +21207,8 @@ "You can use your recovery phone to regain access to your account if you forget your password.": [ "Vous pouvez utiliser la récupération par téléphone pour récupérer l'accès à votre compte si vous avez perdu votre mot de passe." ], - "You have previously downloaded a Recovery Kit. Downloading a new one will **deactivate the old one**.": [ - "Vous avez déjà téléchargé un kit de récupération. Si vous en téléchargez un nouveau, ceci **désactivera l'ancien**." + "You have previously downloaded a recovery phrase. Downloading a new one will **deactivate the old one**.": [ + "Vous avez déjà téléchargé une phrase de récupération. Si vous en téléchargez une nouvelle, ceci **désactivera l'ancienne**." ], "You have recommended actions to safeguard your account further.": [ "Vous avez des actions recommandées pour protéger davantage votre compte." @@ -20323,12 +21273,6 @@ "Your recovery email is set": [ "L'e-mail de récupération est configuré." ], - "Your Recovery Kit": [ - "Kit de récupération" - ], - "Your Recovery Kit is set": [ - "Le kit de récupération est configuré." - ], "Your recovery methods": [ "Méthodes de récupération" ], @@ -20349,6 +21293,242 @@ ], "Your recovery phone number is:": [ "Votre numéro de téléphone de récupération est :" + ], + "Your recovery phrase": [ + "Votre phrase de récupération" + ], + "Your recovery phrase is set": [ + "Votre phrase de récupération est configurée." + ] + }, + "safety_review": { + "${ BRAND_NAME } Account email": [ + "Adresse e-mail du compte ${ BRAND_NAME }" + ], + "Account protection": [ + "Protection du compte" + ], + "Add": [ + "Ajouter" + ], + "Add an emergency contact": [ + "Ajouter un contact d'urgence" + ], + "Add emergency contacts": [ + "Ajouter des contacts d'urgence" + ], + "Add options": [ + "Ajouter des options" + ], + "Add people who you trust and can contact easily. Your emergency contact will be able to access your account and reset your password for you if needed.": [ + "Ajoutez des personnes en qui vous avez confiance et que vous pouvez contacter facilement. Elles pourront accéder à votre compte et réinitialiser votre mot de passe pour vous si nécessaire." + ], + "Add people you trust and can contact easily. They will be able to help you unlock your data after you reset your password.": [ + "Ajoutez des personnes en qui vous avez confiance et que vous pouvez contacter facilement. Elles pourront vous aider à déverrouiller vos données après une réinitialisation de mot de passe." + ], + "Add phone number": [ + "Ajouter un numéro de téléphone" + ], + "Add recovery contacts": [ + "Ajouter des contacts d'urgence" + ], + "Add recovery email": [ + "Ajouter l'e-mail de récupération" + ], + "Add recovery phone": [ + "Ajouter un téléphone de récupération" + ], + "Added emergency contacts": [ + "Les contacts d'urgence ont été ajoutés." + ], + "Added recovery contacts": [ + "Les contacts d'urgence ont été ajoutés." + ], + "Added recovery email": [ + "L'e-mail de récupération a été ajouté." + ], + "Added recovery phone": [ + "Le téléphone de récupération a été ajouté." + ], + "Allow": [ + "Autoriser" + ], + "Allow data recovery from this device": [ + "Autoriser la récupération des données depuis cet appareil" + ], + "Allow password reset from the settings": [ + "Autorisez la réinitialisation du mot de passe à partir des paramètres" + ], + "Allow recovery by email": [ + "Autoriser la récupération par e-mail" + ], + "Allow recovery by phone": [ + "Autoriser la récupération par téléphone" + ], + "Allow scanning a QR code to sign in": [ + "Autoriser la lecture d’un QR code pour se connecter" + ], + "Allow trusted friends to unlock your data": [ + "Autoriser les amis de confiance à déverrouiller vos données" + ], + "Back to ${ backLink.appNameString }": [ + "Revenir à ${ backLink.appNameString }" + ], + "Congratulations": [ + "Félicitations" + ], + "Didn’t receive it? ${ sendANewCode }": [ + "Vous ne l'avez pas reçu ? ${ sendANewCode }" + ], + "Done": [ + "Terminé" + ], + "Download": [ + "Télécharger" + ], + "Download recovery file": [ + "Télécharger le fichier de récupération" + ], + "Downloaded recovery file": [ + "Le fichier de récupération a été téléchargé." + ], + "Emergency contacts enabled": [ + "Les contacts d'urgence ont été activés." + ], + "Enable device recovery": [ + "Activer la récupération par un appareil" + ], + "Enable email recovery": [ + "Activer la récupération par e-mail" + ], + "Enable emergency contacts": [ + "Activer les contacts d'urgence" + ], + "Enable password reset from settings": [ + "Activer la réinitialisation du mot de passe à partir des paramètres" + ], + "Enable phone recovery": [ + "Activer la récupération par numéro de téléphone" + ], + "Enable QR code sign-in": [ + "Activer la connexion par QR code" + ], + "Enabled device recovery": [ + "La récupération par un appareil a été activée." + ], + "Enabled email recovery": [ + "La récupération par e-mail a été activée." + ], + "Enabled password reset from settings": [ + "La réinitialisation du mot de passe à partir des paramètres a été activée." + ], + "Enabled phone recovery": [ + "La récupération par numéro de téléphone a été activé." + ], + "Enabled QR code sign-in": [ + "La connexion par QR code a été activée." + ], + "Got it": [ + "J'ai compris" + ], + "Here's how you increased your account protection:": [ + "Comment vous avez amélioré la protection de votre compte :" + ], + "If you forget your password, you can sign in using a QR code. All you need is to be signed in to a ${ BRAND_NAME } service on another device.": [ + "Si vous oubliez votre mot de passe, vous pouvez vous connecter à l'aide d'un QR code. Il vous suffit d'être connecté à un service ${ BRAND_NAME } sur un autre appareil." + ], + "If you get locked out of your ${ BRAND_NAME } Account, it will allow you to sign in and recover your data. It’s the only way to instantly restore everything, so make sure you keep it somewhere safe.": [ + "Si vous n'avez plus accès à votre compte ${ BRAND_NAME }, votre mot de passe de récupération vous permettra de vous connecter et de récupérer vos données. C'est le seul moyen de restaurer votre compte sans délai, assurez-vous de le conserver en lieu sûr." + ], + "Later": [ + "Plus tard" + ], + "Protect your legacy with Emergency Access": [ + "Protégez vos données existantes avec l'accès d'urgence" + ], + "Save recovery phrase": [ + "Enregistrer la phrase de récupération" + ], + "Saved recovery phrase": [ + "La phrase de récupération a été enregistrée." + ], + "They must already have a ${ BRAND_NAME } Account.": [ + "Ils doivent déjà avoir un compte ${ BRAND_NAME }." + ], + "They will not be able to see or access your data.": [ + "Ils ne pourront pas voir ou accéder à vos données." + ], + "This will let you quickly access your ${ BRAND_NAME } Account so you can change your password.": [ + "Ceci vous permettra d'accéder rapidement à votre compte ${ BRAND_NAME } afin que vous puissiez modifier votre mot de passe." + ], + "This will let you reset your account password if you’ve lost it, but are still signed in to ${ BRAND_NAME }. It’s often the easiest way to recover your account if you’re signed in.": [ + "Cela vous permettra de réinitialiser le mot de passe de votre compte si vous l'avez oublié, mais que vous êtes toujours connecté à ${ BRAND_NAME }. C'est souvent le moyen le plus simple de récupérer votre compte si vous êtes connecté." + ], + "This will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset.": [ + "Cela vous permettra de restaurer vos accès aux messages, contacts, fichiers, mots de passe, et aux données chiffrées de votre compte après une réinitialisation de mot de passe." + ], + "To make sure the email address is yours, enter the verification code sent to ${ boldEmail }.": [ + "Pour vérifier que l'adresse e-mail vous appartient, saisissez le code de vérification envoyé à ${ boldEmail }." + ], + "To make sure the phone number is yours, enter the verification code sent to ${ boldPhoneNumber }.": [ + "Pour vérifier que le numéro de téléphone vous appartient, saisissez le code de vérification envoyé au ${ boldPhoneNumber }." + ], + "To make sure this address is really yours, we’ll send an email with a verification link.": [ + "Pour nous assurer que cette adresse vous appartient bien, nous vous enverrons un e-mail contenant un lien de vérification." + ], + "Upgrade your plan to enable Emergency Access to your account. This will allow you to designate 1 to 5 people who will be able to reset your password for you.": [ + "Passez à un forfait supérieur pour activer l'accès d'urgence à votre compte. Cela vous permettra de désigner entre 1 et 5 personnes qui pourront réinitialiser votre mot de passe à votre place." + ], + "Verified password": [ + "Le mot de passe a été vérifié." + ], + "Verified recovery email": [ + "L'e-mail de récupération a été vérifié." + ], + "Verified recovery phone": [ + "Le téléphone de récupération a été vérifié." + ], + "Verify": [ + "Vérifier" + ], + "Verify password": [ + "Vérifier le mot de passe" + ], + "Verify recovery email": [ + "Vérifier l'e-mail de récupération" + ], + "Verify recovery phone": [ + "Vérifiez le téléphone de récupération " + ], + "Verify your recovery email": [ + "Vérifiez votre e-mail de récupération" + ], + "Verify your recovery phone": [ + "Vérifiez votre téléphone de récupération" + ], + "You can save a data backup on this device. This will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset, simply by signing in on this device.": [ + "Vous pouvez enregistrer une sauvegarde des données sur cet appareil. Cela vous permettra de récupérer l'accès à vos e-mails, contacts, fichiers, mots de passe et à toutes les autres données chiffrées de votre compte après une réinitialisation de mot de passe, simplement en vous connectant sur cet appareil." + ], + "You can use email verification to regain access to your account if you forget your password.": [ + "Vous pouvez utiliser la vérification par e-mail pour récupérer l'accès à votre compte si vous oubliez votre mot de passe." + ], + "You can use SMS verification to regain access to your account if you forget your password.": [ + "Vous pouvez utiliser la vérification par SMS pour récupérer l'accès à votre compte si vous oubliez votre mot de passe." + ], + "You can use your recovery email to regain access to your account if you forget your password.": [ + "Vous pouvez utiliser la vérification par e-mail pour récupérer l'accès à votre compte si vous oubliez votre mot de passe." + ], + "You can use your recovery phone to regain access to your account if you forget your password.": [ + "Vous pouvez utiliser la vérification par téléphone pour récupérer l'accès à votre compte si vous oubliez votre mot de passe." + ], + "You don’t need to open or read the file—just download it and store it somewhere safe.": [ + "Vous n'avez pas besoin d'ouvrir ou de lire le fichier. Téléchargez-le et stockez-le à un endroit sécurisé." + ], + "Your recovery checklist": [ + "Votre liste de récupération" + ], + "Your security setup": [ + "Votre configuration de sécurité" ] }, "saml: Action": { @@ -20554,6 +21734,17 @@ "Aucun résultat n'a été trouvé." ] }, + "Sentinel banner": { + "To ensure the highest possible security of your account, disable recovery via email and SMS.": [ + "Pour garantir la sécurité maximale de votre compte, désactivez la récupération par e-mail et SMS." + ], + "To make sure that you can always access your ${ BRAND_NAME } Account, download your recovery phrase.": [ + "Afin de vous assurez que vous pourrez toujours accéder à votre compte ${ BRAND_NAME }, téléchargez votre phrase de récupération." + ], + "You have recommended actions from ${ PROTON_SENTINEL_NAME }": [ + "Vous avez des actions recommandées par ${ PROTON_SENTINEL_NAME }" + ] + }, "Server-Info": { "active": [ "actif" @@ -20828,6 +22019,9 @@ ] }, "session_recovery:settings:info": { + "To disallow password reset from settings, you must save your recovery phrase.": [ + "Pour désactiver la réinitialisation du mot de passe depuis les paramètres, vous devez enregistrer votre phrase de récupération." + ], "To disallow password reset, you must have a recovery method set up.": [ "Pour interdire la réinitialisation du mot de passe, vous devez disposer d'une méthode de récupération." ], @@ -20885,14 +22079,11 @@ ] }, "Setting": { - "Enable Photos section": [ - "Activer la section Photos" - ], "Get updates about comments via email": [ "Recevoir les mises à jour des commentaires par e-mail" ], "Include document name in email notifications": [ - "Inclure le nom du document dans les emails de notification" + "Inclure le nom du document dans les notifications par e-mail" ] }, "Settings description": { @@ -20904,6 +22095,9 @@ "Account": [ "Compte" ], + "Managed Companies": [ + "Entreprises gérées" + ], "Organization": [ "Organisation" ] @@ -21757,11 +22951,35 @@ ] }, "Spotlight": { + "Assign delegated roles": [ + "Assigner des rôles délégués" + ], + "Assign roles": [ + "Assigner des rôles" + ], + "Click a user's name to manage their role and permissions.": [ + "Cliquez sur le nom d'un utilisateur pour gérer son rôle et ses permissions." + ], + "Click Edit to assign roles to this group and manage member access automatically.": [ + "Cliquez Modifier pour assigner des rôles à ce groupe et gérer les accès des membres automatiquement." + ], "Earn up to ${ maxRewardAmount } in credit": [ "Recevez jusqu'à ${ maxRewardAmount } en crédit" ], "Get credits when the person you invite subscribes to a ${ BRAND_NAME } plan.": [ "Obtenez des crédits lorsque la personne que vous invitez s'abonne à un abonnement ${ BRAND_NAME }." + ], + "New: Roles and permissions tab": [ + "Nouveau : onglet rôles et autorisations" + ], + "Open this tab to grant specific permissions without full admin access.": [ + "Ouvrez cet onglet pour accorder des autorisations spécifiques sans donner un accès administrateur complet." + ], + "User roles available": [ + "Rôles utilisateur disponibles" + ], + "You can now assign roles to individual users from this tab.": [ + "Vous pouvez désormais assigner des rôles à des utilisateurs individuellement depuis cet onglet." ] }, "sso": { @@ -22052,8 +23270,57 @@ ] }, "Status": { - "Disable QR code sign-in": [ - "Désactiver la connexion par QR code" + "${ count } person": [ + "${ count } personne", + "${ count } personnes" + ], + "Add a phone number": [ + "Ajouter un numéro de téléphone" + ], + "Add an email address": [ + "Ajouter une adresse e-mail" + ], + "Available on this device": [ + "Disponible sur cet appareil" + ], + "Disable recovery by email": [ + "Désactiver la récupération par e-mail" + ], + "Disable recovery by phone": [ + "Désactiver la récupération par téléphone" + ], + "Generate a recovery phrase": [ + "Générer une phrase de récupération" + ], + "Last changed ${ formattedDate }": [ + "Dernière modification le ${ formattedDate }" + ], + "Last updated ${ formattedUpdateDate }": [ + "Dernière mise à jour le ${ formattedUpdateDate }" + ], + "Not saved": [ + "Non enregistré" + ], + "Off": [ + "Désactivé" + ], + "On": [ + "Activé" + ], + "Outdated": [ + "Obsolète" + ], + "Saved": [ + "Enregistré" + ], + "Unverified": [ + "Non vérifié" + ], + "Verified": [ + "Vérifié" + ], + "Verify ${ value }": [ + "Vérifier ${ value }" ] }, "Step in filter modal": { @@ -22749,12 +24016,30 @@ "${ planTitle } gives you access to all apps and premium features. Privacy is built-in so you can get on with it, knowing your data and identity are safe.": [ "${ planTitle } vous donne accès à toutes les applications et les fonctionnalités premium. La protection de votre vie privée est garantie pour que vous puissiez continuer à travailler en sachant que vos données et votre identité sont en sécurité." ], + "${ planTitle } gives you all apps, all features, early access to new releases, and everything you need to be in control of your data and its security.": [ + "${ planTitle } vous donne accès à toutes les applications, toutes les fonctionnalités, un accès en avant-première aux nouvelles versions et tout ce dont vous besoin pour contrôler vos données et leur sécurité." + ], + "${ planTitle } gives you unlimited privacy and more storage for up to 2 people.": [ + "${ planTitle } vous offre une confidentialité illimitée et plus d'espace de stockage pour jusqu'à 2 personnes." + ], + "${ planTitle } gives your team all the collaboration tools they need to be productive and organized in their work, while safeguarding your business.": [ + "${ planTitle } offrent à votre équipe tous les outils dont elle a besoin pour être productive et organisée dans son travail, tout en protégeant votre entreprise." + ], + "${ planTitle } gives your team what they need to be more productive and organized in their work with access to all ${ BRAND_NAME } apps and their advanced features.": [ + "${ planTitle } permet à votre équipe d'être plus productive et mieux organiser son travail avec un accès à toutes les applications ${ BRAND_NAME } et leurs fonctionnalités avancées." + ], "${ planTitle } gives your team what they need to be more productive, organized, and in control of their inbox, schedule, and more.": [ "${ planTitle } permet à votre équipe d'être plus productive, mieux organisée et de mieux maîtriser entre autres leur boite de réception et calendriers." ], + "${ planTitle } goes beyond the basics to help you be more productive, organized, and in control of your inbox, email identity, and more.": [ + "${ planTitle } ne se limite pas à l'essentiel et vous permet d'améliorer votre productivité, d'être plus organisé et de contrôler votre boite de réception, votre identité de messagerie et bien plus encore." + ], "${ planTitle } helps you ensure that each of your family members — and their data — are protected whenever they’re online.": [ "${ planTitle } vous permet de vous assurer que chaque membre de votre famille, ainsi que leurs données, sont protégés lorsqu'ils sont en ligne." ], + "Compare the key differences that matter for your business.": [ + "Comparez les différences clés qui importent pour votre entreprise." + ], "Free forever": [ "Gratuit pour toujours" ], @@ -22772,12 +24057,21 @@ ], "View VPN session details for your organization.": [ "Affichez les informations de la session VPN pour votre organisation." + ], + "With managed companies, you can add, edit, and remove access for organizations you oversee.": [ + "Avec les entreprises gérées, vous pouvez ajouter, modifier et supprimer les droits d'accès des organisations dont vous avez la charge." + ], + "Your total monthly cost for all managed companies.": [ + "Votre coût mensuel total pour toutes les entreprises gérées." ] }, "Success": { "Account deleted. Signing out...": [ "Le compte a été supprimé. Déconnexion…" ], + "Activation link copied to clipboard": [ + "Le lien d'activation a été copié dans le presse-papiers." + ], "Address added": [ "L'adresse a été ajoutée." ], @@ -22901,9 +24195,6 @@ "Organization logo updated": [ "Le logo de l'organisation a été mis à jour." ], - "Organization name set": [ - "Nom de l'organisation" - ], "Organization name updated": [ "Le nom de l'organisation a été mis à jour." ], @@ -23093,6 +24384,9 @@ ], "/user per month": [ "par utilisateur et par mois" + ], + "/year": [ + "/ an" ] }, "Suffix for price": { @@ -23122,6 +24416,14 @@ "Sécurisez vos fichiers grâce au stockage cloud chiffré. Comprend l'historique des versions, le partage de fichiers chiffrés et de bien d'autres fonctionnalités." ] }, + "Tab": { + "For personal use": [ + "Pour un usage personnel" + ], + "For professional use": [ + "Pour un usage professionnel" + ] + }, "Tab in domain modal": { "Addresses": [ "Adresses" @@ -23397,12 +24699,18 @@ "Actions": [ "Actions" ], + "Activate multi-user support": [ + "Activer la prise en charge multi-utilisateur" + ], "Activate organization key": [ "Activer la clé de l'organisation" ], "Activate user": [ "Activer l'utilisateur" ], + "Activate your email": [ + "Activez votre e-mail" + ], "Activity monitor": [ "Surveillance des activités" ], @@ -23413,12 +24721,21 @@ "Add a custom logo": [ "Ajouter un logo personnalisé" ], + "Add a recovery contact": [ + "Ajouter un contact de récupération" + ], "Add address": [ "Ajouter une adresse" ], + "Add an emergency contact": [ + "Ajouter un contact d'urgence" + ], "Add another notification to remind you of this event": [ "Ajoutez une autre notification pour vous rappeler cet événement." ], + "Add categories": [ + "Ajouter les catégories" + ], "Add contact group name": [ "Ajouter le nom du groupe de contacts" ], @@ -23479,6 +24796,9 @@ "Address and key verification": [ "Vérification de l'adresse et de la clé" ], + "Advanced recovery options": [ + "Options de récupération avancées" + ], "Allocate storage": [ "Allouer le stockage" ], @@ -23497,9 +24817,6 @@ "An address for each role": [ "Une adresse pour chaque rôle" ], - "An error occurred": [ - "Une erreur s’est produite" - ], "Annual": [ "Annuel" ], @@ -23593,6 +24910,9 @@ "Catch-all address": [ "Adresse catch-all" ], + "Categories": [ + "Catégories" + ], "Change login password": [ "Changer le mot de passe de connexion" ], @@ -23638,6 +24958,9 @@ "Collaborate on documents": [ "Collaborer sur des documents" ], + "Companies": [ + "Entreprises" + ], "Compare plans": [ "Comparer les offres" ], @@ -23647,18 +24970,12 @@ "Confirm": [ "Confirmer" ], - "Confirm address": [ - "Confirmer l'adresse" - ], "Confirm downgrade": [ "Confirmer le passage à un abonnement inférieur" ], "Confirm loss of ${ BRAND_NAME } bonuses": [ "Confirmer la perte des bonus ${ BRAND_NAME }" ], - "Confirm phone number": [ - "Confirmer le numéro de téléphone" - ], "Connect ${ name }": [ "Se connecter à ${ name }" ], @@ -23683,12 +25000,18 @@ "Connect your custom domain": [ "Connectez votre domaine personnalisé" ], + "Connected emails": [ + "E-mails connectés" + ], "Connection status": [ "Statut de la connexion" ], "Contact us": [ "Nous contacter" ], + "Continue with free storage": [ + "Continuer avec l'espace de stockage gratuit" + ], "Continue with partial import?": [ "Continuer l'importation partielle ?" ], @@ -23714,6 +25037,9 @@ "Create a new gateway": [ "Créer une passerelle" ], + "Create a new password": [ + "Créer un nouveau mot de passe" + ], "Create Gateway": [ "Créer une passerelle" ], @@ -23795,6 +25121,12 @@ "Data recovery": [ "Récupération de données" ], + "Data recovery contacts": [ + "Contacts de récupération des données" + ], + "Data recovery options": [ + "Options de récupération de données" + ], "Data retention": [ "Conservation des données" ], @@ -23804,6 +25136,9 @@ "Day theme": [ "Thème jour" ], + "Deactivate current phrase?": [ + "Désactiver la phrase actuelle ?" + ], "Decrypt key": [ "Déchiffrer la clé" ], @@ -23874,6 +25209,9 @@ "Device": [ "Appareil" ], + "Device data backup": [ + "Sauvegarde des données de l'appareil" + ], "Device name": [ "Nom de l'appareil" ], @@ -23883,6 +25221,9 @@ "Disable categories?": [ "Désactiver les catégories ?" ], + "Disable device data backup?": [ + "Désactiver la sauvegarde des données de l'appareil ?" + ], "Disable two-factor authentication": [ "Désactiver l'authentification à deux facteurs" ], @@ -23898,6 +25239,9 @@ "Disconnected from Gmail": [ "Déconnecté de Gmail" ], + "Dismiss setup checklist": [ + "Ignorer la liste de vérification de configuration" + ], "Display name and signature": [ "Nom d'affichage et signature" ], @@ -23934,6 +25278,9 @@ "Download the mobile apps": [ "Télécharger les applications mobiles" ], + "Download your recovery phrase": [ + "Téléchargez votre phrase de récupération" + ], "Downloads": [ "Téléchargements" ], @@ -24012,6 +25359,9 @@ "Email privacy": [ "Confidentialité des messages" ], + "Email verification": [ + "Vérification par e-mail" + ], "Emergency access": [ "Accès d’urgence" ], @@ -24070,6 +25420,9 @@ "Feature access": [ "Accès aux fonctionnalités" ], + "Fewer distractions, more focus": [ + "Moins de distractions, plus de concentration" + ], "Filter for more focus": [ "Filtrez vos messages pour une meilleure concentration" ], @@ -24100,12 +25453,12 @@ "Forward emails": [ "Transfert automatique des messages" ], - "Forwardings": [ - "Transferts" - ], "Free": [ "Gratuit" ], + "Free plan": [ + "Plan gratuit" + ], "Gateway": [ "Passerelle " ], @@ -24136,6 +25489,9 @@ "Get ${ planMaxSpace } storage for your files, photos and documents with ${ planName }. ${ upgradeButton }": [ "Obtenez ${ planMaxSpace } espace de stockage pour vos fichiers, photos et documents avec ${ planName }. ${ upgradeButton }" ], + "Get ${ VPN_APP_NAME } on your TV": [ + "Obtenez ${ VPN_APP_NAME } sur votre TV" + ], "Get ${ vpnPlus } to access all servers": [ "Obtenir ${ vpnPlus } pour accéder à tous les serveurs." ], @@ -24166,6 +25522,12 @@ "Get more from your VPN": [ "Tirez le meilleur parti de votre VPN" ], + "Get more storage with ${ MAIL_APP_NAME } Plus": [ + "Obtenez plus d'espace de stockage avec ${ MAIL_APP_NAME } Plus" + ], + "Get started": [ + "Commencez" + ], "Get the app on all your devices and enjoy safe, seamless access anywhere.": [ "Obtenez l'application sur tous vos appareils et profitez d'un accès sécurisé et fluide partout." ], @@ -24202,6 +25564,9 @@ "Home": [ "Accueil" ], + "How ${ MAIL_APP_NAME } is different": [ + "Comment ${ MAIL_APP_NAME } se démarque" + ], "How did you find out about us?": [ "Comment avez-vous entendu parler de nous ?" ], @@ -24344,6 +25709,9 @@ "Monthly": [ "Mensuel" ], + "Monthly Costs": [ + "Coût mensuel" + ], "Multi-user support": [ "Prise en charge du multi-utilisateur" ], @@ -24377,6 +25745,9 @@ "No events": [ "Aucun événement" ], + "No events yet": [ + "Aucun événement pour l'instant" + ], "No need to empty the trash": [ "Pas besoin de vider la corbeille" ], @@ -24431,12 +25802,18 @@ "Other sign-in issues": [ "Autres problèmes de connexion" ], + "Our fight against censorship in Russia": [ + "Notre combat contre la censure en Russie" + ], "Password": [ "Mot de passe" ], "Password generator rules": [ "Règles du générateur de mots de passe" ], + "Password reset options": [ + "Options de réinitialisation du mot de passe" + ], "Password reset settings": [ "Paramètres de réinitialisation du mot de passe" ], @@ -24470,9 +25847,6 @@ "Phone": [ "Téléphone" ], - "Photos": [ - "Photos" - ], "Pin the extension": [ "Épinglez l'extension" ], @@ -24536,6 +25910,9 @@ "Recovery file": [ "Fichier de récupération" ], + "Recovery phrase": [ + "Phrase de récupération" + ], "Refer a friend": [ "Parrainer un ami" ], @@ -24554,9 +25931,15 @@ "Remove domain": [ "Retirer le domaine" ], + "Remove email": [ + "Retirer l'e-mail" + ], "Remove forwarding address": [ "Retirer l'adresse de transfert" ], + "Remove recovery phone number": [ + "Retirer le numéro de téléphone de récupération" + ], "Remove server?": [ "Retirer le serveur ?" ], @@ -24728,6 +26111,9 @@ "Sign in on TV": [ "Se connecter sur une TV" ], + "Sign in on TV?": [ + "Se connecter sur une TV ?" + ], "Sign in to join the Beta program": [ "Connectez-vous pour rejoindre le programme bêta" ], @@ -24743,6 +26129,9 @@ "Signed in to member account": [ "Connecté au compte membre" ], + "Signed-in reset": [ + "Réinitialisation lorsque connecté" + ], "Simplify email distribution": [ "Simplifiez la distribution des messages" ], @@ -24752,12 +26141,21 @@ "Single sign-on": [ "Authentification unique" ], + "SMS verification": [ + "Vérification SMS" + ], "SMTP submission": [ "Soumission SMTP" ], "Snooze:": [ "Mise en attente :" ], + "Some of your encrypted data is locked": [ + "Une partie de vos données chiffrées est verrouillée." + ], + "Something went wrong": [ + "Une erreur s'est produite." + ], "Sort folders alphabetically": [ "Trier les dossiers par ordre alphabétique" ], @@ -24954,6 +26352,9 @@ "Verify it’s you": [ "Vérifiez que c'est bien vous" ], + "Verify your email": [ + "Vérifiez votre e-mail" + ], "Verifying your card...": [ "Vérification de votre carte en cours" ], @@ -24978,6 +26379,9 @@ "Warning: suspected fake website": [ "Attention : site internet suspect/frauduleux" ], + "We sent you a code to your email to make sure it’s you. This code is valid for 10 minutes. Please enter it below.": [ + "Nous vous avons envoyé un code à votre adresse e-mail afin de s'assurer qu'il s'agit bien de vous. Ce code est valide pendant 10 minutes. Veuillez le saisir ci-dessous." + ], "We'll send an email to your new address with instructions on completing the change.": [ "Nous vous enverrons un message à votre nouvelle adresse e-mail avec des instructions pour effectuer la modification." ], @@ -25029,6 +26433,12 @@ "Your ${ planTitle } subscription has started": [ "Votre abonnement ${ planTitle } a commencé." ], + "Your admin at ${ orgName } is inviting you to activate your new secure ${ BRAND_NAME } account and update your password.": [ + "Votre administrateur de ${ orgName } vous invite à activer votre nouveau compte sécurisé ${ BRAND_NAME } et à mettre à jour votre mot de passe." + ], + "Your admin is inviting you to activate your new secure ${ BRAND_NAME } account and update your password.": [ + "Votre administrateur vous invite à activer votre nouveau compte sécurisé ${ BRAND_NAME } et à mettre à jour votre mot de passe." + ], "Your calendar link": [ "Lien de votre calendrier" ], @@ -25041,6 +26451,15 @@ "Your plan": [ "Votre abonnement" ], + "Your recovery file": [ + "Votre fichier de récupération" + ], + "Your recovery phrase": [ + "Votre phrase de récupération" + ], + "Your recovery setup": [ + "Votre configuration de récupération" + ], "Your referrals": [ "Vos références" ], @@ -25173,6 +26592,24 @@ "Admins can manage user accounts and give admin privileges to other users. Only the primary admin can edit the plan of the organization.": [ "Un administrateur peut gérer les comptes utilisateur ou accorder des droits administrateur aux autres utilisateurs. Seul l'administrateur principal peut modifier l'abonnement de l'organisation." ], + "Allow recovering your account with a one-time code sent to your recovery email": [ + "Autoriser la récupération de votre compte par un code unique envoyé à votre e-mail de récupération" + ], + "Allow recovering your account with a one-time code sent to your recovery phone": [ + "Autoriser la récupération de votre compte par un code unique envoyé à votre téléphone de récupération" + ], + "Allow resetting your password from the account settings": [ + "Autoriser la réinitialisation de votre mot de passe depuis les paramètres de compte." + ], + "Allow scanning a QR code from a ${ BRAND_NAME } mobile app to sign in": [ + "Autoriser le scan d'un QR code depuis une application mobile ${ BRAND_NAME } pour se connecter" + ], + "Allow trusted contacts to request access to your account": [ + "Autoriser des contacts de confiance à accéder à votre compte" + ], + "Allow trusted contacts to unlock your encrypted data after a password reset": [ + "Autoriser les contacts de confiance à déverrouiller vos données chiffrées après une réinitialisation de mot de passe" + ], "Allows to seamlessly add Zoom video conferencing links to your calendar invitations.": [ "Permet d'ajouter de manière transparente des liens de visioconférence Zoom à vos invitations de calendrier." ], @@ -25209,6 +26646,9 @@ "Each imported email will have this label": [ "Chaque message importé aura ce label." ], + "Early access to new apps and features.": [ + "Accès en avant-première aux nouvelles fonctionnalités et applications." + ], "Edit folder names": [ "Modifiez les noms des dossiers." ], @@ -25257,6 +26697,12 @@ "If you purchased a gift code or received one from our support team, you can enter it here.": [ "Si vous avez acheté un code-cadeau ou si vous en avez reçu un de notre équipe support, vous pouvez le saisir ici." ], + "Includes custom email domains and unlimited hide-my-email aliases in ${ MAIL_APP_NAME }, access to servers in 120+ countries in ${ VPN_SHORT_APP_NAME }, built-in 2FA and secure sharing in ${ PASS_SHORT_APP_NAME }, and more.": [ + "Inclut des domaines de messagerie personnalisés et des alias hide-my-email illimités dans ${ MAIL_APP_NAME }, un accès à des serveurs dans 120+ pays dans ${ VPN_SHORT_APP_NAME }, l'authentification à deux facteurs intégrée et le partage sécurisé dans ${ PASS_SHORT_APP_NAME }, et bien plus encore." + ], + "Includes professional email at @yourdomain.com, cloud storage with collaborative document editing, scheduling and video conferencing, password management, a secure ${ VPN_SHORT_APP_NAME }, and more.": [ + "Inclut un e-mail professionnel en @votre-entreprise.fr, de l'espace de stockage distant permettant l'édition collaborative de documents, la planification et les vidéoconférences, la gestion des mots de passe, un ${ VPN_SHORT_APP_NAME } sécurisé, et bien plus." + ], "Members who do not use 2FA will get an email asking them to enable it as soon as possible. Single sign-on users will not receive the email reminder.": [ "Les membres qui n'utilisent pas l'A2F recevront un e-mail leur demandant de l'activer dès que possible. Les utilisateurs avec authentification unique ne recevront pas d'e-mail de rappel." ], @@ -25278,6 +26724,15 @@ "Remove metadata from images to protect your privacy.": [ "Supprimer les métadonnées des images pour préserver votre confidentialité." ], + "Save 12-word long phrase to unlock your account and your encrypted data instantly if you forgot your password": [ + "Sauvegardez une phrase de 12 mots afin de déverrouiller instantanément votre compte et vos données chiffrées si vous oubliez votre mot de passe." + ], + "Save an encryption backup file in this browser to recover your data after a password reset": [ + "Enregistrez un fichier de sauvegarde de chiffrement dans ce navigateur pour récupérer vos données après une réinitialisation de mot de passe." + ], + "Save an encryption backup file to recover your data after a password reset": [ + "Enregistrez un fichier de sauvegarde de chiffrement pour récupérer vos données après une réinitialisation de mot de passe." + ], "See number of unread messages in the tab icon": [ "Affichez le nombre de messages non lus sur l'icône dans l'onglet de navigation" ], @@ -25350,8 +26805,8 @@ "This feature is only available on Beta": [ "Cette fonctionnalité n'est disponible que sur la version bêta." ], - "This is the default key used by other ${ MAIL_APP_NAME } users on older mobile apps to encrypt data they send to you": [ - "Il s'agit de la clé par défaut utilisée par les autres utilisateurs de ${ MAIL_APP_NAME } sur les anciennes applications mobiles pour chiffrer les données qu'ils vous envoient." + "This is the default key used by other ${ MAIL_APP_NAME } users on older apps to encrypt data they send to you": [ + "Il s'agit de la clé par défaut utilisée par les autres utilisateurs de ${ MAIL_APP_NAME } sur les anciennes applications pour chiffrer les données qu'ils vous envoient." ], "This is the default key used by other ${ MAIL_APP_NAME } users to encrypt data they send to you": [ "Il s’agit de la clé par défaut utilisée par les autres utilisateurs de ${ MAIL_APP_NAME } pour chiffrer les données qu’ils vous envoient." @@ -25439,6 +26894,9 @@ "User is a group": [ "L’utilisateur est un groupe" ], + "via ${ groupName }": [ + "via ${ groupName }" + ], "Waiting for user to accept the invitation": [ "En attente de l’acceptation de l’invitation par l’utilisateur" ] @@ -25762,6 +27220,12 @@ ] }, "user_modal": { + "(via ${ groupName })": [ + "(via ${ groupName })" + ], + "(via group)": [ + "(via le groupe)" + ], "Add delegated roles to a user to grant them only the specific permissions they need, keeping full-admin power separate and your environment secure.": [ "Ajoutez des rôles délégués à un utilisateur pour lui accorder uniquement les autorisations spécifiques dont il a besoin, en gardant le pouvoir d'administrateur complet séparé et votre environnement sécurisé." ], @@ -26149,11 +27613,14 @@ "${ BRAND_NAME } will transfer as much data as possible, starting with your most recent messages.": [ "${ BRAND_NAME } transférera autant de données que possible, en commençant par vos messages les plus récents." ], - "Are you sure you want to delete the phone number?": [ - "Voulez-vous vraiment supprimer ce numéro de téléphone ?" + "Are you sure you want to remove your notification email?": [ + "Voulez-vous vraiment retirer votre e-mail de notification ?" ], - "Are you sure you want to delete this address?": [ - "Voulez-vous vraiment supprimer cette adresse ?" + "Are you sure you want to remove your recovery email?": [ + "Voulez-vous vraiment retirer votre e-mail de récupération ?" + ], + "Are you sure you want to remove your recovery phone number?": [ + "Voulez-vous vraiment retirer votre numéro de téléphone de récupération ?" ], "By deleting this address, you will no longer be able to receive daily email notifications.": [ "En supprimant cette adresse, vous ne pourrez plus recevoir de notifications quotidiennes par e-mail." @@ -26164,8 +27631,8 @@ "By deleting this address, you will no longer be able to recover your account.": [ "En supprimant cette adresse, vous ne pourrez plus récupérer votre compte." ], - "By deleting this phone number, you will no longer be able to recover your account.": [ - "En supprimant ce numéro de téléphone, vous ne pourrez plus récupérer votre compte." + "By removing this phone number, you will no longer be able to recover your account.": [ + "En retirant ce numéro de téléphone, vous ne pourrez plus récupérer votre compte." ], "Could not login. Please open ${ PASS_APP_NAME } browser extension and login from there.": [ "Impossible de se connecter. Veuillez ouvrir l'extension de navigateur ${ PASS_APP_NAME } et vous connecter à partir de là." diff --git a/applications/account/locales/hi_IN.json b/applications/account/locales/hi_IN.json index 21c3422b05d..ba8ee6a3e52 100644 --- a/applications/account/locales/hi_IN.json +++ b/applications/account/locales/hi_IN.json @@ -3616,9 +3616,6 @@ "Disabled": [ "अक्षम किया" ], - "None": [ - "कुछ नहीं" - ], "Upgrade to ${ planName }": [ "${ planName } पे अपग्रेड करें" ], @@ -3939,9 +3936,6 @@ "Please try again in a few moments.": [ "कृपया कुछ क्षणों में फिर कोशिश करें।" ], - "Please upgrade to a business plan with more than 1 user to get multi-user support": [ - "एकाधिक उपयोगकर्ता समर्थन पाने के लिए 1 से अधिक उपयोगकर्ता वाली व्यावसायिक योजना में अपग्रेड करें" - ], "Please upgrade to a business plan with more than 1 user to manage multiple users.": [ "कई-यूज़र संभालने के लिए कृपया 1 से ज़्यादा यूज़र वाले बिज़नेस प्लान पे अपग्रेड करें।" ], @@ -5868,10 +5862,6 @@ "Add your name and logo to create a more personalized experience for your organization.": [ "अपने संगठन के लिए व्यक्तिगत अनुभव बनाने के लिए अपना नाम और चिन्ह जोड़ें।" ], - "Adding ${ addedServerCount } gateway server": [ - "${ addedServerCount } गेटवे सर्वर जोड़ा जा रहा है", - "${ addedServerCount } गेटवे सर्वर जोड़ें जा रहें हैं" - ], "Adding an external email address will disable end-to-end encryption for all email communication within that group. Do you want to proceed?": [ "किसी बाहरी ईमेल पते को जोड़ने से उस समूह के भीतर सभी ईमेल संचार के लिए शुरू-से-अंत तक एन्क्रिप्शन अक्षम हो जाएगा। क्या आप आगे बढ़ना चाहते हैं?" ], @@ -6068,9 +6058,6 @@ "Change your password": [ "अपना पासवर्ड बदलें" ], - "Check the status of imports and forwarding.": [ - "आयात और फॉरवर्ड की स्थिती देखें।" - ], "Choose an Entity ID to continue.": [ "जारी रखने के लिए एक Entity ID चुनें।" ], @@ -7848,9 +7835,6 @@ "You can edit this once to ensure the correct email address for verification.": [ "सत्यापन के लिए सही ईमेल पता सुनिश्चित करने के लिए आप इसे एक बार संपादित कर सकते हैं।" ], - "You can enable the Photos section from the interface using the toggle below.": [ - "आप इंटरफ़ेस में नीचे दिए गए टॉगल का उपयोग करके Photos सेक्शन सक्षम कर सकते हैं।" - ], "You can keep up to ${ MAX_CALENDARS_FREE } calendar. Please remove shared calendar links and any ${ BRAND_NAME } user with whom you shared your calendars before you cancel your ${ MAIL_SHORT_APP_NAME } subscription.": [ "आप ${ MAX_CALENDARS_FREE } कैलेंडर तक रख सकत है। अपना ${ MAIL_SHORT_APP_NAME } सब्सक्रिप्शन रद्द करने से पहले कृपया शेयर किये गए कैलेंडर लिंक और किसी भी ${ BRAND_NAME } यूज़र जिसके साथ आपने पहले कैलेंडर शेयर किया है को हटाए।", "आप ${ MAX_CALENDARS_FREE } कैलेंडर तक रख सकत है। अपना ${ MAIL_SHORT_APP_NAME } सब्सक्रिप्शन रद्द करने से पहले कृपया शेयर किये गए कैलेंडर लिंक और किसी भी ${ BRAND_NAME } यूज़र जिसके साथ आपने पहले कैलेंडर शेयर किये है को हटाए।" @@ -10968,9 +10952,6 @@ "${ app } product updates": [ "${ app } प्रोडक्ट अपडेट" ], - "${ BRAND_NAME } for Business newsletter": [ - "${ BRAND_NAME } for Business समाचार पत्रिका" - ], "${ BRAND_NAME } important announcements": [ "${ BRAND_NAME } महत्वपूर्ण घोषणाएँ" ], @@ -11019,9 +11000,6 @@ "During your first month of using a ${ BRAND_NAME } product": [ "आपके ${ BRAND_NAME } उत्पाद के उपयोग के पहले महीने के दौरान" ], - "Email subscriptions": [ - "ईमेल सदस्यताएँ" - ], "In-app notifications": [ "अनुप्रयोग के अंतर्गत अधिसूचनाएँ" ], @@ -11661,15 +11639,9 @@ "per month, billed every two years": [ "प्रति माह, हर दो साल में बिल किया गया" ], - "Preparing your Recovery Kit": [ - "आपका रिकवरी किट तैयार किया जा रहा है" - ], "Protected by Swiss privacy laws": [ "स्विस निजता कानूनो से सुरक्षित रखा गया" ], - "Save your recovery kit to continue": [ - "जारी रखने के लिए अपना रिकवरी किट सहेजें" - ], "Secure vault sharing": [ "सुरक्षित वॉल्ट साझाकरण" ], @@ -12363,9 +12335,6 @@ "Back to Safety Review": [ "सुरक्षा समीक्षा पर वापस जाएँ" ], - "Because you reset your password, your current Recovery Kit can only be used to recover the data created before your password reset.": [ - "क्योंकि आपने अपना पासवर्ड रीसेट किया है, आपका वर्तमान रिकवरी किट केवल आपके पासवर्ड रीसेट से पहले बनाए गए डाटा को पुनर्प्राप्त करने के लिए ही उपयोग किया जा सकता है।" - ], "Can be used to regain access to your account and data": [ "इसे आपके खाते और डाटा तक फिर से पहुँच पाने के लिए उपयोग किया जा सकता है" ], @@ -12384,9 +12353,6 @@ "Download ${ size }": [ "${ size } डाउनलोड करें" ], - "Download your Recovery Kit": [ - "अपना रिकवर किट डाउनलोड करें" - ], "Email address": [ "ईमेल पता" ], @@ -12399,18 +12365,12 @@ "Enable recovery by phone": [ "फ़ोन द्वारा रिकवरी सक्षम करें" ], - "I understand that I will not be able to recover currently locked data with this Recovery Kit": [ - "मैं समझता/समझती हूँ कि मैं इस रिकवरी किट से वर्तमान में लॉक किए गए डाटा को रिकवर नहीं कर पाऊँगा" - ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in on this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "यदि आप अपना ${ BRAND_NAME } पासवर्ड भूल जाते हैं और उसे रीसेट करने की आवश्यकता होती है, तो अगली बार जब आप इस डिवाइस पर अपने नए पासवर्ड का उपयोग करके साइनइन करेंगे, तब आपके ${ BRAND_NAME } खाते तक पूर्ण पहुँच बहाल हो जाएगी।" ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "यदि आप अपना ${ BRAND_NAME } पासवर्ड भूल जाते हैं और इसे रीसेट करने की आवश्यकता पड़ती है, तो अगली बार जब आप इस डिवाइस पर अपने नए पासवर्ड का उपयोग करके साइनइन करेंगे, तो आपके ${ BRAND_NAME } खाता का पूरा एक्सेस पुनर्स्थापित कर दिया जाएगा।" ], - "If you get locked out of your ${ BRAND_NAME } Account, your Recovery Kit will allow you to sign in and recover your data.": [ - "यदि आप अपने ${ BRAND_NAME } खाता से लॉक आउट हो जाते हैं, तो आपका रिकवरी किट आपको साइन इन करने और अपना डाटा पुनर्प्राप्त करने की अनुमति देगा।" - ], "If you lose your login details and need to reset your account, **it’s imperative** that you have both an **account recovery and data recovery method** in place, otherwise you might not be able to access any of your emails, contacts, files or passwords.": [ "यदि आप अपना लॉगिन विवरण खो देते हैं और अपने खाते को रीसेट करने की आवश्यकता पड़ती है, तो **यह अनिवार्य है** कि आपके पास **खाते की रिकवरी और डाटा रिकवरी विधि** दोनों उपलब्ध हों, अन्यथा आप अपने किसी भी ईमेल, संपर्क, फ़ाइल या पासवर्ड तक पहुँच नहीं पाएंगे।" ], @@ -12447,9 +12407,6 @@ "Take action to secure your account": [ "अपने खाते को सुरक्षित करने के लिए कदम उठाएं" ], - "There was an error generating your Recovery Kit": [ - "आपके रिकवरी किट को जनरेट करते समय त्रुटि हुई" - ], "There was an error verifying your recovery email": [ "आपका रिकवर ईमेल सत्यापित करने में एक एरर हुआ" ], @@ -12471,12 +12428,6 @@ "to recover your account if you're ever locked out": [ "यदि आप कभी लॉक हो जाएँ, तो अपने खाते को रिकवर करें" ], - "Update your Recovery Kit": [ - "अपने रिकवर किट को अपडेट करें" - ], - "Update your Recovery Kit?": [ - "क्या आप अपना रिकवरी किट अपडेट करना चाहेंगे?" - ], "Verify": [ "सत्यापित करें" ], @@ -12486,9 +12437,6 @@ "Verify your recovery phone number": [ "अपने रिकवर फ़ोन नंबर को सत्यापित करें" ], - "We encountered an error while generating your Recovery Kit. Please try again later, or contact support if the issue continues.": [ - "हमने आपके रिकवरी किट को जनरेट करते समय त्रुटि पाई। कृपया बाद में पुनः प्रयास करें, या यदि समस्या जारी रहे तो सहायता से संपर्क करें।" - ], "We encountered an error while verifying your recovery email. Please try again later, or contact support if the issue continues.": [ "हमने आपके रिकवर ईमेल को सत्यापित करते समय एक एरर का सामना किया। कृपया बाद में पुनः प्रयास करें, या अगर समस्या बनी रहे तो सहायता से संपर्क करें।" ], @@ -12507,18 +12455,12 @@ "You can disable this at any time.": [ "आप इसे कभी भी अक्षम कर सकते हैं।" ], - "You can use the recovery phrase in this Recovery Kit to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ - "आप इस रिकवरी किट में मौजूद पुनर्प्राप्ति वाक्यांश का उपयोग अपना पासवर्ड रीसेट करने पर अपने खाते को पूरी तरह से पुनर्स्थापित करने के लिए कर सकते हैं, इसलिए यह सुनिश्चित करें कि आप इसे कहीं सुरक्षित रखें।" - ], "You can use your recovery email to regain access to your account if you forget your password.": [ "यदि आप अपना पासवर्ड भूल जाते हैं तो आप अपने रिकवर ईमेल का उपयोग करके अपने खाते तक पहुँच पुनः प्राप्त कर सकते हैं।" ], "You can use your recovery phone to regain access to your account if you forget your password.": [ "यदि आप अपना पासवर्ड भूल जाते हैं, तो अपने खाते तक पुनः पहुँच पाने के लिए आप अपने रिकवरी फोन का उपयोग कर सकते हैं।" ], - "You have previously downloaded a Recovery Kit. Downloading a new one will **deactivate the old one**.": [ - "आपने पहले ही एक रिकवरी किट डाउनलोड कर लिया है। नया डाउनलोड करने से **पुराना निष्क्रिय हो जाएगा**।" - ], "You have recommended actions.": [ "आपके पास अनुशंसित कार्रवाइयाँ हैं।" ], @@ -12558,12 +12500,6 @@ "Your recovery email is set": [ "आपका रिकवर ईमेल सेट है" ], - "Your Recovery Kit": [ - "आपका रिकवर किट" - ], - "Your Recovery Kit is set": [ - "आपका रिकवरी किट सेट है" - ], "Your recovery methods": [ "आपके रिकवर तरीके" ], @@ -14805,18 +14741,12 @@ "Confirm": [ "पुष्टि करें" ], - "Confirm address": [ - "पते की पुष्टि" - ], "Confirm downgrade": [ "अधोगति की पुष्टि करें" ], "Confirm loss of ${ BRAND_NAME } bonuses": [ "${ BRAND_NAME } बोनस का नुकसान मानें" ], - "Confirm phone number": [ - "फ़ोन नंबर की पुष्टि करें" - ], "Connect ${ name }": [ "जुड़े ${ name }" ], @@ -15355,9 +15285,6 @@ "Phone": [ "फोन" ], - "Photos": [ - "तस्वीरें" - ], "Pin the extension": [ "एक्सटेंशन को पिन करें" ], @@ -15562,6 +15489,9 @@ "SMTP submission": [ "SMTP सबमिशन" ], + "Something went wrong": [ + "कोई गड़बड़ हो गई" + ], "Sort folders alphabetically": [ "फ़ोल्डरों को वर्णानुक्रम में क्रमबद्ध करें" ], @@ -16505,12 +16435,6 @@ "${ BRAND_NAME } will transfer as much data as possible, starting with your most recent messages.": [ "${ BRAND_NAME }, आपके सबसे हाल के संदेशों से शुरू करते हुए, जितना हो सके उतना डाटा ट्रांसफर करेगा।" ], - "Are you sure you want to delete the phone number?": [ - "क्या आप वाकई फ़ोन नंबर हटाना चाहते हैं?" - ], - "Are you sure you want to delete this address?": [ - "क्या आप वाकई इस पते को मिटाना चाहते हैं?" - ], "By deleting this address, you will no longer be able to receive daily email notifications.": [ "इस पते को हटाकर, आप अब दैनिक ईमेल सूचनाएं प्राप्त नहीं कर पाएंगे।" ], @@ -16520,9 +16444,6 @@ "By deleting this address, you will no longer be able to recover your account.": [ "इस पते को हटाकर, आप अपना खाता पुनर्प्राप्त नहीं कर पाएंगे।" ], - "By deleting this phone number, you will no longer be able to recover your account.": [ - "इस फ़ोन नंबर को हटाने से, आप अपने खाते को पुनर्प्राप्त नहीं कर पाएंगे।" - ], "If you cancel this import, you won't be able to resume it. ${ BRAND_NAME } saved all progress in your account. Cancel anyway?": [ "अगर आप इस आयात को रद्द करते हैं, तो आप इसे जारी नहीं रख पाएंगे। ${ BRAND_NAME } ने आपके खाते में सारी प्रगति सेव कर ली है। फिर भी रद्द करें?" ], diff --git a/applications/account/locales/hr_HR.json b/applications/account/locales/hr_HR.json index 2a282537a33..e1666291eea 100644 --- a/applications/account/locales/hr_HR.json +++ b/applications/account/locales/hr_HR.json @@ -2907,9 +2907,6 @@ "It looks like the contact list you are importing contains some groups. Please review how these groups should be imported.": [ "Popis kontakata koji uvozite sadrži neke grupe. Pregledajte kako bi ove grupe trebalo uvesti." ], - "Send a code to your recovery email or phone": [ - "Pošaljite kôd na svoju adresu e-pošte za oporavak ili telefon" - ], "You can import events in iCal format (ICS file). The file should have a maximum size of ${ MAX_IMPORT_FILE_SIZE_STRING } and have up to ${ MAX_IMPORT_EVENTS_STRING } events. If your file is bigger, please split it into smaller files.": [ "Možete uvesti događaje u iCal formatu (ICS datoteka). Datoteka bi trebala imati maksimalnu veličinu od ${ MAX_IMPORT_FILE_SIZE_STRING } i imati do ${ MAX_IMPORT_EVENTS_STRING } događaja. Ako je vaša datoteka veća, podijelite je na manje datoteke." ] @@ -3329,9 +3326,6 @@ "Less than a minute left": [ "Još manje od minute" ], - "None": [ - "Ništa" - ], "Only ": [ "Samo " ], @@ -3612,9 +3606,6 @@ "Please set a recovery phone number first": [ "Prvo postavite broj telefona za oporavak" ], - "Please upgrade to a business plan with more than 1 user to get multi-user support": [ - "Molimo nadogradite na poslovni plan s više od jednog korisnika kako biste dobili podršku za više korisnika." - ], "Please upgrade to a business plan with more than 1 user to manage multiple users.": [ "Molimo nadogradite na poslovnu pretplatu s više od jednog korisnika kako biste upravljali višestrukim korisnicima." ], @@ -5145,9 +5136,6 @@ "Change your password": [ "Promijenite vašu lozinku" ], - "Check the status of imports and forwarding.": [ - "Provjerite status uvoza i prosljeđivanja." - ], "Choose an Entity ID to continue.": [ "Odaberite ID entiteta za nastavak." ], @@ -6260,9 +6248,6 @@ "You are using more storage than what is included in a ${ downgradedPlanName } plan. Please delete or remove data in order to downgrade.": [ "Koristite više pohrane nego što je uključeno u ${ downgradedPlanName } plan. Molimo izbrišite ili uklonite podatke kako biste se unazadili." ], - "You can enable the Photos section from the interface using the toggle below.": [ - "Možete omogućiti odjeljak Fotografije iz sučelja pomoću prekidača u nastavku." - ], "You can now access and manage the account as an administrator.": [ "Sada možete pristupiti korisničkom računu i upravljati njime kao administrator." ], @@ -8837,9 +8822,6 @@ "During your first month of using a ${ BRAND_NAME } product": [ "Tijekom prvog mjeseca korištenja ${ BRAND_NAME } proizvoda" ], - "Email subscriptions": [ - "Redovno slanje e-pošte" - ], "In-app notifications": [ "Obavijesti unutar aplikacije" ], @@ -9338,9 +9320,6 @@ "per month, billed every two years": [ "mjesečno, naplaćuje se svake dvije godine" ], - "Preparing your Recovery Kit": [ - "Priprema Vašeg Kompleta za oporavak" - ], "Protected by Swiss privacy laws": [ "Zaštićeno švicarskim zakonima o privatnosti" ], @@ -9872,9 +9851,6 @@ ] }, "RecoveryPhrase: Title": { - "Save your Recovery Kit": [ - "Spremite svoj Komplet za oporavak" - ], "Save your recovery phrase": [ "Spremite svoju frazu za oporavak" ] @@ -10065,12 +10041,6 @@ "Enable recovery by phone": [ "Omogući oporavak putem telefona" ], - "I understand that I will not be able to recover currently locked data with this Recovery Kit": [ - "Razumijem da s ovim Kompletom za oporavak neću moći oporaviti trenutno zaključane podatke" - ], - "If you get locked out of your ${ BRAND_NAME } Account, your Recovery Kit will allow you to sign in and recover your data.": [ - "Ako se zaključate iz svog ${ BRAND_NAME } korisničkog računa, vaš Komplet za oporavak omogućit će vam da se prijavite i oporavite svoje podatke." - ], "Invalid code": [ "Nevažeći kôd" ], @@ -10092,21 +10062,12 @@ "Take action to secure your account": [ "Poduzmite radnje za zaštitu Vašeg korisničkog računa" ], - "There was an error generating your Recovery Kit": [ - "Došlo je do pogreške prilikom generiranja Vašeg kompleta za oporavak" - ], "To make sure the phone number is yours, enter the verification code sent to ${ boldPhoneNumber }.": [ "Kako bismo bili sigurni da je telefonski broj Vaš, unesite verifikacijski kôd poslan na ${ boldPhoneNumber }." ], "to recover your account and data if you're ever locked out": [ "za oporavak Vašeg korisničkog računa i podataka ako Vam ikada bude onemogućen pristup" ], - "Update your Recovery Kit": [ - "Ažurirajte Vaš Komplet za oporavak" - ], - "Update your Recovery Kit?": [ - "Ažurirajte Vaš Komplet za oporavak?" - ], "Verify": [ "Potvrda" ], @@ -10116,18 +10077,12 @@ "You can disable this at any time.": [ "Možete onemogućiti ovo u bilo kojem trenutku." ], - "You can use the recovery phrase in this Recovery Kit to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ - "Možete koristiti sigurnosnu frazu iz ovog Kompleta za oporavak kako biste u potpunosti vratili svoj račun prilikom poništavanja lozinke, stoga je svakako čuvajte na sigurnom mjestu." - ], "You can use your email to regain access to your account if you forget your password.": [ "Možete koristiti svoju e-poštu kako biste ponovno pristupili svom korisničkom računu, ako zaboravite svoju lozinku." ], "You can use your recovery phone to regain access to your account if you forget your password.": [ "Možete koristiti svoj telefon za oporavak kako biste ponovno pristupili svom korisničkom računu ako zaboravite svoju lozinku." ], - "You have previously downloaded a Recovery Kit. Downloading a new one will **deactivate the old one**.": [ - "Prethodno ste preuzeli Komplet za oporavak. Preuzimanjem novog, **stari će biti deaktiviran**." - ], "Your account and data can be recovered. You have recommended actions.": [ "Vaš korisnički račun i podaci mogu se oporaviti. Imate preporučene radnje." ], @@ -10155,12 +10110,6 @@ "Your recovery email is set": [ "Vaša adresa e-pošte za oporavak je postavljena" ], - "Your Recovery Kit": [ - "Vaš Komplet za oporavak" - ], - "Your Recovery Kit is set": [ - "Vaš Komplet za oporavak je postavljen" - ], "Your recovery methods": [ "Vaši načini oporavka" ], @@ -11891,15 +11840,9 @@ "Confirm": [ "Potvrdi" ], - "Confirm address": [ - "Potvrdite adresu e-pošte" - ], "Confirm downgrade": [ "Potvrdi snižavanje statusa" ], - "Confirm phone number": [ - "Potvrdite broj telefona" - ], "Connect ${ name }": [ "Poveži sa ${ name }" ], @@ -12347,9 +12290,6 @@ "Phone": [ "Telefon" ], - "Photos": [ - "Fotografije" - ], "Policies": [ "Pravila" ], @@ -12527,6 +12467,9 @@ "Snooze:": [ "Odgodi:" ], + "Something went wrong": [ + "Nešto je pošlo po zlu" + ], "Sort folders alphabetically": [ "Sortiraj mape abecedno" ], @@ -13225,12 +13168,6 @@ "${ BRAND_NAME } will transfer as much data as possible, starting with your most recent messages.": [ "${ BRAND_NAME } će prenijeti što više podataka, počevši od vaših najnovijih poruka." ], - "Are you sure you want to delete the phone number?": [ - "Jeste li sigurni da želite izbrisati broj telefona?" - ], - "Are you sure you want to delete this address?": [ - "Jeste li sigurni da želite ukloniti ovu adresu?" - ], "By deleting this address, you will no longer be able to receive daily email notifications.": [ "Brisanjem ove adrese više nećete moći primati svakodnevne obavijesti putem e-pošte." ], @@ -13240,9 +13177,6 @@ "By deleting this address, you will no longer be able to recover your account.": [ "Brisanjem ove adrese više nećete moći vratiti svoj račun." ], - "By deleting this phone number, you will no longer be able to recover your account.": [ - "Brisanjem ovog broj telefona više nećete moći vratiti svoj račun." - ], "Please add at least one recipient.": [ "Molim unesite barem jednog primatelja." ], diff --git a/applications/account/locales/hu_HU.json b/applications/account/locales/hu_HU.json index b35353e5bb4..98e13695dc4 100644 --- a/applications/account/locales/hu_HU.json +++ b/applications/account/locales/hu_HU.json @@ -2157,6 +2157,10 @@ "${ maxSpaceTB } storage": [ "${ maxSpaceTB } tárhely" ], + "${ numberOfUsers } user": [ + "${ numberOfUsers } felhasználó", + "Akár ${ numberOfUsers } felhasználó" + ], "${ planMaxSpace } email storage": [ "${ planMaxSpace } e-mail tárhely" ], @@ -3684,9 +3688,6 @@ "No one in your organization can connect to shared servers.": [ "A szervezeten belül senki sem csatlakozhat a megosztott szerverhez." ], - "Send a code to your recovery email or phone": [ - "Kód küldése a helyreállítási e-mail címre vagy telefonszámra" - ], "Set up accounts for all users and invite them to join ${ BRAND_NAME }.": [ "Állítson be fiókokat minden felhasználó számára, és hívja meg őket, hogy csatlakozzanak a(z) ${ BRAND_NAME }-hoz/höz." ], @@ -4341,9 +4342,6 @@ "Give immediate access?": [ "Azonnali hozzáférést biztosít?" ], - "None": [ - "Nincs" - ], "Only ": [ "Csak " ], @@ -4715,9 +4713,6 @@ "Please try again in a few moments.": [ "Néhány perc múlva próbálja meg újra." ], - "Please upgrade to a business plan with more than 1 user to get multi-user support": [ - "Váltson nagyobb üzleti csomagra, egynél több felhasználval, a többfelhasználós lehetőségekhez" - ], "Please upgrade to a business plan with more than 1 user to manage multiple users.": [ "Váltson egy üzleti csomagra, egynél több felhasználval, hogy több felhasználót kezelhessen." ], @@ -5353,6 +5348,10 @@ "To ease the transition, we’re giving you a 30-day free trial of ${ BRAND_NAME } Unlimited*.": [ "Az átállás megkönnyítése érdekében 30 napos ingyenes próbaidőszakot biztosítunk a(z) ${ BRAND_NAME } Unlimited* szolgáltatáshoz." ], + "View the invitation": [ + "Meghívás megtekintése", + "Meghívások megtekintése" + ], "You are invited to join ${ invite.OrganizationName }": [ "Meghívást kapott a csatlakozáshoz: ${ invite.OrganizationName }" ], @@ -6837,10 +6836,6 @@ "Add your name and logo to create a more personalized experience for your organization.": [ "Állítsa be a szervezet nevét és logóját, hogy személyesebb élményt nyújtson a szervezet számára." ], - "Adding ${ addedServerCount } gateway server": [ - "${ addedServerCount } átjárószerver hozzáadása", - "${ addedServerCount } átjárószerver hozzáadása" - ], "Adding an external email address will disable end-to-end encryption for all email communication within that group. Do you want to proceed?": [ "Egy külső e-mail cím hozzáadása kikapcsolja a végponttól-végpontig titkosítást az adott csoporton belüli összes e-mail kommunikációban. Szeretné folytatni?" ], @@ -7061,9 +7056,6 @@ "Change your password": [ "Jelszó megváltoztatása" ], - "Check the status of imports and forwarding.": [ - "Importálások és továbbítások helyzetének ellenőrzése." - ], "Choose a plan that works best for you.": [ "Válassza ki az Önnek legjobban megfelelő csomagot." ], @@ -7140,10 +7132,6 @@ "Create a label for the imported messages, a time range for this import, and the labels you would like to import.": [ "Hozzon létre egy címkét az importált levelekhez, válassza ki a kívánt idő intervallumot és adja meg az importálandó címkéket." ], - "Create a secure cloud for ${ value } member": [ - "Hozzon létre biztonságos felhőárhelyet ${ value } tagnak", - "Hozzon létre biztonságos felhőárhelyet ${ value } tagnak" - ], "Create and manage sub-accounts and assign them email addresses on your custom domain.": [ "Hozzon létre és kezeljen al-fiókokat és rendeljen hozzájuk e-mail címeket a saját domain nevén." ], @@ -9077,9 +9065,6 @@ "You can edit this once to ensure the correct email address for verification.": [ "Ezt egyszer szerkesztheti, hogy biztosítsa a helyes e-mail címet hitelesítéshez." ], - "You can enable the Photos section from the interface using the toggle below.": [ - "A Fotók részt az alábbi kapcsoló segítségével engedélyezheti a felületen." - ], "You can enforce the password rules members of your organization will use when they create or reset the password to their ${ BRAND_NAME } Account.": [ "Érvényesítheti a jelszószabályokat, amelyeket a szervezetének tagjai alkalmazni fognak, amikor létrehozzák vagy visszaállítják a ${ BRAND_NAME } fiókjuk jelszavát." ], @@ -12688,9 +12673,6 @@ "${ app } product updates": [ "${ app } hírek" ], - "${ BRAND_NAME } for Business newsletter": [ - "${ BRAND_NAME } üzleti hírlevél" - ], "${ BRAND_NAME } important announcements": [ "Fontos ${ BRAND_NAME } bejelentések" ], @@ -12739,9 +12721,6 @@ "During your first month of using a ${ BRAND_NAME } product": [ "A ${ BRAND_NAME } termék használatának első hónapjában" ], - "Email subscriptions": [ - "E-mail feliratkozás" - ], "In-app notifications": [ "Alkalmazáson belüli értesítések" ], @@ -13535,15 +13514,9 @@ "per month, billed every two years": [ "havonta, kétévente számlázva" ], - "Preparing your Recovery Kit": [ - "Helyreállító csomag elkészítése" - ], "Protected by Swiss privacy laws": [ "Svájc adatvédelmi törvényei által védve" ], - "Save your recovery kit to continue": [ - "Mentse le a helyreállítási csomagot a továbblépéshez" - ], "Secure vault sharing": [ "Biztonságos tároló-megosztás" ], @@ -14357,11 +14330,6 @@ "Megjelenítés" ] }, - "RecoveryPhrase: Title": { - "Save your Recovery Kit": [ - "Mentse el a helyreállító csomagját" - ] - }, "Referral": { "${ referrerRewardAmount } per referral": [ "${ referrerRewardAmount } ajánlásonként" @@ -14490,9 +14458,6 @@ "Back to Safety Review": [ "Vissza a Biztonsági áttekintésre" ], - "Because you reset your password, your current Recovery Kit can only be used to recover the data created before your password reset.": [ - "Mivel visszaállította a jelszavát, a jelenlegi Helyreállító csomag csak azon adatok helyreállítására alkalmas, amik a jelszó visszaállítása előtt jöttek létre." - ], "Can be used to regain access to your account and data": [ "A fiókjához és az adataihoz való hozzáférés helyreállítására használható" ], @@ -14511,9 +14476,6 @@ "Download ${ size }": [ "Letöltés ${ size }" ], - "Download your Recovery Kit": [ - "Helyreállító csomag letöltése" - ], "Email address": [ "E-mail cím" ], @@ -14526,18 +14488,12 @@ "Enable recovery by phone": [ "Helyreállítás engedélyezése telefonnal" ], - "I understand that I will not be able to recover currently locked data with this Recovery Kit": [ - "Megértettem, hogy a jelenleg zárolt adatokat nem fogom tudni helyreállítani ezzel a Helyreállító csomaggal" - ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in on this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Ha elfelejti a ${ BRAND_NAME } jelszavát, és vissza kell állítania, az ezen az eszközön az új jelszavával való következő bejelentkezéskor, a ${ BRAND_NAME } fiókjához való teljes hozzáférése helyreáll." ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Ha elfelejti a ${ BRAND_NAME } jelszavát, és vissza kell állítania, az ezen az eszközön az új jelszavával való következő bejelentkezéskor, a ${ BRAND_NAME } fiókjához való teljes hozzáférése helyreáll." ], - "If you get locked out of your ${ BRAND_NAME } Account, your Recovery Kit will allow you to sign in and recover your data.": [ - "A kizáródna a ${ BRAND_NAME } fiókjából, akkor a Helyreállító csomag segít ismét belépni és az adatait helyreállítani." - ], "If you lose your login details and need to reset your account, **it’s imperative** that you have both an **account recovery and data recovery method** in place, otherwise you might not be able to access any of your emails, contacts, files or passwords.": [ "Ha elveszíti a belépéshez szükséges adatait és vissza kell állítania a fiókját, **feltétlenül szükséges**, hogy legyen **mind fiók, mind pedig adat helyreállítási módszere** beállítva, különben megeshet, hogy nem fogja tudni többé elérni az e-mailjeit, névjegyeit, fájljait vagy jelszavait." ], @@ -14577,9 +14533,6 @@ "Take action to secure your account": [ "Tegyen lépéseket a fióka biztonságáért" ], - "There was an error generating your Recovery Kit": [ - "Hiba történt a Helyreállító csomag létrehozásakor" - ], "There was an error verifying your recovery email": [ "Hiba történt a helyreállítási e-mail cím ellenőrzése során" ], @@ -14601,12 +14554,6 @@ "to recover your account if you're ever locked out": [ "a fiók helyreállításához, ha esetleg kizáródna" ], - "Update your Recovery Kit": [ - "Helyreállító csomag frissítése" - ], - "Update your Recovery Kit?": [ - "Frissíti a Helyreállító csomagját?" - ], "Verify": [ "Ellenőrzés" ], @@ -14616,9 +14563,6 @@ "Verify your recovery phone number": [ "Erősítse meg a helyreállítási telefonszámot" ], - "We encountered an error while generating your Recovery Kit. Please try again later, or contact support if the issue continues.": [ - "Hiba történt a helyreállító csomag létrehozása során. Próbálja meg később, vagy ha a probléma továbbra is fennáll, lépjen kapcsolatba az ügyfélszolgálattal." - ], "We encountered an error while verifying your recovery email. Please try again later, or contact support if the issue continues.": [ "Hiba történt a helyreállítási e-mail cím ellenőrzése során. Próbálja meg később, vagy ha a probléma továbbra is fennáll, lépjen kapcsolatba az ügyfélszolgálattal." ], @@ -14637,18 +14581,12 @@ "You can disable this at any time.": [ "Ezt bármikor kikapcsolhatja." ], - "You can use the recovery phrase in this Recovery Kit to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ - "A helyreállító csomagban található helyreállító jelmondattal teljesen helyreállíthatja a fiókját, ha visszaállítaná a jelszavát, szóval feltétlenül tartsa biztonságos helyen." - ], "You can use your recovery email to regain access to your account if you forget your password.": [ "A helyreállítási e-mail címét használhatja, a fiókja elérésének visszaszerzéséhez, ha elfelejtené a jelszavát." ], "You can use your recovery phone to regain access to your account if you forget your password.": [ "A helyreállítási telefonszámát használhatja, a fiókja elérésének visszaszerzéséhez, ha elfelejtené a jelszavát." ], - "You have previously downloaded a Recovery Kit. Downloading a new one will **deactivate the old one**.": [ - "Már letöltötte a Helyreállító csomagját. Ha egy újat tölt le, az **érvényteleníti a régit**." - ], "You have recommended actions.": [ "Javasolt műveletek érhetők el." ], @@ -14688,12 +14626,6 @@ "Your recovery email is set": [ "A helyreállítási e-mail címe meg van adva" ], - "Your Recovery Kit": [ - "Helyreállítási csomag" - ], - "Your Recovery Kit is set": [ - "A Helyreállító csomagja készen van" - ], "Your recovery methods": [ "Helyreállítási módszerek megjelenítése" ], @@ -17479,18 +17411,12 @@ "Confirm": [ "Jóváhagyás" ], - "Confirm address": [ - "Cím megerősítése" - ], "Confirm downgrade": [ "Lemondás megerősítése" ], "Confirm loss of ${ BRAND_NAME } bonuses": [ "${ BRAND_NAME } kedvezmények lemondásának megerősítése" ], - "Confirm phone number": [ - "Telefonszám megerősítése" - ], "Connect ${ name }": [ "${ name } kapcsolása" ], @@ -17800,6 +17726,9 @@ "${ failedUsers.length } felhasználói fiók létrehozása sikertelen.", "${ failedUsers.length } felhasználói fiók létrehozása sikertelen." ], + "Fewer distractions, more focus": [ + "Kevesebb zavaró tényező, nagyobb összpontosítás" + ], "Filter for more focus": [ "Szűrés a nagyobb összpontosításért" ], @@ -18098,9 +18027,6 @@ "Phone": [ "Telefonszám" ], - "Photos": [ - "Fényképek" - ], "Pin the extension": [ "Rögzítse a bővítményt" ], @@ -18332,6 +18258,9 @@ "Snooze:": [ "Szüneteltetés:" ], + "Something went wrong": [ + "Hiba történt" + ], "Sort folders alphabetically": [ "Mappák rendezése betűrendbe" ], @@ -19376,12 +19305,6 @@ "${ BRAND_NAME } will transfer as much data as possible, starting with your most recent messages.": [ "A ${ BRAND_NAME } annyi adatot áttölt, amennyi lehetséges, a legfrissebb üzenetekkel kezdve." ], - "Are you sure you want to delete the phone number?": [ - "Biztosan törli ezt a telefonszámot?" - ], - "Are you sure you want to delete this address?": [ - "Biztosan törli ezt a címet?" - ], "By deleting this address, you will no longer be able to receive daily email notifications.": [ "A cím törlésével többé nem kaphat napi e-mailes értesítéseket." ], @@ -19391,9 +19314,6 @@ "By deleting this address, you will no longer be able to recover your account.": [ "A cím törlésével a továbbiakban nem lesz képes helyreállítani fiókját." ], - "By deleting this phone number, you will no longer be able to recover your account.": [ - "A telefonszám törlésével a továbbiakban nem lesz képes helyreállítani fiókját." - ], "If you cancel this import, you won't be able to resume it. ${ BRAND_NAME } saved all progress in your account. Cancel anyway?": [ "Ha megszakítja az importálást, nem lehet folytatni. A ${ BRAND_NAME } már mentette az eddig feldolgozott adatokat a fiókjába. Megszakítja?" ], diff --git a/applications/account/locales/id_ID.json b/applications/account/locales/id_ID.json index ef00008f482..eaba420dde6 100644 --- a/applications/account/locales/id_ID.json +++ b/applications/account/locales/id_ID.json @@ -1359,9 +1359,6 @@ "Set as default": [ "Atur sebagai bawaan" ], - "Set as default mail application": [ - "Tetapkan sebagai aplikasi email bawaan" - ], "Set catch-all": [ "Tentukan alamat catch-all" ], @@ -2580,12 +2577,6 @@ ] }, "BOSS": { - "Add a custom domain": [ - "Tambah domain khusus" - ], - "App installed": [ - "Aplikasi dipasang" - ], "Authenticate": [ "Autentikasi" ], @@ -2610,9 +2601,6 @@ "Domain connected": [ "Domain terhubung" ], - "Domain ownership verified": [ - "Kepemilikan domain diverifikasi" - ], "Estimated size": [ "Perkiraan ukuran" ], @@ -2628,15 +2616,9 @@ "Install migration app": [ "Instal aplikasi migrasi" ], - "Learn more about what can be migrated. Learn more": [ - "Pelajari lebih lanjut tentang apa saja yang dapat dimigrasikan. Pelajari selengkapnya" - ], "Mail": [ "Surat" ], - "Migrate": [ - "Migrasikan" - ], "Migrate from Google Workspace": [ "Migrasikan dari Google Workspace" ], @@ -2652,18 +2634,12 @@ "Migration status": [ "Status migrasi" ], - "Not started": [ - "Belum dimulai" - ], "Organization does not have enough seats available": [ "Organisasi tidak memiliki jumlah kuota yang memadai" ], "Organization does not have enough storage available": [ "Organisasi tidak memiliki cukup ruang penyimpanan yang tersedia" ], - "Organization settings": [ - "Pengaturan organisasi" - ], "Required": [ "Wajib diisi" ], @@ -2673,9 +2649,6 @@ "Select at least one user to start a migration": [ "Pilih setidaknya satu pengguna untuk memulai migrasi" ], - "Select what you want to migrate, this will apply to all users whether they are created now or later. Migration will start after user accounts are created.": [ - "Pilih apa yang ingin Anda migrasikan. Pengaturan ini akan berlaku untuk semua pengguna, baik yang dibuat sekarang maupun nanti. Migrasi akan dimulai setelah akun pengguna dibuat." - ], "Set up": [ "Siapkan" ], @@ -2697,18 +2670,12 @@ "Status": [ "Status" ], - "Transfer errors": [ - "Kesalahan transfer" - ], "User": [ "Pengguna" ], "Verify your domain": [ "Verifikasi domain Anda" ], - "Verify your domain ownership": [ - "Verifikasi kepemilikan domain Anda" - ], "Verify your domain to start a migration": [ "Verifikasi domain Anda untuk memulai migrasi" ], @@ -4584,12 +4551,6 @@ "${ DOCS_SHORT_APP_NAME } in ${ DRIVE_APP_NAME } allows you to work together with others in a secure, encrypted environment.": [ "${ DOCS_SHORT_APP_NAME } di ${ DRIVE_APP_NAME } memungkinkan Anda untuk saling bekerja sama dalam lingkungan yang aman dan terenkripsi." ], - "${ MAIL_APP_NAME } is not your default mail application.": [ - "${ MAIL_APP_NAME } bukan aplikasi email bawaan Anda." - ], - "${ MAIL_APP_NAME } is your default mail application.": [ - "${ MAIL_APP_NAME } merupakan aplikasi email bawaan Anda." - ], "A checked box means the feature is disabled.": [ "Boks yang tercentang merupakan tanda bahwa fitur tersebut sedang dinonaktifkan." ], @@ -4692,9 +4653,6 @@ "No one in your organization can connect to shared servers.": [ "Tidak ada siapa pun dalam organisasi Anda yang dapat menghubungkan ke server terbagi." ], - "Send a code to your recovery email or phone": [ - "Kirim kode ke alamat email atau nomor telepon pemulihan Anda" - ], "Set up accounts for all users and invite them to join ${ BRAND_NAME }.": [ "Siapkan akun untuk seluruh pengguna dan undang mereka untuk bergabung dengan ${ BRAND_NAME }" ], @@ -5846,9 +5804,6 @@ "Less than a minute left": [ "Kurang dari satu menit" ], - "None": [ - "Tidak ada" - ], "Only ": [ "Hanya " ], @@ -6378,9 +6333,6 @@ "Please try again in a few moments.": [ "Silakan coba lagi dalam beberapa saat." ], - "Please upgrade to a business plan with more than 1 user to get multi-user support": [ - "Harap tingkatkan jenis akun Anda ke paket bisnis dengan lebih dari 1 pengguna untuk dapat menggunakan fitur dukungan multi-pengguna" - ], "Please upgrade to a business plan with more than 1 user to manage multiple users.": [ "Harap tingkatkan jenis akun Anda ke paket bisnis dengan lebih dari 1 pengguna untuk dapat mengelola banyak pengguna sekaligus." ], @@ -7647,11 +7599,6 @@ "${ BRAND_NAME }. Privasi sebagai hal yang baku." ] }, - "Force upgrade safety review": { - "I understand that I will no longer be able to sign in to older versions of ${ BRAND_NAME } mobile apps.": [ - "Saya mengerti bahwa saya tidak lagi dapat masuk ke aplikasi seluler ${ BRAND_NAME } versi lama." - ] - }, "Form heading": { "Enter your email address": [ "Masukkan alamat email" @@ -7991,9 +7938,6 @@ "Contact us": [ "Hubungi kami" ], - "Downloads": [ - "Unduhan" - ], "Enjoying ${ planName }?": [ "Menikmati ${ planName }?" ], @@ -8736,9 +8680,6 @@ "Add your name and logo to create a more personalized experience for your organization.": [ "Tambahkan nama dan logo Anda untuk menghasilkan pengalaman yang lebih personal bagi organisasi Anda." ], - "Adding ${ addedServerCount } gateway server": [ - "Menambahkan ${ addedServerCount } server gateway" - ], "Adding an external email address will disable end-to-end encryption for all email communication within that group. Do you want to proceed?": [ "Menambahkan alamat emal eksternal ke grup ini akan menonaktifkan enkripsi end-to-end untuk seluruh komunikasi email di dalam grup. Apakah Anda ingin melanjutkan?" ], @@ -9021,9 +8962,6 @@ "Change your password": [ "Ubah kata sandi Anda" ], - "Check the status of imports and forwarding.": [ - "Periksa status proses impor dan penerusan yang sedang berlangsung." - ], "Choose a plan that works best for you.": [ "Pilih paket yang paling sesuai dengan kebutuhan Anda." ], @@ -9108,9 +9046,6 @@ "Create a label for the imported messages, a time range for this import, and the labels you would like to import.": [ "Buat label untuk menandai pesan yang diimpor, rentang waktu impor yang bersangkutan, serta label yang ingin Anda impor." ], - "Create a secure cloud for ${ value } member": [ - "Buat cloud yang aman untuk ${ value } anggota" - ], "Create an account": [ "Buat akun" ], @@ -11214,9 +11149,6 @@ "When disabled, this prevents remote images from loading without your knowledge.": [ "Saat dinonaktifkan, ini mencegah gambar jarak jauh dimuat tanpa sepengetahuan Anda." ], - "When enabled, we will check if ${ MAIL_APP_NAME } is your default mail application and notify you if it is not.": [ - "Saat diaktifkan, kami akan memeriksa apakah ${ MAIL_APP_NAME } adalah aplikasi email bawaan Anda dan memberitahu Anda jika bukan." - ], "When enabling SAML for ${ appName } in your identity provider, you might be prompted to use the callback (ACS) URL and issuer ID. Just copy-paste the data below into your identity provider fields.": [ "Pada saat mengaktifkan SAML untuk ${ appName } di layanan penyedia identitas Anda, Anda mungkin akan diminta untuk menggunakan URL Callback (ACS) dan Issuer ID. Cukup salin dan tempel data di bawah ini ke kolom yang disediakan oleh penyedia identitas Anda." ], @@ -11340,9 +11272,6 @@ "You can edit this once to ensure the correct email address for verification.": [ "Anda dapat mengedit alamat ini satu kali untuk memastikan bahwa alamat email yang akan digunakan untuk verifikasi ini telah sesuai." ], - "You can enable the Photos section from the interface using the toggle below.": [ - "Anda dapat mengaktifkan bagian Foto dari antarmuka menggunakan saklar di bawah." - ], "You can enforce the password rules members of your organization will use when they create or reset the password to their ${ BRAND_NAME } Account.": [ "Anda dapat memberlakukan aturan kata sandi yang akan digunakan oleh anggota organisasi Anda saat mereka membuat atau mengatur ulang kata sandi ke Akun ${ BRAND_NAME } mereka." ], @@ -15657,9 +15586,6 @@ "${ app } product updates": [ "Pembaruan produk ${ app }" ], - "${ BRAND_NAME } for Business newsletter": [ - "Buletin ${ BRAND_NAME } for Business" - ], "${ BRAND_NAME } important announcements": [ "Pengumuman penting ${ BRAND_NAME }" ], @@ -15708,9 +15634,6 @@ "During your first month of using a ${ BRAND_NAME } product": [ "Selama bulan pertama Anda mengunakan produk ${ BRAND_NAME }" ], - "Email subscriptions": [ - "Langganan email" - ], "In-app notifications": [ "Notifikasi dalam aplikasi" ], @@ -16773,15 +16696,9 @@ "per month, billed every two years": [ "per bulan, ditagihkan setiap dua tahun" ], - "Preparing your Recovery Kit": [ - "Menyiapkan Peralatan Pemulihan Anda" - ], "Protected by Swiss privacy laws": [ "Dilindungi oleh undang-undang privasi Swiss" ], - "Save your recovery kit to continue": [ - "Simpan kit pemulihan Anda untuk melanjutkan" - ], "Secure vault sharing": [ "Pembagian brankas yang aman" ], @@ -17571,21 +17488,6 @@ "Tingkatkan ke ${ upsellPlanTitle }" ] }, - "PQC account key generation": { - "Couldn’t generate keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\n${ settingsLink } and select 'Generate key' for your account and for each address.": [ - "Tidak dapat membuat kunci. Untuk mengaktifkan perlindungan pasca-kuantum, Anda perlu membuat kunci enkripsi baru secara manual.\n\nBuka ${ settingsLink } lalu pilih “Buat kunci” untuk akun Anda dan untuk setiap alamat." - ] - }, - "PQC adress key generation": { - "Couldn’t generate address keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\nGo to ${ settingsLink } and select 'Generate key' for each address.": [ - "Tidak dapat membuat kunci alamat. Untuk mengaktifkan perlindungan pasca-kuantum, Anda perlu membuat kunci enkripsi baru secara manual.\n\nBuka ${ settingsLink } lalu pilih “Buat kunci” untuk setiap alamat." - ] - }, - "PQC compatibility warning": { - "**You must update all ${ BRAND_NAME } mobile apps**: your new keys won't work on older app versions.": [ - "**Anda harus memperbarui seluruh aplikasi seluler ${ BRAND_NAME } Anda**: kunci baru Anda tidak akan berfungsi pada aplikasi versi lawas." - ] - }, "PQC key generation": { "This will generate new quantum-resistant encryption keys for your account.": [ "Ini akan menghasilkan kunci enkripsi tahan kuantum baru untuk akun Anda." @@ -17819,15 +17721,9 @@ ], "Or ${ downloadRecoveryKitSwitchButton } instead.": [ "Atau ${ downloadRecoveryKitSwitchButton }." - ], - "Your **Recovery Kit** lets you restore your ${ BRAND_NAME } Account if you’re locked out.": [ - "**Kit Pemulihan** memungkinkan Anda untuk memulihkan akun ${ BRAND_NAME } Anda apabila Anda sampai terkunci dari akun." ] }, "RecoveryPhrase: Title": { - "Save your Recovery Kit": [ - "Simpan Kit Pemulihan Anda" - ], "Save your recovery phrase": [ "Simpan frase pemulihan Anda" ] @@ -18214,9 +18110,6 @@ "Back to Safety Review": [ "Kembali ke Peninjauan Keamanan" ], - "Because you reset your password, your current Recovery Kit can only be used to recover the data created before your password reset.": [ - "Karena Anda mengatur ulang kata sandi Anda, Kit Pemulihan Anda hanya dapat digunakan untuk memulihkan data yang dibuat sebelum pengaturan ulang kata sandi Anda." - ], "Can be used to regain access to your account and data": [ "Dapat digunakan untuk mendapatkan kembali akses ke akun dan data Anda" ], @@ -18244,9 +18137,6 @@ "Download ${ size }": [ "Unduh ${ size }" ], - "Download your Recovery Kit": [ - "Unduh Kit Pemulihan Anda" - ], "Email address": [ "Alamat email" ], @@ -18259,18 +18149,12 @@ "Enable recovery by phone": [ "Aktifkan pemulihan melalui ponsel" ], - "I understand that I will not be able to recover currently locked data with this Recovery Kit": [ - "Saya mengerti bahwa saya tidak dapat memulihkan data yang saat ini terkunci dengan Kit Pemulihan ini" - ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in on this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Jika Anda lupa kata sandi ${ BRAND_NAME } dan perlu mengatur ulang, saat berikutnya Anda masuk di perangkat ini menggunakan kata sandi baru, akses penuh ke Akun ${ BRAND_NAME } Anda akan dipulihkan." ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Jika Anda lupa kata sandi ${ BRAND_NAME } dan perlu mengatur ulang, saat berikutnya Anda masuk ke perangkat ini menggunakan kata sandi baru, akses penuh ke Akun ${ BRAND_NAME } Anda akan dipulihkan." ], - "If you get locked out of your ${ BRAND_NAME } Account, your Recovery Kit will allow you to sign in and recover your data.": [ - "Jika Anda terkunci dari Akun ${ BRAND_NAME } Anda, Kit Pemulihan Anda akan memungkinkan Anda untuk masuk dan memulihkan data Anda." - ], "If you lose your login details and need to reset your account, **it’s imperative** that you have both an **account recovery and data recovery method** in place, otherwise you might not be able to access any of your emails, contacts, files or passwords.": [ "Apabila Anda kehilangan rincian login Anda dan perlu untuk mengatur ulang akun, **sangat penting** bagi Anda untuk memiliki **metode pemulihan akun dan data** yang aktif. Apabila tidak, Anda berisiko untuk tidak lagi dapat mengakses email, kontak, file, atau kata sandi yang Anda miliki." ], @@ -18313,9 +18197,6 @@ "Take action to secure your account": [ "Ambil tindakan untuk mengamankan akun Anda" ], - "There was an error generating your Recovery Kit": [ - "Terjadi kesalahan membuat Kit Pemulihan Anda" - ], "There was an error verifying your email": [ "Terjadi kesalahan dalam memverifikasi email Anda" ], @@ -18343,12 +18224,6 @@ "to recover your account if you're ever locked out": [ "untuk memulihkan akun Anda jika Anda terkunci" ], - "Update your Recovery Kit": [ - "Perbarui Kit Pemulihan Anda" - ], - "Update your Recovery Kit?": [ - "Perbarui Kit Keamanan Anda?" - ], "Verify": [ "Verifikasi" ], @@ -18364,9 +18239,6 @@ "Verify your recovery phone number": [ "Verifikasi nomor telepon pemulihan Anda" ], - "We encountered an error while generating your Recovery Kit. Please try again later, or contact support if the issue continues.": [ - "Kami mengalami kesalahan saat membuat Kit Pemulihan Anda. Silakan coba lagi, atau hubungi layanan dukungan jika masalah masih berlanjut." - ], "We encountered an error while verifying your email. Please try again later, or contact support if the issue continues.": [ "Kami menemukan kesalahan pada saat memverifikasi email Anda. Silakan coba lagi nanti, atau hubungi layanan dukungan apabila masalah ini terus berlanjut." ], @@ -18388,9 +18260,6 @@ "You can disable this at any time.": [ "Anda dapat menonaktifkan ini kapan pun." ], - "You can use the recovery phrase in this Recovery Kit to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ - "Anda dapat menggunakan frasa pemulihan dalam Kit Pemulihan Anda untuk memulihkan akun Anda secara penuh ketika Anda mengatur ulang kata sandi Anda, jadi pastikan untuk menyimpannya di tempat yang aman." - ], "You can use your email to regain access to your account if you forget your password.": [ "Anda dapat menggunakan email Anda untuk memperoleh kembali akses menuju akun Anda apabila Anda lupa kata sandi." ], @@ -18400,9 +18269,6 @@ "You can use your recovery phone to regain access to your account if you forget your password.": [ "Anda dapat menggunakan ponsel pemulihan Anda untuk memulihkan akses ke akun Anda jika Anda melupakan kata sandi Anda." ], - "You have previously downloaded a Recovery Kit. Downloading a new one will **deactivate the old one**.": [ - "Anda sebelumnya telah mengunduh Kit Pemulihan. Mengunduh yang baru akan **menonaktifkan yang lama**." - ], "You have recommended actions to safeguard your account further.": [ "Anda memiliki tindakan yang disarankan untuk melindungi akun Anda lebih jauh." ], @@ -18466,12 +18332,6 @@ "Your recovery email is set": [ "Email pemulihan Anda telah siap" ], - "Your Recovery Kit": [ - "Kit Pemulihan Anda" - ], - "Your Recovery Kit is set": [ - "Kit Pemulihan Anda sudah siap" - ], "Your recovery methods": [ "Metode pemulihan Anda" ], @@ -19002,14 +18862,6 @@ "Permintaan atur ulang kata sandi" ] }, - "Setting": { - "Get updates about comments via email": [ - "Dapatkan pembaruan seputar komentar via email" - ], - "Include document name in email notifications": [ - "Sertakan nama dokumen dalam notifikasi email" - ] - }, "Settings description": { "Keep your inbox organized with folders and labels. ${ learnMoreLink }": [ "Jaga agar kotak masuk Anda tetap teratur dengan folder dan label. ${ learnMoreLink }" @@ -20811,9 +20663,6 @@ "Organization logo updated": [ "Logo organisasi diperbarui" ], - "Organization name set": [ - "Nama organisasi diatur" - ], "Organization name updated": [ "Nama organisasi diperbarui" ], @@ -21461,9 +21310,6 @@ "Change second password": [ "Ubah kata sandi kedua" ], - "Check your default mail application": [ - "Periksa aplikasi email bawaan Anda" - ], "Choose an account": [ "Pilih akun" ], @@ -21488,18 +21334,12 @@ "Confirm": [ "Konfirmasi" ], - "Confirm address": [ - "Konfirmasi alamat" - ], "Confirm downgrade": [ "Konfirmasi penurunan akun" ], "Confirm loss of ${ BRAND_NAME } bonuses": [ "Konfirmasi hilangnya bonus ${ BRAND_NAME }" ], - "Confirm phone number": [ - "Konfirmasi nomor telepon" - ], "Connect ${ name }": [ "Hubungkan ${ name }" ], @@ -21881,6 +21721,9 @@ "Feature access": [ "Akses fitur" ], + "Fewer distractions, more focus": [ + "Lebih sedikit gangguan, lebih banyak fokus" + ], "Filter for more focus": [ "Filter untuk fokus yang lebih" ], @@ -21911,9 +21754,6 @@ "Forward emails": [ "Penerusan email" ], - "Forwardings": [ - "Penerusan" - ], "Free": [ "Gratis" ], @@ -22256,9 +22096,6 @@ "Phone": [ "Telepon" ], - "Photos": [ - "Foto" - ], "Pin the extension": [ "Sematkan ekstensi" ], @@ -22523,6 +22360,9 @@ "Snooze:": [ "Tunda:" ], + "Something went wrong": [ + "Terjadi kesalahan" + ], "Sort folders alphabetically": [ "Urut folder sesuai abjad" ], @@ -23075,9 +22915,6 @@ "This feature is only available on Beta": [ "Fitur ini hanya tersedia pada versi Beta" ], - "This is the default key used by other ${ MAIL_APP_NAME } users on older mobile apps to encrypt data they send to you": [ - "Kunci ini merupakan kunci bawaan yang digunakan oleh pengguna ${ MAIL_APP_NAME } lainnya di aplikasi seluler versi lawas untuk mengenkripsi data yang mereka kirim kepada Anda" - ], "This is the default key used by other ${ MAIL_APP_NAME } users to encrypt data they send to you": [ "Kunci ini merupakan kunci bawaan yang digunakan oleh pengguna ${ MAIL_APP_NAME } lainnya untuk mengenkripsi data yang mereka kirim kepada Anda" ], @@ -23832,12 +23669,6 @@ "${ BRAND_NAME } will transfer as much data as possible, starting with your most recent messages.": [ "${ BRAND_NAME } akan berupaya untuk mentransfer data sebanyak-banyaknya, yang dimulai dengan pesan Anda yang terbaru." ], - "Are you sure you want to delete the phone number?": [ - "Apakah Anda yakin ingin menghapus nomor telepon ini?" - ], - "Are you sure you want to delete this address?": [ - "Apakah Anda yakin ingin menghapus alamat ini?" - ], "By deleting this address, you will no longer be able to receive daily email notifications.": [ "Dengan menghapus alamat ini, Anda tidak akan lagi dapat menerima notifikasi email harian." ], @@ -23847,9 +23678,6 @@ "By deleting this address, you will no longer be able to recover your account.": [ "Dengan menghapus alamat ini, Anda tidak akan lagi dapat memulihkan akun Anda." ], - "By deleting this phone number, you will no longer be able to recover your account.": [ - "Dengan menghapus nomor telepon ini, Anda tidak akan lagi dapat memulihkan akun Anda." - ], "If you cancel this import, you won't be able to resume it. ${ BRAND_NAME } saved all progress in your account. Cancel anyway?": [ "Jika Anda membatalkan impor ini, Anda tidak akan dapat melanjutkannya kembali. ${ BRAND_NAME } menyimpan seluruh progres di akun Anda. Tetap batalkan?" ], diff --git a/applications/account/locales/it_IT.json b/applications/account/locales/it_IT.json index 8e4481c13e3..30411d5ab38 100644 --- a/applications/account/locales/it_IT.json +++ b/applications/account/locales/it_IT.json @@ -312,9 +312,6 @@ "Connect Gmail address": [ "Connetti un indirizzo Gmail" ], - "Connect to Gmail": [ - "Connettiti a Gmail" - ], "Connect to video conferencing": [ "Connettiti alla videoconferenza" ], @@ -1401,9 +1398,6 @@ "Set as default": [ "Imposta come predefinito" ], - "Set as default mail application": [ - "Imposta come applicazione mail predefinita" - ], "Set catch-all": [ "Imposta catch-all" ], @@ -2679,9 +2673,6 @@ ] }, "BOSS": { - "Add a custom domain": [ - "Aggiungi dominio personalizzato" - ], "Authenticate": [ "Autenticati" ], @@ -2703,9 +2694,6 @@ "Domain connected": [ "Dominio connesso" ], - "Domain ownership verified": [ - "Possesso del dominio verificato" - ], "Estimated size": [ "Dimensioni Stimate" ], @@ -2715,15 +2703,9 @@ "Install migration app": [ "Installa l’app di migrazione" ], - "Learn more about what can be migrated. Learn more": [ - "Scopri di più su cosa può essere migrato. Scopri di più" - ], "Mail": [ "E-mail" ], - "Migrate": [ - "Migra" - ], "Migrate from Google Workspace": [ "Migra da Google Workspace" ], @@ -2746,9 +2728,6 @@ "Organization does not have enough storage available": [ "L'organizzazione non dispone di spazio di archiviazione sufficiente" ], - "Organization settings": [ - "Impostazioni dell'organizzazione" - ], "Required": [ "Obbligatorio" ], @@ -2758,9 +2737,6 @@ "Select at least one user to start a migration": [ "Seleziona almeno un utente per avviare una migrazione" ], - "Select what you want to migrate, this will apply to all users whether they are created now or later. Migration will start after user accounts are created.": [ - "Seleziona cosa vuoi migrare; questa scelta si applicherà a tutti gli utenti, sia quelli già esistenti sia quelli creati in futuro. La migrazione inizierà dopo la creazione degli account utente." - ], "Set up": [ "Configura" ], @@ -2776,18 +2752,12 @@ "Start migration": [ "Start migration" ], - "Transfer errors": [ - "Errori di trasferimento" - ], "User": [ "Utente" ], "Verify your domain": [ "Verifica il tuo dominio" ], - "Verify your domain ownership": [ - "Verifica la proprietà del tuo dominio" - ], "Verify your domain to start a migration": [ "Verifica il tuo dominio per avviare una migrazione" ], @@ -4684,12 +4654,6 @@ "${ DOCS_SHORT_APP_NAME } in ${ DRIVE_APP_NAME } allows you to work together with others in a secure, encrypted environment.": [ "${ DOCS_SHORT_APP_NAME } in ${ DRIVE_APP_NAME } ti consente di lavorare insieme ad altri in un ambiente sicuro e crittografato." ], - "${ MAIL_APP_NAME } is not your default mail application.": [ - "${ MAIL_APP_NAME } non è la tua applicazione mail predefinita." - ], - "${ MAIL_APP_NAME } is your default mail application.": [ - "${ MAIL_APP_NAME } è la tua applicazione mail predefinita." - ], "A checked box means the feature is disabled.": [ "Una casella selezionata significa che la funzione è disabilitata." ], @@ -4717,9 +4681,6 @@ "Block Google's ability to profile you. Gmail can't see what you do in ${ MAIL_APP_NAME }": [ "Blocca la capacità di Google di creare un profilo su di te. ${ MAIL_APP_NAME } non può vedere cosa fai in Gmail." ], - "Bring over email, calendar events, and contacts from another provider.": [ - "Porta email, eventi del calendario e contatti da un altro provider." - ], "Configure this first to activate your organization and customize your email address.": [ "Configura prima questa opzione per attivare la tua organizzazione e personalizzare il tuo indirizzo email." ], @@ -4813,9 +4774,6 @@ "Read, reply, and stay on top of Gmail from within ${ MAIL_APP_NAME }": [ "Leggi, rispondi e gestisci Gmail da ${ MAIL_APP_NAME }" ], - "Send a code to your recovery email or phone": [ - "Manda un codice alla tua email o telefono di recupero" - ], "Set up accounts for all users and invite them to join ${ BRAND_NAME }.": [ "Configura gli account per tutti gli user e invitali a partecipare a ${ BRAND_NAME }." ], @@ -4868,9 +4826,6 @@ "We'll bring in your old emails and connect your Gmail to ${ MAIL_APP_NAME } so new messages appear automatically": [ "Importeremo le tue vecchie email e connetteremo il tuo Gmail a ${ MAIL_APP_NAME } in modo che i nuovi messaggi appaiano automaticamente" ], - "We've started importing your email from Gmail. We'll let you know when it's done.": [ - "Abbiamo iniziato a importare la tua email da Gmail. Ti avviseremo quando sarà terminato." - ], "You already have a Gmail address forwarding to ${ MAIL_APP_NAME }. Connect it below to send and receive emails directly from ${ MAIL_APP_NAME }.": [ "Hai già un indirizzo Gmail che inoltra a ${ MAIL_APP_NAME }. Collegalo qui sotto per inviare e ricevere email direttamente da ${ MAIL_APP_NAME }." ], @@ -5946,9 +5901,6 @@ "${ user } will not be able to access your account until the next emergency access.": [ "${ user } non potrà accedere al tuo account fino al prossimo accesso d'emergenza." ], - "**${ contact }** is now your recovery contact. They can help you recover your data after a password reset.": [ - "**${ contact }** è ora il tuo nuovo contatto di recupero. Possono aiutarti a recuperare i tuoi dati dopo il reset della password." - ], "**If they confirm**, click **Approve recovery**. This will unlock their encrypted data.": [ "**se confermano**, clicca **Approva recupero**. Questo sbloccherà i loro dati criptati." ], @@ -6081,12 +6033,6 @@ "Less than a minute left": [ "Meno di un minuto rimanente" ], - "Let ${ user } know it’s really you trying to regain access.": [ - "Fai sapere a ${ user } che sei davvero tu a cercare di riottenere l’accesso." - ], - "None": [ - "Nessuna azione" - ], "Only ": [ "Solo " ], @@ -6171,9 +6117,6 @@ "Select recovery contact ${ name }": [ "Seleziona contatto di recupero: ${ name }" ], - "Set account recovery": [ - "Imposta un account di recupero" - ], "Stop being recovery contact?": [ "Vuoi smettere di essere il contatto di recupero?" ], @@ -6716,9 +6659,6 @@ "Please try again in a few moments.": [ "Riprova tra qualche istante." ], - "Please upgrade to a business plan with more than 1 user to get multi-user support": [ - "Effettua l'upgrade a un piano aziendale con più di 1 utente per ottenere il supporto multi-utente" - ], "Please upgrade to a business plan with more than 1 user to manage multiple users.": [ "Effettua l'upgrade a un piano aziendale con più di 1 utente per gestire più utenti." ], @@ -8027,11 +7967,6 @@ "${ BRAND_NAME }. Privacy by default." ] }, - "Force upgrade safety review": { - "I understand that I will no longer be able to sign in to older versions of ${ BRAND_NAME } mobile apps.": [ - "Capisco che non potrò più accedere alle versioni precedenti delle app mobili di ${ BRAND_NAME }." - ] - }, "Form heading": { "Enter your email address": [ "Inserisci il tuo indirizzo email" @@ -8380,9 +8315,6 @@ "Contact us": [ "Contattaci" ], - "Downloads": [ - "Download" - ], "Enjoying ${ planName }?": [ "Ti piace ${ planName }?" ], @@ -9169,10 +9101,6 @@ "Add your name and logo to create a more personalized experience for your organization.": [ "Aggiungi il tuo nome e logo per creare un'esperienza più personalizzata per la tua organizzazione." ], - "Adding ${ addedServerCount } gateway server": [ - "Aggiunta di ${ addedServerCount } server gateway", - "Aggiunta di ${ addedServerCount } server gateway" - ], "Adding an external email address will disable end-to-end encryption for all email communication within that group. Do you want to proceed?": [ "L'aggiunta di un indirizzo email esterno disabiliterà la crittografia end-to-end per tutte le comunicazioni email all'interno di quel gruppo. Vuoi procedere?" ], @@ -9481,9 +9409,6 @@ "Change your password": [ "Cambia la password" ], - "Check the status of imports and forwarding.": [ - "Controlla lo stato delle importazioni e degli inoltri." - ], "Choose a plan that works best for you.": [ "Scegli un piano che funziona meglio per te." ], @@ -9575,10 +9500,6 @@ "Create a label for the imported messages, a time range for this import, and the labels you would like to import.": [ "Crea un'etichetta per i messaggi importati, il periodo di tempo dell'importazione e le etichette che desideri importare." ], - "Create a secure cloud for ${ value } member": [ - "Crea un cloud sicuro per ${ value } membro", - "Crea un cloud sicuro per ${ value } membri" - ], "Create an account": [ "Crea un account" ], @@ -10550,9 +10471,6 @@ "No folder selected": [ "Nessuna cartella selezionata" ], - "No forwarding history.": [ - "Nessuna cronologia di inoltro." - ], "No gateways": [ "Nessun gateway" ], @@ -11092,9 +11010,6 @@ "Something went wrong. Please try again or contact customer support.": [ "Qualcosa è andato storto. Riprova o contatta l'assistenza clienti." ], - "Something went wrong. Please try again.": [ - "Si è verificato un errore. Riprova." - ], "Specify the domain which is allowed to authenticate with SAML SSO.": [ "Specifica il dominio autorizzato all'autenticazione con SAML SSO." ], @@ -11445,9 +11360,6 @@ "To fight spam and abuse, please verify you are human.": [ "Completa la verifica umana. Questa è necessaria per contrastare spam e abusi." ], - "To help keep your account safe, we want to make sure it's really you trying to sign in.": [ - "Per proteggere il tuo account, vogliamo assicurarci che sia davvero tu a tentare l'accesso." - ], "To help keep your account safe, we want to make sure it’s really you trying to sign in.": [ "Per mantenere sicuro il tuo account, vogliamo assicurarci che sia davvero tu a tentare l'accesso." ], @@ -11778,9 +11690,6 @@ "When disabled, this prevents remote images from loading without your knowledge.": [ "Quando disattivato, impedisce il caricamento di immagini remote senza che tu ne sia a conoscenza." ], - "When enabled, we will check if ${ MAIL_APP_NAME } is your default mail application and notify you if it is not.": [ - "Se abilitata, verificheremo se ${ MAIL_APP_NAME } è la tua applicazione mail predefinita e ti informeremo se non lo è." - ], "When enabling SAML for ${ appName } in your identity provider, you might be prompted to use the callback (ACS) URL and issuer ID. Just copy-paste the data below into your identity provider fields.": [ "Quando abiliti SAML per ${ appName } nel tuo fornitore di identità, ti potrebbe essere chiesto di usare l'issuer ID e l'URL (ACS) di callback. Copia e incolla i dati seguenti nei campi del tuo fornitore di identità." ], @@ -11911,9 +11820,6 @@ "You can edit this once to ensure the correct email address for verification.": [ "Puoi modificarlo una volta per garantire l'indirizzo email corretto per la verifica." ], - "You can enable the Photos section from the interface using the toggle below.": [ - "Puoi abilitare la sezione Foto dall'interfaccia utilizzando il seguente interruttore." - ], "You can enforce the password rules members of your organization will use when they create or reset the password to their ${ BRAND_NAME } Account.": [ "Puoi imporre le regole della password che i membri della tua organizzazione utilizzeranno quando creano o reimpostano la password per il loro account ${ BRAND_NAME }." ], @@ -16428,9 +16334,6 @@ "${ app } product updates": [ "Aggiornamenti sul prodotto ${ app }" ], - "${ BRAND_NAME } for Business newsletter": [ - "Newsletter di ${ BRAND_NAME } for Business" - ], "${ BRAND_NAME } important announcements": [ "Annunci importanti di ${ BRAND_NAME }" ], @@ -16479,9 +16382,6 @@ "During your first month of using a ${ BRAND_NAME } product": [ "Durante il primo mese di utilizzo di un prodotto ${ BRAND_NAME }" ], - "Email subscriptions": [ - "Iscrizioni email" - ], "In-app notifications": [ "Notifiche in-app" ], @@ -17553,15 +17453,9 @@ "per month, billed every two years": [ "al mese con fatturazione ogni due anni" ], - "Preparing your Recovery Kit": [ - "Preparazione del tuo kit di recupero" - ], "Protected by Swiss privacy laws": [ "Ti protegge la legislazione svizzera sulla privacy" ], - "Save your recovery kit to continue": [ - "Salva il tuo kit di recupero per continuare" - ], "Secure vault sharing": [ "Condivisione sicura della cassaforte" ], @@ -18374,21 +18268,6 @@ "Effettua l'upgrade a ${ upsellPlanTitle }" ] }, - "PQC account key generation": { - "Couldn’t generate keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\n${ settingsLink } and select 'Generate key' for your account and for each address.": [ - "Impossibile generare le chiavi. Per attivare la protezione post-quantistica, dovrai generare manualmente le nuove chiavi di crittografia.\n\nVai su ${ settingsLink } e seleziona 'Genera chiave' per il tuo account e per ogni indirizzo." - ] - }, - "PQC adress key generation": { - "Couldn’t generate address keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\nGo to ${ settingsLink } and select 'Generate key' for each address.": [ - "Impossibile generare le chiavi per l’indirizzo. Per attivare la protezione post-quantistica, dovrai generare manualmente le nuove chiavi di crittografia. Vai su ${ settingsLink } e seleziona 'Genera chiave' per ciascun indirizzo." - ] - }, - "PQC compatibility warning": { - "**You must update all ${ BRAND_NAME } mobile apps**: your new keys won't work on older app versions.": [ - "**Devi aggiornare tutte le app mobili** ${ BRAND_NAME }: le tue nuove chiavi non funzioneranno sulle versioni precedenti dell’app." - ] - }, "PQC key generation": { "This will generate new quantum-resistant encryption keys for your account.": [ "Questo genererà nuove chiavi di crittografia resistenti ai computer quantistici per il tuo account." @@ -18704,15 +18583,9 @@ ], "Or ${ downloadRecoveryKitSwitchButton } instead.": [ "Oppure, in alternativa, ${ downloadRecoveryKitSwitchButton }." - ], - "Your **Recovery Kit** lets you restore your ${ BRAND_NAME } Account if you’re locked out.": [ - "Il tuo **Kit di Recupero** consente di ripristinare l’account ${ BRAND_NAME } in caso di impossibilità di accesso." ] }, "RecoveryPhrase: Title": { - "Save your Recovery Kit": [ - "Salva il tuo Kit di Recupero" - ], "Save your recovery phrase": [ "Salva la tua frase di recupero" ] @@ -19105,9 +18978,6 @@ "Back to Safety Review": [ "Torna alla Revisione della Sicurezza" ], - "Because you reset your password, your current Recovery Kit can only be used to recover the data created before your password reset.": [ - "Poiché hai reimpostato la password, il tuo attuale kit di recupero può essere utilizzato solo per ripristinare i dati creati prima della reimpostazione della password." - ], "Can be used to regain access to your account and data": [ "Può essere utilizzato per riottenere l'accesso al tuo account e ai tuoi dati" ], @@ -19135,9 +19005,6 @@ "Download ${ size }": [ "Scarica ${ size }" ], - "Download your Recovery Kit": [ - "Scarica il tuo kit di recupero" - ], "Email address": [ "Indirizzo email" ], @@ -19150,18 +19017,12 @@ "Enable recovery by phone": [ "Abilita il recupero tramite telefono" ], - "I understand that I will not be able to recover currently locked data with this Recovery Kit": [ - "Comprendo che non sarò in grado di recuperare i dati attualmente bloccati con questo Kit di Recupero" - ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in on this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Se dimentichi la password di ${ BRAND_NAME } e devi reimpostarla, la prossima volta che accedi su questo dispositivo utilizzando la nuova password, verrà ripristinato l'accesso completo al tuo account ${ BRAND_NAME }." ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Se dimentichi la password ${ BRAND_NAME } e devi reimpostarla, la prossima volta che accedi a questo dispositivo utilizzando la nuova password, verrà ripristinato l'accesso completo al tuo account ${ BRAND_NAME }." ], - "If you get locked out of your ${ BRAND_NAME } Account, your Recovery Kit will allow you to sign in and recover your data.": [ - "Se non riesci ad accedere al tuo account ${ BRAND_NAME }, il tuo Kit di recupero ti consentirà di accedere e recuperare i tuoi dati." - ], "If you lose your login details and need to reset your account, **it’s imperative** that you have both an **account recovery and data recovery method** in place, otherwise you might not be able to access any of your emails, contacts, files or passwords.": [ "Se perdi i tuoi dati di accesso e devi reimpostare il tuo account, **è fondamentale** disporre sia di un **metodo di recupero dell'account che di recupero dei dati**, altrimenti potresti non essere in grado di accedere a nessuna delle tue email, contatti, file o password." ], @@ -19204,9 +19065,6 @@ "Take action to secure your account": [ "Agisci per proteggere il tuo account" ], - "There was an error generating your Recovery Kit": [ - "Si è verificato un errore durante la generazione del kit di recupero" - ], "There was an error verifying your email": [ "Si è verificato un errore durante la verifica della tua email" ], @@ -19234,12 +19092,6 @@ "to recover your account if you're ever locked out": [ "per recuperare il tuo account se rimani bloccato" ], - "Update your Recovery Kit": [ - "Aggiorna il tuo kit di recupero" - ], - "Update your Recovery Kit?": [ - "Aggiornare il tuo kit di recupero?" - ], "Verify": [ "Verifica" ], @@ -19255,9 +19107,6 @@ "Verify your recovery phone number": [ "Verifica il tuo numero di telefono di recupero" ], - "We encountered an error while generating your Recovery Kit. Please try again later, or contact support if the issue continues.": [ - "Si è verificato un errore durante la generazione del kit di recupero. Riprova più tardi o contatta l'assistenza se il problema persiste." - ], "We encountered an error while verifying your email. Please try again later, or contact support if the issue continues.": [ "Abbiamo riscontrato un errore durante la verifica della tua email. Riprova più tardi o contatta il supporto se il problema persiste." ], @@ -19279,9 +19128,6 @@ "You can disable this at any time.": [ "Puoi disabilitarlo in qualsiasi momento." ], - "You can use the recovery phrase in this Recovery Kit to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ - "Puoi utilizzare la frase di recupero contenuta in questo kit di recupero per ripristinare completamente il tuo account quando reimposti la password, quindi assicurati di conservarla in un posto sicuro." - ], "You can use your email to regain access to your account if you forget your password.": [ "Puoi utilizzare la tua email per riottenere l'accesso al tuo account se dimentichi la password." ], @@ -19291,9 +19137,6 @@ "You can use your recovery phone to regain access to your account if you forget your password.": [ "Puoi utilizzare il numero di telefono di recupero per riottenere l'accesso al tuo account se dimentichi la password." ], - "You have previously downloaded a Recovery Kit. Downloading a new one will **deactivate the old one**.": [ - "Hai già scaricato un kit di recupero. Scaricarne uno nuovo **disattiverà quello vecchio**." - ], "You have recommended actions to safeguard your account further.": [ "Ci sono azioni consigliate per salvaguardare ulteriormente il tuo account." ], @@ -19357,12 +19200,6 @@ "Your recovery email is set": [ "La tua email di recupero è impostata" ], - "Your Recovery Kit": [ - "Il tuo kit di recupero" - ], - "Your Recovery Kit is set": [ - "Il tuo kit di recupero è impostato" - ], "Your recovery methods": [ "I tuoi metodi di recupero" ], @@ -19903,14 +19740,6 @@ "Richiesta di reimpostazione della password" ] }, - "Setting": { - "Get updates about comments via email": [ - "Ricevi aggiornamenti riguardo i commenti via email" - ], - "Include document name in email notifications": [ - "Includi il nome del documento nelle notifiche via email" - ] - }, "Settings description": { "Keep your inbox organized with folders and labels. ${ learnMoreLink }": [ "Mantieni la tua posta in arrivo organizzata con cartelle ed etichette. ${ learnMoreLink }" @@ -21783,9 +21612,6 @@ "Organization logo updated": [ "Logo dell'organizzazione aggiornato" ], - "Organization name set": [ - "Nome dell'organizzazione impostato" - ], "Organization name updated": [ "Nome dell'organizzazione aggiornata" ], @@ -22365,9 +22191,6 @@ "An address for each role": [ "Un indirizzo per ogni ruolo" ], - "An error occurred": [ - "Si è verificato un errore" - ], "Annual": [ "Annuale" ], @@ -22482,9 +22305,6 @@ "Change second password": [ "Cambia la seconda password" ], - "Check your default mail application": [ - "Controlla la tua applicazione mail predefinita" - ], "Choose a provider": [ "Scegli un fornitore" ], @@ -22512,18 +22332,12 @@ "Confirm": [ "Conferma" ], - "Confirm address": [ - "Conferma l'indirizzo" - ], "Confirm downgrade": [ "Conferma il downgrade" ], "Confirm loss of ${ BRAND_NAME } bonuses": [ "Conferma la perdita dei bonus di ${ BRAND_NAME }" ], - "Confirm phone number": [ - "Conferma il numero di telefono" - ], "Connect ${ name }": [ "Connetti ${ name }" ], @@ -22926,6 +22740,9 @@ "Feature access": [ "Accesso alla funzionalità" ], + "Fewer distractions, more focus": [ + "Meno distrazioni, più concentrazione" + ], "Filter for more focus": [ "Filtra per maggiore precisione" ], @@ -23302,9 +23119,6 @@ "Phone": [ "Telefono" ], - "Photos": [ - "Foto" - ], "Pin the extension": [ "Fissa l'estensione" ], @@ -23578,6 +23392,9 @@ "Snooze:": [ "Posticipazione:" ], + "Something went wrong": [ + "Qualcosa è andato storto" + ], "Sort folders alphabetically": [ "Ordina cartelle alfabeticamente" ], @@ -24155,9 +23972,6 @@ "This feature is only available on Beta": [ "Questa funzionalità è disponibile solamente sulla Beta" ], - "This is the default key used by other ${ MAIL_APP_NAME } users on older mobile apps to encrypt data they send to you": [ - "Questa è la chiave predefinita utilizzata da altri utenti ${ MAIL_APP_NAME } su app meno recenti per crittografare i dati che ti inviano" - ], "This is the default key used by other ${ MAIL_APP_NAME } users to encrypt data they send to you": [ "Questa è la chiave predefinita utilizzata da altri utenti di ${ MAIL_APP_NAME } per crittografare i dati che ti inviano" ], @@ -24948,12 +24762,6 @@ "${ BRAND_NAME } will transfer as much data as possible, starting with your most recent messages.": [ "${ BRAND_NAME } trasferirà il maggior numero di dati possibile, a partire dai messaggi più recenti." ], - "Are you sure you want to delete the phone number?": [ - "Sei sicuro di voler eliminare il numero di telefono?" - ], - "Are you sure you want to delete this address?": [ - "Sei sicuro di voler eliminare questo indirizzo?" - ], "By deleting this address, you will no longer be able to receive daily email notifications.": [ "Eliminando questo indirizzo, non sarai più in grado di ricevere le notifiche email giornaliere." ], @@ -24963,9 +24771,6 @@ "By deleting this address, you will no longer be able to recover your account.": [ "Eliminando questo indirizzo, non sarai più in grado di recuperare il tuo account." ], - "By deleting this phone number, you will no longer be able to recover your account.": [ - "Eliminando questo numero di telefono, non sarai più in grado di recuperare il tuo account." - ], "If you cancel this import, you won't be able to resume it. ${ BRAND_NAME } saved all progress in your account. Cancel anyway?": [ "Se annulli questa importazione, non potrai riprenderla. ${ BRAND_NAME } ha salvato tutti i progressi nel tuo account. Vuoi comunque annullare?" ], diff --git a/applications/account/locales/ja_JP.json b/applications/account/locales/ja_JP.json index b0beccb71b4..34633598e72 100644 --- a/applications/account/locales/ja_JP.json +++ b/applications/account/locales/ja_JP.json @@ -312,9 +312,6 @@ "Connect apps and devices": [ "アプリとデバイスを接続" ], - "Connect to Gmail": [ - "Gmailに接続" - ], "Connect to video conferencing": [ "ビデオ会議に接続" ], @@ -1365,9 +1362,6 @@ "Set as default": [ "デフォルトとして設定" ], - "Set as default mail application": [ - "デフォルトのメールアプリとして設定" - ], "Set catch-all": [ "Catch-All を設定" ], @@ -2667,12 +2661,6 @@ ] }, "BOSS": { - "Add a custom domain": [ - "カスタムドメインを追加" - ], - "App installed": [ - "アプリをインストールしました" - ], "Authenticate": [ "認証" ], @@ -2694,9 +2682,6 @@ "Domain connected": [ "ドメインを接続しました" ], - "Domain ownership verified": [ - "ドメイン所有権は検証済みです" - ], "Estimated size": [ "推定サイズ" ], @@ -2712,15 +2697,9 @@ "Install migration app": [ "移行アプリをインストール" ], - "Learn more about what can be migrated. Learn more": [ - "移行可能な内容の詳細をご確認ください。より詳しく" - ], "Mail": [ "メール" ], - "Migrate": [ - "移行" - ], "Migrate from Google Workspace": [ "Google Workspaceから移行" ], @@ -2742,9 +2721,6 @@ "Organization does not have enough storage available": [ "組織には十分なストレージがありません" ], - "Organization settings": [ - "組織設定" - ], "Required": [ "必須" ], @@ -2754,9 +2730,6 @@ "Select at least one user to start a migration": [ "移行を開始するには少なくとも1人のユーザーを選択してください" ], - "Select what you want to migrate, this will apply to all users whether they are created now or later. Migration will start after user accounts are created.": [ - "移行したいものを選択してください。これは、今後作成されるものも含め、すべてのユーザーに適用されます。ユーザーアカウントが作成された後、移行が開始されます。" - ], "Set up": [ "セットアップ" ], @@ -2775,18 +2748,12 @@ "To migrate your organization’s data, you need to install the ${ BRAND_NAME } Migration Assistant app from the Google Workspace Marketplace. This will grant permission to ${ BRAND_NAME } to copy your data. After installing it, come back here to continue.": [ "組織のデータを移行するには、Google Workspace Marketplaceから${ BRAND_NAME } Migration Assistant をインストールする必要があります。これにより、${ BRAND_NAME }にデータをコピーする権限が与えられます。インストールをしてから、ここに戻って続行してください。" ], - "Transfer errors": [ - "転送エラー" - ], "User": [ "ユーザー" ], "Verify your domain": [ "ドメインの検証" ], - "Verify your domain ownership": [ - "ドメイン所有権の検証" - ], "Verify your domain to start a migration": [ "移行を開始するにはドメインを確認してください" ], @@ -4680,12 +4647,6 @@ "${ DOCS_SHORT_APP_NAME } in ${ DRIVE_APP_NAME } allows you to work together with others in a secure, encrypted environment.": [ "${ DRIVE_APP_NAME }の${ DOCS_SHORT_APP_NAME }では、安全で暗号化された環境で他の人と共同作業ができます。" ], - "${ MAIL_APP_NAME } is not your default mail application.": [ - "${ MAIL_APP_NAME }はデフォルトのメールアプリではありません。" - ], - "${ MAIL_APP_NAME } is your default mail application.": [ - "既定のメールアプリは${ MAIL_APP_NAME }です。" - ], "A checked box means the feature is disabled.": [ "チェックボックスは、機能が無効になっていることを意味します。" ], @@ -4794,9 +4755,6 @@ "No one in your organization can connect to shared servers.": [ "組織内の誰も共有サーバーに接続することはできません。" ], - "Send a code to your recovery email or phone": [ - "回復用メールアドレスまたは電話番号にコードを送信" - ], "Set up accounts for all users and invite them to join ${ BRAND_NAME }.": [ "すべてのユーザーに対してアカウントを設定し、${ BRAND_NAME }に参加するよう招待してください。" ], @@ -4839,9 +4797,6 @@ "We can't access ${ boldEmails } anymore.": [ "${ boldEmails }へのアクセスができなくなりました。" ], - "We've started importing your email from Gmail. We'll let you know when it's done.": [ - "Gmailからメールのインポートを開始しました。完了したらお知らせします。" - ], "We’re sorry to see you go. If you have a moment, we’d really appreciate hearing why you’d like to cancel. Your feedback helps us make ${ BRAND_NAME } better for everyone.": [ "ご利用をおやめになるのは残念です。よろしければ、取消の理由をお聞かせいただけますでしょうか。お客様のご感想は、${ BRAND_NAME } を改善するのに役立ちます。" ], @@ -5904,9 +5859,6 @@ "${ user } will not be able to access your account until the next emergency access.": [ "${ user } は、次回の緊急アクセスまでお客様のアカウントにアクセスできません。" ], - "**${ contact }** is now your recovery contact. They can help you recover your data after a password reset.": [ - "**${ contact }** 様はあなたのアカウントの復旧連絡先になりました。パスワードのリセット後にデータを復旧する際に役立ちます。" - ], "**If they didn’t request your help**, it is possible that someone else is trying to access their account. In that case, ignore this request.": [ "**もし相手があなたの助けをリクエストしていない場合**、他の誰かがそのアカウントにアクセスしようとしている可能性があります。その場合は、このリクエストを無視してください。" ], @@ -6033,12 +5985,6 @@ "Less than a minute left": [ "残り一分未満です" ], - "Let ${ user } know it’s really you trying to regain access.": [ - "${ user } に、本当にあなたがアクセスを取り戻そうとしていることを知らせてください。" - ], - "None": [ - "なし" - ], "Only ": [ "のみ " ], @@ -6108,9 +6054,6 @@ "See request": [ "リクエストを表示" ], - "Set account recovery": [ - "アカウント復旧を設定" - ], "Stop being recovery contact?": [ "復旧用連絡先を停止しますか?" ], @@ -6634,9 +6577,6 @@ "Please try again in a few moments.": [ "しばらくしてからもう一度お試しください." ], - "Please upgrade to a business plan with more than 1 user to get multi-user support": [ - "マルチユーザーサポートを受けるには、複数のユーザーを含むビジネスプランにアップグレードしてください" - ], "Please upgrade to a business plan with more than 1 user to manage multiple users.": [ "複数のユーザーを管理するには、複数のユーザーを含むビジネスプランにアップグレードしてください。" ], @@ -7924,11 +7864,6 @@ "${ BRAND_NAME }. Privacy by default." ] }, - "Force upgrade safety review": { - "I understand that I will no longer be able to sign in to older versions of ${ BRAND_NAME } mobile apps.": [ - "旧バージョンの${ BRAND_NAME }モバイルアプリからはサインインできなくなることを理解しました。" - ] - }, "Form heading": { "Enter your email address": [ "メールアドレスを入力してください" @@ -8268,9 +8203,6 @@ "Contact us": [ "お問い合わせ" ], - "Downloads": [ - "ダウンロード" - ], "Enjoying ${ planName }?": [ "${ planName } を楽しんでいますか?" ], @@ -9024,9 +8956,6 @@ "Add your name and logo to create a more personalized experience for your organization.": [ "名前とロゴを追加して、組織にとってよりパーソナライズされたエクスペリエンスを作成します。" ], - "Adding ${ addedServerCount } gateway server": [ - "${ addedServerCount } ゲートウェイ サーバーを追加しています" - ], "Adding an external email address will disable end-to-end encryption for all email communication within that group. Do you want to proceed?": [ "他のメールアドレスを追加すると、そのグループ内の全てのメールでエンドツーエンドの暗号化が無効になります。続行しますか?" ], @@ -9321,9 +9250,6 @@ "Change your password": [ "パスワードを変更" ], - "Check the status of imports and forwarding.": [ - "インポートと転送のステータスを確認します。" - ], "Choose a plan that works best for you.": [ "お客様に最適なプランをお選びください。" ], @@ -9408,9 +9334,6 @@ "Create a label for the imported messages, a time range for this import, and the labels you would like to import.": [ "インポートされたメッセージのラベル、インポートする期間、およびインポート先のラベルを設定します。" ], - "Create a secure cloud for ${ value } member": [ - "${ value } 人のメンバーのために安全なクラウドを作成します" - ], "Create and manage sub-accounts and assign them email addresses on your custom domain.": [ "サブアカウントを作成・管理し、独自ドメインのメール アドレスを割り当ててください。" ], @@ -10659,6 +10582,9 @@ "Recently used servers:": [ "最近使用したサーバー:" ], + "RECOMMENDED": [ + "推奨" + ], "Recommended on trusted devices. ${ keepMeSignedInLearnMoreLink }": [ "信頼できるデバイスで推奨されます。 ${ keepMeSignedInLearnMoreLink }" ], @@ -11559,9 +11485,6 @@ "When disabled, this prevents remote images from loading without your knowledge.": [ "無効にすることで、お客様の知らないうちにリモートが画像が読み込まれるのを防ぎます。" ], - "When enabled, we will check if ${ MAIL_APP_NAME } is your default mail application and notify you if it is not.": [ - "有効にすると、${ MAIL_APP_NAME } が規定のメールアプリであるかを確認し、そうでない場合は通知します。" - ], "When enabling SAML for ${ appName } in your identity provider, you might be prompted to use the callback (ACS) URL and issuer ID. Just copy-paste the data below into your identity provider fields.": [ "ID プロバイダーで ${ appName } の SAML を有効にすると、コールバック (ACS) URL と発行者 ID を使用するように求められる場合があります。以下のデータをコピーして ID プロバイダーのフィールドに貼り付けるだけです。" ], @@ -11688,9 +11611,6 @@ "You can edit this once to ensure the correct email address for verification.": [ "確認のための正しいメールアドレスを確認するために、一度編集することができます。" ], - "You can enable the Photos section from the interface using the toggle below.": [ - "写真セクションを有効にするには、以下のトグルを使用してインターフェースから設定できます。" - ], "You can enforce the password rules members of your organization will use when they create or reset the password to their ${ BRAND_NAME } Account.": [ "組織のメンバーが${ BRAND_NAME } アカウントの パスワード を作成または リセット するときに使用する パスワード のルールを適用できます。" ], @@ -16121,8 +16041,8 @@ "${ app } product updates": [ "${ app }のプロダクトアップデート" ], - "${ BRAND_NAME } for Business newsletter": [ - "ビジネス向け${ BRAND_NAME }ニュースレター" + "${ BRAND_NAME } for Business communications": [ + "ビジネスコミュニケーション向け ${ BRAND_NAME }" ], "${ BRAND_NAME } important announcements": [ "${ BRAND_NAME }の重要なお知らせ" @@ -16172,8 +16092,8 @@ "During your first month of using a ${ BRAND_NAME } product": [ "${ BRAND_NAME } 製品を使用している最初の1ヶ月間に" ], - "Email subscriptions": [ - "メール購読" + "Email communications": [ + "メールコミュニケーション" ], "In-app notifications": [ "アプリ内通知" @@ -17240,15 +17160,9 @@ "per month, billed every two years": [ "月額、2年ごとに請求" ], - "Preparing your Recovery Kit": [ - "回復キットを準備中" - ], "Protected by Swiss privacy laws": [ "スイスのプライバシー法によって保護されています" ], - "Save your recovery kit to continue": [ - "続行するにはリカバリ キットを保存してください" - ], "Secure vault sharing": [ "安全な保管庫共有" ], @@ -18094,21 +18008,6 @@ "${ upsellPlanTitle }にアップグレード" ] }, - "PQC account key generation": { - "Couldn’t generate keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\n${ settingsLink } and select 'Generate key' for your account and for each address.": [ - "キーを生成することができませんでした。ポスト量子保護を有効にするには、手動で新しい暗号キーを生成する必要があります。\n\n${ settingsLink }で、アカウントとそれぞれのアドレスに対して「キーを生成する」を選択してください。" - ] - }, - "PQC adress key generation": { - "Couldn’t generate address keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\nGo to ${ settingsLink } and select 'Generate key' for each address.": [ - "アドレスキーを生成できませんでした。ポスト量子保護を有効にするには、手動で新しい暗号キーを生成する必要があります。\n\n${ settingsLink }に行き、それぞれのアドレスに対して「キーを生成する」を選択してください。" - ] - }, - "PQC compatibility warning": { - "**You must update all ${ BRAND_NAME } mobile apps**: your new keys won't work on older app versions.": [ - "**${ BRAND_NAME } のすべてのモバイルアプリを更新してください**。古いバージョンのアプリでは、新しいキーは機能しません。" - ] - }, "PQC key generation": { "This will generate new quantum-resistant encryption keys for your account.": [ "これによりアカウントに新しい耐量子暗号キーが生成されます。" @@ -18444,15 +18343,9 @@ ], "Or ${ downloadRecoveryKitSwitchButton } instead.": [ "または、代わりに ${ downloadRecoveryKitSwitchButton } 。" - ], - "Your **Recovery Kit** lets you restore your ${ BRAND_NAME } Account if you’re locked out.": [ - "お客様の**リカバリーキット**を使用すると、ロックアウトされた場合に${ BRAND_NAME }アカウントを復元できます。" ] }, "RecoveryPhrase: Title": { - "Save your Recovery Kit": [ - "回復キットを保存" - ], "Save your recovery phrase": [ "回復用フレーズを保存" ] @@ -18839,9 +18732,6 @@ "Back to Safety Review": [ "安全性レビューに戻る" ], - "Because you reset your password, your current Recovery Kit can only be used to recover the data created before your password reset.": [ - "パスワードをリセットしたため、現在のリカバリーキットはパスワードがリセットされる前に作成されたデータのみ復元できます。" - ], "Can be used to regain access to your account and data": [ "アカウントとデータへのアクセスを回復するために使用できます" ], @@ -18869,9 +18759,6 @@ "Download ${ size }": [ "${ size } をダウンロード" ], - "Download your Recovery Kit": [ - "回復キットをダウンロード" - ], "Email address": [ "メールアドレス" ], @@ -18884,18 +18771,12 @@ "Enable recovery by phone": [ "電話番号での回復を有効にする" ], - "I understand that I will not be able to recover currently locked data with this Recovery Kit": [ - "現在ロックされたデータをこのリカバリーキットでは復旧はできないことを理解しています" - ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in on this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "もし${ BRAND_NAME }パスワードを忘れてリセットする必要がある場合、新しいパスワードを使用してこのデバイスでサインインすると、${ BRAND_NAME }アカウントへの完全なアクセスが復元されます。" ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "もし${ BRAND_NAME }パスワードを忘れてリセットする必要がある場合、新しいパスワードを使用してこのデバイスでサインインすると、${ BRAND_NAME }アカウントへの完全なアクセスが復元されます。" ], - "If you get locked out of your ${ BRAND_NAME } Account, your Recovery Kit will allow you to sign in and recover your data.": [ - "${ BRAND_NAME }アカウントからロックアウトされた場合、リカバリーキットを利用してサインインし、データの復元ができます。" - ], "If you lose your login details and need to reset your account, **it’s imperative** that you have both an **account recovery and data recovery method** in place, otherwise you might not be able to access any of your emails, contacts, files or passwords.": [ "ログイン情報を失い、アカウントをリセットする必要がある場合、**アカウント回復とデータ回復**の方法を確立しておくことが**非常に重要です**。そうしないと、メール、連絡先、ファイル、またはパスワードにアクセスできなくなる可能性があります。" ], @@ -18938,9 +18819,6 @@ "Take action to secure your account": [ "アカウントを保護するためのアクション" ], - "There was an error generating your Recovery Kit": [ - "回復キットの生成中にエラーが発生しました" - ], "There was an error verifying your email": [ "お客様のメールアドレスの確認中にエラーが発生しました" ], @@ -18968,12 +18846,6 @@ "to recover your account if you're ever locked out": [ "締め出された場合にアカウントを回復するために" ], - "Update your Recovery Kit": [ - "回復キットを更新" - ], - "Update your Recovery Kit?": [ - "回復キットを更新しますか?" - ], "Verify": [ "検証" ], @@ -18989,9 +18861,6 @@ "Verify your recovery phone number": [ "回復用電話番号を確認してください" ], - "We encountered an error while generating your Recovery Kit. Please try again later, or contact support if the issue continues.": [ - "回復キットの生成中にエラーが発生しました。後ほど再度試してください、あるいは問題が続く場合はサポートに連絡をしてください。" - ], "We encountered an error while verifying your email. Please try again later, or contact support if the issue continues.": [ "お客様のメールアドレスの確認中にエラーが発生しました。後ほど再度お試しいただくか、問題が続く場合はサポートにお問い合わせください。" ], @@ -19013,9 +18882,6 @@ "You can disable this at any time.": [ "いつでも無効化することができます。" ], - "You can use the recovery phrase in this Recovery Kit to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ - "この回復キットにあるリカバリーフレーズを使用すると、パスワードをリセットした際にアカウントを完全に復元することができるので、安全な場所に保管してください。" - ], "You can use your email to regain access to your account if you forget your password.": [ "パスワードを忘れた場合、お客様のメールアドレスを使用してアカウントへのアクセスを回復できます。" ], @@ -19025,9 +18891,6 @@ "You can use your recovery phone to regain access to your account if you forget your password.": [ "パスワードを忘れた場合、回復用電話番号を使用してアカウントへのアクセスを回復できます。" ], - "You have previously downloaded a Recovery Kit. Downloading a new one will **deactivate the old one**.": [ - "以前にリカバリーキットはダウンロードされました。新しいものをダウンろどーすると、**古いものは非アクティベートされます**。" - ], "You have recommended actions to safeguard your account further.": [ "お客様のアカウントをさらに保護するための推奨事項があります。" ], @@ -19091,12 +18954,6 @@ "Your recovery email is set": [ "回復用メールアドレスが設定されました" ], - "Your Recovery Kit": [ - "回復キット" - ], - "Your Recovery Kit is set": [ - "回復キットが設定されました" - ], "Your recovery methods": [ "回復手段" ], @@ -19636,14 +19493,6 @@ "パスワードリセットの要求" ] }, - "Setting": { - "Get updates about comments via email": [ - "メール経由でコメントの最新情報を受け取る" - ], - "Include document name in email notifications": [ - "メール通知には文書名が含まれます" - ] - }, "Settings description": { "Keep your inbox organized with folders and labels. ${ learnMoreLink }": [ "フォルダーとラベルで受信トレイを整理できます。${ learnMoreLink }" @@ -21515,9 +21364,6 @@ "Organization logo updated": [ "組織ロゴの更新" ], - "Organization name set": [ - "組織名が設定されました" - ], "Organization name updated": [ "組織名が更新されました" ], @@ -22171,9 +22017,6 @@ "Change second password": [ "セカンドパスワードを変更" ], - "Check your default mail application": [ - "デフォルトのメールアプリを確認" - ], "Choose a provider": [ "プロバイダーを選択" ], @@ -22201,18 +22044,12 @@ "Confirm": [ "確認" ], - "Confirm address": [ - "アドレスの確認" - ], "Confirm downgrade": [ "ダウングレードの確認" ], "Confirm loss of ${ BRAND_NAME } bonuses": [ "${ BRAND_NAME } ボーナスの損失を確認" ], - "Confirm phone number": [ - "電話番号の確認" - ], "Connect ${ name }": [ "${ name } に接続" ], @@ -22600,6 +22437,9 @@ "Feature access": [ "機能アクセス" ], + "Fewer distractions, more focus": [ + "気を散らすものを減らし、集中力を高める" + ], "Filter for more focus": [ "より集中するためのフィルター" ], @@ -22975,9 +22815,6 @@ "Phone": [ "電話番号" ], - "Photos": [ - "写真" - ], "Pin the extension": [ "拡張機能をピン留めする" ], @@ -23248,6 +23085,9 @@ "Snooze:": [ "スヌーズ:" ], + "Something went wrong": [ + "何か問題が発生しました" + ], "Sort folders alphabetically": [ "フォルダーをアルファベット順に並べ替える" ], @@ -23806,9 +23646,6 @@ "This feature is only available on Beta": [ "この機能はベータ版でのみ利用可能です" ], - "This is the default key used by other ${ MAIL_APP_NAME } users on older mobile apps to encrypt data they send to you": [ - "これは、他の ${ MAIL_APP_NAME } ユーザーが古いモバイル版アプリで送信するデータを暗号化するために使用するデフォルトのキーです" - ], "This is the default key used by other ${ MAIL_APP_NAME } users to encrypt data they send to you": [ "これは、他の ${ MAIL_APP_NAME } ユーザーが送信するデータを暗号化するために使用するデフォルトのキーです" ], @@ -24572,12 +24409,6 @@ "${ BRAND_NAME } will transfer as much data as possible, starting with your most recent messages.": [ "${ BRAND_NAME } は、最新のメッセージからできるだけ多くのデータを転送します。" ], - "Are you sure you want to delete the phone number?": [ - "本当にこの電話番号を削除しますか?" - ], - "Are you sure you want to delete this address?": [ - "本当にこのアドレスを削除してよろしいですか?" - ], "By deleting this address, you will no longer be able to receive daily email notifications.": [ "このアドレスを削除することで、今後毎日のメール通知を受け取ることができなくなります。" ], @@ -24587,9 +24418,6 @@ "By deleting this address, you will no longer be able to recover your account.": [ "このメールアドレスを削除すると、今後あなたのアカウントを回復することができなくなります。" ], - "By deleting this phone number, you will no longer be able to recover your account.": [ - "この電話番号を削除すると、今後あなたのアカウントを回復することができなくなります。" - ], "If you cancel this import, you won't be able to resume it. ${ BRAND_NAME } saved all progress in your account. Cancel anyway?": [ "このインポートをキャンセルすると、後で再開することはできません。${ BRAND_NAME } は進行状況をすべてアカウントに保存しました。それでもキャンセルしますか?" ], diff --git a/applications/account/locales/ka_GE.json b/applications/account/locales/ka_GE.json index 2c5ec0c2bd0..43088fcc3f1 100644 --- a/applications/account/locales/ka_GE.json +++ b/applications/account/locales/ka_GE.json @@ -1380,9 +1380,6 @@ "Set as default": [ "ნაგულისხმევად დაყენება" ], - "Set as default mail application": [ - "ნაგულიხმევ ელფოსტის აპლიკაციად დაყენება" - ], "Set catch-all": [ "დომენის ყველა ელფოსტის მიღება" ], @@ -2609,11 +2606,8 @@ ] }, "BOSS": { - "Add a custom domain": [ - "მომხმარებლის დომენის დამატება" - ], - "App installed": [ - "აპი დაყენებულია" + "All": [ + "ყველა" ], "Authenticate": [ "ავთენტიკაცია" @@ -2639,9 +2633,6 @@ "Domain connected": [ "დომენი დაკავშირებულია" ], - "Domain ownership verified": [ - "დომენის მფლობელობა გადამოწმებულია" - ], "Estimated size": [ "სავარაუდო ზომა" ], @@ -2660,15 +2651,9 @@ "Install migration app": [ "მიგრაციის პროგრამის დაყენება" ], - "Learn more about what can be migrated. Learn more": [ - "შეიტყვეთ მეტი, რისი მიგრაციაა შესაძლებელი. შეიტყვეთ მეტი" - ], "Mail": [ "ფოსტა" ], - "Migrate": [ - "მიგრაცია" - ], "Migrate from Google Workspace": [ "მიგრაცია Google Workspace-დან" ], @@ -2685,18 +2670,12 @@ "Migration status": [ "მიგრაციის სტატუსი" ], - "Not started": [ - "დაწყებული არაა" - ], "Organization does not have enough seats available": [ "ორგანიზაციას საკმარისი თავისუფალი ადგილი არ აქვს" ], "Organization does not have enough storage available": [ "ორგანიზაციას საკმარისი თავისუფალი ადგილი არ აქვს" ], - "Organization settings": [ - "ორგანიზაციის მორგება" - ], "Required": [ "აუცილებელია" ], @@ -2721,15 +2700,15 @@ "Sign in to Google Workspace": [ "შესვლა Google Workspace-ში" ], + "Size": [ + "ზომა" + ], "Start migration": [ "მიგრაციის დაწყება" ], "Status": [ "სტატუსი" ], - "Transfer errors": [ - "გადაცემის შეცდომები" - ], "User": [ "მომხმარებელი" ], @@ -2742,14 +2721,14 @@ "Verify your domain": [ "თქვენი დომენის გადამოწმება" ], - "Verify your domain ownership": [ - "თქვენი დომენის მფლობელობის გადამოწმება" - ], "Verify your domain to start a migration": [ "დაადასტურეთ თქვენი დომენი მიგრაციის დასაწყებად" ], "What are you migrating?": [ "რის მიგრაციას ახდენთ?" + ], + "You": [ + "თქვენ" ] }, "breadcrumb": { @@ -2857,6 +2836,9 @@ ] }, "Button": { + "Cancel": [ + "გაუქმება" + ], "Close": [ "დახურვა" ], @@ -4623,12 +4605,6 @@ ] }, "Description": { - "${ MAIL_APP_NAME } is not your default mail application.": [ - "${ MAIL_APP_NAME } თქვენი ნაგულისხმევი ელფოსტის აპლიკაცია არაა." - ], - "${ MAIL_APP_NAME } is your default mail application.": [ - "${ MAIL_APP_NAME } თქვენი ნაგულისხმევი ელფოსტის აპლიკაციაა." - ], "A checked box means the feature is disabled.": [ "ჩართული ნიშნავს, რომ ეს ფუნქცია გამორთულია." ], @@ -4731,9 +4707,6 @@ "No one in your organization can connect to shared servers.": [ "თქვენს ორგანიზაციაში გაზიარებულ სერვერებთან დაკავშირება არავის შეუძლია." ], - "Send a code to your recovery email or phone": [ - "კოდის გაგზავნა თქვენს აღდგენის ელფოსტაზე ან ტელეფონზე" - ], "Set up accounts for all users and invite them to join ${ BRAND_NAME }.": [ "მოირგეთ ანგარიშები ყველა მომხმარებლისთვის და მოიწვიეთ ისინი ${ BRAND_NAME }-ზე." ], @@ -5889,9 +5862,6 @@ "Less than a minute left": [ "დარჩა წუთზე ნაკლები" ], - "None": [ - "არცერთი" - ], "Only ": [ "მხოლოდ " ], @@ -5979,15 +5949,9 @@ "Select recovery contact ${ name }": [ "აირჩიეთ აღდგენის კონტაქტი ${ name }" ], - "Send email request": [ - "ელგოსტის მოთხოვნის გაგზავნა" - ], "Send recovery request": [ "აღდგენის მოთხოვნის გაგზავნა" ], - "Set account recovery": [ - "ანგარიშის აღდგენის დაყენება" - ], "Stop being recovery contact": [ "აღდგენის კონტაქტად ყოფნის შეწყვეტა" ], @@ -6499,9 +6463,6 @@ "Please try again in a few moments.": [ "გთხოვთ, ხელახლა სცადოთ რამდენიმე წამში." ], - "Please upgrade to a business plan with more than 1 user to get multi-user support": [ - "მრავალმომხმარებლიანობის მისაღებად შეიძინეთ სატარიფო გეგმა, რომელიც 1-ზე მეტ მომხმარებელს შეიცავს" - ], "Please upgrade to a business plan with more than 1 user to manage multiple users.": [ "ბევრი მომხმარებლის სამართავად შეიძინეთ სატარიფო გეგმა, რომელიც 1-ზე მეტ მომხმარებელს შეიცავს." ], @@ -7792,11 +7753,6 @@ "${ BRAND_NAME }. კონფიდენციალობა ნაგულისხმევია." ] }, - "Force upgrade safety review": { - "I understand that I will no longer be able to sign in to older versions of ${ BRAND_NAME } mobile apps.": [ - "მე მესმის, რომ ვეღარ შევალ ${ BRAND_NAME }-ის მობილური პროგრამების ძველ ვერსიებში." - ] - }, "Form heading": { "Enter your email address": [ "შეიყვანეთ თქვენი ელფოსტის მისამართი" @@ -8137,9 +8093,6 @@ "Contact us": [ "დაგვიკავშირდით" ], - "Downloads": [ - "გადმოწერები" - ], "Enjoying ${ planName }?": [ "მოგწონთ${ planName }?" ], @@ -8913,10 +8866,6 @@ "Add your name and logo to create a more personalized experience for your organization.": [ "დაამატეთ თქვენი სახელი და ლოგო, რომ თქვენი ორგანიზაციისთვის უფრო მორგებული გარემო შეიქმნათ." ], - "Adding ${ addedServerCount } gateway server": [ - "${ addedServerCount } რაუტერი სერვერის დამატება", - "${ addedServerCount } რაუტერი სერვერის დამატება" - ], "Adding an external email address will disable end-to-end encryption for all email communication within that group. Do you want to proceed?": [ "გარეთ ელფოსტის დამატება გამჭოლ დაშიფვრას გათიშავს ამ ჯგუფში. გნებავთ, გააგრძელოთ?" ], @@ -9198,9 +9147,6 @@ "Change your password": [ "შეცვალეთ თქვენი პაროლი" ], - "Check the status of imports and forwarding.": [ - "შემოტანისა და გადაგზავნის მდგომარეობის შემოწმება." - ], "Choose a plan that works best for you.": [ "აირჩიეთ სატარიფო გეგმა, რომელიც საუკეთესოდ შეგესაბამებათ." ], @@ -9283,10 +9229,6 @@ "Create a label for the imported messages, a time range for this import, and the labels you would like to import.": [ "შემოტანილი შეტყობინებების ჭდის შექმნა. შემოტანის დროის დიაპაზონი და ჭდეები, რომლის შემოტანაც გნებავთ." ], - "Create a secure cloud for ${ value } member": [ - "დაცული ღრუბლის შექმნა ${ value } წევრისთვის", - "დაცული ღრუბლის შექმნა ${ value } წევრისთვის" - ], "Create an account": [ "ანგარიშის შექმნა" ], @@ -11496,9 +11438,6 @@ "You can edit this once to ensure the correct email address for verification.": [ "იმისათვის, რომ დარწმუნდეთ, რომ ეს გადასამოწმებლად სწორი ელფოსტის მისამართია, ის, შეგიძლიათ, ერთხელ ჩაასწოროთ." ], - "You can enable the Photos section from the interface using the toggle below.": [ - "ფოტოების სექციის ჩართვა ინტერფეისიდან შეგიძლიათ, ქვემო მხარეს არსებული გადასართველით." - ], "You can get our premium privacy services in one bundle—and it’s just **${ priceString }/month**.": [ "შეგიძლიათ, ჩვენი ფასიანი ფუნქცია ერთ პაკეტში მიიღოთ - და ის მხოლოდ **${ priceString } ღირს თვეში**." ], @@ -13153,6 +13092,9 @@ "Moderate NAT": [ "საშუალო NAT-ი" ], + "Monthly": [ + "თვეში ერთხელ" + ], "More payment methods": [ "მეტი გადახდის მეთოდი" ], @@ -13201,6 +13143,9 @@ "Newsletters": [ "სიახლეები" ], + "No": [ + "არა" + ], "No (users cannot use the app until a vault is shared with them)": [ "არა (მომხმარებლები ვერ გამოიყენებენ აპს, სანამ მათ საცავს არ გაუზიარებენ)" ], @@ -13709,6 +13654,9 @@ "Without attachment": [ "მიმაგრების გარეშე" ], + "Yearly": [ + "ყოველწლიური" + ], "Yes": [ "დიახ" ], @@ -13796,6 +13744,11 @@ "დაამატეთ ეს TXT ჩანაწერი. გაითვალისწინეთ, რომ DNS ჩანაწერების განახლებას რამდენიმე საათი შეიძლება, დასჭირდეს." ] }, + "Label for domain setup": { + "Type": [ + "ტიპი" + ] + }, "Label for new member": { "Admin": [ "ადმინისტრატორი" @@ -13949,6 +13902,9 @@ "Create an alias": [ "ფსევდონიმის შექმნა" ], + "Details": [ + "დეტალები" + ], "Downloads": [ "გადმოწერები" ], @@ -15877,9 +15833,6 @@ "${ app } product updates": [ "${ app }-ის პროდუქტის განახლებები" ], - "${ BRAND_NAME } for Business newsletter": [ - "${ BRAND_NAME }-ის საქმიანი გაზეთი" - ], "${ BRAND_NAME } important announcements": [ "${ BRAND_NAME }-ის მნიშვნელოვანი განცხადებები" ], @@ -15928,9 +15881,6 @@ "During your first month of using a ${ BRAND_NAME } product": [ "${ BRAND_NAME }-ის პროდუქტის გამოყენების პირველი თვის განმავლობაში" ], - "Email subscriptions": [ - "ელფოსტის გამოწერები" - ], "In-app notifications": [ "აპის შეტყობინებები" ], @@ -16994,15 +16944,9 @@ "per month, billed every two years": [ "ყოველთვე, გადაიხდით 2 წელიწადში ერთხელ" ], - "Preparing your Recovery Kit": [ - "თქვენი აღგენის ნაკრების მომზადება" - ], "Protected by Swiss privacy laws": [ "დაცულია შვეიცარიული კონფიდენციალობის კანონებით" ], - "Save your recovery kit to continue": [ - "გასაგრძელებლად შეინახეთ თქვენი აღდგენის ნაკრები" - ], "Secure vault sharing": [ "დაცული საცავის გაზიარება" ], @@ -17784,11 +17728,6 @@ "სატარიფო გეგმის განახლება: ${ upsellPlanTitle }" ] }, - "PQC compatibility warning": { - "**You must update all ${ BRAND_NAME } mobile apps**: your new keys won't work on older app versions.": [ - "**თქვენ უნდა განაახლოთ ყველა ${ BRAND_NAME }-ის მობილური აპლიკაცია**: თქვენი ახალი გასაღებები არ იმუშავებს აპლიკაციის ძველ ვერსიებზე." - ] - }, "PQC key generation": { "This will generate new quantum-resistant encryption keys for your account.": [ "ეს შექმნის ახალ კვანტგამძლე დაშიფვრის გასაღებებს თქვენი ანგარიშისთვის." @@ -17996,6 +17935,17 @@ "ტელეფონის ნომრის შემოწმება ზრდის თქვენი ანგარიშის უსაფრთხოებას და აღდგენის დამატებით შესაძლებლობებს გაძლევთ." ] }, + "Recovery score": { + "Partial": [ + "ნაწილობრივი" + ], + "Strong": [ + "ძლიერი" + ], + "Weak": [ + "სუსტი" + ] + }, "RecoveryPhrase: Action": { "Continue": [ "გაგრძელება" @@ -18028,15 +17978,9 @@ ], "Or ${ downloadRecoveryKitSwitchButton } instead.": [ "${ downloadRecoveryKitSwitchButton }-ის გამოყენება." - ], - "Your **Recovery Kit** lets you restore your ${ BRAND_NAME } Account if you’re locked out.": [ - "თქვენი **აღდგენის ნაკრები** საშუალებას გაძლევთ აღადგინოთ თქვენი ${ BRAND_NAME } ანგარიში, თუ დაბლოკილი ბრძანდებით." ] }, "RecoveryPhrase: Title": { - "Save your Recovery Kit": [ - "თქვენი აღდგენის ნაკრების შენახვა" - ], "Save your recovery phrase": [ "შეინახეთ თქვენი აღდგენის ფრაზა" ] @@ -18398,9 +18342,6 @@ "Back to Safety Review": [ "უსაფრთხოების მიმოხილვაზე დაბრუნება" ], - "Because you reset your password, your current Recovery Kit can only be used to recover the data created before your password reset.": [ - "იმის გამო, რომ პაროლი ჩამოყარეთ, თქვენი მიმდინარე აღდგენის ნაკრები, მხოლოდ, თქვენი პაროლის ჩამოყრამდე არსებული ინფორმაციის აღსადგენად შეგიძლიათ, გამოიყენოთ." - ], "Can be used to regain access to your account and data": [ "შეგიძლიათ, თქვენს ანგარიშზე და მონაცემებთან წვდომის აღსადგენად გამოიყენოთ" ], @@ -18428,9 +18369,6 @@ "Download ${ size }": [ "${ size }-ის გადმოწერა" ], - "Download your Recovery Kit": [ - "თქვენი აღდგენის ნაკრების გადმოწერა" - ], "Email address": [ "ელფოსტის მისამართი" ], @@ -18443,18 +18381,12 @@ "Enable recovery by phone": [ "ტელეფონით აღდგენის ჩართვა" ], - "I understand that I will not be able to recover currently locked data with this Recovery Kit": [ - "მესმის, რომ ამჟამად დაბლოკილი მონაცემების გაშიფვრა ამ აღდგენის ნაკრებით შეუძლებელია" - ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in on this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "თუ თქვენი ${ BRAND_NAME }-ის პაროლი დაგავიწყდათ და მისი ჩამოყრა გჭირდებათ, შემდეგ ჯერზე, როცა ამ მოწყობილობაზე ახალი პაროლით შემოხვალთ, თქვენს ${ BRAND_NAME }-ის ანგარიშზე სრული წვდომა აღგიდგებათ." ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "თუ თქვენი ${ BRAND_NAME }-ის პაროლი დაგავიწყდათ და მისი ჩამოყრა გჭირდებათ, შემდეგ ჯერზე, როცა ამ მოწყობილობაზე ახალი პაროლით შემოხვალთ, თქვენს ${ BRAND_NAME }-ის ანგარიშზე სრული წვდომა აღგიდგებათ." ], - "If you get locked out of your ${ BRAND_NAME } Account, your Recovery Kit will allow you to sign in and recover your data.": [ - "თუ თქვენი ${ BRAND_NAME }-ის ანგარიში დაგებლოკათ, თქვენი აღდგენის დოკუმენტი შესვლაში და თქვენი მონაცემების აღდგენაში დაგეხმარებათ." - ], "If you lose your login details and need to reset your account, **it’s imperative** that you have both an **account recovery and data recovery method** in place, otherwise you might not be able to access any of your emails, contacts, files or passwords.": [ "თუ თქვენი ავტორიზაციის დეტალები დაკარგეთ და გნებავთ, ჩამოყაროთ თქვენი ანგარიში, **მნიშვნელოვანია**, რომ ორივე, **ანგარიშის აღდგენის და მონაცემების აღდდგენის მეთოდი** გქონდეთ ჩართული. სხვაგვარად, შეიძლება, დაკარგოთ წვდომა თქვენს ელფოსტასთან, კონტაქტებთან, ფაილებთან და პაროლებთან." ], @@ -18497,9 +18429,6 @@ "Take action to secure your account": [ "ქმედებები თქვენი ანგარიშის დასაცავად" ], - "There was an error generating your Recovery Kit": [ - "შეცდომა თქვენი აღდგენის ნაკრების გენერაციისას" - ], "There was an error verifying your email": [ "შეცდომა თქვენი ელფოსტის გადამოწმებისას" ], @@ -18527,12 +18456,6 @@ "to recover your account if you're ever locked out": [ "ანგარიშის აღსადგენად, თუ ვერ შედიხართ" ], - "Update your Recovery Kit": [ - "თქვენი აღდგენის ნაკრების განახლება" - ], - "Update your Recovery Kit?": [ - "განახლდეს თქვენი აღდგენის ნაკრები?" - ], "Verify": [ "გადამოწმება" ], @@ -18548,9 +18471,6 @@ "Verify your recovery phone number": [ "გადაამოწმეთ თქვენი აღდგენის ტელეფონის ნომერი" ], - "We encountered an error while generating your Recovery Kit. Please try again later, or contact support if the issue continues.": [ - "აღმოჩენილია შეცდომა თქვენი აღდგენის ნაკრების გენერაციისას. სცადეთ მოგვიანებით, ან, თუ შეცდომა არ გაქრა, დაუკავშირდით ჩვენი მხარდაჭერის გუნდს." - ], "We encountered an error while verifying your recovery email. Please try again later, or contact support if the issue continues.": [ "აღმოჩენილია შეცდომა თქვენი აღდგენის ელფოსტის გადამოწმებისას. სცადეთ მოგვიანებით, ან, თუ შეცდომა არ გაქრა, დაუკავშირდით ჩვენი მხარდაჭერის გუნდს." ], @@ -18569,9 +18489,6 @@ "You can disable this at any time.": [ "გათიშვა ნებისმიერ დროს შეგიძლიათ." ], - "You can use the recovery phrase in this Recovery Kit to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ - "აღდგენის ფრაზა პაროლის ჩამოყრის შემდეგ ანგარიშის სრულად აღსადგენად შეგიძლიათ, გამოიყენოთ, ასე რომ დარწმუნდით, რომ ის უსაფრთხოდ გაქვთ შენახული." - ], "You can use your email to regain access to your account if you forget your password.": [ "თუ პაროლი დაგავიწყდათ თქვენს ანგარიშთან აღსადგენად, შეგიძლიათ, აღდგენის ელფოსტა გამოიყენოთ." ], @@ -18581,9 +18498,6 @@ "You can use your recovery phone to regain access to your account if you forget your password.": [ "თუ პაროლი დაგავიწყდათ თქვენს ანგარიშთან წვდომის აღსადგენად, შეგიძლიათ, აღდგენის ტელეფონი გამოიყენოთ." ], - "You have previously downloaded a Recovery Kit. Downloading a new one will **deactivate the old one**.": [ - "აღდგენის ნაკრები უკვე გადმოწერეთ. ახლის გადმოწერა **ძველს გათიშავს**." - ], "You have recommended actions to safeguard your account further.": [ "გაქვთ რეკომენდებული ქმედებები, რიმ კიდევ უფრო მეტად დაიცვათ თქვენი ანგარიში." ], @@ -18644,12 +18558,6 @@ "Your recovery email is set": [ "თქვენი აღდგენის ელფოსტა დაყენებულია" ], - "Your Recovery Kit": [ - "თქვენი აღდგენის ნაკრები" - ], - "Your Recovery Kit is set": [ - "თქვენი აღდგენის ნაკრები დაყენებულია" - ], "Your recovery methods": [ "თქვენი აღდგენის მეთოდები" ], @@ -18669,6 +18577,23 @@ "თქვენი აღდგენის ტელეფონის ნომერია:" ] }, + "safety_review": { + "Add": [ + "დამატება" + ], + "Allow": [ + "დაშვება" + ], + "Done": [ + "მზადაა" + ], + "Got it": [ + "გავიგე" + ], + "Later": [ + "მოგვიანებით" + ] + }, "saml: Action": { "Cancel": [ "გაუქმება" @@ -19187,14 +19112,6 @@ "პაროლის შეცვლის მოთხოვნა" ] }, - "Setting": { - "Get updates about comments via email": [ - "კომენტარის განახლებების ელფოსტით მიღება" - ], - "Include document name in email notifications": [ - "დოკუმენტის სახელის ჩასმა ელფოსტის გაფრთხილებებში" - ] - }, "Settings description": { "Keep your inbox organized with folders and labels. ${ learnMoreLink }": [ "დაალაგეთ თქვენი საფოსტო ყუთი საქაღალდეებითა და ჭდეებით. ${ learnMoreLink }" @@ -20275,6 +20192,17 @@ "მიმდინარეობს თქვენი გამოწერის გაუქმება. მოითმინეთ" ] }, + "Status": { + "Off": [ + "გამორთ" + ], + "On": [ + "ჩართ" + ], + "Saved": [ + "შენახულია" + ] + }, "Step in filter modal": { "Actions": [ "ქმედებები" @@ -21067,9 +20995,6 @@ "Organization logo updated": [ "ორგანიზაციის ლოგო განახლდა" ], - "Organization name set": [ - "ორგანიზაციის სახელი დაყენებულია" - ], "Organization name updated": [ "ორგანიზაციის სახელი განახლდა" ], @@ -21259,6 +21184,9 @@ ], "/user per month": [ "/მომხმარებელი თვეში" + ], + "/year": [ + "/წელიწადში" ] }, "Suffix for price": { @@ -21745,9 +21673,6 @@ "Change second password": [ "მეორე პაროლის შეცვლა" ], - "Check your default mail application": [ - "შეამოწმეთ თქვენი ნაგულისხმევი ელფოსტის აპლიკაცია" - ], "Choose a provider": [ "აირჩიეთ პროვაიდერი" ], @@ -21775,18 +21700,12 @@ "Confirm": [ "დასტური" ], - "Confirm address": [ - "დაადასტურეთ მისამართი" - ], "Confirm downgrade": [ "ტარიფის ჩამოწევის დადასტურება" ], "Confirm loss of ${ BRAND_NAME } bonuses": [ "დაადასტურეთ ${ BRAND_NAME } -ის დამატებითი ჯილდოების დაკარგვა" ], - "Confirm phone number": [ - "დაადასტურეთ ტელეფონის ნომერი" - ], "Connect ${ name }": [ "${ name }-სთან დაკავშირება" ], @@ -22177,6 +22096,9 @@ "Feature access": [ "წვდომა ფუნქციასთან" ], + "Fewer distractions, more focus": [ + "ნაკლები ყურადღების გადატანა, მეტი ფოკუსი" + ], "Filter for more focus": [ "ფილტრი მეტი კონცენტრაციისთვის" ], @@ -22207,9 +22129,6 @@ "Forward emails": [ "ელფოსტების გადამისამართება" ], - "Forwardings": [ - "გადამისამართებები" - ], "Free": [ "Free" ], @@ -22553,9 +22472,6 @@ "Phone": [ "ტელეფონი" ], - "Photos": [ - "ფოტოები" - ], "Pin the extension": [ "გაფართოების მიმაგრება" ], @@ -22826,6 +22742,9 @@ "Snooze:": [ "დროებით დადუმება:" ], + "Something went wrong": [ + "რაღაც არასწორად წავიდა" + ], "Sort folders alphabetically": [ "საქაღალდეების ანბანით დალაგება" ], @@ -23759,6 +23678,9 @@ "Email": [ "ელფოსტა" ], + "General": [ + "ზოგადი" + ], "Invitation email": [ "მოწვევის ელფოსტა" ], @@ -23774,6 +23696,9 @@ "Remember to share the user's sign in details with them.": [ "გახსოვდეთ, რომ აუცილებელია, მომხმარებლებს მათი შესვლის დეტალები გაუზიაროთ." ], + "Save": [ + "შენახვა" + ], "Send invite link via email instead": [ "მოწვევის ბმულის ელფოსტით გაგზავნა" ], @@ -24098,12 +24023,6 @@ "${ BRAND_NAME } will transfer as much data as possible, starting with your most recent messages.": [ "${ BRAND_NAME }-ი გადაიტანს იმდენ მონაცემს, უკანასკნელი შეტყობინებებით დაწყებული, რამდენიც ეს შესაძლებელი იქნება." ], - "Are you sure you want to delete the phone number?": [ - "დარწმუნებული ბრძანდებით, რომ გნებავთ მონიშნული ტელეფონის ნომრის წაშლა?" - ], - "Are you sure you want to delete this address?": [ - "დარწმუნებული ბრძანდებით, რომ გნებავთ მისამართის წაშლა?" - ], "By deleting this address, you will no longer be able to receive daily email notifications.": [ "მისამართის წაშლის შემთხვევაში ელფოსტის დღიურ გაფრთხილებებს ვეღარ მიიღებთ." ], @@ -24113,9 +24032,6 @@ "By deleting this address, you will no longer be able to recover your account.": [ "ამ მისამართის წაშლის შემთხვევაში თქვენს ანგარიშს ვეღარ აღადგენთ." ], - "By deleting this phone number, you will no longer be able to recover your account.": [ - "ამ ტელეფონის ნომრის წაშლის შემთხვევაში თქვენს ანგარიშს ვეღარ აღადგენთ." - ], "If you cancel this import, you won't be able to resume it. ${ BRAND_NAME } saved all progress in your account. Cancel anyway?": [ "შემოტანას თუ გააუქმებთ, მისი გაგრძელება შეუძლებელი იქნება. ${ BRAND_NAME }-მა ყველაფერი, რაც უკვე გააკეთა, თქვენს ანგარიშში შეინახა. მაინც გნებავთ გაუქმება?" ], diff --git a/applications/account/locales/kab_DZ.json b/applications/account/locales/kab_DZ.json index d832eb75ec4..ac0233c1615 100644 --- a/applications/account/locales/kab_DZ.json +++ b/applications/account/locales/kab_DZ.json @@ -2867,9 +2867,6 @@ "Disabled": [ "Yensa" ], - "None": [ - "Ula yiwen" - ], "Upgrade to ${ planName }": [ "Leqqem ɣer ${ planName }" ] @@ -7699,9 +7696,6 @@ "${ allCategoryTitlesExceptTheLastOne } and ${ lastCategoryTitle }": [ "${ allCategoryTitlesExceptTheLastOne } d ${ lastCategoryTitle }" ], - "${ BRAND_NAME } for Business newsletter": [ - "${ BRAND_NAME } i telɣut n umahil" - ], "${ BRAND_NAME } important announcements": [ "Ilɣa s wazal n ${ BRAND_NAME }" ], @@ -7731,9 +7725,6 @@ ], "Daily email notifications": [ "Ilɣa imayl imezwar" - ], - "Email subscriptions": [ - "Ijerriden s yimayl" ] }, "Notification": { @@ -8088,15 +8079,9 @@ "per month": [ "i waggur" ], - "Preparing your Recovery Kit": [ - "Aheyyi n Kit inek n tririt" - ], "Protected by Swiss privacy laws": [ "Yettummesten s isaḍufen n tbaḍnit n Sswis" ], - "Save your recovery kit to continue": [ - "Sekles kit inek n tririt i wakken ad tkemmleḍ" - ], "Setting up your organization": [ "Sbadu tkebbanit-ik" ], @@ -9777,18 +9762,12 @@ "Confirm": [ "Sentem" ], - "Confirm address": [ - "Sentem tansa" - ], "Confirm downgrade": [ "Sentem abeddel n tikci" ], "Confirm loss of ${ BRAND_NAME } bonuses": [ "Sentem rrwaḥ n yibunusen n ${ BRAND_NAME }" ], - "Confirm phone number": [ - "Sentem uṭṭun n tilifun" - ], "Connect ${ name }": [ "Qqen ɣer ${ name }" ], @@ -10203,9 +10182,6 @@ "Phone": [ "Tiliɣri" ], - "Photos": [ - "Tiwlafin" - ], "Pin the extension": [ "Senteḍ asiɣzef" ], @@ -10356,6 +10332,9 @@ "Snooze:": [ "Ales:" ], + "Something went wrong": [ + "Yella wayen yeḍran" + ], "Sort folders alphabetically": [ "Smizzwer ikaramen s ugemmay" ], @@ -10864,12 +10843,6 @@ "${ BRAND_NAME } will transfer as much data as possible, starting with your most recent messages.": [ "${ BRAND_NAME } ad siweḍ aqettun n yisefka iwum yezmer, ad yebdu s yiznan-inek·inem n melmi kan." ], - "Are you sure you want to delete the phone number?": [ - "Tebɣiḍ s tidet ad tekkseḍ uṭṭun n tiliɣri?" - ], - "Are you sure you want to delete this address?": [ - "Tebɣiḍ ad tekkseḍ tansa-agi?" - ], "By deleting this address, you will no longer be able to receive daily email notifications.": [ "S tukksa n tansa-a, ur tettuɣaleḍ ara ad tzmireḍ ad d-tremseḍ ilɣa n yimaylen n yal ass." ], @@ -10879,9 +10852,6 @@ "By deleting this address, you will no longer be able to recover your account.": [ "S tukksa n tans-a, ur tettuɣaleḍ ara ad tizmireḍ ad d-terreḍ amiḍan-ik·im." ], - "By deleting this phone number, you will no longer be able to recover your account.": [ - "S tukksa n wuṭṭun-a n tiliɣri, ur tettuɣaleḍ ara ad tizmireḍ ad d-terreḍ amiḍan-ik·im." - ], "If you cancel this import, you won't be able to resume it. ${ BRAND_NAME } saved all progress in your account. Cancel anyway?": [ "Ma yella tesfesxeḍ taktert-agi, ur tettizmireḍ ara ad tt-tkemmeleḍ. ${ BRAND_NAME } iseklas akk inerniyen deg umiḍan-ik·im. Ad tsefsxeḍ akken yebɣu yili?" ], diff --git a/applications/account/locales/ko_KR.json b/applications/account/locales/ko_KR.json index 21c9723608f..706f1072b71 100644 --- a/applications/account/locales/ko_KR.json +++ b/applications/account/locales/ko_KR.json @@ -318,9 +318,6 @@ "Connect Gmail address": [ "Gmail 주소 연결" ], - "Connect to Gmail": [ - "Gmail 에 연결" - ], "Connect to video conferencing": [ "화상 회의에 연결하기" ], @@ -498,9 +495,6 @@ "Delete record": [ "기록 삭제" ], - "Delete token ${ token.Account }": [ - "토큰 ${ token.Account } 삭제" - ], "Delete token “${ token.Name }”": [ "토큰 \"${ token.Name }\" 삭제" ], @@ -1401,9 +1395,6 @@ "Set as default": [ "기본값으로 설정" ], - "Set as default mail application": [ - "기본 메일 애플리케이션으로 설정" - ], "Set catch-all": [ "Catch-all 설정" ], @@ -2711,12 +2702,6 @@ "${ BRAND_NAME } Migration Assistant": [ "${ BRAND_NAME } 이전 도우미" ], - "Add a custom domain": [ - "커스텀 도메인 추가" - ], - "App installed": [ - "앱 설치됨" - ], "Authenticate": [ "인증" ], @@ -2744,9 +2729,6 @@ "Domain connected": [ "도메인 연결됨" ], - "Domain ownership verified": [ - "도메인 소유권 인증됨" - ], "Estimated size": [ "예상 용량" ], @@ -2771,15 +2753,9 @@ "Install migration app": [ "이전 앱 설치" ], - "Learn more about what can be migrated. Learn more": [ - "이전 가능한 항목에 대해 더 알아보세요. 더 알아보기" - ], "Mail": [ "멩리" ], - "Migrate": [ - "이전" - ], "Migrate from Google Workspace": [ "Google Workspace에서 이전" ], @@ -2795,18 +2771,12 @@ "Migration status": [ "마이그레이션 상태" ], - "Not started": [ - "시작 전" - ], "Organization does not have enough seats available": [ "조직의 사용 권한이 충분하지 않습니다." ], "Organization does not have enough storage available": [ "조직에 충분한 저장공간이 남아있지 않습니다." ], - "Organization settings": [ - "조직 설정" - ], "Required": [ "필수" ], @@ -2816,9 +2786,6 @@ "Select at least one user to start a migration": [ "하나 이상의 사용자를 선택하여 마이그레이션을 시작하세요" ], - "Select what you want to migrate, this will apply to all users whether they are created now or later. Migration will start after user accounts are created.": [ - "전환할 항목을 선택하세요. 지금 생성되거나 나중에 생성되는 모든 사용자에게 일괄 적용됩니다. 사용자 계정이 생성된 뒤에 작업이 시작됩니다." - ], "Set up": [ "설정" ], @@ -2843,9 +2810,6 @@ "To migrate your organization’s data, you need to install the ${ BRAND_NAME } Migration Assistant app from the Google Workspace Marketplace. This will grant permission to ${ BRAND_NAME } to copy your data. After installing it, come back here to continue.": [ "조직의 데이터를 이전하려면 Google Workspace Marketplace에서 ${ BRAND_NAME } 이전 도우미 앱을 설치해야 합니다. 이 앱을 통해 ${ BRAND_NAME }에서 데이터를 복사할 수 있는 권한이 부여됩니다. 설치 후 계속 진행하려면 이곳으로 돌아오세요." ], - "Transfer errors": [ - "전송 오류" - ], "User": [ "사용자" ], @@ -2858,9 +2822,6 @@ "Verify your domain": [ "내 도메인 인증" ], - "Verify your domain ownership": [ - "도메인 소유권을 확인하세요" - ], "Verify your domain to start a migration": [ "마이그레이션을 시작하려면 도메인을 확인하세요" ], @@ -2982,6 +2943,9 @@ "Close": [ "닫기" ], + "Configure your network": [ + "네트워크 구성" + ], "Continue using ${ MAIL_APP_NAME }.": [ "${ MAIL_APP_NAME }을 계속 사용하세요." ], @@ -3003,6 +2967,12 @@ "Got it": [ "확인했습니다" ], + "Invite your team": [ + "팀 초대" + ], + "Manage global VPN permissions": [ + "전역 VPN 권한 관리" + ], "Maybe later": [ "나중에" ], @@ -3018,6 +2988,9 @@ "Set up other features": [ "다른 기능 설정하기" ], + "Set up SSO": [ + "SSO 설정" + ], "Take a tour": [ "둘러보기" ] @@ -4766,12 +4739,6 @@ "${ DOCS_SHORT_APP_NAME } in ${ DRIVE_APP_NAME } allows you to work together with others in a secure, encrypted environment.": [ "${ DRIVE_APP_NAME }의 ${ DOCS_SHORT_APP_NAME }를 사용하면 안전하고 암호화된 환경에서 다른 사람들과 함께 작업할 수 있습니다." ], - "${ MAIL_APP_NAME } is not your default mail application.": [ - "${ MAIL_APP_NAME }이 기본 메일 애플리케이션으로 설정되어 있지 않습니다." - ], - "${ MAIL_APP_NAME } is your default mail application.": [ - "${ MAIL_APP_NAME }이 기본 메일 애플리케이션으로 설정되어 있습니다." - ], "A checked box means the feature is disabled.": [ "해당 체크박스가 이 기능이 비활성화 상태임을 의미합니다." ], @@ -4796,9 +4763,6 @@ "Block Google's ability to profile you. Gmail can't see what you do in ${ MAIL_APP_NAME }": [ "Google의 염탐 가능성을 차단하세요. Gmail 은 사용자가 ${ MAIL_APP_NAME }에서 무엇을 하는지 볼 수 없습니다." ], - "Bring over email, calendar events, and contacts from another provider.": [ - "이메일, 캘린더 이벤트 및 연락처를 다른 제공자로부터 가져오세요." - ], "Configure this first to activate your organization and customize your email address.": [ "먼저 구성하여 조직을 활성화한 뒤 이메일 주소를 사용자화하세요." ], @@ -4865,6 +4829,9 @@ "Help your team securely store passwords to sensitive business and client information.": [ "팀이 민감한 비즈니스 및 고객 정보에 대한 암호를 안전하게 저장할 수 있도록 지원하세요" ], + "If you haven’t already, enable some recovery methods to make sure you never lose access to ${ VPN_APP_NAME }.": [ + "아직까지 조치하지 않으셨다면, ${ VPN_APP_NAME }에 대한 접근을 영구적으로 상실하지 않기 위해 일부 복구 방법을 활성화하시기 바랍니다." + ], "It looks like the contact list you are importing contains some groups. Please review how these groups should be imported.": [ "불러올 연락처가 그룹을 포함하는 것 같습니다. 이 그룹들을 어떻게 불러올지 확인해 주세요." ], @@ -4889,9 +4856,6 @@ "Read, reply, and stay on top of Gmail from within ${ MAIL_APP_NAME }": [ "${ MAIL_APP_NAME } 안에서 Gmail을 읽고, 답장하고 관리하세요." ], - "Send a code to your recovery email or phone": [ - "복구 이메일 또는 전화로 코드 전송" - ], "Set up accounts for all users and invite them to join ${ BRAND_NAME }.": [ "모든 사용자의 계정을 설정하며 ${ BRAND_NAME }에 가입하도록 초대합니다." ], @@ -4937,9 +4901,6 @@ "We'll bring in your old emails and connect your Gmail to ${ MAIL_APP_NAME } so new messages appear automatically": [ "지난 이메일을 불러오고 Gmail을 ${ MAIL_APP_NAME }에 연결하여 새 메세지가 자동으로 표시되도록 합니다." ], - "We've started importing your email from Gmail. We'll let you know when it's done.": [ - "Gmail에서 이메일을 불러오기 시작했습니다. 완료되면 알려드리겠습니다." - ], "We’re sorry to see you go. If you have a moment, we’d really appreciate hearing why you’d like to cancel. Your feedback helps us make ${ BRAND_NAME } better for everyone.": [ "떠나시는 모습을 보니 아쉽네요. 잠시 시간을 내어주셔서 취소하시려는 이유에 대해 알려주시면 정말 감사하겠습니다. 회원님의 소중한 의견은 ${ BRAND_NAME }을 모든 사용자에게 더 나은 서비스로 만드는 데 있어서 큰 도움이 됩니다." ], @@ -6011,9 +5972,6 @@ "${ user } will not be able to access your account until the next emergency access.": [ "${ user }님이 다음 비상 접근시까지 사용자의 계정에 접근할 수 없게 됩니다." ], - "**${ contact }** is now your recovery contact. They can help you recover your data after a password reset.": [ - "**${ contact }**님이 복구 연락처로 지정되었습니다. 비밀번호 재설정을 진행하는 경우 해당 연락처를 통해 데이터 복구가 가능합니다." - ], "**If they confirm**, click **Approve recovery**. This will unlock their encrypted data.": [ "**확인하면** **복구 승인**을 클릭하세요. 암호화된 데이터의 잠금이 해제됩니다." ], @@ -6164,12 +6122,6 @@ "Less than a minute left": [ "1분 미만 남음" ], - "Let ${ user } know it’s really you trying to regain access.": [ - "${ user }님에게 복구 시도를 하는 사람이 본인임을 알려주세요." - ], - "None": [ - "없음" - ], "Only ": [ "단 " ], @@ -6260,15 +6212,9 @@ "Select recovery contact ${ name }": [ "복구 연락처 ${ name } 선택" ], - "Send email request": [ - "이메일 요청 전송" - ], "Send recovery request": [ "복구 요청 전송" ], - "Set account recovery": [ - "계정 복구 설정" - ], "Stop being recovery contact": [ "복구 연락처 그만두기" ], @@ -6831,9 +6777,6 @@ "Please try again in a few moments.": [ "잠시 후 다시 시도하십시오." ], - "Please upgrade to a business plan with more than 1 user to get multi-user support": [ - "다중 사용자 지원을 이용하시려면 2명 이상의 사용자를 지원하는 비즈니스 플랜으로 업그레이드하세요" - ], "Please upgrade to a business plan with more than 1 user to manage multiple users.": [ "1명 보다 더 많은 다중 사용자를 관리하려면 비즈니스 플랜으로 업그레이드 하세요." ], @@ -8142,11 +8085,6 @@ "${ BRAND_NAME }. Privacy by default." ] }, - "Force upgrade safety review": { - "I understand that I will no longer be able to sign in to older versions of ${ BRAND_NAME } mobile apps.": [ - "${ BRAND_NAME } 모바일 앱의 구식 버전에서는 더 이상 로그인할 수 없음을 확인했습니다." - ] - }, "Form heading": { "Enter your email address": [ "부모의 이매일 주소를 입력하세요" @@ -8486,9 +8424,6 @@ "Contact us": [ "문의" ], - "Downloads": [ - "다운로드" - ], "Enjoying ${ planName }?": [ "${ planName }을(를) 잘 사용하고 계신가요?" ], @@ -9278,9 +9213,6 @@ "Add your name and logo to create a more personalized experience for your organization.": [ "더 개인화된 경험을 위해 사용자의 조직에 맞는 이름 및 로고를 추가하세요." ], - "Adding ${ addedServerCount } gateway server": [ - "${ addedServerCount }개 게이트웨이 서버 생성 중" - ], "Adding an external email address will disable end-to-end encryption for all email communication within that group. Do you want to proceed?": [ "외부 이메일 주소를 추가하면 저 그룹에서 모든 이메일 통신의 종단간 암호화가 비활성화 됩니다. 정말로 진행하시겠습니까?" ], @@ -9578,9 +9510,6 @@ "Change your password": [ "비밀번호를 변경하십시오" ], - "Check the status of imports and forwarding.": [ - "불러오기 및 포워딩 상태를 확인하세요." - ], "Choose a plan that works best for you.": [ "당신에게 가장 적합한 플랜을 선택하세요." ], @@ -9674,9 +9603,6 @@ "Create a new code on your TV and try again.": [ "TV에서 새로운 코드를 생성한 뒤 다시 시도하세요." ], - "Create a secure cloud for ${ value } member": [ - "${ value }명의 구성원을 위한 보안 클라우드 만들기" - ], "Create an account": [ "계정 생성" ], @@ -10097,9 +10023,6 @@ "For users who are switching to ${ MAIL_APP_NAME } from another email service, select the ${ boldAddresses } tab and add all active email addresses before changing the MX record to ensure a smooth transition.": [ "${ MAIL_APP_NAME }에서 타 이메일 서비스로 전환하는 사용자라면, 매끄러운 전환을 위해 ${ boldAddresses } 탭을 선택한 뒤 활성화된 모든 이메일 주소를 추가하세요." ], - "Forwarding automatically sends new incoming emails to your Inbox.": [ - "자동 전달이 새로 들어오는 이메일을 받은 편지함으로 보내줍니다." - ], "Free forever": [ "영구적으로 무료" ], @@ -11903,9 +11826,6 @@ "When disabled, this prevents remote images from loading without your knowledge.": [ "비활성화시, 사용자 동의 없이 원격 이미지가 로드되는 것을 방지해 줍니다." ], - "When enabled, we will check if ${ MAIL_APP_NAME } is your default mail application and notify you if it is not.": [ - "활성화시 ${ MAIL_APP_NAME }이 회원님의 기본 메일 애플리케이션인지 확인 및 설정이 되어 있지 않다면 알려드려요." - ], "When enabling SAML for ${ appName } in your identity provider, you might be prompted to use the callback (ACS) URL and issuer ID. Just copy-paste the data below into your identity provider fields.": [ "사용자의 제공자로 부터 ${ appName }을 위한 SAML 활성화 시, 콜백 URL (callback, ACS라고 함) 및 issuer ID를 사용하라는 안내창이 표시될 수 있습니다. 아래의 데이터를 제공자 입력란에 복사 후 붙여넣기를 하면 됩니다." ], @@ -12035,9 +11955,6 @@ "You can edit this once to ensure the correct email address for verification.": [ "인증을 위해 올바른 이메일 주소를 사용할 수 있도록 한 번 편집할 수 있습니다." ], - "You can enable the Photos section from the interface using the toggle below.": [ - "아래 토글을 통해 인터페이스상의 사진 섹션을 활성화할 수 있습니다." - ], "You can enforce the password rules members of your organization will use when they create or reset the password to their ${ BRAND_NAME } Account.": [ "조직의 구성원이 ${ BRAND_NAME } 계정에 대한 암호를 생성하거나 재설정할 때 사용할 암호 규칙을 적용할 수 있습니다." ], @@ -16569,9 +16486,6 @@ "${ app } product updates": [ "${ app } 제품 업데이트" ], - "${ BRAND_NAME } for Business newsletter": [ - "${ BRAND_NAME } for Business 뉴스레터" - ], "${ BRAND_NAME } important announcements": [ "${ BRAND_NAME } 중요 발표" ], @@ -16623,9 +16537,6 @@ "During your first month of using a ${ BRAND_NAME } product": [ "${ BRAND_NAME } 제품의 첫 달 사용 중" ], - "Email subscriptions": [ - "이메일 구독" - ], "In-app notifications": [ "앱 내 알림" ], @@ -17697,15 +17608,9 @@ "per month, billed every two years": [ "월 기준, 2년마다 납부됨" ], - "Preparing your Recovery Kit": [ - "복구 키트를 준비하는 중" - ], "Protected by Swiss privacy laws": [ "스위스 개인정보법에 의해 보호됨" ], - "Save your recovery kit to continue": [ - "계속하려면 복구 키트를 저장해주세요" - ], "Secure vault sharing": [ "안전한 금고 공유" ], @@ -18560,21 +18465,6 @@ "${ upsellPlanTitle }(으)로 업그레이드" ] }, - "PQC account key generation": { - "Couldn’t generate keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\n${ settingsLink } and select 'Generate key' for your account and for each address.": [ - "키 생성 실패. 양자 내성 보호를 활성화하기 위해, 새 암호화 키의 수동 생성이 필요합니다.\n\n${ settingsLink }한 뒤 사용자의 계정 및 각 주소에 대한 '키 생성'을 선택하십시오." - ] - }, - "PQC adress key generation": { - "Couldn’t generate address keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\nGo to ${ settingsLink } and select 'Generate key' for each address.": [ - "주소 키를 생성할 수 없습니다. 양자 내성 암호화를 활성화하려면, 신규 암호화 키를 수동으로 생성해야 합니다.\n\n${ settingsLink }(으)로 이동한 뒤 각 주소에 대한 '키 생성'을 선택하십시오." - ] - }, - "PQC compatibility warning": { - "**You must update all ${ BRAND_NAME } mobile apps**: your new keys won't work on older app versions.": [ - "**반드시 설치된 모든 ${ BRAND_NAME } 모바일 앱의 업데이트가 필요**: 신규 키는 이전 앱 버전에서 제대로 작동되지 않습니다." - ] - }, "PQC key generation": { "This will generate new quantum-resistant encryption keys for your account.": [ "이 작업은 사용자의 계정에 새로운 양자 내성 암호화 키를 생성합니다." @@ -18910,15 +18800,9 @@ ], "Or ${ downloadRecoveryKitSwitchButton } instead.": [ "또는 대신 ${ downloadRecoveryKitSwitchButton }." - ], - "Your **Recovery Kit** lets you restore your ${ BRAND_NAME } Account if you’re locked out.": [ - "**복구 키**를 통해 잠겼을 경우 사용자의 ${ BRAND_NAME } 계정을 복원할 수 있습니다." ] }, "RecoveryPhrase: Title": { - "Save your Recovery Kit": [ - "복구 키트 저장" - ], "Save your recovery phrase": [ "복구 구문 저장" ] @@ -19305,9 +19189,6 @@ "Back to Safety Review": [ "안전 검토로 돌아가기" ], - "Because you reset your password, your current Recovery Kit can only be used to recover the data created before your password reset.": [ - "비밀번호를 재설정했기 때문에 현재 복구 키트는 비밀번호 재설정 전에 생성된 데이터만 복구하는 데 사용할 수 있습니다." - ], "Can be used to regain access to your account and data": [ "계정 및 데이터에 다시 접근하는 데 사용할 수 있습니다." ], @@ -19335,9 +19216,6 @@ "Download ${ size }": [ "${ size } 다운로드" ], - "Download your Recovery Kit": [ - "복구 키트 다운로드" - ], "Email address": [ "이메일 주소" ], @@ -19350,18 +19228,12 @@ "Enable recovery by phone": [ "스마트폰을 통한 복구 활성화" ], - "I understand that I will not be able to recover currently locked data with this Recovery Kit": [ - "이 복구 키트로 현재 잠긴 데이터를 복구할 수 없다는 것을 이해합니다" - ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in on this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "${ BRAND_NAME } 비밀번호를 잊어버려서 재설정해야 하는 경우 다음에 이 디바이스에서 새 비밀번호를 사용하여 로그인하면 ${ BRAND_NAME } 에 대한 전체 액세스 권한이 복원됩니다. 계정에 대한 전체 액세스 권한이 복원됩니다." ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "${ BRAND_NAME } 비밀번호를 잊어버려서 재설정해야 하는 경우 다음에 새 비밀번호를 사용하여 이 디바이스에 로그인하면 ${ BRAND_NAME }에 대한 전체 액세스 권한이 복원됩니다. 계정에 대한 전체 액세스 권한이 복원됩니다." ], - "If you get locked out of your ${ BRAND_NAME } Account, your Recovery Kit will allow you to sign in and recover your data.": [ - "${ BRAND_NAME } 계정이 잠긴 경우 계정이 잠긴 경우 복구 키트를 사용하면 로그인하여 데이터를 복구할 수 있습니다." - ], "If you lose your login details and need to reset your account, **it’s imperative** that you have both an **account recovery and data recovery method** in place, otherwise you might not be able to access any of your emails, contacts, files or passwords.": [ "로그인 정보를 분실하여 계정을 초기화해야 하는 경우, 이메일, 연락처, 파일 또는 비밀번호에 액세스하지 못할 수 있으므로 **계정 복구 및 데이터 복구 방법**을 모두 마련하는 것이 **필수**입니다." ], @@ -19404,9 +19276,6 @@ "Take action to secure your account": [ "계정 보안을 위한 조치 취하기" ], - "There was an error generating your Recovery Kit": [ - "복구 키트를 생성하는 동안 오류가 발생했습니다." - ], "There was an error verifying your email": [ "복구 이메일 확인 중 오류가 발생했습니다." ], @@ -19434,12 +19303,6 @@ "to recover your account if you're ever locked out": [ "짐금 상태에서도 계정을 복구할 수 있습니다." ], - "Update your Recovery Kit": [ - "복구 키트 업데이트" - ], - "Update your Recovery Kit?": [ - "복구 키트를 업데이트합니까?" - ], "Verify": [ "인증" ], @@ -19455,9 +19318,6 @@ "Verify your recovery phone number": [ "복구 전화번호로 인증하세요" ], - "We encountered an error while generating your Recovery Kit. Please try again later, or contact support if the issue continues.": [ - "복구 키트를 생성하는 동안 오류가 발생했습니다. 나중에 다시 시도하거나 문제가 계속되면 지원팀에 문의하세요." - ], "We encountered an error while verifying your email. Please try again later, or contact support if the issue continues.": [ "이메일 주소를 확인하는 동안 오류가 발생했습니다. 나중에 다시 시도하거나 문제가 계속되면 지원팀에 문의하시기 바랍니다." ], @@ -19479,9 +19339,6 @@ "You can disable this at any time.": [ "언제든지 비활성화할 수 있습니다." ], - "You can use the recovery phrase in this Recovery Kit to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ - "이 복구 키트의 복구 문구를 사용하면 비밀번호를 재설정할 때 계정을 완전히 복원할 수 있으므로 안전한 곳에 보관하세요." - ], "You can use your email to regain access to your account if you forget your password.": [ "비밀번호를 잊어버린 경우 이메일을 사용하여 계정에 다시 접근할 수 있습니다." ], @@ -19491,9 +19348,6 @@ "You can use your recovery phone to regain access to your account if you forget your password.": [ "비밀번호를 잊어버린 경우 복구 휴대폰을 사용하여 계정에 다시 액세스할 수 있습니다." ], - "You have previously downloaded a Recovery Kit. Downloading a new one will **deactivate the old one**.": [ - "이전에 복구 키트를 다운로드한 적이 있습니다. 새 키트를 다운로드하면 이전 키트가 **비활성화**됩니다." - ], "You have recommended actions to safeguard your account further.": [ "계정을 더욱 안전하게 보호하기 위한 권장 조치가 있습니다." ], @@ -19557,12 +19411,6 @@ "Your recovery email is set": [ "복구 이메일이 설정되었습니다." ], - "Your Recovery Kit": [ - "내 복구 키트" - ], - "Your Recovery Kit is set": [ - "복구 키트가 설정되었습니다" - ], "Your recovery methods": [ "내 복구 방법" ], @@ -20102,14 +19950,6 @@ "비밀번호 재설정 요청" ] }, - "Setting": { - "Get updates about comments via email": [ - "이메일로 댓글에 대한 업데이트를 받아보세요" - ], - "Include document name in email notifications": [ - "이메일 알림 내에서 문서 이름 포함" - ] - }, "Settings description": { "Keep your inbox organized with folders and labels. ${ learnMoreLink }": [ "폴더와 라벨로 편지함을 정리하세요. ${ learnMoreLink }" @@ -22017,9 +21857,6 @@ "Organization logo updated": [ "조직 로고가 업데이트 됨" ], - "Organization name set": [ - "조직 이름이 설정되었습니다." - ], "Organization name updated": [ "조직 이름이 업데이트 됨" ], @@ -22691,9 +22528,6 @@ "Change second password": [ "2차 비밀번호 변경" ], - "Check your default mail application": [ - "기본 메일 애플리케이션을 확인해 주세요" - ], "Choose a provider": [ "제공업체 선택" ], @@ -22721,18 +22555,12 @@ "Confirm": [ "확인" ], - "Confirm address": [ - "이메일 주소 확인" - ], "Confirm downgrade": [ "다운그레이드 확인" ], "Confirm loss of ${ BRAND_NAME } bonuses": [ "${ BRAND_NAME } 의 보너스를 잃는 것을 확인합니다" ], - "Confirm phone number": [ - "전화번호 확인" - ], "Connect ${ name }": [ "${ name } 연락" ], @@ -23123,6 +22951,9 @@ "Feature access": [ "기능 접근" ], + "Fewer distractions, more focus": [ + "방해 요소는 줄이고, 집중력은 높이고." + ], "Filter for more focus": [ "더 집중하기 위한 필터" ], @@ -23153,9 +22984,6 @@ "Forward emails": [ "이메일 전달" ], - "Forwardings": [ - "전달" - ], "Free": [ "무료" ], @@ -23507,9 +23335,6 @@ "Phone": [ "전화" ], - "Photos": [ - "사진" - ], "Pin the extension": [ "확장 프로그램 고정" ], @@ -23783,6 +23608,9 @@ "Snooze:": [ "방해금지:" ], + "Something went wrong": [ + "문제가 발생했습니다" + ], "Sort folders alphabetically": [ "폴더를 알파벳 순으로 정렬합니다." ], @@ -24344,9 +24172,6 @@ "This feature is only available on Beta": [ "이 기능은 베타에서만 사용할 수 있습니다." ], - "This is the default key used by other ${ MAIL_APP_NAME } users on older mobile apps to encrypt data they send to you": [ - "이전 버전의 모바일 앱에서 다른 ${ MAIL_APP_NAME } 사용자가 보낸 데이터를 암호화하기 위해 사용하는 기본 키입니다." - ], "This is the default key used by other ${ MAIL_APP_NAME } users to encrypt data they send to you": [ "다른 ${ MAIL_APP_NAME } 사용자가 보낸 데이터를 암호화하기 위해 사용하는 기본 키입니다." ], @@ -25116,12 +24941,6 @@ "${ BRAND_NAME } will transfer as much data as possible, starting with your most recent messages.": [ "${ BRAND_NAME } 이 가장 최근의 메시지를 시작하여 가능한 많은 데이터를 전송할 것입니다." ], - "Are you sure you want to delete the phone number?": [ - "정말로 전화번호를 삭제하시겠습니까?" - ], - "Are you sure you want to delete this address?": [ - "정말 이 주소를 삭제하시겠습니까?" - ], "By deleting this address, you will no longer be able to receive daily email notifications.": [ "이 주소를 삭제하면 더 이상 일일 이메일 알림을 받을 수 없습니다." ], @@ -25131,9 +24950,6 @@ "By deleting this address, you will no longer be able to recover your account.": [ "이 주소를 삭제하면 더 이상 계정을 복구할 수 없습니다." ], - "By deleting this phone number, you will no longer be able to recover your account.": [ - "이 전화번호를 삭제하면 더 이상 계정을 복구할 수 없습니다." - ], "Could not login. Please open ${ PASS_APP_NAME } browser extension and login from there.": [ "로그인할 수 없습니다. ${ PASS_APP_NAME } 브라우저 확장 프로그램을 열고 거기서 로그인해 주세요." ], diff --git a/applications/account/locales/nb_NO.json b/applications/account/locales/nb_NO.json index 28bf3021ad7..70c87baad6f 100644 --- a/applications/account/locales/nb_NO.json +++ b/applications/account/locales/nb_NO.json @@ -90,6 +90,9 @@ "Add": [ "Legg til" ], + "Add ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }": [ + "Legg til ${ BRAND_NAME }${ PASS_SHORT_APP_NAME }" + ], "Add ${ BRAND_NAME } Account": [ "Legg til ${ BRAND_NAME }-konto" ], @@ -105,6 +108,9 @@ "Add address or domain": [ "Legg til adresse eller domene" ], + "Add and verify": [ + "Legg til og verifiser" + ], "Add another account": [ "Legg til en annen konto" ], @@ -159,6 +165,9 @@ "Add user": [ "Legg til bruker" ], + "Added ${ memberName } as group owner": [ + "La til ${ memberName } som gruppeeier" + ], "Align center": [ "Midtstill" ], @@ -210,6 +219,9 @@ "Back to sign in": [ "Tilbake til pålogging" ], + "Back to sign-in": [ + "Tilbake til pålogging" + ], "Block": [ "Blokkér" ], @@ -261,6 +273,9 @@ "Claim it": [ "Gjør krav på det" ], + "Claim offer": [ + "Gjør krav på tilbudet" + ], "Claim this address": [ "Gjør krav på denne adressen" ], @@ -303,6 +318,9 @@ "Confirm": [ "Bekreft" ], + "Confirm email": [ + "Bekreft e-post" + ], "Confirm opening of link ${ linkToShow }": [ "Bekreft åpning av kobling ${ linkToShow }" ], @@ -318,18 +336,21 @@ "Connect Gmail address": [ "Koble til Gmail-adresse" ], - "Connect to Gmail": [ - "Koble til Gmail" - ], "Connect to video conferencing": [ "Koble til videokonferanser" ], "Connect your ${ BRAND_NAME } Account": [ "Koble til ${ BRAND_NAME }-kontoen din" ], + "Connect your email": [ + "Koble til e-posten din" + ], "Connected": [ "Tilkoblet" ], + "Contact sales": [ + "Ta kontakt med salg" + ], "Contact support": [ "Kontakt brukerstøtte" ], @@ -360,6 +381,9 @@ "Continue with ${ nameToDisplay } ${ maybeEmailInBrackets }": [ "Fortsett med ${ nameToDisplay } ${ maybeEmailInBrackets }" ], + "Continue with Free": [ + "Fortsett med gratis" + ], "Continue with Google": [ "Fortsett med Google" ], @@ -435,6 +459,9 @@ "Create organization": [ "Opprett organisasjon" ], + "Create recovery phrase": [ + "Opprett gjenopprettingsfrase" + ], "Create users": [ "Opprett brukere" ], @@ -468,6 +495,9 @@ "Delete account": [ "Slett konto" ], + "Delete and confirm": [ + "Slett og bekreft" + ], "Delete filter “${ Name }”": [ "Slett filter “${ Name }”" ], @@ -504,8 +534,8 @@ "Delete record": [ "Slett post" ], - "Delete token ${ token.Account }": [ - "Slett token ${ token.Account }" + "Delete token ${ tokens[0].Account }": [ + "Slett token ${ tokens[0].Account }" ], "Delete token “${ token.Name }”": [ "Slett token “${ token.Name }”" @@ -546,6 +576,9 @@ "Disable categories": [ "Deaktiver kategorier" ], + "Disable category": [ + "Deaktiver kategori" + ], "Disable recovery phrase": [ "Deaktiver gjenopprettingsfrase" ], @@ -621,6 +654,9 @@ "Download the desktop app": [ "Last ned skrivebordsappen" ], + "Download updated file": [ + "Last ned oppdatert fil" + ], "Edit": [ "Rediger" ], @@ -693,6 +729,9 @@ "Enable ${ darkWebMonitoring }": [ "Aktiver ${ darkWebMonitoring }" ], + "Enable category": [ + "Aktiver kategori" + ], "enable desktop notifications": [ "aktivere skrivebordsvarsler" ], @@ -744,6 +783,9 @@ "Filters are being applied. This might take a few minutes.": [ "Filtre anvendes. Dette kan ta noen minutter." ], + "Finish": [ + "Fullfør" + ], "Fit to window": [ "Tilpass til vindu" ], @@ -762,6 +804,12 @@ "Generate key": [ "Generer nøkkel" ], + "Generate missing keys": [ + "Generer manglende nøkler" + ], + "Generate new phrase": [ + "Generer ny frase" + ], "Generate new recovery phrase": [ "Generer ny gjenopprettingsfrase" ], @@ -861,6 +909,9 @@ "Go to ${ planOrAppName }": [ "Gå til ${ planOrAppName }" ], + "Go to domain provider": [ + "Gå til domeneleverandøren" + ], "Go to label": [ "Gå til etikett" ], @@ -1179,6 +1230,9 @@ "Reactivate keys": [ "Aktiver nøkler på nytt" ], + "Read the story": [ + "Les historien" + ], "Reconnect": [ "Koble til på nytt" ], @@ -1254,6 +1308,9 @@ "Remove this notification": [ "Slett dette varslet" ], + "Removed ${ memberName } as group owner": [ + "Fjernet ${ memberName } som gruppeeier" + ], "Rename": [ "Gi nytt navn" ], @@ -1335,12 +1392,18 @@ "Save": [ "Lagre" ], + "Save & exit": [ + "Lagre og avslutt" + ], "Save address": [ "Lagre adresse" ], "Save and continue": [ "Lagre og fortsett" ], + "Save and verify": [ + "Lagre og verifiser" + ], "Save changes": [ "Lagre endringer" ], @@ -1362,6 +1425,9 @@ "Search settings": [ "Innstillinger for søk" ], + "Secure account": [ + "Sikre konto" + ], "See DNS TXT record": [ "Se DNS TXT-post" ], @@ -1584,6 +1650,9 @@ "Switch or add account": [ "Bytt eller legg til konto" ], + "Switch to free plan": [ + "Bytt til gratis planen" + ], "Take a tour": [ "Få en omvisning" ], @@ -1749,6 +1818,9 @@ "View recovery settings": [ "Vis innstillinger for gjenoppretting" ], + "View recovery setup details": [ + "Se detaljer om gjenopprettingsoppsettet" + ], "Void": [ "Ugyldig" ], @@ -1758,6 +1830,9 @@ "Void all recovery files?": [ "Ugyldiggjøre alle gjenopprettingsfiler?" ], + "Watch the interview": [ + "Se intervjuet" + ], "Welcome": [ "Velkommen" ], @@ -2018,6 +2093,47 @@ "administrator" ] }, + "Admin roles onboarding": { + "2 new admin roles": [ + "2 nye administratorroller" + ], + "3 new admin roles": [ + "3 nye administratorroller" + ], + "Configure security policies, data retention, and VPN infrastructure, and manage audit logs.": [ + "Konfigurer sikkerhetsretningslinjer, dataoppbevaring, VPN-infrastruktur og administrer revisjonslogger." + ], + "Delegate management by assigning specific admin roles. Give each admin only the access they need. This follows the principle of least privilege, protecting your organization from compromised accounts and accidental errors.": [ + "Deleger administrasjon ved å tildele spesifikke administratorroller. Gi hver administrator bare den tilgangen de trenger. Dette følger prinsippet om færrest rettigheter, og beskytter organisasjonen din mot kompromitterte kontoer og utilsiktede feil." + ], + "Delegate management for many users at once. Assign specific admin roles to groups for automatic permissions. This follows the principle of least privilege to save time on onboarding and offboarding while reducing errors.": [ + "Deleger administrasjon for mange brukere samtidig. Tildel spesifikke administratorroller til grupper for automatiske tillatelser. Dette følger prinsippet om færrest rettigheter for å spare tid på onboarding og offboarding, samtidig som det reduserer feil." + ], + "Delegate management with the appropriate admin role.": [ + "Deleger administrasjonen med riktig administratorrolle." + ], + "Manage all users, groups, storage, security, billing, audit logs, and system configurations.": [ + "Administrer alle brukere, grupper, lagring, sikkerhet, fakturering, revisjonslogger og systemkonfigurasjoner." + ], + "Manage users, groups, and storage for all members, assign roles, and allocate licenses.": [ + "Administrer brukere, grupper og lagring for alle medlemmer, tildel roller og alloker lisenser." + ], + "New: Control admin access for individual users": [ + "Nytt: kontroller administratortilgang for individuelle brukere" + ], + "New: Control admin access for many users at once": [ + "Nytt: kontroller administratortilgang for mange brukere samtidig" + ], + "Organization admin:": [ + "Organisasjonsadministrator:" + ], + "Security admin:": [ + "Sikkerhetsadministrator:" + ], + "User admin:": [ + "Brukeradministrator:" + ] + }, "AdminRole_Info": { "A role is a group of permissions that you can assign to the members of your organization.": [ "En rolle er en gruppe med tillatelser som du kan tildele medlemmene i organisasjonen din." @@ -2244,6 +2360,11 @@ "Prøveperioden avsluttes om ${ timeRemaining }" ] }, + "Badge": { + "Save ${ discountRate }%": [ + "Spar ${ discountRate }%" + ] + }, "Badge for domain": { "Disabled": [ "Deaktivert" @@ -2776,15 +2897,66 @@ "${ BRAND_NAME } Migration Assistant": [ "${ BRAND_NAME } Migration Assistant" ], - "Add a custom domain": [ - "Legg til et egendefinert domene" + "${ migratedCount } of ${ providerUsers.length }": [ + "${ migratedCount } av ${ providerUsers.length }" + ], + "**p=none**: do not quarantine or reject unauthorized emails. Usually, people only use this policy to troubleshoot or test.": [ + "**p=none**: ikke sett uautoriserte e-poster i karantene eller avvis e-poster. Vanligvis bruker folk bare denne retningslinjen til å feilsøke eller teste." + ], + "**p=quarantine**: asking the recipient platforms to mark the unauthorized emails as spam or quarantine them.": [ + "**p=quarantine**: ber mottakerplattformene om å merke de uautoriserte e-postene som søppelpost eller sette dem i karantene." + ], + "**p=reject**: asking the recipient platforms to reject the unauthorized emails.": [ + "**p=reject**: ber mottakerplattformene om å avvise de uautoriserte e-postene." + ], + "Account connected": [ + "Konto tilkoblet" + ], + "Account disconnected": [ + "Konto frakoblet" + ], + "Activated": [ + "Aktivert" + ], + "Activation link": [ + "Aktiveringskobling" + ], + "Activation link copied to clipboard": [ + "Aktiveringskobling kopiert til utklippstavlen" + ], + "Add a domain": [ + "Legg til et domene" + ], + "Add domain": [ + "Legg til domene" + ], + "Add users": [ + "Legg til brukere" + ], + "Add users and configure your domain manually for sending and receiving mail. Ideal for small teams starting from a clean slate.": [ + "Legg til brukere og konfigurer domenet ditt manuelt for sending og mottak av e-post. Ideelt for små team som starter helt på nytt." + ], + "Address is already used by a user outside of your organization. Please contact customer support to resolve this": [ + "Adresse er allerede i bruk av en bruker på utsiden av din organisasjon. Kontakt kundestøtte for å løse dette." + ], + "All": [ + "Alle" + ], + "An unknown error occurred": [ + "En ukjent feil har oppstått" + ], + "Are you sure you want to proceed? Users who haven't claimed their account before the migration is finalized will need to request a password reset from their ${ BRAND_NAME } organization administrator.": [ + "Er du sikker på at du vil fortsette? Brukere som ikke har gjort krav på kontoen sin før overføringen er fullført, må be om en tilbakestilling av passordet fra administratoren for ${ BRAND_NAME }-organisasjonen." ], - "App installed": [ - "App installert" + "As soon as the accounts are created, you can share the activation link so users can claim their ${ BRAND_NAME } account.": [ + "Så snart kontoene er opprettet, kan du dele aktiveringskoblingen slik at brukerne kan gjøre krav på ${ BRAND_NAME }-kontoen sin." ], "Authenticate": [ "Autentiser" ], + "Authenticate to Google Workspace": [ + "Autentiser til Google Workspace" + ], "Authenticate your Google Workspace account": [ "Autentiser Google Workspace-kontoen din" ], @@ -2794,23 +2966,68 @@ "Change": [ "Endre" ], + "Choose how you want to bring your team and email setup to ${ BRAND_NAME }.": [ + "Velg hvordan du vil sette opp teamet og e-posten din i ${ BRAND_NAME }." + ], + "Choose what to migrate. Your choice will apply to all users. The migration will start after you decide which users to copy.": [ + "Velg hva du vil migrere. Valget ditt gjelder for alle brukere. Migreringen starter etter at du har bestemt deg for hvilke brukere du vil kopiere." + ], "Completed": [ "Fullført" ], "Configure": [ "Konfigurer" ], + "Configure domain": [ + "Konfigurer domene" + ], "Configure migration": [ "Konfigurer migrering" ], + "Configure your domain": [ + "Konfigurer domenet ditt" + ], "Contacts": [ "Kontakter" ], + "Continue migration": [ + "Fortsett migrering" + ], + "Copy activation link": [ + "Kopier aktiveringskoblingen" + ], + "Copy activation link to clipboard": [ + "Kopier aktiveringskoblingen til utklippstavlen" + ], + "Copy the below code and paste it in the DNS section of your domain host. You can find an example and some helpful tips ${ hereHref }.": [ + "Kopier koden nedenfor og lim den inn i DNS-delen av domeneverten din. Du finner et eksempel og noen nyttige tips ${ hereHref }." + ], + "Creating accounts": [ + "Oppretter kontoer" + ], + "DKIM adds a digital signature to each email so recipients can verify that the message really came from your domain and was not altered in transit. Without it, messages may be treated as less trustworthy.": [ + "DKIM legger til en digital signatur i hver e-post, slik at mottakerne kan bekrefte at meldingen faktisk kom fra domenet ditt og ikke ble endret underveis. Uten den kan meldinger bli behandlet som mindre pålitelige." + ], + "DKIM records": [ + "DKIM-poster" + ], + "DMARC builds on SPF and DKIM by telling receiving servers how to handle messages that fail these checks. It helps protect your domain from impersonation and improves overall delivery reliability.": [ + "DMARC bygger på SPF og DKIM ved å fortelle mottakerserverne hvordan de skal håndtere meldinger som ikke består disse kontrollene. Det bidrar til å beskytte domenet ditt mot etterligning og forbedrer den generelle leveringspåliteligheten." + ], + "DMARC records": [ + "DMARC-poster" + ], + "Domain added": [ + "Domene lagt til" + ], "Domain connected": [ "Domene tilkoblet" ], - "Domain ownership verified": [ - "Domeneeierskap er verifisert" + "Ensure that your emails reach the inbox, not the spam folder. Updating SPF will allow users to send from ${ BRAND_NAME } and Google simultaneously for the duration of the migration.": [ + "Sørg for at e-postene dine havner i innboksen, ikke i søppelpostmappen. Hvis du oppdaterer SPF, kan brukere sende fra ${ BRAND_NAME } og Google samtidig under migreringen." + ], + "Errors": [ + "Feil" ], "Estimated size": [ "Estimert størrelse" @@ -2818,15 +3035,39 @@ "Failed to load OAuth": [ "Kunne ikke laste inn OAuth" ], + "Finalize migration": [ + "Fullfør migreringen" + ], + "Finalize your migration": [ + "Fullfør migreringen din" + ], + "Finalizing the migration means all your emails will be routed directly to ${ BRAND_NAME }. Users will stop receiving emails on their Google accounts and data will not be synchronized between ${ BRAND_NAME } and Google anymore.": [ + "Når migreringen er fullført, blir alle e-postene dine sendt direkte til ${ BRAND_NAME }. Brukerne vil slutte å motta e-poster på Google-kontoene sine, og dataene vil ikke lenger bli synkronisert mellom ${ BRAND_NAME } og Google." + ], + "Find out what can be migrated.": [ + "Finn ut hva som kan migreres." + ], "Finish setting up your business account": [ "Fullfør konfigurasjonen av bedriftskontoen din" ], + "Go to Domain names": [ + "Gå til domenenavn" + ], "Google Marketplace app to copy data to ${ BRAND_NAME }": [ "Google Marketplace-app for å kopiere data til ${ BRAND_NAME }" ], + "Google Workspace account": [ + "Google Workspace-konto" + ], + "Hang tight, we're setting up user accounts and will start importing user data shortly.": [ + "Vent litt, vi setter opp brukerkontoer og begynner snart å importere brukerdata." + ], "Has errors": [ "Inneholder feil" ], + "Import errors for ${ user.AdminSetName }": [ + "Importfeil for ${ user.AdminSetName }" + ], "In progress": [ "Pågår" ], @@ -2836,14 +3077,20 @@ "Install migration app": [ "Installer migreringsappen" ], - "Learn more about what can be migrated. Learn more": [ - "Lær mer om hva som kan migreres. Lær mer" + "Install Migration assistant": [ + "Installer Migrerings-assistent" + ], + "Loading your organization data": [ + "Laster inn organisasjonsdataene dine" ], "Mail": [ "E-post" ], - "Migrate": [ - "Migrer" + "Managed via ${ registrar.name }": [ + "Administrert via ${ registrar.name }" + ], + "Member address not found. Please contact customer support to resolve this": [ + "Medlemsadressen ble ikke funnet. Ta kontakt med kundestøtte for å løse dette." ], "Migrate from Google Workspace": [ "Migrer fra Google Workspace" @@ -2851,6 +3098,12 @@ "Migrate users": [ "Migrer brukere" ], + "Migrate users to ${ BRAND_NAME }": [ + "Migrer brukere til ${ BRAND_NAME }" + ], + "Migrated": [ + "Migrert" + ], "Migration includes": [ "Migrering inkluderer" ], @@ -2861,8 +3114,35 @@ "Migration status": [ "Migreringsstatus" ], - "Not started": [ - "Ikke startet" + "Missing organization private key": [ + "Mangler privat nøkkel for organisasjonen" + ], + "Missing organization public key": [ + "Mangler offentlig nøkkel for organisasjonen" + ], + "More details": [ + "Flere detaljer" + ], + "Move your users, emails, and settings from Google Workspace automatically. We’ll guide you through connecting your account, verifying your domain, and migrating users securely.": [ + "Flytt brukerne, e-postene og innstillingene dine automatisk fra Google Workspace. Vi veileder deg gjennom tilkoblingen av kontoen din, bekreftelse av domenet ditt og sikker overføring av brukere." + ], + "No error details available. Please contact customer support for more information": [ + "Ingen feilinformasjon tilgjengelig. Ta kontakt med kundestøtte for mer informasjon." + ], + "No users to display": [ + "Ingen brukere å vise" + ], + "Not activated": [ + "Ikke aktivert" + ], + "Not confirmed": [ + "Ikke bekreftet" + ], + "Once users have claimed their ${ BRAND_NAME } account, finalize the migration.": [ + "Når brukerne har gjort krav på ${ BRAND_NAME }-kontoen sin, fullfør migreringen." + ], + "Once we have confirmed that emails are routed to ${ BRAND_NAME } the migration will be finalized. You will receive a confirmation email to let you know when this happens. This process can take up to 24 hours.": [ + "Når vi har bekreftet at e-postene er sendt til ${ BRAND_NAME }, vil overføringen være fullført. Du vil motta en bekreftelses-e-post som gir deg beskjed når dette skjer. Denne prosessen kan ta opptil 24 timer." ], "Organization does not have enough seats available": [ "Organisasjonen har ikke nok ledige lisenser" @@ -2870,8 +3150,20 @@ "Organization does not have enough storage available": [ "Organisasjonen har ikke nok lagringsplass tilgjengelig" ], - "Organization settings": [ - "Organisasjonsinnstillinger" + "Pending": [ + "Venter" + ], + "Please add the following records in your DNS console of your domain provider:": [ + "Legg til følgende poster i DNS-konsollen til domeneleverandøren din:" + ], + "Please leave this window open until we're done creating all the users.": [ + "La dette vinduet stå åpent til vi er ferdige med å opprette alle brukerne." + ], + "Please select at least one product to migrate": [ + "Velg minst ett produkt du vil migrere" + ], + "Refresh": [ + "Oppdater" ], "Required": [ "Obligatorisk" @@ -2882,8 +3174,8 @@ "Select at least one user to start a migration": [ "Velg minst én bruker for å starte en migrering" ], - "Select what you want to migrate, this will apply to all users whether they are created now or later. Migration will start after user accounts are created.": [ - "Velg hva du vil migrere, dette vil anvendes på alle brukere enten de opprettes nå eller senere. Migreringen starter etter at brukerkontoer er opprettet." + "Select users to migrate": [ + "Velg brukere som skal migreres" ], "Set up": [ "Konfigurer" @@ -2891,53 +3183,120 @@ "Set up billing information": [ "Konfigurer faktureringsinformasjon" ], + "Set up manually": [ + "Konfigurer manuelt" + ], + "Set up secure sending (DKIM)": [ + "Konfigurer sikker sending (DKIM)" + ], + "Set up secure sending (DMARC)": [ + "Konfigurer sikker sending (DMARC)" + ], + "Set up secure sending (SPF)": [ + "Konfigurer sikker sending (SPF)" + ], "Set up two-factor authentication": [ "Konfigurer tofaktorautentisering" ], "Settings": [ "Innstillinger" ], + "Share the activation link to users so they can claim their ${ BRAND_NAME } account.": [ + "Del aktiveringskoblingen med brukerne slik at de kan gjøre krav på ${ BRAND_NAME }-kontoen sin." + ], "Sign in to Google Workspace": [ "Logg på Google Workspace" ], + "Size": [ + "Størrelse" + ], + "Some accounts are not claimed": [ + "Noen kontoer er ikke gjort krav på" + ], + "SPF records": [ + "SPF-poster" + ], + "Start migrating": [ + "Start migrering" + ], "Start migration": [ "Start migrering" ], "Status": [ "Status" ], + "The default setting is none. However, to improve your security we recommend setting this value to p=quarantine.": [ + "Standardinnstillingen er ingen. For å forbedre sikkerheten anbefaler vi imidlertid at du setter denne verdien til p=quarantine." + ], + "The “p=” value specifies the action to take for emails that fail DMARC. Here are the available actions:": [ + "Verdien \"p=\" angir handlingen som skal utføres for e-poster som ikke lykkes med DMARC. Her er de tilgjengelige handlingene:" + ], + "This migration has been completed": [ + "Migreringen er fullført" + ], "To migrate your organization’s data, you need to install the ${ BRAND_NAME } Migration Assistant app from the Google Workspace Marketplace. This will grant permission to ${ BRAND_NAME } to copy your data. After installing it, come back here to continue.": [ "For å migrere organisasjonens data, må du installere ${ BRAND_NAME } Migration Assistant-appen fra Google Workspace Marketplace. Dette vil gi ${ BRAND_NAME } tillatelse til å kopiere dataene dine. Etter å ha installert den, kom tilbake hit for å fortsette." ], - "Transfer errors": [ - "Overføringsfeil" + "Update records for receiving": [ + "Oppdater poster for mottak" ], "User": [ "Bruker" ], + "User needs to activate their account through the activation link shown above": [ + "Brukeren må aktivere kontoen sin via aktiveringskoblingen som vises ovenfor." + ], + "User status": [ + "Brukerstatus" + ], + "Users can use ${ BRAND_NAME } or Google simultaneously for the duration of the migration.": [ + "Brukere kan bruke ${ BRAND_NAME } eller Google samtidig under migreringen." + ], "Users migrated": [ "Brukere migrert" ], + "Verified": [ + "Verifisert" + ], + "Verify domain ownership": [ + "Verifiser domeneeierskap" + ], "Verify installation": [ "Verifiser installasjon" ], "Verify your domain": [ "Verifiser domenet ditt" ], - "Verify your domain ownership": [ - "Verifiser domeneeierskapet ditt" - ], "Verify your domain to start a migration": [ "Verifiser domenet ditt for å starte en migrering" ], + "We detected the primary domain linked to your Google Workspace account. Confirm it to continue setting up email for your ${ BRAND_NAME } organization.": [ + "Vi fant hoveddomenet som er knyttet til Google Workspace-kontoen din. Bekreft det for å fortsette å konfigurere e-post for ${ BRAND_NAME }-organisasjonen din." + ], "We were unable to verify the installation, please check that you have installed it in your Google Workspace account and try again.": [ "Vi kunne ikke bekrefte installasjonen. Sjekk at du har installert den i Google Workspace-kontoen din, og prøv på nytt." ], + "We're still checking the MX records with your domain provider.": [ + "Vi sjekker fortsatt MX-postene med domeneleverandøren din." + ], + "We've noticed some users have not claimed their ${ BRAND_NAME } accounts.": [ + "Vi har lagt merke til at noen brukere ikke har gjort krav på ${ BRAND_NAME }-kontoene sine." + ], "What are you migrating?": [ "Hva migrerer du?" ], + "You": [ + "Du" + ], "You need to grant the permission for ${ BRAND_NAME } to copy your data. After accepting permissions, come back here to continue.": [ "Du må gi ${ BRAND_NAME } tillatelse til å kopiere dataene dine. Etter at du har godtatt tillatelsene, kan du komme tilbake hit for å fortsette." + ], + "You're all set!": [ + "Nå er du klar!" + ], + "Your current plan allows up to ${ maxMembers } user. To migrate additional users, add more seats to your subscription.": [ + "Din nåværende plan tillater opptil ${ maxMembers } bruker. For å migrere flere brukere, legg til flere plasser i abonnementet ditt.", + "Din nåværende plan tillater opptil ${ maxMembers } brukere. For å migrere flere brukere, legg til flere plasser i abonnementet ditt." ] }, "breadcrumb": { @@ -3045,9 +3404,18 @@ ] }, "Button": { + "Add users manually": [ + "Legg til brukere manuelt" + ], + "Cancel": [ + "Avbryt" + ], "Close": [ "Lukk" ], + "Configure your network": [ + "Konfigurer nettverket ditt" + ], "Continue using ${ MAIL_APP_NAME }.": [ "Fortsett å bruke ${ MAIL_APP_NAME }." ], @@ -3069,6 +3437,12 @@ "Got it": [ "Skjønner" ], + "Invite your team": [ + "Inviter teamet ditt" + ], + "Manage global VPN permissions": [ + "Administrer globale VPN-tillatelser" + ], "Maybe later": [ "Kanskje senere" ], @@ -3078,12 +3452,21 @@ "Remind me later": [ "Påminn meg senere" ], + "Secure your organization": [ + "Sikre organisasjonen din" + ], "Send": [ "Send" ], "Set up other features": [ "Konfigurer andre funksjoner" ], + "Set up SSO": [ + "Konfigurer SSO" + ], + "Sign in": [ + "Logg på" + ], "Take a tour": [ "Få en omvisning" ] @@ -3678,6 +4061,41 @@ "Hvis" ] }, + "Confirm cancellation": { + "Access is restored once usage is back within limits.": [ + "Tilgangen gjenopprettes når bruken er innenfor grensene igjen." + ], + "Back up photos from your devices": [ + "Sikkerhetskopier bilder fra enhetene dine" + ], + "Cancel subscription": [ + "Avbryt abonnementet" + ], + "Confirm cancellation": [ + "Bekreft avbestilling" + ], + "If you exceed free plan limits, you won't be able to:": [ + "Hvis du overskrider grensene for gratis planer, kan du ikke:" + ], + "Keep current plan": [ + "Behold gjeldende plan" + ], + "Manage your calendar": [ + "Administrer kalenderen din" + ], + "Receive new emails": [ + "Motta nye e-poster" + ], + "Send emails with attachments": [ + "Send e-poster med vedlegg" + ], + "Upload any new files": [ + "Last opp eventuelle nye filer" + ], + "When your subscription ends on ${ endDate }, your account will switch to the Free plan. If your usage exceeds Free plan limits, some features may be temporarily unavailable.": [ + "Når abonnementet ditt avsluttes ${ endDate }, bytter kontoen din til gratisabonnementet. Hvis bruken din overstiger grensene for gratisabonnementet, kan det hende at enkelte funksjoner er midlertidig utilgjengelige." + ] + }, "Confirm modal title": { "Import is incomplete!": [ "Importen er ufullstendig." @@ -4681,6 +5099,9 @@ "/month": [ "/måned" ], + "/user /month": [ + "/bruker /måned" + ], "/user per month": [ "/bruker per måned" ] @@ -4847,6 +5268,9 @@ ] }, "Description": { + "${ BRAND_NAME }'s end-to-end encryption means only you can unlock your data. Set up recovery options now to ensure you never lose access.": [ + "${ BRAND_NAME }s ende-til-ende-kryptering betyr at bare du kan låse opp dataene dine. Konfigurer gjenopprettingsalternativer nå for å sikre at du aldri mister tilgang." + ], "${ DOCS_SHORT_APP_NAME } in ${ DRIVE_APP_NAME } allows you to work together with others in a secure, encrypted environment.": [ "${ DOCS_SHORT_APP_NAME } i ${ DRIVE_APP_NAME } lar deg samarbeide med andre i et sikkert og kryptert miljø." ], @@ -4856,6 +5280,9 @@ "${ MAIL_APP_NAME } is your default mail application.": [ "${ MAIL_APP_NAME } er din standard e-postapplikasjon." ], + "${ MAIL_APP_NAME } keeps your business data secure and lets you send encrypted emails to anyone.": [ + "${ MAIL_APP_NAME } holder forretningsdataene dine sikre og lar deg sende krypterte e-postmeldinger til hvem som helst." + ], "A checked box means the feature is disabled.": [ "En avmerket boks betyr at funksjonen er deaktivert." ], @@ -4877,21 +5304,30 @@ "Automatically sort your incoming messages before they reach your inbox.": [ "Sorter innkommende meldinger automatisk før de når innboksen din." ], + "Available storage: ${ storageText }": [ + "Tilgjengelig lagringsplass: ${ storageText }" + ], "Available with ${ title }": [ "Tilgjengelig med ${ title }" ], "Block Google's ability to profile you. Gmail can't see what you do in ${ MAIL_APP_NAME }": [ "Blokker Googles mulighet til å profilere deg. Gmail kan ikke se hva du gjør i ${ MAIL_APP_NAME }" ], - "Bring over email, calendar events, and contacts from another provider.": [ + "Bring over your email, calendar events, and contacts from another provider.": [ "Hent e-post, kalenderhendelser og kontakter fra en annen leverandør." ], + "Build trust and brand recognition with professional email addresses at your own domain.": [ + "Bygg tillit og merkevaregjenkjenning med profesjonelle e-postadresser på ditt eget domene." + ], "Configure this first to activate your organization and customize your email address.": [ "Konfigurer dette først for å aktivere organisasjonen din og tilpasse e-postadressen din." ], "Connect your CRM, website, printers, and more.": [ "Koble til CRM-en, nettstedet, skriverne dine og mer." ], + "Create a Gateway to give your users access to your IT resources through dedicated servers.": [ + "Opprett en gateway for å gi brukerne dine tilgang til IT-ressurser via dedikerte servere." + ], "Create a Zoom meeting and add joining details to your event with one click.": [ "Opprett et Zoom-møte og legg til deltakelsesdetaljer til hendelsen din med ett klikk." ], @@ -4901,9 +5337,15 @@ "Create groups you can email with a single address.": [ "Opprett grupper du kan sende e-post til med én enkelt adresse." ], + "Create new user accounts or import users with SSO (single sign-on) SCIM provisioning.": [ + "Opprett nye brukerkontoer eller importer brukere med SSO (enkeltpålogging) SCIM-klargjøring." + ], "Create policies to decide who can connect to shared servers in each country.": [ "Opprett retningslinjer for å bestemme hvem som kan koble til delte tjenere i hvert land." ], + "Decide which users can connect to each of our 120+ shared server locations.": [ + "Bestem hvilke brukere som kan koble til hver av våre 120+ delte serverplasseringer." + ], "Easily access your email and calendar on desktop and mobile.": [ "Få enkel tilgang til e-posten og kalenderen din på datamaskin og mobil." ], @@ -4928,6 +5370,9 @@ "Encrypting and importing contacts... This may take a few minutes. When the process is completed, you can close this modal.": [ "Krypterer og importerer kontakter... Dette kan ta noen minutter. Når prosessen er fullført, kan du lukke dette hjelpevinduet." ], + "Enough room for years of emails, attachments and more.": [ + "Nok plass til årevis med e-poster, vedlegg og mer." + ], "Ensure secure access to organization data, even if your team is remote or using public WiFi.": [ "Sørg for sikker tilgang til organisasjonsdata, selv om teamet ditt er eksternt eller bruker offentlig WiFi." ], @@ -4952,12 +5397,30 @@ "Help your team securely store passwords to sensitive business and client information.": [ "Hjelp teamet ditt med å lagre passord til sensitiv forretnings- og klientinformasjon på en sikker måte." ], + "How our customer support team got our VPN app directly into people's hands.": [ + "Hvordan kundestøtteteamet vårt fikk VPN-appen vår direkte i folks hender." + ], + "How we fought back when ${ BRAND_NAME } was blocked in an aggressive campaign.": [ + "Hvordan vi kjempet tilbake da ${ BRAND_NAME } ble blokkert i en aggressiv kampanje." + ], + "How we supported local activists when privacy and free speech were threatened.": [ + "Hvordan vi støttet lokale aktivister da personvern og ytringsfrihet ble truet." + ], + "How you unlock your encrypted data if you lose your password.": [ + "Slik låser du opp krypterte data hvis du mister passordet ditt." + ], + "If you haven’t already, enable some recovery methods to make sure you never lose access to ${ VPN_APP_NAME }.": [ + "Hvis du ikke allerede har gjort det, aktiver noen gjenopprettingsmetoder for å forsikre deg om at du aldri mister tilgang til ${ VPN_APP_NAME }." + ], "It looks like the contact list you are importing contains some groups. Please review how these groups should be imported.": [ "Det ser ut til at kontaktlisten du importerer, inneholder noen grupper. Se gjennom hvordan disse gruppene skal importeres." ], "Keep different parts of your life separate and your inbox organized with additional addresses.": [ "Hold forskjellige deler av livet ditt atskilt og innboksen din organisert med flere adresser." ], + "Keep your team secure on the go with our apps for web, iOS, Android, Windows, Mac, and Linux.": [ + "Hold teamet ditt trygt på farten med appene våre for nett, iOS, Android, Windows, Mac og Linux." + ], "Learn more about common problems": [ "Lær mer om vanlige problemer" ], @@ -4967,6 +5430,9 @@ "Make your email footer your own — showcase your unique brand, not ours.": [ "Gjør e-postbunnteksten din til din egen – vis frem din unike merkevare, ikke vår." ], + "Methods that include both password reset and data recovery.": [ + "Metoder som inkluderer både tilbakestilling av passord og datagjenoppretting." + ], "Most issues can be solved in a few minutes with our step-by-step guides.": [ "De fleste problemer kan løses på få minutter med våre trinnvise veiledninger." ], @@ -4979,8 +5445,8 @@ "Read, reply, and stay on top of Gmail from within ${ MAIL_APP_NAME }": [ "Les, svar og hold deg oppdatert på Gmail fra ${ MAIL_APP_NAME }" ], - "Send a code to your recovery email or phone": [ - "Send en kode til gjenopprettings-e-postadressen eller -telefonen din" + "Select which categories you want to add and if you want to receive push notifications for each category.": [ + "Velg hvilke kategorier du vil legge til, og om du vil motta push-varsler for hver kategori." ], "Set up accounts for all users and invite them to join ${ BRAND_NAME }.": [ "Konfigurer kontoer for alle brukere og inviter dem til å bli med i ${ BRAND_NAME }." @@ -4994,6 +5460,9 @@ "Still need help? Our support team is here for you.": [ "Trenger du fortsatt hjelp? Vårt støtteteam er her for deg." ], + "This allows you to regain access to your ${ BRAND_NAME } account but does not recover your encrypted data.": [ + "Dette lar deg få tilgang til ${ BRAND_NAME }-kontoen din igjen, men gjenoppretter ikke de krypterte dataene dine." + ], "This may happen if permissions were removed or your password changed.": [ "Dette kan skje hvis tillatelser ble fjernet eller passordet ditt ble endret." ], @@ -5022,27 +5491,39 @@ "Track the status and activity of your referrals": [ "Spor statusen og aktiviteten til vervingene dine" ], + "Unlock 15 GB of storage for just ${ config.offerPrice }.": [ + "Lås opp 15 GB lagringsplass for kun ${ config.offerPrice }." + ], "Upgrade to ${ planName } to connect up to ${ MAX_SYNC_PAID_USER } accounts": [ "Oppgrader til ${ planName } for å koble til opptil ${ MAX_SYNC_PAID_USER } kontoer" ], "Upgrade to get ${ activatePmUser } for a shorter, easy-to-remember email address in addition to your current one.": [ "Oppgrader for å få ${ activatePmUser } for en kortere, lett å huske e-postadresse i tillegg til din nåværende." ], + "Use a recovery method to reset your password": [ + "Bruk en gjenopprettingsmetode for å tilbakestille passordet ditt" + ], "Use this guide to get your organization promptly benefiting from ${ BRAND_NAME }'s industry-leading encryption and privacy ecosystem.": [ "Bruk denne veiledningen for å hjelpe organisasjonen din med å dra nytte av ${ BRAND_NAME }s bransjeledende kryptering og personvernøkosystem." ], "We can't access ${ boldEmails } anymore.": [ "Vi får ikke lenger tilgang til ${ boldEmails }." ], + "We will pause imports at 80% storage to reserve space for new messages.": [ + "Vi setter importene på pause ved 80 % lagringsplass for å reservere plass til nye meldinger." + ], "We'll bring in your old emails and connect your Gmail to ${ MAIL_APP_NAME } so new messages appear automatically": [ "Vi henter inn de gamle e-postene og kobler Gmail-kontoen din til ${ MAIL_APP_NAME }, slik at nye meldinger vises automatisk." ], - "We've started importing your email from Gmail. We'll let you know when it's done.": [ - "Vi har begynt å importere e-posten din fra Gmail. Vi gir deg beskjed når det er ferdig." + "We've started importing your emails from Gmail. We'll let you know when it's done.": [ + "Vi har begynt å importere e-postene dine fra Gmail. Vi gir deg beskjed når det er ferdig." ], "We’re sorry to see you go. If you have a moment, we’d really appreciate hearing why you’d like to cancel. Your feedback helps us make ${ BRAND_NAME } better for everyone.": [ "Vi beklager at du forlater oss. Hvis du har et øyeblikk, setter vi stor pris på å høre hvorfor du ønsker å avbryte abonnementet. Tilbakemeldingen din hjelper oss med å gjøre ${ BRAND_NAME } bedre for alle." ], + "With new email categories, only important messages land in your primary inbox. Categories work just like spam filters. ${ MAIL_APP_NAME } never reads your emails or shares your data.": [ + "Med nye e-postkategorier havner bare viktige meldinger i den primære innboksen din. Kategorier fungerer akkurat som spamfiltre. ${ MAIL_APP_NAME } leser aldri e-postene eller deler dataene dine." + ], "You already have a Gmail address forwarding to ${ MAIL_APP_NAME }. Connect it below to send and receive emails directly from ${ MAIL_APP_NAME }.": [ "Du har allerede en Gmail-adresse som videresender til ${ MAIL_APP_NAME }. Koble den til nedenfor for å sende og motta e-poster direkte fra ${ MAIL_APP_NAME }." ], @@ -5084,6 +5565,12 @@ "You've connected one external account address to ${ MAIL_APP_NAME }.": [ "Du har koblet én ekstern kontoadresse til ${ MAIL_APP_NAME }." ], + "Your free ${ MAIL_APP_NAME } account comes with limited storage so we'll only import ${ newUserStorageText } of your most recent Gmail messages": [ + "Din gratis ${ MAIL_APP_NAME }-konto har begrenset lagringsplass, så vi importerer bare ${ newUserStorageText } av de nyeste Gmail-meldingene dine." + ], + "Your free ${ MAIL_APP_NAME } account comes with limited storage so we'll only import your most recent Gmail emails.": [ + "Din gratis ${ MAIL_APP_NAME }-konto har begrenset lagringsplass, så vi importerer bare de nyeste Gmail-e-postene dine." + ], "Your plan supports ${ MAX_SYNC_FREE_USER } Gmail address.": [ "Planen din støtter ${ MAX_SYNC_FREE_USER } Gmail-adresse.", "Planen din støtter ${ MAX_SYNC_FREE_USER } Gmail-adresser." @@ -5098,6 +5585,11 @@ "bruk Easy Switch-importassistenten" ] }, + "Description for domain modal": { + "Duplicate DMARC record found, go to the DNS console of your domain provider to fix it.": [ + "Duplikat DMARC-post funnet. Gå til DNS-konsollen til domeneleverandøren din for å fikse det." + ] + }, "Description of the purpose of the import CSV modal": { "Also, we have automatically matched CSV fields with vCard fields. You can review and change this matching manually.": [ "Vi har også automatisk matchet CSV-felt med vCard-felt. Du kan se gjennom og endre dette samsvaret manuelt." @@ -5521,6 +6013,9 @@ "120m": [ "120 min." ], + "15 minutes": [ + "15 minutter" + ], "30 minutes": [ "30 minutter" ], @@ -6143,7 +6638,7 @@ "${ user } will not be able to access your account until the next emergency access.": [ "${ user } vil ikke kunne få tilgang til kontoen din før neste nødtilgang." ], - "**${ contact }** is now your recovery contact. They can help you recover your data after a password reset.": [ + "**${ contact }** is now your recovery contact. They can help you unlock your data after you reset your password.": [ "**${ contact }** er nå din gjenopprettingskontakt. De kan hjelpe deg med å gjenopprette dataene dine etter en tilbakestilling av passordet." ], "**If they confirm**, click **Approve recovery**. This will unlock their encrypted data.": [ @@ -6173,12 +6668,21 @@ "Add": [ "Legg til" ], + "Add 1 more": [ + "Legg til 1 til" + ], "Add emergency contact": [ "Legg til nødkontakt" ], + "Add option": [ + "Legg til alternativ" + ], "Add recovery contact": [ "Legg til gjenopprettingskontakt" ], + "Add recovery method": [ + "Legg til gjenoppretingsmetode" + ], "Added on ${ formattedDate }": [ "Lagt til på ${ formattedDate }" ], @@ -6221,6 +6725,9 @@ "Contacts": [ "Kontakter" ], + "Data recovery contacts": [ + "Kontakter for datagjenoppretting" + ], "Data successfully recovered. You can now decrypt your existing data and encrypted files.": [ "Data vellykket gjenopprettet. Du kan nå dekryptere eksisterende data og krypterte filer." ], @@ -6266,6 +6773,12 @@ "Enable auto-renew": [ "Aktiver automatisk fornyelse" ], + "Enter your extra password": [ + "Angi det ekstra passordet ditt" + ], + "Explore plans": [ + "Utforsk planer" + ], "For ${ email }": [ "For ${ email }" ], @@ -6296,11 +6809,9 @@ "Less than a minute left": [ "Under ett minutt igjen" ], - "Let ${ user } know it’s really you trying to regain access.": [ - "Gi ${ user } beskjed om at det faktisk er du som prøver å få tilbake tilgangen." - ], - "None": [ - "Ingen" + "Maximum of ${ limit } contact reached. To change, remove a contact and add a new one.": [ + "Maksimum antall kontakter på ${ limit } er nådd. For å endre, fjern en kontakt og legg til en ny.", + "Maksimum antall kontakter på ${ limit } er nådd. For å endre, fjern en kontakt og legg til en ny." ], "Only ": [ "Kun " @@ -6392,14 +6903,11 @@ "Select recovery contact ${ name }": [ "Velg gjenopprettingskontakt ${ name }" ], - "Send email request": [ - "Send e-postforespørsel" - ], "Send recovery request": [ "Send gjenopprettingsforespørsel" ], - "Set account recovery": [ - "Angi kontogjenoppretting" + "Start recovery": [ + "Start gjenoppretting" ], "Stop being recovery contact": [ "Slutt å være gjenopprettingskontakt" @@ -6419,9 +6927,15 @@ "They added me as trusted contact. I can access their account in case of an emergency.": [ "De la meg til som en betrodd kontakt. Jeg kan få tilgang til kontoen deres i tilfelle en nødsituasjon." ], + "They added you as trusted contact. You can access their account in case of an emergency.": [ + "De har lagt deg til som en betrodd kontakt. Du kan få tilgang til kontoen deres i tilfelle en nødsituasjon." + ], "They may ask to access my account in case of an emergency.": [ "De kan be om tilgang til min konto i nødstilfeller." ], + "They may ask to access your account in case of an emergency.": [ + "De kan be om tilgang til kontoen din i tilfelle en nødsituasjon." + ], "They will receive access automatically in **${ days } day**, on **${ formattedAccessibleAt }**, you can reject their request or give them access immediately at any time.": [ "De vil automatisk motta tilgang om **${ days } dag**, på **${ formattedAccessibleAt }**, du kan avslå forespørselen deres eller gi dem tilgang umiddelbart når som helst.", "De får automatisk tilgang om **${ days } dager**, på **${ formattedAccessibleAt }**, du kan avvise forespørselen deres eller gi dem tilgang umiddelbart når som helst." @@ -6438,6 +6952,9 @@ "Time required before automatically granting them access": [ "Tid som kreves før de automatisk får tilgang" ], + "To add recovery contacts, you must have a recovery email address or phone number.": [ + "For å legge til gjenopprettingskontakter må du ha en gjenopprettings-e-postadresse eller et telefonnummer." + ], "To disable this recovery method, remove all your recovery contacts.": [ "For å deaktivere denne gjenopprettingsmetoden, fjern alle gjenopprettingskontaktene dine." ], @@ -6447,6 +6964,9 @@ "Unable to recover data": [ "Kan ikke gjenopprette data" ], + "Unlock ${ PASS_APP_NAME }": [ + "Lås opp ${ PASS_APP_NAME }" + ], "Upgrade": [ "Oppgrader" ], @@ -6468,6 +6988,9 @@ "We received a request to unlock the encrypted data of your contact **${ user }**.": [ "Vi mottok en forespørsel om å låse opp de krypterte dataene til kontakten din **${ user }**." ], + "We sent an email request to ${ user }. Let them know it's really you trying to regain access.": [ + "Vi sendte en e-postforespørsel til ${ user }. Gi dem beskjed om at det faktisk er du som prøver å få tilbake tilgangen." + ], "We were not able to verify the recovery data. Proceed anyway?": [ "Vi klarte ikke å verifisere gjenopprettingsdataene. Fortsette likevel?" ], @@ -6797,6 +7320,9 @@ "Invalid invitation link": [ "Ugyldig invitasjonskobling" ], + "Invalid joining link. Please contact your administrator.": [ + "Ugyldig kobling for å bli med. Ta kontakt med administratoren din." + ], "Invalid name": [ "Ugyldig navn" ], @@ -6973,9 +7499,6 @@ "Please try again in a few moments.": [ "Prøv igjen om noen øyeblikk." ], - "Please upgrade to a business plan with more than 1 user to get multi-user support": [ - "Oppgrader til en forretningsplan med mer enn 1 bruker for å få støtte for flere brukere" - ], "Please upgrade to a business plan with more than 1 user to manage multiple users.": [ "Oppgrader til en forretningsplan med mer enn 1 bruker for å administrere flere brukere." ], @@ -7118,6 +7641,9 @@ "There are too many folders in your external account. Please customize the import to delete some folders.": [ "Det er for mange mapper i din eksterne konto. Tilpass importen for å slette noen mapper." ], + "There was an error, please try again.": [ + "Det oppstod en feil. Prøv igjen." + ], "This field exceeds the maximum of ${ maximumLength } characters.": [ "Dette feltet overskrider maksimalt tillatt ${ maximumLength } tegn." ], @@ -7400,6 +7926,9 @@ "Ask your administrator to enable Account monitor.": [ "Be administratoren din om å aktivere kontoovervåking." ], + "Enable account monitor to start loading event.": [ + "Aktiver kontoovervåking for å starte innlasting av hendelse." + ], "Error: ${ errorMessage }": [ "Feil: ${ errorMessage }" ], @@ -7905,17 +8434,44 @@ ] }, "Feature": { + "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME } desktop app": [ + "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME }-skrivebordsapp" + ], "${ MaxVPN } VPN connection": [ "${ MaxVPN } VPN-tilkobling", "${ MaxVPN } VPN-tilkoblinger" ], - "Access to all countries": [ - "Tilgang til alle land" + "${ PROTON_SENTINEL_NAME } account protection": [ + "${ PROTON_SENTINEL_NAME }-kontobeskyttelse" ], - "Add": [ - "Legg til" + "10+ premium features": [ + "10+ premiumfunksjoner" ], - "Add (${ totalAddedCount })": [ + "15 GB storage": [ + "15 GB lagringsplass" + ], + "3 email domains": [ + "3 e-postdomener" + ], + "3 folders, labels and filters": [ + "3 mapper, etiketter og filtre" + ], + "500 GB storage": [ + "500 GB lagringsplass" + ], + "500 MB Mail storage": [ + "500 MB lagringsplass for e-post" + ], + "500 MB storage": [ + "500 MB lagringsplass" + ], + "Access to all countries": [ + "Tilgang til alle land" + ], + "Add": [ + "Legg til" + ], + "Add (${ totalAddedCount })": [ "Legg til (${ totalAddedCount })", "Legg til (${ totalAddedCount })" ], @@ -7926,6 +8482,12 @@ "Continue": [ "Fortsett" ], + "Custom email domain": [ + "Egendefinert e-postdomene" + ], + "Email addresses": [ + "E-postadresser" + ], "Encrypted cloud storage for files, photos and documents": [ "Kryptert skylagring for filer, bilder og dokumenter" ], @@ -7935,20 +8497,41 @@ "More premium features": [ "Flere premiumfunksjoner" ], + "Premium features in Mail, Calendar, Drive, Pass and VPN": [ + "Premiumfunksjoner i Mail, Calendar, Drive, Pass og VPN" + ], + "Priority support": [ + "Prioritert kundestøtte" + ], "Remove": [ "Fjern" ], + "Schedule and snooze emails": [ + "Planlegg og slumre e-poster" + ], "Secure Core servers": [ "Secure Core-tjenere" ], "Secure streaming support": [ "Støtte for sikker strømming" ], + "Short domain @pm.me": [ + "Kort domene @pm.me" + ], + "Storage": [ + "Lagring" + ], "Torrenting support (P2P)": [ "Torrent-støtte (P2P)" ], + "Unlimited folders, labels and filters": [ + "Ubegrenset antall mapper, etiketter og filtre" + ], "Unlimited hide-my-email aliases": [ "Ubegrenset antall hide-my-email-aliaser" + ], + "Use your own email domain": [ + "Bruk ditt eget e-postdomene" ] }, "Features": { @@ -8303,8 +8886,11 @@ ] }, "Force upgrade safety review": { - "I understand that I will no longer be able to sign in to older versions of ${ BRAND_NAME } mobile apps.": [ - "Jeg forstår at jeg ikke lenger vil kunne logge på fra eldre versjoner av mobilappene til ${ BRAND_NAME }." + "I understand that I will no longer be able to sign in to older versions of ${ BRAND_NAME } apps.": [ + "Jeg forstår at jeg ikke lenger vil kunne logge på fra eldre versjoner av appene til ${ BRAND_NAME }." + ], + "Learn more": [ + "Lær mer" ] }, "Form heading": { @@ -8405,6 +8991,9 @@ ], "Group address:": [ "Gruppeadresse:" + ], + "Roles and permission:": [ + "Roller og rettigheter:" ] }, "Group member count": { @@ -8464,6 +9053,14 @@ "Gruppemedlemskap" ] }, + "group_modal": { + "General": [ + "Generelt" + ], + "Roles and permissions": [ + "Roller og rettigheter" + ] + }, "Header": { "Access": [ "Tilgang" @@ -9104,6 +9701,15 @@ "${ boldWarning } You will lose access to all current encrypted data in your account if you continue.": [ "${ boldWarning }. Du vil miste tilgang til alle gjeldende krypterte data i kontoen din hvis du fortsetter." ], + "${ BRAND_NAME } Business plans gives your team all the collaboration tools they need to be productive and organized in their work, while safeguarding your business.": [ + "${ BRAND_NAME } Business gir teamet ditt alle samarbeidsverktøyene de trenger for å være produktive og organiserte i arbeidet sitt, samtidig som det beskytter virksomheten din." + ], + "${ BRAND_NAME } Free": [ + "${ BRAND_NAME } Free" + ], + "${ BRAND_NAME } is independently funded and operates without advertising. Below are examples of how this independence has been used in practice.": [ + "${ BRAND_NAME } er uavhengig finansiert og opererer uten reklame. Nedenfor finner du eksempler på hvordan denne uavhengigheten har blitt brukt i praksis." + ], "${ BRAND_NAME } is privacy you can trust, ensured by strong encryption, open-source code, and Swiss privacy laws. We believe nobody should be able to exploit your data, period. Our technology and business are based upon this fundamentally stronger definition of privacy.": [ "${ BRAND_NAME } er personvern du kan klarére, sikret av sterk kryptering, åpen kildekode og sveitsiske personvernlover. Vi mener at ingen skal kunne utnytte dataene dine, punktum. Vår teknologi og virksomhet er basert på denne fundamentalt sterkere definisjonen av personvern." ], @@ -9116,6 +9722,9 @@ "${ BRAND_NAME } will send a verification code to ${ phoneNumber }. Standard message rates may apply.": [ "${ BRAND_NAME } sender en bekreftelseskode til ${ phoneNumber }. Standard meldingstakster kan gjelde." ], + "${ BRAND_NAME } will send a verification code to your recovery phone. Standard message rates may apply.": [ + "${ BRAND_NAME } sender en bekreftelseskode til gjenopprettingstelefonen din. Standard meldingstakster kan gjelde." + ], "${ BRAND_NAME }'s encryption technology means that nobody can access your password - not even us.": [ "${ BRAND_NAME }s krypteringsteknologi betyr at ingen kan få tilgang til ditt passord - ikke engang vi." ], @@ -9140,6 +9749,9 @@ "${ discountPercent }% discount": [ "${ discountPercent }% rabatt" ], + "${ DRIVE_APP_NAME } will no longer keep previous versions of your files.": [ + "${ DRIVE_APP_NAME } vil ikke lenger beholde tidligere versjoner av filene dine." + ], "${ emailAddress } is invalid": [ "${ emailAddress } er ugyldig" ], @@ -9201,6 +9813,9 @@ "${ name } for Windows": [ "${ name } for Windows" ], + "${ name } is not available": [ + "${ name } er ikke tilgjengelig" + ], "${ none }: do not quarantine or reject unauthorized emails. Usually, people only use this policy to troubleshoot or test.": [ "${ none }: ikke sett uautoriserte e-poster i karantene eller avvis e-poster. Vanligvis bruker folk bare denne policyen til å feilsøke eller teste." ], @@ -9322,6 +9937,9 @@ "${ vaultLink } updated": [ "${ vaultLink } oppdatert" ], + "${ VPN_SHORT_APP_NAME } hides your traffic. ${ PASS_SHORT_APP_NAME } hides your identity\n— unlimited **hide-my-email aliases** and **dark-web alerts** if your data is ever leaked.": [ + "${ VPN_SHORT_APP_NAME } skjuler trafikken din. ${ PASS_SHORT_APP_NAME } skjule identiteten din\n— ubegrenset antall **hide-my-email-aliaser** og **varsler på det mørke nettet** hvis dataene dine noen gang lekker ut." + ], "${ vpnPlus } required for Country level connection.": [ "${ vpnPlus } kreves for tilknytning på landnivå." ], @@ -9359,6 +9977,9 @@ "(formerly Twitter)": [ "(tidligere Twitter)" ], + "**${ appName }** is not available for your account.": [ + "**${ appName }** er ikke tilgjengelig for kontoen din." + ], "**${ appName }** is not supported in your organization **${ organizationName }**.": [ "**${ appName }** støttes ikke i organisasjonen **${ organizationName }**." ], @@ -9401,9 +10022,15 @@ "**This will disable end-to-end encrypted email forwardings:** you can set them up again later.": [ "**Dette vil deaktivere ende-til-ende-krypterte e-postvideresendinger:** du kan sette dem opp igjen senere." ], + "**Your recovery email alone doesn't allow you to recover your encrypted data** after you reset your password.": [ + "**Gjenopprettings-e-posten din alene lar deg ikke gjenopprette krypterte data** etter at du har tilbakestilt passordet ditt." + ], "**Your recovery methods will be invalidated:** you can generate new recovery data later.": [ "**Gjenopprettingsmetodene dine blir ugyldige:** du kan generere nye gjenopprettingsdata senere." ], + "**Your recovery phone alone doesn’t allow you to recover your encrypted data** after you reset your password.": [ + "**Gjenopprettingstelefonen din alene lar deg ikke gjenopprette krypterte data** etter at du har tilbakestilt passordet ditt." + ], "+ ${ invisibleCount } More": [ "+ ${ invisibleCount } til", "+ ${ invisibleCount } til" @@ -9469,15 +10096,27 @@ "Activity Monitor": [ "Aktivitetsovervåking" ], + "Add ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }": [ + "Legg til ${ BRAND_NAME }${ PASS_SHORT_APP_NAME }" + ], "Add ${ PLAN_NAMES[PLANS.MEET_BUSINESS] }": [ "Legg til ${ PLAN_NAMES[PLANS.MEET_BUSINESS] }" ], + "Add 1 to 5 people who you trust and can contact easily. They will be able to reset your password for you by signing in to your account. They must already have a ${ BRAND_NAME } Account.": [ + "Legg til 1 til 5 personer du stoler på og enkelt kan kontakte. De vil kunne tilbakestille passordet ditt for deg ved å logge på kontoen din. De må allerede ha en ${ BRAND_NAME }-konto." + ], "Add a @pm.me email address to your account. This simple, shorter domain stands for \"${ MAIL_APP_NAME } me\" or \"Private Message me.\"": [ "Legg til en @pm.me e-postadresse til kontoen din. Dette enkle, kortere domene står for \"${ MAIL_APP_NAME } meg\" eller \"send meg privat melding.\"" ], + "Add a phone number in case we need to contact you": [ + "Legg til et telefonnummer i tilfelle vi trenger å kontakte deg" + ], "add a recovery method": [ "legger til en gjenoppretingsmetode" ], + "Add an email address in case we need to contact you": [ + "Legg til en e-postadresse i tilfelle vi trenger å kontakte deg" + ], "Add another layer of security to your account. You’ll need to verify yourself with 2FA every time you sign in.": [ "Legg til enda et lag av sikkerhet til kontoen din. Du må verifisere deg selv hver gang du logger på med 2FA." ], @@ -9506,9 +10145,9 @@ "Add your name and logo to create a more personalized experience for your organization.": [ "Legg til navn og logo for å opprette en mer personlig opplevelse for organisasjonen." ], - "Adding ${ addedServerCount } gateway server": [ - "Legger til ${ addedServerCount } gateway-tjener", - "Legger til ${ addedServerCount } gateway-tjenere" + "Adding ${ total } gateway server": [ + "Legger til ${ total } gateway-server", + "Legger til ${ total } gateway-servere" ], "Adding an external email address will disable end-to-end encryption for all email communication within that group. Do you want to proceed?": [ "Å legge til en ekstern e-postadresse vil deaktivere ende-til-ende-kryptering for all e-postkommunikasjon innenfor den gruppen. Vil du fortsette?" @@ -9578,6 +10217,12 @@ "Allow users to connect to secure shared servers from the **Countries** section of the ${ VPN_APP_NAME } app.": [ "Tillat brukere å koble til sikre delte tjenere fra **Land**-delen av ${ VPN_APP_NAME }-appen." ], + "Allowing QR code sign-in will let you sign in by scanning a QR code if you forget your password. All you need is to be signed in to a ${ BRAND_NAME } service on another device.": [ + "Hvis du tillater pålogging med QR-kode, kan du logge på ved å skanne en QR-kode hvis du glemmer passordet ditt. Alt du trenger å gjøre er å være logget på en ${ BRAND_NAME }-tjeneste på en annen enhet." + ], + "Allowing the password reset from the settings lets you to change your password if you’ve lost it, but are still signed in to ${ BRAND_NAME }.": [ + "Hvis tilbakestilling av passord tillates fra innstillingene, kan du endre passordet ditt hvis du har mistet det, mens du fortsatt er logget på ${ BRAND_NAME }." + ], "Already allocated": [ "Allerede allokert" ], @@ -9683,6 +10328,9 @@ "Are you sure you want to revoke certificate **${ name }**": [ "Er du sikker på at du ønsker å oppheve sertifikatet **${ name }**?" ], + "Are you sure you want to sign out of this account?": [ + "Er du sikker på at du vil logge ut av denne kontoen?" + ], "Are you sure you want to sort your folders alphabetically?": [ "Er du sikker på at du ønsker å sortere mappene dine alfabetisk?" ], @@ -9779,9 +10427,18 @@ "Before you can start sending and receiving emails from your new addresses you need to create encryption keys for them.": [ "Før du kan starte med å sende og motta e-poster fra dine nye adresser må du opprette krypteringsnøkler for dem." ], + "BEST FOR TV": [ + "BEST FOR TV" + ], "Beta": [ "Beta" ], + "Billed at ${ monthlyDiscountedPrice } for the first 6 months, renews at ${ monthlyRenewalPrice }.": [ + "Faktureres til ${ monthlyDiscountedPrice } de første 6 månedene, fornyes til ${ monthlyRenewalPrice }." + ], + "Billed at ${ yearlyDiscountedPrice } for the first 12 months, renews at ${ yearlyRenewalPrice }.": [ + "Faktureres til ${ yearlyDiscountedPrice } de første 12 månedene, fornyes til ${ yearlyRenewalPrice }." + ], "Billing cycle: ${ text }": [ "Faktureringssyklus: ${ text }" ], @@ -9791,6 +10448,9 @@ "Boost your organization’s brand identity and create a more consistent online experience for your users.": [ "Styrk organisasjonens merkeidentitet og skap en mer konsekvent nettopplevelse for brukerne." ], + "By adding people you trust as recovery contacts, we'll be able to send them an email to help you if you're having trouble recovering your data after a password reset. You can also be a recovery contact for others.": [ + "Ved å legge til personer du stoler på som gjenopprettingskontakter, kan vi sende dem en e-post for å hjelpe deg hvis du har problemer med å gjenopprette dataene dine etter en tilbakestilling av passord. Du kan også være en gjenopprettingskontakt for andre." + ], "By creating a ${ PASS_APP_NAME } account with your SimpleLogin email, you can manage your aliases directly from ${ PASS_APP_NAME }.": [ "Ved å opprette en ${ PASS_APP_NAME }-konto med SimpleLogin-e-posten din, kan du administrere aliasene dine direkte fra ${ PASS_APP_NAME }." ], @@ -9833,9 +10493,6 @@ "Change your password": [ "Endre passordet ditt" ], - "Check the status of imports and forwarding.": [ - "Sjekk statusen på importer og videresending." - ], "Check your network and try again.": [ "Sjekk nettverket ditt og prøv igjen." ], @@ -9869,6 +10526,9 @@ "CNET editors choice award with a rating of 8.4 out of 10": [ "CNET-redaktørens valgpris med en vurdering på 8.4 av 10" ], + "Code has been re-sent.": [ + "Koden er sendt på nytt." + ], "Coming soon": [ "Kommer snart" ], @@ -9884,6 +10544,9 @@ "Configure SAML authentication for your organization through an identity provider like Okta, Microsoft Azure, or Google Identity Platform. This will enable SAML for the whole organization.": [ "Konfigurer SAML-autentisering for organisasjonen din gjennom en identitetsleverandør som Okta, Microsoft Azure eller Google Identity Platform. Dette vil aktivere SAML for hele organisasjonen." ], + "Connect and manage your external mailboxes in ${ MAIL_APP_NAME }.": [ + "Koble til og administrer dine eksterne postkasser i ${ MAIL_APP_NAME }." + ], "Connection data will be available in around 1 hour.": [ "Tilkoblingsdata vil være tilgjengelig om ca. 1 time." ], @@ -9902,6 +10565,9 @@ "Continue to connect this entity with your ${ BRAND_NAME } organization.": [ "Fortsett for å koble denne enheten til ${ BRAND_NAME }-organisasjonen din." ], + "Continue with ${ BRAND_NAME } Free": [ + "Fortsett med ${ BRAND_NAME } Free" + ], "Continuing will connect your ${ BRAND_NAME } Account to ${ name }.": [ "Hvis du fortsetter, kobles ${ BRAND_NAME }-kontoen din til ${ name }." ], @@ -9942,9 +10608,9 @@ "Create a new code on your TV and try again.": [ "Opprett en ny kode på TV-en og prøv igjen." ], - "Create a secure cloud for ${ value } member": [ - "Opprett en sikker sky for ${ value } medlem", - "Opprett en sikker sky for ${ value } medlemmer" + "Create a secure cloud for ${ memberCount } member": [ + "Opprett en sikker sky for ${ memberCount } medlem", + "Opprett en sikker sky for ${ memberCount } medlemmer" ], "Create an account": [ "Opprett en konto" @@ -9962,6 +10628,10 @@ "Oppretter gateway-tjener: ${ serverNumber } / ${ total }", "Oppretter gateway-tjenere: ${ serverNumber } / ${ total }" ], + "Creating gateway with ${ total } server": [ + "Oppretter gateway med ${ total } server", + "Oppretter gateway med ${ total } servere" + ], "Creating your account": [ "Oppretter kontoen din" ], @@ -10010,6 +10680,9 @@ "Data recoverable with recovery phrase": [ "Data kan gjenopprettes med gjenopprettingsfrase" ], + "Data recovery requires a password reset option (email or SMS)": [ + "Datagjenoppretting krever et alternativ for tilbakestilling av passord (e-post eller SMS)" + ], "dedicated servers": [ "dedikerte tjenere" ], @@ -10056,6 +10729,9 @@ "Disabling authenticator app 2FA will make your account less secure. Only proceed if absolutely necessary.": [ "Deaktivering av autentiseringsapp 2FA vil gjøre kontoen din mindre sikker. Fortsett bare hvis det er absolutt nødvendig." ], + "Disabling the data backup on this device will prevent you from automatically unlocking your encrypted data after a password reset.": [ + "Hvis du deaktiverer sikkerhetskopiering av data på denne enheten, kan du ikke låse opp krypterte data automatisk etter en tilbakestilling av passordet." + ], "Discount": [ "Rabatt" ], @@ -10216,6 +10892,9 @@ "Enabling recovery by phrase again will generate a new recovery phrase.": [ "Aktivering av gjenoppretting ved frase igjen vil generere en ny gjenopprettingsfrase." ], + "Enabling the data backup on this device will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset, simply by signing in on this device.": [ + "Hvis du aktiverer sikkerhetskopiering av data på denne enheten, gjenopprettes tilgangen til e-poster, kontakter, filer, passord og andre krypterte data på kontoen din etter en tilbakestilling av passordet. Dette gjøres ganske enkelt ved å logge på denne enheten." + ], "Encryption setting updated": [ "Krypteringsinnstilling oppdatert" ], @@ -10375,6 +11054,9 @@ "for ${ price }": [ "for ${ price }" ], + "For a 10-year version history, please contact our sales team.": [ + "Kontakt vårt salgsapparat for en 10-årig versjonshistorikk." + ], "For anytime access to email and an optimized mobile experience, download our ${ androidAppLink } or ${ iosAppLink }.": [ "For tilgang til e-post når som helst og optimalisert mobilopplevelse, last ned vår ${ androidAppLink } eller ${ iosAppLink }." ], @@ -10384,12 +11066,12 @@ "For easy access to your passwords and more.": [ "For enkel tilgang til passordene dine og mer." ], + "For just ${ bundlePlanPriceInline }": [ + "For kun ${ bundlePlanPriceInline }" + ], "For users who are switching to ${ MAIL_APP_NAME } from another email service, select the ${ boldAddresses } tab and add all active email addresses before changing the MX record to ensure a smooth transition.": [ "For brukere som bytter til ${ MAIL_APP_NAME } fra en annen e-posttjeneste, velger du ${ boldAddresses }-fanen og legger til alle aktive e-postadresser før du endrer MX-posten for å sikre en jevn overgang." ], - "Forwarding automatically sends new incoming emails to your Inbox.": [ - "Videresending sender automatisk nye innkommende e-poster til innboksen din." - ], "Free forever": [ "Gratis for alltid" ], @@ -10417,6 +11099,9 @@ "Gateways": [ "Gateway-tjenere" ], + "Generating a new recovery phrase will deactivate your current recovery phrase.": [ + "Hvis du genererer en ny gjenopprettingsfrase, deaktiveres den nåværende gjenopprettingsfrasen." + ], "Generating a new recovery phrase will deactivate your old one.": [ "Generering av ny gjenopprettingsfrase vil deaktivere den gamle." ], @@ -10438,12 +11123,18 @@ "Get notified if your password or other personal data was leaked. ${ learnMoreLinkNoBreach }": [ "Bli varslet hvis passordet ditt eller andre personlige data ble lekket. ${ learnMoreLinkNoBreach }." ], + "Get started": [ + "Kom i gang" + ], "Get started with the referral link above.": [ "Kom i gang med vervekoblingen ovenfor." ], "Get visibility into account access": [ "Få innsikt i kontotilgang" ], + "Get VPN Plus": [ + "Skaff deg VPN Plus" + ], "Give the token a descriptive name, such as the service you plan to use it with, and select one of your active custom domain addresses. Only this address will be able to send emails with this token.": [ "Gi tokenet et beskrivende navn, slik som tjenesten du planlegger å bruke det med, og velg en av dine aktive egendefinerte domeneadresser. Kun denne adressen vil være i stand til å sende e-poster med dette tokenet." ], @@ -10501,6 +11192,12 @@ "If another administrator changed this password, you will need to ask them for the new Organization Password.": [ "Dersom en administrator endret dette passordet, må du be om det nye organisasjonspassordet." ], + "If disabled, ${ BRAND_NAME } will still use your recovery email to send security notifications.": [ + "Hvis den er deaktivert, vil ${ BRAND_NAME } fortsatt bruke gjenopprettings-e-postadressen din til å sende sikkerhetsvarsler." + ], + "If disabled, ${ BRAND_NAME } will still use your recovery phone to send security notifications.": [ + "Hvis deaktivert, vil ${ BRAND_NAME } fortsatt bruke gjenopprettingstelefonen din til å sende sikkerhetsvarsler." + ], "If disabled, only administrators will be able to export data.": [ "Hvis deaktivert, vil bare administratorer kunne eksportere data." ], @@ -10579,6 +11276,9 @@ "If you purchased a gift code or received one from our support team, you can enter it here.": [ "Hvis du har kjøpt en gavekode eller mottatt en fra vårt kundestøtteteam, kan du skrive den inn her." ], + "If you recently reset your password, you can ${ recoveryMethodLink } to unlock your data. If this is due to an old password reset, you can stop the message from showing again.": [ + "Hvis du nylig har tilbakestilt passordet ditt, kan du bruke ${ recoveryMethodLink } til å låse opp dataene. Hvis dette skyldes en gammel tilbakestilling av passordet, kan du stoppe meldingen fra å vises igjen." + ], "If you recently reset your password, you can use a data recovery method to unlock your data": [ "Hvis du nylig tilbakestilte passordet ditt, kan du bruke en datagjenopprettingsmetode til å låse opp dine data." ], @@ -10641,6 +11341,9 @@ "Include device, location, and IP details": [ "Inkluder enhet, plassering og IP-detaljer" ], + "Included": [ + "Inkludert" + ], "Increase your account security by verifying your email address.": [ "Øk kontosikkerheten ved å verifisere e-postadressen din." ], @@ -10774,6 +11477,12 @@ "Item updated in vault": [ "Element oppdatert i hvelv" ], + "It’s often the easiest way to recover your account if you’re signed in.": [ + "Det er ofte den enkleste måten å gjenopprette kontoen din på hvis du er logget inn." + ], + "It’s the only way to instantly recover everything, so make sure you keep it somewhere safe but accessible.": [ + "Det er den eneste måten å gjenopprette alt umiddelbart, så sørg for at du oppbevarer den trygt, men tilgjengelig sted." + ], "JCB logo": [ "JCB-logo" ], @@ -10981,15 +11690,15 @@ "No card required": [ "Ingen kort kreves" ], + "No connected addresses.": [ + "Ingen tilkoblede adresser." + ], "No countries enabled": [ "Ingen land aktivert" ], "No folder selected": [ "Ingen mappe valgt" ], - "No forwarding history.": [ - "Ingen videresendingshistorikk." - ], "No gateways": [ "Ingen gateway-tjenere" ], @@ -11053,6 +11762,9 @@ "Only change these settings if you are using PGP with non-${ BRAND_NAME } recipients.": [ "Kun endre disse innstillingene hvis du bruker PGP med ikke-${ BRAND_NAME } mottakere." ], + "Only sign in on devices you trust": [ + "Logg bare inn på enheter du stoler på" + ], "Only you can see the label": [ "Bare du kan se etiketten" ], @@ -11318,9 +12030,18 @@ "Recently used servers:": [ "Nylig brukte tjenere:" ], + "RECOMMENDED": [ + "ANBEFALT" + ], "Recommended on trusted devices. ${ keepMeSignedInLearnMoreLink }": [ "Anbefalt på klarerte enheter. ${ keepMeSignedInLearnMoreLink }" ], + "Recovery by email is not available while ${ PROTON_SENTINEL_NAME } is enabled.": [ + "Gjenoppretting via e-post er ikke tilgjengelig mens ${ PROTON_SENTINEL_NAME } er aktivert." + ], + "Recovery by phone is not available while ${ PROTON_SENTINEL_NAME } is enabled.": [ + "Gjenoppretting via telefon er ikke tilgjengelig mens ${ PROTON_SENTINEL_NAME } er aktivert." + ], "Recovery file downloaded": [ "Gjenopprettingsfil nedlastet" ], @@ -11474,6 +12195,9 @@ "Set up your organization": [ "Konfigurer organisasjonen din" ], + "Set up your organization and start protecting your data in a few easy steps.": [ + "Konfigurer organisasjonen og begynn å beskytte dataene i noen få enkle trinn." + ], "Setting successfully saved": [ "Innstilling lagret" ], @@ -11511,6 +12235,12 @@ "Show each sender's image in the message list. The sender's initials will be shown if a photo is not available.": [ "Vis bildet av hver avsender i meldingslisten. Avsenderens initialer vises hvis et bilde ikke er tilgjengelig." ], + "Show fewer benefits": [ + "Vis færre fordeler" + ], + "Show more benefits": [ + "Vis flere fordeler" + ], "Show original message": [ "Vis opprinnelig melding" ], @@ -11556,9 +12286,6 @@ "Something went wrong. Please try again or contact customer support.": [ "Noe gikk galt. Prøv igjen eller kontakt kundestøtte." ], - "Something went wrong. Please try again.": [ - "Noe gikk galt. Prøv på nytt." - ], "Specify the domain which is allowed to authenticate with SAML SSO.": [ "Spesifiser domenet som har tillatelse til å autentisere med SAML SSO." ], @@ -11648,6 +12375,9 @@ "TechRadar Pro recommended with a rating of 4.2 out of 5 stars": [ "Anbefales av TechRadar Pro med en vurdering på 4.2 av 5 stjerner" ], + "Temporarily unavailable due to high demand. Please try again later.": [ + "Midlertidig utilgjengelig på grunn av høy etterspørsel. Prøv igjen senere." + ], "Temporarily unavailable. Please check back later.": [ "Midlertidig utilgjengelig. Kom tilbake senere." ], @@ -11780,6 +12510,9 @@ "This could take some time. Please do not close this page or disconnect from the internet.": [ "Dette kan ta litt tid. Ikke lukk siden eller koble fra internett." ], + "This data recovery method requires a password reset option (email or SMS)": [ + "Denne metoden for datagjenoppretting krever et alternativ for tilbakestilling av passord (e-post eller SMS)" + ], "This feature delays sending your emails, giving you the opportunity to undo send during the selected time frame.": [ "Denne funksjonen forsinker utsending av e-postene dine. På denne måte kan du angre sending av e-posten i den valgte tidsrammen." ], @@ -11840,6 +12573,15 @@ "This verification can take up to one hour. After successful verification, do not remove the TXT record as it is needed to confirm that you continue to own the domain.": [ "Denne verifiseringen kan ta opptil én time. Når bekreftelsen er fullført, må du ikke fjerne TXT-posten, siden det er nødvendig for å bekrefte at du fortsatt eier domenet." ], + "This will allow the TV to access your ${ BRAND_NAME } account.": [ + "Dette vil gi TV-en tilgang til ${ BRAND_NAME }-kontoen din." + ], + "This will delete all previous versions of your files older than ${ rententionLabel }.": [ + "Dette vil slette alle tidligere versjoner av filene dine som er eldre enn ${ rententionLabel }." + ], + "This will delete all previous versions of your files.": [ + "Dette vil slette alle tidligere versjoner av filene dine." + ], "This will deny access to **${ email }**. Are you sure you want to continue?": [ "Dette vil nekte tilgang til **${ email }**. Er du sikker på at du vil fortsette?" ], @@ -11855,6 +12597,9 @@ "This will enable PayPal to be used to pay for your ${ BRAND_NAME } subscription. We will redirect you to PayPal in a new browser tab. If you use any pop-up blockers, please disable them to continue.": [ "Dette vil aktivere at PayPal skal brukes til å betale for ditt ${ BRAND_NAME }-abonnement. Vi vil omdirigere deg til PayPal i en ny nettleserfane. Hvis du blokkerer sprettoppvinduer, deaktiver blokkeringen for å fortsette." ], + "This will let you quickly and safely access your ${ BRAND_NAME } Account so you can change you password.": [ + "Dette gir deg rask og sikker tilgang til ${ BRAND_NAME }-kontoen din, slik at du kan endre passordet ditt." + ], "This will permanently delete the data and all email addresses associated with these users.": [ "Dette vil permanent slette all data og alle e-postadresser tilknyttet disse brukerene." ], @@ -11927,15 +12672,21 @@ "To decrypt and view your locked data after a password reset, select a recovery method.": [ "For å dekryptere og se låst data etter en tilbakestilling av passord, velg en gjenopprettingsmetode." ], + "To enable post-quantum protection, you’ll need to finish generating your new post-quantum encryption keys.": [ + "For å aktivere post-kvantebeskyttelse må du fullføre genereringen av de nye post-kvantekrypteringsnøklene dine." + ], + "To ensure the highest possible security of your account, disable **Recovery by recovery email**.": [ + "For å sikre best mulig sikkerhet for kontoen din, deaktiver **Gjenoppretting via gjenopprettings-e-postadresse**." + ], + "To ensure the highest possible security of your account, disable **Recovery by recovery phone**.": [ + "For å sikre best mulig sikkerhet for kontoen din, deaktiver **Gjenoppretting via gjenopprettingstelefon**." + ], "To ensure you don’t lose important data, ${ DRIVE_APP_NAME } saves older versions of your files as you and your collaborators make changes. Select how long ${ BRAND_NAME } should keep previous versions.": [ "For å sikre at du ikke mister viktige data, lagrer ${ DRIVE_APP_NAME } eldre versjoner av dine filer når du og dine samarbeidspartnere gjør endringer. Velg hvor lenge ${ BRAND_NAME } bør beholde tidligere versjoner." ], "To fight spam and abuse, please verify you are human.": [ "For å bekjempe søppelpost og misbruk må du bekrefte at du er et menneske." ], - "To help keep your account safe, we want to make sure it's really you trying to sign in.": [ - "For å holde kontoen din trygg, vil vi forsikre oss om at det virkelig er du som prøver å logge på." - ], "To help keep your account safe, we want to make sure it’s really you trying to sign in.": [ "For å holde kontoen din trygg, vil vi forsikre oss om at det virkelig er du som prøver å logge på." ], @@ -12029,6 +12780,9 @@ "Unless you sign out of your account or change your password, your session will remain active. Sessions expire after 60 days of inactivity.": [ "Med mindre du logger av kontoen din eller endrer passordet ditt, vil økten din forbli aktiv. Økter utløper etter 60 dager med inaktivitet." ], + "Unlock streaming with VPN Plus.": [ + "Lås opp strømming med VPN Plus" + ], "Unsaved changes": [ "Endringer som ikke er lagret" ], @@ -12044,15 +12798,24 @@ "Unverified email address.": [ "Ikke verifisert e-postadresse." ], + "Upgrade anytime to bring over the rest": [ + "Oppgrader når som helst for å få med deg resten" + ], "Upgrade now to get premium features, products and storage at a special price": [ "Oppgrader nå for å få premiumfunksjoner, produkter og lagringsplass til spesialpris." ], + "Upgrade or clear space anytime to bring over the rest": [ + "Oppgrader eller frigjør plass når som helst for å ta med resten" + ], "Upgrade to add a shorter @pm.me address to your account that is easier to share. It stands for “${ MAIL_APP_NAME } me” or “Private Message me”.": [ "Oppgrader for å legge til en kortere @pm.me-adresse til din konto som er enklere å dele. Den står for \"${ MAIL_APP_NAME } meg\" eller \"send meg privat melding\"." ], "Upgrade to keep your ${ planTitle } benefits.": [ "Oppgrader for å beholde ${ planTitle } fordelene dine." ], + "Upgrade to unlock": [ + "Oppgrader for å låse opp" + ], "Upgrade to unlock the ${ monitorLink }.": [ "Oppgrader for å låse opp ${ monitorLink }." ], @@ -12155,6 +12918,9 @@ "Version ${ version }": [ "Versjon ${ version }" ], + "Version history": [ + "Versjonshistorikk" + ], "Version number successfully copied to clipboard": [ "Versjonsnummeret ble kopiert til utklippstavlen" ], @@ -12170,6 +12936,9 @@ "Visa Secure logo": [ "Visa Secure logo" ], + "VPN Plus": [ + "VPN Plus" + ], "VPN with dedicated servers and IP addresses": [ "VPN med dedikerte tjenere og IP-adresser" ], @@ -12185,6 +12954,12 @@ "We advise you to use official ${ VPN_APP_NAME } applications when possible.": [ "Vi råder deg til å bruke offisielle ${ VPN_APP_NAME }-applikasjoner når mulig." ], + "We can use your recovery email to send you a verification code to reset your password, and to contact you if we notice suspicious activity.": [ + "Vi kan bruke gjenopprettings-e-postadressen din til å sende deg en bekreftelseskode for å tilbakestille passordet ditt, og til å kontakte deg hvis vi oppdager mistenkelig aktivitet." + ], + "We can use your recovery phone to send you a verification code to reset your password, and to contact you if we notice suspicious activity.": [ + "Vi kan bruke gjenopprettingstelefonen din til å sende deg en bekreftelseskode for å tilbakestille passordet ditt, og til å kontakte deg hvis vi oppdager mistenkelig aktivitet." + ], "We couldn't complete the transaction. Please try again.": [ "Vi kunne ikke fullføre transaksjonen. Prøv igjen." ], @@ -12230,6 +13005,9 @@ "We stored a backup file in this browser because you allowed data recovery on this ${ deviceLink }. If the backup file is valid, you will immediately regain complete or partial access to your encrypted data.": [ "Vi har lagret en sikkerhetskopifil i denne nettleseren fordi du har tillatt datagjenoppretting på ${ deviceLink }. Hvis sikkerhetskopifilen er gyldig, kan du umiddelbart motta fullstendig eller delvis tilgang igjen til krypterte data." ], + "We strongly recommend that everyone enable recovery by recovery phrase.": [ + "Vi anbefaler på det sterkeste at alle aktiverer gjenoppretting via gjenopprettingsfrase." + ], "We use 3-D Secure to protect your payments": [ "Vi bruker 3-D Secure for å beskytte dine betalinger" ], @@ -12414,9 +13192,6 @@ "You can edit this once to ensure the correct email address for verification.": [ "Du kan redigere den en gang for å sikre riktig e-postadresse for bekreftelse." ], - "You can enable the Photos section from the interface using the toggle below.": [ - "Du kan aktivere fotoseksjonen fra grensesnittet ved å bruke bryteren nedenfor." - ], "You can enforce the password rules members of your organization will use when they create or reset the password to their ${ BRAND_NAME } Account.": [ "Du kan håndheve passordreglene som medlemmer av organisasjonen din må bruke når de oppretter eller tilbakestiller passordet til deres ${ BRAND_NAME } konto." ], @@ -12477,6 +13252,9 @@ "You don't have any referrals.": [ "Du har ingen vervinger." ], + "You don’t need to open or read the file—just download it and store it somewhere safe.": [ + "Du trenger ikke å åpne eller lese filen – bare last den ned og oppbevar den et trygt sted." + ], "You get notified if your password or other data was leaked from a third-party service.": [ "Du blir varslet hvis passordet ditt eller andre data ble lekket fra en tredjepartstjeneste." ], @@ -12616,6 +13394,9 @@ "Your ${ plan } subscription will be replaced with ${ PASS_SHORT_APP_NAME } Lifetime. The remaining balance of your subscription will be added to your account. ${ PASS_SHORT_APP_NAME } lifetime deal has no renewal price, it's a one-time payment for lifetime access to ${ PASS_SHORT_APP_NAME }.": [ "Ditt ${ plan }-abonnement vil bli erstattet med ${ PASS_SHORT_APP_NAME } Lifetime. Den gjenværende saldoen på abonnementet ditt vil bli lagt til kontoen din. ${ PASS_SHORT_APP_NAME } Lifetime har ingen fornyelsespris, det er en engangsbetaling for livstidstilgang til ${ PASS_SHORT_APP_NAME }." ], + "Your ${ planDisplayName } plan doesn’t just keep your business data and communications safe. It supports your compliance objectives, makes your business stand out, and keeps your team connected.": [ + "Planen din ${ planDisplayName } holder ikke bare forretningsdata og kommunikasjon trygg. Den støtter samsvarsmålene dine, får virksomheten til å skille seg ut og holder teamet ditt tilkoblet." + ], "Your ${ VPN_APP_NAME } and ${ MAIL_APP_NAME } accounts are linked. To delete them both, please sign in at ${ loginLink } and delete your account there.": [ "Dine ${ VPN_APP_NAME }- og ${ MAIL_APP_NAME }-kontoer er koblet. For å slette de begge, logg på ${ loginLink } og slett din konto der." ], @@ -12691,12 +13472,18 @@ "Your recent changes have been published. They will be visible to users in the next few hours.": [ "Dine nylige endringer er publisert. De vil være synlige for brukere i løpet av de neste timene." ], + "Your recovery file will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset.": [ + "Gjenopprettingsfilen din vil gjenopprette tilgangen til e-poster, kontakter, filer, passord og andre krypterte data på kontoen din etter en tilbakestilling av passordet." + ], "Your recovery phrase": [ "Din gjenopprettingsfrase" ], "Your recovery phrase is a series of 12 randomly generated words in a specific order.": [ "Gjenopprettingsfrasen din er en serie på 12 tilfeldig genererte ord i en bestemt rekkefølge." ], + "Your recovery phrase will allow you to sign in and recover your data if you get locked out of your ${ BRAND_NAME } Account. It is composed of 12 words and acts like a backup password.": [ + "Gjenopprettingsfrasen din lar deg logge på og gjenopprette dataene dine hvis du blir låst ute av ${ BRAND_NAME }-kontoen din. Den består av 12 ord og fungerer som et reservepassord." + ], "Your scheduled plan starts on ${ renewalTime } and will auto-renew every ${ cycle } month.": [ "Den planlagte planen starter på ${ renewalTime } og fornyes automatisk hver ${ cycle } måned.", "Den planlagte planen starter på ${ renewalTime } og fornyes automatisk hver ${ cycle } måned." @@ -13296,6 +14083,15 @@ "${ Brand } ending with ${ Last4 }": [ "${ Brand } slutter på ${ Last4 }" ], + "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME } Desktop app": [ + "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME }-skrivebordsapp" + ], + "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME } desktop app": [ + "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME }-skrivebordsapp" + ], + "${ BRAND_NAME } for Business": [ + "${ BRAND_NAME } for Business" + ], "${ BRAND_NAME } username": [ "${ BRAND_NAME }-brukernavn" ], @@ -13327,6 +14123,15 @@ "${ pricePerMonthWithCurrency } / month": [ "${ pricePerMonthWithCurrency }/måned" ], + "${ PROTON_SENTINEL_NAME } account protection": [ + "${ PROTON_SENTINEL_NAME }-kontobeskyttelse" + ], + "${ PROTON_SENTINEL_NAME } protection": [ + "${ PROTON_SENTINEL_NAME }-beskyttelse" + ], + "${ value.length }/${ maxLength } characters": [ + "${ value.length }/${ maxLength } tegn" + ], "(Temporarily unavailable. Please check back later.)": [ "(Midlertidig utilgjengelig. Kom tilbake senere)." ], @@ -13453,6 +14258,9 @@ "Allow notifications by email": [ "Tillat varslinger via e-post" ], + "Allow QR code sign-in": [ + "Tillat pålogging med QR-kode" + ], "Allow random passwords": [ "Tillat tilfeldige passord" ], @@ -13558,6 +14366,9 @@ "Automated confirmations and alerts": [ "Automatiserte bekreftelser og varsler" ], + "Automatic email forwarding": [ + "Automatisk videresending av e-post" + ], "Automatically save contacts": [ "Lagre automatisk kontakter" ], @@ -13597,9 +14408,15 @@ "Block malware, ads and trackers": [ "Blokkér skadevare, reklamer og sporere" ], + "Block trackers and marketers": [ + "Blokkér sporere og markedsførere" + ], "Bookings, billings, and orders": [ "Reservasjoner, faktureringer og ordrer" ], + "Brand your workspace": [ + "Merk arbeidsplassen din" + ], "Browser": [ "Nettleser" ], @@ -13633,6 +14450,9 @@ "Cash": [ "Kontant" ], + "Catch-all email address": [ + "Catch-all e-postadresse" + ], "Categories": [ "Kategorier" ], @@ -13705,6 +14525,9 @@ "Confirm login password": [ "Bekreft påloggingspassord" ], + "Confirm MX records added": [ + "Bekreft at MX-poster er lagt til" + ], "Confirm new password": [ "Bekreft nytt passord" ], @@ -13768,9 +14591,19 @@ "Current email": [ "Nåværende e-post" ], + "Custom domain": [ + "Egendefinert domene" + ], + "Custom email domain": [ + "Egendefinert e-postdomene", + "Egendefinerte e-postdomener" + ], "Daily email notifications": [ "Daglige e-postvarslinger" ], + "Data harvesting": [ + "Datainnsamling" + ], "Date": [ "Dato" ], @@ -13840,6 +14673,9 @@ "Don't ask again": [ "Ikke spør igjen" ], + "Don't keep versions": [ + "Ikke behold versjoner" + ], "Don't show this again": [ "Ikke vis dette igjen" ], @@ -13855,15 +14691,27 @@ "e.g. example.com": [ "f.eks. eksempel.com" ], + "Early access": [ + "Tidlig tilgang" + ], "Email": [ "E-post" ], "Email address": [ "E-postadresse" ], + "Email addresses": [ + "E-postadresser" + ], + "Email addresses per user": [ + "E-postadresser per bruker" + ], "Email or username": [ "E-post eller brukernavn" ], + "Email with @yourcompany.com domain": [ + "E-post med @dittfirma.com-domene" + ], "Emails (all messages)": [ "E-poster (alle meldinger)" ], @@ -13882,6 +14730,9 @@ "Enable ${ DARK_WEB_MONITORING_NAME } for ${ domain.DomainName }": [ "Aktiver ${ DARK_WEB_MONITORING_NAME } for ${ domain.DomainName }" ], + "Enable categories": [ + "Aktiver kategorier" + ], "Enabled": [ "Aktivert" ], @@ -13897,6 +14748,9 @@ "End weekday": [ "Slutt ukedag" ], + "End-to-end encryption": [ + "Ende-til-ende-kryptering" + ], "Enter code": [ "Skriv inn koden" ], @@ -13954,6 +14808,9 @@ "Folder location": [ "Mappeplassering" ], + "Folders, labels, and filters": [ + "Mapper, etiketter og filtre" + ], "Font family": [ "Skriftfamilie" ], @@ -13972,6 +14829,9 @@ "Free": [ "Free" ], + "Free VPN included": [ + "Gratis VPN inkludert" + ], "From: ${ fromEmail }": [ "Fra: ${ fromEmail }" ], @@ -14020,6 +14880,9 @@ "Highest VPN speed": [ "Høyeste VPN-hastighet" ], + "Host name": [ + "Vertsnavn" + ], "I understand that I'll need to add this email address to the other account immediately, to avoid losing this address permanently.": [ "Jeg forstår at jeg må legge til denne e-postadressen i den andre kontoen umiddelbart, for å unngå å miste denne adressen permanent." ], @@ -14137,6 +15000,9 @@ "Main reason for cancelling": [ "Hovedårsaken til kanselleringen" ], + "Make sure you have access to a recovery email or phone, and have a data recovery option.": [ + "Sørg for at du har tilgang til en gjenopprettings-e-postadresse eller telefonnummer, og at du har et alternativ for datagjenoppretting." + ], "Manage categories": [ "Administrer kategorier" ], @@ -14188,6 +15054,9 @@ "Moderate NAT": [ "Moderat NAT" ], + "Monthly": [ + "Månedlig" + ], "More payment methods": [ "Flere betalingsmåter" ], @@ -14206,6 +15075,9 @@ "Must have at least ${ MIN_PASSWORD_LENGTH } characters": [ "Må minst ha ${ MIN_PASSWORD_LENGTH } tegn" ], + "MX records": [ + "MX-poster" + ], "Name": [ "Navn" ], @@ -14236,6 +15108,9 @@ "Newsletters": [ "Nyhetsbrev" ], + "No": [ + "Nei" + ], "No (users cannot use the app until a vault is shared with them)": [ "Nei (brukere kan ikke bruke appen før et hvelv er delt med dem)" ], @@ -14269,12 +15144,18 @@ "Online privacy for your whole family": [ "Personvern på nettet for hele familien din" ], + "Online productivity suite": [ + "Produktivitetspakke på nett" + ], "Only a single personal vault can be created": [ "Kun ett personlig hvelv kan opprettes" ], "Only available on ${ PASS_SHORT_APP_NAME } paid plans": [ "Kun tilgjengelig på betalte planer for ${ PASS_SHORT_APP_NAME }" ], + "Open-source code": [ + "Åpen kildekode" + ], "OpenVPN password": [ "OpenVPN-passord" ], @@ -14335,6 +15216,9 @@ "Pending": [ "Ventende" ], + "Personal and work emails, plus important updates and notifications": [ + "Personlige og jobbrelaterte e-poster, pluss viktige oppdateringer og varsler" + ], "Phone number": [ "Telefonnummer" ], @@ -14368,12 +15252,21 @@ "Postal code": [ "Postnummer" ], + "Premium features included": [ + "Premium-funksjoner inkludert" + ], "Previous password": [ "Forrige passord" ], "Primary": [ "Primær" ], + "Priority": [ + "Prioritet" + ], + "Priority support": [ + "Prioritert kundestøtte" + ], "Promotions": [ "Kampanjer" ], @@ -14383,6 +15276,9 @@ "Proration": [ "Proporsjonal fakturering" ], + "Protected by Swiss privacy laws": [ + "Beskyttet av sveitsiske personvernlover" + ], "Protection mode": [ "Beskyttelsesmodus" ], @@ -14458,6 +15354,9 @@ "Secure password generator": [ "Sikker passordgenerator" ], + "See your team's availability": [ + "Se teamets tilgjengelighet" + ], "Select Linux package format": [ "Velg Linux-pakkeformat" ], @@ -14491,6 +15390,9 @@ "Shared between ${ MAIL_SHORT_APP_NAME }, ${ CALENDAR_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME }, and ${ WALLET_SHORT_APP_NAME }.": [ "Delt mellom ${ MAIL_SHORT_APP_NAME }, ${ CALENDAR_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME } og ${ WALLET_SHORT_APP_NAME }." ], + "Short domain @pm.me": [ + "Kort domene @pm.me" + ], "Show ${ n } administrator": [ "Vis ${ n } administrator", "Vis ${ n } administratorer" @@ -14579,6 +15481,9 @@ "Storage": [ "Lagringsplass" ], + "Storage per user": [ + "Lagringsplass per bruker" + ], "Street address": [ "Gateadresse" ], @@ -14591,6 +15496,9 @@ "Subscription options": [ "Abonnementalternativer" ], + "Support for multiple users": [ + "Støtte for flere brukere" + ], "Swipe left action": [ "Sveip til venstre handling" ], @@ -14609,6 +15517,9 @@ "Then": [ "Deretter" ], + "Third-party ads": [ + "Tredjepartsannonser" + ], "Thomas": [ "Thomas" ], @@ -14684,6 +15595,9 @@ "Use folder colors": [ "Bruk mappefarger" ], + "Use your own email domain": [ + "Bruk ditt eget e-postdomene" + ], "User": [ "Bruker" ], @@ -14711,6 +15625,9 @@ "Verify keys with Key Transparency": [ "Verifiser nøkler med Key Transparency" ], + "Version history": [ + "Versjonshistorikk" + ], "Video conferencing with Zoom": [ "Videokonferanser med Zoom" ], @@ -14723,6 +15640,9 @@ "Vulnerable password": [ "Sårbart passord" ], + "We securely stored recovery information on this device.": [ + "Vi lagret gjenopprettingsinformasjonen sikkert på denne enheten." + ], "Weak": [ "Svak" ], @@ -14750,12 +15670,21 @@ "Without attachment": [ "Uten vedlegg" ], + "Yearly": [ + "Årlig" + ], + "Yearly free storage bonus": [ + "Årlige gratis lagringsbonuser" + ], "Yes": [ "Ja" ], "Yes, I want to permanently delete this account and all its data.": [ "Ja, jeg ønsker å slette denne kontoen og all dataen dens permanent." ], + "You don't have permissions": [ + "Du har ikke tillatelser" + ], "Your activation code:": [ "Din aktiveringskode:" ], @@ -14777,9 +15706,18 @@ "Your plan": [ "Planen din" ], + "Your recovery email": [ + "Gjenopprettings-e-posten din" + ], + "Your recovery phone number": [ + "Telefonnummeret ditt for gjenoppretting" + ], "Your voucher for your reserved ${ BRAND_NAME } email address:": [ "Verdikupongen for din reserverte ${ BRAND_NAME }-e-postadresse:" ], + "Zero-access architecture": [ + "Nulltilgangsarkitektur" + ], "ZIP code": [ "Postnummer" ] @@ -14796,6 +15734,9 @@ ], "Recovery phrase": [ "Gjenopprettingsfrase" + ], + "Set recovery phone number": [ + "Angi telefonnummer for gjenoppretting" ] }, "Label (begin date/advanced search)": { @@ -14837,6 +15778,26 @@ "Legg til følgende TXT-post. Merk: det kan ta flere timer å oppdatere DNS-poster." ] }, + "Label for domain setup": { + "${ capitalizedGroup } record not found": [ + "${ capitalizedGroup }-post ikke funnet" + ], + "Host name": [ + "Vertsnavn" + ], + "Invalid ${ group.name } record found": [ + "Ugyldig ${ group.name }-post funnet" + ], + "Type": [ + "Type" + ], + "Use default value": [ + "Bruk standardverdi" + ], + "Valid ${ group.name } record found": [ + "Gyldig ${ group.name }-post funnet" + ] + }, "Label for new member": { "Admin": [ "Administrator" @@ -15002,6 +15963,9 @@ "data recovery option": [ "alternativ for datagjenoppretting" ], + "Detailed instructions": [ + "Detaljerte instruksjoner" + ], "Details": [ "Detaljer" ], @@ -15176,6 +16140,9 @@ "Upgrade your plan": [ "Oppgrader planen din" ], + "use a data recovery method": [ + "bruk en metode for datagjenoppretting" + ], "Vault": [ "Hvelv" ], @@ -15523,21 +16490,45 @@ "Built-in chat": [ "Innebygd chat" ], + "Cloud storage and file sharing": [ + "Skylagring og fildeling" + ], + "Data retention policies": [ + "Retningslinjer for dataoppbevaring" + ], + "Document and spreadsheet editor": [ + "Dokument- og regnearkredigering" + ], + "Email writing assistant": [ + "Assistent for e-postskriving" + ], "End-to-end encrypted screen sharing and ephemeral in-call chat": [ "Ende-til-ende-kryptert skjermdeling og kortvarig chat under samtaler" ], "Hosts can record meetings locally on their computers": [ "Verter kan ta opp møter lokalt på datamaskinene sine" ], + "Includes Meet Professional": [ + "Inkluderer Meet Professional" + ], "Meeting recording": [ "Opptak av møte" ], "One active meeting at a time": [ "Ett aktivt møte om gangen" ], + "Password manager with team vaults": [ + "Passordbehandler med teamhvelv" + ], + "Private AI Chat (${ LUMO_SHORT_APP_NAME })": [ + "Privat KI-chat (${ LUMO_SHORT_APP_NAME })" + ], "Screen-sharing": [ "Skjermdeling" ], + "Secure mail and calendar": [ + "Sikker e-post og kalender" + ], "Unlimited meetings per day": [ "Ubegrenset antall møter per dag" ], @@ -15552,6 +16543,9 @@ "Video meetings, ${ n } participant": [ "Videomøter, ${ n } deltaker", "Videomøter, ${ n } deltakere" + ], + "VPN with ad-blocker and malware protection": [ + "VPN med annonseblokkering og skadevarebeskyttelse" ] }, "meet_2025: Info": { @@ -16221,6 +17215,9 @@ "99.95% SLA": [ "99,95% SLA" ], + "Access all countries": [ + "Få tilgang til alle land" + ], "Activity logs and policy": [ "Aktivitetslogger og retningslinjer" ], @@ -16242,6 +17239,9 @@ "Advanced network security": [ "Avansert nettverkssikkerhet" ], + "Advanced workspace security": [ + "Avansert sikkerhet på arbeidsområdet" + ], "All ${ BRAND_NAME } products and features": [ "Alle ${ BRAND_NAME }-produkter og tjenester" ], @@ -16400,6 +17400,9 @@ "Multiple admin roles": [ "Flere administratorroller" ], + "No streaming support": [ + "Ingen strømmestøtte" + ], "No-logs policy": [ "Retningslinjer mot loggføring" ], @@ -16566,6 +17569,9 @@ "Unlimited volume/bandwidth": [ "Ubegrenset volum/båndbredde" ], + "Unlock streaming": [ + "Lås opp strømming" + ], "Up to ${ n } user": [ "Opptil ${ n } bruker", "Opptil ${ n } brukere" @@ -17040,6 +18046,10 @@ ] }, "new_plans: Upsell attribute": { + "${ n } country": [ + "${ n } land", + "${ n } land" + ], "Access advanced VPN features": [ "Få tilgang til avanserte VPN-funksjoner" ], @@ -17101,8 +18111,8 @@ "${ app } product updates": [ "${ app } produktoppdateringer" ], - "${ BRAND_NAME } for Business newsletter": [ - "${ BRAND_NAME } nyhetsbrev for virksomheter" + "${ BRAND_NAME } for Business communications": [ + "${ BRAND_NAME } for forretningskommunikasjon" ], "${ BRAND_NAME } important announcements": [ "${ BRAND_NAME } viktige kunngjøringer" @@ -17155,8 +18165,8 @@ "During your first month of using a ${ BRAND_NAME } product": [ "I løpet av den første måneden du bruker et ${ BRAND_NAME }-produkt" ], - "Email subscriptions": [ - "E-post-abonnementer" + "Email communications": [ + "E-postkommunikasjon" ], "In-app notifications": [ "Varslinger i appen" @@ -17747,6 +18757,9 @@ "Plain text": [ "Ren tekst" ], + "Push notifications": [ + "Push-varslinger" + ], "Receive from all": [ "Motta fra alle" ], @@ -17965,6 +18978,11 @@ "PKGBUILD (for andre distribusjoner)" ] }, + "Paragraph": { + "${ BRAND_NAME } is independently funded and operates without advertising. Below are examples of how this independence has been used in practice.": [ + "${ BRAND_NAME } er uavhengig finansiert og opererer uten reklame. Nedenfor finner du eksempler på hvordan denne uavhengigheten har blitt brukt i praksis." + ] + }, "Participant name": { "You": [ "Deg" @@ -18238,14 +19256,14 @@ "per month, billed every two years": [ "per måned, faktureres hvert 2. år" ], - "Preparing your Recovery Kit": [ - "Forbereder gjenopprettingssettet ditt" + "Preparing your recovery phrase": [ + "Forbereder gjenopprettingsfrasen din" ], "Protected by Swiss privacy laws": [ "Beskyttet av sveitsiske personvernlover" ], - "Save your recovery kit to continue": [ - "Lagre gjenopprettingssettet for å fortsette" + "Save your recovery phrase to continue": [ + "Lagre gjenopprettingsfrasen for å fortsette" ], "Secure vault sharing": [ "Sikker hvelvdeling" @@ -18965,6 +19983,9 @@ "Search for an email or IP address": [ "Søk etter en e-postadresse eller IP-adresse" ], + "Search for users or addresses": [ + "Søk etter brukere eller adresser" + ], "Search parent folder": [ "Søk i overordnet mappe" ], @@ -19114,18 +20135,18 @@ ] }, "PQC account key generation": { - "Couldn’t generate keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\n${ settingsLink } and select 'Generate key' for your account and for each address.": [ - "Kunne ikke generere nøkler. For å aktivere postkvantebeskyttelse, må du generere dine nye krypteringsnøkler manuelt.\n\n${ settingsLink } og velge 'Generer nøkkel' for din konto og for hver adresse." + "Couldn’t generate keys. To activate post-quantum protection, you’ll need to finish generating your new post-quantum encryption keys.\n\n${ goToSettingsLink } and select 'Generate missing keys'.": [ + "Kunne ikke generere nøkler. For å aktivere post-kvantebeskyttelse må du fullføre genereringen av de nye post-kvantekrypteringsnøklene.\n\n${ goToSettingsLink } og velg \"generer manglende nøkler\"." ] }, "PQC adress key generation": { - "Couldn’t generate address keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\nGo to ${ settingsLink } and select 'Generate key' for each address.": [ - "Kunne ikke generere adressenøkler. For å aktivere postkvantebeskyttelse, må du generere de nye krypteringsnøklene manuelt.\n\nGå til ${ settingsLink } og velg 'Generer nøkkel' for hver adresse." + "Couldn’t generate address keys. To activate post-quantum protection, you’ll need to finish generating your new post-quantum encryption keys for each address.\n\n${ goToSettingsLink } and select 'Generate missing keys'.": [ + "Kunne ikke generere adressenøkler. For å aktivere post-kvantebeskyttelse må du fullføre genereringen av de nye post-kvantekrypteringsnøklene for hver adresse.\n\n${ goToSettingsLink } og velg \"generer manglende nøkler\"." ] }, "PQC compatibility warning": { - "**You must update all ${ BRAND_NAME } mobile apps**: your new keys won't work on older app versions.": [ - "**Du må oppdatere alle ${ BRAND_NAME }-mobilapper**: de nye nøklene dine vil ikke fungere på eldre appversjoner." + "**You must update all ${ BRAND_NAME } apps**: your new keys won't work on older app versions.": [ + "**Du må oppdatere alle ${ BRAND_NAME }-appene**: de nye nøklene dine vil ikke fungere på eldre appversjoner." ] }, "PQC key generation": { @@ -19384,6 +20405,9 @@ "Verify now": [ "Verifiser nå" ], + "Verify now this recovery email address: ${ emailData.value }": [ + "Verifiser nå denne gjenopprettings-epostadressen: ${ emailData.value }" + ], "Verify recovery email?": [ "Verifisere gjenopprettings-epost?" ], @@ -19427,10 +20451,140 @@ "Verify recovery phone?": [ "Verifisere gjenopprettingstelefon?" ], + "Verify this recovery phone number now: ${ phoneData.value }": [ + "Verifiser dette gjenopprettingstelefonnummert nå: ${ phoneData.value }" + ], "Verifying your phone number increases your account security and allows additional options for recovery.": [ "Bekreftelse av telefonnummeret ditt øker kontosikkerheten og gir flere alternativer for gjenoppretting." ] }, + "Recovery score": { + "${ score } / ${ maxScore } completed": [ + "${ score } / ${ maxScore } fullført" + ], + "Account protection": [ + "Kontobeskyttelse" + ], + "Add more options for stronger protection": [ + "Legg til flere alternativer for sterkere beskyttelse" + ], + "Add more options to avoid getting locked out of your account.": [ + "Legg til flere alternativer for å unngå å bli låst ute av kontoen din." + ], + "Awesome. Keep your options up-to-date for stronger protection.": [ + "Fantastisk. Hold alternativene dine oppdatert for sterkere beskyttelse." + ], + "Good start. Add more options for a stronger protection.": [ + "God start. Legg til flere alternativer for sterkere beskyttelse." + ], + "Great. Add more options for a stronger protection.": [ + "Flott. Legg til flere alternativer for sterkere beskyttelse." + ], + "How you increased your account protection": [ + "Hvordan du økte kontobeskyttelsen din" + ], + "Inactive recovery options": [ + "Inaktive gjenopprettingsalternativer" + ], + "Maximum": [ + "Maksimum" + ], + "Partial": [ + "Delvis" + ], + "Recovery score: ${ score }": [ + "Gjenopprettingspoengsum: ${ score }" + ], + "Require verified password reset option (email or SMS)": [ + "Krev bekreftet alternativ for tilbakestilling av passord (e-post eller SMS)" + ], + "Score: ${ score } / ${ maxScore }": [ + "Poengsum: ${ score } / ${ maxScore }" + ], + "Strong": [ + "Sterk" + ], + "Unprotected": [ + "Ubeskyttet" + ], + "Weak": [ + "Svak" + ] + }, + "Recovery score item": { + "Add emergency contacts": [ + "Legg til nødkontakter" + ], + "Add recovery contacts": [ + "Legg til gjenopprettingskontakter" + ], + "Add recovery email": [ + "Legg til e-post for gjenoppretting" + ], + "Add recovery phone": [ + "Legg til telefonnummer for gjenoppretting" + ], + "Allow data recovery on this device": [ + "Tillat datagjenoppretting på denne enheten" + ], + "Allow password reset from settings": [ + "Tillat tilbakestilling av passord fra innstillinger" + ], + "Allow scanning QR code to sign in": [ + "Tillat skanning av QR-kode for å logge på" + ], + "Data recovery allowed on this device": [ + "Datagjenoppretting tillatt på denne enheten" + ], + "Download recovery file": [ + "Last ned gjenopprettningsfil" + ], + "Email recovery enabled": [ + "E-postgjenoppretting aktivert" + ], + "Emergency contacts added": [ + "Nødkontakter lagt til" + ], + "Enable email recovery": [ + "Aktiver gjenoppretting av e-post" + ], + "Enable recovery by phone": [ + "Aktiver gjenoppretting via telefon" + ], + "Password reset allowed from settings": [ + "Tilbakestilling av passord er tillatt fra innstillingene" + ], + "Password verified": [ + "Passord bekreftet" + ], + "Phone recovery enabled": [ + "Telefongjenoppretting aktivert" + ], + "Recovery contacts added": [ + "Gjenopprettingskontakter lagt til" + ], + "Recovery file downloaded": [ + "Gjenopprettingsfil nedlastet" + ], + "Recovery phrase saved": [ + "Gjenopprettingsfrase lagret" + ], + "Save recovery phrase": [ + "Lagre gjenopprettingsfrasen" + ], + "Sign-in with QR code allowed": [ + "Pålogging ved QR-kode tillatt" + ], + "Verify password": [ + "Bekreft passord" + ], + "Verify recovery email": [ + "Verifiser gjenopprettings-e-post" + ], + "Verify recovery phone": [ + "Verifiser gjenopprettingstelefon" + ] + }, "RecoveryPhrase: Action": { "Continue": [ "Fortsett" @@ -19443,6 +20597,9 @@ ] }, "RecoveryPhrase: Info": { + "**Make sure you keep your recovery phrase accessible after creating it.** For security reasons, we do not store the phrase after saving your changes, and you won’t be able to see it again in the ${ BRAND_NAME } app.": [ + "**Sørg for at du holder gjenopprettingsfrasen tilgjengelig etter at du har opprettet den.** Av sikkerhetshensyn lagrer vi ikke frasen etter at du har lagret endringene, og du vil ikke kunne se den igjen i ${ BRAND_NAME }-appen." + ], "copy recovery phrase": [ "kopier gjenopprettingsfrase" ], @@ -19464,14 +20621,11 @@ "Or ${ downloadRecoveryKitSwitchButton } instead.": [ "Eller ${ downloadRecoveryKitSwitchButton } istedenfor." ], - "Your **Recovery Kit** lets you restore your ${ BRAND_NAME } Account if you’re locked out.": [ - "**Gjenopprettingssettet** lar deg gjenopprette ${ BRAND_NAME }-kontoen din hvis du blir låst ute." + "Your **recovery phrase** lets you restore your ${ BRAND_NAME } Account if you’re locked out.": [ + "**Gjenopprettingsfrasen** lar deg gjenopprette ${ BRAND_NAME }-kontoen din hvis du blir låst ute." ] }, "RecoveryPhrase: Title": { - "Save your Recovery Kit": [ - "Lagre gjenopprettingssettet ditt" - ], "Save your recovery phrase": [ "Lagre gjenopprettingsfrasen din" ] @@ -19864,8 +21018,8 @@ "Back to Safety Review": [ "Tilbake til gjennomgang av sikkerhet" ], - "Because you reset your password, your current Recovery Kit can only be used to recover the data created before your password reset.": [ - "Fordi du tilbakestiller passordet, kan det nåværende gjenopprettingssettet bare brukes til å gjenopprette dataene som ble opprettet før tilbakestillingen av passordet." + "Because you reset your password, your current recovery phrase can only be used to recover the data created before your password reset.": [ + "Fordi du tilbakestilte passordet ditt, kan den nåværende gjenopprettingsfrasen din bare brukes til å gjenopprette dataene som ble opprettet før tilbakestillingen av passordet." ], "Can be used to regain access to your account and data": [ "Kan brukes til å få tilgang til kontoen din og dataene dine" @@ -19894,8 +21048,8 @@ "Download ${ size }": [ "Last ned ${ size }" ], - "Download your Recovery Kit": [ - "Last ned gjenopprettingssettet ditt" + "Download your recovery phrase": [ + "Last ned gjenopprettingsfrasen din" ], "Email address": [ "E-postadresse" @@ -19909,8 +21063,8 @@ "Enable recovery by phone": [ "Aktiver gjenoppretting via telefon" ], - "I understand that I will not be able to recover currently locked data with this Recovery Kit": [ - "Jeg forstår at jeg ikke vil kunne gjenopprette låste data med dette gjenopprettingssettet" + "I understand that I will not be able to recover currently locked data with this recovery phrase": [ + "Jeg forstår at jeg ikke vil kunne gjenopprette data som er låst for øyeblikket med denne gjenopprettingsfrasen" ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in on this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Hvis du glemmer ${ BRAND_NAME }-passordet og må tilbakestille det, gjenopprettes full tilgang til ${ BRAND_NAME }-kontoen neste gang du logger på denne enheten med det nye passordet." @@ -19918,8 +21072,8 @@ "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Hvis du glemmer ${ BRAND_NAME }-passordet og må tilbakestille det, gjenopprettes full tilgang til ${ BRAND_NAME }-kontoen neste gang du logger på denne enheten med det nye passordet." ], - "If you get locked out of your ${ BRAND_NAME } Account, your Recovery Kit will allow you to sign in and recover your data.": [ - "Hvis du blir låst ute av ${ BRAND_NAME }-kontoen din, vil ditt gjenopprettingssett la deg logge på og gjenopprette dataene dine." + "If you get locked out of your ${ BRAND_NAME } Account, your recovery phrase will allow you to sign in and recover your data.": [ + "Hvis du blir låst ute fra ${ BRAND_NAME }-kontoen din, vil gjenopprettingsfrasen din tillate deg å logge på og gjenopprette dataene dine." ], "If you lose your login details and need to reset your account, **it’s imperative** that you have both an **account recovery and data recovery method** in place, otherwise you might not be able to access any of your emails, contacts, files or passwords.": [ "Hvis du mister påloggingsinformasjonen din og trenger å tilbakestille kontoen din, **er det viktig** at du har både en **kontogjenopprettings- og datagjenopprettingsmetode** på plass, ellers kan det hende du ikke får tilgang til noen av e-postene, kontaktene, filene eller passordene dine." @@ -19963,8 +21117,8 @@ "Take action to secure your account": [ "Iverksett tiltak for å sikre kontoen din" ], - "There was an error generating your Recovery Kit": [ - "Det oppstod en feil under generering av gjenopprettingssettet" + "There was an error generating your recovery phrase": [ + "Det oppstod en feil under generering av gjenopprettingsfrasen din" ], "There was an error verifying your email": [ "Det oppstod en feil under bekreftelse av e-posten din" @@ -19993,11 +21147,11 @@ "to recover your account if you're ever locked out": [ "for å gjenopprette kontoen din hvis du noen gang blir utestengt" ], - "Update your Recovery Kit": [ - "Oppdater gjenopprettingssettet ditt" + "Update your recovery phrase": [ + "Oppdater gjenopprettingsfrasen din" ], - "Update your Recovery Kit?": [ - "Oppdatere gjenopprettingssettet ditt?" + "Update your recovery phrase?": [ + "Oppdatere gjenopprettingsfrasen din?" ], "Verify": [ "Verifiser" @@ -20014,8 +21168,8 @@ "Verify your recovery phone number": [ "Verifiser telefonnummeret for gjenoppretting" ], - "We encountered an error while generating your Recovery Kit. Please try again later, or contact support if the issue continues.": [ - "Det oppstod en feil under generering av gjenopprettingssettet. Prøv på nytt senere, eller kontakt kundestøtte hvis problemet vedvarer." + "We encountered an error while generating your recovery phrase. Please try again later, or contact support if the issue continues.": [ + "Det oppstod en feil under genereringen av gjenopprettingsfrasen din. Prøv på nytt senere, eller kontakt brukerstøtte hvis problemet vedvarer." ], "We encountered an error while verifying your email. Please try again later, or contact support if the issue continues.": [ "Vi oppdaget en feil under bekreftelsen av e-posten din. Prøv igjen senere, eller kontakt brukerstøtte hvis problemet vedvarer." @@ -20038,8 +21192,8 @@ "You can disable this at any time.": [ "Du kan deaktivere dette når som helst." ], - "You can use the recovery phrase in this Recovery Kit to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ - "Du kan bruke gjenopprettingsfrasen i dette gjenopprettingssettet til å gjenopprette kontoen din fullstendig når du tilbakestiller passordet, så sørg for at du oppbevarer den på et trygt sted." + "You can use the recovery phrase in this recovery phrase to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ + "Du kan bruke gjenopprettingsfrasen til å gjenopprette kontoen din fullstendig når du tilbakestiller passordet, så sørg for at du oppbevarer den et trygt sted." ], "You can use your email to regain access to your account if you forget your password.": [ "Du kan bruke e-posten din til å få tilgang til kontoen igjen hvis du glemmer passordet ditt." @@ -20050,8 +21204,8 @@ "You can use your recovery phone to regain access to your account if you forget your password.": [ "Du kan bruke gjenopprettingstelefonen til å få tilgang til kontoen din igjen hvis du glemmer passordet ditt." ], - "You have previously downloaded a Recovery Kit. Downloading a new one will **deactivate the old one**.": [ - "Du har tidligere lastet ned et gjenopprettingssett. Nedlasting av en ny vil **deaktivere det gamle**." + "You have previously downloaded a recovery phrase. Downloading a new one will **deactivate the old one**.": [ + "Du har tidligere lastet ned en gjenopprettingsfrase. Hvis du laster ned en ny, **deaktiveres den gamle**." ], "You have recommended actions to safeguard your account further.": [ "Du har anbefalte tiltak for å beskytte kontoen din ytterligere." @@ -20116,12 +21270,6 @@ "Your recovery email is set": [ "Gjenopprettings-e-posten din er angitt" ], - "Your Recovery Kit": [ - "Gjenopprettingssettet ditt" - ], - "Your Recovery Kit is set": [ - "Gjenopprettingssettet ditt er angitt" - ], "Your recovery methods": [ "Gjenopprettingsmetodene dine" ], @@ -20142,6 +21290,242 @@ ], "Your recovery phone number is:": [ "Telefonnummeret ditt for gjenoppretting er:" + ], + "Your recovery phrase": [ + "Din gjenopprettingsfrase" + ], + "Your recovery phrase is set": [ + "Gjenopprettingsfrasen din er angitt" + ] + }, + "safety_review": { + "${ BRAND_NAME } Account email": [ + "${ BRAND_NAME }-konto e-post" + ], + "Account protection": [ + "Kontobeskyttelse" + ], + "Add": [ + "Legg til" + ], + "Add an emergency contact": [ + "Legg til en nødkontakt" + ], + "Add emergency contacts": [ + "Legg til nødkontakter" + ], + "Add options": [ + "Legg til alternativer" + ], + "Add people who you trust and can contact easily. Your emergency contact will be able to access your account and reset your password for you if needed.": [ + "Legg til personer du stoler på og enkelt kan kontakte. Nødkontakten din vil kunne få tilgang til kontoen din og tilbakestille passordet for deg om nødvendig." + ], + "Add people you trust and can contact easily. They will be able to help you unlock your data after you reset your password.": [ + "Legg til personer du stoler på og enkelt kan kontakte. De vil kunne hjelpe deg med å låse opp dataene dine etter at du har tilbakestilt passordet." + ], + "Add phone number": [ + "Legg til telefonnummer" + ], + "Add recovery contacts": [ + "Legg til gjenopprettingskontakter" + ], + "Add recovery email": [ + "Legg til e-post for gjenoppretting" + ], + "Add recovery phone": [ + "Legg til telefonnummer for gjenoppretting" + ], + "Added emergency contacts": [ + "La til nødkontakter" + ], + "Added recovery contacts": [ + "La til gjenopprettingskontakter" + ], + "Added recovery email": [ + "La til e-post for gjenoppretting" + ], + "Added recovery phone": [ + "La til telefonnummer for gjenoppretting" + ], + "Allow": [ + "Tillat" + ], + "Allow data recovery from this device": [ + "Tillat datagjenoppretting fra denne enheten" + ], + "Allow password reset from the settings": [ + "Tillat tilbakestilling av passord fra innstillingene" + ], + "Allow recovery by email": [ + "Tillat gjenoppretting ved e-post" + ], + "Allow recovery by phone": [ + "Tillat gjenoppretting ved telefon" + ], + "Allow scanning a QR code to sign in": [ + "Tillat skanning av en QR-kode for å logge på" + ], + "Allow trusted friends to unlock your data": [ + "Tillat at betrodde venner låser opp dataene dine" + ], + "Back to ${ backLink.appNameString }": [ + "Tilbake til ${ backLink.appNameString }" + ], + "Congratulations": [ + "Gratulerer" + ], + "Didn’t receive it? ${ sendANewCode }": [ + "Fikk du ikke koden? ${ sendANewCode }" + ], + "Done": [ + "Fullført" + ], + "Download": [ + "Last ned" + ], + "Download recovery file": [ + "Last ned gjenopprettningsfil" + ], + "Downloaded recovery file": [ + "Nedlastet gjenopprettningsfil" + ], + "Emergency contacts enabled": [ + "Nødkontakter aktivert" + ], + "Enable device recovery": [ + "Aktiver enhetsgjenoppretting" + ], + "Enable email recovery": [ + "Aktiver gjenoppretting av e-post" + ], + "Enable emergency contacts": [ + "Aktiver nødkontakter" + ], + "Enable password reset from settings": [ + "Aktiver tilbakestilling av passord fra innstillingene" + ], + "Enable phone recovery": [ + "Aktiver telefongjenoppretting" + ], + "Enable QR code sign-in": [ + "Aktiver pålogging ved QR-kode" + ], + "Enabled device recovery": [ + "Aktivert enhetsgjenoppretting" + ], + "Enabled email recovery": [ + "E-postgjenoppretting aktivert" + ], + "Enabled password reset from settings": [ + "Aktiverte tilbakestilling av passord fra innstillingene" + ], + "Enabled phone recovery": [ + "Aktiverte telefongjenoppretting" + ], + "Enabled QR code sign-in": [ + "Aktiverte pålogging ved QR-kode" + ], + "Got it": [ + "Skjønner" + ], + "Here's how you increased your account protection:": [ + "Hvordan du økte kontobeskyttelsen din:" + ], + "If you forget your password, you can sign in using a QR code. All you need is to be signed in to a ${ BRAND_NAME } service on another device.": [ + "Hvis du glemmer passordet ditt, kan du logge på med en QR-kode. Alt du trenger å gjøre er å være logget på en ${ BRAND_NAME }-tjeneste på en annen enhet." + ], + "If you get locked out of your ${ BRAND_NAME } Account, it will allow you to sign in and recover your data. It’s the only way to instantly restore everything, so make sure you keep it somewhere safe.": [ + "Hvis du blir låst ute fra ${ BRAND_NAME }-kontoen din, kan du logge på og gjenopprette dataene dine. Det er den eneste måten å gjenopprette alt umiddelbart, så sørg for at du oppbevarer den et trygt sted." + ], + "Later": [ + "Senere" + ], + "Protect your legacy with Emergency Access": [ + "Beskytt arven din med nødtilgang" + ], + "Save recovery phrase": [ + "Lagre gjenopprettingsfrasen" + ], + "Saved recovery phrase": [ + "Lagret gjenopprettingsfrase" + ], + "They must already have a ${ BRAND_NAME } Account.": [ + "De må allerede ha en ${ BRAND_NAME }-konto." + ], + "They will not be able to see or access your data.": [ + "De vil ikke kunne se eller få tilgang til dataene dine." + ], + "This will let you quickly access your ${ BRAND_NAME } Account so you can change your password.": [ + "Dette gir deg rask og sikker tilgang til ${ BRAND_NAME }-kontoen din, slik at du kan endre passordet ditt." + ], + "This will let you reset your account password if you’ve lost it, but are still signed in to ${ BRAND_NAME }. It’s often the easiest way to recover your account if you’re signed in.": [ + "Dette lar deg tilbakestille kontopassordet ditt hvis du har mistet det, mens du fortsatt er logget på ${ BRAND_NAME }. Det er ofte den enkleste måten å gjenopprette kontoen din på hvis du er logget på." + ], + "This will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset.": [ + "Dette vil gjenopprette tilgangen til e-poster, kontakter, filer, passord og andre krypterte data på kontoen din etter en tilbakestilling av passord." + ], + "To make sure the email address is yours, enter the verification code sent to ${ boldEmail }.": [ + "For å være sikker på at e-postadressen er din, skriv inn verifiseringskoden som ble sendt til ${ boldEmail }." + ], + "To make sure the phone number is yours, enter the verification code sent to ${ boldPhoneNumber }.": [ + "For å være sikker på at telefonnummeret er ditt, skriv inn verifiseringskoden som ble sendt til ${ boldPhoneNumber }." + ], + "To make sure this address is really yours, we’ll send an email with a verification link.": [ + "For å forsikre oss om at denne adressen virkelig er din, sender vi deg en e-post med en bekreftelseskobling." + ], + "Upgrade your plan to enable Emergency Access to your account. This will allow you to designate 1 to 5 people who will be able to reset your password for you.": [ + "Oppgrader planen din for å aktivere nødtilgang til kontoen. Dette lar deg utpeke 1 til 5 personer som kan tilbakestille passordet ditt for deg." + ], + "Verified password": [ + "Bekreftet passord" + ], + "Verified recovery email": [ + "Bekreftet gjenopprettings-e-postadresse" + ], + "Verified recovery phone": [ + "Verifisert gjenopprettingstelefon" + ], + "Verify": [ + "Verifiser" + ], + "Verify password": [ + "Bekreft passord" + ], + "Verify recovery email": [ + "Verifiser gjenopprettings-e-post" + ], + "Verify recovery phone": [ + "Verifiser gjenopprettingstelefon" + ], + "Verify your recovery email": [ + "Bekreft gjenopprettings-e-postadressen din" + ], + "Verify your recovery phone": [ + "Bekreft gjenopprettingstelefonen din" + ], + "You can save a data backup on this device. This will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset, simply by signing in on this device.": [ + "Du kan lagre en sikkerhetskopi av dataene på denne enheten. Dette vil gjenopprette tilgangen til e-poster, kontakter, filer, passord og andre krypterte data på kontoen din etter en tilbakestilling av passordet, ganske enkelt ved å logge på denne enheten." + ], + "You can use email verification to regain access to your account if you forget your password.": [ + "Du kan bruke e-postbekreftelse for å få tilgang til kontoen din igjen hvis du glemmer passordet ditt." + ], + "You can use SMS verification to regain access to your account if you forget your password.": [ + "Du kan bruke SMS-verifisering for å få tilgang til kontoen din igjen hvis du glemmer passordet ditt." + ], + "You can use your recovery email to regain access to your account if you forget your password.": [ + "Du kan bruke gjenopprettings-e-postadressen din for å få tilgang til kontoen igjen hvis du glemmer passordet." + ], + "You can use your recovery phone to regain access to your account if you forget your password.": [ + "Du kan bruke gjenopprettingstelefonen til å få tilgang til kontoen din igjen hvis du glemmer passordet ditt." + ], + "You don’t need to open or read the file—just download it and store it somewhere safe.": [ + "Du trenger ikke å åpne eller lese filen – bare last den ned og oppbevar den et trygt sted." + ], + "Your recovery checklist": [ + "Sjekklisten din for gjenoppretting" + ], + "Your security setup": [ + "Sikkerhetsoppsettet ditt" ] }, "saml: Action": { @@ -20347,6 +21731,17 @@ "Ingen resultater funnet" ] }, + "Sentinel banner": { + "To ensure the highest possible security of your account, disable recovery via email and SMS.": [ + "For å sikre best mulig sikkerhet for kontoen din, deaktiver gjenoppretting via e-post og SMS." + ], + "To make sure that you can always access your ${ BRAND_NAME } Account, download your recovery phrase.": [ + "For å sikre at du alltid har tilgang til ${ BRAND_NAME }-kontoen, last ned gjenopprettingsfrasen din." + ], + "You have recommended actions from ${ PROTON_SENTINEL_NAME }": [ + "Du har anbefalte handlinger fra ${ PROTON_SENTINEL_NAME }" + ] + }, "Server-Info": { "active": [ "aktiv" @@ -20618,6 +22013,9 @@ ] }, "session_recovery:settings:info": { + "To disallow password reset from settings, you must save your recovery phrase.": [ + "For å forhindre tilbakestilling av passord fra innstillingene, må du lagre gjenopprettingsfrasen." + ], "To disallow password reset, you must have a recovery method set up.": [ "For å forby tilbakestilling av passord, må du ha konfigurert en gjenopprettingsmetode." ], @@ -21544,11 +22942,35 @@ ] }, "Spotlight": { + "Assign delegated roles": [ + "Tildel delegerte roller" + ], + "Assign roles": [ + "Tildel roller" + ], + "Click a user's name to manage their role and permissions.": [ + "Klikk på en brukers navn for å administrere rollen og tillatelsene deres." + ], + "Click Edit to assign roles to this group and manage member access automatically.": [ + "Klikk på Rediger for å tilordne roller til denne gruppen og administrere medlemstilgang automatisk." + ], "Earn up to ${ maxRewardAmount } in credit": [ "Tjen opptil ${ maxRewardAmount } i kreditt" ], "Get credits when the person you invite subscribes to a ${ BRAND_NAME } plan.": [ "Få kreditter når personen du inviterer abonnerer på en ${ BRAND_NAME }-plan." + ], + "New: Roles and permissions tab": [ + "Nytt: fanen for roller og tillatelser" + ], + "Open this tab to grant specific permissions without full admin access.": [ + "Åpne denne fanen for å gi spesifikke tillatelser uten full administratortilgang." + ], + "User roles available": [ + "Tilgjengelige brukerroller" + ], + "You can now assign roles to individual users from this tab.": [ + "Du kan nå tilordne roller til individuelle brukere fra denne fanen." ] }, "sso": { @@ -21838,6 +23260,60 @@ "Kansellerer abonnementet ditt, vent litt" ] }, + "Status": { + "${ count } person": [ + "${ count } person", + "${ count } personer" + ], + "Add a phone number": [ + "Legg til et telefonnummer" + ], + "Add an email address": [ + "Legg til en e-postadresse" + ], + "Available on this device": [ + "Tilgjengelig på denne enheten" + ], + "Disable recovery by email": [ + "Deaktiver gjenoppretting via e-post" + ], + "Disable recovery by phone": [ + "Deaktiver gjenoppretting via telefon" + ], + "Generate a recovery phrase": [ + "Generer en gjenopprettingsfrase" + ], + "Last changed ${ formattedDate }": [ + "Sist endret ${ formattedDate }" + ], + "Last updated ${ formattedUpdateDate }": [ + "Sist oppdatert ${ formattedUpdateDate }" + ], + "Not saved": [ + "Ikke lagret" + ], + "Off": [ + "Av" + ], + "On": [ + "På" + ], + "Outdated": [ + "Utdatert" + ], + "Saved": [ + "Lagret" + ], + "Unverified": [ + "Ikke verifisert" + ], + "Verified": [ + "Verifisert" + ], + "Verify ${ value }": [ + "Verifiser ${ value }" + ] + }, "Step in filter modal": { "Actions": [ "Handlinger" @@ -22139,6 +23615,12 @@ ] }, "Subscription reminder": { + "${ BRAND_NAME } Scribe writing assistant": [ + "${ BRAND_NAME } Scribe-skriveassistent" + ], + "${ CALENDAR_APP_NAME }, ${ DRIVE_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME }, ${ VPN_SHORT_APP_NAME }, ${ MEET_SHORT_APP_NAME }, and ${ LUMO_APP_NAME } with premium features": [ + "${ CALENDAR_APP_NAME }, ${ DRIVE_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME }, ${ VPN_SHORT_APP_NAME }, ${ MEET_SHORT_APP_NAME }, og ${ LUMO_APP_NAME } med premiumfunksjoner" + ], "${ CALENDAR_APP_NAME }, ${ DRIVE_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME }, and ${ VPN_SHORT_APP_NAME } with premium features": [ "${ CALENDAR_APP_NAME }, ${ DRIVE_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME }, og ${ VPN_SHORT_APP_NAME } med premiumfunksjoner" ], @@ -22397,6 +23879,10 @@ "Version history": [ "Versjonshistorikk" ], + "Video meetings, up to ${ PAID_PREMIUM_MAX_PARTICIPANTS } participant": [ + "Videomøter, opptil ${ PAID_PREMIUM_MAX_PARTICIPANTS } deltaker", + "Videomøter, opptil ${ PAID_PREMIUM_MAX_PARTICIPANTS } deltakere" + ], "Watch the interview": [ "Se intervjuet" ], @@ -22512,12 +23998,54 @@ ] }, "Subtitle": { + "${ DRIVE_PLUS_NAME } offers 1 TB storage for your files and photos. You are also eligible for yearly storage bonuses.": [ + "${ DRIVE_PLUS_NAME } tilbyr 1 TB lagringsplass for filene og bildene dine. Du er også kvalifisert for årlige lagringsbonuser." + ], + "${ DRIVE_PLUS_NAME } offers 200 GB storage for your files and photos. You are also eligible for yearly storage bonuses.": [ + "${ DRIVE_PLUS_NAME } tilbyr 200 GB lagringsplass for dine filer og bilder. Du er også kvalifisert for årlige lagringsbonuser." + ], + "${ planTitle } gives you access to all apps and premium features. Privacy is built-in so you can get on with it, knowing your data and identity are safe.": [ + "${ planTitle } gir deg tilgang til alle apper og premiumfunksjoner. Personvern er innebygd, slik at du kan fortsette med det, vel vitende om at dataene og identiteten din er trygg." + ], + "${ planTitle } gives you all apps, all features, early access to new releases, and everything you need to be in control of your data and its security.": [ + "${ planTitle } gir deg alle apper, alle funksjoner, tidlig tilgang til nye utgivelser og alt du trenger for å ha kontroll over dataene dine og sikkerheten." + ], + "${ planTitle } gives you unlimited privacy and more storage for up to 2 people.": [ + "${ planTitle } gir deg ubegrenset privatliv og mer lagringsplass for opptil 2 personer." + ], + "${ planTitle } gives your team all the collaboration tools they need to be productive and organized in their work, while safeguarding your business.": [ + "${ planTitle } gir teamet ditt alle samarbeidsverktøyene de trenger for å være produktive og organiserte i arbeidet sitt, samtidig som det beskytter virksomheten din." + ], + "${ planTitle } gives your team what they need to be more productive and organized in their work with access to all ${ BRAND_NAME } apps and their advanced features.": [ + "${ planTitle } gir teamet ditt det de trenger for å være mer produktive og organiserte i arbeidet med tilgang til alle ${ BRAND_NAME }-apper og deres avanserte funksjoner." + ], + "${ planTitle } gives your team what they need to be more productive, organized, and in control of their inbox, schedule, and more.": [ + "${ planTitle } gir teamet ditt det de trenger for å være mer produktive, organiserte og ha kontroll over innboksen, tidsplanen og mer." + ], + "${ planTitle } goes beyond the basics to help you be more productive, organized, and in control of your inbox, email identity, and more.": [ + "${ planTitle } går utover det grunnleggende for å hjelpe deg med å være mer produktiv, organisert og ha kontroll over innboksen, e-postidentiteten og mer." + ], + "${ planTitle } helps you ensure that each of your family members — and their data — are protected whenever they’re online.": [ + "${ planTitle } hjelper deg med å sikre at hvert av familiemedlemmene dine - og deres data - er beskyttet når de er på nett." + ], + "Compare the key differences that matter for your business.": [ + "Sammenlign de viktigste forskjellene som er viktige for din bedrift." + ], "Free forever": [ "Gratis for alltid" ], "per month, billed annually": [ "per måned, faktureres årlig" ], + "Save 50% for 1 year, and keep full access": [ + "Spar 50 % i 1 år, og behold full tilgang" + ], + "Save 50% for 6 months, and keep full access": [ + "Spar 50 % i 6 måneder, og behold full tilgang" + ], + "See how ${ MAIL_APP_NAME } compares, and why our independence makes a difference.": [ + "Se hvordan ${ MAIL_APP_NAME } er sammenlignet, og hvorfor vår uavhengighet utgjør en forskjell." + ], "View VPN session details for your organization.": [ "Vis VPN-øktdetaljer for organisasjonen din." ] @@ -22526,6 +24054,9 @@ "Account deleted. Signing out...": [ "Konto slettet. Logger av..." ], + "Activation link copied to clipboard": [ + "Aktiveringskobling kopiert til utklippstavlen" + ], "Address added": [ "Adresse lagt til" ], @@ -22649,9 +24180,6 @@ "Organization logo updated": [ "Organisasjonslogo oppdatert" ], - "Organization name set": [ - "Organisasjonsnavn angitt" - ], "Organization name updated": [ "Organisasjonsnavn oppdatert" ], @@ -22841,6 +24369,9 @@ ], "/user per month": [ "/bruker per måned" + ], + "/year": [ + "/år" ] }, "Suffix for price": { @@ -22870,6 +24401,14 @@ "Sikre filene dine med kryptert skylagring. Inkluderer versjonshistorikk, kryptert fildeling og mer." ] }, + "Tab": { + "For personal use": [ + "Til personlig bruk" + ], + "For professional use": [ + "For profesjonell bruk" + ] + }, "Tab in domain modal": { "Addresses": [ "Adresser" @@ -22958,6 +24497,14 @@ "Ingen SMTP-tokener funnet" ] }, + "Temporary need": { + "Continue cancelling": [ + "Fortsett avbestillingen" + ], + "Keep current plan": [ + "Behold gjeldende plan" + ] + }, "Theme": { "Auto": [ "Auto" @@ -23137,12 +24684,18 @@ "Actions": [ "Handlinger" ], + "Activate multi-user support": [ + "Aktiver støtte for flere brukere" + ], "Activate organization key": [ "Aktiver organisasjonsnøkkel" ], "Activate user": [ "Aktiver bruker" ], + "Activate your email": [ + "Aktiver e-posten din" + ], "Activity monitor": [ "Aktivitetsovervåking" ], @@ -23153,12 +24706,21 @@ "Add a custom logo": [ "Legg til en tilpasset logo" ], + "Add a recovery contact": [ + "Legg til en gjenopprettingskontakt" + ], "Add address": [ "Legg til adresse" ], + "Add an emergency contact": [ + "Legg til en nødkontakt" + ], "Add another notification to remind you of this event": [ "Legg til en ny varsling for å minne deg om denne hendelsen" ], + "Add categories": [ + "Legg til kategorier" + ], "Add contact group name": [ "Legg til navn på kontaktgruppen" ], @@ -23219,6 +24781,9 @@ "Address and key verification": [ "Adresse og nøkkelverifisering" ], + "Advanced recovery options": [ + "Avanserte gjenopprettingsalternativer" + ], "Allocate storage": [ "Tildel lagring" ], @@ -23237,9 +24802,6 @@ "An address for each role": [ "En adresse for hver rolle" ], - "An error occurred": [ - "En feil oppstod" - ], "Annual": [ "Årlig" ], @@ -23333,6 +24895,9 @@ "Catch-all address": [ "Catch-all-adresse" ], + "Categories": [ + "Kategorier" + ], "Change login password": [ "Endre påloggingspassord" ], @@ -23387,18 +24952,12 @@ "Confirm": [ "Bekreft" ], - "Confirm address": [ - "Bekreft adresse" - ], "Confirm downgrade": [ "Bekreft nedgradering" ], "Confirm loss of ${ BRAND_NAME } bonuses": [ "Bekreft tap av ${ BRAND_NAME }-bonuser" ], - "Confirm phone number": [ - "Bekreft telefonnummer" - ], "Connect ${ name }": [ "Koble til ${ name }" ], @@ -23423,12 +24982,18 @@ "Connect your custom domain": [ "Koble til ditt egendefinerte domene" ], + "Connected emails": [ + "Tilkoblede e-poster" + ], "Connection status": [ "Tilkoblingsstatus" ], "Contact us": [ "Kontakt oss" ], + "Continue with free storage": [ + "Fortsett med gratis lagring" + ], "Continue with partial import?": [ "Fortsette med delvis import?" ], @@ -23454,6 +25019,9 @@ "Create a new gateway": [ "Opprett en ny gateway" ], + "Create a new password": [ + "Opprett et nytt passord" + ], "Create Gateway": [ "Opprett gateway" ], @@ -23535,6 +25103,12 @@ "Data recovery": [ "Datagjenoppretting" ], + "Data recovery contacts": [ + "Kontakter for datagjenoppretting" + ], + "Data recovery options": [ + "Alternativer for datagjenoppretting" + ], "Data retention": [ "Dataoppbevaring" ], @@ -23544,6 +25118,9 @@ "Day theme": [ "Dagtema" ], + "Deactivate current phrase?": [ + "Deaktivere gjeldende frase?" + ], "Decrypt key": [ "Dekrypter nøkkel" ], @@ -23596,6 +25173,9 @@ "Delete user?": [ "Slett bruker?" ], + "Delete version history?": [ + "Slette versjonshistorikken?" + ], "Deny access to user?": [ "Nekte tilgang til bruker?" ], @@ -23611,6 +25191,9 @@ "Device": [ "Enhet" ], + "Device data backup": [ + "Sikkerhetskopiering av enhetsdata" + ], "Device name": [ "Enhetsnavn" ], @@ -23620,6 +25203,9 @@ "Disable categories?": [ "Deaktivere kategorier?" ], + "Disable device data backup?": [ + "Deaktivere sikkerhetskopiering av enhetsdata?" + ], "Disable two-factor authentication": [ "Deaktiver tofaktorautentisering" ], @@ -23635,6 +25221,9 @@ "Disconnected from Gmail": [ "Frakoblet fra Gmail" ], + "Dismiss setup checklist": [ + "Avvis sjekkliste for oppsett" + ], "Display name and signature": [ "Visningsnavn og signatur" ], @@ -23671,6 +25260,9 @@ "Download the mobile apps": [ "Last ned mobilappene" ], + "Download your recovery phrase": [ + "Last ned gjenopprettingsfrasen din" + ], "Downloads": [ "Nedlastinger" ], @@ -23749,6 +25341,9 @@ "Email privacy": [ "E-post personvern" ], + "Email verification": [ + "E-postbekreftelse" + ], "Emergency access": [ "Nødtilgang" ], @@ -23807,6 +25402,9 @@ "Feature access": [ "Funksjonstilgang" ], + "Fewer distractions, more focus": [ + "Færre forstyrrelser, mer fokus" + ], "Filter for more focus": [ "Filtrer for mer fokus" ], @@ -23837,12 +25435,12 @@ "Forward emails": [ "Videresend e-poster" ], - "Forwardings": [ - "Videresendinger" - ], "Free": [ "Free" ], + "Free plan": [ + "Free-plan" + ], "Gateway": [ "Gateway" ], @@ -23873,6 +25471,9 @@ "Get ${ planMaxSpace } storage for your files, photos and documents with ${ planName }. ${ upgradeButton }": [ "Skaff deg ${ planMaxSpace } lagringsplass for filene, bildene og dokumentene dine med ${ planName }. ${ upgradeButton }" ], + "Get ${ VPN_APP_NAME } on your TV": [ + "Skaff deg ${ VPN_APP_NAME } på TV-en din" + ], "Get ${ vpnPlus } to access all servers": [ "Skaff deg ${ vpnPlus } for å få tilgang til alle tjenere" ], @@ -23903,6 +25504,12 @@ "Get more from your VPN": [ "Får mer ut av ditt VPN" ], + "Get more storage with ${ MAIL_APP_NAME } Plus": [ + "Skaff deg mer lagringsplass med ${ MAIL_APP_NAME } Plus" + ], + "Get started": [ + "Kom i gang" + ], "Get the app on all your devices and enjoy safe, seamless access anywhere.": [ "Skaff deg appen på alle enhetene dine, og sett pris på sikker og sømløs tilgang hvor som helst." ], @@ -23933,9 +25540,15 @@ "Help center": [ "Hjelpesenter" ], + "Helping activists in Hong Kong": [ + "Hjelper aktivister i Hong Kong" + ], "Home": [ "Hjem" ], + "How ${ MAIL_APP_NAME } is different": [ + "Hvordan ${ MAIL_APP_NAME } er annerledes" + ], "How did you find out about us?": [ "Hvordan fant du ut om oss?" ], @@ -24048,9 +25661,15 @@ "Link confirmation": [ "Bekreftelse av kobling" ], + "Lower your cost without losing features": [ + "Reduser kostnadene dine uten å miste funksjoner" + ], "Main password": [ "Hovedpassord" ], + "Make your business stand out": [ + "Få bedriften din til å skille seg ut" + ], "Manage files across devices on Windows, Mac, Android, and iOS.": [ "Administrer filer på tvers av enheter på Windows, Mac, Android og iOS." ], @@ -24105,6 +25724,9 @@ "No events": [ "Ingen hendelser" ], + "No events yet": [ + "Ingen hendelser ennå" + ], "No need to empty the trash": [ "Du trenger ikke å tømme papirkurven" ], @@ -24159,12 +25781,18 @@ "Other sign-in issues": [ "Andre påloggingsproblemer" ], + "Our fight against censorship in Russia": [ + "Vår kamp mot sensur i Russland" + ], "Password": [ "Passord" ], "Password generator rules": [ "Regler for passordgenerator" ], + "Password reset options": [ + "Alternativer for tilbakestilling av passord" + ], "Password reset settings": [ "Innstillinger for tilbakestilling av passord" ], @@ -24198,9 +25826,6 @@ "Phone": [ "Telefon" ], - "Photos": [ - "Bilder" - ], "Pin the extension": [ "Fest utvidelsen" ], @@ -24237,6 +25862,9 @@ "QR Code": [ "QR-kode" ], + "QR code sign-in": [ + "QR-kode pålogging" + ], "Ready, set, forward": [ "Klar, ferdig, gå" ], @@ -24261,6 +25889,9 @@ "Recovery file": [ "Gjenopprettingsfil" ], + "Recovery phrase": [ + "Gjenopprettingsfrase" + ], "Refer a friend": [ "Verv en venn" ], @@ -24279,9 +25910,15 @@ "Remove domain": [ "Fjern domene" ], + "Remove email": [ + "Fjern e-post" + ], "Remove forwarding address": [ "Fjern videresendingsadresse" ], + "Remove recovery phone number": [ + "Fjern gjenopprettingstelefonnummer" + ], "Remove server?": [ "Fjerne tjener?" ], @@ -24453,6 +26090,9 @@ "Sign in on TV": [ "Logg inn på TV" ], + "Sign in on TV?": [ + "Logge inn på TV?" + ], "Sign in to join the Beta program": [ "Logg på for å bli med i testprogrammet" ], @@ -24468,6 +26108,9 @@ "Signed in to member account": [ "Logget på medlemskonto" ], + "Signed-in reset": [ + "Tilbakestilling ved pålogget" + ], "Simplify email distribution": [ "Forenkle distribusjon av e-post" ], @@ -24477,12 +26120,21 @@ "Single sign-on": [ "Enkel pålogging" ], + "SMS verification": [ + "SMS-verifsering" + ], "SMTP submission": [ "SMTP-innsending" ], "Snooze:": [ "Slumre:" ], + "Some of your encrypted data is locked": [ + "Noe av de krypterte dataene dine er låst" + ], + "Something went wrong": [ + "Noe gikk galt" + ], "Sort folders alphabetically": [ "Sorter mapper alfabetisk" ], @@ -24510,6 +26162,9 @@ "Status": [ "Status" ], + "Stay secure and connected anywhere": [ + "Forbli sikker og tilkoblet hvor som helst" + ], "Strengthen your security on all your devices with ${ passPlusPlanName }. ${ upgradeButton }": [ "Styrk sikkerheten på alle enhetene dine med ${ passPlusPlanName }. ${ upgradeButton }" ], @@ -24532,6 +26187,9 @@ "Support ticket closed": [ "Støttesak lukket" ], + "Support your compliance objectives": [ + "Støtt samsvarsmålene dine" + ], "Switch account": [ "Bytt konto" ], @@ -24601,6 +26259,9 @@ "Type": [ "Type" ], + "Unblocking internet access in Iran": [ + "Opphever blokkering av internettilgang i Iran" + ], "Unlock your data": [ "Lås opp dataene dine" ], @@ -24670,6 +26331,9 @@ "Verify it’s you": [ "Bekreft at det er deg" ], + "Verify your email": [ + "Bekreft e-postadressen" + ], "Verifying your card...": [ "Verifiserer kortet ditt..." ], @@ -24694,6 +26358,9 @@ "Warning: suspected fake website": [ "Advarsel: mistenkt falskt nettsted" ], + "We sent you a code to your email to make sure it’s you. This code is valid for 10 minutes. Please enter it below.": [ + "Vi har sendt deg en kode til e-posten din for å bekrefte at det er deg. Denne koden er gyldig i 10 minutter. Skriv den inn nedenfor." + ], "We'll send an email to your new address with instructions on completing the change.": [ "Vi vil sende deg en e-post til din nye adresse med instruksjoner om hvordan du fullfører endringen." ], @@ -24709,6 +26376,9 @@ "Welcome to your new password manager!": [ "Velkommen til din nye passordbehandler!" ], + "What changes if you switch to the Free plan": [ + "Hva endres hvis du bytter til Free-planen" + ], "What is an alias?": [ "Hva er et alias?" ], @@ -24742,6 +26412,12 @@ "Your ${ planTitle } subscription has started": [ "Abonnementet ditt på ${ planTitle } har startet" ], + "Your admin at ${ orgName } is inviting you to activate your new secure ${ BRAND_NAME } account and update your password.": [ + "Administratoren din hos ${ orgName } inviterer deg til å aktivere den nye, sikre ${ BRAND_NAME }-kontoen og oppdatere passordet ditt." + ], + "Your admin is inviting you to activate your new secure ${ BRAND_NAME } account and update your password.": [ + "Administratoren din inviterer deg til å aktivere den nye, sikre ${ BRAND_NAME }-kontoen din og oppdatere passordet ditt." + ], "Your calendar link": [ "Din kalenderkobling" ], @@ -24754,6 +26430,15 @@ "Your plan": [ "Din plan" ], + "Your recovery file": [ + "Gjenopprettingsfilen din" + ], + "Your recovery phrase": [ + "Din gjenopprettingsfrase" + ], + "Your recovery setup": [ + "Gjenopprettingsoppsettet ditt" + ], "Your referrals": [ "Dine vervinger" ], @@ -24886,6 +26571,24 @@ "Admins can manage user accounts and give admin privileges to other users. Only the primary admin can edit the plan of the organization.": [ "Administratorer kan administrere brukerkontoer og gi administratorrettigheter til andre brukere. Bare den primære administratoren kan redigere planen for organisasjonen." ], + "Allow recovering your account with a one-time code sent to your recovery email": [ + "Tillat gjenoppretting av kontoen din med en engangskode sendt til gjenopprettings-e-postadressen din" + ], + "Allow recovering your account with a one-time code sent to your recovery phone": [ + "Tillat gjenoppretting av kontoen din med en engangskode sendt til gjenopprettingstelefonen din" + ], + "Allow resetting your password from the account settings": [ + "Tillat tilbakestilling av passordet ditt fra kontoinnstillingene" + ], + "Allow scanning a QR code from a ${ BRAND_NAME } mobile app to sign in": [ + "Tillat skanning av en QR-kode fra en ${ BRAND_NAME }-mobilapp for å logge på" + ], + "Allow trusted contacts to request access to your account": [ + "Tillat at betrodde kontakter ber om tilgang til kontoen din" + ], + "Allow trusted contacts to unlock your encrypted data after a password reset": [ + "Tillat at pålitelige kontakter låser opp krypterte data etter tilbakestilling av passord" + ], "Allows to seamlessly add Zoom video conferencing links to your calendar invitations.": [ "Gjør det mulig å sømløst legge til Zoom-videokonferansekoblinger i kalenderinvitasjonene dine." ], @@ -24922,6 +26625,9 @@ "Each imported email will have this label": [ "Hver importert e-post vil ha denne etiketten" ], + "Early access to new apps and features.": [ + "Tidlig tilgang til nye apper og funksjoner." + ], "Edit folder names": [ "Rediger mappenavn" ], @@ -24970,6 +26676,12 @@ "If you purchased a gift code or received one from our support team, you can enter it here.": [ "Hvis du kjøpte en gavekode eller mottok en fra vår kundestøtte, kan du angi den her." ], + "Includes custom email domains and unlimited hide-my-email aliases in ${ MAIL_APP_NAME }, access to servers in 120+ countries in ${ VPN_SHORT_APP_NAME }, built-in 2FA and secure sharing in ${ PASS_SHORT_APP_NAME }, and more.": [ + "Inkluderer egendefinerte e-postdomener og ubegrensede hide-my-email-aliaser i ${ MAIL_APP_NAME }, tilgang til servere i over 120 land i ${ VPN_SHORT_APP_NAME }, innebygd 2FA og sikker deling i ${ PASS_SHORT_APP_NAME } og mer." + ], + "Includes professional email at @yourdomain.com, cloud storage with collaborative document editing, scheduling and video conferencing, password management, a secure ${ VPN_SHORT_APP_NAME }, and more.": [ + "Inkluderer profesjonell e-post på @dittdomene.com, skylagring med samarbeidende dokumentredigering, planlegging og videokonferanser, passordadministrasjon, et sikker ${ VPN_SHORT_APP_NAME } og mer." + ], "Members who do not use 2FA will get an email asking them to enable it as soon as possible. Single sign-on users will not receive the email reminder.": [ "Medlemmer som ikke bruker 2FA vil motta en e-post som ber dem om å aktivere det så snart som mulig. Brukere med enkel pålogging vil ikke motta e-postpåminnelsen." ], @@ -24991,6 +26703,15 @@ "Remove metadata from images to protect your privacy.": [ "Fjern metadata fra bilder for å beskytte personvernet ditt." ], + "Save 12-word long phrase to unlock your account and your encrypted data instantly if you forgot your password": [ + "Lagre en setning på 12 ord for å låse opp kontoen din og krypterte data umiddelbart hvis du glemmer passordet ditt" + ], + "Save an encryption backup file in this browser to recover your data after a password reset": [ + "Lagre en kryptert sikkerhetskopifil i denne nettleseren for å gjenopprette dataene dine etter en tilbakestilling av passordet" + ], + "Save an encryption backup file to recover your data after a password reset": [ + "Lagre en kryptert sikkerhetskopifil for å gjenopprette dataene dine etter en tilbakestilling av passordet" + ], "See number of unread messages in the tab icon": [ "Se antall uleste meldinger i faneikonet" ], @@ -25063,8 +26784,8 @@ "This feature is only available on Beta": [ "Denne funksjonen er kun tilgjengelig på Beta" ], - "This is the default key used by other ${ MAIL_APP_NAME } users on older mobile apps to encrypt data they send to you": [ - "Dette er standardnøkkelen som brukes av andre ${ MAIL_APP_NAME }-brukere på eldre mobilapper til å kryptere data de sender til deg" + "This is the default key used by other ${ MAIL_APP_NAME } users on older apps to encrypt data they send to you": [ + "Dette er standardnøkkelen som brukes av andre ${ MAIL_APP_NAME }-brukere på eldre apper til å kryptere data de sender til deg" ], "This is the default key used by other ${ MAIL_APP_NAME } users to encrypt data they send to you": [ "Dette er standardnøkkelen som brukes av andre ${ MAIL_APP_NAME }-brukere for å kryptere data de sender til deg" @@ -25152,6 +26873,9 @@ "User is a group": [ "Brukeren er en gruppe" ], + "via ${ groupName }": [ + "via ${ groupName }" + ], "Waiting for user to accept the invitation": [ "Venter på at brukeren godtar invitasjonen" ] @@ -25475,6 +27199,12 @@ ] }, "user_modal": { + "(via ${ groupName })": [ + "(via ${ groupName })" + ], + "(via group)": [ + "(via gruppe)" + ], "Add delegated roles to a user to grant them only the specific permissions they need, keeping full-admin power separate and your environment secure.": [ "Legg til delegerte roller til en bruker for å gi dem bare de spesifikke tillatelsene de trenger, slik at full administratorrettighet holdes separat og miljøet ditt er sikkert." ], @@ -25862,11 +27592,14 @@ "${ BRAND_NAME } will transfer as much data as possible, starting with your most recent messages.": [ "${ BRAND_NAME } vil overføre så mye data som mulig, og starter med de nyeste meldingene dine." ], - "Are you sure you want to delete the phone number?": [ - "Er du sikker på at du vil slette telefonnummeret?" + "Are you sure you want to remove your notification email?": [ + "Er du sikker på at du vil fjerne tilknyttet e-post for varsling?" ], - "Are you sure you want to delete this address?": [ - "Er du sikker på at du vil slette denne adressen?" + "Are you sure you want to remove your recovery email?": [ + "Er du sikker på at du vil fjerne gjenopprettings-e-postadressen din?" + ], + "Are you sure you want to remove your recovery phone number?": [ + "Er du sikker på at du vil fjerne telefonnummeret ditt for gjenoppretting?" ], "By deleting this address, you will no longer be able to receive daily email notifications.": [ "Ved å slette denne adressen vil du ikke lenger kunne motta daglige e-postvarslinger." @@ -25877,8 +27610,8 @@ "By deleting this address, you will no longer be able to recover your account.": [ "Ved å slette denne adressen vil du ikke lenger kunne gjenopprette kontoen din." ], - "By deleting this phone number, you will no longer be able to recover your account.": [ - "Ved å slette dette telefonnummeret vil du ikke lenger kunne gjenopprette kontoen din." + "By removing this phone number, you will no longer be able to recover your account.": [ + "Hvis du fjerner dette telefonnummeret, vil du ikke lenger kunne gjenopprette kontoen din." ], "Could not login. Please open ${ PASS_APP_NAME } browser extension and login from there.": [ "Kunne ikke logge på. Åpne nettleserutvidelsen for ${ PASS_APP_NAME } og logg på derfra." diff --git a/applications/account/locales/nl_NL.json b/applications/account/locales/nl_NL.json index 0158177bf82..a84b255149d 100644 --- a/applications/account/locales/nl_NL.json +++ b/applications/account/locales/nl_NL.json @@ -90,6 +90,9 @@ "Add": [ "Voeg toe" ], + "Add ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }": [ + "${ BRAND_NAME } ${ PASS_SHORT_APP_NAME } toevoegen" + ], "Add ${ BRAND_NAME } Account": [ "${ BRAND_NAME } Account Toevoegen" ], @@ -105,6 +108,9 @@ "Add address or domain": [ "Adres of domein toevoegen" ], + "Add and verify": [ + "Toevoegen en verifiëren" + ], "Add another account": [ "Voeg een account toe" ], @@ -159,6 +165,9 @@ "Add user": [ "Gebruiker toevoegen" ], + "Added ${ memberName } as group owner": [ + "${ memberName } is toegevoegd als groepseigenaar" + ], "Align center": [ "Centreren" ], @@ -210,6 +219,9 @@ "Back to sign in": [ "Terug naar inloggen" ], + "Back to sign-in": [ + "Terug naar aanmelden" + ], "Block": [ "Blokkeer" ], @@ -261,6 +273,9 @@ "Claim it": [ "Eis het op" ], + "Claim offer": [ + "Pak deze aanbieding" + ], "Claim this address": [ "Claim dit adres" ], @@ -303,6 +318,9 @@ "Confirm": [ "Bevestigen" ], + "Confirm email": [ + "Bevestig e-mailadres" + ], "Confirm opening of link ${ linkToShow }": [ "Bevestig het openen van link ${ linkToShow }" ], @@ -315,15 +333,24 @@ "Connect apps and devices": [ "Apps en apparaten verbinden" ], + "Connect Gmail address": [ + "Verbind uw Gmail-adres" + ], "Connect to video conferencing": [ "Verbinding maken met videovergadering" ], "Connect your ${ BRAND_NAME } Account": [ "Koppel uw ${ BRAND_NAME }-account" ], + "Connect your email": [ + "Verbind uw e-mailadres" + ], "Connected": [ "Verbonden" ], + "Contact sales": [ + "Contact opnemen met sales" + ], "Contact support": [ "Neem contact op met ondersteuning" ], @@ -354,6 +381,9 @@ "Continue with ${ nameToDisplay } ${ maybeEmailInBrackets }": [ "Doorgaan met ${ nameToDisplay } ${ maybeEmailInBrackets }" ], + "Continue with Free": [ + "Doorgaan met gratis" + ], "Continue with Google": [ "Ga verder met Google" ], @@ -429,6 +459,9 @@ "Create organization": [ "Organisatie aanmaken" ], + "Create recovery phrase": [ + "Genereer herstelzin" + ], "Create users": [ "Gebruikers aanmaken" ], @@ -462,6 +495,9 @@ "Delete account": [ "Account verwijderen" ], + "Delete and confirm": [ + "Verwijder en bevestig" + ], "Delete filter “${ Name }”": [ "Verwijder filter \"${ Name }\"" ], @@ -498,8 +534,8 @@ "Delete record": [ "Record verwijderen" ], - "Delete token ${ token.Account }": [ - "Token \"${ token.Account }\" verwijderen" + "Delete token ${ tokens[0].Account }": [ + "Token ${ tokens[0].Account } verwijderen" ], "Delete token “${ token.Name }”": [ "Token \"${ token.Name }\" verwijderen" @@ -540,6 +576,9 @@ "Disable categories": [ "Categorieën uitschakelen" ], + "Disable category": [ + "Categorieën uitschakelen" + ], "Disable recovery phrase": [ "Herstelzin uitschakelen" ], @@ -555,6 +594,9 @@ "Discard Changes": [ "Wijzigingen annuleren" ], + "Disconnect": [ + "Verbinding verbreken" + ], "Discover ${ planName }": [ "Ontdek ${ planName }" ], @@ -612,6 +654,9 @@ "Download the desktop app": [ "Download de desktop-app" ], + "Download updated file": [ + "Bijgewerkt bestand downloaden" + ], "Edit": [ "Bewerken" ], @@ -684,6 +729,9 @@ "Enable ${ darkWebMonitoring }": [ "${ darkWebMonitoring } activeren" ], + "Enable category": [ + "Categorie inschakelen" + ], "enable desktop notifications": [ "schakel desktopmeldingen in" ], @@ -735,6 +783,9 @@ "Filters are being applied. This might take a few minutes.": [ "Filters worden toegepast. Dit kan enkele minuten duren." ], + "Finish": [ + "Voltooien" + ], "Fit to window": [ "Passend in venster" ], @@ -753,6 +804,12 @@ "Generate key": [ "Genereer sleutel" ], + "Generate missing keys": [ + "Ontbrekende sleutels genereren" + ], + "Generate new phrase": [ + "Genereer nieuwe zin" + ], "Generate new recovery phrase": [ "Genereer nieuwe herstelzin" ], @@ -852,6 +909,9 @@ "Go to ${ planOrAppName }": [ "Ga naar ${ planOrAppName }" ], + "Go to domain provider": [ + "Ga naar de domeinprovider" + ], "Go to label": [ "Ga naar label" ], @@ -1125,6 +1185,9 @@ "Or": [ "Of" ], + "Or remove forwarding address": [ + "Of verwijder het doorstuuradres" + ], "Or use a different Gmail address": [ "Of gebruik een ander Gmail-adres" ], @@ -1167,9 +1230,15 @@ "Reactivate keys": [ "Sleutels heractiveren" ], + "Read the story": [ + "Lees het verhaal" + ], "Reconnect": [ "Opnieuw verbinden" ], + "Reconnect to Gmail": [ + "Opnieuw verbinden met Gmail" + ], "Recover account": [ "Account herstellen" ], @@ -1239,6 +1308,9 @@ "Remove this notification": [ "Deze melding verwijderen" ], + "Removed ${ memberName } as group owner": [ + "${ memberName } is verwijderd als groepseigenaar" + ], "Rename": [ "Hernoem" ], @@ -1317,12 +1389,18 @@ "Save": [ "Opslaan" ], + "Save & exit": [ + "Opslaan & afsluiten" + ], "Save address": [ "Adres opslaan" ], "Save and continue": [ "Opslaan en doorgaan" ], + "Save and verify": [ + "Opslaan en verifiëren" + ], "Save changes": [ "Wijzigingen opslaan" ], @@ -1344,6 +1422,9 @@ "Search settings": [ "Zoekinstellingen" ], + "Secure account": [ + "Account beveiligen" + ], "See DNS TXT record": [ "Zie DNS TXT-record" ], @@ -1566,6 +1647,9 @@ "Switch or add account": [ "Account toevoegen of wisselen" ], + "Switch to free plan": [ + "Schakel over naar het gratis abonnement" + ], "Take a tour": [ "Volg een rondleiding" ], @@ -1728,6 +1812,9 @@ "View recovery settings": [ "Herstelinstellingen weergeven" ], + "View recovery setup details": [ + "Bekijk de details van de herstelinstellingen" + ], "Void": [ "Ongeldig" ], @@ -1737,6 +1824,9 @@ "Void all recovery files?": [ "Alle herstelbestanden ongeldig maken?" ], + "Watch the interview": [ + "Bekijk het interview" + ], "Welcome": [ "Welkom" ], @@ -1997,6 +2087,47 @@ "beheerder" ] }, + "Admin roles onboarding": { + "2 new admin roles": [ + "2 nieuwe beheerdersrollen" + ], + "3 new admin roles": [ + "3 nieuwe beheerdersrollen" + ], + "Configure security policies, data retention, and VPN infrastructure, and manage audit logs.": [ + "Configureer beveiligingsbeleid, gegevensbewaring en VPN-infrastructuur, en beheer auditlogboeken." + ], + "Delegate management by assigning specific admin roles. Give each admin only the access they need. This follows the principle of least privilege, protecting your organization from compromised accounts and accidental errors.": [ + "Delegeer beheer door specifieke beheerdersrollen toe te wijzen. Geef elke beheerder alleen de toegang die hij of zij nodig heeft. Dit volgt het principe van minimale bevoegdheden en beschermt uw organisatie tegen gecompromitteerde accounts en onbedoelde fouten." + ], + "Delegate management for many users at once. Assign specific admin roles to groups for automatic permissions. This follows the principle of least privilege to save time on onboarding and offboarding while reducing errors.": [ + "Delegeer het beheer voor veel gebruikers tegelijk. Wijs specifieke beheerdersrollen toe aan groepen voor automatische machtigingen. Dit volgt het principe van de minste privileges om tijd te besparen bij onboarding en offboarding en tegelijkertijd het aantal fouten te verminderen." + ], + "Delegate management with the appropriate admin role.": [ + "Delegeer het beheer aan de juiste beheerdersrol." + ], + "Manage all users, groups, storage, security, billing, audit logs, and system configurations.": [ + "Beheer alle gebruikers, groepen, opslag, beveiliging, facturering, auditlogboeken en systeemconfiguraties." + ], + "Manage users, groups, and storage for all members, assign roles, and allocate licenses.": [ + "Beheer gebruikers, groepen en opslagruimte voor alle leden, wijs rollen toe en deel licenties uit." + ], + "New: Control admin access for individual users": [ + "Nieuw: Beheer de beheerdersrechten voor individuele gebruikers" + ], + "New: Control admin access for many users at once": [ + "Nieuw: beheer de beheerderstoegang voor veel gebruikers tegelijk" + ], + "Organization admin:": [ + "Organisatie beheerder:" + ], + "Security admin:": [ + "Beveiligingsbeheerder:" + ], + "User admin:": [ + "Gebruikersbeheer:" + ] + }, "AdminRole_Info": { "A role is a group of permissions that you can assign to the members of your organization.": [ "Een rol is een groep machtigingen die u kunt toewijzen aan de leden van uw organisatie." @@ -2755,15 +2886,42 @@ "${ BRAND_NAME } Migration Assistant": [ "${ BRAND_NAME } Migratieassistent" ], - "Add a custom domain": [ - "Een aangepast domein toevoegen" + "${ migratedCount } of ${ providerUsers.length }": [ + "${ migratedCount } van ${ providerUsers.length }" + ], + "**p=quarantine**: asking the recipient platforms to mark the unauthorized emails as spam or quarantine them.": [ + "**p=quarantaine**: de ontvangende platforms vragen om de ongeautoriseerde e-mails als spam te markeren of in quarantaine te plaatsen." + ], + "**p=reject**: asking the recipient platforms to reject the unauthorized emails.": [ + "**p=reject**: hiermee wordt de ontvangende platformen gevraagd de ongeautoriseerde e-mails te weigeren." + ], + "Account connected": [ + "Account verbonden" + ], + "Activated": [ + "Geactiveerd" + ], + "Add a domain": [ + "Een domein toevoegen" + ], + "Add domain": [ + "Domein toevoegen" + ], + "Add users and configure your domain manually for sending and receiving mail. Ideal for small teams starting from a clean slate.": [ + "Voeg handmatig gebruikers toe en configureer uw domein voor het verzenden en ontvangen van e-mail. Ideaal voor kleine teams die helemaal vanaf nul beginnen." + ], + "All": [ + "Alle" ], - "App installed": [ - "App geïnstalleerd" + "As soon as the accounts are created, you can share the activation link so users can claim their ${ BRAND_NAME } account.": [ + "Zodra de accounts zijn aangemaakt, kunt u de activeringslink delen zodat gebruikers hun ${ BRAND_NAME }-account kunnen claimen." ], "Authenticate": [ "Authenticeren" ], + "Authenticate to Google Workspace": [ + "Meld u aan bij Google Workspace" + ], "Authenticate your Google Workspace account": [ "Authentiseer uw Google Workspace-account" ], @@ -2773,6 +2931,9 @@ "Change": [ "Wijzigen" ], + "Choose how you want to bring your team and email setup to ${ BRAND_NAME }.": [ + "Kies hoe u uw team en e-mailinstellingen wilt overzetten naar ${ BRAND_NAME }." + ], "Completed": [ "Voltooid" ], @@ -2782,14 +2943,44 @@ "Configure migration": [ "Migratie configureren" ], + "Configure your domain": [ + "Configureer uw domein" + ], "Contacts": [ "Contacten" ], + "Continue migration": [ + "Migratie verderzetten" + ], + "Copy activation link": [ + "Activeringslink kopiëren" + ], + "Copy activation link to clipboard": [ + "Kopieer de activatielink naar klembord" + ], + "Copy the below code and paste it in the DNS section of your domain host. You can find an example and some helpful tips ${ hereHref }.": [ + "Kopieer onderstaande code en plak ze in de DNS-sectie van uw domein beheerder. U vindt voorbeelden en hulpzame tips ${ hereHref }" + ], + "DKIM adds a digital signature to each email so recipients can verify that the message really came from your domain and was not altered in transit. Without it, messages may be treated as less trustworthy.": [ + "DKIM voegt een digitale handtekening toe aan elke e-mail, zodat ontvangers kunnen controleren of het bericht daadwerkelijk van uw domein afkomstig is en niet is gewijzigd tijdens de verzending. Zonder DKIM worden berichten mogelijk als minder betrouwbaar beschouwd." + ], + "DKIM records": [ + "DKIM-records" + ], + "DMARC builds on SPF and DKIM by telling receiving servers how to handle messages that fail these checks. It helps protect your domain from impersonation and improves overall delivery reliability.": [ + "DMARC bouwt voort op SPF en DKIM door ontvangende servers te vertellen hoe ze berichten moeten afhandelen die niet aan deze controles voldoen. Het helpt uw ​​domein te beschermen tegen namaak en verbetert de algehele betrouwbaarheid van de levering." + ], + "DMARC records": [ + "DMARC-records" + ], + "Domain added": [ + "Domein toegevoegd" + ], "Domain connected": [ "Domein verbonden" ], - "Domain ownership verified": [ - "Domeineigendom geverifieerd" + "Ensure that your emails reach the inbox, not the spam folder. Updating SPF will allow users to send from ${ BRAND_NAME } and Google simultaneously for the duration of the migration.": [ + "Zorg ervoor dat uw e-mails in de inbox terechtkomen en niet in de spammap. Door SPF bij te werken, kunnen gebruikers gedurende de migratieperiode gelijktijdig e-mails verzenden vanaf ${ BRAND_NAME } en Google." ], "Estimated size": [ "Geschatte grootte." @@ -2797,12 +2988,24 @@ "Failed to load OAuth": [ "Laden van OAuth mislukt" ], + "Finalize your migration": [ + "Voltooi uw migratie" + ], "Finish setting up your business account": [ "Voltooi het instellen van uw zakelijke account" ], + "Go to Domain names": [ + "Ga naar Domeinnamen" + ], "Google Marketplace app to copy data to ${ BRAND_NAME }": [ "Google Marketplace-app om gegevens naar ${ BRAND_NAME } te kopiëren" ], + "Google Workspace account": [ + "Google Workspace account" + ], + "Hang tight, we're setting up user accounts and will start importing user data shortly.": [ + "Even geduld, we zijn bezig met het aanmaken van gebruikersaccounts en beginnen binnenkort met het importeren van gebruikersgegevens." + ], "Has errors": [ "Bevat fouten" ], @@ -2815,14 +3018,17 @@ "Install migration app": [ "Installeer migratie app" ], - "Learn more about what can be migrated. Learn more": [ - "Meer informatie over wat kan worden gemigreerd. Meer informatie" + "Install Migration assistant": [ + "Migratie-assistent installeren" ], "Mail": [ "Mail" ], - "Migrate": [ - "Migreren" + "Managed via ${ registrar.name }": [ + "Beheerd via ${ registrar.name }" + ], + "Member address not found. Please contact customer support to resolve this": [ + "Lidadres niet gevonden. Neem contact op met de klantenservice om dit op te lossen" ], "Migrate from Google Workspace": [ "Migreren vanuit Google Workspace" @@ -2830,6 +3036,12 @@ "Migrate users": [ "Gebruikers migreren" ], + "Migrate users to ${ BRAND_NAME }": [ + "Migreer gebruikers naar ${ BRAND_NAME }" + ], + "Migrated": [ + "Gemigreerd" + ], "Migration includes": [ "Migratie omvat" ], @@ -2840,8 +3052,32 @@ "Migration status": [ "Migratiestatus" ], - "Not started": [ - "Niet begonnen" + "Missing organization private key": [ + "Ontbrekende privésleutel van de organisatie" + ], + "Missing organization public key": [ + "Ontbrekende openbare sleutel van de organisatie" + ], + "More details": [ + "Meer details" + ], + "Move your users, emails, and settings from Google Workspace automatically. We’ll guide you through connecting your account, verifying your domain, and migrating users securely.": [ + "Verplaats uw gebruikers, e-mails en instellingen automatisch vanuit Google Workspace. Wij begeleiden u bij het koppelen van uw account, het verifiëren van uw domein en het veilig migreren van gebruikers." + ], + "No users to display": [ + "Geen gebruikers om weer te geven" + ], + "Not activated": [ + "Niet geactiveerd" + ], + "Not confirmed": [ + "Niet bevestigd" + ], + "Once users have claimed their ${ BRAND_NAME } account, finalize the migration.": [ + "Zodra gebruikers hun ${ BRAND_NAME }-account hebben geclaimd, kunt u de migratie voltooien." + ], + "Once we have confirmed that emails are routed to ${ BRAND_NAME } the migration will be finalized. You will receive a confirmation email to let you know when this happens. This process can take up to 24 hours.": [ + "Zodra we hebben bevestigd dat e-mails worden doorgestuurd naar ${ BRAND_NAME }, wordt de migratie afgerond. U ontvangt een bevestigingsmail wanneer dit is gebeurd. Dit proces kan tot 24 uur duren." ], "Organization does not have enough seats available": [ "Organisatie heeft onvoldoende licenties beschikbaar" @@ -2849,8 +3085,17 @@ "Organization does not have enough storage available": [ "Organisatie heeft onvoldoende opslagruimte beschikbaar" ], - "Organization settings": [ - "Organisatie instellingen" + "Pending": [ + "In behandeling" + ], + "Please add the following records in your DNS console of your domain provider:": [ + "Voeg volgende DNS-records toe in het configuratiepaneel van uw domein provider." + ], + "Please leave this window open until we're done creating all the users.": [ + "Laat dit venster open staan ​​totdat we alle gebruikers hebben aangemaakt." + ], + "Refresh": [ + "Vernieuw" ], "Required": [ "Vereist" @@ -2861,8 +3106,8 @@ "Select at least one user to start a migration": [ "Selecteer minimaal één gebruiker om een migratie te starten" ], - "Select what you want to migrate, this will apply to all users whether they are created now or later. Migration will start after user accounts are created.": [ - "Selecteer wat u wilt migreren, dit zal van toepassing zijn op alle gebruikers, ongeacht of deze nu of later worden aangemaakt. De migratie begint nadat gebruikersaccounts zijn aangemaakt." + "Select users to migrate": [ + "Selecteer gebruikers om te migreren" ], "Set up": [ "Configureren" @@ -2870,53 +3115,101 @@ "Set up billing information": [ "Facturatiegegevens instellen" ], + "Set up manually": [ + "Handmatig instellen" + ], + "Set up secure sending (SPF)": [ + "Beveiligd verzenden (SPF) instellen" + ], "Set up two-factor authentication": [ "Tweestapsverificatie instellen" ], "Settings": [ "Instellingen" ], + "Share the activation link to users so they can claim their ${ BRAND_NAME } account.": [ + "Deel de activatielink met de gebruikers zodat ze hun ${ BRAND_NAME }-account kunnen opeisen" + ], "Sign in to Google Workspace": [ "Inloggen bij Google Workspace" ], + "Size": [ + "Grootte" + ], + "SPF records": [ + "SPF-Records" + ], + "Start migrating": [ + "Migratie starten" + ], "Start migration": [ "Migratie starten" ], "Status": [ "Status" ], + "The default setting is none. However, to improve your security we recommend setting this value to p=quarantine.": [ + "De standaardinstelling is 'geen'. Om uw veiligheid te verbeteren, raden we echter aan deze waarde in te stellen op 'p=quarantaine'." + ], + "The “p=” value specifies the action to take for emails that fail DMARC. Here are the available actions:": [ + "De waarde “p=” specificeert de actie die moet worden uitgevoerd voor e-mails die niet aan de DMARC-vereisten voldoen. Dit zijn de beschikbare acties:" + ], + "This migration has been completed": [ + "Deze migratie is voltooid" + ], "To migrate your organization’s data, you need to install the ${ BRAND_NAME } Migration Assistant app from the Google Workspace Marketplace. This will grant permission to ${ BRAND_NAME } to copy your data. After installing it, come back here to continue.": [ "Om de gegevens van uw organisatie te migreren, moet u de ${ BRAND_NAME } Migration Assistant-app installeren vanuit de Google Workspace Marketplace. Hiermee wordt toestemming verleend aan ${ BRAND_NAME } om uw gegevens te kopiëren. Nadat u de app hebt geïnstalleerd, keert u hier terug om verder te gaan." ], - "Transfer errors": [ - "Overdrachtsfout" + "Update records for receiving": [ + "Gegevens bijwerken voor ontvangst" ], "User": [ "Gebruiker" ], + "User needs to activate their account through the activation link shown above": [ + "De gebruiker moet zijn account activeren via de bovenstaande activeringslink." + ], "Users migrated": [ "Gebruikers gemigreerd" ], + "Verified": [ + "Geverifiëerd" + ], + "Verify domain ownership": [ + "Verifieer domeineigendom" + ], "Verify installation": [ "Installatie verifiëren" ], "Verify your domain": [ "Verifieer uw domein" ], - "Verify your domain ownership": [ - "Verifieer uw domeineigendom" - ], "Verify your domain to start a migration": [ "Verifieer uw domein om een migratie te starten" ], + "We detected the primary domain linked to your Google Workspace account. Confirm it to continue setting up email for your ${ BRAND_NAME } organization.": [ + "We hebben het primaire domein gedetecteerd dat aan uw Google Workspace-account is gekoppeld. Bevestig dit om door te gaan met het instellen van e-mail voor uw ${ BRAND_NAME }-organisatie." + ], "We were unable to verify the installation, please check that you have installed it in your Google Workspace account and try again.": [ "We konden de installatie niet verifiëren. Controleer of u deze in uw Google Workspace-account hebt geïnstalleerd en probeer het opnieuw." ], + "We're still checking the MX records with your domain provider.": [ + "We controleren de MX-records nog steeds bij uw domeinprovider." + ], + "We've noticed some users have not claimed their ${ BRAND_NAME } accounts.": [ + "We hebben gemerkt dat sommige gebruikers hun ${ BRAND_NAME } profiel nog niet hebben geactiveerd." + ], "What are you migrating?": [ "Wat migreert u?" ], + "You": [ + "U" + ], "You need to grant the permission for ${ BRAND_NAME } to copy your data. After accepting permissions, come back here to continue.": [ "U dient de toestemming te verlenen aan ${ BRAND_NAME } om uw gegevens te kopiëren. Keer hier terug om verder te gaan nadat u de toestemmingen hebt geaccepteerd." + ], + "You're all set!": [ + "U bent helemaal klaar!" ] }, "breadcrumb": { @@ -3024,9 +3317,15 @@ ] }, "Button": { + "Cancel": [ + "Annuleren" + ], "Close": [ "Sluiten" ], + "Configure your network": [ + "Configureer uw netwerk" + ], "Continue using ${ MAIL_APP_NAME }.": [ "Blijf ${ MAIL_APP_NAME } gebruiken." ], @@ -3048,6 +3347,12 @@ "Got it": [ "Begrepen" ], + "Invite your team": [ + "Nodig uw team uit" + ], + "Manage global VPN permissions": [ + "Globale VPN-machtigingen beheren" + ], "Maybe later": [ "Misschien later" ], @@ -3063,6 +3368,12 @@ "Set up other features": [ "Andere functies instellen" ], + "Set up SSO": [ + "SSO instellen" + ], + "Sign in": [ + "Inloggen" + ], "Take a tour": [ "Volg een rondleiding" ] @@ -3657,6 +3968,41 @@ "Als" ] }, + "Confirm cancellation": { + "Access is restored once usage is back within limits.": [ + "De toegang wordt hersteld zodra het gebruik weer binnen de limieten valt." + ], + "Back up photos from your devices": [ + "Maak een back-up van foto's op uw apparaten." + ], + "Cancel subscription": [ + "Abonnement opzeggen" + ], + "Confirm cancellation": [ + "Bevestig annulering" + ], + "If you exceed free plan limits, you won't be able to:": [ + "Als u de limieten van het gratis abonnement overschrijdt, kunt u het volgende niet meer doen:" + ], + "Keep current plan": [ + "Huidig plan behouden" + ], + "Manage your calendar": [ + "Beheer uw agenda" + ], + "Receive new emails": [ + "Nieuwe e-mails ontvangen" + ], + "Send emails with attachments": [ + "E-mails met bijlagen verzenden" + ], + "Upload any new files": [ + "Nieuwe bestanden toevoegen" + ], + "When your subscription ends on ${ endDate }, your account will switch to the Free plan. If your usage exceeds Free plan limits, some features may be temporarily unavailable.": [ + "Wanneer uw abonnement op ${ endDate } afloopt, wordt uw account overgezet naar het gratis abonnement. Als uw gebruik de limieten van het gratis abonnement overschrijdt, zijn sommige functies mogelijk tijdelijk niet beschikbaar." + ] + }, "Confirm modal title": { "Import is incomplete!": [ "Importen is onvolledig!" @@ -4660,6 +5006,9 @@ "/month": [ "/maand" ], + "/user /month": [ + "/gebruiker/maand" + ], "/user per month": [ "/gebruiker per maand" ] @@ -4826,6 +5175,9 @@ ] }, "Description": { + "${ BRAND_NAME }'s end-to-end encryption means only you can unlock your data. Set up recovery options now to ensure you never lose access.": [ + "De end-to-end-versleuteling van ${ BRAND_NAME } betekent dat alleen u uw gegevens kunt ontgrendelen. Stel nu herstelopties in om ervoor te zorgen dat u nooit de toegang verliest." + ], "${ DOCS_SHORT_APP_NAME } in ${ DRIVE_APP_NAME } allows you to work together with others in a secure, encrypted environment.": [ "Met ${ DOCS_SHORT_APP_NAME } in ${ DRIVE_APP_NAME } kunt u samenwerken met anderen in een veilige, versleutelde omgeving." ], @@ -4835,6 +5187,9 @@ "${ MAIL_APP_NAME } is your default mail application.": [ "${ MAIL_APP_NAME } is uw standaard e-mailapplicatie." ], + "${ MAIL_APP_NAME } keeps your business data secure and lets you send encrypted emails to anyone.": [ + "${ MAIL_APP_NAME } houdt uw bedrijfsgegevens veilig en laat u versleutelde e-mails verzenden naar iedereen." + ], "A checked box means the feature is disabled.": [ "Een selectievakje betekent dat de functie is uitgeschakeld." ], @@ -4856,11 +5211,20 @@ "Automatically sort your incoming messages before they reach your inbox.": [ "Sorteer automatisch inkomende berichten voordat ze uw inbox bereiken." ], + "Available storage: ${ storageText }": [ + "Beschikbare opslagruimte: ${ storageText }" + ], "Available with ${ title }": [ "Beschikbaar met ${ title }" ], - "Bring over email, calendar events, and contacts from another provider.": [ - "Importeer e-mails, agenda-afspraken en contactpersonen van een andere provider." + "Block Google's ability to profile you. Gmail can't see what you do in ${ MAIL_APP_NAME }": [ + "Voorkom dat Google een profiel van u aanmaakt. Gmail kan niet zien wat u in ${ MAIL_APP_NAME } doet." + ], + "Bring over your email, calendar events, and contacts from another provider.": [ + "Neem uw e-mail, agenda-afspraken en contacten van een andere provider over." + ], + "Build trust and brand recognition with professional email addresses at your own domain.": [ + "Bouw vertrouwen en merkherkenning op met professionele e-mailadressen met uw eigen domeinnaam." ], "Configure this first to activate your organization and customize your email address.": [ "Configureer dit eerst om uw organisatie te activeren en uw e-mailadres aan te passen." @@ -4868,6 +5232,9 @@ "Connect your CRM, website, printers, and more.": [ "Verbind uw CRM, website, printers en meer." ], + "Create a Gateway to give your users access to your IT resources through dedicated servers.": [ + "Maak een Gateway aan om uw gebruikers toegang te geven tot uw IT-middelen via toegewijde servers." + ], "Create a Zoom meeting and add joining details to your event with one click.": [ "Maak een Zoom vergadering en voeg aansluitgegevens met één klik toe aan uw evenement." ], @@ -4877,15 +5244,24 @@ "Create groups you can email with a single address.": [ "Maak groepen aan die u een e-mail kunt sturen met één enkel adres." ], + "Create new user accounts or import users with SSO (single sign-on) SCIM provisioning.": [ + "Nieuwe gebruikersaccounts aanmaken of gebruikers importeren met SSO (single sign-on) SCIM-provisioning." + ], "Create policies to decide who can connect to shared servers in each country.": [ "Maak policies aan om te bepalen wie in elk land kan verbinden met de gedeelde servers." ], + "Decide which users can connect to each of our 120+ shared server locations.": [ + "Bepaal welke gebruikers verbinding kunnen maken met elk van onze meer dan 120 gedeelde serverlocaties." + ], "Easily access your email and calendar on desktop and mobile.": [ "Krijg eenvoudig toegang tot uw e-mail en agenda op desktop en mobiel." ], "Easily sync files to the cloud from your desktop and access them from your mobile device.": [ "Synchroniseer eenvoudig bestanden naar de cloud vanaf uw computer en open ze vanaf uw mobiele apparaat." ], + "Emails sent to ${ connectedAddressText } will now show up in ${ MAIL_APP_NAME }.": [ + "E-mails die naar ${ connectedAddressText } worden verzonden, verschijnen nu in ${ MAIL_APP_NAME }." + ], "Enable ${ PROTON_SENTINEL_NAME } to access these features": [ "Schakel ${ PROTON_SENTINEL_NAME } in om toegang te krijgen tot deze functies" ], @@ -4901,6 +5277,9 @@ "Encrypting and importing contacts... This may take a few minutes. When the process is completed, you can close this modal.": [ "Versleutelen en importeren van contacten... Dit kan enkele minuten duren. Wanneer het proces is voltooid, kunt u dit venster sluiten." ], + "Enough room for years of emails, attachments and more.": [ + "Genoeg ruimte voor jarenlang e-mails, bijlagen en meer." + ], "Ensure secure access to organization data, even if your team is remote or using public WiFi.": [ "Zorg voor veilige toegang tot gegevens van de organisatie, zelfs als uw team op afstand is of openbare wifi gebruikt." ], @@ -4925,12 +5304,27 @@ "Help your team securely store passwords to sensitive business and client information.": [ "Help uw team om wachtwoorden veilig op te slaan voor gevoelige bedrijfs- en klantinformatie." ], + "How we fought back when ${ BRAND_NAME } was blocked in an aggressive campaign.": [ + "Hoe we terugvochten toen ${ BRAND_NAME } werd geblokkeerd in een agressieve campagne." + ], + "How we supported local activists when privacy and free speech were threatened.": [ + "Hoe we lokale activisten hebben ondersteund toen privacy en vrijheid van meningsuiting werd bedreigd." + ], + "How you unlock your encrypted data if you lose your password.": [ + "Hoe u uw versleutelde gegevens kunt ontgrendelen als u uw wachtwoord kwijt bent." + ], + "If you haven’t already, enable some recovery methods to make sure you never lose access to ${ VPN_APP_NAME }.": [ + "Als u dat nog niet hebt gedaan, schakel dan enkele herstelmethoden in om ervoor te zorgen dat u nooit de toegang tot ${ VPN_APP_NAME } verliest." + ], "It looks like the contact list you are importing contains some groups. Please review how these groups should be imported.": [ "Het lijkt erop dat de contactenlijst die u importeert enkele groepen bevat. Bekijk hoe deze groepen moeten worden geïmporteerd." ], "Keep different parts of your life separate and your inbox organized with additional addresses.": [ "Houd verschillende delen van uw leven gescheiden en uw postvak in georganiseerd met extra adressen." ], + "Keep your team secure on the go with our apps for web, iOS, Android, Windows, Mac, and Linux.": [ + "Houd uw team veilig onderweg met onze apps voor web, iOS, Android, Windows, Mac en Linux." + ], "Learn more about common problems": [ "Leer meer over veelvoorkomende problemen" ], @@ -4940,14 +5334,23 @@ "Make your email footer your own — showcase your unique brand, not ours.": [ "Maak uw eigen voettekst — laat uw unieke merk zien, niet de onze." ], + "Methods that include both password reset and data recovery.": [ + "Methoden die zowel wachtwoordherstel als gegevensherstel omvatten." + ], "Most issues can be solved in a few minutes with our step-by-step guides.": [ "De meeste problemen kunnen binnen enkele minuten worden opgelost met onze stapsgewijze handleidingen." ], + "No ads. No trackers.": [ + "Geen advertenties. Geen trackers." + ], "No one in your organization can connect to shared servers.": [ "Niemand in uw organisatie kan verbinding maken met gedeelde servers." ], - "Send a code to your recovery email or phone": [ - "Verzend een code naar uw herstel e-mailadres of telefoon" + "Read, reply, and stay on top of Gmail from within ${ MAIL_APP_NAME }": [ + "Lees, beantwoord en houd uw Gmail bij vanuit ${ MAIL_APP_NAME }" + ], + "Select which categories you want to add and if you want to receive push notifications for each category.": [ + "Selecteer welke categorieën u wilt toevoegen en of u per categorie pushmeldingen wilt ontvangen." ], "Set up accounts for all users and invite them to join ${ BRAND_NAME }.": [ "Stel accounts in voor alle gebruikers en nodig hen uit om lid te worden van ${ BRAND_NAME }." @@ -4961,6 +5364,25 @@ "Still need help? Our support team is here for you.": [ "Heeft u nog steeds hulp nodig? Ons supportteam staat voor u klaar." ], + "This allows you to regain access to your ${ BRAND_NAME } account but does not recover your encrypted data.": [ + "Hiermee krijgt u weer toegang tot uw ${ BRAND_NAME } account, maar uw versleutelde gegevens worden niet hersteld." + ], + "This may happen if permissions were removed or your password changed.": [ + "Dit kan gebeuren als de toegangsrechten zijn ingetrokken of als uw wachtwoord is gewijzigd." + ], + "To connect a different Gmail address, remove extra Gmail addresses forwarding to ${ BRAND_NAME }.": [ + "Om een ander Gmail-adres te koppelen, verwijdert u de extra Gmail-adressen die naar ${ BRAND_NAME } worden doorgestuurd." + ], + "To connect up to ${ MAX_SYNC_PAID_USER } Gmail address, upgrade to ${ planName }.": [ + "Om maximaal ${ MAX_SYNC_PAID_USER } Gmail-adres te koppelen, upgrade naar ${ planName }.", + "Om maximaal ${ MAX_SYNC_PAID_USER } Gmail-adressen te koppelen, upgrade naar ${ planName }." + ], + "To continue receiving and sending Gmail messages in ${ BRAND_NAME }, please reconnect your account.": [ + "Om Gmail-berichten te kunnen blijven ontvangen en verzenden in ${ BRAND_NAME }, moet u uw account opnieuw koppelen." + ], + "To continue receiving and sending Gmail messages in ${ BRAND_NAME }, please reconnect your accounts.": [ + "Om Gmail-berichten te kunnen blijven ontvangen en verzenden in ${ BRAND_NAME }, moet u uw accounts opnieuw koppelen." + ], "To import via a CSV and VCF file, ensure the file does not exceed ${ MAX_IMPORT_FILE_SIZE_STRING } or ${ maxContactString } contacts. If your file is bigger, please split it into smaller files. ${ learnMoreLink }.": [ "Om te importeren via een CSV- en VCF-bestand, moet u ervoor zorgen dat het bestand niet groter is dan ${ MAX_IMPORT_FILE_SIZE_STRING } of niet meer dan ${ maxContactString } contacten bevat. Als uw bestand groter is, splits het dan op in kleinere bestanden. ${ learnMoreLink }." ], @@ -4973,15 +5395,45 @@ "Track the status and activity of your referrals": [ "Volg de status en activiteiten van uw doorverwijzingen" ], + "Unlock 15 GB of storage for just ${ config.offerPrice }.": [ + "Ontgrendel 15 GB opslagruimte voor slechts ${ config.offerPrice }." + ], + "Upgrade to ${ planName } to connect up to ${ MAX_SYNC_PAID_USER } accounts": [ + "Upgrade naar ${ planName } om te koppelen met maximaal ${ MAX_SYNC_PAID_USER }-accounts" + ], "Upgrade to get ${ activatePmUser } for a shorter, easy-to-remember email address in addition to your current one.": [ "Upgrade om ${ activatePmUser } te krijgen voor een korter, makkelijk te onthouden e-mailadres, toegevoegd aan uw huidige adres." ], + "Use a recovery method to reset your password": [ + "Gebruik een herstelmethode om uw wachtwoord opnieuw in te stellen." + ], "Use this guide to get your organization promptly benefiting from ${ BRAND_NAME }'s industry-leading encryption and privacy ecosystem.": [ "Gebruik deze handleiding om uw organisatie snel te laten profiteren van ${ BRAND_NAME }'s toonaangevende versleuteling en privacy ecosysteem." ], + "We can't access ${ boldEmails } anymore.": [ + "We hebben geen toegang meer tot ${ boldEmails }." + ], + "We will pause imports at 80% storage to reserve space for new messages.": [ + "We pauzeren de import bij 80% opslagruimte om ruimte te reserveren voor nieuwe berichten." + ], + "We'll bring in your old emails and connect your Gmail to ${ MAIL_APP_NAME } so new messages appear automatically": [ + "We halen uw oude e-mails op en koppelen uw Gmail-account aan ${ MAIL_APP_NAME }, zodat nieuwe berichten automatisch worden weergegeven" + ], + "We've started importing your emails from Gmail. We'll let you know when it's done.": [ + "We zijn begonnen met het importeren van uw e-mails uit Gmail. We laten het u weten als het klaar is." + ], "We’re sorry to see you go. If you have a moment, we’d really appreciate hearing why you’d like to cancel. Your feedback helps us make ${ BRAND_NAME } better for everyone.": [ "Het spijt ons u te moeten zien vertrekken. Als u even tijd heeft, zouden we het zeer op prijs stellen te horen waarom u wilt annuleren. Uw feedback helpt ons ${ BRAND_NAME } beter te maken voor iedereen." ], + "With new email categories, only important messages land in your primary inbox. Categories work just like spam filters. ${ MAIL_APP_NAME } never reads your emails or shares your data.": [ + "Met nieuwe e-mailcategorieën komen alleen belangrijke berichten in uw primaire inbox terecht. Categorieën werken net als spamfilters. ${ MAIL_APP_NAME } leest nooit uw e-mails en deelt uw gegevens nooit." + ], + "You already have a Gmail address forwarding to ${ MAIL_APP_NAME }. Connect it below to send and receive emails directly from ${ MAIL_APP_NAME }.": [ + "U heeft al een Gmail-adres dat wordt doorgestuurd naar ${ MAIL_APP_NAME }. Koppel het hieronder om e-mails rechtstreeks vanuit ${ MAIL_APP_NAME } te verzenden en te ontvangen." + ], + "You already have Gmail addresses forwarding to ${ MAIL_APP_NAME }. Connect one below to send and receive emails directly from ${ MAIL_APP_NAME }.": [ + "U heeft al Gmail-adressen die worden doorgestuurd naar ${ MAIL_APP_NAME }. Koppel er één hieronder om e-mails rechtstreeks vanuit ${ MAIL_APP_NAME } te verzenden en te ontvangen." + ], "You can customize the list of domains where certain auto functions in ${ PASS_APP_NAME } browser extension (Autofill, Autosuggest, Autosave) should not be run.": [ "U kunt de lijst van domeinen aanpassen waar bepaalde automatische functies in de ${ PASS_APP_NAME } browser extensie (Automatisch aanvullen, automatisch suggesties geven, automatisch opslaan) niet mogen worden uitgevoerd." ], @@ -4996,6 +5448,40 @@ ], "You can merge addresses into one main ${ BRAND_NAME } account using our support guide.": [ "U kunt adressen samenvoegen tot één primair ${ BRAND_NAME } account met behulp van onze ondersteuningsgids." + ], + "You can now send emails from ${ BRAND_NAME } using this address.": [ + "U kunt nu e-mails versturen vanuit ${ BRAND_NAME } via dit adres." + ], + "You can still login with this address and re-connect at any time.": [ + "U kunt nog steeds inloggen met dit adres en op elk gewenst moment opnieuw verbinding maken." + ], + "You will no longer be able to use ${ address.Email } to receive and send emails in ${ BRAND_NAME }. Also note that messages sent to this address from ${ BRAND_NAME } will no longer be end-to-end encrypted.": [ + "U kunt ${ address.Email } niet langer gebruiken om e-mails te ontvangen en te verzenden in ${ BRAND_NAME }. Houd er ook rekening mee dat berichten die vanuit ${ BRAND_NAME } naar dit adres worden verzonden, niet langer end-to-end versleuteld zijn." + ], + "You're forwarding ${ numAddressesOrSync } Gmail address to ${ MAIL_APP_NAME }.": [ + "U stuurt ${ numAddressesOrSync } Gmail-adres door naar ${ MAIL_APP_NAME }.", + "U stuurt ${ numAddressesOrSync } Gmail-adressen door naar ${ MAIL_APP_NAME }." + ], + "You've connected ${ MAX_SYNC_PAID_USER } Gmail address. To add another, first disable one of your connected accounts.": [ + "U heeft ${ MAX_SYNC_PAID_USER } Gmail-adres gekoppeld. Als u nog een adres wilt toevoegen, moet u eerst een van uw gekoppelde accounts ontkoppelen.", + "U heeft ${ MAX_SYNC_PAID_USER } Gmail-adressen gekoppeld. Als u nog een adres wilt toevoegen, moet u eerst een van uw gekoppelde accounts ontkoppelen." + ], + "You've connected one external account address to ${ MAIL_APP_NAME }.": [ + "U heeft één extern e-mailadres gekoppeld aan ${ MAIL_APP_NAME }." + ], + "Your free ${ MAIL_APP_NAME } account comes with limited storage so we'll only import ${ newUserStorageText } of your most recent Gmail messages": [ + "Uw gratis ${ MAIL_APP_NAME }-account wordt geleverd met beperkte opslagruimte, dus we importeren alleen ${ newUserStorageText } van uw meest recente Gmail-berichten" + ], + "Your free ${ MAIL_APP_NAME } account comes with limited storage so we'll only import your most recent Gmail emails.": [ + "Uw gratis ${ MAIL_APP_NAME }-account wordt geleverd met beperkte opslagruimte, dus we importeren alleen uw meest recente Gmail-e-mails." + ], + "Your plan supports ${ MAX_SYNC_FREE_USER } Gmail address.": [ + "Uw abonnement ondersteunt ${ MAX_SYNC_FREE_USER } Gmail-adres.", + "Uw abonnement ondersteunt ${ MAX_SYNC_FREE_USER } Gmail-adressen." + ], + "Your plan supports a total of ${ MAX_SYNC_PAID_USER } Gmail address": [ + "Uw abonnement ondersteunt in totaal ${ MAX_SYNC_PAID_USER } Gmail-adres.", + "Uw abonnement ondersteunt in totaal ${ MAX_SYNC_PAID_USER } Gmail-adressen." ] }, "description": { @@ -5003,6 +5489,11 @@ "gebruik de Easy Switch-importhulp" ] }, + "Description for domain modal": { + "Duplicate DMARC record found, go to the DNS console of your domain provider to fix it.": [ + "Er is een dubbel DMARC-record gevonden. Ga naar de DNS-console van uw domeinprovider om dit te corrigeren." + ] + }, "Description of the purpose of the import CSV modal": { "Also, we have automatically matched CSV fields with vCard fields. You can review and change this matching manually.": [ "Ook hebben we de CSV-velden automatisch vergeleken met vergelijkbare vCard-velden. U kunt de overeenkomsten bekijken en handmatig wijzigen." @@ -5426,6 +5917,9 @@ "120m": [ "120m" ], + "15 minutes": [ + "15 minuten" + ], "30 minutes": [ "30 minuten" ], @@ -5445,6 +5939,14 @@ "90m" ] }, + "Easy switch": { + "To forward emails from up to ${ MAX_SYNC_PAID_USER } accounts, upgrade to ${ planName }.": [ + "Om e-mails door te sturen van maximaal ${ MAX_SYNC_PAID_USER } accounts, upgrade naar ${ planName }." + ], + "You're forwarding emails from one external account to ${ MAIL_APP_NAME }.": [ + "U stuurt e-mails door van één extern account naar ${ MAIL_APP_NAME }." + ] + }, "Edit billing address form note": { "Text fields are optional. The information you provide in this form will only appear on invoices issued in the future and will not affect existing invoices.": [ "Tekstvelden zijn optioneel. De informatie die u in dit formulier verstrekt zal alleen verschijnen op in de toekomst uitgegeven facturen en zal geen invloed hebben op bestaande facturen." @@ -6040,8 +6542,8 @@ "${ user } will not be able to access your account until the next emergency access.": [ "${ user } zal geen toegang kunnen krijgen tot uw account tot de volgende noodtoegang." ], - "**${ contact }** is now your recovery contact. They can help you recover your data after a password reset.": [ - "**${ contact }** is nu uw herstelcontact. Zij kunnen u helpen uw gegevens te herstellen na het resetten van uw wachtwoord." + "**${ contact }** is now your recovery contact. They can help you unlock your data after you reset your password.": [ + "**${ contact }** is nu uw herstelcontact. Zij kunnen u helpen uw gegevens te ontgrendelen nadat u uw wachtwoord opnieuw hebt ingesteld." ], "**If they confirm**, click **Approve recovery**. This will unlock their encrypted data.": [ "**Als zij bevestigen**, klik op **Herstel goedkeuren**. Hiermee worden hun versleutelde gegevens ontgrendeld." @@ -6070,12 +6572,21 @@ "Add": [ "Voeg toe" ], + "Add 1 more": [ + "Voeg er nog 1 toe" + ], "Add emergency contact": [ "Contactpersoon voor noodgevallen toevoegen" ], + "Add option": [ + "Optie toevoegen" + ], "Add recovery contact": [ "Herstelcontact toevoegen" ], + "Add recovery method": [ + "Herstelmethode toevoegen" + ], "Added on ${ formattedDate }": [ "Toegevoegd op ${ formattedDate }" ], @@ -6118,6 +6629,9 @@ "Contacts": [ "Contactpersonen" ], + "Data recovery contacts": [ + "Herstelcontacten toevoegen" + ], "Data successfully recovered. You can now decrypt your existing data and encrypted files.": [ "Gegevens succesvol hersteld. U kunt uw bestaande gegevens en versleutelde bestanden ontsleutelen." ], @@ -6163,6 +6677,12 @@ "Enable auto-renew": [ "Automatisch verlengen activeren" ], + "Enter your extra password": [ + "Voer uw extra wachtwoord in" + ], + "Explore plans": [ + "Verken abonnementen" + ], "For ${ email }": [ "Voor ${ email }" ], @@ -6193,11 +6713,9 @@ "Less than a minute left": [ "Minder dan een minuut resterend" ], - "Let ${ user } know it’s really you trying to regain access.": [ - "Laat ${ user } weten dat u het echt bent die toegang probeert te krijgen." - ], - "None": [ - "Geen" + "Maximum of ${ limit } contact reached. To change, remove a contact and add a new one.": [ + "Maximum van ${ limit } contact werd bereikt. Om dit te wijzigen, verwijdert u een contactpersoon en voegt u een nieuwe toe.", + "Maximum van ${ limit } contacten werd bereikt. Om dit te wijzigen, verwijdert u een contactpersoon en voegt u een nieuwe toe." ], "Only ": [ "Slechts " @@ -6289,14 +6807,11 @@ "Select recovery contact ${ name }": [ "Herstelcontact ${ name } selecteren" ], - "Send email request": [ - "E-mailverzoek verzenden" - ], "Send recovery request": [ "Herstelverzoek verzenden" ], - "Set account recovery": [ - "Accountherstel instellen" + "Start recovery": [ + "Herstel starten" ], "Stop being recovery contact": [ "Niet langer herstelcontact zijn" @@ -6316,9 +6831,15 @@ "They added me as trusted contact. I can access their account in case of an emergency.": [ "Zij hebben mij toegevoegd als vertrouwd contact. Ik kan toegang krijgen tot hun account in geval van nood." ], + "They added you as trusted contact. You can access their account in case of an emergency.": [ + "Ze hebben u toegevoegd als vertrouwd contactpersoon. U kunt in geval van nood toegang krijgen tot hun account." + ], "They may ask to access my account in case of an emergency.": [ "Zij kunnen vragen om toegang tot mijn account te krijgen in geval van nood." ], + "They may ask to access your account in case of an emergency.": [ + "Zij kunnen vragen om toegang tot mijn account te krijgen in geval van nood." + ], "They will receive access automatically in **${ days } day**, on **${ formattedAccessibleAt }**, you can reject their request or give them access immediately at any time.": [ "Zij ontvangen automatisch toegang binnen **${ days } dag**, op **${ formattedAccessibleAt }**. U kunt hun verzoek afwijzen of hen op elk moment onmiddellijk toegang geven.", "Zij ontvangen automatisch toegang binnen **${ days } dagen**, op **${ formattedAccessibleAt }**. U kunt hun verzoek afwijzen of hen op elk moment onmiddellijk toegang geven." @@ -6335,6 +6856,9 @@ "Time required before automatically granting them access": [ "Benodigde tijd voordat hen automatisch toegang wordt verleend" ], + "To add recovery contacts, you must have a recovery email address or phone number.": [ + "Om herstel contactpersonen toe te voegen, hebt u een herstel e-mailadres of telefoonnummer nodig." + ], "To disable this recovery method, remove all your recovery contacts.": [ "Om deze herstelmethode uit te schakelen, verwijdert u al uw herstelcontacten." ], @@ -6344,6 +6868,9 @@ "Unable to recover data": [ "Kan gegevens niet herstellen" ], + "Unlock ${ PASS_APP_NAME }": [ + "Ontgrendel ${ PASS_APP_NAME }" + ], "Upgrade": [ "Upgraden" ], @@ -6365,6 +6892,9 @@ "We received a request to unlock the encrypted data of your contact **${ user }**.": [ "We hebben een verzoek ontvangen om de versleutelde gegevens van uw contactpersoon **${ user }** te ontgrendelen." ], + "We sent an email request to ${ user }. Let them know it's really you trying to regain access.": [ + "We hebben een e-mailverzoek naar ${ user } gestuurd. Laat hen weten dat u het bent die probeert de toegang te herstellen." + ], "We were not able to verify the recovery data. Proceed anyway?": [ "We konden de herstelgegevens niet verifiëren. Toch doorgaan?" ], @@ -6461,6 +6991,12 @@ "Address cannot be yours": [ "Het adres kan niet van u zijn" ], + "Address could not be added.": [ + "Adres kon niet worden toegevoegd." + ], + "Address is already added to your account": [ + "Het adres is al aan uw account toegevoegd" + ], "Address primary private key not found": [ "Primaire adressleutel is niet gevonden" ], @@ -6688,6 +7224,9 @@ "Invalid invitation link": [ "Ongeldige uitnodigingskoppeling" ], + "Invalid joining link. Please contact your administrator.": [ + "Ongeldige deelnamelink. Neem contact op met uw beheerder." + ], "Invalid name": [ "Ongeldige naam" ], @@ -6864,9 +7403,6 @@ "Please try again in a few moments.": [ "Probeer het opnieuw in enkele ogenblikken." ], - "Please upgrade to a business plan with more than 1 user to get multi-user support": [ - "Upgrade naar een zakelijk abonnement met meer dan 1 gebruiker om multi-gebruiker ondersteuning te ontvangen" - ], "Please upgrade to a business plan with more than 1 user to manage multiple users.": [ "Upgrade naar een zakelijk abonnement met meer dan 1 gebruiker om meerdere gebruikers te beheren." ], @@ -6937,6 +7473,12 @@ "Some of your label names exceed ${ MAIL_APP_NAME }'s maximum character limit. Please customize the import to edit these names.": [ "Sommige van uw labelnamen overschrijden de maximum tekenlimiet van ${ MAIL_APP_NAME }. Pas de import aan om deze namen te bewerken." ], + "Something went wrong while creating the address": [ + "Er is iets misgegaan tijdens het aanmaken van het adres" + ], + "Something went wrong while fetching available domains": [ + "Er is een fout opgetreden bij het ophalen van beschikbare domeinnamen" + ], "Something went wrong, please ${ refresh } in order to proceed. If you still see this error message please contact our ${ supportTeam }.": [ "Er ging iets mis, gelieve ${ refresh } om door te gaan. Als u dit foutbericht nog steeds ziet, neem dan contact op met onze ${ supportTeam }." ], @@ -7003,6 +7545,9 @@ "There are too many folders in your external account. Please customize the import to delete some folders.": [ "Er zijn te veel mappen op uw externe account. Pas de import aan om enkele mappen te verwijderen." ], + "There was an error, please try again.": [ + "Er is een fout opgetreden, probeert u het nog eens." + ], "This field exceeds the maximum of ${ maximumLength } characters.": [ "Dit veld overschrijdt het maximum ${ maximumLength } tekens." ], @@ -7285,6 +7830,9 @@ "Ask your administrator to enable Account monitor.": [ "Vraag uw beheerder om Account monitor in te schakelen." ], + "Enable account monitor to start loading event.": [ + "Schakel de accountmonitor in om afspraken te laden." + ], "Error: ${ errorMessage }": [ "Fout: ${ errorMessage }" ], @@ -7790,18 +8338,42 @@ ] }, "Feature": { + "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME } desktop app": [ + "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME }-desktop app" + ], "${ MaxVPN } VPN connection": [ "${ MaxVPN } VPN-verbinding", "${ MaxVPN } VPN-verbindingen" ], - "Access to all countries": [ - "Toegang tot alle landen" + "${ PROTON_SENTINEL_NAME } account protection": [ + "${ PROTON_SENTINEL_NAME } account bescherming" ], - "Add": [ - "Toevoegen" + "10+ premium features": [ + "10+ premium functies" ], - "Add (${ totalAddedCount })": [ - "Toevoegen (${ totalAddedCount })", + "15 GB storage": [ + "15 GB opslagruimte" + ], + "3 email domains": [ + "3 e-mail domeinen" + ], + "500 GB storage": [ + "500 GB opslagruimte" + ], + "500 MB Mail storage": [ + "500 GB e-mail ruimte" + ], + "500 MB storage": [ + "500 MB opslagruimte" + ], + "Access to all countries": [ + "Toegang tot alle landen" + ], + "Add": [ + "Toevoegen" + ], + "Add (${ totalAddedCount })": [ + "Toevoegen (${ totalAddedCount })", "Toevoegen (${ totalAddedCount })" ], "Connection for up to ${ plusVpnConnections } device": [ @@ -7811,6 +8383,12 @@ "Continue": [ "Doorgaan" ], + "Custom email domain": [ + "Aangepast e-maildomein" + ], + "Email addresses": [ + "E-mailadressen" + ], "Encrypted cloud storage for files, photos and documents": [ "Versleutelde cloudopslag voor bestanden, foto's en documenten" ], @@ -7820,20 +8398,38 @@ "More premium features": [ "Meer premium functies" ], + "Premium features in Mail, Calendar, Drive, Pass and VPN": [ + "Premiumfuncties in Mail, Agenda, Drive, Pass en VPN" + ], "Remove": [ "Verwijderen" ], + "Schedule and snooze emails": [ + "E-mails inplannen en uitstellen" + ], "Secure Core servers": [ "Secure Core-servers" ], "Secure streaming support": [ "Veilig streamen" ], + "Short domain @pm.me": [ + "Kort domein @pm.me" + ], + "Storage": [ + "Opslagruimte" + ], "Torrenting support (P2P)": [ "Ondersteuning voor Torrents (P2P)" ], + "Unlimited folders, labels and filters": [ + "Onbeperkt aantal mappen, labels en filters" + ], "Unlimited hide-my-email aliases": [ "Onbeperkt aantal hide-my-email-aliassen" + ], + "Use your own email domain": [ + "Gebruik uw eigen e-maildomein" ] }, "Features": { @@ -8188,8 +8784,11 @@ ] }, "Force upgrade safety review": { - "I understand that I will no longer be able to sign in to older versions of ${ BRAND_NAME } mobile apps.": [ - "Ik begrijp dat ik niet langer kan inloggen via oudere versies van de ${ BRAND_NAME } mobiele app." + "I understand that I will no longer be able to sign in to older versions of ${ BRAND_NAME } apps.": [ + "Ik begrijp dat ik me niet meer kan aanmelden bij oudere versies van ${ BRAND_NAME } apps." + ], + "Learn more": [ + "Meer informatie" ] }, "Form heading": { @@ -8290,6 +8889,9 @@ ], "Group address:": [ "Groepsadres:" + ], + "Roles and permission:": [ + "Rollen en machtiging:" ] }, "Group member count": { @@ -8349,6 +8951,14 @@ "Groepslidmaatschap" ] }, + "group_modal": { + "General": [ + "Algemeen" + ], + "Roles and permissions": [ + "Rollen en permissies" + ] + }, "Header": { "Access": [ "Toegang" @@ -8989,6 +9599,12 @@ "${ boldWarning } You will lose access to all current encrypted data in your account if you continue.": [ "${ boldWarning } U verliest de toegang tot alle huidige versleutelde gegevens in uw account als u doorgaat." ], + "${ BRAND_NAME } Free": [ + "${ BRAND_NAME } Free" + ], + "${ BRAND_NAME } is independently funded and operates without advertising. Below are examples of how this independence has been used in practice.": [ + "${ BRAND_NAME } wordt onafhankelijk gefinancierd en werkt zonder advertenties. Hieronder vindt u voorbeelden van hoe deze onafhankelijkheid in de praktijk is toegepast." + ], "${ BRAND_NAME } is privacy you can trust, ensured by strong encryption, open-source code, and Swiss privacy laws. We believe nobody should be able to exploit your data, period. Our technology and business are based upon this fundamentally stronger definition of privacy.": [ "${ BRAND_NAME } is privacy waarop u kunt vertrouwen, gegarandeerd door sterke versleuteling, open sourcecode en Zwitserse privacywetten. Wij zijn van mening dat niemand uw gegevens mag misbruiken, punt uit. Onze technologie en ons bedrijf zijn gebaseerd op deze fundamenteel sterkere definitie van privacy." ], @@ -9001,6 +9617,9 @@ "${ BRAND_NAME } will send a verification code to ${ phoneNumber }. Standard message rates may apply.": [ "${ BRAND_NAME } stuurt een verificatiecode naar ${ phoneNumber }. Tarieven voor standaardberichten kunnen van toepassing zijn." ], + "${ BRAND_NAME } will send a verification code to your recovery phone. Standard message rates may apply.": [ + "${ BRAND_NAME } stuurt een verificatiecode naar uw hersteltelefoon. Tarieven voor standaardberichten kunnen van toepassing zijn." + ], "${ BRAND_NAME }'s encryption technology means that nobody can access your password - not even us.": [ "${ BRAND_NAME }'s versleutelingstechnologie betekent dat niemand toegang heeft tot uw wachten - zelfs wij niet." ], @@ -9025,6 +9644,9 @@ "${ discountPercent }% discount": [ "${ discountPercent }% korting" ], + "${ DRIVE_APP_NAME } will no longer keep previous versions of your files.": [ + "${ DRIVE_APP_NAME } zal niet langer vorige versies van uw bestanden behouden." + ], "${ emailAddress } is invalid": [ "${ emailAddress } is ongeldig" ], @@ -9086,6 +9708,9 @@ "${ name } for Windows": [ "${ name } voor Windows" ], + "${ name } is not available": [ + "${ name } is niet beschikbaar" + ], "${ none }: do not quarantine or reject unauthorized emails. Usually, people only use this policy to troubleshoot or test.": [ "${ none }: niet quarantaine of afwijzing van ongeautoriseerde e-mails. Meestal gebruiken mensen dit beleid alleen om problemen te krijgen of te testen." ], @@ -9207,6 +9832,9 @@ "${ vaultLink } updated": [ "${ vaultLink } bijgewerkt" ], + "${ VPN_SHORT_APP_NAME } hides your traffic. ${ PASS_SHORT_APP_NAME } hides your identity\n— unlimited **hide-my-email aliases** and **dark-web alerts** if your data is ever leaked.": [ + "${ VPN_SHORT_APP_NAME } verbergt uw internetverkeer. ${ PASS_SHORT_APP_NAME } verbergt uw identiteit\n— oneindig **hide-my-email aliassen** en **dark-web waarschuwingen** als uw gegevens ooit uitlekken." + ], "${ vpnPlus } required for Country level connection.": [ "${ vpnPlus } vereist voor verbindingen op landniveau." ], @@ -9244,6 +9872,9 @@ "(formerly Twitter)": [ "(voorheen Twitter)" ], + "**${ appName }** is not available for your account.": [ + "**${ appName }** is niet beschikbaar voor uw account." + ], "**${ appName }** is not supported in your organization **${ organizationName }**.": [ "**${ appName }** wordt niet ondersteund in uw organisatie **${ organizationName }**." ], @@ -9286,9 +9917,15 @@ "**This will disable end-to-end encrypted email forwardings:** you can set them up again later.": [ "**Dit zal end-to-end versleutelde e-mail doorsturingen uitschakelen:** u kunt deze later opnieuw instellen." ], + "**Your recovery email alone doesn't allow you to recover your encrypted data** after you reset your password.": [ + "**Uw herstel e-mail alleen is niet voldoende om uw versleutelde gegevens te herstellen** nadat u uw wachtwoord opnieuw hebt ingesteld." + ], "**Your recovery methods will be invalidated:** you can generate new recovery data later.": [ "**Uw herstelmethoden worden ongeldig gemaakt:** u kunt later nieuwe herstelgegevens genereren." ], + "**Your recovery phone alone doesn’t allow you to recover your encrypted data** after you reset your password.": [ + "**Uw hersteltelefoon alleen is niet voldoende om uw versleutelde gegevens te herstellen** nadat u uw wachtwoord opnieuw hebt ingesteld." + ], "+ ${ invisibleCount } More": [ "+ ${ invisibleCount } Meer", "+ ${ invisibleCount } Meer" @@ -9354,15 +9991,27 @@ "Activity Monitor": [ "Activiteitenmonitor" ], + "Add ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }": [ + "${ BRAND_NAME } ${ PASS_SHORT_APP_NAME } toevoegen" + ], "Add ${ PLAN_NAMES[PLANS.MEET_BUSINESS] }": [ "Voeg ${ PLAN_NAMES[PLANS.MEET_BUSINESS] } toe" ], + "Add 1 to 5 people who you trust and can contact easily. They will be able to reset your password for you by signing in to your account. They must already have a ${ BRAND_NAME } Account.": [ + "Voeg 1 tot 5 personen toe die u vertrouwt en die u gemakkelijk kunt bereiken. Zij kunnen uw wachtwoord voor u resetten door in te loggen op uw account. Ze moeten al een ${ BRAND_NAME } account hebben." + ], "Add a @pm.me email address to your account. This simple, shorter domain stands for \"${ MAIL_APP_NAME } me\" or \"Private Message me.\"": [ "Voeg een @pm.me-e-mailadres toe aan uw account.\nDit eenvoudige en kortere domein staat voor \"${ MAIL_APP_NAME } me\" of \"Stuur mij een privébericht.\"" ], + "Add a phone number in case we need to contact you": [ + "Voeg een telefoonnummer toe voor het geval we contact met u moeten opnemen." + ], "add a recovery method": [ "een herstelmethode toe voegt" ], + "Add an email address in case we need to contact you": [ + "Voeg een e-mailadres toe voor het geval we contact met u moeten opnemen." + ], "Add another layer of security to your account. You’ll need to verify yourself with 2FA every time you sign in.": [ "Voeg extra beveiliging toe aan uw account. U moet uzelf verifiëren met 2FA elke keer dat u zich aanmeldt." ], @@ -9391,9 +10040,9 @@ "Add your name and logo to create a more personalized experience for your organization.": [ "Voeg uw naam en logo toe om een gepersonaliseerde ervaring voor uw organisatie te maken." ], - "Adding ${ addedServerCount } gateway server": [ - "${ addedServerCount } gatewayserver wordt toegevoegd", - "${ addedServerCount } gatewayservers worden toegevoegd" + "Adding ${ total } gateway server": [ + "${ total } gateway server wordt toegevoegd", + "${ total } gateway servers worden toegevoegd" ], "Adding an external email address will disable end-to-end encryption for all email communication within that group. Do you want to proceed?": [ "Het toevoegen van een extern e-mailadres zal end-to-end versleuteling voor alle e-mailcommunicatie binnen die groep uitschakelen. Wilt u doorgaan?" @@ -9463,6 +10112,12 @@ "Allow users to connect to secure shared servers from the **Countries** section of the ${ VPN_APP_NAME } app.": [ "Sta gebruikers toe om verbinding te maken met beveiligde gedeelde servers van de **Landen** sectie van de ${ VPN_APP_NAME }-app." ], + "Allowing QR code sign-in will let you sign in by scanning a QR code if you forget your password. All you need is to be signed in to a ${ BRAND_NAME } service on another device.": [ + "Door inloggen via QR-code toe te staan, kunt u inloggen door een QR-code te scannen als u uw wachtwoord bent vergeten. Het enige wat u hoeft te doen, is ingelogd zijn bij een ${ BRAND_NAME }-service op een ander apparaat." + ], + "Allowing the password reset from the settings lets you to change your password if you’ve lost it, but are still signed in to ${ BRAND_NAME }.": [ + "Door de optie voor het opnieuw instellen van het wachtwoord in de instellingen toe te staan, kunt u uw wachtwoord wijzigen als u het bent kwijtgeraakt, maar nog steeds bent ingelogd bij ${ BRAND_NAME }." + ], "Already allocated": [ "Reeds toegewezen" ], @@ -9568,6 +10223,9 @@ "Are you sure you want to revoke certificate **${ name }**": [ "Weet u zeker dat u certificaat **${ name }** wilt intrekken" ], + "Are you sure you want to sign out of this account?": [ + "Weet u zeker dat u zich wilt afmelden bij dit account?" + ], "Are you sure you want to sort your folders alphabetically?": [ "Weet u zeker dat u uw mappen alfabetisch wilt sorteren?" ], @@ -9664,9 +10322,15 @@ "Before you can start sending and receiving emails from your new addresses you need to create encryption keys for them.": [ "Voordat u e-mails kunt verzenden en ontvangen van uw nieuwe adressen, moet u versleutelingssleutels aanmaken." ], + "BEST FOR TV": [ + "BESTE VOOR TV" + ], "Beta": [ "Bèta" ], + "Billed at ${ yearlyDiscountedPrice } for the first 12 months, renews at ${ yearlyRenewalPrice }.": [ + "De eerste 12 maanden wordt het abonnement gefactureerd tegen ${ yearlyDiscountedPrice }, waarna het wordt verlengd tegen ${ yearlyRenewalPrice }." + ], "Billing cycle: ${ text }": [ "Facturatiefrequentie: ${ text }" ], @@ -9676,6 +10340,9 @@ "Boost your organization’s brand identity and create a more consistent online experience for your users.": [ "Boost de merkidentiteit van uw organisatie en creëer een consistentere online ervaring voor uw gebruikers." ], + "By adding people you trust as recovery contacts, we'll be able to send them an email to help you if you're having trouble recovering your data after a password reset. You can also be a recovery contact for others.": [ + "Door mensen die u vertrouwt toe te voegen als contactpersonen voor gegevensherstel, kunnen we hen een e-mail sturen om u te helpen als u problemen ondervindt bij het herstellen van uw gegevens na een wachtwoordreset. U kunt ook zelf een contactpersoon voor gegevensherstel zijn voor anderen." + ], "By creating a ${ PASS_APP_NAME } account with your SimpleLogin email, you can manage your aliases directly from ${ PASS_APP_NAME }.": [ "Door een ${ PASS_APP_NAME }-account te maken met uw SimpleLogin e-mailadres, kunt u uw aliassen direct vanuit ${ PASS_APP_NAME } beheren." ], @@ -9712,9 +10379,6 @@ "Change your password": [ "Wijzig uw wachtwoord" ], - "Check the status of imports and forwarding.": [ - "Controleer de status van uw import- en doorstuuropdrachten." - ], "Check your network and try again.": [ "Controleer uw netwerk en probeer het opnieuw." ], @@ -9748,6 +10412,9 @@ "CNET editors choice award with a rating of 8.4 out of 10": [ "CNET editors keuze met een beoordeling van 8,4 van de 10" ], + "Code has been re-sent.": [ + "De code is opnieuw verzonden." + ], "Coming soon": [ "Binnenkort beschikbaar" ], @@ -9763,6 +10430,9 @@ "Configure SAML authentication for your organization through an identity provider like Okta, Microsoft Azure, or Google Identity Platform. This will enable SAML for the whole organization.": [ "Configureer SAML-authenticatie voor uw organisatie via een identiteitsprovider zoals Okta, Microsoft Azure of Google Identity Platform. Dit zal SAML voor de hele organisatie inschakelen." ], + "Connect and manage your external mailboxes in ${ MAIL_APP_NAME }.": [ + "Verbind en beheer uw externe mailboxen in ${ MAIL_APP_NAME }." + ], "Connection data will be available in around 1 hour.": [ "Verbindingsgegevens zullen beschikbaar zijn in ongeveer 1 uur." ], @@ -9781,6 +10451,9 @@ "Continue to connect this entity with your ${ BRAND_NAME } organization.": [ "Ga door om deze entiteit te verbinden met uw ${ BRAND_NAME } organisatie." ], + "Continue with ${ BRAND_NAME } Free": [ + "Ga verder met ${ BRAND_NAME } Free" + ], "Continuing will connect your ${ BRAND_NAME } Account to ${ name }.": [ "Doorgaan zal uw ${ BRAND_NAME }-account verbinden met ${ name }." ], @@ -9821,9 +10494,9 @@ "Create a new code on your TV and try again.": [ "Maak een nieuwe code aan op uw tv en probeer het opnieuw." ], - "Create a secure cloud for ${ value } member": [ - "Maak een beveiligde cloud voor ${ value } lid", - "Maak een beveiligde cloud voor ${ value } leden" + "Create a secure cloud for ${ memberCount } member": [ + "Maak een beveiligde cloud voor ${ memberCount } lid", + "Maak een beveiligde cloud voor ${ memberCount } leden" ], "Create an account": [ "Maak een account aan" @@ -9841,6 +10514,10 @@ "Gatewayserver wordt opgezet: ${ serverNumber } / ${ total }", "Gatewayservers worden opgezet: ${ serverNumber } / ${ total }" ], + "Creating gateway with ${ total } server": [ + "Gateway aanmaken met ${ total } server", + "Gateway aanmaken met ${ total } servers" + ], "Creating your account": [ "Account aan het aanmaken" ], @@ -9889,6 +10566,9 @@ "Data recoverable with recovery phrase": [ "Gegevens kunnen worden hersteld met een herstelzin." ], + "Data recovery requires a password reset option (email or SMS)": [ + "Voor gegevensherstel is een optie voor het opnieuw instellen van het wachtwoord vereist (via e-mail of sms)." + ], "dedicated servers": [ "toegewijde servers" ], @@ -9935,6 +10615,9 @@ "Disabling authenticator app 2FA will make your account less secure. Only proceed if absolutely necessary.": [ "Het uitschakelen van de authenticatie-app 2FA maakt uw account minder veilig. Ga alleen verder als dit absoluut noodzakelijk is." ], + "Disabling the data backup on this device will prevent you from automatically unlocking your encrypted data after a password reset.": [ + "Door de back-upfunctie op dit apparaat uit te schakelen, voorkomt u dat uw versleutelde gegevens automatisch worden ontgrendeld na een wachtwoordreset." + ], "Discount": [ "Korting" ], @@ -10092,6 +10775,9 @@ "Enabling recovery by phrase again will generate a new recovery phrase.": [ "Het opnieuw inschakelen van herstel per uitdrukking zal een nieuwe herstelzin genereren." ], + "Enabling the data backup on this device will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset, simply by signing in on this device.": [ + "Door de back-upfunctie op dit apparaat in te schakelen, krijgt u na een wachtwoordreset weer toegang tot uw e-mails, contacten, bestanden, wachtwoorden en alle andere versleutelde gegevens op uw account. Dit doet u simpelweg door in te loggen op dit apparaat." + ], "Encryption setting updated": [ "Versleutelingsinstelling bijgewerkt" ], @@ -10251,6 +10937,9 @@ "for ${ price }": [ "voor ${ price }" ], + "For a 10-year version history, please contact our sales team.": [ + "Voor een versiegeschiedenis van 10 jaar, kunt u contact opnemen met ons verkoopteam." + ], "For anytime access to email and an optimized mobile experience, download our ${ androidAppLink } or ${ iosAppLink }.": [ "Om altijd toegang te hebben tot e-mail en een geoptimaliseerde mobiele ervaring, download onze ${ androidAppLink } of ${ iosAppLink }-app." ], @@ -10260,12 +10949,12 @@ "For easy access to your passwords and more.": [ "Voor eenvoudige toegang tot uw wachtwoorden en meer." ], + "For just ${ bundlePlanPriceInline }": [ + "Voor maar ${ bundlePlanPriceInline }" + ], "For users who are switching to ${ MAIL_APP_NAME } from another email service, select the ${ boldAddresses } tab and add all active email addresses before changing the MX record to ensure a smooth transition.": [ "Voor gebruikers die overschakelen naar ${ MAIL_APP_NAME } vanuit een andere e-maildienst, selecteer het tabblad ${ boldAddresses } en voeg alle actieve e-mailadressen toe voordat u het MX-record wijzigt om te zorgen voor een soepele overgang." ], - "Forwarding automatically sends new incoming emails to your Inbox.": [ - "Doorsturen stuurt nieuwe inkomende e-mails automatisch naar uw inbox." - ], "Free forever": [ "Altijd gratis" ], @@ -10293,6 +10982,9 @@ "Gateways": [ "Gateways" ], + "Generating a new recovery phrase will deactivate your current recovery phrase.": [ + "Het genereren van een nieuwe herstelzin deactiveert uw huidige herstelzin." + ], "Generating a new recovery phrase will deactivate your old one.": [ "Als u een nieuwe herstelzin genereert, wordt uw oude zin gedeactiveerd." ], @@ -10314,12 +11006,18 @@ "Get notified if your password or other personal data was leaked. ${ learnMoreLinkNoBreach }": [ "Ontvang een melding als uw wachtwoord of andere persoonlijke gegevens gelekt zijn. ${ learnMoreLinkNoBreach }" ], + "Get started": [ + "Aan de slag" + ], "Get started with the referral link above.": [ "Ga aan de slag met de verwijzingskoppeling hierboven." ], "Get visibility into account access": [ "Krijg inzicht in accounttoegang" ], + "Get VPN Plus": [ + "Neem VPN Plus" + ], "Give the token a descriptive name, such as the service you plan to use it with, and select one of your active custom domain addresses. Only this address will be able to send emails with this token.": [ "Geef de token een beschrijvende naam, zoals de dienst waarmee u deze gaat gebruiken, en selecteer één van de actieve aangepaste domeinadressen. Enkel dit adres zal e-mails kunnen verzenden met dit token." ], @@ -10377,6 +11075,12 @@ "If another administrator changed this password, you will need to ask them for the new Organization Password.": [ "Wanneer een andere beheerder dit wachtwoord heeft aangepast, dan moet u hem naar het nieuwe organisatiewachtwoord vragen." ], + "If disabled, ${ BRAND_NAME } will still use your recovery email to send security notifications.": [ + "Indien uitgeschakeld, zal ${ BRAND_NAME } nog steeds uw herstel-e-mailadres gebruiken om beveiligingsmeldingen te verzenden." + ], + "If disabled, ${ BRAND_NAME } will still use your recovery phone to send security notifications.": [ + "Indien uitgeschakeld, zal ${ BRAND_NAME } uw hersteltelefoon nog steeds gebruiken om beveiligingsmeldingen te verzenden." + ], "If disabled, only administrators will be able to export data.": [ "Indien uitgeschakeld, kunnen alleen administrators gegevens exporteren." ], @@ -10395,6 +11099,9 @@ "If keyboard shortcuts are enabled, you can use the following keys for quick actions or to jump to different views. ${ metaKey } + K is always enabled.": [ "Als sneltoetsen ingeschakeld zijn, kunt u de volgende toetsen gebruiken voor snelle acties of naar verschillende weergaven springen. ${ metaKey } + K is altijd ingeschakeld." ], + "If possible, when signing in, use a device or a browser where you’ve signed in before.": [ + "Gebruik bij het inloggen, indien mogelijk, een apparaat of browser waarmee u al eerder bent ingelogd." + ], "If the email you entered was used to reserve a child's email address, we'll resend the activation voucher.": [ "Als de e-mail die u hebt ingevoerd is gebruikt om het e-mailadres van een kind te reserveren, sturen we de activeringsvoucher opnieuw." ], @@ -10452,6 +11159,9 @@ "If you purchased a gift code or received one from our support team, you can enter it here.": [ "Als u een geschenkcode heeft gekocht of ontvangen van ons supportteam, kunt u deze hier invoeren." ], + "If you recently reset your password, you can ${ recoveryMethodLink } to unlock your data. If this is due to an old password reset, you can stop the message from showing again.": [ + "Als u onlangs uw wachtwoord opnieuw hebt ingesteld, kunt u ${ recoveryMethodLink } gebruiken om uw gegevens te ontgrendelen. Als dit komt door een eerdere wachtwoordreset, kunt u voorkomen dat het bericht opnieuw wordt weergegeven." + ], "If you recently reset your password, you can use a data recovery method to unlock your data": [ "Als u recent uw wachtwoord gereset heeft, kan u de data herstelmethode gebruiken om uw data te ontgrendelen" ], @@ -10514,6 +11224,9 @@ "Include device, location, and IP details": [ "Inclusief apparaat-, locatie- en IP-gegevens" ], + "Included": [ + "inbegrepen" + ], "Increase your account security by verifying your email address.": [ "Verhoog de beveiliging van uw account door uw e-mailadres te verifiëren." ], @@ -10647,6 +11360,12 @@ "Item updated in vault": [ "Item bijgewerkt in kluis" ], + "It’s often the easiest way to recover your account if you’re signed in.": [ + "Het is vaak de gemakkelijkste manier om uw account te herstellen als u bent ingelogd." + ], + "It’s the only way to instantly recover everything, so make sure you keep it somewhere safe but accessible.": [ + "Het is de enige manier om alles direct terug te krijgen, dus zorg ervoor dat u het op een veilige, maar toegankelijke plek bewaart." + ], "JCB logo": [ "JCB-logo" ], @@ -10854,15 +11573,15 @@ "No card required": [ "Geen kaart vereist" ], + "No connected addresses.": [ + "Geen gekoppelde adressen." + ], "No countries enabled": [ "Geen landen ingeschakeld" ], "No folder selected": [ "Geen map geselecteerd" ], - "No forwarding history.": [ - "Geen doorsturen van geschiedenis." - ], "No gateways": [ "Geen gateways" ], @@ -10923,6 +11642,9 @@ "Only change these settings if you are using PGP with non-${ BRAND_NAME } recipients.": [ "Wijzig deze instellingen alleen als u PGP met niet-${ BRAND_NAME } ontvangers gebruikt." ], + "Only sign in on devices you trust": [ + "Meld u alleen aan op apparaten die u vertrouwt." + ], "Only you can see the label": [ "Alleen u kunt het label zien." ], @@ -11188,9 +11910,18 @@ "Recently used servers:": [ "Recent gebruikte servers:" ], + "RECOMMENDED": [ + "AANBEVOLEN" + ], "Recommended on trusted devices. ${ keepMeSignedInLearnMoreLink }": [ "Aanbevolen op vertrouwde apparaten. ${ keepMeSignedInLearnMoreLink }" ], + "Recovery by email is not available while ${ PROTON_SENTINEL_NAME } is enabled.": [ + "Herstel via e-mail is niet beschikbaar zolang ${ PROTON_SENTINEL_NAME } is ingeschakeld." + ], + "Recovery by phone is not available while ${ PROTON_SENTINEL_NAME } is enabled.": [ + "Herstel via de telefoon is niet beschikbaar zolang ${ PROTON_SENTINEL_NAME } is ingeschakeld." + ], "Recovery file downloaded": [ "Herstelbestand gedownload" ], @@ -11344,6 +12075,9 @@ "Set up your organization": [ "Stel uw organisatie in" ], + "Set up your organization and start protecting your data in a few easy steps.": [ + "Richt uw organisatie in en begin in een paar eenvoudige stappen met het beschermen van uw gegevens." + ], "Setting successfully saved": [ "Instellingen succesvol bijgewerkt" ], @@ -11381,6 +12115,12 @@ "Show each sender's image in the message list. The sender's initials will be shown if a photo is not available.": [ "Toon de afbeelding van elke afzender in deze berichtlijst. De afzenders initialen zullen worden getoond als er geen foto beschikbaar is." ], + "Show fewer benefits": [ + "Toon minder voordelen" + ], + "Show more benefits": [ + "Toon meer voordelen" + ], "Show original message": [ "Toon origineel bericht" ], @@ -11426,9 +12166,6 @@ "Something went wrong. Please try again or contact customer support.": [ "Er is iets misgegaan. Probeer het opnieuw of neem contact op met de klantenondersteuning." ], - "Something went wrong. Please try again.": [ - "Er is iets fout gegaan. Probeer het opnieuw." - ], "Specify the domain which is allowed to authenticate with SAML SSO.": [ "Geef het domein op dat is toegestaan om te verifiëren met SAML SSO." ], @@ -11518,6 +12255,9 @@ "TechRadar Pro recommended with a rating of 4.2 out of 5 stars": [ "Aanbevolen door TechRadar Pro met een beoordeling van 4,2 van de 5 sterren." ], + "Temporarily unavailable due to high demand. Please try again later.": [ + "Tijdelijk niet leverbaar wegens grote vraag. Probeer het later opnieuw." + ], "Temporarily unavailable. Please check back later.": [ "Tijdelijk onbeschikbaar. Probeer later opnieuw." ], @@ -11650,6 +12390,9 @@ "This could take some time. Please do not close this page or disconnect from the internet.": [ "Dit kan wat tijd in beslag nemen. Sluit deze pagina niet af en verbreek de verbinding met het internet niet." ], + "This data recovery method requires a password reset option (email or SMS)": [ + "Deze methode voor gegevensherstel vereist een optie om het wachtwoord opnieuw in te stellen (via e-mail of sms)." + ], "This feature delays sending your emails, giving you the opportunity to undo send during the selected time frame.": [ "Deze functie vertraagt het verzenden van uw e-mails, waardoor u de kans krijgt om het verzenden ongedaan te maken gedurende het geselecteerde tijdsbestek." ], @@ -11692,6 +12435,9 @@ "This message won't reach the support team, if you have an issue with our service or need further action from our side ${ supportLink }.": [ "Dit bericht zal het supportteam niet bereiken. Als u een probleem heeft met onze dienst of als er vanuit onze kant actie ondernomen moet worden ${ supportLink }." ], + "This password is used to login to your ${ BRAND_NAME } account": [ + "Dit wachtwoord wordt gebruikt om in te loggen op uw ${ BRAND_NAME }-account." + ], "This service is not available to users signing in with single sign-on.": [ "Deze service is niet beschikbaar voor gebruikers die inloggen met Single Sign-On." ], @@ -11707,6 +12453,15 @@ "This verification can take up to one hour. After successful verification, do not remove the TXT record as it is needed to confirm that you continue to own the domain.": [ "Deze verificatie kan tot maximaal een uur duren. Verwijder na een succesvolle verificatie, het TXT record niet. Het blijft namelijk nodig om te bevestigen dat u nog steeds de eigenaar van de domeinnaam bent." ], + "This will allow the TV to access your ${ BRAND_NAME } account.": [ + "Dit geeft de TV toegang tot uw ${ BRAND_NAME } account." + ], + "This will delete all previous versions of your files older than ${ rententionLabel }.": [ + "Dit zal alle vorige versies van uw bestanden die ouder zijn dan ${ rententionLabel } verwijderen." + ], + "This will delete all previous versions of your files.": [ + "Dit zal alle vorige versies van uw bestanden verwijderen." + ], "This will deny access to **${ email }**. Are you sure you want to continue?": [ "Dit zal de toegang van **${ email }**weigeren. Weet u zeker dat u wilt doorgaan?" ], @@ -11722,6 +12477,9 @@ "This will enable PayPal to be used to pay for your ${ BRAND_NAME } subscription. We will redirect you to PayPal in a new browser tab. If you use any pop-up blockers, please disable them to continue.": [ "Dit zal PayPal inschakelen om te betalen voor uw ${ BRAND_NAME } abonnement. We zullen u doorverwijzen naar PayPal in een nieuw browsertabblad. Als u een pop-up blockers gebruikt, schakel deze uit om door te gaan." ], + "This will let you quickly and safely access your ${ BRAND_NAME } Account so you can change you password.": [ + "Hiermee krijgt u snel en veilig toegang tot uw ${ BRAND_NAME } account, zodat u uw wachtwoord kunt wijzigen." + ], "This will permanently delete the data and all email addresses associated with these users.": [ "Dit verwijdert permanent de gegevens en alle e-mailadressen die aan deze gebruikers zijn gekoppeld." ], @@ -11794,15 +12552,21 @@ "To decrypt and view your locked data after a password reset, select a recovery method.": [ "Om uw vergrendelde gegevens te decoderen en te bekijken na een wachtwoordreset, selecteert u een herstelmethode." ], + "To enable post-quantum protection, you’ll need to finish generating your new post-quantum encryption keys.": [ + "Om post-kwantumbeveiliging in te schakelen, moet u het genereren van uw nieuwe post-kwantumcoderingssleutels voltooien." + ], + "To ensure the highest possible security of your account, disable **Recovery by recovery email**.": [ + "Om de hoogst mogelijke beveiliging van uw account te garanderen, schakelt u **Herstel via herstel-e-mail** uit." + ], + "To ensure the highest possible security of your account, disable **Recovery by recovery phone**.": [ + "Om de hoogst mogelijke beveiliging van uw account te garanderen, schakelt u **Herstel via hersteltelefoon** uit." + ], "To ensure you don’t lose important data, ${ DRIVE_APP_NAME } saves older versions of your files as you and your collaborators make changes. Select how long ${ BRAND_NAME } should keep previous versions.": [ "Om te garanderen dat u geen belangrijke gegevens verliest, bewaart ${ DRIVE_APP_NAME } oude versies van uw bestanden als u en de mensen met wie u samenwerkt veranderingen maken. Selecteer hoe lang ${ BRAND_NAME } vorige versies moet bewaren." ], "To fight spam and abuse, please verify you are human.": [ "Bevestig dat u een natuurlijk persoon bent, om spam en misbruik tegen te gaan." ], - "To help keep your account safe, we want to make sure it's really you trying to sign in.": [ - "Om uw account veilig te houden, willen we er zeker van zijn dat u het echt bent die probeert in te loggen." - ], "To help keep your account safe, we want to make sure it’s really you trying to sign in.": [ "Om uw account veilig te houden, willen we er zeker van zijn dat u het echt bent die probeert in te loggen." ], @@ -11890,6 +12654,9 @@ "Unless you sign out of your account or change your password, your session will remain active. Sessions expire after 60 days of inactivity.": [ "Tenzij u uitlogt of uw wachtwoord wijzigt, blijft uw sessie actief. Sessies verlopen na 60 dagen van inactiviteit." ], + "Unlock streaming with VPN Plus.": [ + "Ontgrendel streaming met VPN Plus." + ], "Unsaved changes": [ "Niet-opgeslagen wijzigingen" ], @@ -11905,15 +12672,24 @@ "Unverified email address.": [ "Niet-geverifieerd e-mailadres." ], + "Upgrade anytime to bring over the rest": [ + "Upgrade op elk gewenst moment om de rest over te brengen" + ], "Upgrade now to get premium features, products and storage at a special price": [ "Upgrade nu om alle premium functionaliteiten, producten en opslag te krijgen voor een speciale prijs" ], + "Upgrade or clear space anytime to bring over the rest": [ + "Upgrade of maak op elk gewenst moment ruimte vrij om de rest over te brengen" + ], "Upgrade to add a shorter @pm.me address to your account that is easier to share. It stands for “${ MAIL_APP_NAME } me” or “Private Message me”.": [ "Upgrade om een korter @pm.me adres aan uw account toe te voegen dat gemakkelijker te delen is. Het staat voor \"${ MAIL_APP_NAME } me\" of \"Private Message me\"." ], "Upgrade to keep your ${ planTitle } benefits.": [ "Upgraden om uw ${ planTitle } voordelen te behouden." ], + "Upgrade to unlock": [ + "Upgraden om te ontgrendelen" + ], "Upgrade to unlock the ${ monitorLink }.": [ "Upgrade om de ${ monitorLink } te ontgrendelen." ], @@ -12016,6 +12792,9 @@ "Version ${ version }": [ "Versie ${ version }" ], + "Version history": [ + "Versiegeschiedenis" + ], "Version number successfully copied to clipboard": [ "Versienummer succesvol gekopieerd naar klembord" ], @@ -12031,6 +12810,9 @@ "Visa Secure logo": [ "Visa Secure logo" ], + "VPN Plus": [ + "VPN Plus" + ], "VPN with dedicated servers and IP addresses": [ "VPN met toegewijde servers en IP-adressen" ], @@ -12046,6 +12828,12 @@ "We advise you to use official ${ VPN_APP_NAME } applications when possible.": [ "We raden u aan om officiële ${ VPN_APP_NAME }-applicaties te gebruiken waar mogelijk." ], + "We can use your recovery email to send you a verification code to reset your password, and to contact you if we notice suspicious activity.": [ + "We kunnen uw herstel-e-mailadres gebruiken om u een verificatiecode te sturen waarmee u uw wachtwoord opnieuw kunt instellen, en om contact met u op te nemen als we verdachte activiteiten opmerken." + ], + "We can use your recovery phone to send you a verification code to reset your password, and to contact you if we notice suspicious activity.": [ + "We kunnen uw hersteltelefoon gebruiken om u een verificatiecode te sturen waarmee u uw wachtwoord opnieuw kunt instellen, en om contact met u op te nemen als we verdachte activiteiten opmerken." + ], "We couldn't complete the transaction. Please try again.": [ "We konden de transactie niet voltooien. Probeer het opnieuw." ], @@ -12091,6 +12879,9 @@ "We stored a backup file in this browser because you allowed data recovery on this ${ deviceLink }. If the backup file is valid, you will immediately regain complete or partial access to your encrypted data.": [ "Wij hebben een back-upbestand in deze browser opgeslagen omdat u gegevens herstellen voor dit ${ deviceLink } toestond. Als het back-upbestand geldig is, krijgt u onmiddellijk volledige of gedeeltelijke toegang tot uw versleutelde gegevens." ], + "We strongly recommend that everyone enable recovery by recovery phrase.": [ + "We raden iedereen ten zeerste aan om herstel via een herstelzin in te schakelen." + ], "We use 3-D Secure to protect your payments": [ "We gebruiken 3-D Secure om uw betalingen te beschermen" ], @@ -12275,9 +13066,6 @@ "You can edit this once to ensure the correct email address for verification.": [ "U kunt dit eenmaal bewerken om ervoor te zorgen dat het juiste e-mailadres voor verificatie is ingevoerd." ], - "You can enable the Photos section from the interface using the toggle below.": [ - "U kunt het gedeelte Foto's inschakelen vanuit de interface met de onderstaande schakelaar." - ], "You can enforce the password rules members of your organization will use when they create or reset the password to their ${ BRAND_NAME } Account.": [ "U kunt de wachtwoordregels afdwingen die leden van uw organisatie gebruiken wanneer ze het wachtwoord voor hun ${ BRAND_NAME }-account aanmaken of resetten." ], @@ -12338,6 +13126,9 @@ "You don't have any referrals.": [ "U heeft geen doorverwijzingen." ], + "You don’t need to open or read the file—just download it and store it somewhere safe.": [ + "U hoeft het bestand niet te openen of te lezen; download het gewoon en bewaar het op een veilige plek." + ], "You get notified if your password or other data was leaked from a third-party service.": [ "U krijgt een melding als uw wachtwoord of andere gegevens zijn gelekt door een dienst van derden." ], @@ -12477,6 +13268,9 @@ "Your ${ plan } subscription will be replaced with ${ PASS_SHORT_APP_NAME } Lifetime. The remaining balance of your subscription will be added to your account. ${ PASS_SHORT_APP_NAME } lifetime deal has no renewal price, it's a one-time payment for lifetime access to ${ PASS_SHORT_APP_NAME }.": [ "Uw ${ plan }-abonnement zal worden vervangen door ${ PASS_SHORT_APP_NAME } Lifetime. Het resterende saldo van uw abonnement zal aan uw account worden toegevoegd. ${ PASS_SHORT_APP_NAME } levenslange deal heeft geen verlengingsprijs, het is een eenmalige betaling voor levenslange toegang tot ${ PASS_SHORT_APP_NAME }." ], + "Your ${ planDisplayName } plan doesn’t just keep your business data and communications safe. It supports your compliance objectives, makes your business stand out, and keeps your team connected.": [ + "Uw ${ planDisplayName }-abonnement houdt niet alleen uw bedrijfsgegevens en communicatie veilig. Het ondersteunt uw compliancedoelstellingen, zorgt ervoor dat uw bedrijf erbovenuit springt en het houdt uw team verbonden." + ], "Your ${ VPN_APP_NAME } and ${ MAIL_APP_NAME } accounts are linked. To delete them both, please sign in at ${ loginLink } and delete your account there.": [ "Uw ${ VPN_APP_NAME } en ${ MAIL_APP_NAME } accounts zijn gekoppeld. Om ze allebei te verwijderen, log in op ${ loginLink } en verwijder daar uw account." ], @@ -12552,12 +13346,18 @@ "Your recent changes have been published. They will be visible to users in the next few hours.": [ "Uw recente wijzigingen zijn gepubliceerd. Ze zijn in de komende uren zichtbaar voor gebruikers." ], + "Your recovery file will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset.": [ + "Met uw herstelbestand krijgt u na het resetten van uw wachtwoord weer toegang tot uw e-mails, contacten, bestanden, wachtwoorden en alle andere versleutelde gegevens op uw account." + ], "Your recovery phrase": [ "Uw herstelzin" ], "Your recovery phrase is a series of 12 randomly generated words in a specific order.": [ "Uw herstel zin is een serie van 12 willekeurig gegenereerde woorden in een specifieke volgorde." ], + "Your recovery phrase will allow you to sign in and recover your data if you get locked out of your ${ BRAND_NAME } Account. It is composed of 12 words and acts like a backup password.": [ + "Met uw herstelzin kunt u zich aanmelden en uw gegevens herstellen als u geen toegang meer hebt tot uw ${ BRAND_NAME }-account. De herstelzin bestaat uit 12 woorden en fungeert als een reservewachtwoord." + ], "Your scheduled plan starts on ${ renewalTime } and will auto-renew every ${ cycle } month.": [ "Uw gepland abonnement begint op ${ renewalTime } en wordt elke ${ cycle } maand automatisch vernieuwd.", "Uw gepland abonnement begint op ${ renewalTime } en wordt elke ${ cycle } maanden automatisch vernieuwd." @@ -13157,6 +13957,15 @@ "${ Brand } ending with ${ Last4 }": [ "${ Brand } eindigend met ${ Last4 }" ], + "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME } Desktop app": [ + "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME }-Desktop app" + ], + "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME } desktop app": [ + "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME } desktop app" + ], + "${ BRAND_NAME } for Business": [ + "${ BRAND_NAME } voor bedrijven" + ], "${ BRAND_NAME } username": [ "${ BRAND_NAME } gebruikersnaam" ], @@ -13188,6 +13997,15 @@ "${ pricePerMonthWithCurrency } / month": [ "${ pricePerMonthWithCurrency } / maand" ], + "${ PROTON_SENTINEL_NAME } account protection": [ + "${ PROTON_SENTINEL_NAME }-account bescherming" + ], + "${ PROTON_SENTINEL_NAME } protection": [ + "${ PROTON_SENTINEL_NAME } bescherming" + ], + "${ value.length }/${ maxLength } characters": [ + "${ value.length }/${ maxLength } tekens" + ], "(Temporarily unavailable. Please check back later.)": [ "(Tijdelijk onbeschikbaar. Probeer later opnieuw.)" ], @@ -13314,6 +14132,9 @@ "Allow notifications by email": [ "Notificaties per e-mail toestaan" ], + "Allow QR code sign-in": [ + "QR-code aanmelding toestaan" + ], "Allow random passwords": [ "Willekeurige wachtwoorden toestaan" ], @@ -13419,6 +14240,9 @@ "Automated confirmations and alerts": [ "Geautomatiseerde bevestigingen en meldingen" ], + "Automatic email forwarding": [ + "Automatisch doorsturen van e-mail" + ], "Automatically save contacts": [ "Contacten automatisch opslaan" ], @@ -13458,9 +14282,15 @@ "Block malware, ads and trackers": [ "Blokkeer malware, advertenties en trackers" ], + "Block trackers and marketers": [ + "Blokkeer trackers en marketeers" + ], "Bookings, billings, and orders": [ "Boekingen, factureringen en bestellingen" ], + "Brand your workspace": [ + "Geef uw werkplek een eigen uitstraling" + ], "Browser": [ "Browser" ], @@ -13566,6 +14396,9 @@ "Confirm login password": [ "Bevestig inlogwachtwoord" ], + "Confirm MX records added": [ + "Bevestig dat MX-records zijn toegevoegd" + ], "Confirm new password": [ "Bevestig nieuw wachtwoord" ], @@ -13629,9 +14462,19 @@ "Current email": [ "Huidige e-mail" ], + "Custom domain": [ + "Eigen domein" + ], + "Custom email domain": [ + "Aangepast e-maildomein", + "Aangepaste e-maildomeinen" + ], "Daily email notifications": [ "Dagelijkse e-mailnotificaties" ], + "Data harvesting": [ + "Gegevensverzameling" + ], "Date": [ "Datum" ], @@ -13701,6 +14544,9 @@ "Don't ask again": [ "Niet opnieuw vragen" ], + "Don't keep versions": [ + "Versies niet behouden" + ], "Don't show this again": [ "Toon dit niet opnieuw" ], @@ -13722,9 +14568,18 @@ "Email address": [ "E-mailadres" ], + "Email addresses": [ + "E-mailadressen" + ], + "Email addresses per user": [ + "E-mail adressen per gebruiker" + ], "Email or username": [ "E-mailadres of gebruikersnaam" ], + "Email with @yourcompany.com domain": [ + "E-mail met @uwbedrijf.com domein" + ], "Emails (all messages)": [ "E-mails (alle berichten)" ], @@ -13743,6 +14598,9 @@ "Enable ${ DARK_WEB_MONITORING_NAME } for ${ domain.DomainName }": [ "${ DARK_WEB_MONITORING_NAME } inschakelen voor ${ domain.DomainName }" ], + "Enable categories": [ + "Categorieën inschakelen" + ], "Enabled": [ "Ingeschakeld" ], @@ -13758,6 +14616,9 @@ "End weekday": [ "Laatste weekdag" ], + "End-to-end encryption": [ + "End-to-end-encryptie" + ], "Enter name or email address": [ "Voer een naam of e-mailadres in" ], @@ -13812,6 +14673,9 @@ "Folder location": [ "Map locatie" ], + "Folders, labels, and filters": [ + "Mappen, labels, en filters" + ], "Font family": [ "Lettertype familie" ], @@ -13830,6 +14694,9 @@ "Free": [ "Gratis" ], + "Free VPN included": [ + "Gratis VPN inbegrepen" + ], "From: ${ fromEmail }": [ "Van: ${ fromEmail }" ], @@ -13995,6 +14862,9 @@ "Main reason for cancelling": [ "Hoofdreden voor annulering" ], + "Make sure you have access to a recovery email or phone, and have a data recovery option.": [ + "Zorg ervoor dat u toegang hebt tot een herstel-e-mailadres of -telefoonnummer en dat u een optie voor gegevensherstel hebt." + ], "Manage categories": [ "Beheer categorieën" ], @@ -14046,6 +14916,9 @@ "Moderate NAT": [ "Gemiddelde NAT" ], + "Monthly": [ + "Maandelijks" + ], "More payment methods": [ "Meer betaalmethoden" ], @@ -14064,6 +14937,9 @@ "Must have at least ${ MIN_PASSWORD_LENGTH } characters": [ "Wachtwoord moet ten minste ${ MIN_PASSWORD_LENGTH } teken bevatten" ], + "MX records": [ + "MX records" + ], "Name": [ "Naam" ], @@ -14094,6 +14970,9 @@ "Newsletters": [ "Nieuwsbrieven" ], + "No": [ + "Nee" + ], "No (users cannot use the app until a vault is shared with them)": [ "Nee (gebruikers kunnen de app pas gebruiken als er een kluis met hen gedeeld is)" ], @@ -14127,12 +15006,18 @@ "Online privacy for your whole family": [ "Online privacy voor het hele gezin" ], + "Online productivity suite": [ + "Online productiviteitssuite" + ], "Only a single personal vault can be created": [ "Er kan slechts één persoonlijke kluis aangemaakt worden" ], "Only available on ${ PASS_SHORT_APP_NAME } paid plans": [ "Alleen beschikbaar met betaalde abonnementen van ${ PASS_SHORT_APP_NAME }" ], + "Open-source code": [ + "Open source code" + ], "OpenVPN password": [ "OpenVPN-wachtwoord" ], @@ -14193,6 +15078,9 @@ "Pending": [ "In afwachting" ], + "Personal and work emails, plus important updates and notifications": [ + "Persoonlijke en zakelijke e-mails, plus belangrijke updates en notificaties." + ], "Phone number": [ "Telefoonnummer" ], @@ -14226,12 +15114,21 @@ "Postal code": [ "Postcode" ], + "Premium features included": [ + "Premium-functies inbegrepen" + ], "Previous password": [ "Vorig wachtwoord" ], "Primary": [ "Primair" ], + "Priority": [ + "Prioriteit" + ], + "Priority support": [ + "Prioriteitsondersteuning" + ], "Promotions": [ "Promoties" ], @@ -14241,6 +15138,9 @@ "Proration": [ "Verrekening" ], + "Protected by Swiss privacy laws": [ + "Beschermd door Zwitserse privacywetten" + ], "Protection mode": [ "Beschermingsmodus" ], @@ -14316,12 +15216,18 @@ "Secure password generator": [ "Veilige wachtwoordgenerator" ], + "See your team's availability": [ + "Bekijk beschikbaarheid van uw teams" + ], "Select Linux package format": [ "Selecteer Linux pakketformaat" ], "Select Linux platform": [ "Selecteer Linux platform" ], + "Select which Gmail address to connect": [ + "Selecteer welk Gmail-adres u wilt koppelen" + ], "Send auto-reply": [ "Automatisch antwoord versturen" ], @@ -14434,6 +15340,9 @@ "Storage": [ "Opslag" ], + "Storage per user": [ + "Opslagruimte per gebruiker" + ], "Street address": [ "Adres" ], @@ -14446,6 +15355,9 @@ "Subscription options": [ "Abonnementsopties" ], + "Support for multiple users": [ + "Ondersteuning voor meerdere gebruikers" + ], "Swipe left action": [ "Veeg naar links actie" ], @@ -14464,6 +15376,9 @@ "Then": [ "Dan" ], + "Third-party ads": [ + "Advertenties van derden" + ], "Thomas": [ "Thomas" ], @@ -14539,6 +15454,9 @@ "Use folder colors": [ "Gebruik mapkleuren" ], + "Use your own email domain": [ + "Gebruik uw eigen e-maildomein" + ], "User": [ "Gebruiker" ], @@ -14578,6 +15496,9 @@ "Vulnerable password": [ "Kwetsbaar wachtwoord" ], + "We securely stored recovery information on this device.": [ + "We hebben de herstelgegevens veilig op dit apparaat opgeslagen." + ], "Weak": [ "Zwak" ], @@ -14605,12 +15526,21 @@ "Without attachment": [ "Zonder bijlage" ], + "Yearly": [ + "Jaarlijks" + ], + "Yearly free storage bonus": [ + "Jaarlijkse bonus voor gratis opslagruimte" + ], "Yes": [ "Ja" ], "Yes, I want to permanently delete this account and all its data.": [ "Ja, ik wil permanent mijn account inclusief alle gegevens verwijderen." ], + "You don't have permissions": [ + "U heeft geen toestemming" + ], "Your activation code:": [ "Uw activeringscode:" ], @@ -14632,9 +15562,18 @@ "Your plan": [ "Uw abonnement" ], + "Your recovery email": [ + "Uw herstel-e-mailadres" + ], + "Your recovery phone number": [ + "Uw hersteltelefoonnummer" + ], "Your voucher for your reserved ${ BRAND_NAME } email address:": [ "Uw voucher voor uw gereserveerde ${ BRAND_NAME }-e-mailadres:" ], + "Zero-access architecture": [ + "Zero-access architectuur" + ], "ZIP code": [ "Postcode" ] @@ -14651,6 +15590,9 @@ ], "Recovery phrase": [ "Herstelzin" + ], + "Set recovery phone number": [ + "Hersteltelefoonnummer instellen" ] }, "Label (begin date/advanced search)": { @@ -14692,6 +15634,23 @@ "Voeg het volgende TXT-record toe. Let op, het bijwerken van DNS-records kan enige tijd duren." ] }, + "Label for domain setup": { + "${ capitalizedGroup } record not found": [ + "${ capitalizedGroup } record niet gevonden" + ], + "Host name": [ + "Hostnaam" + ], + "Invalid ${ group.name } record found": [ + "Ongeldig ${ group.name } record gevonden" + ], + "Type": [ + "Type" + ], + "Use default value": [ + "Gebruik de standaard waarde" + ] + }, "Label for new member": { "Admin": [ "Beheerder" @@ -14809,6 +15768,9 @@ "${ BRAND_NAME } Foundation's": [ "${ BRAND_NAME } Foundation" ], + "Account recovery explained": [ + "Accountherstel uitgelegd" + ], "Activity log": [ "Activiteitenlog" ], @@ -14851,6 +15813,9 @@ "Create an alias": [ "Alias aanmaken" ], + "Detailed instructions": [ + "Gedetailleerde instructies" + ], "Details": [ "Details" ], @@ -15025,6 +15990,9 @@ "Upgrade your plan": [ "Upgrade uw abonnement" ], + "use a data recovery method": [ + "gebruik een methode voor gegevensherstel" + ], "Vault": [ "Kluis" ], @@ -15372,21 +16340,45 @@ "Built-in chat": [ "Ingebouwde chat" ], + "Cloud storage and file sharing": [ + "Cloudopslag en bestanden delen" + ], + "Data retention policies": [ + "Dataretentiebeleid" + ], + "Document and spreadsheet editor": [ + "Document en rekenblad editor" + ], + "Email writing assistant": [ + "Schrijfassistent voor e-mail" + ], "End-to-end encrypted screen sharing and ephemeral in-call chat": [ "End-to-end versleutelde schermdeling en korte chats tijdens telefoongesprekken" ], "Hosts can record meetings locally on their computers": [ "Hosts kunnen vergaderingen lokaal op hun computers opnemen" ], + "Includes Meet Professional": [ + "Inclusief Meet Professional" + ], "Meeting recording": [ "Opname van vergadering" ], "One active meeting at a time": [ "Eén actieve vergadering tegelijkertijd" ], + "Password manager with team vaults": [ + "Wachtwoordmanager met teamkluizen" + ], + "Private AI Chat (${ LUMO_SHORT_APP_NAME })": [ + "Privé AI-chat (${ LUMO_SHORT_APP_NAME })" + ], "Screen-sharing": [ "Scherm delen" ], + "Secure mail and calendar": [ + "Beveiligde e-mail en agenda" + ], "Unlimited meetings per day": [ "Onbeperkt aantal vergaderingen per dag" ], @@ -15401,6 +16393,9 @@ "Video meetings, ${ n } participant": [ "Videovergaderingen, ${ n } deelnemer", "Videovergaderingen, ${ n } deelnemers" + ], + "VPN with ad-blocker and malware protection": [ + "VPN met advertentieblokkering en bescherming tegen malware" ] }, "meet_2025: Info": { @@ -16070,6 +17065,9 @@ "99.95% SLA": [ "99,95% SLA" ], + "Access all countries": [ + "Toegang tot alle landen" + ], "Activity logs and policy": [ "Activiteitenlogboek en beleid" ], @@ -16091,6 +17089,9 @@ "Advanced network security": [ "Geavanceerde netwerkbeveiliging" ], + "Advanced workspace security": [ + "Geavanceerde werkplekbeveiliging" + ], "All ${ BRAND_NAME } products and features": [ "Alle ${ BRAND_NAME } producten en functies" ], @@ -16173,6 +17174,9 @@ "Dedicated servers and IP": [ "Toegewijde servers en IP" ], + "Dedicated servers optimized for speed": [ + "Gereserveerde servers geoptimaliseerd voor snelheid" + ], "Desktop app": [ "Desktop-app" ], @@ -16246,6 +17250,9 @@ "Multiple admin roles": [ "Meerdere beheerdersfuncties" ], + "No streaming support": [ + "Geen streaming-ondersteuning" + ], "No-logs policy": [ "Beleid zonder logboeken" ], @@ -16412,6 +17419,9 @@ "Unlimited volume/bandwidth": [ "Ongelimiteerd(e) volume/bandbreedte" ], + "Unlock streaming": [ + "Deblokkeer streaming" + ], "Up to ${ n } user": [ "Tot ${ n } gebruiker", "Tot ${ n } gebruikers" @@ -16886,6 +17896,10 @@ ] }, "new_plans: Upsell attribute": { + "${ n } country": [ + "${ n } land", + "${ n } landen" + ], "Access advanced VPN features": [ "Gebruik geavanceerde VPN-functies" ], @@ -16947,8 +17961,8 @@ "${ app } product updates": [ "${ app } productupdates" ], - "${ BRAND_NAME } for Business newsletter": [ - "${ BRAND_NAME } voor Bedrijven-nieuwsbrief" + "${ BRAND_NAME } for Business communications": [ + "${ BRAND_NAME } voor zakelijke communicatie" ], "${ BRAND_NAME } important announcements": [ "${ BRAND_NAME } belangrijke aankondigingen" @@ -17001,8 +18015,8 @@ "During your first month of using a ${ BRAND_NAME } product": [ "Gedurende de eerste maand gebruik van een ${ BRAND_NAME } product" ], - "Email subscriptions": [ - "Nieuwsbrieven" + "Email communications": [ + "Communicatie per e-mail" ], "In-app notifications": [ "In-app-notificaties" @@ -17099,6 +18113,9 @@ "Two-factor authentication is not required anymore": [ "Tweestapsverificatie is niet langer vereist" ], + "Your ${ BRAND_NAME } address is ready to use": [ + "Uw ${ BRAND_NAME }-adres is klaar voor gebruik" + ], "Zoom video conferencing settings have been updated": [ "Zoom Instellingen voor videoconferenties zijn bijgewerkt" ] @@ -17590,6 +18607,9 @@ "Plain text": [ "Platte tekst" ], + "Push notifications": [ + "Pushberichten" + ], "Receive from all": [ "Ontvang van alle" ], @@ -17808,6 +18828,11 @@ "PKGBUILD (voor andere distributies)" ] }, + "Paragraph": { + "${ BRAND_NAME } is independently funded and operates without advertising. Below are examples of how this independence has been used in practice.": [ + "${ BRAND_NAME } wordt onafhankelijk gefinancierd en opereert zonder reclame. Hieronder volgen voorbeelden van hoe deze onafhankelijkheid in de praktijk is toegepast." + ] + }, "Participant name": { "You": [ "U" @@ -18081,14 +19106,14 @@ "per month, billed every two years": [ "per maand, tweejaarlijks gefactureerd" ], - "Preparing your Recovery Kit": [ - "Uw herstelkit voorbereiden" + "Preparing your recovery phrase": [ + "Uw herstelzin voorbereiden" ], "Protected by Swiss privacy laws": [ "Beschermd door Zwitserse privacywetten" ], - "Save your recovery kit to continue": [ - "Sla uw herstelkit op om verder te gaan" + "Save your recovery phrase to continue": [ + "Sla uw herstelzin op om verder te gaan" ], "Secure vault sharing": [ "Veilig delen van kluis" @@ -18808,6 +19833,9 @@ "Search for an email or IP address": [ "Zoeken naar een e-mailadres of IP-adres" ], + "Search for users or addresses": [ + "Naar gebruikers of adressen zoeken" + ], "Search parent folder": [ "Zoek in bovenliggende map" ], @@ -18957,18 +19985,18 @@ ] }, "PQC account key generation": { - "Couldn’t generate keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\n${ settingsLink } and select 'Generate key' for your account and for each address.": [ - "Sleutels konden niet worden gegenereerd. Om post-kwantumbescherming te activeren, dient u uw nieuwe encryptiesleutels handmatig te genereren.\\n\\n${ settingsLink } en selecteer 'Sleutel genereren' voor uw account en voor elk adres." + "Couldn’t generate keys. To activate post-quantum protection, you’ll need to finish generating your new post-quantum encryption keys.\n\n${ goToSettingsLink } and select 'Generate missing keys'.": [ + "Kan sleutels niet genereren. Om post-kwantumbeveiliging te activeren, moet u het genereren van uw nieuwe post-kwantumcoderingssleutels voltooien.\n\n${ goToSettingsLink } en selecteer 'Ontbrekende sleutels genereren'." ] }, "PQC adress key generation": { - "Couldn’t generate address keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\nGo to ${ settingsLink } and select 'Generate key' for each address.": [ - "Kon geen adressleutels genereren. Om post-kwantumbescherming te activeren, dient u uw nieuwe encryptiesleutels handmatig te genereren.\n\nGa naar ${ settingsLink } en selecteer 'Sleutel genereren' voor elk adres." + "Couldn’t generate address keys. To activate post-quantum protection, you’ll need to finish generating your new post-quantum encryption keys for each address.\n\n${ goToSettingsLink } and select 'Generate missing keys'.": [ + "Kan adressleutels niet genereren. Om post-kwantumbeveiliging te activeren, moet u het genereren van uw nieuwe post-kwantumcoderingssleutels voor elk adres voltooien.\n\n${ goToSettingsLink } en selecteer 'Ontbrekende sleutels genereren'." ] }, "PQC compatibility warning": { - "**You must update all ${ BRAND_NAME } mobile apps**: your new keys won't work on older app versions.": [ - "**U moet alle ${ BRAND_NAME } mobiele apps updaten**: uw nieuwe sleutels werken niet op oudere app-versies." + "**You must update all ${ BRAND_NAME } apps**: your new keys won't work on older app versions.": [ + "**U moet alle apps van ${ BRAND_NAME } updaten**: uw nieuwe sleutels werken niet in oudere app-versies." ] }, "PQC key generation": { @@ -19227,6 +20255,9 @@ "Verify now": [ "Verifieer nu" ], + "Verify now this recovery email address: ${ emailData.value }": [ + "Verifieer nu dit herstel-e-mailadres: ${ emailData.value }" + ], "Verify recovery email?": [ "Herstel-e-mailadres verifiëren?" ], @@ -19270,23 +20301,156 @@ "Verify recovery phone?": [ "Hersteltelefoon verifiëren?" ], + "Verify this recovery phone number now: ${ phoneData.value }": [ + "Verifieer dit hersteltelefoonnummer nu: ${ phoneData.value }" + ], "Verifying your phone number increases your account security and allows additional options for recovery.": [ "Uw telefoonnummer verifiëren verhoogt uw accountbeveiliging en laat extra opties voor herstel toe." ] }, - "RecoveryPhrase: Action": { - "Continue": [ - "Ga verder" + "Recovery score": { + "${ score } / ${ maxScore } completed": [ + "${ score }/${ maxScore } voltooid" ], - "Copy": [ - "Kopieer" + "Account protection": [ + "Account beveiliging" ], - "Show": [ - "Tonen" - ] - }, - "RecoveryPhrase: Info": { - "copy recovery phrase": [ + "Add more options for stronger protection": [ + "Voeg meer opties toe voor een betere bescherming" + ], + "Add more options to avoid getting locked out of your account.": [ + "Voeg meer opties toe om te voorkomen dat uw account wordt geblokkeerd." + ], + "Awesome. Keep your options up-to-date for stronger protection.": [ + "Fantastisch. Zorg dat uw opties up-to-date zijn voor een betere bescherming." + ], + "Good start. Add more options for a stronger protection.": [ + "Een goed begin. Voeg meer opties toe voor een betere bescherming." + ], + "Great. Add more options for a stronger protection.": [ + "Prima. Voeg meer opties toe voor een betere bescherming." + ], + "How you increased your account protection": [ + "Hoe u de beveiliging van uw account hebt verbeterd" + ], + "Inactive recovery options": [ + "Inactieve herstelopties" + ], + "Maximum": [ + "Maximum" + ], + "Partial": [ + "Gedeeltelijk" + ], + "Recovery score: ${ score }": [ + "Herstelscore: ${ score }" + ], + "Require verified password reset option (email or SMS)": [ + "Vereist optie voor geverifieerde wachtwoordreset (e-mail of sms)" + ], + "Score: ${ score } / ${ maxScore }": [ + "Score: ${ score } / ${ maxScore }" + ], + "Strong": [ + "Sterk" + ], + "Unprotected": [ + "Onbeschermd" + ], + "Weak": [ + "Zwak" + ] + }, + "Recovery score item": { + "Add emergency contacts": [ + "Contactpersoon voor noodgevallen toevoegen" + ], + "Add recovery contacts": [ + "Herstelcontacten toevoegen" + ], + "Add recovery email": [ + "E-mailadres voor herstel toevoegen" + ], + "Add recovery phone": [ + "Hersteltelefoon toevoegen" + ], + "Allow data recovery on this device": [ + "Schakel gegevensherstel op dit apparaat in" + ], + "Allow password reset from settings": [ + "Sta wachtwoord reset toe vanuit instellingen" + ], + "Allow scanning QR code to sign in": [ + "Sta het scannen van een QR-code toe om in te loggen" + ], + "Data recovery allowed on this device": [ + "Gegevens herstelbaar op dit apparaat" + ], + "Download recovery file": [ + "Herstelbestand downloaden" + ], + "Email recovery enabled": [ + "E-mailherstel ingeschakeld" + ], + "Emergency contacts added": [ + "Noodcontacten toegevoegd" + ], + "Enable email recovery": [ + "Schakel e-mailherstel in" + ], + "Enable recovery by phone": [ + "Herstellen via telefoon inschakelen" + ], + "Password reset allowed from settings": [ + "Wachtwoordherstel is mogelijk via de instellingen" + ], + "Password verified": [ + "Wachtwoord is geverifieerd" + ], + "Phone recovery enabled": [ + "Hersteltelefoonnummer ingeschakeld" + ], + "Recovery contacts added": [ + "Herstelcontacten toegevoegd" + ], + "Recovery file downloaded": [ + "Herstelbestand gedownload" + ], + "Recovery phrase saved": [ + "Herstelzin bewaard" + ], + "Save recovery phrase": [ + "Herstelzin bewaren" + ], + "Sign-in with QR code allowed": [ + "Aanmelden met QR-code toegestaan" + ], + "Verify password": [ + "Wachtwoord verifiëren" + ], + "Verify recovery email": [ + "Herstel-e-mailadres verifiëren" + ], + "Verify recovery phone": [ + "Hersteltelefoon verifiëren" + ] + }, + "RecoveryPhrase: Action": { + "Continue": [ + "Ga verder" + ], + "Copy": [ + "Kopieer" + ], + "Show": [ + "Tonen" + ] + }, + "RecoveryPhrase: Info": { + "**Make sure you keep your recovery phrase accessible after creating it.** For security reasons, we do not store the phrase after saving your changes, and you won’t be able to see it again in the ${ BRAND_NAME } app.": [ + "**Zorg ervoor dat u uw herstelzin bij de hand houdt nadat u deze hebt aangemaakt.** Om veiligheidsredenen slaan we de zin niet op nadat u uw wijzigingen hebt opgeslagen en kunt u deze niet meer terugvinden in de ${ BRAND_NAME } app." + ], + "copy recovery phrase": [ "Herstelzin kopiëren" ], "Download PDF": [ @@ -19307,14 +20471,11 @@ "Or ${ downloadRecoveryKitSwitchButton } instead.": [ "Of ${ downloadRecoveryKitSwitchButton } in plaats." ], - "Your **Recovery Kit** lets you restore your ${ BRAND_NAME } Account if you’re locked out.": [ - "Uw **Herstelkit** laat u uw ${ BRAND_NAME } account herstellen als u bent buitengesloten." + "Your **recovery phrase** lets you restore your ${ BRAND_NAME } Account if you’re locked out.": [ + "Uw **herstelzin** laat u uw ${ BRAND_NAME }-account herstellen als u bent buitengesloten." ] }, "RecoveryPhrase: Title": { - "Save your Recovery Kit": [ - "Bewaar uw Recovery Kit" - ], "Save your recovery phrase": [ "Sla uw herstelzin op" ] @@ -19707,8 +20868,8 @@ "Back to Safety Review": [ "Terug naar beoordeling veiligheid" ], - "Because you reset your password, your current Recovery Kit can only be used to recover the data created before your password reset.": [ - "Omdat u uw wachtwoord opnieuw instelt, kan uw huidige Recovery Kit alleen worden gebruikt om de gegevens te herstellen die zijn gemaakt voordat uw wachtwoord wordt hersteld." + "Because you reset your password, your current recovery phrase can only be used to recover the data created before your password reset.": [ + "Omdat u uw wachtwoord opnieuw hebt ingesteld, kan uw huidige herstelzin alleen worden gebruikt om de gegevens te herstellen die zijn aangemaakt voordat u uw wachtwoord opnieuw instelde." ], "Can be used to regain access to your account and data": [ "Kan gebruikt worden om opnieuw toegang te krijgen tot uw account en gegevens" @@ -19737,8 +20898,8 @@ "Download ${ size }": [ "${ size } downloaden" ], - "Download your Recovery Kit": [ - "Download uw Recovery Kit" + "Download your recovery phrase": [ + "Download uw herstelzin" ], "Email address": [ "E-mailadres" @@ -19752,8 +20913,8 @@ "Enable recovery by phone": [ "Herstellen via telefoon inschakelen" ], - "I understand that I will not be able to recover currently locked data with this Recovery Kit": [ - "Ik begrijp dat ik met deze Recovery Kit geen vergrendelde gegevens kan herstellen" + "I understand that I will not be able to recover currently locked data with this recovery phrase": [ + "Ik begrijp dat ik met deze herstelzin geen momenteel vergrendelde gegevens kan herstellen." ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in on this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Als u uw ${ BRAND_NAME }-wachtwoord bent vergeten en moet u het opnieuw instellen, de volgende keer dat u zich aanmeldt op dit apparaat met uw nieuwe wachtwoord, zal volledige toegang tot uw ${ BRAND_NAME }-account worden hersteld." @@ -19761,8 +20922,8 @@ "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Als u uw ${ BRAND_NAME }-wachtwoord bent vergeten en moet u het opnieuw instellen, de volgende keer dat u zich aanmeldt op dit apparaat met uw nieuwe wachtwoord, zal volledige toegang tot uw ${ BRAND_NAME }-account worden hersteld." ], - "If you get locked out of your ${ BRAND_NAME } Account, your Recovery Kit will allow you to sign in and recover your data.": [ - "Als u buitengesloten raakt uit uw ${ BRAND_NAME }-account, zal uw herstelkit u toelaten om in te liggen en uw data te herstellen." + "If you get locked out of your ${ BRAND_NAME } Account, your recovery phrase will allow you to sign in and recover your data.": [ + "Als u buitengesloten raakt uit uw ${ BRAND_NAME }-account, zal uw herstelziin u toelaten om in te loggen en uw data te herstellen." ], "If you lose your login details and need to reset your account, **it’s imperative** that you have both an **account recovery and data recovery method** in place, otherwise you might not be able to access any of your emails, contacts, files or passwords.": [ "Als u uw inloggegevens verliest en uw account opnieuw moet instellen **Het is dwingend** dat u zowel een **account recovery en data recovery** heeft geïnstalleerd. Anders heeft u mogelijk geen toegang tot uw e-mails, contacten, bestanden of wachtwoorden." @@ -19806,8 +20967,8 @@ "Take action to secure your account": [ "Neem actie om uw account te beveiligen" ], - "There was an error generating your Recovery Kit": [ - "Er is een fout opgetreden bij het genereren van uw Recovery Kit" + "There was an error generating your recovery phrase": [ + "Er is een fout opgetreden bij het genereren van uw herstelzin" ], "There was an error verifying your email": [ "Er is een fout opgetreden bij het verifiëren van uw herstel-e-mail" @@ -19836,11 +20997,11 @@ "to recover your account if you're ever locked out": [ "om uw account te herstellen als u ooit buitengesloten bent" ], - "Update your Recovery Kit": [ - "Update uw Recovery Kit" + "Update your recovery phrase": [ + "Herstelzin bijwerken" ], - "Update your Recovery Kit?": [ - "Update uw Recovery Kit?" + "Update your recovery phrase?": [ + "Update uw herstelzin?" ], "Verify": [ "Verifiëren" @@ -19857,8 +21018,8 @@ "Verify your recovery phone number": [ "Verifieer uw hersteltelefoonnummer" ], - "We encountered an error while generating your Recovery Kit. Please try again later, or contact support if the issue continues.": [ - "Er is een fout opgetreden bij het genereren van uw Recovery Kit. Probeer het later opnieuw of neem contact op met support als het probleem zich blijft voordoen." + "We encountered an error while generating your recovery phrase. Please try again later, or contact support if the issue continues.": [ + "Er is een fout opgetreden tijdens het genereren van uw herstelzin. Probeer het later opnieuw of neem contact op met de ondersteuning als het probleem zich blijft voordoen." ], "We encountered an error while verifying your email. Please try again later, or contact support if the issue continues.": [ "Er is een fout opgetreden tijdens het verifiëren van uw e-mail. Probeer het later opnieuw of neem contact op met support als het probleem zich blijft voordoen." @@ -19881,9 +21042,6 @@ "You can disable this at any time.": [ "U kunt dit op elk moment uitschakelen." ], - "You can use the recovery phrase in this Recovery Kit to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ - "U kunt de herstelzin gebruiken in deze Recovery Kit om uw account volledig te herstellen wanneer u uw wachtwoord opnieuw instelt, zorg ervoor dat u het ergens veilig houdt." - ], "You can use your email to regain access to your account if you forget your password.": [ "U kunt uw herstel-e-mailadres gebruiken om toegang te krijgen tot uw account als u uw wachtwoord vergeet." ], @@ -19893,8 +21051,8 @@ "You can use your recovery phone to regain access to your account if you forget your password.": [ "U kunt uw hersteltelefoon gebruiken om toegang tot uw account te krijgen als u uw wachtwoord vergeet." ], - "You have previously downloaded a Recovery Kit. Downloading a new one will **deactivate the old one**.": [ - "U heeft eerder een Recovery Kit gedownload. Een nieuwe downloaden zal **deactiveren de oude**." + "You have previously downloaded a recovery phrase. Downloading a new one will **deactivate the old one**.": [ + "U heeft eerder een herstelzin gedownload. Een nieuwe downloaden zal **de oude deactiveren**." ], "You have recommended actions to safeguard your account further.": [ "U heeft aanbevolen acties om uw account verder te beveiligen." @@ -19959,12 +21117,6 @@ "Your recovery email is set": [ "Uw herstel-e-mailadres is ingesteld" ], - "Your Recovery Kit": [ - "Uw herstelkit" - ], - "Your Recovery Kit is set": [ - "Uw herstelkit is ingesteld" - ], "Your recovery methods": [ "Uw herstelmethoden" ], @@ -19985,6 +21137,242 @@ ], "Your recovery phone number is:": [ "Uw hersteltelefoonnummer is:" + ], + "Your recovery phrase": [ + "Uw herstelzin" + ], + "Your recovery phrase is set": [ + "Uw herstelzin is ingesteld" + ] + }, + "safety_review": { + "${ BRAND_NAME } Account email": [ + "${ BRAND_NAME }-account e-mailadres" + ], + "Account protection": [ + "Account beveiliging" + ], + "Add": [ + "Toevoegen" + ], + "Add an emergency contact": [ + "Een contactpersoon voor noodgevallen toevoegen" + ], + "Add emergency contacts": [ + "Contactpersonen voor noodgevallen toevoegen" + ], + "Add options": [ + "Opties toevoegen" + ], + "Add people who you trust and can contact easily. Your emergency contact will be able to access your account and reset your password for you if needed.": [ + "Voeg mensen toe die u vertrouwt en die u gemakkelijk kunt bereiken. Uw contactpersoon voor noodgevallen heeft toegang tot uw account en kan uw wachtwoord voor u opnieuw instellen als dat nodig is." + ], + "Add people you trust and can contact easily. They will be able to help you unlock your data after you reset your password.": [ + "Voeg mensen toe die u vertrouwt en waarmee u gemakkelijk contact kunt opnemen. Zij kunnen u helpen uw gegevens te ontgrendelen nadat u uw wachtwoord opnieuw heeft ingesteld." + ], + "Add phone number": [ + "Telefoonnummer toevoegen" + ], + "Add recovery contacts": [ + "Herstelcontacten toevoegen" + ], + "Add recovery email": [ + "Herstel e-mailadres toevoegen" + ], + "Add recovery phone": [ + "Hersteltelefoon toevoegen" + ], + "Added emergency contacts": [ + "Contactpersoon voor noodgevallen toegevoegd" + ], + "Added recovery contacts": [ + "Herstelcontacten toegevoegd" + ], + "Added recovery email": [ + "Herstel-e-mailadres toegevoegd" + ], + "Added recovery phone": [ + "Hersteltelefoonnummer toegevoegd" + ], + "Allow": [ + "Toestaan" + ], + "Allow data recovery from this device": [ + "Sta gegevensherstel vanaf dit apparaat toe" + ], + "Allow password reset from the settings": [ + "Sta wachtwoord reset toe vanuit instellingen" + ], + "Allow recovery by email": [ + "Herstellen via e-mail toestaan" + ], + "Allow recovery by phone": [ + "Herstellen via telefoon toestaan" + ], + "Allow scanning a QR code to sign in": [ + "Sta het scannen van een QR-code toe om in te loggen" + ], + "Allow trusted friends to unlock your data": [ + "Laat vertrouwde vrienden uw gegevens ontgrendelen" + ], + "Back to ${ backLink.appNameString }": [ + "Terug naar ${ backLink.appNameString }" + ], + "Congratulations": [ + "Gefeliciteerd" + ], + "Didn’t receive it? ${ sendANewCode }": [ + "Niet ontvangen? ${ sendANewCode }" + ], + "Done": [ + "Klaar" + ], + "Download": [ + "Downloaden" + ], + "Download recovery file": [ + "Herstelbestand downloaden" + ], + "Downloaded recovery file": [ + "Herstelbestand downloaden" + ], + "Emergency contacts enabled": [ + "Noodcontacten ingeschakeld" + ], + "Enable device recovery": [ + "Apparaatherstel inschakelen" + ], + "Enable email recovery": [ + "Schakel e-mailherstel in" + ], + "Enable emergency contacts": [ + "Schakel noodcontacten in" + ], + "Enable password reset from settings": [ + "Schakel het opnieuw instellen van het wachtwoord in vanuit de instellingen" + ], + "Enable phone recovery": [ + "Schakel herstel via telefoon in" + ], + "Enable QR code sign-in": [ + "QR-code aanmelding toestaan" + ], + "Enabled device recovery": [ + "Apparaatherstel ingeschakeld" + ], + "Enabled email recovery": [ + "E-mailherstel ingeschakeld" + ], + "Enabled password reset from settings": [ + "Wachtwoord opnieuw instellen via instellingen ingeschakeld" + ], + "Enabled phone recovery": [ + "Herstel via telefoon ingeschakeld" + ], + "Enabled QR code sign-in": [ + "Aanmelden met QR-code ingeschakeld" + ], + "Got it": [ + "Begrepen" + ], + "Here's how you increased your account protection:": [ + "Hoe u de beveiliging van uw account hebt verbeterd:" + ], + "If you forget your password, you can sign in using a QR code. All you need is to be signed in to a ${ BRAND_NAME } service on another device.": [ + "Als u uw wachtwoord bent vergeten, kunt u inloggen met een QR-code. U hoeft alleen ingelogd te zijn op een ${ BRAND_NAME }-service op een ander apparaat." + ], + "If you get locked out of your ${ BRAND_NAME } Account, it will allow you to sign in and recover your data. It’s the only way to instantly restore everything, so make sure you keep it somewhere safe.": [ + "Als u geen toegang meer heeft tot uw ${ BRAND_NAME } account, kunt u zich aanmelden en uw gegevens herstellen. Het is de enige manier om alles onmiddellijk te herstellen, dus zorg ervoor dat u het op een veilige plek bewaart." + ], + "Later": [ + "Later" + ], + "Protect your legacy with Emergency Access": [ + "Bescherm uw legacy met noodtoegang" + ], + "Save recovery phrase": [ + "Herstelzin bewaren" + ], + "Saved recovery phrase": [ + "Opgeslagen herstelzin" + ], + "They must already have a ${ BRAND_NAME } Account.": [ + "Ze moeten al een ${ BRAND_NAME }-account hebben." + ], + "They will not be able to see or access your data.": [ + "Zij zullen uw gegevens niet kunnen zien of bekijken." + ], + "This will let you quickly access your ${ BRAND_NAME } Account so you can change your password.": [ + "Hiermee krijgt u snel toegang tot uw ${ BRAND_NAME }-account, zodat u uw wachtwoord kunt wijzigen." + ], + "This will let you reset your account password if you’ve lost it, but are still signed in to ${ BRAND_NAME }. It’s often the easiest way to recover your account if you’re signed in.": [ + "Hiermee kunt u uw accountwachtwoord opnieuw instellen als u het kwijt bent, maar nog steeds bent ingelogd bij ${ BRAND_NAME }. Het is vaak de makkelijkste manier om uw account te herstellen als u bent ingelogd." + ], + "This will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset.": [ + "Hiermee wordt de toegang tot e-mails, contacten, bestanden, wachtwoorden en andere gecodeerde gegevens in uw account hersteld nadat het wachtwoord opnieuw is ingesteld." + ], + "To make sure the email address is yours, enter the verification code sent to ${ boldEmail }.": [ + "Om zeker te zijn dat het e-mailadres van u is, moet u de verificatiecode invoeren die naar ${ boldEmail } is verzonden." + ], + "To make sure the phone number is yours, enter the verification code sent to ${ boldPhoneNumber }.": [ + "Om zeker te zijn dat het uw telefoonnummer is, voer de verificatiecode in die naar ${ boldPhoneNumber } is verzonden." + ], + "To make sure this address is really yours, we’ll send an email with a verification link.": [ + "Om er zeker van te zijn dat dit adres echt van u is, sturen we een e-mail met een verificatielink." + ], + "Upgrade your plan to enable Emergency Access to your account. This will allow you to designate 1 to 5 people who will be able to reset your password for you.": [ + "Upgrade uw abonnement om noodtoegang voor uw account in te schakelen. Hiermee kunt u 1 tot 5 personen aanwijzen die uw wachtwoord voor u kunnen resetten." + ], + "Verified password": [ + "Geverifieerd wachtwoord" + ], + "Verified recovery email": [ + "Geverifieerd herstel e-mailadres" + ], + "Verified recovery phone": [ + "Geverifieerd hersteltelefoonnummer" + ], + "Verify": [ + "Verifieer" + ], + "Verify password": [ + "Wachtwoord verifiëren" + ], + "Verify recovery email": [ + "Herstel-e-mailadres verifiëren" + ], + "Verify recovery phone": [ + "Hersteltelefoon verifiëren" + ], + "Verify your recovery email": [ + "Herstel-e-mailadres verifiëren" + ], + "Verify your recovery phone": [ + "Verifieer uw hersteltelefoonnummer" + ], + "You can save a data backup on this device. This will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset, simply by signing in on this device.": [ + "U kunt een gegevensback-up op dit apparaat opslaan. Hiermee wordt de toegang tot e-mails, contacten, bestanden, wachtwoorden en andere gecodeerde gegevens in uw account hersteld na een wachtwoordreset, eenvoudigweg door u aan te melden op dit apparaat." + ], + "You can use email verification to regain access to your account if you forget your password.": [ + "U kunt e-mailverificatie gebruiken om weer toegang te krijgen tot uw account als u uw wachtwoord bent vergeten." + ], + "You can use SMS verification to regain access to your account if you forget your password.": [ + "U kunt sms-verificatie gebruiken om weer toegang te krijgen tot uw account als u uw wachtwoord bent vergeten." + ], + "You can use your recovery email to regain access to your account if you forget your password.": [ + "U kunt uw herstel-e-mailadres gebruiken om weer toegang te krijgen tot uw account als u uw wachtwoord bent vergeten." + ], + "You can use your recovery phone to regain access to your account if you forget your password.": [ + "U kunt uw hersteltelefoonnummer gebruiken om weer toegang te krijgen tot uw account als u uw wachtwoord bent vergeten." + ], + "You don’t need to open or read the file—just download it and store it somewhere safe.": [ + "U hoeft het bestand niet te openen of te lezen; download het gewoon en bewaar het op een veilige plek." + ], + "Your recovery checklist": [ + "Uw herstelchecklist" + ], + "Your security setup": [ + "Uw beveiligingsinstellingen" ] }, "saml: Action": { @@ -20190,6 +21578,17 @@ "Geen resultaten gevonden" ] }, + "Sentinel banner": { + "To ensure the highest possible security of your account, disable recovery via email and SMS.": [ + "Om de hoogst mogelijke beveiliging van uw account te garanderen, schakelt u herstel via e-mail en SMS uit." + ], + "To make sure that you can always access your ${ BRAND_NAME } Account, download your recovery phrase.": [ + "Download uw herstelzin om ervoor te zorgen dat u altijd toegang heeft tot uw ${ BRAND_NAME }-account." + ], + "You have recommended actions from ${ PROTON_SENTINEL_NAME }": [ + "U heeft acties aanbevolen van ${ PROTON_SENTINEL_NAME }." + ] + }, "Server-Info": { "active": [ "actief" @@ -20461,6 +21860,9 @@ ] }, "session_recovery:settings:info": { + "To disallow password reset from settings, you must save your recovery phrase.": [ + "Om te voorkomen dat u uw wachtwoord via de instellingen kunt resetten, moet u uw herstelzin opslaan." + ], "To disallow password reset, you must have a recovery method set up.": [ "Om het wachtwoordherstel uit te schakelen, moet u een herstelmethode ingesteld hebben." ], @@ -20517,14 +21919,6 @@ "Aanvraag wijziging wachtwoord" ] }, - "Setting": { - "Get updates about comments via email": [ - "Ontvang updates over reacties via e-mail." - ], - "Include document name in email notifications": [ - "Documentnaam opnemen in e-mailnotificaties." - ] - }, "Settings description": { "Keep your inbox organized with folders and labels. ${ learnMoreLink }": [ "Houd uw inbox georganiseerd met mappen en labels. ${ learnMoreLink }" @@ -21387,11 +22781,35 @@ ] }, "Spotlight": { + "Assign delegated roles": [ + "Wijs gedelegeerde rollen toe" + ], + "Assign roles": [ + "Rollen toewijzen" + ], + "Click a user's name to manage their role and permissions.": [ + "Klik op de naam van een gebruiker om zijn rol en machtigingen te beheren." + ], + "Click Edit to assign roles to this group and manage member access automatically.": [ + "Klik op Bewerken om rollen aan deze groep toe te wijzen en de ledentoegang automatisch te beheren." + ], "Earn up to ${ maxRewardAmount } in credit": [ "Krijg tot wel ${ maxRewardAmount } als krediet" ], "Get credits when the person you invite subscribes to a ${ BRAND_NAME } plan.": [ "Ontvang tegoed wanneer de persoon die u uitnodigt zich abonneert op een ${ BRAND_NAME }-abonnement." + ], + "New: Roles and permissions tab": [ + "Nieuw: tabblad Rollen en rechten" + ], + "Open this tab to grant specific permissions without full admin access.": [ + "Open dit tabblad om specifieke machtigingen te verlenen zonder volledige beheerderstoegang." + ], + "User roles available": [ + "Gebruikersrollen beschikbaar" + ], + "You can now assign roles to individual users from this tab.": [ + "Vanaf dit tabblad kunt u nu rollen toewijzen aan individuele gebruikers." ] }, "sso": { @@ -21681,6 +23099,60 @@ "Uw abonnement wordt geannuleerd, even geduld" ] }, + "Status": { + "${ count } person": [ + "${ count } persoon", + "${ count } personen" + ], + "Add a phone number": [ + "Voeg een telefoonnummer toe" + ], + "Add an email address": [ + "Een e-mailadres toevoegen" + ], + "Available on this device": [ + "Beschikbaar op dit apparaat" + ], + "Disable recovery by email": [ + "Herstellen via e-mail uitschakelen" + ], + "Disable recovery by phone": [ + "Herstellen via telefoon uitschakelen" + ], + "Generate a recovery phrase": [ + "Genereer herstelzin" + ], + "Last changed ${ formattedDate }": [ + "Laatst gewijzigd op ${ formattedDate }" + ], + "Last updated ${ formattedUpdateDate }": [ + "Laatst bijgewerkt op ${ formattedUpdateDate }" + ], + "Not saved": [ + "Niet opgeslagen" + ], + "Off": [ + "Uit" + ], + "On": [ + "Aan" + ], + "Outdated": [ + "Verouderd" + ], + "Saved": [ + "Opgeslagen" + ], + "Unverified": [ + "Niet geverifiëerd" + ], + "Verified": [ + "Geverifiëerd" + ], + "Verify ${ value }": [ + "Verifieer ${ value }" + ] + }, "Step in filter modal": { "Actions": [ "Acties" @@ -21982,6 +23454,12 @@ ] }, "Subscription reminder": { + "${ BRAND_NAME } Scribe writing assistant": [ + "${ BRAND_NAME } Scribe Schrijfassistent" + ], + "${ CALENDAR_APP_NAME }, ${ DRIVE_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME }, ${ VPN_SHORT_APP_NAME }, ${ MEET_SHORT_APP_NAME }, and ${ LUMO_APP_NAME } with premium features": [ + "${ CALENDAR_APP_NAME }, ${ DRIVE_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME }, ${ VPN_SHORT_APP_NAME }, ${ MEET_SHORT_APP_NAME }, en ${ LUMO_APP_NAME } met premium functies" + ], "${ CALENDAR_APP_NAME }, ${ DRIVE_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME }, and ${ VPN_SHORT_APP_NAME } with premium features": [ "${ CALENDAR_APP_NAME }, ${ DRIVE_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME }en ${ VPN_SHORT_APP_NAME } met premium functies" ], @@ -22240,6 +23718,10 @@ "Version history": [ "Versiegeschiedenis" ], + "Video meetings, up to ${ PAID_PREMIUM_MAX_PARTICIPANTS } participant": [ + "Videovergaderingen, tot ${ PAID_PREMIUM_MAX_PARTICIPANTS } deelnemer", + "Videovergaderingen, tot ${ PAID_PREMIUM_MAX_PARTICIPANTS } deelnemers" + ], "Watch the interview": [ "Bekijk het interview" ], @@ -22355,12 +23837,54 @@ ] }, "Subtitle": { + "${ DRIVE_PLUS_NAME } offers 1 TB storage for your files and photos. You are also eligible for yearly storage bonuses.": [ + "${ DRIVE_PLUS_NAME } biedt 1 TB opslagruimte voor uw bestanden en foto's. U komt ook in aanmerking voor jaarlijkse opslagbonussen." + ], + "${ DRIVE_PLUS_NAME } offers 200 GB storage for your files and photos. You are also eligible for yearly storage bonuses.": [ + "${ DRIVE_PLUS_NAME } biedt aan opslag voor uw bestanden en foto's. U komt ook in aanmerking voor jaarlijkse opslagbonussen." + ], + "${ planTitle } gives you access to all apps and premium features. Privacy is built-in so you can get on with it, knowing your data and identity are safe.": [ + "Met ${ planTitle } krijg je toegang tot alle apps en premiumfuncties. Privacy is ingebouwd, zodat u, u kunt concentreren op uw werk, wetende dat uw gegevens en identiteit veilig zijn." + ], + "${ planTitle } gives you all apps, all features, early access to new releases, and everything you need to be in control of your data and its security.": [ + "${ planTitle } geeft u alle apps, alle functies, vroege toegang tot nieuwe releases en alles wat u nodig hebt om controle te hebben over uw gegevens en de beveiliging ervan." + ], + "${ planTitle } gives you unlimited privacy and more storage for up to 2 people.": [ + "${ planTitle } geeft u onbeperkte privacy en meer opslagruimte voor tot wel 2 personen." + ], + "${ planTitle } gives your team all the collaboration tools they need to be productive and organized in their work, while safeguarding your business.": [ + "${ planTitle } biedt uw team alle samenwerkingstools die ze nodig hebben om productief en georganiseerd te werken, terwijl uw bedrijf wordt beschermd." + ], + "${ planTitle } gives your team what they need to be more productive and organized in their work with access to all ${ BRAND_NAME } apps and their advanced features.": [ + "${ planTitle } biedt uw team alles wat ze nodig hebben om productiever en georganiseerder te werken, met toegang tot alle ${ BRAND_NAME } apps en hun geavanceerde functies." + ], + "${ planTitle } gives your team what they need to be more productive, organized, and in control of their inbox, schedule, and more.": [ + "${ planTitle } geeft uw team wat ze nodig hebben om productiever en beter georganiseerd te zijn, om controle te hebben over hun inbox, planning en meer." + ], + "${ planTitle } goes beyond the basics to help you be more productive, organized, and in control of your inbox, email identity, and more.": [ + "${ planTitle } gaat verder dan de basis en helpt u productiever, georganiseerder en beter in controle te zijn over uw inbox, e-mailidentiteit en meer." + ], + "${ planTitle } helps you ensure that each of your family members — and their data — are protected whenever they’re online.": [ + "${ planTitle } helpt u bij het verzekeren dat al uw gezinsleden — en hun gegevens — beveiligd zijn wanneer ze online zijn." + ], + "Compare the key differences that matter for your business.": [ + "Vergelijk de belangrijkste verschillen die relevant zijn voor uw bedrijf." + ], "Free forever": [ "Voor altijd gratis" ], "per month, billed annually": [ "per maand, jaarlijks gefactureerd" ], + "Save 50% for 1 year, and keep full access": [ + "Bespaar 50% gedurende 1 jaar en behoud volledige toegang" + ], + "Save 50% for 6 months, and keep full access": [ + "Bespaar 50% gedurende 6 maanden en behoud volledige toegang." + ], + "See how ${ MAIL_APP_NAME } compares, and why our independence makes a difference.": [ + "Zie hoe ${ MAIL_APP_NAME } zich verhoudt en waarom onze onafhankelijkheid het verschil maakt." + ], "View VPN session details for your organization.": [ "Bekijk VPN-sessiedetails voor uw organisatie." ] @@ -22369,6 +23893,9 @@ "Account deleted. Signing out...": [ "Account verwijderd. Uitloggen..." ], + "Activation link copied to clipboard": [ + "Activeringslink naar klembord gekopieerd" + ], "Address added": [ "Adres toegevoegd" ], @@ -22492,9 +24019,6 @@ "Organization logo updated": [ "Organisatielogo bijgewerkt" ], - "Organization name set": [ - "Organisatienaam ingesteld" - ], "Organization name updated": [ "Organisatienaam bijgewerkt" ], @@ -22713,6 +24237,14 @@ "Beveilig uw bestanden met versleutelde cloudopslag. Inclusief versiegeschiedenis, versleuteld bestanden delen en meer." ] }, + "Tab": { + "For personal use": [ + "Voor persoonlijk gebruik" + ], + "For professional use": [ + "Voor professioneel gebruik" + ] + }, "Tab in domain modal": { "Addresses": [ "Adressen" @@ -22801,6 +24333,14 @@ "Geen SMTP-tokens gevonden" ] }, + "Temporary need": { + "Continue cancelling": [ + "Doorgaan met annuleren" + ], + "Keep current plan": [ + "Huidig plan behouden" + ] + }, "Theme": { "Auto": [ "Automatisch" @@ -22980,12 +24520,18 @@ "Actions": [ "Acties" ], + "Activate multi-user support": [ + "Ondersteuning voor meerdere gebruikers inschakelen" + ], "Activate organization key": [ "Organisatiesleutel activeren" ], "Activate user": [ "Activeer gebruiker" ], + "Activate your email": [ + "Activeer uw e-mailadres" + ], "Activity monitor": [ "Activiteitenmonitor" ], @@ -22996,12 +24542,21 @@ "Add a custom logo": [ "Voeg een aangepast logo toe" ], + "Add a recovery contact": [ + "Herstelcontact toevoegen" + ], "Add address": [ "E-mailadres toevoegen" ], + "Add an emergency contact": [ + "Een contactpersoon voor noodgevallen toevoegen" + ], "Add another notification to remind you of this event": [ "Voeg nog een melding toe om je te herinneren aan deze afspraak" ], + "Add categories": [ + "Categorieën toevoegen" + ], "Add contact group name": [ "Naam contactgroep toevoegen" ], @@ -23062,6 +24617,9 @@ "Address and key verification": [ "Verificatie van adres en sleutel" ], + "Advanced recovery options": [ + "Geavanceerde herstelopties" + ], "Allocate storage": [ "Opslag toewijzen" ], @@ -23080,9 +24638,6 @@ "An address for each role": [ "Een adres voor elke rol" ], - "An error occurred": [ - "Er is een fout opgetreden" - ], "Annual": [ "Jaarlijks" ], @@ -23113,6 +24668,9 @@ "Are you sure you want to close?": [ "Weet u zeker dat u wilt afsluiten?" ], + "Are you sure you want to disconnect this address?": [ + "Weet u zeker dat u dit adres wilt loskoppelen?" + ], "Are you sure?": [ "Weet u het zeker?" ], @@ -23140,6 +24698,9 @@ "Bridge for ${ platform }": [ "Bridge voor ${ platform }" ], + "Bring your Gmail into ${ MAIL_APP_NAME }": [ + "Voeg uw Gmail toe aan ${ MAIL_APP_NAME }" + ], "Browser extensions": [ "Browserextensies" ], @@ -23170,6 +24731,9 @@ "Catch-all address": [ "Catch-all adres" ], + "Categories": [ + "Categorieën" + ], "Change login password": [ "Inlogwachtwoord wijzigen" ], @@ -23192,7 +24756,7 @@ "Verander tweede wachtwoord" ], "Check your default mail application": [ - "Controleer uw standaard e-mailapplicatie." + "Controleer uw standaard e-mailapplicatie" ], "Choose a provider": [ "Kies een provider" @@ -23224,18 +24788,12 @@ "Confirm": [ "Bevestigen" ], - "Confirm address": [ - "Adres bevestigen" - ], "Confirm downgrade": [ "Downgrade bevestigen" ], "Confirm loss of ${ BRAND_NAME } bonuses": [ "Bevestig verlies van ${ BRAND_NAME }-bonussen" ], - "Confirm phone number": [ - "Telefoonnummer bevestigen" - ], "Connect ${ name }": [ "Verbind ${ name }" ], @@ -23260,12 +24818,18 @@ "Connect your custom domain": [ "Verbind uw eigen domein" ], + "Connected emails": [ + "Verbonden e-mails" + ], "Connection status": [ "Verbindingsstatus" ], "Contact us": [ "Contacteer ons" ], + "Continue with free storage": [ + "Ga door met gratis opslag" + ], "Continue with partial import?": [ "Doorgaan met gedeeltelijke invoer?" ], @@ -23291,6 +24855,9 @@ "Create a new gateway": [ "Een nieuwe gateway aanmaken" ], + "Create a new password": [ + "Maak direct een nieuw wachtwoord aan" + ], "Create Gateway": [ "Gateway aanmaken" ], @@ -23372,6 +24939,12 @@ "Data recovery": [ "Dataherstel" ], + "Data recovery contacts": [ + "Contactpersonen voor gegevensherstel" + ], + "Data recovery options": [ + "Opties voor gegevensherstel" + ], "Data retention": [ "Gegevensbewaring" ], @@ -23381,6 +24954,9 @@ "Day theme": [ "Dag thema" ], + "Deactivate current phrase?": [ + "De huidige zin deactiveren?" + ], "Decrypt key": [ "Sleutel decoderen" ], @@ -23433,6 +25009,9 @@ "Delete user?": [ "Gebruiker verwijderen?" ], + "Delete version history?": [ + "Versiegeschiedenis verwijderen?" + ], "Deny access to user?": [ "Gebruiker de toegang weigeren?" ], @@ -23448,6 +25027,9 @@ "Device": [ "Apparaat" ], + "Device data backup": [ + "Back-up van apparaatgegevens" + ], "Device name": [ "Apparaatnaam" ], @@ -23457,6 +25039,9 @@ "Disable categories?": [ "Categorieën uitschakelen?" ], + "Disable device data backup?": [ + "Apparaatback-up uitschakelen?" + ], "Disable two-factor authentication": [ "Tweestapsverificatie uitschakelen" ], @@ -23469,6 +25054,12 @@ "Discard changes?": [ "Wijzigingen annuleren?" ], + "Disconnected from Gmail": [ + "Ontkoppeld van Gmail" + ], + "Dismiss setup checklist": [ + "Setup-checklist negeren" + ], "Display name and signature": [ "Weergavenaam en handtekening" ], @@ -23505,6 +25096,9 @@ "Download the mobile apps": [ "Download de mobiele apps" ], + "Download your recovery phrase": [ + "Download uw herstelzin" + ], "Downloads": [ "Downloads" ], @@ -23583,6 +25177,9 @@ "Email privacy": [ "E-mail privacy" ], + "Email verification": [ + "E-mailverificatie" + ], "Emergency access": [ "Noodtoegang" ], @@ -23641,6 +25238,9 @@ "Feature access": [ "Functietoegang" ], + "Fewer distractions, more focus": [ + "Minder afleidingen, meer focus" + ], "Filter for more focus": [ "Filter voor meer focus" ], @@ -23671,12 +25271,12 @@ "Forward emails": [ "Stuur e-mails door" ], - "Forwardings": [ - "Doorsturen" - ], "Free": [ "Gratis" ], + "Free plan": [ + "Gratis abonnement" + ], "Gateway": [ "Gateway" ], @@ -23707,6 +25307,9 @@ "Get ${ planMaxSpace } storage for your files, photos and documents with ${ planName }. ${ upgradeButton }": [ "Krijg ${ planMaxSpace } opslagruimte voor uw bestanden, foto's en documenten met ${ planName }. ${ upgradeButton }" ], + "Get ${ VPN_APP_NAME } on your TV": [ + "Ontvang ${ VPN_APP_NAME } op uw tv" + ], "Get ${ vpnPlus } to access all servers": [ "Neem ${ vpnPlus } om toegang te krijgen tot alle servers" ], @@ -23737,6 +25340,12 @@ "Get more from your VPN": [ "Haal meer uit uw VPN" ], + "Get more storage with ${ MAIL_APP_NAME } Plus": [ + "Krijg meer opslagruimte met ${ MAIL_APP_NAME } Plus" + ], + "Get started": [ + "Aan de slag" + ], "Get the app on all your devices and enjoy safe, seamless access anywhere.": [ "Installeer de app op al uw apparaten en geniet overal van veilige, naadloze toegang." ], @@ -23767,9 +25376,15 @@ "Help center": [ "Helpcentrum" ], + "Helping activists in Hong Kong": [ + "Activisten helpen in Hongkong" + ], "Home": [ "Home" ], + "How ${ MAIL_APP_NAME } is different": [ + "Hoe ${ MAIL_APP_NAME } verschilt" + ], "How did you find out about us?": [ "Hoe hebt u ons gevonden?" ], @@ -23882,9 +25497,15 @@ "Link confirmation": [ "Link bevestigen" ], + "Lower your cost without losing features": [ + "Verlaag uw kosten zonder in te leveren op functionaliteiten" + ], "Main password": [ "Hoofdwachtwoord" ], + "Make your business stand out": [ + "Laat uw bedrijf opvallen" + ], "Manage files across devices on Windows, Mac, Android, and iOS.": [ "Beheer bestanden op al uw apparaten, waaronder Windows, Mac, Android en iOS." ], @@ -23939,6 +25560,9 @@ "No events": [ "Geen afspraken" ], + "No events yet": [ + "Nog geen afspraken" + ], "No need to empty the trash": [ "Het is niet nodig om de prullenbak te legen" ], @@ -23993,12 +25617,18 @@ "Other sign-in issues": [ "Andere problemen met inloggen" ], + "Our fight against censorship in Russia": [ + "Onze strijd tegen censuur in Rusland" + ], "Password": [ "Wachtwoord" ], "Password generator rules": [ "Regels wachtwoord generator" ], + "Password reset options": [ + "Wachtwoord reset instellingen" + ], "Password reset settings": [ "Wachtwoord reset instellingen" ], @@ -24032,9 +25662,6 @@ "Phone": [ "Telefoon" ], - "Photos": [ - "Foto's" - ], "Pin the extension": [ "Extensie vastpinnen" ], @@ -24071,6 +25698,9 @@ "QR Code": [ "QR-code" ], + "QR code sign-in": [ + "Aanmelden via QR-code" + ], "Ready, set, forward": [ "Klaar voor de start, doorsturen" ], @@ -24095,6 +25725,9 @@ "Recovery file": [ "Herstelbestand" ], + "Recovery phrase": [ + "Herstel zin" + ], "Refer a friend": [ "Verwijs een vriend door" ], @@ -24113,9 +25746,15 @@ "Remove domain": [ "Verwijder bestand" ], + "Remove email": [ + "E-mail verwijderen" + ], "Remove forwarding address": [ "Doorschakeladres verwijderen" ], + "Remove recovery phone number": [ + "Verwijder het hersteltelefoonnummer" + ], "Remove server?": [ "Server verwijderen?" ], @@ -24215,6 +25854,9 @@ "Select when you want this notification to be sent": [ "Selecteer wanneer u wilt dat deze melding wordt verzonden" ], + "Send and receive Gmail using ${ MAIL_APP_NAME }": [ + "Gmail verzenden en ontvangen in ${ MAIL_APP_NAME }" + ], "Send email reminders?": [ "E-mailherinneringen versturen?" ], @@ -24284,6 +25926,9 @@ "Sign in on TV": [ "Inloggen op tv" ], + "Sign in on TV?": [ + "Inloggen op TV?" + ], "Sign in to join the Beta program": [ "Log in om deel te nemen aan het Bèta programma" ], @@ -24299,6 +25944,9 @@ "Signed in to member account": [ "Ingelogd op een gebruikersaccount" ], + "Signed-in reset": [ + "Aanmeldingsherstel" + ], "Simplify email distribution": [ "Vereenvoudig de e-maildistributie" ], @@ -24308,12 +25956,21 @@ "Single sign-on": [ "Single sign-on" ], + "SMS verification": [ + "SMS-verificatie" + ], "SMTP submission": [ "SMTP-indiening" ], "Snooze:": [ "Snooze:" ], + "Some of your encrypted data is locked": [ + "Een deel van uw versleutelde gegevens is vergrendeld." + ], + "Something went wrong": [ + "Er is iets fout gegaan." + ], "Sort folders alphabetically": [ "Mappen alfabetisch sorteren" ], @@ -24341,6 +25998,9 @@ "Status": [ "Status" ], + "Stay secure and connected anywhere": [ + "Blijf overal veilig en verbonden" + ], "Strengthen your security on all your devices with ${ passPlusPlanName }. ${ upgradeButton }": [ "Verbeter uw veiligheid op al uw apparaten met ${ passPlusPlanName }. ${ upgradeButton }" ], @@ -24363,6 +26023,9 @@ "Support ticket closed": [ "Support ticket gesloten" ], + "Support your compliance objectives": [ + "Ondersteun uw compliancedoelstellingen" + ], "Switch account": [ "Account wisselen" ], @@ -24432,6 +26095,9 @@ "Type": [ "Soort" ], + "Unblocking internet access in Iran": [ + "Ontgrendelen van internettoegang in Iran" + ], "Unlock your data": [ "Ontgrendel uw gegevens" ], @@ -24501,6 +26167,9 @@ "Verify it’s you": [ "Uw identiteit verifiëren" ], + "Verify your email": [ + "Verifieer uw e-mailadres" + ], "Verifying your card...": [ "Uw kaart wordt geverifieerd..." ], @@ -24525,6 +26194,9 @@ "Warning: suspected fake website": [ "Waarschuwing: vermoedelijk valse website" ], + "We sent you a code to your email to make sure it’s you. This code is valid for 10 minutes. Please enter it below.": [ + "We hebben een code naar uw e-mailadres gestuurd om te controleren of u het bent. Deze code is 10 minuten geldig. Voer hem hieronder in." + ], "We'll send an email to your new address with instructions on completing the change.": [ "We zullen een e-mail naar uw nieuwe e-mailadres sturen met instructies voor het voltooien van de wijziging." ], @@ -24540,6 +26212,9 @@ "Welcome to your new password manager!": [ "Welkom bij uw nieuwe wachtwoordbeheerder!" ], + "What changes if you switch to the Free plan": [ + "Wat verandert er als u overstapt naar het gratis abonnement" + ], "What is an alias?": [ "Wat is een alias?" ], @@ -24552,6 +26227,9 @@ "WireGuard configuration": [ "WireGuard configuratie" ], + "You are all set": [ + "U bent helemaal klaar" + ], "You can now create unlimited folders and labels": [ "U kunt nu onbeperkt mappen en labels maken" ], @@ -24570,6 +26248,12 @@ "Your ${ planTitle } subscription has started": [ "Uw ${ planTitle }-abonnement is nu gestart." ], + "Your admin at ${ orgName } is inviting you to activate your new secure ${ BRAND_NAME } account and update your password.": [ + "Uw beheerder bij ${ orgName } nodigt u uit om uw nieuwe beveiligde ${ BRAND_NAME }-account te activeren en uw wachtwoord bij te werken." + ], + "Your admin is inviting you to activate your new secure ${ BRAND_NAME } account and update your password.": [ + "Uw beheerder nodigt u uit om uw nieuwe beveiligde ${ BRAND_NAME } account te activeren en uw wachtwoord bij te werken." + ], "Your calendar link": [ "Uw agendakoppeling" ], @@ -24582,6 +26266,15 @@ "Your plan": [ "Uw abonnement" ], + "Your recovery file": [ + "Uw herstelbestand" + ], + "Your recovery phrase": [ + "Uw herstelzin" + ], + "Your recovery setup": [ + "Uw herstelinstellingen" + ], "Your referrals": [ "Uw verwijzingen" ], @@ -24714,6 +26407,24 @@ "Admins can manage user accounts and give admin privileges to other users. Only the primary admin can edit the plan of the organization.": [ "Beheerders kunnen gebruikersaccounts beheren en beheerdersrechten geven aan andere gebruikers. Alleen de primaire beheerder kan het abonnement van de organisatie bewerken." ], + "Allow recovering your account with a one-time code sent to your recovery email": [ + "U kunt uw account herstellen met een eenmalige code die naar uw herstel-e-mailadres wordt verzonden." + ], + "Allow recovering your account with a one-time code sent to your recovery phone": [ + "U kunt uw account herstellen met een eenmalige code die naar uw hersteltelefoon wordt verzonden." + ], + "Allow resetting your password from the account settings": [ + "Schakel de optie in om uw wachtwoord opnieuw in te stellen via de accountinstellingen." + ], + "Allow scanning a QR code from a ${ BRAND_NAME } mobile app to sign in": [ + "Sta het scannen van een QR-code vanuit een mobiele app van ${ BRAND_NAME } toe om in te loggen." + ], + "Allow trusted contacts to request access to your account": [ + "Sta vertrouwde contactpersonen toe om toegang tot uw account aan te vragen" + ], + "Allow trusted contacts to unlock your encrypted data after a password reset": [ + "Sta vertrouwde contactpersonen toe om uw versleutelde gegevens te ontgrendelen na een wachtwoordreset." + ], "Allows to seamlessly add Zoom video conferencing links to your calendar invitations.": [ "Maakt het naadloos mogelijk om Zoom-videoconferentielinks toe te voegen aan uw agendauitnodigingen." ], @@ -24750,6 +26461,9 @@ "Each imported email will have this label": [ "Elke geïmporteerde e-mail heeft dit label" ], + "Early access to new apps and features.": [ + "Vroegtijdige toegang tot nieuwe applicaties en functies." + ], "Edit folder names": [ "Mapnamen bewerken" ], @@ -24798,6 +26512,9 @@ "If you purchased a gift code or received one from our support team, you can enter it here.": [ "Als u een geschenkcode heeft gekocht of een heeft ontvangen van ons supportteam, kunt u deze hier invoeren." ], + "Includes professional email at @yourdomain.com, cloud storage with collaborative document editing, scheduling and video conferencing, password management, a secure ${ VPN_SHORT_APP_NAME }, and more.": [ + "Inclusief professioneel e-mailadres bij @yourdomain.com, cloudopslag met mogelijkheden voor gezamenlijke documentbewerking, planning en videoconferenties, wachtwoordbeheer, een beveiligde ${ VPN_SHORT_APP_NAME } en meer." + ], "Members who do not use 2FA will get an email asking them to enable it as soon as possible. Single sign-on users will not receive the email reminder.": [ "Leden die geen 2FA gebruiken krijgen een e-mail met het verzoek om deze zo snel mogelijk in te schakelen. Single sign-on gebruikers zullen de e-mail herinnering niet ontvangen." ], @@ -24819,6 +26536,15 @@ "Remove metadata from images to protect your privacy.": [ "Verwijder metadata van afbeeldingen om uw privacy te beschermen" ], + "Save 12-word long phrase to unlock your account and your encrypted data instantly if you forgot your password": [ + "Sla een zin van 12 woorden op waarmee u uw account en uw versleutelde gegevens direct kunt ontgrendelen als u uw wachtwoord bent vergeten." + ], + "Save an encryption backup file in this browser to recover your data after a password reset": [ + "Sla een back-upbestand van de versleuteling op in deze browser om uw gegevens te herstellen na een wachtwoordreset." + ], + "Save an encryption backup file to recover your data after a password reset": [ + "Sla een versleuteld back-upbestand op om uw gegevens te herstellen na een wachtwoordreset." + ], "See number of unread messages in the tab icon": [ "Toon aantal ongelezen berichten in het tab icoon" ], @@ -24891,8 +26617,8 @@ "This feature is only available on Beta": [ "Deze functionaliteit is allen beschikbaar in Beta" ], - "This is the default key used by other ${ MAIL_APP_NAME } users on older mobile apps to encrypt data they send to you": [ - "Dit is de standaard sleutel die door andere ${ MAIL_APP_NAME } gebruikers op oudere mobiele apps wordt gebruikt om gegevens te versleutelen die ze naar u verzenden" + "This is the default key used by other ${ MAIL_APP_NAME } users on older apps to encrypt data they send to you": [ + "Dit is de standaardsleutel die door andere ${ MAIL_APP_NAME }-gebruikers in oudere apps wordt gebruikt om gegevens te versleutelen die ze naar u sturen" ], "This is the default key used by other ${ MAIL_APP_NAME } users to encrypt data they send to you": [ "Dit is de standaardsleutel die door andere ${ MAIL_APP_NAME }-gebruikers wordt gebruikt om gegevens te versleutelen die zij u verzenden." @@ -24980,6 +26706,9 @@ "User is a group": [ "Gebruiker is een groep" ], + "via ${ groupName }": [ + "via ${ groupName }" + ], "Waiting for user to accept the invitation": [ "Wachten tot gebruiker de uitnodiging accepteert" ] @@ -25303,6 +27032,12 @@ ] }, "user_modal": { + "(via ${ groupName })": [ + "(via ${ groupName })" + ], + "(via group)": [ + "(via groep)" + ], "Add delegated roles to a user to grant them only the specific permissions they need, keeping full-admin power separate and your environment secure.": [ "Verleen gedelegeerde functies aan een gebruiker om hem alleen de specifieke machtigingen te geven die hij nodig heeft. Zo blijven de volledige beheerdersrechten gescheiden en blijft uw omgeving veilig." ], @@ -25690,11 +27425,14 @@ "${ BRAND_NAME } will transfer as much data as possible, starting with your most recent messages.": [ "${ BRAND_NAME } zal zo veel mogelijk gegevens overdragen, te beginnen met uw meest recente berichten." ], - "Are you sure you want to delete the phone number?": [ - "Bent u zeker dat u het telefoonnummer wilt verwijderen?" + "Are you sure you want to remove your notification email?": [ + "Weet u zeker dat u uw notificatie-e-mail wilt verwijderen?" ], - "Are you sure you want to delete this address?": [ - "Weet u zeker dat u dit adres wil verwijderen?" + "Are you sure you want to remove your recovery email?": [ + "Weet u zeker dat u uw herstel-e-mailadres wilt verwijderen?" + ], + "Are you sure you want to remove your recovery phone number?": [ + "Weet u zeker dat u uw hersteltelefoonnummer wilt verwijderen?" ], "By deleting this address, you will no longer be able to receive daily email notifications.": [ "Door dit e-mailadres te verwijderen, kunt u geen dagelijkse e-mailmeldingen meer ontvangen." @@ -25705,7 +27443,7 @@ "By deleting this address, you will no longer be able to recover your account.": [ "Door dit e-mailadres te verwijderen, kunt u uw account niet meer herstellen." ], - "By deleting this phone number, you will no longer be able to recover your account.": [ + "By removing this phone number, you will no longer be able to recover your account.": [ "Door dit telefoonnummer te verwijderen, kunt u uw account niet meer herstellen." ], "Could not login. Please open ${ PASS_APP_NAME } browser extension and login from there.": [ diff --git a/applications/account/locales/pl_PL.json b/applications/account/locales/pl_PL.json index de9b3bfb889..1df30ac7c39 100644 --- a/applications/account/locales/pl_PL.json +++ b/applications/account/locales/pl_PL.json @@ -275,6 +275,9 @@ "Connect your ${ BRAND_NAME } Account": [ "Połącz konto ${ BRAND_NAME }" ], + "Connect your email": [ + "Połącz adres e-mail" + ], "Connected": [ "Połączono" ], @@ -419,9 +422,15 @@ "Delete record": [ "Usuń rekord" ], + "Delete token “${ token.Name }”": [ + "Usuń token “${ token.Name }”" + ], "Delete user": [ "Usuń użytkownika" ], + "Delete without exporting": [ + "Usuń bez eksportowania" + ], "Delete your account": [ "Usuń konto" ], @@ -488,6 +497,9 @@ "Download ${ DRIVE_APP_NAME } apps": [ "Pobierz aplikacje ${ DRIVE_APP_NAME }" ], + "Download Bridge for ${ platform }": [ + "Pobierz Bridge na ${ platform }" + ], "Download CSV sample": [ "Pobierz przykładowy plik CSV" ], @@ -500,6 +512,9 @@ "Download recovery file": [ "Pobierz plik odzyskiwania" ], + "Download the ${ MAIL_APP_NAME } Export Tool": [ + "Pobierz ${ MAIL_APP_NAME } Export Tool" + ], "Download the desktop app": [ "Pobierz aplikację desktopową" ], @@ -575,6 +590,9 @@ "Enable multi-user support": [ "Włącz obsługę wielu użytkowników" ], + "Encrypt and export": [ + "Zaszyfruj i eksportuj" + ], "Explore ${ target }": [ "Poznaj plan ${ target }" ], @@ -593,6 +611,12 @@ "Export": [ "Eksportuj" ], + "Export key": [ + "Eksportuj klucz" + ], + "Export key before deleting": [ + "Eksportuj klucz przed usunięciem" + ], "Extend": [ "Rozszerz" ], @@ -608,6 +632,9 @@ "Forgot recovery method?": [ "Nie pamiętasz metody odzyskiwania?" ], + "Generate": [ + "Generuj" + ], "Generate new recovery phrase": [ "Generuj nowe hasło odzyskiwania" ], @@ -617,6 +644,9 @@ "Generate recovery phrase": [ "Generuj hasło odzyskiwania" ], + "Generate token": [ + "Generuj token" + ], "Get ${ planName } for ${ priceCoupon }": [ "Wybierz plan ${ planName } za ${ priceCoupon }" ], @@ -890,6 +920,9 @@ "Open navigation": [ "Otwórz nawigację" ], + "Open recovery settings": [ + "Otwórz ustawienia odzyskiwania" + ], "Open settings": [ "Otwórz ustawienia" ], @@ -935,6 +968,9 @@ "Quote": [ "Cytuj" ], + "Reactivate keys": [ + "Reaktywuj klucze" + ], "Reconnect": [ "Połącz ponownie" ], @@ -1112,6 +1148,9 @@ "select file": [ "wybierz plik" ], + "Select files": [ + "Wybierz pliki" + ], "Select time zone": [ "Wybierz strefę czasową" ], @@ -2089,20 +2128,22 @@ "Organization does not have enough storage available": [ "Organizacja nie ma wystarczającej ilości przestrzeni dyskowej" ], - "Organization settings": [ - "Ustawienia organizacji" - ], "Required": [ "Wymagane" ], "Select at least one user to start a migration": [ "Zaznacz co najmniej jednego użytkownika, aby rozpocząć migrację" ], - "Transfer errors": [ - "Błędy transferu" - ], "Verify your domain to start a migration": [ "Zweryfikuj swoją domenę, aby rozpocząć migrację" + ], + "You": [ + "Ty" + ] + }, + "Bridge version load failed": { + "Failed to find latest version": [ + "Nie udało się znaleźć najnowszej wersji" ] }, "Browser": { @@ -3691,6 +3732,9 @@ ] }, "Dashboard": { + "Get more from your ${ planTitle } subscription.": [ + "Wykorzystaj w pełni plan ${ planTitle }." + ], "Set secure passwords without the hassle.": [ "Ustaw bezpieczne hasła bez problemów." ], @@ -3881,9 +3925,6 @@ "No one in your organization can connect to shared servers.": [ "Nikt z Twojej organizacji nie może łączyć się z udostępnionymi serwerami." ], - "Send a code to your recovery email or phone": [ - "Wyślij kod na adres lub numer pomocniczy" - ], "Set up accounts for all users and invite them to join ${ BRAND_NAME }.": [ "Skonfiguruj konta dla wszystkich użytkowników i zaproś ich do ${ BRAND_NAME }." ], @@ -4466,11 +4507,21 @@ "Wiadomość weryfikacyjna została wysłana do ${ address }" ] }, + "email_forwarding_2023: Action": { + "Save": [ + "Zapisz" + ] + }, "email_forwarding_2023: Error message, recovery": { "Please try opening the link again.": [ "Otwórz ponownie link." ] }, + "email_forwarding_2023: Header": { + "To": [ + "Do" + ] + }, "email_forwarding_2023: Info": { "You can safely close this tab.": [ "Możesz zamknąć tę kartę." @@ -4479,6 +4530,11 @@ "Nie będziesz otrzymywać wiadomości automatycznie przekierowanych z adresu ${ boldForwarderEmail }." ] }, + "email_forwarding_2023: Label": { + "or": [ + "lub" + ] + }, "email_forwarding_2023: Link": { "Learn more": [ "Dowiedz się więcej" @@ -4604,9 +4660,6 @@ "Less than a minute left": [ "Pozostała mniej niż minuta" ], - "None": [ - "Brak" - ], "Only ": [ "Tylko " ], @@ -5094,9 +5147,6 @@ "Please try again in a few moments.": [ "Spróbuj ponownie za kilka chwil." ], - "Please upgrade to a business plan with more than 1 user to get multi-user support": [ - "Ulepsz do planu biznesowego z więcej niż 1 użytkownikiem, aby uzyskać obsługę wielu użytkowników" - ], "Please upgrade to a business plan with more than 1 user to manage multiple users.": [ "Ulepsz do planu biznesowego z więcej niż 1 użytkownikiem, aby zarządzać wieloma użytkownikami." ], @@ -5307,6 +5357,9 @@ "You must set a name": [ "Musisz wpisać nazwę" ], + "You need to have an active custom domain address in order to generate an SMTP submission token.": [ + "Aby wygenerować token SMTP, musisz posiadać aktywny adres niestandardowej domeny." + ], "You've reached the maximum character number. Please shorten your message.": [ "Osiągnięto maksymalną liczbę znaków. Skróć wiadomość." ], @@ -6433,6 +6486,9 @@ ] }, "Header": { + "Action": [ + "Akcja" + ], "Actions": [ "Akcje" ], @@ -6559,6 +6615,9 @@ "Email address": [ "Adres e-mail" ], + "Last used": [ + "Ostatnio użyty" + ], "Token name": [ "Nazwa tokena" ] @@ -6991,6 +7050,11 @@ "Część zawartości kalendarza nie jest obsługiwana i nie zostanie zaimportowana." ] }, + "Inactive key function info": { + "If reactivated, the key will be used for decryption": [ + "W przypadku ponownej aktywacji klucz zostanie użyty do odszyfrowania" + ] + }, "Info": { "${ amountUsers }/${ totalUsers } users currently has access to shared servers.": [ "${ amountUsers } / ${ totalUsers } użytkownika ma dostęp do udostępnionych serwerów.", @@ -7361,12 +7425,6 @@ "Add your name and logo to create a more personalized experience for your organization.": [ "Dodaj nazwę i logo, aby spersonalizować organizację." ], - "Adding ${ addedServerCount } gateway server": [ - "Dodawanie ${ addedServerCount } serwera bramy", - "Dodawanie ${ addedServerCount } serwerów bramy", - "Dodawanie ${ addedServerCount } serwerów bramy", - "Dodawanie ${ addedServerCount } serwerów bramy" - ], "Adding an external email address will disable end-to-end encryption for all email communication within that group. Do you want to proceed?": [ "Dodanie zewnętrznego adresu e-mail spowoduje wyłączenie szyfrowania end-to-end wiadomości w całej grupie. Czy chcesz kontynuować?" ], @@ -7526,6 +7584,9 @@ "Automatically show the next email when an open email is deleted, archived or moved.": [ "Automatycznie pokazuje następną wiadomość po usunięciu, zarchiwizowaniu lub przeniesieniu poprzedniej wiadomości." ], + "Available on macOS, Windows, and Linux.": [ + "Aplikacja dostępna na macOS, Windowsa i Linuksa." + ], "Awaiting transaction": [ "Transakcja oczekująca" ], @@ -7601,9 +7662,6 @@ "Change your password": [ "Zmień hasło" ], - "Check the status of imports and forwarding.": [ - "Sprawdź status importów i przekierowania." - ], "Choose an Entity ID to continue.": [ "Wybierz Identyfikator jednostki, aby kontynuować." ], @@ -7685,12 +7743,6 @@ "Create a label for the imported messages, a time range for this import, and the labels you would like to import.": [ "Utwórz etykietę dla zaimportowanych wiadomości, wybierz przedział czasowy dla tego importu oraz etykiety, które chcesz zaimportować." ], - "Create a secure cloud for ${ value } member": [ - "Utwórz bezpieczną chmurę dla ${ value } użytkownika", - "Utwórz bezpieczną chmurę dla ${ value } użytkowników", - "Utwórz bezpieczną chmurę dla ${ value } użytkowników", - "Utwórz bezpieczną chmurę dla ${ value } użytkowników" - ], "Create an account": [ "Utwórz konto" ], @@ -7868,6 +7920,9 @@ "Download your favorite app today and take privacy with you everywhere you go.": [ "Pobierz swoją ulubioną aplikację i ciesz się prywatnością, gdziekolwiek jesteś." ], + "Download your PGP keys for use with other PGP-compatible services.": [ + "Pobierz klucze PGP, aby korzystać z nich w innych aplikacjach." + ], "Drop file here to upload": [ "Upuść, aby przesłać" ], @@ -7919,6 +7974,9 @@ "Enable single sign-on to keep your organization safe": [ "Włącz logowanie SSO, aby zapewnić swojej organizacji bezpieczeństwo" ], + "Enable TLS or SSL on the external service if it is supported.": [ + "Jeśli w zewnętrznej usłudze szyfrowanie TLS lub SSL jest obsługiwane, włącz je." + ], "Enabled countries": [ "Włączone kraje" ], @@ -8093,6 +8151,9 @@ "Get started with the referral link above.": [ "Zacznij od powyższego linku polecającego." ], + "Give the token a descriptive name, such as the service you plan to use it with, and select one of your active custom domain addresses. Only this address will be able to send emails with this token.": [ + "Nazwij token, np. nazwą używanej usługi i wybierz aktywny adres niestandardowej domeny. Tylko ten adres będzie mógł wysyłać wiadomości za pomocą tego tokena." + ], "Go to your identity provider, get the SAML metadata for ${ appName } and import it here.": [ "Przejdź do swojego dostawcy tożsamości, pobierz metadane SAML dla ${ appName } i zaimportuj je tutaj." ], @@ -8519,6 +8580,9 @@ "Next billing date": [ "Następna data rozliczeniowa" ], + "No account keys exist": [ + "Kucze konta nie istnieją" + ], "No action selected": [ "Nie wybrano akcji" ], @@ -8981,6 +9045,12 @@ "Since you're a loyal user, your account has additional features enabled.": [ "Dzięki temu, że od dawna jesteś użytkownikiem, Twoje konto posiada dodatkowe funkcje." ], + "SMTP submission allows 3rd-party services or devices to send email through ${ MAIL_APP_NAME } for your custom domain addresses.": [ + "Poświadczenia SMTP pozwalają innym usługom lub urządzeniom na wysyłanie wiadomości z Twojej niestandardowej domeny w ${ MAIL_APP_NAME }." + ], + "SMTP submission allows 3rd-party services or devices to send email through ${ MAIL_APP_NAME } for your custom domain addresses. To use this feature, start by generating a new token.": [ + "Poświadczenia SMTP pozwalają innym usługom lub urządzeniom na wysyłanie wiadomości z Twojej niestandardowej domeny w ${ MAIL_APP_NAME }. Wygeneruj nowy token, aby rozpocząć." + ], "Snooze messages for later so they are top of your inbox when you want": [ "Odłóż wiadomości na później, aby znalazły się na górze skrzynki odbiorczej wtedy, kiedy chcesz" ], @@ -9095,6 +9165,9 @@ "The ${ boldDataLocked } message will no longer be shown, but you can still unlock your data under ${ encryptionAndKeysLink }.": [ "Wiadomość \"${ boldDataLocked }\" nie będzie pokazywana, ale możesz nadal odblokować dane w sekcji ${ encryptionAndKeysLink }." ], + "The ${ MAIL_APP_NAME } Export Tool lets you export decrypted emails from your ${ MAIL_APP_NAME } account to your device. You can then view the messages or import them into another email account or email client.": [ + "${ MAIL_APP_NAME } Export Tool pozwala na wyeksportowanie odszyfrowanych wiadomości z konta ${ MAIL_APP_NAME }. Wyeksportowane wiadomości możesz zaimportować do innego konta lub aplikacji pocztowej." + ], "The dark web is a hidden part of the internet where stolen personal information, like identities, can be bought and sold.": [ "Dark web to ukryta część Internetu, w której można kupować i sprzedawać skradzione dane osobowe." ], @@ -9230,6 +9303,9 @@ "This service is not available to users signing in with single sign-on.": [ "Usługa nie jest dostępna dla użytkowników SSO." ], + "This token won’t be available after you close this window, and you should not share it with anyone.": [ + "Token nie będzie dostępny po zamknięciu okna. Nie udostępniaj go nikomu." + ], "This unsubscribe link has expired. Please open a more recent email from this mailing list.": [ "Link anulowania subskrypcji wygasł. Otwórz nowszą wiadomość z tej listy mailingowej." ], @@ -9248,6 +9324,9 @@ "This will disable your current recovery phrase. You won't be able to use it to access your account or decrypt your data.": [ "Ta opcja wyłączy obecne hasło odzyskiwania. Nie będziesz mógł użyć tego hasła, aby uzyska dostęp do konta lub odszyfrowywać dane." ], + "This will download a file containing your private key. Protect this file by encrypting it with a password.": [ + "Spowoduje to pobranie pliku zawierającego klucz prywatny. Chroń ten plik, szyfrując go za pomocą hasła." + ], "This will enable PayPal to be used to pay for your ${ BRAND_NAME } subscription. We will redirect you to PayPal in a new browser tab. If you use any pop-up blockers, please disable them to continue.": [ "Ta opcja umożliwi użycie konta PayPal jako metody płatności za Twoją subskrypcję ${ BRAND_NAME }. Zostaniesz przekierowany na stronę PayPal w nowej karcie przeglądarki. Jeśli używasz opcji blokowania wyskakujących okien, wyłącz ją, aby kontynuować." ], @@ -9437,6 +9516,9 @@ "Use the following credentials when connecting to ${ VPN_APP_NAME } servers without application. Example use cases include: Tunnelblick on macOS, OpenVPN on GNU/Linux.": [ "Użyj następujących danych logowania, podczas łączenia się z serwerami ${ VPN_APP_NAME } poza aplikacją. Przykładowe użycie: Tunnelblick na macOS, OpenVPN na GNU/Linuksie." ], + "Use the selected email address as the SMTP username in the external service, and the generated token as the SMTP password.": [ + "Użyj wybranej nazwy użytkownika jako nazwy użytkownika SMTP w zewnętrznej usłudze i wygeneruj token jako hasło SMTP." + ], "User activated": [ "Użytkownik został aktywowany" ], @@ -9647,6 +9729,9 @@ "Writing assistant": [ "Asystent pisania" ], + "X": [ + "X" + ], "Yearly": [ "Co rok" ], @@ -9710,9 +9795,6 @@ "You can edit this once to ensure the correct email address for verification.": [ "Edytuj adres, aby zweryfikować prawidłowy adres pomocniczy." ], - "You can enable the Photos section from the interface using the toggle below.": [ - "Sekcję zdjęć możesz włączyć za pomocą poniższego przycisku." - ], "You can enforce the password rules members of your organization will use when they create or reset the password to their ${ BRAND_NAME } Account.": [ "Możesz wymusić zasady dotyczące haseł, których użytkownicy organizacji będą używać podczas tworzenia lub resetowania hasła konta ${ BRAND_NAME }." ], @@ -9746,6 +9828,9 @@ "You can turn on notifications to get alerts when new email messages arrive in this folder.": [ "Możesz włączyć powiadomienia, aby otrzymywać informacje o nowych wiadomościach w tym folderze." ], + "You can use ${ MAIL_APP_NAME } with any desktop email client that supports IMAP/SMTP, including Outlook, Apple Mail, and Thunderbird.": [ + "Możesz używać poczty ${ MAIL_APP_NAME } z każdą desktopową aplikacją, która obsługuje IMAP / SMTP, w tym Outlook, Apple Mail i Thunderbird." + ], "You can use the following credentials to connect to a ${ VPN_APP_NAME } server using a third-party, open source VPN app, like Tunnelblick for macOS or OpenVPN for GNU/Linux.": [ "Możesz użyć następujących danych logowania do połączenia się z serwerem ${ VPN_APP_NAME }, używając alternatywnych aplikacji VPN, takich jak: Tunnelblick na macOS czy OpenVPN na GNU/Linuksie." ], @@ -10143,6 +10228,54 @@ "Subskrypcja" ] }, + "Key function description": { + "Decryption": [ + "Odszyfrowywanie" + ], + "Decryption, verification": [ + "Odszyfrowywanie, weryfikacja" + ], + "Encryption, decryption, signing, verification": [ + "Szyfrowanie, odszyfrowywanie, podpisywanie, weryfikacja" + ] + }, + "Key generation": { + "Key successfully generated.": [ + "Klucz został wygenerowany." + ] + }, + "Key state badge": { + "Disabled": [ + "Wyłączony" + ], + "Inactive": [ + "Nieaktywny" + ], + "Obsolete": [ + "Przestarzały" + ], + "Primary": [ + "Główny" + ] + }, + "Key type hint": { + "Faster": [ + "Szybszy" + ], + "Slower, but stronger long-term security": [ + "Wolniejsze, ale silniejsza długoterminowa ochrona" + ] + }, + "Key type option": { + "${ classicalProtection } (ECC Curve25519)": [ + "${ classicalProtection } (ECC Curve25519)" + ] + }, + "Key type selection": { + "Select key type": [ + "Wybierz typ klucza" + ] + }, "Keyboard shortcut name": { "Add encryption": [ "Dodaj szyfrowanie" @@ -10357,6 +10490,23 @@ "Pokaż opcje" ] }, + "Keys actions": { + "Delete": [ + "Usuń" + ], + "Export private key": [ + "Eksportuj klucz prywatny" + ], + "Export public key": [ + "Eksportuj klucz publiczny" + ], + "Mark not obsolete": [ + "Oznacz jako nieprzestarzały" + ], + "Mark obsolete": [ + "Oznacz jako przestarzały" + ] + }, "Knowledge base link label": { "Here's how": [ "Instrukcja" @@ -10435,6 +10585,9 @@ "Account storage": [ "Przestrzeń dyskowa konta" ], + "Action": [ + "Akcja" + ], "Actions": [ "Działania" ], @@ -10642,6 +10795,15 @@ "Composer": [ "Edytor" ], + "Composer default font/size": [ + "Domyślna czcionka i jej rozmiar" + ], + "Composer mode": [ + "Tryb edytora" + ], + "Composer text direction": [ + "Kierunek tekstu edytora" + ], "Conditions": [ "Warunki" ], @@ -10678,6 +10840,9 @@ "Copy": [ "Kopiuj" ], + "Copy fingerprint": [ + "Kopiuj odcisk klucza" + ], "Copy IP address to clipboard": [ "Kopiuj adres IP do schowka" ], @@ -10696,6 +10861,9 @@ "Country": [ "Kraj" ], + "Create password": [ + "Utwórz hasło" + ], "Credits": [ "Środki" ], @@ -10906,6 +11074,9 @@ "Import to:": [ "Importuj do:" ], + "Inbox": [ + "Skrzynka odbiorcza" + ], "Include application logs in bug report": [ "Dołącz logi aplikacji do raportu błędu" ], @@ -11146,6 +11317,9 @@ "Please add the following TXT record. Note: DNS records can take several hours to update.": [ "Dodaj następujący rekord TXT. Uwaga: Aktualizacja rekordów DNS może potrwać do kilku godzin." ], + "Please select files to upload": [ + "Wybierz pliki do przesłania" + ], "Please share any feedback to help us improve.": [ "Podziel się opinią, aby pomóc nam ulepszyć usługę." ], @@ -11236,6 +11410,9 @@ "Second password": [ "Drugie hasło" ], + "Select Linux platform": [ + "Wybierz platformę Linux" + ], "Send auto-reply": [ "Wyślij automatyczną odpowiedź" ], @@ -11541,6 +11718,30 @@ "Wygasła" ] }, + "Label to change composer mode": { + "Maximized": [ + "Zmaksymalizowany" + ], + "Normal": [ + "Standardowy" + ] + }, + "Label to change density": { + "Comfortable": [ + "Wygodny" + ], + "Compact": [ + "Kompaktowy" + ] + }, + "Label to change view layout": { + "Column": [ + "Kolumna" + ], + "Row": [ + "Wiersz" + ] + }, "Label, credit card": { "Postal code": [ "Kod pocztowy" @@ -13454,9 +13655,6 @@ "${ app } product updates": [ "Aktualizacje usługi ${ app }" ], - "${ BRAND_NAME } for Business newsletter": [ - "Newsletter ${ BRAND_NAME } for Business" - ], "${ BRAND_NAME } important announcements": [ "Ważne ogłoszenia ${ BRAND_NAME }" ], @@ -13505,9 +13703,6 @@ "During your first month of using a ${ BRAND_NAME } product": [ "Podczas pierwszego miesiąca korzystania z usługi ${ BRAND_NAME }" ], - "Email subscriptions": [ - "Listy mailingowe" - ], "In-app notifications": [ "Powiadomienia w aplikacji" ], @@ -13555,6 +13750,12 @@ "Key copied to the clipboard": [ "Klucz został skopiowany do schowka" ], + "Key with fingerprint ${ fp } has been deleted.": [ + "Klucz z odciskiem ${ fp } został usunięty." + ], + "Key with fingerprint ${ fp } is now primary.": [ + "Klucz z odciskiem ${ fp } jest kluczem głównym." + ], "Link copied to clipboard": [ "Link został skopiowany do schowka" ], @@ -13898,6 +14099,9 @@ "It's too expensive": [ "Cena jest zbyt wysoka" ], + "Left to Right": [ + "Od lewej do prawej" + ], "Mark as read": [ "Oznacz jako przeczytane" ], @@ -13913,6 +14117,9 @@ "None": [ "Brak" ], + "Normal": [ + "Standardowy" + ], "Not allowed": [ "Niedozwolone" ], @@ -13922,12 +14129,18 @@ "Organization only": [ "Tylko w organizacji" ], + "Plain text": [ + "Zwykły tekst" + ], "Receive from all": [ "Odbieraj od wszystkich" ], "Required": [ "Wymagane" ], + "Right to Left": [ + "Od prawej do lewej" + ], "Router": [ "Router" ], @@ -13952,6 +14165,9 @@ "Star": [ "Oznacz gwiazdką" ], + "TCP": [ + "TCP" + ], "The whole organization": [ "Cała organizacja" ], @@ -14095,6 +14311,23 @@ "Zweryfikuj adres e-mail ${ email }, aby skonfigurować tożsamość organizacji." ] }, + "OS compatibility": { + ".deb (for Debian/Ubuntu)": [ + ".deb (dla Debian / Ubuntu)" + ], + ".dmg (12.0 or later)": [ + ".dmg (12.0 lub nowszy)" + ], + ".exe (64-bit)": [ + ".exe (64-bit)" + ], + ".rpm (for Fedora/openSUSE)": [ + ".rpm (dla Fedora / openSUSE)" + ], + "PKGBUILD (for other distributions)": [ + "PKGBUILD (inne dystrybucje)" + ] + }, "Participant name": { "You": [ "Ty" @@ -14333,15 +14566,9 @@ "per month, billed every two years": [ "miesięcznie, płatne co 2 lata" ], - "Preparing your Recovery Kit": [ - "Przygotowywanie zestawu odzyskiwania" - ], "Protected by Swiss privacy laws": [ "Chroniony przez szwajcarskie prawa ochrony danych osobowych" ], - "Save your recovery kit to continue": [ - "Zapisz zestaw odzyskiwania, aby kontynuować" - ], "Secure vault sharing": [ "Bezpieczne udostępnianie sejfu" ], @@ -15013,6 +15240,36 @@ "Ulepsz do planu ${ upsellPlanTitle }" ] }, + "PQC optin": { + "Enable and generate keys": [ + "Włącz i wygeneruj klucze" + ], + "Enable post-quantum protection?": [ + "Włączyć ochronę postkwantową?" + ], + "Go to ${ encryptionAndKeysSettingsTitle }": [ + "Przejdź do ${ encryptionAndKeysSettingsTitle }" + ], + "Post-quantum protection": [ + "Ochrona postkwantowa" + ] + }, + "pqc-optin: Action": { + "Close": [ + "Zamknij" + ] + }, + "pqc-optin: Progress status": { + "Generating post-quantum account key": [ + "Generowanie postkwantowego klucza konta" + ], + "Generating post-quantum address keys for each address": [ + "Trwa generowanie postkwantowych kluczy adresu dla każdego adresu" + ], + "Opting into post-quantum protection": [ + "Włączanie ochrony postkwantowej" + ] + }, "Property type": { "Address": [ "Adres" @@ -15267,15 +15524,9 @@ ], "Or ${ downloadRecoveryKitSwitchButton } instead.": [ "Lub ${ downloadRecoveryKitSwitchButton }." - ], - "Your **Recovery Kit** lets you restore your ${ BRAND_NAME } Account if you’re locked out.": [ - "**Zestaw odzyskiwania** pozwala przywrócić konto ${ BRAND_NAME } w przypadku zablokowania dostępu." ] }, "RecoveryPhrase: Title": { - "Save your Recovery Kit": [ - "Zapisz zestaw odzyskiwania" - ], "Save your recovery phrase": [ "Zapisz hasło odzyskiwania" ] @@ -15297,6 +15548,14 @@ "Możesz otrzymać do **${ maxRewardAmount }** w środkach." ] }, + "Remark about a key type option": { + "Classic": [ + "Klasyczny" + ], + "Post-quantum": [ + "Postkwantowy" + ] + }, "Remove organization logo": { "Users will no longer see your custom logo or organization name.": [ "Użytkownicy nie zobaczą logo i nazwy organizacji." @@ -15553,9 +15812,6 @@ "Back to Safety Review": [ "Powrót do bezpieczeństwa konta" ], - "Because you reset your password, your current Recovery Kit can only be used to recover the data created before your password reset.": [ - "Ponieważ hasło zostało zresetowane, obecny zestaw odzyskiwania może zostać użyty tylko do odzyskania danych utworzonych przed zresetowaniem hasła." - ], "Can be used to regain access to your account and data": [ "Może zostać użyty do odzyskania dostępu do konta i danych" ], @@ -15574,9 +15830,6 @@ "Download ${ size }": [ "Pobierz ${ size }" ], - "Download your Recovery Kit": [ - "Pobierz zestaw odzyskiwania" - ], "Email address": [ "Adres e-mail" ], @@ -15589,18 +15842,12 @@ "Enable recovery by phone": [ "Włącz odzyskiwanie przez telefon" ], - "I understand that I will not be able to recover currently locked data with this Recovery Kit": [ - "Rozumiem, że nie będę w stanie odzyskać obecnie zablokowanych danych za pomocą tego zestawu odzyskiwania" - ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in on this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Jeśli zapomnisz hasła ${ BRAND_NAME }, musisz je zresetować. Pełny dostęp do konta ${ BRAND_NAME } zostanie przywrócony przy następnym logowaniu za pomocą nowego hasła." ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Jeśli zapomnisz hasła ${ BRAND_NAME }, musisz je zresetować. Pełny dostęp do konta ${ BRAND_NAME } zostanie przywrócony przy następnym logowaniu za pomocą nowego hasła." ], - "If you get locked out of your ${ BRAND_NAME } Account, your Recovery Kit will allow you to sign in and recover your data.": [ - "Jeśli konto ${ BRAND_NAME } zostanie zablokowane, zestaw odzyskiwania umożliwi zalogowanie się i odzyskanie danych." - ], "If you lose your login details and need to reset your account, **it’s imperative** that you have both an **account recovery and data recovery method** in place, otherwise you might not be able to access any of your emails, contacts, files or passwords.": [ "Jeśli zapomnisz danych logowania, **metoda odzyskiwania konta i danych** **jest konieczna**, aby zresetować konto. W przeciwnym razie nie będziesz mógł uzyskać dostępu do swoich wiadomości, kontaktów, plików i haseł." ], @@ -15640,9 +15887,6 @@ "Take action to secure your account": [ "Zrób to, aby zabezpieczyć konto" ], - "There was an error generating your Recovery Kit": [ - "Wystąpił błąd podczas generowania zestawu odzyskiwania" - ], "There was an error verifying your recovery email": [ "Wystąpił błąd podczas weryfikowania adresu pomocniczego" ], @@ -15664,12 +15908,6 @@ "to recover your account if you're ever locked out": [ "w celu odzyskania zablokowanego konta" ], - "Update your Recovery Kit": [ - "Zaktualizuj zestaw odzyskiwania" - ], - "Update your Recovery Kit?": [ - "Zaktualizować zestaw odzyskiwania?" - ], "Verify": [ "Zweryfikuj" ], @@ -15679,9 +15917,6 @@ "Verify your recovery phone number": [ "Zweryfikuj numer pomocniczy" ], - "We encountered an error while generating your Recovery Kit. Please try again later, or contact support if the issue continues.": [ - "Wystąpił błąd podczas generowania zestawu odzyskiwania. Spróbuj ponownie później lub skontaktuj się z pomocą techniczną, jeśli problem będzie się powtarzał." - ], "We encountered an error while verifying your recovery email. Please try again later, or contact support if the issue continues.": [ "Wystąpił błąd podczas weryfikacji adresu pomocniczego. Spróbuj ponownie później lub skontaktuj się z pomocą techniczną, jeśli problem będzie się powtarzał." ], @@ -15700,18 +15935,12 @@ "You can disable this at any time.": [ "Możesz to wyłączyć w dowolnym momencie." ], - "You can use the recovery phrase in this Recovery Kit to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ - "Możesz użyć hasła odzyskiwania z zestawu odzyskiwania, aby przywrócić konto po zresetowaniu hasła. Upewnij się, że przechowujesz je w bezpiecznym miejscu." - ], "You can use your recovery email to regain access to your account if you forget your password.": [ "Możesz użyć adresu pomocniczego, aby odzyskać dostęp do konta w przypadku utraty hasła." ], "You can use your recovery phone to regain access to your account if you forget your password.": [ "Możesz użyć numeru pomocniczego, aby odzyskać dostęp do konta w przypadku utraty hasła." ], - "You have previously downloaded a Recovery Kit. Downloading a new one will **deactivate the old one**.": [ - "Pobrano wcześniej zestaw odzyskiwania. Pobranie nowego **dezaktywuje stary zestaw**." - ], "You have recommended actions to safeguard your account further.": [ "Masz zalecane akcje, aby zabezpieczyć konto." ], @@ -15757,12 +15986,6 @@ "Your recovery email is set": [ "Adres pomocniczy został ustawiony" ], - "Your Recovery Kit": [ - "Twój zestaw odzyskiwania" - ], - "Your Recovery Kit is set": [ - "Zestaw odzyskiwania został ustawiony" - ], "Your recovery methods": [ "Twoje metody odzyskiwania" ], @@ -16338,6 +16561,11 @@ "Nie udało się zaktualizować ustawień" ] }, + "Settings/filters - table": { + "Action": [ + "Akcja" + ] + }, "Settings/labels": { "Labels/Folders": [ "Etykiety / Foldery" @@ -16387,6 +16615,11 @@ "Udostępniony przez ${ ownerName }" ] }, + "sheets_2025:Action": { + "Open in ${ appName }": [ + "Otwórz w ${ appName }" + ] + }, "Signature verification error when joining calendar": { "Signature verification error": [ "Weryfikacja podpisu nie powiodła się" @@ -17329,6 +17562,11 @@ "Anulowanie subskrypcji. Poczekaj chwilę" ] }, + "Status": { + "Saved": [ + "Zapisano" + ] + }, "Step in filter modal": { "Actions": [ "Działania" @@ -17392,6 +17630,9 @@ "Get more storage": [ "Uzyskaj więcej przestrzeni dyskowej" ], + "Storage used": [ + "Wykorzystana przestrzeń" + ], "To continue using ${ BRAND_NAME } products, free up space or ${ upgrade }": [ "Aby korzystać z usług ${ BRAND_NAME }, zwolnij część miejsca lub${ upgrade }" ], @@ -18164,6 +18405,9 @@ "Sessions revoked": [ "Sesje zostały unieważnione" ], + "SMTP token deleted": [ + "Token SMTP został usunięty" + ], "SPF value copied to clipboard": [ "Wartość SPF została skopiowana do schowka" ], @@ -18681,6 +18925,9 @@ "Block trackers and malware": [ "Zablokuj elementy śledzące i złośliwe oprogramowanie" ], + "Bridge for ${ platform }": [ + "Aplikacja Bridge na ${ platform }" + ], "Cancel ${ MAIL_SHORT_APP_NAME } subscription": [ "Anuluj subskrypcję ${ MAIL_SHORT_APP_NAME }" ], @@ -18714,6 +18961,9 @@ "Change password": [ "Zmień hasło" ], + "Change primary key?": [ + "Zmienić klucz główny?" + ], "Change role": [ "Zmień rolę" ], @@ -18741,18 +18991,12 @@ "Confirm": [ "Potwierdź" ], - "Confirm address": [ - "Potwierdź adres" - ], "Confirm downgrade": [ "Potwierdź obniżenie planu" ], "Confirm loss of ${ BRAND_NAME } bonuses": [ "Potwierdź utratę ${ BRAND_NAME } bonusów" ], - "Confirm phone number": [ - "Potwierdź numer telefonu" - ], "Connect ${ name }": [ "Połącz ${ name }" ], @@ -19077,6 +19321,12 @@ "Export": [ "Eksportuj" ], + "Export private key": [ + "Eksportuj klucz prywatny" + ], + "Export public key": [ + "Eksportuj klucz publiczny" + ], "External PGP settings": [ "Ustawienia zewnętrzne PGP" ], @@ -19086,6 +19336,9 @@ "Nie udało się utworzyć ${ failedUsers.length } kont użytkowników.", "Nie udało się utworzyć ${ failedUsers.length } kont użytkowników." ], + "Fewer distractions, more focus": [ + "Mniej rozpraszaczy, większa koncentracja" + ], "Filter for more focus": [ "Filtruj dla większej wygody" ], @@ -19143,6 +19396,9 @@ "Generate new recovery phrase?": [ "Wygenerować nowe hasło odzyskiwania?" ], + "Generate SMTP token": [ + "Generuj token SMTP" + ], "Get ${ vpnPlus } to access all servers": [ "Wybierz plan ${ vpnPlus }, aby uzyskać dostęp do wszystkich serwerów" ], @@ -19152,8 +19408,14 @@ "Get complete privacy coverage": [ "Uzyskaj pełną ochronę prywatności" ], + "Get more from your cloud storage": [ + "Wykorzystaj w pełni chmurę" + ], "Get more from your email": [ - "Wykorzystaj w pełni swoją pocztę e-mail" + "Wykorzystaj w pełni pocztę e-mail" + ], + "Get more from your password manager": [ + "Wykorzystaj w pełni menadżer haseł" ], "Get more from your VPN": [ "Uzyskaj więcej z VPN" @@ -19224,6 +19486,9 @@ "Import groups": [ "Importuj grupy" ], + "Import key": [ + "Importuj klucz" + ], "Import via ${ PRODUCT_NAMES.EASY_SWITCH }": [ "Importuj przez ${ PRODUCT_NAMES.EASY_SWITCH }" ], @@ -19398,9 +19663,6 @@ "Phone": [ "Telefon" ], - "Photos": [ - "Zdjęcia" - ], "Pin the extension": [ "Przypnij rozszerzenie" ], @@ -19638,6 +19900,9 @@ "Snooze:": [ "Odłożone:" ], + "Something went wrong": [ + "Coś poszło nie tak" + ], "Sort folders alphabetically": [ "Sortuj foldery alfabetycznie" ], @@ -19907,6 +20172,23 @@ "Status" ] }, + "Title header for keys table": { + "Creation date": [ + "Data utworzenia" + ], + "Fingerprint": [ + "Odcisk klucza" + ], + "Function": [ + "Funkcja" + ], + "Status": [ + "Status" + ], + "Type": [ + "Rodzaj" + ] + }, "Title header for members table": { "Addresses": [ "Adresy" @@ -20038,6 +20320,18 @@ "Origin IP address and Internet Service Provider (ISP)": [ "Adres IP i dostawca Internetu (ISP)" ], + "Remove metadata from images to protect your privacy.": [ + "Usuń metadane ze zdjęć, aby chronić prywatność." + ], + "Set how your list of messages looks like by default.": [ + "Wybierz domyślny układ skrzynki pocztowej." + ], + "Set the default Composer popup size as small or full screen.": [ + "Ustaw domyślny rozmiar okna edytora." + ], + "Set the default layout for your Inbox.": [ + "Ustaw domyślny widok skrzynki pocztowej." + ], "Sets the following footer in the emails you send: ${ signature } The link points to your referral link. The footer will appear below your signature. You can personalize your signature anytime in the settings.": [ "Ustawia stopkę w wysyłanych wiadomościach: ${ signature } Link wskazuje na Twój link polecający. Stopka zostanie dodana pod Twoim podpisem. Podpis możesz spersonalizować w ustawieniach." ], @@ -20068,15 +20362,27 @@ "The selected theme will be active when your system is set to \"light mode\"": [ "Wybrany motyw będzie aktywny, kiedy w systemie będzie ustawiony jasny motyw" ], + "This address has been disabled": [ + "Adres został wyłączony" + ], "This can be caused by a password reset or the user not logging in yet.": [ "Może to być spowodowane resetowaniem hasła lub niezalogowaniem się użytkownika." ], "This email address will be shown to all organization members when performing account management operations.": [ "Adres e-mail będzie widoczny dla wszystkich użytkowników organizacji podczas zarządzania kontem." ], + "This feature delays sending your emails, giving you the opportunity to undo send during the selected time frame.": [ + "Ta funkcja opóźnia wysyłanie wiadomości. Możesz cofnąć wysyłanie w wybranym przedziale czasowym." + ], "This feature is only available for paid users": [ "Ta funkcja jest dostępna tylko dla użytkowników płatnego planu" ], + "This key cannot be used for encryption": [ + "Klucz nie może zostać użyty do szyfrowania" + ], + "This key is encrypted with an old password": [ + "Klucz jest zaszyfrowany za pomocą starego hasła" + ], "Unless they are deciphered, encrypted passwords remain secure even if they are exposed.": [ "Zaszyfrowane hasła (nawet ujawnione) pozostaną bezpieczne, dopóki nie zostaną odszyfrowane." ], @@ -20363,14 +20669,20 @@ "**Save up to ${ priceString }** with a longer subscription. Same premium features, lower price.": [ "**Zaoszczędź do ${ priceString }** dzięki dłuższej subskrypcji. Te same funkcje premium w niższej cenie." ], + "Advanced security for your company": [ + "Zaawansowane zabezpieczenia dla firmy" + ], "Advanced security for your company?": [ - "Potrzebujesz zaawansowanych zabezpieczeń dla swojej firmy?" + "Potrzebujesz zaawansowanych zabezpieczeń dla firmy?" ], "Did you know?": [ "Czy wiesz?" ], + "Protect your organization from data breaches with ${ PLAN_NAMES[plan] }.": [ + "Chroń swoją organizację przed wyciekami danych za pomocą planu ${ PLAN_NAMES[plan] }." + ], "Protect your organization from data breaches with ${ VPN_APP_NAME } for Business.": [ - "Chroń swoją organizację przed wyciekami danych za pomocą aplikacji ${ VPN_APP_NAME } dla firm." + "Chroń swoją organizację przed wyciekami danych za pomocą planu ${ VPN_APP_NAME } for Business." ], "Unlimited privacy for you and a loved one. From only ${ priceString }/month.": [ "Nieograniczona prywatność dla Ciebie i Twojej ukochanej osoby. Już od ${ priceString } miesięcznie." @@ -20441,6 +20753,9 @@ "Remember to share the user's sign in details with them.": [ "Pamiętaj, aby udostępnić użytkownikowi dane logowania." ], + "Save": [ + "Zapisz" + ], "Send invite link via email instead": [ "Wyślij zaproszenie zamiast tego" ], @@ -20757,12 +21072,6 @@ "${ BRAND_NAME } will transfer as much data as possible, starting with your most recent messages.": [ "${ BRAND_NAME } prześle możliwie jak najwięcej danych, zaczynając od najnowszych wiadomości." ], - "Are you sure you want to delete the phone number?": [ - "Czy na pewno chcesz usunąć numer telefonu?" - ], - "Are you sure you want to delete this address?": [ - "Czy na pewno chcesz usunąć ten adres?" - ], "By deleting this address, you will no longer be able to receive daily email notifications.": [ "Usuwając ten adres, stracisz możliwość otrzymywania codziennych powiadomień e-mail." ], @@ -20772,9 +21081,6 @@ "By deleting this address, you will no longer be able to recover your account.": [ "Usuwając ten adres, stracisz możliwość odzyskiwania swojego konta." ], - "By deleting this phone number, you will no longer be able to recover your account.": [ - "Usuwając ten numer telefonu, stracisz możliwość odzyskiwania swojego konta." - ], "If you cancel this import, you won't be able to resume it. ${ BRAND_NAME } saved all progress in your account. Cancel anyway?": [ "Jeśli anulujesz proces importowania, nie będziesz mógł go wznowić. ${ BRAND_NAME } zapisał cały postęp na Twoim koncie. Czy chcesz anulować mimo to?" ], @@ -20796,6 +21102,9 @@ "The date and time settings on your device are out of sync. ${ learnMore }": [ "Ustawienia daty i czasu na Twoim urządzeniu nie są zsynchronizowane. ${ learnMore }" ], + "The device or service using this token will no longer be able to send email through ${ MAIL_APP_NAME }.": [ + "Urządzenie lub usługa używająca tego tokena nie będzie mogła wysyłać wiadomości przez pocztę ${ MAIL_APP_NAME }." + ], "This import may exceed the storage capacity currently available in your ${ BRAND_NAME } account. Please consider customizing your import.": [ "Ten import może przekroczyć obecnie dostępną przestrzeń dyskową na Twoim koncie ${ BRAND_NAME }. Rozważ modyfikację zakresu danych do importu." ], diff --git a/applications/account/locales/pt_BR.json b/applications/account/locales/pt_BR.json index 7694bd3488e..52a663da8ac 100644 --- a/applications/account/locales/pt_BR.json +++ b/applications/account/locales/pt_BR.json @@ -90,6 +90,9 @@ "Add": [ "Adicionar" ], + "Add ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }": [ + "Adicionar ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }" + ], "Add ${ BRAND_NAME } Account": [ "Adicionar conta da ${ BRAND_NAME }" ], @@ -162,6 +165,9 @@ "Add user": [ "Adicionar usuário" ], + "Added ${ memberName } as group owner": [ + "${ memberName } adicionamo como proprietário do grupo" + ], "Align center": [ "Centralizar" ], @@ -213,6 +219,9 @@ "Back to sign in": [ "Voltar para o início de sessão" ], + "Back to sign-in": [ + "Voltar para o início de sessão" + ], "Block": [ "Bloquear" ], @@ -309,6 +318,9 @@ "Confirm": [ "Confirmar" ], + "Confirm email": [ + "Confirme seu e-mail" + ], "Confirm opening of link ${ linkToShow }": [ "Confirmar a abertura do link ${ linkToShow }" ], @@ -324,15 +336,15 @@ "Connect Gmail address": [ "Conectar endereço do Gmail" ], - "Connect to Gmail": [ - "Conectar ao Gmail" - ], "Connect to video conferencing": [ "Conectar-se à videoconferência.\n" ], "Connect your ${ BRAND_NAME } Account": [ "Conecte sua conta da ${ BRAND_NAME }." ], + "Connect your email": [ + "Conecte seu e-mail" + ], "Connected": [ "Conectado" ], @@ -369,6 +381,9 @@ "Continue with ${ nameToDisplay } ${ maybeEmailInBrackets }": [ "Continue com ${ nameToDisplay } ${ maybeEmailInBrackets }" ], + "Continue with Free": [ + "Continuar com Free" + ], "Continue with Google": [ "Continuar com o Google" ], @@ -519,8 +534,8 @@ "Delete record": [ "Excluir registro" ], - "Delete token ${ token.Account }": [ - "Excluir token ${ token.Account }" + "Delete token ${ tokens[0].Account }": [ + "Excluir token ${ tokens[0].Account }" ], "Delete token “${ token.Name }”": [ "Excluir token “${ token.Name }”" @@ -561,6 +576,9 @@ "Disable categories": [ "Desativar categorias" ], + "Disable category": [ + "Desativa categoria" + ], "Disable recovery phrase": [ "Desativar a frase de recuperação" ], @@ -711,6 +729,9 @@ "Enable ${ darkWebMonitoring }": [ "Ative o ${ darkWebMonitoring }" ], + "Enable category": [ + "Ativar categoria" + ], "enable desktop notifications": [ "ativar notificações na área de trabalho" ], @@ -762,6 +783,9 @@ "Filters are being applied. This might take a few minutes.": [ "Os filtros estão sendo aplicados. Isso pode levar alguns minutos." ], + "Finish": [ + "Finalizar" + ], "Fit to window": [ "Ajustar na janela" ], @@ -780,6 +804,9 @@ "Generate key": [ "Gerar chave" ], + "Generate missing keys": [ + "Gerar chaves faltantes" + ], "Generate new phrase": [ "Gerar novo frase" ], @@ -882,6 +909,9 @@ "Go to ${ planOrAppName }": [ "Acesse o ${ planOrAppName }" ], + "Go to domain provider": [ + "Ir para o provedor de domínios" + ], "Go to label": [ "Ir para marcador" ], @@ -1278,6 +1308,9 @@ "Remove this notification": [ "Remover esta notificação" ], + "Removed ${ memberName } as group owner": [ + "${ memberName } removido como proprietário do grupo" + ], "Rename": [ "Renomear" ], @@ -1359,6 +1392,9 @@ "Save": [ "Salvar" ], + "Save & exit": [ + "Salvar e sair" + ], "Save address": [ "Salvar endereço" ], @@ -1782,6 +1818,9 @@ "View recovery settings": [ "Ver configurações de recuperação" ], + "View recovery setup details": [ + "Ver detalhes da configuração de recuperação" + ], "Void": [ "Vazio" ], @@ -2055,12 +2094,12 @@ ] }, "Admin roles onboarding": { + "2 new admin roles": [ + "2 novas funções administrativas" + ], "3 new admin roles": [ "3 novas funções administrativas" ], - "Admin roles": [ - "Funções administrativas" - ], "Configure security policies, data retention, and VPN infrastructure, and manage audit logs.": [ "Configure políticas de segurança, retenção de dados e infraestrutura de VPN, além de gerenciar registros de auditoria." ], @@ -2076,21 +2115,15 @@ "New: Control admin access for individual users": [ "Novo: Controle acesso de administrador para usuários individuais" ], - "Organization admin": [ - "Adminsitrador da organização" + "New: Control admin access for many users at once": [ + "Novo: Controle o acesso de administradores para vários usuários de uma só vez" ], "Organization admin:": [ "Adminsitrador da organização:" ], - "Security admin": [ - "Administrador de segurança" - ], "Security admin:": [ "Administrador de segurança:" ], - "User admin": [ - "Adminsitrador de usuário" - ], "User admin:": [ "Adminsitrador de usuário:" ] @@ -2858,15 +2891,57 @@ "${ BRAND_NAME } Migration Assistant": [ "Assistente de Migração da ${ BRAND_NAME }" ], - "Add a custom domain": [ - "Adicionar um domínio adicional" + "${ migratedCount } of ${ providerUsers.length }": [ + "${ migratedCount } de ${ providerUsers.length }" + ], + "**p=none**: do not quarantine or reject unauthorized emails. Usually, people only use this policy to troubleshoot or test.": [ + "**p=none**: não coloque em quarentena nem rejeite e-mails não autorizados. Normalmente, as pessoas usam esta política apenas para solucionar problemas ou testar." + ], + "**p=quarantine**: asking the recipient platforms to mark the unauthorized emails as spam or quarantine them.": [ + "$**p=quarantine**: solicitando às plataformas destinatárias que marquem os e-mails não autorizados como spam ou os coloquem em quarentena." + ], + "**p=reject**: asking the recipient platforms to reject the unauthorized emails.": [ + "$**p=reject**: solicitando às plataformas destinatárias que rejeitem os e-mails não autorizados." + ], + "Account connected": [ + "Conta conectada" + ], + "Account disconnected": [ + "Conta desconectada" + ], + "Activated": [ + "Ativado" + ], + "Activation link": [ + "Link de ativação" + ], + "Activation link copied to clipboard": [ + "Link de ativação copiado para a área de transferência" + ], + "Add a domain": [ + "Adicionar um domínio" ], - "App installed": [ - "Apps instalado" + "Add domain": [ + "Adicionar domínio" + ], + "Add users": [ + "Adicionar usuários" + ], + "Address is already used by a user outside of your organization. Please contact customer support to resolve this": [ + "O endereço já é usado por um usuário fora da sua organização. Entre em contato com o suporte ao cliente para resolver isso" + ], + "All": [ + "Todos" + ], + "An unknown error occurred": [ + "Ocorreu um erro desconhecido" ], "Authenticate": [ "Autenticar" ], + "Authenticate to Google Workspace": [ + "Autenticar no Google Workspace" + ], "Authenticate your Google Workspace account": [ "Autentique sua conta do Google Workspace" ], @@ -2882,17 +2957,44 @@ "Configure": [ "Configurar" ], + "Configure domain": [ + "Configurar domínio" + ], "Configure migration": [ "Configurar migração" ], + "Configure your domain": [ + "Configure seu domínio" + ], "Contacts": [ "Contatos" ], + "Continue migration": [ + "Continuar migração" + ], + "Copy activation link": [ + "Copiar link de ativação" + ], + "Copy activation link to clipboard": [ + "Copiar link de ativação para a área de transferência" + ], + "Creating accounts": [ + "Criando contas" + ], + "DKIM records": [ + "Registos DKIM" + ], + "DMARC records": [ + "Registros DMARC" + ], + "Domain added": [ + "Domínio adicionado" + ], "Domain connected": [ "Domínio conectado" ], - "Domain ownership verified": [ - "Propriedade do domínio verificada" + "Errors": [ + "Errors" ], "Estimated size": [ "Tempo estimado" @@ -2900,15 +3002,33 @@ "Failed to load OAuth": [ "Falha ao carregar o OAuth" ], + "Finalize migration": [ + "Finalizar migração" + ], + "Finalize your migration": [ + "Finalizar sua migração" + ], + "Find out what can be migrated.": [ + "Descubra o que pode ser migrado." + ], "Finish setting up your business account": [ "Conclua a configuração da sua conta empresarial" ], + "Go to Domain names": [ + "Ir para Nomes de domínio" + ], "Google Marketplace app to copy data to ${ BRAND_NAME }": [ "Aplicativo do Google Marketplace para copiar dados para a ${ BRAND_NAME }" ], + "Google Workspace account": [ + "Conta do Google Workspace" + ], "Has errors": [ "Tem erros" ], + "Import errors for ${ user.AdminSetName }": [ + "Importar erros para ${ user.AdminSetName }" + ], "In progress": [ "Em processo" ], @@ -2918,14 +3038,17 @@ "Install migration app": [ "Instalar aplicativo de migração" ], - "Learn more about what can be migrated. Learn more": [ - "Saiba mais sobre o que pode ser migrado. Saiba mais" + "Install Migration assistant": [ + "Instalar o Assistente de migração" + ], + "Loading your organization data": [ + "Carregando os dados da sua organização" ], "Mail": [ "E-mail" ], - "Migrate": [ - "Migrar" + "Managed via ${ registrar.name }": [ + "Gerenciado via ${ registrar.name }" ], "Migrate from Google Workspace": [ "Migrar do Google Workspace" @@ -2933,6 +3056,12 @@ "Migrate users": [ "Migrar usuários" ], + "Migrate users to ${ BRAND_NAME }": [ + "Migrar usuários para ${ BRAND_NAME }" + ], + "Migrated": [ + "Migrado" + ], "Migration includes": [ "A migração foi concluída" ], @@ -2943,8 +3072,23 @@ "Migration status": [ "Status da migração" ], - "Not started": [ - "Não iniciado" + "Missing organization private key": [ + "Falta a chave privada da organização" + ], + "Missing organization public key": [ + "Falta a chave pública da organização" + ], + "More details": [ + "Mais detalhes" + ], + "No users to display": [ + "Nenhum usuário para exibir" + ], + "Not activated": [ + "Não ativado" + ], + "Not confirmed": [ + "Não confirmado" ], "Organization does not have enough seats available": [ "A organização não tem licenças suficientes disponíveis" @@ -2952,8 +3096,17 @@ "Organization does not have enough storage available": [ "A organização não tem armazenamento suficientes disponíveis" ], - "Organization settings": [ - "Configurações da organização" + "Pending": [ + "Pendente" + ], + "Please leave this window open until we're done creating all the users.": [ + "Deixe esta janela aberta até terminarmos de criar todos os usuários." + ], + "Please select at least one product to migrate": [ + "Selecione ao menos um produto para migrar" + ], + "Refresh": [ + "Atualizar" ], "Required": [ "Obrigatório" @@ -2964,8 +3117,8 @@ "Select at least one user to start a migration": [ "Selecione pelo menos um usuário para iniciar uma migração" ], - "Select what you want to migrate, this will apply to all users whether they are created now or later. Migration will start after user accounts are created.": [ - "Selecione o que você deseja migrar, isso se aplicará a todos os usuários, sejam eles criados agora ou depois. A migração começará após a criação das contas de usuário." + "Select users to migrate": [ + "Selecione os usuários a serem migrados" ], "Set up": [ "Configurar" @@ -2973,6 +3126,18 @@ "Set up billing information": [ "Configurar informações de faturamento" ], + "Set up manually": [ + "Configurar manualmente" + ], + "Set up secure sending (DKIM)": [ + "Configurar envio seguro (DKIM)" + ], + "Set up secure sending (DMARC)": [ + "Configurar envio seguro (DMARC)" + ], + "Set up secure sending (SPF)": [ + "Configurar envio seguro (SPF)" + ], "Set up two-factor authentication": [ "Configurar autenticação de dois fatores" ], @@ -2982,33 +3147,57 @@ "Sign in to Google Workspace": [ "Iniciar sessão do Google Workspace" ], + "Size": [ + "Tamanho" + ], + "Some accounts are not claimed": [ + "Algumas contas não foram reivindicadas" + ], + "SPF records": [ + "Registros SPF" + ], + "Start migrating": [ + "Iniciar migração" + ], "Start migration": [ "Iniciar migração" ], "Status": [ "Status" ], + "This migration has been completed": [ + "A migração foi completada" + ], "To migrate your organization’s data, you need to install the ${ BRAND_NAME } Migration Assistant app from the Google Workspace Marketplace. This will grant permission to ${ BRAND_NAME } to copy your data. After installing it, come back here to continue.": [ "Para migrar os dados da sua organização, você precisa instalar o aplicativo Assistente de Migração do ${ BRAND_NAME } na Google Workspace Marketplace. Isso concederá permissão ao ${ BRAND_NAME } para copiar seus dados. Após a instalação, volte aqui para continuar." ], - "Transfer errors": [ - "Erros de transferência" + "Update records for receiving": [ + "Atualize os registros para recener" ], "User": [ "Usuário" ], + "User status": [ + "Status do usuário" + ], + "Users can use ${ BRAND_NAME } or Google simultaneously for the duration of the migration.": [ + "Os usuários podem usar a ${ BRAND_NAME } ou o Google simultaneamente durante o período da migração." + ], "Users migrated": [ "Usuários migrados" ], + "Verified": [ + "Verificado" + ], + "Verify domain ownership": [ + "Verificar sua propriedade do seu domínio" + ], "Verify installation": [ "Verificar instalação" ], "Verify your domain": [ "Verifique seu domínio" ], - "Verify your domain ownership": [ - "Verifique a propriedade do seu domínio" - ], "Verify your domain to start a migration": [ "Verifique seu domínio para iniciar uma migração" ], @@ -3017,6 +3206,12 @@ ], "What are you migrating?": [ "O que você está migrando?" + ], + "You": [ + "Você" + ], + "You're all set!": [ + "Tudo pronto!" ] }, "breadcrumb": { @@ -3124,9 +3319,18 @@ ] }, "Button": { + "Add users manually": [ + "Adicionar usuários manualmente" + ], + "Cancel": [ + "Cancelar" + ], "Close": [ "Fechar" ], + "Configure your network": [ + "Configurar sua rede" + ], "Continue using ${ MAIL_APP_NAME }.": [ "Continuar usando ${ MAIL_APP_NAME }." ], @@ -3148,6 +3352,12 @@ "Got it": [ "Entendi" ], + "Invite your team": [ + "Convidar sua equipe" + ], + "Manage global VPN permissions": [ + "Gerenciar permissões globais da VPN" + ], "Maybe later": [ "Talvez mais tarde" ], @@ -3157,12 +3367,21 @@ "Remind me later": [ "Lembre-me mais tarde" ], + "Secure your organization": [ + "Proteja sua organização" + ], "Send": [ "Enviar" ], "Set up other features": [ "Configure outros recursos" ], + "Set up SSO": [ + "Configurar SSO" + ], + "Sign in": [ + "Iniciar sessão" + ], "Take a tour": [ "Faça um tour" ] @@ -3767,6 +3986,9 @@ "Confirm cancellation": [ "Confirmar cancelamento" ], + "If you exceed free plan limits, you won't be able to:": [ + "Se você exceder os limites do plano gratuito, não será possível:" + ], "Keep current plan": [ "Manter plano atual" ], @@ -4786,6 +5008,9 @@ "/month": [ "/mês" ], + "/user /month": [ + "/usuário /mês" + ], "/user per month": [ "/usuário por mês" ] @@ -4941,6 +5166,11 @@ "Observe que, se você excluir o grupo ${ displayGroupName }, esse será removido permanentemente." ] }, + "Delete group prompt with email": { + "Please note that if you delete the group ${ displayGroupName } (with address ${ displayGroupAddressEmail }), you will no longer be able to receive emails using its address.": [ + "Observe que se você excluir o grupo ${ displayGroupName } (com o endereço ${ displayGroupAddressEmail }), você não poderá mais receber e-mails usando esse endereço." + ] + }, "Delinquent modal title": { "Overdue invoice": [ "Fatura vencida" @@ -4956,6 +5186,9 @@ "${ MAIL_APP_NAME } is your default mail application.": [ "${ MAIL_APP_NAME } é seu aplicativo padrão de e-mail." ], + "${ MAIL_APP_NAME } keeps your business data secure and lets you send encrypted emails to anyone.": [ + "${ MAIL_APP_NAME } mantém os dados do seu negócio seguros e permite que você envie e-mails criptografados a qualquer um." + ], "A checked box means the feature is disabled.": [ "Uma caixa marcada significa que o recurso está desativado." ], @@ -4974,11 +5207,17 @@ "Automatically sort your incoming messages before they reach your inbox.": [ "Classifique automaticamente as mensagens recebidas antes que elas cheguem à sua caixa de entrada." ], + "Available storage: ${ storageText }": [ + "Armazenamento disponível: ${ storageText }" + ], "Available with ${ title }": [ "Disponível com ${ title }" ], - "Bring over email, calendar events, and contacts from another provider.": [ - "Traga e-mails, eventos do calendário e contatos de outro provedor." + "Block Google's ability to profile you. Gmail can't see what you do in ${ MAIL_APP_NAME }": [ + "Bloqueie a capacidade do Google de criar um perfil seu. O Gmail não pode ver o que você faz no ${ MAIL_APP_NAME }" + ], + "Bring over your email, calendar events, and contacts from another provider.": [ + "Traga seus e-mails, eventos do calendário e contatos de outro provedor." ], "Build trust and brand recognition with professional email addresses at your own domain.": [ "Crie confiança e reconhecimento de marca com endereços de e-mail profissionais em seu próprio domínio." @@ -4989,6 +5228,9 @@ "Connect your CRM, website, printers, and more.": [ "\"Conecte seu CRM, site, impressoras e outros dispositivos." ], + "Create a Gateway to give your users access to your IT resources through dedicated servers.": [ + "Crie um Gateway para dar aos seus usuários acesso aos seus recursos de TI através de servidores dedicados." + ], "Create a Zoom meeting and add joining details to your event with one click.": [ "Crie uma reunião no Zoom e adicione detalhes de participação ao seu evento com um clique." ], @@ -4998,9 +5240,15 @@ "Create groups you can email with a single address.": [ "Crie grupos que podem ser contatados por meio de um único endereço de e-mail." ], + "Create new user accounts or import users with SSO (single sign-on) SCIM provisioning.": [ + "Criar novas contas de usuário ou importar usuários com provisionamento SCIM de SSO (autenticação única)." + ], "Create policies to decide who can connect to shared servers in each country.": [ "Crie políticas para decidir quem pode se conectar a servidores compartilhados em cada país." ], + "Decide which users can connect to each of our 120+ shared server locations.": [ + "Decida quais usuários podem conectar a cada uma das nossas mais de 120 localizações de servidor compartilhadas." + ], "Easily access your email and calendar on desktop and mobile.": [ "Tenha acesso facilitado ao seu e-mail e calendário, tanto no computador quanto em dispositivos móveis." ], @@ -5049,12 +5297,18 @@ "Help your team securely store passwords to sensitive business and client information.": [ "Auxilie sua equipe a armazenar de forma segura as senhas relacionadas a informações sensíveis da empresa e dos clientes." ], + "How our customer support team got our VPN app directly into people's hands.": [ + "Como nossa equipe de suporte ao cliente colocou nosso aplicativo de VPN diretamente nas mãos das pessoas." + ], "How we fought back when ${ BRAND_NAME } was blocked in an aggressive campaign.": [ "Como reagimos quando a ${ BRAND_NAME } foi bloqueada em uma campanha agressiva." ], "How we supported local activists when privacy and free speech were threatened.": [ "Como apoiamos ativistas locais quando a privacidade e a liberdade de expressão foram ameaçadas." ], + "If you haven’t already, enable some recovery methods to make sure you never lose access to ${ VPN_APP_NAME }.": [ + "Se você ainda não tiver feito isso, ative alguns métodos de recuperação para garantir que você nunca perca acesso ao ${ VPN_APP_NAME }." + ], "It looks like the contact list you are importing contains some groups. Please review how these groups should be imported.": [ "Parece que a lista de contatos que você está importando contém alguns grupos. Verifique como esses grupos devem ser importados." ], @@ -5079,8 +5333,8 @@ "No one in your organization can connect to shared servers.": [ "Ninguém na sua organização pode se conectar a servidores compartilhados." ], - "Send a code to your recovery email or phone": [ - "Enviar um código para seu e-mail ou telefone de recuperação" + "Select which categories you want to add and if you want to receive push notifications for each category.": [ + "Selecione as categorias que deseja adicionar e indique se deseja receber notificações push para cada uma delas." ], "Set up accounts for all users and invite them to join ${ BRAND_NAME }.": [ "Configure contas para todos os usuários e convide-os a ingressar no ${ BRAND_NAME }." @@ -5091,10 +5345,25 @@ "Simplify syncing and scheduling with shared calendars.": [ "Facilite a sincronização e o agendamento com calendários compartilhados." ], + "Still need help? Our support team is here for you.": [ + "Precisa de ajuda? Nossa equipe de suporte está aqui para você." + ], + "This allows you to regain access to your ${ BRAND_NAME } account but does not recover your encrypted data.": [ + "Isso permite recuperar o acesso na sua conta da ${ BRAND_NAME } mas não recupera seus dados criptografados." + ], + "To connect a different Gmail address, remove extra Gmail addresses forwarding to ${ BRAND_NAME }.": [ + "Para conectar um endereço Gmail diferente, remova os endereços extras do Gmail que estão sendo encaminhados para ${ BRAND_NAME }." + ], "To connect up to ${ MAX_SYNC_PAID_USER } Gmail address, upgrade to ${ planName }.": [ "Para conectar até ${ MAX_SYNC_PAID_USER } endereço do Gmail, faça o upgrade para o plano ${ planName }.", "Para conectar até ${ MAX_SYNC_PAID_USER } endereços do Gmail, faça o upgrade para o plano ${ planName }." ], + "To continue receiving and sending Gmail messages in ${ BRAND_NAME }, please reconnect your account.": [ + "Para continuar recebendo e enviando mensagens do Gmail na ${ BRAND_NAME }, reconecte sua conta." + ], + "To continue receiving and sending Gmail messages in ${ BRAND_NAME }, please reconnect your accounts.": [ + "Para continuar recebendo e enviando mensagens do Gmail na ${ BRAND_NAME }, reconecte suas contas." + ], "To import via a CSV and VCF file, ensure the file does not exceed ${ MAX_IMPORT_FILE_SIZE_STRING } or ${ maxContactString } contacts. If your file is bigger, please split it into smaller files. ${ learnMoreLink }.": [ "Para importar por meio de um arquivo CSV e VCF, certifique-se de que o arquivo não exceda ${ MAX_IMPORT_FILE_SIZE_STRING } ou ${ maxContactString } contatos. Se o seu arquivo for maior, divida-o em arquivos menores. ${ learnMoreLink }." ], @@ -5107,18 +5376,42 @@ "Track the status and activity of your referrals": [ "Acompanhe o status e a atividade de suas referências" ], + "Unlock 15 GB of storage for just ${ config.offerPrice }.": [ + "Desbloqueia 15 GB de armazenamento por apenas ${ config.offerPrice }." + ], "Upgrade to ${ planName } to connect up to ${ MAX_SYNC_PAID_USER } accounts": [ "Faça upgrade para ${ planName } para conectar até ${ MAX_SYNC_PAID_USER } contas" ], "Upgrade to get ${ activatePmUser } for a shorter, easy-to-remember email address in addition to your current one.": [ "Faça upgrade para obter ${ activatePmUser } para um endereço de e-mail mais curto e fácil de lembrar, além do seu atual." ], + "Use a recovery method to reset your password": [ + "Use um método de recuperação para redefinir sua senha" + ], "Use this guide to get your organization promptly benefiting from ${ BRAND_NAME }'s industry-leading encryption and privacy ecosystem.": [ "Utilize este guia para que sua organização possa rapidamente se beneficiar do ecossistema de criptografia e privacidade de ponta do ${ BRAND_NAME }." ], "We can't access ${ boldEmails } anymore.": [ "Não podemos mais acessar o ${ boldEmails }." ], + "We will pause imports at 80% storage to reserve space for new messages.": [ + "Pausaremos as importações quando o armazenamento atingir 80% da capacidade, de modo a reservar espaço para novas mensagens." + ], + "We'll bring in your old emails and connect your Gmail to ${ MAIL_APP_NAME } so new messages appear automatically": [ + "Importaremos seus e-mails antigos e conectar seu Gmail ao ${ MAIL_APP_NAME } para que as novas mensagens apareçam automaticamente" + ], + "We've started importing your emails from Gmail. We'll let you know when it's done.": [ + "Iniciamos a importar seus e-mails do Gmail. Avisaremos quando terminar." + ], + "We’re sorry to see you go. If you have a moment, we’d really appreciate hearing why you’d like to cancel. Your feedback helps us make ${ BRAND_NAME } better for everyone.": [ + "Lamentamos sua saída. Se tiver um momento, gostaríamos muito de saber o motivo do cancelamento. Seu feedback nos ajuda a fazer a ${ BRAND_NAME } ainda melhor para todos." + ], + "You already have a Gmail address forwarding to ${ MAIL_APP_NAME }. Connect it below to send and receive emails directly from ${ MAIL_APP_NAME }.": [ + "Você já possui um endereço do Gmail encaminhando para o ${ MAIL_APP_NAME }. Conecte-o abaixo para enviar e receber mensagens diretamente no ${ MAIL_APP_NAME }." + ], + "You already have Gmail addresses forwarding to ${ MAIL_APP_NAME }. Connect one below to send and receive emails directly from ${ MAIL_APP_NAME }.": [ + "Você já possui endereços do Gmail encaminhandos para o ${ MAIL_APP_NAME }. Conecte-o um abaixo para enviar e receber mensagens diretamente no ${ MAIL_APP_NAME }." + ], "You can customize the list of domains where certain auto functions in ${ PASS_APP_NAME } browser extension (Autofill, Autosuggest, Autosave) should not be run.": [ "Você pode personalizar a lista de domínios onde certas funções automáticas na extensão do navegador ${ PASS_APP_NAME } (preenchimento automático, sugestão automática e salvamento automático) não devem ser executadas." ], @@ -5128,9 +5421,29 @@ "You can import events in iCal format (ICS file). The file should have a maximum size of ${ MAX_IMPORT_FILE_SIZE_STRING } and have up to ${ MAX_IMPORT_EVENTS_STRING } events. If your file is bigger, please split it into smaller files.": [ "Você pode importar eventos no formato iCal (arquivo ICS). O arquivo deve ter o tamanho máximo de ${ MAX_IMPORT_FILE_SIZE_STRING } e ter até ${ MAX_IMPORT_EVENTS_STRING } eventos. Se o seu arquivo for maior, divida-o em arquivos menores." ], + "You can manage multiple ${ BRAND_NAME } addresses from a single account, without switching. Aliases and address management tools help keep everything in one inbox.": [ + "Você pode gerenciar vários endereços ${ BRAND_NAME } a partir de uma única conta, sem precisar alternar entre elas. Aliases e ferramentas de gerenciamento de endereços ajudam a manter tudo em uma única caixa de entrada." + ], "You can now send emails from ${ BRAND_NAME } using this address.": [ "Você agora pode enviar e-mails da ${ BRAND_NAME } usando este endereço." ], + "You're forwarding ${ numAddressesOrSync } Gmail address to ${ MAIL_APP_NAME }.": [ + "Você está encaminhando ${ numAddressesOrSync } endereço do Gmail para o ${ MAIL_APP_NAME }.", + "Você está encaminhando ${ numAddressesOrSync } endereços do Gmail para o ${ MAIL_APP_NAME }." + ], + "You've connected ${ MAX_SYNC_PAID_USER } Gmail address. To add another, first disable one of your connected accounts.": [ + "Você conectou ${ MAX_SYNC_PAID_USER } endereço do Gmail. Para adicionar outro, primeiro desconecte uma das contas já conectadas.", + "Você conectou ${ MAX_SYNC_PAID_USER } endereços do Gmail. Para adicionar outro, primeiro desconecte uma das contas já conectadas." + ], + "You've connected one external account address to ${ MAIL_APP_NAME }.": [ + "Você conectou um endereço de conta externa no ${ MAIL_APP_NAME }." + ], + "Your free ${ MAIL_APP_NAME } account comes with limited storage so we'll only import ${ newUserStorageText } of your most recent Gmail messages": [ + "Sua conta gratuita do ${ MAIL_APP_NAME } tem espaço de armazenamento limitado, por isso importaremos apenas ${ newUserStorageText } de suas mensagens mais recentes do Gmail" + ], + "Your free ${ MAIL_APP_NAME } account comes with limited storage so we'll only import your most recent Gmail emails.": [ + "Sua conta gratuita do ${ MAIL_APP_NAME } tem espaço de armazenamento limitado, por isso importaremos apenas seus e-mails mais recentes do Gmail." + ], "Your plan supports ${ MAX_SYNC_FREE_USER } Gmail address.": [ "Seu plano suporta ${ MAX_SYNC_FREE_USER } endereço do Gmail.", "Seu plano suporta ${ MAX_SYNC_FREE_USER } endereços do Gmail." @@ -5568,6 +5881,9 @@ "120m": [ "120 min" ], + "15 minutes": [ + "15 minutos" + ], "30 minutes": [ "30 minutos" ], @@ -5587,6 +5903,14 @@ "90 min" ] }, + "Easy switch": { + "To forward emails from up to ${ MAX_SYNC_PAID_USER } accounts, upgrade to ${ planName }.": [ + "Para encaminhar e-mails de até ${ MAX_SYNC_PAID_USER } contas, faça o upgrade para ${ planName }." + ], + "You're forwarding emails from one external account to ${ MAIL_APP_NAME }.": [ + "Você está encaminhando e-mails de uma conta externa para ${ MAIL_APP_NAME }." + ] + }, "Edit billing address form note": { "Text fields are optional. The information you provide in this form will only appear on invoices issued in the future and will not affect existing invoices.": [ "Os campos de texto são opcionais. As informações que você fornecer neste formulário aparecerão somente em faturas emitidas no futuro e não afetarão as faturas existentes." @@ -6146,7 +6470,7 @@ }, "emergency_access": { "${ BRAND_NAME } Account email": [ - "${ BRAND_NAME } endereço de e-mail" + "Conta de e-mail da ${ BRAND_NAME }" ], "${ days } day left": [ "${ days } dia restante", @@ -6182,9 +6506,6 @@ "${ user } will not be able to access your account until the next emergency access.": [ "${ user } não poderá acessar sua conta até o próximo acesso de emergência." ], - "**${ contact }** is now your recovery contact. They can help you recover your data after a password reset.": [ - "**${ contact }** agora é seu contato de recuperação e pode ajudar você a recuperar seus dados após a redefinição de senha." - ], "**If they confirm**, click **Approve recovery**. This will unlock their encrypted data.": [ "**Se a confirmação for realizada**, clique em **Aprovar recuperação**. Isso desbloqueará os dados criptografados da conta." ], @@ -6212,12 +6533,21 @@ "Add": [ "Adicionar" ], + "Add 1 more": [ + "Adicionar 1 mais" + ], "Add emergency contact": [ "Adicionar contato de emergência" ], + "Add option": [ + "Adicionar opção" + ], "Add recovery contact": [ "Adicionar contato de recuperação" ], + "Add recovery method": [ + "Adicionar método de recuperação" + ], "Added on ${ formattedDate }": [ "Adicionado em ${ formattedDate }" ], @@ -6260,6 +6590,9 @@ "Contacts": [ "Contatos" ], + "Data recovery contacts": [ + "Contatos de recuperação de dados" + ], "Data successfully recovered. You can now decrypt your existing data and encrypted files.": [ "Dados recuperados com sucesso. Você já pode descriptografar seus dados e arquivos criptografados existentes." ], @@ -6305,6 +6638,12 @@ "Enable auto-renew": [ "Ativar renovação automática" ], + "Enter your extra password": [ + "Digite sua senha adicional" + ], + "Explore plans": [ + "Explorar planos" + ], "For ${ email }": [ "Para ${ email }" ], @@ -6335,12 +6674,6 @@ "Less than a minute left": [ "Menos de um minuto restante" ], - "Let ${ user } know it’s really you trying to regain access.": [ - "Informe ${ user } que é realmente você tentando recuperar o acesso." - ], - "None": [ - "Nenhum" - ], "Only ": [ "Somente " ], @@ -6431,14 +6764,11 @@ "Select recovery contact ${ name }": [ "Selecionar contato de recuperação ${ name }" ], - "Send email request": [ - "Enviar solicitação por e-mail?" - ], "Send recovery request": [ "Enviar solicitação de recuperação" ], - "Set account recovery": [ - "Definir recuperação de conta" + "Start recovery": [ + "Iniciar recuperação" ], "Stop being recovery contact": [ "Deixar de ser um contato de recuperação" @@ -6461,6 +6791,9 @@ "They may ask to access my account in case of an emergency.": [ "Eles podem pedir para acessar minha conta em caso de emergência." ], + "They may ask to access your account in case of an emergency.": [ + "Eles podem pedir para acessar sua conta em caso de emergência." + ], "They will receive access automatically in **${ days } day**, on **${ formattedAccessibleAt }**, you can reject their request or give them access immediately at any time.": [ "Eles receberão acesso automaticamente em **${ days } dia**, em **${ formattedAccessibleAt }**, você pode rejeitar a solicitação deles ou dar-lhes acesso a qualquer momento.", "Eles receberão acesso automaticamente em **${ days } dias**, em **${ formattedAccessibleAt }**, você pode rejeitar a solicitação deles ou dar-lhes acesso a qualquer momento." @@ -6477,6 +6810,9 @@ "Time required before automatically granting them access": [ "Tempo necessário antes de garantir acesso automaticamente a eles" ], + "To add recovery contacts, you must have a recovery email address or phone number.": [ + "Para adicionar contatos de recuperação, é necessário ter um endereço de e-mail ou um número de telefone para recuperação." + ], "To disable this recovery method, remove all your recovery contacts.": [ "Para desativar este método de recuperação, remova todos os seus contatos de recuperação." ], @@ -6486,6 +6822,9 @@ "Unable to recover data": [ "Não foi possível recuperar os dados" ], + "Unlock ${ PASS_APP_NAME }": [ + "Desbloquear ${ PASS_APP_NAME }" + ], "Upgrade": [ "Fazer upgrade" ], @@ -6743,6 +7082,9 @@ "Failed to load OAuth modal.": [ "Falha ao carregar o modal OAuth." ], + "Failed to load subscription data. Please try again later.": [ + "Falha ao carregar os dados da assinatura. Tente novamente mais tarde." + ], "Failed to load the STL preview": [ "Erro ao carregar a pré-visualização STL" ], @@ -7009,9 +7351,6 @@ "Please try again in a few moments.": [ "Tente novamente em alguns instantes." ], - "Please upgrade to a business plan with more than 1 user to get multi-user support": [ - "Atualize para um plano de negócios com mais de 1 usuário para obter suporte multiusuário" - ], "Please upgrade to a business plan with more than 1 user to manage multiple users.": [ "Atualize para um plano de negócios com mais de 1 usuário para gerenciar vários usuários." ], @@ -7151,6 +7490,9 @@ "There are too many folders in your external account. Please customize the import to delete some folders.": [ "Existem muitas pastas em sua conta externa. Personalize a importação para excluir algumas pastas." ], + "There was an error, please try again.": [ + "Ocorreu um erro. Tente novamente." + ], "This field exceeds the maximum of ${ maximumLength } characters.": [ "Este campo excede o máximo de ${ maximumLength } caracteres." ], @@ -7433,6 +7775,9 @@ "Ask your administrator to enable Account monitor.": [ "Peça ao seu administrador para ativar o monitor de conta." ], + "Enable account monitor to start loading event.": [ + "Ativar monitor de conta para inciar o carregamento de eventos" + ], "Error: ${ errorMessage }": [ "Erro: ${ errorMessage }" ], @@ -7951,6 +8296,9 @@ "${ PROTON_SENTINEL_NAME } account protection": [ "Proteção de conta com ${ PROTON_SENTINEL_NAME }" ], + "10+ premium features": [ + "10+ recursos premium" + ], "15 GB storage": [ "15 GB de armazenamento" ], @@ -7986,6 +8334,12 @@ "Continue": [ "Continuar" ], + "Custom email domain": [ + "Domínio de e-mail personalizado" + ], + "Email addresses": [ + "Endereços de e-mail" + ], "Encrypted cloud storage for files, photos and documents": [ "Armazenamento em nuvem criptografado para arquivos, fotos e documentos" ], @@ -8016,6 +8370,9 @@ "Short domain @pm.me": [ "Domínio curto @pm.me" ], + "Storage": [ + "Armazenamento" + ], "Torrenting support (P2P)": [ "Suporte para torrents (P2P)" ], @@ -8381,8 +8738,8 @@ ] }, "Force upgrade safety review": { - "I understand that I will no longer be able to sign in to older versions of ${ BRAND_NAME } mobile apps.": [ - "Eu entendo que não conseguirei mais fazer login em versões mais antigas dos aplicativos móveis ${ BRAND_NAME }." + "Learn more": [ + "Saiba mais" ] }, "Form heading": { @@ -8480,6 +8837,9 @@ ], "Group address:": [ "Endereço do grupo:" + ], + "Roles and permission:": [ + "Funções e permissões" ] }, "Group member count": { @@ -8539,6 +8899,14 @@ "Membros do grupo" ] }, + "group_modal": { + "General": [ + "Geral" + ], + "Roles and permissions": [ + "Funções e permissões" + ] + }, "Header": { "Access": [ "Acesso" @@ -9121,6 +9489,9 @@ "Paused": [ "Em pausa" ], + "Undo finished": [ + "Cancelamento concluído" + ], "Undo in progress": [ "Desfazendo" ] @@ -9176,6 +9547,9 @@ "${ boldWarning } You will lose access to all current encrypted data in your account if you continue.": [ "${ boldWarning } Você perderá o acesso a todos os dados criptografados atuais em sua conta se continuar." ], + "${ BRAND_NAME } Free": [ + "${ BRAND_NAME } Free" + ], "${ BRAND_NAME } is privacy you can trust, ensured by strong encryption, open-source code, and Swiss privacy laws. We believe nobody should be able to exploit your data, period. Our technology and business are based upon this fundamentally stronger definition of privacy.": [ "${ BRAND_NAME } é a privacidade em que você pode confiar, garantida por criptografia forte, código-fonte aberto e leis suíças de privacidade. Acreditamos que ninguém deve ser capaz de explorar seus dados, e ponto final. Nossas tecnologias e negócios são baseados e fundamentatos na mais forte definição de privacidade." ], @@ -9203,6 +9577,9 @@ "${ countriesCount } país ativado", "${ countriesCount } países ativados" ], + "${ DataLockedText }, but recoverable with your ${ RecoveryContactsLink }:": [ + "${ DataLockedText }, mas recuperável com o seu ${ RecoveryContactsLink }:" + ], "${ discountPercent }% discount": [ "Desconto de ${ discountPercent }%" ], @@ -9270,6 +9647,9 @@ "${ name } for Windows": [ "${ name } para Windows" ], + "${ name } is not available": [ + "${ name } não está disponível" + ], "${ none }: do not quarantine or reject unauthorized emails. Usually, people only use this policy to troubleshoot or test.": [ "${ none }: não coloque em quarentena nem rejeite e-mails não autorizados. Normalmente, as pessoas usam esta política apenas para solucionar problemas ou testar." ], @@ -9391,6 +9771,9 @@ "${ vaultLink } updated": [ "${ vaultLink } atualizado" ], + "${ VPN_SHORT_APP_NAME } hides your traffic. ${ PASS_SHORT_APP_NAME } hides your identity\n— unlimited **hide-my-email aliases** and **dark-web alerts** if your data is ever leaked.": [ + "${ VPN_SHORT_APP_NAME } oculta seu tráfego. ${ PASS_SHORT_APP_NAME } oculta sua identidade\n— aliases **hide-my-email ilimitados** e **alertas da dark-web** se seus dados foram vazados." + ], "${ vpnPlus } required for Country level connection.": [ "${ vpnPlus } necessária para conexão em nível de país." ], @@ -9428,6 +9811,9 @@ "(formerly Twitter)": [ "(antigo Twitter)" ], + "**${ appName }** is not available for your account.": [ + "**${ appName }** não está disponível para sua conta." + ], "**${ appName }** is not supported in your organization **${ organizationName }**.": [ "**${ appName }** não é suportado na sua organização **${ organizationName }**." ], @@ -9538,12 +9924,18 @@ "Activity Monitor": [ "Monitor de atividades" ], + "Add ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }": [ + "Adicionar ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }" + ], "Add ${ PLAN_NAMES[PLANS.MEET_BUSINESS] }": [ "Adicionar ${ PLAN_NAMES[PLANS.MEET_BUSINESS] }" ], "Add a @pm.me email address to your account. This simple, shorter domain stands for \"${ MAIL_APP_NAME } me\" or \"Private Message me.\"": [ "Adicione um endereço de e-mail @pm.me na sua conta. Este domínio simples e curto significa \"${ MAIL_APP_NAME } me\" ou \"Mensagem privado\"" ], + "Add a phone number in case we need to contact you": [ + "Insira um número de telefone para o caso de precisarmos entrar em contato com você" + ], "add a recovery method": [ "adicionar um método de recuperação" ], @@ -9578,9 +9970,9 @@ "Add your name and logo to create a more personalized experience for your organization.": [ "Adicione o nome e logotipo para criar uma experiência mais personalizada para sua organização." ], - "Adding ${ addedServerCount } gateway server": [ - "Adicionando ${ addedServerCount } servidor gateway", - "Adicionando ${ addedServerCount } servidores gateway" + "Adding ${ total } gateway server": [ + "Adicionando ${ total } servidor gateway", + "Adicionando ${ total } servidores gateway" ], "Adding an external email address will disable end-to-end encryption for all email communication within that group. Do you want to proceed?": [ "Adicionar um endereço de e-mail externo desativará a criptografia de ponta a ponta para toda a comunicação por e-mail dentro desse grupo. Você deseja continuar?" @@ -9650,6 +10042,9 @@ "Allow users to connect to secure shared servers from the **Countries** section of the ${ VPN_APP_NAME } app.": [ "Permitir que os usuários se conectem a servidores compartilhados seguros na seção **Países** do aplicativo ${ VPN_APP_NAME }." ], + "Allowing the password reset from the settings lets you to change your password if you’ve lost it, but are still signed in to ${ BRAND_NAME }.": [ + "Permitir a redefinição de senha nas configurações permite que você altere sua senha caso a tenha perdido, mas ainda esteja conectado à conta ${ BRAND_NAME }." + ], "Already allocated": [ "Já alocado" ], @@ -9683,6 +10078,9 @@ "An import is paused because your storage is almost full.": [ "Uma importação foi pausada porque seu armazenamento está quase cheio." ], + "An SMS with a verification code was just sent to ${ phoneNumber }.": [ + "Um SMS com um código de verificação foi enviado para ${ phoneNumber }." + ], "and": [ "e" ], @@ -9749,6 +10147,9 @@ "Are you sure you want to revoke certificate **${ name }**": [ "Você tem certeza que quer revogar o certificado **${ name }**" ], + "Are you sure you want to sign out of this account?": [ + "Tem certeza que deseja desconectar esta conta?" + ], "Are you sure you want to sort your folders alphabetically?": [ "Você tem certeza que deseja ordenar suas pastas alfabeticamente?" ], @@ -9842,9 +10243,18 @@ "Before you can start sending and receiving emails from your new addresses you need to create encryption keys for them.": [ "Antes de começar a enviar e receber e-mails de seus novos endereços, você precisa criar chaves de criptografia para eles." ], + "BEST FOR TV": [ + "MELHOR PARA TV" + ], "Beta": [ "Beta" ], + "Billed at ${ monthlyDiscountedPrice } for the first 6 months, renews at ${ monthlyRenewalPrice }.": [ + "Faturado por ${ monthlyDiscountedPrice } nos primeiros 6 meses, se renova por ${ monthlyRenewalPrice }." + ], + "Billed at ${ yearlyDiscountedPrice } for the first 12 months, renews at ${ yearlyRenewalPrice }.": [ + "Faturado por ${ yearlyDiscountedPrice } nos primeiros 12 meses, se renova por ${ yearlyRenewalPrice }." + ], "Billing cycle: ${ text }": [ "Ciclo de faturamento: ${ text }" ], @@ -9854,6 +10264,9 @@ "Boost your organization’s brand identity and create a more consistent online experience for your users.": [ "Aumente a identidade de marca da sua organização e crie uma experiência on-line mais consistente para os seus usuários." ], + "By adding people you trust as recovery contacts, we'll be able to send them an email to help you if you're having trouble recovering your data after a password reset. You can also be a recovery contact for others.": [ + "Ao adicionar pessoas de confiança como contatos de recuperação, poderemos enviar um e-mail a elas para ajudar você se estiver com dificuldades para recuperar seus dados após uma redefinição de senha. Você também pode ser um contato de recuperação para outras pessoas." + ], "By creating a ${ PASS_APP_NAME } account with your SimpleLogin email, you can manage your aliases directly from ${ PASS_APP_NAME }.": [ "Ao criar uma conta ${ PASS_APP_NAME } com seu e-mail do SimpleLogin, você pode gerenciar seus aliases diretamente do ${ PASS_APP_NAME }." ], @@ -9872,6 +10285,12 @@ "Can you access your active session?": [ "Você pode acessar sua sessão ativa?" ], + "Can you access your active web session in another browser?": [ + "Você pode acessar sua sessão ativa em outro navegador?" + ], + "Can you reach out to your contact?": [ + "Você Consegue entrar em contato com a pessoa de contato?" + ], "Cancel": [ "Cancelar" ], @@ -9890,9 +10309,6 @@ "Change your password": [ "Alterar sua senha" ], - "Check the status of imports and forwarding.": [ - "Verificar o status das importações e encaminhamento." - ], "Check your network and try again.": [ "Verifique sua rede e tente novamente." ], @@ -9908,6 +10324,12 @@ "Click \"Request new code\" to have a new verification code sent to ${ strong }. If this phone number is incorrect, click \"Edit\" to correct it.": [ "Clique em \"Solicitar novo código\" para que um novo código seja enviado para ${ strong }. Se esse número de telefone estiver incorreto, clique em \"Editar\" para corrigir isso." ], + "Click 'Trouble signing in?' on your TV to follow the alternative steps.": [ + "Clique em 'Problemas para iniciar sessão?' na sua TV para seguir as etapas alternativas." + ], + "Click **Request password reset** and follow the prompts.": [ + "Clique em **Solicitar redefinição de senha** e siga as instruções." + ], "Click the icon to open it anytime.": [ "Clique no ícone para abri-lo a qualquer momento." ], @@ -9920,6 +10342,9 @@ "CNET editors choice award with a rating of 8.4 out of 10": [ "CNET Editors' Choice Award com classificação de 8,4 de 10" ], + "Code has been re-sent.": [ + "O código foi reenviado." + ], "Coming soon": [ "Em breve" ], @@ -9935,6 +10360,9 @@ "Configure SAML authentication for your organization through an identity provider like Okta, Microsoft Azure, or Google Identity Platform. This will enable SAML for the whole organization.": [ "Configure a autenticação SAML para a sua organização através de um provedor de identidade como Okta, Microsoft Azure ou Google Identity Platform. Isso habilitará o SAML para toda a organização." ], + "Connect and manage your external mailboxes in ${ MAIL_APP_NAME }.": [ + "Conecte e gerencie suas caixas de correio externas no ${ MAIL_APP_NAME }." + ], "Connection data will be available in around 1 hour.": [ "Os dados de conexão estarão disponíveis em cerca de uma hora." ], @@ -9953,6 +10381,9 @@ "Continue to connect this entity with your ${ BRAND_NAME } organization.": [ "Continue a conectar essa entidade com sua organização ${ BRAND_NAME }." ], + "Continue with ${ BRAND_NAME } Free": [ + "Continue com ${ BRAND_NAME } Free" + ], "Continuing will connect your ${ BRAND_NAME } Account to ${ name }.": [ "Continuar conectará sua conta da ${ BRAND_NAME } a ${ name }." ], @@ -9993,9 +10424,9 @@ "Create a new code on your TV and try again.": [ "Crie um novo código na sua TV e tente novamente." ], - "Create a secure cloud for ${ value } member": [ - "Criar uma nuvem segura para ${ value } membro", - "Criar uma nuvem segura para ${ value } membros" + "Create a secure cloud for ${ memberCount } member": [ + "Criar uma nuvem segura para ${ memberCount } membro", + "Criar uma nuvem segura para ${ memberCount } membros" ], "Create an account": [ "Criar uma conta" @@ -10013,6 +10444,10 @@ "Criando servidor gateway: ${ serverNumber } / ${ total }", "Criando servidores gateway: ${ serverNumber } / ${ total }" ], + "Creating gateway with ${ total } server": [ + "Criando gateway com ${ total } servidor", + "Criando gateway com ${ total } servidores" + ], "Creating your account": [ "Criando sua conta" ], @@ -10061,6 +10496,9 @@ "Data recoverable with recovery phrase": [ "Dados recuperáveis com a frase de recuperação" ], + "Data recovery requires a password reset option (email or SMS)": [ + "A recuperação de dados requer uma opção de redefinição de senha (e-mail ou SMS)" + ], "dedicated servers": [ "servidores dedicados" ], @@ -10192,6 +10630,9 @@ "Drop to import": [ "Solte para importar" ], + "Due to end-to-end encryption, you can reset your password, but ${ DataLockedText } until you use a ${ DataRecoveryOptionsLink }:": [ + "Devido à criptografia de ponta a ponta, você pode redefinir sua senha, mas ${ DataLockedText } até você usar ${ DataRecoveryOptionsLink }:" + ], "Each code can only be used once": [ "Cada código só pode ser usado uma única vez." ], @@ -10429,12 +10870,12 @@ "For easy access to your passwords and more.": [ "Para facilitar o acesso às suas senhas e muito mais." ], + "For just ${ bundlePlanPriceInline }": [ + "por apenas ${ bundlePlanPriceInline }" + ], "For users who are switching to ${ MAIL_APP_NAME } from another email service, select the ${ boldAddresses } tab and add all active email addresses before changing the MX record to ensure a smooth transition.": [ "Para usuários que estão migrando de outro serviço de e-mail para ${ MAIL_APP_NAME }, selecione a guia ${ boldAddresses } e adicione todos os endereços de e-mail ativos antes de alterar o registro MX para garantir uma transição tranquila." ], - "Forwarding automatically sends new incoming emails to your Inbox.": [ - "O encaminhamento envia automaticamente os novos e-mails recebidos para a sua Caixa de entrada." - ], "Free forever": [ "Grátis para sempre" ], @@ -10477,12 +10918,18 @@ "Get notified if your password or other personal data was leaked. ${ learnMoreLinkNoBreach }": [ "Seja notificado se a sua senha ou outros dados pessoais foram vazados. ${ learnMoreLinkNoBreach }" ], + "Get started": [ + "Começar" + ], "Get started with the referral link above.": [ "Comece com o link de referência acima." ], "Get visibility into account access": [ "Obtenha visibilidade do acesso à conta" ], + "Get VPN Plus": [ + "Obter VPN Plus" + ], "Give the token a descriptive name, such as the service you plan to use it with, and select one of your active custom domain addresses. Only this address will be able to send emails with this token.": [ "Dê um nome descritivo ao token, como o do serviço com o qual você planeja usá-lo, e selecione um dos domínios personalizados ativos. Apenas esse endereço poderá enviar e-mails com este token." ], @@ -10558,6 +11005,9 @@ "If keyboard shortcuts are enabled, you can use the following keys for quick actions or to jump to different views. ${ metaKey } + K is always enabled.": [ "Se os atalhos de teclado estão ativados, você pode usar as seguintes teclas para ações rápidas ou para pular para visualizações diferentes. ${ metaKey } + K está sempre ativado." ], + "If possible, when signing in, use a device or a browser where you’ve signed in before.": [ + "Se possível, ao iniciar sessão, utilize um dispositivo ou navegador onde já tenha iniciado sessão anteriormente." + ], "If the email you entered was used to reserve a child's email address, we'll resend the activation voucher.": [ "Se o e-mail inserido foi usado para reservar o endereço de e-mail de uma criança, reenviaremos o voucher de ativação." ], @@ -10667,6 +11117,9 @@ "Include device, location, and IP details": [ "Incluir detalhes de dispositivo, localização e IP" ], + "Included": [ + "Incluso" + ], "Increase your account security by verifying your email address.": [ "Melhore a sua segurança da conta ao verificar seu endereço de e-mail." ], @@ -11007,15 +11460,15 @@ "No card required": [ "Nenhum cartão necessário" ], + "No connected addresses.": [ + "Sem endereços conectados." + ], "No countries enabled": [ "Não há países ativados" ], "No folder selected": [ "Nenhuma pasta selecionada" ], - "No forwarding history.": [ - "Sem histórico de encaminhamento." - ], "No gateways": [ "Sem gateways" ], @@ -11076,6 +11529,9 @@ "Only change these settings if you are using PGP with non-${ BRAND_NAME } recipients.": [ "Altere essas configurações apenas se você estiver usando o PGP com destinatários que não usam a ${ BRAND_NAME }." ], + "Only sign in on devices you trust": [ + "Somente inicie sessão em dispositivos que você confia" + ], "Only you can see the label": [ "Somente você pode ver o marcador" ], @@ -11338,9 +11794,18 @@ "Recently used servers:": [ "Servidores usados recentemente:" ], + "RECOMMENDED": [ + "RECOMENDADO" + ], "Recommended on trusted devices. ${ keepMeSignedInLearnMoreLink }": [ "Recomendado em dispositivos de confiança. ${ keepMeSignedInLearnMoreLink }" ], + "Recovery by email is not available while ${ PROTON_SENTINEL_NAME } is enabled.": [ + "A recuperação por e-mail não está disponível enquanto o ${ PROTON_SENTINEL_NAME } estiver ativado." + ], + "Recovery by phone is not available while ${ PROTON_SENTINEL_NAME } is enabled.": [ + "A recuperação por telefone não está disponível enquanto a ${ PROTON_SENTINEL_NAME } está ativada." + ], "Recovery file downloaded": [ "Arquivo de recuperação baixado" ], @@ -11491,6 +11956,9 @@ "Set up your organization": [ "Configure a sua organização" ], + "Set up your organization and start protecting your data in a few easy steps.": [ + "Configure sua organização e comece a proteger seus dados em poucos passos simples." + ], "Setting successfully saved": [ "A configuração foi salva" ], @@ -11528,6 +11996,12 @@ "Show each sender's image in the message list. The sender's initials will be shown if a photo is not available.": [ "Mostrar a imagem de cada remetente na lista de mensagens. As iniciais do remetente serão mostradas se uma foto não estiver disponível." ], + "Show fewer benefits": [ + "Mostrar menos benefícios" + ], + "Show more benefits": [ + "Mostrar mais benefícios" + ], "Show original message": [ "Exibir mensagem original" ], @@ -11573,9 +12047,6 @@ "Something went wrong. Please try again or contact customer support.": [ "Ocorreu um erro. Tente novamente ou contate o suporte ao cliente." ], - "Something went wrong. Please try again.": [ - "Ocorreu um erro. Tente novamente." - ], "Specify the domain which is allowed to authenticate with SAML SSO.": [ "Especifique o domínio com permissão para autenticação SAML SSO." ], @@ -11761,6 +12232,9 @@ "The name will be visible to your users while they are signed in.": [ "O nome será visível aos seus usuários enquanto eles estiverem conectados." ], + "The referral credit can be awarded up to 2 months after your friend's trial ended, only if your friend subscribed to a plan.": [ + "O crédito por indicação pode ser concedido até dois meses após o término do período de avaliação do seu amigo, desde que ele tenha assinado um plano." + ], "The securest way to browse, stream, and be online.": [ "A maneira mais segura de navegar, transmitir e estar online." ], @@ -11854,6 +12328,9 @@ "This verification can take up to one hour. After successful verification, do not remove the TXT record as it is needed to confirm that you continue to own the domain.": [ "Essa verificação pode levar até uma hora. Após uma verificação bem sucedida, não remova este registro TXT, pois ele é necessário para confirmar que você continua sendo proprietário do domínio." ], + "This will allow the TV to access your ${ BRAND_NAME } account.": [ + "Isso permitirá que a TV acesse sua conta da ${ BRAND_NAME }." + ], "This will delete all previous versions of your files older than ${ rententionLabel }.": [ "Isso excluirá todas as versões anteriores de seus arquivos anteriores a ${ rententionLabel }." ], @@ -12037,6 +12514,9 @@ "Unless you sign out of your account or change your password, your session will remain active. Sessions expire after 60 days of inactivity.": [ "A menos que você encerre sessão de sua conta ou mude a senha, sua sessão permanecerá ativa. Sessões expiram após 60 dias de inatividade." ], + "Unlock streaming with VPN Plus.": [ + "Desbloqueie streaming com VPN Plus." + ], "Unsaved changes": [ "Alterações não salvas" ], @@ -12052,9 +12532,15 @@ "Unverified email address.": [ "Endereço de e-mail não verificado." ], + "Upgrade anytime to bring over the rest": [ + "Faça upgrade a qualquer momento para importar o resto" + ], "Upgrade now to get premium features, products and storage at a special price": [ "Faça upgrade agora para obter recursos premium, produtos e armazenamento por um preço especial" ], + "Upgrade or clear space anytime to bring over the rest": [ + "Faça upgrade ou limpe espaço em qualquer momento para importar o resto" + ], "Upgrade to add a shorter @pm.me address to your account that is easier to share. It stands for “${ MAIL_APP_NAME } me” or “Private Message me”.": [ "Faça o upgrade do seu plano para adicionar um endereço curto @pm.me para a sua conta para compartilhá-la facilmente. Ele significa \"${ MAIL_APP_NAME } me\" ou \"Private Message me\"." ], @@ -12184,6 +12670,9 @@ "Visa Secure logo": [ "Logotipo do Visa Secure" ], + "VPN Plus": [ + "VPN Plus" + ], "VPN with dedicated servers and IP addresses": [ "VPN com servidores e endereço de IP dedicados" ], @@ -12205,6 +12694,9 @@ "We couldn’t process your payment.": [ "Não foi possível realizar o pagamento." ], + "We detected you are already signed in to a ${ BRAND_NAME } web app on **another browser**. You may be able to perform a password reset from your active session.": [ + "Detectamos que você já está iniciado sessão no aplicativo web da ${ BRAND_NAME } em **outro navegador**. Você pode redefinir sua senha a partir da sessão ativa." + ], "We generated a strong password for you": [ "Nós geramos senhas fortes para você" ], @@ -12289,9 +12781,6 @@ "When disabled, this prevents remote images from loading without your knowledge.": [ "Quando desativado, isso impede que imagens remoras sejam carregados sem seu conhecimento." ], - "When enabled, we will check if ${ MAIL_APP_NAME } is your default mail application and notify you if it is not.": [ - "Quando ativado, verificaremos se o ${ MAIL_APP_NAME } é seu aplicativo de e-mail padrão e o notificaremo caso não seja." - ], "When enabling SAML for ${ appName } in your identity provider, you might be prompted to use the callback (ACS) URL and issuer ID. Just copy-paste the data below into your identity provider fields.": [ "Ao ativar o SAML para ${ appName } em seu provedor de identidade, você poderá ser solicitado a usar o URL de retorno de chamada (ACS) e o ID do emissor. Basta copiar e colar os dados abaixo nos campos do seu provedor de identidade." ], @@ -12425,9 +12914,6 @@ "You can edit this once to ensure the correct email address for verification.": [ "Você pode editar isso uma só vez para garantir o endereço de e-mail coreto para verificar." ], - "You can enable the Photos section from the interface using the toggle below.": [ - "Você pode habilitar a seção Fotos na interface usando o botão abaixo." - ], "You can enforce the password rules members of your organization will use when they create or reset the password to their ${ BRAND_NAME } Account.": [ "Você pode aplicar as regras de senha que os membros da sua organização usarão quando criarem ou redefinirem a senha da sua conta da ${ BRAND_NAME }." ], @@ -12488,6 +12974,9 @@ "You don't have any referrals.": [ "Você não tem nenhuma indicação" ], + "You don’t need to open or read the file—just download it and store it somewhere safe.": [ + "Você não precisa abrir ou ler o arquivo - apenas faça o download e armazene em local seguro." + ], "You get notified if your password or other data was leaked from a third-party service.": [ "Você será notificado se sua senha ou outros dados vazarem de um serviço de terceiros." ], @@ -12586,6 +13075,15 @@ "You won’t be able to recover locked data using your downloaded recovery files. This will also disable device-based recovery.": [ "Você não poderá recuperar dados bloqueados usando os arquivos de recuperação baixados. Isso também desativará a recuperação baseada em dispositivo." ], + "You'll receive the credit reward 1 month after your friend subscribes to a yearly plan, and 2 months after they subscribe to a monthly plan.": [ + "Você receberá a recompensa em créditos 1 mês após seu amigo(a) assinar um plano anual e 2 meses após ele (ela) assinar um plano mensal." + ], + "You'll receive the credit reward 1 month after your friend's trial ended.": [ + "Você receberá a recompensa em créditos 1 mês após o término do período de teste do seu amigo." + ], + "You'll receive the credit reward 2 months after your friend's trial ended.": [ + "Você receberá a recompensa em créditos 2 meses após o término do período de teste do seu amigo." + ], "You'll then be billed every ${ renewCycle } month at ${ renewAmountStr }. You can cancel at any time.": [ "Você então será cobrado a cada ${ renewCycle } mês em ${ renewAmountStr }. Você pode cancelar a qualquer momento.", "Você então será cobrado a cada ${ renewCycle } meses em ${ renewAmountStr }.Você pode cancelar a qualquer momento." @@ -12615,6 +13113,9 @@ "Your ${ plan } subscription will be replaced with ${ PASS_SHORT_APP_NAME } Lifetime. The remaining balance of your subscription will be added to your account. ${ PASS_SHORT_APP_NAME } lifetime deal has no renewal price, it's a one-time payment for lifetime access to ${ PASS_SHORT_APP_NAME }.": [ "Sua assinatura do ${ plan } será substituída pela versão ${ PASS_SHORT_APP_NAME } Lifetime. O saldo restante da sua assinatura será adicionado à sua conta. A oferta vitalícia do ${ PASS_SHORT_APP_NAME } não tem preço de renovação, é um pagamento único para acesso vitalício ao ${ PASS_SHORT_APP_NAME }." ], + "Your ${ planDisplayName } plan doesn’t just keep your business data and communications safe. It supports your compliance objectives, makes your business stand out, and keeps your team connected.": [ + "Seu plano ${ planDisplayName } não apenas mantém os dados e comunicações de sua empresa seguros. Ele apoia seus objetivos de conformidade, destaca sua empresa e mantém sua equipe conectada." + ], "Your ${ VPN_APP_NAME } and ${ MAIL_APP_NAME } accounts are linked. To delete them both, please sign in at ${ loginLink } and delete your account there.": [ "Suas contas do ${ VPN_APP_NAME } e ${ MAIL_APP_NAME } estão vinculadas. Para excluir ambas, inicia sessão em ${ loginLink } e exclua sua conta lá." ], @@ -12636,6 +13137,9 @@ "Your encrypted data will be locked": [ "Seus dados criptografados ficarão bloqueados" ], + "your encrypted data will be locked": [ + "seus dados criptografados ficarão bloqueados" + ], "Your files will be encrypted and then saved": [ "Seus arquivos serão criptografados e depois salvos" ], @@ -13335,6 +13839,9 @@ "${ PROTON_SENTINEL_NAME } protection": [ "Proteção com ${ PROTON_SENTINEL_NAME }" ], + "${ value.length }/${ maxLength } characters": [ + "${ value.length }/${ maxLength } caracteres" + ], "(Temporarily unavailable. Please check back later.)": [ "(Temporariamente indisponível. Retorne mais tarde.)" ], @@ -13611,6 +14118,9 @@ "Block malware, ads and trackers": [ "Bloqueio de malware, anúncios e rastreadores" ], + "Block trackers and marketers": [ + "Bloqueie rastreadores e marketing" + ], "Bookings, billings, and orders": [ "Reservas, cobranças e pedidos" ], @@ -13725,6 +14235,9 @@ "Confirm login password": [ "Confirmar nova senha" ], + "Confirm MX records added": [ + "Confirmar os registros MX adicionados" + ], "Confirm new password": [ "Confirmar nova senha" ], @@ -13927,6 +14440,9 @@ "Enable ${ DARK_WEB_MONITORING_NAME } for ${ domain.DomainName }": [ "Ativar ${ DARK_WEB_MONITORING_NAME } para ${ domain.DomainName }" ], + "Enable categories": [ + "Aativar categorias" + ], "Enabled": [ "Ativado" ], @@ -14023,6 +14539,9 @@ "Free": [ "Free" ], + "Free VPN included": [ + "VPN gratuita incluída" + ], "From: ${ fromEmail }": [ "De: ${ fromEmail }" ], @@ -14071,6 +14590,9 @@ "Highest VPN speed": [ "Velocidade VPN máxima" ], + "Host name": [ + "Nome do servidor" + ], "I understand that I'll need to add this email address to the other account immediately, to avoid losing this address permanently.": [ "Entendo que precisarei adicionar esse endereço de e-mail à outra conta imediatamente, para evitar perdê-lo permanentemente." ], @@ -14260,6 +14782,9 @@ "Must have at least ${ MIN_PASSWORD_LENGTH } characters": [ "Deve conter ao menos ${ MIN_PASSWORD_LENGTH } caracteres" ], + "MX records": [ + "Registros MX" + ], "Name": [ "Nome" ], @@ -14335,6 +14860,9 @@ "Only available on ${ PASS_SHORT_APP_NAME } paid plans": [ "Disponível apenas nos planos pagos do ${ PASS_SHORT_APP_NAME }" ], + "Open-source code": [ + "Código aberto" + ], "OpenVPN password": [ "Senha do OpenVPN" ], @@ -14395,6 +14923,9 @@ "Pending": [ "Pendente" ], + "Personal and work emails, plus important updates and notifications": [ + "E-mails pessoais e profissionais, além de atualizações e notificações importantes" + ], "Phone number": [ "Número do telefone" ], @@ -14437,6 +14968,9 @@ "Primary": [ "Primário" ], + "Priority": [ + "Prioridade" + ], "Priority support": [ "Suporte prioritário" ], @@ -14852,6 +15386,9 @@ "Yes, I want to permanently delete this account and all its data.": [ "Sim, eu quero excluir permanentemente esta conta e todos os seus dados." ], + "You don't have permissions": [ + "Você não tem permissão" + ], "Your activation code:": [ "Seu código de ativação:" ], @@ -14901,6 +15438,9 @@ ], "Recovery phrase": [ "Frase de recuperação" + ], + "Set recovery phone number": [ + "Definir um número de telefone de recuperação" ] }, "Label (begin date/advanced search)": { @@ -14942,6 +15482,26 @@ "Adicione o seguinte registro TXT. Observação: os registros DNS podem levar várias horas para serem atualizados." ] }, + "Label for domain setup": { + "${ capitalizedGroup } record not found": [ + "${ capitalizedGroup } registro não encontrado" + ], + "Host name": [ + "Nome do servidor" + ], + "Invalid ${ group.name } record found": [ + "Encontrado um registro inválido de ${ group.name }" + ], + "Type": [ + "Tipo" + ], + "Use default value": [ + "Usar valor padrão" + ], + "Valid ${ group.name } record found": [ + "Encontrado um registro válido de ${ group.name }" + ] + }, "Label for new member": { "Admin": [ "Administrador" @@ -15107,6 +15667,9 @@ "data recovery option": [ "opção de recuperação de dados" ], + "Detailed instructions": [ + "Instruções detalhadas" + ], "Details": [ "Detalhes" ], @@ -15281,6 +15844,9 @@ "Upgrade your plan": [ "Faça upgrade de seu plano" ], + "use a data recovery method": [ + "usar um método de recuperação de dados" + ], "Vault": [ "Cofre" ], @@ -15628,21 +16194,45 @@ "Built-in chat": [ "Bate-papo integrado" ], + "Cloud storage and file sharing": [ + "Armazenamento em nuvem e compartilhamento de arquivos" + ], + "Data retention policies": [ + "Políticas de retenção de dados" + ], + "Document and spreadsheet editor": [ + "Editor de documento e planilha" + ], + "Email writing assistant": [ + "Assistente de escrita de e-mail" + ], "End-to-end encrypted screen sharing and ephemeral in-call chat": [ "Compartilhamento de tela com criptografia de ponta a ponta e chat efêmero durante a chamada" ], "Hosts can record meetings locally on their computers": [ "Os anfitriões podem gravar reuniões localmente em seus computadores" ], + "Includes Meet Professional": [ + "Inclui o Meet Professional" + ], "Meeting recording": [ "Gravação da reunião" ], "One active meeting at a time": [ "Uma reunião ativa por vez" ], + "Password manager with team vaults": [ + "Gerenciador de senhas com cofres de equipe" + ], + "Private AI Chat (${ LUMO_SHORT_APP_NAME })": [ + "Bate-papo privado com IA (${ LUMO_SHORT_APP_NAME })" + ], "Screen-sharing": [ "Compartilhamento de tela" ], + "Secure mail and calendar": [ + "E-mail e calendário seguro" + ], "Unlimited meetings per day": [ "Reuniões ilimitadas por dia" ], @@ -15657,6 +16247,9 @@ "Video meetings, ${ n } participant": [ "Reuniões por vídeo, ${ n } participante", "Reuniões por vídeo, ${ n } participantes" + ], + "VPN with ad-blocker and malware protection": [ + "VPN com bloqueador de anúncios e proteção contra malware" ] }, "meet_2025: Info": { @@ -16326,6 +16919,9 @@ "99.95% SLA": [ "SLA de 99,95%" ], + "Access all countries": [ + "Acesso a todos os países" + ], "Activity logs and policy": [ "Registros de atividade e política" ], @@ -16347,6 +16943,9 @@ "Advanced network security": [ "Segurança de rede avançada" ], + "Advanced workspace security": [ + "Segurança avançada do ambiente de trabalho" + ], "All ${ BRAND_NAME } products and features": [ "Todos os produtos e recursos da ${ BRAND_NAME }" ], @@ -16505,6 +17104,9 @@ "Multiple admin roles": [ "Múltiplas funções de administração" ], + "No streaming support": [ + "Sem suporte para streaming" + ], "No-logs policy": [ "Política de nenhum registro" ], @@ -16671,6 +17273,9 @@ "Unlimited volume/bandwidth": [ "Volume/largura de banda ilimitados" ], + "Unlock streaming": [ + "Desbloquear streaming" + ], "Up to ${ n } user": [ "Até ${ n } usuário", "Até ${ n } usuários" @@ -17145,6 +17750,10 @@ ] }, "new_plans: Upsell attribute": { + "${ n } country": [ + "${ n } país", + "${ n } países" + ], "Access advanced VPN features": [ "Acesse recursos avançados de VPN" ], @@ -17206,8 +17815,8 @@ "${ app } product updates": [ "Atualizações de produto do ${ app }" ], - "${ BRAND_NAME } for Business newsletter": [ - "Boletim da ${ BRAND_NAME } for Business" + "${ BRAND_NAME } for Business communications": [ + "Comunicações da ${ BRAND_NAME } for Business" ], "${ BRAND_NAME } important announcements": [ "Comunicados importantes da ${ BRAND_NAME }" @@ -17260,8 +17869,8 @@ "During your first month of using a ${ BRAND_NAME } product": [ "Durante o seu primeiro mês de uso de um produto da ${ BRAND_NAME }" ], - "Email subscriptions": [ - "Inscrições de e-mail" + "Email communications": [ + "Comunicação por e-mail" ], "In-app notifications": [ "Notificações dentro do aplicativo" @@ -17852,6 +18461,9 @@ "Plain text": [ "Texto sem formatação" ], + "Push notifications": [ + "Notificações por push" + ], "Receive from all": [ "Receber de todos" ], @@ -18343,14 +18955,14 @@ "per month, billed every two years": [ "por mês com cobrança a cada dois anos" ], - "Preparing your Recovery Kit": [ - "Preparando o kit de recuperação" + "Preparing your recovery phrase": [ + "Preparando sua frase de recuperação" ], "Protected by Swiss privacy laws": [ "Protegido pelas leis de privacidade suíças" ], - "Save your recovery kit to continue": [ - "Salve o seu kit de recuperação para continuar" + "Save your recovery phrase to continue": [ + "Salve sua frase de recuperação para continuar" ], "Secure vault sharing": [ "Compartilhamento seguro de cofres" @@ -19073,6 +19685,9 @@ "Search for an email or IP address": [ "Pesquisar por e-mail ou endereço de IP" ], + "Search for users or addresses": [ + "Pesquisar por um usuários ou endereços" + ], "Search parent folder": [ "Pesquisar pasta pai" ], @@ -19221,21 +19836,6 @@ "Faça upgrade para ${ upsellPlanTitle }" ] }, - "PQC account key generation": { - "Couldn’t generate keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\n${ settingsLink } and select 'Generate key' for your account and for each address.": [ - "Não foi possível gerar as chaves. Para ativar a proteção pós-quântica, você precisará gerar suas novas chaves de criptografia manualmente.\n\n${ settingsLink } e selecione 'Gerar chave' para sua conta e para cada endereço." - ] - }, - "PQC adress key generation": { - "Couldn’t generate address keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\nGo to ${ settingsLink } and select 'Generate key' for each address.": [ - "Não foi possível gerar chaves de endereço. Para ativar a proteção pós-quântica, você precisará gerar suas novas chaves de criptografia manualmente.\n\nAcesse ${ settingsLink } e selecione 'Gerar chave' para cada endereço." - ] - }, - "PQC compatibility warning": { - "**You must update all ${ BRAND_NAME } mobile apps**: your new keys won't work on older app versions.": [ - "**Você deve atualizar todos os aplicativos móveis ${ BRAND_NAME }**: suas novas chaves não funcionarão em versões mais antigas do aplicativo." - ] - }, "PQC key generation": { "This will generate new quantum-resistant encryption keys for your account.": [ "Isso gerará novas chaves de criptografia resistentes à computação quântica para sua conta." @@ -19492,6 +20092,9 @@ "Verify now": [ "Verificar agora" ], + "Verify now this recovery email address: ${ emailData.value }": [ + "Verifique agora esse endereço de e-mail de recuperação: ${ emailData.value }" + ], "Verify recovery email?": [ "Verificar e-mail de recuperação?" ], @@ -19535,23 +20138,44 @@ "Verify recovery phone?": [ "Verificar telefone de recuperação?" ], + "Verify this recovery phone number now: ${ phoneData.value }": [ + "Verifique agora esse endereço de telefone de recuperação: ${ phoneData.value }" + ], "Verifying your phone number increases your account security and allows additional options for recovery.": [ "Verificar o seu número de telefone aumenta a segurança de sua conta e permite opções adicionais de recuperação." ] }, "Recovery score": { + "${ score } / ${ maxScore } completed": [ + "${ score } / ${ maxScore } concluído" + ], "Account protection": [ "Proteção de conta" ], "Add more options for stronger protection": [ "Adicione mais opções para uma proteção mais eficaz" ], + "Good start. Add more options for a stronger protection.": [ + "Bom começo. Adicione mais opções para uma proteção mais eficaz." + ], + "Great. Add more options for a stronger protection.": [ + "Ótimo. Adicione mais opções para uma proteção mais eficaz." + ], + "How you increased your account protection": [ + "Como você aumentou a segurança da sua conta" + ], + "Inactive recovery options": [ + "Opções de recuperação inativas" + ], "Maximum": [ "Máximo" ], "Partial": [ "Parcial" ], + "Recovery score: ${ score }": [ + "Pontuação de recuperação: ${ score }" + ], "Score: ${ score } / ${ maxScore }": [ "Pontuação: ${ score } / ${ maxScore }" ], @@ -19587,17 +20211,20 @@ "Allow scanning QR code to sign in": [ "Permitir a leitura de código QR para iniciar sessão" ], + "Data recovery allowed on this device": [ + "Recuperação de dados é permitida neste dispositivo" + ], "Download recovery file": [ "Baixar o arquivo de recuperação" ], - "Email verification enabled": [ - "Verificação por e-mail ativada" + "Email recovery enabled": [ + "E-mail de recuperação ativado" ], "Emergency contacts added": [ "Contatos de emergência adicionados" ], - "Enable recovery by email": [ - "Ativar recuperação por e-mail" + "Enable email recovery": [ + "Ativar e-mail de recuperação" ], "Enable recovery by phone": [ "Ativar recuperação por telefone" @@ -19608,6 +20235,9 @@ "Password verified": [ "Senha verificada" ], + "Phone recovery enabled": [ + "Telefone de recuperação ativado" + ], "Recovery contacts added": [ "Contatos de recuperação adicionados" ], @@ -19620,8 +20250,8 @@ "Save recovery phrase": [ "Salvar frase de recuperação" ], - "SMS verification enabled": [ - "Verificação por SMS ativada" + "Sign-in with QR code allowed": [ + "Início de sessão com código QR permitido" ], "Verify password": [ "Verificar senha" @@ -19666,14 +20296,11 @@ "Or ${ downloadRecoveryKitSwitchButton } instead.": [ "Ou ${ downloadRecoveryKitSwitchButton } em vez disso." ], - "Your **Recovery Kit** lets you restore your ${ BRAND_NAME } Account if you’re locked out.": [ - "Seu **Kit de Recuperação** permite que você restaure sua conta da ${ BRAND_NAME } se o seu log-in for bloqueado." + "Your **recovery phrase** lets you restore your ${ BRAND_NAME } Account if you’re locked out.": [ + "Sua **frase de recuperação** permite que você restaure sua conta da ${ BRAND_NAME } se o seu log-in for bloqueado." ] }, "RecoveryPhrase: Title": { - "Save your Recovery Kit": [ - "Guarde seu kit de recuperação" - ], "Save your recovery phrase": [ "Guarde sua frase de recuperação" ] @@ -20066,9 +20693,6 @@ "Back to Safety Review": [ "Voltar para Verificação de Segurança" ], - "Because you reset your password, your current Recovery Kit can only be used to recover the data created before your password reset.": [ - "Como você redefiniu sua senha, o Kit de recuperação atual só pode ser usado para recuperar os dados criados antes da redefinição da senha." - ], "Can be used to regain access to your account and data": [ "Pode ser usado para recuperar o acesso à sua conta e aos seus dados" ], @@ -20096,8 +20720,8 @@ "Download ${ size }": [ "Baixar ${ size }" ], - "Download your Recovery Kit": [ - "Baixe seu Kit de Recuperação" + "Download your recovery phrase": [ + "Baixe sua frase de recuperação" ], "Email address": [ "Endereço de e-mail" @@ -20111,17 +20735,14 @@ "Enable recovery by phone": [ "Ativar recuperação por telefone" ], - "I understand that I will not be able to recover currently locked data with this Recovery Kit": [ - "Entendo que não poderei recuperar os dados bloqueados atualmente com este Kit de recuperação" - ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in on this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Se você esquecer sua senha da ${ BRAND_NAME } e precisar redefinir, na próxima vez que iniciar sessão neste dispositivo usando sua nova senha, o acesso total à sua conta ${ BRAND_NAME } será restaurado." ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Se você esquecer sua senha ${ BRAND_NAME } e precisar redefini-la, na próxima vez que entrar neste dispositivo usando a nova senha, o acesso total à sua conta ${ BRAND_NAME } será restaurado." ], - "If you get locked out of your ${ BRAND_NAME } Account, your Recovery Kit will allow you to sign in and recover your data.": [ - "Se você for bloqueado em sua conta ${ BRAND_NAME } seu Kit de recuperação permitirá que você faça login e recupere seus dados." + "If you get locked out of your ${ BRAND_NAME } Account, your recovery phrase will allow you to sign in and recover your data.": [ + "Se você não conseguir entrar na sua conta da ${ BRAND_NAME }, o sua frase de recuperação permitirá que você faça login e recupere seus dados." ], "If you lose your login details and need to reset your account, **it’s imperative** that you have both an **account recovery and data recovery method** in place, otherwise you might not be able to access any of your emails, contacts, files or passwords.": [ "Se você perder seus detalhes de login e precisar redefinir sua conta, é **imprescindível** que você tenha um **método de recuperação de conta e de recuperação de dados** em vigor, caso contrário, talvez não consiga acessar nenhum de seus e-mails, contatos, arquivos ou senhas." @@ -20165,8 +20786,8 @@ "Take action to secure your account": [ "Tome medidas para proteger sua conta" ], - "There was an error generating your Recovery Kit": [ - "Ocorreu um erro ao gerar seu kit de recuperação" + "There was an error generating your recovery phrase": [ + "Ocorreu um erro ao gerar sua frase de recuperação" ], "There was an error verifying your email": [ "Ocorreu um erro ao verificar seu e-mail" @@ -20195,11 +20816,11 @@ "to recover your account if you're ever locked out": [ "para recuperar sua conta caso você seja bloqueado" ], - "Update your Recovery Kit": [ - "Atualize seu Kit de Recuperação" + "Update your recovery phrase": [ + "Atualizar sua frase de recuperação" ], - "Update your Recovery Kit?": [ - "Atualizar kit de recuperação?" + "Update your recovery phrase?": [ + "Atualizar sua frase de recuperação?" ], "Verify": [ "Verificar" @@ -20216,8 +20837,8 @@ "Verify your recovery phone number": [ "Verifique seu endereço de e-mail de recuperação" ], - "We encountered an error while generating your Recovery Kit. Please try again later, or contact support if the issue continues.": [ - "Encontramos um erro ao gerar seu kit de recuperação. Tente novamente mais tarde ou entre em contato com o suporte se o problema persistir." + "We encountered an error while generating your recovery phrase. Please try again later, or contact support if the issue continues.": [ + "Encontramos um erro ao gerar sua frase de recuperação. Tente novamente mais tarde ou entre em contato com o suporte se o problema persistir." ], "We encountered an error while verifying your email. Please try again later, or contact support if the issue continues.": [ "Encontramos um erro ao verificar seu e-mail. Tente novamente mais tarde ou entre em contato com o suporte se o problema persistir." @@ -20240,8 +20861,8 @@ "You can disable this at any time.": [ "Você pode desativar isso a qualquer momento." ], - "You can use the recovery phrase in this Recovery Kit to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ - "Você pode usar a frase de recuperação deste Kit de recuperação para restaurar totalmente a sua conta quando redefinir a senha, portanto, certifique-se de mantê-la em um local seguro." + "You can use the recovery phrase in this recovery phrase to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ + "Você pode usar a frase de recuperação desta frase de recuperação para restaurar totalmente a sua conta quando redefinir a senha, portanto, certifique-se de mantê-la em um local seguro." ], "You can use your email to regain access to your account if you forget your password.": [ "Você pode usar o e-mail para recuperar o acesso à sua conta caso esqueça a senha." @@ -20252,9 +20873,6 @@ "You can use your recovery phone to regain access to your account if you forget your password.": [ "Você pode usar o telefone de recuperação para recuperar o acesso à sua conta caso esqueça a senha." ], - "You have previously downloaded a Recovery Kit. Downloading a new one will **deactivate the old one**.": [ - "Você já fez download de um Kit de recuperação anteriormente. O download de um novo kit **desativará o antigo**." - ], "You have recommended actions to safeguard your account further.": [ "Você tem ações recomendadas para proteger ainda mais sua conta." ], @@ -20318,12 +20936,6 @@ "Your recovery email is set": [ "Seu e-mail de recuperação está configurado" ], - "Your Recovery Kit": [ - "Seu kit de recuperação" - ], - "Your Recovery Kit is set": [ - "Seu kit de recuperação está configurado" - ], "Your recovery methods": [ "Seus métodos de recuperação" ], @@ -20344,6 +20956,200 @@ ], "Your recovery phone number is:": [ "O seu número de telefone de recuperação é" + ], + "Your recovery phrase": [ + "Sua frase de recuperação" + ], + "Your recovery phrase is set": [ + "Sua frase de recuperação está configurada" + ] + }, + "safety_review": { + "${ BRAND_NAME } Account email": [ + "Conta de e-mail da ${ BRAND_NAME }" + ], + "Account protection": [ + "Proteção da conta" + ], + "Add": [ + "Adicionar" + ], + "Add an emergency contact": [ + "Adicionar um contato de emergência" + ], + "Add emergency contacts": [ + "Adicionar contatos de emergência" + ], + "Add options": [ + "Adicionar opções" + ], + "Add phone number": [ + "Adicionar número de telefone" + ], + "Add recovery contacts": [ + "Adicionar contatos de recuperação" + ], + "Add recovery email": [ + "Adicionar e-mail de recuperação" + ], + "Add recovery phone": [ + "Adicionar telefone de recuperação" + ], + "Added emergency contacts": [ + "Contatos de emergência ativado" + ], + "Added recovery contacts": [ + "Contatos de recuperação adicionado" + ], + "Added recovery email": [ + "E-mail de recuperação adicionado" + ], + "Added recovery phone": [ + "Telefone de recuperação adicionado" + ], + "Allow": [ + "Permitir" + ], + "Allow data recovery from this device": [ + "Permitir a recuperação de dados deste dispositivo" + ], + "Allow password reset from the settings": [ + "Permitir redefinição de senha através da configurações" + ], + "Allow recovery by email": [ + "Permitir recuperação por e-mail" + ], + "Allow recovery by phone": [ + "Permitir recuperação por telefone" + ], + "Allow scanning a QR code to sign in": [ + "Permitir a leitura de um código QR para iniciar sessão" + ], + "Allow trusted friends to unlock your data": [ + "Permitir que amigos de confiança desbloqueiem seus dados" + ], + "Back to ${ backLink.appNameString }": [ + "Voltar para ${ backLink.appNameString }" + ], + "Congratulations": [ + "Parabéns" + ], + "Didn’t receive it? ${ sendANewCode }": [ + "Não recebeu? ${ sendANewCode }" + ], + "Done": [ + "Concluído" + ], + "Download": [ + "Baixar" + ], + "Download recovery file": [ + "Baixar o arquivo de recuperação" + ], + "Downloaded recovery file": [ + "Arquivo de recuperação baixado" + ], + "Emergency contacts enabled": [ + "Contatos de emergência ativados" + ], + "Enable device recovery": [ + "Ativar recuperação de dispositivos" + ], + "Enable email recovery": [ + "Ativar e-mail de recuperação" + ], + "Enable emergency contacts": [ + "Ativar contatos de emergência" + ], + "Enable password reset from settings": [ + "Ativar redefinição de senha através da configurações" + ], + "Enable phone recovery": [ + "Ativar telefone de recuperação" + ], + "Enable QR code sign-in": [ + "Ativar início de sessão por código QR" + ], + "Enabled device recovery": [ + "Recuperação de dispositivos ativada" + ], + "Enabled email recovery": [ + "E-mail de recuperação ativado" + ], + "Enabled password reset from settings": [ + "Redefinição de senha através da configurações ativado" + ], + "Enabled phone recovery": [ + "Telefone de recuperação ativado" + ], + "Enabled QR code sign-in": [ + "Início de sessão por código QR ativado" + ], + "Got it": [ + "Entendi" + ], + "Here's how you increased your account protection:": [ + "Veja como você aumentou a segurança da sua conta:" + ], + "Later": [ + "Mais tarde" + ], + "Protect your legacy with Emergency Access": [ + "Proteja o seu legado com Acesso de Emergência" + ], + "Save recovery phrase": [ + "Salvar frase de recuperação" + ], + "Saved recovery phrase": [ + "Frase de recuperação salva" + ], + "They must already have a ${ BRAND_NAME } Account.": [ + "Você deve ter uma conta da ${ BRAND_NAME }" + ], + "Verified password": [ + "Senha verificada" + ], + "Verified recovery email": [ + "E-mail de recuperação verificado" + ], + "Verified recovery phone": [ + "Telefone de recuperação verificado" + ], + "Verify": [ + "Verificar" + ], + "Verify password": [ + "Verificar senha" + ], + "Verify recovery email": [ + "Verificar e-mail de recuperação" + ], + "Verify recovery phone": [ + "Verificar telefone de recuperação" + ], + "Verify your recovery email": [ + "Verificar seu e-mail de recuperação" + ], + "Verify your recovery phone": [ + "Verificar seu telefone de recuperação" + ], + "You can use email verification to regain access to your account if you forget your password.": [ + "Você pode usar a verificação por e-mail para recuperar o acesso à sua conta caso esqueça a senha." + ], + "You can use SMS verification to regain access to your account if you forget your password.": [ + "Você pode usar a verificação por SMS para recuperar o acesso à sua conta caso esqueça a senha." + ], + "You can use your recovery email to regain access to your account if you forget your password.": [ + "Você pode usar o e-mail de recuperação para recuperar o acesso à sua conta caso esqueça a senha." + ], + "You don’t need to open or read the file—just download it and store it somewhere safe.": [ + "Você não precisa abrir ou ler o arquivo - apenas faça o download e armazene em local seguro." + ], + "Your recovery checklist": [ + "Lista de verificação para sua recuperação" + ], + "Your security setup": [ + "Sua configuração de segurança" ] }, "saml: Action": { @@ -20549,6 +21355,11 @@ "Nenhum resultado encontrado" ] }, + "Sentinel banner": { + "You have recommended actions from ${ PROTON_SENTINEL_NAME }": [ + "Você tem ações recomendadas da ${ PROTON_SENTINEL_NAME }" + ] + }, "Server-Info": { "active": [ "ativo" @@ -20877,14 +21688,8 @@ ] }, "Setting": { - "Enable Photos section": [ - "Ativar a seção Fotos" - ], "Get updates about comments via email": [ "Receba atualizações sobre comentários por e-mail" - ], - "Include document name in email notifications": [ - "Incluir nome do documento em notificações por e-mail" ] }, "Settings description": { @@ -21749,11 +22554,26 @@ ] }, "Spotlight": { + "Assign delegated roles": [ + "Atribuir funções delegadas" + ], + "Assign roles": [ + "Atribuir funções" + ], "Earn up to ${ maxRewardAmount } in credit": [ "Receba até ${ maxRewardAmount } em crédito" ], "Get credits when the person you invite subscribes to a ${ BRAND_NAME } plan.": [ "Ganhe créditos quando a pessoa que você convida se inscreve em um plano ${ BRAND_NAME }." + ], + "New: Roles and permissions tab": [ + "Novo: guia Funções e permissões" + ], + "User roles available": [ + "Funções de usuário disponíveis" + ], + "You can now assign roles to individual users from this tab.": [ + "Você pode agora atribuir funções a usuários individuais nesta guia." ] }, "sso": { @@ -22044,6 +22864,10 @@ ] }, "Status": { + "${ count } person": [ + "${ count } pessoa", + "${ count } pessoas" + ], "Add a phone number": [ "Adicionar um número de telefone" ], @@ -22065,12 +22889,18 @@ "Last changed ${ formattedDate }": [ "Última alteração há ${ formattedDate } atrás" ], - "No contact": [ - "Nenhum contato" + "Last updated ${ formattedUpdateDate }": [ + "Última atualização em ${ formattedUpdateDate }" ], "Not saved": [ "Não salvo" ], + "Off": [ + "Desativado" + ], + "On": [ + "Ativado" + ], "Outdated": [ "Desatualizado" ], @@ -22652,6 +23482,10 @@ "Version history": [ "Histórico de versões" ], + "Video meetings, up to ${ PAID_PREMIUM_MAX_PARTICIPANTS } participant": [ + "Reuniões por vídeo, de até ${ PAID_PREMIUM_MAX_PARTICIPANTS } participante", + "Reuniões por vídeo, de até ${ PAID_PREMIUM_MAX_PARTICIPANTS } participantes" + ], "Watch the interview": [ "Assista à entrevista" ], @@ -22773,6 +23607,12 @@ "${ DRIVE_PLUS_NAME } offers 200 GB storage for your files and photos. You are also eligible for yearly storage bonuses.": [ "${ DRIVE_PLUS_NAME } oferece 200 GB de armazenamento para os seus arquivos e fotos. Você também está elegível para bônus anuais de armazenamento." ], + "${ planTitle } gives you access to all apps and premium features. Privacy is built-in so you can get on with it, knowing your data and identity are safe.": [ + "${ planTitle } oferece a você acesso a todos os aplicativos e recursos premium. A privacidade está integrada para você poder seguir adiante sabendo que seus dados estão seguros." + ], + "${ planTitle } gives you all apps, all features, early access to new releases, and everything you need to be in control of your data and its security.": [ + "${ planTitle } oferece todos os aplicativos, recursos, acesso antecipado a novos lançamentos, e tudo que você precisa para controlar seus dados e segurança." + ], "${ planTitle } gives your team what they need to be more productive and organized in their work with access to all ${ BRAND_NAME } apps and their advanced features.": [ "${ planTitle } oferece à sua equipe o que ela necessita para ser mais produtiva e organizada no trabalho com acesso a todos os aplicativos da ${ BRAND_NAME } e seus recursos avançados." ], @@ -22797,6 +23637,9 @@ "Save 50% for 6 months, and keep full access": [ "Economize 50% em 6 meses e mantenha o acesso completo" ], + "See how ${ MAIL_APP_NAME } compares, and why our independence makes a difference.": [ + "Veja como o ${ MAIL_APP_NAME } se compara e por que nossa independência faz a diferença." + ], "View VPN session details for your organization.": [ "Veja os detalhes da sessão VPN para sua organização." ] @@ -22805,6 +23648,9 @@ "Account deleted. Signing out...": [ "Conta excluída. Encerando sessão..." ], + "Activation link copied to clipboard": [ + "Link de ativação copiado para a área de transferência" + ], "Address added": [ "Endereço adicionado" ], @@ -22928,9 +23774,6 @@ "Organization logo updated": [ "Logotipo da organização atualizado" ], - "Organization name set": [ - "Nome da organização definido" - ], "Organization name updated": [ "Nome da organização atualizado" ], @@ -23152,6 +23995,14 @@ "Proteja seus arquivos com armazenamento em nuvem criptografado. Inclui histórico de versões, compartilhamento de arquivo criptografado e muito mais." ] }, + "Tab": { + "For personal use": [ + "Para uso pessoal" + ], + "For professional use": [ + "Para uso profissional" + ] + }, "Tab in domain modal": { "Addresses": [ "Endereços" @@ -23430,12 +24281,18 @@ "Actions": [ "Ações" ], + "Activate multi-user support": [ + "Ativar suporte a múltiplos usuários" + ], "Activate organization key": [ "Ativar chave da organização" ], "Activate user": [ "Ativar usuário" ], + "Activate your email": [ + "Ative seu e-mail" + ], "Activity monitor": [ "Monitor de atividade" ], @@ -23452,9 +24309,15 @@ "Add address": [ "Adicionar endereço" ], + "Add an emergency contact": [ + "Adicionar um contato de emergência" + ], "Add another notification to remind you of this event": [ "Adicione outra notificação para lembrá-lo deste evento" ], + "Add categories": [ + "Adicionar categorias" + ], "Add contact group name": [ "Adicionar nome do grupo de contatos" ], @@ -23536,9 +24399,6 @@ "An address for each role": [ "Um endereço para cada função" ], - "An error occurred": [ - "Ocorreu um erro" - ], "Annual": [ "Anual" ], @@ -23575,6 +24435,9 @@ "Are you sure?": [ "Você tem certeza?" ], + "Ask your emergency contacts for help": [ + "Peça ajuda aos seus contatos de emergência" + ], "Auto-deletion is active": [ "A exclusão automática está ativa." ], @@ -23602,6 +24465,12 @@ "Browser extensions": [ "Extensões de navegador" ], + "Can you access your session in the browser?": [ + "Você pode acessar sua sessão no navegador?" + ], + "Can you reach out to your emergency contacts?": [ + "Você Consegue entrar em contato com o contato de emergência?" + ], "Cancel ${ MAIL_SHORT_APP_NAME } subscription": [ "Cancelar assinatura do ${ MAIL_SHORT_APP_NAME }" ], @@ -23623,6 +24492,9 @@ "Catch-all address": [ "Endereço catch-all" ], + "Categories": [ + "Categorias" + ], "Change login password": [ "Alterar a senha de login" ], @@ -23668,6 +24540,9 @@ "Collaborate on documents": [ "Colaborar em documentos" ], + "Companies": [ + "Empresas" + ], "Compare plans": [ "Comparar planos" ], @@ -23677,18 +24552,12 @@ "Confirm": [ "Confirmar" ], - "Confirm address": [ - "Confirmar endereço" - ], "Confirm downgrade": [ "Confirmar downgrade" ], "Confirm loss of ${ BRAND_NAME } bonuses": [ "Confirmar a perda dos benefícios da ${ BRAND_NAME }" ], - "Confirm phone number": [ - "Confirme o número do telefone" - ], "Connect ${ name }": [ "Conectar ${ name }" ], @@ -23713,12 +24582,18 @@ "Connect your custom domain": [ "Conecte seu domínio personalizado" ], + "Connected emails": [ + "E-mails conectados" + ], "Connection status": [ "Status da conexão" ], "Contact us": [ "Fale conosco" ], + "Continue with free storage": [ + "Continuar com armazenamento grátis" + ], "Continue with partial import?": [ "Continue com uma importação parcial?" ], @@ -23744,6 +24619,9 @@ "Create a new gateway": [ "Criar um gateway" ], + "Create a new password": [ + "Crie uma nova senha" + ], "Create Gateway": [ "Criar gateway" ], @@ -23825,6 +24703,9 @@ "Data recovery": [ "Recuperação de dados" ], + "Data recovery contacts": [ + "Contatos de recuperação de dados" + ], "Data recovery options": [ "Opções de recuperação de dados" ], @@ -23837,6 +24718,9 @@ "Day theme": [ "Tema diurno" ], + "Deactivate current phrase?": [ + "Desativar frase atual?" + ], "Decrypt key": [ "Descriptografar chave" ], @@ -23907,6 +24791,9 @@ "Device": [ "Dispositivo" ], + "Device data backup": [ + "Backup de dados do dispositivo" + ], "Device name": [ "Nome do dispositivo" ], @@ -23934,6 +24821,9 @@ "Disconnected from Gmail": [ "Desconectado do Gmail" ], + "Dismiss setup checklist": [ + "Dispensar lista de verificação de configuração" + ], "Display name and signature": [ "Nome de exibição e assinatura" ], @@ -23970,6 +24860,9 @@ "Download the mobile apps": [ "Baixe os aplicativos móveis" ], + "Download your recovery phrase": [ + "Baixe sua frase de recuperação" + ], "Downloads": [ "Baixar" ], @@ -24109,6 +25002,9 @@ "Feature access": [ "Acesso a recursos" ], + "Fewer distractions, more focus": [ + "Menos distrações, mais foco" + ], "Filter for more focus": [ "Filtrar para mais foco" ], @@ -24139,9 +25035,6 @@ "Forward emails": [ "Encaminhamento de e-mails" ], - "Forwardings": [ - "Encaminhamentos" - ], "Free": [ "Free" ], @@ -24178,6 +25071,9 @@ "Get ${ planMaxSpace } storage for your files, photos and documents with ${ planName }. ${ upgradeButton }": [ "Obtenha ${ planMaxSpace } de armazenamento para seus arquivos, fotos e documentos com ${ planName }. ${ upgradeButton }" ], + "Get ${ VPN_APP_NAME } on your TV": [ + "Obtenha o ${ VPN_APP_NAME } na sua TV" + ], "Get ${ vpnPlus } to access all servers": [ "Obtenha o ${ vpnPlus } para acessar todos os servidores" ], @@ -24208,6 +25104,12 @@ "Get more from your VPN": [ "Obter mais da sua VPN" ], + "Get more storage with ${ MAIL_APP_NAME } Plus": [ + "Obtenha mais armazenamento com ${ MAIL_APP_NAME } Plus" + ], + "Get started": [ + "Começar" + ], "Get the app on all your devices and enjoy safe, seamless access anywhere.": [ "Obtenha o aplicativo em todos os seus dispositivos e desfrute de acesso seguro e contínuo em qualquer lugar." ], @@ -24362,6 +25264,9 @@ "Link confirmation": [ "Confirmar redirecionamento" ], + "Lower your cost without losing features": [ + "Reduza seus custos sem perder os recursos" + ], "Main password": [ "Senha principal" ], @@ -24389,6 +25294,9 @@ "Monthly": [ "Mensalmente" ], + "Monthly Costs": [ + "Custos mensais" + ], "Multi-user support": [ "Suporte para múltiplos usuários" ], @@ -24422,6 +25330,9 @@ "No events": [ "Sem eventos" ], + "No events yet": [ + "Nenhum evento ainda" + ], "No need to empty the trash": [ "Não é necessário esvaziar a lixeira" ], @@ -24521,9 +25432,6 @@ "Phone": [ "Telefone" ], - "Photos": [ - "Fotos" - ], "Pin the extension": [ "Fixe a extensão" ], @@ -24560,6 +25468,9 @@ "QR Code": [ "Código QR" ], + "QR code sign-in": [ + "Iniciar sessão com o código QR" + ], "Ready, set, forward": [ "Preparar, apontar, avançar" ], @@ -24605,9 +25516,15 @@ "Remove domain": [ "Remover domínio" ], + "Remove email": [ + "Remover e-mail" + ], "Remove forwarding address": [ "Remover endereço de encaminhamento" ], + "Remove recovery phone number": [ + "Remover número de telefone de recuperação" + ], "Remove server?": [ "Remover servidor?" ], @@ -24650,6 +25567,9 @@ "Reused passwords": [ "Senhas reutilizadas" ], + "Reverse charge not supported": [ + "Carregamento reverso não suportado" + ], "Revoke certificate?": [ "Revogar certificado?" ], @@ -24776,6 +25696,9 @@ "Sign in on TV": [ "Iniciar sessão na TV" ], + "Sign in on TV?": [ + "Iniciar sessão na TV?" + ], "Sign in to join the Beta program": [ "Inicie sessão para participar do programa Beta" ], @@ -24791,6 +25714,9 @@ "Signed in to member account": [ "Iniciado sessão à conta de membro" ], + "Signed-in reset": [ + "Sessão iniciado por redefinição" + ], "Simplify email distribution": [ "Simplifique a distribuição dos e-mails" ], @@ -24809,6 +25735,12 @@ "Snooze:": [ "Adiar:" ], + "Some of your encrypted data is locked": [ + "Alguns de seus dados criptografado estão bloqueados" + ], + "Something went wrong": [ + "Algo deu errado" + ], "Sort folders alphabetically": [ "Ordenar pastas por ordem alfabética" ], @@ -24906,6 +25838,9 @@ "To preview this spreadsheet, open it in ${ SHEETS_APP_NAME } or download it.": [ "Para pré-visualizar esta planilha, abra-a no ${ SHEETS_APP_NAME } ou faça o download." ], + "Troubleshoot your issue": [ + "Solucione seu problema" + ], "Try ${ AUTHENTICATOR_APP_NAME }": [ "Experimente ${ AUTHENTICATOR_APP_NAME }" ], @@ -24975,6 +25910,9 @@ "Use backup recovery code": [ "Usar código de recuperação de backup" ], + "Use one account for all your addresses": [ + "Use uma conta para todos seus endereços" + ], "User": [ "Usuário" ], @@ -24999,6 +25937,9 @@ "Verify it’s you": [ "Verifique se é você" ], + "Verify your email": [ + "Verificar seu e-mail" + ], "Verifying your card...": [ "Verificando seu cartão..." ], @@ -25038,6 +25979,9 @@ "Welcome to your new password manager!": [ "Bem-vindo ao seu novo gerenciador de senhas!" ], + "What changes if you switch to the Free plan": [ + "O que muda se você mudar para o plano Free" + ], "What is an alias?": [ "O que é um alias?" ], @@ -25227,6 +26171,21 @@ "Admins can manage user accounts and give admin privileges to other users. Only the primary admin can edit the plan of the organization.": [ "Os administradores podem gerenciar contas de usuários e conceder privilégios de administrador a outros usuários. Somente o administrador principal pode editar o plano da organização." ], + "Allow recovering your account with a one-time code sent to your recovery email": [ + "Permite recuperar sua conta com um código de uso único enviado no seu e-mail de recuperação" + ], + "Allow resetting your password from the account settings": [ + "Permite redefinir sua senha a partir das configurações da conta" + ], + "Allow scanning a QR code from a ${ BRAND_NAME } mobile app to sign in": [ + "Permite escanear um código QR a partir do aplicativo mover da ${ BRAND_NAME } para iniciar sessão" + ], + "Allow trusted contacts to request access to your account": [ + "Permita que contatos confiáveis solicitem acesso à sua conta" + ], + "Allow trusted contacts to unlock your encrypted data after a password reset": [ + "Permita que contatos de confiánça desbloqueiem seus dados criptografados após uma redefinição de senha" + ], "Allows to seamlessly add Zoom video conferencing links to your calendar invitations.": [ "Permite facilmente adicionar links de videoconferência do Zoom aos seus convites de calendário." ], @@ -25263,6 +26222,9 @@ "Each imported email will have this label": [ "Cada e-mail importado terá este marcador" ], + "Early access to new apps and features.": [ + "Acesso antecipado a novos aplicativos e recursos." + ], "Edit folder names": [ "Editar nomes da pastas" ], @@ -25404,9 +26366,6 @@ "This feature is only available on Beta": [ "Esse recurso só está disponível na versão para Beta." ], - "This is the default key used by other ${ MAIL_APP_NAME } users on older mobile apps to encrypt data they send to you": [ - "Esta é a chave padrão usada por outros usuários do ${ MAIL_APP_NAME } em aplicativos móveis mais antigos para criptografar os dados que eles enviam para você" - ], "This is the default key used by other ${ MAIL_APP_NAME } users to encrypt data they send to you": [ "Esta é a chave padrão usada por outros usuários do ${ MAIL_APP_NAME } para criptografar os dados que eles enviam para você" ], @@ -25493,6 +26452,9 @@ "User is a group": [ "Usuário é um grupo" ], + "via ${ groupName }": [ + "via ${ groupName }" + ], "Waiting for user to accept the invitation": [ "Esperando o usuário aceitar o convite" ] @@ -25816,6 +26778,12 @@ ] }, "user_modal": { + "(via ${ groupName })": [ + "(via ${ groupName })" + ], + "(via group)": [ + "(via grupo)" + ], "Add multiple users": [ "Adicionar vários usuários" ], @@ -26200,11 +27168,11 @@ "${ BRAND_NAME } will transfer as much data as possible, starting with your most recent messages.": [ "A ${ BRAND_NAME } irá transferir o máximo de dados possível, começando com as mensagens mais recentes." ], - "Are you sure you want to delete the phone number?": [ - "Você tem certeza que deseja excluir o número de telefone?" + "Are you sure you want to remove your notification email?": [ + "Você tem certeza que deseja remover seu e-mail de notificação?" ], - "Are you sure you want to delete this address?": [ - "Tem a certeza de que quer apagar esta endereço?" + "Are you sure you want to remove your recovery email?": [ + "Você tem certeza que deseja remover seu e-mail de recuperação?" ], "By deleting this address, you will no longer be able to receive daily email notifications.": [ "Ao excluir este endereço, você não poderá mais receber notificações diárias por e-mail." @@ -26215,8 +27183,14 @@ "By deleting this address, you will no longer be able to recover your account.": [ "Ao excluir este endereço, você não poderá mais recuperar sua conta." ], - "By deleting this phone number, you will no longer be able to recover your account.": [ - "Ao excluir este número de telefone, você não poderá mais recuperar sua conta." + "By removing this phone number, you will no longer be able to recover your account.": [ + "Ao remover este número de telefone, você não poderá mais recuperar sua conta." + ], + "Could not login. Please open ${ PASS_APP_NAME } browser extension and login from there.": [ + "Não foi possível acessar. Abra a extensão ${ PASS_APP_NAME } no navegador e inicie a sessão por lá." + ], + "Could not sign up. Please open ${ PASS_APP_NAME } browser extension and sign up from there.": [ + "Não foi possível criar conta. Abra a extensão ${ PASS_APP_NAME } no navegador e crie a conta por lá." ], "If you cancel this import, you won't be able to resume it. ${ BRAND_NAME } saved all progress in your account. Cancel anyway?": [ "Se você cancelar esta importação, você não poderá retomá-la. A ${ BRAND_NAME } salvou todo o progresso na sua conta. Deseja cancelar mesmo assim?" @@ -26245,6 +27219,9 @@ "Reports are not end-to-end encrypted, please do not send any sensitive information.": [ "Os relatórios não são criptografados de ponta a ponta. Não envie nenhuma informação confidencial." ], + "Servers in this gateway will enter a 10-day deactivation period. These servers can be added to a new Gateway, but their country cannot be changed.": [ + "Os servidores neste gateway entrarão em um período de desativação de 10 dias. Esses servidores podem ser adicionados a um novo Gateway, mas o país em que estão não pode ser alterado." + ], "Skip verification?": [ "Pular verificação?" ], diff --git a/applications/account/locales/pt_PT.json b/applications/account/locales/pt_PT.json index f6e92622d8f..a82de3ae011 100644 --- a/applications/account/locales/pt_PT.json +++ b/applications/account/locales/pt_PT.json @@ -3616,9 +3616,6 @@ "No one in your organization can connect to shared servers.": [ "Ninguém na sua organização pode conectar-se a servidores partilhados." ], - "Send a code to your recovery email or phone": [ - "Enviar um código para o seu e-mail ou telefone de recuperação" - ], "Set up accounts for all users and invite them to join ${ BRAND_NAME }.": [ "Configure contas para todos os utilizadores e convide-os a aderir à ${ BRAND_NAME }." ], @@ -4229,9 +4226,6 @@ "Disabled": [ "Desativado" ], - "None": [ - "Nenhuma" - ], "Only ": [ "Apenas " ], @@ -4620,9 +4614,6 @@ "Please try again in a few moments.": [ "Tente novamente dentro de alguns momentos." ], - "Please upgrade to a business plan with more than 1 user to get multi-user support": [ - "Subscreva um plano empresarial com mais de 1 utilizador para obter suporte multiutilizador." - ], "Please upgrade to a business plan with more than 1 user to manage multiple users.": [ "Subscreva um plano empresarial com mais de 1 utilizador para gerir vários utilizadores." ], @@ -6708,10 +6699,6 @@ "Add your name and logo to create a more personalized experience for your organization.": [ "Adicione o seu nome e logo para criar uma experiência mais personalizada para a sua organização." ], - "Adding ${ addedServerCount } gateway server": [ - "A adicionar ${ addedServerCount } servidor de porta de entrada", - "A adicionar ${ addedServerCount } servidores de porta de entrada" - ], "Adding an external email address will disable end-to-end encryption for all email communication within that group. Do you want to proceed?": [ "Adicionar um endereço de e-mail externo desativará a encriptação de ponta a ponta para todas as comunicações de e-mail dentro deste grupo. Deseja continuar?" ], @@ -6929,9 +6916,6 @@ "Change your password": [ "Altere a sua palavra-passe" ], - "Check the status of imports and forwarding.": [ - "Verificar o estado das importações e do reencaminhamento." - ], "Choose an Entity ID to continue.": [ "Escolha um ID da entidade para continuar." ], @@ -7005,10 +6989,6 @@ "Create a label for the imported messages, a time range for this import, and the labels you would like to import.": [ "Crie uma etiqueta para as mensagens importadas, um intervalo de tempo para esta importação e as etiquetas que deseja importar." ], - "Create a secure cloud for ${ value } member": [ - "Criar uma nuvem segura para ${ value } membro", - "Criar uma nuvem segura para ${ value } membros" - ], "Create an account": [ "Criar uma conta" ], @@ -8948,9 +8928,6 @@ "You can edit this once to ensure the correct email address for verification.": [ "Pode editar isto uma vez para garantir o endereço de e-mail correto para verificação." ], - "You can enable the Photos section from the interface using the toggle below.": [ - "Pode ativar a secção de fotos a partir da interface com a opção abaixo." - ], "You can enforce the password rules members of your organization will use when they create or reset the password to their ${ BRAND_NAME } Account.": [ "Pode aplicar as regras da palavra-passe que os membros da sua organização utilizarão quando criarem ou repuserem a palavra-passe da respetiva conta da ${ BRAND_NAME }." ], @@ -12516,9 +12493,6 @@ "${ app } product updates": [ "Atualizações de produto para ${ app }" ], - "${ BRAND_NAME } for Business newsletter": [ - "Boletim informativo ${ BRAND_NAME } for Business" - ], "${ BRAND_NAME } important announcements": [ "Anúncios importantes da ${ BRAND_NAME }" ], @@ -12567,9 +12541,6 @@ "During your first month of using a ${ BRAND_NAME } product": [ "Durante o seu primeiro mês de utilização de um produto da ${ BRAND_NAME }" ], - "Email subscriptions": [ - "Subscrições de e-mail" - ], "In-app notifications": [ "Notificações na aplicação" ], @@ -13367,15 +13338,9 @@ "per month, billed every two years": [ "por mês, faturado a cada dois anos" ], - "Preparing your Recovery Kit": [ - "Preparação do kit de recuperação" - ], "Protected by Swiss privacy laws": [ "Protegido pelas leis de privacidade suíças" ], - "Save your recovery kit to continue": [ - "Guarde o seu kit de recuperação para continuar" - ], "Secure vault sharing": [ "Partilha segura de cofre" ], @@ -14404,9 +14369,6 @@ "Back to Safety Review": [ "Voltar para a verificação de segurança" ], - "Because you reset your password, your current Recovery Kit can only be used to recover the data created before your password reset.": [ - "Como redefiniu a sua palavra-passe, o seu kit de recuperação atual só pode ser usado para recuperar os dados criados antes da sua redefinição de palavra-passe." - ], "Can be used to regain access to your account and data": [ "Isto pode ser usado para recuperar o acesso à sua conta e dados." ], @@ -14425,9 +14387,6 @@ "Download ${ size }": [ "Transferir ${ size }" ], - "Download your Recovery Kit": [ - "Transferir o seu kit de recuperação" - ], "Email address": [ "Endereço de e-mail" ], @@ -14440,18 +14399,12 @@ "Enable recovery by phone": [ "Ativar a recuperação por telefone" ], - "I understand that I will not be able to recover currently locked data with this Recovery Kit": [ - "Eu entendo que não poderei recuperar os dados atualmente bloqueados com este kit de recuperação." - ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in on this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Se esquecer a palavra-passe ${ BRAND_NAME } e precisar de a redefinir, da próxima vez que iniciar sessão neste dispositivo com a sua nova palavra-passe, o acesso completo à sua conta ${ BRAND_NAME } será restaurado." ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Se esquecer a palavra-passe ${ BRAND_NAME } e precisar de a redefinir, da próxima vez que iniciar sessão neste dispositivo com a sua nova palavra-passe, o acesso completo à sua conta ${ BRAND_NAME } será restaurado." ], - "If you get locked out of your ${ BRAND_NAME } Account, your Recovery Kit will allow you to sign in and recover your data.": [ - "Se não conseguir entrar na sua conta da ${ BRAND_NAME }, o seu kit de recuperação permitirá que inicie sessão e recupere os seus dados." - ], "If you lose your login details and need to reset your account, **it’s imperative** that you have both an **account recovery and data recovery method** in place, otherwise you might not be able to access any of your emails, contacts, files or passwords.": [ "Se perder os seus dados de acesso e precisar de redefinir a sua conta, **é imperativo** que tenha tanto **um método de recuperação da conta como de recuperação de dados configurados**. Caso contrário, poderá não conseguir aceder aos seus e-mails, contactos, ficheiros ou palavras-passe." ], @@ -14491,9 +14444,6 @@ "Take action to secure your account": [ "Tome as medidas necessárias para proteger a sua conta." ], - "There was an error generating your Recovery Kit": [ - "Ocorreu um erro ao gerar o seu kit de recuperação." - ], "There was an error verifying your recovery email": [ "Ocorreu um erro ao verificar o seu email de recuperação." ], @@ -14515,12 +14465,6 @@ "to recover your account if you're ever locked out": [ "para recuperar a sua conta se for bloqueada" ], - "Update your Recovery Kit": [ - "Atualizar o seu kit de recuperação" - ], - "Update your Recovery Kit?": [ - "Atualizar o seu kit de recuperação?" - ], "Verify": [ "Verificar" ], @@ -14530,9 +14474,6 @@ "Verify your recovery phone number": [ "Verificar o seu número de telefone de recuperação" ], - "We encountered an error while generating your Recovery Kit. Please try again later, or contact support if the issue continues.": [ - "Ocorreu um erro ao gerar o seu kit de recuperação. Tente novamente mais tarde ou contacte o serviço de apoio ao cliente se o problema continuar." - ], "We encountered an error while verifying your recovery email. Please try again later, or contact support if the issue continues.": [ "Ocorreu um erro ao verificar o seu e-mail de recuperação. Tente novamente mais tarde ou contacte o serviço de apoio ao cliente se o problema continuar." ], @@ -14551,18 +14492,12 @@ "You can disable this at any time.": [ "Pode desativar isso a qualquer momento." ], - "You can use the recovery phrase in this Recovery Kit to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ - "Pode utilizar a frase de recuperação incluída neste kit para restaurar completamente a sua conta ao redefinir a sua palavra-passe. Certifique-se de o guardar num local seguro." - ], "You can use your recovery email to regain access to your account if you forget your password.": [ "Pode utilizar o e-mail de recuperação para recuperar o acesso à sua conta caso esqueça a sua palavra-passe." ], "You can use your recovery phone to regain access to your account if you forget your password.": [ "Pode utilizar o telefone de recuperação para recuperar o acesso à sua conta caso esqueça a sua palavra-passe." ], - "You have previously downloaded a Recovery Kit. Downloading a new one will **deactivate the old one**.": [ - "Já transferiu um kit de recuperação anteriormente. Ao transferir um novo, **a versão antiga será desativada**." - ], "You have recommended actions.": [ "Tem ações recomendadas." ], @@ -14602,12 +14537,6 @@ "Your recovery email is set": [ "O seu email de recuperação é configurado." ], - "Your Recovery Kit": [ - "O seu kit de recuperação" - ], - "Your Recovery Kit is set": [ - "O seu kit de recuperação foi configurado." - ], "Your recovery methods": [ "Os seus métodos de recuperação" ], @@ -17458,18 +17387,12 @@ "Confirm": [ "Confirmar" ], - "Confirm address": [ - "Confirmar endereço" - ], "Confirm downgrade": [ "Confirmar a alteração da conta" ], "Confirm loss of ${ BRAND_NAME } bonuses": [ "Confirme a perda dos bónus ${ BRAND_NAME }" ], - "Confirm phone number": [ - "Confirmar número de telefone" - ], "Connect ${ name }": [ "Conectar ${ name }" ], @@ -18086,9 +18009,6 @@ "Phone": [ "Telefone" ], - "Photos": [ - "Fotografias" - ], "Pin the extension": [ "Fixe a extensão" ], @@ -18320,6 +18240,9 @@ "Snooze:": [ "Adiar:" ], + "Something went wrong": [ + "Ocorreu um erro" + ], "Sort folders alphabetically": [ "Ordenar pastas alfabeticamente" ], @@ -19371,12 +19294,6 @@ "${ BRAND_NAME } will transfer as much data as possible, starting with your most recent messages.": [ "${ BRAND_NAME } irá transferir o máximo de dados possível, começando pelas mensagens mais recentes." ], - "Are you sure you want to delete the phone number?": [ - "Tem a certeza de que deseja eliminar este número de telefone?" - ], - "Are you sure you want to delete this address?": [ - "Tem a certeza de que pretende eliminar este endereço?" - ], "By deleting this address, you will no longer be able to receive daily email notifications.": [ "Ao eliminar este endereço, já não poderá receber notificações diárias do correio." ], @@ -19386,9 +19303,6 @@ "By deleting this address, you will no longer be able to recover your account.": [ "Ao eliminar este endereço, já não poderá recuperar a sua conta." ], - "By deleting this phone number, you will no longer be able to recover your account.": [ - "Ao eliminar este número de telefone, já não poderá recuperar a sua conta." - ], "If you cancel this import, you won't be able to resume it. ${ BRAND_NAME } saved all progress in your account. Cancel anyway?": [ "Se cancelar a importação, não poderá retomá-la. O ${ BRAND_NAME } guardou todo o progresso na sua conta. Cancelar mesmo assim?" ], diff --git a/applications/account/locales/ro_RO.json b/applications/account/locales/ro_RO.json index 9e28f244cdd..30984be53c1 100644 --- a/applications/account/locales/ro_RO.json +++ b/applications/account/locales/ro_RO.json @@ -90,6 +90,9 @@ "Add": [ "Adăugare" ], + "Add ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }": [ + "Adăugați ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }" + ], "Add ${ BRAND_NAME } Account": [ "Adăugare cont ${ BRAND_NAME }" ], @@ -105,6 +108,9 @@ "Add address or domain": [ "Adăugare adresă sau domeniu în" ], + "Add and verify": [ + "Adăugare și verificare" + ], "Add another account": [ "Adăugare alt cont" ], @@ -159,6 +165,9 @@ "Add user": [ "Adăugare utilizator" ], + "Added ${ memberName } as group owner": [ + "${ memberName } s-a adăugat ca proprietar de grup" + ], "Align center": [ "Centrare" ], @@ -210,6 +219,9 @@ "Back to sign in": [ "Înapoi la conectare" ], + "Back to sign-in": [ + "La autentificare" + ], "Block": [ "Blocate" ], @@ -226,7 +238,7 @@ "Anulare abonament" ], "Cancel trial and pay": [ - "Anulare perioadă de probare și plătire" + "Anulare perioadă de evaluare și plătire" ], "Change": [ "Schimbare" @@ -261,6 +273,9 @@ "Claim it": [ "Revendicați" ], + "Claim offer": [ + "Revendicare ofertă" + ], "Claim this address": [ "Revendicați această adresă" ], @@ -303,6 +318,9 @@ "Confirm": [ "Confirmare" ], + "Confirm email": [ + "Confirmare e-mail" + ], "Confirm opening of link ${ linkToShow }": [ "Confirmați deschiderea legăturii web ${ linkToShow }" ], @@ -318,15 +336,15 @@ "Connect Gmail address": [ "Conectați adresa Gmail" ], - "Connect to Gmail": [ - "Conectare la Gmail" - ], "Connect to video conferencing": [ "Conectați-vă la conferințe video" ], "Connect your ${ BRAND_NAME } Account": [ "Conectați-vă contul ${ BRAND_NAME }" ], + "Connect your email": [ + "Conectați-vă adresa de e-mail" + ], "Connected": [ "Conectat" ], @@ -363,6 +381,9 @@ "Continue with ${ nameToDisplay } ${ maybeEmailInBrackets }": [ "Continuare cu ${ nameToDisplay } ${ maybeEmailInBrackets }" ], + "Continue with Free": [ + "Continuare cu Free" + ], "Continue with Google": [ "Continuare cu Google" ], @@ -438,6 +459,9 @@ "Create organization": [ "Creare organizație" ], + "Create recovery phrase": [ + "Creare frază de recuperare" + ], "Create users": [ "Creare utilizatori" ], @@ -510,8 +534,8 @@ "Delete record": [ "Ștergere înregistrare" ], - "Delete token ${ token.Account }": [ - "Ștergere cod de acces ${ token.Account }" + "Delete token ${ tokens[0].Account }": [ + "Ștergere cod de acces ${ tokens[0].Account }" ], "Delete token “${ token.Name }”": [ "Ștergere cod de acces „${ token.Name }”" @@ -552,6 +576,9 @@ "Disable categories": [ "Dezactivare categorii" ], + "Disable category": [ + "Dezactivare categorie" + ], "Disable recovery phrase": [ "Dezactivare fraze de recuperare" ], @@ -627,6 +654,9 @@ "Download the desktop app": [ "Descărcați aplicația pentru desktop" ], + "Download updated file": [ + "Descărcare fișier actualizat" + ], "Edit": [ "Editare" ], @@ -699,6 +729,9 @@ "Enable ${ darkWebMonitoring }": [ "Activare ${ darkWebMonitoring }" ], + "Enable category": [ + "Activare categorie" + ], "enable desktop notifications": [ "activare notificări pe desktop" ], @@ -750,6 +783,9 @@ "Filters are being applied. This might take a few minutes.": [ "Se aplică filtrele. Ar putea dura câteva minute." ], + "Finish": [ + "Finalizare" + ], "Fit to window": [ "Potrivire la fereastră" ], @@ -768,6 +804,12 @@ "Generate key": [ "Generare cheie" ], + "Generate missing keys": [ + "Generare chei lipsă" + ], + "Generate new phrase": [ + "Generare frază nouă" + ], "Generate new recovery phrase": [ "Generare frază de recuperare" ], @@ -867,6 +909,9 @@ "Go to ${ planOrAppName }": [ "Accesare ${ planOrAppName }" ], + "Go to domain provider": [ + "Accesați furnizorul domeniului" + ], "Go to label": [ "Accesare etichetă" ], @@ -1185,6 +1230,9 @@ "Reactivate keys": [ "Reactivare chei" ], + "Read the story": [ + "Citiți articolul" + ], "Reconnect": [ "Reconectare" ], @@ -1260,6 +1308,9 @@ "Remove this notification": [ "Eliminare această notificare" ], + "Removed ${ memberName } as group owner": [ + "${ memberName } eliminat ca proprietar de grup" + ], "Rename": [ "Redenumire" ], @@ -1341,12 +1392,18 @@ "Save": [ "Salvare" ], + "Save & exit": [ + "Salvare și ieșire" + ], "Save address": [ "Salvare adresă" ], "Save and continue": [ "Salvare și continuare" ], + "Save and verify": [ + "Salvare și verificare" + ], "Save changes": [ "Salvare modificări" ], @@ -1368,6 +1425,9 @@ "Search settings": [ "Căutare setări" ], + "Secure account": [ + "Cont securizat" + ], "See DNS TXT record": [ "Afișare înregistrare TXT DNS" ], @@ -1549,7 +1609,7 @@ "Nedorite" ], "Start free trial": [ - "Începeți probarea gratuită" + "Începeți evaluarea gratuită" ], "Start import": [ "Pornire importare" @@ -1590,6 +1650,9 @@ "Switch or add account": [ "Schimbare sau adăugare cont" ], + "Switch to free plan": [ + "Comutare la planul gratuit" + ], "Take a tour": [ "Faceți un tur" ], @@ -1755,6 +1818,9 @@ "View recovery settings": [ "Afișare setări de recuperare" ], + "View recovery setup details": [ + "Afișare detalii setare recuperare" + ], "Void": [ "Golire" ], @@ -1764,6 +1830,9 @@ "Void all recovery files?": [ "Anulați toate fișierele de recuperare?" ], + "Watch the interview": [ + "Vizionați interviul" + ], "Welcome": [ "Bun venit" ], @@ -2035,18 +2104,21 @@ ] }, "Admin roles onboarding": { + "2 new admin roles": [ + "Două roluri noi de administrator" + ], "3 new admin roles": [ "3 roluri noi de administrator" ], - "Admin roles": [ - "Roluri de administrator" - ], "Configure security policies, data retention, and VPN infrastructure, and manage audit logs.": [ "Configurați politicile de securitate, păstrarea datelor și infrastructura VPN și gestionați jurnalele de audit." ], "Delegate management by assigning specific admin roles. Give each admin only the access they need. This follows the principle of least privilege, protecting your organization from compromised accounts and accidental errors.": [ "Delegați gestionarea prin atribuirea unor roluri de administrator specifice. Acordați fiecărui administrator doar accesul de care are nevoie. Aceasta respectă principiul privilegiilor minime, protejându-vă organizația de conturi compromise și erori accidentale." ], + "Delegate management for many users at once. Assign specific admin roles to groups for automatic permissions. This follows the principle of least privilege to save time on onboarding and offboarding while reducing errors.": [ + "Delegați gestionarea pentru mai mulți utilizatori simultan. Atribuiți roluri specifice de administrator grupurilor pentru permisiuni automate. Aceasta respectă principiul privilegiilor minime pentru a economisi timp la afiliere și dezafiliere, reducând în același timp erorile." + ], "Delegate management with the appropriate admin role.": [ "Delegați gestionarea cu rolul de administrator corespunzător." ], @@ -2059,21 +2131,15 @@ "New: Control admin access for individual users": [ "Nou: control acces administrator pentru utilizatori individuali" ], - "Organization admin": [ - "Administrator organizație" + "New: Control admin access for many users at once": [ + "Nou: controlați accesul administrativ pentru mai mulți utilizatori simultan." ], "Organization admin:": [ "Administrator organizație:" ], - "Security admin": [ - "Administrator securitate" - ], "Security admin:": [ "Administrator securitate:" ], - "User admin": [ - "Administrator utilizatori" - ], "User admin:": [ "Administrator utilizatori:" ] @@ -2189,10 +2255,10 @@ "Duceți productivitatea mesageriei la un nou nivel. Lăsați ${ BRAND_NAME } Scribe să vă ajute să scrieți, să răspundeți și să vă corectați mesajele de pe e-mail." ], "Trial expires on ${ formattedDate }": [ - "Perioada de probare expiră la ${ formattedDate }" + "Perioada de evaluare expiră la ${ formattedDate }" ], "Trial in progress": [ - "Perioadă de probă în desfășurare" + "Perioadă de evaluare în derulare" ] }, "Attached ics file error": { @@ -2239,16 +2305,16 @@ }, "b2b_trials_2025_Info": { "After the trial ends on ${ formattedDate1 }, it will become a paid subscription that auto-renews every ${ renewCycle } months. You won’t be charged if you cancel before ${ formattedDate2 }.": [ - "După ce perioada de probare se încheie la ${ formattedDate1 }, va deveni un abonament cu plată care se reînnoiește automat la fiecare ${ renewCycle } luni. Nu veți plăti dacă anulați înainte de ${ formattedDate2 }." + "După ce perioada de evaluare se încheie la ${ formattedDate1 }, va deveni un abonament cu plată care se reînnoiește automat la fiecare ${ renewCycle } luni. Nu veți plăti dacă anulați înainte de ${ formattedDate2 }." ], "After the trial ends on ${ formattedDate1 }, it will become a paid subscription that auto-renews monthly. You won’t be charged if you cancel before ${ formattedDate2 }.": [ - "După ce perioada de probare se încheie la ${ formattedDate1 }, va deveni un abonament cu plată care se reînnoiește automat lunar. Nu veți plăti dacă anulați înainte de ${ formattedDate2 }." + "După ce perioada de evaluare se încheie la ${ formattedDate1 }, va deveni un abonament cu plată care se reînnoiește automat lunar. Nu veți plăti dacă anulați înainte de ${ formattedDate2 }." ], "By clicking on \"Try\", you agree to our ${ termsAndConditions }.": [ "Făcând clic pe «Încercare», sunteți de acord cu ${ termsAndConditions }." ], "During the trial period, you can have up to 10 users.": [ - "În perioada de probare, puteți avea până la 10 utilizatori." + "În perioada de evaluare, puteți avea până la 10 utilizatori." ], "free for ${ TRIAL_DURATION_DAYS } days": [ "gratuit timp de ${ TRIAL_DURATION_DAYS } zile" @@ -2263,30 +2329,30 @@ "Încercați-l gratuit timp de ${ TRIAL_DURATION_DAYS } zile" ], "When you cancel, your free trial won’t be converted to a paid subscription, but you can still enjoy plan benefits until the end of the trial period. After that, you will be downgraded to the ${ BRAND_NAME } Free plan.": [ - "Dacă anulați, perioada de probare gratuită nu va fi convertită într-un abonament cu plată, dar vă puteți bucura în continuare de beneficiile planului până la sfârșitul perioadei de probare. După aceea, planul va fi retrogradat la ${ BRAND_NAME } Free." + "Dacă anulați, perioada de evaluare gratuită nu va fi convertită într-un abonament cu plată, dar vă puteți bucura în continuare de beneficiile planului până la sfârșitul perioadei de evaluare. După aceea, planul va fi retrogradat la ${ BRAND_NAME } Free." ], "You can have up to ${ TRIAL_MAX_DEDICATED_IPS } dedicated server during the trial period.": [ - "Puteți avea până la ${ TRIAL_MAX_DEDICATED_IPS } servere dedicate în perioada de probare." + "Puteți avea până la ${ TRIAL_MAX_DEDICATED_IPS } servere dedicate în perioada de evaluare." ], "You can have up to ${ TRIAL_MAX_LUMO_SEATS } ${ LUMO_SHORT_APP_NAME } seats during the trial period.": [ - "Puteți avea până la ${ TRIAL_MAX_LUMO_SEATS } ${ LUMO_SHORT_APP_NAME } licențe în perioada de probare." + "Puteți avea până la ${ TRIAL_MAX_LUMO_SEATS } ${ LUMO_SHORT_APP_NAME } licențe în perioada de evaluare." ], "You can have up to ${ TRIAL_MAX_SCRIBE_SEATS } Scribe seats during the trial period.": [ - "Puteți avea până la ${ TRIAL_MAX_SCRIBE_SEATS } licențe Scribe în perioada de probare." + "Puteți avea până la ${ TRIAL_MAX_SCRIBE_SEATS } licențe Scribe în perioada de evaluare." ], "You can have up to ${ TRIAL_MAX_USERS } users during the trial period.": [ - "Puteți avea până la ${ TRIAL_MAX_USERS } utilizatori în perioada de probare." + "Puteți avea până la ${ TRIAL_MAX_USERS } utilizatori în perioada de evaluare." ], "You cannot add custom domains during the trial period.": [ - "Nu puteți adăuga domenii personale în perioada de probare." + "Nu puteți adăuga domenii personale în perioada de evaluare." ], "You have reached the trial limit.": [ - "Ați atins limita perioadei de probare." + "Ați atins limita perioadei de evaluare." ] }, "b2b_trials_2025_Label": { "Amount due after trial": [ - "Suma datorată după probare" + "Suma datorată după evaluare" ], "Amount due now": [ "Suma datorată acum" @@ -2302,7 +2368,12 @@ }, "b2b_trials_Title": { "Your free trial ends in ${ timeRemaining }": [ - "Perioada de probare se încheie peste ${ timeRemaining }" + "Perioada de evaluare se încheie peste ${ timeRemaining }" + ] + }, + "Badge": { + "Save ${ discountRate }%": [ + "Economisiți ${ discountRate }%" ] }, "Badge for domain": { @@ -2843,15 +2914,66 @@ "${ BRAND_NAME } Migration Assistant": [ "${ BRAND_NAME } Migration Assistant" ], - "Add a custom domain": [ - "Adăugați un domeniu personal" + "${ migratedCount } of ${ providerUsers.length }": [ + "${ migratedCount } din ${ providerUsers.length }" + ], + "**p=none**: do not quarantine or reject unauthorized emails. Usually, people only use this policy to troubleshoot or test.": [ + "**p=none**: nu se pun în carantină sau nu se resping e-mailurile neautorizate. De obicei, se folosește această politică doar pentru depanare sau testare." + ], + "**p=quarantine**: asking the recipient platforms to mark the unauthorized emails as spam or quarantine them.": [ + "**p=quarantine**: solicită platformelor destinatare să marcheze e-mailurile neautorizate ca fiind nedorite sau să le pună în carantină." + ], + "**p=reject**: asking the recipient platforms to reject the unauthorized emails.": [ + "**p=reject**: solicită platformelor destinatare să respingă e-mailurile neautorizate." + ], + "Account connected": [ + "Cont conectat" + ], + "Account disconnected": [ + "Cont deconectat" + ], + "Activated": [ + "Activat" + ], + "Activation link": [ + "Legătura web de activare" + ], + "Activation link copied to clipboard": [ + "Legătura web de activare s-a copiat în memorie." + ], + "Add a domain": [ + "Adăugare domeniu" + ], + "Add domain": [ + "Adăugare domeniu" + ], + "Add users": [ + "Adăugare utilizatori" + ], + "Add users and configure your domain manually for sending and receiving mail. Ideal for small teams starting from a clean slate.": [ + "Adăugați utilizatori și configurați manual domeniul pentru trimiterea și primirea de e-mailuri. Ideal pentru echipe mici care pornesc de la zero." + ], + "Address is already used by a user outside of your organization. Please contact customer support to resolve this": [ + "Adresa este deja utilizată de un utilizator din afara propriei organizații. Contactați serviciul de asistență pentru clienți pentru a rezolva această problemă." + ], + "All": [ + "Toate" + ], + "An unknown error occurred": [ + "A apărut o eroare necunoscută" + ], + "Are you sure you want to proceed? Users who haven't claimed their account before the migration is finalized will need to request a password reset from their ${ BRAND_NAME } organization administrator.": [ + "Sigur doriți să continuați? Utilizatorii care nu și-au revendicat contul înainte de finalizarea migrării vor trebui să solicite o resetare a parolei de la administratorul organizației lor ${ BRAND_NAME }." ], - "App installed": [ - "Aplicație instalată" + "As soon as the accounts are created, you can share the activation link so users can claim their ${ BRAND_NAME } account.": [ + "Imediat ce conturile sunt create, puteți partaja legătura web de activare, astfel încât utilizatorii să își poată accesa contul ${ BRAND_NAME }." ], "Authenticate": [ "Autentificare" ], + "Authenticate to Google Workspace": [ + "Conectați-vă la Google Workspace" + ], "Authenticate your Google Workspace account": [ "Autentificați contul Google Workspace" ], @@ -2861,23 +2983,68 @@ "Change": [ "Modificare" ], + "Choose how you want to bring your team and email setup to ${ BRAND_NAME }.": [ + "Alegeți cum doriți să vă aduceți configurarea echipei și a e-mailului la ${ BRAND_NAME }." + ], + "Choose what to migrate. Your choice will apply to all users. The migration will start after you decide which users to copy.": [ + "Alegeți ce doriți să migrați. Alegerea se va aplica tuturor utilizatorilor. Migrarea va începe după ce decideți ce utilizatori veți copia." + ], "Completed": [ "Completat" ], "Configure": [ "Configurare" ], + "Configure domain": [ + "Configurare domeniu" + ], "Configure migration": [ "Configurare migrare" ], + "Configure your domain": [ + "Configurați-vă domeniul" + ], "Contacts": [ "Contacte" ], + "Continue migration": [ + "Continuare migrare" + ], + "Copy activation link": [ + "Copiere legătură web de activare" + ], + "Copy activation link to clipboard": [ + "Copiere legătură web de activare în memorie" + ], + "Copy the below code and paste it in the DNS section of your domain host. You can find an example and some helpful tips ${ hereHref }.": [ + "Copiați codul de mai jos și lipiți-l în secțiunea DNS a gazdei domeniului. Puteți găsi un exemplu și câteva sfaturi utile ${ hereHref }." + ], + "Creating accounts": [ + "Se creează conturile" + ], + "DKIM adds a digital signature to each email so recipients can verify that the message really came from your domain and was not altered in transit. Without it, messages may be treated as less trustworthy.": [ + "DKIM adaugă o semnătură digitală fiecărui e-mail, astfel încât destinatarii să poată verifica dacă mesajul provine într-adevăr de pe domeniul dvs. și nu a fost modificat în timpul tranzitului. Fără această semnătură, mesajele pot fi tratate ca fiind mai puțin demne de încredere." + ], + "DKIM records": [ + "Înregistrări DKIM" + ], + "DMARC builds on SPF and DKIM by telling receiving servers how to handle messages that fail these checks. It helps protect your domain from impersonation and improves overall delivery reliability.": [ + "DMARC se bazează pe SPF și DKIM, indicând serverelor receptoare cum să gestioneze mesajele care nu reușesc aceste verificări. Acesta ajută la protejarea domeniului împotriva falsificării identității și îmbunătățește fiabilitatea generală a livrării." + ], + "DMARC records": [ + "Înregistrări DMARC" + ], + "Domain added": [ + "Domeniu adăugat" + ], "Domain connected": [ "Domeniu conectat" ], - "Domain ownership verified": [ - "Deținerea domeniului verificată" + "Ensure that your emails reach the inbox, not the spam folder. Updating SPF will allow users to send from ${ BRAND_NAME } and Google simultaneously for the duration of the migration.": [ + "Se asigură că e-mailurile ajung în folderul primite, nu în folderul de mesaje nedorite. Actualizând SPF va permite utilizatorilor să trimită mesaje simultan de la ${ BRAND_NAME } și Google pe durata migrării." + ], + "Errors": [ + "Erori" ], "Estimated size": [ "Mărime estimată" @@ -2885,15 +3052,39 @@ "Failed to load OAuth": [ "Încărcarea OAuth a eșuat" ], + "Finalize migration": [ + "Finalizare migrare" + ], + "Finalize your migration": [ + "Finalizare migrare" + ], + "Finalizing the migration means all your emails will be routed directly to ${ BRAND_NAME }. Users will stop receiving emails on their Google accounts and data will not be synchronized between ${ BRAND_NAME } and Google anymore.": [ + "Finalizarea migrării înseamnă că toate e-mailurile personale vor fi transferate direct către ${ BRAND_NAME }. Utilizatorii nu vor mai primi e-mailuri în conturile lor Google, iar datele nu vor mai fi sincronizate între ${ BRAND_NAME } și Google." + ], + "Find out what can be migrated.": [ + "Aflați ce poate fi migrat." + ], "Finish setting up your business account": [ "Finalizați configurarea contului de afaceri" ], + "Go to Domain names": [ + "Accesare nume de domenii" + ], "Google Marketplace app to copy data to ${ BRAND_NAME }": [ "Aplicația Google Marketplace pentru a copia datele în ${ BRAND_NAME }" ], + "Google Workspace account": [ + "Cont Google Workspace" + ], + "Hang tight, we're setting up user accounts and will start importing user data shortly.": [ + "Așteptați puțin, se configurează conturile de utilizatori și apoi va începe în curând importarea datelor utilizatorilor." + ], "Has errors": [ "Are erori" ], + "Import errors for ${ user.AdminSetName }": [ + "Erori de importare pentru ${ user.AdminSetName }" + ], "In progress": [ "În derulare" ], @@ -2903,14 +3094,20 @@ "Install migration app": [ "Instalare aplicație de migrare" ], - "Learn more about what can be migrated. Learn more": [ - "Aflați mai multe despre ce poate fi migrat. Detalii." + "Install Migration assistant": [ + "Instalați asistentul de migrare" + ], + "Loading your organization data": [ + "Se încarcă datele organizației" ], "Mail": [ "E-mail" ], - "Migrate": [ - "Migrare" + "Managed via ${ registrar.name }": [ + "Gestionat prin ${ registrar.name }" + ], + "Member address not found. Please contact customer support to resolve this": [ + "Adresa membrului nu a fost găsită. Contactați serviciul de asistență pentru clienți pentru a rezolva această problemă." ], "Migrate from Google Workspace": [ "Migrați de la Google Workspace" @@ -2918,6 +3115,12 @@ "Migrate users": [ "Migrare utilizatori" ], + "Migrate users to ${ BRAND_NAME }": [ + "Migrați utilizatori la ${ BRAND_NAME }" + ], + "Migrated": [ + "Migrat" + ], "Migration includes": [ "Migrarea include" ], @@ -2929,8 +3132,35 @@ "Migration status": [ "Stare migrare" ], - "Not started": [ - "Neîncepută" + "Missing organization private key": [ + "Cheia privată a organizației lipsește." + ], + "Missing organization public key": [ + "Cheia publică a organizației lipsește." + ], + "More details": [ + "Detalii" + ], + "Move your users, emails, and settings from Google Workspace automatically. We’ll guide you through connecting your account, verifying your domain, and migrating users securely.": [ + "Mutați-vă automat utilizatorii, adresele de e-mail și setările din Google Workspace. Vă vom ghida în procesul de conectare a contului, verificare a domeniului și migrare a utilizatorilor în siguranță." + ], + "No error details available. Please contact customer support for more information": [ + "Nu sunt disponibile detalii despre eroare. Contactați serviciul de asistență pentru clienți pentru mai multe informații." + ], + "No users to display": [ + "Nu există utilizatori de afișat." + ], + "Not activated": [ + "Neactivat" + ], + "Not confirmed": [ + "Neconfirmat" + ], + "Once users have claimed their ${ BRAND_NAME } account, finalize the migration.": [ + "După ce utilizatorii și-au revendicat contul ${ BRAND_NAME }, finalizați migrarea." + ], + "Once we have confirmed that emails are routed to ${ BRAND_NAME } the migration will be finalized. You will receive a confirmation email to let you know when this happens. This process can take up to 24 hours.": [ + "După ce confirmăm că mesajele sunt direcționate către ${ BRAND_NAME }, migrarea va fi finalizată. Veți primi un e-mail de confirmare care vă va anunța când se întâmplă acest lucru. Acest proces poate dura până la 24 de ore." ], "Organization does not have enough seats available": [ "Organizația nu dispune de suficiente licențe disponibile." @@ -2938,8 +3168,20 @@ "Organization does not have enough storage available": [ "Organizația nu are suficient spațiu de stocare disponibil." ], - "Organization settings": [ - "Setări organizație" + "Pending": [ + "În așteptare" + ], + "Please add the following records in your DNS console of your domain provider:": [ + "Adăugați următoarele înregistrări în consola DNS a furnizorului domeniului:" + ], + "Please leave this window open until we're done creating all the users.": [ + "Lăsați această fereastră deschisă până când se termină de creat toți utilizatorii." + ], + "Please select at least one product to migrate": [ + "Selectați cel puțin un produs pentru migrare." + ], + "Refresh": [ + "Împrospătare" ], "Required": [ "Obligatoriu" @@ -2950,8 +3192,8 @@ "Select at least one user to start a migration": [ "Selectați cel puțin un utilizator pentru a începe o migrare." ], - "Select what you want to migrate, this will apply to all users whether they are created now or later. Migration will start after user accounts are created.": [ - "Selectați ce doriți să migrați. Aceasta se va aplica tuturor utilizatorilor, indiferent dacă sunt creați acum sau mai târziu. Migrarea va începe după ce conturile de utilizator sunt create." + "Select users to migrate": [ + "Selectați utilizatorii pentru migrare" ], "Set up": [ "Configurare" @@ -2959,53 +3201,121 @@ "Set up billing information": [ "Setare date de facturare" ], + "Set up manually": [ + "Setare manuală" + ], + "Set up secure sending (DKIM)": [ + "Configurați trimiterea securizată (DKIM)" + ], + "Set up secure sending (DMARC)": [ + "Configurați trimiterea securizată (DMARC)" + ], + "Set up secure sending (SPF)": [ + "Configurați trimiterea securizată (SPF)" + ], "Set up two-factor authentication": [ "Setare autentificare cu doi factori" ], "Settings": [ "Setări" ], + "Share the activation link to users so they can claim their ${ BRAND_NAME } account.": [ + "Distribuiți legătura web de activare utilizatorilor pentru ca aceștia să își poată accesa contul ${ BRAND_NAME }." + ], "Sign in to Google Workspace": [ "Conectare la Google Workspace" ], + "Size": [ + "Mărime" + ], + "Some accounts are not claimed": [ + "Unele conturi nu sunt revendicate." + ], + "SPF records": [ + "Înregistrări SPF" + ], + "Start migrating": [ + "Pornire migrare" + ], "Start migration": [ "Start migrare" ], "Status": [ "Stare" ], + "The default setting is none. However, to improve your security we recommend setting this value to p=quarantine.": [ + "Setarea implicită este „niciuna”. Totuși, pentru a vă îmbunătăți securitatea, vă recomandăm să setați această valoare cu „p=quarantine”." + ], + "The “p=” value specifies the action to take for emails that fail DMARC. Here are the available actions:": [ + "Valoarea „p=” specifică acțiunea de întreprins pentru e-mailurile care nu acceptă DMARC. Iată acțiunile disponibile:" + ], + "This migration has been completed": [ + "Această migrare a fost finalizată." + ], "To migrate your organization’s data, you need to install the ${ BRAND_NAME } Migration Assistant app from the Google Workspace Marketplace. This will grant permission to ${ BRAND_NAME } to copy your data. After installing it, come back here to continue.": [ "Pentru a vă migra datele organizației, trebuie să instalați aplicația ${ BRAND_NAME } Migration Assistant din Google Workspace Marketplace. Aceasta va acorda permisiunea ca ${ BRAND_NAME } să vă copieze datele. După instalare, reveniți aici pentru a continua." ], - "Transfer errors": [ - "Erori de transfer." + "Update records for receiving": [ + "Actualizare înregistrări pentru primire" ], "User": [ "Utilizator" ], + "User needs to activate their account through the activation link shown above": [ + "Utilizatorul trebuie să își activeze contul prin legătura web de activare afișată mai sus." + ], + "User status": [ + "Stare utilizator" + ], + "Users can use ${ BRAND_NAME } or Google simultaneously for the duration of the migration.": [ + "Utilizatorii pot folosi ${ BRAND_NAME } sau Google simultan pe durata migrării." + ], "Users migrated": [ "Utilizatori migrați" ], + "Verified": [ + "Verificat" + ], + "Verify domain ownership": [ + "Verificare deținere domeniu" + ], "Verify installation": [ "Verificare instalare" ], "Verify your domain": [ "Verificați-vă domeniul" ], - "Verify your domain ownership": [ - "Verificare deținere domeniu" - ], "Verify your domain to start a migration": [ "Verificați domeniul pentru a începe o migrare." ], + "We detected the primary domain linked to your Google Workspace account. Confirm it to continue setting up email for your ${ BRAND_NAME } organization.": [ + "Am detectat domeniul principal conectat la contul Google Workspace. Confirmați-l pentru a continua configurarea e-mailului pentru organizația din ${ BRAND_NAME }." + ], "We were unable to verify the installation, please check that you have installed it in your Google Workspace account and try again.": [ "Nu s-a putut verifica instalarea. Verificați dacă ați instalat-o în contul Google Workspace și reîncercați." ], + "We're still checking the MX records with your domain provider.": [ + "Încă verificăm înregistrările MX cu furnizorul domeniului." + ], + "We've noticed some users have not claimed their ${ BRAND_NAME } accounts.": [ + "Am observat că unii utilizatori nu și-au revendicat conturile ${ BRAND_NAME }." + ], "What are you migrating?": [ "Ce migrați?" ], + "You": [ + "Eu" + ], "You need to grant the permission for ${ BRAND_NAME } to copy your data. After accepting permissions, come back here to continue.": [ "Trebuie să acordați permisiunea ca ${ BRAND_NAME } să vă copieze datele. După acceptarea permisiunilor, reveniți aici pentru a continua." + ], + "You're all set!": [ + "Totul e în regulă!" + ], + "Your current plan allows up to ${ maxMembers } user. To migrate additional users, add more seats to your subscription.": [ + "Planul actual permite maxim ${ maxMembers } utilizator. Pentru a migra utilizatori suplimentari, adăugați mai multe licențe la abonament.", + "Planul actual permite maxim ${ maxMembers } utilizatori. Pentru a migra utilizatori suplimentari, adăugați mai multe licențe la abonament.", + "Planul actual permite maxim ${ maxMembers } de utilizatori. Pentru a migra utilizatori suplimentari, adăugați mai multe licențe la abonament." ] }, "breadcrumb": { @@ -3113,9 +3423,18 @@ ] }, "Button": { + "Add users manually": [ + "Adăugați utilizatori manual" + ], + "Cancel": [ + "Anulare" + ], "Close": [ "Închidere" ], + "Configure your network": [ + "Configurați-vă rețeaua" + ], "Continue using ${ MAIL_APP_NAME }.": [ "Continuare utilizare ${ MAIL_APP_NAME }." ], @@ -3137,6 +3456,12 @@ "Got it": [ "Am înțeles" ], + "Invite your team": [ + "Invitați-vă echipa" + ], + "Manage global VPN permissions": [ + "Gestionare permisiuni globale VPN" + ], "Maybe later": [ "Poate mai târziu" ], @@ -3146,12 +3471,21 @@ "Remind me later": [ "Amintește-mi mai târziu" ], + "Secure your organization": [ + "Securizați-vă organizația" + ], "Send": [ "Trimitere" ], "Set up other features": [ "Setare alte funcții" ], + "Set up SSO": [ + "Configurare SSO" + ], + "Sign in": [ + "Conectare" + ], "Take a tour": [ "Faceți un tur" ] @@ -3753,6 +4087,41 @@ "Dacă" ] }, + "Confirm cancellation": { + "Access is restored once usage is back within limits.": [ + "Accesul este restabilit după ce utilizarea revine în limite." + ], + "Back up photos from your devices": [ + "Conservați fotografiile de pe dispozitive" + ], + "Cancel subscription": [ + "Anulare abonament" + ], + "Confirm cancellation": [ + "Confirmare anulare" + ], + "If you exceed free plan limits, you won't be able to:": [ + "Dacă depășiți limitele planului gratuit, nu veți mai putea să:" + ], + "Keep current plan": [ + "Păstrez planul curent" + ], + "Manage your calendar": [ + "Gestionați-vă calendarul" + ], + "Receive new emails": [ + "Primiți mesaje noi" + ], + "Send emails with attachments": [ + "Trimiteți mesaje cu atașamente" + ], + "Upload any new files": [ + "Încărcare fișiere noi" + ], + "When your subscription ends on ${ endDate }, your account will switch to the Free plan. If your usage exceeds Free plan limits, some features may be temporarily unavailable.": [ + "Când abonamentul expiră la ${ endDate }, contul va trece la planul gratuit. Dacă utilizarea depășește limitele planului gratuit, este posibil ca unele funcții să nu fie disponibile temporar." + ] + }, "Confirm modal title": { "Import is incomplete!": [ "Importarea nu este completă!" @@ -4758,6 +5127,9 @@ "/month": [ "/lună" ], + "/user /month": [ + "/utilizator/lună" + ], "/user per month": [ "/utilizator pe lună" ] @@ -4928,6 +5300,9 @@ ] }, "Description": { + "${ BRAND_NAME }'s end-to-end encryption means only you can unlock your data. Set up recovery options now to ensure you never lose access.": [ + "Criptarea bilaterală de la ${ BRAND_NAME } înseamnă că numai dvs. vă puteți debloca datele. Configurați acum opțiunile de recuperare pentru a vă asigura că nu pierdeți niciodată accesul." + ], "${ DOCS_SHORT_APP_NAME } in ${ DRIVE_APP_NAME } allows you to work together with others in a secure, encrypted environment.": [ "${ DOCS_SHORT_APP_NAME } în ${ DRIVE_APP_NAME } vă permite să lucrați împreună cu alte persoane într-un mediu sigur și criptat." ], @@ -4937,6 +5312,9 @@ "${ MAIL_APP_NAME } is your default mail application.": [ "${ MAIL_APP_NAME } este aplicația de e-mail implicită." ], + "${ MAIL_APP_NAME } keeps your business data secure and lets you send encrypted emails to anyone.": [ + "${ MAIL_APP_NAME } vă păstrează datele companiei în siguranță și vă permite să trimiteți mesaje criptate oricui." + ], "A checked box means the feature is disabled.": [ "O casetă bifată înseamnă că funcția e dezactivată." ], @@ -4958,14 +5336,20 @@ "Automatically sort your incoming messages before they reach your inbox.": [ "Sortați automat mesajele primite înainte ca acestea să vă ajungă în contul de e-mail." ], + "Available storage: ${ storageText }": [ + "Spațiu disponibil: ${ storageText }" + ], "Available with ${ title }": [ "Disponibil cu ${ title }" ], "Block Google's ability to profile you. Gmail can't see what you do in ${ MAIL_APP_NAME }": [ "Blocați capacitatea Google de a vă analiza profilul. Gmail nu poate vedea ce faceți în ${ MAIL_APP_NAME }." ], - "Bring over email, calendar events, and contacts from another provider.": [ - "Importați-vă mesajele, evenimentele din calendar și contactele de la un alt furnizor." + "Bring over your email, calendar events, and contacts from another provider.": [ + "Aduceți-vă mesajele, evenimentele din calendar și contactele de la un alt furnizor." + ], + "Build trust and brand recognition with professional email addresses at your own domain.": [ + "Creați încredere și recunoaștere a mărcii cu adrese de e-mail profesionale de pe propriul domeniu." ], "Configure this first to activate your organization and customize your email address.": [ "Configurați mai întâi aceasta pentru a vă activa organizația și a vă personaliza adresa de e-mail." @@ -4973,6 +5357,9 @@ "Connect your CRM, website, printers, and more.": [ "Conectați-vă CRM-ul, site-ul web, imprimantele și altele." ], + "Create a Gateway to give your users access to your IT resources through dedicated servers.": [ + "Creați o poartă de acces pentru a oferi utilizatorilor acces la resursele IT prin intermediul serverelor dedicate." + ], "Create a Zoom meeting and add joining details to your event with one click.": [ "Creați o întâlnire pe Zoom și adăugați detaliile de conectare la evenimentul dvs. cu un singur clic." ], @@ -4982,9 +5369,15 @@ "Create groups you can email with a single address.": [ "Creați grupuri cărora le puteți trimite mesaje cu o singură adresă." ], + "Create new user accounts or import users with SSO (single sign-on) SCIM provisioning.": [ + "Creați conturi noi de utilizator sau importați utilizatori cu furnizarea SCIM SSO (autentificare unică)." + ], "Create policies to decide who can connect to shared servers in each country.": [ "Creați reguli pentru a decide cine se poate conecta la serverele partajate din fiecare țară." ], + "Decide which users can connect to each of our 120+ shared server locations.": [ + "Decideți care utilizatori se pot conecta la fiecare dintre cele peste 120 de locuri cu servere partajate." + ], "Easily access your email and calendar on desktop and mobile.": [ "Accesați-vă cu ușurință adresa de e-mail și calendarul pe desktop și mobil." ], @@ -5009,6 +5402,9 @@ "Encrypting and importing contacts... This may take a few minutes. When the process is completed, you can close this modal.": [ "Se criptează și se importă contactele... Ar putea dura câteva minute. După finalizarea operației, veți putea închide această fereastră." ], + "Enough room for years of emails, attachments and more.": [ + "Spațiu suficient pentru ani mulți de mesaje, atașamente și altele." + ], "Ensure secure access to organization data, even if your team is remote or using public WiFi.": [ "Asigurați accesarea securizată la datele organizației, chiar dacă echipa este la distanță sau utilizează o rețea Wi-Fi publică." ], @@ -5033,12 +5429,30 @@ "Help your team securely store passwords to sensitive business and client information.": [ "Ajutați-vă echipa să stocheze în siguranță parolele pentru informațiile private despre afaceri și clienți." ], + "How our customer support team got our VPN app directly into people's hands.": [ + "Cum a pus echipa noastră de asistență pentru clienți aplicația noastră VPN direct în mâinile oamenilor." + ], + "How we fought back when ${ BRAND_NAME } was blocked in an aggressive campaign.": [ + "Cum am ripostat când ${ BRAND_NAME } a fost blocat într-o campanie de cenzură agresivă." + ], + "How we supported local activists when privacy and free speech were threatened.": [ + "Cum am susținut activiștii locali atunci când confidențialitatea și libertatea de exprimare au fost amenințate." + ], + "How you unlock your encrypted data if you lose your password.": [ + "Cum deblocați datele criptate dacă vă pierdeți parola." + ], + "If you haven’t already, enable some recovery methods to make sure you never lose access to ${ VPN_APP_NAME }.": [ + "Dacă nu ați făcut-o deja, activați unele metode de recuperare pentru a vă asigura că nu pierdeți niciodată accesul la ${ VPN_APP_NAME }." + ], "It looks like the contact list you are importing contains some groups. Please review how these groups should be imported.": [ "Se pare că lista de contacte pe care o importați conține unele grupuri. Examinați modul în care aceste grupuri ar trebui importate." ], "Keep different parts of your life separate and your inbox organized with additional addresses.": [ "Păstrați diferite părți ale vieții separate și contul de e-mail organizat cu adrese suplimentare." ], + "Keep your team secure on the go with our apps for web, iOS, Android, Windows, Mac, and Linux.": [ + "Păstrați-vă echipa în siguranță din mers cu aplicațiile noastre pentru web, iOS, Android, Windows, Mac și Linux." + ], "Learn more about common problems": [ "Aflați mai multe despre problemele frecvente" ], @@ -5048,6 +5462,9 @@ "Make your email footer your own — showcase your unique brand, not ours.": [ "Personalizați-vă subsolul mesajelor — prezentați-vă marca proprie, nu a noastră." ], + "Methods that include both password reset and data recovery.": [ + "Metode care includ atât resetarea parolei, cât și recuperarea datelor." + ], "Most issues can be solved in a few minutes with our step-by-step guides.": [ "Majoritatea problemelor pot fi rezolvate în câteva minute cu ajutorul ghidurilor noastre pas cu pas." ], @@ -5060,8 +5477,8 @@ "Read, reply, and stay on top of Gmail from within ${ MAIL_APP_NAME }": [ "Citiți, răspundeți și rămâneți deasupra lui Gmail direct din ${ MAIL_APP_NAME }" ], - "Send a code to your recovery email or phone": [ - "Trimitere cod de recuperare pe adresa de e-mail sau numărul de telefon" + "Select which categories you want to add and if you want to receive push notifications for each category.": [ + "Selectați categoriile pe care doriți să le adăugați și dacă doriți să primiți notificări instante pentru fiecare categorie." ], "Set up accounts for all users and invite them to join ${ BRAND_NAME }.": [ "Configurați conturi pentru toți utilizatorii și invitați-i să se alăture la ${ BRAND_NAME }." @@ -5075,6 +5492,9 @@ "Still need help? Our support team is here for you.": [ "Încă aveți nevoie de ajutor? Echipa noastră de asistență este aici să vă ajute." ], + "This allows you to regain access to your ${ BRAND_NAME } account but does not recover your encrypted data.": [ + "Acest lucru vă permite să redobândiți accesul la cont ${ BRAND_NAME }, dar nu vă recuperează datele criptate." + ], "This may happen if permissions were removed or your password changed.": [ "Acest lucru se poate întâmpla dacă permisiunile au fost eliminate sau parola a fost modificată." ], @@ -5104,27 +5524,39 @@ "Track the status and activity of your referrals": [ "Urmăriți starea și activitatea celor recomandați." ], + "Unlock 15 GB of storage for just ${ config.offerPrice }.": [ + "Deblocați 15 GiB de spațiu pentru doar ${ config.offerPrice }." + ], "Upgrade to ${ planName } to connect up to ${ MAX_SYNC_PAID_USER } accounts": [ "Treceți la ${ planName } pentru a conecta până la ${ MAX_SYNC_PAID_USER } conturi." ], "Upgrade to get ${ activatePmUser } for a shorter, easy-to-remember email address in addition to your current one.": [ "Treceți la alt plan pentru a obține adresa ${ activatePmUser } mai scurtă și ușor de reținut pe lângă cea actuală." ], + "Use a recovery method to reset your password": [ + "Folosiți o metodă de recuperare pentru a vă reseta parola." + ], "Use this guide to get your organization promptly benefiting from ${ BRAND_NAME }'s industry-leading encryption and privacy ecosystem.": [ "Utilizați acest ghid pentru ca organizația să beneficieze imediat de criptarea și ecosistemul de confidențialitate maximă oferite de ${ BRAND_NAME } ." ], "We can't access ${ boldEmails } anymore.": [ "Nu mai putem accesa ${ boldEmails }." ], + "We will pause imports at 80% storage to reserve space for new messages.": [ + "Importarea se va opri la 80% din spațiul de stocare pentru a rezerva spațiu pentru mesajele noi." + ], "We'll bring in your old emails and connect your Gmail to ${ MAIL_APP_NAME } so new messages appear automatically": [ "Se vor importa mesajele vechi și se va conecta contul Gmail la ${ MAIL_APP_NAME }, astfel încât mesajele noi să apară automat." ], - "We've started importing your email from Gmail. We'll let you know when it's done.": [ - "S-a început importarea contului de pe Gmail. Vă vom anunța când va fi gata." + "We've started importing your emails from Gmail. We'll let you know when it's done.": [ + "S-a început importarea mesajelor de pe Gmail. Vă vom anunța când va fi gata." ], "We’re sorry to see you go. If you have a moment, we’d really appreciate hearing why you’d like to cancel. Your feedback helps us make ${ BRAND_NAME } better for everyone.": [ "Ne pare rău să vă vedem plecând. Dacă aveți un moment, am aprecia foarte mult să aflăm de ce doriți să anulați. Feedback-ul dvs. ne ajută să facem ${ BRAND_NAME } mai bun pentru toată lumea." ], + "With new email categories, only important messages land in your primary inbox. Categories work just like spam filters. ${ MAIL_APP_NAME } never reads your emails or shares your data.": [ + "Cu noile categorii de mesaje, doar mesajele importante ajung în folderul de mesaje primite. Categoriile funcționează exact ca filtrele de mesaje nedorite. ${ MAIL_APP_NAME } nu vă citește niciodată mesajele și nu vă partajează datele." + ], "You already have a Gmail address forwarding to ${ MAIL_APP_NAME }. Connect it below to send and receive emails directly from ${ MAIL_APP_NAME }.": [ "Aveți deja o adresă Gmail care transferă mesajele către ${ MAIL_APP_NAME }. Conectați-o mai jos pentru a trimite și primi mesaje direct din ${ MAIL_APP_NAME }." ], @@ -5168,6 +5600,12 @@ "You've connected one external account address to ${ MAIL_APP_NAME }.": [ "Ați conectat o adresă de cont externă la ${ MAIL_APP_NAME }." ], + "Your free ${ MAIL_APP_NAME } account comes with limited storage so we'll only import ${ newUserStorageText } of your most recent Gmail messages": [ + "Contul gratuit ${ MAIL_APP_NAME } are un spațiu de stocare limitat, așa că se vor importa doar ${ newUserStorageText } dintre cele mai recente mesaje din Gmail." + ], + "Your free ${ MAIL_APP_NAME } account comes with limited storage so we'll only import your most recent Gmail emails.": [ + "Contul gratuit ${ MAIL_APP_NAME } are un spațiu de stocare limitat, așa că se vor importa doar cele mai recente mesaje din Gmail." + ], "Your plan supports ${ MAX_SYNC_FREE_USER } Gmail address.": [ "Planul actual permite ${ MAX_SYNC_FREE_USER } adresă Gmail.", "Planul actual permite ${ MAX_SYNC_FREE_USER } adrese Gmail.", @@ -5184,6 +5622,11 @@ "folosiți asistentul de importare Easy Switch" ] }, + "Description for domain modal": { + "Duplicate DMARC record found, go to the DNS console of your domain provider to fix it.": [ + "A fost găsită o înregistrare DMARC duplicată. Accesați consola DNS a furnizorului domeniului pentru a o remedia." + ] + }, "Description of the purpose of the import CSV modal": { "Also, we have automatically matched CSV fields with vCard fields. You can review and change this matching manually.": [ "În plus, au fost asociate automat câmpurile CSV cu cele din vCard. Puteți să le examinați și să le asociați manual." @@ -5607,6 +6050,9 @@ "120m": [ "120 m" ], + "15 minutes": [ + "15 minute" + ], "30 minutes": [ "30 de minute" ], @@ -6233,11 +6679,11 @@ "${ user } will not be able to access your account until the next emergency access.": [ "Utilizatorul ${ user } nu vă va putea accesa contul până la următorul acces de urgență." ], - "**${ contact }** is now your recovery contact. They can help you recover your data after a password reset.": [ - "**${ contact }** este acum un contact de recuperare. Acesta vă poate ajuta să vă recuperați datele după o resetare a parolei." + "**${ contact }** is now your recovery contact. They can help you unlock your data after you reset your password.": [ + "**${ contact }** vă este acum propria persoană de contact pentru recuperare. Aceasta vă poate ajuta să vă deblocați datele după ce vă resetați parola." ], "**If they confirm**, click **Approve recovery**. This will unlock their encrypted data.": [ - "**Dacă confirmă**, faceți clic pe **Aprobare recuperare**. Acest lucru le va debloca datele criptate." + "**Dacă confirmă**, faceți clic pe **Aevaluare recuperare**. Acest lucru le va debloca datele criptate." ], "**If they didn’t request your help**, it is possible that someone else is trying to access their account. In that case, ignore this request.": [ "**Dacă nu v-au solicitat ajutorul**, este posibil ca altcineva să încerce să vă acceseze contul. În acest caz, ignorați această solicitare." @@ -6263,12 +6709,21 @@ "Add": [ "Adăugare" ], + "Add 1 more": [ + "Adăugare încă unul" + ], "Add emergency contact": [ "Adăugați o persoană de contact în caz de urgență" ], + "Add option": [ + "Adăugare opțiune" + ], "Add recovery contact": [ "Adăugare contact de recuperare" ], + "Add recovery method": [ + "Adăugare metodă de recuperare" + ], "Added on ${ formattedDate }": [ "Adăugat la ${ formattedDate }" ], @@ -6311,6 +6766,9 @@ "Contacts": [ "Contacte" ], + "Data recovery contacts": [ + "Contacte pentru recuperarea datelor" + ], "Data successfully recovered. You can now decrypt your existing data and encrypted files.": [ "Recuperarea datelor a reușit. Acum puteți decripta datele existente și fișierele criptate." ], @@ -6356,6 +6814,12 @@ "Enable auto-renew": [ "Activare reînnoire automată" ], + "Enter your extra password": [ + "Introduceți parola suplimentară" + ], + "Explore plans": [ + "Explorare planuri" + ], "For ${ email }": [ "Pentru ${ email }" ], @@ -6386,11 +6850,10 @@ "Less than a minute left": [ "Mai puțin de un minut rămas" ], - "Let ${ user } know it’s really you trying to regain access.": [ - "Anunțați-l pe ${ user } că sunteți persoana care încearcă să recupereze accesul." - ], - "None": [ - "Niciuna" + "Maximum of ${ limit } contact reached. To change, remove a contact and add a new one.": [ + "S-a atins limita maximă de ${ limit } contact. Pentru modificare, eliminați un contact și adăugați altul.", + "S-a atins limita maximă de ${ limit } contacte. Pentru modificare, eliminați un contact și adăugați altul.", + "S-a atins limita maximă de ${ limit } de contacte. Pentru modificare, eliminați un contact și adăugați altul." ], "Only ": [ "Doar " @@ -6482,14 +6945,11 @@ "Select recovery contact ${ name }": [ "Selectare contact de recuperare ${ name }" ], - "Send email request": [ - "Trimitere cerere de e-mail" - ], "Send recovery request": [ "Trimite solicitare de recuperare" ], - "Set account recovery": [ - "Setare recuperare cont" + "Start recovery": [ + "Începeți recuperarea" ], "Stop being recovery contact": [ "Încetați să mai fiți contact de recuperare" @@ -6509,9 +6969,15 @@ "They added me as trusted contact. I can access their account in case of an emergency.": [ "M-au adăugat ca persoană de contact de încredere. Le pot accesa contul în caz de urgență." ], + "They added you as trusted contact. You can access their account in case of an emergency.": [ + "V-au adăugat ca persoană de contact de încredere. Le puteți accesa contul în caz de urgență." + ], "They may ask to access my account in case of an emergency.": [ "S-ar putea să vă solicite să vă acceseze contul în caz de urgență." ], + "They may ask to access your account in case of an emergency.": [ + "S-ar putea să vă solicite să vă acceseze contul în caz de urgență." + ], "They will receive access automatically in **${ days } day**, on **${ formattedAccessibleAt }**, you can reject their request or give them access immediately at any time.": [ "I se va acorda acces automat peste **${ days } zi**, la **${ formattedAccessibleAt }**. Îi puteți respinge solicitarea sau îi puteți acorda acces imediat oricând.", "Li se va acorda acces automat peste **${ days } zi**, la **${ formattedAccessibleAt }**. Le puteți respinge solicitarea sau le puteți acorda acces imediat oricând.", @@ -6529,6 +6995,9 @@ "Time required before automatically granting them access": [ "Timp necesar înainte de a le acorda automat accesul." ], + "To add recovery contacts, you must have a recovery email address or phone number.": [ + "Pentru a adăuga contacte de recuperare, trebuie să aveți o adresă de e-mail sau un număr de telefon pentru recuperare." + ], "To disable this recovery method, remove all your recovery contacts.": [ "Pentru a dezactiva această metodă de recuperare, eliminați toate contactele de recuperare." ], @@ -6538,6 +7007,9 @@ "Unable to recover data": [ "Datele nu se pot recupera" ], + "Unlock ${ PASS_APP_NAME }": [ + "Deblocare ${ PASS_APP_NAME }" + ], "Upgrade": [ "Modernizare" ], @@ -6559,6 +7031,9 @@ "We received a request to unlock the encrypted data of your contact **${ user }**.": [ "S-a primit o cerere de deblocare a datelor criptate ale contactului **${ user }**." ], + "We sent an email request to ${ user }. Let them know it's really you trying to regain access.": [ + "S-a trimis o solicitare prin e-mail către ${ user }. Spuneți-i că într-adevăr sunteți persoana care încearcă să redobândească accesul la cont." + ], "We were not able to verify the recovery data. Proceed anyway?": [ "Nu s-a putut verifica datele de recuperare. Doriți să continuați oricum?" ], @@ -6892,6 +7367,9 @@ "Invalid invitation link": [ "Legătura de invitație nu este validă." ], + "Invalid joining link. Please contact your administrator.": [ + "Legătură web de participare nevalidă. Contactați administratorul." + ], "Invalid name": [ "Nume nevalid" ], @@ -7070,9 +7548,6 @@ "Please try again in a few moments.": [ "Mai încercați peste câteva momente." ], - "Please upgrade to a business plan with more than 1 user to get multi-user support": [ - "Treceți la un plan de afaceri cu mai mult de un utilizator pentru a folosi mai mulți utilizatori." - ], "Please upgrade to a business plan with more than 1 user to manage multiple users.": [ "Migrați la un plan de afaceri cu mai mult de un utilizator pentru a destiona mai mulți utilizatori." ], @@ -7216,6 +7691,9 @@ "There are too many folders in your external account. Please customize the import to delete some folders.": [ "Aveți prea multe foldere în contul extern. Modificați opțiunile de importare pentru a șterge unele foldere." ], + "There was an error, please try again.": [ + "A apărut o eroare. Reîncercați." + ], "This field exceeds the maximum of ${ maximumLength } characters.": [ "Acest câmp depășește maximul de ${ maximumLength } de caractere." ], @@ -7499,6 +7977,9 @@ "Ask your administrator to enable Account monitor.": [ "Rugați administratorul să vă activeze monitorizarea contului." ], + "Enable account monitor to start loading event.": [ + "Activați monitorizarea contului pentru a începe încărcarea evenimentului." + ], "Error: ${ errorMessage }": [ "Eroare: ${ errorMessage }" ], @@ -7752,7 +8233,7 @@ "Grupuri ${ BRAND_NAME }" ], "*Only one free trial per user. Regular pricing applies thereafter.": [ - "* Doar o singură perioadă de probare per utilizator. După aceea se aplică prețul standard." + "* Doar o singură perioadă de evaluare per utilizator. După aceea se aplică prețul standard." ], "Accounts with custom domains cannot join a family plan.": [ "Conturile cu domenii personale nu se pot alătura unui plan de familie." @@ -7822,7 +8303,7 @@ "Abonamentul va fi facturat administratorului principal al acestui plan." ], "To ease the transition, we’re giving you a 30-day free trial of ${ BRAND_NAME } Unlimited*.": [ - "Pentru a vă ușura tranziția, vă oferim o perioadă de probare de 30 de zile pentru ${ BRAND_NAME } Unlimited.*" + "Pentru a vă ușura tranziția, vă oferim o perioadă de evaluare de 30 de zile pentru ${ BRAND_NAME } Unlimited.*" ], "View the invitation": [ "Afișare invitație", @@ -7887,13 +8368,13 @@ }, "familyOffer_2023:Info": { "*Only one free trial per user. Regular pricing applies thereafter.": [ - "* Doar o singură perioadă de probare per utilizator. După aceea se aplică prețul standard." + "* Doar o singură perioadă de evaluare per utilizator. După aceea se aplică prețul standard." ], "After leaving your plan, this user will be moved to a ${ BRAND_NAME } Free plan.": [ "După părăsirea planului, acest utilizator va fi mutat la un plan ${ BRAND_NAME } Free." ], "After leaving your plan, this user will be moved to a ${ BRAND_NAME } Unlimited plan with a 30-day free trial.*": [ - "După ce vă va părăsi planul actual, acest utilizator va fi mutat la planul ${ BRAND_NAME } Unlimited cu o perioadă de probare de 30 de zile.*" + "După ce vă va părăsi planul actual, acest utilizator va fi mutat la planul ${ BRAND_NAME } Unlimited cu o perioadă de evaluare de 30 de zile.*" ], "Assign storage to the administrator account. You can distribute storage for additional users later on.": [ "Alocați spațiu de stocare contului de administrator. Puteți distribui spațiul pentru utilizatorii suplimentari mai târziu." @@ -8010,11 +8491,38 @@ ] }, "Feature": { + "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME } desktop app": [ + "Aplicație desktop ${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME }" + ], "${ MaxVPN } VPN connection": [ "O conexiune VPN", "${ MaxVPN } conexiuni VPN", "${ MaxVPN } de conexiuni VPN" ], + "${ PROTON_SENTINEL_NAME } account protection": [ + "Protecție cont cu ${ PROTON_SENTINEL_NAME }" + ], + "10+ premium features": [ + "Peste 10 funcții premium" + ], + "15 GB storage": [ + "15 GiB spațiu de stocare" + ], + "3 email domains": [ + "3 domenii de e-mail" + ], + "3 folders, labels and filters": [ + "3 foldere, etichete și filtre" + ], + "500 GB storage": [ + "500 GiB spațiu de stocare" + ], + "500 MB Mail storage": [ + "500 MiB spațiu pentru Mail" + ], + "500 MB storage": [ + "500 MiB spațiu de stocare" + ], "Access to all countries": [ "Acces la toate ţările" ], @@ -8034,29 +8542,56 @@ "Continue": [ "Continuare" ], - "Encrypted cloud storage for files, photos and documents": [ - "Stocare în cloud criptată pentru fișiere, fotografii și documente." - ], + "Custom email domain": [ + "Domeniu personal de e-mail" + ], + "Email addresses": [ + "Adrese de e-mail" + ], + "Encrypted cloud storage for files, photos and documents": [ + "Stocare în cloud criptată pentru fișiere, fotografii și documente." + ], "Fastest VPN servers": [ "Cele mai rapide servere VPN" ], "More premium features": [ "Mai multe funcții premium" ], + "Premium features in Mail, Calendar, Drive, Pass and VPN": [ + "Funcții premium în Mail, Calendar, Drive, Pass și VPN" + ], + "Priority support": [ + "Asistență prioritară" + ], "Remove": [ "Eliminare" ], + "Schedule and snooze emails": [ + "Programați și amânați mesajele" + ], "Secure Core servers": [ "Servere Secure Core" ], "Secure streaming support": [ "Suport securizat transmisii live" ], + "Short domain @pm.me": [ + "Domeniu scurt @pm.me" + ], + "Storage": [ + "Spațiu de stocare" + ], "Torrenting support (P2P)": [ "Suport torente (P2P)" ], + "Unlimited folders, labels and filters": [ + "Foldere, etichete și filtre nelimitate" + ], "Unlimited hide-my-email aliases": [ "Aliasuri hide-my-email nelimitate" + ], + "Use your own email domain": [ + "Utilizați propriul domeniu de e-mail" ] }, "Features": { @@ -8418,8 +8953,11 @@ ] }, "Force upgrade safety review": { - "I understand that I will no longer be able to sign in to older versions of ${ BRAND_NAME } mobile apps.": [ - "Înțeleg că nu mă voi mai putea conecta în versiunile mai vechi ale aplicațiilor mobile ${ BRAND_NAME }." + "I understand that I will no longer be able to sign in to older versions of ${ BRAND_NAME } apps.": [ + "Înțeleg că nu mă voi mai putea conecta în versiunile mai vechi ale aplicațiilor ${ BRAND_NAME }." + ], + "Learn more": [ + "Detalii" ] }, "Form heading": { @@ -8520,6 +9058,9 @@ ], "Group address:": [ "Adresă grup:" + ], + "Roles and permission:": [ + "Roluri și permisiuni" ] }, "Group member count": { @@ -8580,6 +9121,14 @@ "Apartenența la grup" ] }, + "group_modal": { + "General": [ + "Generale" + ], + "Roles and permissions": [ + "Roluri și permisiuni" + ] + }, "Header": { "Access": [ "Accesare" @@ -9229,6 +9778,15 @@ "${ boldWarning } You will lose access to all current encrypted data in your account if you continue.": [ "${ boldWarning } Veți pierde accesul la toate datele actuale criptate din cont dacă continuați." ], + "${ BRAND_NAME } Business plans gives your team all the collaboration tools they need to be productive and organized in their work, while safeguarding your business.": [ + "Planurile ${ BRAND_NAME } Business vă oferă echipei toate instrumentele de colaborare de care are nevoie pentru a fi productivă și organizată în activitatea sa, protejându-vă în același timp afacerea." + ], + "${ BRAND_NAME } Free": [ + "${ BRAND_NAME } Free" + ], + "${ BRAND_NAME } is independently funded and operates without advertising. Below are examples of how this independence has been used in practice.": [ + "${ BRAND_NAME } este finanțat independent și operează fără publicitate. Mai jos sunt exemple despre cum a fost folosită această independență în practică." + ], "${ BRAND_NAME } is privacy you can trust, ensured by strong encryption, open-source code, and Swiss privacy laws. We believe nobody should be able to exploit your data, period. Our technology and business are based upon this fundamentally stronger definition of privacy.": [ "${ BRAND_NAME } este confidențialitatea în care puteți avea încredere, asigurată prin criptare puternică, cod cu sursă publică și legi elvețiene privind confidențialitatea. Credem că nimeni nu ar trebui să vă poată exploata datele, punct. Tehnologia și afacerile noastre se bazează pe această definiție fundamental mai puternică a vieții private." ], @@ -9241,6 +9799,9 @@ "${ BRAND_NAME } will send a verification code to ${ phoneNumber }. Standard message rates may apply.": [ "${ BRAND_NAME } va trimite un cod de verificare la ${ phoneNumber }. Se pot aplica tarife standard pentru mesaje." ], + "${ BRAND_NAME } will send a verification code to your recovery phone. Standard message rates may apply.": [ + "${ BRAND_NAME } va trimite un cod de verificare la numărul de recuperare. Se pot aplica tarife standard pentru mesaje." + ], "${ BRAND_NAME }'s encryption technology means that nobody can access your password - not even us.": [ "Tehnologia de criptare ${ BRAND_NAME } semnifică faptul că nimeni nu vă poate accesa parola - nici măcar noi." ], @@ -9336,6 +9897,9 @@ "${ name } for Windows": [ "${ name } pentru Windows" ], + "${ name } is not available": [ + "${ name } este disponibilă" + ], "${ none }: do not quarantine or reject unauthorized emails. Usually, people only use this policy to troubleshoot or test.": [ "${ none }: nu se pun în carantină sau nu se resping e-mailurile neautorizate. De obicei, se folosește această politică doar pentru depanare sau testare." ], @@ -9473,6 +10037,9 @@ "${ vaultLink } updated": [ "S-a actualizat ${ vaultLink }" ], + "${ VPN_SHORT_APP_NAME } hides your traffic. ${ PASS_SHORT_APP_NAME } hides your identity\n— unlimited **hide-my-email aliases** and **dark-web alerts** if your data is ever leaked.": [ + "${ VPN_SHORT_APP_NAME } vă ascunde traficul. ${ PASS_SHORT_APP_NAME } vă ascunde identitatea — **aliasuri de tip „hide-my-email”** nelimitate și **alerte de pe internetul ascuns** în cazul în care datele vă sunt vreodată divulgate." + ], "${ vpnPlus } required for Country level connection.": [ "Trebuie ${ vpnPlus } pentru conexiunea la nivel de țară." ], @@ -9511,6 +10078,9 @@ "(formerly Twitter)": [ "(fost Twitter)" ], + "**${ appName }** is not available for your account.": [ + "**${ appName }** nu este disponibilă pentru acest cont." + ], "**${ appName }** is not supported in your organization **${ organizationName }**.": [ "**${ appName }** nu este suportată în organizația **${ organizationName }**." ], @@ -9553,9 +10123,15 @@ "**This will disable end-to-end encrypted email forwardings:** you can set them up again later.": [ "**Aceasta va dezactiva transferurile mesajelor criptate bilateral:** le veți putea configura din nou mai târziu." ], + "**Your recovery email alone doesn't allow you to recover your encrypted data** after you reset your password.": [ + "**Doar adresa de e-mail de recuperare nu vă permite să recuperați datele criptate** după ce vă resetați parola." + ], "**Your recovery methods will be invalidated:** you can generate new recovery data later.": [ "**Metodele de recuperare vor fi invalidate:** puteți genera noile date de recuperare mai târziu." ], + "**Your recovery phone alone doesn’t allow you to recover your encrypted data** after you reset your password.": [ + "**Doar numărul de telefon de recuperare nu vă permite să recuperați datele criptate** după ce vă resetați parola." + ], "+ ${ invisibleCount } More": [ "+ ${ invisibleCount } Mai multe", "+ ${ invisibleCount } Mai multe", @@ -9623,15 +10199,27 @@ "Activity Monitor": [ "Monitorizare activitate" ], + "Add ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }": [ + "Adăugați ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }" + ], "Add ${ PLAN_NAMES[PLANS.MEET_BUSINESS] }": [ "Adăugare ${ PLAN_NAMES[PLANS.MEET_BUSINESS] }" ], + "Add 1 to 5 people who you trust and can contact easily. They will be able to reset your password for you by signing in to your account. They must already have a ${ BRAND_NAME } Account.": [ + "Adaugă 1 până la 5 persoane în care aveți încredere și pe care le puteți contacta cu ușurință. Acestea vă vor putea reseta parola conectându-se la contul dvs. Trebuie să aibă deja un cont ${ BRAND_NAME }." + ], "Add a @pm.me email address to your account. This simple, shorter domain stands for \"${ MAIL_APP_NAME } me\" or \"Private Message me.\"": [ "Adăugați-vă o adresă de e-mail @pm.me în cont. Acest domeniu simplu, mai scurt, înseamnă „${ MAIL_APP_NAME }-ul meu” sau „Mesaj privat mie”." ], + "Add a phone number in case we need to contact you": [ + "Adăugați un număr de telefon în caz că trebuie să vă contactăm" + ], "add a recovery method": [ "adăugat o metodă de recuperare" ], + "Add an email address in case we need to contact you": [ + "Adăugați o adresă de e-mail în caz că trebuie să vă contactăm" + ], "Add another layer of security to your account. You’ll need to verify yourself with 2FA every time you sign in.": [ "Aceasta adaugă un nivel suplimentar de protecție contului. Va trebui să folosiți autentificarea cu doi factori de fiecare dată când vă conectați." ], @@ -9661,10 +10249,10 @@ "Add your name and logo to create a more personalized experience for your organization.": [ "Adăugați-vă numele sau logoul pentru a crea o experiență mai personalizată pentru organizație." ], - "Adding ${ addedServerCount } gateway server": [ - "Servere poartă de acces care se adaugă: ${ addedServerCount }", - "Servere poartă de acces care se adaugă: ${ addedServerCount }", - "Servere poartă de acces care se adaugă: ${ addedServerCount }" + "Adding ${ total } gateway server": [ + "Se adaugă porți de acces servere: ${ total }", + "Se adaugă porți de acces servere: ${ total }", + "Se adaugă porți de acces servere: ${ total }" ], "Adding an external email address will disable end-to-end encryption for all email communication within that group. Do you want to proceed?": [ "Adăugarea unei adrese de e-mail externe va dezactiva criptarea bilaterală pentru toate mesajele prin e-mail în cadrul acestui grup. Doriți să continuați?" @@ -9739,6 +10327,12 @@ "Allow users to connect to secure shared servers from the **Countries** section of the ${ VPN_APP_NAME } app.": [ "Permite utilizatorilor să se conecteze la serverele securizate partajate din secțiunea **Țări** a aplicației ${ VPN_APP_NAME }." ], + "Allowing QR code sign-in will let you sign in by scanning a QR code if you forget your password. All you need is to be signed in to a ${ BRAND_NAME } service on another device.": [ + "Permiterea conectării prin cod QR vă va permite să vă conectați scanând un cod QR dacă vă uitați parola. Trebuie doar să aveți o conexiune la un serviciu ${ BRAND_NAME } pe un alt dispozitiv." + ], + "Allowing the password reset from the settings lets you to change your password if you’ve lost it, but are still signed in to ${ BRAND_NAME }.": [ + "Permiterea resetării parolei din setări vă permite să o schimbați dacă ați pierdut-o, dar sesiunea rămâne conectată la ${ BRAND_NAME }." + ], "Already allocated": [ "Deja alocat" ], @@ -9844,6 +10438,9 @@ "Are you sure you want to revoke certificate **${ name }**": [ "Sigur doriți să anulați certificatul **${ name }**?" ], + "Are you sure you want to sign out of this account?": [ + "Sigur doriți să vă deconectați de la acest cont?" + ], "Are you sure you want to sort your folders alphabetically?": [ "Sortați folderele alfabetic?" ], @@ -9863,7 +10460,7 @@ "Trebuie să fie activă cel puțin o aplicație" ], "At the end of your trial ${ boldCancelDate }, you’ll be downgraded to ${ boldProtonFree }. All user accounts will be removed from your organization.": [ - "La sfârșitul perioadei de probare ${ boldCancelDate }, contul va fi retrogradat la ${ boldProtonFree }. Toate conturile de utilizator vor fi eliminate din organizație." + "La sfârșitul perioadei de evaluare ${ boldCancelDate }, contul va fi retrogradat la ${ boldProtonFree }. Toate conturile de utilizator vor fi eliminate din organizație." ], "Attention required": [ "Necesită atenție" @@ -9940,9 +10537,18 @@ "Before you can start sending and receiving emails from your new addresses you need to create encryption keys for them.": [ "Înainte de a putea începe trimiterea și primirea de mesaje cu noua adresă va trebui să creați o cheie de criptare pentru ele." ], + "BEST FOR TV": [ + "CEL MAI BUN PENTRU TV" + ], "Beta": [ "Beta" ], + "Billed at ${ monthlyDiscountedPrice } for the first 6 months, renews at ${ monthlyRenewalPrice }.": [ + "Facturat cu ${ monthlyDiscountedPrice } pentru primele 6 luni, se reînnoiește cu ${ monthlyRenewalPrice }." + ], + "Billed at ${ yearlyDiscountedPrice } for the first 12 months, renews at ${ yearlyRenewalPrice }.": [ + "Facturat cu ${ yearlyDiscountedPrice } pentru primele 12 luni, se reînnoiește cu ${ yearlyRenewalPrice }." + ], "Billing cycle: ${ text }": [ "Ciclu facturare: ${ text }" ], @@ -9952,6 +10558,9 @@ "Boost your organization’s brand identity and create a more consistent online experience for your users.": [ "Îmbunătățiți-vă identitatea de brand a organizației proprii și creați o experiență online mai consistentă pentru utilizatorii acesteia." ], + "By adding people you trust as recovery contacts, we'll be able to send them an email to help you if you're having trouble recovering your data after a password reset. You can also be a recovery contact for others.": [ + "Prin adăugarea persoanelor de încredere ca și contacte de recuperare, le vom putea trimite un e-mail pentru a vă ajuta dacă întâmpinați probleme la recuperarea datelor după o resetare a parolei. Puteți fi, de asemenea, un contact de recuperare pentru alții." + ], "By creating a ${ PASS_APP_NAME } account with your SimpleLogin email, you can manage your aliases directly from ${ PASS_APP_NAME }.": [ "Prin crearea unui cont ${ PASS_APP_NAME } cu adresa de e-mail SimpleLogin, vă puteți gestiona aliasurile direct din ${ PASS_APP_NAME }." ], @@ -9994,9 +10603,6 @@ "Change your password": [ "Modificare parolă" ], - "Check the status of imports and forwarding.": [ - "Consultați starea importărilor și transferărilor." - ], "Check your network and try again.": [ "Verificați rețeaua și reîncercați." ], @@ -10030,6 +10636,9 @@ "CNET editors choice award with a rating of 8.4 out of 10": [ "Premiul pentru alegerea editorilor CNET cu o evaluare de 8,4 din 10" ], + "Code has been re-sent.": [ + "Codul a fost retrimis." + ], "Coming soon": [ "În curând" ], @@ -10045,6 +10654,9 @@ "Configure SAML authentication for your organization through an identity provider like Okta, Microsoft Azure, or Google Identity Platform. This will enable SAML for the whole organization.": [ "Configurați autentificarea SAML pentru organizația proprie printr-un furnizor de identitate precum Okta, Microsoft Azure sau Platforma de identitate Google. Acest lucru va activa SAML pentru întreaga organizație." ], + "Connect and manage your external mailboxes in ${ MAIL_APP_NAME }.": [ + "Conectați-vă și gestionați-vă conturile externe de e-mail în ${ MAIL_APP_NAME }." + ], "Connection data will be available in around 1 hour.": [ "Datele de conectare vor fi disponibile peste aproximativ o oră." ], @@ -10063,6 +10675,9 @@ "Continue to connect this entity with your ${ BRAND_NAME } organization.": [ "Continuare conectare această entitate cu organizația din ${ BRAND_NAME }." ], + "Continue with ${ BRAND_NAME } Free": [ + "Continuare cu ${ BRAND_NAME } Free" + ], "Continuing will connect your ${ BRAND_NAME } Account to ${ name }.": [ "Continuând contul ${ BRAND_NAME } se va conecta la ${ name }." ], @@ -10104,10 +10719,10 @@ "Create a new code on your TV and try again.": [ "Creați un cod nou pe televizorul și reîncercați." ], - "Create a secure cloud for ${ value } member": [ - "Creați un cont în cloud securizat pentru ${ value } membru", - "Creați un cont cloud securizat pentru ${ value } membri", - "Creați un cont cloud securizat pentru ${ value } de membri" + "Create a secure cloud for ${ memberCount } member": [ + "Creați un cont în cloud securizat pentru ${ memberCount } membru", + "Creați un cont cloud securizat pentru ${ memberCount } membri", + "Creați un cont cloud securizat pentru ${ memberCount } de membri" ], "Create an account": [ "Creați un cont" @@ -10126,6 +10741,11 @@ "Creare server poartă de acces: ${ serverNumber }/${ total }", "Creare server poartă de acces: ${ serverNumber }/${ total }" ], + "Creating gateway with ${ total } server": [ + "Se creează o poartă de acces cu ${ total } server", + "Se creează o poartă de acces cu ${ total } servere", + "Se creează o poartă de acces cu ${ total } de servere" + ], "Creating your account": [ "Creare cont" ], @@ -10174,6 +10794,9 @@ "Data recoverable with recovery phrase": [ "Date recuperabile cu fraza de recuperare" ], + "Data recovery requires a password reset option (email or SMS)": [ + "Recuperarea datelor necesită o opțiune de resetare a parolei (e-mail sau SMS)." + ], "dedicated servers": [ "servere dedicate" ], @@ -10221,6 +10844,9 @@ "Disabling authenticator app 2FA will make your account less secure. Only proceed if absolutely necessary.": [ "Dezactivarea aplicației de autentificare A2F vă va face contul mai puțin sigur. Continuați doar dacă este absolut necesar." ], + "Disabling the data backup on this device will prevent you from automatically unlocking your encrypted data after a password reset.": [ + "Dezactivarea copiei de rezervă a datelor pe acest dispozitiv vă va împiedica să deblocați automat datele criptate după resetarea parolei." + ], "Discount": [ "Reducere" ], @@ -10382,6 +11008,9 @@ "Enabling recovery by phrase again will generate a new recovery phrase.": [ "Activând din nou fraza de recuperare se va genera o nouă fraza de recuperare." ], + "Enabling the data backup on this device will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset, simply by signing in on this device.": [ + "Activarea conservării datelor pe acest dispozitiv va restabili accesul la e-mailuri, contacte, fișiere, parole și orice alte date criptate din cont după resetarea parolei, pur și simplu prin conectarea pe acest dispozitiv." + ], "Encryption setting updated": [ "Setările de criptare s-au actualizat." ], @@ -10553,12 +11182,12 @@ "For easy access to your passwords and more.": [ "Pentru acces ușor la parole și alte informații." ], + "For just ${ bundlePlanPriceInline }": [ + "Pentru doar ${ bundlePlanPriceInline }" + ], "For users who are switching to ${ MAIL_APP_NAME } from another email service, select the ${ boldAddresses } tab and add all active email addresses before changing the MX record to ensure a smooth transition.": [ "Pentru utilizatorii care trec la ${ MAIL_APP_NAME } de la un alt serviciu de e-mail, selectați fila ${ boldAddresses } și adăugați toate adresele de e-mail active înainte de a schimba înregistrarea MX pentru a asigura o tranziție ușoară." ], - "Forwarding automatically sends new incoming emails to your Inbox.": [ - "Transferarea vă trimite automat mesajele noi primite în contul personal." - ], "Free forever": [ "Gratuit pentru totdeauna" ], @@ -10586,6 +11215,9 @@ "Gateways": [ "Porți de acces" ], + "Generating a new recovery phrase will deactivate your current recovery phrase.": [ + "Generarea unei noi fraze de recuperare va dezactiva fraza de recuperare curentă." + ], "Generating a new recovery phrase will deactivate your old one.": [ "Generarea unei fraze de recuperare o va dezactiva pe cea veche." ], @@ -10607,12 +11239,18 @@ "Get notified if your password or other personal data was leaked. ${ learnMoreLinkNoBreach }": [ "Primiți notificări dacă parola sau alte date personale v-au fost divulgate. ${ learnMoreLinkNoBreach }" ], + "Get started": [ + "Să începem" + ], "Get started with the referral link above.": [ "Începeți cu legătura web de recomandate de mai sus." ], "Get visibility into account access": [ "Obțineți vizibilitate asupra accesării contului" ], + "Get VPN Plus": [ + "Luați VPN Plus" + ], "Give the token a descriptive name, such as the service you plan to use it with, and select one of your active custom domain addresses. Only this address will be able to send emails with this token.": [ "Dați un nume descriptiv codului de acces, cum ar fi serviciul pe care urmați să-l folosiți și selectați una din adresele de domeniu personale active. Numai această adresă va putea trimite mesaje cu acest cod de acces." ], @@ -10670,6 +11308,12 @@ "If another administrator changed this password, you will need to ask them for the new Organization Password.": [ "Dacă un alt administrator a schimbat această parolă, va trebui să-i solicitați noua parolă a organizației." ], + "If disabled, ${ BRAND_NAME } will still use your recovery email to send security notifications.": [ + "Dacă este dezactivat, ${ BRAND_NAME } va folosi în continuare adresa de e-mail de recuperare pentru a trimite notificări de securitate." + ], + "If disabled, ${ BRAND_NAME } will still use your recovery phone to send security notifications.": [ + "Dacă este dezactivat, ${ BRAND_NAME } va folosi în continuare numărul de telefon de recuperare pentru a trimite notificări de securitate." + ], "If disabled, only administrators will be able to export data.": [ "Dacă e dezactivată, doar administratorii vor putea să exporte date." ], @@ -10748,6 +11392,9 @@ "If you purchased a gift code or received one from our support team, you can enter it here.": [ "Dacă ați cumpărat un cod cadou sau ați primit unul de la echipa de suport, îl puteți folosi aici." ], + "If you recently reset your password, you can ${ recoveryMethodLink } to unlock your data. If this is due to an old password reset, you can stop the message from showing again.": [ + "Dacă v-ați resetat recent parola, puteți folosi ${ recoveryMethodLink } pentru a vă debloca datele. Dacă acest lucru se datorează unei resetări a parolei vechi, puteți opri afișarea din nou a mesajului." + ], "If you recently reset your password, you can use a data recovery method to unlock your data": [ "Dacă v-ați resetat recent parola, puteți utiliza o metodă de recuperare a datelor pentru a vă debloca datele." ], @@ -10812,6 +11459,9 @@ "Include device, location, and IP details": [ "Includere dispozitiv, loc și detalii IP" ], + "Included": [ + "Inclus" + ], "Increase your account security by verifying your email address.": [ "Măriți securitatea contului prin verificarea adresei de e-mail." ], @@ -10946,6 +11596,12 @@ "Item updated in vault": [ "Articol actualizat în seif." ], + "It’s often the easiest way to recover your account if you’re signed in.": [ + "De multe ori este cea mai ușoară modalitate de a vă recupera contul dacă aveți o sesiune activă." + ], + "It’s the only way to instantly recover everything, so make sure you keep it somewhere safe but accessible.": [ + "Este singura modalitate de a recupera instantaneu totul, așa că asigurați-vă că o păstrați într-un loc sigur, dar accesibil." + ], "JCB logo": [ "Logo JCB" ], @@ -11153,15 +11809,15 @@ "No card required": [ "Nu trebuie card de plată" ], + "No connected addresses.": [ + "Nu există adrese conectate." + ], "No countries enabled": [ "Nu există țări activate" ], "No folder selected": [ "Niciun folder selectat" ], - "No forwarding history.": [ - "Nu există istoric de transferare." - ], "No gateways": [ "Nu există porți de acces" ], @@ -11225,6 +11881,9 @@ "Only change these settings if you are using PGP with non-${ BRAND_NAME } recipients.": [ "Modificați aceste setări numai dacă utilizați PGP cu destinatari care nu sunt utilizatori ai ${ BRAND_NAME }." ], + "Only sign in on devices you trust": [ + "Conectați-vă doar pe dispozitive de încredere" + ], "Only you can see the label": [ "Numai dvs. puteți vedea eticheta." ], @@ -11494,9 +12153,18 @@ "Recently used servers:": [ "Servere utilizate recent:" ], + "RECOMMENDED": [ + "RECOMANDAT" + ], "Recommended on trusted devices. ${ keepMeSignedInLearnMoreLink }": [ "Recomandat pe dispozitivele de încredere. ${ keepMeSignedInLearnMoreLink }" ], + "Recovery by email is not available while ${ PROTON_SENTINEL_NAME } is enabled.": [ + "Recuperarea prin e-mail nu este disponibilă dacă ${ PROTON_SENTINEL_NAME } este activat." + ], + "Recovery by phone is not available while ${ PROTON_SENTINEL_NAME } is enabled.": [ + "Recuperarea prin telefon nu este disponibilă dacă ${ PROTON_SENTINEL_NAME } este activat." + ], "Recovery file downloaded": [ "Fișier de recuperare descărcat" ], @@ -11650,6 +12318,9 @@ "Set up your organization": [ "Setați organizația" ], + "Set up your organization and start protecting your data in a few easy steps.": [ + "Configurați-vă organizația și începeți să vă protejați datele în câțiva pași simpli." + ], "Setting successfully saved": [ "Setările au fost salvate." ], @@ -11688,6 +12359,12 @@ "Show each sender's image in the message list. The sender's initials will be shown if a photo is not available.": [ "Se afișează imaginea fiecărui expeditor în lista de mesaje. Dacă nu este disponibilă o imagine, se va afișa inițiala numelui expeditorului." ], + "Show fewer benefits": [ + "Mai puține beneficii" + ], + "Show more benefits": [ + "Mai multe beneficii" + ], "Show original message": [ "Afișare mesaj original" ], @@ -11733,9 +12410,6 @@ "Something went wrong. Please try again or contact customer support.": [ "A apărut o problemă. Reîncercați sau contactați asistența pentru clienți." ], - "Something went wrong. Please try again.": [ - "Ceva nu a funcționat. Reîncercați." - ], "Specify the domain which is allowed to authenticate with SAML SSO.": [ "Specificați domeniul căruia i se permite autentificarea cu SAML SSO." ], @@ -11827,6 +12501,9 @@ "TechRadar Pro recommended with a rating of 4.2 out of 5 stars": [ "TechRadar Pro l-a recomandat cu o evaluare de 4,2 din 5 stele" ], + "Temporarily unavailable due to high demand. Please try again later.": [ + "Temporar indisponibil din cauza solicitărilor mari. Reîncercați mai târziu." + ], "Temporarily unavailable. Please check back later.": [ "Temporar indisponibil. Reveniți mai târziu." ], @@ -11927,7 +12604,7 @@ "Numele va fi vizibil utilizatorilor când sunt conectați." ], "The referral credit can be awarded up to 2 months after your friend's trial ended, only if your friend subscribed to a plan.": [ - "Creditul de recomandare poate fi acordat până la două luni după încheierea perioadei de probare pentru persoana recomandată și dacă aceasta s-a abonat la un plan." + "Creditul de recomandare poate fi acordat până la două luni după încheierea perioadei de evaluare pentru persoana recomandată și dacă aceasta s-a abonat la un plan." ], "The securest way to browse, stream, and be online.": [ "Cea mai sigură cale de navigare, redare în flux și de a fi online." @@ -11962,6 +12639,9 @@ "This could take some time. Please do not close this page or disconnect from the internet.": [ "Asta ar putea dura ceva timp. Nu închideți această pagină și nu vă deconectați de la internet." ], + "This data recovery method requires a password reset option (email or SMS)": [ + "Această metodă de recuperare a datelor necesită o opțiune de resetare a parolei (e-mail sau SMS)." + ], "This feature delays sending your emails, giving you the opportunity to undo send during the selected time frame.": [ "Această funcție întârzie trimiterea mesajelor, permițându-vă să anulați trimiterea în intervalul de timp selectat." ], @@ -12022,6 +12702,9 @@ "This verification can take up to one hour. After successful verification, do not remove the TXT record as it is needed to confirm that you continue to own the domain.": [ "Această verificare poate dura până la o oră. După confirmarea verificării, nu eliminați înregistrarea TXT, deoarece este necesară pentru a confirma că dețineți în continuare domeniul." ], + "This will allow the TV to access your ${ BRAND_NAME } account.": [ + "Aceasta va permite ca TV-ul să poată accesa contul ${ BRAND_NAME }." + ], "This will delete all previous versions of your files older than ${ rententionLabel }.": [ "Aceasta va șterge toate versiunile anterioare ale fișierelor mai vechi de ${ rententionLabel }." ], @@ -12043,6 +12726,9 @@ "This will enable PayPal to be used to pay for your ${ BRAND_NAME } subscription. We will redirect you to PayPal in a new browser tab. If you use any pop-up blockers, please disable them to continue.": [ "Aceasta va activa PayPal ca metodă de plată pentru abonarea la ${ BRAND_NAME }. Se va deschide o fereastră nouă spre PayPal. Dacă folosiți module sau programe de blocare a ferestrelor flotante, trebuie să le dezactivați înainte de a continua." ], + "This will let you quickly and safely access your ${ BRAND_NAME } Account so you can change you password.": [ + "Acest lucru vă va permite să vă accesați rapid și în siguranță contul ${ BRAND_NAME }, astfel încât să vă puteți schimba parola." + ], "This will permanently delete the data and all email addresses associated with these users.": [ "Acest lucru va șterge definitiv datele și toate adresele de e-mail asociate cu acești utilizatori." ], @@ -12115,15 +12801,21 @@ "To decrypt and view your locked data after a password reset, select a recovery method.": [ "Pentru a decripta și vedea datele blocate după resetarea parolei, selectați o metodă de recuperare." ], + "To enable post-quantum protection, you’ll need to finish generating your new post-quantum encryption keys.": [ + "Pentru a activa protecția post-cuantică, va trebui să finalizați generarea noilor chei de criptare post-cuantice." + ], + "To ensure the highest possible security of your account, disable **Recovery by recovery email**.": [ + "Pentru a asigura cea mai înaltă securitate posibilă a contului, dezactivați **Recuperarea prin adresa de e-mail de recuperare**." + ], + "To ensure the highest possible security of your account, disable **Recovery by recovery phone**.": [ + "Pentru a asigura cea mai înaltă securitate posibilă a contului, dezactivați **Recuperarea prin număr de telefon de recuperare**." + ], "To ensure you don’t lose important data, ${ DRIVE_APP_NAME } saves older versions of your files as you and your collaborators make changes. Select how long ${ BRAND_NAME } should keep previous versions.": [ "Pentru a vă asigura că nu pierdeți date importante, ${ DRIVE_APP_NAME } salvează versiuni mai vechi ale fișierelor pe măsură ce acestea sunt modificate. Selectați cât timp ar trebui ca ${ BRAND_NAME } să păstreze versiunile anterioare." ], "To fight spam and abuse, please verify you are human.": [ "Pentru a combate abuzurile, dovediți că sunteți o persoană." ], - "To help keep your account safe, we want to make sure it's really you trying to sign in.": [ - "Pentru a vă ajuta să vă protejați contul, dorim să ne asigurăm că dețineți cu adevărat contul." - ], "To help keep your account safe, we want to make sure it’s really you trying to sign in.": [ "Pentru a vă ajuta să vă protejați contul, dorim să ne asigurăm că dețineți cu adevărat contul." ], @@ -12176,7 +12868,7 @@ "Total: ${ totalPrice }" ], "Trial ends on ${ formattedPeriodEndDate }": [ - "Perioada de probare expiră la ${ formattedPeriodEndDate }" + "Perioada de evaluare expiră la ${ formattedPeriodEndDate }" ], "trusted device": [ "dispozitiv aprobat" @@ -12217,6 +12909,9 @@ "Unless you sign out of your account or change your password, your session will remain active. Sessions expire after 60 days of inactivity.": [ "Dacă nu vă deconectați din cont sau nu vă schimbați parola, sesiunea curentă va rămâne activă. Sesiunea expiră după 60 de zile de inactivitate." ], + "Unlock streaming with VPN Plus.": [ + "Deblocați transmisiile în flux cu VPN Plus." + ], "Unsaved changes": [ "Modificări nesalvate" ], @@ -12232,9 +12927,15 @@ "Unverified email address.": [ "Adresă de e-mail neverificată." ], + "Upgrade anytime to bring over the rest": [ + "Modificați oricând abonamentul pentru a obține și restul" + ], "Upgrade now to get premium features, products and storage at a special price": [ "Modernizați acum contul pentru a accesa funcții premium, produse și stocare la un preț special." ], + "Upgrade or clear space anytime to bring over the rest": [ + "Modificați abonamentul sau goliți spațiul de stocare pentru a le aduce și pe restul." + ], "Upgrade to add a shorter @pm.me address to your account that is easier to share. It stands for “${ MAIL_APP_NAME } me” or “Private Message me”.": [ "Modificați contul pentru a adăuga o adresă @pm.me mai scurtă în cont, care este mai ușor de partajat. Înseamnă „${ MAIL_APP_NAME }-ul meu” sau „Mesaj privat mie”." ], @@ -12364,6 +13065,9 @@ "Visa Secure logo": [ "Logo Visa Secure" ], + "VPN Plus": [ + "VPN Plus" + ], "VPN with dedicated servers and IP addresses": [ "VPN cu servere și adrese IP dedicate" ], @@ -12379,6 +13083,12 @@ "We advise you to use official ${ VPN_APP_NAME } applications when possible.": [ "Vă sfătuim să utilizați aplicațiile oficiale ${ VPN_APP_NAME } atunci când este posibil." ], + "We can use your recovery email to send you a verification code to reset your password, and to contact you if we notice suspicious activity.": [ + "Vă putem folosi adresa de e-mail de recuperare pentru a vă trimite un cod de verificare pentru a vă reseta parola și pentru a vă contacta dacă observăm o activitate suspectă." + ], + "We can use your recovery phone to send you a verification code to reset your password, and to contact you if we notice suspicious activity.": [ + "Vă putem folosi numărul de telefon de recuperare pentru a vă trimite un cod de verificare pentru a vă reseta parola și pentru a vă contacta dacă observăm o activitate suspectă." + ], "We couldn't complete the transaction. Please try again.": [ "Tranzacția nu s-a putut finaliza. Reîncercați." ], @@ -12424,6 +13134,9 @@ "We stored a backup file in this browser because you allowed data recovery on this ${ deviceLink }. If the backup file is valid, you will immediately regain complete or partial access to your encrypted data.": [ "Am stocat un fișier de conservare în acest navigator web, deoarece ați permis recuperarea datelor pe acest ${ deviceLink }. Dacă fișierul de conservare este valid, veți recăpăta imediat acces complet sau parțial la datele personale criptate." ], + "We strongly recommend that everyone enable recovery by recovery phrase.": [ + "Recomandăm insistent ca toți să-și activeze recuperarea prin fraza de recuperare." + ], "We use 3-D Secure to protect your payments": [ "Folosim 3-D Secure pentru a proteja plățile" ], @@ -12488,7 +13201,7 @@ "Dacă anulați, abonamentul nu va fi reînnoit, dar vă puteți bucura în continuare de beneficiile planului până la sfârșitul perioadei de abonament. După aceea, contul va fi trecut la planul ${ BRAND_NAME } Free." ], "When you cancel, your subscription won't start, but you can still enjoy plan benefits until the end of the trial period. After that, you will be downgraded to the ${ BRAND_NAME } Free plan.": [ - "Dacă anulați, abonamentul nu va fi începe, dar vă puteți bucura în continuare de beneficiile planului până la sfârșitul perioadei de probare. După aceea, contul va fi trecut la planul ${ BRAND_NAME } Free." + "Dacă anulați, abonamentul nu va fi începe, dar vă puteți bucura în continuare de beneficiile planului până la sfârșitul perioadei de evaluare. După aceea, contul va fi trecut la planul ${ BRAND_NAME } Free." ], "When you click on a link, this anti-phishing feature will ask you to confirm the URL of the web page.": [ "Când faceți clic pe o legătură web, această funcție antiînșelăciune vă va cere să confirmați adresa URL a paginii web." @@ -12518,7 +13231,7 @@ "Cu o adresă criptată ${ BRAND_NAME }, puteți utiliza toate serviciile ${ BRAND_NAME }." ], "With email categories, important messages land in a primary inbox. Everything else is organized into categories.": [ - "Cu categoriile de e-mail, mesajele importante ajung în folderul de mesaje primite. Restul sunt organizate pe categorii." + "Cu categoriile de mesaje, mesajele importante ajung în folderul de mesaje primite. Restul sunt organizate pe categorii." ], "With groups, you can implement the company security policies for access control and reduce the risk of accessing unauthorised data.": [ "Cu grupuri, puteți implementa politicile de securitate ale companiei pentru controlul accesului și puteți reduce riscul accesării neautorizate a datelor." @@ -12612,9 +13325,6 @@ "You can edit this once to ensure the correct email address for verification.": [ "Puteți edita aceasta o dată pentru a vă asigura că este adresa de e-mail corectă pentru verificare." ], - "You can enable the Photos section from the interface using the toggle below.": [ - "Puteți activa secțiunea „Fotografii” din interfață folosind comutatorul de mai jos." - ], "You can enforce the password rules members of your organization will use when they create or reset the password to their ${ BRAND_NAME } Account.": [ "Puteți impune reguli pentru parolele membrilor organizației atunci când aceștia își creează sau resetează parolele contului ${ BRAND_NAME }." ], @@ -12678,6 +13388,9 @@ "You don't have any referrals.": [ "Nu aveți persoane recomandate." ], + "You don’t need to open or read the file—just download it and store it somewhere safe.": [ + "Nu trebuie să deschideți sau să citiți fișierul - trebuie doar să îl descărcați și să îl stocați într-un loc sigur." + ], "You get notified if your password or other data was leaked from a third-party service.": [ "Primiți notificări dacă parola sau alte date v-au fost divulgate de la un serviciu terță parte." ], @@ -12692,10 +13405,10 @@ "Aveți ${ unassignedAvailableCount } de servere utilizate recent disponibile. Pentru a aloca aceste servere într-o altă țară, va trebui să așteptați până când dezactivarea este completă." ], "You have a trial ${ planTitle } subscription. If you would like to continue your subscription after the trial period, please add a payment method.": [ - "Aveți un abonament ${ planTitle } de probare. Dacă doriți să vă continuați abonamentul după perioada de probare, adăugați o metodă de plată." + "Aveți un abonament ${ planTitle } de evaluare. Dacă doriți să vă continuați abonamentul după perioada de evaluare, adăugați o metodă de plată." ], "You have a trial ${ planTitle } subscription. No payment is required at this time. Your subscription will be automatically renewed at the end of the trial period.": [ - "Aveți un abonament ${ planTitle } de probare. Nu este necesară nici o plată în acest moment. Abonamentul se va reînnoi automat la sfârșitul perioadei de probare." + "Aveți un abonament ${ planTitle } de evaluare. Nu este necesară nici o plată în acest moment. Abonamentul se va reînnoi automat la sfârșitul perioadei de evaluare." ], "You have no calendars to export.": [ "Nu aveți calendare de exportat." @@ -12785,10 +13498,10 @@ "Vei primi recompensa în credite la o lună după ce persoana se abonează la un plan anual și la două luni după ce se abonează la un plan lunar." ], "You'll receive the credit reward 1 month after your friend's trial ended.": [ - "Vei primi recompensa în credite la o lună după ce perioada de probare pentru persoana recomandată s-a încheiat." + "Vei primi recompensa în credite la o lună după ce perioada de evaluare pentru persoana recomandată s-a încheiat." ], "You'll receive the credit reward 2 months after your friend's trial ended.": [ - "Vei primi recompensa în credite la două luni după ce perioada de probare pentru persoana recomandată s-a încheiat." + "Vei primi recompensa în credite la două luni după ce perioada de evaluare pentru persoana recomandată s-a încheiat." ], "You'll then be billed every ${ renewCycle } month at ${ renewAmountStr }. You can cancel at any time.": [ "Se va factura apoi la fiecare ${ renewCycle } lună cu ${ renewAmountStr }. Puteți anula oricând.", @@ -12821,6 +13534,9 @@ "Your ${ plan } subscription will be replaced with ${ PASS_SHORT_APP_NAME } Lifetime. The remaining balance of your subscription will be added to your account. ${ PASS_SHORT_APP_NAME } lifetime deal has no renewal price, it's a one-time payment for lifetime access to ${ PASS_SHORT_APP_NAME }.": [ "Abonamentul ${ plan } va fi înlocuit cu ${ PASS_SHORT_APP_NAME } pe viață. Soldul rămas din abonament va fi restituit în cont. Oferta pe viață ${ PASS_SHORT_APP_NAME } nu are preț de reînnoire, este o plată unică pentru acces pe viață la ${ PASS_SHORT_APP_NAME }." ], + "Your ${ planDisplayName } plan doesn’t just keep your business data and communications safe. It supports your compliance objectives, makes your business stand out, and keeps your team connected.": [ + "Planul ${ planDisplayName } actual nu doar că vă păstrează datele și comunicațiile comerciale în siguranță. Vă sprijină și obiectivele de conformitate, vă scoate afacerea în evidență și vă menține echipa conectată." + ], "Your ${ VPN_APP_NAME } and ${ MAIL_APP_NAME } accounts are linked. To delete them both, please sign in at ${ loginLink } and delete your account there.": [ "Conturile de ${ VPN_APP_NAME } și ${ MAIL_APP_NAME } sunt conectate. Pentru a le șterge pe ambele, conectați-vă la ${ loginLink } și ștergeți contul de acolo." ], @@ -12852,7 +13568,7 @@ "Fișierele vor fi criptate și apoi salvate." ], "Your free trial includes 1 dedicated server.": [ - "Perioada de probare gratuită include un server dedicat." + "Perioada de evaluare gratuită include un server dedicat." ], "Your free trial was successfully converted to a ${ cycle }-month subscription. Your renewal date is ${ nextBillingDate }.": [ "Probarea gratuită a fost convertită cu un abonament pe ${ cycle } luni. Data lui de reînnoire este ${ nextBillingDate }." @@ -12896,12 +13612,18 @@ "Your recent changes have been published. They will be visible to users in the next few hours.": [ "Modificările recente au fost publicate. Vor fi vizibile utilizatorilor în următoarele câteva ore." ], + "Your recovery file will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset.": [ + "Fișierul de recuperare va restabili accesul la e-mailuri, contacte, fișiere, parole și orice alte date criptate din cont după resetarea parolei." + ], "Your recovery phrase": [ "Fraza de recuperare" ], "Your recovery phrase is a series of 12 randomly generated words in a specific order.": [ "Fraza de recuperare este o serie de 12 cuvinte generate aleatoriu într-o anumită ordine." ], + "Your recovery phrase will allow you to sign in and recover your data if you get locked out of your ${ BRAND_NAME } Account. It is composed of 12 words and acts like a backup password.": [ + "Fraza de recuperare vă va permite să vă conectați și să vă recuperați datele dacă accesul la contul ${ BRAND_NAME } rămâne blocat. Este compusă din 12 cuvinte și acționează ca o parolă de rezervă." + ], "Your scheduled plan starts on ${ renewalTime } and will auto-renew every ${ cycle } month.": [ "Planul planificat începe ${ renewalTime }. Interval luni reînnoire automată: ${ cycle }.", "Planul planificat începe ${ renewalTime }. Interval luni reînnoire automată: ${ cycle }.", @@ -12920,7 +13642,7 @@ "Tichetul de asistență a fost închis. Vă mulțumim că ați contactat asistența de la ${ BRAND_NAME }." ], "Your trial will end in ${ timeRemaining }.": [ - "Perioada de probare se termină ${ timeRemaining }." + "Perioada de evaluare se termină ${ timeRemaining }." ], "Your voucher for your reserved ${ BRAND_NAME } email address: ${ reservedEmail }": [ "Cuponul personal pentru adresa de e-mail ${ BRAND_NAME } rezervată: ${ reservedEmail }" @@ -13505,6 +14227,15 @@ "${ Brand } ending with ${ Last4 }": [ "${ Brand } care se termină cu ${ Last4 }" ], + "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME } Desktop app": [ + "Aplicație desktop ${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME }" + ], + "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME } desktop app": [ + "Aplicație desktop ${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME }" + ], + "${ BRAND_NAME } for Business": [ + "${ BRAND_NAME } for Business" + ], "${ BRAND_NAME } username": [ "Nnume de utilizator ${ BRAND_NAME }" ], @@ -13540,6 +14271,15 @@ "${ pricePerMonthWithCurrency } / month": [ "${ pricePerMonthWithCurrency }/lună" ], + "${ PROTON_SENTINEL_NAME } account protection": [ + "Protecție cont cu ${ PROTON_SENTINEL_NAME }" + ], + "${ PROTON_SENTINEL_NAME } protection": [ + "Protecție cu ${ PROTON_SENTINEL_NAME }" + ], + "${ value.length }/${ maxLength } characters": [ + "${ value.length }/${ maxLength } de caractere" + ], "(Temporarily unavailable. Please check back later.)": [ "(Temporar indisponibil. Reveniți mai târziu.)" ], @@ -13666,6 +14406,9 @@ "Allow notifications by email": [ "Permitere notificări pe e-mail" ], + "Allow QR code sign-in": [ + "Permitere conectare cu cod QR" + ], "Allow random passwords": [ "Permitere parole aleatorii" ], @@ -13771,6 +14514,9 @@ "Automated confirmations and alerts": [ "Confirmări și alerte automate" ], + "Automatic email forwarding": [ + "Transferare automată mesaje" + ], "Automatically save contacts": [ "Salvare automată contacte" ], @@ -13810,9 +14556,15 @@ "Block malware, ads and trackers": [ "Blocare malware, reclame și instrumente de urmărire" ], + "Block trackers and marketers": [ + "Blocare instrumente de urmărire și agenți de marketing" + ], "Bookings, billings, and orders": [ "Rezervări, facturări și comenzi" ], + "Brand your workspace": [ + "Aplicați-vă brandul la spațiul de lucru" + ], "Browser": [ "Navigator" ], @@ -13846,6 +14598,9 @@ "Cash": [ "Numerar" ], + "Catch-all email address": [ + "Adresă de e-mail de agregare mesaje" + ], "Categories": [ "Categorii" ], @@ -13918,6 +14673,9 @@ "Confirm login password": [ "Confirmare parolă conectare" ], + "Confirm MX records added": [ + "Confirmare înregistrări MX adăugate" + ], "Confirm new password": [ "Confirmare parola nouă" ], @@ -13981,9 +14739,20 @@ "Current email": [ "E-mail actual" ], + "Custom domain": [ + "Domeniu personal" + ], + "Custom email domain": [ + "Domeniu personal de e-mail", + "Domenii personale de e-mail", + "Domenii personale de e-mail" + ], "Daily email notifications": [ "Notificări zilnice pe e-mail" ], + "Data harvesting": [ + "Colectarea datelor" + ], "Date": [ "Data" ], @@ -14071,15 +14840,27 @@ "e.g. example.com": [ "ex. exemplu.com" ], + "Early access": [ + "Acces timpuriu" + ], "Email": [ "E-mail" ], "Email address": [ "Adresă e-mail" ], + "Email addresses": [ + "Adrese de e-mail" + ], + "Email addresses per user": [ + "Adrese de e-mail per utilizator" + ], "Email or username": [ "E-mail sau utilizator" ], + "Email with @yourcompany.com domain": [ + "E-mail cu domeniu @companiamea.com" + ], "Emails (all messages)": [ "Mesaje (toate mesajele)" ], @@ -14098,6 +14879,9 @@ "Enable ${ DARK_WEB_MONITORING_NAME } for ${ domain.DomainName }": [ "Activare ${ DARK_WEB_MONITORING_NAME } pentru ${ domain.DomainName }" ], + "Enable categories": [ + "Activare categorii" + ], "Enabled": [ "Activă" ], @@ -14113,6 +14897,9 @@ "End weekday": [ "Ultima zi a săptămânii" ], + "End-to-end encryption": [ + "Criptare bilaterală" + ], "Enter code": [ "Introduceți codul" ], @@ -14170,6 +14957,9 @@ "Folder location": [ "Amplasare folder" ], + "Folders, labels, and filters": [ + "Foldere, etichete și filtre" + ], "Font family": [ "Familie font" ], @@ -14188,6 +14978,9 @@ "Free": [ "Free" ], + "Free VPN included": [ + "VPN gratuit inclus" + ], "From: ${ fromEmail }": [ "De la: ${ fromEmail }" ], @@ -14236,6 +15029,9 @@ "Highest VPN speed": [ "Viteză VPN maximă" ], + "Host name": [ + "Nume gazdă" + ], "I understand that I'll need to add this email address to the other account immediately, to avoid losing this address permanently.": [ "Înțeleg că va trebui să adaug imediat această adresă de e-mail la celălalt cont, pentru a evita pierderea definitivă a acestei adrese." ], @@ -14353,6 +15149,9 @@ "Main reason for cancelling": [ "Motiv principal pentru anulare" ], + "Make sure you have access to a recovery email or phone, and have a data recovery option.": [ + "Asigurați-vă că aveți acces la o adresă de e-mail sau un număr de telefon pentru recuperare și că aveți o opțiune de recuperare a datelor." + ], "Manage categories": [ "Gestionare categorii" ], @@ -14404,6 +15203,9 @@ "Moderate NAT": [ "NAT moderat" ], + "Monthly": [ + "Lunar" + ], "More payment methods": [ "Mai multe metode de plată" ], @@ -14422,6 +15224,9 @@ "Must have at least ${ MIN_PASSWORD_LENGTH } characters": [ "Trebuie să aibă cel puțin ${ MIN_PASSWORD_LENGTH } caractere" ], + "MX records": [ + "Înregistrări MX" + ], "Name": [ "Nume" ], @@ -14452,6 +15257,9 @@ "Newsletters": [ "Buletine informative" ], + "No": [ + "Nu" + ], "No (users cannot use the app until a vault is shared with them)": [ "Nu (utilizatorii nu pot folosi aplicația până când un seif nu este partajat cu ei)" ], @@ -14485,12 +15293,18 @@ "Online privacy for your whole family": [ "Confidențialitate online pentru întreaga familie" ], + "Online productivity suite": [ + "Suită de productivitate online" + ], "Only a single personal vault can be created": [ "Se poate crea un singur seif personal" ], "Only available on ${ PASS_SHORT_APP_NAME } paid plans": [ "Disponibil doar pe planurile cu plată ale ${ PASS_SHORT_APP_NAME }" ], + "Open-source code": [ + "Cod cu sursa publică" + ], "OpenVPN password": [ "Parola OpenVPN" ], @@ -14551,6 +15365,9 @@ "Pending": [ "În așteptare" ], + "Personal and work emails, plus important updates and notifications": [ + "Mesaje personale și de afaceri, plus actualizări importante și notificări" + ], "Phone number": [ "Număr de telefon" ], @@ -14584,12 +15401,21 @@ "Postal code": [ "Cod poștal" ], + "Premium features included": [ + "Funcțiile premium incluse" + ], "Previous password": [ "Parola anterioară" ], "Primary": [ "Primar" ], + "Priority": [ + "Prioritate" + ], + "Priority support": [ + "Asistență prioritară" + ], "Promotions": [ "Promoții" ], @@ -14599,6 +15425,9 @@ "Proration": [ "Taxe zilnice" ], + "Protected by Swiss privacy laws": [ + "Protejat de legile elvețiene privind confidențialitatea" + ], "Protection mode": [ "Mod de protejare" ], @@ -14674,6 +15503,9 @@ "Secure password generator": [ "Generator de parole securizat" ], + "See your team's availability": [ + "Vedeți disponibilitatea echipei" + ], "Select Linux package format": [ "Selectați formatul pachetului Linux" ], @@ -14707,6 +15539,9 @@ "Shared between ${ MAIL_SHORT_APP_NAME }, ${ CALENDAR_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME }, and ${ WALLET_SHORT_APP_NAME }.": [ "Partajat între ${ MAIL_SHORT_APP_NAME }, ${ CALENDAR_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME } și ${ WALLET_SHORT_APP_NAME }." ], + "Short domain @pm.me": [ + "Domeniu scurt @pm.me" + ], "Show ${ n } administrator": [ "Afișare ${ n } administrator", "Afișare ${ n } administratori", @@ -14796,6 +15631,9 @@ "Storage": [ "Spațiu de stocare" ], + "Storage per user": [ + "Spațiu per utilizator" + ], "Street address": [ "Strada" ], @@ -14808,6 +15646,9 @@ "Subscription options": [ "Opțiuni abonament" ], + "Support for multiple users": [ + "Suport pentru utilizatori multipli" + ], "Swipe left action": [ "Acțiune glisare la stânga" ], @@ -14826,6 +15667,9 @@ "Then": [ "Atunci" ], + "Third-party ads": [ + "Reclame terță-parte" + ], "Thomas": [ "Toma" ], @@ -14901,6 +15745,9 @@ "Use folder colors": [ "Folosire culori folder" ], + "Use your own email domain": [ + "Utilizați propriul domeniu de e-mail" + ], "User": [ "Utilizator" ], @@ -14928,6 +15775,9 @@ "Verify keys with Key Transparency": [ "Verificare chei cu Key Transparency" ], + "Version history": [ + "Istoric versiuni" + ], "Video conferencing with Zoom": [ "Conferință video cu Zoom" ], @@ -14940,6 +15790,9 @@ "Vulnerable password": [ "Parolă vulnerabilă" ], + "We securely stored recovery information on this device.": [ + "Informațiile de recuperare s-au stocat în siguranță pe acest dispozitiv." + ], "Weak": [ "Slabă" ], @@ -14967,12 +15820,21 @@ "Without attachment": [ "Fără atașamente" ], + "Yearly": [ + "Anual" + ], + "Yearly free storage bonus": [ + "Bonus anual de stocare gratuită" + ], "Yes": [ "Da" ], "Yes, I want to permanently delete this account and all its data.": [ "Da, vreau să șterg definitiv acest cont și toate datele sale." ], + "You don't have permissions": [ + "Nu aveți permisiuni" + ], "Your activation code:": [ "Cod de activare:" ], @@ -14994,9 +15856,18 @@ "Your plan": [ "Plan actual" ], + "Your recovery email": [ + "E-mail de recuperare" + ], + "Your recovery phone number": [ + "Număr de telefon de recuperare" + ], "Your voucher for your reserved ${ BRAND_NAME } email address:": [ "Cuponul personal pentru adresa de e-mail ${ BRAND_NAME } rezervată:" ], + "Zero-access architecture": [ + "Arhitectură cu acces zero" + ], "ZIP code": [ "Cod poștal" ] @@ -15013,6 +15884,9 @@ ], "Recovery phrase": [ "Fraza de recuperare" + ], + "Set recovery phone number": [ + "Setare număr de telefon de recuperare" ] }, "Label (begin date/advanced search)": { @@ -15055,6 +15929,26 @@ "Adăugați următoarea înregistrare TXT. Notă: înregistrările DNS au nevoie de câteva ore pentru a se actualiza." ] }, + "Label for domain setup": { + "${ capitalizedGroup } record not found": [ + "Nu s-a găsit înregistrarea ${ capitalizedGroup }." + ], + "Host name": [ + "Nume gazdă" + ], + "Invalid ${ group.name } record found": [ + "S-a găsit o înregistrare ${ group.name } nevalidă" + ], + "Type": [ + "Tip" + ], + "Use default value": [ + "Folosire valoare implicită" + ], + "Valid ${ group.name } record found": [ + "S-a găsit o înregistrare ${ group.name } validă" + ] + }, "Label for new member": { "Admin": [ "Administrator" @@ -15220,6 +16114,9 @@ "data recovery option": [ "opțiunea de recuperare a datelor" ], + "Detailed instructions": [ + "Instrucțiuni detaliate" + ], "Details": [ "Detalii" ], @@ -15260,7 +16157,7 @@ "Ajutor" ], "Help translate": [ - "Ajutați la traducere" + "Traducere completă" ], "here": [ "aici" @@ -15394,6 +16291,9 @@ "Upgrade your plan": [ "Treceți la alt plan" ], + "use a data recovery method": [ + "utilizați o metodă de recuperare a datelor" + ], "Vault": [ "Seif" ], @@ -15752,21 +16652,45 @@ "Built-in chat": [ "Sistem de conversații integrat" ], + "Cloud storage and file sharing": [ + "Stocare în cloud și partajare fișiere" + ], + "Data retention policies": [ + "Politici de păstrare a datelor" + ], + "Document and spreadsheet editor": [ + "Editor de documente și registre de lucru" + ], + "Email writing assistant": [ + "Asistent de scriere pentru e-mail" + ], "End-to-end encrypted screen sharing and ephemeral in-call chat": [ "Partajare ecran cu criptare bilaterală și conversații temporare pe durata apelului" ], "Hosts can record meetings locally on their computers": [ "Gazdele pot înregistra întâlnirile local pe computerele lor" ], + "Includes Meet Professional": [ + "Include Meet Professional" + ], "Meeting recording": [ "Înregistrare conferință" ], "One active meeting at a time": [ "O conferință activă simultan" ], + "Password manager with team vaults": [ + "Manager de parole cu seifuri pentru echipe" + ], + "Private AI Chat (${ LUMO_SHORT_APP_NAME })": [ + "Conversații private cu IA (${ LUMO_SHORT_APP_NAME })" + ], "Screen-sharing": [ "Partajare ecran" ], + "Secure mail and calendar": [ + "Mail și calendar securitate" + ], "Unlimited meetings per day": [ "Conferințe nelimitate pe zi" ], @@ -15784,6 +16708,9 @@ "Conferințe video, ${ n } participant", "Conferințe video, ${ n } participanți", "Conferințe video, ${ n } de participanți" + ], + "VPN with ad-blocker and malware protection": [ + "VPN cu blocare reclame și protecție împotriva programelor malițioase" ] }, "meet_2025: Info": { @@ -15829,7 +16756,7 @@ "Politică strictă fără înregistrări" ], "You can have up to ${ TRIAL_MAX_MEET_SEATS } ${ MEET_SHORT_APP_NAME } seats during the trial period.": [ - "Puteți avea până la ${ TRIAL_MAX_MEET_SEATS } ${ MEET_SHORT_APP_NAME } licențe în perioada de probare." + "Puteți avea până la ${ TRIAL_MAX_MEET_SEATS } ${ MEET_SHORT_APP_NAME } licențe în perioada de evaluare." ] }, "Meet_launch": { @@ -15912,10 +16839,10 @@ "Vizualizați evenimentele de conectare, recuperare și securitate ale utilizatorului." ], "Your free trial has ended. ${ nonAutoRenewalAction }": [ - "Perioada de probare gratuită s-a încheiat. ${ nonAutoRenewalAction }" + "Perioada de evaluare gratuită s-a încheiat. ${ nonAutoRenewalAction }" ], "Your free trial has ended. Access to your account will soon be disabled. ${ action }": [ - "Perioada de probare a expirat. Accesul la cont va fi dezactivat în curând. ${ action }" + "Perioada de evaluare a expirat. Accesul la cont va fi dezactivat în curând. ${ action }" ] }, "Message display when a new app version is available": { @@ -16473,6 +17400,9 @@ "99.95% SLA": [ "Disponibilitate minimă a serviciului 99,95%" ], + "Access all countries": [ + "Accesați toate țările" + ], "Activity logs and policy": [ "Jurnale de activitate și politică" ], @@ -16494,6 +17424,9 @@ "Advanced network security": [ "Securitate avansată a rețelei" ], + "Advanced workspace security": [ + "Securitate avansată spațiu de lucru" + ], "All ${ BRAND_NAME } products and features": [ "Toate produsele și funcțiile ${ BRAND_NAME }" ], @@ -16654,6 +17587,9 @@ "Multiple admin roles": [ "Mai multe roluri de administrare" ], + "No streaming support": [ + "Fără suport transmisii în flux" + ], "No-logs policy": [ "Politică fără jurnale" ], @@ -16821,6 +17757,9 @@ "Unlimited volume/bandwidth": [ "Lățime de bandă și volum nelimitate" ], + "Unlock streaming": [ + "Deblocare transmisii în flux" + ], "Up to ${ n } user": [ "Până la ${ n } utilizator", "Până la ${ n } utilizatori", @@ -16999,7 +17938,7 @@ "Pentru a continua să utilizați ${ trialPlanName } cu funcțiile premium, alegeți tipul de abonament și opțiunea de plată." ], "Your trial ends ${ formattedPeriodEndDate }": [ - "Perioada de probare se termină ${ formattedPeriodEndDate }" + "Perioada de evaluare se termină ${ formattedPeriodEndDate }" ] }, "new_plans: Label": { @@ -17303,6 +18242,11 @@ ] }, "new_plans: Upsell attribute": { + "${ n } country": [ + "${ n } țară", + "${ n } țări", + "${ n } de țări" + ], "Access advanced VPN features": [ "Accesați caracteristici VPN avansate" ], @@ -17366,8 +18310,8 @@ "${ app } product updates": [ "Actualizări ale ${ app }" ], - "${ BRAND_NAME } for Business newsletter": [ - "Buletin informativ ${ BRAND_NAME } for Business" + "${ BRAND_NAME } for Business communications": [ + "${ BRAND_NAME } pentru comunicații de afaceri" ], "${ BRAND_NAME } important announcements": [ "Anunțuri importante ale ${ BRAND_NAME }" @@ -17420,8 +18364,8 @@ "During your first month of using a ${ BRAND_NAME } product": [ "Pe durata primei luni de utilizare a produsului ${ BRAND_NAME }" ], - "Email subscriptions": [ - "Abonamente prin e-mail" + "Email communications": [ + "Comunicații pe e-mail" ], "In-app notifications": [ "Notificări în aplicație" @@ -17507,7 +18451,7 @@ "Prea multe solicitări recente ale API-ului." ], "Trial started": [ - "Perioada de probă a început" + "Perioada de evaluare a început" ], "Two-factor authentication has been enforced for administrators": [ "Autentificarea cu doi factori este obligatorie pentru administratori." @@ -17800,16 +18744,16 @@ "Încă puteți anula în termen de 30 de zile și puteți obține o rambursare proporțională." ], "You can use ${ planTitle } until the trial ends, and you won’t be charged.": [ - "Puteți folosi ${ planTitle } până la terminarea perioadei de probare fără a vi se aplica vreo taxă." + "Puteți folosi ${ planTitle } până la terminarea perioadei de evaluare fără a vi se aplica vreo taxă." ], "Your free trial has started": [ - "Perioada de probare gratuită a început" + "Perioada de evaluare gratuită a început" ], "Your full ${ planTitle } subscription starts on ${ boldEndDate }.": [ "Abonamentul complet ${ planTitle } începe la ${ boldEndDate }." ], "You’ll be able to use ${ planTitle } until the trial ends, free of charge.": [ - "Veți putea utiliza ${ planTitle } gratuit până la sfârșitul perioadei de probă." + "Veți putea utiliza ${ planTitle } gratuit până la sfârșitul perioadei de evaluare." ] }, "Option": { @@ -18017,6 +18961,9 @@ "Plain text": [ "Text simplu" ], + "Push notifications": [ + "Notificări instante" + ], "Receive from all": [ "Primire de la toți" ], @@ -18238,6 +19185,11 @@ "PKGBUILD (pentru alte distribuții)" ] }, + "Paragraph": { + "${ BRAND_NAME } is independently funded and operates without advertising. Below are examples of how this independence has been used in practice.": [ + "${ BRAND_NAME } este finanțat independent și operează fără publicitate. Mai jos sunt exemple despre cum a fost folosită această independență în practică." + ] + }, "Participant name": { "You": [ "Dvs." @@ -18512,14 +19464,14 @@ "per month, billed every two years": [ "pe lună, facturat la fiecare doi ani" ], - "Preparing your Recovery Kit": [ - "Se pregătește pachetul de recuperare" + "Preparing your recovery phrase": [ + "Se pregătește fraza de recuperare" ], "Protected by Swiss privacy laws": [ "Protejat de legile elvețiene privind confidențialitatea" ], - "Save your recovery kit to continue": [ - "Salvați-vă pachetul de recuperare pentru a continua" + "Save your recovery phrase to continue": [ + "Salvați-vă fraza de recuperare pentru a continua" ], "Secure vault sharing": [ "Partajare sigură a seifurilor" @@ -18794,7 +19746,7 @@ "${ rate }% TVA: ${ taxAmountElement }" ], "Amount due after trial on ${ formattedDate }": [ - "Suma datorată după probare la ${ formattedDate }" + "Suma datorată după evaluare la ${ formattedDate }" ], "Billing Country": [ "Țara de facturare" @@ -18848,7 +19800,7 @@ "Ofertă indisponibilă" ], "Payment method required for the subscription to be activated after the trial ends.": [ - "Metoda de plată este necesară pentru activarea abonamentului după încheierea perioadei de probare." + "Metoda de plată este necesară pentru activarea abonamentului după încheierea perioadei de evaluare." ], "Please reactivate your subscription first to decrease the number of add-ons.": [ "Reactivați mai întâi abonamentul pentru a reduce numărul de module." @@ -19246,6 +20198,9 @@ "Search for an email or IP address": [ "Căutare după e-mail sau adresă IP" ], + "Search for users or addresses": [ + "Căutare utilizator sau adresă" + ], "Search parent folder": [ "Căutare în folder părinte" ], @@ -19397,18 +20352,18 @@ ] }, "PQC account key generation": { - "Couldn’t generate keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\n${ settingsLink } and select 'Generate key' for your account and for each address.": [ - "Nu s-au putut genera cheile. Pentru a activa protecția post-cuantică, va trebui să generați manual noile chei de criptare.\n\n${ settingsLink } și selectați „Generare cheie” pentru cont și pentru fiecare adresă." + "Couldn’t generate keys. To activate post-quantum protection, you’ll need to finish generating your new post-quantum encryption keys.\n\n${ goToSettingsLink } and select 'Generate missing keys'.": [ + "Nu s-au putut genera cheile. Pentru a activa protecția post-cuantică, va trebui să finalizați generarea noilor chei de criptare post-cuantică pentru fiecare adresă.\n\n${ goToSettingsLink } și selectați „Generare chei lipsă”." ] }, "PQC adress key generation": { - "Couldn’t generate address keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\nGo to ${ settingsLink } and select 'Generate key' for each address.": [ - "Nu s-au putut genera cheile. Pentru a activa protecția post-cuantică, va trebui să generați manual noile chei de criptare.\n\nAccesați ${ settingsLink } și selectați „Generare cheie” pentru cont și pentru fiecare adresă." + "Couldn’t generate address keys. To activate post-quantum protection, you’ll need to finish generating your new post-quantum encryption keys for each address.\n\n${ goToSettingsLink } and select 'Generate missing keys'.": [ + "Nu s-au putut genera chei de adresă. Pentru a activa protecția post-cuantică, va trebui să finalizați generarea noilor chei de criptare post-cuantică pentru fiecare adresă.\n\n${ goToSettingsLink } și selectați „Generare chei lipsă”." ] }, "PQC compatibility warning": { - "**You must update all ${ BRAND_NAME } mobile apps**: your new keys won't work on older app versions.": [ - "**Trebuie să actualizați toate aplicațiile ${ BRAND_NAME } pentru mobile**: noile chei nu vor funcționa pe versiunile mai vechi ale aplicației." + "**You must update all ${ BRAND_NAME } apps**: your new keys won't work on older app versions.": [ + "**Trebuie să actualizați toate aplicațiile ${ BRAND_NAME }**: noile chei nu vor funcționa pe versiunile mai vechi ale acestora." ] }, "PQC key generation": { @@ -19667,6 +20622,9 @@ "Verify now": [ "Verificare acum" ], + "Verify now this recovery email address: ${ emailData.value }": [ + "Verificare acum această adresă de e-mail: ${ emailData.value }" + ], "Verify recovery email?": [ "Verificare e-mail de recuperare?" ], @@ -19710,29 +20668,162 @@ "Verify recovery phone?": [ "Verificare număr de telefon de recuperare?" ], + "Verify this recovery phone number now: ${ phoneData.value }": [ + "Verificare acum acest număr de telefon: ${ phoneData.value }" + ], "Verifying your phone number increases your account security and allows additional options for recovery.": [ "Verificarea numărului de telefon vă mărește securitatea contului și permite opțiuni suplimentare de recuperare." ] }, - "RecoveryPhrase: Action": { - "Continue": [ - "Continuare" + "Recovery score": { + "${ score } / ${ maxScore } completed": [ + "${ score }/${ maxScore } finalizat" ], - "Copy": [ - "Copiere" + "Account protection": [ + "Protecție cont" ], - "Show": [ - "Afișare" - ] - }, - "RecoveryPhrase: Info": { - "copy recovery phrase": [ - "copiați fraza de recuperare" + "Add more options for stronger protection": [ + "Adăugați mai multe opțiuni pentru o protecție mai puternică" ], - "Download PDF": [ - "Descărcare PDF" + "Add more options to avoid getting locked out of your account.": [ + "Adăugați mai multe opțiuni pentru a evita blocarea accesului la cont." ], - "download PDF": [ + "Awesome. Keep your options up-to-date for stronger protection.": [ + "Minunat. Mențineți opțiunile actualizate pentru o protecție mai puternică." + ], + "Good start. Add more options for a stronger protection.": [ + "Un început bun. Adăugați mai multe opțiuni pentru o protecție mai puternică." + ], + "Great. Add more options for a stronger protection.": [ + "Grozav. Adăugați mai multe opțiuni pentru o protecție mai puternică." + ], + "How you increased your account protection": [ + "Cum v-ați sporit protecția contului" + ], + "Inactive recovery options": [ + "Opțiuni de recuperare inactive" + ], + "Maximum": [ + "Maxim" + ], + "Partial": [ + "Parțial" + ], + "Recovery score: ${ score }": [ + "Scor de recuperare: ${ score }" + ], + "Require verified password reset option (email or SMS)": [ + "Necesită opțiunea de resetare a parolei verificate (e-mail sau SMS)" + ], + "Score: ${ score } / ${ maxScore }": [ + "Scor: ${ score }/${ maxScore }" + ], + "Strong": [ + "Puternică" + ], + "Unprotected": [ + "Neprotejat" + ], + "Weak": [ + "Slabă" + ] + }, + "Recovery score item": { + "Add emergency contacts": [ + "Adăugați contacte de urgență" + ], + "Add recovery contacts": [ + "Adăugare contacte de recuperare" + ], + "Add recovery email": [ + "Adăugați e-mail de recuperare" + ], + "Add recovery phone": [ + "Adăugare telefon de recuperare" + ], + "Allow data recovery on this device": [ + "Permitere recuperare date pe acest dispozitiv" + ], + "Allow password reset from settings": [ + "Permitere resetare a parolei din setări" + ], + "Allow scanning QR code to sign in": [ + "Permitere scanare cod QR pentru conectare" + ], + "Data recovery allowed on this device": [ + "Recuperarea datele este permisă pe acest dispozitiv" + ], + "Download recovery file": [ + "Descărcare fișier de recuperare" + ], + "Email recovery enabled": [ + "Recuperare prin e-mail activată" + ], + "Emergency contacts added": [ + "Contacte de urgență adăugate" + ], + "Enable email recovery": [ + "Activare recuperare prin e-mail" + ], + "Enable recovery by phone": [ + "Activare recuperare cu număr de telefon" + ], + "Password reset allowed from settings": [ + "Resetarea parolei permisă din setări" + ], + "Password verified": [ + "Parolă verificată" + ], + "Phone recovery enabled": [ + "Recuperare prin telefon activată" + ], + "Recovery contacts added": [ + "Contacte de recuperare adăugate" + ], + "Recovery file downloaded": [ + "Fișier de recuperare descărcat" + ], + "Recovery phrase saved": [ + "Frază de recuperare salvată" + ], + "Save recovery phrase": [ + "Salvare frază de recuperare" + ], + "Sign-in with QR code allowed": [ + "Conectarea cu cod QR este permisă" + ], + "Verify password": [ + "Verificare parolă" + ], + "Verify recovery email": [ + "Verificare e-mail de recuperare" + ], + "Verify recovery phone": [ + "Verificare număr de telefon de recuperare" + ] + }, + "RecoveryPhrase: Action": { + "Continue": [ + "Continuare" + ], + "Copy": [ + "Copiere" + ], + "Show": [ + "Afișare" + ] + }, + "RecoveryPhrase: Info": { + "**Make sure you keep your recovery phrase accessible after creating it.** For security reasons, we do not store the phrase after saving your changes, and you won’t be able to see it again in the ${ BRAND_NAME } app.": [ + "**Asigurați-vă că păstrați fraza de recuperare accesibilă după ce o creați.** Din motive de securitate, nu stocăm fraza după salvarea modificărilor și nu o veți mai putea vedea în aplicația ${ BRAND_NAME }." + ], + "copy recovery phrase": [ + "copiați fraza de recuperare" + ], + "Download PDF": [ + "Descărcare PDF" + ], + "download PDF": [ "descărcați fișierul PDF" ], "I understand that if I lose my recovery phrase, I may permanently lose access to my account.": [ @@ -19747,14 +20838,11 @@ "Or ${ downloadRecoveryKitSwitchButton } instead.": [ "Sau folosiți ${ downloadRecoveryKitSwitchButton }." ], - "Your **Recovery Kit** lets you restore your ${ BRAND_NAME } Account if you’re locked out.": [ - "Pachetul de **recuperare** vă permite să vă restaurați contul ${ BRAND_NAME } dacă nu îl mai puteți accesa." + "Your **recovery phrase** lets you restore your ${ BRAND_NAME } Account if you’re locked out.": [ + "Fraza de **recuperare** vă permite să vă restaurați contul ${ BRAND_NAME } dacă nu îl mai puteți accesa." ] }, "RecoveryPhrase: Title": { - "Save your Recovery Kit": [ - "Salvați-vă pachetul de recuperare" - ], "Save your recovery phrase": [ "Salvați-vă fraza de recuperare" ] @@ -19764,7 +20852,7 @@ "${ referrerRewardAmount } per recomandare" ], "**If you cancel before this date,** you will be **downgraded** to ${ BRAND_NAME } ${ PLAN_NAMES[PLANS.FREE] } when the trial ends.": [ - "**Dacă anulați înainte de această dată**, contul va fi **retrogradat** la ${ BRAND_NAME } ${ PLAN_NAMES[PLANS.FREE] } când se termină perioada de probare." + "**Dacă anulați înainte de această dată**, contul va fi **retrogradat** la ${ BRAND_NAME } ${ PLAN_NAMES[PLANS.FREE] } când se termină perioada de evaluare." ], "**If you don't subscribe,** you'll be **downgraded** to ${ BRAND_NAME } ${ PLAN_NAMES[PLANS.FREE] }.": [ "**Dacă nu vă abonați**, contul va fi **retrogradat** la ${ BRAND_NAME } ${ PLAN_NAMES[PLANS.FREE] }." @@ -19785,13 +20873,13 @@ "Oferiți două săptămâni gratuite, primiți ${ referrerRewardAmount } în credite." ], "How your free trial works:": [ - "Cum funcționează probarea gratuită:" + "Cum funcționează evaluarea gratuită:" ], "I've been using ${ BRAND_NAME } and thought you might like it. It's a secure email, cloud storage, password manager, and VPN that protects your privacy. Sign up with this link to get 14 days of premium features for free: ${ referralLink }": [ "Am folosit ${ BRAND_NAME } și am crezut că v-ar plăcea. Este un serviciu de e-mail securizat, stocare în cloud, manager de parole și VPN care vă protejează confidențialitatea. Înscrieți-vă folosind această legătură pentru a obține 14 zile de funcții premium gratuit: ${ referralLink }" ], "If you cancel before then, you will be downgraded to ${ BRAND_NAME } ${ PLAN_NAMES[PLANS.FREE] } when the trial ends. If you don’t cancel, your full plan will start and you’ll get **${ referrerRewardAmount }** in credits.": [ - "Dacă anulați până atunci, contul va fi retrogradat la ${ BRAND_NAME } ${ PLAN_NAMES[PLANS.FREE] } atunci când perioada de probare se încheie. Dacă nu anulați, va începe planul complet și veți primi **${ referrerRewardAmount }** în credite." + "Dacă anulați până atunci, contul va fi retrogradat la ${ BRAND_NAME } ${ PLAN_NAMES[PLANS.FREE] } atunci când perioada de evaluare se încheie. Dacă nu anulați, va începe planul complet și veți primi **${ referrerRewardAmount }** în credite." ], "If you cancel, you will lose your **${ referrerRewardAmount }** credit reward.": [ "Dacă anulați, veți pierde recompensa în credite de **${ referrerRewardAmount }**." @@ -20153,8 +21241,8 @@ "Back to Safety Review": [ "Înapoi la revizuire securitate" ], - "Because you reset your password, your current Recovery Kit can only be used to recover the data created before your password reset.": [ - "Deoarece v-ați resetat parola, pachetul de recuperare actual poate fi folosit doar pentru a recupera datele create înainte de resetarea parolei." + "Because you reset your password, your current recovery phrase can only be used to recover the data created before your password reset.": [ + "Deoarece v-ați resetat parola, fraza de recuperare actuală poate fi folosită doar pentru a recupera datele create înainte de resetarea parolei." ], "Can be used to regain access to your account and data": [ "Poate fi folosit pentru a vă recâștiga accesul la cont și date." @@ -20183,8 +21271,8 @@ "Download ${ size }": [ "Descărcare ${ size }" ], - "Download your Recovery Kit": [ - "Descărcare pachet de recuperare" + "Download your recovery phrase": [ + "Descărcați fraza de recuperare" ], "Email address": [ "Adresa de e-mail" @@ -20198,8 +21286,8 @@ "Enable recovery by phone": [ "Activare recuperare cu număr de telefon" ], - "I understand that I will not be able to recover currently locked data with this Recovery Kit": [ - "Înțeleg că nu voi putea recupera datele blocate în prezent cu acest pachet de recuperare" + "I understand that I will not be able to recover currently locked data with this recovery phrase": [ + "Înțeleg că nu voi putea recupera datele blocate în prezent cu această frază de recuperare." ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in on this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Dacă vă uitați parola ${ BRAND_NAME } și trebuie să o resetați, la următoarea reconectare cu acest dispozitiv, cu parola nouă, vă va fi restabilit accesul complet la contul ${ BRAND_NAME }." @@ -20207,8 +21295,8 @@ "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Dacă vă uitați parola ${ BRAND_NAME } și trebuie să o resetați, la următoarea reconectare cu acest dispozitiv, cu parola nouă, vă va fi restabilit accesul complet la contul ${ BRAND_NAME }." ], - "If you get locked out of your ${ BRAND_NAME } Account, your Recovery Kit will allow you to sign in and recover your data.": [ - "Dacă nu vă mai puteți accesa contul ${ BRAND_NAME }, pachetul de recuperare vă va permite să vă conectați și să vă recuperați datele." + "If you get locked out of your ${ BRAND_NAME } Account, your recovery phrase will allow you to sign in and recover your data.": [ + "Dacă nu vă mai puteți accesa contul ${ BRAND_NAME }, fraza de recuperare vă va permite să vă conectați și să vă recuperați datele." ], "If you lose your login details and need to reset your account, **it’s imperative** that you have both an **account recovery and data recovery method** in place, otherwise you might not be able to access any of your emails, contacts, files or passwords.": [ "Dacă vă pierdeți detaliile de conectare și trebuie să vă resetați contul, **este imperativ** să aveți atât o **metodă de recuperare a contului, cât și o metodă de recuperare a datelor**, altfel este posibil să nu vă puteți accesa niciunul dintre mesajele de pe e-mail, contactele, fișierele sau parolele." @@ -20252,8 +21340,8 @@ "Take action to secure your account": [ "Acționați pentru a vă securiza contul" ], - "There was an error generating your Recovery Kit": [ - "A apărut o eroare la generarea pachetului de recuperare." + "There was an error generating your recovery phrase": [ + "A apărut o eroare la generarea frazei de recuperare." ], "There was an error verifying your email": [ "A apărut o eroare la verificarea adresei de e-mail." @@ -20282,11 +21370,11 @@ "to recover your account if you're ever locked out": [ "pentru a vă recupera contul dacă nu îl mai puteți accesa" ], - "Update your Recovery Kit": [ - "Actualizați pachetul de recuperare" + "Update your recovery phrase": [ + "Actualizați-vă fraza de recuperare" ], - "Update your Recovery Kit?": [ - "Actualizați pachetul de recuperare?" + "Update your recovery phrase?": [ + "Vă actualizați fraza de recuperare?" ], "Verify": [ "Verificare" @@ -20303,8 +21391,8 @@ "Verify your recovery phone number": [ "Verificați numărul de telefon de recuperare" ], - "We encountered an error while generating your Recovery Kit. Please try again later, or contact support if the issue continues.": [ - "A apărut o eroare la generarea pachetului de recuperare. Reîncercați mai târziu sau contactați asistența dacă problema continuă." + "We encountered an error while generating your recovery phrase. Please try again later, or contact support if the issue continues.": [ + "A apărut o eroare la generarea frazei de recuperare. Reîncercați mai târziu sau contactați asistența dacă problema continuă." ], "We encountered an error while verifying your email. Please try again later, or contact support if the issue continues.": [ "A apărut o eroare la verificarea adresei de e-mail. Reîncercați mai târziu sau contactați asistența dacă problema continuă." @@ -20327,8 +21415,8 @@ "You can disable this at any time.": [ "Puteți oricând dezactiva aceasta." ], - "You can use the recovery phrase in this Recovery Kit to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ - "Puteți folosi fraza de recuperare din acest pachet de recuperare pentru a vă restabili complet contul atunci când vă resetați parola, așa că asigurați-vă că o păstrați în siguranță." + "You can use the recovery phrase in this recovery phrase to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ + "Puteți folosi fraza de recuperare pentru a vă restabili complet contul atunci când vă resetați parola, așa că asigurați-vă că o păstrați în siguranță." ], "You can use your email to regain access to your account if you forget your password.": [ "Vă puteți folosi adresa de e-mail pentru a vă recâștiga accesul la cont dacă vă uitați parola." @@ -20339,8 +21427,8 @@ "You can use your recovery phone to regain access to your account if you forget your password.": [ "Vă puteți folosi recuperarea prin telefon pentru a vă recâștiga accesul la cont dacă vă uitați parola." ], - "You have previously downloaded a Recovery Kit. Downloading a new one will **deactivate the old one**.": [ - "Ați descărcat anterior pachetul de recuperare. Descărcarea unui nou pachet îl va **dezactiva pe cel vechi**." + "You have previously downloaded a recovery phrase. Downloading a new one will **deactivate the old one**.": [ + "Ați descărcat anterior o frază de recuperare. Descărcarea unei noi fraze o va **dezactiva pe cea veche**." ], "You have recommended actions to safeguard your account further.": [ "Aveți acțiuni recomandate pentru a vă spori protecția contului." @@ -20405,12 +21493,6 @@ "Your recovery email is set": [ "Adresa de e-mail de recuperare este setată" ], - "Your Recovery Kit": [ - "Pachetul de recuperare" - ], - "Your Recovery Kit is set": [ - "Pachetul de recuperare este setat" - ], "Your recovery methods": [ "Metode de recuperare" ], @@ -20431,6 +21513,242 @@ ], "Your recovery phone number is:": [ "Număr de telefon de recuperare:" + ], + "Your recovery phrase": [ + "Fraza de recuperare" + ], + "Your recovery phrase is set": [ + "Fraza de recuperare este setată" + ] + }, + "safety_review": { + "${ BRAND_NAME } Account email": [ + "E-mail cont ${ BRAND_NAME }" + ], + "Account protection": [ + "Protecție cont" + ], + "Add": [ + "Adăugare" + ], + "Add an emergency contact": [ + "Adăugați un contact de urgență" + ], + "Add emergency contacts": [ + "Adăugați contacte de urgență" + ], + "Add options": [ + "Adăugare opțiuni" + ], + "Add people who you trust and can contact easily. Your emergency contact will be able to access your account and reset your password for you if needed.": [ + "Adăugați persoane în care aveți încredere și pe care le puteți contacta cu ușurință. Persoana de contact în caz de urgență vă va putea accesa contul și reseta parola, dacă este necesar." + ], + "Add people you trust and can contact easily. They will be able to help you unlock your data after you reset your password.": [ + "Adăugați persoane în care aveți încredere și pe care le puteți contacta cu ușurință. Acestea vă vor putea ajuta să vă deblocați datele după ce vă resetați parola." + ], + "Add phone number": [ + "Adăugare număr de telefon" + ], + "Add recovery contacts": [ + "Adăugare contacte de recuperare" + ], + "Add recovery email": [ + "Adăugare adresă de e-mail pentru recuperare" + ], + "Add recovery phone": [ + "Adăugare număr de telefon de recuperare" + ], + "Added emergency contacts": [ + "Contacte de urgență adăugate." + ], + "Added recovery contacts": [ + "Contacte de recuperare adăugate." + ], + "Added recovery email": [ + "Adresa de e-mail pentru recuperare a fost adăugată." + ], + "Added recovery phone": [ + "S-a adăugat numărul de telefon de recuperare." + ], + "Allow": [ + "Permitere" + ], + "Allow data recovery from this device": [ + "Permitere recuperare date de pe acest dispozitiv" + ], + "Allow password reset from the settings": [ + "Permitere resetare parolă din setări" + ], + "Allow recovery by email": [ + "Permitere recuperare prin e-mail" + ], + "Allow recovery by phone": [ + "Permitere recuperare prin telefon" + ], + "Allow scanning a QR code to sign in": [ + "Permitere scanare cod QR pentru conectare" + ], + "Allow trusted friends to unlock your data": [ + "Permiteți persoanelor de încredere să vă deblocheze datele" + ], + "Back to ${ backLink.appNameString }": [ + "Înapoi la ${ backLink.appNameString }" + ], + "Congratulations": [ + "Felicitări" + ], + "Didn’t receive it? ${ sendANewCode }": [ + "Nu l-ați primit? ${ sendANewCode }" + ], + "Done": [ + "Gata" + ], + "Download": [ + "Descărcare" + ], + "Download recovery file": [ + "Descărcare fișier de recuperare" + ], + "Downloaded recovery file": [ + "Fișier de recuperare descărcat" + ], + "Emergency contacts enabled": [ + "Contactele de urgență sunt activate." + ], + "Enable device recovery": [ + "Activare recuperare cu un dispozitiv" + ], + "Enable email recovery": [ + "Activare recuperare prin e-mail" + ], + "Enable emergency contacts": [ + "Activare contacte de urgență" + ], + "Enable password reset from settings": [ + "Activați resetarea parolei din setări." + ], + "Enable phone recovery": [ + "Activare recuperare cu număr de telefon" + ], + "Enable QR code sign-in": [ + "Activare conectare cu cod QR" + ], + "Enabled device recovery": [ + "Recuperarea cu un dispozitiv a fost activată." + ], + "Enabled email recovery": [ + "Recuperare prin e-mail activată." + ], + "Enabled password reset from settings": [ + "Resetare parolă din setări activată." + ], + "Enabled phone recovery": [ + "Recuperare cu număr de telefon a fost activată." + ], + "Enabled QR code sign-in": [ + "Conectarea cu cod QR activată." + ], + "Got it": [ + "Am înțeles" + ], + "Here's how you increased your account protection:": [ + "Iată cum v-ați sporit protecția contului:" + ], + "If you forget your password, you can sign in using a QR code. All you need is to be signed in to a ${ BRAND_NAME } service on another device.": [ + "Dacă vă uitați parola, vă puteți conecta folosind un cod QR. Tot ce trebuie să faceți este să fiți conectat la un serviciu ${ BRAND_NAME } pe un alt dispozitiv." + ], + "If you get locked out of your ${ BRAND_NAME } Account, it will allow you to sign in and recover your data. It’s the only way to instantly restore everything, so make sure you keep it somewhere safe.": [ + "Dacă accesul la contul ${ BRAND_NAME } vi se blochează, aceasta vă va permite să vă conectați și să vă recuperați datele. Este singura modalitate de a restaura instantaneu totul, așa că asigurați-vă că o păstrați într-un loc sigur." + ], + "Later": [ + "Mai târziu" + ], + "Protect your legacy with Emergency Access": [ + "Protejați-vă moștenirea cu accesul de urgență" + ], + "Save recovery phrase": [ + "Salvare frază de recuperare" + ], + "Saved recovery phrase": [ + "Frază de recuperare salvată." + ], + "They must already have a ${ BRAND_NAME } Account.": [ + "Trebuie să aibă deja un cont ${ BRAND_NAME }." + ], + "They will not be able to see or access your data.": [ + "Nu vă vor putea vedea sau accesa datele." + ], + "This will let you quickly access your ${ BRAND_NAME } Account so you can change your password.": [ + "Acest lucru vă va permite să vă accesați rapid contul ${ BRAND_NAME }, astfel încât să vă puteți schimba parola." + ], + "This will let you reset your account password if you’ve lost it, but are still signed in to ${ BRAND_NAME }. It’s often the easiest way to recover your account if you’re signed in.": [ + "Acest lucru vă va permite să resetați parola contului dacă ați pierdut-o, dar încă aveți un dispozitiv conectat la ${ BRAND_NAME }. Adesea, este cea mai ușoară modalitate de a vă recupera contul dacă aveți acces la cont." + ], + "This will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset.": [ + "Acesta va restabili accesul la e-mailuri, contacte, fișiere, parole și orice alte date criptate din cont după resetarea parolei." + ], + "To make sure the email address is yours, enter the verification code sent to ${ boldEmail }.": [ + "Pentru a ne asigura că adresa de e-mail vă aparține, introduceți codul de verificare trimis la ${ boldEmail }." + ], + "To make sure the phone number is yours, enter the verification code sent to ${ boldPhoneNumber }.": [ + "Pentru a ne asigura că numărul de telefon vă aparține, introduceți codul de verificare trimis la ${ boldPhoneNumber }." + ], + "To make sure this address is really yours, we’ll send an email with a verification link.": [ + "Pentru a ne asigura că această adresă vă aparține, vă vom trimite un e-mail cu o legătură web de verificare." + ], + "Upgrade your plan to enable Emergency Access to your account. This will allow you to designate 1 to 5 people who will be able to reset your password for you.": [ + "Modificați-vă abonamentul pentru a activa accesul de urgență la cont. Acest lucru vă va permite să desemnați între 1 și 5 persoane care vor putea să vă reseteze parola." + ], + "Verified password": [ + "Parola a fost verificată." + ], + "Verified recovery email": [ + "E-mail de recuperare verificat." + ], + "Verified recovery phone": [ + "Număr de telefon de recuperare verificat." + ], + "Verify": [ + "Verificare" + ], + "Verify password": [ + "Verificați parola" + ], + "Verify recovery email": [ + "Verificare e-mail de recuperare" + ], + "Verify recovery phone": [ + "Verificare număr de telefon de recuperare" + ], + "Verify your recovery email": [ + "Verificați adresa de e-mail de recuperare" + ], + "Verify your recovery phone": [ + "Verificați numărul de telefon de recuperare" + ], + "You can save a data backup on this device. This will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset, simply by signing in on this device.": [ + "Poți salva o copie de rezervă a datelor pe acest dispozitiv. Aceasta va restabili accesul la e-mailuri, contacte, fișiere, parole și orice alte date criptate din cont după resetarea parolei, pur și simplu conectându-vă pe acest dispozitiv." + ], + "You can use email verification to regain access to your account if you forget your password.": [ + "Poți folosi verificarea prin e-mail pentru a recâștiga accesul la cont dacă v-ați uitat parola." + ], + "You can use SMS verification to regain access to your account if you forget your password.": [ + "Poți folosi verificarea prin SMS pentru a recâștiga accesul la cont dacă v-ați uitat parola." + ], + "You can use your recovery email to regain access to your account if you forget your password.": [ + "Vă puteți folosi adresa de e-mail de recuperare pentru a vă recâștiga accesul la cont dacă vă uitați parola." + ], + "You can use your recovery phone to regain access to your account if you forget your password.": [ + "Vă puteți folosi recuperarea prin telefon pentru a vă recâștiga accesul la cont dacă vă uitați parola." + ], + "You don’t need to open or read the file—just download it and store it somewhere safe.": [ + "Nu trebuie să deschideți sau să citiți fișierul - trebuie doar să îl descărcați și să îl stocați într-un loc sigur." + ], + "Your recovery checklist": [ + "Lista de setări pentru recuperare" + ], + "Your security setup": [ + "Configurația de securitate" ] }, "saml: Action": { @@ -20636,6 +21954,17 @@ "Nu s-au găsit rezultate" ] }, + "Sentinel banner": { + "To ensure the highest possible security of your account, disable recovery via email and SMS.": [ + "Pentru a asigura cea mai înaltă securitate posibilă a contului, dezactivați recuperarea prin e-mail și SMS." + ], + "To make sure that you can always access your ${ BRAND_NAME } Account, download your recovery phrase.": [ + "Pentru a vă asigura că puteți să vă accesați întotdeauna contul ${ BRAND_NAME }, descărcați fraza de recuperare." + ], + "You have recommended actions from ${ PROTON_SENTINEL_NAME }": [ + "Aveți acțiuni recomandate de la ${ PROTON_SENTINEL_NAME }" + ] + }, "Server-Info": { "active": [ "activ" @@ -20919,6 +22248,9 @@ ] }, "session_recovery:settings:info": { + "To disallow password reset from settings, you must save your recovery phrase.": [ + "Pentru a dezactiva resetarea parolei din setări, trebuie să salvați fraza de recuperare." + ], "To disallow password reset, you must have a recovery method set up.": [ "Pentru a bloca resetarea parolei, trebuie să aveți o metodă de recuperare activată." ], @@ -20977,11 +22309,8 @@ ] }, "Setting": { - "Enable Photos section": [ - "Activare secțiune „Fotografii”" - ], "Get updates about comments via email": [ - "Obținere actualizări despre comentarii prin e-mail" + "Obținere actualizări pe e-mail despre comentarii" ], "Include document name in email notifications": [ "Includere nume documente în notificările de pe e-mail" @@ -21456,7 +22785,7 @@ "Țări servere VPN: ${ vpnServersCountData.free.countries }" ], "We’ll email you before your trial ends.": [ - "Veți primi un mesaj pe e-mail înainte de expirarea perioadei de probare." + "Veți primi un mesaj pe e-mail înainte de expirarea perioadei de evaluare." ], "Yearly": [ "Anual" @@ -21869,11 +23198,35 @@ ] }, "Spotlight": { + "Assign delegated roles": [ + "Atribuiți roluri delegate" + ], + "Assign roles": [ + "Atribuiți roluri" + ], + "Click a user's name to manage their role and permissions.": [ + "Faceți clic pe numele unui utilizator pentru a-i gestiona rolul și permisiunile." + ], + "Click Edit to assign roles to this group and manage member access automatically.": [ + "Faceți clic pe Editare pentru a atribui roluri acestui grup și a gestiona automat accesul membrilor." + ], "Earn up to ${ maxRewardAmount } in credit": [ "Câștigați până la ${ maxRewardAmount } în credite." ], "Get credits when the person you invite subscribes to a ${ BRAND_NAME } plan.": [ "Obțineți credite când persoana pe care o invitați se abonează la un plan ${ BRAND_NAME }." + ], + "New: Roles and permissions tab": [ + "Nou: fila de roluri și permisiuni" + ], + "Open this tab to grant specific permissions without full admin access.": [ + "Deschideți această filă pentru a acorda anumite permisiuni fără acces complet de administrator." + ], + "User roles available": [ + "Roluri de utilizator disponibile" + ], + "You can now assign roles to individual users from this tab.": [ + "Din această filă acum puteți atribui roluri utilizatorilor individuali." ] }, "sso": { @@ -22171,6 +23524,61 @@ "Vi se anulează abonamentul, așteptați." ] }, + "Status": { + "${ count } person": [ + "${ count } persoană", + "${ count } persoane", + "${ count } de persoane" + ], + "Add a phone number": [ + "Adăugați un număr de telefon" + ], + "Add an email address": [ + "Adăugați o adresă de e-mail" + ], + "Available on this device": [ + "Disponibil pe acest dispozitiv" + ], + "Disable recovery by email": [ + "Dezactivare recuperare prin e-mail" + ], + "Disable recovery by phone": [ + "Dezactivare recuperare cu număr de telefon" + ], + "Generate a recovery phrase": [ + "Generare frază de recuperare" + ], + "Last changed ${ formattedDate }": [ + "Ultima modificare ${ formattedDate }" + ], + "Last updated ${ formattedUpdateDate }": [ + "Ultima actualizare ${ formattedUpdateDate }" + ], + "Not saved": [ + "Nesalvat" + ], + "Off": [ + "Dezactivat" + ], + "On": [ + "Activată" + ], + "Outdated": [ + "Expirat" + ], + "Saved": [ + "Salvat" + ], + "Unverified": [ + "Neverificat" + ], + "Verified": [ + "Verificat" + ], + "Verify ${ value }": [ + "Verificare ${ value }" + ] + }, "Step in filter modal": { "Actions": [ "Acțiuni" @@ -22341,7 +23749,7 @@ "Data facturii următoare" ], "To continue your subscription after the free trial ends, add a payment method before ${ props.periodEnd }.": [ - "Pentru a continua abonamentul după încheierea perioadei de probare gratuită, adăugați o metodă de plată înainte de ${ props.periodEnd }." + "Pentru a continua abonamentul după încheierea perioadei de evaluare gratuită, adăugați o metodă de plată înainte de ${ props.periodEnd }." ], "Total due": [ "Total datorat" @@ -22879,12 +24287,54 @@ ] }, "Subtitle": { + "${ DRIVE_PLUS_NAME } offers 1 TB storage for your files and photos. You are also eligible for yearly storage bonuses.": [ + "${ DRIVE_PLUS_NAME } oferă 1 TiB de spațiu de stocare pentru fișierele și fotografiile personale. Primiți și bonusuri anuale de spațiu de stocare." + ], + "${ DRIVE_PLUS_NAME } offers 200 GB storage for your files and photos. You are also eligible for yearly storage bonuses.": [ + "${ DRIVE_PLUS_NAME } oferă 200 GiB de spațiu de stocare pentru fișierele și fotografiile personale. Primiți și bonusuri anuale de spațiu de stocare." + ], + "${ planTitle } gives you access to all apps and premium features. Privacy is built-in so you can get on with it, knowing your data and identity are safe.": [ + "${ planTitle } vă oferă acces la toate aplicațiile și funcțiile premium. Confidențialitatea este inclusă, astfel încât să puteți continua, știind că datele și identitatea vă sunt în siguranță." + ], + "${ planTitle } gives you all apps, all features, early access to new releases, and everything you need to be in control of your data and its security.": [ + "${ planTitle } vă oferă toate aplicațiile, toate funcțiile, acces timpuriu la versiuni noi și tot ce aveți nevoie pentru a avea controlul asupra datelor și asupra securității acestora." + ], + "${ planTitle } gives you unlimited privacy and more storage for up to 2 people.": [ + "${ planTitle } vă oferă confidențialitate nelimitată și mai mult spațiu de stocare pentru până la două persoane." + ], + "${ planTitle } gives your team all the collaboration tools they need to be productive and organized in their work, while safeguarding your business.": [ + "${ planTitle } vă oferă echipei toate instrumentele de colaborare de care are nevoie pentru a fi productivă și organizată în activitatea sa, protejându-vă în același timp afacerea." + ], + "${ planTitle } gives your team what they need to be more productive and organized in their work with access to all ${ BRAND_NAME } apps and their advanced features.": [ + "${ planTitle } vă oferă echipei tot ce are nevoie pentru a fi mai productivă și organizată în muncă, cu acces la toate aplicațiile ${ BRAND_NAME } și la funcțiile lor premium." + ], + "${ planTitle } gives your team what they need to be more productive, organized, and in control of their inbox, schedule, and more.": [ + "${ planTitle } vă oferă echipei ceea ce are nevoie pentru a fi mai productivă, organizată și să-și controleze contul de e-mail, planificările și multe altele." + ], + "${ planTitle } goes beyond the basics to help you be more productive, organized, and in control of your inbox, email identity, and more.": [ + "${ planTitle } depășește funcțiile de bază, pentru a vă ajuta să aveți o productivitate sporită, organizare și să controlați contul de e-mail, identitatea adresei de e-mail și multe altele." + ], + "${ planTitle } helps you ensure that each of your family members — and their data — are protected whenever they’re online.": [ + "${ planTitle } vă ajută să vă asigurați că fiecare dintre membrii familiei – și datele acestora – sunt protejați ori de câte ori sunt online." + ], + "Compare the key differences that matter for your business.": [ + "Comparați diferențele cheie care contează pentru afacerea proprie." + ], "Free forever": [ "Gratuit întotdeauna" ], "per month, billed annually": [ "pe lună, facturat anual" ], + "Save 50% for 1 year, and keep full access": [ + "Economisiți 50% pentru un an și păstrați accesul complet" + ], + "Save 50% for 6 months, and keep full access": [ + "Economisiți 50% pentru 6 luni și păstrați accesul complet" + ], + "See how ${ MAIL_APP_NAME } compares, and why our independence makes a difference.": [ + "Vedeți cum se compară ${ MAIL_APP_NAME } și de ce independența noastră face diferența." + ], "View VPN session details for your organization.": [ "Vizualizați detaliile sesiunii VPN pentru organizație." ] @@ -22893,6 +24343,9 @@ "Account deleted. Signing out...": [ "Cont șters. Se deconectează..." ], + "Activation link copied to clipboard": [ + "Legătura web de activare s-a copiat în memorie." + ], "Address added": [ "Adresă adăugată" ], @@ -23016,9 +24469,6 @@ "Organization logo updated": [ "S-a actualizat sigla organizației" ], - "Organization name set": [ - "Nume organizație setat" - ], "Organization name updated": [ "S-a actualizat numele organizației" ], @@ -23208,6 +24658,9 @@ ], "/user per month": [ "/utilizator pe lună" + ], + "/year": [ + "/an" ] }, "Suffix for price": { @@ -23237,6 +24690,14 @@ "Protejați-vă fișierele cu stocarea criptată în cloud. Include sincronizare automată, partajare criptată a fișierelor și multe altele." ] }, + "Tab": { + "For personal use": [ + "Pentru uz personal" + ], + "For professional use": [ + "Pentru uz profesional" + ] + }, "Tab in domain modal": { "Addresses": [ "Adrese" @@ -23325,6 +24786,14 @@ "Nu s-au găsit coduri de acces SMTP" ] }, + "Temporary need": { + "Continue cancelling": [ + "Continuare anulare" + ], + "Keep current plan": [ + "Păstrare plan curent" + ] + }, "Theme": { "Auto": [ "Automat" @@ -23516,12 +24985,18 @@ "Actions": [ "Acțiuni" ], + "Activate multi-user support": [ + "Activare suport utilizatori multipli" + ], "Activate organization key": [ "Activare chei organizație" ], "Activate user": [ "Activare utilizator" ], + "Activate your email": [ + "Activați-vă adresa de e-mail" + ], "Activity monitor": [ "Monitorizare activitate" ], @@ -23533,12 +25008,21 @@ "Add a custom logo": [ "Adăugare logo personal" ], + "Add a recovery contact": [ + "Adăugare contact de recuperare" + ], "Add address": [ "Adăugare adresă" ], + "Add an emergency contact": [ + "Adăugare contact de urgență" + ], "Add another notification to remind you of this event": [ "Adăugare altă notificare pentru reamintirea acestui eveniment" ], + "Add categories": [ + "Adăugare categorii" + ], "Add contact group name": [ "Adăugare nume grup contacte" ], @@ -23599,6 +25083,9 @@ "Address and key verification": [ "Verificare adresă și cheie" ], + "Advanced recovery options": [ + "Opțiuni de recuperare avansate" + ], "Allocate storage": [ "Alocare spațiu" ], @@ -23617,9 +25104,6 @@ "An address for each role": [ "O adresă pentru fiecare rol" ], - "An error occurred": [ - "A apărut o eroare" - ], "Annual": [ "Anual" ], @@ -23713,6 +25197,9 @@ "Catch-all address": [ "Adresă de agregare" ], + "Categories": [ + "Categorii" + ], "Change login password": [ "Modificare parolă conectare" ], @@ -23767,18 +25254,12 @@ "Confirm": [ "Confirmare" ], - "Confirm address": [ - "Confirmare adresă" - ], "Confirm downgrade": [ "Confirmare modificare la plan inferior" ], "Confirm loss of ${ BRAND_NAME } bonuses": [ "Confirmare pierdere bonusuri ${ BRAND_NAME }" ], - "Confirm phone number": [ - "Confirmați numărul de telefon" - ], "Connect ${ name }": [ "Conectare ${ name }" ], @@ -23803,12 +25284,18 @@ "Connect your custom domain": [ "Conectați-vă domeniul personal" ], + "Connected emails": [ + "Adrese conectate" + ], "Connection status": [ "Stare conexiune" ], "Contact us": [ "Contactați-ne" ], + "Continue with free storage": [ + "Continuare cu spațiu gratuit" + ], "Continue with partial import?": [ "Continuați cu importarea parțială?" ], @@ -23835,6 +25322,9 @@ "Create a new gateway": [ "Creare poartă de acces" ], + "Create a new password": [ + "Creați o parolă nouă" + ], "Create Gateway": [ "Creare poartă de acces" ], @@ -23916,6 +25406,12 @@ "Data recovery": [ "Recuperare date" ], + "Data recovery contacts": [ + "Contacte pentru recuperarea datelor" + ], + "Data recovery options": [ + "Opțiuni de recuperare date" + ], "Data retention": [ "Păstrare date" ], @@ -23925,6 +25421,9 @@ "Day theme": [ "Temă albă" ], + "Deactivate current phrase?": [ + "Dezactivați fraza actuală?" + ], "Decrypt key": [ "Cheie decriptare" ], @@ -23996,6 +25495,9 @@ "Device": [ "Dispozitiv" ], + "Device data backup": [ + "Conservare date dispozitiv" + ], "Device name": [ "Nume dispozitiv" ], @@ -24005,6 +25507,9 @@ "Disable categories?": [ "Dezactivați categoriile?" ], + "Disable device data backup?": [ + "Dezactivați conservarea datelor pe dispozitiv?" + ], "Disable two-factor authentication": [ "Dezactivare autentificare cu doi factori" ], @@ -24020,6 +25525,9 @@ "Disconnected from Gmail": [ "Deconectat de la Gmail" ], + "Dismiss setup checklist": [ + "Ignorare listă de verificare configurare" + ], "Display name and signature": [ "Numele afișat și semnătura" ], @@ -24056,6 +25564,9 @@ "Download the mobile apps": [ "Descărcați aplicațiile pentru dispozitive mobile" ], + "Download your recovery phrase": [ + "Descărcați fraza de recuperare" + ], "Downloads": [ "Descărcări" ], @@ -24120,7 +25631,7 @@ "Breșe adrese de e-mail" ], "Email categories": [ - "Categorii de e-mail" + "Categorii de mesaje" ], "Email composer": [ "Editor mesaj e-mail" @@ -24134,6 +25645,9 @@ "Email privacy": [ "Confidențialitate mesaje" ], + "Email verification": [ + "Verificare e-mail" + ], "Emergency access": [ "Acces de urgență" ], @@ -24193,6 +25707,9 @@ "Feature access": [ "Accesare funcție" ], + "Fewer distractions, more focus": [ + "Mai puține distrageri, mai multă concentrare" + ], "Filter for more focus": [ "Filtru pentru concentrare mai bună" ], @@ -24223,12 +25740,12 @@ "Forward emails": [ "Transferare mesaje" ], - "Forwardings": [ - "Transferări" - ], "Free": [ "Gratuit" ], + "Free plan": [ + "Plan gratuit" + ], "Gateway": [ "Poartă de acces" ], @@ -24259,6 +25776,9 @@ "Get ${ planMaxSpace } storage for your files, photos and documents with ${ planName }. ${ upgradeButton }": [ "Obțineți ${ planMaxSpace } spațiu de stocare pentru fișierele, fotografiile și documentele personale cu ${ planName }. ${ upgradeButton }" ], + "Get ${ VPN_APP_NAME } on your TV": [ + "Luați ${ VPN_APP_NAME } pentru TV" + ], "Get ${ vpnPlus } to access all servers": [ "Obțineți ${ vpnPlus } pentru a accesa toate serverele" ], @@ -24289,6 +25809,12 @@ "Get more from your VPN": [ "Obțineți mai mult de la VPN" ], + "Get more storage with ${ MAIL_APP_NAME } Plus": [ + "Obțineți mai mult spațiu cu ${ MAIL_APP_NAME } Plus" + ], + "Get started": [ + "Să începem" + ], "Get the app on all your devices and enjoy safe, seamless access anywhere.": [ "Obțineți aplicația pe toate dispozitivele și bucurați-vă de o accesare sigură, fără întreruperi oriunde." ], @@ -24319,9 +25845,15 @@ "Help center": [ "Centru de ajutor" ], + "Helping activists in Hong Kong": [ + "Ajurarea activiștilor din Hong Kong" + ], "Home": [ "Început" ], + "How ${ MAIL_APP_NAME } is different": [ + "Cum este diferit ${ MAIL_APP_NAME }" + ], "How did you find out about us?": [ "Cum ați aflat de noi?" ], @@ -24329,7 +25861,7 @@ "Cum să alegeți un logo bun" ], "How your free trial works": [ - "Cum funcționează probarea gratuită" + "Cum funcționează evaluarea gratuită" ], "Human verification": [ "Verificare persoană" @@ -24435,9 +25967,15 @@ "Link confirmation": [ "Confirmare legătură web" ], + "Lower your cost without losing features": [ + "Reduceți costurile fără a pierde din funcționalități" + ], "Main password": [ "Parola principală" ], + "Make your business stand out": [ + "Scoateți-vă afacerea în evidență" + ], "Manage files across devices on Windows, Mac, Android, and iOS.": [ "Gestionați fișierele pe diferite dispozitive, pe Windows, Mac, Android și iOS." ], @@ -24492,6 +26030,9 @@ "No events": [ "Nu există evenimente" ], + "No events yet": [ + "Încă nu există evenimente" + ], "No need to empty the trash": [ "Nu trebuie să goliți gunoiul" ], @@ -24546,12 +26087,18 @@ "Other sign-in issues": [ "Alte probleme de conectare" ], + "Our fight against censorship in Russia": [ + "Lupta noastră împotriva cenzurii în Rusia" + ], "Password": [ "Parola" ], "Password generator rules": [ "Reguli generator de parole" ], + "Password reset options": [ + "Opțiuni de resetare parolă" + ], "Password reset settings": [ "Setări resetare parolă" ], @@ -24585,9 +26132,6 @@ "Phone": [ "Telefon" ], - "Photos": [ - "Fotografii" - ], "Pin the extension": [ "Fixare extensie" ], @@ -24624,6 +26168,9 @@ "QR Code": [ "Cod QR" ], + "QR code sign-in": [ + "Conectare cu cod QR" + ], "Ready, set, forward": [ "Pregătit, gata, înainte" ], @@ -24648,6 +26195,9 @@ "Recovery file": [ "Fișier de recuperare" ], + "Recovery phrase": [ + "Fraza de recuperare" + ], "Refer a friend": [ "Recomandați persoane" ], @@ -24666,9 +26216,15 @@ "Remove domain": [ "Eliminare domeniu" ], + "Remove email": [ + "Eliminare e-mail" + ], "Remove forwarding address": [ "Eliminare adresă de transferare" ], + "Remove recovery phone number": [ + "Eliminare număr de telefon de recuperare" + ], "Remove server?": [ "Eliminați serverul?" ], @@ -24840,6 +26396,9 @@ "Sign in on TV": [ "Conectare pe TV" ], + "Sign in on TV?": [ + "Conectare pe TV?" + ], "Sign in to join the Beta program": [ "Autentificați-vă pentru a vă alătura programului beta" ], @@ -24855,6 +26414,9 @@ "Signed in to member account": [ "Conectat în cont de membru" ], + "Signed-in reset": [ + "Resetare cu sesiune activă" + ], "Simplify email distribution": [ "Simplificați distribuirea mesajelor" ], @@ -24864,12 +26426,21 @@ "Single sign-on": [ "Autentificare unică" ], + "SMS verification": [ + "Verificare prin SMS" + ], "SMTP submission": [ "Trimitere SMTP" ], "Snooze:": [ "Amânare:" ], + "Some of your encrypted data is locked": [ + "Unele date criptate sunt blocate" + ], + "Something went wrong": [ + "Ceva nu a mers bine." + ], "Sort folders alphabetically": [ "Sortare alfabetică foldere" ], @@ -24897,6 +26468,9 @@ "Status": [ "Stare" ], + "Stay secure and connected anywhere": [ + "Rămâneți în siguranță și vă conectați oriunde" + ], "Strengthen your security on all your devices with ${ passPlusPlanName }. ${ upgradeButton }": [ "Consolidați-vă securitatea pe toate dispozitivele cu ${ passPlusPlanName }. ${ upgradeButton }" ], @@ -24920,6 +26494,9 @@ "Support ticket closed": [ "Tichet de asistență închis" ], + "Support your compliance objectives": [ + "Susțineți-vă obiectivele de conformitate" + ], "Switch account": [ "Comutare cont" ], @@ -24989,6 +26566,9 @@ "Type": [ "Tip" ], + "Unblocking internet access in Iran": [ + "Deblocarea accesului la internet în Iran" + ], "Unlock your data": [ "Deblocați-vă datele" ], @@ -25058,6 +26638,9 @@ "Verify it’s you": [ "Verificați-vă autenticitatea" ], + "Verify your email": [ + "Verificați adresa de email" + ], "Verifying your card...": [ "Verificare card..." ], @@ -25082,6 +26665,9 @@ "Warning: suspected fake website": [ "Avertisment: suspectare site fals" ], + "We sent you a code to your email to make sure it’s you. This code is valid for 10 minutes. Please enter it below.": [ + "Vi s-a trimis un cod la adresa de e-mail pentru a ne asigura că dețineți contul. Acest cod este valabil 10 minute. Trebuie să îl introduceți mai jos." + ], "We'll send an email to your new address with instructions on completing the change.": [ "Veți primi un mesaj pe e-mail la noua adresă cu instrucțiuni pentru finalizarea modificării." ], @@ -25097,6 +26683,9 @@ "Welcome to your new password manager!": [ "Bun venit la noul manager de parole!" ], + "What changes if you switch to the Free plan": [ + "Ce se modifică dacă vă comutați la planul gratuit" + ], "What is an alias?": [ "Ce este un alias?" ], @@ -25130,6 +26719,12 @@ "Your ${ planTitle } subscription has started": [ "Abonamentul ${ planTitle } a început" ], + "Your admin at ${ orgName } is inviting you to activate your new secure ${ BRAND_NAME } account and update your password.": [ + "Administratorul de la ${ orgName } vă invită să vă activați noul cont securizat ${ BRAND_NAME } și să vă actualizați parola." + ], + "Your admin is inviting you to activate your new secure ${ BRAND_NAME } account and update your password.": [ + "Administratorul vă invită să vă activați noul cont securizat ${ BRAND_NAME } și să vă actualizați parola." + ], "Your calendar link": [ "legătură web calendar" ], @@ -25142,6 +26737,15 @@ "Your plan": [ "Plan actual" ], + "Your recovery file": [ + "Fișierul de recuperare" + ], + "Your recovery phrase": [ + "Fraza de recuperare" + ], + "Your recovery setup": [ + "Starea actuală de recuperare" + ], "Your referrals": [ "Persoane recomandate" ], @@ -25274,6 +26878,24 @@ "Admins can manage user accounts and give admin privileges to other users. Only the primary admin can edit the plan of the organization.": [ "Administratorii pot gestiona conturile de utilizatori și să acorde drepturi de administrare altor utilizatori. Doar administratorul principal poate modifica planul organizației." ], + "Allow recovering your account with a one-time code sent to your recovery email": [ + "Permite recuperarea contului cu un cod unic trimis pe adresa de e-mail de recuperare." + ], + "Allow recovering your account with a one-time code sent to your recovery phone": [ + "Permite recuperarea contului cu un cod unic trimis pe numărul de telefon de recuperare." + ], + "Allow resetting your password from the account settings": [ + "Permite resetarea parolei din setările contului." + ], + "Allow scanning a QR code from a ${ BRAND_NAME } mobile app to sign in": [ + "Permite scanarea unui cod QR dintr-o aplicație mobilă ${ BRAND_NAME } pentru conectare." + ], + "Allow trusted contacts to request access to your account": [ + "Permiteți contactelor de încredere să vă solicite acces la cont." + ], + "Allow trusted contacts to unlock your encrypted data after a password reset": [ + "Permiteți contactelor de încredere să vă deblocheze datele criptate după resetarea parolei." + ], "Allows to seamlessly add Zoom video conferencing links to your calendar invitations.": [ "Permite adăugarea fără probleme a legăturilor web de conferințe video Zoom la invitațiile personale din calendar." ], @@ -25310,6 +26932,9 @@ "Each imported email will have this label": [ "Fiecare e-mail importat va avea această etichetă." ], + "Early access to new apps and features.": [ + "Acces timpuriu la aplicațiile și funcțiile noi." + ], "Edit folder names": [ "Editare nume foldere" ], @@ -25358,6 +26983,12 @@ "If you purchased a gift code or received one from our support team, you can enter it here.": [ "Dacă ați cumpărat un cod cadou sau ați primit unul de la echipa de asistență, îl puteți folosi aici." ], + "Includes custom email domains and unlimited hide-my-email aliases in ${ MAIL_APP_NAME }, access to servers in 120+ countries in ${ VPN_SHORT_APP_NAME }, built-in 2FA and secure sharing in ${ PASS_SHORT_APP_NAME }, and more.": [ + "Include domenii de e-mail personale și aliasuri nelimitate de tip „hide-my-email” în ${ MAIL_APP_NAME }, acces la servere în peste 120 de țări în ${ VPN_SHORT_APP_NAME }, A2F încorporată, partajare securizată în ${ PASS_SHORT_APP_NAME } și multe altele." + ], + "Includes professional email at @yourdomain.com, cloud storage with collaborative document editing, scheduling and video conferencing, password management, a secure ${ VPN_SHORT_APP_NAME }, and more.": [ + "Include e-mail profesional la @domeniulmeu.com, stocare în cloud cu editare colaborativă a documentelor, planificare și videoconferințe, gestionarea parolelor, o aplicație securizată ${ VPN_SHORT_APP_NAME } și multe altele." + ], "Members who do not use 2FA will get an email asking them to enable it as soon as possible. Single sign-on users will not receive the email reminder.": [ "Membrii care nu folosesc A2F vor primi un e-mail prin care li se va cere să îl activeze cât mai curând posibil. Utilizatorii cu autentificare unică nu vor primi acest mesajul." ], @@ -25379,6 +27010,15 @@ "Remove metadata from images to protect your privacy.": [ "Eliminați metadatele din imagini pentru a vă proteja confidențialitatea." ], + "Save 12-word long phrase to unlock your account and your encrypted data instantly if you forgot your password": [ + "Salvați o frază de 12 cuvinte pentru a debloca instantaneu contul și datele criptate dacă ați uitat parola." + ], + "Save an encryption backup file in this browser to recover your data after a password reset": [ + "Salvați un fișier de rezervă de criptare în acest navigator web pentru a recupera datele după o resetare a parolei." + ], + "Save an encryption backup file to recover your data after a password reset": [ + "Salvați un fișier de rezervă de criptare pentru a recupera datele după o resetare a parolei." + ], "See number of unread messages in the tab icon": [ "Afișare număr mesaje necitite pe pictograma filei." ], @@ -25451,8 +27091,8 @@ "This feature is only available on Beta": [ "Această funcție este disponibilă doar în versiunea beta." ], - "This is the default key used by other ${ MAIL_APP_NAME } users on older mobile apps to encrypt data they send to you": [ - "Aceasta este cheia implicită folosită de alți utilizatori ${ MAIL_APP_NAME } din aplicațiile mobile mai vechi pentru a cripta datele pe care vi le trimit." + "This is the default key used by other ${ MAIL_APP_NAME } users on older apps to encrypt data they send to you": [ + "Aceasta este cheia implicită folosită de alți utilizatori ai ${ MAIL_APP_NAME } din aplicațiile mai vechi pentru a cripta datele pe care vi le trimit." ], "This is the default key used by other ${ MAIL_APP_NAME } users to encrypt data they send to you": [ "Aceasta este cheia implicită folosită de alți utilizatori ${ MAIL_APP_NAME } pentru a cripta datele pe care vi le trimit." @@ -25540,6 +27180,9 @@ "User is a group": [ "Utilizatorul este un grup" ], + "via ${ groupName }": [ + "via ${ groupName }" + ], "Waiting for user to accept the invitation": [ "Se așteaptă ca utilizatorul să accepte invitația" ] @@ -25865,6 +27508,12 @@ ] }, "user_modal": { + "(via ${ groupName })": [ + "(via ${ groupName })" + ], + "(via group)": [ + "(via grup)" + ], "Add delegated roles to a user to grant them only the specific permissions they need, keeping full-admin power separate and your environment secure.": [ "Adăugați roluri delegate unui utilizator pentru a-i acorda doar permisiunile specifice de care are nevoie, păstrând puterea de administrator complet separată și mediul securizat." ], @@ -26265,11 +27914,14 @@ "${ BRAND_NAME } will transfer as much data as possible, starting with your most recent messages.": [ "${ BRAND_NAME } va transfera cât mai multe date posibil, începând cu cele mai recente mesaje." ], - "Are you sure you want to delete the phone number?": [ - "Ștergeți acest număr de telefon?" + "Are you sure you want to remove your notification email?": [ + "Sigur doriți să eliminați mesajele de notificare?" ], - "Are you sure you want to delete this address?": [ - "Ștergeți aceste adrese?" + "Are you sure you want to remove your recovery email?": [ + "Sigur doriți să eliminați adresa de e-mail de recuperare?" + ], + "Are you sure you want to remove your recovery phone number?": [ + "Sigur doriți să eliminați numărul de telefon de recuperare?" ], "By deleting this address, you will no longer be able to receive daily email notifications.": [ "Ștergând această adresă, nu veți mai putea primi notificările zilnice." @@ -26280,8 +27932,8 @@ "By deleting this address, you will no longer be able to recover your account.": [ "Ștergând această adresă, nu veți mai putea să vă recuperați contul." ], - "By deleting this phone number, you will no longer be able to recover your account.": [ - "Ștergând acest număr de telefon, nu veți mai putea să vă recuperați contul." + "By removing this phone number, you will no longer be able to recover your account.": [ + "Eliminând acest număr de telefon, nu veți mai putea să vă recuperați contul." ], "Could not login. Please open ${ PASS_APP_NAME } browser extension and login from there.": [ "Nu s-a putut realiza conectarea. Deschideți extensia de navigator web ${ PASS_APP_NAME } și realizați conectarea de acolo." @@ -26353,7 +28005,7 @@ "Nu veți mai vedea această înregistrare importată în listă." ], "Your free trial ends on ${ textDate }. ${ action }": [ - "Perioada de probare se încheie în curând la ${ textDate }. ${ action }" + "Perioada de evaluare se încheie în curând la ${ textDate }. ${ action }" ], "Your recovery file is outdated. It can't recover new data if you reset your password again.": [ "Fișierul de recuperare este vechi. Nu vă poate recupera datele dacă vă veți mai reseta parola." @@ -26362,7 +28014,7 @@ "Fraza de recuperare este veche. Nu vă poate recupera datele dacă vă veți mai reseta parola." ], "Your trial will end on ${ textDate }. You won’t be charged if you cancel before ${ textDate }. ${ action }": [ - "Perioada de probare se va încheia la ${ textDate }. Nu vă vom taxa dacă anulați înainte de ${ textDate }. ${ action }" + "Perioada de evaluare se va încheia la ${ textDate }. Nu vă vom taxa dacă anulați înainte de ${ textDate }. ${ action }" ] }, "Warning for domain modal": { diff --git a/applications/account/locales/ru_RU.json b/applications/account/locales/ru_RU.json index dca442a964b..54b93ea1107 100644 --- a/applications/account/locales/ru_RU.json +++ b/applications/account/locales/ru_RU.json @@ -3737,9 +3737,6 @@ "No one in your organization can connect to shared servers.": [ "Никто из вашей организации не может подключиться к общим серверам." ], - "Send a code to your recovery email or phone": [ - "Отправить код на ваш резервный адрес электронной почты или телефон" - ], "Set up accounts for all users and invite them to join ${ BRAND_NAME }.": [ "Настроить аккаунты для всех пользователей и пригласить их присоединиться к ${ BRAND_NAME }." ], @@ -4350,9 +4347,6 @@ "Disabled": [ "Отключенный" ], - "None": [ - "Ничего не найдено" - ], "Only ": [ "Только " ], @@ -4726,9 +4720,6 @@ "Please try again in a few moments.": [ "Пожалуйста, попробуйте еще раз чуть позже." ], - "Please upgrade to a business plan with more than 1 user to get multi-user support": [ - "Пожалуйста, перейдите на бизнес-план с более чем 1 пользователем, чтобы получить многопользовательскую поддержку" - ], "Please upgrade to a business plan with more than 1 user to manage multiple users.": [ "Чтобы управлять несколькими пользователями, перейдите на бизнес-план с более чем 1 пользователем." ], @@ -6909,12 +6900,6 @@ "Add your name and logo to create a more personalized experience for your organization.": [ "Добавьте свое имя и логотип, чтобы создать более персонализированный интерфейс для вашей организации." ], - "Adding ${ addedServerCount } gateway server": [ - "Добавление ${ addedServerCount } шлюзового сервера", - "Добавление ${ addedServerCount } шлюзовых серверов", - "Добавление ${ addedServerCount } шлюзовых серверов", - "Добавление ${ addedServerCount } шлюзовых серверов" - ], "Adding an external email address will disable end-to-end encryption for all email communication within that group. Do you want to proceed?": [ "Добавление внешнего адреса электронной почты отключит сквозное шифрование для всех сообщений по электронной почте внутри этой группы. Вы хотите продолжить?" ], @@ -7134,9 +7119,6 @@ "Change your password": [ "Измените пароль" ], - "Check the status of imports and forwarding.": [ - "Проверить статус импорта и пересылки." - ], "Choose an Entity ID to continue.": [ "Выберите ID сущности для продолжения." ], @@ -7212,12 +7194,6 @@ "Create a label for the imported messages, a time range for this import, and the labels you would like to import.": [ "Создайте ярлык для импортированных сообщений, укажите диапазон времени для этого импорта и ярлыки, которые вы хотите импортировать." ], - "Create a secure cloud for ${ value } member": [ - "Создать безопасное облако для ${ value } участника", - "Создать безопасное облако для ${ value } участников", - "Создать безопасное облако для ${ value } участников", - "Создать безопасное облако для ${ value } участников" - ], "Create an account": [ "Создать аккаунт" ], @@ -9162,9 +9138,6 @@ "You can edit this once to ensure the correct email address for verification.": [ "Вы можете изменить это один раз, чтобы обеспечить правильную проверку адреса электронной почты." ], - "You can enable the Photos section from the interface using the toggle below.": [ - "Вы можете включить раздел Фотографии в интерфейсе с помощью расположенного ниже переключателя." - ], "You can enforce the password rules members of your organization will use when they create or reset the password to their ${ BRAND_NAME } Account.": [ "Вы можете установить правила для паролей, которые члены вашей организации будут использовать при создании или восстановлении пароля к своему аккаунту ${ BRAND_NAME }." ], @@ -12745,9 +12718,6 @@ "${ app } product updates": [ "Обновления продукта от ${ app }" ], - "${ BRAND_NAME } for Business newsletter": [ - "Рассылка ${ BRAND_NAME } for Business" - ], "${ BRAND_NAME } important announcements": [ "Важные оповещения ${ BRAND_NAME }" ], @@ -12796,9 +12766,6 @@ "During your first month of using a ${ BRAND_NAME } product": [ "В течение первого месяца использования продукта ${ BRAND_NAME }" ], - "Email subscriptions": [ - "Подписки на рассылки" - ], "In-app notifications": [ "Уведомления в приложении" ], @@ -13552,15 +13519,9 @@ "per month, billed every two years": [ "в месяц, оплачивается каждые два года" ], - "Preparing your Recovery Kit": [ - "Подготовка вашего набора для восстановления" - ], "Protected by Swiss privacy laws": [ "Защищено швейцарскими законами о конфиденциальности" ], - "Save your recovery kit to continue": [ - "Сохраните свой набор для восстановления, чтобы продолжить." - ], "Secure vault sharing": [ "Защищенный общий доступ к хранилищу" ], @@ -14489,9 +14450,6 @@ "Back to Safety Review": [ "Вернуться к Обзору безопасности" ], - "Because you reset your password, your current Recovery Kit can only be used to recover the data created before your password reset.": [ - "Так как вы сбросили пароль, ваш текущий набор восстановления может быть использован только для восстановления данных, созданных перед сбросом пароля." - ], "Can be used to regain access to your account and data": [ "Может использоваться для восстановления доступа к вашему аккаунту и данным" ], @@ -14510,9 +14468,6 @@ "Download ${ size }": [ "Скачать ${ size }" ], - "Download your Recovery Kit": [ - "Скачайте набор для восстановления" - ], "Email address": [ "Адрес электронной почты" ], @@ -14525,18 +14480,12 @@ "Enable recovery by phone": [ "Разрешить восстановление по номеру телефона" ], - "I understand that I will not be able to recover currently locked data with this Recovery Kit": [ - "Я понимаю, что я не смогу восстановить заблокированные в данный момент данные с помощью этого набора восстановления" - ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in on this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Если вы забудете пароль от ${ BRAND_NAME } и вам потребуется его сбросить, при следующем входе на этом устройстве с новым паролем будет восстановлен полный доступ к вашему аккаунту ${ BRAND_NAME }." ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Если вы забыли свой пароль ${ BRAND_NAME } и вам необходимо его восстановить, то при следующем входе на это устройство с использованием нового пароля полный доступ к вашему аккаунту ${ BRAND_NAME } будет восстановлен." ], - "If you get locked out of your ${ BRAND_NAME } Account, your Recovery Kit will allow you to sign in and recover your data.": [ - "Если ваш аккаунт ${ BRAND_NAME } будет заблокирован, ваш набор для восстановления позволит вам войти в систему и восстановить данные." - ], "If you lose your login details and need to reset your account, **it’s imperative** that you have both an **account recovery and data recovery method** in place, otherwise you might not be able to access any of your emails, contacts, files or passwords.": [ "Если вы потеряете данные для входа и вам потребуется сбросить аккаунт, **крайне необходимо**, чтобы у вас был **настроен способ восстановления аккаунта и данных**, иначе вы не сможете получить доступ ко всей вашей электронной почте, контактам, файлам и паролям." ], @@ -14576,9 +14525,6 @@ "Take action to secure your account": [ "Примите меры для защиты вашего аккаунта" ], - "There was an error generating your Recovery Kit": [ - "Произошла ошибка при создании вашего Пакета восстановления" - ], "There was an error verifying your recovery email": [ "Произошла ошибка при подтверждении резервного адреса электронной почты" ], @@ -14600,12 +14546,6 @@ "to recover your account if you're ever locked out": [ "чтобы защитить аккаунт, если вы когда-нибудь потеряете доступ" ], - "Update your Recovery Kit": [ - "Обновите свой набор для восстановления" - ], - "Update your Recovery Kit?": [ - "Обновить Recovery Kit?" - ], "Verify": [ "Проверить" ], @@ -14615,9 +14555,6 @@ "Verify your recovery phone number": [ "Подтвердите номер телефона для восстановления" ], - "We encountered an error while generating your Recovery Kit. Please try again later, or contact support if the issue continues.": [ - "При создании вашего Пакета восстановления возникла ошибка. Повторите попытку позже или обратитесь в службу поддержки, если проблема сохраняется." - ], "We encountered an error while verifying your recovery email. Please try again later, or contact support if the issue continues.": [ "Мы столкнулись с ошибкой при проверке вашего резервного адреса электронной почты. Повторите попытку позже или обратитесь в службу поддержки, если проблема сохраняется." ], @@ -14636,18 +14573,12 @@ "You can disable this at any time.": [ "Вы можете отключить это в любое время." ], - "You can use the recovery phrase in this Recovery Kit to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ - "Вы можете использовать фразу для восстановления, содержащуюся в этом Пакете восстановления, для полного восстановления вашего аккаунта после сброса пароля, поэтому обязательно храните ее в надежном месте." - ], "You can use your recovery email to regain access to your account if you forget your password.": [ "Вы можете использовать резервный адрес электронной почты, чтобы вернуть доступ к аккаунту, если вы забудете пароль." ], "You can use your recovery phone to regain access to your account if you forget your password.": [ "Вы можете использовать резервный номер телефона, чтобы вернуть доступ к аккаунту, если вы забудете пароль." ], - "You have previously downloaded a Recovery Kit. Downloading a new one will **deactivate the old one**.": [ - "Вы ранее скачивали набор для восстановления. Загрузка нового **деактивирует старый**." - ], "You have recommended actions.": [ "У вас есть рекомендованные действия." ], @@ -14687,12 +14618,6 @@ "Your recovery email is set": [ "Резервный адрес электронной почты настроен" ], - "Your Recovery Kit": [ - "Ваш набор для восстановления" - ], - "Your Recovery Kit is set": [ - "Ваш Пакет восстановления готов" - ], "Your recovery methods": [ "Ваши способы восстановления" ], @@ -17551,18 +17476,12 @@ "Confirm": [ "Подтвердить" ], - "Confirm address": [ - "Подтвердите адрес" - ], "Confirm downgrade": [ "Подтвердите переход на более дешевую версию тарифа" ], "Confirm loss of ${ BRAND_NAME } bonuses": [ "Подтвердите потерю бонусов ${ BRAND_NAME }" ], - "Confirm phone number": [ - "Подтвердите номер телефона" - ], "Connect ${ name }": [ "Подключить ${ name }" ], @@ -18187,9 +18106,6 @@ "Phone": [ "Телефон" ], - "Photos": [ - "Фото" - ], "Pin the extension": [ "Закрепить расширение" ], @@ -18421,6 +18337,9 @@ "Snooze:": [ "Приглушение:" ], + "Something went wrong": [ + "Что-то пошло не так" + ], "Sort folders alphabetically": [ "Сортировать папки по алфавиту" ], @@ -19473,12 +19392,6 @@ "${ BRAND_NAME } will transfer as much data as possible, starting with your most recent messages.": [ "${ BRAND_NAME } передаст как можно больше данных, начиная с ваших последних сообщений." ], - "Are you sure you want to delete the phone number?": [ - "Вы уверены, что хотите удалить номер телефона?" - ], - "Are you sure you want to delete this address?": [ - "Вы уверены, что хотите удалить этот адрес?" - ], "By deleting this address, you will no longer be able to receive daily email notifications.": [ "Удалив этот адрес, вы больше не сможете получать ежедневные уведомления по электронной почте." ], @@ -19488,9 +19401,6 @@ "By deleting this address, you will no longer be able to recover your account.": [ "Удалив этот адрес, вы больше не сможете восстановить свою учётную запись." ], - "By deleting this phone number, you will no longer be able to recover your account.": [ - "Удалив этот номер телефона, вы больше не сможете восстановить свою учётную запись." - ], "If you cancel this import, you won't be able to resume it. ${ BRAND_NAME } saved all progress in your account. Cancel anyway?": [ "Если вы отмените этот импорт, вы не сможете его возобновить. ${ BRAND_NAME } сохранил весь прогресс в вашем аккаунте. Все равно отменить?" ], diff --git a/applications/account/locales/sk_SK.json b/applications/account/locales/sk_SK.json index eae1608aa3c..3ab5ed5bba1 100644 --- a/applications/account/locales/sk_SK.json +++ b/applications/account/locales/sk_SK.json @@ -90,6 +90,9 @@ "Add": [ "Pridať" ], + "Add ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }": [ + "Pridať ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }" + ], "Add ${ BRAND_NAME } Account": [ "Pridať ${ BRAND_NAME } účet" ], @@ -105,6 +108,9 @@ "Add address or domain": [ "Pridať adresu alebo doménu" ], + "Add and verify": [ + "Pridať a overiť" + ], "Add another account": [ "Pridať ďalší účet" ], @@ -159,6 +165,9 @@ "Add user": [ "Pridať používateľa" ], + "Added ${ memberName } as group owner": [ + "${ memberName } bol pridaný ako vlastník skupiny" + ], "Align center": [ "Zarovnať na stred" ], @@ -210,6 +219,9 @@ "Back to sign in": [ "Späť na prihlásenie" ], + "Back to sign-in": [ + "Späť na prihlásenie" + ], "Block": [ "Blokovať" ], @@ -306,6 +318,9 @@ "Confirm": [ "Potvrdiť" ], + "Confirm email": [ + "Potvrďte email" + ], "Confirm opening of link ${ linkToShow }": [ "Potvrďte otvorenie odkazu ${ linkToShow }" ], @@ -321,15 +336,15 @@ "Connect Gmail address": [ "Pripojte Gmailovú adresu" ], - "Connect to Gmail": [ - "Pripojiť ku Gmailu" - ], "Connect to video conferencing": [ "Pripojiť sa k videokonferencii" ], "Connect your ${ BRAND_NAME } Account": [ "Pripojte svoj ${ BRAND_NAME } účet" ], + "Connect your email": [ + "Pripojte svoj email" + ], "Connected": [ "Pripojené" ], @@ -441,6 +456,9 @@ "Create organization": [ "Vytvoriť organizáciu" ], + "Create recovery phrase": [ + "Vytvorte obnovovaciu frázu" + ], "Create users": [ "Vytvoriť používateľov" ], @@ -513,8 +531,8 @@ "Delete record": [ "Zmazať záznam" ], - "Delete token ${ token.Account }": [ - "Vymazať token ${ token.Account }" + "Delete token ${ tokens[0].Account }": [ + "Vymazať token ${ tokens[0].Account }" ], "Delete token “${ token.Name }”": [ "Vymazať token „${ token.Name }”" @@ -630,6 +648,9 @@ "Download the desktop app": [ "Stiahnite si desktopovú aplikáciu" ], + "Download updated file": [ + "Stiahnuť aktualizovaný súbor" + ], "Edit": [ "Upraviť" ], @@ -753,6 +774,9 @@ "Filters are being applied. This might take a few minutes.": [ "Filtre sa aplikujú. Môže to trvať niekoľko minút." ], + "Finish": [ + "Dokončiť" + ], "Fit to window": [ "Prispôsobiť oknu" ], @@ -771,6 +795,12 @@ "Generate key": [ "Vygenerovať kľúč" ], + "Generate missing keys": [ + "Vygenerovať chýbajúce kľúče" + ], + "Generate new phrase": [ + "Generovať novú frázu" + ], "Generate new recovery phrase": [ "Vygenerovať novú frázu pre obnovenie" ], @@ -870,6 +900,9 @@ "Go to ${ planOrAppName }": [ "Prejsť do ${ planOrAppName }" ], + "Go to domain provider": [ + "Prejsť k poskytovateľovi domén" + ], "Go to label": [ "Prejsť na štítok" ], @@ -1188,6 +1221,9 @@ "Reactivate keys": [ "Reaktivácia kľúčov" ], + "Read the story": [ + "Prečítať príbeh" + ], "Reconnect": [ "Obnoviť pripojenie" ], @@ -1263,6 +1299,9 @@ "Remove this notification": [ "Odstrániť túto notifikáciu" ], + "Removed ${ memberName } as group owner": [ + "${ memberName } bol odstránený z pozície vlastníka skupiny" + ], "Rename": [ "Premenovať" ], @@ -1344,12 +1383,18 @@ "Save": [ "Uložiť" ], + "Save & exit": [ + "Uložiť a ukončiť" + ], "Save address": [ "Uložiť adresu" ], "Save and continue": [ "Uložiť a pokračovať" ], + "Save and verify": [ + "Uložiť a overiť" + ], "Save changes": [ "Uložiť zmeny" ], @@ -1371,6 +1416,9 @@ "Search settings": [ "Nastavenia vyhľadávania" ], + "Secure account": [ + "Zabezpečte účet" + ], "See DNS TXT record": [ "Zobraziť DNS TXT záznam" ], @@ -1593,6 +1641,9 @@ "Switch or add account": [ "Prepnúť alebo pridať účet" ], + "Switch to free plan": [ + "Prejsť na plán Free" + ], "Take a tour": [ "Absolvovať prehliadku" ], @@ -1758,6 +1809,9 @@ "View recovery settings": [ "Zobraziť nastavenia obnovy" ], + "View recovery setup details": [ + "Zobraziť podrobnosti o nastavení obnovy" + ], "Void": [ "Neplatné" ], @@ -1767,6 +1821,9 @@ "Void all recovery files?": [ "Zrušiť všetky súbory pre obnovenie?" ], + "Watch the interview": [ + "Pozrite si rozhovor" + ], "Welcome": [ "Vitajte" ], @@ -2048,18 +2105,21 @@ ] }, "Admin roles onboarding": { + "2 new admin roles": [ + "2 nové správcovské pozície" + ], "3 new admin roles": [ "3 nové správcovské pozície" ], - "Admin roles": [ - "Správcovské pozície" - ], "Configure security policies, data retention, and VPN infrastructure, and manage audit logs.": [ "Konfigurácia bezpečnostných politík, uchovávania údajov a infraštruktúry VPN a správa auditových záznamov." ], "Delegate management by assigning specific admin roles. Give each admin only the access they need. This follows the principle of least privilege, protecting your organization from compromised accounts and accidental errors.": [ "Spravujte delegovanie právomocí prideľovaním konkrétnych správcovských rolí. Každému správcovi poskytnite len tie prístupové práva, ktoré skutočne potrebuje. Týmto postupom sa riadite zásadou minimálnych oprávnení, čím chránite svoju organizáciu pred kompromitovanými účtami a náhodnými chybami." ], + "Delegate management for many users at once. Assign specific admin roles to groups for automatic permissions. This follows the principle of least privilege to save time on onboarding and offboarding while reducing errors.": [ + "Správu môžete delegovať na viacerých používateľov naraz. Skupinám môžete priradiť konkrétne správcovské role, čím sa automaticky nastavia príslušné oprávnenia. Tento postup vychádza z princípu minimálnych oprávnení, vďaka čomu ušetríte čas pri prijímaní a ukončovaní pracovného pomeru a zároveň znížite počet chýb." + ], "Delegate management with the appropriate admin role.": [ "Delegujte správu pomocou príslušnej správcovskej pozície." ], @@ -2072,21 +2132,15 @@ "New: Control admin access for individual users": [ "Novinka: Riadenie prístupových práv správcu pre jednotlivých používateľov" ], - "Organization admin": [ - "Správca organizácie" + "New: Control admin access for many users at once": [ + "Novinka: Správa prístupových práv správcov pre viacerých používateľov naraz" ], "Organization admin:": [ "Správca organizácie:" ], - "Security admin": [ - "Bezpečnostný správca" - ], "Security admin:": [ "Bezpečnostný správca:" ], - "User admin": [ - "Správca používateľov" - ], "User admin:": [ "Správca používateľov:" ] @@ -2319,6 +2373,11 @@ "Vaša bezplatná skúšobná verzia skončí o ${ timeRemaining }" ] }, + "Badge": { + "Save ${ discountRate }%": [ + "Ušetrite ${ discountRate }%" + ] + }, "Badge for domain": { "Disabled": [ "Zakázané" @@ -2863,15 +2922,66 @@ "${ BRAND_NAME } Migration Assistant": [ "Asistent migrácie ${ BRAND_NAME }" ], - "Add a custom domain": [ - "Pridať vlastnú doménu" + "${ migratedCount } of ${ providerUsers.length }": [ + "${ migratedCount } z ${ providerUsers.length }" + ], + "**p=none**: do not quarantine or reject unauthorized emails. Usually, people only use this policy to troubleshoot or test.": [ + "**p=none**: neumiestňovať do karantény ani neodmietať neautorizované emaily. Obvykle túto zásadu ľudia používajú zvyčajne na diagnostiku a odstraňovanie problémov alebo na testovanie." + ], + "**p=quarantine**: asking the recipient platforms to mark the unauthorized emails as spam or quarantine them.": [ + "**p=quarantine**: žiada platformy príjemcov, aby neautorizované emaily označili ako spam alebo ich umiestnili do karantény." + ], + "**p=reject**: asking the recipient platforms to reject the unauthorized emails.": [ + "**p=reject**: žiada platformy príjemcov o odmietnutie neautorizovaných emailov." + ], + "Account connected": [ + "Účet je pripojený" + ], + "Account disconnected": [ + "Účet odpojený" + ], + "Activated": [ + "Aktivované" + ], + "Activation link": [ + "Aktivačný odkaz" + ], + "Activation link copied to clipboard": [ + "Aktivačný odkaz skopírovaný do schránky" + ], + "Add a domain": [ + "Pridať doménu" + ], + "Add domain": [ + "Pridať doménu" + ], + "Add users": [ + "Pridať používateľov" + ], + "Add users and configure your domain manually for sending and receiving mail. Ideal for small teams starting from a clean slate.": [ + "Pridajte používateľov a ručne nakonfigurujte svoju doménu na odosielanie a prijímanie emailov. Ideálne pre malé tímy, ktoré začínajú od nuly." + ], + "Address is already used by a user outside of your organization. Please contact customer support to resolve this": [ + "Adresu už používa používateľ mimo vašej organizácie. Kontaktujte zákaznícku podporu, aby ste to vyriešili." + ], + "All": [ + "Všetko" + ], + "An unknown error occurred": [ + "Vyskytla sa neznáma chyba" ], - "App installed": [ - "Aplikácia nainštalovaná" + "Are you sure you want to proceed? Users who haven't claimed their account before the migration is finalized will need to request a password reset from their ${ BRAND_NAME } organization administrator.": [ + "Naozaj chcete pokračovať? Používatelia, ktorí si svoj účet neprevzali pred dokončením migrácie, budú musieť požiadať správcu organizácie ${ BRAND_NAME } o obnovenie hesla." + ], + "As soon as the accounts are created, you can share the activation link so users can claim their ${ BRAND_NAME } account.": [ + "Hneď po vytvorení účtov môžete zdieľať aktivačný odkaz, aby si používatelia mohli aktivovať svoje ${ BRAND_NAME } účty." ], "Authenticate": [ "Autentifikovať" ], + "Authenticate to Google Workspace": [ + "Prihláste sa do služby Google Workspace" + ], "Authenticate your Google Workspace account": [ "Overte svoj účet Google Workspace" ], @@ -2881,23 +2991,68 @@ "Change": [ "Zmeniť" ], + "Choose how you want to bring your team and email setup to ${ BRAND_NAME }.": [ + "Vyberte si, ako chcete preniesť svoj tím a nastavenia emailu do ${ BRAND_NAME }." + ], + "Choose what to migrate. Your choice will apply to all users. The migration will start after you decide which users to copy.": [ + "Vyberte, čo chcete preniesť. Váš výber sa bude vzťahovať na všetkých používateľov. Migrácia sa spustí hneď, ako určíte, ktorých používateľov chcete skopírovať." + ], "Completed": [ "Dokončené" ], "Configure": [ "Konfigurovať" ], + "Configure domain": [ + "Nakonfigurovať doménu" + ], "Configure migration": [ "Nastaviť migráciu" ], + "Configure your domain": [ + "Nakonfigurujte si doménu" + ], "Contacts": [ "Kontakty" ], + "Continue migration": [ + "Pokračovanie v presune" + ], + "Copy activation link": [ + "Kopírovať aktivačný odkaz" + ], + "Copy activation link to clipboard": [ + "Skopírovať aktivačný odkaz do schránky" + ], + "Copy the below code and paste it in the DNS section of your domain host. You can find an example and some helpful tips ${ hereHref }.": [ + "Skopírujte nižšie uvedený kód a vložte ho do sekcie DNS u vášho poskytovateľa doménových služieb. Príklad a niekoľko užitočných tipov nájdete ${ hereHref }." + ], + "Creating accounts": [ + "Vytváranie účtov" + ], + "DKIM adds a digital signature to each email so recipients can verify that the message really came from your domain and was not altered in transit. Without it, messages may be treated as less trustworthy.": [ + "DKIM pridáva ku každému emailu digitálny podpis, vďaka čomu si príjemcovia môžu overiť, že správa skutočne pochádza z vašej domény a nebola počas prenosu pozmenená. Bez neho môžu byť správy považované za menej dôveryhodné." + ], + "DKIM records": [ + "DKIM záznamy" + ], + "DMARC builds on SPF and DKIM by telling receiving servers how to handle messages that fail these checks. It helps protect your domain from impersonation and improves overall delivery reliability.": [ + "DMARC nadväzuje na protokoly SPF a DKIM tým, že prijímajúcim serverom určuje, ako majú postupovať v prípade správ, ktoré tieto kontroly neprejdú. Pomáha chrániť vašu doménu pred zneužitím a zvyšuje celkovú spoľahlivosť doručovania." + ], + "DMARC records": [ + "DMARC záznamy" + ], + "Domain added": [ + "Doména pridaná" + ], "Domain connected": [ "Doména prepojená" ], - "Domain ownership verified": [ - "Vlastníctvo domény je overené" + "Ensure that your emails reach the inbox, not the spam folder. Updating SPF will allow users to send from ${ BRAND_NAME } and Google simultaneously for the duration of the migration.": [ + "Uistite sa, že vaše emaily prichádzajú do doručenej pošty a nie do priečinka so spamom. Aktualizáciou SPF umožníte používateľom počas migrácie odosielať správy súčasne z adresy ${ BRAND_NAME } aj z adresy Google." + ], + "Errors": [ + "Chyby" ], "Estimated size": [ "Odhadovaná veľkosť" @@ -2905,15 +3060,39 @@ "Failed to load OAuth": [ "Nepodarilo sa načítať OAuth" ], + "Finalize migration": [ + "Dokončiť presun" + ], + "Finalize your migration": [ + "Dokončite váš presun" + ], + "Finalizing the migration means all your emails will be routed directly to ${ BRAND_NAME }. Users will stop receiving emails on their Google accounts and data will not be synchronized between ${ BRAND_NAME } and Google anymore.": [ + "Dokončením migrácie budú všetky vaše emaily smerované priamo do ${ BRAND_NAME }. Používatelia už nebudú dostávať emaily na svoje Google účty a údaje medzi ${ BRAND_NAME } a Google sa už nebudú synchronizovať." + ], + "Find out what can be migrated.": [ + "Zistite, čo je možné preniesť." + ], "Finish setting up your business account": [ "Dokončite nastavenie vášho firemného účtu" ], + "Go to Domain names": [ + "Prejsť k názvom domén" + ], "Google Marketplace app to copy data to ${ BRAND_NAME }": [ "Aplikácia Google Marketplace na kopírovanie údajov do ${ BRAND_NAME }" ], + "Google Workspace account": [ + "Účet Google Workspace" + ], + "Hang tight, we're setting up user accounts and will start importing user data shortly.": [ + "Vydržte, práve vytvárame používateľské účty a čoskoro začneme importovať údaje používateľov." + ], "Has errors": [ "Má chyby" ], + "Import errors for ${ user.AdminSetName }": [ + "Chyby pri importe pre ${ user.AdminSetName }" + ], "In progress": [ "Prebieha" ], @@ -2923,14 +3102,20 @@ "Install migration app": [ "Inštalovať migračnú aplikáciu" ], - "Learn more about what can be migrated. Learn more": [ - "Zistite viac o tom, čo môže byť zmigrované. Zistite viac" + "Install Migration assistant": [ + "Nainštalovať asistenta pre presun" + ], + "Loading your organization data": [ + "Načítavanie údajov vašej organizácie" ], "Mail": [ "Pošta" ], - "Migrate": [ - "Migrovať" + "Managed via ${ registrar.name }": [ + "Spravované cez ${ registrar.name }" + ], + "Member address not found. Please contact customer support to resolve this": [ + "Adresa člena nebola nájdená. Na vyriešenie tohto problému kontaktujte zákaznícku podporu." ], "Migrate from Google Workspace": [ "Migrovať z Google Workspace" @@ -2938,6 +3123,12 @@ "Migrate users": [ "Migrovať používateľov" ], + "Migrate users to ${ BRAND_NAME }": [ + "Presuňte používateľov do ${ BRAND_NAME }" + ], + "Migrated": [ + "Presunuté" + ], "Migration includes": [ "Migrácia zahŕňa" ], @@ -2950,8 +3141,35 @@ "Migration status": [ "Stav migrácie" ], - "Not started": [ - "Nezačaté" + "Missing organization private key": [ + "Chýba súkromný kľúč organizácie" + ], + "Missing organization public key": [ + "Chýba verejný kľúč organizácie" + ], + "More details": [ + "Ďalšie podrobnosti" + ], + "Move your users, emails, and settings from Google Workspace automatically. We’ll guide you through connecting your account, verifying your domain, and migrating users securely.": [ + "Preneste svojich používateľov, emaily a nastavenia z Google Workspace automaticky. Pomôžeme vám s pripojením účtu, overením domény a bezpečnou migráciou používateľov." + ], + "No error details available. Please contact customer support for more information": [ + "Podrobnosti o chybe nie sú k dispozícii. Pre viac informácií kontaktujte zákaznícku podporu." + ], + "No users to display": [ + "Nie sú žiadni používatelia na zobrazenie" + ], + "Not activated": [ + "Neaktivované" + ], + "Not confirmed": [ + "Nepotvrdené" + ], + "Once users have claimed their ${ BRAND_NAME } account, finalize the migration.": [ + "Akonáhle si používatelia aktivujú svoj ${ BRAND_NAME } účet, dokončite migráciu." + ], + "Once we have confirmed that emails are routed to ${ BRAND_NAME } the migration will be finalized. You will receive a confirmation email to let you know when this happens. This process can take up to 24 hours.": [ + "Akonáhle overíme, že emaily sú smerované na ${ BRAND_NAME }, migrácia bude dokončená. Po dokončení tohto procesu dostanete potvrdzovací email. Tento proces môže trvať až 24 hodín." ], "Organization does not have enough seats available": [ "Organizaícia nemá dostatok voľných licencií" @@ -2959,8 +3177,20 @@ "Organization does not have enough storage available": [ "Organzácia nemá dostatok úložného priestoru" ], - "Organization settings": [ - "Nastavenia organizácie" + "Pending": [ + "Čakajúce" + ], + "Please add the following records in your DNS console of your domain provider:": [ + "Do konzoly DNS vášho poskytovateľa doménových služieb, prosím, pridajte nasledujúce záznamy:" + ], + "Please leave this window open until we're done creating all the users.": [ + "Nechajte toto okno otvorené, kým nedokončíme vytváranie všetkých používateľov, prosím." + ], + "Please select at least one product to migrate": [ + "Vyberte aspoň jeden produkt na presun, prosím" + ], + "Refresh": [ + "Obnoviť" ], "Required": [ "Povinné" @@ -2971,8 +3201,8 @@ "Select at least one user to start a migration": [ "Pre spustenie migrácie vyberte aspoň jedného používateľa" ], - "Select what you want to migrate, this will apply to all users whether they are created now or later. Migration will start after user accounts are created.": [ - "Vyberte, čo chcete migrovať. Toto sa bude vzťahovať na všetkých používateľov, bez ohľadu na to, či sú vytvorení teraz alebo neskôr. Migrácia sa spustí po vytvorení používateľských účtov." + "Select users to migrate": [ + "Vyberte používateľov na presun" ], "Set up": [ "Nastaviť" @@ -2980,53 +3210,122 @@ "Set up billing information": [ "Nastaviť fakturačné údaje" ], + "Set up manually": [ + "Nastaviť ručne" + ], + "Set up secure sending (DKIM)": [ + "Nastavte bezpečné odosielanie (DKIM)" + ], + "Set up secure sending (DMARC)": [ + "Nastavte bezpečné odosielanie (DMARC)" + ], + "Set up secure sending (SPF)": [ + "Nastavte bezpečné odosielanie (SPF)" + ], "Set up two-factor authentication": [ "Nastaviť dvojfaktorové overenie" ], "Settings": [ "Nastavenia" ], + "Share the activation link to users so they can claim their ${ BRAND_NAME } account.": [ + "Zdieľajte aktivačný odkaz s používateľmi, aby si mohli aktivovať svoj ${ BRAND_NAME } účet." + ], "Sign in to Google Workspace": [ "Prihlásiť sa do Google Workspace" ], + "Size": [ + "Veľkosť" + ], + "Some accounts are not claimed": [ + "Niektoré účty neboli prevzaté" + ], + "SPF records": [ + "SPF záznamy" + ], + "Start migrating": [ + "Spustiť migráciu" + ], "Start migration": [ "Spustiť migráciu" ], "Status": [ "Stav" ], + "The default setting is none. However, to improve your security we recommend setting this value to p=quarantine.": [ + "Predvolené nastavenie je „none“. Pre zvýšenie bezpečnosti však odporúčame nastaviť túto hodnotu na „p=quarantine“." + ], + "The “p=” value specifies the action to take for emails that fail DMARC. Here are the available actions:": [ + "Hodnota „p=” určuje, aká akcia sa má vykonať v prípade emailov, ktoré neprejdú DMARC kontrolou. K dispozícii sú tieto akcie:" + ], + "This migration has been completed": [ + "Migrácia bola dokončená" + ], "To migrate your organization’s data, you need to install the ${ BRAND_NAME } Migration Assistant app from the Google Workspace Marketplace. This will grant permission to ${ BRAND_NAME } to copy your data. After installing it, come back here to continue.": [ "Ak chcete migrovať dáta vašej organizácie, potrebujete nainštalovať aplikáciu ${ BRAND_NAME } Migration Assistant z Google Workspace Marketplace. Toto udelí povolenie pre ${ BRAND_NAME } na kopírovanie vašich dát. Po jej nainštalovaní sa vráťte sem, aby ste pokračovali." ], - "Transfer errors": [ - "Chyby prenosu" + "Update records for receiving": [ + "Aktualizovať záznamy o príjme" ], "User": [ "Používateľ" ], + "User needs to activate their account through the activation link shown above": [ + "Používateľ musí aktivovať svoj účet prostredníctvom aktivačného odkazu uvedeného vyššie" + ], + "User status": [ + "Stav používateľa" + ], + "Users can use ${ BRAND_NAME } or Google simultaneously for the duration of the migration.": [ + "Počas migrácie môžu používatelia súčasne využívať službu ${ BRAND_NAME } aj Google." + ], "Users migrated": [ "Používatelia zmigrovaní" ], + "Verified": [ + "Overené" + ], + "Verify domain ownership": [ + "Overte vlastníctvo domény" + ], "Verify installation": [ "Overiť inštaláciu" ], "Verify your domain": [ "Overte svoju doménu" ], - "Verify your domain ownership": [ - "Overte vlastníctvo svojej domény" - ], "Verify your domain to start a migration": [ "Overte vašu doménu pre spustenie migrácie" ], + "We detected the primary domain linked to your Google Workspace account. Confirm it to continue setting up email for your ${ BRAND_NAME } organization.": [ + "Zistili sme primárnu doménu prepojenú s vaším účtom Google Workspace. Potvrďte ju, aby ste mohli pokračovať v nastavovaní emailu pre vašu organizáciu ${ BRAND_NAME }." + ], "We were unable to verify the installation, please check that you have installed it in your Google Workspace account and try again.": [ "Inštaláciu sa nám nepodarilo overiť. Skontrolujte, či ste ju nainštalovali do svojho účtu Google Workspace, a skúste to znova." ], + "We're still checking the MX records with your domain provider.": [ + "Stále overujeme MX záznamy u vášho poskytovateľa domén." + ], + "We've noticed some users have not claimed their ${ BRAND_NAME } accounts.": [ + "Zistili sme, že niektorí používatelia si ešte neaktivovali svoje ${ BRAND_NAME } účty." + ], "What are you migrating?": [ "Čo migrujete?" ], + "You": [ + "Vy" + ], "You need to grant the permission for ${ BRAND_NAME } to copy your data. After accepting permissions, come back here to continue.": [ "Musíte udeliť povolenie pre ${ BRAND_NAME } na kopírovanie vašich údajov. Po udelení povolení sa vráťte sem a pokračujte." + ], + "You're all set!": [ + "Všetko je pripravené!" + ], + "Your current plan allows up to ${ maxMembers } user. To migrate additional users, add more seats to your subscription.": [ + "Váš súčasný plán umožňuje ${ maxMembers } používateľa. Ak chcete pridať ďalších používateľov, rozšírte si predplatné o ďalšie licencie.", + "Váš súčasný plán umožňuje ${ maxMembers } používateľov. Ak chcete pridať ďalších používateľov, rozšírte si predplatné o ďalšie licencie.", + "Váš súčasný plán umožňuje až ${ maxMembers } používateľov. Ak chcete pridať ďalších používateľov, rozšírte si predplatné o ďalšie licencie.", + "Váš súčasný plán umožňuje až ${ maxMembers } používateľov. Ak chcete pridať ďalších používateľov, rozšírte si predplatné o ďalšie licencie." ] }, "breadcrumb": { @@ -3134,9 +3433,18 @@ ] }, "Button": { + "Add users manually": [ + "Pridať používateľov manuálne" + ], + "Cancel": [ + "Zrušiť" + ], "Close": [ "Zavrieť" ], + "Configure your network": [ + "Nakonfigurujte svoju sieť" + ], "Continue using ${ MAIL_APP_NAME }.": [ "Pokračovať s ${ MAIL_APP_NAME }." ], @@ -3158,6 +3466,12 @@ "Got it": [ "Rozumiem" ], + "Invite your team": [ + "Pozvite váš tím" + ], + "Manage global VPN permissions": [ + "Správa globálnych oprávnení VPN" + ], "Maybe later": [ "Možno neskôr" ], @@ -3167,12 +3481,21 @@ "Remind me later": [ "Pripomenúť neskôr" ], + "Secure your organization": [ + "Zabezpečte svoju organizáciu" + ], "Send": [ "Odoslať" ], "Set up other features": [ "Nastaviť ďalšie funkcie" ], + "Set up SSO": [ + "Nastaviť SSO" + ], + "Sign in": [ + "Prihlásiť sa" + ], "Take a tour": [ "Absolvovať prehliadku" ] @@ -3782,8 +4105,38 @@ ] }, "Confirm cancellation": { + "Access is restored once usage is back within limits.": [ + "Prístup bude obnovený, akonáhle sa využitie vráti do povolených limitov." + ], + "Back up photos from your devices": [ + "Zálohovať fotografie zo svojich zariadení" + ], "Cancel subscription": [ "Zrušiť predplatné" + ], + "Confirm cancellation": [ + "Potvrďte zrušenie" + ], + "If you exceed free plan limits, you won't be able to:": [ + "Ak prekročíte limity bezplatného plánu nebudete môcť:" + ], + "Keep current plan": [ + "Ponechať aktuálny plán" + ], + "Manage your calendar": [ + "Spravovať svoje kalendáre" + ], + "Receive new emails": [ + "Dostávať nové emaily" + ], + "Send emails with attachments": [ + "Odoslať emaily s prílohami" + ], + "Upload any new files": [ + "Nahrávať nové súbory" + ], + "When your subscription ends on ${ endDate }, your account will switch to the Free plan. If your usage exceeds Free plan limits, some features may be temporarily unavailable.": [ + "Keď vaše predplatné dňa ${ endDate } vyprší a váš účet prejde na plán Free. Ak vaša spotreba prekročí limity plánu Free, niektoré funkcie môžu byť dočasne nedostupné." ] }, "Confirm modal title": { @@ -4793,6 +5146,9 @@ "/month": [ "/mesiac" ], + "/user /month": [ + "/používateľ /mesiac" + ], "/user per month": [ "/používateľ mesačne" ] @@ -4967,6 +5323,9 @@ ] }, "Description": { + "${ BRAND_NAME }'s end-to-end encryption means only you can unlock your data. Set up recovery options now to ensure you never lose access.": [ + "Vďaka komplexnému šifrovaniu od spoločnosti ${ BRAND_NAME } máte prístup k svojim dátam len vy. Nastavte si možnosti obnovenia ešte dnes, aby ste o ne nikdy neprišli." + ], "${ DOCS_SHORT_APP_NAME } in ${ DRIVE_APP_NAME } allows you to work together with others in a secure, encrypted environment.": [ "${ DOCS_SHORT_APP_NAME } v ${ DRIVE_APP_NAME } vám umožňuje spolupracovať s ostatnými v zabezpečenom, šifrovanom prostredí." ], @@ -4976,6 +5335,9 @@ "${ MAIL_APP_NAME } is your default mail application.": [ "${ MAIL_APP_NAME } je vašou predvolenou poštovou aplikáciou." ], + "${ MAIL_APP_NAME } keeps your business data secure and lets you send encrypted emails to anyone.": [ + "${ MAIL_APP_NAME } uchováva vaše obchodné údaje v bezpečí a umožňuje posielať šifrované emaily komukoľvek." + ], "A checked box means the feature is disabled.": [ "Začiarknuté políčko znamená, že funkcia je vypnutá." ], @@ -5003,8 +5365,11 @@ "Block Google's ability to profile you. Gmail can't see what you do in ${ MAIL_APP_NAME }": [ "Zabráňte spoločnosti Google v profilovaní vašej osoby. Gmail nemá prehľad o tom, čo robíte v aplikácii ${ MAIL_APP_NAME }" ], - "Bring over email, calendar events, and contacts from another provider.": [ - "Preneste si emaily, udalosti kalendára a kontakty od iného poskytovateľa." + "Bring over your email, calendar events, and contacts from another provider.": [ + "Preneste si vaše emaily, udalosti kalendára a kontakty od iného poskytovateľa." + ], + "Build trust and brand recognition with professional email addresses at your own domain.": [ + "Vytvorte si dôveryhodnú a rozpoznateľnú značku pomocou profesionálnych emailových adries vo vašej vlastnej doméne." ], "Configure this first to activate your organization and customize your email address.": [ "Najprv nakonfigurujte túto možnosť, aby ste aktivovali svoju organizáciu a prispôsobili svoju emailovú adresu." @@ -5012,6 +5377,9 @@ "Connect your CRM, website, printers, and more.": [ "Pripojte svoj CRM, webovú stránku, tlačiarne a ďalšie." ], + "Create a Gateway to give your users access to your IT resources through dedicated servers.": [ + "Vytvorte bránu, aby vaši používatelia mali prístup k vašim IT zdrojom prostredníctvom vyhradených serverov." + ], "Create a Zoom meeting and add joining details to your event with one click.": [ "Vytvorte Zoom stretnutie a jedným kliknutím pridajte podrobnosti o pripojení k udalosti." ], @@ -5021,9 +5389,15 @@ "Create groups you can email with a single address.": [ "Vytvorte skupiny, ktorým môžete posielať emaily pomocou jednej adresy." ], + "Create new user accounts or import users with SSO (single sign-on) SCIM provisioning.": [ + "Vytvorte nové používateľské účty alebo importujte používateľov pomocou SSO (jednotného prihlásenia) SCIM provisioningu." + ], "Create policies to decide who can connect to shared servers in each country.": [ "Vytvorte pravidlá na určenie toho, kto sa môže pripojiť k zdieľaným serverom v jednotlivých krajinách." ], + "Decide which users can connect to each of our 120+ shared server locations.": [ + "Rozhodnite, ktorí používatelia sa môžu pripojiť ku každej z našich viac ako 120 zdieľaných serverových lokalít." + ], "Easily access your email and calendar on desktop and mobile.": [ "Získajte jednoduchý prístup k svojmu emailu a kalendáru v počítači aj v mobile." ], @@ -5072,12 +5446,30 @@ "Help your team securely store passwords to sensitive business and client information.": [ "Pomôžte svojmu tímu bezpečne ukladať heslá k citlivým obchodným a klientskym informáciám." ], + "How our customer support team got our VPN app directly into people's hands.": [ + "Ako náš tím zákazníckej podpory dostal našu aplikáciu VPN priamo do rúk ľudí." + ], + "How we fought back when ${ BRAND_NAME } was blocked in an aggressive campaign.": [ + "Ako sme sa bránili, keď bol ${ BRAND_NAME } zablokovaný v rámci agresívnej kampane." + ], + "How we supported local activists when privacy and free speech were threatened.": [ + "Ako sme podporili miestnych aktivistov, keď bolo ohrozené súkromie a sloboda prejavu." + ], + "How you unlock your encrypted data if you lose your password.": [ + "Ako odomknúť zašifrované údaje v prípade straty hesla." + ], + "If you haven’t already, enable some recovery methods to make sure you never lose access to ${ VPN_APP_NAME }.": [ + "Ak ste tak ešte neurobili, povoľte niektoré metódy obnovy, aby ste sa uistili, že nikdy nestratíte prístup k ${ VPN_APP_NAME }." + ], "It looks like the contact list you are importing contains some groups. Please review how these groups should be imported.": [ "Zdá sa, že zoznam kontaktov ktorý importujete, zahŕňa nejaké skupiny. Prosím, skontrolujte ako by tieto skupiny mali byť importované." ], "Keep different parts of your life separate and your inbox organized with additional addresses.": [ "Oddeľte rôzne časti svojho života a usporiadajte si doručenú poštu s ďalšími adresami." ], + "Keep your team secure on the go with our apps for web, iOS, Android, Windows, Mac, and Linux.": [ + "Zabezpečte svoj tím na cestách pomocou našich aplikácií pre web, iOS, Android, Windows, Mac a Linux." + ], "Learn more about common problems": [ "Zistite viac o bežných problémoch" ], @@ -5087,6 +5479,9 @@ "Make your email footer your own — showcase your unique brand, not ours.": [ "Vytvorte si vlastnú pätičku emailu - prezentujte svoju jedinečnú značku, nie našu." ], + "Methods that include both password reset and data recovery.": [ + "Metódy, ktoré zahŕňajú obnovenie hesla aj obnovenie údajov." + ], "Most issues can be solved in a few minutes with our step-by-step guides.": [ "Väčšinu problémov je možné vyriešiť za pár minút pomocou našich podrobných návodov." ], @@ -5099,9 +5494,6 @@ "Read, reply, and stay on top of Gmail from within ${ MAIL_APP_NAME }": [ "Čítajte, odpovedajte a majte prehľad o Gmaile z aplikácie ${ MAIL_APP_NAME }" ], - "Send a code to your recovery email or phone": [ - "Odoslať kód na váš obnovovací email alebo telefón" - ], "Set up accounts for all users and invite them to join ${ BRAND_NAME }.": [ "Nastavte účty pre všetkých používateľov a pozvite ich, aby sa pripojili k službe ${ BRAND_NAME }." ], @@ -5114,6 +5506,9 @@ "Still need help? Our support team is here for you.": [ "Stále potrebujete pomoc? Náš tím podpory je vám k dispozícii." ], + "This allows you to regain access to your ${ BRAND_NAME } account but does not recover your encrypted data.": [ + "Týmto spôsobom znovu získate prístup k svojmu ${ BRAND_NAME } účtu, avšak vaše šifrované údaje sa tým neobnovia." + ], "This may happen if permissions were removed or your password changed.": [ "K tomu môže dôjsť, ak boli zrušené oprávnenia alebo ste si zmenili heslo." ], @@ -5150,16 +5545,22 @@ "Upgrade to get ${ activatePmUser } for a shorter, easy-to-remember email address in addition to your current one.": [ "Zvýšením úrovne získate ${ activatePmUser } - kratšiu, ľahko zapamätateľnú emailovú adresu k vašej súčasnej adrese." ], + "Use a recovery method to reset your password": [ + "Na resetovanie hesla použite metódu obnovenia" + ], "Use this guide to get your organization promptly benefiting from ${ BRAND_NAME }'s industry-leading encryption and privacy ecosystem.": [ "Použite tohto sprievodcu, aby vaša organizácia mohla okamžite využívať výhody špičkového ekosystému šifrovania a ochrany osobných údajov od spoločnosti ${ BRAND_NAME }." ], "We can't access ${ boldEmails } anymore.": [ "Už nemáme prístup k ${ boldEmails }." ], + "We will pause imports at 80% storage to reserve space for new messages.": [ + "Keď sa úložisko zaplní na 80 %, pozastavíme import, aby sme uvoľnili miesto pre nové správy." + ], "We'll bring in your old emails and connect your Gmail to ${ MAIL_APP_NAME } so new messages appear automatically": [ "Načítame vaše staré emaily a prepojíme váš Gmail s aplikáciou ${ MAIL_APP_NAME }, aby sa nové správy zobrazovali automaticky" ], - "We've started importing your email from Gmail. We'll let you know when it's done.": [ + "We've started importing your emails from Gmail. We'll let you know when it's done.": [ "Začali sme importovať vaše emaily z Gmailu. Dáme vám vedieť, keď bude import hotový." ], "We’re sorry to see you go. If you have a moment, we’d really appreciate hearing why you’d like to cancel. Your feedback helps us make ${ BRAND_NAME } better for everyone.": [ @@ -5228,6 +5629,11 @@ "použite asistenta pre import Easy Switch" ] }, + "Description for domain modal": { + "Duplicate DMARC record found, go to the DNS console of your domain provider to fix it.": [ + "Bol nájdený duplicitný DMARC záznam. Prejdite do DNS konzoly vášho poskytovateľa domén a problém vyriešte." + ] + }, "Description of the purpose of the import CSV modal": { "Also, we have automatically matched CSV fields with vCard fields. You can review and change this matching manually.": [ "Tiež sme automaticky porovnali pole CSV s poľami vCard. Toto priraďovanie môžete skontrolovať a zmeniť ručne." @@ -6281,8 +6687,8 @@ "${ user } will not be able to access your account until the next emergency access.": [ "${ user } nebude mať prístup k vášmu účtu až do ďalšieho núdzového prístupu." ], - "**${ contact }** is now your recovery contact. They can help you recover your data after a password reset.": [ - "**${ contact }** je teraz váš kontaktný údaj pre obnovenie. Môže vám pomôcť obnoviť dáta po resetovaní hesla." + "**${ contact }** is now your recovery contact. They can help you unlock your data after you reset your password.": [ + "**${ contact }** je teraz vaša kontaktná osoba pre obnovenie. Táto osoba vám pomôže odomknúť vaše dáta po tom, čo si obnovíte heslo." ], "**If they confirm**, click **Approve recovery**. This will unlock their encrypted data.": [ "**Ak potvrdia**, kliknite na **Schváliť obnovenie**. Tým sa odomknú ich šifrované údaje." @@ -6311,12 +6717,21 @@ "Add": [ "Pridať" ], + "Add 1 more": [ + "Pridať 1 ďalšiu" + ], "Add emergency contact": [ "Pridať núdzový kontakt" ], + "Add option": [ + "Pridať možnosť" + ], "Add recovery contact": [ "Pridať kontaktnú osobu na obnovenie" ], + "Add recovery method": [ + "Pridať metódu obnovenia" + ], "Added on ${ formattedDate }": [ "Pridané dňa ${ formattedDate }" ], @@ -6359,6 +6774,9 @@ "Contacts": [ "Kontakty" ], + "Data recovery contacts": [ + "Kontaktné osoby na obnovenie údajov" + ], "Data successfully recovered. You can now decrypt your existing data and encrypted files.": [ "Údaje boli úspešne obnovené. Teraz môžete dešifrovať svoje existujúce dáta a zašifrované súbory." ], @@ -6404,6 +6822,12 @@ "Enable auto-renew": [ "Zapnúť automatickú obnovu" ], + "Enter your extra password": [ + "Zadajte vaše dodatočné heslo" + ], + "Explore plans": [ + "Preskúmať plány" + ], "For ${ email }": [ "Pre ${ email }" ], @@ -6434,11 +6858,11 @@ "Less than a minute left": [ "Zostáva menej ako minúta" ], - "Let ${ user } know it’s really you trying to regain access.": [ - "Dajte ${ user } vedieť, že ste to naozaj vy, kto sa snaží získať prístup späť." - ], - "None": [ - "Žiadny" + "Maximum of ${ limit } contact reached. To change, remove a contact and add a new one.": [ + "Bol dosiahnutý maximálny počet ${ limit } kontaktu. Ak chcete tento počet zmeniť, odstráňte jeden kontakt a pridajte nový.", + "Bol dosiahnutý maximálny počet ${ limit } kontaktov. Ak chcete tento počet zmeniť, odstráňte jeden kontakt a pridajte nový.", + "Bol dosiahnutý maximálny počet ${ limit } kontaktov. Ak chcete tento počet zmeniť, odstráňte jeden kontakt a pridajte nový.", + "Bol dosiahnutý maximálny počet ${ limit } kontaktov. Ak chcete tento počet zmeniť, odstráňte jeden kontakt a pridajte nový." ], "Only ": [ "Iba " @@ -6530,14 +6954,11 @@ "Select recovery contact ${ name }": [ "Vyberte kontaktnú osobu na obnovenie účtu ${ name }" ], - "Send email request": [ - "Odoslať žiadosť emailom" - ], "Send recovery request": [ "Odoslať žiadosť o obnovenie" ], - "Set account recovery": [ - "Nastaviť obnovenie účtu" + "Start recovery": [ + "Spustiť obnovu" ], "Stop being recovery contact": [ "Prestať byť kontaktnou osobou na obnovenie účtu" @@ -6557,9 +6978,15 @@ "They added me as trusted contact. I can access their account in case of an emergency.": [ "Pridali ma ako dôveryhodný kontakt. V prípade núdze mám prístup k ich účtu." ], + "They added you as trusted contact. You can access their account in case of an emergency.": [ + "Pridali vás ako dôveryhodný kontakt. V prípade núdze môžete pristupovať k ich účtu." + ], "They may ask to access my account in case of an emergency.": [ "V prípade núdze môžu požiadať o prístup k môjmu účtu." ], + "They may ask to access your account in case of an emergency.": [ + "V prípade núdze môžu požiadať o prístup k vášmu účtu." + ], "They will receive access automatically in **${ days } day**, on **${ formattedAccessibleAt }**, you can reject their request or give them access immediately at any time.": [ "Prístup získajú automaticky o **${ days } deň**, **${ formattedAccessibleAt }**. Ich žiadosť môžete kedykoľvek zamietnuť alebo im prístup udeliť okamžite.", "Prístup získajú automaticky o **${ days } dni **, **${ formattedAccessibleAt }**. Ich žiadosť môžete kedykoľvek zamietnuť alebo im prístup udeliť okamžite.", @@ -6578,6 +7005,9 @@ "Time required before automatically granting them access": [ "Čas potrebný na automatické udelenie prístupu" ], + "To add recovery contacts, you must have a recovery email address or phone number.": [ + "Ak chcete pridať kontakty pre obnovenie, musíte mať emailovú adresu alebo telefónne číslo na obnovenie." + ], "To disable this recovery method, remove all your recovery contacts.": [ "Ak chcete túto metódu obnovenia deaktivovať, odstráňte všetky svoje kontakty na obnovenie účtu." ], @@ -6587,6 +7017,9 @@ "Unable to recover data": [ "Dáta nie je možné obnoviť" ], + "Unlock ${ PASS_APP_NAME }": [ + "Odomknúť ${ PASS_APP_NAME }" + ], "Upgrade": [ "Zvýšiť úroveň" ], @@ -6608,6 +7041,9 @@ "We received a request to unlock the encrypted data of your contact **${ user }**.": [ "Dostali sme žiadosť o odblokovanie šifrovaných údajov vášho kontaktu **${ user }**." ], + "We sent an email request to ${ user }. Let them know it's really you trying to regain access.": [ + "Poslali sme emailovú žiadosť používateľom ${ user }. Dajte im vedieť, že ste to naozaj vy, kto sa snaží získať späť prístup." + ], "We were not able to verify the recovery data. Proceed anyway?": [ "Nebolo možné overiť údaje o obnovení účtu. Pokračovať aj tak?" ], @@ -6945,6 +7381,9 @@ "Invalid invitation link": [ "Neplatný odkaz pozvánky" ], + "Invalid joining link. Please contact your administrator.": [ + "Neplatný odkaz na pripojenie. Obráťte sa na správcu, prosím." + ], "Invalid name": [ "Neplatné meno" ], @@ -7125,9 +7564,6 @@ "Please try again in a few moments.": [ "Skúste to znova o chvíľu, prosím." ], - "Please upgrade to a business plan with more than 1 user to get multi-user support": [ - "Ak chcete získať podporu pre viacerých používateľov, inovujte na obchodný plán s viac ako 1 používateľom" - ], "Please upgrade to a business plan with more than 1 user to manage multiple users.": [ "Ak chcete spravovať viacerých používateľov, prejdite na obchodný plán s viac ako 1 používateľom." ], @@ -7272,6 +7708,9 @@ "There are too many folders in your external account. Please customize the import to delete some folders.": [ "Na vašom externom účte je príliš veľa priečinkov. Upravte import na zmazanie niektorých priečinkov, prosím." ], + "There was an error, please try again.": [ + "Vyskytla sa chyba, skúste to znova, prosím." + ], "This field exceeds the maximum of ${ maximumLength } characters.": [ "Toto pole presahuje maximálny počet znakov ${ maximumLength }." ], @@ -7556,6 +7995,9 @@ "Ask your administrator to enable Account monitor.": [ "Požiadajte svojho administrátora, aby povolil monitor účtu." ], + "Enable account monitor to start loading event.": [ + "Aktivujte monitor účtu, aby sa začalo nahrávanie udalosti." + ], "Error: ${ errorMessage }": [ "Chyba: ${ errorMessage }" ], @@ -8073,18 +8515,33 @@ ] }, "Feature": { + "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME } desktop app": [ + "Desktopová aplikácia ${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME }" + ], "${ MaxVPN } VPN connection": [ "${ MaxVPN } VPN pripojenie", "${ MaxVPN } VPN pripojenia", "${ MaxVPN } VPN pripojení", "${ MaxVPN } VPN pripojení" ], + "${ PROTON_SENTINEL_NAME } account protection": [ + "Ochrana účtu ${ PROTON_SENTINEL_NAME }" + ], + "15 GB storage": [ + "15 GB úložisko" + ], "3 email domains": [ "3 emailové domény" ], + "3 folders, labels and filters": [ + "3 priečinky, štítky a filtre" + ], "500 GB storage": [ "500 GB úložisko" ], + "500 MB Mail storage": [ + "500 MB úložisko pre Mail" + ], "500 MB storage": [ "500 MB úložisko" ], @@ -8118,20 +8575,38 @@ "More premium features": [ "Viac prémiových funkcií" ], + "Premium features in Mail, Calendar, Drive, Pass and VPN": [ + "Prémiové funkcie v Mail, Calendar, Drive, Pass a VPN" + ], + "Priority support": [ + "Prednostná podpora" + ], "Remove": [ "Odstrániť" ], + "Schedule and snooze emails": [ + "Plánovanie a odkladanie emailov" + ], "Secure Core servers": [ "Servery Secure Core" ], "Secure streaming support": [ "Podpora zabezpečeného streamovania" ], + "Short domain @pm.me": [ + "Skrátená doména @pm.me" + ], "Torrenting support (P2P)": [ "Podpora Torrentu (P2P)" ], + "Unlimited folders, labels and filters": [ + "Neobmedzený počet priečinkov, štítkov a filtrov" + ], "Unlimited hide-my-email aliases": [ "Neobmedzený počet hide-my-email aliasov" + ], + "Use your own email domain": [ + "Používajte vlastnú emailovú doménu" ] }, "Features": { @@ -8500,8 +8975,11 @@ ] }, "Force upgrade safety review": { - "I understand that I will no longer be able to sign in to older versions of ${ BRAND_NAME } mobile apps.": [ - "Rozumiem, že sa už nebudem môcť prihlásiť do starších verzií mobilných aplikácií ${ BRAND_NAME }." + "I understand that I will no longer be able to sign in to older versions of ${ BRAND_NAME } apps.": [ + "Rozumiem, že sa už nebudem môcť prihlásiť do starších verzií ${ BRAND_NAME } aplikácií." + ], + "Learn more": [ + "Zistiť viac" ] }, "Form heading": { @@ -8602,6 +9080,9 @@ ], "Group address:": [ "Skupinová adresa:" + ], + "Roles and permission:": [ + "Pozície a oprávnenia:" ] }, "Group member count": { @@ -8663,6 +9144,14 @@ "Členstvo v skupine" ] }, + "group_modal": { + "General": [ + "Všeobecné" + ], + "Roles and permissions": [ + "Pozície a oprávnenia" + ] + }, "Header": { "Access": [ "Prístup" @@ -9321,6 +9810,15 @@ "${ boldWarning } You will lose access to all current encrypted data in your account if you continue.": [ "${ boldWarning } Ak budete pokračovať, stratíte prístup ku všetkým aktuálnym zašifrovaným údajom vo vašom účte." ], + "${ BRAND_NAME } Business plans gives your team all the collaboration tools they need to be productive and organized in their work, while safeguarding your business.": [ + "${ BRAND_NAME } plán Business poskytuje vášmu tímu všetky nástroje na spoluprácu, ktoré potrebuje na produktívnu a organizovanú prácu, a zároveň chráni vašu firmu." + ], + "${ BRAND_NAME } Free": [ + "${ BRAND_NAME } Free" + ], + "${ BRAND_NAME } is independently funded and operates without advertising. Below are examples of how this independence has been used in practice.": [ + "${ BRAND_NAME } je nezávisle financovaný a funguje bez reklamy. Nižšie uvádzame príklady toho, ako sa táto nezávislosť uplatňuje v praxi." + ], "${ BRAND_NAME } is privacy you can trust, ensured by strong encryption, open-source code, and Swiss privacy laws. We believe nobody should be able to exploit your data, period. Our technology and business are based upon this fundamentally stronger definition of privacy.": [ "${ BRAND_NAME } je súkromie, ktorému môžete dôverovať, zabezpečené silným šifrovaním, open-source kódom a švajčiarskymi zákonmi o súkromí. Veríme, že by nikto nemal byť schopný zneužiť vaše údaje, bodka. Naša technológia a obchodné aktivity sú založené na tejto zásadne silnejšej definícií súkromia." ], @@ -9333,6 +9831,9 @@ "${ BRAND_NAME } will send a verification code to ${ phoneNumber }. Standard message rates may apply.": [ "${ BRAND_NAME } odošle overovací kód na číslo ${ phoneNumber }. Môžu sa účtovať štandardné poplatky za správy." ], + "${ BRAND_NAME } will send a verification code to your recovery phone. Standard message rates may apply.": [ + "${ BRAND_NAME } odošle overovací kód na váš záložný telefón. Môžu sa účtovať štandardné poplatky za správy." + ], "${ BRAND_NAME }'s encryption technology means that nobody can access your password - not even us.": [ "Šifrovacia technológia ${ BRAND_NAME } znamená, že nikto nemá prístup k vášmu heslu – dokonca ani my." ], @@ -9435,6 +9936,9 @@ "${ name } for Windows": [ "${ name } pre Windows" ], + "${ name } is not available": [ + "${ name } nie je k dispozícii" + ], "${ none }: do not quarantine or reject unauthorized emails. Usually, people only use this policy to troubleshoot or test.": [ "${ none }: neumiestňovať do karantény ani neodmietať neautorizované emaily. Obvykle túto zásadu ľudia používajú zvyčajne na diagnostiku a odstraňovanie problémov alebo na testovanie." ], @@ -9588,6 +10092,9 @@ "${ vaultLink } updated": [ "${ vaultLink } bol aktualizovaný" ], + "${ VPN_SHORT_APP_NAME } hides your traffic. ${ PASS_SHORT_APP_NAME } hides your identity\n— unlimited **hide-my-email aliases** and **dark-web alerts** if your data is ever leaked.": [ + "${ VPN_SHORT_APP_NAME } skryje vašu internetovú aktivitu. ${ PASS_SHORT_APP_NAME } skryje vašu identitu\n— neobmedzený počet **hide-my-emailaliasov ** a **upozornení z dark webu** v prípade úniku vašich údajov." + ], "${ vpnPlus } required for Country level connection.": [ "Pre pripojenie na úrovni krajiny sa vyžaduje ${ vpnPlus }." ], @@ -9627,6 +10134,9 @@ "(formerly Twitter)": [ "(bývalý Twitter)" ], + "**${ appName }** is not available for your account.": [ + "**${ appName }** nie je pre váš účet k dispozícii." + ], "**${ appName }** is not supported in your organization **${ organizationName }**.": [ "**${ appName }** nie je vo vašej organizácii **${ organizationName }** podporovaný." ], @@ -9669,9 +10179,15 @@ "**This will disable end-to-end encrypted email forwardings:** you can set them up again later.": [ "**Týmto sa deaktivuje end-to-end šifrované preposielanie emailov:** môžete ich neskôr znovu nastaviť." ], + "**Your recovery email alone doesn't allow you to recover your encrypted data** after you reset your password.": [ + "**Samotný email na obnovenie hesla vám neumožňuje obnoviť zašifrované údaje** po resetovaní hesla." + ], "**Your recovery methods will be invalidated:** you can generate new recovery data later.": [ "**Vaše metódy obnovy budú zneplatnené:** nové údaje na obnovenie môžete vygenerovať neskôr." ], + "**Your recovery phone alone doesn’t allow you to recover your encrypted data** after you reset your password.": [ + "**Samotný telefón na obnovenie vám neumožňuje obnoviť šifrované údaje** po resetovaní hesla." + ], "+ ${ invisibleCount } More": [ "+ ${ invisibleCount } ďalšia", "+ ${ invisibleCount } ďalšie", @@ -9741,15 +10257,27 @@ "Activity Monitor": [ "Monitor aktivity" ], + "Add ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }": [ + "Pridať ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }" + ], "Add ${ PLAN_NAMES[PLANS.MEET_BUSINESS] }": [ "Pridať ${ PLAN_NAMES[PLANS.MEET_BUSINESS] }" ], + "Add 1 to 5 people who you trust and can contact easily. They will be able to reset your password for you by signing in to your account. They must already have a ${ BRAND_NAME } Account.": [ + "Pridajte 1 až 5 osôb, ktorým dôverujete a s ktorými sa môžete ľahko skontaktovať. Tieto osoby vám budú môcť obnoviť heslo po prihlásení sa do vášho účtu. Musia mať už vytvorený ${ BRAND_NAME } účet." + ], "Add a @pm.me email address to your account. This simple, shorter domain stands for \"${ MAIL_APP_NAME } me\" or \"Private Message me.\"": [ "Pridajte do svojho konta e-mailovú adresu @pm.me. Táto jednoduchá, kratšia doména znamená \"${ MAIL_APP_NAME } me\" alebo \"Private Message me.\"" ], + "Add a phone number in case we need to contact you": [ + "Uveďte telefónne číslo pre prípad, že by sme vás potrebovali kontaktovať" + ], "add a recovery method": [ "pridali spôsob obnovenia" ], + "Add an email address in case we need to contact you": [ + "Zadajte emailovú adresu pre prípad, že vás budeme potrebovať kontaktovať" + ], "Add another layer of security to your account. You’ll need to verify yourself with 2FA every time you sign in.": [ "Pridajte do svojho účtu ďalšiu úroveň zabezpečenia. Pri každom prihlásení sa budete musieť overiť pomocou 2FA." ], @@ -9780,11 +10308,11 @@ "Add your name and logo to create a more personalized experience for your organization.": [ "Pridajte vlastný názov a logo, aby ste vytvorili osobnejší zážitok pre vašu organizáciu." ], - "Adding ${ addedServerCount } gateway server": [ - "Pridávanie ${ addedServerCount } servera brány", - "Pridávanie ${ addedServerCount } serverov brány", - "Pridávanie ${ addedServerCount } serverov brány", - "Pridávanie ${ addedServerCount } serverov brány" + "Adding ${ total } gateway server": [ + "Pridávanie ${ total } servera brány", + "Pridávanie ${ total } serverov brány", + "Pridávanie ${ total } serverov brány", + "Pridávanie ${ total } serverov brány" ], "Adding an external email address will disable end-to-end encryption for all email communication within that group. Do you want to proceed?": [ "Pridaním externej emailovej adresy sa vypne end-to-end šifrovanie pre všetku emailovú komunikáciu v rámci tejto skupiny. Chcete pokračovať?" @@ -9864,6 +10392,12 @@ "Allow users to connect to secure shared servers from the **Countries** section of the ${ VPN_APP_NAME } app.": [ "Umožniť používateľom pripojiť sa k zabezpečeným zdieľaným serverom v položke **Krajiny** v aplikácii ${ VPN_APP_NAME }." ], + "Allowing QR code sign-in will let you sign in by scanning a QR code if you forget your password. All you need is to be signed in to a ${ BRAND_NAME } service on another device.": [ + "Ak povolíte prihlásenie pomocou QR kódu, budete sa môcť prihlásiť naskenovaním QR kódu v prípade, že zabudnete heslo. Stačí, ak budete prihlásení do služby ${ BRAND_NAME } na inom zariadení." + ], + "Allowing the password reset from the settings lets you to change your password if you’ve lost it, but are still signed in to ${ BRAND_NAME }.": [ + "Ak v nastaveniach povolíte obnovenie hesla, budete si môcť zmeniť heslo v prípade, že ste ho zabudli, ale stále ste prihlásení do služby ${ BRAND_NAME }." + ], "Already allocated": [ "Už pridelené" ], @@ -9969,6 +10503,9 @@ "Are you sure you want to revoke certificate **${ name }**": [ "Skutočne chcete zrušiť certifikát **${ name }**?" ], + "Are you sure you want to sign out of this account?": [ + "Naozaj sa chcete odhlásiť z tohto účtu?" + ], "Are you sure you want to sort your folders alphabetically?": [ "Skutočne chcete zoradiť svoje priečinky podľa abecedy?" ], @@ -10065,9 +10602,18 @@ "Before you can start sending and receiving emails from your new addresses you need to create encryption keys for them.": [ "Pred zahájením odosielania a prijímania emailov z vašich nových adries je potrebné pre ne vytvoriť šifrovacie kľúče." ], + "BEST FOR TV": [ + "NAJLEPŠIE PRE TV" + ], "Beta": [ "Beta" ], + "Billed at ${ monthlyDiscountedPrice } for the first 6 months, renews at ${ monthlyRenewalPrice }.": [ + "Cena za prvých 6 mesiacov je ${ monthlyDiscountedPrice }, pri predĺžení zmluvy sa cena mení na ${ monthlyRenewalPrice }." + ], + "Billed at ${ yearlyDiscountedPrice } for the first 12 months, renews at ${ yearlyRenewalPrice }.": [ + "Cena za prvých 12 mesiacov je ${ yearlyDiscountedPrice }, pri predĺžení zmluvy sa cena mení na ${ yearlyRenewalPrice }." + ], "Billing cycle: ${ text }": [ "Fakturačné obdobie: ${ text }" ], @@ -10077,6 +10623,9 @@ "Boost your organization’s brand identity and create a more consistent online experience for your users.": [ "Posilnite identitu značky vašej organizácie a vytvorte konzistentnejší online zážitok pre vašich používateľov." ], + "By adding people you trust as recovery contacts, we'll be able to send them an email to help you if you're having trouble recovering your data after a password reset. You can also be a recovery contact for others.": [ + "Ak pridáte osoby, ktorým dôverujete, ako kontakty na obnovenie účtu, budeme im môcť poslať email, aby vám pomohli, ak budete mať problémy s obnovením prístupu po resetovaní hesla. Aj vy môžete byť kontaktom pre obnovenie pre iných." + ], "By creating a ${ PASS_APP_NAME } account with your SimpleLogin email, you can manage your aliases directly from ${ PASS_APP_NAME }.": [ "Vytvorením ${ PASS_APP_NAME } účtu so svojím SimpleLogin emailom môžete spravovať svoje aliasy priamo z ${ PASS_APP_NAME }." ], @@ -10119,9 +10668,6 @@ "Change your password": [ "Zmeňte si heslo" ], - "Check the status of imports and forwarding.": [ - "Skontrolujte stav importov a preposielania." - ], "Check your network and try again.": [ "Skontrolujte svoju sieť a skúste to znova." ], @@ -10155,6 +10701,9 @@ "CNET editors choice award with a rating of 8.4 out of 10": [ "Ocenenie CNET editors choice s hodnotením 8,4 z 10" ], + "Code has been re-sent.": [ + "Kód bol opätovne zaslaný." + ], "Coming soon": [ "Už čoskoro" ], @@ -10170,6 +10719,9 @@ "Configure SAML authentication for your organization through an identity provider like Okta, Microsoft Azure, or Google Identity Platform. This will enable SAML for the whole organization.": [ "Nakonfigurujte overovanie SAML pre svoju organizáciu prostredníctvom poskytovateľa identít, napríklad Okta, Microsoft Azure alebo Google Identity Platform. Týmto sa umožní SAML pre celú organizáciu." ], + "Connect and manage your external mailboxes in ${ MAIL_APP_NAME }.": [ + "Pripojte a spravujte svoje externé poštové schránky v aplikácii ${ MAIL_APP_NAME }." + ], "Connection data will be available in around 1 hour.": [ "Údaje o pripojení budú k dispozícii približne o 1 hodinu." ], @@ -10188,6 +10740,9 @@ "Continue to connect this entity with your ${ BRAND_NAME } organization.": [ "Pokračujte v pripojení tohto subjektu k vašej organizácii ${ BRAND_NAME }." ], + "Continue with ${ BRAND_NAME } Free": [ + "Pokračovať s ${ BRAND_NAME } Free" + ], "Continuing will connect your ${ BRAND_NAME } Account to ${ name }.": [ "Ak budete pokračovať, váš účet ${ BRAND_NAME } sa prepojí s ${ name }." ], @@ -10230,11 +10785,11 @@ "Create a new code on your TV and try again.": [ "Vytvorte nový kód na televízore a skúste to znova." ], - "Create a secure cloud for ${ value } member": [ - "Vytvoriť bezpečný cloud pre ${ value } člena", - "Vytvoriť bezpečný cloud pre ${ value } členov", - "Vytvoriť bezpečný cloud pre ${ value } členov", - "Vytvoriť bezpečný cloud pre ${ value } členov" + "Create a secure cloud for ${ memberCount } member": [ + "Vytvoriť bezpečný cloud pre ${ memberCount } člena", + "Vytvoriť bezpečný cloud pre ${ memberCount } členov", + "Vytvoriť bezpečný cloud pre ${ memberCount } členov", + "Vytvoriť bezpečný cloud pre ${ memberCount } členov" ], "Create an account": [ "Vytvoriť účet" @@ -10254,6 +10809,12 @@ "Vytváranie serverov brány: ${ serverNumber } / ${ total }", "Vytváranie serverov brány: ${ serverNumber } / ${ total }" ], + "Creating gateway with ${ total } server": [ + "Vytváranie brány s ${ total } serverom", + "Vytváranie brány s ${ total } servermi", + "Vytváranie brány s ${ total } servermi", + "Vytváranie brány s ${ total } servermi" + ], "Creating your account": [ "Vytvárame váš účet" ], @@ -10302,6 +10863,9 @@ "Data recoverable with recovery phrase": [ "Dáta obnoviteľné pomocou obnovovacej frázy" ], + "Data recovery requires a password reset option (email or SMS)": [ + "Obnovenie údajov si vyžaduje možnosť obnovenia hesla (emailom alebo SMS)" + ], "dedicated servers": [ "dedikované servery" ], @@ -10350,6 +10914,9 @@ "Disabling authenticator app 2FA will make your account less secure. Only proceed if absolutely necessary.": [ "Deaktivácia 2FA overovacej aplikácie zníži bezpečnosť vášho účtu. Pokračujte len v prípade, ak je to absolútne nevyhnutné." ], + "Disabling the data backup on this device will prevent you from automatically unlocking your encrypted data after a password reset.": [ + "Vypnutím zálohovania údajov na tomto zariadení zabránite automatickému odomknutiu šifrovaných údajov po resetovaní hesla." + ], "Discount": [ "Zľava" ], @@ -10512,6 +11079,9 @@ "Enabling recovery by phrase again will generate a new recovery phrase.": [ "Opätovným aktivovaním obnovovacej frázy bude vygenerovaná nová." ], + "Enabling the data backup on this device will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset, simply by signing in on this device.": [ + "Povolením zálohovania údajov na tomto zariadení obnovíte prístup k emailom, kontaktom, súborom, heslám a všetkým ostatným šifrovaným údajom vo vašom účte po resetovaní hesla – stačí sa na tomto zariadení prihlásiť." + ], "Encryption setting updated": [ "Nastavenie šifrovania bolo aktualizované" ], @@ -10683,12 +11253,12 @@ "For easy access to your passwords and more.": [ "Pre jednoduchý prístup k vašim heslám a ďalším údajom." ], + "For just ${ bundlePlanPriceInline }": [ + "Len za ${ bundlePlanPriceInline }" + ], "For users who are switching to ${ MAIL_APP_NAME } from another email service, select the ${ boldAddresses } tab and add all active email addresses before changing the MX record to ensure a smooth transition.": [ "Pre používateľov, ktorí prechádzajú na ${ MAIL_APP_NAME } z inej emailovej služby, vyberte kartu ${ boldAddresses } a pred zmenou MX záznamu pridajte všetky aktívne emailové adresy, aby bol zaistený plynulý prechod." ], - "Forwarding automatically sends new incoming emails to your Inbox.": [ - "Preposielanie automaticky odošle nové prichádzajúce emaily do vašej doručenej pošty." - ], "Free forever": [ "Navždy zadarmo" ], @@ -10716,6 +11286,9 @@ "Gateways": [ "Brány" ], + "Generating a new recovery phrase will deactivate your current recovery phrase.": [ + "Vytvorenie novej obnovovacej frázy deaktivuje vašu súčasnú obnovovaciu frázu." + ], "Generating a new recovery phrase will deactivate your old one.": [ "Vygenerovaním novej obnovovacej fráze sa stará deaktivuje." ], @@ -10737,12 +11310,18 @@ "Get notified if your password or other personal data was leaked. ${ learnMoreLinkNoBreach }": [ "Nechajte sa upozorniť, ak dôjde k úniku vášho hesla alebo iných osobných údajov. ${ learnMoreLinkNoBreach }" ], + "Get started": [ + "Začíname" + ], "Get started with the referral link above.": [ "Začnite s odporúčacím odkazom vyššie." ], "Get visibility into account access": [ "Získajte prehľad o prístupe k účtu" ], + "Get VPN Plus": [ + "Získajte VPN Plus" + ], "Give the token a descriptive name, such as the service you plan to use it with, and select one of your active custom domain addresses. Only this address will be able to send emails with this token.": [ "Dajte tokenu popisný názov, napríklad službu, s ktorou ho plánujete používať a vyberte jednu z vašich aktívnych adries vlastnej domény. Iba táto adresa bude môcť odosielať emaily s týmto tokenom." ], @@ -10800,6 +11379,12 @@ "If another administrator changed this password, you will need to ask them for the new Organization Password.": [ "Pokiaľ niektorý zo správcov zmenil heslo, budete ho musiet požiadať o nové heslo organizácie." ], + "If disabled, ${ BRAND_NAME } will still use your recovery email to send security notifications.": [ + "Ak je táto funkcia deaktivovaná, ${ BRAND_NAME } bude naďalej používať vašu záložnú emailovú adresu na zasielanie bezpečnostných upozornení." + ], + "If disabled, ${ BRAND_NAME } will still use your recovery phone to send security notifications.": [ + "Ak je táto funkcia vypnutá, ${ BRAND_NAME } bude naďalej používať váš záložný telefón na zasielanie bezpečnostných upozornení." + ], "If disabled, only administrators will be able to export data.": [ "Ak je táto možnosť vypnutá, údaje budú môcť exportovať iba správcovia." ], @@ -10878,6 +11463,9 @@ "If you purchased a gift code or received one from our support team, you can enter it here.": [ "Ak ste zakúpili darčekový kód alebo ste ho obdržali od našej podpory, môžete ho sem vložiť." ], + "If you recently reset your password, you can ${ recoveryMethodLink } to unlock your data. If this is due to an old password reset, you can stop the message from showing again.": [ + "Ak ste nedávno obnovili heslo, môžete kliknúť na ${ recoveryMethodLink } a odomknúť si svoje údaje. Ak sa táto správa zobrazuje kvôli staršej obnove hesla, môžete zabrániť jej opätovnému zobrazovaniu." + ], "If you recently reset your password, you can use a data recovery method to unlock your data": [ "Ak ste si nedávno obnovili heslo, na odomknutie údajov môžete použiť metódu obnovenia údajov" ], @@ -11079,6 +11667,12 @@ "Item updated in vault": [ "Položka v trezore aktualizovaná" ], + "It’s often the easiest way to recover your account if you’re signed in.": [ + "Ak ste prihlásení, je to často najjednoduchší spôsob, ako obnoviť svoj účet." + ], + "It’s the only way to instantly recover everything, so make sure you keep it somewhere safe but accessible.": [ + "Je to jediný spôsob, ako okamžite obnoviť všetky dáta, takže si ho uložte na bezpečné, ale ľahko dostupné miesto." + ], "JCB logo": [ "JCB logo" ], @@ -11286,15 +11880,15 @@ "No card required": [ "Nevyžaduje sa žiadna karta" ], + "No connected addresses.": [ + "Žiadne pripojené adresy." + ], "No countries enabled": [ "Nie sú povolené žiadne krajiny" ], "No folder selected": [ "Nie je vybraný žiadny priečinok" ], - "No forwarding history.": [ - "Bez histórie preposielania." - ], "No gateways": [ "Žiadne brány" ], @@ -11358,6 +11952,9 @@ "Only change these settings if you are using PGP with non-${ BRAND_NAME } recipients.": [ "Tieto nastavenia zmeňte len vtedy, ak používate PGP s príjemcami, ktorí nepoužívajú ${ BRAND_NAME }." ], + "Only sign in on devices you trust": [ + "Prihlasujte sa len na zariadeniach, ktorým dôverujete" + ], "Only you can see the label": [ "Štítky môžete vidieť len vy" ], @@ -11631,9 +12228,18 @@ "Recently used servers:": [ "Nedávno použité servery:" ], + "RECOMMENDED": [ + "ODPORÚČANÉ" + ], "Recommended on trusted devices. ${ keepMeSignedInLearnMoreLink }": [ "Odporúčané na dôveryhodných zariadeniach. ${ keepMeSignedInLearnMoreLink }" ], + "Recovery by email is not available while ${ PROTON_SENTINEL_NAME } is enabled.": [ + "Pri povolenom ${ PROTON_SENTINEL_NAME } nie je obnovenie prostredníctvom emailu k dispozícii." + ], + "Recovery by phone is not available while ${ PROTON_SENTINEL_NAME } is enabled.": [ + "Pri povolenom ${ PROTON_SENTINEL_NAME } nie je obnovenie prostredníctvom telefónu k dispozícii." + ], "Recovery file downloaded": [ "Súbor pre obnovenie bol stiahnutý" ], @@ -11787,6 +12393,9 @@ "Set up your organization": [ "Nastavte svoju organizáciu" ], + "Set up your organization and start protecting your data in a few easy steps.": [ + "Nastavte svoju organizáciu a začnite chrániť svoje údaje v niekoľkých jednoduchých krokoch." + ], "Setting successfully saved": [ "Nastavenie bolo úspešne uložené" ], @@ -11826,6 +12435,12 @@ "Show each sender's image in the message list. The sender's initials will be shown if a photo is not available.": [ "Zobrazí obrázok každého odosielateľa v zozname správ. Ak nie je k dispozícii obrázok, zobrazia sa iniciály odosielateľa." ], + "Show fewer benefits": [ + "Zobraziť menej výhod" + ], + "Show more benefits": [ + "Zobraziť ďalšie výhody" + ], "Show original message": [ "Zobraziť pôvodnú správu" ], @@ -11871,9 +12486,6 @@ "Something went wrong. Please try again or contact customer support.": [ "Niečo sa pokazilo. Skúste to znovu alebo kontaktujte zákaznícku podporu, prosím." ], - "Something went wrong. Please try again.": [ - "Niečo sa pokazilo. Skúste to znova, prosím." - ], "Specify the domain which is allowed to authenticate with SAML SSO.": [ "Zadajte doménu, ktorá sa môže overovať pomocou SAML SSO." ], @@ -11967,6 +12579,9 @@ "TechRadar Pro recommended with a rating of 4.2 out of 5 stars": [ "TechRadar Pro odporúča s hodnotením 4,2 z 5 hviezdičiek" ], + "Temporarily unavailable due to high demand. Please try again later.": [ + "V súčasnosti nie je k dispozícii kvôli veľkému záujmu. Skúste to neskôr, prosím." + ], "Temporarily unavailable. Please check back later.": [ "Dočasne nedostupné. Skúste to neskôr." ], @@ -12105,6 +12720,9 @@ "This could take some time. Please do not close this page or disconnect from the internet.": [ "Môže to trvať nejaký čas. Nezatvárajte prosím túto stránku, ani sa neodpájajte od internetu." ], + "This data recovery method requires a password reset option (email or SMS)": [ + "Táto metóda obnovy údajov vyžaduje možnosť obnovenia hesla (emailom alebo SMS)" + ], "This feature delays sending your emails, giving you the opportunity to undo send during the selected time frame.": [ "Táto funkcia oneskoruje odosielanie emailov a dáva vám možnosť zrušiť odoslanie počas zvoleného časového rámca." ], @@ -12165,6 +12783,9 @@ "This verification can take up to one hour. After successful verification, do not remove the TXT record as it is needed to confirm that you continue to own the domain.": [ "Toto overenie môže trvať až jednu hodinu. Po úspešnom overení neodstraňujte záznam TXT, pretože je potrebný na potvrdenie, že doménu naďalej vlastníte." ], + "This will allow the TV to access your ${ BRAND_NAME } account.": [ + "Týmto spôsobom TV získa prístup k vášmu ${ BRAND_NAME } účtu." + ], "This will delete all previous versions of your files older than ${ rententionLabel }.": [ "Toto zmaže všetky predchádzajúce verzie vašich súborov, ktoré sú staršie ako ${ rententionLabel }." ], @@ -12186,6 +12807,9 @@ "This will enable PayPal to be used to pay for your ${ BRAND_NAME } subscription. We will redirect you to PayPal in a new browser tab. If you use any pop-up blockers, please disable them to continue.": [ "Toto umožní, aby sa PayPal použil na zaplatenie vášho predplatného ${ BRAND_NAME }. Na novej karte prehliadača vás presmerujeme na PayPal. Ak používate nejaké blokovanie automaticky otváraných okien, deaktivujte ho, aby ste mohli pokračovať." ], + "This will let you quickly and safely access your ${ BRAND_NAME } Account so you can change you password.": [ + "Vďaka tomu získate rýchly a bezpečný prístup k vášmu účtu ${ BRAND_NAME }, kde si budete môcť zmeniť heslo." + ], "This will permanently delete the data and all email addresses associated with these users.": [ "Týmto natrvalo vymažete dáta a všetky emailové adresy spojené s týmito používateľmi." ], @@ -12258,15 +12882,21 @@ "To decrypt and view your locked data after a password reset, select a recovery method.": [ "Ak chcete dešifrovať a prezerať uzamknuté údaje po obnovení hesla, vyberte spôsob obnovenia." ], + "To enable post-quantum protection, you’ll need to finish generating your new post-quantum encryption keys.": [ + "Ak chcete povoliť postkvantovú ochranu, musíte najskôr dokončiť generovanie nových postkvantových šifrovacích kľúčov." + ], + "To ensure the highest possible security of your account, disable **Recovery by recovery email**.": [ + "Aby ste zaistili čo najvyššiu bezpečnosť svojho účtu, deaktivujte funkciu **Obnovenie prostredníctvom emailu na obnovenie**." + ], + "To ensure the highest possible security of your account, disable **Recovery by recovery phone**.": [ + "Aby ste zaistili čo najvyššiu bezpečnosť svojho účtu, deaktivujte funkciu **Obnovenie prostredníctvom telefónu na obnovenie**." + ], "To ensure you don’t lose important data, ${ DRIVE_APP_NAME } saves older versions of your files as you and your collaborators make changes. Select how long ${ BRAND_NAME } should keep previous versions.": [ "Aby ste nestratili dôležité údaje, ${ DRIVE_APP_NAME } ukladá staršie verzie vašich súborov, keď vy a vaši spolupracovníci vykonávate zmeny. Vyberte, ako dlho má ${ BRAND_NAME } uchovávať predchádzajúce verzie." ], "To fight spam and abuse, please verify you are human.": [ "Aby ste zamedzili spamu a obťažovaniu, potvrďte, že ste človek." ], - "To help keep your account safe, we want to make sure it's really you trying to sign in.": [ - "Aby sme pomohli udržať váš účet v bezpečí, chceme sa uistiť, že ste to naozaj vy, kto sa prihlasuje." - ], "To help keep your account safe, we want to make sure it’s really you trying to sign in.": [ "Aby sme pomohli udržať váš účet v bezpečí, chceme sa uistiť, že ste to naozaj vy, kto sa prihlasuje." ], @@ -12360,6 +12990,9 @@ "Unless you sign out of your account or change your password, your session will remain active. Sessions expire after 60 days of inactivity.": [ "Kým sa neodhlásite z vášho účtu alebo nezmeníte heslo, vaša relácia zostane aktívna. Relácia vyprší po 60 dňoch nečinnosti." ], + "Unlock streaming with VPN Plus.": [ + "Odomknite streamovanie s VPN Plus." + ], "Unsaved changes": [ "Neuložené zmeny" ], @@ -12507,6 +13140,9 @@ "Visa Secure logo": [ "Visa Secure logo" ], + "VPN Plus": [ + "VPN Plus" + ], "VPN with dedicated servers and IP addresses": [ "VPN s vyhradenými servermi a IP adresami" ], @@ -12522,6 +13158,12 @@ "We advise you to use official ${ VPN_APP_NAME } applications when possible.": [ "Ak je to možné, odporúčame vám používať oficiálne aplikácie ${ VPN_APP_NAME }." ], + "We can use your recovery email to send you a verification code to reset your password, and to contact you if we notice suspicious activity.": [ + "Na váš email pre obnovenie vám môžeme poslať overovací kód na obnovenie hesla a kontaktovať vás, ak zaznamenáme podozrivú aktivitu." + ], + "We can use your recovery phone to send you a verification code to reset your password, and to contact you if we notice suspicious activity.": [ + "Na váš telefón pre obnovenie vám môžeme poslať overovací kód na obnovenie hesla a kontaktovať vás, ak zaznamenáme podozrivú aktivitu." + ], "We couldn't complete the transaction. Please try again.": [ "Transakciu sa nepodarilo dokončiť. Skúste to znova, prosím." ], @@ -12567,6 +13209,9 @@ "We stored a backup file in this browser because you allowed data recovery on this ${ deviceLink }. If the backup file is valid, you will immediately regain complete or partial access to your encrypted data.": [ "Záložný súbor sme uložili do tohto prehliadača, pretože ste povolili obnovu údajov na tomto ${ deviceLink }. Ak je záložný súbor platný, okamžite získate úplný alebo čiastočný prístup k zašifrovaným údajom." ], + "We strongly recommend that everyone enable recovery by recovery phrase.": [ + "Dôrazne odporúčame, aby si každý aktivoval obnovenie pomocou obnovovacej frázy." + ], "We use 3-D Secure to protect your payments": [ "Na ochranu vašich platieb používame 3-D Secure" ], @@ -12759,9 +13404,6 @@ "You can edit this once to ensure the correct email address for verification.": [ "Pre zaistenie správnej emailovej adresy pre overenie môžete tento údaj jedenkrát upraviť." ], - "You can enable the Photos section from the interface using the toggle below.": [ - "Sekciu Fotografie môžete povoliť v rozhraní pomocou prepínača nižšie." - ], "You can enforce the password rules members of your organization will use when they create or reset the password to their ${ BRAND_NAME } Account.": [ "Môžete vynútiť pravidlá pre heslá, ktoré budú členovia vašej organizácie používať, keď si vytvoria alebo resetujú heslo pre svoj ${ BRAND_NAME } účet." ], @@ -12828,6 +13470,9 @@ "You don't have any referrals.": [ "Nemáte žiadne odporúčania." ], + "You don’t need to open or read the file—just download it and store it somewhere safe.": [ + "Súbor nemusíte otvárať ani čítať – stačí si ho stiahnuť a uložiť na bezpečné miesto." + ], "You get notified if your password or other data was leaked from a third-party service.": [ "Dostanete upozornenie, keď dôjde k úniku vášho hesla alebo iných údajov zo služieb tretích strán." ], @@ -12975,6 +13620,9 @@ "Your ${ plan } subscription will be replaced with ${ PASS_SHORT_APP_NAME } Lifetime. The remaining balance of your subscription will be added to your account. ${ PASS_SHORT_APP_NAME } lifetime deal has no renewal price, it's a one-time payment for lifetime access to ${ PASS_SHORT_APP_NAME }.": [ "Vaše ${ plan } predplatné bude nahradené predplatným ${ PASS_SHORT_APP_NAME } Lifetime. Zostávajúci zostatok vášho predplatného bude pripísaný na váš účet. Dohoda o ${ PASS_SHORT_APP_NAME } doživotnom predplatnom nemá žiadnu cenu za obnovenie, je to jednorazová platba za doživotný prístup k ${ PASS_SHORT_APP_NAME }." ], + "Your ${ planDisplayName } plan doesn’t just keep your business data and communications safe. It supports your compliance objectives, makes your business stand out, and keeps your team connected.": [ + "Váš plán ${ planDisplayName } nezabezpečuje iba vaše firemné údaje a komunikáciu. Podporuje vaše ciele v oblasti dodržiavania predpisov, dáva vyniknúť vašej firme a udržiava váš tím v kontakte." + ], "Your ${ VPN_APP_NAME } and ${ MAIL_APP_NAME } accounts are linked. To delete them both, please sign in at ${ loginLink } and delete your account there.": [ "Vaše účty ${ VPN_APP_NAME } a ${ MAIL_APP_NAME } sú prepojené. Ak chcete obidva odstrániť, prihláste sa na ${ loginLink } a odstráňte tam svoj účet." ], @@ -13050,12 +13698,18 @@ "Your recent changes have been published. They will be visible to users in the next few hours.": [ "Vaše nedávne zmeny boli publikované. Budú viditeľné pre používateľov v priebehu nasledujúcich niekoľkých hodín." ], + "Your recovery file will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset.": [ + "Váš obnovovací súbor vám po resetovaní hesla obnoví prístup k emailom, kontaktom, súborom, heslám a všetkým ostatným šifrovaným údajom vo vašom účte." + ], "Your recovery phrase": [ "Vaša obnovovacia fráza" ], "Your recovery phrase is a series of 12 randomly generated words in a specific order.": [ "Vaša obnovovacia fráza je séria 12 náhodne vygenerovaných slov v určitom poradí." ], + "Your recovery phrase will allow you to sign in and recover your data if you get locked out of your ${ BRAND_NAME } Account. It is composed of 12 words and acts like a backup password.": [ + "Vaša obnovovacia fráza vám umožní prihlásiť sa a obnoviť vaše údaje v prípade, že stratíte prístup k vášmu ${ BRAND_NAME } účtu. Skladá sa z 12 slov a funguje ako záložné heslo." + ], "Your scheduled plan starts on ${ renewalTime } and will auto-renew every ${ cycle } month.": [ "Vaše naplánované predplatné sa začína ${ renewalTime } a bude automaticky obnovené každý ${ cycle } mesiac.", "Vaše naplánované predplatné sa začína ${ renewalTime } a bude automaticky obnovené každé ${ cycle } mesiace.", @@ -13663,6 +14317,15 @@ "${ Brand } ending with ${ Last4 }": [ "${ Brand } končiaca na ${ Last4 }" ], + "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME } Desktop app": [ + "Desktopová aplikácia ${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME }" + ], + "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME } desktop app": [ + "Desktopová aplikácia ${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME }" + ], + "${ BRAND_NAME } for Business": [ + "${ BRAND_NAME } for Business" + ], "${ BRAND_NAME } username": [ "Používateľské meno ${ BRAND_NAME }" ], @@ -13702,6 +14365,15 @@ "${ pricePerMonthWithCurrency } / month": [ "${ pricePerMonthWithCurrency } / mesiac" ], + "${ PROTON_SENTINEL_NAME } account protection": [ + "Ochrana účtu ${ PROTON_SENTINEL_NAME }" + ], + "${ PROTON_SENTINEL_NAME } protection": [ + "Ochrana ${ PROTON_SENTINEL_NAME }" + ], + "${ value.length }/${ maxLength } characters": [ + "${ value.length }/${ maxLength } znakov" + ], "(Temporarily unavailable. Please check back later.)": [ "(Dočasne nedostupné. Skúste to neskôr.)" ], @@ -13828,6 +14500,9 @@ "Allow notifications by email": [ "Povoliť emailové notifikácie" ], + "Allow QR code sign-in": [ + "Povoliť prihlásenie pomocou QR kódu" + ], "Allow random passwords": [ "Povoliť náhodné heslá" ], @@ -13933,6 +14608,9 @@ "Automated confirmations and alerts": [ "Automatické potvrdenia a upozornenia" ], + "Automatic email forwarding": [ + "Automatické preposielanie emailov" + ], "Automatically save contacts": [ "Automaticky ukladať kontakty" ], @@ -13972,9 +14650,15 @@ "Block malware, ads and trackers": [ "Blokovať malvér, reklamy a sledovače" ], + "Block trackers and marketers": [ + "Blokovanie sledovacích nástrojov a marketingových subjektov" + ], "Bookings, billings, and orders": [ "Rezervácie, fakturácie a objednávky" ], + "Brand your workspace": [ + "Vytvorte si vlastný pracovný priestor" + ], "Browser": [ "Prehliadač" ], @@ -14008,6 +14692,9 @@ "Cash": [ "Hotovosť" ], + "Catch-all email address": [ + "Adresa doménového koša" + ], "Categories": [ "Kategórie" ], @@ -14080,6 +14767,9 @@ "Confirm login password": [ "Potvrďte prihlasovacie heslo" ], + "Confirm MX records added": [ + "Potvrdiť pridané MX záznamy" + ], "Confirm new password": [ "Potvrďte nové heslo" ], @@ -14143,6 +14833,9 @@ "Current email": [ "Súčasný email" ], + "Custom domain": [ + "Vlastná doména" + ], "Custom email domain": [ "Vlastná emailová doména", "Vlastné emailové domény", @@ -14152,6 +14845,9 @@ "Daily email notifications": [ "Denné emailové notifikácie" ], + "Data harvesting": [ + "Zbieranie údajov" + ], "Date": [ "Dátum" ], @@ -14239,18 +14935,27 @@ "e.g. example.com": [ "napr. priklad.sk" ], + "Early access": [ + "Skorší prístup" + ], "Email": [ "Email" ], "Email address": [ "Emailová adresa" ], + "Email addresses": [ + "Emailové adresy" + ], "Email addresses per user": [ "emailových adries na používateľa" ], "Email or username": [ "Email alebo používateľské meno" ], + "Email with @yourcompany.com domain": [ + "Email s doménou @vasafirma.sk" + ], "Emails (all messages)": [ "Emaily (všetky správy)" ], @@ -14284,6 +14989,9 @@ "End weekday": [ "Koniec pracovného týždňa" ], + "End-to-end encryption": [ + "End-to-end šifrovanie" + ], "Enter code": [ "Zadajte kód" ], @@ -14341,6 +15049,9 @@ "Folder location": [ "Umiestnenie priečinka" ], + "Folders, labels, and filters": [ + "Priečinky, štítky a filtre" + ], "Font family": [ "Typ písma" ], @@ -14359,6 +15070,9 @@ "Free": [ "Free" ], + "Free VPN included": [ + "Vrátane Free VPN" + ], "From: ${ fromEmail }": [ "Od: ${ fromEmail }" ], @@ -14407,6 +15121,9 @@ "Highest VPN speed": [ "Najvyššia rýchlosť VPN" ], + "Host name": [ + "Názov servera (Host name)" + ], "I understand that I'll need to add this email address to the other account immediately, to avoid losing this address permanently.": [ "Chápem, že túto emailovú adresu budem musieť okamžite pridať do druhého konta, aby nedošlo k trvalej strate tejto adresy." ], @@ -14524,6 +15241,9 @@ "Main reason for cancelling": [ "Hlavný dôvod zrušenia" ], + "Make sure you have access to a recovery email or phone, and have a data recovery option.": [ + "Uistite sa, že máte prístup k náhradnej emailovej adrese alebo telefónnemu číslu a že máte k dispozícii možnosť obnovenia údajov." + ], "Manage categories": [ "Spravovať kategórie" ], @@ -14575,6 +15295,9 @@ "Moderate NAT": [ "Moderate NAT" ], + "Monthly": [ + "Mesačne" + ], "More payment methods": [ "Ďalšie možnosti platby" ], @@ -14593,6 +15316,9 @@ "Must have at least ${ MIN_PASSWORD_LENGTH } characters": [ "Musí obsahovať aspoň ${ MIN_PASSWORD_LENGTH } znakov" ], + "MX records": [ + "MX záznamy" + ], "Name": [ "Meno" ], @@ -14623,6 +15349,9 @@ "Newsletters": [ "Newslettery" ], + "No": [ + "Nie" + ], "No (users cannot use the app until a vault is shared with them)": [ "Nie (používatelia nemôžu používať aplikáciu, kým s nimi nie je zdieľaný trezor)" ], @@ -14656,12 +15385,18 @@ "Online privacy for your whole family": [ "Online súkromie pre celú vašu rodinu" ], + "Online productivity suite": [ + "Online balík aplikácií na zvýšenie produktivity" + ], "Only a single personal vault can be created": [ "Je možné vytvoriť iba jeden osobný trezor" ], "Only available on ${ PASS_SHORT_APP_NAME } paid plans": [ "Dostupné len v platných plánoch ${ PASS_SHORT_APP_NAME }" ], + "Open-source code": [ + "Open-source kód" + ], "OpenVPN password": [ "Heslo OpenVPN" ], @@ -14722,6 +15457,9 @@ "Pending": [ "Čaká na spracovanie" ], + "Personal and work emails, plus important updates and notifications": [ + "Osobné a pracovné emaily, ako aj dôležité aktualizácie a oznámenia" + ], "Phone number": [ "Telefónne číslo" ], @@ -14755,12 +15493,21 @@ "Postal code": [ "PSČ" ], + "Premium features included": [ + "Vrátane prémiových funkcií" + ], "Previous password": [ "Predchádzajúce heslo" ], "Primary": [ "Primárne" ], + "Priority": [ + "Prioritné" + ], + "Priority support": [ + "Prednostná podpora" + ], "Promotions": [ "Propagačné akcie" ], @@ -14770,6 +15517,9 @@ "Proration": [ "Pomerná časť" ], + "Protected by Swiss privacy laws": [ + "Chránené švajčiarskymi zákonmi o ochrane osobných údajov" + ], "Protection mode": [ "Režim ochrany" ], @@ -14845,6 +15595,9 @@ "Secure password generator": [ "Bezpečný generátor hesiel" ], + "See your team's availability": [ + "Pozrite si dostupnosť vášho tímu" + ], "Select Linux package format": [ "Vyberte formát balíka Linux" ], @@ -14878,6 +15631,9 @@ "Shared between ${ MAIL_SHORT_APP_NAME }, ${ CALENDAR_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME }, and ${ WALLET_SHORT_APP_NAME }.": [ "Zdieľané medzi ${ MAIL_SHORT_APP_NAME }, ${ CALENDAR_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME } a ${ WALLET_SHORT_APP_NAME }." ], + "Short domain @pm.me": [ + "Skrátená doména @pm.me" + ], "Show ${ n } administrator": [ "Zobraziť ${ n } správcu", "Zobraziť ${ n } správcov", @@ -14968,6 +15724,9 @@ "Storage": [ "Úložisko" ], + "Storage per user": [ + "Úložisko na používateľa" + ], "Street address": [ "Ulica a č." ], @@ -14980,6 +15739,9 @@ "Subscription options": [ "Možnosti predplatného" ], + "Support for multiple users": [ + "Podpora viacerých používateľov" + ], "Swipe left action": [ "Akcia potiahnutia prstom doľava" ], @@ -14998,6 +15760,9 @@ "Then": [ "Potom" ], + "Third-party ads": [ + "Reklamy tretích strán" + ], "Thomas": [ "Tomáš" ], @@ -15073,6 +15838,9 @@ "Use folder colors": [ "Použiť farby priečinkov" ], + "Use your own email domain": [ + "Používajte vlastnú emailovú doménu" + ], "User": [ "Používateľ" ], @@ -15100,6 +15868,9 @@ "Verify keys with Key Transparency": [ "Overenie kľúčov cez funkciu Transparentnosť kľúčov" ], + "Version history": [ + "História verzií" + ], "Video conferencing with Zoom": [ "Videokonferencie s aplikáciou Zoom" ], @@ -15112,6 +15883,9 @@ "Vulnerable password": [ "Zraniteľné heslo" ], + "We securely stored recovery information on this device.": [ + "Na tomto zariadení sme bezpečne uložili informácie potrebné na obnovenie." + ], "Weak": [ "Slabé" ], @@ -15139,6 +15913,12 @@ "Without attachment": [ "Bez prílohy" ], + "Yearly": [ + "Ročne" + ], + "Yearly free storage bonus": [ + "Každoročné bonusy na kapacitu úložiska" + ], "Yes": [ "Áno" ], @@ -15166,9 +15946,18 @@ "Your plan": [ "Váš plán" ], + "Your recovery email": [ + "Váš email pre obnovenie" + ], + "Your recovery phone number": [ + "Vaše telefónne číslo pre obnovenie" + ], "Your voucher for your reserved ${ BRAND_NAME } email address:": [ "Váš poukaz na rezervovanú emailovú adresu ${ BRAND_NAME }:" ], + "Zero-access architecture": [ + "Architektúra nulového prístupu" + ], "ZIP code": [ "PSČ" ] @@ -15185,6 +15974,9 @@ ], "Recovery phrase": [ "Obnovovacia fráza" + ], + "Set recovery phone number": [ + "Nastavte telefónne číslo na obnovenie" ] }, "Label (begin date/advanced search)": { @@ -15228,6 +16020,26 @@ "Pridajte prosím nasledujúci TXT záznam. Poznámka: Zmena v DNS záznamoch sa môže prejaviť až za niekoľko hodín." ] }, + "Label for domain setup": { + "${ capitalizedGroup } record not found": [ + "Záznam ${ capitalizedGroup } nebol nájdený" + ], + "Host name": [ + "Názov servera (Host name)" + ], + "Invalid ${ group.name } record found": [ + "Bol nájdený neplatný záznam ${ group.name }" + ], + "Type": [ + "Typ" + ], + "Use default value": [ + "Použiť predvolenú hodnotu" + ], + "Valid ${ group.name } record found": [ + "Bol nájdený platný záznam ${ group.name }" + ] + }, "Label for new member": { "Admin": [ "Administrátor" @@ -15393,6 +16205,9 @@ "data recovery option": [ "možnosť obnovy dát" ], + "Detailed instructions": [ + "Podrobné pokyny" + ], "Details": [ "Podrobnosti" ], @@ -15567,6 +16382,9 @@ "Upgrade your plan": [ "Prejsť na vyšší plán" ], + "use a data recovery method": [ + "použiť metódu obnovenia údajov" + ], "Vault": [ "Trezor" ], @@ -15936,21 +16754,45 @@ "Built-in chat": [ "Vstavaný chat" ], + "Cloud storage and file sharing": [ + "Cloudové úložisko a zdieľanie súborov" + ], + "Data retention policies": [ + "Zásady uchovávania údajov" + ], + "Document and spreadsheet editor": [ + "Editor dokumentov a tabuliek" + ], + "Email writing assistant": [ + "Asistent písania emailov" + ], "End-to-end encrypted screen sharing and ephemeral in-call chat": [ "End-to-end šifrované zdieľanie obrazovky a dočasný chat počas hovoru" ], "Hosts can record meetings locally on their computers": [ "Moderátori môžu nahrávať stretnutia vo svojich počítačoch" ], + "Includes Meet Professional": [ + "Vrátane Meet Professional" + ], "Meeting recording": [ "Nahrávanie schôdze" ], "One active meeting at a time": [ "Len jedna aktívna schôdza naraz" ], + "Password manager with team vaults": [ + "Správca hesiel s tímovými trezormi" + ], + "Private AI Chat (${ LUMO_SHORT_APP_NAME })": [ + "Súkromný AI chat (${ LUMO_SHORT_APP_NAME })" + ], "Screen-sharing": [ "Zdieľanie obrazovky" ], + "Secure mail and calendar": [ + "Bezpečná pošta a kalendár" + ], "Unlimited meetings per day": [ "Neobmedzený počet schôdzok denne" ], @@ -15971,6 +16813,9 @@ "Videokonferencie, ${ n } účastníci", "Videokonferencie, ${ n } účastníkov", "Videokonferencie, ${ n } účastníkov" + ], + "VPN with ad-blocker and malware protection": [ + "VPN s blokovaním reklám a ochranou pred malvérom" ] }, "meet_2025: Info": { @@ -16680,6 +17525,9 @@ "99.95% SLA": [ "99,95 % SLA" ], + "Access all countries": [ + "Prístup ku všetkým krajinám" + ], "Activity logs and policy": [ "Záznamy aktivít a pravidlá" ], @@ -16701,6 +17549,9 @@ "Advanced network security": [ "Pokročilá bezpečnosť siete" ], + "Advanced workspace security": [ + "Pokročilá bezpečnosť pracovného priestoru" + ], "All ${ BRAND_NAME } products and features": [ "Všetky ${ BRAND_NAME } produkty a funkcie" ], @@ -16863,6 +17714,9 @@ "Multiple admin roles": [ "Viacero správcovských rolí" ], + "No streaming support": [ + "Žiadna podpora zabezpečeného streamovania" + ], "No-logs policy": [ "Politika žiadnych logov" ], @@ -17031,6 +17885,9 @@ "Unlimited volume/bandwidth": [ "Neobmedzený objem / šírka pásma" ], + "Unlock streaming": [ + "Odomknite streamovanie" + ], "Up to ${ n } user": [ "Až ${ n } užívateľ", "Až ${ n } používatelia", @@ -17521,6 +18378,12 @@ ] }, "new_plans: Upsell attribute": { + "${ n } country": [ + "${ n } krajina", + "${ n } krajiny", + "${ n } krajín", + "${ n } krajín" + ], "Access advanced VPN features": [ "Získajte prístup k pokročilým VPN funkciám" ], @@ -17586,8 +18449,8 @@ "${ app } product updates": [ "Aktualizácie produktu ${ app }" ], - "${ BRAND_NAME } for Business newsletter": [ - "${ BRAND_NAME } novinky pre firmy" + "${ BRAND_NAME } for Business communications": [ + "${ BRAND_NAME } pre firemnú komunikáciu" ], "${ BRAND_NAME } important announcements": [ "Dôležité oznámenia ${ BRAND_NAME }" @@ -17640,8 +18503,8 @@ "During your first month of using a ${ BRAND_NAME } product": [ "Počas prvého mesiaca používania produktu ${ BRAND_NAME }" ], - "Email subscriptions": [ - "Zasielanie pravidelných emailov" + "Email communications": [ + "Emailová komunikácia" ], "In-app notifications": [ "Oznámenia v aplikácii" @@ -18466,6 +19329,11 @@ "PKGBUILD (pre ostatné distribúcie)" ] }, + "Paragraph": { + "${ BRAND_NAME } is independently funded and operates without advertising. Below are examples of how this independence has been used in practice.": [ + "${ BRAND_NAME } je nezávisle financovaný a funguje bez reklamy. Nižšie uvádzame príklady toho, ako sa táto nezávislosť uplatňuje v praxi." + ] + }, "Participant name": { "You": [ "Vy" @@ -18741,14 +19609,14 @@ "per month, billed every two years": [ "mesačne, účtované každé dva roky" ], - "Preparing your Recovery Kit": [ - "Príprava sady na obnovenie" + "Preparing your recovery phrase": [ + "Príprava frázy na obnovenie" ], "Protected by Swiss privacy laws": [ "Chránené švajčiarskymi zákonmi o ochrane osobných údajov" ], - "Save your recovery kit to continue": [ - "Uložte si sadu na obnovenie pre pokračovanie" + "Save your recovery phrase to continue": [ + "Uložte si frázu na obnovenie pre pokračovanie" ], "Secure vault sharing": [ "Bezpečné zdieľanie trezoru" @@ -19482,6 +20350,9 @@ "Search for an email or IP address": [ "Hľadať email alebo IP adresu" ], + "Search for users or addresses": [ + "Hľadať používateľov alebo adresy" + ], "Search parent folder": [ "Prehľadať nadradenú zložku" ], @@ -19635,18 +20506,18 @@ ] }, "PQC account key generation": { - "Couldn’t generate keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\n${ settingsLink } and select 'Generate key' for your account and for each address.": [ - "Kľúče sa nepodarilo vygenerovať. Ak chcete aktivovať postkvantovú ochranu, budete musieť nové šifrovacie kľúče vygenerovať ručne.\n\n${ settingsLink } a vyberte možnosť „Vygenerovať kľúč“ pre svoj účet a pre každú adresu." + "Couldn’t generate keys. To activate post-quantum protection, you’ll need to finish generating your new post-quantum encryption keys.\n\n${ goToSettingsLink } and select 'Generate missing keys'.": [ + "Kľúče sa nepodarilo vygenerovať. Ak chcete aktivovať postkvantovú ochranu, musíte dokončiť generovanie nových postkvantových šifrovacích kľúčov.\n\nKliknite na ${ goToSettingsLink } a vyberte možnosť „Vygenerovať chýbajúce kľúče“." ] }, "PQC adress key generation": { - "Couldn’t generate address keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\nGo to ${ settingsLink } and select 'Generate key' for each address.": [ - "Nepodarilo sa vygenerovať klúče adresy. Ak chcete aktivovať postkvantovú ochranu, budete musieť nové šifrovacie kľúče vygenerovať ručne.\n\nPrejdite na ${ settingsLink } a pre každú adresu vyberte možnosť „Vygenerovať kľúč“." + "Couldn’t generate address keys. To activate post-quantum protection, you’ll need to finish generating your new post-quantum encryption keys for each address.\n\n${ goToSettingsLink } and select 'Generate missing keys'.": [ + "Nepodarilo sa vygenerovať adresné kľúče. Ak chcete aktivovať postkvantovú ochranu, musíte dokončiť generovanie nových postkvantových šifrovacích kľúčov pre každú adresu.\n\nKliknite na ${ goToSettingsLink } a vyberte možnosť „Vygenerovať chýbajúce kľúče“." ] }, "PQC compatibility warning": { - "**You must update all ${ BRAND_NAME } mobile apps**: your new keys won't work on older app versions.": [ - "**Musíte aktualizovať všetky mobilné aplikácie ${ BRAND_NAME }**: vaše nové kľúče nebudú fungovať v starších verziách aplikácií." + "**You must update all ${ BRAND_NAME } apps**: your new keys won't work on older app versions.": [ + "**Musíte aktualizovať všetky ${ BRAND_NAME } aplikácie**: vaše nové kľúče nebudú fungovať v starších verziách aplikácií." ] }, "PQC key generation": { @@ -19809,6 +20680,9 @@ "Verify now": [ "Overiť" ], + "Verify now this recovery email address: ${ emailData.value }": [ + "Overte teraz túto obnovovaciu emailovú adresu: ${ emailData.value }" + ], "Verify recovery email?": [ "Overiť email pre obnovenie?" ], @@ -19852,13 +20726,138 @@ "Verify recovery phone?": [ "Overiť číslo na obnovenie?" ], + "Verify this recovery phone number now: ${ phoneData.value }": [ + "Overiť toto telefónne číslo určené pre obnovenie: ${ phoneData.value }" + ], "Verifying your phone number increases your account security and allows additional options for recovery.": [ "Overenie vášho telefónneho čísla zvyšuje bezpečnosť vášho účtu a umožňuje ďalšie možnosti obnovenia." ] }, + "Recovery score": { + "${ score } / ${ maxScore } completed": [ + "${ score } / ${ maxScore } dokončené" + ], + "Account protection": [ + "Ochrana účtu" + ], + "Add more options for stronger protection": [ + "Pridajte ďalšie možnosti pre lepšiu ochranu" + ], + "Add more options to avoid getting locked out of your account.": [ + "Pridajte ďalšie možnosti, aby ste sa vyhli zablokovaniu prístupu k vášmu účtu." + ], + "Awesome. Keep your options up-to-date for stronger protection.": [ + "Skvelé. Nezabudnite aktualizovať svoje nastavenia, aby ste mali lepšiu ochranu." + ], + "Good start. Add more options for a stronger protection.": [ + "Dobrý začiatok. Pridajte ďalšie možnosti pre lepšiu ochranu." + ], + "Great. Add more options for a stronger protection.": [ + "Skvelé. Pridajte ďalšie možnosti pre lepšiu ochranu." + ], + "How you increased your account protection": [ + "Ako ste zvýšili ochranu vášho účtu" + ], + "Inactive recovery options": [ + "Neaktívne možnosti obnovy" + ], + "Maximum": [ + "Maximum" + ], + "Partial": [ + "Čiastočne" + ], + "Recovery score: ${ score }": [ + "Skóre obnovy: ${ score }" + ], + "Require verified password reset option (email or SMS)": [ + "Vyžadovať overenie pri zmene hesla (emailom alebo SMS)" + ], + "Score: ${ score } / ${ maxScore }": [ + "Skóre: ${ score } / ${ maxScore }" + ], + "Strong": [ + "Silné" + ], + "Unprotected": [ + "Nechránené" + ], + "Weak": [ + "Slabé" + ] + }, "Recovery score item": { + "Add emergency contacts": [ + "Pridať núdzové kontakty" + ], + "Add recovery contacts": [ + "Pridať kontaktné osoby na obnovenie" + ], + "Add recovery email": [ + "Pridať email pre obnovenie" + ], + "Add recovery phone": [ + "Pridať záložný telefón" + ], + "Allow data recovery on this device": [ + "Povoliť obnovu dát na tomto zariadení" + ], + "Allow password reset from settings": [ + "Povoliť obnovenie hesla z nastavení" + ], + "Allow scanning QR code to sign in": [ + "Povoľte skenovanie QR kódu pre prihlásenie" + ], + "Data recovery allowed on this device": [ + "Na tomto zariadení je povolená obnova dát" + ], + "Download recovery file": [ + "Stiahnuť súbor pre obnovenie" + ], + "Email recovery enabled": [ + "Obnovenie emailom povolené" + ], + "Emergency contacts added": [ + "Núdzové kontakty pridané" + ], + "Enable email recovery": [ + "Povoliť obnovu emailom" + ], + "Enable recovery by phone": [ + "Povoľte obnovenie telefónom" + ], + "Password reset allowed from settings": [ + "Obnovenie hesla je možné cez nastavenia" + ], + "Password verified": [ + "Heslo overené" + ], + "Phone recovery enabled": [ + "Obnovenie telefónom povolené" + ], + "Recovery contacts added": [ + "Kontaktné osoby na obnovenie účtu pridané" + ], + "Recovery file downloaded": [ + "Súbor pre obnovenie bol stiahnutý" + ], + "Recovery phrase saved": [ + "Obnovovacia fráza bola uložená" + ], + "Save recovery phrase": [ + "Uložiť obnovovaciu frázu" + ], + "Sign-in with QR code allowed": [ + "Prihlásenie QR kódom povolené" + ], "Verify password": [ "Potvrďte heslo" + ], + "Verify recovery email": [ + "Overiť email pre obnovenie" + ], + "Verify recovery phone": [ + "Overiť číslo na obnovenie" ] }, "RecoveryPhrase: Action": { @@ -19873,6 +20872,9 @@ ] }, "RecoveryPhrase: Info": { + "**Make sure you keep your recovery phrase accessible after creating it.** For security reasons, we do not store the phrase after saving your changes, and you won’t be able to see it again in the ${ BRAND_NAME } app.": [ + "**Po vytvorení si nezabudnite uložiť frázu na obnovenie hesla na bezpečnom mieste.** Z bezpečnostných dôvodov túto frázu po uložení zmien neukladáme a v aplikácii ${ BRAND_NAME } ju už nebudete môcť zobraziť." + ], "copy recovery phrase": [ "kopírovať obnovovaciu frázu" ], @@ -19894,14 +20896,11 @@ "Or ${ downloadRecoveryKitSwitchButton } instead.": [ "Alebo namiesto toho použite ${ downloadRecoveryKitSwitchButton }." ], - "Your **Recovery Kit** lets you restore your ${ BRAND_NAME } Account if you’re locked out.": [ - "Vaša **Súprava na obnovenie** vám umožňuje obnoviť váš ${ BRAND_NAME } účet, ak sa zablokujete." + "Your **recovery phrase** lets you restore your ${ BRAND_NAME } Account if you’re locked out.": [ + "Vaša **Fráza na obnovenie** vám umožňuje obnoviť váš ${ BRAND_NAME } účet, ak sa zablokujete." ] }, "RecoveryPhrase: Title": { - "Save your Recovery Kit": [ - "Uložte si svoju sadu pre obnovenie" - ], "Save your recovery phrase": [ "Uložiť vašu obnovovaciu frázu" ] @@ -20306,8 +21305,8 @@ "Back to Safety Review": [ "Späť ku kontrole bezpečnosti" ], - "Because you reset your password, your current Recovery Kit can only be used to recover the data created before your password reset.": [ - "Keďže ste obnovili heslo, aktuálnu obnovovaciu sadu možno použiť len na obnovu údajov vytvorených pred obnovením hesla." + "Because you reset your password, your current recovery phrase can only be used to recover the data created before your password reset.": [ + "Keďže ste obnovili heslo, aktuálnu obnovovaciu frázu možno použiť len na obnovu údajov vytvorených pred obnovením hesla." ], "Can be used to regain access to your account and data": [ "Môže byť použité pre obnovenie prístupu k vášmu účtu a dátam" @@ -20336,8 +21335,8 @@ "Download ${ size }": [ "Stiahnuť ${ size }" ], - "Download your Recovery Kit": [ - "Stiahnite si svoju sadu pre obnovenie" + "Download your recovery phrase": [ + "Stiahnite si svoju frázu pre obnovenie" ], "Email address": [ "Emailová adresa" @@ -20351,8 +21350,8 @@ "Enable recovery by phone": [ "Povoľte obnovenie telefónom" ], - "I understand that I will not be able to recover currently locked data with this Recovery Kit": [ - "Beriem na vedomie, že pomocou tejto sady na obnovu nebudem môcť obnoviť aktuálne zablokované údaje." + "I understand that I will not be able to recover currently locked data with this recovery phrase": [ + "Beriem na vedomie, že pomocou tejto frázy na obnovu nebudem môcť obnoviť aktuálne zablokované údaje." ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in on this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Ak zabudnete svoje ${ BRAND_NAME } heslo a bude ho nutné resetovať, môžete sa prihlásiť k účtu pomocou tohto zariadenia a nového hesla a obnoviť tým plný prístup k svojmu ${ BRAND_NAME } účtu." @@ -20360,8 +21359,8 @@ "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Ak zabudnete svoje heslo ${ BRAND_NAME } a bude ho nutné resetovať, môžete sa prihlásiť k účtu pomocou tohto zariadenia a nového hesla a obnoviť tým plný prístup k svojmu účtu ${ BRAND_NAME }." ], - "If you get locked out of your ${ BRAND_NAME } Account, your Recovery Kit will allow you to sign in and recover your data.": [ - "Ak stratíte prístup k svojmu ${ BRAND_NAME } účtu, vaša sada na obnovenie vám umožní prihlásiť sa a obnoviť vaše údaje." + "If you get locked out of your ${ BRAND_NAME } Account, your recovery phrase will allow you to sign in and recover your data.": [ + "Ak stratíte prístup k svojmu ${ BRAND_NAME } účtu, vaša fráza na obnovenie vám umožní prihlásiť sa a obnoviť vaše údaje." ], "If you lose your login details and need to reset your account, **it’s imperative** that you have both an **account recovery and data recovery method** in place, otherwise you might not be able to access any of your emails, contacts, files or passwords.": [ "Ak stratíte prihlasovacie údaje a potrebujete obnoviť svoj účet, **je nevyhnutné**, aby ste mali k dispozícii metódu **obnovenia účtu aj obnovenia údajov**, inak sa môže stať, že nebudete mať prístup k žiadnym svojim emailom, kontaktom, súborom alebo heslám." @@ -20405,8 +21404,8 @@ "Take action to secure your account": [ "Podniknite kroky na zabezpečenie účtu" ], - "There was an error generating your Recovery Kit": [ - "Pri generovaní sady na obnovu došlo k chybe" + "There was an error generating your recovery phrase": [ + "Pri generovaní frázy na obnovu došlo k chybe" ], "There was an error verifying your email": [ "Pri overovaní vášho emailu došlo k chybe" @@ -20435,11 +21434,11 @@ "to recover your account if you're ever locked out": [ "aby ste mohli obnoviť svoj účet, ak by ste ho niekedy zablokovali." ], - "Update your Recovery Kit": [ - "Aktualizujte si svoju sadu pre obnovenie" + "Update your recovery phrase": [ + "Aktualizovať vašu obnovovaciu frázu" ], - "Update your Recovery Kit?": [ - "Aktualizovať vašu sadu pre obnovenie?" + "Update your recovery phrase?": [ + "Aktualizovať vašu obnovovaciu frázu?" ], "Verify": [ "Overiť" @@ -20456,8 +21455,8 @@ "Verify your recovery phone number": [ "Overte svoje telefónne číslo určené na obnovenie" ], - "We encountered an error while generating your Recovery Kit. Please try again later, or contact support if the issue continues.": [ - "Pri generovaní vašej sady na obnovu sme narazili na chybu. Skúste to neskôr alebo ak problém pretrváva, kontaktujte podporu." + "We encountered an error while generating your recovery phrase. Please try again later, or contact support if the issue continues.": [ + "Pri generovaní vašej frázy na obnovu sme narazili na chybu. Skúste to neskôr alebo ak problém pretrváva, kontaktujte podporu." ], "We encountered an error while verifying your email. Please try again later, or contact support if the issue continues.": [ "Pri overovaní vášho emailu sme narazili na chybu. Skúste to neskôr alebo ak problém pretrváva, kontaktujte podporu, prosím.." @@ -20480,8 +21479,8 @@ "You can disable this at any time.": [ "Túto funkciu môžete kedykoľvek vypnúť." ], - "You can use the recovery phrase in this Recovery Kit to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ - "Frázu na obnovenie v tejto obnovovacej sade môžete použiť na úplné obnovenie svojho konta po obnovení hesla, preto si ju nezabudnite uschovať na bezpečnom mieste." + "You can use the recovery phrase in this recovery phrase to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ + "Frázu na obnovenie v tejto obnovovacej fráze môžete použiť na úplné obnovenie svojho konta po obnovení hesla, preto si ju nezabudnite uschovať na bezpečnom mieste." ], "You can use your email to regain access to your account if you forget your password.": [ "Ak zabudnete heslo, môžete použiť svoj email na obnovenie prístupu k účtu." @@ -20492,8 +21491,8 @@ "You can use your recovery phone to regain access to your account if you forget your password.": [ "Ak zabudnete heslo, môžete na obnovenie prístupu k svojmu kontu použiť svoj obnovovací telefón." ], - "You have previously downloaded a Recovery Kit. Downloading a new one will **deactivate the old one**.": [ - "Predtým ste si stiahli sadu na obnovu. Stiahnutím novej sady sa **stará deaktivuje**." + "You have previously downloaded a recovery phrase. Downloading a new one will **deactivate the old one**.": [ + "Predtým ste si stiahli frázu na obnovu. Stiahnutím novej frázy sa **stará deaktivuje**." ], "You have recommended actions to safeguard your account further.": [ "Na zabezpečenie vášho účtu vám odporúčame ďalšie kroky." @@ -20558,12 +21557,6 @@ "Your recovery email is set": [ "Váš email pre obnovenie je nastavený" ], - "Your Recovery Kit": [ - "Vaša sada pre obnovenie" - ], - "Your Recovery Kit is set": [ - "Vaša sada pre obnovenie je nastavená" - ], "Your recovery methods": [ "Vaše metódy obnovenia" ], @@ -20584,17 +21577,253 @@ ], "Your recovery phone number is:": [ "Vaše telefónne číslo pre obnovenie je:" + ], + "Your recovery phrase": [ + "Vaša obnovovacia fráza" + ], + "Your recovery phrase is set": [ + "Váš fráza pre obnovenie je nastavená" ] }, - "saml: Action": { - "Cancel": [ - "Zrušiť" - ] - }, - "saml: Error": { - "Sign in wasn't successfully completed.": [ - "Registrácia nebola úspešne dokončená." - ], + "safety_review": { + "${ BRAND_NAME } Account email": [ + "Emailová adresa ${ BRAND_NAME } účtu" + ], + "Account protection": [ + "Ochrana účtu" + ], + "Add": [ + "Pridať" + ], + "Add an emergency contact": [ + "Pridať núdzový kontakt" + ], + "Add emergency contacts": [ + "Pridať núdzové kontakty" + ], + "Add options": [ + "Pridať možnosti" + ], + "Add people who you trust and can contact easily. Your emergency contact will be able to access your account and reset your password for you if needed.": [ + "Pridajte osoby, ktorým dôverujete a s ktorými sa môžete ľahko skontaktovať. Vaša kontaktná osoba pre núdzové situácie bude mať prístup k vášmu účtu a v prípade potreby vám môže obnoviť heslo." + ], + "Add people you trust and can contact easily. They will be able to help you unlock your data after you reset your password.": [ + "Pridajte ľudí, ktorým dôverujete a ktorých môžete ľahko kontaktovať. Tí vám pomôžu odomknúť vaše údaje po tom, čo si resetujete heslo." + ], + "Add phone number": [ + "Pridať telefónne číslo" + ], + "Add recovery contacts": [ + "Pridať kontaktné osoby na obnovenie" + ], + "Add recovery email": [ + "Pridať email pre obnovenie" + ], + "Add recovery phone": [ + "Pridať telefón na obnovu" + ], + "Added emergency contacts": [ + "Pridané núdzové kontakty" + ], + "Added recovery contacts": [ + "Pridané kontaktné osoby na obnovenie" + ], + "Added recovery email": [ + "Pridaný email pre obnovenie" + ], + "Added recovery phone": [ + "Pridaný telefón pre obnovenie" + ], + "Allow": [ + "Povoliť" + ], + "Allow data recovery from this device": [ + "Povoliť obnovu dát z tohto zariadenia" + ], + "Allow password reset from the settings": [ + "Povoliť obnovenie hesla z nastavení" + ], + "Allow recovery by email": [ + "Povoliť obnovenie emailom" + ], + "Allow recovery by phone": [ + "Povoliť obnovenie telefónom" + ], + "Allow scanning a QR code to sign in": [ + "Povoľte skenovanie QR kódu pre prihlásenie" + ], + "Allow trusted friends to unlock your data": [ + "Povoľte dôveryhodným priateľom odomknúť vaše dáta" + ], + "Back to ${ backLink.appNameString }": [ + "Späť do ${ backLink.appNameString }" + ], + "Congratulations": [ + "Blahoželáme" + ], + "Didn’t receive it? ${ sendANewCode }": [ + "Nedostali ste ho? ${ sendANewCode }" + ], + "Done": [ + "Hotovo" + ], + "Download": [ + "Stiahnuť" + ], + "Download recovery file": [ + "Stiahnuť súbor pre obnovenie" + ], + "Downloaded recovery file": [ + "Súbor pre obnovenie stiahnutý" + ], + "Emergency contacts enabled": [ + "Núdzové kontakty povolené" + ], + "Enable device recovery": [ + "Povoliť obnovu zariadením" + ], + "Enable email recovery": [ + "Povoliť obnovu emailom" + ], + "Enable emergency contacts": [ + "Povoliť núdzové kontakty" + ], + "Enable password reset from settings": [ + "Povoliť resetovanie hesla z nastavení" + ], + "Enable phone recovery": [ + "Povoliť obnovu telefónom" + ], + "Enable QR code sign-in": [ + "Povoliť prihlásenie QR kódom" + ], + "Enabled device recovery": [ + "Obnova zariadením povolená" + ], + "Enabled email recovery": [ + "Povolená obnova emailom" + ], + "Enabled password reset from settings": [ + "V nastaveniach je povolené resetovanie hesla" + ], + "Enabled phone recovery": [ + "Obnova telefónom povolená" + ], + "Enabled QR code sign-in": [ + "Povoliť prihlásenie QR kódom" + ], + "Got it": [ + "Rozumiem" + ], + "Here's how you increased your account protection:": [ + "Takto ste zvýšili ochranu vášho účtu:" + ], + "If you forget your password, you can sign in using a QR code. All you need is to be signed in to a ${ BRAND_NAME } service on another device.": [ + "Ak ste zabudli heslo, môžete sa prihlásiť pomocou QR kódu. Stačí, ak máte aktívny účet v službe ${ BRAND_NAME } na inom zariadení." + ], + "If you get locked out of your ${ BRAND_NAME } Account, it will allow you to sign in and recover your data. It’s the only way to instantly restore everything, so make sure you keep it somewhere safe.": [ + "Ak sa vám stane, že sa nebudete môcť prihlásiť do svojho ${ BRAND_NAME } účtu, tento kód vám umožní prihlásiť sa a obnoviť vaše údaje. Je to jediný spôsob, ako okamžite obnoviť všetko, čo ste mali uložené, preto si ho určite uložte na bezpečné miesto." + ], + "Later": [ + "Neskôr" + ], + "Protect your legacy with Emergency Access": [ + "Chráňte svoje dedičstvo pomocou funkcie núdzového prístupu" + ], + "Save recovery phrase": [ + "Uložiť obnovovaciu frázu" + ], + "Saved recovery phrase": [ + "Uložená obnovovacia fráza" + ], + "They must already have a ${ BRAND_NAME } Account.": [ + "Musia už mať ${ BRAND_NAME } účet." + ], + "They will not be able to see or access your data.": [ + "Nebudú môcť vidieť vaše údaje ani k nim získať prístup." + ], + "This will let you quickly access your ${ BRAND_NAME } Account so you can change your password.": [ + "Takto budete mať rýchly prístup k svojmu ${ BRAND_NAME } účtu a budete si môcť zmeniť heslo." + ], + "This will let you reset your account password if you’ve lost it, but are still signed in to ${ BRAND_NAME }. It’s often the easiest way to recover your account if you’re signed in.": [ + "Týmto spôsobom si môžete obnoviť heslo k účtu, ak ste ho zabudli, ale ste stále prihlásení na stránke ${ BRAND_NAME }. Ak ste prihlásení, je to často najjednoduchší spôsob, ako obnoviť prístup k účtu." + ], + "This will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset.": [ + "Týmto krokom obnovíte prístup k emailom, kontaktom, súborom, heslám a všetkým ostatným šifrovaným údajom vo vašom účte po zresetovaní hesla." + ], + "To make sure the email address is yours, enter the verification code sent to ${ boldEmail }.": [ + "Ak chcete mať istotu, že emailová adresa je vaša, zadajte overovací kód zaslaný na ${ boldEmail }." + ], + "To make sure the phone number is yours, enter the verification code sent to ${ boldPhoneNumber }.": [ + "Ak chcete mať istotu, že telefónne číslo je vaše, zadajte overovací kód zaslaný na ${ boldPhoneNumber }." + ], + "To make sure this address is really yours, we’ll send an email with a verification link.": [ + "Aby sme sa uistili, že táto adresa skutočne patrí vám, pošleme vám email s overovacím odkazom." + ], + "Upgrade your plan to enable Emergency Access to your account. This will allow you to designate 1 to 5 people who will be able to reset your password for you.": [ + "Navýšte úroveň svojho plán, aby ste si aktivovali funkciu núdzového prístupu k vášmu účtu. Týmto spôsobom budete môcť určiť 1 až 5 osôb, ktoré vám budú môcť obnoviť heslo." + ], + "Verified password": [ + "Overené heslo" + ], + "Verified recovery email": [ + "Overený email pre obnovenie" + ], + "Verified recovery phone": [ + "Overené telefónne číslo pre obnovenie" + ], + "Verify": [ + "Overiť" + ], + "Verify password": [ + "Potvrďte heslo" + ], + "Verify recovery email": [ + "Overiť email pre obnovenie" + ], + "Verify recovery phone": [ + "Overiť číslo na obnovenie" + ], + "Verify your recovery email": [ + "Overte váš email na obnovenie" + ], + "Verify your recovery phone": [ + "Overte váš telefón na obnovenie" + ], + "You can save a data backup on this device. This will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset, simply by signing in on this device.": [ + "Na tomto zariadení si môžete uložiť zálohu údajov. Vďaka tomu si po obnovení hesla obnovíte prístup k emailom, kontaktom, súborom, heslám a všetkým ostatným šifrovaným údajom vo vašom účte jednoduchým prihlásením sa na tomto zariadení." + ], + "You can use email verification to regain access to your account if you forget your password.": [ + "Ak ste zabudli heslo, môžete využiť overenie prostredníctvom emailu a získať tak opäť prístup k svojmu účtu." + ], + "You can use SMS verification to regain access to your account if you forget your password.": [ + "Ak ste zabudli heslo, môžete využiť overenie prostredníctvom SMS a získať tak opäť prístup k svojmu účtu." + ], + "You can use your recovery email to regain access to your account if you forget your password.": [ + "Ak zabudnete heslo, môžete na obnovenie prístupu k svojmu kontu použiť svoj obnovovací email." + ], + "You can use your recovery phone to regain access to your account if you forget your password.": [ + "Ak zabudnete heslo, môžete na obnovenie prístupu k svojmu kontu použiť svoj obnovovací telefón." + ], + "You don’t need to open or read the file—just download it and store it somewhere safe.": [ + "Súbor nemusíte otvárať ani čítať – stačí si ho stiahnuť a uložiť na bezpečné miesto." + ], + "Your recovery checklist": [ + "Váš kontrolný zoznam pre obnovu" + ], + "Your security setup": [ + "Vaše nastavenia zabezpečenia" + ] + }, + "saml: Action": { + "Cancel": [ + "Zrušiť" + ] + }, + "saml: Error": { + "Sign in wasn't successfully completed.": [ + "Registrácia nebola úspešne dokončená." + ], "Something went wrong": [ "Niečo sa pokazilo" ], @@ -20789,6 +22018,17 @@ "Neboli nájdené žiadne výsledky" ] }, + "Sentinel banner": { + "To ensure the highest possible security of your account, disable recovery via email and SMS.": [ + "Aby ste zaistili čo najvyššiu bezpečnosť svojho účtu, deaktivujte možnosť obnovenia hesla prostredníctvom emailu a SMS." + ], + "To make sure that you can always access your ${ BRAND_NAME } Account, download your recovery phrase.": [ + "Aby ste mali istotu, že budete mať vždy prístup k svojmu ${ BRAND_NAME } účtu, stiahnite si svoju obnovovaciu frázu." + ], + "You have recommended actions from ${ PROTON_SENTINEL_NAME }": [ + "Máte odporúčané akcie od ${ PROTON_SENTINEL_NAME }" + ] + }, "Server-Info": { "active": [ "aktívny" @@ -21084,6 +22324,9 @@ ] }, "session_recovery:settings:info": { + "To disallow password reset from settings, you must save your recovery phrase.": [ + "Ak chcete v nastaveniach zakázať obnovenie hesla, musíte si uložiť svoju obnovovaciu frázu." + ], "To disallow password reset, you must have a recovery method set up.": [ "Ak chcete zakázať obnovenie hesla, musíte mať nastavený spôsob obnovenia." ], @@ -21142,17 +22385,6 @@ "Žiadosť o obnovenie hesla" ] }, - "Setting": { - "Enable Photos section": [ - "Povoliť sekciu Fotografie" - ], - "Get updates about comments via email": [ - "Dostávajte aktualizácie o komentároch prostredníctvom emailu" - ], - "Include document name in email notifications": [ - "Zahrnúť názov dokumentu do emailových notifikácií" - ] - }, "Settings description": { "Keep your inbox organized with folders and labels. ${ learnMoreLink }": [ "Udržujte svoju doručenú poštu organizovanú pomocou priečinkov a štítkov. ${ learnMoreLink }" @@ -22055,11 +23287,35 @@ ] }, "Spotlight": { + "Assign delegated roles": [ + "Priradiť delegované pozície" + ], + "Assign roles": [ + "Priradiť pozície" + ], + "Click a user's name to manage their role and permissions.": [ + "Kliknutím na meno používateľa môžete spravovať jeho pozíciu a oprávnenia." + ], + "Click Edit to assign roles to this group and manage member access automatically.": [ + "Kliknite na tlačidlo Upraviť, aby ste tejto skupine priradili pozícia a automaticky spravovali prístup jej členov." + ], "Earn up to ${ maxRewardAmount } in credit": [ "Získajte až ${ maxRewardAmount } kreditov" ], "Get credits when the person you invite subscribes to a ${ BRAND_NAME } plan.": [ "Získajte kredity, keď si pozvaná osoba predplatí ${ BRAND_NAME } plán." + ], + "New: Roles and permissions tab": [ + "Novinka: Karta Pozície a oprávnenia" + ], + "Open this tab to grant specific permissions without full admin access.": [ + "Otvorte túto kartu, ak chcete udeliť konkrétne oprávnenia bez plných správcovských práv." + ], + "User roles available": [ + "Dostupné používateľské pozície" + ], + "You can now assign roles to individual users from this tab.": [ + "Na tejto karte môžete teraz jednotlivým používateľom prideľovať pozície." ] }, "sso": { @@ -22372,20 +23628,53 @@ "${ count } ľudí", "${ count } ľudí" ], + "Add a phone number": [ + "Pridať telefónne číslo" + ], "Add an email address": [ "Pridajte emailovú adresu" ], + "Available on this device": [ + "Dostupné na tomto zariadení" + ], + "Disable recovery by email": [ + "Deaktivovať obnovenie emailom" + ], + "Disable recovery by phone": [ + "Zakázať obnovenie telefónom" + ], + "Generate a recovery phrase": [ + "Vygenerovať obnovovaciu frázu" + ], "Last changed ${ formattedDate }": [ "Posledná zmena ${ formattedDate }" ], - "No contact": [ - "Žiadny kontakt" + "Last updated ${ formattedUpdateDate }": [ + "Posledná aktualizácia ${ formattedUpdateDate }" + ], + "Not saved": [ + "Neuložené" ], "Off": [ "Vyp." ], "On": [ "Zap." + ], + "Outdated": [ + "Zastarané" + ], + "Saved": [ + "Uložené" + ], + "Unverified": [ + "Neoverené" + ], + "Verified": [ + "Overené" + ], + "Verify ${ value }": [ + "Overte ${ value }" ] }, "Step in filter modal": { @@ -23120,15 +24409,54 @@ ] }, "Subtitle": { + "${ DRIVE_PLUS_NAME } offers 1 TB storage for your files and photos. You are also eligible for yearly storage bonuses.": [ + "${ DRIVE_PLUS_NAME } ponúka 1 TB úložiska pre vaše súbory a fotografie. Máte tiež nárok na každoročný bonusový priestor na úložisku." + ], + "${ DRIVE_PLUS_NAME } offers 200 GB storage for your files and photos. You are also eligible for yearly storage bonuses.": [ + "${ DRIVE_PLUS_NAME } ponúka 200 GB úložiska pre vaše súbory a fotografie. Máte tiež nárok na každoročný bonusový priestor na úložisku." + ], + "${ planTitle } gives you access to all apps and premium features. Privacy is built-in so you can get on with it, knowing your data and identity are safe.": [ + "${ planTitle } vám umožní prístup ku všetkým aplikáciám a prémiovým funkciám. Súkromie je integrované, takže môžete pokračovať v práci s vedomím, že vaše údaje a identita sú v bezpečí." + ], + "${ planTitle } gives you all apps, all features, early access to new releases, and everything you need to be in control of your data and its security.": [ + "${ planTitle } vám poskytne všetky aplikácie, všetky funkcie, predbežný prístup k novým verziám a všetko, čo potrebujete, aby ste mali svoje dáta a ich zabezpečenie pod kontrolou." + ], + "${ planTitle } gives you unlimited privacy and more storage for up to 2 people.": [ + "${ planTitle } poskytuje neobmedzené súkromie a viac úložného priestoru až pre 2 osoby." + ], + "${ planTitle } gives your team all the collaboration tools they need to be productive and organized in their work, while safeguarding your business.": [ + "${ planTitle } poskytuje vášmu tímu všetky nástroje na spoluprácu, ktoré potrebuje na produktívnu a organizovanú prácu, a zároveň chráni vašu firmu." + ], + "${ planTitle } gives your team what they need to be more productive and organized in their work with access to all ${ BRAND_NAME } apps and their advanced features.": [ + "${ planTitle } poskytne vášmu tímu všetko, čo potrebuje na zvýšenie produktivity a organizácie práce, a to vďaka prístupu ku všetkým aplikáciám ${ BRAND_NAME } a ich pokročilým funkciám." + ], + "${ planTitle } gives your team what they need to be more productive, organized, and in control of their inbox, schedule, and more.": [ + "${ planTitle } poskytuje vášmu tímu všetko, čo potrebuje, aby bol produktívnejší, organizovanejší a mal pod kontrolou svoju doručenú poštu, rozvrh a ďalšie veci." + ], + "${ planTitle } goes beyond the basics to help you be more productive, organized, and in control of your inbox, email identity, and more.": [ + "${ planTitle } ide nad rámec základov, aby vám pomohol byť produktívnejším, organizovanejším a mať pod kontrolou schránku, emailovú identitu a ďalšie veci." + ], "${ planTitle } helps you ensure that each of your family members — and their data — are protected whenever they’re online.": [ "${ planTitle } vám pomôže zabezpečiť ochranu každého člena vašej rodiny a jeho údajov vždy, keď je online." ], + "Compare the key differences that matter for your business.": [ + "Porovnajte kľúčové rozdiely, ktoré sú pre vaše podnikanie dôležité." + ], "Free forever": [ "Navždy zadarmo" ], "per month, billed annually": [ "mesačne, účtované každý rok" ], + "Save 50% for 1 year, and keep full access": [ + "Ušetrite 50 % na 1 rok a zachovajte si plný prístup" + ], + "Save 50% for 6 months, and keep full access": [ + "Ušetrite 50 % na 6 mesiacov a zachovajte si plný prístup" + ], + "See how ${ MAIL_APP_NAME } compares, and why our independence makes a difference.": [ + "Zistite, ako si vedie ${ MAIL_APP_NAME }, a prečo je naša nezávislosť taká dôležitá." + ], "View VPN session details for your organization.": [ "Zobraziť podrobnosti o VPN relácii pre vašu organizáciu." ] @@ -23137,6 +24465,9 @@ "Account deleted. Signing out...": [ "Účet vymazaný. Odhlasovanie..." ], + "Activation link copied to clipboard": [ + "Aktivačný odkaz skopírovaný do schránky" + ], "Address added": [ "Adresa pridaná" ], @@ -23260,9 +24591,6 @@ "Organization logo updated": [ "Logo organizácie aktualizované" ], - "Organization name set": [ - "Názov organizácie nastavený" - ], "Organization name updated": [ "Názov organizácie aktualizovaný" ], @@ -23452,6 +24780,9 @@ ], "/user per month": [ "/používateľ mesačne" + ], + "/year": [ + "/rok" ] }, "Suffix for price": { @@ -23481,6 +24812,14 @@ "Zabezpečte svoje súbory pomocou šifrovaného cloudového úložiska. Zahŕňa históriu verzií, zdieľanie šifrovaných súborov a ďalšie." ] }, + "Tab": { + "For personal use": [ + "Pre osobné použitie" + ], + "For professional use": [ + "Na profesionálne použitie" + ] + }, "Tab in domain modal": { "Addresses": [ "Adresy" @@ -23569,6 +24908,14 @@ "Neboli nájdené žiadne SMTP tokeny" ] }, + "Temporary need": { + "Continue cancelling": [ + "Pokračovať v zrušení" + ], + "Keep current plan": [ + "Ponechať aktuálny plán" + ] + }, "Theme": { "Auto": [ "Automaticky" @@ -23772,12 +25119,18 @@ "Actions": [ "Akcie" ], + "Activate multi-user support": [ + "Aktivovať podporu pre viac používateľov" + ], "Activate organization key": [ "Aktivovať kľúč organizácie" ], "Activate user": [ "Aktivovať používateľa" ], + "Activate your email": [ + "Aktivovovať váš email" + ], "Activity monitor": [ "Monitor aktivity" ], @@ -23790,9 +25143,15 @@ "Add a custom logo": [ "Pridať vlastné logo" ], + "Add a recovery contact": [ + "Pridať kontaktnú osobu na obnovenie" + ], "Add address": [ "Pridať adresu" ], + "Add an emergency contact": [ + "Pridať núdzový kontakt" + ], "Add another notification to remind you of this event": [ "Pridať ďalšiu notifikáciu na pripomenutie tejto udalosti" ], @@ -23856,6 +25215,9 @@ "Address and key verification": [ "Overenie adresy a kľúča" ], + "Advanced recovery options": [ + "Rozšírené možnosti obnovy" + ], "Allocate storage": [ "Prideliť úložisko" ], @@ -23874,9 +25236,6 @@ "An address for each role": [ "Adresa pre každú rolu" ], - "An error occurred": [ - "Došlo k chybe" - ], "Annual": [ "Ročne" ], @@ -24024,18 +25383,12 @@ "Confirm": [ "Potvrdiť" ], - "Confirm address": [ - "Potvrdiť adresu" - ], "Confirm downgrade": [ "Potvrďte zníženie" ], "Confirm loss of ${ BRAND_NAME } bonuses": [ "Potvrďte stratu bonusov ${ BRAND_NAME }" ], - "Confirm phone number": [ - "Potvrdenie telefónneho čísla" - ], "Connect ${ name }": [ "Pripojiť ${ name }" ], @@ -24060,6 +25413,9 @@ "Connect your custom domain": [ "Pripojte si vlastnú doménu" ], + "Connected emails": [ + "Prepojené emaily" + ], "Connection status": [ "Stav pripojenia" ], @@ -24093,6 +25449,9 @@ "Create a new gateway": [ "Vytvoriť novú bránu" ], + "Create a new password": [ + "Vytvorte si nové heslo" + ], "Create Gateway": [ "Vytvoriť bránu" ], @@ -24174,6 +25533,12 @@ "Data recovery": [ "Obnovenie údajov" ], + "Data recovery contacts": [ + "Kontaktné osoby na obnovenie údajov" + ], + "Data recovery options": [ + "Možnosti obnovy dát" + ], "Data retention": [ "Uchovávanie údajov" ], @@ -24183,6 +25548,9 @@ "Day theme": [ "Denný motív" ], + "Deactivate current phrase?": [ + "Deaktivovať aktuálnu frázu?" + ], "Decrypt key": [ "Dešifrovať kľúč" ], @@ -24255,6 +25623,9 @@ "Device": [ "Zariadenie" ], + "Device data backup": [ + "Zálohovanie údajov zo zariadenia" + ], "Device name": [ "Názov zariadenia" ], @@ -24264,6 +25635,9 @@ "Disable categories?": [ "Deaktivovať kategórie?" ], + "Disable device data backup?": [ + "Deaktivovať zálohovanie údajov zariadenia?" + ], "Disable two-factor authentication": [ "Vypnúť dvojstupňové overenie" ], @@ -24279,6 +25653,9 @@ "Disconnected from Gmail": [ "Odpojené od Gmailu" ], + "Dismiss setup checklist": [ + "Zrušiť kontrolný zoznam nastavení" + ], "Display name and signature": [ "Zobrazované meno a podpis" ], @@ -24315,6 +25692,9 @@ "Download the mobile apps": [ "Stiahnuť mobilné aplikácie" ], + "Download your recovery phrase": [ + "Stiahnite si svoju frázu pre obnovenie" + ], "Downloads": [ "Na stiahnutie" ], @@ -24393,6 +25773,9 @@ "Email privacy": [ "Súkromie emailu" ], + "Email verification": [ + "Overenie emailu" + ], "Emergency access": [ "Núdzový prístup" ], @@ -24453,6 +25836,9 @@ "Feature access": [ "Prístup k funkciám" ], + "Fewer distractions, more focus": [ + "Menej rozptýlenia, viac sústredenia" + ], "Filter for more focus": [ "Filtre pre lepšie sústredenie" ], @@ -24483,12 +25869,12 @@ "Forward emails": [ "Preposielať emaily" ], - "Forwardings": [ - "Preposielania" - ], "Free": [ "Free" ], + "Free plan": [ + "Bezplatný plán" + ], "Gateway": [ "Brána" ], @@ -24519,6 +25905,9 @@ "Get ${ planMaxSpace } storage for your files, photos and documents with ${ planName }. ${ upgradeButton }": [ "Získajte ${ planMaxSpace } úložného priestoru pre svoje súbory, fotografie a dokumenty s ${ planName }. ${ upgradeButton }" ], + "Get ${ VPN_APP_NAME } on your TV": [ + "Získajte ${ VPN_APP_NAME } do svojej TV" + ], "Get ${ vpnPlus } to access all servers": [ "Získajte ${ vpnPlus } pre prístup ku všetkým serverom" ], @@ -24549,6 +25938,9 @@ "Get more from your VPN": [ "Získajte zo svojej VPN viac" ], + "Get started": [ + "Začíname" + ], "Get the app on all your devices and enjoy safe, seamless access anywhere.": [ "Stiahnite si aplikáciu na všetky svoje zariadenia a využívajte bezpečný a plynulý prístup kdekoľvek." ], @@ -24579,9 +25971,15 @@ "Help center": [ "Centrum pomoci" ], + "Helping activists in Hong Kong": [ + "Pomáhame aktivistom v Hongkongu" + ], "Home": [ "Domov" ], + "How ${ MAIL_APP_NAME } is different": [ + "Ako sa líši ${ MAIL_APP_NAME }" + ], "How did you find out about us?": [ "Ako ste sa o nás dozvedeli?" ], @@ -24696,9 +26094,15 @@ "Link confirmation": [ "Potvrdenie pred otvorením odkazu" ], + "Lower your cost without losing features": [ + "Znížte vaše náklady bez obmedzenia funkcionality" + ], "Main password": [ "Hlavné heslo" ], + "Make your business stand out": [ + "Nechajte svoju firmu vyniknúť" + ], "Manage files across devices on Windows, Mac, Android, and iOS.": [ "Spravujte súbory na rôznych zariadeniach so systémom Windows, Mac, Android a iOS." ], @@ -24753,6 +26157,9 @@ "No events": [ "Žiadne udalosti" ], + "No events yet": [ + "Zatiaľ žiadne udalosti" + ], "No need to empty the trash": [ "Kôš nie je potrebné vyprázdniť" ], @@ -24807,12 +26214,18 @@ "Other sign-in issues": [ "Iné problémy s prihlásením" ], + "Our fight against censorship in Russia": [ + "Náš boj proti cenzúre v Rusku" + ], "Password": [ "Heslo" ], "Password generator rules": [ "Pravidlá generovania hesiel" ], + "Password reset options": [ + "Možnosti resetovania hesla" + ], "Password reset settings": [ "Nastavenia obnovenia hesla" ], @@ -24846,9 +26259,6 @@ "Phone": [ "Telefón" ], - "Photos": [ - "Fotografie" - ], "Pin the extension": [ "Pripnite rozšírenie" ], @@ -24885,6 +26295,9 @@ "QR Code": [ "QR kód" ], + "QR code sign-in": [ + "Prihlásenie QR kódom" + ], "Ready, set, forward": [ "Pripraviť, nastaviť, preposlať" ], @@ -24909,6 +26322,9 @@ "Recovery file": [ "Súbor pre obnovenie" ], + "Recovery phrase": [ + "Obnovovacia fráza" + ], "Refer a friend": [ "Odporučiť priateľovi" ], @@ -24927,9 +26343,15 @@ "Remove domain": [ "Odstrániť doménu" ], + "Remove email": [ + "Odstrániť email" + ], "Remove forwarding address": [ "Odstrániť adresu preposielania" ], + "Remove recovery phone number": [ + "Odstrániť telefónne číslo pre obnovenie" + ], "Remove server?": [ "Odstrániť server?" ], @@ -25101,6 +26523,9 @@ "Sign in on TV": [ "Prihlásiť sa na TV" ], + "Sign in on TV?": [ + "Prihlásiť sa na TV?" + ], "Sign in to join the Beta program": [ "Prihláste sa a pripojte k beta programu" ], @@ -25116,6 +26541,9 @@ "Signed in to member account": [ "Prihlásený do členského účtu" ], + "Signed-in reset": [ + "Resetovanie prihlásených relácií" + ], "Simplify email distribution": [ "Zjednodušte distribúciu emailov" ], @@ -25125,12 +26553,21 @@ "Single sign-on": [ "Jednotné prihlásenie" ], + "SMS verification": [ + "SMS overovanie" + ], "SMTP submission": [ "Odoslanie SMTP" ], "Snooze:": [ "Odložiť:" ], + "Some of your encrypted data is locked": [ + "Niektoré z vašich šifrovaných údajov sú uzamknuté" + ], + "Something went wrong": [ + "Niečo sa pokazilo" + ], "Sort folders alphabetically": [ "Zoradiť priečinky abecedne" ], @@ -25158,6 +26595,9 @@ "Status": [ "Stav" ], + "Stay secure and connected anywhere": [ + "Buďte v bezpečí a pripojení kdekoľvek" + ], "Strengthen your security on all your devices with ${ passPlusPlanName }. ${ upgradeButton }": [ "Posilnite bezpečnosť všetkých vašich zariadení pomocou ${ passPlusPlanName }. ${ upgradeButton }" ], @@ -25182,6 +26622,9 @@ "Support ticket closed": [ "Požiadavka na podporu uzavretá" ], + "Support your compliance objectives": [ + "Podporte vaše ciele v oblasti dodržiavania predpisov" + ], "Switch account": [ "Prepnúť účet" ], @@ -25251,6 +26694,9 @@ "Type": [ "Typ" ], + "Unblocking internet access in Iran": [ + "Odblokovanie prístupu na internet v Iráne" + ], "Unlock your data": [ "Odomknite svoje dáta" ], @@ -25320,6 +26766,9 @@ "Verify it’s you": [ "Overiť, že ste to vy" ], + "Verify your email": [ + "Overte svoj email" + ], "Verifying your card...": [ "Overujeme vašu kartu..." ], @@ -25344,6 +26793,9 @@ "Warning: suspected fake website": [ "Varovanie: podozrenie na falošnú webovú stránku" ], + "We sent you a code to your email to make sure it’s you. This code is valid for 10 minutes. Please enter it below.": [ + "Na vašu emailovú adresu sme vám zaslali overovací kód, aby sme sa uistili, že ste to naozaj vy. Tento kód je platný 10 minút. Zadajte ho nižšie, prosím." + ], "We'll send an email to your new address with instructions on completing the change.": [ "Na vašu novú adresu vám pošleme email s pokynmi na dokončenie zmeny." ], @@ -25359,6 +26811,9 @@ "Welcome to your new password manager!": [ "Vitajte vo svojom novom správcovi hesiel!" ], + "What changes if you switch to the Free plan": [ + "Čo sa zmení, keď prejdete na plán Free" + ], "What is an alias?": [ "Čo je alias?" ], @@ -25392,6 +26847,12 @@ "Your ${ planTitle } subscription has started": [ "Vaše predplatné ${ planTitle } začalo" ], + "Your admin at ${ orgName } is inviting you to activate your new secure ${ BRAND_NAME } account and update your password.": [ + "Váš správca organizácie ${ orgName } vás žiada, aby ste si aktivovali svoj nový bezpečný ${ BRAND_NAME } účet a aktualizovali heslo." + ], + "Your admin is inviting you to activate your new secure ${ BRAND_NAME } account and update your password.": [ + "Váš správca vás žiada, aby ste si aktivovali svoj nový bezpečný ${ BRAND_NAME } účet a aktualizovali heslo." + ], "Your calendar link": [ "Váš odkaz na kalendár" ], @@ -25404,6 +26865,15 @@ "Your plan": [ "Váš plán" ], + "Your recovery file": [ + "Váš súbor na obnovenie" + ], + "Your recovery phrase": [ + "Vaša obnovovacia fráza" + ], + "Your recovery setup": [ + "Vaše nastavenia obnovy" + ], "Your referrals": [ "Vaše odporúčania" ], @@ -25536,6 +27006,24 @@ "Admins can manage user accounts and give admin privileges to other users. Only the primary admin can edit the plan of the organization.": [ "Správcovia môžu spravovať používateľské účty a udeľovať oprávnenia správcu iným používateľom. Plán organizácie môže upravovať iba primárny správca." ], + "Allow recovering your account with a one-time code sent to your recovery email": [ + "Povoliť obnovenie účtu pomocou jednorazového kódu zaslaného na vašu emailovú adresu pre obnovenie" + ], + "Allow recovering your account with a one-time code sent to your recovery phone": [ + "Povoliť obnovenie účtu pomocou jednorazového kódu zaslaného na váš telefón pre obnovenie" + ], + "Allow resetting your password from the account settings": [ + "Povoliť resetovanie hesla v nastaveniach účtu" + ], + "Allow scanning a QR code from a ${ BRAND_NAME } mobile app to sign in": [ + "Umožniť prihlásenie naskenovaním QR kódu z mobilnej aplikácie ${ BRAND_NAME }" + ], + "Allow trusted contacts to request access to your account": [ + "Povoliť dôveryhodným kontaktom požiadať o prístup k vášmu účtu" + ], + "Allow trusted contacts to unlock your encrypted data after a password reset": [ + "Povoliť dôveryhodným kontaktom odomknutie vašich šifrovaných údajov po obnovení hesla" + ], "Allows to seamlessly add Zoom video conferencing links to your calendar invitations.": [ "Umožňuje bezproblémové pridávanie odkazov na videokonferencie Zoom do pozvánok v kalendári." ], @@ -25572,6 +27060,9 @@ "Each imported email will have this label": [ "Každý importovaný email bude mať tento štítok" ], + "Early access to new apps and features.": [ + "Skorší prístup k novým aplikáciám a funkciám." + ], "Edit folder names": [ "Upraviť názvy priečinkov" ], @@ -25620,6 +27111,12 @@ "If you purchased a gift code or received one from our support team, you can enter it here.": [ "Ak ste zakúpili darčekový kód alebo ste ho obdržali od našej podpory, môžete ho sem vložiť." ], + "Includes custom email domains and unlimited hide-my-email aliases in ${ MAIL_APP_NAME }, access to servers in 120+ countries in ${ VPN_SHORT_APP_NAME }, built-in 2FA and secure sharing in ${ PASS_SHORT_APP_NAME }, and more.": [ + "Zahŕňa vlastné emailové domény a neobmedzený počet hide-my-email aliasov v aplikácii ${ MAIL_APP_NAME }, prístup k serverom vo viac ako 120 krajinách v aplikácii ${ VPN_SHORT_APP_NAME }, integrované 2FA a bezpečné zdieľanie v aplikácii ${ PASS_SHORT_APP_NAME } a ďalšie funkcie." + ], + "Includes professional email at @yourdomain.com, cloud storage with collaborative document editing, scheduling and video conferencing, password management, a secure ${ VPN_SHORT_APP_NAME }, and more.": [ + "Zahŕňa profesionálnu emailovú adresu v tvare @vasadomena.sk, cloudové úložisko s možnosťou spoločnej úpravy dokumentov, plánovanie a videokonferencie, správu hesiel, bezpečnú službu ${ VPN_SHORT_APP_NAME } a ďalšie funkcie." + ], "Members who do not use 2FA will get an email asking them to enable it as soon as possible. Single sign-on users will not receive the email reminder.": [ "Členovia, ktorí nepoužívajú 2FA, dostanú email s výzvou, aby si ho čo najskôr aktivovali. Používatelia s jedným prihlásením nedostanú emailovú pripomienku." ], @@ -25641,6 +27138,15 @@ "Remove metadata from images to protect your privacy.": [ "Odstránenie metadát z obrázkov na ochranu vášho súkromia." ], + "Save 12-word long phrase to unlock your account and your encrypted data instantly if you forgot your password": [ + "Uložte si 12-slovnú frázu, aby ste mohli okamžite odomknúť svoj účet a šifrované údaje, ak zabudnete heslo" + ], + "Save an encryption backup file in this browser to recover your data after a password reset": [ + "Uložte si v tomto prehliadači šifrovanú záložnú kópiu, aby ste mohli obnoviť svoje údaje po zresetovaní hesla" + ], + "Save an encryption backup file to recover your data after a password reset": [ + "Uložte si šifrovanú záložnú kópiu, aby ste mohli obnoviť svoje dáta po zresetovaní hesla" + ], "See number of unread messages in the tab icon": [ "Zobraziť počet neprečítaných správ v ikone karty" ], @@ -25713,8 +27219,8 @@ "This feature is only available on Beta": [ "Táto funkcia je dostupná len v Beta verzii" ], - "This is the default key used by other ${ MAIL_APP_NAME } users on older mobile apps to encrypt data they send to you": [ - "Toto je predvolený kľúč, ktorý používajú ostatní používatelia ${ MAIL_APP_NAME } v starších mobilných aplikáciách na šifrovanie údajov, ktoré vám posielajú." + "This is the default key used by other ${ MAIL_APP_NAME } users on older apps to encrypt data they send to you": [ + "Toto je predvolený kľúč, ktorý používajú ostatní používatelia ${ MAIL_APP_NAME } v starších aplikáciách na šifrovanie údajov, ktoré vám posielajú." ], "This is the default key used by other ${ MAIL_APP_NAME } users to encrypt data they send to you": [ "Toto je predvolený kľúč, ktorý používajú ostatní používatelia ${ MAIL_APP_NAME } na šifrovanie údajov, ktoré vám posielajú." @@ -25802,6 +27308,9 @@ "User is a group": [ "Používateľ je skupina" ], + "via ${ groupName }": [ + "cez ${ groupName }" + ], "Waiting for user to accept the invitation": [ "Čakanie na prijatie pozvania zo strany používateľa" ] @@ -26129,6 +27638,12 @@ ] }, "user_modal": { + "(via ${ groupName })": [ + "(cez ${ groupName })" + ], + "(via group)": [ + "(cez skupinu)" + ], "Add delegated roles to a user to grant them only the specific permissions they need, keeping full-admin power separate and your environment secure.": [ "Pridajte delegované roly používateľovi, aby ste mu udelili iba špecifické povolenia, ktoré potrebuje, pričom si zachováte plné administrátorské oprávnenia oddelene a vaše prostredie bude v bezpečí." ], @@ -26542,11 +28057,14 @@ "${ BRAND_NAME } will transfer as much data as possible, starting with your most recent messages.": [ "Tento import môže prekročiť kapacitu úložiska, ktorá je momentálne k dispozícii vo vašom ${ BRAND_NAME } účte. Zvážte prosím prispôsobenie importu." ], - "Are you sure you want to delete the phone number?": [ - "Naozaj chcete vymazať telefónne číslo?" + "Are you sure you want to remove your notification email?": [ + "Naozaj chcete odstrániť váš notifikačný email?" ], - "Are you sure you want to delete this address?": [ - "Naozaj chcete vymazať túto adresu?" + "Are you sure you want to remove your recovery email?": [ + "Naozaj chcete odstrániť váš email na obnovenie?" + ], + "Are you sure you want to remove your recovery phone number?": [ + "Naozaj chcete odstrániť vaše telefónne číslo na obnovenie?" ], "By deleting this address, you will no longer be able to receive daily email notifications.": [ "Vymazaním tejto adresy už nebudete môcť prijímať denné emailové notifikácie." @@ -26557,8 +28075,8 @@ "By deleting this address, you will no longer be able to recover your account.": [ "Odstránením tejto adresy už nebudete môcť obnoviť svoj účet." ], - "By deleting this phone number, you will no longer be able to recover your account.": [ - "Vymazaním tohto telefónneho čísla už nebudete môcť obnovit svoj účet." + "By removing this phone number, you will no longer be able to recover your account.": [ + "Odstránením tohto telefónneho čísla už nebudete môcť obnoviť svoj účet." ], "Could not login. Please open ${ PASS_APP_NAME } browser extension and login from there.": [ "Prihlásenie sa nepodarilo. Otvorte rozšírenie prehliadača ${ PASS_APP_NAME } a prihláste sa odtiaľ." diff --git a/applications/account/locales/sl_SI.json b/applications/account/locales/sl_SI.json index 1c704692513..ffd6b4b16af 100644 --- a/applications/account/locales/sl_SI.json +++ b/applications/account/locales/sl_SI.json @@ -212,6 +212,9 @@ "Choose my own password": [ "Izberite svoje geslo" ], + "Claim ${ BRAND_NAME } address": [ + "Pridobi ${ BRAND_NAME } naslov" + ], "Claim it": [ "Zahtevajte ga" ], @@ -422,9 +425,6 @@ "Delete record": [ "Izbriši zapis" ], - "Delete token ${ token.Account }": [ - "Izbriši žeton “${ token.Account }" - ], "Delete token “${ token.Name }”": [ "Izbriši žeton “${ token.Name }”" ], @@ -1517,6 +1517,11 @@ "Ponovno aktiviraj" ] }, + "Action: Sheets": { + "Open in ${ SHEETS_APP_NAME }": [ + "Odpri v ${ SHEETS_APP_NAME }" + ] + }, "Addon": { "${ domains } additional custom domain": [ "${ domains } dodatna domena po meri", @@ -2129,12 +2134,6 @@ "${ BRAND_NAME } Migration Assistant": [ "Pomočnik za migracijo ${ BRAND_NAME }" ], - "Add a custom domain": [ - "Dodaj domeno po meri" - ], - "App installed": [ - "Namestitev aplikacije" - ], "Authenticate your Google Workspace account": [ "Preverjanje pristnosti računa Google Workspace" ], @@ -2162,8 +2161,11 @@ "Install app": [ "Namesti aplikacijo" ], - "Not started": [ - "Ni začeto" + "Migration started for ${ n } user": [ + "Začela se je migracija ${ n } uporabnika", + "Začela se je migracija ${ n } uporabnikov", + "Začela se je migracija ${ n } uporabnikov", + "Začela se je migracija ${ n } uporabnikov" ], "Organization does not have enough seats available": [ "Organizacija nima na voljo dovolj sedežev" @@ -2571,6 +2573,9 @@ "Large file upload support": [ "Podpora za nalaganje velikih datotek" ], + "Strict no-logs policy": [ + "Strogo brez hrambe dnevniških zapisov" + ], "Unlimited daily chats": [ "Neomejeni dnevni klepeti" ] @@ -2909,6 +2914,12 @@ ] }, "CountriesStep:Info": { + "${ selectedCitiesCount } cities selected": [ + "${ selectedCitiesCount } izbrano mesto", + "${ selectedCitiesCount } izbrani mesti", + "${ selectedCitiesCount } izbrana mesta", + "${ selectedCitiesCount } izbranih mest" + ], "${ selectedCountriesCount } selected": [ "${ selectedCountriesCount } izbrana", "${ selectedCountriesCount } izbrana", @@ -4013,6 +4024,9 @@ "Let's you instantly add meeting links to your event invitations.": [ "Omogoča vam takojšnje dodajanje povezav do srečanj v vaša povabila na dogodke." ], + "No ads. No trackers.": [ + "Brez oglasov. Brez sledilnikov." + ], "No one in your organization can connect to shared servers.": [ "Nihče v vaši organizaciji se ne more povezati z deljenimi strežniki." ], @@ -4686,9 +4700,6 @@ "${ user } will no longer be able to help you recover your data after a password reset.": [ "${ user } vam po ponastavitvi gesla ne bo mogel več pomagati pri obnovitvi podatkov." ], - "**${ contact }** is now your recovery contact. They can help you recover your data after a password reset.": [ - "**${ contact }** je zdaj vaš kontakt za obnovitev. Lahko vam pomaga obnoviti podatke po ponastavitvi gesla." - ], "**If they confirm**, click **Approve recovery**. This will unlock their encrypted data.": [ "**Če potrdijo**, kliknite **Odobri obnovitev**. To bo odklenilo njihove šifrirane podatke." ], @@ -4782,12 +4793,6 @@ "Less than a day": [ "Manj kot en dan" ], - "Let ${ user } know it’s really you trying to regain access.": [ - "Obvesti ${ user }, da si res ti tisti, ki želiš ponovno pridobiti dostop." - ], - "None": [ - "Brez" - ], "Only ": [ "Samo " ], @@ -4860,15 +4865,9 @@ "Select recovery contact ${ name }": [ "Izberite skrbni kontakt ${ name }" ], - "Send email request": [ - "Pošlji zahtevo za e-pošto" - ], "Send recovery request": [ "Pošlji zahtevo za obnovitev" ], - "Set account recovery": [ - "Nastavi obnovitev računa" - ], "Stop being recovery contact": [ "Želite prenehati biti kontakt za obnovitev" ], @@ -4926,6 +4925,12 @@ "You have not been designated as an emergency contact for anyone yet.": [ "Nihče vaš še ni izbral za stik v nujnih primerih." ], + "You reached the maximum of ${ limit } emergency contact.": [ + "Dosegli ste največjo dovoljeno število stikov za nujne primere: ${ limit }.", + "Dosegli ste največjo dovoljeno število stikov za nujne primere: ${ limit }.", + "Dosegli ste največjo dovoljeno število stikov za nujne primere: ${ limit }.", + "Dosegli ste največjo dovoljeno število stikov za nujne primere: ${ limit }." + ], "You will be notified when someone requests emergency access.": [ "Obveščeni boste, ko bo nekdo zahteval dostop v nujnih primerih." ], @@ -4987,6 +4992,9 @@ "Add at least one condition": [ "Dodajte vsaj en pogoj" ], + "Address could not be added.": [ + "Naslova ni bilo mogoče dodati." + ], "Address primary private key not found": [ "Primarni zasebni ključ naslova ni najden" ], @@ -5338,9 +5346,6 @@ "Please try again in a few moments.": [ "Poskusite znova čez nekaj trenutkov." ], - "Please upgrade to a business plan with more than 1 user to get multi-user support": [ - "Prosim, nadgradite na poslovni paket z več kot enim uporabnikom, da dobite večuporabniško podporo." - ], "Please upgrade to a business plan with more than 1 user to manage multiple users.": [ "Prosim, nadgradite na poslovni paket z več kot enim uporabnikom, da boste lahko upravljali več uporabnikov." ], @@ -6170,6 +6175,9 @@ "${ MaxVPN } VPN povezave", "${ MaxVPN } VPN povezav" ], + "3 email domains": [ + "3 e-poštne domene" + ], "Access to all countries": [ "Dostop do vseh držav" ], @@ -7285,6 +7293,12 @@ "${ calendarsToBeMergedCount } združeni koledarji", "${ calendarsToBeMergedCount } združenih koledarjev" ], + "${ countriesCount } country enabled": [ + "${ countriesCount } država omogočena", + "${ countriesCount } državi omogočeni", + "${ countriesCount } države omogočene", + "${ countriesCount } držav omogočenih" + ], "${ emailAddress } is invalid": [ "${ emailAddress } je neveljaven" ], @@ -7345,6 +7359,12 @@ "${ plan.Title } requires at least 1 dedicated server ${ serverPricePerMonth }": [ "${ plan.Title } zahteva vsaj en namenski strežnik ${ serverPricePerMonth }" ], + "${ planName } expires in ${ daysLeft } day.": [ + "${ planName } poteče v ${ daysLeft } dnevu.", + "${ planName } poteče v ${ daysLeft } dneh.", + "${ planName } poteče v ${ daysLeft } dneh.", + "${ planName } poteče v ${ daysLeft } dneh." + ], "${ PROTON_SENTINEL_NAME } is an advanced account protection program powered by sophisticated AI systems and specialists working around the clock to protect you from bad actors and security threats.": [ "${ PROTON_SENTINEL_NAME } je napreden program za zaščito računa, ki ga poganjajo sofisticirani AI sistemi in strokovnjaki, ki delajo neprekinjeno, da vas zaščitijo pred slabimi akterji in varnostnimi grožnjami." ], @@ -7564,12 +7584,6 @@ "Add your name and logo to create a more personalized experience for your organization.": [ "Dodajte svoje ime in logotip ter ustvarite bolj osebno izkušnjo za svojo organizacijo." ], - "Adding ${ addedServerCount } gateway server": [ - "Dodajam ${ addedServerCount } prehodni strežnik", - "Dodajam ${ addedServerCount } prehodna strežnika", - "Dodajam ${ addedServerCount } prehodne strežnike", - "Dodajam ${ addedServerCount } prehodnih strežnikov" - ], "Adding gateway server: ${ serverNumber } / ${ total }": [ "Dodajam prehodni strežnik: ${ serverNumber } / ${ total }", "Dodajam prehodna strežnika: ${ serverNumber } / ${ total }", @@ -7804,9 +7818,6 @@ "Change your password": [ "Spremenite vaše geslo" ], - "Check the status of imports and forwarding.": [ - "Preverite stanje uvozov in posredovanja." - ], "Choose a plan that works best for you.": [ "Izberite paket, ki vam najbolj ustreza" ], @@ -7873,12 +7884,6 @@ "Create a label for the imported messages, a time range for this import, and the labels you would like to import.": [ "Ustvarite oznako za uvožena sporočila, določite časovni obseg uvoza in oznake, ki jih želite uvoziti." ], - "Create a secure cloud for ${ value } member": [ - "Ustvari varen oblak za ${ value } člana", - "Ustvari varen oblak za ${ value } člana", - "Ustvari varen oblak za ${ value } člane", - "Ustvari varen oblak za ${ value } članov" - ], "Create an account": [ "Ustvari račun" ], @@ -8221,6 +8226,9 @@ "finance": [ "finance" ], + "for ${ price }": [ + "za ${ price }" + ], "For anytime access to email and an optimized mobile experience, download our ${ androidAppLink } or ${ iosAppLink }.": [ "Za neomejen dostop do e-pošte in optimizirano izkušnjo na mobilnih napravah, prenesite našo aplikacijo ${ androidAppLink } ali ${ iosAppLink }." ], @@ -8233,9 +8241,6 @@ "For users who are switching to ${ MAIL_APP_NAME } from another email service, select the ${ boldAddresses } tab and add all active email addresses before changing the MX record to ensure a smooth transition.": [ "Za uporabnike, ki prehajajo na ${ MAIL_APP_NAME } iz druge e-poštne storitve, izberite zavihek ${ boldAddresses } in dodajte vse aktivne e-poštne naslove, preden spremenite zapis MX, da zagotovite nemoten prenos." ], - "Forwarding automatically sends new incoming emails to your Inbox.": [ - "Posredovanje samodejno pošlje nova prejeta e-poštna sporočila v vaš nabiralnik." - ], "Free forever": [ "Brezplačno za vedno." ], @@ -8407,6 +8412,12 @@ "Import from": [ "Uvozi iz" ], + "Import from ${ accounts } is temporarily delayed due to a bandwidth limit.": [ + "Uvoz iz ${ accounts } je začasno odložen zaradi omejitve pasovne širine.", + "Uvoz iz ${ accounts } je začasno odložen zaradi omejitve pasovne širine.", + "Uvoz iz ${ accounts } je začasno odložen zaradi omejitve pasovne širine.", + "Uvoz iz ${ accounts } je začasno odložen zaradi omejitve pasovne širine." + ], "Import in progress": [ "Uvoz v teku" ], @@ -8665,9 +8676,6 @@ "No folder selected": [ "Mapa ni izbrana" ], - "No forwarding history.": [ - "Ni zgodovine posredovanja." - ], "No gateways": [ "Brez prehodov" ], @@ -10547,6 +10555,9 @@ "Add extra services": [ "Dodaj dodatne storitve" ], + "Additional comments": [ + "Dodatni komentarji" + ], "Address": [ "Naslov" ], @@ -10685,6 +10696,9 @@ "Block malware, ads and trackers": [ "Blokiraj zlonameren program, oglase in sledilnike." ], + "Bookings, billings, and orders": [ + "Rezervacije, računi in naročila" + ], "Browser": [ "Brskalnik" ], @@ -10823,6 +10837,12 @@ "Current email": [ "Trenutna e-pošta" ], + "Custom email domain": [ + "E-poštna domena po meri", + "E-poštni domeni po meri", + "E-poštne domene po meri", + "E-poštnih domen po meri" + ], "Daily email notifications": [ "Dnevna e-poštna obvestila" ], @@ -12171,6 +12191,22 @@ "Ta funkcija je začasno nedostopna." ] }, + "Maximum shared calendar members reached alert": { + "You have reached the maximum of ${ MAX_CALENDAR_MEMBERS } member.": [ + "Dosegli ste največje število članov: ${ MAX_CALENDAR_MEMBERS }", + "Dosegli ste največje število članov: ${ MAX_CALENDAR_MEMBERS }", + "Dosegli ste največje število članov: ${ MAX_CALENDAR_MEMBERS }", + "Dosegli ste največje število članov: ${ MAX_CALENDAR_MEMBERS }" + ] + }, + "meet_2025: Addon": { + "${ MEET_APP_NAME } (for ${ quantity } user)": [ + "${ MEET_APP_NAME } (za ${ quantity } uporabnika)", + "${ MEET_APP_NAME } (za ${ quantity } uporabnika)", + "${ MEET_APP_NAME } (za ${ quantity } uporabnike)", + "${ MEET_APP_NAME } (za ${ quantity } uporabnikov)" + ] + }, "meet_2025: Feature": { "${ MEET_APP_NAME }: Confidential video conferencing for the conversations that matter": [ "${ MEET_APP_NAME }: Zaupna video konferenca za pogovore, ki so pomembni" @@ -13618,9 +13654,6 @@ "${ app } product updates": [ "Novice o izdelku ${ app }" ], - "${ BRAND_NAME } for Business newsletter": [ - "Novičnik ${ BRAND_NAME } za Business" - ], "${ BRAND_NAME } important announcements": [ "Pomembne najave ${ BRAND_NAME }" ], @@ -13666,9 +13699,6 @@ "Daily email notifications": [ "Dnevna obvestila o e-pošti" ], - "Email subscriptions": [ - "E-poštne novice" - ], "In-app notifications": [ "Obvestila znotraj aplikacije" ], @@ -14579,15 +14609,9 @@ "per month, billed every two years": [ "na mesec, zaračunano vsaki dve leti" ], - "Preparing your Recovery Kit": [ - "Pripravljam vaš komplet za obnovitev" - ], "Protected by Swiss privacy laws": [ "Zaščiteni s švicarskimi zakoni o zasebnosti." ], - "Save your recovery kit to continue": [ - "Shranite vaš komplet za obnovitev za nadaljevanje" - ], "Secure vault sharing": [ "Varna in zanesljiva skupna raba" ], @@ -14855,6 +14879,9 @@ "During this time, you will not be able to modify or cancel your subscription. Please wait until your payment is completed before attempting any changes. Thank you for your patience.": [ "V tem času ne boste mogli spreminjati ali preklicati svoje naročnine. Počakajte, da bo vaše plačilo zaključeno, preden poskusite s kakršnimi koli spremembami. Hvala za vašo potrpežljivost." ], + "Edit billing address": [ + "Uredi naslov za izstavitev računa" + ], "Got it": [ "Razumem" ], @@ -15114,6 +15141,9 @@ "End date": [ "Datum zaključka" ], + "Enter a name": [ + "Vnesi ime" + ], "example@domain.com": [ "primer@domena.si" ], @@ -15251,6 +15281,12 @@ "${ cycle } meseci", "${ cycle } mesecev" ], + "${ months } month plan": [ + "${ months } mesečna naročnina", + "${ months } mesečna naročnina", + "${ months } mesečna naročnina", + "${ months } mesečna naročnina" + ], "Enjoying ${ planName }?": [ "Uživate v ${ planName }?" ] @@ -15311,6 +15347,26 @@ "Neznan" ] }, + "Provider option": { + "Gmail": [ + "Gmail" + ], + "Google Workspace": [ + "Google Workspace" + ], + "Microsoft 365": [ + "Microsoft 365" + ], + "Other": [ + "Drugo" + ], + "Outlook": [ + "Outlook" + ], + "Yahoo": [ + "Yahoo" + ] + }, "Recovery Email": { "Back to ${ signIn }.": [ "Nazaj v ${ signIn }." @@ -15555,9 +15611,6 @@ "Download ${ size }": [ "Prenesi ${ size }" ], - "Download your Recovery Kit": [ - "Prenesite vaš komplet za obnovitev" - ], "Email address": [ "E-poštni naslov" ], @@ -15624,12 +15677,6 @@ "to recover your account if you're ever locked out": [ "ter tako obnovite vaš račun, če se kdaj zgodi, da ostanete brez dostopa." ], - "Update your Recovery Kit": [ - "Posodobite vaš komplet za obnovitev" - ], - "Update your Recovery Kit?": [ - "Posodobite vaš komplet za obnovitev?" - ], "Verify": [ "Preveri" ], @@ -15681,9 +15728,6 @@ "Your recovery email is set": [ "Vaš e-poštni naslov za obnovitev je nastavljen." ], - "Your Recovery Kit": [ - "Vaš komplet za obnovitev" - ], "Your recovery methods": [ "Vaš način obnovitve" ], @@ -17055,6 +17099,14 @@ "Preklic vaše naročnine, počakajte" ] }, + "Status": { + "${ count } person": [ + "${ count } oseba", + "${ count } osebi", + "${ count } osebe", + "${ count } oseb" + ] + }, "Step in filter modal": { "Actions": [ "Dejanja" @@ -17282,6 +17334,12 @@ "${ n } VPN povezave na uporabnika", "${ n } VPN povezav na uporabnika" ], + "${ productName } for ${ count } user": [ + "${ productName } za ${ count } uporabnika", + "${ productName } za ${ count } uporabnika", + "${ productName } za ${ count } uporabnike", + "${ productName } za ${ count } uporabnikov" + ], "${ UsedAddresses } address": [ "${ UsedAddresses } naslov", "${ UsedAddresses } naslova", @@ -18450,18 +18508,12 @@ "Confirm": [ "Potrdi" ], - "Confirm address": [ - "Potrdite naslov" - ], "Confirm downgrade": [ "Potrdite zmanjšanje paketa" ], "Confirm loss of ${ BRAND_NAME } bonuses": [ "Potrdite izgubo bonusov za ${ BRAND_NAME }" ], - "Confirm phone number": [ - "Potrdite telefonsko številko" - ], "Connect ${ name }": [ "Poveži ${ name }." ], @@ -18789,6 +18841,9 @@ "Ustvarjanje ${ failedUsers.length } uporabniških računov ni uspelo.", "Ustvarjanje ${ failedUsers.length } uporabniških računov ni uspelo." ], + "Fewer distractions, more focus": [ + "Manj motenj, več osredotočenosti" + ], "Filter for more focus": [ "Filter za večjo osredotočenost" ], @@ -18819,9 +18874,6 @@ "Forward emails": [ "Posredovanje sporočil" ], - "Forwardings": [ - "Posredovanja" - ], "Free": [ "Brezplačno" ], @@ -19116,9 +19168,6 @@ "Phone": [ "Telefon" ], - "Photos": [ - "Fotografije" - ], "Pin the extension": [ "Pripnite razširitev" ], @@ -19362,6 +19411,9 @@ "Snooze:": [ "Dremež:" ], + "Something went wrong": [ + "Nekaj je šlo narobe." + ], "Sort folders alphabetically": [ "Razvrsti mape po abecednem redu" ], @@ -19530,6 +19582,9 @@ "WireGuard configuration": [ "WireGuard nastavitev" ], + "You are all set": [ + "Vse je nastavljeno" + ], "You can now create unlimited folders and labels": [ "Zdaj lahko ustvarite neomejeno število map in oznak" ], @@ -20319,12 +20374,6 @@ "${ BRAND_NAME } will transfer as much data as possible, starting with your most recent messages.": [ "${ BRAND_NAME } bo prenesel toliko podatkov, kot bo mogoče, začenši z najnovejšimi sporočili." ], - "Are you sure you want to delete the phone number?": [ - "Ali ste prepričani, da želite izbrisati to telefonsko številko?" - ], - "Are you sure you want to delete this address?": [ - "Ali ste prepričani, da želite izbrisati ta naslov?" - ], "By deleting this address, you will no longer be able to receive daily email notifications.": [ "S brisanjem tega naslova ne boste več mogli prejemati vsakodnevnih obvestil po e-pošti." ], @@ -20334,9 +20383,6 @@ "By deleting this address, you will no longer be able to recover your account.": [ "Če izbrišete ta naslov, ne boste več mogli obnoviti svojega računa." ], - "By deleting this phone number, you will no longer be able to recover your account.": [ - "Če izbrišete to telefonsko številko, ne boste več mogli obnoviti svojega računa." - ], "Could not login. Please open ${ PASS_APP_NAME } browser extension and login from there.": [ "Ni se mogoče registrirati. Prosimo, odprite razširitev brskalnika ${ PASS_APP_NAME } in se registrirajte tam." ], diff --git a/applications/account/locales/sv_SE.json b/applications/account/locales/sv_SE.json index 28964e57832..29ece23fe35 100644 --- a/applications/account/locales/sv_SE.json +++ b/applications/account/locales/sv_SE.json @@ -90,6 +90,9 @@ "Add": [ "Lägg till" ], + "Add ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }": [ + "Lägg till ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }" + ], "Add ${ BRAND_NAME } Account": [ "Lägg till ${ BRAND_NAME }-konto" ], @@ -162,6 +165,9 @@ "Add user": [ "Lägg till användare" ], + "Added ${ memberName } as group owner": [ + "Lade till ${ memberName } som gruppägare" + ], "Align center": [ "Centrera" ], @@ -213,6 +219,9 @@ "Back to sign in": [ "Tillbaka till inloggning" ], + "Back to sign-in": [ + "Tillbaka till inloggning" + ], "Block": [ "Blockera" ], @@ -306,6 +315,9 @@ "Confirm": [ "Bekräfta" ], + "Confirm email": [ + "Bekräfta e-post" + ], "Confirm opening of link ${ linkToShow }": [ "Bekräfta öppnande av länken ${ linkToShow }" ], @@ -321,15 +333,15 @@ "Connect Gmail address": [ "Anslut Gmail-adress" ], - "Connect to Gmail": [ - "Anslut till Gmail" - ], "Connect to video conferencing": [ "Anslut till videokonferens" ], "Connect your ${ BRAND_NAME } Account": [ "Anslut ditt ${ BRAND_NAME }-konto" ], + "Connect your email": [ + "Anslut din e-post" + ], "Connected": [ "Ansluten" ], @@ -366,6 +378,9 @@ "Continue with ${ nameToDisplay } ${ maybeEmailInBrackets }": [ "Fortsätt med ${ nameToDisplay } ${ maybeEmailInBrackets }" ], + "Continue with Free": [ + "Fortsätt med Free" + ], "Continue with Google": [ "Fortsätt med Google" ], @@ -516,8 +531,8 @@ "Delete record": [ "Ta bort post" ], - "Delete token ${ token.Account }": [ - "Ta bort token ${ token.Account }" + "Delete token ${ tokens[0].Account }": [ + "Ta bort token ${ tokens[0].Account }" ], "Delete token “${ token.Name }”": [ "Ta bort token “${ token.Name }“" @@ -558,6 +573,9 @@ "Disable categories": [ "Inaktivera kategorier" ], + "Disable category": [ + "Inaktivera kategori" + ], "Disable recovery phrase": [ "Inaktivera återställningsfras" ], @@ -708,6 +726,9 @@ "Enable ${ darkWebMonitoring }": [ "Aktivera ${ darkWebMonitoring }" ], + "Enable category": [ + "Aktivera kategori" + ], "enable desktop notifications": [ "aktivera aviseringar för stationär dator" ], @@ -759,6 +780,9 @@ "Filters are being applied. This might take a few minutes.": [ "Filter tillämpas. Detta kan ta några minuter." ], + "Finish": [ + "Slutför" + ], "Fit to window": [ "Passa till fönster" ], @@ -777,6 +801,9 @@ "Generate key": [ "Generera nyckel" ], + "Generate missing keys": [ + "Generera saknade nycklar" + ], "Generate new phrase": [ "Generera ny fras" ], @@ -879,6 +906,9 @@ "Go to ${ planOrAppName }": [ "Gå till ${ planOrAppName }" ], + "Go to domain provider": [ + "Gå till domänleverantör" + ], "Go to label": [ "Gå till etikett" ], @@ -1275,6 +1305,9 @@ "Remove this notification": [ "Ta bort denna avisering" ], + "Removed ${ memberName } as group owner": [ + "Tog bort ${ memberName } som gruppägare" + ], "Rename": [ "Ändra namn" ], @@ -1356,6 +1389,9 @@ "Save": [ "Spara" ], + "Save & exit": [ + "Spara och avsluta" + ], "Save address": [ "Spara adress" ], @@ -2046,12 +2082,12 @@ ] }, "Admin roles onboarding": { + "2 new admin roles": [ + "2 nya administratörsroller" + ], "3 new admin roles": [ "3 nya administratörsroller" ], - "Admin roles": [ - "Administratörsroller" - ], "Delegate management by assigning specific admin roles. Give each admin only the access they need. This follows the principle of least privilege, protecting your organization from compromised accounts and accidental errors.": [ "Delegera hantering genom att tilldela specifika administratörsroller. Ge varje administratör endast den åtkomst de behöver. Detta följer principen om minsta möjliga behörighet och skyddar din organisation från komprometterade konton och oavsiktliga fel." ], @@ -2067,21 +2103,15 @@ "New: Control admin access for individual users": [ "Nytt: Kontrollera administratörsåtkomst för enskilda användare" ], - "Organization admin": [ - "Organisationsadministratör" + "New: Control admin access for many users at once": [ + "Nytt: Kontrollera administratörsåtkomst för många användare samtidigt" ], "Organization admin:": [ "Organisationsadministratör:" ], - "Security admin": [ - "Säkerhetsadministratör" - ], "Security admin:": [ "Säkerhetsadministratör:" ], - "User admin": [ - "Användaradministratör" - ], "User admin:": [ "Användaradministratör:" ] @@ -2822,15 +2852,51 @@ ] }, "BOSS": { - "Add a custom domain": [ - "Lägg till en anpassad domän" + "${ migratedCount } of ${ providerUsers.length }": [ + "${ migratedCount } av ${ providerUsers.length }" + ], + "Account connected": [ + "Konto anslutet" + ], + "Account disconnected": [ + "Konto frånkopplat" + ], + "Activated": [ + "Aktiverat" + ], + "Activation link": [ + "Aktiveringslänk" + ], + "Activation link copied to clipboard": [ + "Aktiveringslänk kopierad till urklipp" ], - "App installed": [ - "App installerad" + "Add a domain": [ + "Lägg till en domän" + ], + "Add domain": [ + "Lägg till domän" + ], + "Add users": [ + "Lägg till användare" + ], + "Address is already used by a user outside of your organization. Please contact customer support to resolve this": [ + "Adress används redan av en användare utanför din organisation. Kontakta kundsupport för att lösa detta" + ], + "All": [ + "Alla" + ], + "An unknown error occurred": [ + "Ett okänt fel uppstod" + ], + "As soon as the accounts are created, you can share the activation link so users can claim their ${ BRAND_NAME } account.": [ + "Så snart kontona har skapats kan du dela aktiveringslänken så att användarna kan göra anspråk på sitt ${ BRAND_NAME }-konto." ], "Authenticate": [ "Autentisera" ], + "Authenticate to Google Workspace": [ + "Autentisera till Google Workspace" + ], "Authenticate your Google Workspace account": [ "Autentisera ditt Google Workspace-konto" ], @@ -2840,23 +2906,53 @@ "Change": [ "Ändra" ], + "Choose what to migrate. Your choice will apply to all users. The migration will start after you decide which users to copy.": [ + "Välj vad som ska migreras.Ditt val kommer tillämpas till alla användare. Migreringen kommer starta efter du bestämt vilka användare som ska kopieras." + ], "Completed": [ "Slutförd" ], "Configure": [ "Konfigurera" ], + "Configure domain": [ + "Konfigurera domän" + ], "Configure migration": [ "Konfigurera migrering" ], + "Configure your domain": [ + "Konfigurera din domän" + ], "Contacts": [ "Kontakter" ], + "Continue migration": [ + "Fortsätt migrering" + ], + "Copy activation link": [ + "Kopiera aktiveringslänk" + ], + "Copy activation link to clipboard": [ + "Kopiera aktiveringslänk till urklipp" + ], + "Creating accounts": [ + "Skapar konton" + ], + "DKIM records": [ + "DKIM-poster" + ], + "DMARC records": [ + "DMARC-poster" + ], + "Domain added": [ + "Domän tillagd" + ], "Domain connected": [ "Domän ansluten" ], - "Domain ownership verified": [ - "Domänens äganderätt verifierad" + "Errors": [ + "Fel" ], "Estimated size": [ "Beräknad storlek" @@ -2864,15 +2960,33 @@ "Failed to load OAuth": [ "Misslyckades att ladda OAuth" ], + "Finalize migration": [ + "Slutför migrering" + ], + "Finalize your migration": [ + "Slutför din migrering" + ], + "Find out what can be migrated.": [ + "Ta reda på vad som kan migreras." + ], "Finish setting up your business account": [ "Slutför inställningen av ditt företagskonto" ], + "Go to Domain names": [ + "Gå till domännamn" + ], "Google Marketplace app to copy data to ${ BRAND_NAME }": [ "Google Marketplace-app för att kopiera data till ${ BRAND_NAME }" ], + "Google Workspace account": [ + "Google Workspace-konto" + ], "Has errors": [ "Har fel" ], + "Import errors for ${ user.AdminSetName }": [ + "Importfel för ${ user.AdminSetName }" + ], "In progress": [ "Pågår" ], @@ -2882,14 +2996,20 @@ "Install migration app": [ "Installera migreringsappen" ], - "Learn more about what can be migrated. Learn more": [ - "Lär dig mer om vad som kan migreras. Lär dig mer" + "Install Migration assistant": [ + "Installera migrationsassistent" + ], + "Loading your organization data": [ + "Laddar din organisationsdata" ], "Mail": [ "E-post" ], - "Migrate": [ - "Migrera" + "Managed via ${ registrar.name }": [ + "Hanterad via ${ registrar.name }" + ], + "Member address not found. Please contact customer support to resolve this": [ + "Medlemsadress hittades inte. Kontakta kundsupport för att lösa detta." ], "Migrate from Google Workspace": [ "Migrera från Google Workspace" @@ -2897,6 +3017,12 @@ "Migrate users": [ "Migrera användare" ], + "Migrate users to ${ BRAND_NAME }": [ + "Migrera användare till ${ BRAND_NAME }" + ], + "Migrated": [ + "Migrerad" + ], "Migration includes": [ "Migrering inkluderar" ], @@ -2907,8 +3033,29 @@ "Migration status": [ "Migreringsstatus" ], - "Not started": [ - "Inte startad" + "Missing organization private key": [ + "Saknar organisationens privata nyckel" + ], + "Missing organization public key": [ + "Saknar organisationens offentliga nyckel" + ], + "More details": [ + "Mer detaljer" + ], + "Move your users, emails, and settings from Google Workspace automatically. We’ll guide you through connecting your account, verifying your domain, and migrating users securely.": [ + "Flytta dina användare, e-post och inställningar automatiskt från Google Workspace. Vi guidar dig genom att ansluta ditt konto, verifiera din domän och migrera användare säkert." + ], + "No error details available. Please contact customer support for more information": [ + "Inga feldetaljer tillgängliga. Kontakta kundsupport för mer information." + ], + "No users to display": [ + "Inga användare att visa" + ], + "Not activated": [ + "Inte aktiverat" + ], + "Not confirmed": [ + "Inte bekräftat" ], "Organization does not have enough seats available": [ "Organisation har inte tillräckligt med licenser tillgängligt" @@ -2916,8 +3063,20 @@ "Organization does not have enough storage available": [ "Organisation har inte tillräckligt med lagringsutrymme tillgängligt" ], - "Organization settings": [ - "Organisationsinställningar" + "Pending": [ + "Väntar" + ], + "Please add the following records in your DNS console of your domain provider:": [ + "Lägg till följande poster i din DNS-konsol för din domänleverantör:" + ], + "Please leave this window open until we're done creating all the users.": [ + "Lämna detta fönster öppet tills vi är klara med att skapa alla användare." + ], + "Please select at least one product to migrate": [ + "Välj minst en produkt att migrera" + ], + "Refresh": [ + "Uppdatera" ], "Required": [ "Obligatoriskt" @@ -2928,8 +3087,8 @@ "Select at least one user to start a migration": [ "Välj minst en användare för att starta en migrering" ], - "Select what you want to migrate, this will apply to all users whether they are created now or later. Migration will start after user accounts are created.": [ - "Välj vad du vill migrera, detta kommer tillämpas på alla användare oavsett om de skapas nu eller senare. Migrering kommer starta efter användarkonton är skapade." + "Select users to migrate": [ + "Välj användare att migrera" ], "Set up": [ "Ställ in" @@ -2937,50 +3096,104 @@ "Set up billing information": [ "Ställ in faktureringsinformation" ], + "Set up manually": [ + "Ställ in manuellt" + ], + "Set up secure sending (DKIM)": [ + "Ställ in säker sändning (DKIM)" + ], + "Set up secure sending (DMARC)": [ + "Ställ in säker sändning (DMARC)" + ], + "Set up secure sending (SPF)": [ + "Ställ in säker sändning (SPF)" + ], "Set up two-factor authentication": [ "Ställ in tvåfaktorsautentisering" ], "Settings": [ "Inställningar" ], + "Share the activation link to users so they can claim their ${ BRAND_NAME } account.": [ + "Dela aktiveringslänken med användarna så att de kan göra anspråk på sitt ${ BRAND_NAME }-konto." + ], "Sign in to Google Workspace": [ "Logga in på Google Workspace" ], + "Size": [ + "Storlek" + ], + "SPF records": [ + "SPF-poster" + ], + "Start migrating": [ + "Starta migrering" + ], "Start migration": [ "Starta migrering" ], "Status": [ "Status" ], - "Transfer errors": [ - "Överföringsfel" + "The default setting is none. However, to improve your security we recommend setting this value to p=quarantine.": [ + "Standardinställningen är ingen. För att förbättra din säkerhet rekommenderar vi dock att du ställer in detta värde till p=quarantine." + ], + "This migration has been completed": [ + "Denna migrering har slutförts" ], "User": [ "Användare" ], + "User needs to activate their account through the activation link shown above": [ + "Användare måste aktivera sitt konto via aktiveringslänken som visas ovan." + ], + "User status": [ + "Användarstatus" + ], + "Users can use ${ BRAND_NAME } or Google simultaneously for the duration of the migration.": [ + "Användare kan använda ${ BRAND_NAME } eller Google samtidigt under migreringens gång." + ], "Users migrated": [ "Användare migrerade" ], + "Verified": [ + "Verified" + ], + "Verify domain ownership": [ + "Verifiera domänägarskap" + ], "Verify installation": [ "Verifiera installation" ], "Verify your domain": [ "Verifiera din domän" ], - "Verify your domain ownership": [ - "Verifiera ditt domänägarskap" - ], "Verify your domain to start a migration": [ "Verifiera din domän för att starta en migrering" ], + "We detected the primary domain linked to your Google Workspace account. Confirm it to continue setting up email for your ${ BRAND_NAME } organization.": [ + "Vi upptäckte den primära domänen länkad till ditt Google Workspace-konto. Bekräfta den för att fortsätta ställa in e-post för din ${ BRAND_NAME }-organisation." + ], "We were unable to verify the installation, please check that you have installed it in your Google Workspace account and try again.": [ "Vi kunde inte verifiera installationen, kontrollera att du har installerat den i ditt Google Workspace-konto och försök igen." ], + "We're still checking the MX records with your domain provider.": [ + "Vi kontrollerar fortfarande MX-posterna med din domänleverantör." + ], + "We've noticed some users have not claimed their ${ BRAND_NAME } accounts.": [ + "Vi har märkt att några användare inte har gjort anspråk på sina ${ BRAND_NAME }-konton." + ], "What are you migrating?": [ "Vad migrerar du?" ], + "You": [ + "Du" + ], "You need to grant the permission for ${ BRAND_NAME } to copy your data. After accepting permissions, come back here to continue.": [ "Du måste bevilja behörighet för ${ BRAND_NAME } att kopiera dina data. När du har accepterat behörigheterna, kom tillbaka hit för att fortsätta." + ], + "You're all set!": [ + "Du är klar!" ] }, "breadcrumb": { @@ -3088,9 +3301,18 @@ ] }, "Button": { + "Add users manually": [ + "Lägg till användare manuellt" + ], + "Cancel": [ + "Avbryt" + ], "Close": [ "Stäng" ], + "Configure your network": [ + "Konfigurera ditt nätverk" + ], "Continue using ${ MAIL_APP_NAME }.": [ "Fortsätt använda ${ MAIL_APP_NAME }." ], @@ -3112,6 +3334,12 @@ "Got it": [ "Jag förstår" ], + "Invite your team": [ + "Bjud in ditt team" + ], + "Manage global VPN permissions": [ + "Hantera globala VPN-behörigheter" + ], "Maybe later": [ "Kanske senare" ], @@ -3121,12 +3349,21 @@ "Remind me later": [ "Påminn mig senare" ], + "Secure your organization": [ + "Säkra din organisation" + ], "Send": [ "Skicka" ], "Set up other features": [ "Ställ in andra funktioner" ], + "Set up SSO": [ + "Ställ in SSO" + ], + "Sign in": [ + "Logga in" + ], "Take a tour": [ "Ta en rundtur" ] @@ -4744,6 +4981,9 @@ "/month": [ "/månad" ], + "/user /month": [ + "/användare/månad" + ], "/user per month": [ "/användare per månad" ] @@ -4919,6 +5159,9 @@ "${ MAIL_APP_NAME } is your default mail application.": [ "${ MAIL_APP_NAME } är din standardapplikation för e-post." ], + "${ MAIL_APP_NAME } keeps your business data secure and lets you send encrypted emails to anyone.": [ + "${ MAIL_APP_NAME } håller din företagsdata säker och låter dig skicka krypterad e-post till vem som helst." + ], "A checked box means the feature is disabled.": [ "En ikryssad ruta betyder att funktionen är inaktiverad." ], @@ -4937,14 +5180,17 @@ "Automatically sort your incoming messages before they reach your inbox.": [ "Sortera automatiskt dina inkommande meddelanden innan de når din inkorg." ], + "Available storage: ${ storageText }": [ + "Tillgängligt lagringsutrymme: ${ storageText }" + ], "Available with ${ title }": [ "Tillgänglig med ${ title }" ], "Block Google's ability to profile you. Gmail can't see what you do in ${ MAIL_APP_NAME }": [ "Blocka Googles möjlighet att profilera dig. Gmail kan inte se vad du gör i ${ MAIL_APP_NAME }." ], - "Bring over email, calendar events, and contacts from another provider.": [ - "Hämta e-post, kalenderhändelser och kontakter från annan leverantör." + "Bring over your email, calendar events, and contacts from another provider.": [ + "Hämta över din e-post, kalenderhändelser och kontakter från annan leverantör." ], "Build trust and brand recognition with professional email addresses at your own domain.": [ "Bygg förtroende och varumärkesigenkänning med professionella e-postadresser på din egen domän." @@ -4955,6 +5201,9 @@ "Connect your CRM, website, printers, and more.": [ "Anslut din CRM, webbplats, skrivare och mer." ], + "Create a Gateway to give your users access to your IT resources through dedicated servers.": [ + "Skapa en gateway för att ge dina användare åtkomst till dina IT-resurser genom dedikerade servrar." + ], "Create a Zoom meeting and add joining details to your event with one click.": [ "Skapa ett Zoom-möte och lägg till anslutningsdetaljer till ditt evenemang med ett klick." ], @@ -4967,6 +5216,9 @@ "Create policies to decide who can connect to shared servers in each country.": [ "Skapa policyer för att bestämma vem som kan ansluta till delade servrar i varje land." ], + "Decide which users can connect to each of our 120+ shared server locations.": [ + "Bestäm vilka användare som kan ansluta till var och en av våra 120+ delade serverplatser." + ], "Easily access your email and calendar on desktop and mobile.": [ "Enkel åtkomst till din e-post och kalender på stationär dator och mobil." ], @@ -5021,8 +5273,11 @@ "How we supported local activists when privacy and free speech were threatened.": [ "Hur vi stöttade lokala aktivister när integritet och yttrandefrihet hotades." ], - "How you reset your ${ BRAND_NAME } password. This will not recover your encrypted data.": [ - "Hur du återställer ditt ${ BRAND_NAME }-lösenord. Detta kommer inte att återställa dina krypterade data." + "How you unlock your encrypted data if you lose your password.": [ + "Hur du låser upp dina krypterade data om du tappar bort ditt lösenord." + ], + "If you haven’t already, enable some recovery methods to make sure you never lose access to ${ VPN_APP_NAME }.": [ + "Om du inte redan har gjort det, aktivera några återställningsmetoder för att säkerställa att du aldrig förlorar åtkomst till ${ VPN_APP_NAME }." ], "It looks like the contact list you are importing contains some groups. Please review how these groups should be imported.": [ "Det verkar som kontaktlistan du importerar innehåller några grupper. Granska hur dessa grupper ska importeras." @@ -5057,9 +5312,6 @@ "Read, reply, and stay on top of Gmail from within ${ MAIL_APP_NAME }": [ "Läs, svara och håll koll på Gmail inifrån ${ MAIL_APP_NAME }" ], - "Send a code to your recovery email or phone": [ - "Skicka en kod till din e-post eller telefon för återställning" - ], "Set up accounts for all users and invite them to join ${ BRAND_NAME }.": [ "Ställ in konton för alla användare och bjud in dem att gå med i ${ BRAND_NAME }." ], @@ -5072,6 +5324,9 @@ "Still need help? Our support team is here for you.": [ "Behöver du fortfarande hjälp? Vårt supportteam finns här för dig." ], + "This allows you to regain access to your ${ BRAND_NAME } account but does not recover your encrypted data.": [ + "Detta låter dig återfå åtkomst till ditt ${ BRAND_NAME }-konto men återställer inte dina krypterade data." + ], "This may happen if permissions were removed or your password changed.": [ "Detta kan hända om behörigheter togs bort eller ditt lösenord har ändrats." ], @@ -5100,24 +5355,36 @@ "Track the status and activity of your referrals": [ "Spåra statusen och aktiviteten för dina hänvisningar" ], + "Unlock 15 GB of storage for just ${ config.offerPrice }.": [ + "Lås upp 15 GB lagringsutrymme för endast ${ config.offerPrice }." + ], "Upgrade to ${ planName } to connect up to ${ MAX_SYNC_PAID_USER } accounts": [ "Uppgradera till ${ planName } för att ansluta upp till ${ MAX_SYNC_PAID_USER } konton" ], "Upgrade to get ${ activatePmUser } for a shorter, easy-to-remember email address in addition to your current one.": [ "Uppgradera för att få ${ activatePmUser } för en kortare e-postadress som är lätt att komma ihåg utöver din nuvarande." ], + "Use a recovery method to reset your password": [ + "Använd en återställningsmetod för att återställa ditt lösenord" + ], "Use this guide to get your organization promptly benefiting from ${ BRAND_NAME }'s industry-leading encryption and privacy ecosystem.": [ "Använd den här guiden för att din organisation snabbt ska kunna dra nytta av ${ BRAND_NAME }:s branschledande kryptering och ekosystem för integritet." ], "We can't access ${ boldEmails } anymore.": [ "Vi kan inte komma åt ${ boldEmails } längre." ], + "We will pause imports at 80% storage to reserve space for new messages.": [ + "Vi kommer pausa importerna vid 80 % lagringsutrymme för att reservera utrymme för nya meddelanden." + ], "We'll bring in your old emails and connect your Gmail to ${ MAIL_APP_NAME } so new messages appear automatically": [ "Vi importerar din gamla e-post och ansluter din Gmail till ${ MAIL_APP_NAME } så nya meddelanden visas automatiskt" ], - "We've started importing your email from Gmail. We'll let you know when it's done.": [ + "We've started importing your emails from Gmail. We'll let you know when it's done.": [ "Vi har börjat importera din e-post från Gmail. Vi meddelar dig när det är klart." ], + "With new email categories, only important messages land in your primary inbox. Categories work just like spam filters. ${ MAIL_APP_NAME } never reads your emails or shares your data.": [ + "Med nya e-postkategorier hamnar endast viktiga meddelanden i din primära inkorg. Kategorier fungerar precis som skräppostfilter. ${ MAIL_APP_NAME } läser aldrig din e-post eller delar dina data." + ], "You already have a Gmail address forwarding to ${ MAIL_APP_NAME }. Connect it below to send and receive emails directly from ${ MAIL_APP_NAME }.": [ "Du har redan en Gmail-adress som vidarebefordras till ${ MAIL_APP_NAME }. Anslut den nedan för att skicka och ta emot e-post direkt från ${ MAIL_APP_NAME }." ], @@ -5167,6 +5434,11 @@ "använd importassistenten Easy Switch" ] }, + "Description for domain modal": { + "Duplicate DMARC record found, go to the DNS console of your domain provider to fix it.": [ + "Dubblett av DMARC-post hittades, gå till DNS-konsolen hos din domänleverantör för att åtgärda det." + ] + }, "Description of the purpose of the import CSV modal": { "Also, we have automatically matched CSV fields with vCard fields. You can review and change this matching manually.": [ "Dessutom har vi automatiskt matchat CSV-fält med vCard-fält. Du kan granska och ändra denna matchning manuellt." @@ -5590,6 +5862,9 @@ "120m": [ "120 min" ], + "15 minutes": [ + "15 minuter" + ], "30 minutes": [ "30 minuter" ], @@ -6209,9 +6484,6 @@ "${ user } will not be able to access your account until the next emergency access.": [ "${ user } kommer inte att kunna komma åt ditt konto förrän nästa nödåtkomst." ], - "**${ contact }** is now your recovery contact. They can help you recover your data after a password reset.": [ - "**${ contact }** är nu din återställningskontakt. De kan hjälpa dig att återställa dina data efter en lösenordsåterställning." - ], "**If they confirm**, click **Approve recovery**. This will unlock their encrypted data.": [ "**Om de bekräftar**, klicka **Godkänn återställning**. Detta kommer låsa upp deras krypterade data." ], @@ -6239,12 +6511,21 @@ "Add": [ "Lägg till" ], + "Add 1 more": [ + "Lägg till 1 till" + ], "Add emergency contact": [ "Lägg till nödkontakt" ], + "Add option": [ + "Lägga till alternativ" + ], "Add recovery contact": [ "Lägg till återställningskontakt" ], + "Add recovery method": [ + "Lägg till återställningsmetod" + ], "Added on ${ formattedDate }": [ "Tillagd den ${ formattedDate }" ], @@ -6284,12 +6565,12 @@ "Connect with them to confirm they need help to recover their data.": [ "Anslut med dem för att bekräfta att de behöver hjälp att återställa sina data." ], - "Contact-assisted recovery": [ - "Kontaktassisterad återställning" - ], "Contacts": [ "Kontakter" ], + "Data recovery contacts": [ + "Ta bort återställningskontakter" + ], "Data successfully recovered. You can now decrypt your existing data and encrypted files.": [ "Data har återställts. Du kan nu dekryptera dina befintliga data och krypterade filer." ], @@ -6335,6 +6616,12 @@ "Enable auto-renew": [ "Aktivera automatisk förnyelse" ], + "Enter your extra password": [ + "Ange ditt extra lösenord" + ], + "Explore plans": [ + "Utforska paket" + ], "For ${ email }": [ "För ${ email }" ], @@ -6365,12 +6652,6 @@ "Less than a minute left": [ "Mindre än en minut kvar" ], - "Let ${ user } know it’s really you trying to regain access.": [ - "Låt ${ user } veta att det verkligen är du som försöker återfå åtkomst." - ], - "None": [ - "Ingen" - ], "Only ": [ "Endast " ], @@ -6389,9 +6670,6 @@ "People who trust me": [ "Människor som litar på mig" ], - "People you have added as recovery contacts.": [ - "Personer du har lagt till som återställningskontakter." - ], "Proceed anyway": [ "Fortsätt ändå" ], @@ -6464,14 +6742,11 @@ "Select recovery contact ${ name }": [ "Välj återställningskontakt ${ name }" ], - "Send email request": [ - "Skicka e-postbegäran" - ], "Send recovery request": [ "Skicka begäran om återställning" ], - "Set account recovery": [ - "Ställ in kontoåterställning" + "Start recovery": [ + "Starta återställning" ], "Stop being recovery contact": [ "Sluta vara återställningskontakt" @@ -6512,6 +6787,9 @@ "Time required before automatically granting them access": [ "Tid som krävs innan de automatiskt beviljas åtkomst" ], + "To add recovery contacts, you must have a recovery email address or phone number.": [ + "För att lägga till återställningskontakter måste du ha en e-postadress eller ett telefonnummer för återställning." + ], "To disable this recovery method, remove all your recovery contacts.": [ "För att inaktivera denna återställningsmetod, ta bort alla dina återställningskontakter." ], @@ -6521,6 +6799,9 @@ "Unable to recover data": [ "Kan inte återställa data" ], + "Unlock ${ PASS_APP_NAME }": [ + "Lås upp ${ PASS_APP_NAME }" + ], "Upgrade": [ "Uppgradera" ], @@ -6871,6 +7152,9 @@ "Invalid invitation link": [ "Ogiltig inbjudningslänk" ], + "Invalid joining link. Please contact your administrator.": [ + "Ogiltig länk för att gå med. Kontakta din administratör." + ], "Invalid name": [ "Ogiltigt namn" ], @@ -7041,9 +7325,6 @@ "Please try again in a few moments.": [ "Försök igen om en stund." ], - "Please upgrade to a business plan with more than 1 user to get multi-user support": [ - "Uppgradera till ett företagspaket med mer än 1 användare för att få support för flera användare" - ], "Please upgrade to a business plan with more than 1 user to manage multiple users.": [ "Uppgradera till ett företagspaket med mer än 1 användare för att hantera flera användare." ], @@ -7183,6 +7464,9 @@ "There are too many folders in your external account. Please customize the import to delete some folders.": [ "Det finns för många mappar i ditt externa konto. Anpassa importen för att ta bort vissa mappar." ], + "There was an error, please try again.": [ + "Det var ett fel, försök igen." + ], "This field exceeds the maximum of ${ maximumLength } characters.": [ "Detta fält överskrider det maximala antalet ${ maximumLength } tecken." ], @@ -7980,6 +8264,9 @@ "${ MaxVPN } VPN-anslutning", "${ MaxVPN } VPN-anslutningar" ], + "10+ premium features": [ + "10+ premiumfunktioner" + ], "15 GB storage": [ "15 GB lagringsutrymme" ], @@ -8015,6 +8302,12 @@ "Continue": [ "Fortsätt" ], + "Custom email domain": [ + "Anpassad e-postdomän" + ], + "Email addresses": [ + "E-postadresser" + ], "Encrypted cloud storage for files, photos and documents": [ "Krypterad molnlagring för filer, foton och dokument" ], @@ -8045,6 +8338,9 @@ "Short domain @pm.me": [ "Kort domän @pm.me" ], + "Storage": [ + "Lagringsutrymme" + ], "Torrenting support (P2P)": [ "Stöd för Torrenting (P2P)" ], @@ -8410,8 +8706,11 @@ ] }, "Force upgrade safety review": { - "I understand that I will no longer be able to sign in to older versions of ${ BRAND_NAME } mobile apps.": [ - "Jag förstår att jag inte längre kommer att kunna logga in från äldre versioner av mobilappar för ${ BRAND_NAME }." + "I understand that I will no longer be able to sign in to older versions of ${ BRAND_NAME } apps.": [ + "Jag förstår att jag inte längre kommer att kunna logga in på äldre versioner av ${ BRAND_NAME }-appar." + ], + "Learn more": [ + "Lär dig mer" ] }, "Form heading": { @@ -8512,6 +8811,9 @@ ], "Group address:": [ "Gruppadress:" + ], + "Roles and permission:": [ + "Roller och behörigheter:" ] }, "Group member count": { @@ -8571,6 +8873,14 @@ "Gruppmedlemskap" ] }, + "group_modal": { + "General": [ + "Allmänt" + ], + "Roles and permissions": [ + "Roller och behörigheter" + ] + }, "Header": { "Access": [ "Åtkomst" @@ -9208,6 +9518,9 @@ "${ boldWarning } You will lose access to all current encrypted data in your account if you continue.": [ "${ boldWarning } Du kommer att förlora åtkomst till alla nuvarande krypterade data på ditt konto om du fortsätter." ], + "${ BRAND_NAME } Free": [ + "${ BRAND_NAME } Free" + ], "${ BRAND_NAME } is privacy you can trust, ensured by strong encryption, open-source code, and Swiss privacy laws. We believe nobody should be able to exploit your data, period. Our technology and business are based upon this fundamentally stronger definition of privacy.": [ "${ BRAND_NAME } är integritet du kan lita på, säkerställt av stark kryptering, öppen källkod och schweiziska integritetslagar. Vi anser att ingen ska kunna utnyttja din data, punkt. Vår teknologi och verksamhet är baserad på denna fundamentalt starkare definition av integritet." ], @@ -9299,6 +9612,9 @@ "${ name } for Windows": [ "${ name } för Windows" ], + "${ name } is not available": [ + "${ name } är inte tillgängligt" + ], "${ none }: do not quarantine or reject unauthorized emails. Usually, people only use this policy to troubleshoot or test.": [ "${ none }: sätt inte i karantän eller avvisa ej oauktoriserade e-postmeddelanden. Vanligtvis använder människor bara denna policy för felsökning eller testning." ], @@ -9457,6 +9773,9 @@ "(formerly Twitter)": [ "(tidigare Twitter)" ], + "**${ appName }** is not available for your account.": [ + "**${ appName }** är inte tillgängligt för ditt konto." + ], "**${ appName }** is not supported in your organization **${ organizationName }**.": [ "**${ appName }** stöds inte i din organisation **${ organizationName }**." ], @@ -9567,6 +9886,9 @@ "Activity Monitor": [ "Aktivitetsövervakare" ], + "Add ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }": [ + "Lägg till ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }" + ], "Add ${ PLAN_NAMES[PLANS.MEET_BUSINESS] }": [ "Lägg till ${ PLAN_NAMES[PLANS.MEET_BUSINESS] }" ], @@ -9613,9 +9935,9 @@ "Add your name and logo to create a more personalized experience for your organization.": [ "Lägg till ditt namn och din logga för att skapa en mer personifierad upplevelse för din organisation." ], - "Adding ${ addedServerCount } gateway server": [ - "Lägger till ${ addedServerCount } gatewayserver", - "Lägger till ${ addedServerCount } gatewayservrar" + "Adding ${ total } gateway server": [ + "Lägger till ${ total } gatewayserver", + "Lägger till ${ total } gatewayservrar" ], "Adding an external email address will disable end-to-end encryption for all email communication within that group. Do you want to proceed?": [ "Att lägga till en extern e-postadress kommer inaktivera end-to-end-kryptering för all e-postkommunikation inom denna grupp. Vill du fortsätta?" @@ -9787,6 +10109,9 @@ "Are you sure you want to revoke certificate **${ name }**": [ "Är du säker på att du vill återkalla certifikat **${ name }**?" ], + "Are you sure you want to sign out of this account?": [ + "Är du säker på att du vill logga ut från detta konto?" + ], "Are you sure you want to sort your folders alphabetically?": [ "Är du säker på att du vill sortera dina mappar alfabetiskt?" ], @@ -9877,6 +10202,9 @@ "Before you can start sending and receiving emails from your new addresses you need to create encryption keys for them.": [ "Innan du kan börja skicka och ta emot e-postmeddelanden från dina nya adresser måste du skapa krypteringsnycklar för dem." ], + "BEST FOR TV": [ + "BÄST FÖR TV" + ], "Beta": [ "Beta" ], @@ -9934,9 +10262,6 @@ "Change your password": [ "Ändra ditt lösenord" ], - "Check the status of imports and forwarding.": [ - "Kontrollera status för importer och vidarebefordran." - ], "Check your network and try again.": [ "Kontrollera ditt nätverk och försök igen." ], @@ -9970,6 +10295,9 @@ "CNET editors choice award with a rating of 8.4 out of 10": [ "CNET-redaktionens valpris med ett betyg på 8,4 av 10" ], + "Code has been re-sent.": [ + "Kod har skickats igen." + ], "Coming soon": [ "Kommer snart" ], @@ -9985,6 +10313,9 @@ "Configure SAML authentication for your organization through an identity provider like Okta, Microsoft Azure, or Google Identity Platform. This will enable SAML for the whole organization.": [ "Konfigurera SAML-autentisering för din organisation genom en identitetsleverantör så som Okta, Microsoft Azure eller Google Identity Platform. Detta kommer att aktivera SAML för hela organisationen." ], + "Connect and manage your external mailboxes in ${ MAIL_APP_NAME }.": [ + "Anslut och hantera dina externa brevlådor i ${ MAIL_APP_NAME }." + ], "Connection data will be available in around 1 hour.": [ "Anslutningsdata kommer vara tillgänglig om cirka 1 timme." ], @@ -10003,6 +10334,9 @@ "Continue to connect this entity with your ${ BRAND_NAME } organization.": [ "Fortsätt för att ansluta denna entitet till din ${ BRAND_NAME }-organisation." ], + "Continue with ${ BRAND_NAME } Free": [ + "Fortsätt med ${ BRAND_NAME } Free" + ], "Continuing will connect your ${ BRAND_NAME } Account to ${ name }.": [ "Om du fortsätter kommer ditt ${ BRAND_NAME }-konto anslutas till ${ name }." ], @@ -10040,9 +10374,9 @@ "Create a new code on your TV and try again.": [ "Skapa en ny kod på din TV och försök igen." ], - "Create a secure cloud for ${ value } member": [ - "Skapa ett säkert moln för ${ value } medlem", - "Skapa ett säkert moln för ${ value } medlemmar" + "Create a secure cloud for ${ memberCount } member": [ + "Skapa ett säkert moln för ${ memberCount } medlem", + "Skapa ett säkert moln för ${ memberCount } medlemmar" ], "Create an account": [ "Skapa ett konto" @@ -10060,6 +10394,10 @@ "Skapar gatewayserver: ${ serverNumber }/${ total }", "Skapar gatewayservrar: ${ serverNumber }/${ total }" ], + "Creating gateway with ${ total } server": [ + "Skapar gateway med ${ total } server", + "Skapar gateway med ${ total } servrar" + ], "Creating your account": [ "Skapar ditt konto" ], @@ -10108,6 +10446,9 @@ "Data recoverable with recovery phrase": [ "Data återställningsbar med återställningsfras" ], + "Data recovery requires a password reset option (email or SMS)": [ + "Dataåterställning kräver ett alternativ för lösenordsåterställning (e-post eller SMS)" + ], "dedicated servers": [ "dedikerade servrar" ], @@ -10482,12 +10823,12 @@ "For easy access to your passwords and more.": [ "För enkel åtkomst till dina lösenord och mer." ], + "For just ${ bundlePlanPriceInline }": [ + "För endast ${ bundlePlanPriceInline }" + ], "For users who are switching to ${ MAIL_APP_NAME } from another email service, select the ${ boldAddresses } tab and add all active email addresses before changing the MX record to ensure a smooth transition.": [ "För användare som byter till ${ MAIL_APP_NAME } från en annan e-posttjänst, välj fliken ${ boldAddresses } och lägg till alla aktiva e-postadresser innan du ändrar MX-posten för att säkerställa en smidig övergång." ], - "Forwarding automatically sends new incoming emails to your Inbox.": [ - "Vidarebefordran skickar automatiskt nya inkommande e-postmeddelanden till din inkorg." - ], "Free forever": [ "Gratis för alltid" ], @@ -10515,6 +10856,9 @@ "Gateways": [ "Gateways" ], + "Generating a new recovery phrase will deactivate your current recovery phrase.": [ + "Att generera en ny återställningsfras kommer inaktivera din nuvarande återställningsfras." + ], "Generating a new recovery phrase will deactivate your old one.": [ "Att generera en ny återställningsfras kommer inaktivera din gamla." ], @@ -10536,12 +10880,18 @@ "Get notified if your password or other personal data was leaked. ${ learnMoreLinkNoBreach }": [ "Bli aviserad om ditt lösenord eller annan personlig data har läckt. ${ learnMoreLinkNoBreach }" ], + "Get started": [ + "Kom igång" + ], "Get started with the referral link above.": [ "Kom igång med hänvisningslänken ovan." ], "Get visibility into account access": [ "Skaffa insyn i kontoåtkomst" ], + "Get VPN Plus": [ + "Skaffa VPN Plus" + ], "Give the token a descriptive name, such as the service you plan to use it with, and select one of your active custom domain addresses. Only this address will be able to send emails with this token.": [ "Ge detta token ett beskrivande namn, t.ex. vilken tjänst du avser att använda det med och välj en av dina aktiva anpassade domänadresser. Endast denna adress kan skicka e-post med denna token." ], @@ -10724,6 +11074,9 @@ "Include device, location, and IP details": [ "Inkludera enhet, plats och IP-detaljer" ], + "Included": [ + "Inkluderad" + ], "Increase your account security by verifying your email address.": [ "Öka ditt kontosäkerhet genom att verifiera din e-postadress." ], @@ -10860,6 +11213,9 @@ "It’s often the easiest way to recover your account if you’re signed in.": [ "Det är ofta det enklaste sättet att återställa ditt konto om du är inloggad." ], + "It’s the only way to instantly recover everything, so make sure you keep it somewhere safe but accessible.": [ + "Det är det enda sättet att omedelbart återställa allt, så se till att du förvarar det någonstans säkert men åtkomligt." + ], "JCB logo": [ "JCB-logga" ], @@ -11064,15 +11420,15 @@ "No card required": [ "Inget kort krävs" ], + "No connected addresses.": [ + "Inga anslutna adresser." + ], "No countries enabled": [ "Inga länder aktiverade" ], "No folder selected": [ "Ingen mapp vald" ], - "No forwarding history.": [ - "Ingen vidarebefordringshistorik." - ], "No gateways": [ "Inga gateways" ], @@ -11133,6 +11489,9 @@ "Only change these settings if you are using PGP with non-${ BRAND_NAME } recipients.": [ "Ändra bara dessa inställningar om du använder PGP med mottagare som inte använder ${ BRAND_NAME }." ], + "Only sign in on devices you trust": [ + "Logga endast in på enheter du litar på" + ], "Only you can see the label": [ "Endast du kan se etiketten" ], @@ -11389,6 +11748,9 @@ "Recently used servers:": [ "Nyligen använda servrar:" ], + "RECOMMENDED": [ + "REKOMMENDERAT" + ], "Recommended on trusted devices. ${ keepMeSignedInLearnMoreLink }": [ "Rekommenderas på betrodda enheter. ${ keepMeSignedInLearnMoreLink }" ], @@ -11551,6 +11913,9 @@ "Set up your organization": [ "Ställ in din organisation" ], + "Set up your organization and start protecting your data in a few easy steps.": [ + "Ställ in din organisation och börja skydda dina data i några enkla steg." + ], "Setting successfully saved": [ "Inställning sparad" ], @@ -11588,6 +11953,12 @@ "Show each sender's image in the message list. The sender's initials will be shown if a photo is not available.": [ "Visa varje avsändares bild i meddelandelistan. Avsändarens initialer kommer att visas om ett foto inte är tillgängligt." ], + "Show fewer benefits": [ + "Visa färre fördelar" + ], + "Show more benefits": [ + "Visa fler fördelar" + ], "Show original message": [ "Visa originalmeddelande" ], @@ -11630,9 +12001,6 @@ "Something went wrong. Please try again or contact customer support.": [ "Något gick fel. Försök igen eller kontakta kundsupport." ], - "Something went wrong. Please try again.": [ - "Någonting gick fel. Försök igen." - ], "Specify the domain which is allowed to authenticate with SAML SSO.": [ "Ange den domän som tillåts autentisera med SAML SSO." ], @@ -11722,6 +12090,9 @@ "TechRadar Pro recommended with a rating of 4.2 out of 5 stars": [ "TechRadar Pro rekommenderar med ett betyg på 4,2 av 5 stjärnor" ], + "Temporarily unavailable due to high demand. Please try again later.": [ + "Tillfälligt otillgänglig på grund av hög efterfrågan. Försök igen senare." + ], "Temporarily unavailable. Please check back later.": [ "Tillfälligt otillgänglig. Återkom senare." ], @@ -11908,6 +12279,9 @@ "This verification can take up to one hour. After successful verification, do not remove the TXT record as it is needed to confirm that you continue to own the domain.": [ "Denna verifiering kan ta upp till en timme. Efter lyckad verifiering, ta inte bort TXT-posten eftersom den behövs för att bekräfta att du fortsätter att äga domänen." ], + "This will allow the TV to access your ${ BRAND_NAME } account.": [ + "Detta kommer tillåta TV:n kan komma åt ditt ${ BRAND_NAME }-konto." + ], "This will delete all previous versions of your files older than ${ rententionLabel }.": [ "Detta kommer ta bort alla tidigare versioner av dina filer äldre än ${ rententionLabel }." ], @@ -11929,6 +12303,9 @@ "This will enable PayPal to be used to pay for your ${ BRAND_NAME } subscription. We will redirect you to PayPal in a new browser tab. If you use any pop-up blockers, please disable them to continue.": [ "Detta gör att PayPal kan användas för att betala för din ${ BRAND_NAME }-prenumeration. Vi kommer omdirigera dig till PayPal i en ny webbläsarflik. Om du använder popup-blockerare, inaktivera dem för att fortsätta." ], + "This will let you quickly and safely access your ${ BRAND_NAME } Account so you can change you password.": [ + "Detta ger dig snabb och säker åtkomst till ditt ${ BRAND_NAME }-konto så du kan ändra ditt lösenord." + ], "This will permanently delete the data and all email addresses associated with these users.": [ "Detta kommer ta bort data och alla e-postadresser permanent som är associerade med dessa användare." ], @@ -12001,18 +12378,12 @@ "To decrypt and view your locked data after a password reset, select a recovery method.": [ "För att dekryptera och visa dina låsta data efter en lösenordsåterställning, välj en återställningsmetod." ], - "To ensure the highest possible security of your account, disable **QR code sign-in**.": [ - "För att säkerställa högsta möjliga säkerhet för ditt konto, inaktivera **QR-kodsinloggning**." - ], "To ensure you don’t lose important data, ${ DRIVE_APP_NAME } saves older versions of your files as you and your collaborators make changes. Select how long ${ BRAND_NAME } should keep previous versions.": [ "För att säkerställa att du inte förlorar viktig data sparar ${ DRIVE_APP_NAME } äldre versioner av dina filer när du och dina medarbetare gör ändringar. Välj hur länge ${ BRAND_NAME } ska behålla tidigare versioner." ], "To fight spam and abuse, please verify you are human.": [ "För att bekämpa skräppost och missbruk, verifiera att du är människa." ], - "To help keep your account safe, we want to make sure it's really you trying to sign in.": [ - "För att hjälpa till att hålla ditt konto säkert vill vi se till att det verkligen är du som försöker logga in." - ], "To help keep your account safe, we want to make sure it’s really you trying to sign in.": [ "För att hjälpa till att hålla ditt konto säkert vill vi se till att det verkligen är du som försöker logga in." ], @@ -12103,6 +12474,9 @@ "Unless you sign out of your account or change your password, your session will remain active. Sessions expire after 60 days of inactivity.": [ "Om du inte loggar ut från ditt konto eller ändrar ditt lösenord kommer din session att förbli aktiv. Sessioner löper ut efter 60 dagars inaktivitet." ], + "Unlock streaming with VPN Plus.": [ + "Lås upp streaming med VPN Plus." + ], "Unsaved changes": [ "Osparade ändringar" ], @@ -12118,9 +12492,15 @@ "Unverified email address.": [ "Overifierad e-postadress." ], + "Upgrade anytime to bring over the rest": [ + "Uppgradera när som helst för att flytta över resten" + ], "Upgrade now to get premium features, products and storage at a special price": [ "Uppgradera nu för att få premiumfunktioner, produkter och lagringsutrymme till ett specialpris" ], + "Upgrade or clear space anytime to bring over the rest": [ + "Uppgradera eller frigör utrymme när som helst för att flytta över resten" + ], "Upgrade to add a shorter @pm.me address to your account that is easier to share. It stands for “${ MAIL_APP_NAME } me” or “Private Message me”.": [ "Uppgradera för att lägga till en kortare @pm.me-adress till ditt konto som är lättare att dela. Det står för “${ MAIL_APP_NAME } me“ eller “Private Message me“." ], @@ -12250,6 +12630,9 @@ "Visa Secure logo": [ "Logga för Visa Secure" ], + "VPN Plus": [ + "VPN Plus" + ], "VPN with dedicated servers and IP addresses": [ "VPN med dedikerade servrar och IP-adresser" ], @@ -12268,6 +12651,9 @@ "We can use your recovery email to send you a verification code to reset your password, and to contact you if we notice suspicious activity.": [ "Vi kan använda din e-postadress för återställning för att skicka dig en verifieringskod för att återställa ditt lösenord och att kontakta dig om vi upptäcker misstänkt aktivitet." ], + "We can use your recovery phone to send you a verification code to reset your password, and to contact you if we notice suspicious activity.": [ + "Vi kan använda din telefon för återställning för att skicka dig en verifieringskod för att återställa ditt lösenord och att kontakta dig om vi upptäcker misstänkt aktivitet." + ], "We couldn't complete the transaction. Please try again.": [ "Vi kunde inte slutföra transaktionen. Försök igen." ], @@ -12361,9 +12747,6 @@ "When disabled, this prevents remote images from loading without your knowledge.": [ "När detta är inaktiverat förhindrar det att fjärrbilder laddas utan din vetskap." ], - "When enabled, we will check if ${ MAIL_APP_NAME } is your default mail application and notify you if it is not.": [ - "När det är aktiverat kommer vi kontrollera om ${ MAIL_APP_NAME } är din standardapplikation för e-post och avisera dig om det inte är det." - ], "When enabling SAML for ${ appName } in your identity provider, you might be prompted to use the callback (ACS) URL and issuer ID. Just copy-paste the data below into your identity provider fields.": [ "Vid aktivering av SAML för ${ appName } hos din identitetsleverantör så kan du bli ombedd att använda callback (ACS) URL och utfärdar-ID. Kopiera och klistra in värdena nedan i fälten hos din identitetsleverantör." ], @@ -12494,9 +12877,6 @@ "You can edit this once to ensure the correct email address for verification.": [ "Du kan redigera detta en gång för att säkerställa korrekt e-postadress för verifiering." ], - "You can enable the Photos section from the interface using the toggle below.": [ - "Du kan aktivera fotosektionen från användargränssnittet med växlaren nedan." - ], "You can enforce the password rules members of your organization will use when they create or reset the password to their ${ BRAND_NAME } Account.": [ "Du kan tillämpa lösenordsreglerna som medlemmar i din organisation använder när de skapar eller återställer lösenordet till sitt ${ BRAND_NAME }-konto." ], @@ -12751,6 +13131,9 @@ "Your recent changes have been published. They will be visible to users in the next few hours.": [ "Dina senaste ändringar har publicerats. De kommer vara synliga för användare inom de närmaste timmarna." ], + "Your recovery file will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset.": [ + "Din återställningsfil kommer återställa åtkomst till e-post, kontakter, filer, lösenord och annan krypterad data på ditt konto efter en lösenordsåterställning." + ], "Your recovery phrase": [ "Din återställningsfras" ], @@ -13390,6 +13773,9 @@ "${ PROTON_SENTINEL_NAME } protection": [ "${ PROTON_SENTINEL_NAME }-skydd" ], + "${ value.length }/${ maxLength } characters": [ + "${ value.length }/${ maxLength } tecken" + ], "(Temporarily unavailable. Please check back later.)": [ "(Tillfälligt otillgänglig. Återkom senare.)" ], @@ -13672,6 +14058,9 @@ "Bookings, billings, and orders": [ "Bokningar, faktureringar och beställningar" ], + "Brand your workspace": [ + "Varumärk ditt arbetsutrymme" + ], "Browser": [ "Webbläsare" ], @@ -13777,6 +14166,9 @@ "Confirm login password": [ "Bekräfta inloggningslösenord" ], + "Confirm MX records added": [ + "Bekräfta tillagda MX-poster" + ], "Confirm new password": [ "Bekräfta nytt lösenord" ], @@ -13976,6 +14368,9 @@ "Enable ${ DARK_WEB_MONITORING_NAME } for ${ domain.DomainName }": [ "Aktivera ${ DARK_WEB_MONITORING_NAME } för ${ domain.DomainName }" ], + "Enable categories": [ + "Aktivera kategorier" + ], "Enabled": [ "Aktiverat" ], @@ -14309,6 +14704,9 @@ "Must have at least ${ MIN_PASSWORD_LENGTH } characters": [ "Måste ha minst ${ MIN_PASSWORD_LENGTH } tecken" ], + "MX records": [ + "MX-poster" + ], "Name": [ "Namn" ], @@ -14489,6 +14887,9 @@ "Primary": [ "Primär" ], + "Priority": [ + "Prioritet" + ], "Priority support": [ "Prioriterad support" ], @@ -14892,6 +15293,9 @@ "Without attachment": [ "Utan bilaga" ], + "Yearly": [ + "Årligen" + ], "Yearly free storage bonus": [ "Årlig bonus med gratis lagringsutrymme" ], @@ -14901,6 +15305,9 @@ "Yes, I want to permanently delete this account and all its data.": [ "Ja, jag vill permanent ta bort detta konto och alla dess data." ], + "You don't have permissions": [ + "Du har inte behörighet" + ], "Your activation code:": [ "Din aktiveringskod:" ], @@ -14950,6 +15357,9 @@ ], "Recovery phrase": [ "Återställningsfras" + ], + "Set recovery phone number": [ + "Ställ in telefonnummer för återställning" ] }, "Label (begin date/advanced search)": { @@ -14991,6 +15401,23 @@ "Lägg till följande TXT-post. Obs! DNS-poster kan ta flera timmar att uppdatera." ] }, + "Label for domain setup": { + "${ capitalizedGroup } record not found": [ + "${ capitalizedGroup }-post hittades inte" + ], + "Invalid ${ group.name } record found": [ + "Ogiltig ${ group.name }-post hittades" + ], + "Type": [ + "Typ" + ], + "Use default value": [ + "Använd standardvärde" + ], + "Valid ${ group.name } record found": [ + "Giltig ${ group.name }-post hittades" + ] + }, "Label for new member": { "Admin": [ "Admin" @@ -15153,6 +15580,9 @@ "data recovery option": [ "alternativ för dataåterställning" ], + "Detailed instructions": [ + "Detaljerade instruktioner" + ], "Details": [ "Detaljer" ], @@ -15327,6 +15757,9 @@ "Upgrade your plan": [ "Uppgradera ditt paket" ], + "use a data recovery method": [ + "använd en dataåterställningsmetod" + ], "Vault": [ "Valv" ], @@ -15662,21 +16095,39 @@ "Built-in chat": [ "Inbyggd chatt" ], + "Cloud storage and file sharing": [ + "Molnlagring och fildelning" + ], + "Document and spreadsheet editor": [ + "Dokument- och kalkylbladsredigerare" + ], "End-to-end encrypted screen sharing and ephemeral in-call chat": [ "End-to-end-krypterad skärmdelning och kortvarig chatt i samtal" ], "Hosts can record meetings locally on their computers": [ "Värdar kan spela in möten lokalt på sina datorer" ], + "Includes Meet Professional": [ + "Inkluderar Meet Professional" + ], "Meeting recording": [ "Mötesinspelning" ], "One active meeting at a time": [ "Ett aktivt möte åt gången" ], + "Password manager with team vaults": [ + "Lösenordshanterare med valv för team" + ], + "Private AI Chat (${ LUMO_SHORT_APP_NAME })": [ + "Privat AI-chatt (${ LUMO_SHORT_APP_NAME })" + ], "Screen-sharing": [ "Skärmdelning" ], + "Secure mail and calendar": [ + "Säker e-post och kalender" + ], "Unlimited meetings per day": [ "Obegränsat antal möten per dag" ], @@ -15691,6 +16142,9 @@ "Video meetings, ${ n } participant": [ "Videomöten, ${ n } deltagare", "Videomöten, ${ n } deltagare" + ], + "VPN with ad-blocker and malware protection": [ + "VPN med annonsblockerare och skydd mot skadlig kod" ] }, "meet_2025: Info": { @@ -16353,6 +16807,9 @@ "99.95% SLA": [ "99.95 % SLA" ], + "Access all countries": [ + "Åtkomst till alla länder" + ], "Activity logs and policy": [ "Aktivitetsloggar och policy" ], @@ -16522,6 +16979,9 @@ "Multiple admin roles": [ "Flera administratörsroller" ], + "No streaming support": [ + "Inget stöd för streaming" + ], "No-logs policy": [ "Ingen loggpolicy" ], @@ -16688,6 +17148,9 @@ "Unlimited volume/bandwidth": [ "Obegränsad bandbredd" ], + "Unlock streaming": [ + "Lås upp streaming" + ], "Up to ${ n } user": [ "Upp till ${ n } användare", "Upp till ${ n } användare" @@ -17162,6 +17625,10 @@ ] }, "new_plans: Upsell attribute": { + "${ n } country": [ + "${ n } land", + "${ n } länder" + ], "Access advanced VPN features": [ "Få tillgång till avancerade VPN-funktioner" ], @@ -17223,9 +17690,6 @@ "${ app } product updates": [ "Produktuppdateringar för ${ app }" ], - "${ BRAND_NAME } for Business newsletter": [ - "${ BRAND_NAME } för Business-nyhetsbrev" - ], "${ BRAND_NAME } important announcements": [ "Viktiga meddelanden från ${ BRAND_NAME }" ], @@ -17277,8 +17741,8 @@ "During your first month of using a ${ BRAND_NAME } product": [ "Under din första månad med användning av en ${ BRAND_NAME }-produkt" ], - "Email subscriptions": [ - "E-postprenumerationer" + "Email communications": [ + "E-postkommunikationer" ], "In-app notifications": [ "Aviseringar i app" @@ -18360,14 +18824,14 @@ "per month, billed every two years": [ "per månad, faktureras vartannat år" ], - "Preparing your Recovery Kit": [ - "Förbereder ditt återställningskit" + "Preparing your recovery phrase": [ + "Förbereder din återställningsfras" ], "Protected by Swiss privacy laws": [ "Skyddad av schweiziska integritetslagar" ], - "Save your recovery kit to continue": [ - "Spara ditt återställningskit för att fortsätta" + "Save your recovery phrase to continue": [ + "Spara din återställningsfras för att fortsätta" ], "Secure vault sharing": [ "Säker valvdelning" @@ -19081,6 +19545,9 @@ "Search for an email or IP address": [ "Sök efter en e-post eller IP-adress" ], + "Search for users or addresses": [ + "Sök efter användare eller adresser" + ], "Search parent folder": [ "Sök överordnad mapp" ], @@ -19227,8 +19694,8 @@ ] }, "PQC compatibility warning": { - "**You must update all ${ BRAND_NAME } mobile apps**: your new keys won't work on older app versions.": [ - "**Du måste uppdatera alla ${ BRAND_NAME } mobilappar**: dina nya nycklar fungerar inte på äldre appversioner." + "**You must update all ${ BRAND_NAME } apps**: your new keys won't work on older app versions.": [ + "**Du måste uppdatera alla ${ BRAND_NAME }-appar**: dina nya nycklar fungerar inte på äldre appversioner." ] }, "PQC optin": { @@ -19483,7 +19950,7 @@ "Verifiera denna e-postadress för återställning nu: ${ emailData.value }" ], "Verify recovery email?": [ - "Virifiera e-post för återställning?" + "Verifiera e-post för återställning?" ], "Verify with email": [ "Verifiera med e-post" @@ -19542,8 +20009,8 @@ "Add more options for stronger protection": [ "Lägg till fler alternativ för starkare skydd" ], - "Add options to avoid getting locked out of your account.": [ - "Lägg till alternativ för att undvika att bli utelåst från ditt konto." + "Add more options to avoid getting locked out of your account.": [ + "Lägg till fler alternativ för att undvika att bli utelåst från ditt konto." ], "Awesome. Keep your options up-to-date for stronger protection.": [ "Fantastiskt. Håll dina alternativ uppdaterade för starkare skydd." @@ -19557,6 +20024,9 @@ "How you increased your account protection": [ "Hur du ökade ditt kontoskydd" ], + "Inactive recovery options": [ + "Inaktiva återställningsalternativ" + ], "Maximum": [ "Maximalt" ], @@ -19604,14 +20074,14 @@ "Download recovery file": [ "Ladda ner återställningsfil" ], - "Email verification enabled": [ - "E-postverifiering aktiverat" + "Email recovery enabled": [ + "Återställning via e-post aktiverat" ], "Emergency contacts added": [ "Nödkontakter tillagda" ], - "Enable recovery by email": [ - "Aktivera återställning via e-post" + "Enable email recovery": [ + "Aktivera återställning med e-post" ], "Enable recovery by phone": [ "Aktivera återställning med telefon" @@ -19622,9 +20092,15 @@ "Password verified": [ "Lösenord verifierat" ], + "Phone recovery enabled": [ + "Återställning med telefon aktiverat" + ], "Recovery contacts added": [ "Återställningskontakter tillagda" ], + "Recovery file downloaded": [ + "Återställningsfil nerladdad" + ], "Recovery phrase saved": [ "Återställningsfras sparad" ], @@ -19634,14 +20110,11 @@ "Sign-in with QR code allowed": [ "Inloggning med QR-kod tillåtet" ], - "SMS verification enabled": [ - "SMS-verifiering aktiverat" - ], "Verify password": [ "Verifiera lösenord" ], "Verify recovery email": [ - "Virifiera e-post för återställning" + "Verifiera e-post för återställning" ], "Verify recovery phone": [ "Verifiera återställning med telefon" @@ -19680,14 +20153,11 @@ "Or ${ downloadRecoveryKitSwitchButton } instead.": [ "Eller ${ downloadRecoveryKitSwitchButton } istället." ], - "Your **Recovery Kit** lets you restore your ${ BRAND_NAME } Account if you’re locked out.": [ - "Ditt **Återställningskit** låter dig återställa ditt ${ BRAND_NAME }-konto om du är utelåst." + "Your **recovery phrase** lets you restore your ${ BRAND_NAME } Account if you’re locked out.": [ + "Din **återställningsfras** låter dig återställa ditt ${ BRAND_NAME }-konto om du är utelåst." ] }, "RecoveryPhrase: Title": { - "Save your Recovery Kit": [ - "Spara ditt återställningskit" - ], "Save your recovery phrase": [ "Spara din återställningsfras" ] @@ -20074,8 +20544,8 @@ "Back to Safety Review": [ "Tillbaka till säkerhetsgranskning" ], - "Because you reset your password, your current Recovery Kit can only be used to recover the data created before your password reset.": [ - "Eftersom du återställer ditt lösenord kan ditt nuvarande återställningskit endast användas för att återställa data skapad innan din lösenordsåterställning." + "Because you reset your password, your current recovery phrase can only be used to recover the data created before your password reset.": [ + "Eftersom du återställer ditt lösenord kan din nuvarande återställningsfras endast användas för att återställa data skapad innan din lösenordsåterställning." ], "Can be used to regain access to your account and data": [ "Kan användas för att återfå åtkomst till ditt konto och data" @@ -20104,8 +20574,8 @@ "Download ${ size }": [ "Ladda ner ${ size }" ], - "Download your Recovery Kit": [ - "Ladda ner ditt återställningskit" + "Download your recovery phrase": [ + "Ladda ner din återställningsfras" ], "Email address": [ "E-postadress" @@ -20119,8 +20589,8 @@ "Enable recovery by phone": [ "Aktivera återställning via telefon" ], - "I understand that I will not be able to recover currently locked data with this Recovery Kit": [ - "Jag förstår att jag inte kommer att kunna återställa för närvarande låsta data med detta återställningskit" + "I understand that I will not be able to recover currently locked data with this recovery phrase": [ + "Jag förstår att jag inte kommer att kunna återställa för närvarande låsta data med denna återställningsfras" ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in on this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Om du glömmer ditt ${ BRAND_NAME }-lösenord och behöver återställa det så kommer full åtkomst till ditt ${ BRAND_NAME }-konto att återställas nästa gång du loggar in på den här enheten." @@ -20128,8 +20598,8 @@ "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Om du glömmer ditt ${ BRAND_NAME }-lösenord och behöver återställa det så kommer full åtkomst till ditt ${ BRAND_NAME }-konto att återställas nästa gång du loggar in på den här enheten." ], - "If you get locked out of your ${ BRAND_NAME } Account, your Recovery Kit will allow you to sign in and recover your data.": [ - "Om du blir utelåst från ditt ${ BRAND_NAME }-konto kommer ditt återställningskit att låta dig logga in och återställa dina data." + "If you get locked out of your ${ BRAND_NAME } Account, your recovery phrase will allow you to sign in and recover your data.": [ + "Om du blir utelåst från ditt ${ BRAND_NAME }-konto kommer din återställningsfras att låta dig logga in och återställa dina data." ], "If you lose your login details and need to reset your account, **it’s imperative** that you have both an **account recovery and data recovery method** in place, otherwise you might not be able to access any of your emails, contacts, files or passwords.": [ "Om du tappar dina inloggningsuppgifter och behöver återställa ditt konto **är det absolut nödvändigt** att du har både en **kontoåterställnings- och dataåterställningsmetod** på plats, annars kanske du inte kommer åt din e-post, kontakter, filer eller lösenord." @@ -20173,8 +20643,8 @@ "Take action to secure your account": [ "Vidta åtgärd för att säkra ditt konto" ], - "There was an error generating your Recovery Kit": [ - "Det var ett fel vid generering av ditt återställningskit" + "There was an error generating your recovery phrase": [ + "Det var ett fel vid generering av din återställningsfras" ], "There was an error verifying your email": [ "Det var ett fel att verifiera din e-post" @@ -20203,11 +20673,11 @@ "to recover your account if you're ever locked out": [ "för att återställa ditt konto om du någon gång blir utelåst" ], - "Update your Recovery Kit": [ - "Uppdatera ditt återställningskit" + "Update your recovery phrase": [ + "Öppna din återställningsfras" ], - "Update your Recovery Kit?": [ - "Uppdatera ditt återställningskit?" + "Update your recovery phrase?": [ + "Uppdatera din återställningsfras?" ], "Verify": [ "Verifiera" @@ -20224,8 +20694,8 @@ "Verify your recovery phone number": [ "Verifiera ditt telefonnummer för återställning" ], - "We encountered an error while generating your Recovery Kit. Please try again later, or contact support if the issue continues.": [ - "Vi stötte på ett fel vid genereringen av ditt återställningskit. Försök igen senare eller kontakta supporten om problemet kvarstår." + "We encountered an error while generating your recovery phrase. Please try again later, or contact support if the issue continues.": [ + "Vi stötte på ett fel vid genereringen av din återställningsfras. Försök igen senare eller kontakta supporten om problemet kvarstår." ], "We encountered an error while verifying your email. Please try again later, or contact support if the issue continues.": [ "Vi stötte på ett fel vid verifieringen av din e-post. Försök igen senare eller kontakta supporten om problemet kvarstår." @@ -20248,8 +20718,8 @@ "You can disable this at any time.": [ "Du kan inaktivera detta när som helst." ], - "You can use the recovery phrase in this Recovery Kit to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ - "Du kan använda återställningsfrasen i detta återställningskit för att helt återställa ditt konto när du återställer ditt lösenord, så se till att du förvarar det någonstans säkert." + "You can use the recovery phrase in this recovery phrase to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ + "Du kan använda återställningsfrasen i denna återställningsfras för att helt återställa ditt konto när du återställer ditt lösenord, så se till att du förvarar det på ett säkert ställe." ], "You can use your email to regain access to your account if you forget your password.": [ "Du kan använda din e-post för att återfå åtkomst till ditt konto om du glömmer ditt lösenord." @@ -20260,8 +20730,8 @@ "You can use your recovery phone to regain access to your account if you forget your password.": [ "Du kan använda din telefon för återställning för att återfå åtkomst till ditt konto om du glömmer ditt lösenord." ], - "You have previously downloaded a Recovery Kit. Downloading a new one will **deactivate the old one**.": [ - "Du har tidigare laddat ner ett återställningskit. Att ladda ner ett nytt kommer **inaktivera det gamla**." + "You have previously downloaded a recovery phrase. Downloading a new one will **deactivate the old one**.": [ + "Du har tidigare laddat ner en återställningsfras. Om du laddar ner en ny kommer den gamla **inaktiveras**." ], "You have recommended actions to safeguard your account further.": [ "Du har rekommenderade åtgärder för att skydda ditt konto ytterligare." @@ -20326,12 +20796,6 @@ "Your recovery email is set": [ "Din e-post för återställning är inställd" ], - "Your Recovery Kit": [ - "Ditt återställningskit" - ], - "Your Recovery Kit is set": [ - "Ditt återställningskit är inställt" - ], "Your recovery methods": [ "Dina återställningsmetoder" ], @@ -20352,6 +20816,218 @@ ], "Your recovery phone number is:": [ "Ditt telefonnummer för återställning är:" + ], + "Your recovery phrase": [ + "Din återställningsfras" + ], + "Your recovery phrase is set": [ + "Din återställningsfras är inställd" + ] + }, + "safety_review": { + "Account protection": [ + "Kontoskydd" + ], + "Add": [ + "Lägg till" + ], + "Add an emergency contact": [ + "Lägg till en nödkontakt" + ], + "Add emergency contacts": [ + "Lägg till nödkontakter" + ], + "Add options": [ + "Lägga till alternativ" + ], + "Add people you trust and can contact easily. They will be able to help you unlock your data after you reset your password.": [ + "Lägg till personer du litar på och enkelt kan kontakta. De kommer att kunna hjälpa dig att låsa upp dina data efter du återställt ditt lösenord." + ], + "Add phone number": [ + "Lägg till telefonnummer" + ], + "Add recovery contacts": [ + "Lägg till återställningskontakter" + ], + "Add recovery email": [ + "Lägg till e-post för återställning" + ], + "Add recovery phone": [ + "Lägg till telefon för återställning" + ], + "Added emergency contacts": [ + "Lade till nödkontakter" + ], + "Added recovery contacts": [ + "Lade till återställningskontakter" + ], + "Added recovery email": [ + "Lade till e-post för återställning" + ], + "Added recovery phone": [ + "Lade till telefon för återställning" + ], + "Allow": [ + "Tillåt" + ], + "Allow data recovery from this device": [ + "Tillåt dataåterställning från denna enhet" + ], + "Allow password reset from the settings": [ + "Tillåt lösenordsåterställning från inställningarna" + ], + "Allow recovery by email": [ + "Tillåt återställning med e-post" + ], + "Allow recovery by phone": [ + "Tillåt återställning med telefon" + ], + "Allow scanning a QR code to sign in": [ + "Tillåt skanning av en QR-kod för att logga in" + ], + "Allow trusted friends to unlock your data": [ + "Tillåt betrodda vänner att låsa upp dina data" + ], + "Back to ${ backLink.appNameString }": [ + "Tillbaka till ${ backLink.appNameString }" + ], + "Congratulations": [ + "Grattis" + ], + "Didn’t receive it? ${ sendANewCode }": [ + "Fick du det inte? ${ sendANewCode }" + ], + "Done": [ + "Klar" + ], + "Download": [ + "Ladda ner" + ], + "Download recovery file": [ + "Ladda ner återställningsfil" + ], + "Downloaded recovery file": [ + "Laddade ner återställningsfil" + ], + "Emergency contacts enabled": [ + "Nödkontakter aktiverade" + ], + "Enable device recovery": [ + "Aktivera enhetsåterställning" + ], + "Enable email recovery": [ + "Aktivera återställning med e-post" + ], + "Enable emergency contacts": [ + "Aktivera nödkontakter" + ], + "Enable password reset from settings": [ + "Aktivera lösenordsåterställning från inställningar" + ], + "Enable phone recovery": [ + "Aktivera återställning med telefon" + ], + "Enable QR code sign-in": [ + "Aktivera inloggning med QR-kod" + ], + "Enabled device recovery": [ + "Aktiverade enhetsåterställning" + ], + "Enabled email recovery": [ + "Aktiverade återställning med e-post" + ], + "Enabled password reset from settings": [ + "Aktiverade lösenordsåterställning från inställningar" + ], + "Enabled phone recovery": [ + "Aktiverade återställning med telefon" + ], + "Enabled QR code sign-in": [ + "Aktiverade inloggning med QR-kod" + ], + "Got it": [ + "Jag förstår" + ], + "Here's how you increased your account protection:": [ + "Så här ökade du ditt kontoskydd:" + ], + "If you forget your password, you can sign in using a QR code. All you need is to be signed in to a ${ BRAND_NAME } service on another device.": [ + "Om du glömmer ditt lösenord kan du logga in med en QR-kod. Allt du behöver göra är att vara inloggad på en ${ BRAND_NAME }-tjänst på annan enhet." + ], + "Later": [ + "Senare" + ], + "Protect your legacy with Emergency Access": [ + "Skydda ditt arv med nödåtkomst" + ], + "Save recovery phrase": [ + "Spara återställningsfras" + ], + "Saved recovery phrase": [ + "Sparade återställningsfras" + ], + "They must already have a ${ BRAND_NAME } Account.": [ + "Du måste redan ha ett ${ BRAND_NAME }-konto." + ], + "They will not be able to see or access your data.": [ + "De kommer inte kunna se eller komma åt dina data." + ], + "This will let you quickly access your ${ BRAND_NAME } Account so you can change your password.": [ + "Detta ger dig snabb åtkomst till ditt ${ BRAND_NAME }-konto så du kan ändra ditt lösenord." + ], + "This will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset.": [ + "Detta kommer återställa åtkomst till e-post, kontakter, filer, lösenord och annan krypterad data på ditt konto efter en lösenordsåterställning." + ], + "To make sure the email address is yours, enter the verification code sent to ${ boldEmail }.": [ + "För att vara säker på att e-postadressen är din, ange verifieringskoden skickad till ${ boldEmail }." + ], + "To make sure the phone number is yours, enter the verification code sent to ${ boldPhoneNumber }.": [ + "För att vara säker på att telefonnumret är ditt, ange verifieringskoden skickad till ${ boldPhoneNumber }." + ], + "To make sure this address is really yours, we’ll send an email with a verification link.": [ + "För att säkerställa att denna adress verkligen är din skickar vi ett e-postmeddelande med en verifieringslänk." + ], + "Verified password": [ + "Verifierat lösenord" + ], + "Verified recovery email": [ + "Verifierade återställning med e-post" + ], + "Verified recovery phone": [ + "Verifierade återställning med telefon" + ], + "Verify": [ + "Verifiera" + ], + "Verify password": [ + "Verifiera lösenord" + ], + "Verify recovery email": [ + "Verifiera e-post för återställning" + ], + "Verify recovery phone": [ + "Verifiera återställning med telefon" + ], + "Verify your recovery email": [ + "Verifiera din e-post för återställning" + ], + "Verify your recovery phone": [ + "Verifiera din telefon för återställning" + ], + "You can use email verification to regain access to your account if you forget your password.": [ + "Du kan använda e-postverifiering för att återfå åtkomst till ditt konto om du glömmer ditt lösenord." + ], + "You can use SMS verification to regain access to your account if you forget your password.": [ + "Du kan använda SMS-verifiering för att återfå åtkomst till ditt konto om du glömmer ditt lösenord." + ], + "You can use your recovery email to regain access to your account if you forget your password.": [ + "Du kan använda din e-post för återställning för att återfå åtkomst till ditt konto om du glömmer ditt lösenord." + ], + "You can use your recovery phone to regain access to your account if you forget your password.": [ + "Du kan använda din telefon för återställning för att återfå åtkomst till ditt konto om du glömmer ditt lösenord." + ], + "Your security setup": [ + "Din säkerhetsinställning" ] }, "saml: Action": { @@ -20558,8 +21234,8 @@ ] }, "Sentinel banner": { - "To ensure the highest possible security of your account, download your recovery phrase and disable the highlighted options.": [ - "För att säkerställa högsta möjliga säkerhet för ditt konto, ladda ner din återställningsfras och inaktivera de markerade alternativen." + "To make sure that you can always access your ${ BRAND_NAME } Account, download your recovery phrase.": [ + "För att säkerställa att du alltid kan komma åt ditt ${ BRAND_NAME }-konto, ladda ner din återställningsfras." ], "You have recommended actions from ${ PROTON_SENTINEL_NAME }": [ "Du har rekommenderade åtgärder från ${ PROTON_SENTINEL_NAME }" @@ -20896,9 +21572,6 @@ ] }, "Setting": { - "Enable Photos section": [ - "Aktivera sektion för foton" - ], "Get updates about comments via email": [ "Få uppdateringar om kommentarer via e-post" ], @@ -20915,6 +21588,9 @@ "Account": [ "Konto" ], + "Managed Companies": [ + "Hanterade företag" + ], "Organization": [ "Organisation" ] @@ -21765,11 +22441,35 @@ ] }, "Spotlight": { + "Assign delegated roles": [ + "Tilldela delegerade roller" + ], + "Assign roles": [ + "Tilldela roller" + ], + "Click a user's name to manage their role and permissions.": [ + "Klicka på en användares namn för att hantera deras roll och behörigheter." + ], + "Click Edit to assign roles to this group and manage member access automatically.": [ + "Klicka på “Redigera“ för att tilldela roller till denna grupp och hantera medlemsåtkomst automatiskt." + ], "Earn up to ${ maxRewardAmount } in credit": [ "Tjäna upp till ${ maxRewardAmount } i kredit" ], "Get credits when the person you invite subscribes to a ${ BRAND_NAME } plan.": [ "Få krediter när personen du bjuder in prenumererar på ett ${ BRAND_NAME }-paket." + ], + "New: Roles and permissions tab": [ + "Nytt: Flik för roller och behörigheter" + ], + "Open this tab to grant specific permissions without full admin access.": [ + "Öppna denna flik för att bevilja specifika behörigheter utan fullständig administratörsåtkomst." + ], + "User roles available": [ + "Användarroller tillgängliga" + ], + "You can now assign roles to individual users from this tab.": [ + "Du kan nu tilldela roller till enskilda användare från denna flik." ] }, "sso": { @@ -22073,9 +22773,6 @@ "Available on this device": [ "Tillgänglig på denna enhet" ], - "Disable QR code sign-in": [ - "Inaktivera inloggning med QR-kod" - ], "Disable recovery by email": [ "Inaktivera återställning med e-post" ], @@ -22091,9 +22788,6 @@ "Last updated ${ formattedUpdateDate }": [ "Senast uppdaterad ${ formattedUpdateDate }" ], - "No contact": [ - "Ingen kontakt" - ], "Not saved": [ "Inte sparat" ], @@ -22420,6 +23114,9 @@ ] }, "Subscription reminder": { + "${ CALENDAR_APP_NAME }, ${ DRIVE_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME }, ${ VPN_SHORT_APP_NAME }, ${ MEET_SHORT_APP_NAME }, and ${ LUMO_APP_NAME } with premium features": [ + "${ CALENDAR_APP_NAME }, ${ DRIVE_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME }, ${ VPN_SHORT_APP_NAME }, ${ MEET_SHORT_APP_NAME } och ${ LUMO_APP_NAME } med premiumfunktioner" + ], "${ CALENDAR_APP_NAME }, ${ DRIVE_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME }, and ${ VPN_SHORT_APP_NAME } with premium features": [ "${ CALENDAR_APP_NAME }, ${ DRIVE_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME } och ${ VPN_SHORT_APP_NAME } med premiumfunktioner" ], @@ -22806,6 +23503,9 @@ "${ planTitle } gives you access to all apps and premium features. Privacy is built-in so you can get on with it, knowing your data and identity are safe.": [ "${ planTitle } ger dig åtkomst till alla appar och premiumfunktioner. Integritet är inbyggt så att du kan fortsätta med det med vetskap om att din data och din identitet är säker." ], + "${ planTitle } gives you all apps, all features, early access to new releases, and everything you need to be in control of your data and its security.": [ + "${ planTitle } ger dig alla appar, alla funktioner, förhandstillgång till nya utgåvor och allt du behöver för att ha kontroll över din data och dess säkerhet." + ], "${ planTitle } gives you unlimited privacy and more storage for up to 2 people.": [ "${ planTitle } ger dig obegränsad integritet och mer lagringsutrymme för upp till 2 personer." ], @@ -22818,6 +23518,9 @@ "${ planTitle } goes beyond the basics to help you be more productive, organized, and in control of your inbox, email identity, and more.": [ "${ planTitle } går utöver grunderna för att hjälpa dig att bli mer produktiv, organiserad och ha kontroll över din inkorg, e-postidentitet och mer." ], + "${ planTitle } helps you ensure that each of your family members — and their data — are protected whenever they’re online.": [ + "${ planTitle } hjälper dig att se till att alla dina familjemedlemmar – och deras data – är skyddade när de är online." + ], "Compare the key differences that matter for your business.": [ "Jämför de viktigaste skillnaderna som är viktiga för ditt företag." ], @@ -22838,12 +23541,18 @@ ], "View VPN session details for your organization.": [ "Visa VPN-sessionsdetaljer för din organisation." + ], + "With managed companies, you can add, edit, and remove access for organizations you oversee.": [ + "Med hanterade företag kan du lägga till, redigera och ta bort åtkomst för organisationer du övervakar." ] }, "Success": { "Account deleted. Signing out...": [ "Konto borttaget. Loggar ut..." ], + "Activation link copied to clipboard": [ + "Aktiveringslänk kopierad till urklipp" + ], "Address added": [ "Adress tillagd" ], @@ -22967,9 +23676,6 @@ "Organization logo updated": [ "Organisationens logga uppdaterad" ], - "Organization name set": [ - "Organisationsnamn inställt" - ], "Organization name updated": [ "Organisationsnamn uppdaterad" ], @@ -23191,6 +23897,14 @@ "Säkra dina filer med krypterad molnlagring. Inkluderar versionshistorik, krypterad fildelning och mer." ] }, + "Tab": { + "For personal use": [ + "För personligt bruk" + ], + "For professional use": [ + "För professionellt bruk" + ] + }, "Tab in domain modal": { "Addresses": [ "Adresser" @@ -23469,12 +24183,18 @@ "Actions": [ "Åtgärder" ], + "Activate multi-user support": [ + "Aktivera stöd för flera användare" + ], "Activate organization key": [ "Aktivera organisationsnyckel" ], "Activate user": [ "Aktivera användare" ], + "Activate your email": [ + "Aktivera din e-post" + ], "Activity monitor": [ "Aktivitetsövervakare" ], @@ -23497,6 +24217,9 @@ "Add another notification to remind you of this event": [ "Lägg till ytterligare en avisering för att påminna dig om denna händelse" ], + "Add categories": [ + "Lägg till kategorier" + ], "Add contact group name": [ "Lägg till kontaktgruppens namn" ], @@ -23578,9 +24301,6 @@ "An address for each role": [ "En adress för varje roll" ], - "An error occurred": [ - "Ett fel uppstod" - ], "Annual": [ "Årlig" ], @@ -23674,6 +24394,9 @@ "Catch-all address": [ "Catch all-adress" ], + "Categories": [ + "Kategorier" + ], "Change login password": [ "Ändra lösenord för inloggning" ], @@ -23719,6 +24442,9 @@ "Collaborate on documents": [ "Samarbeta på dokument" ], + "Companies": [ + "Företag" + ], "Compare plans": [ "Jämför paket" ], @@ -23728,18 +24454,12 @@ "Confirm": [ "Bekräfta" ], - "Confirm address": [ - "Bekräfta adress" - ], "Confirm downgrade": [ "Bekräfta nedgradering" ], "Confirm loss of ${ BRAND_NAME } bonuses": [ "Bekräfta förlust av ${ BRAND_NAME }-bonusar" ], - "Confirm phone number": [ - "Bekräfta telefonnummer" - ], "Connect ${ name }": [ "Anslut ${ name }" ], @@ -23764,14 +24484,17 @@ "Connect your custom domain": [ "Anslut din anpassad domän" ], + "Connected emails": [ + "Ansluten e-post" + ], "Connection status": [ "Anslutningsstatus" ], "Contact us": [ "Kontakta oss" ], - "Contact-assisted recovery": [ - "Kontaktassisterad återställning" + "Continue with free storage": [ + "Fortsätt med gratis lagringsutrymme" ], "Continue with partial import?": [ "Fortsätta med delimport?" @@ -23798,6 +24521,9 @@ "Create a new gateway": [ "Skapa en ny gateway" ], + "Create a new password": [ + "Skapa ett nytt lösenord" + ], "Create Gateway": [ "Skapa gateway" ], @@ -23891,6 +24617,9 @@ "Day theme": [ "Dagstema" ], + "Deactivate current phrase?": [ + "Inaktivera nuvarande fras?" + ], "Decrypt key": [ "Avkryptera nyckel" ], @@ -24021,6 +24750,9 @@ "Download the mobile apps": [ "Ladda ner mobilapparna" ], + "Download your recovery phrase": [ + "Ladda ner din återställningsfras" + ], "Downloads": [ "Nedladdningar" ], @@ -24160,6 +24892,9 @@ "Feature access": [ "Funktionsåtkomst" ], + "Fewer distractions, more focus": [ + "Färre distraktioner, mer fokus" + ], "Filter for more focus": [ "Filter för mer fokus" ], @@ -24190,9 +24925,6 @@ "Forward emails": [ "Vidarebefordra e-post" ], - "Forwardings": [ - "Vidarebefordringar" - ], "Free": [ "Gratis" ], @@ -24226,6 +24958,9 @@ "Get ${ planMaxSpace } storage for your files, photos and documents with ${ planName }. ${ upgradeButton }": [ "Få ${ planMaxSpace } lagringsutrymme för dina filer, foton och dokument med ${ planName }. ${ upgradeButton }" ], + "Get ${ VPN_APP_NAME } on your TV": [ + "Skaffa ${ VPN_APP_NAME } på din TV" + ], "Get ${ vpnPlus } to access all servers": [ "Skaffa ${ vpnPlus } för att komma åt alla servrar" ], @@ -24256,6 +24991,12 @@ "Get more from your VPN": [ "Få ut mer av din VPN" ], + "Get more storage with ${ MAIL_APP_NAME } Plus": [ + "Skaffa mer lagringsutrymme med ${ MAIL_APP_NAME } Plus" + ], + "Get started": [ + "Kom igång" + ], "Get the app on all your devices and enjoy safe, seamless access anywhere.": [ "Skaffa appen på alla dina enheter och njut av säker, sömlös åtkomst var som helst." ], @@ -24473,6 +25214,9 @@ "No events": [ "Inga händelser" ], + "No events yet": [ + "Inga händelser ännu" + ], "No need to empty the trash": [ "Inget behov att tömma papperskorgen" ], @@ -24572,9 +25316,6 @@ "Phone": [ "Telefon" ], - "Photos": [ - "Foton" - ], "Pin the extension": [ "Fäst tillägget" ], @@ -24659,9 +25400,15 @@ "Remove domain": [ "Ta bort domän" ], + "Remove email": [ + "Ta bort e-post" + ], "Remove forwarding address": [ "Ta bort vidarebefordringsadress" ], + "Remove recovery phone number": [ + "Ta bort telefonnummer för återställning" + ], "Remove server?": [ "Ta bort server?" ], @@ -24830,6 +25577,9 @@ "Sign in on TV": [ "Logga in på TV" ], + "Sign in on TV?": [ + "Logga in på TV?" + ], "Sign in to join the Beta program": [ "Logga in för att gå med i Beta-programmet" ], @@ -24866,6 +25616,9 @@ "Some of your encrypted data is locked": [ "En del av din krypterade data är låst" ], + "Something went wrong": [ + "Något gick fel" + ], "Sort folders alphabetically": [ "Sortera mappar alfabetiskt" ], @@ -25059,6 +25812,9 @@ "Verify it’s you": [ "Verifiera att det är du" ], + "Verify your email": [ + "Verifiera din e-post" + ], "Verifying your card...": [ "Verifierar ditt kort …" ], @@ -25083,6 +25839,9 @@ "Warning: suspected fake website": [ "Varning: misstänkt falsk webbplats" ], + "We sent you a code to your email to make sure it’s you. This code is valid for 10 minutes. Please enter it below.": [ + "Vi skickade en kod till din e-post för att bekräfta din identitet. Koden är giltig i 10 minuter. Ange den nedan." + ], "We'll send an email to your new address with instructions on completing the change.": [ "Vi skickar ett e-postmeddelande till din nya adress med instruktioner om hur du slutför ändringen." ], @@ -25134,6 +25893,12 @@ "Your ${ planTitle } subscription has started": [ "Din ${ planTitle }-prenumeration har startat" ], + "Your admin at ${ orgName } is inviting you to activate your new secure ${ BRAND_NAME } account and update your password.": [ + "Din administratör på ${ orgName } bjuder in dig att aktivera ditt nya säkra ${ BRAND_NAME }-konto och uppdatera ditt lösenord." + ], + "Your admin is inviting you to activate your new secure ${ BRAND_NAME } account and update your password.": [ + "Din administratör bjuder in dig att aktivera ditt nya säkra ${ BRAND_NAME }-konto och uppdatera ditt lösenord." + ], "Your calendar link": [ "Din kalenderlänk" ], @@ -25296,6 +26061,9 @@ "Allow resetting your password from the account settings": [ "Tillåt återställning av ditt lösenord från kontoinställningarna" ], + "Allow scanning a QR code from a ${ BRAND_NAME } mobile app to sign in": [ + "Tillåt skanning av en QR-kod från en mobilapp för ${ BRAND_NAME } för att logga in" + ], "Allow trusted contacts to request access to your account": [ "Tillåt betrodda kontakter att begära åtkomst till ditt konto" ], @@ -25338,6 +26106,9 @@ "Each imported email will have this label": [ "Varje importerat e-postmeddelande kommer ha denna etikett" ], + "Early access to new apps and features.": [ + "Förhandstillgång till nya appar och funktioner." + ], "Edit folder names": [ "Redigera mappnamn" ], @@ -25473,9 +26244,6 @@ "This feature is only available on Beta": [ "Denna funktion är endast tillgänglig på Beta" ], - "This is the default key used by other ${ MAIL_APP_NAME } users on older mobile apps to encrypt data they send to you": [ - "Detta är standardnyckeln som används av andra ${ MAIL_APP_NAME }-användare på äldre mobilappar för att kryptera data de skickar till dig." - ], "This is the default key used by other ${ MAIL_APP_NAME } users to encrypt data they send to you": [ "Detta är standardnyckeln som används av andra ${ MAIL_APP_NAME }-användare för att kryptera data de skickar till dig" ], @@ -25562,6 +26330,9 @@ "User is a group": [ "Användare är en grupp" ], + "via ${ groupName }": [ + "via ${ groupName }" + ], "Waiting for user to accept the invitation": [ "Väntar på att användaren ska acceptera inbjudan" ] @@ -25882,6 +26653,12 @@ ] }, "user_modal": { + "(via ${ groupName })": [ + "(via ${ groupName })" + ], + "(via group)": [ + "(via grupp)" + ], "Add delegated roles to a user to grant them only the specific permissions they need, keeping full-admin power separate and your environment secure.": [ "Lägg till delegerade roller till en användare för att bevilja ge dem de specifika behörigheter de behöver, vilket håller fullständig administratörsbehörighet separat och din miljö säker." ], @@ -26266,11 +27043,8 @@ "${ BRAND_NAME } will transfer as much data as possible, starting with your most recent messages.": [ "${ BRAND_NAME } kommer att överföra så mycket data som möjligt och börjar med dina senaste meddelanden." ], - "Are you sure you want to delete the phone number?": [ - "Är du säker på att du vill ta bort telefonnumret?" - ], - "Are you sure you want to delete this address?": [ - "Är du säker på att du vill ta bort denna adress?" + "Are you sure you want to remove your notification email?": [ + "Är du säker på att du vill ta bort din e-postavisering?" ], "By deleting this address, you will no longer be able to receive daily email notifications.": [ "Genom att ta bort denna adress kommer du inte längre att kunna få dagliga e-postaviseringar." @@ -26281,7 +27055,7 @@ "By deleting this address, you will no longer be able to recover your account.": [ "Genom att ta bort denna adress kommer du inte längre att kunna återställa ditt konto." ], - "By deleting this phone number, you will no longer be able to recover your account.": [ + "By removing this phone number, you will no longer be able to recover your account.": [ "Genom att ta bort detta telefonnummer kommer du inte längre att kunna återställa ditt konto." ], "Could not login. Please open ${ PASS_APP_NAME } browser extension and login from there.": [ diff --git a/applications/account/locales/th_TH.json b/applications/account/locales/th_TH.json index e5c2ad286f9..9971eedef40 100644 --- a/applications/account/locales/th_TH.json +++ b/applications/account/locales/th_TH.json @@ -1338,9 +1338,6 @@ "Set as default": [ "ตั้งเป็นค่าเริ่มต้น" ], - "Set as default mail application": [ - "ตั้งเป็นแอปพลิเคชั่นเมลค่าเริ่มต้น" - ], "Set catch-all": [ "ตั้งค่าฟีเจอร์ catch-all" ], @@ -2544,9 +2541,6 @@ ] }, "BOSS": { - "Add a custom domain": [ - "เพิ่มโดเมนที่กำหนดเอง" - ], "Authenticate": [ "ยืนยันตัวตน" ], @@ -2568,9 +2562,6 @@ "Domain connected": [ "เชื่อมต่อโดเมนแล้ว" ], - "Domain ownership verified": [ - "ยืนยันความเป็นเจ้าของโดเมนแล้ว" - ], "Estimated size": [ "ขนาดโดยประมาณ" ], @@ -2580,15 +2571,9 @@ "Install migration app": [ "ติดตั้งแอปย้ายข้อมูล" ], - "Learn more about what can be migrated. Learn more": [ - "เรียนรู้เพิ่มเติมเกี่ยวกับสิ่งที่สามารถย้ายข้อมูลได้ เรียนรู้เพิ่มเติม" - ], "Mail": [ "อีเมล" ], - "Migrate": [ - "ย้ายข้อมูล" - ], "Migrate from Google Workspace": [ "ย้ายข้อมูลจาก Google Workspace" ], @@ -2610,9 +2595,6 @@ "Organization does not have enough storage available": [ "องค์กรมีพื้นที่จัดเก็บไม่เพียงพอ" ], - "Organization settings": [ - "การตั้งค่าองค์กร" - ], "Required": [ "จำเป็น" ], @@ -2622,9 +2604,6 @@ "Select at least one user to start a migration": [ "เลือกผู้ใช้อย่างน้อยหนึ่งคนเพื่อเริ่มการย้ายข้อมูล" ], - "Select what you want to migrate, this will apply to all users whether they are created now or later. Migration will start after user accounts are created.": [ - "เลือกสิ่งที่คุณต้องการย้ายข้อมูล ซึ่งจะมีผลกับผู้ใช้ทุกคนไม่ว่าจะสร้างขึ้นตอนนี้หรือภายหลัง การย้ายข้อมูลจะเริ่มขึ้นหลังจากสร้างบัญชีผู้ใช้แล้ว" - ], "Set up": [ "ตั้งค่า" ], @@ -2640,18 +2619,12 @@ "Start migration": [ "เริ่มการย้ายข้อมูล" ], - "Transfer errors": [ - "ข้อผิดพลาดในการโอนย้าย" - ], "User": [ "ผู้ใช้" ], "Verify your domain": [ "ยืนยันโดเมนของคุณ" ], - "Verify your domain ownership": [ - "ยืนยันความเป็นเจ้าของโดเมนของคุณ" - ], "Verify your domain to start a migration": [ "ยืนยันโดเมนของคุณเพื่อเริ่มการย้ายข้อมูล" ], @@ -4521,12 +4494,6 @@ "${ DOCS_SHORT_APP_NAME } in ${ DRIVE_APP_NAME } allows you to work together with others in a secure, encrypted environment.": [ "${ DOCS_SHORT_APP_NAME } ใน ${ DRIVE_APP_NAME } ช่วยให้ทำงานร่วมกับผู้อื่นได้ในสภาพแวดล้อมที่ปลอดภัยและเข้ารหัส" ], - "${ MAIL_APP_NAME } is not your default mail application.": [ - "${ MAIL_APP_NAME } ไม่ใช่แอปพลิเคชันอีเมลเริ่มต้นของคุณ" - ], - "${ MAIL_APP_NAME } is your default mail application.": [ - "${ MAIL_APP_NAME } เป็นแอปพลิเคชันอีเมลเริ่มต้นของคุณ" - ], "A checked box means the feature is disabled.": [ "กล่องที่ทำเครื่องหมายหมายถึงคุณสมบัตินั้นถูกปิดใช้งาน" ], @@ -4629,9 +4596,6 @@ "No one in your organization can connect to shared servers.": [ "ไม่มีใครในองค์กรที่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ที่แชร์ได้" ], - "Send a code to your recovery email or phone": [ - "ส่งรหัสไปยังอีเมลหรือโทรศัพท์สำหรับการกู้คืนของคุณ" - ], "Set up accounts for all users and invite them to join ${ BRAND_NAME }.": [ "ตั้งค่าบัญชีสำหรับผู้ใช้ทุกคนและเชิญให้เข้าร่วม ${ BRAND_NAME }" ], @@ -5757,9 +5721,6 @@ "Less than a minute left": [ "เหลือเวลาน้อยกว่าหนึ่งนาที" ], - "None": [ - "ไม่มี" - ], "Only ": [ "เพียง " ], @@ -6283,9 +6244,6 @@ "Please try again in a few moments.": [ "โปรดลองใหม่อีกครั้งในอีกสักครู่" ], - "Please upgrade to a business plan with more than 1 user to get multi-user support": [ - "โปรดอัปเกรดเป็นแผนธุรกิจที่มีผู้ใช้มากกว่า 1 คนเพื่อใช้งานการรับรองผู้ใช้หลายคน" - ], "Please upgrade to a business plan with more than 1 user to manage multiple users.": [ "โปรดอัปเกรดเป็นแผนธุรกิจที่มีผู้ใช้มากกว่า 1 คนเพื่อจัดการผู้ใช้หลายคน" ], @@ -7552,11 +7510,6 @@ "${ BRAND_NAME } ความเป็นส่วนตัวตามค่าเริ่มต้น" ] }, - "Force upgrade safety review": { - "I understand that I will no longer be able to sign in to older versions of ${ BRAND_NAME } mobile apps.": [ - "ฉันเข้าใจว่าฉันจะไม่สามารถเข้าสู่ระบบแอปมือถือ ${ BRAND_NAME } เวอร์ชันเก่าได้อีกต่อไป" - ] - }, "Form heading": { "Enter your email address": [ "ป้อนที่อยู่อีเมล" @@ -7896,9 +7849,6 @@ "Contact us": [ "ติดต่อเรา" ], - "Downloads": [ - "ดาวน์โหลด" - ], "Enjoying ${ planName }?": [ "ชอบ ${ planName } หรือไม่?" ], @@ -8629,9 +8579,6 @@ "Add your name and logo to create a more personalized experience for your organization.": [ "เพิ่มชื่อและโลโก้เพื่อสร้างประสบการณ์ที่เป็นส่วนตัวยิ่งขึ้นสำหรับองค์กร" ], - "Adding ${ addedServerCount } gateway server": [ - "กำลังเพิ่มเซิร์ฟเวอร์เกตเวย์ ${ addedServerCount } เครื่อง" - ], "Adding an external email address will disable end-to-end encryption for all email communication within that group. Do you want to proceed?": [ "การเพิ่มที่อยู่อีเมลภายนอกจะปิดใช้งานการเข้ารหัสลับจากต้นทางถึงปลายทางสำหรับการสื่อสารทางอีเมลทั้งหมดภายในกลุ่มนั้น ต้องการดำเนินการต่อหรือไม่?" ], @@ -8908,9 +8855,6 @@ "Change your password": [ "เปลี่ยนรหัสผ่าน" ], - "Check the status of imports and forwarding.": [ - "ตรวจสอบสถานะของการนำเข้าและการส่งต่อ" - ], "Choose a plan that works best for you.": [ "เลือกแผนที่เหมาะกับคุณที่สุด" ], @@ -8995,9 +8939,6 @@ "Create a label for the imported messages, a time range for this import, and the labels you would like to import.": [ "สร้างป้ายกำกับสำหรับข้อความที่นำเข้า ช่วงเวลาสำหรับการนำเข้านี้ และป้ายกำกับที่ต้องการนำเข้า" ], - "Create a secure cloud for ${ value } member": [ - "สร้างคลาวด์ที่ปลอดภัยสำหรับสมาชิก ${ value } คน" - ], "Create and manage sub-accounts and assign them email addresses on your custom domain.": [ "สร้างและจัดการบัญชีย่อยและกำหนดที่อยู่อีเมลของบัญชีย่อยบนโดเมนที่กำหนดเองของคุณ" ], @@ -11071,9 +11012,6 @@ "When disabled, this prevents remote images from loading without your knowledge.": [ "เมื่อปิดใช้งาน จะป้องกันไม่ให้โหลดรูปภาพระยะไกลโดยที่คุณไม่ทราบ" ], - "When enabled, we will check if ${ MAIL_APP_NAME } is your default mail application and notify you if it is not.": [ - "เมื่อเปิดใช้งาน จะตรวจสอบว่า ${ MAIL_APP_NAME } เป็นแอปพลิเคชันอีเมลเริ่มต้นของคุณหรือไม่ และแจ้งให้ทราบหากไม่ใช่" - ], "When enabling SAML for ${ appName } in your identity provider, you might be prompted to use the callback (ACS) URL and issuer ID. Just copy-paste the data below into your identity provider fields.": [ "เมื่อเปิดใช้งาน SAML สำหรับ ${ appName } ในผู้ให้บริการข้อมูลระบุตัวตน คุณอาจได้รับแจ้งให้ใช้ Callback (ACS) URL และ Issuer ID เพียงคัดลอกและวางข้อมูลด้านล่างลงในช่องข้อมูลของผู้ให้บริการข้อมูลระบุตัวตน" ], @@ -11194,9 +11132,6 @@ "You can edit this once to ensure the correct email address for verification.": [ "คุณสามารถแก้ไขได้หนึ่งครั้งเพื่อให้แน่ใจว่าที่อยู่อีเมลถูกต้องสำหรับการยืนยัน" ], - "You can enable the Photos section from the interface using the toggle below.": [ - "สามารถเปิดใช้งานส่วนรูปภาพได้จากอินเทอร์เฟซโดยใช้ปุ่มสลับด้านล่าง" - ], "You can enforce the password rules members of your organization will use when they create or reset the password to their ${ BRAND_NAME } Account.": [ "คุณสามารถบังคับใช้กฎรหัสผ่านที่สมาชิกในองค์กรของคุณจะใช้เมื่อพวกเขาสร้างหรือรีเซ็ตรหัสผ่านสำหรับบัญชี ${ BRAND_NAME } ของตน" ], @@ -15490,9 +15425,6 @@ "${ app } product updates": [ "การอัปเดตผลิตภัณฑ์ ${ app }" ], - "${ BRAND_NAME } for Business newsletter": [ - "จดหมายข่าว ${ BRAND_NAME } for Business" - ], "${ BRAND_NAME } important announcements": [ "ประกาศสำคัญจาก ${ BRAND_NAME }" ], @@ -15541,9 +15473,6 @@ "During your first month of using a ${ BRAND_NAME } product": [ "ในช่วงเดือนแรกของการใช้ผลิตภัณฑ์ ${ BRAND_NAME }" ], - "Email subscriptions": [ - "สมัครสมาชิกอีเมล" - ], "In-app notifications": [ "การแจ้งเตือนในแอป" ], @@ -16603,15 +16532,9 @@ "per month, billed every two years": [ "ต่อเดือน เรียกเก็บเงินทุกสองปี" ], - "Preparing your Recovery Kit": [ - "กำลังเตรียมชุดกู้คืนของคุณ" - ], "Protected by Swiss privacy laws": [ "ได้รับการคุ้มครองตามกฎหมายความเป็นส่วนตัวของประเทศสวิตเซอร์แลนด์" ], - "Save your recovery kit to continue": [ - "บันทึกชุดกู้คืนของคุณเพื่อดำเนินการต่อ" - ], "Secure vault sharing": [ "การแชร์ห้องนิรภัยที่ปลอดภัย" ], @@ -17386,21 +17309,6 @@ "อัปเกรดเป็น ${ upsellPlanTitle }" ] }, - "PQC account key generation": { - "Couldn’t generate keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\n${ settingsLink } and select 'Generate key' for your account and for each address.": [ - "ไม่สามารถสร้างคีย์ได้ หากต้องการเปิดใช้งานการป้องกันแบบโพสต์ควอนตัม คุณจะต้องสร้างคีย์การเข้ารหัสลับใหม่ด้วยตนเอง\n\n${ settingsLink } และเลือก 'สร้างคีย์' สำหรับบัญชีของคุณและสำหรับแต่ละที่อยู่" - ] - }, - "PQC adress key generation": { - "Couldn’t generate address keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\nGo to ${ settingsLink } and select 'Generate key' for each address.": [ - "ไม่สามารถสร้างคีย์ที่อยู่ได้ หากต้องการเปิดใช้งานการป้องกันแบบโพสต์ควอนตัม คุณจะต้องสร้างคีย์การเข้ารหัสลับใหม่ด้วยตนเอง\n\nไปที่ ${ settingsLink } แล้วเลือก 'สร้างคีย์' สำหรับแต่ละที่อยู่" - ] - }, - "PQC compatibility warning": { - "**You must update all ${ BRAND_NAME } mobile apps**: your new keys won't work on older app versions.": [ - "**คุณต้องอัปเดตแอปมือถือ ${ BRAND_NAME } ทั้งหมด**: คีย์ใหม่ของคุณจะไม่สามารถใช้งานได้กับแอปเวอร์ชันเก่า" - ] - }, "PQC key generation": { "This will generate new quantum-resistant encryption keys for your account.": [ "การดำเนินการนี้จะสร้างคีย์การเข้ารหัสลับใหม่ที่ต้านทานควอนตัมสำหรับบัญชีของคุณ" @@ -17620,15 +17528,9 @@ ], "Or ${ downloadRecoveryKitSwitchButton } instead.": [ "หรือ ${ downloadRecoveryKitSwitchButton } แทน" - ], - "Your **Recovery Kit** lets you restore your ${ BRAND_NAME } Account if you’re locked out.": [ - "**ชุดเครื่องมือกู้คืน**ช่วยให้คุณกู้คืนบัญชี ${ BRAND_NAME } ได้หากถูกล็อก" ] }, "RecoveryPhrase: Title": { - "Save your Recovery Kit": [ - "บันทึกชุดเครื่องมือกู้คืนของคุณ" - ], "Save your recovery phrase": [ "บันทึกวลีกู้คืนของคุณ" ] @@ -18015,9 +17917,6 @@ "Back to Safety Review": [ "กลับไปที่การตรวจสอบความปลอดภัย" ], - "Because you reset your password, your current Recovery Kit can only be used to recover the data created before your password reset.": [ - "เนื่องจากมีการรีเซ็ตรหัสผ่าน ชุดกู้คืนปัจจุบันจะสามารถใช้กู้คืนข้อมูลที่สร้างขึ้นก่อนการรีเซ็ตรหัสผ่านเท่านั้น" - ], "Can be used to regain access to your account and data": [ "สามารถใช้เพื่อเข้าถึงบัญชีและข้อมูลของคุณได้อีกครั้ง" ], @@ -18045,9 +17944,6 @@ "Download ${ size }": [ "ดาวน์โหลด ${ size }" ], - "Download your Recovery Kit": [ - "ดาวน์โหลดชุดกู้คืนของคุณ" - ], "Email address": [ "ที่อยู่อีเมล" ], @@ -18060,18 +17956,12 @@ "Enable recovery by phone": [ "เปิดใช้งานการกู้คืนทางโทรศัพท์" ], - "I understand that I will not be able to recover currently locked data with this Recovery Kit": [ - "ฉันเข้าใจว่าจะไม่สามารถกู้คืนข้อมูลที่ถูกล็อกในปัจจุบันด้วยชุดกู้คืนนี้" - ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in on this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "หากคุณลืมรหัสผ่าน ${ BRAND_NAME } และต้องการรีเซ็ต ครั้งถัดไปที่คุณเข้าสู่ระบบบนอุปกรณ์นี้โดยใช้รหัสผ่านใหม่ การเข้าถึงบัญชี ${ BRAND_NAME } ของคุณอย่างเต็มรูปแบบจะได้รับการกู้คืน" ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "หากคุณลืมรหัสผ่าน ${ BRAND_NAME } และต้องการรีเซ็ต ครั้งถัดไปที่คุณเข้าสู่ระบบอุปกรณ์นี้โดยใช้รหัสผ่านใหม่ การเข้าถึงบัญชี ${ BRAND_NAME } ของคุณอย่างเต็มรูปแบบจะได้รับการกู้คืน" ], - "If you get locked out of your ${ BRAND_NAME } Account, your Recovery Kit will allow you to sign in and recover your data.": [ - "หากถูกล็อกออกจากบัญชี ${ BRAND_NAME } ชุดกู้คืนจะช่วยให้สามารถเข้าสู่ระบบและกู้คืนข้อมูลได้" - ], "If you lose your login details and need to reset your account, **it’s imperative** that you have both an **account recovery and data recovery method** in place, otherwise you might not be able to access any of your emails, contacts, files or passwords.": [ "หากทำรายละเอียดการเข้าสู่ระบบหายและจำเป็นต้องรีเซ็ตบัญชี **จำเป็นอย่างยิ่ง** ที่จะต้องมีทั้ง **วิธีการกู้คืนบัญชีและข้อมูล** มิฉะนั้นอาจไม่สามารถเข้าถึงอีเมล รายชื่อติดต่อ ไฟล์ หรือรหัสผ่านใดๆ ได้" ], @@ -18114,9 +18004,6 @@ "Take action to secure your account": [ "ดำเนินการเพื่อรักษาความปลอดภัยบัญชีของคุณ" ], - "There was an error generating your Recovery Kit": [ - "เกิดข้อผิดพลาดในการสร้างชุดกู้คืนของคุณ" - ], "There was an error verifying your email": [ "เกิดข้อผิดพลาดในการยืนยันอีเมลของคุณ" ], @@ -18144,12 +18031,6 @@ "to recover your account if you're ever locked out": [ "เพื่อกู้คืนบัญชีของคุณหากคุณถูกล็อกไม่ให้เข้าใช้งาน" ], - "Update your Recovery Kit": [ - "อัปเดตชุดกู้คืนของคุณ" - ], - "Update your Recovery Kit?": [ - "อัปเดตชุดกู้คืนหรือไม่?" - ], "Verify": [ "ยืนยัน" ], @@ -18165,9 +18046,6 @@ "Verify your recovery phone number": [ "ยืนยันหมายเลขโทรศัพท์การกู้คืนของคุณ" ], - "We encountered an error while generating your Recovery Kit. Please try again later, or contact support if the issue continues.": [ - "พบข้อผิดพลาดขณะสร้างชุดกู้คืนของคุณ โปรดลองอีกครั้งในภายหลัง หรือติดต่อฝ่ายสนับสนุนหากปัญหายังคงอยู่" - ], "We encountered an error while verifying your email. Please try again later, or contact support if the issue continues.": [ "เราพบข้อผิดพลาดขณะยืนยันอีเมลของคุณ โปรดลองอีกครั้งในภายหลัง หรือติดต่อฝ่ายสนับสนุนหากปัญหายังคงอยู่" ], @@ -18189,9 +18067,6 @@ "You can disable this at any time.": [ "คุณสามารถปิดใช้งานสิ่งนี้ได้ตลอดเวลา" ], - "You can use the recovery phrase in this Recovery Kit to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ - "สามารถใช้วลีกู้คืนในชุดกู้คืนนี้เพื่อกู้คืนบัญชีได้อย่างสมบูรณ์เมื่อรีเซ็ตรหัสผ่าน โปรดตรวจสอบให้แน่ใจว่าเก็บรักษาไว้ในที่ปลอดภัย" - ], "You can use your email to regain access to your account if you forget your password.": [ "คุณสามารถใช้อีเมลเพื่อกู้คืนสิทธิ์การเข้าถึงบัญชีได้หากลืมรหัสผ่าน" ], @@ -18201,9 +18076,6 @@ "You can use your recovery phone to regain access to your account if you forget your password.": [ "คุณสามารถใช้โทรศัพท์การกู้คืนของคุณเพื่อเข้าถึงบัญชีของคุณได้อีกครั้งหากคุณลืมรหัสผ่าน" ], - "You have previously downloaded a Recovery Kit. Downloading a new one will **deactivate the old one**.": [ - "คุณดาวน์โหลดชุดกู้คืนไว้ก่อนหน้านี้แล้ว การดาวน์โหลดชุดใหม่จะ **ปิดการใช้งานชุดเก่า**" - ], "You have recommended actions to safeguard your account further.": [ "คุณมีการดำเนินการที่แนะนำเพื่อปกป้องบัญชีของคุณเพิ่มเติม" ], @@ -18267,12 +18139,6 @@ "Your recovery email is set": [ "ตั้งค่าอีเมลการกู้คืนของคุณแล้ว" ], - "Your Recovery Kit": [ - "ชุดกู้คืนของคุณ" - ], - "Your Recovery Kit is set": [ - "ตั้งค่าชุดกู้คืนแล้ว" - ], "Your recovery methods": [ "วิธีการกู้คืนของคุณ" ], @@ -18803,14 +18669,6 @@ "คำขอรีเซ็ตรหัสผ่าน" ] }, - "Setting": { - "Get updates about comments via email": [ - "รับการอัปเดตเกี่ยวกับความคิดเห็นทางอีเมล" - ], - "Include document name in email notifications": [ - "รวมชื่อเอกสารในการแจ้งเตือนทางอีเมล" - ] - }, "Settings description": { "Keep your inbox organized with folders and labels. ${ learnMoreLink }": [ "จัดระเบียบกล่องขาเข้าด้วยโฟลเดอร์และป้ายกำกับ ${ learnMoreLink }" @@ -20607,9 +20465,6 @@ "Organization logo updated": [ "อัปเดตโลโก้องค์กรแล้ว" ], - "Organization name set": [ - "ตั้งชื่อองค์กรแล้ว" - ], "Organization name updated": [ "อัปเดตชื่อองค์กรแล้ว" ], @@ -21248,9 +21103,6 @@ "Change second password": [ "เปลี่ยนรหัสผ่านที่สอง" ], - "Check your default mail application": [ - "ตรวจสอบแอปพลิเคชั่นเมลค่าเริ่มต้น" - ], "Choose an account": [ "เลือกบัญชี" ], @@ -21275,18 +21127,12 @@ "Confirm": [ "ยืนยัน" ], - "Confirm address": [ - "ยืนยันที่อยู่" - ], "Confirm downgrade": [ "ยืนยันการดาวน์เกรด" ], "Confirm loss of ${ BRAND_NAME } bonuses": [ "ยืนยันการสูญเสียโบนัส ${ BRAND_NAME }" ], - "Confirm phone number": [ - "ยืนยันหมายเลขโทรศัพท์" - ], "Connect ${ name }": [ "เชื่อมต่อ ${ name }" ], @@ -21665,6 +21511,9 @@ "Feature access": [ "การเข้าถึงคุณสมบัติ" ], + "Fewer distractions, more focus": [ + "สิ่งรบกวนน้อยลง โฟกัสได้มากขึ้น" + ], "Filter for more focus": [ "ตัวกรองเพื่อการโฟกัสที่ดียิ่งขึ้น" ], @@ -22028,9 +21877,6 @@ "Phone": [ "โทรศัพท์" ], - "Photos": [ - "รูปภาพ" - ], "Pin the extension": [ "ปักหมุดส่วนขยาย" ], @@ -22292,6 +22138,9 @@ "Snooze:": [ "ปิดเสียงเตือนชั่วคราว:" ], + "Something went wrong": [ + "เกิดข้อผิดพลาดบางอย่าง" + ], "Sort folders alphabetically": [ "เรียงแฟ้มตามตัวอักษร" ], @@ -22844,9 +22693,6 @@ "This feature is only available on Beta": [ "คุณสมบัตินี้ใช้งานได้เฉพาะในเวอร์ชันเบต้าเท่านั้น" ], - "This is the default key used by other ${ MAIL_APP_NAME } users on older mobile apps to encrypt data they send to you": [ - "นี่คือคีย์เริ่มต้นที่ผู้ใช้ ${ MAIL_APP_NAME } คนอื่นใช้บนแอปมือถือรุ่นเก่าเพื่อเข้ารหัสข้อมูลที่ส่งถึงคุณ" - ], "This is the default key used by other ${ MAIL_APP_NAME } users to encrypt data they send to you": [ "นี่คือคีย์ค่าเริ่มต้นที่ผู้ใช้ ${ MAIL_APP_NAME } รายอื่นใช้เพื่อเข้ารหัสข้อมูลที่ส่งถึงคุณ" ], @@ -23598,12 +23444,6 @@ "${ BRAND_NAME } will transfer as much data as possible, starting with your most recent messages.": [ "${ BRAND_NAME } จะถ่ายโอนข้อมูลให้มากที่สุดเท่าที่จะทำได้ โดยเริ่มจากข้อความล่าสุด" ], - "Are you sure you want to delete the phone number?": [ - "คุณแน่ใจหรือไม่ว่าต้องการลบหมายเลขโทรศัพท์นี้?" - ], - "Are you sure you want to delete this address?": [ - "คุณแน่ใจหรือว่าต้องการลบที่อยู่นี้?" - ], "By deleting this address, you will no longer be able to receive daily email notifications.": [ "จะไม่สามารถรับการแจ้งเตือนอีเมลรายวันของคุณได้อีกต่อไป หากคุณลบที่อยู่นี้" ], @@ -23613,9 +23453,6 @@ "By deleting this address, you will no longer be able to recover your account.": [ "จะไม่สามารถกู้คือบัญชีของคุณได้อีกต่อไป หากคุณลบที่อยู่นี้" ], - "By deleting this phone number, you will no longer be able to recover your account.": [ - "จะไม่สามารถกู้คือบัญชีของคุณได้อีกต่อไป หากคุณลบหมายเลขโทรศัพท์นี้" - ], "If you cancel this import, you won't be able to resume it. ${ BRAND_NAME } saved all progress in your account. Cancel anyway?": [ "หากคุณยกเลิกการนำเข้านี้ คุณจะไม่สามารถดำเนินการต่อได้ ${ BRAND_NAME } บันทึกความคืบหน้าทั้งหมดไว้ในบัญชีของคุณแล้ว ต้องการยกเลิกหรือไม่?" ], diff --git a/applications/account/locales/tr_TR.json b/applications/account/locales/tr_TR.json index a577904631d..bd48ff404b2 100644 --- a/applications/account/locales/tr_TR.json +++ b/applications/account/locales/tr_TR.json @@ -90,6 +90,9 @@ "Add": [ "Ekle" ], + "Add ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }": [ + "${ BRAND_NAME } ${ PASS_SHORT_APP_NAME } ekle" + ], "Add ${ BRAND_NAME } Account": [ "${ BRAND_NAME } hesabı ekle" ], @@ -162,6 +165,9 @@ "Add user": [ "Kullanıcı ekle" ], + "Added ${ memberName } as group owner": [ + "${ memberName } grup sahibi olarak eklendi" + ], "Align center": [ "Ortaya hizala" ], @@ -213,6 +219,9 @@ "Back to sign in": [ "Oturum açmaya dön" ], + "Back to sign-in": [ + "Oturum açmaya dön" + ], "Block": [ "Engelle" ], @@ -265,7 +274,7 @@ "İstek yapın" ], "Claim offer": [ - "Teklifi al" + "Teklifi isteyin" ], "Claim this address": [ "Bu adresi al" @@ -309,6 +318,9 @@ "Confirm": [ "Onayla" ], + "Confirm email": [ + "E-posta adresini onaylayın" + ], "Confirm opening of link ${ linkToShow }": [ "${ linkToShow } bağlantısını açmayı onaylayın" ], @@ -324,20 +336,20 @@ "Connect Gmail address": [ "Gmail adresini bağlayın" ], - "Connect to Gmail": [ - "Gmail bağlantısı kur" - ], "Connect to video conferencing": [ "Görüntülü görüşmeye bağlanın" ], "Connect your ${ BRAND_NAME } Account": [ "${ BRAND_NAME } hesabınızı bağlayın" ], + "Connect your email": [ + "E-postanızı bağlayın" + ], "Connected": [ "Bağlı" ], "Contact sales": [ - "Satış departmanıyla iletişime geçin" + "Satış ekibiyle görüşün" ], "Contact support": [ "Destek ekibimizle görüşün" @@ -369,6 +381,9 @@ "Continue with ${ nameToDisplay } ${ maybeEmailInBrackets }": [ "${ nameToDisplay } ${ maybeEmailInBrackets } ile ilerle" ], + "Continue with Free": [ + "Free kullanmayı sürdür" + ], "Continue with Google": [ "Google ile ilerle" ], @@ -444,6 +459,9 @@ "Create organization": [ "Kuruluş oluştur" ], + "Create recovery phrase": [ + "Kurtarma ifadesi oluştur" + ], "Create users": [ "Kullanıcılar ekle" ], @@ -516,8 +534,8 @@ "Delete record": [ "Kaydı sil" ], - "Delete token ${ token.Account }": [ - "${ token.Account } kodunu sil" + "Delete token ${ tokens[0].Account }": [ + "${ tokens[0].Account } kodunu sil" ], "Delete token “${ token.Name }”": [ "“${ token.Name }” kodunu sil" @@ -558,6 +576,9 @@ "Disable categories": [ "Kategorileri kullanımdan kaldır" ], + "Disable category": [ + "Kategoriyi kullanımdan kaldır" + ], "Disable recovery phrase": [ "Kurtarma ifadesini kapat" ], @@ -708,6 +729,9 @@ "Enable ${ darkWebMonitoring }": [ "${ darkWebMonitoring } özelliğini aç" ], + "Enable category": [ + "Kategoriyi kullanıma al" + ], "enable desktop notifications": [ "bilgisayar bildirimlerini açmak" ], @@ -759,6 +783,9 @@ "Filters are being applied. This might take a few minutes.": [ "Süzgeçler uygulanıyor. Bu işlem bir kaç dakika alabilir." ], + "Finish": [ + "Tamamla" + ], "Fit to window": [ "Pencereye sığdır" ], @@ -777,6 +804,9 @@ "Generate key": [ "Anahtar oluştur" ], + "Generate missing keys": [ + "Eksik anahtarları oluştur" + ], "Generate new phrase": [ "Yeni ifade oluştur" ], @@ -879,6 +909,9 @@ "Go to ${ planOrAppName }": [ "${ planOrAppName } uygulamasına git" ], + "Go to domain provider": [ + "Etki alanı hizmeti sağlayıcısına git" + ], "Go to label": [ "Etikete git" ], @@ -1198,7 +1231,7 @@ "Anahtarları yeniden kullanıma al" ], "Read the story": [ - "Hikayeyi oku" + "Öykümüzü okuyun" ], "Reconnect": [ "Yeniden bağlan" @@ -1275,6 +1308,9 @@ "Remove this notification": [ "Bu bildirimi kaldır" ], + "Removed ${ memberName } as group owner": [ + "${ memberName } grup sahipliği yetkisi kaldırıldı" + ], "Rename": [ "Yeniden adlandır" ], @@ -1356,12 +1392,18 @@ "Save": [ "Kaydet" ], + "Save & exit": [ + "Kaydet ve çık" + ], "Save address": [ "Adresi kaydet" ], "Save and continue": [ "Kaydet ve ilerle" ], + "Save and verify": [ + "Kaydet ve doğrula" + ], "Save changes": [ "Değişiklikleri kaydet" ], @@ -1383,6 +1425,9 @@ "Search settings": [ "Ayar arayın" ], + "Secure account": [ + "Hesabı koruyun" + ], "See DNS TXT record": [ "DNS TXT kaydını görüntüle" ], @@ -1606,7 +1651,7 @@ "Hesap değiştirin ya da ekleyin" ], "Switch to free plan": [ - "Free tarifeye geç" + "Free tarifesine geçin" ], "Take a tour": [ "Keşfedin" @@ -1773,6 +1818,9 @@ "View recovery settings": [ "Kurtarma ayarlarını görüntüle" ], + "View recovery setup details": [ + "Kurtarma kurulumunun ayrıntılarını görüntüle" + ], "Void": [ "Geçersiz" ], @@ -1782,6 +1830,9 @@ "Void all recovery files?": [ "Tüm kurtarma dosyaları geçersiz kılınsın mı?" ], + "Watch the interview": [ + "Röportajı izleyin" + ], "Welcome": [ "Hoş geldiniz" ], @@ -2043,45 +2094,42 @@ ] }, "Admin roles onboarding": { + "2 new admin roles": [ + "2 yeni yönetici rolü" + ], "3 new admin roles": [ "3 yeni yönetici rolü" ], - "Admin roles": [ - "Yönetici rolleri" - ], "Configure security policies, data retention, and VPN infrastructure, and manage audit logs.": [ - "Güvenlik ilkelerini, veri saklama kurallarını ve VPN altyapısını yapılandırın ve denetim günlüklerini yönetin." + "Güvenlik ilkelerini, verileri tutma kurallarını, VPN altyapısını yapılandırın ve denetim günlüklerini yönetin." ], "Delegate management by assigning specific admin roles. Give each admin only the access they need. This follows the principle of least privilege, protecting your organization from compromised accounts and accidental errors.": [ - "Belirli yönetici rolleri atayarak yönetimi delege edin. Her yöneticiye yalnızca ihtiyaç duyduğu erişim yetkisini verin. Bu en az ayrıcalık ilkesini izleyerek kuruluşunuzu ele geçirilmiş hesaplardan ve kazara yapılan hatalardan korur." + "Belirli yönetici rolleri atayarak yönetimi paylaşın. Her yöneticiye yalnızca gerek duyduğu erişim yetkisini verin. Böylece en az yetki ilkesi izlenerek, kuruluşunuz hesapların ele geçirilmesinden ve yanlışlıkla yapılan hatalardan korunur." + ], + "Delegate management for many users at once. Assign specific admin roles to groups for automatic permissions. This follows the principle of least privilege to save time on onboarding and offboarding while reducing errors.": [ + "Aynı anda çok sayıda kullanıcıya yetki verin. Otomatik izin yönetimi için gruplara belirli yönetici rolleri atayın. Bu yöntemde işe başlama ve işten ayrılma süreçlerinde zaman kazanırken sorunları azaltmak için en az yetki ilkesini temel alınır." ], "Delegate management with the appropriate admin role.": [ "Yönetimi uygun yönetici rolüne devredin." ], "Manage all users, groups, storage, security, billing, audit logs, and system configurations.": [ - "Tüm kullanıcıları, grupları, depolama alanını, güvenliği, faturalandırmayı, denetim günlüklerini ve sistem yapılandırmalarını yönetin." + "Tüm kullanıcıları, grupları, depolama alanını, güvenliği, faturalamayı, denetim günlüklerini ve sistem yapılandırmalarını yönetin." ], "Manage users, groups, and storage for all members, assign roles, and allocate licenses.": [ - "Tüm üyeler için kullanıcıları, grupları ve depolama alanını yönetin, roller atayın ve lisansları tahsis edin." + "Tüm üyeler için kullanıcıları, grupları ve depolama alanını yönetin, rolleri ve lisansları atayın." ], "New: Control admin access for individual users": [ - "Yeni: Kullanıcı bazlı yönetici erişimi kontrolü" + "Yeni: Bireysel kullanıcılar için yönetici erişimi denetimi" ], - "Organization admin": [ - "Kuruluş yöneticisi" + "New: Control admin access for many users at once": [ + "Yeni: Birden fazla kullanıcının yönetici erişimini aynı anda denetleyin" ], "Organization admin:": [ "Kuruluş yöneticisi:" ], - "Security admin": [ - "Güvenlik yöneticisi" - ], "Security admin:": [ "Güvenlik yöneticisi:" ], - "User admin": [ - "Kullanıcı yöneticisi" - ], "User admin:": [ "Kullanıcı yöneticisi:" ] @@ -2167,7 +2215,7 @@ "Güvenli çevrim içi belgeler" ], "Secure online sheets": [ - "Güvenli çevrim içi hesap tabloları" + "Güvenli çevrim içi elektronik tablolar" ] }, "Apps dropdown": { @@ -2312,6 +2360,11 @@ "Ücretsiz deneme süreniz ${ timeRemaining } sonra bitecek" ] }, + "Badge": { + "Save ${ discountRate }%": [ + "%${ discountRate } indirim" + ] + }, "Badge for domain": { "Disabled": [ "Kullanım dışı" @@ -2844,15 +2897,66 @@ "${ BRAND_NAME } Migration Assistant": [ "${ BRAND_NAME } Migration Assistant" ], - "Add a custom domain": [ - "Bir özel etki alanı ekleyin" + "${ migratedCount } of ${ providerUsers.length }": [ + "${ migratedCount } / ${ providerUsers.length }" + ], + "**p=none**: do not quarantine or reject unauthorized emails. Usually, people only use this policy to troubleshoot or test.": [ + "**p=none**: Yetkisiz e-postaları karantinaya almaz veya reddetmez. İnsanlar genellikle bu ilkeyi yalnızca sorun gidermek veya denemeler yapmak için kullanılır." + ], + "**p=quarantine**: asking the recipient platforms to mark the unauthorized emails as spam or quarantine them.": [ + "**p=karantina**: Alıcı platformlardan yetkisiz e-postaları istenmeyen olarak işaretlemelerini veya karantinaya almalarını ister." + ], + "**p=reject**: asking the recipient platforms to reject the unauthorized emails.": [ + "**p=reject**: Alıcı platformlardan yetkisiz e-postaları reddetmelerini ister." + ], + "Account connected": [ + "Hesap bağlantısı kuruldu" + ], + "Account disconnected": [ + "Hesap bağlantısı kesildi" + ], + "Activated": [ + "Etkinleştirildi" + ], + "Activation link": [ + "Etkinleştirme bağlantısı" + ], + "Activation link copied to clipboard": [ + "Etkinleştirme bağlantısı panoya kopyalandı" + ], + "Add a domain": [ + "Bir etki alanı ekleyin" + ], + "Add domain": [ + "Etki alanı ekle" + ], + "Add users": [ + "Kullanıcı ekle" + ], + "Add users and configure your domain manually for sending and receiving mail. Ideal for small teams starting from a clean slate.": [ + "Kullanıcıları ekleyin ve e-posta gönderip almak için etki alanınızı el ile yapılandırın. Sıfırdan başlayan küçük ekipler için idealdir." + ], + "Address is already used by a user outside of your organization. Please contact customer support to resolve this": [ + "Bu adres kuruluşunuz dışındaki bir kullanıcı tarafından kullanılıyor. Bu sorunu çözmek için lütfen müşteri destek ekibimiz ile görüşün" + ], + "All": [ + "Tümü" + ], + "An unknown error occurred": [ + "Bilinmeyen bir sorun çıktı" + ], + "Are you sure you want to proceed? Users who haven't claimed their account before the migration is finalized will need to request a password reset from their ${ BRAND_NAME } organization administrator.": [ + "İlerlemek istediğinize emin misiniz? Aktarım işlemi tamamlanmadan önce hesaplarını doğrulamamış olan kullanıcıların ${ BRAND_NAME } kuruluş yöneticisinden parola sıfırlama isteğinde bulunmaları gerekecek." ], - "App installed": [ - "Uygulama kuruldu" + "As soon as the accounts are created, you can share the activation link so users can claim their ${ BRAND_NAME } account.": [ + "Hesaplar açıldığı anda kullanıcıların ${ BRAND_NAME } hesaplarını kullanabilmeleri için etkinleştirme bağlantısını paylaşabilirsiniz." ], "Authenticate": [ "Kimliği doğrulayın" ], + "Authenticate to Google Workspace": [ + "Google Workspace ile kimliği doğrulayın" + ], "Authenticate your Google Workspace account": [ "Google Workspace hesabınızı doğrulayın" ], @@ -2862,23 +2966,68 @@ "Change": [ "Değiştir" ], + "Choose how you want to bring your team and email setup to ${ BRAND_NAME }.": [ + "Ekibinizi ve e-posta ayarlarınızı ${ BRAND_NAME } üzerine nasıl aktarmak istediğinizi seçin." + ], + "Choose what to migrate. Your choice will apply to all users. The migration will start after you decide which users to copy.": [ + "Aktarılacak ögeleri seçin. Seçiminiz tüm kullanıcılar için geçerli olacak. Hangi kullanıcıların kopyalanacağına karar verdikten sonra aktarım işlemi başlayacak." + ], "Completed": [ "Tamamlandı" ], "Configure": [ "Yapılandırma" ], + "Configure domain": [ + "Etki alanını yapılandırın" + ], "Configure migration": [ "Aktarımı yapılandırın" ], + "Configure your domain": [ + "Etki alanınızı yapılandırın" + ], "Contacts": [ "Kişiler" ], + "Continue migration": [ + "Aktarımı sürdür" + ], + "Copy activation link": [ + "Etkinleştirme bağlantısını kopyala" + ], + "Copy activation link to clipboard": [ + "Etkinleştirme bağlantısını panoya kopyala" + ], + "Copy the below code and paste it in the DNS section of your domain host. You can find an example and some helpful tips ${ hereHref }.": [ + "Aşağıdaki kodu kopyalayıp etki alanı barındırıcınızın DNS bölümüne yapıştırın. Bir örnek ve bazı yararlı ipuçlarını ${ hereHref } adresinde bulabilirsiniz." + ], + "Creating accounts": [ + "Hesaplar oluşturuluyor" + ], + "DKIM adds a digital signature to each email so recipients can verify that the message really came from your domain and was not altered in transit. Without it, messages may be treated as less trustworthy.": [ + "DKIM her e-postaya bir dijital imza ekler. Böylece alıcılar iletinin gerçekten sizin etki alanınızdan geldiğini ve aktarım sırasında değiştirilmediğini doğrulayabilir. Bu imza olmadan iletiler daha az güvenilir olarak değerlendirilebilir." + ], + "DKIM records": [ + "DKIM kayıtları" + ], + "DMARC builds on SPF and DKIM by telling receiving servers how to handle messages that fail these checks. It helps protect your domain from impersonation and improves overall delivery reliability.": [ + "DMARC, SPF ve DKIM alıcı sunuculara bu denetimleri geçemeyen iletileri nasıl işleyeceklerini bildirir. Bunlar, etki alanınızın kimlik sahtekarlığından korunmasını sağlar ve genel gönderim güvenilirliğini artırır." + ], + "DMARC records": [ + "DMARC kayıtları" + ], + "Domain added": [ + "Etki alanı eklendi" + ], "Domain connected": [ "Etki alanı bağlandı" ], - "Domain ownership verified": [ - "Etki alanı sahipliği doğrulandı" + "Ensure that your emails reach the inbox, not the spam folder. Updating SPF will allow users to send from ${ BRAND_NAME } and Google simultaneously for the duration of the migration.": [ + "E-postalarınızın istenmeyen klasörüne değil gelen kutusuna ulaşmasını sağlayın. SPF verisini güncellemek aktarım sürecinde kullanıcıların hem ${ BRAND_NAME } hem de Google adreslerinden e-posta gönderebilmesini sağlar." + ], + "Errors": [ + "Hatalar" ], "Estimated size": [ "Öngörülen boyut" @@ -2886,15 +3035,39 @@ "Failed to load OAuth": [ "OAuth yüklenemedi" ], + "Finalize migration": [ + "Aktarım işlemini tamamla" + ], + "Finalize your migration": [ + "Aktarım işlemini tamamlayın" + ], + "Finalizing the migration means all your emails will be routed directly to ${ BRAND_NAME }. Users will stop receiving emails on their Google accounts and data will not be synchronized between ${ BRAND_NAME } and Google anymore.": [ + "Aktarım tamamlandığında tüm e-postalarınız doğrudan ${ BRAND_NAME } adresine yönlendirilir. Kullanıcılar artık Google hesaplarına e-posta almayacak ve veriler ${ BRAND_NAME } ile Google arasında eşitlenmeyecek." + ], + "Find out what can be migrated.": [ + "Nelerin aktarılabileceğini öğrenin." + ], "Finish setting up your business account": [ "Kuruluş hesabınızın kurulumunu tamamlayın" ], + "Go to Domain names": [ + "Etki alanı adlarına git" + ], "Google Marketplace app to copy data to ${ BRAND_NAME }": [ "Verileri ${ BRAND_NAME } üzerine kopyalamak için Google Marketplace uygulaması" ], + "Google Workspace account": [ + "Google Workspace hesabı" + ], + "Hang tight, we're setting up user accounts and will start importing user data shortly.": [ + "Biraz bekleyin. Kullanıcı hesapları oluşturuluyor ve kısa süre içinde kullanıcı verileri aktarılmaya başlanacak." + ], "Has errors": [ "Sorunlar çıktı" ], + "Import errors for ${ user.AdminSetName }": [ + "${ user.AdminSetName } için içe aktarma hataları" + ], "In progress": [ "İşleniyor" ], @@ -2904,14 +3077,20 @@ "Install migration app": [ "Aktarım uygulamasını kurun" ], - "Learn more about what can be migrated. Learn more": [ - "Nelerin aktarılabileceğini öğrenin. Ayrıntılı bilgi alın" + "Install Migration assistant": [ + "Aktarım yardımcısını kur" + ], + "Loading your organization data": [ + "Kuruluşunuzun verileri yükleniyor" ], "Mail": [ "E-posta" ], - "Migrate": [ - "Aktar" + "Managed via ${ registrar.name }": [ + "${ registrar.name } ile yönetiliyor" + ], + "Member address not found. Please contact customer support to resolve this": [ + "Üye adresi bulunamadı. Bu sorunu çözmek için müşteri destek ekibimizle görüşün" ], "Migrate from Google Workspace": [ "Google Workspace üzerinden aktar" @@ -2919,6 +3098,12 @@ "Migrate users": [ "Kullanıcıları aktar" ], + "Migrate users to ${ BRAND_NAME }": [ + "Kullanıcıları ${ BRAND_NAME } üzerine aktarın" + ], + "Migrated": [ + "Aktarıldı" + ], "Migration includes": [ "Şunlar aktarılır" ], @@ -2929,8 +3114,35 @@ "Migration status": [ "Aktarım durumu" ], - "Not started": [ - "Başlatılmamış" + "Missing organization private key": [ + "Kuruluşun kişisel anahtarı eksik" + ], + "Missing organization public key": [ + "Kuruluşun herkese açık anahtarı bulunamadı" + ], + "More details": [ + "Daha fazla bilgi" + ], + "Move your users, emails, and settings from Google Workspace automatically. We’ll guide you through connecting your account, verifying your domain, and migrating users securely.": [ + "Kullanıcılarınızı, e-postaları ve ayarları Google Workspace üzerinden otomatik olarak aktarın. Hesabınızı bağlamanız, etki alanınızı doğrulamanız ve kullanıcıları güvenli bir şekilde aktarmanız için size yol göstereceğiz." + ], + "No error details available. Please contact customer support for more information": [ + "Herhangi bir hata bilgisi yok. Ayrıntılı bilgi almak için müşteri destek ekibimizle görüşün" + ], + "No users to display": [ + "Görüntülenebilecek bir kullanıcı yok" + ], + "Not activated": [ + "Etkinleştirilmemiş" + ], + "Not confirmed": [ + "Onaylanmamış" + ], + "Once users have claimed their ${ BRAND_NAME } account, finalize the migration.": [ + "Kullanıcılar ${ BRAND_NAME } hesaplarını aldığında aktarım işlemini tamamlayın." + ], + "Once we have confirmed that emails are routed to ${ BRAND_NAME } the migration will be finalized. You will receive a confirmation email to let you know when this happens. This process can take up to 24 hours.": [ + "E-postaların ${ BRAND_NAME } adresine yönlendirildiğini doğruladığımızda aktarım tamamlanmış olacak. Bundan sonra size bilgi veren bir onay e-postası alacaksınız. Bu işlemin tamamlanması 24 saat kadar sürebilir." ], "Organization does not have enough seats available": [ "Kuruluşun yeterli koltuk sayısı yok" @@ -2938,8 +3150,20 @@ "Organization does not have enough storage available": [ "Kuruluşun yeterli depolama alanı yok" ], - "Organization settings": [ - "Kuruluş ayarları" + "Pending": [ + "Bekliyor" + ], + "Please add the following records in your DNS console of your domain provider:": [ + "Lütfen etki alanı sağlayıcınızın DNS panosuna şu kayıtları ekleyin:" + ], + "Please leave this window open until we're done creating all the users.": [ + "Tüm kullanıcılar oluşturulana kadar bu pencereyi açık bırakın." + ], + "Please select at least one product to migrate": [ + "Lütfen aktarılacak en az bir ürün seçin" + ], + "Refresh": [ + "Yenile" ], "Required": [ "Zorunlu" @@ -2950,8 +3174,8 @@ "Select at least one user to start a migration": [ "Bir aktarım başlatmak için en az bir kullanıcı seçin" ], - "Select what you want to migrate, this will apply to all users whether they are created now or later. Migration will start after user accounts are created.": [ - "Aktarmak istediğiniz ögeleri seçin. Bu ayar ister şimdi ister daha sonra oluşturulmuş olsun, tüm kullanıcılara uygulanır. Aktarım işlemi kullanıcı hesapları oluşturulduktan sonra başlayacaktır." + "Select users to migrate": [ + "Aktarılacak kullanıcıları seçin" ], "Set up": [ "Ayarla" @@ -2959,53 +3183,120 @@ "Set up billing information": [ "Fatura bilgilerini ayarlayın" ], + "Set up manually": [ + "El ile kurulum" + ], + "Set up secure sending (DKIM)": [ + "Güvenli gönderimi (DKIM) ayarlayın" + ], + "Set up secure sending (DMARC)": [ + "Güvenli gönderimi (DMARC) ayarlayın" + ], + "Set up secure sending (SPF)": [ + "Güvenli gönderimi (SPF) ayarla" + ], "Set up two-factor authentication": [ "İki adımlı doğrulamayı ayarla" ], "Settings": [ "Ayarlar" ], + "Share the activation link to users so they can claim their ${ BRAND_NAME } account.": [ + "Kullanıcıların ${ BRAND_NAME } hesaplarını alabilmeleri için onlarla etkinleştirme bağlantısını paylaşın." + ], "Sign in to Google Workspace": [ "Google Workspace oturumu açın" ], + "Size": [ + "Boyut" + ], + "Some accounts are not claimed": [ + "Bazı hesaplar sahiplenilmemiş" + ], + "SPF records": [ + "SPF kayıtları" + ], + "Start migrating": [ + "Aktarımı başlat" + ], "Start migration": [ "Aktarımı başlat" ], "Status": [ "Durum" ], + "The default setting is none. However, to improve your security we recommend setting this value to p=quarantine.": [ + "Varsayılan ayar: Yok. Ancak güvenliğinizi artırmak için bu değeri p=quarantine olarak ayarlamanızı öneririz." + ], + "The “p=” value specifies the action to take for emails that fail DMARC. Here are the available actions:": [ + "“p=“ değeri DMARC denetiminden geçemeyen e-postalar için yapılacak işlemi belirler. Yapılabilecek işlemler şunlardır:" + ], + "This migration has been completed": [ + "Aktarım tamamlandı" + ], "To migrate your organization’s data, you need to install the ${ BRAND_NAME } Migration Assistant app from the Google Workspace Marketplace. This will grant permission to ${ BRAND_NAME } to copy your data. After installing it, come back here to continue.": [ "Kuruluşunuzun verilerini aktarmak için Google Workspace Marketplace üzerinden ${ BRAND_NAME } Migration Assistant uygulamasını kurmalısınız. Bu işlem ${ BRAND_NAME } ile verilerinizi kopyalama izni verecek. Kurduktan sonra buraya dönerek ilerleyin." ], - "Transfer errors": [ - "Aktarım hataları" + "Update records for receiving": [ + "Almak için kayıtları güncelleyin" ], "User": [ "Kullanıcı" ], + "User needs to activate their account through the activation link shown above": [ + "Kullanıcının hesabını yukarıdaki etkinleştirme bağlantısı ile etkinleştirmesi gerekiyor" + ], + "User status": [ + "Kullanıcı durumu" + ], + "Users can use ${ BRAND_NAME } or Google simultaneously for the duration of the migration.": [ + "Kullanıcılar aktarım süreci boyunca aynı anda ${ BRAND_NAME } ve Google kullanabilir." + ], "Users migrated": [ "Kullanıcılar aktarıldı" ], + "Verified": [ + "Doğrulandı" + ], + "Verify domain ownership": [ + "Etki alanı sahipliğini doğrula" + ], "Verify installation": [ "Kurulumu doğrula" ], "Verify your domain": [ "Etki alanınızı doğrulayın" ], - "Verify your domain ownership": [ - "Etki alanı sahipliğinizi doğrulayın" - ], "Verify your domain to start a migration": [ "Bir aktarım başlatmak için etki alanınızı doğrulayın" ], + "We detected the primary domain linked to your Google Workspace account. Confirm it to continue setting up email for your ${ BRAND_NAME } organization.": [ + "Google Workspace hesabınızla ilişkilendirilmiş bir birincil etki alanı bulduk. ${ BRAND_NAME } kuruluşunuzun e-posta kurulumunu sürdürmek için bunu onaylayın." + ], "We were unable to verify the installation, please check that you have installed it in your Google Workspace account and try again.": [ "Kurulum doğrulanamadı. Lütfen Google Workspace hesabınız ile kurduğunuzdan emin olun ve yeniden deneyin." ], + "We're still checking the MX records with your domain provider.": [ + "Hala etki alanı hizmeti sağlayıcınızdaki MX kayıtlarını denetliyoruz." + ], + "We've noticed some users have not claimed their ${ BRAND_NAME } accounts.": [ + "Bazı kullanıcıların henüz ${ BRAND_NAME } hesaplarını almadıklarını fark ettik." + ], "What are you migrating?": [ "Neyi aktarıyorsunuz?" ], + "You": [ + "Siz" + ], "You need to grant the permission for ${ BRAND_NAME } to copy your data. After accepting permissions, come back here to continue.": [ "Verilerinizi kopyalaması için ${ BRAND_NAME } uygulamasına izin vermelisiniz. İzinleri verdikten sonra ilerlemek için buraya dönün." + ], + "You're all set!": [ + "Hazırsınız!" + ], + "Your current plan allows up to ${ maxMembers } user. To migrate additional users, add more seats to your subscription.": [ + "Geçerli tarifenizde en fazla ${ maxMembers } kullanıcı olabilir. Daha fazla kullanıcı aktarmak için aboneliğinize yeni koltuklar ekleyin.", + "Geçerli tarifenizde en fazla ${ maxMembers } kullanıcı olabilir. Daha fazla kullanıcı aktarmak için aboneliğinize yeni koltuklar ekleyin." ] }, "breadcrumb": { @@ -3082,7 +3373,7 @@ "Ödeme sorunu" ], "Sheets problem": [ - "Hesap tablosu sorunu" + "Çalışma sayfaları sorunu" ], "Sign in problem": [ "Oturum açma sorunu" @@ -3113,9 +3404,18 @@ ] }, "Button": { + "Add users manually": [ + "Kullanıcıları el ile ekle" + ], + "Cancel": [ + "İptal" + ], "Close": [ "Kapat" ], + "Configure your network": [ + "Ağınızı yapılandırın" + ], "Continue using ${ MAIL_APP_NAME }.": [ "${ MAIL_APP_NAME } kullanmayı sürdürün." ], @@ -3137,6 +3437,12 @@ "Got it": [ "Tamam" ], + "Invite your team": [ + "Ekibinizi davet edin" + ], + "Manage global VPN permissions": [ + "Genel VPN izinlerini ayarlayın" + ], "Maybe later": [ "Belki sonra" ], @@ -3146,12 +3452,21 @@ "Remind me later": [ "Daha sonra hatırlat" ], + "Secure your organization": [ + "Kuruluşunuzun güvenliğini sağlayın" + ], "Send": [ "Gönder" ], "Set up other features": [ "Diğer özellikleri ayarlayın" ], + "Set up SSO": [ + "Tek oturum açmayı kurun" + ], + "Sign in": [ + "Oturum aç" + ], "Take a tour": [ "Keşfedin" ] @@ -3455,7 +3770,7 @@ }, "collider_2025: feature": { "Access to advanced AI models": [ - "Gelişmiş yapay zeka modellerine erişim" + "Gelişmiş yapay zeka modellerine erişme" ], "Basic chat history": [ "Temel sohbet geçmişi" @@ -3491,7 +3806,7 @@ "Hızlı erişim için sınırsız sayıda sık kullanılan" ], "Upload and query multiple large files": [ - "Birden fazla büyük dosyayı yükleyip sorgulayın" + "Birden fazla büyük dosyayı yükleme ve sıraya alma" ], "Upload and query small files": [ "Küçük dosyaları yükleyin ve sorgulayın" @@ -3748,13 +4063,37 @@ }, "Confirm cancellation": { "Access is restored once usage is back within limits.": [ - "Kullanım limitler dahiline tekrar girdiğinde erişim yeniden sağlanır." + "Yeniden kullanım sınırlarına indiğinde yeniden erişme izni verilir." + ], + "Back up photos from your devices": [ + "Aygıtlarınızdaki fotoğrafları yedekleyemezsiniz" ], "Cancel subscription": [ "Aboneliği iptal et" ], + "Confirm cancellation": [ + "İptal işlemini onayla" + ], + "If you exceed free plan limits, you won't be able to:": [ + "Free tarifesinin sınırlarını aşarsanız şunları yapamazsınız:" + ], + "Keep current plan": [ + "Geçerli tarifede kal" + ], + "Manage your calendar": [ + "Takviminizi yönetemezsiniz" + ], + "Receive new emails": [ + "Yeni e-postaları alamazsınız" + ], + "Send emails with attachments": [ + "Ek dosyaları olan e-postalar gönderemezsiniz" + ], "Upload any new files": [ - "Yeni dosyaları yükle" + "Yeni dosyalar yükleyemezsiniz" + ], + "When your subscription ends on ${ endDate }, your account will switch to the Free plan. If your usage exceeds Free plan limits, some features may be temporarily unavailable.": [ + "Aboneliğiniz ${ endDate } tarihinde sona erdiğinde,hesabınız Free tarifesine geçirilecek. Kullanımınız Free tarifesinin sınırlarını aşarsa bazı özellikleri geçici olarak kullanamayabilirsiniz." ] }, "Confirm modal title": { @@ -4760,6 +5099,9 @@ "/month": [ "/ay" ], + "/user /month": [ + "/ kullanıcı /ay" + ], "/user per month": [ "/kullanıcı aylık" ] @@ -4926,6 +5268,9 @@ ] }, "Description": { + "${ BRAND_NAME }'s end-to-end encryption means only you can unlock your data. Set up recovery options now to ensure you never lose access.": [ + "${ BRAND_NAME } uçtan uca şifrelemesi, verilerinize yalnızca sizin erişebilmenizi sağlar. Erişimi asla kaybetmeyeceğinizden emin olmak için şimdi kurtarma seçeneklerini ayarlayın." + ], "${ DOCS_SHORT_APP_NAME } in ${ DRIVE_APP_NAME } allows you to work together with others in a secure, encrypted environment.": [ "${ DOCS_SHORT_APP_NAME }, ${ DRIVE_APP_NAME } ile diğer kişilerle güvenli, şifrelenmiş bir ortamda birlikte çalışın." ], @@ -4935,6 +5280,9 @@ "${ MAIL_APP_NAME } is your default mail application.": [ "${ MAIL_APP_NAME } varsayılan e-posta uygulamanız." ], + "${ MAIL_APP_NAME } keeps your business data secure and lets you send encrypted emails to anyone.": [ + "${ MAIL_APP_NAME } kurumsal verilerinizi güvende tutar ve herkese şifrelenmiş e-postalar göndermenizi sağlar." + ], "A checked box means the feature is disabled.": [ "Seçeneğin işaretlenmesi özelliğin kapatılmasını sağlar." ], @@ -4956,21 +5304,30 @@ "Automatically sort your incoming messages before they reach your inbox.": [ "Gelen iletilerinizi gelen kutunuza ulaşmadan önce otomatik olarak sıralayın." ], + "Available storage: ${ storageText }": [ + "Kullanılabilecek depolama alanı: ${ storageText }" + ], "Available with ${ title }": [ "${ title } ile kullanılabilir" ], "Block Google's ability to profile you. Gmail can't see what you do in ${ MAIL_APP_NAME }": [ "Google tarafından profilinizin çıkarılmasını engelleyin. Gmail ${ MAIL_APP_NAME } üzerinde yaptıklarınızı göremez" ], - "Bring over email, calendar events, and contacts from another provider.": [ + "Bring over your email, calendar events, and contacts from another provider.": [ "Başka bir hizmet sağlayıcıdaki e-postalarınızı, takvim etkinliklerinizi ve kişilerinizi aktarın." ], + "Build trust and brand recognition with professional email addresses at your own domain.": [ + "Kendi etki alanınızı kullanan profesyonel e-posta adresleriyle güven ve marka bilinirliği sağlayın." + ], "Configure this first to activate your organization and customize your email address.": [ "Kuruluşunuzu açmak ve e-posta adresinizi özelleştirmek için önce bunu yapılandırın." ], "Connect your CRM, website, printers, and more.": [ "CRM uygulamanızı, sitenizi, yazıcılarınızı ve diğer şeyleri bağlayın." ], + "Create a Gateway to give your users access to your IT resources through dedicated servers.": [ + "Kullanıcılarınızın BT kaynaklarınıza size ayrılmış sunucular üzerinden erişebilmesi için bir ağ geçidi oluşturun." + ], "Create a Zoom meeting and add joining details to your event with one click.": [ "Tek tıklamayla Zoom görüşmesi oluşturun ve etkinliğinize katılım bilgilerini ekleyin." ], @@ -4980,9 +5337,15 @@ "Create groups you can email with a single address.": [ "Tek bir adresle e-posta gönderebileceğiniz gruplar oluşturun." ], + "Create new user accounts or import users with SSO (single sign-on) SCIM provisioning.": [ + "Yeni kullanıcı hesapları açın veya kullanıcıları SSO (tek oturum açma) SCIM ile içe aktarın." + ], "Create policies to decide who can connect to shared servers in each country.": [ "Her ülkedeki paylaşılan sunuculara kimlerin bağlanabileceğini belirlemek için ilkeler oluşturun." ], + "Decide which users can connect to each of our 120+ shared server locations.": [ + "Hangi kullanıcıların 120 üzerinde paylaşılan sunucu konumumuzdan hangilerine bağlanabileceğine karar verin." + ], "Easily access your email and calendar on desktop and mobile.": [ "E-postanıza ve takviminize bilgisayarınızdan ve mobil aygıtınızdan kolayca erişin." ], @@ -5007,6 +5370,9 @@ "Encrypting and importing contacts... This may take a few minutes. When the process is completed, you can close this modal.": [ "Kişiler şifreleniyor ve içe aktarılıyor... Bu işlem birkaç dakika sürebilir. İşlem tamamlandığında, bu pencereyi kapatabilirsiniz." ], + "Enough room for years of emails, attachments and more.": [ + "Yıllarca birikecek e-postalar, ek dosyalar ve diğer şeyler için yeterli alan." + ], "Ensure secure access to organization data, even if your team is remote or using public WiFi.": [ "Ekibiniz uzaktan çalışıyor veya herkese açık Wi-Fi bağlantıları kullanıyor olsa bile, kuruluş verilerine güvenli erişim sağlayın." ], @@ -5031,11 +5397,20 @@ "Help your team securely store passwords to sensitive business and client information.": [ "Ekibinizin önemli kuruluş ve müşteri bilgilerine ait parolaları güvenli bir şekilde kaydetmesini sağlayın." ], + "How our customer support team got our VPN app directly into people's hands.": [ + "Müşteri destek ekibimiz VPN uygulamamızı insanlara nasıl doğrudan ulaştırdı?" + ], + "How we fought back when ${ BRAND_NAME } was blocked in an aggressive campaign.": [ + "${ BRAND_NAME } saldırgan bir sansür kampanyası ile engellendiğinde nasıl karşılık verdik." + ], "How we supported local activists when privacy and free speech were threatened.": [ - "Gizlilik ve ifade özgürlüğü tehdit altında olduğunda yerel aktivistlere nasıl destek olduk." + "Gizlilik ve ifade özgürlüğü tehdit edildiğinde yerel aktivistleri nasıl destekledik." ], "How you unlock your encrypted data if you lose your password.": [ - "Parolanızı kaybettiğinizde şifrelenmiş verilerinizin kilidini nasıl açabilirsiniz." + "Parolanızı kaybettiğinizde şifrelenmiş verilerinize nasıl erişebilirsiniz." + ], + "If you haven’t already, enable some recovery methods to make sure you never lose access to ${ VPN_APP_NAME }.": [ + "Henüz yapmadıysanız, ${ VPN_APP_NAME } erişiminizi asla kaybetmemek için bazı kurtarma yöntemlerini açın." ], "It looks like the contact list you are importing contains some groups. Please review how these groups should be imported.": [ "İçe aktardığınız kişi listesinde bazı gruplar var gibi görünüyor. Lütfen bu grupların nasıl içe aktarılması gerektiğini gözden geçirin." @@ -5044,7 +5419,7 @@ "Hayatınızın farklı bölümlerini ayrı tutun ve ek adreslerle gelen kutunuza düzen getirin." ], "Keep your team secure on the go with our apps for web, iOS, Android, Windows, Mac, and Linux.": [ - "Web, iOS, Android, Windows, Mac ve Linux için geliştirdiğimiz uygulamalarla ekibinizin güvenliğini hareket halindeyken de sağlayın." + "İnternet, iOS, Android, Windows, Mac ve Linux için geliştirdiğimiz uygulamalarla ekibinizi hareket ederken güvende tutun." ], "Learn more about common problems": [ "Sık karşılaşılan sorunlar hakkında ayrıntılı bilgi alın" @@ -5055,6 +5430,9 @@ "Make your email footer your own — showcase your unique brand, not ours.": [ "E-posta alt bilginizi kendinize göre ayarlayın. Bizimki yerine kendi markanızı gösterin." ], + "Methods that include both password reset and data recovery.": [ + "Hem parola sıfırlama hem de verileri kurtarmayı içeren yöntemler." + ], "Most issues can be solved in a few minutes with our step-by-step guides.": [ "Adım adım rehberlerimiz ile çoğu sorun birkaç dakika içinde çözülebilir." ], @@ -5067,8 +5445,8 @@ "Read, reply, and stay on top of Gmail from within ${ MAIL_APP_NAME }": [ "${ MAIL_APP_NAME } üzerinden Gmail e-postalarını okuyun, yanıtlayın ve güncel kalın" ], - "Send a code to your recovery email or phone": [ - "Kurtarma e-posta adresinize veya telefonunuza bir kod gönderin" + "Select which categories you want to add and if you want to receive push notifications for each category.": [ + "Eklemek istediğiniz kategorileri ve her bir kategori için anlık bildirim almak isteyip istemediğinizi seçin." ], "Set up accounts for all users and invite them to join ${ BRAND_NAME }.": [ "Tüm kullanıcı hesaplarını ayarlayın ve onları ${ BRAND_NAME } kullanmaya davet edin." @@ -5082,6 +5460,9 @@ "Still need help? Our support team is here for you.": [ "Hâlâ yardım gerekiyor mu? Destek ekibimiz size yardımcı olmaya hazır." ], + "This allows you to regain access to your ${ BRAND_NAME } account but does not recover your encrypted data.": [ + "Bu işlem ${ BRAND_NAME } hesabınıza yeniden erişmenizi sağlar ancak şifrelenmiş verilerinizi kurtarmaz." + ], "This may happen if permissions were removed or your password changed.": [ "Bu durum izinler kaldırılmışsa veya parolanız değiştirilmişse ortaya çıkabilir." ], @@ -5110,27 +5491,39 @@ "Track the status and activity of your referrals": [ "Önerilerinizin etkinliklerini ve durumunu izleyin" ], + "Unlock 15 GB of storage for just ${ config.offerPrice }.": [ + "Yalnızca ${ config.offerPrice } ile 15 GB depolama alanı edinin." + ], "Upgrade to ${ planName } to connect up to ${ MAX_SYNC_PAID_USER } accounts": [ "${ planName } tarifesine geçerek ${ MAX_SYNC_PAID_USER } taneye kadar hesap bağlayın" ], "Upgrade to get ${ activatePmUser } for a shorter, easy-to-remember email address in addition to your current one.": [ "Var olan e-posta adresinize ek olarak, daha kısa ve hatırlaması kolay ${ activatePmUser } e-posta adresini edinmek için tarifenizi yükseltin." ], + "Use a recovery method to reset your password": [ + "Parolanızı sıfırlamak için bir kurtarma yöntemi kullanın" + ], "Use this guide to get your organization promptly benefiting from ${ BRAND_NAME }'s industry-leading encryption and privacy ecosystem.": [ "Kuruluşunuzun, ${ BRAND_NAME } sektör lideri şifreleme ve gizlilik ekosisteminden hemen yararlanmasını sağlamak için bu rehberi kullanın." ], "We can't access ${ boldEmails } anymore.": [ "Artık ${ boldEmails } adresine erişemiyoruz." ], + "We will pause imports at 80% storage to reserve space for new messages.": [ + "Yeni iletilere yer açmak için depolama alanı %80 doluluğa ulaştığında içe aktarma işlemini duraklatacağız." + ], "We'll bring in your old emails and connect your Gmail to ${ MAIL_APP_NAME } so new messages appear automatically": [ "Eski e-postalarınızı aktaracağız ve ${ MAIL_APP_NAME } ile Gmail hesabınızı bağlayacağız. Böylece yeni iletiler otomatik olarak görünecek" ], - "We've started importing your email from Gmail. We'll let you know when it's done.": [ - "Gmail üzerindeki e-postalarınızı içe aktarmaya başladık. Tamamlandığında bilgi vereceğiz." + "We've started importing your emails from Gmail. We'll let you know when it's done.": [ + "Gmail üzerindeki e-postalarınızı içe aktarmaya başladık. Tamamlandığında sizi bilgilendireceğiz." ], "We’re sorry to see you go. If you have a moment, we’d really appreciate hearing why you’d like to cancel. Your feedback helps us make ${ BRAND_NAME } better for everyone.": [ "Aramızdan ayrıldığınız için üzgünüz. Vakit ayırıp iptal etme nedeninizi paylaşırsanız çok seviniriz. Geri bildiriminiz ${ BRAND_NAME } hizmetlerini herkes için daha iyi yapmamıza yardımcı olur." ], + "With new email categories, only important messages land in your primary inbox. Categories work just like spam filters. ${ MAIL_APP_NAME } never reads your emails or shares your data.": [ + "Yeni e-posta kategorileri ile yalnızca önemli iletiler birincil gelen kutunuza düşer. Kategoriler istenmeyen ileti süzgeçleri gibi çalışır. ${ MAIL_APP_NAME } e-postalarınızı asla okumaz ve verilerinizi paylaşmaz." + ], "You already have a Gmail address forwarding to ${ MAIL_APP_NAME }. Connect it below to send and receive emails directly from ${ MAIL_APP_NAME }.": [ "${ MAIL_APP_NAME } üzerine iletilen bir Gmail adresiniz zaten var. E-postaları doğrudan ${ MAIL_APP_NAME } üzerinden göndermek ve almak için aşağıdan bağlantı kurun." ], @@ -5172,6 +5565,12 @@ "You've connected one external account address to ${ MAIL_APP_NAME }.": [ "${ MAIL_APP_NAME } uygulamasına bir dış hesap adresi bağladınız." ], + "Your free ${ MAIL_APP_NAME } account comes with limited storage so we'll only import ${ newUserStorageText } of your most recent Gmail messages": [ + "Ücretsiz ${ MAIL_APP_NAME } hesabınız sınırlı depolama alanıyla sunulduğundan güncel Gmail iletilerinizin yalnızca ${ newUserStorageText } kadarını içe aktaracağız." + ], + "Your free ${ MAIL_APP_NAME } account comes with limited storage so we'll only import your most recent Gmail emails.": [ + "Ücretsiz ${ MAIL_APP_NAME } hesabınız sınırlı depolama alanıyla sunulduğu için yalnızca son Gmail e-postalarınız içe aktarılacak." + ], "Your plan supports ${ MAX_SYNC_FREE_USER } Gmail address.": [ "Tarifenizde ${ MAX_SYNC_FREE_USER } Gmail adresi destekleniyor.", "Tarifenizde ${ MAX_SYNC_FREE_USER } Gmail adresi destekleniyor." @@ -5186,6 +5585,11 @@ "Easy Switch içe aktarma yardımcısını kullanın" ] }, + "Description for domain modal": { + "Duplicate DMARC record found, go to the DNS console of your domain provider to fix it.": [ + "Yinelenen bir DMARC kaydı bulundu. Sorunu gidermek için etki alanı hizmeti sağlayıcınızın DNS panosuna gidin." + ] + }, "Description of the purpose of the import CSV modal": { "Also, we have automatically matched CSV fields with vCard fields. You can review and change this matching manually.": [ "Ayrıca, CSV alanları vCard alanlarıyla otomatik olarak eşleştirildi. Bu eşleşmeyi inceleyebilir ve el ile değiştirebilirsiniz." @@ -5609,6 +6013,9 @@ "120m": [ "120 dk" ], + "15 minutes": [ + "15 dakika" + ], "30 minutes": [ "30 dakika" ], @@ -6231,8 +6638,8 @@ "${ user } will not be able to access your account until the next emergency access.": [ "${ user } bir sonraki acil durumda erişme izni isteğine kadar hesabınıza erişemeyecek." ], - "**${ contact }** is now your recovery contact. They can help you recover your data after a password reset.": [ - "**${ contact }** artık kurtarma kişiniz. Parolanızı sıfırladığınızda verilerinizi kurtarmanıza yardımcı olabilir." + "**${ contact }** is now your recovery contact. They can help you unlock your data after you reset your password.": [ + "**${ contact }** artık kurtarma kişiniz oldu. Parolanızı sıfırladıktan sonra verilerinizin kilidini açmanıza yardımcı olabilir." ], "**If they confirm**, click **Approve recovery**. This will unlock their encrypted data.": [ "**Onaylarsa**, **Kurtarmayı onayla** üzerine tıklayın. Bu işlem şifrelenmiş verilerinin şifresini çözer." @@ -6261,12 +6668,21 @@ "Add": [ "Ekle" ], + "Add 1 more": [ + "1 tane daha ekle" + ], "Add emergency contact": [ "Acil durum kişisi ekle" ], + "Add option": [ + "Seçenek ekle" + ], "Add recovery contact": [ "Kurtarma kişisi ekle" ], + "Add recovery method": [ + "Kurtarma yöntemi ekle" + ], "Added on ${ formattedDate }": [ "${ formattedDate } tarihinde eklendi" ], @@ -6309,6 +6725,9 @@ "Contacts": [ "Kişiler" ], + "Data recovery contacts": [ + "Veri kurtarma kişileri" + ], "Data successfully recovered. You can now decrypt your existing data and encrypted files.": [ "Veriler kurtarıldı. Artık var olan verilerinizin ve şifrelenmiş dosyalarınızın şifresini çözebilirsiniz." ], @@ -6354,6 +6773,12 @@ "Enable auto-renew": [ "Otomatik yenilemeyi aç" ], + "Enter your extra password": [ + "Ek parolanızı yazın" + ], + "Explore plans": [ + "Tarifeleri keşfedin" + ], "For ${ email }": [ "${ email } için" ], @@ -6384,16 +6809,10 @@ "Less than a minute left": [ "Bir dakikadan az kaldı" ], - "Let ${ user } know it’s really you trying to regain access.": [ - "Erişimi geri almaya çalışan kişinin gerçekten siz olduğunuzu ${ user } kullanıcısına bildirin." - ], "Maximum of ${ limit } contact reached. To change, remove a contact and add a new one.": [ "Kişi sayısı ${ limit } sınırına ulaştı. Değiştirmek için bir kişiyi silip yenisini ekleyin.", "Kişi sayısı ${ limit } sınırına ulaştı. Değiştirmek için bir kişiyi silip yenisini ekleyin." ], - "None": [ - "Yok" - ], "Only ": [ "Yalnızca " ], @@ -6484,14 +6903,11 @@ "Select recovery contact ${ name }": [ "${ name } kurtarma kişisini seç" ], - "Send email request": [ - "E-posta isteği gönder" - ], "Send recovery request": [ "Kurtarma isteği gönder" ], - "Set account recovery": [ - "Hesap kurtarmayı ayarla" + "Start recovery": [ + "Kurtarmayı başlat" ], "Stop being recovery contact": [ "Kurtarma kişisi olmayı bırak" @@ -6511,9 +6927,15 @@ "They added me as trusted contact. I can access their account in case of an emergency.": [ "Beni güvenilir kişi olarak ekledi. Acil bir durumda hesabına erişebilirim." ], + "They added you as trusted contact. You can access their account in case of an emergency.": [ + "Sizi güvenilir kişi olarak ekledi. Acil bir durumda hesabına erişebilirsiniz." + ], "They may ask to access my account in case of an emergency.": [ "Acil bir durumda hesabıma erişme izni isteyebilir." ], + "They may ask to access your account in case of an emergency.": [ + "Acil bir durumda hesabınıza erişme isteğinde bulunabilirler." + ], "They will receive access automatically in **${ days } day**, on **${ formattedAccessibleAt }**, you can reject their request or give them access immediately at any time.": [ "**${ days } gün** sonra **${ formattedAccessibleAt }** tarihinde otomatik olarak erişme izni verilecek. İsteği reddedebilir ya da hemen erişme izni verebilirsiniz.", "**${ days } gün** sonra **${ formattedAccessibleAt }** tarihinde otomatik olarak erişme izni verilecek. İsteği reddedebilir ya da hemen erişme izni verebilirsiniz." @@ -6530,6 +6952,9 @@ "Time required before automatically granting them access": [ "Otomatik olarak erişme izni verilmeden önce beklenecek süre" ], + "To add recovery contacts, you must have a recovery email address or phone number.": [ + "Kurtarma kişileri eklemek için kurtarma e-posta adresiniz veya telefon numaranız olmalıdır." + ], "To disable this recovery method, remove all your recovery contacts.": [ "Bu kurtarma yöntemini kullanımdan kaldırmak için tüm kurtarma kişilerinizi kaldırın." ], @@ -6539,6 +6964,9 @@ "Unable to recover data": [ "Veriler kurtarılamıyor" ], + "Unlock ${ PASS_APP_NAME }": [ + "${ PASS_APP_NAME } kilidini aç" + ], "Upgrade": [ "Yükselt" ], @@ -6560,6 +6988,9 @@ "We received a request to unlock the encrypted data of your contact **${ user }**.": [ "**${ user }** adlı kişinizin şifrelenmiş verilerinin şifresini çözmek için bir istek aldık." ], + "We sent an email request to ${ user }. Let them know it's really you trying to regain access.": [ + "${ user } adresine bir e-posta isteği gönderdik. Erişimi geri kazanmaya çalışanın gerçekten siz olduğunuzu onlara bildirin." + ], "We were not able to verify the recovery data. Proceed anyway?": [ "Kurtarma verileri doğrulanamadı. Yine de ilerlemek istiyor musunuz?" ], @@ -6889,6 +7320,9 @@ "Invalid invitation link": [ "Davet bağlantısı geçersiz" ], + "Invalid joining link. Please contact your administrator.": [ + "Katılma bağlantısı geçersiz. Lütfen yöneticiniz ile görüşün." + ], "Invalid name": [ "Ad geçersiz" ], @@ -7057,7 +7491,7 @@ "Lütfen önce bir kurtarma e-postası adresi ayarlayın" ], "Please set a recovery phone number first": [ - "Lütfen önce bir kurtarma telefonu numarası ayarlayın" + "Lütfen önce bir kurtarma telefon numarası ayarlayın" ], "Please set a recovery/notification email first": [ "Lütfen önce bir kurtarma/bildirim e-postası adresi ayarlayın" @@ -7065,9 +7499,6 @@ "Please try again in a few moments.": [ "Lütfen biraz sonra yeniden deneyin." ], - "Please upgrade to a business plan with more than 1 user to get multi-user support": [ - "Çok kullanıcı desteği almak için lütfen 1 taneden fazla kullanıcı içeren kurumsal bir tarifeye geçin" - ], "Please upgrade to a business plan with more than 1 user to manage multiple users.": [ "Birden çok kullanıcıyı yönetmek için lütfen 1 taneden fazla kullanıcı içeren kurumsal bir tarifeye geçin." ], @@ -7210,6 +7641,9 @@ "There are too many folders in your external account. Please customize the import to delete some folders.": [ "Dış hesabınızda çok fazla klasör var. Lütfen bazı klasörleri silmek için içe aktarma işlemini özelleştirin." ], + "There was an error, please try again.": [ + "Bir sorun çıktı. Lütfen yeniden deneyin." + ], "This field exceeds the maximum of ${ maximumLength } characters.": [ "Bu alan için izin verilen en fazla ${ maximumLength } karakter uzunluğu aşıldı." ], @@ -7492,6 +7926,9 @@ "Ask your administrator to enable Account monitor.": [ "Yöneticinizden hesap izleyiciyi açmasını isteyin." ], + "Enable account monitor to start loading event.": [ + "Etkinliği yüklemeyi başlatmak için hesap izleyiciyisini açın." + ], "Error: ${ errorMessage }": [ "Hata: ${ errorMessage }" ], @@ -7997,16 +8434,34 @@ ] }, "Feature": { + "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME } desktop app": [ + "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME } bilgisayar uygulaması" + ], "${ MaxVPN } VPN connection": [ "${ MaxVPN } VPN bağlantısı", "${ MaxVPN } VPN bağlantısı" ], + "${ PROTON_SENTINEL_NAME } account protection": [ + "${ PROTON_SENTINEL_NAME } hesap koruması" + ], + "10+ premium features": [ + "10+ ücretli özellik" + ], + "15 GB storage": [ + "15 GB depolama alanı" + ], "3 email domains": [ "3 e-posta etki alanı" ], + "3 folders, labels and filters": [ + "3 klasör, etiket ve süzgeç" + ], "500 GB storage": [ "500 GB depolama alanı" ], + "500 MB Mail storage": [ + "500 MB e-posta depolama alanı" + ], "500 MB storage": [ "500 MB depolama alanı" ], @@ -8027,6 +8482,12 @@ "Continue": [ "İlerle" ], + "Custom email domain": [ + "Özel e-posta etki alanı" + ], + "Email addresses": [ + "E-posta adresleri" + ], "Encrypted cloud storage for files, photos and documents": [ "Dosyalar, fotoğraflar ve belgeler için şifrelenmiş bulut depolama alanı" ], @@ -8036,11 +8497,17 @@ "More premium features": [ "Diğer ücretli özellikler" ], + "Premium features in Mail, Calendar, Drive, Pass and VPN": [ + "Ücretli Mail, Calendar, Drive, Pass ve VPN özellikleri" + ], + "Priority support": [ + "Öncelikli destek" + ], "Remove": [ "Kaldır" ], "Schedule and snooze emails": [ - "E-postaları planla ve ertele" + "E-postaları zamanla ve ertele" ], "Secure Core servers": [ "Secure Core sunucuları" @@ -8048,11 +8515,23 @@ "Secure streaming support": [ "Güvenli yayın akışı desteği" ], + "Short domain @pm.me": [ + "Kısa etki alanı @pm.me" + ], + "Storage": [ + "Depolama alanı" + ], "Torrenting support (P2P)": [ "Torrent desteği (P2P)" ], + "Unlimited folders, labels and filters": [ + "Sınırsız klasör, etiket ve süzgeç" + ], "Unlimited hide-my-email aliases": [ "Sınırsız sayıda hide-my-email takma adı" + ], + "Use your own email domain": [ + "Kendi e-posta etki alanınızı kullanın" ] }, "Features": { @@ -8407,8 +8886,11 @@ ] }, "Force upgrade safety review": { - "I understand that I will no longer be able to sign in to older versions of ${ BRAND_NAME } mobile apps.": [ - "Artık ${ BRAND_NAME } mobil uygulamalarının eski sürümlerinde oturum açamayacağımı anladım." + "I understand that I will no longer be able to sign in to older versions of ${ BRAND_NAME } apps.": [ + "${ BRAND_NAME } uygulamalarının eski sürümlerinde artık oturum açamayacağımı anlıyorum." + ], + "Learn more": [ + "Ayrıntılı bilgi alın" ] }, "Form heading": { @@ -8509,6 +8991,9 @@ ], "Group address:": [ "Grup adresi:" + ], + "Roles and permission:": [ + "Roller ve izinler:" ] }, "Group member count": { @@ -8568,8 +9053,16 @@ "Grup üyeliği" ] }, - "Header": { - "Access": [ + "group_modal": { + "General": [ + "Genel" + ], + "Roles and permissions": [ + "Roller ve izinler" + ] + }, + "Header": { + "Access": [ "Erişim" ], "Action": [ @@ -8771,7 +9264,7 @@ "Bize ulaşın" ], "Downloads": [ - "İndirmeler" + "İndirilenler" ], "Enjoying ${ planName }?": [ "${ planName } hoşunuza gitti mi?" @@ -9208,6 +9701,15 @@ "${ boldWarning } You will lose access to all current encrypted data in your account if you continue.": [ "${ boldWarning } İlerlerseniz hesabınızda bulunan tüm şifrelenmiş verilere erişiminizi kaybedeceksiniz." ], + "${ BRAND_NAME } Business plans gives your team all the collaboration tools they need to be productive and organized in their work, while safeguarding your business.": [ + "${ BRAND_NAME } for Business tarifeleri ekibinize işlerinde verimli ve düzenli olmaları için gereken tüm iş birliği araçlarını sağlarken kuruluşunuzu da korur." + ], + "${ BRAND_NAME } Free": [ + "${ BRAND_NAME } Free" + ], + "${ BRAND_NAME } is independently funded and operates without advertising. Below are examples of how this independence has been used in practice.": [ + "${ BRAND_NAME } bağımsız olarak finanse edilir ve reklamsız çalışır. Aşağıda, bu bağımsızlığın pratikte nasıl kullanıldığı ile ilgili örnekleri görebilirsiniz." + ], "${ BRAND_NAME } is privacy you can trust, ensured by strong encryption, open-source code, and Swiss privacy laws. We believe nobody should be able to exploit your data, period. Our technology and business are based upon this fundamentally stronger definition of privacy.": [ "${ BRAND_NAME }, güçlü şifreleme, açık kaynak kodu ve İsviçre gizlilik yasaları tarafından sağlanan, güvenebileceğiniz bir gizlilik sunar. Kimsenin verilerinizden yarar sağlamaması gerektiğine inanıyoruz, nokta. Teknolojimiz ve işimiz, gizliliğin temelden daha güçlü olan bu tanımına dayanıyor." ], @@ -9220,6 +9722,9 @@ "${ BRAND_NAME } will send a verification code to ${ phoneNumber }. Standard message rates may apply.": [ "${ BRAND_NAME }, ${ phoneNumber } numarasına doğrulama kodu gönderecek. Standart mesaj ücretleri uygulanabilir." ], + "${ BRAND_NAME } will send a verification code to your recovery phone. Standard message rates may apply.": [ + "${ BRAND_NAME } kurtarma telefonu numaranıza bir doğrulama kodu gönderecek. Standart mesaj ücretleri uygulanabilir." + ], "${ BRAND_NAME }'s encryption technology means that nobody can access your password - not even us.": [ "${ BRAND_NAME } şifreleme teknolojisi kimsenin parolanıza erişememesini sağlar. Biz bile erişemeyiz." ], @@ -9245,7 +9750,7 @@ "%${ discountPercent } indirim" ], "${ DRIVE_APP_NAME } will no longer keep previous versions of your files.": [ - "${ DRIVE_APP_NAME } artık dosyalarınızın önceki sürümlerini saklamayacak." + "${ DRIVE_APP_NAME } artık dosyalarınızın önceki sürümlerini tutmayacak." ], "${ emailAddress } is invalid": [ "${ emailAddress } geçersiz" @@ -9308,6 +9813,9 @@ "${ name } for Windows": [ "Windows için ${ name }" ], + "${ name } is not available": [ + "${ name } kullanılamıyor" + ], "${ none }: do not quarantine or reject unauthorized emails. Usually, people only use this policy to troubleshoot or test.": [ "${ none }: Yetkisiz e-postaları karantinaya almaz veya reddetmez. Genellikle insanlar bu ilkeyi yalnızca sorun gidermek veya denemeler yapmak için kullanır." ], @@ -9429,6 +9937,9 @@ "${ vaultLink } updated": [ "${ vaultLink } güncellendi" ], + "${ VPN_SHORT_APP_NAME } hides your traffic. ${ PASS_SHORT_APP_NAME } hides your identity\n— unlimited **hide-my-email aliases** and **dark-web alerts** if your data is ever leaked.": [ + "${ VPN_SHORT_APP_NAME } trafiğinizi gizler. ${ PASS_SHORT_APP_NAME } kimliğinizi gizler.\nVerileriniz ele geçirilmesine karşı sınırsız **hide-my-email takma adları** ve **karanlık ağ uyarıları**." + ], "${ vpnPlus } required for Country level connection.": [ "Ülke düzeyinde bağlantı için ${ vpnPlus } tarifesi gereklidir." ], @@ -9466,6 +9977,9 @@ "(formerly Twitter)": [ "(eski adıyla Twitter)" ], + "**${ appName }** is not available for your account.": [ + "**${ appName }** hesabınız ile kullanılamıyor." + ], "**${ appName }** is not supported in your organization **${ organizationName }**.": [ "**${ organizationName }** kuruluşunuzda **${ appName }** desteklenmiyor." ], @@ -9509,13 +10023,13 @@ "**Bu işlem uçtan uca şifrelenmiş e-posta yönlendirmelerini kullanımdan kaldırır:** Bunları daha sonra yeniden ayarlayabilirsiniz." ], "**Your recovery email alone doesn't allow you to recover your encrypted data** after you reset your password.": [ - "Parolanızı sıfırladıktan sonra **sadece kurtarma e-postanızla şifrelenmiş verilerinizi kurtaramazsınız.**" + "Parolanızı sıfırladıktan sonra **şifrelenmiş verilerinizi yalnızca kurtarma e-postası adresinizle kurtaramazsınız.**" ], "**Your recovery methods will be invalidated:** you can generate new recovery data later.": [ "**Kurtarma yöntemleriniz geçersiz olacak:** Daha sonra yeni kurtarma verileri oluşturabilirsiniz." ], "**Your recovery phone alone doesn’t allow you to recover your encrypted data** after you reset your password.": [ - "Parolanızı sıfırladıktan sonra **sadece kurtarma telefonunuzla şifrelenmiş verilerinizi kurtaramazsınız.**" + "Parolanızı sıfırladıktan sonra **şifrelenmiş verilerinizi yalnızca kurtarma telefon numaranızla kurtaramazsınız.**" ], "+ ${ invisibleCount } More": [ "+ ${ invisibleCount } diğer", @@ -9582,17 +10096,26 @@ "Activity Monitor": [ "Etkinlik izleyici" ], + "Add ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }": [ + "${ BRAND_NAME } ${ PASS_SHORT_APP_NAME } ekle" + ], "Add ${ PLAN_NAMES[PLANS.MEET_BUSINESS] }": [ "${ PLAN_NAMES[PLANS.MEET_BUSINESS] } ekle" ], + "Add 1 to 5 people who you trust and can contact easily. They will be able to reset your password for you by signing in to your account. They must already have a ${ BRAND_NAME } Account.": [ + "Güvendiğiniz ve kolayca ulaşabileceğiniz 1 - 5 kişi ekleyin. Hesabınızda oturum açarak parolanızı sizin için sıfırlayabilirler. Bu kişilerin bir ${ BRAND_NAME } hesabı olmalıdır." + ], "Add a @pm.me email address to your account. This simple, shorter domain stands for \"${ MAIL_APP_NAME } me\" or \"Private Message me.\"": [ "Hesabınıza @pm.me e-posta adresini ekler. Bu basit ve kısa etki alanı \"Bana ${ MAIL_APP_NAME } gönder\" (ProtonMail me) veya \"Bana özel ileti gönder\" (Private Message me) şeklinde anlamlandırılabilir" ], + "Add a phone number in case we need to contact you": [ + "Sizinle iletişim kurmamız gerekirse kullanabileceğimiz bir telefon numarası ekleyin" + ], "add a recovery method": [ "bir kurtarma yöntemi ekleyin" ], "Add an email address in case we need to contact you": [ - "Sizinle iletişime geçmemiz gerekirse diye bir e-posta adresi ekleyin" + "Sizinle iletişim kurmamız gerekirse kullanabileceğimiz bir e-posta adresi ekleyin" ], "Add another layer of security to your account. You’ll need to verify yourself with 2FA every time you sign in.": [ "Hesabınıza bir güvenlik katmanı daha ekleyin. Her oturum açtığınızda iki adımlı doğrulama ile kimliğinizi doğrulamanız gerekir." @@ -9622,9 +10145,9 @@ "Add your name and logo to create a more personalized experience for your organization.": [ "Kuruluşunuz için daha kişiselleştirilmiş bir deneyim oluşturmak için adınızı ve logonuzu ekleyin." ], - "Adding ${ addedServerCount } gateway server": [ - "${ addedServerCount } ağ geçidi sunucusu ekleniyor", - "${ addedServerCount } ağ geçidi sunucusu ekleniyor" + "Adding ${ total } gateway server": [ + "${ total } ağ geçidi sunucusu ekleniyor", + "${ total } ağ geçidi sunucusu ekleniyor" ], "Adding an external email address will disable end-to-end encryption for all email communication within that group. Do you want to proceed?": [ "Bir dış e-posta adresi eklendiğinde, o grup içindeki tüm e-posta yazışmaları için uçtan uca şifreleme kapatılır. İlerlemek istiyor musunuz?" @@ -9695,7 +10218,10 @@ "Kullanıcıların güvenli paylaşılan sunuculara bağlanabilmesi için ${ VPN_APP_NAME } uygulamasının **Ülkeler** bölümünden izin verin." ], "Allowing QR code sign-in will let you sign in by scanning a QR code if you forget your password. All you need is to be signed in to a ${ BRAND_NAME } service on another device.": [ - "Karekodla oturum açma özelliğini etkinleştirirseniz parolanızı unuttuğunuzda bir karekod tarayarak oturum açabilirsiniz. Bunun için tek yapmanız gereken başka bir aygıtta ${ BRAND_NAME } hizmetinde oturum açmış olmanızdır." + "Kare kod ile oturum açmayı açarsanız, parolanızı unuttuğunuzda bir kare kodu tarayarak oturum açabilirsiniz. Bunun için başka bir aygıtta ${ BRAND_NAME } oturumu açmış olmanız yeterlidir." + ], + "Allowing the password reset from the settings lets you to change your password if you’ve lost it, but are still signed in to ${ BRAND_NAME }.": [ + "Ayarlar bölümünden parola sıfırlama seçeneğini açtığınızda, parolanızı unutursanız ve ${ BRAND_NAME } hesabınızda oturumunuz açıksa parolanızı değiştirebilirsiniz." ], "Already allocated": [ "Zaten ayrılmış" @@ -9802,6 +10328,9 @@ "Are you sure you want to revoke certificate **${ name }**": [ "**${ name }** sertifikasını geçersiz kılmak istediğinize emin misiniz?" ], + "Are you sure you want to sign out of this account?": [ + "Bu hesabın oturumunu kapatmak istediğinize emin misiniz?" + ], "Are you sure you want to sort your folders alphabetically?": [ "Klasörlerinizi alfabetik olarak sıralamak istediğinize emin misiniz?" ], @@ -9898,9 +10427,18 @@ "Before you can start sending and receiving emails from your new addresses you need to create encryption keys for them.": [ "Yeni adreslerinizden e-posta gönderip almaya başlamadan önce, adresler için şifreleme anahtarlarını oluşturmalısınız." ], + "BEST FOR TV": [ + "TV İÇİN EN İYİSİ" + ], "Beta": [ "Beta" ], + "Billed at ${ monthlyDiscountedPrice } for the first 6 months, renews at ${ monthlyRenewalPrice }.": [ + "İlk 6 ay için ${ monthlyDiscountedPrice } olarak faturalanır, ${ monthlyRenewalPrice } ile yenilenir." + ], + "Billed at ${ yearlyDiscountedPrice } for the first 12 months, renews at ${ yearlyRenewalPrice }.": [ + "İlk 12 ay için ${ yearlyDiscountedPrice } olarak faturalanır, ${ yearlyRenewalPrice } ile yenilenir." + ], "Billing cycle: ${ text }": [ "Faturalama dönemi: ${ text }" ], @@ -9910,6 +10448,9 @@ "Boost your organization’s brand identity and create a more consistent online experience for your users.": [ "Kuruluşunuzun marka kimliğini güçlendirerek kullanıcılarınız için daha tutarlı bir çevrim içi deneyim sunun." ], + "By adding people you trust as recovery contacts, we'll be able to send them an email to help you if you're having trouble recovering your data after a password reset. You can also be a recovery contact for others.": [ + "Güvendiğiniz kişileri kurtarma kişileri olarak eklerseniz, parolanızı sıfırladıktan sonra verilerinizi kurtarmakta sorun yaşarsanız, size yardımcı olmaları için bir e-posta gönderebiliriz. Siz de başkalarının kurtarma kişisi olabilirsiniz." + ], "By creating a ${ PASS_APP_NAME } account with your SimpleLogin email, you can manage your aliases directly from ${ PASS_APP_NAME }.": [ "SimpleLogin e-posta adresinizle bir ${ PASS_APP_NAME } hesabı açarak takma adlarınızı doğrudan ${ PASS_APP_NAME } üzerinden yönetebilirsiniz." ], @@ -9952,9 +10493,6 @@ "Change your password": [ "Parolanızı değiştirin" ], - "Check the status of imports and forwarding.": [ - "İçe aktarma ve iletme durumunu denetleyin." - ], "Check your network and try again.": [ "Ağınızı denetleyip ve yeniden deneyin." ], @@ -9988,6 +10526,9 @@ "CNET editors choice award with a rating of 8.4 out of 10": [ "CNET Editörün Seçimi ödülünü 10 üzerinden 8,4 puanla kazandı" ], + "Code has been re-sent.": [ + "Kod yeniden gönderildi." + ], "Coming soon": [ "Çok yakında" ], @@ -10003,6 +10544,9 @@ "Configure SAML authentication for your organization through an identity provider like Okta, Microsoft Azure, or Google Identity Platform. This will enable SAML for the whole organization.": [ "Okta, Microsoft Azure veya Google Identity Platform gibi bir kimlik hizmeti sağlayıcı ile kuruluşunuz için SAML kimlik doğrulamasını yapılandırın. Bu, tüm kuruluş için SAML özelliğini etkinleştirir." ], + "Connect and manage your external mailboxes in ${ MAIL_APP_NAME }.": [ + "Dış e-posta adreslerinizi ${ MAIL_APP_NAME } üzerine bağlayın ve yönetin." + ], "Connection data will be available in around 1 hour.": [ "Bağlantı verileri yaklaşık 1 saat içinde hazır olacak." ], @@ -10021,6 +10565,9 @@ "Continue to connect this entity with your ${ BRAND_NAME } organization.": [ "${ BRAND_NAME } kuruluşunuzla bu varlığın bağlantısı kurun." ], + "Continue with ${ BRAND_NAME } Free": [ + "${ BRAND_NAME } Free kullanmayı sürdür" + ], "Continuing will connect your ${ BRAND_NAME } Account to ${ name }.": [ "İlerlerseniz ${ BRAND_NAME } hesabınız ${ name } ile bağlanacak." ], @@ -10061,9 +10608,9 @@ "Create a new code on your TV and try again.": [ "Televizyonunuzda yeni bir kod oluşturup yeniden deneyin." ], - "Create a secure cloud for ${ value } member": [ - "${ value } üye için güvenli bir bulut oluşturun", - "${ value } üye için güvenli bir bulut oluşturun" + "Create a secure cloud for ${ memberCount } member": [ + "${ memberCount } üye için güvenli bir bulut oluşturun", + "${ memberCount } üye için güvenli bir bulut oluşturun" ], "Create an account": [ "Hesap açın" @@ -10081,6 +10628,10 @@ "Ağ geçidi sunucusu oluşturuluyor: ${ serverNumber } / ${ total }", "Ağ geçidi sunucusu oluşturuluyor: ${ serverNumber } / ${ total }" ], + "Creating gateway with ${ total } server": [ + "${ total } sunucu ile ağ geçidi oluşturuluyor", + "${ total } sunucu ile ağ geçidi oluşturuluyor" + ], "Creating your account": [ "Hesabınız oluşturuluyor" ], @@ -10129,6 +10680,9 @@ "Data recoverable with recovery phrase": [ "Veriler kurtarma ifadesi kurtarılabilir" ], + "Data recovery requires a password reset option (email or SMS)": [ + "Veri kurtarma işlemi için bir parola sıfırlama seçeneği (e-posta veya SMS) gereklidir" + ], "dedicated servers": [ "size ayrılmış sunucular" ], @@ -10176,7 +10730,7 @@ "Kimlik doğrulama uygulaması ile iki adımlı doğrulamayı kapatmak hesabınızın güvenliğini azaltır. Bu işlemi yalnızca gerçekten gerekiyorsa yapın." ], "Disabling the data backup on this device will prevent you from automatically unlocking your encrypted data after a password reset.": [ - "Bu aygıtta veri yedeklemeyi devre dışı bırakırsanız parola sıfırlama işleminden sonra şifrelenmiş verilerinizin kilidini otomatik olarak açamazsınız." + "Bu aygıtta veri yedeklemeyi kapatırsanız, parola sıfırlama işleminden sonra şifrelenmiş verilerinize otomatik olarak erişemezsiniz." ], "Discount": [ "İndirim" @@ -10336,7 +10890,10 @@ "Otomatik silme özelliği açılıyor…" ], "Enabling recovery by phrase again will generate a new recovery phrase.": [ - "İfade ile kurtarma seçeneğini yeniden açtığınızda, yeni bir kurtarma ifadesi oluşturulur." + "İfade ile kurtarmayı yeniden açtığınızda, yeni bir kurtarma ifadesi oluşturulur." + ], + "Enabling the data backup on this device will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset, simply by signing in on this device.": [ + "Bu aygıt üzerinde veri yedeklemeyi açtığınızda, parola sıfırlandıktan sonra hesabınızdaki e-postalara, kişilere, dosyalara, parolalara ve hesabınızdaki diğer şifrelenmiş verilere yalnızca oturum açarak yeniden erişebilirsiniz." ], "Encryption setting updated": [ "Şifreleme ayarı güncellendi" @@ -10498,7 +11055,7 @@ "${ price } karşılığında" ], "For a 10-year version history, please contact our sales team.": [ - "10 yıllık sürüm geçmişi hakkında bilgi almak için lütfen satış ekibimizle iletişime geçin." + "10 yıllık sürüm geçmişine erişebilmek için lütfen satış ekibimizle görüşün." ], "For anytime access to email and an optimized mobile experience, download our ${ androidAppLink } or ${ iosAppLink }.": [ "E-postanıza istediğiniz zaman erişebilmek ve iyi bir mobil deneyim için ${ androidAppLink } ya da ${ iosAppLink } uygulamamızı indirin." @@ -10509,12 +11066,12 @@ "For easy access to your passwords and more.": [ "Parolalarınıza ve diğer bilgilerinize kolayca erişmek için." ], + "For just ${ bundlePlanPriceInline }": [ + "Yalnızca ${ bundlePlanPriceInline }" + ], "For users who are switching to ${ MAIL_APP_NAME } from another email service, select the ${ boldAddresses } tab and add all active email addresses before changing the MX record to ensure a smooth transition.": [ "Başka bir e-posta hizmetinden ${ MAIL_APP_NAME } uygulamasına geçiş yapan kullanıcılar için, sorunsuz bir geçiş sağlamak üzere MX kaydını değiştirmeden önce ${ boldAddresses } sekmesini seçin ve tüm etkin e-posta adreslerini ekleyin." ], - "Forwarding automatically sends new incoming emails to your Inbox.": [ - "İletme özelliği gelen yeni e-postaları otomatik olarak gelen kutunuza gönderir." - ], "Free forever": [ "Sonsuza kadar ücretsiz" ], @@ -10542,6 +11099,9 @@ "Gateways": [ "Ağ geçitleri" ], + "Generating a new recovery phrase will deactivate your current recovery phrase.": [ + "Yeni kurtarma ifadesi oluşturduğunuzda geçerli kurtarma ifadeniz kullanımdan kaldırılır." + ], "Generating a new recovery phrase will deactivate your old one.": [ "Yeni bir kurtarma ifadesi oluşturmak, önceki ifadeyi kullanımdan kaldırır." ], @@ -10563,12 +11123,18 @@ "Get notified if your password or other personal data was leaked. ${ learnMoreLinkNoBreach }": [ "Parolanız veya diğer kişisel verileriniz sızdırılmışsa bildirim alın. ${ learnMoreLinkNoBreach }" ], + "Get started": [ + "Başlayalım" + ], "Get started with the referral link above.": [ "Yukarıdaki öneri bağlantısı ile başlayın." ], "Get visibility into account access": [ "Hesap erişiminde görünür olun" ], + "Get VPN Plus": [ + "VPN Plus edinin" + ], "Give the token a descriptive name, such as the service you plan to use it with, and select one of your active custom domain addresses. Only this address will be able to send emails with this token.": [ "Kod için, kullanmayı düşündüğünüz hizmet gibi açıklayıcı bir ad yazın ve etkin özel etki alanı adreslerinizden birini seçin. Bu kod ile yalnızca bu adres e-posta gönderebilir." ], @@ -10626,8 +11192,11 @@ "If another administrator changed this password, you will need to ask them for the new Organization Password.": [ "Bu parolayı başka bir yönetici değiştirdiyse, ondan yeni kuruluş parolasını istemeniz gerekecek." ], + "If disabled, ${ BRAND_NAME } will still use your recovery email to send security notifications.": [ + "Kapatılsa bile ${ BRAND_NAME }, güvenlik bildirimleri göndermek için kurtarma e-posta adresinizi kullanmayı sürdürür." + ], "If disabled, ${ BRAND_NAME } will still use your recovery phone to send security notifications.": [ - "Devre dışı bırakılsa bile ${ BRAND_NAME } güvenlik bildirimleri göndermek için kurtarma telefonunuzu kullanmaya devam eder." + "Kapatılsa bile ${ BRAND_NAME }, güvenlik bildirimleri göndermek için kurtarma telefon numaranızı kullanmayı sürdürür." ], "If disabled, only administrators will be able to export data.": [ "Bu seçenek kapatılırsa, verileri yalnızca yöneticiler dışa aktarabilir." @@ -10707,6 +11276,9 @@ "If you purchased a gift code or received one from our support team, you can enter it here.": [ "Satın aldığınız veya destek ekibimizin verdiği hediye kodunu buraya yazabilirsiniz." ], + "If you recently reset your password, you can ${ recoveryMethodLink } to unlock your data. If this is due to an old password reset, you can stop the message from showing again.": [ + "Yakın zamanda parolanızı sıfırladıysanız, verilerinize erişmek için ${ recoveryMethodLink }. Bu durum, eski bir parola sıfırlamasından kaynaklanıyorsa, iletinin yeniden görünmesini engelleyebilirsiniz." + ], "If you recently reset your password, you can use a data recovery method to unlock your data": [ "Parolanızı yakın zamanda sıfırladıysanız, bir veri kurtarma yöntemini kullanarak verilerinizin şifresini çözebilirsiniz" ], @@ -10769,6 +11341,9 @@ "Include device, location, and IP details": [ "Aygıt, konum ve IP adresi ayrıntıları katılsın" ], + "Included": [ + "İçindekiler" + ], "Increase your account security by verifying your email address.": [ "E-posta adresinizi doğrulayarak hesap güvenliğinizi artırın." ], @@ -10902,6 +11477,12 @@ "Item updated in vault": [ "Kasa ögesi güncellendi" ], + "It’s often the easiest way to recover your account if you’re signed in.": [ + "Oturum açtıysanız, genellikle hesabınızı kurtarmanın en kolay yoludur." + ], + "It’s the only way to instantly recover everything, so make sure you keep it somewhere safe but accessible.": [ + "Her şeyi anında kurtarmanın tek yolu budur. Bu yüzden güvenli ama erişilebilir bir yerde sakladığınızdan emin olun." + ], "JCB logo": [ "JCB logosu" ], @@ -11109,15 +11690,15 @@ "No card required": [ "Kredi kartı gerekmez" ], + "No connected addresses.": [ + "Bağlı bir adres yok." + ], "No countries enabled": [ "Herhangi bir ülke kullanıma alınmamış" ], "No folder selected": [ "Herhangi bir klasör seçilmemiş" ], - "No forwarding history.": [ - "İletme geçmişi yok." - ], "No gateways": [ "Henüz bir ağ geçidi yok" ], @@ -11181,6 +11762,9 @@ "Only change these settings if you are using PGP with non-${ BRAND_NAME } recipients.": [ "Bu ayarları yalnızca ${ BRAND_NAME } dışındaki alıcılar ile PGP kullanıyorsanız değiştirin." ], + "Only sign in on devices you trust": [ + "Yalnızca güvendiğiniz aygıtlarda oturum açın" + ], "Only you can see the label": [ "Etiketi yalnızca siz görebilirsiniz" ], @@ -11446,9 +12030,18 @@ "Recently used servers:": [ "Son kullanılan sunucular:" ], + "RECOMMENDED": [ + "ÖNERİLEN" + ], "Recommended on trusted devices. ${ keepMeSignedInLearnMoreLink }": [ "Güvenilen aygıtlar üzerinde önerilir. ${ keepMeSignedInLearnMoreLink }" ], + "Recovery by email is not available while ${ PROTON_SENTINEL_NAME } is enabled.": [ + "${ PROTON_SENTINEL_NAME } açıkken e-posta adresi ile kurtarma kullanılamaz." + ], + "Recovery by phone is not available while ${ PROTON_SENTINEL_NAME } is enabled.": [ + "${ PROTON_SENTINEL_NAME } açıkken telefon numarası ile kurtarma kullanılamaz." + ], "Recovery file downloaded": [ "Kurtarma dosyası indirildi" ], @@ -11602,6 +12195,9 @@ "Set up your organization": [ "Kuruluşunuzu ayarlayın" ], + "Set up your organization and start protecting your data in a few easy steps.": [ + "Birkaç kolay adımda kuruluşunuzu ayarlayın ve verilerinizi korumaya başlayın." + ], "Setting successfully saved": [ "Ayar kaydedildi" ], @@ -11639,6 +12235,12 @@ "Show each sender's image in the message list. The sender's initials will be shown if a photo is not available.": [ "İleti listesinde her göndericinin görseli görüntülenir. Göndericinin görseli yoksa adı ve soyadının baş harfleri görüntülenir." ], + "Show fewer benefits": [ + "Daha az fayda görüntüle" + ], + "Show more benefits": [ + "Diğer faydaları görüntüle" + ], "Show original message": [ "Özgün iletiyi görüntüle" ], @@ -11684,9 +12286,6 @@ "Something went wrong. Please try again or contact customer support.": [ "Bir sorun çıktı. Lütfen yeniden deneyin ya da müşteri destek ekibi ile görüşün." ], - "Something went wrong. Please try again.": [ - "Bir sorun çıktı. Lütfen yeniden deneyin." - ], "Specify the domain which is allowed to authenticate with SAML SSO.": [ "SAML tek oturum açma ile kimlik doğrulamasına izin verilecek alanı belirtin." ], @@ -11776,6 +12375,9 @@ "TechRadar Pro recommended with a rating of 4.2 out of 5 stars": [ "Tech Radar Pro tarafından 5 üzerinden 4,2 puanla önerildi" ], + "Temporarily unavailable due to high demand. Please try again later.": [ + "Yoğun istek nedeniyle geçici olarak kullanılamıyor. Lütfen bir süre sonra yeniden deneyin." + ], "Temporarily unavailable. Please check back later.": [ "Geçici olarak kullanılamıyor. Lütfen bir süre sonra yeniden bakın." ], @@ -11908,6 +12510,9 @@ "This could take some time. Please do not close this page or disconnect from the internet.": [ "Bu işlemin tamamlanması biraz zaman alabilir. Bu sırada lütfen bu sayfayı kapatmayın veya internet bağlantınızı kesmeyin." ], + "This data recovery method requires a password reset option (email or SMS)": [ + "Bu veri kurtarma yöntemi için bir parola sıfırlama seçeneği (e-posta veya SMS) gereklidir" + ], "This feature delays sending your emails, giving you the opportunity to undo send during the selected time frame.": [ "Bu özellik, e-postalarınızı göndermeyi geciktirerek belirtilen süre içinde göndermeyi geri alma olanağı sağlar." ], @@ -11968,11 +12573,14 @@ "This verification can take up to one hour. After successful verification, do not remove the TXT record as it is needed to confirm that you continue to own the domain.": [ "Doğrulama işleminin tamamlanması bir saat kadar sürebilir. Doğrulama tamamlandıktan sonra da bu etki alanının sahibi olduğunuzu doğrulamayı sürdürmemiz gerektiğinden bu TXT kaydını kaldırmayın." ], + "This will allow the TV to access your ${ BRAND_NAME } account.": [ + "Bu işlem televizyonun ${ BRAND_NAME } hesabınıza erişmesini sağlayacak." + ], "This will delete all previous versions of your files older than ${ rententionLabel }.": [ - "Bu işlem dosyalarınızın ${ rententionLabel } tarihinden eski olan önceki tüm sürümleri silecek." + "Bu işlem dosyalarınızın ${ rententionLabel } tarihinden önceki tüm sürümlerini silecek." ], "This will delete all previous versions of your files.": [ - "Bu işlem dosyalarınızın önceki tüm sürümleri silecek." + "Bu işlem dosyalarınızın tüm önceki sürümlerini siler." ], "This will deny access to **${ email }**. Are you sure you want to continue?": [ "Bu işlem, **${ email }** hesabına erişme izni vermeyecek. İlerlemek istediğinize emin misiniz?" @@ -11989,6 +12597,9 @@ "This will enable PayPal to be used to pay for your ${ BRAND_NAME } subscription. We will redirect you to PayPal in a new browser tab. If you use any pop-up blockers, please disable them to continue.": [ "Bu seçenek, ${ BRAND_NAME } aboneliğiniz için PayPal üzerinden ödeme yapılabilmesini sağlar. Yeni bir tarayıcı sekmesi açarak sizi PayPal sitesine yönlendireceğiz. Herhangi bir açılır pencere engelleyici kullanıyorsanız, işlemi sürdürmek için onu kapatın." ], + "This will let you quickly and safely access your ${ BRAND_NAME } Account so you can change you password.": [ + "Böylece ${ BRAND_NAME } hesabınıza hızlı ve güvenli bir şekilde erişebilir ve parolanızı değiştirebilirsiniz." + ], "This will permanently delete the data and all email addresses associated with these users.": [ "Bu işlem bu kullanıcılarla ilişkili tüm e-postaları ve verileri kalıcı olarak silecek." ], @@ -12061,15 +12672,21 @@ "To decrypt and view your locked data after a password reset, select a recovery method.": [ "Parola sıfırlandıktan sonra erişilmesi engellenen verilerinizin şifresini çözmek ve bunları görüntülemek için bir kurtarma yöntemi belirleyin." ], + "To enable post-quantum protection, you’ll need to finish generating your new post-quantum encryption keys.": [ + "Kuantum sonrası korumayı etkinleştirmek için yeni kuantum sonrası şifreleme anahtarlarınızı oluşturmanız gerekecek." + ], + "To ensure the highest possible security of your account, disable **Recovery by recovery email**.": [ + "Hesabınızda olabilecek en yüksek güvenliği sağlamak için **E-posta adresi ile kurtarma** seçeneğini kapatın." + ], + "To ensure the highest possible security of your account, disable **Recovery by recovery phone**.": [ + "Hesabınızda olabilecek en yüksek güvenliği sağlamak için **Telefon numarası ile kurtarma** seçeneğini kapatın." + ], "To ensure you don’t lose important data, ${ DRIVE_APP_NAME } saves older versions of your files as you and your collaborators make changes. Select how long ${ BRAND_NAME } should keep previous versions.": [ "${ DRIVE_APP_NAME }, önemli verilerinizi korumak için, siz ve iş birliği yaptığınız kişiler dosyalarınızı\ndeğiştirdikçe öncekli sürümlerini kaydeder. Önceki sürümlerin ${ BRAND_NAME } tarafından ne kadar süreyle tutulacağını seçin." ], "To fight spam and abuse, please verify you are human.": [ "İstenmeyen iletilere ve kötüye kullanıma karşı lütfen insan olduğunuzu doğrulayın." ], - "To help keep your account safe, we want to make sure it's really you trying to sign in.": [ - "Hesabınızı korumak için oturum açmaya çalışanın gerçekten siz olduğundan emin olmak istiyoruz." - ], "To help keep your account safe, we want to make sure it’s really you trying to sign in.": [ "Hesabınızı korumak için oturum açmaya çalışanın gerçekten siz olduğunuzdan emin olmak istiyoruz." ], @@ -12163,6 +12780,9 @@ "Unless you sign out of your account or change your password, your session will remain active. Sessions expire after 60 days of inactivity.": [ "Hesap oturumunuzu kapatmadığınız ya da parolanızı değiştirmediğiniz sürece oturumunuz açık kalır. 60 gün boyunca herhangi bir etkinlik görülmeyen oturumlar kapatılır." ], + "Unlock streaming with VPN Plus.": [ + "VPN Plus ile yayın akışı hizmetlerine erişin." + ], "Unsaved changes": [ "Kaydedilmemiş değişiklikler" ], @@ -12178,9 +12798,15 @@ "Unverified email address.": [ "E-posta adresi doğrulanmamış." ], + "Upgrade anytime to bring over the rest": [ + "Geri kalanını getirmek için istediğiniz zaman tarifenizi yükseltebilirsiniz" + ], "Upgrade now to get premium features, products and storage at a special price": [ "Ücretli özellikleri, ürünleri ve depolama alanını özel bir ücret ile almak için tarifenizi şimdi yükseltin" ], + "Upgrade or clear space anytime to bring over the rest": [ + "Geri kalanları aktarmak için istediğiniz zaman tarifenizi yükseltin ya da yer açın" + ], "Upgrade to add a shorter @pm.me address to your account that is easier to share. It stands for “${ MAIL_APP_NAME } me” or “Private Message me”.": [ "Hesabınızı paylaşması daha kolay ve daha kısa @pm.me adresi ile kullanmak için tarifenizi yükseltin. İngilizce olarak \"${ MAIL_APP_NAME } ben\" ya da \"Bana özel ileti\" anlamına gelir." ], @@ -12188,7 +12814,7 @@ "${ planTitle } avantajlarınızı korumak için tarifenizi yükseltin." ], "Upgrade to unlock": [ - "Kilidi açmak için yükseltin" + "Kullanmak için tarifenizi yükseltin" ], "Upgrade to unlock the ${ monitorLink }.": [ "${ monitorLink } özelliğine erişmek için tarifenizi yükseltin." @@ -12310,6 +12936,9 @@ "Visa Secure logo": [ "Visa Secure logosu" ], + "VPN Plus": [ + "VPN Plus" + ], "VPN with dedicated servers and IP addresses": [ "Size ayrılmış sunucular ve IP adresleri ile VPN" ], @@ -12325,6 +12954,12 @@ "We advise you to use official ${ VPN_APP_NAME } applications when possible.": [ "Olabildiğince resmi ${ VPN_APP_NAME } uygulamalarını kullanmanızı öneririz." ], + "We can use your recovery email to send you a verification code to reset your password, and to contact you if we notice suspicious activity.": [ + "Kurtarma e-posta adresinizi, parolanızı sıfırlamanız için size bir doğrulama kodu göndermek ve şüpheli bir etkinlik fark edersek sizinle iletişim kurmak için kullanabiliriz." + ], + "We can use your recovery phone to send you a verification code to reset your password, and to contact you if we notice suspicious activity.": [ + "Kurtarma telefon numaranızı, parolanızı sıfırlamanız için size bir doğrulama kodu göndermek ve şüpheli bir etkinlik fark edersek sizinle iletişim kurmak için kullanabiliriz." + ], "We couldn't complete the transaction. Please try again.": [ "İşlemi tamamlanamadı. Lütfen yeniden deneyin." ], @@ -12370,6 +13005,9 @@ "We stored a backup file in this browser because you allowed data recovery on this ${ deviceLink }. If the backup file is valid, you will immediately regain complete or partial access to your encrypted data.": [ "Bu ${ deviceLink } aygıtı üzerindeki verilerin kurtarılmasına izin verdiğiniz için bu tarayıcıda bir yedek dosyası kaydedildi. Yedek dosya geçerliyse, şifrelenmiş verilerinizin hemen tümüne veya bir bölümüne erişebileceksiniz." ], + "We strongly recommend that everyone enable recovery by recovery phrase.": [ + "Herkesin kurtarma ifadesiyle kurtarmayı açmasını önemle öneriyoruz." + ], "We use 3-D Secure to protect your payments": [ "Ödemelerinizi korumak için 3-D Secure kullanıyoruz" ], @@ -12419,7 +13057,7 @@ "Kapatıldığında, uzak görsellerin bilginiz olmadan yüklenmesi engellenir." ], "When enabled, we will check if ${ MAIL_APP_NAME } is your default mail application and notify you if it is not.": [ - "${ MAIL_APP_NAME } uygulamasının varsayılan e-posta uygulamanız olup olmadığını denetler ve değilse sizi bilgilendirir." + "Açıldığında, ${ MAIL_APP_NAME } uygulamasının varsayılan e-posta uygulamanız olup olmadığı denetlenir ve değilse size bilgi verilir." ], "When enabling SAML for ${ appName } in your identity provider, you might be prompted to use the callback (ACS) URL and issuer ID. Just copy-paste the data below into your identity provider fields.": [ "Kimlik hizmeti sağlayıcınızda ${ appName } için SAML özelliğini etkinleştirirken geri çağırma (ACS) adresini ve yayıncı kimliğini kullanmanız istenebilir. Aşağıdaki verileri kopyalayıp kimlik hizmeti sağlayıcı alanlarına yapıştırmanız yeterlidir." @@ -12554,9 +13192,6 @@ "You can edit this once to ensure the correct email address for verification.": [ "Bunu doğrulamada kullanılacak doğru e-posta adresini yazmak için bir kez düzenleyebilirsiniz." ], - "You can enable the Photos section from the interface using the toggle below.": [ - "Arayüzde aşağıdaki anahtarı kullanarak Fotoğraflar bölümünü açabilirsiniz." - ], "You can enforce the password rules members of your organization will use when they create or reset the password to their ${ BRAND_NAME } Account.": [ "Kuruluşunuzun üyeleri, ${ BRAND_NAME } hesaplarının parolasını oluştururken veya sıfırlarken uygulanacak zorunlu parola kuralları belirleyebilirsiniz." ], @@ -12617,6 +13252,9 @@ "You don't have any referrals.": [ "Herhangi bir öneriniz yok." ], + "You don’t need to open or read the file—just download it and store it somewhere safe.": [ + "Dosyayı açmanız veya okumanız gerekmez. Yalnızca indirin ve güvenli bir yere kaydedin." + ], "You get notified if your password or other data was leaked from a third-party service.": [ "Parolanız veya diğer verileriniz üçüncü taraf bir hizmet tarafından açığa çıkarsa bildirim alırsınız." ], @@ -12756,6 +13394,9 @@ "Your ${ plan } subscription will be replaced with ${ PASS_SHORT_APP_NAME } Lifetime. The remaining balance of your subscription will be added to your account. ${ PASS_SHORT_APP_NAME } lifetime deal has no renewal price, it's a one-time payment for lifetime access to ${ PASS_SHORT_APP_NAME }.": [ "${ plan } aboneliğiniz ${ PASS_SHORT_APP_NAME } Lifetime aboneliğiyle değiştirilecek. Aboneliğinizin kalan tutarı hesabınıza eklenecek. ${ PASS_SHORT_APP_NAME } Lifetime fırsatının yenileme fiyatı yoktur, ${ PASS_SHORT_APP_NAME } hizmetine ömür boyu erişim için tek seferlik ödeme yapılır." ], + "Your ${ planDisplayName } plan doesn’t just keep your business data and communications safe. It supports your compliance objectives, makes your business stand out, and keeps your team connected.": [ + "${ planDisplayName } tarifeniz yalnızca kurumsal verilerinizi ve iletişimlerinizi güvende tutmaz. Uyumluluk gereksinimlerinizi karşılar, kuruluşunuzu öne çıkarır ve ekibinizin bağlantıda kalmasını sağlar." + ], "Your ${ VPN_APP_NAME } and ${ MAIL_APP_NAME } accounts are linked. To delete them both, please sign in at ${ loginLink } and delete your account there.": [ "${ VPN_APP_NAME } ve ${ MAIL_APP_NAME } hesaplarınız birbirine bağlıdır. İkisini de silmek için lütfen ${ loginLink } adresinden oturum açarak hesabınızı silin." ], @@ -12831,14 +13472,17 @@ "Your recent changes have been published. They will be visible to users in the next few hours.": [ "Son değişiklikleriniz yayınlandı. Önümüzdeki birkaç saat içinde kullanıcılar tarafından görülebilecek." ], + "Your recovery file will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset.": [ + "Kurtarma dosyanız, parolanız sıfırlandıktan sonra hesabınızdaki e-postalara, kişilere, dosyalara, parolalara ve diğer şifrelenmiş verilere yeniden erişmenizi sağlar." + ], "Your recovery phrase": [ "Kurtarma ifadeniz" ], "Your recovery phrase is a series of 12 randomly generated words in a specific order.": [ "Kurtarma ifadeniz, belirli bir sırada rastgele oluşturulmuş 12 sözcükten oluşan bir dizidir." ], - "Your recovery phrase—contained in your Recovery Kit—will allow you to sign in and recover your data if you get locked out of your ${ BRAND_NAME } Account. It’s is composed of 12 words and acts like a backup password.": [ - "Kurtarma Kitinde bulunan kurtarma ifadeniz ${ BRAND_NAME } hesabınıza erişiminiz engellendiğinde oturum açmanıza ve verilerinizi kurtarmanıza olanak tanır. Bu ifade 12 kelimeden oluşur ve yedek parola görevi görür." + "Your recovery phrase will allow you to sign in and recover your data if you get locked out of your ${ BRAND_NAME } Account. It is composed of 12 words and acts like a backup password.": [ + "${ BRAND_NAME } hesabınıza erişiminiz engellendiğinde kurtarma ifadeniz oturum açmanızı ve verilerinizi kurtarmanızı sağlar. 12 sözcükten oluşur ve yedek parola olarak kullanılır." ], "Your scheduled plan starts on ${ renewalTime } and will auto-renew every ${ cycle } month.": [ "Zamanlanmış tarifeniz ${ renewalTime } tarihinde başlayacak ve her ${ cycle } ayda bir otomatik olarak yenilenecek.", @@ -13439,8 +14083,14 @@ "${ Brand } ending with ${ Last4 }": [ "${ Last4 } ile biten ${ Brand }" ], + "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME } Desktop app": [ + "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME } bilgisayar uygulaması" + ], + "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME } desktop app": [ + "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME } bilgisayar uygulaması" + ], "${ BRAND_NAME } for Business": [ - "İşletmeler İçin ${ BRAND_NAME }" + "${ BRAND_NAME } for Business" ], "${ BRAND_NAME } username": [ "${ BRAND_NAME } kullanıcı adı" @@ -13473,6 +14123,15 @@ "${ pricePerMonthWithCurrency } / month": [ "${ pricePerMonthWithCurrency } / ay" ], + "${ PROTON_SENTINEL_NAME } account protection": [ + "${ PROTON_SENTINEL_NAME } hesap koruması" + ], + "${ PROTON_SENTINEL_NAME } protection": [ + "${ PROTON_SENTINEL_NAME } koruması" + ], + "${ value.length }/${ maxLength } characters": [ + "${ value.length }/${ maxLength } karakter" + ], "(Temporarily unavailable. Please check back later.)": [ "(Geçici olarak kullanılamıyor. Lütfen bir süre sonra yeniden bakın.)" ], @@ -13599,6 +14258,9 @@ "Allow notifications by email": [ "E-posta bildirimleri kullanılabilsin" ], + "Allow QR code sign-in": [ + "Kare kod ile oturum açılabilsin" + ], "Allow random passwords": [ "Rastgele parolalar kullanılabilsin" ], @@ -13704,6 +14366,9 @@ "Automated confirmations and alerts": [ "Otomatik onaylar ve uyarılar" ], + "Automatic email forwarding": [ + "Otomatik e-posta iletme" + ], "Automatically save contacts": [ "Kişileri otomatik olarak kaydet" ], @@ -13743,11 +14408,14 @@ "Block malware, ads and trackers": [ "Kötü amaçlı yazılımlar, reklamlar ve etkinlik izleyiciler engellensin" ], + "Block trackers and marketers": [ + "Etkinlik izleyicileri ve pazarlamacıları engelleyin" + ], "Bookings, billings, and orders": [ "Rezervasyonlar, faturalar ve siparişler" ], "Brand your workspace": [ - "Çalışma alanınızı kişiselleştirin" + "Çalışma alanınızı markalayın" ], "Browser": [ "Tarayıcı" @@ -13782,6 +14450,9 @@ "Cash": [ "Nakit" ], + "Catch-all email address": [ + "Tümünü toplayan e-posta adresi" + ], "Categories": [ "Kategoriler" ], @@ -13854,6 +14525,9 @@ "Confirm login password": [ "Yeni oturum açma parolası onayı" ], + "Confirm MX records added": [ + "Eklenen MX kayıtlarını onayla" + ], "Confirm new password": [ "Yeni parola onayı" ], @@ -14000,7 +14674,7 @@ "Bir daha sorma" ], "Don't keep versions": [ - "Sürümleri tutma" + "Sürüm geçmişi tutulmasın" ], "Don't show this again": [ "Bu bir daha görüntülenmesin" @@ -14017,15 +14691,27 @@ "e.g. example.com": [ "örnek: ornek.com" ], + "Early access": [ + "Erken erişim" + ], "Email": [ "E-posta" ], "Email address": [ "E-posta adresi" ], + "Email addresses": [ + "E-posta adresleri" + ], + "Email addresses per user": [ + "Her kullanıcı için e-posta adresi" + ], "Email or username": [ "E-posta adresi ya da kullanıcı adı" ], + "Email with @yourcompany.com domain": [ + "@kurulusunuz.com etki alanı ile e-posta" + ], "Emails (all messages)": [ "E-postalar (tüm iletiler)" ], @@ -14044,6 +14730,9 @@ "Enable ${ DARK_WEB_MONITORING_NAME } for ${ domain.DomainName }": [ "${ domain.DomainName } için ${ DARK_WEB_MONITORING_NAME } özelliğini aç" ], + "Enable categories": [ + "Kategorileri kullanıma al" + ], "Enabled": [ "Kullanılıyor" ], @@ -14120,7 +14809,7 @@ "Klasör konumu" ], "Folders, labels, and filters": [ - "Klasörler, etiketler ve filtreler" + "Klasörler, etiketler ve süzgeçler" ], "Font family": [ "Yazı tipi ailesi" @@ -14141,7 +14830,7 @@ "Free" ], "Free VPN included": [ - "Free VPN dahil" + "Free VPN ile" ], "From: ${ fromEmail }": [ "Kimden: ${ fromEmail }" @@ -14191,6 +14880,9 @@ "Highest VPN speed": [ "En yüksek VPN hızı" ], + "Host name": [ + "Sunucu adı" + ], "I understand that I'll need to add this email address to the other account immediately, to avoid losing this address permanently.": [ "Bu e-posta adresini kalıcı olarak kaybetmemek için bu adresi şu anda başka bir hesaba eklemem gerektiğini anladım." ], @@ -14309,7 +15001,7 @@ "Temel iptal etme nedeni" ], "Make sure you have access to a recovery email or phone, and have a data recovery option.": [ - "Kurtarma e-posta adresine veya telefon numarasına erişiminizin olduğundan ve veri kurtarma seçeneğinizin bulunduğundan emin olun." + "Kurtarma e-posta adresine veya telefon numarasına erişebildiğinizden ve bir verileri kurtarma ayarladığınızdan emin olun." ], "Manage categories": [ "Kategori yönetimi" @@ -14383,6 +15075,9 @@ "Must have at least ${ MIN_PASSWORD_LENGTH } characters": [ "En az ${ MIN_PASSWORD_LENGTH } karakterden oluşmalıdır" ], + "MX records": [ + "MX kayıtları" + ], "Name": [ "Ad" ], @@ -14449,12 +15144,18 @@ "Online privacy for your whole family": [ "Tüm aileniz için çevrim içi gizlilik" ], + "Online productivity suite": [ + "Çevrim içi üretkenlik paketi" + ], "Only a single personal vault can be created": [ "Yalnızca tek bir kişisel kasa oluşturulabilir" ], "Only available on ${ PASS_SHORT_APP_NAME } paid plans": [ "Yalnızca ücretli ${ PASS_SHORT_APP_NAME } tarifeleri ile kullanılabilir" ], + "Open-source code": [ + "Açık kaynaklı kod" + ], "OpenVPN password": [ "OpenVPN parolası" ], @@ -14515,6 +15216,9 @@ "Pending": [ "Bekliyor" ], + "Personal and work emails, plus important updates and notifications": [ + "Kişisel ve iş e-postalarının yanı sıra önemli güncellemeler ve bildirimler" + ], "Phone number": [ "Telefon numarası" ], @@ -14548,12 +15252,21 @@ "Postal code": [ "Posta kodu" ], + "Premium features included": [ + "Ücretli özelliklerle birlikte" + ], "Previous password": [ "Önceki parola" ], "Primary": [ "Birincil saat dilimi" ], + "Priority": [ + "Öncelik" + ], + "Priority support": [ + "Öncelikli destek" + ], "Promotions": [ "Kazançlar" ], @@ -14564,7 +15277,7 @@ "Hesap bakiyesi" ], "Protected by Swiss privacy laws": [ - "İsviçre gizlilik yasalarıyla korunmaktadır" + "İsviçre gizlilik yasaları tarafından korunur" ], "Protection mode": [ "Koruma kipi" @@ -14641,6 +15354,9 @@ "Secure password generator": [ "Güvenli parola oluşturucu" ], + "See your team's availability": [ + "Ekibinizin uygunluk durumunu görün" + ], "Select Linux package format": [ "Linux paketi biçimini seçin" ], @@ -14674,6 +15390,9 @@ "Shared between ${ MAIL_SHORT_APP_NAME }, ${ CALENDAR_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME }, and ${ WALLET_SHORT_APP_NAME }.": [ "${ MAIL_SHORT_APP_NAME }, ${ CALENDAR_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME } ve ${ WALLET_SHORT_APP_NAME } arasında paylaşılır." ], + "Short domain @pm.me": [ + "Kısa etki alanı @pm.me" + ], "Show ${ n } administrator": [ "${ n } yöneticiyi görüntüle", "${ n } yöneticiyi görüntüle" @@ -14762,6 +15481,9 @@ "Storage": [ "Depolama alanı" ], + "Storage per user": [ + "Her kullanıcı için depolama alanı" + ], "Street address": [ "Sokak adresi" ], @@ -14774,6 +15496,9 @@ "Subscription options": [ "Abonelik seçenekleri" ], + "Support for multiple users": [ + "Çok kullanıcı desteği" + ], "Swipe left action": [ "Sola kaydırma işlemi" ], @@ -14792,6 +15517,9 @@ "Then": [ "Ardından" ], + "Third-party ads": [ + "Üçüncü taraf reklamlar" + ], "Thomas": [ "Ali" ], @@ -14867,6 +15595,9 @@ "Use folder colors": [ "Klasör renkleri kullanılsın" ], + "Use your own email domain": [ + "Kendi e-posta etki alanınızı kullanın" + ], "User": [ "Kullanıcı" ], @@ -14894,6 +15625,9 @@ "Verify keys with Key Transparency": [ "Anahtarlar anahtar saydamlığı ile doğrulansın" ], + "Version history": [ + "Sürüm geçmişi" + ], "Video conferencing with Zoom": [ "Zoom ile görüntülü görüşme" ], @@ -14906,6 +15640,9 @@ "Vulnerable password": [ "Güvenlik açığı bulunan parola" ], + "We securely stored recovery information on this device.": [ + "Kurtarma bilgileri bu aygıta güvenli olarak kaydedildi." + ], "Weak": [ "Zayıf" ], @@ -14936,12 +15673,18 @@ "Yearly": [ "Yıllık" ], + "Yearly free storage bonus": [ + "Yıllık ücretsiz depolama alanı hediyesi" + ], "Yes": [ "Evet" ], "Yes, I want to permanently delete this account and all its data.": [ "Evet, bu hesabı ve tüm verilerini kalıcı olarak silmek istiyorum." ], + "You don't have permissions": [ + "İzniniz yok" + ], "Your activation code:": [ "Etkinleştirme kodunuz:" ], @@ -14966,6 +15709,9 @@ "Your recovery email": [ "Kurtarma e-posta adresiniz" ], + "Your recovery phone number": [ + "Kurtarma telefon numaranız" + ], "Your voucher for your reserved ${ BRAND_NAME } email address:": [ "Ayırttığınız ${ BRAND_NAME } e-posta adresinizin kuponu:" ], @@ -14984,10 +15730,13 @@ "Bildirim telefon numarası" ], "Recovery phone number": [ - "Kurtarma telefonu numarası" + "Kurtarma telefon numarası" ], "Recovery phrase": [ "Kurtarma ifadesi" + ], + "Set recovery phone number": [ + "Kurtarma telefon numarası ayarla" ] }, "Label (begin date/advanced search)": { @@ -15029,6 +15778,26 @@ "Lütfen aşağıdaki TXT kaydını ekleyin. Not: DNS kayıtlarının güncellenmesi birkaç saat sürebilir." ] }, + "Label for domain setup": { + "${ capitalizedGroup } record not found": [ + "${ capitalizedGroup } kaydı bulunamadı" + ], + "Host name": [ + "Sunucu adı" + ], + "Invalid ${ group.name } record found": [ + "Geçersiz ${ group.name } kaydı bulundu" + ], + "Type": [ + "Tür" + ], + "Use default value": [ + "Varsayılan değer kullanılsın" + ], + "Valid ${ group.name } record found": [ + "Geçerli ${ group.name } kaydı bulundu" + ] + }, "Label for new member": { "Admin": [ "Yönetici" @@ -15194,6 +15963,9 @@ "data recovery option": [ "verileri kurtarma seçeneği" ], + "Detailed instructions": [ + "Ayrıntılı yönergeler" + ], "Details": [ "Ayrıntılar" ], @@ -15368,6 +16140,9 @@ "Upgrade your plan": [ "Tarifenizi yükseltin" ], + "use a data recovery method": [ + "bir veri kurtarma yöntemi kullanın" + ], "Vault": [ "Kasa" ], @@ -15701,10 +16476,10 @@ "${ n } katılımcı" ], "24 hours per meeting": [ - "Görüşme başına 24 saat" + "Her görüşme için 24 saat süre" ], "60 minutes per meeting": [ - "Görüşme başına 60 dakika" + "Her görüşme için 60 dakika süre" ], "Booking pages": [ "Rezervasyon sayfaları" @@ -15715,21 +16490,45 @@ "Built-in chat": [ "Hazır sohbet" ], + "Cloud storage and file sharing": [ + "Bulut depolama alanı ve dosya paylaşımı" + ], + "Data retention policies": [ + "Verileri tutma ilkeleri" + ], + "Document and spreadsheet editor": [ + "Belge ve elektronik tablo düzenleyici" + ], + "Email writing assistant": [ + "E-posta yazma yardımcısı" + ], "End-to-end encrypted screen sharing and ephemeral in-call chat": [ "Uçtan uca şifrelenmiş ekran paylaşımı ve geçici çağrı içi sohbet" ], "Hosts can record meetings locally on their computers": [ "Oturum sahipleri görüşmeleri kendi bilgisayarlarına yerel olarak kaydedebilir" ], + "Includes Meet Professional": [ + "Meet Professional ile" + ], "Meeting recording": [ "Görüşme kaydı" ], "One active meeting at a time": [ "Aynı anda bir etkin görüşme" ], + "Password manager with team vaults": [ + "Ekip kasaları ile parola yöneticisi" + ], + "Private AI Chat (${ LUMO_SHORT_APP_NAME })": [ + "Gizliliği koruyan yapay zeka sohbeti (${ LUMO_SHORT_APP_NAME })" + ], "Screen-sharing": [ "Ekran paylaşımı" ], + "Secure mail and calendar": [ + "Güvenli e-posta ve takvim" + ], "Unlimited meetings per day": [ "Günlük sınırsız görüşme" ], @@ -15744,6 +16543,9 @@ "Video meetings, ${ n } participant": [ "Görüntülü görüşmeler, ${ n } katılımcı", "Görüntülü görüşmeler, ${ n } katılımcı" + ], + "VPN with ad-blocker and malware protection": [ + "Reklam engelleyici ve kötü amaçlı yazılım koruması ile VPN" ] }, "meet_2025: Info": { @@ -15761,7 +16563,7 @@ "Veriler asla yapay zekayı eğitmek için kullanılmaz" ], "Document & spreadsheet editor": [ - "Belge ve hesap tablosu düzenleyici" + "Belge ve elektronik tablo düzenleyici" ], "Email writing assistant": [ "E-posta yazma yardımcısı" @@ -16413,6 +17215,9 @@ "99.95% SLA": [ "%99.95 hizmet sürekliliği" ], + "Access all countries": [ + "Tüm ülkelere erişin" + ], "Activity logs and policy": [ "Etkinlik günlükleri ve ilke" ], @@ -16434,6 +17239,9 @@ "Advanced network security": [ "Gelişmiş ağ güvenliği" ], + "Advanced workspace security": [ + "Gelişmiş çalışma alanı güvenliği" + ], "All ${ BRAND_NAME } products and features": [ "Tüm ${ BRAND_NAME } ürünleri ve özellikleri" ], @@ -16526,7 +17334,7 @@ "DNS sızıntısı önleme" ], "Double hop": [ - "Double hop" + "Çift durak" ], "Easy Switch import assistant": [ "Easy Switch içe aktarma yardımcısı" @@ -16592,6 +17400,9 @@ "Multiple admin roles": [ "Birden çok yönetici rolü" ], + "No streaming support": [ + "Yayın akışı desteği yok" + ], "No-logs policy": [ "Kayıt tutmama ilkesi" ], @@ -16647,7 +17458,7 @@ "Hesap güvenliğinizi düzenli olarak denetleriz. Güncellenmesi gereken zayıf ya da yeniden kullanılmış parolalarınız varsa sizi uyarırız." ], "Require 2FA for organization": [ - "Kuruluş için iki adımlı doğrulama gereksin" + "Kuruluş çapında iki adımlı doğrulamayı zorlama" ], "Router support": [ "Yönlendirici desteği" @@ -16671,7 +17482,7 @@ "Güvenli parola yönetimi" ], "See team's availability": [ - "Ekibin uygunluğuna bakın" + "Ekibin uygunluğunu görme" ], "Send & receive invitations": [ "Davetleri alma ve gönderme" @@ -16681,7 +17492,7 @@ "${ vpnServersCountData.paid.countries } üzerinde ülkede sunucular" ], "Share files with no size limit": [ - "Dosyaları boyut sınırı olmadan paylaşın" + "Dosyaları boyut sınırı olmadan paylaşma" ], "Short domain (@pm.me)": [ "Kısa etki alanı (@pm.me)" @@ -16708,7 +17519,7 @@ "2 kullanıcıya kadar destek" ], "Sync and backup all your files across devices": [ - "Tüm dosyalarınızı aygıtlarınız arasında eşitleyin ve yedekleyin" + "Tüm dosyalarınızı aygıtlarınız arasında eşitleme ve yedekleme" ], "Tailored to your needs": [ "Gereksinimlerinize göre uyarlanmış" @@ -16744,7 +17555,7 @@ "Her gün sınırsız sayıda ileti" ], "Unlimited shared ${ PASS_SHORT_APP_NAME } vaults per user": [ - "Her kullanıcı için sınırsız paylaşılan ${ PASS_SHORT_APP_NAME } kasası" + "Her kullanıcı için sınırsız sayıda paylaşılan ${ PASS_SHORT_APP_NAME } kasası" ], "Unlimited shared vaults with access permissions": [ "Erişim izinleri ile sınırsız sayıda paylaşılan kasa" @@ -16753,11 +17564,14 @@ "Sınırsız kasa paylaşımı" ], "Unlimited vaults": [ - "Sınırsız kasa" + "Sınırsız sayıda kasa" ], "Unlimited volume/bandwidth": [ "Sınırsız trafik/bant genişliği" ], + "Unlock streaming": [ + "Yayın akışı hizmetlerine erişin" + ], "Up to ${ n } user": [ "${ n } kullanıcıya kadar", "${ n } kullanıcıya kadar" @@ -16777,13 +17591,13 @@ "Aynı anda ${ n } aygıta kadar kullanın" ], "User credential management": [ - "Kullanıcı kimlik doğrulama bilgileri yönetimi" + "Kullanıcı kimlik doğrulama bilgilerini yönetme" ], "User session management": [ - "Kullanıcı oturumları yönetimi" + "Kullanıcı oturumlarını yönetme" ], "User storage management": [ - "Kullanıcı depolama alanı yönetimi" + "Kullanıcı depolama alanını yönetme" ], "Vault sharing (up to ${ n } person)": [ "Kasa paylaşma (${ n } kişiye kadar)", @@ -17228,10 +18042,14 @@ "${ plus }, ${ bundle } ve ${ BRAND_NAME } for Business tarifelerinde bulunur." ], "Included with multiple users ${ BRAND_NAME } for Business plans.": [ - "${ BRAND_NAME } Business tarifelerinde birden çok kullanıcı ile bulunur." + "${ BRAND_NAME } Business tarifeleri birden çok kullanıcı ile sunulur." ] }, "new_plans: Upsell attribute": { + "${ n } country": [ + "${ n } ülke", + "${ n } ülke" + ], "Access advanced VPN features": [ "Gelişmiş VPN özelliklerine erişin" ], @@ -17293,8 +18111,8 @@ "${ app } product updates": [ "${ app } ürün güncellemeleri" ], - "${ BRAND_NAME } for Business newsletter": [ - "${ BRAND_NAME } for Business bülteni" + "${ BRAND_NAME } for Business communications": [ + "${ BRAND_NAME } for Business iletişimleri" ], "${ BRAND_NAME } important announcements": [ "Önemli ${ BRAND_NAME } duyuruları" @@ -17347,8 +18165,8 @@ "During your first month of using a ${ BRAND_NAME } product": [ "Bir ${ BRAND_NAME } ürünü kullandığınız ilk ay boyunca" ], - "Email subscriptions": [ - "E-posta abonelikleri" + "Email communications": [ + "E-posta iletişimleri" ], "In-app notifications": [ "Uygulama içi bildirimler" @@ -17939,6 +18757,9 @@ "Plain text": [ "Düz yazı" ], + "Push notifications": [ + "Anlık bildirimler" + ], "Receive from all": [ "Tümünden al" ], @@ -18157,6 +18978,11 @@ "PKGBUILD (diğer dağıtımlar için)" ] }, + "Paragraph": { + "${ BRAND_NAME } is independently funded and operates without advertising. Below are examples of how this independence has been used in practice.": [ + "${ BRAND_NAME } bağımsız olarak finanse edilir ve reklamsız çalışır. Aşağıda, bu bağımsızlığın pratikte nasıl kullanıldığı ile ilgili örnekleri görebilirsiniz." + ] + }, "Participant name": { "You": [ "Siz" @@ -18430,14 +19256,14 @@ "per month, billed every two years": [ "aylık, iki yılda bir faturalanır" ], - "Preparing your Recovery Kit": [ - "Kurtarma paketiniz hazırlanıyor" + "Preparing your recovery phrase": [ + "Kurtarma ifadeniz hazırlanıyor" ], "Protected by Swiss privacy laws": [ "İsviçre gizlilik yasaları tarafından korunur" ], - "Save your recovery kit to continue": [ - "İlerlemek için kurtarma paketinizi kaydedin" + "Save your recovery phrase to continue": [ + "İlerlemek için kurtarma ifadenizi kaydedin" ], "Secure vault sharing": [ "Güvenli kasa paylaşımı" @@ -18774,7 +19600,7 @@ "Ödeme işleniyor" ], "Renewal pricing subject to change according to ${ termsAndConditionsLink }.": [ - "Yenileme fiyatları ${ termsAndConditionsLink } metnine göre değişebilir." + "Yenileme fiyatları ${ termsAndConditionsLink } içeriğine göre değişebilir." ], "Renews at ${ renewPriceStr }, cancel anytime.": [ "${ renewPriceStr } tutar ile yenilenir. İstediğiniz zaman iptal edebilirsiniz." @@ -19157,6 +19983,9 @@ "Search for an email or IP address": [ "Bir e-posta adresi ya da IP adresi arayın" ], + "Search for users or addresses": [ + "Kullanıcıları veya adresleri ara" + ], "Search parent folder": [ "Üst klasörü ara" ], @@ -19306,18 +20135,18 @@ ] }, "PQC account key generation": { - "Couldn’t generate keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\n${ settingsLink } and select 'Generate key' for your account and for each address.": [ - "Anahtarlar oluşturulamadı. Kuantum sonrası korumasını açmak için yeni şifreleme anahtarlarınızı el ile oluşturmanız gerekir.\n\n${ settingsLink } bağlantısıdan hesabınızdaki her adres için 'Anahtar oluştur' seçeneğini kullanın." + "Couldn’t generate keys. To activate post-quantum protection, you’ll need to finish generating your new post-quantum encryption keys.\n\n${ goToSettingsLink } and select 'Generate missing keys'.": [ + "Anahtarlar oluşturulamadı. Kuantum sonrası korumayı etkinleştirmek için yeni kuantum sonrası şifreleme anahtarlarını oluşturulmanız gerekiyor.\n\n${ goToSettingsLink } kısmına gidin ve 'Eksik anahtarları oluştur' seçeneğini seçin." ] }, "PQC adress key generation": { - "Couldn’t generate address keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\nGo to ${ settingsLink } and select 'Generate key' for each address.": [ - "Adres anahtarları oluşturulamadı. Kuantum sonrası korumasını açmak için yeni şifreleme anahtarlarınızı el ile oluşturmanız gerekir.\n\n${ settingsLink } bağlantısından her adres için 'Anahtar oluştur' seçeneğini kullanın." + "Couldn’t generate address keys. To activate post-quantum protection, you’ll need to finish generating your new post-quantum encryption keys for each address.\n\n${ goToSettingsLink } and select 'Generate missing keys'.": [ + "Adres anahtarları oluşturulamadı. Kuantum sonrası korumayı etkinleştirmek için her bir adrese özel yeni kuantum sonrası şifreleme anahtarlarınızı oluşturmanız gerekecek.\n\n${ goToSettingsLink } bağlantısından ve 'Eksik anahtarları oluştur' seçeneğini kullanın." ] }, "PQC compatibility warning": { - "**You must update all ${ BRAND_NAME } mobile apps**: your new keys won't work on older app versions.": [ - "**Tüm ${ BRAND_NAME } mobil uygulamalarını güncellemelisiniz**: Yeni anahtarlarınız eski uygulama sürümlerinde çalışmayacak." + "**You must update all ${ BRAND_NAME } apps**: your new keys won't work on older app versions.": [ + "**Tüm ${ BRAND_NAME } uygulamalarını güncellemelisiniz**: Yeni anahtarlarınız uygulamaların eski sürümlerinde çalışmayacak." ] }, "PQC key generation": { @@ -19577,7 +20406,7 @@ "Şimdi doğrula" ], "Verify now this recovery email address: ${ emailData.value }": [ - "${ emailData.value } kurtarma e-posta adresini doğrulayın" + "Kurtarma e-posta adresini doğrulayın: ${ emailData.value }" ], "Verify recovery email?": [ "Kurtarma e-postası doğrulansın mı?" @@ -19620,18 +20449,54 @@ "Şimdi doğrula" ], "Verify recovery phone?": [ - "Kurtarma telefonu doğrulansın mı?" + "Kurtarma telefon numarası doğrulansın mı?" + ], + "Verify this recovery phone number now: ${ phoneData.value }": [ + "Bu kurtarma telefon numarasını şimdi doğrulayın: ${ phoneData.value }" ], "Verifying your phone number increases your account security and allows additional options for recovery.": [ "Telefon numaranızı doğrulamak hesabınızın güvenliğini arttırır ve yeni bir kurtarma seçeneği ekler." ] }, "Recovery score": { + "${ score } / ${ maxScore } completed": [ + "${ score }/${ maxScore } tamamlandı" + ], + "Account protection": [ + "Hesap koruması" + ], + "Add more options for stronger protection": [ + "Harika. Daha güçlü bir koruma için başka seçenekler ekleyin" + ], + "Add more options to avoid getting locked out of your account.": [ + "Hesabınızın kilitlenmesini önlemek için başka seçenekler ekleyin." + ], + "Awesome. Keep your options up-to-date for stronger protection.": [ + "Harika. Daha güçlü koruma için seçeneklerinizi güncel tutun." + ], + "Good start. Add more options for a stronger protection.": [ + "İyi bir başlangıç. Daha güçlü bir koruma için diğer seçenekleri ekleyin." + ], "Great. Add more options for a stronger protection.": [ - "Harika. Daha güçlü bir koruma için daha fazla seçenek ekleyin." + "Harika. Daha güçlü bir koruma için başka seçenekler ekleyin." + ], + "How you increased your account protection": [ + "Hesap korumanızı nasıl artırdınız" + ], + "Inactive recovery options": [ + "Etkin olmayan kurtarma seçenekleri" + ], + "Maximum": [ + "En fazla" ], "Partial": [ - "Kısmi" + "Parçalı" + ], + "Recovery score: ${ score }": [ + "Kurtarma puanı: ${ score }" + ], + "Require verified password reset option (email or SMS)": [ + "Doğrulanmış parola sıfırlama seçeneğini zorunlu kılın (e-posta veya SMS)" ], "Score: ${ score } / ${ maxScore }": [ "Puan: ${ score } / ${ maxScore }" @@ -19639,25 +20504,85 @@ "Strong": [ "Güçlü" ], + "Unprotected": [ + "Korunmuyor" + ], "Weak": [ "Zayıf" ] }, "Recovery score item": { + "Add emergency contacts": [ + "Acil durum kişileri ekle" + ], + "Add recovery contacts": [ + "Acil durum kişileri ekle" + ], + "Add recovery email": [ + "Kurtarma e-posta adresi ekle" + ], "Add recovery phone": [ - "Kurtarma telefonu ekle" + "Kurtarma telefon numarası ekle" ], "Allow data recovery on this device": [ - "Bu aygıttan veri kurtarmaya izin ver" + "Veriler, bu aygıt kullanılarak kurtarılabilsin" ], "Allow password reset from settings": [ - "Ayarlar'dan parola sıfırlamasına izin ver" + "Parola ayarlar bölümünden sıfırlanabilsin" ], "Allow scanning QR code to sign in": [ - "Oturum açmak için karekod taramaya izin ver" + "Kare kod tarayarak oturum açılabilsin" + ], + "Data recovery allowed on this device": [ + "Bu aygıtta veri kurtarmaya izin verildi" + ], + "Download recovery file": [ + "Kurtarma dosyasını indirin" + ], + "Email recovery enabled": [ + "E-posta adresi ile kurtarma açıldı" + ], + "Emergency contacts added": [ + "Acil durum kişileri eklendi" + ], + "Enable email recovery": [ + "E-posta ile kurtarmayı aç" + ], + "Enable recovery by phone": [ + "Telefon numarası ile kurtarmayı açın" + ], + "Password reset allowed from settings": [ + "Ayarlar bölümünden parolayı sıfırlayabilme" + ], + "Password verified": [ + "Parola onaylandı" + ], + "Phone recovery enabled": [ + "Telefon numarası ile kurtarma açıldı" + ], + "Recovery contacts added": [ + "Kurtarma kişileri eklendi" + ], + "Recovery file downloaded": [ + "Kurtarma dosyası indirildi" + ], + "Recovery phrase saved": [ + "Kurtarma ifadesi kaydedildi" ], "Save recovery phrase": [ "Kurtarma ifadesini kaydet" + ], + "Sign-in with QR code allowed": [ + "Kare kod ile oturum açılabilir" + ], + "Verify password": [ + "Parolayı doğrulayın" + ], + "Verify recovery email": [ + "Kurtarma e-postasını doğrula" + ], + "Verify recovery phone": [ + "Kurtarma telefon numarasını doğrulayın" ] }, "RecoveryPhrase: Action": { @@ -19672,6 +20597,9 @@ ] }, "RecoveryPhrase: Info": { + "**Make sure you keep your recovery phrase accessible after creating it.** For security reasons, we do not store the phrase after saving your changes, and you won’t be able to see it again in the ${ BRAND_NAME } app.": [ + "**Kurtarma ifadenizi oluşturduktan sonra ona her zaman erişebildiğinizden emin olun.** Değişikliklerinizi kaydettikten sonra ifadeyi güvenlik nedeniyle saklamıyoruz ve bu ifadeyi ${ BRAND_NAME } uygulamasında bir daha göremeyeceksiniz." + ], "copy recovery phrase": [ "kurtarma ifadesini kopyala" ], @@ -19693,14 +20621,11 @@ "Or ${ downloadRecoveryKitSwitchButton } instead.": [ "Ya da ${ downloadRecoveryKitSwitchButton } kullanın." ], - "Your **Recovery Kit** lets you restore your ${ BRAND_NAME } Account if you’re locked out.": [ - "**Kurtarma paketiniz**, hesabınız kilitlenirse ${ BRAND_NAME } hesabınıza erişmenizi sağlar." + "Your **recovery phrase** lets you restore your ${ BRAND_NAME } Account if you’re locked out.": [ + "**Kurtarma ifadeniz**, hesabınız kilitlenirse ${ BRAND_NAME } hesabınıza erişmenizi sağlar." ] }, "RecoveryPhrase: Title": { - "Save your Recovery Kit": [ - "Kurtarma paketinizi güncelleyin" - ], "Save your recovery phrase": [ "Kurtarma ifadenizi kaydedin" ] @@ -20040,10 +20965,10 @@ }, "Safety review": { " **Disable recovery by phone** to prevent attackers from taking over your account.": [ - " Saldırganların hesabınızı ele geçirmesini önlemek için **telefon ile hesap kurtarmayı kapatın**." + " Saldırganların hesabınızı ele geçirmesini önlemek için **telefon numarası ile kurtarmayı kapatın**." ], " **Enable recovery by phone** to regain access to your account if you forget your password.": [ - " Parolanızı unutursanız hesabınıza yeniden erişebilmek için **Telefon ile kurtarmayı açın**." + " Parolanızı unutursanız hesabınıza yeniden erişebilmek için **Telefon numarası ile kurtarmayı açın**." ], "${ BRAND_NAME } will use this address to keep you updated on your account security.": [ "${ BRAND_NAME } bu adresi, size hesap güvenliğinizle ilgili bildirimler göndermek için kullanır." @@ -20082,7 +21007,7 @@ "Bir kurtarma e-posta adresi ekleyin" ], "Add a recovery phone number": [ - "Bir kurtarma telefonu numarası ekleyin" + "Bir kurtarma telefon numarası ekleyin" ], "Add an alternative email address": [ "Alternatif bir e-posta adresi ekleyin" @@ -20093,8 +21018,8 @@ "Back to Safety Review": [ "Güvenlik değerlendirmesine dön" ], - "Because you reset your password, your current Recovery Kit can only be used to recover the data created before your password reset.": [ - "Parolanızı sıfırlarsanız var olan kurtarma paketiniz yalnızca parolanızı sıfırlamadan önce oluşturulan verileri kurtarmak için kullanılabilir." + "Because you reset your password, your current recovery phrase can only be used to recover the data created before your password reset.": [ + "Parolanızı sıfırladığınız için geçerli kurtarma ifadeniz yalnızca parola sıfırlama işleminden önce oluşturulmuş verileri kurtarmak için kullanılabilir." ], "Can be used to regain access to your account and data": [ "Hesabınıza ve verilerinize yeniden erişebilmeniz için kullanılabilir" @@ -20115,16 +21040,16 @@ "E-posta ile hesap sıfırlamayı kapatın" ], "Disable recovery by email": [ - "E-posta ile kurtarmayı kapat" + "E-posta ile kurtarmayı kapatın" ], "Disable recovery by phone": [ - "Telefon ile hesap kurtarmayı kapatın" + "Telefon numarası ile kurtarmayı kapatın" ], "Download ${ size }": [ "${ size } indir" ], - "Download your Recovery Kit": [ - "Kurtarma paketinizi indirin" + "Download your recovery phrase": [ + "Kurtarma ifadenizi indirin" ], "Email address": [ "E-posta adresi" @@ -20133,13 +21058,13 @@ "Aygıt ile kurtarmayı açın" ], "Enable recovery by email": [ - "E-posta ile hesap kurtarmayı açın" + "E-posta ile kurtarmayı açın" ], "Enable recovery by phone": [ - "Telefon ile hesap kurtarmayı açın" + "Telefon numarası ile kurtarmayı açın" ], - "I understand that I will not be able to recover currently locked data with this Recovery Kit": [ - "Bu kurtarma paketi ile şu anda kilitlenmiş verileri kurtaramayacağımı anladım" + "I understand that I will not be able to recover currently locked data with this recovery phrase": [ + "Bu kurtarma ifadesiyle şu anda kilitli olan verileri kurtaramayacağımı anlıyorum" ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in on this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "${ BRAND_NAME } parolanızı unutursanız ve sıfırlamanız gerekirse, yeni parolanızı bu aygıtta kullanarak oturum açtığınızda ${ BRAND_NAME } hesabınıza yeniden tam erişim sağlayabilirsiniz." @@ -20147,8 +21072,8 @@ "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "${ BRAND_NAME } parolanızı unutursanız ve sıfırlamanız gerekirse, yeni parolanızı bu aygıtta kullanarak oturum açtığınızda ${ BRAND_NAME } hesabınıza yeniden tam erişim sağlayabilirsiniz." ], - "If you get locked out of your ${ BRAND_NAME } Account, your Recovery Kit will allow you to sign in and recover your data.": [ - "${ BRAND_NAME } hesabınıza erişiminizi kaybederseniz, kurtarma paketiniz oturum açmanızı ve verilerinizi kurtarmanızı sağlar." + "If you get locked out of your ${ BRAND_NAME } Account, your recovery phrase will allow you to sign in and recover your data.": [ + "${ BRAND_NAME } hesabınıza erişiminizi kaybederseniz, kurtarma ifadeniz oturum açmanızı ve verilerinizi kurtarmanızı sağlar." ], "If you lose your login details and need to reset your account, **it’s imperative** that you have both an **account recovery and data recovery method** in place, otherwise you might not be able to access any of your emails, contacts, files or passwords.": [ "Oturum açma bilgilerinizi kaybederseniz ve hesabınızı sıfırlamanız gerekirse, hem **hesap kurtarma hem de veri kurtarma yöntemlerini** kullanıyor olmanız **zorunludur**. Yoksa e-postalarınıza, kişilerinize, dosyalarınıza veya parolalarınıza erişemeyebilirsiniz." @@ -20192,8 +21117,8 @@ "Take action to secure your account": [ "Hesabınızı korumak için önlem alın" ], - "There was an error generating your Recovery Kit": [ - "Kurtarma paketiniz oluşturulurken bir sorun çıktı" + "There was an error generating your recovery phrase": [ + "Kurtarma ifadeniz oluşturulurken bir sorun çıktı" ], "There was an error verifying your email": [ "E-postanız doğrulanırken bir sorun çıktı" @@ -20202,7 +21127,7 @@ "Kurtarma e-posta adresiniz doğrulanırken bir sorun çıktı" ], "There was an error verifying your recovery phone": [ - "Kurtarma telefonunuz doğrulanırken bir sorun çıktı" + "Kurtarma telefon numaranız doğrulanırken bir sorun çıktı" ], "to automatically recover your data when you log into a trusted device": [ "güvenilen bir aygıtla oturum açtığınızda verilerinizi otomatik olarak kurtarmak için" @@ -20222,11 +21147,11 @@ "to recover your account if you're ever locked out": [ "kilitlenirse hesabınızı kurtarmak için" ], - "Update your Recovery Kit": [ - "Kurtarma paketinizi güncelleyin" + "Update your recovery phrase": [ + "Kurtarma ifadenizi güncelleyin" ], - "Update your Recovery Kit?": [ - "Kurtarma paketiniz güncellensin mi?" + "Update your recovery phrase?": [ + "Kurtarma ifadeniz güncellensin mi?" ], "Verify": [ "Doğrula" @@ -20243,8 +21168,8 @@ "Verify your recovery phone number": [ "Kurtarma telefon numaranızı doğrulayın" ], - "We encountered an error while generating your Recovery Kit. Please try again later, or contact support if the issue continues.": [ - "Kurtarma paketiniz oluşturulurken bir sorun çıktı. Lütfen bir süre sonra yeniden deneyin ya da sorun sürüyorsa destek ekibimizle görüşün." + "We encountered an error while generating your recovery phrase. Please try again later, or contact support if the issue continues.": [ + "Kurtatma ifadeniz oluşturulurken bir sorun çıktı. Lütfen bir süre sonra yeniden deneyin ya da sorun sürüyorsa destek ekibimizle görüşün." ], "We encountered an error while verifying your email. Please try again later, or contact support if the issue continues.": [ "E-posta adresiniz doğrulanırken bir sorun çıktı. Lütfen bir süre sonra yeniden deneyin ya da sorun sürüyorsa destek ekibimizle görüşün." @@ -20267,8 +21192,8 @@ "You can disable this at any time.": [ "Bu özelliği istediğiniz zaman kapatabilirsiniz." ], - "You can use the recovery phrase in this Recovery Kit to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ - "Parolanızı sıfırlarsanız hesabınızı tümüyle kurtarabilmek için bu kurtarma paketindeki kurtarma ifadesini kullanabilirsiniz. Bu nedenle onu güvenli bir yerde sakladığınızdan emin olun." + "You can use the recovery phrase in this recovery phrase to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ + "Parolanızı sıfırladığınızda bu kurtarma ifadesini kullanarak hesabınızı tümüyle geri yükleyebilirsiniz. Bu yüzden ifadenizi güvenli bir yerde sakladığınızdan emin olun." ], "You can use your email to regain access to your account if you forget your password.": [ "Parolanızı unutursanız hesabınıza yeniden erişebilmek için e-posta adresinizi kullanabilirsiniz." @@ -20279,8 +21204,8 @@ "You can use your recovery phone to regain access to your account if you forget your password.": [ "Parolanızı unutursanız hesabınıza yeniden erişebilmek için telefon ile kurtarmayı kullanabilirsiniz." ], - "You have previously downloaded a Recovery Kit. Downloading a new one will **deactivate the old one**.": [ - "Daha önce bir kurtarma paketi indirmişsiniz. Yeni bir paket indirdiğinizde **eskisi kullanımdan kaldırılır**." + "You have previously downloaded a recovery phrase. Downloading a new one will **deactivate the old one**.": [ + "Daha önce bir kurtarma ifadesi indirmişsiniz. Yeni bir ifade indirirseniz **eski ifade kullanımdan kaldırılır**." ], "You have recommended actions to safeguard your account further.": [ "Hesabınızın güvenliğini artırmak için yapabileceğiniz işlemler var." @@ -20337,7 +21262,7 @@ "Kurtarma e-posta adresiniz **yalnızca hesabınıza erişimi kurtarabilir**." ], "Your recovery email could be abused by attackers to take over your account. ${ disableEmail } to increase your account security.": [ - "Kurtarma e-posta adresiniz, saldırganlar tarafından hesabınızı ele geçirmek için kötüye kullanılabilir. Hesap güvenliğinizi artırmak için ${ disableEmail } kullanın." + "Kurtarma e-posta adresiniz, saldırganlar tarafından hesabınızı ele geçirmek için kötüye kullanılabilir. Hesap güvenliğinizi artırmak için ${ disableEmail }." ], "Your recovery email has been enabled": [ "Kurtarma e-posta adresiniz kullanıma alındı" @@ -20345,12 +21270,6 @@ "Your recovery email is set": [ "Kurtarma e-posta adresiniz ayarlandı" ], - "Your Recovery Kit": [ - "Kurtarma paketiniz" - ], - "Your Recovery Kit is set": [ - "Kurtarma paketiniz ayarlandı" - ], "Your recovery methods": [ "Kurtarma yöntemleriniz" ], @@ -20371,6 +21290,242 @@ ], "Your recovery phone number is:": [ "Kurtarma telefon numaranız:" + ], + "Your recovery phrase": [ + "Kurtarma ifadeniz" + ], + "Your recovery phrase is set": [ + "Kurtarma ifadeniz ayarlandı" + ] + }, + "safety_review": { + "${ BRAND_NAME } Account email": [ + "${ BRAND_NAME } hesabı e-posta adresi" + ], + "Account protection": [ + "Hesap koruması" + ], + "Add": [ + "Ekle" + ], + "Add an emergency contact": [ + "Acil durum kişisi ekle" + ], + "Add emergency contacts": [ + "Acil durum kişileri ekle" + ], + "Add options": [ + "Seçenek ekle" + ], + "Add people who you trust and can contact easily. Your emergency contact will be able to access your account and reset your password for you if needed.": [ + "Güvendiğiniz ve kolayca iletişim kurabileceğiniz kişileri ekleyin. Acil durum kişiniz gerektiğinde hesabınıza erişebilir ve parolanızı sizin yerinize sıfırlayabilir." + ], + "Add people you trust and can contact easily. They will be able to help you unlock your data after you reset your password.": [ + "Güvendiğiniz ve kolayca ulaşabileceğiniz kişileri ekleyin. Parolanızı sıfırladıktan sonra bu kişiler verilerinize erişmenize yardımcı olabilir." + ], + "Add phone number": [ + "Telefon numarası ekle" + ], + "Add recovery contacts": [ + "Kurtarma kişileri ekle" + ], + "Add recovery email": [ + "Kurtarma e-posta adresi ekle" + ], + "Add recovery phone": [ + "Kurtarma telefon numarası ekle" + ], + "Added emergency contacts": [ + "Acil durum kişileri eklendi" + ], + "Added recovery contacts": [ + "Kurtarma kişileri eklendi" + ], + "Added recovery email": [ + "Kurtarma e-posta adresi eklendi" + ], + "Added recovery phone": [ + "Kurtarma telefon numarası eklendi" + ], + "Allow": [ + "İzin ver" + ], + "Allow data recovery from this device": [ + "Bu aygıttan veriler kurtarılabilsin" + ], + "Allow password reset from the settings": [ + "Parola ayarlar bölümünden sıfırlanabilsin" + ], + "Allow recovery by email": [ + "E-posta ile hesap kurtarılabilsin" + ], + "Allow recovery by phone": [ + "Telefon numarası ile kurtarılabilsin" + ], + "Allow scanning a QR code to sign in": [ + "Kare kod tarayarak oturum açılabilsin" + ], + "Allow trusted friends to unlock your data": [ + "Güvendiğiniz arkadaşlarınızın verilerinize erişmesine izin verin" + ], + "Back to ${ backLink.appNameString }": [ + "${ backLink.appNameString } uygulamasına dön" + ], + "Congratulations": [ + "Tebrikler" + ], + "Didn’t receive it? ${ sendANewCode }": [ + "Kodu almadınız mı? ${ sendANewCode }" + ], + "Done": [ + "Tamam" + ], + "Download": [ + "İndir" + ], + "Download recovery file": [ + "Kurtarma dosyasını indir" + ], + "Downloaded recovery file": [ + "Kurtarma dosyası indirildi" + ], + "Emergency contacts enabled": [ + "Acil durum kişileri kullanıma alındı" + ], + "Enable device recovery": [ + "Aygıt ile kurtarmayı aç" + ], + "Enable email recovery": [ + "E-posta ile kurtarmayı aç" + ], + "Enable emergency contacts": [ + "Acil durum kişileri özelliğini aç" + ], + "Enable password reset from settings": [ + "Ayarlarda parola sıfırlama özelliğini açın" + ], + "Enable phone recovery": [ + "Telefon numarası ile kurtarmayı aç" + ], + "Enable QR code sign-in": [ + "Kare kod ile oturum açma özelliğini aç" + ], + "Enabled device recovery": [ + "Aygıt ile kurtarma açıldı" + ], + "Enabled email recovery": [ + "E-posta adresi ile kurtarma açıldı" + ], + "Enabled password reset from settings": [ + "Ayarlarda parola sıfırlama özelliği açıldı" + ], + "Enabled phone recovery": [ + "Telefon numarası ile kurtarma açıldı" + ], + "Enabled QR code sign-in": [ + "Kare kod ile oturum açma özelliği açıldı" + ], + "Got it": [ + "Anladım" + ], + "Here's how you increased your account protection:": [ + "Hesap güvenliğinizi şu şekilde artırdınız:" + ], + "If you forget your password, you can sign in using a QR code. All you need is to be signed in to a ${ BRAND_NAME } service on another device.": [ + "Parolanızı unutursanız kare kod ile oturum açabilirsiniz. Bunun için başka bir aygıtta ${ BRAND_NAME } hizmetinde oturumunuzun açık olması yeterlidir." + ], + "If you get locked out of your ${ BRAND_NAME } Account, it will allow you to sign in and recover your data. It’s the only way to instantly restore everything, so make sure you keep it somewhere safe.": [ + "${ BRAND_NAME } hesabınıza erişemediğinizde bu kodla oturum açabilir ve verilerinizi kurtarabilirsiniz. Her şeyi anında geri yüklemenin tek yolu budur. Bu nedenle bu kodu güvenli bir yerde sakladığınızdan emin olun." + ], + "Later": [ + "Daha sonra" + ], + "Protect your legacy with Emergency Access": [ + "Acil erişim ile mirasınızı koruyun" + ], + "Save recovery phrase": [ + "Kurtarma ifadesini kaydet" + ], + "Saved recovery phrase": [ + "Kaydedilmiş kurtarma ifadesi" + ], + "They must already have a ${ BRAND_NAME } Account.": [ + "Bir ${ BRAND_NAME } hesabı olması gereklidir." + ], + "They will not be able to see or access your data.": [ + "Verilerinizi göremeyecek ve erişemeyecekler." + ], + "This will let you quickly access your ${ BRAND_NAME } Account so you can change your password.": [ + "Böylece ${ BRAND_NAME } hesabınıza hızlıca erişebilir ve parolanızı değiştirebilirsiniz." + ], + "This will let you reset your account password if you’ve lost it, but are still signed in to ${ BRAND_NAME }. It’s often the easiest way to recover your account if you’re signed in.": [ + "Bu seçenek hesap parolanızı unuttuysanız ancak ${ BRAND_NAME } oturumunuz hâlâ açıksa parolanızı sıfırlamanızı sağlar. Oturumunuz açıkken hesabınızı kurtarmanın genellikle en kolay yolu budur." + ], + "This will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset.": [ + "Bununla parola sıfırlama işleminden sonra hesabınızdaki e-postalara, kişilere, dosyalara, parolalara ve diğer tüm şifrelenmiş verilere yeniden erişebileceksiniz." + ], + "To make sure the email address is yours, enter the verification code sent to ${ boldEmail }.": [ + "E-posta adresinin size ait olduğundan emin olmak için ${ boldEmail } adresine gönderilen doğrulama kodunu yazın." + ], + "To make sure the phone number is yours, enter the verification code sent to ${ boldPhoneNumber }.": [ + "Telefon numarasının size ait olduğundan emin olmak için ${ boldPhoneNumber } numarasına gönderilen doğrulama kodunu yazın." + ], + "To make sure this address is really yours, we’ll send an email with a verification link.": [ + "Bu adresin gerçekten size ait olduğundan emin olmak için size doğrulama bağlantısı bulunan bir e-posta göndereceğiz." + ], + "Upgrade your plan to enable Emergency Access to your account. This will allow you to designate 1 to 5 people who will be able to reset your password for you.": [ + "Hesabınızda acil erişim özelliğini açmak için tarifenizi yükseltin. Böylece parolanızı sizin adınıza sıfırlayabilecek 1 - 5 kişi belirleyebilirsiniz." + ], + "Verified password": [ + "Parola doğrulanmış" + ], + "Verified recovery email": [ + "Doğrulanmış kurtarma e-posta adresi" + ], + "Verified recovery phone": [ + "Doğrulanmış kurtarma telefon numarası" + ], + "Verify": [ + "Doğrula" + ], + "Verify password": [ + "Parolayı doğrula" + ], + "Verify recovery email": [ + "Kurtarma e-postasını doğrula" + ], + "Verify recovery phone": [ + "Kurtarma telefon numarasını doğrula" + ], + "Verify your recovery email": [ + "Kurtarma e-postanızı doğrulayın" + ], + "Verify your recovery phone": [ + "Kurtarma telefon numarasını doğrula" + ], + "You can save a data backup on this device. This will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset, simply by signing in on this device.": [ + "Bu aygıta bir veri yedeği kaydedebilirsiniz. Böylece parolanızı sıfırladıktan sonra bu aygıtta oturum açarak hesabınızdaki e-postalara, kişilere, dosyalara, parolalara ve diğer tüm şifrelenmiş verilere yeniden erişebilirsiniz." + ], + "You can use email verification to regain access to your account if you forget your password.": [ + "Parolanızı unutursanız e-posta adresi ile doğrulamayı kullanarak hesabınıza yeniden erişebilirsiniz." + ], + "You can use SMS verification to regain access to your account if you forget your password.": [ + "Parolanızı unutursanız hesabınıza yeniden erişebilmek için SMS doğrulaması kullanabilirsiniz." + ], + "You can use your recovery email to regain access to your account if you forget your password.": [ + "Parolanızı unutursanız kurtarma e-posta adresinizi kullanarak hesabınıza yeniden erişebilirsiniz." + ], + "You can use your recovery phone to regain access to your account if you forget your password.": [ + "Parolanızı unutursanız hesabınıza yeniden erişebilmek için telefon numarası ile kurtarmayı kullanabilirsiniz." + ], + "You don’t need to open or read the file—just download it and store it somewhere safe.": [ + "Dosyayı açmanız veya okumanız gerekmez. Yalnızca indirin ve güvenli bir yere kaydedin." + ], + "Your recovery checklist": [ + "Kurtarma kontrol listeniz" + ], + "Your security setup": [ + "Güvenlik kurulumunuz" ] }, "saml: Action": { @@ -20576,6 +21731,17 @@ "Herhangi bir sonuç bulunamadı" ] }, + "Sentinel banner": { + "To ensure the highest possible security of your account, disable recovery via email and SMS.": [ + "Hesabınıza olabilecek en yüksek güvenliği sağlamak için e-posta adresi ve SMS ile kurtarma özelliklerini kapatın." + ], + "To make sure that you can always access your ${ BRAND_NAME } Account, download your recovery phrase.": [ + "${ BRAND_NAME } hesabınıza her zaman erişebilmek için kurtarma ifadenizi indirin." + ], + "You have recommended actions from ${ PROTON_SENTINEL_NAME }": [ + "${ PROTON_SENTINEL_NAME } tarafından önerilen işlemler var" + ] + }, "Server-Info": { "active": [ "etkin" @@ -20847,6 +22013,9 @@ ] }, "session_recovery:settings:info": { + "To disallow password reset from settings, you must save your recovery phrase.": [ + "Ayarlar bölümünden parola sıfırlamayı kapatmak için kurtarma ifadesini kaydetmelisiniz." + ], "To disallow password reset, you must have a recovery method set up.": [ "Parola sıfırlama özelliğini kapatmak için bir kurtarma yöntemi ayarlamanız gerekir." ], @@ -20904,11 +22073,8 @@ ] }, "Setting": { - "Enable Photos section": [ - "Fotoğraflar bölümünü etkinleştir" - ], "Get updates about comments via email": [ - "Yorum güncellemeleri e-posta ile bildirilsin" + "Yorumlarla ilgili güncellemeleri e-posta ile al" ], "Include document name in email notifications": [ "E-posta bildirimlerine belge adı eklensin" @@ -20923,6 +22089,9 @@ "Account": [ "Hesap" ], + "Managed Companies": [ + "Yönetilen Şirketler" + ], "Organization": [ "Kuruluş" ] @@ -21135,7 +22304,7 @@ "İş birliği ile belge düzenleme" ], "Collaborative documents and spreadsheets": [ - "İş birlikli çalışma belgeleri ve hesap tabloları" + "İş birlikli çalışma belgeleri ve elektronik tablolar" ], "Compare plans": [ "Tarifeleri karşılaştır" @@ -21776,11 +22945,35 @@ ] }, "Spotlight": { + "Assign delegated roles": [ + "Verilmiş roller atanıyor" + ], + "Assign roles": [ + "Rolleri atayın" + ], + "Click a user's name to manage their role and permissions.": [ + "Bir kullanıcının rolünü ve izinlerini yönetmek için adına tıklayın." + ], + "Click Edit to assign roles to this group and manage member access automatically.": [ + "Bu gruba roller atamak ve üye erişimini otomatik olarak yönetmek için Düzenle üzerine tıklayın." + ], "Earn up to ${ maxRewardAmount } in credit": [ "${ maxRewardAmount } tutarına kadar kredi kazanın" ], "Get credits when the person you invite subscribes to a ${ BRAND_NAME } plan.": [ "Davet ettiğiniz kişi bir ${ BRAND_NAME } tarifesine abone olduğunda kredi kazanın." + ], + "New: Roles and permissions tab": [ + "Yeni: Roller ve izinler sekmesi" + ], + "Open this tab to grant specific permissions without full admin access.": [ + "Tam yönetici erişimi olmadan belirli izinleri vermek için bu sekmeyi açın." + ], + "User roles available": [ + "Kullanılabilecek kullanıcı rolleri" + ], + "You can now assign roles to individual users from this tab.": [ + "Artık bu sekmeden kullanıcılara bireysel roller atayabilirsiniz." ] }, "sso": { @@ -22075,8 +23268,32 @@ "${ count } kişi", "${ count } kişi" ], - "No contact": [ - "Kişi yok" + "Add a phone number": [ + "Bir telefon numarası ekle" + ], + "Add an email address": [ + "Bir e-posta adresi ekleyin" + ], + "Available on this device": [ + "Bu aygıtta kullanılabilir" + ], + "Disable recovery by email": [ + "E-posta adresi ile kurtarmayı kapatın" + ], + "Disable recovery by phone": [ + "Telefon numarası ile kurtarmayı kapatın" + ], + "Generate a recovery phrase": [ + "Bir kurtarma ifadesi oluşturun" + ], + "Last changed ${ formattedDate }": [ + "Son değiştirilme ${ formattedDate }" + ], + "Last updated ${ formattedUpdateDate }": [ + "Son güncelleme ${ formattedUpdateDate }" + ], + "Not saved": [ + "Kaydedilmedi" ], "Off": [ "Kapalı" @@ -22085,7 +23302,16 @@ "Açık" ], "Outdated": [ - "Güncelliğini yitirmiş" + "Eski" + ], + "Saved": [ + "Kaydedildi" + ], + "Unverified": [ + "Doğrulanmamış" + ], + "Verified": [ + "Doğrulanmış" ], "Verify ${ value }": [ "${ value } doğrula" @@ -22219,7 +23445,7 @@ "En yüksek VPN hızına, 10 aygıt korumasına, yüksek hızlı yayın akışı izlemeye, reklam engelleyiciye, kötü amaçlı yazılım korumasına ve öncelikli desteğe erişiminizi kaybedeceksiniz." ], "You’ll lose access to unlimited logins and notes, unlimited hide-my-email aliases, 20 vaults, as well as priority support.": [ - "Sınırsız oturum açma kaydı ve notlara, sınırsız hide-my-email takma adına, 20 kasaya ve öncelikli desteğe erişiminizi kaydedeceksiniz." + "Sınırsız sayıda oturum açma kaydı ve notlara, sınırsız sayıda hide-my-email takma adına, 20 kasaya ve öncelikli desteğe erişiminizi kaydedeceksiniz." ] }, "Subscribe to calendar modal": { @@ -22393,10 +23619,10 @@ }, "Subscription reminder": { "${ BRAND_NAME } Scribe writing assistant": [ - "${ BRAND_NAME } Scribe yazma asistanı" + "${ BRAND_NAME } Scribe yazma yardımcısı" ], "${ CALENDAR_APP_NAME }, ${ DRIVE_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME }, ${ VPN_SHORT_APP_NAME }, ${ MEET_SHORT_APP_NAME }, and ${ LUMO_APP_NAME } with premium features": [ - "Ücretli özelliklerle birlikte ${ CALENDAR_APP_NAME }, ${ DRIVE_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME }, ${ VPN_SHORT_APP_NAME }, ${ MEET_SHORT_APP_NAME } ve ${ LUMO_APP_NAME }" + "Ücretli özellikler ile ${ CALENDAR_APP_NAME }, ${ DRIVE_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME }, ${ VPN_SHORT_APP_NAME }, ${ MEET_SHORT_APP_NAME } ve ${ LUMO_APP_NAME }" ], "${ CALENDAR_APP_NAME }, ${ DRIVE_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME }, and ${ VPN_SHORT_APP_NAME } with premium features": [ "Ücretli özelliklerle ${ CALENDAR_APP_NAME }, ${ DRIVE_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME } ve ${ VPN_SHORT_APP_NAME }" @@ -22657,8 +23883,8 @@ "Sürüm geçmişi" ], "Video meetings, up to ${ PAID_PREMIUM_MAX_PARTICIPANTS } participant": [ - "Görüntülü toplantılar, ${ PAID_PREMIUM_MAX_PARTICIPANTS } katılımcıya kadar", - "Görüntülü toplantılar, ${ PAID_PREMIUM_MAX_PARTICIPANTS } katılımcıya kadar" + "Görüntülü görüşmeler, ${ PAID_PREMIUM_MAX_PARTICIPANTS } katılımcıya kadar", + "Görüntülü görüşmeler, ${ PAID_PREMIUM_MAX_PARTICIPANTS } katılımcıya kadar" ], "Watch the interview": [ "Röportajı izleyin" @@ -22775,11 +24001,38 @@ ] }, "Subtitle": { + "${ DRIVE_PLUS_NAME } offers 1 TB storage for your files and photos. You are also eligible for yearly storage bonuses.": [ + "${ DRIVE_PLUS_NAME } dosyalarınız ve fotoğraflarınız için 1 TB depolama alanı sunar. Ayrıca yıllık depolama alanı hediyelerinden de yararlanabilirsiniz." + ], "${ DRIVE_PLUS_NAME } offers 200 GB storage for your files and photos. You are also eligible for yearly storage bonuses.": [ - "${ DRIVE_PLUS_NAME } dosyalarınız ve fotoğraflarınız için 200 GB depolama alanı sunar. Ayrıca yıllık depolama alanı bonuslarından da yararlanabilirsiniz." + "${ DRIVE_PLUS_NAME } dosyalarınız ve fotoğraflarınız için 200 GB depolama alanı sunar. Ayrıca yıllık depolama alanı hediyelerinden de yararlanabilirsiniz." + ], + "${ planTitle } gives you access to all apps and premium features. Privacy is built-in so you can get on with it, knowing your data and identity are safe.": [ + "${ planTitle } tüm uygulamalara ve ücretli özelliklere erişmenizi sağlar. Gizlilik doğasındadır. Böylece verilerinizin ve kimliğinizin güvende olduğunu bilerek işinize bakabilirsiniz." + ], + "${ planTitle } gives you all apps, all features, early access to new releases, and everything you need to be in control of your data and its security.": [ + "${ planTitle } tüm uygulamaları, tüm özellikleri, yeni sürümlere erken erişimi ve verilerinizin denetimi ile güvenliğini sağlamak için gerek duyduğunuz her şeyi sunar." + ], + "${ planTitle } gives you unlimited privacy and more storage for up to 2 people.": [ + "${ planTitle } size 2 kişiye kadar sınırsız gizlilik ve daha fazla depolama alanı sunar." + ], + "${ planTitle } gives your team all the collaboration tools they need to be productive and organized in their work, while safeguarding your business.": [ + "${ planTitle } ekibinize işlerinde verimli ve düzenli olmaları için gereken tüm iş birliği araçlarını sağlarken kuruluşunuzu da korur." + ], + "${ planTitle } gives your team what they need to be more productive and organized in their work with access to all ${ BRAND_NAME } apps and their advanced features.": [ + "${ planTitle }, tüm ${ BRAND_NAME } uygulamalarına ve gelişmiş özelliklerine erişim sunarak ekibinize işlerinde daha üretken ve düzenli olmaları için gerekenleri sağlar." + ], + "${ planTitle } gives your team what they need to be more productive, organized, and in control of their inbox, schedule, and more.": [ + "${ planTitle } tarifesi, ekibinize gelen kutularını, programlarını ve diğer pek çok şeyi kontrol etmeleri için gerekenleri sunarak daha üretken ve düzenli olmalarını sağlar." + ], + "${ planTitle } goes beyond the basics to help you be more productive, organized, and in control of your inbox, email identity, and more.": [ + "${ planTitle }, daha üretken ve düzenli olmanızı sağlamak için, gelen kutunuzu, e-posta kimliğinizi ve diğer şeyleri kontrol etmenize yardımcı olarak temel konuların ötesine geçer." ], "${ planTitle } helps you ensure that each of your family members — and their data — are protected whenever they’re online.": [ - "${ planTitle } her bir aile üyenizin ve verilerinin internete girdikleri her an korunmasını sağlamanıza yardımcı olur." + "${ planTitle }, ailenizdeki her bir bireyin ve verilerinin çevrim içi oldukları her an korunmasına yardımcı olur." + ], + "Compare the key differences that matter for your business.": [ + "Kuruluşunuz için önemli olan temel farklılıkları karşılaştırın." ], "Free forever": [ "Sonsuza kadar ücretsiz" @@ -22787,17 +24040,32 @@ "per month, billed annually": [ "aylık, yılda bir faturalanır" ], + "Save 50% for 1 year, and keep full access": [ + "1 yıl boyunca tam erişimle %50 kazanın" + ], + "Save 50% for 6 months, and keep full access": [ + "6 ay boyunca tam erişimle %50 kazanın" + ], "See how ${ MAIL_APP_NAME } compares, and why our independence makes a difference.": [ - "${ MAIL_APP_NAME } ile karşılaştırın ve bağımsızlığımızın neden fark yarattığını görün." + "${ MAIL_APP_NAME } karşılaştırması ile bağımsızlığımızın neden fark yarattığını görün." ], "View VPN session details for your organization.": [ "Kuruluşunuzun VPN oturumu ayrıntılarını görüntüleyin." + ], + "With managed companies, you can add, edit, and remove access for organizations you oversee.": [ + "Yönetilen şirketlerle denetlediğiniz kuruluşlar için erişim ekleyebilir, düzenleyebilir ve kaldırabilirsiniz." + ], + "Your total monthly cost for all managed companies.": [ + "Yönetilen tüm şirketler için toplam aylık maliyetiniz." ] }, "Success": { "Account deleted. Signing out...": [ "Hesap silindi. Oturum kapatılıyor..." ], + "Activation link copied to clipboard": [ + "Etkinleştirme bağlantısı panoya kopyalandı" + ], "Address added": [ "Adres eklendi" ], @@ -22921,9 +24189,6 @@ "Organization logo updated": [ "Kuruluş logosu güncellendi" ], - "Organization name set": [ - "Kuruluş adı ayarlandı" - ], "Organization name updated": [ "Kuruluş adı güncellendi" ], @@ -23113,6 +24378,9 @@ ], "/user per month": [ "/kullanıcı aylık" + ], + "/year": [ + "/yıl" ] }, "Suffix for price": { @@ -23142,6 +24410,14 @@ "Dosyalarınızı şifrelenmiş bulut depolama alanı ile koruyun. Sürüm geçmişi, şifrelenmiş dosya paylaşımı ve diğer özellikler." ] }, + "Tab": { + "For personal use": [ + "Kişisel kullanım için" + ], + "For professional use": [ + "Ticari kullanım için" + ] + }, "Tab in domain modal": { "Addresses": [ "Adresler" @@ -23231,8 +24507,11 @@ ] }, "Temporary need": { + "Continue cancelling": [ + "İptal etmeyi sürdür" + ], "Keep current plan": [ - "Mevcut tarifeyi sürdür" + "Geçerli tarifede kal" ] }, "Theme": { @@ -23414,12 +24693,18 @@ "Actions": [ "İşlemler" ], + "Activate multi-user support": [ + "Çok kullanıcı desteğini etkinleştir" + ], "Activate organization key": [ "Kuruluş anahtarını kullanıma al" ], "Activate user": [ "Kullanıcıyı etkinleştir" ], + "Activate your email": [ + "E-postanızı etkinleştirin" + ], "Activity monitor": [ "Etkinlik izleyici" ], @@ -23430,12 +24715,21 @@ "Add a custom logo": [ "Özel logo ekle" ], + "Add a recovery contact": [ + "Bir kurtarma kişisi ekle" + ], "Add address": [ "Adres ekle" ], + "Add an emergency contact": [ + "Bir acil durum kişisi ekle" + ], "Add another notification to remind you of this event": [ "Bu etkinliği hatırlatacak başka bir bildirim ekleyin" ], + "Add categories": [ + "Kategori ekle" + ], "Add contact group name": [ "Kişi grubu adı ekle" ], @@ -23496,6 +24790,9 @@ "Address and key verification": [ "Adres ve anahtar doğrulama" ], + "Advanced recovery options": [ + "Gelişmiş kurtarma seçenekleri" + ], "Allocate storage": [ "Depolama alanını dağıt" ], @@ -23514,9 +24811,6 @@ "An address for each role": [ "Her rol için ayrı adres" ], - "An error occurred": [ - "Bir sorun çıktı" - ], "Annual": [ "Yıllık" ], @@ -23610,6 +24904,9 @@ "Catch-all address": [ "Tümünü toplama adresi" ], + "Categories": [ + "Kategoriler" + ], "Change login password": [ "Oturum açma parolasını değiştir" ], @@ -23632,7 +24929,7 @@ "İkinci parolayı değiştir" ], "Check your default mail application": [ - "Varsayılan e-posta uygulamanızı kontrol edin" + "Varsayılan e-posta uygulamanızı denetleyin" ], "Choose a provider": [ "Bir hizmet sağlayıcı seçin" @@ -23655,6 +24952,9 @@ "Collaborate on documents": [ "Belgeler üzerinde işbirliği yapın" ], + "Companies": [ + "Şirketler" + ], "Compare plans": [ "Tarifeleri karşılaştır" ], @@ -23664,18 +24964,12 @@ "Confirm": [ "Onayla" ], - "Confirm address": [ - "E-posta adresini onaylayın" - ], "Confirm downgrade": [ "Tarife düşürmeyi onayla" ], "Confirm loss of ${ BRAND_NAME } bonuses": [ "${ BRAND_NAME } hediyelerinizi kaybedeceğinizi onaylayın" ], - "Confirm phone number": [ - "Telefon numarasını onaylayın" - ], "Connect ${ name }": [ "${ name } bağlantısı kur" ], @@ -23700,12 +24994,18 @@ "Connect your custom domain": [ "Özel etki alanınızı bağlayın" ], + "Connected emails": [ + "Bağlı e-posta adresleri" + ], "Connection status": [ "Bağlantı durumu" ], "Contact us": [ "Bize ulaşın" ], + "Continue with free storage": [ + "Ücretsiz depolama alanını kullanmayı sürdür" + ], "Continue with partial import?": [ "Kısmi içe aktarmay ile ilerlensin mi?" ], @@ -23731,6 +25031,9 @@ "Create a new gateway": [ "Yeni ağ geçidi ekle" ], + "Create a new password": [ + "Yeni bir parola oluşturun" + ], "Create Gateway": [ "Ağ geçidi ekle" ], @@ -23812,6 +25115,12 @@ "Data recovery": [ "Veri kurtarma" ], + "Data recovery contacts": [ + "Veri kurtarma kişileri" + ], + "Data recovery options": [ + "Veri kurtarma seçenekleri" + ], "Data retention": [ "Verileri tutma" ], @@ -23821,6 +25130,9 @@ "Day theme": [ "Gündüz teması" ], + "Deactivate current phrase?": [ + "Geçerli ifade etkisizleştirilsin mi?" + ], "Decrypt key": [ "Anahtarın şifresini çöz" ], @@ -23891,6 +25203,9 @@ "Device": [ "Aygıt" ], + "Device data backup": [ + "Aygıt verilerini yedekleme" + ], "Device name": [ "Aygıt adı" ], @@ -23900,6 +25215,9 @@ "Disable categories?": [ "Kategoriler kullanımdan kaldırılsın mı?" ], + "Disable device data backup?": [ + "Aygıt veri yedeklemesi kapatılsın mı?" + ], "Disable two-factor authentication": [ "İki adımlı doğrulamayı kapat" ], @@ -23915,6 +25233,9 @@ "Disconnected from Gmail": [ "Gmail bağlantısı kesildi" ], + "Dismiss setup checklist": [ + "Kurulum kontrol listesini atla" + ], "Display name and signature": [ "Görüntülenecek ad ve imza" ], @@ -23951,6 +25272,9 @@ "Download the mobile apps": [ "Mobil uygulamaları indirin" ], + "Download your recovery phrase": [ + "Kurtarma ifadenizi indirin" + ], "Downloads": [ "İndirmeler" ], @@ -24090,6 +25414,9 @@ "Feature access": [ "Özellik erişimi" ], + "Fewer distractions, more focus": [ + "Daha az dikkat dağınıklığı, daha iyi odaklanma" + ], "Filter for more focus": [ "Daha iyi odaklanmak için süzün" ], @@ -24120,14 +25447,11 @@ "Forward emails": [ "E-postaları iletme" ], - "Forwardings": [ - "İletmeler" - ], "Free": [ "Free" ], "Free plan": [ - "Free plan" + "Free tarifesi" ], "Gateway": [ "Ağ geçidi" @@ -24159,6 +25483,9 @@ "Get ${ planMaxSpace } storage for your files, photos and documents with ${ planName }. ${ upgradeButton }": [ "${ planName } ile dosyalarınız, fotoğraflarınız ve belgeleriniz için ${ planMaxSpace } depolama alanı edinin. ${ upgradeButton }" ], + "Get ${ VPN_APP_NAME } on your TV": [ + "Televizyonunuz için ${ VPN_APP_NAME } uygulamasını edinin" + ], "Get ${ vpnPlus } to access all servers": [ "Tüm sunuculara erişmek için ${ vpnPlus } edinin" ], @@ -24189,6 +25516,12 @@ "Get more from your VPN": [ "VPN hizmetinizden fazlasını alın" ], + "Get more storage with ${ MAIL_APP_NAME } Plus": [ + "${ MAIL_APP_NAME } Plus ile daha fazla depolama alanı edinin" + ], + "Get started": [ + "Başlayalım" + ], "Get the app on all your devices and enjoy safe, seamless access anywhere.": [ "Uygulamayı tüm aygıtlarınıza indirin ve her yerde güvenli, kesintisiz erişimin tadını çıkarın." ], @@ -24220,11 +25553,14 @@ "Yardım merkezi" ], "Helping activists in Hong Kong": [ - "Hong Kong'daki aktivistlere yardım etmek" + "Hong Kong aktivistlerine yardımlarımız" ], "Home": [ "Giriş" ], + "How ${ MAIL_APP_NAME } is different": [ + "${ MAIL_APP_NAME } nasıl bir fark yaratıyor" + ], "How did you find out about us?": [ "Bizi nereden duydunuz?" ], @@ -24344,7 +25680,7 @@ "Ana parola" ], "Make your business stand out": [ - "İşletmenizi öne çıkarın" + "Kuruluşunuzu öne çıkarın" ], "Manage files across devices on Windows, Mac, Android, and iOS.": [ "Dosyaları Windows, Mac, Android ve iOS aygıtları arasında yönetin." @@ -24367,6 +25703,9 @@ "Monthly": [ "Aylık" ], + "Monthly Costs": [ + "Aylık Maliyet" + ], "Multi-user support": [ "Çok kullanıcı desteği" ], @@ -24400,6 +25739,9 @@ "No events": [ "Herhangi bir etkinlik yok" ], + "No events yet": [ + "Henüz bir etkinlik yok" + ], "No need to empty the trash": [ "Çöp kutusunu boşaltmanıza gerek yok" ], @@ -24454,6 +25796,9 @@ "Other sign-in issues": [ "Diğer oturum açma sorunları" ], + "Our fight against censorship in Russia": [ + "Rusya içindeki sansüre karşı mücadelemiz" + ], "Password": [ "Parola" ], @@ -24496,9 +25841,6 @@ "Phone": [ "Telefon" ], - "Photos": [ - "Fotoğraflar" - ], "Pin the extension": [ "Eklentiyi sabitle" ], @@ -24536,7 +25878,7 @@ "Kare kod" ], "QR code sign-in": [ - "Karekodla oturum açma" + "Kare kod ile oturum açma" ], "Ready, set, forward": [ "Hazırla, ayarla, ilet" @@ -24562,6 +25904,9 @@ "Recovery file": [ "Kurtarma dosyası" ], + "Recovery phrase": [ + "Kurtarma ifadesi" + ], "Refer a friend": [ "Arkadaşınıza önerin" ], @@ -24580,9 +25925,15 @@ "Remove domain": [ "Etki alanını kaldır" ], + "Remove email": [ + "E-postayı kaldırın" + ], "Remove forwarding address": [ "İletme adresini kaldır" ], + "Remove recovery phone number": [ + "Kurtarma telefon numarasını kaldır" + ], "Remove server?": [ "Sunucu kaldırılsın mı?" ], @@ -24754,6 +26105,9 @@ "Sign in on TV": [ "TV üzerinde oturum aç" ], + "Sign in on TV?": [ + "TV üzerinde oturum açılsın mı?" + ], "Sign in to join the Beta program": [ "Beta programına katılmak için oturum açın" ], @@ -24770,7 +26124,7 @@ "Üye hesabıyla oturum açıldı" ], "Signed-in reset": [ - "Oturum açma bilgilerini sıfırlama" + "Oturum açmış sıfırlama" ], "Simplify email distribution": [ "E-posta dağıtımını kolaylaştırın" @@ -24781,6 +26135,9 @@ "Single sign-on": [ "Tek oturum açma" ], + "SMS verification": [ + "SMS doğrulaması" + ], "SMTP submission": [ "SMTP gönderimi" ], @@ -24788,7 +26145,10 @@ "Ertele:" ], "Some of your encrypted data is locked": [ - "Şifrelenmiş verilerinizin bir kısmı kilitli" + "Şifrelenmiş verilerinizin bir kısmı kilitlenmiş" + ], + "Something went wrong": [ + "Bir sorun çıktı" ], "Sort folders alphabetically": [ "Klasörler alfabetik olarak sıralansın" @@ -24817,6 +26177,9 @@ "Status": [ "Durum" ], + "Stay secure and connected anywhere": [ + "Her yerde güvende ve bağlı kalın" + ], "Strengthen your security on all your devices with ${ passPlusPlanName }. ${ upgradeButton }": [ "${ passPlusPlanName } ile tüm aygıtlarınızda güvenliğinizi artırın. ${ upgradeButton }" ], @@ -24840,7 +26203,7 @@ "Destek kaydı kapatıldı" ], "Support your compliance objectives": [ - "Uyum hedeflerinizi destekleyin" + "Uyumluluk gereksinimlerinizi karşılayın" ], "Switch account": [ "Hesabı değiştir" @@ -24879,10 +26242,10 @@ "Saat dilimi" ], "To preview this spreadsheet, download it.": [ - "Bu hesap tablosunu ön izlemek için indirin." + "Bu elektronik tabloyu ön izlemek için indirin." ], "To preview this spreadsheet, open it in ${ SHEETS_APP_NAME } or download it.": [ - "Bu hesap tablosunu ön izlemek için ${ SHEETS_APP_NAME } uygulaması ile açın ya da indirin." + "Bu elektronik tabloyu ön izlemek için ${ SHEETS_APP_NAME } uygulaması ile açın ya da indirin." ], "Troubleshoot your issue": [ "Sorununuzu giderin" @@ -24911,6 +26274,9 @@ "Type": [ "Tür" ], + "Unblocking internet access in Iran": [ + "İran internet erişiminin engelini kaldırmak" + ], "Unlock your data": [ "Verilerinizin şifresini çözün" ], @@ -24980,6 +26346,9 @@ "Verify it’s you": [ "Siz olduğunuzu doğrulayın" ], + "Verify your email": [ + "E-postanızı doğrulayın" + ], "Verifying your card...": [ "Kartınız doğrulanıyor..." ], @@ -25004,6 +26373,9 @@ "Warning: suspected fake website": [ "Uyarı: Sahte olma olasılığı bulunan şüpheli site" ], + "We sent you a code to your email to make sure it’s you. This code is valid for 10 minutes. Please enter it below.": [ + "Kimliğinizi doğrulamak için e-postanıza bir kod gönderdik. Bu kod 10 dakika boyunca geçerli olacak. Lütfen kodu aşağıya yazın." + ], "We'll send an email to your new address with instructions on completing the change.": [ "Değişikliği tamamlamak için yapmanız gereken işlemler e-postasını yeni adresinize göndereeceğiz." ], @@ -25019,6 +26391,9 @@ "Welcome to your new password manager!": [ "Yeni parola yöneticinize hoş geldiniz!" ], + "What changes if you switch to the Free plan": [ + "Free tarifesine geçerseniz ne değişir?" + ], "What is an alias?": [ "Takma ad nedir?" ], @@ -25052,6 +26427,12 @@ "Your ${ planTitle } subscription has started": [ "${ planTitle } aboneliğiniz başladı" ], + "Your admin at ${ orgName } is inviting you to activate your new secure ${ BRAND_NAME } account and update your password.": [ + "${ orgName } kuruluşundaki yöneticiniz sizi yeni ve güvenli ${ BRAND_NAME } hesabınızı etkinleştirmeye ve parolanızı güncellemeye davet ediyor." + ], + "Your admin is inviting you to activate your new secure ${ BRAND_NAME } account and update your password.": [ + "Yöneticiniz sizi yeni ve güvenli ${ BRAND_NAME } hesabınızı etkinleştirmeye ve parolanızı güncellemeye davet ediyor." + ], "Your calendar link": [ "Takvim bağlantınız" ], @@ -25067,6 +26448,12 @@ "Your recovery file": [ "Kurtarma dosyanız" ], + "Your recovery phrase": [ + "Kurtarma ifadeniz" + ], + "Your recovery setup": [ + "Kurtarma kurulumunuz" + ], "Your referrals": [ "Önerileriniz" ], @@ -25199,8 +26586,23 @@ "Admins can manage user accounts and give admin privileges to other users. Only the primary admin can edit the plan of the organization.": [ "Yöneticiler kullanıcı hesaplarını yönetebilir ve diğer kullanıcılara yönetici yetkisi verebilir. Yalnızca birincil yönetici kuruluşun tarifesini değiştirebilir." ], + "Allow recovering your account with a one-time code sent to your recovery email": [ + "Kurtarma e-posta adresinize gönderilen tek kullanımlık kodla hesabınızı kurtarın" + ], + "Allow recovering your account with a one-time code sent to your recovery phone": [ + "Kurtarma telefon numaranıza gönderilen tek seferlik bir kodla hesabınızın kurtarılmasını sağlayın" + ], "Allow resetting your password from the account settings": [ - "Hesap ayarlarından parolanızı sıfırlamanıza izin verin" + "Hesap ayarlarından parolanızın sıfırlanmasına izin verin" + ], + "Allow scanning a QR code from a ${ BRAND_NAME } mobile app to sign in": [ + "${ BRAND_NAME } mobil uygulamasından kare kod tarayarak oturum açılabilsin" + ], + "Allow trusted contacts to request access to your account": [ + "Güvendiğiniz kişilerin hesabınıza erişme isteğinde bulunmasına izin verin" + ], + "Allow trusted contacts to unlock your encrypted data after a password reset": [ + "Bir parola sıfırlanmasından sonra güvendiğiniz kişilerin şifrelenmiş verilerinize erişmesine izin verin" ], "Allows to seamlessly add Zoom video conferencing links to your calendar invitations.": [ "Takvim davetlerinize kolayca görüntülü Zoom görüşmesi bağlantıları eklemenizi sağlar." @@ -25238,6 +26640,9 @@ "Each imported email will have this label": [ "İçe aktarılan her e-postaya bu etiket atanacak" ], + "Early access to new apps and features.": [ + "Yeni uygulama ve özelliklere erken erişim." + ], "Edit folder names": [ "Klasör adlarını düzenle" ], @@ -25286,6 +26691,12 @@ "If you purchased a gift code or received one from our support team, you can enter it here.": [ "Satın aldığınız ya da destek ekibimizden verilen bir hediye kodunuz varsa, buraya yazabilirsiniz." ], + "Includes custom email domains and unlimited hide-my-email aliases in ${ MAIL_APP_NAME }, access to servers in 120+ countries in ${ VPN_SHORT_APP_NAME }, built-in 2FA and secure sharing in ${ PASS_SHORT_APP_NAME }, and more.": [ + "${ MAIL_APP_NAME } özel e-posta etki alanları ve sınırsız hide-my-email takma adı, ${ VPN_SHORT_APP_NAME } ile 120 üzerinde ülkedeki sunuculara erişim, ${ PASS_SHORT_APP_NAME } hazır iki adımlı doğrulama, güvenli paylaşım gibi özellikler ve diğer şeyler." + ], + "Includes professional email at @yourdomain.com, cloud storage with collaborative document editing, scheduling and video conferencing, password management, a secure ${ VPN_SHORT_APP_NAME }, and more.": [ + "@etkialaniniz.com adresinden profesyonel e-posta, iş birlikli belge düzenleme, zamanlama ve görüntülü görüşme ile bulut depolama alanı, parola yönetimi, güvenli bir ${ VPN_SHORT_APP_NAME } ve diğer şeyleri sağlar." + ], "Members who do not use 2FA will get an email asking them to enable it as soon as possible. Single sign-on users will not receive the email reminder.": [ "İki adımlı doğrulama kullanmayan üyelere, bunu en kısa sürede açmaları için bir e-posta gönderilecek. Bu bildirim e-postası, tek oturum açma kullanıcılarına gönderilmeyecek." ], @@ -25307,6 +26718,15 @@ "Remove metadata from images to protect your privacy.": [ "Gizliliğinizi korumak için görsellerdeki üst verileri kaldırın." ], + "Save 12-word long phrase to unlock your account and your encrypted data instantly if you forgot your password": [ + "Parolanızı unuttuysanız hesabınıza ve şifrelenmiş verilerinize erişmek için 12 sözcük uzunluğundaki ifadeyi kaydedin" + ], + "Save an encryption backup file in this browser to recover your data after a password reset": [ + "Parola sıfırlandıktan sonra verilerinizi kurtarmak için bu tarayıcıda bir şifreleme yedeği dosyası kaydedin" + ], + "Save an encryption backup file to recover your data after a password reset": [ + "Parola sıfırlandıktan sonra verilerinizi kurtarmak için bir şifreleme yedeği dosyası kaydedin" + ], "See number of unread messages in the tab icon": [ "Okunmamış ileti sayısını sekme simgesinde görüntüler." ], @@ -25379,8 +26799,8 @@ "This feature is only available on Beta": [ "Bu özelliği yalnızca Beta sürümü kullanıcıları kullanabilir" ], - "This is the default key used by other ${ MAIL_APP_NAME } users on older mobile apps to encrypt data they send to you": [ - "Bu, diğer ${ MAIL_APP_NAME } kullanıcılarının size gönderdikleri verileri şifrelemek için daha eski mobil uygulamalarda kullandığı varsayılan anahtardır" + "This is the default key used by other ${ MAIL_APP_NAME } users on older apps to encrypt data they send to you": [ + "Bu anahtar diğer ${ MAIL_APP_NAME } kullanıcılarının size gönderdiği verileri şifrelemek için eski uygulamalarda kullandığı varsayılan anahtardır." ], "This is the default key used by other ${ MAIL_APP_NAME } users to encrypt data they send to you": [ "Bu, diğer ${ MAIL_APP_NAME } kullanıcılarının size gönderdiği verileri şifrelemek için kullandığı varsayılan anahtardır" @@ -25468,6 +26888,9 @@ "User is a group": [ "Kullanıcı bir grup" ], + "via ${ groupName }": [ + "${ groupName } üzerinden" + ], "Waiting for user to accept the invitation": [ "Kullanıcının daveti kabul etmesi bekleniyor" ] @@ -25791,6 +27214,12 @@ ] }, "user_modal": { + "(via ${ groupName })": [ + "(${ groupName } üzerinden)" + ], + "(via group)": [ + "(gruptan)" + ], "Add delegated roles to a user to grant them only the specific permissions they need, keeping full-admin power separate and your environment secure.": [ "Bir kullanıcıya devredilen roller ekleyerek ona yalnızca gerek duyduğu izinleri verin. Böylece tam yönetici yetkilerini ayrı tutun ve ortamınızın güvenliğini sağlayın." ], @@ -26178,11 +27607,14 @@ "${ BRAND_NAME } will transfer as much data as possible, starting with your most recent messages.": [ "${ BRAND_NAME }, en son iletilerinizden başlayarak olabildiğince fazla veri aktaracak." ], - "Are you sure you want to delete the phone number?": [ - "Telefon numarasını silmek istediğinize emin misiniz?" + "Are you sure you want to remove your notification email?": [ + "Bildirim e-posta adresinizi kaldırmak istediğinize emin misiniz?" ], - "Are you sure you want to delete this address?": [ - "Bu adresi silmek istediğinize emin misiniz?" + "Are you sure you want to remove your recovery email?": [ + "Kurtarma e-posta adresinizi kaldırmak istediğinize emin misiniz?" + ], + "Are you sure you want to remove your recovery phone number?": [ + "Kurtarma telefon numaranızı kaldırmak istediğinize emin misiniz?" ], "By deleting this address, you will no longer be able to receive daily email notifications.": [ "Bu adresi sildikten sonra günlük gönderilen e-posta bildirimlerini alamazsınız." @@ -26193,8 +27625,8 @@ "By deleting this address, you will no longer be able to recover your account.": [ "Bu adresi silerseniz, hesabınızı kurtaramazsınız." ], - "By deleting this phone number, you will no longer be able to recover your account.": [ - "Bu telefon numarasını silerseniz, hesabınızı kurtaramazsınız." + "By removing this phone number, you will no longer be able to recover your account.": [ + "Bu telefon numarasını kaldırdığınızda artık hesabınızı kurtaramayacaksınız." ], "Could not login. Please open ${ PASS_APP_NAME } browser extension and login from there.": [ "Oturum açılamadı. Lütfen ${ PASS_APP_NAME } tarayıcı eklentisini açın ve oradan oturum açın." diff --git a/applications/account/locales/uk_UA.json b/applications/account/locales/uk_UA.json index 440d021b78f..399bc275a4d 100644 --- a/applications/account/locales/uk_UA.json +++ b/applications/account/locales/uk_UA.json @@ -3763,6 +3763,11 @@ "Спробуйте відкрити посилання знову." ] }, + "email_forwarding_2023: Header": { + "Actions": [ + "Дії" + ] + }, "email_forwarding_2023: Info": { "You can safely close this tab.": [ "Тепер ви можете закрити цю вкладку." @@ -3795,9 +3800,6 @@ "Disabled": [ "Вимкнено" ], - "None": [ - "Нічого" - ], "Upgrade to ${ planName }": [ "Покращити до ${ planName }" ], @@ -4165,9 +4167,6 @@ "Please try again in a few moments.": [ "Будь ласка, спробуйте знову за хвильку." ], - "Please upgrade to a business plan with more than 1 user to get multi-user support": [ - "Для підтримки декількох користувачів, перейдіть на тарифний план для бізнесу" - ], "Please upgrade to a business plan with more than 1 user to manage multiple users.": [ "Для керування декількома користувачами, перейдіть на тарифний план для бізнесу." ], @@ -6291,12 +6290,6 @@ "Add your name and logo to create a more personalized experience for your organization.": [ "Додайте назву і логотип, щоб створити особливе враження для вашої організації." ], - "Adding ${ addedServerCount } gateway server": [ - "Додавання ${ addedServerCount } шлюзового сервера", - "Додавання ${ addedServerCount } шлюзових серверів", - "Додавання ${ addedServerCount } шлюзових серверів", - "Додавання ${ addedServerCount } шлюзових серверів" - ], "Adding an external email address will disable end-to-end encryption for all email communication within that group. Do you want to proceed?": [ "Додавання зовнішньої адреси електронної пошти вимкне наскрізне шифрування для всіх повідомлень електронної пошти в цій групі. Ви хочете продовжити?" ], @@ -6513,9 +6506,6 @@ "Change your password": [ "Змініть свій пароль" ], - "Check the status of imports and forwarding.": [ - "Перевірити стан імпортування та пересилання." - ], "Choose an Entity ID to continue.": [ "Виберіть ідентифікатор сутності для продовження." ], @@ -6582,12 +6572,6 @@ "Create a label for the imported messages, a time range for this import, and the labels you would like to import.": [ "Створіть мітки для імпортованих повідомлень, часовий проміжок для цього імпорту, а також мітки, які ви бажаєте імпортувати." ], - "Create a secure cloud for ${ value } member": [ - "Створення захищеної хмари для ${ value } учасника", - "Створення захищеної хмари для ${ value } учасників", - "Створення захищеної хмари для ${ value } учасників", - "Створення захищеної хмари для ${ value } учасників" - ], "Create and manage sub-accounts and assign them email addresses on your custom domain.": [ "Створюйте й керуйте підлеглими обліковими записами та призначайте їм поштові адреси у своєму власному домені." ], @@ -8343,9 +8327,6 @@ "You can edit this once to ensure the correct email address for verification.": [ "Ви можете змінити це один раз щоб переконатися у правильності адреси електронної пошти для підтвердження." ], - "You can enable the Photos section from the interface using the toggle below.": [ - "Ви можете увімкнути розділ Фотографії з інтерфейсу за допомогою перемикача нижче." - ], "You can keep up to ${ MAX_CALENDARS_FREE } calendar. Please remove shared calendar links and any ${ BRAND_NAME } user with whom you shared your calendars before you cancel your ${ MAIL_SHORT_APP_NAME } subscription.": [ "Ви можете мати максимум ${ MAX_CALENDARS_FREE } календар. Перш ніж скасувати свою передплату ${ MAIL_SHORT_APP_NAME }, вилучіть посилання на спільні календарі та будь-яких користувачів ${ BRAND_NAME }, з якими ви поділилися своїми календарями.", "Ви можете мати максимум ${ MAX_CALENDARS_FREE } календарі. Перш ніж скасувати свою передплату ${ MAIL_SHORT_APP_NAME }, вилучіть посилання на спільні календарі та будь-яких користувачів ${ BRAND_NAME }, з якими ви поділилися своїми календарями.", @@ -11748,9 +11729,6 @@ "${ app } product updates": [ "${ app } оновлення продукту" ], - "${ BRAND_NAME } for Business newsletter": [ - "${ BRAND_NAME } для Бізнес-розсилки" - ], "${ BRAND_NAME } important announcements": [ "${ BRAND_NAME } важливі оголошення" ], @@ -11796,9 +11774,6 @@ "Daily email notifications": [ "Щоденні сповіщення електронною поштою" ], - "Email subscriptions": [ - "Підписки електронної пошти" - ], "In-app notifications": [ "Сповіщення в застосунку" ], @@ -12478,15 +12453,9 @@ "per month, billed every two years": [ "на місяць, рахунок виставляється кожні два роки" ], - "Preparing your Recovery Kit": [ - "Підготовка комплекту відновлення" - ], "Protected by Swiss privacy laws": [ "Захищено швейцарським законодавством про приватність" ], - "Save your recovery kit to continue": [ - "Збережіть комплект для відновлення, щоб продовжити" - ], "Secure vault sharing": [ "Безпечний спільний доступ до сховища" ], @@ -13275,9 +13244,6 @@ "Back to Safety Review": [ "Повернутися до перегляду безпеки" ], - "Because you reset your password, your current Recovery Kit can only be used to recover the data created before your password reset.": [ - "Оскільки ви скинули пароль, ваш поточний Набір відновлення можна використовувати лише для відновлення даних, створених до скидання пароля." - ], "Can be used to regain access to your account and data": [ "Можна використовувати для відновлення доступу до облікового запису та даних" ], @@ -13296,9 +13262,6 @@ "Download ${ size }": [ "Завантажити ${ size }" ], - "Download your Recovery Kit": [ - "Завантажити ваш Набір відновлення" - ], "Email address": [ "Адреса електронної пошти" ], @@ -13311,18 +13274,12 @@ "Enable recovery by phone": [ "Увімкнути відновлення за допомогою телефону" ], - "I understand that I will not be able to recover currently locked data with this Recovery Kit": [ - "Я розумію, що не зможу відновити заблоковані дані за допомогою цього комплекту для відновлення" - ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in on this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Якщо ви забули свій пароль ${ BRAND_NAME } і вам потрібно його скинути, наступного разу, коли ви ввійдете на цей пристрій, використовуючи новий пароль, повний доступ до вашого ${ BRAND_NAME } буде відновлено." ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Якщо ви забули свій пароль ${ BRAND_NAME } і вам потрібно його скинути, наступного разу, коли ви ввійдете на цей пристрій, використовуючи новий пароль, повний доступ до вашого ${ BRAND_NAME } буде відновлено." ], - "If you get locked out of your ${ BRAND_NAME } Account, your Recovery Kit will allow you to sign in and recover your data.": [ - "Якщо ви заблокували свій Обліковий запис ${ BRAND_NAME }, ваш Набір відновлення дозволить вам увійти в нього і відновити дані." - ], "If you lose your login details and need to reset your account, **it’s imperative** that you have both an **account recovery and data recovery method** in place, otherwise you might not be able to access any of your emails, contacts, files or passwords.": [ "Якщо ви втратили свої дані для входу і вам потрібно скинути обліковий запис, **обов'язково**, щоб у вас був спосіб **відновлення облікового запису та даних**, інакше ви не зможете отримати доступ до своїх електронних листів, контактів, файлів або паролів." ], @@ -13359,9 +13316,6 @@ "Take action to secure your account": [ "Зробіть дію, щоб захистити ваш обліковий запис" ], - "There was an error generating your Recovery Kit": [ - "Виникла помилка при створенні Комплекту відновлення" - ], "There was an error verifying your recovery email": [ "Виникла помилка при перевірці електронної пошти для відновлення" ], @@ -13383,12 +13337,6 @@ "to recover your account if you're ever locked out": [ "щоб відновити свій обліковий запис, якщо ви коли-небудь втратите доступ до нього" ], - "Update your Recovery Kit": [ - "Оновити ваш Набір відновлення" - ], - "Update your Recovery Kit?": [ - "Оновити ваш Набір відновлення?" - ], "Verify": [ "Перевірити" ], @@ -13398,9 +13346,6 @@ "Verify your recovery phone number": [ "Підтвердьте номер телефону для відновлення" ], - "We encountered an error while generating your Recovery Kit. Please try again later, or contact support if the issue continues.": [ - "Під час створення вашого Набору відновлення виникла помилка. Будь ласка, повторіть спробу пізніше або зверніться до служби підтримки, якщо проблема не зникне." - ], "We encountered an error while verifying your recovery email. Please try again later, or contact support if the issue continues.": [ "Ми виявили помилку під час перевірки вашої відновлюваної електронної пошти. Будь ласка, повторіть спробу пізніше або зверніться до служби підтримки, якщо проблема не зникне." ], @@ -13419,18 +13364,12 @@ "You can disable this at any time.": [ "Ви можете вимкнути це в будь-який час." ], - "You can use the recovery phrase in this Recovery Kit to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ - "Ви можете використовувати фразу відновлення в цьому Наборі для повного відновлення облікового запису після скидання пароля, тому переконайтеся, що зберігаєте її в надійному місці." - ], "You can use your recovery email to regain access to your account if you forget your password.": [ "Якщо ви забули пароль, ви можете скористатися електронною поштою для відновлення, щоб отримати доступ до свого облікового запису." ], "You can use your recovery phone to regain access to your account if you forget your password.": [ "Ви можете скористатися телефоном відновлення, щоб відновити доступ до свого облікового запису, якщо забули пароль." ], - "You have previously downloaded a Recovery Kit. Downloading a new one will **deactivate the old one**.": [ - "Ви вже завантажували комплект для відновлення. Завантаження нового призведе до **деактивації старого**." - ], "You have recommended actions.": [ "Вам було рекомендовано дії." ], @@ -13470,12 +13409,6 @@ "Your recovery email is set": [ "Ваша електронна пошта для відновлення налаштована" ], - "Your Recovery Kit": [ - "Ваш Набір відновлення" - ], - "Your Recovery Kit is set": [ - "Ваш Набір відновлення встановлено" - ], "Your recovery methods": [ "Ваші методи відновлення" ], @@ -16192,18 +16125,12 @@ "Confirm": [ "Підтвердити" ], - "Confirm address": [ - "Підтвердьте адресу" - ], "Confirm downgrade": [ "Підтвердити перехід" ], "Confirm loss of ${ BRAND_NAME } bonuses": [ "Підтвердьте втрату бонусів ${ BRAND_NAME }" ], - "Confirm phone number": [ - "Підтвердьте номер телефону" - ], "Connect ${ name }": [ "Під'єднати ${ name }" ], @@ -16759,9 +16686,6 @@ "Phone": [ "Телефон" ], - "Photos": [ - "Фото" - ], "Pin the extension": [ "Закріпити розширення" ], @@ -16978,6 +16902,9 @@ "Snooze:": [ "Відкласти:" ], + "Something went wrong": [ + "Виникла проблема" + ], "Sort folders alphabetically": [ "Сортувати теки за алфавітом" ], @@ -17943,12 +17870,6 @@ "${ BRAND_NAME } will transfer as much data as possible, starting with your most recent messages.": [ "${ BRAND_NAME } перенесе стільки даних, скільки можливо, починаючи з найновіших повідомлень." ], - "Are you sure you want to delete the phone number?": [ - "Ви дійсно хочете видалити цей номер телефону?" - ], - "Are you sure you want to delete this address?": [ - "Ви дійсно хочете видалити цю адресу?" - ], "By deleting this address, you will no longer be able to receive daily email notifications.": [ "Видаливши цю адресу, ви більше не зможете отримувати щоденні сповіщення електронної пошти." ], @@ -17958,9 +17879,6 @@ "By deleting this address, you will no longer be able to recover your account.": [ "Видаливши цю адресу, ви більше не зможете відновити свій обліковий запис." ], - "By deleting this phone number, you will no longer be able to recover your account.": [ - "Видаливши цей номер телефону, ви більше не зможете відновити свій обліковий запис." - ], "If you cancel this import, you won't be able to resume it. ${ BRAND_NAME } saved all progress in your account. Cancel anyway?": [ "Якщо ви скасуєте це імпортування, ви не зможете його продовжити. ${ BRAND_NAME } зберіг перебіг процесу до вашого облікового запису. Усе одно скасувати?" ], diff --git a/applications/account/locales/vi_VN.json b/applications/account/locales/vi_VN.json index f3301fe927f..3481c5bdb36 100644 --- a/applications/account/locales/vi_VN.json +++ b/applications/account/locales/vi_VN.json @@ -1341,9 +1341,6 @@ "Set as default": [ "Đặt làm mặc định" ], - "Set as default mail application": [ - "Đặt làm ứng dụng thư mặc định" - ], "Set catch-all": [ "Thiết lập nhận tất cả" ], @@ -2553,9 +2550,6 @@ ] }, "BOSS": { - "Add a custom domain": [ - "Thêm miền tùy chỉnh" - ], "Authenticate": [ "Xác thực" ], @@ -2577,9 +2571,6 @@ "Domain connected": [ "Đã kết nối miền" ], - "Domain ownership verified": [ - "Đã xác minh quyền sở hữu miền" - ], "Estimated size": [ "Kích thước ước tính" ], @@ -2589,15 +2580,9 @@ "Install migration app": [ "Cài đặt ứng dụng chuyển dữ liệu" ], - "Learn more about what can be migrated. Learn more": [ - "Tìm hiểu thêm về những gì có thể chuyển. Tìm hiểu thêm" - ], "Mail": [ "Thư" ], - "Migrate": [ - "Chuyển dữ liệu" - ], "Migrate from Google Workspace": [ "Chuyển từ Google Workspace" ], @@ -2619,9 +2604,6 @@ "Organization does not have enough storage available": [ "Tổ chức không có đủ dung lượng lưu trữ khả dụng" ], - "Organization settings": [ - "Cài đặt tổ chức" - ], "Required": [ "Bắt buộc" ], @@ -2631,9 +2613,6 @@ "Select at least one user to start a migration": [ "Chọn ít nhất một người dùng để bắt đầu chuyển dữ liệu" ], - "Select what you want to migrate, this will apply to all users whether they are created now or later. Migration will start after user accounts are created.": [ - "Chọn dữ liệu muốn chuyển, việc này sẽ áp dụng cho tất cả người dùng dù được tạo ngay bây giờ hay sau này. Quá trình chuyển dữ liệu sẽ bắt đầu sau khi tài khoản người dùng được tạo." - ], "Set up": [ "Thiết lập" ], @@ -2649,18 +2628,12 @@ "Start migration": [ "Bắt đầu chuyển dữ liệu" ], - "Transfer errors": [ - "Lỗi chuyển dữ liệu" - ], "User": [ "Người dùng" ], "Verify your domain": [ "Xác minh miền" ], - "Verify your domain ownership": [ - "Xác minh quyền sở hữu miền" - ], "Verify your domain to start a migration": [ "Xác minh miền để bắt đầu chuyển dữ liệu" ], @@ -4545,12 +4518,6 @@ "${ DOCS_SHORT_APP_NAME } in ${ DRIVE_APP_NAME } allows you to work together with others in a secure, encrypted environment.": [ "${ DOCS_SHORT_APP_NAME } trong ${ DRIVE_APP_NAME } cho phép làm việc cùng người khác trong môi trường an toàn, đã mã hóa." ], - "${ MAIL_APP_NAME } is not your default mail application.": [ - "${ MAIL_APP_NAME } không phải là ứng dụng thư mặc định." - ], - "${ MAIL_APP_NAME } is your default mail application.": [ - "${ MAIL_APP_NAME } là ứng dụng thư mặc định." - ], "A checked box means the feature is disabled.": [ "Ô được đánh dấu nghĩa là tính năng đang bị vô hiệu hóa." ], @@ -4653,9 +4620,6 @@ "No one in your organization can connect to shared servers.": [ "Không ai trong tổ chức có thể kết nối với các máy chủ này." ], - "Send a code to your recovery email or phone": [ - "Gửi mã đến email khôi phục hoặc số điện thoại" - ], "Set up accounts for all users and invite them to join ${ BRAND_NAME }.": [ "Thiết lập tài khoản cho tất cả người dùng và mời họ tham gia ${ BRAND_NAME }." ], @@ -5710,9 +5674,6 @@ "${ user } will not be able to access your account until the next emergency access.": [ "${ user } sẽ không thể truy cập tài khoản cho đến lần truy cập khẩn cấp tiếp theo." ], - "**${ contact }** is now your recovery contact. They can help you recover your data after a password reset.": [ - "**${ contact }** hiện là liên hệ khôi phục của bạn. Họ có thể giúp bạn khôi phục dữ liệu sau khi đặt lại mật khẩu." - ], "**If they confirm**, click **Approve recovery**. This will unlock their encrypted data.": [ "**Nếu họ xác nhận**, hãy nhấp vào **Phê duyệt khôi phục**. Thao tác này sẽ mở khóa dữ liệu được mã hóa của họ." ], @@ -5845,12 +5806,6 @@ "Less than a minute left": [ "Còn chưa đầy một phút" ], - "Let ${ user } know it’s really you trying to regain access.": [ - "Hãy để ${ user } biết chính bạn là người đang cố gắng lấy lại quyền truy cập." - ], - "None": [ - "Không" - ], "Only ": [ "Chỉ " ], @@ -5935,9 +5890,6 @@ "Select recovery contact ${ name }": [ "Chọn liên hệ khôi phục ${ name }" ], - "Set account recovery": [ - "Thiết lập khôi phục tài khoản" - ], "Stop being recovery contact?": [ "Ngừng làm liên hệ khôi phục?" ], @@ -6455,9 +6407,6 @@ "Please try again in a few moments.": [ "Vui lòng thử lại sau ít phút." ], - "Please upgrade to a business plan with more than 1 user to get multi-user support": [ - "Vui lòng nâng cấp lên gói đăng ký doanh nghiệp trên 1 người dùng để được hỗ trợ sử dụng đa người dùng" - ], "Please upgrade to a business plan with more than 1 user to manage multiple users.": [ "Vui lòng nâng cấp lên gói đăng ký doanh nghiệp trên 1 người dùng để quản lý nhiều người dùng." ], @@ -7724,11 +7673,6 @@ "${ BRAND_NAME }. Quyền riêng tư là mặc định." ] }, - "Force upgrade safety review": { - "I understand that I will no longer be able to sign in to older versions of ${ BRAND_NAME } mobile apps.": [ - "Tôi hiểu rằng tôi sẽ không còn có thể đăng nhập vào các phiên bản cũ hơn của ứng dụng di động ${ BRAND_NAME }." - ] - }, "Form heading": { "Enter your email address": [ "Nhập địa chỉ email" @@ -8068,9 +8012,6 @@ "Contact us": [ "Liên hệ" ], - "Downloads": [ - "Tải xuống" - ], "Enjoying ${ planName }?": [ "Đang tận hưởng ${ planName }?" ], @@ -8804,9 +8745,6 @@ "Add your name and logo to create a more personalized experience for your organization.": [ "Thêm tên và logo để tạo trải nghiệm cá nhân hóa hơn cho tổ chức." ], - "Adding ${ addedServerCount } gateway server": [ - "Đang thêm ${ addedServerCount } máy chủ kết nối" - ], "Adding an external email address will disable end-to-end encryption for all email communication within that group. Do you want to proceed?": [ "Thêm địa chỉ email bên ngoài sẽ vô hiệu hóa mã hóa đầu cuối cho tất cả liên lạc qua email trong nhóm đó. Bạn có muốn tiếp tục không?" ], @@ -9086,9 +9024,6 @@ "Change your password": [ "Thay đổi mật khẩu" ], - "Check the status of imports and forwarding.": [ - "Kiểm tra trạng thái nhập thư và chuyển tiếp thư." - ], "Choose a plan that works best for you.": [ "Chọn gói phù hợp nhất với bạn." ], @@ -9173,9 +9108,6 @@ "Create a label for the imported messages, a time range for this import, and the labels you would like to import.": [ "Tạo nhãn cho thư đã nhập, phạm vi thời gian cho lần nhập này và các nhãn muốn nhập." ], - "Create a secure cloud for ${ value } member": [ - "Tạo đám mây bảo mật cho ${ value } thành viên" - ], "Create an account": [ "Tạo tài khoản" ], @@ -11276,9 +11208,6 @@ "When disabled, this prevents remote images from loading without your knowledge.": [ "Khi bị vô hiệu hóa, việc này ngăn hình ảnh từ xa tải xuống mà bạn không biết." ], - "When enabled, we will check if ${ MAIL_APP_NAME } is your default mail application and notify you if it is not.": [ - "Khi kích hoạt, sẽ kiểm tra xem ${ MAIL_APP_NAME } có phải là ứng dụng thư mặc định hay không và thông báo nếu chưa phải." - ], "When enabling SAML for ${ appName } in your identity provider, you might be prompted to use the callback (ACS) URL and issuer ID. Just copy-paste the data below into your identity provider fields.": [ "Khi kích hoạt SAML cho ${ appName } trong nhà cung cấp danh tính, có thể được nhắc sử dụng URL gọi lại (ACS) và ID nhà phát hành. Chỉ cần sao chép và dán dữ liệu bên dưới vào các trường của nhà cung cấp danh tính." ], @@ -11402,9 +11331,6 @@ "You can edit this once to ensure the correct email address for verification.": [ "Bạn có thể chỉnh sửa mục này một lần để đảm bảo địa chỉ email xác minh chính xác." ], - "You can enable the Photos section from the interface using the toggle below.": [ - "Có thể kích hoạt phần Ảnh từ giao diện bằng cách sử dụng công tắc bên dưới." - ], "You can enforce the password rules members of your organization will use when they create or reset the password to their ${ BRAND_NAME } Account.": [ "Có thể thực thi các quy tắc mật khẩu mà thành viên tổ chức sẽ sử dụng khi tạo hoặc đặt lại mật khẩu cho Tài khoản ${ BRAND_NAME }." ], @@ -15740,9 +15666,6 @@ "${ app } product updates": [ "Cập nhật sản phẩm ${ app }" ], - "${ BRAND_NAME } for Business newsletter": [ - "Bản tin ${ BRAND_NAME } Kinh doanh" - ], "${ BRAND_NAME } important announcements": [ "Thông báo quan trọng từ ${ BRAND_NAME }" ], @@ -15791,9 +15714,6 @@ "During your first month of using a ${ BRAND_NAME } product": [ "Trong tháng đầu tiên sử dụng sản phẩm ${ BRAND_NAME }" ], - "Email subscriptions": [ - "Đăng ký email" - ], "In-app notifications": [ "Thông báo trong ứng dụng" ], @@ -16853,15 +16773,9 @@ "per month, billed every two years": [ "mỗi tháng, thanh toán 2 năm một lần" ], - "Preparing your Recovery Kit": [ - "Đang chuẩn bị Bộ công cụ khôi phục" - ], "Protected by Swiss privacy laws": [ "Được bảo vệ bởi luật quyền riêng tư của Thụy Sĩ" ], - "Save your recovery kit to continue": [ - "Lưu bộ công cụ khôi phục để tiếp tục" - ], "Secure vault sharing": [ "Chia sẻ kho bảo mật" ], @@ -17636,21 +17550,6 @@ "Nâng cấp lên ${ upsellPlanTitle }" ] }, - "PQC account key generation": { - "Couldn’t generate keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\n${ settingsLink } and select 'Generate key' for your account and for each address.": [ - "Không thể tạo khóa. Để kích hoạt bảo vệ hậu lượng tử, cần tạo thủ công khóa mã hóa mới.\n\n${ settingsLink } và chọn 'Tạo khóa' cho tài khoản và cho từng địa chỉ." - ] - }, - "PQC adress key generation": { - "Couldn’t generate address keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\nGo to ${ settingsLink } and select 'Generate key' for each address.": [ - "Không thể tạo khóa địa chỉ. Để kích hoạt bảo vệ hậu lượng tử, cần tạo thủ công khóa mã hóa mới.\n\nĐi tới ${ settingsLink } và chọn 'Tạo khóa' cho từng địa chỉ." - ] - }, - "PQC compatibility warning": { - "**You must update all ${ BRAND_NAME } mobile apps**: your new keys won't work on older app versions.": [ - "**Phải cập nhật tất cả ứng dụng di động ${ BRAND_NAME }**: khóa mới sẽ không hoạt động trên các phiên bản ứng dụng cũ hơn." - ] - }, "PQC key generation": { "This will generate new quantum-resistant encryption keys for your account.": [ "Thao tác này sẽ tạo khóa mã hóa kháng lượng tử mới cho tài khoản." @@ -17870,15 +17769,9 @@ ], "Or ${ downloadRecoveryKitSwitchButton } instead.": [ "Hoặc ${ downloadRecoveryKitSwitchButton } thay thế." - ], - "Your **Recovery Kit** lets you restore your ${ BRAND_NAME } Account if you’re locked out.": [ - "**Bộ công cụ khôi phục** cho phép khôi phục Tài khoản ${ BRAND_NAME } nếu bị khóa." ] }, "RecoveryPhrase: Title": { - "Save your Recovery Kit": [ - "Lưu Bộ công cụ khôi phục" - ], "Save your recovery phrase": [ "Lưu cụm từ khôi phục" ] @@ -18265,9 +18158,6 @@ "Back to Safety Review": [ "Quay lại Xem lại an toàn" ], - "Because you reset your password, your current Recovery Kit can only be used to recover the data created before your password reset.": [ - "Do bạn đặt lại mật khẩu, nên bộ công cụ khôi phục chỉ có thể khôi phục dữ liệu đã tạo trước khi bạn đặt lại mật khẩu." - ], "Can be used to regain access to your account and data": [ "Có thể được sử dụng để lấy lại quyền truy cập vào tài khoản và dữ liệu" ], @@ -18295,9 +18185,6 @@ "Download ${ size }": [ "Tải xuống ${ size }" ], - "Download your Recovery Kit": [ - "Tải bộ công cụ khôi phục của bạn" - ], "Email address": [ "Địa chỉ email" ], @@ -18310,18 +18197,12 @@ "Enable recovery by phone": [ "Kích hoạt khôi phục bằng điện thoại" ], - "I understand that I will not be able to recover currently locked data with this Recovery Kit": [ - "Tôi hiểu rằng tôi sẽ không thể khôi phục dữ liệu đã khóa trong bộ công cụ khôi phục này" - ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in on this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Nếu quên mật khẩu ${ BRAND_NAME } và cần đặt lại, lần tới khi đăng nhập trên thiết bị này bằng mật khẩu mới, quyền truy cập đầy đủ vào Tài khoản ${ BRAND_NAME } sẽ được khôi phục." ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "Nếu quên mật khẩu ${ BRAND_NAME } và cần đặt lại, lần tới khi đăng nhập thiết bị này bằng mật khẩu mới, quyền truy cập đầy đủ vào Tài khoản ${ BRAND_NAME } sẽ được khôi phục." ], - "If you get locked out of your ${ BRAND_NAME } Account, your Recovery Kit will allow you to sign in and recover your data.": [ - "Nếu bị khóa Tài khoản ${ BRAND_NAME }, bộ công cụ khôi phục sẽ cho phép đăng nhập và lấy lại dữ liệu." - ], "If you lose your login details and need to reset your account, **it’s imperative** that you have both an **account recovery and data recovery method** in place, otherwise you might not be able to access any of your emails, contacts, files or passwords.": [ "Nếu mất thông tin đăng nhập và cần đặt lại tài khoản, **bắt buộc** phải có cả **phương thức khôi phục tài khoản và khôi phục dữ liệu**, nếu không có thể không truy cập được bất kỳ email, liên hệ, tệp hoặc mật khẩu nào." ], @@ -18364,9 +18245,6 @@ "Take action to secure your account": [ "Thực hiện thao tác để bảo vệ tài khoản" ], - "There was an error generating your Recovery Kit": [ - "Đã xảy ra lỗi khi tạo bộ khôi phục của bạn" - ], "There was an error verifying your email": [ "Đã xảy ra lỗi khi xác minh email" ], @@ -18394,12 +18272,6 @@ "to recover your account if you're ever locked out": [ "để khôi phục tài khoản nếu bị khóa" ], - "Update your Recovery Kit": [ - "Cập nhật bộ công cụ khôi phục ư" - ], - "Update your Recovery Kit?": [ - "Cập nhật bộ công cụ khôi phục ư?" - ], "Verify": [ "Xác minh" ], @@ -18415,9 +18287,6 @@ "Verify your recovery phone number": [ "Xác minh số điện thoại khôi phục" ], - "We encountered an error while generating your Recovery Kit. Please try again later, or contact support if the issue continues.": [ - "Đã gặp lỗi khi tạo bộ công cụ khôi phục. Vui lòng thử lại sau, hoặc liên hệ hỗ trợ nếu điều này tiếp tục xảy ra." - ], "We encountered an error while verifying your email. Please try again later, or contact support if the issue continues.": [ "Đã gặp lỗi khi xác minh email. Vui lòng thử lại sau, hoặc liên hệ bộ phận hỗ trợ nếu sự cố vẫn tiếp diễn." ], @@ -18439,9 +18308,6 @@ "You can disable this at any time.": [ "Có thể vô hiệu hóa tính năng này bất cứ lúc nào." ], - "You can use the recovery phrase in this Recovery Kit to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ - "Có thể dùng cụm từ khôi phục trong bộ công cụ khôi phục của mình để khôi phục hoàn toàn tài khoản của mình khi bạn đăt lại mật khẩu, vì thế hãy giữ kỹ nó nhé." - ], "You can use your email to regain access to your account if you forget your password.": [ "Có thể sử dụng email để lấy lại quyền truy cập vào tài khoản nếu quên mật khẩu." ], @@ -18451,9 +18317,6 @@ "You can use your recovery phone to regain access to your account if you forget your password.": [ "Có thể sử dụng số điện thoại khôi phục để lấy lại quyền truy cập vào tài khoản nếu quên mật khẩu." ], - "You have previously downloaded a Recovery Kit. Downloading a new one will **deactivate the old one**.": [ - "Đã tải bộ công cụ khôi phục của mình trước đây. Tải bộ mới sẽ **vô hiệu hóa bộ cũ**." - ], "You have recommended actions to safeguard your account further.": [ "Bạn có các thao tác được đề xuất để bảo vệ tài khoản thêm." ], @@ -18517,12 +18380,6 @@ "Your recovery email is set": [ "Email khôi phục đã được thiết lập" ], - "Your Recovery Kit": [ - "Bộ công cụ khôi phục của bạn" - ], - "Your Recovery Kit is set": [ - "Bộ công cụ khôi phục đã sẵn sàng" - ], "Your recovery methods": [ "Các phương thức khôi phục của bạn" ], @@ -19053,14 +18910,6 @@ "Yêu cầu đặt lại mật khẩu" ] }, - "Setting": { - "Get updates about comments via email": [ - "Nhận cập nhật về bình luận qua email" - ], - "Include document name in email notifications": [ - "Bao gồm tên tài liệu trong thông báo qua email" - ] - }, "Settings description": { "Keep your inbox organized with folders and labels. ${ learnMoreLink }": [ "Giữ hộp thư đến ngăn nắp với các thư mục và nhãn. ${ learnMoreLink }" @@ -20871,9 +20720,6 @@ "Organization logo updated": [ "Đã cập nhật logo tổ chức" ], - "Organization name set": [ - "Đã đặt tên tổ chức" - ], "Organization name updated": [ "Đã cập nhật tên tổ chức" ], @@ -21527,9 +21373,6 @@ "Change second password": [ "Thay đổi mật khẩu thứ hai" ], - "Check your default mail application": [ - "Kiểm tra ứng dụng thư mặc định" - ], "Choose an account": [ "Chọn tài khoản" ], @@ -21554,18 +21397,12 @@ "Confirm": [ "Xác nhận" ], - "Confirm address": [ - "Xác nhận địa chỉ" - ], "Confirm downgrade": [ "Xác nhận hạ cấp" ], "Confirm loss of ${ BRAND_NAME } bonuses": [ "Xác nhận mất tiền thưởng ${ BRAND_NAME }" ], - "Confirm phone number": [ - "Xác nhận số điện thoại" - ], "Connect ${ name }": [ "Kết nối ${ name }" ], @@ -21947,6 +21784,9 @@ "Feature access": [ "Truy cập tính năng" ], + "Fewer distractions, more focus": [ + "Ít xao nhãng hơn, tập trung hơn" + ], "Filter for more focus": [ "Lọc để tập trung hơn" ], @@ -22319,9 +22159,6 @@ "Phone": [ "Điện thoại" ], - "Photos": [ - "Ảnh" - ], "Pin the extension": [ "Ghim phần mở rộng" ], @@ -22583,6 +22420,9 @@ "Snooze:": [ "Hoãn:" ], + "Something went wrong": [ + "Đã xảy ra sự cố" + ], "Sort folders alphabetically": [ "Sắp xếp thư mục theo bảng chữ cái" ], @@ -23135,9 +22975,6 @@ "This feature is only available on Beta": [ "Tính năng này chỉ có sẵn trên bản Beta" ], - "This is the default key used by other ${ MAIL_APP_NAME } users on older mobile apps to encrypt data they send to you": [ - "Đây là khóa mặc định được những người dùng ${ MAIL_APP_NAME } khác sử dụng trên các ứng dụng di động cũ hơn để mã hóa dữ liệu họ gửi cho bạn" - ], "This is the default key used by other ${ MAIL_APP_NAME } users to encrypt data they send to you": [ "Đây là khóa mặc định được người dùng ${ MAIL_APP_NAME } khác sử dụng để mã hóa dữ liệu gửi cho bạn" ], @@ -23895,12 +23732,6 @@ "${ BRAND_NAME } will transfer as much data as possible, starting with your most recent messages.": [ "${ BRAND_NAME } sẽ chuyển nhiều dữ liệu nhất có thể, bắt đầu với các thư gần đây nhất." ], - "Are you sure you want to delete the phone number?": [ - "Chắc chắn muốn xóa số điện thoại không?" - ], - "Are you sure you want to delete this address?": [ - "Chắc chắn muốn xóa địa chỉ này không?" - ], "By deleting this address, you will no longer be able to receive daily email notifications.": [ "Nếu xóa địa chỉ này, bạn sẽ không còn nhận được thông báo qua email hàng ngày." ], @@ -23910,9 +23741,6 @@ "By deleting this address, you will no longer be able to recover your account.": [ "Nếu xóa địa chỉ này, bạn sẽ không còn có thể khôi phục tài khoản." ], - "By deleting this phone number, you will no longer be able to recover your account.": [ - "Nếu xóa số điện thoại này, bạn sẽ không còn có thể khôi phục tài khoản." - ], "If you cancel this import, you won't be able to resume it. ${ BRAND_NAME } saved all progress in your account. Cancel anyway?": [ "Nếu hủy quá trình nhập này, bạn sẽ không thể tiếp tục nó. ${ BRAND_NAME } đã lưu mọi tiến trình trong tài khoản. Vẫn hủy?" ], diff --git a/applications/account/locales/zh_CN.json b/applications/account/locales/zh_CN.json index 38a7e369416..723077cf3cf 100644 --- a/applications/account/locales/zh_CN.json +++ b/applications/account/locales/zh_CN.json @@ -90,6 +90,9 @@ "Add": [ "添加" ], + "Add ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }": [ + "添加 ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }" + ], "Add ${ BRAND_NAME } Account": [ "添加 ${ BRAND_NAME } 账户" ], @@ -105,6 +108,9 @@ "Add address or domain": [ "添加邮箱地址或域名" ], + "Add and verify": [ + "添加并验证" + ], "Add another account": [ "添加其他账户" ], @@ -159,6 +165,9 @@ "Add user": [ "添加用户" ], + "Added ${ memberName } as group owner": [ + "已添加 ${ memberName } 的群组管理员身份" + ], "Align center": [ "居中" ], @@ -210,6 +219,9 @@ "Back to sign in": [ "返回登录" ], + "Back to sign-in": [ + "返回登录" + ], "Block": [ "屏蔽" ], @@ -261,6 +273,9 @@ "Claim it": [ "使用该地址" ], + "Claim offer": [ + "认领优惠" + ], "Claim this address": [ "认领此地址" ], @@ -292,10 +307,10 @@ "颜色" ], "Compare all plans": [ - "比较所有计划" + "比较所有套餐" ], "Compare plans": [ - "比较计划" + "比较套餐" ], "Configure SAML": [ "配置 SAML" @@ -303,6 +318,9 @@ "Confirm": [ "确定" ], + "Confirm email": [ + "确认邮件" + ], "Confirm opening of link ${ linkToShow }": [ "确认打开链接 ${ linkToShow }" ], @@ -318,18 +336,21 @@ "Connect Gmail address": [ "连接 Gmail 地址" ], - "Connect to Gmail": [ - "连接 Gmail" - ], "Connect to video conferencing": [ "连接至视频会议" ], "Connect your ${ BRAND_NAME } Account": [ "连接 ${ BRAND_NAME } 账户" ], + "Connect your email": [ + "关联您的邮箱" + ], "Connected": [ "已连接" ], + "Contact sales": [ + "联系销售" + ], "Contact support": [ "联系客服" ], @@ -360,8 +381,11 @@ "Continue with ${ nameToDisplay } ${ maybeEmailInBrackets }": [ "继续使用 ${ nameToDisplay } ${ maybeEmailInBrackets }" ], + "Continue with Free": [ + "注册免费账户" + ], "Continue with Google": [ - "使用 Google 账号继续" + "通过 Google 继续" ], "Continue with Outlook": [ "使用 Outlook 继续" @@ -406,7 +430,7 @@ "创建一个链接,与 ${ BRAND_NAME } 之外的人员共享" ], "Create an account": [ - "创建账号" + "创建账户" ], "Create calendar": [ "创建日历" @@ -435,6 +459,9 @@ "Create organization": [ "创建组织" ], + "Create recovery phrase": [ + "创建恢复短语" + ], "Create users": [ "创建用户" ], @@ -466,7 +493,10 @@ "删除" ], "Delete account": [ - "删除账号" + "删除账户" + ], + "Delete and confirm": [ + "删除并确认" ], "Delete filter “${ Name }”": [ "删除筛选器 “${ Name }”" @@ -504,8 +534,8 @@ "Delete record": [ "删除记录" ], - "Delete token ${ token.Account }": [ - "删除令牌 ${ token.Account }" + "Delete token ${ tokens[0].Account }": [ + "删除令牌 ${ tokens[0].Account }" ], "Delete token “${ token.Name }”": [ "删除令牌 “${ token.Name }”" @@ -546,11 +576,14 @@ "Disable categories": [ "禁用分类" ], + "Disable category": [ + "禁用分类" + ], "Disable recovery phrase": [ - "禁用恢复密语" + "禁用恢复短语" ], "Disable recovery phrase?": [ - "禁用恢复密语吗?" + "禁用恢复短语?" ], "Discard": [ "放弃" @@ -621,6 +654,9 @@ "Download the desktop app": [ "下载桌面应用程序" ], + "Download updated file": [ + "下载更新后的文件" + ], "Edit": [ "更改" ], @@ -693,6 +729,9 @@ "Enable ${ darkWebMonitoring }": [ "启用 ${ darkWebMonitoring }" ], + "Enable category": [ + "启用分类" + ], "enable desktop notifications": [ "开启推送通知" ], @@ -715,10 +754,10 @@ "探索 ${ target }" ], "Explore business plans": [ - "探索商业计划" + "探索商业套餐" ], "Explore group plans": [ - "探索团体计划" + "探索团体套餐" ], "Explore other ${ BRAND_NAME } plans": [ "浏览其他 ${ BRAND_NAME } 账户等级" @@ -744,6 +783,9 @@ "Filters are being applied. This might take a few minutes.": [ "正在应用筛选条件,这可能需要几分钟时间。" ], + "Finish": [ + "完成" + ], "Fit to window": [ "适应窗口大小" ], @@ -762,14 +804,20 @@ "Generate key": [ "生成密钥" ], + "Generate missing keys": [ + "生成缺失的密钥" + ], + "Generate new phrase": [ + "生成新短语" + ], "Generate new recovery phrase": [ - "生成新的恢复密语" + "生成新的恢复短语" ], "Generate password": [ "生成密码" ], "Generate recovery phrase": [ - "生成恢复密语" + "生成恢复短语" ], "Generate token": [ "生成令牌" @@ -861,6 +909,9 @@ "Go to ${ planOrAppName }": [ "前往 ${ planOrAppName }" ], + "Go to domain provider": [ + "转到域名提供商" + ], "Go to label": [ "转至标签" ], @@ -892,7 +943,7 @@ "隐藏更多优势" ], "Hide plan features": [ - "隐藏计划功能" + "隐藏套餐功能" ], "I don't have my 2FA device": [ "我没有 2FA 设备" @@ -1179,6 +1230,9 @@ "Reactivate keys": [ "重新激活密钥" ], + "Read the story": [ + "阅读故事" + ], "Reconnect": [ "重新连接" ], @@ -1254,6 +1308,9 @@ "Remove this notification": [ "移除这个通知?" ], + "Removed ${ memberName } as group owner": [ + "已移除 ${ memberName } 的群组管理员身份" + ], "Rename": [ "重命名" ], @@ -1282,7 +1339,7 @@ "重置" ], "Reset credentials": [ - "重置凭证信息" + "重置凭据" ], "Reset keys": [ "重置密钥" @@ -1335,12 +1392,18 @@ "Save": [ "保存" ], + "Save & exit": [ + "保存并退出" + ], "Save address": [ "保存地址" ], "Save and continue": [ "保存并继续" ], + "Save and verify": [ + "保存并验证" + ], "Save changes": [ "保存更改" ], @@ -1362,6 +1425,9 @@ "Search settings": [ "搜索设置" ], + "Secure account": [ + "安全账户" + ], "See DNS TXT record": [ "查看 DNS 的 TXT 记录" ], @@ -1444,7 +1510,7 @@ "设为默认" ], "Set as default mail application": [ - "设为默认邮件应用程序" + "设置为默认邮箱应用" ], "Set catch-all": [ "设置通配邮箱" @@ -1456,7 +1522,7 @@ "设置恢复方式" ], "Set recovery phrase": [ - "设置恢复密语" + "设置恢复短语" ], "Set up 2FA": [ "设置 2FA" @@ -1584,6 +1650,9 @@ "Switch or add account": [ "切换或添加账户" ], + "Switch to free plan": [ + "切换到免费套餐" + ], "Take a tour": [ "开始导览" ], @@ -1642,7 +1711,7 @@ "更新恢复文件" ], "Update recovery phrase": [ - "更新恢复密语" + "更新恢复短语" ], "Upgrade": [ "升级账户" @@ -1663,7 +1732,7 @@ "升级账户查看全部" ], "Upgrade your plan": [ - "升级您的计划" + "升级您的套餐" ], "Upload": [ "已上传" @@ -1749,6 +1818,9 @@ "View recovery settings": [ "查看恢复设置" ], + "View recovery setup details": [ + "查看恢复设置详情" + ], "Void": [ "确定废除" ], @@ -1758,6 +1830,9 @@ "Void all recovery files?": [ "废除所有恢复文件?" ], + "Watch the interview": [ + "观看访谈" + ], "Welcome": [ "欢迎" ], @@ -2008,6 +2083,47 @@ "管理员" ] }, + "Admin roles onboarding": { + "2 new admin roles": [ + "2 个新管理员角色" + ], + "3 new admin roles": [ + "3 个新管理员角色" + ], + "Configure security policies, data retention, and VPN infrastructure, and manage audit logs.": [ + "配置安全策略、数据保留和 VPN 基础设施,并管理审计日志。" + ], + "Delegate management by assigning specific admin roles. Give each admin only the access they need. This follows the principle of least privilege, protecting your organization from compromised accounts and accidental errors.": [ + "通过分配特定的管理员角色进行委派管理。为每位管理员仅授予其所需的访问权限。这遵循最小权限原则,可保护您的组织免受账户被盗和意外错误的影响。" + ], + "Delegate management for many users at once. Assign specific admin roles to groups for automatic permissions. This follows the principle of least privilege to save time on onboarding and offboarding while reducing errors.": [ + "一次性为大量用户进行委托管理,为群组分配特定的管理员角色以自动授予权限。此举遵循最小权限原则,可节省入职和离职处理时间,同时减少错误。" + ], + "Delegate management with the appropriate admin role.": [ + "通过合适的管理员角色进行委派管理。" + ], + "Manage all users, groups, storage, security, billing, audit logs, and system configurations.": [ + "管理所有用户、群组、存储、安全、计费、审计日志和系统配置。" + ], + "Manage users, groups, and storage for all members, assign roles, and allocate licenses.": [ + "管理所有成员的账户、群组和存储空间,分配角色和许可证。" + ], + "New: Control admin access for individual users": [ + "新增:控制个人用户的管理员权限" + ], + "New: Control admin access for many users at once": [ + "新功能:一次性控制大量用户的管理员访问权限" + ], + "Organization admin:": [ + "组织管理员:" + ], + "Security admin:": [ + "安全管理员:" + ], + "User admin:": [ + "用户管理员:" + ] + }, "AdminRole_Info": { "A role is a group of permissions that you can assign to the members of your organization.": [ "角色是一组权限,您可以将其分配给组织成员。" @@ -2233,6 +2349,11 @@ "您的免费体验期将于 ${ timeRemaining } 结束。" ] }, + "Badge": { + "Save ${ discountRate }%": [ + "立省 ${ discountRate }%" + ] + }, "Badge for domain": { "Disabled": [ "关闭" @@ -2263,7 +2384,7 @@ "获取优惠" ], "Save even more with a 12-month plan": [ - "使用 12 个月计划可节省更多费用" + "选择 12 个月套餐,节省更多" ] }, "bf2023: Deal details": { @@ -2385,7 +2506,7 @@ "突破网络封锁,保护线上隐私,最多可通过 10 台设备连接全球逾 110 个国家超过 8500 台服务器,畅享全球流媒体服务,拦截恶意软件和广告,还有 VPN 加速器等更多功能等您体验。" ], "Secure logins on all your devices. Includes unlimited hide-my-email aliases, sharing, integrated 2FA, ${ DARK_WEB_MONITORING_NAME } and more.": [ - "在所有设备上安全登录。包括无限制 hide-my-email 别名、共享、集成 2FA、${ DARK_WEB_MONITORING_NAME } 等功能。" + "在所有设备上安全登录。包括无限制 Hide-my-email 别名、共享、集成 2FA、${ DARK_WEB_MONITORING_NAME } 等功能。" ], "Secure your emails and schedule with end-to-end encryption. Includes ${ addresses } email address, support for custom email domains, ${ BRAND_NAME } Scribe writing assistant, unlimited hide-my-email aliases and more.": [ "使用端到端加密保护您的电子邮件和日程安排。包含 ${ addresses } 个邮箱地址、自定义邮箱域名支持、${ BRAND_NAME } Scribe 写作助手、无限的 hide-my-email 别名等功能。" @@ -2704,7 +2825,7 @@ "该文章已更新,加入了 WireGuard 和 Stealth VPN 协议。" ], "Try out **Newsletters view** to declutter your inbox.": [ - "试试 **订阅邮件视图**,让您的收件箱井井有条。" + "试用**新闻通讯视图**,让您的收件箱更整洁" ], "Understand passkeys, their benefits over passwords, and how ${ PASS_APP_NAME } keeps them safe.": [ "了解通行密钥、它相对于密码的优势,以及 ${ PASS_APP_NAME } 如何确保其安全。" @@ -2759,15 +2880,66 @@ "${ BRAND_NAME } Migration Assistant": [ "${ BRAND_NAME } 迁移助手" ], - "Add a custom domain": [ - "添加自定义域名" + "${ migratedCount } of ${ providerUsers.length }": [ + "${ migratedCount } / ${ providerUsers.length }" + ], + "**p=none**: do not quarantine or reject unauthorized emails. Usually, people only use this policy to troubleshoot or test.": [ + "**p=none**:不隔离也不拒绝未经授权的邮件,通常仅在排查或测试时使用此策略。" + ], + "**p=quarantine**: asking the recipient platforms to mark the unauthorized emails as spam or quarantine them.": [ + "**p=quarantine**:要求收件人平台将未经授权的邮件标记为垃圾邮件或进行隔离。" + ], + "**p=reject**: asking the recipient platforms to reject the unauthorized emails.": [ + "**p=reject**:要求收件人平台拒绝未经授权的邮件。" + ], + "Account connected": [ + "账户已连接" + ], + "Account disconnected": [ + "账户已断开连接" + ], + "Activated": [ + "已激活" + ], + "Activation link": [ + "激活链接" ], - "App installed": [ - "应用已安装" + "Activation link copied to clipboard": [ + "激活链接已复制到剪贴板" + ], + "Add a domain": [ + "添加域名" + ], + "Add domain": [ + "添加域名" + ], + "Add users": [ + "添加用户" + ], + "Add users and configure your domain manually for sending and receiving mail. Ideal for small teams starting from a clean slate.": [ + "手动添加用户并配置您的域名以发送和接收邮件,适合从零开始的小团队。" + ], + "Address is already used by a user outside of your organization. Please contact customer support to resolve this": [ + "该地址已被您组织外的用户使用,请联系客服以解决此问题。" + ], + "All": [ + "全部" + ], + "An unknown error occurred": [ + "发生未知错误" + ], + "Are you sure you want to proceed? Users who haven't claimed their account before the migration is finalized will need to request a password reset from their ${ BRAND_NAME } organization administrator.": [ + "您确定要继续吗?在迁移完成前未领取账户的用户,需要向其 ${ BRAND_NAME } 组织管理员申请重置密码。" + ], + "As soon as the accounts are created, you can share the activation link so users can claim their ${ BRAND_NAME } account.": [ + "账户创建完成后,您可以分享激活链接,以便用户领取其 ${ BRAND_NAME } 账户。" ], "Authenticate": [ "身份验证" ], + "Authenticate to Google Workspace": [ + "向 Google Workspace 进行身份验证" + ], "Authenticate your Google Workspace account": [ "验证您的 Google Workspace 账户" ], @@ -2777,23 +2949,68 @@ "Change": [ "更改" ], + "Choose how you want to bring your team and email setup to ${ BRAND_NAME }.": [ + "请选择如何将您的团队和邮箱设置迁移到 ${ BRAND_NAME }。" + ], + "Choose what to migrate. Your choice will apply to all users. The migration will start after you decide which users to copy.": [ + "请选择要迁移的内容,您的选择将应用于所有用户。在您决定复制哪些用户后,迁移将开始。" + ], "Completed": [ "已完成" ], "Configure": [ "配置" ], + "Configure domain": [ + "配置域名" + ], "Configure migration": [ "配置迁移" ], + "Configure your domain": [ + "配置域名" + ], "Contacts": [ "联系人" ], + "Continue migration": [ + "继续迁移" + ], + "Copy activation link": [ + "复制激活链接" + ], + "Copy activation link to clipboard": [ + "复制激活链接到剪贴板" + ], + "Copy the below code and paste it in the DNS section of your domain host. You can find an example and some helpful tips ${ hereHref }.": [ + "请将下面的代码复制并粘贴到您域名提供商的 DNS 设置中,您可以在 ${ hereHref } 找到示例和一些实用提示。" + ], + "Creating accounts": [ + "正在创建账户" + ], + "DKIM adds a digital signature to each email so recipients can verify that the message really came from your domain and was not altered in transit. Without it, messages may be treated as less trustworthy.": [ + "DKIM 为每封邮件添加数字签名,以便收件人验证邮件确实来自您的域名且未被篡改。否则,邮件可能被认为可信度较低!" + ], + "DKIM records": [ + "DKIM 记录" + ], + "DMARC builds on SPF and DKIM by telling receiving servers how to handle messages that fail these checks. It helps protect your domain from impersonation and improves overall delivery reliability.": [ + "DMARC 在 SPF 和 DKIM 的基础上,告知接收服务器如何处理未通过这些检查的邮件。它有助于保护您的域名免遭冒充,并提高整体的投递可靠性。" + ], + "DMARC records": [ + "DMARC 记录" + ], + "Domain added": [ + "已添加域名" + ], "Domain connected": [ "域名已连接" ], - "Domain ownership verified": [ - "域名所有权已验证" + "Ensure that your emails reach the inbox, not the spam folder. Updating SPF will allow users to send from ${ BRAND_NAME } and Google simultaneously for the duration of the migration.": [ + "请确保您的邮件进入收件箱而非垃圾邮件文件夹,更新 SPF 将允许用户在迁移期间同时通过 ${ BRAND_NAME } 和 Google 发送邮件。" + ], + "Errors": [ + "错误" ], "Estimated size": [ "预计大小" @@ -2801,15 +3018,39 @@ "Failed to load OAuth": [ "加载 OAuth 失败" ], + "Finalize migration": [ + "完成迁移" + ], + "Finalize your migration": [ + "完成迁移" + ], + "Finalizing the migration means all your emails will be routed directly to ${ BRAND_NAME }. Users will stop receiving emails on their Google accounts and data will not be synchronized between ${ BRAND_NAME } and Google anymore.": [ + "完成迁移后,您的所有邮件将直接路由到 ${ BRAND_NAME }。用户将不再在 Google 账户上接收邮件,并且 ${ BRAND_NAME } 与 Google 之间的数据将不再同步。" + ], + "Find out what can be migrated.": [ + "了解可以迁移哪些内容" + ], "Finish setting up your business account": [ "完成您的商业账户设置" ], + "Go to Domain names": [ + "转到域名管理" + ], "Google Marketplace app to copy data to ${ BRAND_NAME }": [ "用于将数据复制到 ${ BRAND_NAME } 的 Google Marketplace 应用" ], + "Google Workspace account": [ + "Google Workspace 账户" + ], + "Hang tight, we're setting up user accounts and will start importing user data shortly.": [ + "请耐心等待,我们正在设置用户账户,并将很快开始导入用户数据。" + ], "Has errors": [ "出错啦" ], + "Import errors for ${ user.AdminSetName }": [ + "导入 ${ user.AdminSetName } 时出错" + ], "In progress": [ "进行中" ], @@ -2819,14 +3060,20 @@ "Install migration app": [ "安装迁移应用" ], - "Learn more about what can be migrated. Learn more": [ - "详细了解可迁移的内容。了解详情" + "Install Migration assistant": [ + "安装迁移助手" + ], + "Loading your organization data": [ + "正在加载您的组织数据" ], "Mail": [ "邮箱" ], - "Migrate": [ - "迁移" + "Managed via ${ registrar.name }": [ + "通过 ${ registrar.name } 管理" + ], + "Member address not found. Please contact customer support to resolve this": [ + "未找到成员地址,请联系客服解决此问题。" ], "Migrate from Google Workspace": [ "从 Google Workspace 迁移" @@ -2834,6 +3081,12 @@ "Migrate users": [ "迁移用户" ], + "Migrate users to ${ BRAND_NAME }": [ + "将用户迁移至 ${ BRAND_NAME }" + ], + "Migrated": [ + "已迁移" + ], "Migration includes": [ "迁移内容包括" ], @@ -2843,8 +3096,35 @@ "Migration status": [ "迁移状态" ], - "Not started": [ - "未开始" + "Missing organization private key": [ + "缺少组织私钥" + ], + "Missing organization public key": [ + "缺少组织公钥" + ], + "More details": [ + "更多详情" + ], + "Move your users, emails, and settings from Google Workspace automatically. We’ll guide you through connecting your account, verifying your domain, and migrating users securely.": [ + "自动从 Google Workspace 迁移您的用户、邮件和设置。我们将指导您完成连接账户、验证域名以及安全迁移用户的过程。" + ], + "No error details available. Please contact customer support for more information": [ + "没有可用的错误详情,请联系客服以获取更多信息。" + ], + "No users to display": [ + "无可显示的用户" + ], + "Not activated": [ + "未激活" + ], + "Not confirmed": [ + "尚未确认" + ], + "Once users have claimed their ${ BRAND_NAME } account, finalize the migration.": [ + "用户领取其 ${ BRAND_NAME } 账户后,将完成迁移。" + ], + "Once we have confirmed that emails are routed to ${ BRAND_NAME } the migration will be finalized. You will receive a confirmation email to let you know when this happens. This process can take up to 24 hours.": [ + "一旦我们确认邮件已路由到 ${ BRAND_NAME },迁移即告完成。完成后您将收到一封确认邮件。此过程最多可能需要 24 小时。" ], "Organization does not have enough seats available": [ "组织可用席位不足" @@ -2852,8 +3132,20 @@ "Organization does not have enough storage available": [ "组织可用存储空间不足" ], - "Organization settings": [ - "组织设置" + "Pending": [ + "待处理" + ], + "Please add the following records in your DNS console of your domain provider:": [ + "请在您域名提供商的 DNS 控制台中添加以下记录:" + ], + "Please leave this window open until we're done creating all the users.": [ + "请保持窗口打开,直到我们完成所有用户的创建。" + ], + "Please select at least one product to migrate": [ + "请至少选择一个要迁移的产品" + ], + "Refresh": [ + "刷新" ], "Required": [ "必填" @@ -2864,8 +3156,8 @@ "Select at least one user to start a migration": [ "请至少选择一位用户以开始迁移" ], - "Select what you want to migrate, this will apply to all users whether they are created now or later. Migration will start after user accounts are created.": [ - "请选择您要迁移的内容,这将应用于所有用户(无论是当前创建还是稍后创建)。账户创建后,迁移将开始。" + "Select users to migrate": [ + "请选择要迁移的用户" ], "Set up": [ "设置" @@ -2873,53 +3165,119 @@ "Set up billing information": [ "设置账单信息" ], + "Set up manually": [ + "手动设置" + ], + "Set up secure sending (DKIM)": [ + "设置安全发送 (DKIM)" + ], + "Set up secure sending (DMARC)": [ + "设置安全发送 (DMARC)" + ], + "Set up secure sending (SPF)": [ + "设置安全发送 (SPF)" + ], "Set up two-factor authentication": [ "设置 2FA" ], "Settings": [ "设置" ], + "Share the activation link to users so they can claim their ${ BRAND_NAME } account.": [ + "向用户分享激活链接,以便他们领取其 ${ BRAND_NAME } 账户!" + ], "Sign in to Google Workspace": [ "登录 Google Workspace" ], + "Size": [ + "大小" + ], + "Some accounts are not claimed": [ + "部分账户未被领取" + ], + "SPF records": [ + "SPF 记录" + ], + "Start migrating": [ + "开始迁移" + ], "Start migration": [ "开始迁移" ], "Status": [ "状态" ], + "The default setting is none. However, to improve your security we recommend setting this value to p=quarantine.": [ + "默认设置为 none。但为了提升安全性,我们建议将此值设置为 p=quarantine!" + ], + "The “p=” value specifies the action to take for emails that fail DMARC. Here are the available actions:": [ + "“p=”值指定了对 DMARC 验证失败的邮件所采取的操作。可用的操作如下:" + ], + "This migration has been completed": [ + "迁移已完成" + ], "To migrate your organization’s data, you need to install the ${ BRAND_NAME } Migration Assistant app from the Google Workspace Marketplace. This will grant permission to ${ BRAND_NAME } to copy your data. After installing it, come back here to continue.": [ "若要迁移您组织的数据,您需要从 Google Workspace Marketplace 安装 ${ BRAND_NAME } 迁移助手应用。这将授予 ${ BRAND_NAME } 复制您数据的权限。安装完成后,请返回此处继续。" ], - "Transfer errors": [ - "传输错误" + "Update records for receiving": [ + "更新接收记录" ], "User": [ "用户" ], + "User needs to activate their account through the activation link shown above": [ + "用户需要通过上述激活链接激活其账户" + ], + "User status": [ + "用户状态" + ], + "Users can use ${ BRAND_NAME } or Google simultaneously for the duration of the migration.": [ + "在迁移期间,用户可以同时使用 ${ BRAND_NAME } 或 Google。" + ], "Users migrated": [ "已迁移的用户" ], + "Verified": [ + "已验证" + ], + "Verify domain ownership": [ + "验证域名所有权" + ], "Verify installation": [ "验证安装" ], "Verify your domain": [ "验证您的域名" ], - "Verify your domain ownership": [ - "验证您的域名所有权" - ], "Verify your domain to start a migration": [ "验证您的域名以开始迁移" ], + "We detected the primary domain linked to your Google Workspace account. Confirm it to continue setting up email for your ${ BRAND_NAME } organization.": [ + "我们检测到与您的 Google Workspace 账户关联的主域名。请确认以继续为您的 ${ BRAND_NAME } 组织设置邮箱。" + ], "We were unable to verify the installation, please check that you have installed it in your Google Workspace account and try again.": [ "我们无法验证安装,请检查您已在 Google Workspace 账户中安装该应用,然后重试。" ], + "We're still checking the MX records with your domain provider.": [ + "我们仍在与您的域名提供商检查 MX 记录!" + ], + "We've noticed some users have not claimed their ${ BRAND_NAME } accounts.": [ + "我们注意到部分用户尚未领取其 ${ BRAND_NAME } 账户!" + ], "What are you migrating?": [ "您需要迁移什么?" ], + "You": [ + "您" + ], "You need to grant the permission for ${ BRAND_NAME } to copy your data. After accepting permissions, come back here to continue.": [ "您需要授予 ${ BRAND_NAME } 复制数据的权限。接受权限后,请返回此处继续。" + ], + "You're all set!": [ + "一切就绪!" + ], + "Your current plan allows up to ${ maxMembers } user. To migrate additional users, add more seats to your subscription.": [ + "您当前的套餐最多允许 ${ maxMembers } 位用户。如需迁移更多用户,请为您的订阅增加席位。" ] }, "breadcrumb": { @@ -3027,9 +3385,18 @@ ] }, "Button": { + "Add users manually": [ + "手动添加用户" + ], + "Cancel": [ + "取消" + ], "Close": [ "关闭" ], + "Configure your network": [ + "配置您的网络" + ], "Continue using ${ MAIL_APP_NAME }.": [ "继续使用 ${ MAIL_APP_NAME }。" ], @@ -3051,6 +3418,12 @@ "Got it": [ "好的" ], + "Invite your team": [ + "邀请您的团队" + ], + "Manage global VPN permissions": [ + "管理全局 VPN 权限" + ], "Maybe later": [ "以后再说" ], @@ -3060,12 +3433,21 @@ "Remind me later": [ "稍后提醒我" ], + "Secure your organization": [ + "保护您的组织安全" + ], "Send": [ "发送" ], "Set up other features": [ "设置其他功能" ], + "Set up SSO": [ + "设置 SSO" + ], + "Sign in": [ + "登录" + ], "Take a tour": [ "开始导览" ] @@ -3653,6 +4035,41 @@ "如果" ] }, + "Confirm cancellation": { + "Access is restored once usage is back within limits.": [ + "当使用量恢复至限制范围内后,访问权限将自动恢复。" + ], + "Back up photos from your devices": [ + "从您的设备备份照片" + ], + "Cancel subscription": [ + "取消订阅" + ], + "Confirm cancellation": [ + "确认取消" + ], + "If you exceed free plan limits, you won't be able to:": [ + "如果您超出免费套餐限制,您将无法:" + ], + "Keep current plan": [ + "保留当前套餐" + ], + "Manage your calendar": [ + "管理您的日历" + ], + "Receive new emails": [ + "接收新邮件" + ], + "Send emails with attachments": [ + "发送带附件的邮件" + ], + "Upload any new files": [ + "上传任意文件" + ], + "When your subscription ends on ${ endDate }, your account will switch to the Free plan. If your usage exceeds Free plan limits, some features may be temporarily unavailable.": [ + "当您的订阅在 ${ endDate } 结束时,您的账户将切换到免费套餐。如果您的使用量超过免费套餐限制,某些功能可能会暂时不可用。" + ] + }, "Confirm modal title": { "Import is incomplete!": [ "导入未完成!" @@ -4654,6 +5071,9 @@ "/month": [ "/月" ], + "/user /month": [ + "/用户/月" + ], "/user per month": [ "/用户每月" ] @@ -4816,15 +5236,21 @@ ] }, "Description": { + "${ BRAND_NAME }'s end-to-end encryption means only you can unlock your data. Set up recovery options now to ensure you never lose access.": [ + "${ BRAND_NAME } 的端到端加密意味着只有您能解锁自己的数据。立即设置恢复选项,确保永不丢失访问权限。" + ], "${ DOCS_SHORT_APP_NAME } in ${ DRIVE_APP_NAME } allows you to work together with others in a secure, encrypted environment.": [ "${ DRIVE_APP_NAME } 中的 ${ DOCS_SHORT_APP_NAME } 允许您在安全、加密的环境中与他人协同办公。" ], "${ MAIL_APP_NAME } is not your default mail application.": [ - "${ MAIL_APP_NAME } 并非您的默认邮件应用程序!" + "${ MAIL_APP_NAME } 不是您的默认邮箱应用!" ], "${ MAIL_APP_NAME } is your default mail application.": [ "${ MAIL_APP_NAME } 是您的默认邮箱应用" ], + "${ MAIL_APP_NAME } keeps your business data secure and lets you send encrypted emails to anyone.": [ + "${ MAIL_APP_NAME } 保护您的业务数据安全,并允许您向任何人发送加密邮件。" + ], "A checked box means the feature is disabled.": [ "选中复选框表示禁用该功能。" ], @@ -4846,14 +5272,20 @@ "Automatically sort your incoming messages before they reach your inbox.": [ "在邮件到达收件箱前自动分类。" ], + "Available storage: ${ storageText }": [ + "可用空间:${ storageText }" + ], "Available with ${ title }": [ "随 ${ title } 可用" ], "Block Google's ability to profile you. Gmail can't see what you do in ${ MAIL_APP_NAME }": [ "阻止 Google 对您进行用户画像分析。Gmail 无法查看您在 ${ MAIL_APP_NAME } 中的操作" ], - "Bring over email, calendar events, and contacts from another provider.": [ - "导入来自其他提供商的电子邮件、日历日程和联系人。" + "Bring over your email, calendar events, and contacts from another provider.": [ + "从其他服务商迁移您的邮件、日历事件和联系人。" + ], + "Build trust and brand recognition with professional email addresses at your own domain.": [ + "使用您自有域名的专业邮箱地址,建立信任和品牌认知度。" ], "Configure this first to activate your organization and customize your email address.": [ "首先进行配置,以激活您的组织并自定义您的邮箱地址。" @@ -4861,6 +5293,9 @@ "Connect your CRM, website, printers, and more.": [ "连接您的 CRM、网站、打印机等。" ], + "Create a Gateway to give your users access to your IT resources through dedicated servers.": [ + "创建网关,让您的用户通过专属服务器访问您的 IT 资源。" + ], "Create a Zoom meeting and add joining details to your event with one click.": [ "创建 Zoom 会议并一键添加加入事件的详细信息。" ], @@ -4870,9 +5305,15 @@ "Create groups you can email with a single address.": [ "创建可通过单一地址发送电子邮件的群组。" ], + "Create new user accounts or import users with SSO (single sign-on) SCIM provisioning.": [ + "创建新账户或通过单点登录 (SSO) SCIM 配置导入用户。" + ], "Create policies to decide who can connect to shared servers in each country.": [ "创建策略,决定谁可以连接到每个国家/地区的共享服务器。" ], + "Decide which users can connect to each of our 120+ shared server locations.": [ + "决定哪些用户可以连接到我们 120 多个共享服务器的位置。" + ], "Easily access your email and calendar on desktop and mobile.": [ "在电脑和手机上轻松访问电子邮件和日历。" ], @@ -4897,6 +5338,9 @@ "Encrypting and importing contacts... This may take a few minutes. When the process is completed, you can close this modal.": [ "正在加密并导入联系人... 该过程可能需要几分钟,完成后您就可以关闭此对话框了。" ], + "Enough room for years of emails, attachments and more.": [ + "拥有足够空间存储多年的邮件、附件等" + ], "Ensure secure access to organization data, even if your team is remote or using public WiFi.": [ "确保对组织数据的安全访问,即使您的团队在远程或使用公共 WiFi 时也是如此。" ], @@ -4921,12 +5365,30 @@ "Help your team securely store passwords to sensitive business and client information.": [ "帮助您的团队安全存储敏感业务和客户信息的密码。" ], + "How our customer support team got our VPN app directly into people's hands.": [ + "我们的客户支持团队如何将 VPN 应用直接送到用户手中。" + ], + "How we fought back when ${ BRAND_NAME } was blocked in an aggressive campaign.": [ + "当 ${ BRAND_NAME } 在一场咄咄逼人的运动中受阻时,我们是如何反击的。" + ], + "How we supported local activists when privacy and free speech were threatened.": [ + "当隐私和言论自由受到威胁时,我们如何支持本地活动人士。" + ], + "How you unlock your encrypted data if you lose your password.": [ + "当您忘记密码时,解锁加密数据的方式。" + ], + "If you haven’t already, enable some recovery methods to make sure you never lose access to ${ VPN_APP_NAME }.": [ + "如果尚未设置,请启用一些恢复方法,以确保您永远不会无法访问 ${ VPN_APP_NAME }。" + ], "It looks like the contact list you are importing contains some groups. Please review how these groups should be imported.": [ "您正在导入的联系人列表似乎包含一些群组,请查看并选择应如何导入这些群组。" ], "Keep different parts of your life separate and your inbox organized with additional addresses.": [ "将您生活中不同的部分分开,并使用其他地址整理您的收件箱。" ], + "Keep your team secure on the go with our apps for web, iOS, Android, Windows, Mac, and Linux.": [ + "使用我们的网页端、iOS、Android、Windows、Mac 和 Linux 应用程序,让您的团队随时随地保持安全。" + ], "Learn more about common problems": [ "了解关于常见问题的更多信息" ], @@ -4936,6 +5398,9 @@ "Make your email footer your own — showcase your unique brand, not ours.": [ "在邮件末尾展现您的独特品牌,而非我们的统一标识。" ], + "Methods that include both password reset and data recovery.": [ + "包含密码重置和数据恢复两种方法。" + ], "Most issues can be solved in a few minutes with our step-by-step guides.": [ "大多数问题可通过我们的分步指南在几分钟内解决!" ], @@ -4948,8 +5413,8 @@ "Read, reply, and stay on top of Gmail from within ${ MAIL_APP_NAME }": [ "在 ${ MAIL_APP_NAME } 中阅读、回复并随时处理 Gmail 邮件" ], - "Send a code to your recovery email or phone": [ - "将验证码发送至您的恢复邮箱或手机号码" + "Select which categories you want to add and if you want to receive push notifications for each category.": [ + "请选择要添加的分类,以及是否为每个分类接收推送通知。" ], "Set up accounts for all users and invite them to join ${ BRAND_NAME }.": [ "为所有用户建立账户并邀请他们加入 ${ BRAND_NAME }。" @@ -4963,6 +5428,9 @@ "Still need help? Our support team is here for you.": [ "仍需要帮助?我们的支持团队随时为您服务。" ], + "This allows you to regain access to your ${ BRAND_NAME } account but does not recover your encrypted data.": [ + "这可以让您重新访问 ${ BRAND_NAME } 账户,但不会恢复您的加密数据。" + ], "This may happen if permissions were removed or your password changed.": [ "如果权限被移除或密码被更改,可能会发生此情况。" ], @@ -4990,27 +5458,39 @@ "Track the status and activity of your referrals": [ "实时跟踪已发出的邀请动态" ], + "Unlock 15 GB of storage for just ${ config.offerPrice }.": [ + "仅需 ${ config.offerPrice } 即可解锁 15 GB 存储空间" + ], "Upgrade to ${ planName } to connect up to ${ MAX_SYNC_PAID_USER } accounts": [ "升级到 ${ planName } 最多可连接 ${ MAX_SYNC_PAID_USER } 个账户" ], "Upgrade to get ${ activatePmUser } for a shorter, easy-to-remember email address in addition to your current one.": [ "升级后,除现有邮箱地址外,还可以获得一个更短、更易记的 ${ activatePmUser } 邮箱地址。" ], + "Use a recovery method to reset your password": [ + "使用恢复方法重置密码" + ], "Use this guide to get your organization promptly benefiting from ${ BRAND_NAME }'s industry-leading encryption and privacy ecosystem.": [ "使用本指南,让您的组织迅速受益于 ${ BRAND_NAME } 行业领先的加密和隐私生态系统。" ], "We can't access ${ boldEmails } anymore.": [ "我们无法再访问 ${ boldEmails }。" ], + "We will pause imports at 80% storage to reserve space for new messages.": [ + "存储空间使用量达到 80% 时,我们会暂停导入,为接收新消息预留空间。" + ], "We'll bring in your old emails and connect your Gmail to ${ MAIL_APP_NAME } so new messages appear automatically": [ "我们将导入您的旧电子邮件并将 Gmail 连接到 ${ MAIL_APP_NAME },以便新邮件自动显示。" ], - "We've started importing your email from Gmail. We'll let you know when it's done.": [ - "我们已开始从 Gmail 导入您的电子邮件,完成后将通知您。" + "We've started importing your emails from Gmail. We'll let you know when it's done.": [ + "我们已开始从 Gmail 导入您的邮件,导入完成后将通知您。" ], "We’re sorry to see you go. If you have a moment, we’d really appreciate hearing why you’d like to cancel. Your feedback helps us make ${ BRAND_NAME } better for everyone.": [ "很遗憾看到您离开。如果您有时间,我们希望了解您取消的原因。您的反馈有助于我们改进 ${ BRAND_NAME },让产品变得更好。" ], + "With new email categories, only important messages land in your primary inbox. Categories work just like spam filters. ${ MAIL_APP_NAME } never reads your emails or shares your data.": [ + "借助新的邮件分类功能,只有重要邮件才会进入您的主收件箱。分类的运行方式与垃圾邮件过滤器类似。${ MAIL_APP_NAME } 绝不会读取您的邮件或分享您的数据。" + ], "You already have a Gmail address forwarding to ${ MAIL_APP_NAME }. Connect it below to send and receive emails directly from ${ MAIL_APP_NAME }.": [ "您已有一个 Gmail 地址转发到 ${ MAIL_APP_NAME }。请在下方连接该地址,以便直接从 ${ MAIL_APP_NAME } 收发电子邮件。" ], @@ -5050,6 +5530,12 @@ "You've connected one external account address to ${ MAIL_APP_NAME }.": [ "您已将 1 个外部账户地址连接到 ${ MAIL_APP_NAME }。" ], + "Your free ${ MAIL_APP_NAME } account comes with limited storage so we'll only import ${ newUserStorageText } of your most recent Gmail messages": [ + "您的免费 ${ MAIL_APP_NAME } 账户存储空间有限,因此我们仅导入 ${ newUserStorageText } 的最近 Gmail 邮件" + ], + "Your free ${ MAIL_APP_NAME } account comes with limited storage so we'll only import your most recent Gmail emails.": [ + "您的免费 ${ MAIL_APP_NAME } 账户存储空间有限,因此我们仅导入您最近的 Gmail 邮件" + ], "Your plan supports ${ MAX_SYNC_FREE_USER } Gmail address.": [ "您的套餐支持 ${ MAX_SYNC_FREE_USER } 个 Gmail 地址。" ], @@ -5062,6 +5548,11 @@ "使用 Easy Switch 导入助手" ] }, + "Description for domain modal": { + "Duplicate DMARC record found, go to the DNS console of your domain provider to fix it.": [ + "发现重复的 DMARC 记录,请前往域名提供商的 DNS 控制台进行修复!" + ] + }, "Description of the purpose of the import CSV modal": { "Also, we have automatically matched CSV fields with vCard fields. You can review and change this matching manually.": [ "另外,我们已将 CSV 自动转换成 vCard 信息,您可以查看并修改对应关系。" @@ -5485,6 +5976,9 @@ "120m": [ "120 分钟" ], + "15 minutes": [ + "15 分钟" + ], "30 minutes": [ "30 分钟" ], @@ -5599,7 +6093,7 @@ }, "Email": { "Email verified": [ - "电子邮件已验证" + "邮箱已验证" ], "Thank you for verifying your email address.": [ "感谢您验证您的邮箱地址。" @@ -6103,7 +6597,7 @@ "${ user } will not be able to access your account until the next emergency access.": [ "在下次紧急访问之前,${ user } 将无法访问您的账户。" ], - "**${ contact }** is now your recovery contact. They can help you recover your data after a password reset.": [ + "**${ contact }** is now your recovery contact. They can help you unlock your data after you reset your password.": [ "**${ contact }** 现已成为您的恢复联系人,他们可以在您重置密码后帮助您恢复数据。" ], "**If they confirm**, click **Approve recovery**. This will unlock their encrypted data.": [ @@ -6133,12 +6627,21 @@ "Add": [ "添加" ], + "Add 1 more": [ + "再添加 1 个" + ], "Add emergency contact": [ "添加紧急联系人" ], + "Add option": [ + "添加选项" + ], "Add recovery contact": [ "添加恢复联系人" ], + "Add recovery method": [ + "添加恢复方法" + ], "Added on ${ formattedDate }": [ "添加于 ${ formattedDate }" ], @@ -6149,7 +6652,7 @@ "已批准请求" ], "Ask a recovery contact for help. They’ll get an email to verify your request and unlock your data.": [ - "请向恢复联系人寻求帮助,他们将收到一封电子邮件来验证您的请求并解锁您的数据。" + "向恢复联系人寻求帮助。他们将收到一封邮件,用于验证您的请求并解锁您的数据。" ], "Asking for help": [ "正在请求帮助" @@ -6181,6 +6684,9 @@ "Contacts": [ "联系人" ], + "Data recovery contacts": [ + "数据恢复联系人" + ], "Data successfully recovered. You can now decrypt your existing data and encrypted files.": [ "数据已成功恢复,您现在可以解密现有数据及加密文件。" ], @@ -6226,6 +6732,12 @@ "Enable auto-renew": [ "启用自动续订" ], + "Enter your extra password": [ + "请输入您的额外密码" + ], + "Explore plans": [ + "查看套餐" + ], "For ${ email }": [ "对于 ${ email }" ], @@ -6256,11 +6768,8 @@ "Less than a minute left": [ "剩余不足 1 分钟" ], - "Let ${ user } know it’s really you trying to regain access.": [ - "让 ${ user } 知道确实是您正在尝试恢复访问权限" - ], - "None": [ - "无" + "Maximum of ${ limit } contact reached. To change, remove a contact and add a new one.": [ + "已达到 ${ limit } 位联系人的上限。如需更改,请移除一位联系人后再添加新联系人。" ], "Only ": [ "仅 " @@ -6352,14 +6861,11 @@ "Select recovery contact ${ name }": [ "选择恢复联系人 ${ name }" ], - "Send email request": [ - "发送邮件请求" - ], "Send recovery request": [ "发送恢复请求" ], - "Set account recovery": [ - "设置账户恢复" + "Start recovery": [ + "开始恢复" ], "Stop being recovery contact": [ "停止作为恢复联系人" @@ -6379,9 +6885,15 @@ "They added me as trusted contact. I can access their account in case of an emergency.": [ "他们添加我为可信联系人,以便我可以在紧急情况下访问他们的账户。" ], + "They added you as trusted contact. You can access their account in case of an emergency.": [ + "他们已将您添加为受信任的联系人。在紧急情况下,您可以访问他们的账户。" + ], "They may ask to access my account in case of an emergency.": [ "他们可能会在紧急情况下请求访问我的账户" ], + "They may ask to access your account in case of an emergency.": [ + "他们可能会在紧急情况下请求访问您的账户。" + ], "They will receive access automatically in **${ days } day**, on **${ formattedAccessibleAt }**, you can reject their request or give them access immediately at any time.": [ "他们将在**${ days }天后**自动获得访问权限,具体日期为**${ formattedAccessibleAt }**。在此之前,您可随时拒绝其请求或立即授予访问权限。" ], @@ -6397,6 +6909,9 @@ "Time required before automatically granting them access": [ "自动授予访问权限前所需的等待时间" ], + "To add recovery contacts, you must have a recovery email address or phone number.": [ + "若要添加恢复联系人,您必须设置密保邮箱或手机。" + ], "To disable this recovery method, remove all your recovery contacts.": [ "要禁用此恢复方式,请移除您所有的恢复联系人!" ], @@ -6406,6 +6921,9 @@ "Unable to recover data": [ "无法恢复数据" ], + "Unlock ${ PASS_APP_NAME }": [ + "解锁 ${ PASS_APP_NAME }" + ], "Upgrade": [ "升级" ], @@ -6427,6 +6945,9 @@ "We received a request to unlock the encrypted data of your contact **${ user }**.": [ "我们收到为您的联系人 **${ user }** 解锁加密数据的请求。" ], + "We sent an email request to ${ user }. Let them know it's really you trying to regain access.": [ + "我们已向 ${ user } 发送了邮件请求,请让他们确认是您本人正在尝试重新获得访问权限。" + ], "We were not able to verify the recovery data. Proceed anyway?": [ "我们无法验证恢复数据,是否仍要继续?" ], @@ -6606,7 +7127,7 @@ "域名不可用,请稍后再试" ], "Editing billing address is not available at the moment. Please try again later.": [ - "目前无法编辑帐单地址。请稍后重试。" + "当前无法编辑账单地址,请稍后重试。" ], "Email address disabled": [ "邮箱地址已停用" @@ -6675,7 +7196,7 @@ "更新账单地址失败" ], "Failed to update detailed monitoring.": [ - "更新详细监控失败。" + "更新详细监测失败。" ], "File too large. Your logo must be 30 KB or smaller.": [ "文件过大。您的 Logo 必须是 30 KB 以内。" @@ -6752,6 +7273,9 @@ "Invalid invitation link": [ "无效的邀请链接" ], + "Invalid joining link. Please contact your administrator.": [ + "无效的加入链接。请联系您的管理员。" + ], "Invalid name": [ "名称无效" ], @@ -6921,14 +7445,11 @@ "请先设置密保手机" ], "Please set a recovery/notification email first": [ - "请先设置恢复/通知邮箱" + "请先设置密保/通知邮箱" ], "Please try again in a few moments.": [ "请稍后再试." ], - "Please upgrade to a business plan with more than 1 user to get multi-user support": [ - "请先升级为支持多用户的商务账户" - ], "Please upgrade to a business plan with more than 1 user to manage multiple users.": [ "请升级为支持多用户的商务账户后再执行用户管理操作。" ], @@ -7070,6 +7591,9 @@ "There are too many folders in your external account. Please customize the import to delete some folders.": [ "待导入账户的文件夹过多,请自定义导入内容并删除部分文件夹。" ], + "There was an error, please try again.": [ + "出现错误,请重试。" + ], "This field exceeds the maximum of ${ maximumLength } characters.": [ "此项超过了 ${ maximumLength } 个字符的长度限制。" ], @@ -7149,7 +7673,7 @@ "错误的账单地址" ], "Wrong recovery phrase. Try again or use another recovery method.": [ - "密语错误,请重试或使用另一种方式恢复。" + "恢复短语错误,请重试或使用其他恢复方法。" ], "Wrong verification code. Please make sure you copied the verification code correctly and try again. It can take up to 24 hours for changes to take effect.": [ "验证代码错误,请确认正确复制代码后重试。更改该记录可能需要 24 小时才能生效。" @@ -7349,7 +7873,10 @@ "应用当前不可用" ], "Ask your administrator to enable Account monitor.": [ - "请联系您的管理员以启用账户监视器。" + "请联系您的管理员以启用账户监测。" + ], + "Enable account monitor to start loading event.": [ + "启用账户监测以开始加载事件。" ], "Error: ${ errorMessage }": [ "错误:${ errorMessage }" @@ -7392,7 +7919,7 @@ "联系人 ${ BRAND_NAME }" ], "Please ${ signIn } to resend a recovery email verification request.": [ - "请 ${ signIn } 后重新发送验证邮件。" + "请 ${ signIn } 重新发送密保邮箱验证请求。" ], "sign in": [ "登录" @@ -7608,7 +8135,7 @@ "带有自定义域的账户无法加入家庭套餐。" ], "After leaving, you will be moved to a ${ BRAND_NAME } Free plan.": [ - "离开后,您将被移动到一个 ${ BRAND_NAME } 免费计划。" + "离开后,您将被移动到一个 ${ BRAND_NAME } 免费套餐。" ], "customer support": [ "客户支持" @@ -7626,16 +8153,16 @@ "邀请人:${ inviteEmail }" ], "Leave ${ PASS_SHORT_APP_NAME } Family plan": [ - "离开 ${ PASS_SHORT_APP_NAME } 家庭计划" + "退出 ${ PASS_SHORT_APP_NAME } 家庭套餐" ], "Leave Duo plan": [ - "离开 Duo 计划" + "离开 Duo 套餐" ], "Leave Family plan": [ - "离开家庭计划" + "退出家庭套餐" ], "Leave Visionary plan": [ - "离开 Visionary 计划" + "退出 Visionary 套餐" ], "Lifetime accounts cannot join a family plan.": [ "终身账户无法加入家庭套餐。" @@ -7710,7 +8237,7 @@ "您将无法访问包含在 ${ plan } 的所有高级功能。" ], "You're invited by **${ invite.InviterEmail }** to link your account to this group plan.": [ - "**${ invite.InviterEmail }** 邀请您将您的账户关联至此群组计划" + "您收到来自 **${ invite.InviterEmail }** 的邀请,将您的账户关联到此团体套餐。" ], "You're invited to join ${ invite.OrganizationName }": [ "您受邀加入 ${ invite.OrganizationName }" @@ -7730,10 +8257,10 @@ "*每个用户只能免费试用一次,之后适用常规定价。" ], "After leaving your plan, this user will be moved to a ${ BRAND_NAME } Free plan.": [ - "离开您的计划后,该用户将被移动到一个 ${ BRAND_NAME } 免费计划。" + "退出您的套餐后,该用户将被移至 ${ BRAND_NAME } 免费套餐。" ], "After leaving your plan, this user will be moved to a ${ BRAND_NAME } Unlimited plan with a 30-day free trial.*": [ - "离开您的计划后,此用户将被移动到一个无限制的 ${ BRAND_NAME } 计划,并且免费试用30天。*" + "退出您的套餐后,该用户将被移至 ${ BRAND_NAME } Unlimited 套餐,并享有 30 天免费试用。*" ], "Assign storage to the administrator account. You can distribute storage for additional users later on.": [ "为管理员账户分配存储空间,您可以稍后为其他用户分配存储。" @@ -7760,7 +8287,7 @@ "您可以增加或减少该用户的存储空间。" ], "You left this plan": [ - "您已离开该计划" + "您已退出此套餐" ] }, "familyOffer_2023:Info for members section": { @@ -7850,11 +8377,38 @@ ] }, "Feature": { + "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME } desktop app": [ + "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME } 桌面应用" + ], "${ MaxVPN } VPN connection": [ "${ MaxVPN } 台设备可同时接入 VPN" ], - "Access to all countries": [ - "解锁全部线路" + "${ PROTON_SENTINEL_NAME } account protection": [ + "${ PROTON_SENTINEL_NAME } 账户保护" + ], + "10+ premium features": [ + "10+ 高级功能" + ], + "15 GB storage": [ + "15 GB 存储空间" + ], + "3 email domains": [ + "3 个邮箱域名" + ], + "3 folders, labels and filters": [ + "3 个文件夹、标签和筛选器" + ], + "500 GB storage": [ + "500 GB 存储空间" + ], + "500 MB Mail storage": [ + "500 MB 邮件存储空间" + ], + "500 MB storage": [ + "500 MB 存储空间" + ], + "Access to all countries": [ + "解锁全部线路" ], "Add": [ "添加" @@ -7868,6 +8422,12 @@ "Continue": [ "继续" ], + "Custom email domain": [ + "自定义邮箱域名" + ], + "Email addresses": [ + "邮箱地址" + ], "Encrypted cloud storage for files, photos and documents": [ "用于文件、照片和文档的加密云存储空间" ], @@ -7877,20 +8437,41 @@ "More premium features": [ "更多高级功能" ], + "Premium features in Mail, Calendar, Drive, Pass and VPN": [ + "Mail、Calendar、Drive、Pass 和 VPN 中的高级功能" + ], + "Priority support": [ + "优先支持" + ], "Remove": [ "注销" ], + "Schedule and snooze emails": [ + "安排和稍后提醒邮件" + ], "Secure Core servers": [ "Secure Core 服务器" ], "Secure streaming support": [ "让流媒体更安全" ], + "Short domain @pm.me": [ + "短域名 @pm.me" + ], + "Storage": [ + "存储空间" + ], "Torrenting support (P2P)": [ "支持 BT 下载 (P2P)" ], + "Unlimited folders, labels and filters": [ + "无限文件夹、标签和筛选器" + ], "Unlimited hide-my-email aliases": [ "无限制地 hide-my-email" + ], + "Use your own email domain": [ + "个性化邮箱域名" ] }, "Features": { @@ -8238,8 +8819,11 @@ ] }, "Force upgrade safety review": { - "I understand that I will no longer be able to sign in to older versions of ${ BRAND_NAME } mobile apps.": [ - "我理解我将无法再登录旧版本的 ${ BRAND_NAME } 移动应用。" + "I understand that I will no longer be able to sign in to older versions of ${ BRAND_NAME } apps.": [ + "我理解我将无法再登录旧版本的 ${ BRAND_NAME } 应用。" + ], + "Learn more": [ + "了解详情" ] }, "Form heading": { @@ -8249,7 +8833,7 @@ }, "Form paragraph": { "The voucher will be sent here.": [ - "凭证将发送至此处。" + "凭证将发送到此地址" ] }, "Free trial dekstop": { @@ -8340,6 +8924,9 @@ ], "Group address:": [ "群组地址:" + ], + "Roles and permission:": [ + "角色与权限:" ] }, "Group member count": { @@ -8398,6 +8985,14 @@ "群组成员" ] }, + "group_modal": { + "General": [ + "常规" + ], + "Roles and permissions": [ + "角色与权限" + ] + }, "Header": { "Access": [ "访问权限" @@ -8575,7 +9170,7 @@ "激活您预留的邮箱地址" ], "Address reservation voucher": [ - "地址保留凭证" + "地址预留凭证" ], "Donate to the ${ BRAND_NAME } Foundation": [ "向 ${ BRAND_NAME } 基金会捐赠" @@ -8590,12 +9185,12 @@ "预留儿童邮箱地址" ], "We emailed you the voucher": [ - "我们已通过电子邮件向您发送了凭证" + "我们已将凭证通过邮件发送给您!" ] }, "Headline": { "Compare plans": [ - "比较计划" + "比较套餐" ], "Contact us": [ "联系我们" @@ -8616,7 +9211,7 @@ "您目前支付" ], "Your plan": [ - "您的计划" + "您的套餐" ] }, "Hint": { @@ -9029,6 +9624,15 @@ "${ boldWarning } You will lose access to all current encrypted data in your account if you continue.": [ "${ boldWarning } 如果继续,您将无法访问您账户中的所有当前加密数据。" ], + "${ BRAND_NAME } Business plans gives your team all the collaboration tools they need to be productive and organized in their work, while safeguarding your business.": [ + "${ BRAND_NAME } 企业套餐为您的团队提供所有所需的协作工具,使其在工作中高效且有条理,同时保护您的业务安全。" + ], + "${ BRAND_NAME } Free": [ + "${ BRAND_NAME } Free" + ], + "${ BRAND_NAME } is independently funded and operates without advertising. Below are examples of how this independence has been used in practice.": [ + "${ BRAND_NAME } 由独立资金支持,且运营不含广告。以下是这种独立性在实际中的运用示例。" + ], "${ BRAND_NAME } is privacy you can trust, ensured by strong encryption, open-source code, and Swiss privacy laws. We believe nobody should be able to exploit your data, period. Our technology and business are based upon this fundamentally stronger definition of privacy.": [ "${ BRAND_NAME } 是您可以信赖的隐私,由强大的加密、开源代码和瑞士隐私法确保。我们相信没有人能够利用您的数据。我们的技术和业务基于这种从根本上更严格的隐私定义。" ], @@ -9041,6 +9645,9 @@ "${ BRAND_NAME } will send a verification code to ${ phoneNumber }. Standard message rates may apply.": [ "${ BRAND_NAME } 将向 ${ phoneNumber } 发送验证码,这可能产生标准短信费用。" ], + "${ BRAND_NAME } will send a verification code to your recovery phone. Standard message rates may apply.": [ + "${ BRAND_NAME } 会向您的密保手机发送验证码,您可能需要支付标准短信费用。" + ], "${ BRAND_NAME }'s encryption technology means that nobody can access your password - not even us.": [ "${ BRAND_NAME } 的前沿加密技术意味着没有人能够窃取您的密码,包括我们自己。" ], @@ -9062,6 +9669,9 @@ "${ discountPercent }% discount": [ "${ discountPercent }% 折扣" ], + "${ DRIVE_APP_NAME } will no longer keep previous versions of your files.": [ + "${ DRIVE_APP_NAME } 将不再保留文件的先前版本。" + ], "${ emailAddress } is invalid": [ "${ emailAddress } 无效" ], @@ -9119,6 +9729,9 @@ "${ name } for Windows": [ "${ name } Windows 版" ], + "${ name } is not available": [ + "${ name } 不可用" + ], "${ none }: do not quarantine or reject unauthorized emails. Usually, people only use this policy to troubleshoot or test.": [ "${ none }:不隔离也不拒收未经授权的电子邮件,通常只用于调试。" ], @@ -9156,10 +9769,10 @@ "${ planName } 今天到期。" ], "${ PROTON_SENTINEL_NAME } for organizations is an advanced account protection program powered by sophisticated AI systems and specialists working around the clock to protect your organization from bad actors and security threats.": [ - "适用于组织的 ${ PROTON_SENTINEL_NAME } 是一项高级账户保护计划,由复杂的 AI 系统和全天候工作的专家提供支持,旨在保护您的组织免受恶意行为者和安全威胁的侵害。" + "${ PROTON_SENTINEL_NAME }(组织版)是一项高级账户保护计划,由先进的 AI 系统和全天候工作的专家团队提供支持,旨在保护您的组织免受恶意行为者和安全威胁。" ], "${ PROTON_SENTINEL_NAME } is an advanced account protection program powered by sophisticated AI systems and specialists working around the clock to protect you from bad actors and security threats.": [ - "${ PROTON_SENTINEL_NAME } 是一项高等级账户保护计划,由精密的人工智能系统和资深专家组成,为您全方位抵御恶意攻击和安全威胁。" + "${ PROTON_SENTINEL_NAME } 是一项由先进 AI 系统和安全专家全天候运作的高级账户保护计划,旨在保护您免受恶意行为者和安全威胁的侵害。" ], "${ PROTON_SENTINEL_NAME } protects your account with dedicated monitoring of suspicious activity.": [ "${ PROTON_SENTINEL_NAME } 通过对可疑活动进行专门监测来保护您的账户。" @@ -9224,6 +9837,9 @@ "${ vaultLink } updated": [ "${ vaultLink } 标签已更改" ], + "${ VPN_SHORT_APP_NAME } hides your traffic. ${ PASS_SHORT_APP_NAME } hides your identity\n— unlimited **hide-my-email aliases** and **dark-web alerts** if your data is ever leaked.": [ + "${ VPN_SHORT_APP_NAME } 隐藏您的流量,${ PASS_SHORT_APP_NAME } 隐藏您的身份\n— 无限制的 **Hide-my-email 别名** 和 **暗网警报**(当您的数据被泄露时)。" + ], "${ vpnPlus } required for Country level connection.": [ "指定国家/地区连接需要开通 ${ vpnPlus }。" ], @@ -9260,6 +9876,9 @@ "(formerly Twitter)": [ "(原 Twitter)" ], + "**${ appName }** is not available for your account.": [ + "您的账户无法使用 **${ appName }**。" + ], "**${ appName }** is not supported in your organization **${ organizationName }**.": [ "您的组织 **${ organizationName }** 不支持 **${ appName }**。" ], @@ -9302,9 +9921,15 @@ "**This will disable end-to-end encrypted email forwardings:** you can set them up again later.": [ "**此操作将禁用端到端加密的邮件转发:** 您之后可以重新设置。" ], + "**Your recovery email alone doesn't allow you to recover your encrypted data** after you reset your password.": [ + "**重置密码后,仅凭密保邮箱将无法恢复加密数据!**" + ], "**Your recovery methods will be invalidated:** you can generate new recovery data later.": [ "**您的恢复方法将失效:**您可以稍后生成新的恢复数据" ], + "**Your recovery phone alone doesn’t allow you to recover your encrypted data** after you reset your password.": [ + "**重置密码后,仅凭密保手机将无法恢复加密数据!**" + ], "+ ${ invisibleCount } More": [ "+ ${ invisibleCount } 更多" ], @@ -9339,10 +9964,10 @@ "恢复文件可让您在账户恢复后解锁并查看数据" ], "A recovery phrase lets you access your account and recover your encrypted messages if you forget your password": [ - "若不慎忘记密码,恢复密语可用于找回账户并解锁加密邮件" + "若不慎忘记密码,恢复短语可让您访问账户并恢复已加密的消息。" ], "A user is an account associated with a single username, mailbox, and person": [ - "\"一个用户\"指联系着一个用户名、邮箱和个体的账号。" + "一个用户即一个关联了单一用户名、邮箱和自然人的账户" ], "Access 6,500+ high-speed servers on up to 10 devices to keep your browsing data safe. Available on ${ ios }, ${ android }, ${ appleTV }, and ${ desktop }.": [ "在最多10个设备上访问6,500多个高速服务器以保持您浏览数据的安全。 可在 ${ ios }、 ${ android }、 ${ appleTV }和 ${ desktop } 上获得。" @@ -9366,17 +9991,29 @@ "启用" ], "Activity Monitor": [ - "活动监视器" + "活动监测" + ], + "Add ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }": [ + "添加 ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }" ], "Add ${ PLAN_NAMES[PLANS.MEET_BUSINESS] }": [ "添加 ${ PLAN_NAMES[PLANS.MEET_BUSINESS] }" ], + "Add 1 to 5 people who you trust and can contact easily. They will be able to reset your password for you by signing in to your account. They must already have a ${ BRAND_NAME } Account.": [ + "添加 1 到 5 名您信任且能轻松联系的人。他们将能够通过登录您的账户为您重置密码。他们必须拥有 ${ BRAND_NAME } 账户。" + ], "Add a @pm.me email address to your account. This simple, shorter domain stands for \"${ MAIL_APP_NAME } me\" or \"Private Message me.\"": [ "为您的账户添加一个 @pm.me 邮箱地址。这个简短易记的域名代表 “${ MAIL_APP_NAME } me” 或 “私信我”" ], + "Add a phone number in case we need to contact you": [ + "添加手机号码以备我们需要联系您时使用" + ], "add a recovery method": [ "添加恢复方法" ], + "Add an email address in case we need to contact you": [ + "请添加一个邮箱地址,以便我们必要时与您联系" + ], "Add another layer of security to your account. You’ll need to verify yourself with 2FA every time you sign in.": [ "登录时要求输入双重验证码,为您的账户安全再增设一道防线。" ], @@ -9404,8 +10041,8 @@ "Add your name and logo to create a more personalized experience for your organization.": [ "添加您的名称和徽标来为您的组织创建更多个性化的体验。" ], - "Adding ${ addedServerCount } gateway server": [ - "正在添加 ${ addedServerCount } 台网关服务器" + "Adding ${ total } gateway server": [ + "正在添加 ${ total } 台网关服务器" ], "Adding an external email address will disable end-to-end encryption for all email communication within that group. Do you want to proceed?": [ "添加外部邮箱地址将禁用该组内所有电子邮件通信的端到端加密。要继续吗?" @@ -9470,6 +10107,12 @@ "Allow users to connect to secure shared servers from the **Countries** section of the ${ VPN_APP_NAME } app.": [ "允许用户从 ${ VPN_APP_NAME } 应用程序的**国家**部分连接到安全的共享服务器。" ], + "Allowing QR code sign-in will let you sign in by scanning a QR code if you forget your password. All you need is to be signed in to a ${ BRAND_NAME } service on another device.": [ + "允许通过二维码登录后,当您忘记密码时,可以通过扫描二维码登录。您只需在另一台设备上登录 ${ BRAND_NAME } 服务即可。" + ], + "Allowing the password reset from the settings lets you to change your password if you’ve lost it, but are still signed in to ${ BRAND_NAME }.": [ + "允许在设置中重置密码,使您能够在忘记密码但仍登录 ${ BRAND_NAME } 时更改密码。" + ], "Already allocated": [ "已分配" ], @@ -9575,6 +10218,9 @@ "Are you sure you want to revoke certificate **${ name }**": [ "确定要撤销证书 **${ name }** 吗?" ], + "Are you sure you want to sign out of this account?": [ + "您确定要登出您的账户吗?" + ], "Are you sure you want to sort your folders alphabetically?": [ "您确定要按字母顺序排序您的文件夹吗?" ], @@ -9671,9 +10317,18 @@ "Before you can start sending and receiving emails from your new addresses you need to create encryption keys for them.": [ "使用新地址收发邮件前,您需要先为其创建密钥。" ], + "BEST FOR TV": [ + "最适合电视" + ], "Beta": [ "测试版" ], + "Billed at ${ monthlyDiscountedPrice } for the first 6 months, renews at ${ monthlyRenewalPrice }.": [ + "首 6 个月按 ${ monthlyDiscountedPrice } 计费,续费按 ${ monthlyRenewalPrice } 计费。" + ], + "Billed at ${ yearlyDiscountedPrice } for the first 12 months, renews at ${ yearlyRenewalPrice }.": [ + "首年 12 个月按 ${ yearlyDiscountedPrice } 计费,续费按 ${ yearlyRenewalPrice } 计费。" + ], "Billing cycle: ${ text }": [ "计费周期:${ text }" ], @@ -9683,6 +10338,9 @@ "Boost your organization’s brand identity and create a more consistent online experience for your users.": [ "提升组织品牌形象,为用户创造更加一致的在线体验。" ], + "By adding people you trust as recovery contacts, we'll be able to send them an email to help you if you're having trouble recovering your data after a password reset. You can also be a recovery contact for others.": [ + "通过添加您信任的人作为恢复联系人,当您在密码重置后难以恢复数据时,我们可以向他们发送邮件以帮助您。您也可以成为其他人的恢复联系人。" + ], "By creating a ${ PASS_APP_NAME } account with your SimpleLogin email, you can manage your aliases directly from ${ PASS_APP_NAME }.": [ "通过使用 SimpleLogin 电子邮件创建 ${ PASS_APP_NAME } 账户,您可以直接从 ${ PASS_APP_NAME } 管理别名。" ], @@ -9714,10 +10372,10 @@ "随时取消" ], "Can’t access your recovery email?": [ - "找回密码需要的邮箱用不了?" + "无法访问密保邮箱?" ], "Can’t access your recovery phone?": [ - "找回密码需要的手机号用不了?" + "无法访问密保手机?" ], "Center": [ "居中" @@ -9725,9 +10383,6 @@ "Change your password": [ "更改密码" ], - "Check the status of imports and forwarding.": [ - "检查导入和转发的状态。" - ], "Check your network and try again.": [ "请检查网络后重试!" ], @@ -9761,6 +10416,9 @@ "CNET editors choice award with a rating of 8.4 out of 10": [ "CNET 编辑选择奖,评分 8.4 分(满分 10 分)" ], + "Code has been re-sent.": [ + "代码已重新发送。" + ], "Coming soon": [ "即将推出" ], @@ -9776,6 +10434,9 @@ "Configure SAML authentication for your organization through an identity provider like Okta, Microsoft Azure, or Google Identity Platform. This will enable SAML for the whole organization.": [ "通过 Okta、Microsoft Azure 或 Google Identity Platform 等身份提供商为组织配置 SAML 身份验证。这将为整个组织启用 SAML。" ], + "Connect and manage your external mailboxes in ${ MAIL_APP_NAME }.": [ + "在 ${ MAIL_APP_NAME } 中关联和管理您的外部邮箱。" + ], "Connection data will be available in around 1 hour.": [ "连接数据将在 1 小时左右可用。" ], @@ -9794,6 +10455,9 @@ "Continue to connect this entity with your ${ BRAND_NAME } organization.": [ "继续将此实体与您的 ${ BRAND_NAME } 组织连接起来。" ], + "Continue with ${ BRAND_NAME } Free": [ + "使用 ${ BRAND_NAME } Free 继续" + ], "Continuing will connect your ${ BRAND_NAME } Account to ${ name }.": [ "继续操作将把您的 ${ BRAND_NAME } 账户与 ${ name } 连接。" ], @@ -9833,8 +10497,8 @@ "Create a new code on your TV and try again.": [ "请在电视上创建一个新代码并重试。" ], - "Create a secure cloud for ${ value } member": [ - "为 ${ value } 成员创建一个安全云端" + "Create a secure cloud for ${ memberCount } member": [ + "为 ${ memberCount } 位成员创建安全云空间" ], "Create an account": [ "创建账户" @@ -9851,6 +10515,9 @@ "Creating gateway server: ${ serverNumber } / ${ total }": [ "创建网关服务器:${ serverNumber } / ${ total }" ], + "Creating gateway with ${ total } server": [ + "正在创建包含 ${ total } 台服务器的网关" + ], "Creating your account": [ "创建账户" ], @@ -9899,6 +10566,9 @@ "Data recoverable with recovery phrase": [ "通过恢复短语恢复数据" ], + "Data recovery requires a password reset option (email or SMS)": [ + "数据恢复需要密码重置选项(邮件或短信)" + ], "dedicated servers": [ "专用服务器" ], @@ -9944,6 +10614,9 @@ "Disabling authenticator app 2FA will make your account less secure. Only proceed if absolutely necessary.": [ "禁用验证器 2FA 会降低您账户的安全性,请仅在绝对必要时继续操作。" ], + "Disabling the data backup on this device will prevent you from automatically unlocking your encrypted data after a password reset.": [ + "在此设备上禁用数据备份后,您将无法在重置密码后自动解锁加密数据。" + ], "Discount": [ "优惠" ], @@ -9993,7 +10666,7 @@ "搞定!我们向 ${ destination } 发送了一个验证码。" ], "Don’t know your recovery phrase?": [ - "找回密码需要的助记词没有了?" + "不知道您的恢复短语?" ], "Don’t see anything? Remember to turn off pop-up blockers.": [ "没有跳转?请先关闭弹出窗口屏蔽插件。" @@ -10101,7 +10774,10 @@ "正在启用自动删除…" ], "Enabling recovery by phrase again will generate a new recovery phrase.": [ - "再次启用通过密语恢复将生成一个新的恢复密语。" + "重新启用恢复短语将生成一个新的恢复短语!" + ], + "Enabling the data backup on this device will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset, simply by signing in on this device.": [ + "在此设备上启用数据备份后,重置密码后只需在此设备上登录,即可恢复对邮件、联系人、文件、密码以及您账户中任何其他加密数据的访问权限。" ], "Encryption setting updated": [ "加密设置已更新" @@ -10143,7 +10819,7 @@ "输入用户 ${ userName } 的新密码。" ], "Enter the 12-word recovery phrase associated with your account.": [ - "请输入与您的账户关联的 12 字恢复短语!" + "请输入与您账户关联的 12 字恢复短语!" ], "Enter the code from your authenticator app": [ "请输入身份验证应用中的验证码" @@ -10155,7 +10831,7 @@ "输入发送到${ email } 的验证码。如果您在收件箱中没有找到该邮件,请检查您的垃圾邮件文件夹。" ], "Enter the credentials of the email account you want to import from.": [ - "输入您要导入的邮箱账号和密码。" + "请输入您要导入的邮箱账户的凭据。" ], "Enter the email address used to reserve ${ reservedEmail }.": [ "请输入用于预留邮箱 ${ reservedEmail } 的邮箱地址" @@ -10188,16 +10864,16 @@ "输入您自己的密码(作为可信联系人)" ], "Enter your recovery email address and we will send you your username or email address.": [ - "输入您的密保邮箱,我们将发邮件告知您的用户名或邮箱地址。" + "请输入您的密保邮箱地址,我们将向您发送您的用户名或邮箱地址。" ], "Enter your recovery phone number and we will send you your username or email address.": [ - "请输入您的密保手机号,我们将把您的用户名或邮箱地址发送至该号码。" + "请输入您的密保手机号码,我们将向您发送您的用户名或邮箱地址。" ], "Enter your recovery phrase to change your password now.": [ - "输入找回密码需要的助记词。" + "请输入您的恢复短语以更改密码。" ], "Enter your recovery phrase to verify your identity and disable two-factor authentication.": [ - "请输入您的恢复短语以验证身份并禁用您的 2FA!" + "请输入您的恢复短语以验证身份并禁用 2FA!" ], "Event invitations and responses will be sent in this language.": [ "事件邀请和回复将以此语言发送" @@ -10262,6 +10938,9 @@ "for ${ price }": [ "仅需 ${ price }" ], + "For a 10-year version history, please contact our sales team.": [ + "如需 10 年版本历史,请联系我们的销售团队。" + ], "For anytime access to email and an optimized mobile experience, download our ${ androidAppLink } or ${ iosAppLink }.": [ "要随时访问电子邮件并获得优化的移动体验,请下载我们的 ${ androidAppLink } 或 ${ iosAppLink }。" ], @@ -10271,12 +10950,12 @@ "For easy access to your passwords and more.": [ "方便您访问密码等信息。" ], + "For just ${ bundlePlanPriceInline }": [ + "仅需 ${ bundlePlanPriceInline }" + ], "For users who are switching to ${ MAIL_APP_NAME } from another email service, select the ${ boldAddresses } tab and add all active email addresses before changing the MX record to ensure a smooth transition.": [ "如果您正在将另一款邮箱服务更换为 ${ MAIL_APP_NAME },更改 MX 记录前请先在${ boldAddresses }设置中添加所有已在使用的邮箱地址,确保邮件投递路径能够无缝切换。" ], - "Forwarding automatically sends new incoming emails to your Inbox.": [ - "自动转发功能会将新收到的邮件自动发送到您的收件箱。" - ], "Free forever": [ "永久免费" ], @@ -10299,13 +10978,16 @@ "网关已删除" ], "Gateway monitor": [ - "网关监视器" + "网关监测" ], "Gateways": [ "网关" ], + "Generating a new recovery phrase will deactivate your current recovery phrase.": [ + "生成新的恢复短语将停用您当前的恢复短语。" + ], "Generating a new recovery phrase will deactivate your old one.": [ - "新生成的恢复密语将取代旧的。" + "新生成的恢复短语将取代旧的!" ], "Get ${ AUTHENTICATOR_APP_NAME } for all your devices.": [ "使用 ${ AUTHENTICATOR_APP_NAME } 即可在您的任意设备上获取验证码。" @@ -10325,14 +11007,20 @@ "Get notified if your password or other personal data was leaked. ${ learnMoreLinkNoBreach }": [ "当您的密码等个人信息泄露时迅速得到通知。${ learnMoreLinkNoBreach }" ], + "Get started": [ + "开始使用" + ], "Get started with the referral link above.": [ "立即通过上方推荐链接开始使用。" ], "Get visibility into account access": [ "获取账户访问可见性" ], + "Get VPN Plus": [ + "开通 VPN Plus" + ], "Give the token a descriptive name, such as the service you plan to use it with, and select one of your active custom domain addresses. Only this address will be able to send emails with this token.": [ - "请为令牌起一个描述性的名称,例如您计划使用该令牌的服务名称,并选择您的一个活跃自定义域名地址。只有此地址才能使用此令牌发送电子邮件。" + "为令牌指定一个描述性名称(例如您计划使用该令牌的服务),然后选择您的一个有效自定义域名地址。只有该地址才能使用此令牌发送邮件。" ], "Give your public key to your friends, or publish it online, so that everyone can send you end-to-end encrypted email!": [ "将您的公钥分享给朋友,或在线发布,以便每个人都能向您发送端到端加密邮件!" @@ -10388,6 +11076,12 @@ "If another administrator changed this password, you will need to ask them for the new Organization Password.": [ "若其他管理员更改了此密码,您需要向其询问新的机构密码。" ], + "If disabled, ${ BRAND_NAME } will still use your recovery email to send security notifications.": [ + "如果禁用,${ BRAND_NAME } 仍会向您的密保邮箱发送安全通知。" + ], + "If disabled, ${ BRAND_NAME } will still use your recovery phone to send security notifications.": [ + "如果禁用,${ BRAND_NAME } 仍会向您的密保手机发送安全通知。" + ], "If disabled, only administrators will be able to export data.": [ "如果禁用,则仅管理员能够导出数据。" ], @@ -10410,7 +11104,7 @@ "如果可以,请在登录时使用之前登录过的设备或浏览器。" ], "If the email you entered was used to reserve a child's email address, we'll resend the activation voucher.": [ - "如果您输入的邮箱曾用于预留儿童邮箱地址,我们将重新发送激活凭证。" + "如果您输入的邮箱曾用于预留孩子的邮箱地址,我们将重新发送激活凭证。" ], "If the system time zone does not match the current time zone preference, you will be asked to update it (at most once per day).": [ "如果系统时区与当前时区偏好设置不匹配,系统将提示您更新(每天最多一次)。" @@ -10466,6 +11160,9 @@ "If you purchased a gift code or received one from our support team, you can enter it here.": [ "如果您购买了礼品码或从我们的支持团队收到了礼品码,可以在此处输入。" ], + "If you recently reset your password, you can ${ recoveryMethodLink } to unlock your data. If this is due to an old password reset, you can stop the message from showing again.": [ + "如果您最近重置了密码,可以通过 ${ recoveryMethodLink } 解锁您的数据。如果这是因为旧密码重置导致的,您可以停止再次显示此消息。" + ], "If you recently reset your password, you can use a data recovery method to unlock your data": [ "如果您近期重置了您的密码,您可以使用数据恢复手段解锁您的数据。" ], @@ -10526,6 +11223,9 @@ "Include device, location, and IP details": [ "包含设备、位置和 IP 详情" ], + "Included": [ + "已包含" + ], "Increase your account security by verifying your email address.": [ "验证您的邮箱地址,提升账户安全性。" ], @@ -10658,6 +11358,12 @@ "Item updated in vault": [ "密码库中有条目被被更新" ], + "It’s often the easiest way to recover your account if you’re signed in.": [ + "当您已登录时,这通常是恢复账户的最简便方式。" + ], + "It’s the only way to instantly recover everything, so make sure you keep it somewhere safe but accessible.": [ + "这是即时恢复所有数据的唯一方法,请务必将其保存在安全但可获取的地方。" + ], "JCB logo": [ "JCB 徽标" ], @@ -10665,7 +11371,7 @@ "只需确认您的选择,剩下的交给我们即可。" ], "Keep the voucher secure until needed, for example in ${ DRIVE_APP_NAME }.": [ - "请妥善保管凭证直到需要使用时,例如保存在 ${ DRIVE_APP_NAME } 中。" + "请妥善保管凭证,例如存放在 ${ DRIVE_APP_NAME } 中,直到需要使用时。" ], "Keep your info more secure and private with these guides and tips.": [ "使用这些指南和技巧,让您的信息更安全、更私密。" @@ -10746,7 +11452,7 @@ "正在加载 eduGAIN 数据..." ], "Loading gateways monitoring current status.": [ - "正在加载网关监控的当前状态。" + "正在加载网关监测的当前状态。" ], "Loading preview": [ "正在载入预览" @@ -10803,10 +11509,10 @@ "发送到您所有邮箱地址的信息将全部转至您的收件箱。" ], "Monitor accounts": [ - "监控账户" + "监测账户" ], "Monitor and audit authentication attempts for all ${ BRAND_NAME } services that use your ${ BRAND_NAME } credentials.": [ - "监控和审计使用您的 ${ BRAND_NAME } 凭据的所有 ${ BRAND_NAME } 服务的身份验证尝试。" + "监测和审计所有使用 ${ BRAND_NAME } 凭据的 ${ BRAND_NAME } 服务的身份验证尝试。" ], "Monitor login activity, detect unauthorized access and close security and compliance gaps. ": [ "监测登录活动、检测未授权访问并填补安全与合规漏洞。" @@ -10851,7 +11557,7 @@ "新闻或媒体文章" ], "Next billing date": [ - "下一个帐单日期" + "下一个账单日期" ], "No account keys exist": [ "账户密钥不存在" @@ -10865,15 +11571,15 @@ "No card required": [ "无需银行卡" ], + "No connected addresses.": [ + "未关联任何地址" + ], "No countries enabled": [ "未启用的国家/地区" ], "No folder selected": [ "未选择文件夹" ], - "No forwarding history.": [ - "暂无转发历史!" - ], "No gateways": [ "没有网关" ], @@ -10937,6 +11643,9 @@ "Only change these settings if you are using PGP with non-${ BRAND_NAME } recipients.": [ "只有在与非 ${ BRAND_NAME } 用户使用 PGP 通讯时才需要更改下列选项。" ], + "Only sign in on devices you trust": [ + "仅在您信任的设备上登录" + ], "Only you can see the label": [ "仅您自己可见此标签" ], @@ -10974,7 +11683,7 @@ "组织成员需要使用其密码或 PIN 码等解锁 ${ PASS_APP_NAME }" ], "Organization monitor": [ - "组织监控器" + "组织监测" ], "Organization size": [ "组织的规模" @@ -11007,13 +11716,13 @@ "已开通套餐" ], "Pass Monitor - custom email confirmed": [ - "Pass Monitor - 自定义电子邮件已确认" + "Pass Monitor - 自定义邮件已确认" ], "Pass Monitor - custom email created": [ - "Pass Monitor - 自定义电子邮件已创建" + "Pass Monitor - 自定义邮件已创建" ], "Pass Monitor - custom email deleted": [ - "Pass Monitor - 自定义电子邮件已删除" + "Pass Monitor - 自定义邮件已删除" ], "Pass usage logs": [ "Pass 使用日志" @@ -11079,7 +11788,7 @@ "请检查您的文件,或尝试${ csvTemplateButton }。" ], "Please enter the 12-word recovery phrase associated with your account.": [ - "请输入与您的账户关联的 12 字恢复密语。" + "请输入与您账户关联的 12 字恢复短语。" ], "Please fill in all required fields.": [ "请填写所有必填项。" @@ -11193,14 +11902,23 @@ "接收关于 ${ categoryLabel } 的通知" ], "Receive the reservation voucher by email. You or the child can use it to activate the address within the next 15 years. ${ learnMoreLink }": [ - "通过电子邮件接收保留凭证。您或您的孩子可以使用它在未来 15 年内激活该地址。${ learnMoreLink }" + "通过邮件接收预留凭证,您或孩子可以在未来 15 年内使用该凭证激活地址。${ learnMoreLink }" ], "Recently used servers:": [ "近期使用的服务器:" ], + "RECOMMENDED": [ + "推荐" + ], "Recommended on trusted devices. ${ keepMeSignedInLearnMoreLink }": [ "建议仅在可信设备上勾选。${ keepMeSignedInLearnMoreLink }" ], + "Recovery by email is not available while ${ PROTON_SENTINEL_NAME } is enabled.": [ + "启用 ${ PROTON_SENTINEL_NAME } 时,无法使用通过密保邮箱恢复选项。" + ], + "Recovery by phone is not available while ${ PROTON_SENTINEL_NAME } is enabled.": [ + "启用 ${ PROTON_SENTINEL_NAME } 时,无法使用通过密保手机恢复选项。" + ], "Recovery file downloaded": [ "恢复文件已下载" ], @@ -11214,16 +11932,16 @@ "恢复短语已复制到剪贴板" ], "Recovery phrase downloaded": [ - "恢复密语已下载" + "恢复短语已下载" ], "Recovery phrase has been disabled": [ - "恢复密语已被禁用" + "恢复短语已禁用" ], "Recovery phrase is not associated with any keys.": [ - "恢复密语与任何密钥不相关。" + "恢复短语未关联任何密钥!" ], "Recovery phrase is not associated with any outdated keys.": [ - "恢复密语与任何过时的密钥不相关。" + "恢复短语未关联任何过时的密钥!" ], "Reddit": [ "Reddit" @@ -11354,6 +12072,9 @@ "Set up your organization": [ "设置您的组织" ], + "Set up your organization and start protecting your data in a few easy steps.": [ + "只需几个简单步骤即可设置您的组织并开始保护您的数据。" + ], "Setting successfully saved": [ "设置已成功保存" ], @@ -11390,6 +12111,12 @@ "Show each sender's image in the message list. The sender's initials will be shown if a photo is not available.": [ "在邮件列表中显示发件人的头像,无头像则显示发件人名称首字母。" ], + "Show fewer benefits": [ + "显示更少权益" + ], + "Show more benefits": [ + "显示更多权益" + ], "Show original message": [ "显示原始邮件" ], @@ -11435,9 +12162,6 @@ "Something went wrong. Please try again or contact customer support.": [ "出错了。请重试或联系客户支持。" ], - "Something went wrong. Please try again.": [ - "发生错误,请稍后再试。" - ], "Specify the domain which is allowed to authenticate with SAML SSO.": [ "指定允许使用 SAML SSO 进行身份验证的域。" ], @@ -11525,6 +12249,9 @@ "TechRadar Pro recommended with a rating of 4.2 out of 5 stars": [ "TechRadar Pro 推荐,评分 4.2 星(满分 5 星)" ], + "Temporarily unavailable due to high demand. Please try again later.": [ + "由于需求过高暂时不可用,请稍后重试。" + ], "Temporarily unavailable. Please check back later.": [ "暂时不可用。请稍后再试。" ], @@ -11637,7 +12364,7 @@ "这些配置适用于 WireGuard 路由器和官方客户端。" ], "These credentials cannot be used to sign in to our official ${ VPN_APP_NAME } apps. ${ learnMore }": [ - "这些凭据无法用来登录我们的官方 ${ VPN_APP_NAME } 应用。${ learnMore }" + "这些凭据不能用于登录我们的官方 ${ VPN_APP_NAME } 应用。${ learnMore }" ], "This account has been suspended due to a potential policy violation.": [ "此账户因可能违反用户协议而被封禁。" @@ -11654,6 +12381,9 @@ "This could take some time. Please do not close this page or disconnect from the internet.": [ "这可能需要一些时间。请不要关闭此页面或断开与互联网的连接。" ], + "This data recovery method requires a password reset option (email or SMS)": [ + "该数据恢复方法需要密码重置选项(邮件或短信)" + ], "This feature delays sending your emails, giving you the opportunity to undo send during the selected time frame.": [ "此功能会延迟发送邮件,让您有机会在选定的时间范围内撤消发送。" ], @@ -11714,6 +12444,15 @@ "This verification can take up to one hour. After successful verification, do not remove the TXT record as it is needed to confirm that you continue to own the domain.": [ "验证时间可能长达一小时。验证成功后,不要删除 TXT 记录,因为需要它来确认您继续拥有该域名。" ], + "This will allow the TV to access your ${ BRAND_NAME } account.": [ + "这将允许电视访问您的 ${ BRAND_NAME } 账户。" + ], + "This will delete all previous versions of your files older than ${ rententionLabel }.": [ + "这将删除您所有早于 ${ rententionLabel } 的文件版本。" + ], + "This will delete all previous versions of your files.": [ + "这将删除您文件的所有先前版本!" + ], "This will deny access to **${ email }**. Are you sure you want to continue?": [ "这将拒绝访问 **${ email }**,您确定要继续吗?" ], @@ -11721,7 +12460,7 @@ "这将禁用双因素身份验证,包括验证器应用程序和安全密钥方法。" ], "This will disable your current recovery phrase. You won't be able to use it to access your account or decrypt your data.": [ - "这将禁用您当前的恢复密语,您将无法使用它来访问账户或解密数据。" + "这将禁用您当前的恢复短语,您将无法使用它来访问账户或解密数据。" ], "This will download a file containing your private key. Protect this file by encrypting it with a password.": [ "此操作将下载一个包含您私钥的文件,请通过使用密码加密来保护此文件。" @@ -11729,6 +12468,9 @@ "This will enable PayPal to be used to pay for your ${ BRAND_NAME } subscription. We will redirect you to PayPal in a new browser tab. If you use any pop-up blockers, please disable them to continue.": [ "完成此操作后您就可以在 ${ BRAND_NAME } 中使用 PayPal 支付了。我们将在新标签页中为您打开 PayPal,如果您使用了弹窗屏蔽插件,请关闭后再继续。" ], + "This will let you quickly and safely access your ${ BRAND_NAME } Account so you can change you password.": [ + "这将让您快速安全地访问您的 ${ BRAND_NAME } 账户,以便更改密码。" + ], "This will permanently delete the data and all email addresses associated with these users.": [ "此操作将永久删除这些用户的相关数据和所有的邮箱地址。" ], @@ -11801,15 +12543,21 @@ "To decrypt and view your locked data after a password reset, select a recovery method.": [ "密码重置后如需解密账户数据,请选择一种恢复方式。" ], + "To enable post-quantum protection, you’ll need to finish generating your new post-quantum encryption keys.": [ + "若要启用后量子保护,您需要完成新后量子加密密钥的生成。" + ], + "To ensure the highest possible security of your account, disable **Recovery by recovery email**.": [ + "为确保您账户的最高安全性,请禁用**通过密保邮箱恢复**!" + ], + "To ensure the highest possible security of your account, disable **Recovery by recovery phone**.": [ + "为确保您账户的最高安全性,请禁用**通过密保手机恢复**!" + ], "To ensure you don’t lose important data, ${ DRIVE_APP_NAME } saves older versions of your files as you and your collaborators make changes. Select how long ${ BRAND_NAME } should keep previous versions.": [ "为了确保您不会丢失重要数据,${ DRIVE_APP_NAME } 会在您和您的协作者进行更改时保存文件的旧版本。选择 ${ BRAND_NAME } 应保留先前版本的时间。" ], "To fight spam and abuse, please verify you are human.": [ "为了防止垃圾邮件和滥用行为,请进行人机验证。" ], - "To help keep your account safe, we want to make sure it's really you trying to sign in.": [ - "为保障您的账户安全,我们需要确认确实是您本人在尝试登录!" - ], "To help keep your account safe, we want to make sure it’s really you trying to sign in.": [ "为保障您的账户安全,我们需要确认确实是您本人在尝试登录!" ], @@ -11829,7 +12577,7 @@ "继续操作之前,操作请求需要验证。" ], "To regain access to your account and data, enter the 12-word recovery phrase associated with your account.": [ - "若要重新获得对您账户和数据的访问权限,请输入与您账户关联的 12 词恢复短语。" + "若要重新获得对您账户和数据的访问权限,请输入与您账户关联的 12 字恢复短语。" ], "To secure your internet connection, download and install the ${ VPN_APP_NAME } application for your device and connect to a server.": [ "增强互联网传输安全,下载安装 ${ VPN_APP_NAME } 应用程序,连接应用提供的服务器。" @@ -11883,7 +12631,7 @@ "双密码模式使用独立的密码进行登录和数据解密。这在某些情况下能提供轻微的安全优势,但我们为大多数用户推荐单密码模式。要切换至双密码模式,请先设置一个登录密码,再设置一个二级密码。" ], "Unable to check gateways monitoring current status.": [ - "无法检查网关监控的当前状态。" + "无法检查网关监测的当前状态。" ], "Unable to verify recovery file signature. Please contact support.": [ "无法验证恢复文件签名,请联系支持人员。" @@ -11903,6 +12651,9 @@ "Unless you sign out of your account or change your password, your session will remain active. Sessions expire after 60 days of inactivity.": [ "除非您手动登出账户或更改密码,账户将保持登录状态,直到 60 天无操作后自动登出。" ], + "Unlock streaming with VPN Plus.": [ + "开通 VPN Plus 解锁流媒体。" + ], "Unsaved changes": [ "更改未保存" ], @@ -11918,15 +12669,24 @@ "Unverified email address.": [ "邮箱地址未验证。" ], + "Upgrade anytime to bring over the rest": [ + "随时升级以迁移剩余内容" + ], "Upgrade now to get premium features, products and storage at a special price": [ "现在升级账户可获得更大存储空间、更多功能,还能享受优惠" ], + "Upgrade or clear space anytime to bring over the rest": [ + "随时升级或清理空间以迁移剩余内容" + ], "Upgrade to add a shorter @pm.me address to your account that is easier to share. It stands for “${ MAIL_APP_NAME } me” or “Private Message me”.": [ "升级账户即可增设一个简短的 @pm.me 邮箱地址,这个域名可以代表 ${ MAIL_APP_NAME } me 或者 Private Message me。" ], "Upgrade to keep your ${ planTitle } benefits.": [ "升级以保留您的 ${ planTitle } 权益。" ], + "Upgrade to unlock": [ + "升级以解锁" + ], "Upgrade to unlock the ${ monitorLink }.": [ "升级以解锁 ${ monitorLink }!" ], @@ -11970,7 +12730,7 @@ "使用最优服务器(由系统负荷与当前位置得出):${ formattedBestServerName }" ], "Use the following credentials when connecting to ${ VPN_APP_NAME } servers without application. Example use cases include: Tunnelblick on macOS, OpenVPN on GNU/Linux.": [ - "要是不使用官方客户端,比如使用 macOS 上的 Tunnelblick 或者 GNU/Linux 上的 OpenVPN,那就用下面的凭据连接 ${ VPN_APP_NAME }。" + "非官方应用连接 ${ VPN_APP_NAME } 服务器时,请使用以下凭据。使用场景示例包括:macOS 上的 Tunnelblick、GNU/Linux 上的 OpenVPN。" ], "Use the selected email address as the SMTP username in the external service, and the generated token as the SMTP password.": [ "在外部服务中使用所选邮箱地址作为 SMTP 用户名,使用生成的令牌作为 SMTP 密码。" @@ -12029,6 +12789,9 @@ "Version ${ version }": [ "版本 ${ version }" ], + "Version history": [ + "版本历史" + ], "Version number successfully copied to clipboard": [ "版本号已成功复制" ], @@ -12044,6 +12807,9 @@ "Visa Secure logo": [ "Visa Secure 图标" ], + "VPN Plus": [ + "VPN Plus" + ], "VPN with dedicated servers and IP addresses": [ "具有专用服务器和 IP 地址的 VPN" ], @@ -12054,11 +12820,17 @@ "警告:" ], "Warning: deleting your account is permanent.": [ - "警告:删除账号将是永久性的。" + "警告:删除账户为永久性操作。" ], "We advise you to use official ${ VPN_APP_NAME } applications when possible.": [ "我们建议尽可能使用官方 ${ VPN_APP_NAME } 客户端。" ], + "We can use your recovery email to send you a verification code to reset your password, and to contact you if we notice suspicious activity.": [ + "我们可以使用您的密保邮箱向您发送重置密码的验证码,并在发现可疑活动时与您联系。" + ], + "We can use your recovery phone to send you a verification code to reset your password, and to contact you if we notice suspicious activity.": [ + "我们可以使用您的密保手机向您发送重置密码的验证码,并在发现可疑活动时与您联系。" + ], "We couldn't complete the transaction. Please try again.": [ "我们无法完成交易。请重试。" ], @@ -12096,7 +12868,7 @@ "我们建议在强制使用 2FA 之前通知组织成员并要求他们为其账户设置 2FA。" ], "We recommend using your recovery phrase instead.": [ - "我们建议您改为使用恢复密语。" + "我们建议您改用恢复短语。" ], "We securely store recovery information on your trusted device to prevent you from losing your data": [ "我们会将账户恢复信息安全地存储在您的可信设备上,避免数据意外丢失" @@ -12104,6 +12876,9 @@ "We stored a backup file in this browser because you allowed data recovery on this ${ deviceLink }. If the backup file is valid, you will immediately regain complete or partial access to your encrypted data.": [ "我们在此浏览器中存储了一份备份文件,因为您在此 ${ deviceLink } 启用了数据恢复功能。如果备份文件有效,您将立即恢复对加密数据的完整或部分访问权限。" ], + "We strongly recommend that everyone enable recovery by recovery phrase.": [ + "我们强烈建议所有人启用通过恢复短语恢复。" + ], "We use 3-D Secure to protect your payments": [ "我们使用 3-D Secure 来保护您的付款" ], @@ -12141,10 +12916,10 @@ "验证码会发到 ${ boldValue }。" ], "We’ll send a reset code to the email address you provided for account recovery.": [ - "我们会将重置代码发送到您先前提供的密保邮箱。" + "我们将向您的密保邮箱发送用于账户恢复的重置代码。" ], "We’ll send a reset code to the phone number you provided for account recovery.": [ - "我们会将重置代码发送到您先前提供的密保手机。" + "我们将向您的密保手机发送用于账户恢复的重置代码。" ], "When disabled, this prevents image files from loading on your device without your knowledge.": [ "关闭后可防止在您不知情的情况下加载图像。" @@ -12153,7 +12928,7 @@ "禁用后,可在您不知情时阻止远程图片加载。" ], "When enabled, we will check if ${ MAIL_APP_NAME } is your default mail application and notify you if it is not.": [ - "启用后,我们将检查 ${ MAIL_APP_NAME } 是否是您的默认邮件应用,并在非默认时通知您。" + "启用后,我们将检查 ${ MAIL_APP_NAME } 是否是您的默认邮箱应用,并在非默认时通知您。" ], "When enabling SAML for ${ appName } in your identity provider, you might be prompted to use the callback (ACS) URL and issuer ID. Just copy-paste the data below into your identity provider fields.": [ "在身份提供商中为 ${ appName } 启用 SAML 时,系统可能会提示您使用回调 (ACS) URL 和颁发者 ID。只需将以下数据复制粘贴到您的身份提供商字段中即可。" @@ -12168,7 +12943,7 @@ "取消后,您的订阅将不会续订,但您仍可享受套餐优惠,直至订阅期结束。之后,您将降级到 ${ BRAND_NAME } 的免费套餐。" ], "When you cancel, your subscription won't start, but you can still enjoy plan benefits until the end of the trial period. After that, you will be downgraded to the ${ BRAND_NAME } Free plan.": [ - "取消后,您的订阅不会开始,但在试用期结束前您仍可享受当前计划的权益。之后,您的服务将降级为 ${ BRAND_NAME } 免费套餐。" + "取消后,您的订阅将不会开始,但在试用期结束前您仍可享受套餐权益。之后,您将降级至 ${ BRAND_NAME } 免费套餐。" ], "When you click on a link, this anti-phishing feature will ask you to confirm the URL of the web page.": [ "点击链接后向您确认要打开的网址,谨防欺诈网站。" @@ -12177,7 +12952,7 @@ "当您从网关移除服务器时,该服务器将进入为期 10 天的停用期。此服务器可以添加到新网关,但其所在国家/地区无法更改。" ], "When you're ready to activate the address, scan the QR code or use the link in the voucher.": [ - "当您准备好激活该地址时,请扫描二维码或使用凭证中的链接。" + "当您准备激活地址时,请扫描二维码或使用凭证中的链接。" ], "When your subscription renews, we will apply any available credits before we charge the payment method above.": [ "账户续费将先扣除余额,再通过上述支付方式扣费。" @@ -12258,7 +13033,7 @@ "您已登录账户 ${ memberAddress }。" ], "You are using more storage than what is included in a ${ downgradedPlanName } plan. Please delete or remove data in order to downgrade.": [ - "您使用的存储空间超过了 ${ downgradedPlanName } 计划中包含的存储空间。请删除一些数据以便降级。" + "您当前使用的存储空间已超出 ${ downgradedPlanName } 套餐所包含的容量。请删除数据以便降级。" ], "You can add your own custom domain to ${ MAIL_APP_NAME }": [ "您可以将您自己的自定义域添加到 ${ MAIL_APP_NAME }" @@ -12284,9 +13059,6 @@ "You can edit this once to ensure the correct email address for verification.": [ "您可以修改一次地址,以确保使用正确的邮箱验证。" ], - "You can enable the Photos section from the interface using the toggle below.": [ - "您可以使用下面的切换键在界面上启用照片部分。" - ], "You can enforce the password rules members of your organization will use when they create or reset the password to their ${ BRAND_NAME } Account.": [ "您可以为贵组织成员设置密码规则,此规则将在他们创建或重置其 ${ BRAND_NAME } 账户密码时生效。" ], @@ -12324,7 +13096,7 @@ "您可以通过 Outlook、Apple Mail、Thunderbird 等任何支持 IMAP/SMTP 的邮件客户端使用 ${ MAIL_APP_NAME }。" ], "You can use the following credentials to connect to a ${ VPN_APP_NAME } server using a third-party, open source VPN app, like Tunnelblick for macOS or OpenVPN for GNU/Linux.": [ - "可以使用以下凭据,通过诸如 macOS 下的 Tunnelblick 和 GNU/Linux 下的 OpenVPN 等第三方开源 VPN 客户端,连接到 ${ VPN_APP_NAME } 服务器。" + "您可以使用以下凭据,通过第三方的开源 VPN 应用(例如 macOS 的 Tunnelblick 或 GNU/Linux 的 OpenVPN)连接到 ${ VPN_APP_NAME } 服务器。" ], "You can't send more than ${ emailSendLimitNumber } email invite for the next 24 hours": [ "未来 24 小时内您最多只能发送 ${ emailSendLimitNumber } 封邀请邮件" @@ -12344,6 +13116,9 @@ "You don't have any referrals.": [ "您目前没有推荐记录。" ], + "You don’t need to open or read the file—just download it and store it somewhere safe.": [ + "您无需打开或阅读该文件,只需下载并存放在安全位置即可。" + ], "You get notified if your password or other data was leaked from a third-party service.": [ "如果你的密码或其他数据从第三方服务泄露,你会收到通知。" ], @@ -12479,6 +13254,9 @@ "Your ${ plan } subscription will be replaced with ${ PASS_SHORT_APP_NAME } Lifetime. The remaining balance of your subscription will be added to your account. ${ PASS_SHORT_APP_NAME } lifetime deal has no renewal price, it's a one-time payment for lifetime access to ${ PASS_SHORT_APP_NAME }.": [ "您的 ${ plan } 订阅将被替换为 ${ PASS_SHORT_APP_NAME } Lifetime。订阅的差价将计入您的账户。${ PASS_SHORT_APP_NAME } 终身优惠没有续订价格,只需一次性付款即可终身访问 ${ PASS_SHORT_APP_NAME }。" ], + "Your ${ planDisplayName } plan doesn’t just keep your business data and communications safe. It supports your compliance objectives, makes your business stand out, and keeps your team connected.": [ + "您的 ${ planDisplayName } 套餐不仅能保护您的业务数据和通信安全,还能支持您的合规目标、让您的业务脱颖而出,并保持团队紧密连接。" + ], "Your ${ VPN_APP_NAME } and ${ MAIL_APP_NAME } accounts are linked. To delete them both, please sign in at ${ loginLink } and delete your account there.": [ "您的 ${ VPN_APP_NAME } 和 ${ MAIL_APP_NAME } 账户已关联。要删除它们,请登录 ${ loginLink } 并在那里删除您的账户。" ], @@ -12525,7 +13303,7 @@ "您的信息在 ${ displayedDate } 找到" ], "Your login information will not be saved after the import is completed.": [ - "导入完成后我们不会留存您的账号和密码。" + "导入完成后,您的登录信息将不会被保存。" ], "Your next billing date is ${ renewalTime }. You can cancel at any time.": [ "下次账单日期为 ${ renewalTime },您可以随时取消。" @@ -12554,12 +13332,18 @@ "Your recent changes have been published. They will be visible to users in the next few hours.": [ "您最近的更改已发布,用户将在几小时后看到这些更新。" ], + "Your recovery file will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset.": [ + "重置密码后,您的恢复文件将能够恢复账户中的邮件、联系人、文件、密码以及任何其他加密数据的访问权限。" + ], "Your recovery phrase": [ - "您的恢复密语" + "您的恢复短语" ], "Your recovery phrase is a series of 12 randomly generated words in a specific order.": [ "您的恢复短语由 12 个随机生成的单词按特定顺序组成。" ], + "Your recovery phrase will allow you to sign in and recover your data if you get locked out of your ${ BRAND_NAME } Account. It is composed of 12 words and acts like a backup password.": [ + "您的恢复短语使您能够在无法访问 ${ BRAND_NAME } 账户时重新登录并恢复数据。它由 12 个单词组成,作用类似于备份密码。" + ], "Your scheduled plan starts on ${ renewalTime } and will auto-renew every ${ cycle } month.": [ "您订阅的套餐将于 ${ renewalTime } 开始生效,并且每隔 ${ cycle } 个月自动续订。" ], @@ -12579,7 +13363,7 @@ "您的试用将于 ${ timeRemaining } 结束。" ], "Your voucher for your reserved ${ BRAND_NAME } email address: ${ reservedEmail }": [ - "您预留的 ${ BRAND_NAME } 邮箱地址 ${ reservedEmail } 的兑换凭证" + "您的预留 ${ BRAND_NAME } 邮箱地址凭证:${ reservedEmail }" ], "YouTube": [ "YouTube" @@ -13144,10 +13928,10 @@ }, "Label": { " and ": [ - "、" + "和" ], " and ${ l }": [ - "、${ l }" + "和 ${ l }" ], "${ addressesAvailable } of ${ maxAddresses } email address available": [ "${ addressesAvailable } / ${ maxAddresses } 个可用邮箱地址" @@ -13155,6 +13939,15 @@ "${ Brand } ending with ${ Last4 }": [ "${ Brand } 卡号末四位:${ Last4 }" ], + "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME } Desktop app": [ + "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME } 桌面应用" + ], + "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME } desktop app": [ + "${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME } 桌面应用" + ], + "${ BRAND_NAME } for Business": [ + "${ BRAND_NAME } 企业版" + ], "${ BRAND_NAME } username": [ "${ BRAND_NAME } 用户名" ], @@ -13182,6 +13975,15 @@ "${ pricePerMonthWithCurrency } / month": [ "${ pricePerMonthWithCurrency } /月" ], + "${ PROTON_SENTINEL_NAME } account protection": [ + "${ PROTON_SENTINEL_NAME } 账户保护" + ], + "${ PROTON_SENTINEL_NAME } protection": [ + "${ PROTON_SENTINEL_NAME } 保护" + ], + "${ value.length }/${ maxLength } characters": [ + "${ value.length }/${ maxLength } 个字符" + ], "(Temporarily unavailable. Please check back later.)": [ "(暂时不可用。请稍后再试。)" ], @@ -13308,6 +14110,9 @@ "Allow notifications by email": [ "允许通过电子邮件发送通知" ], + "Allow QR code sign-in": [ + "允许扫码登录" + ], "Allow random passwords": [ "允许生成随机密码" ], @@ -13318,7 +14123,7 @@ "允许通过密保手机恢复" ], "Allow recovery by recovery phrase": [ - "允许通过恢复密语来恢复" + "允许通过恢复短语恢复" ], "Allow recovery using a trusted device": [ "允许通过可信设备恢复" @@ -13413,6 +14218,9 @@ "Automated confirmations and alerts": [ "自动确认和提醒" ], + "Automatic email forwarding": [ + "自动邮件转发" + ], "Automatically save contacts": [ "自动保存联系人" ], @@ -13452,9 +14260,15 @@ "Block malware, ads and trackers": [ "拦截恶意软件、广告和追踪器" ], + "Block trackers and marketers": [ + "屏蔽跟踪器和营销者" + ], "Bookings, billings, and orders": [ "预订、账单和订单" ], + "Brand your workspace": [ + "自定义您的工作区" + ], "Browser": [ "浏览器" ], @@ -13488,6 +14302,9 @@ "Cash": [ "现金" ], + "Catch-all email address": [ + "通配邮件地址" + ], "Categories": [ "分类" ], @@ -13560,6 +14377,9 @@ "Confirm login password": [ "确认登录密码" ], + "Confirm MX records added": [ + "确认已添加 MX 记录" + ], "Confirm new password": [ "确认新密码" ], @@ -13623,9 +14443,18 @@ "Current email": [ "当前邮箱" ], + "Custom domain": [ + "自定义域名" + ], + "Custom email domain": [ + "个自定义邮箱域名" + ], "Daily email notifications": [ "每日邮件提醒" ], + "Data harvesting": [ + "数据收集" + ], "Date": [ "日期" ], @@ -13695,6 +14524,9 @@ "Don't ask again": [ "不再询问" ], + "Don't keep versions": [ + "不保留版本" + ], "Don't show this again": [ "不再显示此内容" ], @@ -13710,15 +14542,27 @@ "e.g. example.com": [ "类似于 example.com" ], + "Early access": [ + "抢先体验" + ], "Email": [ "邮箱" ], "Email address": [ "邮箱地址" ], + "Email addresses": [ + "邮箱地址" + ], + "Email addresses per user": [ + "每位用户的邮箱地址数量" + ], "Email or username": [ "邮箱或账户名" ], + "Email with @yourcompany.com domain": [ + "使用 @yourcompany.com 域名的邮箱" + ], "Emails (all messages)": [ "所有邮件" ], @@ -13737,6 +14581,9 @@ "Enable ${ DARK_WEB_MONITORING_NAME } for ${ domain.DomainName }": [ "为 ${ domain.DomainName } 启用 ${ DARK_WEB_MONITORING_NAME }" ], + "Enable categories": [ + "启用分类" + ], "Enabled": [ "已启用" ], @@ -13752,6 +14599,9 @@ "End weekday": [ "结束日期" ], + "End-to-end encryption": [ + "端到端加密" + ], "Enter code": [ "输入代码" ], @@ -13809,6 +14659,9 @@ "Folder location": [ "文件夹位置" ], + "Folders, labels, and filters": [ + "文件夹、标签和筛选器" + ], "Font family": [ "字体" ], @@ -13827,6 +14680,9 @@ "Free": [ "Free" ], + "Free VPN included": [ + "包含免费 VPN" + ], "From: ${ fromEmail }": [ "发件人:${ fromEmail }" ], @@ -13875,6 +14731,9 @@ "Highest VPN speed": [ "最快 VPN 速度" ], + "Host name": [ + "主机名" + ], "I understand that I'll need to add this email address to the other account immediately, to avoid losing this address permanently.": [ "我知道我需要立即将此邮箱地址添加到另一个账户中,以免永久丢失该地址。" ], @@ -13992,6 +14851,9 @@ "Main reason for cancelling": [ "取消的主要原因" ], + "Make sure you have access to a recovery email or phone, and have a data recovery option.": [ + "请确保您可以访问密保邮箱或手机,并且有可用的数据恢复方式。" + ], "Manage categories": [ "管理分类" ], @@ -14043,6 +14905,9 @@ "Moderate NAT": [ "保守 NAT" ], + "Monthly": [ + "按月" + ], "More payment methods": [ "更多付款方式" ], @@ -14061,6 +14926,9 @@ "Must have at least ${ MIN_PASSWORD_LENGTH } characters": [ "必须至少有 ${ MIN_PASSWORD_LENGTH } 个字符" ], + "MX records": [ + "MX 记录" + ], "Name": [ "名称" ], @@ -14089,7 +14957,10 @@ "新的二级密码" ], "Newsletters": [ - "时事通讯" + "新闻通讯" + ], + "No": [ + "否" ], "No (users cannot use the app until a vault is shared with them)": [ "取消(用户在被共享保管库前无法使用应用)" @@ -14124,12 +14995,18 @@ "Online privacy for your whole family": [ "为您的家人提供在线隐私保护" ], + "Online productivity suite": [ + "在线生产力套件" + ], "Only a single personal vault can be created": [ "仅可创建一个个人保险库" ], "Only available on ${ PASS_SHORT_APP_NAME } paid plans": [ "仅在 ${ PASS_SHORT_APP_NAME } 付费套餐中可用" ], + "Open-source code": [ + "开源代码" + ], "OpenVPN password": [ "OpenVPN 密码" ], @@ -14190,6 +15067,9 @@ "Pending": [ "等待" ], + "Personal and work emails, plus important updates and notifications": [ + "个人和工作邮件,以及重要的更新和通知" + ], "Phone number": [ "电话号码" ], @@ -14223,12 +15103,21 @@ "Postal code": [ "邮编" ], + "Premium features included": [ + "包含的高级功能" + ], "Previous password": [ "先前的密码" ], "Primary": [ "基本的" ], + "Priority": [ + "优先级" + ], + "Priority support": [ + "优先支持" + ], "Promotions": [ "优惠促销" ], @@ -14238,6 +15127,9 @@ "Proration": [ "当前等级结余" ], + "Protected by Swiss privacy laws": [ + "受瑞士隐私法保护" + ], "Protection mode": [ "保护模式" ], @@ -14263,7 +15155,7 @@ "密保手机" ], "Recovery phrase": [ - "恢复密语" + "恢复短语" ], "Remove": [ "移除" @@ -14313,6 +15205,9 @@ "Secure password generator": [ "安全密码生成器" ], + "See your team's availability": [ + "查看您的团队忙闲状态" + ], "Select Linux package format": [ "选择 Linux 软件包格式" ], @@ -14346,6 +15241,9 @@ "Shared between ${ MAIL_SHORT_APP_NAME }, ${ CALENDAR_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME }, and ${ WALLET_SHORT_APP_NAME }.": [ "在 ${ MAIL_SHORT_APP_NAME }、${ CALENDAR_SHORT_APP_NAME }、${ PASS_SHORT_APP_NAME } 和 ${ WALLET_SHORT_APP_NAME } 之间共享" ], + "Short domain @pm.me": [ + "短域名 @pm.me" + ], "Show ${ n } administrator": [ "显示 ${ n } 位管理员" ], @@ -14433,6 +15331,9 @@ "Storage": [ "存储" ], + "Storage per user": [ + "每位用户的存储空间" + ], "Street address": [ "街道地址" ], @@ -14445,6 +15346,9 @@ "Subscription options": [ "计费方式" ], + "Support for multiple users": [ + "支持多用户" + ], "Swipe left action": [ "向左滑动" ], @@ -14463,6 +15367,9 @@ "Then": [ "则" ], + "Third-party ads": [ + "第三方广告" + ], "Thomas": [ "Thomas" ], @@ -14538,6 +15445,9 @@ "Use folder colors": [ "文件夹附带颜色" ], + "Use your own email domain": [ + "个性化邮箱域名" + ], "User": [ "用户" ], @@ -14565,6 +15475,9 @@ "Verify keys with Key Transparency": [ "通过密钥透明化系统验证密钥" ], + "Version history": [ + "版本历史" + ], "Video conferencing with Zoom": [ "使用 Zoom 进行视频会议" ], @@ -14577,6 +15490,9 @@ "Vulnerable password": [ "易受攻击的密码" ], + "We securely stored recovery information on this device.": [ + "我们已在此设备上安全存储了恢复信息。" + ], "Weak": [ "弱" ], @@ -14604,12 +15520,21 @@ "Without attachment": [ "不含附件" ], + "Yearly": [ + "年度" + ], + "Yearly free storage bonus": [ + "年度免费存储奖励" + ], "Yes": [ "确定" ], "Yes, I want to permanently delete this account and all its data.": [ "我确定要永久删除此账户及其所有数据。" ], + "You don't have permissions": [ + "您没有权限" + ], "Your activation code:": [ "您的激活代码:" ], @@ -14631,8 +15556,17 @@ "Your plan": [ "您的套餐" ], + "Your recovery email": [ + "您的密保邮箱" + ], + "Your recovery phone number": [ + "您的密保手机" + ], "Your voucher for your reserved ${ BRAND_NAME } email address:": [ - "您预留的 ${ BRAND_NAME } 邮箱地址的兑换凭证:" + "您的预留 ${ BRAND_NAME } 邮箱地址凭证:" + ], + "Zero-access architecture": [ + "零访问架构" ], "ZIP code": [ "邮政编码" @@ -14649,7 +15583,10 @@ "密保手机" ], "Recovery phrase": [ - "恢复密语" + "恢复短语" + ], + "Set recovery phone number": [ + "设置密保手机" ] }, "Label (begin date/advanced search)": { @@ -14690,6 +15627,26 @@ "请添加下列 TXT 记录。注意: DNS 记录更新可能需要若干小时。" ] }, + "Label for domain setup": { + "${ capitalizedGroup } record not found": [ + "未找到 ${ capitalizedGroup } 记录" + ], + "Host name": [ + "主机名" + ], + "Invalid ${ group.name } record found": [ + "发现无效的 ${ group.name } 记录" + ], + "Type": [ + "类型" + ], + "Use default value": [ + "使用默认值" + ], + "Valid ${ group.name } record found": [ + "找到有效的 ${ group.name } 记录" + ] + }, "Label for new member": { "Admin": [ "管理员" @@ -14814,7 +15771,7 @@ "活动日志" ], "activity monitor": [ - "活动监视器" + "活动监测" ], "Add a gift code": [ "使用礼品码" @@ -14855,6 +15812,9 @@ "data recovery option": [ "数据恢复选项" ], + "Detailed instructions": [ + "详细说明" + ], "Details": [ "详细信息" ], @@ -15029,6 +15989,9 @@ "Upgrade your plan": [ "升级套餐" ], + "use a data recovery method": [ + "使用数据恢复方法" + ], "Vault": [ "保险库" ], @@ -15058,7 +16021,7 @@ }, "Link label": { "Email": [ - "电子邮件" + "邮箱" ], "Facebook": [ "Facebook" @@ -15273,7 +16236,7 @@ "总计 ${ price }" ], "Limited time offer: **Get up to 35% off** yearly plans": [ - "限时优惠: 年度计划**折扣高达 35%**" + "限时优惠:年度套餐可享 **高达 35% 折扣**" ], "Set up your account with your Porkbun domain.": [ "使用您的 Porkbun 域名来设置账户。" @@ -15365,21 +16328,45 @@ "Built-in chat": [ "内置聊天" ], + "Cloud storage and file sharing": [ + "云存储与文件共享" + ], + "Data retention policies": [ + "数据保留策略" + ], + "Document and spreadsheet editor": [ + "文档和电子表格编辑器" + ], + "Email writing assistant": [ + "邮件写作助手" + ], "End-to-end encrypted screen sharing and ephemeral in-call chat": [ "端到端加密的屏幕共享和临时会议内聊天" ], "Hosts can record meetings locally on their computers": [ "主持人可以在本地计算机上录制会议" ], + "Includes Meet Professional": [ + "包含 Meet 专业版" + ], "Meeting recording": [ "会议录制" ], "One active meeting at a time": [ "同时只能进行一场活跃会议" ], + "Password manager with team vaults": [ + "具备团队保险库的密码管理器" + ], + "Private AI Chat (${ LUMO_SHORT_APP_NAME })": [ + "私人 AI 聊天 (${ LUMO_SHORT_APP_NAME })" + ], "Screen-sharing": [ "屏幕共享" ], + "Secure mail and calendar": [ + "安全邮箱与日历" + ], "Unlimited meetings per day": [ "每日不限会议次数" ], @@ -15391,6 +16378,9 @@ ], "Video meetings, ${ n } participant": [ "视频会议,${ n } 位参与者" + ], + "VPN with ad-blocker and malware protection": [ + "具备广告拦截与恶意软件防护功能的 VPN" ] }, "meet_2025: Info": { @@ -15566,10 +16556,10 @@ "查找您的 ${ BRAND_NAME } 账户用户名" ], "Forgot your ${ BRAND_NAME } Account password? Reset it here using a recovery code, email, or SMS and regain access to your ${ MAIL_APP_NAME }, ${ DRIVE_SHORT_APP_NAME }, ${ CALENDAR_SHORT_APP_NAME }, and more.": [ - "忘记了您的 ${ BRAND_NAME } 账户密码?在此使用恢复码、邮箱或短信重置,并重新获得对您的 ${ MAIL_APP_NAME }、${ DRIVE_SHORT_APP_NAME }、${ CALENDAR_SHORT_APP_NAME } 等的访问权限。" + "忘记了您的 ${ BRAND_NAME } 账户密码?在此使用恢复码、密保邮箱或短信重置密码,并重新访问您的 ${ MAIL_APP_NAME }、${ DRIVE_SHORT_APP_NAME }、${ CALENDAR_SHORT_APP_NAME } 等服务。" ], "Forgot your ${ BRAND_NAME } Account username? Find it using your recovery email or phone number and regain access to your ${ MAIL_APP_NAME }, ${ DRIVE_SHORT_APP_NAME }, ${ CALENDAR_SHORT_APP_NAME }, and more.": [ - "忘记了您的 ${ BRAND_NAME } 账户用户名?通过您的密保邮箱或密保手机找回,并重新获得对您的 ${ MAIL_APP_NAME }、${ DRIVE_SHORT_APP_NAME }、${ CALENDAR_SHORT_APP_NAME } 等的访问权限。" + "忘记了您的 ${ BRAND_NAME } 账户用户名?您可以使用密保邮箱或手机找回,并重新访问您的 ${ MAIL_APP_NAME }、${ DRIVE_SHORT_APP_NAME }、${ CALENDAR_SHORT_APP_NAME } 等服务。" ], "Recover access to the private ${ BRAND_NAME } email address reserved for your child.": [ "恢复访问为您孩子预留的私人 ${ BRAND_NAME } 邮箱地址。" @@ -15911,13 +16901,13 @@ "开通 ${ planName }" ], "Keep ${ plan }": [ - "保持计划 ${ plan }" + "保留 ${ plan }" ], "Keep account": [ "保留账户" ], "Switch plan": [ - "切换计划" + "切换套餐" ] }, "new_plans: Action": { @@ -16040,6 +17030,9 @@ "99.95% SLA": [ "保障 99.95% 正常运行时间" ], + "Access all countries": [ + "解锁所有国家/地区" + ], "Activity logs and policy": [ "活动日志与策略" ], @@ -16061,6 +17054,9 @@ "Advanced network security": [ "高级网络安全" ], + "Advanced workspace security": [ + "高级工作区安全设置" + ], "All ${ BRAND_NAME } products and features": [ "所有 ${ BRAND_NAME } 产品和功能" ], @@ -16131,7 +17127,7 @@ "定制工作室品牌" ], "Data breach monitoring": [ - "数据泄露监控" + "数据泄露监测" ], "Data retention policies": [ "数据保留策略" @@ -16161,7 +17157,7 @@ "支持 IMAP/SMTP 客户端" ], "Email groups": [ - "邮件组别" + "邮件群组" ], "Enables HIPAA compliance": [ "遵循 HIPAA" @@ -16217,6 +17213,9 @@ "Multiple admin roles": [ "多管理员机制" ], + "No streaming support": [ + "不支持流媒体" + ], "No-logs policy": [ "无日志原则" ], @@ -16236,7 +17235,7 @@ "密码管理器" ], "Password manager to secure credentials": [ - "密码管理器可确保凭证安全" + "用于保护凭据的密码管理器" ], "Password-protected Emails": [ "邮件密码保护" @@ -16382,6 +17381,9 @@ "Unlimited volume/bandwidth": [ "流量与带宽不限" ], + "Unlock streaming": [ + "解锁流媒体" + ], "Up to ${ n } user": [ "最多 ${ n } 位用户" ], @@ -16514,7 +17516,7 @@ "${ BRAND_NAME } 全系服务协同保障您的家庭隐私。" ], "Safely access internet from anywhere with essential network monitoring": [ - "通过必要的网络监控,随时随地安全上网" + "通过必要的网络监测,随时随地安全上网" ], "Secure email with advanced features for your everyday communications.": [ "包含多种高级功能的安全邮箱,充分满足您的日常通讯需求。" @@ -16532,10 +17534,10 @@ "无限的私密性和更多的存储空间,最多可容纳 2 人。" ], "You’re enjoying a promotional price on your current plan. If you delete your account, you will lose your promotional price and it won’t be available if you create a new account.": [ - "您正在享受当前套餐的促销价格。 删除账号后,您将失去优惠价格;创建新账号后,优惠价格将不可用。" + "您当前套餐享受优惠价格。如果删除账户,您将失去该优惠价格,且创建新账户时无法重新获得。" ], "You’re enjoying a promotional price on your current plan. If you downgrade your account, you will lose your promotional price and it won’t be available if you try to subscribe again.": [ - "您正在享受当前套餐的促销价格。 降级账号后,您将失去优惠价格,如果再次尝试订阅,优惠价格将不可用。" + "您当前套餐享受优惠价格。如果降级账户,您将失去该优惠价格,且再次订阅时无法重新获得。" ] }, "new_plans: Info": { @@ -16607,7 +17609,7 @@ "确认订单并支付" ], "Switch plans?": [ - "切换计划?" + "切换套餐?" ], "Unlock premium features by upgrading": [ "升级账户即可解锁更多高级功能" @@ -16692,7 +17694,7 @@ "为自有域名中所有尚未分配的地址揽收邮件,避免因发件方打错地址错过重要消息" ], "Force sign-out of user sessions when user credentials are believed to be compromised": [ - "将密码泄露的用户强制下线" + "当用户凭据被认为遭到泄露时,强制注销用户会话" ], "IMAP support is limited to the use of desktop apps (e.g., Outlook, Apple Mail, Thunderbird) via ${ MAIL_APP_NAME } Bridge. Cloud-based IMAP integrations are currently not supported.": [ "IMAP 仅支持桌面客户端(如 Outlook、Apple Mail、Thunderbird)配合 ${ MAIL_APP_NAME } Bridge 使用。目前不支持云服务接入 IMAP。" @@ -16701,7 +17703,7 @@ "增加或重新分配用户的存储空间" ], "Keep your plans private to you and your family with an encrypted calendar": [ - "使用加密日历为您和家人保密您们的计划" + "通过加密日历,让您的计划仅对您和您的家人可见" ], "Keeps you protected by blocking all network connections when you are unexpectedly disconnected from our VPN server.": [ "当您与我们的VPN服务器意外断开连接时,我们将通过阻止所有网络连接来保护您。" @@ -16844,10 +17846,13 @@ "开通 ${ plus }、${ bundle } 或 ${ BRAND_NAME } 企业版即可使用此功能。" ], "Included with multiple users ${ BRAND_NAME } for Business plans.": [ - "包含多用户 ${ BRAND_NAME } 商业计划。" + "包含多用户 ${ BRAND_NAME } 商业套餐" ] }, "new_plans: Upsell attribute": { + "${ n } country": [ + "${ n } 个国家/地区" + ], "Access advanced VPN features": [ "解锁高级 VPN 功能" ], @@ -16907,7 +17912,7 @@ "${ app } product updates": [ "${ app } 产品资讯" ], - "${ BRAND_NAME } for Business newsletter": [ + "${ BRAND_NAME } for Business communications": [ "${ BRAND_NAME } 商业通讯" ], "${ BRAND_NAME } important announcements": [ @@ -16961,8 +17966,8 @@ "During your first month of using a ${ BRAND_NAME } product": [ "在您使用 ${ BRAND_NAME } 产品的第一个月里" ], - "Email subscriptions": [ - "邮件订阅" + "Email communications": [ + "邮件通讯" ], "In-app notifications": [ "应用内通知" @@ -17036,7 +18041,7 @@ "记录数超过 10000 的下载限制" ], "OpenVPN credentials regenerated": [ - "重新生成了 OpenVPN 的账号密码" + "OpenVPN 凭据已重新生成" ], "Reminder has been sent": [ "提醒已发送" @@ -17548,6 +18553,9 @@ "Plain text": [ "纯文本" ], + "Push notifications": [ + "推送通知" + ], "Receive from all": [ "全部接收" ], @@ -17763,6 +18771,11 @@ "PKGBUILD(适用于其他发行版)" ] }, + "Paragraph": { + "${ BRAND_NAME } is independently funded and operates without advertising. Below are examples of how this independence has been used in practice.": [ + "${ BRAND_NAME } 由独立资金支持,且运营不含广告。以下是这种独立性在实际中的运用示例。" + ] + }, "Participant name": { "You": [ "你" @@ -17815,7 +18828,7 @@ "创建另一个账户" ], "Keep this plan": [ - "保持此计划" + "保留此套餐" ], "Open ${ PASS_APP_NAME } vaults": [ "打开 ${ PASS_APP_NAME } 保险库" @@ -18035,14 +19048,14 @@ "per month, billed every two years": [ "每月,每两年结算一次" ], - "Preparing your Recovery Kit": [ - "正在准备您的恢复套件" + "Preparing your recovery phrase": [ + "正在准备您的恢复短语" ], "Protected by Swiss privacy laws": [ "由瑞士隐私法律保护" ], - "Save your recovery kit to continue": [ - "保存您的恢复套件以继续" + "Save your recovery phrase to continue": [ + "保存您的恢复短语以继续" ], "Secure vault sharing": [ "安全保险库共享" @@ -18104,7 +19117,7 @@ }, "pass_signup_2023: Title": { "${ upsellPlanTitle } plan": [ - "${ upsellPlanTitle } 计划" + "${ upsellPlanTitle } 套餐" ], "Create a ${ appName } account": [ "创建 ${ appName } 账户" @@ -18181,7 +19194,7 @@ "**所有您现有的数据**(电子邮件、事件、联系人、文件、 ${ PASS_APP_NAME } 条目等)**将被锁定** 并只能使用您的 **旧密码** 解锁。" ], "**All your existing data** (emails, events, contacts, files, ${ PASS_APP_NAME } entries, etc.) **will be locked** and can only be unlocked with your **recovery phrase** or your **old password**.": [ - "**所有您现有的数据**(电子邮件、事件、联系人、文件、 ${ PASS_APP_NAME } 条目等)**将被锁定** 并只能使用您的 **恢复短语** 或您的 **旧密码** 解锁。" + "**您所有的现有数据**(邮件、事件、联系人、文件、${ PASS_APP_NAME } 条目等)**将被锁定**,并且只能使用**恢复短语**或**旧密码**解锁。" ], "Any **two-factor authentication (2FA)** method on your account will be disabled.": [ "您账户上的任何 **双因素身份验证 (2FA)** 方法将被禁用。" @@ -18755,6 +19768,9 @@ "Search for an email or IP address": [ "查找电子邮件和 IP 地址" ], + "Search for users or addresses": [ + "搜索用户或地址" + ], "Search parent folder": [ "搜索上层文件夹" ], @@ -18881,7 +19897,7 @@ "${ cycle } 个月" ], "${ months } month plan": [ - "${ months } 个月计划" + "${ months } 个月套餐" ], "Enjoying ${ planName }?": [ "喜欢 ${ planName } 吗?" @@ -18902,18 +19918,18 @@ ] }, "PQC account key generation": { - "Couldn’t generate keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\n${ settingsLink } and select 'Generate key' for your account and for each address.": [ - "无法生成密钥。要激活后量子保护,您需要手动生成新的加密密钥。\n\n请访问 ${ settingsLink } 并为您的账户及每个地址选择“生成密钥”。" + "Couldn’t generate keys. To activate post-quantum protection, you’ll need to finish generating your new post-quantum encryption keys.\n\n${ goToSettingsLink } and select 'Generate missing keys'.": [ + "无法生成密钥!若要激活后量子保护,您需要完成新后量子加密密钥的生成。\n\n${ goToSettingsLink },然后选择“生成缺失的密钥”。" ] }, "PQC adress key generation": { - "Couldn’t generate address keys. To activate post-quantum protection, you’ll need to generate your new encryption keys manually.\n\nGo to ${ settingsLink } and select 'Generate key' for each address.": [ - "无法生成地址密钥!要激活后量子保护,您需要手动生成新的加密密钥。\n\n请前往 ${ settingsLink } 并为每个地址选择“生成密钥”。" + "Couldn’t generate address keys. To activate post-quantum protection, you’ll need to finish generating your new post-quantum encryption keys for each address.\n\n${ goToSettingsLink } and select 'Generate missing keys'.": [ + "无法生成地址密钥!若要激活后量子保护,您需要为每个地址完成新后量子加密密钥的生成。\n\n${ goToSettingsLink },然后选择“生成缺失的密钥”。" ] }, "PQC compatibility warning": { - "**You must update all ${ BRAND_NAME } mobile apps**: your new keys won't work on older app versions.": [ - "**您必须更新所有 ${ BRAND_NAME } 移动应用**:您的新密钥将无法在旧版本应用上使用。" + "**You must update all ${ BRAND_NAME } apps**: your new keys won't work on older app versions.": [ + "**您必须更新所有 ${ BRAND_NAME } 应用**:您的新密钥将无法在旧版本应用上使用。" ] }, "PQC key generation": { @@ -19076,6 +20092,9 @@ "Verify now": [ "立即验证" ], + "Verify now this recovery email address: ${ emailData.value }": [ + "立即验证密保邮箱:${ emailData.value }" + ], "Verify recovery email?": [ "验证密保邮箱?" ], @@ -19083,7 +20102,7 @@ "邮箱验证" ], "Verifying your email address increases your account security and allows additional options for recovery.": [ - "完成邮箱地址验证可以提升账户安全性,多一种账户恢复方式。" + "验证邮箱地址可提高账户安全性,并提供更多的恢复选项。" ], "Your recovery email has been successfully removed.": [ "密保邮箱已成功移除。" @@ -19091,7 +20110,7 @@ }, "Recovery method": { "Email": [ - "邮件" + "邮箱" ], "Phone number": [ "电话号码" @@ -19119,8 +20138,138 @@ "Verify recovery phone?": [ "验证密保手机?" ], + "Verify this recovery phone number now: ${ phoneData.value }": [ + "立即验证密保手机:${ phoneData.value }" + ], "Verifying your phone number increases your account security and allows additional options for recovery.": [ - "完成邮箱地址验证可以提升账户安全性,多一种账户恢复选项。" + "验证手机号码可提高账户安全性,并提供更多的恢复选项。" + ] + }, + "Recovery score": { + "${ score } / ${ maxScore } completed": [ + "已完成 ${ score } / ${ maxScore }" + ], + "Account protection": [ + "账户保护" + ], + "Add more options for stronger protection": [ + "添加更多选项以获得更强的保护" + ], + "Add more options to avoid getting locked out of your account.": [ + "添加更多选项以避免无法访问您的账户。" + ], + "Awesome. Keep your options up-to-date for stronger protection.": [ + "太棒了。请保持您的选项为最新,以获得更强的保护。" + ], + "Good start. Add more options for a stronger protection.": [ + "不错的开始。添加更多选项以获得更强的保护。" + ], + "Great. Add more options for a stronger protection.": [ + "很好。添加更多选项以获得更强的保护。" + ], + "How you increased your account protection": [ + "您如何加强了账户保护" + ], + "Inactive recovery options": [ + "未启用的恢复选项" + ], + "Maximum": [ + "上限" + ], + "Partial": [ + "部分" + ], + "Recovery score: ${ score }": [ + "恢复评分:${ score }" + ], + "Require verified password reset option (email or SMS)": [ + "需要已验证的密码重置选项 (邮箱或短信)" + ], + "Score: ${ score } / ${ maxScore }": [ + "得分:${ score } / ${ maxScore }" + ], + "Strong": [ + "强" + ], + "Unprotected": [ + "未受保护" + ], + "Weak": [ + "弱" + ] + }, + "Recovery score item": { + "Add emergency contacts": [ + "添加紧急联系人" + ], + "Add recovery contacts": [ + "添加恢复联系人" + ], + "Add recovery email": [ + "添加密保邮箱" + ], + "Add recovery phone": [ + "添加密保手机" + ], + "Allow data recovery on this device": [ + "允许在此设备上恢复数据" + ], + "Allow password reset from settings": [ + "允许通过设置重置密码" + ], + "Allow scanning QR code to sign in": [ + "允许扫描二维码登录" + ], + "Data recovery allowed on this device": [ + "允许在此设备上进行数据恢复" + ], + "Download recovery file": [ + "下载恢复文件" + ], + "Email recovery enabled": [ + "已启用通过密保邮箱恢复" + ], + "Emergency contacts added": [ + "已添加紧急联系人" + ], + "Enable email recovery": [ + "启用通过密保邮箱恢复" + ], + "Enable recovery by phone": [ + "启用通过密保手机恢复" + ], + "Password reset allowed from settings": [ + "允许在设置中重置密码" + ], + "Password verified": [ + "密码已验证" + ], + "Phone recovery enabled": [ + "已启用通过密保手机恢复" + ], + "Recovery contacts added": [ + "已添加恢复联系人" + ], + "Recovery file downloaded": [ + "已下载恢复文件" + ], + "Recovery phrase saved": [ + "恢复短语已保存" + ], + "Save recovery phrase": [ + "保存恢复短语" + ], + "Sign-in with QR code allowed": [ + "允许通过二维码登录" + ], + "Verify password": [ + "验证密码" + ], + "Verify recovery email": [ + "验证密保邮箱" + ], + "Verify recovery phone": [ + "验证密保手机" ] }, "RecoveryPhrase: Action": { @@ -19135,6 +20284,9 @@ ] }, "RecoveryPhrase: Info": { + "**Make sure you keep your recovery phrase accessible after creating it.** For security reasons, we do not store the phrase after saving your changes, and you won’t be able to see it again in the ${ BRAND_NAME } app.": [ + "**请确保在创建恢复短语后妥善保管。**出于安全考虑,我们不会在保存更改后存储该短语,并且您将无法在 ${ BRAND_NAME } 应用中再次查看它!" + ], "copy recovery phrase": [ "复制恢复短语" ], @@ -19145,7 +20297,7 @@ "下载 PDF" ], "I understand that if I lose my recovery phrase, I may permanently lose access to my account.": [ - "我明白如果丢失恢复短语,我可能会永久失去对账户的访问权限。" + "我明白,如果丢失了恢复短语,我可能会永久无法访问我的账户。" ], "It’s the only way to recover everything—store it safely.": [ "这是恢复所有内容的唯一方式 —— 请将其安全存储。" @@ -19156,14 +20308,11 @@ "Or ${ downloadRecoveryKitSwitchButton } instead.": [ "或者选择 ${ downloadRecoveryKitSwitchButton }。" ], - "Your **Recovery Kit** lets you restore your ${ BRAND_NAME } Account if you’re locked out.": [ - "您的 **恢复工具包** 可在您被锁定账户时,用于恢复您的 ${ BRAND_NAME } 账户。" + "Your **recovery phrase** lets you restore your ${ BRAND_NAME } Account if you’re locked out.": [ + "您的**恢复短语**可在您被锁定账户时,用于恢复您的 ${ BRAND_NAME } 账户。" ] }, "RecoveryPhrase: Title": { - "Save your Recovery Kit": [ - "保存您的恢复工具包" - ], "Save your recovery phrase": [ "保存您的恢复短语" ] @@ -19497,10 +20646,10 @@ }, "Safety review": { " **Disable recovery by phone** to prevent attackers from taking over your account.": [ - " **禁止通过短信重置密码** 以防止攻击者窃取您的账户。" + " **禁用通过密保手机恢复**,防止攻击者劫持您的账户。" ], " **Enable recovery by phone** to regain access to your account if you forget your password.": [ - " 如果忘记密码,可通过**密保手机**恢复密码,并重新访问您的账户。" + "如果忘记密码,可通过**密保手机**恢复密码,并重新访问您的账户。" ], "${ BRAND_NAME } will use this address to keep you updated on your account security.": [ "${ BRAND_NAME } 将使用此邮箱地址与您保持联络关于账户安全的问题。" @@ -19550,8 +20699,8 @@ "Back to Safety Review": [ "返回安全审查" ], - "Because you reset your password, your current Recovery Kit can only be used to recover the data created before your password reset.": [ - "由于您重置了密码,您当前的恢复套件只能用于恢复重置密码前创建的数据。" + "Because you reset your password, your current recovery phrase can only be used to recover the data created before your password reset.": [ + "由于您重置了密码,因此您当前的恢复短语只能用于恢复密码重置之前创建的数据。" ], "Can be used to regain access to your account and data": [ "可用于重新访问您的账户和数据" @@ -19572,16 +20721,16 @@ "禁用通过电子邮件重置账户" ], "Disable recovery by email": [ - "禁用密保邮箱恢复" + "禁用通过密保邮箱恢复" ], "Disable recovery by phone": [ - "禁用密保手机恢复" + "禁用通过密保手机恢复" ], "Download ${ size }": [ "下载 ${ size }" ], - "Download your Recovery Kit": [ - "下载您的恢复密钥" + "Download your recovery phrase": [ + "下载您的恢复短语" ], "Email address": [ "邮箱地址" @@ -19590,13 +20739,13 @@ "启用基于设备的恢复" ], "Enable recovery by email": [ - "启用密保邮箱恢复" + "启用通过密保邮箱恢复" ], "Enable recovery by phone": [ - "启用密保手机恢复" + "启用通过密保手机恢复" ], - "I understand that I will not be able to recover currently locked data with this Recovery Kit": [ - "我明白使用此恢复套件无法恢复当前锁定的数据" + "I understand that I will not be able to recover currently locked data with this recovery phrase": [ + "我明白,使用此恢复短语将无法恢复当前已锁定的数据。" ], "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in on this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "如果您忘记了您的 ${ BRAND_NAME } 的密码并且需要重置它,下次您使用您的新密码登录此设备时,将恢复您的 ${ BRAND_NAME } 账户的全部访问权限。" @@ -19604,11 +20753,11 @@ "If you forget your ${ BRAND_NAME } password and need to reset it, the next time you sign in this device using your new password, full access to your ${ BRAND_NAME } Account will be restored.": [ "如果您忘记了您的 ${ BRAND_NAME } 的密码并且需要重置它,下次您使用您的新密码登录此设备时,将恢复您的 ${ BRAND_NAME } 账户的全部访问权限。" ], - "If you get locked out of your ${ BRAND_NAME } Account, your Recovery Kit will allow you to sign in and recover your data.": [ - "如果您的 ${ BRAND_NAME } 账户被锁定,恢复套件将允许您登录并恢复数据。" + "If you get locked out of your ${ BRAND_NAME } Account, your recovery phrase will allow you to sign in and recover your data.": [ + "如果您无法登录 ${ BRAND_NAME } 账户,您的恢复短语将允许您登录并恢复数据。" ], "If you lose your login details and need to reset your account, **it’s imperative** that you have both an **account recovery and data recovery method** in place, otherwise you might not be able to access any of your emails, contacts, files or passwords.": [ - "如果您丢失了登录信息并需要重置账户,**重要的是**您必须同时使用**账户恢复和数据恢复方法**,否则您可能无法访问任何电子邮件、联系人、文件或密码。" + "如果您丢失了登录信息并需要重置账户,**务必**同时拥有**账户恢复方法和数据恢复方法**,否则您可能无法访问任何邮件、联系人、文件或密码。" ], "in case we need to contact you": [ "以使我们能够联系到你" @@ -19649,17 +20798,17 @@ "Take action to secure your account": [ "采取行动确保您的账户安全" ], - "There was an error generating your Recovery Kit": [ - "生成恢复套件时出错" + "There was an error generating your recovery phrase": [ + "生成恢复短语时出错" ], "There was an error verifying your email": [ "验证邮箱出错" ], "There was an error verifying your recovery email": [ - "验证您的密保邮箱时出错" + "验证密保邮箱时出错" ], "There was an error verifying your recovery phone": [ - "验证您的密保手机时出错" + "验证密保手机时出错" ], "to automatically recover your data when you log into a trusted device": [ "在登录受信任设备时自动恢复数据" @@ -19679,11 +20828,11 @@ "to recover your account if you're ever locked out": [ "如果您被锁定,可恢复您的账户" ], - "Update your Recovery Kit": [ - "更新您的恢复密钥" + "Update your recovery phrase": [ + "更新您的恢复短语" ], - "Update your Recovery Kit?": [ - "更新您的恢复套件?" + "Update your recovery phrase?": [ + "更新您的恢复短语?" ], "Verify": [ "验证" @@ -19695,22 +20844,22 @@ "验证您的电话号码" ], "Verify your recovery email address": [ - "验证您的密保邮箱地址" + "验证您的密保邮箱" ], "Verify your recovery phone number": [ - "验证您的密保手机" + "验证密保手机" ], - "We encountered an error while generating your Recovery Kit. Please try again later, or contact support if the issue continues.": [ - "我们在生成您的恢复套件时遇到了错误。请稍后再试,如果问题仍然存在,请联系技术支持。" + "We encountered an error while generating your recovery phrase. Please try again later, or contact support if the issue continues.": [ + "生成恢复短语时出错。请稍后重试,如果问题仍然存在,请联系客服。" ], "We encountered an error while verifying your email. Please try again later, or contact support if the issue continues.": [ "验证邮箱出现错误,请稍后重试。若无效,请联系技术支援。" ], "We encountered an error while verifying your recovery email. Please try again later, or contact support if the issue continues.": [ - "我们在验证您的密保邮箱时遇到错误。请稍后再试,如果问题仍然存在,请联系技术支持。" + "我们在验证您的密保邮箱时遇到了错误。请稍后重试,如果问题仍然存在,请联系客服。" ], "We encountered an error while verifying your recovery phone. Please try again later, or contact support if the issue continues.": [ - "我们在验证您的密保手机时遇到了错误。请稍后再试,如果问题仍然存在,请联系技术支持。" + "我们在验证您的密保手机时遇到了错误。请稍后重试,如果问题仍然存在,请联系客服。" ], "When you enable device-based recovery, ${ BRAND_NAME } will store an encrypted backup keychain as a file in your browser’s web storage.": [ "启用基于设备的恢复后,${ BRAND_NAME } 会将加密备份的密钥链作为文件存储在浏览器的网络存储中。" @@ -19724,20 +20873,17 @@ "You can disable this at any time.": [ "您可以随时禁用此功能。" ], - "You can use the recovery phrase in this Recovery Kit to fully restore your account when you reset your password, so make sure you keep it somewhere safe.": [ - "重置密码时,您可以使用本恢复套件中的恢复短语来完全恢复您的账户,因此请确保将其妥善保存。" - ], "You can use your email to regain access to your account if you forget your password.": [ "若忘记密码,您将可以通过密保邮箱重新访问您的账户。" ], "You can use your recovery email to regain access to your account if you forget your password.": [ - "如果忘记密码,您可以使用密保邮箱重新访问您的账户。" + "如果忘记密码,可以使用密保邮箱重新访问账户。" ], "You can use your recovery phone to regain access to your account if you forget your password.": [ "如果忘记密码,可以使用密保手机重新访问账户。" ], - "You have previously downloaded a Recovery Kit. Downloading a new one will **deactivate the old one**.": [ - "您以前下载过恢复套件,下载新的恢复套件将**停用旧的恢复套件**。" + "You have previously downloaded a recovery phrase. Downloading a new one will **deactivate the old one**.": [ + "您以前下载过恢复短语,下载新的恢复短语将**停用先前的恢复短语**。" ], "You have recommended actions to safeguard your account further.": [ "建议您采取进一步保护账户的措施。" @@ -19785,28 +20931,22 @@ "您的密保邮箱" ], "Your recovery email address is:": [ - "您的密保邮箱地址为:" + "密保邮箱:" ], "Your recovery email and phone can **only recover access to your account**.": [ - "您的密保邮箱和手机只能**恢复对您账户的访问**。" + "您的密保邮箱和手机**只能恢复对您账户的访问**。" ], "Your recovery email can **only recover access to your account**.": [ "您的密保邮箱**只能恢复对您账户的访问**。" ], "Your recovery email could be abused by attackers to take over your account. ${ disableEmail } to increase your account security.": [ - "您的恢复邮箱可能被攻击者滥用以接管您的账户,${ disableEmail } 以提高账户安全性。" + "密保邮箱可能被攻击者滥用以劫持您的账户,启用 ${ disableEmail } 可提高账户安全性!" ], "Your recovery email has been enabled": [ - "您的密保邮箱已启用" + "密保邮箱已启用" ], "Your recovery email is set": [ - "您的密保邮箱已设置" - ], - "Your Recovery Kit": [ - "您的恢复密钥" - ], - "Your Recovery Kit is set": [ - "您的恢复套件已设置" + "密保邮箱已设置" ], "Your recovery methods": [ "您的恢复方法" @@ -19815,19 +20955,255 @@ "您的密保手机" ], "Your recovery phone can **only recover access to your account**.": [ - "您的密保手机 **只能恢复对您账户的访问** 。" + "您的密保手机**只能恢复对您账户的访问**。" ], "Your recovery phone could be abused by attackers to take over your account. ${ disablePhone } to increase your account security.": [ - "您的恢复手机可能被攻击者滥用以接管您的账户,${ disablePhone } 以提高账户安全性。" + "密保手机可能被攻击者滥用以劫持您的账户,启用 ${ disablePhone } 可提高账户安全性!" ], "Your recovery phone has been enabled": [ - "您的密保手机已启用" + "密保手机已启用" ], "Your recovery phone is set": [ - "您的密保手机已设置" + "密保手机已设置" ], "Your recovery phone number is:": [ - "您的密保手机是:" + "密保手机:" + ], + "Your recovery phrase": [ + "您的恢复短语" + ], + "Your recovery phrase is set": [ + "恢复短语已设置" + ] + }, + "safety_review": { + "${ BRAND_NAME } Account email": [ + "${ BRAND_NAME } 账户邮箱" + ], + "Account protection": [ + "账户保护" + ], + "Add": [ + "添加" + ], + "Add an emergency contact": [ + "添加紧急联系人" + ], + "Add emergency contacts": [ + "添加紧急联系人" + ], + "Add options": [ + "添加选项" + ], + "Add people who you trust and can contact easily. Your emergency contact will be able to access your account and reset your password for you if needed.": [ + "请添加您信任且容易联系的朋友,他们将能够在需要时访问您的账户并为您重置密码。" + ], + "Add people you trust and can contact easily. They will be able to help you unlock your data after you reset your password.": [ + "添加您信任且容易联系的朋友。重置密码后,他们将能够帮助您解锁数据。" + ], + "Add phone number": [ + "添加手机号码" + ], + "Add recovery contacts": [ + "添加恢复联系人" + ], + "Add recovery email": [ + "添加密保邮箱" + ], + "Add recovery phone": [ + "添加密保手机" + ], + "Added emergency contacts": [ + "已添加紧急联系人" + ], + "Added recovery contacts": [ + "已添加恢复联系人" + ], + "Added recovery email": [ + "已添加密保邮箱" + ], + "Added recovery phone": [ + "添加密保手机" + ], + "Allow": [ + "允许" + ], + "Allow data recovery from this device": [ + "允许在此设备上恢复数据" + ], + "Allow password reset from the settings": [ + "允许通过设置重置密码" + ], + "Allow recovery by email": [ + "允许通过密保邮箱恢复" + ], + "Allow recovery by phone": [ + "允许通过密保手机恢复" + ], + "Allow scanning a QR code to sign in": [ + "允许扫描二维码登录" + ], + "Allow trusted friends to unlock your data": [ + "允许受信任的朋友解锁您的数据" + ], + "Back to ${ backLink.appNameString }": [ + "返回 ${ backLink.appNameString }" + ], + "Congratulations": [ + "恭喜" + ], + "Didn’t receive it? ${ sendANewCode }": [ + "没有收到?${ sendANewCode }" + ], + "Done": [ + "完成" + ], + "Download": [ + "下载" + ], + "Download recovery file": [ + "下载恢复文件" + ], + "Downloaded recovery file": [ + "已下载恢复文件" + ], + "Emergency contacts enabled": [ + "已启用紧急联系人" + ], + "Enable device recovery": [ + "启用通过设备恢复" + ], + "Enable email recovery": [ + "启用通过密保邮箱恢复" + ], + "Enable emergency contacts": [ + "启用紧急联系人" + ], + "Enable password reset from settings": [ + "启用通过设置重置密码" + ], + "Enable phone recovery": [ + "启用通过密保手机恢复" + ], + "Enable QR code sign-in": [ + "启用扫码登录" + ], + "Enabled device recovery": [ + "已启用通过设备恢复" + ], + "Enabled email recovery": [ + "已启用通过密保邮箱恢复" + ], + "Enabled password reset from settings": [ + "已启用通过设置重置密码" + ], + "Enabled phone recovery": [ + "已启用通过密保手机恢复" + ], + "Enabled QR code sign-in": [ + "已启用扫码登录" + ], + "Got it": [ + "知道了" + ], + "Here's how you increased your account protection:": [ + "以下是增强账户保护的方式:" + ], + "If you forget your password, you can sign in using a QR code. All you need is to be signed in to a ${ BRAND_NAME } service on another device.": [ + "如果您忘记密码,可以使用二维码登录。只需在另一台设备上登录 ${ BRAND_NAME } 服务即可。" + ], + "If you get locked out of your ${ BRAND_NAME } Account, it will allow you to sign in and recover your data. It’s the only way to instantly restore everything, so make sure you keep it somewhere safe.": [ + "如果您无法登录 ${ BRAND_NAME } 账户,该短语将允许您登录并恢复数据。这是即时恢复所有内容的唯一方法,请务必将其保存在安全的地方!" + ], + "Later": [ + "稍后" + ], + "Protect your legacy with Emergency Access": [ + "通过紧急访问功能保护您的数字资产" + ], + "Save recovery phrase": [ + "保存恢复短语" + ], + "Saved recovery phrase": [ + "已保存恢复短语" + ], + "They must already have a ${ BRAND_NAME } Account.": [ + "他们必须已拥有 ${ BRAND_NAME } 账户!" + ], + "They will not be able to see or access your data.": [ + "他们将无法查看或访问您的数据!" + ], + "This will let you quickly access your ${ BRAND_NAME } Account so you can change your password.": [ + "这将让您快速访问 ${ BRAND_NAME } 账户,以便更改密码。" + ], + "This will let you reset your account password if you’ve lost it, but are still signed in to ${ BRAND_NAME }. It’s often the easiest way to recover your account if you’re signed in.": [ + "如果您丢失了密码但仍在 ${ BRAND_NAME } 中保持登录状态,这将允许您重置账户密码。如果您已登录,这通常是恢复账户的最简单方式。" + ], + "This will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset.": [ + "重置密码后,这将能够恢复账户中的邮件、联系人、文件、密码以及任何其他加密数据的访问权限。" + ], + "To make sure the email address is yours, enter the verification code sent to ${ boldEmail }.": [ + "为确保邮箱地址是您的,请输入发送至 ${ boldEmail } 的验证码。" + ], + "To make sure the phone number is yours, enter the verification code sent to ${ boldPhoneNumber }.": [ + "为确保电话号码是您的,请输入发送至 ${ boldPhoneNumber } 的验证码。" + ], + "To make sure this address is really yours, we’ll send an email with a verification link.": [ + "为确保邮箱地址是您的,我们将发送一封带有验证链接的邮件。" + ], + "Upgrade your plan to enable Emergency Access to your account. This will allow you to designate 1 to 5 people who will be able to reset your password for you.": [ + "升级您的套餐以启用账户的紧急访问功能,这将允许您指定 1 到 5 位能够为您重置密码的朋友。" + ], + "Verified password": [ + "已验证密码" + ], + "Verified recovery email": [ + "已验证密保邮箱" + ], + "Verified recovery phone": [ + "已验证密保手机" + ], + "Verify": [ + "验证" + ], + "Verify password": [ + "验证密码" + ], + "Verify recovery email": [ + "验证密保邮箱" + ], + "Verify recovery phone": [ + "验证密保手机" + ], + "Verify your recovery email": [ + "验证密保邮箱" + ], + "Verify your recovery phone": [ + "验证密保手机" + ], + "You can save a data backup on this device. This will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset, simply by signing in on this device.": [ + "您可以在此设备上保存数据备份。重置密码后,只需在此设备上登录,即可恢复您账户中的邮件、联系人、文件、密码以及任何其他加密数据。" + ], + "You can use email verification to regain access to your account if you forget your password.": [ + "如果忘记密码,可以使用邮箱验证重新访问账户。" + ], + "You can use SMS verification to regain access to your account if you forget your password.": [ + "如果忘记密码,可以使用短信验证重新访问账户。" + ], + "You can use your recovery email to regain access to your account if you forget your password.": [ + "如果忘记密码,可以使用密保邮箱重新访问账户。" + ], + "You can use your recovery phone to regain access to your account if you forget your password.": [ + "如果忘记密码,可以使用密保手机重新访问账户。" + ], + "You don’t need to open or read the file—just download it and store it somewhere safe.": [ + "您无需打开或读取该文件,只需下载并将其保存在安全的地方即可。" + ], + "Your recovery checklist": [ + "您的恢复清单" + ], + "Your security setup": [ + "您的安全设置" ] }, "saml: Action": { @@ -20033,6 +21409,17 @@ "未找到结果" ] }, + "Sentinel banner": { + "To ensure the highest possible security of your account, disable recovery via email and SMS.": [ + "为确保您账户的最高安全性,请禁用通过邮件和短信恢复!" + ], + "To make sure that you can always access your ${ BRAND_NAME } Account, download your recovery phrase.": [ + "为确保您始终可以访问您的 ${ BRAND_NAME } 账户,请下载您的恢复短语!" + ], + "You have recommended actions from ${ PROTON_SENTINEL_NAME }": [ + "您有来自 ${ PROTON_SENTINEL_NAME } 的推荐操作" + ] + }, "Server-Info": { "active": [ "启用" @@ -20292,6 +21679,9 @@ ] }, "session_recovery:settings:info": { + "To disallow password reset from settings, you must save your recovery phrase.": [ + "若要禁止从设置中重置密码,您必须保存恢复短语。" + ], "To disallow password reset, you must have a recovery method set up.": [ "要禁用密码重置,您必须设置恢复方法。" ], @@ -20349,7 +21739,7 @@ }, "Setting": { "Get updates about comments via email": [ - "通过电子邮件获取评论更新" + "通过邮件获取评论更新" ], "Include document name in email notifications": [ "在邮件通知中包含文档名称" @@ -20417,7 +21807,7 @@ }, "Share calendar modal description": { "Add the ${ BRAND_NAME } accounts with whom you want to share ${ calendarName }. We’ll send them an invite.": [ - "添加您想分享 ${ calendarName } 的 ${ BRAND_NAME } 账号,我们会为您发送邀请。" + "添加您想要与之共享 ${ calendarName } 的 ${ BRAND_NAME } 账户,我们将向他们发送邀请。" ] }, "Share calendar modal input placeholder": { @@ -20895,7 +22285,7 @@ "邮箱别名" ], "Email, calendar, password manager, and VPN included": [ - "包含电子邮件、日历、密码管理器以及 VPN" + "包含邮箱、日历、密码管理器以及 VPN" ], "End-to-end encrypted transactions": [ "端到端加密交易" @@ -21197,11 +22587,35 @@ ] }, "Spotlight": { + "Assign delegated roles": [ + "分配委派角色" + ], + "Assign roles": [ + "分配角色" + ], + "Click a user's name to manage their role and permissions.": [ + "点击用户名以管理其角色和权限" + ], + "Click Edit to assign roles to this group and manage member access automatically.": [ + "点击“编辑”可为此组分配角色并自动管理成员访问权限。" + ], "Earn up to ${ maxRewardAmount } in credit": [ "最高可赚取 ${ maxRewardAmount } 积分" ], "Get credits when the person you invite subscribes to a ${ BRAND_NAME } plan.": [ "当您邀请的人订阅 ${ BRAND_NAME } 套餐时,您将获得积分奖励。" + ], + "New: Roles and permissions tab": [ + "新功能:角色与权限选项卡" + ], + "Open this tab to grant specific permissions without full admin access.": [ + "打开此选项卡可授予特定权限,而无需完全的管理员访问权限。" + ], + "User roles available": [ + "可用的用户角色" + ], + "You can now assign roles to individual users from this tab.": [ + "现在您可以在此选项卡中为单个用户分配角色。" ] }, "sso": { @@ -21311,7 +22725,7 @@ "输入您的备份密码" ], "For your security, you have been signed out of all your other active devices. Before accessing your account, you’ll need to enter a new backup password.": [ - "为了您的账号安全,您已从其他所有活跃设备中登出。在访问您的账户之前,您将需要输入一个新的备用密码。" + "为了您的安全,您已登出所有其他活跃设备。在访问您的账户之前,您需要输入一个新的备份密码。" ], "Grant": [ "授权" @@ -21341,7 +22755,7 @@ "加入 ${ organizationName }" ], "Make sure you save it somewhere safe so that you can get back into your account if you lose access to your Identity Provider credentials.": [ - "确保将其保存在安全的地方,以便在身份提供商凭据丢失时可以重新进入您的账户。" + "请务必将它保存在安全的地方,以便在您无法访问身份凭据时能够重新进入账户。" ], "New backup password": [ "新的备份密码" @@ -21407,7 +22821,7 @@ "单点登录已移除" ], "The email address ${ email } already exists in ${ BRAND_NAME }. Sign in with your ${ BRAND_NAME } credentials to continue.": [ - "该邮箱地址 ${ email } 已在 ${ BRAND_NAME } 系统中注册。请使用您的 ${ BRAND_NAME } 账号登录以继续。" + "邮箱地址 ${ email } 已存在于 ${ BRAND_NAME } 中,请使用您的 ${ BRAND_NAME } 凭据登录以继续。" ], "The user ${ user } is now a single sign-on account. Their previous password became their backup password.": [ "用户 ${ user } 现在是单点登录账户。他们之前的密码变成了备份密码。" @@ -21483,6 +22897,59 @@ "正在取消您的订阅,请稍候。" ] }, + "Status": { + "${ count } person": [ + "${ count } 人" + ], + "Add a phone number": [ + "添加手机号码" + ], + "Add an email address": [ + "添加邮箱地址" + ], + "Available on this device": [ + "在此设备上可用" + ], + "Disable recovery by email": [ + "禁用通过密保邮箱恢复" + ], + "Disable recovery by phone": [ + "禁用通过密保手机恢复" + ], + "Generate a recovery phrase": [ + "生成恢复短语" + ], + "Last changed ${ formattedDate }": [ + "上次更改于 ${ formattedDate }" + ], + "Last updated ${ formattedUpdateDate }": [ + "最后更新于 ${ formattedUpdateDate }" + ], + "Not saved": [ + "未保存" + ], + "Off": [ + "关闭" + ], + "On": [ + "开启" + ], + "Outdated": [ + "已过期" + ], + "Saved": [ + "已保存" + ], + "Unverified": [ + "未验证" + ], + "Verified": [ + "已验证" + ], + "Verify ${ value }": [ + "验证 ${ value }" + ] + }, "Step in filter modal": { "Actions": [ "操作" @@ -21507,7 +22974,7 @@ }, "storage_split: action": { "Keep ${ currentPlanName }": [ - "保持计划 ${ currentPlanName }" + "保留 ${ currentPlanName }" ] }, "storage_split: feature": { @@ -21745,10 +23212,10 @@ "订阅" ], "Your plan was purchased using an Android app. So to make changes to your plan or update your payment details, you’ll need to go to the Google Play Store.": [ - "您的计划是使用 Android 应用程序购买的。因此,要更改计划或更新付款详情,您需要访问 Google Play 商店。" + "您的套餐是通过 Android 应用购买的。因此,如需更改套餐或更新付款信息,您需要前往 Google Play 商店操作。" ], "Your plan was purchased using an iOS app. So to make changes to your plan or update your payment details, you’ll need to go to the Apple App Store.": [ - "您的计划是使用 iOS 应用程序购买的。因此,要更改计划或更新付款详情,您需要访问 Apple App Store。" + "您的套餐是通过 iOS 应用购买的。因此,如需更改套餐或更新付款信息,您需要前往 Apple App Store 操作。" ] }, "subscription downgrading info": { @@ -21767,6 +23234,12 @@ ] }, "Subscription reminder": { + "${ BRAND_NAME } Scribe writing assistant": [ + "${ BRAND_NAME } Scribe 写作助手" + ], + "${ CALENDAR_APP_NAME }, ${ DRIVE_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME }, ${ VPN_SHORT_APP_NAME }, ${ MEET_SHORT_APP_NAME }, and ${ LUMO_APP_NAME } with premium features": [ + "包含高级功能的 ${ CALENDAR_APP_NAME }、${ DRIVE_SHORT_APP_NAME }、${ PASS_SHORT_APP_NAME }、${ VPN_SHORT_APP_NAME }、${ MEET_SHORT_APP_NAME } 和 ${ LUMO_APP_NAME }" + ], "${ CALENDAR_APP_NAME }, ${ DRIVE_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME }, and ${ VPN_SHORT_APP_NAME } with premium features": [ "具有高级功能的 ${ CALENDAR_APP_NAME }、${ DRIVE_SHORT_APP_NAME }、${ PASS_SHORT_APP_NAME } 以及 ${ VPN_SHORT_APP_NAME }" ], @@ -21927,7 +23400,7 @@ "已邀请的成员将从您的组织中移除" ], "Keep ${ config.planName }": [ - "保持计划 ${ config.planName }" + "保留 ${ config.planName }" ], "Keep subscription": [ "继续订阅" @@ -22019,6 +23492,9 @@ "Version history": [ "版本历史" ], + "Video meetings, up to ${ PAID_PREMIUM_MAX_PARTICIPANTS } participant": [ + "高清视频会议,最多支持 ${ PAID_PREMIUM_MAX_PARTICIPANTS } 人参与" + ], "Watch the interview": [ "观看访谈" ], @@ -22038,7 +23514,7 @@ "年度免费存储奖励" ], "You can continue to enjoy all the benefits of your current plan until ${ boldedDate }.": [ - "您可以继续享受当前计划的所有福利,直至 ${ boldedDate }。" + "在 ${ boldedDate } 之前,您可以继续享受当前套餐的所有权益。" ], "You still have ${ expiryDate } on your ${ planName } subscription. We'll add the credits for the remaining time to your ${ BRAND_NAME } Account. Make sure you do not exceed the free plan limits before canceling. ${ learnMoreLink }": [ "您的 ${ planName } 订阅还有 ${ expiryDate }。我们会将剩余时间的点数加入您的 ${ BRAND_NAME } 账户。取消前请确保没有超过免费计划的限额。${ learnMoreLink }" @@ -22114,7 +23590,7 @@ "我们的系统将不再使用此付款方式自动扣款,但您的订阅仍会在计费周期结束时自动续订。如果您希望降级或更改订阅,您仍需在当前计费周期结束前手动操作。此外,如果您忘记手动付款且所有付款方式的自动支付均已禁用,我们可能会自动将您的账户降级,这将导致多项功能失效。" ], "Our system will no longer auto-charge you using this payment method, but your subscription will still renew at the end of the billing cycle. If you want to downgrade or change your subscription, you still need to do that yourself before the end of the billing period. We cannot auto-downgrade you because if you are over free plan storage quota or using other paid features, we cannot auto delete files, emails, or other data for you. If you disable automatic payment, remember to pay your next subscription invoice before the due date to prevent account suspension.": [ - "我们的系统将不再使用这种付款方式自动向您收取费用,但您的订阅仍将在账单周期结束时续订。如果您想降级或更改订阅,仍需在账单周期结束前自行完成。我们无法自动为您降级,因为如果您超过了免费计划的存储配额或使用了其他付费功能,我们就无法为您自动删除文件、电子邮件或其他数据。如果您禁用了自动付款功能,请记得在到期日之前支付下一张订购发票,以免账户被停用。" + "我们的系统将不再使用此支付方式自动扣费,但您的订阅仍会在当前结算周期结束时续订。如果您想降级或更改订阅,仍需在结算周期结束前自行操作。我们无法为您自动降级,因为如果您超出免费套餐的存储配额或正在使用其他付费功能,我们无法自动删除您的文件、邮件或其他数据。如果您关闭自动支付,请记得在到期日前支付下一期的订阅账单,以免账户被暂停使用。" ] }, "Subscription saving": { @@ -22134,12 +23610,54 @@ ] }, "Subtitle": { + "${ DRIVE_PLUS_NAME } offers 1 TB storage for your files and photos. You are also eligible for yearly storage bonuses.": [ + "${ DRIVE_PLUS_NAME } 为您的文件和照片提供 1 TB 存储空间。您还有资格获得年度存储奖励。" + ], + "${ DRIVE_PLUS_NAME } offers 200 GB storage for your files and photos. You are also eligible for yearly storage bonuses.": [ + "${ DRIVE_PLUS_NAME } 为您的文件和照片提供 200 GB 存储空间。您还可获得年度存储奖励。" + ], + "${ planTitle } gives you access to all apps and premium features. Privacy is built-in so you can get on with it, knowing your data and identity are safe.": [ + "${ planTitle } 让您可以使用所有应用和高级功能。隐私保护已内置其中,您可放心使用,知晓您的数据和身份是安全的。" + ], + "${ planTitle } gives you all apps, all features, early access to new releases, and everything you need to be in control of your data and its security.": [ + "${ planTitle } 为您提供所有应用、所有功能、新版本的早期访问权限以及掌控数据和数据安全所需的一切。" + ], + "${ planTitle } gives you unlimited privacy and more storage for up to 2 people.": [ + "${ planTitle } 为最多 2 人提供无限隐私和更多存储空间。" + ], + "${ planTitle } gives your team all the collaboration tools they need to be productive and organized in their work, while safeguarding your business.": [ + "${ planTitle } 为您的团队提供所有所需的协作工具,使其在工作中高效且有条理,同时保护您的业务安全。" + ], + "${ planTitle } gives your team what they need to be more productive and organized in their work with access to all ${ BRAND_NAME } apps and their advanced features.": [ + "${ planTitle } 为您的团队提供在工作中提高生产力和组织性所需的一切,包括所有 ${ BRAND_NAME } 应用及其高级功能。" + ], + "${ planTitle } gives your team what they need to be more productive, organized, and in control of their inbox, schedule, and more.": [ + "${ planTitle } 为您的团队提供提高生产力、组织有序以及掌控收件箱、日程等所需的一切。" + ], + "${ planTitle } goes beyond the basics to help you be more productive, organized, and in control of your inbox, email identity, and more.": [ + "${ planTitle } 超越了基础功能,帮助您提高生产力、更有条理,并掌控您的收件箱、邮件身份等。" + ], + "${ planTitle } helps you ensure that each of your family members — and their data — are protected whenever they’re online.": [ + "${ planTitle } 帮助确保您的每位家庭成员及其数据在上网时都受到保护。" + ], + "Compare the key differences that matter for your business.": [ + "对比对您的业务至关重要的主要差异。" + ], "Free forever": [ "永久免费" ], "per month, billed annually": [ "每月,按年计费" ], + "Save 50% for 1 year, and keep full access": [ + "节省 50% 费用持续 1 年,并保留所有访问权限" + ], + "Save 50% for 6 months, and keep full access": [ + "节省 50% 费用持续 6 个月,并保留所有访问权限" + ], + "See how ${ MAIL_APP_NAME } compares, and why our independence makes a difference.": [ + "了解 ${ MAIL_APP_NAME } 的对比优势,以及我们的独立性为何能带来不同。" + ], "View VPN session details for your organization.": [ "查看您组织的 VPN 会话详情。" ] @@ -22148,6 +23666,9 @@ "Account deleted. Signing out...": [ "账户已删除,正在退出..." ], + "Activation link copied to clipboard": [ + "激活链接已复制到剪贴板" + ], "Address added": [ "地址已添加" ], @@ -22271,9 +23792,6 @@ "Organization logo updated": [ "组织徽标已更新" ], - "Organization name set": [ - "组织名称已设置" - ], "Organization name updated": [ "组织名称已更新" ], @@ -22371,10 +23889,10 @@ "您已退订成功" ], "You will receive your username via email within a minute if you entered a valid recovery email address.": [ - "如果您输入的是有效的密保邮箱地址,您将在一分钟内通过该邮箱收到您的用户名。" + "若您的密保邮箱地址无误,您将在一分钟内收到有关您用户名的邮件。" ], "You will receive your username via SMS within a minute if you entered a valid recovery phone number.": [ - "如果您输入了有效的密保手机号码,您将在一分钟内通过短信收到您的用户名。" + "若您的密保手机号码无误,您将在一分钟内收到有关您用户名的短信。" ], "Your address has been activated": [ "您的地址已激活" @@ -22463,6 +23981,9 @@ ], "/user per month": [ "/用户每月" + ], + "/year": [ + "/年" ] }, "Suffix for price": { @@ -22492,6 +24013,14 @@ "使用加密的云存储保护您的文件。包括版本历史记录、加密文件共享等。" ] }, + "Tab": { + "For personal use": [ + "适用于个人用途" + ], + "For professional use": [ + "适用于专业用途" + ] + }, "Tab in domain modal": { "Addresses": [ "地址" @@ -22580,6 +24109,14 @@ "未找到 SMTP 令牌" ] }, + "Temporary need": { + "Continue cancelling": [ + "继续取消" + ], + "Keep current plan": [ + "保留当前套餐" + ] + }, "Theme": { "Auto": [ "自动" @@ -22736,7 +24273,7 @@ "账户受限" ], "Account suspended": [ - "账号已被停用" + "账户已被停用" ], "Account temporarily locked": [ "账户暂时锁定" @@ -22747,14 +24284,20 @@ "Actions": [ "操作" ], + "Activate multi-user support": [ + "启用多用户支持" + ], "Activate organization key": [ "激活机构密钥" ], "Activate user": [ "激活用户" ], + "Activate your email": [ + "激活您的邮箱" + ], "Activity monitor": [ - "活动监视器" + "活动监测" ], "Add ${ totalServerCount } server?": [ "添加 ${ totalServerCount } 台服务器?" @@ -22762,12 +24305,21 @@ "Add a custom logo": [ "自定义徽标" ], + "Add a recovery contact": [ + "添加恢复联系人" + ], "Add address": [ "添加地址" ], + "Add an emergency contact": [ + "添加紧急联系人" + ], "Add another notification to remind you of this event": [ "添加另一个提醒您此日程的通知" ], + "Add categories": [ + "添加分类" + ], "Add contact group name": [ "添加联系人群组名称" ], @@ -22828,6 +24380,9 @@ "Address and key verification": [ "地址和密钥验证" ], + "Advanced recovery options": [ + "高级恢复选项" + ], "Allocate storage": [ "分配存储空间" ], @@ -22835,7 +24390,7 @@ "已有多个账户?" ], "Also in your plan": [ - "也在您的计划中" + "也在您的套餐中" ], "Amount": [ "数额" @@ -22846,9 +24401,6 @@ "An address for each role": [ "每个角色的地址" ], - "An error occurred": [ - "发生错误" - ], "Annual": [ "年付" ], @@ -22942,6 +24494,9 @@ "Catch-all address": [ "通配邮箱" ], + "Categories": [ + "分类" + ], "Change login password": [ "更改登录密码" ], @@ -22964,7 +24519,7 @@ "修改二级密码" ], "Check your default mail application": [ - "检查您的默认邮件应用" + "检查默认邮箱应用" ], "Choose a provider": [ "请选择提供商" @@ -22988,7 +24543,7 @@ "协作处理文件" ], "Compare plans": [ - "比较计划" + "比较套餐" ], "Composing": [ "邮件编辑" @@ -22996,18 +24551,12 @@ "Confirm": [ "确认" ], - "Confirm address": [ - "确认地址" - ], "Confirm downgrade": [ "确认降级" ], "Confirm loss of ${ BRAND_NAME } bonuses": [ "确定放弃 ${ BRAND_NAME } 特权" ], - "Confirm phone number": [ - "确认电话号码" - ], "Connect ${ name }": [ "连接至 ${ name }" ], @@ -23032,12 +24581,18 @@ "Connect your custom domain": [ "连接您的自定义域名" ], + "Connected emails": [ + "已关联的邮箱" + ], "Connection status": [ "连接状况" ], "Contact us": [ "联系我们" ], + "Continue with free storage": [ + "继续使用免费存储空间" + ], "Continue with partial import?": [ "继续以部分导入进行吗?" ], @@ -23062,6 +24617,9 @@ "Create a new gateway": [ "新建网关" ], + "Create a new password": [ + "创建新密码" + ], "Create Gateway": [ "创建网关" ], @@ -23129,7 +24687,7 @@ "自定义日历导入" ], "Customize the number of IP addresses in your plan": [ - "自定义计划中的 IP 地址数量" + "自定义套餐中的 IP 地址数量" ], "Customize your mail import": [ "自定义您的邮件导入" @@ -23143,6 +24701,12 @@ "Data recovery": [ "数据恢复" ], + "Data recovery contacts": [ + "数据恢复联系人" + ], + "Data recovery options": [ + "数据恢复选项" + ], "Data retention": [ "数据保留" ], @@ -23152,6 +24716,9 @@ "Day theme": [ "日间模式" ], + "Deactivate current phrase?": [ + "停用当前短语?" + ], "Decrypt key": [ "解密密钥" ], @@ -23203,6 +24770,9 @@ "Delete user?": [ "删除用户?" ], + "Delete version history?": [ + "删除版本历史?" + ], "Deny access to user?": [ "拒绝用户访问?" ], @@ -23218,6 +24788,9 @@ "Device": [ "台设备" ], + "Device data backup": [ + "设备数据备份" + ], "Device name": [ "设备名称" ], @@ -23227,6 +24800,9 @@ "Disable categories?": [ "禁用分类?" ], + "Disable device data backup?": [ + "禁用设备数据备份?" + ], "Disable two-factor authentication": [ "禁用双因素身份验证" ], @@ -23242,6 +24818,9 @@ "Disconnected from Gmail": [ "已断开与 Gmail 的连接" ], + "Dismiss setup checklist": [ + "关闭设置清单" + ], "Display name and signature": [ "称呼与落款" ], @@ -23278,6 +24857,9 @@ "Download the mobile apps": [ "下载移动应用" ], + "Download your recovery phrase": [ + "下载您的恢复短语" + ], "Downloads": [ "下载" ], @@ -23336,7 +24918,7 @@ "编辑谁要使用该网关" ], "Email": [ - "邮件" + "邮箱" ], "Email breaches": [ "邮箱数据泄露" @@ -23354,7 +24936,10 @@ "邮件通知" ], "Email privacy": [ - "电子邮件隐私" + "邮件隐私" + ], + "Email verification": [ + "邮箱验证" ], "Emergency access": [ "紧急访问权限" @@ -23378,7 +24963,7 @@ "输入 SAML 元数据" ], "Enter your ${ BRAND_NAME } Account details to join the ${ app } Beta program": [ - "输入您的 ${ BRAND_NAME } 账户详情以加入 ${ app } Beta 计划" + "请输入您的 ${ BRAND_NAME } 账户详细信息以加入 ${ app } Beta 计划" ], "Enter your password": [ "请输入您的密码" @@ -23413,6 +24998,9 @@ "Feature access": [ "功能访问权限" ], + "Fewer distractions, more focus": [ + "更少干扰,更多专注" + ], "Filter for more focus": [ "筛选更多要点" ], @@ -23443,23 +25031,23 @@ "Forward emails": [ "转发电子邮件" ], - "Forwardings": [ - "转发" - ], "Free": [ "免费" ], + "Free plan": [ + "免费套餐" + ], "Gateway": [ "网关" ], "Gateway monitor": [ - "网关监控" + "网关监测" ], "Gateway monitor disabled": [ - "网关监控已禁用" + "网关监测已禁用" ], "Gateway monitor enabled": [ - "网关监控已启用" + "网关监测已启用" ], "Gateways": [ "网关" @@ -23471,7 +25059,7 @@ "生成缺失的密钥" ], "Generate new recovery phrase?": [ - "生成新的恢复密语吗?" + "生成新的恢复短语?" ], "Generate SMTP token": [ "生成 SMTP 令牌" @@ -23479,6 +25067,9 @@ "Get ${ planMaxSpace } storage for your files, photos and documents with ${ planName }. ${ upgradeButton }": [ "使用 ${ planName } 为您的文件、照片和文档获取 ${ planMaxSpace } 存储空间。${ upgradeButton }" ], + "Get ${ VPN_APP_NAME } on your TV": [ + "在电视上获取 ${ VPN_APP_NAME }" + ], "Get ${ vpnPlus } to access all servers": [ "开通 ${ vpnPlus },任意选择服务器" ], @@ -23509,6 +25100,12 @@ "Get more from your VPN": [ "从您的 VPN 获取更多信息" ], + "Get more storage with ${ MAIL_APP_NAME } Plus": [ + "使用 ${ MAIL_APP_NAME } Plus 获取更多存储空间" + ], + "Get started": [ + "开始使用" + ], "Get the app on all your devices and enjoy safe, seamless access anywhere.": [ "在所有设备上获取应用,随时随地享受安全、无缝的访问体验。" ], @@ -23539,9 +25136,15 @@ "Help center": [ "帮助中心" ], + "Helping activists in Hong Kong": [ + "帮助香港的活动人士" + ], "Home": [ "首页" ], + "How ${ MAIL_APP_NAME } is different": [ + "${ MAIL_APP_NAME } 有何不同之处" + ], "How did you find out about us?": [ "您是如何了解到我们的?" ], @@ -23653,9 +25256,15 @@ "Link confirmation": [ "确认打开链接" ], + "Lower your cost without losing features": [ + "在不牺牲功能的前提下降低成本" + ], "Main password": [ "主密码" ], + "Make your business stand out": [ + "让您的企业脱颖而出" + ], "Manage files across devices on Windows, Mac, Android, and iOS.": [ "在 Windows、Mac、Android 和 iOS 设备间管理文件。" ], @@ -23710,6 +25319,9 @@ "No events": [ "暂无事件" ], + "No events yet": [ + "暂无事件" + ], "No need to empty the trash": [ "无需清空回收站" ], @@ -23764,12 +25376,18 @@ "Other sign-in issues": [ "其他登录问题" ], + "Our fight against censorship in Russia": [ + "我们与俄罗斯的审查制度作斗争" + ], "Password": [ "密码" ], "Password generator rules": [ "密码生成规则" ], + "Password reset options": [ + "密码重置选项" + ], "Password reset settings": [ "密码重置选项" ], @@ -23803,9 +25421,6 @@ "Phone": [ "电话" ], - "Photos": [ - "照片" - ], "Pin the extension": [ "固定扩展" ], @@ -23842,6 +25457,9 @@ "QR Code": [ "二维码" ], + "QR code sign-in": [ + "二维码登录" + ], "Ready, set, forward": [ "准备就绪,开始转发" ], @@ -23866,6 +25484,9 @@ "Recovery file": [ "恢复文件" ], + "Recovery phrase": [ + "恢复短语" + ], "Refer a friend": [ "邀请好友" ], @@ -23884,9 +25505,15 @@ "Remove domain": [ "移除域名" ], + "Remove email": [ + "移除邮箱" + ], "Remove forwarding address": [ "移除转发地址" ], + "Remove recovery phone number": [ + "移除密保手机" + ], "Remove server?": [ "移除服务器?" ], @@ -24058,8 +25685,11 @@ "Sign in on TV": [ "在电视上登录" ], + "Sign in on TV?": [ + "在电视上登录?" + ], "Sign in to join the Beta program": [ - "登录以加入测试版计划" + "登录以加入 Beta 计划" ], "Sign out": [ "登出" @@ -24073,6 +25703,9 @@ "Signed in to member account": [ "已登录成员账户" ], + "Signed-in reset": [ + "已登录状态下的重置" + ], "Simplify email distribution": [ "简化电子邮件分发" ], @@ -24082,12 +25715,21 @@ "Single sign-on": [ "单点登录" ], + "SMS verification": [ + "短信验证" + ], "SMTP submission": [ "SMTP 投递" ], "Snooze:": [ "延迟通知:" ], + "Some of your encrypted data is locked": [ + "您的部分加密数据已被锁定" + ], + "Something went wrong": [ + "出了些问题" + ], "Sort folders alphabetically": [ "按名称排列文件夹" ], @@ -24115,6 +25757,9 @@ "Status": [ "状态" ], + "Stay secure and connected anywhere": [ + "随时随地保持安全和连接" + ], "Strengthen your security on all your devices with ${ passPlusPlanName }. ${ upgradeButton }": [ "使用 ${ passPlusPlanName } 在所有设备上增强安全性。${ upgradeButton }" ], @@ -24136,6 +25781,9 @@ "Support ticket closed": [ "支持工单已关闭" ], + "Support your compliance objectives": [ + "支持您的合规目标" + ], "Switch account": [ "切换账户" ], @@ -24205,6 +25853,9 @@ "Type": [ "类型" ], + "Unblocking internet access in Iran": [ + "在伊朗解除互联网访问限制" + ], "Unlock your data": [ "解锁您的数据" ], @@ -24274,6 +25925,9 @@ "Verify it’s you": [ "验证您的身份" ], + "Verify your email": [ + "验证您的邮箱" + ], "Verifying your card...": [ "正在验证您的银行卡..." ], @@ -24298,6 +25952,9 @@ "Warning: suspected fake website": [ "警告:疑似虚假网站" ], + "We sent you a code to your email to make sure it’s you. This code is valid for 10 minutes. Please enter it below.": [ + "我们已向您的邮箱发送了验证码,以确认您的身份。此验证码有效期为 10 分钟。请在下方输入验证码。" + ], "We'll send an email to your new address with instructions on completing the change.": [ "我们将向您的新地址发送一封电子邮件,其中包含完成更改的说明。" ], @@ -24313,6 +25970,9 @@ "Welcome to your new password manager!": [ "欢迎来到您新的密码管理器!" ], + "What changes if you switch to the Free plan": [ + "切换到免费套餐会有什么变化" + ], "What is an alias?": [ "什么是邮箱别名?" ], @@ -24346,6 +26006,12 @@ "Your ${ planTitle } subscription has started": [ "您的 ${ planTitle } 订阅已开始" ], + "Your admin at ${ orgName } is inviting you to activate your new secure ${ BRAND_NAME } account and update your password.": [ + "您在 ${ orgName } 的管理员正在邀请您激活新的安全 ${ BRAND_NAME } 账户并更新您的密码。" + ], + "Your admin is inviting you to activate your new secure ${ BRAND_NAME } account and update your password.": [ + "您的管理员正在邀请您激活新的安全 ${ BRAND_NAME } 账户并更新您的密码。" + ], "Your calendar link": [ "您的日历链接" ], @@ -24358,6 +26024,15 @@ "Your plan": [ "您的账户等级" ], + "Your recovery file": [ + "您的恢复文件" + ], + "Your recovery phrase": [ + "您的恢复短语" + ], + "Your recovery setup": [ + "您的恢复设置" + ], "Your referrals": [ "您的推荐" ], @@ -24488,7 +26163,25 @@ "已添加到您的套餐:${ mergedAddonTitles }" ], "Admins can manage user accounts and give admin privileges to other users. Only the primary admin can edit the plan of the organization.": [ - "管理员可以管理用户账户,并授予其他用户管理员权限。只有主要管理员可以编辑组织的计划。" + "管理员可以管理用户账户并将管理员权限授予其他用户。只有主管理员可以编辑组织的套餐。" + ], + "Allow recovering your account with a one-time code sent to your recovery email": [ + "允许通过发送到密保邮箱的一次性验证码恢复账户" + ], + "Allow recovering your account with a one-time code sent to your recovery phone": [ + "允许通过发送到密保手机的一次性验证码恢复账户" + ], + "Allow resetting your password from the account settings": [ + "允许从账户设置中重置密码" + ], + "Allow scanning a QR code from a ${ BRAND_NAME } mobile app to sign in": [ + "允许扫描 ${ BRAND_NAME } 移动应用中的二维码进行登录" + ], + "Allow trusted contacts to request access to your account": [ + "允许受信任的联系人请求访问您的账户" + ], + "Allow trusted contacts to unlock your encrypted data after a password reset": [ + "允许受信任的联系人在密码重置后解锁您的加密数据" ], "Allows to seamlessly add Zoom video conferencing links to your calendar invitations.": [ "允许您将 Zoom 视频会议链接无缝添加到日历邀请中" @@ -24500,7 +26193,7 @@ "根据系统设置自动调整日间或夜间模式。" ], "Click here to learn how to create a customized signature with HTML.": [ - "点击此处了解如何使用 HTML 创建个性化签名" + "点击此处了解如何使用 HTML 创建个性化落款。" ], "Copy and paste this URL into the ACS (Assertion Consumer Service) URL field of your identity provider": [ "将此 URL 复制并粘贴到身份供应商的 ACS(断言消费者服务)URL 字段中" @@ -24526,6 +26219,9 @@ "Each imported email will have this label": [ "每一封导入的邮件都会有这个标签" ], + "Early access to new apps and features.": [ + "抢先访问新应用和功能." + ], "Edit folder names": [ "更改文件夹名称" ], @@ -24574,6 +26270,12 @@ "If you purchased a gift code or received one from our support team, you can enter it here.": [ "若您已购买或从我们的客服团队处获得了礼品码,可以在此输入。" ], + "Includes custom email domains and unlimited hide-my-email aliases in ${ MAIL_APP_NAME }, access to servers in 120+ countries in ${ VPN_SHORT_APP_NAME }, built-in 2FA and secure sharing in ${ PASS_SHORT_APP_NAME }, and more.": [ + "包括 ${ MAIL_APP_NAME } 中的自定义邮箱域名和无限 Hide-my-email 别名、${ VPN_SHORT_APP_NAME } 中对 120 多个国家/地区服务器的访问权限、${ PASS_SHORT_APP_NAME } 中的内置 2FA 和安全共享等。" + ], + "Includes professional email at @yourdomain.com, cloud storage with collaborative document editing, scheduling and video conferencing, password management, a secure ${ VPN_SHORT_APP_NAME }, and more.": [ + "包含 @yourdomain.com 的专业邮箱、带有协作文档编辑功能的云存储、日程安排和视频会议、密码管理、安全的 ${ VPN_SHORT_APP_NAME } 等。" + ], "Members who do not use 2FA will get an email asking them to enable it as soon as possible. Single sign-on users will not receive the email reminder.": [ "未启用 2FA 的成员将收到一封电子邮件,要求他们尽快启用 2FA。单点登录 (SSO) 用户不会收到电子邮件提醒。" ], @@ -24595,6 +26297,15 @@ "Remove metadata from images to protect your privacy.": [ "删除图像中的元数据,保护您的隐私。" ], + "Save 12-word long phrase to unlock your account and your encrypted data instantly if you forgot your password": [ + "保存 12 个单词的短语,以便在忘记密码时立即解锁您的账户和加密数据" + ], + "Save an encryption backup file in this browser to recover your data after a password reset": [ + "在此浏览器中保存加密备份文件,以便在密码重置后恢复数据" + ], + "Save an encryption backup file to recover your data after a password reset": [ + "保存加密备份文件,以便在密码重置后恢复数据" + ], "See number of unread messages in the tab icon": [ "在标签页图标中即可看到未读邮件的数量" ], @@ -24667,8 +26378,8 @@ "This feature is only available on Beta": [ "此功能仅在 Beta 版中可用" ], - "This is the default key used by other ${ MAIL_APP_NAME } users on older mobile apps to encrypt data they send to you": [ - "这是其他 ${ MAIL_APP_NAME } 用户在旧版移动应用上用来加密发送给您的数据的默认密钥" + "This is the default key used by other ${ MAIL_APP_NAME } users on older apps to encrypt data they send to you": [ + "这是其他 ${ MAIL_APP_NAME } 用户在旧版应用中用于加密发送给您数据的默认密钥" ], "This is the default key used by other ${ MAIL_APP_NAME } users to encrypt data they send to you": [ "这是其他 ${ MAIL_APP_NAME } 用户用于加密发送给您数据的默认密钥" @@ -24756,6 +26467,9 @@ "User is a group": [ "用户是群组" ], + "via ${ groupName }": [ + "通过 ${ groupName }" + ], "Waiting for user to accept the invitation": [ "等待用户接受邀请" ] @@ -24926,7 +26640,7 @@ "手动启用" ], "If you ever lose access to your credentials, your organization’s administrators will be able to reset your password and restore access to your account.": [ - "如果您丢失了访问凭证,您所在组织的管理员将能够重置您的密码并恢复对您账户的访问。" + "如果您无法访问凭据,组织的管理员将能够重置您的密码并恢复账户的访问权限。" ], "Keep request": [ "保留申请" @@ -25077,6 +26791,12 @@ ] }, "user_modal": { + "(via ${ groupName })": [ + "(通过 ${ groupName })" + ], + "(via group)": [ + "(通过群组)" + ], "Add delegated roles to a user to grant them only the specific permissions they need, keeping full-admin power separate and your environment secure.": [ "为用户添加委派角色,仅授予他们所需的特定权限,从而将完全管理员权限分开并保护您的环境安全。" ], @@ -25328,7 +27048,7 @@ "您的 ${ a } 和 ${ b } 套装" ], "Your ${ selected } plan": [ - "您的 ${ selected } 计划" + "您的 ${ selected } 套餐" ] }, "vpn_2step: tooltip": { @@ -25448,11 +27168,14 @@ "${ BRAND_NAME } will transfer as much data as possible, starting with your most recent messages.": [ "${ BRAND_NAME } 将从最近的邮件开始导入尽可能多的数据。" ], - "Are you sure you want to delete the phone number?": [ - "确定要删除此号码吗?" + "Are you sure you want to remove your notification email?": [ + "确定要移除您的通知邮箱?" ], - "Are you sure you want to delete this address?": [ - "您确定要删除该地址吗?" + "Are you sure you want to remove your recovery email?": [ + "确定要移除您的密保邮箱?" + ], + "Are you sure you want to remove your recovery phone number?": [ + "确定要移除您的密保手机?" ], "By deleting this address, you will no longer be able to receive daily email notifications.": [ "删除此地址,您将无法收到每日邮件通知。" @@ -25463,8 +27186,8 @@ "By deleting this address, you will no longer be able to recover your account.": [ "删除此地址,您将无法恢复您的账户。" ], - "By deleting this phone number, you will no longer be able to recover your account.": [ - "删除此号码后,您将无法再重置账户密码。" + "By removing this phone number, you will no longer be able to recover your account.": [ + "移除此号码后,您将无法再找回您的账户。" ], "Could not login. Please open ${ PASS_APP_NAME } browser extension and login from there.": [ "登录失败!请打开 ${ PASS_APP_NAME } 浏览器扩展程序,并在其中登录。" diff --git a/applications/account/locales/zh_TW.json b/applications/account/locales/zh_TW.json index 8bc754b91aa..5c61fb5cceb 100644 --- a/applications/account/locales/zh_TW.json +++ b/applications/account/locales/zh_TW.json @@ -8,6 +8,9 @@ "Full view (see all event details)": [ "完整檢視(檢視所有事件的詳細資訊)" ], + "Limited view": [ + "限制檢視" + ], "Limited view (see only free/busy)": [ "有限制的檢視(僅檢視有空/忙碌)" ] @@ -76,6 +79,9 @@ "Add": [ "加入" ], + "Add ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }": [ + "添加 ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }" + ], "Add ${ BRAND_NAME } Account": [ "加入 ${ BRAND_NAME } 帳號" ], @@ -280,6 +286,9 @@ "Connect your ${ BRAND_NAME } Account": [ "連接您的${ BRAND_NAME }帳號" ], + "Connect your email": [ + "連接您的電子郵件" + ], "Connected": [ "已連線" ], @@ -304,6 +313,9 @@ "Continue with ${ nameToDisplay } ${ maybeEmailInBrackets }": [ "繼續使用 ${ nameToDisplay } ${ maybeEmailInBrackets }" ], + "Continue with Free": [ + "繼續使用免費方案" + ], "Continue with Google": [ "繼續以 Google 帳號登入" ], @@ -418,6 +430,9 @@ "Delete user": [ "刪除使用者" ], + "Delete without exporting": [ + "刪除且略過匯出" + ], "Delete your account": [ "刪除您的帳號" ], @@ -571,6 +586,9 @@ "Export": [ "匯出" ], + "Export key before deleting": [ + "刪除前匯出金鑰" + ], "Extend": [ "延展" ], @@ -832,6 +850,9 @@ "More options": [ "更多選項" ], + "More options for accounts": [ + "更多帳號選項" + ], "move emails to": [ "將電郵移動到" ], @@ -877,6 +898,9 @@ "Or": [ "或" ], + "Or remove forwarding address": [ + "或移除轉寄位址" + ], "Ordered list": [ "有序列表" ], @@ -913,6 +937,9 @@ "Reconnect": [ "重新連線" ], + "Reconnect to Gmail": [ + "重新連接 Gmail" + ], "Recover data": [ "恢復資料" ], @@ -1333,6 +1360,9 @@ "Use ${ PASS_APP_NAME } for Business": [ "將 ${ PASS_APP_NAME } 用於商務" ], + "Use ${ VPN_SHORT_APP_NAME } for data privacy": [ + "使用 ${ VPN_SHORT_APP_NAME } 為了資料隱私" + ], "Use a different card": [ "改用另一張卡" ], @@ -1450,6 +1480,9 @@ "${ domains } additional custom domain": [ "${ domains }額外自訂網域" ], + "${ ips } dedicated VPN server": [ + "${ ips } 專用伺服器" + ], "${ LUMO_APP_NAME } AI license": [ "${ LUMO_APP_NAME } AI 授權" ], @@ -1468,6 +1501,12 @@ "${ price } per user": [ "每使用者${ price }" ], + "${ quantity } custom domain": [ + "${ quantity } 個自訂網域" + ], + "${ seats } ${ LUMO_APP_NAME } AI license": [ + "${ seats } ${ LUMO_APP_NAME } AI 授權" + ], "${ seats } ${ LUMO_APP_NAME } seat": [ "${ seats } 個 ${ LUMO_APP_NAME } 授權席次" ], @@ -1568,6 +1607,17 @@ "管理員" ] }, + "Admin roles onboarding": { + "2 new admin roles": [ + "2 個新的管理員角色" + ], + "Delegate management for many users at once. Assign specific admin roles to groups for automatic permissions. This follows the principle of least privilege to save time on onboarding and offboarding while reducing errors.": [ + "一次管理多位使用者的委派權限。可將特定管理員角色指派給群組,以自動套用權限。這遵循最小權限原則,在節省帳號啟用與離職交接時間的同時,也能降低錯誤發生。" + ], + "New: Control admin access for many users at once": [ + "新訊息:一次控管多位使用者的管理員存取權限" + ] + }, "Alert": { "By leaving now, some contacts may not be imported": [ "若您現在離開,部份聯絡人或會無法匯入" @@ -1869,6 +1919,9 @@ "Access advanced AI models": [ "存取進階 AI 模型" ], + "All premium features of ${ MAIL_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME }, ${ DRIVE_SHORT_APP_NAME }, ${ VPN_SHORT_APP_NAME }, and ${ CALENDAR_SHORT_APP_NAME }": [ + "全部的頂級質子版服 ${ MAIL_SHORT_APP_NAME } 、 ${ PASS_SHORT_APP_NAME } 、 ${ DRIVE_SHORT_APP_NAME } 、 ${ VPN_SHORT_APP_NAME } 、 和 ${ CALENDAR_SHORT_APP_NAME }" + ], "Block ads, trackers, and malware": [ "攔截廣告、追蹤程式和惡意軟體" ], @@ -1878,6 +1931,9 @@ "Connect 10 devices at once": [ "同時連線 10 臺裝置" ], + "Individual accounts for 6 users": [ + "給 6 位使用者的個人帳戶" + ], "Unlimited daily chats": [ "無限每日聊天" ] @@ -2001,6 +2057,17 @@ "您的個人電子郵件地址是您數位身分的重要組成部分。就像您的電話號碼一樣,您不會將它給您遇到的每一個人。這就是為什麼擁有其他可用於不同目的之電子郵件地址會很有用。" ] }, + "BOSS": { + "Member address not found. Please contact customer support to resolve this": [ + "未發現成員的位址。請聯繫客戶支援服務以協助解決問題。" + ], + "Missing organization private key": [ + "缺少組織私有密鑰" + ], + "Missing organization public key": [ + "缺少組織公用密鑰" + ] + }, "Browser": { "${ MAIL_APP_NAME } Desktop application": [ "${ MAIL_APP_NAME }桌面應用程式" @@ -2297,9 +2364,18 @@ ] }, "Checkout row": { + "${ n } day": [ + "${ n } 天" + ], + "${ n } month": [ + "${ n } 月" + ], "${ users } user": [ "${ users } 位使用者" ], + "Subtotal": [ + "小計" + ], "Subtotal for ${ cycle } month": [ "${ cycle } 個月小計" ], @@ -2357,6 +2433,9 @@ "Unlimited daily chats": [ "無限每日聊天" ], + "Unlimited favorites for quick access": [ + "快速存取至無限最愛" + ], "Upload and query multiple large files": [ "上載及查詢多個大型檔案" ], @@ -2377,6 +2456,9 @@ "Add ${ LUMO_APP_NAME }": [ "新增 ${ LUMO_APP_NAME }" ], + "Advanced account and network security in one plan": [ + "進階帳號和網路安全於單一方案" + ], "High-speed chats and advanced AI features.": [ "高速聊天和先進的人工智慧功能。" ], @@ -3229,6 +3311,9 @@ "North Korea": [ "北韓" ], + "North Macedonia": [ + "北馬其頓" + ], "Northern Mariana Islands": [ "北馬利安納群島" ], @@ -3711,6 +3796,9 @@ "Automatically sort your incoming messages before they reach your inbox.": [ "在您的來信訊息到達收件匣前會自動排列" ], + "Available storage: ${ storageText }": [ + "可用儲存空間: ${ storageText }" + ], "Configure this first to activate your organization and customize your email address.": [ "設置此以先啟動您的組織和自訂您的電子郵件地址。" ], @@ -3729,6 +3817,9 @@ "Create policies to decide who can connect to shared servers in each country.": [ "創建政策以決定誰可連接至於各國的共享伺服器" ], + "Emails sent to ${ connectedAddressText } will now show up in ${ MAIL_APP_NAME }.": [ + "電子郵件傳送至 ${ connectedAddressText } 將顯示於 ${ MAIL_APP_NAME }。" + ], "Enable ${ PROTON_SENTINEL_NAME } to access these features": [ "啟用${ PROTON_SENTINEL_NAME }以存取此功能" ], @@ -3741,12 +3832,18 @@ "Encrypting and importing contacts... This may take a few minutes. When the process is completed, you can close this modal.": [ "正在加密並匯入聯絡人... 該過程或需時數分鐘。完成後您即可以關閉此往來對話方塊。" ], + "Enough room for years of emails, attachments and more.": [ + "足夠超過年的電子郵件、附件和更多" + ], "Ensure secure access to organization data, even if your team is remote or using public WiFi.": [ "確保安全存取組織資料,即使您的團隊是遠端工作或使用公共 WiFi。" ], "Ensure top-notch security for your account with the ${ PROTON_SENTINEL_NAME } program.": [ "透過 ${ PROTON_SENTINEL_NAME } 程式,確保您的帳號擁有頂級安全性。" ], + "Ensure you can still access your account and data even if you lose your ${ BRAND_NAME } password.": [ + "確保您仍可存取至您的帳號及資料就算您忘記您的 ${ BRAND_NAME } 密碼。" + ], "Everyone in your organization can connect to shared servers in all countries.": [ "於您的組織內任何人可連接至於全部國家共享伺服器" ], @@ -3756,6 +3853,9 @@ "Get up to ${ credits } in credits by inviting friends to ${ BRAND_NAME }.": [ "邀請好友至 ${ BRAND_NAME },賺取高達 ${ credits } 儲值。" ], + "Help your team securely store passwords to sensitive business and client information.": [ + "協助團隊安全地以密碼儲存商務機密和客戶資訊。" + ], "It looks like the contact list you are importing contains some groups. Please review how these groups should be imported.": [ "您正在匯入的聯絡人清單似乎包含一些群組,請查看並選擇應如何匯入這些群組。" ], @@ -3777,12 +3877,21 @@ "Simplify syncing and scheduling with shared calendars.": [ "透過共享行事曆以簡化同步和排程" ], + "This may happen if permissions were removed or your password changed.": [ + "此可能發生於權限被移除或您的密碼被變更。" + ], "To connect a different Gmail address, remove extra Gmail addresses forwarding to ${ BRAND_NAME }.": [ "若要連線至不同的 Gmail 位址、移除額外的 轉寄至 ${ BRAND_NAME } 的Gmail 位址。" ], "To connect up to ${ MAX_SYNC_PAID_USER } Gmail address, upgrade to ${ planName }.": [ "若連接至多 ${ MAX_SYNC_PAID_USER } Gmail 位址,升級至 ${ planName } 方案。" ], + "To continue receiving and sending Gmail messages in ${ BRAND_NAME }, please reconnect your account.": [ + "若要於 ${ BRAND_NAME } 要持續接收和傳送 Gmail 的訊息,請重新連接至您的帳號。" + ], + "To continue receiving and sending Gmail messages in ${ BRAND_NAME }, please reconnect your accounts.": [ + "若於 ${ BRAND_NAME } 要持續接收和傳送 Gmail 的訊息,請重新連接至您的帳號。" + ], "To import via a CSV and VCF file, ensure the file does not exceed ${ MAX_IMPORT_FILE_SIZE_STRING } or ${ maxContactString } contacts. If your file is bigger, please split it into smaller files. ${ learnMoreLink }.": [ "匯入 CSV 或 VCF 檔,請確保檔案大小不超過 ${ MAX_IMPORT_FILE_SIZE_STRING },或聯絡人數不超過 ${ maxContactString }。如果檔案超過此限制,請將其分成比較小的檔案。 ${ learnMoreLink }" ], @@ -3795,15 +3904,51 @@ "Track the status and activity of your referrals": [ "追蹤您推薦邀請的狀態和進度" ], + "Unlock 15 GB of storage for just ${ config.offerPrice }.": [ + "只要 ${ config.offerPrice } 解鎖 15 GB 的儲存空間" + ], + "Upgrade to ${ planName } to connect up to ${ MAX_SYNC_PAID_USER } accounts": [ + "升級至 ${ planName } 已連線到至多 ${ MAX_SYNC_PAID_USER } 個帳號" + ], "Upgrade to get ${ activatePmUser } for a shorter, easy-to-remember email address in addition to your current one.": [ "升級至${ activatePmUser }以取得更短更好記的電子郵件地址並增加於現有的。" ], + "Use this guide to get your organization promptly benefiting from ${ BRAND_NAME }'s industry-leading encryption and privacy ecosystem.": [ + "使用此指南以讓貴組織快速地受益於 ${ BRAND_NAME } 的業界領先加密和隱私生態系。" + ], + "We can't access ${ boldEmails } anymore.": [ + "我們無法再存取至 ${ boldEmails }" + ], + "We will pause imports at 80% storage to reserve space for new messages.": [ + "我們將暫停匯入於 80% 的儲存空間以為新訊息保留空間。" + ], + "We'll bring in your old emails and connect your Gmail to ${ MAIL_APP_NAME } so new messages appear automatically": [ + "我們將帶入您舊的電子郵件便連線您的 Gmail 至 ${ MAIL_APP_NAME } 已讓新訊息自動顯示。" + ], + "We've started importing your emails from Gmail. We'll let you know when it's done.": [ + "我們已匯入來自於 Gmail 的電子郵件。完成時我們將讓您知道。" + ], + "You already have a Gmail address forwarding to ${ MAIL_APP_NAME }. Connect it below to send and receive emails directly from ${ MAIL_APP_NAME }.": [ + "您已有個 Gmail 位址轉寄至 ${ MAIL_APP_NAME }。於下方連接至它以直接於 ${ MAIL_APP_NAME } 傳送和接收電子郵件。" + ], "You can import events in iCal format (ICS file). The file should have a maximum size of ${ MAX_IMPORT_FILE_SIZE_STRING } and have up to ${ MAX_IMPORT_EVENTS_STRING } events. If your file is bigger, please split it into smaller files.": [ "您可以使用 iCal 格式 (ICS 檔案) 匯入事件。檔案大小上限為 ${ MAX_IMPORT_FILE_SIZE_STRING },上限為 ${ MAX_IMPORT_EVENTS_STRING } 個事件。若您的檔案超出此限,請將其分割為較小的檔案。" ], + "You can now send emails from ${ BRAND_NAME } using this address.": [ + "您可透過 ${ BRAND_NAME } 用此位址傳送電子郵件。" + ], "You're forwarding ${ numAddressesOrSync } Gmail address to ${ MAIL_APP_NAME }.": [ "您正在轉寄 ${ numAddressesOrSync } Gmail 位址至 ${ MAIL_APP_NAME }," ], + "You've connected ${ MAX_SYNC_PAID_USER } Gmail address. To add another, first disable one of your connected accounts.": [ + "您將連線至 ${ MAX_SYNC_PAID_USER } Gmail 位址。若要添加另一個,請先停用您連線的帳號。" + ], + "You've connected one external account address to ${ MAIL_APP_NAME }.": [ + "您已連線一個外部帳號位址至 ${ MAIL_APP_NAME }。" + ], + "Your free ${ MAIL_APP_NAME } account comes with limited storage so we'll only import your most recent Gmail emails.": [ + "您免費的 ${ MAIL_APP_NAME } 帳號儲存空間有限所以我們將只匯入您最新的 Gmail 電子郵。" + ], "Your plan supports ${ MAX_SYNC_FREE_USER } Gmail address.": [ "您的帳號支援 ${ MAX_SYNC_FREE_USER } Gmail 位址。" ], @@ -4109,6 +4254,9 @@ ] }, "Duo offer: Title": { + "Get 4x more storage with ${ BRAND_NAME } Duo": [ + "透過 ${ BRAND_NAME } Duo 取得 4x 儲存空間" + ], "Share your plan benefits with ${ BRAND_NAME } Duo": [ "使用 ${ BRAND_NAME } Duo 分享您的方案權益" ] @@ -4341,9 +4489,6 @@ "Less than a minute left": [ "剩不到一分鐘" ], - "None": [ - "無" - ], "Time required before automatically giving you access": [ "自動授予您存取權限前所需的時間" ], @@ -4390,6 +4535,12 @@ "Add at least one condition": [ "添加至少一個條件" ], + "Address could not be added.": [ + "位址無法被添加。" + ], + "Address is already added to your account": [ + "位址已添加至您的帳號" + ], "Address primary private key not found": [ "找不到電子郵件位址主要私密金鑰" ], @@ -4420,6 +4571,9 @@ "Checkout expired, please try again": [ "結帳已逾時,請重試" ], + "Company name or personal name is required": [ + "公司名稱或個人名稱是需要的" + ], "Condition incomplete": [ "條件不完整" ], @@ -4534,6 +4688,9 @@ "Incorrect password": [ "密碼錯誤" ], + "Incorrect recovery code. Please try again.": [ + "復原代碼不正確,請重試。" + ], "Incorrect second password. Please try again.": [ "第二密碼錯誤。請重新再試。" ], @@ -4714,9 +4871,6 @@ "Please try again in a few moments.": [ "請稍候再試." ], - "Please upgrade to a business plan with more than 1 user to get multi-user support": [ - "請升級至選用多於 1 位使用者的企業方案,以便享用多使用者支援" - ], "Please upgrade to a business plan with more than 1 user to manage multiple users.": [ "請升級至選用多於 1 位使用者的企業方案,以便管理多位使用者。" ], @@ -5496,6 +5650,12 @@ "${ MaxVPN } VPN connection": [ "${ MaxVPN } 個 VPN 連線" ], + "10+ premium features": [ + "10 + 頂級質子版功能" + ], + "3 email domains": [ + "3 個電子郵件網域" + ], "Access to all countries": [ "所有國家任選" ], @@ -5511,6 +5671,12 @@ "Continue": [ "下一步" ], + "Custom email domain": [ + "自訂電子郵件網域" + ], + "Email addresses": [ + "電子郵件地址" + ], "Encrypted cloud storage for files, photos and documents": [ "給予檔案、照片和文件的加密雲端儲存" ], @@ -5529,6 +5695,9 @@ "Secure streaming support": [ "安全串流支援" ], + "Storage": [ + "儲存空間" + ], "Torrenting support (P2P)": [ "Torrenting 支援 (P2P)" ], @@ -5571,6 +5740,9 @@ ] }, "fido2: Error": { + "Something went wrong authenticating with your security key. Please try again.": [ + "使用您的安全金鑰進行身份驗證時出現問題。請再試一次。" + ], "Something went wrong registering your security key. Please try again.": [ "註冊您的安全金鑰時出現問題。請再試一次。" ] @@ -5591,6 +5763,9 @@ "Are you sure you want to delete security key ${ name }?": [ "您確定要永久刪除此安全性金鑰 ${ name } 嗎?" ], + "Insert a security key linked to your ${ BRAND_NAME } Account.": [ + "插入連結到您 ${ BRAND_NAME } 帳號的安全金鑰。" + ], "Insert your security key into your device's USB port.": [ "將安全金鑰插入您的 USB 連接孔。" ], @@ -6531,6 +6706,9 @@ "${ MAIL_APP_NAME } can also be used with a single password which replaces both the login and second password. To switch to single password mode, enter the single password you would like to use and click Save.": [ "${ MAIL_APP_NAME } 也可使用單一密碼取代登入密碼和第二個密碼。如要切換為單一密碼模式,請輸入您想使用的單一密碼,然後按一下「儲存」。" ], + "${ MEET_APP_NAME } is an end-to-end encrypted video conferencing solution. Add it to your plan to host secure meetings.": [ + "${ MEET_APP_NAME } 是端對端加密視訊會議的解決方案。添加至您的方案以主持安全會議。" + ], "${ MEET_APP_NAME } seats": [ "${ MEET_APP_NAME } 個席次" ], @@ -6564,6 +6742,9 @@ "${ plan.Title } requires at least 1 dedicated server ${ serverPricePerMonth }": [ "${ plan.Title }要求至少1個獨立伺服器${ serverPricePerMonth }" ], + "${ planName } expires in ${ daysLeft } day.": [ + "${ planName } 過其於 ${ daysLeft } 天。" + ], "${ PROTON_SENTINEL_NAME } is an advanced account protection program powered by sophisticated AI systems and specialists working around the clock to protect you from bad actors and security threats.": [ "${ PROTON_SENTINEL_NAME } 是一種高級帳戶保護程序,由最新的 AI 系統和全天候工作的專家提供協助,以保護您免受不良行為者與安全威脅的侵害。" ], @@ -6591,6 +6772,9 @@ "${ remainingAddresses.length } more address": [ "${ remainingAddresses.length }更多的電子郵件位址" ], + "${ resultsCount } result found": [ + "${ resultsCount } 筆結果" + ], "${ selectedCalendarsTotal } of ${ providerCalendars.length } calendar": [ "${ selectedCalendarsTotal } 個,共 ${ providerCalendars.length } 個行事曆" ], @@ -6606,6 +6790,9 @@ "${ storage } storage": [ "${ storage } 儲存空間" ], + "${ total } user found": [ + "找到 ${ total } 位使用者" + ], "${ vaultLink } created": [ "${ vaultLink } 已創建" ], @@ -6618,6 +6805,9 @@ "${ vaultLink } updated": [ "${ vaultLink } 已更新" ], + "${ VPN_SHORT_APP_NAME } hides your traffic. ${ PASS_SHORT_APP_NAME } hides your identity\n— unlimited **hide-my-email aliases** and **dark-web alerts** if your data is ever leaked.": [ + "${ VPN_SHORT_APP_NAME } 隱藏您的流量。 ${ PASS_SHORT_APP_NAME } 隱藏您的身份 - 無限 ** Hide-my-email 別名 ** 和 ** 暗網警告 ** 若您的資料外洩。" + ], "${ vpnPlus } required for Country level connection.": [ "國家等級的連線需要 ${ vpnPlus } 。" ], @@ -6723,6 +6913,9 @@ "active": [ "啟用" ], + "Add ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }": [ + "添加 ${ BRAND_NAME } ${ PASS_SHORT_APP_NAME }" + ], "Add ${ PLAN_NAMES[PLANS.MEET_BUSINESS] }": [ "新增 ${ PLAN_NAMES[PLANS.MEET_BUSINESS] }" ], @@ -6747,9 +6940,6 @@ "Add your name and logo to create a more personalized experience for your organization.": [ "添加您的名稱及標誌以替貴組織創建更個人化的體驗。" ], - "Adding ${ addedServerCount } gateway server": [ - "正在新增 ${ addedServerCount } 台閘道伺服器" - ], "Adding an external email address will disable end-to-end encryption for all email communication within that group. Do you want to proceed?": [ "添加外部電子郵件地址將關閉於該群組的電子郵件端對端加密。確認要繼續嗎?" ], @@ -6960,12 +7150,12 @@ "Change your password": [ "變更您的密碼" ], - "Check the status of imports and forwarding.": [ - "查看匯入和轉寄的狀況。" - ], "Choose a plan that works best for you.": [ "選擇最適合於您的方案。" ], + "Choose your service to connect with": [ + "選擇您的服務以連線" + ], "Click \"Request new code\" to have a new verification code sent to ${ strong }. If this phone number is incorrect, click \"Edit\" to correct it.": [ "按一下「重新傳送驗證碼」向 ${ strong } 傳送新的驗證碼。如此手機號碼不正確,請按一下「編輯」作出修正。" ], @@ -7020,8 +7210,8 @@ "Create a label for the imported messages, a time range for this import, and the labels you would like to import.": [ "為匯入的郵件創建標籤、設定這次匯入的時間範圍以及要匯入的標籤。" ], - "Create a secure cloud for ${ value } member": [ - "替成員創建一個安全${ value }雲端" + "Create a secure cloud for ${ memberCount } member": [ + "替成員創建一個安全 ${ memberCount } 雲端" ], "Create an account": [ "創建帳戶" @@ -7185,6 +7375,9 @@ "Drop to import": [ "拖放以匯入" ], + "Each code can only be used once": [ + "每個代碼都只能使用一次" + ], "Each domain can only have one SPF (TXT) record. If you want to keep the existing SPF (TXT) record, you can add ${ spf } to your current record (put it after ${ spfValue }).": [ "每個網域僅能有一項SPF (TXT)紀錄。若您想要保留目前的設置,您可以將 ${ spf } 添加到目前記錄 (${ spfValue }) 的後面。" ], @@ -7308,6 +7501,9 @@ "Everything in ${ planOrAppName }": [ "全部都在 ${ planOrAppName }" ], + "Everything in ${ planOrAppName }, plus:": [ + "全部於 ${ planOrAppName } 方案,附加:" + ], "Example: ${ spfExample }": [ "範例: ${ spfExample }" ], @@ -7329,6 +7525,9 @@ "finance": [ "金融" ], + "for ${ price }": [ + "為 ${ price }" + ], "For anytime access to email and an optimized mobile experience, download our ${ androidAppLink } or ${ iosAppLink }.": [ "隨時隨地使用電子郵件與最佳化的行動裝置體驗,請下載我們的${ androidAppLink }或${ iosAppLink }。" ], @@ -7338,6 +7537,9 @@ "For easy access to your passwords and more.": [ "容易存取密碼及更多。" ], + "For just ${ bundlePlanPriceInline }": [ + "只要 ${ bundlePlanPriceInline }" + ], "Free forever": [ "永遠免費" ], @@ -7497,6 +7699,9 @@ "inactive": [ "未使用" ], + "Included": [ + "包含" + ], "Increase your account security by verifying your email address.": [ "透過驗證您的電子郵件位址來增加您帳號的安全性。" ], @@ -7767,6 +7972,9 @@ "New": [ "加入" ], + "New activity data will stop being collected and shown.": [ + "新活動資料將不再被收集及顯示。" + ], "New user invited to organization": [ "新使用者已邀請至組織" ], @@ -8025,6 +8233,9 @@ "Recently used servers:": [ "最近使用的伺服器:" ], + "RECOMMENDED": [ + "推薦" + ], "Recommended on trusted devices. ${ keepMeSignedInLearnMoreLink }": [ "建議僅用於受信任的裝置。 ${ keepMeSignedInLearnMoreLink }" ], @@ -8277,6 +8488,9 @@ "Sync and manage files with the ${ DRIVE_APP_NAME } app. Create and share documents in ${ DOCS_APP_NAME }, and securely store them. All on ${ ios }, ${ android } and ${ desktop }.": [ "使用${ DRIVE_APP_NAME }應用程式同步和管理檔案。於${ DOCS_APP_NAME }創建和共享文件,並安全存放。全部於${ ios },${ android }和${ desktop }。" ], + "Temporarily unavailable due to high demand. Please try again later.": [ + "因為過量請求暫時不可用。請稍後在試。" + ], "Temporarily unavailable. Please check back later.": [ "暫時無法使用,請稍後再試。" ], @@ -8580,6 +8794,9 @@ "Upgrade now to get premium features, products and storage at a special price": [ "立即以優惠價升級就可以擁有進階功能、產品與儲存空間。" ], + "Upgrade or clear space anytime to bring over the rest": [ + "隨時升級或清理空間以帶入更多" + ], "Upgrade to keep your ${ planTitle } benefits.": [ "升級以保留您的 ${ planTitle } 權益。" ], @@ -9540,6 +9757,9 @@ "Account storage": [ "帳號儲存空間" ], + "Action": [ + "操作" + ], "Actions": [ "動作" ], @@ -9552,6 +9772,9 @@ "Add all organization members": [ "添加全部組織成員" ], + "Additional comments": [ + "附加備註" + ], "Address": [ "電郵位址" ], @@ -9780,6 +10003,9 @@ "Contacts": [ "聯絡人" ], + "Continue cancelling": [ + "持續取消" + ], "Conversation grouping": [ "往來對話群組" ], @@ -9813,6 +10039,9 @@ "Current email": [ "目前的電子郵件" ], + "Custom email domain": [ + "自訂電子郵件網域" + ], "Date": [ "日期" ], @@ -9909,6 +10138,9 @@ "Enabled": [ "啟用" ], + "End time": [ + "結束時間" + ], "Enter password": [ "請輸入密碼" ], @@ -10251,6 +10483,9 @@ "Pending": [ "擱置中" ], + "Personal and work emails, plus important updates and notifications": [ + "個人和工作電子郵件,和重要更新及通知" + ], "Phone number": [ "手機號碼" ], @@ -10359,6 +10594,9 @@ "Second password": [ "第二密碼" ], + "Select which Gmail address to connect": [ + "選取 Gmail 位址以連線" + ], "Send auto-reply": [ "發送自動回覆" ], @@ -10398,6 +10636,9 @@ "Skip feedback": [ "略過意見回饋" ], + "SMTP token": [ + "SMTP 權杖" + ], "Social": [ "社群網路" ], @@ -10467,6 +10708,9 @@ "To: ${ toEmail }": [ "收件者:${ toEmail }" ], + "today": [ + "今天" + ], "Transactions": [ "交易記錄" ], @@ -10597,6 +10841,11 @@ "收件者" ] }, + "Label BYOE": { + "${ byoeAddressesAvailableCount } of ${ maxBYOEAddresses } email address available": [ + "${ maxBYOEAddresses } 中的 ${ byoeAddressesAvailableCount } 電子郵件地址可用" + ] + }, "Label for adding a new custom domain": { "Add a domain that you own to your ${ MAIL_APP_NAME } account.": [ "將您擁有的網域加入到您的 ${ MAIL_APP_NAME } 帳號。" @@ -10726,6 +10975,9 @@ "Encryption and keys": [ "加密與金鑰" ], + "Enforcing 2FA for organizations": [ + "強制貴組織雙重驗證" + ], "Forgot email?": [ "忘了電子信箱?" ], @@ -11090,6 +11342,9 @@ ] }, "meet_2025: Addon": { + "${ MEET_APP_NAME } license": [ + "${ MEET_APP_NAME } 授權" + ], "${ MEET_APP_NAME } seats": [ "${ MEET_APP_NAME } 個席次" ], @@ -11153,6 +11408,9 @@ ], "Secure calendar": [ "安全行事曆" + ], + "You can have up to ${ TRIAL_MAX_MEET_SEATS } ${ MEET_SHORT_APP_NAME } seats during the trial period.": [ + "您可在試用期內盡情享有多 ${ TRIAL_MAX_MEET_SEATS } ${ MEET_SHORT_APP_NAME } 席位。" ] }, "Member action": { @@ -11614,6 +11872,9 @@ "99.95% SLA": [ "99.95% 服務層級協議" ], + "Access all countries": [ + "存取所有國家" + ], "Ad-blocker and malware protection": [ "廣告攔截器及惡意軟體防護" ], @@ -11707,6 +11968,9 @@ "Dedicated servers and IP": [ "獨立的伺服器及 IP" ], + "Dedicated servers optimized for speed": [ + "針對速度的獨立伺服器" + ], "Desktop app": [ "桌面應用程式" ], @@ -11941,6 +12205,9 @@ "Unlimited volume/bandwidth": [ "無限流量/頻寬" ], + "Unlock streaming": [ + "解鎖串流" + ], "Up to ${ n } user": [ "多達 ${ n } 位使用者" ], @@ -12048,6 +12315,9 @@ "Our ${ visionary } plan is no longer available to new subscribers as it is a special plan for original ${ BRAND_NAME } users with special features and benefits.": [ "我們的 ${ visionary } 方案不再可用於新的訂閱者,這是一個給予原 ${ BRAND_NAME } 使用者的特殊方案,具有特別功能與福利。" ], + "Pay once, secure your passwords and identity forever.": [ + "一次性付款,永久保護您的密碼和身分。" + ], "Popular": [ "熱門" ], @@ -12383,6 +12653,9 @@ ] }, "new_plans: Upsell attribute": { + "${ n } country": [ + "${ n } 個國家" + ], "Access advanced VPN features": [ "存取進階 VPN 功能" ], @@ -12442,9 +12715,6 @@ "${ app } product updates": [ "${ app } 產品更新" ], - "${ BRAND_NAME } for Business newsletter": [ - "${ BRAND_NAME } 商業通訊" - ], "${ BRAND_NAME } important announcements": [ "${ BRAND_NAME } 重要通知" ], @@ -12481,9 +12751,6 @@ "Daily email notifications": [ "每日電子郵件通知" ], - "Email subscriptions": [ - "電子報訂閱" - ], "Participate in surveys to improve ${ BRAND_NAME } services": [ "參與調查以改進 ${ BRAND_NAME } 服務" ] @@ -12557,6 +12824,9 @@ ], "Two-factor authentication is not required anymore": [ "雙重身份驗證已無需繼續使用" + ], + "Your ${ BRAND_NAME } address is ready to use": [ + "您的 ${ BRAND_NAME } 位址已就緒" ] }, "Notification for duplicate filenames in the current upload": { @@ -12728,6 +12998,9 @@ "Advanced threat protection": [ "進階的威脅保護" ], + "Collaborate with non-${ BRAND_NAME } users": [ + "與非 ${ BRAND_NAME } 使用者合作" + ], "Custom email domain": [ "自訂電子郵件網域名稱電郵網域名稱" ], @@ -12808,6 +13081,9 @@ ], "Your free trial has started": [ "您的免費試用已開始" + ], + "Your full ${ planTitle } subscription starts on ${ boldEndDate }.": [ + "您全部 ${ planTitle } 訂閱開始於 ${ boldEndDate }。" ] }, "Option": { @@ -12874,6 +13150,9 @@ "Organization only": [ "僅限組織機構" ], + "Permanent": [ + "永久" + ], "Receive from all": [ "從全部接收" ], @@ -13232,15 +13511,9 @@ "per month, billed every two years": [ "每月,每兩年收費" ], - "Preparing your Recovery Kit": [ - "準備復原包" - ], "Protected by Swiss privacy laws": [ "由瑞士隱私權相關法律保障" ], - "Save your recovery kit to continue": [ - "儲存您的復原包並繼續" - ], "Secure vault sharing": [ "安全分享保管庫" ], @@ -13473,6 +13746,9 @@ "During this time, you will not be able to modify or cancel your subscription. Please wait until your payment is completed before attempting any changes. Thank you for your patience.": [ "目前您將暫時無法修改或取消您的訂購授權。請等待付款完成後,再進行修改。感謝您耐心等候。" ], + "Edit billing address": [ + "編輯帳單地址" + ], "Got it": [ "瞭解" ], @@ -13485,6 +13761,9 @@ "Including ${ rate }% tax: ${ taxAmountElement }": [ "包含 ${ rate }% 稅金${ taxAmountElement }" ], + "Including ${ rate }% taxes": [ + "包含 ${ rate }% 稅金" + ], "Including ${ rate }% taxes: ${ taxAmountElement }": [ "包含 ${ rate }% 稅金:${ taxAmountElement }" ], @@ -13635,8 +13914,14 @@ "Renewal price is dependent on the billing region and ABN.": [ "續訂價格取決於計費區域和 EIN。" ], + "Renewal price is dependent on the billing region and Business Number.": [ + "續訂價格取決於計費區域和商務號碼。" + ], "Renewal price is dependent on the billing region and EIN.": [ "續訂價格取決於計費區域和 EIN。" + ], + "Renewal price is dependent on the billing region and VAT number.": [ + "續訂價格取決於計費區域和 VAT 號碼。" ] }, "Payments.Saved payment method details": { @@ -13764,6 +14049,9 @@ "End date": [ "終止日" ], + "Enter a name": [ + "輸入名稱" + ], "example@domain.com": [ "example@domain.com" ], @@ -13830,6 +14118,9 @@ "Select": [ "選取" ], + "Select a provider": [ + "選擇一個供應商" + ], "Select a reason": [ "選取理由" ], @@ -13878,6 +14169,9 @@ ] }, "Plan description": { + "All premium features from ${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME }, ${ CALENDAR_SHORT_APP_NAME }, ${ DRIVE_SHORT_APP_NAME }, ${ VPN_SHORT_APP_NAME }, and ${ PASS_SHORT_APP_NAME }.": [ + "您的頂級質子版服務源自於 ${ BRAND_NAME } 、 ${ MAIL_SHORT_APP_NAME } 、 ${ CALENDAR_SHORT_APP_NAME } 、 ${ DRIVE_SHORT_APP_NAME } 、 ${ VPN_SHORT_APP_NAME } 和 ${ PASS_SHORT_APP_NAME }。" + ], "All premium features from ${ BRAND_NAME } ${ MAIL_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME }, ${ VPN_SHORT_APP_NAME }, ${ DRIVE_SHORT_APP_NAME }, and ${ CALENDAR_SHORT_APP_NAME }": [ "您的頂級質子版服務源自於 ${ BRAND_NAME } 、 ${ MAIL_SHORT_APP_NAME } 、 ${ PASS_SHORT_APP_NAME } 、 ${ VPN_SHORT_APP_NAME } 、 ${ DRIVE_SHORT_APP_NAME } 和 ${ CALENDAR_SHORT_APP_NAME }" ], @@ -13897,13 +14191,24 @@ ] }, "plus_block": { + "As a **${ currentPlanTitle }** subscriber, you can unlock **${ unlockPlanTitle }** and more ${ BRAND_NAME } services by upgrading to **${ upsellPlanTitle }**.": [ + "身為一位 **${ currentPlanTitle }** 訂閱者,您可透過升級至 **${ upsellPlanTitle }** 方案以解鎖 **${ unlockPlanTitle }** 和更多 ${ BRAND_NAME } 服務。" + ], "More ${ BRAND_NAME } services.${ br }One easy subscription.": [ "更多 ${ BRAND_NAME } 服務。${ br } 一個簡單的訂購授權。" ], + "Stay on ${ currentPlanTitle }": [ + "保持 ${ currentPlanTitle } 方案" + ], "Upgrade to ${ upsellPlanTitle }": [ "升級至${ upsellPlanTitle }" ] }, + "PQC compatibility warning": { + "**You must update all ${ BRAND_NAME } apps**: your new keys won't work on older app versions.": [ + "**您必須更新所有的 ${ BRAND_NAME } apps**: 您的全新金鑰是無法使用在舊版的應用程式。" + ] + }, "Property type": { "Address": [ "位址" @@ -13954,6 +14259,9 @@ "Gmail": [ "Gmail" ], + "Google Workspace": [ + "Google Workspace" + ], "Microsoft 365": [ "Microsoft 365" ], @@ -14143,11 +14451,6 @@ "顯示" ] }, - "RecoveryPhrase: Title": { - "Save your Recovery Kit": [ - "儲存復原包" - ] - }, "Referral": { "${ referrerRewardAmount } per referral": [ "每個推薦 ${ referrerRewardAmount }" @@ -14171,6 +14474,11 @@ "您將取得至多 **${ maxRewardAmount }** 額度。" ] }, + "Remove calendar section description": { + "By unsubscribing, you will no longer have access to this calendar. All events in this calendar will be deleted from your account, but they'll remain in the original public link.": [ + "取消訂購授權後,您將無法再存取這個行事曆。此行事曆中的所有事件都將從您的帳號中刪除,但是仍然會保留在原始的公開連結中。" + ] + }, "Restore administrator panel": { "${ n } administrator in your organization need access to the organization key.": [ "貴組織中的 ${ n } 個管理員需要存取組織金鑰。" @@ -14310,9 +14618,6 @@ "Download ${ size }": [ "下載 ${ size }" ], - "Download your Recovery Kit": [ - "下載復原包" - ], "Email address": [ "電子郵件地址" ], @@ -14361,12 +14666,6 @@ "There was an error verifying your recovery phone": [ "驗證復原手機時出了一些錯誤" ], - "Update your Recovery Kit": [ - "更新復原包" - ], - "Update your Recovery Kit?": [ - "更新復原包?" - ], "Verify": [ "驗證" ], @@ -14403,9 +14702,6 @@ "Your recovery email is set": [ "你的復原電子郵件已設置" ], - "Your Recovery Kit": [ - "你的復原包" - ], "Your recovery methods": [ "您的復原方法" ], @@ -14419,6 +14715,11 @@ "您的復原電話號碼:" ] }, + "safety_review": { + "Download recovery file": [ + "下載帳號復原檔案" + ] + }, "saml: Action": { "Cancel": [ "取消" @@ -14910,6 +15211,12 @@ ] }, "Signup": { + "${ FREE_PASS_ALIASES } hide-my-email alias": [ + "${ FREE_PASS_ALIASES } hide-my-email 組別名" + ], + "${ FREE_PASS_ALIASES } hide-my-email alias to fight spam": [ + "${ FREE_PASS_ALIASES } Hide-my-email 別名以對抗垃圾郵件" + ], "${ FREE_PASS_ALIASES } hide-my-email aliases to fight spam": [ "用於對抗垃圾郵件的 ${ FREE_PASS_ALIASES } 個 hide-my-email 別名" ], @@ -14919,6 +15226,9 @@ "${ maxAddresses } email address": [ "${ maxAddresses }個電郵位址" ], + "${ maxAddresses } extra email address for you": [ + "給您的 ${ maxAddresses } 組額外電子郵件地址" + ], "${ maxCalendars } calendar": [ "${ maxCalendars }個行事曆" ], @@ -15362,12 +15672,18 @@ "Access content on streaming services worldwide": [ "存取全球影音串流服務內容" ], + "Get 500 GB to securely store all your files and photos": [ + "取得 500 GB 以安全地儲存您的檔案和照片" + ], "Get access to ultrafast VPN servers in 110+ countries": [ "取得存取在110 多個國家提供極速 VPN 伺服器" ], "Get one plan that includes it all, get ${ BRAND_NAME } Unlimited": [ "取得包含全部的單一方案,取得 ${ BRAND_NAME } Unlimited" ], + "Keep your passwords safe and organized in multiple vaults": [ + "保持您的密碼安全和整齊於多個保管庫" + ], "Protect your account from threats with Sentinel": [ "使用 Sentinel 保護您的帳戶免受威脅" ], @@ -15398,6 +15714,14 @@ "使用加密的雲端存儲保護您的檔案。包含自動同步、加密檔案分享等。" ] }, + "Spotlight": { + "Click a user's name to manage their role and permissions.": [ + "點擊使用者的名稱,以進行管理他們的角色與權限。" + ], + "User roles available": [ + "是用的使用者角色" + ] + }, "sso": { "${ boldedMemberAddress } is requesting your help to sign in to their ${ BRAND_NAME } Account with single sign-on.": [ "${ boldedMemberAddress }使用者要求您協助透過單一登入登入至它們的${ BRAND_NAME }帳號。" @@ -15644,6 +15968,11 @@ "正將您的訂購授權取消,請稍候" ] }, + "Status": { + "${ count } person": [ + "${ count } 人" + ] + }, "Step in filter modal": { "Actions": [ "動作" @@ -15885,6 +16214,9 @@ ] }, "Subscription reminder": { + "${ CALENDAR_APP_NAME }, ${ DRIVE_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME }, ${ VPN_SHORT_APP_NAME }, ${ MEET_SHORT_APP_NAME }, and ${ LUMO_APP_NAME } with premium features": [ + "${ CALENDAR_APP_NAME } 、 ${ DRIVE_SHORT_APP_NAME } 、${ PASS_SHORT_APP_NAME } 、 ${ VPN_SHORT_APP_NAME } 、 ${ MEET_SHORT_APP_NAME } 、和 ${ LUMO_APP_NAME } 與頂級質子版功能" + ], "${ CALENDAR_APP_NAME }, ${ DRIVE_SHORT_APP_NAME }, ${ PASS_SHORT_APP_NAME }, and ${ VPN_SHORT_APP_NAME } with premium features": [ "擁有頂級質子版功能的${ CALENDAR_APP_NAME },${ DRIVE_SHORT_APP_NAME },${ PASS_SHORT_APP_NAME }和${ VPN_SHORT_APP_NAME }" ], @@ -16119,6 +16451,9 @@ "Version history": [ "版本歷史紀錄" ], + "Video meetings, up to ${ PAID_PREMIUM_MAX_PARTICIPANTS } participant": [ + "視訊會議,至多 ${ PAID_PREMIUM_MAX_PARTICIPANTS } 位參與者" + ], "Watch the interview": [ "瀏覽訪談" ], @@ -16844,6 +17179,9 @@ "Block trackers and malware": [ "遮蔽追蹤器和其他惡意軟體" ], + "Bring your Gmail into ${ MAIL_APP_NAME }": [ + "帶入您的 Gmail 至 ${ MAIL_APP_NAME }" + ], "Cancel ${ MAIL_SHORT_APP_NAME } subscription": [ "取消 ${ MAIL_SHORT_APP_NAME } 訂購授權" ], @@ -16901,18 +17239,12 @@ "Confirm": [ "確認" ], - "Confirm address": [ - "確認電郵位址" - ], "Confirm downgrade": [ "確認降級" ], "Confirm loss of ${ BRAND_NAME } bonuses": [ "確認失去 ${ BRAND_NAME } 獎勵" ], - "Confirm phone number": [ - "確認手機號碼" - ], "Connect ${ name }": [ "連接 ${ name }" ], @@ -16937,6 +17269,9 @@ "Contact us": [ "聯絡我們" ], + "Continue with free storage": [ + "繼續使用免費儲存空間" + ], "Continue with partial import?": [ "要繼續部分匯入嗎?" ], @@ -17237,6 +17572,9 @@ "Failed to create ${ failedUsers.length } user\naccount.": [ "無法創建 ${ failedUsers.length } 位使用者帳號。" ], + "Fewer distractions, more focus": [ + "減少干擾,更專注" + ], "Filter for more focus": [ "要專注的檔案" ], @@ -17309,6 +17647,9 @@ "Get more from your VPN": [ "從您的VPN取得更多" ], + "Get more storage with ${ MAIL_APP_NAME } Plus": [ + "透過 ${ MAIL_APP_NAME } 取得更多儲存空間" + ], "Get the apps": [ "取得應用程式" ], @@ -17549,9 +17890,6 @@ "Phone": [ "電話" ], - "Photos": [ - "相片" - ], "Pin the extension": [ "定置擴充功能" ], @@ -17702,6 +18040,9 @@ "Select when you want this notification to be sent": [ "請選擇您想此通知何時傳送" ], + "Send and receive Gmail using ${ MAIL_APP_NAME }": [ + "透過 ${ MAIL_APP_NAME } 傳送和計送 Gmail" + ], "Send email reminders?": [ "傳送電郵提醒?" ], @@ -17792,6 +18133,9 @@ "Snooze:": [ "延後:" ], + "Something went wrong": [ + "發生錯誤" + ], "Sort folders alphabetically": [ "按英文字母排序資料夾" ], @@ -17900,6 +18244,9 @@ "Upgrade your privacy": [ "升級您的隱私" ], + "Upgrade your storage for ${ formattedPrice } with ${ planName }": [ + "以 ${ planName } 的 ${ formattedPrice } 方案升級您的儲存空間" + ], "Upload and share files": [ "上傳並共享檔案" ], @@ -17909,6 +18256,9 @@ "Upload your organization’s logo": [ "上傳您的組織標誌圖片檔案" ], + "Use ${ VPN_SHORT_APP_NAME } for data privacy": [ + "使用 ${ VPN_SHORT_APP_NAME } 為了資料隱私" + ], "User": [ "使用者" ], @@ -17966,6 +18316,9 @@ "WireGuard configuration": [ "WireGuard 組態" ], + "You are all set": [ + "你已就緒" + ], "You can now create unlimited folders and labels": [ "您現在可創建無上限標籤和資料夾" ], @@ -18642,12 +18995,6 @@ "${ BRAND_NAME } will transfer as much data as possible, starting with your most recent messages.": [ "${ BRAND_NAME } 會從最近期的郵件開始,以最大量方式傳輸資料。" ], - "Are you sure you want to delete the phone number?": [ - "您確定要刪除此手機號碼嗎?" - ], - "Are you sure you want to delete this address?": [ - "您確定要刪除此電子郵件位址嗎?" - ], "By deleting this address, you will no longer be able to receive daily email notifications.": [ "一旦刪除此電郵位址,您日後將不能接收每日電郵通知。" ], @@ -18657,9 +19004,6 @@ "By deleting this address, you will no longer be able to recover your account.": [ "一旦刪除此電郵位址,您日後將不能救援您的帳號。" ], - "By deleting this phone number, you will no longer be able to recover your account.": [ - "一旦刪除此手機號碼,您日後將不能救援您的帳號。" - ], "If you cancel this import, you won't be able to resume it. ${ BRAND_NAME } saved all progress in your account. Cancel anyway?": [ "如果您取消此匯入,您將無法復原。 ${ BRAND_NAME } 已將所有進度儲存在您的帳號中。無論無何都要取消嗎?" ], diff --git a/applications/account/package.json b/applications/account/package.json index 8fa191541bd..79af1a24315 100644 --- a/applications/account/package.json +++ b/applications/account/package.json @@ -27,7 +27,6 @@ "@proton/colors": "workspace:^", "@proton/components": "workspace:^", "@proton/cross-storage": "workspace:^", - "@proton/crypto": "workspace:^", "@proton/features": "workspace:^", "@proton/hooks": "workspace:^", "@proton/icons": "workspace:^", @@ -40,17 +39,16 @@ "@proton/polyfill": "workspace:^", "@proton/react-polymorphic-types": "workspace:^", "@proton/react-redux-store": "workspace:^", - "@proton/recovery-kit": "workspace:^", "@proton/redux-shared-store": "workspace:^", "@proton/redux-shared-store-types": "workspace:^", "@proton/redux-utilities": "workspace:^", "@proton/shared": "workspace:^", - "@proton/srp": "workspace:^", "@proton/styles": "workspace:^", "@proton/unleash": "workspace:^", "@proton/utils": "workspace:^", "@proton/vpn": "workspace:^", "@proton/wallet": "workspace:^", + "@protontech/crypto": "*", "@reduxjs/toolkit": "^2.11.2", "@types/react": "^18.3.28", "@types/react-dom": "^18.3.7", @@ -64,7 +62,7 @@ "react-redux": "^9.2.0", "react-router-dom": "^5.3.4", "ttag": "^1.8.12", - "xstate": "^5.30.0" + "xstate": "^5.31.1" }, "devDependencies": { "@proton/eslint-config-proton": "workspace:^", @@ -75,15 +73,15 @@ "@testing-library/react": "^15.0.7", "@testing-library/user-event": "^14.6.1", "@types/jest": "^30.0.0", - "@webgpu/types": "^0.1.69", + "@webgpu/types": "^0.1.70", "core-js": "^3.49.0", "cross-env": "^10.1.0", "eslint": "^9.39.4", - "html-webpack-plugin": "^5.6.6", - "jest": "^30.3.0", + "html-webpack-plugin": "^5.6.7", + "jest": "^30.4.2", "jest-junit": "^16.0.0", - "prettier": "^3.8.1", + "prettier": "^3.8.3", "typescript": "^6.0.2", - "webpack-dev-server": "^5.2.3" + "webpack-dev-server": "^5.2.4" } } diff --git a/applications/account/src/.htaccess b/applications/account/src/.htaccess index 683d67bd226..c80e527c81f 100644 --- a/applications/account/src/.htaccess +++ b/applications/account/src/.htaccess @@ -15,9 +15,14 @@ RewriteRule ^(.*)/$ /$1 [L,R=301] # Easy switch RewriteRule ^oauth/callback /oauth.html [L] + # Signed in app RewriteRule ^u/ /private.html [L] +# Lite app - Rewrite all paths except for real files +RewriteCond %{REQUEST_FILENAME} !-f +RewriteRule ^lite(/|$) /lite/index.html [L] + RewriteCond %{REQUEST_FILENAME} -d RewriteRule (.*) $1/index.html [L] diff --git a/applications/account/src/app/components/ExploreAppsListV2/ExploreAppsListV2.scss b/applications/account/src/app/components/ExploreAppsListV2/ExploreAppsListV2.scss index 6b6daf37387..ede45e403bc 100644 --- a/applications/account/src/app/components/ExploreAppsListV2/ExploreAppsListV2.scss +++ b/applications/account/src/app/components/ExploreAppsListV2/ExploreAppsListV2.scss @@ -108,8 +108,8 @@ im.$media-expressions: $media-expressions; } } - &:hover &-icon, - &:focus-visible &-icon { + &:hover:not(.explore-app-inaccessible) &-icon, + &:focus-visible:not(.explore-app-inaccessible) &-icon { box-shadow: var(--shadow-hover); transform: translateY(#{rem(-1)}); diff --git a/applications/account/src/app/components/ExploreAppsListV2/ExploreAppsListV2.tsx b/applications/account/src/app/components/ExploreAppsListV2/ExploreAppsListV2.tsx index b6f0366e31c..ef6b0d0be3b 100644 --- a/applications/account/src/app/components/ExploreAppsListV2/ExploreAppsListV2.tsx +++ b/applications/account/src/app/components/ExploreAppsListV2/ExploreAppsListV2.tsx @@ -1,11 +1,11 @@ import type { CSSProperties, ReactNode } from 'react'; -import { useEffect, useRef, useState } from 'react'; +import { useEffect } from 'react'; import { c } from 'ttag'; import { CircleLoader } from '@proton/atoms/CircleLoader/CircleLoader'; import { Logo } from '@proton/components'; -import useLoading from '@proton/hooks/useLoading'; +import { useLoadingByKey } from '@proton/hooks/useLoading'; import type { PLANS } from '@proton/payments'; import { getHasPlusPlan, getHasProPlan } from '@proton/payments'; import { getHasBusinessProductPlan } from '@proton/payments/core/plan/helpers'; @@ -15,8 +15,10 @@ import { getSlugFromApp } from '@proton/shared/lib/apps/slugHelper'; import type { APP_NAMES } from '@proton/shared/lib/constants'; import { APPS, PRODUCT_BIT } from '@proton/shared/lib/constants'; import { hasBit } from '@proton/shared/lib/helpers/bitset'; -import { getShouldProcessLinkClick } from '@proton/shared/lib/helpers/dom'; +import { getIsEventModified, getShouldProcessLinkClick } from '@proton/shared/lib/helpers/dom'; +import { wait } from '@proton/shared/lib/helpers/promise'; import { goToPlanOrAppNameText } from '@proton/shared/lib/i18n/ttag'; +import type { User } from '@proton/shared/lib/interfaces'; import { getIsBYOEAccount, getIsExternalAccount } from '@proton/shared/lib/keys'; import { hasPaidDrive, @@ -30,7 +32,7 @@ import { import clsx from '@proton/utils/clsx'; import LumoLogoAnimated from './LumoLogoAnimated'; -import { sendExploreAppsListAppClick, sendExploreAppsListTimeSpent } from './exploreAppsListTelemetry'; +import { useExploreAppsListTelemetry } from './exploreAppsListTelemetry'; import { useExploreAppContextMenu } from './useExploreAppContextMenu'; import './ExploreAppsListV2.scss'; @@ -65,12 +67,10 @@ interface App { isNew?: boolean; style: CSSProperties; priority: number; + isForbidden?: boolean; } -export const getExploreApps = ({ ...options }: Omit[0], 'context'>) => { - const user = options.user; - const availableApps = getAvailableApps({ ...options, context: 'dropdown' }); - +const getAppConfigs = ({ user }: { user?: User }) => { const priorities = { default: 100, higher: 1, lower: 1000 }; const getMailPriority = () => { @@ -206,7 +206,6 @@ export const getExploreApps = ({ ...options }: Omit[0], 'context'>): App[] => { + const user = options.user; + const availableApps = getAvailableApps({ ...options, context: 'dropdown' }); + + return getAppConfigs({ user }) .sort((a, b) => a.priority - b.priority) .filter(({ name }) => availableApps.includes(name)); }; +export const getForbiddenAppConfigs = ({ + user, + forbiddenApps, +}: { + user: User; + forbiddenApps: Set; +}): App[] => { + return getAppConfigs({ user }) + .filter(({ name }) => forbiddenApps.has(name)) + .map((config) => ({ ...config, style: { filter: 'grayscale(100%)', opacity: 0.5 }, isForbidden: true })); +}; + interface Props { onExplore: (app: APP_NAMES) => Promise; apps: App[]; @@ -320,30 +338,29 @@ const AppIcon = ({ children, appName }: { children: ReactNode; appName: APP_NAME ); }; -const ExploreAppsListV2 = ({ onExplore, apps, subscription, localID }: Props) => { - const [loading, withLoading] = useLoading(); - const [type, setType] = useState(null); - const mountTimeRef = useRef(null); +const getShouldObserveAppClick = (event: MouseEvent) => { + const middleClick = event.button === 1; + const leftClick = event.button === 0; - // Helper function to send time spent - const sendTimeSpent = () => { - if (mountTimeRef.current !== null) { - const timeSpentMs = Date.now() - mountTimeRef.current; - const timeSpentSec = Math.round((timeSpentMs / 1000) * 10) / 10; - sendExploreAppsListTimeSpent({ timeSpentSec }); - mountTimeRef.current = null; - } - }; + return leftClick || middleClick; +}; - const handleContextMenuClick = () => { - sendTimeSpent(); - }; +const getWillLikelyOpenInNewTab = (event: MouseEvent) => { + const middleClick = event.button === 1; + const leftClick = event.button === 0; - const { contextMenu, onContextMenu } = useExploreAppContextMenu({ onClick: handleContextMenuClick }); + return middleClick || (leftClick && getIsEventModified(event)); +}; + +const ExploreAppsListV2 = ({ onExplore, apps, subscription, localID }: Props) => { + const [loading, withLoading] = useLoadingByKey(); + const { sendPageLoad, sendAppClick } = useExploreAppsListTelemetry(); + + const { contextMenu, onContextMenu } = useExploreAppContextMenu(); useEffect(() => { - mountTimeRef.current = Date.now(); - }, []); + sendPageLoad(); + }, [sendPageLoad]); let planName = getNameFromPlan(subscription.plan); if (hasBit(subscription.subscribed, allBits)) { @@ -362,44 +379,61 @@ const ExploreAppsListV2 = ({ onExplore, apps, subscription, localID }: Props) => const appName = app.name; const name = getAppShortName(appName); const description = app.description(); - const showLoader = type === appName && loading; + const showLoader = loading[appName]; const paid = hasBit(subscription.subscribed, app.bit); const isNew = app.isNew; - const href = getExploreAppHref('/', appName, localID); + const appHref = getExploreAppHref('/', appName, localID); const settingsHref = getSettingsHref(appName, localID); + const isForbidden = app.isForbidden; + return (
  • { - if (loading) { + onClick={async (event) => { + if (Object.values(loading).some((i) => i === true) || isForbidden) { event.preventDefault(); return; } + + if (getShouldObserveAppClick(event.nativeEvent)) { + sendAppClick({ + appName, + openMethod: getWillLikelyOpenInNewTab(event.nativeEvent) + ? 'new_tab' + : 'same_tab', + }); + await wait(50); // This ensures the telemetry event has time to be initiated and sent before the page redirects + } + const target = event.currentTarget?.getAttribute('target') || ''; if (getShouldProcessLinkClick(event.nativeEvent, target)) { event.preventDefault(); - sendTimeSpent(); - sendExploreAppsListAppClick({ appName }); - setType(appName); - void withLoading(onExplore(appName)); + await withLoading(appName, onExplore(appName)); return; } // Otherwise let link (e.g. new tab) clicks fall through }} - onContextMenu={(e) => onContextMenu(e, href, settingsHref, appName)} + onContextMenu={(event) => { + if (isForbidden) { + event.preventDefault(); + return; + } + onContextMenu({ event, appHref, settingsHref, appName }); + }} aria-label={goToPlanOrAppNameText(getAppName(appName))} className={clsx( `explore-app explore-app-${appName}`, 'flex flex-column items-center flex-nowrap gap-1 text-no-decoration text-center', - showLoader && 'pointer-events-none' + showLoader && 'pointer-events-none', + isForbidden && 'explore-app-inaccessible cursor-not-allowed' )} style={app.style} >
    - {appName === APPS.PROTONLUMO ? ( + {appName === APPS.PROTONLUMO && !isForbidden ? ( /> )} - {isNew && ( + {isNew && !isForbidden && ( {c('Info').t`New`} @@ -433,13 +467,13 @@ const ExploreAppsListV2 = ({ onExplore, apps, subscription, localID }: Props) => )}
    - {paid && planName ? ( + {paid && planName && !isForbidden ? ( {planName} ) : undefined}
    - {description} + {isForbidden ? c('Info').t`${name} is not available` : description}
    diff --git a/applications/account/src/app/components/ExploreAppsListV2/exploreAppsListTelemetry.ts b/applications/account/src/app/components/ExploreAppsListV2/exploreAppsListTelemetry.ts index 099187b68b1..fc002158c36 100644 --- a/applications/account/src/app/components/ExploreAppsListV2/exploreAppsListTelemetry.ts +++ b/applications/account/src/app/components/ExploreAppsListV2/exploreAppsListTelemetry.ts @@ -1,64 +1,41 @@ +import { useCallback } from 'react'; + +import useApi from '@proton/components/hooks/useApi'; +import { TelemetryExploreAppsEvents, TelemetryMeasurementGroups } from '@proton/shared/lib/api/telemetry'; import type { APP_NAMES } from '@proton/shared/lib/constants'; -import { telemetry } from '@proton/shared/lib/telemetry'; +import { sendTelemetryReport, telemetryReportsBatchQueue } from '@proton/shared/lib/helpers/metrics'; -/** - * Tracks how long a user spent on the Explore Apps List page (in seconds) - * This event is sent when the user clicks an app or uses context menu actions - */ -export const sendExploreAppsListTimeSpent = ({ timeSpentSec }: { timeSpentSec: number }) => { - telemetry.sendCustomEvent( - /** - * Event type version should be updated when the data structure changes - * Note: timeSpentSec is in seconds (rounded) - */ - 'explore_apps_list_time_spent_v1', - { - timeSpentSec, - } - ); -}; +type OpenMethod = 'same_tab' | 'new_tab' | 'settings'; -/** - * Tracks when a user clicks on an app to open it - */ -export const sendExploreAppsListAppClick = ({ appName }: { appName: APP_NAMES }) => { - telemetry.sendCustomEvent( - /** - * Event type version should be updated when the data structure changes - */ - 'explore_apps_list_app_click_v1', - { - appName, - } - ); -}; +export const useExploreAppsListTelemetry = () => { + const api = useApi(); -/** - * Tracks when a user clicks "Open in new tab" from the context menu - */ -export const sendExploreAppsListContextMenuOpenNewTab = ({ appName }: { appName: APP_NAMES }) => { - telemetry.sendCustomEvent( - /** - * Event type version should be updated when the data structure changes - */ - 'explore_apps_list_context_menu_open_new_tab_v1', - { - appName, - } - ); -}; + const sendPageLoad = useCallback(() => { + void sendTelemetryReport({ + api, + measurementGroup: TelemetryMeasurementGroups.accountExploreApps, + event: TelemetryExploreAppsEvents.page_load, + delay: false, + }); + void telemetryReportsBatchQueue.flush(); + }, [api]); -/** - * Tracks when a user clicks "Open settings" from the context menu - */ -export const sendExploreAppsListContextMenuOpenSettings = ({ appName }: { appName: APP_NAMES }) => { - telemetry.sendCustomEvent( - /** - * Event type version should be updated when the data structure changes - */ - 'explore_apps_list_context_menu_open_settings_v1', - { - appName, - } + const sendAppClick = useCallback( + ({ appName, openMethod }: { appName: APP_NAMES; openMethod: OpenMethod }) => { + void sendTelemetryReport({ + api, + measurementGroup: TelemetryMeasurementGroups.accountExploreApps, + event: TelemetryExploreAppsEvents.app_click, + delay: false, + dimensions: { + app_name: appName, + open_method: openMethod, + }, + }); + void telemetryReportsBatchQueue.flush(); + }, + [api] ); + + return { sendPageLoad, sendAppClick }; }; diff --git a/applications/account/src/app/components/ExploreAppsListV2/useExploreAppContextMenu.tsx b/applications/account/src/app/components/ExploreAppsListV2/useExploreAppContextMenu.tsx index 8dd5b3fd3b6..74077821191 100644 --- a/applications/account/src/app/components/ExploreAppsListV2/useExploreAppContextMenu.tsx +++ b/applications/account/src/app/components/ExploreAppsListV2/useExploreAppContextMenu.tsx @@ -8,13 +8,11 @@ import ContextMenuButton from '@proton/components/components/contextMenu/Context import { DropdownBorderRadius } from '@proton/components/components/dropdown/Dropdown'; import { IcCogWheel } from '@proton/icons/icons/IcCogWheel'; import type { APP_NAMES } from '@proton/shared/lib/constants'; +import { wait } from '@proton/shared/lib/helpers/promise'; -import { - sendExploreAppsListContextMenuOpenNewTab, - sendExploreAppsListContextMenuOpenSettings, -} from './exploreAppsListTelemetry'; +import { useExploreAppsListTelemetry } from './exploreAppsListTelemetry'; -export const useExploreAppContextMenu = ({ onClick }: { onClick: () => void }) => { +export const useExploreAppContextMenu = () => { const anchorRef = useRef(null); const [isOpen, setIsOpen] = useState(false); const [position, setPosition] = useState<{ top: number; left: number }>(); @@ -24,11 +22,23 @@ export const useExploreAppContextMenu = ({ onClick }: { onClick: () => void }) = const close = useCallback(() => setIsOpen(false), []); + const { sendAppClick } = useExploreAppsListTelemetry(); + const handleContextMenu = useCallback( - (e: React.MouseEvent, appHref: string, settingsHref: string, appName: APP_NAMES) => { - e.stopPropagation(); - e.preventDefault(); - setPosition({ top: e.clientY, left: e.clientX }); + ({ + event, + appHref, + settingsHref, + appName, + }: { + event: React.MouseEvent; + appHref: string; + settingsHref: string; + appName: APP_NAMES; + }) => { + event.stopPropagation(); + event.preventDefault(); + setPosition({ top: event.clientY, left: event.clientX }); setSelectedAppHref(appHref); setSelectedSettingsHref(settingsHref); setSelectedAppName(appName); @@ -39,20 +49,25 @@ export const useExploreAppContextMenu = ({ onClick }: { onClick: () => void }) = const handleOpenInNewTab = useCallback(() => { if (selectedAppHref && selectedAppName) { - onClick(); - sendExploreAppsListContextMenuOpenNewTab({ appName: selectedAppName }); + sendAppClick({ + appName: selectedAppName, + openMethod: 'new_tab', + }); window.open(selectedAppHref, '_blank'); } close(); - }, [selectedAppHref, selectedAppName, close, onClick]); + }, [selectedAppHref, selectedAppName, close]); - const handleOpenSettings = useCallback(() => { + const handleOpenSettings = useCallback(async () => { if (selectedAppName) { - onClick(); - sendExploreAppsListContextMenuOpenSettings({ appName: selectedAppName }); + sendAppClick({ + appName: selectedAppName, + openMethod: 'settings', + }); + await wait(50); // This ensures the telemetry event has time to be initiated and sent before the page redirects } close(); - }, [selectedAppName, close, onClick]); + }, [selectedAppName, close]); const contextMenu = ( , path: string, dashboard: SectionConfig) => { @@ -129,7 +129,7 @@ const AccountSettingsRouter = ({ > - + diff --git a/applications/account/src/app/containers/account/RecoverySettingsRouter.tsx b/applications/account/src/app/containers/account/recovery/RecoverySettingsRouter.tsx similarity index 95% rename from applications/account/src/app/containers/account/RecoverySettingsRouter.tsx rename to applications/account/src/app/containers/account/recovery/RecoverySettingsRouter.tsx index 10cfdd53e8b..a6c239deecb 100644 --- a/applications/account/src/app/containers/account/RecoverySettingsRouter.tsx +++ b/applications/account/src/app/containers/account/recovery/RecoverySettingsRouter.tsx @@ -26,9 +26,10 @@ import RecoveryPhone from '@proton/components/containers/recovery/navItems/Recov import RecoveryPhrase from '@proton/components/containers/recovery/navItems/RecoveryPhrase'; import RecoveryQrCode from '@proton/components/containers/recovery/navItems/RecoveryQrCode'; import SignedInReset from '@proton/components/containers/recovery/navItems/SignedInReset'; +import { RecoverySettingsTelemetryVariantProvider } from '@proton/components/containers/recovery/recoverySettingsTelemetry'; import type { APP_NAMES } from '@proton/shared/lib/constants'; -import { useFlag } from '@proton/unleash/useFlag'; +import type { getAccountAppRoutes } from '../routes'; import DeviceBasedRecoverySubpage from './recoverySubpages/DeviceBasedRecoverySubpage'; import { EmergencyContactSubpage } from './recoverySubpages/EmergencyContactSubpage'; import { RecoveryContactSubpage } from './recoverySubpages/RecoveryContactSubpage'; @@ -38,7 +39,7 @@ import RecoveryPhoneSubpage from './recoverySubpages/RecoveryPhoneSubpage'; import RecoveryPhraseSubpage from './recoverySubpages/RecoveryPhraseSubpage'; import { SessionRecoverySubpage } from './recoverySubpages/SessionRecoverySubpage'; import SignInWithAnotherDeviceSubpage from './recoverySubpages/SignInWithAnotherDeviceSubpage'; -import type { getAccountAppRoutes } from './routes'; +import { PasswordResetOptionRequiredWarningInGroup } from './recoverySubpages/shared/PasswordResetOptionRequiredWarning'; interface Props { app: APP_NAMES; @@ -195,6 +196,9 @@ const RedesignRecoverySettingsRouter = ({ app, recovery, path }: Props) => { description={dataRecovery.description} subsections={Object.values(dataRecovery.subroutes)} > + @@ -218,11 +222,10 @@ const RedesignRecoverySettingsRouter = ({ app, recovery, path }: Props) => { }; const RecoverySettingsRouter = ({ app, recovery, path }: Props) => { - const isRecoverySettingsRedesignEnabled = useFlag('RecoverySettingsRedesign'); const recoveryPath = getSectionPath(path, recovery); const location = useLocation(); - const showRedesign = isRecoverySettingsRedesignEnabled && !!recovery.subrouteGroups; + const showRedesign = !!recovery.subrouteGroups; if (showRedesign && location.pathname === recoveryPath) { const params = new URLSearchParams(location.search); @@ -260,7 +263,7 @@ const RecoverySettingsRouter = ({ app, recovery, path }: Props) => { } return ( - <> + {showRedesign ? ( @@ -271,15 +274,15 @@ const RecoverySettingsRouter = ({ app, recovery, path }: Props) => { - + )} - + ); }; diff --git a/applications/account/src/app/containers/account/recoverySubpages/DeviceBasedRecoverySubpage.tsx b/applications/account/src/app/containers/account/recovery/recoverySubpages/DeviceBasedRecoverySubpage.tsx similarity index 88% rename from applications/account/src/app/containers/account/recoverySubpages/DeviceBasedRecoverySubpage.tsx rename to applications/account/src/app/containers/account/recovery/recoverySubpages/DeviceBasedRecoverySubpage.tsx index 02bcc762376..361ab840634 100644 --- a/applications/account/src/app/containers/account/recoverySubpages/DeviceBasedRecoverySubpage.tsx +++ b/applications/account/src/app/containers/account/recovery/recoverySubpages/DeviceBasedRecoverySubpage.tsx @@ -12,16 +12,20 @@ import SettingsDescription, { SettingsDescriptionItem, } from '@proton/components/containers/account/SettingsDescription'; import { SettingsToggleRow } from '@proton/components/containers/account/SettingsToggleRow'; +import { useTheme } from '@proton/components/containers/themes/ThemeProvider'; import { useLoading } from '@proton/hooks'; import { IcCheckmarkCircleFilled } from '@proton/icons/icons/IcCheckmarkCircleFilled'; import { useSelector } from '@proton/redux-shared-store/sharedProvider'; import { getKnowledgeBaseUrl } from '@proton/shared/lib/helpers/url'; +import darkIllustration from './assets/device-based-recovery-dark.svg'; import illustration from './assets/device-based-recovery.svg'; import PasswordResetOptionRequiredWarning from './shared/PasswordResetOptionRequiredWarning'; import RecoveryWarning from './shared/RecoveryWarning'; const DeviceBasedRecoverySubpage = ({ emailSubpagePath }: { emailSubpagePath: string }) => { + const theme = useTheme(); + const isDarkTheme = theme.information.dark; const recoveryFileData = useSelector(selectRecoveryFileData); const updateRecoveryFile = useUpdateRecoveryFile(recoveryFileData); @@ -40,10 +44,6 @@ const DeviceBasedRecoverySubpage = ({ emailSubpagePath }: { emailSubpagePath: st return null; } - const learnMoreLink = ( - {c('Link').t`Learn more`} - ); - return ( <> {updateRecoveryFile.el} @@ -54,12 +54,19 @@ const DeviceBasedRecoverySubpage = ({ emailSubpagePath }: { emailSubpagePath: st {c('Info') .t`Enabling the data backup on this device will restore access to emails, contacts, files, passwords, and any other encrypted data on your account after a password reset, simply by signing in on this device.`}{' '} - {learnMoreLink} + {c('Link') + .t`Learn more`} } right={ - + } /> diff --git a/applications/account/src/app/containers/account/recoverySubpages/EmergencyContactSubpage.tsx b/applications/account/src/app/containers/account/recovery/recoverySubpages/EmergencyContactSubpage.tsx similarity index 78% rename from applications/account/src/app/containers/account/recoverySubpages/EmergencyContactSubpage.tsx rename to applications/account/src/app/containers/account/recovery/recoverySubpages/EmergencyContactSubpage.tsx index 7fa53f0cb18..d143a6619fa 100644 --- a/applications/account/src/app/containers/account/recoverySubpages/EmergencyContactSubpage.tsx +++ b/applications/account/src/app/containers/account/recovery/recoverySubpages/EmergencyContactSubpage.tsx @@ -13,16 +13,16 @@ import { Href } from '@proton/atoms/Href/Href'; import SettingsDescription, { SettingsDescriptionItem, } from '@proton/components/containers/account/SettingsDescription'; +import { useTheme } from '@proton/components/containers/themes/ThemeProvider'; import { type APP_NAMES, BRAND_NAME } from '@proton/shared/lib/constants'; import { getKnowledgeBaseUrl } from '@proton/shared/lib/helpers/url'; +import darkIllustration from './assets/recovery-emergency-contacts-dark.svg'; import illustration from './assets/recovery-emergency-contacts.svg'; export const EmergencyContactSubpage = ({ app }: { app: APP_NAMES }) => { - const learnMoreLink = ( - {c('Link').t`Learn more`} - ); - + const theme = useTheme(); + const isDarkTheme = theme.information.dark; return ( { {c('Info') .t`Add 1 to 5 people who you trust and can contact easily. They will be able to reset your password for you by signing in to your account. They must already have a ${BRAND_NAME} Account.`}{' '} - {learnMoreLink} + {c('Link') + .t`Learn more`} } - right={} + right={ + + } /> diff --git a/applications/account/src/app/containers/account/recoverySubpages/RecoveryContactSubpage.tsx b/applications/account/src/app/containers/account/recovery/recoverySubpages/RecoveryContactSubpage.tsx similarity index 83% rename from applications/account/src/app/containers/account/recoverySubpages/RecoveryContactSubpage.tsx rename to applications/account/src/app/containers/account/recovery/recoverySubpages/RecoveryContactSubpage.tsx index 36805c35e8b..1400239bed4 100644 --- a/applications/account/src/app/containers/account/recoverySubpages/RecoveryContactSubpage.tsx +++ b/applications/account/src/app/containers/account/recovery/recoverySubpages/RecoveryContactSubpage.tsx @@ -14,18 +14,19 @@ import { Href } from '@proton/atoms/Href/Href'; import SettingsDescription, { SettingsDescriptionItem, } from '@proton/components/containers/account/SettingsDescription'; +import { useTheme } from '@proton/components/containers/themes/ThemeProvider'; import { useSelector } from '@proton/redux-shared-store/sharedProvider'; import type { APP_NAMES } from '@proton/shared/lib/constants'; import { getKnowledgeBaseUrl } from '@proton/shared/lib/helpers/url'; +import darkIllustration from './assets/recovery-contacts-dark.svg'; import illustration from './assets/recovery-contacts.svg'; import PasswordResetOptionRequiredWarning from './shared/PasswordResetOptionRequiredWarning'; export const RecoveryContactSubpage = ({ app, emailSubpagePath }: { app: APP_NAMES; emailSubpagePath: string }) => { + const theme = useTheme(); + const isDarkTheme = theme.information.dark; const { hasAccountRecoveryMethod } = useSelector(selectAvailableRecoveryMethods); - const learnMoreLink = ( - {c('Link').t`Learn more`} - ); return ( {c('Info') .t`By adding people you trust as recovery contacts, we'll be able to send them an email to help you if you're having trouble recovering your data after a password reset. You can also be a recovery contact for others.`}{' '} - {learnMoreLink} + {c('Link').t`Learn more`} } - right={} + right={ + + } /> diff --git a/applications/account/src/app/containers/account/recoverySubpages/RecoveryEmailSubpage.tsx b/applications/account/src/app/containers/account/recovery/recoverySubpages/RecoveryEmailSubpage.tsx similarity index 87% rename from applications/account/src/app/containers/account/recoverySubpages/RecoveryEmailSubpage.tsx rename to applications/account/src/app/containers/account/recovery/recoverySubpages/RecoveryEmailSubpage.tsx index a7f9a874a79..f73b9af688d 100644 --- a/applications/account/src/app/containers/account/recoverySubpages/RecoveryEmailSubpage.tsx +++ b/applications/account/src/app/containers/account/recovery/recoverySubpages/RecoveryEmailSubpage.tsx @@ -17,6 +17,7 @@ import SettingsDescription, { import { SettingsToggleRow } from '@proton/components/containers/account/SettingsToggleRow'; import { StatusBadge, StatusBadgeStatus } from '@proton/components/containers/layout/StatusBadge'; import RecoveryEmail from '@proton/components/containers/recovery/email/RecoveryEmail'; +import { useTheme } from '@proton/components/containers/themes/ThemeProvider'; import getBoldFormattedText from '@proton/components/helpers/getBoldFormattedText'; import { IcPen } from '@proton/icons/icons/IcPen'; import { IcPlus } from '@proton/icons/icons/IcPlus'; @@ -25,6 +26,7 @@ import { IcTrash } from '@proton/icons/icons/IcTrash'; import { BRAND_NAME, PROTON_SENTINEL_NAME } from '@proton/shared/lib/constants'; import { getKnowledgeBaseUrl } from '@proton/shared/lib/helpers/url'; +import darkIllustration from './assets/recovery-email-dark.svg'; import illustration from './assets/recovery-email.svg'; import SentinelWarning from './shared/SentinelWarning'; @@ -141,8 +143,10 @@ const RecoveryEmailVerificationStatus = ({ }; const RecoveryEmailSubpage = () => { + const theme = useTheme(); + const isDarkTheme = theme.information.dark; const [{ isSentinelUser }, loadingIsSentinelUser] = useIsSentinelUser(); - const [isEditingRecoveryEmail, setIsEditingRecoveryEmail] = useState(false); + const [maybeIsEditingRecoveryEmail, setIsEditingRecoveryEmail] = useState(false); const accountRecovery = useUpdateAccountRecovery(); const { emailRecovery, loading } = accountRecovery.data; @@ -151,9 +155,9 @@ const RecoveryEmailSubpage = () => { return ; } - const learnMoreLink = ( - {c('Link').t`Learn more`} - ); + // Handles the case where a user focuses the input and clears the value, gets the confirmation modal, and clicks confirm. + // The change happens outside of the onSubmit handler, so this is an extra guard against that. + const isEditingEmailAndHasValue = maybeIsEditingRecoveryEmail && !!emailRecovery.value; return ( <> @@ -171,12 +175,19 @@ const RecoveryEmailSubpage = () => { c('Info') .t`**Your recovery email alone doesn't allow you to recover your encrypted data** after you reset your password.` )}{' '} - {learnMoreLink} + {c('Link') + .t`Learn more`} } right={ - + } /> @@ -190,14 +201,19 @@ const RecoveryEmailSubpage = () => { value, autoStartVerificationFlowAfterSet: true, }); - } finally { setIsEditingRecoveryEmail(false); - } + } catch {} }} inputProps={{ label: c('Label').t`Your recovery email`, - readOnly: !isEditingRecoveryEmail && !!emailRecovery.value, + readOnly: !isEditingEmailAndHasValue && !!emailRecovery.value, placeholder: c('Placeholder').t`example@domain.com`, + onFocus: () => { + if (!emailRecovery.value) { + return; + } + setIsEditingRecoveryEmail(true); + }, }} renderForm={({ onSubmit, onReset, input, submitButtonProps, onVerify, onRemove }) => { return ( @@ -205,14 +221,14 @@ const RecoveryEmailSubpage = () => { setIsEditingRecoveryEmail(true)} onRemove={onRemove} /> { onReset(); setIsEditingRecoveryEmail(false); @@ -220,7 +236,7 @@ const RecoveryEmailSubpage = () => { /> @@ -263,7 +279,7 @@ const RecoveryEmailSubpage = () => { )} - {emailRecovery.enabled && isSentinelUser && ( + {emailRecovery.value && emailRecovery.hasReset && isSentinelUser && ( { + const theme = useTheme(); + const isDarkTheme = theme.information.dark; const recoveryFileData = useSelector(selectRecoveryFileData); const updateRecoveryFile = useUpdateRecoveryFile(recoveryFileData); @@ -28,10 +33,10 @@ const RecoveryFileSubpage = ({ emailSubpagePath }: { emailSubpagePath: string }) return null; } - const learnMoreLink = ( - {c('Link') - .t`Learn more`} - ); + const isRecoveryFileSentinelConflict = + recoveryFileData.isRecoveryFileAvailable && + !recoveryFileData.hasOutdatedRecoveryFile && + recoveryFileData.recoverySecrets.length > 0; return ( <> @@ -47,18 +52,28 @@ const RecoveryFileSubpage = ({ emailSubpagePath }: { emailSubpagePath: string }) {c('Info') .t`You don’t need to open or read the file—just download it and store it somewhere safe.`}{' '} - {learnMoreLink} + + {c('Link').t`Learn more`} + } right={ - + } /> -

    {c('Title').t`Your recovery file`}

    +

    + {c('Title').t`Your recovery file`} +

    {RECOVERY_FILE_FILE_NAME} @@ -90,6 +105,9 @@ const RecoveryFileSubpage = ({ emailSubpagePath }: { emailSubpagePath: string })

    )} + {!isRecoveryFileSentinelConflict && !recoveryFileData.hasOutdatedRecoveryFile && ( + + )}
    diff --git a/applications/account/src/app/containers/account/recoverySubpages/RecoveryPhoneSubpage.tsx b/applications/account/src/app/containers/account/recovery/recoverySubpages/RecoveryPhoneSubpage.tsx similarity index 88% rename from applications/account/src/app/containers/account/recoverySubpages/RecoveryPhoneSubpage.tsx rename to applications/account/src/app/containers/account/recovery/recoverySubpages/RecoveryPhoneSubpage.tsx index 8357a2d98ad..6c7e55547e1 100644 --- a/applications/account/src/app/containers/account/recoverySubpages/RecoveryPhoneSubpage.tsx +++ b/applications/account/src/app/containers/account/recovery/recoverySubpages/RecoveryPhoneSubpage.tsx @@ -17,6 +17,7 @@ import SettingsDescription, { import { SettingsToggleRow } from '@proton/components/containers/account/SettingsToggleRow'; import { StatusBadge, StatusBadgeStatus } from '@proton/components/containers/layout/StatusBadge'; import RecoveryPhone from '@proton/components/containers/recovery/phone/RecoveryPhone'; +import { useTheme } from '@proton/components/containers/themes/ThemeProvider'; import getBoldFormattedText from '@proton/components/helpers/getBoldFormattedText'; import useMyCountry from '@proton/components/hooks/useMyCountry'; import { IcPen } from '@proton/icons/icons/IcPen'; @@ -26,6 +27,7 @@ import { IcTrash } from '@proton/icons/icons/IcTrash'; import { BRAND_NAME, PROTON_SENTINEL_NAME } from '@proton/shared/lib/constants'; import { getKnowledgeBaseUrl } from '@proton/shared/lib/helpers/url'; +import darkIllustration from './assets/recovery-phone-dark.svg'; import illustration from './assets/recovery-phone.svg'; import SentinelWarning from './shared/SentinelWarning'; @@ -142,8 +144,10 @@ const RecoveryPhoneVerificationStatus = ({ }; const RecoveryPhoneSubpage = () => { + const theme = useTheme(); + const isDarkTheme = theme.information.dark; const [{ isSentinelUser }, loadingIsSentinelUser] = useIsSentinelUser(); - const [isEditingRecoveryPhone, setIsEditingRecoveryPhone] = useState(false); + const [maybeIsEditingRecoveryPhone, setIsEditingRecoveryPhone] = useState(false); const defaultCountry = useMyCountry(); const accountRecovery = useUpdateAccountRecovery(); @@ -153,9 +157,9 @@ const RecoveryPhoneSubpage = () => { return ; } - const learnMoreLink = ( - {c('Link').t`Learn more`} - ); + // Handles the case where a user focuses the input and clears the value, gets the confirmation modal, and clicks confirm. + // The change happens outside of the onSubmit handler, so this is an extra guard against that. + const isEditingRecoveryPhoneAndHasValue = maybeIsEditingRecoveryPhone && !!phoneRecovery.value; return ( <> @@ -173,12 +177,19 @@ const RecoveryPhoneSubpage = () => { c('Info') .t`**Your recovery phone alone doesn’t allow you to recover your encrypted data** after you reset your password.` )}{' '} - {learnMoreLink} + {c('Link') + .t`Learn more`} } right={ - + } /> @@ -193,13 +204,18 @@ const RecoveryPhoneSubpage = () => { value, autoStartVerificationFlowAfterSet: true, }); - } finally { setIsEditingRecoveryPhone(false); - } + } catch {} }} inputProps={{ label: c('Label').t`Your recovery phone number`, - readOnly: !isEditingRecoveryPhone && !!phoneRecovery.value, + readOnly: !isEditingRecoveryPhoneAndHasValue && !!phoneRecovery.value, + onFocus: () => { + if (!phoneRecovery.value) { + return; + } + setIsEditingRecoveryPhone(true); + }, }} renderForm={({ onSubmit, onReset, input, submitButtonProps, onVerify, onRemove }) => { return ( @@ -207,14 +223,14 @@ const RecoveryPhoneSubpage = () => { setIsEditingRecoveryPhone(true)} onRemove={onRemove} /> { onReset(); setIsEditingRecoveryPhone(false); @@ -222,7 +238,7 @@ const RecoveryPhoneSubpage = () => { /> @@ -265,7 +281,7 @@ const RecoveryPhoneSubpage = () => { )} - {phoneRecovery.enabled && isSentinelUser && ( + {phoneRecovery.value && phoneRecovery.hasReset && isSentinelUser && ( { + const theme = useTheme(); + const isDarkTheme = theme.information.dark; + const mnemonicData = useSelector(selectMnemonicData); + const updateRecoveryKit = useUpdateRecoveryKit(mnemonicData); + + if (!mnemonicData.isMnemonicAvailable) { + return null; + } + + return ( + <> + {updateRecoveryKit.el} + + + + + {c('Info') + .t`Your recovery phrase will allow you to sign in and recover your data if you get locked out of your ${BRAND_NAME} Account. It is composed of 12 words and acts like a backup password.`} + + + {c('Info') + .t`It’s the only way to instantly recover everything, so make sure you keep it somewhere safe but accessible.`}{' '} + {c('Link') + .t`Learn more`} + + + } + right={ + + } + /> + + {mnemonicData.hasOutdatedMnemonic && ( + + {c('Warning') + .t`Your recovery phrase is outdated. It can't recover new data if you reset your password again.`} + + )} + + {updateRecoveryKit.showExistingRecoveryPhraseCard ? ( + + +

    {c('Title').t`Your recovery phrase`}

    + + {mnemonicData.hasOutdatedMnemonic && ( +
    + +
    + )} + {!mnemonicData.hasOutdatedMnemonic && mnemonicData.mnemonicCanBeRegenerated && ( +
    + +
    + )} + + + + + {c('Label').t`Allow recovery by recovery phrase`} + + + {c('Info') + .t`We strongly recommend that everyone enable recovery by recovery phrase.`} + + + } + toggle={ + updateRecoveryKit.updateToggle(checked)} + /> + } + /> +
    +
    + ) : ( +
    + +
    + )} +
    + + ); +}; + +export default RecoveryPhraseSubpage; diff --git a/applications/account/src/app/containers/account/recoverySubpages/SessionRecoverySubpage.tsx b/applications/account/src/app/containers/account/recovery/recoverySubpages/SessionRecoverySubpage.tsx similarity index 87% rename from applications/account/src/app/containers/account/recoverySubpages/SessionRecoverySubpage.tsx rename to applications/account/src/app/containers/account/recovery/recoverySubpages/SessionRecoverySubpage.tsx index 65959441c79..1b81ee3d3c1 100644 --- a/applications/account/src/app/containers/account/recoverySubpages/SessionRecoverySubpage.tsx +++ b/applications/account/src/app/containers/account/recovery/recoverySubpages/SessionRecoverySubpage.tsx @@ -5,7 +5,7 @@ import { selectAvailableRecoveryMethods, selectSessionRecoveryData, } from '@proton/account/recovery/sessionRecoverySelectors'; -import { userSettingsThunk } from '@proton/account/userSettings'; +import { toggleSignedInReset } from '@proton/account/recovery/userSettingsActions'; import { Button } from '@proton/atoms/Button/Button'; import { DashboardCard, DashboardCardContent, DashboardCardDivider } from '@proton/atoms/DashboardCard/DashboardCard'; import { DashboardGrid } from '@proton/atoms/DashboardGrid/DashboardGrid'; @@ -21,26 +21,25 @@ import { SettingsToggleRow } from '@proton/components/containers/account/Setting import InitiateSessionRecoveryModal from '@proton/components/containers/account/sessionRecovery/InitiateSessionRecoveryModal'; import ConfirmDisableSessionRecoveryModal from '@proton/components/containers/recovery/ConfirmDisableSessionRecoveryModal'; import { useRecoverySettingsTelemetry } from '@proton/components/containers/recovery/recoverySettingsTelemetry'; -import useApi from '@proton/components/hooks/useApi'; +import { useTheme } from '@proton/components/containers/themes/ThemeProvider'; import useNotifications from '@proton/components/hooks/useNotifications'; import useLoading from '@proton/hooks/useLoading'; import { IcHourglass } from '@proton/icons/icons/IcHourglass'; import { IcShieldExclamationFilled } from '@proton/icons/icons/IcShieldExclamationFilled'; import metrics, { observeApiError } from '@proton/metrics'; import { useDispatch, useSelector } from '@proton/redux-shared-store/sharedProvider'; -import { CacheType } from '@proton/redux-utilities'; -import { updateSessionAccountRecovery } from '@proton/shared/lib/api/sessionRecovery'; import { BRAND_NAME } from '@proton/shared/lib/constants'; import { getKnowledgeBaseUrl } from '@proton/shared/lib/helpers/url'; +import darkIllustration from './assets/session-recovery-dark.svg'; import illustration from './assets/session-recovery.svg'; import RecoveryWarning from './shared/RecoveryWarning'; -import SentinelWarning from './shared/SentinelWarning'; export const SessionRecoverySubpage = () => { + const theme = useTheme(); + const isDarkTheme = theme.information.dark; const [{ isSentinelUser }, loadingIsSentinelUser] = useIsSentinelUser(); const { sendRecoverySettingEnabled } = useRecoverySettingsTelemetry(); - const api = useApi(); const dispatch = useDispatch(); const [loadingSessionRecovery, withLoadingSessionRecovery] = useLoading(); @@ -59,14 +58,17 @@ export const SessionRecoverySubpage = () => { hasRecoveryMethod, loading: loadingUseHasRecoveryMethod, } = useSelector(selectAvailableRecoveryMethods); - const { isSessionRecoveryEnabled, isSessionRecoveryInitiationAvailable } = useSelector(selectSessionRecoveryData); + const { + isSessionRecoveryEnabled, + isSessionRecoveryInitiationAvailable, + loading: loadingSessionRecoveryData, + } = useSelector(selectSessionRecoveryData); const { createNotification } = useNotifications(); const handleEnableSessionRecoveryToggle = async () => { try { - await api(updateSessionAccountRecovery({ SessionAccountRecovery: 1 })); - await dispatch(userSettingsThunk({ cache: CacheType.None })); + await dispatch(toggleSignedInReset({ value: true })); sendRecoverySettingEnabled({ setting: 'session_recovery' }); metrics.core_session_recovery_settings_update_total.increment({ status: 'success', @@ -80,13 +82,7 @@ export const SessionRecoverySubpage = () => { } }; - const learnMoreLink = ( - - {c('Link').t`Learn more`} - - ); - - if (loadingIsSentinelUser) { + if (loadingIsSentinelUser || loadingSessionRecoveryData) { return ; } @@ -137,12 +133,19 @@ export const SessionRecoverySubpage = () => { {c('Info').t`It’s often the easiest way to recover your account if you’re signed in.`}{' '} - {learnMoreLink} + {c('Link') + .t`Learn more`} } right={ - + } /> @@ -196,12 +199,6 @@ export const SessionRecoverySubpage = () => { )} {!isSessionRecoveryEnabled && !isSentinelUser && } - {isSessionRecoveryEnabled && isSentinelUser && ( - - )}
    diff --git a/applications/account/src/app/containers/account/recovery/recoverySubpages/SignInWithAnotherDeviceSubpage.tsx b/applications/account/src/app/containers/account/recovery/recoverySubpages/SignInWithAnotherDeviceSubpage.tsx new file mode 100644 index 00000000000..f01b529881b --- /dev/null +++ b/applications/account/src/app/containers/account/recovery/recoverySubpages/SignInWithAnotherDeviceSubpage.tsx @@ -0,0 +1,121 @@ +import { c } from 'ttag'; + +import { toggleQrCodeSignIn } from '@proton/account/recovery/userSettingsActions'; +import { useUserSettings } from '@proton/account/userSettings/hooks'; +import { DashboardCard, DashboardCardContent } from '@proton/atoms/DashboardCard/DashboardCard'; +import { DashboardGrid } from '@proton/atoms/DashboardGrid/DashboardGrid'; +import { Href } from '@proton/atoms/Href/Href'; +import Loader from '@proton/components/components/loader/Loader'; +import useModalState from '@proton/components/components/modalTwo/useModalState'; +import SettingsDescription, { + SettingsDescriptionItem, +} from '@proton/components/containers/account/SettingsDescription'; +import { SettingsToggleRow } from '@proton/components/containers/account/SettingsToggleRow'; +import SignInWithAnotherDeviceModal from '@proton/components/containers/recovery/SignInWithAnotherDeviceModal'; +import { useRecoverySettingsTelemetry } from '@proton/components/containers/recovery/recoverySettingsTelemetry'; +import { useTheme } from '@proton/components/containers/themes/ThemeProvider'; +import useNotifications from '@proton/components/hooks/useNotifications'; +import { useLoading } from '@proton/hooks/index'; +import { useDispatch } from '@proton/redux-shared-store/sharedProvider'; +import { BRAND_NAME } from '@proton/shared/lib/constants'; +import { getKnowledgeBaseUrl } from '@proton/shared/lib/helpers/url'; +import noop from '@proton/utils/noop'; + +import darkIllustration from './assets/recovery-qr-code-dark.svg'; +import illustration from './assets/recovery-qr-code.svg'; +import RecoveryWarning from './shared/RecoveryWarning'; + +const SignInWithAnotherDeviceSubpage = () => { + const theme = useTheme(); + const isDarkTheme = theme.information.dark; + const { sendRecoverySettingEnabled } = useRecoverySettingsTelemetry(); + const [userSettings, loadingUserSettings] = useUserSettings(); + const [loadingEDM, withLoadingEDM] = useLoading(); + const dispatch = useDispatch(); + const { createNotification } = useNotifications(); + const [modalProps, setModalState, renderModalState] = useModalState(); + + const handleEDMToggle = async (value: boolean) => { + await dispatch(toggleQrCodeSignIn({ value })); + createNotification({ + type: 'info', + text: value ? c('edm').t`QR code sign-in enabled` : c('edm').t`QR code sign-in disabled`, + }); + + if (value) { + sendRecoverySettingEnabled({ setting: 'qr_code_sign_in' }); + } + }; + + const allowScanningQrCode = !userSettings?.Flags.EdmOptOut; + + if (loadingUserSettings) { + return ; + } + + return ( + <> + {renderModalState && } + + + + {c('Info') + .t`Allowing QR code sign-in will let you sign in by scanning a QR code if you forget your password. All you need is to be signed in to a ${BRAND_NAME} service on another device.`}{' '} + + + {c('Info') + .t`This will let you quickly and safely access your ${BRAND_NAME} Account so you can change you password.`}{' '} + {c('Link') + .t`Learn more`} + + + } + right={ + + } + /> + + + { + if (allowScanningQrCode && (e.metaKey || e.ctrlKey)) { + e.preventDefault(); + e.stopPropagation(); + setModalState(true); + } + }} + > + {c('Label').t`Allow QR code sign-in`} + + } + toggle={ + + withLoadingEDM(handleEDMToggle(checked).catch(noop)) + } + /> + } + /> + {!allowScanningQrCode && } + + + + + ); +}; + +export default SignInWithAnotherDeviceSubpage; diff --git a/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/device-based-recovery-dark.svg b/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/device-based-recovery-dark.svg new file mode 100644 index 00000000000..f026ab56aab --- /dev/null +++ b/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/device-based-recovery-dark.svg @@ -0,0 +1,486 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/device-based-recovery.svg b/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/device-based-recovery.svg new file mode 100644 index 00000000000..077a348892a --- /dev/null +++ b/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/device-based-recovery.svg @@ -0,0 +1,383 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/paperplane-dark.svg b/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/paperplane-dark.svg new file mode 100644 index 00000000000..466cbf56c9a --- /dev/null +++ b/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/paperplane-dark.svg @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/paperplane.svg b/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/paperplane.svg new file mode 100644 index 00000000000..95dd4b58280 --- /dev/null +++ b/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/paperplane.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/recovery-contacts-dark.svg b/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/recovery-contacts-dark.svg new file mode 100644 index 00000000000..e174d6a78ff --- /dev/null +++ b/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/recovery-contacts-dark.svg @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/recovery-contacts.svg b/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/recovery-contacts.svg new file mode 100644 index 00000000000..da774e94218 --- /dev/null +++ b/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/recovery-contacts.svg @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/recovery-email-dark.svg b/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/recovery-email-dark.svg new file mode 100644 index 00000000000..27681dba7fe --- /dev/null +++ b/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/recovery-email-dark.svg @@ -0,0 +1,395 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/recovery-email.svg b/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/recovery-email.svg new file mode 100644 index 00000000000..3b67daafcfb --- /dev/null +++ b/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/recovery-email.svg @@ -0,0 +1,269 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/recovery-emergency-contacts-dark.svg b/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/recovery-emergency-contacts-dark.svg new file mode 100644 index 00000000000..726064c5336 --- /dev/null +++ b/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/recovery-emergency-contacts-dark.svg @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/recovery-emergency-contacts.svg b/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/recovery-emergency-contacts.svg new file mode 100644 index 00000000000..75e206d8f68 --- /dev/null +++ b/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/recovery-emergency-contacts.svg @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/recovery-file-dark.svg b/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/recovery-file-dark.svg new file mode 100644 index 00000000000..8c2bee46a6a --- /dev/null +++ b/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/recovery-file-dark.svg @@ -0,0 +1,331 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/recovery-file.svg b/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/recovery-file.svg new file mode 100644 index 00000000000..c7fa6d5ed8c --- /dev/null +++ b/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/recovery-file.svg @@ -0,0 +1,254 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/recovery-phone-dark.svg b/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/recovery-phone-dark.svg new file mode 100644 index 00000000000..825c2c75647 --- /dev/null +++ b/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/recovery-phone-dark.svg @@ -0,0 +1,240 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/recovery-phone.svg b/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/recovery-phone.svg new file mode 100644 index 00000000000..fc18290df0d --- /dev/null +++ b/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/recovery-phone.svg @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/recovery-phrase-dark.svg b/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/recovery-phrase-dark.svg new file mode 100644 index 00000000000..f87f369a7a1 --- /dev/null +++ b/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/recovery-phrase-dark.svg @@ -0,0 +1,184 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/recovery-phrase.svg b/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/recovery-phrase.svg new file mode 100644 index 00000000000..09de0c0d085 --- /dev/null +++ b/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/recovery-phrase.svg @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/recovery-qr-code-dark.svg b/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/recovery-qr-code-dark.svg new file mode 100644 index 00000000000..9190bcc8585 --- /dev/null +++ b/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/recovery-qr-code-dark.svg @@ -0,0 +1,255 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/recovery-qr-code.svg b/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/recovery-qr-code.svg new file mode 100644 index 00000000000..ef5731bc5af --- /dev/null +++ b/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/recovery-qr-code.svg @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/session-recovery-dark.svg b/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/session-recovery-dark.svg new file mode 100644 index 00000000000..abefe984bf5 --- /dev/null +++ b/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/session-recovery-dark.svg @@ -0,0 +1,290 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/session-recovery.svg b/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/session-recovery.svg new file mode 100644 index 00000000000..8f54e4ba18d --- /dev/null +++ b/applications/account/src/app/containers/account/recovery/recoverySubpages/assets/session-recovery.svg @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/applications/account/src/app/containers/account/recoverySubpages/shared/PasswordResetOptionRequiredWarning.scss b/applications/account/src/app/containers/account/recovery/recoverySubpages/shared/PasswordResetOptionRequiredWarning.scss similarity index 100% rename from applications/account/src/app/containers/account/recoverySubpages/shared/PasswordResetOptionRequiredWarning.scss rename to applications/account/src/app/containers/account/recovery/recoverySubpages/shared/PasswordResetOptionRequiredWarning.scss diff --git a/applications/account/src/app/containers/account/recovery/recoverySubpages/shared/PasswordResetOptionRequiredWarning.tsx b/applications/account/src/app/containers/account/recovery/recoverySubpages/shared/PasswordResetOptionRequiredWarning.tsx new file mode 100644 index 00000000000..7d1d95437b2 --- /dev/null +++ b/applications/account/src/app/containers/account/recovery/recoverySubpages/shared/PasswordResetOptionRequiredWarning.tsx @@ -0,0 +1,64 @@ +import { Link } from 'react-router-dom'; + +import { c } from 'ttag'; + +import { useIsSentinelUser } from '@proton/account/recovery/sentinelHooks'; +import { selectAvailableRecoveryMethods } from '@proton/account/recovery/sessionRecoverySelectors'; +import { ButtonLike } from '@proton/atoms/Button/ButtonLike'; +import { DashboardCardContent } from '@proton/atoms/DashboardCard/DashboardCard'; +import { IcExclamationCircleFilled } from '@proton/icons/icons/IcExclamationCircleFilled'; +import { useSelector } from '@proton/redux-shared-store/sharedProvider'; + +import './PasswordResetOptionRequiredWarning.scss'; + +export const PasswordResetOptionRequiredWarningInGroup = ({ emailSubpagePath }: { emailSubpagePath: string }) => { + const { hasAccountRecoveryMethod } = useSelector(selectAvailableRecoveryMethods); + const [{ isSentinelUser }, loadingIsSentinelUser] = useIsSentinelUser(); + + if (hasAccountRecoveryMethod || loadingIsSentinelUser || isSentinelUser) { + return null; + } + + return ( +
    + +

    {c('Info').t`Data recovery requires a password reset option (email or SMS)`}

    + {c('emergency_access').t`Add option`} +
    + ); +}; + +const PasswordResetOptionRequiredWarning = ({ emailSubpagePath }: { emailSubpagePath: string }) => { + const { hasAccountRecoveryMethod } = useSelector(selectAvailableRecoveryMethods); + const [{ isSentinelUser }] = useIsSentinelUser(); + + // Don't show banner for sentinel users even if they don't have an account recovery method + if (hasAccountRecoveryMethod || (!hasAccountRecoveryMethod && isSentinelUser)) { + return null; + } + + return ( + +

    + {c('Info').t`This data recovery method requires a password reset option (email or SMS)`} +

    + {!isSentinelUser && ( + {c('emergency_access').t`Add option`} + )} +
    + ); +}; + +export default PasswordResetOptionRequiredWarning; diff --git a/applications/account/src/app/containers/account/recoverySubpages/shared/RecoveryWarning.tsx b/applications/account/src/app/containers/account/recovery/recoverySubpages/shared/RecoveryWarning.tsx similarity index 100% rename from applications/account/src/app/containers/account/recoverySubpages/shared/RecoveryWarning.tsx rename to applications/account/src/app/containers/account/recovery/recoverySubpages/shared/RecoveryWarning.tsx diff --git a/applications/account/src/app/containers/account/recoverySubpages/shared/SentinelWarning.tsx b/applications/account/src/app/containers/account/recovery/recoverySubpages/shared/SentinelWarning.tsx similarity index 100% rename from applications/account/src/app/containers/account/recoverySubpages/shared/SentinelWarning.tsx rename to applications/account/src/app/containers/account/recovery/recoverySubpages/shared/SentinelWarning.tsx diff --git a/applications/account/src/app/containers/account/recoverySubpages/RecoveryPhraseSubpage.tsx b/applications/account/src/app/containers/account/recoverySubpages/RecoveryPhraseSubpage.tsx deleted file mode 100644 index d413902c196..00000000000 --- a/applications/account/src/app/containers/account/recoverySubpages/RecoveryPhraseSubpage.tsx +++ /dev/null @@ -1,138 +0,0 @@ -import { c } from 'ttag'; - -import { selectMnemonicData } from '@proton/account/recovery/mnemonic'; -import { useUpdateMnemonicRecovery } from '@proton/account/recovery/useUpdateMnemonicRecovery'; -import { Banner } from '@proton/atoms/Banner/Banner'; -import { Button } from '@proton/atoms/Button/Button'; -import { DashboardCard, DashboardCardContent, DashboardCardDivider } from '@proton/atoms/DashboardCard/DashboardCard'; -import { DashboardGrid } from '@proton/atoms/DashboardGrid/DashboardGrid'; -import { Href } from '@proton/atoms/Href/Href'; -import SettingsDescription, { - SettingsDescriptionItem, -} from '@proton/components/containers/account/SettingsDescription'; -import { SettingsToggleRow } from '@proton/components/containers/account/SettingsToggleRow'; -import { IcArrowRotateRight } from '@proton/icons/icons/IcArrowRotateRight'; -import { IcPlus } from '@proton/icons/icons/IcPlus'; -import { useSelector } from '@proton/redux-shared-store/sharedProvider'; -import { BRAND_NAME } from '@proton/shared/lib/constants'; -import { getKnowledgeBaseUrl } from '@proton/shared/lib/helpers/url'; - -import illustration from './assets/recovery-phrase.svg'; - -const RecoveryPhraseSubpage = () => { - const mnemonicData = useSelector(selectMnemonicData); - const updateMnemonicRecovery = useUpdateMnemonicRecovery(mnemonicData); - - if (!mnemonicData.isMnemonicAvailable) { - return null; - } - - const learnMoreLink = ( - {c('Link').t`Learn more`} - ); - - return ( - <> - {updateMnemonicRecovery.el} - - - - {c('Info') - .t`Your recovery phrase—contained in your Recovery Kit—will allow you to sign in and recover your data if you get locked out of your ${BRAND_NAME} Account. It is composed of 12 words and acts like a backup password.`} - - - {c('Info') - .t`It’s the only way to instantly recover everything, so make sure you keep it somewhere safe but accessible.`}{' '} - {learnMoreLink} - - - } - right={ - - } - /> - - {mnemonicData.hasOutdatedMnemonic && ( - - {c('Warning') - .t`Your recovery phrase is outdated. It can't recover new data if you reset your password again.`} - - )} - - - -

    {c('Title').t`Your recovery phrase`}

    - - {mnemonicData.createMnemonic && ( -
    - -
    - )} - - {mnemonicData.hasOutdatedMnemonic && ( -
    - -
    - )} - - {mnemonicData.isMnemonicSet && ( -
    - -
    - )} - - - - - {c('Label').t`Allow recovery by recovery phrase`} - - - {c('Info') - .t`We strongly recommend that everyone enable recovery by recovery phrase.`} - - - } - toggle={ - { - updateMnemonicRecovery.updateToggle(checked); - }} - /> - } - /> -
    -
    -
    - - ); -}; - -export default RecoveryPhraseSubpage; diff --git a/applications/account/src/app/containers/account/recoverySubpages/SignInWithAnotherDeviceSubpage.tsx b/applications/account/src/app/containers/account/recoverySubpages/SignInWithAnotherDeviceSubpage.tsx deleted file mode 100644 index debb5e57eda..00000000000 --- a/applications/account/src/app/containers/account/recoverySubpages/SignInWithAnotherDeviceSubpage.tsx +++ /dev/null @@ -1,137 +0,0 @@ -import { c } from 'ttag'; - -import { useIsSentinelUser } from '@proton/account/recovery/sentinelHooks'; -import { userSettingsActions } from '@proton/account/userSettings'; -import { useUserSettings } from '@proton/account/userSettings/hooks'; -import { DashboardCard, DashboardCardContent } from '@proton/atoms/DashboardCard/DashboardCard'; -import { DashboardGrid } from '@proton/atoms/DashboardGrid/DashboardGrid'; -import { Href } from '@proton/atoms/Href/Href'; -import Loader from '@proton/components/components/loader/Loader'; -import useModalState from '@proton/components/components/modalTwo/useModalState'; -import SettingsDescription, { - SettingsDescriptionItem, -} from '@proton/components/containers/account/SettingsDescription'; -import { SettingsToggleRow } from '@proton/components/containers/account/SettingsToggleRow'; -import SignInWithAnotherDeviceModal from '@proton/components/containers/recovery/SignInWithAnotherDeviceModal'; -import { useRecoverySettingsTelemetry } from '@proton/components/containers/recovery/recoverySettingsTelemetry'; -import useApi from '@proton/components/hooks/useApi'; -import useNotifications from '@proton/components/hooks/useNotifications'; -import { useLoading } from '@proton/hooks/index'; -import { IcShieldExclamationFilled } from '@proton/icons/icons/IcShieldExclamationFilled'; -import { useDispatch } from '@proton/redux-shared-store/sharedProvider'; -import { updateFlags } from '@proton/shared/lib/api/settings'; -import { BRAND_NAME } from '@proton/shared/lib/constants'; -import { getKnowledgeBaseUrl } from '@proton/shared/lib/helpers/url'; -import { EDM_VALUE, type UserSettings } from '@proton/shared/lib/interfaces'; -import noop from '@proton/utils/noop'; - -import illustration from './assets/recovery-qr-code.svg'; -import RecoveryWarning from './shared/RecoveryWarning'; -import SentinelWarning from './shared/SentinelWarning'; - -const SignInWithAnotherDeviceSubpage = () => { - const { sendRecoverySettingEnabled } = useRecoverySettingsTelemetry(); - const [userSettings, loadingUserSettings] = useUserSettings(); - const [{ isSentinelUser }, loadingIsSentinelUser] = useIsSentinelUser(); - const [loadingEDM, withLoadingEDM] = useLoading(); - const dispatch = useDispatch(); - const api = useApi(); - const { createNotification } = useNotifications(); - const [modalProps, setModalState, renderModalState] = useModalState(); - - const handleEDMToggle = async (value: EDM_VALUE) => { - await api<{ UserSettings: UserSettings }>(updateFlags({ EdmOptOut: value })); - dispatch(userSettingsActions.update({ UserSettings: { Flags: { EdmOptOut: value } } })); - createNotification({ - type: 'info', - text: - value === EDM_VALUE.DISABLED - ? c('edm').t`QR code sign-in disabled` - : c('edm').t`QR code sign-in enabled`, - }); - - if (value === EDM_VALUE.ENABLED) { - sendRecoverySettingEnabled({ setting: 'qr_code_sign_in' }); - } - }; - - const allowScanningQrCode = !userSettings?.Flags.EdmOptOut; - - const learnMoreLink = ( - {c('Link').t`Learn more`} - ); - - if (loadingUserSettings || loadingIsSentinelUser) { - return ; - } - - return ( - <> - {renderModalState && } - - - - {c('Info') - .t`Allowing QR code sign-in will let you sign in by scanning a QR code if you forget your password. All you need is to be signed in to a ${BRAND_NAME} service on another device.`}{' '} - - - {c('Info') - .t`This will let you quickly and safely access your ${BRAND_NAME} Account so you can change you password.`}{' '} - {learnMoreLink} - - - } - right={ - - } - /> - - - { - if (allowScanningQrCode && (e.metaKey || e.ctrlKey)) { - e.preventDefault(); - e.stopPropagation(); - setModalState(true); - } - }} - > - {c('Label').t`Allow QR code sign-in`} - {isSentinelUser && } - - } - toggle={ - - withLoadingEDM( - handleEDMToggle(!checked ? EDM_VALUE.DISABLED : EDM_VALUE.ENABLED).catch( - noop - ) - ) - } - /> - } - /> - {!allowScanningQrCode && !isSentinelUser && } - {allowScanningQrCode && isSentinelUser && ( - - )} - - - - - ); -}; - -export default SignInWithAnotherDeviceSubpage; diff --git a/applications/account/src/app/containers/account/recoverySubpages/assets/device-based-recovery.svg b/applications/account/src/app/containers/account/recoverySubpages/assets/device-based-recovery.svg deleted file mode 100644 index 52614b65ec9..00000000000 --- a/applications/account/src/app/containers/account/recoverySubpages/assets/device-based-recovery.svg +++ /dev/null @@ -1,530 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    diff --git a/applications/account/src/app/containers/account/recoverySubpages/assets/recovery-contacts.svg b/applications/account/src/app/containers/account/recoverySubpages/assets/recovery-contacts.svg deleted file mode 100644 index a99cc1bbe12..00000000000 --- a/applications/account/src/app/containers/account/recoverySubpages/assets/recovery-contacts.svg +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/applications/account/src/app/containers/account/recoverySubpages/assets/recovery-email.svg b/applications/account/src/app/containers/account/recoverySubpages/assets/recovery-email.svg deleted file mode 100644 index 0c918030b7a..00000000000 --- a/applications/account/src/app/containers/account/recoverySubpages/assets/recovery-email.svg +++ /dev/null @@ -1,346 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/applications/account/src/app/containers/account/recoverySubpages/assets/recovery-emergency-contacts.svg b/applications/account/src/app/containers/account/recoverySubpages/assets/recovery-emergency-contacts.svg deleted file mode 100644 index 127e213e87d..00000000000 --- a/applications/account/src/app/containers/account/recoverySubpages/assets/recovery-emergency-contacts.svg +++ /dev/null @@ -1,227 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/applications/account/src/app/containers/account/recoverySubpages/assets/recovery-file.svg b/applications/account/src/app/containers/account/recoverySubpages/assets/recovery-file.svg deleted file mode 100644 index 2ab71af5861..00000000000 --- a/applications/account/src/app/containers/account/recoverySubpages/assets/recovery-file.svg +++ /dev/null @@ -1,308 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/applications/account/src/app/containers/account/recoverySubpages/assets/recovery-phone.svg b/applications/account/src/app/containers/account/recoverySubpages/assets/recovery-phone.svg deleted file mode 100644 index 890de360767..00000000000 --- a/applications/account/src/app/containers/account/recoverySubpages/assets/recovery-phone.svg +++ /dev/null @@ -1,266 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/applications/account/src/app/containers/account/recoverySubpages/assets/recovery-phrase.svg b/applications/account/src/app/containers/account/recoverySubpages/assets/recovery-phrase.svg deleted file mode 100644 index 36f40a2339f..00000000000 --- a/applications/account/src/app/containers/account/recoverySubpages/assets/recovery-phrase.svg +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/applications/account/src/app/containers/account/recoverySubpages/assets/recovery-qr-code.svg b/applications/account/src/app/containers/account/recoverySubpages/assets/recovery-qr-code.svg deleted file mode 100644 index 095989ce120..00000000000 --- a/applications/account/src/app/containers/account/recoverySubpages/assets/recovery-qr-code.svg +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/applications/account/src/app/containers/account/recoverySubpages/assets/session-recovery.svg b/applications/account/src/app/containers/account/recoverySubpages/assets/session-recovery.svg deleted file mode 100644 index fbc97237662..00000000000 --- a/applications/account/src/app/containers/account/recoverySubpages/assets/session-recovery.svg +++ /dev/null @@ -1,273 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/applications/account/src/app/containers/account/recoverySubpages/shared/PasswordResetOptionRequiredWarning.tsx b/applications/account/src/app/containers/account/recoverySubpages/shared/PasswordResetOptionRequiredWarning.tsx deleted file mode 100644 index 2d9c4349701..00000000000 --- a/applications/account/src/app/containers/account/recoverySubpages/shared/PasswordResetOptionRequiredWarning.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import { Link } from 'react-router-dom'; - -import { c } from 'ttag'; - -import { selectAvailableRecoveryMethods } from '@proton/account/recovery/sessionRecoverySelectors'; -import { ButtonLike } from '@proton/atoms/Button/ButtonLike'; -import { DashboardCardContent } from '@proton/atoms/DashboardCard/DashboardCard'; -import { useSelector } from '@proton/redux-shared-store/sharedProvider'; - -import './PasswordResetOptionRequiredWarning.scss'; - -const PasswordResetOptionRequiredWarning = ({ emailSubpagePath }: { emailSubpagePath: string }) => { - const { hasAccountRecoveryMethod } = useSelector(selectAvailableRecoveryMethods); - - if (hasAccountRecoveryMethod) { - return null; - } - - return ( - -

    {c('Info') - .t`To use this data recovery method, you must have a password reset option, like email verification or SMS verification.`}

    - {c( - 'emergency_access' - ).t`Add option`} -
    - ); -}; - -export default PasswordResetOptionRequiredWarning; diff --git a/applications/account/src/app/containers/account/routes.test.ts b/applications/account/src/app/containers/account/routes.test.ts index d081f90acf1..1e0bfe12712 100644 --- a/applications/account/src/app/containers/account/routes.test.ts +++ b/applications/account/src/app/containers/account/routes.test.ts @@ -1,8 +1,10 @@ import type { Subscription } from '@proton/payments'; import { Renew, hasCancellablePlan, isCancellableOnlyViaSupport } from '@proton/payments'; import { APPS } from '@proton/shared/lib/constants'; +import { PERMISSIONS } from '@proton/shared/lib/interfaces/UserPermission'; import { buildUser } from '@proton/testing/builders/user'; +import type { AccountRouterParams, Flags } from '../../content/router-params'; import { getAccountAppRoutes } from './routes'; jest.mock('@proton/payments', () => ({ @@ -19,39 +21,65 @@ jest.mock('@proton/payments', () => ({ const mockedHasCancellablePlan = jest.mocked(hasCancellablePlan); const mockedIsCancellableOnlyViaSupport = jest.mocked(isCancellableOnlyViaSupport); -function buildDefaultParams(overrides?: Record) { +const defaultFlags: Flags = { + canDisplayB2BLogsPass: false, + canDisplayB2BLogsVPN: false, + canDisplayPassReports: false, + canDisplayNonPrivateEmailPhone: false, + isUserGroupsFeatureEnabled: false, + isUserGroupsNoCustomDomainEnabled: false, + isUserGroupsPassBusinessEnabled: false, + isScribeEnabled: false, + isZoomIntegrationEnabled: false, + isProtonMeetIntegrationEnabled: false, + isSharedServerFeatureEnabled: false, + isCryptoPostQuantumOptInEnabled: false, + isSsoForPbsEnabled: false, + isRetentionPoliciesEnabled: false, + isAuthenticatorAvailable: false, + isOLESEnabled: false, + isCategoryViewEnabled: false, + isRecoveryContactsEnabled: false, + isRolesAndPermissionsEnabled: false, + isRecoverySettingsRedesignEnabled: false, +}; + +type Overrides = Omit, 'flags'> & { flags?: Partial }; + +function buildDefaultParams({ flags: flagOverrides, ...rest }: Overrides = {}): AccountRouterParams { return { app: APPS.PROTONMAIL, user: buildUser(), subscription: { Renew: Renew.Enabled } as Subscription, isDataRecoveryAvailable: false, - isRecoveryContactsEnabled: false, isSessionRecoveryAvailable: false, isReferralProgramEnabled: false, recoveryNotification: undefined, organization: undefined, showVPNDashboard: false, - showVPNDashboardVariant: 'disabled' as const, + showVPNDashboardVariant: 'disabled', showThemeSelection: false, assistantKillSwitch: false, memberships: undefined, - isZoomIntegrationEnabled: false, - isProtonMeetIntegrationEnabled: false, isB2BTrial: false, + isB2BDrive: false, + isGroupOwner: null, referralInfo: { refereeRewardAmount: '0', referrerRewardAmount: '0', maxRewardAmount: '0' }, - canDisplayNonPrivateEmailPhone: false, showMailDashboard: true, - showMailDashboardVariant: 'disabled' as const, + showMailDashboardVariant: 'disabled', showPassDashboard: false, - showPassDashboardVariant: 'disabled' as const, + showPassDashboardVariant: 'disabled', showDriveDashboard: false, - showDriveDashboardVariant: 'disabled' as const, + showDriveDashboardVariant: 'disabled', showMeetDashboard: false, - showMeetDashboardVariant: 'disabled' as const, + showMeetDashboardVariant: 'disabled', hasPendingInvitations: false, - isOLESEnabled: false, - isRecoverySettingsRedesignEnabled: false, - ...overrides, + permissions: Object.fromEntries(PERMISSIONS.map((p) => [p, false])) as Record< + (typeof PERMISSIONS)[number], + boolean + >, + flags: { ...defaultFlags, ...flagOverrides }, + ...rest, }; } diff --git a/applications/account/src/app/containers/account/routes.ts b/applications/account/src/app/containers/account/routes.ts index cb10b81cad0..6f1818d996b 100644 --- a/applications/account/src/app/containers/account/routes.ts +++ b/applications/account/src/app/containers/account/routes.ts @@ -20,14 +20,12 @@ import { import type { MaybeFreeSubscription } from '@proton/payments/core/subscription/helpers'; import { APPS, - type APP_NAMES, BRAND_NAME, DARK_WEB_MONITORING_NAME, PRODUCT_NAMES, PROTON_SENTINEL_NAME, } from '@proton/shared/lib/constants'; import { getIsAccountRecoveryAvailable } from '@proton/shared/lib/helpers/recovery'; -import type { Address, GroupMembershipReturn, OrganizationExtended, UserModel } from '@proton/shared/lib/interfaces'; import { UserType } from '@proton/shared/lib/interfaces'; import { getIsBYOEAccount, @@ -38,14 +36,8 @@ import { import { getOrganizationDenomination, isOrganizationVisionary } from '@proton/shared/lib/organization/helper'; import { isSubscriptionRenewEnabled } from '@proton/shared/lib/subscription/helpers'; import { getHasStorageSplit } from '@proton/shared/lib/user/storage'; -import type { - DriveDashboardVariant, - MailDashboardVariant, - MeetDashboardVariant, - PassDashboardVariant, - VPNDashboardVariant, -} from '@proton/unleash/UnleashFeatureFlagsVariants'; +import type { AccountRouterParams } from '../../content/router-params'; import { recoveryIds } from './recoveryIds'; function getV2DashboardSections(canPay: boolean, planIsManagedExternally: boolean, hasPendingInvitations: boolean) { @@ -175,18 +167,20 @@ function getV1DashboardSections( const getRecoverySettings = ({ isDataRecoveryAvailable, + isMnemonicAvailable, + isRecoveryFileAvailable, isSessionRecoveryAvailable, - isEmergencyAccessAvailable, - isRecoveryContactsAvailable, + isDelegatedAccessAvailable, isRecoverySettingsRedesignEnabled, isAccountRecoveryAvailable, recoveryNotification, }: { isAccountRecoveryAvailable: boolean; isDataRecoveryAvailable: boolean; + isMnemonicAvailable: boolean; + isRecoveryFileAvailable: boolean; isSessionRecoveryAvailable: boolean; - isEmergencyAccessAvailable: boolean; - isRecoveryContactsAvailable: boolean; + isDelegatedAccessAvailable: boolean; isRecoverySettingsRedesignEnabled: boolean; recoveryNotification?: ThemeColor; }) => { @@ -220,21 +214,21 @@ const getRecoverySettings = ({ id: 'device-backup', text: c('Title').t`Device data backup`, to: '/device-backup', - available: isDataRecoveryAvailable, + available: isRecoveryFileAvailable, variant: SettingsLayoutVariant.Card, }, backupFile: { id: 'backup-file', text: c('Title').t`Recovery file`, to: '/backup-file', - available: isDataRecoveryAvailable, + available: isRecoveryFileAvailable, variant: SettingsLayoutVariant.Card, }, recoveryContacts: { id: 'recovery-contacts', - text: c('emergency_access').t`Contact-assisted recovery`, + text: c('emergency_access').t`Data recovery contacts`, to: '/recovery-contacts', - available: isRecoveryContactsAvailable, + available: isDelegatedAccessAvailable, variant: SettingsLayoutVariant.Card, }, }, @@ -248,7 +242,7 @@ const getRecoverySettings = ({ id: 'phrase', text: c('Title').t`Recovery phrase`, to: '/phrase', - available: isDataRecoveryAvailable, + available: isMnemonicAvailable, variant: SettingsLayoutVariant.Card, }, signedInReset: { @@ -268,7 +262,7 @@ const getRecoverySettings = ({ id: 'emergency-contacts', text: c('emergency_access').t`Emergency access`, to: '/emergency-contacts', - available: isEmergencyAccessAvailable, + available: isDelegatedAccessAvailable, variant: SettingsLayoutVariant.Card, }, }, @@ -313,14 +307,14 @@ const getRecoverySettings = ({ available: isDataRecoveryAvailable, }, { - text: c('emergency_access').t`Emergency access`, - id: recoveryIds.emergencyAccess, - available: isEmergencyAccessAvailable, + text: c('emergency_access').t`Data recovery contacts`, + id: recoveryIds.recoveryContacts, + available: isDelegatedAccessAvailable, }, { - text: c('emergency_access').t`Contact-assisted recovery`, - id: recoveryIds.recoveryContacts, - available: isRecoveryContactsAvailable, + text: c('emergency_access').t`Emergency access`, + id: recoveryIds.emergencyAccess, + available: isDelegatedAccessAvailable, }, { text: c('Title').t`Password reset settings`, @@ -335,67 +329,35 @@ const getRecoverySettings = ({ export const getAccountAppRoutes = ({ app, user, - isSessionRecoveryAvailable, - isRecoveryContactsEnabled, subscription, + organization, isDataRecoveryAvailable, + isSessionRecoveryAvailable, isReferralProgramEnabled, recoveryNotification, - organization, showVPNDashboard, showVPNDashboardVariant, showThemeSelection, assistantKillSwitch, memberships, - isZoomIntegrationEnabled, - isProtonMeetIntegrationEnabled, isB2BTrial, referralInfo, - canDisplayNonPrivateEmailPhone, showMailDashboard, showPassDashboard, showDriveDashboard, showMeetDashboard, hasPendingInvitations, - isOLESEnabled, - isRecoverySettingsRedesignEnabled, -}: { - app: APP_NAMES; - user: UserModel; - addresses?: Address[]; - subscription: MaybeFreeSubscription; - isDataRecoveryAvailable: boolean; - isRecoveryContactsEnabled: boolean; - isSessionRecoveryAvailable: boolean; - isReferralProgramEnabled: boolean; - recoveryNotification?: ThemeColor; - organization?: OrganizationExtended; - showVPNDashboard: boolean; - showVPNDashboardVariant: VPNDashboardVariant | 'disabled' | undefined; - showThemeSelection: boolean; - assistantKillSwitch: boolean; - memberships: GroupMembershipReturn[] | undefined; - isZoomIntegrationEnabled: boolean; - isProtonMeetIntegrationEnabled: boolean; - isB2BTrial: boolean; - referralInfo: { - refereeRewardAmount: string; - referrerRewardAmount: string; - maxRewardAmount: string; - }; - canDisplayNonPrivateEmailPhone: boolean; - showMailDashboard: boolean; - showMailDashboardVariant: MailDashboardVariant | 'disabled' | undefined; - showPassDashboard: boolean; - showPassDashboardVariant: PassDashboardVariant | 'disabled' | undefined; - showDriveDashboard: boolean; - showDriveDashboardVariant: DriveDashboardVariant | 'disabled' | undefined; - showMeetDashboard: boolean; - showMeetDashboardVariant: MeetDashboardVariant | 'disabled' | undefined; - hasPendingInvitations: boolean; - isOLESEnabled: boolean; - isRecoverySettingsRedesignEnabled: boolean; -}) => { + flags, +}: AccountRouterParams) => { + const { + isZoomIntegrationEnabled = false, + isProtonMeetIntegrationEnabled = false, + canDisplayNonPrivateEmailPhone = false, + isOLESEnabled = false, + isRecoverySettingsRedesignEnabled = false, + isMnemonicAvailable = false, + isRecoveryFileAvailable = false, + } = flags; const { isFree, canPay, isPaid, isMember, isAdmin, Type, hasPaidMail } = user; const credits = referralInfo.maxRewardAmount; @@ -442,18 +404,17 @@ export const getAccountAppRoutes = ({ (organization?.Settings.VideoConferencingEnabled || !hasPaidMail); const isAccountRecoveryAvailable = getIsAccountRecoveryAvailable(user); - const isEmergencyAccessAvailable = user.isPrivate && getIsOutgoingDelegatedAccessAvailable(user); - const isRecoveryContactsAvailable = isRecoveryContactsEnabled && isEmergencyAccessAvailable; - const isNonPrivateEmergencyAccessAvailable = !user.isPrivate && getIsIncomingDelegatedAccessAvailable(user); - const isNonPrivateRecoveryContactsAvailable = isRecoveryContactsEnabled && isNonPrivateEmergencyAccessAvailable; + const isDelegatedAccessAvailable = user.isPrivate && getIsOutgoingDelegatedAccessAvailable(user); + const isNonPrivateDelegatedAccessAvailable = !user.isPrivate && getIsIncomingDelegatedAccessAvailable(user); const recoverySettings = getRecoverySettings({ isAccountRecoveryAvailable, recoveryNotification, isRecoverySettingsRedesignEnabled, isSessionRecoveryAvailable, isDataRecoveryAvailable, - isEmergencyAccessAvailable, - isRecoveryContactsAvailable, + isMnemonicAvailable, + isRecoveryFileAvailable, + isDelegatedAccessAvailable, }); const paymentsSectionAvailable = @@ -667,12 +628,12 @@ export const getAccountAppRoutes = ({ text: c('Title').t`Emergency access`, id: 'emergency-access', // This is a special section for non-private users that only contains incoming delegated access - available: isNonPrivateEmergencyAccessAvailable, + available: isNonPrivateDelegatedAccessAvailable, }, { - text: c('emergency_access').t`Contact-assisted recovery`, + text: c('emergency_access').t`Data recovery contacts`, id: recoveryIds.recoveryContacts, - available: isNonPrivateRecoveryContactsAvailable, + available: isNonPrivateDelegatedAccessAvailable, }, { text: isFamilyOrg @@ -799,7 +760,8 @@ export const getAccountAppRoutes = ({ easySwitch: { id: 'easySwitch', text: c('Title').t`Import via ${PRODUCT_NAMES.EASY_SWITCH}`, - description: c('Description').t`Bring over email, calendar events, and contacts from another provider.`, + description: c('Description') + .t`Bring over your email, calendar events, and contacts from another provider.`, to: '/easy-switch', icon: 'arrow-down-to-square', available: showEasySwitchSection, @@ -812,7 +774,7 @@ export const getAccountAppRoutes = ({ id: 'import-list', }, { - text: c('Title').t`Forwardings`, + text: c('Title').t`Connected emails`, id: 'forwarding-list', }, ], diff --git a/applications/account/src/app/containers/authenticator/routes.ts b/applications/account/src/app/containers/authenticator/routes.ts index efacba097cb..6af64322a69 100644 --- a/applications/account/src/app/containers/authenticator/routes.ts +++ b/applications/account/src/app/containers/authenticator/routes.ts @@ -3,7 +3,10 @@ import { c } from 'ttag'; import type { SectionConfig } from '@proton/components'; import { AUTHENTICATOR_APP_NAME } from '@proton/shared/lib/constants'; -export const getAuthenticatorAppRoutes = ({ isAuthenticatorAvailable }: { isAuthenticatorAvailable: boolean }) => { +import type { GeneralRouterParams } from '../../content/router-params'; + +export const getAuthenticatorAppRoutes = ({ flags }: GeneralRouterParams) => { + const { isAuthenticatorAvailable = false } = flags; return { header: AUTHENTICATOR_APP_NAME, available: isAuthenticatorAvailable, diff --git a/applications/account/src/app/containers/calendar/routes.ts b/applications/account/src/app/containers/calendar/routes.ts index 77598c770a9..e3bf4b070d4 100644 --- a/applications/account/src/app/containers/calendar/routes.ts +++ b/applications/account/src/app/containers/calendar/routes.ts @@ -3,31 +3,18 @@ import { c } from 'ttag'; import type { SectionConfig, SidebarConfig } from '@proton/components'; import { getIsB2BAudienceFromPlan } from '@proton/payments'; import { CALENDAR_SETTINGS_ROUTE, CALENDAR_SETTINGS_SECTION_ID } from '@proton/shared/lib/calendar/constants'; -import type { APP_NAMES } from '@proton/shared/lib/constants'; import { APPS, CALENDAR_APP_NAME } from '@proton/shared/lib/constants'; import { isElectronMail } from '@proton/shared/lib/helpers/desktop'; -import type { Organization, UserModel } from '@proton/shared/lib/interfaces'; import { getOrganizationDenomination, isOrganizationVisionary } from '@proton/shared/lib/organization/helper'; -interface Props { - app: APP_NAMES; - user: UserModel; - isZoomIntegrationEnabled: boolean; - isProtonMeetIntegrationEnabled: boolean; - organization?: Organization; -} +import type { OrganizationRouterParams } from '../../content/router-params'; /** * Calendar config is coupled to CalendarSidebar. * Any additional section must also be added to CalendarSidebar. */ -export const getCalendarAppRoutes = ({ - app, - user, - organization, - isZoomIntegrationEnabled, - isProtonMeetIntegrationEnabled, -}: Props): SidebarConfig => { +export const getCalendarAppRoutes = ({ app, user, organization, flags }: OrganizationRouterParams): SidebarConfig => { + const { isZoomIntegrationEnabled = false, isProtonMeetIntegrationEnabled = false } = flags; const isB2BAudience = getIsB2BAudienceFromPlan(organization?.PlanName); const isFamilyOrg = !!organization && getOrganizationDenomination(organization) === 'familyGroup'; const isVisionary = isOrganizationVisionary(organization); diff --git a/applications/account/src/app/containers/docs/routes.ts b/applications/account/src/app/containers/docs/routes.ts index bed14ccbb5c..a288edf6bad 100644 --- a/applications/account/src/app/containers/docs/routes.ts +++ b/applications/account/src/app/containers/docs/routes.ts @@ -1,10 +1,11 @@ import { c } from 'ttag'; import type { SectionConfig } from '@proton/components'; -import type { APP_NAMES } from '@proton/shared/lib/constants'; import { APPS, DOCS_APP_NAME } from '@proton/shared/lib/constants'; -export const getDocsAppRoutes = ({ app }: { app: APP_NAMES }) => { +import type { GeneralRouterParams } from '../../content/router-params'; + +export const getDocsAppRoutes = ({ app }: GeneralRouterParams) => { return { available: app === APPS.PROTONDOCS, header: DOCS_APP_NAME, diff --git a/applications/account/src/app/containers/drive/DriveSettingsRouter.tsx b/applications/account/src/app/containers/drive/DriveSettingsRouter.tsx index dd7ffd726cb..0a7ccb54228 100644 --- a/applications/account/src/app/containers/drive/DriveSettingsRouter.tsx +++ b/applications/account/src/app/containers/drive/DriveSettingsRouter.tsx @@ -1,8 +1,8 @@ import type { ReactNode } from 'react'; import { Route, Switch, useRouteMatch } from 'react-router-dom'; -import { B2BPhotosSection, PrivateMainSettingsArea, RetentionDaysSection } from '@proton/components'; -import { getIsSectionAvailable, getSectionPath } from '@proton/components/containers/layout/helper'; +import { PrivateMainSettingsArea, RetentionDaysSection } from '@proton/components'; +import { getSectionPath } from '@proton/components/containers/layout/helper'; import type { getDriveAppRoutes } from './routes'; @@ -16,7 +16,7 @@ const DriveSettingsRouter = ({ const { path } = useRouteMatch(); const { - routes: { revisions, photos }, + routes: { revisions }, } = driveAppRoutes; return ( @@ -26,13 +26,6 @@ const DriveSettingsRouter = ({ - {getIsSectionAvailable(photos) && ( - - - - - - )} {redirect} ); diff --git a/applications/account/src/app/containers/drive/routes.ts b/applications/account/src/app/containers/drive/routes.ts index 44e97cde4ad..7b1a80f8067 100644 --- a/applications/account/src/app/containers/drive/routes.ts +++ b/applications/account/src/app/containers/drive/routes.ts @@ -1,18 +1,11 @@ import { c } from 'ttag'; import type { SectionConfig } from '@proton/components'; -import type { APP_NAMES } from '@proton/shared/lib/constants'; import { APPS, BRAND_NAME, DRIVE_APP_NAME } from '@proton/shared/lib/constants'; -export const getDriveAppRoutes = ({ - app, - isB2BDrive, - canB2BHidePhotos, -}: { - app: APP_NAMES; - isB2BDrive: boolean; - canB2BHidePhotos: boolean; -}) => { +import type { OrganizationRouterParams } from '../../content/router-params'; + +export const getDriveAppRoutes = ({ app }: OrganizationRouterParams) => { return { available: app === APPS.PROTONDRIVE, header: DRIVE_APP_NAME, @@ -30,19 +23,6 @@ export const getDriveAppRoutes = ({ }, ], }, - photos: { - id: 'photos', - available: isB2BDrive && canB2BHidePhotos, - text: c('Title').t`Photos`, - to: '/photos', - icon: 'image', - description: c('Info').t`You can enable the Photos section from the interface using the toggle below.`, - subsections: [ - { - id: 'photos', - }, - ], - }, } satisfies Record, }; }; diff --git a/applications/account/src/app/containers/mail/routes.tsx b/applications/account/src/app/containers/mail/routes.tsx index 3dac6549b18..c6e0aade95d 100644 --- a/applications/account/src/app/containers/mail/routes.tsx +++ b/applications/account/src/app/containers/mail/routes.tsx @@ -3,14 +3,15 @@ import { c } from 'ttag'; import { Href } from '@proton/atoms/Href/Href'; import type { SidebarConfig } from '@proton/components'; import { getMailRouteTitles } from '@proton/components/containers/account/constants/settingsRouteTitles'; -import type { APP_NAMES } from '@proton/shared/lib/constants'; import { ADDRESS_TYPE, APPS, MAIL_APP_NAME } from '@proton/shared/lib/constants'; import { isElectronMail } from '@proton/shared/lib/helpers/desktop'; import { hasOrganizationSetupWithKeys } from '@proton/shared/lib/helpers/organization'; import { getKnowledgeBaseUrl } from '@proton/shared/lib/helpers/url'; -import type { Address, OrganizationExtended, UserModel } from '@proton/shared/lib/interfaces'; +import type { Address, UserModel } from '@proton/shared/lib/interfaces'; import { getIsExternalAccount } from '@proton/shared/lib/keys'; +import type { OrganizationRouterParams } from '../../content/router-params'; + export const getHasPmMeAddress = (addresses?: Address[]) => { return !!addresses?.some(({ Type }) => Type === ADDRESS_TYPE.TYPE_PREMIUM); }; @@ -32,16 +33,9 @@ export const getMailAppRoutes = ({ user, addresses, organization, - isCryptoPostQuantumOptInEnabled, - isCategoryViewEnabled, -}: { - app: APP_NAMES; - user: UserModel; - addresses?: Address[]; - organization?: OrganizationExtended; - isCryptoPostQuantumOptInEnabled?: boolean; - isCategoryViewEnabled?: boolean; -}): SidebarConfig => { + flags, +}: OrganizationRouterParams): SidebarConfig => { + const { isCryptoPostQuantumOptInEnabled = false, isCategoryViewEnabled = false } = flags; const hasOrganizationKey = hasOrganizationSetupWithKeys(organization); const learnMoreLink = ( {c('Link').t`Learn more`} @@ -76,8 +70,7 @@ export const getMailAppRoutes = ({ { text: c('Title').t`Email categories`, id: 'categories', - available: - isCategoryViewEnabled && organization && organization?.Settings.MailCategoryViewEnabled, + available: isCategoryViewEnabled, }, { text: c('Title').t`Layout`, @@ -202,7 +195,8 @@ export const getMailAppRoutes = ({ id: 'pgp-settings', }, { - text: c('Title').t`Post-quantum protection`, + // title rendering is temporarily handled in the PostQuantumKeysOptInSection + text: undefined, // c('Title').t`Post-quantum protection`, id: 'pqc-optin', available: isCryptoPostQuantumOptInEnabled && user.isSelf, }, diff --git a/applications/account/src/app/containers/mail/sections/CategoriesViewSections.tsx b/applications/account/src/app/containers/mail/sections/CategoriesViewSections.tsx index 08d1c20a454..4af1987705e 100644 --- a/applications/account/src/app/containers/mail/sections/CategoriesViewSections.tsx +++ b/applications/account/src/app/containers/mail/sections/CategoriesViewSections.tsx @@ -66,41 +66,34 @@ export const CategoriesViewSections = () => { )} >
    -
    -

    - {c('Label').t`Categories`}{' '} - {/* This is intentionally not translated, will be removed after the alpha */} - -

    -

    - {c('Label').t`Notifications`} -

    +
    +

    {c('Label').t`Categories`}

    +
    +

    + {c('Label').t`Notifications`} +

    + +
    - {categoriesStore - .filter((category) => category.ID !== MAILBOX_LABEL_IDS.CATEGORY_DEFAULT) - .map((tmp) => { - const category = getCategoryTabFromLabel(tmp); + {categoriesStore.map((tmp) => { + const category = getCategoryTabFromLabel(tmp); - return ( - - ); - })} + return ( + + ); + })}
    diff --git a/applications/account/src/app/containers/mail/sections/CategorySettingsItem.tsx b/applications/account/src/app/containers/mail/sections/CategorySettingsItem.tsx index 28c40ad1704..4b250b1636f 100644 --- a/applications/account/src/app/containers/mail/sections/CategorySettingsItem.tsx +++ b/applications/account/src/app/containers/mail/sections/CategorySettingsItem.tsx @@ -9,6 +9,8 @@ import { getDescriptionFromCategoryId, getLabelFromCategoryId, } from '@proton/mail/features/categoriesView/categoriesStringHelpers'; +import { useCategoriesTelemetry } from '@proton/mail/features/categoriesView/useCategoriesTelemetry'; +import { MAILBOX_LABEL_IDS } from '@proton/shared/lib/constants'; import clsx from '@proton/utils/clsx'; interface CategoryItemProps { @@ -21,15 +23,27 @@ interface CategoryItemProps { export const CategorySettingsItem = ({ category, loading, categoriesEnabled, onUpdate }: CategoryItemProps) => { const categoryLabel = getLabelFromCategoryId(category.id); + const { sendReportToggleCategory, sendReportToggleNotification } = useCategoriesTelemetry(); + + const handleToggleCategory = () => { + onUpdate({ ...category, display: !category.display }); + sendReportToggleCategory(category.id, !category.display); + }; + + const handleToggleNotification = () => { + onUpdate({ ...category, notify: !category.notify }); + sendReportToggleNotification(category.id, !category.notify); + }; + return (
    onUpdate({ ...category, display: !category.display })} + onClick={handleToggleCategory} data-testid={`${category.id}-display`} - disabled={loading} + disabled={loading || category.id === MAILBOX_LABEL_IDS.CATEGORY_DEFAULT} />
    ); diff --git a/applications/account/src/app/containers/mail/sections/CategoryViewToggle.test.tsx b/applications/account/src/app/containers/mail/sections/CategoryViewToggle.test.tsx index 5db172e243d..242700c9bcd 100644 --- a/applications/account/src/app/containers/mail/sections/CategoryViewToggle.test.tsx +++ b/applications/account/src/app/containers/mail/sections/CategoryViewToggle.test.tsx @@ -26,6 +26,12 @@ jest.mock('@proton/redux-shared-store/sharedProvider', () => ({ useDispatch: () => jest.fn(), })); +jest.mock('@proton/mail/features/categoriesView/useCategoriesTelemetry', () => ({ + useCategoriesTelemetry: () => ({ + sendReportChangeCategorySettings: jest.fn(), + }), +})); + describe('CategoryViewSection', () => { describe('setting is visible', () => { it('should have visible switch and checked if the setting is on', () => { diff --git a/applications/account/src/app/containers/mail/sections/CategoryViewToggle.tsx b/applications/account/src/app/containers/mail/sections/CategoryViewToggle.tsx index 139c0399402..0354d813069 100644 --- a/applications/account/src/app/containers/mail/sections/CategoryViewToggle.tsx +++ b/applications/account/src/app/containers/mail/sections/CategoryViewToggle.tsx @@ -9,6 +9,7 @@ import useApi from '@proton/components/hooks/useApi'; import useNotifications from '@proton/components/hooks/useNotifications'; import useToggle from '@proton/components/hooks/useToggle'; import useLoading from '@proton/hooks/useLoading'; +import { useCategoriesTelemetry } from '@proton/mail/features/categoriesView/useCategoriesTelemetry'; import { mailSettingsActions } from '@proton/mail/store/mailSettings'; import { useMailSettings } from '@proton/mail/store/mailSettings/hooks'; import { useDispatch } from '@proton/redux-shared-store/sharedProvider'; @@ -25,12 +26,15 @@ export const CategoryViewToggle = () => { const { createNotification } = useNotifications(); const dispatch = useDispatch(); + const { sendReportChangeCategorySettings } = useCategoriesTelemetry(); + const handleChange = async (checked: boolean) => { const response = await api<{ MailSettings: MailSettings }>(updateMailCategoryView(checked)); dispatch(mailSettingsActions.updateMailSettings(response.MailSettings)); createNotification({ text: c('Success').t`Preference saved` }); toggle(); + sendReportChangeCategorySettings(checked); }; return ( diff --git a/applications/account/src/app/containers/msp/MspSettingsRouter.tsx b/applications/account/src/app/containers/msp/MspSettingsRouter.tsx new file mode 100644 index 00000000000..6165f83e4fb --- /dev/null +++ b/applications/account/src/app/containers/msp/MspSettingsRouter.tsx @@ -0,0 +1,43 @@ +import type { ReactNode } from 'react'; +import { Route, Switch } from 'react-router-dom'; + +import { PrivateMainSettingsArea } from '@proton/components'; +import { getIsSectionAvailable, getSectionPath } from '@proton/components/containers/layout/helper'; + +import type { getMspAppRoutes } from './routes'; + +const MspSettingsRouter = ({ + path, + mspAppRoutes, + redirect, +}: { + path: string; + mspAppRoutes: ReturnType; + redirect: ReactNode; +}) => { + const { + routes: { companies, monthlyCosts }, + } = mspAppRoutes; + + if (!mspAppRoutes.available) { + return <>{redirect}; + } + + return ( + + {getIsSectionAvailable(companies) && ( + + Companies + + )} + {getIsSectionAvailable(monthlyCosts) && ( + + Monthly Costs + + )} + {redirect} + + ); +}; + +export default MspSettingsRouter; diff --git a/applications/account/src/app/containers/msp/routes.ts b/applications/account/src/app/containers/msp/routes.ts new file mode 100644 index 00000000000..a9913ef64e9 --- /dev/null +++ b/applications/account/src/app/containers/msp/routes.ts @@ -0,0 +1,35 @@ +import { c } from 'ttag'; + +import type { SectionConfig, SidebarConfig } from '@proton/components'; + +import type { GeneralRouterParams } from '../../content/router-params'; + +export const getMspAppRoutes = ({ flags }: GeneralRouterParams): SidebarConfig => { + const { isMspEnabled = false } = flags; + + return { + available: isMspEnabled, + header: c('Settings section title').t`Managed Companies`, + routes: { + companies: { + id: 'companies', + text: c('Title').t`Companies`, + description: c('Subtitle') + .t`With managed companies, you can add, edit, and remove access for organizations you oversee.`, + to: '/companies', + icon: 'buildings', + available: true, + subsections: [{ id: 'companies' }], + }, + monthlyCosts: { + id: 'monthlyCosts', + text: c('Title').t`Monthly Costs`, + description: c('Subtitle').t`Your total monthly cost for all managed companies.`, + to: '/monthly-costs', + icon: 'money-bills', + available: true, + subsections: [{ id: 'monthly-costs' }], + }, + } satisfies Record, + }; +}; diff --git a/applications/account/src/app/containers/organization/OrganizationSettingsRouter.tsx b/applications/account/src/app/containers/organization/OrganizationSettingsRouter.tsx index aca80d25307..6351ca1e47b 100644 --- a/applications/account/src/app/containers/organization/OrganizationSettingsRouter.tsx +++ b/applications/account/src/app/containers/organization/OrganizationSettingsRouter.tsx @@ -1,5 +1,4 @@ -import type { ReactNode } from 'react'; -import { useRef } from 'react'; +import { type ReactNode, useRef, useState } from 'react'; import { Redirect, Route, Switch } from 'react-router-dom'; import OLESSettingsArea from '@proton/activation/src/oles/components/SettingsArea'; @@ -7,7 +6,6 @@ import { ActivityMonitorDashboard, CatchAllSection, DomainsSection, - GatewaysSection, MultiUserCreationSection, OrganizationGroupsManagementSection, OrganizationPasswordPoliciesSection, @@ -27,10 +25,12 @@ import { VPNEvents, } from '@proton/components'; import { getIsSectionAvailable, getSectionPath } from '@proton/components/containers/layout/helper'; +import { SetupOrganizationSection } from '@proton/components/containers/organization/SetupOrganizationSection'; import AccessControlSettingsSection from '@proton/components/containers/organization/accessControl/AccessControlSettingsSection'; import type { MaybeFreeSubscription } from '@proton/payments/core/subscription/helpers'; import type { APP_NAMES } from '@proton/shared/lib/constants'; import type { OrganizationExtended, UserModel } from '@proton/shared/lib/interfaces'; +import { GatewaysSection } from '@proton/vpn/components/Gateways'; import { FeatureAccessSection } from './components/FeatureAccessSection'; import { RolesAndPermissionsSection } from './components/RolesAndPermissionsSection'; @@ -56,6 +56,9 @@ const OrganizationSettingsRouter = ({ onOpenChat?: () => void; }) => { const onceRef = useRef(false); + // The setup organization route becomes unavailable post organization setup. + // Keep this state while the setup modal is open to allow the user to stay on the route to prevent a bad UX redirect. + const [setupState, setSetupState] = useState(false); const { routes: { @@ -82,6 +85,8 @@ const OrganizationSettingsRouter = ({ return <>{redirect}; } + const isSetupAvailable = getIsSectionAvailable(setup) || setupState; + return ( {getIsSectionAvailable(migrationAssistant) && ( @@ -103,16 +108,16 @@ const OrganizationSettingsRouter = ({ )} - {getIsSectionAvailable(setup) && ( + {isSetupAvailable && ( - + )} {/* After the org is setup, and the setup route becomes unavailable, we redirect to the users route */} - {!getIsSectionAvailable(setup) && getIsSectionAvailable(users) && ( + {!isSetupAvailable && getIsSectionAvailable(users) && ( diff --git a/applications/account/src/app/containers/organization/components/FeatureAccess/AccessToggleCategoryView.tsx b/applications/account/src/app/containers/organization/components/FeatureAccess/AccessToggleCategoryView.tsx index f37c5c53a20..2b43c653728 100644 --- a/applications/account/src/app/containers/organization/components/FeatureAccess/AccessToggleCategoryView.tsx +++ b/applications/account/src/app/containers/organization/components/FeatureAccess/AccessToggleCategoryView.tsx @@ -5,10 +5,10 @@ import { useOrganization } from '@proton/account/organization/hooks'; import { useApi, useNotifications } from '@proton/components'; import useLoading from '@proton/hooks/useLoading'; import { IcDrawerDividers } from '@proton/icons/icons/IcDrawerDividers'; -import { useDispatch } from '@proton/redux-shared-store'; +import { useCategoriesData } from '@proton/mail/features/categoriesView/useCategoriesData'; +import { useDispatch } from '@proton/redux-shared-store/sharedProvider'; import { updateOrganizationSettings } from '@proton/shared/lib/api/organization'; import type { OrganizationSettings } from '@proton/shared/lib/interfaces'; -import { useFlag } from '@proton/unleash/useFlag'; import { AccessToggle } from './AccessToggle'; @@ -18,7 +18,7 @@ export const AccessToggleCategoryView = () => { const [organization] = useOrganization(); const { createNotification } = useNotifications(); - const isCategoryViewEnabled = useFlag('CategoryView'); + const { hasAccessToCategoryView } = useCategoriesData(); const [categoryLoading, withCategoryLoading] = useLoading(); @@ -33,7 +33,7 @@ export const AccessToggleCategoryView = () => { createNotification({ text: c('Success notification').t`Preferences updated` }); }; - if (!isCategoryViewEnabled) { + if (!hasAccessToCategoryView) { return null; } diff --git a/applications/account/src/app/containers/organization/components/FeatureAccess/AccessToggleScribe.tsx b/applications/account/src/app/containers/organization/components/FeatureAccess/AccessToggleScribe.tsx index 1e836b8eac6..9e96d9eb6e0 100644 --- a/applications/account/src/app/containers/organization/components/FeatureAccess/AccessToggleScribe.tsx +++ b/applications/account/src/app/containers/organization/components/FeatureAccess/AccessToggleScribe.tsx @@ -7,7 +7,7 @@ import { SUBSCRIPTION_STEPS, SettingsLink, useApi, useNotifications, useSubscrip import useAssistantFeatureEnabled from '@proton/components/hooks/assistant/useAssistantFeatureEnabled'; import useLoading from '@proton/hooks/useLoading'; import { IcPenSparks } from '@proton/icons/icons/IcPenSparks'; -import { useDispatch } from '@proton/redux-shared-store'; +import { useDispatch } from '@proton/redux-shared-store/sharedProvider'; import { updateOrganizationSettings } from '@proton/shared/lib/api/organization'; import { APPS, BRAND_NAME } from '@proton/shared/lib/constants'; import type { OrganizationSettings } from '@proton/shared/lib/interfaces'; diff --git a/applications/account/src/app/containers/organization/routes.ts b/applications/account/src/app/containers/organization/routes.ts index 346cc590000..56b1d41b0c1 100644 --- a/applications/account/src/app/containers/organization/routes.ts +++ b/applications/account/src/app/containers/organization/routes.ts @@ -5,25 +5,23 @@ import type { SectionConfig, SidebarConfig } from '@proton/components'; import { canUseGroups } from '@proton/components'; import { isScribeSupported } from '@proton/components/helpers/assistant'; import { + PLANS, getHasExternalMemberCapableB2BPlan, getHasMemberCapablePlan, getHasVpnB2BPlan, getIsB2BAudienceFromPlan, hasAnyB2bBundle, hasBundleBiz2025, - hasBundlePro2024, hasVPNPassProfessional, hasVisionary, hasVpnBusiness, planSupportsSSO, upsellPlanSSO, } from '@proton/payments'; -import type { MaybeFreeSubscription } from '@proton/payments/core/subscription/helpers'; import { hasMeet, hasMeetBusiness } from '@proton/payments/core/subscription/helpers'; import { appSupportsSSO } from '@proton/shared/lib/apps/apps'; import { APPS, - type APP_NAMES, BRAND_NAME, ORGANIZATION_STATE, ORGANIZATION_TWOFA_SETTING, @@ -31,29 +29,13 @@ import { } from '@proton/shared/lib/constants'; import { hasOrganizationSetup, hasOrganizationSetupWithKeys } from '@proton/shared/lib/helpers/organization'; import { canScheduleOrganizationPhoneCalls } from '@proton/shared/lib/helpers/support'; -import type { Group, OrganizationExtended, UserModel } from '@proton/shared/lib/interfaces'; -import { getOrganizationDenomination, isOrganizationPassFamily } from '@proton/shared/lib/organization/helper'; +import { + getOrganizationDenomination, + isOrganizationOneOf, + isOrganizationPassFamily, +} from '@proton/shared/lib/organization/helper'; -interface Props { - app: APP_NAMES; - user: UserModel; - organization?: OrganizationExtended; - subscription: MaybeFreeSubscription; - canDisplayB2BLogsVPN: boolean; - isUserGroupsFeatureEnabled: boolean; - isUserGroupsNoCustomDomainEnabled: boolean; - isUserGroupsPassBusinessEnabled: boolean; - groups: Group[] | undefined; - isScribeEnabled?: boolean; - isZoomIntegrationEnabled: boolean; - isProtonMeetIntegrationEnabled: boolean; - isSharedServerFeatureEnabled: boolean; - isSsoForPbsEnabled: boolean; - isRetentionPoliciesEnabled: boolean; - isGroupOwner: boolean | null; - isOLESEnabled?: boolean; - isRolesAndPermissionsEnabled?: boolean; -} +import type { OrganizationRouterParams } from '../../content/router-params'; const videoConferenceValidApplications = new Set([APPS.PROTONMAIL, APPS.PROTONCALENDAR]); const scribeValidApplications = new Set([APPS.PROTONMAIL]); @@ -63,21 +45,25 @@ export const getOrganizationAppRoutes = ({ user, organization, subscription, - canDisplayB2BLogsVPN, - isUserGroupsFeatureEnabled, - isUserGroupsNoCustomDomainEnabled, - isUserGroupsPassBusinessEnabled, groups, - isScribeEnabled, - isZoomIntegrationEnabled, - isProtonMeetIntegrationEnabled, - isSharedServerFeatureEnabled, - isSsoForPbsEnabled, - isRetentionPoliciesEnabled, isGroupOwner, - isOLESEnabled, - isRolesAndPermissionsEnabled, -}: Props): SidebarConfig => { + flags, + permissions, +}: OrganizationRouterParams): SidebarConfig => { + const { + canDisplayB2BLogsVPN = false, + isUserGroupsFeatureEnabled = false, + isUserGroupsNoCustomDomainEnabled = false, + isUserGroupsPassBusinessEnabled = false, + isScribeEnabled = false, + isZoomIntegrationEnabled = false, + isProtonMeetIntegrationEnabled = false, + isSharedServerFeatureEnabled = false, + isSsoForPbsEnabled = false, + isRetentionPoliciesEnabled = false, + isOLESEnabled = false, + isRolesAndPermissionsEnabled = false, + } = flags; const isAdmin = user.isAdmin && user.isSelf; const hasOrganizationKey = hasOrganizationSetupWithKeys(organization); @@ -97,7 +83,8 @@ export const getOrganizationAppRoutes = ({ const hasExternalMemberCapableB2BPlan = getHasExternalMemberCapableB2BPlan(subscription); const canShowB2BActivityMonitorEvents = - (isOrgConfigured || getIsB2BAudienceFromPlan(organization?.PlanName)) && isAdmin; + (isOrgConfigured || getIsB2BAudienceFromPlan(organization?.PlanName)) && + !!permissions['account.activity_log.read']; //vpnbiz2023, and all business bundle plans have the Connection Events feature const hasPlanWithEventLogging = @@ -124,12 +111,11 @@ export const getOrganizationAppRoutes = ({ isUserGroupsPassBusinessEnabled, hasGroups, }))); - const canShowUsersAndAddressesSection = // The user must have a plan that supports multi-user hasMemberCapablePlan && // If the organization is not active (end of subscription without renewal), we allow users to access this page to delete sub users - (isOrgActive || (!isOrgActive && (organization?.UsedMembers ?? 0) > 1)) && + (isOrgActive || (organization?.UsedMembers ?? 0) > 1) && // The org must be setup to allow users to access this page isOrgConfigured; @@ -164,11 +150,12 @@ export const getOrganizationAppRoutes = ({ const canShowRetentionPolicies = isRetentionPoliciesEnabled && + permissions['account.data_retention.read'] && app !== APPS.PROTONVPN_SETTINGS && // retention policies management is a B2B feature, only show if org is elligible for it isOrgActive && isOrgConfigured && - (hasBundleBiz2025(subscription) || hasVisionary(subscription) || hasBundlePro2024(subscription)); + isOrganizationOneOf(organization, [PLANS.BUNDLE_BIZ_2025, PLANS.VISIONARY, PLANS.BUNDLE_PRO_2024]); const canShowRolesAndPermissionsSection = !!( isRolesAndPermissionsEnabled && @@ -186,273 +173,270 @@ export const getOrganizationAppRoutes = ({ ? c('familyOffer_2023:Title').t`Manage family group` : c('Title').t`Multi-user support`; - const subSectionTitle = isPartOfFamily ? '' : c('Title').t`Multi-user support`; + const subSectionTitle = isPartOfFamily ? '' : c('Title').t`Activate multi-user support`; const subSectionTitleAppearance = isPartOfFamily ? '' : c('Title').t`Customization`; const showBusinessMigrationSection = Boolean(isOLESEnabled) && isOLESEligible({ user, organization, subscription }); - const organizationSectionVisible = canHaveOrganization || !!isGroupOwner; + const routes = { + migrationAssistant: { + id: 'migration-assistant', + text: c('Title').t`Migration assistant`, + to: '/migration-assistant', + icon: 'arrow-down-to-square', + available: canHaveOrganization && showBusinessMigrationSection, + }, + users: { + id: 'users', + text: hasExternalMemberCapableB2BPlan ? c('Title').t`Users` : c('Title').t`Users and addresses`, + to: '/users-addresses', + icon: 'users', + available: canHaveOrganization && canShowUsersAndAddressesSection, + subsections: [ + { + id: 'schedule-call', + available: app === APPS.PROTONVPN_SETTINGS && canSchedulePhoneCalls, + }, + { + id: 'members', + }, + { + text: c('Title').t`Create multiple user accounts`, + id: 'multi-user-creation', + available: organization && !!organization.RequiresKey && !hasExternalMemberCapableB2BPlan, + }, + ], + }, + groups: { + id: 'groups', + text: c('Title').t`Groups`, + to: '/user-groups', + icon: 'pass-group', + noTitle: true, + available: (isAdmin || !!isGroupOwner) && canShowGroupsSection, + subsections: [ + { + id: 'groups-management', + }, + ], + }, + domains: { + id: 'domains', + text: c('Title').t`Domain names`, + to: '/domain-names', + icon: 'globe', + available: canHaveOrganization && canShowDomainNamesSection, + subsections: [ + { id: 'domains' }, + { + text: c('Title').t`Catch-all address`, + id: 'catch-all', + }, + ], + }, + orgKeys: { + id: 'orgKeys', + text: subMenuTitle, + to: '/organization-keys', + icon: 'buildings', + available: + canHaveOrganization && + (isPartOfFamily + ? hasActiveOrganization //Show this section once the family is setup (only requires a name) + : (hasActiveOrganizationKey || hasActiveOrganization) && + organization && + !!organization.RequiresKey), + subsections: [ + { + id: 'schedule-call', + available: canSchedulePhoneCalls, + }, + { + text: subSectionTitleAppearance, + id: 'organization', + }, + { + text: c('Title').t`Organization key`, + id: 'password-keys', + available: hasMemberCapablePlan && hasActiveOrganizationKey, + }, + ], + }, + gateways: { + id: 'gateways', + text: c('Title').t`Gateways`, + to: '/gateways', + icon: 'servers', + available: canHaveOrganization && (hasVpnB2BPlan || hasAnyB2bBundle(subscription)), + subsections: [ + { + id: 'servers', + }, + ], + }, + sharedServers: { + id: 'sharedServers', + text: c('Title').t`Shared servers`, + to: '/shared-servers', + icon: 'earth', + available: + canHaveOrganization && isSharedServerFeatureEnabled && (hasVpnB2BPlan || hasAnyB2bBundle(subscription)), + subsections: [ + { + id: 'servers', + }, + ], + }, + connectionEvents: { + id: 'connectionEvents', + text: c('Title').t`Gateway monitor`, + description: c('Subtitle').t`View VPN session details for your organization.`, + to: '/gateway-monitor', + icon: 'monitor', + available: canShowB2BConnectionEvents, + subsections: [ + { + id: 'vpn-connection-events', + }, + ], + }, + activityMonitor: { + id: 'activityMonitor', + text: c('Title').t`Activity monitor`, + to: '/activity-monitor', + icon: 'card-identity', + available: canShowB2BActivityMonitorEvents, + subsections: [ + { + id: 'activity-monitor-dashboard', + }, + ], + }, + setup: { + id: 'setup', + text: subMenuTitle, + to: '/multi-user-support', + icon: 'users', + available: !!(canHaveOrganization && (isPartOfFamily ? !hasActiveOrganization : !hasActiveOrganizationKey)), + subsections: [ + { + id: 'schedule-call', + available: canSchedulePhoneCalls, + }, + { + text: subSectionTitle, + id: 'name', + }, + ], + }, + filter: { + id: 'filter', + text: c('Title').t`Organization filters`, + to: '/organization-filters', + icon: 'filter', + available: + canHaveOrganization && + app !== APPS.PROTONVPN_SETTINGS && + !hasExternalMemberCapableB2BPlan && + !isPassFamilyPlan && + (hasActiveOrganizationKey || hasActiveOrganization), + subsections: [ + { + text: c('Title').t`Spam, block, and allow lists`, + id: 'spam', + }, + ], + }, + retentionPolicies: { + id: 'retentionPolicies', + text: c('Title').t`Data retention`, + to: '/retention-policies', + icon: 'archive-box', + available: canShowRetentionPolicies, + subsections: [{ id: 'retention-policies' }], + }, + security: { + id: 'security', + text: c('Title').t`Security`, + to: '/authentication-security', + icon: 'shield', + available: + canHaveOrganization && + (hasActiveOrganizationKey || hasActiveOrganization) && + organization && + (organization.MaxMembers > 1 || + organization.TwoFactorRequired !== ORGANIZATION_TWOFA_SETTING.NOT_REQUIRED), + subsections: [ + { + text: c('Title').t`${PROTON_SENTINEL_NAME} for organizations`, + id: 'sentinel', + available: canShowB2BActivityMonitorEvents, + }, + { + text: c('Title').t`${BRAND_NAME} Account password rules`, + id: 'proton-account-password-rules', + }, + { + text: c('Title').t`Two-factor authentication reminders`, + id: 'two-factor-authentication-reminders', + }, + { + text: c('Title').t`Two-factor authentication enforcement`, + id: 'two-factor-authentication-enforcement', + }, + ], + }, + sso: { + id: 'sso', + text: c('Title').t`Single sign-on`, + to: '/single-sign-on', + icon: 'key', + available: + canHaveOrganization && + appSupportsSSO(app) && + (planSupportsSSO(organization?.PlanName, isSsoForPbsEnabled) || + upsellPlanSSO(organization?.PlanName)) && + isOrgConfigured, + }, + accessControl: { + id: 'accessControl', + text: c('Title').t`Access control`, + to: '/access-control', + icon: 'sliders', + available: canHaveOrganization && canShowAccessControl, + subsections: [ + { + id: 'application-access', + text: c('Title').t`Application access`, + }, + { + id: 'feature-access', + text: c('Title').t`Feature access`, + available: canShowVideoConferenceSection || canShowScribeSection, + }, + ], + }, + rolesAndPermissions: { + id: 'rolesAndPermissions', + text: c('Title').t`Roles and permissions`, + to: '/roles-and-permissions', + icon: 'users-plus', + available: canShowRolesAndPermissionsSection, + subsections: [ + { + id: 'roles', + }, + ], + }, + } satisfies Record; + + // show the whole organization section if organization is present and at least one feature is available + const showOrganizationSection = !!organization && Object.values(routes).some((route) => route.available); return { - available: organizationSectionVisible && app !== APPS.PROTONWALLET, + available: showOrganizationSection, header: sectionTitle, - routes: { - migrationAssistant: { - id: 'migration-assistant', - text: c('Title').t`Migration assistant`, - to: '/migration-assistant', - icon: 'arrow-down-to-square', - available: showBusinessMigrationSection, - }, - users: { - id: 'users', - text: hasExternalMemberCapableB2BPlan ? c('Title').t`Users` : c('Title').t`Users and addresses`, - to: '/users-addresses', - icon: 'users', - available: canHaveOrganization && canShowUsersAndAddressesSection, - subsections: [ - { - id: 'schedule-call', - available: app === APPS.PROTONVPN_SETTINGS && canSchedulePhoneCalls, - }, - { - id: 'members', - }, - { - text: c('Title').t`Create multiple user accounts`, - id: 'multi-user-creation', - available: organization && !!organization.RequiresKey && !hasExternalMemberCapableB2BPlan, - }, - ], - }, - groups: { - id: 'groups', - text: c('Title').t`Groups`, - to: '/user-groups', - icon: 'pass-group', - noTitle: true, - available: organizationSectionVisible && canShowGroupsSection, - subsections: [ - { - id: 'groups-management', - }, - ], - }, - domains: { - id: 'domains', - text: c('Title').t`Domain names`, - to: '/domain-names', - icon: 'globe', - available: canHaveOrganization && canShowDomainNamesSection, - subsections: [ - { id: 'domains' }, - { - text: c('Title').t`Catch-all address`, - id: 'catch-all', - }, - ], - }, - orgKeys: { - id: 'orgKeys', - text: subMenuTitle, - to: '/organization-keys', - icon: 'buildings', - available: - canHaveOrganization && - (isPartOfFamily - ? hasActiveOrganization //Show this section once the family is setup (only requires a name) - : (hasActiveOrganizationKey || hasActiveOrganization) && - organization && - !!organization.RequiresKey), - subsections: [ - { - id: 'schedule-call', - available: canSchedulePhoneCalls, - }, - { - text: subSectionTitleAppearance, - id: 'organization', - }, - { - text: c('Title').t`Organization key`, - id: 'password-keys', - available: hasMemberCapablePlan && hasActiveOrganizationKey, - }, - ], - }, - gateways: { - id: 'gateways', - text: c('Title').t`Gateways`, - to: '/gateways', - icon: 'servers', - available: canHaveOrganization && (hasVpnB2BPlan || hasAnyB2bBundle(subscription)), - subsections: [ - { - id: 'servers', - }, - ], - }, - sharedServers: { - id: 'sharedServers', - text: c('Title').t`Shared servers`, - to: '/shared-servers', - icon: 'earth', - available: - canHaveOrganization && - isSharedServerFeatureEnabled && - (hasVpnB2BPlan || hasAnyB2bBundle(subscription)), - subsections: [ - { - id: 'servers', - }, - ], - }, - connectionEvents: { - id: 'connectionEvents', - text: c('Title').t`Gateway monitor`, - description: c('Subtitle').t`View VPN session details for your organization.`, - to: '/gateway-monitor', - icon: 'monitor', - available: canHaveOrganization && canShowB2BConnectionEvents, - subsections: [ - { - id: 'vpn-connection-events', - }, - ], - }, - activityMonitor: { - id: 'activityMonitor', - text: c('Title').t`Activity monitor`, - to: '/activity-monitor', - icon: 'card-identity', - available: canHaveOrganization && canShowB2BActivityMonitorEvents, - subsections: [ - { - id: 'activity-monitor-dashboard', - }, - ], - }, - setup: { - id: 'setup', - text: subMenuTitle, - to: '/multi-user-support', - icon: 'users', - available: !!( - canHaveOrganization && - (isPartOfFamily ? !hasActiveOrganization : !hasActiveOrganizationKey && canHaveOrganization) - ), - subsections: [ - { - id: 'schedule-call', - available: canSchedulePhoneCalls, - }, - { - text: subSectionTitle, - id: 'name', - }, - ], - }, - filter: { - id: 'filter', - text: c('Title').t`Organization filters`, - to: '/organization-filters', - icon: 'filter', - available: - canHaveOrganization && - app !== APPS.PROTONVPN_SETTINGS && - !hasExternalMemberCapableB2BPlan && - !isPassFamilyPlan && - (hasActiveOrganizationKey || hasActiveOrganization), - subsections: [ - { - text: c('Title').t`Spam, block, and allow lists`, - id: 'spam', - }, - ], - }, - retentionPolicies: { - id: 'retentionPolicies', - text: c('Title').t`Data retention`, - to: '/retention-policies', - icon: 'archive-box', - available: canHaveOrganization && canShowRetentionPolicies, - subsections: [{ id: 'retention-policies' }], - }, - security: { - id: 'security', - text: c('Title').t`Security`, - to: '/authentication-security', - icon: 'shield', - available: - canHaveOrganization && - (hasActiveOrganizationKey || hasActiveOrganization) && - organization && - (organization.MaxMembers > 1 || - organization.TwoFactorRequired !== ORGANIZATION_TWOFA_SETTING.NOT_REQUIRED), - subsections: [ - { - text: c('Title').t`${PROTON_SENTINEL_NAME} for organizations`, - id: 'sentinel', - available: canShowB2BActivityMonitorEvents, - }, - { - text: c('Title').t`${BRAND_NAME} Account password rules`, - id: 'proton-account-password-rules', - }, - { - text: c('Title').t`Two-factor authentication reminders`, - id: 'two-factor-authentication-reminders', - }, - { - text: c('Title').t`Two-factor authentication enforcement`, - id: 'two-factor-authentication-enforcement', - }, - ], - }, - sso: { - id: 'sso', - text: c('Title').t`Single sign-on`, - to: '/single-sign-on', - icon: 'key', - available: - canHaveOrganization && - appSupportsSSO(app) && - (planSupportsSSO(organization?.PlanName, isSsoForPbsEnabled) || - upsellPlanSSO(organization?.PlanName)) && - canHaveOrganization && - isOrgConfigured, - }, - accessControl: { - id: 'accessControl', - text: c('Title').t`Access control`, - to: '/access-control', - icon: 'sliders', - available: canHaveOrganization && canShowAccessControl, - subsections: [ - { - id: 'application-access', - text: c('Title').t`Application access`, - }, - { - id: 'feature-access', - text: c('Title').t`Feature access`, - available: canShowVideoConferenceSection || canShowScribeSection, - }, - ], - }, - rolesAndPermissions: { - id: 'rolesAndPermissions', - text: c('Title').t`Roles and permissions`, - to: '/roles-and-permissions', - icon: 'users-plus', - available: canShowRolesAndPermissionsSection, - subsections: [ - { - id: 'roles', - }, - ], - }, - } satisfies Record, + routes, }; }; diff --git a/applications/account/src/app/containers/pass/routes.ts b/applications/account/src/app/containers/pass/routes.ts index 381baf5edc0..60984ae9688 100644 --- a/applications/account/src/app/containers/pass/routes.ts +++ b/applications/account/src/app/containers/pass/routes.ts @@ -2,29 +2,13 @@ import { c } from 'ttag'; import type { SectionConfig } from '@proton/components'; import { hasAnyB2bBundle, hasPassBusiness, hasVPNPassProfessional } from '@proton/payments'; -import type { MaybeFreeSubscription } from '@proton/payments/core/subscription/helpers'; -import type { APP_NAMES } from '@proton/shared/lib/constants'; import { APPS, PASS_APP_NAME } from '@proton/shared/lib/constants'; import { hasOrganizationSetup, hasOrganizationSetupWithKeys } from '@proton/shared/lib/helpers/organization'; -import type { Organization, UserModel } from '@proton/shared/lib/interfaces'; -interface Props { - app: APP_NAMES; - user: UserModel; - organization?: Organization; - subscription: MaybeFreeSubscription; - canDisplayB2BLogsPass?: boolean; - canDisplayPassReports?: boolean; -} +import type { OrganizationRouterParams } from '../../content/router-params'; -export const getPassAppRoutes = ({ - app, - user, - organization, - subscription, - canDisplayB2BLogsPass, - canDisplayPassReports, -}: Props) => { +export const getPassAppRoutes = ({ app, user, organization, subscription, flags }: OrganizationRouterParams) => { + const { canDisplayB2BLogsPass = false, canDisplayPassReports = false } = flags; const isAdmin = user.isAdmin && user.isSelf; const canHaveOrganization = !user.isMember && !!organization && isAdmin; const hasOrganizationKey = hasOrganizationSetupWithKeys(organization); diff --git a/applications/account/src/app/containers/recoveryPhrase/SetRecoveryPhraseOnSignupContainer.tsx b/applications/account/src/app/containers/recoveryPhrase/SetRecoveryPhraseOnSignupContainer.tsx index 68aa6e37868..93b66e5934d 100644 --- a/applications/account/src/app/containers/recoveryPhrase/SetRecoveryPhraseOnSignupContainer.tsx +++ b/applications/account/src/app/containers/recoveryPhrase/SetRecoveryPhraseOnSignupContainer.tsx @@ -2,20 +2,19 @@ import { type ReactNode, useState } from 'react'; import { c } from 'ttag'; -import { InlineLinkButton } from '@proton/atoms/InlineLinkButton/InlineLinkButton'; -import { useErrorHandler } from '@proton/components'; +import { RecoveryKitAction, type RecoveryKitActionProps } from '@proton/account/recovery/recoveryKit/RecoveryKitAction'; +import type { DeferredMnemonicData } from '@proton/account/recovery/recoveryKit/generateDeferredMnemonicData'; import getBoldFormattedText from '@proton/components/helpers/getBoldFormattedText'; +import useErrorHandler from '@proton/components/hooks/useErrorHandler'; +import useNotifications from '@proton/components/hooks/useNotifications'; +import useLoading from '@proton/hooks/useLoading'; import { BRAND_NAME } from '@proton/shared/lib/constants'; +import noop from '@proton/utils/noop'; -import RecoveryKitAction from './components/RecoveryKitAction'; -import type { DeferredMnemonicData } from './types'; -import useRecoveryKitDownload from './useRecoveryKitDownload'; - -type Method = 'recovery-kit' | 'text'; export interface SetRecoveryPhraseOnSignupContainerProps { recoveryPhraseData: DeferredMnemonicData; sendRecoveryPhrasePayload: () => Promise; - title?: (method: Method) => ReactNode; + title?: ReactNode; continueButton: () => ReactNode; } @@ -32,65 +31,41 @@ const SetRecoveryPhraseOnSignupContainer = ({ const handleError = useErrorHandler(); const [hasSentPayload, setHasSentPayload] = useState(false); - - const sendPayload = async () => { + const [loading, withLoading] = useLoading(); + const { createNotification } = useNotifications(); + + const handleSaveRecoveryKit: RecoveryKitActionProps['onSaveRecoveryKit'] = (type, recoveryKitData) => { + const handleSave = async () => { + await recoveryKitData.save.handle(type); + if (type === 'copy') { + createNotification({ text: c('Info').t`Recovery phrase copied to clipboard` }); + } + }; if (hasSentPayload) { + handleSave().catch(noop); return; } - - try { - await sendRecoveryPhrasePayload(); - setHasSentPayload(true); - } catch (error) { - handleError(error); - throw error; - } + void withLoading( + (async () => { + try { + await sendRecoveryPhrasePayload(); + handleSave().catch(noop); + setHasSentPayload(true); + } catch (error) { + handleError(error); + } + })() + ); }; - const recoveryKitDownload = useRecoveryKitDownload({ - recoveryKitBlob: recoveryPhraseData.recoveryKitBlob, - sendPayload, - }); - const { canDownloadRecoveryKit } = recoveryKitDownload; - - const [method, setMethod] = useState('recovery-kit'); - - const copyRecoverySwitchButton = ( - { - setMethod('text'); - }} - > - { - // translator: Full sentence "Or copy recovery phrase as text." - c('RecoveryPhrase: Info').t`copy recovery phrase` - } - - ); - - const downloadRecoveryKitSwitchButton = ( - { - setMethod('recovery-kit'); - }} - > - { - // translator: Full sentence "Or download PDF instead." - c('RecoveryPhrase: Info').t`download PDF` - } - - ); - return (
    - {title?.(method)} + {title}
    {getBoldFormattedText( c('RecoveryPhrase: Info') - .t`Your **Recovery Kit** lets you restore your ${BRAND_NAME} Account if you’re locked out.` + .t`Your **recovery phrase** lets you restore your ${BRAND_NAME} Account if you’re locked out.` )}
    @@ -101,25 +76,14 @@ const SetRecoveryPhraseOnSignupContainer = ({
    - {canDownloadRecoveryKit && ( -
    - {method === 'recovery-kit' && - // translator: Full sentence "Or copy recovery phrase as text." - c('RecoveryPhrase: Info').jt`Or ${copyRecoverySwitchButton} as text.`} - - {method === 'text' && - // translator: Full sentence "Or download PDF instead." - c('RecoveryPhrase: Info').jt`Or ${downloadRecoveryKitSwitchButton} instead.`} -
    - )} - {continueButton()}
    ); diff --git a/applications/account/src/app/containers/recoveryPhrase/components/CopyRecoveryPhraseContainer.tsx b/applications/account/src/app/containers/recoveryPhrase/components/CopyRecoveryPhraseContainer.tsx deleted file mode 100644 index d82ef7ac34a..00000000000 --- a/applications/account/src/app/containers/recoveryPhrase/components/CopyRecoveryPhraseContainer.tsx +++ /dev/null @@ -1,81 +0,0 @@ -import { c } from 'ttag'; - -import { Button } from '@proton/atoms/Button/Button'; -import { CircleLoader } from '@proton/atoms/CircleLoader/CircleLoader'; -import { useNotifications } from '@proton/components'; -import useLoading from '@proton/hooks/useLoading'; -import { IcEye } from '@proton/icons/icons/IcEye'; -import { IcSquares } from '@proton/icons/icons/IcSquares'; -import { textToClipboard } from '@proton/shared/lib/helpers/browser'; -import clsx from '@proton/utils/clsx'; - -/** - * Displays the recovery phrase and allows to copy it to the clipboard. - * Can be used as a fallback if the recovery kit pdf download is not available according to `canUseRecoveryKitPdfDownload` - */ -const CopyRecoveryPhraseContainer = ({ - recoveryPhrase, - sendPayload, - className, - hasSentPayload, -}: { - recoveryPhrase: string; - sendPayload: () => Promise; - className?: string; - hasSentPayload: boolean; -}) => { - const [loading, withLoading] = useLoading(); - - const { createNotification } = useNotifications(); - - const onCopy = () => { - textToClipboard(recoveryPhrase); - createNotification({ text: c('Info').t`Recovery phrase copied to clipboard` }); - }; - - const hiddenTextContent = '•••• •••••••• ••••• •••••• ••• •••••• •••• •••••••• •••• •••••• ••• •••• ••••••'; - - return ( -
    -
    {hasSentPayload ? recoveryPhrase : hiddenTextContent}
    - - {hasSentPayload ? ( - - ) : ( - - )} -
    - ); -}; - -export default CopyRecoveryPhraseContainer; diff --git a/applications/account/src/app/containers/recoveryPhrase/components/RecoveryKitAction.tsx b/applications/account/src/app/containers/recoveryPhrase/components/RecoveryKitAction.tsx deleted file mode 100644 index 0bc0d172c72..00000000000 --- a/applications/account/src/app/containers/recoveryPhrase/components/RecoveryKitAction.tsx +++ /dev/null @@ -1,69 +0,0 @@ -import { c } from 'ttag'; - -import { Button } from '@proton/atoms/Button/Button'; -import { IcArrowDownLine } from '@proton/icons/icons/IcArrowDownLine'; -import { RECOVERY_KIT_FILE_NAME } from '@proton/shared/lib/constants'; -import humanSize from '@proton/shared/lib/helpers/humanSize'; -import recoveryKitPdf from '@proton/styles/assets/img/illustrations/recovery-kit-pdf.svg'; -import clsx from '@proton/utils/clsx'; - -import type useRecoveryKitDownload from '../useRecoveryKitDownload'; -import CopyRecoveryPhraseContainer from './CopyRecoveryPhraseContainer'; - -interface Props { - recoveryPhrase: string; - sendPayload: () => Promise; - method: 'recovery-kit' | 'text'; - recoveryKitDownload: ReturnType; - hasSentPayload: boolean; -} - -const RecoveryKitAction = ({ recoveryPhrase, recoveryKitDownload, sendPayload, method, hasSentPayload }: Props) => { - const { canDownloadRecoveryKit, downloadRecoveryKit, downloadingRecoveryKit, recoveryKitBlobToDownload } = - recoveryKitDownload; - - const cardClasses = 'rounded-lg border border-solid border-norm shadow-raised bg-norm'; - - if (!canDownloadRecoveryKit || method === 'text') { - /** - * Fallback to copy functionality - */ - return ( - - ); - } - - const size = humanSize({ bytes: recoveryKitBlobToDownload.size }); - - return ( -
    -
    - -
    -
    -
    {c('RecoveryPhrase: Info').t`Download PDF`}
    -
    {RECOVERY_KIT_FILE_NAME}
    -
    {size}
    -
    - -
    - ); -}; - -export default RecoveryKitAction; diff --git a/applications/account/src/app/containers/recoveryPhrase/generateDeferredMnemonicData.ts b/applications/account/src/app/containers/recoveryPhrase/generateDeferredMnemonicData.ts deleted file mode 100644 index 8a0264a0985..00000000000 --- a/applications/account/src/app/containers/recoveryPhrase/generateDeferredMnemonicData.ts +++ /dev/null @@ -1,69 +0,0 @@ -import type { PrivateKeyReference } from '@proton/crypto'; -import type { Api, DecryptedKey } from '@proton/shared/lib/interfaces'; -import { generateMnemonicPayload, generateMnemonicWithSalt } from '@proton/shared/lib/mnemonic'; - -import type { DeferredMnemonicData } from './types'; -import { generateRecoveryKitBlob } from './useRecoveryKitDownload'; - -/** - * Generates the recovery phrase and prepares a payload to be used for the backend - * Will return undefined if the user has no keys - */ -const generateRecoveryPhrasePayload = async ({ - api, - username, - getUserKeys, -}: { - api: Api; - username: string; - getUserKeys: () => Promise[]>; -}) => { - const userKeys = await getUserKeys(); - - if (!userKeys.length) { - throw new Error('Unable to generate recovery phrase. No keys found.'); - } - - const { randomBytes, salt, recoveryPhrase } = await generateMnemonicWithSalt(); - - const payload = await generateMnemonicPayload({ randomBytes, salt, userKeys, api, username }); - - return { - recoveryPhrase, - payload, - }; -}; - -/** - * Generates the recovery phrase and pdf blob. - * Defer's sending the payload to the BE so that generation can be done optimistically. - * Use sendMnemonicPayloadToBackend to complete the recovery phrase setup - */ -const generateDeferredMnemonicData = async ({ - api, - emailAddress, - username, - getUserKeys, -}: { - api: Api; - emailAddress: string; - username: string; - getUserKeys: () => Promise[]>; -}): Promise => { - const generatedRecoveryPhrasePayload = await generateRecoveryPhrasePayload({ username, getUserKeys, api }); - - const { recoveryPhrase, payload } = generatedRecoveryPhrasePayload; - - const recoveryKitBlob = await generateRecoveryKitBlob({ - recoveryPhrase, - emailAddress, - }); - - return { - recoveryPhrase, - recoveryKitBlob, - payload, - }; -}; - -export default generateDeferredMnemonicData; diff --git a/applications/account/src/app/containers/recoveryPhrase/types.ts b/applications/account/src/app/containers/recoveryPhrase/types.ts deleted file mode 100644 index 743af9a6376..00000000000 --- a/applications/account/src/app/containers/recoveryPhrase/types.ts +++ /dev/null @@ -1,23 +0,0 @@ -import type { SetMnemonicPhrasePayload } from '@proton/shared/lib/api/settingsMnemonic'; - -export type RecoveryKitBlob = Blob; - -/** - * All the data required to display the recovery phrase, download the recovery kit, and ensure the BE is happy. - */ -export interface DeferredMnemonicData { - /** - * 12 word recovery phrase - */ - recoveryPhrase: string; - /** - * Blob of the pdf that will be downloaded. - * Will be null if an error occured while generating. - */ - recoveryKitBlob: RecoveryKitBlob | null; - /** - * Payload to be sent to the BE. - * Handled by the sendMnemonicPayloadToBackend function - */ - payload: SetMnemonicPhrasePayload; -} diff --git a/applications/account/src/app/containers/recoveryPhrase/useRecoveryKitDownload.tsx b/applications/account/src/app/containers/recoveryPhrase/useRecoveryKitDownload.tsx deleted file mode 100644 index ed79a001756..00000000000 --- a/applications/account/src/app/containers/recoveryPhrase/useRecoveryKitDownload.tsx +++ /dev/null @@ -1,172 +0,0 @@ -import { useLayoutEffect } from 'react'; - -import { format } from 'date-fns'; - -import useLoading from '@proton/hooks/useLoading'; -import { RECOVERY_KIT_FILE_NAME } from '@proton/shared/lib/constants'; -import { isIos, isIpad } from '@proton/shared/lib/helpers/browser'; -import downloadFile from '@proton/shared/lib/helpers/downloadFile'; -import { traceError } from '@proton/shared/lib/helpers/sentry'; -import { dateLocale } from '@proton/shared/lib/i18n'; - -import type { RecoveryKitBlob } from './types'; - -const getRecoveryKit = async () => { - // Note: This chunkName is important as it's used in the chunk plugin to avoid splitting it into multiple files - return import(/* webpackChunkName: "recovery-kit" */ '@proton/recovery-kit'); -}; - -/** - * If true, we can use the recovery kit pdf download. - * If false, we need to use copy recovery phrase instead - */ -const canUseRecoveryKitPdfDownload = () => { - /** - * iOS and iPad have a bug where the blob download is not working. - * We need to use the copy to clipboard method instead. - */ - const isBrokenBlobDownload = isIos() || isIpad(); - - return !isBrokenBlobDownload; -}; - -let ranPreload = false; - -/** - * Prefetch @proton/recovery-kit - * To be called before useRecoveryKitDownload to speed up recovery kit generation - */ -export const usePrefetchGenerateRecoveryKit = () => { - useLayoutEffect(() => { - if (ranPreload) { - return; - } - - ranPreload = true; - - setTimeout(() => { - /* Custom preload */ - getRecoveryKit() - .then((result) => { - document.body.append(...result.getPrefetch()); - }) - .catch((e) => { - traceError(e); - }); - }, 0); - }, []); -}; - -/** - * Speed up usage by prefetching the recovery kit generation with usePrefetchGenerateRecoveryKit - */ -export const generateRecoveryKitBlob = async ({ - recoveryPhrase, - emailAddress, -}: { - recoveryPhrase: string; - emailAddress: string; -}): Promise => { - try { - const { generatePDFKit } = await getRecoveryKit(); - - const pdf = await generatePDFKit({ - // Not translated because the PDF isn't translated - date: `Created on ${format(new Date(), 'PPP', { locale: dateLocale })}`, - emailAddress, - recoveryPhrase, - }); - - const blob = new Blob([pdf.buffer], { type: 'application/pdf' }); - - return blob; - } catch (error) { - traceError(error); - return null; - } -}; - -interface ReturnValueBase { - /** - * Whether the download is supported. - * You should fallback to copy functionality if download is not supported. - */ - canDownloadRecoveryKit: boolean; - /** - * Download the recovery kit. - * Will return null if the download is not supported. - */ - downloadRecoveryKit: (() => Promise) | null; - /** - * Whether the recovery kit is being downloaded. - */ - downloadingRecoveryKit: boolean; - /** - * Blob of the pdf that will be downloaded. - * Will be null if the download is not supported. - */ - recoveryKitBlobToDownload: RecoveryKitBlob | null; -} - -interface ReturnValueUnsupported extends ReturnValueBase { - canDownloadRecoveryKit: false; - downloadRecoveryKit: null; - downloadingRecoveryKit: false; - recoveryKitBlobToDownload: null; -} - -interface ReturnValueSupported extends ReturnValueBase { - canDownloadRecoveryKit: true; - downloadRecoveryKit: () => Promise; - downloadingRecoveryKit: boolean; - recoveryKitBlobToDownload: RecoveryKitBlob; -} - -type ReturnValue = ReturnValueUnsupported | ReturnValueSupported; - -/** - * Exposes functions to handle recovery kit download. - * Use `usePrefetchGenerateRecoveryKit` to speed up the recovery kit generation. - */ -const useRecoveryKitDownload = ({ - recoveryKitBlob, - sendPayload, -}: { - /** - * Blob of the pdf that will be downloaded. - * Null if an error occurred while generating. - */ - recoveryKitBlob: RecoveryKitBlob | null; - sendPayload: () => Promise; -}): ReturnValue => { - const [downloadingRecoveryKit, withLoading] = useLoading(); - - if (!recoveryKitBlob || !canUseRecoveryKitPdfDownload()) { - /** - * Recovery kit download not supported. - * Use the copy recovery phrase components instead. - */ - return { - canDownloadRecoveryKit: false, - downloadRecoveryKit: null, - downloadingRecoveryKit: false, - recoveryKitBlobToDownload: null, - }; - } - - const handleDownload = async () => { - try { - await sendPayload(); - downloadFile(recoveryKitBlob, RECOVERY_KIT_FILE_NAME); - } catch (error) {} - }; - - return { - canDownloadRecoveryKit: true, - downloadRecoveryKit: () => withLoading(handleDownload), - downloadingRecoveryKit, - recoveryKitBlobToDownload: recoveryKitBlob, - }; -}; - -export default useRecoveryKitDownload; diff --git a/applications/account/src/app/containers/securityCheckup/Actions.tsx b/applications/account/src/app/containers/securityCheckup/Actions.tsx index 992e17bf681..15a6dd4dfc0 100644 --- a/applications/account/src/app/containers/securityCheckup/Actions.tsx +++ b/applications/account/src/app/containers/securityCheckup/Actions.tsx @@ -33,7 +33,7 @@ const PhraseAction = () => { history.push(SECURITY_CHECKUP_PATHS.SET_PHRASE)}> } - title={c('Safety review').t`Update your Recovery Kit`} + title={c('Safety review').t`Update your recovery phrase`} subTitle={c('Safety review').t`to recover your account and data if you're ever locked out`} /> @@ -44,7 +44,7 @@ const PhraseAction = () => { history.push(SECURITY_CHECKUP_PATHS.SET_PHRASE)}> } - title={c('Safety review').t`Download your Recovery Kit`} + title={c('Safety review').t`Download your recovery phrase`} subTitle={c('Safety review').t`to recover your account and data if you're ever locked out`} /> diff --git a/applications/account/src/app/containers/securityCheckup/RecoveryMethods.tsx b/applications/account/src/app/containers/securityCheckup/RecoveryMethods.tsx index 98f60b54bb0..f9ea0b91a36 100644 --- a/applications/account/src/app/containers/securityCheckup/RecoveryMethods.tsx +++ b/applications/account/src/app/containers/securityCheckup/RecoveryMethods.tsx @@ -33,7 +33,7 @@ const Phrase = () => { } - title={c('Safety review').t`Your Recovery Kit`} + title={c('Safety review').t`Your recovery phrase`} subTitle={c('Safety review').t`Can be used to regain access to your account and data`} checkmark /> diff --git a/applications/account/src/app/containers/securityCheckup/SecurityCheckupRouter.tsx b/applications/account/src/app/containers/securityCheckup/SecurityCheckupRouter.tsx index de0a0b2da2c..6053aba2f81 100644 --- a/applications/account/src/app/containers/securityCheckup/SecurityCheckupRouter.tsx +++ b/applications/account/src/app/containers/securityCheckup/SecurityCheckupRouter.tsx @@ -4,6 +4,10 @@ import { Route, Switch } from 'react-router-dom'; import { c } from 'ttag'; import { restoreSecurityCheckupSession, securityCheckupSlice } from '@proton/account'; +import { + securityCheckupListenerStarted, + securityCheckupListenerStopped, +} from '@proton/account/securityCheckup/listenerActions'; import { useUser } from '@proton/account/user/hooks'; import { useApi, useAppTitle } from '@proton/components'; import { lockSensitiveSettings } from '@proton/shared/lib/api/user'; @@ -33,9 +37,10 @@ const SecurityCheckupRouter = () => { useAppTitle(c('Safety review').t`Safety review`); useEffect(() => { + dispatch(securityCheckupListenerStarted({ href: window.location.href })); restoreSecurityCheckupSession({ dispatch, userId: user.ID }); - return () => { + dispatch(securityCheckupListenerStopped()); dispatch(securityCheckupSlice.actions.clearSession()); dispatch(securityCheckupSlice.actions.clearSource()); }; diff --git a/applications/account/src/app/containers/securityCheckup/SecurityCheckupSwitch.tsx b/applications/account/src/app/containers/securityCheckup/SecurityCheckupSwitch.tsx new file mode 100644 index 00000000000..8bf64cd51b0 --- /dev/null +++ b/applications/account/src/app/containers/securityCheckup/SecurityCheckupSwitch.tsx @@ -0,0 +1,38 @@ +import { useState } from 'react'; +import { useLocation } from 'react-router-dom'; + +import { SafetyReviewOrRedirect } from '@proton/account/safetyReview/components/SafetyReviewOrRedirect'; +import { getSafetyReviewBackLink } from '@proton/account/safetyReview/components/getSafetyReviewBackLink'; +import { useFlagsStatus } from '@proton/unleash/proxy'; +import { useFlag } from '@proton/unleash/useFlag'; + +import AccountLoaderPage from '../../content/AccountLoaderPage'; +import SecurityCheckupContainer from './SecurityCheckupContainer'; + +export const SecurityCheckupSwitch = () => { + const location = useLocation(); + const { flagsReady } = useFlagsStatus(); + const isRecoverySettingsRedesignEnabled = useFlag('RecoverySettingsRedesign'); + + const [{ vParamIsNew, backLink }] = useState(() => { + const initialSearchParams = new URLSearchParams(location.search); + const backLink = getSafetyReviewBackLink(decodeURIComponent(initialSearchParams.get('back') ?? '')); + return { + vParamIsNew: initialSearchParams.get('v') === 'new', + backLink, + }; + }); + + if (!flagsReady) { + return ; + } + + const isNewVersion = vParamIsNew || isRecoverySettingsRedesignEnabled; + const isEmailSource = location.pathname.includes('safety-review/source/email'); + + if (isNewVersion && !isEmailSource) { + return } />; + } + + return ; +}; diff --git a/applications/account/src/app/containers/securityCheckup/components/SecurityCheckupLayout.tsx b/applications/account/src/app/containers/securityCheckup/components/SecurityCheckupLayout.tsx index 471b52c3a9f..bbf183f60d9 100644 --- a/applications/account/src/app/containers/securityCheckup/components/SecurityCheckupLayout.tsx +++ b/applications/account/src/app/containers/securityCheckup/components/SecurityCheckupLayout.tsx @@ -33,7 +33,10 @@ const SecurityCheckupLayout = ({ children }: Props) => { const nameToDisplay = user.DisplayName || user.Name || user.Email || ''; const initials = getInitials(nameToDisplay); - const isRoot = location.pathname === SECURITY_CHECKUP_PATHS.ROOT; + const isRoot = + location.pathname === SECURITY_CHECKUP_PATHS.ROOT || + // Handle email sources as root + location.pathname.includes(`${SECURITY_CHECKUP_PATHS.ROOT}/source`); const BackButton = () => { if (!isRoot) { diff --git a/applications/account/src/app/containers/securityCheckup/routes/SecurityCheckupRoot.tsx b/applications/account/src/app/containers/securityCheckup/routes/SecurityCheckupRoot.tsx index 103aa6d0dc2..5ef9ccc6f9f 100644 --- a/applications/account/src/app/containers/securityCheckup/routes/SecurityCheckupRoot.tsx +++ b/applications/account/src/app/containers/securityCheckup/routes/SecurityCheckupRoot.tsx @@ -1,9 +1,8 @@ import type { MutableRefObject, ReactNode } from 'react'; import { useEffect } from 'react'; +import { sendSafetyReviewPageLoadTelemetryReport } from '@proton/account/safetyReview/telemetry/safetyReviewTelemetry'; import { useApi, useSecurityCheckup } from '@proton/components'; -import { TelemetryAccountSecurityCheckupEvents, TelemetryMeasurementGroups } from '@proton/shared/lib/api/telemetry'; -import { sendTelemetryReport } from '@proton/shared/lib/helpers/metrics'; import RecommendedActions from '../RecommendedActions'; import SecurityCheckupSummaryTitle from '../SecurityCheckupSummaryTitle'; @@ -25,15 +24,12 @@ const SecurityCheckupRoot = ({ } pageLoadOnceRef.current = true; - void sendTelemetryReport({ + + sendSafetyReviewPageLoadTelemetryReport({ api, - measurementGroup: TelemetryMeasurementGroups.accountSecurityCheckup, - event: TelemetryAccountSecurityCheckupEvents.pageLoad, - dimensions: { - initialCohort: session.initialCohort, - source, - }, - delay: false, + initialCohort: session.initialCohort, + source, + variant: 'A', }); }, [session?.initialCohort, source]); diff --git a/applications/account/src/app/containers/securityCheckup/routes/email/DisableEmailContainer.tsx b/applications/account/src/app/containers/securityCheckup/routes/email/DisableEmailContainer.tsx index 80fdb52aee7..8af7db6a1a3 100644 --- a/applications/account/src/app/containers/securityCheckup/routes/email/DisableEmailContainer.tsx +++ b/applications/account/src/app/containers/securityCheckup/routes/email/DisableEmailContainer.tsx @@ -3,15 +3,13 @@ import { Link, Redirect } from 'react-router-dom'; import { c } from 'ttag'; -import { userSettingsThunk } from '@proton/account/userSettings'; +import { toggleRecoveryEmailReset } from '@proton/account/recovery/accountRecoveryActions'; import { Button } from '@proton/atoms/Button/Button'; import { ButtonLike } from '@proton/atoms/Button/ButtonLike'; -import { useApi, useSecurityCheckup } from '@proton/components'; +import { useSecurityCheckup } from '@proton/components'; import getBoldFormattedText from '@proton/components/helpers/getBoldFormattedText'; import useLoading from '@proton/hooks/useLoading'; import { useDispatch } from '@proton/redux-shared-store/sharedProvider'; -import { CacheType } from '@proton/redux-utilities'; -import { updateResetEmail } from '@proton/shared/lib/api/settings'; import { SECURITY_CHECKUP_PATHS } from '@proton/shared/lib/constants'; import methodSuccessSrc from '../../assets/method-success.svg'; @@ -26,7 +24,6 @@ enum STEPS { } const DisableEmailContainer = () => { - const api = useApi(); const { securityState } = useSecurityCheckup(); const { email } = securityState; const dispatch = useDispatch(); @@ -63,9 +60,8 @@ const DisableEmailContainer = () => { } const disablePasswordResetViaEmail = async () => { - await api(updateResetEmail({ Reset: 0, PersistPasswordScope: true })); + await dispatch(toggleRecoveryEmailReset({ value: false, persistPasswordScope: true })); - await dispatch(userSettingsThunk({ cache: CacheType.None })); setStep(STEPS.SUCCESS); }; diff --git a/applications/account/src/app/containers/securityCheckup/routes/email/EnableEmailContainer.tsx b/applications/account/src/app/containers/securityCheckup/routes/email/EnableEmailContainer.tsx index b9ca639c557..41fdab6ac0d 100644 --- a/applications/account/src/app/containers/securityCheckup/routes/email/EnableEmailContainer.tsx +++ b/applications/account/src/app/containers/securityCheckup/routes/email/EnableEmailContainer.tsx @@ -3,15 +3,13 @@ import { Link, Redirect } from 'react-router-dom'; import { c } from 'ttag'; -import { userSettingsThunk } from '@proton/account/userSettings'; +import { toggleRecoveryEmailReset } from '@proton/account/recovery/accountRecoveryActions'; import { Button } from '@proton/atoms/Button/Button'; import { ButtonLike } from '@proton/atoms/Button/ButtonLike'; -import { useApi, useSecurityCheckup } from '@proton/components'; +import { useSecurityCheckup } from '@proton/components'; import getBoldFormattedText from '@proton/components/helpers/getBoldFormattedText'; import useLoading from '@proton/hooks/useLoading'; import { useDispatch } from '@proton/redux-shared-store/sharedProvider'; -import { CacheType } from '@proton/redux-utilities'; -import { updateResetEmail } from '@proton/shared/lib/api/settings'; import { BRAND_NAME, SECURITY_CHECKUP_PATHS } from '@proton/shared/lib/constants'; import methodSuccessSrc from '../../assets/method-success.svg'; @@ -26,7 +24,6 @@ enum STEPS { } const EnableEmailContainer = () => { - const api = useApi(); const { securityState } = useSecurityCheckup(); const { email } = securityState; const dispatch = useDispatch(); @@ -64,9 +61,8 @@ const EnableEmailContainer = () => { } const enablePasswordResetViaEmail = async () => { - await api(updateResetEmail({ Reset: 1, PersistPasswordScope: true })); + await dispatch(toggleRecoveryEmailReset({ value: true, persistPasswordScope: true })); - await dispatch(userSettingsThunk({ cache: CacheType.None })); setStep(STEPS.SUCCESS); }; diff --git a/applications/account/src/app/containers/securityCheckup/routes/email/SetEmailContainer.tsx b/applications/account/src/app/containers/securityCheckup/routes/email/SetEmailContainer.tsx index 62960cacfa4..806dd63c873 100644 --- a/applications/account/src/app/containers/securityCheckup/routes/email/SetEmailContainer.tsx +++ b/applications/account/src/app/containers/securityCheckup/routes/email/SetEmailContainer.tsx @@ -30,8 +30,15 @@ const CommonRecoveryEmail = ({ autoFocus {...accountRecovery.recoveryEmail.props} onSubmit={async (value) => { - await accountRecovery.recoveryEmail.handleChangeEmailValue({ value, persistPasswordScope: true }); - onSuccess(); + try { + const newUserSettings = await accountRecovery.recoveryEmail.handleChangeEmailValue({ + value, + persistPasswordScope: true, + }); + if (!!newUserSettings?.Email.Value) { + onSuccess(); + } + } catch {} }} disableVerifyCta inputProps={{ label }} diff --git a/applications/account/src/app/containers/securityCheckup/routes/phone/DisablePhoneContainer.tsx b/applications/account/src/app/containers/securityCheckup/routes/phone/DisablePhoneContainer.tsx index 79cea2228be..3bbfbfffd25 100644 --- a/applications/account/src/app/containers/securityCheckup/routes/phone/DisablePhoneContainer.tsx +++ b/applications/account/src/app/containers/securityCheckup/routes/phone/DisablePhoneContainer.tsx @@ -3,16 +3,14 @@ import { Link, Redirect } from 'react-router-dom'; import { c } from 'ttag'; -import { userSettingsThunk } from '@proton/account/userSettings'; +import { toggleRecoveryPhoneReset } from '@proton/account/recovery/accountRecoveryActions'; import { Button } from '@proton/atoms/Button/Button'; import { ButtonLike } from '@proton/atoms/Button/ButtonLike'; -import { useApi, useSecurityCheckup } from '@proton/components'; +import { useSecurityCheckup } from '@proton/components'; import FormattedPhoneValue from '@proton/components/components/v2/phone/LazyFormattedPhoneValue'; import getBoldFormattedText from '@proton/components/helpers/getBoldFormattedText'; import useLoading from '@proton/hooks/useLoading'; import { useDispatch } from '@proton/redux-shared-store/sharedProvider'; -import { CacheType } from '@proton/redux-utilities'; -import { updateResetPhone } from '@proton/shared/lib/api/settings'; import { SECURITY_CHECKUP_PATHS } from '@proton/shared/lib/constants'; import methodSuccessSrc from '../../assets/method-success.svg'; @@ -27,7 +25,6 @@ enum STEPS { } const DisablePhoneContainer = () => { - const api = useApi(); const { securityState } = useSecurityCheckup(); const { phone } = securityState; @@ -66,8 +63,7 @@ const DisablePhoneContainer = () => { } const disablePasswordResetViaPhone = async () => { - await api(updateResetPhone({ Reset: 0, PersistPasswordScope: true })); - await dispatch(userSettingsThunk({ cache: CacheType.None })); + await dispatch(toggleRecoveryPhoneReset({ value: false, persistPasswordScope: true })); setStep(STEPS.SUCCESS); }; diff --git a/applications/account/src/app/containers/securityCheckup/routes/phone/EnablePhoneContainer.tsx b/applications/account/src/app/containers/securityCheckup/routes/phone/EnablePhoneContainer.tsx index 0a6195f7d39..4b06af6717b 100644 --- a/applications/account/src/app/containers/securityCheckup/routes/phone/EnablePhoneContainer.tsx +++ b/applications/account/src/app/containers/securityCheckup/routes/phone/EnablePhoneContainer.tsx @@ -3,16 +3,14 @@ import { Link, Redirect } from 'react-router-dom'; import { c } from 'ttag'; -import { userSettingsThunk } from '@proton/account/userSettings'; +import { toggleRecoveryPhoneReset } from '@proton/account/recovery/accountRecoveryActions'; import { Button } from '@proton/atoms/Button/Button'; import { ButtonLike } from '@proton/atoms/Button/ButtonLike'; -import { useApi, useSecurityCheckup } from '@proton/components'; +import { useSecurityCheckup } from '@proton/components'; import FormattedPhoneValue from '@proton/components/components/v2/phone/LazyFormattedPhoneValue'; import getBoldFormattedText from '@proton/components/helpers/getBoldFormattedText'; import useLoading from '@proton/hooks/useLoading'; import { useDispatch } from '@proton/redux-shared-store/sharedProvider'; -import { CacheType } from '@proton/redux-utilities'; -import { updateResetPhone } from '@proton/shared/lib/api/settings'; import { BRAND_NAME, SECURITY_CHECKUP_PATHS } from '@proton/shared/lib/constants'; import methodSuccessSrc from '../../assets/method-success.svg'; @@ -27,7 +25,6 @@ enum STEPS { } const EnablePhoneContainer = () => { - const api = useApi(); const { securityState } = useSecurityCheckup(); const { phone } = securityState; @@ -68,9 +65,8 @@ const EnablePhoneContainer = () => { } const enablePasswordResetViaPhone = async () => { - await api(updateResetPhone({ Reset: 1, PersistPasswordScope: true })); + await dispatch(toggleRecoveryPhoneReset({ value: true, persistPasswordScope: true })); - await dispatch(userSettingsThunk({ cache: CacheType.None })); setStep(STEPS.SUCCESS); }; diff --git a/applications/account/src/app/containers/securityCheckup/routes/phone/SetPhoneContainer.tsx b/applications/account/src/app/containers/securityCheckup/routes/phone/SetPhoneContainer.tsx index 3d209fbf969..b45d6dd3997 100644 --- a/applications/account/src/app/containers/securityCheckup/routes/phone/SetPhoneContainer.tsx +++ b/applications/account/src/app/containers/securityCheckup/routes/phone/SetPhoneContainer.tsx @@ -4,9 +4,10 @@ import { c } from 'ttag'; import { useUpdateAccountRecovery } from '@proton/account/recovery/useUpdateAccountRecovery'; import { Button } from '@proton/atoms/Button/Button'; -import { useMyCountry, useSecurityCheckup } from '@proton/components'; +import { useMyCountry } from '@proton/components'; import RecoveryPhone from '@proton/components/containers/recovery/phone/RecoveryPhone'; import { SECURITY_CHECKUP_PATHS } from '@proton/shared/lib/constants'; +import { SETTINGS_STATUS } from '@proton/shared/lib/interfaces'; import AccountLoaderPage from '../../../../content/AccountLoaderPage'; import SecurityCheckupMain from '../../components/SecurityCheckupMain'; @@ -17,9 +18,6 @@ import { phoneIcon } from '../../methodIcons'; const SetPhoneContainer = () => { const history = useHistory(); - const { securityState } = useSecurityCheckup(); - const { phone } = securityState; - const accountRecovery = useUpdateAccountRecovery(); const defaultCountry = useMyCountry(); @@ -57,14 +55,19 @@ const SetPhoneContainer = () => { }} {...accountRecovery.recoveryPhone.props} onSubmit={async (value) => { - await accountRecovery.recoveryPhone.handleChangePhoneValue({ value, persistPasswordScope: true }); + try { + const userSettings = await accountRecovery.recoveryPhone.handleChangePhoneValue({ + value, + persistPasswordScope: true, + }); - if (phone.verified) { - history.push(SECURITY_CHECKUP_PATHS.ROOT); - return; - } + if (userSettings.Phone.Status === SETTINGS_STATUS.VERIFIED) { + history.push(SECURITY_CHECKUP_PATHS.ROOT); + return; + } - history.push(`${SECURITY_CHECKUP_PATHS.VERIFY_PHONE}?setup=1`); + history.push(`${SECURITY_CHECKUP_PATHS.VERIFY_PHONE}?setup=1`); + } catch {} }} /> diff --git a/applications/account/src/app/containers/securityCheckup/routes/phrase/DownloadPhraseContainer.tsx b/applications/account/src/app/containers/securityCheckup/routes/phrase/DownloadPhraseContainer.tsx index 9c537575918..b0823fbf59d 100644 --- a/applications/account/src/app/containers/securityCheckup/routes/phrase/DownloadPhraseContainer.tsx +++ b/applications/account/src/app/containers/securityCheckup/routes/phrase/DownloadPhraseContainer.tsx @@ -4,6 +4,10 @@ import { Link, Redirect } from 'react-router-dom'; import { c } from 'ttag'; import { useInactiveKeys, userThunk } from '@proton/account'; +import { + type DeferredMnemonicData, + generateDeferredMnemonicData, +} from '@proton/account/recovery/recoveryKit/generateDeferredMnemonicData'; import { useUser } from '@proton/account/user/hooks'; import { useGetUserKeys } from '@proton/account/userKeys/hooks'; import { Button } from '@proton/atoms/Button/Button'; @@ -14,7 +18,7 @@ import getBoldFormattedText from '@proton/components/helpers/getBoldFormattedTex import useLoading from '@proton/hooks/useLoading'; import { IcArrowDownLine } from '@proton/icons/icons/IcArrowDownLine'; import { useDispatch } from '@proton/redux-shared-store/sharedProvider'; -import { CacheType } from '@proton/redux-utilities'; +import { CacheType } from '@proton/redux-utilities/interface'; import { getApiError } from '@proton/shared/lib/api/helpers/apiErrorHelper'; import { reactivateMnemonicPhrase, updateMnemonicPhrase } from '@proton/shared/lib/api/settingsMnemonic'; import { @@ -29,8 +33,6 @@ import { MNEMONIC_STATUS } from '@proton/shared/lib/interfaces'; import recoveryKitSrc from '@proton/styles/assets/img/illustrations/recovery-kit.svg'; import noop from '@proton/utils/noop'; -import generateDeferredMnemonicData from '../../../recoveryPhrase/generateDeferredMnemonicData'; -import type { DeferredMnemonicData } from '../../../recoveryPhrase/types'; import methodErrorSrc from '../../assets/method-error.svg'; import methodSuccessSrc from '../../assets/method-success.svg'; import SecurityCheckupMain from '../../components/SecurityCheckupMain'; @@ -72,12 +74,12 @@ const DownloadPhrase = ({ recoveryPhraseData }: { recoveryPhraseData: DeferredMn
    - {c('Safety review').t`There was an error generating your Recovery Kit`} + {c('Safety review').t`There was an error generating your recovery phrase`}
    {c('Safety review') - .t`We encountered an error while generating your Recovery Kit. Please try again later, or contact support if the issue continues.`} + .t`We encountered an error while generating your recovery phrase. Please try again later, or contact support if the issue continues.`}
    @@ -91,7 +93,7 @@ const DownloadPhrase = ({ recoveryPhraseData }: { recoveryPhraseData: DeferredMn return ( }> - {c('Safety review').t`Your Recovery Kit is set`} + {c('Safety review').t`Your recovery phrase is set`}
    @@ -101,7 +103,7 @@ const DownloadPhrase = ({ recoveryPhraseData }: { recoveryPhraseData: DeferredMn
    {c('Safety review') - .t`You can use the recovery phrase in this Recovery Kit to fully restore your account when you reset your password, so make sure you keep it somewhere safe.`} + .t`You can use the recovery phrase in this recovery phrase to fully restore your account when you reset your password, so make sure you keep it somewhere safe.`}
    @@ -164,8 +166,8 @@ const DownloadPhrase = ({ recoveryPhraseData }: { recoveryPhraseData: DeferredMn } > {phrase.isSet || phrase.isOutdated - ? c('Safety review').t`Update your Recovery Kit?` - : c('Safety review').t`Download your Recovery Kit`} + ? c('Safety review').t`Update your recovery phrase?` + : c('Safety review').t`Download your recovery phrase`}
    @@ -176,13 +178,13 @@ const DownloadPhrase = ({ recoveryPhraseData }: { recoveryPhraseData: DeferredMn {phrase.isOutdated ? (
    {c('Safety review') - .t`Because you reset your password, your current Recovery Kit can only be used to recover the data created before your password reset.`} + .t`Because you reset your password, your current recovery phrase can only be used to recover the data created before your password reset.`}
    ) : ( <>
    {c('Safety review') - .t`If you get locked out of your ${BRAND_NAME} Account, your Recovery Kit will allow you to sign in and recover your data.`} + .t`If you get locked out of your ${BRAND_NAME} Account, your recovery phrase will allow you to sign in and recover your data.`}
    @@ -196,7 +198,7 @@ const DownloadPhrase = ({ recoveryPhraseData }: { recoveryPhraseData: DeferredMn
    {getBoldFormattedText( c('Safety review') - .t`You have previously downloaded a Recovery Kit. Downloading a new one will **deactivate the old one**.` + .t`You have previously downloaded a recovery phrase. Downloading a new one will **deactivate the old one**.` )}
    ) : null} @@ -211,7 +213,7 @@ const DownloadPhrase = ({ recoveryPhraseData }: { recoveryPhraseData: DeferredMn />
    ) : null} diff --git a/applications/account/src/app/containers/securityCheckup/verification/CodeInput.tsx b/applications/account/src/app/containers/securityCheckup/verification/CodeInput.tsx index c306abd82be..1daf0af64b4 100644 --- a/applications/account/src/app/containers/securityCheckup/verification/CodeInput.tsx +++ b/applications/account/src/app/containers/securityCheckup/verification/CodeInput.tsx @@ -2,17 +2,13 @@ import { type ReactNode, useEffect, useState } from 'react'; import { c } from 'ttag'; -import { useGetUserSettings } from '@proton/account/userSettings/hooks'; +import { useCodeInput } from '@proton/account/safetyReview/verification/useCodeInput'; +import type { VerificationMethod } from '@proton/account/safetyReview/verification/verification'; import { Button } from '@proton/atoms/Button/Button'; -import { Form, InputFieldTwo, TotpInput, useApi, useFormErrors, useNotifications } from '@proton/components'; +import { Form, InputFieldTwo, TotpInput, useFormErrors } from '@proton/components'; import useLoading from '@proton/hooks/useLoading'; -import { CacheType } from '@proton/redux-utilities'; -import { getApiError } from '@proton/shared/lib/api/helpers/apiErrorHelper'; -import { API_CUSTOM_ERROR_CODES } from '@proton/shared/lib/errors'; import { numberValidator, requiredValidator } from '@proton/shared/lib/helpers/formValidators'; - -import type { VerificationMethod } from './verification'; -import { getInitiationCall, initiateVerification, sendNewCode, verifyCode } from './verification'; +import noop from '@proton/utils/noop'; interface Props { value: ReactNode; @@ -22,79 +18,28 @@ interface Props { } export const CodeInput = ({ value, onSuccess, onError, method }: Props) => { - const api = useApi(); - const getUserSettings = useGetUserSettings(); - - const { createNotification } = useNotifications(); - - const [token, setToken] = useState(); - - const [code, setCode] = useState(''); - const [codeError, setCodeError] = useState(''); - const [submittingCode, withSubmittingCode] = useLoading(); - const [resendingCode, withResendingCode] = useLoading(); - - const [showResendCode, setShowResendCode] = useState(false); - - const { validator, onFormSubmit, reset } = useFormErrors(); - - const invalidCodeError = c('Safety review').t`Invalid code`; + const { actions, state } = useCodeInput(); useEffect(() => { - void initiateVerification({ api, method, config: getInitiationCall(method) }) - .then(({ token }) => setToken(token)) - .catch(() => onError()); + actions.handleInitiateVerification(method).catch(onError); }, []); - const handleSubmitCode = async (code: string) => { - if (!token) { - setCodeError(invalidCodeError); - setShowResendCode(true); - return; - } - - try { - await verifyCode({ - token, - code, - api, - method, - config: getInitiationCall(method), - }); - await getUserSettings({ cache: CacheType.None }); - - onSuccess(); - } catch (error: any) { - const { code } = getApiError(error); - - if (code === API_CUSTOM_ERROR_CODES.TOKEN_INVALID) { - setCodeError(invalidCodeError); - setShowResendCode(true); - } - } - }; - - const handleSubmit = async () => { - if (!onFormSubmit()) { - return; - } - return handleSubmitCode(code); - }; - - const boldValue = {value}; - - const handleSendNewCode = async (token: string) => { - await sendNewCode({ token, api, method }); + const { validator, onFormSubmit, reset } = useFormErrors(); - setCode(''); - setCodeError(''); - reset(); + const [submittingCode, withSubmittingCode] = useLoading(); + const [resendingCode, withResendingCode] = useLoading(); - createNotification({ text: c('Safety review').jt`Code sent to ${boldValue}` }); - }; + const [code, setCode] = useState(''); return ( -
    withSubmittingCode(handleSubmit())}> + { + if (!onFormSubmit()) { + return; + } + withSubmittingCode(actions.handleSubmit(code, method).then(onSuccess).catch(noop)); + }} + > { value={code} onValue={(value: string) => { setCode(value); - setCodeError(''); + actions.resetCodeError(); }} error={validator([ requiredValidator(code), numberValidator(code), code.length !== 6 ? c('Error').t`Enter 6 digits` : '', - codeError, + state.codeError, ])} /> - {showResendCode && token ? ( + {state.showResendCode && state.token ? ( - - ); -}; diff --git a/applications/account/src/app/login/unauth-lost-2fa/steps/verifyOwnershipWithEmail/VerifyOwnershipWithEmailStep.tsx b/applications/account/src/app/login/unauth-lost-2fa/steps/verifyOwnershipWithEmail/VerifyOwnershipWithEmailStep.tsx index 8c40a914317..c394dcd61cb 100644 --- a/applications/account/src/app/login/unauth-lost-2fa/steps/verifyOwnershipWithEmail/VerifyOwnershipWithEmailStep.tsx +++ b/applications/account/src/app/login/unauth-lost-2fa/steps/verifyOwnershipWithEmail/VerifyOwnershipWithEmailStep.tsx @@ -4,6 +4,7 @@ import { useEffect, useState } from 'react'; import { useSelector } from '@xstate/react'; import { c } from 'ttag'; +import { initiateVerification, sendNewCode, verifyCode } from '@proton/account/safetyReview/verification/verification'; import { Button } from '@proton/atoms/Button/Button'; import { Form, @@ -21,11 +22,6 @@ import { reauthByEmailVerification } from '@proton/shared/lib/api/verify'; import { API_CUSTOM_ERROR_CODES } from '@proton/shared/lib/errors'; import { numberValidator, requiredValidator } from '@proton/shared/lib/helpers/formValidators'; -import { - initiateVerification, - sendNewCode, - verifyCode, -} from '../../../../containers/securityCheckup/verification/verification'; import { getEmailVerificationCodeText } from '../../../../content/helper'; import { useRequestNewVerificationCode } from '../../../../unauthed-forgot-password/hooks/useRequestNewVerificationCode'; import { useVerifyOwnershipWithEmailActorRef } from '../../UnauthedLost2FAContainer'; @@ -151,17 +147,21 @@ const VerifyOwnershipWithEmailStepContent = ({ sendStepLoad('verify ownership with email'); }, [verifyCodeStep]); - const handleError = useErrorHandler(); - const api = useApi(); - const [verificationResult, setVerificationResult] = useState(); + const verificationResult = useSelector(actorRef, (s) => s.context.verificationResult); + const initiationFailed = useSelector(actorRef, (s) => s.matches('initiation failed')); + const initiationAttempts = useSelector(actorRef, (s) => s.context.initiationAttempts); useEffect(() => { if (actorRef.getSnapshot().value !== 'verify code') { return; } + if (verificationResult) { + return; + } + const sendCode = async () => { try { const result = await initiateVerification({ @@ -170,14 +170,35 @@ const VerifyOwnershipWithEmailStepContent = ({ config: reauthByEmailVerification(), }); - setVerificationResult(result); + send({ type: 'verification initiated', verificationResult: result }); } catch (error) { - handleError(error); - send({ type: 'error' }); + send({ type: 'initiation failed' }); } }; void sendCode(); - }, [actorRef.getSnapshot().value]); + }, [actorRef.getSnapshot().value, verificationResult]); + + if (initiationFailed) { + return ( + <> +
    {c('Error').t`Something went wrong. Please try again.`}
    + {initiationAttempts < 3 && ( + + )} + + + ); + } if (!verificationResult) { return ; diff --git a/applications/account/src/app/login/unauth-lost-2fa/steps/verifyOwnershipWithPhone/VerifyOwnershipWithPhoneStep.tsx b/applications/account/src/app/login/unauth-lost-2fa/steps/verifyOwnershipWithPhone/VerifyOwnershipWithPhoneStep.tsx index 960c0796cb1..3ab3f9f30ce 100644 --- a/applications/account/src/app/login/unauth-lost-2fa/steps/verifyOwnershipWithPhone/VerifyOwnershipWithPhoneStep.tsx +++ b/applications/account/src/app/login/unauth-lost-2fa/steps/verifyOwnershipWithPhone/VerifyOwnershipWithPhoneStep.tsx @@ -4,28 +4,17 @@ import { useEffect, useState } from 'react'; import { useSelector } from '@xstate/react'; import { c } from 'ttag'; +import { initiateVerification, sendNewCode, verifyCode } from '@proton/account/safetyReview/verification/verification'; import { Button } from '@proton/atoms/Button/Button'; -import { - Form, - InputFieldTwo, - Loader, - TotpInput, - useApi, - useErrorHandler, - useFormErrors, -} from '@proton/components/index'; +import { Form, InputFieldTwo, TotpInput, useApi, useErrorHandler, useFormErrors } from '@proton/components/index'; import useLoading from '@proton/hooks/useLoading'; import { getApiError } from '@proton/shared/lib/api/helpers/apiErrorHelper'; import { disable2FA } from '@proton/shared/lib/api/settings'; import { reauthBySmsVerification } from '@proton/shared/lib/api/verify'; +import { BRAND_NAME } from '@proton/shared/lib/constants'; import { API_CUSTOM_ERROR_CODES } from '@proton/shared/lib/errors'; import { numberValidator, requiredValidator } from '@proton/shared/lib/helpers/formValidators'; -import { - initiateVerification, - sendNewCode, - verifyCode, -} from '../../../../containers/securityCheckup/verification/verification'; import { getSMSVerificationCodeText } from '../../../../content/helper'; import { useRequestNewVerificationCode } from '../../../../unauthed-forgot-password/hooks/useRequestNewVerificationCode'; import { useVerifyOwnershipWithPhoneActorRef } from '../../UnauthedLost2FAContainer'; @@ -98,7 +87,7 @@ const VerifyCodeStep = ({ verificationResult }: { verificationResult: Verificati return ( withSubmittingCode(handleSubmit())}>
    - {c('Info').t`To help keep your account safe, we want to make sure it's really you trying to sign in.`} + {c('Info').t`To help keep your account safe, we want to make sure it’s really you trying to sign in.`}
    {getSMSVerificationCodeText(recoveryPhoneElement)}
    { const { send } = actorRef; + const api = useApi(); + + const [loading, withLoading] = useLoading(); + const errorHandler = useErrorHandler(); + const verifyCodeStep = useSelector(actorRef, (s) => s.matches('verify code')); + const verificationResult = useSelector(actorRef, (s) => s.context.verificationResult); const { sendStepLoad } = useUnauthedLost2FATelemetry(); useEffect(() => { @@ -152,17 +147,7 @@ const VerifyOwnershipWithPhoneStepContent = ({ sendStepLoad('verify ownership with phone'); }, [verifyCodeStep]); - const handleError = useErrorHandler(); - - const api = useApi(); - - const [verificationResult, setVerificationResult] = useState(); - - useEffect(() => { - if (actorRef.getSnapshot().value !== 'verify code') { - return; - } - + if (!verificationResult) { const sendCode = async () => { try { const result = await initiateVerification({ @@ -171,20 +156,42 @@ const VerifyOwnershipWithPhoneStepContent = ({ config: reauthBySmsVerification(), }); - setVerificationResult(result); + send({ type: 'verification initiated', verificationResult: result }); } catch (error) { - handleError(error); - send({ type: 'error' }); + errorHandler(error); } }; - void sendCode(); - }, [actorRef.getSnapshot().value]); - if (!verificationResult) { - return ; + return ( + <> +

    + {c('Info') + .t`To help keep your account safe, we want to make sure it’s really you trying to sign in.`} +

    + +

    {c('Info') + .jt`${BRAND_NAME} will send a verification code to your recovery phone. Standard message rates may apply.`}

    + + + + + + ); } - if (verifyCodeStep) { + if (verifyCodeStep && verificationResult) { return ; } diff --git a/applications/account/src/app/login/unauth-lost-2fa/steps/verifyOwnershipWithPhrase/VerifyOwnershipWithPhraseStep.tsx b/applications/account/src/app/login/unauth-lost-2fa/steps/verifyOwnershipWithPhrase/VerifyOwnershipWithPhraseStep.tsx index 91b2e8adfb5..f625a7e7f37 100644 --- a/applications/account/src/app/login/unauth-lost-2fa/steps/verifyOwnershipWithPhrase/VerifyOwnershipWithPhraseStep.tsx +++ b/applications/account/src/app/login/unauth-lost-2fa/steps/verifyOwnershipWithPhrase/VerifyOwnershipWithPhraseStep.tsx @@ -69,7 +69,6 @@ const VerifyOwnershipWithPhraseStepContent = ({ send({ type: '2fa disabled' }); } catch (error) { handleError(error); - send({ type: 'error' }); } }; diff --git a/applications/account/src/app/login/unauth-lost-2fa/useUnauthedLost2FATelemetry.ts b/applications/account/src/app/login/unauth-lost-2fa/useUnauthedLost2FATelemetry.ts index af38ac50a88..edafeae27e1 100644 --- a/applications/account/src/app/login/unauth-lost-2fa/useUnauthedLost2FATelemetry.ts +++ b/applications/account/src/app/login/unauth-lost-2fa/useUnauthedLost2FATelemetry.ts @@ -25,8 +25,7 @@ export type Step = | 'verify ownership with phone' | 'verify ownership with phrase' | '2fa-disabled' - | 'no method to disable 2fa' - | 'error'; + | 'no method to disable 2fa'; type FlowOutcome = 'signin to continue' | 'return to 2fa step' | 'reset password' | 'totp backup code provided'; diff --git a/applications/account/src/app/public/AppSwitcherContainer.tsx b/applications/account/src/app/public/AppSwitcherContainer.tsx index aa45f289c36..ee2a0d612ce 100644 --- a/applications/account/src/app/public/AppSwitcherContainer.tsx +++ b/applications/account/src/app/public/AppSwitcherContainer.tsx @@ -14,13 +14,17 @@ import ProtonLogo from '@proton/components/components/logo/ProtonLogo'; import getBoldFormattedText from '@proton/components/helpers/getBoldFormattedText'; import { IcCrossCircleFilled } from '@proton/icons/icons/IcCrossCircleFilled'; import { IcPlus } from '@proton/icons/icons/IcPlus'; +import { getForbiddenApps } from '@proton/shared/lib/apps/apps'; import { getAppName } from '@proton/shared/lib/apps/helper'; import { SessionSource } from '@proton/shared/lib/authentication/SessionInterface'; import type { APP_NAMES } from '@proton/shared/lib/constants'; import type { OrganizationExtended } from '@proton/shared/lib/interfaces'; import { useFlag } from '@proton/unleash/useFlag'; -import ExploreAppsListV2, { getExploreApps } from '../components/ExploreAppsListV2/ExploreAppsListV2'; +import ExploreAppsListV2, { + getExploreApps, + getForbiddenAppConfigs, +} from '../components/ExploreAppsListV2/ExploreAppsListV2'; import Layout from './Layout'; import PublicUserItem from './PublicUserItem'; @@ -54,9 +58,36 @@ const Disabled = ({ children }: { children: ReactElement }) => { ); }; -export const UnsupportedAppError = ({ app, organization }: { app: APP_NAMES; organization?: OrganizationExtended }) => { +const getUnsupportedAppErrorMessage = ({ + app, + organization, + forbiddenApps, +}: { + app: APP_NAMES; + organization?: OrganizationExtended; + forbiddenApps: Set; +}) => { const appName = getAppName(app); const organizationName = organization?.Name || ''; + + if (forbiddenApps.has(app)) { + return c('Info').t`**${appName}** is not available for your account.`; + } + + return organization && organizationName + ? c('Info').t`**${appName}** is not supported in your organization **${organizationName}**.` + : c('Info').t`**${appName}** is not supported.`; +}; + +export const UnsupportedAppError = ({ + app, + organization, + forbiddenApps, +}: { + app: APP_NAMES; + organization?: OrganizationExtended; + forbiddenApps: Set; +}) => { return (
    - {getBoldFormattedText( - organization && organizationName - ? c('Info').t`**${appName}** is not supported in your organization **${organizationName}**.` - : c('Info').t`**${appName}** is not supported.` - )} + {getBoldFormattedText(getUnsupportedAppErrorMessage({ app, organization, forbiddenApps }))}
    ); @@ -100,6 +127,18 @@ const AppSwitcherContainer = ({ onLogin, onSwitch, state }: Props) => { const isAuthenticatorAvailable = useFlag('AuthenticatorSettingsEnabled'); const subscribed = User.Subscribed; + const forbiddenApps = getForbiddenApps(User); + + const apps = getExploreApps({ + user: User, + organization: Organization, + isDocsHomepageAvailable, + isSheetsAvailable, + oauth: persistedSession.source === SessionSource.Oauth, + isMeetAvailable, + isAuthenticatorAvailable, + }).concat(getForbiddenAppConfigs({ user: User, forbiddenApps })); + return ( {

    {c('Info').t`Privacy and security starts here`}

    {error?.type === 'unsupported-app' && (
    - +
    )}
    { await onLogin({ diff --git a/applications/account/src/app/public/ConfirmSignOutModal.tsx b/applications/account/src/app/public/ConfirmSignOutModal.tsx new file mode 100644 index 00000000000..34f14a9fa8f --- /dev/null +++ b/applications/account/src/app/public/ConfirmSignOutModal.tsx @@ -0,0 +1,54 @@ +import { c } from 'ttag'; + +import { Button } from '@proton/atoms/Button/Button'; +import ConfirmSignOutRecoveryModal from '@proton/components/components/confirmSignOutModal/ConfirmSignOutModal'; +import ConfirmSignOutAllModal from '@proton/components/components/confirmSignOutModal/ConfirmSignoutAllModal'; +import type { ModalProps } from '@proton/components/components/modalTwo/Modal'; +import Prompt from '@proton/components/components/prompt/Prompt'; + +export interface ConfirmSignoutModalProps extends Omit, 'children' | 'buttons' | 'onSubmit'> { + confirmType: 'single' | 'all' | 'recoveryMessage'; + onSignOut: (clearData: boolean) => void; +} +export const ConfirmSignOutModal = ({ confirmType, onSignOut, ...rest }: ConfirmSignoutModalProps) => { + return ( + <> + {confirmType === 'recoveryMessage' && ( + { + onSignOut(clearData); + }} + {...rest} + /> + )} + {confirmType === 'all' && ( + { + onSignOut(false); + }} + {...rest} + /> + )} + {confirmType === 'single' && ( + { + onSignOut(false); + rest.onClose?.(); + }} + > + {c('Action').t`Sign out`} + , + , + ]} + {...rest} + > +

    {c('Info').t`Are you sure you want to sign out of this account?`}

    +
    + )} + + ); +}; diff --git a/applications/account/src/app/public/ReAuthContainer.tsx b/applications/account/src/app/public/ReAuthContainer.tsx index 87aabe4bae8..cb436e51810 100644 --- a/applications/account/src/app/public/ReAuthContainer.tsx +++ b/applications/account/src/app/public/ReAuthContainer.tsx @@ -224,7 +224,7 @@ const ReAuthContainer = ({ content={c('Link').t`Trouble signing in?`} > diff --git a/applications/account/src/app/public/SigninHelpContainer.tsx b/applications/account/src/app/public/SigninHelpContainer.tsx index d8dc613514b..6d3018d5f74 100644 --- a/applications/account/src/app/public/SigninHelpContainer.tsx +++ b/applications/account/src/app/public/SigninHelpContainer.tsx @@ -52,9 +52,9 @@ const SigninHelpContainer = ({ toApp, paths }: Props) => { >
    -
    {c('Action').t`Reset password`}
    +
    {c('Action').t`Recover account`}
    {c('Description') - .t`Send a code to your recovery email or phone`}
    + .t`Use a recovery method to reset your password`}
    diff --git a/applications/account/src/app/public/SwitchAccountContainer.tsx b/applications/account/src/app/public/SwitchAccountContainer.tsx index 56110c5b81c..f0ea07469a1 100644 --- a/applications/account/src/app/public/SwitchAccountContainer.tsx +++ b/applications/account/src/app/public/SwitchAccountContainer.tsx @@ -7,14 +7,7 @@ import { CircleLoader } from '@proton/atoms/CircleLoader/CircleLoader'; import { InlineLinkButton } from '@proton/atoms/InlineLinkButton/InlineLinkButton'; import { Scroll } from '@proton/atoms/Scroll/Scroll'; import type { OnLoginCallback } from '@proton/components'; -import { - ConfirmSignOutModal, - SkeletonLoader, - useErrorHandler, - useModalState, - useNotifications, -} from '@proton/components'; -import ConfirmSignOutAllModal from '@proton/components/components/confirmSignOutModal/ConfirmSignoutAllModal'; +import { SkeletonLoader, useErrorHandler, useModalState, useNotifications } from '@proton/components'; import { useLoading } from '@proton/hooks'; import { IcArrowRight } from '@proton/icons/icons/IcArrowRight'; import { revoke } from '@proton/shared/lib/api/auth'; @@ -43,6 +36,8 @@ import noop from '@proton/utils/noop'; import type { MetaTags } from '../useMetaTags'; import { useMetaTags } from '../useMetaTags'; +import type { ConfirmSignoutModalProps } from './ConfirmSignOutModal'; +import { ConfirmSignOutModal } from './ConfirmSignOutModal'; import Content from './Content'; import Header from './Header'; import Layout from './Layout'; @@ -195,9 +190,11 @@ const SwitchAccountContainer = ({ const [error, setError] = useState(false); const { createNotification } = useNotifications(); const validRef = useRef(false); - const [openSignOutAllPrompt, setOpenSignOutAllPrompt, renderOpenSignOutAllPrompt] = useModalState(); - const [confirmSignoutModal, setConfirmSignoutModal, renderConfirmSignoutModal] = useModalState(); - const [tmpSessions, setTmpSessions] = useState([]); + const [confirmSignOutModalProps, setConfirmSignOutModalOpen, renderConfirmSignOutModal] = useModalState(); + const [tmpConfirmSignOutState, setTmpConfirmSignOutState] = useState<{ + confirmType: ConfirmSignoutModalProps['confirmType']; + sessions: ActiveSession[]; + }>({ confirmType: 'single', sessions: [] }); useEffect(() => { if (!activeSessions) { @@ -229,16 +226,16 @@ const SwitchAccountContainer = ({ }, []); const handleSignOutMultiple = useCallback((activeSessions: ActiveSession[], type: 'all' | 'single') => { - setTmpSessions(activeSessions); + let confirmType: (typeof tmpConfirmSignOutState)['confirmType']; if (activeSessions.some((session) => getHasRecoveryMessage(session.remote.UserID))) { - setConfirmSignoutModal(true); - return; - } - if (type === 'all') { - setOpenSignOutAllPrompt(true); - return; + confirmType = 'recoveryMessage'; + } else if (type === 'all' && activeSessions.length > 1) { + confirmType = 'all'; + } else { + confirmType = 'single'; } - return handleSignOut(activeSessions, false); + setTmpConfirmSignOutState({ sessions: activeSessions, confirmType }); + setConfirmSignOutModalOpen(true); }, []); const handleClickSession = async (localID: number) => { @@ -346,8 +343,9 @@ const SwitchAccountContainer = ({ {inner()}
    - +
    - {renderConfirmSignoutModal && ( + {renderConfirmSignOutModal && ( { - handleSignOut(tmpSessions, clearData); + handleSignOut(tmpConfirmSignOutState.sessions, clearData); }} - {...confirmSignoutModal} - /> - )} - {renderOpenSignOutAllPrompt && ( - { - handleSignOut(tmpSessions, false); + {...confirmSignOutModalProps} + onExit={() => { + setTmpConfirmSignOutState({ sessions: [], confirmType: 'single' }); + confirmSignOutModalProps.onExit(); }} - {...openSignOutAllPrompt} /> )} diff --git a/applications/account/src/app/public/TroubleshootWithLumo.scss b/applications/account/src/app/public/TroubleshootWithLumo.scss new file mode 100644 index 00000000000..b2ecea991f5 --- /dev/null +++ b/applications/account/src/app/public/TroubleshootWithLumo.scss @@ -0,0 +1,52 @@ +@use '~@proton/styles/scss/lib/config' as *; +@use '~@proton/styles/scss/lib/include-media' as im; + +im.$breakpoints: $breakpoints-product; +im.$media-expressions: $media-expressions; + +.lumo-troubleshoot { + &-panel { + inset-block-end: calc(100% + 0.75rem); + inset-inline-end: 0; + inline-size: min(26rem, calc(100vw - 3rem)); + block-size: min(70vh, 38rem); + visibility: hidden; + opacity: 0; + transform: translateY(0.5rem); + pointer-events: none; + transition: + opacity 0.15s ease, + transform 0.15s ease; + + &.is-open { + visibility: visible; + opacity: 1; + transform: translateY(0); + pointer-events: auto; + } + + // On mobile the launcher sits in the corner and the panel would overflow off-screen, + // so promote it to a full-screen sheet (modal-like) without unmounting the iframe. + @include im.media('<=small') { + position: fixed; + inset: 0; + inline-size: 100%; + block-size: 100%; + border: none; + border-radius: 0; + transform: translateY(1rem); + + &.is-open { + transform: translateY(0); + } + } + } + + &-avatar { + inline-size: 1.75rem; + } + + &-avatar-icon { + inline-size: 1.1rem; + } +} diff --git a/applications/account/src/app/public/TroubleshootWithLumo.tsx b/applications/account/src/app/public/TroubleshootWithLumo.tsx new file mode 100644 index 00000000000..f2de6902fa7 --- /dev/null +++ b/applications/account/src/app/public/TroubleshootWithLumo.tsx @@ -0,0 +1,99 @@ +import { useState } from 'react'; + +import { c } from 'ttag'; + +import { Button } from '@proton/atoms/Button/Button'; +import { useTheme } from '@proton/components'; +import { IcCross } from '@proton/icons/icons/IcCross'; +import { getAppHref } from '@proton/shared/lib/apps/helper'; +import { APPS, LUMO_SHORT_APP_NAME } from '@proton/shared/lib/constants'; +import lumoCatIcon from '@proton/styles/assets/img/lumo/lumo-cat-icon.svg'; +import { useFlag } from '@proton/unleash/useFlag'; +import clsx from '@proton/utils/clsx'; + +import './TroubleshootWithLumo.scss'; + +// Opens the minimal Lumo "agent" surface pre-loaded with the account-protection agent. Using +// getAppHref keeps the host correct per environment (e.g. lumo.proton.me vs lumo.proton.dev). +// `theme` makes the embedded Lumo surface match this page's light/dark appearance. +const buildLumoSrc = (theme: 'light' | 'dark') => + getAppHref(`/agent?skill=proton-account-recovery&theme=${theme}`, APPS.PROTONLUMO); + +// Bottom-right entry point on the sign-in page. Opens the account-protection Lumo agent in a +// floating, non-blocking panel. Unlike a modal, the panel lets users keep following recovery +// steps on the page while the chat stays open, and the iframe is kept mounted across close/reopen +// so the conversation is preserved (we only toggle visibility instead of unmounting). +const TroubleshootWithLumo = () => { + const [isOpen, setIsOpen] = useState(false); + // Resolved once on first open: this lazy-loads the iframe AND freezes its `src`, so a later + // theme toggle on the host page can't reload it and wipe the conversation. + const [src, setSrc] = useState(undefined); + const theme = useTheme(); + const lumoSignInHelperEnabled = useFlag('LumoSignInHelp'); + + const title = c('Title').t`Troubleshoot with ${LUMO_SHORT_APP_NAME}`; + + const open = () => { + if (!src) { + setSrc(buildLumoSrc(theme.information.dark ? 'dark' : 'light')); + } + setIsOpen(true); + }; + + // Gated behind the rollout flag: when off, no Lumo entry point appears on the sign-in page. + if (!lumoSignInHelperEnabled) { + return null; + } + + return ( +
    + {src && ( +
    +
    + + + + {title} + +
    +