@preventive/triage 1.0.0-alpha.48 → 1.0.0-alpha.49

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,8 @@
1
1
  import{b as e}from"./chunk-JCIIBLKR.js";import{a as t,b as n,c as r,m as i}from"./chunk-VH4XMZIW.js";import{a,b as o,c as s,e as c,f as l,g as u,h as d,i as f,j as p,k as m,l as h,m as g,n as _,o as v,p as y,q as b,r as ee,s as te,t as ne,u as re}from"./chunk-O6M574JI.js";import{$ as ie,A as ae,Aa as oe,B as se,Ba as ce,C as le,Ca as ue,Da as de,Ea as fe,Fa as pe,G as me,Ga as he,H as ge,Ha as _e,I as ve,Ia as ye,J as be,Ja as xe,K as Se,Ka as Ce,La as we,M as Te,Ma as Ee,Na as De,O as Oe,Oa as ke,P as Ae,Pa as je,Q as Me,Qa as Ne,R as Pe,S as Fe,Ta as Ie,U as Le,Ua as Re,V as ze,W as Be,X as Ve,Z as He,_ as Ue,a as We,aa as Ge,b as Ke,ba as qe,ca as Je,d as Ye,da as Xe,e as Ze,ea as Qe,f as $e,fa as et,g as tt,ga as nt,h as rt,ha as it,i as at,ia as ot,j as st,ja as ct,k as x,ka as lt,l as ut,la as dt,m as ft,ma as pt,na as mt,o as ht,oa as gt,p as _t,pa as vt,q as yt,qa as bt,r as xt,ra as St,sa as Ct,ta as wt,ua as Tt,va as Et,wa as Dt,xa as Ot,ya as kt,z as At,za as jt}from"./chunk-6LNQTKAV.js";import{a as Mt,b as Nt,c as Pt,e as Ft,f as It,g as Lt,h as Rt,i as zt,j as Bt,l as Vt,m as Ht,n as Ut,o as Wt,p as Gt,q as Kt,r as qt,s as Jt,t as Yt,u as Xt,v as Zt,w as Qt,x as $t}from"./chunk-7VAWINQF.js";import{a as en,b as tn,c as nn,d as rn,e as an,f as on,g as sn,h as cn,j as ln,k as un,l as dn,m as fn,p as pn,w as mn}from"./chunk-7BKKYVWR.js";import{a as hn,b as gn,c as _n,d as vn,e as yn,f as S,g as bn,h as xn,i as Sn}from"./chunk-7C7DWL7I.js";import{a as Cn,b as wn,c as Tn,d as En}from"./chunk-PNHBZGDD.js";import{$ as Dn,A as On,B as kn,C as An,D as jn,E as Mn,F as Nn,G as Pn,H as Fn,I as In,K as Ln,L as Rn,M as zn,N as Bn,O as Vn,P as Hn,Q as Un,R as Wn,S as Gn,T as Kn,U as qn,V as Jn,W as Yn,X as Xn,Y as Zn,Z as Qn,a as C,aa as $n,b as er,ba as tr,c as nr,ca as rr,d as w,da as ir,e as ar,ea as or,f as T,g as sr,ga as cr,ha as lr,ia as ur,ja as dr,k as fr,ka as pr,l as mr,la as hr,m as gr,ma as _r,n as vr,o as yr,oa as br,p as xr,pa as Sr,q as Cr,qa as wr,r as Tr,ra as Er,s as Dr,sa as Or,t as kr,ta as Ar,ua as jr,v as Mr,w as Nr,wa as Pr,x as Fr,y as Ir,z as Lr}from"./chunk-C2AVODGZ.js";import{b as Rr,c as zr,d as Br,e as Vr,f as Hr,g as Ur}from"./chunk-IO7JTZ6O.js";import{a as Wr,b as Gr,e as Kr}from"./chunk-WCPJDAYA.js";import{a as qr,b as Jr,d as Yr,e as Xr}from"./chunk-IYPY47MC.js";import{a as E,b as Zr,d as D}from"./chunk-PWFUOLZK.js";import{a as Qr,c as $r,d as ei,e as ti,g as ni,h as ri,i as ii,j as ai,k as oi,l as si,m as ci,n as li,o as ui,p as di,q as fi}from"./chunk-BC2UCLFJ.js";import{A as pi,B as mi,C as hi,D as gi,E as _i,G as vi,H as yi,J as bi,K as xi,L as Si,M as Ci,N as wi,O as Ti,a as Ei,f as Di,h as Oi,i as ki,j as Ai,k as ji,l as Mi,m as O,n as Ni,o as Pi,p as Fi,q as Ii,r as Li,t as Ri,u as zi,v as Bi,w as Vi,x as Hi,y as Ui,z as Wi}from"./chunk-SXV2T5C4.js";import{A as Gi,d as k,e as Ki,f as qi,g as Ji,i as Yi,j as Xi,k as Zi,o as Qi,p as $i,q as ea,r as ta,s as na,t as ra,w as ia,y as aa,z as oa}from"./chunk-WFYLMF6Z.js";import{a as sa,b as ca,c as la}from"./chunk-C4Z6ZBXV.js";import{a as ua,b as da,c as A,d as j,f as fa,g as M,i as N,j as pa}from"./chunk-2XUEZHIP.js";import{a as ma,b as ha,c as ga}from"./chunk-TUII34K2.js";var _a=new Uint8Array([68,86,69,49]),va=12,ya=32,ba=`deepview-passkey.v1.content-key`;function xa(){return!(typeof window>`u`||typeof PublicKeyCredential>`u`||typeof navigator>`u`||!navigator.credentials)}async function Sa(){if(typeof PublicKeyCredential>`u`)return!1;let e=PublicKeyCredential.getClientCapabilities;if(typeof e!=`function`)return null;try{let t=await e.call(PublicKeyCredential);if(!t||typeof t!=`object`)return null;let n=t[`extension:prf`],r=t.prf;return n===!0||r===!0?!0:n===!1||r===!1?!1:null}catch{return null}}function Ca(e){let t=new Uint8Array(e);return crypto.getRandomValues(t),t}async function wa(e){if(e.length<32)throw Error(`PRF output too short (${e.length} bytes; need \u2265 32)`);let t=await crypto.subtle.importKey(`raw`,e,`HKDF`,!1,[`deriveBits`]),n=await crypto.subtle.deriveBits({name:`HKDF`,hash:`SHA-256`,salt:new Uint8Array,info:ma(ba)},t,ya*8);return new Uint8Array(n)}function Ta(e){return crypto.subtle.importKey(`raw`,e,{name:`AES-GCM`},!1,[`encrypt`,`decrypt`])}async function Ea(e,t,n){let r=Ca(va),i=new Uint8Array(await crypto.subtle.encrypt({name:`AES-GCM`,iv:r,additionalData:n},e,t)),a=new Uint8Array(_a.length+va+i.length);return a.set(_a,0),a.set(r,_a.length),a.set(i,_a.length+va),a}async function Da(e,t,n){if(!Oa(t))throw Error(`passkey: missing envelope magic`);if(t.length<_a.length+va+16)throw Error(`passkey: envelope too short`);let r=t.subarray(_a.length,_a.length+va),i=t.subarray(_a.length+va);return new Uint8Array(await crypto.subtle.decrypt({name:`AES-GCM`,iv:r,additionalData:n},e,i))}function Oa(e){if(e.length<_a.length)return!1;for(let t=0;t<_a.length;t++)if(e[t]!==_a[t])return!1;return!0}async function ka(e){if(!xa())throw Error(`passkey: not supported in this environment`);let t=Ca(32),n=Ca(32),r=await navigator.credentials.create({publicKey:{challenge:t,rp:{name:e.rpName,id:e.rpId},user:{id:e.userId,name:e.userName,displayName:e.userName},pubKeyCredParams:[{type:`public-key`,alg:-7},{type:`public-key`,alg:-257}],authenticatorSelection:{residentKey:`required`,userVerification:`required`},extensions:{prf:{eval:{first:n}}},timeout:e.timeoutMs??12e4},...e.signal?{signal:e.signal}:{}});if(!(r instanceof PublicKeyCredential))throw Error(`passkey: registration returned no credential`);let i=new Uint8Array(r.rawId).toBase64({alphabet:`base64url`,omitPadding:!0}),a=r.getClientExtensionResults().prf,o=a?.results?.first?new Uint8Array(a.results.first):null;return{credentialId:i,prfSalt:n.toBase64({alphabet:`base64url`,omitPadding:!0}),prfOutput:o}}async function Aa(e){if(!xa())throw Error(`passkey: not supported in this environment`);let t=Ca(32),n=Uint8Array.fromBase64(e.credentialId,{alphabet:`base64url`}),r=Uint8Array.fromBase64(e.prfSalt,{alphabet:`base64url`}),i=await navigator.credentials.get({publicKey:{challenge:t,rpId:e.rpId,allowCredentials:[{type:`public-key`,id:n}],userVerification:`required`,extensions:{prf:{eval:{first:r}}},timeout:e.timeoutMs??12e4},...e.signal?{signal:e.signal}:{}});if(!(i instanceof PublicKeyCredential))throw Error(`passkey: assertion returned no credential`);let a=i.getClientExtensionResults().prf?.results?.first;if(!a)throw Error(`passkey: authenticator did not return PRF output (extension unsupported)`);return new Uint8Array(a)}var ja=Object.freeze([`deepview.workspaces`,`deepview.sync.sessions`,`deepview.sync.userEnabled`,`deepview.sync.password`,`deepview.repoUrls`,`deepview.fileCounts`,`deepview.workspaceApp`,`deepview.lastFile`,`deepview.scan.access`]),Ma=new Map,Na=!1,Pa=new Map,Fa=new Map,Ia=new Set;function La(e){let t=()=>e();return Ia.add(t),Na&&queueMicrotask(()=>{if(Ia.has(t))try{t()}catch(e){console.warn(`secure-storage after-hydrate listener:`,e)}}),()=>Ia.delete(t)}function Ra(){for(let e of Ia)try{e()}catch(e){console.warn(`secure-storage after-hydrate listener:`,e)}}function za(e){let t=So()??``;return ma(`deepview.secure.v1|${t}|${e}`)}function Ba(e){try{let t=Uint8Array.fromBase64(e);if(Oa(t))return t}catch{}return null}function Va(e){return Ma.get(e)??null}async function Ha(e,t){if(typeof t!=`string`)throw TypeError(`secure-storage: value must be a string`);if(yo()&&!wo())throw Error(`secure-storage: vault locked, cannot save "${e}"`);if(po())throw Error(`secure-storage: wipe in progress, cannot save "${e}"`);let n=Ma.has(e),r=Ma.get(e);Ma.set(e,t),Fa.set(e,t);let i=Pa.get(e)??Promise.resolve(),a=()=>{Fa.get(e)===t&&Fa.delete(e)},o=i.catch(()=>{}).then(()=>Wa(e,t)).then(()=>a(),i=>{throw a(),Ma.get(e)===t&&(n?Ma.set(e,r):Ma.delete(e)),i});Pa.set(e,o.catch(()=>{})),await o}async function Ua(e){let t=Symbol(`secure-storage:removed`);Ma.delete(e),Fa.set(e,t);let n=Pa.get(e)??Promise.resolve(),r=()=>{try{localStorage.removeItem(e)}catch{}Fa.get(e)===t&&(Fa.delete(e),Ma.delete(e))},i=n.catch(()=>{}).then(()=>r());Pa.set(e,i.catch(()=>{})),await i}async function Wa(e,t){let n=wo();if(n){let r=await Ea(n,ma(t),za(e));localStorage.setItem(e,r.toBase64())}else localStorage.setItem(e,t)}async function Ga(){Na||ko(()=>{Ga().catch(e=>console.warn(`secure-storage rehydrate:`,e))}),Na=!0;for(let e of[...Ma.keys()])Fa.has(e)||Ma.delete(e);await qa(ja,!0)}async function Ka(e){if(!ja.includes(e))throw Error(`secure-storage: unknown secure key "${e}"`);return Fa.has(e)||Ma.delete(e),(await qa([e],!1)).get(e)??null}async function qa(e,t){let n=wo(),r=[],i=new Map;for(let t of e){if(Fa.has(t)){i.set(t,Va(t));continue}let e=localStorage.getItem(t);if(e===null)continue;let a=Ba(e);if(a){if(!n)continue;try{let e=await Da(n,a,za(t));if(Fa.has(t)){i.set(t,Va(t));continue}let r=ga(e);Ma.set(t,r),i.set(t,r)}catch(e){console.warn(`secure-storage: decrypt failed for "${t}":`,e)}}else Ma.set(t,e),i.set(t,e),n&&yo()&&r.push([t,e])}return t&&Ra(),r.length>0&&queueMicrotask(()=>{for(let[e,t]of r)Ma.get(e)===t&&Ha(e,t).catch(t=>{console.warn(`secure-storage: self-heal failed for "${e}":`,t)})}),i}async function Ja(e,t){let n=(Pa.get(e)??Promise.resolve()).catch(()=>{}).then(async()=>{if(Fa.has(e))return;let n=localStorage.getItem(e);if(n===null)return;let r=await t(n);r!==null&&(Fa.has(e)||(localStorage.setItem(e,r.storageValue),Ma.set(e,r.cacheValue)))});Pa.set(e,n.catch(()=>{})),await n}async function Ya({seal:e}){for(let e of ja)await Ja(e,async t=>{if(Ba(t))return null;let n=wo();return n?{storageValue:(await Ea(n,ma(t),za(e))).toBase64(),cacheValue:t}:null})}async function Xa({open:e}){for(let t of ja)await Ja(t,async n=>{let r=Ba(n);if(!r)return null;let i=await e(r,za(t)),a=ga(i);return{storageValue:a,cacheValue:a}})}var Za=`deepview.secure.v1.mutate:`;function Qa(e,t){return ja.includes(e)?navigator.locks.request(Za+e,async()=>{let n=Pa.get(e);n&&await n.catch(()=>{}),await Ga();let r=Va(e),i=await t(r);if(i!=null&&i!==r){if(typeof i!=`string`)throw TypeError(`secure-storage: mutate updater for "${e}" must return a string`);await Ha(e,i)}}):Promise.reject(Error(`secure-storage: mutate() called with non-secure key "${e}"`))}async function $a(){await Promise.allSettled([...Pa.values()]),Fa.clear(),Pa.clear()}typeof window<`u`&&window.addEventListener(`storage`,e=>{!Na||!e.key||!ja.includes(e.key)||Ga().catch(()=>{})});var eo=`deepview.passkey.v1`,to=`deepview.passkey.userId`,no=`deepview.passkey.cleanDisable`,ro=`deepview.passkey.v1.write`,io=`deepview.triage.v1|`,ao=`deepview.opfs.v1|`,oo=`deepview.bundle.v1|`,P=null,so=null,co=null,lo=0;function uo(){return lo>0}var fo=0;function po(){return fo>0}function mo(){try{let e=localStorage.getItem(eo);if(!e)return null;let t=JSON.parse(e);return t&&typeof t==`object`&&t.enabled===!0&&typeof t.credentialId==`string`&&t.credentialId.length>0&&typeof t.prfSalt==`string`&&t.prfSalt.length>0&&typeof t.userId==`string`&&t.userId.length>0?t:null}catch{return null}}function ho(e){localStorage.setItem(eo,JSON.stringify(e))}function go(){localStorage.removeItem(eo)}function _o(){try{let e=localStorage.getItem(to);if(e){let t=Uint8Array.fromBase64(e,{alphabet:`base64url`});if(t.length===16)return t}}catch{}let e=new Uint8Array(16);crypto.getRandomValues(e);try{localStorage.setItem(to,e.toBase64({alphabet:`base64url`,omitPadding:!0}))}catch{}return e}function vo(){return typeof location>`u`?``:location.hostname}function yo(){return mo()!==null}function bo(){return P!==null}function xo(){return!(!xa()||typeof navigator>`u`||!navigator.locks?.request||!vo())}function So(){return so}function Co(){if(mo()!==null)return!1;try{return localStorage.getItem(no)!==`1`&&localStorage.getItem(to)!==null}catch{return!1}}function wo(){return P}function To(){return ma(io+(so??``))}function Eo(e){if(typeof e!=`string`)throw TypeError(`passkey vault: OPFS AAD requires a filename string`);return ma(ao+(so??``)+`|`+e)}function Do(e){if(typeof e!=`string`)throw TypeError(`passkey vault: bundle AAD requires a slot string`);return ma(oo+(so??``)+`|`+e)}var Oo=new Set;function ko(e){return Oo.add(e),()=>Oo.delete(e)}function Ao(){for(let e of Oo)try{e()}catch(e){console.warn(`passkey vault listener:`,e)}}async function jo({signal:e}={}){let t=mo();if(!t)return!1;let n;try{n=await Aa({credentialId:t.credentialId,prfSalt:t.prfSalt,rpId:t.rpId??vo(),...e?{signal:e}:{}})}catch(e){if(e&&e.name===`NotAllowedError`||e&&e.name===`AbortError`)return!1;throw e&&e.message?.includes(`PRF`)?Mo(e):e}if(!n||n.length<32)throw Mo();let r=await wa(n);return n.fill(0),navigator.locks.request(ro,async()=>{let e=mo();if(!e||e.credentialId!==t.credentialId)throw r.fill(0),Error(`passkey: vault state changed during unlock (another tab wiped or re-enabled it). Reload this page and try again.`);return P=await Ta(r),r.fill(0),so=e.userId,co=e.credentialId,Ao(),!0})}function Mo(e){let t=Error(`Your browser or authenticator doesn't support passkey-derived encryption keys (the WebAuthn PRF extension). Try Chrome 116+, Safari 18+, or Firefox 130+ on a device with a platform authenticator (TouchID / Windows Hello).`);return e&&(t.cause=e),t}function No({migrate:e,userName:t,rpName:n,signal:r,acknowledgeOrphan:i}){if(!xa())throw Error(`passkey: WebAuthn unavailable in this environment`);if(Co()&&!i)throw Error(`passkey: a previous vault exists on this device with no metadata. Any data encrypted under the old passkey will be unreadable after a new setup. Call enableEncryption({acknowledgeOrphan: true}) to proceed, or wipeAllVaultData() to start clean first.`);let a=vo();return navigator.locks.request(ro,async()=>{if(yo())throw Error(`passkey: encryption is already enabled`);if(await Sa()===!1)throw Mo();let i=_o(),o=await ka({userName:t||`DeepView user`,userId:i,rpName:n||`DeepView`,rpId:a,...r?{signal:r}:{}}),s=o.prfOutput;if(!s)try{s=await Aa({credentialId:o.credentialId,prfSalt:o.prfSalt,rpId:a,...r?{signal:r}:{}})}catch(e){let t=i.toBase64({alphabet:`base64url`,omitPadding:!0});await Fo({credentialId:o.credentialId,rpId:a,userId:t}).catch(()=>{});try{localStorage.removeItem(to)}catch{}throw e&&e.message?.includes(`PRF`)?Mo(e):e}if(!s||s.length<32){let e=i.toBase64({alphabet:`base64url`,omitPadding:!0});await Fo({credentialId:o.credentialId,rpId:a,userId:e}).catch(()=>{});try{localStorage.removeItem(to)}catch{}throw Mo()}let c=await wa(s);s.fill(0);let l=await Ta(c);c.fill(0);let u=i.toBase64({alphabet:`base64url`,omitPadding:!0}),d={enabled:!0,credentialId:o.credentialId,prfSalt:o.prfSalt,userId:u,rpId:a,createdAt:Date.now()};P=l,so=u,co=o.credentialId,ho(d),typeof e==`function`&&await e({seal:(e,t)=>Ea(l,e,t)});try{localStorage.removeItem(no)}catch{}return Ao(),!0})}async function Po({migrate:e}){if(!yo())return{disabled:!1,signalAttempted:!1};if(!bo())throw Error(`passkey: must unlock before disabling encryption`);lo+=1;try{return await navigator.locks.request(ro,async()=>{let t=mo();if(!t)return{disabled:!1,signalAttempted:!1};let n=P;if(!n)return{disabled:!1,signalAttempted:!1};if(go(),P=null,co=null,typeof e==`function`){let r=(e,t)=>Da(n,e,t);try{await e({open:r})}catch(e){throw ho(t),P=n,co=t.credentialId,Ao(),e}}so=null;try{localStorage.setItem(no,`1`)}catch{}let r=await Fo(t).catch(()=>!1);return Ao(),{disabled:!0,signalAttempted:r}})}finally{--lo}}async function Fo({credentialId:e,rpId:t,userId:n}){if(typeof PublicKeyCredential>`u`||!t)return!1;let r=PublicKeyCredential,i=!1;if(typeof r.signalUnknownCredential==`function`){i=!0;try{await r.signalUnknownCredential({rpId:t,credentialId:e})}catch{}}if(typeof r.signalAllAcceptedCredentials==`function`&&n){i=!0;try{await r.signalAllAcceptedCredentials({rpId:t,userId:n,allAcceptedCredentialIds:[]})}catch{}}return i}async function Io(e,t){try{return await e.removeEntry(t,{recursive:!0}),null}catch(e){return e?.name===`NotFoundError`?null:`${t}: ${e?.message??String(e)}`}}async function Lo(e){let t=[];if(typeof navigator>`u`||!navigator.storage?.getDirectory)return t;let n;try{n=await navigator.storage.getDirectory()}catch(e){return t.push(`storage root: ${e?.message??String(e)}`),t}for(let r of e){let e=await Io(n,r);e&&t.push(e)}return t}async function Ro({refuseIfEnabled:e=!1}={}){lo+=1,fo+=1;try{return await navigator.locks.request(ro,async()=>{if(e&&yo())throw Error(`passkey: encryption was just enabled in another tab. Reload this page to unlock instead of wiping.`);await $a();let t=mo();if(t)try{await Fo({credentialId:t.credentialId,rpId:t.rpId??vo(),userId:t.userId})}catch{}try{localStorage.removeItem(eo)}catch{}try{localStorage.removeItem(to)}catch{}try{localStorage.removeItem(no)}catch{}for(let e of[`deepview.workspaces`,`deepview.sync.sessions`,`deepview.sync.userEnabled`,`deepview.repoUrls`,`deepview.fileCounts`,`deepview.workspaceApp`,`deepview.lastFile`,`deepview.scan.access`,`deepview.triage`,`deepview.triage.pending`,`deepview.passkey.firstImportPrompted`,`deepview.viewMode`])try{localStorage.removeItem(e)}catch{}try{let e=[];for(let t=0;t<localStorage.length;t+=1){let n=localStorage.key(t);n&&n.startsWith(`deepview.report:`)&&e.push(n)}for(let t of e)try{localStorage.removeItem(t)}catch{}}catch{}P=null,so=null,co=null,Ao();let n=await Lo([`deepview-reports`,`deepview-bundles`]);if(n.length>0)throw Error(`passkey: wipe partially succeeded \u2014 localStorage cleared but the following OPFS paths could not be removed: ${n.join(`; `)}. Open DevTools \u2192 Application \u2192 Storage \u2192 Origin Private File System to inspect, or use the browser's site-data clear tool to finish.`)})}finally{--lo,--fo}}function zo(e){return P?Ea(P,e,To()):Promise.reject(Error(`passkey: vault locked, cannot seal triage`))}function Bo(e){return P?Da(P,e,To()):Promise.reject(Error(`passkey: vault locked, cannot open triage`))}function Vo(e,t){return P?Ea(P,e,Eo(t)):Promise.reject(Error(`passkey: vault locked, cannot seal OPFS file`))}function Ho(e,t){return P?Da(P,e,Eo(t)):Promise.reject(Error(`passkey: vault locked, cannot open OPFS file`))}function Uo(e,t){return P?Ea(P,e,Do(t)):Promise.reject(Error(`passkey: vault locked, cannot seal bundle`))}function Wo(e,t){return P?Da(P,e,Do(t)):Promise.reject(Error(`passkey: vault locked, cannot open bundle`))}typeof window<`u`&&window.addEventListener(`storage`,e=>{if(e.key!==eo)return;let t=mo();(!t&&P||t&&P&&t.credentialId!==co)&&(P=null,so=null,co=null),Ao()});var Go=new WeakMap,Ko=Symbol(`iteration key`);function qo(e){Go.set(e,new Map)}function Jo(e,{target:t,key:n,type:r}){r===`iterate`&&(n=Ko);let i=Go.get(t),a=i.get(n);a||(a=new Set,i.set(n,a)),a.has(e)||(a.add(e),e.cleaners.push(a))}function Yo({target:e,key:t,type:n}){let r=Go.get(e),i=new Set;return n===`clear`?r.forEach((e,t)=>{Xo(i,r,t)}):Xo(i,r,t),(n===`add`||n===`delete`||n===`clear`)&&Xo(i,r,Array.isArray(e)?`length`:Ko),i}function Xo(e,t,n){let r=t.get(n);r&&r.forEach(e.add,e)}function Zo(e){e.cleaners&&e.cleaners.forEach(Qo,e),e.cleaners=[]}function Qo(e){e.delete(this)}var $o=[],es=!1;function ts(e,t,n,r){if(e.unobserved)return Reflect.apply(t,n,r);if($o.indexOf(e)===-1){Zo(e);try{return $o.push(e),Reflect.apply(t,n,r)}finally{$o.pop()}}}function ns(e){let t=$o[$o.length-1];t&&(as(t,e),Jo(t,e))}function rs(e){Yo(e).forEach(is,e)}function is(e){as(e,this),typeof e.scheduler==`function`?e.scheduler(e):typeof e.scheduler==`object`?e.scheduler.add(e):e()}function as(e,t){if(e.debugger&&!es)try{es=!0,e.debugger(t)}finally{es=!1}}function os(){return $o.length>0}var ss=Symbol(`is reaction`);function cs(e,t={}){let n=e[ss]?e:function t(){return ts(t,e,this,arguments)};return n.scheduler=t.scheduler,n.debugger=t.debugger,n[ss]=!0,t.lazy||n(),n}function ls(e){e.unobserved||(e.unobserved=!0,Zo(e)),typeof e.scheduler==`object`&&e.scheduler.delete(e)}var us=new WeakMap,ds=new WeakMap,fs=Object.prototype.hasOwnProperty;function ps(e){let t=ds.get(e);return os()&&typeof e==`object`&&e?t||ks(e):t||e}function ms(e,t){let n=e.next;return e.next=()=>{let{done:r,value:i}=n.call(e);return r||(t?i[1]=ps(i[1]):i=ps(i)),{done:r,value:i}},e}var hs={has(e){let t=us.get(this),n=Reflect.getPrototypeOf(this);return ns({target:t,key:e,type:`has`}),n.has.apply(t,arguments)},get(e){let t=us.get(this),n=Reflect.getPrototypeOf(this);return ns({target:t,key:e,type:`get`}),ps(n.get.apply(t,arguments))},add(e){let t=us.get(this),n=Reflect.getPrototypeOf(this),r=n.has.call(t,e),i=n.add.apply(t,arguments);return r||rs({target:t,key:e,value:e,type:`add`}),i},set(e,t){let n=us.get(this),r=Reflect.getPrototypeOf(this),i=r.has.call(n,e),a=r.get.call(n,e),o=r.set.apply(n,arguments);return i?t!==a&&rs({target:n,key:e,value:t,oldValue:a,type:`set`}):rs({target:n,key:e,value:t,type:`add`}),o},delete(e){let t=us.get(this),n=Reflect.getPrototypeOf(this),r=n.has.call(t,e),i=n.get?n.get.call(t,e):void 0,a=n.delete.apply(t,arguments);return r&&rs({target:t,key:e,oldValue:i,type:`delete`}),a},clear(){let e=us.get(this),t=Reflect.getPrototypeOf(this),n=e.size!==0,r=e instanceof Map?new Map(e):new Set(e),i=t.clear.apply(e,arguments);return n&&rs({target:e,oldTarget:r,type:`clear`}),i},forEach(e,...t){let n=us.get(this),r=Reflect.getPrototypeOf(this);return ns({target:n,type:`iterate`}),r.forEach.call(n,(t,...n)=>e(ps(t),...n),...t)},keys(){let e=us.get(this),t=Reflect.getPrototypeOf(this);return ns({target:e,type:`iterate`}),t.keys.apply(e,arguments)},values(){let e=us.get(this),t=Reflect.getPrototypeOf(this);return ns({target:e,type:`iterate`}),ms(t.values.apply(e,arguments),!1)},entries(){let e=us.get(this),t=Reflect.getPrototypeOf(this);return ns({target:e,type:`iterate`}),ms(t.entries.apply(e,arguments),!0)},[Symbol.iterator](){let e=us.get(this),t=Reflect.getPrototypeOf(this);return ns({target:e,type:`iterate`}),ms(t[Symbol.iterator].apply(e,arguments),e instanceof Map)},get size(){let e=us.get(this),t=Reflect.getPrototypeOf(this);return ns({target:e,type:`iterate`}),Reflect.get(t,`size`,e)}},gs={get(e,t,n){return e=fs.call(hs,t)?hs:e,Reflect.get(e,t,n)}},_s=typeof window==`object`?window:Function(`return this`)(),vs=new Map([[Map,gs],[Set,gs],[WeakMap,gs],[WeakSet,gs],[Object,!1],[Array,!1],[Int8Array,!1],[Uint8Array,!1],[Uint8ClampedArray,!1],[Int16Array,!1],[Uint16Array,!1],[Int32Array,!1],[Uint32Array,!1],[Float32Array,!1],[Float64Array,!1]]);function ys({constructor:e}){return!(typeof e==`function`&&e.name in _s&&_s[e.name]===e)||vs.has(e)}function bs(e){return vs.get(e.constructor)}var xs=Object.prototype.hasOwnProperty,Ss=new Set(Object.getOwnPropertyNames(Symbol).map(e=>Symbol[e]).filter(e=>typeof e==`symbol`));function Cs(e,t,n){let r=Reflect.get(e,t,n);if(typeof t==`symbol`&&Ss.has(t))return r;ns({target:e,key:t,receiver:n,type:`get`});let i=ds.get(r);if(os()&&typeof r==`object`&&r){if(i)return i;let n=Reflect.getOwnPropertyDescriptor(e,t);if(!n||n.writable!==!1||n.configurable!==!1)return ks(r)}return i||r}function ws(e,t){let n=Reflect.has(e,t);return ns({target:e,key:t,type:`has`}),n}function Ts(e){return ns({target:e,type:`iterate`}),Reflect.ownKeys(e)}function Es(e,t,n,r){typeof n==`object`&&n&&(n=us.get(n)||n);let i=xs.call(e,t),a=e[t],o=Reflect.set(e,t,n,r);return e!==us.get(r)||(i?n!==a&&rs({target:e,key:t,value:n,oldValue:a,receiver:r,type:`set`}):rs({target:e,key:t,value:n,receiver:r,type:`add`})),o}function Ds(e,t){let n=xs.call(e,t),r=e[t],i=Reflect.deleteProperty(e,t);return n&&rs({target:e,key:t,oldValue:r,type:`delete`}),i}var Os={get:Cs,has:ws,ownKeys:Ts,set:Es,deleteProperty:Ds};function ks(e={}){return us.has(e)||!ys(e)?e:ds.get(e)||As(e)}function As(e){let t=bs(e)||Os,n=new Proxy(e,t);return ds.set(e,n),us.set(n,e),qo(e),n}var js=ks;function Ms(e){let t=!0,n=cs(()=>{try{e(t)}finally{t=!1}},{lazy:!0});try{n()}catch(e){throw ls(n),e}return()=>ls(n)}var Ns=`deepview.viewMode`,Ps=`deepview.severityMode`,Fs=`deepview.repoUrls`,Is=`deepview.focusSplit`,Ls=`deepview.kanbanDetailFullscreen`,Rs=`deepview.bundleSourceWrap`,zs=new Set([`corrected`,`original`]),Bs=50,Vs=20,Hs=80;try{localStorage.removeItem(Ns)}catch{}function Us(){try{let e=localStorage.getItem(Ps);return e!==null&&zs.has(e)?e:null}catch{return null}}function Ws(){try{let e=localStorage.getItem(Ls);return e===`true`||e!==`false`&&null}catch{return null}}function Gs(){try{let e=localStorage.getItem(Rs);return e===`true`||e!==`false`&&null}catch{return null}}function Ks(e){if(!Number.isFinite(e))return Bs;let t=Math.round(e*10)/10;return Math.min(Math.max(t,Vs),Hs)}function qs(){try{let e=localStorage.getItem(Is);if(e===null||e.trim()===``)return null;let t=Number(e);return Number.isFinite(t)?Ks(t):null}catch{return null}}function Js(e){try{let t=JSON.parse(e||`{}`);return t&&typeof t==`object`&&!Array.isArray(t)?t:{}}catch{return{}}}function Ys(){return Js(Va(Fs))}function Xs(e){return e?Ys()[e]??``:``}var Zs=new Set;function Qs(e){return Zs.add(e),()=>{Zs.delete(e)}}function $s(e){for(let t of Zs)try{t(e)}catch(e){console.warn(`repo-url listener:`,e)}}function ec(e,t){if(I()||!e)return;let n=Ys();t?n[e]=t:delete n[e],Ha(Fs,JSON.stringify(n)).catch(e=>console.warn(`saveRepoUrlFor:`,e)),Qa(Fs,n=>{let r=Js(n);return t?r[e]=t:delete r[e],JSON.stringify(r)}).catch(e=>console.warn(`saveRepoUrlFor cross-tab merge:`,e)),$s(e)}async function tc(e,t){await Qa(Fs,n=>{let r=Js(n),i=t===`replace`?{...e}:t===`prefer-imported`?{...r,...e}:{...e,...r};return JSON.stringify(i)}),uc()}async function nc(e){if(!e||typeof e!=`object`)return[];let t=[];if(await Qa(Fs,n=>{let r=Js(n);t=[];for(let[n,i]of Object.entries(e))!n||typeof i!=`string`||!i||r[n]||(r[n]=i,t.push(n));return t.length===0?n:JSON.stringify(r)}),t.length===0)return t;uc();for(let e of t)$s(e);return t}async function rc(e,t){return!e||!t?!1:(await nc({[e]:t})).length>0}var ic=dn(),ac=on(ic?.mode??`e2e`,globalThis.location?.pathname??``)?`managed`:null,F=js({reports:[],workspaceMerges:[],currentFile:null,currentWorkspace:null,currentManagedTeam:null,currentManagedReport:null,currentReportWorkspace:null,currentView:`findings`,currentLinks:null,bundles:[],storedFiles:[],selectedBundle:null,selectedBundleWorkspace:null,scanSelection:null,bundleCreationRepoId:null,bundleDetails:null,bundleDetailsTab:`overview`,teamDependenciesTab:`pulls`,teamDependenciesSort:`newest`,selectedPackage:null,selectedPackageVersion:null,packageDetailsTab:`overview`,packageSlideTriage:null,packageSlideTransient:!1,packagesSearchQuery:``,packagesSortBy:`findings-desc`,expandedPackages:new Set,selectedRepository:null,repositoryDetailsTab:`overview`,repositorySlideTriage:null,repositorySlideTransient:!1,repositoriesSearchQuery:``,repositoriesSortBy:`findings-desc`,bundleSourceFile:null,bundleSourceFindingIdx:null,bundleSourceTargetLine:null,bundleSourceWrap:Gs()??!0,bundleSourcePretty:!1,bundleCodeTerminal:!1,bundleSourceLockfile:!1,bundleCodeFileRequest:null,npmLookup:{input:``,error:null},npmOpening:null,repositoryCodeOpening:null,repositoryCodePending:null,profileLinkError:null,bundleCompare:null,bundleOverviewFilesSort:`name`,bundleOverviewPackagesSort:`size`,bundleCodeHistory:null,bundleCodeSearchMode:`files`,bundleCodeSearchQuery:``,bundleSearchQuery:``,bundleSearchRegex:!1,bundleSearchCase:!1,bundleSearchContext:!0,filterSeverities:new Set,filterColors:new Set,filterSources:new Set,filterAnalyzer:``,filterModel:``,filterRepo:``,filterRevalidate:``,filterPartial:``,showRevalidation:!0,revalidationDetailed:!1,upstreamOnly:!1,revalidateConflicts:new Map,codePreviews:new Set,filterConfMin:0,filterConfMax:10,filterInclude:``,filterIncludeNegate:!1,filterComment:``,filterFix:``,filterFlagged:``,filterDuplicates:``,filterCrossContext:``,filterAppStacked:``,filterSecurity:``,repoUrl:``,repoEditing:!1,sortBy:`severity`,viewMode:`kanban`,severityMode:Us()??`corrected`,triage:new Map,shownTriage:null,nextFindingId:0,activeTabByGroup:new Map,tableSelectedGid:null,filesViewMode:`table`,filesSearch:``,filesSelectedFile:null,kanbanPopoverGid:null,kanbanDetailFullscreen:Ws()??!1,kanbanExpandedColumn:null,focusGid:null,focusCodeTick:0,focusCodeStack:[],focusCodeAt:0,focusSplit:qs()??Bs,codeBlockTick:0,bundleHashTick:0,linksTick:0,findingIndexTick:0,serverMode:sn(ic?.mode??`e2e`,ac),serverModeConfig:ic?.mode??null,serverModeSelection:ac,deepviewScanServer:null,githubNewIssueLabels:ic?.githubNewIssueLabels??``,localMode:!1,managed:ic?.managed??null,managedSession:null,managedTeams:[],managedReport:null,managedReports:[],managedComments:new Map,managedIssues:new Map});function I(){return F.serverMode===`managed`&&!F.localMode}function oc(e){F.localMode=!!e}function sc(e,t=globalThis.location?.pathname??``){let n=on(e,t);n&&(F.serverModeSelection=`managed`),F.serverModeConfig=e,F.serverMode=sn(e,F.serverModeSelection),F.serverModeSelection!==F.serverMode&&(F.serverModeSelection=null),(n||F.serverMode===`e2e`||an(e))&&oc(!1)}function cc(){return an(F.serverModeConfig)?(F.serverModeSelection=F.serverMode===`managed`?`e2e`:`managed`,F.serverMode=F.serverModeSelection,oc(!1),!0):F.serverMode===`managed`&&(oc(!F.localMode),!0)}function lc(){return F.serverMode===`standalone`&&F.localMode?`local`:F.serverMode===`managed`?F.localMode?`local`:`managed`:F.serverMode}function uc(){I()||F.repoEditing||F.currentFile&&(F.repoUrl=Xs(F.currentFile))}La(()=>{uc()});var dc=`__meta__`,fc=`deepview-reports`,pc=`deepview-bundles`,mc=`deepview.report:`;function hc(e,t,n,r){return navigator.locks.request(`deepview-storage/${e}/${t}`,{mode:n},r)}function gc(e,t,n){return hc(e,t,`shared`,n)}function _c(e,t,n){return hc(e,t,`exclusive`,()=>navigator.locks.request(ro,{mode:`shared`},n))}var vc=!1;async function yc(e,{create:t,warnOnce:n=!1}={}){try{return await(await navigator.storage.getDirectory()).getDirectoryHandle(e,{create:t})}catch(e){return n&&!vc&&(vc=!0,console.warn(`OPFS unavailable, falling back to gzipped localStorage (limited quota).`,e)),null}}async function bc(e,t){let n=await e.createWritable();try{await n.write(t),await n.close()}catch(e){try{await n.abort(e)}catch{}throw e}}async function xc(e,t){if(!Oa(e))return e;if(!wo())throw Error(`storage: vault locked, cannot decrypt "${t}"`);return await Ho(e,t)}function Sc(e){return e.length===0||e.length>=18&&e[0]===31&&e[1]===139&&e.at(-4)===0&&e.at(-3)===0&&e.at(-2)===0&&e.at(-1)===0}async function Cc(e,t){Lc(e)===t&&(console.warn(`storage: report "${e}" is an empty/corrupt on-disk entry \u2014 quarantining, will read as missing`),await navigator.locks.request(ro,{mode:`exclusive`},async()=>{if(Lc(e)!==t)return;L(e),Fc(e);let n=await Ec();if(n)try{await n.removeEntry(e)}catch{}Oc(e),L(e),Bc(e,`delete`)}))}async function wc(e,t,n){try{(await t.getFile()).size===0&&await e.removeEntry(n)}catch{}}async function Tc(e,t,n,r,i=()=>{}){if(yo()&&!wo())throw i(),Error(`storage: vault locked, cannot save ${r}`);let a=wo(),o=a?await t(e,n):e;if(wo()!==a)throw i(),Error(`storage: vault state changed mid-save for ${r}; retry`);return o}function Ec(){return yc(fc,{create:!0,warnOnce:!0})}function Dc(e){try{return localStorage.getItem(mc+e)}catch{return null}}function Oc(e){try{localStorage.removeItem(mc+e)}catch{}}function kc(){let e=[];for(let t=0;t<localStorage.length;t++){let n=localStorage.key(t);n&&n.startsWith(mc)&&e.push(n.slice(mc.length))}return e}var Ac=67108864,jc=new Map,Mc=0,Nc=new Map;function Pc(e,t){if(Fc(e),!(t.length>Ac)){jc.set(e,t),Mc+=t.length;for(let e of jc.keys()){if(Mc<=Ac)break;Fc(e)}}}function Fc(e){let t=jc.get(e);t!==void 0&&(jc.delete(e),Mc-=t.length)}var Ic=new Map;function L(e){Ic.set(e,(Ic.get(e)??0)+1)}function Lc(e){return Ic.get(e)??0}var Rc=new Set;function zc(e){return Rc.add(e),()=>Rc.delete(e)}function Bc(e,t){for(let n of Rc)try{n(e,t)}catch(e){console.warn(`storage file-change listener:`,e)}}async function Vc(){let e=new Set(kc()),t=await Ec();if(t)for await(let[n]of t.entries())e.add(n);return[...e].toSorted()}async function Hc(e,t){if(typeof e!=`string`||e.includes(`\0`))throw Error(`Invalid report name: contains NUL byte or is not a string`);if(t===``)throw Error(`Refusing to save empty report "${e}"`);return L(e),_c(`report`,e,async()=>{let n=await Ec();if(n){let r=await Cn(ma(t));r=await Tc(r,Vo,e,`"${e}"`,()=>L(e));let i=await n.getFileHandle(e,{create:!0}),a=await i.createWritable();try{await a.write(r),await a.close()}catch(t){Fc(e),L(e);try{await a.abort(t)}catch{}throw await wc(n,i,e),t}Pc(e,t),L(e),Oc(e),Bc(e,`save`);return}let r=ma(t);r=await Cn(r),r=await Tc(r,Vo,e,`"${e}"`,()=>L(e));let i=r.toBase64();try{localStorage.setItem(mc+e,i),Pc(e,t),L(e),Bc(e,`save`)}catch(t){throw L(e),Error(`localStorage write failed for ${e}: ${t.message}`,{cause:t})}})}async function Uc(e,t){let n=Dc(e);if(n===null)return null;let r=Uint8Array.fromBase64(n);if(r=await xc(r,e),Sc(r))throw await Cc(e,t),Error(`File not found: ${e}`);return ga(await wn(r))}async function Wc(e,{keep:t=!0}={}){let n=jc.get(e);if(n!==void 0)return t&&(jc.delete(e),jc.set(e,n)),n;let r=Nc.get(e);if(r)return t&&(r.keep=!0),r.promise;let i=Lc(e),a=(async()=>{let t=await Ec();if(t){let n;try{n=await t.getFileHandle(e)}catch(t){if(t instanceof DOMException&&t.name===`NotFoundError`){let t=await Uc(e,i);if(t!==null)return Hc(e,t).catch(t=>{console.warn(`storage: stranded-localStorage migration of "${e}" failed:`,t)}),t}throw t}let r=await n.getFile(),a=new Uint8Array(await r.arrayBuffer());if(a=await xc(a,e),Sc(a))throw await Cc(e,i),Error(`File not found: ${e}`);if(a.length>=2&&a[0]===31&&a[1]===139){let e=await wn(a);return ga(e)}let o=ga(a);return Hc(e,o).catch(t=>{console.warn(`storage: legacy-uncompressed migration of "${e}" failed:`,t)}),o}let n=await Uc(e,i);if(n===null)throw Error(`File not found: ${e}`);return n})(),o={promise:a,keep:t};Nc.set(e,o);try{let t=await a;return o.keep&&Lc(e)===i&&Pc(e,t),t}finally{Nc.delete(e)}}async function Gc(e){let t=Lc(e),n=await Ec(),r;if(n){let t=null;try{t=await n.getFileHandle(e)}catch(t){if(!(t instanceof DOMException)||t.name!==`NotFoundError`)throw t;let n=Dc(e);if(n===null)throw t;r=Uint8Array.fromBase64(n)}if(t){let e=await t.getFile();r=new Uint8Array(await e.arrayBuffer())}}else{let t=Dc(e);if(t===null)throw Error(`File not found: ${e}`);r=Uint8Array.fromBase64(t)}if(r=await xc(r,e),Sc(r))throw await Cc(e,t),Error(`File not found: ${e}`);return r}async function Kc(e){let t=await Gc(e),n=t[0]===31&&t[1]===139?await wn(t):t;return ga(n)}async function qc(e,t){if(typeof e!=`string`||e.includes(`\0`))throw Error(`Invalid report name: contains NUL byte or is not a string`);if(Sc(t))throw Error(`Refusing to save empty report bytes for "${e}"`);return L(e),Fc(e),_c(`report`,e,async()=>{let n=await Tc(t,Vo,e,`"${e}"`,()=>L(e)),r=await Ec();if(r){let t=await r.getFileHandle(e,{create:!0}),i=await t.createWritable();try{await i.write(n),await i.close()}catch(n){L(e);try{await i.abort(n)}catch{}throw await wc(r,t,e),n}L(e),Oc(e),Bc(e,`save`);return}try{localStorage.setItem(mc+e,n.toBase64()),L(e),Bc(e,`save`)}catch(t){throw L(e),Error(`localStorage write failed for ${e}: ${t.message}`,{cause:t})}})}async function Jc(e){return L(e),Fc(e),Nc.delete(e),_c(`report`,e,async()=>{let t=await Ec();if(t){try{await t.removeEntry(e)}catch(t){if(!(t instanceof DOMException)||t.name!==`NotFoundError`)throw L(e),t}Oc(e),L(e),Bc(e,`delete`);return}localStorage.removeItem(mc+e),L(e),Bc(e,`delete`)})}var Yc=`_meta.json`,Xc=`.index-v1`,Zc=new Set;function Qc(e){return Zc.add(e),()=>Zc.delete(e)}function $c(e,t){for(let n of Zc)try{n(e,t)}catch(e){console.warn(`storage bundle-change listener:`,e)}}function el(){return yc(pc,{create:!0})}function tl(e){return e.replaceAll(`/`,`_`)}async function nl(e){let t;try{let n=await(await e.getFileHandle(Yc)).getFile();t=new Uint8Array(await n.arrayBuffer())}catch(e){return e instanceof DOMException&&e.name===`NotFoundError`||console.warn(`readBundleMeta: failed to read _meta.json:`,e),[]}let n=t;if(Oa(t)){if(!wo())return console.warn(`readBundleMeta: vault locked, returning empty bundle list`),[];try{n=await Wo(t,dc)}catch(e){return console.warn(`readBundleMeta: decrypt failed (tampering, key mismatch, or vault identity drift):`,e),[]}}try{let e=JSON.parse(ga(n));return Array.isArray(e)?e:[]}catch(e){return console.warn(`readBundleMeta: JSON.parse failed:`,e),[]}}async function rl(e,t){let n=ma(JSON.stringify(t));n=await Tc(n,Uo,dc,`bundle metadata`);try{await e.removeEntry(Yc)}catch{}await bc(await e.getFileHandle(Yc,{create:!0}),n)}var il=`${pc}/${Yc}`;function al(e){return navigator.locks.request(il,e)}async function ol(){let e=await el();return e?[...await navigator.locks.request(il,{mode:`shared`},()=>nl(e))].toSorted((e,t)=>e.name.localeCompare(t.name)):[]}function sl(){return ll(()=>!0)}function cl(){return ll((e,t)=>t.kind===`file`&&/^sha512-[A-Za-z0-9+_]{86}==$/u.test(e))}async function ll(e){if(typeof navigator>`u`||!navigator.storage?.getDirectory)return!1;let t=await yc(pc,{create:!1});if(!t)return!1;try{for await(let[n,r]of t.entries())if(e(n,r))return!0}catch{}return!1}async function ul(e,t){let n=await el();if(!n)throw Error(`Cannot save bundle ${e}: OPFS unavailable`);let r=t instanceof Uint8Array?t:ma(t),i=await Sn(r),a=tl(i),o=e.toLowerCase().endsWith(`.map`)?await Cn(r):r;return _c(`bundle`,i,async()=>{o=await Tc(o,Uo,i,`bundle "${e}"`);try{await n.removeEntry(a)}catch{}await bc(await n.getFileHandle(a,{create:!0}),o);try{await al(async()=>{let t=await nl(n),r=t.findIndex(e=>e.integrity===i);r>=0?t[r]={integrity:i,name:e}:t.push({integrity:i,name:e}),await rl(n,t)})}catch(e){try{await n.removeEntry(a),$c(i,`delete`)}catch{}throw e}return $c(i,`save`),{integrity:i,name:e}})}async function dl(e){let t=await el();if(t)return _c(`bundle`,e,async()=>{try{await t.removeEntry(tl(e))}catch(e){if(!(e instanceof DOMException)||e.name!==`NotFoundError`)throw e}$c(e,`delete`);try{await al(async()=>{try{await t.removeEntry(tl(e)+Xc)}catch(e){if(!(e instanceof DOMException)||e.name!==`NotFoundError`)throw e}let n=await nl(t),r=n.filter(t=>t.integrity!==e);r.length!==n.length&&await rl(t,r)})}finally{$c(e,`delete`)}})}async function fl(e){let t=await el();if(!t)throw Error(`OPFS unavailable`);let n=await(await t.getFileHandle(tl(e))).getFile(),r=new Uint8Array(await n.arrayBuffer());if(Oa(r)){if(!wo())throw Error(`storage: vault locked, cannot read bundle "${e}"`);r=await Wo(r,e)}return r.length>=2&&r[0]===31&&r[1]===139?await wn(r):r}async function pl(e){let t=await el();if(!t||yo()&&!wo())return null;try{let n=await t.getFileHandle(tl(e)+Xc),r=new Uint8Array(await(await n.getFile()).arrayBuffer());return Oa(r)&&(r=await Wo(r,e+Xc)),JSON.parse(ga(await wn(r)))}catch{return null}}async function ml(e,t){let n=await Cn(ma(JSON.stringify(t)));return navigator.locks.request(ro,{mode:`shared`},()=>al(async()=>{let t=await el();if(!t)return;await t.getFileHandle(tl(e));let r=e+Xc,i=await Tc(n,Uo,r,`bundle index`);await bc(await t.getFileHandle(tl(r),{create:!0}),i)}))}async function hl(e,t){let n=await Ec();if(n){let r=null;try{r=await n.getFileHandle(e)}catch(e){if(!(e instanceof DOMException)||e.name!==`NotFoundError`)throw e}if(r){let i=await r.getFile(),a=await t(new Uint8Array(await i.arrayBuffer()));if(a===null)return;Fc(e),Nc.delete(e),L(e);let o=await n.getFileHandle(e,{create:!0});try{await bc(o,a)}catch(t){throw await wc(n,o,e),t}L(e);return}}let r=Dc(e);if(r===null)return;let i=await t(Uint8Array.fromBase64(r));i!==null&&(Fc(e),Nc.delete(e),L(e),localStorage.setItem(mc+e,i.toBase64()),L(e))}function gl(e,t){return e.seal?n=>Oa(n)?null:e.seal(n,t):n=>Oa(n)?e.open(n,t):null}async function _l(e){let t=await Vc();for(let n of t)try{await hl(n,gl(e,Eo(n)))}catch(e){if(e instanceof DOMException&&e.name===`NotFoundError`)continue;throw e}}var vl=({seal:e})=>_l({seal:e}),yl=({open:e})=>_l({open:e});async function bl(){let e=await el();if(!e)return{dir:null,keys:[]};let t=[];for await(let[n]of e.entries())t.push(n);return{dir:e,keys:t}}function xl(e){return e===Yc?dc:e.startsWith(`sha512-`)?e.replaceAll(`_`,`/`):null}async function Sl(e,t,n){let r=await(await e.getFileHandle(t)).getFile(),i=await n(new Uint8Array(await r.arrayBuffer()));i!==null&&await bc(await e.getFileHandle(t,{create:!0}),i)}async function Cl(e){let{dir:t,keys:n}=await bl();if(t)for(let r of n){let n=xl(r);if(n!==null)try{await Sl(t,r,gl(e,Do(n)))}catch(e){if(e instanceof DOMException&&e.name===`NotFoundError`)continue;throw e}}}var wl=({seal:e})=>Cl({seal:e}),Tl=({open:e})=>Cl({open:e});ko(()=>{El(),Nc.clear()});function El(){jc.clear(),Mc=0}var Dl=`deepview/workspace-id/v1
2
2
  `;async function Ol(e){let t=Uint8Array.fromBase64(e),n=ma(Dl),r=new Uint8Array(n.length+t.length);r.set(n,0),r.set(t,n.length);let i=new Uint8Array(await crypto.subtle.digest(`SHA-256`,r)),a=Array.from(i.subarray(0,16),e=>e.toString(16).padStart(2,`0`)).join(``).split(``);a[12]=`8`,a[16]=(parseInt(a[16],16)&3|8).toString(16);let o=a.join(``);return`${o.slice(0,8)}-${o.slice(8,12)}-${o.slice(12,16)}-${o.slice(16,20)}-${o.slice(20,32)}`}function kl(e){let t=new Set;function n(e){return t.add(e),()=>t.delete(e)}function r(n){for(let r of t)try{r(n)}catch(t){console.warn(`workspace ${e} listener failed:`,t)}}return{on:n,fire:r}}var Al=kl(`create`),jl=kl(`delete`),Ml=kl(`privateKey`),Nl=kl(`report-membership`),Pl=kl(`bundle-membership`);Al.on;var Fl=jl.on,Il=Ml.on,Ll=Nl.on,Rl=Pl.on,zl=Al.fire,Bl=jl.fire,Vl=Ml.fire,Hl=Nl.fire,Ul=Pl.fire,Wl=`deepview.workspaces`,Gl=1;function Kl(){try{let e=Va(Wl);if(!e)return[];let t=JSON.parse(e);return t&&typeof t==`object`&&Array.isArray(t.workspaces)?t.workspaces:Array.isArray(t)?t:[]}catch{return[]}}async function ql(e){await Ha(Wl,JSON.stringify({version:Gl,workspaces:e}))}var Jl=Wl;function Yl(e){return navigator.locks.request(Jl,async()=>{await Ga();let t=Kl(),n=await e(t);if(n!==!1)return await ql(t),n})}function Xl(e){return{id:e.id,privateKey:e.privateKey,reports:Array.isArray(e.reports)?[...e.reports]:[],bundles:Array.isArray(e.bundles)?[...e.bundles]:[]}}var Zl=Kl().map(Xl);function Ql(){Zl=Kl().map(Xl)}function $l(e){Zl=Zl.filter(t=>t.id!==e.id),Zl.push(Xl(e))}function eu(e,t){let n=Array.isArray(e[t])?[...e[t]]:[],r=Zl.find(t=>t.id===e.id);if(r){r[t]=n;return}Zl.push(Xl(e))}function tu(e){Zl=Zl.filter(t=>t.id!==e)}function R(){let e=Kl();for(let t of e)Array.isArray(t.reports)||(t.reports=[]),Array.isArray(t.bundles)||(t.bundles=[]);return e}var nu=200;function ru(e){let t=(e??``).trim();return t&&t.replaceAll(/[\u0000-\u001F\u007F]/gu,``).slice(0,nu)||null}async function iu(e){let t=ru(e);if(!t)return null;let n=new Uint8Array(32);crypto.getRandomValues(n);let r=n.toBase64(),i={id:await Ol(r),name:t,privateKey:r,reports:[],bundles:[],createdAt:Date.now()};return await Yl(e=>!e.some(e=>e.id===i.id)&&(e.push(i),i))?($l(i),i):null}async function au(e){await Yl(t=>{let n=t.findIndex(t=>t.id===e);return n<0?!1:(t.splice(n,1),!0)})&&(Bl(e),tu(e))}async function ou(e,t){let n=ru(t);return!(!n||!await Yl(t=>{let r=t.find(t=>t.id===e);return!r||r.name===n?!1:(r.name=n,r)}))}async function su(e){let{next:t}=await Yl(t=>{let n=t.findIndex(t=>t.id===e.id),r=n>=0?t[n]:null,i=ru(e.name)??r?.name??`Workspace`,a=e.preserveBundles?Array.isArray(r?.bundles)?r.bundles:[]:Array.isArray(e.bundles)?e.bundles:[],o={id:e.id,name:i,privateKey:e.privateKey,reports:Array.isArray(e.reports)?[...new Set(e.reports)]:[],bundles:[...new Set(a)],createdAt:e.createdAt??Date.now()};return n>=0?t[n]=o:t.push(o),{previous:r,next:o}}),n=Zl.find(e=>e.id===t.id)??null;return n==null?zl(t.id):(n.privateKey!==t.privateKey&&Vl(t.id),lu(n.reports,t.reports)||Hl(t.id),lu(n.bundles,t.bundles)||Ul(t.id)),$l(t),t}async function cu({id:e,name:t,privateKey:n,createdAt:r}){let i=null;return await Yl(a=>{let o=ru(t);if(!o)return i={status:`name-collision`,existing:null},!1;let s=a.find(t=>t.id===e)??null;if(s)return i={status:`already-attached`,workspace:s},!1;let c=a.find(e=>ru(e.name)===o)??null;if(c)return i={status:`name-collision`,existing:c},!1;let l={id:e,name:o,privateKey:n,reports:[],bundles:[],createdAt:r??Date.now()};a.push(l),i={status:`attached`,workspace:l}}),i?.status===`attached`&&(zl(i.workspace.id),$l(i.workspace)),i}function lu(e,t){let n=new Set(e),r=new Set(t);if(n.size!==r.size)return!1;for(let e of n)if(!r.has(e))return!1;return!0}async function uu({identifier:e,workspaceId:t,field:n,fire:r,additive:i=!1,from:a=void 0}){let o=await Yl(r=>{if((r.find(t=>Array.isArray(t[n])&&t[n].includes(e))?.id??null)===(t??null))return!1;let o=null;if(t!=null&&(o=r.find(e=>e.id===t)??null,!o))return!1;let s=new Set;if(!i)for(let t of r)a!==void 0&&t.id!==a||(Array.isArray(t[n])||(t[n]=[]),t[n].includes(e)&&(t[n]=t[n].filter(t=>t!==e),s.add(t.id)));if(o&&(Array.isArray(o[n])||(o[n]=[]),o[n].includes(e)||(o[n].push(e),s.add(o.id))),s.size===0)return!1;let c=new Map;for(let e of s){let t=r.find(t=>t.id===e);t&&c.set(e,t)}return{affected:s,snapshot:c}});if(!o)return;let{affected:s,snapshot:c}=o;for(let e of s){r(e);let t=c.get(e);t&&eu(t,n)}}function du(e,t){return{move:(n,r)=>uu({identifier:n,workspaceId:r,field:e,fire:t}),add:(n,r)=>uu({identifier:n,workspaceId:r,field:e,fire:t,additive:!0}),remove:(n,r)=>uu({identifier:n,field:e,fire:t,from:r})}}var fu=du(`reports`,Hl),pu=du(`bundles`,Ul),mu=fu.move,hu=fu.add,gu=fu.remove,_u=pu.move,vu=pu.add,yu=pu.remove;function bu(){let e=Kl().map(Xl),t=new Map(Zl.map(e=>[e.id,e])),n=new Map(e.map(e=>[e.id,e]));for(let e of t.keys())n.has(e)||Bl(e);for(let[e,r]of n){let n=t.get(e);if(!n){zl(e);continue}n.privateKey!==r.privateKey&&Vl(e),lu(n.reports,r.reports)||Hl(e),lu(n.bundles,r.bundles)||Ul(e)}Zl=e}La(()=>{bu()});function xu(e=[]){let t=new Map,n=(e,n)=>{t.has(e)||t.set(e,new Set),t.get(e).add(n)},r=e=>{for(let t of e.slice(1))n(e[0],t),n(t,e[0])};for(let t of e)r(t);return{add:r,linkedIds:e=>t.get(e)??[]}}function Su(e){let t=[];for(let n of e){let e=n?.revalidateInputs;n?.isApp!==!0||typeof n.id!=`string`||!Array.isArray(e)||t.push([n.id,...e.filter(e=>typeof e==`string`&&e!==``)])}return t}var Cu=null;function wu(){Cu=null}function Tu(){return I()&&Cu?.teamId===F.currentManagedTeam&&Cu?.userId===F.managedSession?.id&&Cu?.role===F.managedSession?.role?Cu:null}function Eu(e,t){let n=new Map,r=new Map,i=new Map,a=[],o=[];m(t.links??[],i);for(let e of t){let t=e.data;if(t.source===`links`&&Array.isArray(t.links)){a.push({id:e.id,name:e.filename,groups:t.links,skipped:0}),m(t.links,i);continue}let s=bi(t)??[],c=Rr([{groups:[s.flat().filter(e=>e&&typeof e==`object`)],tree:t.tree,treeDependencies:t.treeDependencies}]);for(let[i,a]of s.entries()){let s=(Array.isArray(a)?a:[a]).filter(e=>e&&typeof e==`object`).map(n=>{let r={...n,_managedReportId:e.id,_reportName:e.filename,_repoFallback:e.repo.github,_repoDirectory:e.repo.directory,_source:n.source??t.source??null,_bundleHashes:t.bundleHashes??[],_depsDirectory:c};return hi(r,t),r._analyzer=r._source??r.type??null,`isApp`in r||(r.isApp=Ii(r,r._source)),r}),l={report:e.filename,managedReportId:e.id,index:i,members:s};o.push(l);for(let e of s)n.has(e.id)||n.set(e.id,[]),n.get(e.id).push(l);for(let e of Su(s).flatMap(([,...e])=>e))r.has(e)||r.set(e,new Set),r.get(e).add(l)}}Cu={teamId:e,userId:F.managedSession?.id,role:F.managedSession?.role,links:a,rows:o,byId:n,citedBy:r,duplicates:i},F.linksTick++,F.findingIndexTick++}function Du(e){let t=Tu();return[...new Set(e.flatMap(e=>t?.byId.get(e)??[]))]}function Ou(e){let t=Tu();return[...new Set(e.flatMap(e=>[...t?.citedBy.get(e)??[]]))]}function ku(e){for(let t of Du([e])){let n=Bi(t.members.find(t=>t.id===e));if(n)return n}return``}var Au=`deepview.fileCounts`,ju=4,Mu=new Set([3,ju]),Nu=null;function Pu(){if(Nu)return Nu;let e;try{e=JSON.parse(Va(Au)||`{}`)}catch{e={}}return Mu.has(e?.__v)?e.__v=ju:e={__v:ju},Nu=e,Nu}function Fu(){Ha(Au,JSON.stringify(Nu)).catch(e=>console.warn(`counts persist:`,e))}function Iu(e){if(e===`__v`)return;let t=Pu()[e];if(t!==void 0)return typeof t==`number`?{count:t}:t}function Lu(e){return Iu(e)?.count}function Ru(e){return Iu(e)?.source}function zu(e,t,n){let r=Pu();r[e]={count:t,source:n??null},Fu()}function Bu(e){let t=Pu();delete t[e],Fu()}function Vu(e){let t=f(e);return t?{count:p(t.groups),source:d,recognized:!0}:Ci(e)}var Hu=null,Uu=null,Wu=null;function Gu(e,t){for(let{names:n,onUpdate:r}of Wu)if(n.has(e))try{r(e,t)}catch(e){console.warn(`ensureCounts onUpdate:`,e)}}function Ku(e,t){if(Hu){t&&Wu.push({names:new Set(e),onUpdate:t});for(let t of e)Uu.add(t);return Hu}return Uu=new Set(e),Wu=t?[{names:new Set(e),onUpdate:t}]:[],Hu=(async()=>{await Promise.resolve();try{let e=Pu();for(;Uu.size>0;){let t=Uu.values().next().value;if(Uu.delete(t),e[t]===void 0)try{let n=await Wc(t,{keep:!1});if(e[t]!==void 0)continue;let{count:r,source:i}=Vu(n);e[t]=i?{count:r,source:i}:{count:r},Fu(),Gu(t,r)}catch{}}}finally{Hu=null,Uu=null,Wu=null}})(),Hu}var qu=new Map,Ju=new Map,Yu=new Map,Xu=new Set,Zu=null,Qu=null,$u=0,ed=!1,td=!1;function nd(){return I()||td}function rd(e){return Xu.add(e),()=>Xu.delete(e)}function id(){for(let e of Xu)try{e()}catch(e){console.warn(`linked-findings listener:`,e)}}function ad(){let e=new Map;for(let t of qu.values())t&&m(t.groups,e);Ju=e}function od(){if(I())return Tu()?.links??[];let e=[];for(let[t,n]of qu)n&&e.push({name:t,groups:n.groups,skipped:n.skipped});return e.toSorted((e,t)=>e.name.localeCompare(t.name))}function sd(){return I()?!!Tu()?.duplicates.size:Ju.size>0}function cd(e){if(I())return[...Tu()?.duplicates.get(e)??[]];let t=Ju.get(e);return t?[...t]:[]}async function ld(e){if(qu.has(e))return!1;let t=Yu.get(e)??0,n;try{n=await Wc(e,{keep:!1})}catch{return!1}if(n==null)return!1;if((Yu.get(e)??0)!==t)return ed=!0,!1;let r=f(n);if(qu.set(e,r),r&&Ru(e)!==d)zu(e,p(r.groups),d);else if(!r&&Ru(e)===d){let{count:t,source:r}=Vu(n);zu(e,t,r)}return r!==null}function ud(){return I()?Promise.resolve():Qu||(Qu=(async()=>{try{let e,t;do{t=$u,e=await Vc(),td&&e.some(e=>!qu.has(e))&&(td=!1,id());let n=e.filter(e=>Ru(e)===d);(await Promise.all(n.map(e=>ld(e)))).some(Boolean)&&(ad(),id())}while(t!==$u);return e}catch(e){throw td&&(td=!1,id()),e}finally{Qu=null}})(),Qu)}function dd(){return I()?Promise.resolve():Zu||(Zu=(async()=>{try{do{ed=!1;let e=await ud(),t=!1;for(let n of e)await ld(n)&&(t=!0);let n=!ed&&e.every(e=>qu.has(e)),r=td!==n;td=n,t&&ad(),(t||r)&&id()}while(ed)}catch(e){throw td&&(td=!1,id()),e}finally{Zu=null}})(),Zu)}zc(e=>{let t=td;td=!1,$u++,Yu.set(e,(Yu.get(e)??0)+1),ed=!0;let n=qu.get(e)!=null;qu.delete(e),n&&ad(),(n||t)&&id()});var fd=()=>{};function pd(e){fd=typeof e==`function`?e:()=>{}}var md=()=>{};function hd(e){md=typeof e==`function`?e:()=>{}}var gd=()=>{};function _d(e){gd=typeof e==`function`?e:()=>{}}var vd=`deepview.triage`,yd=`deepview.triage.pending`,bd=/^\d+$/u;async function xd(e){let t=new Blob([e]).stream().pipeThrough(new CompressionStream(`deflate`));return new Uint8Array(await new Response(t).arrayBuffer())}async function Sd(e){let t=new Blob([e]).stream().pipeThrough(new DecompressionStream(`deflate`));return new Uint8Array(await new Response(t).arrayBuffer())}var Cd=`deepview.triage.save`,wd=0;function Td(){return!I()&&c(F.triage,F.reports)}function Ed(){Td();let e={};for(let[t,n]of F.triage){if(bd.test(t))continue;let r=yn(n);r&&(e[t]=r)}return e}function Dd(){if(I())return md(),Promise.resolve();let e=++wd,t=Ed(),n=Object.keys(t).length===0,r=n?null:JSON.stringify(t);if(r!=null)try{localStorage.setItem(yd,r)}catch{}return navigator.locks.request(ro,{mode:`shared`},async()=>{let t=null,i=null;if(r!=null)try{let e=await xd(ma(r));i=wo(),t=(i?await zo(e):e).toBase64()}catch(e){console.warn(`Failed to save triage:`,e),fd();return}await navigator.locks.request(Cd,()=>{try{if(e!==wd)return;if(r!=null&&wo()!==i){queueMicrotask(()=>{Dd()});return}if(n)localStorage.removeItem(vd),localStorage.removeItem(yd);else{localStorage.setItem(vd,t);try{localStorage.removeItem(yd)}catch{}}}catch(e){console.warn(`Failed to save triage:`,e)}}),fd()})}async function Od(){let e=localStorage.getItem(yd);if(e)try{return JSON.parse(e)}catch{}let t=localStorage.getItem(vd);if(!t)return null;let n=Uint8Array.fromBase64(t);if(Oa(n)){if(!wo())throw Error(`triage: vault locked, cannot decrypt envelope`);n=await Bo(n)}let r=await Sd(n);return JSON.parse(ga(r))}function kd(e,{replace:t=!1}={}){let n=F.triage;if(t){let t=null,r=localStorage.getItem(yd);if(r)try{t=JSON.parse(r)}catch{}let i=e=>t!=null&&e in t;for(let r of[...n.keys()]){if(bd.test(r))continue;let a=e?.[r],o=!e||!(r in e);!(i(r)&&t[r]?.color)&&(o||!a?.color)&&S(n,r,{color:void 0}),!(i(r)&&(t[r]?.triage||t[r]?.deleted))&&!hn(a)&&S(n,r,{triage:void 0}),!(i(r)&&t[r]?.comment)&&(o||typeof a?.comment!=`string`||!a.comment)&&S(n,r,{comment:void 0}),!(i(r)&&t[r]?.fix)&&(o||typeof a?.fix!=`string`||!a.fix)&&S(n,r,{fix:void 0}),!(i(r)&&t[r]?.flagged!==void 0)&&(o||a?.flagged===void 0)&&S(n,r,{flagged:void 0})}for(let r of[...n.keys()]){if(bd.test(r))continue;let a=n.get(r)?.ignoredReports;if(!a||a.length===0)continue;let o=e?.[r],s=!gn(o);for(let e of[...a]){if(i(r)&&Array.isArray(t[r]?.ignoredReports)&&t[r].ignoredReports.includes(e))continue;if(s){xn(n,r,e,!1);continue}let a=o?.ignoredReports;(!Array.isArray(a)||!a.includes(e))&&xn(n,r,e,!1)}}}if(e)for(let[t,r]of Object.entries(e)){let e=hn(r),i={};if(r&&r.color&&(i.color=r.color),e&&(i.triage=e),r&&typeof r.comment==`string`&&r.comment&&(i.comment=r.comment),r&&typeof r.fix==`string`&&r.fix&&(i.fix=r.fix),r&&typeof r.flagged==`boolean`&&(i.flagged=r.flagged),Object.keys(i).length>0&&S(n,t,i),gn(r)&&r&&Array.isArray(r.ignoredReports))for(let e of r.ignoredReports)typeof e==`string`&&xn(n,t,e,!0,vn(r,e))}}async function Ad(){if(I())return!1;if(![...F.triage.values()].some(e=>e.ignoredReports?.length))return;let e=await l(Object.fromEntries(F.triage),e=>gc(`report`,e,()=>Kc(e)));if(!I())return c(F.triage,e)}async function jd(){if(!I())try{let e=await Od();if(I())return;kd(e),await Ad()&&await Dd()}catch(e){console.warn(`Failed to load triage:`,e)}}async function Md(){if(!I())try{let e=await Od();if(I())return;kd(e,{replace:!0}),await Ad()&&await Dd(),gd()}catch(e){console.warn(`Failed to reload triage:`,e)}}typeof window<`u`&&window.addEventListener(`storage`,e=>{e.key!==vd&&e.key!==yd||Md()});var Nd;function Pd(){return I()?Promise.resolve():Nd??=jd()}ko(()=>{Md()}),ko(()=>{I()||wo()&&localStorage.getItem(yd)&&Dd()});async function Fd({seal:e}){try{localStorage.removeItem(yd)}catch{}let t=localStorage.getItem(vd);if(!t)return;let n=Uint8Array.fromBase64(t);if(Oa(n))return;let r=await e(n,To());localStorage.setItem(vd,r.toBase64())}async function Id({open:e}){try{localStorage.removeItem(yd)}catch{}let t=localStorage.getItem(vd);if(!t)return;let n=Uint8Array.fromBase64(t);if(!Oa(n))return;let r=await e(n,To());localStorage.setItem(vd,r.toBase64())}function Ld(e,t){return t?`r:${JSON.stringify({name:e,workspaceId:t})}`:e}function Rd(e){if(typeof e!=`string`||!e)return null;if(e.startsWith(`r:`))try{let t=JSON.parse(e.slice(2));if(t&&typeof t.name==`string`&&t.name&&typeof t.workspaceId==`string`&&t.workspaceId)return{name:t.name,workspaceId:t.workspaceId}}catch{}return{name:e,workspaceId:null}}async function zd({id:e,name:t,privateKeyBase64:n,password:r}){if(typeof e!=`string`||!e)throw TypeError(`encodeShareLink: id required`);if(typeof t!=`string`||!t)throw TypeError(`encodeShareLink: name required`);if(typeof n!=`string`||!n)throw TypeError(`encodeShareLink: privateKey required`);if(typeof r!=`string`||!r)throw TypeError(`encodeShareLink: password required`);let i=await Ol(n)===e?{v:1,n:t,k:n}:{v:1,i:e,n:t,k:n};return(await h(ma(JSON.stringify(i)),r)).toBase64({alphabet:`base64url`,omitPadding:!0})}async function Bd({encoded:e,password:t}){if(typeof e!=`string`||!e)throw Error(`malformed share link`);if(typeof t!=`string`||!t)throw TypeError(`decodeShareLink: password required`);let n;try{n=Uint8Array.fromBase64(e,{alphabet:`base64url`})}catch{throw Error(`malformed share link`)}let r=await g(n,t,{malformedMsg:`malformed share link`,wrongPasswordMsg:`wrong password or corrupt link`});try{return await Vd(r)}catch(e){throw Error(`wrong password or corrupt link`,{cause:e})}}async function Vd(e){let t=JSON.parse(ga(e));if(!t||typeof t!=`object`||typeof t.n!=`string`||typeof t.k!=`string`||!t.n||!t.k||t.i!==void 0&&(typeof t.i!=`string`||!t.i)||typeof t.i==`string`&&t.i.length>256||t.n.length>1024||Uint8Array.fromBase64(t.k).length!==32)throw Error(`shape`);return{id:typeof t.i==`string`?t.i:await Ol(t.k),name:t.n,privateKeyBase64:t.k}}function Hd(e){return typeof location>`u`?`#share=${e}`:`${location.origin}${location.pathname}#share=${e}`}function Ud(e){let t=typeof e==`string`?e:typeof location>`u`?``:location.hash;if(!t)return null;let n=t.replace(/^#/u,``);if(!n)return null;for(let e of n.split(`&`)){let t=e.indexOf(`=`);if(!(t<0||e.slice(0,t)!==`share`))return e.slice(t+1)||null}return null}var Wd=new Map,Gd=new Map,Kd=new Map;function qd(e){return I()?[...new Set(Du([e]).map(e=>e.report))]:[...Wd.get(e)?.reports.keys()??[]]}function Jd(e){if(I())return ku(e);for(let{title:t}of Wd.get(e)?.reports.values()??[])if(t)return t;return``}function Yd(e){if(I())return Du(e);let t=new Set;for(let n of e)for(let e of Wd.get(n)?.reports.values()??[])for(let n of e.rows)t.add(n);return[...t]}function Xd(e){if(I())return Ou(e);let t=new Set;for(let n of e)for(let e of Gd.get(n)?.values()??[])for(let n of e)t.add(n);return[...t]}function Zd(e){return Kd.has(e)||Kd.set(e,{ids:new Set,inputs:new Set}),Kd.get(e)}function Qd(e,t){let n=!1;for(let r of t.members){let i=Wd.get(r.id);i||Wd.set(r.id,i={reports:new Map});let a=i.reports.get(e);if(a){a.rows.add(t);continue}i.reports.set(e,{title:Bi(r),rows:new Set([t])}),Zd(e).ids.add(r.id),n=!0}for(let[,...n]of Su(t.members))for(let r of n){Gd.has(r)||Gd.set(r,new Map);let n=Gd.get(r);n.has(e)||n.set(e,new Set),n.get(e).add(t),Zd(e).inputs.add(r)}return n}function $d(e){let t=Kd.get(e);if(Kd.delete(e),!t)return!1;for(let n of t.ids){let t=Wd.get(n);t?.reports.delete(e),t?.reports.size===0&&Wd.delete(n)}for(let n of t.inputs){let t=Gd.get(n);t?.delete(e),t?.size===0&&Gd.delete(n)}return!0}var ef=`solidity-bundle`,tf=`0.0.0`;function nf(e){if(e?.name!==ef)return!1;let t=e.version;return!t||t===tf}function rf(e){let t=e?.package?.npm,n=t?.version;if(typeof n==`string`&&n&&!nf(t))return n;let r=e?.file;if(!r)return null;let i=/(?:^|\/)node_modules\/\.pnpm\/([^/]+)\/node_modules\//u.exec(r);if(!i)return null;let a=i[1],o=a.indexOf(`_`);o>0&&(a=a.slice(0,o));let s=a.lastIndexOf(`@`);return s<=0?null:a.slice(s+1)||null}function af(){return{keys:new Set,findings:[],files:new Map,reports:new Set,_keyReports:new Map}}function of(e,t,n,r){e.reports.add(n);let i=e._keyReports.get(t);i||e._keyReports.set(t,i=new Set);let a=!i.has(n);return i.add(n),e.keys.has(t)||(e.keys.add(t),e.findings.push(r),e.files.has(r.file)||e.files.set(r.file,[]),e.files.get(r.file).push(r)),a}function sf(e,t,n,r){e._keyReports.delete(t),e.keys.delete(t);let i=e.findings.findIndex(e=>r(e)===t);i>=0&&e.findings.splice(i,1);let a=e.files.get(n);if(!a)return;let o=a.findIndex(e=>r(e)===t);o>=0&&a.splice(o,1),a.length===0&&e.files.delete(n)}function cf(e){let t=new Set;for(let n of e._keyReports.values())for(let e of n)t.add(e);e.reports=t}function lf(e,t,n,r,i){let a=e.byVersion.get(t);a||(a=af(),e.byVersion.set(t,a)),of(a,r,i,n)}function uf(e,t,n,r,i,a){let o=e.byVersion.get(t);if(!o)return;let s=o._keyReports.get(n);if(s&&(s.delete(i),s.size===0&&sf(o,n,r,a)),o._keyReports.size===0){e.byVersion.delete(t);return}cf(o)}function df(e,t){if(e===t)return 0;if(e===null)return 1;if(t===null)return-1;let[n,r=``]=ff(e,`-`),[i,a=``]=ff(t,`-`),o=n.split(`.`),s=i.split(`.`),c=Math.max(o.length,s.length);for(let e=0;e<c;e++){let t=o[e]??`0`,n=s[e]??`0`,r=/^\d+$/u.test(t),i=/^\d+$/u.test(n);if(r&&i){let e=Number(n)-Number(t);if(e!==0)return e}else{let e=n.localeCompare(t);if(e!==0)return e}}return r===``&&a!==``?-1:r!==``&&a===``?1:a.localeCompare(r)}function ff(e,t){let n=e.indexOf(t);return n<0?[e,``]:[e.slice(0,n),e.slice(n+1)]}var pf=new Map,mf=new Map,hf=new Map,gf=new Map;function _f(e){let t=e?.package?.npm;if(typeof t?.name==`string`&&t.name&&!nf(t))return t.name;if(!e?.file)return null;let n=/(?:^|\/)(?:node_modules|dependencies)\/(@[^/]+\/[^/]+|[^/]+)/gu,r;for(;(r=n.exec(e.file))!==null;)if(r[1]!==`.pnpm`)return r[1];return null}function vf(e){return typeof e?.file==`string`&&/(?:^|\/)(?:node_modules|dependencies)\//u.test(e.file)}function yf(e,t){return typeof e.repo?.github==`string`&&e.repo.github?e.repo.github:typeof e._repoFallback==`string`&&e._repoFallback?e._repoFallback:typeof t==`string`&&t?t:null}var bf=new Set,xf=new Set,Sf=null,Cf=!1;function wf(e){return xf.add(e),()=>xf.delete(e)}function Tf(){for(let e of xf)try{e()}catch{}}function Ef(e){return pf.get(e)?.list??[]}function Df(){let e=0;for(let t of pf.values())e+=t.list.length;return e}function Of(){return mf}function kf(){return hf}function Af(e,t){let n=pf.get(e);if(!n)return[];let r=n.reports.get(Nf(t));return r?[...r]:[]}function jf(e,t){let n=mf.get(e);if(!n)return[];let r=n._keyReports.get(Nf(t));return r?[...r]:[]}function Mf(e,t){let n=hf.get(e);if(!n)return[];let r=n._keyReports.get(Nf(t));return r?[...r]:[]}function Nf(e){let t=e.id?`id:${e.id}`:`c:${e.severity??``}|${e.description??``}|${e.file??``}|${e.line??``}`;return JSON.stringify([t,o(e)])}function Pf(e,t,n){let r=gf.get(e);r||(r={hash:[],pkg:[],repo:[]},gf.set(e,r)),r[t].push(n)}function Ff(e,t,n){let r=pf.get(e.fileHash);r||(r={keys:new Set,list:[],reports:new Map},pf.set(e.fileHash,r));let i=r.reports.get(t);i||(i=new Set,r.reports.set(t,i));let a=!i.has(n);return i.add(n),a&&Pf(n,`hash`,{hash:e.fileHash,key:t}),r.keys.has(t)?a:(r.keys.add(t),r.list.push(e),!0)}function If(e,t,n){let r=_f(e);if(!r)return!1;let i=rf(e),a=mf.get(r);if(a||(a={...af(),repos:new Set,byVersion:new Map,_repoReports:new Map},mf.set(r,a)),typeof e.repo?.github==`string`&&e.repo.github){a.repos.add(e.repo.github);let t=a._repoReports.get(e.repo.github);t||a._repoReports.set(e.repo.github,t=new Set),t.add(n)}lf(a,i,e,t,n);let o=of(a,t,n,e);return Pf(n,`pkg`,{pkg:r,key:t,file:e.file,version:i}),o}function Lf(e,t,n,r){if(vf(e))return!1;let i=yf(e,r);if(!i)return!1;let a=hf.get(i);a||(a=af(),hf.set(i,a));let o=of(a,t,n,e);return o&&Pf(n,`repo`,{repo:i,key:t,file:e.file}),o}function Rf(e){let t=gf.get(e);gf.delete(e),bf.delete(e);let n=$d(e);if(!t)return n;let r=n;for(let{hash:n,key:i}of t.hash){let t=pf.get(n);if(!t)continue;let a=t.reports.get(i);if(a){if(a.delete(e)&&(r=!0),a.size===0){t.reports.delete(i),t.keys.delete(i);let e=t.list.findIndex(e=>Nf(e)===i);e>=0&&t.list.splice(e,1)}t.keys.size===0&&pf.delete(n)}}let i=new Set;for(let{pkg:n,key:a,file:o,version:s}of t.pkg){let t=mf.get(n);if(!t)continue;let c=t._keyReports.get(a);if(c){if(c.delete(e)&&(r=!0),c.size===0&&sf(t,a,o,Nf),uf(t,s,a,o,e,Nf),!i.has(n)){i.add(n);for(let n of[...t._repoReports.keys()]){let i=t._repoReports.get(n);i?.delete(e)&&i.size===0&&(t._repoReports.delete(n),t.repos.delete(n),r=!0)}}t._keyReports.size===0?mf.delete(n):cf(t)}}for(let{repo:n,key:i,file:a}of t.repo){let t=hf.get(n);if(!t)continue;let o=t._keyReports.get(i);o&&(o.delete(e)&&(r=!0),o.size===0&&sf(t,i,a,Nf),t._keyReports.size===0?hf.delete(n):cf(t))}return r}async function zf(e){if(bf.has(e))return!1;bf.add(e);try{let t=await Wc(e,{keep:!1}),n=await Ti(t);if(!n)return!1;let{data:r,findings:i}=n;if(i.length===0)return!1;a(i,r),yi(bi(r).map(e=>Array.isArray(e)?e:[e]),{source:r.source});let o=gi(r)??``;if(!o)try{o=Xs(e)}catch{}let s=!1;for(let t of i){let n=Nf(t);t.fileHash&&Ff(t,n,e)&&(s=!0),t.file&&If(t,n,e)&&(s=!0),t.file&&Lf(t,n,e,o)&&(s=!0)}for(let[t,n]of bi(r).entries()){let i=(Array.isArray(n)?n:[n]).filter(e=>e?.id);i.length!==0&&Qd(e,{report:e,index:t,members:i.map(e=>{let t=e.source??r.source??null;return{id:e.id,title:Bi(e),source:t,revalidate:Fi(e),isApp:e.isApp??Ii(e,t),isSecurity:e.isSecurity,...e.file?{file:e.file,_depsDirectory:e._depsDirectory}:{},...Array.isArray(e.revalidateInputs)?{revalidateInputs:[...e.revalidateInputs]}:{}}})})&&(s=!0)}return bf.has(e)?s:(Rf(e),Cf=!0,!1)}catch{return bf.delete(e),!1}}function Bf(){return I()?Promise.resolve():Sf||(Sf=(async()=>{try{do{Cf=!1;let e=await Vc();for(let t of e)await zf(t)&&Tf()}while(Cf)}finally{Sf=null}})(),Sf)}function Vf(){return Sf}zc(e=>{Rf(e)&&Tf()}),Qs(e=>{Rf(e)&&Tf(),Bf().catch(()=>{})});var Hf=new Map,Uf=new Map,Wf=new Map,Gf=new Set;function Kf(e){return Gf.add(e),()=>Gf.delete(e)}function qf(){for(let e of Gf)try{e()}catch{}}function Jf(e,t){if(!e||!t)return!1;let n=!Uf.has(e);Uf.set(e,t),Wf.delete(e);for(let[n,r]of t){if(!r)continue;let t=Hf.get(r);t||(t=new Map,Hf.set(r,t)),t.set(e,n)}return n&&qf(),n}function Yf(e){let t=Uf.get(e);if(Uf.delete(e),Wf.delete(e),t){for(let n of t.values()){let t=Hf.get(n);t&&(t.delete(e),t.size===0&&Hf.delete(n))}qf()}}function Xf(e,t){let n=Uf.get(e);if(!n||typeof t!=`string`||t===``)return null;if(n.has(t))return t;let r=Qf(e,n).get(Zf(t));if(!r)return null;let i=t.startsWith(`/`)?t:`/${t}`,a=null;for(let e of r)if(e.endsWith(i)){if(a!==null)return null;a=e}return a}function Zf(e){let t=e.lastIndexOf(`/`);return t<0?e:e.slice(t+1)}function Qf(e,t){let n=Wf.get(e);if(n)return n;n=new Map;for(let e of t.keys()){let t=Zf(e),r=n.get(t);r?r.push(e):n.set(t,[e])}return Wf.set(e,n),n}function $f(e){if(!e)return[];let t=Hf.get(e);if(!t)return[];let n=[];for(let[e,r]of t)n.push({integrity:e,file:r});return n}function ep(e){return Uf.has(e)}async function tp(e){if(!e)return null;let t=R(),n=(await Promise.all(t.map(e=>zr(`workspace`,e.id)))).indexOf(e);return n===-1?null:t[n]}async function np(e){if(!e)return null;let t=await Vc(),n=(await Promise.all(t.map(e=>zr(`report`,e)))).indexOf(e);return n===-1?null:t[n]}async function rp(e,t){let n;try{n=await Wc(e)}catch{return!1}return n==null?!1:(await Ti(n))?.findings.some(e=>e.id===t)??!1}async function ip(e,{skip:t=[]}={}){if(!e)return null;let n=new Set(t),r=(await Vc()).filter(e=>!n.has(e));for(let t of r)if(await rp(t,e))return t;return null}function ap(e){return e?R().filter(t=>t.reports.includes(e)):[]}function op(e){if(!e)return``;for(let t of e.split(`
3
- `))if(t.trim())return t.trim();return``}function sp(e){let t=new Set(e.map(e=>e.id)),n=new Map;for(let e of F.reports)for(let r of e.groups)for(let e of r){let r=e.id??String(e._id);if(t.has(r)&&!n.has(r)&&(n.set(r,{severity:e.severity,file:e.file,line:e.line,description:op(e.description)}),n.size===t.size))return n}return n}var cp=`deepview.lastFile`,lp=null;function up(){return lp||(lp=dp(),lp.catch(()=>{lp=null})),lp}async function dp(){try{await Pd()}catch{}let e=await Vc(),t=new Set(e),n=new Set(e),r=new Set;for(let n of e){if(!n.toLowerCase().endsWith(`.deepseek`))continue;let e=n.slice(0,-9)+`.md`;if(t.has(e))continue;let i;try{i=await Wc(n),await Hc(e,i),await Jc(n)}catch(t){console.warn(`migrate: failed to rename ${n} -> ${e}`,t);continue}t.delete(n),t.add(e),r.add(n);let a=Lu(n);if(Bu(n),a===void 0){let{count:t,source:n}=Vu(i);zu(e,t,n)}else{let{source:t}=Vu(i);zu(e,a,t)}let o=Xs(n);o&&(ec(n,``),ec(e,o));let s=!1;for(let[t,r]of[...F.triage])r.ignoredReports?.includes(n)&&(xn(F.triage,t,n,!1),xn(F.triage,t,e,!0,vn(r,n)),s=!0);s&&await Dd();let c=Rd(Va(cp));if(c?.name===n)try{await Ha(cp,Ld(e,c.workspaceId))}catch{}}for(let e of R())for(let t of e.reports){if(!t.toLowerCase().endsWith(`.deepseek`)||!r.has(t)&&n.has(t))continue;let i=t.slice(0,-9)+`.md`;await gu(t,e.id),await hu(i,e.id)}}function fp(){return{...pp,hydrateKey:Ka,localContentSyncStatus:pn,readTriageBlob:async()=>(await u(await Od(),e=>gc(`report`,e,()=>Kc(e)))).entries,reportSyncHash:e=>gc(`report`,e,async()=>mn(await Gc(e)))}}var pp={hasStoredBundleBytes:cl,listBundles:ol,listFiles:Vc,onBundleMutated:Qc,onFileMutated:zc,readBundle:fl,readFile:Kc,withStoredItem:gc,isEncryptionEnabled:yo,isUnlocked:bo,onVaultStateChange:ko,unlockEncryption:jo};function mp(e=pp){let t=()=>e.isEncryptionEnabled()&&!e.isUnlocked(),n=(n,r,i)=>{let a=!1,o=!1,s=e.onVaultStateChange(()=>{a=!0}),c=r===`report`?e.onFileMutated:e.onBundleMutated,l=i===void 0?null:c(e=>{e===i&&(o=!0)});return{check(){if(n?.throwIfAborted(),t()||a)throw Error(`Local data is locked or has changed. Unlock it and select the file again.`);if(o)throw Error(`This local ${r} changed. Select it again before importing.`)},unsubscribe(){s(),l?.()}}},r=async t=>t===`report`?(await e.listFiles()).map(e=>({value:e,label:e})):(await e.listBundles()).map(e=>({value:e.integrity,label:e.name,secondary:e.integrity}));return{get locked(){return t()},async hasData(n){return n===`report`?(await e.listFiles()).length>0:t()?e.hasStoredBundleBytes():(await e.listBundles()).length>0},async list(e){let t=n();try{t.check();let n=await r(e);return t.check(),n}finally{t.unsubscribe()}},unlock(t){return e.unlockEncryption(t)},subscribe(t){let n=e.onVaultStateChange(()=>t()),r=e.onFileMutated(e=>t({kind:`report`,value:e})),i=e.onBundleMutated(e=>t({kind:`bundle`,value:e}));return()=>{n(),r(),i()}},async importItem(t,i,a,{signal:o}={}){let s=n(o,t,i);try{s.check();let{result:n}=await e.withStoredItem(t,i,async()=>{s.check();let n=(await r(t)).find(e=>e.value===i);if(s.check(),!n)throw Error(`This file is no longer in local storage. Select another file.`);let o=t===`report`?await e.readFile(i):await e.readBundle(i);s.check();let c=new File([o],n.label,{type:t===`report`?`text/plain`:`application/octet-stream`});try{let e=Promise.resolve(a(c));return e.catch(()=>{}),{result:e}}finally{s.unsubscribe()}});return n}finally{s.unsubscribe()}}}}function hp(){return typeof navigator<`u`&&typeof navigator.storage==`object`&&navigator.storage!==null}async function gp(){if(!hp()||typeof navigator.storage.persist!=`function`)return!1;try{return await navigator.storage.persist()===!0}catch{return!1}}async function _p(){let e={supported:hp(),persisted:null,usage:null,quota:null};if(!e.supported)return e;if(typeof navigator.storage.persisted==`function`)try{e.persisted=await navigator.storage.persisted()}catch{}if(typeof navigator.storage.estimate==`function`)try{let t=await navigator.storage.estimate();typeof t?.usage==`number`&&(e.usage=t.usage),typeof t?.quota==`number`&&(e.quota=t.quota)}catch{}return e}var vp=`deepview.scan.access`,yp=new Set;function bp(){for(let e of yp)e()}function xp(){return Va(vp)!=null}function Sp(e){try{let t=JSON.parse(Va(vp)),n=t?.provider===`moonshotai`?`moonshot`:t?.provider;return!e||t?.server!==e||typeof t.deepview!=`string`||!t.deepview.trim()||![null,`anthropic`,`openai`,`moonshot`,`openrouter`].includes(n)||typeof t.token!=`string`?null:{...t,provider:n}}catch{return null}}async function Cp({server:e,deepview:t,provider:n,token:r}){await Ha(vp,JSON.stringify({server:e,deepview:t,provider:n,token:r})),bp()}async function wp(){await Ua(vp),bp()}function Tp(e){yp.add(e);let t=La(e);return()=>{yp.delete(e),t()}}var Ep=1;function Dp(){let e=Ed(),t=Ys();return{version:Ep,exportedAt:new Date().toISOString(),triage:e,repoUrls:t}}function Op(){return`deepview-triage-${new Date().toISOString().replaceAll(/[:.]/gu,`-`).slice(0,19)}.json.gz`}async function kp(){let e=Dp();return{blob:new Blob([await Tn(JSON.stringify(e))]),filename:Op()}}async function Ap(e){let t;try{t=await En(new Uint8Array(await e.arrayBuffer()))}catch(e){throw Error(`Failed to gunzip: ${e.message}`,{cause:e})}let n;try{n=JSON.parse(t)}catch(e){throw Error(`Failed to parse JSON: ${e.message}`,{cause:e})}if(!n||typeof n!=`object`)throw Error(`Invalid backup file (not an object)`);if(n.version!==Ep)throw Error(`Unsupported backup version: ${n.version} (expected ${Ep})`);if(!n.triage||typeof n.triage!=`object`)throw Error("Backup is missing the `triage` map");if(!n.repoUrls||typeof n.repoUrls!=`object`)throw Error("Backup is missing the `repoUrls` map");return n}async function jp(e,t){if(![`replace`,`prefer-imported`,`prefer-current`].includes(t))throw Error(`Unknown merge mode: ${t}`);if(!e||typeof e!=`object`)throw Error(`Invalid payload: not an object`);if(!e.triage||typeof e.triage!=`object`||Array.isArray(e.triage))throw Error("Invalid payload: missing or non-object `triage`");if(!e.repoUrls||typeof e.repoUrls!=`object`||Array.isArray(e.repoUrls))throw Error("Invalid payload: missing or non-object `repoUrls`");let n=e.triage,r=F.triage;if(t===`replace`)for(let e of[...r.keys()])bd.test(e)||r.delete(e);let i=t===`prefer-current`;for(let[e,t]of Object.entries(n)){if(bd.test(e)||!t||typeof t!=`object`)continue;typeof t.color==`string`&&t.color&&(!i||!r.get(e)?.color)&&S(r,e,{color:t.color});let n=hn(t);if(n&&(!i||!hn(r.get(e)))&&S(r,e,{triage:n}),typeof t.comment==`string`&&t.comment&&(!i||!r.get(e)?.comment)&&S(r,e,{comment:t.comment}),typeof t.fix==`string`&&t.fix&&(!i||!r.get(e)?.fix)&&S(r,e,{fix:t.fix}),typeof t.flagged==`boolean`&&(!i||r.get(e)?.flagged===void 0)&&S(r,e,{flagged:t.flagged}),Array.isArray(t.ignoredReports)&&gn(r.get(e)))for(let n of t.ignoredReports)typeof n==`string`&&xn(r,e,n,!0,vn(t,n))}await Ad(),await Dd();let a=0,o=null;try{await tc(e.repoUrls,t),a=Object.keys(e.repoUrls).length}catch(e){console.warn(`applyTriageImport: repo-URL import failed:`,e),o=e}return{triageEntries:Object.keys(n).length,repoUrls:a,repoUrlError:o}}function Mp(e){return e?.name===`NotFoundError`||typeof e?.message==`string`&&e.message.startsWith(`File not found:`)}async function Np(e){let t=new Set;for(let n of e){let e;try{e=await Wc(n)}catch(e){if(Mp(e))continue;throw Error(`Failed to read ${n}: ${e.message}`,{cause:e})}if(e==null)continue;let r=await Ti(e);if(r)for(let e of r.findings)e.id&&t.add(e.id)}return t}function Pp(){let e=new Set;for(let t of F.triage.keys())bd.test(t)||e.add(t);return e}async function Fp(e){let t=Pp();if(t.size===0)return{orphanedCount:0,sharedCount:0};let n=await Np(e),r=new Set;for(let e of t)n.has(e)&&r.add(e);if(r.size===0)return{orphanedCount:0,sharedCount:0};let i=await Vc(),a=new Set(e),o=await Np(i.filter(e=>!a.has(e))),s=0,c=0;for(let e of r)o.has(e)?c++:s++;return{orphanedCount:s,sharedCount:c}}async function Ip(){let e=new Set(F.triage.keys()),t=[];for(let[e,n]of F.triage)if(n.ignoredReports)for(let r of n.ignoredReports)t.push({id:e,report:r});let n=await Vc(),r=new Set(n),i=await Np(n),a=!1;for(let t of e){if(bd.test(t)||i.has(t))continue;let e=F.triage.get(t);!e||!(e.color||hn(e)||e.comment||e.fix||e.flagged!==void 0)||S(F.triage,t,{color:void 0,triage:void 0,comment:void 0,fix:void 0,flagged:void 0,deleted:void 0})&&(a=!0)}for(let{id:e,report:n}of t)bd.test(e)||i.has(e)&&r.has(n)||_n(F.triage,e,n)&&xn(F.triage,e,n,!1)&&(a=!0);a&&await Dd()}var Lp=1;async function Rp(e){let t=new Set,n=await Ti(e);for(let e of n?.findings??[])e.id&&t.add(e.id);return t}function zp(e){return(e??``).replaceAll(/[^a-zA-Z0-9._-]+/gu,`_`).replaceAll(/^_+|_+$/gu,``)||`workspace`}async function Bp(e){if(!Array.isArray(e)||e.length===0)return[];let t=await ol(),n=new Map(t.map(e=>[e.integrity,e.name])),r=[];for(let t of e){let e=n.get(t);if(!e)continue;let i;try{i=await fl(t)}catch(e){console.warn(`Workspace export: failed to read bundle ${t}: ${e?.message??e}`);continue}r.push({integrity:t,name:e,data:i.toBase64()})}return r}function Vp(e){let t=Xs(e);return t?{github:t}:null}async function Hp(e){let t=[];for(let n of e.reports??[]){let e;try{e=await Wc(n)}catch(e){console.warn(`Workspace export: skipping ${n}: ${e?.message??e}`),(e instanceof DOMException&&e.name===`NotFoundError`||typeof e?.message==`string`&&e.message.startsWith(`File not found:`))&&await mu(n,null);continue}let r=Vp(n);t.push(r?{name:n,content:e,repo:r}:{name:n,content:e})}return t}async function Up(e,{includeBundleBytes:t=!1}={}){let n=await Hp(e),r=new Set;for(let e of n)for(let t of await Rp(e.content))r.add(t);let i=new Set(e.reports??[]),a={};for(let[e,t]of F.triage){if(!r.has(e))continue;let n=(t.ignoredReports??[]).filter(e=>i.has(e)),o=yn({...t,ignoredReports:n});o&&(a[e]=o)}let o={};for(let e of n)e.repo?.github&&(o[e.name]=e.repo.github);let s=(e.bundles??[]).filter(e=>typeof e==`string`&&e.length>0),c={version:Lp,exportedAt:new Date().toISOString(),workspace:{id:e.id,name:e.name,privateKey:e.privateKey,createdAt:e.createdAt},reports:n,bundles:s,repoUrls:o,triage:a};if(t){let e=await Bp(s);e.length>0&&(c.bundleBlobs=e)}return c}async function Wp(e,{includeBundleBytes:t=!1}={}){let n=await Up(e,{includeBundleBytes:t});return{blob:new Blob([await Tn(JSON.stringify(n))]),filename:`${zp(e.name)}.deepview-workspace.json.gz`}}async function Gp(e,t,{includeBundleBytes:n=!1}={}){if(typeof t!=`string`||!t)throw TypeError(`buildWorkspaceExportEncrypted: password required`);let{blob:r}=await Wp(e,{includeBundleBytes:n}),i=new Uint8Array(await r.arrayBuffer()),a=await v(i,t);return{blob:new Blob([a],{type:`application/octet-stream`}),filename:`${zp(e.name)}.deepview-workspace.enc`}}async function Kp(e,{password:t,includeBundleBytes:n=!1}={}){return typeof t==`string`&&t?await Gp(e,t,{includeBundleBytes:n}):await Wp(e,{includeBundleBytes:n})}async function qp(e){return{reports:await Hp(e)}}async function Jp(e){let t=await qp(e);return{blob:new Blob([await Tn(JSON.stringify(t))]),filename:`${zp(e.name)}.deepview-reports.json.gz`}}function Yp(e){return hn(e)??null}async function Xp(e){let t=new Map;for(let n of e??[]){if(typeof n?.content!=`string`)continue;let e=await Ti(n.content);if(e)for(let n of e.findings)!n.id||t.has(n.id)||t.set(n.id,{severity:n.severity,file:n.file,line:n.line,description:op(n.description)})}return t}async function Zp(e,t,n){if(!e||typeof e!=`object`||Array.isArray(e))return;let r=F.triage,i=[];for(let[t,n]of Object.entries(e)){if(!n||typeof n!=`object`)continue;let e=r.get(t)?.color,a=typeof n.color==`string`?n.color:void 0;a&&e&&e!==a?i.push({id:t,property:`color`,local:e,imported:a}):a&&a!==e&&S(r,t,{color:a});let o=r.get(t)?.comment??``,s=typeof n.comment==`string`?n.comment:``;s&&o&&o!==s?i.push({id:t,property:`comment`,local:o,imported:s}):s&&s!==o&&S(r,t,{comment:s});let c=r.get(t)?.fix??``,l=typeof n.fix==`string`?n.fix:``;l&&c&&c!==l?i.push({id:t,property:`fix`,local:c,imported:l}):l&&l!==c&&S(r,t,{fix:l});let u=Yp(n),d=hn(r.get(t))??null;u&&d&&d!==u?i.push({id:t,property:`triage`,local:d,imported:u}):u&&!d&&S(r,t,{triage:u,...u===`ignored`?{}:{ignoredReports:void 0}});let f=r.get(t)?.flagged,p=typeof n.flagged==`boolean`?n.flagged:void 0;p!==void 0&&f!==void 0&&f!==p?i.push({id:t,property:`flagged`,local:f?`flagged`:`not flagged`,imported:p?`flagged`:`not flagged`}):p!==void 0&&p!==f&&S(r,t,{flagged:p});let m=Array.isArray(n.ignoredReports)?n.ignoredReports:[];if(gn(r.get(t)))for(let e of m)typeof e==`string`&&xn(r,t,e,!0,vn(n,e))}if(i.length>0&&t){let e=await t(i,n??new Map);e&&Qp(i,e)}await Dd()}function Qp(e,t){for(let n of e)t[`${n.id}:${n.property}`]===`imported`&&$p(n.id,n.property)===n.local&&(n.property===`color`?S(F.triage,n.id,{color:n.imported}):n.property===`comment`?S(F.triage,n.id,{comment:n.imported}):n.property===`fix`?S(F.triage,n.id,{fix:n.imported}):n.property===`triage`?S(F.triage,n.id,{triage:n.imported,...n.imported===`ignored`?{}:{ignoredReports:void 0}}):n.property===`flagged`&&S(F.triage,n.id,{flagged:n.imported===`flagged`||n.imported!==`not flagged`&&void 0}))}function $p(e,t){if(t===`color`)return F.triage.get(e)?.color;if(t===`triage`)return hn(F.triage.get(e))??null;if(t===`comment`)return F.triage.get(e)?.comment??``;if(t===`fix`)return F.triage.get(e)?.fix??``;if(t===`flagged`){let t=F.triage.get(e)?.flagged;return t===!0?`flagged`:t===!1?`not flagged`:``}}async function em(e){if(Array.isArray(e))for(let t of e){let e;try{e=Uint8Array.fromBase64(t.data)}catch(e){console.warn(`Workspace import: failed to decode bundle ${t.integrity}: ${e?.message??e}`);continue}try{let n=await ul(t.name,e);n?.integrity!==t.integrity&&console.warn(`Workspace import: bundle ${t.name} integrity mismatch (claimed ${t.integrity}, computed ${n?.integrity})`)}catch(e){console.warn(`Workspace import: failed to save bundle ${t.name}: ${e?.message??e}`)}}}async function tm(e,{conflictResolver:t}={}){let n=[];for(let t of e.reports)if(typeof t?.name==`string`&&typeof t?.content==`string`)try{await Hc(t.name,t.content);let{count:e,source:r}=Vu(t.content);zu(t.name,e,r??Ru(t.name)),n.push(t.name)}catch(e){console.warn(`Workspace import: failed to save ${t.name}: ${e.message}`)}Array.isArray(e.bundleBlobs)&&e.bundleBlobs.length>0&&await em(e.bundleBlobs);let r=e.triage&&Object.keys(e.triage).length>0?await Xp(e.reports):new Map;await Zp((await u(e.triage,t=>e.reports.find(e=>e.name===t)?.content)).entries,t,r);let i=Array.isArray(e.bundles),a=i?e.bundles.filter(e=>typeof e==`string`&&e.length>0):[],o=await su({id:e.workspace.id,name:e.workspace.name,privateKey:e.workspace.privateKey,reports:n,bundles:i?a:void 0,preserveBundles:!i,createdAt:e.workspace.createdAt}),s=new Set(n),c=Object.create(null);if(e.repoUrls&&typeof e.repoUrls==`object`)for(let[t,n]of Object.entries(e.repoUrls))!s.has(t)||typeof n!=`string`||!n||(c[t]=n);if(Object.keys(c).length>0)try{await nc(c)}catch(e){console.warn(`Workspace import: failed to adopt per-report repository URLs:`,e)}return o}function nm(e){return!e||typeof e!=`object`||Array.isArray(e)?`payload is not an object`:e.version!==void 0||e.workspace!==void 0?`payload claims to be a workspace export`:Array.isArray(e.reports)?e.reports.length>y?`reports count (${e.reports.length}) exceeds cap (${y})`:null:`reports field must be an array`}function rm(e){return nm(e)===null}async function im(e){if(_(e))return{kind:`encrypted`};let t;try{t=await En(e)}catch(e){throw Error(`gzip decompression failed: ${e.message}`,{cause:e})}let n;try{n=JSON.parse(t)}catch{return{kind:`workspace`,text:t}}return rm(n)?{kind:`reports`,reports:n.reports}:{kind:`workspace`,text:t}}var am=`deepview.workspaceApp`,om=2,sm=new Set,cm=new Set,lm=0,um=0,dm=0,fm=new Map,pm=Promise.resolve(),mm=null;function hm(e=Va(am)){try{let t=JSON.parse(e);if(t?.version===om&&t.entries&&typeof t.entries==`object`)return t}catch{}return{version:om,revision:``,links:`[]`,entries:{}}}function gm(){for(let e of sm)e()}function _m(e){let t=pm.then(()=>Qa(am,t=>e(hm(t))));return pm=t.catch(e=>console.warn(`workspace App cache:`,e)),t}function vm(e){return JSON.stringify(e.reports.toSorted())}function ym(){return JSON.stringify(od().map(({name:e,groups:t})=>({name:e,groups:t})))}function bm(e){return nd()&&e.links===ym()}function xm(e,t){return e.workspaceRevisions?.[t]??``}function Sm(e,t,n){return n.workspaceId===t?.id&&n.workspaceEpoch===(fm.get(t?.id)??0)&&n.workspaceRevision===xm(e,t?.id)}function Cm(e,t,n){return n.reportEpoch===dm&&n.reportRevision===(e.reportRevision??e.revision)&&Sm(e,t,n)}function wm(e,t){return Cm(hm(),e,t)}function Tm(e,t){if(lm||cm.has(e.id))return null;let n=t.entries[e.id];return!n||n.reports!==vm(e)||typeof n.appMode!=`boolean`||n.appMode&&(!Number.isSafeInteger(n.appFindings)||n.appFindings<0)?null:n}function Em(e){return Tm(e,hm())?.appMode??null}function Dm(e){let t=hm(),n=Tm(e,t);return!n||!bm(t)?null:n}async function Om(e,t=null){let n;do n=pm,await n;while(n!==pm);let r=hm(),i=r.reportRevision??r.revision;return t&&(!Cm(r,e,t)||!bm(r))?null:{epoch:um,revision:r.revision,reportEpoch:dm,reportRevision:i,workspaceId:e?.id,workspaceEpoch:fm.get(e?.id)??0,workspaceRevision:xm(r,e?.id)}}async function km(e,t,n){let r=!1;return await _m(i=>{if(n.epoch!==um||n.revision!==i.revision||!Sm(i,e,n)||!bm(i))return;let a=R().find(t=>t.id===e.id);if(a&&vm(a)===vm(e))return i.entries[e.id]={...t,reports:vm(e)},r=!0,JSON.stringify(i)}),r&&gm(),r}function Am(e=null,t){if(e?.length===0)return Promise.resolve();if(e===null)um++,t===void 0&&dm++,lm++;else for(let t of e)fm.set(t,(fm.get(t)??0)+1),cm.add(t);return gm(),_m(n=>{if(n.reportRevision??=n.revision,e===null)n.revision=crypto.randomUUID(),t===void 0&&(n.reportRevision=n.revision),n.entries={};else{n.workspaceRevisions??={};for(let t of e)n.workspaceRevisions[t]=crypto.randomUUID(),delete n.entries[t]}return t!==void 0&&(n.links=t),JSON.stringify(n)}).finally(()=>{if(e===null)lm--;else for(let t of e)cm.delete(t);gm()})}function jm(e){return sm.add(e),()=>sm.delete(e)}La(()=>{let e=Va(am);e!==mm&&(mm=e,gm())}),Ll(e=>{Am([e]).catch(()=>{})}),Fl(e=>{Am([e]).catch(()=>{})}),zc(e=>{Am(R().filter(t=>t.reports.includes(e)).map(e=>e.id)).catch(()=>{})}),rd(()=>{if(!nd()){gm();return}let e=ym();hm().links===e?gm():Am(null,e).catch(()=>{})});var Mm=null,Nm=null;function Pm(){for(let e of[`br`,`brotli`])try{return new DecompressionStream(e),e}catch{}return null}async function Fm(e,t){let n=new Blob([t]).stream().pipeThrough(new DecompressionStream(e));return new Uint8Array(await new Response(n).arrayBuffer())}async function Im(){if(`serviceWorker`in navigator)try{let e=await navigator.serviceWorker.getRegistrations();for(let t of e){let e=t.active?.scriptURL??t.installing?.scriptURL??t.waiting?.scriptURL;e&&e.endsWith(`/brotli-sw.js`)&&await t.unregister()}}catch{}}var Lm=`./brotli-fallback.js`,Rm=Symbol(`brotli worker unavailable`),zm=null,Bm=!1,Vm=0,Hm=new Map;function Um(){return Nm||(Nm=(async()=>await import(Lm))(),Nm)}function Wm(){Bm=!0,zm&&=(zm.terminate(),null);let e=[...Hm.values()];Hm.clear();for(let t of e)t.resolve(Rm)}function Gm(e){let{id:t,bytes:n,error:r}=e.data??{},i=Hm.get(t);i&&(Hm.delete(t),r?i.reject(Error(r)):i.resolve(n))}function Km(){if(zm)return zm;if(Bm||typeof Worker>`u`)return null;try{zm=new Worker(nr(new URL(Lm,import.meta.url)),{type:`module`})}catch{return Bm=!0,null}return zm.addEventListener(`message`,Gm),zm.addEventListener(`error`,Wm),zm.addEventListener(`messageerror`,Wm),zm}function qm(e){let t=Km();return t?new Promise((n,r)=>{let i=++Vm;Hm.set(i,{resolve:n,reject:r});try{t.postMessage({id:i,bytes:e})}catch{Hm.delete(i),Wm(),n(Rm)}}):Promise.resolve(Rm)}async function Jm(){await Im();let e=Pm();return e?{kind:`native`,format:e}:{kind:`fallback`}}function Ym(){return Mm||(Mm=Jm(),Mm)}async function Xm(e,t=()=>!0){let n=()=>{if(!t())throw new DOMException(`Bundle decode cancelled`,`AbortError`)};n();let r=await Ym();if(n(),r.kind===`native`)return Fm(r.format,e);let i=await qm(e);return n(),i===Rm?(await Um()).brotliDecompress(e):i}Ym().catch(()=>{});var Zm=document.querySelector(`#drop-zone`),z=document.querySelector(`#report`),Qm=document.querySelector(`app-sidebar`);function $m(e,t){let n=URL.createObjectURL(e),r=document.createElement(`span`);r.style.display=`none`,N(A`<a href="${n}" download="${t}"></a>`,r),document.body.append(r),r.firstElementChild.click(),r.remove(),URL.revokeObjectURL(n)}function eh(e){return Error(`Another dialog is already open. Close it and try again.`,{cause:e})}var th={get state(){return F},listWorkspaces:R,addReportToWorkspace:hu,addBundleToWorkspace:vu,onReportMembershipChanged:Ll,onBundleMembershipChanged:Rl,onWorkspaceDeleted:Fl,onWorkspacePrivateKeyChanged:Il,analyzeContent:Vu,setCount:zu,gunzipBytes:wn,listBundles:ol,listFiles:Vc,readBundle:fl,readFileBytes:Gc,saveBundle:ul,saveFileBytes:qc,onFileMutated:zc,async saveTriage(){return await Ad(),Dd()},getSecureItem:Va,setSecureItem:Ha,removeSecureItem:Ua,onSecureStorageHydrated:La};function nh(e){e.installSyncHost(th),pd(()=>e.triageSync.notify())}var B=null,rh=null;function ih(){try{return Va(`deepview.sync.userEnabled`)!==`0`}catch{return!0}}var ah=!1;function oh(e){ah=!!e}function sh(){if(ah||F.serverMode!==`e2e`)return!0;try{return dn()?.mode===`managed`}catch{return!1}}function ch(){return rh||(sh()&&!B?Promise.resolve(null):(rh=(async()=>{try{let e=await import(`./client-sync.js`);return nh(e),B=e,dh(),e}catch(e){throw rh=null,e}})(),rh))}var lh=[];function uh(e){B?e(B):lh.push(e)}function dh(){let e=lh.splice(0);for(let t of e)try{t(B)}catch(e){console.warn(`client-sync: deferred apply failed:`,e)}}function fh(e,t){let n={cancelled:!1,unsub:null};return uh(r=>{n.cancelled||(n.unsub=t(r,e))}),()=>{n.cancelled=!0,n.unsub&&n.unsub()}}function ph(e,t){return B?B.isInRemote(e,t):!1}function mh(e,t){return B?B.isBundleInRemote(e,t):!1}var hh=`deepview.objstore-presence.`;function gh(e){try{let t=localStorage.getItem(hh+e);if(!t)return null;let n=JSON.parse(t);return n&&typeof n==`object`?n:null}catch{return null}}function _h(e,t){if(B&&B.isInRemote(e,t))return!0;let n=gh(e);return!n||typeof n.names!=`object`?!1:Object.values(n.names).includes(t)}function vh(e,t){if(B&&B.isBundleInRemote(e,t))return!0;let n=gh(e);return!n||typeof n.bundles!=`object`?!1:Object.values(n.bundles).includes(t)}function yh(e){return B?B.remoteCount(e):0}function bh(e){return B?B.differingReports(e):[]}function xh(e){return fh(e,(e,t)=>e.onAutoDownloaded(t))}function Sh(e){return fh(e,(e,t)=>e.onBundleAutoDownloaded(t))}function Ch(e){return fh(e,(e,t)=>e.onChange(t))}var wh=null,Th=null,Eh=null,Dh=[];function Oh(e){if(B){B.setRedraw(e);return}wh=e,uh(t=>{wh===e&&t.setRedraw(e)})}function kh(e){if(B){B.setAuthenticationResolver(e);return}Th=e,uh(t=>{Th===e&&t.setAuthenticationResolver(e)})}function Ah(e){if(B){B.setHydrationConflictResolver(e);return}Eh=e,uh(t=>{Eh===e&&t.setHydrationConflictResolver(e)})}async function jh(e,t){if(sh()||!ih()&&!B)return;let n=await ch();if(n&&!sh())return n[e](...t)}function Mh(...e){return jh(`downloadFileFromRemote`,e)}function Nh(...e){return jh(`fetchBundleFromRemote`,e)}function Ph(...e){return jh(`putFile`,e)}function Fh(...e){return jh(`holdLocalChangeChecks`,e)}function Ih(...e){return jh(`putBundleToRemote`,e)}function Lh(...e){return jh(`deleteFromRemote`,e)}function Rh(...e){return jh(`deleteBundleFromRemote`,e)}function zh(...e){return jh(`openWorkspace`,e)}async function Bh(...e){return(B??(rh?await rh:null))?.closeWorkspace(...e)}function Vh(...e){return jh(`recheckRemoteStorage`,e)}function Hh(...e){return jh(`resolveReportDifference`,e)}function Uh(e,t){if(B)return B.triageSync[e](...t);uh(n=>{n.triageSync[e](...t)})}var V={get status(){return B?B.triageSync.status:`off`},get openSessions(){return B?B.triageSync.openSessions:[]},get persistenceDegraded(){return B?B.triageSync.persistenceDegraded:!1},get proxyAuthRequired(){return B?B.triageSync.proxyAuthRequired:!1},setEnabled(e){if(e===!0)return sh()?Promise.resolve(null):ch().then(e=>{e.triageSync.setEnabled(!0);let t=Dh;Dh=[];for(let n of t)try{e.openWorkspace(n)}catch(e){console.warn(`client-sync: openWorkspace(${n}) failed during re-enable:`,e)}return null}).catch(e=>(console.warn(`client-sync: setEnabled load failed:`,e),null));if(B){Dh=B.openWorkspaceIds();for(let e of Dh)try{B.closeWorkspace(e)}catch(t){console.warn(`client-sync: closeWorkspace(${e}) failed during disable:`,t)}B.triageSync.setEnabled(!1);return}Uh(`setEnabled`,[e])},isEnabled(){return B?B.triageSync.isEnabled():ih()},openSession(e){Uh(`openSession`,[e])},closeSession(e){Uh(`closeSession`,[e])},refreshSession(e){Uh(`refreshSession`,[e])},dismissError(e){Uh(`dismissError`,[e])},setForcedOff(e){Uh(`setForcedOff`,[e])},setProtocolLocked(e){Uh(`setProtocolLocked`,[e])},setServerUrl(e){Uh(`setServerUrl`,[e])},getServerUrl(){return B?B.triageSync.getServerUrl():null},notify(){Uh(`notify`,[])},onStatusChange(e){return fh(e,(e,t)=>e.triageSync.onStatusChange(t))},onServerInfo(e){return fh(e,(e,t)=>e.triageSync.onServerInfo(t))},onPersistenceDegraded(e){return fh(e,(e,t)=>e.triageSync.onPersistenceDegraded(t))},onProxyAuthRequired(e){return fh(e,(e,t)=>e.triageSync.onProxyAuthRequired(t))}},Wh=class extends pa{_disposers=[];observes=null;connectedCallback(){super.connectedCallback(),this.bindState()}bindState(){if(this.observes){this._disposers.push(Ms(e=>{this.observes(),e||this.requestUpdate()}));return}this._render||(this._render=this.render,this.render=()=>{let e,t=Ms(n=>{if(!n){t(),this._dispose===t&&(this._dispose=null),this.updateComplete.then(()=>this.requestUpdate());return}e=this._render()});return this._dispose=t,e}),this._disposers.push(()=>this._dispose&&this._dispose())}disconnectedCallback(){for(super.disconnectedCallback();this._disposers.length>0;)this._disposers.pop()()}};function Gh(e){return e===`completed`||e===`not_planned`||e===`duplicate`?e:`unknown`}function Kh(e){let[t,n,r]=e.split(`/`);return r===void 0&&t!==void 0&&n!==void 0&&t.length<=39&&/^[a-zA-Z\d](?:-?[a-zA-Z\d])*$/u.test(t)&&n.length<=100&&n!==`.`&&n!==`..`&&/^[a-zA-Z\d._-]+$/u.test(n)}function qh(e,t){if(typeof e!=`string`||e.length>2048)return null;let n;try{n=new URL(e)}catch{return null}if(n.href!==e||n.origin!==`https://github.com`||n.username||n.password)return null;let r=t.exec(n.pathname);if(!r)return null;let i=`${r[1]}/${r[2]}`,a=Number(r[3]);return!Kh(i)||!Number.isSafeInteger(a)||a<=0?null:{repo:i,number:a}}function Jh(e){return qh(e,/^\/([^/]+)\/([^/]+)\/pull\/(\d+)(?:\/(?:files|commits|checks))?\/?$/u)}function Yh(e){return qh(e,/^\/([^/]+)\/([^/]+)\/issues\/(\d+)\/?$/u)}function Xh(e){let t=Jh(e);if(t)return{...t,kind:`pull`};let n=Yh(e);return n?{...n,kind:`issue`}:null}function Zh(e){return`${e.repo.toLowerCase()}#${e.kind}:${e.number}`}function Qh(e){return I()&&F.currentManagedTeam&&F.managedSession&&!F.managedSession.publicShare?F.managedIssues.get(e?.id)??null:null}function $h(e){return Qh(e)?.autoFix??``}function eg(e,t={},n){let r=!1;for(let i of e){if(n&&F.managedIssues.get(i)!==n.get(i))continue;let e=Object.hasOwn(t,i)?t[i]:null,a=Yh(e?.url)?{url:e.url,autoFix:Jh(e.autoFix)?e.autoFix:null}:null,o=F.managedIssues.get(i);o?.url===a?.url&&o?.autoFix===a?.autoFix||(a?F.managedIssues.set(i,a):F.managedIssues.delete(i),r=!0)}return r}function tg(e){return Object.fromEntries(Object.entries(e).filter(([e,t])=>e.startsWith(`revalidate`)&&t!=null))}function ng(e,t,n){let r=tg(t);if(!e._revalidationCopies){let t=tg(e);if(Object.keys(t).length===0&&Object.keys(r).length===0)return[];e._revalidationCopies=Object.keys(t).length>0?[{reportName:e._reportName??``,fields:t}]:[]}return Object.keys(r).length>0&&e._revalidationCopies.push({reportName:n,fields:r}),e._revalidationCopies}function rg(e){let t=new Map,n=new Set(Pi);for(let{reportName:r,fields:i}of e)for(let[e,a]of Object.entries(i)){if(a==null)continue;let o=e===`revalidate`?Fi(i)||String(a).trim().toLowerCase():String(a).trim();if(e===`revalidate`&&!o||e===`revalidate`&&!n.has(o))continue;t.has(e)||t.set(e,new Map);let s=t.get(e);s.has(o)||s.set(o,new Set),s.get(o).add(r)}return[...t].filter(([,e])=>e.size>1).map(([e,t])=>({field:e,variants:[...t].map(([e,t])=>({value:e,reports:[...t]}))}))}var ig=new Set([`correctedSeverity`,`correctedSeverityReason`,`isApp`,`isUpstream`,`isSecurity`,`source`]);function ag(e,t){if(!e||!t||e===t)return!1;let n=!1;for(let[r,i]of Object.entries(t)){if(r.startsWith(`_`)||ig.has(r)||i==null)continue;if(r===`revalidate`){let a=Fi(t);if(!a)continue;let o=Fi(e);o?o!==a&&(n=!0):e[r]=i;continue}let a=e[r];if(a==null){e[r]=i;continue}r.startsWith(`revalidate`)&&String(a).trim()!==String(i).trim()&&(n=!0)}return n}function og(e,t,n,r){if(!e||!t||e===t)return;(e.correctedSeverity||t.correctedSeverity)&&(e._correctedByReport??={[e._reportName??``]:{severity:ji(e),reason:e.correctedSeverityReason}},e._correctedByReport[n]={severity:ji(t),reason:t.correctedSeverityReason});let i=ng(e,t,n);(ag(e,t)||r.has(e.id))&&r.set(e.id,{finding:e,copies:i})}function sg(e,t=null){let n=t??e.filter(e=>e.isApp),r=e.filter(e=>!e.isApp);if(n.length===0||r.length===0||t&&e.some(e=>e.isApp)||r.some(e=>typeof e.id!=`string`||!e.id))return[e];let i=new Set(r.map(e=>e.id)),a=new Map,o=new Set;for(let t of n){let n=t.revalidateInputs===void 0?[]:t.revalidateInputs;if(!Array.isArray(n))return[e];for(let t of n){if(!i.has(t))return[e];o.add(t)}a.set(t,n)}if(o.size!==i.size)return[e];let s=new Map([...i].map(e=>[e,e])),c=e=>{let t=e;for(;s.get(t)!==t;)t=s.get(t);for(;s.get(e)!==t;){let n=s.get(e);s.set(e,t),e=n}return t};for(let e of a.values()){if(e.length===0)continue;let t=c(e[0]);for(let n of e)s.set(c(n),t)}let l=new Map;for(let t of e){let e=a.get(t),n=e?e.length>0?c(e[0]):t:c(t.id);l.has(n)||l.set(n,[]),l.get(n).push(t)}return l.size===1?[e]:[...l.values()]}function cg(e,{showRevalidation:t=!0,upstreamOnly:n=!1,hideRuledOut:r=!1,merges:i=[]}={}){let a=[],o=new Set;for(let i=0;i<e.length;i++){let s=e[i];for(let e of s.groups){for(let t of e)t.id&&[`refuted`,`unreachable`].includes(Fi(t))&&o.add(t.id);let c=n?e.filter(e=>e.isUpstream&&Fi(e)!==`revalidation`).map(ug):t?r?e.filter(e=>![`refuted`,`unreachable`].includes(Fi(e))):e:e.filter(e=>Fi(e)!==`revalidation`).map(ug),l=c.length===e.length&&c.every((t,n)=>t===e[n])?e:c;l.length>0&&a.push({group:l,sourceGroup:e,reportIndex:i,reportName:s.fileName??``,hasApp:l.some(e=>e.isApp)})}}let s=a.map((e,t)=>t),c=a.map(e=>e.hasApp),l=e=>{let t=e;for(;s[t]!==t;)t=s[t];for(;s[e]!==t;){let n=s[e];s[e]=t,e=n}return t},u=(e,t)=>{e=l(e),t=l(t),e!==t&&(s[t]=e,c[e]||=c[t])},d=new Map;for(let e=0;e<a.length;e++)for(let t of a[e].group)t.id&&(d.has(t.id)||d.set(t.id,[]),d.get(t.id).push({index:e,app:t.isApp}));for(let e of d.values()){let t=new Map,n=e.find(e=>e.app);for(let{index:r}of e){n&&u(n.index,r);let e=a[r].reportIndex;t.has(e)?u(t.get(e),r):t.set(e,r)}}for(let e of d.values()){let t=null;for(let{index:n}of e)c[l(n)]||(t===null?t=n:u(t,n))}for(let e of i){let t=null;for(let n of e)for(let{index:e}of d.get(n)??[])t===null?t=e:u(t,e)}let f=new Map;for(let e=0;e<a.length;e++){let t=l(e);f.has(t)||f.set(t,[]),f.get(t).push(a[e])}let p=new Map,m=[];for(let r of f.values()){let a=r[0].group,o=a.map(e=>e.id).filter(Boolean);if(r.length===1&&new Set(o).size===o.length&&i.length===0){let i=e.length>1&&a.find(e=>e.isApp);if(i){let e=[...a];e.workspaceKey=i.id??String(i._id),m.push(...lg(r,e,t,n))}else m.push(...lg(r,a,t,n));continue}let s=new Map,c=new Map,l=[];for(let{group:e,reportName:t}of r)for(let n of e)if(n.id&&c.has(n.id))og(c.get(n.id),n,t,s);else{let e={...n,_reportName:n._reportName??t};n.id&&c.set(n.id,e),l.push(e)}let u=new Set;for(let e of i)for(let t of e)c.has(t)&&u.add(t);for(let{group:e}of r)if(e.length>1)for(let t of e)t.id&&u.add(t.id);let d=[...u].map(e=>c.get(e));for(let e of l)u.has(e.id)||d.push(e);if(e.length>1){let e=d.find(e=>e.isApp);e&&(d.workspaceKey=e.id??String(e._id))}m.push(...lg(r,d,t,n));for(let[e,t]of s){let n=p.get(e);p.set(e,n?{finding:n.finding,copies:[...n.copies,...t.copies]}:t)}}return Object.defineProperty(m,"ruledOutIds",{value:o,configurable:!0}),{groups:m,conflicts:p}}function lg(e,t,n,r){if(n)return[t];if(r){let n=sg(e.flatMap(e=>e.sourceGroup));if(n.length===1)return[t];let r=[],i=new Set;for(let e of n){let n=new Set(e.filter(e=>!e.isApp&&e.id).map(e=>e.id)),a=t.filter(e=>n.has(e.id));if(a.length>0){r.push(a);for(let e of a)i.add(e.id)}}let a=new Set(t.map(e=>e.id).filter(Boolean));return i.size===a.size?r:[t]}return sg(t,e.flatMap(e=>e.sourceGroup.filter(e=>e.isApp)))}function ug(e){let t=Object.keys(e).filter(e=>e.startsWith(`revalidate`)||e===`_revalidationCopies`);if(t.length===0)return e;let n={...e};for(let e of t)delete n[e];return n}function dg(e,t=Yd){let n=xu(Su(e.flat()));return{linkedIds:e=>[...cd(e),...n.linkedIds(e)],knownRows:e=>{let r=[...t(e),...Xd(e)];for(let e of r)for(let t of Su(e.members))n.add(t);return r}}}var fg=null,pg=0;function mg(){return F.currentView===`links`&&fg?.owner===F.currentLinks?fg:null}function hg(){pg++,fg=null}async function gg(e,t,n,r){if(F.currentView!==`links`||!F.currentLinks)return;let i=js(F.currentLinks),a=++pg;fg={owner:i,id:e,reportName:t,group:null,error:``},F.focusCodeStack=[],F.focusCodeAt=0;let o=()=>a===pg&&F.currentView===`links`&&F.currentLinks===i;try{if(I()){let a=Yd([e]).find(e=>e.report===t&&(!r||e.managedReportId===r)&&(n==null||e.index===Number(n)));if(!a)throw Error(`This finding is no longer in the report.`);fg={owner:i,id:e,reportName:t,group:a.members.map(e=>({...e})),error:``},F.activeTabByGroup.set(a.members[0].id,e);return}let a=await Ti(await Wc(t));if(!o())return;let s=(bi(a?.data)??[]).map(e=>Array.isArray(e)?e:[e]),c=t=>t?.some(t=>String(t?.id)===e),l=c(s[n])?s[n]:s.find(c);if(!l)throw Error(`This finding is no longer in the report.`);let{data:u}=a,d=l.filter(e=>e?.id).map(e=>{let n={...e,_reportName:t,_repoFallback:gi(u)??Xs(t),_repoDirectory:_i(u?.repo),_bundleHashes:u.bundleHashes??[],_source:e.source??u.source??null};return hi(n,u),n._analyzer=n._source??n.type??null,`isApp`in n||(n.isApp=Ii(n,n._source)),n});if(await Promise.all([Pd(),zr(`report`,t),...ap(t).map(e=>zr(`workspace`,e.id))]),o()){let t=(e,t)=>t.includes(e.id)||Array.isArray(e.revalidateInputs)&&e.revalidateInputs.some(e=>t.includes(e));yi([d],dg([d],e=>[...Yd(e),...F.reports.flatMap(e=>e.groups??[]).filter(n=>n.some(n=>t(n,e))).map(e=>({members:e}))])),fg.group=d,F.activeTabByGroup.set(d[0].id,e)}}catch(e){o()&&(fg.error=e.message||`Unable to load this finding.`)}}function _g(e,t,n,r=n){let i=e.map((e,t)=>t),a=e=>{for(;i[e]!==e;)i[e]=i[i[e]],e=i[e];return e},o=e.map(n),s=new Map;for(let e=0;e<o.length;e++)for(let t of o[e])t.id&&(s.has(t.id)||s.set(t.id,[]),s.get(t.id).push(e));for(let[e,n]of s)for(let r of t(e))if(r!==e)for(let e of n)for(let t of s.get(r)??[]){let n=a(e),r=a(t);n!==r&&(i[r]=n)}let c=new Map;for(let t=0;t<e.length;t++){let e=a(t);c.has(e)||c.set(e,[]),c.get(e).push(t)}if(c.size===e.length)return e;let l=e=>e.id??String(e._id),u=[...c.values()].map(t=>{if(t.length===1)return e[t[0]];let n=new Map;for(let i of t)for(let t of r(e[i]))n.has(l(t))||n.set(l(t),t);let i=new Map;for(let r of t)for(let t of e[r])i.has(l(t))||i.set(l(t),n.get(l(t))??t);let a=[...i.values()],o=e[t[0]];return a.workspaceKey=o.workspaceKey??l(o[0]),a.linkedTabs=[...n.values()],a});return Object.defineProperty(u,"ruledOutIds",{value:e.ruledOutIds,configurable:!0}),u}function H(e){return e.workspaceKey??T(e[0])}function vg(e){return Array.isArray(e)?e:[e]}function yg(){return F.revalidationDetailed===!0}function bg(e){return e?._reportName??``}var xg=null,Sg=!0;function Cg(){let e=F.reports;return!Array.isArray(e)||e.length===0||(e!==xg&&(xg=e,Sg=Mr(e)),Sg)}function wg(e){return!e.isUpstream||F.showRevalidation===!1||F.upstreamOnly===!0||!Cg()}function Tg(){let e=F.managedSession;return I()&&(e?.publicShare===!0||!tt(e?.role,`triage`))}function Eg(e){return wg(e)&&!Tg()}function U(e){if(!wg(e))return;let t=F.triage.get(T(e)),n=t?.triage===`ignored`&&o(e,An())?{...t,triage:void 0}:t;if(!I())return n;let r=F.managedComments?.get(e.id)??[];return r.length===0&&!n?.comment?n:{...n,comment:r.map(e=>e.authorLogin?`${e.authorLogin}: ${e.body}`:e.body).join(`
3
+ `))if(t.trim())return t.trim();return``}function sp(e){let t=new Set(e.map(e=>e.id)),n=new Map;for(let e of F.reports)for(let r of e.groups)for(let e of r){let r=e.id??String(e._id);if(t.has(r)&&!n.has(r)&&(n.set(r,{severity:e.severity,file:e.file,line:e.line,description:op(e.description)}),n.size===t.size))return n}return n}var cp=`deepview.lastFile`,lp=null;function up(){return lp||(lp=dp(),lp.catch(()=>{lp=null})),lp}async function dp(){try{await Pd()}catch{}let e=await Vc(),t=new Set(e),n=new Set(e),r=new Set;for(let n of e){if(!n.toLowerCase().endsWith(`.deepseek`))continue;let e=n.slice(0,-9)+`.md`;if(t.has(e))continue;let i;try{i=await Wc(n),await Hc(e,i),await Jc(n)}catch(t){console.warn(`migrate: failed to rename ${n} -> ${e}`,t);continue}t.delete(n),t.add(e),r.add(n);let a=Lu(n);if(Bu(n),a===void 0){let{count:t,source:n}=Vu(i);zu(e,t,n)}else{let{source:t}=Vu(i);zu(e,a,t)}let o=Xs(n);o&&(ec(n,``),ec(e,o));let s=!1;for(let[t,r]of[...F.triage])r.ignoredReports?.includes(n)&&(xn(F.triage,t,n,!1),xn(F.triage,t,e,!0,vn(r,n)),s=!0);s&&await Dd();let c=Rd(Va(cp));if(c?.name===n)try{await Ha(cp,Ld(e,c.workspaceId))}catch{}}for(let e of R())for(let t of e.reports){if(!t.toLowerCase().endsWith(`.deepseek`)||!r.has(t)&&n.has(t))continue;let i=t.slice(0,-9)+`.md`;await gu(t,e.id),await hu(i,e.id)}}function fp(){return{...pp,hydrateKey:Ka,localContentSyncStatus:pn,readTriageBlob:async()=>(await u(await Od(),e=>gc(`report`,e,()=>Kc(e)))).entries,reportSyncHash:e=>gc(`report`,e,async()=>mn(await Gc(e)))}}var pp={hasStoredBundleBytes:cl,listBundles:ol,listFiles:Vc,onBundleMutated:Qc,onFileMutated:zc,readBundle:fl,readFile:Kc,withStoredItem:gc,isEncryptionEnabled:yo,isUnlocked:bo,onVaultStateChange:ko,unlockEncryption:jo};function mp(e=pp){let t=()=>e.isEncryptionEnabled()&&!e.isUnlocked(),n=(n,r,i)=>{let a=!1,o=!1,s=e.onVaultStateChange(()=>{a=!0}),c=r===`report`?e.onFileMutated:e.onBundleMutated,l=i===void 0?null:c(e=>{e===i&&(o=!0)});return{check(){if(n?.throwIfAborted(),t()||a)throw Error(`Local data is locked or has changed. Unlock it and select the file again.`);if(o)throw Error(`This local ${r} changed. Select it again before importing.`)},unsubscribe(){s(),l?.()}}},r=async t=>t===`report`?(await e.listFiles()).map(e=>({value:e,label:e})):(await e.listBundles()).map(e=>({value:e.integrity,label:e.name,secondary:e.integrity}));return{get locked(){return t()},async hasData(n){return n===`report`?(await e.listFiles()).length>0:t()?e.hasStoredBundleBytes():(await e.listBundles()).length>0},async list(e){let t=n();try{t.check();let n=await r(e);return t.check(),n}finally{t.unsubscribe()}},unlock(t){return e.unlockEncryption(t)},subscribe(t){let n=e.onVaultStateChange(()=>t()),r=e.onFileMutated(e=>t({kind:`report`,value:e})),i=e.onBundleMutated(e=>t({kind:`bundle`,value:e}));return()=>{n(),r(),i()}},async importItem(t,i,a,{signal:o}={}){let s=n(o,t,i);try{s.check();let{result:n}=await e.withStoredItem(t,i,async()=>{s.check();let n=(await r(t)).find(e=>e.value===i);if(s.check(),!n)throw Error(`This file is no longer in local storage. Select another file.`);let o=t===`report`?await e.readFile(i):await e.readBundle(i);s.check();let c=new File([o],n.label,{type:t===`report`?`text/plain`:`application/octet-stream`});try{let e=Promise.resolve(a(c));return e.catch(()=>{}),{result:e}}finally{s.unsubscribe()}});return n}finally{s.unsubscribe()}}}}function hp(){return typeof navigator<`u`&&typeof navigator.storage==`object`&&navigator.storage!==null}async function gp(){if(!hp()||typeof navigator.storage.persist!=`function`)return!1;try{return await navigator.storage.persist()===!0}catch{return!1}}async function _p(){let e={supported:hp(),persisted:null,usage:null,quota:null};if(!e.supported)return e;if(typeof navigator.storage.persisted==`function`)try{e.persisted=await navigator.storage.persisted()}catch{}if(typeof navigator.storage.estimate==`function`)try{let t=await navigator.storage.estimate();typeof t?.usage==`number`&&(e.usage=t.usage),typeof t?.quota==`number`&&(e.quota=t.quota)}catch{}return e}var vp=`deepview.scan.access`,yp=new Set;function bp(){for(let e of yp)e()}function xp(){return Va(vp)!=null}function Sp(e){try{let t=JSON.parse(Va(vp)),n=t?.provider===`moonshotai`?`moonshot`:t?.provider;return!e||t?.server!==e||typeof t.deepview!=`string`||!t.deepview.trim()||![null,`anthropic`,`openai`,`moonshot`,`openrouter`].includes(n)||typeof t.token!=`string`?null:{...t,provider:n}}catch{return null}}async function Cp({server:e,deepview:t,provider:n,token:r}){await Ha(vp,JSON.stringify({server:e,deepview:t,provider:n,token:r})),bp()}async function wp(){await Ua(vp),bp()}function Tp(e){yp.add(e);let t=La(e);return()=>{yp.delete(e),t()}}var Ep=1;function Dp(){let e=Ed(),t=Ys();return{version:Ep,exportedAt:new Date().toISOString(),triage:e,repoUrls:t}}function Op(){return`deepview-triage-${new Date().toISOString().replaceAll(/[:.]/gu,`-`).slice(0,19)}.json.gz`}async function kp(){let e=Dp();return{blob:new Blob([await Tn(JSON.stringify(e))]),filename:Op()}}async function Ap(e){let t;try{t=await En(new Uint8Array(await e.arrayBuffer()))}catch(e){throw Error(`Failed to gunzip: ${e.message}`,{cause:e})}let n;try{n=JSON.parse(t)}catch(e){throw Error(`Failed to parse JSON: ${e.message}`,{cause:e})}if(!n||typeof n!=`object`)throw Error(`Invalid backup file (not an object)`);if(n.version!==Ep)throw Error(`Unsupported backup version: ${n.version} (expected ${Ep})`);if(!n.triage||typeof n.triage!=`object`)throw Error("Backup is missing the `triage` map");if(!n.repoUrls||typeof n.repoUrls!=`object`)throw Error("Backup is missing the `repoUrls` map");return n}async function jp(e,t){if(![`replace`,`prefer-imported`,`prefer-current`].includes(t))throw Error(`Unknown merge mode: ${t}`);if(!e||typeof e!=`object`)throw Error(`Invalid payload: not an object`);if(!e.triage||typeof e.triage!=`object`||Array.isArray(e.triage))throw Error("Invalid payload: missing or non-object `triage`");if(!e.repoUrls||typeof e.repoUrls!=`object`||Array.isArray(e.repoUrls))throw Error("Invalid payload: missing or non-object `repoUrls`");let n=e.triage,r=F.triage;if(t===`replace`)for(let e of[...r.keys()])bd.test(e)||r.delete(e);let i=t===`prefer-current`;for(let[e,t]of Object.entries(n)){if(bd.test(e)||!t||typeof t!=`object`)continue;typeof t.color==`string`&&t.color&&(!i||!r.get(e)?.color)&&S(r,e,{color:t.color});let n=hn(t);if(n&&(!i||!hn(r.get(e)))&&S(r,e,{triage:n}),typeof t.comment==`string`&&t.comment&&(!i||!r.get(e)?.comment)&&S(r,e,{comment:t.comment}),typeof t.fix==`string`&&t.fix&&(!i||!r.get(e)?.fix)&&S(r,e,{fix:t.fix}),typeof t.flagged==`boolean`&&(!i||r.get(e)?.flagged===void 0)&&S(r,e,{flagged:t.flagged}),Array.isArray(t.ignoredReports)&&gn(r.get(e)))for(let n of t.ignoredReports)typeof n==`string`&&xn(r,e,n,!0,vn(t,n))}await Ad(),await Dd();let a=0,o=null;try{await tc(e.repoUrls,t),a=Object.keys(e.repoUrls).length}catch(e){console.warn(`applyTriageImport: repo-URL import failed:`,e),o=e}return{triageEntries:Object.keys(n).length,repoUrls:a,repoUrlError:o}}function Mp(e){return e?.name===`NotFoundError`||typeof e?.message==`string`&&e.message.startsWith(`File not found:`)}async function Np(e){let t=new Set;for(let n of e){let e;try{e=await Wc(n)}catch(e){if(Mp(e))continue;throw Error(`Failed to read ${n}: ${e.message}`,{cause:e})}if(e==null)continue;let r=await Ti(e);if(r)for(let e of r.findings)e.id&&t.add(e.id)}return t}function Pp(){let e=new Set;for(let t of F.triage.keys())bd.test(t)||e.add(t);return e}async function Fp(e){let t=Pp();if(t.size===0)return{orphanedCount:0,sharedCount:0};let n=await Np(e),r=new Set;for(let e of t)n.has(e)&&r.add(e);if(r.size===0)return{orphanedCount:0,sharedCount:0};let i=await Vc(),a=new Set(e),o=await Np(i.filter(e=>!a.has(e))),s=0,c=0;for(let e of r)o.has(e)?c++:s++;return{orphanedCount:s,sharedCount:c}}async function Ip(){let e=new Set(F.triage.keys()),t=[];for(let[e,n]of F.triage)if(n.ignoredReports)for(let r of n.ignoredReports)t.push({id:e,report:r});let n=await Vc(),r=new Set(n),i=await Np(n),a=!1;for(let t of e){if(bd.test(t)||i.has(t))continue;let e=F.triage.get(t);!e||!(e.color||hn(e)||e.comment||e.fix||e.flagged!==void 0)||S(F.triage,t,{color:void 0,triage:void 0,comment:void 0,fix:void 0,flagged:void 0,deleted:void 0})&&(a=!0)}for(let{id:e,report:n}of t)bd.test(e)||i.has(e)&&r.has(n)||_n(F.triage,e,n)&&xn(F.triage,e,n,!1)&&(a=!0);a&&await Dd()}var Lp=1;async function Rp(e){let t=new Set,n=await Ti(e);for(let e of n?.findings??[])e.id&&t.add(e.id);return t}function zp(e){return(e??``).replaceAll(/[^a-zA-Z0-9._-]+/gu,`_`).replaceAll(/^_+|_+$/gu,``)||`workspace`}async function Bp(e){if(!Array.isArray(e)||e.length===0)return[];let t=await ol(),n=new Map(t.map(e=>[e.integrity,e.name])),r=[];for(let t of e){let e=n.get(t);if(!e)continue;let i;try{i=await fl(t)}catch(e){console.warn(`Workspace export: failed to read bundle ${t}: ${e?.message??e}`);continue}r.push({integrity:t,name:e,data:i.toBase64()})}return r}function Vp(e){let t=Xs(e);return t?{github:t}:null}async function Hp(e){let t=[];for(let n of e.reports??[]){let e;try{e=await Wc(n)}catch(e){console.warn(`Workspace export: skipping ${n}: ${e?.message??e}`),(e instanceof DOMException&&e.name===`NotFoundError`||typeof e?.message==`string`&&e.message.startsWith(`File not found:`))&&await mu(n,null);continue}let r=Vp(n);t.push(r?{name:n,content:e,repo:r}:{name:n,content:e})}return t}async function Up(e,{includeBundleBytes:t=!1}={}){let n=await Hp(e),r=new Set;for(let e of n)for(let t of await Rp(e.content))r.add(t);let i=new Set(e.reports??[]),a={};for(let[e,t]of F.triage){if(!r.has(e))continue;let n=(t.ignoredReports??[]).filter(e=>i.has(e)),o=yn({...t,ignoredReports:n});o&&(a[e]=o)}let o={};for(let e of n)e.repo?.github&&(o[e.name]=e.repo.github);let s=(e.bundles??[]).filter(e=>typeof e==`string`&&e.length>0),c={version:Lp,exportedAt:new Date().toISOString(),workspace:{id:e.id,name:e.name,privateKey:e.privateKey,createdAt:e.createdAt},reports:n,bundles:s,repoUrls:o,triage:a};if(t){let e=await Bp(s);e.length>0&&(c.bundleBlobs=e)}return c}async function Wp(e,{includeBundleBytes:t=!1}={}){let n=await Up(e,{includeBundleBytes:t});return{blob:new Blob([await Tn(JSON.stringify(n))]),filename:`${zp(e.name)}.deepview-workspace.json.gz`}}async function Gp(e,t,{includeBundleBytes:n=!1}={}){if(typeof t!=`string`||!t)throw TypeError(`buildWorkspaceExportEncrypted: password required`);let{blob:r}=await Wp(e,{includeBundleBytes:n}),i=new Uint8Array(await r.arrayBuffer()),a=await v(i,t);return{blob:new Blob([a],{type:`application/octet-stream`}),filename:`${zp(e.name)}.deepview-workspace.enc`}}async function Kp(e,{password:t,includeBundleBytes:n=!1}={}){return typeof t==`string`&&t?await Gp(e,t,{includeBundleBytes:n}):await Wp(e,{includeBundleBytes:n})}async function qp(e){return{reports:await Hp(e)}}async function Jp(e){let t=await qp(e);return{blob:new Blob([await Tn(JSON.stringify(t))]),filename:`${zp(e.name)}.deepview-reports.json.gz`}}function Yp(e){return hn(e)??null}async function Xp(e){let t=new Map;for(let n of e??[]){if(typeof n?.content!=`string`)continue;let e=await Ti(n.content);if(e)for(let n of e.findings)!n.id||t.has(n.id)||t.set(n.id,{severity:n.severity,file:n.file,line:n.line,description:op(n.description)})}return t}async function Zp(e,t,n){if(!e||typeof e!=`object`||Array.isArray(e))return;let r=F.triage,i=[];for(let[t,n]of Object.entries(e)){if(!n||typeof n!=`object`)continue;let e=r.get(t)?.color,a=typeof n.color==`string`?n.color:void 0;a&&e&&e!==a?i.push({id:t,property:`color`,local:e,imported:a}):a&&a!==e&&S(r,t,{color:a});let o=r.get(t)?.comment??``,s=typeof n.comment==`string`?n.comment:``;s&&o&&o!==s?i.push({id:t,property:`comment`,local:o,imported:s}):s&&s!==o&&S(r,t,{comment:s});let c=r.get(t)?.fix??``,l=typeof n.fix==`string`?n.fix:``;l&&c&&c!==l?i.push({id:t,property:`fix`,local:c,imported:l}):l&&l!==c&&S(r,t,{fix:l});let u=Yp(n),d=hn(r.get(t))??null;u&&d&&d!==u?i.push({id:t,property:`triage`,local:d,imported:u}):u&&!d&&S(r,t,{triage:u,...u===`ignored`?{}:{ignoredReports:void 0}});let f=r.get(t)?.flagged,p=typeof n.flagged==`boolean`?n.flagged:void 0;p!==void 0&&f!==void 0&&f!==p?i.push({id:t,property:`flagged`,local:f?`flagged`:`not flagged`,imported:p?`flagged`:`not flagged`}):p!==void 0&&p!==f&&S(r,t,{flagged:p});let m=Array.isArray(n.ignoredReports)?n.ignoredReports:[];if(gn(r.get(t)))for(let e of m)typeof e==`string`&&xn(r,t,e,!0,vn(n,e))}if(i.length>0&&t){let e=await t(i,n??new Map);e&&Qp(i,e)}await Dd()}function Qp(e,t){for(let n of e)t[`${n.id}:${n.property}`]===`imported`&&$p(n.id,n.property)===n.local&&(n.property===`color`?S(F.triage,n.id,{color:n.imported}):n.property===`comment`?S(F.triage,n.id,{comment:n.imported}):n.property===`fix`?S(F.triage,n.id,{fix:n.imported}):n.property===`triage`?S(F.triage,n.id,{triage:n.imported,...n.imported===`ignored`?{}:{ignoredReports:void 0}}):n.property===`flagged`&&S(F.triage,n.id,{flagged:n.imported===`flagged`||n.imported!==`not flagged`&&void 0}))}function $p(e,t){if(t===`color`)return F.triage.get(e)?.color;if(t===`triage`)return hn(F.triage.get(e))??null;if(t===`comment`)return F.triage.get(e)?.comment??``;if(t===`fix`)return F.triage.get(e)?.fix??``;if(t===`flagged`){let t=F.triage.get(e)?.flagged;return t===!0?`flagged`:t===!1?`not flagged`:``}}async function em(e){if(Array.isArray(e))for(let t of e){let e;try{e=Uint8Array.fromBase64(t.data)}catch(e){console.warn(`Workspace import: failed to decode bundle ${t.integrity}: ${e?.message??e}`);continue}try{let n=await ul(t.name,e);n?.integrity!==t.integrity&&console.warn(`Workspace import: bundle ${t.name} integrity mismatch (claimed ${t.integrity}, computed ${n?.integrity})`)}catch(e){console.warn(`Workspace import: failed to save bundle ${t.name}: ${e?.message??e}`)}}}async function tm(e,{conflictResolver:t}={}){let n=[];for(let t of e.reports)if(typeof t?.name==`string`&&typeof t?.content==`string`)try{await Hc(t.name,t.content);let{count:e,source:r}=Vu(t.content);zu(t.name,e,r??Ru(t.name)),n.push(t.name)}catch(e){console.warn(`Workspace import: failed to save ${t.name}: ${e.message}`)}Array.isArray(e.bundleBlobs)&&e.bundleBlobs.length>0&&await em(e.bundleBlobs);let r=e.triage&&Object.keys(e.triage).length>0?await Xp(e.reports):new Map;await Zp((await u(e.triage,t=>e.reports.find(e=>e.name===t)?.content)).entries,t,r);let i=Array.isArray(e.bundles),a=i?e.bundles.filter(e=>typeof e==`string`&&e.length>0):[],o=await su({id:e.workspace.id,name:e.workspace.name,privateKey:e.workspace.privateKey,reports:n,bundles:i?a:void 0,preserveBundles:!i,createdAt:e.workspace.createdAt}),s=new Set(n),c=Object.create(null);if(e.repoUrls&&typeof e.repoUrls==`object`)for(let[t,n]of Object.entries(e.repoUrls))!s.has(t)||typeof n!=`string`||!n||(c[t]=n);if(Object.keys(c).length>0)try{await nc(c)}catch(e){console.warn(`Workspace import: failed to adopt per-report repository URLs:`,e)}return o}function nm(e){return!e||typeof e!=`object`||Array.isArray(e)?`payload is not an object`:e.version!==void 0||e.workspace!==void 0?`payload claims to be a workspace export`:Array.isArray(e.reports)?e.reports.length>y?`reports count (${e.reports.length}) exceeds cap (${y})`:null:`reports field must be an array`}function rm(e){return nm(e)===null}async function im(e){if(_(e))return{kind:`encrypted`};let t;try{t=await En(e)}catch(e){throw Error(`gzip decompression failed: ${e.message}`,{cause:e})}let n;try{n=JSON.parse(t)}catch{return{kind:`workspace`,text:t}}return rm(n)?{kind:`reports`,reports:n.reports}:{kind:`workspace`,text:t}}var am=`deepview.workspaceApp`,om=2,sm=new Set,cm=new Set,lm=0,um=0,dm=0,fm=new Map,pm=Promise.resolve(),mm=null;function hm(e=Va(am)){try{let t=JSON.parse(e);if(t?.version===om&&t.entries&&typeof t.entries==`object`)return t}catch{}return{version:om,revision:``,links:`[]`,entries:{}}}function gm(){for(let e of sm)e()}function _m(e){let t=pm.then(()=>Qa(am,t=>e(hm(t))));return pm=t.catch(e=>console.warn(`workspace App cache:`,e)),t}function vm(e){return JSON.stringify(e.reports.toSorted())}function ym(){return JSON.stringify(od().map(({name:e,groups:t})=>({name:e,groups:t})))}function bm(e){return nd()&&e.links===ym()}function xm(e,t){return e.workspaceRevisions?.[t]??``}function Sm(e,t,n){return n.workspaceId===t?.id&&n.workspaceEpoch===(fm.get(t?.id)??0)&&n.workspaceRevision===xm(e,t?.id)}function Cm(e,t,n){return n.reportEpoch===dm&&n.reportRevision===(e.reportRevision??e.revision)&&Sm(e,t,n)}function wm(e,t){return Cm(hm(),e,t)}function Tm(e,t){if(lm||cm.has(e.id))return null;let n=t.entries[e.id];return!n||n.reports!==vm(e)||typeof n.appMode!=`boolean`||n.appMode&&(!Number.isSafeInteger(n.appFindings)||n.appFindings<0)?null:n}function Em(e){return Tm(e,hm())?.appMode??null}function Dm(e){let t=hm(),n=Tm(e,t);return!n||!bm(t)?null:n}async function Om(e,t=null){let n;do n=pm,await n;while(n!==pm);let r=hm(),i=r.reportRevision??r.revision;return t&&(!Cm(r,e,t)||!bm(r))?null:{epoch:um,revision:r.revision,reportEpoch:dm,reportRevision:i,workspaceId:e?.id,workspaceEpoch:fm.get(e?.id)??0,workspaceRevision:xm(r,e?.id)}}async function km(e,t,n){let r=!1;return await _m(i=>{if(n.epoch!==um||n.revision!==i.revision||!Sm(i,e,n)||!bm(i))return;let a=R().find(t=>t.id===e.id);if(a&&vm(a)===vm(e))return i.entries[e.id]={...t,reports:vm(e)},r=!0,JSON.stringify(i)}),r&&gm(),r}function Am(e=null,t){if(e?.length===0)return Promise.resolve();if(e===null)um++,t===void 0&&dm++,lm++;else for(let t of e)fm.set(t,(fm.get(t)??0)+1),cm.add(t);return gm(),_m(n=>{if(n.reportRevision??=n.revision,e===null)n.revision=crypto.randomUUID(),t===void 0&&(n.reportRevision=n.revision),n.entries={};else{n.workspaceRevisions??={};for(let t of e)n.workspaceRevisions[t]=crypto.randomUUID(),delete n.entries[t]}return t!==void 0&&(n.links=t),JSON.stringify(n)}).finally(()=>{if(e===null)lm--;else for(let t of e)cm.delete(t);gm()})}function jm(e){return sm.add(e),()=>sm.delete(e)}La(()=>{let e=Va(am);e!==mm&&(mm=e,gm())}),Ll(e=>{Am([e]).catch(()=>{})}),Fl(e=>{Am([e]).catch(()=>{})}),zc(e=>{Am(R().filter(t=>t.reports.includes(e)).map(e=>e.id)).catch(()=>{})}),rd(()=>{if(!nd()){gm();return}let e=ym();hm().links===e?gm():Am(null,e).catch(()=>{})});var Mm=null,Nm=null;function Pm(){for(let e of[`br`,`brotli`])try{return new DecompressionStream(e),e}catch{}return null}async function Fm(e,t){let n=new Blob([t]).stream().pipeThrough(new DecompressionStream(e));return new Uint8Array(await new Response(n).arrayBuffer())}async function Im(){if(`serviceWorker`in navigator)try{let e=await navigator.serviceWorker.getRegistrations();for(let t of e){let e=t.active?.scriptURL??t.installing?.scriptURL??t.waiting?.scriptURL;e&&e.endsWith(`/brotli-sw.js`)&&await t.unregister()}}catch{}}var Lm=`./brotli-fallback.js`,Rm=Symbol(`brotli worker unavailable`),zm=null,Bm=!1,Vm=0,Hm=new Map;function Um(){return Nm||(Nm=(async()=>await import(Lm))(),Nm)}function Wm(){Bm=!0,zm&&=(zm.terminate(),null);let e=[...Hm.values()];Hm.clear();for(let t of e)t.resolve(Rm)}function Gm(e){let{id:t,bytes:n,error:r}=e.data??{},i=Hm.get(t);i&&(Hm.delete(t),r?i.reject(Error(r)):i.resolve(n))}function Km(){if(zm)return zm;if(Bm||typeof Worker>`u`)return null;try{zm=new Worker(nr(new URL(Lm,import.meta.url)),{type:`module`})}catch{return Bm=!0,null}return zm.addEventListener(`message`,Gm),zm.addEventListener(`error`,Wm),zm.addEventListener(`messageerror`,Wm),zm}function qm(e){let t=Km();return t?new Promise((n,r)=>{let i=++Vm;Hm.set(i,{resolve:n,reject:r});try{t.postMessage({id:i,bytes:e})}catch{Hm.delete(i),Wm(),n(Rm)}}):Promise.resolve(Rm)}async function Jm(){await Im();let e=Pm();return e?{kind:`native`,format:e}:{kind:`fallback`}}function Ym(){return Mm||(Mm=Jm(),Mm)}async function Xm(e,t=()=>!0){let n=()=>{if(!t())throw new DOMException(`Bundle decode cancelled`,`AbortError`)};n();let r=await Ym();if(n(),r.kind===`native`)return Fm(r.format,e);let i=await qm(e);return n(),i===Rm?(await Um()).brotliDecompress(e):i}Ym().catch(()=>{});var Zm=document.querySelector(`#drop-zone`),z=document.querySelector(`#report`),Qm=document.querySelector(`app-sidebar`);function $m(e,t){let n=URL.createObjectURL(e),r=document.createElement(`span`);r.style.display=`none`,N(A`<a href="${n}" download="${t}"></a>`,r),document.body.append(r),r.firstElementChild.click(),r.remove(),URL.revokeObjectURL(n)}function eh(e){return Error(`Another dialog is already open. Close it and try again.`,{cause:e})}var th={get state(){return F},listWorkspaces:R,addReportToWorkspace:hu,addBundleToWorkspace:vu,onReportMembershipChanged:Ll,onBundleMembershipChanged:Rl,onWorkspaceDeleted:Fl,onWorkspacePrivateKeyChanged:Il,analyzeContent:Vu,setCount:zu,gunzipBytes:wn,listBundles:ol,listFiles:Vc,readBundle:fl,readFileBytes:Gc,saveBundle:ul,saveFileBytes:qc,onFileMutated:zc,async saveTriage(){return await Ad(),Dd()},getSecureItem:Va,setSecureItem:Ha,removeSecureItem:Ua,onSecureStorageHydrated:La};function nh(e){e.installSyncHost(th),pd(()=>e.triageSync.notify())}var B=null,rh=null;function ih(){try{return Va(`deepview.sync.userEnabled`)!==`0`}catch{return!0}}var ah=!1;function oh(e){ah=!!e}function sh(){if(ah||F.serverMode!==`e2e`)return!0;try{return dn()?.mode===`managed`}catch{return!1}}function ch(){return rh||(sh()&&!B?Promise.resolve(null):(rh=(async()=>{try{let e=await import(`./client-sync.js`);return nh(e),B=e,dh(),e}catch(e){throw rh=null,e}})(),rh))}var lh=[];function uh(e){B?e(B):lh.push(e)}function dh(){let e=lh.splice(0);for(let t of e)try{t(B)}catch(e){console.warn(`client-sync: deferred apply failed:`,e)}}function fh(e,t){let n={cancelled:!1,unsub:null};return uh(r=>{n.cancelled||(n.unsub=t(r,e))}),()=>{n.cancelled=!0,n.unsub&&n.unsub()}}function ph(e,t){return B?B.isInRemote(e,t):!1}function mh(e,t){return B?B.isBundleInRemote(e,t):!1}var hh=`deepview.objstore-presence.`;function gh(e){try{let t=localStorage.getItem(hh+e);if(!t)return null;let n=JSON.parse(t);return n&&typeof n==`object`?n:null}catch{return null}}function _h(e,t){if(B&&B.isInRemote(e,t))return!0;let n=gh(e);return!n||typeof n.names!=`object`?!1:Object.values(n.names).includes(t)}function vh(e,t){if(B&&B.isBundleInRemote(e,t))return!0;let n=gh(e);return!n||typeof n.bundles!=`object`?!1:Object.values(n.bundles).includes(t)}function yh(e){return B?B.remoteCount(e):0}function bh(e){return B?B.differingReports(e):[]}function xh(e){return fh(e,(e,t)=>e.onAutoDownloaded(t))}function Sh(e){return fh(e,(e,t)=>e.onBundleAutoDownloaded(t))}function Ch(e){return fh(e,(e,t)=>e.onChange(t))}var wh=null,Th=null,Eh=null,Dh=[];function Oh(e){if(B){B.setRedraw(e);return}wh=e,uh(t=>{wh===e&&t.setRedraw(e)})}function kh(e){if(B){B.setAuthenticationResolver(e);return}Th=e,uh(t=>{Th===e&&t.setAuthenticationResolver(e)})}function Ah(e){if(B){B.setHydrationConflictResolver(e);return}Eh=e,uh(t=>{Eh===e&&t.setHydrationConflictResolver(e)})}async function jh(e,t){if(sh()||!ih()&&!B)return;let n=await ch();if(n&&!sh())return n[e](...t)}function Mh(...e){return jh(`downloadFileFromRemote`,e)}function Nh(...e){return jh(`fetchBundleFromRemote`,e)}function Ph(...e){return jh(`putFile`,e)}function Fh(...e){return jh(`holdLocalChangeChecks`,e)}function Ih(...e){return jh(`putBundleToRemote`,e)}function Lh(...e){return jh(`deleteFromRemote`,e)}function Rh(...e){return jh(`deleteBundleFromRemote`,e)}function zh(...e){return jh(`openWorkspace`,e)}async function Bh(...e){return(B??(rh?await rh:null))?.closeWorkspace(...e)}function Vh(...e){return jh(`recheckRemoteStorage`,e)}function Hh(...e){return jh(`resolveReportDifference`,e)}function Uh(e,t){if(B)return B.triageSync[e](...t);uh(n=>{n.triageSync[e](...t)})}var V={get status(){return B?B.triageSync.status:`off`},get openSessions(){return B?B.triageSync.openSessions:[]},get persistenceDegraded(){return B?B.triageSync.persistenceDegraded:!1},get proxyAuthRequired(){return B?B.triageSync.proxyAuthRequired:!1},setEnabled(e){if(e===!0)return sh()?Promise.resolve(null):ch().then(e=>{e.triageSync.setEnabled(!0);let t=Dh;Dh=[];for(let n of t)try{e.openWorkspace(n)}catch(e){console.warn(`client-sync: openWorkspace(${n}) failed during re-enable:`,e)}return null}).catch(e=>(console.warn(`client-sync: setEnabled load failed:`,e),null));if(B){Dh=B.openWorkspaceIds();for(let e of Dh)try{B.closeWorkspace(e)}catch(t){console.warn(`client-sync: closeWorkspace(${e}) failed during disable:`,t)}B.triageSync.setEnabled(!1);return}Uh(`setEnabled`,[e])},isEnabled(){return B?B.triageSync.isEnabled():ih()},openSession(e){Uh(`openSession`,[e])},closeSession(e){Uh(`closeSession`,[e])},refreshSession(e){Uh(`refreshSession`,[e])},dismissError(e){Uh(`dismissError`,[e])},setForcedOff(e){Uh(`setForcedOff`,[e])},setProtocolLocked(e){Uh(`setProtocolLocked`,[e])},setServerUrl(e){Uh(`setServerUrl`,[e])},getServerUrl(){return B?B.triageSync.getServerUrl():null},notify(){Uh(`notify`,[])},onStatusChange(e){return fh(e,(e,t)=>e.triageSync.onStatusChange(t))},onServerInfo(e){return fh(e,(e,t)=>e.triageSync.onServerInfo(t))},onPersistenceDegraded(e){return fh(e,(e,t)=>e.triageSync.onPersistenceDegraded(t))},onProxyAuthRequired(e){return fh(e,(e,t)=>e.triageSync.onProxyAuthRequired(t))}},Wh=class extends pa{_disposers=[];observes=null;connectedCallback(){super.connectedCallback(),this.bindState()}bindState(){if(this.observes){this._disposers.push(Ms(e=>{this.observes(),e||this.requestUpdate()}));return}this._render||(this._render=this.render,this.render=()=>{let e,t=Ms(n=>{if(!n){t(),this._dispose===t&&(this._dispose=null),this.updateComplete.then(()=>this.requestUpdate());return}e=this._render()});return this._dispose=t,e}),this._disposers.push(()=>this._dispose&&this._dispose())}disconnectedCallback(){for(super.disconnectedCallback();this._disposers.length>0;)this._disposers.pop()()}};function Gh(e){return e===`completed`||e===`not_planned`||e===`duplicate`?e:`unknown`}function Kh(e){let[t,n,r]=e.split(`/`);return r===void 0&&t!==void 0&&n!==void 0&&t.length<=39&&/^[a-zA-Z\d](?:-?[a-zA-Z\d])*$/u.test(t)&&n.length<=100&&n!==`.`&&n!==`..`&&/^[a-zA-Z\d._-]+$/u.test(n)}function qh(e,t){if(typeof e!=`string`||e.length>2048)return null;let n;try{n=new URL(e)}catch{return null}if(n.href!==e||n.origin!==`https://github.com`||n.username||n.password)return null;let r=t.exec(n.pathname);if(!r)return null;let i=`${r[1]}/${r[2]}`,a=Number(r[3]);return!Kh(i)||!Number.isSafeInteger(a)||a<=0?null:{repo:i,number:a}}function Jh(e){return qh(e,/^\/([^/]+)\/([^/]+)\/pull\/(\d+)(?:\/(?:files|commits|checks))?\/?$/u)}function Yh(e){return qh(e,/^\/([^/]+)\/([^/]+)\/issues\/(\d+)\/?$/u)}function Xh(e){let t=Jh(e);if(t)return{...t,kind:`pull`};let n=Yh(e);return n?{...n,kind:`issue`}:null}function Zh(e){return`${e.repo.toLowerCase()}#${e.kind}:${e.number}`}function Qh(e){return I()&&F.currentManagedTeam&&F.managedSession&&!F.managedSession.publicShare?F.managedIssues.get(e?.id)??null:null}function $h(e){return Qh(e)?.autoFix??``}function eg(e,t){return t?.fix||$h(e)||Qh(e)?.url||``}function tg(e,t={},n){let r=!1;for(let i of e){if(n&&F.managedIssues.get(i)!==n.get(i))continue;let e=Object.hasOwn(t,i)?t[i]:null,a=Yh(e?.url)?{url:e.url,autoFix:Jh(e.autoFix)?e.autoFix:null}:null,o=F.managedIssues.get(i);o?.url===a?.url&&o?.autoFix===a?.autoFix||(a?F.managedIssues.set(i,a):F.managedIssues.delete(i),r=!0)}return r}function ng(e){return Object.fromEntries(Object.entries(e).filter(([e,t])=>e.startsWith(`revalidate`)&&t!=null))}function rg(e,t,n){let r=ng(t);if(!e._revalidationCopies){let t=ng(e);if(Object.keys(t).length===0&&Object.keys(r).length===0)return[];e._revalidationCopies=Object.keys(t).length>0?[{reportName:e._reportName??``,fields:t}]:[]}return Object.keys(r).length>0&&e._revalidationCopies.push({reportName:n,fields:r}),e._revalidationCopies}function ig(e){let t=new Map,n=new Set(Pi);for(let{reportName:r,fields:i}of e)for(let[e,a]of Object.entries(i)){if(a==null)continue;let o=e===`revalidate`?Fi(i)||String(a).trim().toLowerCase():String(a).trim();if(e===`revalidate`&&!o||e===`revalidate`&&!n.has(o))continue;t.has(e)||t.set(e,new Map);let s=t.get(e);s.has(o)||s.set(o,new Set),s.get(o).add(r)}return[...t].filter(([,e])=>e.size>1).map(([e,t])=>({field:e,variants:[...t].map(([e,t])=>({value:e,reports:[...t]}))}))}var ag=new Set([`correctedSeverity`,`correctedSeverityReason`,`isApp`,`isUpstream`,`isSecurity`,`source`]);function og(e,t){if(!e||!t||e===t)return!1;let n=!1;for(let[r,i]of Object.entries(t)){if(r.startsWith(`_`)||ag.has(r)||i==null)continue;if(r===`revalidate`){let a=Fi(t);if(!a)continue;let o=Fi(e);o?o!==a&&(n=!0):e[r]=i;continue}let a=e[r];if(a==null){e[r]=i;continue}r.startsWith(`revalidate`)&&String(a).trim()!==String(i).trim()&&(n=!0)}return n}function sg(e,t,n,r){if(!e||!t||e===t)return;(e.correctedSeverity||t.correctedSeverity)&&(e._correctedByReport??={[e._reportName??``]:{severity:ji(e),reason:e.correctedSeverityReason}},e._correctedByReport[n]={severity:ji(t),reason:t.correctedSeverityReason});let i=rg(e,t,n);(og(e,t)||r.has(e.id))&&r.set(e.id,{finding:e,copies:i})}function cg(e,t=null){let n=t??e.filter(e=>e.isApp),r=e.filter(e=>!e.isApp);if(n.length===0||r.length===0||t&&e.some(e=>e.isApp)||r.some(e=>typeof e.id!=`string`||!e.id))return[e];let i=new Set(r.map(e=>e.id)),a=new Map,o=new Set;for(let t of n){let n=t.revalidateInputs===void 0?[]:t.revalidateInputs;if(!Array.isArray(n))return[e];for(let t of n){if(!i.has(t))return[e];o.add(t)}a.set(t,n)}if(o.size!==i.size)return[e];let s=new Map([...i].map(e=>[e,e])),c=e=>{let t=e;for(;s.get(t)!==t;)t=s.get(t);for(;s.get(e)!==t;){let n=s.get(e);s.set(e,t),e=n}return t};for(let e of a.values()){if(e.length===0)continue;let t=c(e[0]);for(let n of e)s.set(c(n),t)}let l=new Map;for(let t of e){let e=a.get(t),n=e?e.length>0?c(e[0]):t:c(t.id);l.has(n)||l.set(n,[]),l.get(n).push(t)}return l.size===1?[e]:[...l.values()]}function lg(e,{showRevalidation:t=!0,upstreamOnly:n=!1,hideRuledOut:r=!1,merges:i=[]}={}){let a=[],o=new Set;for(let i=0;i<e.length;i++){let s=e[i];for(let e of s.groups){for(let t of e)t.id&&[`refuted`,`unreachable`].includes(Fi(t))&&o.add(t.id);let c=n?e.filter(e=>e.isUpstream&&Fi(e)!==`revalidation`).map(dg):t?r?e.filter(e=>![`refuted`,`unreachable`].includes(Fi(e))):e:e.filter(e=>Fi(e)!==`revalidation`).map(dg),l=c.length===e.length&&c.every((t,n)=>t===e[n])?e:c;l.length>0&&a.push({group:l,sourceGroup:e,reportIndex:i,reportName:s.fileName??``,hasApp:l.some(e=>e.isApp)})}}let s=a.map((e,t)=>t),c=a.map(e=>e.hasApp),l=e=>{let t=e;for(;s[t]!==t;)t=s[t];for(;s[e]!==t;){let n=s[e];s[e]=t,e=n}return t},u=(e,t)=>{e=l(e),t=l(t),e!==t&&(s[t]=e,c[e]||=c[t])},d=new Map;for(let e=0;e<a.length;e++)for(let t of a[e].group)t.id&&(d.has(t.id)||d.set(t.id,[]),d.get(t.id).push({index:e,app:t.isApp}));for(let e of d.values()){let t=new Map,n=e.find(e=>e.app);for(let{index:r}of e){n&&u(n.index,r);let e=a[r].reportIndex;t.has(e)?u(t.get(e),r):t.set(e,r)}}for(let e of d.values()){let t=null;for(let{index:n}of e)c[l(n)]||(t===null?t=n:u(t,n))}for(let e of i){let t=null;for(let n of e)for(let{index:e}of d.get(n)??[])t===null?t=e:u(t,e)}let f=new Map;for(let e=0;e<a.length;e++){let t=l(e);f.has(t)||f.set(t,[]),f.get(t).push(a[e])}let p=new Map,m=[];for(let r of f.values()){let a=r[0].group,o=a.map(e=>e.id).filter(Boolean);if(r.length===1&&new Set(o).size===o.length&&i.length===0){let i=e.length>1&&a.find(e=>e.isApp);if(i){let e=[...a];e.workspaceKey=i.id??String(i._id),m.push(...ug(r,e,t,n))}else m.push(...ug(r,a,t,n));continue}let s=new Map,c=new Map,l=[];for(let{group:e,reportName:t}of r)for(let n of e)if(n.id&&c.has(n.id))sg(c.get(n.id),n,t,s);else{let e={...n,_reportName:n._reportName??t};n.id&&c.set(n.id,e),l.push(e)}let u=new Set;for(let e of i)for(let t of e)c.has(t)&&u.add(t);for(let{group:e}of r)if(e.length>1)for(let t of e)t.id&&u.add(t.id);let d=[...u].map(e=>c.get(e));for(let e of l)u.has(e.id)||d.push(e);if(e.length>1){let e=d.find(e=>e.isApp);e&&(d.workspaceKey=e.id??String(e._id))}m.push(...ug(r,d,t,n));for(let[e,t]of s){let n=p.get(e);p.set(e,n?{finding:n.finding,copies:[...n.copies,...t.copies]}:t)}}return Object.defineProperty(m,"ruledOutIds",{value:o,configurable:!0}),{groups:m,conflicts:p}}function ug(e,t,n,r){if(n)return[t];if(r){let n=cg(e.flatMap(e=>e.sourceGroup));if(n.length===1)return[t];let r=[],i=new Set;for(let e of n){let n=new Set(e.filter(e=>!e.isApp&&e.id).map(e=>e.id)),a=t.filter(e=>n.has(e.id));if(a.length>0){r.push(a);for(let e of a)i.add(e.id)}}let a=new Set(t.map(e=>e.id).filter(Boolean));return i.size===a.size?r:[t]}return cg(t,e.flatMap(e=>e.sourceGroup.filter(e=>e.isApp)))}function dg(e){let t=Object.keys(e).filter(e=>e.startsWith(`revalidate`)||e===`_revalidationCopies`);if(t.length===0)return e;let n={...e};for(let e of t)delete n[e];return n}function fg(e,t=Yd){let n=xu(Su(e.flat()));return{linkedIds:e=>[...cd(e),...n.linkedIds(e)],knownRows:e=>{let r=[...t(e),...Xd(e)];for(let e of r)for(let t of Su(e.members))n.add(t);return r}}}var pg=null,mg=0;function hg(){return F.currentView===`links`&&pg?.owner===F.currentLinks?pg:null}function gg(){mg++,pg=null}async function _g(e,t,n,r){if(F.currentView!==`links`||!F.currentLinks)return;let i=js(F.currentLinks),a=++mg;pg={owner:i,id:e,reportName:t,group:null,error:``},F.focusCodeStack=[],F.focusCodeAt=0;let o=()=>a===mg&&F.currentView===`links`&&F.currentLinks===i;try{if(I()){let a=Yd([e]).find(e=>e.report===t&&(!r||e.managedReportId===r)&&(n==null||e.index===Number(n)));if(!a)throw Error(`This finding is no longer in the report.`);pg={owner:i,id:e,reportName:t,group:a.members.map(e=>({...e})),error:``},F.activeTabByGroup.set(a.members[0].id,e);return}let a=await Ti(await Wc(t));if(!o())return;let s=(bi(a?.data)??[]).map(e=>Array.isArray(e)?e:[e]),c=t=>t?.some(t=>String(t?.id)===e),l=c(s[n])?s[n]:s.find(c);if(!l)throw Error(`This finding is no longer in the report.`);let{data:u}=a,d=l.filter(e=>e?.id).map(e=>{let n={...e,_reportName:t,_repoFallback:gi(u)??Xs(t),_repoDirectory:_i(u?.repo),_bundleHashes:u.bundleHashes??[],_source:e.source??u.source??null};return hi(n,u),n._analyzer=n._source??n.type??null,`isApp`in n||(n.isApp=Ii(n,n._source)),n});if(await Promise.all([Pd(),zr(`report`,t),...ap(t).map(e=>zr(`workspace`,e.id))]),o()){let t=(e,t)=>t.includes(e.id)||Array.isArray(e.revalidateInputs)&&e.revalidateInputs.some(e=>t.includes(e));yi([d],fg([d],e=>[...Yd(e),...F.reports.flatMap(e=>e.groups??[]).filter(n=>n.some(n=>t(n,e))).map(e=>({members:e}))])),pg.group=d,F.activeTabByGroup.set(d[0].id,e)}}catch(e){o()&&(pg.error=e.message||`Unable to load this finding.`)}}function vg(e,t,n,r=n){let i=e.map((e,t)=>t),a=e=>{for(;i[e]!==e;)i[e]=i[i[e]],e=i[e];return e},o=e.map(n),s=new Map;for(let e=0;e<o.length;e++)for(let t of o[e])t.id&&(s.has(t.id)||s.set(t.id,[]),s.get(t.id).push(e));for(let[e,n]of s)for(let r of t(e))if(r!==e)for(let e of n)for(let t of s.get(r)??[]){let n=a(e),r=a(t);n!==r&&(i[r]=n)}let c=new Map;for(let t=0;t<e.length;t++){let e=a(t);c.has(e)||c.set(e,[]),c.get(e).push(t)}if(c.size===e.length)return e;let l=e=>e.id??String(e._id),u=[...c.values()].map(t=>{if(t.length===1)return e[t[0]];let n=new Map;for(let i of t)for(let t of r(e[i]))n.has(l(t))||n.set(l(t),t);let i=new Map;for(let r of t)for(let t of e[r])i.has(l(t))||i.set(l(t),n.get(l(t))??t);let a=[...i.values()],o=e[t[0]];return a.workspaceKey=o.workspaceKey??l(o[0]),a.linkedTabs=[...n.values()],a});return Object.defineProperty(u,"ruledOutIds",{value:e.ruledOutIds,configurable:!0}),u}function H(e){return e.workspaceKey??T(e[0])}function yg(e){return Array.isArray(e)?e:[e]}function bg(){return F.revalidationDetailed===!0}function xg(e){return e?._reportName??``}var Sg=null,Cg=!0;function wg(){let e=F.reports;return!Array.isArray(e)||e.length===0||(e!==Sg&&(Sg=e,Cg=Mr(e)),Cg)}function Tg(e){return!e.isUpstream||F.showRevalidation===!1||F.upstreamOnly===!0||!wg()}function Eg(){let e=F.managedSession;return I()&&(e?.publicShare===!0||!tt(e?.role,`triage`))}function Dg(e){return Tg(e)&&!Eg()}function U(e){if(!Tg(e))return;let t=F.triage.get(T(e)),n=t?.triage===`ignored`&&o(e,An())?{...t,triage:void 0}:t;if(!I())return n;let r=F.managedComments?.get(e.id)??[];return r.length===0&&!n?.comment?n:{...n,comment:r.map(e=>e.authorLogin?`${e.authorLogin}: ${e.body}`:e.body).join(`
4
4
 
5
- `)}}function Dg(e){return wg(e)&&(s(e,F.triage.get(T(e)),An())===`ignored`||o(e,An())&&_n(F.triage,T(e),bg(e)))}function Og(e,t=U(e)){if(wg(e))return s(e,t,An())??(Dg(e)?`ignored`:void 0)}function kg(e){return mg()?.group===e?e:e.linkedTabs?e.linkedTabs:yg()?e:Ag(e)}function Ag(e){return e.length<=1||!e.some(Fr)?e:e.filter(Fr)}function jg(e){let t=kg(e);return t.length<=1?t:[...t].toSorted((e,t)=>{let n=+!!Fr(e),r=+!!Fr(t);if(n!==r)return r-n;let i=+!!U(e)?.color,a=+!!U(t)?.color;if(i!==a)return a-i;let o=ki[O(e,F.severityMode)]||0,s=ki[O(t,F.severityMode)]||0;if(o!==s)return s-o;let c=e.confidence??-1;return(t.confidence??-1)-c})}function Mg(e){return e.length===1?e[0]:jg(e)[0]}function Ng(e){let t=[],n=[];for(let r of e)(r.isApp?t:n).push(r);return{app:t,source:n}}function Pg(e){let t=U(e);return!!t?.comment||!!(t?.fix||$h(e))||t?.flagged===!0}function Fg(e){if(e.length===1)return e[0];let t=jg(e);if(t.length===1)return t[0];let n=F.activeTabByGroup.get(H(e));if(n){let e=t.find(e=>T(e)===n);if(e)return e}let r=t;if(F.filterAnalyzer||F.filterModel){let e=t.filter(c_);e.length>0&&(r=e)}return r.find(Pg)??r[0]}function Ig(e){return e?._repoFallback||F.repoUrl||``}function Lg(e){return{github:Ig(e),directory:e?._repoDirectory??``}}function Rg(e){for(let t of Of().values())if(t.files.has(e.file))return t.repos?.size===1?[...t.repos][0]:null;return e.repo?.github||Ig(e)||null}function zg(e){if(!Array.isArray(e))return[];let t=e.filter(e=>!e.isUpstream);return t.length===0||t.length===e.length?e:t}function Bg(e){let t=zg(e),n=0,r=!1,i,a=!1,o=!1,s,c=!1,l=null,u=!1,d=!0;for(let e of t){let t=U(e),f=Og(e,t),p=t?.color;p===void 0&&f===void 0||(n++,p!==void 0&&(a?p!==i&&(r=!0):(a=!0,i=p)),c?f!==s&&(o=!0):(c=!0,s=f),f?(l===null&&(l=f),f===`ignored`&&t?.triage!==`ignored`?d=!1:u=!0):d=!1)}let f=r||o,p=!f&&a?i:null,m=n>0&&d,h=!f&&l!==null?l:null;return{hasConflict:f,commonColor:p,anyTriage:u,allTriaged:m,commonTriage:h,allIgnored:h===`ignored`&&n===t.length,isInProgress:h===`inprogress`,isFixed:h===`fixed`,isInvalid:h===`invalid`,isDeleted:h===`deleted`,isIgnored:h===`ignored`}}function Vg(e,t){if(!Array.isArray(e)||e.length<2)return!1;let n=e.filter(Eg);if(n.length<2)return!1;let r=(t??``).trim();return n.every(e=>Hg(e,r))}function Hg(e,t){if(!Eg(e))return!1;let n=(U(e)?.fix??``).trim();return n===``||n===(t??``).trim()}function Ug(e,t){if(!Eg(Fg(e)))return{targets:[],clearing:!1};let n=Bg(e);return{targets:Wg(e,n),clearing:t===`restore`||Gg(e,n)===t}}function Wg(e,t=Bg(e)){let n=zg(e),r=e.linkedTabs||n!==e&&e.some(e=>e.isApp)?n:t.hasConflict?[Fg(e)]:n;return r.every(Eg)?r:r.filter(Eg)}function Gg(e,t=Bg(e),n=null){return e.linkedTabs||e.some(e=>e.isApp)&&zg(e)!==e||!t.hasConflict?t.commonTriage??null:Og(n??Fg(e))??null}function Kg(e){let t=zg(e);if(t.length<2)return!1;let n=Bg(e).commonTriage;if(!n||n===`ignored`&&!t.some(e=>U(e)?.triage===`ignored`))return!1;let r=!1;for(let e of t){if(!Eg(e))continue;let t=T(e),i=F.triage.get(t);Og(e,i)!==n&&(n===`ignored`&&o(e,An())||n!==`ignored`&&i?.ignoredReports?.length||S(F.triage,t,{triage:n})&&(r=!0))}return r}var qg=null;function Jg(){qg=null}function Yg(e,t=!1,n=!1){let r=F.reports,i=F.workspaceMerges,a=I();if(!qg||qg.reports.length!==r.length||qg.reports.some((e,t)=>e!==r[t])||qg.merges!==i||qg.mergeCount!==i.length||qg.securityLinksTick!==F.linksTick||qg.findingIndexTick!==F.findingIndexTick||qg.managed!==a){let e=r.flatMap(e=>e.groups??[]);yi(e,dg(e)),qg={reports:[...r],merges:i,mergeCount:i.length,managed:a,securityLinksTick:F.linksTick,findingIndexTick:F.findingIndexTick}}let o=t?`upstream`:e?n?`workspace-app`:`app`:`code`;return qg[o]||(qg[o]=cg(r,{showRevalidation:e&&!t,upstreamOnly:t,hideRuledOut:n,merges:i})),qg[o]}function Xg(){return Yg(F.showRevalidation!==!1).groups}function Zg(){return Yg(!0).groups}function Qg(){return Yg(!0,!1,!!F.currentWorkspace).conflicts}function $g(){let e=Yg(F.showRevalidation!==!1,F.upstreamOnly===!0,!!F.currentWorkspace),t=e.groups;if(F.showRevalidation===!1||F.upstreamOnly)return t;if(F.currentWorkspace){let n=yg();return(!e.linkedGroups||e.linksTick!==F.linksTick||e.linkedDetailed!==n)&&(e.linkedGroups=_g(t,cd,Ag,kg),e.linksTick=F.linksTick,e.linkedDetailed=n),e.linkedGroups}return yg()?t:e.visibleGroups??=(()=>{let e=t.flatMap(e=>{let t=e.filter(e=>!Ir(e));return t.length===e.length?[e]:t.length===0?[]:(t.workspaceKey=H(e),[t])});return Object.defineProperty(e,"ruledOutIds",{value:t.ruledOutIds,configurable:!0}),e})()}function e_(){let e=$g();if(F.viewMode===`kanban`)return e;let t=e.filter(e=>Bg(e).commonTriage===F.shownTriage);return Object.defineProperty(t,"ruledOutIds",{value:e.ruledOutIds,configurable:!0}),t}function t_(e){if(F.showRevalidation||F.upstreamOnly||!Array.isArray(e)||e.length===0)return e;let t=new Set(e.map(T)),n=new Map;for(let e of Zg())for(let r of sg(e))if(r.some(e=>t.has(T(e))))for(let e of r)n.set(T(e),e);return n.size===e.length&&e.every(e=>n.get(T(e))===e)?e:n.size>0?[...n.values()]:e}function n_(e){let t=mg()?.group;if(t&&H(t)===e)return t;for(let t of $g())if(H(t)===e)return t;return null}function r_(){let e=new Set;if(F.currentWorkspace||!sd())return e;let t=F.currentFile??F.reports[0]?.fileName;if(!t)return e;let n=new Set;for(let e of F.reports)if(e.fileName===t)for(let t of e.groups)for(let e of t)e.id!=null&&n.add(String(e.id));for(let r of n)cd(r).some(e=>!n.has(e)&&qd(e).some(e=>e!==t))&&e.add(r);return e}var i_=`\0`,a_=`\x01`,o_=`\x02`;function s_(e){return Li(e.model)||null}function c_(e){let t=__();return!(t.filterAnalyzer&&(e._analyzer??null)!==(t.filterAnalyzer===i_?null:t.filterAnalyzer)||t.filterModel&&s_(e)!==(t.filterModel===o_?null:t.filterModel))}function l_(e){let t=typeof e._repoFallback==`string`&&e._repoFallback?e._repoFallback:null;return e.isApp&&!(e._source??e.source)&&t?t:typeof e.repo?.github==`string`&&e.repo.github?e.repo.github:t}function u_(e){let t=new Set;for(let n of e)for(let e of n)t.add(l_(e));return t}function d_(){F.filterSeverities=new Set,F.filterColors=new Set,F.filterSources=new Set,F.filterAnalyzer=``,F.filterModel=``,F.filterRepo=``,F.filterConfMin=0,F.filterConfMax=10,F.filterInclude=``,F.filterIncludeNegate=!1,F.filterComment=``,F.filterFix=``,F.filterFlagged=``,F.filterDuplicates=``,F.filterCrossContext=``,F.filterAppStacked=``,F.filterSecurity=``,F.filterRevalidate=``,F.filterPartial=``,F.sortBy=`severity`}var f_=[`filterSeverities`,`filterColors`,`filterSources`,`filterAnalyzer`,`filterModel`,`filterRepo`,`filterConfMin`,`filterConfMax`,`filterInclude`,`filterIncludeNegate`,`filterComment`,`filterFix`,`filterFlagged`,`filterDuplicates`,`filterCrossContext`,`filterAppStacked`,`filterSecurity`,`filterRevalidate`,`filterPartial`];function p_(){let e={};for(let t of f_){let n=F[t];e[t]=n instanceof Set?new Set(n):n}return e}var m_=null;function h_(e){m_=e}function g_(){m_=null}function __(){return m_??F}function v_(e){return kr(e)||(e._source&&!e._sourcePass?`revalidation`:``)}function y_(e){let t=fr(`confirmed`,``);return e.some(e=>t.includes(v_(e)))}function b_(e,t){let n=e.map(kg).filter(e=>e.length>0);return xr(n,t,yr(e,kg,kr),kr)?`confirmed`:``}function x_(e,t=kg){return vr(e,t)}function S_(e,{tabs:t=kg,kindOf:n=kr,severityMode:r=F.severityMode}={}){return Cr(e,{tabs:t,kindOf:n,severityMode:r})}function C_(e){return F.showRevalidation===!1||F.upstreamOnly||yg()?!1:S_(e)}function w_(e,{resetSort:t=!0}={}){F.filterConfMin=x_(e),F.filterConfMax=10,F.filterRevalidate=b_(e,F.filterConfMin),F.filterPartial=``,t&&(F.sortBy=T_(e)?`priority-desc`:`severity`)}function T_(e){return!Array.isArray(e)||e.length===0?!1:e.every(e=>{if(E_(e)===void 0)return!1;let t=e.filter(e=>e.isApp);if(t.length===0)return!0;let n=e.some(e=>e.priority!==void 0);return t.some(e=>e.priority!==void 0||!n&&Ir(e))})}function E_(e){let t=e.find(e=>e.priority!==void 0);return t?t.priority:e.some(Ir)?0:void 0}function D_(e){let t=__();if(t.filterSources.size===1){let n=t.filterSources.has(`own`);if(n&&jn(e.file)||!n&&!jn(e.file))return!1}if(t.filterRevalidate){let n=fr(t.filterRevalidate,t.filterPartial);if(n&&!n.includes(v_(e)))return!1}if(!t.filterRevalidate){let n=Lr(e)?0:mr(e);if(n===void 0){if(t.filterConfMin>0)return!1}else if(n<t.filterConfMin||t.filterConfMax<10&&n>t.filterConfMax)return!1}return!0}var O_={raw:``,inc:``,idWords:[]};function k_(e){if(O_.raw!==e){let t=e.toLowerCase();O_={raw:e,inc:t,idWords:t.length>=6?t.split(/\s+/u).filter(e=>e.length>=6):[]}}return O_}function A_(e){if(!D_(e))return!1;let t=__(),{inc:n,idWords:r}=k_(t.filterInclude);if(t.filterSeverities.size>0&&!t.filterSeverities.has(O(e,F.severityMode)))return!1;if(t.filterColors.size>0){let n=U(e)?.color??`none`;if(!t.filterColors.has(n))return!1}if(!c_(e)||t.filterRepo&&l_(e)!==(t.filterRepo===a_?null:t.filterRepo))return!1;if(n){let i=U(e),a=Fn(e).includes(n)||(i?.comment??``).toLowerCase().includes(n)||(i?.fix??``).toLowerCase().includes(n)||r.some(t=>e.id?.toLowerCase().includes(t));return t.filterIncludeNegate?!a:a}return!0}function j_(e){let t=__();if(!t.filterComment&&!t.filterFix&&!t.filterFlagged)return!0;let n=t=>e.some(e=>t(U(e)));if(t.filterComment){let e=n(e=>!!e?.comment);if(t.filterComment===`with`?!e:e)return!1}if(t.filterFix){let n=e.some(e=>!!(U(e)?.fix||$h(e)));if(t.filterFix===`with`?!n:n)return!1}if(t.filterFlagged){let e=n(e=>e?.flagged===!0);if(t.filterFlagged===`with`?!e:e)return!1}return!0}function M_(e){let t=e?.package?.npm;if(typeof t?.name==`string`&&t.name&&!nf(t))return t.name;let n=typeof e?.file==`string`?e.file:``;return/(?:^|\/)(?:node_modules|dependencies|vendor)\/(@[^/]+\/[^/]+|[^/]+)(?:\/|$)/u.exec(n)?.[1]??null}function N_(){return F.showRevalidation!==!1&&!F.upstreamOnly}function P_(e){if(N_())return!1;let t=kg(e);if(t.length<2)return!1;let n=new Set,r=new Set;for(let e of t){let t=l_(e);t&&n.add(t);let i=M_(e);i&&r.add(i)}return n.size>1||r.size>1}function F_(e){if(!N_()||kg(e).length===0)return!1;let t=e.filter(e=>e.isApp);return t.length>0&&t.length>1}function I_(e){return e.some(e=>e.isSecurity===!0)}function L_(e){return e.some(I_)&&e.some(e=>!I_(e))}function R_(e){return e.filter(e=>e.some(D_)).map(kg)}function z_(e){let t=!F.currentWorkspace&&__().filterDuplicates,n=t?r_():null,r=__().filterCrossContext,i=__().filterAppStacked,a=__().filterSecurity;return e.filter(e=>e.some(A_)&&j_(e)&&(!t||t===`with`===e.some(e=>n.has(T(e))))&&(!r||r===`with`===P_(e))&&(!i||i===`with`===F_(e))&&(!a||a===`with`===I_(e)))}function B_(e,t){let n=t===`desc`?-1:11;return(r,i)=>{let a=r[e]??n,o=i[e]??n;return(t===`desc`?o-a:a-o)||r.file.localeCompare(i.file)}}function V_(e){let t=e===`desc`?-1:11;return(n,r)=>{let i=n.confidence===void 0&&n.critical===!0,a=r.confidence===void 0&&r.critical===!0,o=n.confidence??(i?10:t),s=r.confidence??(a?10:t);return(e===`desc`?s-o:o-s)||(i===a?0:i?-1:1)||n.file.localeCompare(r.file)}}var H_=V_(`desc`),U_={severity:(e,t)=>(ki[O(t,F.severityMode)]||0)-(ki[O(e,F.severityMode)]||0)||H_(e,t)||parseInt(e.line,10)-parseInt(t.line,10),"confidence-desc":H_,"confidence-asc":V_(`asc`),"priority-desc":B_(`priority`,`desc`),"priority-asc":B_(`priority`,`asc`)};function W_(e){let t=U_[F.sortBy];if(!t)return[...e];if(F.sortBy===`priority-desc`||F.sortBy===`priority-asc`){let t=F.sortBy===`priority-desc`?`desc`:`asc`,n=t===`desc`?-1:11;return e.map(e=>({p:E_(e),g:e})).toSorted((e,r)=>{let i=e.p??n,a=r.p??n;return(t===`desc`?a-i:i-a)||Mg(e.g).file.localeCompare(Mg(r.g).file)}).map(e=>e.g)}return e.map(e=>({p:Mg(e),g:e})).toSorted((e,n)=>t(e.p,n.p)).map(e=>e.g)}var G_=Oi;function K_(e){return e==null?`(none)`:G_[e]??e}function q_(e){return e??`(no model)`}var J_=class extends Wh{static properties={analyzers:{attribute:!1},models:{attribute:!1},groups:{attribute:!1},_open:{state:!0}};createRenderRoot(){return this}constructor(){super(),this.analyzers=[],this.models=[],this.groups=[],this._open=!1}render(){let e=this.analyzers.length>1,t=this.models.length>1;if(!e&&!t)return M;let n=F.filterAnalyzer===``?void 0:F.filterAnalyzer===i_?null:F.filterAnalyzer,r=F.filterModel===``?void 0:F.filterModel===o_?null:F.filterModel,i=new Map,a=new Map;for(let e of this.groups){let t=new Set,o=new Set;for(let i of e){let e=i._analyzer??null,a=s_(i);(r===void 0||a===r)&&t.add(e),(n===void 0||e===n)&&o.add(a)}for(let e of t)i.set(e,(i.get(e)??0)+1);for(let e of o)a.set(e,(a.get(e)??0)+1)}let o=n===void 0?null:K_(n),s=r===void 0?null:q_(r),c=o!=null&&s!=null?`${o} \xB7 ${s}`:o??s??(e?`All analyzers`:`All models`);return A`<button type="button" class="${C({"analyzer-btn":!0,active:o!=null||s!=null})}" popovertarget="analyzer-select-menu" popovertargetaction="toggle" aria-label="${`Filter by analyzer / model: ${c}`}"><span class="analyzer-btn-label">${c}</span> <svg viewBox="0 0 12 12" width="11" height="11" aria-hidden="true"><path d="M2 4l4 4 4-4" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></button><div popover="auto" id="analyzer-select-menu" class="analyzer-menu" @beforetoggle="${this._onToggle}">${e?this._column({dim:`analyzer`,heading:`Analyzer`,allLabel:`All analyzers`,values:this.analyzers,sentinel:i_,labelOf:K_,counts:i,current:F.filterAnalyzer}):M} ${e&&t?A`<div class="analyzer-menu-sep"></div>`:M} ${t?this._column({dim:`model`,heading:`Model`,allLabel:`All models`,values:this.models,sentinel:o_,labelOf:q_,counts:a,current:F.filterModel}):M}</div>`}_column({dim:e,heading:t,allLabel:n,values:r,sentinel:i,labelOf:a,counts:o,current:s}){return A`<div class="analyzer-menu-col" role="group" aria-label="${`Filter by ${e}`}"><div class="analyzer-menu-head">${t}</div><button type="button" aria-pressed="${String(s===``)}" class="${C({"analyzer-menu-item":!0,active:s===``})}" @click="${()=>this._pick(e,``)}"><span class="analyzer-menu-label">${n}</span></button> ${r.map(t=>{let n=t??i,r=o.get(t)??0,c=s===n;return A`<button type="button" aria-pressed="${String(c)}" class="${C({"analyzer-menu-item":!0,active:c,zero:r===0})}" @click="${()=>this._pick(e,n)}"><span class="analyzer-menu-label">${a(t)}</span><span class="analyzer-menu-count">${r}</span></button>`})}</div>`}_pick(e,t){let n=e===`analyzer`?F.filterAnalyzer:F.filterModel,r=t!==``&&n===t?``:t;this.dispatchEvent(new CustomEvent(`analyzer-change`,{detail:{analyzer:e===`analyzer`?r:F.filterAnalyzer,model:e===`model`?r:F.filterModel},bubbles:!0,composed:!0}))}_onToggle=e=>{this._open=e.newState===`open`,this._open&&this._position()};_position(){let e=this.querySelector(`.analyzer-menu`),t=this.querySelector(`.analyzer-btn`);if(!e||!t)return;let n=t.getBoundingClientRect(),r=e.offsetWidth||240,i=e.offsetHeight||200,a=n.left;a+r>window.innerWidth-4&&(a=window.innerWidth-r-4),a<4&&(a=4);let o=n.bottom+4;o+i>window.innerHeight-4&&n.top>i+4&&(o=n.top-i-4),e.style.top=`${o}px`,e.style.left=`${a}px`}updated(){this._open&&this.querySelector(`.analyzer-menu`)?.matches(`:popover-open`)&&this._position()}};customElements.define(`analyzer-select`,J_);var Y_=0,X_=new AbortController;function W(){return Y_}function Z_(){return X_.signal}function Q_(){return X_.abort(),X_=new AbortController,++Y_}var $_=e=>{let t=e.lastIndexOf(`.`);return t>0?e.slice(t).toLowerCase():``};function ev(e,t=``){let n=e.map(e=>e.split(`/`)),r=[];for(;;){let e=r.length,t=new Set;for(let i of n)i.length>e+1&&r.every((e,t)=>i[t]===e)&&t.add(i[e]);if(t.size!==1)break;r.push(t.values().next().value)}let i=n.map(e=>{let n=0;for(;n<r.length&&e.length>n+1;)n++;let i=t+e.slice(0,n).map(e=>`${e}/`).join(``);return e.length>n+1?`${i}${e[n]}/`:`${i}*`});if(new Set(i).size>1){let t=new Map;i.forEach((e,r)=>{if(!e.endsWith(`*`))return;let i=t.get(e)??new Set;i.add($_(n[r].at(-1))),t.set(e,i)});let r=e=>{let n=t.get(e);return n?.size===1&&!n.has(``)?`${e}${[...n][0]}`:e};return new Map(e.map((e,t)=>[e,r(i[t])]))}return new Map(e.map((e,t)=>{let r=$_(n[t].at(-1));return[e,r?`*${r}`:`No extension`]}))}var tv=[{key:`metro`,label:`metro`,subtitle:`Metro bundle contents`},{key:`run`,label:`run`,subtitle:`Node.js CLI`},{key:`add`,label:`add`,subtitle:`Manually added files`}];function nv(e){let t=e.filter(e=>e.id!==`all`);if(t.length===0)return null;let n=new Map(t.map(e=>[String(e.id).replace(/^reason:/u,``),e]));return n.size!==t.length||[...n.keys()].some(e=>!tv.some(t=>t.key===e))?null:[{id:``,label:`All files`,subtitle:`Everything`},...tv.filter(e=>n.has(e.key)).map(({key:e,...t})=>({...t,id:n.get(e).id,subtitle:e===`run`&&n.has(`metro`)?`Bundler and Node.js CLI`:t.subtitle}))]}var rv=class extends pa{static properties={reasons:{attribute:!1},value:{attribute:!1},label:{type:String}};constructor(){super(),this.reasons=[],this.value=``,this.label=`Choose scope`}_select(e){this.dispatchEvent(new CustomEvent(`scope-change`,{detail:{value:e},bubbles:!0,composed:!0}))}render(){let e=this.reasons.filter(e=>e.id!==`all`);if(e.length===0)return M;let t=nv(e);if(!t)return A`<label class="scope-field"><span>Scope</span><select aria-label="${this.label}" .value="${Ue(this.value===`all`?``:this.value)}" @change="${e=>this._select(e.target.value)}"><option value="">All files</option>${e.map(e=>A`<option value="${e.id}">${e.label??e.id}</option>`)}</select></label>`;let n=t.find(e=>e.id===this.value)??t[0];return A`<div class="scope-toggle"><div class="scope-options" role="radiogroup" aria-label="${this.label}" aria-describedby="scope-description">${t.map(e=>A`<label class="scope-option"><input type="radio" name="scope" value="${e.id}" .checked="${n.id===e.id}" @change="${()=>this._select(e.id)}"><span>${e.label}</span></label>`)}</div><span class="scope-description" id="scope-description">${n.subtitle}</span></div>`}static styles=da`:host{display:block;min-width:0}*{box-sizing:border-box}.scope-toggle,.scope-field{cursor:default;user-select:none;-webkit-user-select:none}.scope-toggle{display:flex;align-items:center;justify-content:end;flex-wrap:wrap;gap:.4rem .7rem;min-width:0;min-height:var(--scope-height, 2rem)}.scope-options{display:flex;flex-shrink:0;min-width:0;border:1px solid var(--border);border-radius:var(--ui-radius, 5px);overflow:hidden;background:var(--bg)}.scope-option{position:relative;flex:1 0 auto}.scope-option+.scope-option{border-left:1px solid var(--border)}.scope-option input{position:absolute;width:1px;height:1px;opacity:0}.scope-option span{display:grid;place-items:center;height:calc(var(--scope-height, 2rem) - 2px);padding:.3rem .55rem;color:var(--muted);font-size:.74rem;white-space:nowrap}.scope-option:hover span{color:var(--text);background:var(--surface-active)}.scope-option input:checked+span{color:var(--text);background:var(--surface-active);font-weight:500}.scope-option input:focus-visible+span{outline:2px solid var(--accent);outline-offset:-2px}.scope-description{order:-1;min-width:0;color:var(--muted);font-size:.66rem;line-height:1rem;text-align:right}.scope-field{display:flex;align-items:center;justify-content:end;gap:.5rem;min-width:0;max-width:100%;margin-left:auto;color:var(--muted);font-size:.7rem}select{width:13rem;height:var(--scope-height, auto);min-width:0;max-width:100%;padding:.35rem .5rem;border:1px solid var(--border);border-radius:var(--ui-radius, 5px);background:var(--bg);color:var(--text);font:inherit;font-size:.76rem}:host([compact]) .scope-toggle{min-height:0;gap:.3rem .5rem}:host([compact]) .scope-option span{height:auto;padding:2px 8px;font-size:.68rem;line-height:1.2}:host([compact]) .scope-field{font-size:.68rem}:host([compact]) .scope-description{display:none}:host([compact]) select{width:auto;max-width:22ch;padding:2px 6px;font-size:.68rem;line-height:1.2}`};customElements.get(`bundle-scope-selector`)||customElements.define(`bundle-scope-selector`,rv);var iv=6,av=14,ov=2,sv=24,cv=4,lv=1.5,uv=new Map,dv=new Map,fv=`treemap`,pv=``;function mv(e){let t=/^#?([0-9a-f]{6})$/iu.exec(e);if(!t)return`#fff`;let n=parseInt(t[1],16),r=n>>16&255,i=n>>8&255,a=n&255;return(.2126*r+.7152*i+.0722*a)/255>.6?`#1a1a1a`:`#fff`}function hv(e,t,n,r){let i=n*n,a=r*r;return Math.max(a*e/i,i/(a*t))}function gv(e,t){let n=[],r=e.filter(e=>e.value>0),{x:i,y:a,w:o,h:s}=t;if(r.length===0||o<=0||s<=0)return n;let c=0;for(let e of r)c+=e.value;let l=o*s/c,u=0;for(;u<r.length&&o>.5&&s>.5;){let e=Math.min(o,s),t=u,c=0,d=0,f=1/0,p=1/0;for(;t<r.length;){let n=r[t].value*l,i=n>d?n:d,a=n<f?n:f,o=hv(i,a,c+n,e);if(t===u||o<=p)p=o,c+=n,d=i,f=a,t++;else break}let m=c/e;if(o>=s){let e=a;for(let o=u;o<t;o++){let c=o===t-1?a+s-e:r[o].value*l/m;n.push({node:r[o],x:i,y:e,w:m,h:c}),e+=c}i+=m,o-=m}else{let e=i;for(let s=u;s<t;s++){let c=s===t-1?i+o-e:r[s].value*l/m;n.push({node:r[s],x:e,y:a,w:c,h:m}),e+=c}a+=m,s-=m}u=t}return n}function _v(e){for(;e.children&&e.children.size===1;){let t=e.children.values().next().value;if(t.isFile)break;e.name=`${e.name}/${t.name}`,e.children=t.children}if(e.children)for(let t of e.children.values())_v(t)}function vv(e,t,n,r){if(e.path=e.name?t?`${t}/${e.name}`:e.name:t,e.parent=n,e.isFile)return e.count=1,e.value;r.set(e.path,e);let i=0,a=0,o,s;for(let t of e.children.values())i+=vv(t,e.path,e,r),a+=t.count,s===void 0?s=t.pkg:s!==t.pkg&&(s=null),o===void 0?o=t.group:o!==t.group&&(o=null);return e.value=i,e.count=a,e.pkg=s??null,e.group=o??null,i}function yv(e,t,n,r){let i=new Set(e).size===1?ev(t,n):new Map,a=new Map;return t.forEach((e,t)=>{i.has(e)&&a.set(i.get(e),(a.get(i.get(e))??0)+Math.max(r[t]??0,0))}),{groups:i,ranks:new Map([...a].toSorted((e,t)=>t[1]-e[1]||e[0].localeCompare(t[0])).map(([e],t)=>[e,t]))}}function bv(e,t,n,r,i,a,o){if(r<cv||i<cv)return;if(e.isFile){o.push({kind:`file`,node:e,x:t,y:n,w:r,h:i});return}if(!(a<iv&&r>=sv&&i>=sv&&e.children.size>0)){o.push({kind:`agg`,node:e,x:t,y:n,w:r,h:i});return}o.push({kind:`dir`,node:e,x:t,y:n,w:r,h:i});let s=i>=av+cv+ov?av:0,c=t+ov,l=n+s,u=r-ov*2,d=i-s-ov;if(u<cv||d<cv)return;let f=[...e.children.values()].toSorted((e,t)=>t.value-e.value);for(let e of gv(f,{x:c,y:l,w:u,h:d}))bv(e.node,e.x,e.y,e.w,e.h,a+1,o)}function xv(e,t){let n=e/(t||1)*100;return n>=10?n.toFixed(0):n.toFixed(n>=1?1:2)}function Sv(e,t){if(t<=0||e.isFile||!e.children||e.children.size===0)return 0;let n=1;for(let r of e.children.values()){if(n>=t)break;let e=1+Sv(r,t-1);e>n&&(n=e)}return n}function Cv(e,t,n,r,i,a){let o=Math.min(a-i,Math.PI*2-1e-4),s=i+o,c=+(o>Math.PI),l=Math.cos(i),u=Math.sin(i),d=Math.cos(s),f=Math.sin(s),p=e=>e.toFixed(2);return`M${p(e+r*l)} ${p(t+r*u)}A${p(r)} ${p(r)} 0 ${c} 1 ${p(e+r*d)} ${p(t+r*f)}L${p(e+n*d)} ${p(t+n*f)}A${p(n)} ${p(n)} 0 ${c} 0 ${p(e+n*l)} ${p(t+n*u)}Z`}function wv(e,t){let n=Math.max(4,Math.floor(t/6.4));return e.length>n?`${e.slice(0,n-1)}\u2026`:e}var Tv=class extends pa{static properties={details:{attribute:!1},_w:{state:!0},_h:{state:!0},_focus:{state:!0},_mode:{state:!0},_reason:{state:!0},_kind:{state:!0}};createRenderRoot(){return this}constructor(){super(),this.details=null,this._w=0,this._h=0,this._root=null,this._focus=[],this._mode=fv,this._reason=``,this._kind=pv,this._mixedKinds=!1,this._reasons=new Map,this._dirByPath=new Map,this._status=`loading`,this._meta={total:0,prefix:``},this._ro=null,this._plot=null,this._tooltip=null,this._ttCell=null}willUpdate(e){e.has(`details`)&&(this._reason=dv.get(this.details?.integrity)??``),(e.has(`details`)||e.has(`_reason`)||e.has(`_kind`))&&this._rebuild()}firstUpdated(){this._plot=this.querySelector(`.bundle-treemap-plot`),this._tooltip=this.querySelector(`.bundle-treemap-tooltip`),this._plot&&typeof ResizeObserver<`u`&&(this._ro=new ResizeObserver(e=>{let t=e[0]?.contentRect;if(!t)return;let n=Math.floor(t.width),r=Math.floor(t.height);(n!==this._w||r!==this._h)&&(this._w=n,this._h=r)}),this._ro.observe(this._plot))}disconnectedCallback(){super.disconnectedCallback(),this._ro&&=(this._ro.disconnect(),null)}_onPointerMove(e){let t=e.target.closest(`.bundle-treemap-node`);if(!t||!this._tooltip){this._hideTooltip();return}if(t!==this._ttCell){this._ttCell=t;let e=t.dataset;N(A`<div class="bundle-treemap-tt-path">${e.ttPath}</div>${e.ttPkg?A`<div class="bundle-treemap-tt-head"><span class="bundle-treemap-tt-dot" style="${E({background:e.ttColor})}"></span> <span class="bundle-treemap-tt-pkg">${e.ttPkg}</span></div>`:``}<div class="bundle-treemap-tt-meta">${e.ttMeta}</div>`,this._tooltip)}this._positionTooltip(e.clientX,e.clientY)}_onPointerLeave(){this._hideTooltip()}_positionTooltip(e,t){let n=this._tooltip;if(!n||!this._plot)return;n.classList.add(`show`);let r=this._plot.getBoundingClientRect(),i=e-r.left,a=t-r.top,o=i+12;o+n.offsetWidth>r.width-4&&(o=i-n.offsetWidth-12),o<4&&(o=4);let s=a+12;s+n.offsetHeight>r.height-4&&(s=a-n.offsetHeight-12),s<4&&(s=4),n.style.left=`${o}px`,n.style.top=`${s}px`}_hideTooltip(){this._ttCell=null,this._tooltip&&this._tooltip.classList.remove(`show`)}_rebuild(){if(this._root=null,this._focus=[],this._dirByPath=new Map,this._reasons=new Map,this._mixedKinds=!1,this._meta={total:0,prefix:``},this._hideTooltip(),!this.details){this._status=`loading`;return}let e=Vt(this.details),t=[...e.keys()].filter(t=>e.get(t)!==null);if(t.length===0){this._status=`empty`;return}this._reasons=Ce(this.details,t),this._reasons.has(this._reason)||(this._reason=``,dv.delete(this.details.integrity));let n=this._reasons.get(this._reason),r=Wt(this.details),i=Ht(this.details),a=e=>i.get(e)===`resource`,o=t.filter(t=>e.get(t)>0);this._mixedKinds=o.some(a)&&!o.every(a);let s=this._mixedKinds?this._kind:``,{prefix:c,stripped:l}=Pn(t),u=t.map(e=>Jr(e,{packageDir:r?.get(e)})),{groups:d,ranks:f}=yv(u,l,c,t.map(t=>e.get(t))),p={name:``,children:new Map,value:0,isFile:!1},m=0;for(let r=0;r<t.length;r++){if(n&&!n.has(t[r])||s&&a(t[r])!==(s===`resources`))continue;let o=e.get(t[r]);if(o<=0)continue;let c=l[r].split(`/`),f=p,h=!1;for(let e=0;e<c.length-1;e++){let t=f.children.get(c[e]);if(t&&t.isFile){h=!0;break}t||(t={name:c[e],children:new Map,value:0,isFile:!1},f.children.set(c[e],t)),f=t}if(h)continue;let g=c.at(-1),_=f.children.get(g);_&&!_.isFile||(_||(_={name:g,isFile:!0,value:0,origPath:t[r],pkg:u[r],group:d.get(l[r])??null,resource:i.get(t[r])===`resource`||this.details.listedOnly===!0},f.children.set(g,_)),_.value+=o,m+=o)}if(m===0){this._status=`empty`;return}for(let e of p.children.values())_v(e);let h=new Map;vv(p,``,null,h),this._groupRanks=f,this._root=p,this._dirByPath=h,this._meta={total:m,prefix:c},this._status=`ok`;let g=this.details?.integrity?uv.get(this.details.integrity):null;if(g){let e=h.get(g);e?this._focus=this._chainTo(e):uv.delete(this.details.integrity)}}get _focusNode(){return this._focus.length>0?this._focus.at(-1):this._root}_chainTo(e){let t=[];for(let n=e;n&&n!==this._root;n=n.parent)t.push(n);return t.reverse(),t}_rememberFocus(){let e=this.details?.integrity;if(!e)return;let t=this._focus.at(-1)?.path;t?uv.set(e,t):uv.delete(e)}_drillInto(e){!e||e.isFile||!e.children||e.children.size===0||(this._focus=this._chainTo(e),this._rememberFocus(),this._hideTooltip())}_focusTo(e){let t=e<0?[]:this._focus.slice(0,e+1);t.length!==this._focus.length&&(this._focus=t,this._rememberFocus(),this._hideTooltip())}_toggleMode(){this._mode=this._mode===`sunburst`?`treemap`:`sunburst`,fv=this._mode,this._hideTooltip()}_toggleKind(e){this._kind=this._kind?``:e,pv=this._kind}_changeReason(e){this._reason=e.detail.value.replace(/^reason:/u,``);let t=this.details?.integrity;t&&(this._reason?dv.set(t,this._reason):dv.delete(t))}_onPlotClick(e){let t=e.target.closest(`[data-treemap-into]`);if(!t)return;let n=this._dirByPath.get(t.dataset.treemapInto);n&&this._drillInto(n)}_renderCrumbs(){let e=this._focus,t=e.length===0,n=e.slice(0,-1),r=t?null:e.at(-1);return A`<nav class="bundle-treemap-crumbs" aria-label="Treemap location"><span class="bundle-treemap-crumbs-lead"><button type="button" class="${C({"bundle-treemap-crumb-home":!0,"at-root":t})}" @click="${()=>this._focusTo(-1)}">Source ${this._mode===`sunburst`?`sunburst`:`treemap`}</button> ${n.map((e,t)=>A`<span class="bundle-treemap-crumb-sep" aria-hidden="true">›</span><button type="button" class="bundle-treemap-crumb" @click="${()=>this._focusTo(t)}" data-tooltip-truncated data-tooltip="${e.path}">${e.name}</button>`)} </span>${r?A`<span class="bundle-treemap-crumb-sep" aria-hidden="true">›</span><span class="bundle-treemap-crumb-current" aria-current="location" data-tooltip-truncated data-tooltip="${r.path}">${r.name}</span>`:``}</nav>`}_paint(e){if(this._groupRanks?.size>0)return e.group==null?{color:Er(),label:null,named:!1}:{color:wr(this._groupRanks.get(e.group)??0),label:e.group,named:!0};let t=e.pkg??Jr(e.path);return{color:Or(t),label:Xr(t),named:e.pkg!=null}}_cell(e){let t=xv(e.node.value,this._meta.total),n={left:`${e.x}px`,top:`${e.y}px`,width:`${e.w}px`,height:`${e.h}px`},r=`${e.node.count} ${e.node.count===1?`file`:`files`}`;if(e.kind===`dir`)return A`<div class="bundle-treemap-node bundle-treemap-dir" style="${E(n)}" data-treemap-into="${e.node.path}" data-tt-path="${`${e.node.path}/`}" data-tt-meta="${`${Nn(e.node.value)} \xB7 ${r} \xB7 ${t}%`}"><span class="bundle-treemap-dirname">${e.node.name}</span></div>`;let{color:i,label:a}=this._paint(e.node),o=E({...n,background:i,color:mv(i)}),s=a??M;return e.kind===`agg`?A`<div class="bundle-treemap-node bundle-treemap-leaf bundle-treemap-agg" style="${o}" data-treemap-into="${e.node.path}" data-tt-path="${`${e.node.path}/`}" data-tt-pkg="${s}" data-tt-color="${i}" data-tt-meta="${`${Nn(e.node.value)} \xB7 ${r} \xB7 ${t}%`}"><span class="bundle-treemap-label">${e.node.name}/</span></div>`:A`<div class="bundle-treemap-node bundle-treemap-leaf bundle-treemap-file" style="${o}" data-bundle-view-source="${e.node.resource?M:e.node.origPath}" data-tt-path="${e.node.path}" data-tt-pkg="${s}" data-tt-color="${i}" data-tt-meta="${`${Nn(e.node.value)} \xB7 ${t}% of bundle`}"><span class="bundle-treemap-label">${e.node.name}</span></div>`}_arc(e,t,n){let r=xv(e.value,n),{color:i,label:a,named:o}=this._paint(e),s=a??M;if(e.isFile)return j`<path
5
+ `)}}function Og(e){return Tg(e)&&(s(e,F.triage.get(T(e)),An())===`ignored`||o(e,An())&&_n(F.triage,T(e),xg(e)))}function kg(e,t=U(e)){if(Tg(e))return s(e,t,An())??(Og(e)?`ignored`:void 0)}function Ag(e){return hg()?.group===e?e:e.linkedTabs?e.linkedTabs:bg()?e:jg(e)}function jg(e){return e.length<=1||!e.some(Fr)?e:e.filter(Fr)}function Mg(e){let t=Ag(e);return t.length<=1?t:[...t].toSorted((e,t)=>{let n=+!!Fr(e),r=+!!Fr(t);if(n!==r)return r-n;let i=+!!U(e)?.color,a=+!!U(t)?.color;if(i!==a)return a-i;let o=ki[O(e,F.severityMode)]||0,s=ki[O(t,F.severityMode)]||0;if(o!==s)return s-o;let c=e.confidence??-1;return(t.confidence??-1)-c})}function Ng(e){return e.length===1?e[0]:Mg(e)[0]}function Pg(e){let t=[],n=[];for(let r of e)(r.isApp?t:n).push(r);return{app:t,source:n}}function Fg(e){let t=U(e);return!!t?.comment||!!(t?.fix||$h(e))||t?.flagged===!0}function Ig(e){if(e.length===1)return e[0];let t=Mg(e);if(t.length===1)return t[0];let n=F.activeTabByGroup.get(H(e));if(n){let e=t.find(e=>T(e)===n);if(e)return e}let r=t;if(F.filterAnalyzer||F.filterModel){let e=t.filter(l_);e.length>0&&(r=e)}return r.find(Fg)??r[0]}function Lg(e){return e?._repoFallback||F.repoUrl||``}function Rg(e){return{github:Lg(e),directory:e?._repoDirectory??``}}function zg(e){for(let t of Of().values())if(t.files.has(e.file))return t.repos?.size===1?[...t.repos][0]:null;return e.repo?.github||Lg(e)||null}function Bg(e){if(!Array.isArray(e))return[];let t=e.filter(e=>!e.isUpstream);return t.length===0||t.length===e.length?e:t}function Vg(e){let t=Bg(e),n=0,r=!1,i,a=!1,o=!1,s,c=!1,l=null,u=!1,d=!0;for(let e of t){let t=U(e),f=kg(e,t),p=t?.color;p===void 0&&f===void 0||(n++,p!==void 0&&(a?p!==i&&(r=!0):(a=!0,i=p)),c?f!==s&&(o=!0):(c=!0,s=f),f?(l===null&&(l=f),f===`ignored`&&t?.triage!==`ignored`?d=!1:u=!0):d=!1)}let f=r||o,p=!f&&a?i:null,m=n>0&&d,h=!f&&l!==null?l:null;return{hasConflict:f,commonColor:p,anyTriage:u,allTriaged:m,commonTriage:h,allIgnored:h===`ignored`&&n===t.length,isInProgress:h===`inprogress`,isFixed:h===`fixed`,isInvalid:h===`invalid`,isDeleted:h===`deleted`,isIgnored:h===`ignored`}}function Hg(e,t){if(!Array.isArray(e)||e.length<2)return!1;let n=e.filter(Dg);if(n.length<2)return!1;let r=(t??``).trim();return n.every(e=>Ug(e,r))}function Ug(e,t){if(!Dg(e))return!1;let n=(U(e)?.fix??``).trim();return n===``||n===(t??``).trim()}function Wg(e,t){if(!Dg(Ig(e)))return{targets:[],clearing:!1};let n=Vg(e);return{targets:Gg(e,n),clearing:t===`restore`||Kg(e,n)===t}}function Gg(e,t=Vg(e)){let n=Bg(e),r=e.linkedTabs||n!==e&&e.some(e=>e.isApp)?n:t.hasConflict?[Ig(e)]:n;return r.every(Dg)?r:r.filter(Dg)}function Kg(e,t=Vg(e),n=null){return e.linkedTabs||e.some(e=>e.isApp)&&Bg(e)!==e||!t.hasConflict?t.commonTriage??null:kg(n??Ig(e))??null}function qg(e){let t=Bg(e);if(t.length<2)return!1;let n=Vg(e).commonTriage;if(!n||n===`ignored`&&!t.some(e=>U(e)?.triage===`ignored`))return!1;let r=!1;for(let e of t){if(!Dg(e))continue;let t=T(e),i=F.triage.get(t);kg(e,i)!==n&&(n===`ignored`&&o(e,An())||n!==`ignored`&&i?.ignoredReports?.length||S(F.triage,t,{triage:n})&&(r=!0))}return r}var Jg=null;function Yg(){Jg=null}function Xg(e,t=!1,n=!1){let r=F.reports,i=F.workspaceMerges,a=I();if(!Jg||Jg.reports.length!==r.length||Jg.reports.some((e,t)=>e!==r[t])||Jg.merges!==i||Jg.mergeCount!==i.length||Jg.securityLinksTick!==F.linksTick||Jg.findingIndexTick!==F.findingIndexTick||Jg.managed!==a){let e=r.flatMap(e=>e.groups??[]);yi(e,fg(e)),Jg={reports:[...r],merges:i,mergeCount:i.length,managed:a,securityLinksTick:F.linksTick,findingIndexTick:F.findingIndexTick}}let o=t?`upstream`:e?n?`workspace-app`:`app`:`code`;return Jg[o]||(Jg[o]=lg(r,{showRevalidation:e&&!t,upstreamOnly:t,hideRuledOut:n,merges:i})),Jg[o]}function Zg(){return Xg(F.showRevalidation!==!1).groups}function Qg(){return Xg(!0).groups}function $g(){return Xg(!0,!1,!!F.currentWorkspace).conflicts}function e_(){let e=Xg(F.showRevalidation!==!1,F.upstreamOnly===!0,!!F.currentWorkspace),t=e.groups;if(F.showRevalidation===!1||F.upstreamOnly)return t;if(F.currentWorkspace){let n=bg();return(!e.linkedGroups||e.linksTick!==F.linksTick||e.linkedDetailed!==n)&&(e.linkedGroups=vg(t,cd,jg,Ag),e.linksTick=F.linksTick,e.linkedDetailed=n),e.linkedGroups}return bg()?t:e.visibleGroups??=(()=>{let e=t.flatMap(e=>{let t=e.filter(e=>!Ir(e));return t.length===e.length?[e]:t.length===0?[]:(t.workspaceKey=H(e),[t])});return Object.defineProperty(e,"ruledOutIds",{value:t.ruledOutIds,configurable:!0}),e})()}function t_(){let e=e_();if(F.viewMode===`kanban`)return e;let t=e.filter(e=>Vg(e).commonTriage===F.shownTriage);return Object.defineProperty(t,"ruledOutIds",{value:e.ruledOutIds,configurable:!0}),t}function n_(e){if(F.showRevalidation||F.upstreamOnly||!Array.isArray(e)||e.length===0)return e;let t=new Set(e.map(T)),n=new Map;for(let e of Qg())for(let r of cg(e))if(r.some(e=>t.has(T(e))))for(let e of r)n.set(T(e),e);return n.size===e.length&&e.every(e=>n.get(T(e))===e)?e:n.size>0?[...n.values()]:e}function r_(e){let t=hg()?.group;if(t&&H(t)===e)return t;for(let t of e_())if(H(t)===e)return t;return null}function i_(){let e=new Set;if(F.currentWorkspace||!sd())return e;let t=F.currentFile??F.reports[0]?.fileName;if(!t)return e;let n=new Set;for(let e of F.reports)if(e.fileName===t)for(let t of e.groups)for(let e of t)e.id!=null&&n.add(String(e.id));for(let r of n)cd(r).some(e=>!n.has(e)&&qd(e).some(e=>e!==t))&&e.add(r);return e}var a_=`\0`,o_=`\x01`,s_=`\x02`;function c_(e){return Li(e.model)||null}function l_(e){let t=v_();return!(t.filterAnalyzer&&(e._analyzer??null)!==(t.filterAnalyzer===a_?null:t.filterAnalyzer)||t.filterModel&&c_(e)!==(t.filterModel===s_?null:t.filterModel))}function u_(e){let t=typeof e._repoFallback==`string`&&e._repoFallback?e._repoFallback:null;return e.isApp&&!(e._source??e.source)&&t?t:typeof e.repo?.github==`string`&&e.repo.github?e.repo.github:t}function d_(e){let t=new Set;for(let n of e)for(let e of n)t.add(u_(e));return t}function f_(){F.filterSeverities=new Set,F.filterColors=new Set,F.filterSources=new Set,F.filterAnalyzer=``,F.filterModel=``,F.filterRepo=``,F.filterConfMin=0,F.filterConfMax=10,F.filterInclude=``,F.filterIncludeNegate=!1,F.filterComment=``,F.filterFix=``,F.filterFlagged=``,F.filterDuplicates=``,F.filterCrossContext=``,F.filterAppStacked=``,F.filterSecurity=``,F.filterRevalidate=``,F.filterPartial=``,F.sortBy=`severity`}var p_=[`filterSeverities`,`filterColors`,`filterSources`,`filterAnalyzer`,`filterModel`,`filterRepo`,`filterConfMin`,`filterConfMax`,`filterInclude`,`filterIncludeNegate`,`filterComment`,`filterFix`,`filterFlagged`,`filterDuplicates`,`filterCrossContext`,`filterAppStacked`,`filterSecurity`,`filterRevalidate`,`filterPartial`];function m_(){let e={};for(let t of p_){let n=F[t];e[t]=n instanceof Set?new Set(n):n}return e}var h_=null;function g_(e){h_=e}function __(){h_=null}function v_(){return h_??F}function y_(e){return kr(e)||(e._source&&!e._sourcePass?`revalidation`:``)}function b_(e){let t=fr(`confirmed`,``);return e.some(e=>t.includes(y_(e)))}function x_(e,t){let n=e.map(Ag).filter(e=>e.length>0);return xr(n,t,yr(e,Ag,kr),kr)?`confirmed`:``}function S_(e,t=Ag){return vr(e,t)}function C_(e,{tabs:t=Ag,kindOf:n=kr,severityMode:r=F.severityMode}={}){return Cr(e,{tabs:t,kindOf:n,severityMode:r})}function w_(e){return F.showRevalidation===!1||F.upstreamOnly||bg()?!1:C_(e)}function T_(e,{resetSort:t=!0}={}){F.filterConfMin=S_(e),F.filterConfMax=10,F.filterRevalidate=x_(e,F.filterConfMin),F.filterPartial=``,t&&(F.sortBy=E_(e)?`priority-desc`:`severity`)}function E_(e){return!Array.isArray(e)||e.length===0?!1:e.every(e=>{if(D_(e)===void 0)return!1;let t=e.filter(e=>e.isApp);if(t.length===0)return!0;let n=e.some(e=>e.priority!==void 0);return t.some(e=>e.priority!==void 0||!n&&Ir(e))})}function D_(e){let t=e.find(e=>e.priority!==void 0);return t?t.priority:e.some(Ir)?0:void 0}function O_(e){let t=v_();if(t.filterSources.size===1){let n=t.filterSources.has(`own`);if(n&&jn(e.file)||!n&&!jn(e.file))return!1}if(t.filterRevalidate){let n=fr(t.filterRevalidate,t.filterPartial);if(n&&!n.includes(y_(e)))return!1}if(!t.filterRevalidate){let n=Lr(e)?0:mr(e);if(n===void 0){if(t.filterConfMin>0)return!1}else if(n<t.filterConfMin||t.filterConfMax<10&&n>t.filterConfMax)return!1}return!0}var k_={raw:``,inc:``,idWords:[]};function A_(e){if(k_.raw!==e){let t=e.toLowerCase();k_={raw:e,inc:t,idWords:t.length>=6?t.split(/\s+/u).filter(e=>e.length>=6):[]}}return k_}function j_(e){if(!O_(e))return!1;let t=v_(),{inc:n,idWords:r}=A_(t.filterInclude);if(t.filterSeverities.size>0&&!t.filterSeverities.has(O(e,F.severityMode)))return!1;if(t.filterColors.size>0){let n=U(e)?.color??`none`;if(!t.filterColors.has(n))return!1}if(!l_(e)||t.filterRepo&&u_(e)!==(t.filterRepo===o_?null:t.filterRepo))return!1;if(n){let i=U(e),a=Fn(e).includes(n)||(i?.comment??``).toLowerCase().includes(n)||(i?.fix??``).toLowerCase().includes(n)||r.some(t=>e.id?.toLowerCase().includes(t));return t.filterIncludeNegate?!a:a}return!0}function M_(e){let t=v_();if(!t.filterComment&&!t.filterFix&&!t.filterFlagged)return!0;let n=t=>e.some(e=>t(U(e)));if(t.filterComment){let e=n(e=>!!e?.comment);if(t.filterComment===`with`?!e:e)return!1}if(t.filterFix){let n=e.some(e=>!!(U(e)?.fix||$h(e)));if(t.filterFix===`with`?!n:n)return!1}if(t.filterFlagged){let e=n(e=>e?.flagged===!0);if(t.filterFlagged===`with`?!e:e)return!1}return!0}function N_(e){let t=e?.package?.npm;if(typeof t?.name==`string`&&t.name&&!nf(t))return t.name;let n=typeof e?.file==`string`?e.file:``;return/(?:^|\/)(?:node_modules|dependencies|vendor)\/(@[^/]+\/[^/]+|[^/]+)(?:\/|$)/u.exec(n)?.[1]??null}function P_(){return F.showRevalidation!==!1&&!F.upstreamOnly}function F_(e){if(P_())return!1;let t=Ag(e);if(t.length<2)return!1;let n=new Set,r=new Set;for(let e of t){let t=u_(e);t&&n.add(t);let i=N_(e);i&&r.add(i)}return n.size>1||r.size>1}function I_(e){if(!P_()||Ag(e).length===0)return!1;let t=e.filter(e=>e.isApp);return t.length>0&&t.length>1}function L_(e){return e.some(e=>e.isSecurity===!0)}function R_(e){return e.some(L_)&&e.some(e=>!L_(e))}function z_(e){return e.filter(e=>e.some(O_)).map(Ag)}function B_(e){let t=!F.currentWorkspace&&v_().filterDuplicates,n=t?i_():null,r=v_().filterCrossContext,i=v_().filterAppStacked,a=v_().filterSecurity;return e.filter(e=>e.some(j_)&&M_(e)&&(!t||t===`with`===e.some(e=>n.has(T(e))))&&(!r||r===`with`===F_(e))&&(!i||i===`with`===I_(e))&&(!a||a===`with`===L_(e)))}function V_(e,t){let n=t===`desc`?-1:11;return(r,i)=>{let a=r[e]??n,o=i[e]??n;return(t===`desc`?o-a:a-o)||r.file.localeCompare(i.file)}}function H_(e){let t=e===`desc`?-1:11;return(n,r)=>{let i=n.confidence===void 0&&n.critical===!0,a=r.confidence===void 0&&r.critical===!0,o=n.confidence??(i?10:t),s=r.confidence??(a?10:t);return(e===`desc`?s-o:o-s)||(i===a?0:i?-1:1)||n.file.localeCompare(r.file)}}var U_=H_(`desc`),W_={severity:(e,t)=>(ki[O(t,F.severityMode)]||0)-(ki[O(e,F.severityMode)]||0)||U_(e,t)||parseInt(e.line,10)-parseInt(t.line,10),"confidence-desc":U_,"confidence-asc":H_(`asc`),"priority-desc":V_(`priority`,`desc`),"priority-asc":V_(`priority`,`asc`)};function G_(e){let t=W_[F.sortBy];if(!t)return[...e];if(F.sortBy===`priority-desc`||F.sortBy===`priority-asc`){let t=F.sortBy===`priority-desc`?`desc`:`asc`,n=t===`desc`?-1:11;return e.map(e=>({p:D_(e),g:e})).toSorted((e,r)=>{let i=e.p??n,a=r.p??n;return(t===`desc`?a-i:i-a)||Ng(e.g).file.localeCompare(Ng(r.g).file)}).map(e=>e.g)}return e.map(e=>({p:Ng(e),g:e})).toSorted((e,n)=>t(e.p,n.p)).map(e=>e.g)}var K_=Oi;function q_(e){return e==null?`(none)`:K_[e]??e}function J_(e){return e??`(no model)`}var Y_=class extends Wh{static properties={analyzers:{attribute:!1},models:{attribute:!1},groups:{attribute:!1},_open:{state:!0}};createRenderRoot(){return this}constructor(){super(),this.analyzers=[],this.models=[],this.groups=[],this._open=!1}render(){let e=this.analyzers.length>1,t=this.models.length>1;if(!e&&!t)return M;let n=F.filterAnalyzer===``?void 0:F.filterAnalyzer===a_?null:F.filterAnalyzer,r=F.filterModel===``?void 0:F.filterModel===s_?null:F.filterModel,i=new Map,a=new Map;for(let e of this.groups){let t=new Set,o=new Set;for(let i of e){let e=i._analyzer??null,a=c_(i);(r===void 0||a===r)&&t.add(e),(n===void 0||e===n)&&o.add(a)}for(let e of t)i.set(e,(i.get(e)??0)+1);for(let e of o)a.set(e,(a.get(e)??0)+1)}let o=n===void 0?null:q_(n),s=r===void 0?null:J_(r),c=o!=null&&s!=null?`${o} \xB7 ${s}`:o??s??(e?`All analyzers`:`All models`);return A`<button type="button" class="${C({"analyzer-btn":!0,active:o!=null||s!=null})}" popovertarget="analyzer-select-menu" popovertargetaction="toggle" aria-label="${`Filter by analyzer / model: ${c}`}"><span class="analyzer-btn-label">${c}</span> <svg viewBox="0 0 12 12" width="11" height="11" aria-hidden="true"><path d="M2 4l4 4 4-4" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></button><div popover="auto" id="analyzer-select-menu" class="analyzer-menu" @beforetoggle="${this._onToggle}">${e?this._column({dim:`analyzer`,heading:`Analyzer`,allLabel:`All analyzers`,values:this.analyzers,sentinel:a_,labelOf:q_,counts:i,current:F.filterAnalyzer}):M} ${e&&t?A`<div class="analyzer-menu-sep"></div>`:M} ${t?this._column({dim:`model`,heading:`Model`,allLabel:`All models`,values:this.models,sentinel:s_,labelOf:J_,counts:a,current:F.filterModel}):M}</div>`}_column({dim:e,heading:t,allLabel:n,values:r,sentinel:i,labelOf:a,counts:o,current:s}){return A`<div class="analyzer-menu-col" role="group" aria-label="${`Filter by ${e}`}"><div class="analyzer-menu-head">${t}</div><button type="button" aria-pressed="${String(s===``)}" class="${C({"analyzer-menu-item":!0,active:s===``})}" @click="${()=>this._pick(e,``)}"><span class="analyzer-menu-label">${n}</span></button> ${r.map(t=>{let n=t??i,r=o.get(t)??0,c=s===n;return A`<button type="button" aria-pressed="${String(c)}" class="${C({"analyzer-menu-item":!0,active:c,zero:r===0})}" @click="${()=>this._pick(e,n)}"><span class="analyzer-menu-label">${a(t)}</span><span class="analyzer-menu-count">${r}</span></button>`})}</div>`}_pick(e,t){let n=e===`analyzer`?F.filterAnalyzer:F.filterModel,r=t!==``&&n===t?``:t;this.dispatchEvent(new CustomEvent(`analyzer-change`,{detail:{analyzer:e===`analyzer`?r:F.filterAnalyzer,model:e===`model`?r:F.filterModel},bubbles:!0,composed:!0}))}_onToggle=e=>{this._open=e.newState===`open`,this._open&&this._position()};_position(){let e=this.querySelector(`.analyzer-menu`),t=this.querySelector(`.analyzer-btn`);if(!e||!t)return;let n=t.getBoundingClientRect(),r=e.offsetWidth||240,i=e.offsetHeight||200,a=n.left;a+r>window.innerWidth-4&&(a=window.innerWidth-r-4),a<4&&(a=4);let o=n.bottom+4;o+i>window.innerHeight-4&&n.top>i+4&&(o=n.top-i-4),e.style.top=`${o}px`,e.style.left=`${a}px`}updated(){this._open&&this.querySelector(`.analyzer-menu`)?.matches(`:popover-open`)&&this._position()}};customElements.define(`analyzer-select`,Y_);var X_=0,Z_=new AbortController;function W(){return X_}function Q_(){return Z_.signal}function $_(){return Z_.abort(),Z_=new AbortController,++X_}var ev=e=>{let t=e.lastIndexOf(`.`);return t>0?e.slice(t).toLowerCase():``};function tv(e,t=``){let n=e.map(e=>e.split(`/`)),r=[];for(;;){let e=r.length,t=new Set;for(let i of n)i.length>e+1&&r.every((e,t)=>i[t]===e)&&t.add(i[e]);if(t.size!==1)break;r.push(t.values().next().value)}let i=n.map(e=>{let n=0;for(;n<r.length&&e.length>n+1;)n++;let i=t+e.slice(0,n).map(e=>`${e}/`).join(``);return e.length>n+1?`${i}${e[n]}/`:`${i}*`});if(new Set(i).size>1){let t=new Map;i.forEach((e,r)=>{if(!e.endsWith(`*`))return;let i=t.get(e)??new Set;i.add(ev(n[r].at(-1))),t.set(e,i)});let r=e=>{let n=t.get(e);return n?.size===1&&!n.has(``)?`${e}${[...n][0]}`:e};return new Map(e.map((e,t)=>[e,r(i[t])]))}return new Map(e.map((e,t)=>{let r=ev(n[t].at(-1));return[e,r?`*${r}`:`No extension`]}))}var nv=[{key:`metro`,label:`metro`,subtitle:`Metro bundle contents`},{key:`run`,label:`run`,subtitle:`Node.js CLI`},{key:`add`,label:`add`,subtitle:`Manually added files`}];function rv(e){let t=e.filter(e=>e.id!==`all`);if(t.length===0)return null;let n=new Map(t.map(e=>[String(e.id).replace(/^reason:/u,``),e]));return n.size!==t.length||[...n.keys()].some(e=>!nv.some(t=>t.key===e))?null:[{id:``,label:`All files`,subtitle:`Everything`},...nv.filter(e=>n.has(e.key)).map(({key:e,...t})=>({...t,id:n.get(e).id,subtitle:e===`run`&&n.has(`metro`)?`Bundler and Node.js CLI`:t.subtitle}))]}var iv=class extends pa{static properties={reasons:{attribute:!1},value:{attribute:!1},label:{type:String}};constructor(){super(),this.reasons=[],this.value=``,this.label=`Choose scope`}_select(e){this.dispatchEvent(new CustomEvent(`scope-change`,{detail:{value:e},bubbles:!0,composed:!0}))}render(){let e=this.reasons.filter(e=>e.id!==`all`);if(e.length===0)return M;let t=rv(e);if(!t)return A`<label class="scope-field"><span>Scope</span><select aria-label="${this.label}" .value="${Ue(this.value===`all`?``:this.value)}" @change="${e=>this._select(e.target.value)}"><option value="">All files</option>${e.map(e=>A`<option value="${e.id}">${e.label??e.id}</option>`)}</select></label>`;let n=t.find(e=>e.id===this.value)??t[0];return A`<div class="scope-toggle"><div class="scope-options" role="radiogroup" aria-label="${this.label}" aria-describedby="scope-description">${t.map(e=>A`<label class="scope-option"><input type="radio" name="scope" value="${e.id}" .checked="${n.id===e.id}" @change="${()=>this._select(e.id)}"><span>${e.label}</span></label>`)}</div><span class="scope-description" id="scope-description">${n.subtitle}</span></div>`}static styles=da`:host{display:block;min-width:0}*{box-sizing:border-box}.scope-toggle,.scope-field{cursor:default;user-select:none;-webkit-user-select:none}.scope-toggle{display:flex;align-items:center;justify-content:end;flex-wrap:wrap;gap:.4rem .7rem;min-width:0;min-height:var(--scope-height, 2rem)}.scope-options{display:flex;flex-shrink:0;min-width:0;border:1px solid var(--border);border-radius:var(--ui-radius, 5px);overflow:hidden;background:var(--bg)}.scope-option{position:relative;flex:1 0 auto}.scope-option+.scope-option{border-left:1px solid var(--border)}.scope-option input{position:absolute;width:1px;height:1px;opacity:0}.scope-option span{display:grid;place-items:center;height:calc(var(--scope-height, 2rem) - 2px);padding:.3rem .55rem;color:var(--muted);font-size:.74rem;white-space:nowrap}.scope-option:hover span{color:var(--text);background:var(--surface-active)}.scope-option input:checked+span{color:var(--text);background:var(--surface-active);font-weight:500}.scope-option input:focus-visible+span{outline:2px solid var(--accent);outline-offset:-2px}.scope-description{order:-1;min-width:0;color:var(--muted);font-size:.66rem;line-height:1rem;text-align:right}.scope-field{display:flex;align-items:center;justify-content:end;gap:.5rem;min-width:0;max-width:100%;margin-left:auto;color:var(--muted);font-size:.7rem}select{width:13rem;height:var(--scope-height, auto);min-width:0;max-width:100%;padding:.35rem .5rem;border:1px solid var(--border);border-radius:var(--ui-radius, 5px);background:var(--bg);color:var(--text);font:inherit;font-size:.76rem}:host([compact]) .scope-toggle{min-height:0;gap:.3rem .5rem}:host([compact]) .scope-option span{height:auto;padding:2px 8px;font-size:.68rem;line-height:1.2}:host([compact]) .scope-field{font-size:.68rem}:host([compact]) .scope-description{display:none}:host([compact]) select{width:auto;max-width:22ch;padding:2px 6px;font-size:.68rem;line-height:1.2}`};customElements.get(`bundle-scope-selector`)||customElements.define(`bundle-scope-selector`,iv);var av=6,ov=14,sv=2,cv=24,lv=4,uv=1.5,dv=new Map,fv=new Map,pv=`treemap`,mv=``;function hv(e){let t=/^#?([0-9a-f]{6})$/iu.exec(e);if(!t)return`#fff`;let n=parseInt(t[1],16),r=n>>16&255,i=n>>8&255,a=n&255;return(.2126*r+.7152*i+.0722*a)/255>.6?`#1a1a1a`:`#fff`}function gv(e,t,n,r){let i=n*n,a=r*r;return Math.max(a*e/i,i/(a*t))}function _v(e,t){let n=[],r=e.filter(e=>e.value>0),{x:i,y:a,w:o,h:s}=t;if(r.length===0||o<=0||s<=0)return n;let c=0;for(let e of r)c+=e.value;let l=o*s/c,u=0;for(;u<r.length&&o>.5&&s>.5;){let e=Math.min(o,s),t=u,c=0,d=0,f=1/0,p=1/0;for(;t<r.length;){let n=r[t].value*l,i=n>d?n:d,a=n<f?n:f,o=gv(i,a,c+n,e);if(t===u||o<=p)p=o,c+=n,d=i,f=a,t++;else break}let m=c/e;if(o>=s){let e=a;for(let o=u;o<t;o++){let c=o===t-1?a+s-e:r[o].value*l/m;n.push({node:r[o],x:i,y:e,w:m,h:c}),e+=c}i+=m,o-=m}else{let e=i;for(let s=u;s<t;s++){let c=s===t-1?i+o-e:r[s].value*l/m;n.push({node:r[s],x:e,y:a,w:c,h:m}),e+=c}a+=m,s-=m}u=t}return n}function vv(e){for(;e.children&&e.children.size===1;){let t=e.children.values().next().value;if(t.isFile)break;e.name=`${e.name}/${t.name}`,e.children=t.children}if(e.children)for(let t of e.children.values())vv(t)}function yv(e,t,n,r){if(e.path=e.name?t?`${t}/${e.name}`:e.name:t,e.parent=n,e.isFile)return e.count=1,e.value;r.set(e.path,e);let i=0,a=0,o,s;for(let t of e.children.values())i+=yv(t,e.path,e,r),a+=t.count,s===void 0?s=t.pkg:s!==t.pkg&&(s=null),o===void 0?o=t.group:o!==t.group&&(o=null);return e.value=i,e.count=a,e.pkg=s??null,e.group=o??null,i}function bv(e,t,n,r){let i=new Set(e).size===1?tv(t,n):new Map,a=new Map;return t.forEach((e,t)=>{i.has(e)&&a.set(i.get(e),(a.get(i.get(e))??0)+Math.max(r[t]??0,0))}),{groups:i,ranks:new Map([...a].toSorted((e,t)=>t[1]-e[1]||e[0].localeCompare(t[0])).map(([e],t)=>[e,t]))}}function xv(e,t,n,r,i,a,o){if(r<lv||i<lv)return;if(e.isFile){o.push({kind:`file`,node:e,x:t,y:n,w:r,h:i});return}if(!(a<av&&r>=cv&&i>=cv&&e.children.size>0)){o.push({kind:`agg`,node:e,x:t,y:n,w:r,h:i});return}o.push({kind:`dir`,node:e,x:t,y:n,w:r,h:i});let s=i>=ov+lv+sv?ov:0,c=t+sv,l=n+s,u=r-sv*2,d=i-s-sv;if(u<lv||d<lv)return;let f=[...e.children.values()].toSorted((e,t)=>t.value-e.value);for(let e of _v(f,{x:c,y:l,w:u,h:d}))xv(e.node,e.x,e.y,e.w,e.h,a+1,o)}function Sv(e,t){let n=e/(t||1)*100;return n>=10?n.toFixed(0):n.toFixed(n>=1?1:2)}function Cv(e,t){if(t<=0||e.isFile||!e.children||e.children.size===0)return 0;let n=1;for(let r of e.children.values()){if(n>=t)break;let e=1+Cv(r,t-1);e>n&&(n=e)}return n}function wv(e,t,n,r,i,a){let o=Math.min(a-i,Math.PI*2-1e-4),s=i+o,c=+(o>Math.PI),l=Math.cos(i),u=Math.sin(i),d=Math.cos(s),f=Math.sin(s),p=e=>e.toFixed(2);return`M${p(e+r*l)} ${p(t+r*u)}A${p(r)} ${p(r)} 0 ${c} 1 ${p(e+r*d)} ${p(t+r*f)}L${p(e+n*d)} ${p(t+n*f)}A${p(n)} ${p(n)} 0 ${c} 0 ${p(e+n*l)} ${p(t+n*u)}Z`}function Tv(e,t){let n=Math.max(4,Math.floor(t/6.4));return e.length>n?`${e.slice(0,n-1)}\u2026`:e}var Ev=class extends pa{static properties={details:{attribute:!1},_w:{state:!0},_h:{state:!0},_focus:{state:!0},_mode:{state:!0},_reason:{state:!0},_kind:{state:!0}};createRenderRoot(){return this}constructor(){super(),this.details=null,this._w=0,this._h=0,this._root=null,this._focus=[],this._mode=pv,this._reason=``,this._kind=mv,this._mixedKinds=!1,this._reasons=new Map,this._dirByPath=new Map,this._status=`loading`,this._meta={total:0,prefix:``},this._ro=null,this._plot=null,this._tooltip=null,this._ttCell=null}willUpdate(e){e.has(`details`)&&(this._reason=fv.get(this.details?.integrity)??``),(e.has(`details`)||e.has(`_reason`)||e.has(`_kind`))&&this._rebuild()}firstUpdated(){this._plot=this.querySelector(`.bundle-treemap-plot`),this._tooltip=this.querySelector(`.bundle-treemap-tooltip`),this._plot&&typeof ResizeObserver<`u`&&(this._ro=new ResizeObserver(e=>{let t=e[0]?.contentRect;if(!t)return;let n=Math.floor(t.width),r=Math.floor(t.height);(n!==this._w||r!==this._h)&&(this._w=n,this._h=r)}),this._ro.observe(this._plot))}disconnectedCallback(){super.disconnectedCallback(),this._ro&&=(this._ro.disconnect(),null)}_onPointerMove(e){let t=e.target.closest(`.bundle-treemap-node`);if(!t||!this._tooltip){this._hideTooltip();return}if(t!==this._ttCell){this._ttCell=t;let e=t.dataset;N(A`<div class="bundle-treemap-tt-path">${e.ttPath}</div>${e.ttPkg?A`<div class="bundle-treemap-tt-head"><span class="bundle-treemap-tt-dot" style="${E({background:e.ttColor})}"></span> <span class="bundle-treemap-tt-pkg">${e.ttPkg}</span></div>`:``}<div class="bundle-treemap-tt-meta">${e.ttMeta}</div>`,this._tooltip)}this._positionTooltip(e.clientX,e.clientY)}_onPointerLeave(){this._hideTooltip()}_positionTooltip(e,t){let n=this._tooltip;if(!n||!this._plot)return;n.classList.add(`show`);let r=this._plot.getBoundingClientRect(),i=e-r.left,a=t-r.top,o=i+12;o+n.offsetWidth>r.width-4&&(o=i-n.offsetWidth-12),o<4&&(o=4);let s=a+12;s+n.offsetHeight>r.height-4&&(s=a-n.offsetHeight-12),s<4&&(s=4),n.style.left=`${o}px`,n.style.top=`${s}px`}_hideTooltip(){this._ttCell=null,this._tooltip&&this._tooltip.classList.remove(`show`)}_rebuild(){if(this._root=null,this._focus=[],this._dirByPath=new Map,this._reasons=new Map,this._mixedKinds=!1,this._meta={total:0,prefix:``},this._hideTooltip(),!this.details){this._status=`loading`;return}let e=Vt(this.details),t=[...e.keys()].filter(t=>e.get(t)!==null);if(t.length===0){this._status=`empty`;return}this._reasons=Ce(this.details,t),this._reasons.has(this._reason)||(this._reason=``,fv.delete(this.details.integrity));let n=this._reasons.get(this._reason),r=Wt(this.details),i=Ht(this.details),a=e=>i.get(e)===`resource`,o=t.filter(t=>e.get(t)>0);this._mixedKinds=o.some(a)&&!o.every(a);let s=this._mixedKinds?this._kind:``,{prefix:c,stripped:l}=Pn(t),u=t.map(e=>Jr(e,{packageDir:r?.get(e)})),{groups:d,ranks:f}=bv(u,l,c,t.map(t=>e.get(t))),p={name:``,children:new Map,value:0,isFile:!1},m=0;for(let r=0;r<t.length;r++){if(n&&!n.has(t[r])||s&&a(t[r])!==(s===`resources`))continue;let o=e.get(t[r]);if(o<=0)continue;let c=l[r].split(`/`),f=p,h=!1;for(let e=0;e<c.length-1;e++){let t=f.children.get(c[e]);if(t&&t.isFile){h=!0;break}t||(t={name:c[e],children:new Map,value:0,isFile:!1},f.children.set(c[e],t)),f=t}if(h)continue;let g=c.at(-1),_=f.children.get(g);_&&!_.isFile||(_||(_={name:g,isFile:!0,value:0,origPath:t[r],pkg:u[r],group:d.get(l[r])??null,resource:i.get(t[r])===`resource`||this.details.listedOnly===!0},f.children.set(g,_)),_.value+=o,m+=o)}if(m===0){this._status=`empty`;return}for(let e of p.children.values())vv(e);let h=new Map;yv(p,``,null,h),this._groupRanks=f,this._root=p,this._dirByPath=h,this._meta={total:m,prefix:c},this._status=`ok`;let g=this.details?.integrity?dv.get(this.details.integrity):null;if(g){let e=h.get(g);e?this._focus=this._chainTo(e):dv.delete(this.details.integrity)}}get _focusNode(){return this._focus.length>0?this._focus.at(-1):this._root}_chainTo(e){let t=[];for(let n=e;n&&n!==this._root;n=n.parent)t.push(n);return t.reverse(),t}_rememberFocus(){let e=this.details?.integrity;if(!e)return;let t=this._focus.at(-1)?.path;t?dv.set(e,t):dv.delete(e)}_drillInto(e){!e||e.isFile||!e.children||e.children.size===0||(this._focus=this._chainTo(e),this._rememberFocus(),this._hideTooltip())}_focusTo(e){let t=e<0?[]:this._focus.slice(0,e+1);t.length!==this._focus.length&&(this._focus=t,this._rememberFocus(),this._hideTooltip())}_toggleMode(){this._mode=this._mode===`sunburst`?`treemap`:`sunburst`,pv=this._mode,this._hideTooltip()}_toggleKind(e){this._kind=this._kind?``:e,mv=this._kind}_changeReason(e){this._reason=e.detail.value.replace(/^reason:/u,``);let t=this.details?.integrity;t&&(this._reason?fv.set(t,this._reason):fv.delete(t))}_onPlotClick(e){let t=e.target.closest(`[data-treemap-into]`);if(!t)return;let n=this._dirByPath.get(t.dataset.treemapInto);n&&this._drillInto(n)}_renderCrumbs(){let e=this._focus,t=e.length===0,n=e.slice(0,-1),r=t?null:e.at(-1);return A`<nav class="bundle-treemap-crumbs" aria-label="Treemap location"><span class="bundle-treemap-crumbs-lead"><button type="button" class="${C({"bundle-treemap-crumb-home":!0,"at-root":t})}" @click="${()=>this._focusTo(-1)}">Source ${this._mode===`sunburst`?`sunburst`:`treemap`}</button> ${n.map((e,t)=>A`<span class="bundle-treemap-crumb-sep" aria-hidden="true">›</span><button type="button" class="bundle-treemap-crumb" @click="${()=>this._focusTo(t)}" data-tooltip-truncated data-tooltip="${e.path}">${e.name}</button>`)} </span>${r?A`<span class="bundle-treemap-crumb-sep" aria-hidden="true">›</span><span class="bundle-treemap-crumb-current" aria-current="location" data-tooltip-truncated data-tooltip="${r.path}">${r.name}</span>`:``}</nav>`}_paint(e){if(this._groupRanks?.size>0)return e.group==null?{color:Er(),label:null,named:!1}:{color:wr(this._groupRanks.get(e.group)??0),label:e.group,named:!0};let t=e.pkg??Jr(e.path);return{color:Or(t),label:Xr(t),named:e.pkg!=null}}_cell(e){let t=Sv(e.node.value,this._meta.total),n={left:`${e.x}px`,top:`${e.y}px`,width:`${e.w}px`,height:`${e.h}px`},r=`${e.node.count} ${e.node.count===1?`file`:`files`}`;if(e.kind===`dir`)return A`<div class="bundle-treemap-node bundle-treemap-dir" style="${E(n)}" data-treemap-into="${e.node.path}" data-tt-path="${`${e.node.path}/`}" data-tt-meta="${`${Nn(e.node.value)} \xB7 ${r} \xB7 ${t}%`}"><span class="bundle-treemap-dirname">${e.node.name}</span></div>`;let{color:i,label:a}=this._paint(e.node),o=E({...n,background:i,color:hv(i)}),s=a??M;return e.kind===`agg`?A`<div class="bundle-treemap-node bundle-treemap-leaf bundle-treemap-agg" style="${o}" data-treemap-into="${e.node.path}" data-tt-path="${`${e.node.path}/`}" data-tt-pkg="${s}" data-tt-color="${i}" data-tt-meta="${`${Nn(e.node.value)} \xB7 ${r} \xB7 ${t}%`}"><span class="bundle-treemap-label">${e.node.name}/</span></div>`:A`<div class="bundle-treemap-node bundle-treemap-leaf bundle-treemap-file" style="${o}" data-bundle-view-source="${e.node.resource?M:e.node.origPath}" data-tt-path="${e.node.path}" data-tt-pkg="${s}" data-tt-color="${i}" data-tt-meta="${`${Nn(e.node.value)} \xB7 ${t}% of bundle`}"><span class="bundle-treemap-label">${e.node.name}</span></div>`}_arc(e,t,n){let r=Sv(e.value,n),{color:i,label:a,named:o}=this._paint(e),s=a??M;if(e.isFile)return j`<path
6
6
  class="bundle-treemap-node bundle-treemap-arc"
7
7
  d=${t}
8
8
  fill=${i}
@@ -20,20 +20,20 @@ import{b as e}from"./chunk-JCIIBLKR.js";import{a as t,b as n,c as r,m as i}from"
20
20
  data-tt-pkg=${o?s:M}
21
21
  data-tt-color=${o?i:M}
22
22
  data-tt-meta=${`${Nn(e.value)} \xB7 ${c} \xB7 ${r}%`}
23
- ></path>`}_renderSunburst(e){let t=this._w,n=this._h,r=t/2,i=n/2,a=Math.min(t,n)/2-6;if(a<30)return M;let o=Sv(e,iv),s=Math.min(Math.max(a*.18,26),a*.45),c=(a-s)/o,l=this._meta.total||1,u=[],d=(e,t,n,a)=>{let f=[...e.children.values()].toSorted((e,t)=>t.value-e.value),p=n-t,m=t;for(let t of f){let n=p*(t.value/e.value),f=s+(a-1)*c,h=f+c;n*h>=lv&&(u.push(this._arc(t,Cv(r,i,f,h,m,m+n),l)),!t.isFile&&a<o&&t.children.size>0&&d(t,m,m+n,a+1)),m+=n}};d(e,-Math.PI/2,Math.PI*1.5,1);let f=this._focus.length>0,p=Math.max(s-4,10),m=f?j`<circle
23
+ ></path>`}_renderSunburst(e){let t=this._w,n=this._h,r=t/2,i=n/2,a=Math.min(t,n)/2-6;if(a<30)return M;let o=Cv(e,av),s=Math.min(Math.max(a*.18,26),a*.45),c=(a-s)/o,l=this._meta.total||1,u=[],d=(e,t,n,a)=>{let f=[...e.children.values()].toSorted((e,t)=>t.value-e.value),p=n-t,m=t;for(let t of f){let n=p*(t.value/e.value),f=s+(a-1)*c,h=f+c;n*h>=uv&&(u.push(this._arc(t,wv(r,i,f,h,m,m+n),l)),!t.isFile&&a<o&&t.children.size>0&&d(t,m,m+n,a+1)),m+=n}};d(e,-Math.PI/2,Math.PI*1.5,1);let f=this._focus.length>0,p=Math.max(s-4,10),m=f?j`<circle
24
24
  class="bundle-treemap-node bundle-treemap-center"
25
25
  cx=${r} cy=${i} r=${p}
26
26
  data-treemap-into=${e.parent.path}
27
27
  data-tt-path=${`${e.path}/`}
28
- data-tt-meta=${`${Nn(e.value)} \xB7 ${e.count} ${e.count===1?`file`:`files`} \xB7 ${xv(e.value,l)}%`}
28
+ data-tt-meta=${`${Nn(e.value)} \xB7 ${e.count} ${e.count===1?`file`:`files`} \xB7 ${Sv(e.value,l)}%`}
29
29
  ></circle>`:j`<circle class="bundle-treemap-center" cx=${r} cy=${i} r=${p}></circle>`,h=j`<text class="bundle-treemap-center-label" x=${r} y=${i} text-anchor="middle">
30
- ${f?j`<tspan x=${r} dy="-0.3em">${wv(e.name,p*2-12)}</tspan><tspan class="bundle-treemap-center-sub" x=${r} dy="1.5em">${Nn(e.value)}</tspan>`:j`<tspan x=${r} dy="0.35em">${Nn(e.value)}</tspan>`}
31
- </text>`;return A`<svg class="bundle-treemap-sunburst" width="${t}" height="${n}" viewBox="${`0 0 ${t} ${n}`}">${u}${m}${h}</svg>`}render(){let e=this._focusNode,t=this._mode===`sunburst`,n=this._status===`ok`&&e&&e.children&&this._w>0&&this._h>0,r=[];if(n&&!t){let t=[...e.children.values()].toSorted((e,t)=>t.value-e.value);for(let e of gv(t,{x:0,y:0,w:this._w,h:this._h}))bv(e.node,e.x,e.y,e.w,e.h,1,r)}let{prefix:i}=this._meta,a=e?e.count:0,o=e?e.value:0;return A`<header class="bundle-treemap-head">${this._renderCrumbs()} <span class="bundle-treemap-head-right"><span class="bundle-treemap-sub">${a} ${a===1?`file`:`files`} · ${Nn(o)}${i?A` · <span class="mono">${i}</span>`:``}</span> ${this._reasons.size>0?A`<bundle-scope-selector compact="compact" .reasons="${[...this._reasons.keys()].map(e=>({id:`reason:${e}`,label:e}))}" .value="${this._reason?`reason:${this._reason}`:``}" label="Filter files" @scope-change="${this._changeReason}"></bundle-scope-selector>`:M} ${this._mixedKinds?A`<span class="bundle-treemap-kind" role="group" aria-label="Show only">${[[`code`,`Code`],[`resources`,`Resources`]].map(([e,t])=>A`<button type="button" aria-pressed="${String(this._kind===e)}" @click="${()=>this._toggleKind(e)}">${t}</button>`)}</span>`:M}<mode-switch compact="compact" label="Sunburst" .checked="${t}" accessible-label="Toggle sunburst view" @click="${this._toggleMode}"></mode-switch></span></header><div class="bundle-treemap-plot" @click="${this._onPlotClick}" @pointermove="${this._onPointerMove}" @pointerleave="${this._onPointerLeave}">${this._status===`loading`?A`<div class="bundle-treemap-empty">Loading…</div>`:this._status===`empty`?A`<div class="bundle-treemap-empty">${!this._mixedKinds||!this._kind?`This bundle doesn't carry any source content.`:this._kind===`code`?`No code here, only resources.`:`No resources here, only code.`}</div>`:t?n?this._renderSunburst(e):M:r.map(e=>this._cell(e))}<div class="bundle-treemap-tooltip"></div></div>`}};customElements.define(`bundle-treemap`,Tv);function Ev(e=document){if(e.querySelector(`:modal`))return!0;for(let t of e.querySelectorAll(`*`))if(t.shadowRoot&&Ev(t.shadowRoot))return!0;return!1}var Dv=`a{cursor:default}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}button,summary,select,label,legend,header h3,.section-title,.ui-hint,.hint,.note,.lwd-note,.lwd-empty,.empty:not(.error,[role=alert]),.empty-discussion,.history-state[role=status],.history-summary{cursor:default;user-select:none;-webkit-user-select:none}input:not([type=checkbox],[type=radio]),textarea,[contenteditable],pre,code,.mono{cursor:text;user-select:text;-webkit-user-select:text}dialog{margin-top:5rem;margin-inline:auto;border:1px solid var(--border);border-radius:var(--ui-radius, 10px);background:var(--surface);color:var(--text);padding:1.1rem 1.25rem 1rem;max-width:480px;width:min(94vw,480px);box-shadow:0 20px 60px #00000059;&::backdrop{background:rgb(from var(--theme-bar) r g b / .55);backdrop-filter:blur(2px)}}header h3{margin:0 0 .6rem;font-size:1rem;font-weight:600}.nwd-input{display:block;width:100%;box-sizing:border-box;padding:.5rem .65rem;border:1px solid var(--border);border-radius:var(--ui-radius, 6px);background:var(--bg, var(--surface));color:var(--text);font:inherit;font-size:.88rem;&:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgb(from var(--accent) r g b / .18)}&::placeholder{color:var(--muted)}}.nwd-note{margin:.55rem 0 0;color:var(--muted);font-size:.74rem;line-height:1.45}.nwd-intro{margin:0 0 .8rem;color:var(--muted);font-size:.82rem;line-height:1.5}.nwd-actions{display:flex;align-items:center;gap:.4rem;margin-top:.8rem;padding-top:.7rem;border-top:1px solid var(--border)}.nwd-spacer{flex:1}.nwd-actions button{background:transparent;border:1px solid var(--border);color:var(--text);border-radius:var(--ui-radius, 5px);padding:.35rem .9rem;font:inherit;font-size:.8rem;&:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}&.primary{background:var(--accent);color:var(--surface);border-color:var(--accent);&:hover:not(:disabled){color:var(--surface);filter:brightness(1.08)}}&.quiet{border-color:transparent;color:var(--muted);&:hover:not(:disabled){border-color:transparent}}&.danger{color:var(--critical, #f87171);border-color:var(--border);&:hover:not(:disabled){border-color:var(--critical, #f87171);color:var(--critical, #f87171)}}&:disabled{opacity:.5}}:host-context(body.theme-w95){& dialog{border:0;box-shadow:var(--w95-window);&:before{content:"";display:block;flex:none;height:20px}&::backdrop{background:none;backdrop-filter:none}}& header h3{position:absolute;top:3px;right:3px;left:3px;display:flex;align-items:center;gap:4px;height:18px;margin:0;padding:0 24px 0 4px;overflow:hidden;background:var(--w95-title);color:#fff;font-size:11px;font-weight:700;line-height:18px;white-space:nowrap;& svg{flex:none;width:14px;height:14px}}& button[aria-label^=Close]{position:absolute;top:5px;right:5px;z-index:1;display:grid;place-items:center;width:16px;height:14px;padding:0;border:0;border-radius:0;background:var(--w95-face);color:#000;box-shadow:var(--w95-raised);font-size:13px;line-height:1;&:hover{background:var(--w95-face);color:#000}&:active{box-shadow:var(--w95-pressed)}}.nwd-actions button{min-width:75px;min-height:23px;border-color:transparent;background:var(--w95-face);color:#000;box-shadow:var(--w95-raised);font-size:11px;&:hover:not(:disabled){border-color:transparent;color:#000}&:active:not(:disabled){box-shadow:var(--w95-pressed)}&:disabled{color:var(--w95-shadow);text-shadow:1px 1px #fff;opacity:1}&:focus-visible{outline:1px dotted #000;outline-offset:-4px}&.primary,&.primary:hover:not(:disabled){box-shadow:var(--w95-default);color:#000;filter:none}&.primary:active:not(:disabled){box-shadow:inset 0 0 0 1px #000,inset 0 0 0 2px var(--w95-shadow)}&.quiet{box-shadow:none}&.danger,&.danger:hover:not(:disabled){color:var(--critical)}}.nwd-input{border-color:transparent;box-shadow:var(--w95-sunken);&:focus{border-color:transparent;box-shadow:var(--w95-sunken)}}}@media(display-mode:window-controls-overlay){dialog{-webkit-app-region:no-drag;app-region:no-drag}}:host-context(body.theme-w95) *{overscroll-behavior:none}
32
- `,Ov=class extends pa{static styles=[ua(Dv)];exclusive=!1;firstUpdated(){cr(this.renderRoot),this.beforeOpen();let e=this.renderRoot.querySelector(`dialog`);if(e){if(this.exclusive&&Ev()){this._conflict(new DOMException(`Another modal dialog is already open`,`InvalidStateError`));return}try{e.showModal()}catch(e){this._conflict(e);return}this.focusInitial()}}_conflict(e){this._settled=!0,this.dispatchEvent(new CustomEvent(`modal-conflict`,{detail:{cause:e}}))}beforeOpen(){}focusInitial(){(this.renderRoot.querySelector(`input, textarea`)??this.renderRoot.querySelector(`button.primary`)??this.renderRoot.querySelector(`button`))?.focus()}_finish(e){this._settled||(this._settled=!0,this.renderRoot.querySelector(`dialog`)?.close(),this.dispatchEvent(new CustomEvent(`resolve`,{detail:e})))}_onClose=()=>this._finish(null);_onBackdrop=e=>{if(e.target!==e.currentTarget)return;let{left:t,right:n,top:r,bottom:i}=e.currentTarget.getBoundingClientRect();(e.clientX<t||e.clientX>n||e.clientY<r||e.clientY>i)&&this._onClose()}};function kv(e,t={}){return new Promise(n=>{let r=document.createElement(e);Object.assign(r,t),r.addEventListener(`resolve`,e=>{r.remove(),n(e.detail)}),document.body.append(r)})}function Av(e,t,n){return new Promise((r,i)=>{let a=document.createElement(e);Object.assign(a,t),a.exclusive=!0,a.addEventListener(`resolve`,e=>{a.remove(),r(e.detail)}),a.addEventListener(`modal-conflict`,e=>{n(a),a.remove(),i(eh(e.detail?.cause))}),document.body.append(a)})}var jv=`dialog{max-width:520px;width:min(94vw,520px)}.wsl-field{display:block;margin-top:.6rem;color:var(--text);font-size:.78rem;>span{display:block;margin-bottom:.25rem;color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.04em}}.wsl-ack{display:flex;align-items:flex-start;gap:.5rem;margin-top:.6rem;color:var(--text);font-size:.8rem;line-height:1.4;>input[type=checkbox]{flex:0 0 auto;margin-top:.15rem}>span{flex:1 1 auto}}.wsl-link{display:block;width:100%;box-sizing:border-box;padding:.5rem .65rem;border:1px solid var(--border);border-radius:var(--ui-radius, 6px);background:var(--bg, var(--surface));color:var(--text);font:inherit;font-size:.78rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;resize:vertical;word-break:break-all}.wsl-error{margin:.55rem 0 0;color:var(--critical, #f87171);font-size:.74rem;line-height:1.4}.wsl-warning{padding:.55rem .65rem;border:1px solid var(--critical, #f87171);border-radius:var(--ui-radius, 6px);background:rgb(from var(--critical, #f87171) r g b / .08);>p+p{margin-top:.45rem}}.wsl-optout{display:flex;align-items:center;gap:.5rem;margin-top:.7rem;color:var(--text);font-size:.78rem}.nwd-input:disabled{opacity:.5}.nwd-actions button.primary.danger{background:var(--critical, #f87171);border-color:var(--critical, #f87171);color:var(--surface);&:hover:not(:disabled){border-color:var(--critical, #f87171);color:var(--surface);filter:brightness(1.08)}}
33
- `,Mv=class extends Ov{static styles=[...Ov.styles,ua(jv)];static properties={_busy:{state:!0},_error:{state:!0}};constructor(){super(),this._busy=!1,this._error=``,this._abortController=null}_finish(e){if(!this._settled){if(this._abortController)try{this._abortController.abort()}catch{}super._finish(!!e)}}_onCancel=()=>this._finish(!1);_onUnlock=async()=>{if(!this._busy){this._busy=!0,this._error=``,this._abortController=new AbortController;try{if(await jo({signal:this._abortController.signal})){this._finish(!0);return}this._error=``}catch(e){this._error=e?.message??String(e)}finally{this._busy=!1,this._abortController=null}}};render(){return A`<dialog @close="${this._onClose}"><header><h3>Unlock your data</h3></header><p class="nwd-note ui-hint">Your triage data and report files are encrypted with a passkey on this device. Unlock to load them.</p>${this._error?A`<p class="wsl-error">${this._error}</p>`:M}<footer class="nwd-actions"><span class="nwd-spacer"></span> <button type="button" @click="${this._onCancel}">${this._busy?`Cancel`:`Later`}</button> <button type="button" class="primary" ?disabled="${this._busy}" @click="${this._onUnlock}">${this._busy?`Waiting…`:`Unlock with passkey`}</button></footer></dialog>`}};customElements.define(`passkey-unlock-dialog`,Mv);function Nv(){return kv(`passkey-unlock-dialog`)}var Pv=`deepviewManagedNavigation`,Fv=`deepviewManagedLoginFinding`;function Iv(e,t){return e?.view===`findings`&&t?.view===`findings`&&e.teamSlug===t.teamSlug&&(e.reportSlug??null)===(t.reportSlug??null)}function Lv(e,t){return e?.bundleTab!==`code`||t?.bundleTab!==`code`||e.view!==t.view?!1:e.view===`npm`?e.packageName===t.packageName&&(e.packageSpec??null)===(t.packageSpec??null):e.view===`repository-code`?e.repoId===t.repoId&&e.commit===t.commit&&(e.path??``)===(t.path??``):e.view===`bundles`&&(e.teamSlug??null)===(t.teamSlug??null)&&e.bundleSlug===t.bundleSlug}function Rv(e){let t=e.location.hash,n=We(t),r=!1,i=null,a=0,o=null,s=null,c=!1,l=null,u=null,d=null;function f(){return e.location.hash.startsWith(`#public=`)&&e.location.hash!==t}function p(e){let t=ui(e),n=t?.view===`home`?Ur(e.hash):null;return t?{...t,...n?{finding:n}:{}}:null}function m(){try{let t=e.sessionStorage?.getItem(Fv);if(e.sessionStorage?.removeItem(Fv),!t)return null;let n=new URL(t,e.location.origin),r=n.origin===e.location.origin?p(n):null;return r?.finding?r:null}catch{return null}}function h(){if(!r||!Ur(e.location.hash)||l===e.location.href||e.history.state?.[Pv]&&e.history.state[Pv]!==i)return;let t=l=e.location.href;_(p(new URL(t))??{view:`home`},{replace:!0}).finally(()=>{l===t&&(l=null)})}function g(t){f()||(t=Ye(t,n),e.history.replaceState(r?{[Pv]:i}:null,``,t),s=t)}async function _(t,{replace:c=!1,pop:l=!1}={}){if(!r||!o||f())return!1;t??={view:`home`};let d=oi(t);if(d===null)return!1;let p=++a,m=u={route:t,path:d,push:!l&&!c,shown:!1,findingRoute:null,codeRoute:null},h=()=>r&&p===a&&!f(),_=!1;try{_=await o(t,h)}catch(e){console.warn(`managed: navigation failed:`,e)}return h()?_?(typeof _==`object`&&(d=oi(_)??d),Iv(m.findingRoute,typeof _==`object`?_:t)&&(d=oi(m.findingRoute)),Lv(m.codeRoute,typeof _==`object`?_:t)&&(d=oi(m.codeRoute)),u=null,l||c||m.shown?g(d):Ye(d,n)!==s&&(d=Ye(d,n),e.history.pushState({[Pv]:i},``,d),s=d),!0):(await o({view:`home`},h),h()&&(u=null,g(`/`)),!1):!1}function v(t){if(!f()){if(!r){t.state?.[Pv]&&g(`/`);return}if((!t.state?.[Pv]||t.state[Pv]===i)&&Ur(e.location.hash)){h();return}if(!t.state?.[Pv]){let t=p(new URL(e.location.href)),n=s==null?null:ui(new URL(s,e.location.href));if(t?.file!=null&&t.file===n?.file&&Lv(t,n)){g(oi(t));return}}_((t.state?.[Pv]===i?p(new URL(e.location.href)):null)??{view:`home`},{pop:!0})}}function y(t){if(!r||t.defaultPrevented||t.button!==0||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey)return;let n=t.composedPath().find(e=>e.matches?.(`a.comment-self-ref[href]`));if(!n||n.hasAttribute(`download`)||n.target&&n.target!==`_self`)return;let i=new URL(n.href);if(i.origin!==e.location.origin)return;let a=p(i);if(a?.finding)return t.preventDefault(),_(a)}return{get active(){return r},rememberFinding(){let t=p(new URL(e.location.href));if(!t?.finding)return;let n=t.view===`home`?`/#${Vr(t.finding)}`:oi(t);try{e.sessionStorage?.setItem(Fv,n)}catch{}},start(t,{onCancel:n=null}={}){if(r)return;r=!0,o=t,d=n,i=typeof e.history.state?.[Pv]==`string`?e.history.state[Pv]:e.crypto.randomUUID(),c||=(e.addEventListener(`popstate`,v),e.addEventListener(`hashchange`,h),e.addEventListener(`click`,y),e.launchQueue?.setConsumer(({targetURL:t})=>{if(!r||!t)return;let n=new URL(t);if(n.origin!==e.location.origin)return;let i=p(n);i&&_(i)}),!0);let a=m(),s=p(new URL(e.location.href))??{view:`home`};return a&&s.view===`home`&&!s.finding&&(s=a),_(s,{replace:!0})},navigate:_,replaceFindingRoute(t){if(!r||t?.view!==`findings`||f())return;let i=oi(t);if(i!=null){if(u){(u.route.view===`home`&&u.route.finding||Iv(t,{...u.route,view:`findings`}))&&(u.findingRoute=t);return}Iv(t,ui(new URL(e.location.href)))&&Ye(i,n)!==s&&g(i)}},replaceCodeRoute(t){if(!r||f()||![`bundles`,`npm`,`repository-code`].includes(t?.view)||t.bundleTab!==`code`)return;let i=oi(t);if(i!=null){if(u){Lv(t,u.route)&&(u.codeRoute=t);return}Lv(t,ui(new URL(e.location.href)))&&Ye(i,n)!==s&&g(i)}},showing(t){let a=u;if(!r||f()||!a||a.route!==t||a.shown)return;a.shown=!0;let o=Ye(a.path,n);!a.push||o===s?g(a.path):(e.history.pushState({[Pv]:i},``,o),s=o)},replaceRoute(e){if(!r||!e||f())return;let t=oi(e);t!=null&&!u&&g(t)},pushRoute(t){if(!r||!t||f())return;let o=oi(t);if(o==null)return;let c=u!==null;++a,u=null,o=Ye(o,n),o!==s&&(e.history.pushState({[Pv]:i},``,o),s=o),c&&d?.()},reset({force:t=!1}={}){if(++a,u=null,r||t){try{e.sessionStorage?.removeItem(Fv)}catch{}r=!1,i=null,o=null,g(`/`)}}}}var G=typeof window>`u`?null:Rv(window);function zv(e){return I()&&!F.managedSession?.publicShare&&tt(F.managedSession?.role,`triage`)&&!!(e?._managedReportId&&e.id)}function Bv(e){let t=e?.teams?.find(t=>t.id===e.teamId);return t?!t.cacheKey||!Array.isArray(t.reports)||t.reports.some(e=>!e.cacheKey)?e.teams:JSON.stringify([t.cacheKey,t.reports.map(e=>[e.id,e.cacheKey,e.visible!==!1]).toSorted()]):null}var Vv=class{constructor({context:e,fetchWorkspace:t,changed:n=()=>{},now:r=Date.now}){this.getContext=e,this.fetchWorkspace=t,this.changed=n,this.now=r,this.entries=new Map,this.required=new Set,this.expires=0,this.context=null,this.scope=null,this.timer=null,this.run=null}reset(){this.run?.abort(),this.run=null,clearTimeout(this.timer),this.timer=null,this.entries.clear(),this.required.clear(),this.expires=0,this.context=null,this.scope=null}syncContext(){let e=this.getContext();if(e?.key!==this.context?.key||e?.teamId!==this.context?.teamId||e?.reportId!==this.context?.reportId||e?.teams!==this.context?.teams){let t=Bv(e);(e?.key!==this.context?.key||e?.teamId!==this.context?.teamId||e?.reportId!==this.context?.reportId||t!==this.scope)&&this.reset(),this.context=e,this.scope=t}return this.scope===null?null:this.context}schedule(){!this.timer&&!this.run&&(this.timer=setTimeout(()=>{this.timer=null,this.flush()},0))}read(e,{refreshIfMissing:t=!1}={}){let n=this.syncContext()?.teamId&&Xh(e);if(!n)return null;let r=Zh(n),i=this.entries.get(r)??null;return t&&!i&&(this.run?this.required.add(r):this.expires=0),this.expires<=this.now()&&this.schedule(),i}async flush(){let e=this.syncContext();if(!e?.teamId||this.run||this.expires>this.now())return;let t=this.run=new AbortController,n;try{n=await this.fetchWorkspace(e.teamId,t.signal,e.reportId)}catch{n=null}if(this.syncContext(),this.run!==t||t.signal.aborted)return;this.entries.clear();for(let e of Array.isArray(n)?n:[]){let t=Xh(e?.url);if(t&&typeof e.title==`string`&&[`open`,`draft`,`closed`,`merged`].includes(e.status)){let n=t.kind===`issue`&&e.status===`closed`?Gh(e.stateReason):null;this.entries.set(Zh(t),{title:e.title,description:typeof e.description==`string`?e.description:null,status:e.status,stateReason:n})}}this.expires=this.now()+6e4,this.run=null;let r=[...this.required].some(e=>!this.entries.has(e));this.required.clear(),r&&(this.expires=0,this.schedule()),this.changed()}},Hv=new Set,Uv=new Vv({context:()=>{let e=F.managedSession;return I()&&e?.id&&F.currentManagedTeam?{key:JSON.stringify([e.id,e.role,e.csrfToken]),teamId:F.currentManagedTeam,reportId:F.managedTeams.find(e=>e.id===F.currentManagedTeam)?.reports.find(e=>e.id===F.currentManagedReport&&e.visible===!1)?.id??null,teams:F.managedTeams}:null},fetchWorkspace:ax,changed:()=>{for(let e of Hv)e()}});function Wv(e){return Hv.add(e),()=>Hv.delete(e)}function Gv(){Uv.reset();for(let e of Hv)e()}function Kv(e){F.currentManagedTeam===e&&Gv()}function qv(e,t,n){if(F.currentManagedTeam!==e)return;let r=[...t].map(e=>({id:e,issue:F.managedIssues.get(e)}));r.some(({id:e,issue:t})=>n.has(e)&&t?.url!==n.get(e).url)&&Kv(e);for(let{id:e,issue:t}of r)t?.url&&!n.has(e)&&Uv.read(t.url,{refreshIfMissing:!0}),t?.autoFix&&t.autoFix!==n.get(e)?.autoFix&&Uv.read(t.autoFix,{refreshIfMissing:!0});let i=r.find(({issue:e})=>e?.url)?.issue.url;i&&Uv.read(i)}var Jv={claude:{name:`Claude`,mark:`anthropic`,accounts:[{id:81847,logins:[`claude`]},{logins:[`claude[bot]`]}],names:[`Claude`],emails:[`noreply@anthropic.com`]},codex:{name:`Codex`,mark:`openai`,accounts:[{id:199175422,logins:[`chatgpt-codex-connector`,`chatgpt-codex-connector[bot]`]}],names:[`Codex`],emails:[`codex@openai.com`]},neo:{name:`Neo`,avatar:`app-3115942`,accounts:[{id:274065190,logins:[]},{id:268952163,logins:[]}],names:[],prefix:`neo/`,fingerprint:`🤖 Generated with [Neo](`},copilot:{name:`Copilot`,mark:`github-copilot`,accounts:[{id:198982749,logins:[`Copilot`,`copilot-swe-agent`]},{id:175728472,logins:[`Copilot`,`copilot-pull-request-reviewer`,`copilot-pull-request-reviewer[bot]`]}],names:[`Copilot`],prefix:`copilot/`},dependabot:{name:`Dependabot`,avatar:`app-29110`,accounts:[{id:49699333,logins:[`dependabot`,`dependabot[bot]`]}],names:[`dependabot[bot]`],prefix:`dependabot/`},actions:{name:`GitHub Actions`,avatar:`app-15368`,accounts:[{id:41898282,logins:[`github-actions`,`github-actions[bot]`]}],names:[`github-actions[bot]`]},cursor:{name:`Cursor`,accounts:[],names:[`Cursor Agent`],emails:[`cursoragent@cursor.com`]}},Yv=Object.entries(Jv),Xv=new Map;for(let[e,{accounts:t}]of Yv)for(let{id:n,logins:r}of t)for(let t of r)Xv.set(t.toLowerCase(),{agent:e,ids:[...Xv.get(t.toLowerCase())?.ids??[],n]});var Zv=new Map(Yv.flatMap(([e,{accounts:t}])=>t.flatMap(({id:t,logins:n})=>t!==void 0&&n.length===0?[[t,e]]:[]))),Qv=new Map(Yv.flatMap(([e,{names:t}])=>t.map(t=>[t.toLowerCase(),e])));new Map(Yv.flatMap(([e,{emails:t=[]}])=>t.map(t=>[t,e])));function $v(e,t=null,n=null){if(typeof e!=`string`)return typeof n==`string`?Qv.get(n.trim().toLowerCase())??null:null;let r=Xv.get(e.toLowerCase());return r&&(t===null||r.ids.includes(void 0)||r.ids.includes(t))?r.agent:t===null?null:Zv.get(t)??null}function ey(e,t){let n=new Set([...t].map(t=>$v(e,t)));return n.size===1&&!n.has(null)}var ty=new Map([[`author`,`authorId`],[`authorLogin`,`authorId`],[`mergedBy`,`mergedById`],[`login`,`id`]]),ny=/^[A-Za-z\d][A-Za-z\d-]{0,38}(?:\[bot\])?$/u,ry=8,iy=e=>Number.isSafeInteger(e)&&e>0?e:null;function ay(e){let t=new Map;oy(e,t,0);let n=new Map;for(let[e,r]of t)n.set(e.toLowerCase(),new Set([...n.get(e.toLowerCase())??[],...r]));return new Map([...t.keys()].map(e=>{let t=n.get(e.toLowerCase());return t.size<=1?[e,[...t][0]??null]:[e,ey(e,t)?null:`ambiguous`]}))}function oy(e,t,n){if(n>ry||typeof e!=`object`||!e)return;if(Array.isArray(e)){for(let r of e)oy(r,t,n+1);return}let r=e;for(let[e,i]of Object.entries(r)){let a=ty.get(e);if(a&&typeof i==`string`&&ny.test(i)){let e=iy(r[a]);t.set(i,new Set([...t.get(i)??[],...e===null?[]:[e]]))}else oy(i,t,n+1)}}var sy=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="M23.75 4.48c-.26-.12-.37.11-.51.24l-.14.13c-.37.4-.8.66-1.37.63a2.7 2.7 0 0 0-2.17.85 2 2 0 0 0-1.24-1.55c-.36-.16-.71-.31-.96-.65-.17-.24-.22-.51-.3-.78-.06-.16-.11-.32-.3-.35-.2-.03-.27.14-.35.28q-.46.87-.43 1.84a4 4 0 0 0 1.84 3.4q.2.12.13.32l-.26.83c-.06.18-.14.22-.33.14a6 6 0 0 1-1.74-1.18c-.86-.83-1.63-1.74-2.6-2.46l-.69-.47c-.98-.96.13-1.74.4-1.84.26-.1.09-.43-.79-.42-.87 0-1.67.3-2.68.68l-.47.14a10 10 0 0 0-2.88-.1 6.2 6.2 0 0 0-4.5 2.62 7.7 7.7 0 0 0-1.26 6.07 9.3 9.3 0 0 0 3.36 5.65 9 9 0 0 0 6.44 2.14 7.6 7.6 0 0 0 5-1.86c.46.24.96.33 1.77.4.63.06 1.24-.03 1.7-.13.74-.15.7-.84.43-.96-2.16-1-1.68-.6-2.11-.92 1.1-1.3 2.74-2.65 3.39-7 .05-.35 0-.57 0-.85 0-.17.03-.24.23-.26a4 4 0 0 0 1.54-.47c1.4-.77 1.96-2.02 2.1-3.52.02-.23 0-.47-.25-.59M11.58 18c-2.09-1.64-3.1-2.18-3.52-2.16-.4.02-.32.47-.23.76s.2.49.37.74c.11.17.19.42-.12.6-.67.42-1.84-.13-1.9-.16a8.7 8.7 0 0 1-3.3-3.3 10 10 0 0 1-1.3-4.5c-.01-.38.1-.51.48-.58a5 5 0 0 1 1.53-.04 9.6 9.6 0 0 1 5.47 2.77c.87.86 1.53 1.89 2.2 2.9a14 14 0 0 0 2.48 2.9q.51.45.9.68c-.8.1-2.15.11-3.06-.61m1-6.44a.3.3 0 0 1 .42-.29.3.3 0 0 1 .2.3.3.3 0 0 1-.31.3.3.3 0 0 1-.3-.31m3.11 1.6q-.3.13-.59.16a1.3 1.3 0 0 1-.8-.26c-.27-.23-.47-.36-.55-.76a2 2 0 0 1 .02-.58c.07-.33-.01-.54-.24-.73q-.3-.22-.69-.2l-.25-.08a.25.25 0 0 1-.12-.36 1 1 0 0 1 .2-.2c.35-.2.76-.14 1.14.01.35.14.62.4 1 .78.4.45.46.58.69.92q.27.38.44.84.1.3-.25.46"/></svg>`,cy=A`<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" viewBox="0 0 24 24"><path fill="#4285F4" d="M21.35 12.27q0-1.19-.2-2.27H12v4.3h5.24a4.5 4.5 0 0 1-1.94 2.94v2.45h3.15c1.85-1.7 2.9-4.2 2.9-7.42"/><path fill="#34A853" d="M12 21.8c2.64 0 4.86-.87 6.48-2.35L15.33 17a6 6 0 0 1-3.33.92 5.9 5.9 0 0 1-5.51-4.06H3.24v2.52A9.8 9.8 0 0 0 12 21.8"/><path fill="#FBBC05" d="M6.49 13.86a6 6 0 0 1 0-3.72V7.62H3.24a9.8 9.8 0 0 0 0 8.76z"/><path fill="#EA4335" d="M12 6.08c1.43 0 2.72.49 3.74 1.45l2.8-2.8A9.3 9.3 0 0 0 12 2.2a9.8 9.8 0 0 0-8.76 5.42l3.25 2.52A5.9 5.9 0 0 1 12 6.08"/></svg>`,ly=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="m9.27 15.29 7.98-5.9c.39-.29.95-.17 1.13.27a6.6 6.6 0 0 1-1.4 7.17 6.5 6.5 0 0 1-7.15 1.41L7.1 19.5a8.96 8.96 0 0 0 13.95-9.38l.01.01c-.98-4.23.24-5.92 2.75-9.38L24 .5l-3.3 3.3zm-1.65 1.42c-2.79-2.67-2.3-6.8.07-9.18a6.7 6.7 0 0 1 7.17-1.43l2.7-1.25a8 8 0 0 0-1.82-1 9 9 0 0 0-9.76 1.97 9 9 0 0 0-1.96 9.76c1.02 2.5-.65 4.25-2.34 6.03-.6.63-1.2 1.25-1.68 1.92z"/></svg>`,uy=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="M6.9 4c1.91 0 3.51.93 5.43 3.38L12.6 7q.28-.36.58-.7l.31-.36C14.6 4.8 15.8 4 17.23 4a5 5 0 0 1 3.49 1.52l.21.2c1.73 1.77 2.92 4.72 3.06 8.04v.39l.01.25q0 2.27-.82 3.7l-.14.23-.1.15q-.45.64-1.1 1l-.26.15-.08.04-.3.12a4 4 0 0 1-1.34.2q-.78 0-1.43-.2a4.4 4.4 0 0 1-1.73-1.12l-.23-.24a22 22 0 0 1-2.49-3.59l-1.43-2.4-.54-.9-1.77 3.13-.34.6C7.6 19.15 6.23 20 4.36 20c-1.21 0-2.2-.42-2.94-1.18l-.17-.19a5 5 0 0 1-1.04-2.18l-.07-.32a9 9 0 0 1-.13-1.3L0 14.48q0-1.13.17-2.23l.1-.58c.3-1.53.83-2.95 1.54-4.15l.2-.34C3.2 5.34 4.82 4.1 6.64 4zm-.04 2.62h-.2c-.83.09-1.6.68-2.25 1.58l-.14.2v.02a11 11 0 0 0-1.46 3.84v.03a13 13 0 0 0-.21 2.25v.19q0 .27.04.54l.04.29q.15.75.49 1.2l.11.14q.46.5 1.17.5c1.1 0 1.8-.68 3.7-3.64l2.17-3.4.46-.7-.14-.2C9.11 7.3 8.08 6.62 6.86 6.62m10.2-.56-.18.01q-.93.08-1.82.93l-.2.2q-.64.7-1.36 1.8l.27.4.55.86.29.48 1.4 2.33.7 1.12q.84 1.37 1.4 2.08l.21.26q.41.48.78.68l.1.05q.34.14.72.13.27 0 .52-.07.5-.16.81-.64l.1-.16.07-.16q.3-.7.3-1.79l-.01-.45c-.08-2.87-.94-5.37-2.2-6.8l-.18-.18a3.2 3.2 0 0 0-2.27-1.08"/></svg>`,dy=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24"><path fill="gold" d="M3.43 3.4h3.43v3.43H3.43zm13.71 0h3.43v3.43h-3.43z"/><path fill="#FFAF00" d="M3.43 6.83h6.86v3.43H3.43zm10.28 0h6.86v3.43h-6.86z"/><path fill="#FF8205" d="M3.43 10.26h17.14v3.43H3.43z"/><path fill="#FA500F" d="M3.43 13.69h3.43v3.42H3.43zm6.86 0h3.43v3.42h-3.43zm6.85 0h3.43v3.42h-3.43z"/><path fill="#E10500" d="M0 17.11h10.29v3.43H0zm13.71 0H24v3.43H13.71z"/></svg>`,fy=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="m1.05 16.92 9.54 2.55a21 21 0 0 0 .06 2.03l5.96 1.6a12 12 0 0 1-5.59.86l-.18-.02h-.04l-.09-.01-.1-.01-.15-.02-.1-.01-.11-.02-.32-.05h-.05l-.07-.02-.1-.02-.08-.02-.1-.02-.07-.01-.1-.02-.09-.02-.1-.03-.06-.01-.09-.03-.09-.02-.1-.02-.08-.03-.1-.03-.07-.02-.08-.02-.1-.03-.1-.03-.06-.02-.08-.03-.09-.03-.06-.02-.05-.02-.06-.02-.1-.04-.06-.02-.08-.03-.09-.04-.09-.03-.08-.04-.1-.04-.05-.02-.07-.03-.04-.02-.06-.03-.1-.05-.06-.02-.1-.05-.06-.03-.08-.04-.09-.04-.1-.05-.04-.02-.1-.06-.06-.03-.06-.03-.05-.03-.1-.05-.05-.03-.05-.03-.07-.04-.09-.05-.09-.06-.05-.03-.08-.06-.07-.03-.07-.05-.07-.05-.06-.04-.05-.03-.05-.03-.04-.03-.04-.03-.06-.04-.07-.05-.07-.05-.08-.06-.05-.04-.08-.06-.07-.06-.09-.06-.04-.04-.07-.05-.07-.06-.1-.07-.04-.04-.04-.04-.05-.04-.04-.04-.06-.05-.07-.06-.07-.06-.06-.06-.07-.06-.05-.05-.1-.09-.09-.1-.03-.02-.04-.04-.07-.07-.05-.06-.05-.05-.17-.18-.08-.09-.06-.07-.07-.08-.04-.04-.05-.07-.06-.06-.05-.06-.03-.03-.04-.06-.07-.08-.04-.05-.05-.07-.02-.02a12 12 0 0 1-1.44-2.4m-1.02-5.8 11.36 3.04a21 21 0 0 0-.47 2.01l10.81 2.9a12 12 0 0 1-1.84 2L.66 15.92l-.02-.04-.03-.1-.05-.16-.01-.02-.2-.74-.04-.13-.02-.08-.02-.1-.02-.08-.01-.09-.02-.08-.02-.1-.07-.42-.02-.12v-.08l-.02-.1-.02-.17v-.04a12 12 0 0 1-.04-2.15m1.6-5.15 11.94 3.2q-.54.9-1 1.87l11.29 3.03q-.22 1.22-.67 2.36l-11.55-3.09L.12 10.26l.02-.1v-.05l.02-.07.01-.08.02-.1.09-.44.03-.13.02-.08.02-.1.07-.27.03-.1.02-.08.03-.1.03-.08.03-.1.02-.08.03-.1a12 12 0 0 1 1.01-2.23zm4.44-4.4L17.35 4.6a21 21 0 0 0-1.69 1.72l7.83 2.1q.4 1.28.51 2.66L2.1 5.2l.05-.06.03-.04.04-.06.04-.06.06-.08.05-.07.07-.09.05-.06.05-.07.06-.07.06-.08.05-.07.07-.07.05-.07.07-.08.05-.06.07-.08.06-.06.06-.07.06-.06.07-.08.06-.06.06-.07.17-.17.1-.1.06-.05.07-.07a12 12 0 0 1 2.28-1.68M12.02 0h.41l.08.01h.16l.09.01h.1l.15.02h.08l.05.01h.08l.08.02h.04l.1.01.06.01.1.01.09.01.04.01.06.01.2.03.08.01.06.02.14.02.1.02.1.02.05.01.08.02h.04l.06.02.04.01.07.02h.05l.07.02.1.03.1.03.12.03.11.03.05.02.07.02.08.02.07.02.05.02.05.01.08.03.1.03.1.04.05.02.06.02.1.03.1.04.12.05.1.04.05.02.06.02.04.02.06.03.04.01.06.03.1.05.1.04.08.04.08.03.06.03.09.05.09.04.1.06.05.02.05.03.05.02.06.04.04.02.05.03.1.05.1.06.08.05.06.03.05.03.1.06.09.06.1.06.03.02.07.05.08.05.04.03.06.04.06.04.03.02.16.11.08.06.07.05.05.05.09.06.08.06.04.03.05.05.09.06.07.07.09.07q1.07.9 1.9 2.03L7.23 1l.06-.02.07-.03.08-.04.09-.03q.15-.07.34-.13l.1-.04.09-.03.08-.03.1-.03.26-.09.1-.02.08-.03.1-.03.08-.02.1-.03.09-.02.09-.02.1-.02.09-.03.09-.02.1-.02.08-.02.1-.02.1-.01.1-.02.08-.02.1-.02h.1l.09-.02.1-.02.1-.01.08-.01.11-.01.09-.01.1-.01.29-.03h.1l.1-.01h.1l.1-.01h.29z"/></svg>`,py=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="M10.21 8.98V7.62l.39-.02c3.6-.12 5.96 3.18 5.96 3.18s-2.55 3.65-5.28 3.65a3 3 0 0 1-1.07-.17v-4.11c1.4.17 1.68.8 2.52 2.25l1.88-1.62a5 5 0 0 0-3.67-1.85zm0-4.47v2.02l.39-.02c5-.17 8.26 4.23 8.26 4.23s-3.75 4.69-7.65 4.69q-.5 0-1-.1v1.25q.42.06.84.06c3.62 0 6.25-1.9 8.79-4.17.42.35 2.15 1.2 2.5 1.57-2.42 2.08-8.05 3.76-11.24 3.76q-.45 0-.9-.05v1.76H24v-15zm0 9.75v1.07c-3.36-.61-4.29-4.2-4.29-4.2a7.2 7.2 0 0 1 4.29-2.14v1.17a3.2 3.2 0 0 0-2.5 1.17s.6 2.28 2.5 2.94m-5.96-3.3a8.3 8.3 0 0 1 5.96-3.34v-1.1C5.8 6.9 2 10.72 2 10.72s2.16 6.43 8.21 7.02v-1.17c-4.44-.57-5.96-5.61-5.96-5.61"/></svg>`,my=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="M18.65 3.87a5.09 5.09 0 1 1 0 10.17l5.05 5.05c.64.64.19 1.74-.72 1.74H8.48a8.48 8.48 0 0 1 0-16.96zM8.48 7.26a5.09 5.09 0 1 0 0 10.18 5.09 5.09 0 0 0 0-10.18"/></svg>`,hy=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="m12.6 1.34 1.18 2.08a.2.2 0 0 0 .15.09h5.56q.26 0 .44.32L21.4 6.4c.19.34.24.48.02.84l-.76 1.3-.37.66c-.1.2-.22.28-.04.51l2.66 4.64c.17.3.1.5-.05.77q-.65 1.17-1.33 2.34c-.16.27-.35.37-.68.37q-1.16-.03-2.33.01a.1.1 0 0 0-.08.05l-2.7 4.74c-.17.3-.38.37-.73.37h-3.02a.5.5 0 0 1-.46-.27l-1.34-2.32a.1.1 0 0 0-.08-.05H4.98q-.42.05-.8-.1l-1.6-2.77a.5.5 0 0 1 0-.54l1.2-2.12a.2.2 0 0 0 0-.2L1.9 11.38l-.79-1.4c-.16-.31-.17-.5.1-.96L2.6 6.57q.18-.34.58-.34h2.59a.1.1 0 0 0 .1-.06l2.81-4.9a.5.5 0 0 1 .42-.24h1.59L11.7 1c.35 0 .73.03.9.34m-3.43.4-.05.03L6.25 6.8a.2.2 0 0 1-.13.08H3.25q-.08 0-.04.07L9.02 17.1q.04.06-.03.06l-2.8.01a.2.2 0 0 0-.2.12L4.67 19.6q-.06.12.07.12h5.72q.06 0 .1.07l1.4 2.45q.08.12.14 0l5-8.76.8-1.38a.1.1 0 0 1 .09 0l1.42 2.53a.1.1 0 0 0 .1.06l2.77-.02.04-.02v-.04l-2.9-5.09a.1.1 0 0 1 0-.1l.29-.52 1.12-1.97q.03-.06-.04-.06H9.2q-.09 0-.04-.08l1.43-2.5a.1.1 0 0 0 0-.12l-1.37-2.4zm6.3 8.02q.06 0 .03.06l-.84 1.47-2.6 4.58-.06.03-.05-.03L8.5 9.84q-.03-.05.03-.05l.21-.02z"/></svg>`,gy=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24"><path fill="#FF7764" d="M7.52 2a4.47 4.47 0 0 0 8.96 0h4.55A9 9 0 0 1 12 10.98 9 9 0 0 1 2.98 2z"/><path fill="#FF563F" d="M16.48 22a4.47 4.47 0 0 0-8.96 0H2.98A9 9 0 0 1 12 13.02 9 9 0 0 1 21.03 22z"/></svg>`,_y=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="M12 0C8.02 0 4.76.26 2.5 2.52.22 4.78 0 8.03 0 12.02c0 3.97.23 7.23 2.5 9.49C4.75 23.77 8.01 24 12 24s7.24-.23 9.5-2.5c2.28-2.24 2.5-5.5 2.5-9.48s-.23-7.24-2.5-9.5S15.98 0 12 0M4.9 7.4h5.63c1.47 0 3 .07 3.76.83.75.75.83 2.23.83 3.68v4.54a.15.15 0 0 1-.15.15h-1.95a.15.15 0 0 1-.15-.15v-4.62c0-.8-.04-1.63-.46-2.05-.36-.36-1.03-.44-1.72-.46H7.16a.15.15 0 0 0-.15.15v6.98a.15.15 0 0 1-.15.15H4.9a.15.15 0 0 1-.15-.15v-8.9a.15.15 0 0 1 .15-.14m12.14 0h1.95a.15.15 0 0 1 .15.15v8.9a.15.15 0 0 1-.15.14h-1.95a.15.15 0 0 1-.15-.14v-8.9a.15.15 0 0 1 .15-.14m-8.12 3.55h2.05q.13 0 .15.15v5.35a.15.15 0 0 1-.15.15H8.92a.15.15 0 0 1-.15-.15V11.1a.15.15 0 0 1 .15-.15"/></svg>`,vy=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="M12.1 2 9.94 4.95H.65L2.83 2zm11.15 17.05L21.08 22h-9.24L14 19.05zM24 2 9.26 22H0L14.74 2z"/></svg>`,yy=e=>A`<svg width="1em" height="1em" fill="currentColor" viewBox="4 5 8 8" aria-hidden="true"><path d="${e}"></path></svg>`,by=yy(Ki),xy=yy(qi),Sy={anthropic:by,deepseek:sy,"github-copilot":A`<svg width="1em" height="1em" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path d="${Ji}"></path></svg>`,google:cy,meta:uy,mistralai:dy,moonshot:fy,moonshotai:fy,nvidia:py,openai:xy,openrouter:my,qwen:hy,unbiased:gy,xiaomi:_y,"x-ai":ly,"z-ai":vy},Cy=A`<svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><rect x="4" y="4" width="12" height="12" rx="3"/><path d="M8 1v3m4-3v3M8 16v3m4-3v3M1 8h3m-3 4h3m12-4h3m-3 4h3"/></svg>`;function wy(e){return Object.hasOwn(Sy,e)?Sy[e]:Cy}var Ty=new Map,Ey=new Map,Dy=new Set;function Oy(e){let{users:t,...n}=e??{},r=t??{};for(let[e,t]of ay(n)){let n=e.toLowerCase();t===`ambiguous`||t!==null&&Ey.has(n)&&Ey.get(n)!==t&&!ey(e,[t,Ey.get(n)])?Dy.add(n):t!==null&&Ey.set(n,t),(!Object.hasOwn(r,e)||Dy.has(n))&&Ty.delete(n)}for(let[e,t]of Object.entries(r))Dy.has(e.toLowerCase())||(typeof t?.agent==`string`&&Object.hasOwn(Jv,t.agent)?Ty.set(e.toLowerCase(),{agent:t.agent}):typeof t?.id==`string`&&typeof t.login==`string`?Ty.set(e.toLowerCase(),{id:t.id,login:t.login,name:typeof t.name==`string`&&t.name.trim()?t.name.trim():null}):Ty.delete(e.toLowerCase()));return e}var ky=0;function Ay(){Ty.clear(),Ey.clear(),Dy.clear(),Fy.clear(),Iy.clear(),ky++}async function jy(e){let t=ky,n=Py,r=await e();return t!==ky||(Oy(r),n!==Py&&Ry(Ny.userId,Ny.profile)),r}var My=new Map,Ny=null,Py=0,Fy=new Set,Iy=new Set;function Ly(e,t,n=!1,r=null){n&&My.set(e,(My.get(e)??0)+1),r&&Fy.add(r.login.toLowerCase()),Number.isSafeInteger(r?.githubId)&&Iy.add(r.githubId),Ny={userId:e,profile:t},Py++,Ry(e,t)}function Ry(e,t){for(let[n,r]of Ty)r.id===e&&((Ey.has(n)?Iy.has(Ey.get(n)):Fy.has(n))?Ty.delete(n):Ty.set(n,{...r,login:t.login,name:t.name?.trim()||null}))}function zy(e){let t=typeof e==`string`?Ty.get(e.toLowerCase()):null;return t?.id?t:null}var By=e=>Ty.get(e.toLowerCase())?.agent??null,Vy=e=>A`<img src="${e}" alt="" loading="lazy" decoding="async" @error="${e=>e.currentTarget.remove()}">`,Hy=e=>Vy(`/api/avatar/${encodeURIComponent(e.id)}${My.has(e.id)?`?v=${My.get(e.id)}`:``}`);function Uy(e,t){let{name:n,mark:r,avatar:i}=Jv[e];return A`<span class="app-user" data-tooltip="${t}">${r||i?A`<span class="${`app-user-mark is-${e}`}" aria-hidden="true">${r?wy(r):Vy(`/api/avatar/${i}`)}</span>`:A`<span class="app-user-avatar" aria-hidden="true">${n[0]}</span>`}<span class="app-user-name">${n}</span></span>`}function Wy(e){let t=typeof e==`string`?By(e):null;if(t)return Jv[t].name;let n=zy(e);return n?n.name??n.login:e}function Gy(e,t=e){let n=typeof e==`string`?By(e):null;if(n)return Uy(n,`@${e} on GitHub`);let r=zy(e);return r?Ky(r,e):t}function Ky(e,t=e.login){return A`<span class="app-user" data-tooltip="${`@${t} on GitHub`}"><span class="app-user-avatar" aria-hidden="true">${(e.name??e.login)[0].toUpperCase()}${Hy(e)}</span><span class="app-user-name">${e.name??e.login}</span></span>`}function qy(e){let t=new Map;for(let n of e){let e=By(n),r=e?`agent:${e}`:zy(n)?.id??`login:${n.toLowerCase()}`;t.has(r)||t.set(r,n)}return[...t.values()]}function Jy(e,t=null){return typeof e==`string`?By(e):$v(null,null,t)}function Yy(e,t=null,n=t??e??``){if(typeof e==`string`)return Gy(e,n);let r=Jy(null,t);return r?Uy(r,t):n}function Xy(e,t=null){if(typeof e==`string`)return Wy(e);let n=Jy(null,t);return n?Jv[n].name:t}var Zy=3,Qy=e=>typeof e==`string`&&Object.hasOwn(Jv,e)?e:null,$y=e=>e.length>1?`${e.slice(0,-1).join(`, `)} and ${e.at(-1)}`:e[0]??``;function eb({login:e=null,name:t=null,agent:n=null}){let r=Qy(n)??Jy(e,t);if(r){let{name:e,mark:t,avatar:n}=Jv[r];return A`<span class="${`commit-avatar is-${r}`}">${t?wy(t):n?Vy(`/api/avatar/${n}`):e[0]}</span>`}let i=zy(e),a=(i?.name??i?.login??t??e??``).trim()[0]?.toUpperCase()??`?`;return A`<span class="commit-avatar">${a}${i?Hy(i):M}</span>`}function tb(e,t,n=null){return Qy(n)&&t?t:typeof e==`string`&&(zy(e)||By(e))?Wy(e):t??Xy(e,t)??e??``}function nb(e,t=null,n=[]){let r=(Array.isArray(n)?n:[]).filter(e=>typeof e?.name==`string`||typeof e?.login==`string`).slice(0,Zy);if(r.length===0)return Yy(e,t);let i=tb(e,t),a=r.map(e=>tb(e.login??null,e.name??null,e.agent));return A`<span class="app-user commit-authors" data-tooltip="${$y([i,...a])}"><span class="commit-avatars" aria-hidden="true">${[{login:e,name:t},...r].map(eb)}</span><span class="app-user-name">${i}</span><span class="sr-only"> with ${$y(a)}</span></span>`}var rb=null,ib=null;function ab(){return ib?.getPreviewRole()??null}function ob(){ib?.setPreviewRole(null)}function sb(){Ay(),cb=null,ib?.resetManagedAppState()}var cb=null;function lb(e){let t=e?`${e.id}\0${e.role}`:null;t!==cb&&(Ay(),cb=t),ib?.setManagedAppSession(e)}function ub(e){return ib?.setManagedReportCatalog(e)??new Set}function db(e,t=F.currentManagedTeam){return ib?.readReportSources(e,t)}function fb(){ib?.clearReportSources(),ib?.clearFindingHistory()}async function pb(e,t=F.currentManagedTeam){return(await K()).fetchReportSources(e,t)}function K(){return rb||(rb=(async()=>{try{return ib=await import(`./client-managed.js`),ib}catch(e){throw rb=null,e}})(),rb)}async function mb(e){return(await K()).probeSession(e)}async function hb(e){return(await K()).probeTeams(e)}async function gb(e){return(await K()).fetchManagedBundleCatalog(e)}async function _b(e,t,n){return(await K()).fetchNpmPackage(e,t,n)}async function vb(e,t,n,r){return(await K()).fetchRepositoryCode(e,t,n,r)}async function yb(e){return(await K()).fetchBrowsableRepositories(e)}async function bb(e,t){return(await K()).fetchRepositoryRefs(e,t)}async function xb(e,t,n,r){return(await K()).fetchRepositoryContents(e,t,n,r)}function Sb(e,t,n,r){return jy(async()=>(await K()).fetchRepositoryHistory(e,t,n,r))}async function Cb(e,t,n,r){return(await K()).fetchRepositoryChanges(e,t,n,r)}async function wb(e,t,n,r){return(await K()).fetchRepositoryTree(e,t,n,r)}function Tb(e,t){return jy(async()=>(await K()).fetchRepositoryAgents(e,t))}function Eb(e,t,n){return jy(async()=>(await K()).fetchRepositoryIssues(e,t,n))}function Db(e,t,n){return jy(async()=>(await K()).fetchRepositoryItem(e,t,n))}async function Ob(e,t,n){return(await K()).fetchPullDependencies(e,t,n)}async function kb(e,t,n){return(await K()).fetchPullDependenciesOf(e,t,n)}async function Ab(e,t,n){return(await K()).fetchTeamDependencies(e,t,n)}async function jb(e,t,n){return(await K()).fetchNpmDeltas(e,t,n)}function Mb(e,t,n){return jy(async()=>(await K()).fetchRepositoryPulse(e,t,n))}function Nb(e,t,n,r){return jy(async()=>(await K()).fetchRepositoryPulseItems(e,t,n,r))}async function Pb(e,t){return(await K()).fetchNpmVersions(e,t)}async function Fb(e,t){return(await K()).fetchNpmStats(e,t)}async function Ib(e,t){return(await K()).fetchNpmAdvisories(e,t)}async function Lb(e,t,n){return(await K()).fetchNpmTags(e,t,n)}async function Rb(e,t,n,r){return(await K()).fetchNpmRisk(e,t,n,r)}async function zb(e,t,n){return(await K()).fetchNpmSocket(e,t,n)}async function Bb(e,t,n){return(await K()).fetchNpmProvenance(e,t,n)}async function Vb(e,t,n,r){return(await K()).fetchPrettyBundleFile(e,t,n,r)}async function Hb(e,t,n,r){return(await K()).fetchPrettyNpmFiles(e,t,n,r)}async function Ub(e,t,n,r,i){return(await K()).fetchPrettyNpmFile(e,t,n,r,i)}async function Wb(e,t,n,r){return(await K()).fetchPrettyBundleChanges(e,t,n,r)}async function Gb(e,t,n,r,i){return(await K()).fetchPrettyNpmChanges(e,t,n,r,i)}async function Kb(e,t,n,r){return(await K()).fetchBundleRenameDiff(e,t,n,r)}async function qb(e,t,n,r,i){return(await K()).fetchNpmRenameDiff(e,t,n,r,i)}async function Jb(e,t,n,r){return(await K()).fetchBundleRenameDiffs(e,t,n,r)}async function Yb(e,t,n,r,i){return(await K()).fetchNpmRenameDiffs(e,t,n,r,i)}async function Xb(e,t,n,r){return(await K()).fetchBundleTypeOnly(e,t,n,r)}async function Zb(e,t,n,r,i){return(await K()).fetchNpmTypeOnly(e,t,n,r,i)}async function Qb(e,t,n){return(await K()).fetchBundleComparison(e,t,n)}async function $b(e,t,n,r){return(await K()).fetchNpmComparison(e,t,n,r)}async function ex(e){return(await K()).openManagedShareDialog(e,``,F.managedSession)}async function tx({render:e,...t}){let n=()=>F.managedSession?.id===t.session.id&&F.managedSession?.csrfToken===t.session.csrfToken&&F.currentManagedTeam===t.teamId,r=await K();return n()?r.openManagedIssueDialog({...t,isCurrent:n,onCreated:r=>{if(!n())return;let i=t.context.findingId,a=F.managedIssues.get(i),o=eg([i],{[i]:{url:r,autoFix:a?.url===r?a.autoFix:null}});Kv(t.teamId),o&&e()}}):null}async function nx(e){if(!zv(e))return null;let t=F.reports,n=F.managedSession,r=F.currentManagedTeam,i=()=>zv(e)&&F.managedSession===n&&F.currentManagedTeam===r&&F.reports===t,a=await K();return i()?a.openFindingHistoryDialog({finding:e,teamId:r,isCurrent:i}):null}async function rx(e,t){return(await K()).fetchTeamAnnotations(e,t)}async function ix(e,t=F.currentManagedTeam,n){return(await K()).fetchReportTriage(e,t,n)}async function ax(e,t,n){return(await K()).fetchFixes(e,t,n)}async function ox(e,t=F.currentManagedTeam,n){return(await K()).fetchReportComments(e,t,n)}async function sx(e,t,n,r=F.currentManagedTeam){return(await K()).saveReportComment(e,t,n,r)}async function cx(e,t,n,r,i=F.currentManagedTeam){return(await K()).deleteReportComment(e,t,n,r,i)}async function lx(e,t,n,r=F.currentManagedTeam){return(await K()).pushReportTriage(e,t,n,r)}async function ux(e){return e&&G?.rememberFinding(),(await K()).login(e)}async function dx(e){return(await K()).logout(e)}async function fx(e){return(await K()).stopViewing(e)}async function px(e){return(await K()).fetchProfile(e)}async function mx(e,t,n){return(await K()).chooseProfileAccounts(e,t,n)}async function hx(e,t,n){return(await K()).unlinkGithubAccount(e,t,n)}async function gx(e,t){return(await K()).fetchBundleMetadata(e,t)}async function _x(e,t){return(await K()).fetchBundleContents(e,t)}async function vx(e,t){return(await K()).fetchTeamReports(e,t)}async function yx(e,t){return(await K()).fetchTeamTrees(e,t)}async function bx(e,t){return(await K()).watchTeamFeed(e,t)}async function xx(e,t=F.currentManagedTeam,n=``,r=!1,i=!1){return(await K()).fetchBundleAdvisories(e,t,n,r,i)}async function Sx(...e){return(await K()).dependencyReviews(...e)}async function Cx(...e){return(await K()).myDependencyReviews(...e)}async function wx(...e){return(await K()).teamDependencyReviews(...e)}async function Tx(...e){return(await K()).discardDependencyReview(...e)}async function Ex(...e){return(await K()).latestDependencyReview(...e)}var Dx=null,Ox=null,kx=0;function Ax(){return Dx||(Dx=document.createElement(`div`),Dx.id=`app-toast`,Dx.setAttribute(`role`,`status`),Dx.setAttribute(`aria-live`,`polite`),document.body.append(Dx),Dx)}function jx(e,{kind:t=`info`,duration:n=5200}={}){let r=Ax(),i=++kx;clearTimeout(Ox),Ox=null,r.className=t,r.textContent=e,requestAnimationFrame(()=>{kx===i&&r.classList.add(`visible`)});let a=()=>{kx===i&&Mx()};return n>0&&(Ox=setTimeout(a,n)),a}function Mx(){kx++,Dx&&(clearTimeout(Ox),Ox=null,Dx.classList.remove(`visible`))}function Nx(e,t){let n=e.find(e=>e.integrity===t);return e.filter(e=>e.integrity!==t&&(n?.managedId?e.managedId&&n.repoId!=null&&e.repoId===n.repoId:!e.managedId))}function Px(e){return{managedId:e.id,slug:e.slug,integrity:e.integrity,kind:e.kind,summary:e.summary,commitInfo:e.commitInfo??null,name:e.filename,size:e.byteSize,repoId:e.repoId,repoFullName:e.repoFullName,repoDirectory:e.repoDirectory??``}}function Fx(e){return e.currentView===`bundles`?e.bundleDetails?e.bundleDetails.managedId??null:e.bundles?.find(t=>t.integrity===e.selectedBundle)?.managedId??null:null}function Ix(e,t,n,r=`overview`,i=null,a=[t]){if(!t?.managedId)return null;let o=e.find(e=>e.id===n&&e.bundles?.some(e=>e.id===t.managedId));if(n!=null&&!o)return null;let s=[t,...a.filter(e=>e.managedId&&e.managedId===i?.compareId)];return fi({view:`bundles`,teamId:o?.id??null,bundleId:t.managedId,bundleTab:r,...i},e,s.map(e=>({id:e.managedId,slug:e.slug})))}function Lx(e,t=e.bundleDetailsTab){if(t!==`code`)return null;let n=e.bundleCodeFileRequest;if(n?.bundle===e.selectedBundle){if(n.file==null)return null;let{bundle:e,...t}=n;return t}if(!e.bundleSourceFile||e.bundleDetails?.integrity!==e.selectedBundle)return null;let r=Rt(It(e.bundleDetails)).numbers.get(e.bundleSourceFile);if(r==null)return null;let i=e.bundleSourceTargetLine;return i?.bundle!==e.selectedBundle||i.path!==e.bundleSourceFile?{file:r}:{file:r,line:i.line,...i.end>i.line?{endLine:i.end}:{}}}function Rx(e,t=e.bundleDetailsTab){let n=e.bundleCompare;if(t!==`compare`||!n?.target||n.bundle!==e.selectedBundle)return null;let r=e.bundles?.find(t=>t.integrity===e.selectedBundle);if(r?.npm)return{compareSpec:n.target,...ri(n.mode)};if(r?.repository)return/^[a-f\d]{40}$/u.test(n.target)?{compareCommit:n.target,...ri(n.mode)}:null;let i=Nx(e.bundles??[],e.selectedBundle).find(e=>e.integrity===n.target);return i?.managedId?{compareId:i.managedId,...ri(n.mode)}:null}function zx(e,t=e.bundleDetailsTab){let n=e.bundles?.find(t=>t.integrity===e.selectedBundle)?.npm,r=e.npmReview?.bundle===e.selectedBundle?e.npmReview:null,i=e.bundleCompare?.bundle===e.selectedBundle?e.bundleCompare:null;if(n&&t===`review`&&e.bundleDetailsTab===`compare`&&i?.target&&!(r?.started&&r.user===e.managedSession?.id))return{reviewPackage:n.name,reviewSpec:i.target};if(n&&t===`compare`&&e.bundleDetailsTab===`review`&&r?.reviewPackage===n.name)return{compareSpec:r.reviewSpec,...ri(i?.mode??`code`)};if(t===`review`&&r){let{bundle:e,started:t,user:n,resume:i,...a}=r;return a}return Lx(e,t)??Rx(e,t)}function Bx(e,t,n=()=>null){let r=e.bundles?.find(t=>t.integrity===e.selectedBundle)?.npm;if(!r||t===e.bundleDetailsTab)return;let i=zx(e,t);if(t===`review`&&(e.npmReview={...e.npmReview?.bundle===e.selectedBundle&&e.npmReview.started&&e.npmReview.user===e.managedSession?.id?e.npmReview:{bundle:e.selectedBundle,...i},resume:!0}),t!==`compare`)return;let a=e.npmReview?.bundle===e.selectedBundle&&e.npmReview.reviewPackage===r.name?e.npmReview:null,o=i?.compareSpec??a?.reviewSpec??n(r);o&&(e.bundleDetailsTab===`review`||!i?.compareSpec)&&(e.bundleCompare={bundle:e.selectedBundle,target:o,mode:i?.compareMode??`overview`})}function Vx(e){return[...new Map(e.flatMap(e=>e.bundles??[]).map(e=>[e.id,Px(e)])).values()]}function Hx(e,t,n){if(e.currentView!==`findings`&&e.currentView!==`files`&&e.currentView!==`links`||!e.currentManagedTeam)return!1;let r=t.find(t=>t.id===e.currentManagedTeam);if(n.has(`team:${e.currentManagedTeam}`)||!r||e.managedReports.some(e=>n.has(e.id)))return!0;let i=new Set(r.reports.filter(t=>e.currentManagedReport!==null||t.visible!==!1).map(e=>e.id));if(e.currentManagedReport!==null)return!i.has(e.currentManagedReport);let a=new Set(e.managedReports.map(e=>e.id));return i.size!==a.size||[...i].some(e=>!a.has(e))}async function Ux(e,t,{fetchCatalog:n,isCurrent:r,render:i,replaceRoute:a}){let o=Fx(e);if(!o||!r())return!0;let s=[`admin`,`manage`].includes(e.managedSession?.role),c,l=null;if(e.currentManagedTeam!=null||!s){let n=e=>e.bundles?.some(e=>e.id===o);l=t.find(t=>t.id===e.currentManagedTeam&&n(t))??t.find(n)}if(l)c=Vx(t);else if(s)try{c=(await n()).map(Px)}catch(e){if(e.status!==401&&e.status!==403)throw e;c=[]}else c=[];if(!r())return!0;let u=c.find(e=>e.managedId===o);return u?(e.bundles=c,e.currentManagedTeam=l?.id??null,i(),a(Ix(t,u,e.currentManagedTeam,e.bundleDetailsTab,zx(e),c)),!0):!1}var Wx={...at,[d]:ea},Gx=new Set(Object.keys(Oi)),Kx={...Oi,default:`DeepView`};function qx(e){let t=e._source??e.source;return t!=="default"&&Object.hasOwn(st,t)?t:null}function Jx(e){return Yx(e,Ru(e))}function Yx(e,t){if(t===d)return d;if(t!==void 0)return Gx.has(t)?t:`default`;let n=e.toLowerCase();return n.endsWith(`.generic-md`)?`markdown-generic`:n.endsWith(`.codex`)?`codex-security`:n.endsWith(`.md`)?`claude-security`:`default`}function Xx(e){return Ru(e)===d}var Zx=`.conflict-sev{display:inline-block;padding:1px .4rem;border-radius:3px;font-size:.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#fff;flex-shrink:0;&.sev-critical{background:var(--critical)}&.sev-high{background:var(--high)}&.sev-medium,&.sev-moderate{background:var(--medium)}&.sev-low{background:var(--low)}&.sev-high_bug{background:var(--high-bug)}&.sev-bug{background:var(--bug)}&.sev-informational,&.sev-info{background:var(--info)}&.sev-unrated{background:var(--low);color:var(--badge-low-text)}}
34
- `,Qx=`dialog{max-width:720px;width:min(94vw,720px)}header h3{margin:0 0 .25rem}header p{margin:0 0 .75rem;color:var(--muted);font-size:.82rem}.bulk{display:flex;gap:.4rem;margin-bottom:.7rem;padding-bottom:.7rem;border-bottom:1px solid var(--border)}.bulk button,.actions button{background:transparent;border:1px solid var(--border);color:var(--text);border-radius:var(--ui-radius, 5px);padding:.3rem .8rem;font:inherit;font-size:.78rem;&:hover{border-color:var(--accent);color:var(--accent)}&.primary{background:var(--accent);color:var(--surface);border-color:var(--accent)}&.primary:hover{filter:brightness(1.08)}}.list{list-style:none;margin:0;padding:0;max-height:60vh;overflow-y:auto;overscroll-behavior:none;-webkit-app-region:no-drag;app-region:no-drag;display:flex;flex-direction:column;gap:.5rem}.card{border:1px solid var(--border);border-radius:var(--ui-radius, 6px);padding:.55rem .7rem .6rem;background:rgb(from var(--text) r g b / .02)}.card-head{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-bottom:.35rem}.loc{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.76rem;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:1}.id{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.68rem;color:var(--muted);padding:1px .3rem;background:rgb(from var(--text) r g b / .05);border-radius:var(--ui-radius, 3px)}.desc{font-size:.78rem;color:var(--muted);margin-bottom:.55rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rows{display:flex;flex-direction:column;gap:.35rem}.row{display:grid;grid-template-columns:5rem 1fr 1fr;align-items:stretch;gap:.4rem}.row-label{color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;align-self:center}.choice{position:relative;display:flex;flex-direction:column;gap:.15rem;padding:.35rem .5rem;border:1px solid var(--border);border-radius:var(--ui-radius, 5px);min-width:0;&:has(input:checked){border-color:var(--accent);background:rgb(from var(--accent) r g b / .07)}&:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:1px}}.choice input[type=radio]{position:absolute;opacity:0;pointer-events:none}.choice-label{font-size:.68rem;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.choice:has(input:checked) .choice-label{color:var(--accent)}.choice-value{font-size:.82rem;min-width:0}.flag-badge{font-size:.82rem;color:var(--muted)}.flag-badge.on{color:var(--accent);font-weight:600}.color{display:inline-flex;align-items:center;gap:.35rem}.color-dot{width:12px;height:12px;border-radius:50%;box-shadow:0 0 0 1px rgb(from var(--text) r g b / .2);flex-shrink:0;&.marker-red{background:var(--marker-red)}&.marker-blue{background:var(--marker-blue)}&.marker-green{background:var(--marker-green)}&.marker-gray{background:var(--marker-gray)}}.color-name{text-transform:capitalize}.comment-text,.fix-text{cursor:text;user-select:text;-webkit-user-select:text}.comment-text{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;color:var(--text);white-space:pre-wrap;overflow-wrap:anywhere;& em{color:var(--muted);font-style:italic}}.fix-text{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:break-all;& a{color:var(--accent);text-decoration:none}& a:hover{text-decoration:underline}}.actions{display:flex;justify-content:flex-end;gap:.4rem;margin-top:.8rem;padding-top:.7rem;border-top:1px solid var(--border)}
35
- `;function $x({tabs:e,current:t,prefix:n,select:r,disabled:i=!1}){return A`<div class="dlg-tabs" role="tablist" @keydown="${i=>{if(i.key!==`ArrowLeft`&&i.key!==`ArrowRight`)return;i.preventDefault();let a=e[(e.findIndex(e=>e.id===t)+(i.key===`ArrowRight`?1:-1)+e.length)%e.length];if(!a||a.id===t)return;let o=i.currentTarget;r(a.id),requestAnimationFrame(()=>o.querySelector(`#${n}-tab-${a.id}`)?.focus())}}">${e.map(e=>A`<button type="button" role="tab" class="dlg-tab" id="${`${n}-tab-${e.id}`}" aria-controls="${`${n}-panel-${e.id}`}" aria-selected="${String(t===e.id)}" tabindex="${t===e.id?0:-1}" ?disabled="${i&&t!==e.id}" @click="${()=>r(e.id)}">${e.icon??M}${e.label}</button>`)}</div>`}function eS(e){if(!e)return M;let t=e.replaceAll(`_`,` `);return A`<span class="${`conflict-sev sev-${e}`}">${t}</span>`}function tS(e){return`bundle-${e.slice(7,19)}\u2026`}function nS(e){return e.kind===`bundle`?e.label??tS(e.identifier):e.identifier}function rS(e){return e.kind===`bundle`?`bundle`:Xx(e.identifier)?`links file`:`report`}function iS(e){let t=e.length,n=t===1,r=new Set(e.map(rS)),i=`items`;if(r.size===1){let e=[...r][0];i=n?e:`${e}s`}return{count:t,singular:n,kindLabel:i}}function aS(e){return A`<ul class="lwd-list">${e.map(e=>{let t=rS(e);return A`<li>${nS(e)}${t===`report`?M:A`<span class="lwd-kind-tag">${t}</span>`}</li>`})}</ul>`}function oS(e){return e.length===0?M:A`<ul class="lwd-list" role="alert">${e.map(e=>A`<li><strong>${e.label}</strong> — ${e.reason}</li>`)}</ul>`}function sS(e){return e?A`<span class="color"><span class="${`color-dot marker-${e}`}"></span> <span class="color-name">${e}</span></span>`:A`<em>none</em>`}function cS(e){return A`<span class="comment-text">${e||A`<em>empty</em>`}</span>`}function lS(e){return e?mi(e)?A`<span class="fix-text"><a href="${e}" target="_blank" rel="noopener noreferrer">${e}</a></span>`:A`<span class="fix-text">${e}</span>`:A`<span class="comment-text"><em>empty</em></span>`}function uS(e){return e?A`<span class="${`triage triage-${e}`}">${e}</span>`:A`<em>none</em>`}function dS(e){return e?A`<span class="${`flag-badge${e===`flagged`?` on`:``}`}">${e}</span>`:A`<em>none</em>`}function fS(e,t){return e===`color`?sS(t):e===`comment`?cS(t):e===`fix`?lS(t):e===`triage`?uS(t):e===`flagged`?dS(t):A`${String(t)}`}function pS(e,t){let n=e?.file?e.line?`${e.file}:${e.line}`:e.file:``;return A`<div class="card-head">${eS(e?.severity)} ${n?A`<span class="loc" data-tooltip-truncated data-tooltip="${n}">${n}</span>`:M} <code class="id" data-tooltip="${t}">${t.slice(0,8)}…</code></div>${e?.description?A`<div class="desc" data-tooltip-truncated data-tooltip="${e.description}">${e.description}</div>`:M}`}var mS={title:`Triage conflicts`,intro:`disagree with your local triage on`,trailingNote:``,applyButton:`Apply`,importedSideLabel:`Apply imported`},hS={color:0,comment:1,fix:2,triage:3,flagged:4},gS={color:`Color`,comment:`Comment`,fix:`Fix`,triage:`Triage state`,flagged:`Flag`},_S=class extends Ov{static styles=[...Ov.styles,ua(Zx),ua(Qx)];static properties={conflicts:{attribute:!1},findingLookup:{attribute:!1},labels:{attribute:!1},_settled:{state:!0}};constructor(){super(),this.conflicts=[],this.findingLookup=new Map,this.labels={...mS},this._settled=!1}focusInitial(){}_blockEscClose=e=>e.preventDefault();_onClick=e=>{let t=e.target.closest(`[data-bulk]`);if(!t)return;let n=t.dataset.bulk;for(let e of this.renderRoot.querySelectorAll(`input[type="radio"][value="${n}"]`))e.checked=!0};_onSubmit=e=>{e.preventDefault();let t={};for(let e of this.conflicts){let n=`${e.id}:${e.property}`,r=this.renderRoot.querySelector(`input[name="conflict-${CSS.escape(n)}"]:checked`);r&&(t[n]=r.value)}this._finish(t)};render(){let e=this.labels,t=new Map;for(let e of this.conflicts)t.has(e.id)||t.set(e.id,[]),t.get(e.id).push(e);for(let e of t.values())e.sort((e,t)=>(hS[e.property]??99)-(hS[t.property]??99));let n=this.conflicts.filter(e=>e.property===`color`).length,r=this.conflicts.filter(e=>e.property===`comment`).length,i=this.conflicts.filter(e=>e.property===`fix`).length,a=this.conflicts.filter(e=>e.property===`triage`).length,o=this.conflicts.filter(e=>e.property===`flagged`).length,s=[n?`${n} color${n===1?``:`s`}`:``,r?`${r} comment${r===1?``:`s`}`:``,i?`${i} fix${i===1?``:`es`}`:``,a?`${a} triage state${a===1?``:`s`}`:``,o?`${o} flag${o===1?``:`s`}`:``].filter(Boolean).join(`, `),c=`${t.size} finding${t.size===1?``:`s`}`;return A`<dialog @click="${this._onClick}" @cancel="${this._blockEscClose}" @close="${this._onClose}"><header><h3>${e.title}</h3><p>${c} ${e.intro} ${s}.${e.trailingNote?` ${e.trailingNote}`:``}</p><div class="bulk"><button type="button" data-bulk="local">Keep all current</button> <button type="button" data-bulk="imported">${e.importedSideLabel} (all)</button></div></header><form @submit="${this._onSubmit}"><ul class="list">${[...t.entries()].map(([t,n])=>A`<li class="card" data-id="${t}">${pS(this.findingLookup.get(t),t)}<div class="rows">${n.map(t=>{let n=`${t.id}:${t.property}`,r=`conflict-${n}`;return A`<div class="row" data-key="${n}"><span class="row-label">${gS[t.property]??t.property}</span> <label class="choice"><input type="radio" name="${r}" value="local" required> <span class="choice-label">Keep current</span> <span class="choice-value">${fS(t.property,t.local)}</span></label> <label class="choice"><input type="radio" name="${r}" value="imported" required> <span class="choice-label">${e.importedSideLabel}</span> <span class="choice-value">${fS(t.property,t.imported)}</span></label></div>`})}</div></li>`)}</ul><footer class="actions"><button type="submit" class="primary">${e.applyButton}</button></footer></form></dialog>`}};customElements.define(`triage-conflict-dialog`,_S);function vS(e,t,n={}){return new Promise((r,i)=>{let a=document.createElement(`triage-conflict-dialog`);a.conflicts=e,a.findingLookup=t,a.labels={...mS,...n},a.addEventListener(`resolve`,e=>{a.remove(),r(e.detail)}),a.addEventListener(`modal-conflict`,e=>{a.remove(),i(eh(e.detail?.cause))}),document.body.append(a)})}var yS=[`type`,`model`,`effort`,`exportsMode`],bS=[`security`,`correctness`],xS=[`max`,`xhigh`,`high`,`medium`,`low`,`minimal`],SS=[`list`,`isolate`];function CS(e,t){if(t==null)return e.length+1;let n=e.indexOf(t);return n===-1?e.length:n}var wS={type:e=>e===`terminal`?bS.length+2:CS(bS,e),model:e=>+(e==null),effort:e=>CS(xS,e),exportsMode:e=>CS(SS,e)};function TS(e,t,n){for(let r of n){let n=wS[r],i=n(e[r])-n(t[r]);if(i!==0)return i;let a=String(e[r]??``).localeCompare(String(t[r]??``));if(a!==0)return a}return 0}function ES(e,t,{typePrefix:n=!0}={}){return e===`type`?n?`analyzer: ${t??`null`}`:`${t??`null`}`:t??null}function DS(e,t){let n=t.filter(e=>e!==`exportsMode`),r=[],i=new Map;for(let t of e){if(t.exportsMode==null){r.push({...t});continue}let e=n.map(e=>t[e]??``).join(`|`),a=i.get(e);if(a){a.exportsMode=`${a.exportsMode}+${t.exportsMode}`;continue}let o={...t};i.set(e,o),r.push(o)}return r}function OS(e,t=yS){let n=new Map;for(let r of e){let e={};for(let n of t)e[n]=n===`model`?Li(r.model)??null:r[n]??null;let i=t.map(t=>e[t]??``).join(`|`);n.has(i)||n.set(i,e)}let r=[...n.values()].toSorted((e,n)=>TS(e,n,t));if(r.length===0)return[];let i={};for(let e of t)i[e]=new Set(r.map(t=>t[e])).size===1;let a=t.filter(e=>!i[e]),o=a.includes(`exportsMode`)?DS(r,t):r,s=o.length>2&&a.includes(`type`)&&a.length>1,c=[`model`,`effort`].filter(e=>t.includes(e)&&i[e]),l=[...c,...t.filter(e=>!c.includes(e))],u=[],d=!1;for(let e of l)if(i[e]){let t=ES(e,o[0][e]);t!=null&&u.push(t)}else if(!d){for(let e of o){let t=a.map(t=>ES(t,e[t],{typePrefix:!s})).filter(e=>e!=null);t.length>0&&u.push(t.join(` · `))}d=!0}return u}function kS(e=!1,t=``){let n=new Set;return[`deepview`,...e?[`security`]:[],...t.split(`,`)].map(e=>e.trim()).filter(e=>{let t=e.toLowerCase();return!e||n.has(t)?!1:(n.add(t),!0)})}var AS=null;function jS(){return AS||(AS=(async()=>await import(`./prism.js`))(),AS)}var MS=1048576;function NS(e){return e.length<=MS&&ha(e)<=MS}var PS={__proto__:null,js:`javascript`,javascript:`javascript`,mjs:`javascript`,cjs:`javascript`,node:`javascript`,jsx:`jsx`,ts:`typescript`,typescript:`typescript`,mts:`typescript`,cts:`typescript`,tsx:`tsx`,json:`json`,css:`css`,html:`markup`,htm:`markup`,xml:`markup`,svg:`markup`,markup:`markup`,yaml:`yaml`,yml:`yaml`,sh:`bash`,bash:`bash`,shell:`bash`,zsh:`bash`,console:`bash`,md:`markdown`,markdown:`markdown`,sol:`solidity`,solidity:`solidity`,rs:`rust`,rust:`rust`,rb:`ruby`,ruby:`ruby`,py:`python`,python:`python`,py3:`python`,python3:`python`,php:`php`,phtml:`php`,java:`java`,cpp:`cpp`,"c++":`cpp`,cc:`cpp`,cxx:`cpp`,hpp:`cpp`,hh:`cpp`,hxx:`cpp`,"h++":`cpp`,h:`cpp`,c:`c`,objc:`objectivec`,objectivec:`objectivec`,"objective-c":`objectivec`,m:`objectivec`,mm:`objectivec`};function FS(e){return typeof e==`string`?PS[e.toLowerCase()]??null:null}async function IS(e,t,n=null){if(!t||!NS(e))return null;try{return(await jS()).highlight(e,t,n)}catch{return null}}function LS(e){let t=[],n=[],r=``,i=0;for(;i<e.length;){let a=e.indexOf(`<`,i),o=(a===-1?e.slice(i):e.slice(i,a)).split(`
36
- `);r+=o[0];for(let e=1;e<o.length;e++){for(let e=n.length-1;e>=0;e--)r+=n[e].close;t.push(r),r=n.map(e=>e.open).join(``)+o[e]}if(a===-1)break;let s=e.indexOf(`>`,a);if(s===-1){r+=e.slice(a);break}let c=e.slice(a,s+1);c.startsWith(`</`)?n.pop():n.push({open:c,close:`</${/^<([a-zA-Z][^\s/>]*)/u.exec(c)?.[1]??`span`}>`}),r+=c,i=s+1}return t.push(r),t}var RS=new Map,zS=new Set,BS=!1;function VS(){BS||(BS=!0,queueMicrotask(()=>{BS=!1,F.codeBlockTick++,X()}))}function HS(e,t){let n=FS(t);if(!n||!e)return null;let r=`${n}\0${e}`;return RS.has(r)?RS.get(r):(zS.has(r)||(zS.add(r),(async()=>{let t=await IS(e,n);RS.set(r,t??null),zS.delete(r),VS()})()),null)}var US=new WeakMap,WS=new WeakMap;function GS(e){let t=/^([a-z][a-z\d+.-]*:\/\/[^/]*)(.*)$/iu.exec(e),n=t?.[1]??``,r=t?.[2]??e,i=r.startsWith(`/`),a=[];for(let e of r.split(`/`))if(e&&e!==`.`){if(e===`..`&&a.length>0&&a.at(-1)!==`..`)a.pop();else{if(e===`..`&&i&&a.length===0)return null;a.push(e)}}return n+(i?`/`:``)+a.join(`/`)}function KS(e){let t=new Map;for(let n of e.keys()){let e=GS(n);e!==null&&t.set(e,t.has(e)?null:n)}return t}function qS(e,t,n,r){let i=GS(n);if(i===null)return null;let a=typeof r==`string`?GS(`${r}/package.json`):null,o=i.slice(0,i.lastIndexOf(`/`)+1),s=WS.get(e);for(s||(s=new Map,WS.set(e,s));;){if(o.endsWith(`node_modules/`))return null;let n=`${o}package.json`;if(t.has(n)){if(!s.has(n)){let r=e.get(t.get(n)),i=null;try{i=typeof r==`string`?JSON.parse(r.replace(/^\uFEFF/u,``))?.imports??null:null}catch{}s.set(n,i&&typeof i==`object`&&!Array.isArray(i)?i:null)}return{directory:o,imports:s.get(n)}}if(n===a||!o||o===`/`||o.endsWith(`../`)||/^[a-z][a-z\d+.-]*:\/\/[^/]*\/?$/iu.test(o))return null;let r=o.slice(0,-1);o=r.slice(0,r.lastIndexOf(`/`)+1)}}function JS(e,t){if(!e)return null;if(Object.hasOwn(e,t)&&!t.includes(`*`))return{value:e[t],wildcard:null};let n=null;for(let r of Object.keys(e)){let e=r.indexOf(`*`);if(!r.startsWith(`#`)||e===-1||r.indexOf(`*`,e+1)!==-1)continue;let i=r.slice(0,e),a=r.slice(e+1);t.length<=i.length+a.length||!t.startsWith(i)||!t.endsWith(a)||(!n||e>n.star||e===n.star&&r.length>n.pattern.length)&&(n={pattern:r,star:e,suffix:a})}return n?{value:e[n.pattern],wildcard:t.slice(n.star,t.length-n.suffix.length)}:null}function YS(e,t,n=0){return n>16?[null]:typeof e==`string`?[t===null?e:e.replaceAll(`*`,t)]:e&&typeof e==`object`?Object.values(e).flatMap(e=>YS(e,t,n+1)):[null]}function XS(e,t,n,r,i,a){if(typeof e!=`string`||/[\\\p{Cc}]/u.test(e)||/%2f|%5c/iu.test(e))return null;let o=e.startsWith(`./`),s=null;if(o){let n;try{n=decodeURIComponent(e.slice(2))}catch{return null}if(/[\\\p{Cc}]/u.test(n)||n.split(`/`).some(e=>[`.`,`..`,`node_modules`].includes(e.toLowerCase())))return null;s=GS(t.directory+n)}else if(e.startsWith(`../`)||e.startsWith(`/`)||e.startsWith(`#`)||e.includes(`:`))return null;let c=new Set([e]);if(o)for(let e of i?.keys()??[])(e.startsWith(`./`)||e.startsWith(`../`))&&GS(a+e)===s&&c.add(e);let l=!1,u=null;for(let e of c){if(!i?.has(e))continue;let t=i.get(e);if(typeof t!=`string`||!n.has(t)||l&&t!==u)return null;l=!0,u=t}return l?u:o?r.get(s)??null:null}function ZS(e,t,n,r,i,a){let o=JS(e?.imports,t);if(!o)return null;let s=YS(o.value,o.wildcard),c=null;for(let t of s){let o=XS(t,e,n,r,i,a);if(!o||c&&o!==c)return null;c=o}return c}function QS(e,t=It(e)){let n=new Map;if(e?.kind===`stasis`)for(let r of e.bundle?.imports?.values()??[])for(let[e,i]of r){if(!t.has(e))continue;n.has(e)||n.set(e,new Map);let r=n.get(e);for(let[e,n]of i){let i=typeof n==`string`&&t.has(n)?n:null;r.set(e,r.has(e)&&r.get(e)!==i?null:i)}}else if(e?.kind===`sourcemap`)for(let[r,i]of Ft(e))t.has(r)&&n.set(r,new Map([...i].map(([e,n])=>[e,t.has(n)?n:null])));return n}function $S(e,t,n=null,r=e,i=null){let a=US.get(e);a||(a=KS(e),US.set(e,a));let o=US.get(r);o||(o=KS(r),US.set(r,o));let s=n?.get(t),c=t.slice(0,t.lastIndexOf(`/`)+1),l=n?qS(r,o,t,i?.get(t)):null;return t=>{if(typeof t!=`string`||/\p{Cc}/u.test(t))return null;if(s?.has(t)){let n=s.get(t);return typeof n==`string`&&e.has(n)?n:null}if(t.startsWith(`#`))return ZS(l,t,e,a,s,c);if(!t.startsWith(`./`)&&!t.startsWith(`../`))return null;let n=t.slice(t.lastIndexOf(`/`)+1),r=n.lastIndexOf(`.`);return r<=0||r===n.length-1?null:a.get(GS(c+t))??null}}var eC=new WeakMap;function tC(e,t){let n=It(e),r=eC.get(n);return r||(r={imports:QS(e,n),packageDirs:Wt(e)},eC.set(n,r)),$S(n,t,r.imports,Bt(e),r.packageDirs)}var nC=/[\u0000-\u0008\u000B-\u001F\u007F-\u009F\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u2800\u3000\p{Cf}\p{Cs}\p{Co}\p{Cn}\p{Default_Ignorable_Code_Point}]/u,rC=new RegExp(nC.source,`gu`),iC=new Map(`0000 NUL NULL
30
+ ${f?j`<tspan x=${r} dy="-0.3em">${Tv(e.name,p*2-12)}</tspan><tspan class="bundle-treemap-center-sub" x=${r} dy="1.5em">${Nn(e.value)}</tspan>`:j`<tspan x=${r} dy="0.35em">${Nn(e.value)}</tspan>`}
31
+ </text>`;return A`<svg class="bundle-treemap-sunburst" width="${t}" height="${n}" viewBox="${`0 0 ${t} ${n}`}">${u}${m}${h}</svg>`}render(){let e=this._focusNode,t=this._mode===`sunburst`,n=this._status===`ok`&&e&&e.children&&this._w>0&&this._h>0,r=[];if(n&&!t){let t=[...e.children.values()].toSorted((e,t)=>t.value-e.value);for(let e of _v(t,{x:0,y:0,w:this._w,h:this._h}))xv(e.node,e.x,e.y,e.w,e.h,1,r)}let{prefix:i}=this._meta,a=e?e.count:0,o=e?e.value:0;return A`<header class="bundle-treemap-head">${this._renderCrumbs()} <span class="bundle-treemap-head-right"><span class="bundle-treemap-sub">${a} ${a===1?`file`:`files`} · ${Nn(o)}${i?A` · <span class="mono">${i}</span>`:``}</span> ${this._reasons.size>0?A`<bundle-scope-selector compact="compact" .reasons="${[...this._reasons.keys()].map(e=>({id:`reason:${e}`,label:e}))}" .value="${this._reason?`reason:${this._reason}`:``}" label="Filter files" @scope-change="${this._changeReason}"></bundle-scope-selector>`:M} ${this._mixedKinds?A`<span class="bundle-treemap-kind" role="group" aria-label="Show only">${[[`code`,`Code`],[`resources`,`Resources`]].map(([e,t])=>A`<button type="button" aria-pressed="${String(this._kind===e)}" @click="${()=>this._toggleKind(e)}">${t}</button>`)}</span>`:M}<mode-switch compact="compact" label="Sunburst" .checked="${t}" accessible-label="Toggle sunburst view" @click="${this._toggleMode}"></mode-switch></span></header><div class="bundle-treemap-plot" @click="${this._onPlotClick}" @pointermove="${this._onPointerMove}" @pointerleave="${this._onPointerLeave}">${this._status===`loading`?A`<div class="bundle-treemap-empty">Loading…</div>`:this._status===`empty`?A`<div class="bundle-treemap-empty">${!this._mixedKinds||!this._kind?`This bundle doesn't carry any source content.`:this._kind===`code`?`No code here, only resources.`:`No resources here, only code.`}</div>`:t?n?this._renderSunburst(e):M:r.map(e=>this._cell(e))}<div class="bundle-treemap-tooltip"></div></div>`}};customElements.define(`bundle-treemap`,Ev);function Dv(e=document){if(e.querySelector(`:modal`))return!0;for(let t of e.querySelectorAll(`*`))if(t.shadowRoot&&Dv(t.shadowRoot))return!0;return!1}var Ov=`a{cursor:default}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}button,summary,select,label,legend,header h3,.section-title,.ui-hint,.hint,.note,.lwd-note,.lwd-empty,.empty:not(.error,[role=alert]),.empty-discussion,.history-state[role=status],.history-summary{cursor:default;user-select:none;-webkit-user-select:none}input:not([type=checkbox],[type=radio]),textarea,[contenteditable],pre,code,.mono{cursor:text;user-select:text;-webkit-user-select:text}dialog{margin-top:5rem;margin-inline:auto;border:1px solid var(--border);border-radius:var(--ui-radius, 10px);background:var(--surface);color:var(--text);padding:1.1rem 1.25rem 1rem;max-width:480px;width:min(94vw,480px);box-shadow:0 20px 60px #00000059;&::backdrop{background:rgb(from var(--theme-bar) r g b / .55);backdrop-filter:blur(2px)}}header h3{margin:0 0 .6rem;font-size:1rem;font-weight:600}.nwd-input{display:block;width:100%;box-sizing:border-box;padding:.5rem .65rem;border:1px solid var(--border);border-radius:var(--ui-radius, 6px);background:var(--bg, var(--surface));color:var(--text);font:inherit;font-size:.88rem;&:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgb(from var(--accent) r g b / .18)}&::placeholder{color:var(--muted)}}.nwd-note{margin:.55rem 0 0;color:var(--muted);font-size:.74rem;line-height:1.45}.nwd-intro{margin:0 0 .8rem;color:var(--muted);font-size:.82rem;line-height:1.5}.nwd-actions{display:flex;align-items:center;gap:.4rem;margin-top:.8rem;padding-top:.7rem;border-top:1px solid var(--border)}.nwd-spacer{flex:1}.nwd-actions button{background:transparent;border:1px solid var(--border);color:var(--text);border-radius:var(--ui-radius, 5px);padding:.35rem .9rem;font:inherit;font-size:.8rem;&:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}&.primary{background:var(--accent);color:var(--surface);border-color:var(--accent);&:hover:not(:disabled){color:var(--surface);filter:brightness(1.08)}}&.quiet{border-color:transparent;color:var(--muted);&:hover:not(:disabled){border-color:transparent}}&.danger{color:var(--critical, #f87171);border-color:var(--border);&:hover:not(:disabled){border-color:var(--critical, #f87171);color:var(--critical, #f87171)}}&:disabled{opacity:.5}}:host-context(body.theme-w95){& dialog{border:0;box-shadow:var(--w95-window);&:before{content:"";display:block;flex:none;height:20px}&::backdrop{background:none;backdrop-filter:none}}& header h3{position:absolute;top:3px;right:3px;left:3px;display:flex;align-items:center;gap:4px;height:18px;margin:0;padding:0 24px 0 4px;overflow:hidden;background:var(--w95-title);color:#fff;font-size:11px;font-weight:700;line-height:18px;white-space:nowrap;& svg{flex:none;width:14px;height:14px}}& button[aria-label^=Close]{position:absolute;top:5px;right:5px;z-index:1;display:grid;place-items:center;width:16px;height:14px;padding:0;border:0;border-radius:0;background:var(--w95-face);color:#000;box-shadow:var(--w95-raised);font-size:13px;line-height:1;&:hover{background:var(--w95-face);color:#000}&:active{box-shadow:var(--w95-pressed)}}.nwd-actions button{min-width:75px;min-height:23px;border-color:transparent;background:var(--w95-face);color:#000;box-shadow:var(--w95-raised);font-size:11px;&:hover:not(:disabled){border-color:transparent;color:#000}&:active:not(:disabled){box-shadow:var(--w95-pressed)}&:disabled{color:var(--w95-shadow);text-shadow:1px 1px #fff;opacity:1}&:focus-visible{outline:1px dotted #000;outline-offset:-4px}&.primary,&.primary:hover:not(:disabled){box-shadow:var(--w95-default);color:#000;filter:none}&.primary:active:not(:disabled){box-shadow:inset 0 0 0 1px #000,inset 0 0 0 2px var(--w95-shadow)}&.quiet{box-shadow:none}&.danger,&.danger:hover:not(:disabled){color:var(--critical)}}.nwd-input{border-color:transparent;box-shadow:var(--w95-sunken);&:focus{border-color:transparent;box-shadow:var(--w95-sunken)}}}@media(display-mode:window-controls-overlay){dialog{-webkit-app-region:no-drag;app-region:no-drag}}:host-context(body.theme-w95) *{overscroll-behavior:none}
32
+ `,kv=class extends pa{static styles=[ua(Ov)];exclusive=!1;firstUpdated(){cr(this.renderRoot),this.beforeOpen();let e=this.renderRoot.querySelector(`dialog`);if(e){if(this.exclusive&&Dv()){this._conflict(new DOMException(`Another modal dialog is already open`,`InvalidStateError`));return}try{e.showModal()}catch(e){this._conflict(e);return}this.focusInitial()}}_conflict(e){this._settled=!0,this.dispatchEvent(new CustomEvent(`modal-conflict`,{detail:{cause:e}}))}beforeOpen(){}focusInitial(){(this.renderRoot.querySelector(`input, textarea`)??this.renderRoot.querySelector(`button.primary`)??this.renderRoot.querySelector(`button`))?.focus()}_finish(e){this._settled||(this._settled=!0,this.renderRoot.querySelector(`dialog`)?.close(),this.dispatchEvent(new CustomEvent(`resolve`,{detail:e})))}_onClose=()=>this._finish(null);_onBackdrop=e=>{if(e.target!==e.currentTarget)return;let{left:t,right:n,top:r,bottom:i}=e.currentTarget.getBoundingClientRect();(e.clientX<t||e.clientX>n||e.clientY<r||e.clientY>i)&&this._onClose()}};function Av(e,t={}){return new Promise(n=>{let r=document.createElement(e);Object.assign(r,t),r.addEventListener(`resolve`,e=>{r.remove(),n(e.detail)}),document.body.append(r)})}function jv(e,t,n){return new Promise((r,i)=>{let a=document.createElement(e);Object.assign(a,t),a.exclusive=!0,a.addEventListener(`resolve`,e=>{a.remove(),r(e.detail)}),a.addEventListener(`modal-conflict`,e=>{n(a),a.remove(),i(eh(e.detail?.cause))}),document.body.append(a)})}var Mv=`dialog{max-width:520px;width:min(94vw,520px)}.wsl-field{display:block;margin-top:.6rem;color:var(--text);font-size:.78rem;>span{display:block;margin-bottom:.25rem;color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.04em}}.wsl-ack{display:flex;align-items:flex-start;gap:.5rem;margin-top:.6rem;color:var(--text);font-size:.8rem;line-height:1.4;>input[type=checkbox]{flex:0 0 auto;margin-top:.15rem}>span{flex:1 1 auto}}.wsl-link{display:block;width:100%;box-sizing:border-box;padding:.5rem .65rem;border:1px solid var(--border);border-radius:var(--ui-radius, 6px);background:var(--bg, var(--surface));color:var(--text);font:inherit;font-size:.78rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;resize:vertical;word-break:break-all}.wsl-error{margin:.55rem 0 0;color:var(--critical, #f87171);font-size:.74rem;line-height:1.4}.wsl-warning{padding:.55rem .65rem;border:1px solid var(--critical, #f87171);border-radius:var(--ui-radius, 6px);background:rgb(from var(--critical, #f87171) r g b / .08);>p+p{margin-top:.45rem}}.wsl-optout{display:flex;align-items:center;gap:.5rem;margin-top:.7rem;color:var(--text);font-size:.78rem}.nwd-input:disabled{opacity:.5}.nwd-actions button.primary.danger{background:var(--critical, #f87171);border-color:var(--critical, #f87171);color:var(--surface);&:hover:not(:disabled){border-color:var(--critical, #f87171);color:var(--surface);filter:brightness(1.08)}}
33
+ `,Nv=class extends kv{static styles=[...kv.styles,ua(Mv)];static properties={_busy:{state:!0},_error:{state:!0}};constructor(){super(),this._busy=!1,this._error=``,this._abortController=null}_finish(e){if(!this._settled){if(this._abortController)try{this._abortController.abort()}catch{}super._finish(!!e)}}_onCancel=()=>this._finish(!1);_onUnlock=async()=>{if(!this._busy){this._busy=!0,this._error=``,this._abortController=new AbortController;try{if(await jo({signal:this._abortController.signal})){this._finish(!0);return}this._error=``}catch(e){this._error=e?.message??String(e)}finally{this._busy=!1,this._abortController=null}}};render(){return A`<dialog @close="${this._onClose}"><header><h3>Unlock your data</h3></header><p class="nwd-note ui-hint">Your triage data and report files are encrypted with a passkey on this device. Unlock to load them.</p>${this._error?A`<p class="wsl-error">${this._error}</p>`:M}<footer class="nwd-actions"><span class="nwd-spacer"></span> <button type="button" @click="${this._onCancel}">${this._busy?`Cancel`:`Later`}</button> <button type="button" class="primary" ?disabled="${this._busy}" @click="${this._onUnlock}">${this._busy?`Waiting…`:`Unlock with passkey`}</button></footer></dialog>`}};customElements.define(`passkey-unlock-dialog`,Nv);function Pv(){return Av(`passkey-unlock-dialog`)}var Fv=`deepviewManagedNavigation`,Iv=`deepviewManagedLoginFinding`;function Lv(e,t){return e?.view===`findings`&&t?.view===`findings`&&e.teamSlug===t.teamSlug&&(e.reportSlug??null)===(t.reportSlug??null)}function Rv(e,t){return e?.bundleTab!==`code`||t?.bundleTab!==`code`||e.view!==t.view?!1:e.view===`npm`?e.packageName===t.packageName&&(e.packageSpec??null)===(t.packageSpec??null):e.view===`repository-code`?e.repoId===t.repoId&&e.commit===t.commit&&(e.path??``)===(t.path??``):e.view===`bundles`&&(e.teamSlug??null)===(t.teamSlug??null)&&e.bundleSlug===t.bundleSlug}function zv(e){let t=e.location.hash,n=We(t),r=!1,i=null,a=0,o=null,s=null,c=!1,l=null,u=null,d=null;function f(){return e.location.hash.startsWith(`#public=`)&&e.location.hash!==t}function p(e){let t=ui(e),n=t?.view===`home`?Ur(e.hash):null;return t?{...t,...n?{finding:n}:{}}:null}function m(){try{let t=e.sessionStorage?.getItem(Iv);if(e.sessionStorage?.removeItem(Iv),!t)return null;let n=new URL(t,e.location.origin),r=n.origin===e.location.origin?p(n):null;return r?.finding?r:null}catch{return null}}function h(){if(!r||!Ur(e.location.hash)||l===e.location.href||e.history.state?.[Fv]&&e.history.state[Fv]!==i)return;let t=l=e.location.href;_(p(new URL(t))??{view:`home`},{replace:!0}).finally(()=>{l===t&&(l=null)})}function g(t){f()||(t=Ye(t,n),e.history.replaceState(r?{[Fv]:i}:null,``,t),s=t)}async function _(t,{replace:c=!1,pop:l=!1}={}){if(!r||!o||f())return!1;t??={view:`home`};let d=oi(t);if(d===null)return!1;let p=++a,m=u={route:t,path:d,push:!l&&!c,shown:!1,findingRoute:null,codeRoute:null},h=()=>r&&p===a&&!f(),_=!1;try{_=await o(t,h)}catch(e){console.warn(`managed: navigation failed:`,e)}return h()?_?(typeof _==`object`&&(d=oi(_)??d),Lv(m.findingRoute,typeof _==`object`?_:t)&&(d=oi(m.findingRoute)),Rv(m.codeRoute,typeof _==`object`?_:t)&&(d=oi(m.codeRoute)),u=null,l||c||m.shown?g(d):Ye(d,n)!==s&&(d=Ye(d,n),e.history.pushState({[Fv]:i},``,d),s=d),!0):(await o({view:`home`},h),h()&&(u=null,g(`/`)),!1):!1}function v(t){if(!f()){if(!r){t.state?.[Fv]&&g(`/`);return}if((!t.state?.[Fv]||t.state[Fv]===i)&&Ur(e.location.hash)){h();return}if(!t.state?.[Fv]){let t=p(new URL(e.location.href)),n=s==null?null:ui(new URL(s,e.location.href));if(t?.file!=null&&t.file===n?.file&&Rv(t,n)){g(oi(t));return}}_((t.state?.[Fv]===i?p(new URL(e.location.href)):null)??{view:`home`},{pop:!0})}}function y(t){if(!r||t.defaultPrevented||t.button!==0||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey)return;let n=t.composedPath().find(e=>e.matches?.(`a.comment-self-ref[href]`));if(!n||n.hasAttribute(`download`)||n.target&&n.target!==`_self`)return;let i=new URL(n.href);if(i.origin!==e.location.origin)return;let a=p(i);if(a?.finding)return t.preventDefault(),_(a)}return{get active(){return r},rememberFinding(){let t=p(new URL(e.location.href));if(!t?.finding)return;let n=t.view===`home`?`/#${Vr(t.finding)}`:oi(t);try{e.sessionStorage?.setItem(Iv,n)}catch{}},start(t,{onCancel:n=null}={}){if(r)return;r=!0,o=t,d=n,i=typeof e.history.state?.[Fv]==`string`?e.history.state[Fv]:e.crypto.randomUUID(),c||=(e.addEventListener(`popstate`,v),e.addEventListener(`hashchange`,h),e.addEventListener(`click`,y),e.launchQueue?.setConsumer(({targetURL:t})=>{if(!r||!t)return;let n=new URL(t);if(n.origin!==e.location.origin)return;let i=p(n);i&&_(i)}),!0);let a=m(),s=p(new URL(e.location.href))??{view:`home`};return a&&s.view===`home`&&!s.finding&&(s=a),_(s,{replace:!0})},navigate:_,replaceFindingRoute(t){if(!r||t?.view!==`findings`||f())return;let i=oi(t);if(i!=null){if(u){(u.route.view===`home`&&u.route.finding||Lv(t,{...u.route,view:`findings`}))&&(u.findingRoute=t);return}Lv(t,ui(new URL(e.location.href)))&&Ye(i,n)!==s&&g(i)}},replaceCodeRoute(t){if(!r||f()||![`bundles`,`npm`,`repository-code`].includes(t?.view)||t.bundleTab!==`code`)return;let i=oi(t);if(i!=null){if(u){Rv(t,u.route)&&(u.codeRoute=t);return}Rv(t,ui(new URL(e.location.href)))&&Ye(i,n)!==s&&g(i)}},showing(t){let a=u;if(!r||f()||!a||a.route!==t||a.shown)return;a.shown=!0;let o=Ye(a.path,n);!a.push||o===s?g(a.path):(e.history.pushState({[Fv]:i},``,o),s=o)},replaceRoute(e){if(!r||!e||f())return;let t=oi(e);t!=null&&!u&&g(t)},pushRoute(t){if(!r||!t||f())return;let o=oi(t);if(o==null)return;let c=u!==null;++a,u=null,o=Ye(o,n),o!==s&&(e.history.pushState({[Fv]:i},``,o),s=o),c&&d?.()},reset({force:t=!1}={}){if(++a,u=null,r||t){try{e.sessionStorage?.removeItem(Iv)}catch{}r=!1,i=null,o=null,g(`/`)}}}}var G=typeof window>`u`?null:zv(window);function Bv(e){return I()&&!F.managedSession?.publicShare&&tt(F.managedSession?.role,`triage`)&&!!(e?._managedReportId&&e.id)}function Vv(e){let t=e?.teams?.find(t=>t.id===e.teamId);return t?!t.cacheKey||!Array.isArray(t.reports)||t.reports.some(e=>!e.cacheKey)?e.teams:JSON.stringify([t.cacheKey,t.reports.map(e=>[e.id,e.cacheKey,e.visible!==!1]).toSorted()]):null}var Hv=class{constructor({context:e,fetchWorkspace:t,changed:n=()=>{},now:r=Date.now}){this.getContext=e,this.fetchWorkspace=t,this.changed=n,this.now=r,this.entries=new Map,this.required=new Set,this.expires=0,this.context=null,this.scope=null,this.timer=null,this.run=null}reset(){this.run?.abort(),this.run=null,clearTimeout(this.timer),this.timer=null,this.entries.clear(),this.required.clear(),this.expires=0,this.context=null,this.scope=null}syncContext(){let e=this.getContext();if(e?.key!==this.context?.key||e?.teamId!==this.context?.teamId||e?.reportId!==this.context?.reportId||e?.teams!==this.context?.teams){let t=Vv(e);(e?.key!==this.context?.key||e?.teamId!==this.context?.teamId||e?.reportId!==this.context?.reportId||t!==this.scope)&&this.reset(),this.context=e,this.scope=t}return this.scope===null?null:this.context}schedule(){!this.timer&&!this.run&&(this.timer=setTimeout(()=>{this.timer=null,this.flush()},0))}read(e,{refreshIfMissing:t=!1}={}){let n=this.syncContext()?.teamId&&Xh(e);if(!n)return null;let r=Zh(n),i=this.entries.get(r)??null;return t&&!i&&(this.run?this.required.add(r):this.expires=0),this.expires<=this.now()&&this.schedule(),i}async flush(){let e=this.syncContext();if(!e?.teamId||this.run||this.expires>this.now())return;let t=this.run=new AbortController,n;try{n=await this.fetchWorkspace(e.teamId,t.signal,e.reportId)}catch{n=null}if(this.syncContext(),this.run!==t||t.signal.aborted)return;this.entries.clear();for(let e of Array.isArray(n)?n:[]){let t=Xh(e?.url);if(t&&typeof e.title==`string`&&[`open`,`draft`,`closed`,`merged`].includes(e.status)){let n=t.kind===`issue`&&e.status===`closed`?Gh(e.stateReason):null;this.entries.set(Zh(t),{title:e.title,description:typeof e.description==`string`?e.description:null,status:e.status,stateReason:n})}}this.expires=this.now()+6e4,this.run=null;let r=[...this.required].some(e=>!this.entries.has(e));this.required.clear(),r&&(this.expires=0,this.schedule()),this.changed()}},Uv=new Set,Wv=new Hv({context:()=>{let e=F.managedSession;return I()&&e?.id&&F.currentManagedTeam?{key:JSON.stringify([e.id,e.role,e.csrfToken]),teamId:F.currentManagedTeam,reportId:F.managedTeams.find(e=>e.id===F.currentManagedTeam)?.reports.find(e=>e.id===F.currentManagedReport&&e.visible===!1)?.id??null,teams:F.managedTeams}:null},fetchWorkspace:sx,changed:()=>{for(let e of Uv)e()}});function Gv(e){return Uv.add(e),()=>Uv.delete(e)}function Kv(){Wv.reset();for(let e of Uv)e()}function qv(e){F.currentManagedTeam===e&&Kv()}function Jv(e,t,n){if(F.currentManagedTeam!==e)return;let r=[...t].map(e=>({id:e,issue:F.managedIssues.get(e)}));r.some(({id:e,issue:t})=>n.has(e)&&t?.url!==n.get(e).url)&&qv(e);for(let{id:e,issue:t}of r)t?.url&&!n.has(e)&&Wv.read(t.url,{refreshIfMissing:!0}),t?.autoFix&&t.autoFix!==n.get(e)?.autoFix&&Wv.read(t.autoFix,{refreshIfMissing:!0});let i=r.find(({issue:e})=>e?.url)?.issue.url;i&&Wv.read(i)}var Yv={claude:{name:`Claude`,mark:`anthropic`,accounts:[{id:81847,logins:[`claude`]},{logins:[`claude[bot]`]}],names:[`Claude`],emails:[`noreply@anthropic.com`]},codex:{name:`Codex`,mark:`openai`,accounts:[{id:199175422,logins:[`chatgpt-codex-connector`,`chatgpt-codex-connector[bot]`]}],names:[`Codex`],emails:[`codex@openai.com`]},neo:{name:`Neo`,avatar:`app-3115942`,accounts:[{id:274065190,logins:[]},{id:268952163,logins:[]}],names:[],prefix:`neo/`,fingerprint:`🤖 Generated with [Neo](`},copilot:{name:`Copilot`,mark:`github-copilot`,accounts:[{id:198982749,logins:[`Copilot`,`copilot-swe-agent`]},{id:175728472,logins:[`Copilot`,`copilot-pull-request-reviewer`,`copilot-pull-request-reviewer[bot]`]}],names:[`Copilot`],prefix:`copilot/`},dependabot:{name:`Dependabot`,avatar:`app-29110`,accounts:[{id:49699333,logins:[`dependabot`,`dependabot[bot]`]}],names:[`dependabot[bot]`],prefix:`dependabot/`},actions:{name:`GitHub Actions`,avatar:`app-15368`,accounts:[{id:41898282,logins:[`github-actions`,`github-actions[bot]`]}],names:[`github-actions[bot]`]},cursor:{name:`Cursor`,accounts:[],names:[`Cursor Agent`],emails:[`cursoragent@cursor.com`]}},Xv=Object.entries(Yv),Zv=new Map;for(let[e,{accounts:t}]of Xv)for(let{id:n,logins:r}of t)for(let t of r)Zv.set(t.toLowerCase(),{agent:e,ids:[...Zv.get(t.toLowerCase())?.ids??[],n]});var Qv=new Map(Xv.flatMap(([e,{accounts:t}])=>t.flatMap(({id:t,logins:n})=>t!==void 0&&n.length===0?[[t,e]]:[]))),$v=new Map(Xv.flatMap(([e,{names:t}])=>t.map(t=>[t.toLowerCase(),e])));new Map(Xv.flatMap(([e,{emails:t=[]}])=>t.map(t=>[t,e])));function ey(e,t=null,n=null){if(typeof e!=`string`)return typeof n==`string`?$v.get(n.trim().toLowerCase())??null:null;let r=Zv.get(e.toLowerCase());return r&&(t===null||r.ids.includes(void 0)||r.ids.includes(t))?r.agent:t===null?null:Qv.get(t)??null}function ty(e,t){let n=new Set([...t].map(t=>ey(e,t)));return n.size===1&&!n.has(null)}var ny=new Map([[`author`,`authorId`],[`authorLogin`,`authorId`],[`mergedBy`,`mergedById`],[`login`,`id`]]),ry=/^[A-Za-z\d][A-Za-z\d-]{0,38}(?:\[bot\])?$/u,iy=8,ay=e=>Number.isSafeInteger(e)&&e>0?e:null;function oy(e){let t=new Map;sy(e,t,0);let n=new Map;for(let[e,r]of t)n.set(e.toLowerCase(),new Set([...n.get(e.toLowerCase())??[],...r]));return new Map([...t.keys()].map(e=>{let t=n.get(e.toLowerCase());return t.size<=1?[e,[...t][0]??null]:[e,ty(e,t)?null:`ambiguous`]}))}function sy(e,t,n){if(n>iy||typeof e!=`object`||!e)return;if(Array.isArray(e)){for(let r of e)sy(r,t,n+1);return}let r=e;for(let[e,i]of Object.entries(r)){let a=ny.get(e);if(a&&typeof i==`string`&&ry.test(i)){let e=ay(r[a]);t.set(i,new Set([...t.get(i)??[],...e===null?[]:[e]]))}else sy(i,t,n+1)}}var cy=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="M23.75 4.48c-.26-.12-.37.11-.51.24l-.14.13c-.37.4-.8.66-1.37.63a2.7 2.7 0 0 0-2.17.85 2 2 0 0 0-1.24-1.55c-.36-.16-.71-.31-.96-.65-.17-.24-.22-.51-.3-.78-.06-.16-.11-.32-.3-.35-.2-.03-.27.14-.35.28q-.46.87-.43 1.84a4 4 0 0 0 1.84 3.4q.2.12.13.32l-.26.83c-.06.18-.14.22-.33.14a6 6 0 0 1-1.74-1.18c-.86-.83-1.63-1.74-2.6-2.46l-.69-.47c-.98-.96.13-1.74.4-1.84.26-.1.09-.43-.79-.42-.87 0-1.67.3-2.68.68l-.47.14a10 10 0 0 0-2.88-.1 6.2 6.2 0 0 0-4.5 2.62 7.7 7.7 0 0 0-1.26 6.07 9.3 9.3 0 0 0 3.36 5.65 9 9 0 0 0 6.44 2.14 7.6 7.6 0 0 0 5-1.86c.46.24.96.33 1.77.4.63.06 1.24-.03 1.7-.13.74-.15.7-.84.43-.96-2.16-1-1.68-.6-2.11-.92 1.1-1.3 2.74-2.65 3.39-7 .05-.35 0-.57 0-.85 0-.17.03-.24.23-.26a4 4 0 0 0 1.54-.47c1.4-.77 1.96-2.02 2.1-3.52.02-.23 0-.47-.25-.59M11.58 18c-2.09-1.64-3.1-2.18-3.52-2.16-.4.02-.32.47-.23.76s.2.49.37.74c.11.17.19.42-.12.6-.67.42-1.84-.13-1.9-.16a8.7 8.7 0 0 1-3.3-3.3 10 10 0 0 1-1.3-4.5c-.01-.38.1-.51.48-.58a5 5 0 0 1 1.53-.04 9.6 9.6 0 0 1 5.47 2.77c.87.86 1.53 1.89 2.2 2.9a14 14 0 0 0 2.48 2.9q.51.45.9.68c-.8.1-2.15.11-3.06-.61m1-6.44a.3.3 0 0 1 .42-.29.3.3 0 0 1 .2.3.3.3 0 0 1-.31.3.3.3 0 0 1-.3-.31m3.11 1.6q-.3.13-.59.16a1.3 1.3 0 0 1-.8-.26c-.27-.23-.47-.36-.55-.76a2 2 0 0 1 .02-.58c.07-.33-.01-.54-.24-.73q-.3-.22-.69-.2l-.25-.08a.25.25 0 0 1-.12-.36 1 1 0 0 1 .2-.2c.35-.2.76-.14 1.14.01.35.14.62.4 1 .78.4.45.46.58.69.92q.27.38.44.84.1.3-.25.46"/></svg>`,ly=A`<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" viewBox="0 0 24 24"><path fill="#4285F4" d="M21.35 12.27q0-1.19-.2-2.27H12v4.3h5.24a4.5 4.5 0 0 1-1.94 2.94v2.45h3.15c1.85-1.7 2.9-4.2 2.9-7.42"/><path fill="#34A853" d="M12 21.8c2.64 0 4.86-.87 6.48-2.35L15.33 17a6 6 0 0 1-3.33.92 5.9 5.9 0 0 1-5.51-4.06H3.24v2.52A9.8 9.8 0 0 0 12 21.8"/><path fill="#FBBC05" d="M6.49 13.86a6 6 0 0 1 0-3.72V7.62H3.24a9.8 9.8 0 0 0 0 8.76z"/><path fill="#EA4335" d="M12 6.08c1.43 0 2.72.49 3.74 1.45l2.8-2.8A9.3 9.3 0 0 0 12 2.2a9.8 9.8 0 0 0-8.76 5.42l3.25 2.52A5.9 5.9 0 0 1 12 6.08"/></svg>`,uy=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="m9.27 15.29 7.98-5.9c.39-.29.95-.17 1.13.27a6.6 6.6 0 0 1-1.4 7.17 6.5 6.5 0 0 1-7.15 1.41L7.1 19.5a8.96 8.96 0 0 0 13.95-9.38l.01.01c-.98-4.23.24-5.92 2.75-9.38L24 .5l-3.3 3.3zm-1.65 1.42c-2.79-2.67-2.3-6.8.07-9.18a6.7 6.7 0 0 1 7.17-1.43l2.7-1.25a8 8 0 0 0-1.82-1 9 9 0 0 0-9.76 1.97 9 9 0 0 0-1.96 9.76c1.02 2.5-.65 4.25-2.34 6.03-.6.63-1.2 1.25-1.68 1.92z"/></svg>`,dy=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="M6.9 4c1.91 0 3.51.93 5.43 3.38L12.6 7q.28-.36.58-.7l.31-.36C14.6 4.8 15.8 4 17.23 4a5 5 0 0 1 3.49 1.52l.21.2c1.73 1.77 2.92 4.72 3.06 8.04v.39l.01.25q0 2.27-.82 3.7l-.14.23-.1.15q-.45.64-1.1 1l-.26.15-.08.04-.3.12a4 4 0 0 1-1.34.2q-.78 0-1.43-.2a4.4 4.4 0 0 1-1.73-1.12l-.23-.24a22 22 0 0 1-2.49-3.59l-1.43-2.4-.54-.9-1.77 3.13-.34.6C7.6 19.15 6.23 20 4.36 20c-1.21 0-2.2-.42-2.94-1.18l-.17-.19a5 5 0 0 1-1.04-2.18l-.07-.32a9 9 0 0 1-.13-1.3L0 14.48q0-1.13.17-2.23l.1-.58c.3-1.53.83-2.95 1.54-4.15l.2-.34C3.2 5.34 4.82 4.1 6.64 4zm-.04 2.62h-.2c-.83.09-1.6.68-2.25 1.58l-.14.2v.02a11 11 0 0 0-1.46 3.84v.03a13 13 0 0 0-.21 2.25v.19q0 .27.04.54l.04.29q.15.75.49 1.2l.11.14q.46.5 1.17.5c1.1 0 1.8-.68 3.7-3.64l2.17-3.4.46-.7-.14-.2C9.11 7.3 8.08 6.62 6.86 6.62m10.2-.56-.18.01q-.93.08-1.82.93l-.2.2q-.64.7-1.36 1.8l.27.4.55.86.29.48 1.4 2.33.7 1.12q.84 1.37 1.4 2.08l.21.26q.41.48.78.68l.1.05q.34.14.72.13.27 0 .52-.07.5-.16.81-.64l.1-.16.07-.16q.3-.7.3-1.79l-.01-.45c-.08-2.87-.94-5.37-2.2-6.8l-.18-.18a3.2 3.2 0 0 0-2.27-1.08"/></svg>`,fy=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24"><path fill="gold" d="M3.43 3.4h3.43v3.43H3.43zm13.71 0h3.43v3.43h-3.43z"/><path fill="#FFAF00" d="M3.43 6.83h6.86v3.43H3.43zm10.28 0h6.86v3.43h-6.86z"/><path fill="#FF8205" d="M3.43 10.26h17.14v3.43H3.43z"/><path fill="#FA500F" d="M3.43 13.69h3.43v3.42H3.43zm6.86 0h3.43v3.42h-3.43zm6.85 0h3.43v3.42h-3.43z"/><path fill="#E10500" d="M0 17.11h10.29v3.43H0zm13.71 0H24v3.43H13.71z"/></svg>`,py=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="m1.05 16.92 9.54 2.55a21 21 0 0 0 .06 2.03l5.96 1.6a12 12 0 0 1-5.59.86l-.18-.02h-.04l-.09-.01-.1-.01-.15-.02-.1-.01-.11-.02-.32-.05h-.05l-.07-.02-.1-.02-.08-.02-.1-.02-.07-.01-.1-.02-.09-.02-.1-.03-.06-.01-.09-.03-.09-.02-.1-.02-.08-.03-.1-.03-.07-.02-.08-.02-.1-.03-.1-.03-.06-.02-.08-.03-.09-.03-.06-.02-.05-.02-.06-.02-.1-.04-.06-.02-.08-.03-.09-.04-.09-.03-.08-.04-.1-.04-.05-.02-.07-.03-.04-.02-.06-.03-.1-.05-.06-.02-.1-.05-.06-.03-.08-.04-.09-.04-.1-.05-.04-.02-.1-.06-.06-.03-.06-.03-.05-.03-.1-.05-.05-.03-.05-.03-.07-.04-.09-.05-.09-.06-.05-.03-.08-.06-.07-.03-.07-.05-.07-.05-.06-.04-.05-.03-.05-.03-.04-.03-.04-.03-.06-.04-.07-.05-.07-.05-.08-.06-.05-.04-.08-.06-.07-.06-.09-.06-.04-.04-.07-.05-.07-.06-.1-.07-.04-.04-.04-.04-.05-.04-.04-.04-.06-.05-.07-.06-.07-.06-.06-.06-.07-.06-.05-.05-.1-.09-.09-.1-.03-.02-.04-.04-.07-.07-.05-.06-.05-.05-.17-.18-.08-.09-.06-.07-.07-.08-.04-.04-.05-.07-.06-.06-.05-.06-.03-.03-.04-.06-.07-.08-.04-.05-.05-.07-.02-.02a12 12 0 0 1-1.44-2.4m-1.02-5.8 11.36 3.04a21 21 0 0 0-.47 2.01l10.81 2.9a12 12 0 0 1-1.84 2L.66 15.92l-.02-.04-.03-.1-.05-.16-.01-.02-.2-.74-.04-.13-.02-.08-.02-.1-.02-.08-.01-.09-.02-.08-.02-.1-.07-.42-.02-.12v-.08l-.02-.1-.02-.17v-.04a12 12 0 0 1-.04-2.15m1.6-5.15 11.94 3.2q-.54.9-1 1.87l11.29 3.03q-.22 1.22-.67 2.36l-11.55-3.09L.12 10.26l.02-.1v-.05l.02-.07.01-.08.02-.1.09-.44.03-.13.02-.08.02-.1.07-.27.03-.1.02-.08.03-.1.03-.08.03-.1.02-.08.03-.1a12 12 0 0 1 1.01-2.23zm4.44-4.4L17.35 4.6a21 21 0 0 0-1.69 1.72l7.83 2.1q.4 1.28.51 2.66L2.1 5.2l.05-.06.03-.04.04-.06.04-.06.06-.08.05-.07.07-.09.05-.06.05-.07.06-.07.06-.08.05-.07.07-.07.05-.07.07-.08.05-.06.07-.08.06-.06.06-.07.06-.06.07-.08.06-.06.06-.07.17-.17.1-.1.06-.05.07-.07a12 12 0 0 1 2.28-1.68M12.02 0h.41l.08.01h.16l.09.01h.1l.15.02h.08l.05.01h.08l.08.02h.04l.1.01.06.01.1.01.09.01.04.01.06.01.2.03.08.01.06.02.14.02.1.02.1.02.05.01.08.02h.04l.06.02.04.01.07.02h.05l.07.02.1.03.1.03.12.03.11.03.05.02.07.02.08.02.07.02.05.02.05.01.08.03.1.03.1.04.05.02.06.02.1.03.1.04.12.05.1.04.05.02.06.02.04.02.06.03.04.01.06.03.1.05.1.04.08.04.08.03.06.03.09.05.09.04.1.06.05.02.05.03.05.02.06.04.04.02.05.03.1.05.1.06.08.05.06.03.05.03.1.06.09.06.1.06.03.02.07.05.08.05.04.03.06.04.06.04.03.02.16.11.08.06.07.05.05.05.09.06.08.06.04.03.05.05.09.06.07.07.09.07q1.07.9 1.9 2.03L7.23 1l.06-.02.07-.03.08-.04.09-.03q.15-.07.34-.13l.1-.04.09-.03.08-.03.1-.03.26-.09.1-.02.08-.03.1-.03.08-.02.1-.03.09-.02.09-.02.1-.02.09-.03.09-.02.1-.02.08-.02.1-.02.1-.01.1-.02.08-.02.1-.02h.1l.09-.02.1-.02.1-.01.08-.01.11-.01.09-.01.1-.01.29-.03h.1l.1-.01h.1l.1-.01h.29z"/></svg>`,my=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="M10.21 8.98V7.62l.39-.02c3.6-.12 5.96 3.18 5.96 3.18s-2.55 3.65-5.28 3.65a3 3 0 0 1-1.07-.17v-4.11c1.4.17 1.68.8 2.52 2.25l1.88-1.62a5 5 0 0 0-3.67-1.85zm0-4.47v2.02l.39-.02c5-.17 8.26 4.23 8.26 4.23s-3.75 4.69-7.65 4.69q-.5 0-1-.1v1.25q.42.06.84.06c3.62 0 6.25-1.9 8.79-4.17.42.35 2.15 1.2 2.5 1.57-2.42 2.08-8.05 3.76-11.24 3.76q-.45 0-.9-.05v1.76H24v-15zm0 9.75v1.07c-3.36-.61-4.29-4.2-4.29-4.2a7.2 7.2 0 0 1 4.29-2.14v1.17a3.2 3.2 0 0 0-2.5 1.17s.6 2.28 2.5 2.94m-5.96-3.3a8.3 8.3 0 0 1 5.96-3.34v-1.1C5.8 6.9 2 10.72 2 10.72s2.16 6.43 8.21 7.02v-1.17c-4.44-.57-5.96-5.61-5.96-5.61"/></svg>`,hy=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="M18.65 3.87a5.09 5.09 0 1 1 0 10.17l5.05 5.05c.64.64.19 1.74-.72 1.74H8.48a8.48 8.48 0 0 1 0-16.96zM8.48 7.26a5.09 5.09 0 1 0 0 10.18 5.09 5.09 0 0 0 0-10.18"/></svg>`,gy=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="m12.6 1.34 1.18 2.08a.2.2 0 0 0 .15.09h5.56q.26 0 .44.32L21.4 6.4c.19.34.24.48.02.84l-.76 1.3-.37.66c-.1.2-.22.28-.04.51l2.66 4.64c.17.3.1.5-.05.77q-.65 1.17-1.33 2.34c-.16.27-.35.37-.68.37q-1.16-.03-2.33.01a.1.1 0 0 0-.08.05l-2.7 4.74c-.17.3-.38.37-.73.37h-3.02a.5.5 0 0 1-.46-.27l-1.34-2.32a.1.1 0 0 0-.08-.05H4.98q-.42.05-.8-.1l-1.6-2.77a.5.5 0 0 1 0-.54l1.2-2.12a.2.2 0 0 0 0-.2L1.9 11.38l-.79-1.4c-.16-.31-.17-.5.1-.96L2.6 6.57q.18-.34.58-.34h2.59a.1.1 0 0 0 .1-.06l2.81-4.9a.5.5 0 0 1 .42-.24h1.59L11.7 1c.35 0 .73.03.9.34m-3.43.4-.05.03L6.25 6.8a.2.2 0 0 1-.13.08H3.25q-.08 0-.04.07L9.02 17.1q.04.06-.03.06l-2.8.01a.2.2 0 0 0-.2.12L4.67 19.6q-.06.12.07.12h5.72q.06 0 .1.07l1.4 2.45q.08.12.14 0l5-8.76.8-1.38a.1.1 0 0 1 .09 0l1.42 2.53a.1.1 0 0 0 .1.06l2.77-.02.04-.02v-.04l-2.9-5.09a.1.1 0 0 1 0-.1l.29-.52 1.12-1.97q.03-.06-.04-.06H9.2q-.09 0-.04-.08l1.43-2.5a.1.1 0 0 0 0-.12l-1.37-2.4zm6.3 8.02q.06 0 .03.06l-.84 1.47-2.6 4.58-.06.03-.05-.03L8.5 9.84q-.03-.05.03-.05l.21-.02z"/></svg>`,_y=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24"><path fill="#FF7764" d="M7.52 2a4.47 4.47 0 0 0 8.96 0h4.55A9 9 0 0 1 12 10.98 9 9 0 0 1 2.98 2z"/><path fill="#FF563F" d="M16.48 22a4.47 4.47 0 0 0-8.96 0H2.98A9 9 0 0 1 12 13.02 9 9 0 0 1 21.03 22z"/></svg>`,vy=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="M12 0C8.02 0 4.76.26 2.5 2.52.22 4.78 0 8.03 0 12.02c0 3.97.23 7.23 2.5 9.49C4.75 23.77 8.01 24 12 24s7.24-.23 9.5-2.5c2.28-2.24 2.5-5.5 2.5-9.48s-.23-7.24-2.5-9.5S15.98 0 12 0M4.9 7.4h5.63c1.47 0 3 .07 3.76.83.75.75.83 2.23.83 3.68v4.54a.15.15 0 0 1-.15.15h-1.95a.15.15 0 0 1-.15-.15v-4.62c0-.8-.04-1.63-.46-2.05-.36-.36-1.03-.44-1.72-.46H7.16a.15.15 0 0 0-.15.15v6.98a.15.15 0 0 1-.15.15H4.9a.15.15 0 0 1-.15-.15v-8.9a.15.15 0 0 1 .15-.14m12.14 0h1.95a.15.15 0 0 1 .15.15v8.9a.15.15 0 0 1-.15.14h-1.95a.15.15 0 0 1-.15-.14v-8.9a.15.15 0 0 1 .15-.14m-8.12 3.55h2.05q.13 0 .15.15v5.35a.15.15 0 0 1-.15.15H8.92a.15.15 0 0 1-.15-.15V11.1a.15.15 0 0 1 .15-.15"/></svg>`,yy=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="M12.1 2 9.94 4.95H.65L2.83 2zm11.15 17.05L21.08 22h-9.24L14 19.05zM24 2 9.26 22H0L14.74 2z"/></svg>`,by=e=>A`<svg width="1em" height="1em" fill="currentColor" viewBox="4 5 8 8" aria-hidden="true"><path d="${e}"></path></svg>`,xy=by(Ki),Sy=by(qi),Cy={anthropic:xy,deepseek:cy,"github-copilot":A`<svg width="1em" height="1em" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path d="${Ji}"></path></svg>`,google:ly,meta:dy,mistralai:fy,moonshot:py,moonshotai:py,nvidia:my,openai:Sy,openrouter:hy,qwen:gy,unbiased:_y,xiaomi:vy,"x-ai":uy,"z-ai":yy},wy=A`<svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><rect x="4" y="4" width="12" height="12" rx="3"/><path d="M8 1v3m4-3v3M8 16v3m4-3v3M1 8h3m-3 4h3m12-4h3m-3 4h3"/></svg>`;function Ty(e){return Object.hasOwn(Cy,e)?Cy[e]:wy}var Ey=new Map,Dy=new Map,Oy=new Set;function ky(e){let{users:t,...n}=e??{},r=t??{};for(let[e,t]of oy(n)){let n=e.toLowerCase();t===`ambiguous`||t!==null&&Dy.has(n)&&Dy.get(n)!==t&&!ty(e,[t,Dy.get(n)])?Oy.add(n):t!==null&&Dy.set(n,t),(!Object.hasOwn(r,e)||Oy.has(n))&&Ey.delete(n)}for(let[e,t]of Object.entries(r))Oy.has(e.toLowerCase())||(typeof t?.agent==`string`&&Object.hasOwn(Yv,t.agent)?Ey.set(e.toLowerCase(),{agent:t.agent}):typeof t?.id==`string`&&typeof t.login==`string`?Ey.set(e.toLowerCase(),{id:t.id,login:t.login,name:typeof t.name==`string`&&t.name.trim()?t.name.trim():null}):Ey.delete(e.toLowerCase()));return e}var Ay=0;function jy(){Ey.clear(),Dy.clear(),Oy.clear(),Ly.clear(),Ry.clear(),Ay++}async function My(e){let t=Ay,n=Iy,r=await e();return t!==Ay||(ky(r),n!==Iy&&By(Fy.userId,Fy.profile)),r}var Ny=new Map;function Py(e){globalThis.fetch(`/api/avatar/${encodeURIComponent(e)}`,{cache:`reload`,credentials:`same-origin`}).catch(()=>{})}var Fy=null,Iy=0,Ly=new Set,Ry=new Set;function zy(e,t,n=!1,r=null){n&&(Ny.set(e,(Ny.get(e)??0)+1),Py(e)),r&&Ly.add(r.login.toLowerCase()),Number.isSafeInteger(r?.githubId)&&Ry.add(r.githubId),Fy={userId:e,profile:t},Iy++,By(e,t)}function By(e,t){for(let[n,r]of Ey)r.id===e&&((Dy.has(n)?Ry.has(Dy.get(n)):Ly.has(n))?Ey.delete(n):Ey.set(n,{...r,login:t.login,name:t.name?.trim()||null}))}function Vy(e){let t=typeof e==`string`?Ey.get(e.toLowerCase()):null;return t?.id?t:null}var Hy=e=>Ey.get(e.toLowerCase())?.agent??null,Uy=e=>A`<img src="${e}" alt="" loading="lazy" decoding="async" @error="${e=>e.currentTarget.remove()}">`,Wy=e=>Uy(`/api/avatar/${encodeURIComponent(e.id)}${Ny.has(e.id)?`?v=${Ny.get(e.id)}`:``}`);function Gy(e,t){let{name:n,mark:r,avatar:i}=Yv[e];return A`<span class="app-user" data-tooltip="${t}">${r||i?A`<span class="${`app-user-mark is-${e}`}" aria-hidden="true">${r?Ty(r):Uy(`/api/avatar/${i}`)}</span>`:A`<span class="app-user-avatar" aria-hidden="true">${n[0]}</span>`}<span class="app-user-name">${n}</span></span>`}function Ky(e){let t=typeof e==`string`?Hy(e):null;if(t)return Yv[t].name;let n=Vy(e);return n?n.name??n.login:e}function qy(e,t=e){let n=typeof e==`string`?Hy(e):null;if(n)return Gy(n,`@${e} on GitHub`);let r=Vy(e);return r?Jy(r,e):t}function Jy(e,t=e.login){return A`<span class="app-user" data-tooltip="${`@${t} on GitHub`}"><span class="app-user-avatar" aria-hidden="true">${(e.name??e.login)[0].toUpperCase()}${Wy(e)}</span><span class="app-user-name">${e.name??e.login}</span></span>`}function Yy(e){let t=new Map;for(let n of e){let e=Hy(n),r=e?`agent:${e}`:Vy(n)?.id??`login:${n.toLowerCase()}`;t.has(r)||t.set(r,n)}return[...t.values()]}function Xy(e,t=null){return typeof e==`string`?Hy(e):ey(null,null,t)}function Zy(e,t=null,n=t??e??``){if(typeof e==`string`)return qy(e,n);let r=Xy(null,t);return r?Gy(r,t):n}function Qy(e,t=null){if(typeof e==`string`)return Ky(e);let n=Xy(null,t);return n?Yv[n].name:t}var $y=3,eb=e=>typeof e==`string`&&Object.hasOwn(Yv,e)?e:null,tb=e=>e.length>1?`${e.slice(0,-1).join(`, `)} and ${e.at(-1)}`:e[0]??``;function nb({login:e=null,name:t=null,agent:n=null}){let r=eb(n)??Xy(e,t);if(r){let{name:e,mark:t,avatar:n}=Yv[r];return A`<span class="${`commit-avatar is-${r}`}">${t?Ty(t):n?Uy(`/api/avatar/${n}`):e[0]}</span>`}let i=Vy(e),a=(i?.name??i?.login??t??e??``).trim()[0]?.toUpperCase()??`?`;return A`<span class="commit-avatar">${a}${i?Wy(i):M}</span>`}function rb(e,t,n=null){return eb(n)&&t?t:typeof e==`string`&&(Vy(e)||Hy(e))?Ky(e):t??Qy(e,t)??e??``}function ib(e,t=null,n=[]){let r=(Array.isArray(n)?n:[]).filter(e=>typeof e?.name==`string`||typeof e?.login==`string`).slice(0,$y);if(r.length===0)return Zy(e,t);let i=rb(e,t),a=r.map(e=>rb(e.login??null,e.name??null,e.agent));return A`<span class="app-user commit-authors" data-tooltip="${tb([i,...a])}"><span class="commit-avatars" aria-hidden="true">${[{login:e,name:t},...r].map(nb)}</span><span class="app-user-name">${i}</span><span class="sr-only"> with ${tb(a)}</span></span>`}var ab=null,ob=null;function sb(){return ob?.getPreviewRole()??null}function cb(){ob?.setPreviewRole(null)}function lb(){jy(),ub=null,ob?.resetManagedAppState()}var ub=null;function db(e){let t=e?`${e.id}\0${e.role}`:null;t!==ub&&(jy(),ub=t),ob?.setManagedAppSession(e)}function fb(e){return ob?.setManagedReportCatalog(e)??new Set}function pb(e,t=F.currentManagedTeam){return ob?.readReportSources(e,t)}function mb(){ob?.clearReportSources(),ob?.clearFindingHistory()}async function hb(e,t=F.currentManagedTeam){return(await K()).fetchReportSources(e,t)}function K(){return ab||(ab=(async()=>{try{return ob=await import(`./client-managed.js`),ob}catch(e){throw ab=null,e}})(),ab)}async function gb(e){return(await K()).probeSession(e)}async function _b(e){return(await K()).probeTeams(e)}async function vb(e){return(await K()).fetchManagedBundleCatalog(e)}async function yb(e,t,n){return(await K()).fetchNpmPackage(e,t,n)}async function bb(e,t,n,r){return(await K()).fetchRepositoryCode(e,t,n,r)}async function xb(e){return(await K()).fetchBrowsableRepositories(e)}async function Sb(e,t){return(await K()).fetchRepositoryRefs(e,t)}async function Cb(e,t,n,r){return(await K()).fetchRepositoryContents(e,t,n,r)}function wb(e,t,n,r){return My(async()=>(await K()).fetchRepositoryHistory(e,t,n,r))}async function Tb(e,t,n,r){return(await K()).fetchRepositoryChanges(e,t,n,r)}async function Eb(e,t,n,r){return(await K()).fetchRepositoryTree(e,t,n,r)}function Db(e,t){return My(async()=>(await K()).fetchRepositoryAgents(e,t))}function Ob(e,t,n){return My(async()=>(await K()).fetchRepositoryIssues(e,t,n))}function kb(e,t,n){return My(async()=>(await K()).fetchRepositoryItem(e,t,n))}async function Ab(e,t,n){return(await K()).fetchPullDependencies(e,t,n)}async function jb(e,t,n){return(await K()).fetchPullDependenciesOf(e,t,n)}async function Mb(e,t,n){return(await K()).fetchTeamDependencies(e,t,n)}async function Nb(e,t,n){return(await K()).fetchNpmDeltas(e,t,n)}function Pb(e,t,n){return My(async()=>(await K()).fetchRepositoryPulse(e,t,n))}function Fb(e,t,n,r){return My(async()=>(await K()).fetchRepositoryPulseItems(e,t,n,r))}async function Ib(e,t){return(await K()).fetchNpmVersions(e,t)}async function Lb(e,t){return(await K()).fetchNpmStats(e,t)}async function Rb(e,t){return(await K()).fetchNpmAdvisories(e,t)}async function zb(e,t,n){return(await K()).fetchNpmTags(e,t,n)}async function Bb(e,t,n,r){return(await K()).fetchNpmRisk(e,t,n,r)}async function Vb(e,t,n){return(await K()).fetchNpmSocket(e,t,n)}async function Hb(e,t,n){return(await K()).fetchNpmProvenance(e,t,n)}async function Ub(e,t,n,r){return(await K()).fetchPrettyBundleFile(e,t,n,r)}async function Wb(e,t,n,r){return(await K()).fetchPrettyNpmFiles(e,t,n,r)}async function Gb(e,t,n,r,i){return(await K()).fetchPrettyNpmFile(e,t,n,r,i)}async function Kb(e,t,n,r){return(await K()).fetchPrettyBundleChanges(e,t,n,r)}async function qb(e,t,n,r,i){return(await K()).fetchPrettyNpmChanges(e,t,n,r,i)}async function Jb(e,t,n,r){return(await K()).fetchBundleRenameDiff(e,t,n,r)}async function Yb(e,t,n,r,i){return(await K()).fetchNpmRenameDiff(e,t,n,r,i)}async function Xb(e,t,n,r){return(await K()).fetchBundleRenameDiffs(e,t,n,r)}async function Zb(e,t,n,r,i){return(await K()).fetchNpmRenameDiffs(e,t,n,r,i)}async function Qb(e,t,n,r){return(await K()).fetchBundleTypeOnly(e,t,n,r)}async function $b(e,t,n,r,i){return(await K()).fetchNpmTypeOnly(e,t,n,r,i)}async function ex(e,t,n){return(await K()).fetchBundleComparison(e,t,n)}async function tx(e,t,n,r){return(await K()).fetchNpmComparison(e,t,n,r)}async function nx(e){return(await K()).openManagedShareDialog(e,``,F.managedSession)}async function rx({render:e,...t}){let n=()=>F.managedSession?.id===t.session.id&&F.managedSession?.csrfToken===t.session.csrfToken&&F.currentManagedTeam===t.teamId,r=await K();return n()?r.openManagedIssueDialog({...t,isCurrent:n,onCreated:r=>{if(!n())return;let i=t.context.findingId,a=F.managedIssues.get(i),o=tg([i],{[i]:{url:r,autoFix:a?.url===r?a.autoFix:null}});qv(t.teamId),o&&e()}}):null}async function ix(e){if(!Bv(e))return null;let t=F.reports,n=F.managedSession,r=F.currentManagedTeam,i=()=>Bv(e)&&F.managedSession===n&&F.currentManagedTeam===r&&F.reports===t,a=await K();return i()?a.openFindingHistoryDialog({finding:e,teamId:r,isCurrent:i}):null}async function ax(e,t){return(await K()).fetchTeamAnnotations(e,t)}async function ox(e,t=F.currentManagedTeam,n){return(await K()).fetchReportTriage(e,t,n)}async function sx(e,t,n){return(await K()).fetchFixes(e,t,n)}async function cx(e,t=F.currentManagedTeam,n){return(await K()).fetchReportComments(e,t,n)}async function lx(e,t,n,r=F.currentManagedTeam){return(await K()).saveReportComment(e,t,n,r)}async function ux(e,t,n,r,i=F.currentManagedTeam){return(await K()).deleteReportComment(e,t,n,r,i)}async function dx(e,t,n,r=F.currentManagedTeam){return(await K()).pushReportTriage(e,t,n,r)}async function fx(e){return e&&G?.rememberFinding(),(await K()).login(e)}async function px(e){return(await K()).logout(e)}async function mx(e){return(await K()).stopViewing(e)}async function hx(e){return(await K()).fetchProfile(e)}async function gx(e,t,n){return(await K()).chooseProfileAccounts(e,t,n)}async function _x(e,t,n){return(await K()).unlinkGithubAccount(e,t,n)}async function vx(e,t){return(await K()).fetchBundleMetadata(e,t)}async function yx(e,t){return(await K()).fetchBundleContents(e,t)}async function bx(e,t){return(await K()).fetchTeamReports(e,t)}async function xx(e,t){return(await K()).fetchTeamTrees(e,t)}async function Sx(e,t){return(await K()).watchTeamFeed(e,t)}async function Cx(e,t=F.currentManagedTeam,n=``,r=!1,i=!1){return(await K()).fetchBundleAdvisories(e,t,n,r,i)}async function wx(...e){return(await K()).dependencyReviews(...e)}async function Tx(...e){return(await K()).myDependencyReviews(...e)}async function Ex(...e){return(await K()).teamDependencyReviews(...e)}async function Dx(...e){return(await K()).discardDependencyReview(...e)}async function Ox(...e){return(await K()).latestDependencyReview(...e)}var kx=null,Ax=null,jx=0;function Mx(){return kx||(kx=document.createElement(`div`),kx.id=`app-toast`,kx.setAttribute(`role`,`status`),kx.setAttribute(`aria-live`,`polite`),document.body.append(kx),kx)}function Nx(e,{kind:t=`info`,duration:n=5200}={}){let r=Mx(),i=++jx;clearTimeout(Ax),Ax=null,r.className=t,r.textContent=e,requestAnimationFrame(()=>{jx===i&&r.classList.add(`visible`)});let a=()=>{jx===i&&Px()};return n>0&&(Ax=setTimeout(a,n)),a}function Px(){jx++,kx&&(clearTimeout(Ax),Ax=null,kx.classList.remove(`visible`))}function Fx(e,t){let n=e.find(e=>e.integrity===t);return e.filter(e=>e.integrity!==t&&(n?.managedId?e.managedId&&n.repoId!=null&&e.repoId===n.repoId:!e.managedId))}function Ix(e){return{managedId:e.id,slug:e.slug,integrity:e.integrity,kind:e.kind,summary:e.summary,commitInfo:e.commitInfo??null,name:e.filename,size:e.byteSize,repoId:e.repoId,repoFullName:e.repoFullName,repoDirectory:e.repoDirectory??``}}function Lx(e){return e.currentView===`bundles`?e.bundleDetails?e.bundleDetails.managedId??null:e.bundles?.find(t=>t.integrity===e.selectedBundle)?.managedId??null:null}function Rx(e,t,n,r=`overview`,i=null,a=[t]){if(!t?.managedId)return null;let o=e.find(e=>e.id===n&&e.bundles?.some(e=>e.id===t.managedId));if(n!=null&&!o)return null;let s=[t,...a.filter(e=>e.managedId&&e.managedId===i?.compareId)];return fi({view:`bundles`,teamId:o?.id??null,bundleId:t.managedId,bundleTab:r,...i},e,s.map(e=>({id:e.managedId,slug:e.slug})))}function zx(e,t=e.bundleDetailsTab){if(t!==`code`)return null;let n=e.bundleCodeFileRequest;if(n?.bundle===e.selectedBundle){if(n.file==null)return null;let{bundle:e,...t}=n;return t}if(!e.bundleSourceFile||e.bundleDetails?.integrity!==e.selectedBundle)return null;let r=Rt(It(e.bundleDetails)).numbers.get(e.bundleSourceFile);if(r==null)return null;let i=e.bundleSourceTargetLine;return i?.bundle!==e.selectedBundle||i.path!==e.bundleSourceFile?{file:r}:{file:r,line:i.line,...i.end>i.line?{endLine:i.end}:{}}}function Bx(e,t=e.bundleDetailsTab){let n=e.bundleCompare;if(t!==`compare`||!n?.target||n.bundle!==e.selectedBundle)return null;let r=e.bundles?.find(t=>t.integrity===e.selectedBundle);if(r?.npm)return{compareSpec:n.target,...ri(n.mode)};if(r?.repository)return/^[a-f\d]{40}$/u.test(n.target)?{compareCommit:n.target,...ri(n.mode)}:null;let i=Fx(e.bundles??[],e.selectedBundle).find(e=>e.integrity===n.target);return i?.managedId?{compareId:i.managedId,...ri(n.mode)}:null}function Vx(e,t=e.bundleDetailsTab){let n=e.bundles?.find(t=>t.integrity===e.selectedBundle)?.npm,r=e.npmReview?.bundle===e.selectedBundle?e.npmReview:null,i=e.bundleCompare?.bundle===e.selectedBundle?e.bundleCompare:null;if(n&&t===`review`&&e.bundleDetailsTab===`compare`&&i?.target&&!(r?.started&&r.user===e.managedSession?.id))return{reviewPackage:n.name,reviewSpec:i.target};if(n&&t===`compare`&&e.bundleDetailsTab===`review`&&r?.reviewPackage===n.name)return{compareSpec:r.reviewSpec,...ri(i?.mode??`code`)};if(t===`review`&&r){let{bundle:e,started:t,user:n,resume:i,...a}=r;return a}return zx(e,t)??Bx(e,t)}function Hx(e,t,n=()=>null){let r=e.bundles?.find(t=>t.integrity===e.selectedBundle)?.npm;if(!r||t===e.bundleDetailsTab)return;let i=Vx(e,t);if(t===`review`&&(e.npmReview={...e.npmReview?.bundle===e.selectedBundle&&e.npmReview.started&&e.npmReview.user===e.managedSession?.id?e.npmReview:{bundle:e.selectedBundle,...i},resume:!0}),t!==`compare`)return;let a=e.npmReview?.bundle===e.selectedBundle&&e.npmReview.reviewPackage===r.name?e.npmReview:null,o=i?.compareSpec??a?.reviewSpec??n(r);o&&(e.bundleDetailsTab===`review`||!i?.compareSpec)&&(e.bundleCompare={bundle:e.selectedBundle,target:o,mode:i?.compareMode??`overview`})}function Ux(e){return[...new Map(e.flatMap(e=>e.bundles??[]).map(e=>[e.id,Ix(e)])).values()]}function Wx(e,t,n){if(e.currentView!==`findings`&&e.currentView!==`files`&&e.currentView!==`links`||!e.currentManagedTeam)return!1;let r=t.find(t=>t.id===e.currentManagedTeam);if(n.has(`team:${e.currentManagedTeam}`)||!r||e.managedReports.some(e=>n.has(e.id)))return!0;let i=new Set(r.reports.filter(t=>e.currentManagedReport!==null||t.visible!==!1).map(e=>e.id));if(e.currentManagedReport!==null)return!i.has(e.currentManagedReport);let a=new Set(e.managedReports.map(e=>e.id));return i.size!==a.size||[...i].some(e=>!a.has(e))}async function Gx(e,t,{fetchCatalog:n,isCurrent:r,render:i,replaceRoute:a}){let o=Lx(e);if(!o||!r())return!0;let s=[`admin`,`manage`].includes(e.managedSession?.role),c,l=null;if(e.currentManagedTeam!=null||!s){let n=e=>e.bundles?.some(e=>e.id===o);l=t.find(t=>t.id===e.currentManagedTeam&&n(t))??t.find(n)}if(l)c=Ux(t);else if(s)try{c=(await n()).map(Ix)}catch(e){if(e.status!==401&&e.status!==403)throw e;c=[]}else c=[];if(!r())return!0;let u=c.find(e=>e.managedId===o);return u?(e.bundles=c,e.currentManagedTeam=l?.id??null,i(),a(Rx(t,u,e.currentManagedTeam,e.bundleDetailsTab,Vx(e),c)),!0):!1}var Kx={...at,[d]:ea},qx=new Set(Object.keys(Oi)),Jx={...Oi,default:`DeepView`};function Yx(e){let t=e._source??e.source;return t!=="default"&&Object.hasOwn(st,t)?t:null}function Xx(e){return Zx(e,Ru(e))}function Zx(e,t){if(t===d)return d;if(t!==void 0)return qx.has(t)?t:`default`;let n=e.toLowerCase();return n.endsWith(`.generic-md`)?`markdown-generic`:n.endsWith(`.codex`)?`codex-security`:n.endsWith(`.md`)?`claude-security`:`default`}function Qx(e){return Ru(e)===d}var $x=`.conflict-sev{display:inline-block;padding:1px .4rem;border-radius:3px;font-size:.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#fff;flex-shrink:0;&.sev-critical{background:var(--critical)}&.sev-high{background:var(--high)}&.sev-medium,&.sev-moderate{background:var(--medium)}&.sev-low{background:var(--low)}&.sev-high_bug{background:var(--high-bug)}&.sev-bug{background:var(--bug)}&.sev-informational,&.sev-info{background:var(--info)}&.sev-unrated{background:var(--low);color:var(--badge-low-text)}}
34
+ `,eS=`dialog{max-width:720px;width:min(94vw,720px)}header h3{margin:0 0 .25rem}header p{margin:0 0 .75rem;color:var(--muted);font-size:.82rem}.bulk{display:flex;gap:.4rem;margin-bottom:.7rem;padding-bottom:.7rem;border-bottom:1px solid var(--border)}.bulk button,.actions button{background:transparent;border:1px solid var(--border);color:var(--text);border-radius:var(--ui-radius, 5px);padding:.3rem .8rem;font:inherit;font-size:.78rem;&:hover{border-color:var(--accent);color:var(--accent)}&.primary{background:var(--accent);color:var(--surface);border-color:var(--accent)}&.primary:hover{filter:brightness(1.08)}}.list{list-style:none;margin:0;padding:0;max-height:60vh;overflow-y:auto;overscroll-behavior:none;-webkit-app-region:no-drag;app-region:no-drag;display:flex;flex-direction:column;gap:.5rem}.card{border:1px solid var(--border);border-radius:var(--ui-radius, 6px);padding:.55rem .7rem .6rem;background:rgb(from var(--text) r g b / .02)}.card-head{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-bottom:.35rem}.loc{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.76rem;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:1}.id{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.68rem;color:var(--muted);padding:1px .3rem;background:rgb(from var(--text) r g b / .05);border-radius:var(--ui-radius, 3px)}.desc{font-size:.78rem;color:var(--muted);margin-bottom:.55rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rows{display:flex;flex-direction:column;gap:.35rem}.row{display:grid;grid-template-columns:5rem 1fr 1fr;align-items:stretch;gap:.4rem}.row-label{color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;align-self:center}.choice{position:relative;display:flex;flex-direction:column;gap:.15rem;padding:.35rem .5rem;border:1px solid var(--border);border-radius:var(--ui-radius, 5px);min-width:0;&:has(input:checked){border-color:var(--accent);background:rgb(from var(--accent) r g b / .07)}&:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:1px}}.choice input[type=radio]{position:absolute;opacity:0;pointer-events:none}.choice-label{font-size:.68rem;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.choice:has(input:checked) .choice-label{color:var(--accent)}.choice-value{font-size:.82rem;min-width:0}.flag-badge{font-size:.82rem;color:var(--muted)}.flag-badge.on{color:var(--accent);font-weight:600}.color{display:inline-flex;align-items:center;gap:.35rem}.color-dot{width:12px;height:12px;border-radius:50%;box-shadow:0 0 0 1px rgb(from var(--text) r g b / .2);flex-shrink:0;&.marker-red{background:var(--marker-red)}&.marker-blue{background:var(--marker-blue)}&.marker-green{background:var(--marker-green)}&.marker-gray{background:var(--marker-gray)}}.color-name{text-transform:capitalize}.comment-text,.fix-text{cursor:text;user-select:text;-webkit-user-select:text}.comment-text{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;color:var(--text);white-space:pre-wrap;overflow-wrap:anywhere;& em{color:var(--muted);font-style:italic}}.fix-text{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:break-all;& a{color:var(--accent);text-decoration:none}& a:hover{text-decoration:underline}}.actions{display:flex;justify-content:flex-end;gap:.4rem;margin-top:.8rem;padding-top:.7rem;border-top:1px solid var(--border)}
35
+ `;function tS({tabs:e,current:t,prefix:n,select:r,disabled:i=!1}){return A`<div class="dlg-tabs" role="tablist" @keydown="${i=>{if(i.key!==`ArrowLeft`&&i.key!==`ArrowRight`)return;i.preventDefault();let a=e[(e.findIndex(e=>e.id===t)+(i.key===`ArrowRight`?1:-1)+e.length)%e.length];if(!a||a.id===t)return;let o=i.currentTarget;r(a.id),requestAnimationFrame(()=>o.querySelector(`#${n}-tab-${a.id}`)?.focus())}}">${e.map(e=>A`<button type="button" role="tab" class="dlg-tab" id="${`${n}-tab-${e.id}`}" aria-controls="${`${n}-panel-${e.id}`}" aria-selected="${String(t===e.id)}" tabindex="${t===e.id?0:-1}" ?disabled="${i&&t!==e.id}" @click="${()=>r(e.id)}">${e.icon??M}${e.label}</button>`)}</div>`}function nS(e){if(!e)return M;let t=e.replaceAll(`_`,` `);return A`<span class="${`conflict-sev sev-${e}`}">${t}</span>`}function rS(e){return`bundle-${e.slice(7,19)}\u2026`}function iS(e){return e.kind===`bundle`?e.label??rS(e.identifier):e.identifier}function aS(e){return e.kind===`bundle`?`bundle`:Qx(e.identifier)?`links file`:`report`}function oS(e){let t=e.length,n=t===1,r=new Set(e.map(aS)),i=`items`;if(r.size===1){let e=[...r][0];i=n?e:`${e}s`}return{count:t,singular:n,kindLabel:i}}function sS(e){return A`<ul class="lwd-list">${e.map(e=>{let t=aS(e);return A`<li>${iS(e)}${t===`report`?M:A`<span class="lwd-kind-tag">${t}</span>`}</li>`})}</ul>`}function cS(e){return e.length===0?M:A`<ul class="lwd-list" role="alert">${e.map(e=>A`<li><strong>${e.label}</strong> — ${e.reason}</li>`)}</ul>`}function lS(e){return e?A`<span class="color"><span class="${`color-dot marker-${e}`}"></span> <span class="color-name">${e}</span></span>`:A`<em>none</em>`}function uS(e){return A`<span class="comment-text">${e||A`<em>empty</em>`}</span>`}function dS(e){return e?mi(e)?A`<span class="fix-text"><a href="${e}" target="_blank" rel="noopener noreferrer">${e}</a></span>`:A`<span class="fix-text">${e}</span>`:A`<span class="comment-text"><em>empty</em></span>`}function fS(e){return e?A`<span class="${`triage triage-${e}`}">${e}</span>`:A`<em>none</em>`}function pS(e){return e?A`<span class="${`flag-badge${e===`flagged`?` on`:``}`}">${e}</span>`:A`<em>none</em>`}function mS(e,t){return e===`color`?lS(t):e===`comment`?uS(t):e===`fix`?dS(t):e===`triage`?fS(t):e===`flagged`?pS(t):A`${String(t)}`}function hS(e,t){let n=e?.file?e.line?`${e.file}:${e.line}`:e.file:``;return A`<div class="card-head">${nS(e?.severity)} ${n?A`<span class="loc" data-tooltip-truncated data-tooltip="${n}">${n}</span>`:M} <code class="id" data-tooltip="${t}">${t.slice(0,8)}…</code></div>${e?.description?A`<div class="desc" data-tooltip-truncated data-tooltip="${e.description}">${e.description}</div>`:M}`}var gS={title:`Triage conflicts`,intro:`disagree with your local triage on`,trailingNote:``,applyButton:`Apply`,importedSideLabel:`Apply imported`},_S={color:0,comment:1,fix:2,triage:3,flagged:4},vS={color:`Color`,comment:`Comment`,fix:`Fix`,triage:`Triage state`,flagged:`Flag`},yS=class extends kv{static styles=[...kv.styles,ua($x),ua(eS)];static properties={conflicts:{attribute:!1},findingLookup:{attribute:!1},labels:{attribute:!1},_settled:{state:!0}};constructor(){super(),this.conflicts=[],this.findingLookup=new Map,this.labels={...gS},this._settled=!1}focusInitial(){}_blockEscClose=e=>e.preventDefault();_onClick=e=>{let t=e.target.closest(`[data-bulk]`);if(!t)return;let n=t.dataset.bulk;for(let e of this.renderRoot.querySelectorAll(`input[type="radio"][value="${n}"]`))e.checked=!0};_onSubmit=e=>{e.preventDefault();let t={};for(let e of this.conflicts){let n=`${e.id}:${e.property}`,r=this.renderRoot.querySelector(`input[name="conflict-${CSS.escape(n)}"]:checked`);r&&(t[n]=r.value)}this._finish(t)};render(){let e=this.labels,t=new Map;for(let e of this.conflicts)t.has(e.id)||t.set(e.id,[]),t.get(e.id).push(e);for(let e of t.values())e.sort((e,t)=>(_S[e.property]??99)-(_S[t.property]??99));let n=this.conflicts.filter(e=>e.property===`color`).length,r=this.conflicts.filter(e=>e.property===`comment`).length,i=this.conflicts.filter(e=>e.property===`fix`).length,a=this.conflicts.filter(e=>e.property===`triage`).length,o=this.conflicts.filter(e=>e.property===`flagged`).length,s=[n?`${n} color${n===1?``:`s`}`:``,r?`${r} comment${r===1?``:`s`}`:``,i?`${i} fix${i===1?``:`es`}`:``,a?`${a} triage state${a===1?``:`s`}`:``,o?`${o} flag${o===1?``:`s`}`:``].filter(Boolean).join(`, `),c=`${t.size} finding${t.size===1?``:`s`}`;return A`<dialog @click="${this._onClick}" @cancel="${this._blockEscClose}" @close="${this._onClose}"><header><h3>${e.title}</h3><p>${c} ${e.intro} ${s}.${e.trailingNote?` ${e.trailingNote}`:``}</p><div class="bulk"><button type="button" data-bulk="local">Keep all current</button> <button type="button" data-bulk="imported">${e.importedSideLabel} (all)</button></div></header><form @submit="${this._onSubmit}"><ul class="list">${[...t.entries()].map(([t,n])=>A`<li class="card" data-id="${t}">${hS(this.findingLookup.get(t),t)}<div class="rows">${n.map(t=>{let n=`${t.id}:${t.property}`,r=`conflict-${n}`;return A`<div class="row" data-key="${n}"><span class="row-label">${vS[t.property]??t.property}</span> <label class="choice"><input type="radio" name="${r}" value="local" required> <span class="choice-label">Keep current</span> <span class="choice-value">${mS(t.property,t.local)}</span></label> <label class="choice"><input type="radio" name="${r}" value="imported" required> <span class="choice-label">${e.importedSideLabel}</span> <span class="choice-value">${mS(t.property,t.imported)}</span></label></div>`})}</div></li>`)}</ul><footer class="actions"><button type="submit" class="primary">${e.applyButton}</button></footer></form></dialog>`}};customElements.define(`triage-conflict-dialog`,yS);function bS(e,t,n={}){return new Promise((r,i)=>{let a=document.createElement(`triage-conflict-dialog`);a.conflicts=e,a.findingLookup=t,a.labels={...gS,...n},a.addEventListener(`resolve`,e=>{a.remove(),r(e.detail)}),a.addEventListener(`modal-conflict`,e=>{a.remove(),i(eh(e.detail?.cause))}),document.body.append(a)})}var xS=[`type`,`model`,`effort`,`exportsMode`],SS=[`security`,`correctness`],CS=[`max`,`xhigh`,`high`,`medium`,`low`,`minimal`],wS=[`list`,`isolate`];function TS(e,t){if(t==null)return e.length+1;let n=e.indexOf(t);return n===-1?e.length:n}var ES={type:e=>e===`terminal`?SS.length+2:TS(SS,e),model:e=>+(e==null),effort:e=>TS(CS,e),exportsMode:e=>TS(wS,e)};function DS(e,t,n){for(let r of n){let n=ES[r],i=n(e[r])-n(t[r]);if(i!==0)return i;let a=String(e[r]??``).localeCompare(String(t[r]??``));if(a!==0)return a}return 0}function OS(e,t,{typePrefix:n=!0}={}){return e===`type`?n?`analyzer: ${t??`null`}`:`${t??`null`}`:t??null}function kS(e,t){let n=t.filter(e=>e!==`exportsMode`),r=[],i=new Map;for(let t of e){if(t.exportsMode==null){r.push({...t});continue}let e=n.map(e=>t[e]??``).join(`|`),a=i.get(e);if(a){a.exportsMode=`${a.exportsMode}+${t.exportsMode}`;continue}let o={...t};i.set(e,o),r.push(o)}return r}function AS(e,t=xS){let n=new Map;for(let r of e){let e={};for(let n of t)e[n]=n===`model`?Li(r.model)??null:r[n]??null;let i=t.map(t=>e[t]??``).join(`|`);n.has(i)||n.set(i,e)}let r=[...n.values()].toSorted((e,n)=>DS(e,n,t));if(r.length===0)return[];let i={};for(let e of t)i[e]=new Set(r.map(t=>t[e])).size===1;let a=t.filter(e=>!i[e]),o=a.includes(`exportsMode`)?kS(r,t):r,s=o.length>2&&a.includes(`type`)&&a.length>1,c=[`model`,`effort`].filter(e=>t.includes(e)&&i[e]),l=[...c,...t.filter(e=>!c.includes(e))],u=[],d=!1;for(let e of l)if(i[e]){let t=OS(e,o[0][e]);t!=null&&u.push(t)}else if(!d){for(let e of o){let t=a.map(t=>OS(t,e[t],{typePrefix:!s})).filter(e=>e!=null);t.length>0&&u.push(t.join(` · `))}d=!0}return u}function jS(e=!1,t=``){let n=new Set;return[`deepview`,...e?[`security`]:[],...t.split(`,`)].map(e=>e.trim()).filter(e=>{let t=e.toLowerCase();return!e||n.has(t)?!1:(n.add(t),!0)})}var MS=null;function NS(){return MS||(MS=(async()=>await import(`./prism.js`))(),MS)}var PS=1048576;function FS(e){return e.length<=PS&&ha(e)<=PS}var IS={__proto__:null,js:`javascript`,javascript:`javascript`,mjs:`javascript`,cjs:`javascript`,node:`javascript`,jsx:`jsx`,ts:`typescript`,typescript:`typescript`,mts:`typescript`,cts:`typescript`,tsx:`tsx`,json:`json`,css:`css`,html:`markup`,htm:`markup`,xml:`markup`,svg:`markup`,markup:`markup`,yaml:`yaml`,yml:`yaml`,sh:`bash`,bash:`bash`,shell:`bash`,zsh:`bash`,console:`bash`,md:`markdown`,markdown:`markdown`,sol:`solidity`,solidity:`solidity`,rs:`rust`,rust:`rust`,rb:`ruby`,ruby:`ruby`,py:`python`,python:`python`,py3:`python`,python3:`python`,php:`php`,phtml:`php`,java:`java`,cpp:`cpp`,"c++":`cpp`,cc:`cpp`,cxx:`cpp`,hpp:`cpp`,hh:`cpp`,hxx:`cpp`,"h++":`cpp`,h:`cpp`,c:`c`,objc:`objectivec`,objectivec:`objectivec`,"objective-c":`objectivec`,m:`objectivec`,mm:`objectivec`};function LS(e){return typeof e==`string`?IS[e.toLowerCase()]??null:null}async function RS(e,t,n=null){if(!t||!FS(e))return null;try{return(await NS()).highlight(e,t,n)}catch{return null}}function zS(e){let t=[],n=[],r=``,i=0;for(;i<e.length;){let a=e.indexOf(`<`,i),o=(a===-1?e.slice(i):e.slice(i,a)).split(`
36
+ `);r+=o[0];for(let e=1;e<o.length;e++){for(let e=n.length-1;e>=0;e--)r+=n[e].close;t.push(r),r=n.map(e=>e.open).join(``)+o[e]}if(a===-1)break;let s=e.indexOf(`>`,a);if(s===-1){r+=e.slice(a);break}let c=e.slice(a,s+1);c.startsWith(`</`)?n.pop():n.push({open:c,close:`</${/^<([a-zA-Z][^\s/>]*)/u.exec(c)?.[1]??`span`}>`}),r+=c,i=s+1}return t.push(r),t}var BS=new Map,VS=new Set,HS=!1;function US(){HS||(HS=!0,queueMicrotask(()=>{HS=!1,F.codeBlockTick++,X()}))}function WS(e,t){let n=LS(t);if(!n||!e)return null;let r=`${n}\0${e}`;return BS.has(r)?BS.get(r):(VS.has(r)||(VS.add(r),(async()=>{let t=await RS(e,n);BS.set(r,t??null),VS.delete(r),US()})()),null)}var GS=new WeakMap,KS=new WeakMap;function qS(e){let t=/^([a-z][a-z\d+.-]*:\/\/[^/]*)(.*)$/iu.exec(e),n=t?.[1]??``,r=t?.[2]??e,i=r.startsWith(`/`),a=[];for(let e of r.split(`/`))if(e&&e!==`.`){if(e===`..`&&a.length>0&&a.at(-1)!==`..`)a.pop();else{if(e===`..`&&i&&a.length===0)return null;a.push(e)}}return n+(i?`/`:``)+a.join(`/`)}function JS(e){let t=new Map;for(let n of e.keys()){let e=qS(n);e!==null&&t.set(e,t.has(e)?null:n)}return t}function YS(e,t,n,r){let i=qS(n);if(i===null)return null;let a=typeof r==`string`?qS(`${r}/package.json`):null,o=i.slice(0,i.lastIndexOf(`/`)+1),s=KS.get(e);for(s||(s=new Map,KS.set(e,s));;){if(o.endsWith(`node_modules/`))return null;let n=`${o}package.json`;if(t.has(n)){if(!s.has(n)){let r=e.get(t.get(n)),i=null;try{i=typeof r==`string`?JSON.parse(r.replace(/^\uFEFF/u,``))?.imports??null:null}catch{}s.set(n,i&&typeof i==`object`&&!Array.isArray(i)?i:null)}return{directory:o,imports:s.get(n)}}if(n===a||!o||o===`/`||o.endsWith(`../`)||/^[a-z][a-z\d+.-]*:\/\/[^/]*\/?$/iu.test(o))return null;let r=o.slice(0,-1);o=r.slice(0,r.lastIndexOf(`/`)+1)}}function XS(e,t){if(!e)return null;if(Object.hasOwn(e,t)&&!t.includes(`*`))return{value:e[t],wildcard:null};let n=null;for(let r of Object.keys(e)){let e=r.indexOf(`*`);if(!r.startsWith(`#`)||e===-1||r.indexOf(`*`,e+1)!==-1)continue;let i=r.slice(0,e),a=r.slice(e+1);t.length<=i.length+a.length||!t.startsWith(i)||!t.endsWith(a)||(!n||e>n.star||e===n.star&&r.length>n.pattern.length)&&(n={pattern:r,star:e,suffix:a})}return n?{value:e[n.pattern],wildcard:t.slice(n.star,t.length-n.suffix.length)}:null}function ZS(e,t,n=0){return n>16?[null]:typeof e==`string`?[t===null?e:e.replaceAll(`*`,t)]:e&&typeof e==`object`?Object.values(e).flatMap(e=>ZS(e,t,n+1)):[null]}function QS(e,t,n,r,i,a){if(typeof e!=`string`||/[\\\p{Cc}]/u.test(e)||/%2f|%5c/iu.test(e))return null;let o=e.startsWith(`./`),s=null;if(o){let n;try{n=decodeURIComponent(e.slice(2))}catch{return null}if(/[\\\p{Cc}]/u.test(n)||n.split(`/`).some(e=>[`.`,`..`,`node_modules`].includes(e.toLowerCase())))return null;s=qS(t.directory+n)}else if(e.startsWith(`../`)||e.startsWith(`/`)||e.startsWith(`#`)||e.includes(`:`))return null;let c=new Set([e]);if(o)for(let e of i?.keys()??[])(e.startsWith(`./`)||e.startsWith(`../`))&&qS(a+e)===s&&c.add(e);let l=!1,u=null;for(let e of c){if(!i?.has(e))continue;let t=i.get(e);if(typeof t!=`string`||!n.has(t)||l&&t!==u)return null;l=!0,u=t}return l?u:o?r.get(s)??null:null}function $S(e,t,n,r,i,a){let o=XS(e?.imports,t);if(!o)return null;let s=ZS(o.value,o.wildcard),c=null;for(let t of s){let o=QS(t,e,n,r,i,a);if(!o||c&&o!==c)return null;c=o}return c}function eC(e,t=It(e)){let n=new Map;if(e?.kind===`stasis`)for(let r of e.bundle?.imports?.values()??[])for(let[e,i]of r){if(!t.has(e))continue;n.has(e)||n.set(e,new Map);let r=n.get(e);for(let[e,n]of i){let i=typeof n==`string`&&t.has(n)?n:null;r.set(e,r.has(e)&&r.get(e)!==i?null:i)}}else if(e?.kind===`sourcemap`)for(let[r,i]of Ft(e))t.has(r)&&n.set(r,new Map([...i].map(([e,n])=>[e,t.has(n)?n:null])));return n}function tC(e,t,n=null,r=e,i=null){let a=GS.get(e);a||(a=JS(e),GS.set(e,a));let o=GS.get(r);o||(o=JS(r),GS.set(r,o));let s=n?.get(t),c=t.slice(0,t.lastIndexOf(`/`)+1),l=n?YS(r,o,t,i?.get(t)):null;return t=>{if(typeof t!=`string`||/\p{Cc}/u.test(t))return null;if(s?.has(t)){let n=s.get(t);return typeof n==`string`&&e.has(n)?n:null}if(t.startsWith(`#`))return $S(l,t,e,a,s,c);if(!t.startsWith(`./`)&&!t.startsWith(`../`))return null;let n=t.slice(t.lastIndexOf(`/`)+1),r=n.lastIndexOf(`.`);return r<=0||r===n.length-1?null:a.get(qS(c+t))??null}}var nC=new WeakMap;function rC(e,t){let n=It(e),r=nC.get(n);return r||(r={imports:eC(e,n),packageDirs:Wt(e)},nC.set(n,r)),tC(n,t,r.imports,Bt(e),r.packageDirs)}var iC=/[\u0000-\u0008\u000B-\u001F\u007F-\u009F\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u2800\u3000\p{Cf}\p{Cs}\p{Co}\p{Cn}\p{Default_Ignorable_Code_Point}]/u,aC=new RegExp(iC.source,`gu`),oC=new Map(`0000 NUL NULL
37
37
  0001 SOH START OF HEADING
38
38
  0002 STX START OF TEXT
39
39
  0003 ETX END OF TEXT
@@ -148,48 +148,47 @@ FFA0 HWHF HALFWIDTH HANGUL FILLER
148
148
  E0001 LANG LANGUAGE TAG
149
149
  E0020 SP TAG SPACE
150
150
  E007F CANCEL CANCEL TAG`.split(`
151
- `).map(e=>{let[,t,n,r]=/^(\S+) (\S+) (.+)$/u.exec(e);return[Number.parseInt(t,16),{label:n,name:r}]})),aC=e=>`U+${e.toString(16).toUpperCase().padStart(4,`0`)}`;function oC(e){let t=iC.get(e);if(t)return{label:t.label,title:`${aC(e)} ${t.name}`};if(e>917536&&e<917631){let t=String.fromCodePoint(e-917504);return{label:t,title:`${aC(e)} TAG ${t}`}}let n=e>=65024&&e<=65039?e-65024+1:e>=917760&&e<=917999?e-917760+17:0;return n?{label:`VS${n}`,title:`${aC(e)} VARIATION SELECTOR-${n}`}:{label:aC(e),title:`${aC(e)} ${uC(e)}`}}var sC=/\p{Cf}/u,cC=/\p{Default_Ignorable_Code_Point}/u,lC=/\p{Cn}/u;function uC(e){if(e>=55296&&e<57344)return`lone surrogate`;if((e&65534)==65534||e>=64976&&e<=65007)return`noncharacter`;if(e>=57344&&e<=63743||e>=983040)return`private use character`;let t=String.fromCodePoint(e);return sC.test(t)?`format character`:cC.test(t)&&!lC.test(t)?`invisible character`:`unassigned code point`}function dC(e,t){let n=[];rC.lastIndex=0;for(let r=rC.exec(e);r;r=rC.exec(e)){let i=r[0].codePointAt(0),a=He(e,r.index,i,t);a===-1?n.push([r.index,i]):rC.lastIndex=a}return n}function fC(e){return nC.test(e)}var pC=e=>{let{label:t,title:n}=oC(e);return A`<span class="code-control" data-tooltip="${n}">${t}</span>`};function mC(e,t=!1){if(!fC(e))return[e];let n=[],r=0;for(let[i,a]of dC(e,t))i>r&&n.push(e.slice(r,i)),n.push(pC(a)),r=i+(a>65535?2:1);return r<e.length&&n.push(e.slice(r)),n}var hC=e=>e.replaceAll(`&`,`&amp;`).replaceAll(`<`,`&lt;`).replaceAll(`>`,`&gt;`).replaceAll(`"`,`&quot;`);function gC(e,t=!1){if(!fC(e))return e;let n=``,r=[];for(let t=0;t<e.length;){let i=e.indexOf(`<`,t),a=i===-1?e.length:i;if(a>t&&(r.push({text:n.length,markup:t}),n+=e.slice(t,a)),i===-1)break;let o=e.indexOf(`>`,i);t=o===-1?e.length:o+1}let i=``,a=0,o=0;for(let[s,c]of dC(n,t)){for(;r[o+1]?.text<=s;)o++;let t=r[o].markup+s-r[o].text,{label:n,title:l}=oC(c);i+=`${e.slice(a,t)}<span class="code-control" data-tooltip="${hC(l)}">${hC(n)}</span>`,a=t+(c>65535?2:1)}return i+e.slice(a)}function _C(e,t){return!!e&&!!t&&e.integrity===t.integrity&&e.file===t.file&&(e.range?.start??null)===(t.range?.start??null)&&(e.range?.end??null)===(t.range?.end??null)}var vC=[];function yC(e,t,n){if(!n)return null;if(!Array.isArray(e)||e.length===0||!_C(e[0],n))return{stack:vC,at:0,pos:n};let r=Math.min(Math.max(t,0),e.length-1);return{stack:e,at:r,pos:e[r]}}function bC({stack:e,at:t,base:n},r){if(_C(e.length>0?e[t]:n,r))return null;let i=e.length>0?e.slice(0,t+1):[n];return{stack:[...i,r],at:i.length}}function xC(e,t,n){return!Array.isArray(e)||e.length===0?0:Math.min(Math.max(t+n,0),e.length-1)}function SC(e,t){if(!e||!t||t.length===0)return;let n=e.getBoundingClientRect().top,r=t[0].getBoundingClientRect(),i=t.item(t.length-1).getBoundingClientRect(),a=r.top-n+e.scrollTop,o=a+(i.bottom-n+e.scrollTop-a)/2-e.clientHeight/2;e.scrollTo({top:Math.max(0,Math.min(o,a-r.height)),behavior:`instant`})}var CC=new Map,wC=new Map,TC=new Set,EC=new WeakMap,DC=new Set;function OC(e,t,n,r,i,a=wC,o=TC){let s=`${e}\0${t}`;if(a.has(s)||o.has(s))return;let c=Pt(t,r,n);if(!c){a.set(s,null);return}o.add(s),(async()=>{let e=await IS(n,c,i);a.set(s,typeof e==`string`?gC(e):null),o.delete(s),F.focusCodeTick++,queueMicrotask(X)})()}async function kC(e){let t=CC.get(e);if(t&&(t.loading||t.sources))return;let n=(F.bundles??[]).find(t=>t.integrity===e);if(n){CC.set(e,{sources:null,loading:!0,error:null});try{let t=await IK(e,n),r=It(t);CC.set(e,{sources:r,packageFiles:Bt(t),packageDirs:Wt(t),imports:QS(t,r),formats:t.kind===`stasis`?t.bundle?.formats:null,loading:!1,error:t.error??null})}catch(t){CC.set(e,{sources:null,loading:!1,error:t.message})}F.focusCodeTick++,queueMicrotask(X),queueMicrotask(AC)}}function AC(){let e=z.querySelectorAll(`.focus-code-line-active`);e.length!==0&&SC(e[0].closest(`.focus-code-body`),e)}function jC(e){if(I()){if(!e?._managedReportId||!Array.isArray(e._bundleHashes)||e._bundleHashes.length===0)return null;F.focusCodeTick;let t=db(e._managedReportId);if(t?.data===null||t?.error)return null;let n={integrity:t?.data?.integrity??null,reportId:e._managedReportId},r=[e,...Array.isArray(e.evidence)?e.evidence:[]];for(let e of r){let t=MC(n,e?.file);if(t)return{...n,file:t,line:e.line}}return null}let t=e?._bundleHashes;return!e?.fileHash||!Array.isArray(t)||t.length===0?null:$f(e.fileHash).find(({integrity:e})=>t.includes(e))??null}function MC(e,t){if(typeof t!=`string`||!t)return null;if(!e.reportId)return Xf(e.integrity,t);let n=db(e.reportId);if(!n||n.data===void 0&&!n.error)return t;let r=n.data;return r?.paths.get(t)??(r?.sources.has(t)?t:null)}function NC(e,t,n){if(!I())return null;let r=db(e);if(!r||r.data===void 0&&!r.error)return n&&!DC.has(e)&&(DC.add(e),pb(e).catch(()=>{}).finally(()=>{DC.delete(e),F.focusCodeTick++,queueMicrotask(X),queueMicrotask(AC)})),n?{loading:!0}:null;let i=r.data;if(!i)return null;t=i.paths.get(t)??t;let a=i.sources.get(t);if(typeof a!=`string`)return null;let o=EC.get(i);return o||(o={cache:new Map,pending:new Set},EC.set(i,o)),OC(i.integrity,t,a,i.formats?.get(t),$S(i.sources,t,i.imports,i.sources,i.packageDirs),o.cache,o.pending),{content:a,highlighted:o.cache.get(`${i.integrity}\0${t}`)??null,loading:!1}}function PC(e,t,{kick:n=!0,reportId:r=null}={}){if(r)return NC(r,t,n);if(I())return null;let i=CC.get(e);if(!i)return n?(kC(e),{loading:!0}):null;if(i.loading&&!n)return null;if(i.loading)return{loading:!0};if(!i.sources)return null;let a=i.sources.get(t);if(typeof a!=`string`)return null;OC(e,t,a,i.formats?.get(t),$S(i.sources,t,i.imports,i.packageFiles,i.packageDirs));let o=`${e}\0${t}`;return{content:a,highlighted:wC.has(o)?wC.get(o):void 0,loading:!1}}function FC(e){let t=jC(e);return t?.integrity?{integrity:t.integrity,file:t.file,range:Gn(t.reportId?t.line:e.line)}:null}function IC(e){return e?FC(Fg(e)):null}function LC(e){let t=IC(e);return t?{base:t,...yC(F.focusCodeStack,F.focusCodeAt,t)}:null}function RC(e){let t=FC(e);return t?yC(F.focusCodeStack,F.focusCodeAt,t).pos:null}function zC(e,t,n,r){let i=LC(e);if(!i||i.pos.integrity!==t||i.pos.file!==n)return null;let a=PC(t,r,{kick:!1,reportId:Fg(e)?._managedReportId});return a&&!a.loading?{integrity:t,file:r,range:null}:null}function BC(e){let t=e&&Fg(e),n=jC(t);if(n?.reportId&&!n.integrity)return NC(n.reportId,n.file,!0);let r=LC(e);if(!r)return null;let{pos:i}=r,a=PC(i.integrity,i.file,{reportId:t?._managedReportId});return!a||a.loading?a:{...a,file:i.file,integrity:i.integrity,range:i.range}}function VC(e,{teamOnly:t=!1,reportId:n}={}){if(!e)return null;let r=T(e);if(!$r(r))return null;if(I()){let i=t?null:n??(F.currentView===`links`?e._managedReportId:F.currentManagedReport),a=oi(fi({view:`findings`,teamId:F.currentManagedTeam,reportId:i,finding:{id:r}},F.managedTeams));return a?`${typeof location>`u`?``:location.origin}${a}`:null}let i=e._reportName||F.currentFile||``,a=F.currentWorkspace||HC(i);return Hr({id:r,report:F.currentWorkspace?null:Br(`report`,i),workspace:Br(`workspace`,a??``)})}function HC(e,t=F.currentReportWorkspace||F.currentWorkspace){let n=ap(e);return n.some(e=>e.id===t)?t:n.length===1?n[0].id:null}function UC(e){for(let t of[$g(),Xg()])for(let n of t)for(let t of n)if(T(t)===e)return{group:n,finding:t};return null}function WC(e,t){F.currentView=`findings`,F.viewMode===`graph`&&(F.viewMode=`table`,ar());let n=Bg(e).commonTriage;if(F.viewMode===`kanban`){let e=n??`untriaged`;F.kanbanExpandedColumn!==null&&F.kanbanExpandedColumn!==e&&(F.kanbanExpandedColumn=null)}else n!==F.shownTriage&&(F.shownTriage=n);F.upstreamOnly&&!e.every(e=>e.isUpstream)&&(F.upstreamOnly=!1),Tr(F.showRevalidation,F.upstreamOnly);let r=e.find(e=>T(e)===t);if(Ir(r)||C_(e_())&&!y_(e)||!jg(e).some(e=>T(e)===t)){if(F.currentWorkspace){r?.isUpstream?F.upstreamOnly=!0:F.showRevalidation=!1,Tr(F.showRevalidation,F.upstreamOnly);let e=$g().find(e=>e.some(e=>T(e)===t));if(e)return WC(e,t)}else F.revalidationDetailed=!0}if(z_([e]).length===0){let e=F.sortBy;d_(),F.sortBy=e}let i=H(e);return e.length>1&&F.activeTabByGroup.set(i,t),F.viewMode===`table`?F.tableSelectedGid=i:F.viewMode===`focus`?F.focusGid=i:F.viewMode===`kanban`&&(F.kanbanPopoverGid=i),i}function GC(e,t){return t!=null&&(e.authorId===t.id||e.authorId==null&&t.role===`admin`)}function KC(e,t){if(e.createdAt==null&&t.createdAt!=null)return-1;if(e.createdAt!=null&&t.createdAt==null)return 1;let n=(e.createdAt??0)-(t.createdAt??0);return n===0?e.id===t.id?0:e.id<t.id?-1:1:n}var qC=new Map;function JC(e,t){qC.has(e)||qC.set(e,new Set);let n=qC.get(e);return n.add(t),()=>{n.delete(t),n.size===0&&qC.delete(e)}}function YC(e,t){F.managedComments.set(e,t);for(let t of qC.get(e)??[])t()}function XC(e){return I()?F.managedComments?.get(e?.id)??[]:[]}function ZC(){return I()&&F.managedSession!=null&&tt(F.managedSession.role,`triage`)}function QC(e){return ZC()&&GC(e,F.managedSession)}function $C(e){let t=F.reports,n=F.managedSession?.id;return()=>I()&&n!=null&&F.managedSession?.id===n&&F.reports===t&&F.managedReports.some(t=>t.id===e)}async function ew(e,{signal:t,readAnnotations:n}={}){let r=$C(e);if(!r())return!1;let i=new Set(F.reports.filter(t=>t._managedReportId===e).flatMap(e=>e.groups.flatMap(e=>e.map(e=>e.id)))),a=new Map([...i].map(e=>[e,F.managedComments.get(e)])),o=n?(await n(e))?.comments:await ox(e,F.currentManagedTeam,{signal:t});if(!r()||o==null||t?.aborted)return!1;let s=new Map([...i].map(e=>[e,[]]));for(let e of o)s.has(e.findingId)&&s.get(e.findingId).push(e);for(let[e,t]of s)F.managedComments.get(e)===a.get(e)&&!tw(a.get(e),t)&&YC(e,t);return!0}function tw(e=[],t){return e.length===t.length&&e.every((e,n)=>JSON.stringify(e)===JSON.stringify(t[n]))}async function nw(e,t,n=null){let r=e?._managedReportId,i=$C(r);if(!i()||!ZC()||n&&n.authorId!==F.managedSession.id)return{status:403};let a=await sx(r,{findingId:e.id,body:t,commentId:n?.id,version:n?.version},F.managedSession.csrfToken);if(!i())return{status:0};if(a.comment){let t=(F.managedComments.get(e.id)??[]).filter(e=>e.id!==a.comment.id);t.push(a.comment),t.sort(KC),YC(e.id,t)}return a}async function rw(e,t){let n=e?._managedReportId,r=$C(n);if(!r()||!QC(t))return 403;let i=await cx(n,t.id,t.version,F.managedSession.csrfToken);if(!r())return 0;if(i===204){let n=F.managedComments.get(e.id)??[];YC(e.id,n.filter(e=>e.id!==t.id))}return i}function iw(e,t){return e?Kr(e,A`<span class="managed-comment-avatar" aria-hidden="true"><span>${(t?.[0]??`?`).toUpperCase()}</span> ${Ke()?M:A`<img alt="" src="${`/api/avatar/${encodeURIComponent(e)}`}" loading="lazy" @error="${e=>{e.currentTarget.hidden=!0}}">`}</span>`):M}function aw(e){let t=e.version>1&&e.updatedAt!=null,n=e.createdAt??(t?e.updatedAt:null);if(n==null)return M;let r=new Date(n),i=[e.createdAt==null?``:`Posted ${new Date(e.createdAt).toLocaleString()}`,t?`Edited ${new Date(e.updatedAt).toLocaleString()}`:``].filter(Boolean).join(`
152
- `);return A`<time class="managed-comment-time" datetime="${r.toISOString()}" data-tooltip="${i}">${e.createdAt==null?`edited `:``}${r.toLocaleString(void 0,{dateStyle:`short`,timeStyle:`short`})}${t&&e.createdAt!=null?` (edited)`:``}</time>`}function ow(e,t,n=M){let r=aw(e);return A`<div class="managed-comment"><div class="managed-comment-row">${e.authorId||e.authorLogin?A`<span class="managed-comment-author">${iw(e.authorId,e.authorLogin)} ${e.authorLogin?A`<strong>${e.authorLogin}</strong>`:M}</span>`:M}<div class="managed-comment-body">${t}</div>${r===M&&n===M?M:A`<div class="managed-comment-meta">${n===M?M:A`<div class="managed-comment-actions">${n}</div>`} ${r}</div>`}</div></div>`}function sw(e){return rr(e,{managed:I()}).map(e=>typeof e==`string`?e:e.self?A`<a class="comment-self-ref" href="${e.url}">${e.label}</a>`:A`<a href="${e.url}" target="_blank" rel="noopener noreferrer" data-tooltip="${e.url}">${e.label}</a>`)}var cw=A`<svg viewBox="0 0 16 16" width="11" height="11" aria-hidden="true"><rect x="3" y="2.5" width="8" height="10" rx="1" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/><rect x="5.5" y="5" width="8" height="9" rx="1" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/></svg>`,lw=A`<svg viewBox="0 0 16 16" width="12" height="12" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M10 3 5 8l5 5"/></svg>`,uw=A`<svg viewBox="0 0 16 16" width="12" height="12" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 3 11 8l-5 5"/></svg>`,dw=A`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M2 3.5h12M2 8h9a2.5 2.5 0 0 1 0 5H8.5M10 11.5 8.5 13l1.5 1.5M2 13h3.5"/></svg>`,fw=A`<svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" aria-hidden="true"><path d="M5 2h8a1 1 0 0 1 1 1v8M3 5h7a1 1 0 0 1 1 1v7a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1ZM4.5 9.5h4"/></svg>`,pw=A`<svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="1.5" y="2.5" width="13" height="11" rx="1.5"/><path d="m4.5 6 2 2-2 2M8.5 10h3"/></svg>`,mw=A`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M2 4.5a1 1 0 0 1 1-1h3.2l1.3 1.5H13a1 1 0 0 1 1 1V12a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V4.5Z"/></svg>`,hw=A`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5.5 4.5L2 8l3.5 3.5"/><path d="M10.5 4.5L14 8l-3.5 3.5"/></svg>`;function gw(e){return e===`informational`?`info`:e.replaceAll(`_`,` `)}function _w(e,{variant:t=`full`}={}){let n=F.severityMode,r=O(e,n),i=A`<span class="${`badge ${r}`}">${gw(r)}</span>`,a=Mi(e),o=t===`tab`?null:Ni(e);if(!a&&!o)return i;let s=o?`Corrected severity varies across reports \u2014 ${Object.entries(o).map(([e,t])=>`${e||`(this report)`}: ${gw(t.severity)}`).join(`; `)}`:null,c=o?A`<span class="badge-varies" data-tooltip="${s}" aria-label="${s}">varies</span>`:M;if(!a)return A`<span class="${`badge-pair badge-pair-${t}`}">${i}${c}</span>`;let l=O(e,`original`),u=ji(e),d=e.correctedSeverityReason,f=(ki[u]??0)>(ki[l]??0),p=f?`up`:`down`,m=f?`▲`:`▼`,h=n!==`original`,g=(h?`Corrected ${p} from ${gw(l)}`:`Original severity \u2014 corrected ${p} to ${gw(u)}`)+(d?` \u2014 ${d}`:``),_=`Severity ${gw(r)}; ${h?`corrected ${p} from ${gw(l)}`:`original, corrected to ${gw(u)}`}${d?`; reason: ${d}`:``}`;if(t===`tab`)return A`<span class="badge-pair badge-pair-tab" data-tooltip="${g}" aria-label="${_}">${i}<span class="${`badge-corr-mark ${p}`}" aria-hidden="true">${m}</span></span>`;let v=h?l:u;return A`<span class="${`badge-pair badge-pair-${t}`}" data-tooltip="${g}" aria-label="${_}">${i}<span class="badge-orig-wrap"><span class="${`badge-arrow ${p}`}" aria-hidden="true">${m}</span>${h?A`<span class="badge-pre" aria-hidden="true">was</span>`:M}<span class="${`badge-orig ${v}${h?` struck`:``}`}">${gw(v)}</span></span>${c}</span>`}var vw=/\[[^\]\n]+\]\([^)\s]+\)|\*\*[^*\n]+\*\*|(?<![\p{L}\p{M}\p{N}_])_(?![\s_])(?:[^_\n]|(?<=[\p{L}\p{M}\p{N}])_(?=[\p{L}\p{M}\p{N}]))*?(?<!\s)_(?![\p{L}\p{M}\p{N}_])|"[^"\n]+"|`[^`\n]+`/gu;function yw(e){let t=[],n=0;for(let r of e.matchAll(vw)){r.index>n&&t.push(e.slice(n,r.index));let i=r[0].codePointAt(0);if(i===91){let e=Xn(r[0]);t.push(e?A`<a href="${e.url}" target="_blank" rel="noopener noreferrer" data-tooltip="${e.url}">${e.label}</a>`:r[0])}else i===42?t.push(A`<strong>${yw(r[0].slice(2,-2))}</strong>`):i===95?t.push(A`<em>${yw(r[0].slice(1,-1))}</em>`):i===96?t.push(A`<span class="inline-code">${r[0].slice(1,-1)}</span>`):t.push(A`<span class="inline-quote">${r[0]}</span>`);n=r.index+r[0].length}return n===0?e:(n<e.length&&t.push(e.slice(n)),t)}function bw({lang:e,code:t}){F.codeBlockTick;let n=HS(t,e);return A`<div class="code-block" data-lang="${e||M}">${e?A`<div class="code-block-lang">${e}</div>`:M}<pre><code>${n?k(n):t}</code></pre></div>`}function xw(e,{wrap:t=!1}={}){let n=e.split(/\n{2,}/u).filter(e=>e.trim()).flatMap(Wn);return n.length<2&&typeof n[0]!=`object`?t?A`<div class="para">${yw(e)}</div>`:yw(e):n.map(e=>typeof e==`string`?A`<div class="para">${yw(e)}</div>`:Sw(e))}function Sw({level:e,text:t,rule:n}){return n?A`<hr class="md-rule">`:A`<div class="md-heading" role="heading" aria-level="${e}">${yw(t)}</div>`}var Cw=/^\[([ xX])\][ \t]+/u;function ww({ordered:e,start:t,items:n}){let r=n.map(e=>{let t=Cw.exec(e);return t?A`<li class="md-task"><input type="checkbox" disabled="disabled" ?checked="${t[1]!==` `}">${Tw(e.slice(t[0].length))}</li>`:A`<li>${Tw(e)}</li>`});return e?A`<ol class="md-list" start="${t>1?t:M}">${r}</ol>`:A`<ul class="md-list">${r}</ul>`}function Tw(e,{paragraphs:t=!0}={}){if(!e)return e;let n=e.replaceAll(`\r
151
+ `).map(e=>{let[,t,n,r]=/^(\S+) (\S+) (.+)$/u.exec(e);return[Number.parseInt(t,16),{label:n,name:r}]})),sC=e=>`U+${e.toString(16).toUpperCase().padStart(4,`0`)}`;function cC(e){let t=oC.get(e);if(t)return{label:t.label,title:`${sC(e)} ${t.name}`};if(e>917536&&e<917631){let t=String.fromCodePoint(e-917504);return{label:t,title:`${sC(e)} TAG ${t}`}}let n=e>=65024&&e<=65039?e-65024+1:e>=917760&&e<=917999?e-917760+17:0;return n?{label:`VS${n}`,title:`${sC(e)} VARIATION SELECTOR-${n}`}:{label:sC(e),title:`${sC(e)} ${fC(e)}`}}var lC=/\p{Cf}/u,uC=/\p{Default_Ignorable_Code_Point}/u,dC=/\p{Cn}/u;function fC(e){if(e>=55296&&e<57344)return`lone surrogate`;if((e&65534)==65534||e>=64976&&e<=65007)return`noncharacter`;if(e>=57344&&e<=63743||e>=983040)return`private use character`;let t=String.fromCodePoint(e);return lC.test(t)?`format character`:uC.test(t)&&!dC.test(t)?`invisible character`:`unassigned code point`}function pC(e,t){let n=[];aC.lastIndex=0;for(let r=aC.exec(e);r;r=aC.exec(e)){let i=r[0].codePointAt(0),a=He(e,r.index,i,t);a===-1?n.push([r.index,i]):aC.lastIndex=a}return n}function mC(e){return iC.test(e)}var hC=e=>{let{label:t,title:n}=cC(e);return A`<span class="code-control" data-tooltip="${n}">${t}</span>`};function gC(e,t=!1){if(!mC(e))return[e];let n=[],r=0;for(let[i,a]of pC(e,t))i>r&&n.push(e.slice(r,i)),n.push(hC(a)),r=i+(a>65535?2:1);return r<e.length&&n.push(e.slice(r)),n}var _C=e=>e.replaceAll(`&`,`&amp;`).replaceAll(`<`,`&lt;`).replaceAll(`>`,`&gt;`).replaceAll(`"`,`&quot;`);function vC(e,t=!1){if(!mC(e))return e;let n=``,r=[];for(let t=0;t<e.length;){let i=e.indexOf(`<`,t),a=i===-1?e.length:i;if(a>t&&(r.push({text:n.length,markup:t}),n+=e.slice(t,a)),i===-1)break;let o=e.indexOf(`>`,i);t=o===-1?e.length:o+1}let i=``,a=0,o=0;for(let[s,c]of pC(n,t)){for(;r[o+1]?.text<=s;)o++;let t=r[o].markup+s-r[o].text,{label:n,title:l}=cC(c);i+=`${e.slice(a,t)}<span class="code-control" data-tooltip="${_C(l)}">${_C(n)}</span>`,a=t+(c>65535?2:1)}return i+e.slice(a)}function yC(e,t){return!!e&&!!t&&e.integrity===t.integrity&&e.file===t.file&&(e.range?.start??null)===(t.range?.start??null)&&(e.range?.end??null)===(t.range?.end??null)}var bC=[];function xC(e,t,n){if(!n)return null;if(!Array.isArray(e)||e.length===0||!yC(e[0],n))return{stack:bC,at:0,pos:n};let r=Math.min(Math.max(t,0),e.length-1);return{stack:e,at:r,pos:e[r]}}function SC({stack:e,at:t,base:n},r){if(yC(e.length>0?e[t]:n,r))return null;let i=e.length>0?e.slice(0,t+1):[n];return{stack:[...i,r],at:i.length}}function CC(e,t,n){return!Array.isArray(e)||e.length===0?0:Math.min(Math.max(t+n,0),e.length-1)}function wC(e,t){if(!e||!t||t.length===0)return;let n=e.getBoundingClientRect().top,r=t[0].getBoundingClientRect(),i=t.item(t.length-1).getBoundingClientRect(),a=r.top-n+e.scrollTop,o=a+(i.bottom-n+e.scrollTop-a)/2-e.clientHeight/2;e.scrollTo({top:Math.max(0,Math.min(o,a-r.height)),behavior:`instant`})}var TC=new Map,EC=new Map,DC=new Set,OC=new WeakMap,kC=new Set;function AC(e,t,n,r,i,a=EC,o=DC){let s=`${e}\0${t}`;if(a.has(s)||o.has(s))return;let c=Pt(t,r,n);if(!c){a.set(s,null);return}o.add(s),(async()=>{let e=await RS(n,c,i);a.set(s,typeof e==`string`?vC(e):null),o.delete(s),F.focusCodeTick++,queueMicrotask(X)})()}async function jC(e){let t=TC.get(e);if(t&&(t.loading||t.sources))return;let n=(F.bundles??[]).find(t=>t.integrity===e);if(n){TC.set(e,{sources:null,loading:!0,error:null});try{let t=await UK(e,n),r=It(t);TC.set(e,{sources:r,packageFiles:Bt(t),packageDirs:Wt(t),imports:eC(t,r),formats:t.kind===`stasis`?t.bundle?.formats:null,loading:!1,error:t.error??null})}catch(t){TC.set(e,{sources:null,loading:!1,error:t.message})}F.focusCodeTick++,queueMicrotask(X),queueMicrotask(MC)}}function MC(){let e=z.querySelectorAll(`.focus-code-line-active`);e.length!==0&&wC(e[0].closest(`.focus-code-body`),e)}function NC(e){if(I()){if(!e?._managedReportId||!Array.isArray(e._bundleHashes)||e._bundleHashes.length===0)return null;F.focusCodeTick;let t=pb(e._managedReportId);if(t?.data===null||t?.error)return null;let n={integrity:t?.data?.integrity??null,reportId:e._managedReportId},r=[e,...Array.isArray(e.evidence)?e.evidence:[]];for(let e of r){let t=PC(n,e?.file);if(t)return{...n,file:t,line:e.line}}return null}let t=e?._bundleHashes;return!e?.fileHash||!Array.isArray(t)||t.length===0?null:$f(e.fileHash).find(({integrity:e})=>t.includes(e))??null}function PC(e,t){if(typeof t!=`string`||!t)return null;if(!e.reportId)return Xf(e.integrity,t);let n=pb(e.reportId);if(!n||n.data===void 0&&!n.error)return t;let r=n.data;return r?.paths.get(t)??(r?.sources.has(t)?t:null)}function FC(e,t,n){if(!I())return null;let r=pb(e);if(!r||r.data===void 0&&!r.error)return n&&!kC.has(e)&&(kC.add(e),hb(e).catch(()=>{}).finally(()=>{kC.delete(e),F.focusCodeTick++,queueMicrotask(X),queueMicrotask(MC)})),n?{loading:!0}:null;let i=r.data;if(!i)return null;t=i.paths.get(t)??t;let a=i.sources.get(t);if(typeof a!=`string`)return null;let o=OC.get(i);return o||(o={cache:new Map,pending:new Set},OC.set(i,o)),AC(i.integrity,t,a,i.formats?.get(t),tC(i.sources,t,i.imports,i.sources,i.packageDirs),o.cache,o.pending),{content:a,highlighted:o.cache.get(`${i.integrity}\0${t}`)??null,loading:!1}}function IC(e,t,{kick:n=!0,reportId:r=null}={}){if(r)return FC(r,t,n);if(I())return null;let i=TC.get(e);if(!i)return n?(jC(e),{loading:!0}):null;if(i.loading&&!n)return null;if(i.loading)return{loading:!0};if(!i.sources)return null;let a=i.sources.get(t);if(typeof a!=`string`)return null;AC(e,t,a,i.formats?.get(t),tC(i.sources,t,i.imports,i.packageFiles,i.packageDirs));let o=`${e}\0${t}`;return{content:a,highlighted:EC.has(o)?EC.get(o):void 0,loading:!1}}function LC(e){let t=NC(e);return t?.integrity?{integrity:t.integrity,file:t.file,range:Gn(t.reportId?t.line:e.line)}:null}function RC(e){return e?LC(Ig(e)):null}function zC(e){let t=RC(e);return t?{base:t,...xC(F.focusCodeStack,F.focusCodeAt,t)}:null}function BC(e){let t=LC(e);return t?xC(F.focusCodeStack,F.focusCodeAt,t).pos:null}function VC(e,t,n,r){let i=zC(e);if(!i||i.pos.integrity!==t||i.pos.file!==n)return null;let a=IC(t,r,{kick:!1,reportId:Ig(e)?._managedReportId});return a&&!a.loading?{integrity:t,file:r,range:null}:null}function HC(e){let t=e&&Ig(e),n=NC(t);if(n?.reportId&&!n.integrity)return FC(n.reportId,n.file,!0);let r=zC(e);if(!r)return null;let{pos:i}=r,a=IC(i.integrity,i.file,{reportId:t?._managedReportId});return!a||a.loading?a:{...a,file:i.file,integrity:i.integrity,range:i.range}}function UC(e,{teamOnly:t=!1,reportId:n}={}){if(!e)return null;let r=T(e);if(!$r(r))return null;if(I()){let i=t?null:n??(F.currentView===`links`?e._managedReportId:F.currentManagedReport),a=oi(fi({view:`findings`,teamId:F.currentManagedTeam,reportId:i,finding:{id:r}},F.managedTeams));return a?`${typeof location>`u`?``:location.origin}${a}`:null}let i=e._reportName||F.currentFile||``,a=F.currentWorkspace||WC(i);return Hr({id:r,report:F.currentWorkspace?null:Br(`report`,i),workspace:Br(`workspace`,a??``)})}function WC(e,t=F.currentReportWorkspace||F.currentWorkspace){let n=ap(e);return n.some(e=>e.id===t)?t:n.length===1?n[0].id:null}function GC(e){for(let t of[e_(),Zg()])for(let n of t)for(let t of n)if(T(t)===e)return{group:n,finding:t};return null}function KC(e,t){F.currentView=`findings`,F.viewMode===`graph`&&(F.viewMode=`table`,ar());let n=Vg(e).commonTriage;if(F.viewMode===`kanban`){let e=n??`untriaged`;F.kanbanExpandedColumn!==null&&F.kanbanExpandedColumn!==e&&(F.kanbanExpandedColumn=null)}else n!==F.shownTriage&&(F.shownTriage=n);F.upstreamOnly&&!e.every(e=>e.isUpstream)&&(F.upstreamOnly=!1),Tr(F.showRevalidation,F.upstreamOnly);let r=e.find(e=>T(e)===t);if(Ir(r)||w_(t_())&&!b_(e)||!Mg(e).some(e=>T(e)===t)){if(F.currentWorkspace){r?.isUpstream?F.upstreamOnly=!0:F.showRevalidation=!1,Tr(F.showRevalidation,F.upstreamOnly);let e=e_().find(e=>e.some(e=>T(e)===t));if(e)return KC(e,t)}else F.revalidationDetailed=!0}if(B_([e]).length===0){let e=F.sortBy;f_(),F.sortBy=e}let i=H(e);return e.length>1&&F.activeTabByGroup.set(i,t),F.viewMode===`table`?F.tableSelectedGid=i:F.viewMode===`focus`?F.focusGid=i:F.viewMode===`kanban`&&(F.kanbanPopoverGid=i),i}function qC(e,t){return t!=null&&(e.authorId===t.id||e.authorId==null&&t.role===`admin`)}function JC(e,t){if(e.createdAt==null&&t.createdAt!=null)return-1;if(e.createdAt!=null&&t.createdAt==null)return 1;let n=(e.createdAt??0)-(t.createdAt??0);return n===0?e.id===t.id?0:e.id<t.id?-1:1:n}var YC=new Map;function XC(e,t){YC.has(e)||YC.set(e,new Set);let n=YC.get(e);return n.add(t),()=>{n.delete(t),n.size===0&&YC.delete(e)}}function ZC(e,t){F.managedComments.set(e,t);for(let t of YC.get(e)??[])t()}function QC(e){return I()?F.managedComments?.get(e?.id)??[]:[]}function $C(){return I()&&F.managedSession!=null&&tt(F.managedSession.role,`triage`)}function ew(e){return $C()&&qC(e,F.managedSession)}function tw(e){let t=F.reports,n=F.managedSession?.id;return()=>I()&&n!=null&&F.managedSession?.id===n&&F.reports===t&&F.managedReports.some(t=>t.id===e)}async function nw(e,{signal:t,readAnnotations:n}={}){let r=tw(e);if(!r())return!1;let i=new Set(F.reports.filter(t=>t._managedReportId===e).flatMap(e=>e.groups.flatMap(e=>e.map(e=>e.id)))),a=new Map([...i].map(e=>[e,F.managedComments.get(e)])),o=n?(await n(e))?.comments:await cx(e,F.currentManagedTeam,{signal:t});if(!r()||o==null||t?.aborted)return!1;let s=new Map([...i].map(e=>[e,[]]));for(let e of o)s.has(e.findingId)&&s.get(e.findingId).push(e);for(let[e,t]of s)F.managedComments.get(e)===a.get(e)&&!rw(a.get(e),t)&&ZC(e,t);return!0}function rw(e=[],t){return e.length===t.length&&e.every((e,n)=>JSON.stringify(e)===JSON.stringify(t[n]))}async function iw(e,t,n=null){let r=e?._managedReportId,i=tw(r);if(!i()||!$C()||n&&n.authorId!==F.managedSession.id)return{status:403};let a=await lx(r,{findingId:e.id,body:t,commentId:n?.id,version:n?.version},F.managedSession.csrfToken);if(!i())return{status:0};if(a.comment){let t=(F.managedComments.get(e.id)??[]).filter(e=>e.id!==a.comment.id);t.push(a.comment),t.sort(JC),ZC(e.id,t)}return a}async function aw(e,t){let n=e?._managedReportId,r=tw(n);if(!r()||!ew(t))return 403;let i=await ux(n,t.id,t.version,F.managedSession.csrfToken);if(!r())return 0;if(i===204){let n=F.managedComments.get(e.id)??[];ZC(e.id,n.filter(e=>e.id!==t.id))}return i}function ow(e,t){return e?Kr(e,A`<span class="managed-comment-avatar" aria-hidden="true"><span>${(t?.[0]??`?`).toUpperCase()}</span> ${Ke()?M:A`<img alt="" src="${`/api/avatar/${encodeURIComponent(e)}`}" loading="lazy" @error="${e=>{e.currentTarget.hidden=!0}}">`}</span>`):M}function sw(e){let t=e.version>1&&e.updatedAt!=null,n=e.createdAt??(t?e.updatedAt:null);if(n==null)return M;let r=new Date(n),i=[e.createdAt==null?``:`Posted ${new Date(e.createdAt).toLocaleString()}`,t?`Edited ${new Date(e.updatedAt).toLocaleString()}`:``].filter(Boolean).join(`
152
+ `);return A`<time class="managed-comment-time" datetime="${r.toISOString()}" data-tooltip="${i}">${e.createdAt==null?`edited `:``}${r.toLocaleString(void 0,{dateStyle:`short`,timeStyle:`short`})}${t&&e.createdAt!=null?` (edited)`:``}</time>`}function cw(e,t,n=M){let r=sw(e);return A`<div class="managed-comment"><div class="managed-comment-row">${e.authorId||e.authorLogin?A`<span class="managed-comment-author">${ow(e.authorId,e.authorLogin)} ${e.authorLogin?A`<strong>${e.authorLogin}</strong>`:M}</span>`:M}<div class="managed-comment-body">${t}</div>${r===M&&n===M?M:A`<div class="managed-comment-meta">${n===M?M:A`<div class="managed-comment-actions">${n}</div>`} ${r}</div>`}</div></div>`}function lw(e){return rr(e,{managed:I()}).map(e=>typeof e==`string`?e:e.self?A`<a class="comment-self-ref" href="${e.url}">${e.label}</a>`:A`<a href="${e.url}" target="_blank" rel="noopener noreferrer" data-tooltip="${e.url}">${e.label}</a>`)}var uw=A`<svg viewBox="0 0 16 16" width="11" height="11" aria-hidden="true"><rect x="3" y="2.5" width="8" height="10" rx="1" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/><rect x="5.5" y="5" width="8" height="9" rx="1" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/></svg>`,dw=A`<svg viewBox="0 0 16 16" width="12" height="12" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M10 3 5 8l5 5"/></svg>`,fw=A`<svg viewBox="0 0 16 16" width="12" height="12" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 3 11 8l-5 5"/></svg>`,pw=A`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M2 3.5h12M2 8h9a2.5 2.5 0 0 1 0 5H8.5M10 11.5 8.5 13l1.5 1.5M2 13h3.5"/></svg>`,mw=A`<svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" aria-hidden="true"><path d="M5 2h8a1 1 0 0 1 1 1v8M3 5h7a1 1 0 0 1 1 1v7a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1ZM4.5 9.5h4"/></svg>`,hw=A`<svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="1.5" y="2.5" width="13" height="11" rx="1.5"/><path d="m4.5 6 2 2-2 2M8.5 10h3"/></svg>`,gw=A`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M2 4.5a1 1 0 0 1 1-1h3.2l1.3 1.5H13a1 1 0 0 1 1 1V12a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V4.5Z"/></svg>`,_w=A`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5.5 4.5L2 8l3.5 3.5"/><path d="M10.5 4.5L14 8l-3.5 3.5"/></svg>`;function vw(e){return e===`informational`?`info`:e.replaceAll(`_`,` `)}function yw(e,{variant:t=`full`}={}){let n=F.severityMode,r=O(e,n),i=A`<span class="${`badge ${r}`}">${vw(r)}</span>`,a=Mi(e),o=t===`tab`?null:Ni(e);if(!a&&!o)return i;let s=o?`Corrected severity varies across reports \u2014 ${Object.entries(o).map(([e,t])=>`${e||`(this report)`}: ${vw(t.severity)}`).join(`; `)}`:null,c=o?A`<span class="badge-varies" data-tooltip="${s}" aria-label="${s}">varies</span>`:M;if(!a)return A`<span class="${`badge-pair badge-pair-${t}`}">${i}${c}</span>`;let l=O(e,`original`),u=ji(e),d=e.correctedSeverityReason,f=(ki[u]??0)>(ki[l]??0),p=f?`up`:`down`,m=f?`▲`:`▼`,h=n!==`original`,g=(h?`Corrected ${p} from ${vw(l)}`:`Original severity \u2014 corrected ${p} to ${vw(u)}`)+(d?` \u2014 ${d}`:``),_=`Severity ${vw(r)}; ${h?`corrected ${p} from ${vw(l)}`:`original, corrected to ${vw(u)}`}${d?`; reason: ${d}`:``}`;if(t===`tab`)return A`<span class="badge-pair badge-pair-tab" data-tooltip="${g}" aria-label="${_}">${i}<span class="${`badge-corr-mark ${p}`}" aria-hidden="true">${m}</span></span>`;let v=h?l:u;return A`<span class="${`badge-pair badge-pair-${t}`}" data-tooltip="${g}" aria-label="${_}">${i}<span class="badge-orig-wrap"><span class="${`badge-arrow ${p}`}" aria-hidden="true">${m}</span>${h?A`<span class="badge-pre" aria-hidden="true">was</span>`:M}<span class="${`badge-orig ${v}${h?` struck`:``}`}">${vw(v)}</span></span>${c}</span>`}var bw=/\[[^\]\n]+\]\([^)\s]+\)|\*\*[^*\n]+\*\*|(?<![\p{L}\p{M}\p{N}_])_(?![\s_])(?:[^_\n]|(?<=[\p{L}\p{M}\p{N}])_(?=[\p{L}\p{M}\p{N}]))*?(?<!\s)_(?![\p{L}\p{M}\p{N}_])|"[^"\n]+"|`[^`\n]+`/gu;function xw(e){let t=[],n=0;for(let r of e.matchAll(bw)){r.index>n&&t.push(e.slice(n,r.index));let i=r[0].codePointAt(0);if(i===91){let e=Xn(r[0]);t.push(e?A`<a href="${e.url}" target="_blank" rel="noopener noreferrer" data-tooltip="${e.url}">${e.label}</a>`:r[0])}else i===42?t.push(A`<strong>${xw(r[0].slice(2,-2))}</strong>`):i===95?t.push(A`<em>${xw(r[0].slice(1,-1))}</em>`):i===96?t.push(A`<span class="inline-code">${r[0].slice(1,-1)}</span>`):t.push(A`<span class="inline-quote">${r[0]}</span>`);n=r.index+r[0].length}return n===0?e:(n<e.length&&t.push(e.slice(n)),t)}function Sw({lang:e,code:t}){F.codeBlockTick;let n=WS(t,e);return A`<div class="code-block" data-lang="${e||M}">${e?A`<div class="code-block-lang">${e}</div>`:M}<pre><code>${n?k(n):t}</code></pre></div>`}function Cw(e,{wrap:t=!1}={}){let n=e.split(/\n{2,}/u).filter(e=>e.trim()).flatMap(Wn);return n.length<2&&typeof n[0]!=`object`?t?A`<div class="para">${xw(e)}</div>`:xw(e):n.map(e=>typeof e==`string`?A`<div class="para">${xw(e)}</div>`:ww(e))}function ww({level:e,text:t,rule:n}){return n?A`<hr class="md-rule">`:A`<div class="md-heading" role="heading" aria-level="${e}">${xw(t)}</div>`}var Tw=/^\[([ xX])\][ \t]+/u;function Ew({ordered:e,start:t,items:n}){let r=n.map(e=>{let t=Tw.exec(e);return t?A`<li class="md-task"><input type="checkbox" disabled="disabled" ?checked="${t[1]!==` `}">${Dw(e.slice(t[0].length))}</li>`:A`<li>${Dw(e)}</li>`});return e?A`<ol class="md-list" start="${t>1?t:M}">${r}</ol>`:A`<ul class="md-list">${r}</ul>`}function Dw(e,{paragraphs:t=!0}={}){if(!e)return e;let n=e.replaceAll(`\r
153
153
  `,`
154
- `),r=t?Un(n):[n],i=r.length>1,a=e=>t?xw(e,{wrap:i}):yw(e),o=e=>{let t=Hn(e);return t.length===1&&typeof t[0]==`string`?a(t[0]):t.map(e=>typeof e==`string`?a(e):bw(e))};return r.length===1&&typeof r[0]==`string`?o(r[0]):r.map(e=>typeof e==`string`?o(e):ww(e))}function Ew(e){let t=new Set;for(let n of e)t.add(Jx(n));return[...t]}function Dw(e){let t=Jx(e);return Kx[t]??t}function Ow(e,t){F.linksTick,F.findingIndexTick;let n=T(e),r=$r(n)?cd(n).filter(e=>!t.has(e)):[];return r.length===0?M:A`<div class="duplicates-block"><span class="duplicates-label">Duplicates:</span>${r.map(e=>{let t=tr(e),n=qd(e),r=F.currentView===`links`&&F.currentLinks?.managedId?Yd([e])[0]:null,i=n.length===0?``:` \u2014 in ${n.map(e=>`${x(e)} (${Dw(e)})`).join(`, `)}`;return A`<a class="duplicate-ref" href="${I()?VC({id:e},{teamOnly:!0}):`#${Vr({id:e})}`}" data-links-preview="${r?e:M}" data-preview-report="${r?.report??M}" data-preview-row="${r?.index??M}" data-preview-managed-report="${r?.managedReportId??M}" data-tooltip="${`${t}${i}`}">${Ew(n).map(e=>k(Wx[e]??Wx.default))}<span class="duplicate-ref-id">${$n(e)??t}</span></a>`})}</div>`}function kw(e){let t=Nr(e);return t?A`<span class="${`revalidate-stamp ${t}`}">${t}</span><div class="value-label">Revalidation</div>`:M}function Aw(e){let t=Dr()?Ri(e.revalidateVerdict,e):``;return t?A`<div class="revalidate-verdict">${Tw(Vn(t))}</div>`:M}function jw(e,t,n=`section`,{collapsible:r=!1}={}){let i=t?A`<div class="section-body">${Tw(Vn(t))}</div>`:M;return!r||!t?A`<div class="${n}"><div class="section-label">${e}</div>${i}</div>`:A`<details class="${n}"><summary class="section-label">${e}</summary>${i}</details>`}function Mw(e,t,n){let r=e?.integrity&&t?.file?MC(e,t.file):null;return r?A`<span class="evidence-ref" role="link" tabindex="0" data-code-nav-integrity="${e.integrity}" data-code-nav-file="${r}" data-code-nav-line="${t?.line??``}">${n}</span>`:A`<span class="evidence-ref">${n}</span>`}function Nw(e,t){let n=Array.isArray(e.evidence)?e.evidence:[];if(n.length===0)return M;let r=Lg(e),i=jC(e),a=t===`focus`&&i!==null,o=a?RC(e):null;return A`<details class="evidence"><summary class="section-label">Evidence<span class="evidence-count">(${n.length})</span></summary><ol class="evidence-list">${n.map((t,n)=>{let s=Wi(t),c=Jn(t,e,r,n),l=pi(t),u=Kw(e,`ev${n}`,i,t?.file,t?.line),d=Vw(c),f=a&&_C(o,{integrity:i.integrity,file:MC(i,t?.file),range:Gn(t?.line)});return A`<li class="${C({current:f})}">${a?Mw(i,t,s):c?A`<a class="evidence-ref" href="${c}" target="_blank" rel="noopener">${s}</a>`:A`<span class="evidence-ref">${s}</span>`} ${u?.mark??M} ${d} ${u?.tip??M} ${l?A`<div class="evidence-note">${Tw(Vn(l))}</div>`:M} ${u?.body??M}</li>`})}</ol></details>`}function Pw(e,t){let n=Wi(e);return t?A`<a href="${t}" target="_blank" rel="noopener">${n}</a>`:n}function Fw(e,t){if(!t)return M;let n=t.slice(0,7),r=Qn(e,t);return r?A`<a href="${r}" target="_blank" rel="noopener" data-tooltip="${t}">${n}</a>`:A`<span data-tooltip="${t}">${n}</span>`}var Iw=A`<svg viewBox="0 0 16 16" width="11" height="11" aria-hidden="true"><path class="bubble" d="M2.5 3h11a.5.5 0 0 1 .5.5v6.5a.5.5 0 0 1-.5.5H8.4l-3 2.6V10.5H2.5a.5.5 0 0 1-.5-.5V3.5a.5.5 0 0 1 .5-.5z" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/></svg>`,Lw=A`<svg viewBox="0 0 16 16" width="11" height="11" aria-hidden="true"><path class="wrench" d="M10.4 2.6a3 3 0 0 0-3.6 4.5L2 12l2 2 4.9-4.8a3 3 0 0 0 4.5-3.6l-1.8 1.8-1.5-.4-.4-1.5z" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/></svg>`,Rw=A`<svg viewBox="0 0 16 16" width="11" height="11" aria-hidden="true"><g fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round"><path d="M6.2 11.2H4.8a3.2 3.2 0 0 1 0-6.4h1.4"/><path d="M9.8 4.8h1.4a3.2 3.2 0 0 1 0 6.4H9.8"/><path d="M5.6 8h4.8"/></g></svg>`,zw=A`<svg viewBox="0 0 16 16" width="12" height="12" aria-hidden="true"><g fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"><path d="M4.4 4.6 1.3 8l3.1 3.4"/><path d="m11.6 4.6 3.1 3.4-3.1 3.4"/><path d="M9.8 2.6 6.2 13.4"/></g></svg>`,Bw=k(ia);function Vw(e){let t=Bn(e);return t?A`<a class="gh-ref-btn" href="${e}" target="_blank" rel="noopener noreferrer" data-tooltip="${t}" aria-label="${`Open ${t} on GitHub`}">${Bw}</a>`:M}function Hw(e,t,n,r){return`${T(e)}\0${t}\0${n}\0${r?`${r.start}-${r.end}`:``}`}var Uw={key:null,host:null};function Ww(e,t){if(Uw.key===e)return;let n=Uw.host,r=e===null?null:t?.getRootNode?.()?.host??null;Uw={key:e,host:r},n?.requestUpdate?.(),r!==n&&r?.requestUpdate?.()}function Gw(e,t,n){F.codeBlockTick;let{text:r,lines:i,startLine:a}=qn(e,t);if(i.length===0)return M;let o=n.lastIndexOf(`.`),s=HS(r,o<0?``:n.slice(o+1)),c=a+i.length-1;return A`<div class="code-preview" style="${E({"--lineno-width":`${String(c).length}ch`})}"><aside class="code-preview-gutter" aria-hidden="true">${i.map((e,n)=>{let r=a+n,i=!!t&&r>=t.start&&r<=t.end;return A`<div class="${C({"code-preview-lineno":!0,cited:i})}">${r}</div>`})}</aside><pre class="code-preview-source"><code>${s?k(s):r}</code></pre></div>`}function Kw(e,t,n,r,i){if(F.bundleHashTick,!n||!r)return null;let a=MC(n,r);if(!a)return null;let o=Gn(i),s=Hw(e,t,r,o),c=F.codePreviews.has(s);F.focusCodeTick;let l=A`<button type="button" class="${C({"code-preview-btn":!0,open:c})}" data-code-preview="${s}" aria-expanded="${String(c)}" aria-label="${c?`Hide the source at ${r}`:`Show the source at ${r}`}" @mouseenter="${e=>{Ww(s,e.currentTarget),PC(n.integrity,a,{reportId:n.reportId})}}" @mouseleave="${e=>{Uw.key===s&&Ww(null,e.currentTarget)}}" @focus="${e=>{Ww(s,e.currentTarget),PC(n.integrity,a,{reportId:n.reportId})}}" @blur="${e=>{Uw.key===s&&Ww(null,e.currentTarget)}}">${zw}</button>`;if(c){let e=PC(n.integrity,a,{reportId:n.reportId}),t=!e||e.loading?A`<div class="code-preview code-preview-pending">${e?`Loading source…`:`Source unavailable`}</div>`:Gw(e.content,o,a);return{mark:l,tip:M,body:t}}if(Uw.key!==s)return{mark:l,tip:M,body:M};let u=PC(n.integrity,a,{kick:!1,reportId:n.reportId});return{mark:l,tip:u&&!u.loading?A`<div class="code-preview-tip" role="tooltip">${Gw(u.content,o,a)}</div>`:M,body:M}}var qw=A`<svg viewBox="4 5 8 8" width="11" height="11" fill="currentColor" aria-hidden="true"><path d="${Ki}"/></svg>`,Jw=A`<svg viewBox="0 0 16 16" width="11" height="11" aria-hidden="true"><circle cx="8" cy="8" r="6" fill="none" stroke="currentColor" stroke-width="1.2"/><circle cx="8" cy="8" r="1.7" fill="currentColor"/></svg>`,Yw=A`<svg viewBox="0 0 16 16" width="11" height="11" aria-hidden="true"><path class="flag-cloth" d="M5 1.5h6v13l-3-2.7-3 2.7z" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linejoin="round"/></svg>`;function Xw(e,t=!1){let n=U(e)?.flagged===!0,r=n?`Remove flag`:`Flag this finding`;return A`<button type="button" class="${C({"mark-flag":!0,flagged:n})}" data-flag-toggle="${T(e)}" ?disabled="${!Eg(e)}" aria-label="${r}" aria-pressed="${String(n)}">${Yw}${t?A`<span class="mark-btn-label">${n?`Flagged`:`Flag`}</span>`:M}</button>`}function Zw(e){let t=Bi(e)||e.file||`Security finding`;return t.length>120?`${t.slice(0,119)}\u2026`:t}function Qw(e){let t=zn(e,Lg(e)),n=Wi(e),r=[];e.file&&r.push(`File: ${t?`[${n}](${t})`:n}`),e.description&&r.push(e.description);let i=Yn(e);return i&&r.push(i),e.confidence!==void 0&&e.confidence!==null&&r.push(`Confidence: ${e.confidence}/10`),r.join(`
154
+ `),r=t?Un(n):[n],i=r.length>1,a=e=>t?Cw(e,{wrap:i}):xw(e),o=e=>{let t=Hn(e);return t.length===1&&typeof t[0]==`string`?a(t[0]):t.map(e=>typeof e==`string`?a(e):Sw(e))};return r.length===1&&typeof r[0]==`string`?o(r[0]):r.map(e=>typeof e==`string`?o(e):Ew(e))}function Ow(e){let t=new Set;for(let n of e)t.add(Xx(n));return[...t]}function kw(e){let t=Xx(e);return Jx[t]??t}function Aw(e,t){F.linksTick,F.findingIndexTick;let n=T(e),r=$r(n)?cd(n).filter(e=>!t.has(e)):[];return r.length===0?M:A`<div class="duplicates-block"><span class="duplicates-label">Duplicates:</span>${r.map(e=>{let t=tr(e),n=qd(e),r=F.currentView===`links`&&F.currentLinks?.managedId?Yd([e])[0]:null,i=n.length===0?``:` \u2014 in ${n.map(e=>`${x(e)} (${kw(e)})`).join(`, `)}`;return A`<a class="duplicate-ref" href="${I()?UC({id:e},{teamOnly:!0}):`#${Vr({id:e})}`}" data-links-preview="${r?e:M}" data-preview-report="${r?.report??M}" data-preview-row="${r?.index??M}" data-preview-managed-report="${r?.managedReportId??M}" data-tooltip="${`${t}${i}`}">${Ow(n).map(e=>k(Kx[e]??Kx.default))}<span class="duplicate-ref-id">${$n(e)??t}</span></a>`})}</div>`}function jw(e){let t=Nr(e);return t?A`<span class="${`revalidate-stamp ${t}`}">${t}</span><div class="value-label">Revalidation</div>`:M}function Mw(e){let t=Dr()?Ri(e.revalidateVerdict,e):``;return t?A`<div class="revalidate-verdict">${Dw(Vn(t))}</div>`:M}function Nw(e,t,n=`section`,{collapsible:r=!1}={}){let i=t?A`<div class="section-body">${Dw(Vn(t))}</div>`:M;return!r||!t?A`<div class="${n}"><div class="section-label">${e}</div>${i}</div>`:A`<details class="${n}"><summary class="section-label">${e}</summary>${i}</details>`}function Pw(e,t,n){let r=e?.integrity&&t?.file?PC(e,t.file):null;return r?A`<span class="evidence-ref" role="link" tabindex="0" data-code-nav-integrity="${e.integrity}" data-code-nav-file="${r}" data-code-nav-line="${t?.line??``}">${n}</span>`:A`<span class="evidence-ref">${n}</span>`}function Fw(e,t){let n=Array.isArray(e.evidence)?e.evidence:[];if(n.length===0)return M;let r=Rg(e),i=NC(e),a=t===`focus`&&i!==null,o=a?BC(e):null;return A`<details class="evidence"><summary class="section-label">Evidence<span class="evidence-count">(${n.length})</span></summary><ol class="evidence-list">${n.map((t,n)=>{let s=Wi(t),c=Jn(t,e,r,n),l=pi(t),u=Jw(e,`ev${n}`,i,t?.file,t?.line),d=Uw(c),f=a&&yC(o,{integrity:i.integrity,file:PC(i,t?.file),range:Gn(t?.line)});return A`<li class="${C({current:f})}">${a?Pw(i,t,s):c?A`<a class="evidence-ref" href="${c}" target="_blank" rel="noopener">${s}</a>`:A`<span class="evidence-ref">${s}</span>`} ${u?.mark??M} ${d} ${u?.tip??M} ${l?A`<div class="evidence-note">${Dw(Vn(l))}</div>`:M} ${u?.body??M}</li>`})}</ol></details>`}function Iw(e,t){let n=Wi(e);return t?A`<a href="${t}" target="_blank" rel="noopener">${n}</a>`:n}function Lw(e,t){if(!t)return M;let n=t.slice(0,7),r=Qn(e,t);return r?A`<a href="${r}" target="_blank" rel="noopener" data-tooltip="${t}">${n}</a>`:A`<span data-tooltip="${t}">${n}</span>`}var Rw=A`<svg viewBox="0 0 16 16" width="11" height="11" aria-hidden="true"><path class="bubble" d="M2.5 3h11a.5.5 0 0 1 .5.5v6.5a.5.5 0 0 1-.5.5H8.4l-3 2.6V10.5H2.5a.5.5 0 0 1-.5-.5V3.5a.5.5 0 0 1 .5-.5z" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/></svg>`,zw=A`<svg viewBox="0 0 16 16" width="11" height="11" aria-hidden="true"><path class="wrench" d="M10.4 2.6a3 3 0 0 0-3.6 4.5L2 12l2 2 4.9-4.8a3 3 0 0 0 4.5-3.6l-1.8 1.8-1.5-.4-.4-1.5z" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/></svg>`,Bw=A`<svg viewBox="0 0 16 16" width="11" height="11" aria-hidden="true"><g fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round"><path d="M6.2 11.2H4.8a3.2 3.2 0 0 1 0-6.4h1.4"/><path d="M9.8 4.8h1.4a3.2 3.2 0 0 1 0 6.4H9.8"/><path d="M5.6 8h4.8"/></g></svg>`,Vw=A`<svg viewBox="0 0 16 16" width="12" height="12" aria-hidden="true"><g fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"><path d="M4.4 4.6 1.3 8l3.1 3.4"/><path d="m11.6 4.6 3.1 3.4-3.1 3.4"/><path d="M9.8 2.6 6.2 13.4"/></g></svg>`,Hw=k(ia);function Uw(e){let t=Bn(e);return t?A`<a class="gh-ref-btn" href="${e}" target="_blank" rel="noopener noreferrer" data-tooltip="${t}" aria-label="${`Open ${t} on GitHub`}">${Hw}</a>`:M}function Ww(e,t,n,r){return`${T(e)}\0${t}\0${n}\0${r?`${r.start}-${r.end}`:``}`}var Gw={key:null,host:null};function Kw(e,t){if(Gw.key===e)return;let n=Gw.host,r=e===null?null:t?.getRootNode?.()?.host??null;Gw={key:e,host:r},n?.requestUpdate?.(),r!==n&&r?.requestUpdate?.()}function qw(e,t,n){F.codeBlockTick;let{text:r,lines:i,startLine:a}=qn(e,t);if(i.length===0)return M;let o=n.lastIndexOf(`.`),s=WS(r,o<0?``:n.slice(o+1)),c=a+i.length-1;return A`<div class="code-preview" style="${E({"--lineno-width":`${String(c).length}ch`})}"><aside class="code-preview-gutter" aria-hidden="true">${i.map((e,n)=>{let r=a+n,i=!!t&&r>=t.start&&r<=t.end;return A`<div class="${C({"code-preview-lineno":!0,cited:i})}">${r}</div>`})}</aside><pre class="code-preview-source"><code>${s?k(s):r}</code></pre></div>`}function Jw(e,t,n,r,i){if(F.bundleHashTick,!n||!r)return null;let a=PC(n,r);if(!a)return null;let o=Gn(i),s=Ww(e,t,r,o),c=F.codePreviews.has(s);F.focusCodeTick;let l=A`<button type="button" class="${C({"code-preview-btn":!0,open:c})}" data-code-preview="${s}" aria-expanded="${String(c)}" aria-label="${c?`Hide the source at ${r}`:`Show the source at ${r}`}" @mouseenter="${e=>{Kw(s,e.currentTarget),IC(n.integrity,a,{reportId:n.reportId})}}" @mouseleave="${e=>{Gw.key===s&&Kw(null,e.currentTarget)}}" @focus="${e=>{Kw(s,e.currentTarget),IC(n.integrity,a,{reportId:n.reportId})}}" @blur="${e=>{Gw.key===s&&Kw(null,e.currentTarget)}}">${Vw}</button>`;if(c){let e=IC(n.integrity,a,{reportId:n.reportId}),t=!e||e.loading?A`<div class="code-preview code-preview-pending">${e?`Loading source…`:`Source unavailable`}</div>`:qw(e.content,o,a);return{mark:l,tip:M,body:t}}if(Gw.key!==s)return{mark:l,tip:M,body:M};let u=IC(n.integrity,a,{kick:!1,reportId:n.reportId});return{mark:l,tip:u&&!u.loading?A`<div class="code-preview-tip" role="tooltip">${qw(u.content,o,a)}</div>`:M,body:M}}var Yw=A`<svg viewBox="4 5 8 8" width="11" height="11" fill="currentColor" aria-hidden="true"><path d="${Ki}"/></svg>`,Xw=A`<svg viewBox="0 0 16 16" width="11" height="11" aria-hidden="true"><circle cx="8" cy="8" r="6" fill="none" stroke="currentColor" stroke-width="1.2"/><circle cx="8" cy="8" r="1.7" fill="currentColor"/></svg>`,Zw=A`<svg viewBox="0 0 16 16" width="11" height="11" aria-hidden="true"><path class="flag-cloth" d="M5 1.5h6v13l-3-2.7-3 2.7z" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linejoin="round"/></svg>`;function Qw(e,t=!1){let n=U(e)?.flagged===!0,r=n?`Remove flag`:`Flag this finding`;return A`<button type="button" class="${C({"mark-flag":!0,flagged:n})}" data-flag-toggle="${T(e)}" ?disabled="${!Dg(e)}" aria-label="${r}" aria-pressed="${String(n)}">${Zw}${t?A`<span class="mark-btn-label">${n?`Flagged`:`Flag`}</span>`:M}</button>`}function $w(e){let t=Bi(e)||e.file||`Security finding`;return t.length>120?`${t.slice(0,119)}\u2026`:t}function eT(e){let t=zn(e,Rg(e)),n=Wi(e),r=[];e.file&&r.push(`File: ${t?`[${n}](${t})`:n}`),e.description&&r.push(e.description);let i=Yn(e);return i&&r.push(i),e.confidence!==void 0&&e.confidence!==null&&r.push(`Confidence: ${e.confidence}/10`),r.join(`
155
155
 
156
- `)}function $w(e){if(!F.currentWorkspace)return M;let t=e._reportName;if(!t||I()&&!e._managedReportId)return M;let n=st[Jx(t)]??st.default,r=A`${k(n)}<span class="report-chip-label report-button-label">${x(t)}</span>`;if(I()){let t=VC(e,{reportId:e._managedReportId});if(t)return A`<a class="report-chip report-button comment-self-ref" href="${Ye(t)}">${r}</a>`}return A`<button type="button" class="report-chip report-button" data-links-report="${t}" data-links-finding="${T(e)}" data-managed-report="${I()?e._managedReportId:M}">${r}</button>`}function eT(e,t,n,r,i=null){let a=i===`table`?M:$w(r),o=U(r),s=!wg(r),c=!Eg(r),l=o?.color??null,u=o?.comment??``,d=o?.fix??``,f=I()?`View comments`:u?`Edit comment: ${u}`:`Add comment`,p=d?`Edit fix link: ${d}`:`Add fix link (PR URL, etc.)`,m=i===`focus`&&a===M,h=I()?`Comments`:u?`Edit comment`:`Comment`,g=d?`Edit fix link`:`Fix link`,_=A`<button type="button" ?disabled="${s}" class="${C({"mark-comment":!0,"has-comment":u})}" data-tooltip="${u&&!I()?f:M}" aria-label="${f}">${Iw}${m?A`<span class="mark-btn-label">${h}</span>`:M}</button>`,v=A`<button type="button" ?disabled="${c}" class="${C({"mark-fix":!0,"has-fix":d})}" data-tooltip="${d?p:M}" aria-label="${p}">${Lw}${m?A`<span class="mark-btn-label">${g}</span>`:M}</button>`,y=Xw(r,m),b=A`<button type="button" class="mark-copy" aria-label="Copy finding details to clipboard">${cw}${m?A`<span class="mark-btn-label">Copy</span>`:M}</button>`,ee=VC(r)?A`<button type="button" class="mark-link" aria-label="Copy a link to this finding">${Rw}${m?A`<span class="mark-btn-label">Link</span>`:M}</button>`:M,te=I()?gi({repo:{github:r.repo?.github||r._repoFallback}}):Rg(r),ne=Dn(te,{title:Zw(r),body:Qw(r),labels:kS(r.isSecurity===!0,F.githubNewIssueLabels)}),re=I()&&F.managedSession&&!F.managedSession.publicShare&&F.currentManagedTeam,ie=A`${Jw}${m?A`<span class="mark-btn-label">Issue</span>`:M}`,ae=Qh(r)?M:ne?re?A`<button type="button" class="mark-issue" data-issue-form="${ne}" data-tooltip="${m?M:`Create a GitHub issue for this finding`}" aria-label="Create a GitHub issue for this finding">${ie}</button>`:A`<a class="mark-issue" href="${ne}" target="_blank" rel="noopener" data-tooltip="${m?M:`Create a GitHub issue for this finding`}" aria-label="Create a GitHub issue for this finding">${ie}</a>`:M,oe=A`<button type="button" class="mark-claude" data-tooltip="${m?M:`Open in Claude Code (claude://) with a confirm-and-fix prompt`}" aria-label="Open finding in Claude Code">${qw}${m?A`<span class="mark-btn-label">Claude</span>`:M}</button>`,se=A`<color-marker .selected="${l}" .disabled="${c}"></color-marker>`,ce=zg(e)!==e,le=e.linkedTabs?`change triage state for linked findings`:ce?`change triage state for App and own-source findings`:n.hasConflict?`change triage state (colors mismatch — acts per-tab)`:t.length>1?`change triage state for the whole group`:`change triage state`;return A`<div class="finding-actions">${a}<div class="finding-action-controls"><span class="mark-action-group">${_}${v}${y}</span><span class="mark-action-group">${b}${ee}${ae}${oe}</span>${se}${nT(e,le,i,n,r)}</div></div>`}function tT(e){if(e.newState!==`open`)return;let t=e.currentTarget,n=t.getRootNode().querySelector?.(`[popovertarget="${t.id}"]`);if(!n)return;let r=n.getBoundingClientRect(),i=t.offsetWidth||110,a=t.offsetHeight||100,o=r.right-i;o<4&&(o=4),o+i>window.innerWidth-4&&(o=window.innerWidth-i-4);let s=r.bottom+4;s+a>window.innerHeight-4&&r.top>a+4&&(s=r.top-a-4),t.style.top=`${s}px`,t.style.left=`${o}px`}function nT(e,t,n,r,i){let a=H(e),o=!Eg(i)||Wg(e,r).length===0,s=o?null:Gg(e,r,i),c={inprogress:`In progress`,fixed:`Fixed`,invalid:`Invalid`,deleted:`Deleted`,ignored:`Ignored`},l={inprogress:`In progress`,fixed:`Fixed`,invalid:`Invalid`,deleted:`Delete`,ignored:`Ignore`},u=!!F.shownTriage,d=u?c[F.shownTriage]:null,f=[`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`],p=u&&n!==`focus`?[{key:`restore`,label:`Restore`},...f.filter(e=>e!==F.shownTriage).map(e=>({key:e,label:l[e]}))]:f.map(e=>({key:e,label:l[e]})),m=[`mark-triage-menu`];u&&m.push(`with-label`,`triage-state-${F.shownTriage}`);let h=`triage-menu-${a.replaceAll(/[^A-Za-z0-9_-]/gu,`_`)}`;return A`<div class="triage-menu-wrap"><button type="button" class="${m.join(` `)}" popovertarget="${h}" popovertargetaction="toggle" aria-label="${t}" ?disabled="${o}">${d?A`<span class="mark-triage-label">${d}</span>`:M} <svg viewBox="0 0 12 12" width="11" height="11" aria-hidden="true"><path d="M2 4l4 4 4-4" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></button><div popover="auto" id="${h}" class="triage-menu" data-gid="${a}" role="menu" @beforetoggle="${tT}">${p.map(e=>A`<button type="button" class="${C({"triage-menu-item":!0,[`triage-menu-${e.key}`]:!0,active:s===e.key})}" data-triage-action="${e.key}" ?disabled="${o}" role="menuitem">${e.label}</button>`)}</div></div>`}function rT(e,t){let n=!!e?.comment,r=!!(e?.fix||$h(t)),i=e?.flagged===!0;return!n&&!r&&!i?M:A`<span class="tab-marks">${n?A`<span class="has-comment" role="img" aria-label="Has a comment">${Iw}</span>`:M}${r?A`<span class="has-fix" role="img" aria-label="Has a fix link">${Lw}</span>`:M}${i?A`<span class="flagged" role="img" aria-label="Flagged">${Yw}</span>`:M}</span>`}function iT(e,t,n){let{app:r,source:i}=Ng(e),a=e=>aT(e,T(e)===t,n);return A`<div class="tabs">${r.map(a)} ${r.length>0&&i.length>0?A`<span class="tab-level-separator" aria-hidden="true">•</span>`:M} ${i.map(a)}</div>`}function aT(e,t,n){let r=T(e),i=U(e),a=i?.color,o=Og(e,i),s=[`tab`,`tab-severity-${O(e,F.severityMode)}`];t&&s.push(`active`),a&&s.push(`tab-mark-${a}`),o===`ignored`&&!n.allIgnored?s.push(`tab-ignored`):o&&o!==`ignored`&&n.commonTriage===null&&s.push(`tab-${o}`);let c=qx(e),l=c?st[c]:null,u=!l&&e.confidence!=null;l?s.push(`tab-with-analyzer`):u&&s.push(`tab-with-confidence`);let d=l?A`<span class="tab-analyzer" role="img" aria-label="${Kx[c]}">${k(l)}</span>`:u?A`<span class="tab-conf" aria-label="${`Confidence ${e.confidence} out of 10`}">${e.confidence}<span class="tab-conf-max">/10</span></span>`:M;return A`<button type="button" class="${s.join(` `)}" data-tid="${r}" aria-pressed="${t}" aria-description="${a?`${a} color label`:M}"><span class="tab-label"><span class="tab-severity">${_w(e,{variant:`tab`})}</span><span class="tab-indicators">${rT(i,e)}</span></span>${d}</button>`}function oT(e){if(F.viewMode===`table`||F.viewMode===`focus`){let t=e.confidence*10;return A`<div class="${`conf-ring ${O(e,F.severityMode)}`}"><svg viewBox="0 0 36 36" aria-hidden="true"><circle class="conf-ring-track" cx="18" cy="18" r="15.9155"/><circle class="conf-ring-arc" cx="18" cy="18" r="15.9155" style="${E({"stroke-dasharray":`${t} 100`})}"/></svg> <span>${e.confidence}<small>/10</small></span></div><div class="value-label">Confidence</div>`}return A`<div class="conf-score"><strong>${e.confidence}</strong>/10</div><div class="value-label">Confidence</div>`}var sT=/^(?:@[a-z0-9][a-z0-9._-]*\/)?[a-z0-9][a-z0-9._-]*$/iu;function cT(e){if(nf(e))return M;let t=e?.name;if(typeof t!=`string`||!sT.test(t))return M;let n=e?.version,r=typeof n==`string`&&n.length>0,i=r?`https://www.npmjs.com/package/${t}/v/${encodeURIComponent(n)}`:`https://www.npmjs.com/package/${t}`,a=r?`${t}@${n}`:t;return A`<span class="line-num"><a class="npm-link" href="${i}" target="_blank" rel="noopener noreferrer">npm: ${a}</a></span>`}function lT(e,t,n,r,i,a){let o=T(e),s=U(e),c=s?.comment??``,l=s?.fix??``,u=$h(e),d=Qh(e),f=zn(e,Lg(e)),p=Pw(e,f),m=zi(e),h=jC(e),g=Kw(e,`loc`,h,e.file,e.line),_=Vw(f),v=A`<span class="line-num">${m?A`${p}, ${m}`:p}${g?.mark??M}${_}</span>`,y=In(e),b=String(e.discoveredIn??``).trim(),ee=b===String(e.file??``).trim()?``:b,te=i===`focus`?cT(e.package?.npm):M,ne=M;if(i!==`focus`&&I()&&g)ne=A`<button type="button" class="finding-code-btn" data-finding-code-report="${h.reportId}" data-finding-code-file="${e.file}" data-finding-code-line="${e.line??``}" aria-label="${`Open full source for ${e.file}`}">Code</button>`;else if(i!==`focus`&&!I()&&e.fileHash&&Array.isArray(e._bundleHashes)&&e._bundleHashes.length>0){F.bundleHashTick;let t=new Set(e._bundleHashes),n=$f(e.fileHash).find(({integrity:e})=>t.has(e));n&&(ne=A`<button type="button" class="finding-code-btn" data-finding-code-bundle="${n.integrity}" data-finding-code-file="${n.file}" data-finding-code-line="${e.line??``}" data-tooltip="${`Open ${n.file} in bundle source viewer`}">Code</button>`)}let{title:re,body:ie}=Vi(e),ae=Ui(ie),oe=ae.findIndex(e=>e.label!==null),se=oe===-1?ae:ae.slice(0,oe),ce=oe===-1?[]:ae.slice(oe);return A`<div class="${C({"tab-body":!0,active:t})}" data-tid="${o}">${r>1?A`<div class="print-case-label">${n+1} of ${r}</div>`:M}<div class="finding-left">${s?.color||s?.flagged===!0?A`<div class="${s?.color?`finding-top-marks color-${s.color}`:`finding-top-marks`}">${s?.color?A`<span class="finding-color-mark" role="img" aria-label="${`Color label: ${s.color}`}"></span>`:M} ${s?.flagged===!0?A`<span class="finding-bookmark-mark" role="img" aria-label="Bookmarked"></span>`:M}</div>`:M} ${_w(e,{variant:`full`})}<div class="value-label">Severity</div>${e.confidence===void 0?M:oT(e)} ${kw(e)} ${ne}</div><div class="finding-body"><div class="line-row">${v} ${g?.tip??M} ${te} ${ee?A`<span class="line-num discovered-in">(found analyzing ${ee})</span>`:M} ${y?A`<span class="run-meta">${y}</span>`:M}</div>${g?.body??M} ${re?A`<div class="desc-title">${yw(re)}</div>`:M} ${se.map(e=>A`<div class="desc">${Tw(Vn(e.body))}</div>`)} ${Nw(e,i)} ${ce.map(e=>e.label===null?A`<div class="desc">${Tw(Vn(e.body))}</div>`:jw(e.label,e.body))} ${e.impact?jw(`Impact`,Ri(e.impact,e)):M} ${e.reproduction?jw(`Reproduction`,Ri(e.reproduction,e),`section`,{collapsible:!0}):M} ${e.recommendation?jw(`Recommendation`,Ri(e.recommendation,e),`recommendation`,{collapsible:!0}):M} ${e.confidenceReason?A`<div class="conf-reason">${Tw(Ri(e.confidenceReason,e))}</div>`:M} ${Aw(e)} ${e.revalidateRecommendation&&Dr()?jw(`Revalidation recommendation`,Ri(e.revalidateRecommendation,e),`recommendation`,{collapsible:!0}):M} ${Mi(e)&&e.correctedSeverityReason?A`<div class="severity-reason"><span class="severity-reason-label">Severity correction:</span> ${Tw(e.correctedSeverityReason)}</div>`:M} ${Ow(e,a)} ${I()?XC(e).map(e=>A`<div class="comment-block">${ow(e,sw(e.body))}</div>`):c?A`<div class="comment-block"><span class="comment-label">Comment:</span> ${sw(c)}</div>`:M} ${d?A`<div class="fix-block"><span class="fix-label">Issue:</span><managed-fix-link .url="${d.url}"></managed-fix-link></div>`:M} ${l?A`<div class="fix-block"><span class="fix-label">Fix:</span> ${mi(l)?A`<managed-fix-link .url="${l}"></managed-fix-link>`:l}</div>`:M} ${u&&u!==l?A`<div class="fix-block"><span class="fix-label">Fix from issue:</span><managed-fix-link .url="${u}"></managed-fix-link></div>`:M}</div></div>`}function uT(e){let t=[`finding`,...fT(e)];return jg(e).length>1&&t.push(`multi-case`),t}function dT(e,t={}){let{context:n=null}=t,r=Bg(e),i=jg(e),a=new Set(i.map(T)),o=Fg(e),s=T(o),c=o.commitHash?A`<div class="commit-ref">introduced in ${Fw(o.repo?.github,o.commitHash)}</div>`:M,l=F.currentWorkspace&&c!==M;return A`${i.map((e,t)=>lT(e,T(e)===s,t,i.length,n,a))} ${l?A`<div class="marks-commit-row">${c}</div>`:M}<div class="marks"><div class="marks-left">${l?M:c} ${i.length>1?iT(i,s,r):M}</div>${eT(e,i,r,o,n)}</div>`}function fT(e){let t=Bg(e),n=e.some(e=>e.critical||O(e,F.severityMode)===`critical`),r=[];return n&&r.push(`is-critical`),t.hasConflict?r.push(`has-conflict`):t.commonColor&&r.push(`mark-${t.commonColor}`),F.shownTriage&&r.push(`triage-${F.shownTriage}`),r}function pT(e){let t=Bg(e),n=jg(e),r=Fg(e),i=T(r),a=r,o=Bi(a),s=In(a),c=zi(a),l=c?`, ${c}`:``,u=zn(a,Lg(a));return A`<div class="row-score">${_w(a,{variant:`compact`})} ${a.confidence===void 0?M:A`<span class="row-conf"><strong>${a.confidence}</strong>/10</span>`}</div><div class="row-body"><div class="title-row"><span class="title">${o}</span> ${s?A`<span class="row-type">${s}</span>`:M}</div><div class="meta-row"><span class="row-loc">${Pw(a,u)}${l}</span> ${Vw(u)}<div class="marks">${eT(e,n,t,r,`table`)}</div></div>${n.length>1?A`<div class="tabs-row">${iT(n,i,t)}</div>`:M}</div>`}function mT(e){if(!e)return M;let t=$f(e)[0];return t?A`<button type="button" class="tree-code-btn" data-finding-code-bundle="${t.integrity}" data-finding-code-file="${t.file}" data-tooltip="${`Open ${t.file} in bundle source viewer`}">Code</button>`:M}function hT(e,t){let{allFiles:n,lowerFiles:r,importedBy:i}=_T(e),a=F.filesSearch.trim().toLowerCase(),o=a?n.filter((e,t)=>r[t].includes(a)):n,s=t=>e[t]?A`<a href="${`#${ur(t)}`}"><span class="name">${t}</span></a>`:A`<span class="name">${t}</span>`,c=e=>{let n=t.get(e);if(!n)return null;let r=Ai.filter(e=>(n[e]??0)>0);return r.length===0?null:A`<span class="tree-count-chips">${r.map(e=>A`<span class="${`tree-count-chip ${e}`}">${n[e]} ${e.replaceAll(`_`,` `)}</span>`)}</span>`},l=e=>{let n=t.get(e);return n?Ai.reduce((e,t)=>e+(n[t]??0),0):0},u=A`<div class="tree-toolbar"><view-mode-buttons modes="table,list" kind="files"></view-mode-buttons><div class="search-row"><toolbar-search kind="files"></toolbar-search><span class="result-count">${o.length} of ${n.length}</span></div></div>`;if(F.filesViewMode===`table`){let t=F.filesSelectedFile&&Object.hasOwn(e,F.filesSelectedFile)&&(!a||F.filesSelectedFile.toLowerCase().includes(a))?F.filesSelectedFile:null;return A`<div class="${t?`tree-view tree-view-table with-details`:`tree-view tree-view-table`}">${u}<div class="${t?`tree-table-layout open`:`tree-table-layout`}"><div class="tree-table-list">${o.length===0?A`<div class="tree-table-empty">No files match the search.</div>`:M} ${o.map(n=>{let r=l(n),i=n===t,a=Nn(e[n].size);return A`<div class="${`tree-table-row${i?` selected`:``}${r===0?` clean`:``}`}" data-tree-select="${n}"><span class="tree-table-name" data-tooltip-truncated data-tooltip="${n}">${n}</span> ${c(n)??A`<span class="tree-table-clean-marker">—</span>`} ${a?A`<span class="tree-table-size">${a}</span>`:M}</div>`})}</div>${t?A`<aside class="tree-table-details" id="tree-table-details"><header class="tree-table-details-bar"><span class="tree-table-details-label">Details</span> <button type="button" class="tree-table-details-close" data-tree-deselect aria-label="Close details">×</button></header><div class="tree-table-details-body">${yT(e[t],t,i.get(t)??[],s)}</div></aside>`:M}</div></div>`}return A`<div class="tree-view">${u} ${o.length===0?A`<div class="tree-table-empty">No files match the search.</div>`:M} ${o.map(t=>{let n=e[t],r=i.get(t)??[],a=Nn(n.size);return A`<section class="tree-file" id="${ur(t)}"><div class="tree-file-header"><span class="name">${t}</span> ${c(t)} ${a?A`<span class="tree-file-size">${a}</span>`:M} ${mT(n.fileHash)}</div>${vT(n,r,s)}</section>`})}</div>`}var gT={treeData:null,allFiles:[],lowerFiles:[],importedBy:new Map};function _T(e){if(gT.treeData===e)return gT;let t=Object.keys(e).toSorted(),n=new Map;for(let r of t)for(let t of e[r].imports??[]){let e=n.get(t)??[];e.push(r),n.set(t,e)}return gT={treeData:e,allFiles:t,lowerFiles:t.map(e=>e.toLowerCase()),importedBy:n},gT}function vT(e,t,n){return A`${e.fileHash||e.treeHash?A`<div class="tree-hashes hashes">${e.fileHash?A`<div class="tree-hash">file: ${e.fileHash}</div>`:M} ${e.treeHash?A`<div class="tree-hash">tree: ${e.treeHash}</div>`:M}</div>`:M} ${e.imports?.length>0?A`<div class="tree-section"><span class="tree-section-label">imports</span><ul>${e.imports.map(e=>A`<li>${n(e)}</li>`)}</ul></div>`:M} ${t.length>0?A`<div class="tree-section"><span class="tree-section-label">imported by</span><ul>${t.map(e=>A`<li>${n(e)}</li>`)}</ul></div>`:M} ${e.exports?.length>0?A`<div class="tree-section"><span class="tree-section-label">exports</span><ul>${e.exports.map(e=>A`<li><span class="name">${e}</span></li>`)}</ul></div>`:M}`}function yT(e,t,n,r){let i=Nn(e.size);return A`<div class="tree-detail-name"><span class="name">${t}</span> ${i?A`<span class="tree-detail-size">${i}</span>`:M} ${mT(e.fileHash)}</div>${vT(e,n,r)}`}var bT=null,xT=null;function ST(){return xT}function CT(){return bT||(bT=(async()=>{try{let e=await import(`./graph.js`);return xT=e,e}catch(e){throw bT=null,e}})(),bT)}async function wT(e,t,n,r,i){try{let a=await CT(),o=a.buildGraphFromPrep(t);N(A`<graph-layout .graph="${o}" .options="${n}"></graph-layout>`,e);let s=e.querySelector(`graph-layout`);return await s.updateComplete,r(),i(),a.attachGraph2Interaction(e,o,r,i),s}catch(t){return e.textContent=`Graph failed to load: ${t instanceof Error?t.message:String(t)}`,null}}var TT=null,ET=null;function DT(){ET=null}async function OT(){let e=await ET?.promise.catch(()=>null);e?.isConnected&&e.focusInput()}function kT(){return TT||(TT=(async()=>{try{return await import(`./terminal.js`)}catch(e){throw TT=null,e}})(),TT)}function AT(e){let t=new Map([...Bt(e)].filter(([,e])=>e?.format!==`digest`));if(t.size===0)return t;let n=[...t.keys()],{stripped:r}=Pn(n),i=new Map;for(let e=0;e<n.length;e++)i.set(r[e],t.get(n[e]));return i}async function jT(e,t){let n=t?.integrity??``;(!ET||ET.integrity!==n||(t?.managedId||ET.managedId)&&ET.details!==t)&&(ET={integrity:n,managedId:t?.managedId,details:t?.managedId?t:null,promise:MT(t,n)});try{let t=await ET.promise;return!e.isConnected||e.contains(t)||e.replaceChildren(t),t}catch(t){return ET=null,e.textContent=`Terminal failed to load: ${t instanceof Error?t.message:String(t)}`,null}}async function MT(e,t){return(await kT()).createTerminalElement(AT(e),t)}var NT=(e,t,n)=>{for(let n of t)if(n[0]===e)return(0,n[1])();return n?.()},PT={},FT=ca(class extends la{constructor(){super(...arguments),this.ot=PT}render(e,t){return t()}update(e,[t,n]){if(Array.isArray(t)){if(Array.isArray(this.ot)&&this.ot.length===t.length&&t.every((e,t)=>e===this.ot[t]))return fa}else if(this.ot===t)return fa;return this.ot=Array.isArray(t)?Array.from(t):t,this.render(t,n)}}),IT=(e,t)=>{let n=e._$AN;if(n===void 0)return!1;for(let e of n)e._$AO?.(t,!1),IT(e,t);return!0},LT=e=>{let t,n;do{if((t=e._$AM)===void 0)break;n=t._$AN,n.delete(e),e=t}while(n?.size===0)},RT=e=>{for(let t;t=e._$AM;e=t){let n=t._$AN;if(n===void 0)t._$AN=n=new Set;else if(n.has(e))break;n.add(e),VT(t)}};function zT(e){this._$AN===void 0?this._$AM=e:(LT(this),this._$AM=e,RT(this))}function BT(e,t=!1,n=0){let r=this._$AH,i=this._$AN;if(i!==void 0&&i.size!==0){if(t){if(Array.isArray(r))for(let e=n;e<r.length;e++)IT(r[e],!1),LT(r[e]);else r!=null&&(IT(r,!1),LT(r))}else IT(this,e)}}var VT=e=>{e.type==sa.CHILD&&(e._$AP??=BT,e._$AQ??=zT)},HT=class extends la{constructor(){super(...arguments),this._$AN=void 0}_$AT(e,t,n){super._$AT(e,t,n),RT(this),this.isConnected=e._$AU}_$AO(e,t=!0){e!==this.isConnected&&(this.isConnected=e,e?this.reconnected?.():this.disconnected?.()),t&&(IT(this,e),LT(this))}setValue(e){if(Zr(this._$Ct))this._$Ct._$AI(e,this);else{let t=[...this._$Ct._$AH];t[this._$Ci]=e,this._$Ct._$AI(t,this,0)}}disconnected(){}reconnected(){}},UT=new WeakMap,WT=ca(class extends HT{render(e){return M}update(e,[t]){let n=t!==this.G;return n&&this.rt(void 0),(n||this.lt!==this.ct)&&(this.G=t,this.ht=e.options?.host,this.rt(this.ct=e.element)),M}rt(e){if(this.G!==void 0){if(this.isConnected||(e=void 0),typeof this.G==`function`){let t=this.ht??globalThis,n=UT.get(t);n===void 0&&(n=new WeakMap,UT.set(t,n)),n.get(this.G)!==void 0&&this.G.call(this.ht,void 0),n.set(this.G,e),e!==void 0&&this.G.call(this.ht,e)}else this.G.value=e}}get lt(){return typeof this.G==`function`?UT.get(this.ht??globalThis)?.get(this.G):this.G?.value}disconnected(){this.lt===this.ct&&this.rt(void 0)}reconnected(){this.rt(this.ct)}}),GT=2**20,KT=Math.floor(2**25/15);function qT(e){let t=[];for(let n=0;n<e.length;){let r=Math.min(n+GT,e.length);r<e.length&&e.codePointAt(r-1)>65535&&r--,t.push(e.slice(n,r)),n=r}return t}function JT(e,t=!1){return e.length<=GT&&!fC(e)?e:mC(e,t).flatMap(e=>typeof e==`string`?qT(e):[e])}var YT=class extends r{};function q(e,t,n){if(!e)throw new YT(typeof n==`function`?n():n,t.line)}var XT=/^(\d{4})-(\d\d)-(\d\d)([Tt])(\d\d):(\d\d):(\d\d)(\.\d+)?(?:([Zz])|([+-])(\d\d):(\d\d))$/u,ZT=/^(?:\d{4}-\d\d-\d\d(?:[Tt]\d\d:\d\d:\d\d(?:\.\d+)?)?|\d\d:\d\d:\d\d(?:\.\d+)?)$/u,QT=/^(?:\d{4}-\d\d-\d\d[Tt])?\d\d:\d\d(?:[Zz]|[+-]\d\d:\d\d)?$/u,$T=[31,28,31,30,31,30,31,31,30,31,30,31];function eE(e){let t=XT.exec(e);if(t===null)return;let[n,r,i,a,o,s]=[Number(t[1]),Number(t[2]),Number(t[3]),Number(t[5]),Number(t[6]),Number(t[7])],c=n%4==0&&n%100!=0||n%400==0;if(r<1||r>12||i<1||i>(r===2&&c?29:$T[r-1])||a>23||o>59||s>60||t[10]!==void 0&&(Number(t[11])>23||Number(t[12])>59))return;let l=[];(t[4]===`t`||t[9]===`z`)&&l.push(`a date-time with a lower-case "t" or "z" is not supported`),n===0&&l.push(`the year 0000 is not supported`),s===60&&l.push(`a leap second is not supported`);let u=t[10]===void 0?0:(t[10]===`-`?-1:1)*(Number(t[11])*60+Number(t[12]));return{year:n,month:r,day:i,hour:a,minute:o,second:s,fraction:t[8]?.slice(1)??``,offset:u,unsupported:l}}var tE=class{constructor(e){if(typeof e!=`string`||eE(e)?.unsupported.length!==0)throw TypeError(`expected an RFC 3339 offset date-time`);this.text=e,Object.freeze(this)}toString(){return this.text}toJSON(){return this.text}toDate(){let{year:e,month:t,day:n,hour:r,minute:i,second:a,fraction:o,offset:s}=eE(this.text),c=new Date(0);return c.setUTCFullYear(e,t-1,n),c.setUTCHours(r,i-s,a,Number(o.padEnd(3,`0`).slice(0,3))),c}};function nE(e,t){if(!/^(?:\d{4}-\d\d-\d\d|\d\d:\d\d)/u.test(e))return;let r=eE(e);if(r?.unsupported.length===0)return new tE(e);throw q(!(/^\d{4}-\d\d-\d\d$/u.test(e)&&/^ \d\d:/u.test(t.text.slice(t.pos,t.pos+4))),t,`a date-time with a space in place of "T" is not supported`),q(!ZT.test(e),t,()=>`local dates and times are not supported: ${n(e)}`),q(!QT.test(e),t,()=>`a date-time or a time without seconds is not supported: ${n(e)}`),q(r?.unsupported.length!==1,t,()=>`${r.unsupported[0]}: ${n(e)}`),new YT(`${n(e)} is not a date-time of the form YYYY-MM-DDTHH:MM:SS[.fraction](Z|\xB1HH:MM)`,t.line)}var rE=/^[+-]?(?:0|[1-9](?:_?\d)*)$/u,iE=/^0(?:x[\dA-Fa-f](?:_?[\dA-Fa-f])*|o[0-7](?:_?[0-7])*|b[01](?:_?[01])*)$/u,aE=/^[+-]?(?:inf|nan|(?:0|[1-9](?:_?\d)*)(?:\.\d(?:_?\d)*(?:[Ee][+-]?\d(?:_?\d)*)?|[Ee][+-]?\d(?:_?\d)*))$/u,oE=2n**63n,sE=BigInt(2**53-1),cE={__proto__:null,x:16,o:21,b:63};function lE(e,t){let r=rE.test(e);if(!r&&!iE.test(e))return;let i=e.replaceAll(`_`,``),a=r?i.replace(/^[+-]/u,``):i.slice(2).replace(/^0+/u,``),o=a.length<=(r?19:cE[i[1]])?BigInt(r?i:`${i.slice(0,2)}${a||`0`}`):void 0;return q(o!==void 0&&o>=-oE&&o<oE,t,()=>`integer out of range ${n(e)}`),o>=-sE&&o<=sE?Number(o):o}var uE={__proto__:null,inf:1/0,"+inf":1/0,"-inf":-1/0,nan:NaN,"+nan":NaN,"-nan":NaN};function dE(e){if(typeof e!=`string`||!aE.test(e))return;if(e in uE)return uE[e];let t=Number(e.replaceAll(`_`,``)),n=!/[1-9]/u.test(e.split(/[Ee]/u)[0]);return Number.isFinite(t)&&(t!==0||n)?t:null}var fE=class{constructor(e){let t=dE(e);if(t==null)throw TypeError(`expected a TOML float that a double can hold`);this.text=e,this.value=t,Object.freeze(this)}valueOf(){return this.value}toString(){return this.text}toJSON(){return this.value}};function pE(e,t){let r=dE(e);if(r!==void 0)return q(r!==null,t,()=>`float out of range ${n(e)}`),new fE(e)}var mE=64;function hE(e){for(;e.text[e.pos]===` `||e.text[e.pos]===` `;)e.pos++}function gE(e){if(e.pos>=e.text.length)return`the end of the text`;let t=/^[^\n]*/u.exec(e.text.slice(e.pos,e.pos+64+1))[0].replace(/\r$/u,``);return t===``?`the end of the line`:n(t)}var _E=`a carriage return must be followed by a line feed`;function vE(e,n,r){throw new YT(n===`\r`?_E:`${t(n)} is not allowed in ${r}`,e.line)}var yE=e=>e.pos>=e.text.length||e.text[e.pos]===`
156
+ `)}function tT(e){if(!F.currentWorkspace)return M;let t=e._reportName;if(!t||I()&&!e._managedReportId)return M;let n=st[Xx(t)]??st.default,r=A`${k(n)}<span class="report-chip-label report-button-label">${x(t)}</span>`;if(I()){let t=UC(e,{reportId:e._managedReportId});if(t)return A`<a class="report-chip report-button comment-self-ref" href="${Ye(t)}">${r}</a>`}return A`<button type="button" class="report-chip report-button" data-links-report="${t}" data-links-finding="${T(e)}" data-managed-report="${I()?e._managedReportId:M}">${r}</button>`}function nT(e,t,n,r,i=null){let a=i===`table`?M:tT(r),o=U(r),s=!Tg(r),c=!Dg(r),l=o?.color??null,u=o?.comment??``,d=o?.fix??``,f=I()?`View comments`:u?`Edit comment: ${u}`:`Add comment`,p=d?`Edit fix link: ${d}`:`Add fix link (PR URL, etc.)`,m=i===`focus`&&a===M,h=I()?`Comments`:u?`Edit comment`:`Comment`,g=d?`Edit fix link`:`Fix link`,_=A`<button type="button" ?disabled="${s}" class="${C({"mark-comment":!0,"has-comment":u})}" data-tooltip="${u&&!I()?f:M}" aria-label="${f}">${Rw}${m?A`<span class="mark-btn-label">${h}</span>`:M}</button>`,v=A`<button type="button" ?disabled="${c}" class="${C({"mark-fix":!0,"has-fix":d})}" data-tooltip="${d?p:M}" aria-label="${p}">${zw}${m?A`<span class="mark-btn-label">${g}</span>`:M}</button>`,y=Qw(r,m),b=A`<button type="button" class="mark-copy" aria-label="Copy finding details to clipboard">${uw}${m?A`<span class="mark-btn-label">Copy</span>`:M}</button>`,ee=UC(r)?A`<button type="button" class="mark-link" aria-label="Copy a link to this finding">${Bw}${m?A`<span class="mark-btn-label">Link</span>`:M}</button>`:M,te=I()?gi({repo:{github:r.repo?.github||r._repoFallback}}):zg(r),ne=Dn(te,{title:$w(r),body:eT(r),labels:jS(r.isSecurity===!0,F.githubNewIssueLabels)}),re=I()&&F.managedSession&&!F.managedSession.publicShare&&F.currentManagedTeam,ie=A`${Xw}${m?A`<span class="mark-btn-label">Issue</span>`:M}`,ae=Qh(r)?M:ne?re?A`<button type="button" class="mark-issue" data-issue-form="${ne}" data-tooltip="${m?M:`Create a GitHub issue for this finding`}" aria-label="Create a GitHub issue for this finding">${ie}</button>`:A`<a class="mark-issue" href="${ne}" target="_blank" rel="noopener" data-tooltip="${m?M:`Create a GitHub issue for this finding`}" aria-label="Create a GitHub issue for this finding">${ie}</a>`:M,oe=A`<button type="button" class="mark-claude" data-tooltip="${m?M:`Open in Claude Code (claude://) with a confirm-and-fix prompt`}" aria-label="Open finding in Claude Code">${Yw}${m?A`<span class="mark-btn-label">Claude</span>`:M}</button>`,se=A`<color-marker .selected="${l}" .disabled="${c}"></color-marker>`,ce=Bg(e)!==e,le=e.linkedTabs?`change triage state for linked findings`:ce?`change triage state for App and own-source findings`:n.hasConflict?`change triage state (colors mismatch — acts per-tab)`:t.length>1?`change triage state for the whole group`:`change triage state`;return A`<div class="finding-actions">${a}<div class="finding-action-controls"><span class="mark-action-group">${_}${v}${y}</span><span class="mark-action-group">${b}${ee}${ae}${oe}</span>${se}${iT(e,le,i,n,r)}</div></div>`}function rT(e){if(e.newState!==`open`)return;let t=e.currentTarget,n=t.getRootNode().querySelector?.(`[popovertarget="${t.id}"]`);if(!n)return;let r=n.getBoundingClientRect(),i=t.offsetWidth||110,a=t.offsetHeight||100,o=r.right-i;o<4&&(o=4),o+i>window.innerWidth-4&&(o=window.innerWidth-i-4);let s=r.bottom+4;s+a>window.innerHeight-4&&r.top>a+4&&(s=r.top-a-4),t.style.top=`${s}px`,t.style.left=`${o}px`}function iT(e,t,n,r,i){let a=H(e),o=!Dg(i)||Gg(e,r).length===0,s=o?null:Kg(e,r,i),c={inprogress:`In progress`,fixed:`Fixed`,invalid:`Invalid`,deleted:`Deleted`,ignored:`Ignored`},l={inprogress:`In progress`,fixed:`Fixed`,invalid:`Invalid`,deleted:`Delete`,ignored:`Ignore`},u=!!F.shownTriage,d=u?c[F.shownTriage]:null,f=[`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`],p=u&&n!==`focus`?[{key:`restore`,label:`Restore`},...f.filter(e=>e!==F.shownTriage).map(e=>({key:e,label:l[e]}))]:f.map(e=>({key:e,label:l[e]})),m=[`mark-triage-menu`];u&&m.push(`with-label`,`triage-state-${F.shownTriage}`);let h=`triage-menu-${a.replaceAll(/[^A-Za-z0-9_-]/gu,`_`)}`;return A`<div class="triage-menu-wrap"><button type="button" class="${m.join(` `)}" popovertarget="${h}" popovertargetaction="toggle" aria-label="${t}" ?disabled="${o}">${d?A`<span class="mark-triage-label">${d}</span>`:M} <svg viewBox="0 0 12 12" width="11" height="11" aria-hidden="true"><path d="M2 4l4 4 4-4" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></button><div popover="auto" id="${h}" class="triage-menu" data-gid="${a}" role="menu" @beforetoggle="${rT}">${p.map(e=>A`<button type="button" class="${C({"triage-menu-item":!0,[`triage-menu-${e.key}`]:!0,active:s===e.key})}" data-triage-action="${e.key}" ?disabled="${o}" role="menuitem">${e.label}</button>`)}</div></div>`}function aT(e,t){let n=!!e?.comment,r=!!(e?.fix||$h(t)),i=e?.flagged===!0;return!n&&!r&&!i?M:A`<span class="tab-marks">${n?A`<span class="has-comment" role="img" aria-label="Has a comment">${Rw}</span>`:M}${r?A`<span class="has-fix" role="img" aria-label="Has a fix link">${zw}</span>`:M}${i?A`<span class="flagged" role="img" aria-label="Flagged">${Zw}</span>`:M}</span>`}function oT(e,t,n){let{app:r,source:i}=Pg(e),a=e=>sT(e,T(e)===t,n);return A`<div class="tabs">${r.map(a)} ${r.length>0&&i.length>0?A`<span class="tab-level-separator" aria-hidden="true">•</span>`:M} ${i.map(a)}</div>`}function sT(e,t,n){let r=T(e),i=U(e),a=i?.color,o=kg(e,i),s=[`tab`,`tab-severity-${O(e,F.severityMode)}`];t&&s.push(`active`),a&&s.push(`tab-mark-${a}`),o===`ignored`&&!n.allIgnored?s.push(`tab-ignored`):o&&o!==`ignored`&&n.commonTriage===null&&s.push(`tab-${o}`);let c=Yx(e),l=c?st[c]:null,u=!l&&e.confidence!=null;l?s.push(`tab-with-analyzer`):u&&s.push(`tab-with-confidence`);let d=l?A`<span class="tab-analyzer" role="img" aria-label="${Jx[c]}">${k(l)}</span>`:u?A`<span class="tab-conf" aria-label="${`Confidence ${e.confidence} out of 10`}">${e.confidence}<span class="tab-conf-max">/10</span></span>`:M;return A`<button type="button" class="${s.join(` `)}" data-tid="${r}" aria-pressed="${t}" aria-description="${a?`${a} color label`:M}"><span class="tab-label"><span class="tab-severity">${yw(e,{variant:`tab`})}</span><span class="tab-indicators">${aT(i,e)}</span></span>${d}</button>`}function cT(e){if(F.viewMode===`table`||F.viewMode===`focus`){let t=e.confidence*10;return A`<div class="${`conf-ring ${O(e,F.severityMode)}`}"><svg viewBox="0 0 36 36" aria-hidden="true"><circle class="conf-ring-track" cx="18" cy="18" r="15.9155"/><circle class="conf-ring-arc" cx="18" cy="18" r="15.9155" style="${E({"stroke-dasharray":`${t} 100`})}"/></svg> <span>${e.confidence}<small>/10</small></span></div><div class="value-label">Confidence</div>`}return A`<div class="conf-score"><strong>${e.confidence}</strong>/10</div><div class="value-label">Confidence</div>`}var lT=/^(?:@[a-z0-9][a-z0-9._-]*\/)?[a-z0-9][a-z0-9._-]*$/iu;function uT(e){if(nf(e))return M;let t=e?.name;if(typeof t!=`string`||!lT.test(t))return M;let n=e?.version,r=typeof n==`string`&&n.length>0,i=r?`https://www.npmjs.com/package/${t}/v/${encodeURIComponent(n)}`:`https://www.npmjs.com/package/${t}`,a=r?`${t}@${n}`:t;return A`<span class="line-num"><a class="npm-link" href="${i}" target="_blank" rel="noopener noreferrer">npm: ${a}</a></span>`}function dT(e,t,n,r,i,a){let o=T(e),s=U(e),c=s?.comment??``,l=s?.fix??``,u=$h(e),d=Qh(e),f=zn(e,Rg(e)),p=Iw(e,f),m=zi(e),h=NC(e),g=Jw(e,`loc`,h,e.file,e.line),_=Uw(f),v=A`<span class="line-num">${m?A`${p}, ${m}`:p}${g?.mark??M}${_}</span>`,y=In(e),b=String(e.discoveredIn??``).trim(),ee=b===String(e.file??``).trim()?``:b,te=i===`focus`?uT(e.package?.npm):M,ne=M;if(i!==`focus`&&I()&&g)ne=A`<button type="button" class="finding-code-btn" data-finding-code-report="${h.reportId}" data-finding-code-file="${e.file}" data-finding-code-line="${e.line??``}" aria-label="${`Open full source for ${e.file}`}">Code</button>`;else if(i!==`focus`&&!I()&&e.fileHash&&Array.isArray(e._bundleHashes)&&e._bundleHashes.length>0){F.bundleHashTick;let t=new Set(e._bundleHashes),n=$f(e.fileHash).find(({integrity:e})=>t.has(e));n&&(ne=A`<button type="button" class="finding-code-btn" data-finding-code-bundle="${n.integrity}" data-finding-code-file="${n.file}" data-finding-code-line="${e.line??``}" data-tooltip="${`Open ${n.file} in bundle source viewer`}">Code</button>`)}let{title:re,body:ie}=Vi(e),ae=Ui(ie),oe=ae.findIndex(e=>e.label!==null),se=oe===-1?ae:ae.slice(0,oe),ce=oe===-1?[]:ae.slice(oe);return A`<div class="${C({"tab-body":!0,active:t})}" data-tid="${o}">${r>1?A`<div class="print-case-label">${n+1} of ${r}</div>`:M}<div class="finding-left">${s?.color||s?.flagged===!0?A`<div class="${s?.color?`finding-top-marks color-${s.color}`:`finding-top-marks`}">${s?.color?A`<span class="finding-color-mark" role="img" aria-label="${`Color label: ${s.color}`}"></span>`:M} ${s?.flagged===!0?A`<span class="finding-bookmark-mark" role="img" aria-label="Bookmarked"></span>`:M}</div>`:M} ${yw(e,{variant:`full`})}<div class="value-label">Severity</div>${e.confidence===void 0?M:cT(e)} ${jw(e)} ${ne}</div><div class="finding-body"><div class="line-row">${v} ${g?.tip??M} ${te} ${ee?A`<span class="line-num discovered-in">(found analyzing ${ee})</span>`:M} ${y?A`<span class="run-meta">${y}</span>`:M}</div>${g?.body??M} ${re?A`<div class="desc-title">${xw(re)}</div>`:M} ${se.map(e=>A`<div class="desc">${Dw(Vn(e.body))}</div>`)} ${Fw(e,i)} ${ce.map(e=>e.label===null?A`<div class="desc">${Dw(Vn(e.body))}</div>`:Nw(e.label,e.body))} ${e.impact?Nw(`Impact`,Ri(e.impact,e)):M} ${e.reproduction?Nw(`Reproduction`,Ri(e.reproduction,e),`section`,{collapsible:!0}):M} ${e.recommendation?Nw(`Recommendation`,Ri(e.recommendation,e),`recommendation`,{collapsible:!0}):M} ${e.confidenceReason?A`<div class="conf-reason">${Dw(Ri(e.confidenceReason,e))}</div>`:M} ${Mw(e)} ${e.revalidateRecommendation&&Dr()?Nw(`Revalidation recommendation`,Ri(e.revalidateRecommendation,e),`recommendation`,{collapsible:!0}):M} ${Mi(e)&&e.correctedSeverityReason?A`<div class="severity-reason"><span class="severity-reason-label">Severity correction:</span> ${Dw(e.correctedSeverityReason)}</div>`:M} ${Aw(e,a)} ${I()?QC(e).map(e=>A`<div class="comment-block">${cw(e,lw(e.body))}</div>`):c?A`<div class="comment-block"><span class="comment-label">Comment:</span> ${lw(c)}</div>`:M} ${d?A`<div class="fix-block"><span class="fix-label">Issue:</span><managed-fix-link .url="${d.url}"></managed-fix-link></div>`:M} ${l?A`<div class="fix-block"><span class="fix-label">Fix:</span> ${mi(l)?A`<managed-fix-link .url="${l}"></managed-fix-link>`:l}</div>`:M} ${u&&u!==l?A`<div class="fix-block"><span class="fix-label">Fix from issue:</span><managed-fix-link .url="${u}"></managed-fix-link></div>`:M}</div></div>`}function fT(e){let t=[`finding`,...mT(e)];return Mg(e).length>1&&t.push(`multi-case`),t}function pT(e,t={}){let{context:n=null}=t,r=Vg(e),i=Mg(e),a=new Set(i.map(T)),o=Ig(e),s=T(o),c=o.commitHash?A`<div class="commit-ref">introduced in ${Lw(o.repo?.github,o.commitHash)}</div>`:M,l=F.currentWorkspace&&c!==M;return A`${i.map((e,t)=>dT(e,T(e)===s,t,i.length,n,a))} ${l?A`<div class="marks-commit-row">${c}</div>`:M}<div class="marks"><div class="marks-left">${l?M:c} ${i.length>1?oT(i,s,r):M}</div>${nT(e,i,r,o,n)}</div>`}function mT(e){let t=Vg(e),n=e.some(e=>e.critical||O(e,F.severityMode)===`critical`),r=[];return n&&r.push(`is-critical`),t.hasConflict?r.push(`has-conflict`):t.commonColor&&r.push(`mark-${t.commonColor}`),F.shownTriage&&r.push(`triage-${F.shownTriage}`),r}function hT(e){let t=Vg(e),n=Mg(e),r=Ig(e),i=T(r),a=r,o=Bi(a),s=In(a),c=zi(a),l=c?`, ${c}`:``,u=zn(a,Rg(a));return A`<div class="row-score">${yw(a,{variant:`compact`})} ${a.confidence===void 0?M:A`<span class="row-conf"><strong>${a.confidence}</strong>/10</span>`}</div><div class="row-body"><div class="title-row"><span class="title">${o}</span> ${s?A`<span class="row-type">${s}</span>`:M}</div><div class="meta-row"><span class="row-loc">${Iw(a,u)}${l}</span> ${Uw(u)}<div class="marks">${nT(e,n,t,r,`table`)}</div></div>${n.length>1?A`<div class="tabs-row">${oT(n,i,t)}</div>`:M}</div>`}function gT(e){if(!e)return M;let t=$f(e)[0];return t?A`<button type="button" class="tree-code-btn" data-finding-code-bundle="${t.integrity}" data-finding-code-file="${t.file}" data-tooltip="${`Open ${t.file} in bundle source viewer`}">Code</button>`:M}function _T(e,t){let{allFiles:n,lowerFiles:r,importedBy:i}=yT(e),a=F.filesSearch.trim().toLowerCase(),o=a?n.filter((e,t)=>r[t].includes(a)):n,s=t=>e[t]?A`<a href="${`#${ur(t)}`}"><span class="name">${t}</span></a>`:A`<span class="name">${t}</span>`,c=e=>{let n=t.get(e);if(!n)return null;let r=Ai.filter(e=>(n[e]??0)>0);return r.length===0?null:A`<span class="tree-count-chips">${r.map(e=>A`<span class="${`tree-count-chip ${e}`}">${n[e]} ${e.replaceAll(`_`,` `)}</span>`)}</span>`},l=e=>{let n=t.get(e);return n?Ai.reduce((e,t)=>e+(n[t]??0),0):0},u=A`<div class="tree-toolbar"><view-mode-buttons modes="table,list" kind="files"></view-mode-buttons><div class="search-row"><toolbar-search kind="files"></toolbar-search><span class="result-count">${o.length} of ${n.length}</span></div></div>`;if(F.filesViewMode===`table`){let t=F.filesSelectedFile&&Object.hasOwn(e,F.filesSelectedFile)&&(!a||F.filesSelectedFile.toLowerCase().includes(a))?F.filesSelectedFile:null;return A`<div class="${t?`tree-view tree-view-table with-details`:`tree-view tree-view-table`}">${u}<div class="${t?`tree-table-layout open`:`tree-table-layout`}"><div class="tree-table-list">${o.length===0?A`<div class="tree-table-empty">No files match the search.</div>`:M} ${o.map(n=>{let r=l(n),i=n===t,a=Nn(e[n].size);return A`<div class="${`tree-table-row${i?` selected`:``}${r===0?` clean`:``}`}" data-tree-select="${n}"><span class="tree-table-name" data-tooltip-truncated data-tooltip="${n}">${n}</span> ${c(n)??A`<span class="tree-table-clean-marker">—</span>`} ${a?A`<span class="tree-table-size">${a}</span>`:M}</div>`})}</div>${t?A`<aside class="tree-table-details" id="tree-table-details"><header class="tree-table-details-bar"><span class="tree-table-details-label">Details</span> <button type="button" class="tree-table-details-close" data-tree-deselect aria-label="Close details">×</button></header><div class="tree-table-details-body">${xT(e[t],t,i.get(t)??[],s)}</div></aside>`:M}</div></div>`}return A`<div class="tree-view">${u} ${o.length===0?A`<div class="tree-table-empty">No files match the search.</div>`:M} ${o.map(t=>{let n=e[t],r=i.get(t)??[],a=Nn(n.size);return A`<section class="tree-file" id="${ur(t)}"><div class="tree-file-header"><span class="name">${t}</span> ${c(t)} ${a?A`<span class="tree-file-size">${a}</span>`:M} ${gT(n.fileHash)}</div>${bT(n,r,s)}</section>`})}</div>`}var vT={treeData:null,allFiles:[],lowerFiles:[],importedBy:new Map};function yT(e){if(vT.treeData===e)return vT;let t=Object.keys(e).toSorted(),n=new Map;for(let r of t)for(let t of e[r].imports??[]){let e=n.get(t)??[];e.push(r),n.set(t,e)}return vT={treeData:e,allFiles:t,lowerFiles:t.map(e=>e.toLowerCase()),importedBy:n},vT}function bT(e,t,n){return A`${e.fileHash||e.treeHash?A`<div class="tree-hashes hashes">${e.fileHash?A`<div class="tree-hash">file: ${e.fileHash}</div>`:M} ${e.treeHash?A`<div class="tree-hash">tree: ${e.treeHash}</div>`:M}</div>`:M} ${e.imports?.length>0?A`<div class="tree-section"><span class="tree-section-label">imports</span><ul>${e.imports.map(e=>A`<li>${n(e)}</li>`)}</ul></div>`:M} ${t.length>0?A`<div class="tree-section"><span class="tree-section-label">imported by</span><ul>${t.map(e=>A`<li>${n(e)}</li>`)}</ul></div>`:M} ${e.exports?.length>0?A`<div class="tree-section"><span class="tree-section-label">exports</span><ul>${e.exports.map(e=>A`<li><span class="name">${e}</span></li>`)}</ul></div>`:M}`}function xT(e,t,n,r){let i=Nn(e.size);return A`<div class="tree-detail-name"><span class="name">${t}</span> ${i?A`<span class="tree-detail-size">${i}</span>`:M} ${gT(e.fileHash)}</div>${bT(e,n,r)}`}var ST=null,CT=null;function wT(){return CT}function TT(){return ST||(ST=(async()=>{try{let e=await import(`./graph.js`);return CT=e,e}catch(e){throw ST=null,e}})(),ST)}async function ET(e,t,n,r,i){try{let a=await TT(),o=a.buildGraphFromPrep(t);N(A`<graph-layout .graph="${o}" .options="${n}"></graph-layout>`,e);let s=e.querySelector(`graph-layout`);return await s.updateComplete,r(),i(),a.attachGraph2Interaction(e,o,r,i),s}catch(t){return e.textContent=`Graph failed to load: ${t instanceof Error?t.message:String(t)}`,null}}var DT=null,OT=null;function kT(){OT=null}async function AT(){let e=await OT?.promise.catch(()=>null);e?.isConnected&&e.focusInput()}function jT(){return DT||(DT=(async()=>{try{return await import(`./terminal.js`)}catch(e){throw DT=null,e}})(),DT)}function MT(e){let t=new Map([...Bt(e)].filter(([,e])=>e?.format!==`digest`));if(t.size===0)return t;let n=[...t.keys()],{stripped:r}=Pn(n),i=new Map;for(let e=0;e<n.length;e++)i.set(r[e],t.get(n[e]));return i}async function NT(e,t){let n=t?.integrity??``;(!OT||OT.integrity!==n||(t?.managedId||OT.managedId)&&OT.details!==t)&&(OT={integrity:n,managedId:t?.managedId,details:t?.managedId?t:null,promise:PT(t,n)});try{let t=await OT.promise;return!e.isConnected||e.contains(t)||e.replaceChildren(t),t}catch(t){return OT=null,e.textContent=`Terminal failed to load: ${t instanceof Error?t.message:String(t)}`,null}}async function PT(e,t){return(await jT()).createTerminalElement(MT(e),t)}var FT=(e,t,n)=>{for(let n of t)if(n[0]===e)return(0,n[1])();return n?.()},IT={},LT=ca(class extends la{constructor(){super(...arguments),this.ot=IT}render(e,t){return t()}update(e,[t,n]){if(Array.isArray(t)){if(Array.isArray(this.ot)&&this.ot.length===t.length&&t.every((e,t)=>e===this.ot[t]))return fa}else if(this.ot===t)return fa;return this.ot=Array.isArray(t)?Array.from(t):t,this.render(t,n)}}),RT=(e,t)=>{let n=e._$AN;if(n===void 0)return!1;for(let e of n)e._$AO?.(t,!1),RT(e,t);return!0},zT=e=>{let t,n;do{if((t=e._$AM)===void 0)break;n=t._$AN,n.delete(e),e=t}while(n?.size===0)},BT=e=>{for(let t;t=e._$AM;e=t){let n=t._$AN;if(n===void 0)t._$AN=n=new Set;else if(n.has(e))break;n.add(e),UT(t)}};function VT(e){this._$AN===void 0?this._$AM=e:(zT(this),this._$AM=e,BT(this))}function HT(e,t=!1,n=0){let r=this._$AH,i=this._$AN;if(i!==void 0&&i.size!==0){if(t){if(Array.isArray(r))for(let e=n;e<r.length;e++)RT(r[e],!1),zT(r[e]);else r!=null&&(RT(r,!1),zT(r))}else RT(this,e)}}var UT=e=>{e.type==sa.CHILD&&(e._$AP??=HT,e._$AQ??=VT)},WT=class extends la{constructor(){super(...arguments),this._$AN=void 0}_$AT(e,t,n){super._$AT(e,t,n),BT(this),this.isConnected=e._$AU}_$AO(e,t=!0){e!==this.isConnected&&(this.isConnected=e,e?this.reconnected?.():this.disconnected?.()),t&&(RT(this,e),zT(this))}setValue(e){if(Zr(this._$Ct))this._$Ct._$AI(e,this);else{let t=[...this._$Ct._$AH];t[this._$Ci]=e,this._$Ct._$AI(t,this,0)}}disconnected(){}reconnected(){}},GT=new WeakMap,KT=ca(class extends WT{render(e){return M}update(e,[t]){let n=t!==this.G;return n&&this.rt(void 0),(n||this.lt!==this.ct)&&(this.G=t,this.ht=e.options?.host,this.rt(this.ct=e.element)),M}rt(e){if(this.G!==void 0){if(this.isConnected||(e=void 0),typeof this.G==`function`){let t=this.ht??globalThis,n=GT.get(t);n===void 0&&(n=new WeakMap,GT.set(t,n)),n.get(this.G)!==void 0&&this.G.call(this.ht,void 0),n.set(this.G,e),e!==void 0&&this.G.call(this.ht,e)}else this.G.value=e}}get lt(){return typeof this.G==`function`?GT.get(this.ht??globalThis)?.get(this.G):this.G?.value}disconnected(){this.lt===this.ct&&this.rt(void 0)}reconnected(){this.rt(this.ct)}}),qT=2**20,JT=Math.floor(2**25/15);function YT(e){let t=[];for(let n=0;n<e.length;){let r=Math.min(n+qT,e.length);r<e.length&&e.codePointAt(r-1)>65535&&r--,t.push(e.slice(n,r)),n=r}return t}function XT(e,t=!1){return e.length<=qT&&!mC(e)?e:gC(e,t).flatMap(e=>typeof e==`string`?YT(e):[e])}var ZT=class extends r{};function q(e,t,n){if(!e)throw new ZT(typeof n==`function`?n():n,t.line)}var QT=/^(\d{4})-(\d\d)-(\d\d)([Tt])(\d\d):(\d\d):(\d\d)(\.\d+)?(?:([Zz])|([+-])(\d\d):(\d\d))$/u,$T=/^(?:\d{4}-\d\d-\d\d(?:[Tt]\d\d:\d\d:\d\d(?:\.\d+)?)?|\d\d:\d\d:\d\d(?:\.\d+)?)$/u,eE=/^(?:\d{4}-\d\d-\d\d[Tt])?\d\d:\d\d(?:[Zz]|[+-]\d\d:\d\d)?$/u,tE=[31,28,31,30,31,30,31,31,30,31,30,31];function nE(e){let t=QT.exec(e);if(t===null)return;let[n,r,i,a,o,s]=[Number(t[1]),Number(t[2]),Number(t[3]),Number(t[5]),Number(t[6]),Number(t[7])],c=n%4==0&&n%100!=0||n%400==0;if(r<1||r>12||i<1||i>(r===2&&c?29:tE[r-1])||a>23||o>59||s>60||t[10]!==void 0&&(Number(t[11])>23||Number(t[12])>59))return;let l=[];(t[4]===`t`||t[9]===`z`)&&l.push(`a date-time with a lower-case "t" or "z" is not supported`),n===0&&l.push(`the year 0000 is not supported`),s===60&&l.push(`a leap second is not supported`);let u=t[10]===void 0?0:(t[10]===`-`?-1:1)*(Number(t[11])*60+Number(t[12]));return{year:n,month:r,day:i,hour:a,minute:o,second:s,fraction:t[8]?.slice(1)??``,offset:u,unsupported:l}}var rE=class{constructor(e){if(typeof e!=`string`||nE(e)?.unsupported.length!==0)throw TypeError(`expected an RFC 3339 offset date-time`);this.text=e,Object.freeze(this)}toString(){return this.text}toJSON(){return this.text}toDate(){let{year:e,month:t,day:n,hour:r,minute:i,second:a,fraction:o,offset:s}=nE(this.text),c=new Date(0);return c.setUTCFullYear(e,t-1,n),c.setUTCHours(r,i-s,a,Number(o.padEnd(3,`0`).slice(0,3))),c}};function iE(e,t){if(!/^(?:\d{4}-\d\d-\d\d|\d\d:\d\d)/u.test(e))return;let r=nE(e);if(r?.unsupported.length===0)return new rE(e);throw q(!(/^\d{4}-\d\d-\d\d$/u.test(e)&&/^ \d\d:/u.test(t.text.slice(t.pos,t.pos+4))),t,`a date-time with a space in place of "T" is not supported`),q(!$T.test(e),t,()=>`local dates and times are not supported: ${n(e)}`),q(!eE.test(e),t,()=>`a date-time or a time without seconds is not supported: ${n(e)}`),q(r?.unsupported.length!==1,t,()=>`${r.unsupported[0]}: ${n(e)}`),new ZT(`${n(e)} is not a date-time of the form YYYY-MM-DDTHH:MM:SS[.fraction](Z|\xB1HH:MM)`,t.line)}var aE=/^[+-]?(?:0|[1-9](?:_?\d)*)$/u,oE=/^0(?:x[\dA-Fa-f](?:_?[\dA-Fa-f])*|o[0-7](?:_?[0-7])*|b[01](?:_?[01])*)$/u,sE=/^[+-]?(?:inf|nan|(?:0|[1-9](?:_?\d)*)(?:\.\d(?:_?\d)*(?:[Ee][+-]?\d(?:_?\d)*)?|[Ee][+-]?\d(?:_?\d)*))$/u,cE=2n**63n,lE=BigInt(2**53-1),uE={__proto__:null,x:16,o:21,b:63};function dE(e,t){let r=aE.test(e);if(!r&&!oE.test(e))return;let i=e.replaceAll(`_`,``),a=r?i.replace(/^[+-]/u,``):i.slice(2).replace(/^0+/u,``),o=a.length<=(r?19:uE[i[1]])?BigInt(r?i:`${i.slice(0,2)}${a||`0`}`):void 0;return q(o!==void 0&&o>=-cE&&o<cE,t,()=>`integer out of range ${n(e)}`),o>=-lE&&o<=lE?Number(o):o}var fE={__proto__:null,inf:1/0,"+inf":1/0,"-inf":-1/0,nan:NaN,"+nan":NaN,"-nan":NaN};function pE(e){if(typeof e!=`string`||!sE.test(e))return;if(e in fE)return fE[e];let t=Number(e.replaceAll(`_`,``)),n=!/[1-9]/u.test(e.split(/[Ee]/u)[0]);return Number.isFinite(t)&&(t!==0||n)?t:null}var mE=class{constructor(e){let t=pE(e);if(t==null)throw TypeError(`expected a TOML float that a double can hold`);this.text=e,this.value=t,Object.freeze(this)}valueOf(){return this.value}toString(){return this.text}toJSON(){return this.value}};function hE(e,t){let r=pE(e);if(r!==void 0)return q(r!==null,t,()=>`float out of range ${n(e)}`),new mE(e)}var gE=64;function _E(e){for(;e.text[e.pos]===` `||e.text[e.pos]===` `;)e.pos++}function vE(e){if(e.pos>=e.text.length)return`the end of the text`;let t=/^[^\n]*/u.exec(e.text.slice(e.pos,e.pos+64+1))[0].replace(/\r$/u,``);return t===``?`the end of the line`:n(t)}var yE=`a carriage return must be followed by a line feed`;function bE(e,n,r){throw new ZT(n===`\r`?yE:`${t(n)} is not allowed in ${r}`,e.line)}var xE=e=>e.pos>=e.text.length||e.text[e.pos]===`
157
157
  `||e.text.startsWith(`\r
158
- `,e.pos),bE=/#[^[\p{Cc}--[\t\u0080-\u009F]]]*/vy;function xE(e){e.text[e.pos]===`#`&&(i(e,bE),yE(e)||vE(e,e.text[e.pos],`a comment`))}function SE(e){if(e.text[e.pos]===`
158
+ `,e.pos),SE=/#[^[\p{Cc}--[\t\u0080-\u009F]]]*/vy;function CE(e){e.text[e.pos]===`#`&&(i(e,SE),xE(e)||bE(e,e.text[e.pos],`a comment`))}function wE(e){if(e.text[e.pos]===`
159
159
  `)e.pos+=1;else if(e.text.startsWith(`\r
160
- `,e.pos))e.pos+=2;else return!1;return e.line++,!0}function CE(e){do hE(e),xE(e);while(SE(e))}var wE={__proto__:null,b:`\b`,t:` `,n:`
161
- `,f:`\f`,r:`\r`,'"':`"`,"\\":`\\`},TE={__proto__:null,'"':/[^"\\[\p{Cc}--[\t\u0080-\u009F]]]*/vy,"'":/[^'[\p{Cc}--[\t\u0080-\u009F]]]*/vy},EE=/u([\dA-Fa-f]{4})|U([\dA-Fa-f]{8})/uy;function DE(e){let t=e.text[e.pos];if(t in wE)return wE[e.text[e.pos++]];let r=i(e,EE);q(r!==null,e,()=>`unsupported escape ${n(`\\${t??``}`)}`);let a=Number.parseInt(r[1]??r[2],16);return q(a<=1114111&&(a<55296||a>57343),e,()=>`\\${r[0]} is not a Unicode scalar value`),String.fromCodePoint(a)}var OE=/[\t ]*\r?\n(?:[\t ]|\r?\n)*/uy;function kE(e){let t=i(e,OE);return t===null?DE(e):(e.line+=t[0].split(`
162
- `).length-1,``)}var AE=(e,t)=>e.text[e.pos+1]===t&&e.text[e.pos+2]===t,jE={__proto__:null,'"':/"/uy,"'":/'/uy,'"""':/"{3,5}/uy,"'''":/'{3,5}/uy};function ME(e,t){let n=AE(e,t),r=jE[n?t.repeat(3):t];e.pos+=n?3:1,n&&SE(e);let a=``;for(;;){if(a+=i(e,TE[t])[0],n&&SE(e)){a+=`
163
- `;continue}q(!yE(e),e,`unterminated string`);let o=i(e,r);if(o!==null)return a+o[0].slice(3);let s=e.text[e.pos++];s===t?a+=s:s===`\\`?a+=n?kE(e):DE(e):vE(e,s,`a string`)}}var NE=/[\w-]+/uy;function PE(e){let t=e.text[e.pos];if(t===`"`||t===`'`)return q(!AE(e,t),e,`a multi-line string cannot be a key`),ME(e,t);let n=i(e,NE);return q(n!==null,e,()=>`expected a key, found ${gE(e)}`),n[0]}function FE(e){let t=[PE(e)];for(;;){if(hE(e),e.text[e.pos]!==`.`)return t;e.pos++,hE(e),t.push(PE(e)),q(t.length<=mE,e,`a key with too many parts`)}}var IE=/[\w+.:-]+/uy;function LE(e){let t=i(e,IE);q(t!==null,e,()=>`expected a value, found ${gE(e)}`);let r=t[0];if(r===`true`)return!0;if(r===`false`)return!1;let a=lE(r,e)??pE(r,e)??nE(r,e);return q(a!==void 0,e,()=>`expected a value, found ${n(r)}`),a}function RE(e,t,r,i){q(t[r]===void 0,e,()=>`duplicate key ${n(r)}`),t[r]=i}function zE(e,t){let n=FE(e);return q(e.text[e.pos]===`=`,e,()=>`expected "=" after the key, found ${gE(e)}`),e.pos++,hE(e),{header:!1,keys:n,value:JE(e,t)}}function BE(e,t){e.pos++;let n=[];for(CE(e);e.text[e.pos]!==`]`&&(n.push(JE(e,t+1)),CE(e),e.text[e.pos]!==`]`);CE(e))q(e.text[e.pos]===`,`,e,()=>`expected "," or "]", found ${gE(e)}`),e.pos++;return e.pos++,n}var VE=e=>typeof e==`object`&&!!e&&Object.getPrototypeOf(e)===null,HE=new WeakSet;function UE(e,t,n,r,i,a){let o=t;for(let t of r.slice(0,-1)){t in o||n.add(o[t]=Object.create(null));let r=o[t];q(n.has(r),e,()=>a(t,r)),o=r}RE(e,o,r.at(-1),i)}var WE=e=>Array.isArray(e)?`an array`:VE(e)?`an inline table`:`a value`,GE=(e,t)=>`${n(e)} is ${WE(t)}, which a dotted key cannot add to`;function KE(e){hE(e),q(!yE(e)&&e.text[e.pos]!==`#`,e,`an inline table across lines is not supported`)}function qE(e,t){e.pos++;let n=Object.create(null);HE.add(n);let r=new Set;if(KE(e),e.text[e.pos]===`}`)e.pos++;else do{KE(e),q(e.text[e.pos]!==`}`,e,`a trailing comma in an inline table is not supported`);let{keys:i,value:a}=zE(e,t+1);UE(e,n,r,i,a,GE),KE(e);let o=e.text[e.pos];q(o===`,`||o===`}`,e,()=>`expected "," or "}" on the inline table's line, found ${gE(e)}`)}while(e.text[e.pos++]===`,`);return n}function JE(e,t){q(t<=mE,e,`nested too deep`);let n=e.text[e.pos];return n===`"`||n===`'`?ME(e,n):n===`[`?BE(e,t):n===`{`?qE(e,t):LE(e)}function YE(e){let t=e.text.startsWith(`[[`,e.pos);e.pos+=t?2:1,hE(e);let n=FE(e),r=t?`]]`:`]`;return q(e.text.startsWith(r,e.pos),e,()=>`expected "${r}", found ${gE(e)}`),e.pos+=r.length,{header:!0,keys:n,array:t}}function XE(e){hE(e);let t=e.text[e.pos];if(t===`[`)return YE(e);if(!(t===`#`||t===`\r`||yE(e)))return zE(e,0)}function ZE(e){if(hE(e),xE(e),!(SE(e)||e.pos===e.text.length))throw q(e.text[e.pos]!==`\r`,e,_E),new YT(`expected the end of the line, found ${gE(e)}`,e.line)}function QE(e,t){return e.arrays.has(t)?`an array of tables`:Array.isArray(t)?`an array`:VE(t)?e.fixed.has(t)?`an inline table`:`a table`:`a value`}var $E=e=>n(e.join(`.`));function eD(e,t,r){let i=e.root;for(let a of r){a in i||e.implicit.add(i[a]=Object.create(null));let r=e.arrays.has(i[a])?i[a].at(-1):i[a];q(VE(r)&&!e.fixed.has(r),t,()=>`${n(a)} is ${QE(e,r)}, which a header cannot add to`),i=r}return i}function tD(e,t,n,r){e.pending.clear();let i=eD(e,t,n.slice(0,-1)),a=n.at(-1);if(r){a in i||e.arrays.add(i[a]=[]),q(e.arrays.has(i[a]),t,()=>`${$E(n)} is ${QE(e,i[a])}, not an array of tables`),i[a].push(e.current=Object.create(null));return}a in i?q(e.implicit.delete(i[a]),t,()=>`${$E(n)} is ${QE(e,i[a])} already`):i[a]=Object.create(null),e.current=i[a]}function nD(e,t,r){return!VE(r)||e.fixed.has(r)?`${n(t)} is ${QE(e,r)}, which a dotted key cannot add to`:e.implicit.has(r)?`a dotted key through ${n(t)}, a table a header made on its way, is not supported`:`${n(t)} is a table declared elsewhere, which a dotted key cannot add to`}function rD(e,t,n,r){UE(t,e.current,e.pending,n,r,(t,n)=>nD(e,t,n)),VE(r)&&e.fixed.add(r)}var iD={__proto__:null,"":`a byte order mark is not read`,"�":`U+FFFD is not supported: a decoder puts it where bytes are not UTF-8`};function aD(e){if(typeof e!=`string`)throw TypeError(`expected a string`);let t=/\p{Cs}|^\uFEFF|\uFFFD/u.exec(e);if(t===null)return;let n=e.slice(0,t.index).split(`
164
- `).length-1;throw new YT(iD[t[0]]??`a lone surrogate is not well-formed Unicode`,n)}function oD(e){aD(e);let t=Object.create(null),n={text:e,pos:0,line:0},r={root:t,current:t,implicit:new Set,pending:new Set,arrays:new Set,fixed:new Set};for(;n.pos<e.length;){let e=XE(n);e?.header===!0?tD(r,n,e.keys,e.array):e!==void 0&&rD(r,n,e.keys,e.value),ZE(n)}return t}function sD(e){if(typeof e!=`string`)return null;let t=/^(?:github:|(?:git\+)?(?:(?:https?|ssh|git):\/\/(?:[\w.~%!$&'()*+,;=:-]*@)?(?:www\.)?github\.com(?::\d+)?\/|ssh:\/\/(?:[\w.~%!$&'()*+,;=-]*@)?(?:www\.)?github\.com:|(?:[^@/:]+@)?(?:www\.)?github\.com:))?([\w.-]+)\/([\w.-]+?)(?:\.git)?\/?$/iu.exec(e.trim().replace(/#.*$/su,``)),n=t&&`${t[1]}/${t[2]}`;return n&&Mt(`github`,n)?n:null}function cD(e,t){if(typeof e!=`string`)return;let n=/^https?:\/\/(?:www\.)?github\.com\/([^/]+\/[^/]+)\/tree\/[^/#?]+\/([^#?]+)/iu.exec(e.trim());if(n&&n[1].toLowerCase()===t.toLowerCase())try{return decodeURIComponent(n[2])}catch{return}}var lD=e=>e.replaceAll(`\\`,`/`).split(`/`).every(e=>e===``||e===`.`);function uD(e){if(typeof e!=`string`)return{};let t=e.replaceAll(`\\`,`/`).split(`/`);if(t.includes(`..`))return{};let n=t.filter(e=>e!==``&&e!==`.`).join(`/`);return Mt(`directory`,n)?{directory:n}:{}}function dD(e){let t=e?.repository,n=sD(typeof t==`string`?t:t?.url);if(!n)return;let r=t.directory;return typeof r!=`string`&&(r=cD(e.homepage,n),r!==void 0&&lD(r)&&(r=void 0)),{github:n,...uD(r)}}function fD(e,t){let n=e?.[t];if(typeof n!=`string`)return null;try{return t.endsWith(`.toml`)?oD(n):JSON.parse(n.replace(/^\uFEFF/u,``))}catch{return null}}function pD(e){let t=typeof e==`string`?e:e?.url;if(typeof t!=`string`)return null;let n=t.trim().replace(/#.*$/su,``).replace(/^github:/iu,``).replace(/^git\+/iu,``).replace(/^(?:ssh|git):\/\/(?:git@)?github\.com\//iu,`https://github.com/`).replace(/^git@github\.com:/iu,`https://github.com/`);return/^(?:https?:\/\/)?(?:www\.)?github\.com\//iu.test(n)?gi({repo:{github:n}}):null}function mD(e,t,n){let r=t?.ecosystem??e.ecosystem??`npm`,i=r===`composer`?fD(t?.files,`composer.json`):r===`cargo`?fD(t?.files,`Cargo.toml`)?.package:fD(t?.files,`package.json`),a=t?.name??e.name,o=t?.version??e.version??i?.version,s=gi(t),c=s?{github:s,directory:t.repo.directory}:r===`npm`||r===`soldeer`?dD(i):{github:[i?.repository,i?.support?.source,i?.source?.url,i?.homepage,i?.bugs].map(e=>pD(e)).find(Boolean)},l=typeof c?.directory==`string`?c.directory:void 0,u=s?qr(t.repo.commit):null;return{ecosystem:r,name:a,version:typeof o==`string`?o:void 0,github:c?.github??null,...l===void 0?{}:{directory:l},...u?{commit:u}:{},fileCount:n}}var hD=new WeakMap;function gD(e,t){let n=hD.get(e);if(n||hD.set(e,n=new Map),!n.has(t)){let r=`${t}/`,i=0,a=0;for(let[t,n]of e)t.startsWith(r)&&(i+=ha(n),a+=Yt(n));n.set(t,{bytes:i,loc:a})}return n.get(t)}var _D=new Set([`cargo`,`composer`,`soldeer`]);function vD(e,t,n){if(t?.ecosystem!==void 0)return t.ecosystem;if(!t?.name||/(?:^|\/)vendor\/([^/]+\/[^/]+)$/u.exec(e)?.[1]!==t.name)return;let r=Object.entries(t.files??{}).filter(([t,r])=>typeof r==`string`&&(!n||n.has(`${e}/${t}`)));return r.length>0&&r.every(([e])=>/\.(?:php|phtml)$/iu.test(e))?`composer`:void 0}function yD(e,t=e,n=null){let r={path:``,files:new Map,dirs:new Map};for(let n=0;n<e.length;n++){let i=e[n].split(`/`),a=r,o=t[n].split(`/`);for(let[e,t]of i.slice(0,-1).entries())a.dirs.has(t)||a.dirs.set(t,{path:i.slice(0,e+1).join(`/`),sourcePath:o.slice(0,-(i.length-e-1)).join(`/`),files:new Map,dirs:new Map}),a=a.dirs.get(t);a.files.set(i.at(-1),t[n])}xD(r,n,n?new Set(t):null);let i=e=>{e.package&&(e.packageInfo=mD(e.package,n?.get(e.sourcePath),e.fileCount));for(let t of e.dirs.values())i(t)};return i(r),r}function bD(e,t=null,n=null){let r=/(?:^|\/)node_modules\//u.exec(e),i=r?r.index+ +!!r[0].startsWith(`/`):e.length,a=n?new Set(n):null;for(let[n,r]of t??[]){let t=vD(n,r,a);if(!_D.has(t)||!r.name||n===`.`||!e.startsWith(`${n}/`)&&!n.startsWith(e))continue;let o=(t===`soldeer`?/(?:^|\/)dependencies\//u:/(?:^|\/)vendor\//u).exec(`${n}/`),s=o?o.index+ +!!o[0].startsWith(`/`):n.lastIndexOf(`/`)+1;i=Math.min(i,s)}return e.slice(0,i)}function xD(e,t,n){for(let r of e.dirs.values())xD(r,t,n);e.fileCount=e.files.size+[...e.dirs.values()].reduce((e,t)=>e+t.fileCount,0);let r=t?.get(e.sourcePath),i=vD(e.sourcePath,r,n);if(_D.has(i)&&r.name&&(e.boundary=!0,e.package={name:r.name,version:r.version,ecosystem:i},e.hideSrc=e.dirs.size===1&&e.dirs.has(`src`),e.hideSrc&&(e.srcNameConflicts=new Set([...e.dirs.get(`src`).files.keys()].filter(t=>e.files.has(t))))),/(?:^|\/)dependencies$/u.test(e.path)&&[...e.dirs.values()].some(e=>e.package?.ecosystem===`soldeer`)&&(e.boundary=!0),/(?:^|\/)vendor$/u.test(e.path)){let t=new Map;for(let[n,r]of e.dirs)if(!r.package&&r.files.size===0&&r.dirs.size>0&&[...r.dirs.values()].every(e=>e.package?.ecosystem===`composer`)){e.boundary=!0;for(let[e,i]of r.dirs)t.set(`${n}/${e}`,i)}else _D.has(r.package?.ecosystem)&&(e.boundary=!0),t.set(n,r);e.dirs=t}if(/(?:^|\/)node_modules$/u.test(e.path)){e.boundary=!0;let t=new Map;for(let[n,r]of e.dirs)if(r.boundary=!0,n.startsWith(`@`)&&r.files.size===0&&[...r.dirs.keys()].every(e=>!e.startsWith(`.`)&&!e.startsWith(`@`)))for(let[e,i]of r.dirs)i.boundary=!0,i.package??={name:`${n}/${e}`},t.set(`${n}/${e}`,i);else!n.startsWith(`.`)&&!n.startsWith(`@`)&&(r.package??={name:n}),t.set(n,r);e.dirs=t}if(/(?:^|\/)node_modules\/\.pnpm$/u.test(e.path)){e.boundary=!0;let t=new Map;for(let[n,r]of e.dirs){if(r.boundary=!0,r.files.size>0||r.dirs.size!==1)continue;let i=r.dirs.get(`node_modules`);if(!i||i.files.size>0||i.dirs.size!==1)continue;let a=i.dirs.values().next().value;if(!a.package)continue;let o=`${a.package.name.replace(`/`,`+`)}@`;if(!n.startsWith(o))continue;let s=/^(\d+\.\d+\.\d+(?:-[\da-z.-]+)?(?:\+[\da-z.-]+)?)([_(].*)?$/iu.exec(n.slice(o.length));if(!s)continue;a.package={...a.package,version:s[1]},e.dirs.set(n,a);let c=SD(n,a);t.has(c)||t.set(c,[]),t.get(c).push(a)}for(let e of t.values())if(!(e.length<2)){e.sort((e,t)=>e.path.localeCompare(t.path));for(let[t,n]of e.entries())n.package.variant=t+1}}return e}function SD(e,t){let n=t.package;return n?`${n.name}${n.version?`${_D.has(n.ecosystem)?` - `:`@`}${n.version}`:``}`:e}function CD(e,t,n=``,r=null){let i=t.toLowerCase(),a=(e,t,o=null)=>{let s=new Map([...e.files].filter(([e,a])=>{let s=n&&a.startsWith(n)?a.slice(n.length):a,c=o?.srcNameConflicts.has(e)?`src/${e}`:e;return(!r||r(a))&&(s.toLowerCase().includes(i)||`${t}/${c}`.toLowerCase().includes(i))})),c=new Map;for(let[n,r]of e.dirs){let i=e.hideSrc&&n===`src`,o=a(r,i?t:`${t}/${SD(n,r)}`,i?e:null);o&&c.set(n,o)}return s.size>0||c.size>0?{...e,files:s,dirs:c}:null};return i||r?a(e,``):e}function wD(e,t,n){let r=[e];if(t.hideSrc&&t.dirs.has(`src`)){let e=t.dirs.get(`src`),n=new Map(t.files);for(let[r,i]of e.files)n.set(t.srcNameConflicts.has(r)?`src/${r}`:r,i);return{names:r,node:{...t,sourcePath:e.sourcePath,files:n,dirs:e.dirs}}}if(e===`node_modules`&&t.files.size===0&&t.dirs.size===1&&t.dirs.has(`.pnpm`))return{names:[`node_modules`,`.pnpm`],node:t.dirs.get(`.pnpm`)};let i=Math.max(12,24-Math.max(0,n-1)*2);for(;!t.boundary&&t.files.size===0&&t.dirs.size===1&&r.length<3;){let[e,n]=t.dirs.entries().next().value;if(n.boundary||[...r,e].join(`/`).length>i)break;r.push(e),t=n}return{names:r,node:t}}function TD(e){if(e.altKey||e.ctrlKey||e.metaKey||e.shiftKey)return;let t=e.currentTarget,n=e.target.closest(`summary, .bundle-code-tree-link`);if(!n||!t.contains(n)||![`ArrowDown`,`ArrowUp`,`ArrowRight`,`ArrowLeft`,`Home`,`End`].includes(e.key))return;e.preventDefault(),e.stopPropagation();let r=[...t.querySelectorAll(`summary, .bundle-code-tree-link`)].filter(e=>{let t=e.parentElement;return e.tagName===`SUMMARY`&&(t=t.parentElement),!t.closest(`details:not([open])`)}),i=r.indexOf(n),a=n.tagName===`SUMMARY`?n.parentElement:null,o=n;e.key===`ArrowDown`&&(o=r[Math.min(i+1,r.length-1)]),e.key===`ArrowUp`&&(o=r[Math.max(i-1,0)]),e.key===`Home`&&(o=r[0]),e.key===`End`&&(o=r.at(-1)),e.key===`ArrowRight`&&a&&(a.open?o=r[i+1]??n:n.click()),e.key===`ArrowLeft`&&(a?.open?n.click():o=(a??n).parentElement.closest(`details`)?.querySelector(`summary`)??n),o?.focus()}function ED([e,t],[n,r]){return SD(e,t).localeCompare(SD(n,r))||t.path.localeCompare(r.path)}function DD(e,t=0,n=[]){for(let[r,i]of[...e.dirs.entries()].toSorted(ED))DD(wD(r,i,t).node,t+1,n);for(let[,t]of[...e.files.entries()].toSorted(([e],[t])=>e.localeCompare(t)))n.push(t);return n}function OD(e,t,n,r,i){let a=[t,n].filter(Boolean).join(`/`),o=qr(r);return{href:`https://github.com/${e}/blob/${o??`HEAD`}/${a.split(`/`).map(encodeURIComponent).join(`/`)}`,github:e,path:a,commit:o,package:typeof i?.name==`string`&&i.name?{name:i.name,version:i.version,ecosystem:i.ecosystem}:null}}function kD(e,t,n=null){if(typeof t!=`string`)return null;let r=e?.npm?.manifest;if(r){let e=qr(r.gitHead);return r.github?.github&&e?OD(r.github.github,_i({directory:r.github.directory??``}),t,e,null):null}let i=e?.repository;if(i)return OD(i.repo,i.path,t,i.commit,null);if(e?.kind!==`stasis`)return null;let a=e.bundle,o=null;for(let[e,n]of a?.modules??[]){let r=e===`.`?t:t.startsWith(`${e}/`)?t.slice(e.length+1):null;if(r!==null&&Object.hasOwn(n.files,r)){o={dir:e,info:n,rel:r};break}}if(!o)return null;let{dir:s,info:c,rel:l}=o,u=s===`.`?void 0:vD(s,c,null)??(s.split(`/`).includes(`node_modules`)?`npm`:void 0);if(u===void 0){let e=gi(a),r=gi({repo:{github:n?.github}}),i=e??r;return i?OD(i,typeof a.repo?.directory==`string`?_i(a.repo):r?.toLowerCase()===i.toLowerCase()?_i({directory:n.directory}):``,t,e?a.repo?.commit:void 0,null):null}let d=mD({name:c.name,ecosystem:u},c,0);return d.github?OD(d.github,d.directory??``,l,d.commit,d):null}function AD(e,t=null){return A`<a class="bundle-code-github-link" href="${e.href}" target="_blank" rel="noopener noreferrer" aria-label="Open on GitHub" data-tooltip="${e.path}" data-tooltip-repo="${e.github}" data-tooltip-commit="${e.commit??M}" data-tooltip-commit-info="${it(t,e.commit,e.github)??M}" data-tooltip-package="${e.package?.name??M}" data-tooltip-ecosystem="${e.package?.ecosystem??M}" data-tooltip-version="${e.package?.version??M}">${k(ia)}${e.package?A`<span hidden data-tooltip-package-icon>${Qe(e.package.ecosystem)}</span>`:M}</a>`}var jD=`.bundle-code-main, .bundle-source-modal, .bundle-search-side`,MD=new Map,ND=new WeakMap,PD=null;function FD(e){if(!e){queueMicrotask(ID);return}if(ID(),MD.has(e))return;if(!e.isConnected){queueMicrotask(()=>{e.isConnected&&FD(e)});return}let t=e.querySelector(`:scope > .bundle-source-code`);if(!t)return;let n=new ResizeObserver(()=>{ND.get(e)?.width!==LD(e)&&RD(e)});n.observe(t),n.observe(e.parentElement);let r=new MutationObserver(()=>RD(e));r.observe(t,{childList:!0,subtree:!0,characterData:!0}),r.observe(e,{attributes:!0,attributeFilter:[`class`]}),MD.set(e,()=>{n.disconnect(),r.disconnect()})}function ID(){for(let[e,t]of MD)e.isConnected||(t(),MD.delete(e))}function LD(e){let t=e.querySelector(`:scope > .bundle-source-code`),n=e.querySelector(`:scope > .bundle-source-lineno-col`);if(!t||!n)return 0;let r=getComputedStyle(t);return e.parentElement.clientWidth-n.getBoundingClientRect().width-parseFloat(r.paddingLeft)-parseFloat(r.paddingRight)}function RD(e){let t=e.querySelector(`:scope > .bundle-source-code`),n=e.querySelector(`:scope > .bundle-source-lineno-col`),r=LD(e);if(!t||!n||!e.isConnected||r<=0)return;let i=e.classList.contains(`is-wrapped`),a=ND.get(e)?.rows??new Map,o=null;for(let e of n.children)if((!o||(a.get(e)??1)<a.get(o))&&(o=e),!a.has(e))break;let{rows:s,toggles:c}=zD(t,r,i,o?parseFloat(getComputedStyle(o).height)/(a.get(o)??1):parseFloat(getComputedStyle(t).lineHeight)),l=new Map;for(let[e,t]of s){let r=n.children[e];if(!r)continue;let i=`"${`\\A `.repeat(t-1)} "`;r.style.getPropertyValue(`--wrap-breaks`)!==i&&r.style.setProperty(`--wrap-breaks`,i),l.set(r,t)}for(let e of a.keys())l.has(e)||e.style.removeProperty(`--wrap-breaks`);ND.set(e,{rows:l,width:r});let u=e.closest(jD)?.querySelector(`[data-bundle-source-wrap]`);u&&(u.hidden=!c)}function zD(e,t,n,r){let i=getComputedStyle(e);PD??=document.createElement(`canvas`).getContext(`2d`),PD.font=`${i.fontSize} ${i.fontFamily}`;let a=t/(2*PD.measureText(`0`).width),o=[],s=null,c=null,l=0,u=0,d=()=>{l>a&&c&&o.push({line:u,first:s,last:c}),u++,l=0,s=c=null},f=document.createTreeWalker(e,NodeFilter.SHOW_TEXT);for(let e=f.nextNode();e;e=f.nextNode()){let t=e.data;for(let n=0;n<t.length;){let r=t.indexOf(`
165
- `,n),i=r===-1?t.length:r;if(i>n){s??={node:e,from:n,to:n+(t.codePointAt(n)>65535?2:1)};let r=i;for(;r>n&&(t[r-1]===` `||t[r-1]===` `);)r--;r>n&&(c={node:e,from:r-(r-2>=n&&t.codePointAt(r-2)>65535?2:1),to:r}),l+=i-n}if(r===-1)break;d(),n=r+1}}d();let p=new Map,m=document.createRange(),h=({node:e,from:t,to:n})=>(m.setStart(e,t),m.setEnd(e,n),m.getBoundingClientRect()),g=e.getBoundingClientRect().left+e.clientLeft+parseFloat(i.paddingLeft),_=!1;for(let{line:e,first:i,last:a}of o){let o=!!i.node.parentElement.closest(`.bundle-source-long-line`);if(n||o){let t=Math.round((h(a).top-h(i).top)/r)+1;t>1&&p.set(e,t),t>1&&!o&&(_=!0)}else!_&&h(a).right-g>t+.5&&(_=!0)}return{rows:p,toggles:_}}function BD(e){let t=e.closest(jD)?.querySelector(`.bundle-source-code-wrap`),n=t?.querySelectorAll(`.bundle-source-lineno-row`);if(!n?.length)return()=>{};let r=t.getBoundingClientRect().top,i=n.length-1,a=0;for(;a<i;){let e=a+i>>1;n[e].getBoundingClientRect().bottom<=r?a=e+1:i=e}let o=n[a],s=o.getBoundingClientRect().top-r;return()=>{o.isConnected&&(t.scrollTop+=o.getBoundingClientRect().top-r-s)}}var VD=new Set([`js`,`mjs`,`cjs`,`jsx`,`ts`,`mts`,`cts`,`tsx`,`css`,`json`]),HD=4194304;function UD(e){let t=/\.([a-z]+)$/iu.exec(e)?.[1]?.toLowerCase();return VD.has(t)?t:null}function WD(e,t,n=()=>vt(e,t)){return UD(e)!==null&&ha(t)<=HD&&n().category===`minified`}var GD=e=>e.bundle??e.json??e,KD=/\\(?:x([\dA-Fa-f]{2})|u([\dA-Fa-f]{4})|u\{([\dA-Fa-f]{1,6})\}|([0-3][0-7]{0,2}|[4-7][0-7]?)|(\r\n|[\s\S]))/gu,qD={b:`\b`,f:`\f`,n:`
166
- `,r:`\r`,t:` `,v:`\v`},JD=e=>e.replaceAll(KD,(e,t,n,r,i,a)=>{if(i!==void 0)return String.fromCodePoint(Number.parseInt(i,8));if(a!==void 0)return/^(?:\r\n|[\n\r\u2028\u2029])$/u.test(a)?``:qD[a]??a;let o=Number.parseInt(t??n??r,16);return o<=1114111?String.fromCodePoint(o):e}),YD={i:`ı`,k:`K`,s:`ſ`},XD=e=>new Set([e,e.toLowerCase(),e.toUpperCase(),...YD[e.toLowerCase()]??``]);function ZD(e){let t=String.raw`(?=[.\\${[...e].map(e=>String.raw`\u{${e.codePointAt(0).toString(16)}}`).join(``)}])`,n=e=>String.raw`${e}(?=${t}((?:[^${e}\\\n]|\\(?:\r\n|[\s\S]))*)${e})`;return new RegExp(String.raw`(?<=(?:^|[^\\])(?:\\\\)*)(?:${n(`"`)}|${n(`'`)}|\x60(?=${t}((?:[^\x60\\]|\\[\s\S])*)\x60))`,`gu`)}function QD(e,t){return t.includes(`\\`)?e==="`"?t.replaceAll(/\\[\s\S]/gu,``).includes("${")?[]:[JD(t),t]:[JD(t)]:e==="`"&&t.includes("${")?[]:[t]}var $D=/(?<=(?<![\p{ID_Continue}$.#])(?:import|from)[ \t]*)/uy,eO=/(?<=(?<![\p{ID_Continue}$.#])import[ \t]*\([ \t]*)/uy,tO=/[ \t]*[,)]/uy,nO=(e,t,n)=>(e.lastIndex=n,e.test(t)),rO=(e,t,n,r)=>t!=="`"&&nO($D,e,n)||nO(eO,e,n)&&nO(tO,e,r),iO=/^\.\.?(?:\/|$)/u,aO=/\.(?:json|node)$/u,oO=[`.js`,`.json`,`.node`],sO=/(?:^|\/)\.{0,2}$/u,cO=/[^/.][^/]*\.[^/]*$/u;function lO(e,t){let n=[...e];for(let e of t.split(`/`)){if(e===`..`&&n.pop()===void 0)return null;e!==`..`&&e!==`.`&&e!==``&&n.push(e)}return n}var uO=(e,t)=>t!==null&&e.every((e,n)=>n<t.length&&(t[n]===e||vO(t[n])===e))?t.slice(e.length).join(`/`):null,dO=(e,t,n)=>uO(e,lO([...e,...t===``?[]:t.split(`/`)],n)),fO=e=>new Set([e,e.replaceAll(`\\`,`/`)]),pO=(e,t,n)=>[...fO(n)].filter(e=>iO.test(e)).map(n=>dO(e,t,n)),mO=/[%?#\\\t\n\r]|[\0- ]$/u;function hO(e,t,n){if(!iO.test(n))return null;if(!mO.test(n))return dO(e,t,n);try{let r=[...e,...t===``?[]:t.split(`/`)].map(e=>`${encodeURIComponent(e)}/`).join(``),{pathname:i}=new URL(n,`file:///${r}`);return/%(?:2f|5c)/iu.test(i)?null:uO(e,lO([],decodeURIComponent(i)))}catch{return null}}var gO=/^(?:@[^/]+\/)?[^/@.][^/]*$/u,_O=e=>typeof e==`string`&&gO.test(e)&&e.split(`/`).every(e=>e!==`.`&&e!==`..`)?[`node_modules`,...e.split(`/`)].map(vO):[],vO=e=>e.toWellFormed().normalize(`NFC`).toUpperCase().toLowerCase();function yO(e){let t=new Map,n=new Map,r=(e,t,n)=>e.has(t)?e.get(t).push(n):e.set(t,[n]);for(let i of e.keys()){let e=/(?:^|\/)\.gitignore$/u.test(i)?[i,i.replace(/\.gitignore$/u,`.npmignore`)]:[i];for(let a of e)r(n,vO(a),i),r(t,a,i)}let i=e=>n.get(e)??[];return{installed:e=>e===null?[]:i(vO(e)),cased:{named:e=>t.get(e)??[],fold:e=>e},folding:{named:i,fold:vO}}}function bO(e){let t=[],n=[e];for(;n.length>0;){let e=n.pop();if(typeof e==`string`)t.push(e);else if(e&&typeof e==`object`)for(let t of Object.values(e))n.push(t)}return t}function xO(e,t){return(e&&typeof e==`object`&&!Array.isArray(e)&&Object.keys(e).some(t)?Object.entries(e):[[`.`,e]]).flatMap(([e,t])=>bO(t).map(t=>({key:e,pattern:e.includes(`*`),target:t})))}function SO(e){let t={name:null,main:null,targets:[],exports:[],hasExports:!1,imports:[]};if(typeof e!=`string`)return t;try{let{name:t,main:n,exports:r,imports:i}=JSON.parse(e.replace(/^\uFEFF/u,``)),a=xO(r,e=>e.startsWith(`.`)).filter(({key:e,target:t})=>e.startsWith(`.`)&&t.startsWith(`./`)),o=xO(i,e=>e.startsWith(`#`)).filter(({key:e})=>e.startsWith(`#`)),s=[...a,...o.filter(({target:e})=>e.startsWith(`./`))];return{name:t,main:typeof n==`string`&&n!==``?n:null,targets:s,exports:a,hasExports:r!=null,imports:o}}catch{return t}}var CO=e=>e.replaceAll(/\/+/gu,`/`).replace(/^\//u,``);function wO(e,t,n,r,i){let a=hO(t,n,r);if(a===null||!i||!a.includes(`*`))return[a];let o=vO(a).split(`*`),s=o.length-1,c=o[0].replace(/\/+$/u,``),l=CO(o.join(`/`)),u=o.at(-1).replace(/^\/+/u,``),d=e=>e.includes(!0)&&e.includes(!1)?[``,`/`]:[``],f=d(o.slice(1).map(e=>e.startsWith(`/`))),p=d(o.slice(0,-1).map((e,t)=>e.endsWith(`/`)||t===0&&e===``)).flatMap(e=>f.map(t=>({after:t,at:CO(`${o[0]}${e}x`).length-1,before:e,length:CO(o.join(`${e}x${t}`)).length})));return e.filter(([e,t])=>!t.startsWith(c)||!t.endsWith(u)||o.at(-1)===``&&(cO.test(e)||pt.test(e))?!1:t===l||p.some(({after:e,at:n,before:r,length:i})=>{let a=(t.length-i)/s+1;if(!Number.isInteger(a)||a<=0)return!1;let c=o.join(`${r}${t.slice(n,n+a)}${e}`);return c===t||(c.includes(`//`)||c.startsWith(`/`))&&CO(c)===t})).map(([e])=>e)}var TO=65536,EO=Symbol(`every file`),DO=(e,t)=>e.flatMap(({dir:e,key:n,target:r})=>{let i=n.indexOf(`*`);if(i===-1?n!==t:i!==n.lastIndexOf(`*`)||t.length<n.length||!t.startsWith(n.slice(0,i))||!t.endsWith(n.slice(i+1)))return[];if(i===-1)return[{dir:e,target:r}];let a=t.slice(i,t.length-(n.length-i-1));return[{dir:e,target:(r.split(`*`).length-1)*a.length>TO?EO:r.replaceAll(`*`,a)}]}),OO=(e,{exports:t,hasExports:n},r)=>n?DO(t.map(e=>({...e,dir:``})),r).map(({target:t})=>t===EO?EO:hO(e,``,t)):[hO(e,``,r)];function kO({named:e,fold:t},n,r){let i=n===``?null:t(n),a=i===null?void 0:r.find(t=>e(`${i}${t}`).length>0);return a===void 0?null:`${n}${a}`}var AO=(e,t)=>kO(e,t===``?`index`:`${t}/index`,oO);function jO(e,t,n,r,i){if(r===null)return[];let a=i?null:kO(t,r,[``,...oO]);if(a!==null)return[a];let o=t.named(r===``?`package.json`:`${t.fold(r)}/package.json`).map(t=>SO(e.get(t)).main).filter(e=>e!==null).flatMap(e=>[...fO(e)].map(e=>dO(n,r,e))).filter(e=>e!==null).map(e=>kO(t,e,[``,...oO])??AO(t,e)).filter(e=>e!==null);return o.length>0?o:[AO(t,r)].filter(e=>e!==null)}var MO=e=>[...e].filter(([e])=>/(?:^|\/)package\.json$/iu.test(e)).flatMap(([e,t])=>SO(t).imports.map(({key:t,target:n})=>({dir:e.slice(0,-13),key:t,target:n}))),NO=64,PO=new WeakMap;function FO(e){let t=PO.get(GD(e));if(t)return t;t=new Set;let n=Bt(e),{installed:r,cased:i,folding:a}=yO(n),o=[],s=SO(n.get(n.has(`package.json`)?`package.json`:r(`package.json`)[0])),c=_O(s.name),l=(e,t)=>!(t===`require`?aO:cO).test(e),u=new Set,d=(e,i)=>{let a=e===null?null:`${i}\0${l(e,i)}\0${vO(e)}`;if(!(a===null||u.has(a))){u.add(a);for(let a of r(e)){let r=n.get(a);t.has(a)||ct(a,r)||r?.runnable===!1||!l(e,i)&&!l(a,i)||(t.add(a),typeof r==`string`&&o.push(a))}}},f=(e,t)=>{let r=jO(n,a,c,e,t);if(r.length>0)for(let a of[...r,...jO(n,i,c,e,t)])d(a,`require`)};f(``,!0);let p=[...n].filter(([e])=>/(?:^|\/)package\.json$/iu.test(e)).flatMap(([e,t])=>SO(t).targets.map(({pattern:t,target:n})=>[e.slice(0,-13),n,t&&n.includes(`*`)]));if(p.filter(([,,e])=>e).length>NO)for(let e of n.keys())d(e,`require`);else{let e=p.some(([,,e])=>e)?[...n.keys()].map(e=>[e,vO(e)]):[];for(let[t,n,r]of p)for(let i of wO(e,c,t,n,r))d(i,`require`)}for(let[e,t]of n)ct(e,t)&&o.push(e);let m=MO(n),h=e=>c.length>0&&e.length>s.name.length&&`/\\`.includes(e[s.name.length])&&vO(e.slice(0,s.name.length))===c.slice(1).join(`/`),g=new Set,_=ZD([...c.length>0?XD(s.name[0]):[],...m.length>0?[`#`]:[]]),v=e=>OO(c,s,e),y=!1,b=(e,t)=>{if(e!==EO)return d(e,t);if(!y)for(let e of n.keys())d(e,`require`);y=!0},ee=(e,t)=>{if(!g.has(`${t}\0#\0${e}`)){g.add(`${t}\0#\0${e}`);for(let{dir:n,target:r}of DO(m,e)){let e=r===EO?[EO]:r.startsWith(`./`)?[hO(c,n,r)]:h(r)?v(`./${r.slice(s.name.length+1)}`):c.length>0&&r===s.name?v(`.`):[];for(let n of e)b(n,t)}}},te=(e,t,n)=>{if(e.startsWith(`#`))return ee(e,n()?`import`:`require`);let[r,i]=h(e)?[``,`./${e.slice(s.name.length+1)}`]:[t,e];if(!iO.test(i.replaceAll(`\\`,`/`)))return;let a=n()?`import`:`require`,o=`${a}\0${r}\0${i}`;if(!g.has(o)){if(g.add(o),h(e))for(let e of v(i))b(e,a);if(!(h(e)&&s.hasExports)){if(a===`require`)for(let e of pO(c,r,i))f(e,sO.test(i));d(hO(c,r,i),`import`)}}};for(let e=0;e<o.length;e++){let t=o[e],r=n.get(t),i=t.includes(`/`)?t.slice(0,t.lastIndexOf(`/`)):``;for(let{1:e,2:t,3:n,index:a}of r.matchAll(_)){let o=e??t??n,s=r[a];for(let e of QD(s,o))te(e,i,()=>rO(r,s,a,a+o.length+2))}}return PO.set(GD(e),t),t}var IO=new WeakMap;function LO(e,t){let n=IO.get(GD(e));if(n||IO.set(GD(e),n=new Map),!n.has(t)){let r=Bt(e).get(t);n.set(t,ue(t,typeof r==`string`?r:null,Vt(e).get(t),FO(e).has(t)))}return n.get(t)}var RO=(e,t=e=>e)=>e?new Map(Object.entries(e).map(([e,n])=>[t(e),n])):null,zO=({stamps:e,readability:t,runsCode:n,exfiltration:r,hosts:i})=>({stamps:e,runsCode:RO(n),exfiltration:RO(r),hosts:RO(i),readability:t&&{...t,controls:RO(t.controls,Number)}});function BO(e){switch(e.id){case`held-runs-code`:case`held-credentials`:case`held-exfiltration`:case`held-remote`:case`held-ip-lookup`:return{...e,files:e.files.map(e=>({...e,found:RO(e.found),...e.added?{added:RO(e.added)}:{}}))};case`popularity`:return{...e,tier:e.tier??1/0};default:return e}}var VO=e=>({oldVersion:e.oldVersion??null,findings:e.findings.map(BO),files:new Map(Object.entries(e.files).map(([e,t])=>[e,zO(t)])),dependencies:e.dependencies,score:e.score??null}),HO=e=>e?.npm?e.risk?.()?.files??null:null,UO={stamps:[],readability:null,runsCode:null,exfiltration:null,hosts:null};function WO(e,t){return e?.npm?HO(e)?.get(t)??UO:LO(e,t)}var GO=({names:e,loop:t})=>[e>=mt&&`${e.toLocaleString(`en`)}${e===gt?` or more`:``} names such as _0x1a2b`,t&&`while(!![])`].filter(Boolean).join(`, and `);function KO(e,t,n){return n===Bt(e).get(t)&&typeof n==`string`?WO(e,t).readability:JO(e,t,n)}var qO=new WeakMap;function JO(e,t,n){let r=qO.get(e);r||qO.set(e,r=new Map);let i=r.get(t);if(i?.text===n)return i.read;let a=vt(t,n);return r.set(t,{text:n,read:a}),a}function YO(e,t){let n=Tt(e,t),r=n.slice(0,6).map(([e,t])=>`U+${e.toString(16).toUpperCase().padStart(4,`0`)} \xD7${t.toLocaleString(`en`)}`);return`${wt.get(t).name}: ${r.join(`, `)}${n.length>6?`, and ${n.length-6} more`:``}`}var XO=({longLines:e,longest:t})=>`${e.toLocaleString(`en`)} ${e===1?`line`:`lines`} over ${dt} characters, the longest ${t.toLocaleString(`en`)}`;function ZO(e){let{average:t,category:n,longLines:r,inlineMap:i}=e,a=()=>XO(e);switch(n){case`binary`:return`Not UTF-8 text, or holding a NUL: there is no text to read`;case`map`:return`A source map`;case`inline-map`:return`Inline source map, ${Wr(i)}${r>0?`; minified: ${a()}`:``}`;case`minified`:return`Minified: ${r>0?a():`its lines of code ${t.toLocaleString(`en`)} characters long on average, strings and comments aside, with few spaces`}`;default:return M}}function QO(e,t=!1){if(!e)return M;let n=bt(e),{tag:r,short:i,mark:a}=wt.get(n);return A`<span class="${`npm-encoding-tag${a?` is-${a}`:``}`}" data-tooltip="${ZO({...e,category:n})}">${t?i??r:r}</span>`}function $O(e){let t=e?.kind;return t!==`ascii`&&t!==`utf8`||bt(e)===t?M:QO({...e,category:t})}function ek(e,t=null){let n=e?St(e).filter(n=>[`controls`,`invisible`,`long`].includes(n)&&(t===null||t.includes(Ct(e,n)))):[];if(n.length===0)return M;let r=t=>t===`long`?`${XO(e)}${e.category===`long`?`, among readable ones`:``}`:YO(e.controls,t);return n.map(t=>A`<span class="${`npm-flag-tag is-${Ct(e,t)}`}" data-tooltip="${r(t)}">${wt.get(t).tag}</span>`)}function tk(e){if(!e)return M;let t=bt(e);return t===`ascii`||t===`map`?ek(e):nk(e)}var nk=e=>e?A`${ek(e)}${QO(e)}`:M;function rk(e,t,n,r=!0){let{stamps:i,readability:a}=WO(e,t),o=r&&i.some(({name:e})=>e===`Large`),s=a?.obfuscation;return!o&&!s?M:A`${o?A`<span class="npm-flag-tag is-notice" data-tooltip="${`A code file of ${Wr(n)}, 256 KiB or more`}">Large</span>`:M}${s?A`<span class="npm-flag-tag is-warn" data-tooltip="${`An obfuscator's fingerprint: ${GO(s)}`}">Obfuscated</span>`:M}`}var ik=A`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5.5 2.5c-1.4 0-2 .6-2 2v1.6c0 .9-.5 1.6-1.5 1.9 1 .3 1.5 1 1.5 1.9v1.6c0 1.4.6 2 2 2M10.5 2.5c1.4 0 2 .6 2 2v1.6c0 .9.5 1.6 1.5 1.9-1 .3-1.5 1-1.5 1.9v1.6c0 1.4-.6 2-2 2"/></svg>`,ak=e=>e?.status===`loading`?`Pretty-printing…`:e?.status===`error`?`Couldn't pretty-print${e.of>1?` ${e.failed} of ${e.of} files`:``}: ${e.message}`:`Pretty-print`,ok=8,sk=4,ck=2,lk=30,uk=2,dk=`The server's copy is of another file than the one open.`,fk=`The server didn't pretty-print this file.`,pk=e=>!(e>=400&&e<500&&e!==429),mk=5e3,hk=3e5,gk=new Map;function _k(e,t,n,r){if(!t?.retry){gk.delete(e);return}let i=gk.get(e)??0;gk.set(e,i+1),setTimeout(()=>{n()&&r()?.()},Math.min(mk*2**i,hk))?.unref?.()}var vk=new Map,yk=0,bk=()=>yk,xk=new Map,Sk=(e,t)=>`${e.integrity}\0${t}`,Ck=new Map,wk=new Map,Tk=new WeakMap;function Ek(e,t,n,r){if(!(t?.managedId||t?.npm)||typeof r!=`string`)return!1;let i=Tk.get(e);return i||Tk.set(e,i=new Map),i.has(n)||i.set(n,WD(n,r,()=>JO(e,n,r))),i.get(n)}var Dk=!1,Ok=new Set,kk=new Set;function Ak(e,t){vk.delete(e),vk.set(e,t),Dk||(Dk=!0,kk=Ok,Ok=new Set,setTimeout(()=>{Dk=!1})),Ok.add(e),jk()}function jk(){for(let[e,t]of vk){if(vk.size<=ok)break;Ok.has(e)||kk.has(e)||t.status===`loading`||(vk.delete(e),xk.delete(e))}}var Mk=0,Nk=[];async function Pk(e){Mk<uk?Mk++:await new Promise(e=>{Nk.push(e)});try{return await e()}finally{let e=Nk.shift();e?e():Mk--}}async function Fk(e,t,n,r,i,a){let o;try{let e=a??await Ei(i),{text:t,source:s}=await Pk(()=>n.npm?Ub(n.npm.name,n.npm.version,r,e):Vb(n.managedId,r,e));o=s===e&&typeof t==`string`?{status:`ready`,text:t,hash:await Ei(t)}:{status:`error`,message:dk,retry:!0}}catch(n){if(n?.name===`AbortError`){vk.get(e)===t&&(vk.delete(e),xk.delete(e));return}o={status:`error`,message:n?.message??String(n),retry:pk(n?.status)}}if(vk.get(e)!==t)return;vk.set(e,o),yk++;let s=xk.get(e),c=o.status===`error`&&o.retry;c||xk.delete(e),_k(`file ${e}`,c?o:null,()=>vk.get(e)===o&&vk.delete(e),()=>xk.get(e)),s?.(),jk()}function Ik(){for(let[e,t]of Ck){if(Ck.size<=sk)break;t.rest&&Ck.delete(e)}}function Lk(e,t){let n=e.notifiers.get(t);e.notifiers.delete(t),n?.()}async function Rk(e,t,n,{npm:r}){let i=Bt(n),a;try{await Hb(r.name,r.version,async({path:e,source:n,text:r,status:a,message:o})=>{let s=i.get(e),c=typeof r==`string`&&typeof s==`string`&&n===await Ei(s)?{status:`ready`,text:r,hash:await Ei(r)}:typeof r==`string`?{status:`error`,message:dk,retry:!0}:{status:`error`,message:o,retry:pk(a)};t.copies.set(e,c),yk++,Lk(t,e)}),a={status:`error`,message:fk,retry:!1}}catch(n){if(n?.name===`AbortError`){Ck.get(e)===t&&Ck.delete(e);return}a={status:`error`,message:n?.message??String(n),retry:pk(n?.status)}}t.rest=a,yk++;for(let e of[...t.notifiers.keys()])Lk(t,e);Ik()}function zk(e,t,n,r,i){let a=e.integrity,o=Ck.get(a);return Ck.delete(a),o||(o={copies:new Map,notifiers:new Map,rest:null},Rk(a,o,e,t)),Ck.set(a,o),Ik(),r===Bt(e).get(n)?(o.copies.get(n)??o.rest)||(o.notifiers.set(n,i),{status:`loading`}):{status:`error`,message:dk,retry:!1}}function Bk(e,t,n,r,i){return F.bundleSourcePretty?t.npm?zk(e,t,n,r,i):Vk(e,n,r,i,t):null}function Vk(e,t,n,r,i=e){let a=Sk(e,t),o=vk.get(a),s=o??{status:`loading`};return Ak(a,s),(s.status===`loading`||s.retry)&&xk.set(a,r),o||Fk(a,s,i,t,n,e.fileHashes?.get(t)),s}var Hk=new Set;function Uk(e){e&&(Hk.size===0&&setTimeout(()=>{let e=[...Hk];Hk.clear();for(let t of e)t()},lk),Hk.add(e))}function Wk(){for(let[e,t]of wk){if(wk.size<=ck)break;t.ended&&wk.delete(e)}}async function Gk(e,t,n,r){let i={base:n,other:r},a=null;try{let e=async({side:e,path:n,source:r,text:a,status:o,message:s})=>{if(typeof a!=`string`&&pk(o))return;let c=Object.hasOwn(i,e)?i[e]:null,l=c&&Bt(c).get(n),u=typeof a==`string`&&typeof l==`string`&&r===(c.fileHashes?.get(n)??await Ei(l));t.copies.set(`${e}\0${n}`,u?{status:`ready`,text:a,hash:await Ei(a)}:typeof a==`string`?{status:`error`,message:dk,retry:!0}:{status:`error`,message:s,retry:pk(o)}),yk++,Uk(t.notify)};await(n.npm?Gb(n.npm.name,n.npm.version,r.npm.version,e):Wb(n.managedId,r.managedId,e))}catch(n){if(n?.name===`AbortError`){wk.get(e)===t&&wk.delete(e);return}a={status:`error`,message:n?.message??String(n),retry:pk(n?.status)}}Object.assign(t,{ended:!0,rest:a}),yk++,_k(`comparison ${e}`,a,()=>wk.get(e)===t&&wk.delete(e),()=>t.notify),Uk(t.notify),Wk()}function Kk(e,t,n,r,i,a){let o=`${e.integrity}\0${t.integrity}`,s=wk.get(o);wk.delete(o),s||(s={copies:new Map,notify:null,ended:!1,rest:null},Gk(o,s,e,t)),wk.set(o,s),Wk();let c=n===`base`?e:t;return i===Bt(c).get(r)?(s.notify=a,s.copies.get(`${n}\0${r}`)??s.rest??(s.ended?Vk(c,r,i,a):{status:`loading`})):{status:`error`,message:dk,retry:!1}}function qk(){if(F.bundleSourcePretty=!F.bundleSourcePretty,!F.bundleSourcePretty)return;let e=e=>e.status===`error`&&e.retry;for(let[t,n]of vk)e(n)&&vk.delete(t);for(let[t,n]of Ck)n.rest&&(e(n.rest)||[...n.copies.values()].some(e))&&Ck.delete(t);for(let[t,n]of wk)n.ended&&(n.rest?e(n.rest):[...n.copies.values()].some(e))&&wk.delete(t)}function Jk(e,t,n){return e?.bundle===t&&e.files[e.at]===n?e:{bundle:t,files:n?[n]:[],at:0}}function Yk(e,t){if(e.files[e.at]===t)return e;let n=[...e.files.slice(0,e.at+1),t];return{...e,files:n,at:n.length-1}}function Xk(e,t){return{...e,at:Math.max(0,Math.min(e.at+t,e.files.length-1))}}function Zk(e){let t=e.slice(e.lastIndexOf(`/`)+1);return t===`package-lock.json`||t===`npm-shrinkwrap.json`?`npm`:t===`pnpm-lock.yaml`||/^pnpm-lock\..+\.yaml$/u.test(t)?`pnpm`:t===`yarn.lock`?`yarn`:null}var Qk=4,$k=new Map;function eA(e,t,n,r,i){if(!F.bundleSourceLockfile)return null;let a=Zk(t);if(a===null)return null;let o=`${e.integrity}\0${t}`,s=$k.get(o)??{status:`loading`};$k.delete(o),$k.set(o,s);for(let e of $k.keys())$k.size>Qk&&$k.delete(e);if(s.status===`loading`&&!s.started){s.started=!0;let e=r.get(`${t.slice(0,t.lastIndexOf(`/`)+1)}package.json`);import(`./chunk-IZ7POWI3.js`).then(({readLockfile:t})=>Object.assign(s,{status:`ready`,lockfile:{id:o,...t(a,n,{manifest:e})}})).catch(e=>Object.assign(s,{status:`error`,message:e instanceof Error?e.message:String(e)})).finally(i)}return s}function tA(){F.bundleSourceLockfile=!F.bundleSourceLockfile;for(let[e,t]of $k)t.status===`error`&&$k.delete(e)}var nA=e=>e?.status===`loading`?`Reading the lockfile…`:e?.status===`error`?`Couldn't read the lockfile: ${e.message}`:`View lockfile`,rA=e=>`link:${e}`,iA=e=>e===`.`?`__own__`:e;function aA(e){let t=Object.entries(e?.importers??{}),n=Object.entries(e?.packages??{}),r=new Map([...t.map(([e])=>[rA(e),iA(e)]),...n.map(([e,t])=>[e,t.name])]),i=new Map([...t.map(([e,t])=>[rA(e),t]),...n]),a=e=>r.has(e)?e:e.startsWith(`link:`)&&r.has(e.slice(5))?e.slice(5):null,o=Object.create(null);for(let[e,{dependencies:t}]of i)o[e]={imports:[...new Set(t.map(a).filter(t=>t!==null&&t!==e))]};let s=[...i.keys()];if(s.length===0)return null;let c=[...new Set(t.map(([e])=>iA(e)))];return{treeData:o,files:s,ownCounts:new Map,transitiveCounts:null,severitySets:new Map,colorSets:new Map,fileFindings:new Map,options:{pkgOf:e=>r.get(e),packageInfoOf:e=>({version:i.get(e).version})},packagesOnly:!0,supportsLayers:!0,layerRoots:{roots:c,appImports:[]},ownSourcePackages:new Set(c),entryPackages:new Set(c),ownSourceFiles:new Set(t.map(([e])=>rA(e))),hasIssues:!1,issuesShown:!1,viewId:e.id??null}}var oA=[`graph`,`matrix`,`dependencies`],sA=class extends pa{static properties={lockfile:{attribute:!1}};static styles=da`:host{display:flex;flex-direction:column;min-height:0}.slot{display:flex;flex-direction:column;flex:1;min-height:0}graph-layout{flex:1;min-height:0;border:none;border-radius:0}.empty{color:var(--muted)}`;constructor(){super(),this.lockfile=null,this._prep=null,this._graphState=null,this._attachment=0,this._bundleLayout=null,this.addEventListener(`click`,e=>this._click(e)),this.addEventListener(`input`,e=>this._input(e))}connectedCallback(){super.connectedCallback(),this.hasUpdated&&this._prep&&this._attach()}disconnectedCallback(){super.disconnectedCallback(),this._detach()}willUpdate(e){e.has(`lockfile`)&&(this._prep=aA(this.lockfile),this._prep||this._detach(),w.selected=null,w.solo=null,w.focusedPkg=null)}render(){return this.lockfile?this._prep?A`<div class="slot"></div>`:A`<p class="empty">No packages.</p>`:null}updated(e){e.has(`lockfile`)&&this._prep&&this._attach()}_detach(){this._attachment++,this._graphState&&w.graphState===this._graphState&&ar(),this._graphState=null,this._bundleLayout!==null&&(w.bundleLayout=this._bundleLayout),this._bundleLayout=null}async _attach(){this._bundleLayout??=w.bundleLayout,w.bundleLayout=w.lockfileLayout;let e=this.renderRoot.querySelector(`.slot`);if(!e)return;let t=++this._attachment;if(await CT().catch(()=>{}),t!==this._attachment||!this.isConnected)return;let n={showBundleLayouts:!0,layouts:oA,hideAllFiles:!0};await wT(e,this._prep,n,()=>this._refreshSidebar(),()=>this._refreshTopPkgs()),this._graphState=w.graphState}get _host(){return this.renderRoot.querySelector(`graph-layout`)}_refreshSidebar(){ST()?.refreshSidebar(this._prep,{},this._host)}_refreshTopPkgs(){ST()?.refreshTopPkgs(this._prep,this._host)}_click(e){let t=t=>e.composedPath().find(e=>e.matches?.(t)),n=t(`[data-g2-layout]`)?.dataset.g2Layout,r=t(`[data-g2-pkg]`)?.dataset.g2Pkg;if(n!==void 0)oA.includes(n)&&n!==w.bundleLayout&&(w.lockfileLayout=w.bundleLayout=n,w.selected=null,w.solo=null,w.layoutCache=null,ar(),this._attach());else if(r!==void 0)w.solo=w.solo===r?null:r,this._refreshSidebar(),this._refreshTopPkgs(),w.graphState?.requestDraw?.();else if(t(`#g2-path-filter-clear`)){w.pathFilter=``;let e=this._host?.shadowRoot?.querySelector(`#g2-path-filter`);e&&(e.value=``),w.graphState?.requestDraw?.()}else if(t(`#g2-fullscreen`))document.body.classList.toggle(`report-fullscreen`);else return;e.stopPropagation()}_input(e){let t=e.composedPath()[0];t?.id===`g2-path-filter`&&(w.pathFilter=t.value,w.graphState?.requestDraw?.(),e.stopPropagation())}};customElements.define(`lockfile-graph`,sA);function cA({title:e,count:t,extra:n=M,tools:r=M,body:i,list:a=!1,className:o=``}){return A`<section class="${`bundles-overview-col ${o}`}"><header class="bundles-overview-col-head"><span class="bundles-overview-col-title">${e} <span class="bundles-overview-col-count">${t}</span>${n}</span>${r}</header><div class="${`bundles-overview-col-body${a?` bundles-overview-col-body--list`:``}`}">${i}</div></section>`}var lA=1024,uA=1024*lA,dA=[`tiny`,`small`,`medium`,`large`,`gigantic`],fA={dependencies:[1,4,11,26],files:[3,24,192,1536],lines:[400,3200,25600,204800],unpacked:[16*lA,128*lA,uA,8*uA]};function pA(e,t){let n=fA[e].findIndex(e=>t<e);return dA[n===-1?dA.length-1:n]}function mA(e,t,n){return A`<span class="${`npm-sized is-${pA(e,t)}`}">${n}</span>`}var hA=[`preinstall`,`install`,`postinstall`];function gA(e,t=!1){let n={...e};return!n.preinstall&&!n.install&&t&&(n.install=`node-gyp rebuild`),hA.filter(e=>typeof n[e]==`string`).map(e=>[e,n[e]])}function _A(e,t=[]){return gA(e?.installScripts,!!(t&&(t instanceof Set?t.has(`binding.gyp`):t.includes(`binding.gyp`))))}function vA(e,t=!1){let n=null;try{n=typeof e==`string`?JSON.parse(e.replace(/^\uFEFF/u,``)):null}catch{}return gA(n&&typeof n==`object`&&n.scripts&&typeof n.scripts==`object`?n.scripts:{},t)}var yA=12096e5,bA=(e,{minimumReleaseAge:t=yA,now:n=Date.now()}={})=>t>0&&typeof e==`string`&&n-Date.parse(e)<t,xA=72,SA={top:6,right:0,bottom:18,left:40},CA=24,wA=4,TA=new Intl.NumberFormat(`en`,{notation:`compact`,maximumFractionDigits:1}),EA=new Intl.NumberFormat(`en`),DA=e=>new Intl.DateTimeFormat(`en`,{...e,timeZone:`UTC`}).format,OA=DA({month:`short`,day:`numeric`}),kA=DA({month:`short`,day:`numeric`,year:`numeric`}),AA=DA({month:`short`,year:`numeric`}),jA=DA({month:`long`,year:`numeric`}),MA=e=>e===1/0?`unpopular`:`top ${e.toLocaleString(`en`)}`,NA=(e,t)=>{let n=t&&ye(e);return A`<dd class="${`npm-downloads-tier ${n?`is-mid`:_e(e)}`}" data-tooltip="${n?t:M}">${MA(e)}</dd>`},PA={week:{label:`Weekly`,of:e=>fe(e).slice(-52),name:e=>`${OA(e.from)} \u2013 ${kA(e.to)}`},month:{label:`Monthly`,of:pe,name:e=>jA(e.from)}},FA=(e,t)=>`${EA.format(e)} downloads, ${t}`;function IA(e){let t=pe(e).at(-1);return t?LA(t):null}var LA=({total:e,from:t})=>({total:e,month:jA(t)});function RA(e){if(!(e>0))return 1;let t=10**Math.floor(Math.log10(e));return[1,2,2.5,5,10].map(e=>e*t).find(t=>t>=e)}var zA=class extends pa{static properties={downloads:{attribute:!1},status:{},known:{attribute:!1},_width:{state:!0},_at:{state:!0},_unit:{state:!0}};createRenderRoot(){return this}constructor(){super(),this.downloads=null,this.status=`loading`,this.known=null,this._width=0,this._at=null,this._unit=`week`,this._resize=new ResizeObserver(([e])=>{this._width=Math.floor(e.contentRect.width)})}connectedCallback(){super.connectedCallback(),this._resize.observe(this)}disconnectedCallback(){super.disconnectedCallback(),this._resize.disconnect()}_key(e){let t=this._periods.length-1,n={ArrowLeft:-1,ArrowRight:1,Home:-t-1,End:t+1};e.key in n&&(e.preventDefault(),this._at=Math.min(t,Math.max(0,(this._at??t)+n[e.key])))}willUpdate(e){let t=PA[this._unit],{downloads:n}=this;if((e.has(`downloads`)||e.has(`_unit`))&&(this._periods=t.of(n)),e.has(`downloads`)){this._latest=n==null?null:Object.fromEntries(Object.entries(PA).map(([e,{of:t,name:r}])=>{let i=t(n).at(-1);return[e,{total:i?.total??0,tooltip:i&&FA(i.total,r(i))}]})),this._tier=he(n);let e=n?.days.slice(-365),t=e?.reduce((e,t)=>e+t,0);this._year=n==null?null:{total:t,tooltip:FA(t,`${kA(de(n.start,n.days.length-e.length))} \u2013 ${kA(Date.parse(n.end))}`)}}(e.has(`downloads`)||e.has(`_unit`)||e.has(`_width`))&&(this._shape=this._shapeOf(t))}_shapeOf(e){let t=this._periods,n=this._width;if(t.length===0||n<=SA.left+SA.right)return null;let r=n-SA.left-SA.right,i=xA-SA.bottom,a=RA(Math.max(...t.map(e=>e.total))),o=e=>i-e/a*(i-SA.top),s=e=>e.toFixed(1),c=this._unit===`month`,l=r/(c?t.length:Math.max(t.length-1,1)),u=c?e=>SA.left+(e+.5)*l:e=>SA.left+(t.length>1?e*l:r/2),d=t.length-1,f=e=>Math.min(d,Math.max(0,(c?Math.floor:Math.round)((e-SA.left)/l))),p=AA(t[0].from),m=t.at(-1),h;if(c){let e=Math.min(CA,l*.7)/2;h={bars:t.map(({total:t},n)=>{let[r,a,c]=[u(n)-e,u(n)+e,o(t)],l=Math.min(wA,e,i-c);return`M${s(r)},${i}V${s(c+l)}Q${s(r)},${s(c)} ${s(r+l)},${s(c)}H${s(a-l)}Q${s(a)},${s(c)} ${s(a)},${s(c+l)}V${i}Z`})}}else{let e=t.map((e,t)=>`${t===0?`M`:`L`}${s(u(t))},${s(o(e.total))}`).join(``);h={line:e,area:`${e}L${s(u(d))},${i}L${s(u(0))},${i}Z`}}return{x:u,y:o,bottom:i,indexAt:f,first:p,last:AA(m.to),...h,ticks:[[0,TA.format(0)],[a,TA.format(a)]],label:`${e.label} downloads over the last year, from ${p} to ${AA(m.to)}; the latest ${this._unit}: ${FA(m.total,e.name(m))}.`}}_stat(e,t,n){return A`<div class="npm-stat"><dt class="sr-only">${e}</dt><dd data-tooltip="${t?.tooltip||M}">${this._figure(t,n)}</dd></div>`}_figure(e,t){return A`${e?TA.format(e.total):this.status===`loading`?`…`:`—`}<span class="npm-stat-per">/${t}</span>`}_latestStat(){let e=this._latest?.[this._unit];return A`<div class="npm-stat"><dt class="sr-only">${PA[this._unit].label} downloads</dt><dd class="npm-stat-units" data-tooltip="${e?.tooltip||M}">${Object.keys(PA).map(e=>A`<span class="${e===this._unit?``:`is-held`}" aria-hidden="${e===this._unit?M:`true`}">${this._figure(this._latest?.[e],e)}</span>`)}</dd></div>`}_controls(e){return A`<div class="npm-downloads-controls"><span class="bundles-overview-sort" role="group" aria-label="Downloads by">${Object.entries(PA).map(([e,{label:t}])=>A`<button type="button" aria-pressed="${String(this._unit===e)}" @click="${()=>{this._unit=e,this._at=null}}">${t}</button>`)} </span><span class="npm-downloads-readout" aria-live="polite">${e?A`<strong>${EA.format(e.total)}</strong> <span>${PA[this._unit].name(e)}</span>`:M}</span></div>`}render(){let e=this.downloads!=null||this.status!==`ready`,t=this._at===null?null:this._periods[this._at]??null;return A`<div class="npm-downloads-head"><dl class="npm-stats">${this._latestStat()} ${this._stat(`Downloads, last 12 months`,this._year,`year`)} ${this._tier?A`<div class="npm-stat"><dt class="sr-only">Popularity</dt>${NA(this._tier,this.known)}</div>`:M}</dl>${e?this._controls(t):M}</div>${e?this._plot(t):M}`}_plot(e){let t=this._shape;if(!t)return A`<div class="npm-downloads-plot" style="${E({height:`${xA}px`})}"></div>`;let n=this._width;return A`<div class="npm-downloads-plot" style="${E({height:`${xA}px`})}" tabindex="0" role="img" aria-label="${t.label}" @pointermove="${e=>{this._at=t.indexAt(e.offsetX)}}" @pointerleave="${()=>{this._at=null}}" @keydown="${e=>this._key(e)}" @blur="${()=>{this._at=null}}"><svg width="${n}" height="${xA}" viewBox="0 0 ${n} ${xA}" aria-hidden="true">${t.ticks.map(([e,r])=>j`<line class="npm-downloads-grid" x1=${SA.left} x2=${n-SA.right} y1=${t.y(e)} y2=${t.y(e)}></line>
167
- <text class="npm-downloads-tick" x=${SA.left-6} y=${t.y(e)} dy="0.32em" text-anchor="end">${r}</text>`)} ${t.bars?t.bars.map((e,t)=>j`<path class=${`npm-downloads-bar${t===this._at?` is-at`:``}`} d=${e}></path>`):j`<path class="npm-downloads-area" d=${t.area}></path><path class="npm-downloads-line" d=${t.line}></path>`}<text class="npm-downloads-tick" x="${SA.left}" y="${xA-4}">${t.first}</text><text class="npm-downloads-tick" x="${n-SA.right}" y="${xA-4}" text-anchor="end">${t.last}</text>${e&&!t.bars?j`<line class="npm-downloads-crosshair" x1=${t.x(this._at)} x2=${t.x(this._at)} y1=${SA.top} y2=${t.bottom}></line>
168
- <circle class="npm-downloads-dot" cx=${t.x(this._at)} cy=${t.y(e.total)} r="4"></circle>`:M}</svg></div>`}};customElements.get(`npm-downloads-chart`)||customElements.define(`npm-downloads-chart`,zA);function BA(e,t){let n=VA(e);return[n,`${n}.js`,`${n}.cjs`,`${n}.mjs`,`${n}/index.js`].find(e=>e&&t?.has(e))}var VA=e=>e.replace(/^(?:\.\/)+/u,``).replace(/\/+$/u,``),HA=/^licen[cs]e(?:-[\w.]+)?(?:\.(?:md|txt))?$/iu;function UA(e,t){let n=t.filter(e=>HA.test(e)),r=e=>{let t=e.toLowerCase().match(/^[a-z]+/u)?.[0]??``;return n.find(e=>{let n=e.toLowerCase().match(/^licen[cs]e-([a-z]+)/u)?.[1];return n!==void 0&&t!==``&&(n.startsWith(t)||t.startsWith(n))})??(n.length===1?n[0]:null)};return e.split(/(\s+(?:OR|AND|WITH)\s+|[()])/u).filter(Boolean).map(e=>({text:e,file:/^[\w.+-]+$/u.test(e)&&!/^(?:OR|AND|WITH)$/u.test(e)?r(e):null}))}var WA=e=>e?.replace(/\.git$/u,``),GA=new Map([[`github`,{label:`GitHub`,domain:`github.com`,protocols:[`git:`,`http:`,`git+ssh:`,`git+https:`,`ssh:`,`https:`],repo({pathname:e,hash:t}){let[,n,r,i,a]=e.split(`/`,5);return(!i||i===`tree`)&&n&&WA(r)?[n,WA(r),i?a:t.slice(1)]:null}}],[`bitbucket`,{label:`Bitbucket`,domain:`bitbucket.org`,protocols:[`git+ssh:`,`git+https:`,`ssh:`,`https:`],repo({pathname:e,hash:t}){let[,n,r,i]=e.split(`/`,4);return i!==`get`&&n&&WA(r)?[n,WA(r),t.slice(1)]:null}}],[`gitlab`,{label:`GitLab`,domain:`gitlab.com`,protocols:[`git+ssh:`,`git+https:`,`ssh:`,`https:`],repo({pathname:e,hash:t}){let n=e.slice(1),r=n.lastIndexOf(`/`);return n.includes(`/-/`)||n.includes(`/archive.tar.gz`)?null:n.slice(0,Math.max(r,0))&&WA(n.slice(r+1))?[n.slice(0,r),WA(n.slice(r+1)),t.slice(1)]:null}}],[`gist`,{label:`Gist`,domain:`gist.github.com`,protocols:[`git:`,`git+ssh:`,`git+https:`,`ssh:`,`https:`],repo({pathname:e,hash:t}){let[,n,r,i]=e.split(`/`,4);return i!==`raw`&&(n||r)?[r?n:null,WA(r||n),t.slice(1)]:null}}],[`sourcehut`,{label:`SourceHut`,domain:`git.sr.ht`,protocols:[`git+ssh:`,`https:`],repo({pathname:e,hash:t}){let[,n,r,i]=e.split(`/`,4);return i!==`archive`&&n&&WA(r)?[n,WA(r),t.slice(1)]:null}}]]),KA=new Map([...GA.values()].map(e=>[e.domain,e])),qA=new Set([`git+ssh:`,`ssh:`,`git+https:`,`git:`,`http:`,`https:`,`git+http:`,...[...GA.keys()].map(e=>`${e}:`)]);function JA(e){let t=e.indexOf(`#`),n=e.indexOf(`/`);return n>0&&!e.startsWith(`.`)&&(t>-1?e[t-1]!==`/`:!e.endsWith(`/`))&&![/\s/u.exec(e)?.index??-1,e.indexOf(`@`),e.indexOf(`:`),e.indexOf(`/`,n+1)].some(e=>e>-1&&!(t>-1&&e>t))}var YA=e=>{try{return new URL(e)}catch{return null}};function XA(e){let t=e.indexOf(`@`),n=e.indexOf(`:`),r=qA.has(e.slice(0,n+1))||t>-1&&t<n?e:t>-1?`git+ssh://${e}`:e.indexOf(`//`)===n+1?e:`${e.slice(0,n+1)}//${e.slice(n+1)}`;if(YA(r))return YA(r);let i=e=>{let t=r.indexOf(`#`);return r.lastIndexOf(e,t>-1?t:1/0)},a=i(`:`)>i(`@`)?`${r.slice(0,i(`:`))}/${r.slice(i(`:`)+1)}`:r;return a.lastIndexOf(`:`,a.indexOf(`#`)>-1?a.indexOf(`#`):1/0)===-1&&!a.includes(`//`)&&(a=`git+ssh://${a}`),YA(a)}function ZA(e){if(!e)return null;let t=XA(JA(e)?`github:${e}`:e);if(!t)return null;let n=GA.get(t.protocol.slice(0,-1)),r=n??KA.get(t.hostname.replace(/^www\./u,``)),i=n?[t.pathname.replace(/^\/?[^@]*@|^\//u,``),t.hash.slice(1)]:r?.protocols.includes(t.protocol)&&r.repo(t);try{return i?(i.forEach(e=>e&&decodeURIComponent(e)),r):null}catch{return null}}function QA(e){let t=String(e??``).trim();if(/^(?:[.]|~\/|\/|[a-z]:|file:)/iu.test(t))return`path`;if(/^npm:/iu.test(t)||!/[/:]|[.](?:tgz|tar\.gz|tar)$/iu.test(t))return`registry`;let n=ZA(t);if(n)return n.label;if(/^(?:git\+)?[a-z]+:/iu.test(t)){let e=/^git\+ssh:\/\/([^:#]+:[^#]+(?:\.git)?)(?:#.*)?$/iu.exec(t);if(t.startsWith(`git+ssh:`)&&e&&!/:\d+(?:\/|$)/u.test(e[1]))return`git`;let n=YA(t)?.protocol;return/^(?:git|git\+(?:https?|rsync|ftp|file|ssh)):$/u.test(n)?`git`:/^https?:$/u.test(n)?`URL`:null}return/\/|[.](?:tgz|tar\.gz|tar)$/iu.test(t)?`path`:`registry`}function $A(e){let[,t,n=``]=/^npm:((?:@[^/@]+\/)?[^/@]+)(?:@(.*))?$/iu.exec(String(e??``).trim())??[];return t?{name:t,spec:n}:null}var ej=e=>QA(e)===`registry`,tj=[[`dependencies`,null],[`peerDependencies`,`peer`],[`optionalDependencies`,`optional`]];function nj(e){let t=[];for(let[n,r]of tj)for(let[i,a]of Object.entries(e?.[n]??{})){let e=$A(a)?.name??i;t.push({name:i,range:a,kind:r,opens:ei(e)&&ej(a)?e:null})}return t.toSorted((e,t)=>e.name.localeCompare(t.name)||(e.kind??``).localeCompare(t.kind??``))}function rj(e,t){let n=e=>new Map(nj(e).map(e=>[`${e.kind??``}\0${e.name}`,e])),r=n(t),i=n(e),a=[],o=[],s=[];for(let[e,{name:t,kind:n,range:a,opens:c}]of i){let i=r.get(e);i?i.range!==a&&o.push({key:e,name:t,kind:n,from:a,to:i.range,opens:i.opens}):s.push({key:e,name:t,kind:n,range:a,opens:c})}for(let[e,{name:t,kind:n,range:o,opens:s}]of r)i.has(e)||a.push({key:e,name:t,kind:n,range:o,opens:s});return{removed:s,added:a,changed:o}}var ij=(e=[])=>e.map(({check:e,label:t,tooltip:n})=>A`<span class="${`npm-dependency-flag is-${e}`}" data-tooltip="${n}">${t}</span>`);function aj(e,t=null,n=void 0){let r=Ej(`risk`,`${e.name}@${e.version}${t===null?``:`..${t}`}`,()=>Rb(e.name,e.version,t,{signal:n}),VO);return r.status===`ready`?r:null}function oj(e){return e.map(e=>{let t=e.format===`npm`?`npm`:[`sourcemap`,`sourcemaps`].includes(e.kind)||e.filename.toLowerCase().endsWith(`.map`)?`sourcemap`:`stasis`,n=t===`npm`?e.detail??``:t===`sourcemap`?`Sourcemap`:`Stasis`,r=[];if(e.date&&r.push(e.date),typeof e.size==`string`&&![``,`—`].includes(e.size)&&r.push(e.size),e.files){r.push(`${e.files.length.toLocaleString()} files`);let{lines:t}=Gr(e.files);t!=null&&r.push(`${t.toLocaleString()} LoC`)}else e.summary&&(Number.isSafeInteger(e.summary.files)&&e.summary.files>=0&&r.push(`${e.summary.files.toLocaleString()} files`),Number.isSafeInteger(e.summary.lines)&&e.summary.lines>=0&&r.push(`${e.summary.lines.toLocaleString()} LoC`));return{value:e.id,label:e.filename,displayLabel:e.displayLabel,detail:n,format:t,secondary:r.join(` · `),...e.dateWarning&&{secondaryWarning:e.dateWarning}}})}var sj=e=>e.displayLabel??e.label,cj=class extends xe{static properties={bundles:{attribute:!1},noun:{},versions:{type:Boolean,reflect:!0}};static styles=[xe.styles,da`.bundle-icon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 1.05rem;width:1.05rem;height:1.05rem;color:var(--muted)}.bundle-icon img,.bundle-icon svg{display:block;width:100%;height:100%;opacity:1;color:inherit}.option{gap:.5rem;padding-block:.25rem}.option-copy{gap:0}.option .name{line-height:1.3}.option .bundle-icon{flex-basis:1.35rem;width:1.35rem;height:1.35rem;margin-right:.15rem}.secondary{line-height:1.25;font-variant-numeric:tabular-nums}:host([versions]) .group{display:grid;gap:.1rem;font-size:.76rem;grid-template-columns:repeat(auto-fill,minmax(min(100%,calc(max(var(--option-width, 6ch),var(--secondary-width, 0ch) * .76) + 1rem)),1fr))}:host([versions]) .secondary{font-size:.76em}:host([versions]) .option{flex-wrap:wrap;align-content:start;gap:0 .8rem;padding:.3rem .45rem;font-variant-numeric:tabular-nums}:host([versions]) .option>svg,:host([versions]) .option .bundle-icon{display:none}:host([versions]) .option-copy{flex:0 1 auto}:host([versions]) .option .detail{font-size:.62rem;line-height:1.6}:host([versions]) .trigger .name:has(+.detail){flex:0 1 auto}:host([versions]) .trigger .detail{flex:1 1 0%;min-width:0;overflow:hidden;text-overflow:ellipsis;text-align:right}`];constructor(){super(),this.bundles=null,this.noun=`bundle`,this.versions=!1,this.label=`Choose bundle`,this.placeholder=`Choose bundle`}get searchLabel(){return`Search ${this.noun}s`}get optionsLabel(){return`${this.noun[0].toUpperCase()}${this.noun.slice(1)}s`}get noMatchesLabel(){return`No matching ${this.noun}s`}get emptyLabel(){return this.noun===`bundle`?`No stored bundles`:`No other ${this.noun}s`}get changeEvent(){return`bundle-change`}get menuWidth(){return this.versions?500:super.menuWidth}willUpdate(e){if(e.has(`bundles`)&&this.bundles&&(this.options=oj(this.bundles)),e.has(`options`)&&this.versions){let e=e=>Math.min(Math.max(0,...this.options.map(t=>e(t)?.length??0)),28);this.style.setProperty(`--option-width`,`${e(sj)}ch`),this.style.setProperty(`--secondary-width`,`${e(e=>e.secondary)}ch`)}}optionTooltip(e){return sj(e)}optionIcon(e){return e.format?A`<span class="bundle-icon" aria-hidden="true">${e.format===`npm`?k(Xi):e.format===`sourcemap`?k(Yi):A`<img src="./stasis.svg" alt="">`}</span>`:M}choices(){let e=this._query.normalize(`NFKC`).toLocaleLowerCase().trim().split(/\s+/u).filter(Boolean),t=this.options.filter(t=>e.every(e=>`${t.label} ${t.detail}`.normalize(`NFKC`).toLocaleLowerCase().includes(e))),n=this.versions?t:t.toSorted((e,t)=>e.label.localeCompare(t.label,void 0,{numeric:!0,sensitivity:`base`}));return{pinned:[],sections:[{label:null,options:n}],facets:[],showFacets:!1,count:n.length,total:this.options.length}}};customElements.get(`bundle-selector`)||customElements.define(`bundle-selector`,cj);var lj=/^https?:\/\/(?:www\.)?npmjs\.(?:com|org)\/package\/((?:@[^/]+\/)?[^/?#]+)(?:\/v\/([^/?#]+))?\/?(?:[?#].*)?$/u;function uj(e){let t=String(e??``).trim(),n=lj.exec(t),r,i=null;if(n)try{[r,i]=[decodeURIComponent(n[1]),n[2]?decodeURIComponent(n[2]):null]}catch{return null}else{let e=t.indexOf(`@`,1);[r,i]=e===-1?[t,null]:[t.slice(0,e),t.slice(e+1)]}return!ei(r)||i!==null&&!ti(i)?null:{name:r,spec:i}}var dj=(e,t=null)=>t==null?e:`${e}@${t}`;function fj(e,t){let n=new Set(t),r=[];for(let t of[e?.main,e?.module,`index.js`]){if(typeof t!=`string`)continue;let e=BA(t,n);e&&!r.includes(e)&&r.push(e)}return r}function pj(e){return{integrity:e.integrity,kind:`sourcemap`,name:`${e.name}@${e.version}`,size:e.tarballSize,npm:{name:e.name,version:e.version,private:e.private===!0,published:typeof e.published==`string`?e.published:null,manifest:e.manifest??{}}}}function mj(e,t){let n=zt(e,t.files);return{...n,npm:e.npm,npmEntries:fj(e.npm.manifest,n.json.sources),risk:()=>aj(e.npm)}}function hj(e,t=`overview`,n=null){return e?.npm?{view:`npm`,packageName:e.npm.name,packageSpec:e.npm.version,bundleTab:si.has(t)?t:`overview`,...n}:null}var gj=3,_j=new Map,vj=new Map,yj=1e4,bj=3e5,xj=null;function Sj(){let e=F.managedSession?`${F.managedSession.id}\0${F.managedSession.role}`:null;return e!==xj&&(_j.clear(),vj.clear(),xj=e),_j}function Cj(e,t){let n=Sj();for(n.delete(e.name),n.set(e.name,{entry:e,details:t});n.size>gj;)n.delete(n.keys().next().value)}async function wj(e,t,n){let r=Sj().get(`${e}@${t}`);if(r)return Cj(r.entry,r.details),r;let i=await _b(e,t,n),a=pj(i),o=mj(a,i);return a.npm.private||Cj(a,o),Tj(i),{entry:a,details:o}}function Tj({name:e,version:t,known:n}){if(!n||typeof n!=`object`)return;let r={stats:e,advisories:e,tags:`${e}@${t}`,socket:`${e}@${t}`,provenance:`${e}@${t}`};for(let[e,t]of Object.entries(r)){let r=`${e}\0${t}`;n[e]&&vj.get(r)?.status!==`ready`&&vj.set(r,{status:`known`,data:n[e]})}}function Ej(e,t,n,r){Sj();let i=`${e}\0${t}`,a=vj.get(i);if(a?.status===`known`){let e={status:`ready`,...r(a.data)};return vj.set(i,e),e}if(a&&!(a.status===`error`&&Date.now()>=a.retryAt))return a;let o={status:`loading`,failures:a?.failures??0};return vj.set(i,o),n().then(e=>({status:`ready`,...r(e)}),e=>{if(e?.name===`AbortError`)return null;let t=o.failures+1,n=Math.min(yj*2**(t-1),bj);return{status:`error`,failures:t,wait:n,retryAt:Date.now()+n}}).then(e=>vj.get(i)===o?e===null?(vj.delete(i),null):(vj.set(i,e),e.status===`error`&&setTimeout(()=>{vj.get(i)===e&&X()},e.wait).unref?.(),Oj(),null):null).catch(()=>{}),o}var Dj=!1;function Oj(){Dj||(Dj=!0,queueMicrotask(()=>{Dj=!1,X()}))}function kj(e,t=void 0){return Ej(`versions`,e,()=>Pb(e,{signal:t}),e=>({versions:e.versions??[],distTags:e.distTags??{},times:e.times??{},created:typeof e.created==`string`?e.created:null,private:e.private===!0,teamScoped:e.teamScoped===!0}))}function Aj(e={}){let t=new Map;for(let[n,r]of Object.entries(e))t.set(r,[...t.get(r)??[],n]);return t}function jj(e,t,n=Date.now()){let r=Aj(e.distTags);return(e.versions?.includes(t)?e.versions:[t,...e.versions??[]]).map(t=>{let i=e.times?.[t];return{id:t,detail:r.get(t)?.join(`, `)??``,...i&&{date:i.slice(0,10)},...i&&Mj(e,i,n)&&{age:Ij(i,n)}}})}function Mj(e,t,n=Date.now()){return e.status===`ready`&&bA(t,{minimumReleaseAge:e.teamScoped?0:yA,now:n})}var Nj=new Intl.RelativeTimeFormat(`en`,{numeric:`auto`});function Pj(e,t=Date.now()){let n=Math.floor((t-Date.parse(e))/864e5),r=n<60?Nj.format(-n,`day`):n<730?Nj.format(-Math.floor(n/30.44),`month`):Nj.format(-Math.floor(n/365.25),`year`);return`${kA(Date.parse(e))} \xB7 ${r}`}var Fj=new Intl.RelativeTimeFormat(`en`,{numeric:`always`});function Ij(e,t=Date.now()){let n=Math.max(0,Math.floor((t-Date.parse(e))/6e4));return n<60?Fj.format(-n,`minute`):n<1440?Fj.format(-Math.floor(n/60),`hour`):Fj.format(-Math.floor(n/1440),`day`)}var Lj=e=>kA(Date.parse(e)),Rj=e=>`Published on ${Lj(e)}`;function zj(e){let{name:t,version:n}=e.npm,r=kj(t),i=jj(r,n).map(({id:e,detail:n,date:r,age:i})=>({id:e,name:`${t}@${e}`,displayLabel:e,format:`npm`,detail:n,...r&&{date:r},...i&&{dateWarning:i}}));return{noun:`version`,base:n,widest:{name:`${t}@10.90.90`,detail:`latest`},pending:r.status===`loading`,error:r.status===`error`?`Couldn't list the versions of ${t}.`:null,options:i.filter(e=>e.id!==n),choices:i,name:r=>r===e.integrity||r===n?e.name:`${t}@${r}`,load:async e=>(await wj(t,e)).details,dependencies:eM,openDependency:oM,open:(e,n,r)=>Bj(t,e,`compare`,n?{compareSpec:n,...ri(r)}:{})}}function Bj(e=null,t=null,n=`overview`,r={}){!I()||!G?.active||G.navigate(e==null?{view:`npm`}:{view:`npm`,packageName:e,packageSpec:t,bundleTab:n,...r})}function Vj(e,t=null){F.currentView=`npm`,F.npmLookup=e,F.npmOpening=t,F.currentManagedTeam=null,F.currentManagedReport=null,document.body.classList.remove(`report-fullscreen`),X({animate:!1})}var Hj=/^(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)(?:-[\dA-Za-z-]+(?:\.[\dA-Za-z-]+)*)?$/u,Uj=new Set([`overview`,`compare`]);async function Wj(e,t,n){let{packageName:r,packageSpec:i=null,bundleTab:a=`overview`}=e;if(r==null)return Vj({input:F.npmLookup?.input??``,error:null}),n(),{view:`npm`};let o=dj(r,i),s=F.currentView===`bundles`&&F.bundleDetails?.npm,c=s&&F.bundles?.[0]?.npm?.name===r&&F.bundles[0].npm.version===i?F.bundles[0]:null,l=c?F.bundleDetails:null;if(!c){let e=i!=null&&Sj().has(`${r}@${i}`);!s&&!e&&(Vj({input:o,error:null},{name:r,spec:i,tab:a}),n());let u=new AbortController;kj(r,u.signal),i!=null&&Hj.test(i)&&Uj.has(a)&&aj({name:r,version:i},null,u.signal);try{({entry:c,details:l}=await wj(r,i??`latest`,{signal:Z_()}))}catch(e){return u.abort(),e?.name===`AbortError`||!t()?!1:(qj=null,Vj({input:o,error:e.message}),{view:`npm`})}if(!t()||!I())return u.abort(),!1}qj?.name===r&&qj.spec===i&&(Yj([o,...Jj().filter(e=>e!==o)]),qj=null),ar();let u=F.bundleCompare?.bundle===c.integrity?F.bundleCompare:null;return a===`review`&&(F.npmReview={bundle:c.integrity,...e.reviewPackage?{reviewPackage:e.reviewPackage,reviewSpec:e.reviewSpec??null}:{}}),F.bundles=[c],LK(c.integrity,a),a===`code`&&e.file!=null&&(F.bundleCodeFileRequest={bundle:c.integrity,file:e.file,...e.line==null?{}:{line:e.line},...e.endLine==null?{}:{endLine:e.endLine}}),a===`compare`&&e.compareSpec!=null?F.bundleCompare={bundle:c.integrity,target:e.compareSpec,mode:ni(e.compareMode)}:u&&(F.bundleCompare=u),F.bundleDetails=l,F.npmLookup={input:c.name,error:null},F.npmOpening=null,F.currentManagedTeam=null,F.currentManagedReport=null,F.reports=[],document.body.classList.remove(`report-fullscreen`),X({animate:!1}),n(),document.querySelector(`#main-content`)?.scrollTo({top:0}),hj(c,F.bundleDetailsTab,zx(F))}var Gj=10,Kj=()=>`deepview.npm.recent.${F.managedSession?.id??`anonymous`}`,qj=null;function Jj(){try{let e=JSON.parse(localStorage.getItem(Kj())??`[]`);return Array.isArray(e)?e.filter(e=>typeof e==`string`&&uj(e)):[]}catch{return[]}}function Yj(e){try{localStorage.setItem(Kj(),JSON.stringify(e.slice(0,Gj)))}catch{}}function Xj(e){Yj(Jj().filter(t=>t!==e)),X()}function Zj(e){let t=uj(e);if(!t){F.npmLookup={input:e??``,error:`Enter a package name, like lodash, @scope/name or name@1.2.3.`},X();return}qj=t,Bj(t.name,t.spec)}function Qj(e){e.preventDefault(),Zj(e.currentTarget.querySelector(`input[name="package"]`)?.value)}function $j(){let e=F.npmLookup??{input:``,error:null},t=[`admin`,`manage`].includes(F.managedSession?.role),n=Jj();return A`<section class="npm-lookup" aria-labelledby="npm-lookup-title"><header class="npm-lookup-head"><span class="npm-lookup-icon" aria-hidden="true">${k(Xi)}</span><h1 id="npm-lookup-title">npm packages</h1></header><p class="npm-lookup-intro">Open a published version to read its files, as its tarball has them. ${t?M:`You can open public packages, and private ones in npm scopes your teams list.`}</p><form class="npm-lookup-form" @submit="${Qj}"><input name="package" type="text" aria-label="Package" autocomplete="off" spellcheck="false" maxlength="500" placeholder="lodash, @scope/name@1.2.3 or an npmjs.com link" .value="${e.input??``}"> <button type="submit">Open</button></form><div class="npm-lookup-message">${e.error?A`<p class="npm-lookup-error" role="alert">${e.error}</p>`:M}</div>${n.length>0?A`<section class="npm-lookup-recent" aria-labelledby="npm-lookup-recent-title"><h2 id="npm-lookup-recent-title">Recent searches</h2><ul>${n.map(e=>A`<li><button type="button" class="npm-lookup-recent-open" @click="${()=>Zj(e)}">${e}</button> <button type="button" class="npm-lookup-recent-remove" aria-label="${`Remove ${e} from recent searches`}" @click="${()=>Xj(e)}">×</button></li>`)}</ul></section>`:M}</section>`}function eM(e,t){let n=rj(e?.npm?.manifest,t?.npm?.manifest),r=e?.npm&&t?.npm?aj(t.npm,e.npm.version)?.dependencies:null,i=[e?.npm,t?.npm],a=(e,t)=>e.map(e=>({flags:[],...t?.find(({key:t})=>t===e.key),...e}));return{removed:n.removed,added:a(n.added,r?.added).map(e=>({...e,compared:i})),changed:a(n.changed,r?.changed)}}var tM=e=>{let t=aj(e)?.dependencies;return new Map((t?.held??t?.added??[]).map(({key:e,flags:t})=>[e,t]))},nM=({kind:e,name:t})=>`${e??``}\0${t}`,rM=/^(?:[\^~]|=)?v?(\d+\.\d+\.\d+(?:-[\w.-]+)?(?:\+[\w.-]+)?)$/u,iM=e=>rM.exec($A(e)?.spec??e.trim())?.[1]??null,aM=e=>$A(e)?.name??null;function oM({opens:e,from:t,to:n}){if(!e)return;let r=n&&iM(n),i=t&&iM(t);!i||!r||i===r||aM(t)!==aM(n)?Bj(e):Bj(e,r,`compare`,{compareSpec:i})}function sM(e){let t=nj(e.npm.manifest);if(t.length===0)return M;let n=tM(e.npm);return cA({title:`Dependencies`,count:t.length,list:!0,body:A`<ul class="bundles-sources-list npm-dependency-list">${t.map(e=>{let{name:t,range:r,kind:i,opens:a}=e,o=n.get(nM(e))??[],s=A`<span class="npm-dependency-name"><span class="bundles-source-path" data-tooltip-truncated data-tooltip="${t}">${t}</span>${ij(o)}</span> ${i?A`<span class="npm-dependency-kind">${i}</span>`:M} <span class="bundles-source-size" data-tooltip-truncated data-tooltip="${r}">${r}</span>`;return A`<li>${a?A`<button type="button" class="bundles-source-row npm-dependency-row" data-npm-dependency="${a}" @click="${()=>Bj(a)}">${s}</button>`:A`<div class="bundles-source-row npm-dependency-row is-resource">${s}</div>`}</li>`})}</ul>`})}var cM=[[`source`,`Non-registry`,()=>`From elsewhere than npm's registry`],[`unimported`,`Unimported`,e=>`Imported by nothing of ${e}`]];function lM(e){let t=tM(e),n=Map.groupBy(nj(e.manifest).flatMap(e=>(t.get(nM(e))??[]).map(({check:t})=>({...e,check:t}))),({check:e})=>e);return cM.filter(([e])=>n.has(e)).map(([t,r,i])=>A`<span class="npm-extension is-warn npm-dependency-check" data-tooltip="${`${i(e.version)}: ${n.get(t).map(({name:e,range:t})=>`${e} ${t}`).join(`, `)}`}"><span>${r}</span><span class="npm-extension-count">${n.get(t).length}</span></span>`)}function uM(e,t){let{name:n,version:r}=e.npm,i=Ej(`tags`,`${n}@${r}`,()=>Lb(n,r),e=>({tags:Array.isArray(e.tags)?e.tags.filter(e=>typeof e==`string`&&e):[]}));return i.status!==`ready`||i.tags.length===0?M:A`<span class="bundle-origin-tags">${i.tags.map(e=>A`<a class="bundle-origin-link bundle-tag-link" href="${nt(t,e)}" target="_blank" rel="noopener noreferrer">${k(Gi)}<span>${e}</span></a>`)}</span>`}function dM(e,t,n=e){let r=n===e||n===`./${e}`?M:`./${e}`;return t?.has(e)?A`<button type="button" class="bundle-entry-point" data-bundle-view-source="${e}" data-tooltip="${r}">${n}</button>`:n}function fM(e,t,n){let r=e.knownAccounts?.includes(t);return A`<a class="${`bundle-origin-link npm-account ${r?`is-known`:`is-unknown`}`}" href="${`https://www.npmjs.com/~${encodeURIComponent(t)}`}" data-tooltip="${r?`Publishes one of npm's most downloaded packages`:`Unknown publisher`}" target="_blank" rel="noopener noreferrer"><span>${n}</span></a>`}var pM=/^\s*(Package no longer supported\.)\s+Contact Support at https:\/\/www\.npmjs\.com\/support for more info\.\s*$/u,mM=e=>e.replace(pM,`$1`);function hM(e,{prefix:t=``,githubFigures:n=M,provenance:r=M,provenanceNamesBuilder:i=!1,files:a=null}={}){let{manifest:o}=e.npm,s=o.github?.github,c=s?ot({repo:{github:s,directory:o.github.directory??``,commit:o.gitHead}})[0]:null,l=kj(e.npm.name),u=e.npm.published??l.times?.[e.npm.version];return A`<dl class="bundles-detail-meta npm-facts">${e.npm.private?A`<dt>Access</dt><dd>Private</dd>`:M} ${o.deprecated?A`<dt>Deprecated</dt><dd class="npm-deprecated">${mM(o.deprecated)}</dd>`:M} ${o.description?A`<dt>Description</dt><dd>${o.description}</dd>`:M} ${o.license?A`<dt>License</dt><dd>${UA(o.license,[...a??[]]).map(({text:e,file:t})=>dM(t,a,e))}</dd>`:M} ${o.author?A`<dt>Author</dt><dd class="bundle-origin-row">${o.authorAccount?A`${fM(o,o.authorAccount,o.author)}${o.author===o.authorAccount?M:A`<span class="npm-publisher">~${o.authorAccount}</span>`}`:o.author}</dd>`:M} ${o.publisher&&o.publisher!==o.authorAccount?A`<dt>Publisher</dt><dd class="bundle-origin-row">${fM(o,o.publisher,`~${o.publisher}`)}</dd>`:o.trustedPublisher&&!i?A`<dt>Publisher</dt><dd class="npm-trusted-publisher">${o.trustedPublisher}</dd>`:M} ${u?A`<dt>Published</dt><dd>${Mj(l,u)?A`<span class="npm-recent">${Pj(u)}</span>`:Pj(u)}</dd>`:M} ${c?A`<dt>GitHub</dt><dd class="bundle-origin-row"><a class="bundle-origin-link" href="${c.href}" target="_blank" rel="noopener noreferrer">${k(ia)}<span>${c.text}</span></a> ${n}</dd><dt>Commit</dt><dd class="bundle-origin-row">${c.commit?A`<a class="bundle-origin-link bundle-commit-link" href="${c.commit.href}" data-tooltip="${c.commit.hash}" data-tooltip-icon="commit" target="_blank" rel="noopener noreferrer">${k(aa)}<span>${c.commit.text}</span></a> ${uM(e,s)}`:A`<span class="npm-commit-missing">Not recorded at publish</span>`}</dd>`:M} ${r===M?M:A`<dt>Provenance</dt><dd class="bundle-origin-row">${r}</dd>`} ${o.homepage&&/^https?:\/\//iu.test(o.homepage)?A`<dt>Homepage</dt><dd><a class="bundle-origin-link" href="${o.homepage}" target="_blank" rel="noopener noreferrer"><span>${o.homepage}</span></a></dd>`:M}<dt>Integrity</dt><dd class="mono bundle-integrity" data-tooltip-truncated data-tooltip="${e.integrity}">${e.integrity}</dd>${t?A`<dt>Prefix</dt><dd class="mono">${t}</dd>`:M}</dl>`}var gM=(e,t)=>e.split(/(\s+)/u).map(e=>{let n=e.replace(/^\.\//u,``);return t?.has(n)?dM(n,t,e):e});function _M(e,t=null,n=null){let{manifest:r}=e.npm,i=[`main`,`module`,`types`].filter(e=>typeof r[e]==`string`).map(e=>({label:`${e[0].toUpperCase()}${e.slice(1)}`,path:r[e],file:BA(r[e],t)??VA(r[e])})),a=i.find(e=>e.label===`Main`),o=i.find(e=>e.label===`Module`);a&&o&&a.file===o.file&&(a.label=`Main, Module`,i.splice(i.indexOf(o),1));let s=Object.keys(r.bin??{}),c=_A(r,t),l=nj(r).length;return A`${i.map(({label:e,path:r,file:i})=>A`<dt>${e}</dt><dd class="mono"><span class="npm-entry-point">${qe(i,Ge(n,i))}${dM(i,t,r)}</span></dd>`)} ${r.type?A`<dt>Type</dt><dd class="mono">${r.type}</dd>`:M} ${s.length>0?A`<dt>Bin</dt><dd class="mono">${s.join(`, `)}</dd>`:M} ${r.engines?A`<dt>Engines</dt><dd class="mono">${Object.entries(r.engines).map(([e,t])=>`${e} ${t}`).join(`, `)}</dd>`:M} ${c.length>0||r.hasInstallScript?A`<dt>Install scripts</dt><dd class="npm-install-scripts">${c.length===0?`Yes`:c.map(([e,n])=>A`<div class="npm-install-script"><span class="npm-install-script-name">${e}</span><code>${gM(n,t)}</code></div>`)}</dd>`:M}<dt>Dependencies</dt><dd class="npm-dependencies-fact">${mA(`dependencies`,l,l===0?`None`:l)}${lM(e.npm)}</dd>`}var vM=class extends pa{static properties={name:{},version:{},tab:{},list:{attribute:!1}};createRenderRoot(){return this}constructor(){super(),this.name=``,this.version=``,this.tab=`overview`,this.list=null}render(){let e=jj(this.list?.status===`ready`?this.list:{versions:[],distTags:{}},this.version).map(({id:e,detail:t,date:n,age:r})=>({value:e,label:e,detail:t,secondary:n,...r&&{secondaryWarning:r}}));return A`<bundle-selector .options="${e}" .value="${this.version}" noun="version" versions label="${`Version of ${this.name}`}" placeholder="${this.version}" ?disabled="${e.length<=1}" aria-busy="${this.list?.status===`loading`?`true`:M}" @bundle-change="${e=>{e.detail.value!==this.version&&Bj(this.name,e.detail.value,this.tab)}}"></bundle-selector>`}};customElements.get(`npm-version-select`)||customElements.define(`npm-version-select`,vM);var yM=e=>A`<svg viewBox="0 0 16 16" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">${e}</svg>`,bM=[[`commits`,`Commits`,yM(j`<circle cx="8" cy="8" r="2.75"/><path d="M8 1v4.25M8 10.75V15"/>`)],[`issues`,`Issues`,yM(j`<circle cx="8" cy="8" r="6.25"/><circle cx="8" cy="8" r="1.6" fill="currentColor" stroke="none"/>`)],[`pulls`,`Pull requests`,yM(j`<circle cx="4" cy="3.5" r="1.75"/><circle cx="4" cy="12.5" r="1.75"/><circle cx="12" cy="12.5" r="1.75"/>
169
- <path d="M4 5.25v5.5M12 10.75V6.5a2 2 0 0 0-2-2H7.5M9 3 7.5 4.5 9 6"/>`)],[`agents`,`Agents`,yM(j`<rect x="2.25" y="4.5" width="11.5" height="9" rx="2.5"/><path d="M8 4.5V2M6 11h4"/>
170
- <circle cx="5.75" cy="8.25" r="1.1" fill="currentColor" stroke="none"/><circle cx="10.25" cy="8.25" r="1.1" fill="currentColor" stroke="none"/>`)],[`pulse`,`Pulse`,yM(j`<path d="M1 8.5h3l1.75-4.5 3 9 2-6.5 1.25 2H15"/>`)],[`replay`,`Replay`,yM(j`<path d="M5 3.25v9.5L12.75 8z"/>`)]],xM=new Set(bM.map(([e])=>e)),SM=`commits`;function CM(e){return xM.has(e)&&(SM=e),SM}var wM=e=>A`<div class="activity-views" role="group" aria-label="Activity">${bM.map(([t,n,r])=>A`<button type="button" data-bundle-tab="${t}" aria-label="${n}" aria-pressed="${String(t===e)}">${r}</button>`)}</div>`,TM=/^[a-f\d]{40}$/iu,EM=(e,t)=>e.repoId===t.repoId&&e.commit===t.commit&&(e.path??``)===(t.path??``),DM=({repo:e,path:t})=>t?`${e}/${t}`:e,OM=new Map,kM=new Map,AM=3e4,jM=null;function MM(){let e=F.managedSession?`${F.managedSession.id}\0${F.managedSession.role}`:null;return e!==jM&&(OM.clear(),kM.clear(),jM=e),OM}function NM(e,t){let n=MM(),r=n.get(e);if(r&&!r.stale&&!(r.status===`error`&&Date.now()>=r.retryAt))return r;let i=r?.stale?{status:`ready`,value:r.value}:{status:`loading`};return n.set(e,i),t().then(e=>({status:`ready`,value:e}),e=>e?.name===`AbortError`?null:{status:`error`,retryAt:Date.now()+AM}).then(t=>{if(n.get(e)!==i)return null;if(t?.status===`ready`||t&&i.status===`loading`)n.set(e,t);else if(i.status===`loading`)n.delete(e);else return null;return X(),null}).catch(()=>{}),i}function PM(e){let t=MM().get(e);t?.status===`ready`?MM().set(e,{...t,stale:!0}):MM().delete(e)}var FM=()=>NM(`repositories`,()=>yb()),IM=e=>NM(`refs\0${e}`,()=>bb(e)),LM=({repoId:e,repo:t})=>t??FM().value?.find(t=>t.repoId===e)?.fullName??null,RM=(e,t)=>kM.get(`${e}\0${t}`)??null;function zM(e,t,n){MM(),n&&kM.set(`${e}\0${t}`,n)}function BM(e,t=null){let{repoId:n,repo:r,commit:i,path:a}=e,o=Array.isArray(e.files)?e.files:[];return{integrity:`repository:${n}:${i}:${a}`,kind:`sourcemap`,name:`${DM({repo:r,path:a})}@${i.slice(0,7)}`,size:o.reduce((e,[,t])=>e+t,0),repository:{repoId:n,repo:r,commit:i,path:a,revision:t}}}var VM=/^readme(?:\.[^/]*)?$/iu;function HM(e,t=new Map){let n=e.filter(e=>VM.test(e)).toSorted((e,t)=>+!/\.md$/iu.test(e)-!/\.md$/iu.test(t)||e.localeCompare(t)),r=e.map(e=>({path:e,depth:e.split(`/`).length,size:t.get(e)??0})).toSorted((e,t)=>e.depth-t.depth||t.size-e.size||e.path.localeCompare(t.path)).map(({path:e})=>e);return[...new Set([...n,...e.filter(e=>e===`package.json`),...r])]}function UM(e,t){let n=zt(e,t.files),r=n.json.sources.filter((e,t)=>typeof n.json.sourcesContent[t]==`string`);return{...n,repository:e.repository,npmEntries:HM(r,n.fileSizes)}}function WM(e,t=`code`,n=null){if(!e?.repository)return null;let{repoId:r,commit:i,path:a}=e.repository;return{view:`repository-code`,repoId:r,commit:i,path:a,bundleTab:ci.has(t)?t:`code`,...n}}function GM({repoId:e,commit:t=null,ref:n=null,revision:r=void 0,path:i=``,repo:a=null,file:o=null,bundleTab:s=`code`,compare:c=null}){if(!I()||!G?.active)return;let l=c?.target?{...TM.test(c.target)?{compareCommit:c.target.toLowerCase()}:{compareTarget:c.target},...ri(c.mode)}:{};G.navigate({view:`repository-code`,repoId:e,commit:t,path:i,bundleTab:s,...n==null?{}:{ref:n},...r===void 0?{}:{revision:r},...a?{repo:a}:{},...o?{filePath:o}:{},...l})}var KM=e=>e.commit??e.ref??``,qM=e=>e?.name?e.kind===`commit`?e.name.toLowerCase():`${e.kind===`branch`?`heads`:`tags`}/${e.name}`:``;function JM({repoId:e,repo:t,path:n},r,i){let a=r.kind===`commit`&&TM.test(r.name)?r.name.toLowerCase():null;GM({repoId:e,repo:t,path:n,commit:a,bundleTab:i,...a?{}:{ref:qM(r),revision:r}})}function YM({repoId:e,repo:t,commit:n,revision:r},i,a){GM({repoId:e,repo:t,path:i,commit:n,bundleTab:a,...n?{}:{ref:qM(r),revision:r}})}function XM(e){F.currentView=`repository-code`,F.repositoryCodeOpening=e,F.currentManagedTeam=null,F.currentManagedReport=null,document.body.classList.remove(`report-fullscreen`),X({animate:!1})}function ZM(e){let t=F.repositoryCodePending;return t&&t.integrity===e?.integrity&&t.generation===W()?t.repository:null}var QM=new Set([`directory-too-large`,`directory-unreadable`,`no-directory`]);async function $M(e,t){if(QM.has(t?.code))try{let t=await xb(e.repoId,KM(e),e.path,{signal:Z_()}),n=(t.entries??[]).filter(e=>e.type===`dir`).toSorted((e,t)=>e.name.localeCompare(t.name));F.repositoryCodeOpening?.error&&EM(F.repositoryCodeOpening,e)&&n.length>0&&TM.test(t.commit)&&(F.repositoryCodeOpening={...F.repositoryCodeOpening,listing:{commit:t.commit.toLowerCase(),directories:n}},X())}catch{}}async function eN(e){try{let t=await xb(e.repoId,KM(e),``,{signal:Z_()});F.repositoryCodeOpening===e&&TM.test(t?.commit??``)&&(F.repositoryCodeOpening={...e,commit:t.commit.toLowerCase()},X({animate:!1}))}catch{}}function tN({repoId:e,repo:t,commit:n,ref:r,path:i,revision:a},o){GM({repoId:e,repo:t,path:i,commit:n,bundleTab:o,...n?{}:{ref:r??``,revision:a}})}async function nN(e,t,n){let{repoId:r,commit:i=null,path:a=``}=e,o=ci.has(e.bundleTab)?e.bundleTab:`code`;MM();let s=F.currentView===`bundles`&&F.bundles?.[0]?.repository&&F.bundleDetails?.integrity===F.bundles[0].integrity?F.bundles[0]:null,c=i&&s&&EM(s.repository,{repoId:r,commit:i,path:a})?s:null,l=c?F.bundleDetails:null,u=F.currentView===`repository-code`?F.repositoryCodeOpening:null;if(!c&&i&&u?.code===`directory-too-large`&&EM(u,{repoId:r,commit:i,path:a}))return XM({...u,tab:o}),{view:`repository-code`,repoId:r,commit:i,path:a,bundleTab:o};if(!c&&li.has(o)){let s=e.revision===void 0?i?kM.get(`${r}\0${i}`)??null:e.ref?null:{kind:`branch`,name:null}:e.revision;PM(`refs\0${r}`);let c=FM().value?.find(e=>e.repoId===r)?.fullName,l={repoId:r,commit:i,ref:e.ref??null,path:a,tab:o,repo:e.repo??c??null,revision:s,error:null},u=i;if(!u){XM(l),G?.showing(e),n();try{let t=await xb(r,KM(e),``,{signal:Z_()});u=TM.test(t?.commit??``)?t.commit.toLowerCase():null}catch(e){return e?.name===`AbortError`||!t()?!1:(XM({...l,error:e.message,code:e?.code??null}),{view:`repository-code`,repoId:r,commit:null,path:a,bundleTab:o})}if(!t())return!1;if(!u)return XM({...l,error:`The server answered with no commit.`}),{view:`repository-code`,repoId:r,commit:null,path:a,bundleTab:o}}return s&&kM.set(`${r}\0${u}`,s),XM({...l,commit:u,ref:null,historyOnly:!0}),n(),{view:`repository-code`,repoId:r,commit:u,path:a,bundleTab:o}}if(!c){let u=e.revision===void 0?i?kM.get(`${r}\0${i}`)??null:e.ref?null:{kind:`branch`,name:null}:e.revision,d=FM().value?.find(e=>e.repoId===r)?.fullName,f={repoId:r,commit:i,ref:e.ref??null,path:a,tab:o,repo:e.repo??d??null,revision:u,error:null};PM(`refs\0${r}`);let p=o===`treemap`,m=s&&!p?{integrity:s.integrity,generation:W(),repository:{repoId:r,repo:f.repo,commit:i,path:a,revision:u}}:null;m?(F.repositoryCodePending=m,X({animate:!1})):(XM(f),n()),p&&!i&&eN(f),G?.showing(e);let h;try{if(h=await vb(r,KM(e),a,{signal:Z_()}),h?.repoId!==r||i&&h.commit!==i||h.path!==a||!TM.test(h.commit??``))throw Error(`The server answered with another directory.`)}catch(e){if(e?.name===`AbortError`||!t())return!1;let n=!i&&e?.code===`directory-too-large`&&TM.test(e.commit??``)?e.commit.toLowerCase():i,s={...f,commit:n,error:e.message,code:e?.code??null};return XM(s),$M(s,e),{view:`repository-code`,repoId:r,commit:n,path:a,bundleTab:o}}finally{m&&F.repositoryCodePending===m&&(F.repositoryCodePending=null,F.currentView===`bundles`&&F.selectedBundle===m.integrity&&X({animate:!1}))}if(!t()||!I())return!1;u&&kM.set(`${r}\0${h.commit}`,u),c=BM(h,u),l=UM(c,h)}ar();let d=F.bundleCompare?.bundle===c.integrity?F.bundleCompare:null,f=e.compareCommit??e.compareTarget??null;return F.bundles=[c],LK(c.integrity,o),o===`compare`&&f?F.bundleCompare={bundle:c.integrity,target:f,mode:ni(e.compareMode)}:d&&o!==`compare`&&(F.bundleCompare=d),o===`code`&&e.file!=null?F.bundleCodeFileRequest={bundle:c.integrity,file:e.file,...e.line==null?{}:{line:e.line},...e.endLine==null?{}:{endLine:e.endLine}}:o===`code`&&typeof e.filePath==`string`&&(F.bundleCodeFileRequest={bundle:c.integrity,path:e.filePath}),F.bundleDetails=l,F.repositoryCodeOpening=null,F.currentManagedTeam=null,F.currentManagedReport=null,F.reports=[],document.body.classList.remove(`report-fullscreen`),X({animate:!1}),n(),document.querySelector(`#main-content`)?.scrollTo({top:0}),WM(c,F.bundleDetailsTab,zx(F))}function rN({revision:e,commit:t},n){if(e?.name)return e;let r=n?.status===`ready`?n.value:null;if(e)return{kind:`branch`,name:r?.defaultBranch??``};let i=e=>(Array.isArray(r?.[e])?r[e]:[]).flatMap(e=>e?.sha===t&&typeof e.name==`string`?[e.name]:[]),a=t?i(`branchCommits`):[],o=a.includes(r?.defaultBranch)?r.defaultBranch:a[0],s=t?i(`tagCommits`)[0]:null;return o?{kind:`branch`,name:o}:s?{kind:`tag`,name:s}:{kind:`commit`,name:t??``}}var iN=new Set([`issues`,`pulls`,`agents`,`pulse`]);function aN({how:e,kind:t,name:n}){let r=n.trim();return e===`kind`||e===`input`||!r||t===`commit`&&!/^[a-f\d]{7,40}$/iu.test(r)?null:{kind:t,name:r}}var oN=class extends pa{static properties={repository:{attribute:!1},tab:{type:String},repos:{attribute:!1},refs:{attribute:!1},_edit:{state:!0}};createRenderRoot(){return this}constructor(){super(),this.repository=null,this.tab=`code`,this.repos=null,this.refs=null,this._edit=null,this._shownKey=null}willUpdate(){let{repoId:e,commit:t,path:n,revision:r}=this.repository??{},i=JSON.stringify([e,t,n,r]);i!==this._shownKey&&(this._shownKey=i,this._edit=null)}revisionChanged({detail:e}){let t=aN(e);this._edit=t??{kind:e.kind,name:e.name},t&&JM(this.repository,t,this.tab)}render(){if(!this.repository)return M;let{repoId:e,repo:t,commit:n,path:r}=this.repository,i=this.repos?.status===`ready`?this.repos.value:[],a=i.map(e=>({value:e.repoId,label:e.fullName}));i.some(t=>t.repoId===e)||a.unshift({value:e,label:t??`Repository ${e}`});let o=this._edit??rN(this.repository,this.refs),s=iN.has(this.tab),c=r&&!s?r.split(`/`):[],l=t??i.find(t=>t.repoId===e)?.fullName,u=l&&n?`https://github.com/${[...l.split(`/`),`tree`,n,...c].map(encodeURIComponent).join(`/`)}`:null;return A`<repository-selector class="repository-code-repo" label="Repository" .options="${a}" .value="${e}" @repository-change="${t=>{t.detail.value!==e&&GM({repoId:t.detail.value,repo:a.find(e=>e.value===t.detail.value)?.label,bundleTab:this.tab})}}"></repository-selector>${c.length>0?A`<nav class="repository-code-path" aria-label="Directory"><button type="button" aria-label="Open the repository's root" @click="${()=>YM(this.repository,``,this.tab)}">/</button> ${c.map((e,t)=>t===c.length-1?A`<span aria-current="location">${e}</span>`:A`<button type="button" @click="${()=>YM(this.repository,c.slice(0,t+1).join(`/`),this.tab)}">${e}</button><span aria-hidden="true">/</span>`)}</nav>`:M} ${s?M:A`<revision-select class="repository-code-revision" .refs="${this.refs?.status===`ready`?this.refs.value:null}" .kind="${o.kind}" .name="${o.name}" .installTooltips="${e=>cr(e)}" @revision-change="${this.revisionChanged}"></revision-select>`} ${u&&!s?A`<a class="bundles-slide-commit" href="${u}" data-tooltip="${n}" data-tooltip-icon="commit" target="_blank" rel="noopener noreferrer" aria-label="${`View this directory at commit ${n.slice(0,7)} on GitHub`}">${k(aa)}<span>${n.slice(0,7)}</span></a>`:M}`}};customElements.get(`repository-code-source`)||customElements.define(`repository-code-source`,oN);function sN(e){let{listing:t}=e;return t?A`<div class="repository-code-listing"><p>Open one of its directories:</p><ul>${t.directories.map(n=>A`<li><button type="button" class="repository-code-directory" @click="${()=>YM({...e,commit:t.commit},n.path,e.tab)}">${Je}<span>${n.name}</span></button></li>`)}</ul></div>`:M}var cN=new Map,lN=new Set,uN=null;function dN(){let e=F.managedSession?`${F.managedSession.id}\0${F.managedSession.role}`:null;return e!==uN&&(cN.clear(),uN=e),cN}var fN=()=>{for(let e of lN)e.requestUpdate()};function pN({repoId:e,commit:t,path:n}){let r=`${e}\0${t}\0${n}`,i=dN().get(r);if(i)return i;let a={key:r,status:`loading`};return cN.set(r,a),wb(e,n,t).then(e=>{if(e?.files===null)throw Error(`GitHub has no files at this commit.`);if(!Array.isArray(e?.files)||!Array.isArray(e.sizes)||e.sizes.length!==e.files.length)throw Error(`The server answered with no files.`);let t=new Map(e.files.map((t,n)=>[t,Number.isSafeInteger(e.sizes[n])&&e.sizes[n]>0?e.sizes[n]:0]));return cN.get(r)===a&&cN.set(r,{key:r,status:`ready`,cut:e.cut===!0,details:{integrity:`tree\0${r}`,kind:`tree`,metadataOnly:!0,listedOnly:!0,fileSizes:t}}),null}).catch(e=>{cN.get(r)===a&&(e?.name===`AbortError`?cN.delete(r):cN.set(r,{key:r,status:`error`,error:e?.message||`Its files could not be read.`}))}).finally(fN),a}var mN=class extends pa{static properties={repository:{attribute:!1}};createRenderRoot(){return this}constructor(){super(),this.repository=null}connectedCallback(){super.connectedCallback(),lN.add(this)}disconnectedCallback(){lN.delete(this),super.disconnectedCallback()}render(){if(!this.repository?.commit)return M;let e=pN(this.repository);return e.status===`error`?A`<div class="bundles-slide-placeholder is-error"><p role="alert">${e.error}</p><button type="button" @click="${()=>{cN.delete(e.key),fN()}}">Retry</button></div>`:e.status===`ready`?A`${e.cut?A`<p class="history-note">Only the ${e.details.fileSizes.size.toLocaleString(`en-US`)} files nearest its root are drawn.</p>`:M}<bundle-treemap .details="${e.details}"></bundle-treemap>`:A`<div class="bundles-slide-placeholder" role="status">Reading its files…</div>`}};customElements.define(`repository-treemap`,mN);function hN(e){let t=ut(e),n=!1,r=null;async function i(){n=!0;try{await t.load()}catch(e){r=String(e?.message??e)}n=!1,X()}return e=>t.module?e():r?A`<div class="bundles-slide-placeholder is-error">Couldn’t load: ${r} <button type="button" @click="${()=>{r=null,X()}}">Retry</button></div>`:(n||i(),A`<div class="bundles-slide-placeholder">Loading…</div>`)}var gN=hN(`./activity.js`),_N=A`<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" aria-hidden="true" viewBox="0 75 405 400"><path fill="currentColor" d="m62 447.6 65.8-68.2c2.2-.9 22.7 12 28.2 14.1C295.4 446.8 399.2 263.6 285.1 172 184.3 91.1 41.1 191.5 82 315.6c3.9 12 10.8 21.7 15.4 33.2l-47.1 47C-32 294.9 7.4 142.3 126.3 91.3 241.3 42 374.4 112 398 234.5c29.4 152.7-116.5 274.9-262.7 223.6-15.9-5.6-17-10.6-34.9-10.6H62Z"/><path fill="#e02129" d="M190.1 181.8c128.8-15 141.2 170.8 26 182.6-126.4 12.9-137.9-169.5-26-182.6M209 236c-7.4 5.6-10.8-5.4-13-7.7-9.6-10.3-19.4-.8-14 1.7s9.5-.3 10.1 5.6-9 9.9-7.9 16.4c13.2-5.9 25.9-6.4 39.1 0 3.2-7.1-7.9-12.1-7.8-14.8.1-9.4 11.6-6.2 12.6-7.2 4.3-4.3-8.9-11.7-17.1-.6-1.3 1.8-1.4 6.3-1.9 6.6zm-7.6 14.3c-10.1-1.5-19.3 10-25 11.8s-23.2 1.5-14.9 16.3c3.9.8 5.1-13.1 13.3-9.4 1.9 13.1-2.8 8.7-9 12.2-10 5.7-8.1 20.2-1.3 12.8 2.7-3 1.5-9.6 10.3-7.7 1.3 15.9-.8 8.4-7.9 11.7-11.5 5.3-9 20.2-1.7 14.8s0-10.8 8.6-9.3c1 .2 5.8 10.8 12.4 14.5 13.7 7.9 35 5.5 44.8-7.6s1.6-6.5 1.8-6.7c4-3.1 11.3 4.6 11 9.2l5.5-1.5c2.2-3.1-1.6-8.2-3.9-10.3-7.6-6.8-13.5.9-11-14.8 9-2.6 8.4 8.7 9.4 9.4 6 4.2 8.4-7.8 1.5-13.2-7.4-5.8-13.2 3.6-10.9-13.4 7.4-1.3 8.3 3.2 9.4 9.4 8.3 1.4 6.9-7.2 3.1-11.8-4.5-5.5-10.5-2.6-15.7-4.7-1.3-.5-25.1-18.8-25.1-9.4v52.5c-1.5.6-4.7-1.4-4.7-2.3z"/><ellipse cx="206.6" cy="270" fill="#e02129" rx="74.6" ry="66.5"/><path fill="#fff" d="M200.6 250v55.5s.4 1 .5 1.1c1.1 1.8 3.7 1.8 4.9 0 .1-.2.5-1.1.5-1.3v-55.4a34 34 0 0 1 17.2 5.8c3.1 2.2 5.6 5.1 7.7 8.3 3.8.1 7.6-.5 11.3.8 5.2 1.8 9.6 7.5 9.6 13.1 0 4.2-5.8 5.3-7.3 1.5-.7-1.8-.3-3.2-1.7-5-.8-1-3-2.7-4.3-2.7h-4.5c1.1 4.1.8 8.4.8 12.6.1.1 1.7-.1 2-.1 7.3 0 13.9 6 14.4 13.5.3 5.3-6.3 6-7.5 1.8-.6-2.1-.3-3.5-2-5.3-.8-.9-2.9-2.2-4.2-2.2h-3c.2 1 .2 2.2.1 3.2 0 2.1-.4 4.3-.9 6.4-.2.9-.5 1.8-.7 2.6 5.5-.7 10.5.7 14.1 5 1.7 2 3.4 5.6 3.6 8.3.5 5.4-6.6 6.7-7.8 1.2-.5-2.3-.7-3.8-2.7-5.4-3.1-2.5-7-1.2-10.7-1.4-1.9 3.2-4.5 6.1-7.5 8.4-14.4 10.8-36.9 7.2-46.2-8.4-.4-.2-2.4 0-2.9 0-3.2 0-6-.6-8.4 2.1-1.6 1.8-1.5 3.2-2.1 5.3-1.2 4.5-7.9 3.6-7.7-1.4.3-5.5 4.9-11.3 10.1-13 1.7-.5 5.7-1 7.4-.6.1 0 .1.1.1-.1 0-1.1-.7-2.8-.9-4.1-.4-2.7-.6-5.4-.4-8.1-2.8-.1-5.3.2-7.2 2.5-1.4 1.7-1.3 2.9-1.8 4.9-1.1 4.4-7.9 3.8-7.6-1.5.2-4.1 2.9-8.7 6.3-11 3-2.1 6.5-2.7 10.1-2.6v-5.8c.2-2.2.3-4.5.9-6.6h-4.5c-1.8 0-4.2 2.2-4.9 3.7-1.1 2.3-.4 6-4.1 6.3-3.4.3-4.5-2.3-4.1-5.2.9-6.1 5.1-11 11.3-12.2 3.1-.6 6.2 0 9.3-.4 2.2-3.1 4.8-6 7.9-8.3 4.9-3.5 10.9-5.1 16.8-5.8Z"/><path fill="#fff" d="M197.3 235.1c4.1-.7 8.3-.9 12.4 0 1.1-7.6 7-14.6 15.2-14 3.3.2 5.7 3.1 3.6 6.1-1.5 2-4.1 1-6.2 1.7s-3.7 2.5-4.5 4.4c-.3.7-1.2 3.8-.9 4.3 0 .1 1.3 1 1.6 1.2 3.4 3.1 6.2 7.4 6.6 12 0 .6-.1 1.2.1 1.8-.1.1-2.6-1.5-2.9-1.8-10.5-6-27.5-5.7-37.9.4-.2.1-2.3 1.6-2.4 1.5-.2-5.5 2.8-10.5 6.8-14 .3-.3 1.3-.9 1.5-1.1.1-.1.1-.2.1-.3 0-.5-.3-1.8-.5-2.3-.9-3.3-3-6-6.6-6.3h-2.2c-4.2-.4-4.5-6.5-.2-7.4 2.3-.5 5.2 0 7.3 1 5.2 2.2 8.5 7.4 9.1 12.9Z"/></svg>`,vN=new Map([[`registry`,{label:`Source: npm registry`,icon:Xe}],[`repository`,{label:`Source: GitHub repository`,icon:k(ia)}],[`osv`,{label:`Source: OSV`,icon:_N}]]);function yN(e){return e===`unknown`?`Unrated`:e.charAt(0).toUpperCase()+e.slice(1)}function bN(e){if(typeof e!=`string`)return null;let t=/\/(GHSA-[a-z0-9-]+)(?:[/?#]|$)/iu.exec(e);return t?t[1]:null}var xN=A`<svg class="external-link-icon" viewBox="0 0 16 16" width="11" height="11" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 13L13 3"/><path d="M5 3h8v8"/></svg>`;function SN(e){let t=/^CWE-(\d+)$/u.exec(e);if(!t)return A`<span>${e}</span>`;let n=`https://cwe.mitre.org/data/definitions/${t[1]}.html`;return A`<a class="bundle-advisory-cwe" href="${n}" target="_blank" rel="noopener noreferrer">${e}</a>`}function CN(e,t){return A`<div class="bundle-advisory-rail"><span class="${`bundle-advisory-severity sev-${e}`}">${yN(e)}</span> ${typeof t==`number`?A`<span class="bundle-advisory-cvss-score">CVSS <span class="mono">${t.toFixed(1)}</span></span>`:M}</div>`}function wN(e){let t=typeof e.url==`string`&&/^https?:\/\//iu.test(e.url)?e.url:null,n=e.ghsa??bN(t)??(typeof e.id==`string`?e.id:null),r=vN.get(e.source);return!r&&!(n&&t)?M:A`<span class="bundle-advisory-reference">${r?A`<span class="bundle-advisory-source" role="img" aria-label="${r.label}">${r.icon}</span>`:M} ${n&&t?A`<a class="bundle-advisory-ghsa" href="${t}" target="_blank" rel="noopener noreferrer">${n}${xN}</a>`:M}</span>`}function TN(e){let t=Array.isArray(e)?e.filter(e=>typeof e==`string`):[];return t.length>0?A`<span class="bundle-advisory-cwes">${t.map((e,t)=>A`${t===0?``:`, `}${SN(e)}`)}</span>`:M}function EN(e,t=null){let n=typeof e.cvss?.vectorString==`string`?e.cvss.vectorString:``,r=typeof e.vulnerable_versions==`string`?e.vulnerable_versions:null,i=Array.isArray(e.versions)?e.versions.filter(e=>typeof e==`string`):[];return A`<li class="bundle-advisory-row">${CN(e.severity,e.cvss?.score)}<div class="bundle-advisory-body"><div class="bundle-advisory-header">${t&&typeof e.details==`string`&&e.details.trim()?A`<button type="button" class="bundle-advisory-title" aria-haspopup="dialog" @click="${()=>t(e)}">${e.title}</button>`:A`<span class="bundle-advisory-title">${e.title}</span>`} ${wN(e)}</div><div class="bundle-advisory-subrow"><div class="bundle-advisory-meta">${e.informational?A`<span>${e.informational}</span>`:M} ${r?A`<span>Affected <span class="mono">${r}</span></span>`:M} ${i.length>0?A`<span>Matches <span class="mono">${i.join(`, `)}</span></span>`:M} ${TN(e.cwe)}</div>${n?A`<div class="bundle-advisory-cvss-vector mono">${n}</div>`:M}</div></div></li>`}var DN=(e,t)=>WO(e,t).runsCode,ON=(e,t=e.length>=lt)=>e.length===1?`line ${e[0]}`:`lines ${e.slice(0,5).join(`, `)}${e.length>5?` and ${(e.length-5).toLocaleString(`en`)}${t?`+`:``} more`:``}`,kN=/^[\w$.]+$/u,AN=(e,t=null)=>[...Map.groupBy([...e],([e])=>{let{name:t,tag:n}=jt.get(e);return t&&kN.test(t)?t:n})].map(([e,n])=>`${e} (${ON([...new Set(n.flatMap(([,e])=>e))].toSorted((e,t)=>e-t),n.some(([,e])=>e.length>=lt))}${n.some(([e])=>t?.has(e))?`, new`:``})`).join(`, `),jN=e=>{let t=new Set(e.flat());return t.size===1?[...t][0]:void 0},MN=(e,t)=>t===void 0?{path:M,line:M}:{path:e,line:t},NN=(e,t=null)=>[...e].map(([e,n])=>`${jt.get(e).name} (${ON(n)}${t?.has(e)?`, new`:``})`).join(`, `);function PN(e,t,n){return e?[...Map.groupBy(e,([e])=>jt.get(e).tag)].map(([e,r])=>{let{note:i,mark:a}=jt.get(r[0][0]),o=r.map(([e,t])=>[jt.get(e).name,ON(t)]),s=t===void 0?[]:r.filter(([e])=>!t?.has(e)).map(([e])=>jt.get(e).name),c=s.length===0?null:s.length===r.length?`New in this version`:`New in this version: ${s.join(`, `)}`,l=MN(n,n===void 0?void 0:jN(r.map(([,e])=>e)));return A`<span data-bundle-view-source="${l.path}" data-bundle-view-line="${l.line}" class="${`npm-runs-code${a?` is-${a}`:``}`}" data-tooltip="${[`${i}: ${o.map(e=>e.join(`, `)).join(`; `)}`,c].filter(Boolean).join(` · `)}" .tooltipContent="${A`<div class="compare-tip"><div class="compare-tip-head">${i}</div><div class="compare-tip-rows is-files">${o.map(([e,t])=>A`<span class="compare-tip-path">${e}</span><span class="compare-tip-said">${t}</span>`)}</div>${c?A`<div class="compare-tip-notice">${c}</div>`:M}</div>`}">${e}</span>`}):M}var FN=(e,t)=>WO(e,t).exfiltration,IN=e=>[...Dt].filter(([t])=>e.some(e=>e.has(t))).map(([,{name:e}])=>e).join(`, `),LN=(e,t)=>[...e].map(([e,n])=>`${Dt.get(e).name} (${ON(n)}${t!==void 0&&!t?.has(e)?`, new`:``})`).join(`, `),RN=new Map([[`Exfiltration`,`Names a host that catches what is sent to it, as malicious packages send what they take to`],[`Remote`,`Names a service malicious packages send what they take to, or fetch what they run from, though code may well use it`],[`IP lookup`,`Looks up the machine's public address, as malicious packages do before sending what they take`]]);function zN(e,t,n){return e?Ot(e).map(([e,r])=>{let i=MN(n,n===void 0?void 0:jN([...r.values()]));return A`<span data-bundle-view-source="${i.path}" data-bundle-view-line="${i.line}" class="${`npm-exfiltration is-${kt(e,r,t)}`}" data-tooltip="${`${RN.get(e)}: ${LN(r,t)}`}">${e}</span>`}):M}var BN=e=>e.toLowerCase().replaceAll(` `,`-`),VN=({id:e,aliases:t,cwe:n,title:r})=>[e,...t??[]].some(e=>(e??``).startsWith(`MAL-`))||(n??[]).includes(`CWE-506`)||/\bmalware\b/iu.test(r??``),HN={accept:`Accept`,"accept-with-nits":`Accept with nits (non-blocking)`,"request-changes":`Request changes`,reject:`Reject`};function UN(e,t){return[e,t].every(e=>e===void 0||typeof e==`string`)&&[e,t].some(e=>typeof e==`string`)}function WN(e,t,n=[]){let r=Object.keys(HN),i=new Set(n??[]),a=e.filter(e=>n!==null&&!i.has(e.file)&&r.includes(e.status)),o=r.findLast(e=>a.some(t=>t.status===e))??`accept`;if(t===null)return{coverage:null,checkedFiles:null,totalFiles:null,verdictLimit:o};let s=new Set(a.map(e=>e.file)),c=t.filter(e=>s.has(e)).length;return{coverage:c===t.length?`full`:`partial`,checkedFiles:c,totalFiles:t.length,verdictLimit:o}}function GN(e,t=`accept`){let n=Object.keys(HN);return n.slice(Math.max(n.indexOf(t),n.indexOf(WN(e,null).verdictLimit)))}function KN({npm:{version:e,manifest:t={}}}){return(t.description===`security holding package`||t.github?.github?.toLowerCase()===`npm/security-holder`)&&(t.publisher===`npm`||/-security(?:\.\d+)?$/u.test(e))}function qN(e,t,n,r){if(!e)return`accept`;let i=t?.versions?.indexOf(e.version)??-1,a=i<0?[]:t.advisories.filter(e=>e.affected.includes(i)),o=e.private?[]:n?.alerts??[];return r?.findings?.some(e=>e.id===`malware`)||KN({npm:e})||o.some(e=>e.type===`malware`)||a.some(e=>VN(e)||e.id?.startsWith(`MAL-`)||/^Malicious package\b/iu.test(e.title??``))?`reject`:a.some(e=>e.severity===`critical`)||o.some(e=>e.type===`criticalCVE`)?`request-changes`:`accept`}function JN(e,t,n=[]){return WN(e,t,n).coverage===`partial`&&(n===null||n.includes(`package.json`)||!e.some(e=>e.file===`package.json`&&Object.keys(HN).includes(e.status)))}function YN(e){return e.replaceAll(/\r\n?/gu,`
171
- `).split(/(?:^|\n)[\t ]*\*[\t ]+/u).map((e,t)=>({text:e.trim(),bullet:t>0})).filter(e=>e.text)}var XN=[`critical`,`high`,`moderate`,`low`,`unknown`],ZN=e=>XN.includes(e.severity)?e.severity:`unknown`,QN=[[`affects`,e=>`Affects ${e}`],[`later`,()=>`Later versions`],[`fixed`,e=>`Fixed in ${e}`]];function $N(e){return Ej(`stats`,e,()=>Fb(e),e=>({downloads:e.downloads??null,github:e.github??null}))}function eP(e){return Ej(`advisories`,e,()=>Ib(e),e=>({versions:e.versions??[],advisories:e.advisories??[],repository:e.repository!==!1,keptAt:e.keptAt??null}))}function tP(e){let{name:t,version:n}=e.npm,r=(e,t)=>A`<a class="npm-package-link" href="${e}" target="_blank" rel="noopener noreferrer">${t}${xN}</a>`;return A`<span class="npm-package-links">${r(`https://www.npmjs.com/package/${t}/v/${encodeURIComponent(n)}`,`npmjs`)} ${e.npm.private?M:r(nP(e),`socket.dev`)}</span>`}var nP=e=>`https://socket.dev/npm/package/${e.npm.name}/overview/${encodeURIComponent(e.npm.version)}`;function rP(e){let{name:t,version:n}=e.npm;if(e.npm.private)return null;let r=Ej(`socket`,`${t}@${n}`,()=>zb(t,n),e=>({socket:e.socket??null}));return r.status===`ready`?r.socket:null}var iP=[[`supplyChain`,`Supply chain`,85,85],[`vulnerability`,`Vulnerability`,85,85],[`quality`,`Quality`,70,80],[`maintenance`,`Maintenance`,70,80],[`license`,`License`,80,80]],aP=50,oP=(e,t)=>e===100?`is-good is-max`:e>=t?`is-good`:e>=50?`is-fair`:`is-poor`,sP=e=>A`<svg class="npm-socket-gauge" viewBox="0 0 16 16" aria-hidden="true"><circle cx="8" cy="8" r="6" pathLength="100"></circle><circle class="npm-socket-gauge-fill" cx="8" cy="8" r="6" pathLength="100" stroke-dasharray="${`${e} 100`}"></circle></svg>`;function cP(e){let t=rP(e)?.scores;return t?A`<ul class="npm-extensions npm-socket-scores" aria-label="Socket scores">${iP.map(([n,r,,i])=>{let a=Math.round(t[n]*100);return A`<li><a class="${`npm-extension npm-socket-score ${oP(a,i)}`}" href="${nP(e)}" target="_blank" rel="noopener noreferrer">${sP(a)}<span>${r}</span><span class="npm-extension-count">${a}</span></a></li>`})}</ul>`:M}var lP=new Map([[`critical`,`critical`],[`high`,`high`],[`middle`,`moderate`],[`low`,`low`]]),uP=e=>e.replaceAll(/(?<=[a-z])(?=[A-Z])/gu,` `).toLowerCase().replace(/^./u,e=>e.toUpperCase()),dP=new Map,fP=new WeakMap;function pP(e){let t=e?rP({npm:e}):null;return t?(fP.has(t)||fP.set(t,Map.groupBy(t.alerts.filter(e=>e.file),e=>e.file)),fP.get(t)):dP}var mP=(e=[])=>e.map(e=>{let t=lP.get(e.severity)??`low`;return A`<span class="${`npm-socket-file-alert sev-${t}`}" data-tooltip="${`Socket: ${uP(e.type)}, ${t}${e.note?` \xB7 ${e.note}`:``}`}">${uP(e.type)}</span>`});function hP(e,t){return qN(e.npm,eP(e.npm.name),rP(e),aj(e.npm,t?t.npm?.version??`(empty)`:null))}function gP(e,t){let n=KN(e),r=n&&t!==null&&[...t].every(XF)?[]:rP(e)?.alerts??[];if(!n&&r.length===0)return M;let i=[...t??[]].find(e=>/^readme(?:\.md)?$/iu.test(e));return A`<div class="npm-alerts">${n?A`<p class="npm-alert" role="note"><strong>Taken down by npm.</strong> npm's security team removed this package's versions, as it does for malicious code, and serves this placeholder in their place${i?A`: ${dM(i,t,`its readme`)}`:``}.</p>`:M} ${r.length>0?_P(e,r,t):M}</div>`}function _P(e,t,n){return A`<div class="npm-alert npm-socket-alerts" role="note"><span class="npm-socket-alerts-head"><strong>Socket raises ${t.length===1?`an alert`:`${t.length} alerts`} on this version</strong> <a class="npm-package-link" href="${nP(e)}" target="_blank" rel="noopener noreferrer">socket.dev${xN}</a></span><ul>${t.map(e=>{let t=lP.get(e.severity)??`info`;return A`<li><span class="${`bundle-advisory-severity sev-${t}`}">${t}</span> <span class="npm-socket-alert-type">${uP(e.type)}</span> ${e.file?A`<span class="npm-socket-alert-file">in ${dM(e.file,n)}</span>`:M} ${e.note?A`<p class="npm-socket-alert-note">${e.note}</p>`:M}</li>`})}</ul></div>`}function vP(e,t,n=M){let r=$N(e.npm.name),i=LF(aj(e.npm)?.findings.find(({id:e})=>e===`popularity`));return A`<div class="npm-figures"><npm-downloads-chart role="region" aria-label="Downloads" .downloads="${r.downloads}" .status="${r.status}" .known="${i}"></npm-downloads-chart><div class="npm-figures-actions">${tP(e)}${t}</div>${n}</div>`}var yP=A`<svg viewBox="0 0 16 16" width="12" height="12" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linejoin="round" aria-hidden="true"><path d="m8 1.75 1.9 3.9 4.3.6-3.1 3 .75 4.25L8 11.5l-3.85 2 .75-4.25-3.1-3 4.3-.6Z"/></svg>`,bP=A`<svg viewBox="0 0 16 16" width="12" height="12" fill="none" stroke="currentColor" stroke-width="1.3" aria-hidden="true"><circle cx="8" cy="8" r="6"/><circle cx="8" cy="8" r="1.25" fill="currentColor"/></svg>`,xP=k(oa),SP=A`<svg viewBox="0 0 16 16" width="12" height="12" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" aria-hidden="true"><circle cx="4.5" cy="3.25" r="1.5"/><circle cx="11.5" cy="3.25" r="1.5"/><circle cx="8" cy="12.75" r="1.5"/><path d="M4.5 4.75v.75a2 2 0 0 0 2 2h3a2 2 0 0 0 2-2v-.75M8 7.5v3.75"/></svg>`;function CP(e){if(!e.npm.manifest.github?.github)return M;let t=$N(e.npm.name),n=t.status===`ready`?t.github:null;if(!n)return M;let r=(e,t,r,i)=>A`<a class="bundle-origin-link npm-github-figure" href="${`https://github.com/${et(n.repo)}/${i}`}" data-tooltip="${`${t.toLocaleString(`en`)} ${r}`}" target="_blank" rel="noopener noreferrer">${e}<span>${TA.format(t)}</span></a>`,i=typeof n.openPulls==`number`?n.openPulls:null,a=i===null?n.openIssues:Math.max(n.openIssues-i,0);return A`${r(yP,n.stars,n.stars===1?`star`:`stars`,`stargazers`)} ${r(SP,n.forks,n.forks===1?`fork`:`forks`,`forks`)} ${r(bP,a,i===null?`open issues and pull requests`:a===1?`open issue`:`open issues`,`issues`)} ${i===null?M:r(xP,i,i===1?`open pull request`:`open pull requests`,`pulls`)} ${n.archived?A`<span class="npm-github-archived">Archived</span>`:M}`}var wP=({name:e,version:t,private:n,manifest:r})=>n||!r.provenance?null:Ej(`provenance`,`${e}@${t}`,()=>Bb(e,t),e=>({provenance:e.provenance??null}));function TP(e){let t=wP(e);return t!==null&&(t.status===`loading`||!!t.provenance?.builder)}function EP(e,t){return e?/^https:\/\/github\.com\/actions\/runner(?:\/github-hosted)?$/u.test(e)?`GitHub Actions`:e.startsWith(`https://github.com/actions/runner/`)?`GitHub Actions, self-hosted runner`:e.startsWith(`https://gitlab.com/`)||e.includes(`/-/runners/`)?t===`self-hosted`?`GitLab CI, self-hosted runner`:`GitLab CI`:new URL(e).host:null}var DP=(e,t)=>t?t===`github-hosted`||t===`gitlab-hosted`:e===`GitHub Actions`;function OP(e){if(e.npm.private)return M;let t=wP(e.npm);if(!t)return A`<span class="npm-commit-missing">None</span>`;if(t.status===`loading`)return A`<span class="npm-commit-missing">Checking…</span>`;if(t.status===`error`)return A`<span class="npm-commit-missing">Couldn't be read</span>`;if(!t.provenance)return A`<span class="npm-provenance-warning" data-tooltip="npm lists provenance for this version, but no statement naming its tarball could be read">Listed, but none for this tarball</span>`;let{manifest:n}=e.npm,{repository:r,commit:i,workflow:a,ref:o,builder:s,run:c,logIndex:l,runner:u}=t.provenance,d=(e,t,n=M)=>A`<a class="bundle-origin-link" href="${e}" data-tooltip="${n}" target="_blank" rel="noopener noreferrer"><span>${t}</span></a>`,f=/^https:\/\/github\.com\/([^/]+\/[^/]+)$/u.exec(r)?.[1]??null,p=EP(s,u),m=p?.startsWith(`GitLab CI`),h=f??r.replace(/^https:\/\//u,``),g=n.github?.github??(n.gitlab?`gitlab.com/${n.gitlab}`:null),_=g&&g.toLowerCase()!==h.toLowerCase(),v=a?.split(`/`).at(-1),y=[a?f&&i?d(`${r}/blob/${i}/${a.split(`/`).map(encodeURIComponent).join(`/`)}`,v,a===v?M:a):A`<span class="mono" data-tooltip="${a===v?M:a}">${v}</span>`:M,c?d(c,`Run`):M,l===null?M:d(`https://search.sigstore.dev/?logIndex=${l}`,`Transparency log`)].filter(e=>e!==M);return A`<span class="npm-provenance"><span class="npm-provenance-line">${p?A`<span class="${DP(p,u)&&!_?`npm-provenance-builder is-hosted`:`npm-provenance-builder`}">${p}</span>`:M} <span class="npm-provenance-sep">from</span> ${i?d(f?`${r}/commit/${i}`:m?`${r}/-/commit/${i}`:r,`${h}@${i.slice(0,7)}`,`${r} at ${i}${o?` (${o})`:``}`):d(r,h)} ${_?A`<span class="npm-provenance-warning" data-tooltip="${`The package names ${g}`}">Not the repository it names</span>`:M}</span> ${y.length>0?A`<span class="npm-provenance-line is-how">${y.map((e,t)=>t===0?e:A`<span class="npm-provenance-sep" aria-hidden="true">·</span>${e}`)}</span>`:M}</span>`}function kP(t,n,r){let i=t.affected.map(e=>n[e]).filter(Boolean);return i.includes(r)?`affects`:i.length>0&&i.every(t=>e(t,r)<0)?`fixed`:`later`}function AP(){let e=F.managedSession?.id;return()=>F.managedSession?.id===e}function jP(e,t){return EN({...e,title:e.title??e.id,severity:ZN(e),cvss:{score:e.cvss},vulnerable_versions:e.range},({title:e,severity:n,details:r})=>ft({heading:e,severity:n,markdown:r,isCurrent:t}))}function MP(e){let{name:t,version:n}=e.npm,r=eP(t),i=AP(),a=r.status===`ready`,o=a?r.advisories:[],s=o.map(e=>kP(e,r.versions,n)),c=QN.map(([e,t])=>({status:e,heading:t(n),advisories:o.filter((t,n)=>s[n]===e)})).filter(e=>e.advisories.length>0),l=s.filter(e=>e===`affects`).length,u=a&&r.keptAt?A`<p class="npm-advisories-note">GitHub's repository advisories are as of ${UF(Date.now()-Date.parse(r.keptAt))} ago: they couldn't be checked now.</p>`:a&&!r.repository?A`<p class="npm-advisories-note">GitHub's repository advisories couldn't be checked; npm's are shown.</p>`:M,d=r.status===`loading`?A`<p class="bundles-overview-col-empty">Checking advisories…</p>`:r.status===`error`?A`<p class="bundles-overview-col-empty">Couldn't check advisories.</p>`:c.length===0?A`${u}<p class="bundles-overview-col-empty">No advisories for any version.</p>`:A`${u}${c.map(e=>A`<section class="${`npm-advisory-group is-${e.status}`}"><h4 class="npm-advisory-group-head">${e.heading} <span class="bundles-overview-col-count">${e.advisories.length}</span></h4><ul class="bundle-advisories-rows">${e.advisories.map(e=>jP(e,i))}</ul></section>`)}`;return cA({title:`Advisories`,count:a?o.length:`…`,body:d,className:`npm-advisories-col`,extra:a?A`<span class="${`npm-advisories-active${l>0?` is-active`:``}`}">${l} active</span>`:M})}var NP=[...wt].filter(([,{mark:e}])=>e!==null).map(([e])=>e),PP=[...wt].filter(([,{mark:e}])=>e===null).map(([e])=>e),FP=[null,`notice`,`warn`];function IP(e){let t=new Map,n=new Map,r=0;for(let i of e){let e=St(i);for(let r of e){t.set(r,(t.get(r)??0)+1);let e=Ct(i,r);FP.indexOf(e)>FP.indexOf(n.get(r)??null)&&n.set(r,e)}e.some(e=>wt.get(e).mark)&&r++}return{counts:t,marks:n,unreadable:r}}var LP=new WeakMap;function RP(e){let t=e.npm?HO(e):e,n=LP.get(e);if(n?.of!==t){let{sources:r,sourcesContent:i}=e.json,a=new Map(r.map((t,n)=>[t,KO(e,t,i[n])]).filter(([,e])=>e)),o=new Set(r.filter((e,t)=>typeof i[t]!=`string`)),{counts:s,marks:c,unreadable:l}=IP(a.values()),u=Xt(e),d=Vt(e),f={files:0,lines:0,unpacked:0};for(let e of r.filter(e=>!XF(e)))o.has(e)||f.files++,f.lines+=u.get(e)??0,f.unpacked+=d.get(e)??0;n={of:t,paths:new Set(r),byPath:a,counts:s,marks:c,unreadable:l,sizes:d,extensions:new Map(r.map(e=>[e,qF(e)])),binaries:new Set([...o].toSorted((e,t)=>e.localeCompare(t))),types:ZF(r,d,u),content:f},LP.set(e,n)}return n}var zP={key:null,chip:null},BP=e=>`${e.npm.name}@${e.npm.version}`,VP=e=>zP.key===BP(e)?zP.chip:null;function HP(e){let t=VP(e);return t&&{label:t.label,keeps:t.keeps,clear:()=>{zP={key:null,chip:null},X()}}}function UP(e,t,n,r,{classes:i=``,tooltip:a=M}={}){let o=VP(e)?.id===t.id;return A`<li><button type="button" class="${`npm-extension npm-category${i}`}" aria-pressed="${String(o)}" data-tooltip="${a}" @click="${()=>{zP={key:BP(e),chip:o?null:t},X()}}">${n}<span class="npm-extension-count">${r.toLocaleString(`en`)}</span></button></li>`}function WP(e,t,n){let{name:r}=wt.get(n),{byPath:i,counts:a,marks:o}=RP(t),s=o.get(n);return UP(e,{id:`category:${n}`,label:r,keeps:e=>i.has(e)&&St(i.get(e)).includes(n)},A`<span>${r}</span>`,a.get(n),{classes:s?` is-${s}`:``})}function GP({counts:e,marks:t,unreadable:n},r,i,a){let o=NP.filter(t=>e.has(t));if(o.length===0)return M;let s=o.some(e=>t.get(e)===`warn`);return A`<div class="${`npm-readability-warning${s?` is-warn`:``}`}" role="note"><span class="npm-readability-warning-text"><strong>${n.toLocaleString(`en`)} of ${r.toLocaleString(`en`)} ${i}</strong> can be hard to review by reading them:</span><ul class="npm-extensions">${o.map(a)}</ul></div>`}function KP(e,t){return GP(RP(t),t.json.sources.length,`files`,n=>WP(e,t,n))}function qP(e,t,n=!1,r=void 0){let{byPath:i,sizes:a}=RP(e),o=n?t:void 0;return A`${PN(DN(e,t),void 0,o)}${zN(FN(e,t),JP(r),o)}${rk(e,t,a.get(t))}${tk(i.get(t))}`}var JP=e=>e===void 0||e?.details.npm&&!HO(e.details)?void 0:e&&FN(e.details,e.path);function YP(e,t,n=[],r=void 0){let{stamps:i,exfiltration:a}=WO(e,t),o=JP(r),s=o===void 0?null:new Map(Ot(a).map(([e,t])=>[e,kt(e,t,o)]));return[...n.map(e=>({name:uP(e.type),severity:lP.get(e.severity)??`low`})),...i.map(e=>s?.has(e.name)?{...e,severity:s.get(e.name)}:e)]}var XP=new WeakMap;function ZP(e,t){let n=e&&t?.npm?aj(t.npm,e.npm?.version??`(empty)`):null;if(!n)return null;if(!XP.has(n)){let t=new Map;for(let{host:r,places:i}of aF(n).get(`new-hosts`)?.hosts??[])for(let{path:n,line:a}of i)t.set(n,[...t.get(n)??[],{host:r,line:a,was:e.npm?.version??null}]);XP.set(n,t)}return XP.get(n)}function QP(e){if(!e?.length)return M;let t=e.length===1?`New host`:`New hosts`,{was:n}=e[0],r=`${n?`None of ${n}'s files`:`No file of the version compared with`} named ${e.length===1?`it`:`them`}`;return A`<span class="npm-new-host" data-tooltip="${`${t}: ${e.map(({host:e,line:t})=>`${e}, line ${t}`).join(`; `)} \xB7 ${r}`}" .tooltipContent="${A`<div class="compare-tip"><div class="compare-tip-head">${t}</div><div class="compare-tip-rows is-files">${e.map(({host:e,line:t})=>A`<span class="compare-tip-path">${e}</span><span class="compare-tip-said">line ${t}</span>`)}</div><div class="compare-tip-note">${r}</div></div>`}">${t}</span>`}var $P={icon:(e,t)=>qe(e,t.map(([e,t])=>Ge(e,t)).find(ie)),alerts:e=>pP(e?.npm),alertTags:mP,newHosts:ZP,newHostTag:QP,tag:(e,t,n)=>qP(e,t,!1,n),flags:(e,t,n)=>YP(e,t,[],n),warning(e,t){let{byPath:n}=RP(e),r=IP(t.filter(e=>n.has(e)).map(e=>n.get(e))),{counts:i,marks:a}=r;return GP(r,t.length,t.length===1?`file added or changed`:`files added or changed`,e=>{let{name:t}=wt.get(e),n=a.get(e);return A`<li><span class="${`npm-extension is-${n}`}"><span>${t}</span><span class="npm-extension-count">${i.get(e).toLocaleString(`en`)}</span></span></li>`})}},eF=new Map([[`malware`,`Malware`],[`deprecated`,`Deprecated`],[`publisher`,`Publisher`],[`provenance-lost`,`Provenance lost`],[`held-install-scripts`,`Install scripts`],[`held-non-registry-deps`,`Non-registry deps`],[`held-unused-deps`,`Unused deps`],[`held-runs-code`,`Runs code`],[`held-credentials`,`Credentials`],[`held-exfiltration`,`Exfiltration`],[`held-remote`,`Remote`],[`held-ip-lookup`,`IP lookup`],[`held-obfuscated`,`Obfuscated`],[`large-code`,`Large new code`],[`now-unreadable`,`Now unreadable`],[`binary-code`,`Binary code`],[`new-hosts`,`New hosts`],[`popularity`,`Few downloads`]]),tF={critical:`is-critical`,high:`is-warn`,moderate:`is-moderate`,low:`is-low`},nF=e=>e>=730?`${Math.floor(e/365)} years`:e>=60?`${Math.floor(e/30)} months`:`${e} days`;function rF(e){let t=e?.score;if(!t)return M;let{score:n,level:r,raised:i,lowered:a}=t,o=i.map(({id:e,severity:t})=>[eF.get(e)??e,t]),s=a&&o.length>0?`Lowered by ${Math.round(a.by*100)}%: out ${nF(a.days)}${a.tier===null?``:`, its package npm's ${MA(a.tier)} by downloads`}`:null,c=[`Risk ${n} of 100`,...o.length===0?[`Nothing found that calls for a look`]:o.map(([e,t])=>`${e}, ${t}`),...s?[s]:[]].join(`
172
- `);return A`<li><span class="${`npm-extension npm-risk-score ${tF[r]}`}" data-tooltip="${c}" .tooltipContent="${A`<div class="compare-tip"><div class="compare-tip-head">Risk ${n} of 100</div>${o.length===0?A`<span class="compare-tip-none">Nothing found that calls for a look</span>`:A`<div class="compare-tip-rows">${o.map(([e,t])=>A`<span class="npm-risk-finding">${e}</span><span class="${`compare-tip-said npm-risk-severity sev-${t}`}">${t}</span>`)}</div>`} ${s?A`<div class="compare-tip-note">${s}</div>`:M}</div>`}">${sP(n)}<span>Risk</span><span class="npm-extension-count">${n}</span></span></li>`}var iF=(e,t)=>[mF(t.get(`malware`)),hF(t.get(`deprecated`)),yF(e,t.get(`publisher`)),bF(e,t.get(`provenance-lost`)),xF(e,t.get(`held-install-scripts`)),...OF(e,t),...CF(e,t),wF(t.get(`new-hosts`)),kF(t.get(`too-new`))],aF=e=>new Map((e?.findings??[]).map(e=>[e.id,e]));function oF(e,t){if(!e||!t?.npm)return M;let n=[e.npm??{name:t.npm.name,version:`Empty package`,private:!0},t.npm],r=dF(n),i=aj(t.npm,e.npm?.version??`(empty)`),a=aF(i),o=[rF(i),...iF(n,a),AF(n,r),...FF(n,r,a.get(`malware`)),zF(t.npm.name,a.get(`popularity`))].filter(e=>e!==M);return o.length===0?M:A`<ul class="npm-extensions npm-compare-badges" aria-label="Versions at a glance">${o}</ul>`}function sF(e){let{npm:t}=e,n=dF([t]),r=aj(t),i=aF(r),a=r?.oldVersion?[{name:t.name,version:r.oldVersion},t]:[t],o=[rF(r),...iF(a,i),AF([t],n),...FF([t],n,i.get(`malware`))].filter(e=>e!==M);return o.length===0?M:A`<ul class="npm-extensions npm-overview-badges" aria-label="Version at a glance">${o}</ul>`}function cF(e){let t=e?.files??[],n=t=>[`${t.was.toLocaleString(`en`)} \u2192 ${t.now.toLocaleString(`en`)} characters`,...t.rebuilt?[`its source map rebuilt with it`]:[],...e.major?[`in a major release`]:[]];return e?.severity===`critical`||!e?TF(`npm-compare-unreadable`,`Now unreadable`,t,n):EF(`${lF[e.severity]} npm-held-file npm-compare-unreadable`,`Now unreadable`,t,n)}var lF={critical:`is-critical`,high:`is-warn`,moderate:`is-moderate`},uF=e=>[...Et.keys()].map(t=>{let n=e.get(`held-${BN(t)}`),r=n?.files??[],i=e=>e.added?new Map([...e.found].filter(([t])=>!e.added.has(t))):void 0;return EF(`${lF[n?.severity]} npm-held-file npm-files-${BN(t)}`,t,r,e=>LN(e.found,i(e)),IN(r.map(e=>e.found)))});function dF(e){let t=eP(e.at(-1).name);return t.status===`loading`?null:e.map(({version:e})=>{let n=t.status===`ready`?t.versions.indexOf(e):-1;return n===-1?[]:t.advisories.filter(e=>e.affected.includes(n))})}var fF=(e,t)=>e===t?`${t??`–`}`:`${e??`–`} \u2192 ${t??`–`}`,pF=e=>XN.find(t=>e.some(e=>ZN(e)===t));function mF(e){if(!e)return M;let t=[...e.takenDown?[`Taken down by npm`]:[],...(e.advisories??[]).map(({id:e,title:t})=>t?`${e}: ${t}`:e)];return A`<li><span class="npm-extension npm-malware" data-tooltip="${t.join(`
173
- `)}">Malware</span></li>`}function hF(e){return e?A`<li><span class="npm-extension npm-compare-deprecated" data-tooltip="${mM(e.message)}">Deprecated</span></li>`:M}var gF={critical:`is-from-known`,high:`is-to-unknown`},_F={known:`is-known`,maintainer:`is-maintainer`},vF={known:`one that publishes one of npm's most downloaded packages`,maintainer:`one of the package's maintainers`,new:`an unknown publisher, new to the package`,unknown:`an unknown publisher`};function yF([e,t],n){if(!n)return M;let{was:r,now:i,wasKnown:a,nowKnown:o,severity:s,major:c}=n,l=n.wasStanding??(a?`known`:`unknown`),u=n.nowStanding??(o?`known`:`unknown`),d=(e,t)=>A`<span class="${`npm-compare-account ${_F[t]??`is-unknown`}`}">~${e}</span>`,f=gF[s]??`is-to-known`,p=A`A different npm account published the open version,<br>${vF[u]},<br>after ${vF[l]}${c?A`<br>in a major release`:M}`;return A`<li><a class="${`npm-extension npm-compare-publisher ${f}`}" href="${`https://www.npmjs.com/~${encodeURIComponent(i)}`}" target="_blank" rel="noopener noreferrer" data-tooltip="${`Published by ~${r} (${e.version}), then ~${i} (${t.version})`}" .tooltipContent="${MF(`Published by`,[e,t],[d(r,l),d(i,u)],p)}"><span>Publisher</span><span class="npm-extension-count">${d(r,l)} → ${d(i,u)}</span></a></li>`}function bF([e,t],n){return n?A`<li><span class="npm-extension npm-compare-provenance" data-tooltip="${`npm lists provenance for ${e.version}, none for ${t.version}`}" .tooltipContent="${MF(`npm provenance`,[e,t],[`Listed by npm`,A`<span class="compare-tip-none">None</span>`],`The open version was published without the provenance the one compared with has`)}">Provenance lost</span></li>`:M}function xF(e,t){if(!t)return M;let{scripts:n,flagged:r=[],was:i}=t,a=new Map(i??[]),o=i?e:e.slice(-1),s=i?[i,n]:[n],c=(e,t)=>e.length===0?A`<span class="compare-tip-none">None</span>`:jF(e.map(([e,n])=>[e,n,t.includes(e)])),l=n.map(([e])=>r.includes(e)?`${e} ${a.has(e)?`changed`:`added`}`:e).join(`, `);return A`<li><span class="npm-extension is-warn npm-compare-install" data-tooltip="${o.map(({version:e},t)=>`${e}: ${s[t].map(([e,t])=>`${e}: ${t}`).join(`; `)||`none`}`).join(` · `)}" .tooltipContent="${MF(`Install scripts`,o,s.map((e,t)=>c(e,t===s.length-1?r:[])))}"><span>${n.length===1?`Install script`:`Install scripts`}</span><span class="npm-extension-count">${l}</span></span></li>`}var SF=8;function CF(e,t){let n=e=>t.get(e)?.files??[],r=(e,n)=>`${lF[t.get(e)?.severity]} npm-held-file ${n}`;return[EF(r(`held-runs-code`,`npm-files-runs`),`Runs code`,n(`held-runs-code`),e=>AN(e.found,e.added),oe(n(`held-runs-code`).map(e=>e.found)),null,!1),EF(r(`held-credentials`,`npm-files-credentials`),`Credentials`,n(`held-credentials`),e=>NN(e.found,e.added)),...uF(t),TF(`npm-compare-large`,`Large new code`,n(`large-code`),e=>Wr(e.bytes)),cF(t.get(`now-unreadable`)),EF(r(`held-obfuscated`,`npm-files-obfuscated`),`Obfuscated`,n(`held-obfuscated`),t=>`${GO(t.found)}${t.added?`, new since ${e[0].version}`:``}`),TF(`npm-compare-binary`,`Binary code`,n(`binary-code`),e=>`${Wr(e.bytes)}, not UTF-8 or holding a NUL`)]}function wF(e){let t=e?.hosts??[],n=t.map(({host:e,places:t})=>{let n=t.slice(0,SF).map(({path:e,line:t})=>`${e}, line ${t}`);return{path:e,at:t.length>n.length?[...n,`and ${(t.length-n.length).toLocaleString(`en`)} more files`]:n}}),[r]=t,i=t.length===1&&r.places.length===1?{path:r.path,line:r.line,query:r.host}:null;return EF(`is-warn npm-compare-hosts`,n.length===1?`New host`:`New hosts`,n,e=>e.at,n.length===1?n[0].path:null,i&&(e=>e.currentTarget.dispatchEvent(new CustomEvent(`compare-open-line`,{detail:i,bubbles:!0,composed:!0}))))}function TF(e,...t){return EF(`npm-compare-file ${e}`,...t)}function EF(e,t,n,r,i=null,a=null,o=!0){if(n.length===0)return M;let s=n.slice(0,SF),c=n.length>s.length?`and ${(n.length-s.length).toLocaleString(`en`)} more`:null,l=e=>[r(e)].flat(),u=`${t}: ${[...s.map(e=>`${e.path} (${l(e).join(`; `)})`),...c?[c]:[]].join(`, `)}`,d=A`<div class="compare-tip"><div class="compare-tip-head">${t}</div><div class="compare-tip-rows is-files">${s.map(e=>A`<span class="compare-tip-path">${e.path}</span><span class="compare-tip-said">${l(e).length>1?A`<span class="compare-tip-lines">${l(e).map(e=>A`<span>${e}</span>`)}</span>`:r(e)}</span>`)}</div>${c?A`<div class="compare-tip-note">${c}</div>`:M}</div>`,f=A`${o?A`<span>${t}</span>`:A`<span class="sr-only">${t}</span>`}${i!==null||n.length>1?A`<span class="npm-extension-count">${i??n.length.toLocaleString(`en`)}</span>`:M}`;return a?A`<li><button type="button" class="${`npm-extension is-open ${e}`}" data-tooltip="${u}" .tooltipContent="${d}" @click="${a}">${f}</button></li>`:A`<li><span class="${`npm-extension ${e}`}" data-tooltip="${u}" .tooltipContent="${d}">${f}</span></li>`}var DF=(e,{created:t,gap:n,level:r,tier:i,installs:a,missing:o,was:s,severity:c})=>[c===`notice`?`no risk counted`:null,s===void 0?null:`was ${s}`,t?`new package, ${n>=0?`${UF(n)} old`:`published later`}`:o?`no package npm has`:r?`npm's ${MA(i??1/0)}`:null,a?.scripts?`installs ${a.version}${a.latest&&a.latest!==a.version?` (its latest ${a.latest})`:``}${a.new?`, published since ${e[0].version}`:``}, running its install scripts`:null].filter(Boolean).join(`; `)||null;function OF(e,t){let{version:n}=e.at(-1),r=t.get(`held-non-registry-deps`)?.dependencies??[],i=t.get(`held-unused-deps`),a=i?.dependencies??[],o=t=>t.some(e=>e.added)?`; new since ${e[0].version}: ${t.filter(e=>e.added).map(({name:e})=>e).join(`, `)}`:``,s=[];if(r.length>0){let t=r.filter(e=>e.added).map(e=>`${e.name} was ${e.was??`none`}`);s.push(A`<li><span class="npm-extension is-warn npm-compare-registry" data-tooltip="${`From elsewhere than npm's registry: ${r.map(e=>`${e.name} ${e.now}`).join(`, `)}${o(r)}`}" .tooltipContent="${MF(`From elsewhere than npm's registry`,[e.at(-1)],[jF(r.map(e=>[e.name,e.now,e.added]))],t.length>0?`New since ${e[0].version}: ${t.join(`, `)}`:null)}"><span>Non-registry deps</span><span class="npm-extension-count">${r.length.toLocaleString(`en`)}</span></span></li>`)}if(a.length>0){let[t,r]=a.length===1?[`it`,`its`]:[`them`,`their`],c=e=>e.kind?`${e.name} (${e.kind})`:e.name;s.push(A`<li><span class="${`npm-extension ${i.severity===`notice`?`is-notice`:lF[i.severity]??`is-warn`} npm-compare-unimported`}" data-tooltip="${`Imported by nothing of ${n}: ${a.map(t=>`${t.name} ${t.range}${DF(e,t)?` (${DF(e,t)})`:``}`).join(`, `)}${o(a)}`}" .tooltipContent="${MF(`Nothing imports ${t}`,[e.at(-1)],[jF(a.map(t=>[[c(t),DF(e,t)].filter(Boolean).join(`, `),t.range,t.added]))],`No code file of ${n} names ${t} as an import would, nor does an install script; npm installs ${t} all the same, running ${r} install scripts`)}"><span>Unused deps</span><span class="npm-extension-count">${a.length.toLocaleString(`en`)}</span></span></li>`)}return s}function kF(e){return e?A`<li><span class="npm-extension is-warn npm-compare-published" data-tooltip="${Rj(e.published)}">${Ij(e.published)}</span></li>`:M}function AF(e,t){if(!t)return M;let n=t.at(-1),r=e.length>1?t[0]:n;if(r.length===0&&n.length===0)return M;let i=n.length===0?`is-cleared`:`sev-${pF(n)}`,a=n.filter(e=>!r.includes(e)).length,o=r.filter(e=>!n.includes(e)).length,s=MF(`Advisories affecting`,e,t.map(e=>e.length===0?A`<span class="compare-tip-none">none</span>`:A`<span class="compare-tip-count">${e.length}</span><span class="compare-tip-severities">${XN.map(t=>[t,e.filter(e=>ZN(e)===t).length]).filter(([,e])=>e>0).map(([e,t])=>A`<span class="${`compare-tip-severity sev-${e}`}">${t} ${e}</span>`)}</span>`),e.length>1?`${a} new \xB7 ${o} fixed`:null),c=`Advisories affecting ${e.map(({version:e},n)=>`${e}: ${t[n].length}`).join(`, `)}`,l=A`<span>Advisories</span><span class="npm-extension-count">${fF(r.length,n.length)}</span>`;return e.length>1?A`<li><button type="button" class="${`npm-extension npm-compare-advisories ${i}`}" aria-haspopup="dialog" data-tooltip="${c}" .tooltipContent="${s}" @click="${()=>NF(e,t)}">${l}</button></li>`:A`<li><span class="${`npm-extension npm-compare-advisories ${i}`}" data-tooltip="${c}" .tooltipContent="${s}">${l}</span></li>`}var jF=e=>A`<span class="compare-tip-lines">${e.map(([e,t,n])=>t==null?A`<span class="compare-tip-none">${e}: none</span>`:A`<span class="${n?`is-flagged`:M}">${e}: <code>${t}</code></span>`)}</span>`,MF=(e,t,n,r=null)=>A`<div class="compare-tip"><div class="compare-tip-head">${e}</div><div class="compare-tip-rows">${t.map(({version:e},t)=>A`<span class="compare-tip-version">${e}</span><span class="compare-tip-said">${n[t]}</span>`)}</div>${r?A`<div class="compare-tip-note">${r}</div>`:M}</div>`;function NF([e,t],[n,r]){let i=AP(),a=[[`new`,`New in ${t.version}`,r.filter(e=>!n.includes(e))],[`kept`,`Still affecting ${t.version}`,r.filter(e=>n.includes(e))],[`fixed`,`Fixed in ${t.version}`,n.filter(e=>!r.includes(e))]].filter(([,,e])=>e.length>0).map(([e,t,n])=>({status:e,heading:t,rows:n.map(e=>jP(e,i))}));ge({heading:`Advisories \xB7 ${e.name} ${e.version} \u2192 ${t.version}`,groups:a,isCurrent:i})}function PF(e,t,n){if(e===null||e>=n)return!1;let r=pF(t);return r===void 0||XN.indexOf(e<=25?`critical`:`high`)<XN.indexOf(r)}function FF(e,t,n=null){let r=e.at(-1),i=e.map(e=>rP({npm:e})?.scores??null);return!i.at(-1)||n?[]:iP.flatMap(([n,a,o,s])=>{let c=i.map(e=>e?Math.round(e[n]*100):null),l=c.at(-1),u=e.length>1?c[0]:l;return l===null||l>=o||n===`vulnerability`&&!(t&&PF(l,t.at(-1),o))||n===`maintenance`&&r.manifest?.deprecated&&l>=aP?[]:[A`<li><a class="${`npm-extension npm-socket-score ${oP(l,s)}`}" href="${nP({npm:r})}" target="_blank" rel="noopener noreferrer" data-tooltip="${`Socket's ${a.toLowerCase()} score: ${e.map(({version:e},t)=>`${c[t]??`none`} for ${e}`).join(`, `)}`}" .tooltipContent="${MF(`Socket's ${a.toLowerCase()} score`,e,c.map(e=>e===null?A`<span class="compare-tip-none">none</span>`:A`<span class="${`compare-tip-score ${oP(e,s)}`}">${sP(e)}${e}</span>`),n===`vulnerability`?`Shown under ${o}, where worse than the advisories found`:`Shown under ${o}`)}">${sP(l)}<span>${a}</span><span class="npm-extension-count">${fF(u,l)}</span></a></li>`]})}var IF={critical:`is-unpopular`,high:`is-low`,moderate:`is-mid`};function LF({known:e,scope:t,account:n}={}){return e?n?`Published with provenance in ${t}, the scope of ~${n}, an account that publishes one of npm's most downloaded packages`:t?`Published with provenance in ${t}, the scope of one of npm's most downloaded packages, which only its owner publishes in`:`Published by an account that publishes one of npm's most downloaded packages`:null}function RF(e,t=null,n=!1){let{tier:r,level:i,severity:a}=e,o=t?.total.toLocaleString(`en`),s=n?`npm-extension npm-popularity npm-downloads-tier ${IF[a]??`is-low`}`:`npm-downloads-tier ${i}`,c=n?LF(e):null,l=[t&&`${o} downloads/month, ${t.month}`,c].filter(Boolean).join(` · `);return A`<span class="${s}" data-tooltip="${l||M}" .tooltipContent="${t||c?A`${t?A`<div><strong>${o}</strong> downloads/month</div><div class="compare-tip-note">${t.month}</div>`:M}${c?A`<div class="compare-tip-note">${c}</div>`:M}`:null}">${MA(r??1/0)}</span>`}function zF(e,t){let n=$N(e);return t?A`<li>${RF(t,n.status===`ready`&&n.downloads?IA(n.downloads):null,!0)}</li>`:M}var BF=A`<span class="npm-downloads-tier is-unpopular" data-tooltip="No downloads counted by npm, which counts a package's from the day after it was first published">unpopular</span>`,VF=e=>new Intl.NumberFormat(`en`,{style:`unit`,unit:e,unitDisplay:`long`}),HF={minute:VF(`minute`),hour:VF(`hour`),day:VF(`day`),month:VF(`month`),year:VF(`year`)};function UF(e){let t=Math.max(0,Math.floor(e/6e4)),n=Math.floor(t/1440);return t<60?HF.minute.format(t):t<1440?HF.hour.format(Math.floor(t/60)):n<60?HF.day.format(n):n<730?HF.month.format(Math.floor(n/30.44)):HF.year.format(Math.floor(n/365.25))}function WF({compared:e},{created:t,gap:n}){if(!t)return M;let[r,i]=e,a=UF(Math.abs(n)),o=[`First published on ${Lj(t)}`,`${a} ${n>=0?`before`:`after`} ${i.version} was`],s=`npm had no package by its name when ${n>=0?r.version:`either version`} was published`;return A`<span class="npm-dependency-flag is-new" data-tooltip="${[...o,s].join(` · `)}" .tooltipContent="${A`<div class="compare-tip"><div class="compare-tip-head">New package</div>${o.map(e=>A`<div>${e}</div>`)}<div class="compare-tip-note">${s}</div></div>`}">${n>=0?`${a} old`:`published later`}</span>`}function GF(e,t){let n=ij(e.flags);if(t!==`added`||!e.level)return[n,M];let r=e.month?LA({total:e.month.total,from:new Date(e.month.from)}):null;return[n,e.uncounted?BF:RF(e,r),e.compared?WF(e,e):M]}function KF(e,t){let{counts:n}=RP(t),r=PP.filter(e=>n.has(e));return r.length===0?M:A`<ul class="npm-extensions" aria-label="Readable files">${r.map(n=>WP(e,t,n))}</ul>`}function qF(e){let t=e.slice(e.lastIndexOf(`/`)+1),n=/\.d\.[cm]?ts$/iu.exec(t);if(n&&n.index>0)return n[0].toLowerCase();let r=t.lastIndexOf(`.`);return r>0?t.slice(r).toLowerCase():``}function JF(e,t,n=new Map){let r=new Map;for(let i of e){let e=qF(i),a=r.get(e)??{extension:e,files:0,bytes:0,lines:null};a.files++,a.bytes+=t.get(i)??0,n.has(i)&&(a.lines=(a.lines??0)+n.get(i)),r.set(e,a)}return[...r.values()].toSorted((e,t)=>t.files-e.files||e.extension.localeCompare(t.extension))}var YF=/^(?:package\.json|readme(?:\.md)?)$/iu,XF=e=>YF.test(e)||HA.test(e);function ZF(e,t,n=new Map){let r=e.filter(XF),i=new Set(e.filter(e=>!XF(e)).map(qF)),{files:a,bytes:o,lines:s}=JF(r,t,n).reduce((e,t)=>({files:e.files+t.files,bytes:e.bytes+t.bytes,lines:t.lines===null?e.lines:(e.lines??0)+t.lines}),{files:0,bytes:0,lines:null});return{package:r.length>0?{files:a,bytes:o,lines:s}:null,extensions:JF(e,t,n).filter(e=>i.has(e.extension))}}var QF=({bytes:e,lines:t})=>t===null?Wr(e):`${Wr(e)} \xB7 ${t.toLocaleString(`en`)} LoC`;function $F(e,t){let{types:n,extensions:r}=RP(t);return!n.package&&n.extensions.length===0?M:A`<ul class="npm-extensions" aria-label="File types">${n.package?UP(e,{id:`package`,label:`Package`,keeps:XF},A`<span>Package</span>`,n.package.files,{tooltip:`package.json, readme and license: ${QF(n.package)}`}):M} ${n.extensions.map(t=>UP(e,{id:`extension:${t.extension}`,label:t.extension||`No extension`,keeps:e=>r.get(e)===t.extension},A`<span class="npm-extension-name">${t.extension||`no extension`}</span>`,t.files,{tooltip:QF(t)}))}</ul>`}function eI(e,t,n){let r=[[`languages`,`Languages`,t],[`readable`,`Readable`,KF(e,n)],[`types`,`File types`,$F(e,n)],[`socket`,`Socket`,cP(e)]].filter(([,,e])=>e!==M);return r.length===0?M:A`<dl class="npm-contents" aria-label="Contents">${r.map(([e,t,n])=>A`<div class="${`npm-contents-${e}`}"><dt>${t}</dt><dd>${n}</dd></div>`)}</dl>`}function tI(e,t){return e.size===0?M:cA({title:`Binary files`,count:e.size,list:!0,body:A`<ul class="bundles-sources-list">${[...e].map(e=>A`<li><div class="bundles-source-row is-resource">${qe(e,`binary`)}<span class="bundles-source-path" data-tooltip-truncated data-tooltip="${e}">${e}</span> ${t.has(e)?A`<span class="bundles-source-size">${Wr(t.get(e))}</span>`:M}</div></li>`)}</ul>`})}var nI=({severity:e})=>ce.indexOf(e),rI=(e,t)=>e.reduce((e,n,r)=>e||n.name.localeCompare(t[r].name),0);function iI(e,t,n){return e.map(e=>({row:e,path:n(e),flags:t(e).toSorted((e,t)=>nI(e)-nI(t)||e.name.localeCompare(t.name))})).toSorted((e,t)=>(t.flags.length>0)-(e.flags.length>0)||e.flags.length>0&&(nI(e.flags[0])-nI(t.flags[0])||t.flags.length-e.flags.length||rI(e.flags,t.flags))||e.path.localeCompare(t.path)).map(({row:e})=>e)}function aI(e){return{...zj(e),files:$P,badges:oF,dependencyTags:GF,reviewVerdictLimit:hP}}var oI=/^[a-f\d]{40}$/iu,sI={removed:[],added:[],changed:[]},cI=e=>e.kind===`commit`&&oI.test(e.name)?e.name.toLowerCase():qM(e);function lI(e,t,n){return rN({revision:oI.test(t)?RM(e,t)??{kind:`commit`,name:t}:t.startsWith(`heads/`)?{kind:`branch`,name:t.slice(6)}:t.startsWith(`tags/`)?{kind:`tag`,name:t.slice(5)}:{kind:`commit`,name:t},commit:t},n)}var uI=(e,t)=>e.kind===`commit`||!e.name?(e.name||t).slice(0,7):e.name;function dI(e){let{repoId:t,repo:n,commit:r,path:i}=e.repository,a=IM(t),o=rN(e.repository,a);return{noun:`revision`,base:r,options:[],choices:[],name:n=>n===e.integrity||n===r?uI(o,r):uI(lI(t,n,a),n),async load(e){let n=await vb(t,e,i,{signal:Z_()});if(n?.repoId!==t||n.path!==i||!oI.test(n.commit??``)||oI.test(e)&&n.commit.toLowerCase()!==e.toLowerCase())throw Error(`The server answered with another directory.`);let r=n.commit.toLowerCase();return oI.test(e)||zM(t,r,lI(t,e,null)),{...UM(BM({...n,commit:r},RM(t,r)),n),compareId:r}},open:(e,r,a)=>GM({repoId:t,repo:n,path:i,bundleTab:`compare`,compare:{target:r,mode:a},...oI.test(e)?{commit:e.toLowerCase()}:{ref:e,revision:lI(t,e,null)}}),dependencies:()=>sI,files:{icon:(e,t)=>qe(e,t.map(([e,t])=>Ge(e,t)).find(ie))},select:(e,n)=>A`<repository-revision-pick .refs="${a.status===`ready`?a.value:null}" label="${n}" ?empty="${!e.value}" .revision="${e.value?e.value===r?o:lI(t,e.value,a):null}" @revision-pick="${t=>e.pick(cI(t.detail))}"></repository-revision-pick>`}}var fI=class extends pa{static properties={refs:{attribute:!1},revision:{attribute:!1},label:{},_edit:{state:!0}};createRenderRoot(){return this}constructor(){super(),this.refs=null,this.revision=null,this.label=``,this._edit=null,this._shownKey=null}willUpdate(){let e=JSON.stringify(this.revision);e!==this._shownKey&&(this._shownKey=e,this._edit=null)}changed({detail:e}){let t=aN(e);this._edit=t??{kind:e.kind,name:e.name},t&&this.dispatchEvent(new CustomEvent(`revision-pick`,{detail:t}))}render(){let e=this._edit??this.revision??{kind:`branch`,name:``};return A`<revision-select role="group" aria-label="${this.label}" .refs="${this.refs}" .kind="${e.kind}" .name="${e.name}" .installTooltips="${e=>cr(e)}" @revision-change="${this.changed}"></revision-select>`}};customElements.get(`repository-revision-pick`)||customElements.define(`repository-revision-pick`,fI);var pI=500,mI=14;function hI(e){if(!e)return null;let t={};e.color&&(t.color=e.color);let n=hn(e);return n&&(t.triage=n),typeof e.fix==`string`&&e.fix&&(t.fix=e.fix),typeof e.flagged==`boolean`&&(t.flagged=e.flagged),Object.keys(t).length>0?t:null}function gI(e){return e==null?``:JSON.stringify([e.color??``,e.triage??``,e.fix??``,e.flagged])}function _I(e,t){return e.length>100?!1:t==null||(t.color?.length??0)<=50&&(t.fix?.length??0)<=1e4}var vI=e=>new TextEncoder().encode(e).length,yI=new Map,bI=new Set,xI=(e,t=F.currentManagedTeam)=>JSON.stringify([t,e]),SI=new Map,CI=null,wI=Promise.resolve();function TI(){let e=new Set;for(let t of F.reports)for(let n of t.groups)for(let t of n)typeof t.id==`string`&&t.id&&e.add(t.id);return e}function EI(){return Array.isArray(F.managedReports)&&F.managedReports.length>0?F.managedReports:F.managedReport==null?[]:[F.managedReport]}function DI(e){let t=new Set,n=!1;for(let r of F.reports)if(r._managedReportId===e){n=!0;for(let e of r.groups??[])for(let n of e)typeof n.id==`string`&&n.id&&t.add(n.id)}return n||F.reports.length===0?t:new Set(TI())}function OI(e){let t=EI();for(let n of F.reports)if(n._managedReportId!=null&&(n.groups??[]).some(t=>t.some(t=>t.id===e))){let e=t.find(e=>e.id===n._managedReportId);if(e)return e}return t[0]??null}function kI(){let e=F.managedSession;return F.serverMode===`managed`&&F.localMode!==!0&&e!=null&&tt(e.role,`triage`)}function AI(e){return e===403&&F.managedSession?.viewer?!0:e>=400&&e<500&&e!==401&&e!==403&&e!==408&&e!==429}function jI(e,t){let n=SI.get(e.key);n??(n={report:e.report,key:e.key,teamId:e.teamId,changes:new Map},SI.set(e.key,n));for(let r of t)n.changes.has(r)||n.changes.set(r,e.changes.get(r))}async function MI(e,t,n){if(!kI())return;let r=[...e.changes.keys()],i=0;for(;i<r.length;){let a=i,o={},s=0,c=mI;for(;i<r.length&&s<200;){let t=r[i],n=vI(`${JSON.stringify(t)}:${JSON.stringify(e.changes.get(t))},`);if(s>0&&c+n>262144)break;o[t]=e.changes.get(t),c+=n,s++,i++}let l=await lx(e.report.id,o,F.managedSession?.csrfToken,e.teamId),u=l>=200&&l<300;if(!u&&!AI(l)){jI(e,r.slice(a));return}u||console.warn(`managed: the server refused a triage batch`,e.report.id,l,Object.keys(o)),!u&&l===403&&F.managedSession?.viewer&&n.add(e.report.id);for(let[n,r]of Object.entries(o)){let i=yI.get(n)?.fix??``,a=u?r?.fix??``:i;a!==i&&t.add(e.teamId),yI.set(n,{key:gI(r),fix:a})}}}function NI(){CI!=null&&(clearTimeout(CI),CI=null);let e=[...SI.values()];if(SI.clear(),e.length===0)return;let t=new Set,n=new Set;for(let r of e)wI=wI.then(()=>MI(r,t,n)).catch(e=>{console.warn(`managed: triage push failed`,e)});wI=wI.finally(()=>{for(let e of t)Kv(e);for(let e of n)BI(e)}).catch(e=>{console.warn(`managed: Fix cache invalidation failed`,e)})}function PI(){if(EI().length!==0&&kI()&&bI.size!==0){for(let e of TI()){let t=hI(F.triage.get(e)),n=gI(t);if((yI.get(e)?.key??``)===n)continue;if(!_I(e,t)){console.warn(`managed: triage entry exceeds the server caps, kept local only`,e),yI.set(e,{key:n,fix:yI.get(e)?.fix??``});continue}let r=OI(e);if(r==null||!bI.has(xI(r.id)))continue;let i=F.currentManagedTeam,a=xI(r.id,i),o=SI.get(a);o??(o={report:r,key:a,teamId:i,changes:new Map},SI.set(a,o)),o.changes.set(e,t)}SI.size!==0&&(CI!=null&&clearTimeout(CI),CI=setTimeout(NI,pI))}}var FI=!1;function II(){FI||!kI()||(FI=!0,hd(PI))}function LI(){wu(),F.managedComments?.clear(),F.managedIssues.clear(),globalThis.document?.dispatchEvent(new Event(`managed-comments-reset`)),CI!=null&&(clearTimeout(CI),CI=null),SI.clear(),bI.clear(),yI.clear()}async function RI(e,{renderView:t=!0,signal:n,readAnnotations:r}={}){let i=F.reports,a=F.currentManagedTeam,o=F.managedSession?.role,s=F.managedSession?.id,c=()=>!n?.aborted&&F.serverMode===`managed`&&F.localMode!==!0&&F.managedSession!=null&&F.managedSession.id===s&&F.managedSession.role===o&&F.reports===i&&F.currentManagedTeam===a&&EI().some(t=>t.id===e);if(!c()||(bI.delete(xI(e)),NI(),!await zI(n)||!c()))return!1;let l=new Map(F.managedIssues),u=r?await r(e):null,d=r?u?.entries:await ix(e,a,{signal:n});if(d==null||!c())return!1;let f=!1,p=DI(e),m=u&&eg(p,u.issues,l);for(let e of p){if(!Object.hasOwn(d,e)){yI.delete(e);continue}let t=hI(d[e]);yI.set(e,{key:gI(t),fix:t?.fix??``});let n=t?.triage==null||t.triage===`ignored`?F.triage.get(e)?.ignoredReports:void 0;bn(F.triage,e,{...t,ignoredReports:n,scopedIgnoredReports:F.triage.get(e)?.scopedIgnoredReports})&&(f=!0)}if(bI.add(xI(e)),u&&qv(a,p,l),m&&!f&&t&&X(),f){if(await Dd(),!c())return!1;t&&X()}return PI(),!0}function zI(e){return e?e.aborted?Promise.resolve(!1):new Promise(t=>{let n=n=>{e.removeEventListener(`abort`,r),t(n)},r=()=>n(!1);e.addEventListener(`abort`,r,{once:!0}),wI.then(()=>n(!0),()=>n(!1))}):wI.then(()=>!0)}async function BI(e,{signal:t,readAnnotations:n}={}){let r=F.reports,i=F.currentManagedTeam,a=F.managedSession?.role,o=F.managedSession?.id,s=()=>!t?.aborted&&F.serverMode===`managed`&&!F.localMode&&F.reports===r&&F.currentManagedTeam===i&&F.managedSession?.id===o&&F.managedSession?.role===a&&bI.has(xI(e,i));if(!s()||(NI(),!await zI(t)||!s()))return!1;let c=DI(e),l=new Map([...c].map(e=>[e,yI.get(e)])),u=new Map(F.managedIssues),d=n?await n(e):null,f=n?d?.entries:await ix(e,i,{signal:t});if(f==null||!s())return!1;let p=d&&eg(c,d.issues,u),m=!1,h=!1;for(let e of c){let t=l.get(e),n=hI(F.triage.get(e));if(yI.get(e)!==t||gI(n)!==(t?.key??``))continue;let r=hI(f[e]);(t?.fix??``)!==(r?.fix??``)&&(h=!0),yI.set(e,{key:gI(r),fix:r?.fix??``});let i=r?.triage==null||r.triage===`ignored`?F.triage.get(e)?.ignoredReports:void 0;bn(F.triage,e,{...r,ignoredReports:i,scopedIgnoredReports:F.triage.get(e)?.scopedIgnoredReports})&&(m=!0)}if(h&&Kv(i),d&&qv(i,c,u),p&&!m&&X(),m){if(await Dd(),!s())return!1;X()}return!0}function VI(e,t){if(!e)return;let n=F.currentManagedReport;if(n!=null&&(F.managedReports.length!==1||F.managedReports[0].id!==n))return;let r=null,i,a=()=>i??=(async()=>{if(NI(),!await zI(t)||t?.aborted)return null;let i=await rx(e,{signal:t,reportId:n});return r=i?.revision??null,i})();return Object.assign(async e=>(await a())?.(e)??null,{start:()=>{a().catch(()=>{})},revision:()=>r})}async function HI(e){let t=await b(e),n=await im(t);if(n.kind===`reports`)return{kind:`reports`,reports:n.reports};let r;if(n.kind===`encrypted`){if(r=await Ve({tryPassword:e=>ee(t,e)}),!r)return null}else r=te(n.text);let i=await tm(r,{conflictResolver:async(t,n)=>{try{return await vS(t,n,{title:`Triage conflicts on import`,intro:`disagree with your local triage on`,trailingNote:`Reports and non-conflicting triage were already merged; pick which side to keep for these disagreements.`,importedSideLabel:`Apply imported`})}catch{let n=t.length;return alert(`Imported ${e.name}. Kept your local triage on ${n} conflicting entr${n===1?`y`:`ies`} because another dialog is open \u2014 re-drop the file to pick again.`),null}}});return(F.currentFile||F.currentWorkspace)&&X(),{kind:`workspace`,workspace:i}}var UI=`deepview.passkey.firstImportPrompted`;function WI(){try{return localStorage.getItem(UI)===`1`}catch{return!1}}function GI(){try{localStorage.setItem(UI,`1`)}catch{}}async function KI(){if(!(yo()||!xo()||WI())){if(!confirm(`Encrypt your DeepView data with a passkey?
160
+ `,e.pos))e.pos+=2;else return!1;return e.line++,!0}function TE(e){do _E(e),CE(e);while(wE(e))}var EE={__proto__:null,b:`\b`,t:` `,n:`
161
+ `,f:`\f`,r:`\r`,'"':`"`,"\\":`\\`},DE={__proto__:null,'"':/[^"\\[\p{Cc}--[\t\u0080-\u009F]]]*/vy,"'":/[^'[\p{Cc}--[\t\u0080-\u009F]]]*/vy},OE=/u([\dA-Fa-f]{4})|U([\dA-Fa-f]{8})/uy;function kE(e){let t=e.text[e.pos];if(t in EE)return EE[e.text[e.pos++]];let r=i(e,OE);q(r!==null,e,()=>`unsupported escape ${n(`\\${t??``}`)}`);let a=Number.parseInt(r[1]??r[2],16);return q(a<=1114111&&(a<55296||a>57343),e,()=>`\\${r[0]} is not a Unicode scalar value`),String.fromCodePoint(a)}var AE=/[\t ]*\r?\n(?:[\t ]|\r?\n)*/uy;function jE(e){let t=i(e,AE);return t===null?kE(e):(e.line+=t[0].split(`
162
+ `).length-1,``)}var ME=(e,t)=>e.text[e.pos+1]===t&&e.text[e.pos+2]===t,NE={__proto__:null,'"':/"/uy,"'":/'/uy,'"""':/"{3,5}/uy,"'''":/'{3,5}/uy};function PE(e,t){let n=ME(e,t),r=NE[n?t.repeat(3):t];e.pos+=n?3:1,n&&wE(e);let a=``;for(;;){if(a+=i(e,DE[t])[0],n&&wE(e)){a+=`
163
+ `;continue}q(!xE(e),e,`unterminated string`);let o=i(e,r);if(o!==null)return a+o[0].slice(3);let s=e.text[e.pos++];s===t?a+=s:s===`\\`?a+=n?jE(e):kE(e):bE(e,s,`a string`)}}var FE=/[\w-]+/uy;function IE(e){let t=e.text[e.pos];if(t===`"`||t===`'`)return q(!ME(e,t),e,`a multi-line string cannot be a key`),PE(e,t);let n=i(e,FE);return q(n!==null,e,()=>`expected a key, found ${vE(e)}`),n[0]}function LE(e){let t=[IE(e)];for(;;){if(_E(e),e.text[e.pos]!==`.`)return t;e.pos++,_E(e),t.push(IE(e)),q(t.length<=gE,e,`a key with too many parts`)}}var RE=/[\w+.:-]+/uy;function zE(e){let t=i(e,RE);q(t!==null,e,()=>`expected a value, found ${vE(e)}`);let r=t[0];if(r===`true`)return!0;if(r===`false`)return!1;let a=dE(r,e)??hE(r,e)??iE(r,e);return q(a!==void 0,e,()=>`expected a value, found ${n(r)}`),a}function BE(e,t,r,i){q(t[r]===void 0,e,()=>`duplicate key ${n(r)}`),t[r]=i}function VE(e,t){let n=LE(e);return q(e.text[e.pos]===`=`,e,()=>`expected "=" after the key, found ${vE(e)}`),e.pos++,_E(e),{header:!1,keys:n,value:XE(e,t)}}function HE(e,t){e.pos++;let n=[];for(TE(e);e.text[e.pos]!==`]`&&(n.push(XE(e,t+1)),TE(e),e.text[e.pos]!==`]`);TE(e))q(e.text[e.pos]===`,`,e,()=>`expected "," or "]", found ${vE(e)}`),e.pos++;return e.pos++,n}var UE=e=>typeof e==`object`&&!!e&&Object.getPrototypeOf(e)===null,WE=new WeakSet;function GE(e,t,n,r,i,a){let o=t;for(let t of r.slice(0,-1)){t in o||n.add(o[t]=Object.create(null));let r=o[t];q(n.has(r),e,()=>a(t,r)),o=r}BE(e,o,r.at(-1),i)}var KE=e=>Array.isArray(e)?`an array`:UE(e)?`an inline table`:`a value`,qE=(e,t)=>`${n(e)} is ${KE(t)}, which a dotted key cannot add to`;function JE(e){_E(e),q(!xE(e)&&e.text[e.pos]!==`#`,e,`an inline table across lines is not supported`)}function YE(e,t){e.pos++;let n=Object.create(null);WE.add(n);let r=new Set;if(JE(e),e.text[e.pos]===`}`)e.pos++;else do{JE(e),q(e.text[e.pos]!==`}`,e,`a trailing comma in an inline table is not supported`);let{keys:i,value:a}=VE(e,t+1);GE(e,n,r,i,a,qE),JE(e);let o=e.text[e.pos];q(o===`,`||o===`}`,e,()=>`expected "," or "}" on the inline table's line, found ${vE(e)}`)}while(e.text[e.pos++]===`,`);return n}function XE(e,t){q(t<=gE,e,`nested too deep`);let n=e.text[e.pos];return n===`"`||n===`'`?PE(e,n):n===`[`?HE(e,t):n===`{`?YE(e,t):zE(e)}function ZE(e){let t=e.text.startsWith(`[[`,e.pos);e.pos+=t?2:1,_E(e);let n=LE(e),r=t?`]]`:`]`;return q(e.text.startsWith(r,e.pos),e,()=>`expected "${r}", found ${vE(e)}`),e.pos+=r.length,{header:!0,keys:n,array:t}}function QE(e){_E(e);let t=e.text[e.pos];if(t===`[`)return ZE(e);if(!(t===`#`||t===`\r`||xE(e)))return VE(e,0)}function $E(e){if(_E(e),CE(e),!(wE(e)||e.pos===e.text.length))throw q(e.text[e.pos]!==`\r`,e,yE),new ZT(`expected the end of the line, found ${vE(e)}`,e.line)}function eD(e,t){return e.arrays.has(t)?`an array of tables`:Array.isArray(t)?`an array`:UE(t)?e.fixed.has(t)?`an inline table`:`a table`:`a value`}var tD=e=>n(e.join(`.`));function nD(e,t,r){let i=e.root;for(let a of r){a in i||e.implicit.add(i[a]=Object.create(null));let r=e.arrays.has(i[a])?i[a].at(-1):i[a];q(UE(r)&&!e.fixed.has(r),t,()=>`${n(a)} is ${eD(e,r)}, which a header cannot add to`),i=r}return i}function rD(e,t,n,r){e.pending.clear();let i=nD(e,t,n.slice(0,-1)),a=n.at(-1);if(r){a in i||e.arrays.add(i[a]=[]),q(e.arrays.has(i[a]),t,()=>`${tD(n)} is ${eD(e,i[a])}, not an array of tables`),i[a].push(e.current=Object.create(null));return}a in i?q(e.implicit.delete(i[a]),t,()=>`${tD(n)} is ${eD(e,i[a])} already`):i[a]=Object.create(null),e.current=i[a]}function iD(e,t,r){return!UE(r)||e.fixed.has(r)?`${n(t)} is ${eD(e,r)}, which a dotted key cannot add to`:e.implicit.has(r)?`a dotted key through ${n(t)}, a table a header made on its way, is not supported`:`${n(t)} is a table declared elsewhere, which a dotted key cannot add to`}function aD(e,t,n,r){GE(t,e.current,e.pending,n,r,(t,n)=>iD(e,t,n)),UE(r)&&e.fixed.add(r)}var oD={__proto__:null,"":`a byte order mark is not read`,"�":`U+FFFD is not supported: a decoder puts it where bytes are not UTF-8`};function sD(e){if(typeof e!=`string`)throw TypeError(`expected a string`);let t=/\p{Cs}|^\uFEFF|\uFFFD/u.exec(e);if(t===null)return;let n=e.slice(0,t.index).split(`
164
+ `).length-1;throw new ZT(oD[t[0]]??`a lone surrogate is not well-formed Unicode`,n)}function cD(e){sD(e);let t=Object.create(null),n={text:e,pos:0,line:0},r={root:t,current:t,implicit:new Set,pending:new Set,arrays:new Set,fixed:new Set};for(;n.pos<e.length;){let e=QE(n);e?.header===!0?rD(r,n,e.keys,e.array):e!==void 0&&aD(r,n,e.keys,e.value),$E(n)}return t}function lD(e){if(typeof e!=`string`)return null;let t=/^(?:github:|(?:git\+)?(?:(?:https?|ssh|git):\/\/(?:[\w.~%!$&'()*+,;=:-]*@)?(?:www\.)?github\.com(?::\d+)?\/|ssh:\/\/(?:[\w.~%!$&'()*+,;=-]*@)?(?:www\.)?github\.com:|(?:[^@/:]+@)?(?:www\.)?github\.com:))?([\w.-]+)\/([\w.-]+?)(?:\.git)?\/?$/iu.exec(e.trim().replace(/#.*$/su,``)),n=t&&`${t[1]}/${t[2]}`;return n&&Mt(`github`,n)?n:null}function uD(e,t){if(typeof e!=`string`)return;let n=/^https?:\/\/(?:www\.)?github\.com\/([^/]+\/[^/]+)\/tree\/[^/#?]+\/([^#?]+)/iu.exec(e.trim());if(n&&n[1].toLowerCase()===t.toLowerCase())try{return decodeURIComponent(n[2])}catch{return}}var dD=e=>e.replaceAll(`\\`,`/`).split(`/`).every(e=>e===``||e===`.`);function fD(e){if(typeof e!=`string`)return{};let t=e.replaceAll(`\\`,`/`).split(`/`);if(t.includes(`..`))return{};let n=t.filter(e=>e!==``&&e!==`.`).join(`/`);return Mt(`directory`,n)?{directory:n}:{}}function pD(e){let t=e?.repository,n=lD(typeof t==`string`?t:t?.url);if(!n)return;let r=t.directory;return typeof r!=`string`&&(r=uD(e.homepage,n),r!==void 0&&dD(r)&&(r=void 0)),{github:n,...fD(r)}}function mD(e,t){let n=e?.[t];if(typeof n!=`string`)return null;try{return t.endsWith(`.toml`)?cD(n):JSON.parse(n.replace(/^\uFEFF/u,``))}catch{return null}}function hD(e){let t=typeof e==`string`?e:e?.url;if(typeof t!=`string`)return null;let n=t.trim().replace(/#.*$/su,``).replace(/^github:/iu,``).replace(/^git\+/iu,``).replace(/^(?:ssh|git):\/\/(?:git@)?github\.com\//iu,`https://github.com/`).replace(/^git@github\.com:/iu,`https://github.com/`);return/^(?:https?:\/\/)?(?:www\.)?github\.com\//iu.test(n)?gi({repo:{github:n}}):null}function gD(e,t,n){let r=t?.ecosystem??e.ecosystem??`npm`,i=r===`composer`?mD(t?.files,`composer.json`):r===`cargo`?mD(t?.files,`Cargo.toml`)?.package:mD(t?.files,`package.json`),a=t?.name??e.name,o=t?.version??e.version??i?.version,s=gi(t),c=s?{github:s,directory:t.repo.directory}:r===`npm`||r===`soldeer`?pD(i):{github:[i?.repository,i?.support?.source,i?.source?.url,i?.homepage,i?.bugs].map(e=>hD(e)).find(Boolean)},l=typeof c?.directory==`string`?c.directory:void 0,u=s?qr(t.repo.commit):null;return{ecosystem:r,name:a,version:typeof o==`string`?o:void 0,github:c?.github??null,...l===void 0?{}:{directory:l},...u?{commit:u}:{},fileCount:n}}var _D=new WeakMap;function vD(e,t){let n=_D.get(e);if(n||_D.set(e,n=new Map),!n.has(t)){let r=`${t}/`,i=0,a=0;for(let[t,n]of e)t.startsWith(r)&&(i+=ha(n),a+=Yt(n));n.set(t,{bytes:i,loc:a})}return n.get(t)}var yD=new Set([`cargo`,`composer`,`soldeer`]);function bD(e,t,n){if(t?.ecosystem!==void 0)return t.ecosystem;if(!t?.name||/(?:^|\/)vendor\/([^/]+\/[^/]+)$/u.exec(e)?.[1]!==t.name)return;let r=Object.entries(t.files??{}).filter(([t,r])=>typeof r==`string`&&(!n||n.has(`${e}/${t}`)));return r.length>0&&r.every(([e])=>/\.(?:php|phtml)$/iu.test(e))?`composer`:void 0}function xD(e,t=e,n=null){let r={path:``,files:new Map,dirs:new Map};for(let n=0;n<e.length;n++){let i=e[n].split(`/`),a=r,o=t[n].split(`/`);for(let[e,t]of i.slice(0,-1).entries())a.dirs.has(t)||a.dirs.set(t,{path:i.slice(0,e+1).join(`/`),sourcePath:o.slice(0,-(i.length-e-1)).join(`/`),files:new Map,dirs:new Map}),a=a.dirs.get(t);a.files.set(i.at(-1),t[n])}CD(r,n,n?new Set(t):null);let i=e=>{e.package&&(e.packageInfo=gD(e.package,n?.get(e.sourcePath),e.fileCount));for(let t of e.dirs.values())i(t)};return i(r),r}function SD(e,t=null,n=null){let r=/(?:^|\/)node_modules\//u.exec(e),i=r?r.index+ +!!r[0].startsWith(`/`):e.length,a=n?new Set(n):null;for(let[n,r]of t??[]){let t=bD(n,r,a);if(!yD.has(t)||!r.name||n===`.`||!e.startsWith(`${n}/`)&&!n.startsWith(e))continue;let o=(t===`soldeer`?/(?:^|\/)dependencies\//u:/(?:^|\/)vendor\//u).exec(`${n}/`),s=o?o.index+ +!!o[0].startsWith(`/`):n.lastIndexOf(`/`)+1;i=Math.min(i,s)}return e.slice(0,i)}function CD(e,t,n){for(let r of e.dirs.values())CD(r,t,n);e.fileCount=e.files.size+[...e.dirs.values()].reduce((e,t)=>e+t.fileCount,0);let r=t?.get(e.sourcePath),i=bD(e.sourcePath,r,n);if(yD.has(i)&&r.name&&(e.boundary=!0,e.package={name:r.name,version:r.version,ecosystem:i},e.hideSrc=e.dirs.size===1&&e.dirs.has(`src`),e.hideSrc&&(e.srcNameConflicts=new Set([...e.dirs.get(`src`).files.keys()].filter(t=>e.files.has(t))))),/(?:^|\/)dependencies$/u.test(e.path)&&[...e.dirs.values()].some(e=>e.package?.ecosystem===`soldeer`)&&(e.boundary=!0),/(?:^|\/)vendor$/u.test(e.path)){let t=new Map;for(let[n,r]of e.dirs)if(!r.package&&r.files.size===0&&r.dirs.size>0&&[...r.dirs.values()].every(e=>e.package?.ecosystem===`composer`)){e.boundary=!0;for(let[e,i]of r.dirs)t.set(`${n}/${e}`,i)}else yD.has(r.package?.ecosystem)&&(e.boundary=!0),t.set(n,r);e.dirs=t}if(/(?:^|\/)node_modules$/u.test(e.path)){e.boundary=!0;let t=new Map;for(let[n,r]of e.dirs)if(r.boundary=!0,n.startsWith(`@`)&&r.files.size===0&&[...r.dirs.keys()].every(e=>!e.startsWith(`.`)&&!e.startsWith(`@`)))for(let[e,i]of r.dirs)i.boundary=!0,i.package??={name:`${n}/${e}`},t.set(`${n}/${e}`,i);else!n.startsWith(`.`)&&!n.startsWith(`@`)&&(r.package??={name:n}),t.set(n,r);e.dirs=t}if(/(?:^|\/)node_modules\/\.pnpm$/u.test(e.path)){e.boundary=!0;let t=new Map;for(let[n,r]of e.dirs){if(r.boundary=!0,r.files.size>0||r.dirs.size!==1)continue;let i=r.dirs.get(`node_modules`);if(!i||i.files.size>0||i.dirs.size!==1)continue;let a=i.dirs.values().next().value;if(!a.package)continue;let o=`${a.package.name.replace(`/`,`+`)}@`;if(!n.startsWith(o))continue;let s=/^(\d+\.\d+\.\d+(?:-[\da-z.-]+)?(?:\+[\da-z.-]+)?)([_(].*)?$/iu.exec(n.slice(o.length));if(!s)continue;a.package={...a.package,version:s[1]},e.dirs.set(n,a);let c=wD(n,a);t.has(c)||t.set(c,[]),t.get(c).push(a)}for(let e of t.values())if(!(e.length<2)){e.sort((e,t)=>e.path.localeCompare(t.path));for(let[t,n]of e.entries())n.package.variant=t+1}}return e}function wD(e,t){let n=t.package;return n?`${n.name}${n.version?`${yD.has(n.ecosystem)?` - `:`@`}${n.version}`:``}`:e}function TD(e,t,n=``,r=null){let i=t.toLowerCase(),a=(e,t,o=null)=>{let s=new Map([...e.files].filter(([e,a])=>{let s=n&&a.startsWith(n)?a.slice(n.length):a,c=o?.srcNameConflicts.has(e)?`src/${e}`:e;return(!r||r(a))&&(s.toLowerCase().includes(i)||`${t}/${c}`.toLowerCase().includes(i))})),c=new Map;for(let[n,r]of e.dirs){let i=e.hideSrc&&n===`src`,o=a(r,i?t:`${t}/${wD(n,r)}`,i?e:null);o&&c.set(n,o)}return s.size>0||c.size>0?{...e,files:s,dirs:c}:null};return i||r?a(e,``):e}function ED(e,t,n){let r=[e];if(t.hideSrc&&t.dirs.has(`src`)){let e=t.dirs.get(`src`),n=new Map(t.files);for(let[r,i]of e.files)n.set(t.srcNameConflicts.has(r)?`src/${r}`:r,i);return{names:r,node:{...t,sourcePath:e.sourcePath,files:n,dirs:e.dirs}}}if(e===`node_modules`&&t.files.size===0&&t.dirs.size===1&&t.dirs.has(`.pnpm`))return{names:[`node_modules`,`.pnpm`],node:t.dirs.get(`.pnpm`)};let i=Math.max(12,24-Math.max(0,n-1)*2);for(;!t.boundary&&t.files.size===0&&t.dirs.size===1&&r.length<3;){let[e,n]=t.dirs.entries().next().value;if(n.boundary||[...r,e].join(`/`).length>i)break;r.push(e),t=n}return{names:r,node:t}}function DD(e){if(e.altKey||e.ctrlKey||e.metaKey||e.shiftKey)return;let t=e.currentTarget,n=e.target.closest(`summary, .bundle-code-tree-link`);if(!n||!t.contains(n)||![`ArrowDown`,`ArrowUp`,`ArrowRight`,`ArrowLeft`,`Home`,`End`].includes(e.key))return;e.preventDefault(),e.stopPropagation();let r=[...t.querySelectorAll(`summary, .bundle-code-tree-link`)].filter(e=>{let t=e.parentElement;return e.tagName===`SUMMARY`&&(t=t.parentElement),!t.closest(`details:not([open])`)}),i=r.indexOf(n),a=n.tagName===`SUMMARY`?n.parentElement:null,o=n;e.key===`ArrowDown`&&(o=r[Math.min(i+1,r.length-1)]),e.key===`ArrowUp`&&(o=r[Math.max(i-1,0)]),e.key===`Home`&&(o=r[0]),e.key===`End`&&(o=r.at(-1)),e.key===`ArrowRight`&&a&&(a.open?o=r[i+1]??n:n.click()),e.key===`ArrowLeft`&&(a?.open?n.click():o=(a??n).parentElement.closest(`details`)?.querySelector(`summary`)??n),o?.focus()}function OD([e,t],[n,r]){return wD(e,t).localeCompare(wD(n,r))||t.path.localeCompare(r.path)}function kD(e,t=0,n=[]){for(let[r,i]of[...e.dirs.entries()].toSorted(OD))kD(ED(r,i,t).node,t+1,n);for(let[,t]of[...e.files.entries()].toSorted(([e],[t])=>e.localeCompare(t)))n.push(t);return n}function AD(e,t,n,r,i){let a=[t,n].filter(Boolean).join(`/`),o=qr(r);return{href:`https://github.com/${e}/blob/${o??`HEAD`}/${a.split(`/`).map(encodeURIComponent).join(`/`)}`,github:e,path:a,commit:o,package:typeof i?.name==`string`&&i.name?{name:i.name,version:i.version,ecosystem:i.ecosystem}:null}}function jD(e,t,n=null){if(typeof t!=`string`)return null;let r=e?.npm?.manifest;if(r){let e=qr(r.gitHead);return r.github?.github&&e?AD(r.github.github,_i({directory:r.github.directory??``}),t,e,null):null}let i=e?.repository;if(i)return AD(i.repo,i.path,t,i.commit,null);if(e?.kind!==`stasis`)return null;let a=e.bundle,o=null;for(let[e,n]of a?.modules??[]){let r=e===`.`?t:t.startsWith(`${e}/`)?t.slice(e.length+1):null;if(r!==null&&Object.hasOwn(n.files,r)){o={dir:e,info:n,rel:r};break}}if(!o)return null;let{dir:s,info:c,rel:l}=o,u=s===`.`?void 0:bD(s,c,null)??(s.split(`/`).includes(`node_modules`)?`npm`:void 0);if(u===void 0){let e=gi(a),r=gi({repo:{github:n?.github}}),i=e??r;return i?AD(i,typeof a.repo?.directory==`string`?_i(a.repo):r?.toLowerCase()===i.toLowerCase()?_i({directory:n.directory}):``,t,e?a.repo?.commit:void 0,null):null}let d=gD({name:c.name,ecosystem:u},c,0);return d.github?AD(d.github,d.directory??``,l,d.commit,d):null}function MD(e,t=null){return A`<a class="bundle-code-github-link" href="${e.href}" target="_blank" rel="noopener noreferrer" aria-label="Open on GitHub" data-tooltip="${e.path}" data-tooltip-repo="${e.github}" data-tooltip-commit="${e.commit??M}" data-tooltip-commit-info="${it(t,e.commit,e.github)??M}" data-tooltip-package="${e.package?.name??M}" data-tooltip-ecosystem="${e.package?.ecosystem??M}" data-tooltip-version="${e.package?.version??M}">${k(ia)}${e.package?A`<span hidden data-tooltip-package-icon>${Qe(e.package.ecosystem)}</span>`:M}</a>`}var ND=`.bundle-code-main, .bundle-source-modal, .bundle-search-side`,PD=new Map,FD=new WeakMap,ID=null;function LD(e){if(!e){queueMicrotask(RD);return}if(RD(),PD.has(e))return;if(!e.isConnected){queueMicrotask(()=>{e.isConnected&&LD(e)});return}let t=e.querySelector(`:scope > .bundle-source-code`);if(!t)return;let n=new ResizeObserver(()=>{FD.get(e)?.width!==zD(e)&&BD(e)});n.observe(t),n.observe(e.parentElement);let r=new MutationObserver(()=>BD(e));r.observe(t,{childList:!0,subtree:!0,characterData:!0}),r.observe(e,{attributes:!0,attributeFilter:[`class`]}),PD.set(e,()=>{n.disconnect(),r.disconnect()})}function RD(){for(let[e,t]of PD)e.isConnected||(t(),PD.delete(e))}function zD(e){let t=e.querySelector(`:scope > .bundle-source-code`),n=e.querySelector(`:scope > .bundle-source-lineno-col`);if(!t||!n)return 0;let r=getComputedStyle(t);return e.parentElement.clientWidth-n.getBoundingClientRect().width-parseFloat(r.paddingLeft)-parseFloat(r.paddingRight)}function BD(e){let t=e.querySelector(`:scope > .bundle-source-code`),n=e.querySelector(`:scope > .bundle-source-lineno-col`),r=zD(e);if(!t||!n||!e.isConnected||r<=0)return;let i=e.classList.contains(`is-wrapped`),a=FD.get(e)?.rows??new Map,o=null;for(let e of n.children)if((!o||(a.get(e)??1)<a.get(o))&&(o=e),!a.has(e))break;let{rows:s,toggles:c}=VD(t,r,i,o?parseFloat(getComputedStyle(o).height)/(a.get(o)??1):parseFloat(getComputedStyle(t).lineHeight)),l=new Map;for(let[e,t]of s){let r=n.children[e];if(!r)continue;let i=`"${`\\A `.repeat(t-1)} "`;r.style.getPropertyValue(`--wrap-breaks`)!==i&&r.style.setProperty(`--wrap-breaks`,i),l.set(r,t)}for(let e of a.keys())l.has(e)||e.style.removeProperty(`--wrap-breaks`);FD.set(e,{rows:l,width:r});let u=e.closest(ND)?.querySelector(`[data-bundle-source-wrap]`);u&&(u.hidden=!c)}function VD(e,t,n,r){let i=getComputedStyle(e);ID??=document.createElement(`canvas`).getContext(`2d`),ID.font=`${i.fontSize} ${i.fontFamily}`;let a=t/(2*ID.measureText(`0`).width),o=[],s=null,c=null,l=0,u=0,d=()=>{l>a&&c&&o.push({line:u,first:s,last:c}),u++,l=0,s=c=null},f=document.createTreeWalker(e,NodeFilter.SHOW_TEXT);for(let e=f.nextNode();e;e=f.nextNode()){let t=e.data;for(let n=0;n<t.length;){let r=t.indexOf(`
165
+ `,n),i=r===-1?t.length:r;if(i>n){s??={node:e,from:n,to:n+(t.codePointAt(n)>65535?2:1)};let r=i;for(;r>n&&(t[r-1]===` `||t[r-1]===` `);)r--;r>n&&(c={node:e,from:r-(r-2>=n&&t.codePointAt(r-2)>65535?2:1),to:r}),l+=i-n}if(r===-1)break;d(),n=r+1}}d();let p=new Map,m=document.createRange(),h=({node:e,from:t,to:n})=>(m.setStart(e,t),m.setEnd(e,n),m.getBoundingClientRect()),g=e.getBoundingClientRect().left+e.clientLeft+parseFloat(i.paddingLeft),_=!1;for(let{line:e,first:i,last:a}of o){let o=!!i.node.parentElement.closest(`.bundle-source-long-line`);if(n||o){let t=Math.round((h(a).top-h(i).top)/r)+1;t>1&&p.set(e,t),t>1&&!o&&(_=!0)}else!_&&h(a).right-g>t+.5&&(_=!0)}return{rows:p,toggles:_}}function HD(e){let t=e.closest(ND)?.querySelector(`.bundle-source-code-wrap`),n=t?.querySelectorAll(`.bundle-source-lineno-row`);if(!n?.length)return()=>{};let r=t.getBoundingClientRect().top,i=n.length-1,a=0;for(;a<i;){let e=a+i>>1;n[e].getBoundingClientRect().bottom<=r?a=e+1:i=e}let o=n[a],s=o.getBoundingClientRect().top-r;return()=>{o.isConnected&&(t.scrollTop+=o.getBoundingClientRect().top-r-s)}}var UD=new Set([`js`,`mjs`,`cjs`,`jsx`,`ts`,`mts`,`cts`,`tsx`,`css`,`json`]),WD=4194304;function GD(e){let t=/\.([a-z]+)$/iu.exec(e)?.[1]?.toLowerCase();return UD.has(t)?t:null}function KD(e,t,n=()=>vt(e,t)){return GD(e)!==null&&ha(t)<=WD&&n().category===`minified`}var qD=e=>e.bundle??e.json??e,JD=/\\(?:x([\dA-Fa-f]{2})|u([\dA-Fa-f]{4})|u\{([\dA-Fa-f]{1,6})\}|([0-3][0-7]{0,2}|[4-7][0-7]?)|(\r\n|[\s\S]))/gu,YD={b:`\b`,f:`\f`,n:`
166
+ `,r:`\r`,t:` `,v:`\v`},XD=e=>e.replaceAll(JD,(e,t,n,r,i,a)=>{if(i!==void 0)return String.fromCodePoint(Number.parseInt(i,8));if(a!==void 0)return/^(?:\r\n|[\n\r\u2028\u2029])$/u.test(a)?``:YD[a]??a;let o=Number.parseInt(t??n??r,16);return o<=1114111?String.fromCodePoint(o):e}),ZD={i:`ı`,k:`K`,s:`ſ`},QD=e=>new Set([e,e.toLowerCase(),e.toUpperCase(),...ZD[e.toLowerCase()]??``]);function $D(e){let t=String.raw`(?=[.\\${[...e].map(e=>String.raw`\u{${e.codePointAt(0).toString(16)}}`).join(``)}])`,n=e=>String.raw`${e}(?=${t}((?:[^${e}\\\n]|\\(?:\r\n|[\s\S]))*)${e})`;return new RegExp(String.raw`(?<=(?:^|[^\\])(?:\\\\)*)(?:${n(`"`)}|${n(`'`)}|\x60(?=${t}((?:[^\x60\\]|\\[\s\S])*)\x60))`,`gu`)}function eO(e,t){return t.includes(`\\`)?e==="`"?t.replaceAll(/\\[\s\S]/gu,``).includes("${")?[]:[XD(t),t]:[XD(t)]:e==="`"&&t.includes("${")?[]:[t]}var tO=/(?<=(?<![\p{ID_Continue}$.#])(?:import|from)[ \t]*)/uy,nO=/(?<=(?<![\p{ID_Continue}$.#])import[ \t]*\([ \t]*)/uy,rO=/[ \t]*[,)]/uy,iO=(e,t,n)=>(e.lastIndex=n,e.test(t)),aO=(e,t,n,r)=>t!=="`"&&iO(tO,e,n)||iO(nO,e,n)&&iO(rO,e,r),oO=/^\.\.?(?:\/|$)/u,sO=/\.(?:json|node)$/u,cO=[`.js`,`.json`,`.node`],lO=/(?:^|\/)\.{0,2}$/u,uO=/[^/.][^/]*\.[^/]*$/u;function dO(e,t){let n=[...e];for(let e of t.split(`/`)){if(e===`..`&&n.pop()===void 0)return null;e!==`..`&&e!==`.`&&e!==``&&n.push(e)}return n}var fO=(e,t)=>t!==null&&e.every((e,n)=>n<t.length&&(t[n]===e||bO(t[n])===e))?t.slice(e.length).join(`/`):null,pO=(e,t,n)=>fO(e,dO([...e,...t===``?[]:t.split(`/`)],n)),mO=e=>new Set([e,e.replaceAll(`\\`,`/`)]),hO=(e,t,n)=>[...mO(n)].filter(e=>oO.test(e)).map(n=>pO(e,t,n)),gO=/[%?#\\\t\n\r]|[\0- ]$/u;function _O(e,t,n){if(!oO.test(n))return null;if(!gO.test(n))return pO(e,t,n);try{let r=[...e,...t===``?[]:t.split(`/`)].map(e=>`${encodeURIComponent(e)}/`).join(``),{pathname:i}=new URL(n,`file:///${r}`);return/%(?:2f|5c)/iu.test(i)?null:fO(e,dO([],decodeURIComponent(i)))}catch{return null}}var vO=/^(?:@[^/]+\/)?[^/@.][^/]*$/u,yO=e=>typeof e==`string`&&vO.test(e)&&e.split(`/`).every(e=>e!==`.`&&e!==`..`)?[`node_modules`,...e.split(`/`)].map(bO):[],bO=e=>e.toWellFormed().normalize(`NFC`).toUpperCase().toLowerCase();function xO(e){let t=new Map,n=new Map,r=(e,t,n)=>e.has(t)?e.get(t).push(n):e.set(t,[n]);for(let i of e.keys()){let e=/(?:^|\/)\.gitignore$/u.test(i)?[i,i.replace(/\.gitignore$/u,`.npmignore`)]:[i];for(let a of e)r(n,bO(a),i),r(t,a,i)}let i=e=>n.get(e)??[];return{installed:e=>e===null?[]:i(bO(e)),cased:{named:e=>t.get(e)??[],fold:e=>e},folding:{named:i,fold:bO}}}function SO(e){let t=[],n=[e];for(;n.length>0;){let e=n.pop();if(typeof e==`string`)t.push(e);else if(e&&typeof e==`object`)for(let t of Object.values(e))n.push(t)}return t}function CO(e,t){return(e&&typeof e==`object`&&!Array.isArray(e)&&Object.keys(e).some(t)?Object.entries(e):[[`.`,e]]).flatMap(([e,t])=>SO(t).map(t=>({key:e,pattern:e.includes(`*`),target:t})))}function wO(e){let t={name:null,main:null,targets:[],exports:[],hasExports:!1,imports:[]};if(typeof e!=`string`)return t;try{let{name:t,main:n,exports:r,imports:i}=JSON.parse(e.replace(/^\uFEFF/u,``)),a=CO(r,e=>e.startsWith(`.`)).filter(({key:e,target:t})=>e.startsWith(`.`)&&t.startsWith(`./`)),o=CO(i,e=>e.startsWith(`#`)).filter(({key:e})=>e.startsWith(`#`)),s=[...a,...o.filter(({target:e})=>e.startsWith(`./`))];return{name:t,main:typeof n==`string`&&n!==``?n:null,targets:s,exports:a,hasExports:r!=null,imports:o}}catch{return t}}var TO=e=>e.replaceAll(/\/+/gu,`/`).replace(/^\//u,``);function EO(e,t,n,r,i){let a=_O(t,n,r);if(a===null||!i||!a.includes(`*`))return[a];let o=bO(a).split(`*`),s=o.length-1,c=o[0].replace(/\/+$/u,``),l=TO(o.join(`/`)),u=o.at(-1).replace(/^\/+/u,``),d=e=>e.includes(!0)&&e.includes(!1)?[``,`/`]:[``],f=d(o.slice(1).map(e=>e.startsWith(`/`))),p=d(o.slice(0,-1).map((e,t)=>e.endsWith(`/`)||t===0&&e===``)).flatMap(e=>f.map(t=>({after:t,at:TO(`${o[0]}${e}x`).length-1,before:e,length:TO(o.join(`${e}x${t}`)).length})));return e.filter(([e,t])=>!t.startsWith(c)||!t.endsWith(u)||o.at(-1)===``&&(uO.test(e)||pt.test(e))?!1:t===l||p.some(({after:e,at:n,before:r,length:i})=>{let a=(t.length-i)/s+1;if(!Number.isInteger(a)||a<=0)return!1;let c=o.join(`${r}${t.slice(n,n+a)}${e}`);return c===t||(c.includes(`//`)||c.startsWith(`/`))&&TO(c)===t})).map(([e])=>e)}var DO=65536,OO=Symbol(`every file`),kO=(e,t)=>e.flatMap(({dir:e,key:n,target:r})=>{let i=n.indexOf(`*`);if(i===-1?n!==t:i!==n.lastIndexOf(`*`)||t.length<n.length||!t.startsWith(n.slice(0,i))||!t.endsWith(n.slice(i+1)))return[];if(i===-1)return[{dir:e,target:r}];let a=t.slice(i,t.length-(n.length-i-1));return[{dir:e,target:(r.split(`*`).length-1)*a.length>DO?OO:r.replaceAll(`*`,a)}]}),AO=(e,{exports:t,hasExports:n},r)=>n?kO(t.map(e=>({...e,dir:``})),r).map(({target:t})=>t===OO?OO:_O(e,``,t)):[_O(e,``,r)];function jO({named:e,fold:t},n,r){let i=n===``?null:t(n),a=i===null?void 0:r.find(t=>e(`${i}${t}`).length>0);return a===void 0?null:`${n}${a}`}var MO=(e,t)=>jO(e,t===``?`index`:`${t}/index`,cO);function NO(e,t,n,r,i){if(r===null)return[];let a=i?null:jO(t,r,[``,...cO]);if(a!==null)return[a];let o=t.named(r===``?`package.json`:`${t.fold(r)}/package.json`).map(t=>wO(e.get(t)).main).filter(e=>e!==null).flatMap(e=>[...mO(e)].map(e=>pO(n,r,e))).filter(e=>e!==null).map(e=>jO(t,e,[``,...cO])??MO(t,e)).filter(e=>e!==null);return o.length>0?o:[MO(t,r)].filter(e=>e!==null)}var PO=e=>[...e].filter(([e])=>/(?:^|\/)package\.json$/iu.test(e)).flatMap(([e,t])=>wO(t).imports.map(({key:t,target:n})=>({dir:e.slice(0,-13),key:t,target:n}))),FO=64,IO=new WeakMap;function LO(e){let t=IO.get(qD(e));if(t)return t;t=new Set;let n=Bt(e),{installed:r,cased:i,folding:a}=xO(n),o=[],s=wO(n.get(n.has(`package.json`)?`package.json`:r(`package.json`)[0])),c=yO(s.name),l=(e,t)=>!(t===`require`?sO:uO).test(e),u=new Set,d=(e,i)=>{let a=e===null?null:`${i}\0${l(e,i)}\0${bO(e)}`;if(!(a===null||u.has(a))){u.add(a);for(let a of r(e)){let r=n.get(a);t.has(a)||ct(a,r)||r?.runnable===!1||!l(e,i)&&!l(a,i)||(t.add(a),typeof r==`string`&&o.push(a))}}},f=(e,t)=>{let r=NO(n,a,c,e,t);if(r.length>0)for(let a of[...r,...NO(n,i,c,e,t)])d(a,`require`)};f(``,!0);let p=[...n].filter(([e])=>/(?:^|\/)package\.json$/iu.test(e)).flatMap(([e,t])=>wO(t).targets.map(({pattern:t,target:n})=>[e.slice(0,-13),n,t&&n.includes(`*`)]));if(p.filter(([,,e])=>e).length>FO)for(let e of n.keys())d(e,`require`);else{let e=p.some(([,,e])=>e)?[...n.keys()].map(e=>[e,bO(e)]):[];for(let[t,n,r]of p)for(let i of EO(e,c,t,n,r))d(i,`require`)}for(let[e,t]of n)ct(e,t)&&o.push(e);let m=PO(n),h=e=>c.length>0&&e.length>s.name.length&&`/\\`.includes(e[s.name.length])&&bO(e.slice(0,s.name.length))===c.slice(1).join(`/`),g=new Set,_=$D([...c.length>0?QD(s.name[0]):[],...m.length>0?[`#`]:[]]),v=e=>AO(c,s,e),y=!1,b=(e,t)=>{if(e!==OO)return d(e,t);if(!y)for(let e of n.keys())d(e,`require`);y=!0},ee=(e,t)=>{if(!g.has(`${t}\0#\0${e}`)){g.add(`${t}\0#\0${e}`);for(let{dir:n,target:r}of kO(m,e)){let e=r===OO?[OO]:r.startsWith(`./`)?[_O(c,n,r)]:h(r)?v(`./${r.slice(s.name.length+1)}`):c.length>0&&r===s.name?v(`.`):[];for(let n of e)b(n,t)}}},te=(e,t,n)=>{if(e.startsWith(`#`))return ee(e,n()?`import`:`require`);let[r,i]=h(e)?[``,`./${e.slice(s.name.length+1)}`]:[t,e];if(!oO.test(i.replaceAll(`\\`,`/`)))return;let a=n()?`import`:`require`,o=`${a}\0${r}\0${i}`;if(!g.has(o)){if(g.add(o),h(e))for(let e of v(i))b(e,a);if(!(h(e)&&s.hasExports)){if(a===`require`)for(let e of hO(c,r,i))f(e,lO.test(i));d(_O(c,r,i),`import`)}}};for(let e=0;e<o.length;e++){let t=o[e],r=n.get(t),i=t.includes(`/`)?t.slice(0,t.lastIndexOf(`/`)):``;for(let{1:e,2:t,3:n,index:a}of r.matchAll(_)){let o=e??t??n,s=r[a];for(let e of eO(s,o))te(e,i,()=>aO(r,s,a,a+o.length+2))}}return IO.set(qD(e),t),t}var RO=new WeakMap;function zO(e,t){let n=RO.get(qD(e));if(n||RO.set(qD(e),n=new Map),!n.has(t)){let r=Bt(e).get(t);n.set(t,ue(t,typeof r==`string`?r:null,Vt(e).get(t),LO(e).has(t)))}return n.get(t)}var BO=(e,t=e=>e)=>e?new Map(Object.entries(e).map(([e,n])=>[t(e),n])):null,VO=({stamps:e,readability:t,runsCode:n,exfiltration:r,hosts:i})=>({stamps:e,runsCode:BO(n),exfiltration:BO(r),hosts:BO(i),readability:t&&{...t,controls:BO(t.controls,Number)}});function HO(e){switch(e.id){case`held-runs-code`:case`held-credentials`:case`held-exfiltration`:case`held-remote`:case`held-ip-lookup`:return{...e,files:e.files.map(e=>({...e,found:BO(e.found),...e.added?{added:BO(e.added)}:{}}))};case`popularity`:return{...e,tier:e.tier??1/0};default:return e}}var UO=e=>({oldVersion:e.oldVersion??null,findings:e.findings.map(HO),files:new Map(Object.entries(e.files).map(([e,t])=>[e,VO(t)])),dependencies:e.dependencies,score:e.score??null}),WO=e=>e?.npm?e.risk?.()?.files??null:null,GO={stamps:[],readability:null,runsCode:null,exfiltration:null,hosts:null};function KO(e,t){return e?.npm?WO(e)?.get(t)??GO:zO(e,t)}var qO=({names:e,loop:t})=>[e>=mt&&`${e.toLocaleString(`en`)}${e===gt?` or more`:``} names such as _0x1a2b`,t&&`while(!![])`].filter(Boolean).join(`, and `);function JO(e,t,n){return n===Bt(e).get(t)&&typeof n==`string`?KO(e,t).readability:XO(e,t,n)}var YO=new WeakMap;function XO(e,t,n){let r=YO.get(e);r||YO.set(e,r=new Map);let i=r.get(t);if(i?.text===n)return i.read;let a=vt(t,n);return r.set(t,{text:n,read:a}),a}function ZO(e,t){let n=Tt(e,t),r=n.slice(0,6).map(([e,t])=>`U+${e.toString(16).toUpperCase().padStart(4,`0`)} \xD7${t.toLocaleString(`en`)}`);return`${wt.get(t).name}: ${r.join(`, `)}${n.length>6?`, and ${n.length-6} more`:``}`}var QO=({longLines:e,longest:t})=>`${e.toLocaleString(`en`)} ${e===1?`line`:`lines`} over ${dt} characters, the longest ${t.toLocaleString(`en`)}`;function $O(e){let{average:t,category:n,longLines:r,inlineMap:i}=e,a=()=>QO(e);switch(n){case`binary`:return`Not UTF-8 text, or holding a NUL: there is no text to read`;case`map`:return`A source map`;case`inline-map`:return`Inline source map, ${Wr(i)}${r>0?`; minified: ${a()}`:``}`;case`minified`:return`Minified: ${r>0?a():`its lines of code ${t.toLocaleString(`en`)} characters long on average, strings and comments aside, with few spaces`}`;default:return M}}function ek(e,t=!1){if(!e)return M;let n=bt(e),{tag:r,short:i,mark:a}=wt.get(n);return A`<span class="${`npm-encoding-tag${a?` is-${a}`:``}`}" data-tooltip="${$O({...e,category:n})}">${t?i??r:r}</span>`}function tk(e){let t=e?.kind;return t!==`ascii`&&t!==`utf8`||bt(e)===t?M:ek({...e,category:t})}function nk(e,t=null){let n=e?St(e).filter(n=>[`controls`,`invisible`,`long`].includes(n)&&(t===null||t.includes(Ct(e,n)))):[];if(n.length===0)return M;let r=t=>t===`long`?`${QO(e)}${e.category===`long`?`, among readable ones`:``}`:ZO(e.controls,t);return n.map(t=>A`<span class="${`npm-flag-tag is-${Ct(e,t)}`}" data-tooltip="${r(t)}">${wt.get(t).tag}</span>`)}function rk(e){if(!e)return M;let t=bt(e);return t===`ascii`||t===`map`?nk(e):ik(e)}var ik=e=>e?A`${nk(e)}${ek(e)}`:M;function ak(e,t,n,r=!0){let{stamps:i,readability:a}=KO(e,t),o=r&&i.some(({name:e})=>e===`Large`),s=a?.obfuscation;return!o&&!s?M:A`${o?A`<span class="npm-flag-tag is-notice" data-tooltip="${`A code file of ${Wr(n)}, 256 KiB or more`}">Large</span>`:M}${s?A`<span class="npm-flag-tag is-warn" data-tooltip="${`An obfuscator's fingerprint: ${qO(s)}`}">Obfuscated</span>`:M}`}var ok=A`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5.5 2.5c-1.4 0-2 .6-2 2v1.6c0 .9-.5 1.6-1.5 1.9 1 .3 1.5 1 1.5 1.9v1.6c0 1.4.6 2 2 2M10.5 2.5c1.4 0 2 .6 2 2v1.6c0 .9.5 1.6 1.5 1.9-1 .3-1.5 1-1.5 1.9v1.6c0 1.4-.6 2-2 2"/></svg>`,sk=e=>e?.status===`loading`?`Pretty-printing…`:e?.status===`error`?`Couldn't pretty-print${e.of>1?` ${e.failed} of ${e.of} files`:``}: ${e.message}`:`Pretty-print`,ck=8,lk=4,uk=2,dk=30,fk=2,pk=`The server's copy is of another file than the one open.`,mk=`The server didn't pretty-print this file.`,hk=e=>!(e>=400&&e<500&&e!==429),gk=5e3,_k=3e5,vk=new Map;function yk(e,t,n,r){if(!t?.retry){vk.delete(e);return}let i=vk.get(e)??0;vk.set(e,i+1),setTimeout(()=>{n()&&r()?.()},Math.min(gk*2**i,_k))?.unref?.()}var bk=new Map,xk=0,Sk=()=>xk,Ck=new Map,wk=(e,t)=>`${e.integrity}\0${t}`,Tk=new Map,Ek=new Map,Dk=new WeakMap;function Ok(e,t,n,r){if(!(t?.managedId||t?.npm)||typeof r!=`string`)return!1;let i=Dk.get(e);return i||Dk.set(e,i=new Map),i.has(n)||i.set(n,KD(n,r,()=>XO(e,n,r))),i.get(n)}var kk=!1,Ak=new Set,jk=new Set;function Mk(e,t){bk.delete(e),bk.set(e,t),kk||(kk=!0,jk=Ak,Ak=new Set,setTimeout(()=>{kk=!1})),Ak.add(e),Nk()}function Nk(){for(let[e,t]of bk){if(bk.size<=ck)break;Ak.has(e)||jk.has(e)||t.status===`loading`||(bk.delete(e),Ck.delete(e))}}var Pk=0,Fk=[];async function Ik(e){Pk<fk?Pk++:await new Promise(e=>{Fk.push(e)});try{return await e()}finally{let e=Fk.shift();e?e():Pk--}}async function Lk(e,t,n,r,i,a){let o;try{let e=a??await Ei(i),{text:t,source:s}=await Ik(()=>n.npm?Gb(n.npm.name,n.npm.version,r,e):Ub(n.managedId,r,e));o=s===e&&typeof t==`string`?{status:`ready`,text:t,hash:await Ei(t)}:{status:`error`,message:pk,retry:!0}}catch(n){if(n?.name===`AbortError`){bk.get(e)===t&&(bk.delete(e),Ck.delete(e));return}o={status:`error`,message:n?.message??String(n),retry:hk(n?.status)}}if(bk.get(e)!==t)return;bk.set(e,o),xk++;let s=Ck.get(e),c=o.status===`error`&&o.retry;c||Ck.delete(e),yk(`file ${e}`,c?o:null,()=>bk.get(e)===o&&bk.delete(e),()=>Ck.get(e)),s?.(),Nk()}function Rk(){for(let[e,t]of Tk){if(Tk.size<=lk)break;t.rest&&Tk.delete(e)}}function zk(e,t){let n=e.notifiers.get(t);e.notifiers.delete(t),n?.()}async function Bk(e,t,n,{npm:r}){let i=Bt(n),a;try{await Wb(r.name,r.version,async({path:e,source:n,text:r,status:a,message:o})=>{let s=i.get(e),c=typeof r==`string`&&typeof s==`string`&&n===await Ei(s)?{status:`ready`,text:r,hash:await Ei(r)}:typeof r==`string`?{status:`error`,message:pk,retry:!0}:{status:`error`,message:o,retry:hk(a)};t.copies.set(e,c),xk++,zk(t,e)}),a={status:`error`,message:mk,retry:!1}}catch(n){if(n?.name===`AbortError`){Tk.get(e)===t&&Tk.delete(e);return}a={status:`error`,message:n?.message??String(n),retry:hk(n?.status)}}t.rest=a,xk++;for(let e of[...t.notifiers.keys()])zk(t,e);Rk()}function Vk(e,t,n,r,i){let a=e.integrity,o=Tk.get(a);return Tk.delete(a),o||(o={copies:new Map,notifiers:new Map,rest:null},Bk(a,o,e,t)),Tk.set(a,o),Rk(),r===Bt(e).get(n)?(o.copies.get(n)??o.rest)||(o.notifiers.set(n,i),{status:`loading`}):{status:`error`,message:pk,retry:!1}}function Hk(e,t,n,r,i){return F.bundleSourcePretty?t.npm?Vk(e,t,n,r,i):Uk(e,n,r,i,t):null}function Uk(e,t,n,r,i=e){let a=wk(e,t),o=bk.get(a),s=o??{status:`loading`};return Mk(a,s),(s.status===`loading`||s.retry)&&Ck.set(a,r),o||Lk(a,s,i,t,n,e.fileHashes?.get(t)),s}var Wk=new Set;function Gk(e){e&&(Wk.size===0&&setTimeout(()=>{let e=[...Wk];Wk.clear();for(let t of e)t()},dk),Wk.add(e))}function Kk(){for(let[e,t]of Ek){if(Ek.size<=uk)break;t.ended&&Ek.delete(e)}}async function qk(e,t,n,r){let i={base:n,other:r},a=null;try{let e=async({side:e,path:n,source:r,text:a,status:o,message:s})=>{if(typeof a!=`string`&&hk(o))return;let c=Object.hasOwn(i,e)?i[e]:null,l=c&&Bt(c).get(n),u=typeof a==`string`&&typeof l==`string`&&r===(c.fileHashes?.get(n)??await Ei(l));t.copies.set(`${e}\0${n}`,u?{status:`ready`,text:a,hash:await Ei(a)}:typeof a==`string`?{status:`error`,message:pk,retry:!0}:{status:`error`,message:s,retry:hk(o)}),xk++,Gk(t.notify)};await(n.npm?qb(n.npm.name,n.npm.version,r.npm.version,e):Kb(n.managedId,r.managedId,e))}catch(n){if(n?.name===`AbortError`){Ek.get(e)===t&&Ek.delete(e);return}a={status:`error`,message:n?.message??String(n),retry:hk(n?.status)}}Object.assign(t,{ended:!0,rest:a}),xk++,yk(`comparison ${e}`,a,()=>Ek.get(e)===t&&Ek.delete(e),()=>t.notify),Gk(t.notify),Kk()}function Jk(e,t,n,r,i,a){let o=`${e.integrity}\0${t.integrity}`,s=Ek.get(o);Ek.delete(o),s||(s={copies:new Map,notify:null,ended:!1,rest:null},qk(o,s,e,t)),Ek.set(o,s),Kk();let c=n===`base`?e:t;return i===Bt(c).get(r)?(s.notify=a,s.copies.get(`${n}\0${r}`)??s.rest??(s.ended?Uk(c,r,i,a):{status:`loading`})):{status:`error`,message:pk,retry:!1}}function Yk(){if(F.bundleSourcePretty=!F.bundleSourcePretty,!F.bundleSourcePretty)return;let e=e=>e.status===`error`&&e.retry;for(let[t,n]of bk)e(n)&&bk.delete(t);for(let[t,n]of Tk)n.rest&&(e(n.rest)||[...n.copies.values()].some(e))&&Tk.delete(t);for(let[t,n]of Ek)n.ended&&(n.rest?e(n.rest):[...n.copies.values()].some(e))&&Ek.delete(t)}function Xk(e,t,n){return e?.bundle===t&&e.files[e.at]===n?e:{bundle:t,files:n?[n]:[],at:0}}function Zk(e,t){if(e.files[e.at]===t)return e;let n=[...e.files.slice(0,e.at+1),t];return{...e,files:n,at:n.length-1}}function Qk(e,t){return{...e,at:Math.max(0,Math.min(e.at+t,e.files.length-1))}}function $k(e){let t=e.slice(e.lastIndexOf(`/`)+1);return t===`package-lock.json`||t===`npm-shrinkwrap.json`?`npm`:t===`pnpm-lock.yaml`||/^pnpm-lock\..+\.yaml$/u.test(t)?`pnpm`:t===`yarn.lock`?`yarn`:null}var eA=4,tA=new Map;function nA(e,t,n,r,i){if(!F.bundleSourceLockfile)return null;let a=$k(t);if(a===null)return null;let o=`${e.integrity}\0${t}`,s=tA.get(o)??{status:`loading`};tA.delete(o),tA.set(o,s);for(let e of tA.keys())tA.size>eA&&tA.delete(e);if(s.status===`loading`&&!s.started){s.started=!0;let e=r.get(`${t.slice(0,t.lastIndexOf(`/`)+1)}package.json`);import(`./chunk-IZ7POWI3.js`).then(({readLockfile:t})=>Object.assign(s,{status:`ready`,lockfile:{id:o,...t(a,n,{manifest:e})}})).catch(e=>Object.assign(s,{status:`error`,message:e instanceof Error?e.message:String(e)})).finally(i)}return s}function rA(){F.bundleSourceLockfile=!F.bundleSourceLockfile;for(let[e,t]of tA)t.status===`error`&&tA.delete(e)}var iA=e=>e?.status===`loading`?`Reading the lockfile…`:e?.status===`error`?`Couldn't read the lockfile: ${e.message}`:`View lockfile`,aA=e=>`link:${e}`,oA=e=>e===`.`?`__own__`:e;function sA(e){let t=Object.entries(e?.importers??{}),n=Object.entries(e?.packages??{}),r=new Map([...t.map(([e])=>[aA(e),oA(e)]),...n.map(([e,t])=>[e,t.name])]),i=new Map([...t.map(([e,t])=>[aA(e),t]),...n]),a=e=>r.has(e)?e:e.startsWith(`link:`)&&r.has(e.slice(5))?e.slice(5):null,o=Object.create(null);for(let[e,{dependencies:t}]of i)o[e]={imports:[...new Set(t.map(a).filter(t=>t!==null&&t!==e))]};let s=[...i.keys()];if(s.length===0)return null;let c=[...new Set(t.map(([e])=>oA(e)))];return{treeData:o,files:s,ownCounts:new Map,transitiveCounts:null,severitySets:new Map,colorSets:new Map,fileFindings:new Map,options:{pkgOf:e=>r.get(e),packageInfoOf:e=>({version:i.get(e).version})},packagesOnly:!0,supportsLayers:!0,layerRoots:{roots:c,appImports:[]},ownSourcePackages:new Set(c),entryPackages:new Set(c),ownSourceFiles:new Set(t.map(([e])=>aA(e))),hasIssues:!1,issuesShown:!1,viewId:e.id??null}}var cA=[`graph`,`matrix`,`dependencies`],lA=class extends pa{static properties={lockfile:{attribute:!1}};static styles=da`:host{display:flex;flex-direction:column;min-height:0}.slot{display:flex;flex-direction:column;flex:1;min-height:0}graph-layout{flex:1;min-height:0;border:none;border-radius:0}.empty{color:var(--muted)}`;constructor(){super(),this.lockfile=null,this._prep=null,this._graphState=null,this._attachment=0,this._bundleLayout=null,this.addEventListener(`click`,e=>this._click(e)),this.addEventListener(`input`,e=>this._input(e))}connectedCallback(){super.connectedCallback(),this.hasUpdated&&this._prep&&this._attach()}disconnectedCallback(){super.disconnectedCallback(),this._detach()}willUpdate(e){e.has(`lockfile`)&&(this._prep=sA(this.lockfile),this._prep||this._detach(),w.selected=null,w.solo=null,w.focusedPkg=null)}render(){return this.lockfile?this._prep?A`<div class="slot"></div>`:A`<p class="empty">No packages.</p>`:null}updated(e){e.has(`lockfile`)&&this._prep&&this._attach()}_detach(){this._attachment++,this._graphState&&w.graphState===this._graphState&&ar(),this._graphState=null,this._bundleLayout!==null&&(w.bundleLayout=this._bundleLayout),this._bundleLayout=null}async _attach(){this._bundleLayout??=w.bundleLayout,w.bundleLayout=w.lockfileLayout;let e=this.renderRoot.querySelector(`.slot`);if(!e)return;let t=++this._attachment;if(await TT().catch(()=>{}),t!==this._attachment||!this.isConnected)return;let n={showBundleLayouts:!0,layouts:cA,hideAllFiles:!0};await ET(e,this._prep,n,()=>this._refreshSidebar(),()=>this._refreshTopPkgs()),this._graphState=w.graphState}get _host(){return this.renderRoot.querySelector(`graph-layout`)}_refreshSidebar(){wT()?.refreshSidebar(this._prep,{},this._host)}_refreshTopPkgs(){wT()?.refreshTopPkgs(this._prep,this._host)}_click(e){let t=t=>e.composedPath().find(e=>e.matches?.(t)),n=t(`[data-g2-layout]`)?.dataset.g2Layout,r=t(`[data-g2-pkg]`)?.dataset.g2Pkg;if(n!==void 0)cA.includes(n)&&n!==w.bundleLayout&&(w.lockfileLayout=w.bundleLayout=n,w.selected=null,w.solo=null,w.layoutCache=null,ar(),this._attach());else if(r!==void 0)w.solo=w.solo===r?null:r,this._refreshSidebar(),this._refreshTopPkgs(),w.graphState?.requestDraw?.();else if(t(`#g2-path-filter-clear`)){w.pathFilter=``;let e=this._host?.shadowRoot?.querySelector(`#g2-path-filter`);e&&(e.value=``),w.graphState?.requestDraw?.()}else if(t(`#g2-fullscreen`))document.body.classList.toggle(`report-fullscreen`);else return;e.stopPropagation()}_input(e){let t=e.composedPath()[0];t?.id===`g2-path-filter`&&(w.pathFilter=t.value,w.graphState?.requestDraw?.(),e.stopPropagation())}};customElements.define(`lockfile-graph`,lA);function uA({title:e,count:t,extra:n=M,tools:r=M,body:i,list:a=!1,className:o=``}){return A`<section class="${`bundles-overview-col ${o}`}"><header class="bundles-overview-col-head"><span class="bundles-overview-col-title">${e} <span class="bundles-overview-col-count">${t}</span>${n}</span>${r}</header><div class="${`bundles-overview-col-body${a?` bundles-overview-col-body--list`:``}`}">${i}</div></section>`}var dA=1024,fA=1024*dA,pA=[`tiny`,`small`,`medium`,`large`,`gigantic`],mA={dependencies:[1,4,11,26],files:[3,24,192,1536],lines:[400,3200,25600,204800],unpacked:[16*dA,128*dA,fA,8*fA]};function hA(e,t){let n=mA[e].findIndex(e=>t<e);return pA[n===-1?pA.length-1:n]}function gA(e,t,n){return A`<span class="${`npm-sized is-${hA(e,t)}`}">${n}</span>`}var _A=[`preinstall`,`install`,`postinstall`];function vA(e,t=!1){let n={...e};return!n.preinstall&&!n.install&&t&&(n.install=`node-gyp rebuild`),_A.filter(e=>typeof n[e]==`string`).map(e=>[e,n[e]])}function yA(e,t=[]){return vA(e?.installScripts,!!(t&&(t instanceof Set?t.has(`binding.gyp`):t.includes(`binding.gyp`))))}function bA(e,t=!1){let n=null;try{n=typeof e==`string`?JSON.parse(e.replace(/^\uFEFF/u,``)):null}catch{}return vA(n&&typeof n==`object`&&n.scripts&&typeof n.scripts==`object`?n.scripts:{},t)}var xA=12096e5,SA=(e,{minimumReleaseAge:t=xA,now:n=Date.now()}={})=>t>0&&typeof e==`string`&&n-Date.parse(e)<t,CA=72,wA={top:6,right:0,bottom:18,left:40},TA=24,EA=4,DA=new Intl.NumberFormat(`en`,{notation:`compact`,maximumFractionDigits:1}),OA=new Intl.NumberFormat(`en`),kA=e=>new Intl.DateTimeFormat(`en`,{...e,timeZone:`UTC`}).format,AA=kA({month:`short`,day:`numeric`}),jA=kA({month:`short`,day:`numeric`,year:`numeric`}),MA=kA({month:`short`,year:`numeric`}),NA=kA({month:`long`,year:`numeric`}),PA=e=>e===1/0?`unpopular`:`top ${e.toLocaleString(`en`)}`,FA=(e,t)=>{let n=t&&ye(e);return A`<dd class="${`npm-downloads-tier ${n?`is-mid`:_e(e)}`}" data-tooltip="${n?t:M}">${PA(e)}</dd>`},IA={week:{label:`Weekly`,of:e=>fe(e).slice(-52),name:e=>`${AA(e.from)} \u2013 ${jA(e.to)}`},month:{label:`Monthly`,of:pe,name:e=>NA(e.from)}},LA=(e,t)=>`${OA.format(e)} downloads, ${t}`;function RA(e){let t=pe(e).at(-1);return t?zA(t):null}var zA=({total:e,from:t})=>({total:e,month:NA(t)});function BA(e){if(!(e>0))return 1;let t=10**Math.floor(Math.log10(e));return[1,2,2.5,5,10].map(e=>e*t).find(t=>t>=e)}var VA=class extends pa{static properties={downloads:{attribute:!1},status:{},known:{attribute:!1},_width:{state:!0},_at:{state:!0},_unit:{state:!0}};createRenderRoot(){return this}constructor(){super(),this.downloads=null,this.status=`loading`,this.known=null,this._width=0,this._at=null,this._unit=`week`,this._resize=new ResizeObserver(([e])=>{this._width=Math.floor(e.contentRect.width)})}connectedCallback(){super.connectedCallback(),this._resize.observe(this)}disconnectedCallback(){super.disconnectedCallback(),this._resize.disconnect()}_key(e){let t=this._periods.length-1,n={ArrowLeft:-1,ArrowRight:1,Home:-t-1,End:t+1};e.key in n&&(e.preventDefault(),this._at=Math.min(t,Math.max(0,(this._at??t)+n[e.key])))}willUpdate(e){let t=IA[this._unit],{downloads:n}=this;if((e.has(`downloads`)||e.has(`_unit`))&&(this._periods=t.of(n)),e.has(`downloads`)){this._latest=n==null?null:Object.fromEntries(Object.entries(IA).map(([e,{of:t,name:r}])=>{let i=t(n).at(-1);return[e,{total:i?.total??0,tooltip:i&&LA(i.total,r(i))}]})),this._tier=he(n);let e=n?.days.slice(-365),t=e?.reduce((e,t)=>e+t,0);this._year=n==null?null:{total:t,tooltip:LA(t,`${jA(de(n.start,n.days.length-e.length))} \u2013 ${jA(Date.parse(n.end))}`)}}(e.has(`downloads`)||e.has(`_unit`)||e.has(`_width`))&&(this._shape=this._shapeOf(t))}_shapeOf(e){let t=this._periods,n=this._width;if(t.length===0||n<=wA.left+wA.right)return null;let r=n-wA.left-wA.right,i=CA-wA.bottom,a=BA(Math.max(...t.map(e=>e.total))),o=e=>i-e/a*(i-wA.top),s=e=>e.toFixed(1),c=this._unit===`month`,l=r/(c?t.length:Math.max(t.length-1,1)),u=c?e=>wA.left+(e+.5)*l:e=>wA.left+(t.length>1?e*l:r/2),d=t.length-1,f=e=>Math.min(d,Math.max(0,(c?Math.floor:Math.round)((e-wA.left)/l))),p=MA(t[0].from),m=t.at(-1),h;if(c){let e=Math.min(TA,l*.7)/2;h={bars:t.map(({total:t},n)=>{let[r,a,c]=[u(n)-e,u(n)+e,o(t)],l=Math.min(EA,e,i-c);return`M${s(r)},${i}V${s(c+l)}Q${s(r)},${s(c)} ${s(r+l)},${s(c)}H${s(a-l)}Q${s(a)},${s(c)} ${s(a)},${s(c+l)}V${i}Z`})}}else{let e=t.map((e,t)=>`${t===0?`M`:`L`}${s(u(t))},${s(o(e.total))}`).join(``);h={line:e,area:`${e}L${s(u(d))},${i}L${s(u(0))},${i}Z`}}return{x:u,y:o,bottom:i,indexAt:f,first:p,last:MA(m.to),...h,ticks:[[0,DA.format(0)],[a,DA.format(a)]],label:`${e.label} downloads over the last year, from ${p} to ${MA(m.to)}; the latest ${this._unit}: ${LA(m.total,e.name(m))}.`}}_stat(e,t,n){return A`<div class="npm-stat"><dt class="sr-only">${e}</dt><dd data-tooltip="${t?.tooltip||M}">${this._figure(t,n)}</dd></div>`}_figure(e,t){return A`${e?DA.format(e.total):this.status===`loading`?`…`:`—`}<span class="npm-stat-per">/${t}</span>`}_latestStat(){let e=this._latest?.[this._unit];return A`<div class="npm-stat"><dt class="sr-only">${IA[this._unit].label} downloads</dt><dd class="npm-stat-units" data-tooltip="${e?.tooltip||M}">${Object.keys(IA).map(e=>A`<span class="${e===this._unit?``:`is-held`}" aria-hidden="${e===this._unit?M:`true`}">${this._figure(this._latest?.[e],e)}</span>`)}</dd></div>`}_controls(e){return A`<div class="npm-downloads-controls"><span class="bundles-overview-sort" role="group" aria-label="Downloads by">${Object.entries(IA).map(([e,{label:t}])=>A`<button type="button" aria-pressed="${String(this._unit===e)}" @click="${()=>{this._unit=e,this._at=null}}">${t}</button>`)} </span><span class="npm-downloads-readout" aria-live="polite">${e?A`<strong>${OA.format(e.total)}</strong> <span>${IA[this._unit].name(e)}</span>`:M}</span></div>`}render(){let e=this.downloads!=null||this.status!==`ready`,t=this._at===null?null:this._periods[this._at]??null;return A`<div class="npm-downloads-head"><dl class="npm-stats">${this._latestStat()} ${this._stat(`Downloads, last 12 months`,this._year,`year`)} ${this._tier?A`<div class="npm-stat"><dt class="sr-only">Popularity</dt>${FA(this._tier,this.known)}</div>`:M}</dl>${e?this._controls(t):M}</div>${e?this._plot(t):M}`}_plot(e){let t=this._shape;if(!t)return A`<div class="npm-downloads-plot" style="${E({height:`${CA}px`})}"></div>`;let n=this._width;return A`<div class="npm-downloads-plot" style="${E({height:`${CA}px`})}" tabindex="0" role="img" aria-label="${t.label}" @pointermove="${e=>{this._at=t.indexAt(e.offsetX)}}" @pointerleave="${()=>{this._at=null}}" @keydown="${e=>this._key(e)}" @blur="${()=>{this._at=null}}"><svg width="${n}" height="${CA}" viewBox="0 0 ${n} ${CA}" aria-hidden="true">${t.ticks.map(([e,r])=>j`<line class="npm-downloads-grid" x1=${wA.left} x2=${n-wA.right} y1=${t.y(e)} y2=${t.y(e)}></line>
167
+ <text class="npm-downloads-tick" x=${wA.left-6} y=${t.y(e)} dy="0.32em" text-anchor="end">${r}</text>`)} ${t.bars?t.bars.map((e,t)=>j`<path class=${`npm-downloads-bar${t===this._at?` is-at`:``}`} d=${e}></path>`):j`<path class="npm-downloads-area" d=${t.area}></path><path class="npm-downloads-line" d=${t.line}></path>`}<text class="npm-downloads-tick" x="${wA.left}" y="${CA-4}">${t.first}</text><text class="npm-downloads-tick" x="${n-wA.right}" y="${CA-4}" text-anchor="end">${t.last}</text>${e&&!t.bars?j`<line class="npm-downloads-crosshair" x1=${t.x(this._at)} x2=${t.x(this._at)} y1=${wA.top} y2=${t.bottom}></line>
168
+ <circle class="npm-downloads-dot" cx=${t.x(this._at)} cy=${t.y(e.total)} r="4"></circle>`:M}</svg></div>`}};customElements.get(`npm-downloads-chart`)||customElements.define(`npm-downloads-chart`,VA);function HA(e,t){let n=UA(e);return[n,`${n}.js`,`${n}.cjs`,`${n}.mjs`,`${n}/index.js`].find(e=>e&&t?.has(e))}var UA=e=>e.replace(/^(?:\.\/)+/u,``).replace(/\/+$/u,``),WA=/^licen[cs]e(?:-[\w.]+)?(?:\.(?:md|txt))?$/iu;function GA(e,t){let n=t.filter(e=>WA.test(e)),r=e=>{let t=e.toLowerCase().match(/^[a-z]+/u)?.[0]??``;return n.find(e=>{let n=e.toLowerCase().match(/^licen[cs]e-([a-z]+)/u)?.[1];return n!==void 0&&t!==``&&(n.startsWith(t)||t.startsWith(n))})??(n.length===1?n[0]:null)};return e.split(/(\s+(?:OR|AND|WITH)\s+|[()])/u).filter(Boolean).map(e=>({text:e,file:/^[\w.+-]+$/u.test(e)&&!/^(?:OR|AND|WITH)$/u.test(e)?r(e):null}))}var KA=e=>e?.replace(/\.git$/u,``),qA=new Map([[`github`,{label:`GitHub`,domain:`github.com`,protocols:[`git:`,`http:`,`git+ssh:`,`git+https:`,`ssh:`,`https:`],repo({pathname:e,hash:t}){let[,n,r,i,a]=e.split(`/`,5);return(!i||i===`tree`)&&n&&KA(r)?[n,KA(r),i?a:t.slice(1)]:null}}],[`bitbucket`,{label:`Bitbucket`,domain:`bitbucket.org`,protocols:[`git+ssh:`,`git+https:`,`ssh:`,`https:`],repo({pathname:e,hash:t}){let[,n,r,i]=e.split(`/`,4);return i!==`get`&&n&&KA(r)?[n,KA(r),t.slice(1)]:null}}],[`gitlab`,{label:`GitLab`,domain:`gitlab.com`,protocols:[`git+ssh:`,`git+https:`,`ssh:`,`https:`],repo({pathname:e,hash:t}){let n=e.slice(1),r=n.lastIndexOf(`/`);return n.includes(`/-/`)||n.includes(`/archive.tar.gz`)?null:n.slice(0,Math.max(r,0))&&KA(n.slice(r+1))?[n.slice(0,r),KA(n.slice(r+1)),t.slice(1)]:null}}],[`gist`,{label:`Gist`,domain:`gist.github.com`,protocols:[`git:`,`git+ssh:`,`git+https:`,`ssh:`,`https:`],repo({pathname:e,hash:t}){let[,n,r,i]=e.split(`/`,4);return i!==`raw`&&(n||r)?[r?n:null,KA(r||n),t.slice(1)]:null}}],[`sourcehut`,{label:`SourceHut`,domain:`git.sr.ht`,protocols:[`git+ssh:`,`https:`],repo({pathname:e,hash:t}){let[,n,r,i]=e.split(`/`,4);return i!==`archive`&&n&&KA(r)?[n,KA(r),t.slice(1)]:null}}]]),JA=new Map([...qA.values()].map(e=>[e.domain,e])),YA=new Set([`git+ssh:`,`ssh:`,`git+https:`,`git:`,`http:`,`https:`,`git+http:`,...[...qA.keys()].map(e=>`${e}:`)]);function XA(e){let t=e.indexOf(`#`),n=e.indexOf(`/`);return n>0&&!e.startsWith(`.`)&&(t>-1?e[t-1]!==`/`:!e.endsWith(`/`))&&![/\s/u.exec(e)?.index??-1,e.indexOf(`@`),e.indexOf(`:`),e.indexOf(`/`,n+1)].some(e=>e>-1&&!(t>-1&&e>t))}var ZA=e=>{try{return new URL(e)}catch{return null}};function QA(e){let t=e.indexOf(`@`),n=e.indexOf(`:`),r=YA.has(e.slice(0,n+1))||t>-1&&t<n?e:t>-1?`git+ssh://${e}`:e.indexOf(`//`)===n+1?e:`${e.slice(0,n+1)}//${e.slice(n+1)}`;if(ZA(r))return ZA(r);let i=e=>{let t=r.indexOf(`#`);return r.lastIndexOf(e,t>-1?t:1/0)},a=i(`:`)>i(`@`)?`${r.slice(0,i(`:`))}/${r.slice(i(`:`)+1)}`:r;return a.lastIndexOf(`:`,a.indexOf(`#`)>-1?a.indexOf(`#`):1/0)===-1&&!a.includes(`//`)&&(a=`git+ssh://${a}`),ZA(a)}function $A(e){if(!e)return null;let t=QA(XA(e)?`github:${e}`:e);if(!t)return null;let n=qA.get(t.protocol.slice(0,-1)),r=n??JA.get(t.hostname.replace(/^www\./u,``)),i=n?[t.pathname.replace(/^\/?[^@]*@|^\//u,``),t.hash.slice(1)]:r?.protocols.includes(t.protocol)&&r.repo(t);try{return i?(i.forEach(e=>e&&decodeURIComponent(e)),r):null}catch{return null}}function ej(e){let t=String(e??``).trim();if(/^(?:[.]|~\/|\/|[a-z]:|file:)/iu.test(t))return`path`;if(/^npm:/iu.test(t)||!/[/:]|[.](?:tgz|tar\.gz|tar)$/iu.test(t))return`registry`;let n=$A(t);if(n)return n.label;if(/^(?:git\+)?[a-z]+:/iu.test(t)){let e=/^git\+ssh:\/\/([^:#]+:[^#]+(?:\.git)?)(?:#.*)?$/iu.exec(t);if(t.startsWith(`git+ssh:`)&&e&&!/:\d+(?:\/|$)/u.test(e[1]))return`git`;let n=ZA(t)?.protocol;return/^(?:git|git\+(?:https?|rsync|ftp|file|ssh)):$/u.test(n)?`git`:/^https?:$/u.test(n)?`URL`:null}return/\/|[.](?:tgz|tar\.gz|tar)$/iu.test(t)?`path`:`registry`}function tj(e){let[,t,n=``]=/^npm:((?:@[^/@]+\/)?[^/@]+)(?:@(.*))?$/iu.exec(String(e??``).trim())??[];return t?{name:t,spec:n}:null}var nj=e=>ej(e)===`registry`,rj=[[`dependencies`,null],[`peerDependencies`,`peer`],[`optionalDependencies`,`optional`]];function ij(e){let t=[];for(let[n,r]of rj)for(let[i,a]of Object.entries(e?.[n]??{})){let e=tj(a)?.name??i;t.push({name:i,range:a,kind:r,opens:ei(e)&&nj(a)?e:null})}return t.toSorted((e,t)=>e.name.localeCompare(t.name)||(e.kind??``).localeCompare(t.kind??``))}function aj(e,t){let n=e=>new Map(ij(e).map(e=>[`${e.kind??``}\0${e.name}`,e])),r=n(t),i=n(e),a=[],o=[],s=[];for(let[e,{name:t,kind:n,range:a,opens:c}]of i){let i=r.get(e);i?i.range!==a&&o.push({key:e,name:t,kind:n,from:a,to:i.range,opens:i.opens}):s.push({key:e,name:t,kind:n,range:a,opens:c})}for(let[e,{name:t,kind:n,range:o,opens:s}]of r)i.has(e)||a.push({key:e,name:t,kind:n,range:o,opens:s});return{removed:s,added:a,changed:o}}var oj=(e=[])=>e.map(({check:e,label:t,tooltip:n})=>A`<span class="${`npm-dependency-flag is-${e}`}" data-tooltip="${n}">${t}</span>`);function sj(e,t=null,n=void 0){let r=Oj(`risk`,`${e.name}@${e.version}${t===null?``:`..${t}`}`,()=>Bb(e.name,e.version,t,{signal:n}),UO);return r.status===`ready`?r:null}function cj(e){return e.map(e=>{let t=e.format===`npm`?`npm`:[`sourcemap`,`sourcemaps`].includes(e.kind)||e.filename.toLowerCase().endsWith(`.map`)?`sourcemap`:`stasis`,n=t===`npm`?e.detail??``:t===`sourcemap`?`Sourcemap`:`Stasis`,r=[];if(e.date&&r.push(e.date),typeof e.size==`string`&&![``,`—`].includes(e.size)&&r.push(e.size),e.files){r.push(`${e.files.length.toLocaleString()} files`);let{lines:t}=Gr(e.files);t!=null&&r.push(`${t.toLocaleString()} LoC`)}else e.summary&&(Number.isSafeInteger(e.summary.files)&&e.summary.files>=0&&r.push(`${e.summary.files.toLocaleString()} files`),Number.isSafeInteger(e.summary.lines)&&e.summary.lines>=0&&r.push(`${e.summary.lines.toLocaleString()} LoC`));return{value:e.id,label:e.filename,displayLabel:e.displayLabel,detail:n,format:t,secondary:r.join(` · `),...e.dateWarning&&{secondaryWarning:e.dateWarning}}})}var lj=e=>e.displayLabel??e.label,uj=class extends xe{static properties={bundles:{attribute:!1},noun:{},versions:{type:Boolean,reflect:!0}};static styles=[xe.styles,da`.bundle-icon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 1.05rem;width:1.05rem;height:1.05rem;color:var(--muted)}.bundle-icon img,.bundle-icon svg{display:block;width:100%;height:100%;opacity:1;color:inherit}.option{gap:.5rem;padding-block:.25rem}.option-copy{gap:0}.option .name{line-height:1.3}.option .bundle-icon{flex-basis:1.35rem;width:1.35rem;height:1.35rem;margin-right:.15rem}.secondary{line-height:1.25;font-variant-numeric:tabular-nums}:host([versions]) .group{display:grid;gap:.1rem;font-size:.76rem;grid-template-columns:repeat(auto-fill,minmax(min(100%,calc(max(var(--option-width, 6ch),var(--secondary-width, 0ch) * .76) + 1rem)),1fr))}:host([versions]) .secondary{font-size:.76em}:host([versions]) .option{flex-wrap:wrap;align-content:start;gap:0 .8rem;padding:.3rem .45rem;font-variant-numeric:tabular-nums}:host([versions]) .option>svg,:host([versions]) .option .bundle-icon{display:none}:host([versions]) .option-copy{flex:0 1 auto}:host([versions]) .option .detail{font-size:.62rem;line-height:1.6}:host([versions]) .trigger .name:has(+.detail){flex:0 1 auto}:host([versions]) .trigger .detail{flex:1 1 0%;min-width:0;overflow:hidden;text-overflow:ellipsis;text-align:right}`];constructor(){super(),this.bundles=null,this.noun=`bundle`,this.versions=!1,this.label=`Choose bundle`,this.placeholder=`Choose bundle`}get searchLabel(){return`Search ${this.noun}s`}get optionsLabel(){return`${this.noun[0].toUpperCase()}${this.noun.slice(1)}s`}get noMatchesLabel(){return`No matching ${this.noun}s`}get emptyLabel(){return this.noun===`bundle`?`No stored bundles`:`No other ${this.noun}s`}get changeEvent(){return`bundle-change`}get menuWidth(){return this.versions?500:super.menuWidth}willUpdate(e){if(e.has(`bundles`)&&this.bundles&&(this.options=cj(this.bundles)),e.has(`options`)&&this.versions){let e=e=>Math.min(Math.max(0,...this.options.map(t=>e(t)?.length??0)),28);this.style.setProperty(`--option-width`,`${e(lj)}ch`),this.style.setProperty(`--secondary-width`,`${e(e=>e.secondary)}ch`)}}optionTooltip(e){return lj(e)}optionIcon(e){return e.format?A`<span class="bundle-icon" aria-hidden="true">${e.format===`npm`?k(Xi):e.format===`sourcemap`?k(Yi):A`<img src="./stasis.svg" alt="">`}</span>`:M}choices(){let e=this._query.normalize(`NFKC`).toLocaleLowerCase().trim().split(/\s+/u).filter(Boolean),t=this.options.filter(t=>e.every(e=>`${t.label} ${t.detail}`.normalize(`NFKC`).toLocaleLowerCase().includes(e))),n=this.versions?t:t.toSorted((e,t)=>e.label.localeCompare(t.label,void 0,{numeric:!0,sensitivity:`base`}));return{pinned:[],sections:[{label:null,options:n}],facets:[],showFacets:!1,count:n.length,total:this.options.length}}};customElements.get(`bundle-selector`)||customElements.define(`bundle-selector`,uj);var dj=/^https?:\/\/(?:www\.)?npmjs\.(?:com|org)\/package\/((?:@[^/]+\/)?[^/?#]+)(?:\/v\/([^/?#]+))?\/?(?:[?#].*)?$/u;function fj(e){let t=String(e??``).trim(),n=dj.exec(t),r,i=null;if(n)try{[r,i]=[decodeURIComponent(n[1]),n[2]?decodeURIComponent(n[2]):null]}catch{return null}else{let e=t.indexOf(`@`,1);[r,i]=e===-1?[t,null]:[t.slice(0,e),t.slice(e+1)]}return!ei(r)||i!==null&&!ti(i)?null:{name:r,spec:i}}var pj=(e,t=null)=>t==null?e:`${e}@${t}`;function mj(e,t){let n=new Set(t),r=[];for(let t of[e?.main,e?.module,`index.js`]){if(typeof t!=`string`)continue;let e=HA(t,n);e&&!r.includes(e)&&r.push(e)}return r}function hj(e){return{integrity:e.integrity,kind:`sourcemap`,name:`${e.name}@${e.version}`,size:e.tarballSize,npm:{name:e.name,version:e.version,private:e.private===!0,published:typeof e.published==`string`?e.published:null,manifest:e.manifest??{}}}}function gj(e,t){let n=zt(e,t.files);return{...n,npm:e.npm,npmEntries:mj(e.npm.manifest,n.json.sources),risk:()=>sj(e.npm)}}function _j(e,t=`overview`,n=null){return e?.npm?{view:`npm`,packageName:e.npm.name,packageSpec:e.npm.version,bundleTab:si.has(t)?t:`overview`,...n}:null}var vj=3,yj=new Map,bj=new Map,xj=1e4,Sj=3e5,Cj=null;function wj(){let e=F.managedSession?`${F.managedSession.id}\0${F.managedSession.role}`:null;return e!==Cj&&(yj.clear(),bj.clear(),Cj=e),yj}function Tj(e,t){let n=wj();for(n.delete(e.name),n.set(e.name,{entry:e,details:t});n.size>vj;)n.delete(n.keys().next().value)}async function Ej(e,t,n){let r=wj().get(`${e}@${t}`);if(r)return Tj(r.entry,r.details),r;let i=await yb(e,t,n),a=hj(i),o=gj(a,i);return a.npm.private||Tj(a,o),Dj(i),{entry:a,details:o}}function Dj({name:e,version:t,known:n}){if(!n||typeof n!=`object`)return;let r={stats:e,advisories:e,tags:`${e}@${t}`,socket:`${e}@${t}`,provenance:`${e}@${t}`};for(let[e,t]of Object.entries(r)){let r=`${e}\0${t}`;n[e]&&bj.get(r)?.status!==`ready`&&bj.set(r,{status:`known`,data:n[e]})}}function Oj(e,t,n,r){wj();let i=`${e}\0${t}`,a=bj.get(i);if(a?.status===`known`){let e={status:`ready`,...r(a.data)};return bj.set(i,e),e}if(a&&!(a.status===`error`&&Date.now()>=a.retryAt))return a;let o={status:`loading`,failures:a?.failures??0};return bj.set(i,o),n().then(e=>({status:`ready`,...r(e)}),e=>{if(e?.name===`AbortError`)return null;let t=o.failures+1,n=Math.min(xj*2**(t-1),Sj);return{status:`error`,failures:t,wait:n,retryAt:Date.now()+n}}).then(e=>bj.get(i)===o?e===null?(bj.delete(i),null):(bj.set(i,e),e.status===`error`&&setTimeout(()=>{bj.get(i)===e&&X()},e.wait).unref?.(),Aj(),null):null).catch(()=>{}),o}var kj=!1;function Aj(){kj||(kj=!0,queueMicrotask(()=>{kj=!1,X()}))}function jj(e,t=void 0){return Oj(`versions`,e,()=>Ib(e,{signal:t}),e=>({versions:e.versions??[],distTags:e.distTags??{},times:e.times??{},created:typeof e.created==`string`?e.created:null,private:e.private===!0,teamScoped:e.teamScoped===!0}))}function Mj(e={}){let t=new Map;for(let[n,r]of Object.entries(e))t.set(r,[...t.get(r)??[],n]);return t}function Nj(e,t,n=Date.now()){let r=Mj(e.distTags);return(e.versions?.includes(t)?e.versions:[t,...e.versions??[]]).map(t=>{let i=e.times?.[t];return{id:t,detail:r.get(t)?.join(`, `)??``,...i&&{date:i.slice(0,10)},...i&&Pj(e,i,n)&&{age:Rj(i,n)}}})}function Pj(e,t,n=Date.now()){return e.status===`ready`&&SA(t,{minimumReleaseAge:e.teamScoped?0:xA,now:n})}var Fj=new Intl.RelativeTimeFormat(`en`,{numeric:`auto`});function Ij(e,t=Date.now()){let n=Math.floor((t-Date.parse(e))/864e5),r=n<60?Fj.format(-n,`day`):n<730?Fj.format(-Math.floor(n/30.44),`month`):Fj.format(-Math.floor(n/365.25),`year`);return`${jA(Date.parse(e))} \xB7 ${r}`}var Lj=new Intl.RelativeTimeFormat(`en`,{numeric:`always`});function Rj(e,t=Date.now()){let n=Math.max(0,Math.floor((t-Date.parse(e))/6e4));return n<60?Lj.format(-n,`minute`):n<1440?Lj.format(-Math.floor(n/60),`hour`):Lj.format(-Math.floor(n/1440),`day`)}var zj=e=>jA(Date.parse(e)),Bj=e=>`Published on ${zj(e)}`;function Vj(e){let{name:t,version:n}=e.npm,r=jj(t),i=Nj(r,n).map(({id:e,detail:n,date:r,age:i})=>({id:e,name:`${t}@${e}`,displayLabel:e,format:`npm`,detail:n,...r&&{date:r},...i&&{dateWarning:i}}));return{noun:`version`,base:n,widest:{name:`${t}@10.90.90`,detail:`latest`},pending:r.status===`loading`,error:r.status===`error`?`Couldn't list the versions of ${t}.`:null,options:i.filter(e=>e.id!==n),choices:i,name:r=>r===e.integrity||r===n?e.name:`${t}@${r}`,load:async e=>(await Ej(t,e)).details,dependencies:nM,openDependency:cM,open:(e,n,r)=>Hj(t,e,`compare`,n?{compareSpec:n,...ri(r)}:{})}}function Hj(e=null,t=null,n=`overview`,r={}){!I()||!G?.active||G.navigate(e==null?{view:`npm`}:{view:`npm`,packageName:e,packageSpec:t,bundleTab:n,...r})}function Uj(e,t=null){F.currentView=`npm`,F.npmLookup=e,F.npmOpening=t,F.currentManagedTeam=null,F.currentManagedReport=null,document.body.classList.remove(`report-fullscreen`),X({animate:!1})}var Wj=/^(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)(?:-[\dA-Za-z-]+(?:\.[\dA-Za-z-]+)*)?$/u,Gj=new Set([`overview`,`compare`]);async function Kj(e,t,n){let{packageName:r,packageSpec:i=null,bundleTab:a=`overview`}=e;if(r==null)return Uj({input:F.npmLookup?.input??``,error:null}),n(),{view:`npm`};let o=pj(r,i),s=F.currentView===`bundles`&&F.bundleDetails?.npm,c=s&&F.bundles?.[0]?.npm?.name===r&&F.bundles[0].npm.version===i?F.bundles[0]:null,l=c?F.bundleDetails:null;if(!c){let e=i!=null&&wj().has(`${r}@${i}`);!s&&!e&&(Uj({input:o,error:null},{name:r,spec:i,tab:a}),n());let u=new AbortController;jj(r,u.signal),i!=null&&Wj.test(i)&&Gj.has(a)&&sj({name:r,version:i},null,u.signal);try{({entry:c,details:l}=await Ej(r,i??`latest`,{signal:Q_()}))}catch(e){return u.abort(),e?.name===`AbortError`||!t()?!1:(Yj=null,Uj({input:o,error:e.message}),{view:`npm`})}if(!t()||!I())return u.abort(),!1}Yj?.name===r&&Yj.spec===i&&(Zj([o,...Xj().filter(e=>e!==o)]),Yj=null),ar();let u=F.bundleCompare?.bundle===c.integrity?F.bundleCompare:null;return a===`review`&&(F.npmReview={bundle:c.integrity,...e.reviewPackage?{reviewPackage:e.reviewPackage,reviewSpec:e.reviewSpec??null}:{}}),F.bundles=[c],WK(c.integrity,a),a===`code`&&e.file!=null&&(F.bundleCodeFileRequest={bundle:c.integrity,file:e.file,...e.line==null?{}:{line:e.line},...e.endLine==null?{}:{endLine:e.endLine}}),a===`compare`&&e.compareSpec!=null?F.bundleCompare={bundle:c.integrity,target:e.compareSpec,mode:ni(e.compareMode)}:u&&(F.bundleCompare=u),F.bundleDetails=l,F.npmLookup={input:c.name,error:null},F.npmOpening=null,F.currentManagedTeam=null,F.currentManagedReport=null,F.reports=[],document.body.classList.remove(`report-fullscreen`),X({animate:!1}),n(),document.querySelector(`#main-content`)?.scrollTo({top:0}),_j(c,F.bundleDetailsTab,Vx(F))}var qj=10,Jj=()=>`deepview.npm.recent.${F.managedSession?.id??`anonymous`}`,Yj=null;function Xj(){try{let e=JSON.parse(localStorage.getItem(Jj())??`[]`);return Array.isArray(e)?e.filter(e=>typeof e==`string`&&fj(e)):[]}catch{return[]}}function Zj(e){try{localStorage.setItem(Jj(),JSON.stringify(e.slice(0,qj)))}catch{}}function Qj(e){Zj(Xj().filter(t=>t!==e)),X()}function $j(e){let t=fj(e);if(!t){F.npmLookup={input:e??``,error:`Enter a package name, like lodash, @scope/name or name@1.2.3.`},X();return}Yj=t,Hj(t.name,t.spec)}function eM(e){e.preventDefault(),$j(e.currentTarget.querySelector(`input[name="package"]`)?.value)}function tM(){let e=F.npmLookup??{input:``,error:null},t=[`admin`,`manage`].includes(F.managedSession?.role),n=Xj();return A`<section class="npm-lookup" aria-labelledby="npm-lookup-title"><header class="npm-lookup-head"><span class="npm-lookup-icon" aria-hidden="true">${k(Xi)}</span><h1 id="npm-lookup-title">npm packages</h1></header><p class="npm-lookup-intro">Open a published version to read its files, as its tarball has them. ${t?M:`You can open public packages, and private ones in npm scopes your teams list.`}</p><form class="npm-lookup-form" @submit="${eM}"><input name="package" type="text" aria-label="Package" autocomplete="off" spellcheck="false" maxlength="500" placeholder="lodash, @scope/name@1.2.3 or an npmjs.com link" .value="${e.input??``}"> <button type="submit">Open</button></form><div class="npm-lookup-message">${e.error?A`<p class="npm-lookup-error" role="alert">${e.error}</p>`:M}</div>${n.length>0?A`<section class="npm-lookup-recent" aria-labelledby="npm-lookup-recent-title"><h2 id="npm-lookup-recent-title">Recent searches</h2><ul>${n.map(e=>A`<li><button type="button" class="npm-lookup-recent-open" @click="${()=>$j(e)}">${e}</button> <button type="button" class="npm-lookup-recent-remove" aria-label="${`Remove ${e} from recent searches`}" @click="${()=>Qj(e)}">×</button></li>`)}</ul></section>`:M}</section>`}function nM(e,t){let n=aj(e?.npm?.manifest,t?.npm?.manifest),r=e?.npm&&t?.npm?sj(t.npm,e.npm.version)?.dependencies:null,i=[e?.npm,t?.npm],a=(e,t)=>e.map(e=>({flags:[],...t?.find(({key:t})=>t===e.key),...e}));return{removed:n.removed,added:a(n.added,r?.added).map(e=>({...e,compared:i})),changed:a(n.changed,r?.changed)}}var rM=e=>{let t=sj(e)?.dependencies;return new Map((t?.held??t?.added??[]).map(({key:e,flags:t})=>[e,t]))},iM=({kind:e,name:t})=>`${e??``}\0${t}`,aM=/^(?:[\^~]|=)?v?(\d+\.\d+\.\d+(?:-[\w.-]+)?(?:\+[\w.-]+)?)$/u,oM=e=>aM.exec(tj(e)?.spec??e.trim())?.[1]??null,sM=e=>tj(e)?.name??null;function cM({opens:e,from:t,to:n}){if(!e)return;let r=n&&oM(n),i=t&&oM(t);!i||!r||i===r||sM(t)!==sM(n)?Hj(e):Hj(e,r,`compare`,{compareSpec:i})}function lM(e){let t=ij(e.npm.manifest);if(t.length===0)return M;let n=rM(e.npm);return uA({title:`Dependencies`,count:t.length,list:!0,body:A`<ul class="bundles-sources-list npm-dependency-list">${t.map(e=>{let{name:t,range:r,kind:i,opens:a}=e,o=n.get(iM(e))??[],s=A`<span class="npm-dependency-name"><span class="bundles-source-path" data-tooltip-truncated data-tooltip="${t}">${t}</span>${oj(o)}</span> ${i?A`<span class="npm-dependency-kind">${i}</span>`:M} <span class="bundles-source-size" data-tooltip-truncated data-tooltip="${r}">${r}</span>`;return A`<li>${a?A`<button type="button" class="bundles-source-row npm-dependency-row" data-npm-dependency="${a}" @click="${()=>Hj(a)}">${s}</button>`:A`<div class="bundles-source-row npm-dependency-row is-resource">${s}</div>`}</li>`})}</ul>`})}var uM=[[`source`,`Non-registry`,()=>`From elsewhere than npm's registry`],[`unimported`,`Unimported`,e=>`Imported by nothing of ${e}`]];function dM(e){let t=rM(e),n=Map.groupBy(ij(e.manifest).flatMap(e=>(t.get(iM(e))??[]).map(({check:t})=>({...e,check:t}))),({check:e})=>e);return uM.filter(([e])=>n.has(e)).map(([t,r,i])=>A`<span class="npm-extension is-warn npm-dependency-check" data-tooltip="${`${i(e.version)}: ${n.get(t).map(({name:e,range:t})=>`${e} ${t}`).join(`, `)}`}"><span>${r}</span><span class="npm-extension-count">${n.get(t).length}</span></span>`)}function fM(e,t){let{name:n,version:r}=e.npm,i=Oj(`tags`,`${n}@${r}`,()=>zb(n,r),e=>({tags:Array.isArray(e.tags)?e.tags.filter(e=>typeof e==`string`&&e):[]}));return i.status!==`ready`||i.tags.length===0?M:A`<span class="bundle-origin-tags">${i.tags.map(e=>A`<a class="bundle-origin-link bundle-tag-link" href="${nt(t,e)}" target="_blank" rel="noopener noreferrer">${k(Gi)}<span>${e}</span></a>`)}</span>`}function pM(e,t,n=e){let r=n===e||n===`./${e}`?M:`./${e}`;return t?.has(e)?A`<button type="button" class="bundle-entry-point" data-bundle-view-source="${e}" data-tooltip="${r}">${n}</button>`:n}function mM(e,t,n){let r=e.knownAccounts?.includes(t);return A`<a class="${`bundle-origin-link npm-account ${r?`is-known`:`is-unknown`}`}" href="${`https://www.npmjs.com/~${encodeURIComponent(t)}`}" data-tooltip="${r?`Publishes one of npm's most downloaded packages`:`Unknown publisher`}" target="_blank" rel="noopener noreferrer"><span>${n}</span></a>`}var hM=/^\s*(Package no longer supported\.)\s+Contact Support at https:\/\/www\.npmjs\.com\/support for more info\.\s*$/u,gM=e=>e.replace(hM,`$1`);function _M(e,{prefix:t=``,githubFigures:n=M,provenance:r=M,provenanceNamesBuilder:i=!1,files:a=null}={}){let{manifest:o}=e.npm,s=o.github?.github,c=s?ot({repo:{github:s,directory:o.github.directory??``,commit:o.gitHead}})[0]:null,l=jj(e.npm.name),u=e.npm.published??l.times?.[e.npm.version];return A`<dl class="bundles-detail-meta npm-facts">${e.npm.private?A`<dt>Access</dt><dd>Private</dd>`:M} ${o.deprecated?A`<dt>Deprecated</dt><dd class="npm-deprecated">${gM(o.deprecated)}</dd>`:M} ${o.description?A`<dt>Description</dt><dd>${o.description}</dd>`:M} ${o.license?A`<dt>License</dt><dd>${GA(o.license,[...a??[]]).map(({text:e,file:t})=>pM(t,a,e))}</dd>`:M} ${o.author?A`<dt>Author</dt><dd class="bundle-origin-row">${o.authorAccount?A`${mM(o,o.authorAccount,o.author)}${o.author===o.authorAccount?M:A`<span class="npm-publisher">~${o.authorAccount}</span>`}`:o.author}</dd>`:M} ${o.publisher&&o.publisher!==o.authorAccount?A`<dt>Publisher</dt><dd class="bundle-origin-row">${mM(o,o.publisher,`~${o.publisher}`)}</dd>`:o.trustedPublisher&&!i?A`<dt>Publisher</dt><dd class="npm-trusted-publisher">${o.trustedPublisher}</dd>`:M} ${u?A`<dt>Published</dt><dd>${Pj(l,u)?A`<span class="npm-recent">${Ij(u)}</span>`:Ij(u)}</dd>`:M} ${c?A`<dt>GitHub</dt><dd class="bundle-origin-row"><a class="bundle-origin-link" href="${c.href}" target="_blank" rel="noopener noreferrer">${k(ia)}<span>${c.text}</span></a> ${n}</dd><dt>Commit</dt><dd class="bundle-origin-row">${c.commit?A`<a class="bundle-origin-link bundle-commit-link" href="${c.commit.href}" data-tooltip="${c.commit.hash}" data-tooltip-icon="commit" target="_blank" rel="noopener noreferrer">${k(aa)}<span>${c.commit.text}</span></a> ${fM(e,s)}`:A`<span class="npm-commit-missing">Not recorded at publish</span>`}</dd>`:M} ${r===M?M:A`<dt>Provenance</dt><dd class="bundle-origin-row">${r}</dd>`} ${o.homepage&&/^https?:\/\//iu.test(o.homepage)?A`<dt>Homepage</dt><dd><a class="bundle-origin-link" href="${o.homepage}" target="_blank" rel="noopener noreferrer"><span>${o.homepage}</span></a></dd>`:M}<dt>Integrity</dt><dd class="mono bundle-integrity" data-tooltip-truncated data-tooltip="${e.integrity}">${e.integrity}</dd>${t?A`<dt>Prefix</dt><dd class="mono">${t}</dd>`:M}</dl>`}var vM=(e,t)=>e.split(/(\s+)/u).map(e=>{let n=e.replace(/^\.\//u,``);return t?.has(n)?pM(n,t,e):e});function yM(e,t=null,n=null){let{manifest:r}=e.npm,i=[`main`,`module`,`types`].filter(e=>typeof r[e]==`string`).map(e=>({label:`${e[0].toUpperCase()}${e.slice(1)}`,path:r[e],file:HA(r[e],t)??UA(r[e])})),a=i.find(e=>e.label===`Main`),o=i.find(e=>e.label===`Module`);a&&o&&a.file===o.file&&(a.label=`Main, Module`,i.splice(i.indexOf(o),1));let s=Object.keys(r.bin??{}),c=yA(r,t),l=ij(r).length;return A`${i.map(({label:e,path:r,file:i})=>A`<dt>${e}</dt><dd class="mono"><span class="npm-entry-point">${qe(i,Ge(n,i))}${pM(i,t,r)}</span></dd>`)} ${r.type?A`<dt>Type</dt><dd class="mono">${r.type}</dd>`:M} ${s.length>0?A`<dt>Bin</dt><dd class="mono">${s.join(`, `)}</dd>`:M} ${r.engines?A`<dt>Engines</dt><dd class="mono">${Object.entries(r.engines).map(([e,t])=>`${e} ${t}`).join(`, `)}</dd>`:M} ${c.length>0||r.hasInstallScript?A`<dt>Install scripts</dt><dd class="npm-install-scripts">${c.length===0?`Yes`:c.map(([e,n])=>A`<div class="npm-install-script"><span class="npm-install-script-name">${e}</span><code>${vM(n,t)}</code></div>`)}</dd>`:M}<dt>Dependencies</dt><dd class="npm-dependencies-fact">${gA(`dependencies`,l,l===0?`None`:l)}${dM(e.npm)}</dd>`}var bM=class extends pa{static properties={name:{},version:{},tab:{},list:{attribute:!1}};createRenderRoot(){return this}constructor(){super(),this.name=``,this.version=``,this.tab=`overview`,this.list=null}render(){let e=Nj(this.list?.status===`ready`?this.list:{versions:[],distTags:{}},this.version).map(({id:e,detail:t,date:n,age:r})=>({value:e,label:e,detail:t,secondary:n,...r&&{secondaryWarning:r}}));return A`<bundle-selector .options="${e}" .value="${this.version}" noun="version" versions label="${`Version of ${this.name}`}" placeholder="${this.version}" ?disabled="${e.length<=1}" aria-busy="${this.list?.status===`loading`?`true`:M}" @bundle-change="${e=>{e.detail.value!==this.version&&Hj(this.name,e.detail.value,this.tab)}}"></bundle-selector>`}};customElements.get(`npm-version-select`)||customElements.define(`npm-version-select`,bM);var xM=e=>A`<svg viewBox="0 0 16 16" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">${e}</svg>`,SM=[[`commits`,`Commits`,xM(j`<circle cx="8" cy="8" r="2.75"/><path d="M8 1v4.25M8 10.75V15"/>`)],[`issues`,`Issues`,xM(j`<circle cx="8" cy="8" r="6.25"/><circle cx="8" cy="8" r="1.6" fill="currentColor" stroke="none"/>`)],[`pulls`,`Pull requests`,xM(j`<circle cx="4" cy="3.5" r="1.75"/><circle cx="4" cy="12.5" r="1.75"/><circle cx="12" cy="12.5" r="1.75"/>
169
+ <path d="M4 5.25v5.5M12 10.75V6.5a2 2 0 0 0-2-2H7.5M9 3 7.5 4.5 9 6"/>`)],[`agents`,`Agents`,xM(j`<rect x="2.25" y="4.5" width="11.5" height="9" rx="2.5"/><path d="M8 4.5V2M6 11h4"/>
170
+ <circle cx="5.75" cy="8.25" r="1.1" fill="currentColor" stroke="none"/><circle cx="10.25" cy="8.25" r="1.1" fill="currentColor" stroke="none"/>`)],[`pulse`,`Pulse`,xM(j`<path d="M1 8.5h3l1.75-4.5 3 9 2-6.5 1.25 2H15"/>`)],[`replay`,`Replay`,xM(j`<path d="M5 3.25v9.5L12.75 8z"/>`)]],CM=new Set(SM.map(([e])=>e)),wM=`commits`;function TM(e){return CM.has(e)&&(wM=e),wM}var EM=e=>A`<div class="activity-views" role="group" aria-label="Activity">${SM.map(([t,n,r])=>A`<button type="button" data-bundle-tab="${t}" aria-label="${n}" aria-pressed="${String(t===e)}">${r}</button>`)}</div>`,DM=/^[a-f\d]{40}$/iu,OM=(e,t)=>e.repoId===t.repoId&&e.commit===t.commit&&(e.path??``)===(t.path??``),kM=({repo:e,path:t})=>t?`${e}/${t}`:e,AM=new Map,jM=new Map,MM=3e4,NM=null;function PM(){let e=F.managedSession?`${F.managedSession.id}\0${F.managedSession.role}`:null;return e!==NM&&(AM.clear(),jM.clear(),NM=e),AM}function FM(e,t){let n=PM(),r=n.get(e);if(r&&!r.stale&&!(r.status===`error`&&Date.now()>=r.retryAt))return r;let i=r?.stale?{status:`ready`,value:r.value}:{status:`loading`};return n.set(e,i),t().then(e=>({status:`ready`,value:e}),e=>e?.name===`AbortError`?null:{status:`error`,retryAt:Date.now()+MM}).then(t=>{if(n.get(e)!==i)return null;if(t?.status===`ready`||t&&i.status===`loading`)n.set(e,t);else if(i.status===`loading`)n.delete(e);else return null;return X(),null}).catch(()=>{}),i}function IM(e){let t=PM().get(e);t?.status===`ready`?PM().set(e,{...t,stale:!0}):PM().delete(e)}var LM=()=>FM(`repositories`,()=>xb()),RM=e=>FM(`refs\0${e}`,()=>Sb(e)),zM=({repoId:e,repo:t})=>t??LM().value?.find(t=>t.repoId===e)?.fullName??null,BM=(e,t)=>jM.get(`${e}\0${t}`)??null;function VM(e,t,n){PM(),n&&jM.set(`${e}\0${t}`,n)}function HM(e,t=null){let{repoId:n,repo:r,commit:i,path:a}=e,o=Array.isArray(e.files)?e.files:[];return{integrity:`repository:${n}:${i}:${a}`,kind:`sourcemap`,name:`${kM({repo:r,path:a})}@${i.slice(0,7)}`,size:o.reduce((e,[,t])=>e+t,0),repository:{repoId:n,repo:r,commit:i,path:a,revision:t}}}var UM=/^readme(?:\.[^/]*)?$/iu;function WM(e,t=new Map){let n=e.filter(e=>UM.test(e)).toSorted((e,t)=>+!/\.md$/iu.test(e)-!/\.md$/iu.test(t)||e.localeCompare(t)),r=e.map(e=>({path:e,depth:e.split(`/`).length,size:t.get(e)??0})).toSorted((e,t)=>e.depth-t.depth||t.size-e.size||e.path.localeCompare(t.path)).map(({path:e})=>e);return[...new Set([...n,...e.filter(e=>e===`package.json`),...r])]}function GM(e,t){let n=zt(e,t.files),r=n.json.sources.filter((e,t)=>typeof n.json.sourcesContent[t]==`string`);return{...n,repository:e.repository,npmEntries:WM(r,n.fileSizes)}}function KM(e,t=`code`,n=null){if(!e?.repository)return null;let{repoId:r,commit:i,path:a}=e.repository;return{view:`repository-code`,repoId:r,commit:i,path:a,bundleTab:ci.has(t)?t:`code`,...n}}function qM({repoId:e,commit:t=null,ref:n=null,revision:r=void 0,path:i=``,repo:a=null,file:o=null,bundleTab:s=`code`,compare:c=null}){if(!I()||!G?.active)return;let l=c?.target?{...DM.test(c.target)?{compareCommit:c.target.toLowerCase()}:{compareTarget:c.target},...ri(c.mode)}:{};G.navigate({view:`repository-code`,repoId:e,commit:t,path:i,bundleTab:s,...n==null?{}:{ref:n},...r===void 0?{}:{revision:r},...a?{repo:a}:{},...o?{filePath:o}:{},...l})}var JM=e=>e.commit??e.ref??``,YM=e=>e?.name?e.kind===`commit`?e.name.toLowerCase():`${e.kind===`branch`?`heads`:`tags`}/${e.name}`:``;function XM({repoId:e,repo:t,path:n},r,i){let a=r.kind===`commit`&&DM.test(r.name)?r.name.toLowerCase():null;qM({repoId:e,repo:t,path:n,commit:a,bundleTab:i,...a?{}:{ref:YM(r),revision:r}})}function ZM({repoId:e,repo:t,commit:n,revision:r},i,a){qM({repoId:e,repo:t,path:i,commit:n,bundleTab:a,...n?{}:{ref:YM(r),revision:r}})}function QM(e){F.currentView=`repository-code`,F.repositoryCodeOpening=e,F.currentManagedTeam=null,F.currentManagedReport=null,document.body.classList.remove(`report-fullscreen`),X({animate:!1})}function $M(e){let t=F.repositoryCodePending;return t&&t.integrity===e?.integrity&&t.generation===W()?t.repository:null}var eN=new Set([`directory-too-large`,`directory-unreadable`,`no-directory`]);async function tN(e,t){if(eN.has(t?.code))try{let t=await Cb(e.repoId,JM(e),e.path,{signal:Q_()}),n=(t.entries??[]).filter(e=>e.type===`dir`).toSorted((e,t)=>e.name.localeCompare(t.name));F.repositoryCodeOpening?.error&&OM(F.repositoryCodeOpening,e)&&n.length>0&&DM.test(t.commit)&&(F.repositoryCodeOpening={...F.repositoryCodeOpening,listing:{commit:t.commit.toLowerCase(),directories:n}},X())}catch{}}async function nN(e){try{let t=await Cb(e.repoId,JM(e),``,{signal:Q_()});F.repositoryCodeOpening===e&&DM.test(t?.commit??``)&&(F.repositoryCodeOpening={...e,commit:t.commit.toLowerCase()},X({animate:!1}))}catch{}}function rN({repoId:e,repo:t,commit:n,ref:r,path:i,revision:a},o){qM({repoId:e,repo:t,path:i,commit:n,bundleTab:o,...n?{}:{ref:r??``,revision:a}})}async function iN(e,t,n){let{repoId:r,commit:i=null,path:a=``}=e,o=ci.has(e.bundleTab)?e.bundleTab:`code`;PM();let s=F.currentView===`bundles`&&F.bundles?.[0]?.repository&&F.bundleDetails?.integrity===F.bundles[0].integrity?F.bundles[0]:null,c=i&&s&&OM(s.repository,{repoId:r,commit:i,path:a})?s:null,l=c?F.bundleDetails:null,u=F.currentView===`repository-code`?F.repositoryCodeOpening:null;if(!c&&i&&u?.code===`directory-too-large`&&OM(u,{repoId:r,commit:i,path:a}))return QM({...u,tab:o}),{view:`repository-code`,repoId:r,commit:i,path:a,bundleTab:o};if(!c&&li.has(o)){let s=e.revision===void 0?i?jM.get(`${r}\0${i}`)??null:e.ref?null:{kind:`branch`,name:null}:e.revision;IM(`refs\0${r}`);let c=LM().value?.find(e=>e.repoId===r)?.fullName,l={repoId:r,commit:i,ref:e.ref??null,path:a,tab:o,repo:e.repo??c??null,revision:s,error:null},u=i;if(!u){QM(l),G?.showing(e),n();try{let t=await Cb(r,JM(e),``,{signal:Q_()});u=DM.test(t?.commit??``)?t.commit.toLowerCase():null}catch(e){return e?.name===`AbortError`||!t()?!1:(QM({...l,error:e.message,code:e?.code??null}),{view:`repository-code`,repoId:r,commit:null,path:a,bundleTab:o})}if(!t())return!1;if(!u)return QM({...l,error:`The server answered with no commit.`}),{view:`repository-code`,repoId:r,commit:null,path:a,bundleTab:o}}return s&&jM.set(`${r}\0${u}`,s),QM({...l,commit:u,ref:null,historyOnly:!0}),n(),{view:`repository-code`,repoId:r,commit:u,path:a,bundleTab:o}}if(!c){let u=e.revision===void 0?i?jM.get(`${r}\0${i}`)??null:e.ref?null:{kind:`branch`,name:null}:e.revision,d=LM().value?.find(e=>e.repoId===r)?.fullName,f={repoId:r,commit:i,ref:e.ref??null,path:a,tab:o,repo:e.repo??d??null,revision:u,error:null};IM(`refs\0${r}`);let p=o===`treemap`,m=s&&!p?{integrity:s.integrity,generation:W(),repository:{repoId:r,repo:f.repo,commit:i,path:a,revision:u}}:null;m?(F.repositoryCodePending=m,X({animate:!1})):(QM(f),n()),p&&!i&&nN(f),G?.showing(e);let h;try{if(h=await bb(r,JM(e),a,{signal:Q_()}),h?.repoId!==r||i&&h.commit!==i||h.path!==a||!DM.test(h.commit??``))throw Error(`The server answered with another directory.`)}catch(e){if(e?.name===`AbortError`||!t())return!1;let n=!i&&e?.code===`directory-too-large`&&DM.test(e.commit??``)?e.commit.toLowerCase():i,s={...f,commit:n,error:e.message,code:e?.code??null};return QM(s),tN(s,e),{view:`repository-code`,repoId:r,commit:n,path:a,bundleTab:o}}finally{m&&F.repositoryCodePending===m&&(F.repositoryCodePending=null,F.currentView===`bundles`&&F.selectedBundle===m.integrity&&X({animate:!1}))}if(!t()||!I())return!1;u&&jM.set(`${r}\0${h.commit}`,u),c=HM(h,u),l=GM(c,h)}ar();let d=F.bundleCompare?.bundle===c.integrity?F.bundleCompare:null,f=e.compareCommit??e.compareTarget??null;return F.bundles=[c],WK(c.integrity,o),o===`compare`&&f?F.bundleCompare={bundle:c.integrity,target:f,mode:ni(e.compareMode)}:d&&o!==`compare`&&(F.bundleCompare=d),o===`code`&&e.file!=null?F.bundleCodeFileRequest={bundle:c.integrity,file:e.file,...e.line==null?{}:{line:e.line},...e.endLine==null?{}:{endLine:e.endLine}}:o===`code`&&typeof e.filePath==`string`&&(F.bundleCodeFileRequest={bundle:c.integrity,path:e.filePath}),F.bundleDetails=l,F.repositoryCodeOpening=null,F.currentManagedTeam=null,F.currentManagedReport=null,F.reports=[],document.body.classList.remove(`report-fullscreen`),X({animate:!1}),n(),document.querySelector(`#main-content`)?.scrollTo({top:0}),KM(c,F.bundleDetailsTab,Vx(F))}function aN({revision:e,commit:t},n){if(e?.name)return e;let r=n?.status===`ready`?n.value:null;if(e)return{kind:`branch`,name:r?.defaultBranch??``};let i=e=>(Array.isArray(r?.[e])?r[e]:[]).flatMap(e=>e?.sha===t&&typeof e.name==`string`?[e.name]:[]),a=t?i(`branchCommits`):[],o=a.includes(r?.defaultBranch)?r.defaultBranch:a[0],s=t?i(`tagCommits`)[0]:null;return o?{kind:`branch`,name:o}:s?{kind:`tag`,name:s}:{kind:`commit`,name:t??``}}var oN=new Set([`issues`,`pulls`,`agents`,`pulse`]);function sN({how:e,kind:t,name:n}){let r=n.trim();return e===`kind`||e===`input`||!r||t===`commit`&&!/^[a-f\d]{7,40}$/iu.test(r)?null:{kind:t,name:r}}var cN=class extends pa{static properties={repository:{attribute:!1},tab:{type:String},repos:{attribute:!1},refs:{attribute:!1},_edit:{state:!0}};createRenderRoot(){return this}constructor(){super(),this.repository=null,this.tab=`code`,this.repos=null,this.refs=null,this._edit=null,this._shownKey=null}willUpdate(){let{repoId:e,commit:t,path:n,revision:r}=this.repository??{},i=JSON.stringify([e,t,n,r]);i!==this._shownKey&&(this._shownKey=i,this._edit=null)}revisionChanged({detail:e}){let t=sN(e);this._edit=t??{kind:e.kind,name:e.name},t&&XM(this.repository,t,this.tab)}render(){if(!this.repository)return M;let{repoId:e,repo:t,commit:n,path:r}=this.repository,i=this.repos?.status===`ready`?this.repos.value:[],a=i.map(e=>({value:e.repoId,label:e.fullName}));i.some(t=>t.repoId===e)||a.unshift({value:e,label:t??`Repository ${e}`});let o=this._edit??aN(this.repository,this.refs),s=oN.has(this.tab),c=r&&!s?r.split(`/`):[],l=t??i.find(t=>t.repoId===e)?.fullName,u=l&&n?`https://github.com/${[...l.split(`/`),`tree`,n,...c].map(encodeURIComponent).join(`/`)}`:null;return A`<repository-selector class="repository-code-repo" label="Repository" .options="${a}" .value="${e}" @repository-change="${t=>{t.detail.value!==e&&qM({repoId:t.detail.value,repo:a.find(e=>e.value===t.detail.value)?.label,bundleTab:this.tab})}}"></repository-selector>${c.length>0?A`<nav class="repository-code-path" aria-label="Directory"><button type="button" aria-label="Open the repository's root" @click="${()=>ZM(this.repository,``,this.tab)}">/</button> ${c.map((e,t)=>t===c.length-1?A`<span aria-current="location">${e}</span>`:A`<button type="button" @click="${()=>ZM(this.repository,c.slice(0,t+1).join(`/`),this.tab)}">${e}</button><span aria-hidden="true">/</span>`)}</nav>`:M} ${s?M:A`<revision-select class="repository-code-revision" .refs="${this.refs?.status===`ready`?this.refs.value:null}" .kind="${o.kind}" .name="${o.name}" .installTooltips="${e=>cr(e)}" @revision-change="${this.revisionChanged}"></revision-select>`} ${u&&!s?A`<a class="bundles-slide-commit" href="${u}" data-tooltip="${n}" data-tooltip-icon="commit" target="_blank" rel="noopener noreferrer" aria-label="${`View this directory at commit ${n.slice(0,7)} on GitHub`}">${k(aa)}<span>${n.slice(0,7)}</span></a>`:M}`}};customElements.get(`repository-code-source`)||customElements.define(`repository-code-source`,cN);function lN(e){let{listing:t}=e;return t?A`<div class="repository-code-listing"><p>Open one of its directories:</p><ul>${t.directories.map(n=>A`<li><button type="button" class="repository-code-directory" @click="${()=>ZM({...e,commit:t.commit},n.path,e.tab)}">${Je}<span>${n.name}</span></button></li>`)}</ul></div>`:M}var uN=new Map,dN=new Set,fN=null;function pN(){let e=F.managedSession?`${F.managedSession.id}\0${F.managedSession.role}`:null;return e!==fN&&(uN.clear(),fN=e),uN}var mN=()=>{for(let e of dN)e.requestUpdate()};function hN({repoId:e,commit:t,path:n}){let r=`${e}\0${t}\0${n}`,i=pN().get(r);if(i)return i;let a={key:r,status:`loading`};return uN.set(r,a),Eb(e,n,t).then(e=>{if(e?.files===null)throw Error(`GitHub has no files at this commit.`);if(!Array.isArray(e?.files)||!Array.isArray(e.sizes)||e.sizes.length!==e.files.length)throw Error(`The server answered with no files.`);let t=new Map(e.files.map((t,n)=>[t,Number.isSafeInteger(e.sizes[n])&&e.sizes[n]>0?e.sizes[n]:0]));return uN.get(r)===a&&uN.set(r,{key:r,status:`ready`,cut:e.cut===!0,details:{integrity:`tree\0${r}`,kind:`tree`,metadataOnly:!0,listedOnly:!0,fileSizes:t}}),null}).catch(e=>{uN.get(r)===a&&(e?.name===`AbortError`?uN.delete(r):uN.set(r,{key:r,status:`error`,error:e?.message||`Its files could not be read.`}))}).finally(mN),a}var gN=class extends pa{static properties={repository:{attribute:!1}};createRenderRoot(){return this}constructor(){super(),this.repository=null}connectedCallback(){super.connectedCallback(),dN.add(this)}disconnectedCallback(){dN.delete(this),super.disconnectedCallback()}render(){if(!this.repository?.commit)return M;let e=hN(this.repository);return e.status===`error`?A`<div class="bundles-slide-placeholder is-error"><p role="alert">${e.error}</p><button type="button" @click="${()=>{uN.delete(e.key),mN()}}">Retry</button></div>`:e.status===`ready`?A`${e.cut?A`<p class="history-note">Only the ${e.details.fileSizes.size.toLocaleString(`en-US`)} files nearest its root are drawn.</p>`:M}<bundle-treemap .details="${e.details}"></bundle-treemap>`:A`<div class="bundles-slide-placeholder" role="status">Reading its files…</div>`}};customElements.define(`repository-treemap`,gN);function _N(e){let t=ut(e),n=!1,r=null;async function i(){n=!0;try{await t.load()}catch(e){r=String(e?.message??e)}n=!1,X()}return e=>t.module?e():r?A`<div class="bundles-slide-placeholder is-error">Couldn’t load: ${r} <button type="button" @click="${()=>{r=null,X()}}">Retry</button></div>`:(n||i(),A`<div class="bundles-slide-placeholder">Loading…</div>`)}var vN=_N(`./activity.js`),yN=A`<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" aria-hidden="true" viewBox="0 75 405 400"><path fill="currentColor" d="m62 447.6 65.8-68.2c2.2-.9 22.7 12 28.2 14.1C295.4 446.8 399.2 263.6 285.1 172 184.3 91.1 41.1 191.5 82 315.6c3.9 12 10.8 21.7 15.4 33.2l-47.1 47C-32 294.9 7.4 142.3 126.3 91.3 241.3 42 374.4 112 398 234.5c29.4 152.7-116.5 274.9-262.7 223.6-15.9-5.6-17-10.6-34.9-10.6H62Z"/><path fill="#e02129" d="M190.1 181.8c128.8-15 141.2 170.8 26 182.6-126.4 12.9-137.9-169.5-26-182.6M209 236c-7.4 5.6-10.8-5.4-13-7.7-9.6-10.3-19.4-.8-14 1.7s9.5-.3 10.1 5.6-9 9.9-7.9 16.4c13.2-5.9 25.9-6.4 39.1 0 3.2-7.1-7.9-12.1-7.8-14.8.1-9.4 11.6-6.2 12.6-7.2 4.3-4.3-8.9-11.7-17.1-.6-1.3 1.8-1.4 6.3-1.9 6.6zm-7.6 14.3c-10.1-1.5-19.3 10-25 11.8s-23.2 1.5-14.9 16.3c3.9.8 5.1-13.1 13.3-9.4 1.9 13.1-2.8 8.7-9 12.2-10 5.7-8.1 20.2-1.3 12.8 2.7-3 1.5-9.6 10.3-7.7 1.3 15.9-.8 8.4-7.9 11.7-11.5 5.3-9 20.2-1.7 14.8s0-10.8 8.6-9.3c1 .2 5.8 10.8 12.4 14.5 13.7 7.9 35 5.5 44.8-7.6s1.6-6.5 1.8-6.7c4-3.1 11.3 4.6 11 9.2l5.5-1.5c2.2-3.1-1.6-8.2-3.9-10.3-7.6-6.8-13.5.9-11-14.8 9-2.6 8.4 8.7 9.4 9.4 6 4.2 8.4-7.8 1.5-13.2-7.4-5.8-13.2 3.6-10.9-13.4 7.4-1.3 8.3 3.2 9.4 9.4 8.3 1.4 6.9-7.2 3.1-11.8-4.5-5.5-10.5-2.6-15.7-4.7-1.3-.5-25.1-18.8-25.1-9.4v52.5c-1.5.6-4.7-1.4-4.7-2.3z"/><ellipse cx="206.6" cy="270" fill="#e02129" rx="74.6" ry="66.5"/><path fill="#fff" d="M200.6 250v55.5s.4 1 .5 1.1c1.1 1.8 3.7 1.8 4.9 0 .1-.2.5-1.1.5-1.3v-55.4a34 34 0 0 1 17.2 5.8c3.1 2.2 5.6 5.1 7.7 8.3 3.8.1 7.6-.5 11.3.8 5.2 1.8 9.6 7.5 9.6 13.1 0 4.2-5.8 5.3-7.3 1.5-.7-1.8-.3-3.2-1.7-5-.8-1-3-2.7-4.3-2.7h-4.5c1.1 4.1.8 8.4.8 12.6.1.1 1.7-.1 2-.1 7.3 0 13.9 6 14.4 13.5.3 5.3-6.3 6-7.5 1.8-.6-2.1-.3-3.5-2-5.3-.8-.9-2.9-2.2-4.2-2.2h-3c.2 1 .2 2.2.1 3.2 0 2.1-.4 4.3-.9 6.4-.2.9-.5 1.8-.7 2.6 5.5-.7 10.5.7 14.1 5 1.7 2 3.4 5.6 3.6 8.3.5 5.4-6.6 6.7-7.8 1.2-.5-2.3-.7-3.8-2.7-5.4-3.1-2.5-7-1.2-10.7-1.4-1.9 3.2-4.5 6.1-7.5 8.4-14.4 10.8-36.9 7.2-46.2-8.4-.4-.2-2.4 0-2.9 0-3.2 0-6-.6-8.4 2.1-1.6 1.8-1.5 3.2-2.1 5.3-1.2 4.5-7.9 3.6-7.7-1.4.3-5.5 4.9-11.3 10.1-13 1.7-.5 5.7-1 7.4-.6.1 0 .1.1.1-.1 0-1.1-.7-2.8-.9-4.1-.4-2.7-.6-5.4-.4-8.1-2.8-.1-5.3.2-7.2 2.5-1.4 1.7-1.3 2.9-1.8 4.9-1.1 4.4-7.9 3.8-7.6-1.5.2-4.1 2.9-8.7 6.3-11 3-2.1 6.5-2.7 10.1-2.6v-5.8c.2-2.2.3-4.5.9-6.6h-4.5c-1.8 0-4.2 2.2-4.9 3.7-1.1 2.3-.4 6-4.1 6.3-3.4.3-4.5-2.3-4.1-5.2.9-6.1 5.1-11 11.3-12.2 3.1-.6 6.2 0 9.3-.4 2.2-3.1 4.8-6 7.9-8.3 4.9-3.5 10.9-5.1 16.8-5.8Z"/><path fill="#fff" d="M197.3 235.1c4.1-.7 8.3-.9 12.4 0 1.1-7.6 7-14.6 15.2-14 3.3.2 5.7 3.1 3.6 6.1-1.5 2-4.1 1-6.2 1.7s-3.7 2.5-4.5 4.4c-.3.7-1.2 3.8-.9 4.3 0 .1 1.3 1 1.6 1.2 3.4 3.1 6.2 7.4 6.6 12 0 .6-.1 1.2.1 1.8-.1.1-2.6-1.5-2.9-1.8-10.5-6-27.5-5.7-37.9.4-.2.1-2.3 1.6-2.4 1.5-.2-5.5 2.8-10.5 6.8-14 .3-.3 1.3-.9 1.5-1.1.1-.1.1-.2.1-.3 0-.5-.3-1.8-.5-2.3-.9-3.3-3-6-6.6-6.3h-2.2c-4.2-.4-4.5-6.5-.2-7.4 2.3-.5 5.2 0 7.3 1 5.2 2.2 8.5 7.4 9.1 12.9Z"/></svg>`,bN=new Map([[`registry`,{label:`Source: npm registry`,icon:Xe}],[`repository`,{label:`Source: GitHub repository`,icon:k(ia)}],[`osv`,{label:`Source: OSV`,icon:yN}]]);function xN(e){return e===`unknown`?`Unrated`:e.charAt(0).toUpperCase()+e.slice(1)}function SN(e){if(typeof e!=`string`)return null;let t=/\/(GHSA-[a-z0-9-]+)(?:[/?#]|$)/iu.exec(e);return t?t[1]:null}var CN=A`<svg class="external-link-icon" viewBox="0 0 16 16" width="11" height="11" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 13L13 3"/><path d="M5 3h8v8"/></svg>`;function wN(e){let t=/^CWE-(\d+)$/u.exec(e);if(!t)return A`<span>${e}</span>`;let n=`https://cwe.mitre.org/data/definitions/${t[1]}.html`;return A`<a class="bundle-advisory-cwe" href="${n}" target="_blank" rel="noopener noreferrer">${e}</a>`}function TN(e,t){return A`<div class="bundle-advisory-rail"><span class="${`bundle-advisory-severity sev-${e}`}">${xN(e)}</span> ${typeof t==`number`?A`<span class="bundle-advisory-cvss-score">CVSS <span class="mono">${t.toFixed(1)}</span></span>`:M}</div>`}function EN(e){let t=typeof e.url==`string`&&/^https?:\/\//iu.test(e.url)?e.url:null,n=e.ghsa??SN(t)??(typeof e.id==`string`?e.id:null),r=bN.get(e.source);return!r&&!(n&&t)?M:A`<span class="bundle-advisory-reference">${r?A`<span class="bundle-advisory-source" role="img" aria-label="${r.label}">${r.icon}</span>`:M} ${n&&t?A`<a class="bundle-advisory-ghsa" href="${t}" target="_blank" rel="noopener noreferrer">${n}${CN}</a>`:M}</span>`}function DN(e){let t=Array.isArray(e)?e.filter(e=>typeof e==`string`):[];return t.length>0?A`<span class="bundle-advisory-cwes">${t.map((e,t)=>A`${t===0?``:`, `}${wN(e)}`)}</span>`:M}function ON(e,t=null){let n=typeof e.cvss?.vectorString==`string`?e.cvss.vectorString:``,r=typeof e.vulnerable_versions==`string`?e.vulnerable_versions:null,i=Array.isArray(e.versions)?e.versions.filter(e=>typeof e==`string`):[];return A`<li class="bundle-advisory-row">${TN(e.severity,e.cvss?.score)}<div class="bundle-advisory-body"><div class="bundle-advisory-header">${t&&typeof e.details==`string`&&e.details.trim()?A`<button type="button" class="bundle-advisory-title" aria-haspopup="dialog" @click="${()=>t(e)}">${e.title}</button>`:A`<span class="bundle-advisory-title">${e.title}</span>`} ${EN(e)}</div><div class="bundle-advisory-subrow"><div class="bundle-advisory-meta">${e.informational?A`<span>${e.informational}</span>`:M} ${r?A`<span>Affected <span class="mono">${r}</span></span>`:M} ${i.length>0?A`<span>Matches <span class="mono">${i.join(`, `)}</span></span>`:M} ${DN(e.cwe)}</div>${n?A`<div class="bundle-advisory-cvss-vector mono">${n}</div>`:M}</div></div></li>`}var kN=(e,t)=>KO(e,t).runsCode,AN=(e,t=e.length>=lt)=>e.length===1?`line ${e[0]}`:`lines ${e.slice(0,5).join(`, `)}${e.length>5?` and ${(e.length-5).toLocaleString(`en`)}${t?`+`:``} more`:``}`,jN=/^[\w$.]+$/u,MN=(e,t=null)=>[...Map.groupBy([...e],([e])=>{let{name:t,tag:n}=jt.get(e);return t&&jN.test(t)?t:n})].map(([e,n])=>`${e} (${AN([...new Set(n.flatMap(([,e])=>e))].toSorted((e,t)=>e-t),n.some(([,e])=>e.length>=lt))}${n.some(([e])=>t?.has(e))?`, new`:``})`).join(`, `),NN=e=>{let t=new Set(e.flat());return t.size===1?[...t][0]:void 0},PN=(e,t)=>t===void 0?{path:M,line:M}:{path:e,line:t},FN=(e,t=null)=>[...e].map(([e,n])=>`${jt.get(e).name} (${AN(n)}${t?.has(e)?`, new`:``})`).join(`, `);function IN(e,t,n){return e?[...Map.groupBy(e,([e])=>jt.get(e).tag)].map(([e,r])=>{let{note:i,mark:a}=jt.get(r[0][0]),o=r.map(([e,t])=>[jt.get(e).name,AN(t)]),s=t===void 0?[]:r.filter(([e])=>!t?.has(e)).map(([e])=>jt.get(e).name),c=s.length===0?null:s.length===r.length?`New in this version`:`New in this version: ${s.join(`, `)}`,l=PN(n,n===void 0?void 0:NN(r.map(([,e])=>e)));return A`<span data-bundle-view-source="${l.path}" data-bundle-view-line="${l.line}" class="${`npm-runs-code${a?` is-${a}`:``}`}" data-tooltip="${[`${i}: ${o.map(e=>e.join(`, `)).join(`; `)}`,c].filter(Boolean).join(` · `)}" .tooltipContent="${A`<div class="compare-tip"><div class="compare-tip-head">${i}</div><div class="compare-tip-rows is-files">${o.map(([e,t])=>A`<span class="compare-tip-path">${e}</span><span class="compare-tip-said">${t}</span>`)}</div>${c?A`<div class="compare-tip-notice">${c}</div>`:M}</div>`}">${e}</span>`}):M}var LN=(e,t)=>KO(e,t).exfiltration,RN=e=>[...Dt].filter(([t])=>e.some(e=>e.has(t))).map(([,{name:e}])=>e).join(`, `),zN=(e,t)=>[...e].map(([e,n])=>`${Dt.get(e).name} (${AN(n)}${t!==void 0&&!t?.has(e)?`, new`:``})`).join(`, `),BN=new Map([[`Exfiltration`,`Names a host that catches what is sent to it, as malicious packages send what they take to`],[`Remote`,`Names a service malicious packages send what they take to, or fetch what they run from, though code may well use it`],[`IP lookup`,`Looks up the machine's public address, as malicious packages do before sending what they take`]]);function VN(e,t,n){return e?Ot(e).map(([e,r])=>{let i=PN(n,n===void 0?void 0:NN([...r.values()]));return A`<span data-bundle-view-source="${i.path}" data-bundle-view-line="${i.line}" class="${`npm-exfiltration is-${kt(e,r,t)}`}" data-tooltip="${`${BN.get(e)}: ${zN(r,t)}`}">${e}</span>`}):M}var HN=e=>e.toLowerCase().replaceAll(` `,`-`),UN=({id:e,aliases:t,cwe:n,title:r})=>[e,...t??[]].some(e=>(e??``).startsWith(`MAL-`))||(n??[]).includes(`CWE-506`)||/\bmalware\b/iu.test(r??``),WN={accept:`Accept`,"accept-with-nits":`Accept with nits (non-blocking)`,"request-changes":`Request changes`,reject:`Reject`};function GN(e,t){return[e,t].every(e=>e===void 0||typeof e==`string`)&&[e,t].some(e=>typeof e==`string`)}function KN(e,t,n=[]){let r=Object.keys(WN),i=new Set(n??[]),a=e.filter(e=>n!==null&&!i.has(e.file)&&r.includes(e.status)),o=r.findLast(e=>a.some(t=>t.status===e))??`accept`;if(t===null)return{coverage:null,checkedFiles:null,totalFiles:null,verdictLimit:o};let s=new Set(a.map(e=>e.file)),c=t.filter(e=>s.has(e)).length;return{coverage:c===t.length?`full`:`partial`,checkedFiles:c,totalFiles:t.length,verdictLimit:o}}function qN(e,t=`accept`){let n=Object.keys(WN);return n.slice(Math.max(n.indexOf(t),n.indexOf(KN(e,null).verdictLimit)))}function JN({npm:{version:e,manifest:t={}}}){return(t.description===`security holding package`||t.github?.github?.toLowerCase()===`npm/security-holder`)&&(t.publisher===`npm`||/-security(?:\.\d+)?$/u.test(e))}function YN(e,t,n,r){if(!e)return`accept`;let i=t?.versions?.indexOf(e.version)??-1,a=i<0?[]:t.advisories.filter(e=>e.affected.includes(i)),o=e.private?[]:n?.alerts??[];return r?.findings?.some(e=>e.id===`malware`)||JN({npm:e})||o.some(e=>e.type===`malware`)||a.some(e=>UN(e)||e.id?.startsWith(`MAL-`)||/^Malicious package\b/iu.test(e.title??``))?`reject`:a.some(e=>e.severity===`critical`)||o.some(e=>e.type===`criticalCVE`)?`request-changes`:`accept`}function XN(e,t,n=[]){return KN(e,t,n).coverage===`partial`&&(n===null||n.includes(`package.json`)||!e.some(e=>e.file===`package.json`&&Object.keys(WN).includes(e.status)))}function ZN(e){return e.replaceAll(/\r\n?/gu,`
171
+ `).split(/(?:^|\n)[\t ]*\*[\t ]+/u).map((e,t)=>({text:e.trim(),bullet:t>0})).filter(e=>e.text)}var QN=[`critical`,`high`,`moderate`,`low`,`unknown`],$N=e=>QN.includes(e.severity)?e.severity:`unknown`,eP=[[`affects`,e=>`Affects ${e}`],[`later`,()=>`Later versions`],[`fixed`,e=>`Fixed in ${e}`]];function tP(e){return Oj(`stats`,e,()=>Lb(e),e=>({downloads:e.downloads??null,github:e.github??null}))}function nP(e){return Oj(`advisories`,e,()=>Rb(e),e=>({versions:e.versions??[],advisories:e.advisories??[],repository:e.repository!==!1,keptAt:e.keptAt??null}))}function rP(e){let{name:t,version:n}=e.npm,r=(e,t)=>A`<a class="npm-package-link" href="${e}" target="_blank" rel="noopener noreferrer">${t}${CN}</a>`;return A`<span class="npm-package-links">${r(`https://www.npmjs.com/package/${t}/v/${encodeURIComponent(n)}`,`npmjs`)} ${e.npm.private?M:r(iP(e),`socket.dev`)}</span>`}var iP=e=>`https://socket.dev/npm/package/${e.npm.name}/overview/${encodeURIComponent(e.npm.version)}`;function aP(e){let{name:t,version:n}=e.npm;if(e.npm.private)return null;let r=Oj(`socket`,`${t}@${n}`,()=>Vb(t,n),e=>({socket:e.socket??null}));return r.status===`ready`?r.socket:null}var oP=[[`supplyChain`,`Supply chain`,85,85],[`vulnerability`,`Vulnerability`,85,85],[`quality`,`Quality`,70,80],[`maintenance`,`Maintenance`,70,80],[`license`,`License`,80,80]],sP=50,cP=(e,t)=>e===100?`is-good is-max`:e>=t?`is-good`:e>=50?`is-fair`:`is-poor`,lP=e=>A`<svg class="npm-socket-gauge" viewBox="0 0 16 16" aria-hidden="true"><circle cx="8" cy="8" r="6" pathLength="100"></circle><circle class="npm-socket-gauge-fill" cx="8" cy="8" r="6" pathLength="100" stroke-dasharray="${`${e} 100`}"></circle></svg>`;function uP(e){let t=aP(e)?.scores;return t?A`<ul class="npm-extensions npm-socket-scores" aria-label="Socket scores">${oP.map(([n,r,,i])=>{let a=Math.round(t[n]*100);return A`<li><a class="${`npm-extension npm-socket-score ${cP(a,i)}`}" href="${iP(e)}" target="_blank" rel="noopener noreferrer">${lP(a)}<span>${r}</span><span class="npm-extension-count">${a}</span></a></li>`})}</ul>`:M}var dP=new Map([[`critical`,`critical`],[`high`,`high`],[`middle`,`moderate`],[`low`,`low`]]),fP=e=>e.replaceAll(/(?<=[a-z])(?=[A-Z])/gu,` `).toLowerCase().replace(/^./u,e=>e.toUpperCase()),pP=new Map,mP=new WeakMap;function hP(e){let t=e?aP({npm:e}):null;return t?(mP.has(t)||mP.set(t,Map.groupBy(t.alerts.filter(e=>e.file),e=>e.file)),mP.get(t)):pP}var gP=(e=[])=>e.map(e=>{let t=dP.get(e.severity)??`low`;return A`<span class="${`npm-socket-file-alert sev-${t}`}" data-tooltip="${`Socket: ${fP(e.type)}, ${t}${e.note?` \xB7 ${e.note}`:``}`}">${fP(e.type)}</span>`});function _P(e,t){return YN(e.npm,nP(e.npm.name),aP(e),sj(e.npm,t?t.npm?.version??`(empty)`:null))}function vP(e,t){let n=JN(e),r=n&&t!==null&&[...t].every(QF)?[]:aP(e)?.alerts??[];if(!n&&r.length===0)return M;let i=[...t??[]].find(e=>/^readme(?:\.md)?$/iu.test(e));return A`<div class="npm-alerts">${n?A`<p class="npm-alert" role="note"><strong>Taken down by npm.</strong> npm's security team removed this package's versions, as it does for malicious code, and serves this placeholder in their place${i?A`: ${pM(i,t,`its readme`)}`:``}.</p>`:M} ${r.length>0?yP(e,r,t):M}</div>`}function yP(e,t,n){return A`<div class="npm-alert npm-socket-alerts" role="note"><span class="npm-socket-alerts-head"><strong>Socket raises ${t.length===1?`an alert`:`${t.length} alerts`} on this version</strong> <a class="npm-package-link" href="${iP(e)}" target="_blank" rel="noopener noreferrer">socket.dev${CN}</a></span><ul>${t.map(e=>{let t=dP.get(e.severity)??`info`;return A`<li><span class="${`bundle-advisory-severity sev-${t}`}">${t}</span> <span class="npm-socket-alert-type">${fP(e.type)}</span> ${e.file?A`<span class="npm-socket-alert-file">in ${pM(e.file,n)}</span>`:M} ${e.note?A`<p class="npm-socket-alert-note">${e.note}</p>`:M}</li>`})}</ul></div>`}function bP(e,t,n=M){let r=tP(e.npm.name),i=zF(sj(e.npm)?.findings.find(({id:e})=>e===`popularity`));return A`<div class="npm-figures"><npm-downloads-chart role="region" aria-label="Downloads" .downloads="${r.downloads}" .status="${r.status}" .known="${i}"></npm-downloads-chart><div class="npm-figures-actions">${rP(e)}${t}</div>${n}</div>`}var xP=A`<svg viewBox="0 0 16 16" width="12" height="12" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linejoin="round" aria-hidden="true"><path d="m8 1.75 1.9 3.9 4.3.6-3.1 3 .75 4.25L8 11.5l-3.85 2 .75-4.25-3.1-3 4.3-.6Z"/></svg>`,SP=A`<svg viewBox="0 0 16 16" width="12" height="12" fill="none" stroke="currentColor" stroke-width="1.3" aria-hidden="true"><circle cx="8" cy="8" r="6"/><circle cx="8" cy="8" r="1.25" fill="currentColor"/></svg>`,CP=k(oa),wP=A`<svg viewBox="0 0 16 16" width="12" height="12" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" aria-hidden="true"><circle cx="4.5" cy="3.25" r="1.5"/><circle cx="11.5" cy="3.25" r="1.5"/><circle cx="8" cy="12.75" r="1.5"/><path d="M4.5 4.75v.75a2 2 0 0 0 2 2h3a2 2 0 0 0 2-2v-.75M8 7.5v3.75"/></svg>`;function TP(e){if(!e.npm.manifest.github?.github)return M;let t=tP(e.npm.name),n=t.status===`ready`?t.github:null;if(!n)return M;let r=(e,t,r,i)=>A`<a class="bundle-origin-link npm-github-figure" href="${`https://github.com/${et(n.repo)}/${i}`}" data-tooltip="${`${t.toLocaleString(`en`)} ${r}`}" target="_blank" rel="noopener noreferrer">${e}<span>${DA.format(t)}</span></a>`,i=typeof n.openPulls==`number`?n.openPulls:null,a=i===null?n.openIssues:Math.max(n.openIssues-i,0);return A`${r(xP,n.stars,n.stars===1?`star`:`stars`,`stargazers`)} ${r(wP,n.forks,n.forks===1?`fork`:`forks`,`forks`)} ${r(SP,a,i===null?`open issues and pull requests`:a===1?`open issue`:`open issues`,`issues`)} ${i===null?M:r(CP,i,i===1?`open pull request`:`open pull requests`,`pulls`)} ${n.archived?A`<span class="npm-github-archived">Archived</span>`:M}`}var EP=({name:e,version:t,private:n,manifest:r})=>n||!r.provenance?null:Oj(`provenance`,`${e}@${t}`,()=>Hb(e,t),e=>({provenance:e.provenance??null}));function DP(e){let t=EP(e);return t!==null&&(t.status===`loading`||!!t.provenance?.builder)}function OP(e,t){return e?/^https:\/\/github\.com\/actions\/runner(?:\/github-hosted)?$/u.test(e)?`GitHub Actions`:e.startsWith(`https://github.com/actions/runner/`)?`GitHub Actions, self-hosted runner`:e.startsWith(`https://gitlab.com/`)||e.includes(`/-/runners/`)?t===`self-hosted`?`GitLab CI, self-hosted runner`:`GitLab CI`:new URL(e).host:null}var kP=(e,t)=>t?t===`github-hosted`||t===`gitlab-hosted`:e===`GitHub Actions`;function AP(e){if(e.npm.private)return M;let t=EP(e.npm);if(!t)return A`<span class="npm-commit-missing">None</span>`;if(t.status===`loading`)return A`<span class="npm-commit-missing">Checking…</span>`;if(t.status===`error`)return A`<span class="npm-commit-missing">Couldn't be read</span>`;if(!t.provenance)return A`<span class="npm-provenance-warning" data-tooltip="npm lists provenance for this version, but no statement naming its tarball could be read">Listed, but none for this tarball</span>`;let{manifest:n}=e.npm,{repository:r,commit:i,workflow:a,ref:o,builder:s,run:c,logIndex:l,runner:u}=t.provenance,d=(e,t,n=M)=>A`<a class="bundle-origin-link" href="${e}" data-tooltip="${n}" target="_blank" rel="noopener noreferrer"><span>${t}</span></a>`,f=/^https:\/\/github\.com\/([^/]+\/[^/]+)$/u.exec(r)?.[1]??null,p=OP(s,u),m=p?.startsWith(`GitLab CI`),h=f??r.replace(/^https:\/\//u,``),g=n.github?.github??(n.gitlab?`gitlab.com/${n.gitlab}`:null),_=g&&g.toLowerCase()!==h.toLowerCase(),v=a?.split(`/`).at(-1),y=[a?f&&i?d(`${r}/blob/${i}/${a.split(`/`).map(encodeURIComponent).join(`/`)}`,v,a===v?M:a):A`<span class="mono" data-tooltip="${a===v?M:a}">${v}</span>`:M,c?d(c,`Run`):M,l===null?M:d(`https://search.sigstore.dev/?logIndex=${l}`,`Transparency log`)].filter(e=>e!==M);return A`<span class="npm-provenance"><span class="npm-provenance-line">${p?A`<span class="${kP(p,u)&&!_?`npm-provenance-builder is-hosted`:`npm-provenance-builder`}">${p}</span>`:M} <span class="npm-provenance-sep">from</span> ${i?d(f?`${r}/commit/${i}`:m?`${r}/-/commit/${i}`:r,`${h}@${i.slice(0,7)}`,`${r} at ${i}${o?` (${o})`:``}`):d(r,h)} ${_?A`<span class="npm-provenance-warning" data-tooltip="${`The package names ${g}`}">Not the repository it names</span>`:M}</span> ${y.length>0?A`<span class="npm-provenance-line is-how">${y.map((e,t)=>t===0?e:A`<span class="npm-provenance-sep" aria-hidden="true">·</span>${e}`)}</span>`:M}</span>`}function jP(t,n,r){let i=t.affected.map(e=>n[e]).filter(Boolean);return i.includes(r)?`affects`:i.length>0&&i.every(t=>e(t,r)<0)?`fixed`:`later`}function MP(){let e=F.managedSession?.id;return()=>F.managedSession?.id===e}function NP(e,t){return ON({...e,title:e.title??e.id,severity:$N(e),cvss:{score:e.cvss},vulnerable_versions:e.range},({title:e,severity:n,details:r})=>ft({heading:e,severity:n,markdown:r,isCurrent:t}))}function PP(e){let{name:t,version:n}=e.npm,r=nP(t),i=MP(),a=r.status===`ready`,o=a?r.advisories:[],s=o.map(e=>jP(e,r.versions,n)),c=eP.map(([e,t])=>({status:e,heading:t(n),advisories:o.filter((t,n)=>s[n]===e)})).filter(e=>e.advisories.length>0),l=s.filter(e=>e===`affects`).length,u=a&&r.keptAt?A`<p class="npm-advisories-note">GitHub's repository advisories are as of ${GF(Date.now()-Date.parse(r.keptAt))} ago: they couldn't be checked now.</p>`:a&&!r.repository?A`<p class="npm-advisories-note">GitHub's repository advisories couldn't be checked; npm's are shown.</p>`:M,d=r.status===`loading`?A`<p class="bundles-overview-col-empty">Checking advisories…</p>`:r.status===`error`?A`<p class="bundles-overview-col-empty">Couldn't check advisories.</p>`:c.length===0?A`${u}<p class="bundles-overview-col-empty">No advisories for any version.</p>`:A`${u}${c.map(e=>A`<section class="${`npm-advisory-group is-${e.status}`}"><h4 class="npm-advisory-group-head">${e.heading} <span class="bundles-overview-col-count">${e.advisories.length}</span></h4><ul class="bundle-advisories-rows">${e.advisories.map(e=>NP(e,i))}</ul></section>`)}`;return uA({title:`Advisories`,count:a?o.length:`…`,body:d,className:`npm-advisories-col`,extra:a?A`<span class="${`npm-advisories-active${l>0?` is-active`:``}`}">${l} active</span>`:M})}var FP=[...wt].filter(([,{mark:e}])=>e!==null).map(([e])=>e),IP=[...wt].filter(([,{mark:e}])=>e===null).map(([e])=>e),LP=[null,`notice`,`warn`];function RP(e){let t=new Map,n=new Map,r=0;for(let i of e){let e=St(i);for(let r of e){t.set(r,(t.get(r)??0)+1);let e=Ct(i,r);LP.indexOf(e)>LP.indexOf(n.get(r)??null)&&n.set(r,e)}e.some(e=>wt.get(e).mark)&&r++}return{counts:t,marks:n,unreadable:r}}var zP=new WeakMap;function BP(e){let t=e.npm?WO(e):e,n=zP.get(e);if(n?.of!==t){let{sources:r,sourcesContent:i}=e.json,a=new Map(r.map((t,n)=>[t,JO(e,t,i[n])]).filter(([,e])=>e)),o=new Set(r.filter((e,t)=>typeof i[t]!=`string`)),{counts:s,marks:c,unreadable:l}=RP(a.values()),u=Xt(e),d=Vt(e),f={files:0,lines:0,unpacked:0};for(let e of r.filter(e=>!QF(e)))o.has(e)||f.files++,f.lines+=u.get(e)??0,f.unpacked+=d.get(e)??0;n={of:t,paths:new Set(r),byPath:a,counts:s,marks:c,unreadable:l,sizes:d,extensions:new Map(r.map(e=>[e,YF(e)])),binaries:new Set([...o].toSorted((e,t)=>e.localeCompare(t))),types:$F(r,d,u),content:f},zP.set(e,n)}return n}var VP={key:null,chip:null},HP=e=>`${e.npm.name}@${e.npm.version}`,UP=e=>VP.key===HP(e)?VP.chip:null;function WP(e){let t=UP(e);return t&&{label:t.label,keeps:t.keeps,clear:()=>{VP={key:null,chip:null},X()}}}function GP(e,t,n,r,{classes:i=``,tooltip:a=M}={}){let o=UP(e)?.id===t.id;return A`<li><button type="button" class="${`npm-extension npm-category${i}`}" aria-pressed="${String(o)}" data-tooltip="${a}" @click="${()=>{VP={key:HP(e),chip:o?null:t},X()}}">${n}<span class="npm-extension-count">${r.toLocaleString(`en`)}</span></button></li>`}function KP(e,t,n){let{name:r}=wt.get(n),{byPath:i,counts:a,marks:o}=BP(t),s=o.get(n);return GP(e,{id:`category:${n}`,label:r,keeps:e=>i.has(e)&&St(i.get(e)).includes(n)},A`<span>${r}</span>`,a.get(n),{classes:s?` is-${s}`:``})}function qP({counts:e,marks:t,unreadable:n},r,i,a){let o=FP.filter(t=>e.has(t));if(o.length===0)return M;let s=o.some(e=>t.get(e)===`warn`);return A`<div class="${`npm-readability-warning${s?` is-warn`:``}`}" role="note"><span class="npm-readability-warning-text"><strong>${n.toLocaleString(`en`)} of ${r.toLocaleString(`en`)} ${i}</strong> can be hard to review by reading them:</span><ul class="npm-extensions">${o.map(a)}</ul></div>`}function JP(e,t){return qP(BP(t),t.json.sources.length,`files`,n=>KP(e,t,n))}function YP(e,t,n=!1,r=void 0){let{byPath:i,sizes:a}=BP(e),o=n?t:void 0;return A`${IN(kN(e,t),void 0,o)}${VN(LN(e,t),XP(r),o)}${ak(e,t,a.get(t))}${rk(i.get(t))}`}var XP=e=>e===void 0||e?.details.npm&&!WO(e.details)?void 0:e&&LN(e.details,e.path);function ZP(e,t,n=[],r=void 0){let{stamps:i,exfiltration:a}=KO(e,t),o=XP(r),s=o===void 0?null:new Map(Ot(a).map(([e,t])=>[e,kt(e,t,o)]));return[...n.map(e=>({name:fP(e.type),severity:dP.get(e.severity)??`low`})),...i.map(e=>s?.has(e.name)?{...e,severity:s.get(e.name)}:e)]}var QP=new WeakMap;function $P(e,t){let n=e&&t?.npm?sj(t.npm,e.npm?.version??`(empty)`):null;if(!n)return null;if(!QP.has(n)){let t=new Map;for(let{host:r,places:i}of sF(n).get(`new-hosts`)?.hosts??[])for(let{path:n,line:a}of i)t.set(n,[...t.get(n)??[],{host:r,line:a,was:e.npm?.version??null}]);QP.set(n,t)}return QP.get(n)}function eF(e){if(!e?.length)return M;let t=e.length===1?`New host`:`New hosts`,{was:n}=e[0],r=`${n?`None of ${n}'s files`:`No file of the version compared with`} named ${e.length===1?`it`:`them`}`;return A`<span class="npm-new-host" data-tooltip="${`${t}: ${e.map(({host:e,line:t})=>`${e}, line ${t}`).join(`; `)} \xB7 ${r}`}" .tooltipContent="${A`<div class="compare-tip"><div class="compare-tip-head">${t}</div><div class="compare-tip-rows is-files">${e.map(({host:e,line:t})=>A`<span class="compare-tip-path">${e}</span><span class="compare-tip-said">line ${t}</span>`)}</div><div class="compare-tip-note">${r}</div></div>`}">${t}</span>`}var tF={icon:(e,t)=>qe(e,t.map(([e,t])=>Ge(e,t)).find(ie)),alerts:e=>hP(e?.npm),alertTags:gP,newHosts:$P,newHostTag:eF,tag:(e,t,n)=>YP(e,t,!1,n),flags:(e,t,n)=>ZP(e,t,[],n),warning(e,t){let{byPath:n}=BP(e),r=RP(t.filter(e=>n.has(e)).map(e=>n.get(e))),{counts:i,marks:a}=r;return qP(r,t.length,t.length===1?`file added or changed`:`files added or changed`,e=>{let{name:t}=wt.get(e),n=a.get(e);return A`<li><span class="${`npm-extension is-${n}`}"><span>${t}</span><span class="npm-extension-count">${i.get(e).toLocaleString(`en`)}</span></span></li>`})}},nF=new Map([[`malware`,`Malware`],[`deprecated`,`Deprecated`],[`publisher`,`Publisher`],[`provenance-lost`,`Provenance lost`],[`held-install-scripts`,`Install scripts`],[`held-non-registry-deps`,`Non-registry deps`],[`held-unused-deps`,`Unused deps`],[`held-runs-code`,`Runs code`],[`held-credentials`,`Credentials`],[`held-exfiltration`,`Exfiltration`],[`held-remote`,`Remote`],[`held-ip-lookup`,`IP lookup`],[`held-obfuscated`,`Obfuscated`],[`large-code`,`Large new code`],[`now-unreadable`,`Now unreadable`],[`binary-code`,`Binary code`],[`new-hosts`,`New hosts`],[`popularity`,`Few downloads`]]),rF={critical:`is-critical`,high:`is-warn`,moderate:`is-moderate`,low:`is-low`},iF=e=>e>=730?`${Math.floor(e/365)} years`:e>=60?`${Math.floor(e/30)} months`:`${e} days`;function aF(e){let t=e?.score;if(!t)return M;let{score:n,level:r,raised:i,lowered:a}=t,o=i.map(({id:e,severity:t})=>[nF.get(e)??e,t]),s=a&&o.length>0?`Lowered by ${Math.round(a.by*100)}%: out ${iF(a.days)}${a.tier===null?``:`, its package npm's ${PA(a.tier)} by downloads`}`:null,c=[`Risk ${n} of 100`,...o.length===0?[`Nothing found that calls for a look`]:o.map(([e,t])=>`${e}, ${t}`),...s?[s]:[]].join(`
172
+ `);return A`<li><span class="${`npm-extension npm-risk-score ${rF[r]}`}" data-tooltip="${c}" .tooltipContent="${A`<div class="compare-tip"><div class="compare-tip-head">Risk ${n} of 100</div>${o.length===0?A`<span class="compare-tip-none">Nothing found that calls for a look</span>`:A`<div class="compare-tip-rows">${o.map(([e,t])=>A`<span class="npm-risk-finding">${e}</span><span class="${`compare-tip-said npm-risk-severity sev-${t}`}">${t}</span>`)}</div>`} ${s?A`<div class="compare-tip-note">${s}</div>`:M}</div>`}">${lP(n)}<span>Risk</span><span class="npm-extension-count">${n}</span></span></li>`}var oF=(e,t)=>[gF(t.get(`malware`)),_F(t.get(`deprecated`)),xF(e,t.get(`publisher`)),SF(e,t.get(`provenance-lost`)),CF(e,t.get(`held-install-scripts`)),...AF(e,t),...TF(e,t),EF(t.get(`new-hosts`)),jF(t.get(`too-new`))],sF=e=>new Map((e?.findings??[]).map(e=>[e.id,e]));function cF(e,t){if(!e||!t?.npm)return M;let n=[e.npm??{name:t.npm.name,version:`Empty package`,private:!0},t.npm],r=pF(n),i=sj(t.npm,e.npm?.version??`(empty)`),a=sF(i),o=[aF(i),...oF(n,a),MF(n,r),...LF(n,r,a.get(`malware`)),VF(t.npm.name,a.get(`popularity`))].filter(e=>e!==M);return o.length===0?M:A`<ul class="npm-extensions npm-compare-badges" aria-label="Versions at a glance">${o}</ul>`}function lF(e){let{npm:t}=e,n=pF([t]),r=sj(t),i=sF(r),a=r?.oldVersion?[{name:t.name,version:r.oldVersion},t]:[t],o=[aF(r),...oF(a,i),MF([t],n),...LF([t],n,i.get(`malware`))].filter(e=>e!==M);return o.length===0?M:A`<ul class="npm-extensions npm-overview-badges" aria-label="Version at a glance">${o}</ul>`}function uF(e){let t=e?.files??[],n=t=>[`${t.was.toLocaleString(`en`)} \u2192 ${t.now.toLocaleString(`en`)} characters`,...t.rebuilt?[`its source map rebuilt with it`]:[],...e.major?[`in a major release`]:[]];return e?.severity===`critical`||!e?DF(`npm-compare-unreadable`,`Now unreadable`,t,n):OF(`${dF[e.severity]} npm-held-file npm-compare-unreadable`,`Now unreadable`,t,n)}var dF={critical:`is-critical`,high:`is-warn`,moderate:`is-moderate`},fF=e=>[...Et.keys()].map(t=>{let n=e.get(`held-${HN(t)}`),r=n?.files??[],i=e=>e.added?new Map([...e.found].filter(([t])=>!e.added.has(t))):void 0;return OF(`${dF[n?.severity]} npm-held-file npm-files-${HN(t)}`,t,r,e=>zN(e.found,i(e)),RN(r.map(e=>e.found)))});function pF(e){let t=nP(e.at(-1).name);return t.status===`loading`?null:e.map(({version:e})=>{let n=t.status===`ready`?t.versions.indexOf(e):-1;return n===-1?[]:t.advisories.filter(e=>e.affected.includes(n))})}var mF=(e,t)=>e===t?`${t??`–`}`:`${e??`–`} \u2192 ${t??`–`}`,hF=e=>QN.find(t=>e.some(e=>$N(e)===t));function gF(e){if(!e)return M;let t=[...e.takenDown?[`Taken down by npm`]:[],...(e.advisories??[]).map(({id:e,title:t})=>t?`${e}: ${t}`:e)];return A`<li><span class="npm-extension npm-malware" data-tooltip="${t.join(`
173
+ `)}">Malware</span></li>`}function _F(e){return e?A`<li><span class="npm-extension npm-compare-deprecated" data-tooltip="${gM(e.message)}">Deprecated</span></li>`:M}var vF={critical:`is-from-known`,high:`is-to-unknown`},yF={known:`is-known`,maintainer:`is-maintainer`},bF={known:`one that publishes one of npm's most downloaded packages`,maintainer:`one of the package's maintainers`,new:`an unknown publisher, new to the package`,unknown:`an unknown publisher`};function xF([e,t],n){if(!n)return M;let{was:r,now:i,wasKnown:a,nowKnown:o,severity:s,major:c}=n,l=n.wasStanding??(a?`known`:`unknown`),u=n.nowStanding??(o?`known`:`unknown`),d=(e,t)=>A`<span class="${`npm-compare-account ${yF[t]??`is-unknown`}`}">~${e}</span>`,f=vF[s]??`is-to-known`,p=A`A different npm account published the open version,<br>${bF[u]},<br>after ${bF[l]}${c?A`<br>in a major release`:M}`;return A`<li><a class="${`npm-extension npm-compare-publisher ${f}`}" href="${`https://www.npmjs.com/~${encodeURIComponent(i)}`}" target="_blank" rel="noopener noreferrer" data-tooltip="${`Published by ~${r} (${e.version}), then ~${i} (${t.version})`}" .tooltipContent="${PF(`Published by`,[e,t],[d(r,l),d(i,u)],p)}"><span>Publisher</span><span class="npm-extension-count">${d(r,l)} → ${d(i,u)}</span></a></li>`}function SF([e,t],n){return n?A`<li><span class="npm-extension npm-compare-provenance" data-tooltip="${`npm lists provenance for ${e.version}, none for ${t.version}`}" .tooltipContent="${PF(`npm provenance`,[e,t],[`Listed by npm`,A`<span class="compare-tip-none">None</span>`],`The open version was published without the provenance the one compared with has`)}">Provenance lost</span></li>`:M}function CF(e,t){if(!t)return M;let{scripts:n,flagged:r=[],was:i}=t,a=new Map(i??[]),o=i?e:e.slice(-1),s=i?[i,n]:[n],c=(e,t)=>e.length===0?A`<span class="compare-tip-none">None</span>`:NF(e.map(([e,n])=>[e,n,t.includes(e)])),l=n.map(([e])=>r.includes(e)?`${e} ${a.has(e)?`changed`:`added`}`:e).join(`, `);return A`<li><span class="npm-extension is-warn npm-compare-install" data-tooltip="${o.map(({version:e},t)=>`${e}: ${s[t].map(([e,t])=>`${e}: ${t}`).join(`; `)||`none`}`).join(` · `)}" .tooltipContent="${PF(`Install scripts`,o,s.map((e,t)=>c(e,t===s.length-1?r:[])))}"><span>${n.length===1?`Install script`:`Install scripts`}</span><span class="npm-extension-count">${l}</span></span></li>`}var wF=8;function TF(e,t){let n=e=>t.get(e)?.files??[],r=(e,n)=>`${dF[t.get(e)?.severity]} npm-held-file ${n}`;return[OF(r(`held-runs-code`,`npm-files-runs`),`Runs code`,n(`held-runs-code`),e=>MN(e.found,e.added),oe(n(`held-runs-code`).map(e=>e.found)),null,!1),OF(r(`held-credentials`,`npm-files-credentials`),`Credentials`,n(`held-credentials`),e=>FN(e.found,e.added)),...fF(t),DF(`npm-compare-large`,`Large new code`,n(`large-code`),e=>Wr(e.bytes)),uF(t.get(`now-unreadable`)),OF(r(`held-obfuscated`,`npm-files-obfuscated`),`Obfuscated`,n(`held-obfuscated`),t=>`${qO(t.found)}${t.added?`, new since ${e[0].version}`:``}`),DF(`npm-compare-binary`,`Binary code`,n(`binary-code`),e=>`${Wr(e.bytes)}, not UTF-8 or holding a NUL`)]}function EF(e){let t=e?.hosts??[],n=t.map(({host:e,places:t})=>{let n=t.slice(0,wF).map(({path:e,line:t})=>`${e}, line ${t}`);return{path:e,at:t.length>n.length?[...n,`and ${(t.length-n.length).toLocaleString(`en`)} more files`]:n}}),[r]=t,i=t.length===1&&r.places.length===1?{path:r.path,line:r.line,query:r.host}:null;return OF(`is-warn npm-compare-hosts`,n.length===1?`New host`:`New hosts`,n,e=>e.at,n.length===1?n[0].path:null,i&&(e=>e.currentTarget.dispatchEvent(new CustomEvent(`compare-open-line`,{detail:i,bubbles:!0,composed:!0}))))}function DF(e,...t){return OF(`npm-compare-file ${e}`,...t)}function OF(e,t,n,r,i=null,a=null,o=!0){if(n.length===0)return M;let s=n.slice(0,wF),c=n.length>s.length?`and ${(n.length-s.length).toLocaleString(`en`)} more`:null,l=e=>[r(e)].flat(),u=`${t}: ${[...s.map(e=>`${e.path} (${l(e).join(`; `)})`),...c?[c]:[]].join(`, `)}`,d=A`<div class="compare-tip"><div class="compare-tip-head">${t}</div><div class="compare-tip-rows is-files">${s.map(e=>A`<span class="compare-tip-path">${e.path}</span><span class="compare-tip-said">${l(e).length>1?A`<span class="compare-tip-lines">${l(e).map(e=>A`<span>${e}</span>`)}</span>`:r(e)}</span>`)}</div>${c?A`<div class="compare-tip-note">${c}</div>`:M}</div>`,f=A`${o?A`<span>${t}</span>`:A`<span class="sr-only">${t}</span>`}${i!==null||n.length>1?A`<span class="npm-extension-count">${i??n.length.toLocaleString(`en`)}</span>`:M}`;return a?A`<li><button type="button" class="${`npm-extension is-open ${e}`}" data-tooltip="${u}" .tooltipContent="${d}" @click="${a}">${f}</button></li>`:A`<li><span class="${`npm-extension ${e}`}" data-tooltip="${u}" .tooltipContent="${d}">${f}</span></li>`}var kF=(e,{created:t,gap:n,level:r,tier:i,installs:a,missing:o,was:s,severity:c})=>[c===`notice`?`no risk counted`:null,s===void 0?null:`was ${s}`,t?`new package, ${n>=0?`${GF(n)} old`:`published later`}`:o?`no package npm has`:r?`npm's ${PA(i??1/0)}`:null,a?.scripts?`installs ${a.version}${a.latest&&a.latest!==a.version?` (its latest ${a.latest})`:``}${a.new?`, published since ${e[0].version}`:``}, running its install scripts`:null].filter(Boolean).join(`; `)||null;function AF(e,t){let{version:n}=e.at(-1),r=t.get(`held-non-registry-deps`)?.dependencies??[],i=t.get(`held-unused-deps`),a=i?.dependencies??[],o=t=>t.some(e=>e.added)?`; new since ${e[0].version}: ${t.filter(e=>e.added).map(({name:e})=>e).join(`, `)}`:``,s=[];if(r.length>0){let t=r.filter(e=>e.added).map(e=>`${e.name} was ${e.was??`none`}`);s.push(A`<li><span class="npm-extension is-warn npm-compare-registry" data-tooltip="${`From elsewhere than npm's registry: ${r.map(e=>`${e.name} ${e.now}`).join(`, `)}${o(r)}`}" .tooltipContent="${PF(`From elsewhere than npm's registry`,[e.at(-1)],[NF(r.map(e=>[e.name,e.now,e.added]))],t.length>0?`New since ${e[0].version}: ${t.join(`, `)}`:null)}"><span>Non-registry deps</span><span class="npm-extension-count">${r.length.toLocaleString(`en`)}</span></span></li>`)}if(a.length>0){let[t,r]=a.length===1?[`it`,`its`]:[`them`,`their`],c=e=>e.kind?`${e.name} (${e.kind})`:e.name;s.push(A`<li><span class="${`npm-extension ${i.severity===`notice`?`is-notice`:dF[i.severity]??`is-warn`} npm-compare-unimported`}" data-tooltip="${`Imported by nothing of ${n}: ${a.map(t=>`${t.name} ${t.range}${kF(e,t)?` (${kF(e,t)})`:``}`).join(`, `)}${o(a)}`}" .tooltipContent="${PF(`Nothing imports ${t}`,[e.at(-1)],[NF(a.map(t=>[[c(t),kF(e,t)].filter(Boolean).join(`, `),t.range,t.added]))],`No code file of ${n} names ${t} as an import would, nor does an install script; npm installs ${t} all the same, running ${r} install scripts`)}"><span>Unused deps</span><span class="npm-extension-count">${a.length.toLocaleString(`en`)}</span></span></li>`)}return s}function jF(e){return e?A`<li><span class="npm-extension is-warn npm-compare-published" data-tooltip="${Bj(e.published)}">${Rj(e.published)}</span></li>`:M}function MF(e,t){if(!t)return M;let n=t.at(-1),r=e.length>1?t[0]:n;if(r.length===0&&n.length===0)return M;let i=n.length===0?`is-cleared`:`sev-${hF(n)}`,a=n.filter(e=>!r.includes(e)).length,o=r.filter(e=>!n.includes(e)).length,s=PF(`Advisories affecting`,e,t.map(e=>e.length===0?A`<span class="compare-tip-none">none</span>`:A`<span class="compare-tip-count">${e.length}</span><span class="compare-tip-severities">${QN.map(t=>[t,e.filter(e=>$N(e)===t).length]).filter(([,e])=>e>0).map(([e,t])=>A`<span class="${`compare-tip-severity sev-${e}`}">${t} ${e}</span>`)}</span>`),e.length>1?`${a} new \xB7 ${o} fixed`:null),c=`Advisories affecting ${e.map(({version:e},n)=>`${e}: ${t[n].length}`).join(`, `)}`,l=A`<span>Advisories</span><span class="npm-extension-count">${mF(r.length,n.length)}</span>`;return e.length>1?A`<li><button type="button" class="${`npm-extension npm-compare-advisories ${i}`}" aria-haspopup="dialog" data-tooltip="${c}" .tooltipContent="${s}" @click="${()=>FF(e,t)}">${l}</button></li>`:A`<li><span class="${`npm-extension npm-compare-advisories ${i}`}" data-tooltip="${c}" .tooltipContent="${s}">${l}</span></li>`}var NF=e=>A`<span class="compare-tip-lines">${e.map(([e,t,n])=>t==null?A`<span class="compare-tip-none">${e}: none</span>`:A`<span class="${n?`is-flagged`:M}">${e}: <code>${t}</code></span>`)}</span>`,PF=(e,t,n,r=null)=>A`<div class="compare-tip"><div class="compare-tip-head">${e}</div><div class="compare-tip-rows">${t.map(({version:e},t)=>A`<span class="compare-tip-version">${e}</span><span class="compare-tip-said">${n[t]}</span>`)}</div>${r?A`<div class="compare-tip-note">${r}</div>`:M}</div>`;function FF([e,t],[n,r]){let i=MP(),a=[[`new`,`New in ${t.version}`,r.filter(e=>!n.includes(e))],[`kept`,`Still affecting ${t.version}`,r.filter(e=>n.includes(e))],[`fixed`,`Fixed in ${t.version}`,n.filter(e=>!r.includes(e))]].filter(([,,e])=>e.length>0).map(([e,t,n])=>({status:e,heading:t,rows:n.map(e=>NP(e,i))}));ge({heading:`Advisories \xB7 ${e.name} ${e.version} \u2192 ${t.version}`,groups:a,isCurrent:i})}function IF(e,t,n){if(e===null||e>=n)return!1;let r=hF(t);return r===void 0||QN.indexOf(e<=25?`critical`:`high`)<QN.indexOf(r)}function LF(e,t,n=null){let r=e.at(-1),i=e.map(e=>aP({npm:e})?.scores??null);return!i.at(-1)||n?[]:oP.flatMap(([n,a,o,s])=>{let c=i.map(e=>e?Math.round(e[n]*100):null),l=c.at(-1),u=e.length>1?c[0]:l;return l===null||l>=o||n===`vulnerability`&&!(t&&IF(l,t.at(-1),o))||n===`maintenance`&&r.manifest?.deprecated&&l>=sP?[]:[A`<li><a class="${`npm-extension npm-socket-score ${cP(l,s)}`}" href="${iP({npm:r})}" target="_blank" rel="noopener noreferrer" data-tooltip="${`Socket's ${a.toLowerCase()} score: ${e.map(({version:e},t)=>`${c[t]??`none`} for ${e}`).join(`, `)}`}" .tooltipContent="${PF(`Socket's ${a.toLowerCase()} score`,e,c.map(e=>e===null?A`<span class="compare-tip-none">none</span>`:A`<span class="${`compare-tip-score ${cP(e,s)}`}">${lP(e)}${e}</span>`),n===`vulnerability`?`Shown under ${o}, where worse than the advisories found`:`Shown under ${o}`)}">${lP(l)}<span>${a}</span><span class="npm-extension-count">${mF(u,l)}</span></a></li>`]})}var RF={critical:`is-unpopular`,high:`is-low`,moderate:`is-mid`};function zF({known:e,scope:t,account:n}={}){return e?n?`Published with provenance in ${t}, the scope of ~${n}, an account that publishes one of npm's most downloaded packages`:t?`Published with provenance in ${t}, the scope of one of npm's most downloaded packages, which only its owner publishes in`:`Published by an account that publishes one of npm's most downloaded packages`:null}function BF(e,t=null,n=!1){let{tier:r,level:i,severity:a}=e,o=t?.total.toLocaleString(`en`),s=n?`npm-extension npm-popularity npm-downloads-tier ${RF[a]??`is-low`}`:`npm-downloads-tier ${i}`,c=n?zF(e):null,l=[t&&`${o} downloads/month, ${t.month}`,c].filter(Boolean).join(` · `);return A`<span class="${s}" data-tooltip="${l||M}" .tooltipContent="${t||c?A`${t?A`<div><strong>${o}</strong> downloads/month</div><div class="compare-tip-note">${t.month}</div>`:M}${c?A`<div class="compare-tip-note">${c}</div>`:M}`:null}">${PA(r??1/0)}</span>`}function VF(e,t){let n=tP(e);return t?A`<li>${BF(t,n.status===`ready`&&n.downloads?RA(n.downloads):null,!0)}</li>`:M}var HF=A`<span class="npm-downloads-tier is-unpopular" data-tooltip="No downloads counted by npm, which counts a package's from the day after it was first published">unpopular</span>`,UF=e=>new Intl.NumberFormat(`en`,{style:`unit`,unit:e,unitDisplay:`long`}),WF={minute:UF(`minute`),hour:UF(`hour`),day:UF(`day`),month:UF(`month`),year:UF(`year`)};function GF(e){let t=Math.max(0,Math.floor(e/6e4)),n=Math.floor(t/1440);return t<60?WF.minute.format(t):t<1440?WF.hour.format(Math.floor(t/60)):n<60?WF.day.format(n):n<730?WF.month.format(Math.floor(n/30.44)):WF.year.format(Math.floor(n/365.25))}function KF({compared:e},{created:t,gap:n}){if(!t)return M;let[r,i]=e,a=GF(Math.abs(n)),o=[`First published on ${zj(t)}`,`${a} ${n>=0?`before`:`after`} ${i.version} was`],s=`npm had no package by its name when ${n>=0?r.version:`either version`} was published`;return A`<span class="npm-dependency-flag is-new" data-tooltip="${[...o,s].join(` · `)}" .tooltipContent="${A`<div class="compare-tip"><div class="compare-tip-head">New package</div>${o.map(e=>A`<div>${e}</div>`)}<div class="compare-tip-note">${s}</div></div>`}">${n>=0?`${a} old`:`published later`}</span>`}function qF(e,t){let n=oj(e.flags);if(t!==`added`||!e.level)return[n,M];let r=e.month?zA({total:e.month.total,from:new Date(e.month.from)}):null;return[n,e.uncounted?HF:BF(e,r),e.compared?KF(e,e):M]}function JF(e,t){let{counts:n}=BP(t),r=IP.filter(e=>n.has(e));return r.length===0?M:A`<ul class="npm-extensions" aria-label="Readable files">${r.map(n=>KP(e,t,n))}</ul>`}function YF(e){let t=e.slice(e.lastIndexOf(`/`)+1),n=/\.d\.[cm]?ts$/iu.exec(t);if(n&&n.index>0)return n[0].toLowerCase();let r=t.lastIndexOf(`.`);return r>0?t.slice(r).toLowerCase():``}function XF(e,t,n=new Map){let r=new Map;for(let i of e){let e=YF(i),a=r.get(e)??{extension:e,files:0,bytes:0,lines:null};a.files++,a.bytes+=t.get(i)??0,n.has(i)&&(a.lines=(a.lines??0)+n.get(i)),r.set(e,a)}return[...r.values()].toSorted((e,t)=>t.files-e.files||e.extension.localeCompare(t.extension))}var ZF=/^(?:package\.json|readme(?:\.md)?)$/iu,QF=e=>ZF.test(e)||WA.test(e);function $F(e,t,n=new Map){let r=e.filter(QF),i=new Set(e.filter(e=>!QF(e)).map(YF)),{files:a,bytes:o,lines:s}=XF(r,t,n).reduce((e,t)=>({files:e.files+t.files,bytes:e.bytes+t.bytes,lines:t.lines===null?e.lines:(e.lines??0)+t.lines}),{files:0,bytes:0,lines:null});return{package:r.length>0?{files:a,bytes:o,lines:s}:null,extensions:XF(e,t,n).filter(e=>i.has(e.extension))}}var eI=({bytes:e,lines:t})=>t===null?Wr(e):`${Wr(e)} \xB7 ${t.toLocaleString(`en`)} LoC`;function tI(e,t){let{types:n,extensions:r}=BP(t);return!n.package&&n.extensions.length===0?M:A`<ul class="npm-extensions" aria-label="File types">${n.package?GP(e,{id:`package`,label:`Package`,keeps:QF},A`<span>Package</span>`,n.package.files,{tooltip:`package.json, readme and license: ${eI(n.package)}`}):M} ${n.extensions.map(t=>GP(e,{id:`extension:${t.extension}`,label:t.extension||`No extension`,keeps:e=>r.get(e)===t.extension},A`<span class="npm-extension-name">${t.extension||`no extension`}</span>`,t.files,{tooltip:eI(t)}))}</ul>`}function nI(e,t,n){let r=[[`languages`,`Languages`,t],[`readable`,`Readable`,JF(e,n)],[`types`,`File types`,tI(e,n)],[`socket`,`Socket`,uP(e)]].filter(([,,e])=>e!==M);return r.length===0?M:A`<dl class="npm-contents" aria-label="Contents">${r.map(([e,t,n])=>A`<div class="${`npm-contents-${e}`}"><dt>${t}</dt><dd>${n}</dd></div>`)}</dl>`}function rI(e,t){return e.size===0?M:uA({title:`Binary files`,count:e.size,list:!0,body:A`<ul class="bundles-sources-list">${[...e].map(e=>A`<li><div class="bundles-source-row is-resource">${qe(e,`binary`)}<span class="bundles-source-path" data-tooltip-truncated data-tooltip="${e}">${e}</span> ${t.has(e)?A`<span class="bundles-source-size">${Wr(t.get(e))}</span>`:M}</div></li>`)}</ul>`})}var iI=({severity:e})=>ce.indexOf(e),aI=(e,t)=>e.reduce((e,n,r)=>e||n.name.localeCompare(t[r].name),0);function oI(e,t,n){return e.map(e=>({row:e,path:n(e),flags:t(e).toSorted((e,t)=>iI(e)-iI(t)||e.name.localeCompare(t.name))})).toSorted((e,t)=>(t.flags.length>0)-(e.flags.length>0)||e.flags.length>0&&(iI(e.flags[0])-iI(t.flags[0])||t.flags.length-e.flags.length||aI(e.flags,t.flags))||e.path.localeCompare(t.path)).map(({row:e})=>e)}function sI(e){return{...Vj(e),files:tF,badges:cF,dependencyTags:qF,reviewVerdictLimit:_P}}var cI=/^[a-f\d]{40}$/iu,lI={removed:[],added:[],changed:[]},uI=e=>e.kind===`commit`&&cI.test(e.name)?e.name.toLowerCase():YM(e);function dI(e,t,n){return aN({revision:cI.test(t)?BM(e,t)??{kind:`commit`,name:t}:t.startsWith(`heads/`)?{kind:`branch`,name:t.slice(6)}:t.startsWith(`tags/`)?{kind:`tag`,name:t.slice(5)}:{kind:`commit`,name:t},commit:t},n)}var fI=(e,t)=>e.kind===`commit`||!e.name?(e.name||t).slice(0,7):e.name;function pI(e){let{repoId:t,repo:n,commit:r,path:i}=e.repository,a=RM(t),o=aN(e.repository,a);return{noun:`revision`,base:r,options:[],choices:[],name:n=>n===e.integrity||n===r?fI(o,r):fI(dI(t,n,a),n),async load(e){let n=await bb(t,e,i,{signal:Q_()});if(n?.repoId!==t||n.path!==i||!cI.test(n.commit??``)||cI.test(e)&&n.commit.toLowerCase()!==e.toLowerCase())throw Error(`The server answered with another directory.`);let r=n.commit.toLowerCase();return cI.test(e)||VM(t,r,dI(t,e,null)),{...GM(HM({...n,commit:r},BM(t,r)),n),compareId:r}},open:(e,r,a)=>qM({repoId:t,repo:n,path:i,bundleTab:`compare`,compare:{target:r,mode:a},...cI.test(e)?{commit:e.toLowerCase()}:{ref:e,revision:dI(t,e,null)}}),dependencies:()=>lI,files:{icon:(e,t)=>qe(e,t.map(([e,t])=>Ge(e,t)).find(ie))},select:(e,n)=>A`<repository-revision-pick .refs="${a.status===`ready`?a.value:null}" label="${n}" ?empty="${!e.value}" .revision="${e.value?e.value===r?o:dI(t,e.value,a):null}" @revision-pick="${t=>e.pick(uI(t.detail))}"></repository-revision-pick>`}}var mI=class extends pa{static properties={refs:{attribute:!1},revision:{attribute:!1},label:{},_edit:{state:!0}};createRenderRoot(){return this}constructor(){super(),this.refs=null,this.revision=null,this.label=``,this._edit=null,this._shownKey=null}willUpdate(){let e=JSON.stringify(this.revision);e!==this._shownKey&&(this._shownKey=e,this._edit=null)}changed({detail:e}){let t=sN(e);this._edit=t??{kind:e.kind,name:e.name},t&&this.dispatchEvent(new CustomEvent(`revision-pick`,{detail:t}))}render(){let e=this._edit??this.revision??{kind:`branch`,name:``};return A`<revision-select role="group" aria-label="${this.label}" .refs="${this.refs}" .kind="${e.kind}" .name="${e.name}" .installTooltips="${e=>cr(e)}" @revision-change="${this.changed}"></revision-select>`}};customElements.get(`repository-revision-pick`)||customElements.define(`repository-revision-pick`,mI);var hI=500,gI=14;function _I(e){if(!e)return null;let t={};e.color&&(t.color=e.color);let n=hn(e);return n&&(t.triage=n),typeof e.fix==`string`&&e.fix&&(t.fix=e.fix),typeof e.flagged==`boolean`&&(t.flagged=e.flagged),Object.keys(t).length>0?t:null}function vI(e){return e==null?``:JSON.stringify([e.color??``,e.triage??``,e.fix??``,e.flagged])}function yI(e,t){return e.length>100?!1:t==null||(t.color?.length??0)<=50&&(t.fix?.length??0)<=1e4}var bI=e=>new TextEncoder().encode(e).length,xI=new Map,SI=new Set,CI=(e,t=F.currentManagedTeam)=>JSON.stringify([t,e]),wI=new Map,TI=null,EI=Promise.resolve();function DI(){let e=new Set;for(let t of F.reports)for(let n of t.groups)for(let t of n)typeof t.id==`string`&&t.id&&e.add(t.id);return e}function OI(){return Array.isArray(F.managedReports)&&F.managedReports.length>0?F.managedReports:F.managedReport==null?[]:[F.managedReport]}function kI(e){let t=new Set,n=!1;for(let r of F.reports)if(r._managedReportId===e){n=!0;for(let e of r.groups??[])for(let n of e)typeof n.id==`string`&&n.id&&t.add(n.id)}return n||F.reports.length===0?t:new Set(DI())}function AI(e){let t=OI();for(let n of F.reports)if(n._managedReportId!=null&&(n.groups??[]).some(t=>t.some(t=>t.id===e))){let e=t.find(e=>e.id===n._managedReportId);if(e)return e}return t[0]??null}function jI(){let e=F.managedSession;return F.serverMode===`managed`&&F.localMode!==!0&&e!=null&&tt(e.role,`triage`)}function MI(e){return e===403&&F.managedSession?.viewer?!0:e>=400&&e<500&&e!==401&&e!==403&&e!==408&&e!==429}function NI(e,t){let n=wI.get(e.key);n??(n={report:e.report,key:e.key,teamId:e.teamId,changes:new Map},wI.set(e.key,n));for(let r of t)n.changes.has(r)||n.changes.set(r,e.changes.get(r))}async function PI(e,t,n){if(!jI())return;let r=[...e.changes.keys()],i=0;for(;i<r.length;){let a=i,o={},s=0,c=gI;for(;i<r.length&&s<200;){let t=r[i],n=bI(`${JSON.stringify(t)}:${JSON.stringify(e.changes.get(t))},`);if(s>0&&c+n>262144)break;o[t]=e.changes.get(t),c+=n,s++,i++}let l=await dx(e.report.id,o,F.managedSession?.csrfToken,e.teamId),u=l>=200&&l<300;if(!u&&!MI(l)){NI(e,r.slice(a));return}u||console.warn(`managed: the server refused a triage batch`,e.report.id,l,Object.keys(o)),!u&&l===403&&F.managedSession?.viewer&&n.add(e.report.id);for(let[n,r]of Object.entries(o)){let i=xI.get(n)?.fix??``,a=u?r?.fix??``:i;a!==i&&t.add(e.teamId),xI.set(n,{key:vI(r),fix:a})}}}function FI(){TI!=null&&(clearTimeout(TI),TI=null);let e=[...wI.values()];if(wI.clear(),e.length===0)return;let t=new Set,n=new Set;for(let r of e)EI=EI.then(()=>PI(r,t,n)).catch(e=>{console.warn(`managed: triage push failed`,e)});EI=EI.finally(()=>{for(let e of t)qv(e);for(let e of n)HI(e)}).catch(e=>{console.warn(`managed: Fix cache invalidation failed`,e)})}function II(){if(OI().length!==0&&jI()&&SI.size!==0){for(let e of DI()){let t=_I(F.triage.get(e)),n=vI(t);if((xI.get(e)?.key??``)===n)continue;if(!yI(e,t)){console.warn(`managed: triage entry exceeds the server caps, kept local only`,e),xI.set(e,{key:n,fix:xI.get(e)?.fix??``});continue}let r=AI(e);if(r==null||!SI.has(CI(r.id)))continue;let i=F.currentManagedTeam,a=CI(r.id,i),o=wI.get(a);o??(o={report:r,key:a,teamId:i,changes:new Map},wI.set(a,o)),o.changes.set(e,t)}wI.size!==0&&(TI!=null&&clearTimeout(TI),TI=setTimeout(FI,hI))}}var LI=!1;function RI(){LI||!jI()||(LI=!0,hd(II))}function zI(){wu(),F.managedComments?.clear(),F.managedIssues.clear(),globalThis.document?.dispatchEvent(new Event(`managed-comments-reset`)),TI!=null&&(clearTimeout(TI),TI=null),wI.clear(),SI.clear(),xI.clear()}async function BI(e,{renderView:t=!0,signal:n,readAnnotations:r}={}){let i=F.reports,a=F.currentManagedTeam,o=F.managedSession?.role,s=F.managedSession?.id,c=()=>!n?.aborted&&F.serverMode===`managed`&&F.localMode!==!0&&F.managedSession!=null&&F.managedSession.id===s&&F.managedSession.role===o&&F.reports===i&&F.currentManagedTeam===a&&OI().some(t=>t.id===e);if(!c()||(SI.delete(CI(e)),FI(),!await VI(n)||!c()))return!1;let l=new Map(F.managedIssues),u=r?await r(e):null,d=r?u?.entries:await ox(e,a,{signal:n});if(d==null||!c())return!1;let f=!1,p=kI(e),m=u&&tg(p,u.issues,l);for(let e of p){if(!Object.hasOwn(d,e)){xI.delete(e);continue}let t=_I(d[e]);xI.set(e,{key:vI(t),fix:t?.fix??``});let n=t?.triage==null||t.triage===`ignored`?F.triage.get(e)?.ignoredReports:void 0;bn(F.triage,e,{...t,ignoredReports:n,scopedIgnoredReports:F.triage.get(e)?.scopedIgnoredReports})&&(f=!0)}if(SI.add(CI(e)),u&&Jv(a,p,l),m&&!f&&t&&X(),f){if(await Dd(),!c())return!1;t&&X()}return II(),!0}function VI(e){return e?e.aborted?Promise.resolve(!1):new Promise(t=>{let n=n=>{e.removeEventListener(`abort`,r),t(n)},r=()=>n(!1);e.addEventListener(`abort`,r,{once:!0}),EI.then(()=>n(!0),()=>n(!1))}):EI.then(()=>!0)}async function HI(e,{signal:t,readAnnotations:n}={}){let r=F.reports,i=F.currentManagedTeam,a=F.managedSession?.role,o=F.managedSession?.id,s=()=>!t?.aborted&&F.serverMode===`managed`&&!F.localMode&&F.reports===r&&F.currentManagedTeam===i&&F.managedSession?.id===o&&F.managedSession?.role===a&&SI.has(CI(e,i));if(!s()||(FI(),!await VI(t)||!s()))return!1;let c=kI(e),l=new Map([...c].map(e=>[e,xI.get(e)])),u=new Map(F.managedIssues),d=n?await n(e):null,f=n?d?.entries:await ox(e,i,{signal:t});if(f==null||!s())return!1;let p=d&&tg(c,d.issues,u),m=!1,h=!1;for(let e of c){let t=l.get(e),n=_I(F.triage.get(e));if(xI.get(e)!==t||vI(n)!==(t?.key??``))continue;let r=_I(f[e]);(t?.fix??``)!==(r?.fix??``)&&(h=!0),xI.set(e,{key:vI(r),fix:r?.fix??``});let i=r?.triage==null||r.triage===`ignored`?F.triage.get(e)?.ignoredReports:void 0;bn(F.triage,e,{...r,ignoredReports:i,scopedIgnoredReports:F.triage.get(e)?.scopedIgnoredReports})&&(m=!0)}if(h&&qv(i),d&&Jv(i,c,u),p&&!m&&X(),m){if(await Dd(),!s())return!1;X()}return!0}function UI(e,t){if(!e)return;let n=F.currentManagedReport;if(n!=null&&(F.managedReports.length!==1||F.managedReports[0].id!==n))return;let r=null,i,a=()=>i??=(async()=>{if(FI(),!await VI(t)||t?.aborted)return null;let i=await ax(e,{signal:t,reportId:n});return r=i?.revision??null,i})();return Object.assign(async e=>(await a())?.(e)??null,{start:()=>{a().catch(()=>{})},revision:()=>r})}async function WI(e){let t=await b(e),n=await im(t);if(n.kind===`reports`)return{kind:`reports`,reports:n.reports};let r;if(n.kind===`encrypted`){if(r=await Ve({tryPassword:e=>ee(t,e)}),!r)return null}else r=te(n.text);let i=await tm(r,{conflictResolver:async(t,n)=>{try{return await bS(t,n,{title:`Triage conflicts on import`,intro:`disagree with your local triage on`,trailingNote:`Reports and non-conflicting triage were already merged; pick which side to keep for these disagreements.`,importedSideLabel:`Apply imported`})}catch{let n=t.length;return alert(`Imported ${e.name}. Kept your local triage on ${n} conflicting entr${n===1?`y`:`ies`} because another dialog is open \u2014 re-drop the file to pick again.`),null}}});return(F.currentFile||F.currentWorkspace)&&X(),{kind:`workspace`,workspace:i}}var GI=`deepview.passkey.firstImportPrompted`;function KI(){try{return localStorage.getItem(GI)===`1`}catch{return!1}}function qI(){try{localStorage.setItem(GI,`1`)}catch{}}async function JI(){if(!(yo()||!xo()||KI())){if(!confirm(`Encrypt your DeepView data with a passkey?
174
174
 
175
175
  Your triage notes, workspaces, and report files are stored on this device. Encryption locks them under a passkey (TouchID, Windows Hello, security key) so scripts running here can't read them without the passkey.
176
176
 
177
- You can change this anytime from the lock icon in the sidebar header.`)){GI();return}await be(),yo()&&GI()}}var qI=null,JI=()=>Promise.resolve(!0);function YI(e){JI=e}function XI(){qI?.controller.abort(),qI=null}var ZI=()=>qI?.live===!0&&qI.current(),QI=6e4,$I=null,eL=!1;function tL(){clearTimeout($I),$I=null,globalThis.document?.hidden&&qI&&($I=setTimeout(()=>{$I=null,globalThis.document?.hidden&&qI&&(XI(),eL=!0)},QI))}globalThis.document?.addEventListener(`visibilitychange`,()=>{if(globalThis.document.hidden){tL();return}clearTimeout($I),$I=null,eL&&(eL=!1,iL())});function nL(e,t,n){let{promise:r,resolve:i}=Promise.withResolvers(),a=!1,o=e=>{clearTimeout(l),t.removeEventListener(`abort`,s),i(e)},s=()=>o(!1),c=()=>(!a&&!t.aborted&&(a=!0,clearTimeout(l),Promise.resolve().then(()=>n()&&e(t)).then(e=>o(!!e&&n()),()=>o(!1))),r),l=setTimeout(c,1e3);return t.addEventListener(`abort`,s,{once:!0}),t.aborted&&s(),{promise:r,start:c}}function rL(e,t){return t.aborted?Promise.resolve(!1):new Promise(n=>{let r=e=>{t.removeEventListener(`abort`,i),n(e)},i=()=>r(!1);t.addEventListener(`abort`,i,{once:!0}),e.then(r,()=>r(!1))})}function iL({catalogOnly:e=!1,loading:t=!1,hydrate:n,annotations:r}={}){if(eL&&globalThis.document?.hidden&&!n)return;let i=F.managedSession,a=Z_(),o=[`findings`,`files`,`links`].includes(F.currentView),s=[`workspace-reports`,`workspace-bundles`,`workspace-repositories`,`workspace-dependencies`].includes(F.currentView),c=s||t||o&&(!e||qI?.teamId===F.currentManagedTeam&&!qI.signal.aborted)?F.currentManagedTeam:null,l=!c&&!n&&!i?.publicShare&&qI?.teamId&&ZI()&&F.managedTeams?.some(e=>e.id===qI.teamId)?qI:null,u=l?l.teamId:c;if(!I()||!i||i.role===`none`||i.publicShare&&!u)return XI(),n?Promise.resolve(!1):void 0;if(l)return;let d=F.managedTeams?.find(e=>e.id===u)?.reports.find(e=>e.id===F.currentManagedReport&&e.visible===!1)?.id??null,f=JSON.stringify([u,d,i.id,i.role,i.csrfToken,!!i.publicShare]);if(qI?.key!==f||qI.signal.aborted){XI();let e=new AbortController,t={key:f,controller:e,signal:e.signal,teamId:u,reportId:d,version:0,revision:null,target:null};t.current=(e=t.signal)=>!e.aborted&&!t.signal.aborted&&qI===t&&I()&&F.managedSession?.id===i.id&&F.managedSession?.role===i.role&&F.managedSession?.csrfToken===i.csrfToken&&!!F.managedSession?.publicShare==!!i.publicShare,qI=t,eL=!1,sL(t),globalThis.document?.hidden&&tL()}let p=qI;if(e||s||t||!u)return p.target?.ready;let m=js(F.reports),h=p.target;if(h?.view===a&&h.reports===m&&!h.signal.aborted)return h.ready;h?.controller.abort();let g=new AbortController,_=AbortSignal.any([g.signal,p.signal,a]),v=h?.reports===m,y={controller:g,signal:_,view:a,reports:m,version:v?h.version:0,revision:v?h.revision:null};return p.target=y,y.current=()=>p.current()&&!_.aborted&&p.target===y&&F.currentManagedTeam===u&&js(F.reports)===m,y.hydration=n?nL(async e=>{let t=r?r.subscription===p?r.version:0:p.version,i=r?.read??VI(p.teamId,e),a=await n(e,i);return a&&y.current()&&(y.version=t,y.revision=i?.revision()??null,y.version<p.version&&oL(p,y)),a},_,y.current):null,y.ready=y.hydration?.promise,y.hydration&&r?y.hydration.start():(p.version||p.finished)&&(y.hydration?y.hydration.start():y.version<p.version&&oL(p,y)),y.ready}function aL(e){iL({loading:!0});let t=VI(F.currentManagedTeam,e);if(t)return t.start(),{read:t,subscription:qI,version:qI?.version??0}}function oL(e,t){cL(e,t,e.signal).then(e=>(!e&&t.current()&&(XI(),iL()),e))}function sL(e){let{signal:t,controller:n,current:r}=e;bx(e.teamId,{signal:t,reportId:e.reportId,onTeams:async(t,n)=>{let i=()=>r(t);if(!i())return!1;let a=await JI(i,t,n)&&i();return a&&(e.live=!0),a},onUpdate:(t,n=null)=>r(t)?(e.revision=n,e.version++,cL(e,e.target,t)):!1,onClose:()=>{r()&&document.dispatchEvent(new Event(`managed-feed-closed`)),n.abort()},onDrop:()=>{e.live=!1}}).catch(e=>{r()&&console.warn(`managed: team feed failed`,e)}).finally(()=>{e.finished=!0,r()&&e.target?.hydration?.start()})}async function cL(e,t,n){if(!e.current(n))return!1;if(!t?.current())return!0;if(!t.refresh||t.refresh.controller.signal.aborted){let n=new AbortController,r={controller:n,promise:null},i=AbortSignal.any([n.signal,t.signal]);t.refresh=r,r.promise=lL(e,t,i).catch(()=>!1).finally(()=>{t.refresh===r&&(t.refresh=null)})}let r=t.refresh,i=AbortSignal.any([n,t.signal,r.controller.signal]),a=()=>r.controller.abort();n.addEventListener(`abort`,a,{once:!0});let o;try{o=await rL(r.promise,i)}finally{n.removeEventListener(`abort`,a)}return e.current(n)?t.current()?o?t.version<e.version?cL(e,t,n):!0:!1:!0:!1}async function lL(e,t,n){if(t.hydration&&!await rL(t.hydration.start(),n))return!1;for(;t.current()&&!n.aborted&&t.version<e.version;){let r=e.version;if(e.revision!==null&&e.revision===t.revision){t.version=r;continue}let i=VI(e.teamId,n),a=F.managedReports.filter(e=>t.reports.some(t=>t._managedReportId===e.id));if(!(await Promise.all(a.flatMap(e=>[BI(e.id,{signal:n,readAnnotations:i}),ew(e.id,{signal:n,readAnnotations:i})]))).every(Boolean)||!t.current()||n.aborted)return!1;t.version=r,t.revision=i?.revision()??null}return!n.aborted&&t.current()}function uL(e){if(e.linkedTabs)return e.linkedTabs;let t=e.filter(e=>Fi(e)===`revalidation`);return t.length>0?t:e}function dL(e){let t=e.map(uL).filter(e=>e.length>0);return t.length>0&&t.every(e=>e.every(e=>e.isApp&&e._source&&!e._sourcePass&&Fi(e)===``))}function fL(e,t=()=>[],{countFindings:n=!1}={}){let{groups:r,conflicts:i}=cg(e,{hideRuledOut:!0}),a=_g(r,t,uL),o=n?{appMode:!1,findings:a.length}:{appMode:!1};return i.size>0||!dL(a)&&!Cr(a,{tabs:uL,kindOf:Fi,severityMode:`corrected`})?o:{appMode:!0,appFindings:a.filter(e=>uL(e).some(e=>e.isApp)).length}}var pL=null,mL=0;rd(()=>{mL++});function hL(e,t,n,{complete:r,isCurrent:i}){pL={id:e.id,membership:JSON.stringify(e.reports.toSorted()),reports:t,token:n,complete:r,isCurrent:i}}function gL(e){return!pL||pL.id!==e.id||!pL.isCurrent()||pL.membership!==JSON.stringify(e.reports.toSorted())||!wm(e,pL.token)?null:(pL.linksRevision!==mL&&(pL.metadata=pL.complete?fL(pL.reports,cd):{appMode:!1},pL.linksRevision=mL),pL.metadata)}async function _L(e,t,n,{complete:r,isCurrent:i,onReady:a}){if(!i()||(await dd(),!i()))return;let o=await Om(e,n);if(!o||!i())return;let s=r?fL(t,cd):{appMode:!1};await km(e,s,o)&&i()&&await a(s)}var vL=`deepview.lastFile`;function yL(e,t=`overview`,{push:n=!1}={}){if(I()){let r=F.bundles.find(t=>t.integrity===e),i=r?.npm?hj(r,t,zx(F,t)):r?.repository?WM(r,t,zx(F,t)):Ix(F.managedTeams,r,F.currentManagedTeam,t,zx(F,t),F.bundles);n?G.pushRoute(i):G.replaceRoute(i);return}Ha(vL,`b:${e}${t&&t!==`overview`&&Qr.has(t)?` ${t}`:``}`).catch(()=>{})}var J=e=>e!==W();function bL(){return new Promise(e=>{typeof requestAnimationFrame==`function`?requestAnimationFrame(e):setTimeout(e,0)})}async function xL(e){return await bL(),e!==null&&J(e)?!1:(X(),HK(F.reports.flatMap(e=>e.bundleHashes??[]),()=>e===null||!J(e)).catch(()=>{}),!0)}function SL(){w.selected=null,w.focusedPkg=null,w.layoutCache=null,w.solo=null,w.hidden.clear(),w.pathFilter=``,ar()}function CL(e){for(let t of V.openSessions)t&&!e.has(t.workspaceId)&&(V.closeSession(t.workspaceId),Bh(t.workspaceId))}function wL(){z.classList.remove(`active`),z.replaceChildren(),Zm.classList.remove(`hidden`),document.title=`DeepView`}function TL(e){return e instanceof DOMException&&e.name===`NotFoundError`||typeof e?.message==`string`&&e.message.startsWith(`File not found:`)}function EL(e){let t=DL(e.toLowerCase());return t.endsWith(`.map`)?`sourcemap`:t===`stasis.code.br`||t.endsWith(`.stasis.code.br`)?`stasis`:null}function DL(e){return e.replace(/ \(\d+\)(?=\.[^.]*$)/u,``)}async function OL({name:e,content:t,existingNames:n}){if(!n.has(e))return await Hc(e,t),n.add(e),{name:e,content:t};let r;try{r=await Wc(e)}catch(r){if(!TL(r))throw r;return await Hc(e,t),n.add(e),{name:e,content:t}}if(r===t)return{name:e,content:t};let i=R().filter(t=>Array.isArray(t.reports)&&t.reports.includes(e)).filter(t=>_h(t.id,e)),a=await At({name:e,workspaceNames:i.map(e=>e.name),existingNames:n});if(a.action===`cancel`)return null;if(a.action===`rename`){let e=a.newName;return await Hc(e,t),n.add(e),{name:e,content:t}}let o;if(i.length>0)try{o=await Fh(e)}catch(t){console.warn(`Import: couldn't announce the replace of "${e}" to sync:`,t)}try{await Hc(e,t),i.length>0&&await AL(e,i)}finally{typeof o==`function`&&o()}return{name:e,content:t}}async function kL(e,t){let n=typeof t?.github==`string`?t.github:``;if(n)try{await rc(e,n)}catch(t){console.warn(`Import: failed to adopt the repository "${n}" for "${e}":`,t)}}async function AL(e,t){let n;try{n=await Gc(e)}catch(t){console.warn(`Import: failed to read freshly-saved "${e}" for cloud sync:`,t);return}for(let r of t)try{await zh(r.id);let t=await Ph(r.id,e,n);t&&t.ok===!1&&console.warn(`Import: failed to upload "${e}" to workspace "${r.name}" (${r.id}): ${t.reason??`unknown`}`)}catch(t){console.warn(`Import: failed to upload "${e}" to workspace "${r.name}" (${r.id}):`,t)}}async function jL(e){if(e=[...e],e.length===0||(await uX(),I())||(await KI(),I()))return;let t=null,n=null,r=new Set,i=new Set(await Vc()),a=[];for(let o of e)try{let e=DL(o.name.toLowerCase());if(e.endsWith(`.gz`)||e.endsWith(`.deepview-workspace.enc`)){let e=await HI(o);if(e?.kind===`reports`)for(let n of e.reports){if(typeof n?.name!=`string`||!n.name||typeof n?.content!=`string`)continue;let e=Vu(n.content);if(!e.recognized){a.push(n.name);continue}let r=await OL({name:n.name,content:n.content,existingNames:i});r&&(zu(r.name,e.count,e.source),await kL(r.name,n.repo),t={name:r.name,content:r.content})}try{let e=await Vc();i.clear();for(let t of e)i.add(t)}catch(e){console.warn(`Import: failed to refresh existingNames after workspace import:`,e)}continue}if(EL(o.name)){let e=new Uint8Array(await o.arrayBuffer()),{integrity:t}=await ul(o.name,e);n=t,r.add(t);continue}let s=await o.text(),c=Ie(s,o.name);if(c)for(let e of c){let{count:n,source:r}=Vu(e.content),a=await OL({...e,existingNames:i});a&&(zu(a.name,n,r),t={name:a.name,content:a.content})}else if(xi(s,e)===`codex`){let e=vi(s);for(let{displayName:n,data:r}of e){let e=n.replaceAll(`/`,`__`)+`.codex`,a=JSON.stringify(r),{count:o,source:s}=Vu(a),c=await OL({name:e,content:a,existingNames:i});c&&(zu(c.name,o,s),t={name:c.name,content:c.content})}}else{let e=Vu(s);if(!e.recognized)throw Error(`not a recognized DeepView, DeepSec, Piolium, Claude Security, Codex, or Markdown (generic) report, and not a links file`);let n=await OL({name:o.name,content:s,existingNames:i});if(!n)continue;zu(n.name,e.count,e.source),t={name:n.name,content:n.content}}}catch(e){alert(`Failed to load ${o.name}: ${e.message}`)}if(a.length>0){let e=a.length;alert(`Skipped ${e} report${e===1?``:`s`} no parser recognised: ${a.join(`, `)}`)}await Q(),t?await ML(t.name,t.content):n&&(LK(n),yL(n,F.bundleDetailsTab),X(),await Q(),UK(n)),HK(r).catch(()=>{})}async function ML(e,t,{workspaceId:n}={}){if(I())return;let r=Q_();F.currentManagedTeam=null,F.currentManagedReport=null,F.currentReportWorkspace=HC(e,n);let i=new Set(R().filter(t=>Array.isArray(t.reports)&&t.reports.includes(e)).map(e=>e.id));if(CL(i),F.reports=[],Jg(),F.workspaceMerges=[],F.revalidateConflicts=new Map,F.currentFile=e,F.currentWorkspace=null,F.currentLinks=null,F.managedReport=null,F.managedReports=[],F.managedComments.clear(),F.managedIssues.clear(),F.currentView!==`findings`&&F.currentView!==`files`&&(F.currentView=`findings`),F.repoUrl=Xs(e),F.repoEditing=!1,SL(),Ha(vL,Ld(e,F.currentReportWorkspace)).catch(()=>{}),t===void 0){try{t=await Wc(e)}catch(t){if(J(r))return;if(t&&t.message?.includes(`vault locked`)){if(await Nv()&&!J(r)){await ML(e);return}J(r)||(F.currentFile=null,await Q());return}if(TL(t)){let t=R().find(t=>Array.isArray(t.reports)&&t.reports.includes(e)&&_h(t.id,e));if(t)try{if(await zh(t.id),J(r))return;let n=await Ae({workspaceId:t.id,items:[{kind:`report`,identifier:e}]});if(J(r))return;if(n?.downloaded?.some(t=>t.kind===`report`&&t.identifier===e)){await ML(e);return}}catch(t){if(console.warn(`Re-download prompt for missing "${e}" failed:`,t),J(r))return}J(r)||(F.currentFile=null,await Q());return}alert(`Failed to read ${e}: ${t.message}`),F.currentFile=null,await Q();return}if(J(r))return}let a=f(t);if(a?(F.currentLinks={name:e,...a},F.currentView=`links`,X()):await WL(e,t,r),!J(r)){for(let e of i)V.openSession(e),V.refreshSession(e),zh(e);return await Q(),!0}}function NL(e){return F.managedSession?.role===`admin`&&FL({id:null,reports:[{id:e}]},e,{history:!1,deduplication:!0})}async function PL(e,t,{history:n=!0,tab:r=F.teamDependenciesTab}={}){let i=I();if(![`reports`,`bundles`,...i?[`repositories`,`dependencies`]:[]].includes(t))return!1;let a=`workspace-${t}`,o=i?F.managedTeams.find(t=>t.id===e):R().find(t=>t.id===e);if(!o||t===`dependencies`&&(o.dependencyReview!==!0||!ai.has(r)))return!1;if(i&&n&&G.active)return G.navigate(fi({view:a,teamId:e,...t===`dependencies`?{dependencyTab:r}:{}},F.managedTeams));t===`dependencies`&&(F.teamDependenciesTab=r);let s=i?`managed-team:${e}`:e,c=Q_();return CL(new Set),zL({forgetLastView:!1}),F.currentWorkspace=s,F.currentManagedTeam=i?e:null,F.currentView=a,i&&(F.bundles=Vx(F.managedTeams)),z.classList.add(`active`),Zm.classList.add(`hidden`),document.body.classList.remove(`report-fullscreen`),X({animate:!1}),document.querySelector(`#main-content`)?.scrollTo({top:0}),i||Ha(vL,`${t===`reports`?`wrs`:`wbs`}:${e}`).catch(()=>{}),await Q(),!J(c)&&(X({animate:!1}),!J(c))}async function FL(e,t=null,{history:n=!0,deduplication:r=!1}={}){if(!I()||!e||!Array.isArray(e.reports))return!1;if(n&&G.active)return G.navigate(fi({view:`findings`,teamId:e.id,reportId:t},F.managedTeams));if(t!==null&&!e.reports.some(e=>e.id===t))return!1;let i=Q_(),a=e.reports.find(e=>e.id===t&&e.visible===!1),o=Z_(),s=t===null?null:e.reports.find(e=>e.id===t);CL(new Set),fb(),oK(t===null&&!r?e.id:null),z.classList.add(`active`),Zm.classList.add(`hidden`),F.currentView=`findings`,F.reports=[],Jg(),F.workspaceMerges=[],F.revalidateConflicts=new Map,F.currentFile=s?.filename??null,F.currentWorkspace=t===null?`managed-team:${e.id}`:null,F.currentManagedTeam=e.id,F.currentManagedReport=t,F.managedReports=s&&!r&&s.analyzer!==d?[{id:s.id,filename:s.filename}]:[],F.managedComments.clear(),F.managedIssues.clear(),F.managedReport=null;let c=r?void 0:aL(o);Q();let l;try{l=r?await(await K()).fetchManagedLinkWorkspace(t,{signal:o}):await vx(e.id,{reportId:a?.id??null})}catch(e){return J(i)||await IL(e.message||`Could not load link report.`),!1}if(J(i))return!1;if(l===null||t!==null&&!l.some(e=>e.id===t))return await IL(`Could not load all team reports. Please try again.`),!1;let u=l.find(e=>e.id===t&&e.data.source===`links`&&Array.isArray(e.data.links)),f=l.filter(e=>t===null||u||e.id===t),p=f.filter(e=>e.data.source!==`links`||!Array.isArray(e.data.links));F.currentFile=t===null?null:l.find(e=>e.id===t).filename,Eu(e.id,l),F.managedReports=f.map(e=>({id:e.id,filename:e.filename})),F.managedReport=t===null?null:F.managedReports[0]??null,F.currentReportWorkspace=null,F.currentLinks=null,F.selectedBundle=null,F.selectedBundleWorkspace=null,F.scanSelection=null,F.repoUrl=``,F.repoEditing=!1,SL();for(let e of p)if(await WL(e.filename,e.data,i,{renderView:!1,managedReportId:e.id,managedRepo:e.repo}),J(i))return!1;if(p.length>0){let e=async(e,t=VI(F.currentManagedTeam,e))=>(await Promise.all(p.flatMap(n=>[RI(n.id,{renderView:!1,signal:e,readAnnotations:t}),ew(n.id,{signal:e,readAnnotations:t})]))).every(Boolean)&&!e.aborted&&!J(i),t=r?await e(Z_()):await iL({hydrate:e,annotations:u?void 0:c});if(J(i))return!1;if(!t)return await IL(`Could not load report annotations. Open the team or report again to retry.`),!1}if(u){if(F.currentView=`links`,F.currentLinks={name:u.filename,groups:u.data.links,skipped:0,...r?{managedId:t}:{}},!await xL(i))return!1}else if(p.length===0)sK();else if(w_(e_()),!await xL(i))return!1;return iL(),await Q(),!0}async function IL(e){await VL({history:!1}),jx(e)}async function LL(e){if(I())return;F.currentManagedTeam=null,F.currentManagedReport=null,F.managedReport=null,F.managedReports=[],F.managedComments.clear(),F.managedIssues.clear();let t=R().find(t=>t.id===e);if(!t)return;let n=Q_();CL(new Set([e])),F.currentView!==`findings`&&F.currentView!==`files`&&(F.currentView=`findings`),zr(`workspace`,e),F.reports=[],Jg(),F.workspaceMerges=[],F.revalidateConflicts=new Map,F.currentFile=null,F.currentWorkspace=e,F.currentReportWorkspace=null,F.currentLinks=null,F.repoUrl=``,F.repoEditing=!1,SL(),Ha(vL,`ws:${e}`).catch(()=>{}),t.reports.length===0&&wL();let r=await Om(t);if(J(n))return;let i=!0,a=t.reports.map(e=>Wc(e).catch(()=>null)),o=0;for(let e=0;e<t.reports.length;e++){let r=await a[e];if(J(n))return;if(r===null){i=!1;continue}if(!f(r)&&(await WL(t.reports[e],r,n,{renderView:!1})?o++:i=!1,J(n)))return}o===0&&t.reports.length>0&&wL(),i&&Dm(t)?.appMode&&(F.showRevalidation=!0,F.upstreamOnly=!1,F.revalidationDetailed=!1,wK());let s=F.reports.slice();hL(t,s,r,{complete:i,isCurrent:()=>!J(n)&&F.currentWorkspace===e&&[`findings`,`files`].includes(F.currentView)});let c=Q().catch(e=>console.warn(`workspace sidebar:`,e));if(o>0){if(w_(e_()),!await xL(n))return}else sK();let l=[`showRevalidation`,`upstreamOnly`,`revalidationDetailed`,`filterConfMin`,`filterConfMax`,`filterRevalidate`,`filterPartial`,`sortBy`,`severityMode`],u=l.map(e=>F[e]);_L(t,s,r,{complete:i,isCurrent:()=>!J(n),onReady:async t=>{!t.appMode||F.currentWorkspace!==e||![`findings`,`files`].includes(F.currentView)||l.some((e,t)=>F[e]!==u[t])||(F.showRevalidation=!0,F.upstreamOnly=!1,F.revalidationDetailed=!1,wK(),w_(e_()),await xL(n))}}).catch(e=>console.warn(`workspace App metadata:`,e)),V.openSession(e),V.refreshSession(e),zh(e),await c}async function RL({triage:e=`keep`,deleteFromRemoteWorkspaceIds:t=[]}={}){if(!F.currentFile)return;let n=Q_(),r=F.currentFile;Bu(r),ec(r,``);for(let e of t)try{let t=await Lh(e,r);if(J(n))return;t&&t.ok===!1&&t.reason!==`not-found`&&console.warn(`Failed to delete '${r}' from workspace ${e} remote: ${t.reason}`)}catch(t){console.warn(`Failed to delete '${r}' from workspace ${e} remote:`,t)}if(await Jc(r),!J(n)&&(await mu(r,null),!J(n))){if(e===`wipe`){try{await Ip()}catch(e){console.warn(`Skipped orphan-triage GC:`,e)}if(J(n))return}J(n)||(zL(),await Q())}}function zL({forgetLastView:e=!0}={}){DT(),F.currentManagedTeam=null,F.currentManagedReport=null,F.currentFile=null,F.currentWorkspace=null,F.currentReportWorkspace=null,F.currentLinks=null,F.managedReport=null,F.managedReports=[],F.managedComments.clear(),F.managedIssues.clear(),F.selectedBundle=null,F.selectedBundleWorkspace=null,F.scanSelection=null,F.bundleDetails=null,F.bundleDetailsTab=`overview`,F.bundleSourceFile=null,F.bundleSourceFindingIdx=null,F.selectedPackage=null,F.selectedPackageVersion=null,F.packageDetailsTab=`overview`,F.packageSlideTriage=null,F.packageSlideTransient=!1,F.expandedPackages.clear(),F.selectedRepository=null,F.repositoryDetailsTab=`overview`,F.repositorySlideTriage=null,F.repositorySlideTransient=!1,F.filesSelectedFile=null,F.tableSelectedGid=null,F.kanbanPopoverGid=null,F.kanbanExpandedColumn=null,F.focusGid=null,F.activeTabByGroup.clear(),F.reports=[],Jg(),F.workspaceMerges=[],F.revalidateConflicts=new Map,F.repoUrl=``,F.repoEditing=!1,F.shownTriage=null,F.currentView=`findings`,SL(),e&&Ua(vL),wL()}function BL(e){Q_(),CL(new Set),zL(e)}async function VL({history:e=!0}={}){return e&&I()&&G.active?G.navigate({view:`home`}):(Q_(),CL(new Set),zL({forgetLastView:!I()}),await Q(),!0)}async function HL({deleteFromRemoteWorkspaceIds:e=[]}={}){if(!F.selectedBundle)return;let t=Q_(),n=F.selectedBundle;for(let r of e)try{let e=await Rh(r,n);if(J(t))return;e&&e.ok===!1&&e.reason!==`not-found`&&console.warn(`Failed to delete bundle from workspace ${r} remote: ${e.reason}`)}catch(e){console.warn(`Failed to delete bundle from workspace ${r} remote:`,e)}if(await dl(n),J(t)||(await _u(n,null),J(t)))return;F.selectedBundle=null,F.selectedBundleWorkspace=null,F.bundleDetails=null,F.bundleSourceFile=null,F.bundleSourceFindingIdx=null;let r=Va(vL);typeof r==`string`&&(r===`b:${n}`||r.startsWith(`b:${n} `))&&Ua(vL),Yf(n),F.bundles=await ol(),!J(t)&&(X(),await Q())}async function UL(e,t=`detach`,{triage:n=`keep`}={}){let r=R().find(t=>t.id===e);if(!r)return;Q_();let i=Array.isArray(r.reports)?[...r.reports]:[];if(V.closeSession(e),Bh(e),t===`delete`){for(let e of i){try{await Jc(e)}catch{}Bu(e),ec(e,``)}if(n===`wipe`)try{await Ip()}catch(e){console.warn(`Skipped orphan-triage GC:`,e)}}let a=F.currentWorkspace===e,o=t===`delete`&&F.currentFile!=null&&i.includes(F.currentFile);(a||o)&&zL(),await au(e),await Q()}async function WL(e,t,n=null,{renderView:r=!0,managedReportId:i=null,managedRepo:a=null}={}){let o=()=>n!==null&&J(n);try{if(await Promise.all([zr(`report`,e),zr(`workspace`,F.currentWorkspace||F.currentReportWorkspace)]),o()||(await Pd(),o()))return;let{data:s,reason:c}=i===null?I()?ne(t,e):Si(t):{data:structuredClone(t),reason:null};if(!s)throw Error(c);let l=F.reports.length===0,u=bi(s)??[],d=u.flatMap(vg);if(await wi(d),o())return;let f=new Set(d.filter(sr).map(e=>e.source??s.source??null)),p=a??s?.repo,m=gi({repo:p}),h=m??(i==null?Xs(e):``),g=_i(p),_=Rr([{groups:u.map(vg),tree:s.tree,treeDependencies:s.treeDependencies}]),v=[];for(let t of u){let n=vg(t);if(n.length===0)continue;let r=[];for(let t of n){let n={...t,_id:F.nextFindingId++,_repoFallback:h,_repoDirectory:g,_reportName:e,_depsDirectory:_,_managedReportId:i,_bundleHashes:s.bundleHashes??[]};hi(n,s),n._source=n.source??s.source??null,`isApp`in n||(n.isApp=Ii(n,n._source)),n._sourcePass=f.has(n._source),n._analyzer=n._source??n.type??null,r.push(n)}v.push(r)}return yi(v),F.reports.push({type:s.type||`analysis`,source:s.source??null,fileName:e,_managedReportId:i,groups:v,repo:m,tree:s.tree??null,treeFiles:s.treeFiles??null,treeDependencies:s.treeDependencies??null,bundleHashes:s.bundleHashes??[]}),kn(F.reports),Mn(F.reports)&&Jg(),F.revalidateConflicts=Qg(),wK(),l&&(d_(),w_(e_())),r&&await xL(n),!0}catch(t){alert(`Failed to parse ${e}: ${t.message}`)}}window.__loadFile=(e,t)=>WL(e,t),window.__setFilters=({severities:e,confMin:t}={})=>{e!=null&&(F.filterSeverities=new Set(e)),t!==void 0&&(F.filterConfMin=t),X()},document.addEventListener(`keydown`,e=>{e.key===`Escape`&&document.body.classList.contains(`report-fullscreen`)&&document.body.classList.remove(`report-fullscreen`)}),document.addEventListener(`dragover`,e=>e.preventDefault()),document.addEventListener(`drop`,e=>{e.preventDefault(),!e.target.closest(`#drop-zone`)&&jL(e.dataTransfer.files)}),Zm.addEventListener(`dragover`,e=>{e.preventDefault(),I()||Zm.classList.add(`hover`)}),Zm.addEventListener(`dragleave`,()=>Zm.classList.remove(`hover`)),Zm.addEventListener(`drop`,e=>{e.preventDefault(),Zm.classList.remove(`hover`),jL(e.dataTransfer.files)});var GL=null;function KL(){I()||(GL||(GL=document.createElement(`input`),GL.type=`file`,GL.multiple=!0,GL.hidden=!0,GL.addEventListener(`change`,()=>{let e=[...GL.files];e.length>0&&jL(e),GL.value=``}),document.body.append(GL)),GL.click())}Zm.addEventListener(`click`,e=>{let t=e.target.closest(`[data-managed-page]`);if(t){cX(t.dataset.managedPage);return}if(e.target.closest(`[data-managed-login]`)){ux(F.managed?.loginPath);return}let n=e.target.closest(`[data-managed-team]`);if(n){let e=F.managedTeams.find(e=>e.id===n.dataset.managedTeam);e&&FL(e);return}let r=e.target.closest(`[data-landing-workspace]`);if(r){LL(r.dataset.landingWorkspace);return}e.target.closest(`.drop-prompt-action`)&&KL()});function qL({hostname:e,devServer:t,serverMode:n,localMode:r,deepviewScanServer:i}){return n===`managed`&&!r?null:n===`e2e`?tn(i):tn(t)??(e===`127.0.0.1`?en:null)}function JL(){return qL({hostname:window.location.hostname,devServer:document.querySelector(`meta[name="deepview-scan-server"]`)?.content,serverMode:F.serverMode,localMode:F.localMode,deepviewScanServer:F.deepviewScanServer})}function YL(e){return I()?!!e.managedId&&[`admin`,`manage`].includes(F.managedSession?.role):!e.managedId&&!!JL()}async function XL(e=null,{mode:t}={}){let n=F.selectedBundleWorkspace,r=W();if(await uX(),r!==W()||e&&!YL(e))return;if(I()){e&&await cX(`manage-scans`,{bundleId:e.managedId,...t?{scanMode:t}:{}});return}if(!JL())return;let i=await Re().then(()=>!0,()=>!1);if(!JL()||r!==W())return;if(!i){jx(`Couldn’t load Scans. Try again.`,{kind:`warning`});return}let a=VL(),o=W();await a,JL()&&o===W()&&(F.scanSelection=e?{bundleId:e.integrity,...n?{repoId:n}:{},...t?{mode:t}:{}}:null,F.currentView=`scan`,X(),Q())}function ZL(){let e=document.querySelector(`#drop-zone`);if(!e)return;let t=e.querySelector(`.local-scan-button`);t||(t=document.createElement(`button`),t.type=`button`,t.className=`local-scan-button`,t.innerHTML=er(`${ta}<span>Scan</span>`),t.addEventListener(`click`,()=>{XL()}),e.append(t));let n=JL();t.hidden=!n,document.querySelector(`local-scan-page`)?.setScanServer(n);let r=document.querySelector(`.bundles-scan-button`),i=F.bundles?.find(e=>e.integrity===F.selectedBundle);r&&(r.hidden=!i||!YL(i))}var QL=hN(`./compare.js`),$L=`@preventive/triage`;function eR(e,t){let n=e.toLowerCase(),r=``,i=n;if(n.startsWith(`@`)){let e=n.indexOf(`/`);e>0&&(r=n.slice(0,e),i=n.slice(e+1))}return`pkg:npm/${r?`${encodeURIComponent(r)}/`:``}${encodeURIComponent(i)}@${encodeURIComponent(t)}`}function tR(e){let t=/^(.*?)\.stasis\.(?:code|resources)\.br$/u.exec(e);return t?t[1]:e.replace(/\.[^.]+$/u,``)||e}function nR(e){let t=[];if(e?.kind!==`stasis`||!e.bundle?.modules)return t;let n=new Map;for(let[r,i]of e.bundle.modules){if(!i?.name||typeof i.version!=`string`||!i.version)continue;let e=`${i.name}@${i.version}`,a=n.get(e);if(a!==void 0){r===`.`&&(t[a].dir=`.`);continue}n.set(e,t.length),t.push({name:i.name,version:i.version,dir:r})}return t}function rR(e){if(e?.kind!==`stasis`||!e.bundle?.modules)return!1;for(let[,t]of e.bundle.modules)if(t?.name&&typeof t.version==`string`&&t.version)return!0;return!1}function iR(e,t){let n=e.find(e=>e.dir===`.`)??null,r=n?e.filter(e=>e!==n):e;return{root:n?{name:n.name,version:n.version,purl:eR(n.name,n.version)}:{name:tR(t?.name??`bundle`),version:null,purl:null},rest:r}}function aR(e){return e??globalThis.crypto.randomUUID()}function oR(e,t,{now:n=new Date,uuid:r}={}){let{root:i,rest:a}=iR(nR(e),t),o={type:`application`,"bom-ref":i.purl??`application:${i.name}`,name:i.name};i.version&&(o.version=i.version),i.purl&&(o.purl=i.purl);let s={bomFormat:`CycloneDX`,specVersion:`1.5`,serialNumber:`urn:uuid:${aR(r)}`,version:1,metadata:{timestamp:n.toISOString(),tools:{components:[{type:`application`,name:$L}]},component:o},components:a.map(e=>{let t=eR(e.name,e.version);return{type:`library`,"bom-ref":t,name:e.name,version:e.version,purl:t}})};return`${JSON.stringify(s,null,2)}
178
- `}function sR(e){return{referenceCategory:`PACKAGE-MANAGER`,referenceType:`purl`,referenceLocator:e}}function cR(e,t,{now:n=new Date,uuid:r}={}){let{root:i,rest:a}=iR(nR(e),t),o=tR(t?.name??`bundle`),s=n.toISOString().replace(/\.\d{3}Z$/u,`Z`),c=(e,t,n,r)=>{let i={SPDXID:e,name:t,downloadLocation:`NOASSERTION`,filesAnalyzed:!1,licenseConcluded:`NOASSERTION`,licenseDeclared:`NOASSERTION`,copyrightText:`NOASSERTION`};return n&&(i.versionInfo=n),r&&(i.externalRefs=[sR(r)]),i},l=`SPDXRef-Package-root`,u=[c(l,i.name,i.version,i.purl)],d=[{spdxElementId:`SPDXRef-DOCUMENT`,relationshipType:`DESCRIBES`,relatedSpdxElement:l}];a.forEach((e,t)=>{let n=`SPDXRef-Package-${t+1}`;u.push(c(n,e.name,e.version,eR(e.name,e.version))),d.push({spdxElementId:l,relationshipType:`DEPENDS_ON`,relatedSpdxElement:n})});let f={spdxVersion:`SPDX-2.3`,dataLicense:`CC0-1.0`,SPDXID:`SPDXRef-DOCUMENT`,name:o,documentNamespace:`https://spdx.org/spdxdocs/${encodeURIComponent(o)}-${aR(r)}`,creationInfo:{created:s,creators:[`Tool: ${$L}`]},packages:u,relationships:d};return`${JSON.stringify(f,null,2)}
179
- `}function lR(e,t){let n=t?`gu`:`giu`,r=t?`g`:`gi`;try{return{re:new RegExp(e,n)}}catch{try{return{re:new RegExp(e,r)}}catch(e){return{error:e.message}}}}function uR(e,t,n){if(t){let t=lR(e,n);if(t.error)return{error:t.error};let{re:r}=t;return{ranges(e){r.lastIndex=0;let t=[],n;for(;(n=r.exec(e))!==null;){if(n[0].length===0){r.lastIndex++;continue}if(t.push([n.index,n.index+n[0].length]),t.length>=50)break}return t}}}let r=n?e:e.toLowerCase(),i=r.length;return{ranges(e){let t=n?e:e.toLowerCase(),a=[],o=0,s;for(;(s=t.indexOf(r,o))!==-1&&(a.push([s,s+i]),o=s+i,!(a.length>=50)););return a}}}function dR(e,t,n){let r=[],i=0,a=!1;for(let o of n){let n=e.get(o);if(typeof n!=`string`)continue;let s=n.split(`
180
- `),c=[];for(let e=0;e<s.length;e++){let n=t.ranges(s[e]);if(n.length!==0&&(c.push({ln:e+1,ranges:n}),i++,i>=5e3)){a=!0;break}}if(c.length>0&&r.push({path:o,lines:s,hits:c}),a)break;if(r.length>=500){a=!0;break}}return{fileResults:r,totalHits:i,truncated:a}}function fR(e,t){let n=[],r=0;for(let{path:i,lines:a,hits:o}of e.fileResults){let e=[];for(let{ln:n}of o){let i=t.ranges(a[n-1]);i.length!==0&&(e.push({ln:n,ranges:i}),r++)}e.length>0&&n.push({path:i,lines:a,hits:e})}return{fileResults:n,totalHits:r,truncated:!1}}var pR={tag:null,useRegex:!1,caseSensitive:!1,entries:[]};function mR(e,t,n,r,i,a=null){if(!n)return{fileResults:[],totalHits:0,truncated:!1};let o=uR(n,r,i);if(o.error)return{error:o.error};(pR.tag!==e||pR.useRegex!==r||pR.caseSensitive!==i)&&(pR.tag=e,pR.useRegex=r,pR.caseSensitive=i,pR.entries.length=0);let s=r||i?e=>e:e=>e.toLowerCase(),c=s(n),l=null,u=-1;for(let e=0;e<pR.entries.length;e++){let t=pR.entries[e],n=s(t.query);if(n===c)return pR.entries.splice(e,1),pR.entries.unshift(t),t.result;r||t.result.truncated||n.length<=u||!c.includes(n)||(l=t.result,u=n.length)}let d=l?fR(l,o):dR(t,o,a??[...t.keys()].toSorted());return pR.entries.unshift({query:n,result:d}),pR.entries.length>8&&pR.entries.pop(),d}var hR=200,gR=28,_R=12;function vR(e,t){let n=t.length>0?t[0][0]:0;return bR(e,t,n-(e.length-e.trimStart().length)>gR?n-_R:0,hR)}function yR(e,t){let n=vR(e,t);return A`${n.clipped?A`<span class="bundle-search-clip">…</span>`:M}${xR(n.text,n.ranges)}`}function bR(e,t,n,r){let i=e.slice(n,n+r);if(n===0)return{text:i,ranges:t,clipped:!1};let a=[];for(let[e,r]of t){let t=e-n,o=r-n;o<=0||t>=i.length||a.push([Math.max(0,t),Math.min(i.length,o)])}return{text:i,ranges:a,clipped:!0}}function xR(e,t){if(t.length===0)return e;let n=[],r=0;for(let[i,a]of t){let t=Math.max(r,Math.min(i,e.length)),o=Math.max(t,Math.min(a,e.length));o<=t||(t>r&&n.push(e.slice(r,t)),n.push(A`<mark class="bundle-search-mark">${e.slice(t,o)}</mark>`),r=o)}return r<e.length&&n.push(e.slice(r)),n}function SR(e,t){let n=new Map(e.map(e=>[e,[...t.get(e)].map(([n,r])=>{let i=t.get(e),a=t.get(n),o=i.size<a.size?i:a,s=0,c=0;for(let e of o.keys())if(i.has(e)&&a.has(e)&&s++,++c===32)break;return{to:n,score:r*2+s}}).toSorted((e,n)=>n.score-e.score||t.get(e.to).size-t.get(n.to).size||e.to.localeCompare(n.to))])),r=[],i=new Set;for(let t of e){let e=[t];for(;e.length>0;){let t=e.pop();if(!i.has(t)){i.add(t),r.push(t);for(let{to:r}of n.get(t).toReversed())i.has(r)||e.push(r)}}}return r}function CR(e,t,n){let r=e.toSorted(),i=new Set(r),a=new Map,o=new Map(r.map(e=>[e,new Map]));for(let e of r){a.set(e,new Map);for(let n of t.get(e)??[])e===n||!i.has(n)||(a.get(e).set(n,{to:n,count:1}),o.get(e).set(n,(o.get(e).get(n)??0)+1),o.get(n).set(e,(o.get(n).get(e)??0)+1))}let s=Ar(r,a),c=r.map((e,t)=>({col:t%n,row:Math.floor(t/n)})),l=c.map(({col:e,row:t})=>({col:t%2?n-e-1:e,row:t})),u=(e,t)=>Math.abs(e.col-t.col)+Math.abs(e.row-t.row),d=e=>r.reduce((t,n)=>t+[...o.get(n)].reduce((t,[r,i])=>t+i*u(e.get(n),e.get(r)),0),0),f=new Map(r.map((e,t)=>[e,c[t]])),p=d(f);for(let e of[s,SR(r,o)])for(let t of[c,l]){let n=new Map(e.map((e,n)=>[e,t[n]])),r=d(n);r<p&&(f=n,p=r)}let m=({col:e,row:t})=>`${e},${t}`,h=new Map([...f].map(([e,t])=>[m(t),e])),g=(e,t,n,r)=>{let i=0;for(let[a,s]of o.get(e))i+=s*u(t,a===n?r:f.get(a));return i};for(let e=0;e<8;e++){let e=!1;for(let t of r){let n=f.get(t),r=o.get(t),i=0,a=0,s=0;for(let[e,t]of r)i+=f.get(e).col*t,a+=f.get(e).row*t,s+=t;if(!s)continue;let c=new Set;for(let e of[n,{col:Math.round(i/s),row:Math.round(a/s)}])for(let n=-1;n<=1;n++)for(let r=-1;r<=1;r++){let i=h.get(`${e.col+n},${e.row+r}`);i!==void 0&&i!==t&&c.add(i)}let l=0,u=null;for(let e of c){let r=f.get(e),i=g(t,r,e,n)+g(e,n,t,r)-g(t,n,e,r)-g(e,r,t,n);i<l&&(l=i,u=e)}if(u!==null){let r=f.get(u);f.set(t,r),f.set(u,n),h.set(m(r),t),h.set(m(n),u),e=!0}}if(!e)break}return r.map(e=>({id:e,...f.get(e)})).toSorted((e,t)=>e.row-t.row||e.col-t.col)}var wR=216,TR=48,ER=32,DR=20,OR=24,kR=20,AR=10;function jR(e,t){let n=e=>e&&(e.collapsed||e.members.length===1),r=e.map((t,r)=>e.length>5&&n(t)&&n(e[r+1])),i=0,a=0;e.forEach((t,n)=>{r[n]?a+=t.width:i+=t.width+(n===e.length-1?0:DR)});let o=Math.min(t,wR*5+DR*4),s=a?Math.max(.3,Math.min(.9,(o-i)/a)):1,c=0;return{groups:e.map((t,n)=>{let i=t.width*(r[n]?s:1),a={...t,x:c,visibleWidth:i,stacked:!!(r[n]||r[n-1])};return c+=i+(r[n]||n===e.length-1?0:DR),a}),width:c,height:Math.max(...e.map(e=>e.height))}}function MR(e){let t=`M${e[0].join(`,`)}`;for(let n=1;n<e.length-1;n++){let[r,i]=e[n],[a,o]=e[n-1],[s,c]=e[n+1],l=Math.hypot(s-r,c-i),u=Math.hypot(r-a,i-o);if(!u||!l)continue;let d=Math.min(6,u/2,l/2);t+=` L${r-(r-a)/u*d},${i-(i-o)/u*d} Q${r},${i} ${r+(s-r)/l*d},${i+(c-i)/l*d}`}return`${t} L${e.at(-1).join(`,`)}`}var NR=({count:e,index:t})=>(t-(e-1)/2)*Math.min(8,48/Math.max(1,e-1));function PR(e,t,n,r){let i=e.packages.find(e=>e.id===t),a=NR(r),o=n?e.y-12:e.rowBottom;if(e.members.length===1||e.collapsed){let t=e.x+e.visibleWidth/2+a;return[[t,n?e.y-5:e.y+e.height],[t,o]]}let s=e.x+i.x+(n?0:wR),c=e.y+i.y+TR/2+a/2,l=s+(n?-7-r.lane*6:3+r.lane*6);return[[s+(n?-4:0),c],[l,c],[l,o]]}function FR(e,t){let n=(t,n)=>{let r=e.get(t[n]),i=r.packages.find(e=>e.id===t[`${n}Package`]);return r.members.length===1||r.collapsed?[r.x+r.visibleWidth/2,r.y+r.height/2]:i?[r.x+i.x+wR/2,r.y+i.y+TR/2]:[r.x+r.width/2,r.y+r.height/2]},r=(r,i,a=e=>n(e,i))=>{let o=new Map,s=Map.groupBy(t,t=>{let n=e.get(t[r]);return n.collapsed?n:t[`${r}Package`]});for(let e of s.values())e.toSorted((e,t)=>{let[n,o]=a(e),[s,c]=a(t);return(e.bypassLane??n)-(t.bypassLane??s)||o-c||e[`${i}Package`].localeCompare(t[`${i}Package`])||e[`${r}Package`].localeCompare(t[`${r}Package`])}).forEach((t,n)=>o.set(t,{count:e.length,index:n}));for(let e of Map.groupBy(t,e=>e[r]).values())e.toSorted((e,t)=>{let[i,a]=n(e,r),[s,c]=n(t,r);return i-s||a-c||NR(o.get(e))-NR(o.get(t))}).forEach((t,n)=>{let i=n/Math.max(1,e.length-1);o.get(t).lane=r===`from`?1-i:i});return o},i=r(`from`,`to`),a=r(`to`,`from`,t=>{let n=PR(e.get(t.from),t.fromPackage,!1,i.get(t));return[n.at(-1)[0],n[0][1]]}),o=t.map(t=>{let n=e.get(t.from),r=e.get(t.to),o=PR(n,t.fromPackage,!1,i.get(t)),s=PR(r,t.toPackage,!0,a.get(t));return{edge:t,end:s,start:o,rowBottom:n.rowBottom,x1:o.at(-1)[0],x2:t.bypassLane??s.at(-1)[0]}});for(let e of Map.groupBy(o,e=>e.rowBottom).values())for(let t of[!0,!1]){let n=e.filter(e=>e.x2<e.x1===t).toSorted((e,n)=>(t?1:-1)*(e.x1-n.x1||e.x2-n.x2));n.forEach((e,t)=>{e.bendY=e.rowBottom+9+12*t/Math.max(1,n.length-1)})}return o.map(({edge:e,end:t,start:n,x1:r,x2:i,bendY:a})=>{let o=[[r,a],[i,a]],{bypassLane:s,...c}=e;return s!==null&&o.push([i,t.at(-1)[1]]),{...c,path:MR([...n,...o,...t.toReversed()])}})}function IR(e,t){let n=Math.sign(t.x-e.x),r=Math.sign(t.y-e.y),i=TR,a=wR;if(r===0&&Math.abs(t.x-e.x)===a+DR){let r=e.y+i/2-n*6;return`M${e.x+(n>0?a:0)},${r} L${t.x+(n>0?-4:a+4)},${r}`}if(n===0&&Math.abs(t.y-e.y)===i+OR){let n=e.x+a/2+r*8;return`M${n},${e.y+(r>0?i:0)} L${n},${t.y+(r>0?-4:i+4)}`}let o=n||r,s=e.x+(o>0?a:0),c=e.y+i/2,l=s+o*(DR/2-3),u=t.x+a/2+o*8,d=r>0||r===0&&n>0,f=t.y+(d?-10:i+10),p=t.y+(d?-4:i+4);return MR([[s,c],[l,c],[l,f],[u,f],[u,p]])}function LR(e,t,n,r=1184,i=!1){if(i)return{id:e,members:t,collapsed:i,packages:[],internalEdges:[],width:wR+AR*2,height:TR};let a=t.length>1,o=Math.max(1,Math.floor((r-AR*2+DR)/(wR+DR))),s=a?Math.min(o,Math.max(2,Math.ceil(Math.sqrt(t.length/2)))):1,c=a?AR:0,l=Math.ceil(t.length/s),u=a?kR:0,d=(a?CR(t,n,s):[{id:t[0],col:0,row:0}]).map(e=>({id:e.id,x:c+e.col*(wR+DR),y:c+u+e.row*(TR+OR)})),f=new Map(d.map(e=>[e.id,e])),p=[];if(a)for(let e of t)for(let t of n.get(e)??[])e!==t&&f.has(t)&&p.push({from:e,to:t,path:IR(f.get(e),f.get(t))});return{id:e,members:t,collapsed:i,packages:d,internalEdges:p,width:s*wR+(s-1)*DR+c*2,height:l*TR+(l-1)*OR+c*2+u}}function RR(e,t={}){let n=t.ecosystem??(/(?:^|\/)node_modules\//u.test(e)?`npm`:``);return{id:e,name:t.name||(e===`.`?`App`:e),ecosystem:n,version:t.version??``,own:e===`.`,root:!1,target:!1}}var zR=e=>e.ecosystem===`npm`?e.name:`${e.ecosystem}:${e.name}`;function BR(e,t){let n=e?.bundle?.modules.get(t);if(!t||t===`.`||!n)return null;let r=RR(t,n);return{packageKey:r.ecosystem?zR(r):r.name,packageGroup:Jr(``,{packageDir:t})}}function VR(e,{packageKey:t,packageGroup:n,version:r,reason:i=``}){let a=new Map,o=new Map,s=new Map,c=Wt(e)??new Map,l=new Map([...c.keys()].map(e=>[e,e])),u=Ce(e).get(i),d=new Map([...l].filter(([e])=>!u||u.has(e)));for(let t of new Set([...d.keys()].map(e=>c.get(e))))s.set(t,RR(t,e.bundle.modules.get(t)));let f=(e,t)=>{e!==t&&(o.has(e)||o.set(e,new Set),a.has(t)||a.set(t,new Set),o.get(e).add(t),a.get(t).add(e))};for(let[t,n]of ke(e))if(d.has(t))for(let e of n){if(!d.has(e))continue;let n=c.get(t),r=c.get(e);if(jr(t,e,r===`.`,n===`.`))f(n,r);else if(n!==r){let e=s.get(r);e.excludedImporters??=new Set,e.excludedImporters.add(n)}}let{roots:p,appImports:m}=Ne(e,d,e=>c.get(e),c,l);m.length>0&&!s.has(`.`)&&s.set(`.`,RR(`.`));for(let e of m)f(`.`,e);for(let[e,t]of s){if(!(t.own||t.ecosystem===`npm`&&(t.name===`@babel/core`||t.name===`react-native`&&o.get(`.`)?.has(e))))continue;t.traceBoundary=!0;let n=a.get(e);for(let t of n??[])t!==`.`&&(n.delete(t),o.get(t).delete(e))}for(let e of p){let t=s.get(e===`__own__`?`.`:e);t&&(t.root=!0)}let h=[];for(let e of s.values()){let i=zR(e),a=n===void 0?e.ecosystem===`github`?i.toLowerCase()===t.toLowerCase():i===t:Jr(``,{packageDir:e.id})===n,o=e.ecosystem===`github`&&e.version===`.`?`0.0.0`:e.version;!e.own&&a&&(r===void 0||o===r)&&(e.target=!0,h.push(e.id))}let g=new Set(h),_=[...h];for(let e=0;e<_.length;e++)for(let t of a.get(_[e])??[])g.has(t)||(g.add(t),_.push(t));let v=e=>new Map([...g].map(t=>[t,new Set([...e.get(t)??[]].filter(e=>g.has(e)))]));return{nodes:new Map([...s].filter(([e])=>g.has(e))),imports:v(o),importedBy:v(a),targets:h}}function HR(e,{maxWidth:t=1280,expandedCycles:n=new Set}={}){let r=[...e.nodes.keys()].toSorted(),{groups:i,componentOf:a}=Pr(r,e.imports),o=i.map(()=>new Set),s=[];for(let[t,n]of e.imports){let e=a.get(t);for(let r of n){let n=a.get(r);e!==n&&(o[e].add(n),s.push({from:e,to:n,fromPackage:t,toPackage:r}))}}let c=i.map(()=>0),l=i.map(()=>0);for(let e of o)for(let t of e)l[t]++;let u=i.flatMap((e,t)=>l[t]===0?[t]:[]);for(let e=0;e<u.length;e++){let t=u[e];for(let e of o[t])c[e]=Math.max(c[e],c[t]+1),--l[e]===0&&u.push(e)}let d=o.some((e,t)=>[...e].some(e=>c[e]!==c[t]+1)),f=t-ER-24-(d?56:0),p=[...Map.groupBy(i.map((t,r)=>{let i=t.length>10;return{...LR(r,t,e.imports,f,i&&!n.has(r)),collapsible:i}}),e=>c[e.id])].toSorted(([e],[t])=>e-t).map(([,e])=>jR(e,f)),m=p.reduce((e,t)=>Math.max(e,t.width+24),240),h=new Map,g=12;for(let{groups:e,width:t,height:n}of p){for(let r of e)h.set(r.id,{...r,x:r.x+(m-t)/2,y:g,rowBottom:g+n});g+=n+36}let _=0,v=FR(h,s.map(e=>{let t=c[e.to]===c[e.from]+1?null:m+8+_++%4*10;return{...e,bypassLane:t}}));return{boxes:[...h.values()],componentOf:a,edges:v,width:m+(_?56:0),height:Math.max(0,g-24)}}function UR(e,t){if(t===null)return null;let n=new Set,r=new Set([t]);for(let i of[!1,!0]){let a=new Map,o=[t],s=new Set([t]);for(let t of e.edges){let e=i?t.to:t.from,n=i?t.from:t.to;a.has(e)||a.set(e,[]),a.get(e).push(n)}for(let e=0;e<o.length;e++)for(let t of a.get(o[e])??[])s.has(t)||(s.add(t),r.add(t),o.push(t));for(let t of e.edges)s.has(t.from)&&s.has(t.to)&&n.add(t)}return{groups:r,edges:n}}var WR=new Map,GR=new Map,KR=[];function qR(e){if(!e?.managedId)return WR;let t=F.managedSession,n=F.managedTeams&&js(F.managedTeams),r=[t?.id,t?.role,t?.csrfToken,F.currentManagedTeam,n];return r.some((e,t)=>e!==KR[t])&&(KR=r,GR=new Map),GR}var JR=new WeakMap;function YR(e){return JR.has(e)||JR.set(e,{reasons:Ce(e),selected:``}),JR.get(e)}function XR(e,t=YR(e).selected){return JSON.stringify([e.managedId??e.integrity,t])}var ZR=`deepview.advisories.proxyConsent`;function QR(){try{return localStorage.getItem(ZR)===`1`}catch{return!1}}function $R(){try{localStorage.setItem(ZR,`1`)}catch{}}function ez(e){if(!e||e.kind!==`stasis`||!e.bundle)return!1;for(let[t,n]of e.bundle.modules)if(t.includes(`node_modules`)&&n?.name&&typeof n.version==`string`&&n.version)return!0;return!1}function tz(e){if(!e||e.kind!==`stasis`||!e.bundle)return!1;for(let[t,n]of e.bundle.modules)if(t!==`.`&&typeof n?.name==`string`&&n.name&&typeof n.version==`string`&&n.version&&(n.ecosystem||/(?:^|\/)node_modules\//u.test(t)))return!0;return!1}function nz(e){if(e.bundle&&!tz(e))return!0;let t=qR(e).get(XR(e,``));return t?.state===`ok`&&t.query.size===0&&t.skipped.length===0}function rz(e,t,n=!1){return!e||e.managedId&&!az(e)||iz(e,t)<1||e.summary?.versionedPackages===0?!1:n?!0:EL(e.name)===`stasis`?!t||t.integrity!==e.integrity?!0:e.managedId?!t.bundle||tz(t):ez(t):!1}function iz(e,t){let n=t?.integrity===e.integrity&&t.bundle?t.bundle.version:e.summary?.stasisVersion;return Number.isSafeInteger(n)?n:1/0}function az(e){let t=F.managedSession?.role;return[`admin`,`manage`].includes(t)?!0:[`view`,`triage`].includes(t)?F.managedTeams.some(t=>(F.currentManagedTeam==null||t.id===F.currentManagedTeam)&&t.permissions?.security===!0&&t.bundles?.some(t=>t.id===e.managedId)):!1}function oz(e){return Object.fromEntries([...e].map(([e,t])=>[e,[...t].toSorted()]))}var sz=e=>e.ecosystem===`npm`?e.name:`${e.ecosystem}:${e.name}`;function cz(e){return{...e,title:e.title||e.id,severity:e.severity??`unknown`,cvss:{score:e.cvss,vectorString:e.cvssVector},vulnerable_versions:e.range}}function lz(e){let t=Array.isArray(e),n=t?Map.groupBy(e.map(cz),sz):new Map(Object.entries(e??{}));for(let[e,r]of n){let i=Array.isArray(r)?r.filter(e=>e&&typeof e.title==`string`&&typeof e.severity==`string`):[];i.length>0?n.set(e,t?i:i.map(e=>({...e,source:`registry`}))):n.delete(e)}return n}function uz(e,t){return!!(e?.managedId&&t?.state===`ok`&&!t.recheckingRepositories&&t.query.size>0)}async function dz(e){let t=await fetch(`/api/npm-advisories`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(oz(e))});if(!t.ok){let e=`HTTP ${t.status}`;try{let n=await t.json();typeof n?.error==`string`&&n.error&&(e=`${n.error} (HTTP ${t.status})`)}catch{}throw Error(e)}return t.json()}function fz(e,t){return mz(e,t)}function pz(e,t){return mz(e,t,!0)}async function mz(e,t,n=!1){if(!e?.integrity||!e.managedId&&!QR())return;let r=qR(e),i=XR(e),a=r.get(i);if(n){if(!uz(e,a))return;r.set(i,{...a,recheckingRepositories:!0,repositoryError:null}),t()}else if(a)return;let{reasons:o,selected:s}=YR(e),c=e.managedId?new Map:Gt(e,o.get(s)??null);n||r.set(i,{state:`loading`,query:c});try{let t,a=[];if(e.managedId){let r=await xx(e.managedId,void 0,s,n,n);c=Array.isArray(r.packages)?new Map(r.packages.map(e=>[sz(e),new Set(e.versions)])):new Map(Object.entries(r.packages).map(([e,t])=>[e,new Set(t)])),t=r.advisories,a=Array.isArray(r.skipped)?r.skipped:[]}else t=c.size>0?await dz(c):{};r.set(i,{state:`ok`,byPackage:lz(t),query:c,skipped:a})}catch(e){let t=e?.message??`fetch-failed`;r.set(i,n&&![401,403,404].includes(e?.status)?{...a,recheckingRepositories:!1,repositoryError:t}:{state:`error`,reason:t,query:c})}t()}async function hz(e,t){if(!e?.integrity)return;let n=qR(e),r=XR(e);n.get(r)?.state===`error`&&(n.delete(r),await fz(e,t))}var gz={critical:0,high:1,moderate:2,low:3,info:4};function _z(e){return gz[e]??999}function vz(){let e=typeof window>`u`?``:window.location.host;return A`<div class="bundle-advisories-consent"><div class="bundle-advisories-consent-card"><p class="bundle-advisories-consent-text">This bundle's dependency names and versions will be sent to the npm registry through a same-origin proxy (<span class="mono">${e}</span> → <span class="mono">registry.npmjs.org</span>) to look up published security advisories.</p><button type="button" class="bundle-advisories-consent-btn" data-advisories-consent>Confirm</button><p class="bundle-advisories-consent-note">This preference will be saved and reused for other bundles.</p></div></div>`}function yz(e,t=()=>{},n=null){let r=e?YR(e):null,i=[...r?.reasons.keys()??[]].map(e=>({id:`reason:${e}`,label:e})),a=xz(e),o=!!e?.managedId&&!nz(e);return A`<div class="bundle-advisories-panel">${a!==M||i.length>0||o?A`<div class="bundle-advisories-toolbar">${a} ${i.length>0||o?A`<div class="bundle-advisories-scopes">${i.length>0?A`<bundle-scope-selector .reasons="${i}" .value="${r.selected?`reason:${r.selected}`:``}" label="Choose advisory scope" @scope-change="${n=>{let i=n.detail.value.replace(/^reason:/u,``);r.selected=r.reasons.has(i)?i:``;let a=fz(e,t);return t(),a}}"></bundle-scope-selector>`:M} ${o?bz(e,t):M} ${o&&n?A`<button type="button" class="bundle-advisories-retry bundle-advisories-scan" @click="${n}">${k(ta)}<span>Validate</span></button>`:M}</div>`:M}</div>`:M} ${Cz(e)}</div>`}function bz(e,t){if(!e?.managedId)return M;let n=qR(e).get(XR(e)),r=!!n?.recheckingRepositories;return A`<button type="button" class="bundle-advisories-retry bundle-advisories-recheck" ?disabled="${!uz(e,n)}" aria-busy="${String(r)}" @click="${()=>pz(e,t)}">${r?`Rechecking…`:`Recheck against repositories`}</button>`}function xz(e){if(!e||!e.managedId&&!QR())return M;let t=qR(e).get(XR(e));if(t?.state!==`ok`)return M;let n=t.query.size,r=t.byPackage.size;if(r===0)return M;let i=[...t.byPackage.values()].reduce((e,t)=>e+t.length,0);return A`<div class="bundle-advisories-summary">${i} ${i===1?`advisory`:`advisories`} across ${r} of ${n} ${n===1?`package`:`packages`}</div>`}function Sz(e,t){let n=t.query.size;return n===0&&t.skipped.length>0?A`No packages could be audited.`:A`No advisories for the ${n} ${t.skipped.length>0?`audited `:``}${n===1?`package`:`packages`} in ${YR(e).selected?`this scope`:`this bundle`}.`}function Cz(e){if(!e)return A`<div class="bundle-advisories-empty">Bundle not loaded yet.</div>`;if(e.kind!==`stasis`||!e.managedId&&!e.bundle)return A`<div class="bundle-advisories-empty">Advisories are only available for stasis bundles.</div>`;if(!e.managedId&&!QR())return vz();let t=qR(e).get(XR(e));if(!t||t.state===`loading`)return A`<div class="bundle-advisories-empty">Loading advisories…</div>`;if(t.state===`error`)return A`<div class="bundle-advisories-empty is-error"><span>Failed to fetch advisories: ${t.reason}</span> <button type="button" class="bundle-advisories-retry" data-advisories-retry>Retry</button></div>`;let n=t.byPackage.size===0?A`<div class="bundle-advisories-empty"><span>${Sz(e,t)}</span></div>`:M;if(t.byPackage.size===0&&t.skipped.length===0&&!t.repositoryError)return n;let r=[...t.byPackage.entries()].toSorted(([e,t],[n,r])=>{let i=Math.min(...t.map(e=>_z(e.severity))),a=Math.min(...r.map(e=>_z(e.severity)));return i===a?e.localeCompare(n):i-a});return A`${n}<div class="bundle-advisories">${t.repositoryError?A`<div class="bundle-advisories-empty is-error" role="alert">Repository recheck failed: ${t.repositoryError}. Previous results are shown.</div>`:M} ${t.skipped.length>0?A`<section class="bundle-advisories-skipped" aria-label="Dependencies not audited"><h3>Not audited</h3><ul>${t.skipped.map(e=>A`<li><span class="mono">${sz(e)}@${e.version}</span>: ${e.because}</li>`)}</ul></section>`:M}<ul class="bundle-advisories-list">${r.map(([n,r])=>wz(e,n,r,t.query.get(n),()=>qR(e).get(XR(e))?.byPackage===t.byPackage))}</ul></div>`}function wz(e,t,n,r,i){let a=[...n].toSorted((e,t)=>{let n=_z(e.severity)-_z(t.severity);return n===0?(e.title??``).localeCompare(t.title??``):n}),o=r?[...r].toSorted():[];return A`<li class="bundle-advisories-section"><div class="bundle-advisories-package"><span class="bundle-advisories-section-name">${t}</span> ${o.length>0?A`<span class="bundle-advisories-section-versions">${o.map(n=>A`<button type="button" class="bundle-advisories-version" aria-haspopup="dialog" aria-label="${`Why is ${t}@${n} here?`}" @click="${()=>Le({details:e,packageKey:t,version:n,reason:YR(e).selected,isCurrent:i})}">${n}</button>`)}</span>`:M}</div><ul class="bundle-advisories-rows">${a.map(e=>EN(e,({title:e,severity:t,details:n})=>ft({heading:e,severity:t,markdown:n,isCurrent:i})))}</ul></li>`}var Tz=e=>I()?[]:Ef(e),Ez=()=>I()?0:Df(),Dz=null,Oz=new WeakMap;function kz(e){if(Oz.has(e))return Oz.get(e);let t=Ut(e),n=ke(e),r=[...t.keys()],{stripped:i}=Pn(r),a=new Map(r.map((e,t)=>[e,i[t]])),o={};for(let e of r){let r=a.get(e),i=n.get(e);o[r]={imports:i?[...i].map(e=>a.get(e)).filter(Boolean):[],size:t.get(e)}}let s={tree:o,origToStripped:a};return Oz.set(e,s),s}function Az(e,t=null){let n={inprogress:0,fixed:0,invalid:0,deleted:0,ignored:0};if(!e?.fileHashes)return n;let r=new Set;for(let[i,a]of e.fileHashes)if((!t||t.has(i))&&!r.has(a)){r.add(a);for(let e of Tz(a)){let t=s(e,F.triage.get(T(e)));t&&n[t]!==void 0&&n[t]++}}return n}function jz(e,t=`graph`){if(!e||e.size===0)return new Map;let n=new Map;for(let[r,i]of e){let e=Tz(i);if(e.length===0)continue;let a=e.filter(e=>{let n=s(e,F.triage.get(T(e)))??null;return t===`issues`?n!==`invalid`&&n!==`deleted`:n===F.shownTriage});a.length!==0&&n.set(r,a)}return n}function Mz(e){let t=kz(e),n=Ce(e,t.origToStripped.keys());w.bundleReasonFor!==e.integrity&&(w.bundleReasonFor=e.integrity,w.dependencyPackagesView=!1,w.bundleReason=null);let r=Pz(t,n,w.bundleReason),{tree:i,origToStripped:a,selected:o}=r;w.bundleReason=o;let s=r.files;if(s.length===0)return null;let c=null;if(e.fileHashes&&e.fileHashes.size>0){c=new Map;for(let[t,n]of e.fileHashes){let e=a.get(t);e!==void 0&&c.set(e,n)}}let l=jz(c),u=l.size>0||[...e.fileHashes??[]].some(([e,n])=>t.origToStripped.has(e)&&Tz(n).length>0),d=u&&w.bundleIssues,f=new Map,p=new Map,m=new Map,h=new Map;for(let[e,t]of d?l:[]){let n={critical:0,high:0,medium:0,low:0,high_bug:0,bug:0,informational:0},r=new Set,i=new Set,a=[];for(let e of t){n[e.severity]=(n[e.severity]||0)+1,r.add(e.severity);let t=F.triage.get(T(e))?.color??`none`;i.add(t),a.push({severity:e.severity,color:t})}f.set(e,n),p.set(e,r),m.set(e,i),h.set(e,a)}let g=[`matrix`,`flow`].includes(w.bundleLayout)||f.size===0?null:hr(i,f),_=new Map;for(let[e,t]of a)_.set(t,e);let v=Wt(e),y=new Map(v?[...e.bundle.modules].map(([e,t])=>[e,{directory:e,version:typeof t.version==`string`?t.version:void 0}]):[]),b=e=>{let t=_.get(e)??e;return Jr(t,{packageDir:v?.get(t)})},ee=s.filter(e=>b(e)===`__own__`),te=Ne(e,a,b,v,t.origToStripped),ne=new Set;for(let e of s)if(ne.add(b(e)),ne.size>=3)break;let re=ne.size>=3,ie=s;if(w.focusedPkg){r.focused.has(w.focusedPkg)||r.focused.set(w.focusedPkg,s.filter(e=>b(e)===w.focusedPkg));let e=r.focused.get(w.focusedPkg);e.length>0?ie=e:w.focusedPkg=null}return w.selected&&!Object.hasOwn(i,w.selected)&&(w.selected=null),{treeData:i,files:ie,ownCounts:f,transitiveCounts:g,severitySets:p,colorSets:m,fileFindings:h,options:{pkgOf:b,packageInfoOf:e=>y.get(v?.get(_.get(e)??e))},strippedToOrig:_,canPackagesView:re,hasIssues:u,issuesShown:d,viewId:e.integrity??null,supportsLayers:!0,layerRoots:te,flowEntries:w.bundleLayout===`flow`?je(e,a,t.origToStripped,v):void 0,ownSourcePackages:we(a,b,v),entryPackages:Ee(e,a,b),ownSourceFiles:new Set(ee),reasons:[...n.keys()]}}var Nz=new WeakMap;function Pz(e,t,n){let r=t.has(n)?n:null;Nz.has(e)||Nz.set(e,new Map);let i=Nz.get(e);if(!i.has(r)){let n=De(e.tree,e.origToStripped,t,r);i.set(r,{...n,files:Object.keys(n.tree),focused:new Map})}return i.get(r)}function Fz(){if(!Dz)return;let e=ST();e&&e.refreshSidebar(Dz,{isBundleContext:!0,findingsJump:!I()})}function Iz(){if(!Dz)return;let e=ST();e&&e.refreshTopPkgs(Dz)}function Lz(e){Dz=e}function Rz(e,t,n){let{totalByPkg:r,whyQueries:i,total:a}=e;if(a===0)return M;e.sorted.has(t)||e.sorted.set(t,[...r.entries()].toSorted((e,n)=>+(n[0]===`__own__`)-(e[0]===`__own__`)||(t===`size`?n[1]-e[1]:0)||Xr(e[0]).localeCompare(Xr(n[0]))||e[0].localeCompare(n[0])));let o=e.sorted.get(t);return A`<div class="bundles-dist"><div class="bundles-dist-bar" aria-hidden="true">${D(o,([e])=>e,([e,t])=>A`<span class="bundles-dist-seg" style="${E({flexGrow:t,background:Or(e)})}" data-tooltip="${e===`__own__`?M:`${e}: ${Wr(t)}`}"></span>`)}</div><ul class="bundles-dist-list">${D(o,([e])=>e,([e,t])=>{let r=(t/a*100).toFixed(1),o=Xr(e),s=Or(e),c=i.get(e);return A`<li><span class="bundles-dist-dot" style="${E({background:s})}"></span> ${c?A`<button type="button" class="bundles-dist-pkg" aria-haspopup="dialog" aria-label="${`Show dependency chains for ${o}`}" @click="${()=>zz(n,c)}" data-tooltip-truncated data-tooltip="${e}">${o}</button>`:A`<span class="bundles-dist-pkg" data-tooltip-truncated data-tooltip="${e===`__own__`?M:e}">${o}</span>`} <span class="bundles-dist-bar-row" aria-hidden="true"><span class="bundles-dist-bar-fill" style="${E({width:`${r}%`,background:s})}"></span> </span><span class="bundles-dist-size">${Wr(t)}</span> <span class="bundles-dist-percent">${r}%</span></li>`})}</ul></div>`}function zz(e,t){let n=F.currentManagedTeam,r=F.currentWorkspace,i=F.managedSession&&js(F.managedSession);return Le({details:e,...t,isCurrent:()=>F.currentView===`bundles`&&F.selectedBundle===e.integrity&&(F.bundleDetails&&js(F.bundleDetails))===js(e)&&F.currentWorkspace===r&&F.currentManagedTeam===n&&(F.managedSession&&js(F.managedSession))===i})}var Bz=new WeakMap;function Vz(e,t,n,r){let i=Bz.get(e);if(i&&i.packageDirs===n&&i.details===r&&i.sizes.length===t.length&&i.sizes.every((e,n)=>e===t[n]))return i;let{prefix:a,stripped:o}=Pn(e),s=t=>n?.get(e[t]),c=new Set;for(let t=0;t<o.length;t++)c.add(Jr(e[t],{packageDir:s(t)}));let l=o.map((e,t)=>t).toSorted((e,t)=>o[e].localeCompare(o[t])),u=o.map((e,t)=>t).toSorted((e,n)=>(t[n]??-1)-(t[e]??-1)||o[e].localeCompare(o[n])),d=Hz(e.map((e,n)=>({path:e,size:t[n],pkgDir:s(n)})),r),f={sizes:[...t],packageDirs:n,details:r,prefix:a,stripped:o,packages:c,byName:l,bySize:u,dist:d};return Bz.set(e,f),f}function Hz(e,t){let n=new Map,r=new Map,i=0;for(let{path:a,size:o,pkgDir:s}of e){if(typeof o!=`number`||o<=0)continue;let e=Jr(a,{packageDir:s});n.set(e,(n.get(e)??0)+o),r.has(e)||r.set(e,BR(t,s)),i+=o}return{totalByPkg:n,whyQueries:r,total:i,sorted:new Map}}function Uz(e,t,n,r,i,a,{bundleSize:o=null,unpackedSize:s=null,resources:c=null,details:l=null,leadColumn:u=null,trailColumns:d=M,summaryExtra:f=M,fileTag:p=null,fileIcon:m=null,fileFlags:h=null,overviewClass:g=``,fileFilter:_=null,lines:v=null,sized:y=(e,t,n)=>n}={}){let b=Vz(n,r,i,l),{prefix:ee,stripped:te,packages:ne}=b,re=te.map((e,t)=>t).filter(e=>!_||_.keeps(n[e])),ie=e=>h?.(n[e])??[],ae=re.some(e=>ie(e).length>0),oe=F.bundleOverviewFilesSort===`flags`&&!ae?`name`:F.bundleOverviewFilesSort,se=oe===`size`?b.bySize:b.byName,ce=oe===`flags`?iI(re,ie,e=>te[e]):_?se.filter(e=>_.keeps(n[e])):se,le=F.bundleOverviewPackagesSort,ue=Rz(b.dist,le,l),de=ue===M?A`<p class="bundles-overview-col-empty">No size information for this bundle's sources.</p>`:ue,fe={critical:0,high:0,medium:0,low:0,high_bug:0,bug:0,informational:0},pe=0,me=new Map;if(F.bundleDetails?.fileHashes){let e=jz(F.bundleDetails.fileHashes,`issues`);for(let t of e.values())for(let e of t){fe[e.severity]!==void 0&&fe[e.severity]++,pe++;for(let t of Af(e.fileHash,e))me.set(t,(me.get(t)??0)+1)}}let he=[...me.keys()].toSorted(),ge=Ai.filter(e=>fe[e]>0).map(e=>A`<span class="${`tree-count-chip ${e}`}">${fe[e]} ${e.replaceAll(`_`,` `)}</span>`),_e=n.length>0?A`<ul class="bundles-sources-list">${ce.map(e=>{let t=n[e],i=r[e],a=A`${m?m(t):M}<span class="bundles-source-path" data-tooltip-truncated data-tooltip="${t}">${te[e]}</span> ${p?p(t):M} ${i==null?M:A`<span class="bundles-source-size">${Wr(i)}</span>`}`;return A`<li>${c?.has(t)?A`<div class="bundles-source-row is-resource">${a}</div>`:A`<button type="button" class="bundles-source-row" data-bundle-view-source="${t}">${a}</button>`}</li>`})}</ul>`:A`<p class="bundles-overview-col-empty">No source files in this bundle.</p>`,ve=he.length>0?A`<ul class="bundles-reports-list">${he.map(e=>{let t=Wx[Jx(e)]??Wx.default,n=me.get(e)??0;return A`<li><button type="button" class="report-chip bundles-report-chip" data-bundle-issue-report="${e}">${k(t)}<span class="report-chip-label" data-tooltip-truncated data-tooltip="${e}">${x(e)}</span> <span class="bundles-report-count">${n} ${n===1?`issue`:`issues`}</span></button></li>`})}</ul>`:A`<p class="bundles-overview-col-empty">No matching reports indexed yet.</p>`,ye=n.length-(c?.size??0);return A`<div class="bundles-overview ${g}"><div class="bundles-overview-summary"><div class="bundles-detail-meta-row">${e(ee)}<dl class="bundles-detail-meta is-build">${t}<dt>Sources</dt><dd>${v==null?y(`files`,ye,ye):A`${y(`files`,ye,`${ye} ${ye===1?`file`:`files`}`)} · ${y(`lines`,v,`${v.toLocaleString(`en`)} LoC`)}`}</dd>${o==null?M:A`<dt>Size</dt><dd>${Wr(o)}</dd>`} ${s==null?M:A`<dt>Unpacked</dt><dd>${y(`unpacked`,s,Wr(s))}</dd>`} ${c?.size?A`<dt>Resources</dt><dd>${c.size}</dd>`:M}</dl>${a??M}</div>${pe>0?A`<div class="bundles-issue-summary tree-count-chips">${ge}</div>`:M} ${f}</div><div class="bundles-overview-columns">${u??cA({title:`Packages`,count:ne.size,body:de,tools:A`<span class="bundles-overview-sort" role="group" aria-label="Package order">${[[`name`,`Name`],[`size`,`Size`]].map(([e,t])=>A`<button type="button" aria-pressed="${String(le===e)}" @click="${()=>{F.bundleOverviewPackagesSort=e,X()}}">${t}</button>`)}</span>`})} ${cA({title:`Files`,count:_?`${ce.length} of ${n.length}`:n.length,body:_e,list:!0,extra:_?A`<button type="button" class="bundles-overview-filter" aria-label="${`Show every file, not only ${_.label}`}" @click="${_.clear}">${_.label}<span aria-hidden="true">×</span></button>`:M,tools:A`<span class="bundles-overview-sort" role="group" aria-label="File order">${[[`name`,`Name`],[`size`,`Size`],...ae?[[`flags`,`Flags`]]:[]].map(([e,t])=>A`<button type="button" aria-pressed="${String(oe===e)}" @click="${()=>{F.bundleOverviewFilesSort=e,X()}}">${t}</button>`)}</span>`})} ${he.length>0?cA({title:`Reports`,count:he.length,body:ve,list:!0}):M} ${d}</div></div>`}var Wz=16,Gz=new Map,Kz=new Set,qz=()=>A`<button type="button" class="bundle-source-wrap-toggle" data-bundle-source-wrap hidden aria-pressed="${F.bundleSourceWrap?`true`:`false`}" aria-label="Wrap lines" data-tooltip="Wrap lines">${dw}</button>`;function Jz(e){let t=e?.status;return A`<button type="button" class="${C({"bundle-source-pretty-toggle":!0,"is-loading":t===`loading`,"is-error":t===`error`})}" data-bundle-source-pretty aria-pressed="${F.bundleSourcePretty?`true`:`false`}" aria-busy="${t===`loading`?`true`:M}" aria-label="Pretty-print" data-tooltip="${ak(e)}">${ik}</button>`}function Yz(e,t,n,r,i,a){let o=Ek(e,t,n,r),s=o?Bk(e,t,n,r,()=>{F.bundleSourceFile===n&&X()}):null,c=s?.status===`ready`;return{pretty:c,toggle:o?Jz(s):M,content:c?s.text:r,fileFindings:c?[]:i,lineFindings:c?new Map:a}}function Xz(e){let t=e?.status;return A`<button type="button" class="${C({"bundle-source-lockfile-toggle":!0,"is-loading":t===`loading`,"is-error":t===`error`})}" data-bundle-source-lockfile aria-pressed="${F.bundleSourceLockfile?`true`:`false`}" aria-busy="${t===`loading`?`true`:M}" aria-label="View lockfile" data-tooltip="${nA(e)}">${k(Qi)}</button>`}var Zz=null;function Qz(){queueMicrotask(()=>{document.querySelector(`.bundle-code-rail-body .bundle-code-tree-link.current`)?.scrollIntoView({block:`nearest`})})}function $z(e){requestAnimationFrame(()=>requestAnimationFrame(()=>{document.querySelector(`.bundle-code-main .bundle-source-lineno-row[data-line="${e}"]`)?.scrollIntoView({block:`center`})}))}function eB(e){for(let t of Ai)for(let n of e)if(n.severity===t)return t;return e[0]?.severity??null}var tB={content:``,parts:``};function nB(e){if(tB.content===e)return tB.parts;let t=e;if(e.length>GT||fC(e)){let n=e=>[JT(e)].flat();t=[];let r=0;for(let i=0;i<e.length;){let a=e.indexOf(`
181
- `,i),o=a===-1?e.length:a+1;(a===-1?o:a)-i>KT&&(t.push(...n(e.slice(r,i)),A`<span class="bundle-source-long-line">${n(e.slice(i,o))}</span>`),r=o),i=o}t.push(...n(e.slice(r)))}return tB={content:e,parts:t},t}function rB(e,t,n,r,i=null,a=!1,o=!1){let s=Lt(e),c=F.bundleSourceTargetLine,l=!o&&c&&c.path===t&&c.bundle===(n?.integrity??null)?c.line:null,u=l==null?null:Math.max(c.end??l,l),d=String(s).length,f=Pt(t,n?.kind===`stasis`?n.bundle?.formats?.get(t):void 0,e),p=`${n?.integrity??``}\0${t}${o?`\0pretty`:``}`;f&&!Gz.has(p)&&!Kz.has(p)&&(Kz.add(p),(async()=>{let r=await IS(e,f,tC(n,t));Gz.set(p,typeof r==`string`?gC(r):null),Gz.size>Wz&&Gz.delete(Gz.keys().next().value),Kz.delete(p),F.bundleSourceFile===t&&X()})());let m=Gz.get(p);Gz.has(p)&&(Gz.delete(p),Gz.set(p,m));let h=F.bundleSourceFindingIdx,g=[...r].map(([e,t])=>`${e}:${eB(t.map(e=>e.f))}:${t.map(e=>e.idx).join(`,`)}`).join(` `);return A`<div class="${C({"bundle-source-lines":!0,"is-wrapped":F.bundleSourceWrap})}" style="${E({"--lineno-width":`${d}ch`})}" ${WT(FD)}><aside class="bundle-source-lineno-col" aria-hidden="true">${FT([s,g,h,i,a,l,u],()=>Array.from({length:s},(e,t)=>{let n=t+1,o=r.get(n),s=o?eB(o.map(e=>e.f)):null,c=o&&h!=null&&o.some(e=>e.idx===h);return A`<div class="${C({"bundle-source-lineno-row":!0,"is-match":i?.has(n)??!1,"is-target":l!=null&&n>=l&&n<=u})}" data-line="${n}">${o?A`<button type="button" class="${C({"bundle-source-dot":!0,[`sev-${s}`]:!0,active:c})}" data-bundle-source-finding="${o[0].idx}" data-tooltip="${`${o.length} ${o.length===1?`issue`:`issues`} on line ${n}`}" aria-label="${`${o.length} issues on line ${n}`}"></button>`:A`<span class="bundle-source-dot-placeholder"></span>`} <span class="bundle-source-lineno-num" data-bundle-source-line="${a?n:M}">${n}</span></div>`}))}</aside><pre class="bundle-source-code" tabindex="-1" aria-label="${t}"><code class="${f?`language-${f}`:``}">${typeof m==`string`?k(m):nB(e)}</code></pre></div>`}function iB(e){let t=F.bundleSourceFindingIdx;if(t==null)return M;let n=e[t];if(!n)return M;let r=n.fileHash?Af(n.fileHash,n):[],i=s(n,F.triage.get(T(n))),a=i===`fixed`?`Fixed`:i===`inprogress`?`In progress`:i===`ignored`?`Ignored`:null,o=In(n),c=mV(n.line);return A`<aside class="bundle-source-panel"><header class="bundle-source-panel-bar"><span class="${`bundle-source-panel-sev sev-${n.severity}`}">${n.severity.replaceAll(`_`,` `)}</span> ${a?A`<span class="${`bundle-source-panel-triage triage-${i}`}">${a}</span>`:M} <button type="button" class="bundle-source-panel-close" data-action="bundle-source-panel-close" aria-label="Close finding details">×</button></header><div class="bundle-source-panel-body">${c||o?A`<div class="bundle-source-panel-line-row">${c?A`<span class="bundle-source-panel-line">${c}</span>`:M} ${o?A`<span class="bundle-source-panel-meta" data-tooltip-truncated data-tooltip="${o}">${o}</span>`:M}</div>`:M}<div class="bundle-source-panel-desc">${Tw(Hi(n),{paragraphs:!1})}</div>${r.length>0?A`<div class="bundle-source-panel-reports"><div class="bundle-source-panel-reports-label">Reported by</div>${r.map(e=>{let t=st[Jx(e)]??st.default;return A`<button type="button" class="report-chip bundle-source-panel-report" data-bundle-issue-report="${e}">${k(t)}<span class="report-chip-label" data-tooltip-truncated data-tooltip="${e}">${x(e)}</span></button>`})}</div>`:M}</div></aside>`}function aB(e,t,n,r=null){let i=[],a=new Map;if(typeof n==`string`&&e?.fileHashes){let n=(r??jz(e.fileHashes,`issues`)).get(t)??[];for(let e=0;e<n.length;e++){let t=n[e];i.push(t);let r=parseInt(t.line,10);Number.isFinite(r)&&r>0&&(a.has(r)||a.set(r,[]),a.get(r).push({f:t,idx:e}))}}return{fileFindings:i,lineFindings:a}}function oB(e,t=null,n=M){return A`<header class="bundle-source-bar"><div class="bundle-source-title mono" data-tooltip-truncated data-tooltip="${e}">${e}</div>${t?.files.length>1?VB(t):M} ${qz()} ${n} <button type="button" class="bundle-source-close" data-action="bundle-source-close" aria-label="Close source viewer">×</button></header>`}function sB(e,t,n,r,i,a=null,o=!1,s=!1){return A`<div class="bundle-source-code-wrap">${typeof t==`string`?rB(t,e,n,i,a,o,s):A`<div class="bundle-source-empty">Source content not bundled.</div>`}</div>${iB(r)}`}function cB(){let e=F.bundleSourceFile;if(!e||F.bundleDetailsTab===`code`||F.bundleDetailsTab===`search`)return M;let t=F.bundleDetails,n=t?.sourceError||t?.error,r=!n&&(!t||t.metadataOnly===!0),i=It(t),{fileFindings:a,lineFindings:o}=aB(t,e,i.get(e)),s=F.bundles?.find(e=>e.integrity===t?.integrity)??(t?.npm?{npm:t.npm}:null),c=r||n?null:Yz(t,s,e,i.get(e),a,o);return A`<div class="bundle-source-overlay"><div class="${C({"bundle-source-modal":!0,"with-panel":F.bundleSourceFindingIdx!=null})}">${oB(e,Jk(F.bundleCodeHistory,t?.integrity??null,e),c?.toggle)}<div class="bundle-source-body" aria-busy="${String(r)}">${n?A`<div class="bundles-slide-placeholder is-error" role="status">Failed to load source: ${n}</div>`:r?A`<div class="bundles-slide-placeholder" role="status">Loading source…</div>`:sB(e,c.content,t,c.fileFindings,c.lineFindings,null,!1,c.pretty)}</div></div></div>`}var lB=new Map,uB=null,dB=null,fB=0;function pB(e,t){let n=bB(e??``,t).split(`/`);for(let e=1;e<n.length;e++)lB.set(n.slice(0,e).join(`/`),!0);fB++}function mB(e,t){F.bundleCodeSearchMode=`files`,F.bundleCodeSearchQuery=``,pB(e,t),X(),Qz()}function hB(e){let t=e=>{for(let n of e.dirs.values())lB.set(n.path,!1),t(n)};t(e),fB++,X()}function gB(e){F.bundleCodeTerminal=e,X(),e?OT():document.querySelector(`[data-bundle-code-terminal-toggle]`)?.focus()}function _B(){return A`<bundle-code-terminal-splitter role="separator" tabindex="0" aria-orientation="horizontal" aria-label="Resize terminal" data-tooltip="Drag to resize · double-click to reset"></bundle-code-terminal-splitter><section class="bundle-code-terminal" aria-label="Terminal"><header class="bundle-code-terminal-bar"><span class="bundle-code-rail-label">Terminal</span> <button type="button" class="bundle-code-rail-action" aria-label="Close terminal" @click="${()=>gB(!1)}">×</button></header><div id="bundle-terminal-slot" class="bundle-code-terminal-slot"></div></section>`}function vB(e,t){let n=0,r=null;if(!t||t.size===0)return{count:n,worst:r};let i=e=>{for(let i of e.files.values()){let e=t.get(i);if(!e||e.length===0)continue;n+=e.length;let a=eB(e);(r===null||(ki[a]??0)>(ki[r]??0))&&(r=a)}for(let t of e.dirs.values())i(t)};return i(e),{count:n,worst:r}}function yB(e,t,n=0,r=null,i=!1,a=null,o=null){let s=[...e.dirs.entries()].toSorted(([e,t],[n,r])=>SD(e,t).localeCompare(SD(n,r))||t.path.localeCompare(r.path)),c=[...e.files.entries()].toSorted(([e],[t])=>e.localeCompare(t)),l=e=>{if(!t)return!1;for(let n of e.files.values())if(n===t)return!0;for(let t of e.dirs.values())if(l(t))return!0;return!1},u=(e,t)=>i?!0:lB.has(e)?lB.get(e):n===0||l(t),d=e=>t=>{lB.set(e,!t.currentTarget.parentElement.open)};return A`<ul class="${C({"bundle-code-tree":!0,root:n===0})}" aria-label="${n===0?`Source files`:M}" @keydown="${n===0?TD:M}">${D(s,([,e])=>e.path,([e,s])=>{let c=s.path,l=wD(e,s,n),f=s.package,p=f?.ecosystem===`cargo`||f?.ecosystem===`composer`||f?.ecosystem===`soldeer`,m=Qe(f?.ecosystem),h=f?.variant?`${l.node.sourcePath}
182
- Variant ${f.variant}`:l.node.sourcePath,g=s.packageInfo,_=!!g||!!f?.variant,v=g&&o?e=>{let{bytes:t,loc:n}=gD(o,s.sourcePath);Object.assign(e.dataset,{tooltipLoc:String(n),tooltipSize:Wr(t)})}:void 0,y=vB(s,r);return A`<li class="bundle-code-tree-dir"><details .open="${Ue(u(c,s))}"><summary @click="${d(c)}" .prepareTooltip="${v}" data-tooltip-package="${g?.name??M}" data-tooltip-ecosystem="${g?.ecosystem??M}" data-tooltip-version="${g?.version??M}" data-tooltip-files="${g?.fileCount??M}" data-tooltip-repo="${g?.github?g.github+(g.directory?`/${g.directory}`:``):M}" data-tooltip-commit="${g?.commit??M}" data-tooltip="${_?h:M}" data-tooltip-placement="${_?`right-start`:M}"><span class="bundle-code-tree-chevron" aria-hidden="true"></span> ${f?m:M} <span class="${C({"bundle-code-tree-dirname":!0,"bundle-code-tree-package":!!f,"bundle-code-tree-package-vendored":p})}" data-tooltip-truncated data-tooltip="${_?M:h}">${f?A`<span class="bundle-code-tree-package-name">${f.name}</span>${f.version?A`<span class="bundle-code-tree-package-version">${p?`- `:`@`}${f.version}</span>`:M}`:l.names.map((e,t)=>A`${t>0?A`<span class="bundle-code-tree-separator">/</span>`:M}${e}`)} </span>${f?.variant?A`<span class="bundle-code-tree-variant">variant ${f.variant}</span>`:M} ${y.count>0?A`<span class="${`bundle-code-tree-count sev-${y.worst}`}" data-tooltip="${`${y.count} ${y.count===1?`issue`:`issues`} inside`}">${y.count}</span>`:M}</summary>${yB(l.node,t,n+1,r,i,a,o)}</details></li>`})} ${D(c,([,e])=>e,([e,n])=>{let i=r?.get(n),o=i&&i.length>0?eB(i):null,s=i?.length??0;return A`<li class="bundle-code-tree-file"><button type="button" class="${C({"bundle-code-tree-link":!0,current:n===t})}" data-bundle-view-source="${n}" aria-current="${n===t?`true`:M}">${qe(n,a?.get(n))}<span class="bundle-code-tree-name" data-tooltip-truncated data-tooltip="${n}">${e}</span> ${s>0?A`<span class="${`bundle-code-tree-count sev-${o}`}" data-tooltip="${`${s} ${s===1?`issue`:`issues`}`}">${s}</span>`:M}</button></li>`})}</ul>`}function bB(e,t){return t&&e.startsWith(t)?e.slice(t.length):e}var xB={tree:null,query:``,prefix:``,filtered:null};function SB(e,t,n,r,i=``,a=null,o=null){let s=xB;n&&(s.tree!==e||s.query!==n||s.prefix!==i)&&(xB={tree:e,query:n,prefix:i,filtered:CD(e,n,i)});let c=n?xB.filtered:e;return FT([c,t,CB(r),a,o,fB],()=>c?yB(c,t,0,r,!!n,a,o):A`<div class="bundle-code-search-empty">No files match.</div>`)}function CB(e){return[...e].map(([e,t])=>`${e}\0${t.length}\0${eB(t)}`).join(`
183
- `)}var wB=new WeakMap;function TB(e,t){let n=wB.get(t);return n||(n=Yr([...t.keys()].toSorted(),Wt(e)),wB.set(t,n)),n}var EB=1e3,DB=new WeakMap;function OB(e,t,n,r,i=``){let a=Ut(e),o=DB.get(t);o||(o=[...t.keys()].filter(e=>a.get(e)!=null).toSorted((e,t)=>a.get(t)-a.get(e)||e.localeCompare(t)),DB.set(t,o));let s=n.toLowerCase(),c=s?o.filter(e=>bB(e,i).toLowerCase().includes(s)):o;if(c.length===0)return A`<div class="bundle-code-search-empty">No files match.</div>`;let l=c.length>EB?c.slice(0,EB):c;return A`<div class="bundle-code-search-results"><div class="bundle-code-search-summary">${l.length<c.length?`${l.length.toLocaleString()} largest of ${c.length.toLocaleString()} files`:`${c.length.toLocaleString()} ${c.length===1?`file`:`files`} by size`}</div><ul class="bundle-code-largest">${D(l,e=>e,e=>A`<li><button type="button" class="${C({"bundle-code-largest-file":!0,current:e===r})}" data-bundle-view-source="${e}" aria-current="${e===r?`true`:M}"><span class="bundle-code-largest-path" data-tooltip-truncated data-tooltip="${e}">${bB(e,i)}</span><span class="bundle-code-largest-size">${Wr(a.get(e))}</span></button></li>`)}</ul></div>`}var kB=20,AB=100,jB={sources:null,query:``,hits:null};function MB(e,t,n){let r=mR(e.integrity??``,t,n,!1,!1,TB(e,t));if(r.fileResults.length>AB||!r.truncated||r.totalHits<5e3||r.fileResults.length===AB&&r.fileResults.at(-1).hits.length>=kB){let e=r.fileResults.slice(0,AB).map(({path:e,lines:t,hits:n})=>({path:e,hits:n.slice(0,kB).map(({ln:e,ranges:n})=>({ln:e,text:t[e-1],ranges:n}))}));return{results:e,totalHits:e.reduce((e,{hits:t})=>e+t.length,0)}}if(jB.sources===t&&jB.query===n)return jB.hits;let i=uR(n,!1,!1),a=[],o=0;for(let n of TB(e,t)){let e=t.get(n);if(typeof e!=`string`)continue;let r=[],s=e.split(`
184
- `);for(let e=0;e<s.length;e++){let t=i.ranges(s[e]);if(t.length!==0&&(r.push({ln:e+1,text:s[e],ranges:t}),o++,r.length>=kB))break}if(r.length>0&&a.push({path:n,hits:r}),a.length>=AB)break}return jB={sources:t,query:n,hits:{results:a,totalHits:o}},jB.hits}function NB(e,t,n,r,i=``){if(!n)return A`<div class="bundle-code-search-hint">Type to search across every source in this bundle.</div>`;let{results:a,totalHits:o}=MB(e,t,n);return a.length===0?A`<div class="bundle-code-search-empty">No matches.</div>`:A`<div class="bundle-code-search-results"><div class="bundle-code-search-summary">${o} ${o===1?`hit`:`hits`} in ${a.length} ${a.length===1?`file`:`files`}</div>${a.map(({path:e,hits:t})=>{let n=bB(e,i);return A`<div class="${C({"bundle-code-search-file":!0,current:e===r})}"><button type="button" class="bundle-code-search-file-name" data-bundle-view-source="${e}" data-tooltip-truncated data-tooltip="${e}">${n}</button><ul class="bundle-code-search-hits">${t.map(t=>A`<li class="bundle-code-search-hit"><button type="button" class="bundle-code-search-hit-link" data-bundle-view-source="${e}" data-bundle-view-line="${t.ln}" data-bundle-view-scroll-block="start"><span class="bundle-code-search-hit-ln">${t.ln}</span> <span class="bundle-code-search-hit-text mono">${yR(t.text,t.ranges)}</span></button></li>`)}</ul></div>`})}</div>`}function PB(e,t,n,r=``){if(!e.fileHashes)return A`<div class="bundle-code-search-empty">Computing file hashes…</div>`;let i=jz(e.fileHashes,`issues`);if(i.size===0)return A`<div class="bundle-code-search-empty">No issues match this bundle's files.</div>`;let a=t.toLowerCase(),o=[];for(let[e,t]of i)for(let n=0;n<t.length;n++){let r=t[n],i=r.description??``;a&&!e.toLowerCase().includes(a)&&!r.severity.includes(a)&&!r.severity.replaceAll(`_`,` `).includes(a)&&!i.toLowerCase().includes(a)||o.push({file:e,finding:r,fileIdx:n})}return o.sort((e,t)=>{let n=ki[e.finding.severity]??0,r=ki[t.finding.severity]??0;return r===n?e.file.localeCompare(t.file):r-n}),o.length===0?A`<div class="bundle-code-search-empty">No matches.</div>`:A`<div class="bundle-code-search-results"><div class="bundle-code-search-summary">${o.length} ${o.length===1?`issue`:`issues`}</div><ul class="bundle-code-search-issues">${o.map(({file:e,finding:t,fileIdx:i})=>{let a=t.severity,o=bB(e,r),s=e===n&&F.bundleSourceFindingIdx===i;return A`<li class="${C({"bundle-code-search-issue":!0,current:s})}"><button type="button" class="bundle-code-search-issue-link" data-bundle-view-source="${e}" data-bundle-view-finding-idx="${i}" data-bundle-view-line="${t.line??``}"><div class="bundle-code-search-issue-row"><span class="${`bundle-code-search-issue-sev sev-${a}`}">${a.replaceAll(`_`,` `)}</span> <span class="bundle-code-search-issue-path mono" data-tooltip-truncated data-tooltip="${e}">${o}${t.line?`:${t.line}`:``}</span></div><div class="bundle-code-search-issue-desc">${Tw(Hi(t),{paragraphs:!1})}</div></button></li>`})}</ul></div>`}var FB=new WeakMap;function IB(e,t){if(e.kind!==`stasis`)return t;if(FB.has(t))return FB.get(t);let n=Wt(e),r=new Map([...t].filter(([e])=>!/(?:^|\/)node_modules(?:\/|$)/u.test(e)&&!/(?:^|\/)(?:node_modules|dependencies|vendor)(?:\/|$)/u.test(n?.get(e)??e))),i=r.size>0?r:t;return FB.set(t,i),i}var LB=new WeakMap;function RB(e,t,n){let r=LB.get(t);if(!r){let i=e.kind===`stasis`?e.bundle.modules:null,a=bD(Pn(n).prefix,i,n);r={prefix:a,tree:yD(n.map(e=>bB(e,a)),n,i)},LB.set(t,r)}return r}function zB(e,t,n){let r=null,i=-1,a=0;for(let[e,o]of n){if(typeof t.get(e)!=`string`)continue;let n=ki[eB(o)]??0;(n>i||n===i&&o.length>a||n===i&&o.length===a&&(r===null||e.localeCompare(r)<0))&&(r=e,i=n,a=o.length)}if(r)return r;if(e.kind===`stasis`&&e.bundle){for(let n of e.bundle.entries)if(typeof t.get(n)==`string`)return n}for(let n of e.npmEntries??[])if(typeof t.get(n)==`string`)return n;let o=null,s=-1;for(let[e,n]of t)typeof n==`string`&&n.length>s&&(o=e,s=n.length);return o}function BB(e,t=null){let n=It(e);if(n.size===0)return A`<div class="bundle-code-empty">This bundle doesn't carry any source content.</div>`;uB!==F.selectedBundle&&(lB.clear(),fB++,uB=F.selectedBundle,dB=null);let r=Rt(n).paths,{prefix:i,tree:a}=RB(e,n,r),o=e.fileHashes?jz(e.fileHashes,`issues`):new Map,s=IB(e,n),c=()=>e.kind===`stasis`?new Map([...o].filter(([e])=>s.has(e))):o,l=F.bundleSourceFile,u=F.bundleCodeFileRequest;if(u?.bundle===F.selectedBundle){F.bundleCodeFileRequest=null;let t=u.path==null?r[u.file-1]:n.has(u.path)?u.path:null;if(t){l=t,F.bundleSourceFile=t,Qz();let r=u.endLine??u.line;F.bundleSourceTargetLine=u.line&&r<=Lt(n.get(t))?{bundle:e.integrity,path:t,line:u.line,...r>u.line?{end:r}:{}}:null,F.bundleSourceTargetLine&&$z(u.line)}}if(Zz&&(Zz.bundle!==F.selectedBundle||l&&l!==Zz.path)&&(Zz=null),l){if(Zz&&!Zz.hadIssues&&o.size>0&&c().size>0){Zz.hadIssues=!0;let t=zB(e,s,c());t&&t!==l&&(l=t,F.bundleSourceFile=t,F.bundleSourceFindingIdx=null,Zz.path=t,Qz())}}else{let t=c();l=zB(e,s,t),l&&(F.bundleSourceFile=l,Zz={bundle:F.selectedBundle,path:l,hadIssues:t.size>0},Qz())}l!==dB&&(pB(l,i),dB=l),l&&t?.managedId&&I()?G?.replaceCodeRoute(Ix(F.managedTeams,t,F.currentManagedTeam,`code`,Lx(F))):l&&t?.npm&&I()?G?.replaceCodeRoute(hj(t,`code`,Lx(F))):l&&t?.repository&&I()&&G?.replaceCodeRoute(WM(t,`code`,Lx(F)));let d=l?n.get(l):null,{fileFindings:f,lineFindings:p}=aB(e,l,d,o),m=o.size>0?[`files`,`code`,`issues`,`largest`]:[`files`,`code`,`largest`],h=m.includes(F.bundleCodeSearchMode)?F.bundleCodeSearchMode:`files`,g=F.bundleCodeSearchQuery;return A`<div class="bundle-code-view"><aside class="bundle-code-rail"><div class="bundle-code-rail-head"><span class="bundle-code-rail-label">Files</span> <span class="bundle-code-rail-count">${r.length}</span> <span class="bundle-code-rail-actions"><button type="button" class="bundle-code-rail-action" aria-label="Terminal" data-tooltip="Terminal" data-bundle-code-terminal-toggle aria-pressed="${F.bundleCodeTerminal?`true`:`false`}" @click="${()=>gB(!F.bundleCodeTerminal)}">${pw}</button> <button type="button" class="bundle-code-rail-action" aria-label="Reveal current file" data-tooltip="Reveal current file" ?disabled="${!l}" @click="${()=>mB(l,i)}"><svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.3" aria-hidden="true"><circle cx="8" cy="8" r="4.5"/><circle cx="8" cy="8" r="1.5"/><path d="M8 0v3m0 10v3M0 8h3m10 0h3"/></svg></button> <button type="button" class="bundle-code-rail-action" aria-label="Collapse directories" data-tooltip="Collapse directories" ?disabled="${h!==`files`||!!g||a.dirs.size===0}" @click="${()=>hB(a)}">${fw}</button></span></div>${i?A`<div class="bundle-code-rail-prefix mono" data-tooltip-truncated data-tooltip="${i}">${i}</div>`:M}<bundle-code-search .modes="${m}"></bundle-code-search><div class="bundle-code-rail-body">${NT(h,[[`files`,()=>SB(a,l,g,o,i,e.kind===`stasis`?e.bundle.formats:null,n)],[`code`,()=>NB(e,n,g,l,i)],[`issues`,()=>PB(e,g,l,i)],[`largest`,()=>OB(e,n,g,l,i)]])}</div></aside><bundle-code-splitter role="separator" tabindex="0" aria-orientation="vertical" aria-label="Resize file tree" data-tooltip="Drag to resize · double-click to reset"></bundle-code-splitter><div class="${C({"bundle-code-main":!0,"with-panel":F.bundleSourceFindingIdx!=null})}">${l?WB(e,l,d,f,p,t):A`<div class="bundle-code-placeholder">Pick a file from the tree to view its source.</div>`} ${F.bundleCodeTerminal?_B():M}</div></div>`}function VB(e){return A`<span class="bundle-code-file-nav"><button type="button" class="focus-code-nav-btn" data-bundle-code-history="back" aria-label="Back to the previously shown file" ?disabled="${e.at===0}">${lw}</button> <button type="button" class="focus-code-nav-btn" data-bundle-code-history="forward" aria-label="Forward to the next shown file" ?disabled="${e.at>=e.files.length-1}">${uw}</button></span>`}var HB=[];function UB(e){let t=HB.find(t=>t.text===e);if(t)return t.stats;let n=Lt(e),r=`${n.toLocaleString()} ${n===1?`line`:`lines`} \xB7 ${Wr(ha(e))}`;return HB.unshift({text:e,stats:r}),HB.length=Math.min(HB.length,2),r}function WB(e,t,n,r,i,a=null){let o=Jk(F.bundleCodeHistory,e.integrity,t),s=Yz(e,a,t,n,r,i),{pretty:c,toggle:l,fileFindings:u,lineFindings:d}=s,f=typeof n==`string`&&Zk(t)!==null,p=f?eA(e,t,n,It(e),()=>{F.bundleSourceFile===t&&X()}):null,m=p?.status===`ready`,h=m?n:s.content,g=u.map((e,t)=>({idx:t,line:parseInt(e.line,10)||0})).toSorted((e,t)=>e.line-t.line||e.idx-t.idx),_=kD(e,t,a?.managedId&&a.repoId!=null?{github:a.repoFullName,directory:a.repoDirectory}:null);return A`<header class="bundle-code-main-bar">${VB(o)} ${qe(t,Ge(e,t))} <span class="bundle-code-main-path mono" data-tooltip-truncated data-tooltip="${t}">${t}</span> <button type="button" class="bundle-code-copy-path" data-copy-path="${t}" aria-label="Copy file path">${cw}</button> ${_?AD(_,a?.commitInfo):M} <span class="bundle-code-main-spacer"></span> ${u.length>0&&!m?A`<span class="bundle-code-main-issues" data-bundle-code-issue-order="${JSON.stringify(g)}"><span class="${`bundle-code-tree-count sev-${eB(u)}`}" data-tooltip="${`${u.length} ${u.length===1?`issue`:`issues`} in this file`}">${u.length}</span> <button type="button" class="bundle-code-issue-step" data-bundle-code-issue-step="-1" aria-label="Previous issue">‹</button> <button type="button" class="bundle-code-issue-step" data-bundle-code-issue-step="1" aria-label="Next issue">›</button></span>`:M} ${m?M:qz()} ${m?M:l} ${f?Xz(p):M} ${typeof h==`string`?A`<span class="bundle-code-main-stats">${l===M?M:A`<span class="bundle-code-main-stats-room" aria-hidden="true">${UB(n)}</span>`}<span>${UB(h)}</span></span>`:M}</header><div class="bundle-code-main-body">${m?A`<lockfile-graph .lockfile="${p.lockfile}"></lockfile-graph>`:sB(t,h,e,u,d,null,!c&&!!(a?.managedId||a?.npm)&&I()&&!Ke(),c)}</div>`}var GB=400;function KB(e){return e<=5?8:e<=15?6:e<=40?4:e<=120?3:2}function qB(e,t,n){let r=[];for(let i of e){let e=Math.max(1,i.ln-n),a=Math.min(t,i.ln+n),o=r.at(-1);o&&e<=o.end+1?o.end=Math.max(o.end,a):r.push({start:e,end:a})}return r}function JB(e,t,n){if(e.length<=n)return{text:e,ranges:t,clipped:!1};let r=t.length>0?t[0][0]:0;return bR(e,t,r>n-60?Math.max(0,r-60):0,n)}function YB(e,t,n){let r=JB(e,n??[],GB);return A`<div class="${C({"bundle-search-line":!0,"is-match":n!=null})}"><span class="bundle-search-lineno">${t}</span> <span class="bundle-search-code">${r.clipped?A`<span class="bundle-search-clip">…</span>`:M}${xR(r.text,r.ranges)}</span></div>`}function XB(e,t,n,r,i){let{start:a,end:o}=n,s=a;for(let e=a;e<=o;e++)if(r.has(e)){s=e;break}let c=String(o).length,l=[];for(let e=a;e<=o;e++)l.push(YB(t[e-1]??``,e,r.get(e)??null));return A`${i?A`<div class="bundle-search-gap" aria-hidden="true"></div>`:M} <button type="button" class="bundle-search-snippet" style="${E({"--bundle-search-lineno-w":`${c}ch`})}" data-bundle-view-source="${e}" data-bundle-view-line="${s}" data-bundle-view-scroll-block="center">${l}</button>`}function ZB(e,t,n){let{path:r,lines:i,hits:a}=e,o=bB(r,t),s=qB(a,i.length,n),c=new Map(a.map(e=>[e.ln,e.ranges])),l=a[0].ln,u=r===F.bundleSourceFile;return A`<section class="${C({"bundle-search-file":!0,current:u})}"><header class="bundle-search-file-head"><button type="button" class="bundle-search-file-name mono" data-bundle-view-source="${r}" data-bundle-view-line="${l}" data-bundle-view-scroll-block="center" data-tooltip-truncated data-tooltip="${r}">${o}</button> <span class="bundle-search-file-count">${a.length} ${a.length===1?`match`:`matches`}</span></header><div class="bundle-search-snippets">${s.map((e,t)=>XB(r,i,e,c,t>0))}</div></section>`}function QB(e,t,n,r,i,a){if(!n)return A`<div class="bundle-search-results"><div class="bundle-search-hint">Search across every ${e.npm?`file of this version`:e.repository?`file of this directory`:`source in this bundle`}. Each match shows the surrounding lines for context — fewer matches get more context. Toggle <span class="bundle-search-hint-kbd">Aa</span> for case-sensitive and <span class="bundle-search-hint-kbd">.*</span> for regular-expression matching.</div></div>`;let o=mR(e.integrity??``,t,n,r,i,TB(e,t));if(o.error)return A`<div class="bundle-search-results"><div class="bundle-search-error"><span class="bundle-search-error-label">Invalid regular expression</span> <span class="bundle-search-error-msg mono">${o.error}</span></div></div>`;let{fileResults:s,totalHits:c,truncated:l}=o,u=eV(t);if(s.length===0)return A`<div class="bundle-search-results"><div class="bundle-search-empty">No matches.</div></div>`;let d=a?KB(c):0,f=s.length;return A`<div class="bundle-search-results"><div class="bundle-search-summary"><span>${c}${l?`+`:``} ${c===1?`match`:`matches`} in ${f}${l?`+`:``} ${f===1?`file`:`files`}</span> ${u?A`<span class="bundle-search-summary-prefix mono" data-tooltip-truncated data-tooltip="${u}">${u}</span>`:M} ${l?A`<span class="bundle-search-summary-more">results capped — refine to narrow</span>`:M}</div>${D(s,e=>e.path,e=>ZB(e,u,d))}</div>`}var $B=new WeakMap;function eV(e){return $B.has(e)||$B.set(e,Pn([...e.keys()].toSorted()).prefix),$B.get(e)}var tV={content:null,path:null,query:``,useRegex:!1,caseSensitive:!1,lines:null};function nV(e,t,n,r,i,a){let o=t.get(n);if(!r||typeof o!=`string`)return null;let s=tV;if(s.content===o&&s.path===n&&s.query===r&&s.useRegex===i&&s.caseSensitive===a)return s.lines;let c=mR(e.integrity??``,t,r,i,a,TB(e,t));if(c.error)return null;let l;if(c.truncated){let e=uR(r,i,a);l=new Set;let t=o.split(`
185
- `);for(let n=0;n<t.length;n++)e.ranges(t[n]).length>0&&l.add(n+1)}else l=new Set(c.fileResults.find(e=>e.path===n)?.hits.map(({ln:e})=>e));return tV={content:o,path:n,query:r,useRegex:i,caseSensitive:a,lines:l},l}function rV(e,t,n,r){let i=F.bundleSourceFile;if(!i)return M;let a=t.get(i),{fileFindings:o,lineFindings:s}=aB(e,i,a),c=Yz(e,r,i,a,o,s);return A`<aside class="bundle-search-side">${oB(i,null,c.toggle)}<div class="bundle-source-body">${sB(i,c.content,e,c.fileFindings,c.lineFindings,c.pretty?null:n,!1,c.pretty)}</div></aside>`}function iV(e,t=null){let n=It(e);if(n.size===0)return A`<div class="bundle-search-view"><div class="bundle-code-empty">${e.npm?`This version has no text files to search.`:e.repository?`This directory has no text files to search.`:`This bundle doesn't carry any source content.`}</div></div>`;let r=F.bundleSearchQuery,i=F.bundleSearchRegex,a=F.bundleSearchCase,o=null;if(F.bundleSourceFile){let t=nV(e,n,F.bundleSourceFile,r,i,a);t&&t.size===0?(F.bundleSourceFile=null,F.bundleSourceFindingIdx=null):o=t}let s=F.bundleSearchContext;return A`<div class="bundle-search-view"><div class="bundle-search-bar-row"><bundle-search></bundle-search><mode-switch data-bundle-search-context label="Context" .checked="${s}" accessible-label="Toggle context lines"></mode-switch></div><div class="bundle-search-main">${QB(e,n,r,i,a,s)} ${rV(e,n,o,t)}</div></div>`}var aV=(e,t,n,r=!1,i=null)=>i?A`<button type="button" class="${C({"bundles-tab":!0,active:n===e})}" aria-selected="${String(n===e)}" role="tab" @click="${()=>{e!==n&&i(e)}}">${t}</button>`:A`<button type="button" class="${C({"bundles-tab":!0,active:n===e})}" data-bundle-tab="${e}" aria-selected="${String(n===e)}" role="tab" ?disabled="${r}">${t}</button>`,oV=()=>[[`treemap`,`Treemap`],[`code`,`Code`],[`search`,`Search`],[`compare`,`Compare`],...F.managedSession&&!F.managedSession.publicShare&&(F.managedSession.dependencyReview===!0||F.managedTeams?.some(e=>e.dependencyReview===!0))?[[`review`,`Review`]]:[],[`overview`,`Overview`]],sV=e=>[[`treemap`,`Treemap`],[`code`,`Code`],[`search`,`Search`],[`compare`,`Compare`],[CM(e),`Activity`]];function cV(e,t){return gN(()=>t===`commits`?A`<repository-history .repository="${e}" .repo="${LM(e)}" .refs="${IM(e.repoId)}"></repository-history>`:t===`agents`?A`<repository-agents .repository="${e}" .repo="${LM(e)}"></repository-agents>`:t===`pulse`?A`<repository-pulse .repository="${e}" .repo="${LM(e)}"></repository-pulse>`:t===`replay`?A`<repository-replay .repository="${e}" .repo="${LM(e)}"></repository-replay>`:A`<repository-issues .repository="${e}" .repo="${LM(e)}" .kind="${t}"></repository-issues>`)}function lV(e,t,n,r,{overview:i=!1,opening:a=!1,onTab:o=null}={}){let{npm:s}=e,c=e.repository&&!a?ZM(e):null,l=c??e.repository,u=!!c||a&&!!l&&!F.repositoryCodeOpening?.error,d=o?e=>{let n=e.target.closest?.(`[data-bundle-tab]`)?.dataset.bundleTab;n&&(e.stopPropagation(),n!==t&&o(n))}:M;return A`<div class="bundles-view bundles-slide-view"><bundle-slide-header class="bundles-slide-header"><header class="bundles-slide-bar">${I()&&e.managedId&&e.repoId==null?A`<span class="bundles-slide-breadcrumb"><button type="button" @click="${()=>document.dispatchEvent(new CustomEvent(`managed-admin-navigate`,{detail:{view:`manage-bundles`},bubbles:!0,composed:!0}))}">Bundles</button> <span aria-hidden="true">></span></span>`:M} ${s?A`<span class="bundles-slide-breadcrumb"><button type="button" @click="${()=>Bj()}">npm</button> <span aria-hidden="true">></span></span>`:M} <span class="bundles-slide-icon" aria-hidden="true">${k(s?Xi:l?ra:Yi)}</span><div class="${C({"bundles-slide-title":!0,"bundles-slide-repository":!!l})}">${s?A`<div class="bundles-slide-name" data-tooltip-truncated data-tooltip="${s.name}">${s.name}</div><npm-version-select .name="${s.name}" .version="${s.version}" .tab="${t}" .list="${a?null:kj(s.name)}"></npm-version-select>`:l?A`<repository-code-source .repository="${l}" .tab="${t}" .repos="${FM()}" .refs="${IM(l.repoId)}"></repository-code-source>`:A`<div class="bundles-slide-name" data-tooltip-truncated data-tooltip="${e.name}">${e.name}</div>`}</div><button type="button" class="bundles-download-btn bundles-scan-button" ?hidden="${!YL(e)}" @click="${()=>{XL(e)}}">${k(ta)}<span>Scan</span></button><div class="bundles-slide-tabs" role="tablist">${n.map(([e,n])=>aV(e,n,t,a||!!c,o))}</div>${u?A`<span class="bundles-slide-progress" role="progressbar" aria-label="${`Opening ${l.repo?DM(l):`the repository`}`}"></span>`:M}</header></bundle-slide-header><div class="${C({"bundles-slide-body":!0,"bundles-slide-body-overview":i,"is-pending":!!c})}" ?inert="${!!c}" aria-busy="${c?`true`:M}" @click="${d}">${r}</div></div>`}function uV({name:e,spec:t,tab:n}){return lV({npm:{name:e,version:t??`latest`}},n,oV(),A`<div class="bundles-slide-placeholder" role="status">Opening ${dj(e,t)}…</div>`,{opening:!0})}function dV(e){let{repoId:t,commit:n,path:r,tab:i,repo:a,revision:o,error:s,code:c,historyOnly:l=!1}=e,u=a?DM({repo:a,path:r}):r||`the repository`,d=n?` at ${n.slice(0,7)}`:``,f={repoId:t,repo:a,commit:n,path:r,revision:o},p=!!(n&&(l||s));return lV({repository:f},i,sV(i),p&&li.has(i)?cV(f,i):i===`treemap`&&n&&(!s||c===`directory-too-large`)?A`<repository-treemap .repository="${f}"></repository-treemap>`:s?A`<div class="bundles-slide-placeholder is-error repository-code-failed"><p role="alert">Couldn't open ${u}${d}: ${s}</p>${sN(e)}</div>`:A`<div class="bundles-slide-placeholder" role="status">Opening ${u}${d}…</div>`,{opening:!l,onTab:p?t=>tN(e,t):null})}function fV(e){let t=!!e.npm;t&&!si.has(F.bundleDetailsTab)&&(F.bundleDetailsTab=`overview`);let n=!!e.repository;n&&!ci.has(F.bundleDetailsTab)&&(F.bundleDetailsTab=`code`);let r=!t&&!n&&rz(e,F.bundleDetails,F.bundleDetailsTab===`advisories`);F.bundleDetailsTab===`advisories`&&!r&&(F.bundleDetailsTab=`overview`);let i=t||F.bundleDetailsTab===`compare`||Nx(F.bundles??[],F.selectedBundle).length>0,a=!I();F.bundleDetailsTab===`issues`&&!a&&!n&&(F.bundleDetailsTab=`overview`);let o=F.bundleDetailsTab,s=o===`overview`,c=F.bundleDetails,l=!!(c&&c.integrity===e.integrity),u=l&&!c.error&&!!(c.json||c.bundle)&&!(c.metadataOnly&&qt(o));return o===`advisories`&&r&&u&&c.kind===`stasis`&&fz(c,X).catch(()=>{}),lV(e,o,t?oV():n?sV(F.bundleDetailsTab):[...r?[[`advisories`,`Advisories`]]:[],...a?[[`issues`,`Issues`]]:[],[`terminal`,`Terminal`],[`treemap`,`Treemap`],[`graph`,`Graph`],[`code`,`Code`],[`search`,`Search`],...i?[[`compare`,`Compare`]]:[],[`overview`,`Overview`]],s?MV(e,c):u?NT(o,[[`terminal`,()=>A`<div id="bundle-terminal-slot" class="bundle-terminal-slot"></div>`],[`graph`,()=>A`<div id="bundle-graph-slot" class="bundle-graph-slot"></div>`],[`treemap`,()=>A`<bundle-treemap .details="${c}"></bundle-treemap>`],[`code`,()=>BB(c,e)],[`search`,()=>iV(c,e)],[`commits`,()=>cV(e.repository,`commits`)],[`pulls`,()=>cV(e.repository,`pulls`)],[`agents`,()=>cV(e.repository,`agents`)],[`pulse`,()=>cV(e.repository,`pulse`)],[`replay`,()=>cV(e.repository,`replay`)],[`review`,()=>QL(()=>A`<npm-review .entry="${e}" .details="${c}" .request="${F.npmReview}" .session="${F.managedSession}" .source="${aI(e)}"></npm-review>`)],[`compare`,()=>QL(()=>A`<bundle-compare .details="${c}" .integrity="${e.integrity}" .request="${F.bundleCompare}" .source="${t?aI(e):n?dI(e):null}"></bundle-compare>`)],[`issues`,()=>n?cV(e.repository,`issues`):gV(c)],[`advisories`,()=>yz(c,X,YL(e)?()=>{XL(e,{mode:`dependencies`})}:null)]]):l&&c.sourceError?A`<div class="bundles-slide-placeholder is-error">${c.sourceError} <button type="button" data-bundle-retry-sources>Retry</button></div>`:l&&!c.metadataOnly?A`<div class="${C({"bundles-slide-placeholder":!0,"is-error":!!c.error})}">${c.error?`Failed to parse: ${c.error}`:`Bundle contents not parsed.`}</div>`:A`<div class="bundles-slide-placeholder">Loading bundle…</div>`,{overview:s})}function pV(e,t={}){if(!e)return M;let n=[];if(e.fileHash&&(n=Af(e.fileHash,e)),n.length===0&&t.bucketKey&&(t.kind===`package`?n=jf(t.bucketKey,e):t.kind===`repository`&&(n=Mf(t.bucketKey,e))),n.length===0)return M;let r=n.slice(0,2),i=n.length-r.length;return A`<div class="bundle-issue-reports">${r.map(e=>{let t=st[Jx(e)]??st.default;return A`<button type="button" class="report-chip" data-bundle-issue-report="${e}">${k(t)}<span class="report-chip-label" data-tooltip-truncated data-tooltip="${e}">${x(e)}</span></button>`})} ${i>0?A`<span class="bundle-issue-reports-more">, and ${i} more…</span>`:M}</div>`}function mV(e){if(e==null||e===``)return``;let t=String(e),n=t.indexOf(`-`);if(n>0){let e=parseInt(t.slice(0,n),10),r=parseInt(t.slice(n+1),10);return Number.isFinite(e)&&Number.isFinite(r)&&r>e?`Lines ${e}-${r}`:Number.isFinite(e)?`Line ${e}`:``}let r=parseInt(t,10);return Number.isFinite(r)?`Line ${r}`:``}function hV(e,t){return A`<div class="bundle-issues-empty"><p class="bundle-issues-empty-primary">${e}</p>${t?A`<p class="bundle-issues-empty-hint">${t}</p>`:M}</div>`}function gV(e){if(e.managedId)return hV(`Open a report to review its findings.`,`Bundle metadata includes source hashes; reports are available through your teams.`);if(!e.fileHashes)return hV(`Computing file hashes…`,`Hashing this bundle's sources so findings from your reports can be matched against them.`);if(e.fileHashes.size===0)return hV(`This bundle doesn't carry any source content.`,`Issues are matched by source-file hash, so a bundle without inline sources has nothing to match findings against.`);let t=jz(e.fileHashes,`issues`);if(t.size===0){let t=Ez();if(t===0)return hV(`No issues match this bundle's files.`,`Issues are analyzer findings matched to this bundle by source-file hash. No hash-carrying findings are indexed yet — hash matching needs the analyzer's native JSON reports; drop one and any matches will appear here automatically.`);let n=0;for(let t of e.fileHashes.values())n+=Tz(t).length;return n>0?hV(`All matching issues are dismissed.`,`${n} ${n===1?`finding matches`:`findings match`} this bundle's files, but every one is triaged invalid or deleted.`):hV(`No issues match this bundle's files.`,`None of the ${t.toLocaleString()} indexed ${t===1?`finding`:`findings`} reference a source file in this bundle \u2014 matching compares exact file hashes, so findings from a different build of the same project won't line up.`)}return _V(t,{kind:`bundle`})}function _V(e,{kind:t,bucketKey:n}={}){let r=[...e.keys()],{prefix:i,stripped:a}=Pn(r),c=new Map(r.map((e,t)=>[e,a[t]])),l=[...e.entries()].toSorted(([e,t],[n,r])=>{let i=ki[eB(t)]??0,a=ki[eB(r)]??0;return a===i?(c.get(e)??e).localeCompare(c.get(n)??n):a-i}),u=[...e.values()].reduce((e,t)=>e+t.length,0);return A`<div class="bundle-issues"><div class="bundle-issues-summary">${u} ${u===1?`issue`:`issues`} across ${e.size} ${e.size===1?`file`:`files`} ${i?A`<span class="mono">${i}</span>`:M}</div><ul class="bundle-issues-list">${D(l,([e])=>e,([e,r])=>{let i=c.get(e)??e,a=[...r].toSorted((e,t)=>{let n=ki[e.severity]??0,r=ki[t.severity]??0;return r===n?(parseInt(e.line,10)||0)-(parseInt(t.line,10)||0):r-n}),l=t===`repository`&&n?`${/^https?:/iu.test(n)?n.replace(/\/$/u,``):`https://github.com/${n}`}/blob/HEAD/${e}`:null;return A`<li class="bundle-issues-file-group"><header class="bundle-issues-file-header">${t===`bundle`?A`<button type="button" class="bundle-issues-file-name mono" data-bundle-view-source="${e}" data-tooltip-truncated data-tooltip="${e}">${i}</button>`:l?A`<a class="bundle-issues-file-name bundle-issues-file-name-link mono" href="${l}" target="_blank" rel="noopener" data-tooltip-truncated data-tooltip="${e}">${i}</a>`:A`<span class="bundle-issues-file-name bundle-issues-file-name-static mono" data-tooltip-truncated data-tooltip="${e}">${i}</span>`} <span class="bundle-issues-file-count">${r.length} ${r.length===1?`issue`:`issues`}</span></header><ul class="bundle-issues-findings">${D(a,t=>JSON.stringify([t.id??`${e}\0${t.line??``}\0${t.severity??``}\0${t.description??``}`,o(t)]),i=>{let a=r.indexOf(i),o=i.severity,c=mV(i.line),l=s(i,F.triage.get(T(i))),u=l===`fixed`||l===`invalid`||l===`deleted`?l.toUpperCase():l===`inprogress`?`In progress`:l===`ignored`?`Ignored`:null,d=A`<div class="bundle-issues-finding-head"><span class="${`bundle-issue-sev sev-${o}`}">${o.replaceAll(`_`,` `)}</span> ${c?A`<span class="bundle-issues-finding-line">${c}</span>`:M} ${u?A`<span class="${`bundle-issues-finding-triage triage-${l}`}">${u}</span>`:M} <span class="bundle-issues-finding-spacer"></span> ${pV(i,{kind:t,bucketKey:n})}</div><div class="bundle-issues-finding-desc">${Tw(Hi(i),{paragraphs:!1})}</div>`;return A`<li class="bundle-issues-finding">${t===`bundle`?A`<button type="button" class="bundle-issues-finding-link" data-bundle-view-source="${e}" data-bundle-view-finding-idx="${a}" data-bundle-view-line="${i.line??``}">${d}</button>`:A`<div class="bundle-issues-finding-link bundle-issues-finding-static">${d}</div>`}</li>`})}</ul></li>`})}</ul></div>`}function vV(e){let t=F.selectedBundle,n=t?e.find(e=>e.integrity===t):null;return n?fV(n):A`<div class="bundles-view bundles-view-empty"><p class="bundles-empty-hint">Pick a bundle from the sidebar to open it.</p></div>`}var yV=A`<svg viewBox="0 0 16 16" width="12" height="12" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M8 2v8"/><path d="m4.5 7 3.5 3.5L11.5 7"/><path d="M2.5 13h11"/></svg>`,bV=A`<svg viewBox="0 0 24 24" width="12" height="12" fill="currentColor" aria-hidden="true"><path d="M0 0v24H8.222l2.089-2.373 2.09-2.374V13.2H18.978l2.51-2.488L24 8.223V0H12zm5.2 5.2h13.791L12.2 12c-3.735 3.74-6.838 6.8-6.896 6.8-.057 0-.104-3.06-.104-6.8zm8.4 8.8v10H24V14h-5.2z"/></svg>`,xV=Object.freeze({javascript:`#f1e05a`,jsx:`#f1e05a`,typescript:`#3178c6`,tsx:`#3178c6`,json:`#f1e05a`,css:`#663399`,markup:`#e34c26`,yaml:`#cb171e`,bash:`#89e051`,markdown:`#083fa1`,solidity:`#AA6746`,php:`#4F5D95`,rust:`#dea584`,ruby:`#701516`,java:`#b07219`,cpp:`#f34b7d`,c:`#555555`,objectivec:`#438eff`,python:`#3572A5`,go:`#00ADD8`,kotlin:`#A97BFF`,swift:`#F05138`,dart:`#00B4AB`,sql:`#e38c00`,lua:`#000080`,csharp:`#178600`,scala:`#DC322F`,vue:`#41B883`,svelte:`#FF3E00`}),SV=Object.freeze([`#8b5cf6`,`#ec4899`,`#14b8a6`,`#f97316`,`#06b6d4`,`#84cc16`,`#e11d48`,`#a855f7`]);function CV(e){if(xV[e])return xV[e];let t=0;for(let n of e)t=Math.imul(t,31)+n.codePointAt(0)|0;return SV[(t>>>0)%SV.length]}function wV(e){let t=e.currentTarget,n=e.target.closest?.(`.bundles-languages-segment`);!n||!t.contains(n)||(t.dataset.tooltip=n.dataset.languageTooltip??``,ir(t))}function TV(e){delete e.currentTarget.dataset.tooltip,or()}var EV=e=>e.codeStats??=Kt(e.npm?new Map([...Xt(e)].filter(([e])=>!HA.test(e.slice(e.lastIndexOf(`/`)+1)))):Xt(e),Vt(e));function DV(e,{legend:t=!1}={}){if(!(e?.kind===`stasis`&&e.bundle)&&!(e?.npm&&e.json))return M;let n=EV(e),r=n.lines,i=n.languages.filter(e=>e.lines>0);if(r<=0||i.length===0)return M;let a=e=>{let t=e/r*100;return t<.1?`<0.1`:t<1?t.toFixed(1):t.toFixed(0)},o=t?A`<ul class="bundles-languages-legend">${i.slice(0,4).map(({key:e,label:t,lines:n})=>A`<li><span class="bundles-languages-swatch" style="${E({background:CV(e)})}"></span>${t}<span class="bundles-languages-share">${a(n)}%</span></li>`)}</ul>`:M;return A`<div class="bundles-languages-bar" data-tooltip-managed aria-label="Languages in this bundle" @pointerover="${wV}" @pointerleave="${TV}">${i.map(({key:e,label:t,lines:n})=>A`<span class="bundles-languages-segment" style="${E({flexGrow:n,background:CV(e)})}" data-language-tooltip="${`${t} \xB7 ${a(n)}% \xB7 ${n.toLocaleString()} LoC`}"></span>`)}</div>${o}`}async function OV(e){try{await(await K()).downloadManagedBundle(e.managedId,e.filename??e.name??`bundle`)}catch(e){alert(e.message)}}function kV(e,t){let n=rR(t),r=DV(t);return A`<div class="bundles-overview-exports"><div class="bundles-overview-exports-row">${e.managedId?Ke()?A`<button type="button" class="bundles-download-btn" @click="${()=>{OV(e)}}">${yV}<span>Download bundle</span></button>`:A`<a class="bundles-download-btn" href="${`/api/bundles/${encodeURIComponent(e.managedId)}/download`}">${yV}<span>Download bundle</span></a>`:A`<button type="button" class="bundles-download-btn" data-bundle-download="${e.integrity}">${yV}<span>Download bundle</span></button>`} ${n?A`<div class="bundles-export-pair"><button type="button" class="bundles-download-btn" data-bundle-export-sbom="cyclonedx" data-tooltip="Export a CycloneDX SBOM (.cdx.json)">CycloneDX</button> <button type="button" class="bundles-download-btn" data-bundle-export-sbom="spdx" data-tooltip="Export an SPDX SBOM (.spdx.json)">${bV}<span>SPDX</span></button></div>`:M}</div>${r}</div>`}function AV(e,t,{placeholder:n=M,overviewClass:r=``}={}){return A`<div class="bundles-overview ${r}"><div class="bundles-overview-summary"><div class="bundles-detail-meta-row">${e}${t}</div></div>${n}</div>`}function jV(e){let t=e.filter(e=>typeof e==`number`);return t.length>0?t.reduce((e,t)=>e+t,0):null}function MV(e,t){if(e.npm)return FV(e,t);let n=t?.integrity===e.integrity,r=e.summary?.commit,i=n?!t.error&&t.kind===`stasis`?t.bundle:null:e.managedId&&e.repoFullName&&r?{repo:{github:e.repoFullName,directory:e.repoDirectory??``,commit:r}}:null,a=n?t.size:e.managedId?e.size:null,o=(t=``,n=!1)=>A`<dl class="bundles-detail-meta"><dt>Name</dt><dd>${e.name}</dd>${e.managedId?A`<dt>Repository</dt><dd>${e.repoFullName||`Unattached`}</dd>${e.repoId==null?M:A`<dt>Directory</dt><dd class="mono">/${e.repoDirectory??``}</dd>`}`:M} ${ot(i,t,e.commitInfo).map(t=>A`<dt>${t.label}</dt><dd class="bundle-origin-row"><a class="bundle-origin-link" href="${t.href}" target="_blank" rel="noopener noreferrer">${t.label===`GitHub`?k(ia):M}<span>${t.text}</span></a> ${t.commit?A`<a class="bundle-origin-link bundle-commit-link" href="${t.commit.href}" data-tooltip="${t.commit.hash}" data-tooltip-icon="commit" data-tooltip-commit-info="${it(e.commitInfo,t.commit.hash)??M}" target="_blank" rel="noopener noreferrer">${k(aa)}<span>${t.commit.text}</span></a>`:M} ${t.commit?.tags?A`<span class="bundle-origin-tags">${t.commit.tags.map(e=>A`<a class="bundle-origin-link bundle-tag-link" href="${e.href}" target="_blank" rel="noopener noreferrer">${k(Gi)}<span>${e.name}</span></a>`)}</span>`:M}</dd>`)}<dt>Integrity</dt><dd class="mono bundle-integrity">${e.integrity}</dd>${t?A`<dt>Prefix</dt><dd class="mono">${t}</dd>`:M} ${i?.entries?.size>0?A`<dt>${i.entries.size===1?`Entry`:`Entries`}</dt><dd class="mono"><ul class="bundles-entry-points">${[...i.entries].map(e=>A`<li><button type="button" class="bundle-entry-point" data-bundle-view-source="${e}">${bB(e,t)}</button></li>`)}</ul></dd>`:M} ${n&&Number.isSafeInteger(a)?A`<dt>Size</dt><dd>${Wr(a)}</dd>`:M}</dl>`,s=kV(e,t);if(!n)return AV(o(``,!0),s);if(t.error)return AV(o(``,!0),s,{placeholder:A`<div class="bundles-overview-placeholder is-error">Failed to parse: ${t.error}</div>`});if(t.kind===`sourcemap`&&t.json){let e=t.json,n=Vt(t),r=e.sources??[...n.keys()],i=t.sourceSizes??(n.size===r.length?r.map(e=>n.get(e)??null):r.map((t,n)=>typeof e.sourcesContent?.[n]==`string`?ha(e.sourcesContent[n]):null));return Uz(o,A`<dt>Version</dt><dd>${String(e.version??`?`)}</dd>${e.file?A`<dt>Output</dt><dd class="mono">${e.file}</dd>`:M} ${e.sourceRoot?A`<dt>Source root</dt><dd class="mono">${e.sourceRoot}</dd>`:M} ${e.names||t.namesCount!=null?A`<dt>Names</dt><dd>${e.names?.length??t.namesCount}</dd>`:M}`,r,i,null,s,{bundleSize:t.size,unpackedSize:jV(i)})}if(t.kind===`stasis`&&t.bundle){let e=t.bundle,n=Vt(t),{sourceNames:r,resources:i}=PV(Ht(t)),a=new Set;for(let t of e.imports.keys()){let e=t.replace(/\s*\(with: .*\)\s*$/u,``);for(let t of e.split(`, `))a.add(t)}let c=[...a].toSorted(),l=r.map(e=>n.get(e));return Uz(o,A`<dt>Version</dt><dd>${String(e.version)}</dd>${c.length>0?A`<dt>Resolution kinds</dt><dd>${c.join(`, `)}</dd>`:M}`,r,l,Wt(t),s,{bundleSize:t.size,unpackedSize:jV(l),resources:i,details:t})}return AV(o(``,!0),s,{placeholder:A`<div class="bundles-overview-placeholder">Bundle contents not parsed.</div>`})}var NV=new WeakMap;function PV(e){if(!NV.has(e)){let t=[...e.keys()];NV.set(e,{sourceNames:t,resources:new Set(t.filter(t=>e.get(t)===`resource`))})}return NV.get(e)}function FV(e,t){let n=`/api/npm/download?${new URLSearchParams({name:e.npm.name,version:e.npm.version})}`,r=A`<a class="bundles-download-btn" href="${n}">${yV}<span>Tarball</span></a>`,i=A`<div class="bundles-overview-exports"><div class="bundles-overview-exports-row">${tP(e)}${r}</div></div>`;if(t?.integrity!==e.integrity||!t.json)return AV(hM(e,{githubFigures:CP(e),provenance:OP(e),provenanceNamesBuilder:TP(e.npm)}),i,{overviewClass:`npm-overview`});let{sources:a}=t.json,o=Vt(t),s=a.map(e=>o.get(e)??null),{paths:c,binaries:l,content:u}=RP(t),d=pP(e.npm);return Uz(t=>hM(e,{prefix:t,githubFigures:CP(e),provenance:OP(e),provenanceNamesBuilder:TP(e.npm),files:c}),_M(e,c,t),a,s,null,M,{bundleSize:t.size,unpackedSize:jV(s),resources:l,leadColumn:A`${sM(e)}${MP(e)}`,trailColumns:tI(l,o),summaryExtra:A`${gP(e,c)}${KP(e,t)}${eI(e,DV(t,{legend:!0}),t)}${vP(e,r,sF(e))}`,overviewClass:`npm-overview`,lines:EV(t).lines,sized:(e,t,n)=>mA(e,u[e],n),fileTag:e=>A`${mP(d.get(e))}${qP(t,e,!0)}`,fileFlags:e=>YP(t,e,d.get(e)),fileIcon:e=>qe(e,l.has(e)?`binary`:void 0),fileFilter:HP(e)})}function IV(){Bf().catch(()=>{});let e=Of(),t={inprogress:0,fixed:0,invalid:0,deleted:0,ignored:0},n=[];for(let[r,i]of e){let e=[],a=[],o=new Map,c=new Set;for(let[n,r]of i.byVersion){let i=[],l=new Map;for(let e of r.findings){let n=s(e,F.triage.get(T(e)))??null;n===`inprogress`?t.inprogress++:n===`fixed`?t.fixed++:n===`invalid`?t.invalid++:n===`deleted`?t.deleted++:n===`ignored`&&t.ignored++,n===F.shownTriage&&(i.push(e),l.has(e.file)||l.set(e.file,[]),l.get(e.file).push(e))}if(i.length!==0){e.push([n,{findings:i,files:l,reports:r.reports}]);for(let e of i)a.push(e),o.has(e.file)||o.set(e.file,[]),o.get(e.file).push(e);for(let e of r.reports)c.add(e)}}e.length!==0&&(e.sort(([e],[t])=>df(e,t)),n.push([r,{findings:a,files:o,reports:c,versions:e}]))}let r=F.selectedPackage,i=r?n.find(([e])=>e===r)??null:null,a=null;if(i){let e=i[1].versions,t=F.selectedPackageVersion;a=e.find(([e])=>e===t)??null,!a&&e.length===1&&(a=e[0])}let o=a?a[1]:i?i[1]:null;if(i&&F.packageDetailsTab===`issues`)return UV(i[0],o,a?a[0]:void 0);let c=F.packagesSearchQuery.trim().toLowerCase(),l=c?n.filter(([e])=>e.toLowerCase().includes(c)):n.slice();VV(l,F.packagesSortBy);let u=n.reduce((e,[,t])=>e+t.findings.length,0),d=new Set;for(let[,e]of n)for(let t of e.reports)d.add(t);let f=i?`packages-layout open`:`packages-layout`;return A`<div class="${C({"packages-view":!0,"with-details":!!i})}"><header class="page-head"><div class="page-title"><h1>Packages</h1><div class="meta-row"><span>${l.length===n.length?A`${n.length} ${n.length===1?`package`:`packages`}`:A`${l.length} of ${n.length} ${n.length===1?`package`:`packages`}`}</span> ${u>0?A`<span>${u} ${u===1?`finding`:`findings`} across ${d.size} ${d.size===1?`report`:`reports`}</span>`:M}</div></div>${zV(t)}</header>${n.length===0?A`<p style="${E({color:`var(--muted)`})}">${e.size===0?`Indexing reports… this view populates as the OPFS scan finishes.`:F.shownTriage?`No ${F.shownTriage} findings in any package.`:`No untriaged findings in any package.`}</p>`:l.length===0?A`<p style="${E({color:`var(--muted)`})}">No packages match "${F.packagesSearchQuery}".</p>`:A`<div class="${f}"><ul class="packages-list">${D(LV(l),RV,e=>WV(e,r,F.selectedPackageVersion))}</ul>${i?A`<aside class="packages-details" id="packages-details"><header class="packages-details-bar"><span class="packages-details-label">Details</span> <button type="button" class="packages-details-close" data-deselect-package aria-label="Close details">×</button></header><div class="packages-details-body">${qV(i[0],o,a?a[0]:void 0)}</div></aside>`:M}</div>`}</div>`}function LV(e){let t=[];for(let[n,r]of e){let e=r.versions;if(e.length<=1){let[r,i]=e[0];t.push({kind:`single`,pkg:n,version:r,bucket:i,totalVersions:1});continue}let[i,a]=e[0],o=F.expandedPackages.has(n);if(t.push({kind:`latest`,pkg:n,version:i,bucket:a,totalVersions:e.length,expanded:o}),o)for(let r=1;r<e.length;r++){let[i,a]=e[r];t.push({kind:`other`,pkg:n,version:i,bucket:a,totalVersions:e.length})}}return t}function RV(e){return e.version===null?`${e.kind}:${e.pkg}`:`${e.kind}:${e.pkg}@${e.version}`}function zV(e){return A`<div class="packages-toolbar"><entity-search kind="packages"></entity-search><entity-sort kind="packages"></entity-sort><triage-selector variant="packages" .counts="${e}" .states="${BV}"></triage-selector></div>`}var BV=[`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`];function VV(e,t){let n=t===`name-asc`?(e,t)=>e[0].localeCompare(t[0]):t===`files-desc`?(e,t)=>t[1].files.size-e[1].files.size||e[0].localeCompare(t[0]):t===`reports-desc`?(e,t)=>t[1].reports.size-e[1].reports.size||e[0].localeCompare(t[0]):(e,t)=>t[1].findings.length-e[1].findings.length||e[0].localeCompare(t[0]);e.sort(n)}function HV(e,t){let n={live:0,invalid:0,deleted:0};if(!e)return n;let r=t===void 0?e.files.values():e.byVersion.get(t)?.files.values()??[].values();for(let e of r)for(let t of e){let e=s(t,F.triage.get(T(t)))??null;e===`invalid`?n.invalid++:e===`deleted`?n.deleted++:n.live++}return n}function UV(e,t,n){let r=Of().get(e),i=HV(r,n),a=F.packageSlideTriage??`live`,o=r?JV(r,e,a,n):new Map,s=[...o.values()].reduce((e,t)=>e+t.length,0),c=a===`live`?s===1?`issue`:`issues`:s===1?`${a} issue`:`${a} issues`,l=a===`live`?`No live issues for this package.`:`No ${a} issues for this package.`,u=typeof n==`string`?` @ ${n}`:``;return A`<div class="packages-view packages-slide-view"><header class="bundles-slide-bar"><button type="button" class="bundles-slide-back" data-action="package-slide-back" aria-label="Back to packages">← Back</button><div class="bundles-slide-title"><div class="bundles-slide-name" data-tooltip-truncated data-tooltip="${`${e}${u}`}">${e}${u}</div><div class="bundles-slide-integrity">${s} ${c} · ${t.files.size} ${t.files.size===1?`file`:`files`} · ${t.reports.size} ${t.reports.size===1?`report`:`reports`}</div></div><slide-triage-tabs kind="package" .counts="${i}"></slide-triage-tabs></header><div class="bundles-slide-body">${o.size===0?A`<div class="bundle-issues-empty">${l}</div>`:_V(o,{kind:`package`,bucketKey:e})}</div></div>`}function WV(e,t,n){let{kind:r,pkg:i,version:a,bucket:o}=e,s={critical:0,high:0,medium:0,low:0,high_bug:0,bug:0,informational:0};for(let e of o.findings){let t=O(e,F.severityMode);s[t]!==void 0&&s[t]++}let c=Ai.filter(e=>s[e]>0),l=Or(i),u={selected:i===t&&GV(e,n),"packages-row-latest":r===`latest`,"packages-row-other":r===`other`},d=a===null?``:a,f=a===null?`Open issues for ${i}`:`Open issues for ${i}@${a}`;return A`<li class="${C(u)}" data-select-package="${i}" data-select-package-version="${d}"><span class="packages-dot" style="${E({background:l})}"></span><div class="packages-row-text"><div class="packages-name-line"><span class="packages-name" data-tooltip-truncated data-tooltip="${a===null?i:`${i}@${a}`}">${i}${a===null?M:A`<span class="packages-version">@${a}</span>`} </span>${r===`latest`?KV(i,e.expanded,e.totalVersions-1):M}</div><span class="packages-row-meta">${o.findings.length} ${o.findings.length===1?`finding`:`findings`} · ${o.files.size} ${o.files.size===1?`file`:`files`} · ${o.reports.size} ${o.reports.size===1?`report`:`reports`}</span></div>${c.length>0?A`<div class="packages-row-chips">${c.map(e=>A`<span class="${`tree-count-chip ${e}`}" data-tooltip="${e.replaceAll(`_`,` `)}">${s[e]}</span>`)}</div>`:M} <button type="button" class="packages-row-issues" data-package-row-issues="${i}" data-package-row-issues-version="${d}" aria-label="${f}">Issues →</button></li>`}function GV(e,t){return e.kind===`single`||e.version===t}function KV(e,t,n){let r=t?`Hide`:`+${n} ${n===1?`version`:`versions`}`;return A`<button type="button" class="${C({"packages-row-expand":!0,expanded:t})}" data-package-expand="${e}" aria-expanded="${String(t)}" aria-label="${t?`Hide older versions of ${e}`:`Show older versions of ${e}`}" data-tooltip="${t?`Hide older versions`:`Show older versions (${n})`}"><span class="packages-row-expand-chevron" aria-hidden="true"></span> <span class="packages-row-expand-label">${r}</span></button>`}function qV(e,t,n){let r=Of().get(e),i=[...(r?JV(r,e,`live`,n):new Map).values()].reduce((e,t)=>e+t.length,0);return A`<div class="bundles-tabs" role="tablist"><button type="button" class="bundles-tab active" data-package-tab="overview" aria-selected="true" role="tab">Overview</button> <span class="bundles-tabs-spacer"></span> ${i>0?A`<button type="button" class="bundles-tab bundles-tab-action" data-package-tab="issues">Issues (${i}) →</button>`:M}</div>${YV(e,t,n)}`}function JV(e,t,n=`live`,r){let i=new Map,a=r===void 0?e.files:e.byVersion.get(r)?.files??new Map;for(let[e,r]of a){let a=r.filter(e=>{let t=s(e,F.triage.get(T(e)))??null;return n===`invalid`?t===`invalid`:n===`deleted`?t===`deleted`:t!==`invalid`&&t!==`deleted`});if(a.length===0)continue;let o=XV(t,e);i.has(o)||i.set(o,[]);let c=i.get(o);for(let e of a)c.push(e)}return i}function YV(e,t,n){let r={critical:0,high:0,medium:0,low:0,high_bug:0,bug:0,informational:0};for(let e of t.findings){let t=O(e,F.severityMode);r[t]!==void 0&&r[t]++}let i=Ai.filter(e=>r[e]>0),a=[...t.files.entries()].toSorted(([e,t],[n,r])=>r.length===t.length?e.localeCompare(n):r.length-t.length),o=[...t.reports].toSorted((e,t)=>e.localeCompare(t)),s=Of().get(e)?.repos,c=s&&s.size===1?[...s][0]:null,l=c?/^https?:/iu.test(c)?c:`https://github.com/${c}`:null;return A`<dl class="packages-detail-meta"><dt>Package</dt><dd class="mono">${e}</dd>${n?A`<dt>Version</dt><dd class="mono">${n}</dd>`:M} ${l?A`<dt>Repository</dt><dd class="mono"><a href="${l}" target="_blank" rel="noopener">${c}</a></dd>`:M}<dt>Findings</dt><dd>${t.findings.length}</dd><dt>Files</dt><dd>${t.files.size}</dd><dt>Reports</dt><dd>${t.reports.size}</dd></dl>${i.length>0?A`<div class="packages-detail-chips">${i.map(e=>A`<span class="${`tree-count-chip ${e}`}">${r[e]} ${e.replaceAll(`_`,` `)}</span>`)}</div>`:M}<h3 class="packages-detail-section">Reports</h3><ul class="packages-detail-reports">${o.map(e=>{let t=Wx[Jx(e)]??Wx.default;return A`<li><button type="button" class="packages-detail-report" data-package-report="${e}">${k(t)}<span class="packages-detail-report-label" data-tooltip-truncated data-tooltip="${e}">${x(e)}</span></button></li>`})}</ul><h3 class="packages-detail-section">Files</h3><ul class="packages-detail-files">${a.map(([t,n])=>{let r=XV(e,t);return A`<li class="packages-detail-file"><span class="packages-detail-file-path mono" data-tooltip-truncated data-tooltip="${t}">${r}</span> <span class="packages-detail-file-count">${n.length}</span></li>`})}</ul>`}function XV(e,t){for(let n of[`node_modules`,`dependencies`]){let r=`${n}/${e}/`,i=t.indexOf(r);if(i>=0)return t.slice(i+r.length)}return t.startsWith(`${e}/`)?t.slice(e.length+1):t}function ZV(){Bf().catch(()=>{});let e=kf(),t={inprogress:0,fixed:0,invalid:0,deleted:0,ignored:0},n=[];for(let[r,i]of e){let e=[],a=new Map;for(let n of i.findings){let r=s(n,F.triage.get(T(n)))??null;r===`inprogress`?t.inprogress++:r===`fixed`?t.fixed++:r===`invalid`?t.invalid++:r===`deleted`?t.deleted++:r===`ignored`&&t.ignored++,r===F.shownTriage&&(e.push(n),a.has(n.file)||a.set(n.file,[]),a.get(n.file).push(n))}e.length>0&&n.push([r,{findings:e,files:a,reports:i.reports}])}let r=F.selectedRepository,i=r?n.find(([e])=>e===r)??null:null;if(i&&F.repositoryDetailsTab===`issues`)return nH(i[0],i[1]);let a=F.repositoriesSearchQuery.trim().toLowerCase(),o=a?n.filter(([e])=>e.toLowerCase().includes(a)||Ln(e).toLowerCase().includes(a)):n.slice();eH(o,F.repositoriesSortBy);let c=n.reduce((e,[,t])=>e+t.findings.length,0),l=new Set;for(let[,e]of n)for(let t of e.reports)l.add(t);let u=i?`packages-layout open`:`packages-layout`;return A`<div class="${C({"packages-view":!0,"with-details":!!i})}"><header class="page-head"><div class="page-title"><h1>Repositories</h1><div class="meta-row"><span>${o.length===n.length?A`${n.length} ${n.length===1?`repository`:`repositories`}`:A`${o.length} of ${n.length} ${n.length===1?`repository`:`repositories`}`}</span> ${c>0?A`<span>${c} ${c===1?`finding`:`findings`} across ${l.size} ${l.size===1?`report`:`reports`}</span>`:M}</div></div>${QV(t)}</header>${n.length===0?A`<p style="${E({color:`var(--muted)`})}">${e.size===0?`Indexing reports… this view populates as the OPFS scan finishes.`:F.shownTriage?`No ${F.shownTriage} findings in any repository.`:`No untriaged findings in any repository.`}</p>`:o.length===0?A`<p style="${E({color:`var(--muted)`})}">No repositories match "${F.repositoriesSearchQuery}".</p>`:A`<div class="${u}"><ul class="packages-list">${D(o,([e])=>e,([e,t])=>rH(e,t,e===r))}</ul>${i?A`<aside class="packages-details" id="repositories-details"><header class="packages-details-bar"><span class="packages-details-label">Details</span> <button type="button" class="packages-details-close" data-deselect-repository aria-label="Close details">×</button></header><div class="packages-details-body">${iH(i[0],i[1])}</div></aside>`:M}</div>`}</div>`}function QV(e){return A`<div class="packages-toolbar"><entity-search kind="repositories"></entity-search><entity-sort kind="repositories"></entity-sort><triage-selector variant="packages" .counts="${e}" .states="${$V}"></triage-selector></div>`}var $V=[`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`];function eH(e,t){let n=t===`name-asc`?(e,t)=>Ln(e[0]).localeCompare(Ln(t[0])):t===`files-desc`?(e,t)=>t[1].files.size-e[1].files.size||Ln(e[0]).localeCompare(Ln(t[0])):t===`reports-desc`?(e,t)=>t[1].reports.size-e[1].reports.size||Ln(e[0]).localeCompare(Ln(t[0])):(e,t)=>t[1].findings.length-e[1].findings.length||Ln(e[0]).localeCompare(Ln(t[0]));e.sort(n)}function tH(e){let t={live:0,invalid:0,deleted:0};if(!e)return t;for(let n of e.files.values())for(let e of n){let n=s(e,F.triage.get(T(e)))??null;n===`invalid`?t.invalid++:n===`deleted`?t.deleted++:t.live++}return t}function nH(e,t){let n=kf().get(e),r=tH(n),i=F.repositorySlideTriage??`live`,a=n?aH(n,i):new Map,o=[...a.values()].reduce((e,t)=>e+t.length,0),s=i===`live`?o===1?`issue`:`issues`:o===1?`${i} issue`:`${i} issues`,c=i===`live`?`No live issues for this repository.`:`No ${i} issues for this repository.`;return A`<div class="packages-view packages-slide-view"><header class="bundles-slide-bar"><button type="button" class="bundles-slide-back" data-action="repository-slide-back" aria-label="Back to repositories">← Back</button><div class="bundles-slide-title"><div class="bundles-slide-name" data-tooltip-truncated data-tooltip="${Ln(e)}">${Ln(e)}</div><div class="bundles-slide-integrity">${o} ${s} · ${t.files.size} ${t.files.size===1?`file`:`files`} · ${t.reports.size} ${t.reports.size===1?`report`:`reports`}</div></div><slide-triage-tabs kind="repository" .counts="${r}"></slide-triage-tabs></header><div class="bundles-slide-body">${a.size===0?A`<div class="bundle-issues-empty">${c}</div>`:_V(a,{kind:`repository`,bucketKey:e})}</div></div>`}function rH(e,t,n){let r={critical:0,high:0,medium:0,low:0,high_bug:0,bug:0,informational:0};for(let e of t.findings){let t=O(e,F.severityMode);r[t]!==void 0&&r[t]++}let i=Ai.filter(e=>r[e]>0),a=Or(e),o=Ln(e);return A`<li class="${n?`selected`:``}" data-select-repository="${e}"><span class="packages-dot" style="${E({background:a})}"></span><div class="packages-row-text"><span class="packages-name" data-tooltip-truncated data-tooltip="${o}">${o}</span> <span class="packages-row-meta">${t.findings.length} ${t.findings.length===1?`finding`:`findings`} · ${t.files.size} ${t.files.size===1?`file`:`files`} · ${t.reports.size} ${t.reports.size===1?`report`:`reports`}</span></div>${i.length>0?A`<div class="packages-row-chips">${i.map(e=>A`<span class="${`tree-count-chip ${e}`}" data-tooltip="${e.replaceAll(`_`,` `)}">${r[e]}</span>`)}</div>`:M} <button type="button" class="packages-row-issues" data-repository-row-issues="${e}" aria-label="${`Open issues for ${o}`}">Issues →</button></li>`}function iH(e,t){let n=kf().get(e),r=[...(n?aH(n):new Map).values()].reduce((e,t)=>e+t.length,0);return A`<div class="bundles-tabs" role="tablist"><button type="button" class="bundles-tab active" data-repository-tab="overview" aria-selected="true" role="tab">Overview</button> <span class="bundles-tabs-spacer"></span> ${r>0?A`<button type="button" class="bundles-tab bundles-tab-action" data-repository-tab="issues">Issues (${r}) →</button>`:M}</div>${oH(e,t)}`}function aH(e,t=`live`){let n=new Map;for(let[r,i]of e.files){let e=i.filter(e=>{let n=s(e,F.triage.get(T(e)))??null;return t===`invalid`?n===`invalid`:t===`deleted`?n===`deleted`:n!==`invalid`&&n!==`deleted`});e.length>0&&n.set(r,e)}return n}function oH(e,t){let n={critical:0,high:0,medium:0,low:0,high_bug:0,bug:0,informational:0};for(let e of t.findings){let t=O(e,F.severityMode);n[t]!==void 0&&n[t]++}let r=Ai.filter(e=>n[e]>0),i=[...t.files.entries()].toSorted(([e,t],[n,r])=>r.length===t.length?e.localeCompare(n):r.length-t.length),a=[...t.reports].toSorted((e,t)=>e.localeCompare(t)),o=/^https?:/iu.test(e)?e:`https://github.com/${e}`;return A`<dl class="packages-detail-meta"><dt>Repository</dt><dd class="mono"><a href="${o}" target="_blank" rel="noopener">${Ln(e)}</a></dd><dt>Findings</dt><dd>${t.findings.length}</dd><dt>Files</dt><dd>${t.files.size}</dd><dt>Reports</dt><dd>${t.reports.size}</dd></dl>${r.length>0?A`<div class="packages-detail-chips">${r.map(e=>A`<span class="${`tree-count-chip ${e}`}">${n[e]} ${e.replaceAll(`_`,` `)}</span>`)}</div>`:M}<h3 class="packages-detail-section">Reports</h3><ul class="packages-detail-reports">${a.map(e=>{let t=Wx[Jx(e)]??Wx.default;return A`<li><button type="button" class="packages-detail-report" data-package-report="${e}">${k(t)}<span class="packages-detail-report-label" data-tooltip-truncated data-tooltip="${e}">${x(e)}</span></button></li>`})}</ul><h3 class="packages-detail-section">Files</h3><ul class="packages-detail-files">${i.map(([e,t])=>A`<li class="packages-detail-file"><span class="packages-detail-file-path mono" data-tooltip-truncated data-tooltip="${e}">${e}</span> <span class="packages-detail-file-count">${t.length}</span></li>`)}</ul>`}function sH(e,t){let n=new Set(e),r=new Set,i=new Map,a=new Map(e.map((e,t)=>[e,t]));for(let e of t){let t=[...new Map(e.members.map(e=>[JSON.stringify([e.id,o(e)]),e])).values()],s=t.filter(e=>n.has(e.id));if(s.length===0)continue;for(let e of s)r.add(e.id);let c=t.filter(e=>n.has(e.id)||e.isApp),l=JSON.stringify([t.map(e=>e.id).toSorted(),c.map(e=>[e.id,o(e),e.title??``,e.source??null,e.revalidate??``]).toSorted(([e,t],[n,r])=>e.localeCompare(n)||Number(t)-Number(r))]),u=i.get(l);u||(u={key:l,members:c,reports:[],first:Math.min(...s.map(e=>a.get(e.id)))},i.set(l,u)),u.reports.some(t=>t.name===e.report&&t.managedReportId===e.managedReportId)||u.reports.push({name:e.report,...e.managedReportId?{managedReportId:e.managedReportId}:{},findingId:s[0].id,rowIndex:e.index})}return{rows:[...i.values()].toSorted((e,t)=>e.first-t.first),missing:e.filter(e=>!r.has(e))}}function cH(e,t,n){return`${e} ${e===1?t:n}`}function lH(e,t){let n=s(e,F.triage.get(e.id)),r=o(e)?t.filter(({name:t})=>_n(F.triage,e.id,t)):[],i=n??(r.length>0?`ignored`:null);if(!i)return M;let a=n!==`ignored`&&i===`ignored`&&r.length<t.length,c=a?`Ignored in ${r.length}/${t.length} reports`:Di[i];return A`<span class="${`links-finding-status triage-${i}`}" data-tooltip="${a?r.map(({name:e})=>x(e)).join(`, `):M}">${c}</span>`}function uH(e,t=[],n=!0,r=M){let{id:i,title:a}=e,o=t[0]?.name,s=tr(i),c=$n(i)??s;return A`<li class="${n?`links-finding`:`links-finding links-finding-context`}">${o?A`<button type="button" class="links-finding-id mono" data-links-preview="${i}" data-preview-report="${o}" data-preview-row="${t[0].rowIndex??M}" data-preview-managed-report="${t[0].managedReportId??M}" data-tooltip="${s}" aria-haspopup="dialog">${c}</button>`:$r(i)?A`<a class="links-finding-id mono" href="${`#${Vr({id:i})}`}" data-tooltip="${s}">${c}</a>`:A`<span class="links-finding-id mono">${c}</span>`} ${a?A`<span class="links-finding-title">${a}</span>`:M} ${lH(e,t)} ${n?M:A`<span class="links-member-context">not in this link</span>`} ${r}</li>`}function dH(e){let t=!!F.currentLinks?.managedId;return A`<div class="links-finding-reports">${e.map(({name:e,findingId:n,managedReportId:r,rowIndex:i})=>A`<button type="button" class="links-finding-report report-button" data-links-report="${t?M:e}" data-links-finding="${n}" data-managed-report="${r??M}" data-links-preview="${t?n:M}" data-preview-report="${t?e:M}" data-preview-row="${t?i:M}" data-preview-managed-report="${t?r:M}">${k(st[Jx(e)]??st.default)}<span class="links-finding-report-label report-button-label" data-tooltip-truncated data-tooltip="${x(e)}">${x(e)}</span></button>`)}</div>`}function fH(e,t){let n=e.reports.toSorted((e,t)=>x(e.name).localeCompare(x(t.name)));if(e.members.length===1){let r=e.members[0];return A`<li class="links-report-row links-report-row-single"><ul class="links-row-members">${uH(r,n,t.has(r.id),dH(n))}</ul></li>`}return A`<li class="links-report-row"><div class="links-report-row-head"><span class="links-row-count">${cH(e.members.length,`finding`,`findings`)} in row</span> ${dH(n)}</div><ul class="links-row-members">${e.members.map(e=>uH(e,n,t.has(e.id)))}</ul></li>`}function pH(e,t){let{rows:n,missing:r}=sH(e,Yd(e)),i=new Set(e);return A`<li class="links-group"><div class="links-group-head"><span class="links-group-index">Link ${t+1}</span> <span class="links-group-count">${cH(e.length,`finding`,`findings`)}</span></div><ul class="links-group-rows">${D(n,e=>e.key,e=>fH(e,i))}</ul>${r.length>0?A`<div class="links-unlocated"><div class="links-finding-missing">Not in your reports</div><ul class="links-row-members">${r.map(e=>uH({id:e,title:Jd(e)}))}</ul></div>`:M}</li>`}function mH(e=M){let t=F.currentLinks;if(!t)return M;Bf().catch(()=>{});let{name:n,groups:r,skipped:i}=t,a=new Set,o=new Set,s=0;for(let e of r)for(let t of e){if(a.has(t))continue;a.add(t);let e=qd(t);if(e.length!==0){s++;for(let t of e)o.add(t)}}return A`<div class="links-view">${t.managedId?A`<div class="meta-row"><button type="button" class="report-button" @click="${()=>document.dispatchEvent(new CustomEvent(`managed-admin-navigate`,{detail:{view:`manage-deduplication`}}))}">‹ Deduplication</button></div>`:M}<header class="page-head"><div class="page-title"><h1>Links${e}</h1><div class="meta-row"><span class="links-file-name" data-tooltip-truncated data-tooltip="${n}">${k(Wx[Jx(n)]??Wx.default)}${x(n)}</span> <span>${cH(r.length,`link`,`links`)}</span> <span>${cH(a.size,`finding`,`findings`)}</span> ${o.size>0?A`<span>found in ${cH(o.size,`report`,`reports`)}</span>`:M}</div></div></header>${s<a.size?A`<p class="links-note">${cH(a.size-s,`linked finding is`,`linked findings are`)} not in any report you hold. Import the reports they came from and this page fills in.</p>`:M} ${i>0?A`<p class="links-note">${cH(i,`entry`,`entries`)} in this file could not be linked — an id the app can't follow (a session-local number, or something that isn't an id at all).</p>`:M} ${r.length===0?A`<p class="links-empty">This file declares no links: every entry in it named fewer than two findings this app can reach.</p>`:A`<ol class="links-list">${D(r,(e,t)=>`${t}:${e.join(` `)}`,(e,t)=>pH(e,t))}</ol>`}</div>`}function hH(e,t,n){let r=new Set(t);for(let e of n)r.add(e);return e.filter(e=>r.has(e))}function gH(){if(F.currentWorkspace){let e=R().find(e=>e.id===F.currentWorkspace),t=F.reports.map(e=>e.fileName).filter(e=>typeof e==`string`);return{mode:`workspace`,workspaceId:F.currentWorkspace,fileNames:e?hH(e.reports??[],F.storedFiles??[],t):t}}if(F.currentFile){let e=R().find(e=>Array.isArray(e.reports)&&e.reports.includes(F.currentFile));return e?{mode:`single`,workspaceId:e.id,fileNames:[F.currentFile]}:null}return null}var _H=1500;function vH({open:e,later:t=(e,t)=>setTimeout(e,t),modalOpen:n=()=>Ev()}){let r=new Set,i=!1;function a(a,o,{onSync:s,retry:c}={}){!a||!Array.isArray(o)||o.length===0||i||r.has(a)||(i=!0,t(async()=>{let l;if(n())l={shown:!1,sync:!1};else try{l=await e([...o])}catch{l={shown:!1,sync:!1}}if(i=!1,!l.shown){typeof c==`function`&&t(c,_H);return}r.add(a),l.sync&&typeof s==`function`&&s()},0))}return{suggestSync:a,isClosedFor:e=>r.has(e)}}function yH(e,t,n=0){let{viewMode:r,focusGid:i,tableSelectedGid:a,kanbanPopoverGid:o}=t,s=r===`focus`?i:r===`table`?a:r===`kanban`?o:null;return(s?e.find(e=>H(e)===s):null)||(r===`focus`?e[Math.min(n,e.length-1)]??null:null)}function bH(e,t){if(t.currentView!==`findings`)return null;let n=fi({view:`findings`,teamId:t.currentManagedTeam,reportId:t.currentManagedReport},t.managedTeams);if(!n||!e)return n;let r={...n,finding:{id:T(Fg(e))}};return oi(r)?r:n}function xH(e){return e.repoFullName?`${e.repoFullName}${e.repoDirectory?`/${e.repoDirectory}`:``}`:``}function SH(e){let t=e.summary,n=[];return Number.isSafeInteger(e.byteSize)&&e.byteSize>=0&&n.push(Wr(e.byteSize)),t&&[t.files,t.lines].every(e=>Number.isSafeInteger(e)&&e>=0)&&n.push(`${t.files.toLocaleString()} files`,`${t.lines.toLocaleString()} LoC`),n.join(` · `)}function CH(e,t=``){let n=t.trim().toLowerCase(),r=e=>String(e??``).toLowerCase().includes(n);return(Array.isArray(e)?e:[]).flatMap(e=>{let t=(e.reports??[]).filter(e=>r(e.filename)||r(x(e.filename??``))),n=(e.bundles??[]).filter(e=>r(e.filename));return r(e.name)||t.length>0||n.length>0?[{team:e,reports:t,bundles:n}]:[]})}function wH(e,t){return e?.appMode===!0||e?.appReports===0&&t>0}function TH(e){return(e?.appMode?e.appFindings:e?.findings)??null}var EH=class{constructor(){this.expanded=new Map}sync(e,t=!1){let n=JSON.stringify([e.managedSession?.id,e.managedSession?.role,e.managedSession?.csrfToken]);n!==this.owner&&(this.expanded.clear(),this.focus=``,this.owner=n);let r=e.managedTeams??[];for(let e of this.expanded.keys())r.some(t=>t.id===e)||this.expanded.delete(e);let i=Fx(e),a=[`findings`,`files`,`links`].includes(e.currentView)?e.currentManagedReport:null,o=i?`bundles`:`reports`,s=r.find(t=>t.id===e.currentManagedTeam&&(i?t.bundles?.some(e=>e.id===i):t.reports?.some(e=>e.id===a))),c=JSON.stringify([o,i||a,s?.id]);if((t||c!==this.focus)&&(this.focus=c,s)){let e=this.expanded.get(s.id)??new Set;e.add(o),this.expanded.set(s.id,e)}}toggle(e,t){let n=this.expanded.get(e)??new Set;n.has(t)?n.delete(t):n.add(t),this.expanded.set(e,n)}shown(e,t,n,r){return!n||r||this.expanded.get(e)?.has(t)===!0}};function DH(e,t,n=()=>null){if(!e.currentWorkspace)return null;if(e.currentManagedTeam){let t=e.managedTeams.find(t=>t.id===e.currentManagedTeam);if(!t)return null;let n=(t.reports??[]).filter(e=>e.analyzer!==`links`).map(e=>({...e,managedId:e.id,name:e.filename,hidden:e.visible===!1,available:!0})),r=(t.bundles??[]).map(e=>({...Px(e),hidden:e.visible===!1,available:!0})),i=e.managedSession;return{id:t.id,scope:`team`,title:`Team: ${t.name}`,findings:TH(t.app),reports:n,bundles:r,repositories:OH(t.repos??[],n,r,rt(i)),dependencyReview:t.dependencyReview===!0}}let r=t.find(t=>t.id===e.currentWorkspace);if(!r)return null;let i=new Map(e.bundles.map(e=>[e.integrity,e])),a=new Set(e.storedFiles??[]);return{id:r.id,scope:`workspace`,title:`Workspace: ${r.name}`,reports:[...new Set(r.reports??[])].filter(e=>n(e)!==`links`).map(e=>({name:e,available:a.has(e)})),bundles:[...new Set(r.bundles??[])].map(e=>{let t=i.get(e);return t?{...t,available:!0}:{integrity:e,name:`${e.slice(0,24)}\u2026`,available:!1}})}}function OH(e,t,n,r){let i=new Map;for(let{repoId:t,fullName:n,path:a}of e){let e=i.get(t)??{repoId:t,name:n,paths:[],reports:0,bundles:0,available:r};a&&e.paths.push(a),i.set(t,e)}let a=new Map([...i.values()].map(e=>[e.name,e]));for(let e of t)a.has(e.repoFullName)&&a.get(e.repoFullName).reports++;for(let e of n)i.has(e.repoId)&&i.get(e.repoId).bundles++;return[...i.values()]}var kH=[[`findings`,`Findings`],[`reports`,`Reports`],[`bundles`,`Bundles`],[`repositories`,`Repositories`],[`dependencies`,`Dependencies`]],AH=e=>e===`findings`||e===`files`?`findings`:e.slice(10);function jH(e,t,{findings:n=e.findings,statusBar:r=M}={}){let i=AH(t),a={findings:n,reports:e.reports.length,bundles:e.bundles.length,repositories:e.repositories.length};return A`<bundle-slide-header class="bundles-slide-header team-slide-header"><header class="bundles-slide-bar team-slide-bar"><h1 class="team-slide-name" data-tooltip-truncated data-tooltip="${e.title}">${e.title}</h1>${r}<div class="bundles-slide-tabs" role="tablist" aria-label="Team">${kH.filter(([t])=>t!==`dependencies`||e.dependencyReview).map(([e,t])=>A`<button type="button" class="${C({"bundles-tab":!0,"team-slide-tab":!0,active:i===e})}" role="tab" aria-selected="${String(i===e)}" data-action="${`workspace-${e}`}">${t}${a[e]==null?M:A`<span class="n">${a[e].toLocaleString()}</span>`}</button>`)}</div></header></bundle-slide-header>`}function MH(e){return A`${e?.scope===`team`?jH(e,`findings`):M}<p class="triage-loading" role="status">Loading report triage…</p>`}function NH(e,t){return t===`findings`?e.title:A`<button type="button" class="workspace-title-link" data-action="workspace-findings">${e.title}</button>`}function PH(e,t,n){if(!e)return M;let r=e[t].length;if(t===`bundles`&&r===0)return M;let i=n===`workspace-${t}`;return A`<button type="button" class="${`files-toggle-btn${i?` active`:``}`}" data-action="${`workspace-${t}`}" aria-pressed="${String(i)}">${`${r} ${r===1?t.slice(0,-1):t}`}</button>`}function FH(e,t){if(!(e>1))return M;let n=t===`files`;return A`<button type="button" class="${`files-toggle-btn${n?` active`:``}`}" data-action="toggle-files" aria-pressed="${String(n)}">${`${e} files`}</button>`}function IH(e){let t=[e.reports?`${e.reports.toLocaleString()} report${e.reports===1?``:`s`}`:null,e.bundles?`${e.bundles.toLocaleString()} bundle${e.bundles===1?``:`s`}`:null].filter(Boolean).join(` · `),n=A`<span class="workspace-content-icon">${k(ra)}</span> <span class="workspace-content-label"><span class="workspace-content-name">${e.name}</span> ${e.paths.length>0?A`<span class="workspace-content-repo">${e.paths.join(`, `)}</span>`:M} </span><span class="workspace-content-stats">${t}</span> ${e.available?A`<span class="workspace-content-arrow" aria-hidden="true">→</span>`:M}`;return A`<li>${e.available?A`<button type="button" class="workspace-content-row" data-workspace-repository="${e.repoId}" data-repository-name="${e.name}" data-repository-path="${e.paths.length===1?e.paths[0]:``}">${n}</button>`:A`<div class="workspace-content-row">${n}</div>`}</li>`}function LH(e,t){if(!e)return A`<p class="workspace-content-empty">This workspace is no longer available.</p>`;let n=`workspace-${t}`;if(t===`dependencies`&&e.scope===`team`)return A`<section class="workspace-content-view">${jH(e,n)} ${e.dependencyReview?A`<team-dependencies .repositories="${e.repositories}" .team="${e.id}"></team-dependencies>`:A`<p class="workspace-content-empty">You review no dependencies in this team.</p>`}</section>`;let r=e[t]??[];return A`<section class="workspace-content-view">${e.scope===`team`?jH(e,n):A`<header class="page-head"><div class="page-title"><h1>${NH(e,n)}${PH(e,`reports`,n)}${PH(e,`bundles`,n)}</h1></div></header>`} ${r.length>0?A`<ul class="workspace-content-list">${t===`repositories`?r.map(IH):r.map(e=>{let n=[e.kind===`stasis`?`Stasis`:e.kind===`sourcemap`?`Sourcemap`:null,Number.isFinite(e.size)?Wr(e.size):null,Number.isFinite(e.summary?.files)?`${e.summary.files.toLocaleString()} files`:null,Number.isFinite(e.summary?.lines)?`${e.summary.lines.toLocaleString()} LoC`:null].filter(Boolean).join(` · `),r=e.repoFullName?`${e.repoFullName}${e.repoDirectory?`/${e.repoDirectory}`:``}`:null;return A`<li class="${e.hidden?`workspace-content-hidden`:``}"><button type="button" class="workspace-content-row" data-workspace-report="${t===`reports`?e.managedId??e.name:M}" data-workspace-bundle="${t===`bundles`?e.managedId??e.integrity:M}" ?disabled="${!e.available}"><svg class="workspace-content-icon" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><path d="${t===`bundles`?`m12 3 9 5v8l-9 5-9-5V8zM3 8l9 5 9-5M12 13v8M7.5 5.5l9 5`:`M14 3H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9zM14 3v6h6M8 13h8M8 17h5`}/"></path></svg> <span class="workspace-content-label"><span class="workspace-content-name">${e.name}${e.hidden?A`<span class="workspace-content-visibility">Hidden</span>`:M}</span> ${r?A`<span class="workspace-content-repo">${r}</span>`:M} </span><span class="workspace-content-stats">${e.available?n:`Not available locally`}</span> ${e.available?A`<span class="workspace-content-arrow" aria-hidden="true">→</span>`:M}</button></li>`})}</ul>`:A`<p class="workspace-content-empty">No ${t} in this ${e.scope}.</p>`}</section>`}var RH=3e5,zH=3e4,BH=2,VH=20,HH=new Map,UH=[],WH=[],GH=new Map,KH=new Set,qH=null,JH=0;function YH(e){return KH.add(e),()=>KH.delete(e)}var XH=e=>{for(let t of KH)t(e)};function ZH(){HH.clear(),UH.length=0,WH.length=0,GH.clear()}globalThis.addEventListener?.(`dependency-review-changed`,()=>{ZH(),XH()});function QH(){let e=F.managedSession?`${F.managedSession.id}\0${F.managedSession.role}`:null;return e!==qH&&(ZH(),qH=e),HH}var $H=e=>e?.touchesLockfile===!0||e?.touchesLockfile===null,eU=e=>Number.isSafeInteger(e)&&e>=0?e:null,tU=new Set([`git`,`tarball`,`integrity`]);function nU(e){if(typeof e?.name!=`string`)return[];let{was:t,reviews:n,rejected:r,commented:i,baseline:a,reviewed:o,unsupported:s,patched:c,...l}=e;return[{...l,...Array.isArray(t)&&t.length>0&&t.every(e=>typeof e==`string`)?{was:t}:{},...c===!0?{patched:c}:{},...tU.has(s)?{unsupported:s}:a===!0?{baseline:a}:o===!0?{reviewed:o}:eU(n)===null?{}:{reviews:n,...r===!0?{rejected:r}:{},...eU(i)>0?{commented:i}:{}}}]}var rU=e=>Array.isArray(e)?e.flatMap(nU):[];function iU(e){if(!Array.isArray(e?.lockfiles))throw Error(`The server answered with no lockfiles.`);let t=e.lockfiles.filter(e=>Array.isArray(e?.paths)&&(Array.isArray(e.added)||typeof e.error==`string`)).map(e=>e.error?e:{...e,added:e.added.flatMap(nU),more:eU(e.more)??0,unreviewed:rU(e.unreviewed),moreUnreviewed:eU(e.moreUnreviewed)??0,unsupported:rU(e.unsupported),moreUnsupported:eU(e.moreUnsupported)??0,moreLocked:eU(e.moreLocked)??0}),n=e.review;return{lockfiles:t,cut:e.cut===!0,...typeof e.formatted==`string`&&e.formatted.trim()!==``?{formatted:e.formatted}:{},...eU(n?.required)>0?{review:{required:n.required,since:typeof n.since==`string`?n.since:null,canReview:n.canReview===!0,...eU(n.toReview)===null?{}:{toReview:n.toReview},...eU(n.unreviewed)===null?{}:{unreviewed:n.unreviewed},...eU(n.unsupported)===null?{}:{unsupported:n.unsupported},...Array.isArray(n.baselineUnread)&&n.baselineUnread.every(e=>typeof e==`string`)?{baselineUnread:n.baselineUnread}:{},...n.reviewedDependencies===!0?{reviewedDependencies:!0}:{},...eU(n.unasked)>0?{unasked:n.unasked}:{},...eU(n.commentReviews)>0?{commentReviews:n.commentReviews}:{},...n.commentsFailed===!0?{commentsFailed:!0}:{},...typeof n.baselineError==`string`?{baselineError:n.baselineError}:{},...[`exclude`,`include`].includes(n.lockfiles?.mode)&&Array.isArray(n.lockfiles.paths)&&n.lockfiles.paths.every(e=>typeof e==`string`)?{lockfiles:{mode:n.lockfiles.mode,paths:n.lockfiles.paths}}:{}}}:{}}}function aU(){for(;JH<BH&&UH.length+WH.length>0;){let e=UH.shift()??WH.shift(),t=[e];for(let n=0;e.background&&n<WH.length&&t.length<VH;){let r=WH[n];r.pull.repoId===e.pull.repoId&&r.review===e.review?t.push(...WH.splice(n,1)):n++}for(let e of t)GH.delete(e.key);JH++,sU(t).finally(()=>oU(t))}}function oU(e){JH--;for(let t of e)XH(t.pull);aU()}function sU(e){let[{pull:{repoId:t,number:n},review:r}]=e;return e.length===1?Ob(t,n,{review:r}).then(e[0].settle,e[0].settle):kb(t,e.map(e=>e.pull.number),{review:r}).then(t=>{for(let n of e)n.settle(t.get(n.pull.number)??Error(`The server answered with none of it.`));return null},t=>{for(let n of e)n.settle(t)})}function cU(e,t,n=!1,{background:r=!1}={}){let i=QH(),a=`${e}\0${t}\0${n}`,o=i.get(a);if(o&&Date.now()<o.until){let e=GH.get(a);return!r&&e?.background&&(WH.splice(WH.indexOf(e),1),e.background=!1,UH.push(e)),o}let s=o?.status===`ready`?{...o,until:1/0,refreshing:!0}:{status:`loading`,until:1/0};i.set(a,s);let c={key:a,background:r,review:n,pull:{repoId:e,number:t},settle:e=>{if(i.get(a)!==s)return;let t=lU(e,o);t?i.set(a,t):i.delete(a)}};return GH.set(a,c),(r?WH:UH).push(c),aU(),s}function lU(e,t){let n=e instanceof Error?e:null;if(!n)try{return{status:`ready`,until:Date.now()+RH,...iU(e)}}catch(e){n=e}return n?.name===`AbortError`?t?.status===`ready`?t:null:{status:`error`,until:Date.now()+zH,error:n?.message||`Its lockfiles could not be read.`}}function uU(e,t,n=!1){let r=QH();for(let[i,a]of t){let t=`${e}\0${i}\0${n}`,o=GH.get(t);if(o){let e=o.background?WH:UH;e.splice(e.indexOf(o),1),GH.delete(t)}let s=lU(a,null);s&&r.set(t,s),XH({repoId:e,number:i})}}function dU(e,t,n=!1){return QH().get(`${e}\0${t}\0${n}`)??null}var fU=new WeakMap;function pU(e,{lockfiles:t,review:n},r){let i=fU.get(t)??fU.set(t,new Map).get(t),a=i.get(e);if(a&&a.review===n)return a.value;let o=r();return i.set(e,{review:n,value:o}),o}function mU(e){return pU(`added`,e,()=>hU(e))}function hU({lockfiles:e,review:t}){let n=new Map;for(let r of e.flatMap(e=>e.added??[])){let e=`${r.name}@${r.version??``}`,i=n.get(e);if(!i){n.set(e,r);continue}let{reviews:a,baseline:o,reviewed:s,unsupported:c,patched:l,...u}=i;n.set(e,{...u,...r.was||i.was?{was:[...new Set([...i.was??[],...r.was??[]])]}:{},..._U(i,r,t)})}let r=[...n.values()],i=r.filter(e=>!e.was);return{versions:[...i,...r.filter(e=>e.was)],fresh:i.length,updated:r.length-i.length,more:e.some(e=>e.more>0),toReview:t?.toReview??r.filter(e=>vU(e,t)===`wanted`).length}}var gU={unsupported:0,wanted:1,passed:2,baseline:3};function _U(e,t,n){let r=e=>gU[vU(e,n)]??4,{unsupported:i,baseline:a,reviewed:o,reviews:s,rejected:c}=r(t)<r(e)||r(t)===r(e)&&(t.reviews??1/0)<(e.reviews??1/0)?t:e,l=Math.max(e.commented??0,t.commented??0);return{...e.patched||t.patched?{patched:!0}:{},...i?{unsupported:i}:a?{baseline:a}:o?{reviewed:o}:s==null?{}:{reviews:s,...c?{rejected:c}:{},...l>0?{commented:l}:{}}}}function vU(e,t){return t?e.unsupported?`unsupported`:e.baseline?`baseline`:e.reviewed?`passed`:e.reviews==null?null:e.reviews>=t.required&&!e.rejected?`passed`:`wanted`:null}function yU(e){return pU(`unreviewed`,e,()=>bU(e))}function bU({lockfiles:e,review:t}){let n=new Map;for(let t of e.flatMap(e=>e.unreviewed??[])){let e=`${t.name}@${t.version??``}`;n.has(e)||n.set(e,t)}return{versions:[...n.values()],count:t?.unreviewed??n.size+e.reduce((e,t)=>e+(t.moreUnreviewed??0),0)}}function xU(e){return pU(e.cut?`failures-cut`:`failures`,e,()=>SU(e))}function SU({lockfiles:e,cut:t,review:n}){if(!n)return null;let r=new Map;for(let t of e.flatMap(e=>e.unsupported??[])){let e=`${t.source}\0${t.name}@${t.version??``}\0${t.from??``}`;r.has(e)||r.set(e,t)}let i=t=>e.reduce((e,n)=>e+(n[t]??0),0),a={versions:[...r.values()],count:n.unsupported??r.size+i(`moreUnsupported`),unread:e.filter(e=>e.error),unchecked:i(`moreLocked`),cut:t};return a.count>0||a.unread.length>0||a.unchecked>0||t?a:null}var Y=e=>A`<svg viewBox="0 0 16 16" width="14" height="14" aria-hidden="true">${e}</svg>`,CU=j`<circle cx="8" cy="8" r="6.25"/>`,wU=j`<circle cx="4.5" cy="3.5" r="1.6"/><circle cx="4.5" cy="12.5" r="1.6"/><path d="M4.5 5.1v5.8"/><circle cx="11.5" cy="12.5" r="1.6"/>`,TU={issues:{open:Y(j`${CU}<circle class="fill" cx="8" cy="8" r="1.6"/>`),completed:Y(j`${CU}<path d="M5.4 8.3l1.8 1.8 3.4-3.7"/>`),"not-planned":Y(j`${CU}<path d="M3.9 12.1l8.2-8.2"/>`)},pulls:{open:Y(j`${wU}<path d="M11.5 10.9V6.5a2 2 0 0 0-2-2H7.4M8.9 3 7.4 4.5 8.9 6"/>`),draft:Y(j`${wU}<path class="dotted" d="M11.5 10.9V4"/>`),merged:Y(j`<circle cx="4.5" cy="3.5" r="1.6"/><circle cx="4.5" cy="12.5" r="1.6"/><path d="M4.5 5.1v5.8M4.5 5.1c0 2.4 2.4 3.4 5.4 3.4"/><circle cx="11.5" cy="8.5" r="1.6"/>`),closed:Y(j`${wU}<path d="M9.6 3.1l3.8 3.8M13.4 3.1 9.6 6.9"/>`)}},EU=Y(j`<path d="M2.6 3.2h10.8v7.3H8l-3.2 2.6v-2.6H2.6z"/>`),DU={success:[`Checks passed`,Y(j`<path d="M3.5 8.4l2.9 2.9 6.1-6.6"/>`)],failure:[`Checks failed`,Y(j`<path d="M4.2 4.2l7.6 7.6M11.8 4.2l-7.6 7.6"/>`)],pending:[`Checks running`,Y(j`<circle class="fill" cx="8" cy="8" r="3"/>`)]},OU={approved:[`Approved`,Y(j`${CU}<path d="M5.4 8.3l1.8 1.8 3.4-3.7"/>`)],changes:[`Changes requested`,Y(j`<path d="M3.75 1.75h5.5l3 3v9.5h-8.5z"/><path d="M8 4.5v4M6 6.5h4M6 11h4"/>`)],required:[`Review required`,Y(j`<path d="M1.25 8S3.75 3.5 8 3.5 14.75 8 14.75 8 12.25 12.5 8 12.5 1.25 8 1.25 8z"/><circle cx="8" cy="8" r="2"/>`)]},kU=Y(j`<circle cx="4" cy="3.5" r="1.5"/><circle cx="4" cy="12.5" r="1.5"/><circle cx="12" cy="12.5" r="1.5"/><path d="M4 5v6M12 11V6a2 2 0 0 0-2-2H7m1.5-1.5L7 4l1.5 1.5"/>`),AU=Y(j`<circle cx="4" cy="3" r="1.5"/><circle cx="4" cy="13" r="1.5"/><circle cx="12" cy="3" r="1.5"/><path d="M4 4.5v7m0-3h3a5 5 0 0 0 5-4"/>`),jU=Y(j`<circle cx="8" cy="8" r="3"/><path d="M1 8h4m6 0h4"/>`),MU=Y(j`<path d="M8 1.75 2.25 4.5v7L8 14.25l5.75-2.75v-7z"/><path d="M2.25 4.5 8 7.25l5.75-2.75M8 7.25v7"/>`);function NU(e,t){return e===`pulls`?t.state===`merged`?[`merged`,`Merged`]:t.state===`closed`?[`closed`,`Closed`]:t.draft?[`draft`,`Draft`]:[`open`,`Open`]:t.state===`open`?[`open`,`Open`]:t.reason===`not-planned`||t.reason===`duplicate`?[`not-planned`,t.reason===`duplicate`?`Closed as duplicate`:`Closed as not planned`]:[`completed`,`Closed`]}var PU={claude:A`<span class="agent-logo" aria-hidden="true">${wy(`anthropic`)}</span>`,codex:A`<span class="agent-logo" aria-hidden="true">${wy(`openai`)}</span>`,copilot:A`<span class="agent-logo" aria-hidden="true">${wy(`github-copilot`)}</span>`},FU={claude:`Claude`,codex:`Codex`},IU=new Map;function LU(e){for(let t of e)IU.set(t.id,t)}var RU=e=>FU[e]??IU.get(e)?.name??e;function zU(e){if(PU[e])return PU[e];let t=IU.get(e)?.avatar;return t?A`<img class="agent-avatar" src="${`/api/avatar/${t}`}" alt="" width="14" height="14" loading="lazy" decoding="async">`:M}var BU=e=>e.button===0&&!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&!e.altKey;function VU(e){return e.sessions[0]?`https://claude.ai/code/${e.sessions[0]}`:e.tasks[0]?`https://chatgpt.com/codex/tasks/${e.tasks[0]}`:null}function HU(e,t){return t?e.pulls[0]?`https://github.com/${t}/pull/${e.pulls[0].number}`:e.commits[0]?`https://github.com/${t}/commit/${e.commits[0].oid}`:e.branches[0]?UU(t,e.branches[0]):null:null}function UU(e,t){let[n,r]=t.includes(`:`)?[t.slice(0,t.indexOf(`:`)),t.slice(t.indexOf(`:`)+1)]:[null,t],i=r.split(`/`).map(encodeURIComponent).join(`/`);return n?`https://github.com/${encodeURIComponent(n)}/${encodeURIComponent(e.split(`/`)[1]??``)}/tree/${i}`:`https://github.com/${e}/tree/${i}`}var WU=(e,t)=>VU(e)??HU(e,t),GU=`100% 0px`,KU=new WeakMap,qU=new WeakMap,JU=[],YU=!1,XU=new WeakMap;function ZU(e){let t=XU.get(e);if(t===void 0){let n=getComputedStyle(e).overflowY;t=n===`auto`||n===`scroll`||n===`overlay`,XU.set(e,t)}return t}function QU(e){let t=e.parentNode;for(;t;){if(t.nodeType===Node.DOCUMENT_FRAGMENT_NODE){t=t.host??null;continue}if(t.nodeType!==Node.ELEMENT_NODE||t===document.documentElement)return null;if(ZU(t))return t;t=t.parentNode}return null}function $U(e){for(let t of e)qU.get(t.target)?.cb(t.isIntersecting)}function eW(e){let t=e??document,n=KU.get(t);return n||(n=new IntersectionObserver($U,{root:e,rootMargin:GU,threshold:0}),KU.set(t,n)),n}function tW(e,t){let n=qU.get(e);n?.io&&n.io.unobserve(e),qU.set(e,{cb:t,io:null}),JU.push(e),YU||(YU=!0,queueMicrotask(nW))}function nW(){YU=!1;let e=JU;JU=[];for(let t of e){let e=qU.get(t);!e||e.io||(e.io=eW(QU(t)),e.io.observe(t))}}function rW(e){let t=qU.get(e);t&&(t.io?.unobserve(e),qU.delete(e))}var iW=2,aW=50,oW=6e3,sW=6e4,cW=new Map,lW=new Map,uW=[],dW=new Set,fW=null,pW=0,mW=!1,hW=e=>{for(let t of dW)t(e)};function gW(){let e=F.managedSession?`${F.managedSession.id}\0${F.managedSession.role}`:null;return e!==fW&&(cW.clear(),lW.clear(),uW.length=0,fW=e),cW}var _W=e=>Number.isSafeInteger(e)&&e>=0?e:null,vW=e=>_W(e?.additions)===null||_W(e?.deletions)===null?null:{additions:e.additions,deletions:e.deletions},yW=(e,t)=>({status:`ready`,until:1/0,...e,typeless:vW(t.typeless),binary:t.binary===!0}),bW=e=>({status:`error`,until:Date.now()+sW,error:e});function xW(e,t,n){let r=gW(),i=`${e}\0${t}\0${n}`,a=r.get(i);if(a&&Date.now()<a.until)return a;let o={status:`loading`,until:1/0};return r.set(i,o),lW.set(i,{asked:[e,t,n],loading:o}),mW||(mW=!0,globalThis.requestAnimationFrame?requestAnimationFrame(CW):setTimeout(CW,0)),o}function SW(e){let t=gW();for(let[n,r,i,a]of e){let e=vW(a),o=`${n}\0${r}\0${i}`;!e||t.get(o)?.status===`ready`||(lW.delete(o),t.set(o,yW(e,a)),hW(o))}}function CW(){mW=!1;let e=0,t=[];for(let[n,r]of lW){let i=encodeURIComponent(JSON.stringify(r.asked)).length+3;(t.length===aW||t.length>0&&e+i>oW)&&(uW.push(t),t=[],e=0),t.push({key:n,...r}),e+=i}t.length>0&&uW.push(t),lW.clear(),wW()}function wW(){for(;pW<iW&&uW.length>0;){let e=uW.shift().filter(({key:e,loading:t})=>cW.get(e)===t);e.length!==0&&(pW++,EW(e).finally(TW))}}function TW(){pW--,wW()}function EW(e){let t=cW,n=new Map(e.map(({key:e,loading:t})=>[e,t])),r=(e,r)=>{n.has(e)&&(t.get(e)===n.get(e)&&(r?t.set(e,r):t.delete(e)),n.delete(e),hW(e))};return jb(e.map(e=>e.asked),e=>{let t=vW(e);r(`${e.name}\0${e.version}\0${e.otherVersion}`,typeof e.error==`string`?bW(e.error):t?yW(t,e):bW(`The server answered with no lines.`))}).then(()=>{for(let e of[...n.keys()])r(e,bW(`The server answered with none of it.`));return null},e=>{for(let t of[...n.keys()])r(t,e?.name===`AbortError`?null:bW(e?.message||`Its lines couldn’t be counted.`))})}var DW=e=>e.was?.find(t=>t!==e.version)??`(empty)`,OW=(e,t)=>A`<span class="is-added">+${e.toLocaleString(`en-US`)}</span> <span class="is-deleted">−${t.toLocaleString(`en-US`)}</span>`,kW=class extends pa{static properties={name:{attribute:!1},version:{attribute:!1},base:{attribute:!1}};createRenderRoot(){return this}constructor(){super(),this._near=!1,this._notify=e=>{this._near&&(!e||e===`${this.name}\0${this.version}\0${this.base??`(empty)`}`)&&this.requestUpdate()}}connectedCallback(){super.connectedCallback(),this._watch()}disconnectedCallback(){super.disconnectedCallback(),this._unwatch()}_watch(){dW.add(this._notify),!this._near&&tW(this,e=>{!e||this._near||(this._near=!0,rW(this),this.requestUpdate())})}_unwatch(){dW.delete(this._notify),rW(this)}render(){if(!this._near||!this.name||!this.version)return M;let e=xW(this.name,this.version,this.base??`(empty)`),t=this.base&&this.base!==`(empty)`?`against ${this.base}`:`the whole package`;return e.status===`loading`?A`<span class="npm-delta is-loading" aria-label="Counting its lines">…</span>`:e.status===`error`?A`<span class="npm-delta is-error" data-tooltip="${e.error}">?</span>`:A`<span class="npm-delta" data-tooltip="${`Lines it adds and removes, ${t}`}">${OW(e.additions,e.deletions)}${e.binary?A`<span class="npm-delta-binary" data-tooltip="Binary files changed too, which no line counts">, binary</span>`:M}${e.typeless?A`<span class="npm-delta-typeless" data-tooltip="Leaving out the declaration files changed in types alone">(${OW(e.typeless.additions,e.typeless.deletions)} -types)</span>`:M}</span>`}};customElements.get(`npm-delta`)||customElements.define(`npm-delta`,kW);var AW=class extends pa{static properties={text:{attribute:!1},label:{attribute:!1},_copied:{state:!0},_error:{state:!0}};createRenderRoot(){return this}constructor(){super(),this.text=null,this.label=`Copy dependency review`}disconnectedCallback(){super.disconnectedCallback(),clearTimeout(this._timer)}async _copy(){if(this._copyable()){this._error=!1;try{await navigator.clipboard.writeText(this.text),this._copied=!0,clearTimeout(this._timer),this._timer=setTimeout(()=>{this._copied=!1},2e3)}catch{this._error=!0}}}_copyable(){return typeof this.text==`string`&&this.text.trim()!==``}render(){return this._copyable()?A`<button type="button" class="${`bundle-code-copy-path dependency-review-copy-button${this._copied?` copied`:``}`}" aria-label="${this.label}" data-tooltip="${this.label}" @click="${()=>this._copy()}">${cw}</button> ${this._error?A`<span role="alert">Could not copy to the clipboard.</span>`:M}`:M}};customElements.define(`dependency-review-copy`,AW);var jW=12e4,MW=3e4,NW=3,PW=12,FW=48,IW=[[`pulls`,`Pull requests`],[`versions`,`Versions`],[`branch`,`Default branch`],[`reviews`,`Reviews`]],LW=(e,t)=>e.repo.name<t.repo.name?-1:e.repo.name>t.repo.name?1:t.item.number-e.item.number,RW=e=>(t,n)=>(n.item[e]??0)-(t.item[e]??0)||LW(t,n),zW=(e,t)=>+(e.size===0)-(t.size===0)||e.size-t.size||e.others-t.others||LW(e,t),BW={newest:[`Newest`,RW(`createdAt`)],updated:[`Recently updated`,RW(`updatedAt`)],fewest:[`Fewest to review`,zW]},VW={status:`loading`,until:1/0},HW=new Map,UW=new Set,WW=new Map,GW=new Map,KW=null,qW=!1,JW=()=>{for(let e of UW)e()};function YW(){HW.clear();for(let e of WW.keys())e.abort();WW.clear()}function XW(){qW||(qW=!0,queueMicrotask(()=>{qW=!1;let e=new Set(GW.values());for(let[t,n]of WW)e.has(n)||t.abort()}))}globalThis.addEventListener?.(`dependency-review-changed`,()=>{YW(),JW()});function ZW(){let e=F.managedSession?`${F.managedSession.id}\0${F.managedSession.role}`:null;return e!==KW&&(YW(),KW=e),HW}function QW(e,t){let n=ZW(),r=[],i=t.map(e=>{let t=n.get(e);if(t&&Date.now()<t.until)return t;let i=t?.status===`ready`?{...t,until:1/0,telling:null,refreshing:!0}:{status:`loading`,until:1/0};return n.set(e,i),r.push(e),i});return r.length>0&&$W(e,r,r.length===t.length?null:r,NW),i}function $W(e,t,n,r){let i=HW,a=new Map(t.map(e=>[e,i.get(e)])),o=(e,t)=>{i.get(e)===a.get(e)&&i.set(e,t),i.get(e)===t&&t.telling?a.set(e,t):a.delete(e)},s=new AbortController;WW.set(s,e);let c=null;Ab(e,e=>{s.signal.aborted||(typeof e.done==`boolean`?c=e.done?[]:Array.isArray(e.unread)?e.unread:[]:a.has(e.repoId)&&(eG(e,a.get(e.repoId),t=>o(e.repoId,t)),JW()))},{repoIds:n,signal:s.signal}).then(()=>{let t=(c??[]).filter(e=>a.has(e)),n=t.length>0&&r>0;for(let[e,r]of[...a])n&&t.includes(e)||o(e,nG(e,r,c===null?`The server’s answer ended short.`:t.includes(e)?`Reading its pull requests took too long.`:null));return n&&$W(e,t,t,r-1),null},e=>{for(let[t,n]of[...a])e?.name===`AbortError`?i.get(t)===n&&(n.status===`ready`?i.set(t,{...n,until:0,telling:null}):i.delete(t)):o(t,nG(t,n,e?.message||`It couldn’t be read.`))}).finally(()=>{WW.delete(s),JW()})}function eG(e,t,n){if(Array.isArray(e.deltas)&&SW(e.deltas),typeof e.error==`string`)n({status:`error`,until:Date.now()+MW,error:e.error});else if(e.branch===null)n({status:`ready`,until:Date.now()+jW,branch:null});else if(e.branch){let t;try{t=iU(e.branch)}catch(e){n({status:`error`,until:Date.now()+MW,error:e.message});return}let r=(Array.isArray(e.pulls?.items)?e.pulls.items:[]).filter(e=>Number.isSafeInteger(e?.number)&&e.number>0);n(tG({status:`ready`,branch:t,pulls:{items:r,more:e.pulls?.more===!0}},new Set(r.filter($H).map(e=>e.number))))}else e.dependencies instanceof Map&&t.telling&&(uU(e.repoId,e.dependencies,!0),n(tG(t,new Set([...t.telling].filter(t=>!e.dependencies.has(t))))))}var tG=(e,t)=>t.size>0?{...e,until:1/0,telling:t}:{...e,until:Date.now()+jW,telling:null};function nG(e,t,n){return t.telling?(uU(e,new Map([...t.telling].map(e=>[e,Error(n??`The server’s answer ended short.`)])),!0),{...t,until:Date.now()+MW,telling:null}):n?{status:`error`,until:Date.now()+MW,error:n}:{status:`ready`,until:Date.now()+jW,branch:null}}var rG=(e,t)=>`${e.toLocaleString(`en-US`)} ${t}${e===1?``:`s`}`,iG=e=>`${e.name}@${e.version??``}${e.patched?`+patch`:``}`,aG=({repo:e,item:t})=>`${e.name}#${t.number}`,oG={git:`From git, which isn’t reviewed`,tarball:`A tarball not npm’s registry’s of its version, which isn’t reviewed`,integrity:`Locked with no integrity, which its reviews are held to`};function sG(e,t){let n=vU(e,t);return n===`unsupported`?[`can’t review`,`is-failed`,oG[e.unsupported]]:e.rejected?[`rejected`,`is-failed`,`A reviewer rejects it: it wants their newer accepting review`]:e.patched&&n===`wanted`?[`patched`,`is-wanted`,`Reviews here pass no patch: the server’s reviewed dependencies, or reviews of its patch in the pull request’s comments, pass it`]:n===`wanted`?[`${e.reviews}/${t.required}`,`is-wanted`,`${rG(e.reviews,`review`)} of ${t.required} required${e.commented?`; ${rG(e.commented,`reviewer`)} in its comments, which count here alone`:``}`]:null}function cG(e,t){let[n,r,i]=sG(e,t)??[];return n?A`<span class="team-deps-review ${r}" data-tooltip="${i??M}">${n}</span>`:M}function lG(e,t,{others:n,adders:r,elsewhere:i,above:a,added:o}){return[`${e.name}${e.version?`@${e.version}`:``}${e.patched?` (patched)`:``}`,o?`Present: ${e.was?.join(`, `)||`none, new`}`:null,e.source!==`registry`&&e.from?`From ${e.from}`:null,sG(e,t)?.[2],i.length>0?`In review in the comments of ${i.join(`, `)}`:null,a?`Listed under ${a} above`:null,n.length>0?`${r?`Added by`:`Also added by`} ${n.join(`, `)}`:null].filter(Boolean).join(`
186
- `)}function uG(e,t,{others:n=[],adders:r=!1,elsewhere:i=[],above:a=null,added:o=!1}={}){let s=e.source===`registry`&&e.version,c=e.was?.find(t=>t!==e.version),l=t?.canReview&&!e.patched&&vU(e,t)!==`unsupported`,u=s?oi({view:`npm`,packageName:e.name,packageSpec:e.version,...l?{bundleTab:`review`,...c?{reviewPackage:e.name,reviewSpec:c}:{}}:{}}):null,d=lG(e,t,{others:n,adders:r,elsewhere:i,above:a,added:o}),f=A`${MU}<span class="team-deps-name">${e.name}${e.version?A`<span class="team-deps-version">@${e.version}</span>`:M}</span> ${s&&vU(e,t)===`wanted`?A`<npm-delta .name="${e.name}" .version="${e.version}" .base="${DW(e)}"></npm-delta>`:M} ${cG(e,t)} ${i.length>0?A`<span class="team-deps-elsewhere">${i[0]}${i.length>1?` +${i.length-1}`:``}</span>`:M} ${a?A`<span class="team-deps-above">in ${a} above</span>`:M} ${n.length>0?A`<span class="team-deps-also" data-tooltip="${`Added by ${n.join(`, `)}${r?``:` too`}`}">${r?`${n[0]}${n.length>1?` +${n.length-1}`:``}`:`+${n.length}`}</span>`:M}`;return A`<li>${u?A`<a class="team-deps-row" href="${u}" target="_blank" rel="noopener noreferrer" data-tooltip="${d}">${f}</a>`:A`<span class="team-deps-row" data-tooltip="${d}">${f}</span>`}</li>`}var dG=Y(j`<path d="m6 4 4 4-4 4"/>`),fG=class extends Wh{static properties={repositories:{attribute:!1},team:{attribute:!1},_open:{state:!0}};createRenderRoot(){return this}constructor(){super(),this.repositories=[],this.team=null,this._open=new Set,this._notify=()=>this.requestUpdate()}pick(e,{push:t=!0}={}){F.teamDependenciesTab=e;let n=fi({view:`workspace-dependencies`,teamId:this.team,dependencyTab:e},F.managedTeams);t?G?.pushRoute(n):G?.replaceRoute(n)}updated(){this._shown&&this._shown!==F.teamDependenciesTab&&this.pick(this._shown,{push:!1})}toggle(e){let t=new Set(this._open);t.delete(e)||t.add(e),this._open=t}connectedCallback(){super.connectedCallback(),UW.add(this._notify),this._unsubscribe=YH(this._notify),GW.set(this,this.team)}disconnectedCallback(){super.disconnectedCallback(),UW.delete(this._notify),this._unsubscribe?.(),GW.delete(this),XW()}open(e,{repo:t,item:n}){e.preventDefault(),Te({repository:{repoId:t.repoId,repo:t.name},target:{number:n.number,preview:{...n,kind:`pulls`}}})}rows(e,t,n,r=PW){if(t.length===0)return M;let i=this._open.has(e);return A`<ul class="team-deps-versions">${(i?t:t.slice(0,r)).map(n)}</ul>${t.length>r?A`<button type="button" class="team-deps-more" aria-expanded="${String(i)}" @click="${()=>this.toggle(e)}">${dG}${i?`Show fewer`:`and ${(t.length-r).toLocaleString(`en-US`)} more`}</button>`:M}`}disclosed(e,t,n,r,i=0){let a=this._open.has(e);return A`<div class="team-deps-disclosed"><button type="button" class="team-deps-more" aria-expanded="${String(a)}" @click="${()=>this.toggle(e)}">${dG}${t}</button> ${a?A`${this.rows(e,n,r,FW)}${i>0?A`<p class="team-deps-quiet">and ${i.toLocaleString(`en-US`)} more, not listed</p>`:M}`:M}</div>`}render(){this.isConnected&&GW.get(this)!==this.team&&(GW.has(this)&&XW(),GW.set(this,this.team));let e=[...new Map((this.repositories??[]).map(e=>[e.repoId,e])).values()],t=QW(this.team,e.map(e=>e.repoId)),n=e.map((e,n)=>({repo:e,read:t[n]})),r=n.filter(({read:e})=>e.status===`ready`&&e.branch),i=r.flatMap(({repo:e,read:t})=>t.pulls.items.filter($H).map(t=>({repo:e,item:t,entry:dU(e.repoId,t.number,!0)??VW}))),a=i.filter(({entry:e})=>e.status===`ready`&&e.review).map(e=>{let t=mU(e.entry).versions.filter(t=>[`wanted`,`unsupported`].includes(vU(t,e.entry.review))),n=t.filter(t=>vU(t,e.entry.review)===`wanted`).length,r=Math.max(e.entry.review.toReview??n,n);return{...e,wanted:t,failed:xU(e.entry),toReview:r,untold:r-n,size:t.length+r-n,others:yU(e.entry).count}}).filter(e=>e.size>0||e.others>0||e.failed).toSorted(zW),o=Object.hasOwn(BW,F.teamDependenciesSort)?F.teamDependenciesSort:`newest`,s=o===`fewest`?a:a.toSorted(BW[o][1]),c=r.filter(({read:e})=>e.pulls.more),l=new Map;for(let e of a)for(let t of e.wanted){let n=l.get(iG(t));n?n.pulls.push(e):l.set(iG(t),{pkg:t,pulls:[e]})}let u=n.some(({read:e})=>e.status===`loading`)||i.some(({entry:e})=>e.status===`loading`),d=[...n.filter(({read:e})=>e.status===`error`).map(({repo:e,read:t})=>[e.name,t.error]),...i.filter(({entry:e})=>e.status===`error`).map(e=>[aG(e),e.entry.error])],f=r.flatMap(({repo:e,read:t})=>{let{count:n}=yU(t.branch),r=xU(t.branch);return n>0||r?[{repo:e,read:t,count:n+(r?.count??0)}]:[]}),p=new Map;for(let e of i.filter(({entry:e})=>e.status===`ready`&&e.review))for(let t of[...mU(e.entry).versions,...yU(e.entry).versions])t.commented>0&&!t.patched&&(p.get(iG(t))??p.set(iG(t),new Set).get(iG(t))).add(aG(e));let m=new Set(n.filter(({read:e})=>e.status!==`ready`||e.branch).map(({repo:e})=>e.name.split(`/`)[0])).size===1?e=>e.slice(e.indexOf(`/`)+1):e=>e,h={elsewhere:(e,t=null)=>e.patched?[]:[...p.get(iG(e))??[]].filter(e=>!t||e!==aG(t)).map(m),named:e=>m(aG(e)),shorten:m},g=d.map(([e,t])=>`${m(e)}: ${t}`),_=F.teamDependenciesTab,v=IW.filter(([e])=>e!==`branch`||f.length>0||u&&_===`branch`),y=v.some(([e])=>e===_)?_:`pulls`;this._shown=y;let b={pulls:a.length,versions:l.size,branch:f.reduce((e,{count:t})=>e+t,0)};return A`<div class="team-deps">${$x({tabs:v.map(([e,t])=>({id:e,label:A`${t}${b[e]==null||u&&b[e]===0?M:A`<span class="team-deps-tab-n">${b[e].toLocaleString(`en-US`)}</span>`}`})),current:y,prefix:`team-deps`,select:e=>this.pick(e)})}<div class="team-deps-panel" role="tabpanel" id="${`team-deps-panel-${y}`}" aria-labelledby="${`team-deps-tab-${y}`}">${y===`reviews`?QL(()=>A`<dependency-review-list .session="${F.managedSession}" .team="${this.team}"></dependency-review-list>`):A`${u?A`<p class="team-deps-quiet" role="status">Reading their pull requests…</p>`:M} ${g.length===1?A`<p class="team-deps-quiet" role="alert">${g[0]}</p>`:g.length>1?A`<p class="team-deps-quiet" role="alert" data-tooltip="${g.join(`
187
- `)}">${rG(g.length,`repository or pull request`)} couldn’t be read.</p>`:M} ${!u&&n.length>0&&r.length===0&&d.length===0?A`<p class="workspace-content-empty">None of this team’s repositories reviews its dependencies for you.</p>`:M} ${y===`branch`?M:c.map(({repo:e,read:t})=>A`<p class="team-deps-quiet" role="alert">Only ${m(e.name)}’s ${rG(t.pulls.items.length,`open pull request`)} updated latest are checked; its others aren’t.</p>`)} ${r.length===0?M:y===`pulls`?this.renderPulls(s,o,l,u,c.length>0,h):y===`versions`?this.renderVersions(l,u,h):f.map(({repo:e,read:t})=>this.renderBranch(e,t,h))}`}</div></div>`}renderPulls(e,t,n,r,i,{elsewhere:a,named:o}){if(e.length===0)return r?M:A`<p class="workspace-content-empty">No open pull request${i?` checked`:``} wants its dependencies reviewed.</p>`;let s=new Map,c=e=>t=>{let r=s.get(iG(t))===e?null:s.get(iG(t));return uG(t,e.entry.review,{others:(n.get(iG(t))?.pulls??[]).filter(t=>t!==e&&t!==r).map(o),elsewhere:a(t,e),above:r&&o(r),added:!0})};return A`${e.length>1?A`<div class="team-deps-sort"><select aria-label="Sort pull requests" .value="${Ue(t)}" @change="${e=>{F.teamDependenciesSort=e.target.value}}">${Object.entries(BW).map(([e,[n]])=>A`<option value="${e}" ?selected="${e===t}">${n}</option>`)}</select></div>`:M}<ol class="team-deps-pulls" aria-label="Pull requests wanting reviews">${e.map(e=>{let t=e.wanted.filter(e=>!s.has(iG(e))),n=e.wanted.filter(e=>s.has(iG(e)));for(let n of t)s.set(iG(n),e);let r=aG(e),i=yU(e.entry),l=`https://github.com/${e.repo.name}/pull/${e.item.number}`;return A`<li class="team-deps-pull"><div class="team-deps-pull-top"><a class="team-deps-pull-head" href="${l}" target="_blank" rel="noopener noreferrer" @click="${t=>this.open(t,e)}"><span class="team-deps-pull-name">${o(e)}</span><span class="team-deps-pull-title">${e.item.title||`(no title)`}</span> <span class="${`team-deps-count${e.failed?` is-failed`:``}`}">${e.failed?`review fails`:e.size>0?`${rG(e.toReview,`version`)} to review`:`${rG(e.others,`other version`)} unreviewed`}</span> </a>${e.entry.formatted?A`<dependency-review-copy .text="${e.entry.formatted}" .label="${`Copy your dependency reviews of its versions`}"></dependency-review-copy>`:M}</div>${this.rows(`${r}:own`,t,c(e))} ${e.untold>0?A`<p class="team-deps-quiet">and ${rG(e.untold,`more version`)} past those listed</p>`:M} ${n.length>0?A`<ul class="team-deps-versions is-above">${n.map(c(e))}</ul>`:M} ${e.others>0?this.disclosed(`${r}:others`,e.size>0||e.failed?`${rG(e.others,`other version`)} its lockfiles lock ${e.others===1?`wants`:`want`} reviews`:`Its own versions pass; ${rG(e.others,`version`)} its lockfiles locked before ${e.others===1?`wants`:`want`} reviews`,i.versions,t=>uG(t,e.entry.review,{elsewhere:a(t,e)}),e.others-i.versions.length):M}</li>`})}</ol>`}renderVersions(e,t,{elsewhere:n,named:r}){return e.size===0?t?M:A`<p class="workspace-content-empty">No version an open pull request adds wants a review.</p>`:A`<section class="team-deps-section" aria-label="Versions to review">${this.rows(`versions`,[...e.values()],({pkg:e,pulls:t})=>uG(e,t[0].entry.review,{others:t.map(r),adders:!0,elsewhere:n(e),added:!0}),1/0)}</section>`}renderBranch(e,t,{elsewhere:n,shorten:r}){let{versions:i,count:a}=yU(t.branch),o=xU(t.branch),s=o?.unread.flatMap(e=>e.paths)??[],c=[...i,...o?.versions??[]];return A`<section class="team-deps-section" aria-label="${`${r(e.name)}\u2019s default branch`}"><h2>${r(e.name)}</h2><p class="team-deps-quiet">${rG(a,`version`)} unreviewed${o?.count?`, ${o.count.toLocaleString(`en-US`)} can\u2019t be reviewed`:``}${s.length>0?`, ${rG(s.length,`lockfile`)} unread`:``}</p>${s.length>0?A`<p class="team-deps-quiet" role="alert">Unread, so what ${s.length===1?`it locks isn’t`:`they lock aren’t`} checked: ${s.map((e,t)=>A`${t>0?`, `:``}<code>${e}</code>`)}</p>`:M} ${this.rows(`branch:${e.repoId}`,c,e=>uG(e,t.branch.review,{elsewhere:n(e)}),FW)} ${a>i.length?A`<p class="team-deps-quiet">and ${(a-i.length).toLocaleString(`en-US`)} more, not listed</p>`:M}</section>`}};customElements.define(`team-dependencies`,fG);var pG=null;function mG(e){let t=pG=document.startViewTransition(e);return t.ready.catch(()=>{}),t.finished.finally(()=>{pG===t&&(pG=null)}).catch(()=>{}),t}function hG(e){let t=null;return n=>{t!==null&&t!==n&&pG?.skipTransition(),t=n,e()}}var gG=null;function _G(e){return e.some(e=>e._managedReportId&&!e.tree&&e.treeFiles>0)}function vG(e){let t=js(F.reports),n=F.currentManagedTeam;return!n||!_G(t)?!1:gG===t||(gG=t,yG(t,n,F.managedTeams.find(e=>e.id===n)?.reports.find(e=>e.id===F.currentManagedReport&&e.visible===!1)?.id??null,e),!0)}async function yG(e,t,n,r){let i=await yx(t,{reportId:n});if(gG===e&&(gG=null),js(F.reports)===e&&F.currentManagedTeam===t){if(!i){jx(`Could not load the report files. Please try again.`),r(!1);return}for(let t of e)t._managedReportId&&!t.tree&&t.treeFiles>0&&(t.tree=i.get(t._managedReportId)??{});r(!0)}}function bG(){z.classList.add(`active`),Zm.classList.add(`hidden`)}function xG(){let e=pr(F.reports);if(!e)return null;let t=Object.keys(e),n=$g().filter(e=>Bg(e).commonTriage===F.shownTriage),r=dr(n,F.severityMode),i=hr(e,r),a=new Map,o=new Map,s=new Map;for(let e of n)for(let t of e){let e=O(t,F.severityMode);a.has(t.file)||a.set(t.file,new Set),a.get(t.file).add(e);let n=U(t)?.color??`none`;o.has(t.file)||o.set(t.file,new Set),o.get(t.file).add(n),s.has(t.file)||s.set(t.file,[]),s.get(t.file).push({severity:e,color:n})}let c;return w.focusedPkg?(c=t.filter(e=>(br(e)??`__own__`)===w.focusedPkg),w.showAll||(c=c.filter(e=>_r(e,r,i)))):c=w.showAll?t:t.filter(e=>_r(e,r,i)),{treeData:e,files:c,ownCounts:r,transitiveCounts:i,severitySets:a,colorSets:o,fileFindings:s,ownSourceFiles:Sr(c)}}function SG(){let e=ST();if(!e)return;let t=xG();if(!t)return;let n=F.currentView===`bundles`;e.refreshSidebar(t,{isBundleContext:n,findingsJump:!(n&&I())})}function CG(){let e=ST();if(!e)return;let t=xG();t&&e.refreshTopPkgs(t)}function wG(e){return`${Oi[e]??e} findings`}function TG(e,t,n){return n?A`<repo-chip url="${n}"></repo-chip>`:I()?M:F.currentWorkspace?t?A`<repo-chip url="${t}"></repo-chip>`:M:e?A`<repo-chip url="${F.repoUrl}" editable ?editing="${F.repoEditing}" ?empty="${!F.repoUrl}"></repo-chip>`:t?A`<repo-chip url="${t}"></repo-chip>`:M}function EG(e,t,n,r,i){let a=e.length,o=new Set(F.reports.map(e=>e.source)),s=o.size===1?[...o][0]:null,c=F.currentWorkspace?R().find(e=>e.id===F.currentWorkspace):null,l=DH(F,c?[c]:[],Ru),u=c?`Workspace: ${c.name}`:s?wG(s):`Findings`,d=s&&Wx[s]?s:`default`,f=k(Wx[d]),p=A`<svg class="file-icon" viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M14 3H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"/><path d="M14 3v6h6"/></svg>`,m=M;if(l)m=PH(l,`reports`,F.currentView);else if(t.length===1){let e=x(t[0]);m=A`<button type="button" class="file-chip" data-copy-report="${e}">${f}<span>${e}</span></button>`}else t.length>1&&(m=A`<button type="button" class="file-chip" data-copy-report="${t.map(x).join(`
188
- `)}">${p}<span>${t.length} reports</span></button>`);let h=`${a} ${`finding${a===1?``:`s`}`}`,g=F.currentWorkspace?[]:SK(!!s),_=M;if(a>0){let t={};for(let n of e){let e=O(Mg(n),F.severityMode);e&&(t[e]=(t[e]||0)+1)}let n=Ai.filter(e=>t[e]>0);n.length>0&&(_=A`<span class="status-bar" aria-hidden="true">${n.map(e=>{let n=`${t[e]} ${e.replaceAll(`_`,` `)}`;return A`<span class="${`status-seg sev-${e}`}" style="${E({flexGrow:t[e]})}" data-tooltip="${n}"></span>`})}</span>`)}if(l?.scope===`team`)return jH(l,F.currentView,{findings:a,statusBar:_});let v=new Set(F.reports.map(e=>e.repo??null)),y=TG(n,r,v.size===1?[...v][0]:null),b=A`<span class="sep" aria-hidden="true"></span>`,ee=l?M:FH(i,F.currentView);return A`<header class="page-head"><div class="page-title"><h1>${l?NH(l,F.currentView):u}${m}${PH(l,`bundles`,F.currentView)}${y}${ee}${kG()}</h1><div class="meta-row"><span>${h}</span> ${_} ${g.length>0?A`${b}${g.map(e=>A`<span class="tag">${e}</span>`)}`:M}</div></div></header>`}var{suggestSync:DG}=vH({open:e=>Me({names:e})}),OG=new Set([`findings`,`files`,`links`]);function kG(){if(V.status!==`online`||!OG.has(F.currentView))return M;let e=gH();if(!e)return M;let{workspaceId:t,fileNames:n,mode:r}=e,i=bh(t);if(i.length>0&&DG(t,i,{onSync:()=>AG(t,r,n),retry:X}),r===`single`){let e=n[0];if(i.includes(e))return jG({status:`differ`,label:`differs`,title:`Your copy of "${e}" doesn't match its cloud copy. Click to re-check and bring them in line.`,onClick:()=>AG(t,r,n)});let a=ph(t,e)?`cloud`:`local`;return jG({status:a,label:a,title:a===`cloud`?`Synced to remote`:`Local only — click to upload`,onClick:a===`local`?()=>FG({workspaceId:t,items:[{kind:`report`,identifier:e}]}):null})}let a=R().find(e=>e.id===t),o=a&&Array.isArray(a.bundles)?a.bundles:[],s=yh(t),c=n.filter(e=>!ph(t,e)),l=o.filter(e=>!mh(t,e)),u=[...c.map(e=>({kind:`report`,identifier:e})),...l.map(e=>({kind:`bundle`,identifier:e}))];if(s===0&&u.length===0)return M;let d=[s>0?`${s} in cloud`:null,u.length>0?`${u.length} local-only`:null,i.length>0?`${i.length} differ from the cloud`:null,s>0?`click "cloud" to re-check storage`:null,u.length>0?`click "local" to upload ${u.length}`:null].filter(Boolean).join(` — `),f=i.length===1?`Your copy of "${i[0]}" doesn't match its cloud copy. Click to re-check and bring them in line.`:`${i.length} reports don't match their cloud copies. Click to re-check and bring them in line.`,p=i.length===0?M:A`<button type="button" class="sync-badge-chunk differ" data-tooltip="${f}" aria-label="${`${i.length} report${i.length===1?``:`s`} differ from the cloud \u2014 re-check`}" @click="${e=>{e.stopPropagation(),AG(t,r,n)}}">${NG()}<span>${i.length} differ</span></button>`,m=s===0?M:A`<button type="button" class="sync-badge-chunk cloud" aria-label="${`re-check ${s} cloud object${s===1?``:`s`}`}" @click="${e=>{e.stopPropagation(),ve({workspaceId:t,cloudCount:s,localFileNames:n,localBundles:o})}}">${PG()}<span>${s} cloud</span></button>`,h=u.length===0?M:A`<button type="button" class="sync-badge-chunk local" aria-label="${`${u.length} items not yet uploaded \u2014 open upload dialog`}" @click="${e=>{e.stopPropagation(),FG({workspaceId:t,items:u})}}">${MG()}<span>${u.length} local</span></button>`,g=A`<span class="sync-badge-divider" aria-hidden="true"></span>`,_=[m,p,h].filter(e=>e!==M);return A`<div class="report-sync-badge report-sync-badge-clickable" data-status="mixed" data-tooltip="${d}">${_.map((e,t)=>t===0?e:A`${g}${e}`)}</div>`}function AG(e,t,n){let r=R().find(t=>t.id===e),i=t===`single`?hH(r?.reports??[],F.storedFiles??[],n):n,a=r&&Array.isArray(r.bundles)?r.bundles:[];return ve({workspaceId:e,cloudCount:yh(e),localFileNames:i,localBundles:a,autoRun:!0})}function jG({status:e,label:t,title:n,onClick:r}){let i=e===`cloud`?PG():e===`differ`?NG():MG(),a=A`<span class="sync-badge-label">${t}</span>`;return typeof r==`function`?A`<button type="button" class="report-sync-badge report-sync-badge-clickable" data-status="${e}" data-tooltip="${n}" aria-label="${`report sync status: ${t}`}" @click="${r}">${i}${a}</button>`:A`<span class="report-sync-badge" data-status="${e}" data-tooltip="${n}" aria-label="${`report sync status: ${t}`}">${i}${a}</span>`}function MG(){return A`<svg class="sync-badge-icon" viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="2" y="14" width="20" height="8" rx="2" ry="2"/><line x1="6" y1="18" x2="6.01" y2="18"/><line x1="10" y1="18" x2="10.01" y2="18"/><path d="M6 14V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v10"/></svg>`}function NG(){return A`<svg class="sync-badge-icon" viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 4v14"/><path d="M3 14l4 4 4-4"/><path d="M17 20V6"/><path d="M13 10l4-4 4 4"/></svg>`}function PG(){return A`<svg class="sync-badge-icon" viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M17.5 19a4.5 4.5 0 1 0-1-8.9A6 6 0 0 0 5.07 13.5 4 4 0 0 0 6 21h11.5z"/></svg>`}async function FG({workspaceId:e,items:t}){let n=t.filter(e=>e.kind===`bundle`);if(n.length>0){let e=await ol(),t=new Map(e.map(e=>[e.integrity,e.name]));for(let e of n){let n=t.get(e.identifier);n&&(e.label=n)}}await Pe({workspaceId:e,items:t})}function IG(e){return Object.values(e).some(e=>e>0)||F.filterSeverities.size>0?A`<severity-chips .counts="${e}"></severity-chips>`:M}function LG(e){return Object.values(e).some(e=>e>0)||F.filterColors.size>0?A`<triage-filter .counts="${e}"></triage-filter>`:M}function RG(e,t,n,r,i,a,o,s){let{showSource:c,showConfidence:l,showPriority:u,showGraphMode:d,showFileSort:f,kanbanMode:p,showRepo:m,hasComment:h,hasFix:g,hasFlagged:_,hasDuplicates:v,hasCrossContext:y,hasAppStacked:b,showSecurity:ee,showSeverityMode:te,revalidateOptions:ne,showPartial:re,canDropLayer:ie,canDetailLayer:ae,canUpstreamLens:oe,confirmedLocked:se}=a;return A`<div class="toolbar"><div class="toolbar-row"><view-mode-buttons modes="${d?`kanban,focus,table,list,grouped,graph`:`kanban,focus,table,list,grouped`}"></view-mode-buttons><findings-sort ?show-file="${f}" ?show-confidence="${l}" ?show-priority="${u}"></findings-sort>${c?A`<source-filter></source-filter>`:M} ${!se&&(l||ne.length>0)?A`<conf-filter ?range-disabled="${!l}" .revalidateOptions="${ne}" ?has-partial="${re}"></conf-filter>`:M} ${h||g||_||F.filterComment||F.filterFix||F.filterFlagged?A`<annotation-filter .hasComment="${h}" .hasFix="${g}" .hasFlagged="${_}"></annotation-filter>`:M} ${p?M:A`<triage-selector .counts="${n}"></triage-selector>`}<div class="toolbar-end"><download-button></download-button>${!F.currentWorkspace&&(v||F.filterDuplicates)||y||b||ee||F.filterCrossContext||F.filterAppStacked?A`<annotation-filter group="context" .hasDuplicates="${v}" .hasCrossContext="${y}" .hasAppStacked="${b}" .hasSecurityContrast="${ee}"></annotation-filter>`:M} ${ie||F.revalidateConflicts.size>0?A`<revalidation-switch ?can-drop="${ie}" ?can-detail="${ae}" ?can-upstream="${oe&&ie}" .upstreamDisabled="${F.showRevalidation===!1&&ie}"></revalidation-switch>`:M}</div></div><div class="toolbar-row sev-row">${te?A`<severity-mode-switch></severity-mode-switch>`:M} ${IG(r)} ${o.analyzers.length>1||o.models.length>1?A`<analyzer-select .analyzers="${o.analyzers}" .models="${o.models}" .groups="${o.groups}"></analyzer-select>`:M} ${m&&s.length>1?A`<repo-filter .options="${s}"></repo-filter>`:M} ${LG(i)}<div class="search-row"><toolbar-search kind="findings"></toolbar-search><span class="result-count">${e} of ${t}</span></div></div></div>`}function zG(e,t){return e.map(e=>({p:Mg(e),g:e})).toSorted((e,n)=>t(e.p,n.p)).map(e=>e.g)}var BG=(e,t)=>e.file.localeCompare(t.file)||parseInt(e.line,10)-parseInt(t.line,10),VG=null,HG=0,UG=null;function WG(e,t=!1,n=null,r=!1,i=!1){return A`<finding-card data-gid="${H(e)}" .group="${e}" ?in-group="${t}" context="${n??M}" ?lazy="${r}" ?popup="${i}"></finding-card>`}var GG=A`<svg viewBox="0 0 16 16" width="11" height="11" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 2H2v4M10 2h4v4M14 10v4h-4M6 14H2v-4"/></svg>`,KG=A`<svg viewBox="0 0 16 16" width="11" height="11" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 2v4H2M10 2v4h4M10 14v-4h4M6 14v-4H2"/></svg>`,qG={critical:`C`,high:`H`,medium:`M`,low:`L`,high_bug:`H`,bug:`B`,informational:`i`};function JG(e,t={}){let{variant:n=`kanban`,active:r=!1,expandedTrackLast:i=!1}=t,a=t.groupSt??Bg(e),o=Fg(e),s=Bi(o)||`(untitled finding)`,c=n===`kanban`,l=n===`kanban-side`,u=c&&F.currentWorkspace?qx(o):null,d={"kanban-card":!0,"has-conflict":a.hasConflict,"focus-side-card":!c,"kanban-expanded-track-last":i,active:r};!a.hasConflict&&a.commonColor&&(d[`mark-${a.commonColor}`]=!0);let f=parseInt(o.line,10),p=Number.isFinite(f)?`:${f}`:``,m=O(o,F.severityMode),h=qG[m]??`?`,g=Mi(o)&&F.severityMode!==`original`,_=U(o),v=_?.flagged===!0,y=_?.fix||$h(o),b=_?.comment??``,ee=M;c&&y?ee=mi(y)?A`<managed-fix-link class="kanban-action kanban-fix-link" compact="compact" .url="${y}">${Lw}</managed-fix-link>`:Eg(o)?A`<button type="button" class="kanban-action mark-fix" data-tooltip="${`Edit fix link: ${y}`}" aria-label="${`Edit fix link: ${y}`}">${Lw}</button>`:A`<span class="kanban-action kanban-fix-note" role="img" data-tooltip="${`Fix: ${y}`}" aria-label="${`Fix: ${y}`}">${Lw}</span>`:c&&(b||I()&&wg(o))&&(ee=A`<comment-preview class="kanban-action" .finding="${o}" .comment="${b}">${Iw}</comment-preview>`);let te=A`<div class="kanban-badge-col"><span class="${`kanban-badge sev-${m}`}" data-tooltip="${g?`${gw(m)} \u2014 corrected from ${gw(o.severity)}`:M}" aria-label="${g?`Severity ${gw(m)}, corrected from ${gw(o.severity)}`:`Severity ${gw(m)}`}">${h}${g?`*`:``}</span> ${v?A`<span class="kanban-flag" aria-label="Flagged">${Yw}</span>`:M} ${ee}</div><span class="kanban-title">${s}</span><div class="kanban-meta"><span class="kanban-loc">${o.file}${p}</span> ${o.confidence===void 0||o.confidence===null?M:A`<span class="kanban-conf" data-tooltip="${`Confidence ${o.confidence}/10`}">${o.confidence}</span>`} ${u?A`<span class="kanban-analyzer" role="img" data-tooltip="${Kx[u]}" aria-label="${Kx[u]}">${k(st[u])}</span>`:M}</div>`;return c?A`<div class="${C(d)}" data-gid="${H(e)}" data-kanban-source draggable="${Wg(e,a).length>0?`true`:`false`}" role="button" tabindex="0" aria-current="${r?`true`:`false`}" aria-label="${`Open details for ${s}`}">${te}</div>`:l?A`<div class="${C(d)}" data-gid="${H(e)}" data-kanban-select role="button" tabindex="0" aria-current="${r?`true`:`false`}" aria-label="${`Show details for ${s}`}">${te}</div>`:A`<div class="${C(d)}" data-gid="${H(e)}" data-focus-select role="button" tabindex="0" aria-current="${r?`true`:`false`}" aria-label="${`Focus on ${s}`}">${te}</div>`}var YG={content:``,parts:``};function XG(e){return YG.content!==e&&(YG={content:e,parts:JT(e)}),YG.parts}function ZG(e){let{content:t,range:n,highlighted:r}=e,i=t.split(`
189
- `).length,a=String(i).length;return A`<div class="focus-code-lines" style="${E({"--lineno-width":`${a}ch`})}"><aside class="focus-code-gutter" aria-hidden="true">${Array.from({length:i},(e,t)=>{let r=t+1,i={"focus-code-lineno":!0,"focus-code-line-active":!!n&&r>=n.start&&r<=n.end};return A`<div class="${C(i)}" data-focus-code-line="${r}">${r}</div>`})}</aside><pre class="focus-code-source" tabindex="-1" aria-label="${e.file}"><code>${typeof r==`string`?k(r):XG(t)}</code></pre></div>`}function QG(e){return!e||!zv(Fg(e))?M:A`<button type="button" class="finding-history detail-action" data-finding-history data-gid="${H(e)}" aria-label="View issue history"><svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M2 5a6.25 6.25 0 1 1-.25 5M1.5 1.5V5H5M8 4.5V8l3 1.5"/></svg></button>`}function $G(e,t=M,n=!1){F.focusCodeTick;let r=BC(e),i=LC(e),a=r?`focus-main with-code`:`focus-main`,o=E({"--focus-split":String(F.focusSplit)});return A`<div class="${a}" style="${o}" data-gid="${H(e)}"><div class="focus-pane focus-pane-card"><div class="focus-card-wrapper">${n?M:QG(e)} ${WG(e,!1,`focus`,!1,n)}</div></div>${t} ${r?A`<div class="focus-splitter" data-focus-splitter role="separator" tabindex="0" aria-orientation="vertical" aria-label="Resize the finding and code panes" aria-valuemin="${Vs}" aria-valuemax="${Hs}" aria-valuenow="${Math.round(F.focusSplit)}" data-tooltip="Drag to resize · double-click to reset"></div><div class="focus-pane focus-pane-code" data-focus-code-file="${r.file??M}" data-focus-code-integrity="${r.integrity??M}">${r.loading?A`<div class="focus-code-empty">Loading source…</div>`:A`<header class="focus-code-bar"><span class="focus-code-file" data-tooltip-truncated data-tooltip="${r.file}">${r.file}</span> ${r.range?A`<span class="focus-code-line">:${Kn(r.range)}</span>`:M} ${(i?.stack.length??0)>1?A`<div class="focus-code-nav"><button type="button" class="focus-code-nav-btn" data-code-history="back" ?disabled="${i.at===0}" aria-label="Back to the previously shown file">${lw}</button> <button type="button" class="focus-code-nav-btn" data-code-history="forward" ?disabled="${i.at===i.stack.length-1}" aria-label="Forward to the next shown file">${uw}</button></div>`:M}</header><div class="focus-code-body">${ZG(r)}</div>`}</div>`:M}</div>`}function eK(e,t,n=[],r=null){if(!e&&!r)return M;let i=e?Bg(e):{},a=F.kanbanDetailFullscreen,o={"kanban-detail-modal":!0,fullscreen:a,"has-conflict":i.hasConflict},s=e?H(e):null,c=t?.items??[],l=c.findIndex(e=>H(e)===s),u=A`<div class="kanban-detail-actions">${QG(e)} <button type="button" class="kanban-detail-expand detail-action" data-kanban-detail-fullscreen aria-pressed="${a?`true`:`false`}" aria-label="${a?`Back to the readable width`:`Fill the available space`}">${a?KG:GG}</button> <button type="button" class="kanban-detail-close detail-action" aria-label="Close details">×</button></div>`;return A`<div class="${C({"kanban-detail-backdrop":!0,"links-preview-backdrop":!!r})}"><div class="kanban-detail-dim"></div><div class="${C(o)}" role="dialog" aria-modal="true" aria-label="${r?`Finding preview`:`Finding details`}">${a&&e?M:u}<div class="kanban-detail-body">${e?a?$G(e,u,!0):WG(e,!1,`kanban-detail`,!1,!0):A`<div class="links-preview-message" role="status">${r.error||`Loading finding…`}</div>`}</div></div>${c.length===0?M:A`<aside class="kanban-detail-side" aria-label="${`${t.label} findings`}"><div class="kanban-detail-side-header"><span class="kanban-detail-side-pick"><select class="kanban-detail-side-select" data-kanban-column aria-label="Column to show">${n.map(e=>{let n=e.key===t.key,r=n?e.label:`${e.label} (${e.count})`;return A`<option value="${e.key}" data-gid="${e.firstGid}" .selected="${n}" ?disabled="${e.count===0}">${r}</option>`})}</select></span><div class="focus-nav"><button type="button" class="focus-nav-btn" data-kanban-nav="prev" ?disabled="${l===0}" aria-label="Previous finding">${lw}</button> <span class="count">${l<0?c.length:`${l+1} / ${c.length}`}</span> <button type="button" class="focus-nav-btn" data-kanban-nav="next" ?disabled="${l===c.length-1}" aria-label="Next finding">${uw}</button></div></div><kanban-rail class="kanban-detail-side-body" .items="${c}" .activeKey="${s}" .keyOf="${H}" .renderItem="${e=>JG(e,{variant:`kanban-side`,active:H(e)===s})}"></kanban-rail></aside>`}</div>`}function tK(e,t,n=new Map){if(F.viewMode===`table`){let n=F.sortBy===`file`?zG(e,BG):e;return n.length===0?M:(VG=n,A`<div class="${t?`findings-table-layout open`:`findings-table-layout`}"><div class="findings-table-list"><div class="finding-table-slot"></div></div>${t?A`<aside class="findings-table-details" id="findings-table-details" aria-label="Finding details"><button type="button" class="findings-table-details-close" data-table-deselect aria-label="Close details">×</button><div class="findings-table-details-body">${WG(t)}</div></aside>`:M}</div>`)}if(F.viewMode===`focus`){if(e.length===0)return M;let n=e.indexOf(t);HG=n;let r=t,i=n===0,a=n===e.length-1;return A`<div class="focus-view">${$G(r)}<aside class="focus-sidebar" aria-label="Up next"><div class="focus-sidebar-header"><span class="label">Up next</span><div class="focus-nav"><button type="button" class="focus-nav-btn" data-focus-nav="prev" ?disabled="${i}" aria-label="Previous finding">${lw}</button> <span class="count">${n+1} / ${e.length}</span> <button type="button" class="focus-nav-btn" data-focus-nav="next" ?disabled="${a}" aria-label="Next finding">${uw}</button></div></div><div class="focus-sidebar-body">${D(e,e=>H(e),e=>JG(e,{variant:`focus`,active:H(e)===H(r)}))}</div></aside></div>`}if(F.viewMode===`kanban`){let r=[{key:`untriaged`,label:`Untriaged`},{key:`inprogress`,label:`In progress`},{key:`fixed`,label:`Fixed`},{key:`invalid`,label:`Invalid`},{key:`deleted`,label:`Deleted`},{key:`ignored`,label:`Ignored`}],i=new Map(r.map(e=>[e.key,[]])),a=e=>{let t=n.get(e);return t||n.set(e,t=Bg(e)),t};for(let t of e){let e=a(t).commonTriage??`untriaged`,n=i.get(e);n&&n.push(t)}let o=r.some(e=>e.key===F.kanbanExpandedColumn)?F.kanbanExpandedColumn:null,s=o?r.filter(e=>e.key===o):r,c={"--kanban-cols":String(r.length)},l=t,u=l?r.find(e=>e.key===(a(l).commonTriage??`untriaged`)):null;return A`<div class="kanban-board" style="${E(c)}">${D(s,e=>e.key,e=>{let t=i.get(e.key),n=e.key===o;return A`<div class="${`kanban-column kanban-column-${e.key}${n?` expanded`:``}`}" data-kanban-target="${e.key}"><div class="kanban-column-header"><span class="label">${e.label}</span> <span class="count">${t.length}</span> <button type="button" class="kanban-expand" data-kanban-expand="${e.key}" aria-pressed="${n}" aria-label="${n?`Show all columns`:`Show only ${e.label}`}">${n?KG:GG}</button></div><div class="kanban-column-body">${t.length===0?A`<div class="kanban-empty">No ${e.label.toLowerCase()} findings.</div>`:D(t,e=>H(e),(e,t)=>JG(e,{active:H(e)===F.kanbanPopoverGid,expandedTrackLast:(t+1)%r.length===0,groupSt:a(e)}))}</div></div>`})}</div>${eK(l,u&&{key:u.key,label:u.label,items:i.get(u.key)},r.map(e=>{let t=i.get(e.key);return{key:e.key,label:e.label,count:t.length,firstGid:t.length>0?H(t[0]):``}}))}`}if(F.viewMode===`grouped`){let t=new Map;for(let n of e){let e=Mg(n).file;t.has(e)||t.set(e,[]),t.get(e).push(n)}let n=F.sortBy===`file`?[...t.keys()].toSorted():[...t.keys()];return A`${D(n,e=>e,e=>{let n=F.sortBy===`file`?zG(t.get(e),(e,t)=>parseInt(e.line,10)-parseInt(t.line,10)):t.get(e),r=Mg(n[0]);return A`<div class="file-group"><div class="file-header"><span>${Rn(r,Lg(r))}</span> <span class="count">${n.length}</span></div><div class="file-body">${D(n,e=>H(e),e=>WG(e,!1,null,!0))}</div></div>`})}`}let r=F.sortBy===`file`?zG(e,BG):e;return A`${D(r,e=>H(e),e=>{let t=Fg(e),n=Zn(t,Lg(t)),r=In(t),i=zi(t),a=e.length>1;return A`<div class="${C({"flat-group":!0,"multi-case":a})}"><div class="flat-group-loc"><span class="file">${Rn(t,Lg(t))}</span> ${n===M?M:A`<span class="line-num">${n}</span>`} ${i?A`<span class="meta">${i}</span>`:M} ${r?A`<span class="run-meta">${r}</span>`:M}</div>${WG(e,!0,null,!0)}</div>`})}`}function nK(){F.bundleSourceFile&&WK().catch(()=>{});let e=document.querySelector(`#bundle-source-overlay-slot`);e&&N(cB(),e)}var rK=hG(EK);function X(){rK(F.currentView)}var iK=e=>Object.assign(document.createElement(`div`),{id:e});function aK(e){let t=document.querySelector(`#${e}`);return(!t||!z.contains(t)||z.firstElementChild!==t)&&(t=iK(e),z.replaceChildren(t)),t}function oK(e=null){let t=e==null?null:F.managedTeams.find(t=>t.id===e),n=t?DH({currentWorkspace:`managed-team:${t.id}`,currentManagedTeam:t.id,managedTeams:F.managedTeams,managedSession:F.managedSession},[]):null;N(MH(n),aK(`triage-loading-slot`))}function sK(){let e=DH(F,R(),Ru);document.title=e?`${e.title} \u2014 findings`:`DeepView`;let t=aK(`empty-workspace-slot`);t&&N(A`${EG([],[],!1,null,0)}<p class="workspace-content-empty">No findings available.</p>`,t),bG()}var cK={"manage-deduplication":{slot:`manage-deduplication-slot`,tag:`managed-admin-deduplication`,title:`DeepView — deduplication`},manage:{slot:`manage-slot`,tag:`managed-admin-home`,title:`DeepView — manage`},"admin-users":{slot:`admin-users-slot`,tag:`managed-admin-users`,title:`DeepView — users`},"manage-repos":{slot:`manage-repos-slot`,tag:`managed-admin-repos`,title:`DeepView — repositories`},"manage-repo-risk":{slot:`manage-repo-risk-slot`,tag:`managed-admin-repo-risk`,title:`DeepView — repository risk`},"manage-reports":{slot:`manage-reports-slot`,tag:`managed-admin-reports`,title:`DeepView — reports`},"manage-bundles":{slot:`manage-bundles-slot`,tag:`managed-admin-bundles`,title:`DeepView — bundles`},"manage-history":{slot:`manage-history-slot`,tag:`managed-admin-history`,title:`DeepView — history`},"manage-teams":{slot:`manage-teams-slot`,tag:`managed-admin-teams`,title:`DeepView — teams`},"manage-import":{slot:`manage-import-slot`,tag:`managed-admin-import`,title:`DeepView — import`},"manage-links":{slot:`manage-links-slot`,tag:`managed-admin-links`,title:`DeepView — links`},"manage-scans":{slot:`manage-scans-slot`,tag:`managed-admin-scans`,title:`DeepView — scans`}};function lK(){F.currentView===`files`&&(F.currentView=`findings`),F.viewMode===`graph`&&(F.viewMode=`kanban`)}var uK=e=>A`<p class="triage-loading" role="status">Loading ${e}…</p>`,dK=(e,t)=>e==null&&t==null?0:e==null?1:t==null?-1:e.localeCompare(t),fK=null;function pK(e){let t=[e,An(),Dr()];if(fK?.key.every((e,n)=>e===t[n]))return fK;let n=T_(e),r=e.some(e=>e.some(e=>jn(e.file))),i=e.some(e=>e.some(e=>!jn(e.file))),a=!1,o=!1,s;e:for(let t of e)for(let e of t)if(!o)o=!0,s=e.file;else if(e.file!==s){a=!0;break e}let c=e.some(e=>e.some(e=>!e.repo?.github&&!jn(e.file))),l=new Set;for(let t of e)for(let e of t)!jn(e.file)&&e.repo?.github&&l.add(e.repo.github);let u=l.size===1?[...l][0]:null,d=new Set,f=new Set;for(let t of e)for(let e of t)d.add(e._analyzer??null),f.add(s_(e));let p=Object.keys(G_),m=e=>{if(e==null)return 1/0;let t=p.indexOf(e);return t===-1?p.length:t},h=[...d].toSorted((e,t)=>{let n=m(e),r=m(t);return n===r?String(e??``).localeCompare(String(t??``)):n-r}),g=[...f].toSorted(dK);return fK={key:t,hasAnyPriority:n,hasAnyModulesPath:r,hasAnySourcePath:i,hasMultipleFiles:a,repoInputUseful:c,knownRepo:u,analyzerSet:d,modelSet:f,analyzerOptions:h,modelOptions:g},fK}var mK=null;function hK(e,t){if(mK?.groups===e&&mK.workspace===t)return mK;let n=!1,r=!1,i=!1;for(let a of e){let e=!1,o=!1;for(let n of a){let a=Fi(n);a===`partial`&&(r=!0),!((a===`unreachable`||a===`refuted`)&&(i=!0,t))&&(a===`revalidation`?e=!0:o=!0)}e&&o&&(n=!0)}return mK={groups:e,workspace:t,hasFoldedRows:n,hasPartialRow:r,hasRuledOutRow:i},mK}var gK=(e,t)=>e.length===t.length&&e.every((e,n)=>e===t[n]),_K={reports:[],value:!1};function vK(){return gK(_K.reports,F.reports)||(_K={reports:[...F.reports],value:Mr(F.reports)}),_K.value}var yK={reports:[],depsDir:null,value:!1};function bK(){let e=An();return(yK.depsDir!==e||!gK(yK.reports,F.reports))&&(Mn(F.reports)&&Jg(),yK={reports:[...F.reports],depsDir:e,value:F.reports.some(e=>(e.groups??[]).some(e=>e.some(e=>e.isUpstream)))}),yK.value}var xK={reports:[],single:!1,tags:[]};function SK(e){if(xK.single!==e||!gK(xK.reports,F.reports)){let t=F.reports.flatMap(e=>e.groups.flat());xK={reports:[...F.reports],single:e,tags:OS(t,e?yS.filter(e=>e!==`type`):yS)}}return xK.tags}var CK=null;function wK(){let e=F.revalidateConflicts.size>0,t=!e&&vK();return e?F.showRevalidation!==!1&&(CK=F.showRevalidation,F.showRevalidation=!1):(CK!==null&&(F.showRevalidation=CK,CK=null),!t&&F.showRevalidation===!1&&(F.showRevalidation=!0)),F.upstreamOnly&&(!t||F.showRevalidation===!1||!bK())&&(F.upstreamOnly=!1),Tr(F.showRevalidation,F.upstreamOnly),t}var TK=null;function EK(){mg()||hg(),nK(),kn(F.reports),Td()&&queueMicrotask(()=>{Dd()});let e=bK(),t=wK(),n=e;if([`workspace-reports`,`workspace-bundles`,`workspace-repositories`,`workspace-dependencies`].includes(F.currentView)){let e=F.currentView.slice(10),t=DH(F,R(),Ru),n=aK(`workspace-content-slot`);n&&N(LH(t,e),n),document.title=t?`${t.title} \u2014 ${e}`:`DeepView \u2014 ${e}`;return}if(F.currentView===`bundles`){if((F.bundles??[]).length===0)F.currentView=`findings`;else{qt(F.bundleDetailsTab,F.bundleSourceFile)&&WK().catch(()=>{});let e=aK(`bundles-slot`);e&&N(vV(F.bundles),e);let t=F.bundleDetails,n=F.selectedBundle&&t&&(t.json||t.bundle);if(n&&F.bundleDetailsTab===`graph`){let e=document.querySelector(`#bundle-graph-slot`);if(e){let n=Mz(F.bundleDetails);if(n){Lz(n);let r={hideAllFiles:!0,triageCounts:Az(F.bundleDetails,new Set(n.strippedToOrig.values())),triageStates:[`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`],showPackagesView:n.canPackagesView,showBundleLayouts:!0,hasIssues:n.hasIssues},i=TK,a=e.querySelector(`graph-layout`);!n.issuesShown&&i&&!i.issuesShown&&a&&i.state===w.graphState&&i.details===t&&i.reason===w.bundleReason?a.options=r:(TK=null,wT(e,n,r,Fz,Iz).then(e=>(e&&w.graphState&&(TK={state:w.graphState,details:t,reason:w.bundleReason,issuesShown:n.issuesShown}),null)))}}}if(n&&!t.metadataOnly&&(F.bundleDetailsTab===`terminal`||F.bundleDetailsTab===`code`&&F.bundleCodeTerminal)){let e=document.querySelector(`#bundle-terminal-slot`);e&&jT(e,F.bundleDetails)}bG();let{npm:r,repository:i}=F.bundles.find(e=>e.integrity===F.selectedBundle)??{};document.title=r?`DeepView \u2014 ${r.name}@${r.version}`:i?`DeepView \u2014 ${DM(i)}`:`DeepView — bundles`;return}}if(F.currentView===`reviews`){let e=aK(`dependency-reviews-slot`);e&&N(QL(()=>A`<dependency-review-list .session="${F.managedSession}"></dependency-review-list>`),e),bG(),document.title=`DeepView — my reviews`;return}if(F.currentView===`profile`){let e=aK(`managed-profile-slot`);e&&N(A`<managed-profile .session="${F.managedSession}" .linkError="${F.profileLinkError}"></managed-profile>`,e),bG(),document.title=`DeepView — profile`;return}if(F.currentView===`npm`){let e=F.npmOpening,t=aK(e?`bundles-slot`:`npm-slot`);t&&N(e?uV(e):$j(),t),bG(),document.title=e?`DeepView \u2014 ${dj(e.name,e.spec)}`:`DeepView — npm packages`;return}if(F.currentView===`repository-code`){let e=F.repositoryCodeOpening,t=aK(`bundles-slot`);t&&e&&N(dV(e),t),bG(),document.title=`DeepView \u2014 ${e?.repo??`code`}`;return}if(F.currentView===`packages`){let e=aK(`packages-slot`);e&&N(IV(),e),bG(),document.title=`DeepView — packages`;return}if(F.currentView===`repositories`){let e=aK(`repositories-slot`);e&&N(ZV(),e),bG(),document.title=`DeepView — repositories`;return}if(F.currentView===`links`){if(F.currentLinks){let e=aK(`links-slot`),t=mg();e&&N(A`${mH(kG())}${t?eK(t.group,null,[],t):M}`,e),bG(),document.title=`DeepView \u2014 ${F.currentLinks.name}`;return}F.currentView=`findings`}if(F.currentView===`scan`&&customElements.get(`local-scan-page`)){let e=aK(`scan-slot`);if(e&&!e.firstElementChild){let t=document.createElement(`local-scan-page`);t.selection=F.scanSelection,e.append(t),t.updateComplete.then(()=>cr(t.renderRoot,{gate:e=>!Object.hasOwn(e.dataset,`tooltipTruncated`)||e.scrollWidth>e.clientWidth}))}bG(),document.title=`DeepView — scans`;return}let r=cK[F.currentView];if(r){let e=aK(r.slot);e?.classList.add(`managed-page-slot`);let t=e?.firstElementChild?.session;if((t?.id!==F.managedSession?.id||t?.role!==F.managedSession?.role)&&e?.replaceChildren(),e&&!e.firstElementChild){let t=document.createElement(r.tag),n=e=>cr(e,{gate:e=>!Object.hasOwn(e.dataset,`tooltipTruncated`)||e.scrollWidth>e.clientWidth});t.localImportSource=mp(),F.currentView===`manage-import`&&(t.localDeps=fp(),t.promptPassword=Ve,t.resolveConflicts=vS,t.confirmTriageImport=le,t.confirmContentImport=se,t.showTriageComparison=Fe),t.session=F.managedSession,t.allowShare=F.managed?.allowShare===!0,F.currentView===`manage-scans`&&(t.selection=F.scanSelection),F.currentView===`manage-bundles`&&(t.createRepoId=F.bundleCreationRepoId,t.installTooltips=n),e.append(t),(async()=>{await customElements.whenDefined(r.tag),await t.updateComplete,n(t.renderRoot)})().catch(()=>{})}e?.firstElementChild&&(e.firstElementChild.session=F.managedSession,e.firstElementChild.allowShare=F.managed?.allowShare===!0),F.currentView===`manage-scans`&&e?.firstElementChild&&(e.firstElementChild.selection=F.scanSelection),F.currentView===`manage-bundles`&&e?.firstElementChild&&(e.firstElementChild.createRepoId=F.bundleCreationRepoId),bG(),document.title=r.title;return}if(F.reports.length===0){F.currentWorkspace&&document.querySelector(`#empty-workspace-slot`)&&sK();return}let i=$g(),a=F.viewMode===`kanban`,o={inprogress:0,fixed:0,invalid:0,deleted:0,ignored:0},s=[],c=new Map;for(let e of i){let t=Bg(e);c.set(e,t);let n=t.commonTriage;n&&o[n]++,(a||n===F.shownTriage)&&s.push(e)}Object.defineProperty(s,"ruledOutIds",{value:i.ruledOutIds});let l=!1,u=!1,d=!1,f=!1;for(let e of i)for(let t of e){Mi(t)&&(f=!0);let e=U(t);$h(t)&&(u=!0),e&&(e.comment&&(l=!0),e.fix&&(u=!0),e.flagged===!0&&(d=!0))}let p=r_(),m=i.some(e=>e.some(e=>p.has(e.id)));m||(F.filterDuplicates=``);let h=s.some(P_),g=s.some(F_);h||(F.filterCrossContext=``),g||(F.filterAppStacked=``);let _=L_(s);_||(F.filterSecurity=``);let v=new Set;for(let e of s)for(let t of e){let e=kr(t);e&&v.add(e)}let{hasFoldedRows:y,hasPartialRow:b,hasRuledOutRow:ee}=hK(Zg(),!!F.currentWorkspace),te=[...new Set(F.reports.map(e=>e.type))].join(`, `),ne=F.reports.map(e=>e.fileName),re=s.map(kg).filter(e=>e.length>0),ie=re.length>0&&gr(re),{hasAnyPriority:ae,hasAnyModulesPath:oe,hasAnySourcePath:ce,hasMultipleFiles:ue,repoInputUseful:de,knownRepo:fe,analyzerSet:pe,modelSet:me,analyzerOptions:he,modelOptions:ge}=pK(i);if(F.filterAnalyzer){let e=F.filterAnalyzer===i_?null:F.filterAnalyzer;(!pe.has(e)||pe.size<2)&&(F.filterAnalyzer=``)}if(F.filterModel){let e=F.filterModel===o_?null:F.filterModel;(!me.has(e)||me.size<2)&&(F.filterModel=``)}let _e=On(v);F.filterRevalidate&&!_e.some(e=>e.value===F.filterRevalidate)&&(F.filterRevalidate=``);let ve=C_(s);ve&&(F.filterRevalidate=`confirmed`);let ye=v.has(`partial`)&&yg();ye||(F.filterPartial=``);let be=t&&(y||b||!F.currentWorkspace&&ee),xe=!(t&&F.showRevalidation!==!1)&&!F.upstreamOnly&&oe&&ce;!xe&&F.filterSources.size>0&&F.filterSources.clear(),ie||(F.filterConfMin=0,F.filterConfMax=10,(F.sortBy===`confidence-desc`||F.sortBy===`confidence-asc`)&&(F.sortBy=`severity`)),!ae&&(F.sortBy===`priority-desc`||F.sortBy===`priority-asc`)&&(F.sortBy=`severity`),!ue&&F.sortBy===`file`&&(F.sortBy=`severity`);let Se=R_(s),Ce={critical:0,high:0,medium:0,low:0,high_bug:0,bug:0,informational:0},we={red:0,blue:0,green:0,gray:0,none:0};for(let e of Se){if(e.length===1){let t=O(e[0],F.severityMode);Ce[t]=(Ce[t]||0)+1;let n=U(e[0])?.color??`none`;we[n]=(we[n]||0)+1;continue}let t=new Set(e.map(e=>O(e,F.severityMode)));for(let e of t)Ce[e]=(Ce[e]||0)+1;let n=new Set(e.map(e=>U(e)?.color??`none`));for(let e of n)we[e]=(we[e]||0)+1}let Te=u_(Se),Ee=[...Te].toSorted(dK);if(F.filterRepo){let e=F.filterRepo===a_?null:F.filterRepo;Te.has(e)||(F.filterRepo=``)}let De=W_(z_(s)),Oe=pr(F.reports),ke=Oe?Object.keys(Oe).length:F.reports.reduce((e,t)=>e+(t.treeFiles??0),0),Ae=ke>1&&!Oe&&(F.currentView===`files`||F.viewMode===`graph`)&&vG(e=>{e||lK(),X()}),je=ke>1;(!je||!Oe&&!Ae)&&lK();let Me=EG(i,ne,de,fe,ke);if(F.currentView===`files`){let e=dr(i,F.severityMode),t=document.querySelector(`#header-slot`),n=document.querySelector(`#tree-view-slot`);(!t||!n||!z.contains(t)||!z.contains(n))&&(t=iK(`header-slot`),n=iK(`tree-view-slot`),z.replaceChildren(t,n)),t&&N(Me,t),n&&N(Oe?hT(Oe,e):uK(`files`),n),bG(),document.title=`DeepView \u2014 ${te||`no analyzer`}`;return}let Ne=F.viewMode===`table`&&F.tableSelectedGid&&De.some(e=>H(e)===F.tableSelectedGid),Pe=null;F.viewMode===`graph`&&Oe&&(Pe=xG(),Pe||(F.viewMode=`kanban`));let Ie=!!Pe,Le=`findings-content`;Ne&&(Le+=` with-details`),Ie&&(Le+=` with-graph`),a&&(Le+=` with-kanban`),F.viewMode===`focus`&&(Le+=` with-focus`);let Re=M,ze=M,Be=M,He=yH(De,F,HG);VG=null,Ie||(Re=RG(De.length,s.length,o,Ce,we,{showSource:xe,showConfidence:ie,showPriority:ae,showGraphMode:je,showFileSort:ue,kanbanMode:a,showRepo:!!F.currentWorkspace,hasComment:l,revalidateOptions:_e,showPartial:ye,canDropLayer:t,canDetailLayer:be,canUpstreamLens:n,confirmedLocked:ve,hasFix:u,hasFlagged:d,hasDuplicates:m,hasCrossContext:h,hasAppStacked:g,showSecurity:_,showSeverityMode:f||F.severityMode===`original`},{analyzers:he,models:ge,groups:Se},Ee),F.shownTriage&&s.length===0?ze=A`<p style="${E({color:`var(--muted)`,margin:`1rem 0`})}">No ${F.shownTriage} findings.</p>`:De.length===0&&s.length>0&&!a?ze=A`<p style="${E({color:`var(--muted)`,margin:`1rem 0`})}">No findings match the current filters.</p>`:s.length===0&&(ze=i.length>0?A`<p style="${E({color:`var(--green)`})}">All ${te} issues triaged.</p>`:A`<p style="${E({color:`var(--green)`})}">No ${te} issues found.</p>`),Be=Ae?uK(`graph`):tK(De,He,c));let Ue=document.querySelector(`#header-slot`),We=z.querySelector(`:scope > .findings-content`),Ge=We&&We.querySelector(`:scope > #findings-graph-slot`),Ke=We&&We.querySelector(`:scope > #findings-body-slot`),qe=We&&(Ge?`graph`:Ke?`body`:null)===(Ie?`graph`:`body`);!Ue||!We||!z.contains(Ue)||!z.contains(We)||!qe?(Ue=iK(`header-slot`),We=Object.assign(document.createElement(`div`),{className:Le}),We.append(...Ie?[iK(`findings-graph-slot`)]:[iK(`toolbar-slot`),iK(`empty-state-slot`),iK(`findings-body-slot`)]),z.replaceChildren(Ue,We)):We.className!==Le&&(We.className=Le),Ue&&N(Me,Ue);let Je=document.querySelector(`#toolbar-slot`);Je&&N(Re,Je);let Ye=document.querySelector(`#empty-state-slot`);Ye&&N(ze,Ye);let Xe=document.querySelector(`#findings-body-slot`);if(Xe&&N(Be,Xe),Pe){let e=document.querySelector(`#findings-graph-slot`);if(e){let t={extraTopRow:A`<view-mode-buttons modes="kanban,focus,table,list,grouped,graph"></view-mode-buttons>`,triageCounts:o,triageStates:[`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`]};wT(e,Pe,t,SG,CG)}}if(VG){let e=z.querySelector(`.finding-table-slot`);e&&(UG||=document.createElement(`finding-table`),UG.items=VG,UG.selectedGid=F.tableSelectedGid,UG.parentNode!==e&&e.append(UG))}bG(),document.title=`DeepView \u2014 ${te||`no analyzer`}`,I()&&G?.replaceFindingRoute(bH(He,F))}var DK=new Map,OK=new Map,kK=new Map,AK=new WeakMap;async function jK(e){try{let t=await pl(e);return t?Qt(t,e):null}catch{return null}}var MK=null;function NK(e){let t=new Map(e.filter(e=>e&&!e.error).map(e=>[e.integrity,e]));return MK=t.size>0?{bundles:t}:null,MK}function PK(e){MK===e&&(MK=null)}function FK(e,t=()=>!0){let n=MK?.bundles.get(e);return!n||!t(n)?null:(MK.bundles.delete(e),MK.bundles.size===0&&(MK=null),n)}function IK(e,t,{sources:n=!0}={}){if(!t.managedId&&I())return Promise.reject(new DOMException(`Local bundle closed`,`AbortError`));let r=n?DK:OK,i=t.name.toLowerCase().endsWith(`.map`)?`sourcemap`:`stasis`,a=F.bundleDetails;if(a?.integrity===e&&a.kind===i&&a.managedId===t.managedId&&!a.error&&(!n||!a.metadataOnly))return Promise.resolve(a);let o=FK(e,e=>e.kind===i&&e.managedId===t.managedId&&(!n||!e.metadataOnly));if(o)return Promise.resolve(o);let s=`${t.managedId??`local`}:${e}:${i}`,c=t.managedId&&n?Z_():void 0,l=r.get(s);if(l&&l.signal===c)return l.job;let u=(async()=>{if(t.managedId)try{let r=n?$t(await _x(t.managedId,{signal:c}),{integrity:e,kind:i,size:t.size}):Qt(await gx(t.managedId),e);return r.managedId=t.managedId,r}catch(n){if(n.name===`AbortError`)throw n;return{integrity:e,kind:i,size:t.size,managedId:t.managedId,error:n.message}}if(!n){let n=await jK(e);return n?.kind===i&&!n.stale?n:IK(e,t)}let[r,a]=await Promise.all([zK(e,t),jK(e)]);if(!r.error){let t=a?.kind===r.kind&&!a.stale;t&&(r.fileHashes=a.fileHashes,r.fileSizes=a.fileSizes,r.lineCounts=a.lineCounts),t||Zt(r).then(t=>ml(e,t)).catch(()=>{})}return r})();return r.set(s,{job:u,signal:c}),u.finally(()=>{r.get(s)?.job===u&&r.delete(s)}).catch(()=>{}),u}function LK(e,t=F.currentView===`bundles`?F.bundleDetailsTab:`overview`,{workspaceId:n=null}={}){let r=F.bundleDetails,i=F.bundleCodeFileRequest,a=i?.bundle===F.selectedBundle&&(!r||r.metadataOnly===!0&&!r.sourceError),o=F.currentView===`bundles`&&F.bundleDetailsTab===`code`&&t===`code`?F.bundleSourceFile??(a?i.path:null):null;Q_(),F.currentView=`bundles`,F.selectedBundle=e,F.selectedBundleWorkspace=n,F.bundleDetails=null,F.bundleSourceFile=null,F.bundleCodeHistory=null,F.bundleCodeFileRequest=o?{bundle:e,path:o}:null,F.bundleCompare=null,F.bundleSourceFindingIdx=null,F.bundleCodeSearchQuery=``,F.bundleCodeSearchMode=`files`,F.bundleSearchQuery=``,F.bundleSearchRegex=!1,F.bundleSearchCase=!1,F.bundleSearchContext=!0,F.bundleDetailsTab=t??`overview`,w.showAll=!0,F.shownTriage=null}function RK(e,{preserveSource:t=!1}={}){qt(F.bundleDetailsTab,F.bundleSourceFile)&&!qt(e,t?F.bundleSourceFile:null)&&Q_(),F.bundleDetailsTab=e,F.bundleCodeFileRequest=null,t||(F.bundleSourceFile=null,F.bundleCodeHistory=null),F.bundleSourceFindingIdx=null}async function zK(e,t){try{let n=await fl(e);if(I())throw new DOMException(`Local bundle closed`,`AbortError`);let r=t.name.toLowerCase().endsWith(`.map`),i=r?`sourcemap`:`stasis`;try{if(r)return $t(ga(n),{integrity:e,kind:i,size:n.byteLength});let t=ga(await Xm(n,()=>!I())),a=Nt.parse(t);return{integrity:e,kind:i,size:n.byteLength,bundle:a}}catch(t){if(t.name===`AbortError`)throw t;return{integrity:e,kind:i,size:n.byteLength,error:t.message}}}catch(t){if(t.name===`AbortError`)throw t;return{integrity:e,error:t.message,size:0}}}function BK(e){if(!(e?.managedId||!e?.json&&!e?.bundle)){if(e.fileHashes){Jf(e.integrity,e.fileHashes);return}(async()=>{try{let t=await Jt(e);if(Jf(e.integrity,t),F.bundleDetails!==e)return;e.fileHashes=t,X()}catch{}})()}}function VK(e){if(ep(e))return Promise.resolve();if(kK.has(e))return kK.get(e);let t=(F.bundles??[]).find(t=>t.integrity===e);if(!t||t.managedId)return Promise.resolve();let n=(async()=>{let t=await jK(e);if(t?.json||t?.bundle)try{Jf(e,await Jt(t))}catch{}})();return kK.set(e,n),n.finally(()=>{kK.get(e)===n&&kK.delete(e)}).catch(()=>{}),n}async function HK(e,t=()=>!0){let n=new Set(e);if(n.size!==0){await new Promise(e=>{let t=()=>setTimeout(e,0);typeof requestAnimationFrame==`function`?requestAnimationFrame(t):t()});for(let e of n){if(!t())return;await VK(e)}}}async function UK(e){let t=(F.bundles??[]).find(t=>t.integrity===e);if(!t)return;let n;try{n=await IK(e,t,{sources:qt(F.bundleDetailsTab,F.bundleSourceFile)})}catch(e){if(e.name===`AbortError`)return;throw e}F.selectedBundle!==e||t.managedId&&!F.bundles.includes(t)||(F.bundleDetails=n,X(),BK(n),t.managedId||Bf().catch(()=>{}))}function WK(e=F.bundleDetails){if(e?.sourceError)return Promise.resolve(null);if(!e?.metadataOnly)return Promise.resolve(e);let t=e.managedId?Z_():void 0,n=AK.get(e);if(n&&n.signal===t)return n.job;let r=(F.bundles??[]).find(t=>t.integrity===e.integrity);if(!r)return Promise.resolve(null);let i=IK(e.integrity,r).then(n=>(t?.throwIfAborted(),F.bundleDetails===e?n.error&&e.managedId?(e.sourceError=n.error,X(),null):(n.error||(n.fileHashes=e.fileHashes,n.fileSizes=e.fileSizes,n.lineCounts=e.lineCounts,n.codeStats=e.codeStats,e.edges&&(n.edges=e.edges)),F.bundleDetails=n,X(),n):n)).catch(e=>{if(e.name===`AbortError`)return null;throw e});return AK.set(e,{job:i,signal:t}),i.finally(()=>{AK.get(e)?.job===i&&AK.delete(e)}).catch(()=>{}),i}async function GK({bundleId:e,teamId:t,bundleTab:n,file:r,line:i,endLine:a,compareId:o,compareMode:s},c,l,u){let d=c.find(t=>t.managedId===e);if(!d||!l()||!I())return!1;let f=FK(d.integrity,t=>t.managedId===e),p=F.bundleDetails?.managedId===e&&F.bundleDetails.integrity===d.integrity&&!F.bundleDetails.error?F.bundleDetails:null;try{F.bundles=c,ar(),LK(d.integrity,n),n===`code`&&r!=null&&(F.bundleCodeFileRequest={bundle:d.integrity,file:r,...i==null?{}:{line:i},...a==null?{}:{endLine:a}});let e=n===`compare`&&o!=null?Nx(c,d.integrity).find(e=>e.managedId===o):null;e&&(F.bundleCompare={bundle:d.integrity,target:e.integrity,mode:ni(s)}),F.bundleDetails=f??p,F.currentManagedTeam=t,F.currentManagedReport=null,F.reports=[],document.body.classList.remove(`report-fullscreen`),X({animate:!1}),u(),document.querySelector(`#main-content`)?.scrollTo({top:0})}catch(e){return l()&&e.name!==`AbortError`&&jx(`Couldn't open bundle: ${e.message}`,{kind:`error`}),!1}let m=F.bundleDetails,h=()=>I()&&F.currentView===`bundles`&&F.selectedBundle===d.integrity&&F.bundles.some(t=>t.managedId===e&&t.integrity===d.integrity)&&F.bundleDetails===m,g=(t,n)=>(t?.name===`AbortError`||(l()?n&&jx(`Couldn't open bundle: ${t.message}`,{kind:`error`}):h()&&(F.bundleDetails={integrity:d.integrity,kind:d.kind,size:d.size,managedId:e,error:t.message},X())),!1),_=W(),v;for(;;){let t=Z_();try{v=await gx(e,{signal:t});break}catch(e){if(e?.name===`AbortError`&&t.aborted&&h())continue;return g(e,!1)}}try{if(v.integrity!==d.integrity)throw Error(`the metadata is for another version of this bundle`);if(h()){let t=Qt(v,v.integrity),n=f?.integrity===t.integrity?Object.assign(f,{fileHashes:t.fileHashes,fileSizes:t.fileSizes,lineCounts:t.lineCounts,codeStats:t.codeStats},t.edges?{edges:t.edges}:{}):t;n.managedId=e,F.bundleDetails=n,X({animate:!1})}return l()&&_===W()&&F.bundleDetails?.managedId===e&&F.selectedBundle===d.integrity}catch(e){return g(e,!0)}}function KK(e){let t=1/0,n=Date.now()+5e3;for(let r of e)for(let e of r.bundles??[])[`stasis`,`sourcemap`].includes(e.kind)&&e.summary==null&&(t=Math.min(t,Math.max(n,e.summaryRetryAt??0)));return t}function qK(e){let t=null,n=null,r=null;return async({generation:i,session:a,signal:o,reuse:s=!1,revision:c=null})=>{if(o.aborted)return null;let l=JSON.stringify([i,a?.id,a?.role,a?.csrfToken]);if(r!==l&&(t?.controller.abort(),t=null,n=null,r=l),n&&Date.now()<n.expiresAt&&(s||c!==null&&c===n.revision))return n.teams;if(!t||t.signal.aborted||c!==null&&t.revision!==c){t?.controller.abort(),n=null;let i=new AbortController,a=AbortSignal.any([o,i.signal]),s={controller:i,signal:a,promise:null,revision:c};t=s;let u=null;s.promise=e({fallback:null,signal:a,onRevision:e=>{u=e}}).then(e=>a.aborted||r!==l?null:(e!==null&&(n={teams:e,revision:u,expiresAt:KK(e)}),e)).finally(()=>{t===s&&(t=null)})}let u=t,d=()=>u.controller.abort();o.addEventListener(`abort`,d,{once:!0});try{let e=await u.promise;return o.aborted||u.signal.aborted?null:e}finally{o.removeEventListener(`abort`,d)}}}function JK(e){let t=String(e??``).split(/[\s\-_/.]+/u).filter(Boolean);if(t.length<2)return Array.from(t[0]??``).slice(0,2).join(``);let n=t.slice(0,2).map(e=>Array.from(e)[0]).join(``);return/^\p{Ll}/u.test(n)?n:n.toUpperCase()}var YK=`deepview-managed-session`,XK=null,ZK=null,QK=null,$K=0,eq=0,tq=new Set;function nq(){return!XK&&typeof BroadcastChannel==`function`&&(XK=new BroadcastChannel(YK),XK.addEventListener(`message`,e=>{let t=e.data?.mark;if(typeof t==`string`&&(QK=t,$K++,ZK!==null&&t!==ZK))for(let e of tq)e()}),XK.unref?.()),XK}async function rq(e){if(!e)return`signed-out`;let t=globalThis.crypto?.subtle;if(!t)return null;let n=JSON.stringify([e.id,e.role,e.viewer?.id??null,e.csrfToken??null]);return[...new Uint8Array(await t.digest(`SHA-256`,new TextEncoder().encode(n)))].map(e=>e.toString(16).padStart(2,`0`)).join(``)}async function iq(e,t){if(e?.publicShare)return;let n=++eq,r=await rq(e);if(n!==eq||r===null||!nq())return;let i=ZK===null,a=t===$K&&QK!==null&&QK!==r;if((r!==ZK||a)&&(ZK=r,XK.postMessage({mark:r})),a)QK=r;else if(i&&QK!==null&&QK!==r)for(let e of tq)e()}function aq(){return $K}async function oq(e){return QK===null||e?.publicShare?!1:QK!==await rq(e)}function sq(e){return nq(),tq.add(e),()=>{tq.delete(e)}}var cq=`*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:host{width:260px;flex-shrink:0;height:100%;background:var(--surface);backdrop-filter:var(--glass-blur);border-right:1px solid var(--border);display:flex;flex-direction:column;transition:width .15s ease-out;overflow:hidden}:host(.collapsed){width:32px}:host([inert]) .brand-tag,:host([inert]) .sidebar-search,:host([inert]) .sidebar-actions,:host([inert]) #file-list,:host([inert]) #sidebar-toggle,:host([inert]) #sidebar-home,:host([inert]) #sidebar-rail,:host([inert]) #encryption-toggle,:host([inert]) #storage-status{visibility:hidden}:host(.collapsed) .brand,:host(.collapsed) .sidebar-search,:host(.collapsed) #encryption-toggle,:host(.collapsed) #file-list{display:none}:host(.collapsed) .sidebar-header{padding:.5rem 0;justify-content:center}:host(.collapsed) .sidebar-actions{padding:.35rem 0;flex-direction:column;justify-content:center}:host(.collapsed) sidebar-delete-current,:host(.collapsed) #storage-status,:host(.collapsed) #sync-status .sync-label{display:none}:host(.collapsed) #sync-status{padding:.25rem;border:0}:host(.collapsed) #view-as-status,:host(.collapsed) #public-status,:host(.collapsed) .auth-login{display:none}:host(.collapsed) #auth-status[data-authed="1"]{padding:.2rem}:host(.collapsed[data-view-as]) #auth-status .user-avatar{box-shadow:0 0 0 1.5px var(--surface),0 0 0 3px var(--accent)}#sidebar-home,#sidebar-rail{display:none}:host(.collapsed) #sidebar-home{display:grid;margin:0 auto;padding:.3rem 0}:host(.collapsed) #sidebar-rail{flex:1;min-height:0;display:flex;flex-direction:column;align-items:center;gap:.2rem;padding:.35rem 0;list-style:none;overflow-y:auto;overscroll-behavior:none;scrollbar-width:none}.rail-item{width:26px;padding:.25rem 0 .2rem;display:grid;justify-items:center;gap:.15rem;background:transparent;color:var(--muted);border:0;border-radius:var(--ui-radius, 4px);font:inherit;font-size:.58rem;font-weight:600;line-height:1;white-space:nowrap;&:hover{color:var(--text);background:rgb(from var(--text) r g b / .08)}&.current{color:var(--accent);background:rgb(from var(--text) r g b / .1)}&:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}}:host([data-mode="managed"]:not([data-workspace-access])) .sidebar-search,:host([data-mode="managed"]:not([data-authenticated])) .sidebar-actions{display:none}.sidebar-header{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem .4rem;.brand{flex:1;min-width:0;display:flex;align-items:center;gap:.4rem;font-size:.95rem;font-weight:700;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;user-select:none}.brand-button{display:inline-flex;align-items:center;gap:.5rem;background:transparent;border:0;padding:0;margin:0;font:inherit;color:inherit;border-radius:var(--ui-radius, 4px);&:focus-visible{outline:2px solid var(--accent);outline-offset:2px}}.brand-tag{padding:.08rem .25rem;border:0;border-radius:var(--ui-radius, 4px);background:transparent;font:inherit;font-size:.65rem;font-weight:500;color:var(--muted);text-transform:lowercase;letter-spacing:.02em;&[role=button]{cursor:default}&[role=button]:hover{color:var(--text);background:rgb(from var(--text) r g b / .06)}&:focus-visible{outline:2px solid var(--accent);outline-offset:2px}}}@media(display-mode:window-controls-overlay){.sidebar-header{min-height:env(titlebar-area-height,0px);padding-left:max(.75rem,env(titlebar-area-x,0px));-webkit-app-region:drag;app-region:drag;.brand-button,.brand-tag,#encryption-toggle{-webkit-app-region:no-drag;app-region:no-drag}#sidebar-toggle{display:none}}}:host-context(body.theme-w95) .sidebar-header{position:fixed;z-index:1;top:calc(var(--w95-gap) + var(--w95-frame));right:calc(var(--w95-gap) + var(--w95-frame) + var(--wco-right-toolbar, 0px));left:calc(var(--w95-gap) + var(--w95-frame));height:var(--w95-title-height);min-height:0;justify-content:normal;gap:0;padding:0 20px 0 max(2px,env(titlebar-area-x,0px) - var(--w95-gap) - var(--w95-frame));background:var(--w95-title);color:#fff;.brand{display:flex;gap:4px;margin-right:4px;font-size:11px;letter-spacing:0;&:before{content:"";flex:none;width:16px;height:16px;background:url(./icon.svg) center / contain no-repeat}}.brand-button:focus-visible{outline:1px dotted #fff;outline-offset:1px}.brand-tag{padding:0;color:inherit;font-size:inherit;font-weight:inherit;letter-spacing:0;&:before{content:"- " / ""}&[role=button]:hover{color:inherit;background:none}&:focus-visible{outline:1px dotted #fff;outline-offset:1px}}:is(#encryption-toggle,#sidebar-toggle){display:grid;width:16px;height:14px;background:var(--w95-face);box-shadow:var(--w95-raised);-webkit-app-region:no-drag;app-region:no-drag;& svg{display:none}&:active{box-shadow:var(--w95-pressed)}&:focus-visible{outline:1px dotted #000;outline-offset:-4px}}#sidebar-toggle{background:var(--w95-glyph-maximize),var(--w95-face)}#encryption-toggle{background:var(--w95-glyph-unlock),var(--w95-face)}#encryption-toggle:is(.encrypted,.locked-pending){background:var(--w95-glyph-lock),var(--w95-face)}}:host-context(body.theme-w95):host(.collapsed) .sidebar-header #sidebar-toggle{background:var(--w95-glyph-restore),var(--w95-face)}:host-context(body.theme-w95) .sidebar-actions{position:fixed;z-index:1;right:calc(var(--w95-gap) + var(--w95-frame));bottom:calc(var(--w95-gap) + var(--w95-frame));left:calc(var(--w95-gap) + var(--w95-frame));height:var(--w95-status-height);flex-direction:row;justify-content:normal;gap:2px;padding:0;border-top:0;& sidebar-delete-current{display:contents}:is(button,#sync-status,#auth-status,#manage-status,#public-status){display:inline-flex;align-items:center;gap:4px;width:auto;height:100%;max-width:none;padding:0 6px;border:0;background:none;color:var(--text);box-shadow:var(--w95-status);font-size:11px;&:hover{background:none;color:var(--text)}&:active{box-shadow:inset 1px 1px #000,inset -1px -1px #fff;opacity:1}&[hidden]{display:none}}:is(#sync-status,#auth-status){order:-1}#manage-status{order:2}&:after{content:"";flex:1;order:1;align-self:stretch;box-shadow:var(--w95-status)}#sync-status .sync-label{display:inline}}#sidebar-toggle{flex-shrink:0;width:22px;height:22px;display:grid;place-items:center;background:transparent;color:var(--muted);border:0;border-radius:var(--ui-radius, 4px);padding:0;&:hover{color:var(--text);background:rgb(from var(--text) r g b / .06)}}#encryption-toggle{flex-shrink:0;width:22px;height:22px;display:grid;place-items:center;background:transparent;color:var(--muted);border:0;border-radius:var(--ui-radius, 4px);padding:0;&:hover{color:var(--text);background:rgb(from var(--text) r g b / .06)}&.encrypted{color:var(--accent)}&.locked-pending{color:light-dark(#b25b00,#f0a060);outline:1px dashed currentcolor;outline-offset:-2px}}#encryption-toggle[hidden]{display:none!important}.sidebar-search{display:flex;align-items:center;margin:0 .55rem .25rem;padding:0 .25rem 0 .55rem;background:rgb(from var(--bg) r g b / .45);border:1px solid var(--border);border-radius:var(--ui-radius, 7px);transition:background .12s,border-color .12s;-webkit-app-region:no-drag;app-region:no-drag;&:has(input:focus){border-color:var(--accent);background:rgb(from var(--text) r g b / .06)}.sidebar-search-icon{flex-shrink:0;color:var(--muted);pointer-events:none;margin-right:.4rem}& input{flex:1;min-width:0;padding:.3rem 0;background:transparent;color:var(--text);border:0;outline:none;font:inherit;font-size:.78rem;&::placeholder{color:var(--muted)}&:focus::placeholder{color:transparent}&::-webkit-search-cancel-button{display:none}}}sidebar-view-button{display:contents}sidebar-view-button[hidden]{display:none!important}.sidebar-view-btn{position:relative;flex-shrink:0;width:20px;height:20px;display:grid;place-items:center;background:transparent;color:var(--muted);border:0;border-radius:var(--ui-radius, 3px);padding:0;margin-left:2px;transition:background .12s,color .12s;sidebar-view-button+sidebar-view-button>&{margin-left:.4rem}sidebar-view-button:last-of-type>&{margin-right:.1rem}& svg{width:14px;height:14px}&:hover{color:var(--text);background:rgb(from var(--text) r g b / .08)}&.active{color:var(--accent);background:rgb(from var(--text) r g b / .1)}.view-btn-count{position:absolute;top:-4px;right:-4px;background:var(--bg);color:color-mix(in srgb,var(--muted),var(--text) 15%);font-size:8.5px;font-weight:600;border-radius:999px;padding:0 3px;min-width:11px;text-align:center;line-height:11px;font-variant-numeric:tabular-nums;pointer-events:none}&.active .view-btn-count{color:var(--accent)}}#file-list{list-style:none;flex:1;overflow-y:auto;overscroll-behavior:none;scrollbar-gutter:stable;-webkit-app-region:no-drag;app-region:no-drag;padding:0 .35rem .25rem 0;margin:0;scrollbar-width:thin;scrollbar-color:var(--border) transparent;&::-webkit-scrollbar{width:5px}&::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}}.file-group-header{display:flex;align-items:center;justify-content:space-between;padding:.45rem .35rem .2rem .55rem;font-size:.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);user-select:none;&:first-child{padding-top:.25rem}}.file-group-header.workspace-header .workspace-header-actions{display:flex;align-items:center;gap:.35rem}.workspace-add{width:18px;height:18px;display:grid;place-items:center;background:transparent;color:var(--muted);border:1px solid transparent;border-radius:var(--ui-radius, 4px);padding:0;&:hover{color:var(--text);border-color:var(--accent)}}.file-item:is(.workspace-item,.team-item){display:block;border-radius:var(--ui-radius, 0 5px 5px 0)}.workspace-heading{display:flex;align-items:stretch;gap:.15rem}.workspace-meta{display:flex;align-items:center;justify-content:space-between;gap:.35rem;padding:0 .3rem .2rem calc(2rem - 3px);color:var(--muted);font-size:.68rem;line-height:1.3;white-space:nowrap;user-select:none}.workspace-findings{min-width:0;overflow:hidden;text-overflow:ellipsis}.workspace-sections{display:inline-flex;flex-shrink:0;margin-left:auto;border:1px solid var(--border);border-radius:var(--ui-radius, 4px);overflow:hidden}.workspace-sections button{padding:.06rem .25rem;border:0;background:transparent;color:var(--muted);font:inherit;font-size:.64rem;line-height:1.4;font-variant-numeric:tabular-nums;+button{border-left:1px solid var(--border)}&:hover:not(:disabled){background:var(--surface-active);color:var(--text)}&[aria-expanded=true]{background:rgb(from var(--accent) r g b / .1);color:var(--accent)}&:disabled{background:var(--surface-active);color:var(--muted)}}.workspace-share,.workspace-export,.workspace-leave{flex-shrink:0;width:22px;align-self:center;height:22px;display:none;place-items:center;background:transparent;color:var(--muted);border:1px solid transparent;border-radius:var(--ui-radius, 4px);padding:0;&:hover:not(:disabled){color:var(--text);background:rgb(from var(--text) r g b / .06);border-color:var(--accent)}}.file-item.team-item:focus-within .workspace-share{display:grid}@media(hover:none){.file-item.team-item .workspace-share{display:grid}}.workspace-leave:hover:not(:disabled){color:var(--critical, #f87171);border-color:var(--critical, #f87171)}@media(hover:hover){.file-item.team-item:hover .workspace-share,.file-item.workspace-item:hover .workspace-share,.file-item.workspace-item:hover .workspace-export,.file-item.workspace-item:hover .workspace-leave{display:grid}}.workspace-rename-input{width:100%;box-sizing:border-box;background:var(--surface);color:var(--text);border:1px solid var(--accent);border-radius:var(--ui-radius, 3px);padding:0 .25rem;margin:-1px 0;font:inherit;font-size:.76rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;outline:none}.file-item.team-item .team-icon{flex-shrink:0;color:var(--muted)}.file-item.team-bundle-item>.file-name{display:flex;align-items:center;gap:.5rem;width:100%;box-sizing:border-box;background:none;border:0;padding:.2rem .3rem .2rem 1.3rem;font-family:inherit;font-size:.78rem;text-align:left}.file-item.team-bundle-item .file-icon{flex-shrink:0;color:var(--muted)}.file-item.team-bundle-item .file-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.76rem;line-height:14.5px}.file-item{list-style:none;position:relative}.file-item.current:after{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:3px;height:18px;background:var(--accent);border-radius:var(--ui-radius, 0 2px 2px 0);pointer-events:none}.file-item button.file-name{display:flex;align-items:center;gap:.5rem;width:100%;box-sizing:border-box;padding:.2rem .3rem .2rem .55rem;background:transparent;color:var(--text);border:1px solid transparent;border-radius:var(--ui-radius, 0 5px 5px 0);font-family:inherit;font-size:.78rem;text-align:left;&:hover{background:rgb(from var(--text) r g b / .04)}.file-icon{flex-shrink:0;color:var(--muted)}.file-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.76rem;line-height:14.5px}}.file-item:is(.workspace-item,.team-item) button.file-name{flex:1;min-width:0;padding-left:calc(.55rem - 3px)}.file-item .file-count{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;color:var(--muted);opacity:.65;font-size:.68rem;font-weight:500;font-variant-numeric:tabular-nums}.file-item.current button.file-name{background:rgb(from var(--accent) r g b / .09);border-color:rgb(from var(--accent) r g b / .16);.file-icon,.file-count{color:var(--text)}}.file-item.content-hidden button.file-name .file-label{color:var(--muted)}.file-item:is(.workspace-item,.team-item):hover{background:rgb(from var(--text) r g b / .04)}.file-item:is(.workspace-item,.team-item) button.file-name:hover{background:transparent}.file-item:is(.workspace-item,.team-item).current{background:rgb(from var(--accent) r g b / .09);border-radius:var(--ui-radius, 0 5px 5px 0);box-shadow:inset 0 0 0 1px rgb(from var(--accent) r g b / .16)}.file-item:is(.workspace-item,.team-item).current button.file-name{background:transparent;border-color:transparent}:host-context(body.theme-paper) .file-item.current{background:transparent;box-shadow:none;& button.file-name{background:transparent;border-color:transparent}.file-name:after{content:"";position:absolute;inset:0;border:1px dashed var(--border);border-left:0;pointer-events:none}}:host-context(body.theme-w95){.sidebar-search{margin:2px 2px 4px;border:0;background:#fff;box-shadow:var(--w95-sunken);&:has(input:focus){background:#fff}& input{font-size:11px}}.file-group-header{padding-top:.35rem;font-size:11px;color:#000;text-transform:none;letter-spacing:0}.file-item button.file-name{font-size:11px}.file-item.indented:before{background:none;border-left:1px dotted var(--w95-shadow)}#storage-status{border-color:#000;background:var(--w95-tooltip);color:#000;&:hover{border-color:#000;background:var(--w95-tooltip)}}#file-list{padding-right:0;scrollbar-width:auto;scrollbar-color:auto}::-webkit-scrollbar,#file-list::-webkit-scrollbar{width:16px;height:16px;background:var(--w95-dither)}::-webkit-scrollbar-thumb,#file-list::-webkit-scrollbar-thumb{background:var(--w95-face);border-radius:0;box-shadow:var(--w95-raised)}}:host-context(body.theme-w95) ::-webkit-scrollbar-button:single-button{display:block;width:16px;height:16px;background:var(--w95-arrow-down),var(--w95-face);box-shadow:var(--w95-raised)}:host-context(body.theme-w95) ::-webkit-scrollbar-button:single-button:vertical:decrement{background:var(--w95-arrow-up),var(--w95-face)}:host-context(body.theme-w95) .file-item.current{--text: #fff;--muted: var(--w95-light);&:after{display:none}&:is(.workspace-item,.team-item),&:not(.workspace-item,.team-item) button.file-name{background:var(--w95-title);border-color:transparent;box-shadow:none}}button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}@media(prefers-reduced-motion:reduce){:host,*,*:before,*:after{transition:none!important}}.file-item.indented button.file-name{padding-left:1.3rem}.file-item.indented:before{content:"";position:absolute;left:.85rem;top:0;bottom:0;width:1px;background:var(--border)}.file-item.bundle-missing>.file-name,.file-item.report-missing>.file-name{display:flex;align-items:center;gap:.5rem;padding:.2rem .3rem .2rem 1.4rem;color:var(--muted);font-size:.78rem;font-style:italic;cursor:default;.file-icon{flex-shrink:0;color:var(--muted);font-style:normal}.file-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.76rem;line-height:14.5px}}:host-context(body.theme-pink) .workspace-rename-input,:host-context(body.theme-pink) .file-item button.file-name .file-label,:host-context(body.theme-pink) .file-item.bundle-missing .file-label,:host-context(body.theme-pink) .file-item.report-missing .file-label,:host-context(body.theme-w95) .workspace-rename-input,:host-context(body.theme-w95) .file-item button.file-name .file-label,:host-context(body.theme-w95) .file-item.bundle-missing .file-label,:host-context(body.theme-w95) .file-item.report-missing .file-label{font-family:inherit}.file-item.dragging button.file-name{opacity:.4}.file-item.workspace-item.drag-over button.file-name,.file-item.indented.drag-over button.file-name{background:rgb(from var(--accent) r g b / .12);border-color:var(--accent)}.file-group-header.drag-over{background:rgb(from var(--accent) r g b / .12);border-radius:var(--ui-radius, 4px)}.sidebar-actions{padding:.35rem .55rem .45rem;border-top:1px solid var(--border);display:flex;gap:.35rem;align-items:center;justify-content:space-between;& button{background:transparent;border:1px solid var(--border);color:var(--muted);border-radius:var(--ui-radius, 4px);padding:.2rem .5rem;font-size:.72rem;font-family:inherit;-webkit-app-region:no-drag;app-region:no-drag;&:hover{color:var(--text);border-color:var(--accent)}&.danger:hover{color:var(--critical);border-color:var(--critical)}&[disabled]{opacity:.4;border-color:var(--border)!important;color:var(--muted)!important}}}sidebar-delete-current{display:contents}sidebar-delete-current[hidden]{display:none!important}sidebar-delete-current button{display:inline-flex;align-items:center;gap:.35rem;.trash-icon{flex-shrink:0}}#sync-status{display:inline-flex;align-items:center;gap:.35rem;border-color:transparent;&:hover{border-color:var(--accent)}.sync-dot{width:8px;height:8px;border-radius:50%;background:var(--muted);flex-shrink:0;box-shadow:0 0 0 1px rgb(from var(--text) r g b / .15)}&[data-status=online] .sync-dot{background:var(--green)}&[data-status=connecting] .sync-dot{background:var(--medium)}&[data-status=offline] .sync-dot{background:var(--critical)}}#sync-status[data-proxy-auth] .sync-dot{box-shadow:0 0 0 2px var(--accent)}#sync-status[data-degraded] .sync-dot{box-shadow:0 0 0 2px var(--medium)}#sync-status[hidden]{display:none}#storage-status{display:flex;align-items:center;gap:.4rem;margin:.3rem .55rem .45rem;padding:.3rem .55rem;background:rgb(from var(--medium) r g b / .12);border:1px solid rgb(from var(--medium) r g b / .3);border-radius:var(--ui-radius, 5px);color:light-dark(#b25b00,#f0a060);font-size:.72rem;font-family:inherit;cursor:default;text-align:left;-webkit-app-region:no-drag;app-region:no-drag;&:hover{background:rgb(from var(--medium) r g b / .18);border-color:rgb(from var(--medium) r g b / .5)}.storage-dot{width:7px;height:7px;border-radius:50%;background:var(--medium);flex-shrink:0}}#storage-status[hidden]{display:none}#view-as-status{display:flex;align-items:center;gap:.4rem;margin:.3rem .55rem .45rem;padding:.3rem .3rem .3rem .55rem;background:rgb(from var(--accent) r g b / .12);border:1px solid rgb(from var(--accent) r g b / .35);border-radius:var(--ui-radius, 5px);color:var(--text);font-size:.72rem;user-select:none;-webkit-app-region:no-drag;app-region:no-drag;.view-as-label{flex:1;display:grid;gap:.05rem;min-width:0}.view-as-label>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.view-as-note{color:var(--muted);font-size:.66rem}.view-as-stop{flex-shrink:0;padding:.15rem .5rem;font:inherit;font-weight:500}}#view-as-status[hidden]{display:none}#auth-status[hidden],#manage-status[hidden]{display:none!important}#auth-status{display:inline-flex;align-items:center}#auth-status[data-authed="1"]{display:inline-flex;align-items:center;gap:.4rem;max-width:12rem;padding:.2rem .35rem;border-color:transparent;border-radius:var(--ui-radius, 5px)}#auth-status[data-authed="1"]:hover{border-color:transparent;background:rgb(from var(--text) r g b / .07)}#manage-status[hidden]{display:none}#manage-status{display:inline-grid;place-items:center;width:1.8rem;height:1.8rem;padding:.25rem;border-color:transparent;color:var(--muted)}#manage-status:hover{border-color:transparent;background:rgb(from var(--text) r g b / .07)}#public-status{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:.2rem 0;color:var(--muted);font-size:.72rem;user-select:none}#public-status[hidden]{display:none}.auth-login{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text);font:inherit;font-size:.72rem;font-weight:400}.user-avatar{position:relative;flex-shrink:0;width:22px;height:22px;border-radius:50%;overflow:hidden;background:var(--accent);display:inline-grid;place-items:center;user-select:none}.user-avatar-lg{width:38px;height:38px}.user-avatar-fallback{font-size:.72rem;font-weight:600;line-height:1;color:var(--bg);text-transform:uppercase}.user-avatar-lg .user-avatar-fallback{font-size:1.05rem}.user-avatar img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.user-avatar img.broken{display:none}.user-menu[popover]{position:fixed;inset:auto;margin:0;min-width:11rem;flex-direction:column;gap:.1rem;background:var(--surface, var(--bg));border:1px solid var(--border);border-radius:var(--ui-radius, 6px);padding:.3rem;box-shadow:0 4px 14px #00000047}.user-menu[popover]:not(:popover-open){display:none}.user-menu[popover]:popover-open{display:flex}.user-card{display:flex;align-items:center;gap:.5rem;padding:.3rem .35rem .45rem;border-bottom:1px solid var(--border);margin-bottom:.2rem}.user-id{display:flex;flex-direction:column;min-width:0}.user-login{font-weight:600;font-size:.82rem;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-name{font-size:.74rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-menu-row{display:block;width:100%;text-align:left;background:transparent;border:0;border-radius:var(--ui-radius, 4px);padding:.4rem .5rem;font:inherit;font-size:.82rem;color:var(--text)}.user-menu-row.logout-row{display:inline-flex;align-items:center;gap:.4rem;font-size:.76rem}.logout-row svg{flex:0 0 auto}.user-menu-row:hover{background:rgb(from var(--text) r g b / .08)}:host-context(body.theme-w95) *{overscroll-behavior:none}
190
- `,lq=`:is(.file-icon,.report-logo){&.brand-deepview{--brand-bg: #2563eb;--brand-fg: #fff}&.brand-claude{--brand-bg: #d97757;--brand-fg: #fff}&.brand-codex{--brand-bg: #fff;--brand-fg: #000}&.brand-vercel{--brand-bg: #000;--brand-fg: #fff}&.brand-markdown{--brand-bg: #374151;--brand-fg: #fff}&.brand-piolium{--brand-bg: #fbb829;--brand-fg: #1c1b19}.bg{fill:var(--brand-bg)}.fg{fill:var(--brand-fg)}}.file-icon:is(.brand-codex,.brand-vercel) .bg{stroke:var(--brand-fg);stroke-width:.5}.report-logo{display:grid;place-items:center;align-self:stretch;flex:0 0 20px;background:var(--brand-bg);border-right:1px solid var(--border)}
191
- `,uq=null,dq=null,fq=!1,pq=!1,mq=0;function hq(){let e=navigator.userAgent;return/AppleWebKit/u.test(e)&&!/Chrome\/|Chromium|Edg\/|OPR\/|Android/u.test(e)?`webkit`:/Firefox\//u.test(e)?`firefox`:`chromium`}function gq(){return hq()===`webkit`}function _q(e){return e>=1e9?`${(e/1e9).toFixed(1)} GB`:e>=1e6?`${(e/1e6).toFixed(1)} MB`:e>=1e3?`${(e/1e3).toFixed(1)} kB`:`${e} B`}function vq(){if(!uq)return;if(I()||!dq||dq.persisted!==!1||!fq){uq.hidden=!0;return}uq.hidden=!1;let e=dq.usage===null||dq.quota===null?``:` Using ${_q(dq.usage)} of ${_q(dq.quota)}.`;uq.querySelector(`.storage-label`).textContent=`Storage at risk`,uq.dataset.tooltip=`Reports, bundles and triage are in best-effort storage — the browser may delete them all under disk pressure or after long inactivity. `+(gq()?`Click for how to protect them (on Safari and iOS browsers this needs the app installed to the Home Screen or Dock).`:`Click to request persistent storage — if the browser declines, instructions for enabling it follow.`)+e}function yq(e,t){let n=t?` (user gesture)`:``;if(e){console.info(`storage: persistent-storage request granted${n}`);return}let r=!gq()&&location.hostname===`localhost`?` Note: plain localhost can NEVER pass — Chromium keys site importance by registerable domain (IP literals excepted) and localhost has none; for local testing use 127.0.0.1 instead.`:``;console.info(`storage: persistent-storage request not granted${n} \u2014 `+(gq()?`Safari ties persistence to install state; add the app to the Home Screen / Dock.`:`Chromium-based browsers never prompt and silently deny origins they don't consider important; installing the app, bookmarking it, allowing notifications, or regular use flips the heuristic (re-evaluated on every request). Firefox shows a prompt instead.`)+r)}async function bq(){if(await uX(),!uq||I()){vq();return}let[e,t]=await Promise.all([_p(),(async()=>{try{return(await Vc()).length>0||await sl()}catch{return!1}})()]);dq=e,fq=t,vq()}function xq(){!uq||mq||(mq=setTimeout(()=>{mq=0,bq()},1e3))}async function Sq(){pq||(await bq(),I()||dq?.persisted!==!1||!fq||pq)||(pq=!0,yq(await gp(),!1),await bq())}async function Cq(){if(dq&&dq.persisted===!1){pq=!0;let e=await gp();yq(e,!0),e||await Oe()}await bq()}function wq(e){uq=e,uq&&(uq.addEventListener(`click`,()=>{Cq()}),zc((e,t)=>{xq(),t===`save`&&Sq()}),Sq())}function Tq(e){let t=document.querySelector(`#landing-workspaces`);if(!t)return;let n=e.filter(e=>e.reports.length>0||e.bundles?.length>0).toSorted((e,t)=>t.reports.length-e.reports.length||e.name.localeCompare(t.name)).slice(0,5);N(n.length>0?A`<nav class="landing-workspaces" aria-label="Workspaces"><div class="landing-workspace-row">${D(n,e=>e.id,e=>{let t=Dm(e),n=e.reports.filter(e=>Ru(e)!==d).length;return A`<button type="button" class="landing-workspace" data-landing-workspace="${e.id}">${k(Zi)} <span class="landing-workspace-text"><span class="landing-workspace-name">${e.name}</span> <span class="landing-workspace-count">${t?.appMode?`${t.appFindings.toLocaleString()} finding${t.appFindings===1?``:`s`} \xB7 `:``}${n.toLocaleString()} report${n===1?``:`s`}</span></span></button>`})}</div></nav>`:M,t)}var Eq=null;function Dq(e){return{reports:e.reports.filter(e=>e?.analyzer!==`links`).length,bundles:e.bundles?.length??0,repositories:new Set((e.repos??[]).map(e=>e.repoId)).size}}function Oq(e){let t=(e,t,n=`${t}s`)=>`${e.toLocaleString()} ${e===1?t:n}`,n=TH(e.app),{reports:r,bundles:i,repositories:a}=Dq(e);return[n==null?null:t(n,`finding`),r?t(r,`report`):null,i?t(i,`bundle`):null,a?t(a,`repository`,`repositories`):null].filter(Boolean).join(` · `)}function kq(e){let{serverMode:t,session:n,sessionPending:r=!1,teamsPending:i=!1,teams:a=[],alternateMode:o=`local`,onSwitchMode:s}=e,c=document.querySelector(`#drop-zone`),l=c?.querySelector(`.managed-landing`);if(!l)return;let u=t===`managed`,d=t===`local`,f=u&&(n?n.role!==`none`&&i:r);f?Eq?Eq.options=e:Eq={options:e,elapsed:!1,timer:setTimeout(()=>{Eq.elapsed=!0,kq(Eq.options)},1e3)}:(clearTimeout(Eq?.timer),Eq=null);let p=f&&!Eq.elapsed;c.dataset.serverMode=u?`managed`:`local`,c.setAttribute(`aria-label`,u?p?n?`Loading teams`:`Loading session`:n?.role===`none`?`No workspace access`:n?`Team findings`:`Log in`:`Drop reports here`);let m=c.querySelector(`.drop-local-copy`);if(m&&(m.textContent=d?`Review locally in your browser.`:`Review locally in your browser. Sync across devices when you need it.`),!u||p){N(M,l);return}let h=n?.role===`admin`||n?.role===`manage`,g=a.filter(e=>Object.values(Dq(e)).some(Boolean));if(Ke()&&!n){N(A`<section class="managed-login"><h1>Public link unavailable</h1><p>This link is invalid, has been revoked, or public sharing is disabled.</p></section>`,l);return}N(n==null?A`<section class="managed-login"><button type="button" class="managed-login-button" data-managed-login><svg viewBox="0 0 16 16" width="20" height="20" fill="currentColor" aria-hidden="true"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"/></svg> <span>Continue with GitHub</span></button><div class="managed-login-alternative"><span>or continue to</span> <button type="button" @click="${s}">${o} mode</button></div></section>`:n.role===`none`?A`<section class="managed-login" aria-labelledby="managed-no-access-title"><h1 id="managed-no-access-title">No workspace access</h1><p>Ask an administrator to grant access to this workspace.</p></section>`:A`<div class="managed-landing-hero"><p class="drop-eyebrow">Your security workspace</p><h1>Your team's findings, in focus.</h1><p class="drop-prompt-intro">${g.length>0?`Review the security findings shared with your account and turn them into clear next steps.`:`Reports shared with your teams will appear here.`}</p></div>${g.length>0?A`<nav class="managed-team-list" aria-label="Teams">${D(g,e=>e.id,e=>A`<button type="button" class="managed-team-button" data-managed-team="${e.id}"><span class="managed-team-icon" aria-hidden="true">${k(Zi)}</span> <span class="managed-team-copy"><strong>${e.name}</strong> <span>${Oq(e)}</span> </span><svg class="managed-team-arrow" width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><path d="m6 4 4 4-4 4"/></svg></button>`)}</nav>`:A`<p class="managed-landing-empty">No team reports are available yet.</p>`}<nav class="managed-content-links" aria-label="Content and activity">${[...h?[[`manage-bundles`,`Bundles`,Yi],[`manage-scans`,`Scans`,ta],[`manage-reports`,`Reports`,na]]:[],[`npm`,`npm packages`,Xi]].map(([e,t,n])=>A`<button type="button" class="managed-content-card" data-managed-page="${e}"><span class="managed-content-icon" aria-hidden="true">${k(n)}</span> <span>${t}</span></button>`)}</nav>${h?A`<div class="managed-landing-actions"><button type="button" class="managed-manage-button" data-managed-page="manage"><span aria-hidden="true">${k($i)}</span><span>Manage</span></button></div>`:M}`,l)}var Aq=!1,jq=null;function Mq(){if(!Aq){jq=lc();return}Bf().catch(()=>{}),dd().catch(()=>{})}function Nq(){if(Aq)return;Aq=!0;let e=jq;jq=null,e!==null&&e===lc()&&Mq()}async function Pq(e){await ze({workspace:e})}var Fq=class extends Ov{focusInitial(){this.renderRoot.querySelector(`button.primary`)?.focus()}_onReload=()=>this._finish(`reload`);render(){return A`<dialog @close="${this._onClose}"><header><h3>Sign in to keep syncing</h3></header><p class="nwd-intro ui-hint">Triage can't reach the sync server — the connection is being redirected to an <strong>authentication proxy</strong> (for example Cloudflare Access). This usually means your access session has expired.</p><p class="nwd-note ui-hint">Reload the page to sign in again. Your triage is saved on this device, so reloading won't lose anything — or keep working offline and reload later.</p><footer class="nwd-actions"><span class="nwd-spacer"></span> <button type="button" @click="${this._onClose}">Not now</button> <button type="button" class="primary" @click="${this._onReload}">Reload page</button></footer></dialog>`}};customElements.define(`proxy-auth-dialog`,Fq);function Iq(){return new Promise(e=>{let t=document.createElement(`proxy-auth-dialog`);t.exclusive=!0;let n=(n,r)=>{t.remove(),e({shown:n,reload:r})};t.addEventListener(`resolve`,e=>n(!0,e.detail===`reload`)),t.addEventListener(`modal-conflict`,()=>n(!1,!1)),document.body.append(t)})}async function Lq(e,{openManagedReport:t,readTeam:n=vx,isCurrent:r=()=>!0}){let i=F.managedSession,a=()=>r()&&I()&&F.managedSession?.id===i?.id&&F.managedSession?.role===i?.role,o=F.managedTeams;if(!a())return null;async function s(n,r){return!a()||(F.currentManagedTeam!==n.id||F.currentManagedReport!==r)&&!await t(n,r)||!a()||F.currentManagedTeam!==n.id||F.currentManagedReport!==r?null:UC(e.id)}if(e.teamId){let t=o.find(t=>t.id===e.teamId);return!t||e.reportId&&!t.reports.some(t=>t.id===e.reportId)?null:s(t,e.reportId??null)}let c=o.flatMap(e=>e.reports.map(t=>({team:e,report:t}))),l=new Set,u=new Map;async function d(t){for(let{team:r,report:i}of t){if(!a())return null;if(l.has(`${r.id}:${i.id}`))continue;l.add(`${r.id}:${i.id}`),u.has(r.id)||u.set(r.id,await n(r.id));let t=u.get(r.id)?.find(e=>e.id===i.id);if(!a())return null;if(t==null)continue;let o=await re(JSON.stringify(t.data),i.filename);if(!a())return null;if(o?.findings.some(t=>t.id===e.id))return s(r,i.id)}return null}if(e.report){let t=await Promise.all(c.map(({report:e})=>zr(`report`,e.filename))),n=await d(c.filter((n,r)=>t[r]===e.report));if(n||!a())return n}if(e.workspace){let t=o[(await Promise.all(o.map(e=>zr(`workspace`,`managed-team:${e.id}`)))).indexOf(e.workspace)];if(t){let e=await s(t,null);if(e||!a())return e}}if(!a())return null;let f=o.find(e=>e.id===F.currentManagedTeam);if(f&&(F.currentManagedReport==null||f.reports.some(e=>e.id===F.currentManagedReport))){let t=UC(e.id);if(t)return t}return d(c)}async function Rq(e,t,n,{openReport:r,openManagedReport:i}){if(I()){let e=F.managedTeams.find(e=>e.id===F.currentManagedTeam);if(!n||!e?.reports.some(e=>e.id===n)||(F.currentManagedReport!==n||F.currentWorkspace)&&!await i(e,n)||!I()||F.currentManagedTeam!==e.id||F.currentManagedReport!==n||F.currentWorkspace)return null}else if(n||((F.currentFile!==t||F.currentWorkspace)&&await r(t),I()||F.currentFile!==t||F.currentWorkspace))return null;return UC(e)}async function zq(e,t){if(I())return Lq(e,t);let{openReport:n,openWorkspace:r}=t,[i,a]=await Promise.all([np(e.report),tp(e.workspace)]);async function o(t){let r=HC(t,a?.id);return(F.currentFile!==t||F.currentWorkspace||F.currentReportWorkspace!==r)&&await n(t,void 0,{workspaceId:r}),UC(e.id)}if(i){let e=await o(i);if(e)return e}if(a){F.currentWorkspace!==a.id&&await r(a.id);let t=UC(e.id);if(t)return t}let s=UC(e.id);if(s)return s;let c=F.reports.map(e=>e.fileName).filter(Boolean),l=await ip(e.id,{skip:c});return l?await o(l):null}var Bq=1600,Vq=`link-target`,Hq=`Couldn't find that finding in any of your reports. Import the report it came from, then open the link again.`,Uq=null,Wq=3,Gq=150,Kq=5;function qq(e){Uq!==null&&clearTimeout(Uq);for(let e of document.querySelectorAll(`.${Vq}`))e.classList.remove(Vq);e.classList.add(Vq),Uq=setTimeout(()=>{e.classList.remove(Vq),Uq=null},Bq)}function Jq(e){return new Promise(t=>{let n=null,r=0,i=0,a=()=>{let o=Math.round(e.getBoundingClientRect().top);r=o===n?r+1:0,n=o,r>=Wq||++i>=Gq?t():requestAnimationFrame(a)};requestAnimationFrame(a)})}function Yq(e){let t=0,n=window.innerHeight,r=QU(e);if(r){let e=r.getBoundingClientRect();t=Math.max(t,e.top),n=Math.min(n,e.bottom)}return{top:t,bottom:n}}function Xq(e){let t=e.getBoundingClientRect();if(t.height===0)return!1;let{top:n,bottom:r}=Yq(e);if(r<=n)return!1;let i=(n+r)/2;return t.top>=n&&t.bottom<=r||t.top<=i&&t.bottom>=i}async function Zq(e){e.scrollIntoView({block:`center`,behavior:`smooth`});for(let t=0;t<Kq;t++){if(await Jq(e),!e.isConnected||Xq(e))return;e.scrollIntoView({block:`center`,behavior:`instant`})}}async function Qq(e){let t=CSS.escape(e);if(F.viewMode===`table`){let t=z.querySelector(`finding-table`);if(t){try{await t.updateComplete}catch{}for(let n of t.shadowRoot?.querySelectorAll(`finding-row`)??[])if(n.group&&H(n.group)===e)return n}}if(F.viewMode===`kanban`){let e=z.querySelector(`.kanban-card[data-gid="${t}"]`);if(e)return e}return z.querySelector(`finding-card[data-gid="${t}"]`)??z.querySelector(`[data-gid="${t}"]`)}async function $q(e,t,n=()=>!0){let r=WC(e.group,t),i=n_(r);if(i&&Kg(i)&&queueMicrotask(Dd),X(),await Q({revealSelection:!0}),!n())return{ok:!1};let a=await Qq(r);return n()?a?(typeof a.ensureRendered==`function`&&await a.ensureRendered(),await Zq(a),n()?(qq(a),{ok:!0}):{ok:!1}):{ok:!0}:{ok:!1}}async function eJ(e,{openManagedReport:t=FL,isCurrent:n=()=>!0}={}){if(!e?.id)return{ok:!1,reason:`This link is missing a finding id.`};let r=await zq(e,{openReport:ML,openWorkspace:LL,openManagedReport:t,isCurrent:n});return n()?r?await $q(r,e.id,n):{ok:!1,reason:I()?`Couldn't find that finding in the team reports you can access.`:Hq}:{ok:!1}}async function tJ(e,t,n=null){if(!e||!t)return{ok:!1,reason:`Missing finding id or report name.`};let r=await Rq(e,t,n,{openReport:ML,openManagedReport:FL});return r?await $q(r,e):{ok:!1,reason:n?`Could not open that finding in "${t}". Open the team and try again.`:`Couldn't find that finding in "${t}". It may have been re-imported since this links file was written.`}}var nJ=null,Z=null,rJ=null;function iJ(e){let t=document.querySelector(`#drop-zone`);t&&(e?t.dataset.serverModePending=`true`:delete t.dataset.serverModePending)}lr();function aJ(){return Of().size}function oJ(){return kf().size}var sJ=typeof location>`u`||location.hostname.endsWith(`.github.io`)?``:`${location.protocol===`https:`?`wss:`:`ws:`}//${location.host}/api/sync`,cJ=`application/x-deepview-report`,lJ=`application/x-deepview-source-ws`,uJ=`application/x-deepview-bundle`,dJ=!1,fJ=!1,pJ={default:`Reports`,"claude-security":`Claude Security`,"codex-security":`Codex Security`,deepsec:`DeepSec`,piolium:`Piolium`,"markdown-generic":`Markdown (generic)`,[d]:`Links`},mJ=[`default`,`claude-security`,`codex-security`,`deepsec`,`piolium`,`markdown-generic`,d],hJ=``,gJ=!1,_J=new Map,vJ=``,yJ=new EH;function bJ(e,t){let n=F.currentView===`bundles`?F.selectedBundle:null,r=[`findings`,`files`,`links`].includes(F.currentView)?F.currentFile:null,i=n?`bundles`:`reports`,a=r?HC(r):null,o=e.filter(e=>n?e.bundles.includes(n):e.id===a),s=JSON.stringify([i,n||r,o.map(e=>e.id)]);if(t||s!==vJ){vJ=s;for(let e of o){let t=_J.get(e.id)??new Set;t.add(i),_J.set(e.id,t)}}}function xJ(e,t={}){let n=`file-item${SJ(e,t.workspaceId??null)?` current`:``}${t.indented?` indented`:``}`,r=x(e),i=Lu(e),a=Wx[Jx(e)]??Wx.default;return A`<li class="${n}" data-file="${e}" data-workspace-id="${t.workspaceId??M}" draggable="true"><button type="button" class="file-name" data-tooltip="${r}">${k(a)}<span class="file-label">${r}</span>${i===void 0?M:A`<span class="file-count">${i}</span>`}</button></li>`}function SJ(e,t){return e===F.currentFile&&t===HC(e)&&(F.currentView===`findings`||F.currentView===`files`||F.currentView===`links`)}function CJ(e,t={}){let n=`file-group-header${t.dropTarget?` default-reports`:``}`;return A`<li class="${n}" data-default-reports="${t.dropTarget?`true`:M}"><span class="group-label">${e}</span></li>`}var wJ=A`<svg viewBox="0 0 16 16" width="11" height="11" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" aria-hidden="true"><path d="M8 3.5v9M3.5 8h9"/></svg>`,TJ=A`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.35" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M8 2.5H3.5v11H8M10 5l3 3-3 3M13 8H6"/></svg>`;function EJ(){return A`<li class="file-group-header workspace-header"><span class="group-label">Workspaces</span><span class="workspace-header-actions"><button type="button" class="workspace-add" data-action="new-workspace" aria-label="Create a new workspace">${wJ}</button></span></li>`}function DJ(){let e=CH(F.managedTeams,hJ);return e.length===0?M:A`${CJ(`Teams`)} ${D(e,({team:e})=>e.id,({team:e,reports:t,bundles:n})=>{let r=e.app,i=wH(r,(e.reports??[]).filter(e=>e.analyzer!==d).length),a=yJ.shown(e.id,`reports`,i,gJ),o=yJ.shown(e.id,`bundles`,i,gJ),s=t.filter(e=>e.analyzer!==d).length,c=TH(r);return A`<li class="${`file-item team-item${jJ(e)?` current`:``}`}" data-team-id="${e.id}"><div class="workspace-heading"><button type="button" class="file-name" @click="${()=>{FL(e)}}">${WJ}<span class="file-label">${e.name}</span></button> ${F.managed?.allowShare&&[`admin`,`manage`].includes(F.managedSession?.role)?A`<button type="button" class="workspace-share" aria-label="${`Share ${e.name} publicly`}" @click="${()=>{ex(e)}}">${qJ}</button>`:M}</div>${i?A`<div class="workspace-meta">${c===null?M:A`<span class="workspace-findings">${c.toLocaleString()} finding${c===1?``:`s`}</span>`} <span class="workspace-sections" role="group" aria-label="Team files"><button type="button" data-team-section="reports" aria-expanded="${String(a)}" ?disabled="${gJ}">${s.toLocaleString()} report${s===1?``:`s`}</button> ${n.length>0?A`<button type="button" data-team-section="bundles" aria-expanded="${String(o)}" ?disabled="${gJ}">${n.length.toLocaleString()} bundle${n.length===1?``:`s`}</button>`:M}</span></div>`:M}</li>${a?D(t,e=>e.id,t=>PJ(e,t)):M} ${o?D(n,e=>e.id,t=>IJ(e,t)):M}`})}`}function OJ(e,t,n,r){return A`<li><button type="button" class="${n?`rail-item current`:`rail-item`}" aria-label="${e}" aria-current="${n?`true`:M}" data-tooltip="${e}" @click="${r}">${t}<span aria-hidden="true">${JK(e)}</span></button></li>`}function kJ(){return D(F.managedTeams??[],e=>e.id,e=>OJ(e.name,WJ,jJ(e)||(e.reports??[]).some(t=>MJ(e,t))||(e.bundles??[]).some(t=>NJ(e,t)),()=>{FL(e)}))}function AJ(e){return D(e,e=>e.id,e=>OJ(e.name,UJ,JJ(e)||e.reports.some(t=>SJ(t,e.id))||e.bundles.some(t=>zJ(t,e.id)),()=>tY(e.id)))}function jJ(e){return F.currentManagedTeam===e.id&&!!F.currentWorkspace&&[`findings`,`files`,`workspace-reports`,`workspace-bundles`,`workspace-repositories`,`workspace-dependencies`].includes(F.currentView)}function MJ(e,t){return F.currentManagedTeam===e.id&&F.currentManagedReport===t.id&&[`findings`,`links`].includes(F.currentView)}function NJ(e,t){return F.currentManagedTeam===e.id&&Fx(F)===t.id}function PJ(e,t){let n=x(t.filename),r=MJ(e,t);return A`<li class="${`file-item indented team-report-item${t.visible===!1?` content-hidden`:``}${r?` current`:``}`}"><button type="button" class="file-name" aria-label="${t.visible===!1?`${n} (hidden from teams)`:M}" data-tooltip="${n}" data-tooltip-repo="${xH(t)||M}" data-tooltip-placement="right-start" @click="${()=>{FJ(e,t)}}">${k(Wx[Yx(t.filename,t.analyzer)])}<span class="file-label">${n}</span></button></li>`}function FJ(e,t){return FL(e,t.id)}function IJ(e,t){let n=NJ(e,t);return A`<li class="${`file-item indented team-bundle-item${t.visible===!1?` content-hidden`:``}${n?` current`:``}`}"><button type="button" class="file-name" aria-label="${t.visible===!1?`${t.filename} (hidden from teams)`:M}" data-managed-bundle="${t.id}" data-managed-team="${e.id}" data-tooltip="${t.filename}" data-tooltip-repo="${xH(t)||M}" data-tooltip-bundle="${t.kind||M}" data-tooltip-built="${t.provenance===`build`?`true`:M}" data-tooltip-stats="${SH(t)||M}" data-tooltip-commit="${t.summary?.commit||M}" data-tooltip-commit-info="${it(t.commitInfo,t.summary?.commit,t.repoFullName)??M}" data-tooltip-placement="right-start">${RJ}<span class="file-label">${t.filename}</span></button></li>`}function LJ(){return A`<li class="file-group-header bundles-header" data-default-bundles="true"><span class="group-label">Bundles</span></li>`}var RJ=A`${k(Yi)}`;function zJ(e,t){return F.selectedBundle===e&&F.currentView===`bundles`&&t===F.selectedBundleWorkspace}function BJ(e,t={}){let{integrity:n,name:r}=e,i=zJ(n,t.workspaceId??null),a=`file-item bundle-item${t.workspaceId==null?``:` indented`}${i?` current`:``}`;return A`<li class="${a}" data-bundle-integrity="${n}" data-workspace-id="${t.workspaceId??M}" draggable="true"><button type="button" class="file-name" data-tooltip="${`${r}
192
- ${n}`}">${RJ}<span class="file-label">${r}</span></button></li>`}function VJ(e,t){let n=e.slice(0,15);return A`<li class="file-item indented bundle-item bundle-missing" data-bundle-integrity="${e}" data-workspace-id="${t}" data-tooltip="Bundle bytes not on this device — drop the matching bundle to attach."><span class="file-name"><span class="file-icon" aria-hidden="true">?</span><span class="file-label"><em>missing · ${n}…</em></span></span></li>`}function HJ(e,t){return A`<li class="file-item indented report-missing" data-workspace-id="${t}" data-tooltip="Report not on this device — it re-downloads automatically if a workspace member has uploaded it."><span class="file-name"><span class="file-icon" aria-hidden="true">?</span><span class="file-label"><em>missing · ${x(e)}</em></span></span></li>`}var UJ=A`${k(Zi)}`,WJ=A`<svg class="team-icon" viewBox="0 0 16 16" width="13" height="13" fill="currentColor" aria-hidden="true"><path d="M5.5 8a2.25 2.25 0 1 0 0-4.5 2.25 2.25 0 0 0 0 4.5Zm0 1C3.2 9 1.75 10.2 1.75 11.6V13h7.5v-1.4C9.25 10.2 7.8 9 5.5 9Zm5.25-1a2 2 0 1 0 0-4 2 2 0 0 0 0 4Zm.25 1c-.43 0-.83.05-1.2.15.86.62 1.45 1.5 1.45 2.45V13h3.25v-1.3C14.5 10.1 13.15 9 11 9Z"/></svg>`,GJ=A`<svg viewBox="0 0 16 16" width="11" height="11" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M8 2v8M5 7l3 3 3-3M3 13h10"/></svg>`,KJ=A`<svg viewBox="0 0 16 16" width="11" height="11" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M9 3H4v10h5"/><path d="M7 8h7M11 5l3 3-3 3"/></svg>`,qJ=A`<svg viewBox="0 0 16 16" width="11" height="11" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 9.5L9 7.5"/><path d="M9.5 5.5L10.5 4.5a2.1 2.1 0 1 1 3 3l-1 1"/><path d="M6.5 11.5L5.5 12.5a2.1 2.1 0 1 1-3-3l1-1"/></svg>`;function JJ(e){return F.currentWorkspace===e.id&&[`findings`,`files`,`workspace-reports`,`workspace-bundles`].includes(F.currentView)}function YJ(e,{app:t,compact:n,reports:r,bundles:i,showReports:a,showBundles:o}){let s=`file-item workspace-item${JJ(e)?` current`:``}`;return A`<li class="${s}" data-workspace-id="${e.id}"><div class="workspace-heading"><button type="button" class="file-name">${UJ}<span class="file-label" .textContent="${e.name}"></span></button> <button type="button" class="workspace-share" data-action="share-workspace" aria-label="Share workspace by link">${qJ}</button> <button type="button" class="workspace-export" data-action="export-workspace" aria-label="Export workspace">${GJ}</button> <button type="button" class="workspace-leave" data-action="leave-workspace" aria-label="Leave workspace">${KJ}</button></div>${n?A`<div class="workspace-meta">${t?.appMode?A`<span class="workspace-findings">${t.appFindings.toLocaleString()} finding${t.appFindings===1?``:`s`}</span>`:M} <span class="workspace-sections" role="group" aria-label="Workspace files"><button type="button" data-workspace-section="reports" aria-expanded="${String(a)}" ?disabled="${gJ}">${r.toLocaleString()} report${r===1?``:`s`}</button> ${i>0?A`<button type="button" data-workspace-section="bundles" aria-expanded="${String(o)}" ?disabled="${gJ}">${i.toLocaleString()} bundle${i===1?``:`s`}</button>`:M}</span></div>`:M}</li>`}function XJ(e){return!hJ||x(e).toLowerCase().includes(hJ)}var ZJ=(e,t)=>x(e).localeCompare(x(t));async function Q({revealSelection:e=!1}={}){await uX();let t=lc();if(kq({serverMode:t,session:F.managedSession,teams:F.managedTeams,sessionPending:NY,teamsPending:PY,alternateMode:an(F.serverModeConfig)?`e2e`:`local`,onSwitchMode:eY}),ZL(),I()){if(yJ.sync(F,e),!NY&&!PY&&!MY&&!FY&&iL({catalogOnly:!0}),F.bundles=(F.bundles??[]).filter(e=>e.managedId||e.npm||e.repository),F.storedFiles=[],Tq([]),!Z)return;N(A`${DJ()}`,rJ);let t=Z.querySelector(`#sidebar-rail`);t?.setAttribute(`aria-label`,`Teams`),t&&N(kJ(),t),Z.querySelector(`sidebar-view-button[kind="packages"]`)?.setAttribute(`hidden`,``),Z.querySelector(`sidebar-view-button[kind="repositories"]`)?.setAttribute(`hidden`,``),Z.querySelector(`#storage-status`)?.setAttribute(`hidden`,``),mY();return}if(yJ.sync({managedTeams:[]}),Z?.querySelector(`sidebar-view-button[kind="packages"]`)?.removeAttribute(`hidden`),Z?.querySelector(`sidebar-view-button[kind="repositories"]`)?.removeAttribute(`hidden`),await up(),t!==lc()){await Q();return}Mq();let n=await Vc();if(t!==lc()){await Q();return}let r=R();bJ(r,e),Tq(r);let[i]=await Promise.all([ol(),...r.map(e=>zr(`workspace`,e.id))]);if(t!==lc()){await Q();return}if(F.bundles=i,F.storedFiles=n,xq(),!Z)return;let a=new Set(n),o=new Set;for(let e of r)for(let t of e.reports)a.has(t)&&o.add(t);let s=new Map(i.map(e=>[e.integrity,e])),c=new Set;for(let e of r)for(let t of e.bundles)s.has(t)&&c.add(t);let l=new Map;for(let e of mJ)l.set(e,[]);for(let e of n){if(o.has(e)||!XJ(e))continue;let t=Jx(e);l.has(t)||l.set(t,[]),l.get(t).push(e)}let u=r.filter(e=>!hJ||e.name.toLowerCase().includes(hJ)||e.reports.some(e=>XJ(e))?!0:e.bundles.some(e=>{let t=s.get(e);return t&&XJ(t.name)})),f=i.filter(e=>!c.has(e.integrity)&&XJ(e.name));N(A`${EJ()} ${D(u,e=>e.id,e=>{let t=[],n=[];for(let r of e.reports)XJ(r)&&(a.has(r)?t.push(r):n.push(r));t.sort(ZJ),n.sort(ZJ);let r=[],i=[];for(let t of e.bundles){let e=s.get(t);e?(!hJ||XJ(e.name))&&r.push(e):hJ||i.push(t)}let o=gL(e)??Dm(e),c=o?.appMode??Em(e)===!0,l=_J.get(e.id),u=!c||gJ||l?.has(`reports`)===!0,f=!c||gJ||l?.has(`bundles`)===!0,p=[...t,...n].filter(e=>Ru(e)!==d).length,m=r.length+i.length;return A`${YJ(e,{app:o,compact:c,reports:p,bundles:m,showReports:u,showBundles:f})} ${u?A`${t.map(t=>xJ(t,{indented:!0,workspaceId:e.id}))}${n.map(t=>HJ(t,e.id))}`:M} ${f?A`${r.map(t=>BJ(t,{workspaceId:e.id}))}${i.map(t=>VJ(t,e.id))}`:M}`})} ${mJ.map(e=>{let t=(l.get(e)??[]).toSorted(ZJ),n=e==="default";return t.length===0&&!(n&&dJ)?null:A`${CJ(pJ[e]??e,{dropTarget:n})} ${t.map(e=>xJ(e))}`})} ${f.length>0||fJ?LJ():null} ${D(f,e=>e.integrity,e=>BJ(e))}`,rJ);let p=Z.querySelector(`#sidebar-rail`);p?.setAttribute(`aria-label`,`Workspaces`),p&&N(AJ(r),p);let m=Z.querySelector(`sidebar-view-button[kind="packages"]`);m&&(m.count=aJ());let h=Z.querySelector(`sidebar-view-button[kind="repositories"]`);h&&(h.count=oJ()),mY(),Ku(n,$J)}var QJ=!1;function $J(){QJ||(QJ=!0,requestAnimationFrame(()=>{QJ=!1,Q().catch(e=>console.warn(`counts repaint:`,e))}))}ko(()=>{Q()}),jm($J);async function eY(){Z?.querySelector(`#user-menu`)?.hidePopover?.(),kY?await HY():cc()&&await BY()}function tY(e){let t=F.currentView===`findings`||F.currentView===`files`;(e!==F.currentWorkspace||!t)&&LL(e)}async function nY(e){let t=e.target.closest(`[data-team-section]`);if(t){if(gJ||t.disabled)return;let e=t.closest(`[data-team-id]`)?.dataset.teamId;e&&yJ.toggle(e,t.dataset.teamSection),await Q();return}let n=e.target.closest(`.file-item.team-item[data-team-id]`);if(n){let t=e.target.closest(`button`)?null:F.managedTeams.find(e=>e.id===n.dataset.teamId);t&&FL(t);return}let r=e.target.closest(`[data-workspace-section]`);if(r){if(gJ||r.disabled)return;let e=r.closest(`[data-workspace-id]`)?.dataset.workspaceId;if(!e)return;let t=r.dataset.workspaceSection,n=_J.get(e)??new Set;n.has(t)?n.delete(t):n.add(t),_J.set(e,n),await Q();return}if(e.target.closest(`[data-action="toggle-client-mode"]`)){await eY();return}if(e.target.closest(`[data-action="go-home"]`)){await VL();return}let i=e.target.closest(`[data-managed-bundle]`);if(i){G.navigate(fi({view:`bundles`,teamId:i.dataset.managedTeam,bundleId:i.dataset.managedBundle,bundleTab:F.currentView===`bundles`?F.bundleDetailsTab:`overview`},F.managedTeams));return}let a=e.target.closest(`.file-item[data-bundle-integrity]`);if(a){if(a.classList.contains(`bundle-missing`))return;let e=a.dataset.bundleIntegrity,t=a.dataset.workspaceId??null;if(F.selectedBundle===e&&F.currentView===`bundles`&&F.selectedBundleWorkspace===t)return;LK(e,void 0,{workspaceId:t}),yL(e,F.bundleDetailsTab),X(),Q(),UK(e);return}let o=e.target.closest(`sidebar-view-button`);if(o){let e=o.getAttribute(`kind`);(e===`packages`||e===`repositories`)&&(F.currentView=e,X(),Q());return}if(e.target.closest(`[data-action="new-workspace"]`)){if(I())return;let e=await me();e&&(await KI(),await iu(e),Q());return}let s=e.target.closest(`[data-action="share-workspace"]`);if(s){let e=s.closest(`[data-workspace-id]`),t=e?R().find(t=>t.id===e.dataset.workspaceId):null;t&&Be({id:t.id,name:t.name,privateKeyBase64:t.privateKey}).catch(e=>alert(`Failed to open share dialog: ${e.message}`));return}let c=e.target.closest(`[data-action="export-workspace"]`);if(c){let e=c.closest(`[data-workspace-id]`),t=e?R().find(t=>t.id===e.dataset.workspaceId):null;t&&Pq(t).catch(e=>alert(`Failed to open export dialog: ${e.message}`));return}let l=e.target.closest(`[data-action="leave-workspace"]`);if(l){let e=l.closest(`[data-workspace-id]`),t=e?R().find(t=>t.id===e.dataset.workspaceId):null;if(!t)return;let n=Array.isArray(t.reports)?t.reports:[],r;try{r=await Fp(n)}catch(e){alert(`Couldn't read reports to analyze triage impact: ${e.message}`);return}let{confirmed:i,mode:a,triage:o}=await ae({name:t.name,reportCount:n.length,bundleCount:t.bundles.length,triageImpact:r});if(!i)return;if(!R().some(e=>e.id===t.id)){alert(`Workspace "${t.name}" was removed elsewhere; nothing to leave.`);return}try{await UL(t.id,a,{triage:o})}catch(e){alert(`Failed to leave workspace: ${e.message}`)}return}let u=e.target.closest(`.file-item.workspace-item[data-workspace-id]`);if(u){let e=u.dataset.workspaceId;e&&tY(e);return}let d=e.target.closest(`.file-item[data-file]`);if(d){let e=d.dataset.file,t=F.currentView===`findings`||F.currentView===`links`,n=d.dataset.workspaceId??null;e&&(e!==F.currentFile||n!==F.currentReportWorkspace||!t)&&ML(e,void 0,{workspaceId:n});return}if(e.target.closest(`sidebar-delete-current`)){if(F.currentView===`bundles`&&F.selectedBundle){let e=F.selectedBundle,t=(F.bundles??[]).find(t=>t.integrity===e)?.name??e,n=R().filter(t=>Array.isArray(t.bundles)&&t.bundles.includes(e)).filter(t=>vh(t.id,e)).map(e=>e.id),{confirmed:r}=await ht({name:t,inRemote:n.length>0});if(!r)return;if(F.selectedBundle!==e){alert(`Active bundle changed during confirmation; aborting delete of "${t}".`);return}try{await HL({deleteFromRemoteWorkspaceIds:n})}catch(e){alert(`Failed to delete bundle: ${e.message}`)}return}if(!F.currentFile)return;let e=F.currentFile,t;try{t=await Fp([e])}catch(e){alert(`Couldn't read reports to analyze triage impact: ${e.message}`);return}let n=R().filter(t=>Array.isArray(t.reports)&&t.reports.includes(e)).filter(t=>_h(t.id,e)).map(e=>e.id),r=n.length>0,i=Xx(e)?`links file`:`report`,{confirmed:a,triage:o}=await _t({name:e,kindLabel:i,triageImpact:t,inRemote:r});if(!a)return;if(F.currentFile!==e){alert(`Active file changed during confirmation; aborting delete of "${e}".`);return}try{await RL({triage:o,deleteFromRemoteWorkspaceIds:n})}catch(e){alert(`Failed to delete ${i}: ${e.message}`)}return}if(e.target.closest(`#sync-status`)){V.status===`error`?V.dismissError():V.status===`off`?(!V.getServerUrl()&&sJ&&V.setServerUrl(sJ),V.setEnabled(!0)):V.setEnabled(!1);return}if(e.target.closest(`[data-action="manage"]`)){Z?.querySelector(`#user-menu`)?.hidePopover?.(),cX(`manage`);return}if(e.target.closest(`[data-action="view-as-stop"]`)){Z?.querySelector(`#user-menu`)?.hidePopover?.(),fx(F.managedSession?.csrfToken);return}if(e.target.closest(`[data-action="my-reviews"]`)){Z?.querySelector(`#user-menu`)?.hidePopover?.(),G.navigate({view:`reviews`});return}if(e.target.closest(`[data-action="my-profile"]`)){Z?.querySelector(`#user-menu`)?.hidePopover?.(),G.navigate({view:`profile`});return}if(e.target.closest(`[data-action="managed-logout"]`)){dx(F.managedSession?.csrfToken);return}if(e.target.closest(`#sidebar-toggle`)){nJ.classList.toggle(`collapsed`);try{localStorage.setItem(`deepview.sidebarCollapsed`,nJ.classList.contains(`collapsed`)?`1`:`0`)}catch{}}}var rY={placement:`right`,gate:e=>{if(e.dataset.tooltipRepo||e.dataset.tooltipBundle)return!0;let t=e.querySelector(`.file-label`);return!t||(e.dataset.tooltip??``)!==t.textContent||t.scrollWidth>t.clientWidth}};function iY(e){gJ=e.target.value.length>0,hJ=e.target.value.trim().toLowerCase(),Q()}var aY={off:`Sync off`,online:`Online`,offline:`Offline`,connecting:`Connecting…`,error:`Sync error`};function oY(){return V.getServerUrl()||sJ?R().length>0:!1}function sY(){let e=Z?.querySelector(`#auth-status`);if(!e)return;let t=Z?.querySelector(`#manage-status`),n=Z?.querySelector(`#user-menu`),r=F.managedSession;nJ?.toggleAttribute(`data-authenticated`,r!=null),nJ?.toggleAttribute(`data-workspace-access`,r!=null&&r.role!==`none`),cY(r);let i=Z?.querySelector(`#public-status`);if(i&&(i.hidden=!r?.publicShare),e.hidden=r==null||r.publicShare===!0,r==null){t&&(t.hidden=!0),e.dataset.authed=`0`,e.removeAttribute(`popovertarget`),e.removeAttribute(`aria-label`),N(M,e),n&&N(M,n);return}if(r.publicShare){t&&(t.hidden=!0),e.removeAttribute(`popovertarget`),n&&N(M,n);return}let a=(r.login[0]??`?`).toUpperCase(),o=typeof r.name==`string`&&/\s/u.test(r.name.trim())?r.name.trim():`@${r.login}`;e.dataset.authed=`1`,e.setAttribute(`popovertarget`,`user-menu`),e.setAttribute(`aria-label`,`Account: ${r.login}`),N(A`${uY(a,r.id)}<span class="auth-login">${o}</span>`,e),t&&(t.hidden=!I()||r.role!==`admin`&&r.role!==`manage`),n&&N(A`<div class="user-card">${uY(a,r.id,!0)} <span class="user-id"><span class="user-login">${r.login}</span> ${r.name?A`<span class="user-name">${r.name}</span>`:M}</span></div>${r.viewer?A`<button type="button" class="user-menu-row" data-action="view-as-stop">Return to @${r.viewer.login}</button>`:M} ${r.role===`none`?M:A`<button type="button" class="user-menu-row" data-action="my-profile">Profile</button> <button type="button" class="user-menu-row" data-action="my-reviews">My reviews</button>`} <button type="button" class="user-menu-row" data-action="toggle-client-mode">${an(F.serverModeConfig)?`e2e mode`:`Local mode`}</button> <button type="button" class="user-menu-row logout-row" data-action="managed-logout">${TJ}<span>Log out</span></button>`,n)}function cY(e){let t=Z?.querySelector(`#view-as-status`);t&&(t.hidden=!e?.viewer,nJ?.toggleAttribute(`data-view-as`,e?.viewer!=null),N(e?.viewer?A`<span class="view-as-label"><span>Viewing as <strong>@${e.login}</strong></span> <span class="view-as-note">Read only · changes are not saved</span></span> <button type="button" class="view-as-stop" data-action="view-as-stop" aria-label="${`Stop viewing as ${e.login}`}">Stop</button>`:M,t))}document.addEventListener(`managed-view-only`,()=>{let e=F.managedSession;e?.viewer&&jx(`Viewing as @${e.login} is read only: changes are not saved.`,{kind:`error`})});var lY=0;document.addEventListener(`managed-profile-change`,e=>{let t=F.managedSession;!t||t.id!==e.detail.userId||(e.detail.avatarChanged&&lY++,F.managedSession={...t,name:e.detail.name},lb(F.managedSession),sY())});function uY(e,t,n=!1){let r=`/api/avatar/${encodeURIComponent(t)}${lY?`?v=${lY}`:``}`;return A`<span class="${n?`user-avatar user-avatar-lg`:`user-avatar`}"><span class="user-avatar-fallback">${e}</span> ${ab()||F.managedSession?.role===`none`?M:A`<img alt="" src="${r}" @error="${dY}">`}</span>`}function dY(e){e.currentTarget.classList.add(`broken`)}function fY(){let e=Z?.querySelector(`.brand-tag`);if(e){let t=F.serverMode===`managed`||an(F.serverModeConfig);e.textContent=lc(),t?(e.setAttribute(`role`,`button`),e.setAttribute(`tabindex`,`0`),e.setAttribute(`aria-label`,`Switch from ${lc()} mode`)):(e.removeAttribute(`role`),e.removeAttribute(`tabindex`),e.removeAttribute(`aria-label`))}}function pY(){nJ&&(nJ.dataset.mode=lc()),I()?(Z?.querySelector(`sidebar-delete-current`)?.setAttribute(`hidden`,``),Z?.querySelector(`#encryption-toggle`)?.setAttribute(`hidden`,``),Z?.querySelector(`#auth-status`)?.removeAttribute(`hidden`)):(Z?.querySelector(`sidebar-delete-current`)?.removeAttribute(`hidden`),Z?.querySelector(`#encryption-toggle`)?.removeAttribute(`hidden`),Z?.querySelector(`#manage-status`)?.setAttribute(`hidden`,``),Z?.querySelector(`#auth-status`)?.setAttribute(`hidden`,``),Z?.querySelector(`#public-status`)?.setAttribute(`hidden`,``),Z?.querySelector(`#view-as-status`)?.setAttribute(`hidden`,``)),xX()}function mY(e){let t=Z?.querySelector(`#sync-status`);if(!t)return;if(fY(),pY(),F.serverMode===`managed`&&F.localMode){t.hidden=!0,V.setForcedOff(!0);let e=Z?.querySelector(`#auth-status`);e&&(e.hidden=!0),Z?.querySelector(`#public-status`)?.setAttribute(`hidden`,``);return}if(I()){t.hidden=!0,V.setForcedOff(!0),sY();return}if(F.serverMode===`standalone`){t.hidden=!0;let e=Z?.querySelector(`#auth-status`);e&&(e.hidden=!0);return}let n=Z?.querySelector(`#auth-status`);n&&(n.hidden=!0);let r=oY(),i=dn()!=null;if(r&&i&&V.isEnabled()&&ch().catch(e=>{console.warn(`sync: load failed`,e)}),r&&i&&!V.getServerUrl()&&sJ&&V.isEnabled()&&V.setServerUrl(sJ),V.setForcedOff(!r),!r){t.hidden=!0;return}t.hidden=!1;let a=e??V.status;t.dataset.status=a;let o=V.persistenceDegraded;t.toggleAttribute(`data-degraded`,o);let s=V.proxyAuthRequired;t.toggleAttribute(`data-proxy-auth`,s);let c=o?`Not saving to this browser right now (storage may be full, or another tab is on a newer version). Changes that haven’t synced could be lost on reload.`:s?`Can’t reach the sync server — the connection is being redirected to a sign-in proxy (e.g. Cloudflare Access). Reload the page to sign in again.`:``;c?t.dataset.tooltip=c:delete t.dataset.tooltip;let l=t.querySelector(`.sync-label`);l&&(l.textContent=aY[a]??``)}V.onStatusChange(mY);var hY=!1,gY=!1;async function _Y(){if(!V.persistenceDegraded||gY||hY)return;hY=!0;let{shown:e,unloaded:t}=await Se().catch(()=>({shown:!1,unloaded:!0}));if(hY=!1,e){gY=!0;return}V.persistenceDegraded&&setTimeout(_Y,t?3e4:1500)}V.onPersistenceDegraded(e=>{mY(),e?_Y():gY=!1});var vY=!1,yY=!1;async function bY(){if(!V.proxyAuthRequired||yY||vY)return;vY=!0;let{shown:e,reload:t}=await Iq();if(vY=!1,!e){V.proxyAuthRequired&&setTimeout(bY,1500);return}yY=!0,t&&location.reload()}V.onProxyAuthRequired(e=>{mY(),e?bY():yY=!1});function xY(e){if(e.target.closest(`[data-workspace-section], [data-action]`))return;let t=e.target.closest(`.file-item.workspace-item`);if(!t)return;let n=t.querySelector(`.file-label`);if(!n||n.querySelector(`input`))return;let r=t.dataset.workspaceId,i=R().find(e=>e.id===r);if(!i)return;e.preventDefault();let a=document.createElement(`input`);a.type=`text`,a.value=i.name,a.className=`workspace-rename-input`,n.textContent=``,n.append(a),a.focus(),a.select();let o=!1,s=async e=>{if(!o){o=!0;try{e&&await ou(r,a.value)}catch(e){alert(`Failed to rename workspace: ${e.message}`)}finally{n.contains(a)&&(n.textContent=R().find(e=>e.id===r)?.name??i.name),Q()}}};a.addEventListener(`keydown`,e=>{e.key===`Enter`?(e.preventDefault(),s(!0)):e.key===`Escape`&&(e.preventDefault(),s(!1))}),a.addEventListener(`blur`,()=>s(!0)),a.addEventListener(`click`,e=>e.stopPropagation()),a.addEventListener(`dblclick`,e=>e.stopPropagation())}function SY(){for(let e of Z.querySelectorAll(`.drag-over`))e.classList.remove(`drag-over`)}function CY(e){return e.dataTransfer.types.includes(cJ)||e.dataTransfer.types.includes(uJ)}function wY(e){let t=e.target.closest(`.file-item[data-bundle-integrity]`);if(t){if(t.classList.contains(`bundle-missing`)){e.preventDefault();return}let n=t.dataset.bundleIntegrity;e.dataTransfer.effectAllowed=`move`,e.dataTransfer.setData(uJ,n),e.dataTransfer.setData(lJ,t.dataset.workspaceId??``),e.dataTransfer.setData(`text/plain`,n),t.classList.add(`dragging`),fJ=!0,Q();return}let n=e.target.closest(`.file-item[data-file]`);n&&(e.dataTransfer.effectAllowed=`move`,e.dataTransfer.setData(cJ,n.dataset.file),e.dataTransfer.setData(lJ,n.dataset.workspaceId??``),e.dataTransfer.setData(`text/plain`,n.dataset.file),n.classList.add(`dragging`),dJ=!0,Q())}function TY(){for(let e of Z.querySelectorAll(`.dragging`))e.classList.remove(`dragging`);SY(),(dJ||fJ)&&(dJ=!1,fJ=!1,Q())}function EY(e){if(!CY(e))return;e.preventDefault();let t=e.target.closest(`[data-workspace-id]`),n=Z.querySelector(`.dragging`)?.closest(`[data-workspace-id]`)?.dataset.workspaceId??null,r=t&&n&&t.dataset.workspaceId===n||!t&&!n;if(e.dataTransfer.dropEffect=r?`none`:`move`,SY(),!r){if(t){let e=t.dataset.workspaceId;for(let t of Z.querySelectorAll(`[data-workspace-id="${CSS.escape(e)}"]`))t.classList.contains(`dragging`)||t.classList.add(`drag-over`)}else{let t=e.dataTransfer.types.includes(uJ)?`[data-default-bundles]`:`[data-default-reports]`,n=Z.querySelector(t);n&&n.classList.add(`drag-over`)}}}function DY(e){Z.contains(e.relatedTarget)||SY()}async function OY(e){if(!CY(e))return;e.preventDefault(),e.stopPropagation(),SY();let t=e.target.closest(`[data-workspace-id]`),n=t?t.dataset.workspaceId:null,r=e.dataTransfer.getData(lJ)||null;if(e.dataTransfer.types.includes(uJ)){let t=e.dataTransfer.getData(uJ);if(!t)return;if(r&&r!==n&&vh(r,t)){let e=(F.bundles??[]).find(e=>e.integrity===t)?.name??t,n=R().find(e=>e.id===r),{confirmed:i}=await yt({name:e,workspaceName:n?.name??``});if(!i)return;try{await Rh(r,t)}catch(t){console.warn(`Failed to remove '${e}' from source workspace ${r} remote:`,t)}}n&&await vu(t,n),r&&r!==n&&await yu(t,r),Q();return}let i=e.dataTransfer.getData(cJ);if(i){if(r&&r!==n&&_h(r,i)){let e=R().find(e=>e.id===r),{confirmed:t}=await xt({name:i,workspaceName:e?.name??``});if(!t)return;try{await Lh(r,i)}catch(e){console.warn(`Failed to remove '${i}' from source workspace ${r} remote:`,e)}}n&&await hu(i,n),r&&r!==n&&await gu(i,r),F.currentWorkspace&&(F.currentWorkspace===n||F.currentWorkspace===r)?await LL(F.currentWorkspace):Q()}}var kY=null,AY=null,$=0,jY=0,MY=null,NY=!0,PY=!0,FY=!1,IY=null,LY=null,RY;function zY(){let e=RY;return RY=void 0,e}async function BY({forgetLastView:e=!0,resetNavigation:t=!0}={}){G.reset({force:t}),IY?.remove(),IY=null;let n=++$;if(PY=!0,FY=!1,sb(),Gv(),XI(),LI(),oh(F.serverMode!==`e2e`),V.setForcedOff(!0),V.setProtocolLocked(F.serverMode!==`e2e`||!!kY),BL({forgetLastView:e}),F.triage.clear(),I()){let e=WY();if(ab()&&(await e,n!==$))return}else{if(F.managedSession=null,F.managedTeams=[],await Ga(),n!==$||(await Md(),n!==$))return;Ql()}document.dispatchEvent(new CustomEvent(`managed-client-mode-change`)),ZL(),fY(),mY(V.status),X(),await Q()}async function VY(e){if(e!==void 0&&!$e(e))throw TypeError(`Unknown managed preview role: ${e}. Expected ${Ze.join(`, `)}.`);if(await uX(),e===void 0&&(kY||I()))return;let t=$,n=e===void 0?null:await K();t===$&&(kY??={serverMode:F.serverMode,serverModeConfig:F.serverModeConfig,serverModeSelection:F.serverModeSelection,localMode:F.localMode,managed:F.managed},n&&n.setPreviewRole(e),F.serverMode=`managed`,oc(!1),F.managedSession=null,F.managedTeams=[],await BY({forgetLastView:!1}))}async function HY(){let e=kY,t=AY;kY=null,AY=null,ob(),Object.assign(F,e),await BY({forgetLastView:!1}),t&&UY(t)}function UY(e,{runtime:t=!0}={}){if(kY){AY=e;return}iJ(!1);let n=dn()!=null,r=I(),i=F.serverMode;Ke()&&e.managed&&(F.serverModeSelection=`managed`),sc(e.mode),Ke()&&e.managed&&oc(!1),I()||(RY=void 0);let a=i!==F.serverMode;F.managed=e.managed;let o=t&&F.githubNewIssueLabels!==(e.githubNewIssueLabels??``);if(t&&(F.githubNewIssueLabels=e.githubNewIssueLabels??``),t&&(F.deepviewScanServer=e.mode===`managed`?null:e.deepviewScanServer??null),ZL(),oh(F.serverMode!==`e2e`),V.setProtocolLocked(F.serverMode!==`e2e`),fn(e),r!==I()){BY({forgetLastView:!1,resetNavigation:n&&!Ke()&&!on(e.mode,location.pathname)}).catch(e=>console.warn(`client mode transition:`,e));return}mY(V.status),a&&F.serverMode===`e2e`&&oY()&&V.isEnabled()&&ch().then(e=>{if(e&&F.serverMode===`e2e`)for(let t of e.triageSync.openSessions)e.openWorkspace(t.workspaceId)}).catch(e=>console.warn(`sync: resume failed`,e)),a&&Q(),o&&X({animate:!1}),I()&&WY()}function WY({keepTeams:e=!1,again:t=!1}={}){if(!t&&MY?.generation===$)return MY.promise;NY=!0;let n={generation:$,promise:null};return MY=n,n.promise=GY({keepTeams:e}).finally(()=>{MY===n&&(MY=null,Q())}),n.promise}async function GY({keepTeams:e=!1}={}){let t=$,n=++jY,r=()=>t===$&&n===jY&&I();try{let t=F.managedSession,n={},i=zY(),a=i===void 0?aq():void 0,o=await mb({fallback:n,sent:i});if(!r())return;if(o===n&&await oq(t)){r()&&iX===null&&sX(0);return}let s=o===n?t:o;if(o!==n&&!ab()&&await iq(s,a),!r())return;F.managedSession=s,NY=!1,(!t||t.id!==s?.id||t.role!==s?.role)&&(PY=!0),Q(),lb(s),t&&(t.id!==s?.id||t.role!==s?.role)?(F.managedTeams=[],F.bundles=[],XI(),LI(),G.reset(),VL({history:!1})):Object.hasOwn(ii,F.currentView)&&QY(F.currentView)&&X({animate:!1}),sY(),II(),document.querySelector(`base`)||(IY=document.createElement(`base`),IY.href=`/`,document.head.prepend(IY));let c=e&&t?.id===s?.id&&t?.role===s?.role&&ZI()?null:LY=YY(r,{signal:new AbortController().signal}).finally(()=>{LY===c&&(LY=null)}),l=G.active&&Object.hasOwn(ii,F.currentView)&&!QY(F.currentView)?G.navigate({view:QY(`manage`)?`manage`:`home`},{replace:!0}):s?G.start(tX,{onCancel:eX}):null;await Promise.all([c,l])}catch(e){console.warn(`managed: session probe failed:`,e)}finally{r()&&(NY||PY)&&(NY=!1,PY=!1,Q())}}YI((e,t,n)=>YY(e,{strict:!0,signal:t,revision:n}));var KY=qK(hb);function qY(e){return LY??YY(e,{reuse:!0})}var JY=0;async function YY(e,{strict:t=!1,signal:n=Z_(),reuse:r=!1,revision:i=null}={}){let a=$,o=F.managedSession,s=await KY({generation:a,session:o,signal:n,reuse:r,revision:i}),c=s??(t?null:F.managedTeams);if(n.aborted||c===null||!e()||a!==$||!I())return!1;let l=F.managedTeams.find(e=>e.id===F.currentManagedTeam)?.name,u=ub(c);F.managedTeams=c;let d=s===null?JY:++JY;PY=!1;let f=Fx(F);if(s!==null&&f&&!FY){let t=W(),r=()=>e()&&!n.aborted&&!FY&&d===JY&&t===W()&&a===$&&F.managedSession?.id===o?.id&&F.managedSession?.role===o?.role&&I()&&Fx(F)===f,i;try{i=await Ux(F,c,{fetchCatalog:()=>gb({signal:AbortSignal.any([n,Z_()])}),isCurrent:r,render:()=>X({animate:!1}),replaceRoute:e=>G.replaceRoute(e)})}catch(t){return r()?(t.name!==`AbortError`&&jx(`Couldn't refresh bundle access: ${t.message}`,{kind:`error`}),Q(),!1):e()}if(!r())return e();if(!i){ZY=null;let t=VL({history:!1}),n=W();return await t,n===W()&&a===$&&e()&&F.managedSession?.id===o?.id&&F.managedSession?.role===o?.role&&G.replaceRoute({view:`home`}),e()}}if(Hx(F,c,u)){let n=c.find(e=>e.id===F.currentManagedTeam),r=n&&(F.currentManagedReport===null||n.reports.some(e=>e.id===F.currentManagedReport))?fi({view:F.currentView===`links`?`findings`:F.currentView,teamId:n.id,reportId:F.currentManagedReport},c):null;ZY=null;let i=VL({history:!1}),s=W();if(await i,t)return s===W()&&a===$&&F.managedSession?.id===o?.id&&F.managedSession?.role===o?.role&&I()&&await G.navigate(r??{view:`home`},{replace:!0}),e();if(!e())return!1}if(!FY&&[`workspace-reports`,`workspace-bundles`,`workspace-repositories`,`workspace-dependencies`].includes(F.currentView)&&!c.some(e=>e.id===F.currentManagedTeam)){let t=VL({history:!1}),n=W();return await t,n===W()&&a===$&&e()&&F.managedSession?.id===o?.id&&F.managedSession?.role===o?.role&&G.replaceRoute({view:`home`}),e()}return!FY&&(F.currentWorkspace||F.bundleDetails?.npm||l!==c.find(e=>e.id===F.currentManagedTeam)?.name)&&X({animate:!1}),Q(),!0}var XY=new Set([`admin-users`,`manage-repos`,`manage-repo-risk`,`manage-teams`,`manage-import`,`manage-deduplication`]),ZY=null;function QY(e){let t=F.managedSession?.role;return e===`manage-links`&&!F.managed?.allowShare?!1:[`admin`,`manage`].includes(t)&&(!XY.has(e)||t===`admin`)}var $Y=0;function eX(){++$Y,FY=!1,Q_();let e=$;qY(()=>e===$&&I())}async function tX(e,t){let n=++$Y;FY=!0;try{return await nX(e,t)}finally{n===$Y&&(FY=!1,Q())}}async function nX(e,t){let n=ZY===W()?ZY:null;if(Q_(),([`findings`,`files`,`bundles`,`workspace-reports`,`workspace-bundles`,`workspace-repositories`,`workspace-dependencies`].includes(e?.view)||e?.finding)&&(!await qY(t)||!t()))return!1;let r=[];if(e?.view===`bundles`&&e.teamSlug==null&&(!QY(`manage-bundles`)||(r=await gb(),!t()||!I()))||(e=di(e,F.managedTeams,r),!e))return!1;let i=n!==null&&ZY===n&&F.currentManagedTeam===e.teamId&&F.currentManagedReport===e.reportId;if(!t()||!I()||e.view!==`home`&&(!F.managedSession||F.managedSession.role===`none`))return!1;if(e.finding){let n=await eJ({...e.finding,teamId:e.teamId,reportId:e.reportId},{openManagedReport:(e,t)=>FL(e,t,{history:!1}),isCurrent:t});return t()?n.ok?(ZY=W(),iL(),fi({view:`findings`,teamId:F.currentManagedTeam,reportId:F.currentManagedReport,finding:{id:e.finding.id}},F.managedTeams)):(n.reason&&jx(n.reason),!1):!1}if([`workspace-reports`,`workspace-bundles`,`workspace-repositories`,`workspace-dependencies`].includes(e.view))return PL(e.teamId,e.view.slice(10),{history:!1,tab:e.dependencyTab??`pulls`});if(e.view===`bundles`){let n=e.teamId==null?r.map(Px):Vx(F.managedTeams);if(!await GK(e,n,t,Q))return!1;let{compareId:i,compareMode:a,...o}=e;return fi({...o,bundleTab:F.bundleDetailsTab,...Rx(F)},F.managedTeams,r)}if(e.view===`home`)return VL({history:!1});if(e.view===`npm`)return Wj(e,t,Q);if(e.view===`repository-code`)return rt(F.managedSession)&&nN(e,t,Q);if(e.view===`reviews`||e.view===`profile`)return!F.managedSession.publicShare&&(ar(),F.currentView=e.view,F.profileLinkError=e.linkError??null,F.currentManagedTeam=null,F.currentManagedReport=null,document.body.classList.remove(`report-fullscreen`),X({animate:!1}),Q(),e);if(e.view===`manage-deduplication`&&e.linkId)return QY(e.view)&&await NL(e.linkId);if(Object.hasOwn(ii,e.view))return cX(e.view,{...e,history:!1});let a=F.managedTeams.find(t=>t.id===e.teamId);return!a||!i&&!await FL(a,e.reportId,{history:!1})||!t()?!1:(F.currentView!==e.view&&ar(),F.currentView=F.currentLinks?`links`:e.view,document.body.classList.remove(`report-fullscreen`),X({animate:!1}),ZY=W(),iL(),Q(),document.querySelector(`#main-content`)?.scrollTo({top:0}),fi({...e,view:F.currentView===`links`?`findings`:F.currentView},F.managedTeams))}document.addEventListener(`managed-bundle-open`,e=>{if(I()&&typeof e.detail?.id==`string`){let t=Px(e.detail),n=F.managedTeams,r=n.find(e=>e.id===F.currentManagedTeam&&e.bundles?.some(e=>e.id===t.managedId))??n.find(e=>e.bundles?.some(e=>e.id===t.managedId));G.navigate(Ix(n,t,r?.id,F.currentView===`bundles`?F.bundleDetailsTab:`overview`))}}),document.addEventListener(`managed-import-complete`,()=>{WY()});var rX=[5e3,15e3,45e3,6e4],iX=null,aX=0;async function oX(e=0){clearTimeout(iX),iX=null;let t=++aX;!I()||ab()||(await WY({again:!0}),t===aX&&await oq(F.managedSession)&&t===aX&&sX(e))}function sX(e){clearTimeout(iX),iX=setTimeout(()=>{oX(e+1)},rX[Math.min(e,rX.length-1)])}sq(()=>{oX()}),document.addEventListener(`managed-feed-closed`,()=>{NY=!0,XI(),LI(),VL({history:!1}).then(()=>WY()),jx(`Workspace access changed. Refreshing your session.`)});async function cX(e,t={}){if(t.history!==!1&&I()&&(G.active||await WY(),G.active))return G.navigate({view:e,...t.actor?{actor:t.actor}:{},...t.bundleId?{bundleId:t.bundleId}:{},...[`link`,`dependencies`].includes(t.scanMode)?{scanMode:t.scanMode}:{},...t.linkId?{linkId:t.linkId}:{}});if(!Object.hasOwn(ii,e)||!I()||!QY(e))return!1;let n=Q_(),r=$;try{let t=await K();e===`manage-import`&&QY(e)&&await t.loadWorkspaceImportPage()}catch(t){return console.warn(`${e}: managed bundle load failed:`,t),!1}return r!==$||n!==W()||!I()||!QY(e)?!1:(F.currentView=e,F.scanSelection=e===`manage-scans`?t.scanMode===`link`?{mode:`report`,reportMode:`link`}:t.bundleId?{bundleId:t.bundleId,...t.scanMode===`dependencies`?{mode:`dependencies`}:{}}:null:null,F.bundleCreationRepoId=e===`manage-bundles`?t.createRepoId??null:null,X({animate:!1}),Q(),WY({keepTeams:!0}),document.querySelector(`#main-content`)?.scrollTo({top:0}),e===`manage-history`&&document.dispatchEvent(new CustomEvent(`managed-history-filter`,{detail:{actor:t.actor??``},bubbles:!0,composed:!0})),!0)}document.addEventListener(`managed-notice`,e=>jx(e.detail.message,{kind:`error`})),document.addEventListener(`managed-admin-navigate`,e=>{let t=e.detail?.view,n=e.detail?.actor;typeof t==`string`&&cX(t,{actor:n,scanMode:e.detail?.scanMode,linkId:e.detail?.linkId})}),document.addEventListener(`managed-repository-code-open`,e=>{let{repoId:t,repo:n=null,path:r=``}=e.detail??{};I()&&Number.isSafeInteger(t)&&t>0&&GM({repoId:t,repo:typeof n==`string`&&n?n:null,path:typeof r==`string`?r:``})});var lX;function uX(){return lX??=fX().then(()=>document.querySelector(`app-sidebar`)?.removeAttribute(`inert`))}function dX(){let e=ln();return RY=un(e).then(e=>e?.session),e}async function fX(){let e=dn();if(e){sc(e.mode),F.managed=e.managed,dX().then(e=>{if(e&&e!==`standalone`)return UY(e)}).catch(e=>console.warn(`server mode revalidation:`,e));return}iJ(!nn());let t=dX(),n=await un(t,nn()?0:3e3),r=dn();if(r)return n&&n!==`standalone`?UY(n):UY(r,{runtime:!1});if(n&&n!==`standalone`)return UY(n);n===`standalone`&&rn(),F.serverMode=`standalone`,F.serverModeConfig=null,F.serverModeSelection=null,oc(n===null),oh(!0),iJ(!1),mY(V.status),Q(),n===null&&t.then(e=>{let t=dn(),n=e&&e!==`standalone`?e:t??e;if(n===`standalone`){if(rn(),kY){kY.serverMode=`standalone`,kY.serverModeConfig=null,kY.serverModeSelection=null,kY.localMode=!1;return}return oc(!1),mY(V.status),Q()}if(n)return UY(n,{runtime:n!==t})}).catch(e=>console.warn(`server mode probe:`,e))}function pX(){let e=Z?.querySelector(`#user-menu`),t=Z?.querySelector(`#auth-status`);!e||!t||e.addEventListener(`beforetoggle`,n=>{if(n.newState!==`open`)return;let r=t.getBoundingClientRect();e.style.left=`${Math.round(r.left)}px`,e.style.bottom=`${Math.round(window.innerHeight-r.top+6)}px`,e.style.top=`auto`,e.style.right=`auto`})}function mX(e){nJ=e,Z=e.renderRoot,rJ=Z.querySelector(`#file-list`),SX(Z.querySelector(`#encryption-toggle`)),wq(Z.querySelector(`#storage-status`)),Z.addEventListener(`click`,nY),Z.addEventListener(`keydown`,e=>{(e.key===`Enter`||e.key===` `)&&e.target.closest?.(`[data-action="toggle-client-mode"]`)&&(e.preventDefault(),nY(e))}),Z.addEventListener(`dblclick`,xY),Z.addEventListener(`dragstart`,wY),Z.addEventListener(`dragend`,TY),Z.addEventListener(`dragover`,EY),Z.addEventListener(`dragleave`,DY),Z.addEventListener(`drop`,OY),cr(Z,rY),Z.querySelector(`#sidebar-search-input`)?.addEventListener(`input`,iY),pX(),mY(V.status),dn()||iJ(!nn()),Q(),V.onServerInfo(e=>{if(F.serverMode!==`e2e`)return;let t=dn(),n=t&&{...t,...F.deepviewScanServer?{deepviewScanServer:F.deepviewScanServer}:{}};return UY(cn(n,e))}),uX(),F.serverMode===`managed`&&WY()}var hX=class extends pa{static styles=[ua(lq),ua(cq)];render(){return A`<div class="sidebar-header"><h2 class="brand"><button class="brand-button" type="button" data-action="go-home"><span class="brand-name">Triage</span></button> <span class="brand-tag" data-action="toggle-client-mode">${lc()}</span></h2><button id="encryption-toggle" type="button" hidden></button> <button id="sidebar-toggle" type="button" aria-label="toggle sidebar"><svg viewBox="0 0 16 16" width="14" height="14" fill="currentColor" aria-hidden="true"><path d="M2 4h12v1.5H2zM2 7.25h12v1.5H2zM2 10.5h12V12H2z"/></svg></button></div><button id="sidebar-home" class="rail-item" type="button" data-action="go-home" aria-label="Home" data-tooltip="Home"><svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M2.5 7.5 8 3l5.5 4.5M4 6.5V13h3V9.5h2V13h3V6.5"/></svg></button><div class="sidebar-search"><svg class="sidebar-search-icon" viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><circle cx="6.5" cy="6.5" r="4.5"/><path d="M9.7 9.7L13 13" stroke-linecap="round"/></svg> <input id="sidebar-search-input" type="search" placeholder="Search reports…" aria-label="Search reports" autocomplete="off"><sidebar-view-button kind="packages"></sidebar-view-button><sidebar-view-button kind="repositories"></sidebar-view-button></div><ul id="file-list"></ul><ul id="sidebar-rail"></ul><button id="storage-status" type="button" hidden><span class="storage-dot" aria-hidden="true"></span> <span class="storage-label"></span></button><div id="view-as-status" role="status" hidden></div><div class="sidebar-actions"><sidebar-delete-current></sidebar-delete-current><button id="sync-status" type="button" data-status="off"><span class="sync-dot" aria-hidden="true"></span> <span class="sync-label">Sync off</span></button> <button id="auth-status" type="button" hidden></button> <span id="public-status" hidden>Public access link · Read only</span> <button id="manage-status" type="button" hidden data-action="manage" aria-label="Manage">${k($i)}</button></div><div id="user-menu" popover class="user-menu"></div>`}firstUpdated(){mX(this)}};customElements.define(`app-sidebar`,hX);var gX=A`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="8" width="10" height="6" rx="1"/><path d="M5 8V5.5a3 3 0 0 1 6 0V8"/></svg>`,_X=A`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="8" width="10" height="6" rx="1"/><path d="M5 8V5a3 3 0 0 1 6 -0.5"/></svg>`,vX=null;async function yX(){if(!vX)return;if(await uX(),I()){vX.hidden=!0;return}if(!xo()){vX.hidden=!0;return}let e=yo();vX.hidden=!1;let t=bo();vX.classList.toggle(`encrypted`,e&&t),vX.classList.toggle(`locked-pending`,e&&!t),e&&t?(vX.dataset.tooltip=`Encryption on — click to disable`,vX.setAttribute(`aria-label`,`Disable encryption`),N(gX,vX)):e?(vX.dataset.tooltip=`Encryption on, locked — click to unlock`,vX.setAttribute(`aria-label`,`Unlock encrypted data`),N(gX,vX)):(vX.dataset.tooltip=`Encryption off — click to enable`,vX.setAttribute(`aria-label`,`Enable encryption`),N(_X,vX))}async function bX(){if(confirm(`Disable encryption?
177
+ You can change this anytime from the lock icon in the sidebar header.`)){qI();return}await be(),yo()&&qI()}}var YI=null,XI=()=>Promise.resolve(!0);function ZI(e){XI=e}function QI(){YI?.controller.abort(),YI=null}var $I=()=>YI?.live===!0&&YI.current(),eL=6e4,tL=null,nL=!1;function rL(){clearTimeout(tL),tL=null,globalThis.document?.hidden&&YI&&(tL=setTimeout(()=>{tL=null,globalThis.document?.hidden&&YI&&(QI(),nL=!0)},eL))}globalThis.document?.addEventListener(`visibilitychange`,()=>{if(globalThis.document.hidden){rL();return}clearTimeout(tL),tL=null,nL&&(nL=!1,oL())});function iL(e,t,n){let{promise:r,resolve:i}=Promise.withResolvers(),a=!1,o=e=>{clearTimeout(l),t.removeEventListener(`abort`,s),i(e)},s=()=>o(!1),c=()=>(!a&&!t.aborted&&(a=!0,clearTimeout(l),Promise.resolve().then(()=>n()&&e(t)).then(e=>o(!!e&&n()),()=>o(!1))),r),l=setTimeout(c,1e3);return t.addEventListener(`abort`,s,{once:!0}),t.aborted&&s(),{promise:r,start:c}}function aL(e,t){return t.aborted?Promise.resolve(!1):new Promise(n=>{let r=e=>{t.removeEventListener(`abort`,i),n(e)},i=()=>r(!1);t.addEventListener(`abort`,i,{once:!0}),e.then(r,()=>r(!1))})}function oL({catalogOnly:e=!1,loading:t=!1,hydrate:n,annotations:r}={}){if(nL&&globalThis.document?.hidden&&!n)return;let i=F.managedSession,a=Q_(),o=[`findings`,`files`,`links`].includes(F.currentView),s=[`workspace-reports`,`workspace-bundles`,`workspace-repositories`,`workspace-dependencies`].includes(F.currentView),c=s||t||o&&(!e||YI?.teamId===F.currentManagedTeam&&!YI.signal.aborted)?F.currentManagedTeam:null,l=!c&&!n&&!i?.publicShare&&YI?.teamId&&$I()&&F.managedTeams?.some(e=>e.id===YI.teamId)?YI:null,u=l?l.teamId:c;if(!I()||!i||i.role===`none`||i.publicShare&&!u)return QI(),n?Promise.resolve(!1):void 0;if(l)return;let d=F.managedTeams?.find(e=>e.id===u)?.reports.find(e=>e.id===F.currentManagedReport&&e.visible===!1)?.id??null,f=JSON.stringify([u,d,i.id,i.role,i.csrfToken,!!i.publicShare]);if(YI?.key!==f||YI.signal.aborted){QI();let e=new AbortController,t={key:f,controller:e,signal:e.signal,teamId:u,reportId:d,version:0,revision:null,target:null};t.current=(e=t.signal)=>!e.aborted&&!t.signal.aborted&&YI===t&&I()&&F.managedSession?.id===i.id&&F.managedSession?.role===i.role&&F.managedSession?.csrfToken===i.csrfToken&&!!F.managedSession?.publicShare==!!i.publicShare,YI=t,nL=!1,lL(t),globalThis.document?.hidden&&rL()}let p=YI;if(e||s||t||!u)return p.target?.ready;let m=js(F.reports),h=p.target;if(h?.view===a&&h.reports===m&&!h.signal.aborted)return h.ready;h?.controller.abort();let g=new AbortController,_=AbortSignal.any([g.signal,p.signal,a]),v=h?.reports===m,y={controller:g,signal:_,view:a,reports:m,version:v?h.version:0,revision:v?h.revision:null};return p.target=y,y.current=()=>p.current()&&!_.aborted&&p.target===y&&F.currentManagedTeam===u&&js(F.reports)===m,y.hydration=n?iL(async e=>{let t=r?r.subscription===p?r.version:0:p.version,i=r?.read??UI(p.teamId,e),a=await n(e,i);return a&&y.current()&&(y.version=t,y.revision=i?.revision()??null,y.version<p.version&&cL(p,y)),a},_,y.current):null,y.ready=y.hydration?.promise,y.hydration&&r?y.hydration.start():(p.version||p.finished)&&(y.hydration?y.hydration.start():y.version<p.version&&cL(p,y)),y.ready}function sL(e){oL({loading:!0});let t=UI(F.currentManagedTeam,e);if(t)return t.start(),{read:t,subscription:YI,version:YI?.version??0}}function cL(e,t){uL(e,t,e.signal).then(e=>(!e&&t.current()&&(QI(),oL()),e))}function lL(e){let{signal:t,controller:n,current:r}=e;Sx(e.teamId,{signal:t,reportId:e.reportId,onTeams:async(t,n)=>{let i=()=>r(t);if(!i())return!1;let a=await XI(i,t,n)&&i();return a&&(e.live=!0),a},onUpdate:(t,n=null)=>r(t)?(e.revision=n,e.version++,uL(e,e.target,t)):!1,onClose:()=>{r()&&document.dispatchEvent(new Event(`managed-feed-closed`)),n.abort()},onDrop:()=>{e.live=!1}}).catch(e=>{r()&&console.warn(`managed: team feed failed`,e)}).finally(()=>{e.finished=!0,r()&&e.target?.hydration?.start()})}async function uL(e,t,n){if(!e.current(n))return!1;if(!t?.current())return!0;if(!t.refresh||t.refresh.controller.signal.aborted){let n=new AbortController,r={controller:n,promise:null},i=AbortSignal.any([n.signal,t.signal]);t.refresh=r,r.promise=dL(e,t,i).catch(()=>!1).finally(()=>{t.refresh===r&&(t.refresh=null)})}let r=t.refresh,i=AbortSignal.any([n,t.signal,r.controller.signal]),a=()=>r.controller.abort();n.addEventListener(`abort`,a,{once:!0});let o;try{o=await aL(r.promise,i)}finally{n.removeEventListener(`abort`,a)}return e.current(n)?t.current()?o?t.version<e.version?uL(e,t,n):!0:!1:!0:!1}async function dL(e,t,n){if(t.hydration&&!await aL(t.hydration.start(),n))return!1;for(;t.current()&&!n.aborted&&t.version<e.version;){let r=e.version;if(e.revision!==null&&e.revision===t.revision){t.version=r;continue}let i=UI(e.teamId,n),a=F.managedReports.filter(e=>t.reports.some(t=>t._managedReportId===e.id));if(!(await Promise.all(a.flatMap(e=>[HI(e.id,{signal:n,readAnnotations:i}),nw(e.id,{signal:n,readAnnotations:i})]))).every(Boolean)||!t.current()||n.aborted)return!1;t.version=r,t.revision=i?.revision()??null}return!n.aborted&&t.current()}function fL(e){if(e.linkedTabs)return e.linkedTabs;let t=e.filter(e=>Fi(e)===`revalidation`);return t.length>0?t:e}function pL(e){let t=e.map(fL).filter(e=>e.length>0);return t.length>0&&t.every(e=>e.every(e=>e.isApp&&e._source&&!e._sourcePass&&Fi(e)===``))}function mL(e,t=()=>[],{countFindings:n=!1}={}){let{groups:r,conflicts:i}=lg(e,{hideRuledOut:!0}),a=vg(r,t,fL),o=n?{appMode:!1,findings:a.length}:{appMode:!1};return i.size>0||!pL(a)&&!Cr(a,{tabs:fL,kindOf:Fi,severityMode:`corrected`})?o:{appMode:!0,appFindings:a.filter(e=>fL(e).some(e=>e.isApp)).length}}var hL=null,gL=0;rd(()=>{gL++});function _L(e,t,n,{complete:r,isCurrent:i}){hL={id:e.id,membership:JSON.stringify(e.reports.toSorted()),reports:t,token:n,complete:r,isCurrent:i}}function vL(e){return!hL||hL.id!==e.id||!hL.isCurrent()||hL.membership!==JSON.stringify(e.reports.toSorted())||!wm(e,hL.token)?null:(hL.linksRevision!==gL&&(hL.metadata=hL.complete?mL(hL.reports,cd):{appMode:!1},hL.linksRevision=gL),hL.metadata)}async function yL(e,t,n,{complete:r,isCurrent:i,onReady:a}){if(!i()||(await dd(),!i()))return;let o=await Om(e,n);if(!o||!i())return;let s=r?mL(t,cd):{appMode:!1};await km(e,s,o)&&i()&&await a(s)}var bL=`deepview.lastFile`;function xL(e,t=`overview`,{push:n=!1}={}){if(I()){let r=F.bundles.find(t=>t.integrity===e),i=r?.npm?_j(r,t,Vx(F,t)):r?.repository?KM(r,t,Vx(F,t)):Rx(F.managedTeams,r,F.currentManagedTeam,t,Vx(F,t),F.bundles);n?G.pushRoute(i):G.replaceRoute(i);return}Ha(bL,`b:${e}${t&&t!==`overview`&&Qr.has(t)?` ${t}`:``}`).catch(()=>{})}var J=e=>e!==W();function SL(){return new Promise(e=>{typeof requestAnimationFrame==`function`?requestAnimationFrame(e):setTimeout(e,0)})}async function CL(e){return await SL(),e!==null&&J(e)?!1:(X(),YK(F.reports.flatMap(e=>e.bundleHashes??[]),()=>e===null||!J(e)).catch(()=>{}),!0)}function wL(){w.selected=null,w.focusedPkg=null,w.layoutCache=null,w.solo=null,w.hidden.clear(),w.pathFilter=``,ar()}function TL(e){for(let t of V.openSessions)t&&!e.has(t.workspaceId)&&(V.closeSession(t.workspaceId),Bh(t.workspaceId))}function EL(){z.classList.remove(`active`),z.replaceChildren(),Zm.classList.remove(`hidden`),document.title=`DeepView`}function DL(e){return e instanceof DOMException&&e.name===`NotFoundError`||typeof e?.message==`string`&&e.message.startsWith(`File not found:`)}function OL(e){let t=kL(e.toLowerCase());return t.endsWith(`.map`)?`sourcemap`:t===`stasis.code.br`||t.endsWith(`.stasis.code.br`)?`stasis`:null}function kL(e){return e.replace(/ \(\d+\)(?=\.[^.]*$)/u,``)}async function AL({name:e,content:t,existingNames:n}){if(!n.has(e))return await Hc(e,t),n.add(e),{name:e,content:t};let r;try{r=await Wc(e)}catch(r){if(!DL(r))throw r;return await Hc(e,t),n.add(e),{name:e,content:t}}if(r===t)return{name:e,content:t};let i=R().filter(t=>Array.isArray(t.reports)&&t.reports.includes(e)).filter(t=>_h(t.id,e)),a=await At({name:e,workspaceNames:i.map(e=>e.name),existingNames:n});if(a.action===`cancel`)return null;if(a.action===`rename`){let e=a.newName;return await Hc(e,t),n.add(e),{name:e,content:t}}let o;if(i.length>0)try{o=await Fh(e)}catch(t){console.warn(`Import: couldn't announce the replace of "${e}" to sync:`,t)}try{await Hc(e,t),i.length>0&&await ML(e,i)}finally{typeof o==`function`&&o()}return{name:e,content:t}}async function jL(e,t){let n=typeof t?.github==`string`?t.github:``;if(n)try{await rc(e,n)}catch(t){console.warn(`Import: failed to adopt the repository "${n}" for "${e}":`,t)}}async function ML(e,t){let n;try{n=await Gc(e)}catch(t){console.warn(`Import: failed to read freshly-saved "${e}" for cloud sync:`,t);return}for(let r of t)try{await zh(r.id);let t=await Ph(r.id,e,n);t&&t.ok===!1&&console.warn(`Import: failed to upload "${e}" to workspace "${r.name}" (${r.id}): ${t.reason??`unknown`}`)}catch(t){console.warn(`Import: failed to upload "${e}" to workspace "${r.name}" (${r.id}):`,t)}}async function NL(e){if(e=[...e],e.length===0||(await _X(),I())||(await JI(),I()))return;let t=null,n=null,r=new Set,i=new Set(await Vc()),a=[];for(let o of e)try{let e=kL(o.name.toLowerCase());if(e.endsWith(`.gz`)||e.endsWith(`.deepview-workspace.enc`)){let e=await WI(o);if(e?.kind===`reports`)for(let n of e.reports){if(typeof n?.name!=`string`||!n.name||typeof n?.content!=`string`)continue;let e=Vu(n.content);if(!e.recognized){a.push(n.name);continue}let r=await AL({name:n.name,content:n.content,existingNames:i});r&&(zu(r.name,e.count,e.source),await jL(r.name,n.repo),t={name:r.name,content:r.content})}try{let e=await Vc();i.clear();for(let t of e)i.add(t)}catch(e){console.warn(`Import: failed to refresh existingNames after workspace import:`,e)}continue}if(OL(o.name)){let e=new Uint8Array(await o.arrayBuffer()),{integrity:t}=await ul(o.name,e);n=t,r.add(t);continue}let s=await o.text(),c=Ie(s,o.name);if(c)for(let e of c){let{count:n,source:r}=Vu(e.content),a=await AL({...e,existingNames:i});a&&(zu(a.name,n,r),t={name:a.name,content:a.content})}else if(xi(s,e)===`codex`){let e=vi(s);for(let{displayName:n,data:r}of e){let e=n.replaceAll(`/`,`__`)+`.codex`,a=JSON.stringify(r),{count:o,source:s}=Vu(a),c=await AL({name:e,content:a,existingNames:i});c&&(zu(c.name,o,s),t={name:c.name,content:c.content})}}else{let e=Vu(s);if(!e.recognized)throw Error(`not a recognized DeepView, DeepSec, Piolium, Claude Security, Codex, or Markdown (generic) report, and not a links file`);let n=await AL({name:o.name,content:s,existingNames:i});if(!n)continue;zu(n.name,e.count,e.source),t={name:n.name,content:n.content}}}catch(e){alert(`Failed to load ${o.name}: ${e.message}`)}if(a.length>0){let e=a.length;alert(`Skipped ${e} report${e===1?``:`s`} no parser recognised: ${a.join(`, `)}`)}await Q(),t?await PL(t.name,t.content):n&&(WK(n),xL(n,F.bundleDetailsTab),X(),await Q(),XK(n)),YK(r).catch(()=>{})}async function PL(e,t,{workspaceId:n}={}){if(I())return;let r=$_();F.currentManagedTeam=null,F.currentManagedReport=null,F.currentReportWorkspace=WC(e,n);let i=new Set(R().filter(t=>Array.isArray(t.reports)&&t.reports.includes(e)).map(e=>e.id));if(TL(i),F.reports=[],Yg(),F.workspaceMerges=[],F.revalidateConflicts=new Map,F.currentFile=e,F.currentWorkspace=null,F.currentLinks=null,F.managedReport=null,F.managedReports=[],F.managedComments.clear(),F.managedIssues.clear(),F.currentView!==`findings`&&F.currentView!==`files`&&(F.currentView=`findings`),F.repoUrl=Xs(e),F.repoEditing=!1,wL(),Ha(bL,Ld(e,F.currentReportWorkspace)).catch(()=>{}),t===void 0){try{t=await Wc(e)}catch(t){if(J(r))return;if(t&&t.message?.includes(`vault locked`)){if(await Pv()&&!J(r)){await PL(e);return}J(r)||(F.currentFile=null,await Q());return}if(DL(t)){let t=R().find(t=>Array.isArray(t.reports)&&t.reports.includes(e)&&_h(t.id,e));if(t)try{if(await zh(t.id),J(r))return;let n=await Ae({workspaceId:t.id,items:[{kind:`report`,identifier:e}]});if(J(r))return;if(n?.downloaded?.some(t=>t.kind===`report`&&t.identifier===e)){await PL(e);return}}catch(t){if(console.warn(`Re-download prompt for missing "${e}" failed:`,t),J(r))return}J(r)||(F.currentFile=null,await Q());return}alert(`Failed to read ${e}: ${t.message}`),F.currentFile=null,await Q();return}if(J(r))return}let a=f(t);if(a?(F.currentLinks={name:e,...a},F.currentView=`links`,X()):await KL(e,t,r),!J(r)){for(let e of i)V.openSession(e),V.refreshSession(e),zh(e);return await Q(),!0}}function FL(e){return F.managedSession?.role===`admin`&&LL({id:null,reports:[{id:e}]},e,{history:!1,deduplication:!0})}async function IL(e,t,{history:n=!0,tab:r=F.teamDependenciesTab}={}){let i=I();if(![`reports`,`bundles`,...i?[`repositories`,`dependencies`]:[]].includes(t))return!1;let a=`workspace-${t}`,o=i?F.managedTeams.find(t=>t.id===e):R().find(t=>t.id===e);if(!o||t===`dependencies`&&(o.dependencyReview!==!0||!ai.has(r)))return!1;if(i&&n&&G.active)return G.navigate(fi({view:a,teamId:e,...t===`dependencies`?{dependencyTab:r}:{}},F.managedTeams));t===`dependencies`&&(F.teamDependenciesTab=r);let s=i?`managed-team:${e}`:e,c=$_();return TL(new Set),VL({forgetLastView:!1}),F.currentWorkspace=s,F.currentManagedTeam=i?e:null,F.currentView=a,i&&(F.bundles=Ux(F.managedTeams)),z.classList.add(`active`),Zm.classList.add(`hidden`),document.body.classList.remove(`report-fullscreen`),X({animate:!1}),document.querySelector(`#main-content`)?.scrollTo({top:0}),i||Ha(bL,`${t===`reports`?`wrs`:`wbs`}:${e}`).catch(()=>{}),await Q(),!J(c)&&(X({animate:!1}),!J(c))}async function LL(e,t=null,{history:n=!0,deduplication:r=!1}={}){if(!I()||!e||!Array.isArray(e.reports))return!1;if(n&&G.active)return G.navigate(fi({view:`findings`,teamId:e.id,reportId:t},F.managedTeams));if(t!==null&&!e.reports.some(e=>e.id===t))return!1;let i=$_(),a=e.reports.find(e=>e.id===t&&e.visible===!1),o=Q_(),s=t===null?null:e.reports.find(e=>e.id===t);TL(new Set),mb(),pK(t===null&&!r?e.id:null),z.classList.add(`active`),Zm.classList.add(`hidden`),F.currentView=`findings`,F.reports=[],Yg(),F.workspaceMerges=[],F.revalidateConflicts=new Map,F.currentFile=s?.filename??null,F.currentWorkspace=t===null?`managed-team:${e.id}`:null,F.currentManagedTeam=e.id,F.currentManagedReport=t,F.managedReports=s&&!r&&s.analyzer!==d?[{id:s.id,filename:s.filename}]:[],F.managedComments.clear(),F.managedIssues.clear(),F.managedReport=null;let c=r?void 0:sL(o);Q();let l;try{l=r?await(await K()).fetchManagedLinkWorkspace(t,{signal:o}):await bx(e.id,{reportId:a?.id??null})}catch(e){return J(i)||await RL(e.message||`Could not load link report.`),!1}if(J(i))return!1;if(l===null||t!==null&&!l.some(e=>e.id===t))return await RL(`Could not load all team reports. Please try again.`),!1;let u=l.find(e=>e.id===t&&e.data.source===`links`&&Array.isArray(e.data.links)),f=l.filter(e=>t===null||u||e.id===t),p=f.filter(e=>e.data.source!==`links`||!Array.isArray(e.data.links));F.currentFile=t===null?null:l.find(e=>e.id===t).filename,Eu(e.id,l),F.managedReports=f.map(e=>({id:e.id,filename:e.filename})),F.managedReport=t===null?null:F.managedReports[0]??null,F.currentReportWorkspace=null,F.currentLinks=null,F.selectedBundle=null,F.selectedBundleWorkspace=null,F.scanSelection=null,F.repoUrl=``,F.repoEditing=!1,wL();for(let e of p)if(await KL(e.filename,e.data,i,{renderView:!1,managedReportId:e.id,managedRepo:e.repo}),J(i))return!1;if(p.length>0){let e=async(e,t=UI(F.currentManagedTeam,e))=>(await Promise.all(p.flatMap(n=>[BI(n.id,{renderView:!1,signal:e,readAnnotations:t}),nw(n.id,{signal:e,readAnnotations:t})]))).every(Boolean)&&!e.aborted&&!J(i),t=r?await e(Q_()):await oL({hydrate:e,annotations:u?void 0:c});if(J(i))return!1;if(!t)return await RL(`Could not load report annotations. Open the team or report again to retry.`),!1}if(u){if(F.currentView=`links`,F.currentLinks={name:u.filename,groups:u.data.links,skipped:0,...r?{managedId:t}:{}},!await CL(i))return!1}else if(p.length===0)mK();else if(T_(t_()),!await CL(i))return!1;return oL(),await Q(),!0}async function RL(e){await UL({history:!1}),Nx(e)}async function zL(e){if(I())return;F.currentManagedTeam=null,F.currentManagedReport=null,F.managedReport=null,F.managedReports=[],F.managedComments.clear(),F.managedIssues.clear();let t=R().find(t=>t.id===e);if(!t)return;let n=$_();TL(new Set([e])),F.currentView!==`findings`&&F.currentView!==`files`&&(F.currentView=`findings`),zr(`workspace`,e),F.reports=[],Yg(),F.workspaceMerges=[],F.revalidateConflicts=new Map,F.currentFile=null,F.currentWorkspace=e,F.currentReportWorkspace=null,F.currentLinks=null,F.repoUrl=``,F.repoEditing=!1,wL(),Ha(bL,`ws:${e}`).catch(()=>{}),t.reports.length===0&&EL();let r=await Om(t);if(J(n))return;let i=!0,a=t.reports.map(e=>Wc(e).catch(()=>null)),o=0;for(let e=0;e<t.reports.length;e++){let r=await a[e];if(J(n))return;if(r===null){i=!1;continue}if(!f(r)&&(await KL(t.reports[e],r,n,{renderView:!1})?o++:i=!1,J(n)))return}o===0&&t.reports.length>0&&EL(),i&&Dm(t)?.appMode&&(F.showRevalidation=!0,F.upstreamOnly=!1,F.revalidationDetailed=!1,jK());let s=F.reports.slice();_L(t,s,r,{complete:i,isCurrent:()=>!J(n)&&F.currentWorkspace===e&&[`findings`,`files`].includes(F.currentView)});let c=Q().catch(e=>console.warn(`workspace sidebar:`,e));if(o>0){if(T_(t_()),!await CL(n))return}else mK();let l=[`showRevalidation`,`upstreamOnly`,`revalidationDetailed`,`filterConfMin`,`filterConfMax`,`filterRevalidate`,`filterPartial`,`sortBy`,`severityMode`],u=l.map(e=>F[e]);yL(t,s,r,{complete:i,isCurrent:()=>!J(n),onReady:async t=>{!t.appMode||F.currentWorkspace!==e||![`findings`,`files`].includes(F.currentView)||l.some((e,t)=>F[e]!==u[t])||(F.showRevalidation=!0,F.upstreamOnly=!1,F.revalidationDetailed=!1,jK(),T_(t_()),await CL(n))}}).catch(e=>console.warn(`workspace App metadata:`,e)),V.openSession(e),V.refreshSession(e),zh(e),await c}async function BL({triage:e=`keep`,deleteFromRemoteWorkspaceIds:t=[]}={}){if(!F.currentFile)return;let n=$_(),r=F.currentFile;Bu(r),ec(r,``);for(let e of t)try{let t=await Lh(e,r);if(J(n))return;t&&t.ok===!1&&t.reason!==`not-found`&&console.warn(`Failed to delete '${r}' from workspace ${e} remote: ${t.reason}`)}catch(t){console.warn(`Failed to delete '${r}' from workspace ${e} remote:`,t)}if(await Jc(r),!J(n)&&(await mu(r,null),!J(n))){if(e===`wipe`){try{await Ip()}catch(e){console.warn(`Skipped orphan-triage GC:`,e)}if(J(n))return}J(n)||(VL(),await Q())}}function VL({forgetLastView:e=!0}={}){kT(),F.currentManagedTeam=null,F.currentManagedReport=null,F.currentFile=null,F.currentWorkspace=null,F.currentReportWorkspace=null,F.currentLinks=null,F.managedReport=null,F.managedReports=[],F.managedComments.clear(),F.managedIssues.clear(),F.selectedBundle=null,F.selectedBundleWorkspace=null,F.scanSelection=null,F.bundleDetails=null,F.bundleDetailsTab=`overview`,F.bundleSourceFile=null,F.bundleSourceFindingIdx=null,F.selectedPackage=null,F.selectedPackageVersion=null,F.packageDetailsTab=`overview`,F.packageSlideTriage=null,F.packageSlideTransient=!1,F.expandedPackages.clear(),F.selectedRepository=null,F.repositoryDetailsTab=`overview`,F.repositorySlideTriage=null,F.repositorySlideTransient=!1,F.filesSelectedFile=null,F.tableSelectedGid=null,F.kanbanPopoverGid=null,F.kanbanExpandedColumn=null,F.focusGid=null,F.activeTabByGroup.clear(),F.reports=[],Yg(),F.workspaceMerges=[],F.revalidateConflicts=new Map,F.repoUrl=``,F.repoEditing=!1,F.shownTriage=null,F.currentView=`findings`,wL(),e&&Ua(bL),EL()}function HL(e){$_(),TL(new Set),VL(e)}async function UL({history:e=!0}={}){return e&&I()&&G.active?G.navigate({view:`home`}):($_(),TL(new Set),VL({forgetLastView:!I()}),await Q(),!0)}async function WL({deleteFromRemoteWorkspaceIds:e=[]}={}){if(!F.selectedBundle)return;let t=$_(),n=F.selectedBundle;for(let r of e)try{let e=await Rh(r,n);if(J(t))return;e&&e.ok===!1&&e.reason!==`not-found`&&console.warn(`Failed to delete bundle from workspace ${r} remote: ${e.reason}`)}catch(e){console.warn(`Failed to delete bundle from workspace ${r} remote:`,e)}if(await dl(n),J(t)||(await _u(n,null),J(t)))return;F.selectedBundle=null,F.selectedBundleWorkspace=null,F.bundleDetails=null,F.bundleSourceFile=null,F.bundleSourceFindingIdx=null;let r=Va(bL);typeof r==`string`&&(r===`b:${n}`||r.startsWith(`b:${n} `))&&Ua(bL),Yf(n),F.bundles=await ol(),!J(t)&&(X(),await Q())}async function GL(e,t=`detach`,{triage:n=`keep`}={}){let r=R().find(t=>t.id===e);if(!r)return;$_();let i=Array.isArray(r.reports)?[...r.reports]:[];if(V.closeSession(e),Bh(e),t===`delete`){for(let e of i){try{await Jc(e)}catch{}Bu(e),ec(e,``)}if(n===`wipe`)try{await Ip()}catch(e){console.warn(`Skipped orphan-triage GC:`,e)}}let a=F.currentWorkspace===e,o=t===`delete`&&F.currentFile!=null&&i.includes(F.currentFile);(a||o)&&VL(),await au(e),await Q()}async function KL(e,t,n=null,{renderView:r=!0,managedReportId:i=null,managedRepo:a=null}={}){let o=()=>n!==null&&J(n);try{if(await Promise.all([zr(`report`,e),zr(`workspace`,F.currentWorkspace||F.currentReportWorkspace)]),o()||(await Pd(),o()))return;let{data:s,reason:c}=i===null?I()?ne(t,e):Si(t):{data:structuredClone(t),reason:null};if(!s)throw Error(c);let l=F.reports.length===0,u=bi(s)??[],d=u.flatMap(yg);if(await wi(d),o())return;let f=new Set(d.filter(sr).map(e=>e.source??s.source??null)),p=a??s?.repo,m=gi({repo:p}),h=m??(i==null?Xs(e):``),g=_i(p),_=Rr([{groups:u.map(yg),tree:s.tree,treeDependencies:s.treeDependencies}]),v=[];for(let t of u){let n=yg(t);if(n.length===0)continue;let r=[];for(let t of n){let n={...t,_id:F.nextFindingId++,_repoFallback:h,_repoDirectory:g,_reportName:e,_depsDirectory:_,_managedReportId:i,_bundleHashes:s.bundleHashes??[]};hi(n,s),n._source=n.source??s.source??null,`isApp`in n||(n.isApp=Ii(n,n._source)),n._sourcePass=f.has(n._source),n._analyzer=n._source??n.type??null,r.push(n)}v.push(r)}return yi(v),F.reports.push({type:s.type||`analysis`,source:s.source??null,fileName:e,_managedReportId:i,groups:v,repo:m,tree:s.tree??null,treeFiles:s.treeFiles??null,treeDependencies:s.treeDependencies??null,bundleHashes:s.bundleHashes??[]}),kn(F.reports),Mn(F.reports)&&Yg(),F.revalidateConflicts=$g(),jK(),l&&(f_(),T_(t_())),r&&await CL(n),!0}catch(t){alert(`Failed to parse ${e}: ${t.message}`)}}window.__loadFile=(e,t)=>KL(e,t),window.__setFilters=({severities:e,confMin:t}={})=>{e!=null&&(F.filterSeverities=new Set(e)),t!==void 0&&(F.filterConfMin=t),X()},document.addEventListener(`keydown`,e=>{e.key===`Escape`&&document.body.classList.contains(`report-fullscreen`)&&document.body.classList.remove(`report-fullscreen`)}),document.addEventListener(`dragover`,e=>e.preventDefault()),document.addEventListener(`drop`,e=>{e.preventDefault(),!e.target.closest(`#drop-zone`)&&NL(e.dataTransfer.files)}),Zm.addEventListener(`dragover`,e=>{e.preventDefault(),I()||Zm.classList.add(`hover`)}),Zm.addEventListener(`dragleave`,()=>Zm.classList.remove(`hover`)),Zm.addEventListener(`drop`,e=>{e.preventDefault(),Zm.classList.remove(`hover`),NL(e.dataTransfer.files)});var qL=null;function JL(){I()||(qL||(qL=document.createElement(`input`),qL.type=`file`,qL.multiple=!0,qL.hidden=!0,qL.addEventListener(`change`,()=>{let e=[...qL.files];e.length>0&&NL(e),qL.value=``}),document.body.append(qL)),qL.click())}Zm.addEventListener(`click`,e=>{let t=e.target.closest(`[data-managed-page]`);if(t){hX(t.dataset.managedPage);return}if(e.target.closest(`[data-managed-login]`)){fx(F.managed?.loginPath);return}let n=e.target.closest(`[data-managed-team]`);if(n){let e=F.managedTeams.find(e=>e.id===n.dataset.managedTeam);e&&LL(e);return}let r=e.target.closest(`[data-landing-workspace]`);if(r){zL(r.dataset.landingWorkspace);return}e.target.closest(`.drop-prompt-action`)&&JL()});function YL({hostname:e,devServer:t,serverMode:n,localMode:r,deepviewScanServer:i}){return n===`managed`&&!r?null:n===`e2e`?tn(i):tn(t)??(e===`127.0.0.1`?en:null)}function XL(){return YL({hostname:window.location.hostname,devServer:document.querySelector(`meta[name="deepview-scan-server"]`)?.content,serverMode:F.serverMode,localMode:F.localMode,deepviewScanServer:F.deepviewScanServer})}function ZL(e){return I()?!!e.managedId&&[`admin`,`manage`].includes(F.managedSession?.role):!e.managedId&&!!XL()}async function QL(e=null,{mode:t}={}){let n=F.selectedBundleWorkspace,r=W();if(await _X(),r!==W()||e&&!ZL(e))return;if(I()){e&&await hX(`manage-scans`,{bundleId:e.managedId,...t?{scanMode:t}:{}});return}if(!XL())return;let i=await Re().then(()=>!0,()=>!1);if(!XL()||r!==W())return;if(!i){Nx(`Couldn’t load Scans. Try again.`,{kind:`warning`});return}let a=UL(),o=W();await a,XL()&&o===W()&&(F.scanSelection=e?{bundleId:e.integrity,...n?{repoId:n}:{},...t?{mode:t}:{}}:null,F.currentView=`scan`,X(),Q())}function $L(){let e=document.querySelector(`#drop-zone`);if(!e)return;let t=e.querySelector(`.local-scan-button`);t||(t=document.createElement(`button`),t.type=`button`,t.className=`local-scan-button`,t.innerHTML=er(`${ta}<span>Scan</span>`),t.addEventListener(`click`,()=>{QL()}),e.append(t));let n=XL();t.hidden=!n,document.querySelector(`local-scan-page`)?.setScanServer(n);let r=document.querySelector(`.bundles-scan-button`),i=F.bundles?.find(e=>e.integrity===F.selectedBundle);r&&(r.hidden=!i||!ZL(i))}var eR=_N(`./compare.js`),tR=`@preventive/triage`;function nR(e,t){let n=e.toLowerCase(),r=``,i=n;if(n.startsWith(`@`)){let e=n.indexOf(`/`);e>0&&(r=n.slice(0,e),i=n.slice(e+1))}return`pkg:npm/${r?`${encodeURIComponent(r)}/`:``}${encodeURIComponent(i)}@${encodeURIComponent(t)}`}function rR(e){let t=/^(.*?)\.stasis\.(?:code|resources)\.br$/u.exec(e);return t?t[1]:e.replace(/\.[^.]+$/u,``)||e}function iR(e){let t=[];if(e?.kind!==`stasis`||!e.bundle?.modules)return t;let n=new Map;for(let[r,i]of e.bundle.modules){if(!i?.name||typeof i.version!=`string`||!i.version)continue;let e=`${i.name}@${i.version}`,a=n.get(e);if(a!==void 0){r===`.`&&(t[a].dir=`.`);continue}n.set(e,t.length),t.push({name:i.name,version:i.version,dir:r})}return t}function aR(e){if(e?.kind!==`stasis`||!e.bundle?.modules)return!1;for(let[,t]of e.bundle.modules)if(t?.name&&typeof t.version==`string`&&t.version)return!0;return!1}function oR(e,t){let n=e.find(e=>e.dir===`.`)??null,r=n?e.filter(e=>e!==n):e;return{root:n?{name:n.name,version:n.version,purl:nR(n.name,n.version)}:{name:rR(t?.name??`bundle`),version:null,purl:null},rest:r}}function sR(e){return e??globalThis.crypto.randomUUID()}function cR(e,t,{now:n=new Date,uuid:r}={}){let{root:i,rest:a}=oR(iR(e),t),o={type:`application`,"bom-ref":i.purl??`application:${i.name}`,name:i.name};i.version&&(o.version=i.version),i.purl&&(o.purl=i.purl);let s={bomFormat:`CycloneDX`,specVersion:`1.5`,serialNumber:`urn:uuid:${sR(r)}`,version:1,metadata:{timestamp:n.toISOString(),tools:{components:[{type:`application`,name:tR}]},component:o},components:a.map(e=>{let t=nR(e.name,e.version);return{type:`library`,"bom-ref":t,name:e.name,version:e.version,purl:t}})};return`${JSON.stringify(s,null,2)}
178
+ `}function lR(e){return{referenceCategory:`PACKAGE-MANAGER`,referenceType:`purl`,referenceLocator:e}}function uR(e,t,{now:n=new Date,uuid:r}={}){let{root:i,rest:a}=oR(iR(e),t),o=rR(t?.name??`bundle`),s=n.toISOString().replace(/\.\d{3}Z$/u,`Z`),c=(e,t,n,r)=>{let i={SPDXID:e,name:t,downloadLocation:`NOASSERTION`,filesAnalyzed:!1,licenseConcluded:`NOASSERTION`,licenseDeclared:`NOASSERTION`,copyrightText:`NOASSERTION`};return n&&(i.versionInfo=n),r&&(i.externalRefs=[lR(r)]),i},l=`SPDXRef-Package-root`,u=[c(l,i.name,i.version,i.purl)],d=[{spdxElementId:`SPDXRef-DOCUMENT`,relationshipType:`DESCRIBES`,relatedSpdxElement:l}];a.forEach((e,t)=>{let n=`SPDXRef-Package-${t+1}`;u.push(c(n,e.name,e.version,nR(e.name,e.version))),d.push({spdxElementId:l,relationshipType:`DEPENDS_ON`,relatedSpdxElement:n})});let f={spdxVersion:`SPDX-2.3`,dataLicense:`CC0-1.0`,SPDXID:`SPDXRef-DOCUMENT`,name:o,documentNamespace:`https://spdx.org/spdxdocs/${encodeURIComponent(o)}-${sR(r)}`,creationInfo:{created:s,creators:[`Tool: ${tR}`]},packages:u,relationships:d};return`${JSON.stringify(f,null,2)}
179
+ `}function dR(e,t){let n=t?`gu`:`giu`,r=t?`g`:`gi`;try{return{re:new RegExp(e,n)}}catch{try{return{re:new RegExp(e,r)}}catch(e){return{error:e.message}}}}function fR(e,t,n){if(t){let t=dR(e,n);if(t.error)return{error:t.error};let{re:r}=t;return{ranges(e){r.lastIndex=0;let t=[],n;for(;(n=r.exec(e))!==null;){if(n[0].length===0){r.lastIndex++;continue}if(t.push([n.index,n.index+n[0].length]),t.length>=50)break}return t}}}let r=n?e:e.toLowerCase(),i=r.length;return{ranges(e){let t=n?e:e.toLowerCase(),a=[],o=0,s;for(;(s=t.indexOf(r,o))!==-1&&(a.push([s,s+i]),o=s+i,!(a.length>=50)););return a}}}function pR(e,t,n){let r=[],i=0,a=!1;for(let o of n){let n=e.get(o);if(typeof n!=`string`)continue;let s=n.split(`
180
+ `),c=[];for(let e=0;e<s.length;e++){let n=t.ranges(s[e]);if(n.length!==0&&(c.push({ln:e+1,ranges:n}),i++,i>=5e3)){a=!0;break}}if(c.length>0&&r.push({path:o,lines:s,hits:c}),a)break;if(r.length>=500){a=!0;break}}return{fileResults:r,totalHits:i,truncated:a}}function mR(e,t){let n=[],r=0;for(let{path:i,lines:a,hits:o}of e.fileResults){let e=[];for(let{ln:n}of o){let i=t.ranges(a[n-1]);i.length!==0&&(e.push({ln:n,ranges:i}),r++)}e.length>0&&n.push({path:i,lines:a,hits:e})}return{fileResults:n,totalHits:r,truncated:!1}}var hR={tag:null,useRegex:!1,caseSensitive:!1,entries:[]};function gR(e,t,n,r,i,a=null){if(!n)return{fileResults:[],totalHits:0,truncated:!1};let o=fR(n,r,i);if(o.error)return{error:o.error};(hR.tag!==e||hR.useRegex!==r||hR.caseSensitive!==i)&&(hR.tag=e,hR.useRegex=r,hR.caseSensitive=i,hR.entries.length=0);let s=r||i?e=>e:e=>e.toLowerCase(),c=s(n),l=null,u=-1;for(let e=0;e<hR.entries.length;e++){let t=hR.entries[e],n=s(t.query);if(n===c)return hR.entries.splice(e,1),hR.entries.unshift(t),t.result;r||t.result.truncated||n.length<=u||!c.includes(n)||(l=t.result,u=n.length)}let d=l?mR(l,o):pR(t,o,a??[...t.keys()].toSorted());return hR.entries.unshift({query:n,result:d}),hR.entries.length>8&&hR.entries.pop(),d}var _R=200,vR=28,yR=12;function bR(e,t){let n=t.length>0?t[0][0]:0;return SR(e,t,n-(e.length-e.trimStart().length)>vR?n-yR:0,_R)}function xR(e,t){let n=bR(e,t);return A`${n.clipped?A`<span class="bundle-search-clip">…</span>`:M}${CR(n.text,n.ranges)}`}function SR(e,t,n,r){let i=e.slice(n,n+r);if(n===0)return{text:i,ranges:t,clipped:!1};let a=[];for(let[e,r]of t){let t=e-n,o=r-n;o<=0||t>=i.length||a.push([Math.max(0,t),Math.min(i.length,o)])}return{text:i,ranges:a,clipped:!0}}function CR(e,t){if(t.length===0)return e;let n=[],r=0;for(let[i,a]of t){let t=Math.max(r,Math.min(i,e.length)),o=Math.max(t,Math.min(a,e.length));o<=t||(t>r&&n.push(e.slice(r,t)),n.push(A`<mark class="bundle-search-mark">${e.slice(t,o)}</mark>`),r=o)}return r<e.length&&n.push(e.slice(r)),n}function wR(e,t){let n=new Map(e.map(e=>[e,[...t.get(e)].map(([n,r])=>{let i=t.get(e),a=t.get(n),o=i.size<a.size?i:a,s=0,c=0;for(let e of o.keys())if(i.has(e)&&a.has(e)&&s++,++c===32)break;return{to:n,score:r*2+s}}).toSorted((e,n)=>n.score-e.score||t.get(e.to).size-t.get(n.to).size||e.to.localeCompare(n.to))])),r=[],i=new Set;for(let t of e){let e=[t];for(;e.length>0;){let t=e.pop();if(!i.has(t)){i.add(t),r.push(t);for(let{to:r}of n.get(t).toReversed())i.has(r)||e.push(r)}}}return r}function TR(e,t,n){let r=e.toSorted(),i=new Set(r),a=new Map,o=new Map(r.map(e=>[e,new Map]));for(let e of r){a.set(e,new Map);for(let n of t.get(e)??[])e===n||!i.has(n)||(a.get(e).set(n,{to:n,count:1}),o.get(e).set(n,(o.get(e).get(n)??0)+1),o.get(n).set(e,(o.get(n).get(e)??0)+1))}let s=Ar(r,a),c=r.map((e,t)=>({col:t%n,row:Math.floor(t/n)})),l=c.map(({col:e,row:t})=>({col:t%2?n-e-1:e,row:t})),u=(e,t)=>Math.abs(e.col-t.col)+Math.abs(e.row-t.row),d=e=>r.reduce((t,n)=>t+[...o.get(n)].reduce((t,[r,i])=>t+i*u(e.get(n),e.get(r)),0),0),f=new Map(r.map((e,t)=>[e,c[t]])),p=d(f);for(let e of[s,wR(r,o)])for(let t of[c,l]){let n=new Map(e.map((e,n)=>[e,t[n]])),r=d(n);r<p&&(f=n,p=r)}let m=({col:e,row:t})=>`${e},${t}`,h=new Map([...f].map(([e,t])=>[m(t),e])),g=(e,t,n,r)=>{let i=0;for(let[a,s]of o.get(e))i+=s*u(t,a===n?r:f.get(a));return i};for(let e=0;e<8;e++){let e=!1;for(let t of r){let n=f.get(t),r=o.get(t),i=0,a=0,s=0;for(let[e,t]of r)i+=f.get(e).col*t,a+=f.get(e).row*t,s+=t;if(!s)continue;let c=new Set;for(let e of[n,{col:Math.round(i/s),row:Math.round(a/s)}])for(let n=-1;n<=1;n++)for(let r=-1;r<=1;r++){let i=h.get(`${e.col+n},${e.row+r}`);i!==void 0&&i!==t&&c.add(i)}let l=0,u=null;for(let e of c){let r=f.get(e),i=g(t,r,e,n)+g(e,n,t,r)-g(t,n,e,r)-g(e,r,t,n);i<l&&(l=i,u=e)}if(u!==null){let r=f.get(u);f.set(t,r),f.set(u,n),h.set(m(r),t),h.set(m(n),u),e=!0}}if(!e)break}return r.map(e=>({id:e,...f.get(e)})).toSorted((e,t)=>e.row-t.row||e.col-t.col)}var ER=216,DR=48,OR=32,kR=20,AR=24,jR=20,MR=10;function NR(e,t){let n=e=>e&&(e.collapsed||e.members.length===1),r=e.map((t,r)=>e.length>5&&n(t)&&n(e[r+1])),i=0,a=0;e.forEach((t,n)=>{r[n]?a+=t.width:i+=t.width+(n===e.length-1?0:kR)});let o=Math.min(t,ER*5+kR*4),s=a?Math.max(.3,Math.min(.9,(o-i)/a)):1,c=0;return{groups:e.map((t,n)=>{let i=t.width*(r[n]?s:1),a={...t,x:c,visibleWidth:i,stacked:!!(r[n]||r[n-1])};return c+=i+(r[n]||n===e.length-1?0:kR),a}),width:c,height:Math.max(...e.map(e=>e.height))}}function PR(e){let t=`M${e[0].join(`,`)}`;for(let n=1;n<e.length-1;n++){let[r,i]=e[n],[a,o]=e[n-1],[s,c]=e[n+1],l=Math.hypot(s-r,c-i),u=Math.hypot(r-a,i-o);if(!u||!l)continue;let d=Math.min(6,u/2,l/2);t+=` L${r-(r-a)/u*d},${i-(i-o)/u*d} Q${r},${i} ${r+(s-r)/l*d},${i+(c-i)/l*d}`}return`${t} L${e.at(-1).join(`,`)}`}var FR=({count:e,index:t})=>(t-(e-1)/2)*Math.min(8,48/Math.max(1,e-1));function IR(e,t,n,r){let i=e.packages.find(e=>e.id===t),a=FR(r),o=n?e.y-12:e.rowBottom;if(e.members.length===1||e.collapsed){let t=e.x+e.visibleWidth/2+a;return[[t,n?e.y-5:e.y+e.height],[t,o]]}let s=e.x+i.x+(n?0:ER),c=e.y+i.y+DR/2+a/2,l=s+(n?-7-r.lane*6:3+r.lane*6);return[[s+(n?-4:0),c],[l,c],[l,o]]}function LR(e,t){let n=(t,n)=>{let r=e.get(t[n]),i=r.packages.find(e=>e.id===t[`${n}Package`]);return r.members.length===1||r.collapsed?[r.x+r.visibleWidth/2,r.y+r.height/2]:i?[r.x+i.x+ER/2,r.y+i.y+DR/2]:[r.x+r.width/2,r.y+r.height/2]},r=(r,i,a=e=>n(e,i))=>{let o=new Map,s=Map.groupBy(t,t=>{let n=e.get(t[r]);return n.collapsed?n:t[`${r}Package`]});for(let e of s.values())e.toSorted((e,t)=>{let[n,o]=a(e),[s,c]=a(t);return(e.bypassLane??n)-(t.bypassLane??s)||o-c||e[`${i}Package`].localeCompare(t[`${i}Package`])||e[`${r}Package`].localeCompare(t[`${r}Package`])}).forEach((t,n)=>o.set(t,{count:e.length,index:n}));for(let e of Map.groupBy(t,e=>e[r]).values())e.toSorted((e,t)=>{let[i,a]=n(e,r),[s,c]=n(t,r);return i-s||a-c||FR(o.get(e))-FR(o.get(t))}).forEach((t,n)=>{let i=n/Math.max(1,e.length-1);o.get(t).lane=r===`from`?1-i:i});return o},i=r(`from`,`to`),a=r(`to`,`from`,t=>{let n=IR(e.get(t.from),t.fromPackage,!1,i.get(t));return[n.at(-1)[0],n[0][1]]}),o=t.map(t=>{let n=e.get(t.from),r=e.get(t.to),o=IR(n,t.fromPackage,!1,i.get(t)),s=IR(r,t.toPackage,!0,a.get(t));return{edge:t,end:s,start:o,rowBottom:n.rowBottom,x1:o.at(-1)[0],x2:t.bypassLane??s.at(-1)[0]}});for(let e of Map.groupBy(o,e=>e.rowBottom).values())for(let t of[!0,!1]){let n=e.filter(e=>e.x2<e.x1===t).toSorted((e,n)=>(t?1:-1)*(e.x1-n.x1||e.x2-n.x2));n.forEach((e,t)=>{e.bendY=e.rowBottom+9+12*t/Math.max(1,n.length-1)})}return o.map(({edge:e,end:t,start:n,x1:r,x2:i,bendY:a})=>{let o=[[r,a],[i,a]],{bypassLane:s,...c}=e;return s!==null&&o.push([i,t.at(-1)[1]]),{...c,path:PR([...n,...o,...t.toReversed()])}})}function RR(e,t){let n=Math.sign(t.x-e.x),r=Math.sign(t.y-e.y),i=DR,a=ER;if(r===0&&Math.abs(t.x-e.x)===a+kR){let r=e.y+i/2-n*6;return`M${e.x+(n>0?a:0)},${r} L${t.x+(n>0?-4:a+4)},${r}`}if(n===0&&Math.abs(t.y-e.y)===i+AR){let n=e.x+a/2+r*8;return`M${n},${e.y+(r>0?i:0)} L${n},${t.y+(r>0?-4:i+4)}`}let o=n||r,s=e.x+(o>0?a:0),c=e.y+i/2,l=s+o*(kR/2-3),u=t.x+a/2+o*8,d=r>0||r===0&&n>0,f=t.y+(d?-10:i+10),p=t.y+(d?-4:i+4);return PR([[s,c],[l,c],[l,f],[u,f],[u,p]])}function zR(e,t,n,r=1184,i=!1){if(i)return{id:e,members:t,collapsed:i,packages:[],internalEdges:[],width:ER+MR*2,height:DR};let a=t.length>1,o=Math.max(1,Math.floor((r-MR*2+kR)/(ER+kR))),s=a?Math.min(o,Math.max(2,Math.ceil(Math.sqrt(t.length/2)))):1,c=a?MR:0,l=Math.ceil(t.length/s),u=a?jR:0,d=(a?TR(t,n,s):[{id:t[0],col:0,row:0}]).map(e=>({id:e.id,x:c+e.col*(ER+kR),y:c+u+e.row*(DR+AR)})),f=new Map(d.map(e=>[e.id,e])),p=[];if(a)for(let e of t)for(let t of n.get(e)??[])e!==t&&f.has(t)&&p.push({from:e,to:t,path:RR(f.get(e),f.get(t))});return{id:e,members:t,collapsed:i,packages:d,internalEdges:p,width:s*ER+(s-1)*kR+c*2,height:l*DR+(l-1)*AR+c*2+u}}function BR(e,t={}){let n=t.ecosystem??(/(?:^|\/)node_modules\//u.test(e)?`npm`:``);return{id:e,name:t.name||(e===`.`?`App`:e),ecosystem:n,version:t.version??``,own:e===`.`,root:!1,target:!1}}var VR=e=>e.ecosystem===`npm`?e.name:`${e.ecosystem}:${e.name}`;function HR(e,t){let n=e?.bundle?.modules.get(t);if(!t||t===`.`||!n)return null;let r=BR(t,n);return{packageKey:r.ecosystem?VR(r):r.name,packageGroup:Jr(``,{packageDir:t})}}function UR(e,{packageKey:t,packageGroup:n,version:r,reason:i=``}){let a=new Map,o=new Map,s=new Map,c=Wt(e)??new Map,l=new Map([...c.keys()].map(e=>[e,e])),u=Ce(e).get(i),d=new Map([...l].filter(([e])=>!u||u.has(e)));for(let t of new Set([...d.keys()].map(e=>c.get(e))))s.set(t,BR(t,e.bundle.modules.get(t)));let f=(e,t)=>{e!==t&&(o.has(e)||o.set(e,new Set),a.has(t)||a.set(t,new Set),o.get(e).add(t),a.get(t).add(e))};for(let[t,n]of ke(e))if(d.has(t))for(let e of n){if(!d.has(e))continue;let n=c.get(t),r=c.get(e);if(jr(t,e,r===`.`,n===`.`))f(n,r);else if(n!==r){let e=s.get(r);e.excludedImporters??=new Set,e.excludedImporters.add(n)}}let{roots:p,appImports:m}=Ne(e,d,e=>c.get(e),c,l);m.length>0&&!s.has(`.`)&&s.set(`.`,BR(`.`));for(let e of m)f(`.`,e);for(let[e,t]of s){if(!(t.own||t.ecosystem===`npm`&&(t.name===`@babel/core`||t.name===`react-native`&&o.get(`.`)?.has(e))))continue;t.traceBoundary=!0;let n=a.get(e);for(let t of n??[])t!==`.`&&(n.delete(t),o.get(t).delete(e))}for(let e of p){let t=s.get(e===`__own__`?`.`:e);t&&(t.root=!0)}let h=[];for(let e of s.values()){let i=VR(e),a=n===void 0?e.ecosystem===`github`?i.toLowerCase()===t.toLowerCase():i===t:Jr(``,{packageDir:e.id})===n,o=e.ecosystem===`github`&&e.version===`.`?`0.0.0`:e.version;!e.own&&a&&(r===void 0||o===r)&&(e.target=!0,h.push(e.id))}let g=new Set(h),_=[...h];for(let e=0;e<_.length;e++)for(let t of a.get(_[e])??[])g.has(t)||(g.add(t),_.push(t));let v=e=>new Map([...g].map(t=>[t,new Set([...e.get(t)??[]].filter(e=>g.has(e)))]));return{nodes:new Map([...s].filter(([e])=>g.has(e))),imports:v(o),importedBy:v(a),targets:h}}function WR(e,{maxWidth:t=1280,expandedCycles:n=new Set}={}){let r=[...e.nodes.keys()].toSorted(),{groups:i,componentOf:a}=Pr(r,e.imports),o=i.map(()=>new Set),s=[];for(let[t,n]of e.imports){let e=a.get(t);for(let r of n){let n=a.get(r);e!==n&&(o[e].add(n),s.push({from:e,to:n,fromPackage:t,toPackage:r}))}}let c=i.map(()=>0),l=i.map(()=>0);for(let e of o)for(let t of e)l[t]++;let u=i.flatMap((e,t)=>l[t]===0?[t]:[]);for(let e=0;e<u.length;e++){let t=u[e];for(let e of o[t])c[e]=Math.max(c[e],c[t]+1),--l[e]===0&&u.push(e)}let d=o.some((e,t)=>[...e].some(e=>c[e]!==c[t]+1)),f=t-OR-24-(d?56:0),p=[...Map.groupBy(i.map((t,r)=>{let i=t.length>10;return{...zR(r,t,e.imports,f,i&&!n.has(r)),collapsible:i}}),e=>c[e.id])].toSorted(([e],[t])=>e-t).map(([,e])=>NR(e,f)),m=p.reduce((e,t)=>Math.max(e,t.width+24),240),h=new Map,g=12;for(let{groups:e,width:t,height:n}of p){for(let r of e)h.set(r.id,{...r,x:r.x+(m-t)/2,y:g,rowBottom:g+n});g+=n+36}let _=0,v=LR(h,s.map(e=>{let t=c[e.to]===c[e.from]+1?null:m+8+_++%4*10;return{...e,bypassLane:t}}));return{boxes:[...h.values()],componentOf:a,edges:v,width:m+(_?56:0),height:Math.max(0,g-24)}}function GR(e,t){if(t===null)return null;let n=new Set,r=new Set([t]);for(let i of[!1,!0]){let a=new Map,o=[t],s=new Set([t]);for(let t of e.edges){let e=i?t.to:t.from,n=i?t.from:t.to;a.has(e)||a.set(e,[]),a.get(e).push(n)}for(let e=0;e<o.length;e++)for(let t of a.get(o[e])??[])s.has(t)||(s.add(t),r.add(t),o.push(t));for(let t of e.edges)s.has(t.from)&&s.has(t.to)&&n.add(t)}return{groups:r,edges:n}}var KR=new Map,qR=new Map,JR=[];function YR(e){if(!e?.managedId)return KR;let t=F.managedSession,n=F.managedTeams&&js(F.managedTeams),r=[t?.id,t?.role,t?.csrfToken,F.currentManagedTeam,n];return r.some((e,t)=>e!==JR[t])&&(JR=r,qR=new Map),qR}var XR=new WeakMap;function ZR(e){return XR.has(e)||XR.set(e,{reasons:Ce(e),selected:``}),XR.get(e)}function QR(e,t=ZR(e).selected){return JSON.stringify([e.managedId??e.integrity,t])}var $R=`deepview.advisories.proxyConsent`;function ez(){try{return localStorage.getItem($R)===`1`}catch{return!1}}function tz(){try{localStorage.setItem($R,`1`)}catch{}}function nz(e){if(!e||e.kind!==`stasis`||!e.bundle)return!1;for(let[t,n]of e.bundle.modules)if(t.includes(`node_modules`)&&n?.name&&typeof n.version==`string`&&n.version)return!0;return!1}function rz(e){if(!e||e.kind!==`stasis`||!e.bundle)return!1;for(let[t,n]of e.bundle.modules)if(t!==`.`&&typeof n?.name==`string`&&n.name&&typeof n.version==`string`&&n.version&&(n.ecosystem||/(?:^|\/)node_modules\//u.test(t)))return!0;return!1}function iz(e){if(e.bundle&&!rz(e))return!0;let t=YR(e).get(QR(e,``));return t?.state===`ok`&&t.query.size===0&&t.skipped.length===0}function az(e,t,n=!1){return!e||e.managedId&&!sz(e)||oz(e,t)<1||e.summary?.versionedPackages===0?!1:n?!0:OL(e.name)===`stasis`?!t||t.integrity!==e.integrity?!0:e.managedId?!t.bundle||rz(t):nz(t):!1}function oz(e,t){let n=t?.integrity===e.integrity&&t.bundle?t.bundle.version:e.summary?.stasisVersion;return Number.isSafeInteger(n)?n:1/0}function sz(e){let t=F.managedSession?.role;return[`admin`,`manage`].includes(t)?!0:[`view`,`triage`].includes(t)?F.managedTeams.some(t=>(F.currentManagedTeam==null||t.id===F.currentManagedTeam)&&t.permissions?.security===!0&&t.bundles?.some(t=>t.id===e.managedId)):!1}function cz(e){return Object.fromEntries([...e].map(([e,t])=>[e,[...t].toSorted()]))}var lz=e=>e.ecosystem===`npm`?e.name:`${e.ecosystem}:${e.name}`;function uz(e){return{...e,title:e.title||e.id,severity:e.severity??`unknown`,cvss:{score:e.cvss,vectorString:e.cvssVector},vulnerable_versions:e.range}}function dz(e){let t=Array.isArray(e),n=t?Map.groupBy(e.map(uz),lz):new Map(Object.entries(e??{}));for(let[e,r]of n){let i=Array.isArray(r)?r.filter(e=>e&&typeof e.title==`string`&&typeof e.severity==`string`):[];i.length>0?n.set(e,t?i:i.map(e=>({...e,source:`registry`}))):n.delete(e)}return n}function fz(e,t){return!!(e?.managedId&&t?.state===`ok`&&!t.recheckingRepositories&&t.query.size>0)}async function pz(e){let t=await fetch(`/api/npm-advisories`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(cz(e))});if(!t.ok){let e=`HTTP ${t.status}`;try{let n=await t.json();typeof n?.error==`string`&&n.error&&(e=`${n.error} (HTTP ${t.status})`)}catch{}throw Error(e)}return t.json()}function mz(e,t){return gz(e,t)}function hz(e,t){return gz(e,t,!0)}async function gz(e,t,n=!1){if(!e?.integrity||!e.managedId&&!ez())return;let r=YR(e),i=QR(e),a=r.get(i);if(n){if(!fz(e,a))return;r.set(i,{...a,recheckingRepositories:!0,repositoryError:null}),t()}else if(a)return;let{reasons:o,selected:s}=ZR(e),c=e.managedId?new Map:Gt(e,o.get(s)??null);n||r.set(i,{state:`loading`,query:c});try{let t,a=[];if(e.managedId){let r=await Cx(e.managedId,void 0,s,n,n);c=Array.isArray(r.packages)?new Map(r.packages.map(e=>[lz(e),new Set(e.versions)])):new Map(Object.entries(r.packages).map(([e,t])=>[e,new Set(t)])),t=r.advisories,a=Array.isArray(r.skipped)?r.skipped:[]}else t=c.size>0?await pz(c):{};r.set(i,{state:`ok`,byPackage:dz(t),query:c,skipped:a})}catch(e){let t=e?.message??`fetch-failed`;r.set(i,n&&![401,403,404].includes(e?.status)?{...a,recheckingRepositories:!1,repositoryError:t}:{state:`error`,reason:t,query:c})}t()}async function _z(e,t){if(!e?.integrity)return;let n=YR(e),r=QR(e);n.get(r)?.state===`error`&&(n.delete(r),await mz(e,t))}var vz={critical:0,high:1,moderate:2,low:3,info:4};function yz(e){return vz[e]??999}function bz(){let e=typeof window>`u`?``:window.location.host;return A`<div class="bundle-advisories-consent"><div class="bundle-advisories-consent-card"><p class="bundle-advisories-consent-text">This bundle's dependency names and versions will be sent to the npm registry through a same-origin proxy (<span class="mono">${e}</span> → <span class="mono">registry.npmjs.org</span>) to look up published security advisories.</p><button type="button" class="bundle-advisories-consent-btn" data-advisories-consent>Confirm</button><p class="bundle-advisories-consent-note">This preference will be saved and reused for other bundles.</p></div></div>`}function xz(e,t=()=>{},n=null){let r=e?ZR(e):null,i=[...r?.reasons.keys()??[]].map(e=>({id:`reason:${e}`,label:e})),a=Cz(e),o=!!e?.managedId&&!iz(e);return A`<div class="bundle-advisories-panel">${a!==M||i.length>0||o?A`<div class="bundle-advisories-toolbar">${a} ${i.length>0||o?A`<div class="bundle-advisories-scopes">${i.length>0?A`<bundle-scope-selector .reasons="${i}" .value="${r.selected?`reason:${r.selected}`:``}" label="Choose advisory scope" @scope-change="${n=>{let i=n.detail.value.replace(/^reason:/u,``);r.selected=r.reasons.has(i)?i:``;let a=mz(e,t);return t(),a}}"></bundle-scope-selector>`:M} ${o?Sz(e,t):M} ${o&&n?A`<button type="button" class="bundle-advisories-retry bundle-advisories-scan" @click="${n}">${k(ta)}<span>Validate</span></button>`:M}</div>`:M}</div>`:M} ${Tz(e)}</div>`}function Sz(e,t){if(!e?.managedId)return M;let n=YR(e).get(QR(e)),r=!!n?.recheckingRepositories;return A`<button type="button" class="bundle-advisories-retry bundle-advisories-recheck" ?disabled="${!fz(e,n)}" aria-busy="${String(r)}" @click="${()=>hz(e,t)}">${r?`Rechecking…`:`Recheck against repositories`}</button>`}function Cz(e){if(!e||!e.managedId&&!ez())return M;let t=YR(e).get(QR(e));if(t?.state!==`ok`)return M;let n=t.query.size,r=t.byPackage.size;if(r===0)return M;let i=[...t.byPackage.values()].reduce((e,t)=>e+t.length,0);return A`<div class="bundle-advisories-summary">${i} ${i===1?`advisory`:`advisories`} across ${r} of ${n} ${n===1?`package`:`packages`}</div>`}function wz(e,t){let n=t.query.size;return n===0&&t.skipped.length>0?A`No packages could be audited.`:A`No advisories for the ${n} ${t.skipped.length>0?`audited `:``}${n===1?`package`:`packages`} in ${ZR(e).selected?`this scope`:`this bundle`}.`}function Tz(e){if(!e)return A`<div class="bundle-advisories-empty">Bundle not loaded yet.</div>`;if(e.kind!==`stasis`||!e.managedId&&!e.bundle)return A`<div class="bundle-advisories-empty">Advisories are only available for stasis bundles.</div>`;if(!e.managedId&&!ez())return bz();let t=YR(e).get(QR(e));if(!t||t.state===`loading`)return A`<div class="bundle-advisories-empty">Loading advisories…</div>`;if(t.state===`error`)return A`<div class="bundle-advisories-empty is-error"><span>Failed to fetch advisories: ${t.reason}</span> <button type="button" class="bundle-advisories-retry" data-advisories-retry>Retry</button></div>`;let n=t.byPackage.size===0?A`<div class="bundle-advisories-empty"><span>${wz(e,t)}</span></div>`:M;if(t.byPackage.size===0&&t.skipped.length===0&&!t.repositoryError)return n;let r=[...t.byPackage.entries()].toSorted(([e,t],[n,r])=>{let i=Math.min(...t.map(e=>yz(e.severity))),a=Math.min(...r.map(e=>yz(e.severity)));return i===a?e.localeCompare(n):i-a});return A`${n}<div class="bundle-advisories">${t.repositoryError?A`<div class="bundle-advisories-empty is-error" role="alert">Repository recheck failed: ${t.repositoryError}. Previous results are shown.</div>`:M} ${t.skipped.length>0?A`<section class="bundle-advisories-skipped" aria-label="Dependencies not audited"><h3>Not audited</h3><ul>${t.skipped.map(e=>A`<li><span class="mono">${lz(e)}@${e.version}</span>: ${e.because}</li>`)}</ul></section>`:M}<ul class="bundle-advisories-list">${r.map(([n,r])=>Ez(e,n,r,t.query.get(n),()=>YR(e).get(QR(e))?.byPackage===t.byPackage))}</ul></div>`}function Ez(e,t,n,r,i){let a=[...n].toSorted((e,t)=>{let n=yz(e.severity)-yz(t.severity);return n===0?(e.title??``).localeCompare(t.title??``):n}),o=r?[...r].toSorted():[];return A`<li class="bundle-advisories-section"><div class="bundle-advisories-package"><span class="bundle-advisories-section-name">${t}</span> ${o.length>0?A`<span class="bundle-advisories-section-versions">${o.map(n=>A`<button type="button" class="bundle-advisories-version" aria-haspopup="dialog" aria-label="${`Why is ${t}@${n} here?`}" @click="${()=>Le({details:e,packageKey:t,version:n,reason:ZR(e).selected,isCurrent:i})}">${n}</button>`)}</span>`:M}</div><ul class="bundle-advisories-rows">${a.map(e=>ON(e,({title:e,severity:t,details:n})=>ft({heading:e,severity:t,markdown:n,isCurrent:i})))}</ul></li>`}var Dz=e=>I()?[]:Ef(e),Oz=()=>I()?0:Df(),kz=null,Az=new WeakMap;function jz(e){if(Az.has(e))return Az.get(e);let t=Ut(e),n=ke(e),r=[...t.keys()],{stripped:i}=Pn(r),a=new Map(r.map((e,t)=>[e,i[t]])),o={};for(let e of r){let r=a.get(e),i=n.get(e);o[r]={imports:i?[...i].map(e=>a.get(e)).filter(Boolean):[],size:t.get(e)}}let s={tree:o,origToStripped:a};return Az.set(e,s),s}function Mz(e,t=null){let n={inprogress:0,fixed:0,invalid:0,deleted:0,ignored:0};if(!e?.fileHashes)return n;let r=new Set;for(let[i,a]of e.fileHashes)if((!t||t.has(i))&&!r.has(a)){r.add(a);for(let e of Dz(a)){let t=s(e,F.triage.get(T(e)));t&&n[t]!==void 0&&n[t]++}}return n}function Nz(e,t=`graph`){if(!e||e.size===0)return new Map;let n=new Map;for(let[r,i]of e){let e=Dz(i);if(e.length===0)continue;let a=e.filter(e=>{let n=s(e,F.triage.get(T(e)))??null;return t===`issues`?n!==`invalid`&&n!==`deleted`:n===F.shownTriage});a.length!==0&&n.set(r,a)}return n}function Pz(e){let t=jz(e),n=Ce(e,t.origToStripped.keys());w.bundleReasonFor!==e.integrity&&(w.bundleReasonFor=e.integrity,w.dependencyPackagesView=!1,w.bundleReason=null);let r=Iz(t,n,w.bundleReason),{tree:i,origToStripped:a,selected:o}=r;w.bundleReason=o;let s=r.files;if(s.length===0)return null;let c=null;if(e.fileHashes&&e.fileHashes.size>0){c=new Map;for(let[t,n]of e.fileHashes){let e=a.get(t);e!==void 0&&c.set(e,n)}}let l=Nz(c),u=l.size>0||[...e.fileHashes??[]].some(([e,n])=>t.origToStripped.has(e)&&Dz(n).length>0),d=u&&w.bundleIssues,f=new Map,p=new Map,m=new Map,h=new Map;for(let[e,t]of d?l:[]){let n={critical:0,high:0,medium:0,low:0,high_bug:0,bug:0,informational:0},r=new Set,i=new Set,a=[];for(let e of t){n[e.severity]=(n[e.severity]||0)+1,r.add(e.severity);let t=F.triage.get(T(e))?.color??`none`;i.add(t),a.push({severity:e.severity,color:t})}f.set(e,n),p.set(e,r),m.set(e,i),h.set(e,a)}let g=[`matrix`,`flow`].includes(w.bundleLayout)||f.size===0?null:hr(i,f),_=new Map;for(let[e,t]of a)_.set(t,e);let v=Wt(e),y=new Map(v?[...e.bundle.modules].map(([e,t])=>[e,{directory:e,version:typeof t.version==`string`?t.version:void 0}]):[]),b=e=>{let t=_.get(e)??e;return Jr(t,{packageDir:v?.get(t)})},ee=s.filter(e=>b(e)===`__own__`),te=Ne(e,a,b,v,t.origToStripped),ne=new Set;for(let e of s)if(ne.add(b(e)),ne.size>=3)break;let re=ne.size>=3,ie=s;if(w.focusedPkg){r.focused.has(w.focusedPkg)||r.focused.set(w.focusedPkg,s.filter(e=>b(e)===w.focusedPkg));let e=r.focused.get(w.focusedPkg);e.length>0?ie=e:w.focusedPkg=null}return w.selected&&!Object.hasOwn(i,w.selected)&&(w.selected=null),{treeData:i,files:ie,ownCounts:f,transitiveCounts:g,severitySets:p,colorSets:m,fileFindings:h,options:{pkgOf:b,packageInfoOf:e=>y.get(v?.get(_.get(e)??e))},strippedToOrig:_,canPackagesView:re,hasIssues:u,issuesShown:d,viewId:e.integrity??null,supportsLayers:!0,layerRoots:te,flowEntries:w.bundleLayout===`flow`?je(e,a,t.origToStripped,v):void 0,ownSourcePackages:we(a,b,v),entryPackages:Ee(e,a,b),ownSourceFiles:new Set(ee),reasons:[...n.keys()]}}var Fz=new WeakMap;function Iz(e,t,n){let r=t.has(n)?n:null;Fz.has(e)||Fz.set(e,new Map);let i=Fz.get(e);if(!i.has(r)){let n=De(e.tree,e.origToStripped,t,r);i.set(r,{...n,files:Object.keys(n.tree),focused:new Map})}return i.get(r)}function Lz(){if(!kz)return;let e=wT();e&&e.refreshSidebar(kz,{isBundleContext:!0,findingsJump:!I()})}function Rz(){if(!kz)return;let e=wT();e&&e.refreshTopPkgs(kz)}function zz(e){kz=e}function Bz(e,t,n){let{totalByPkg:r,whyQueries:i,total:a}=e;if(a===0)return M;e.sorted.has(t)||e.sorted.set(t,[...r.entries()].toSorted((e,n)=>+(n[0]===`__own__`)-(e[0]===`__own__`)||(t===`size`?n[1]-e[1]:0)||Xr(e[0]).localeCompare(Xr(n[0]))||e[0].localeCompare(n[0])));let o=e.sorted.get(t);return A`<div class="bundles-dist"><div class="bundles-dist-bar" aria-hidden="true">${D(o,([e])=>e,([e,t])=>A`<span class="bundles-dist-seg" style="${E({flexGrow:t,background:Or(e)})}" data-tooltip="${e===`__own__`?M:`${e}: ${Wr(t)}`}"></span>`)}</div><ul class="bundles-dist-list">${D(o,([e])=>e,([e,t])=>{let r=(t/a*100).toFixed(1),o=Xr(e),s=Or(e),c=i.get(e);return A`<li><span class="bundles-dist-dot" style="${E({background:s})}"></span> ${c?A`<button type="button" class="bundles-dist-pkg" aria-haspopup="dialog" aria-label="${`Show dependency chains for ${o}`}" @click="${()=>Vz(n,c)}" data-tooltip-truncated data-tooltip="${e}">${o}</button>`:A`<span class="bundles-dist-pkg" data-tooltip-truncated data-tooltip="${e===`__own__`?M:e}">${o}</span>`} <span class="bundles-dist-bar-row" aria-hidden="true"><span class="bundles-dist-bar-fill" style="${E({width:`${r}%`,background:s})}"></span> </span><span class="bundles-dist-size">${Wr(t)}</span> <span class="bundles-dist-percent">${r}%</span></li>`})}</ul></div>`}function Vz(e,t){let n=F.currentManagedTeam,r=F.currentWorkspace,i=F.managedSession&&js(F.managedSession);return Le({details:e,...t,isCurrent:()=>F.currentView===`bundles`&&F.selectedBundle===e.integrity&&(F.bundleDetails&&js(F.bundleDetails))===js(e)&&F.currentWorkspace===r&&F.currentManagedTeam===n&&(F.managedSession&&js(F.managedSession))===i})}var Hz=new WeakMap;function Uz(e,t,n,r){let i=Hz.get(e);if(i&&i.packageDirs===n&&i.details===r&&i.sizes.length===t.length&&i.sizes.every((e,n)=>e===t[n]))return i;let{prefix:a,stripped:o}=Pn(e),s=t=>n?.get(e[t]),c=new Set;for(let t=0;t<o.length;t++)c.add(Jr(e[t],{packageDir:s(t)}));let l=o.map((e,t)=>t).toSorted((e,t)=>o[e].localeCompare(o[t])),u=o.map((e,t)=>t).toSorted((e,n)=>(t[n]??-1)-(t[e]??-1)||o[e].localeCompare(o[n])),d=Wz(e.map((e,n)=>({path:e,size:t[n],pkgDir:s(n)})),r),f={sizes:[...t],packageDirs:n,details:r,prefix:a,stripped:o,packages:c,byName:l,bySize:u,dist:d};return Hz.set(e,f),f}function Wz(e,t){let n=new Map,r=new Map,i=0;for(let{path:a,size:o,pkgDir:s}of e){if(typeof o!=`number`||o<=0)continue;let e=Jr(a,{packageDir:s});n.set(e,(n.get(e)??0)+o),r.has(e)||r.set(e,HR(t,s)),i+=o}return{totalByPkg:n,whyQueries:r,total:i,sorted:new Map}}function Gz(e,t,n,r,i,a,{bundleSize:o=null,unpackedSize:s=null,resources:c=null,details:l=null,leadColumn:u=null,trailColumns:d=M,summaryExtra:f=M,fileTag:p=null,fileIcon:m=null,fileFlags:h=null,overviewClass:g=``,fileFilter:_=null,lines:v=null,sized:y=(e,t,n)=>n}={}){let b=Uz(n,r,i,l),{prefix:ee,stripped:te,packages:ne}=b,re=te.map((e,t)=>t).filter(e=>!_||_.keeps(n[e])),ie=e=>h?.(n[e])??[],ae=re.some(e=>ie(e).length>0),oe=F.bundleOverviewFilesSort===`flags`&&!ae?`name`:F.bundleOverviewFilesSort,se=oe===`size`?b.bySize:b.byName,ce=oe===`flags`?oI(re,ie,e=>te[e]):_?se.filter(e=>_.keeps(n[e])):se,le=F.bundleOverviewPackagesSort,ue=Bz(b.dist,le,l),de=ue===M?A`<p class="bundles-overview-col-empty">No size information for this bundle's sources.</p>`:ue,fe={critical:0,high:0,medium:0,low:0,high_bug:0,bug:0,informational:0},pe=0,me=new Map;if(F.bundleDetails?.fileHashes){let e=Nz(F.bundleDetails.fileHashes,`issues`);for(let t of e.values())for(let e of t){fe[e.severity]!==void 0&&fe[e.severity]++,pe++;for(let t of Af(e.fileHash,e))me.set(t,(me.get(t)??0)+1)}}let he=[...me.keys()].toSorted(),ge=Ai.filter(e=>fe[e]>0).map(e=>A`<span class="${`tree-count-chip ${e}`}">${fe[e]} ${e.replaceAll(`_`,` `)}</span>`),_e=n.length>0?A`<ul class="bundles-sources-list">${ce.map(e=>{let t=n[e],i=r[e],a=A`${m?m(t):M}<span class="bundles-source-path" data-tooltip-truncated data-tooltip="${t}">${te[e]}</span> ${p?p(t):M} ${i==null?M:A`<span class="bundles-source-size">${Wr(i)}</span>`}`;return A`<li>${c?.has(t)?A`<div class="bundles-source-row is-resource">${a}</div>`:A`<button type="button" class="bundles-source-row" data-bundle-view-source="${t}">${a}</button>`}</li>`})}</ul>`:A`<p class="bundles-overview-col-empty">No source files in this bundle.</p>`,ve=he.length>0?A`<ul class="bundles-reports-list">${he.map(e=>{let t=Kx[Xx(e)]??Kx.default,n=me.get(e)??0;return A`<li><button type="button" class="report-chip bundles-report-chip" data-bundle-issue-report="${e}">${k(t)}<span class="report-chip-label" data-tooltip-truncated data-tooltip="${e}">${x(e)}</span> <span class="bundles-report-count">${n} ${n===1?`issue`:`issues`}</span></button></li>`})}</ul>`:A`<p class="bundles-overview-col-empty">No matching reports indexed yet.</p>`,ye=n.length-(c?.size??0);return A`<div class="bundles-overview ${g}"><div class="bundles-overview-summary"><div class="bundles-detail-meta-row">${e(ee)}<dl class="bundles-detail-meta is-build">${t}<dt>Sources</dt><dd>${v==null?y(`files`,ye,ye):A`${y(`files`,ye,`${ye} ${ye===1?`file`:`files`}`)} · ${y(`lines`,v,`${v.toLocaleString(`en`)} LoC`)}`}</dd>${o==null?M:A`<dt>Size</dt><dd>${Wr(o)}</dd>`} ${s==null?M:A`<dt>Unpacked</dt><dd>${y(`unpacked`,s,Wr(s))}</dd>`} ${c?.size?A`<dt>Resources</dt><dd>${c.size}</dd>`:M}</dl>${a??M}</div>${pe>0?A`<div class="bundles-issue-summary tree-count-chips">${ge}</div>`:M} ${f}</div><div class="bundles-overview-columns">${u??uA({title:`Packages`,count:ne.size,body:de,tools:A`<span class="bundles-overview-sort" role="group" aria-label="Package order">${[[`name`,`Name`],[`size`,`Size`]].map(([e,t])=>A`<button type="button" aria-pressed="${String(le===e)}" @click="${()=>{F.bundleOverviewPackagesSort=e,X()}}">${t}</button>`)}</span>`})} ${uA({title:`Files`,count:_?`${ce.length} of ${n.length}`:n.length,body:_e,list:!0,extra:_?A`<button type="button" class="bundles-overview-filter" aria-label="${`Show every file, not only ${_.label}`}" @click="${_.clear}">${_.label}<span aria-hidden="true">×</span></button>`:M,tools:A`<span class="bundles-overview-sort" role="group" aria-label="File order">${[[`name`,`Name`],[`size`,`Size`],...ae?[[`flags`,`Flags`]]:[]].map(([e,t])=>A`<button type="button" aria-pressed="${String(oe===e)}" @click="${()=>{F.bundleOverviewFilesSort=e,X()}}">${t}</button>`)}</span>`})} ${he.length>0?uA({title:`Reports`,count:he.length,body:ve,list:!0}):M} ${d}</div></div>`}var Kz=16,qz=new Map,Jz=new Set,Yz=()=>A`<button type="button" class="bundle-source-wrap-toggle" data-bundle-source-wrap hidden aria-pressed="${F.bundleSourceWrap?`true`:`false`}" aria-label="Wrap lines" data-tooltip="Wrap lines">${pw}</button>`;function Xz(e){let t=e?.status;return A`<button type="button" class="${C({"bundle-source-pretty-toggle":!0,"is-loading":t===`loading`,"is-error":t===`error`})}" data-bundle-source-pretty aria-pressed="${F.bundleSourcePretty?`true`:`false`}" aria-busy="${t===`loading`?`true`:M}" aria-label="Pretty-print" data-tooltip="${sk(e)}">${ok}</button>`}function Zz(e,t,n,r,i,a){let o=Ok(e,t,n,r),s=o?Hk(e,t,n,r,()=>{F.bundleSourceFile===n&&X()}):null,c=s?.status===`ready`;return{pretty:c,toggle:o?Xz(s):M,content:c?s.text:r,fileFindings:c?[]:i,lineFindings:c?new Map:a}}function Qz(e){let t=e?.status;return A`<button type="button" class="${C({"bundle-source-lockfile-toggle":!0,"is-loading":t===`loading`,"is-error":t===`error`})}" data-bundle-source-lockfile aria-pressed="${F.bundleSourceLockfile?`true`:`false`}" aria-busy="${t===`loading`?`true`:M}" aria-label="View lockfile" data-tooltip="${iA(e)}">${k(Qi)}</button>`}var $z=null;function eB(){queueMicrotask(()=>{document.querySelector(`.bundle-code-rail-body .bundle-code-tree-link.current`)?.scrollIntoView({block:`nearest`})})}function tB(e){requestAnimationFrame(()=>requestAnimationFrame(()=>{document.querySelector(`.bundle-code-main .bundle-source-lineno-row[data-line="${e}"]`)?.scrollIntoView({block:`center`})}))}function nB(e){for(let t of Ai)for(let n of e)if(n.severity===t)return t;return e[0]?.severity??null}var rB={content:``,parts:``};function iB(e){if(rB.content===e)return rB.parts;let t=e;if(e.length>qT||mC(e)){let n=e=>[XT(e)].flat();t=[];let r=0;for(let i=0;i<e.length;){let a=e.indexOf(`
181
+ `,i),o=a===-1?e.length:a+1;(a===-1?o:a)-i>JT&&(t.push(...n(e.slice(r,i)),A`<span class="bundle-source-long-line">${n(e.slice(i,o))}</span>`),r=o),i=o}t.push(...n(e.slice(r)))}return rB={content:e,parts:t},t}function aB(e,t,n,r,i=null,a=!1,o=!1){let s=Lt(e),c=F.bundleSourceTargetLine,l=!o&&c&&c.path===t&&c.bundle===(n?.integrity??null)?c.line:null,u=l==null?null:Math.max(c.end??l,l),d=String(s).length,f=Pt(t,n?.kind===`stasis`?n.bundle?.formats?.get(t):void 0,e),p=`${n?.integrity??``}\0${t}${o?`\0pretty`:``}`;f&&!qz.has(p)&&!Jz.has(p)&&(Jz.add(p),(async()=>{let r=await RS(e,f,rC(n,t));qz.set(p,typeof r==`string`?vC(r):null),qz.size>Kz&&qz.delete(qz.keys().next().value),Jz.delete(p),F.bundleSourceFile===t&&X()})());let m=qz.get(p);qz.has(p)&&(qz.delete(p),qz.set(p,m));let h=F.bundleSourceFindingIdx,g=[...r].map(([e,t])=>`${e}:${nB(t.map(e=>e.f))}:${t.map(e=>e.idx).join(`,`)}`).join(` `);return A`<div class="${C({"bundle-source-lines":!0,"is-wrapped":F.bundleSourceWrap})}" style="${E({"--lineno-width":`${d}ch`})}" ${KT(LD)}><aside class="bundle-source-lineno-col" aria-hidden="true">${LT([s,g,h,i,a,l,u],()=>Array.from({length:s},(e,t)=>{let n=t+1,o=r.get(n),s=o?nB(o.map(e=>e.f)):null,c=o&&h!=null&&o.some(e=>e.idx===h);return A`<div class="${C({"bundle-source-lineno-row":!0,"is-match":i?.has(n)??!1,"is-target":l!=null&&n>=l&&n<=u})}" data-line="${n}">${o?A`<button type="button" class="${C({"bundle-source-dot":!0,[`sev-${s}`]:!0,active:c})}" data-bundle-source-finding="${o[0].idx}" data-tooltip="${`${o.length} ${o.length===1?`issue`:`issues`} on line ${n}`}" aria-label="${`${o.length} issues on line ${n}`}"></button>`:A`<span class="bundle-source-dot-placeholder"></span>`} <span class="bundle-source-lineno-num" data-bundle-source-line="${a?n:M}">${n}</span></div>`}))}</aside><pre class="bundle-source-code" tabindex="-1" aria-label="${t}"><code class="${f?`language-${f}`:``}">${typeof m==`string`?k(m):iB(e)}</code></pre></div>`}function oB(e){let t=F.bundleSourceFindingIdx;if(t==null)return M;let n=e[t];if(!n)return M;let r=n.fileHash?Af(n.fileHash,n):[],i=s(n,F.triage.get(T(n))),a=i===`fixed`?`Fixed`:i===`inprogress`?`In progress`:i===`ignored`?`Ignored`:null,o=In(n),c=gV(n.line);return A`<aside class="bundle-source-panel"><header class="bundle-source-panel-bar"><span class="${`bundle-source-panel-sev sev-${n.severity}`}">${n.severity.replaceAll(`_`,` `)}</span> ${a?A`<span class="${`bundle-source-panel-triage triage-${i}`}">${a}</span>`:M} <button type="button" class="bundle-source-panel-close" data-action="bundle-source-panel-close" aria-label="Close finding details">×</button></header><div class="bundle-source-panel-body">${c||o?A`<div class="bundle-source-panel-line-row">${c?A`<span class="bundle-source-panel-line">${c}</span>`:M} ${o?A`<span class="bundle-source-panel-meta" data-tooltip-truncated data-tooltip="${o}">${o}</span>`:M}</div>`:M}<div class="bundle-source-panel-desc">${Dw(Hi(n),{paragraphs:!1})}</div>${r.length>0?A`<div class="bundle-source-panel-reports"><div class="bundle-source-panel-reports-label">Reported by</div>${r.map(e=>{let t=st[Xx(e)]??st.default;return A`<button type="button" class="report-chip bundle-source-panel-report" data-bundle-issue-report="${e}">${k(t)}<span class="report-chip-label" data-tooltip-truncated data-tooltip="${e}">${x(e)}</span></button>`})}</div>`:M}</div></aside>`}function sB(e,t,n,r=null){let i=[],a=new Map;if(typeof n==`string`&&e?.fileHashes){let n=(r??Nz(e.fileHashes,`issues`)).get(t)??[];for(let e=0;e<n.length;e++){let t=n[e];i.push(t);let r=parseInt(t.line,10);Number.isFinite(r)&&r>0&&(a.has(r)||a.set(r,[]),a.get(r).push({f:t,idx:e}))}}return{fileFindings:i,lineFindings:a}}function cB(e,t=null,n=M){return A`<header class="bundle-source-bar"><div class="bundle-source-title mono" data-tooltip-truncated data-tooltip="${e}">${e}</div>${t?.files.length>1?UB(t):M} ${Yz()} ${n} <button type="button" class="bundle-source-close" data-action="bundle-source-close" aria-label="Close source viewer">×</button></header>`}function lB(e,t,n,r,i,a=null,o=!1,s=!1){return A`<div class="bundle-source-code-wrap">${typeof t==`string`?aB(t,e,n,i,a,o,s):A`<div class="bundle-source-empty">Source content not bundled.</div>`}</div>${oB(r)}`}function uB(){let e=F.bundleSourceFile;if(!e||F.bundleDetailsTab===`code`||F.bundleDetailsTab===`search`)return M;let t=F.bundleDetails,n=t?.sourceError||t?.error,r=!n&&(!t||t.metadataOnly===!0),i=It(t),{fileFindings:a,lineFindings:o}=sB(t,e,i.get(e)),s=F.bundles?.find(e=>e.integrity===t?.integrity)??(t?.npm?{npm:t.npm}:null),c=r||n?null:Zz(t,s,e,i.get(e),a,o);return A`<div class="bundle-source-overlay"><div class="${C({"bundle-source-modal":!0,"with-panel":F.bundleSourceFindingIdx!=null})}">${cB(e,Xk(F.bundleCodeHistory,t?.integrity??null,e),c?.toggle)}<div class="bundle-source-body" aria-busy="${String(r)}">${n?A`<div class="bundles-slide-placeholder is-error" role="status">Failed to load source: ${n}</div>`:r?A`<div class="bundles-slide-placeholder" role="status">Loading source…</div>`:lB(e,c.content,t,c.fileFindings,c.lineFindings,null,!1,c.pretty)}</div></div></div>`}var dB=new Map,fB=null,pB=null,mB=0;function hB(e,t){let n=SB(e??``,t).split(`/`);for(let e=1;e<n.length;e++)dB.set(n.slice(0,e).join(`/`),!0);mB++}function gB(e,t){F.bundleCodeSearchMode=`files`,F.bundleCodeSearchQuery=``,hB(e,t),X(),eB()}function _B(e){let t=e=>{for(let n of e.dirs.values())dB.set(n.path,!1),t(n)};t(e),mB++,X()}function vB(e){F.bundleCodeTerminal=e,X(),e?AT():document.querySelector(`[data-bundle-code-terminal-toggle]`)?.focus()}function yB(){return A`<bundle-code-terminal-splitter role="separator" tabindex="0" aria-orientation="horizontal" aria-label="Resize terminal" data-tooltip="Drag to resize · double-click to reset"></bundle-code-terminal-splitter><section class="bundle-code-terminal" aria-label="Terminal"><header class="bundle-code-terminal-bar"><span class="bundle-code-rail-label">Terminal</span> <button type="button" class="bundle-code-rail-action" aria-label="Close terminal" @click="${()=>vB(!1)}">×</button></header><div id="bundle-terminal-slot" class="bundle-code-terminal-slot"></div></section>`}function bB(e,t){let n=0,r=null;if(!t||t.size===0)return{count:n,worst:r};let i=e=>{for(let i of e.files.values()){let e=t.get(i);if(!e||e.length===0)continue;n+=e.length;let a=nB(e);(r===null||(ki[a]??0)>(ki[r]??0))&&(r=a)}for(let t of e.dirs.values())i(t)};return i(e),{count:n,worst:r}}function xB(e,t,n=0,r=null,i=!1,a=null,o=null){let s=[...e.dirs.entries()].toSorted(([e,t],[n,r])=>wD(e,t).localeCompare(wD(n,r))||t.path.localeCompare(r.path)),c=[...e.files.entries()].toSorted(([e],[t])=>e.localeCompare(t)),l=e=>{if(!t)return!1;for(let n of e.files.values())if(n===t)return!0;for(let t of e.dirs.values())if(l(t))return!0;return!1},u=(e,t)=>i?!0:dB.has(e)?dB.get(e):n===0||l(t),d=e=>t=>{dB.set(e,!t.currentTarget.parentElement.open)};return A`<ul class="${C({"bundle-code-tree":!0,root:n===0})}" aria-label="${n===0?`Source files`:M}" @keydown="${n===0?DD:M}">${D(s,([,e])=>e.path,([e,s])=>{let c=s.path,l=ED(e,s,n),f=s.package,p=f?.ecosystem===`cargo`||f?.ecosystem===`composer`||f?.ecosystem===`soldeer`,m=Qe(f?.ecosystem),h=f?.variant?`${l.node.sourcePath}
182
+ Variant ${f.variant}`:l.node.sourcePath,g=s.packageInfo,_=!!g||!!f?.variant,v=g&&o?e=>{let{bytes:t,loc:n}=vD(o,s.sourcePath);Object.assign(e.dataset,{tooltipLoc:String(n),tooltipSize:Wr(t)})}:void 0,y=bB(s,r);return A`<li class="bundle-code-tree-dir"><details .open="${Ue(u(c,s))}"><summary @click="${d(c)}" .prepareTooltip="${v}" data-tooltip-package="${g?.name??M}" data-tooltip-ecosystem="${g?.ecosystem??M}" data-tooltip-version="${g?.version??M}" data-tooltip-files="${g?.fileCount??M}" data-tooltip-repo="${g?.github?g.github+(g.directory?`/${g.directory}`:``):M}" data-tooltip-commit="${g?.commit??M}" data-tooltip="${_?h:M}" data-tooltip-placement="${_?`right-start`:M}"><span class="bundle-code-tree-chevron" aria-hidden="true"></span> ${f?m:M} <span class="${C({"bundle-code-tree-dirname":!0,"bundle-code-tree-package":!!f,"bundle-code-tree-package-vendored":p})}" data-tooltip-truncated data-tooltip="${_?M:h}">${f?A`<span class="bundle-code-tree-package-name">${f.name}</span>${f.version?A`<span class="bundle-code-tree-package-version">${p?`- `:`@`}${f.version}</span>`:M}`:l.names.map((e,t)=>A`${t>0?A`<span class="bundle-code-tree-separator">/</span>`:M}${e}`)} </span>${f?.variant?A`<span class="bundle-code-tree-variant">variant ${f.variant}</span>`:M} ${y.count>0?A`<span class="${`bundle-code-tree-count sev-${y.worst}`}" data-tooltip="${`${y.count} ${y.count===1?`issue`:`issues`} inside`}">${y.count}</span>`:M}</summary>${xB(l.node,t,n+1,r,i,a,o)}</details></li>`})} ${D(c,([,e])=>e,([e,n])=>{let i=r?.get(n),o=i&&i.length>0?nB(i):null,s=i?.length??0;return A`<li class="bundle-code-tree-file"><button type="button" class="${C({"bundle-code-tree-link":!0,current:n===t})}" data-bundle-view-source="${n}" aria-current="${n===t?`true`:M}">${qe(n,a?.get(n))}<span class="bundle-code-tree-name" data-tooltip-truncated data-tooltip="${n}">${e}</span> ${s>0?A`<span class="${`bundle-code-tree-count sev-${o}`}" data-tooltip="${`${s} ${s===1?`issue`:`issues`}`}">${s}</span>`:M}</button></li>`})}</ul>`}function SB(e,t){return t&&e.startsWith(t)?e.slice(t.length):e}var CB={tree:null,query:``,prefix:``,filtered:null};function wB(e,t,n,r,i=``,a=null,o=null){let s=CB;n&&(s.tree!==e||s.query!==n||s.prefix!==i)&&(CB={tree:e,query:n,prefix:i,filtered:TD(e,n,i)});let c=n?CB.filtered:e;return LT([c,t,TB(r),a,o,mB],()=>c?xB(c,t,0,r,!!n,a,o):A`<div class="bundle-code-search-empty">No files match.</div>`)}function TB(e){return[...e].map(([e,t])=>`${e}\0${t.length}\0${nB(t)}`).join(`
183
+ `)}var EB=new WeakMap;function DB(e,t){let n=EB.get(t);return n||(n=Yr([...t.keys()].toSorted(),Wt(e)),EB.set(t,n)),n}var OB=1e3,kB=new WeakMap;function AB(e,t,n,r,i=``){let a=Ut(e),o=kB.get(t);o||(o=[...t.keys()].filter(e=>a.get(e)!=null).toSorted((e,t)=>a.get(t)-a.get(e)||e.localeCompare(t)),kB.set(t,o));let s=n.toLowerCase(),c=s?o.filter(e=>SB(e,i).toLowerCase().includes(s)):o;if(c.length===0)return A`<div class="bundle-code-search-empty">No files match.</div>`;let l=c.length>OB?c.slice(0,OB):c;return A`<div class="bundle-code-search-results"><div class="bundle-code-search-summary">${l.length<c.length?`${l.length.toLocaleString()} largest of ${c.length.toLocaleString()} files`:`${c.length.toLocaleString()} ${c.length===1?`file`:`files`} by size`}</div><ul class="bundle-code-largest">${D(l,e=>e,e=>A`<li><button type="button" class="${C({"bundle-code-largest-file":!0,current:e===r})}" data-bundle-view-source="${e}" aria-current="${e===r?`true`:M}"><span class="bundle-code-largest-path" data-tooltip-truncated data-tooltip="${e}">${SB(e,i)}</span><span class="bundle-code-largest-size">${Wr(a.get(e))}</span></button></li>`)}</ul></div>`}var jB=20,MB=100,NB={sources:null,query:``,hits:null};function PB(e,t,n){let r=gR(e.integrity??``,t,n,!1,!1,DB(e,t));if(r.fileResults.length>MB||!r.truncated||r.totalHits<5e3||r.fileResults.length===MB&&r.fileResults.at(-1).hits.length>=jB){let e=r.fileResults.slice(0,MB).map(({path:e,lines:t,hits:n})=>({path:e,hits:n.slice(0,jB).map(({ln:e,ranges:n})=>({ln:e,text:t[e-1],ranges:n}))}));return{results:e,totalHits:e.reduce((e,{hits:t})=>e+t.length,0)}}if(NB.sources===t&&NB.query===n)return NB.hits;let i=fR(n,!1,!1),a=[],o=0;for(let n of DB(e,t)){let e=t.get(n);if(typeof e!=`string`)continue;let r=[],s=e.split(`
184
+ `);for(let e=0;e<s.length;e++){let t=i.ranges(s[e]);if(t.length!==0&&(r.push({ln:e+1,text:s[e],ranges:t}),o++,r.length>=jB))break}if(r.length>0&&a.push({path:n,hits:r}),a.length>=MB)break}return NB={sources:t,query:n,hits:{results:a,totalHits:o}},NB.hits}function FB(e,t,n,r,i=``){if(!n)return A`<div class="bundle-code-search-hint">Type to search across every source in this bundle.</div>`;let{results:a,totalHits:o}=PB(e,t,n);return a.length===0?A`<div class="bundle-code-search-empty">No matches.</div>`:A`<div class="bundle-code-search-results"><div class="bundle-code-search-summary">${o} ${o===1?`hit`:`hits`} in ${a.length} ${a.length===1?`file`:`files`}</div>${a.map(({path:e,hits:t})=>{let n=SB(e,i);return A`<div class="${C({"bundle-code-search-file":!0,current:e===r})}"><button type="button" class="bundle-code-search-file-name" data-bundle-view-source="${e}" data-tooltip-truncated data-tooltip="${e}">${n}</button><ul class="bundle-code-search-hits">${t.map(t=>A`<li class="bundle-code-search-hit"><button type="button" class="bundle-code-search-hit-link" data-bundle-view-source="${e}" data-bundle-view-line="${t.ln}" data-bundle-view-scroll-block="start"><span class="bundle-code-search-hit-ln">${t.ln}</span> <span class="bundle-code-search-hit-text mono">${xR(t.text,t.ranges)}</span></button></li>`)}</ul></div>`})}</div>`}function IB(e,t,n,r=``){if(!e.fileHashes)return A`<div class="bundle-code-search-empty">Computing file hashes…</div>`;let i=Nz(e.fileHashes,`issues`);if(i.size===0)return A`<div class="bundle-code-search-empty">No issues match this bundle's files.</div>`;let a=t.toLowerCase(),o=[];for(let[e,t]of i)for(let n=0;n<t.length;n++){let r=t[n],i=r.description??``;a&&!e.toLowerCase().includes(a)&&!r.severity.includes(a)&&!r.severity.replaceAll(`_`,` `).includes(a)&&!i.toLowerCase().includes(a)||o.push({file:e,finding:r,fileIdx:n})}return o.sort((e,t)=>{let n=ki[e.finding.severity]??0,r=ki[t.finding.severity]??0;return r===n?e.file.localeCompare(t.file):r-n}),o.length===0?A`<div class="bundle-code-search-empty">No matches.</div>`:A`<div class="bundle-code-search-results"><div class="bundle-code-search-summary">${o.length} ${o.length===1?`issue`:`issues`}</div><ul class="bundle-code-search-issues">${o.map(({file:e,finding:t,fileIdx:i})=>{let a=t.severity,o=SB(e,r),s=e===n&&F.bundleSourceFindingIdx===i;return A`<li class="${C({"bundle-code-search-issue":!0,current:s})}"><button type="button" class="bundle-code-search-issue-link" data-bundle-view-source="${e}" data-bundle-view-finding-idx="${i}" data-bundle-view-line="${t.line??``}"><div class="bundle-code-search-issue-row"><span class="${`bundle-code-search-issue-sev sev-${a}`}">${a.replaceAll(`_`,` `)}</span> <span class="bundle-code-search-issue-path mono" data-tooltip-truncated data-tooltip="${e}">${o}${t.line?`:${t.line}`:``}</span></div><div class="bundle-code-search-issue-desc">${Dw(Hi(t),{paragraphs:!1})}</div></button></li>`})}</ul></div>`}var LB=new WeakMap;function RB(e,t){if(e.kind!==`stasis`)return t;if(LB.has(t))return LB.get(t);let n=Wt(e),r=new Map([...t].filter(([e])=>!/(?:^|\/)node_modules(?:\/|$)/u.test(e)&&!/(?:^|\/)(?:node_modules|dependencies|vendor)(?:\/|$)/u.test(n?.get(e)??e))),i=r.size>0?r:t;return LB.set(t,i),i}var zB=new WeakMap;function BB(e,t,n){let r=zB.get(t);if(!r){let i=e.kind===`stasis`?e.bundle.modules:null,a=SD(Pn(n).prefix,i,n);r={prefix:a,tree:xD(n.map(e=>SB(e,a)),n,i)},zB.set(t,r)}return r}function VB(e,t,n){let r=null,i=-1,a=0;for(let[e,o]of n){if(typeof t.get(e)!=`string`)continue;let n=ki[nB(o)]??0;(n>i||n===i&&o.length>a||n===i&&o.length===a&&(r===null||e.localeCompare(r)<0))&&(r=e,i=n,a=o.length)}if(r)return r;if(e.kind===`stasis`&&e.bundle){for(let n of e.bundle.entries)if(typeof t.get(n)==`string`)return n}for(let n of e.npmEntries??[])if(typeof t.get(n)==`string`)return n;let o=null,s=-1;for(let[e,n]of t)typeof n==`string`&&n.length>s&&(o=e,s=n.length);return o}function HB(e,t=null){let n=It(e);if(n.size===0)return A`<div class="bundle-code-empty">This bundle doesn't carry any source content.</div>`;fB!==F.selectedBundle&&(dB.clear(),mB++,fB=F.selectedBundle,pB=null);let r=Rt(n).paths,{prefix:i,tree:a}=BB(e,n,r),o=e.fileHashes?Nz(e.fileHashes,`issues`):new Map,s=RB(e,n),c=()=>e.kind===`stasis`?new Map([...o].filter(([e])=>s.has(e))):o,l=F.bundleSourceFile,u=F.bundleCodeFileRequest;if(u?.bundle===F.selectedBundle){F.bundleCodeFileRequest=null;let t=u.path==null?r[u.file-1]:n.has(u.path)?u.path:null;if(t){l=t,F.bundleSourceFile=t,eB();let r=u.endLine??u.line;F.bundleSourceTargetLine=u.line&&r<=Lt(n.get(t))?{bundle:e.integrity,path:t,line:u.line,...r>u.line?{end:r}:{}}:null,F.bundleSourceTargetLine&&tB(u.line)}}if($z&&($z.bundle!==F.selectedBundle||l&&l!==$z.path)&&($z=null),l){if($z&&!$z.hadIssues&&o.size>0&&c().size>0){$z.hadIssues=!0;let t=VB(e,s,c());t&&t!==l&&(l=t,F.bundleSourceFile=t,F.bundleSourceFindingIdx=null,$z.path=t,eB())}}else{let t=c();l=VB(e,s,t),l&&(F.bundleSourceFile=l,$z={bundle:F.selectedBundle,path:l,hadIssues:t.size>0},eB())}l!==pB&&(hB(l,i),pB=l),l&&t?.managedId&&I()?G?.replaceCodeRoute(Rx(F.managedTeams,t,F.currentManagedTeam,`code`,zx(F))):l&&t?.npm&&I()?G?.replaceCodeRoute(_j(t,`code`,zx(F))):l&&t?.repository&&I()&&G?.replaceCodeRoute(KM(t,`code`,zx(F)));let d=l?n.get(l):null,{fileFindings:f,lineFindings:p}=sB(e,l,d,o),m=o.size>0?[`files`,`code`,`issues`,`largest`]:[`files`,`code`,`largest`],h=m.includes(F.bundleCodeSearchMode)?F.bundleCodeSearchMode:`files`,g=F.bundleCodeSearchQuery;return A`<div class="bundle-code-view"><aside class="bundle-code-rail"><div class="bundle-code-rail-head"><span class="bundle-code-rail-label">Files</span> <span class="bundle-code-rail-count">${r.length}</span> <span class="bundle-code-rail-actions"><button type="button" class="bundle-code-rail-action" aria-label="Terminal" data-tooltip="Terminal" data-bundle-code-terminal-toggle aria-pressed="${F.bundleCodeTerminal?`true`:`false`}" @click="${()=>vB(!F.bundleCodeTerminal)}">${hw}</button> <button type="button" class="bundle-code-rail-action" aria-label="Reveal current file" data-tooltip="Reveal current file" ?disabled="${!l}" @click="${()=>gB(l,i)}"><svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.3" aria-hidden="true"><circle cx="8" cy="8" r="4.5"/><circle cx="8" cy="8" r="1.5"/><path d="M8 0v3m0 10v3M0 8h3m10 0h3"/></svg></button> <button type="button" class="bundle-code-rail-action" aria-label="Collapse directories" data-tooltip="Collapse directories" ?disabled="${h!==`files`||!!g||a.dirs.size===0}" @click="${()=>_B(a)}">${mw}</button></span></div>${i?A`<div class="bundle-code-rail-prefix mono" data-tooltip-truncated data-tooltip="${i}">${i}</div>`:M}<bundle-code-search .modes="${m}"></bundle-code-search><div class="bundle-code-rail-body">${FT(h,[[`files`,()=>wB(a,l,g,o,i,e.kind===`stasis`?e.bundle.formats:null,n)],[`code`,()=>FB(e,n,g,l,i)],[`issues`,()=>IB(e,g,l,i)],[`largest`,()=>AB(e,n,g,l,i)]])}</div></aside><bundle-code-splitter role="separator" tabindex="0" aria-orientation="vertical" aria-label="Resize file tree" data-tooltip="Drag to resize · double-click to reset"></bundle-code-splitter><div class="${C({"bundle-code-main":!0,"with-panel":F.bundleSourceFindingIdx!=null})}">${l?KB(e,l,d,f,p,t):A`<div class="bundle-code-placeholder">Pick a file from the tree to view its source.</div>`} ${F.bundleCodeTerminal?yB():M}</div></div>`}function UB(e){return A`<span class="bundle-code-file-nav"><button type="button" class="focus-code-nav-btn" data-bundle-code-history="back" aria-label="Back to the previously shown file" ?disabled="${e.at===0}">${dw}</button> <button type="button" class="focus-code-nav-btn" data-bundle-code-history="forward" aria-label="Forward to the next shown file" ?disabled="${e.at>=e.files.length-1}">${fw}</button></span>`}var WB=[];function GB(e){let t=WB.find(t=>t.text===e);if(t)return t.stats;let n=Lt(e),r=`${n.toLocaleString()} ${n===1?`line`:`lines`} \xB7 ${Wr(ha(e))}`;return WB.unshift({text:e,stats:r}),WB.length=Math.min(WB.length,2),r}function KB(e,t,n,r,i,a=null){let o=Xk(F.bundleCodeHistory,e.integrity,t),s=Zz(e,a,t,n,r,i),{pretty:c,toggle:l,fileFindings:u,lineFindings:d}=s,f=typeof n==`string`&&$k(t)!==null,p=f?nA(e,t,n,It(e),()=>{F.bundleSourceFile===t&&X()}):null,m=p?.status===`ready`,h=m?n:s.content,g=u.map((e,t)=>({idx:t,line:parseInt(e.line,10)||0})).toSorted((e,t)=>e.line-t.line||e.idx-t.idx),_=jD(e,t,a?.managedId&&a.repoId!=null?{github:a.repoFullName,directory:a.repoDirectory}:null);return A`<header class="bundle-code-main-bar">${UB(o)} ${qe(t,Ge(e,t))} <span class="bundle-code-main-path mono" data-tooltip-truncated data-tooltip="${t}">${t}</span> <button type="button" class="bundle-code-copy-path" data-copy-path="${t}" aria-label="Copy file path">${uw}</button> ${_?MD(_,a?.commitInfo):M} <span class="bundle-code-main-spacer"></span> ${u.length>0&&!m?A`<span class="bundle-code-main-issues" data-bundle-code-issue-order="${JSON.stringify(g)}"><span class="${`bundle-code-tree-count sev-${nB(u)}`}" data-tooltip="${`${u.length} ${u.length===1?`issue`:`issues`} in this file`}">${u.length}</span> <button type="button" class="bundle-code-issue-step" data-bundle-code-issue-step="-1" aria-label="Previous issue">‹</button> <button type="button" class="bundle-code-issue-step" data-bundle-code-issue-step="1" aria-label="Next issue">›</button></span>`:M} ${m?M:Yz()} ${m?M:l} ${f?Qz(p):M} ${typeof h==`string`?A`<span class="bundle-code-main-stats">${l===M?M:A`<span class="bundle-code-main-stats-room" aria-hidden="true">${GB(n)}</span>`}<span>${GB(h)}</span></span>`:M}</header><div class="bundle-code-main-body">${m?A`<lockfile-graph .lockfile="${p.lockfile}"></lockfile-graph>`:lB(t,h,e,u,d,null,!c&&!!(a?.managedId||a?.npm)&&I()&&!Ke(),c)}</div>`}var qB=400;function JB(e){return e<=5?8:e<=15?6:e<=40?4:e<=120?3:2}function YB(e,t,n){let r=[];for(let i of e){let e=Math.max(1,i.ln-n),a=Math.min(t,i.ln+n),o=r.at(-1);o&&e<=o.end+1?o.end=Math.max(o.end,a):r.push({start:e,end:a})}return r}function XB(e,t,n){if(e.length<=n)return{text:e,ranges:t,clipped:!1};let r=t.length>0?t[0][0]:0;return SR(e,t,r>n-60?Math.max(0,r-60):0,n)}function ZB(e,t,n){let r=XB(e,n??[],qB);return A`<div class="${C({"bundle-search-line":!0,"is-match":n!=null})}"><span class="bundle-search-lineno">${t}</span> <span class="bundle-search-code">${r.clipped?A`<span class="bundle-search-clip">…</span>`:M}${CR(r.text,r.ranges)}</span></div>`}function QB(e,t,n,r,i){let{start:a,end:o}=n,s=a;for(let e=a;e<=o;e++)if(r.has(e)){s=e;break}let c=String(o).length,l=[];for(let e=a;e<=o;e++)l.push(ZB(t[e-1]??``,e,r.get(e)??null));return A`${i?A`<div class="bundle-search-gap" aria-hidden="true"></div>`:M} <button type="button" class="bundle-search-snippet" style="${E({"--bundle-search-lineno-w":`${c}ch`})}" data-bundle-view-source="${e}" data-bundle-view-line="${s}" data-bundle-view-scroll-block="center">${l}</button>`}function $B(e,t,n){let{path:r,lines:i,hits:a}=e,o=SB(r,t),s=YB(a,i.length,n),c=new Map(a.map(e=>[e.ln,e.ranges])),l=a[0].ln,u=r===F.bundleSourceFile;return A`<section class="${C({"bundle-search-file":!0,current:u})}"><header class="bundle-search-file-head"><button type="button" class="bundle-search-file-name mono" data-bundle-view-source="${r}" data-bundle-view-line="${l}" data-bundle-view-scroll-block="center" data-tooltip-truncated data-tooltip="${r}">${o}</button> <span class="bundle-search-file-count">${a.length} ${a.length===1?`match`:`matches`}</span></header><div class="bundle-search-snippets">${s.map((e,t)=>QB(r,i,e,c,t>0))}</div></section>`}function eV(e,t,n,r,i,a){if(!n)return A`<div class="bundle-search-results"><div class="bundle-search-hint">Search across every ${e.npm?`file of this version`:e.repository?`file of this directory`:`source in this bundle`}. Each match shows the surrounding lines for context — fewer matches get more context. Toggle <span class="bundle-search-hint-kbd">Aa</span> for case-sensitive and <span class="bundle-search-hint-kbd">.*</span> for regular-expression matching.</div></div>`;let o=gR(e.integrity??``,t,n,r,i,DB(e,t));if(o.error)return A`<div class="bundle-search-results"><div class="bundle-search-error"><span class="bundle-search-error-label">Invalid regular expression</span> <span class="bundle-search-error-msg mono">${o.error}</span></div></div>`;let{fileResults:s,totalHits:c,truncated:l}=o,u=nV(t);if(s.length===0)return A`<div class="bundle-search-results"><div class="bundle-search-empty">No matches.</div></div>`;let d=a?JB(c):0,f=s.length;return A`<div class="bundle-search-results"><div class="bundle-search-summary"><span>${c}${l?`+`:``} ${c===1?`match`:`matches`} in ${f}${l?`+`:``} ${f===1?`file`:`files`}</span> ${u?A`<span class="bundle-search-summary-prefix mono" data-tooltip-truncated data-tooltip="${u}">${u}</span>`:M} ${l?A`<span class="bundle-search-summary-more">results capped — refine to narrow</span>`:M}</div>${D(s,e=>e.path,e=>$B(e,u,d))}</div>`}var tV=new WeakMap;function nV(e){return tV.has(e)||tV.set(e,Pn([...e.keys()].toSorted()).prefix),tV.get(e)}var rV={content:null,path:null,query:``,useRegex:!1,caseSensitive:!1,lines:null};function iV(e,t,n,r,i,a){let o=t.get(n);if(!r||typeof o!=`string`)return null;let s=rV;if(s.content===o&&s.path===n&&s.query===r&&s.useRegex===i&&s.caseSensitive===a)return s.lines;let c=gR(e.integrity??``,t,r,i,a,DB(e,t));if(c.error)return null;let l;if(c.truncated){let e=fR(r,i,a);l=new Set;let t=o.split(`
185
+ `);for(let n=0;n<t.length;n++)e.ranges(t[n]).length>0&&l.add(n+1)}else l=new Set(c.fileResults.find(e=>e.path===n)?.hits.map(({ln:e})=>e));return rV={content:o,path:n,query:r,useRegex:i,caseSensitive:a,lines:l},l}function aV(e,t,n,r){let i=F.bundleSourceFile;if(!i)return M;let a=t.get(i),{fileFindings:o,lineFindings:s}=sB(e,i,a),c=Zz(e,r,i,a,o,s);return A`<aside class="bundle-search-side">${cB(i,null,c.toggle)}<div class="bundle-source-body">${lB(i,c.content,e,c.fileFindings,c.lineFindings,c.pretty?null:n,!1,c.pretty)}</div></aside>`}function oV(e,t=null){let n=It(e);if(n.size===0)return A`<div class="bundle-search-view"><div class="bundle-code-empty">${e.npm?`This version has no text files to search.`:e.repository?`This directory has no text files to search.`:`This bundle doesn't carry any source content.`}</div></div>`;let r=F.bundleSearchQuery,i=F.bundleSearchRegex,a=F.bundleSearchCase,o=null;if(F.bundleSourceFile){let t=iV(e,n,F.bundleSourceFile,r,i,a);t&&t.size===0?(F.bundleSourceFile=null,F.bundleSourceFindingIdx=null):o=t}let s=F.bundleSearchContext;return A`<div class="bundle-search-view"><div class="bundle-search-bar-row"><bundle-search></bundle-search><mode-switch data-bundle-search-context label="Context" .checked="${s}" accessible-label="Toggle context lines"></mode-switch></div><div class="bundle-search-main">${eV(e,n,r,i,a,s)} ${aV(e,n,o,t)}</div></div>`}var sV=(e,t,n,r=!1,i=null)=>i?A`<button type="button" class="${C({"bundles-tab":!0,active:n===e})}" aria-selected="${String(n===e)}" role="tab" @click="${()=>{e!==n&&i(e)}}">${t}</button>`:A`<button type="button" class="${C({"bundles-tab":!0,active:n===e})}" data-bundle-tab="${e}" aria-selected="${String(n===e)}" role="tab" ?disabled="${r}">${t}</button>`,cV=()=>[[`treemap`,`Treemap`],[`code`,`Code`],[`search`,`Search`],[`compare`,`Compare`],...F.managedSession&&!F.managedSession.publicShare&&(F.managedSession.dependencyReview===!0||F.managedTeams?.some(e=>e.dependencyReview===!0))?[[`review`,`Review`]]:[],[`overview`,`Overview`]],lV=e=>[[`treemap`,`Treemap`],[`code`,`Code`],[`search`,`Search`],[`compare`,`Compare`],[TM(e),`Activity`]];function uV(e,t){return vN(()=>t===`commits`?A`<repository-history .repository="${e}" .repo="${zM(e)}" .refs="${RM(e.repoId)}"></repository-history>`:t===`agents`?A`<repository-agents .repository="${e}" .repo="${zM(e)}"></repository-agents>`:t===`pulse`?A`<repository-pulse .repository="${e}" .repo="${zM(e)}"></repository-pulse>`:t===`replay`?A`<repository-replay .repository="${e}" .repo="${zM(e)}"></repository-replay>`:A`<repository-issues .repository="${e}" .repo="${zM(e)}" .kind="${t}"></repository-issues>`)}function dV(e,t,n,r,{overview:i=!1,opening:a=!1,onTab:o=null}={}){let{npm:s}=e,c=e.repository&&!a?$M(e):null,l=c??e.repository,u=!!c||a&&!!l&&!F.repositoryCodeOpening?.error,d=o?e=>{let n=e.target.closest?.(`[data-bundle-tab]`)?.dataset.bundleTab;n&&(e.stopPropagation(),n!==t&&o(n))}:M;return A`<div class="bundles-view bundles-slide-view"><bundle-slide-header class="bundles-slide-header"><header class="bundles-slide-bar">${I()&&e.managedId&&e.repoId==null?A`<span class="bundles-slide-breadcrumb"><button type="button" @click="${()=>document.dispatchEvent(new CustomEvent(`managed-admin-navigate`,{detail:{view:`manage-bundles`},bubbles:!0,composed:!0}))}">Bundles</button> <span aria-hidden="true">></span></span>`:M} ${s?A`<span class="bundles-slide-breadcrumb"><button type="button" @click="${()=>Hj()}">npm</button> <span aria-hidden="true">></span></span>`:M} <span class="bundles-slide-icon" aria-hidden="true">${k(s?Xi:l?ra:Yi)}</span><div class="${C({"bundles-slide-title":!0,"bundles-slide-repository":!!l})}">${s?A`<div class="bundles-slide-name" data-tooltip-truncated data-tooltip="${s.name}">${s.name}</div><npm-version-select .name="${s.name}" .version="${s.version}" .tab="${t}" .list="${a?null:jj(s.name)}"></npm-version-select>`:l?A`<repository-code-source .repository="${l}" .tab="${t}" .repos="${LM()}" .refs="${RM(l.repoId)}"></repository-code-source>`:A`<div class="bundles-slide-name" data-tooltip-truncated data-tooltip="${e.name}">${e.name}</div>`}</div><button type="button" class="bundles-download-btn bundles-scan-button" ?hidden="${!ZL(e)}" @click="${()=>{QL(e)}}">${k(ta)}<span>Scan</span></button><div class="bundles-slide-tabs" role="tablist">${n.map(([e,n])=>sV(e,n,t,a||!!c,o))}</div>${u?A`<span class="bundles-slide-progress" role="progressbar" aria-label="${`Opening ${l.repo?kM(l):`the repository`}`}"></span>`:M}</header></bundle-slide-header><div class="${C({"bundles-slide-body":!0,"bundles-slide-body-overview":i,"is-pending":!!c})}" ?inert="${!!c}" aria-busy="${c?`true`:M}" @click="${d}">${r}</div></div>`}function fV({name:e,spec:t,tab:n}){return dV({npm:{name:e,version:t??`latest`}},n,cV(),A`<div class="bundles-slide-placeholder" role="status">Opening ${pj(e,t)}…</div>`,{opening:!0})}function pV(e){let{repoId:t,commit:n,path:r,tab:i,repo:a,revision:o,error:s,code:c,historyOnly:l=!1}=e,u=a?kM({repo:a,path:r}):r||`the repository`,d=n?` at ${n.slice(0,7)}`:``,f={repoId:t,repo:a,commit:n,path:r,revision:o},p=!!(n&&(l||s));return dV({repository:f},i,lV(i),p&&li.has(i)?uV(f,i):i===`treemap`&&n&&(!s||c===`directory-too-large`)?A`<repository-treemap .repository="${f}"></repository-treemap>`:s?A`<div class="bundles-slide-placeholder is-error repository-code-failed"><p role="alert">Couldn't open ${u}${d}: ${s}</p>${lN(e)}</div>`:A`<div class="bundles-slide-placeholder" role="status">Opening ${u}${d}…</div>`,{opening:!l,onTab:p?t=>rN(e,t):null})}function mV(e){let t=!!e.npm;t&&!si.has(F.bundleDetailsTab)&&(F.bundleDetailsTab=`overview`);let n=!!e.repository;n&&!ci.has(F.bundleDetailsTab)&&(F.bundleDetailsTab=`code`);let r=!t&&!n&&az(e,F.bundleDetails,F.bundleDetailsTab===`advisories`);F.bundleDetailsTab===`advisories`&&!r&&(F.bundleDetailsTab=`overview`);let i=t||F.bundleDetailsTab===`compare`||Fx(F.bundles??[],F.selectedBundle).length>0,a=!I();F.bundleDetailsTab===`issues`&&!a&&!n&&(F.bundleDetailsTab=`overview`);let o=F.bundleDetailsTab,s=o===`overview`,c=F.bundleDetails,l=!!(c&&c.integrity===e.integrity),u=l&&!c.error&&!!(c.json||c.bundle)&&!(c.metadataOnly&&qt(o));return o===`advisories`&&r&&u&&c.kind===`stasis`&&mz(c,X).catch(()=>{}),dV(e,o,t?cV():n?lV(F.bundleDetailsTab):[...r?[[`advisories`,`Advisories`]]:[],...a?[[`issues`,`Issues`]]:[],[`terminal`,`Terminal`],[`treemap`,`Treemap`],[`graph`,`Graph`],[`code`,`Code`],[`search`,`Search`],...i?[[`compare`,`Compare`]]:[],[`overview`,`Overview`]],s?PV(e,c):u?FT(o,[[`terminal`,()=>A`<div id="bundle-terminal-slot" class="bundle-terminal-slot"></div>`],[`graph`,()=>A`<div id="bundle-graph-slot" class="bundle-graph-slot"></div>`],[`treemap`,()=>A`<bundle-treemap .details="${c}"></bundle-treemap>`],[`code`,()=>HB(c,e)],[`search`,()=>oV(c,e)],[`commits`,()=>uV(e.repository,`commits`)],[`pulls`,()=>uV(e.repository,`pulls`)],[`agents`,()=>uV(e.repository,`agents`)],[`pulse`,()=>uV(e.repository,`pulse`)],[`replay`,()=>uV(e.repository,`replay`)],[`review`,()=>eR(()=>A`<npm-review .entry="${e}" .details="${c}" .request="${F.npmReview}" .session="${F.managedSession}" .source="${sI(e)}"></npm-review>`)],[`compare`,()=>eR(()=>A`<bundle-compare .details="${c}" .integrity="${e.integrity}" .request="${F.bundleCompare}" .source="${t?sI(e):n?pI(e):null}"></bundle-compare>`)],[`issues`,()=>n?uV(e.repository,`issues`):vV(c)],[`advisories`,()=>xz(c,X,ZL(e)?()=>{QL(e,{mode:`dependencies`})}:null)]]):l&&c.sourceError?A`<div class="bundles-slide-placeholder is-error">${c.sourceError} <button type="button" data-bundle-retry-sources>Retry</button></div>`:l&&!c.metadataOnly?A`<div class="${C({"bundles-slide-placeholder":!0,"is-error":!!c.error})}">${c.error?`Failed to parse: ${c.error}`:`Bundle contents not parsed.`}</div>`:A`<div class="bundles-slide-placeholder">Loading bundle…</div>`,{overview:s})}function hV(e,t={}){if(!e)return M;let n=[];if(e.fileHash&&(n=Af(e.fileHash,e)),n.length===0&&t.bucketKey&&(t.kind===`package`?n=jf(t.bucketKey,e):t.kind===`repository`&&(n=Mf(t.bucketKey,e))),n.length===0)return M;let r=n.slice(0,2),i=n.length-r.length;return A`<div class="bundle-issue-reports">${r.map(e=>{let t=st[Xx(e)]??st.default;return A`<button type="button" class="report-chip" data-bundle-issue-report="${e}">${k(t)}<span class="report-chip-label" data-tooltip-truncated data-tooltip="${e}">${x(e)}</span></button>`})} ${i>0?A`<span class="bundle-issue-reports-more">, and ${i} more…</span>`:M}</div>`}function gV(e){if(e==null||e===``)return``;let t=String(e),n=t.indexOf(`-`);if(n>0){let e=parseInt(t.slice(0,n),10),r=parseInt(t.slice(n+1),10);return Number.isFinite(e)&&Number.isFinite(r)&&r>e?`Lines ${e}-${r}`:Number.isFinite(e)?`Line ${e}`:``}let r=parseInt(t,10);return Number.isFinite(r)?`Line ${r}`:``}function _V(e,t){return A`<div class="bundle-issues-empty"><p class="bundle-issues-empty-primary">${e}</p>${t?A`<p class="bundle-issues-empty-hint">${t}</p>`:M}</div>`}function vV(e){if(e.managedId)return _V(`Open a report to review its findings.`,`Bundle metadata includes source hashes; reports are available through your teams.`);if(!e.fileHashes)return _V(`Computing file hashes…`,`Hashing this bundle's sources so findings from your reports can be matched against them.`);if(e.fileHashes.size===0)return _V(`This bundle doesn't carry any source content.`,`Issues are matched by source-file hash, so a bundle without inline sources has nothing to match findings against.`);let t=Nz(e.fileHashes,`issues`);if(t.size===0){let t=Oz();if(t===0)return _V(`No issues match this bundle's files.`,`Issues are analyzer findings matched to this bundle by source-file hash. No hash-carrying findings are indexed yet — hash matching needs the analyzer's native JSON reports; drop one and any matches will appear here automatically.`);let n=0;for(let t of e.fileHashes.values())n+=Dz(t).length;return n>0?_V(`All matching issues are dismissed.`,`${n} ${n===1?`finding matches`:`findings match`} this bundle's files, but every one is triaged invalid or deleted.`):_V(`No issues match this bundle's files.`,`None of the ${t.toLocaleString()} indexed ${t===1?`finding`:`findings`} reference a source file in this bundle \u2014 matching compares exact file hashes, so findings from a different build of the same project won't line up.`)}return yV(t,{kind:`bundle`})}function yV(e,{kind:t,bucketKey:n}={}){let r=[...e.keys()],{prefix:i,stripped:a}=Pn(r),c=new Map(r.map((e,t)=>[e,a[t]])),l=[...e.entries()].toSorted(([e,t],[n,r])=>{let i=ki[nB(t)]??0,a=ki[nB(r)]??0;return a===i?(c.get(e)??e).localeCompare(c.get(n)??n):a-i}),u=[...e.values()].reduce((e,t)=>e+t.length,0);return A`<div class="bundle-issues"><div class="bundle-issues-summary">${u} ${u===1?`issue`:`issues`} across ${e.size} ${e.size===1?`file`:`files`} ${i?A`<span class="mono">${i}</span>`:M}</div><ul class="bundle-issues-list">${D(l,([e])=>e,([e,r])=>{let i=c.get(e)??e,a=[...r].toSorted((e,t)=>{let n=ki[e.severity]??0,r=ki[t.severity]??0;return r===n?(parseInt(e.line,10)||0)-(parseInt(t.line,10)||0):r-n}),l=t===`repository`&&n?`${/^https?:/iu.test(n)?n.replace(/\/$/u,``):`https://github.com/${n}`}/blob/HEAD/${e}`:null;return A`<li class="bundle-issues-file-group"><header class="bundle-issues-file-header">${t===`bundle`?A`<button type="button" class="bundle-issues-file-name mono" data-bundle-view-source="${e}" data-tooltip-truncated data-tooltip="${e}">${i}</button>`:l?A`<a class="bundle-issues-file-name bundle-issues-file-name-link mono" href="${l}" target="_blank" rel="noopener" data-tooltip-truncated data-tooltip="${e}">${i}</a>`:A`<span class="bundle-issues-file-name bundle-issues-file-name-static mono" data-tooltip-truncated data-tooltip="${e}">${i}</span>`} <span class="bundle-issues-file-count">${r.length} ${r.length===1?`issue`:`issues`}</span></header><ul class="bundle-issues-findings">${D(a,t=>JSON.stringify([t.id??`${e}\0${t.line??``}\0${t.severity??``}\0${t.description??``}`,o(t)]),i=>{let a=r.indexOf(i),o=i.severity,c=gV(i.line),l=s(i,F.triage.get(T(i))),u=l===`fixed`||l===`invalid`||l===`deleted`?l.toUpperCase():l===`inprogress`?`In progress`:l===`ignored`?`Ignored`:null,d=A`<div class="bundle-issues-finding-head"><span class="${`bundle-issue-sev sev-${o}`}">${o.replaceAll(`_`,` `)}</span> ${c?A`<span class="bundle-issues-finding-line">${c}</span>`:M} ${u?A`<span class="${`bundle-issues-finding-triage triage-${l}`}">${u}</span>`:M} <span class="bundle-issues-finding-spacer"></span> ${hV(i,{kind:t,bucketKey:n})}</div><div class="bundle-issues-finding-desc">${Dw(Hi(i),{paragraphs:!1})}</div>`;return A`<li class="bundle-issues-finding">${t===`bundle`?A`<button type="button" class="bundle-issues-finding-link" data-bundle-view-source="${e}" data-bundle-view-finding-idx="${a}" data-bundle-view-line="${i.line??``}">${d}</button>`:A`<div class="bundle-issues-finding-link bundle-issues-finding-static">${d}</div>`}</li>`})}</ul></li>`})}</ul></div>`}function bV(e){let t=F.selectedBundle,n=t?e.find(e=>e.integrity===t):null;return n?mV(n):A`<div class="bundles-view bundles-view-empty"><p class="bundles-empty-hint">Pick a bundle from the sidebar to open it.</p></div>`}var xV=A`<svg viewBox="0 0 16 16" width="12" height="12" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M8 2v8"/><path d="m4.5 7 3.5 3.5L11.5 7"/><path d="M2.5 13h11"/></svg>`,SV=A`<svg viewBox="0 0 24 24" width="12" height="12" fill="currentColor" aria-hidden="true"><path d="M0 0v24H8.222l2.089-2.373 2.09-2.374V13.2H18.978l2.51-2.488L24 8.223V0H12zm5.2 5.2h13.791L12.2 12c-3.735 3.74-6.838 6.8-6.896 6.8-.057 0-.104-3.06-.104-6.8zm8.4 8.8v10H24V14h-5.2z"/></svg>`,CV=Object.freeze({javascript:`#f1e05a`,jsx:`#f1e05a`,typescript:`#3178c6`,tsx:`#3178c6`,json:`#f1e05a`,css:`#663399`,markup:`#e34c26`,yaml:`#cb171e`,bash:`#89e051`,markdown:`#083fa1`,solidity:`#AA6746`,php:`#4F5D95`,rust:`#dea584`,ruby:`#701516`,java:`#b07219`,cpp:`#f34b7d`,c:`#555555`,objectivec:`#438eff`,python:`#3572A5`,go:`#00ADD8`,kotlin:`#A97BFF`,swift:`#F05138`,dart:`#00B4AB`,sql:`#e38c00`,lua:`#000080`,csharp:`#178600`,scala:`#DC322F`,vue:`#41B883`,svelte:`#FF3E00`}),wV=Object.freeze([`#8b5cf6`,`#ec4899`,`#14b8a6`,`#f97316`,`#06b6d4`,`#84cc16`,`#e11d48`,`#a855f7`]);function TV(e){if(CV[e])return CV[e];let t=0;for(let n of e)t=Math.imul(t,31)+n.codePointAt(0)|0;return wV[(t>>>0)%wV.length]}function EV(e){let t=e.currentTarget,n=e.target.closest?.(`.bundles-languages-segment`);!n||!t.contains(n)||(t.dataset.tooltip=n.dataset.languageTooltip??``,ir(t))}function DV(e){delete e.currentTarget.dataset.tooltip,or()}var OV=e=>e.codeStats??=Kt(e.npm?new Map([...Xt(e)].filter(([e])=>!WA.test(e.slice(e.lastIndexOf(`/`)+1)))):Xt(e),Vt(e));function kV(e,{legend:t=!1}={}){if(!(e?.kind===`stasis`&&e.bundle)&&!(e?.npm&&e.json))return M;let n=OV(e),r=n.lines,i=n.languages.filter(e=>e.lines>0);if(r<=0||i.length===0)return M;let a=e=>{let t=e/r*100;return t<.1?`<0.1`:t<1?t.toFixed(1):t.toFixed(0)},o=t?A`<ul class="bundles-languages-legend">${i.slice(0,4).map(({key:e,label:t,lines:n})=>A`<li><span class="bundles-languages-swatch" style="${E({background:TV(e)})}"></span>${t}<span class="bundles-languages-share">${a(n)}%</span></li>`)}</ul>`:M;return A`<div class="bundles-languages-bar" data-tooltip-managed aria-label="Languages in this bundle" @pointerover="${EV}" @pointerleave="${DV}">${i.map(({key:e,label:t,lines:n})=>A`<span class="bundles-languages-segment" style="${E({flexGrow:n,background:TV(e)})}" data-language-tooltip="${`${t} \xB7 ${a(n)}% \xB7 ${n.toLocaleString()} LoC`}"></span>`)}</div>${o}`}async function AV(e){try{await(await K()).downloadManagedBundle(e.managedId,e.filename??e.name??`bundle`)}catch(e){alert(e.message)}}function jV(e,t){let n=aR(t),r=kV(t);return A`<div class="bundles-overview-exports"><div class="bundles-overview-exports-row">${e.managedId?Ke()?A`<button type="button" class="bundles-download-btn" @click="${()=>{AV(e)}}">${xV}<span>Download bundle</span></button>`:A`<a class="bundles-download-btn" href="${`/api/bundles/${encodeURIComponent(e.managedId)}/download`}">${xV}<span>Download bundle</span></a>`:A`<button type="button" class="bundles-download-btn" data-bundle-download="${e.integrity}">${xV}<span>Download bundle</span></button>`} ${n?A`<div class="bundles-export-pair"><button type="button" class="bundles-download-btn" data-bundle-export-sbom="cyclonedx" data-tooltip="Export a CycloneDX SBOM (.cdx.json)">CycloneDX</button> <button type="button" class="bundles-download-btn" data-bundle-export-sbom="spdx" data-tooltip="Export an SPDX SBOM (.spdx.json)">${SV}<span>SPDX</span></button></div>`:M}</div>${r}</div>`}function MV(e,t,{placeholder:n=M,overviewClass:r=``}={}){return A`<div class="bundles-overview ${r}"><div class="bundles-overview-summary"><div class="bundles-detail-meta-row">${e}${t}</div></div>${n}</div>`}function NV(e){let t=e.filter(e=>typeof e==`number`);return t.length>0?t.reduce((e,t)=>e+t,0):null}function PV(e,t){if(e.npm)return LV(e,t);let n=t?.integrity===e.integrity,r=e.summary?.commit,i=n?!t.error&&t.kind===`stasis`?t.bundle:null:e.managedId&&e.repoFullName&&r?{repo:{github:e.repoFullName,directory:e.repoDirectory??``,commit:r}}:null,a=n?t.size:e.managedId?e.size:null,o=(t=``,n=!1)=>A`<dl class="bundles-detail-meta"><dt>Name</dt><dd>${e.name}</dd>${e.managedId?A`<dt>Repository</dt><dd>${e.repoFullName||`Unattached`}</dd>${e.repoId==null?M:A`<dt>Directory</dt><dd class="mono">/${e.repoDirectory??``}</dd>`}`:M} ${ot(i,t,e.commitInfo).map(t=>A`<dt>${t.label}</dt><dd class="bundle-origin-row"><a class="bundle-origin-link" href="${t.href}" target="_blank" rel="noopener noreferrer">${t.label===`GitHub`?k(ia):M}<span>${t.text}</span></a> ${t.commit?A`<a class="bundle-origin-link bundle-commit-link" href="${t.commit.href}" data-tooltip="${t.commit.hash}" data-tooltip-icon="commit" data-tooltip-commit-info="${it(e.commitInfo,t.commit.hash)??M}" target="_blank" rel="noopener noreferrer">${k(aa)}<span>${t.commit.text}</span></a>`:M} ${t.commit?.tags?A`<span class="bundle-origin-tags">${t.commit.tags.map(e=>A`<a class="bundle-origin-link bundle-tag-link" href="${e.href}" target="_blank" rel="noopener noreferrer">${k(Gi)}<span>${e.name}</span></a>`)}</span>`:M}</dd>`)}<dt>Integrity</dt><dd class="mono bundle-integrity">${e.integrity}</dd>${t?A`<dt>Prefix</dt><dd class="mono">${t}</dd>`:M} ${i?.entries?.size>0?A`<dt>${i.entries.size===1?`Entry`:`Entries`}</dt><dd class="mono"><ul class="bundles-entry-points">${[...i.entries].map(e=>A`<li><button type="button" class="bundle-entry-point" data-bundle-view-source="${e}">${SB(e,t)}</button></li>`)}</ul></dd>`:M} ${n&&Number.isSafeInteger(a)?A`<dt>Size</dt><dd>${Wr(a)}</dd>`:M}</dl>`,s=jV(e,t);if(!n)return MV(o(``,!0),s);if(t.error)return MV(o(``,!0),s,{placeholder:A`<div class="bundles-overview-placeholder is-error">Failed to parse: ${t.error}</div>`});if(t.kind===`sourcemap`&&t.json){let e=t.json,n=Vt(t),r=e.sources??[...n.keys()],i=t.sourceSizes??(n.size===r.length?r.map(e=>n.get(e)??null):r.map((t,n)=>typeof e.sourcesContent?.[n]==`string`?ha(e.sourcesContent[n]):null));return Gz(o,A`<dt>Version</dt><dd>${String(e.version??`?`)}</dd>${e.file?A`<dt>Output</dt><dd class="mono">${e.file}</dd>`:M} ${e.sourceRoot?A`<dt>Source root</dt><dd class="mono">${e.sourceRoot}</dd>`:M} ${e.names||t.namesCount!=null?A`<dt>Names</dt><dd>${e.names?.length??t.namesCount}</dd>`:M}`,r,i,null,s,{bundleSize:t.size,unpackedSize:NV(i)})}if(t.kind===`stasis`&&t.bundle){let e=t.bundle,n=Vt(t),{sourceNames:r,resources:i}=IV(Ht(t)),a=new Set;for(let t of e.imports.keys()){let e=t.replace(/\s*\(with: .*\)\s*$/u,``);for(let t of e.split(`, `))a.add(t)}let c=[...a].toSorted(),l=r.map(e=>n.get(e));return Gz(o,A`<dt>Version</dt><dd>${String(e.version)}</dd>${c.length>0?A`<dt>Resolution kinds</dt><dd>${c.join(`, `)}</dd>`:M}`,r,l,Wt(t),s,{bundleSize:t.size,unpackedSize:NV(l),resources:i,details:t})}return MV(o(``,!0),s,{placeholder:A`<div class="bundles-overview-placeholder">Bundle contents not parsed.</div>`})}var FV=new WeakMap;function IV(e){if(!FV.has(e)){let t=[...e.keys()];FV.set(e,{sourceNames:t,resources:new Set(t.filter(t=>e.get(t)===`resource`))})}return FV.get(e)}function LV(e,t){let n=`/api/npm/download?${new URLSearchParams({name:e.npm.name,version:e.npm.version})}`,r=A`<a class="bundles-download-btn" href="${n}">${xV}<span>Tarball</span></a>`,i=A`<div class="bundles-overview-exports"><div class="bundles-overview-exports-row">${rP(e)}${r}</div></div>`;if(t?.integrity!==e.integrity||!t.json)return MV(_M(e,{githubFigures:TP(e),provenance:AP(e),provenanceNamesBuilder:DP(e.npm)}),i,{overviewClass:`npm-overview`});let{sources:a}=t.json,o=Vt(t),s=a.map(e=>o.get(e)??null),{paths:c,binaries:l,content:u}=BP(t),d=hP(e.npm);return Gz(t=>_M(e,{prefix:t,githubFigures:TP(e),provenance:AP(e),provenanceNamesBuilder:DP(e.npm),files:c}),yM(e,c,t),a,s,null,M,{bundleSize:t.size,unpackedSize:NV(s),resources:l,leadColumn:A`${lM(e)}${PP(e)}`,trailColumns:rI(l,o),summaryExtra:A`${vP(e,c)}${JP(e,t)}${nI(e,kV(t,{legend:!0}),t)}${bP(e,r,lF(e))}`,overviewClass:`npm-overview`,lines:OV(t).lines,sized:(e,t,n)=>gA(e,u[e],n),fileTag:e=>A`${gP(d.get(e))}${YP(t,e,!0)}`,fileFlags:e=>ZP(t,e,d.get(e)),fileIcon:e=>qe(e,l.has(e)?`binary`:void 0),fileFilter:WP(e)})}function RV(){Bf().catch(()=>{});let e=Of(),t={inprogress:0,fixed:0,invalid:0,deleted:0,ignored:0},n=[];for(let[r,i]of e){let e=[],a=[],o=new Map,c=new Set;for(let[n,r]of i.byVersion){let i=[],l=new Map;for(let e of r.findings){let n=s(e,F.triage.get(T(e)))??null;n===`inprogress`?t.inprogress++:n===`fixed`?t.fixed++:n===`invalid`?t.invalid++:n===`deleted`?t.deleted++:n===`ignored`&&t.ignored++,n===F.shownTriage&&(i.push(e),l.has(e.file)||l.set(e.file,[]),l.get(e.file).push(e))}if(i.length!==0){e.push([n,{findings:i,files:l,reports:r.reports}]);for(let e of i)a.push(e),o.has(e.file)||o.set(e.file,[]),o.get(e.file).push(e);for(let e of r.reports)c.add(e)}}e.length!==0&&(e.sort(([e],[t])=>df(e,t)),n.push([r,{findings:a,files:o,reports:c,versions:e}]))}let r=F.selectedPackage,i=r?n.find(([e])=>e===r)??null:null,a=null;if(i){let e=i[1].versions,t=F.selectedPackageVersion;a=e.find(([e])=>e===t)??null,!a&&e.length===1&&(a=e[0])}let o=a?a[1]:i?i[1]:null;if(i&&F.packageDetailsTab===`issues`)return GV(i[0],o,a?a[0]:void 0);let c=F.packagesSearchQuery.trim().toLowerCase(),l=c?n.filter(([e])=>e.toLowerCase().includes(c)):n.slice();UV(l,F.packagesSortBy);let u=n.reduce((e,[,t])=>e+t.findings.length,0),d=new Set;for(let[,e]of n)for(let t of e.reports)d.add(t);let f=i?`packages-layout open`:`packages-layout`;return A`<div class="${C({"packages-view":!0,"with-details":!!i})}"><header class="page-head"><div class="page-title"><h1>Packages</h1><div class="meta-row"><span>${l.length===n.length?A`${n.length} ${n.length===1?`package`:`packages`}`:A`${l.length} of ${n.length} ${n.length===1?`package`:`packages`}`}</span> ${u>0?A`<span>${u} ${u===1?`finding`:`findings`} across ${d.size} ${d.size===1?`report`:`reports`}</span>`:M}</div></div>${VV(t)}</header>${n.length===0?A`<p style="${E({color:`var(--muted)`})}">${e.size===0?`Indexing reports… this view populates as the OPFS scan finishes.`:F.shownTriage?`No ${F.shownTriage} findings in any package.`:`No untriaged findings in any package.`}</p>`:l.length===0?A`<p style="${E({color:`var(--muted)`})}">No packages match "${F.packagesSearchQuery}".</p>`:A`<div class="${f}"><ul class="packages-list">${D(zV(l),BV,e=>KV(e,r,F.selectedPackageVersion))}</ul>${i?A`<aside class="packages-details" id="packages-details"><header class="packages-details-bar"><span class="packages-details-label">Details</span> <button type="button" class="packages-details-close" data-deselect-package aria-label="Close details">×</button></header><div class="packages-details-body">${YV(i[0],o,a?a[0]:void 0)}</div></aside>`:M}</div>`}</div>`}function zV(e){let t=[];for(let[n,r]of e){let e=r.versions;if(e.length<=1){let[r,i]=e[0];t.push({kind:`single`,pkg:n,version:r,bucket:i,totalVersions:1});continue}let[i,a]=e[0],o=F.expandedPackages.has(n);if(t.push({kind:`latest`,pkg:n,version:i,bucket:a,totalVersions:e.length,expanded:o}),o)for(let r=1;r<e.length;r++){let[i,a]=e[r];t.push({kind:`other`,pkg:n,version:i,bucket:a,totalVersions:e.length})}}return t}function BV(e){return e.version===null?`${e.kind}:${e.pkg}`:`${e.kind}:${e.pkg}@${e.version}`}function VV(e){return A`<div class="packages-toolbar"><entity-search kind="packages"></entity-search><entity-sort kind="packages"></entity-sort><triage-selector variant="packages" .counts="${e}" .states="${HV}"></triage-selector></div>`}var HV=[`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`];function UV(e,t){let n=t===`name-asc`?(e,t)=>e[0].localeCompare(t[0]):t===`files-desc`?(e,t)=>t[1].files.size-e[1].files.size||e[0].localeCompare(t[0]):t===`reports-desc`?(e,t)=>t[1].reports.size-e[1].reports.size||e[0].localeCompare(t[0]):(e,t)=>t[1].findings.length-e[1].findings.length||e[0].localeCompare(t[0]);e.sort(n)}function WV(e,t){let n={live:0,invalid:0,deleted:0};if(!e)return n;let r=t===void 0?e.files.values():e.byVersion.get(t)?.files.values()??[].values();for(let e of r)for(let t of e){let e=s(t,F.triage.get(T(t)))??null;e===`invalid`?n.invalid++:e===`deleted`?n.deleted++:n.live++}return n}function GV(e,t,n){let r=Of().get(e),i=WV(r,n),a=F.packageSlideTriage??`live`,o=r?XV(r,e,a,n):new Map,s=[...o.values()].reduce((e,t)=>e+t.length,0),c=a===`live`?s===1?`issue`:`issues`:s===1?`${a} issue`:`${a} issues`,l=a===`live`?`No live issues for this package.`:`No ${a} issues for this package.`,u=typeof n==`string`?` @ ${n}`:``;return A`<div class="packages-view packages-slide-view"><header class="bundles-slide-bar"><button type="button" class="bundles-slide-back" data-action="package-slide-back" aria-label="Back to packages">← Back</button><div class="bundles-slide-title"><div class="bundles-slide-name" data-tooltip-truncated data-tooltip="${`${e}${u}`}">${e}${u}</div><div class="bundles-slide-integrity">${s} ${c} · ${t.files.size} ${t.files.size===1?`file`:`files`} · ${t.reports.size} ${t.reports.size===1?`report`:`reports`}</div></div><slide-triage-tabs kind="package" .counts="${i}"></slide-triage-tabs></header><div class="bundles-slide-body">${o.size===0?A`<div class="bundle-issues-empty">${l}</div>`:yV(o,{kind:`package`,bucketKey:e})}</div></div>`}function KV(e,t,n){let{kind:r,pkg:i,version:a,bucket:o}=e,s={critical:0,high:0,medium:0,low:0,high_bug:0,bug:0,informational:0};for(let e of o.findings){let t=O(e,F.severityMode);s[t]!==void 0&&s[t]++}let c=Ai.filter(e=>s[e]>0),l=Or(i),u={selected:i===t&&qV(e,n),"packages-row-latest":r===`latest`,"packages-row-other":r===`other`},d=a===null?``:a,f=a===null?`Open issues for ${i}`:`Open issues for ${i}@${a}`;return A`<li class="${C(u)}" data-select-package="${i}" data-select-package-version="${d}"><span class="packages-dot" style="${E({background:l})}"></span><div class="packages-row-text"><div class="packages-name-line"><span class="packages-name" data-tooltip-truncated data-tooltip="${a===null?i:`${i}@${a}`}">${i}${a===null?M:A`<span class="packages-version">@${a}</span>`} </span>${r===`latest`?JV(i,e.expanded,e.totalVersions-1):M}</div><span class="packages-row-meta">${o.findings.length} ${o.findings.length===1?`finding`:`findings`} · ${o.files.size} ${o.files.size===1?`file`:`files`} · ${o.reports.size} ${o.reports.size===1?`report`:`reports`}</span></div>${c.length>0?A`<div class="packages-row-chips">${c.map(e=>A`<span class="${`tree-count-chip ${e}`}" data-tooltip="${e.replaceAll(`_`,` `)}">${s[e]}</span>`)}</div>`:M} <button type="button" class="packages-row-issues" data-package-row-issues="${i}" data-package-row-issues-version="${d}" aria-label="${f}">Issues →</button></li>`}function qV(e,t){return e.kind===`single`||e.version===t}function JV(e,t,n){let r=t?`Hide`:`+${n} ${n===1?`version`:`versions`}`;return A`<button type="button" class="${C({"packages-row-expand":!0,expanded:t})}" data-package-expand="${e}" aria-expanded="${String(t)}" aria-label="${t?`Hide older versions of ${e}`:`Show older versions of ${e}`}" data-tooltip="${t?`Hide older versions`:`Show older versions (${n})`}"><span class="packages-row-expand-chevron" aria-hidden="true"></span> <span class="packages-row-expand-label">${r}</span></button>`}function YV(e,t,n){let r=Of().get(e),i=[...(r?XV(r,e,`live`,n):new Map).values()].reduce((e,t)=>e+t.length,0);return A`<div class="bundles-tabs" role="tablist"><button type="button" class="bundles-tab active" data-package-tab="overview" aria-selected="true" role="tab">Overview</button> <span class="bundles-tabs-spacer"></span> ${i>0?A`<button type="button" class="bundles-tab bundles-tab-action" data-package-tab="issues">Issues (${i}) →</button>`:M}</div>${ZV(e,t,n)}`}function XV(e,t,n=`live`,r){let i=new Map,a=r===void 0?e.files:e.byVersion.get(r)?.files??new Map;for(let[e,r]of a){let a=r.filter(e=>{let t=s(e,F.triage.get(T(e)))??null;return n===`invalid`?t===`invalid`:n===`deleted`?t===`deleted`:t!==`invalid`&&t!==`deleted`});if(a.length===0)continue;let o=QV(t,e);i.has(o)||i.set(o,[]);let c=i.get(o);for(let e of a)c.push(e)}return i}function ZV(e,t,n){let r={critical:0,high:0,medium:0,low:0,high_bug:0,bug:0,informational:0};for(let e of t.findings){let t=O(e,F.severityMode);r[t]!==void 0&&r[t]++}let i=Ai.filter(e=>r[e]>0),a=[...t.files.entries()].toSorted(([e,t],[n,r])=>r.length===t.length?e.localeCompare(n):r.length-t.length),o=[...t.reports].toSorted((e,t)=>e.localeCompare(t)),s=Of().get(e)?.repos,c=s&&s.size===1?[...s][0]:null,l=c?/^https?:/iu.test(c)?c:`https://github.com/${c}`:null;return A`<dl class="packages-detail-meta"><dt>Package</dt><dd class="mono">${e}</dd>${n?A`<dt>Version</dt><dd class="mono">${n}</dd>`:M} ${l?A`<dt>Repository</dt><dd class="mono"><a href="${l}" target="_blank" rel="noopener">${c}</a></dd>`:M}<dt>Findings</dt><dd>${t.findings.length}</dd><dt>Files</dt><dd>${t.files.size}</dd><dt>Reports</dt><dd>${t.reports.size}</dd></dl>${i.length>0?A`<div class="packages-detail-chips">${i.map(e=>A`<span class="${`tree-count-chip ${e}`}">${r[e]} ${e.replaceAll(`_`,` `)}</span>`)}</div>`:M}<h3 class="packages-detail-section">Reports</h3><ul class="packages-detail-reports">${o.map(e=>{let t=Kx[Xx(e)]??Kx.default;return A`<li><button type="button" class="packages-detail-report" data-package-report="${e}">${k(t)}<span class="packages-detail-report-label" data-tooltip-truncated data-tooltip="${e}">${x(e)}</span></button></li>`})}</ul><h3 class="packages-detail-section">Files</h3><ul class="packages-detail-files">${a.map(([t,n])=>{let r=QV(e,t);return A`<li class="packages-detail-file"><span class="packages-detail-file-path mono" data-tooltip-truncated data-tooltip="${t}">${r}</span> <span class="packages-detail-file-count">${n.length}</span></li>`})}</ul>`}function QV(e,t){for(let n of[`node_modules`,`dependencies`]){let r=`${n}/${e}/`,i=t.indexOf(r);if(i>=0)return t.slice(i+r.length)}return t.startsWith(`${e}/`)?t.slice(e.length+1):t}function $V(){Bf().catch(()=>{});let e=kf(),t={inprogress:0,fixed:0,invalid:0,deleted:0,ignored:0},n=[];for(let[r,i]of e){let e=[],a=new Map;for(let n of i.findings){let r=s(n,F.triage.get(T(n)))??null;r===`inprogress`?t.inprogress++:r===`fixed`?t.fixed++:r===`invalid`?t.invalid++:r===`deleted`?t.deleted++:r===`ignored`&&t.ignored++,r===F.shownTriage&&(e.push(n),a.has(n.file)||a.set(n.file,[]),a.get(n.file).push(n))}e.length>0&&n.push([r,{findings:e,files:a,reports:i.reports}])}let r=F.selectedRepository,i=r?n.find(([e])=>e===r)??null:null;if(i&&F.repositoryDetailsTab===`issues`)return iH(i[0],i[1]);let a=F.repositoriesSearchQuery.trim().toLowerCase(),o=a?n.filter(([e])=>e.toLowerCase().includes(a)||Ln(e).toLowerCase().includes(a)):n.slice();nH(o,F.repositoriesSortBy);let c=n.reduce((e,[,t])=>e+t.findings.length,0),l=new Set;for(let[,e]of n)for(let t of e.reports)l.add(t);let u=i?`packages-layout open`:`packages-layout`;return A`<div class="${C({"packages-view":!0,"with-details":!!i})}"><header class="page-head"><div class="page-title"><h1>Repositories</h1><div class="meta-row"><span>${o.length===n.length?A`${n.length} ${n.length===1?`repository`:`repositories`}`:A`${o.length} of ${n.length} ${n.length===1?`repository`:`repositories`}`}</span> ${c>0?A`<span>${c} ${c===1?`finding`:`findings`} across ${l.size} ${l.size===1?`report`:`reports`}</span>`:M}</div></div>${eH(t)}</header>${n.length===0?A`<p style="${E({color:`var(--muted)`})}">${e.size===0?`Indexing reports… this view populates as the OPFS scan finishes.`:F.shownTriage?`No ${F.shownTriage} findings in any repository.`:`No untriaged findings in any repository.`}</p>`:o.length===0?A`<p style="${E({color:`var(--muted)`})}">No repositories match "${F.repositoriesSearchQuery}".</p>`:A`<div class="${u}"><ul class="packages-list">${D(o,([e])=>e,([e,t])=>aH(e,t,e===r))}</ul>${i?A`<aside class="packages-details" id="repositories-details"><header class="packages-details-bar"><span class="packages-details-label">Details</span> <button type="button" class="packages-details-close" data-deselect-repository aria-label="Close details">×</button></header><div class="packages-details-body">${oH(i[0],i[1])}</div></aside>`:M}</div>`}</div>`}function eH(e){return A`<div class="packages-toolbar"><entity-search kind="repositories"></entity-search><entity-sort kind="repositories"></entity-sort><triage-selector variant="packages" .counts="${e}" .states="${tH}"></triage-selector></div>`}var tH=[`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`];function nH(e,t){let n=t===`name-asc`?(e,t)=>Ln(e[0]).localeCompare(Ln(t[0])):t===`files-desc`?(e,t)=>t[1].files.size-e[1].files.size||Ln(e[0]).localeCompare(Ln(t[0])):t===`reports-desc`?(e,t)=>t[1].reports.size-e[1].reports.size||Ln(e[0]).localeCompare(Ln(t[0])):(e,t)=>t[1].findings.length-e[1].findings.length||Ln(e[0]).localeCompare(Ln(t[0]));e.sort(n)}function rH(e){let t={live:0,invalid:0,deleted:0};if(!e)return t;for(let n of e.files.values())for(let e of n){let n=s(e,F.triage.get(T(e)))??null;n===`invalid`?t.invalid++:n===`deleted`?t.deleted++:t.live++}return t}function iH(e,t){let n=kf().get(e),r=rH(n),i=F.repositorySlideTriage??`live`,a=n?sH(n,i):new Map,o=[...a.values()].reduce((e,t)=>e+t.length,0),s=i===`live`?o===1?`issue`:`issues`:o===1?`${i} issue`:`${i} issues`,c=i===`live`?`No live issues for this repository.`:`No ${i} issues for this repository.`;return A`<div class="packages-view packages-slide-view"><header class="bundles-slide-bar"><button type="button" class="bundles-slide-back" data-action="repository-slide-back" aria-label="Back to repositories">← Back</button><div class="bundles-slide-title"><div class="bundles-slide-name" data-tooltip-truncated data-tooltip="${Ln(e)}">${Ln(e)}</div><div class="bundles-slide-integrity">${o} ${s} · ${t.files.size} ${t.files.size===1?`file`:`files`} · ${t.reports.size} ${t.reports.size===1?`report`:`reports`}</div></div><slide-triage-tabs kind="repository" .counts="${r}"></slide-triage-tabs></header><div class="bundles-slide-body">${a.size===0?A`<div class="bundle-issues-empty">${c}</div>`:yV(a,{kind:`repository`,bucketKey:e})}</div></div>`}function aH(e,t,n){let r={critical:0,high:0,medium:0,low:0,high_bug:0,bug:0,informational:0};for(let e of t.findings){let t=O(e,F.severityMode);r[t]!==void 0&&r[t]++}let i=Ai.filter(e=>r[e]>0),a=Or(e),o=Ln(e);return A`<li class="${n?`selected`:``}" data-select-repository="${e}"><span class="packages-dot" style="${E({background:a})}"></span><div class="packages-row-text"><span class="packages-name" data-tooltip-truncated data-tooltip="${o}">${o}</span> <span class="packages-row-meta">${t.findings.length} ${t.findings.length===1?`finding`:`findings`} · ${t.files.size} ${t.files.size===1?`file`:`files`} · ${t.reports.size} ${t.reports.size===1?`report`:`reports`}</span></div>${i.length>0?A`<div class="packages-row-chips">${i.map(e=>A`<span class="${`tree-count-chip ${e}`}" data-tooltip="${e.replaceAll(`_`,` `)}">${r[e]}</span>`)}</div>`:M} <button type="button" class="packages-row-issues" data-repository-row-issues="${e}" aria-label="${`Open issues for ${o}`}">Issues →</button></li>`}function oH(e,t){let n=kf().get(e),r=[...(n?sH(n):new Map).values()].reduce((e,t)=>e+t.length,0);return A`<div class="bundles-tabs" role="tablist"><button type="button" class="bundles-tab active" data-repository-tab="overview" aria-selected="true" role="tab">Overview</button> <span class="bundles-tabs-spacer"></span> ${r>0?A`<button type="button" class="bundles-tab bundles-tab-action" data-repository-tab="issues">Issues (${r}) →</button>`:M}</div>${cH(e,t)}`}function sH(e,t=`live`){let n=new Map;for(let[r,i]of e.files){let e=i.filter(e=>{let n=s(e,F.triage.get(T(e)))??null;return t===`invalid`?n===`invalid`:t===`deleted`?n===`deleted`:n!==`invalid`&&n!==`deleted`});e.length>0&&n.set(r,e)}return n}function cH(e,t){let n={critical:0,high:0,medium:0,low:0,high_bug:0,bug:0,informational:0};for(let e of t.findings){let t=O(e,F.severityMode);n[t]!==void 0&&n[t]++}let r=Ai.filter(e=>n[e]>0),i=[...t.files.entries()].toSorted(([e,t],[n,r])=>r.length===t.length?e.localeCompare(n):r.length-t.length),a=[...t.reports].toSorted((e,t)=>e.localeCompare(t)),o=/^https?:/iu.test(e)?e:`https://github.com/${e}`;return A`<dl class="packages-detail-meta"><dt>Repository</dt><dd class="mono"><a href="${o}" target="_blank" rel="noopener">${Ln(e)}</a></dd><dt>Findings</dt><dd>${t.findings.length}</dd><dt>Files</dt><dd>${t.files.size}</dd><dt>Reports</dt><dd>${t.reports.size}</dd></dl>${r.length>0?A`<div class="packages-detail-chips">${r.map(e=>A`<span class="${`tree-count-chip ${e}`}">${n[e]} ${e.replaceAll(`_`,` `)}</span>`)}</div>`:M}<h3 class="packages-detail-section">Reports</h3><ul class="packages-detail-reports">${a.map(e=>{let t=Kx[Xx(e)]??Kx.default;return A`<li><button type="button" class="packages-detail-report" data-package-report="${e}">${k(t)}<span class="packages-detail-report-label" data-tooltip-truncated data-tooltip="${e}">${x(e)}</span></button></li>`})}</ul><h3 class="packages-detail-section">Files</h3><ul class="packages-detail-files">${i.map(([e,t])=>A`<li class="packages-detail-file"><span class="packages-detail-file-path mono" data-tooltip-truncated data-tooltip="${e}">${e}</span> <span class="packages-detail-file-count">${t.length}</span></li>`)}</ul>`}function lH(e,t){let n=new Set(e),r=new Set,i=new Map,a=new Map(e.map((e,t)=>[e,t]));for(let e of t){let t=[...new Map(e.members.map(e=>[JSON.stringify([e.id,o(e)]),e])).values()],s=t.filter(e=>n.has(e.id));if(s.length===0)continue;for(let e of s)r.add(e.id);let c=t.filter(e=>n.has(e.id)||e.isApp),l=JSON.stringify([t.map(e=>e.id).toSorted(),c.map(e=>[e.id,o(e),e.title??``,e.source??null,e.revalidate??``]).toSorted(([e,t],[n,r])=>e.localeCompare(n)||Number(t)-Number(r))]),u=i.get(l);u||(u={key:l,members:c,reports:[],first:Math.min(...s.map(e=>a.get(e.id)))},i.set(l,u)),u.reports.some(t=>t.name===e.report&&t.managedReportId===e.managedReportId)||u.reports.push({name:e.report,...e.managedReportId?{managedReportId:e.managedReportId}:{},findingId:s[0].id,rowIndex:e.index})}return{rows:[...i.values()].toSorted((e,t)=>e.first-t.first),missing:e.filter(e=>!r.has(e))}}function uH(e,t,n){return`${e} ${e===1?t:n}`}function dH(e,t){let n=s(e,F.triage.get(e.id)),r=o(e)?t.filter(({name:t})=>_n(F.triage,e.id,t)):[],i=n??(r.length>0?`ignored`:null);if(!i)return M;let a=n!==`ignored`&&i===`ignored`&&r.length<t.length,c=a?`Ignored in ${r.length}/${t.length} reports`:Di[i];return A`<span class="${`links-finding-status triage-${i}`}" data-tooltip="${a?r.map(({name:e})=>x(e)).join(`, `):M}">${c}</span>`}function fH(e,t=[],n=!0,r=M){let{id:i,title:a}=e,o=t[0]?.name,s=tr(i),c=$n(i)??s;return A`<li class="${n?`links-finding`:`links-finding links-finding-context`}">${o?A`<button type="button" class="links-finding-id mono" data-links-preview="${i}" data-preview-report="${o}" data-preview-row="${t[0].rowIndex??M}" data-preview-managed-report="${t[0].managedReportId??M}" data-tooltip="${s}" aria-haspopup="dialog">${c}</button>`:$r(i)?A`<a class="links-finding-id mono" href="${`#${Vr({id:i})}`}" data-tooltip="${s}">${c}</a>`:A`<span class="links-finding-id mono">${c}</span>`} ${a?A`<span class="links-finding-title">${a}</span>`:M} ${dH(e,t)} ${n?M:A`<span class="links-member-context">not in this link</span>`} ${r}</li>`}function pH(e){let t=!!F.currentLinks?.managedId;return A`<div class="links-finding-reports">${e.map(({name:e,findingId:n,managedReportId:r,rowIndex:i})=>A`<button type="button" class="links-finding-report report-button" data-links-report="${t?M:e}" data-links-finding="${n}" data-managed-report="${r??M}" data-links-preview="${t?n:M}" data-preview-report="${t?e:M}" data-preview-row="${t?i:M}" data-preview-managed-report="${t?r:M}">${k(st[Xx(e)]??st.default)}<span class="links-finding-report-label report-button-label" data-tooltip-truncated data-tooltip="${x(e)}">${x(e)}</span></button>`)}</div>`}function mH(e,t){let n=e.reports.toSorted((e,t)=>x(e.name).localeCompare(x(t.name)));if(e.members.length===1){let r=e.members[0];return A`<li class="links-report-row links-report-row-single"><ul class="links-row-members">${fH(r,n,t.has(r.id),pH(n))}</ul></li>`}return A`<li class="links-report-row"><div class="links-report-row-head"><span class="links-row-count">${uH(e.members.length,`finding`,`findings`)} in row</span> ${pH(n)}</div><ul class="links-row-members">${e.members.map(e=>fH(e,n,t.has(e.id)))}</ul></li>`}function hH(e,t){let{rows:n,missing:r}=lH(e,Yd(e)),i=new Set(e);return A`<li class="links-group"><div class="links-group-head"><span class="links-group-index">Link ${t+1}</span> <span class="links-group-count">${uH(e.length,`finding`,`findings`)}</span></div><ul class="links-group-rows">${D(n,e=>e.key,e=>mH(e,i))}</ul>${r.length>0?A`<div class="links-unlocated"><div class="links-finding-missing">Not in your reports</div><ul class="links-row-members">${r.map(e=>fH({id:e,title:Jd(e)}))}</ul></div>`:M}</li>`}function gH(e=M){let t=F.currentLinks;if(!t)return M;Bf().catch(()=>{});let{name:n,groups:r,skipped:i}=t,a=new Set,o=new Set,s=0;for(let e of r)for(let t of e){if(a.has(t))continue;a.add(t);let e=qd(t);if(e.length!==0){s++;for(let t of e)o.add(t)}}return A`<div class="links-view">${t.managedId?A`<div class="meta-row"><button type="button" class="report-button" @click="${()=>document.dispatchEvent(new CustomEvent(`managed-admin-navigate`,{detail:{view:`manage-deduplication`}}))}">‹ Deduplication</button></div>`:M}<header class="page-head"><div class="page-title"><h1>Links${e}</h1><div class="meta-row"><span class="links-file-name" data-tooltip-truncated data-tooltip="${n}">${k(Kx[Xx(n)]??Kx.default)}${x(n)}</span> <span>${uH(r.length,`link`,`links`)}</span> <span>${uH(a.size,`finding`,`findings`)}</span> ${o.size>0?A`<span>found in ${uH(o.size,`report`,`reports`)}</span>`:M}</div></div></header>${s<a.size?A`<p class="links-note">${uH(a.size-s,`linked finding is`,`linked findings are`)} not in any report you hold. Import the reports they came from and this page fills in.</p>`:M} ${i>0?A`<p class="links-note">${uH(i,`entry`,`entries`)} in this file could not be linked — an id the app can't follow (a session-local number, or something that isn't an id at all).</p>`:M} ${r.length===0?A`<p class="links-empty">This file declares no links: every entry in it named fewer than two findings this app can reach.</p>`:A`<ol class="links-list">${D(r,(e,t)=>`${t}:${e.join(` `)}`,(e,t)=>hH(e,t))}</ol>`}</div>`}function _H(e,t,n){let r=new Set(t);for(let e of n)r.add(e);return e.filter(e=>r.has(e))}function vH(){if(F.currentWorkspace){let e=R().find(e=>e.id===F.currentWorkspace),t=F.reports.map(e=>e.fileName).filter(e=>typeof e==`string`);return{mode:`workspace`,workspaceId:F.currentWorkspace,fileNames:e?_H(e.reports??[],F.storedFiles??[],t):t}}if(F.currentFile){let e=R().find(e=>Array.isArray(e.reports)&&e.reports.includes(F.currentFile));return e?{mode:`single`,workspaceId:e.id,fileNames:[F.currentFile]}:null}return null}var yH=1500;function bH({open:e,later:t=(e,t)=>setTimeout(e,t),modalOpen:n=()=>Dv()}){let r=new Set,i=!1;function a(a,o,{onSync:s,retry:c}={}){!a||!Array.isArray(o)||o.length===0||i||r.has(a)||(i=!0,t(async()=>{let l;if(n())l={shown:!1,sync:!1};else try{l=await e([...o])}catch{l={shown:!1,sync:!1}}if(i=!1,!l.shown){typeof c==`function`&&t(c,yH);return}r.add(a),l.sync&&typeof s==`function`&&s()},0))}return{suggestSync:a,isClosedFor:e=>r.has(e)}}function xH(e,t,n=0){let{viewMode:r,focusGid:i,tableSelectedGid:a,kanbanPopoverGid:o}=t,s=r===`focus`?i:r===`table`?a:r===`kanban`?o:null;return(s?e.find(e=>H(e)===s):null)||(r===`focus`?e[Math.min(n,e.length-1)]??null:null)}function SH(e,t){if(t.currentView!==`findings`)return null;let n=fi({view:`findings`,teamId:t.currentManagedTeam,reportId:t.currentManagedReport},t.managedTeams);if(!n||!e)return n;let r={...n,finding:{id:T(Ig(e))}};return oi(r)?r:n}function CH(e){return e.repoFullName?`${e.repoFullName}${e.repoDirectory?`/${e.repoDirectory}`:``}`:``}function wH(e){let t=e.summary,n=[];return Number.isSafeInteger(e.byteSize)&&e.byteSize>=0&&n.push(Wr(e.byteSize)),t&&[t.files,t.lines].every(e=>Number.isSafeInteger(e)&&e>=0)&&n.push(`${t.files.toLocaleString()} files`,`${t.lines.toLocaleString()} LoC`),n.join(` · `)}function TH(e,t=``){let n=t.trim().toLowerCase(),r=e=>String(e??``).toLowerCase().includes(n);return(Array.isArray(e)?e:[]).flatMap(e=>{let t=(e.reports??[]).filter(e=>r(e.filename)||r(x(e.filename??``))),n=(e.bundles??[]).filter(e=>r(e.filename));return r(e.name)||t.length>0||n.length>0?[{team:e,reports:t,bundles:n}]:[]})}function EH(e,t){return e?.appMode===!0||e?.appReports===0&&t>0}function DH(e){return(e?.appMode?e.appFindings:e?.findings)??null}var OH=class{constructor(){this.expanded=new Map}sync(e,t=!1){let n=JSON.stringify([e.managedSession?.id,e.managedSession?.role,e.managedSession?.csrfToken]);n!==this.owner&&(this.expanded.clear(),this.focus=``,this.owner=n);let r=e.managedTeams??[];for(let e of this.expanded.keys())r.some(t=>t.id===e)||this.expanded.delete(e);let i=Lx(e),a=[`findings`,`files`,`links`].includes(e.currentView)?e.currentManagedReport:null,o=i?`bundles`:`reports`,s=r.find(t=>t.id===e.currentManagedTeam&&(i?t.bundles?.some(e=>e.id===i):t.reports?.some(e=>e.id===a))),c=JSON.stringify([o,i||a,s?.id]);if((t||c!==this.focus)&&(this.focus=c,s)){let e=this.expanded.get(s.id)??new Set;e.add(o),this.expanded.set(s.id,e)}}toggle(e,t){let n=this.expanded.get(e)??new Set;n.has(t)?n.delete(t):n.add(t),this.expanded.set(e,n)}shown(e,t,n,r){return!n||r||this.expanded.get(e)?.has(t)===!0}};function kH(e,t,n=()=>null){if(!e.currentWorkspace)return null;if(e.currentManagedTeam){let t=e.managedTeams.find(t=>t.id===e.currentManagedTeam);if(!t)return null;let n=(t.reports??[]).filter(e=>e.analyzer!==`links`).map(e=>({...e,managedId:e.id,name:e.filename,hidden:e.visible===!1,available:!0})),r=(t.bundles??[]).map(e=>({...Ix(e),hidden:e.visible===!1,available:!0})),i=e.managedSession;return{id:t.id,scope:`team`,title:`Team: ${t.name}`,findings:DH(t.app),reports:n,bundles:r,repositories:AH(t.repos??[],n,r,rt(i)),dependencyReview:t.dependencyReview===!0}}let r=t.find(t=>t.id===e.currentWorkspace);if(!r)return null;let i=new Map(e.bundles.map(e=>[e.integrity,e])),a=new Set(e.storedFiles??[]);return{id:r.id,scope:`workspace`,title:`Workspace: ${r.name}`,reports:[...new Set(r.reports??[])].filter(e=>n(e)!==`links`).map(e=>({name:e,available:a.has(e)})),bundles:[...new Set(r.bundles??[])].map(e=>{let t=i.get(e);return t?{...t,available:!0}:{integrity:e,name:`${e.slice(0,24)}\u2026`,available:!1}})}}function AH(e,t,n,r){let i=new Map;for(let{repoId:t,fullName:n,path:a}of e){let e=i.get(t)??{repoId:t,name:n,paths:[],reports:0,bundles:0,available:r};a&&e.paths.push(a),i.set(t,e)}let a=new Map([...i.values()].map(e=>[e.name,e]));for(let e of t)a.has(e.repoFullName)&&a.get(e.repoFullName).reports++;for(let e of n)i.has(e.repoId)&&i.get(e.repoId).bundles++;return[...i.values()]}var jH=[[`findings`,`Findings`],[`reports`,`Reports`],[`bundles`,`Bundles`],[`repositories`,`Repositories`],[`dependencies`,`Dependencies`]],MH=e=>e===`findings`||e===`files`?`findings`:e.slice(10);function NH(e,t,{findings:n=e.findings,statusBar:r=M}={}){let i=MH(t),a={findings:n,reports:e.reports.length,bundles:e.bundles.length,repositories:e.repositories.length};return A`<bundle-slide-header class="bundles-slide-header team-slide-header"><header class="bundles-slide-bar team-slide-bar"><h1 class="team-slide-name" data-tooltip-truncated data-tooltip="${e.title}">${e.title}</h1>${r}<div class="bundles-slide-tabs" role="tablist" aria-label="Team">${jH.filter(([t])=>t!==`dependencies`||e.dependencyReview).map(([e,t])=>A`<button type="button" class="${C({"bundles-tab":!0,"team-slide-tab":!0,active:i===e})}" role="tab" aria-selected="${String(i===e)}" data-action="${`workspace-${e}`}">${t}${a[e]==null?M:A`<span class="n">${a[e].toLocaleString()}</span>`}</button>`)}</div></header></bundle-slide-header>`}function PH(e){return A`${e?.scope===`team`?NH(e,`findings`):M}<p class="triage-loading" role="status">Loading report triage…</p>`}function FH(e,t){return t===`findings`?e.title:A`<button type="button" class="workspace-title-link" data-action="workspace-findings">${e.title}</button>`}function IH(e,t,n){if(!e)return M;let r=e[t].length;if(t===`bundles`&&r===0)return M;let i=n===`workspace-${t}`;return A`<button type="button" class="${`files-toggle-btn${i?` active`:``}`}" data-action="${`workspace-${t}`}" aria-pressed="${String(i)}">${`${r} ${r===1?t.slice(0,-1):t}`}</button>`}function LH(e,t){if(!(e>1))return M;let n=t===`files`;return A`<button type="button" class="${`files-toggle-btn${n?` active`:``}`}" data-action="toggle-files" aria-pressed="${String(n)}">${`${e} files`}</button>`}function RH(e){let t=[e.reports?`${e.reports.toLocaleString()} report${e.reports===1?``:`s`}`:null,e.bundles?`${e.bundles.toLocaleString()} bundle${e.bundles===1?``:`s`}`:null].filter(Boolean).join(` · `),n=A`<span class="workspace-content-icon">${k(ra)}</span> <span class="workspace-content-label"><span class="workspace-content-name">${e.name}</span> ${e.paths.length>0?A`<span class="workspace-content-repo">${e.paths.join(`, `)}</span>`:M} </span><span class="workspace-content-stats">${t}</span> ${e.available?A`<span class="workspace-content-arrow" aria-hidden="true">→</span>`:M}`;return A`<li>${e.available?A`<button type="button" class="workspace-content-row" data-workspace-repository="${e.repoId}" data-repository-name="${e.name}" data-repository-path="${e.paths.length===1?e.paths[0]:``}">${n}</button>`:A`<div class="workspace-content-row">${n}</div>`}</li>`}function zH(e,t){if(!e)return A`<p class="workspace-content-empty">This workspace is no longer available.</p>`;let n=`workspace-${t}`;if(t===`dependencies`&&e.scope===`team`)return A`<section class="workspace-content-view">${NH(e,n)} ${e.dependencyReview?A`<team-dependencies .repositories="${e.repositories}" .team="${e.id}"></team-dependencies>`:A`<p class="workspace-content-empty">You review no dependencies in this team.</p>`}</section>`;let r=e[t]??[];return A`<section class="workspace-content-view">${e.scope===`team`?NH(e,n):A`<header class="page-head"><div class="page-title"><h1>${FH(e,n)}${IH(e,`reports`,n)}${IH(e,`bundles`,n)}</h1></div></header>`} ${r.length>0?A`<ul class="workspace-content-list">${t===`repositories`?r.map(RH):r.map(e=>{let n=[e.kind===`stasis`?`Stasis`:e.kind===`sourcemap`?`Sourcemap`:null,Number.isFinite(e.size)?Wr(e.size):null,Number.isFinite(e.summary?.files)?`${e.summary.files.toLocaleString()} files`:null,Number.isFinite(e.summary?.lines)?`${e.summary.lines.toLocaleString()} LoC`:null].filter(Boolean).join(` · `),r=e.repoFullName?`${e.repoFullName}${e.repoDirectory?`/${e.repoDirectory}`:``}`:null;return A`<li class="${e.hidden?`workspace-content-hidden`:``}"><button type="button" class="workspace-content-row" data-workspace-report="${t===`reports`?e.managedId??e.name:M}" data-workspace-bundle="${t===`bundles`?e.managedId??e.integrity:M}" ?disabled="${!e.available}"><svg class="workspace-content-icon" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><path d="${t===`bundles`?`m12 3 9 5v8l-9 5-9-5V8zM3 8l9 5 9-5M12 13v8M7.5 5.5l9 5`:`M14 3H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9zM14 3v6h6M8 13h8M8 17h5`}/"></path></svg> <span class="workspace-content-label"><span class="workspace-content-name">${e.name}${e.hidden?A`<span class="workspace-content-visibility">Hidden</span>`:M}</span> ${r?A`<span class="workspace-content-repo">${r}</span>`:M} </span><span class="workspace-content-stats">${e.available?n:`Not available locally`}</span> ${e.available?A`<span class="workspace-content-arrow" aria-hidden="true">→</span>`:M}</button></li>`})}</ul>`:A`<p class="workspace-content-empty">No ${t} in this ${e.scope}.</p>`}</section>`}var BH=3e5,VH=3e4,HH=2,UH=20,WH=new Map,GH=[],KH=[],qH=new Map,JH=new Set,YH=null,XH=0;function ZH(e){return JH.add(e),()=>JH.delete(e)}var QH=e=>{for(let t of JH)t(e)};function $H(){WH.clear(),GH.length=0,KH.length=0,qH.clear()}globalThis.addEventListener?.(`dependency-review-changed`,()=>{$H(),QH()});function eU(){let e=F.managedSession?`${F.managedSession.id}\0${F.managedSession.role}`:null;return e!==YH&&($H(),YH=e),WH}var tU=e=>e?.touchesLockfile===!0||e?.touchesLockfile===null,nU=e=>Number.isSafeInteger(e)&&e>=0?e:null,rU=new Set([`git`,`tarball`,`integrity`]);function iU(e){if(typeof e?.name!=`string`)return[];let{was:t,reviews:n,rejected:r,commented:i,reviewers:a,baseline:o,reviewed:s,unsupported:c,patched:l,...u}=e,d=oU(a);return[{...u,...Array.isArray(t)&&t.length>0&&t.every(e=>typeof e==`string`)?{was:t}:{},...l===!0?{patched:l}:{},...rU.has(c)?{unsupported:c}:o===!0?{baseline:o}:s===!0?{reviewed:s}:nU(n)===null?{}:{reviews:n,...r===!0?{rejected:r}:{},...nU(i)>0?{commented:i}:{},...d.length>0?{reviewers:d}:{}}}]}var aU=new Set([`accept`,`accept-with-nits`,`request-changes`,`reject`]),oU=e=>Array.isArray(e)?e.flatMap(e=>typeof e?.login==`string`&&aU.has(e.status)?[{login:e.login,status:e.status,...e.passes===!0?{passes:!0}:{},...e.comment===!0?{comment:!0}:{}}]:[]):[],sU=e=>Array.isArray(e)?e.flatMap(iU):[];function cU(e){if(!Array.isArray(e?.lockfiles))throw Error(`The server answered with no lockfiles.`);let t=e.lockfiles.filter(e=>Array.isArray(e?.paths)&&(Array.isArray(e.added)||typeof e.error==`string`)).map(e=>e.error?e:{...e,added:e.added.flatMap(iU),more:nU(e.more)??0,unreviewed:sU(e.unreviewed),moreUnreviewed:nU(e.moreUnreviewed)??0,unsupported:sU(e.unsupported),moreUnsupported:nU(e.moreUnsupported)??0,moreLocked:nU(e.moreLocked)??0}),n=e.review;return{lockfiles:t,cut:e.cut===!0,...typeof e.formatted==`string`&&e.formatted.trim()!==``?{formatted:e.formatted}:{},...nU(n?.required)>0?{review:{required:n.required,since:typeof n.since==`string`?n.since:null,canReview:n.canReview===!0,...nU(n.toReview)===null?{}:{toReview:n.toReview},...nU(n.unreviewed)===null?{}:{unreviewed:n.unreviewed},...nU(n.unsupported)===null?{}:{unsupported:n.unsupported},...Array.isArray(n.baselineUnread)&&n.baselineUnread.every(e=>typeof e==`string`)?{baselineUnread:n.baselineUnread}:{},...n.reviewedDependencies===!0?{reviewedDependencies:!0}:{},...nU(n.unasked)>0?{unasked:n.unasked}:{},...nU(n.commentReviews)>0?{commentReviews:n.commentReviews}:{},...n.commentsFailed===!0?{commentsFailed:!0}:{},...typeof n.baselineError==`string`?{baselineError:n.baselineError}:{},...[`exclude`,`include`].includes(n.lockfiles?.mode)&&Array.isArray(n.lockfiles.paths)&&n.lockfiles.paths.every(e=>typeof e==`string`)?{lockfiles:{mode:n.lockfiles.mode,paths:n.lockfiles.paths}}:{}}}:{}}}function lU(){for(;XH<HH&&GH.length+KH.length>0;){let e=GH.shift()??KH.shift(),t=[e];for(let n=0;e.background&&n<KH.length&&t.length<UH;){let r=KH[n];r.pull.repoId===e.pull.repoId&&r.review===e.review?t.push(...KH.splice(n,1)):n++}for(let e of t)qH.delete(e.key);XH++,dU(t).finally(()=>uU(t))}}function uU(e){XH--;for(let t of e)QH(t.pull);lU()}function dU(e){let[{pull:{repoId:t,number:n},review:r}]=e;return e.length===1?Ab(t,n,{review:r}).then(e[0].settle,e[0].settle):jb(t,e.map(e=>e.pull.number),{review:r}).then(t=>{for(let n of e)n.settle(t.get(n.pull.number)??Error(`The server answered with none of it.`));return null},t=>{for(let n of e)n.settle(t)})}function fU(e,t,n=!1,{background:r=!1}={}){let i=eU(),a=`${e}\0${t}\0${n}`,o=i.get(a);if(o&&Date.now()<o.until){let e=qH.get(a);return!r&&e?.background&&(KH.splice(KH.indexOf(e),1),e.background=!1,GH.push(e)),o}let s=o?.status===`ready`?{...o,until:1/0,refreshing:!0}:{status:`loading`,until:1/0};i.set(a,s);let c={key:a,background:r,review:n,pull:{repoId:e,number:t},settle:e=>{if(i.get(a)!==s)return;let t=pU(e,o);t?i.set(a,t):i.delete(a)}};return qH.set(a,c),(r?KH:GH).push(c),lU(),s}function pU(e,t){let n=e instanceof Error?e:null;if(!n)try{return{status:`ready`,until:Date.now()+BH,...cU(e)}}catch(e){n=e}return n?.name===`AbortError`?t?.status===`ready`?t:null:{status:`error`,until:Date.now()+VH,error:n?.message||`Its lockfiles could not be read.`}}function mU(e,t,n=!1){let r=eU();for(let[i,a]of t){let t=`${e}\0${i}\0${n}`,o=qH.get(t);if(o){let e=o.background?KH:GH;e.splice(e.indexOf(o),1),qH.delete(t)}let s=pU(a,null);s&&r.set(t,s),QH({repoId:e,number:i})}}function hU(e,t,n=!1){return eU().get(`${e}\0${t}\0${n}`)??null}var gU=new WeakMap;function _U(e,{lockfiles:t,review:n},r){let i=gU.get(t)??gU.set(t,new Map).get(t),a=i.get(e);if(a&&a.review===n)return a.value;let o=r();return i.set(e,{review:n,value:o}),o}function vU(e){return _U(`added`,e,()=>yU(e))}function yU({lockfiles:e,review:t}){let n=new Map;for(let r of e.flatMap(e=>e.added??[])){let e=`${r.name}@${r.version??``}`,i=n.get(e);if(!i){n.set(e,r);continue}let{reviews:a,baseline:o,reviewed:s,unsupported:c,patched:l,reviewers:u,...d}=i;n.set(e,{...d,...r.was||i.was?{was:[...new Set([...i.was??[],...r.was??[]])]}:{},...xU(i,r,t)})}let r=[...n.values()],i=r.filter(e=>!e.was);return{versions:[...i,...r.filter(e=>e.was)],fresh:i.length,updated:r.length-i.length,more:e.some(e=>e.more>0),toReview:t?.toReview??r.filter(e=>SU(e,t)===`wanted`).length}}var bU={unsupported:0,wanted:1,passed:2,baseline:3};function xU(e,t,n){let r=e=>bU[SU(e,n)]??4,{unsupported:i,baseline:a,reviewed:o,reviews:s,rejected:c,reviewers:l}=r(t)<r(e)||r(t)===r(e)&&(t.reviews??1/0)<(e.reviews??1/0)?t:e,u=Math.max(e.commented??0,t.commented??0);return{...e.patched||t.patched?{patched:!0}:{},...i?{unsupported:i}:a?{baseline:a}:o?{reviewed:o}:s==null?{}:{reviews:s,...c?{rejected:c}:{},...u>0?{commented:u}:{},...l?{reviewers:l}:{}}}}function SU(e,t){return t?e.unsupported?`unsupported`:e.baseline?`baseline`:e.reviewed?`passed`:e.reviews==null?null:e.reviews>=t.required&&!e.rejected?`passed`:`wanted`:null}function CU(e){return _U(`unreviewed`,e,()=>wU(e))}function wU({lockfiles:e,review:t}){let n=new Map;for(let t of e.flatMap(e=>e.unreviewed??[])){let e=`${t.name}@${t.version??``}`;n.has(e)||n.set(e,t)}return{versions:[...n.values()],count:t?.unreviewed??n.size+e.reduce((e,t)=>e+(t.moreUnreviewed??0),0)}}function TU(e){return _U(e.cut?`failures-cut`:`failures`,e,()=>EU(e))}function EU({lockfiles:e,cut:t,review:n}){if(!n)return null;let r=new Map;for(let t of e.flatMap(e=>e.unsupported??[])){let e=`${t.source}\0${t.name}@${t.version??``}\0${t.from??``}`;r.has(e)||r.set(e,t)}let i=t=>e.reduce((e,n)=>e+(n[t]??0),0),a={versions:[...r.values()],count:n.unsupported??r.size+i(`moreUnsupported`),unread:e.filter(e=>e.error),unchecked:i(`moreLocked`),cut:t};return a.count>0||a.unread.length>0||a.unchecked>0||t?a:null}var Y=e=>A`<svg viewBox="0 0 16 16" width="14" height="14" aria-hidden="true">${e}</svg>`,DU=j`<circle cx="8" cy="8" r="6.25"/>`,OU=j`<circle cx="4.5" cy="3.5" r="1.6"/><circle cx="4.5" cy="12.5" r="1.6"/><path d="M4.5 5.1v5.8"/><circle cx="11.5" cy="12.5" r="1.6"/>`,kU={issues:{open:Y(j`${DU}<circle class="fill" cx="8" cy="8" r="1.6"/>`),completed:Y(j`${DU}<path d="M5.4 8.3l1.8 1.8 3.4-3.7"/>`),"not-planned":Y(j`${DU}<path d="M3.9 12.1l8.2-8.2"/>`)},pulls:{open:Y(j`${OU}<path d="M11.5 10.9V6.5a2 2 0 0 0-2-2H7.4M8.9 3 7.4 4.5 8.9 6"/>`),draft:Y(j`${OU}<path class="dotted" d="M11.5 10.9V4"/>`),merged:Y(j`<circle cx="4.5" cy="3.5" r="1.6"/><circle cx="4.5" cy="12.5" r="1.6"/><path d="M4.5 5.1v5.8M4.5 5.1c0 2.4 2.4 3.4 5.4 3.4"/><circle cx="11.5" cy="8.5" r="1.6"/>`),closed:Y(j`${OU}<path d="M9.6 3.1l3.8 3.8M13.4 3.1 9.6 6.9"/>`)}},AU=Y(j`<path d="M2.6 3.2h10.8v7.3H8l-3.2 2.6v-2.6H2.6z"/>`),jU={success:[`Checks passed`,Y(j`<path d="M3.5 8.4l2.9 2.9 6.1-6.6"/>`)],failure:[`Checks failed`,Y(j`<path d="M4.2 4.2l7.6 7.6M11.8 4.2l-7.6 7.6"/>`)],pending:[`Checks running`,Y(j`<circle class="fill" cx="8" cy="8" r="3"/>`)]},MU={approved:[`Approved`,Y(j`${DU}<path d="M5.4 8.3l1.8 1.8 3.4-3.7"/>`)],changes:[`Changes requested`,Y(j`<path d="M3.75 1.75h5.5l3 3v9.5h-8.5z"/><path d="M8 4.5v4M6 6.5h4M6 11h4"/>`)],required:[`Review required`,Y(j`<path d="M1.25 8S3.75 3.5 8 3.5 14.75 8 14.75 8 12.25 12.5 8 12.5 1.25 8 1.25 8z"/><circle cx="8" cy="8" r="2"/>`)]},NU=Y(j`<circle cx="4" cy="3.5" r="1.5"/><circle cx="4" cy="12.5" r="1.5"/><circle cx="12" cy="12.5" r="1.5"/><path d="M4 5v6M12 11V6a2 2 0 0 0-2-2H7m1.5-1.5L7 4l1.5 1.5"/>`),PU=Y(j`<circle cx="4" cy="3" r="1.5"/><circle cx="4" cy="13" r="1.5"/><circle cx="12" cy="3" r="1.5"/><path d="M4 4.5v7m0-3h3a5 5 0 0 0 5-4"/>`),FU=Y(j`<circle cx="8" cy="8" r="3"/><path d="M1 8h4m6 0h4"/>`),IU=Y(j`<path d="M8 1.75 2.25 4.5v7L8 14.25l5.75-2.75v-7z"/><path d="M2.25 4.5 8 7.25l5.75-2.75M8 7.25v7"/>`);function LU(e,t){return e===`pulls`?t.state===`merged`?[`merged`,`Merged`]:t.state===`closed`?[`closed`,`Closed`]:t.draft?[`draft`,`Draft`]:[`open`,`Open`]:t.state===`open`?[`open`,`Open`]:t.reason===`not-planned`||t.reason===`duplicate`?[`not-planned`,t.reason===`duplicate`?`Closed as duplicate`:`Closed as not planned`]:[`completed`,`Closed`]}var RU={claude:A`<span class="agent-logo" aria-hidden="true">${Ty(`anthropic`)}</span>`,codex:A`<span class="agent-logo" aria-hidden="true">${Ty(`openai`)}</span>`,copilot:A`<span class="agent-logo" aria-hidden="true">${Ty(`github-copilot`)}</span>`},zU={claude:`Claude`,codex:`Codex`},BU=new Map;function VU(e){for(let t of e)BU.set(t.id,t)}var HU=e=>zU[e]??BU.get(e)?.name??e;function UU(e){if(RU[e])return RU[e];let t=BU.get(e)?.avatar;return t?A`<img class="agent-avatar" src="${`/api/avatar/${t}`}" alt="" width="14" height="14" loading="lazy" decoding="async">`:M}var WU=e=>e.button===0&&!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&!e.altKey;function GU(e){return e.sessions[0]?`https://claude.ai/code/${e.sessions[0]}`:e.tasks[0]?`https://chatgpt.com/codex/tasks/${e.tasks[0]}`:null}function KU(e,t){return t?e.pulls[0]?`https://github.com/${t}/pull/${e.pulls[0].number}`:e.commits[0]?`https://github.com/${t}/commit/${e.commits[0].oid}`:e.branches[0]?qU(t,e.branches[0]):null:null}function qU(e,t){let[n,r]=t.includes(`:`)?[t.slice(0,t.indexOf(`:`)),t.slice(t.indexOf(`:`)+1)]:[null,t],i=r.split(`/`).map(encodeURIComponent).join(`/`);return n?`https://github.com/${encodeURIComponent(n)}/${encodeURIComponent(e.split(`/`)[1]??``)}/tree/${i}`:`https://github.com/${e}/tree/${i}`}var JU=(e,t)=>GU(e)??KU(e,t),YU=`100% 0px`,XU=new WeakMap,ZU=new WeakMap,QU=[],$U=!1,eW=new WeakMap;function tW(e){let t=eW.get(e);if(t===void 0){let n=getComputedStyle(e).overflowY;t=n===`auto`||n===`scroll`||n===`overlay`,eW.set(e,t)}return t}function nW(e){let t=e.parentNode;for(;t;){if(t.nodeType===Node.DOCUMENT_FRAGMENT_NODE){t=t.host??null;continue}if(t.nodeType!==Node.ELEMENT_NODE||t===document.documentElement)return null;if(tW(t))return t;t=t.parentNode}return null}function rW(e){for(let t of e)ZU.get(t.target)?.cb(t.isIntersecting)}function iW(e){let t=e??document,n=XU.get(t);return n||(n=new IntersectionObserver(rW,{root:e,rootMargin:YU,threshold:0}),XU.set(t,n)),n}function aW(e,t){let n=ZU.get(e);n?.io&&n.io.unobserve(e),ZU.set(e,{cb:t,io:null}),QU.push(e),$U||($U=!0,queueMicrotask(oW))}function oW(){$U=!1;let e=QU;QU=[];for(let t of e){let e=ZU.get(t);!e||e.io||(e.io=iW(nW(t)),e.io.observe(t))}}function sW(e){let t=ZU.get(e);t&&(t.io?.unobserve(e),ZU.delete(e))}var cW=2,lW=50,uW=6e3,dW=6e4,fW=new Map,pW=new Map,mW=[],hW=new Set,gW=null,_W=0,vW=!1,yW=e=>{for(let t of hW)t(e)};function bW(){let e=F.managedSession?`${F.managedSession.id}\0${F.managedSession.role}`:null;return e!==gW&&(fW.clear(),pW.clear(),mW.length=0,gW=e),fW}var xW=e=>Number.isSafeInteger(e)&&e>=0?e:null,SW=e=>xW(e?.additions)===null||xW(e?.deletions)===null?null:{additions:e.additions,deletions:e.deletions},CW=(e,t)=>({status:`ready`,until:1/0,...e,typeless:SW(t.typeless),binary:t.binary===!0}),wW=e=>({status:`error`,until:Date.now()+dW,error:e});function TW(e,t,n){let r=bW(),i=`${e}\0${t}\0${n}`,a=r.get(i);if(a&&Date.now()<a.until)return a;let o={status:`loading`,until:1/0};return r.set(i,o),pW.set(i,{asked:[e,t,n],loading:o}),vW||(vW=!0,globalThis.requestAnimationFrame?requestAnimationFrame(DW):setTimeout(DW,0)),o}function EW(e){let t=bW();for(let[n,r,i,a]of e){let e=SW(a),o=`${n}\0${r}\0${i}`;!e||t.get(o)?.status===`ready`||(pW.delete(o),t.set(o,CW(e,a)),yW(o))}}function DW(){vW=!1;let e=0,t=[];for(let[n,r]of pW){let i=encodeURIComponent(JSON.stringify(r.asked)).length+3;(t.length===lW||t.length>0&&e+i>uW)&&(mW.push(t),t=[],e=0),t.push({key:n,...r}),e+=i}t.length>0&&mW.push(t),pW.clear(),OW()}function OW(){for(;_W<cW&&mW.length>0;){let e=mW.shift().filter(({key:e,loading:t})=>fW.get(e)===t);e.length!==0&&(_W++,AW(e).finally(kW))}}function kW(){_W--,OW()}function AW(e){let t=fW,n=new Map(e.map(({key:e,loading:t})=>[e,t])),r=(e,r)=>{n.has(e)&&(t.get(e)===n.get(e)&&(r?t.set(e,r):t.delete(e)),n.delete(e),yW(e))};return Nb(e.map(e=>e.asked),e=>{let t=SW(e);r(`${e.name}\0${e.version}\0${e.otherVersion}`,typeof e.error==`string`?wW(e.error):t?CW(t,e):wW(`The server answered with no lines.`))}).then(()=>{for(let e of[...n.keys()])r(e,wW(`The server answered with none of it.`));return null},e=>{for(let t of[...n.keys()])r(t,e?.name===`AbortError`?null:wW(e?.message||`Its lines couldn’t be counted.`))})}var jW=e=>e.was?.find(t=>t!==e.version)??`(empty)`,MW=(e,t)=>A`<span class="is-added">+${e.toLocaleString(`en-US`)}</span> <span class="is-deleted">−${t.toLocaleString(`en-US`)}</span>`,NW=class extends pa{static properties={name:{attribute:!1},version:{attribute:!1},base:{attribute:!1}};createRenderRoot(){return this}constructor(){super(),this._near=!1,this._notify=e=>{this._near&&(!e||e===`${this.name}\0${this.version}\0${this.base??`(empty)`}`)&&this.requestUpdate()}}connectedCallback(){super.connectedCallback(),this._watch()}disconnectedCallback(){super.disconnectedCallback(),this._unwatch()}_watch(){hW.add(this._notify),!this._near&&aW(this,e=>{!e||this._near||(this._near=!0,sW(this),this.requestUpdate())})}_unwatch(){hW.delete(this._notify),sW(this)}render(){if(!this._near||!this.name||!this.version)return M;let e=TW(this.name,this.version,this.base??`(empty)`),t=this.base&&this.base!==`(empty)`?`against ${this.base}`:`the whole package`;if(e.status===`loading`)return A`<span class="npm-delta is-loading" aria-label="Counting its lines">…</span>`;if(e.status===`error`)return A`<span class="npm-delta is-error" data-tooltip="${e.error}" .tooltipContent="${A`<div class="compare-tip"><div class="compare-tip-head">Lines not counted</div><div>${e.error}</div></div>`}">?</span>`;let n=A`<div class="compare-tip"><div class="compare-tip-head">Lines changed</div><div class="compare-tip-rows"><span class="compare-tip-label">Against</span><span>${this.base&&this.base!==`(empty)`?this.base:`none, the whole package`}</span> <span class="compare-tip-label">Added</span><span class="is-added">+${e.additions.toLocaleString(`en-US`)}</span> <span class="compare-tip-label">Removed</span><span class="is-deleted">−${e.deletions.toLocaleString(`en-US`)}</span> ${e.typeless?A`<span class="compare-tip-label">Types aside</span><span>${MW(e.typeless.additions,e.typeless.deletions)}</span>`:M}</div>${e.typeless?A`<div class="compare-tip-note">Types aside: leaving out the declaration files changed in types alone</div>`:M} ${e.binary?A`<div class="compare-tip-note">Binary files changed too, which no line counts</div>`:M}</div>`;return A`<span class="npm-delta" data-tooltip="${`Lines it adds and removes, ${t}`}" .tooltipContent="${n}">${MW(e.additions,e.deletions)}${e.binary?A`<span class="npm-delta-binary">, binary</span>`:M}${e.typeless?A`<span class="npm-delta-typeless">(${MW(e.typeless.additions,e.typeless.deletions)} -types)</span>`:M}</span>`}};customElements.get(`npm-delta`)||customElements.define(`npm-delta`,NW);var PW=class extends pa{static properties={text:{attribute:!1},label:{attribute:!1},_copied:{state:!0},_error:{state:!0}};createRenderRoot(){return this}constructor(){super(),this.text=null,this.label=`Copy dependency review`}disconnectedCallback(){super.disconnectedCallback(),clearTimeout(this._timer)}async _copy(){if(this._copyable()){this._error=!1;try{await navigator.clipboard.writeText(this.text),this._copied=!0,clearTimeout(this._timer),this._timer=setTimeout(()=>{this._copied=!1},2e3)}catch{this._error=!0}}}_copyable(){return typeof this.text==`string`&&this.text.trim()!==``}render(){return this._copyable()?A`<button type="button" class="${`bundle-code-copy-path dependency-review-copy-button${this._copied?` copied`:``}`}" aria-label="${this.label}" data-tooltip="${this.label}" @click="${()=>this._copy()}">${uw}</button> ${this._error?A`<span role="alert">Could not copy to the clipboard.</span>`:M}`:M}};customElements.define(`dependency-review-copy`,PW);var FW=12e4,IW=3e4,LW=3,RW=12,zW=48,BW=[[`pulls`,`Pull requests`],[`versions`,`Versions`],[`branch`,`Default branch`],[`reviews`,`Reviews`]],VW=(e,t)=>e.repo.name<t.repo.name?-1:e.repo.name>t.repo.name?1:t.item.number-e.item.number,HW=e=>(t,n)=>(n.item[e]??0)-(t.item[e]??0)||VW(t,n),UW=(e,t)=>+(e.size===0)-(t.size===0)||e.size-t.size||e.others-t.others||VW(e,t),WW={newest:[`Newest`,HW(`createdAt`)],updated:[`Updated`,HW(`updatedAt`)],fewest:[`Fewest to review`,UW]},GW={status:`loading`,until:1/0},KW=new Map,qW=new Set,JW=new Map,YW=new Map,XW=null,ZW=!1,QW=()=>{for(let e of qW)e()};function $W(){KW.clear();for(let e of JW.keys())e.abort();JW.clear()}function eG(){ZW||(ZW=!0,queueMicrotask(()=>{ZW=!1;let e=new Set(YW.values());for(let[t,n]of JW)e.has(n)||t.abort()}))}globalThis.addEventListener?.(`dependency-review-changed`,()=>{$W(),QW()});function tG(){let e=F.managedSession?`${F.managedSession.id}\0${F.managedSession.role}`:null;return e!==XW&&($W(),XW=e),KW}function nG(e,t){let n=tG(),r=[],i=t.map(e=>{let t=n.get(e);if(t&&Date.now()<t.until)return t;let i=t?.status===`ready`?{...t,until:1/0,telling:null,refreshing:!0}:{status:`loading`,until:1/0};return n.set(e,i),r.push(e),i});return r.length>0&&rG(e,r,r.length===t.length?null:r,LW),i}function rG(e,t,n,r){let i=KW,a=new Map(t.map(e=>[e,i.get(e)])),o=(e,t)=>{i.get(e)===a.get(e)&&i.set(e,t),i.get(e)===t&&t.telling?a.set(e,t):a.delete(e)},s=new AbortController;JW.set(s,e);let c=null;Mb(e,e=>{s.signal.aborted||(typeof e.done==`boolean`?c=e.done?[]:Array.isArray(e.unread)?e.unread:[]:a.has(e.repoId)&&(iG(e,a.get(e.repoId),t=>o(e.repoId,t)),QW()))},{repoIds:n,signal:s.signal}).then(()=>{let t=(c??[]).filter(e=>a.has(e)),n=t.length>0&&r>0;for(let[e,r]of[...a])n&&t.includes(e)||o(e,oG(e,r,c===null?`The server’s answer ended short.`:t.includes(e)?`Reading its pull requests took too long.`:null));return n&&rG(e,t,t,r-1),null},e=>{for(let[t,n]of[...a])e?.name===`AbortError`?i.get(t)===n&&(n.status===`ready`?i.set(t,{...n,until:0,telling:null}):i.delete(t)):o(t,oG(t,n,e?.message||`It couldn’t be read.`))}).finally(()=>{JW.delete(s),QW()})}function iG(e,t,n){if(Array.isArray(e.deltas)&&EW(e.deltas),typeof e.error==`string`)n({status:`error`,until:Date.now()+IW,error:e.error});else if(e.branch===null)n({status:`ready`,until:Date.now()+FW,branch:null});else if(e.branch){let t;try{t=cU(e.branch)}catch(e){n({status:`error`,until:Date.now()+IW,error:e.message});return}let r=(Array.isArray(e.pulls?.items)?e.pulls.items:[]).filter(e=>Number.isSafeInteger(e?.number)&&e.number>0);n(aG({status:`ready`,branch:t,pulls:{items:r,more:e.pulls?.more===!0}},new Set(r.filter(tU).map(e=>e.number))))}else e.dependencies instanceof Map&&t.telling&&(mU(e.repoId,e.dependencies,!0),n(aG(t,new Set([...t.telling].filter(t=>!e.dependencies.has(t))))))}var aG=(e,t)=>t.size>0?{...e,until:1/0,telling:t}:{...e,until:Date.now()+FW,telling:null};function oG(e,t,n){return t.telling?(mU(e,new Map([...t.telling].map(e=>[e,Error(n??`The server’s answer ended short.`)])),!0),{...t,until:Date.now()+IW,telling:null}):n?{status:`error`,until:Date.now()+IW,error:n}:{status:`ready`,until:Date.now()+FW,branch:null}}var sG=(e,t)=>`${e.toLocaleString(`en-US`)} ${t}${e===1?``:`s`}`,cG=e=>`${e.name}@${e.version??``}${e.patched?`+patch`:``}`,lG=({repo:e,item:t})=>`${e.name}#${t.number}`,uG={git:`From git, which isn’t reviewed`,tarball:`A tarball not npm’s registry’s of its version, which isn’t reviewed`,integrity:`Locked with no integrity, which its reviews are held to`};function dG(e,t){let n=SU(e,t);return n===`unsupported`?{label:`can’t review`,tint:`is-failed`,head:`Can’t be reviewed`,said:uG[e.unsupported]}:e.rejected?{label:`rejected`,tint:`is-failed`,head:`Rejected`,said:`A reviewer rejects it: it wants their newer accepting review`}:e.patched&&n===`wanted`?{label:`patched`,tint:`is-wanted`,head:`Patched`,said:`Reviews here pass no patch: the server’s reviewed dependencies, or reviews of its patch in the pull request’s comments, pass it`}:n===`wanted`?{label:`${e.reviews}/${t.required}`,tint:`is-wanted`,head:`Reviews`,said:`${sG(e.reviews,`review`)} of ${t.required} required${e.commented?`; ${sG(e.commented,`reviewer`)} in its comments, which count here alone`:``}`,rows:[[`Passing`,`${e.reviews.toLocaleString(`en-US`)} of ${t.required} required`],...e.commented?[[`In its comments`,`${sG(e.commented,`reviewer`)}, counting here alone`]]:[]]}:null}function fG(e,t){let n=dG(e,t);if(!n)return M;let r=A`<div class="compare-tip"><div class="compare-tip-head">${n.head}</div>${n.rows?A`<div class="compare-tip-rows">${n.rows.map(([e,t])=>A`<span class="compare-tip-label">${e}</span><span>${t}</span>`)}</div>`:A`<div>${n.said}</div>`}</div>`;return A`<span class="team-deps-review ${n.tint}" data-tooltip="${n.said??M}" .tooltipContent="${n.said?r:null}">${n.label}</span>`}var pG={accept:`accepts`,"accept-with-nits":`accepts with nits`,"request-changes":`requests changes`,reject:`rejects`},mG=new Set([`accept`,`accept-with-nits`]),hG=(e,t)=>({passed:`passes`,baseline:`needs none`})[SU(e,t)]??dG(e,t)?.label??null;function gG(e,t,{added:n,above:r,involved:i,here:a}){let o=dG(e,t),s=[n?[`Present`,e.was?.join(`, `)||`none, new`]:null,e.source!==`registry`&&e.from?[`From`,e.from]:null,o?[`Review`,o.said??o.label]:null,r?[`Listed`,`under ${r} above`]:null].filter(Boolean),c=new Map;for(let{name:t,pkg:n}of[{name:a,pkg:e},...e.patched?[]:i])for(let e of n.reviewers??[]){if(e.comment&&!t)continue;let n=e.comment?`${e.login}\0${t}`:e.login;c.has(n)||c.set(n,{...e,where:e.comment?t:null})}return A`<div class="compare-tip"><div class="team-deps-tip-name">${e.name}${e.version?`@${e.version}`:``}${e.patched?` (patched)`:``}</div>${s.length>0?A`<div class="compare-tip-rows">${s.map(([e,t])=>A`<span class="compare-tip-label">${e}</span><span>${t}</span>`)}</div>`:M} ${i.length>0?A`<div class="compare-tip-head">Pull requests</div><div class="compare-tip-rows">${i.map(({name:e,adds:t,pkg:n,review:r})=>A`<span class="${e===a?`team-deps-tip-here`:M}">${e}</span> <span>${[t?`adds it`:`locks it`,hG(n,r)].filter(Boolean).join(`, `)}</span>`)}</div>`:M} ${c.size>0?A`<div class="compare-tip-head">Reviewed by</div><div class="compare-tip-rows">${[...c.values()].map(e=>A`<span>${e.login}</span> <span>${pG[e.status]}${mG.has(e.status)&&!e.passes?`, not counted`:``}${e.where?`, in ${e.where}\u2019s comments`:``}</span>`)}</div>`:M}</div>`}function _G(e,t,{others:n=[],adders:r=!1,elsewhere:i=[],above:a=null,added:o=!1,involved:s=[],here:c=null}={}){let l=e.source===`registry`&&e.version,u=e.was?.find(t=>t!==e.version),d=t?.canReview&&!e.patched&&SU(e,t)!==`unsupported`,f=l?oi({view:`npm`,packageName:e.name,packageSpec:e.version,...d?{bundleTab:`review`,...u?{reviewPackage:e.name,reviewSpec:u}:{}}:{}}):null,p=`${e.name}${e.version?`@${e.version}`:``}`,m=gG(e,t,{added:o,above:a,involved:s,here:c}),h=r?n.filter(e=>!i.includes(e)):n,g=a!==null&&i.includes(a),_=g?i.filter(e=>e!==a):i,v=A`${IU}<span class="team-deps-name">${e.name}${e.version?A`<span class="team-deps-version">@${e.version}</span>`:M}</span> ${l&&SU(e,t)===`wanted`?A`<npm-delta .name="${e.name}" .version="${e.version}" .base="${jW(e)}"></npm-delta>`:M} ${fG(e,t)} ${a?A`<span class="team-deps-above${g?` is-reviewed`:``}">${a}</span>`:M} ${_.length>0?A`<span class="team-deps-elsewhere">${_[0]}${_.length>1?` +${_.length-1}`:``}</span>`:M} ${h.length>0?A`<span class="team-deps-also">${r?`${h[0]}${h.length>1?` +${h.length-1}`:``}`:`+${n.length}`}</span>`:M}`;return A`<li>${f?A`<a class="team-deps-row" href="${f}" target="_blank" rel="noopener noreferrer" data-tooltip="${p}" .tooltipContent="${m}">${v}</a>`:A`<span class="team-deps-row" data-tooltip="${p}" .tooltipContent="${m}">${v}</span>`}</li>`}var vG=Y(j`<path d="m6 4 4 4-4 4"/>`),yG=class extends Wh{static properties={repositories:{attribute:!1},team:{attribute:!1},_open:{state:!0}};createRenderRoot(){return this}constructor(){super(),this.repositories=[],this.team=null,this._open=new Set,this._notify=()=>this.requestUpdate()}pick(e,{push:t=!0}={}){F.teamDependenciesTab=e;let n=fi({view:`workspace-dependencies`,teamId:this.team,dependencyTab:e},F.managedTeams);t?G?.pushRoute(n):G?.replaceRoute(n)}updated(){this._shown&&this._shown!==F.teamDependenciesTab&&this.pick(this._shown,{push:!1})}toggle(e){let t=new Set(this._open);t.delete(e)||t.add(e),this._open=t}connectedCallback(){super.connectedCallback(),qW.add(this._notify),this._unsubscribe=ZH(this._notify),YW.set(this,this.team)}disconnectedCallback(){super.disconnectedCallback(),qW.delete(this._notify),this._unsubscribe?.(),YW.delete(this),eG()}open(e,{repo:t,item:n}){e.preventDefault(),Te({repository:{repoId:t.repoId,repo:t.name},target:{number:n.number,preview:{...n,kind:`pulls`}}})}rows(e,t,n,r=RW){if(t.length===0)return M;let i=this._open.has(e);return A`<ul class="team-deps-versions">${(i?t:t.slice(0,r)).map(n)}</ul>${t.length>r?A`<button type="button" class="team-deps-more" aria-expanded="${String(i)}" @click="${()=>this.toggle(e)}">${vG}${i?`Show fewer`:`and ${(t.length-r).toLocaleString(`en-US`)} more`}</button>`:M}`}disclosed(e,t,n,r,i=0){let a=this._open.has(e);return A`<div class="team-deps-disclosed"><button type="button" class="team-deps-more" aria-expanded="${String(a)}" @click="${()=>this.toggle(e)}">${vG}${t}</button> ${a?A`${this.rows(e,n,r,zW)}${i>0?A`<p class="team-deps-quiet">and ${i.toLocaleString(`en-US`)} more, not listed</p>`:M}`:M}</div>`}render(){this.isConnected&&YW.get(this)!==this.team&&(YW.has(this)&&eG(),YW.set(this,this.team));let e=[...new Map((this.repositories??[]).map(e=>[e.repoId,e])).values()],t=nG(this.team,e.map(e=>e.repoId)),n=e.map((e,n)=>({repo:e,read:t[n]})),r=n.filter(({read:e})=>e.status===`ready`&&e.branch),i=r.flatMap(({repo:e,read:t})=>t.pulls.items.filter(tU).map(t=>({repo:e,item:t,entry:hU(e.repoId,t.number,!0)??GW}))),a=i.filter(({entry:e})=>e.status===`ready`&&e.review).map(e=>{let t=vU(e.entry).versions.filter(t=>[`wanted`,`unsupported`].includes(SU(t,e.entry.review))),n=t.filter(t=>SU(t,e.entry.review)===`wanted`).length,r=Math.max(e.entry.review.toReview??n,n);return{...e,wanted:t,failed:TU(e.entry),toReview:r,untold:r-n,size:t.length+r-n,others:CU(e.entry).count}}).filter(e=>e.size>0||e.others>0||e.failed).toSorted(UW),o=Object.hasOwn(WW,F.teamDependenciesSort)?F.teamDependenciesSort:`newest`,s=o===`fewest`?a:a.toSorted(WW[o][1]),c=r.filter(({read:e})=>e.pulls.more),l=new Map;for(let e of a)for(let t of e.wanted){let n=l.get(cG(t));n?n.pulls.push(e):l.set(cG(t),{pkg:t,pulls:[e]})}let u=n.some(({read:e})=>e.status===`loading`)||i.some(({entry:e})=>e.status===`loading`),d=[...n.filter(({read:e})=>e.status===`error`).map(({repo:e,read:t})=>[e.name,t.error]),...i.filter(({entry:e})=>e.status===`error`).map(e=>[lG(e),e.entry.error])],f=r.flatMap(({repo:e,read:t})=>{let{count:n}=CU(t.branch),r=TU(t.branch);return n>0||r?[{repo:e,read:t,count:n+(r?.count??0)}]:[]}),p=new Map;for(let e of i.filter(({entry:e})=>e.status===`ready`&&e.review))for(let[t,n]of[[!0,vU(e.entry).versions],[!1,CU(e.entry).versions]])for(let r of n){let n=p.get(cG(r))??p.set(cG(r),new Map).get(cG(r));n.has(lG(e))||n.set(lG(e),{pull:e,pkg:r,adds:t})}let m=new Set(n.filter(({read:e})=>e.status!==`ready`||e.branch).map(({repo:e})=>e.name.split(`/`)[0])).size===1?e=>e.slice(e.indexOf(`/`)+1):e=>e,h=e=>m(lG(e)),g={elsewhere:(e,t=null)=>e.patched?[]:[...p.get(cG(e))?.values()??[]].filter(e=>e.pkg.commented>0&&(!t||lG(e.pull)!==lG(t))).map(e=>h(e.pull)),named:h,shorten:m,among:e=>[...p.get(cG(e))?.values()??[]].map(({pull:e,pkg:t,adds:n})=>({name:h(e),adds:n,pkg:t,review:e.entry.review}))},_=d.map(([e,t])=>`${m(e)}: ${t}`),v=F.teamDependenciesTab,y=BW.filter(([e])=>e!==`branch`||f.length>0||u&&v===`branch`),b=y.some(([e])=>e===v)?v:`pulls`;this._shown=b;let ee={pulls:a.length,versions:l.size,branch:f.reduce((e,{count:t})=>e+t,0)};return A`<div class="team-deps">${tS({tabs:y.map(([e,t])=>({id:e,label:A`${t}${ee[e]==null||u&&ee[e]===0?M:A`<span class="team-deps-tab-n">${ee[e].toLocaleString(`en-US`)}</span>`}`})),current:b,prefix:`team-deps`,select:e=>this.pick(e)})}<div class="team-deps-panel" role="tabpanel" id="${`team-deps-panel-${b}`}" aria-labelledby="${`team-deps-tab-${b}`}">${b===`reviews`?eR(()=>A`<dependency-review-list .session="${F.managedSession}" .team="${this.team}"></dependency-review-list>`):A`${u?A`<p class="team-deps-quiet" role="status">Reading their pull requests…</p>`:M} ${_.length===1?A`<p class="team-deps-quiet" role="alert">${_[0]}</p>`:_.length>1?A`<p class="team-deps-quiet" role="alert" data-tooltip="${_.join(`
186
+ `)}" .tooltipContent="${A`<div class="compare-tip"><div class="compare-tip-head">Couldn’t be read</div><div class="compare-tip-rows">${d.map(([e,t])=>A`<span>${m(e)}</span><span>${t}</span>`)}</div></div>`}">${sG(_.length,`repository or pull request`)} couldn’t be read.</p>`:M} ${!u&&n.length>0&&r.length===0&&d.length===0?A`<p class="workspace-content-empty">None of this team’s repositories reviews its dependencies for you.</p>`:M} ${b===`branch`?M:c.map(({repo:e,read:t})=>A`<p class="team-deps-quiet" role="alert">Only ${m(e.name)}’s ${sG(t.pulls.items.length,`open pull request`)} updated latest are checked; its others aren’t.</p>`)} ${r.length===0?M:b===`pulls`?this.renderPulls(s,o,l,u,c.length>0,g):b===`versions`?this.renderVersions(l,u,g):f.map(({repo:e,read:t})=>this.renderBranch(e,t,g))}`}</div></div>`}renderPulls(e,t,n,r,i,{elsewhere:a,named:o,among:s}){if(e.length===0)return r?M:A`<p class="workspace-content-empty">No open pull request${i?` checked`:``} wants its dependencies reviewed.</p>`;let c=new Map,l=e=>t=>{let r=c.get(cG(t))===e?null:c.get(cG(t));return _G(t,e.entry.review,{others:(n.get(cG(t))?.pulls??[]).filter(t=>t!==e&&t!==r).map(o),elsewhere:a(t,e),above:r&&o(r),added:!0,involved:s(t),here:o(e)})};return A`${e.length>1?A`<div class="team-deps-sort"><span class="bundles-overview-sort" role="group" aria-label="Pull request order">${Object.entries(WW).map(([e,[n]])=>A`<button type="button" aria-pressed="${String(e===t)}" @click="${()=>{F.teamDependenciesSort=e}}">${n}</button>`)}</span></div>`:M}<ol class="team-deps-pulls" aria-label="Pull requests wanting reviews">${e.map(e=>{let t=e.wanted.filter(e=>!c.has(cG(e))),n=e.wanted.filter(e=>c.has(cG(e)));for(let n of t)c.set(cG(n),e);let r=lG(e),i=CU(e.entry),u=`https://github.com/${e.repo.name}/pull/${e.item.number}`;return A`<li class="team-deps-pull"><div class="team-deps-pull-top"><a class="team-deps-pull-head" href="${u}" target="_blank" rel="noopener noreferrer" @click="${t=>this.open(t,e)}"><span class="team-deps-pull-name">${o(e)}</span><span class="team-deps-pull-title">${e.item.title||`(no title)`}</span> <span class="${`team-deps-count${e.failed?` is-failed`:``}`}">${e.failed?`review fails`:e.size>0?`${sG(e.toReview,`version`)} to review`:`${sG(e.others,`other version`)} unreviewed`}</span> </a>${e.entry.formatted?A`<dependency-review-copy .text="${e.entry.formatted}" .label="${`Copy your dependency reviews of its versions`}"></dependency-review-copy>`:M}</div>${this.rows(`${r}:own`,t,l(e))} ${e.untold>0?A`<p class="team-deps-quiet">and ${sG(e.untold,`more version`)} past those listed</p>`:M} ${n.length>0?A`<ul class="team-deps-versions is-above">${n.map(l(e))}</ul>`:M} ${e.others>0?this.disclosed(`${r}:others`,e.size>0||e.failed?`${sG(e.others,`other version`)} its lockfiles lock ${e.others===1?`wants`:`want`} reviews`:`Its own versions pass; ${sG(e.others,`version`)} its lockfiles locked before ${e.others===1?`wants`:`want`} reviews`,i.versions,t=>_G(t,e.entry.review,{elsewhere:a(t,e),involved:s(t),here:o(e)}),e.others-i.versions.length):M}</li>`})}</ol>`}renderVersions(e,t,{elsewhere:n,named:r,among:i}){return e.size===0?t?M:A`<p class="workspace-content-empty">No version an open pull request adds wants a review.</p>`:A`<section class="team-deps-section" aria-label="Versions to review">${this.rows(`versions`,[...e.values()],({pkg:e,pulls:t})=>_G(e,t[0].entry.review,{others:t.map(r),adders:!0,elsewhere:n(e),added:!0,involved:i(e)}),1/0)}</section>`}renderBranch(e,t,{elsewhere:n,shorten:r,among:i}){let{versions:a,count:o}=CU(t.branch),s=TU(t.branch),c=s?.unread.flatMap(e=>e.paths)??[],l=[...a,...s?.versions??[]];return A`<section class="team-deps-section" aria-label="${`${r(e.name)}\u2019s default branch`}"><h2>${r(e.name)}</h2><p class="team-deps-quiet">${sG(o,`version`)} unreviewed${s?.count?`, ${s.count.toLocaleString(`en-US`)} can\u2019t be reviewed`:``}${c.length>0?`, ${sG(c.length,`lockfile`)} unread`:``}</p>${c.length>0?A`<p class="team-deps-quiet" role="alert">Unread, so what ${c.length===1?`it locks isn’t`:`they lock aren’t`} checked: ${c.map((e,t)=>A`${t>0?`, `:``}<code>${e}</code>`)}</p>`:M} ${this.rows(`branch:${e.repoId}`,l,e=>_G(e,t.branch.review,{elsewhere:n(e),involved:i(e)}),zW)} ${o>a.length?A`<p class="team-deps-quiet">and ${(o-a.length).toLocaleString(`en-US`)} more, not listed</p>`:M}</section>`}};customElements.define(`team-dependencies`,yG);var bG=null;function xG(e){let t=bG=document.startViewTransition(e);return t.ready.catch(()=>{}),t.finished.finally(()=>{bG===t&&(bG=null)}).catch(()=>{}),t}function SG(e){let t=null;return n=>{t!==null&&t!==n&&bG?.skipTransition(),t=n,e()}}var CG=null;function wG(e){return e.some(e=>e._managedReportId&&!e.tree&&e.treeFiles>0)}function TG(e){let t=js(F.reports),n=F.currentManagedTeam;return!n||!wG(t)?!1:CG===t||(CG=t,EG(t,n,F.managedTeams.find(e=>e.id===n)?.reports.find(e=>e.id===F.currentManagedReport&&e.visible===!1)?.id??null,e),!0)}async function EG(e,t,n,r){let i=await xx(t,{reportId:n});if(CG===e&&(CG=null),js(F.reports)===e&&F.currentManagedTeam===t){if(!i){Nx(`Could not load the report files. Please try again.`),r(!1);return}for(let t of e)t._managedReportId&&!t.tree&&t.treeFiles>0&&(t.tree=i.get(t._managedReportId)??{});r(!0)}}function DG(){z.classList.add(`active`),Zm.classList.add(`hidden`)}function OG(){let e=pr(F.reports);if(!e)return null;let t=Object.keys(e),n=e_().filter(e=>Vg(e).commonTriage===F.shownTriage),r=dr(n,F.severityMode),i=hr(e,r),a=new Map,o=new Map,s=new Map;for(let e of n)for(let t of e){let e=O(t,F.severityMode);a.has(t.file)||a.set(t.file,new Set),a.get(t.file).add(e);let n=U(t)?.color??`none`;o.has(t.file)||o.set(t.file,new Set),o.get(t.file).add(n),s.has(t.file)||s.set(t.file,[]),s.get(t.file).push({severity:e,color:n})}let c;return w.focusedPkg?(c=t.filter(e=>(br(e)??`__own__`)===w.focusedPkg),w.showAll||(c=c.filter(e=>_r(e,r,i)))):c=w.showAll?t:t.filter(e=>_r(e,r,i)),{treeData:e,files:c,ownCounts:r,transitiveCounts:i,severitySets:a,colorSets:o,fileFindings:s,ownSourceFiles:Sr(c)}}function kG(){let e=wT();if(!e)return;let t=OG();if(!t)return;let n=F.currentView===`bundles`;e.refreshSidebar(t,{isBundleContext:n,findingsJump:!(n&&I())})}function AG(){let e=wT();if(!e)return;let t=OG();t&&e.refreshTopPkgs(t)}function jG(e){return`${Oi[e]??e} findings`}function MG(e,t,n){return n?A`<repo-chip url="${n}"></repo-chip>`:I()?M:F.currentWorkspace?t?A`<repo-chip url="${t}"></repo-chip>`:M:e?A`<repo-chip url="${F.repoUrl}" editable ?editing="${F.repoEditing}" ?empty="${!F.repoUrl}"></repo-chip>`:t?A`<repo-chip url="${t}"></repo-chip>`:M}function NG(e,t,n,r,i){let a=e.length,o=new Set(F.reports.map(e=>e.source)),s=o.size===1?[...o][0]:null,c=F.currentWorkspace?R().find(e=>e.id===F.currentWorkspace):null,l=kH(F,c?[c]:[],Ru),u=c?`Workspace: ${c.name}`:s?jG(s):`Findings`,d=s&&Kx[s]?s:`default`,f=k(Kx[d]),p=A`<svg class="file-icon" viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M14 3H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"/><path d="M14 3v6h6"/></svg>`,m=M;if(l)m=IH(l,`reports`,F.currentView);else if(t.length===1){let e=x(t[0]);m=A`<button type="button" class="file-chip" data-copy-report="${e}">${f}<span>${e}</span></button>`}else t.length>1&&(m=A`<button type="button" class="file-chip" data-copy-report="${t.map(x).join(`
187
+ `)}">${p}<span>${t.length} reports</span></button>`);let h=`${a} ${`finding${a===1?``:`s`}`}`,g=F.currentWorkspace?[]:kK(!!s),_=M;if(a>0){let t={};for(let n of e){let e=O(Ng(n),F.severityMode);e&&(t[e]=(t[e]||0)+1)}let n=Ai.filter(e=>t[e]>0);n.length>0&&(_=A`<span class="status-bar" aria-hidden="true">${n.map(e=>{let n=`${t[e]} ${e.replaceAll(`_`,` `)}`;return A`<span class="${`status-seg sev-${e}`}" style="${E({flexGrow:t[e]})}" data-tooltip="${n}"></span>`})}</span>`)}if(l?.scope===`team`)return NH(l,F.currentView,{findings:a,statusBar:_});let v=new Set(F.reports.map(e=>e.repo??null)),y=MG(n,r,v.size===1?[...v][0]:null),b=A`<span class="sep" aria-hidden="true"></span>`,ee=l?M:LH(i,F.currentView);return A`<header class="page-head"><div class="page-title"><h1>${l?FH(l,F.currentView):u}${m}${IH(l,`bundles`,F.currentView)}${y}${ee}${IG()}</h1><div class="meta-row"><span>${h}</span> ${_} ${g.length>0?A`${b}${g.map(e=>A`<span class="tag">${e}</span>`)}`:M}</div></div></header>`}var{suggestSync:PG}=bH({open:e=>Me({names:e})}),FG=new Set([`findings`,`files`,`links`]);function IG(){if(V.status!==`online`||!FG.has(F.currentView))return M;let e=vH();if(!e)return M;let{workspaceId:t,fileNames:n,mode:r}=e,i=bh(t);if(i.length>0&&PG(t,i,{onSync:()=>LG(t,r,n),retry:X}),r===`single`){let e=n[0];if(i.includes(e))return RG({status:`differ`,label:`differs`,title:`Your copy of "${e}" doesn't match its cloud copy. Click to re-check and bring them in line.`,onClick:()=>LG(t,r,n)});let a=ph(t,e)?`cloud`:`local`;return RG({status:a,label:a,title:a===`cloud`?`Synced to remote`:`Local only — click to upload`,onClick:a===`local`?()=>HG({workspaceId:t,items:[{kind:`report`,identifier:e}]}):null})}let a=R().find(e=>e.id===t),o=a&&Array.isArray(a.bundles)?a.bundles:[],s=yh(t),c=n.filter(e=>!ph(t,e)),l=o.filter(e=>!mh(t,e)),u=[...c.map(e=>({kind:`report`,identifier:e})),...l.map(e=>({kind:`bundle`,identifier:e}))];if(s===0&&u.length===0)return M;let d=[s>0?`${s} in cloud`:null,u.length>0?`${u.length} local-only`:null,i.length>0?`${i.length} differ from the cloud`:null,s>0?`click "cloud" to re-check storage`:null,u.length>0?`click "local" to upload ${u.length}`:null].filter(Boolean).join(` — `),f=i.length===1?`Your copy of "${i[0]}" doesn't match its cloud copy. Click to re-check and bring them in line.`:`${i.length} reports don't match their cloud copies. Click to re-check and bring them in line.`,p=i.length===0?M:A`<button type="button" class="sync-badge-chunk differ" data-tooltip="${f}" aria-label="${`${i.length} report${i.length===1?``:`s`} differ from the cloud \u2014 re-check`}" @click="${e=>{e.stopPropagation(),LG(t,r,n)}}">${BG()}<span>${i.length} differ</span></button>`,m=s===0?M:A`<button type="button" class="sync-badge-chunk cloud" aria-label="${`re-check ${s} cloud object${s===1?``:`s`}`}" @click="${e=>{e.stopPropagation(),ve({workspaceId:t,cloudCount:s,localFileNames:n,localBundles:o})}}">${VG()}<span>${s} cloud</span></button>`,h=u.length===0?M:A`<button type="button" class="sync-badge-chunk local" aria-label="${`${u.length} items not yet uploaded \u2014 open upload dialog`}" @click="${e=>{e.stopPropagation(),HG({workspaceId:t,items:u})}}">${zG()}<span>${u.length} local</span></button>`,g=A`<span class="sync-badge-divider" aria-hidden="true"></span>`,_=[m,p,h].filter(e=>e!==M);return A`<div class="report-sync-badge report-sync-badge-clickable" data-status="mixed" data-tooltip="${d}">${_.map((e,t)=>t===0?e:A`${g}${e}`)}</div>`}function LG(e,t,n){let r=R().find(t=>t.id===e),i=t===`single`?_H(r?.reports??[],F.storedFiles??[],n):n,a=r&&Array.isArray(r.bundles)?r.bundles:[];return ve({workspaceId:e,cloudCount:yh(e),localFileNames:i,localBundles:a,autoRun:!0})}function RG({status:e,label:t,title:n,onClick:r}){let i=e===`cloud`?VG():e===`differ`?BG():zG(),a=A`<span class="sync-badge-label">${t}</span>`;return typeof r==`function`?A`<button type="button" class="report-sync-badge report-sync-badge-clickable" data-status="${e}" data-tooltip="${n}" aria-label="${`report sync status: ${t}`}" @click="${r}">${i}${a}</button>`:A`<span class="report-sync-badge" data-status="${e}" data-tooltip="${n}" aria-label="${`report sync status: ${t}`}">${i}${a}</span>`}function zG(){return A`<svg class="sync-badge-icon" viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="2" y="14" width="20" height="8" rx="2" ry="2"/><line x1="6" y1="18" x2="6.01" y2="18"/><line x1="10" y1="18" x2="10.01" y2="18"/><path d="M6 14V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v10"/></svg>`}function BG(){return A`<svg class="sync-badge-icon" viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 4v14"/><path d="M3 14l4 4 4-4"/><path d="M17 20V6"/><path d="M13 10l4-4 4 4"/></svg>`}function VG(){return A`<svg class="sync-badge-icon" viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M17.5 19a4.5 4.5 0 1 0-1-8.9A6 6 0 0 0 5.07 13.5 4 4 0 0 0 6 21h11.5z"/></svg>`}async function HG({workspaceId:e,items:t}){let n=t.filter(e=>e.kind===`bundle`);if(n.length>0){let e=await ol(),t=new Map(e.map(e=>[e.integrity,e.name]));for(let e of n){let n=t.get(e.identifier);n&&(e.label=n)}}await Pe({workspaceId:e,items:t})}function UG(e){return Object.values(e).some(e=>e>0)||F.filterSeverities.size>0?A`<severity-chips .counts="${e}"></severity-chips>`:M}function WG(e){return Object.values(e).some(e=>e>0)||F.filterColors.size>0?A`<triage-filter .counts="${e}"></triage-filter>`:M}function GG(e,t,n,r,i,a,o,s){let{showSource:c,showConfidence:l,showPriority:u,showGraphMode:d,showFileSort:f,kanbanMode:p,showRepo:m,hasComment:h,hasFix:g,hasFlagged:_,hasDuplicates:v,hasCrossContext:y,hasAppStacked:b,showSecurity:ee,showSeverityMode:te,revalidateOptions:ne,showPartial:re,canDropLayer:ie,canDetailLayer:ae,canUpstreamLens:oe,confirmedLocked:se}=a;return A`<div class="toolbar"><div class="toolbar-row"><view-mode-buttons modes="${d?`kanban,focus,table,list,grouped,graph`:`kanban,focus,table,list,grouped`}"></view-mode-buttons><findings-sort ?show-file="${f}" ?show-confidence="${l}" ?show-priority="${u}"></findings-sort>${c?A`<source-filter></source-filter>`:M} ${!se&&(l||ne.length>0)?A`<conf-filter ?range-disabled="${!l}" .revalidateOptions="${ne}" ?has-partial="${re}"></conf-filter>`:M} ${h||g||_||F.filterComment||F.filterFix||F.filterFlagged?A`<annotation-filter .hasComment="${h}" .hasFix="${g}" .hasFlagged="${_}"></annotation-filter>`:M} ${p?M:A`<triage-selector .counts="${n}"></triage-selector>`}<div class="toolbar-end"><download-button></download-button>${!F.currentWorkspace&&(v||F.filterDuplicates)||y||b||ee||F.filterCrossContext||F.filterAppStacked?A`<annotation-filter group="context" .hasDuplicates="${v}" .hasCrossContext="${y}" .hasAppStacked="${b}" .hasSecurityContrast="${ee}"></annotation-filter>`:M} ${ie||F.revalidateConflicts.size>0?A`<revalidation-switch ?can-drop="${ie}" ?can-detail="${ae}" ?can-upstream="${oe&&ie}" .upstreamDisabled="${F.showRevalidation===!1&&ie}"></revalidation-switch>`:M}</div></div><div class="toolbar-row sev-row">${te?A`<severity-mode-switch></severity-mode-switch>`:M} ${UG(r)} ${o.analyzers.length>1||o.models.length>1?A`<analyzer-select .analyzers="${o.analyzers}" .models="${o.models}" .groups="${o.groups}"></analyzer-select>`:M} ${m&&s.length>1?A`<repo-filter .options="${s}"></repo-filter>`:M} ${WG(i)}<div class="search-row"><toolbar-search kind="findings"></toolbar-search><span class="result-count">${e} of ${t}</span></div></div></div>`}function KG(e,t){return e.map(e=>({p:Ng(e),g:e})).toSorted((e,n)=>t(e.p,n.p)).map(e=>e.g)}var qG=(e,t)=>e.file.localeCompare(t.file)||parseInt(e.line,10)-parseInt(t.line,10),JG=null,YG=0,XG=null;function ZG(e,t=!1,n=null,r=!1,i=!1){return A`<finding-card data-gid="${H(e)}" .group="${e}" ?in-group="${t}" context="${n??M}" ?lazy="${r}" ?popup="${i}"></finding-card>`}var QG=A`<svg viewBox="0 0 16 16" width="11" height="11" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 2H2v4M10 2h4v4M14 10v4h-4M6 14H2v-4"/></svg>`,$G=A`<svg viewBox="0 0 16 16" width="11" height="11" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 2v4H2M10 2v4h4M10 14v-4h4M6 14v-4H2"/></svg>`,eK={critical:`C`,high:`H`,medium:`M`,low:`L`,high_bug:`H`,bug:`B`,informational:`i`};function tK(e,t={}){let{variant:n=`kanban`,active:r=!1,expandedTrackLast:i=!1}=t,a=t.groupSt??Vg(e),o=Ig(e),s=Bi(o)||`(untitled finding)`,c=n===`kanban`,l=n===`kanban-side`,u=c&&F.currentWorkspace?Yx(o):null,d={"kanban-card":!0,"has-conflict":a.hasConflict,"focus-side-card":!c,"kanban-expanded-track-last":i,active:r};!a.hasConflict&&a.commonColor&&(d[`mark-${a.commonColor}`]=!0);let f=parseInt(o.line,10),p=Number.isFinite(f)?`:${f}`:``,m=O(o,F.severityMode),h=eK[m]??`?`,g=Mi(o)&&F.severityMode!==`original`,_=U(o),v=_?.flagged===!0,y=eg(o,_),b=_?.comment??``,ee=M;c&&y?ee=mi(y)?A`<managed-fix-link class="kanban-action kanban-fix-link" compact="compact" .url="${y}">${zw}</managed-fix-link>`:Dg(o)?A`<button type="button" class="kanban-action mark-fix" data-tooltip="${`Edit fix link: ${y}`}" aria-label="${`Edit fix link: ${y}`}">${zw}</button>`:A`<span class="kanban-action kanban-fix-note" role="img" data-tooltip="${`Fix: ${y}`}" aria-label="${`Fix: ${y}`}">${zw}</span>`:c&&(b||I()&&Tg(o))&&(ee=A`<comment-preview class="kanban-action" .finding="${o}" .comment="${b}">${Rw}</comment-preview>`);let te=A`<div class="kanban-badge-col"><span class="${`kanban-badge sev-${m}`}" data-tooltip="${g?`${vw(m)} \u2014 corrected from ${vw(o.severity)}`:M}" aria-label="${g?`Severity ${vw(m)}, corrected from ${vw(o.severity)}`:`Severity ${vw(m)}`}">${h}${g?`*`:``}</span> ${v?A`<span class="kanban-flag" aria-label="Flagged">${Zw}</span>`:M} ${ee}</div><span class="kanban-title">${s}</span><div class="kanban-meta"><span class="kanban-loc">${o.file}${p}</span> ${o.confidence===void 0||o.confidence===null?M:A`<span class="kanban-conf" data-tooltip="${`Confidence ${o.confidence}/10`}">${o.confidence}</span>`} ${u?A`<span class="kanban-analyzer" role="img" data-tooltip="${Jx[u]}" aria-label="${Jx[u]}">${k(st[u])}</span>`:M}</div>`;return c?A`<div class="${C(d)}" data-gid="${H(e)}" data-kanban-source draggable="${Gg(e,a).length>0?`true`:`false`}" role="button" tabindex="0" aria-current="${r?`true`:`false`}" aria-label="${`Open details for ${s}`}">${te}</div>`:l?A`<div class="${C(d)}" data-gid="${H(e)}" data-kanban-select role="button" tabindex="0" aria-current="${r?`true`:`false`}" aria-label="${`Show details for ${s}`}">${te}</div>`:A`<div class="${C(d)}" data-gid="${H(e)}" data-focus-select role="button" tabindex="0" aria-current="${r?`true`:`false`}" aria-label="${`Focus on ${s}`}">${te}</div>`}var nK={content:``,parts:``};function rK(e){return nK.content!==e&&(nK={content:e,parts:XT(e)}),nK.parts}function iK(e){let{content:t,range:n,highlighted:r}=e,i=t.split(`
188
+ `).length,a=String(i).length;return A`<div class="focus-code-lines" style="${E({"--lineno-width":`${a}ch`})}"><aside class="focus-code-gutter" aria-hidden="true">${Array.from({length:i},(e,t)=>{let r=t+1,i={"focus-code-lineno":!0,"focus-code-line-active":!!n&&r>=n.start&&r<=n.end};return A`<div class="${C(i)}" data-focus-code-line="${r}">${r}</div>`})}</aside><pre class="focus-code-source" tabindex="-1" aria-label="${e.file}"><code>${typeof r==`string`?k(r):rK(t)}</code></pre></div>`}function aK(e){return!e||!Bv(Ig(e))?M:A`<button type="button" class="finding-history detail-action" data-finding-history data-gid="${H(e)}" aria-label="View issue history"><svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M2 5a6.25 6.25 0 1 1-.25 5M1.5 1.5V5H5M8 4.5V8l3 1.5"/></svg></button>`}function oK(e,t=M,n=!1){F.focusCodeTick;let r=HC(e),i=zC(e),a=r?`focus-main with-code`:`focus-main`,o=E({"--focus-split":String(F.focusSplit)});return A`<div class="${a}" style="${o}" data-gid="${H(e)}"><div class="focus-pane focus-pane-card"><div class="focus-card-wrapper">${n?M:aK(e)} ${ZG(e,!1,`focus`,!1,n)}</div></div>${t} ${r?A`<div class="focus-splitter" data-focus-splitter role="separator" tabindex="0" aria-orientation="vertical" aria-label="Resize the finding and code panes" aria-valuemin="${Vs}" aria-valuemax="${Hs}" aria-valuenow="${Math.round(F.focusSplit)}" data-tooltip="Drag to resize · double-click to reset"></div><div class="focus-pane focus-pane-code" data-focus-code-file="${r.file??M}" data-focus-code-integrity="${r.integrity??M}">${r.loading?A`<div class="focus-code-empty">Loading source…</div>`:A`<header class="focus-code-bar"><span class="focus-code-file" data-tooltip-truncated data-tooltip="${r.file}">${r.file}</span> ${r.range?A`<span class="focus-code-line">:${Kn(r.range)}</span>`:M} ${(i?.stack.length??0)>1?A`<div class="focus-code-nav"><button type="button" class="focus-code-nav-btn" data-code-history="back" ?disabled="${i.at===0}" aria-label="Back to the previously shown file">${dw}</button> <button type="button" class="focus-code-nav-btn" data-code-history="forward" ?disabled="${i.at===i.stack.length-1}" aria-label="Forward to the next shown file">${fw}</button></div>`:M}</header><div class="focus-code-body">${iK(r)}</div>`}</div>`:M}</div>`}function sK(e,t,n=[],r=null){if(!e&&!r)return M;let i=e?Vg(e):{},a=F.kanbanDetailFullscreen,o={"kanban-detail-modal":!0,fullscreen:a,"has-conflict":i.hasConflict},s=e?H(e):null,c=t?.items??[],l=c.findIndex(e=>H(e)===s),u=A`<div class="kanban-detail-actions">${aK(e)} <button type="button" class="kanban-detail-expand detail-action" data-kanban-detail-fullscreen aria-pressed="${a?`true`:`false`}" aria-label="${a?`Back to the readable width`:`Fill the available space`}">${a?$G:QG}</button> <button type="button" class="kanban-detail-close detail-action" aria-label="Close details">×</button></div>`;return A`<div class="${C({"kanban-detail-backdrop":!0,"links-preview-backdrop":!!r})}"><div class="kanban-detail-dim"></div><div class="${C(o)}" role="dialog" aria-modal="true" aria-label="${r?`Finding preview`:`Finding details`}">${a&&e?M:u}<div class="kanban-detail-body">${e?a?oK(e,u,!0):ZG(e,!1,`kanban-detail`,!1,!0):A`<div class="links-preview-message" role="status">${r.error||`Loading finding…`}</div>`}</div></div>${c.length===0?M:A`<aside class="kanban-detail-side" aria-label="${`${t.label} findings`}"><div class="kanban-detail-side-header"><span class="kanban-detail-side-pick"><select class="kanban-detail-side-select" data-kanban-column aria-label="Column to show">${n.map(e=>{let n=e.key===t.key,r=n?e.label:`${e.label} (${e.count})`;return A`<option value="${e.key}" data-gid="${e.firstGid}" .selected="${n}" ?disabled="${e.count===0}">${r}</option>`})}</select></span><div class="focus-nav"><button type="button" class="focus-nav-btn" data-kanban-nav="prev" ?disabled="${l===0}" aria-label="Previous finding">${dw}</button> <span class="count">${l<0?c.length:`${l+1} / ${c.length}`}</span> <button type="button" class="focus-nav-btn" data-kanban-nav="next" ?disabled="${l===c.length-1}" aria-label="Next finding">${fw}</button></div></div><kanban-rail class="kanban-detail-side-body" .items="${c}" .activeKey="${s}" .keyOf="${H}" .renderItem="${e=>tK(e,{variant:`kanban-side`,active:H(e)===s})}"></kanban-rail></aside>`}</div>`}function cK(e,t,n=new Map){if(F.viewMode===`table`){let n=F.sortBy===`file`?KG(e,qG):e;return n.length===0?M:(JG=n,A`<div class="${t?`findings-table-layout open`:`findings-table-layout`}"><div class="findings-table-list"><div class="finding-table-slot"></div></div>${t?A`<aside class="findings-table-details" id="findings-table-details" aria-label="Finding details"><button type="button" class="findings-table-details-close" data-table-deselect aria-label="Close details">×</button><div class="findings-table-details-body">${ZG(t)}</div></aside>`:M}</div>`)}if(F.viewMode===`focus`){if(e.length===0)return M;let n=e.indexOf(t);YG=n;let r=t,i=n===0,a=n===e.length-1;return A`<div class="focus-view">${oK(r)}<aside class="focus-sidebar" aria-label="Up next"><div class="focus-sidebar-header"><span class="label">Up next</span><div class="focus-nav"><button type="button" class="focus-nav-btn" data-focus-nav="prev" ?disabled="${i}" aria-label="Previous finding">${dw}</button> <span class="count">${n+1} / ${e.length}</span> <button type="button" class="focus-nav-btn" data-focus-nav="next" ?disabled="${a}" aria-label="Next finding">${fw}</button></div></div><div class="focus-sidebar-body">${D(e,e=>H(e),e=>tK(e,{variant:`focus`,active:H(e)===H(r)}))}</div></aside></div>`}if(F.viewMode===`kanban`){let r=[{key:`untriaged`,label:`Untriaged`},{key:`inprogress`,label:`In progress`},{key:`fixed`,label:`Fixed`},{key:`invalid`,label:`Invalid`},{key:`deleted`,label:`Deleted`},{key:`ignored`,label:`Ignored`}],i=new Map(r.map(e=>[e.key,[]])),a=e=>{let t=n.get(e);return t||n.set(e,t=Vg(e)),t};for(let t of e){let e=a(t).commonTriage??`untriaged`,n=i.get(e);n&&n.push(t)}let o=r.some(e=>e.key===F.kanbanExpandedColumn)?F.kanbanExpandedColumn:null,s=o?r.filter(e=>e.key===o):r,c={"--kanban-cols":String(r.length)},l=t,u=l?r.find(e=>e.key===(a(l).commonTriage??`untriaged`)):null;return A`<div class="kanban-board" style="${E(c)}">${D(s,e=>e.key,e=>{let t=i.get(e.key),n=e.key===o;return A`<div class="${`kanban-column kanban-column-${e.key}${n?` expanded`:``}`}" data-kanban-target="${e.key}"><div class="kanban-column-header"><span class="label">${e.label}</span> <span class="count">${t.length}</span> <button type="button" class="kanban-expand" data-kanban-expand="${e.key}" aria-pressed="${n}" aria-label="${n?`Show all columns`:`Show only ${e.label}`}">${n?$G:QG}</button></div><div class="kanban-column-body">${t.length===0?A`<div class="kanban-empty">No ${e.label.toLowerCase()} findings.</div>`:D(t,e=>H(e),(e,t)=>tK(e,{active:H(e)===F.kanbanPopoverGid,expandedTrackLast:(t+1)%r.length===0,groupSt:a(e)}))}</div></div>`})}</div>${sK(l,u&&{key:u.key,label:u.label,items:i.get(u.key)},r.map(e=>{let t=i.get(e.key);return{key:e.key,label:e.label,count:t.length,firstGid:t.length>0?H(t[0]):``}}))}`}if(F.viewMode===`grouped`){let t=new Map;for(let n of e){let e=Ng(n).file;t.has(e)||t.set(e,[]),t.get(e).push(n)}let n=F.sortBy===`file`?[...t.keys()].toSorted():[...t.keys()];return A`${D(n,e=>e,e=>{let n=F.sortBy===`file`?KG(t.get(e),(e,t)=>parseInt(e.line,10)-parseInt(t.line,10)):t.get(e),r=Ng(n[0]);return A`<div class="file-group"><div class="file-header"><span>${Rn(r,Rg(r))}</span> <span class="count">${n.length}</span></div><div class="file-body">${D(n,e=>H(e),e=>ZG(e,!1,null,!0))}</div></div>`})}`}let r=F.sortBy===`file`?KG(e,qG):e;return A`${D(r,e=>H(e),e=>{let t=Ig(e),n=Zn(t,Rg(t)),r=In(t),i=zi(t),a=e.length>1;return A`<div class="${C({"flat-group":!0,"multi-case":a})}"><div class="flat-group-loc"><span class="file">${Rn(t,Rg(t))}</span> ${n===M?M:A`<span class="line-num">${n}</span>`} ${i?A`<span class="meta">${i}</span>`:M} ${r?A`<span class="run-meta">${r}</span>`:M}</div>${ZG(e,!0,null,!0)}</div>`})}`}function lK(){F.bundleSourceFile&&ZK().catch(()=>{});let e=document.querySelector(`#bundle-source-overlay-slot`);e&&N(uB(),e)}var uK=SG(NK);function X(){uK(F.currentView)}var dK=e=>Object.assign(document.createElement(`div`),{id:e});function fK(e){let t=document.querySelector(`#${e}`);return(!t||!z.contains(t)||z.firstElementChild!==t)&&(t=dK(e),z.replaceChildren(t)),t}function pK(e=null){let t=e==null?null:F.managedTeams.find(t=>t.id===e),n=t?kH({currentWorkspace:`managed-team:${t.id}`,currentManagedTeam:t.id,managedTeams:F.managedTeams,managedSession:F.managedSession},[]):null;N(PH(n),fK(`triage-loading-slot`))}function mK(){let e=kH(F,R(),Ru);document.title=e?`${e.title} \u2014 findings`:`DeepView`;let t=fK(`empty-workspace-slot`);t&&N(A`${NG([],[],!1,null,0)}<p class="workspace-content-empty">No findings available.</p>`,t),DG()}var hK={"manage-deduplication":{slot:`manage-deduplication-slot`,tag:`managed-admin-deduplication`,title:`DeepView — deduplication`},manage:{slot:`manage-slot`,tag:`managed-admin-home`,title:`DeepView — manage`},"admin-users":{slot:`admin-users-slot`,tag:`managed-admin-users`,title:`DeepView — users`},"manage-repos":{slot:`manage-repos-slot`,tag:`managed-admin-repos`,title:`DeepView — repositories`},"manage-repo-risk":{slot:`manage-repo-risk-slot`,tag:`managed-admin-repo-risk`,title:`DeepView — repository risk`},"manage-reports":{slot:`manage-reports-slot`,tag:`managed-admin-reports`,title:`DeepView — reports`},"manage-bundles":{slot:`manage-bundles-slot`,tag:`managed-admin-bundles`,title:`DeepView — bundles`},"manage-history":{slot:`manage-history-slot`,tag:`managed-admin-history`,title:`DeepView — history`},"manage-teams":{slot:`manage-teams-slot`,tag:`managed-admin-teams`,title:`DeepView — teams`},"manage-import":{slot:`manage-import-slot`,tag:`managed-admin-import`,title:`DeepView — import`},"manage-links":{slot:`manage-links-slot`,tag:`managed-admin-links`,title:`DeepView — links`},"manage-scans":{slot:`manage-scans-slot`,tag:`managed-admin-scans`,title:`DeepView — scans`}};function gK(){F.currentView===`files`&&(F.currentView=`findings`),F.viewMode===`graph`&&(F.viewMode=`kanban`)}var _K=e=>A`<p class="triage-loading" role="status">Loading ${e}…</p>`,vK=(e,t)=>e==null&&t==null?0:e==null?1:t==null?-1:e.localeCompare(t),yK=null;function bK(e){let t=[e,An(),Dr()];if(yK?.key.every((e,n)=>e===t[n]))return yK;let n=E_(e),r=e.some(e=>e.some(e=>jn(e.file))),i=e.some(e=>e.some(e=>!jn(e.file))),a=!1,o=!1,s;e:for(let t of e)for(let e of t)if(!o)o=!0,s=e.file;else if(e.file!==s){a=!0;break e}let c=e.some(e=>e.some(e=>!e.repo?.github&&!jn(e.file))),l=new Set;for(let t of e)for(let e of t)!jn(e.file)&&e.repo?.github&&l.add(e.repo.github);let u=l.size===1?[...l][0]:null,d=new Set,f=new Set;for(let t of e)for(let e of t)d.add(e._analyzer??null),f.add(c_(e));let p=Object.keys(K_),m=e=>{if(e==null)return 1/0;let t=p.indexOf(e);return t===-1?p.length:t},h=[...d].toSorted((e,t)=>{let n=m(e),r=m(t);return n===r?String(e??``).localeCompare(String(t??``)):n-r}),g=[...f].toSorted(vK);return yK={key:t,hasAnyPriority:n,hasAnyModulesPath:r,hasAnySourcePath:i,hasMultipleFiles:a,repoInputUseful:c,knownRepo:u,analyzerSet:d,modelSet:f,analyzerOptions:h,modelOptions:g},yK}var xK=null;function SK(e,t){if(xK?.groups===e&&xK.workspace===t)return xK;let n=!1,r=!1,i=!1;for(let a of e){let e=!1,o=!1;for(let n of a){let a=Fi(n);a===`partial`&&(r=!0),!((a===`unreachable`||a===`refuted`)&&(i=!0,t))&&(a===`revalidation`?e=!0:o=!0)}e&&o&&(n=!0)}return xK={groups:e,workspace:t,hasFoldedRows:n,hasPartialRow:r,hasRuledOutRow:i},xK}var CK=(e,t)=>e.length===t.length&&e.every((e,n)=>e===t[n]),wK={reports:[],value:!1};function TK(){return CK(wK.reports,F.reports)||(wK={reports:[...F.reports],value:Mr(F.reports)}),wK.value}var EK={reports:[],depsDir:null,value:!1};function DK(){let e=An();return(EK.depsDir!==e||!CK(EK.reports,F.reports))&&(Mn(F.reports)&&Yg(),EK={reports:[...F.reports],depsDir:e,value:F.reports.some(e=>(e.groups??[]).some(e=>e.some(e=>e.isUpstream)))}),EK.value}var OK={reports:[],single:!1,tags:[]};function kK(e){if(OK.single!==e||!CK(OK.reports,F.reports)){let t=F.reports.flatMap(e=>e.groups.flat());OK={reports:[...F.reports],single:e,tags:AS(t,e?xS.filter(e=>e!==`type`):xS)}}return OK.tags}var AK=null;function jK(){let e=F.revalidateConflicts.size>0,t=!e&&TK();return e?F.showRevalidation!==!1&&(AK=F.showRevalidation,F.showRevalidation=!1):(AK!==null&&(F.showRevalidation=AK,AK=null),!t&&F.showRevalidation===!1&&(F.showRevalidation=!0)),F.upstreamOnly&&(!t||F.showRevalidation===!1||!DK())&&(F.upstreamOnly=!1),Tr(F.showRevalidation,F.upstreamOnly),t}var MK=null;function NK(){hg()||gg(),lK(),kn(F.reports),Td()&&queueMicrotask(()=>{Dd()});let e=DK(),t=jK(),n=e;if([`workspace-reports`,`workspace-bundles`,`workspace-repositories`,`workspace-dependencies`].includes(F.currentView)){let e=F.currentView.slice(10),t=kH(F,R(),Ru),n=fK(`workspace-content-slot`);n&&N(zH(t,e),n),document.title=t?`${t.title} \u2014 ${e}`:`DeepView \u2014 ${e}`;return}if(F.currentView===`bundles`){if((F.bundles??[]).length===0)F.currentView=`findings`;else{qt(F.bundleDetailsTab,F.bundleSourceFile)&&ZK().catch(()=>{});let e=fK(`bundles-slot`);e&&N(bV(F.bundles),e);let t=F.bundleDetails,n=F.selectedBundle&&t&&(t.json||t.bundle);if(n&&F.bundleDetailsTab===`graph`){let e=document.querySelector(`#bundle-graph-slot`);if(e){let n=Pz(F.bundleDetails);if(n){zz(n);let r={hideAllFiles:!0,triageCounts:Mz(F.bundleDetails,new Set(n.strippedToOrig.values())),triageStates:[`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`],showPackagesView:n.canPackagesView,showBundleLayouts:!0,hasIssues:n.hasIssues},i=MK,a=e.querySelector(`graph-layout`);!n.issuesShown&&i&&!i.issuesShown&&a&&i.state===w.graphState&&i.details===t&&i.reason===w.bundleReason?a.options=r:(MK=null,ET(e,n,r,Lz,Rz).then(e=>(e&&w.graphState&&(MK={state:w.graphState,details:t,reason:w.bundleReason,issuesShown:n.issuesShown}),null)))}}}if(n&&!t.metadataOnly&&(F.bundleDetailsTab===`terminal`||F.bundleDetailsTab===`code`&&F.bundleCodeTerminal)){let e=document.querySelector(`#bundle-terminal-slot`);e&&NT(e,F.bundleDetails)}DG();let{npm:r,repository:i}=F.bundles.find(e=>e.integrity===F.selectedBundle)??{};document.title=r?`DeepView \u2014 ${r.name}@${r.version}`:i?`DeepView \u2014 ${kM(i)}`:`DeepView — bundles`;return}}if(F.currentView===`reviews`){let e=fK(`dependency-reviews-slot`);e&&N(eR(()=>A`<dependency-review-list .session="${F.managedSession}"></dependency-review-list>`),e),DG(),document.title=`DeepView — my reviews`;return}if(F.currentView===`profile`){let e=fK(`managed-profile-slot`);e&&N(A`<managed-profile .session="${F.managedSession}" .linkError="${F.profileLinkError}"></managed-profile>`,e),DG(),document.title=`DeepView — profile`;return}if(F.currentView===`npm`){let e=F.npmOpening,t=fK(e?`bundles-slot`:`npm-slot`);t&&N(e?fV(e):tM(),t),DG(),document.title=e?`DeepView \u2014 ${pj(e.name,e.spec)}`:`DeepView — npm packages`;return}if(F.currentView===`repository-code`){let e=F.repositoryCodeOpening,t=fK(`bundles-slot`);t&&e&&N(pV(e),t),DG(),document.title=`DeepView \u2014 ${e?.repo??`code`}`;return}if(F.currentView===`packages`){let e=fK(`packages-slot`);e&&N(RV(),e),DG(),document.title=`DeepView — packages`;return}if(F.currentView===`repositories`){let e=fK(`repositories-slot`);e&&N($V(),e),DG(),document.title=`DeepView — repositories`;return}if(F.currentView===`links`){if(F.currentLinks){let e=fK(`links-slot`),t=hg();e&&N(A`${gH(IG())}${t?sK(t.group,null,[],t):M}`,e),DG(),document.title=`DeepView \u2014 ${F.currentLinks.name}`;return}F.currentView=`findings`}if(F.currentView===`scan`&&customElements.get(`local-scan-page`)){let e=fK(`scan-slot`);if(e&&!e.firstElementChild){let t=document.createElement(`local-scan-page`);t.selection=F.scanSelection,e.append(t),t.updateComplete.then(()=>cr(t.renderRoot,{gate:e=>!Object.hasOwn(e.dataset,`tooltipTruncated`)||e.scrollWidth>e.clientWidth}))}DG(),document.title=`DeepView — scans`;return}let r=hK[F.currentView];if(r){let e=fK(r.slot);e?.classList.add(`managed-page-slot`);let t=e?.firstElementChild?.session;if((t?.id!==F.managedSession?.id||t?.role!==F.managedSession?.role)&&e?.replaceChildren(),e&&!e.firstElementChild){let t=document.createElement(r.tag),n=e=>cr(e,{gate:e=>!Object.hasOwn(e.dataset,`tooltipTruncated`)||e.scrollWidth>e.clientWidth});t.localImportSource=mp(),F.currentView===`manage-import`&&(t.localDeps=fp(),t.promptPassword=Ve,t.resolveConflicts=bS,t.confirmTriageImport=le,t.confirmContentImport=se,t.showTriageComparison=Fe),t.session=F.managedSession,t.allowShare=F.managed?.allowShare===!0,F.currentView===`manage-scans`&&(t.selection=F.scanSelection),F.currentView===`manage-bundles`&&(t.createRepoId=F.bundleCreationRepoId,t.installTooltips=n),e.append(t),(async()=>{await customElements.whenDefined(r.tag),await t.updateComplete,n(t.renderRoot)})().catch(()=>{})}e?.firstElementChild&&(e.firstElementChild.session=F.managedSession,e.firstElementChild.allowShare=F.managed?.allowShare===!0),F.currentView===`manage-scans`&&e?.firstElementChild&&(e.firstElementChild.selection=F.scanSelection),F.currentView===`manage-bundles`&&e?.firstElementChild&&(e.firstElementChild.createRepoId=F.bundleCreationRepoId),DG(),document.title=r.title;return}if(F.reports.length===0){F.currentWorkspace&&document.querySelector(`#empty-workspace-slot`)&&mK();return}let i=e_(),a=F.viewMode===`kanban`,o={inprogress:0,fixed:0,invalid:0,deleted:0,ignored:0},s=[],c=new Map;for(let e of i){let t=Vg(e);c.set(e,t);let n=t.commonTriage;n&&o[n]++,(a||n===F.shownTriage)&&s.push(e)}Object.defineProperty(s,"ruledOutIds",{value:i.ruledOutIds});let l=!1,u=!1,d=!1,f=!1;for(let e of i)for(let t of e){Mi(t)&&(f=!0);let e=U(t);$h(t)&&(u=!0),e&&(e.comment&&(l=!0),e.fix&&(u=!0),e.flagged===!0&&(d=!0))}let p=i_(),m=i.some(e=>e.some(e=>p.has(e.id)));m||(F.filterDuplicates=``);let h=s.some(F_),g=s.some(I_);h||(F.filterCrossContext=``),g||(F.filterAppStacked=``);let _=R_(s);_||(F.filterSecurity=``);let v=new Set;for(let e of s)for(let t of e){let e=kr(t);e&&v.add(e)}let{hasFoldedRows:y,hasPartialRow:b,hasRuledOutRow:ee}=SK(Qg(),!!F.currentWorkspace),te=[...new Set(F.reports.map(e=>e.type))].join(`, `),ne=F.reports.map(e=>e.fileName),re=s.map(Ag).filter(e=>e.length>0),ie=re.length>0&&gr(re),{hasAnyPriority:ae,hasAnyModulesPath:oe,hasAnySourcePath:ce,hasMultipleFiles:ue,repoInputUseful:de,knownRepo:fe,analyzerSet:pe,modelSet:me,analyzerOptions:he,modelOptions:ge}=bK(i);if(F.filterAnalyzer){let e=F.filterAnalyzer===a_?null:F.filterAnalyzer;(!pe.has(e)||pe.size<2)&&(F.filterAnalyzer=``)}if(F.filterModel){let e=F.filterModel===s_?null:F.filterModel;(!me.has(e)||me.size<2)&&(F.filterModel=``)}let _e=On(v);F.filterRevalidate&&!_e.some(e=>e.value===F.filterRevalidate)&&(F.filterRevalidate=``);let ve=w_(s);ve&&(F.filterRevalidate=`confirmed`);let ye=v.has(`partial`)&&bg();ye||(F.filterPartial=``);let be=t&&(y||b||!F.currentWorkspace&&ee),xe=!(t&&F.showRevalidation!==!1)&&!F.upstreamOnly&&oe&&ce;!xe&&F.filterSources.size>0&&F.filterSources.clear(),ie||(F.filterConfMin=0,F.filterConfMax=10,(F.sortBy===`confidence-desc`||F.sortBy===`confidence-asc`)&&(F.sortBy=`severity`)),!ae&&(F.sortBy===`priority-desc`||F.sortBy===`priority-asc`)&&(F.sortBy=`severity`),!ue&&F.sortBy===`file`&&(F.sortBy=`severity`);let Se=z_(s),Ce={critical:0,high:0,medium:0,low:0,high_bug:0,bug:0,informational:0},we={red:0,blue:0,green:0,gray:0,none:0};for(let e of Se){if(e.length===1){let t=O(e[0],F.severityMode);Ce[t]=(Ce[t]||0)+1;let n=U(e[0])?.color??`none`;we[n]=(we[n]||0)+1;continue}let t=new Set(e.map(e=>O(e,F.severityMode)));for(let e of t)Ce[e]=(Ce[e]||0)+1;let n=new Set(e.map(e=>U(e)?.color??`none`));for(let e of n)we[e]=(we[e]||0)+1}let Te=d_(Se),Ee=[...Te].toSorted(vK);if(F.filterRepo){let e=F.filterRepo===o_?null:F.filterRepo;Te.has(e)||(F.filterRepo=``)}let De=G_(B_(s)),Oe=pr(F.reports),ke=Oe?Object.keys(Oe).length:F.reports.reduce((e,t)=>e+(t.treeFiles??0),0),Ae=ke>1&&!Oe&&(F.currentView===`files`||F.viewMode===`graph`)&&TG(e=>{e||gK(),X()}),je=ke>1;(!je||!Oe&&!Ae)&&gK();let Me=NG(i,ne,de,fe,ke);if(F.currentView===`files`){let e=dr(i,F.severityMode),t=document.querySelector(`#header-slot`),n=document.querySelector(`#tree-view-slot`);(!t||!n||!z.contains(t)||!z.contains(n))&&(t=dK(`header-slot`),n=dK(`tree-view-slot`),z.replaceChildren(t,n)),t&&N(Me,t),n&&N(Oe?_T(Oe,e):_K(`files`),n),DG(),document.title=`DeepView \u2014 ${te||`no analyzer`}`;return}let Ne=F.viewMode===`table`&&F.tableSelectedGid&&De.some(e=>H(e)===F.tableSelectedGid),Pe=null;F.viewMode===`graph`&&Oe&&(Pe=OG(),Pe||(F.viewMode=`kanban`));let Ie=!!Pe,Le=`findings-content`;Ne&&(Le+=` with-details`),Ie&&(Le+=` with-graph`),a&&(Le+=` with-kanban`),F.viewMode===`focus`&&(Le+=` with-focus`);let Re=M,ze=M,Be=M,He=xH(De,F,YG);JG=null,Ie||(Re=GG(De.length,s.length,o,Ce,we,{showSource:xe,showConfidence:ie,showPriority:ae,showGraphMode:je,showFileSort:ue,kanbanMode:a,showRepo:!!F.currentWorkspace,hasComment:l,revalidateOptions:_e,showPartial:ye,canDropLayer:t,canDetailLayer:be,canUpstreamLens:n,confirmedLocked:ve,hasFix:u,hasFlagged:d,hasDuplicates:m,hasCrossContext:h,hasAppStacked:g,showSecurity:_,showSeverityMode:f||F.severityMode===`original`},{analyzers:he,models:ge,groups:Se},Ee),F.shownTriage&&s.length===0?ze=A`<p style="${E({color:`var(--muted)`,margin:`1rem 0`})}">No ${F.shownTriage} findings.</p>`:De.length===0&&s.length>0&&!a?ze=A`<p style="${E({color:`var(--muted)`,margin:`1rem 0`})}">No findings match the current filters.</p>`:s.length===0&&(ze=i.length>0?A`<p style="${E({color:`var(--green)`})}">All ${te} issues triaged.</p>`:A`<p style="${E({color:`var(--green)`})}">No ${te} issues found.</p>`),Be=Ae?_K(`graph`):cK(De,He,c));let Ue=document.querySelector(`#header-slot`),We=z.querySelector(`:scope > .findings-content`),Ge=We&&We.querySelector(`:scope > #findings-graph-slot`),Ke=We&&We.querySelector(`:scope > #findings-body-slot`),qe=We&&(Ge?`graph`:Ke?`body`:null)===(Ie?`graph`:`body`);!Ue||!We||!z.contains(Ue)||!z.contains(We)||!qe?(Ue=dK(`header-slot`),We=Object.assign(document.createElement(`div`),{className:Le}),We.append(...Ie?[dK(`findings-graph-slot`)]:[dK(`toolbar-slot`),dK(`empty-state-slot`),dK(`findings-body-slot`)]),z.replaceChildren(Ue,We)):We.className!==Le&&(We.className=Le),Ue&&N(Me,Ue);let Je=document.querySelector(`#toolbar-slot`);Je&&N(Re,Je);let Ye=document.querySelector(`#empty-state-slot`);Ye&&N(ze,Ye);let Xe=document.querySelector(`#findings-body-slot`);if(Xe&&N(Be,Xe),Pe){let e=document.querySelector(`#findings-graph-slot`);if(e){let t={extraTopRow:A`<view-mode-buttons modes="kanban,focus,table,list,grouped,graph"></view-mode-buttons>`,triageCounts:o,triageStates:[`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`]};ET(e,Pe,t,kG,AG)}}if(JG){let e=z.querySelector(`.finding-table-slot`);e&&(XG||=document.createElement(`finding-table`),XG.items=JG,XG.selectedGid=F.tableSelectedGid,XG.parentNode!==e&&e.append(XG))}DG(),document.title=`DeepView \u2014 ${te||`no analyzer`}`,I()&&G?.replaceFindingRoute(SH(He,F))}var PK=new Map,FK=new Map,IK=new Map,LK=new WeakMap;async function RK(e){try{let t=await pl(e);return t?Qt(t,e):null}catch{return null}}var zK=null;function BK(e){let t=new Map(e.filter(e=>e&&!e.error).map(e=>[e.integrity,e]));return zK=t.size>0?{bundles:t}:null,zK}function VK(e){zK===e&&(zK=null)}function HK(e,t=()=>!0){let n=zK?.bundles.get(e);return!n||!t(n)?null:(zK.bundles.delete(e),zK.bundles.size===0&&(zK=null),n)}function UK(e,t,{sources:n=!0}={}){if(!t.managedId&&I())return Promise.reject(new DOMException(`Local bundle closed`,`AbortError`));let r=n?PK:FK,i=t.name.toLowerCase().endsWith(`.map`)?`sourcemap`:`stasis`,a=F.bundleDetails;if(a?.integrity===e&&a.kind===i&&a.managedId===t.managedId&&!a.error&&(!n||!a.metadataOnly))return Promise.resolve(a);let o=HK(e,e=>e.kind===i&&e.managedId===t.managedId&&(!n||!e.metadataOnly));if(o)return Promise.resolve(o);let s=`${t.managedId??`local`}:${e}:${i}`,c=t.managedId&&n?Q_():void 0,l=r.get(s);if(l&&l.signal===c)return l.job;let u=(async()=>{if(t.managedId)try{let r=n?$t(await yx(t.managedId,{signal:c}),{integrity:e,kind:i,size:t.size}):Qt(await vx(t.managedId),e);return r.managedId=t.managedId,r}catch(n){if(n.name===`AbortError`)throw n;return{integrity:e,kind:i,size:t.size,managedId:t.managedId,error:n.message}}if(!n){let n=await RK(e);return n?.kind===i&&!n.stale?n:UK(e,t)}let[r,a]=await Promise.all([KK(e,t),RK(e)]);if(!r.error){let t=a?.kind===r.kind&&!a.stale;t&&(r.fileHashes=a.fileHashes,r.fileSizes=a.fileSizes,r.lineCounts=a.lineCounts),t||Zt(r).then(t=>ml(e,t)).catch(()=>{})}return r})();return r.set(s,{job:u,signal:c}),u.finally(()=>{r.get(s)?.job===u&&r.delete(s)}).catch(()=>{}),u}function WK(e,t=F.currentView===`bundles`?F.bundleDetailsTab:`overview`,{workspaceId:n=null}={}){let r=F.bundleDetails,i=F.bundleCodeFileRequest,a=i?.bundle===F.selectedBundle&&(!r||r.metadataOnly===!0&&!r.sourceError),o=F.currentView===`bundles`&&F.bundleDetailsTab===`code`&&t===`code`?F.bundleSourceFile??(a?i.path:null):null;$_(),F.currentView=`bundles`,F.selectedBundle=e,F.selectedBundleWorkspace=n,F.bundleDetails=null,F.bundleSourceFile=null,F.bundleCodeHistory=null,F.bundleCodeFileRequest=o?{bundle:e,path:o}:null,F.bundleCompare=null,F.bundleSourceFindingIdx=null,F.bundleCodeSearchQuery=``,F.bundleCodeSearchMode=`files`,F.bundleSearchQuery=``,F.bundleSearchRegex=!1,F.bundleSearchCase=!1,F.bundleSearchContext=!0,F.bundleDetailsTab=t??`overview`,w.showAll=!0,F.shownTriage=null}function GK(e,{preserveSource:t=!1}={}){qt(F.bundleDetailsTab,F.bundleSourceFile)&&!qt(e,t?F.bundleSourceFile:null)&&$_(),F.bundleDetailsTab=e,F.bundleCodeFileRequest=null,t||(F.bundleSourceFile=null,F.bundleCodeHistory=null),F.bundleSourceFindingIdx=null}async function KK(e,t){try{let n=await fl(e);if(I())throw new DOMException(`Local bundle closed`,`AbortError`);let r=t.name.toLowerCase().endsWith(`.map`),i=r?`sourcemap`:`stasis`;try{if(r)return $t(ga(n),{integrity:e,kind:i,size:n.byteLength});let t=ga(await Xm(n,()=>!I())),a=Nt.parse(t);return{integrity:e,kind:i,size:n.byteLength,bundle:a}}catch(t){if(t.name===`AbortError`)throw t;return{integrity:e,kind:i,size:n.byteLength,error:t.message}}}catch(t){if(t.name===`AbortError`)throw t;return{integrity:e,error:t.message,size:0}}}function qK(e){if(!(e?.managedId||!e?.json&&!e?.bundle)){if(e.fileHashes){Jf(e.integrity,e.fileHashes);return}(async()=>{try{let t=await Jt(e);if(Jf(e.integrity,t),F.bundleDetails!==e)return;e.fileHashes=t,X()}catch{}})()}}function JK(e){if(ep(e))return Promise.resolve();if(IK.has(e))return IK.get(e);let t=(F.bundles??[]).find(t=>t.integrity===e);if(!t||t.managedId)return Promise.resolve();let n=(async()=>{let t=await RK(e);if(t?.json||t?.bundle)try{Jf(e,await Jt(t))}catch{}})();return IK.set(e,n),n.finally(()=>{IK.get(e)===n&&IK.delete(e)}).catch(()=>{}),n}async function YK(e,t=()=>!0){let n=new Set(e);if(n.size!==0){await new Promise(e=>{let t=()=>setTimeout(e,0);typeof requestAnimationFrame==`function`?requestAnimationFrame(t):t()});for(let e of n){if(!t())return;await JK(e)}}}async function XK(e){let t=(F.bundles??[]).find(t=>t.integrity===e);if(!t)return;let n;try{n=await UK(e,t,{sources:qt(F.bundleDetailsTab,F.bundleSourceFile)})}catch(e){if(e.name===`AbortError`)return;throw e}F.selectedBundle!==e||t.managedId&&!F.bundles.includes(t)||(F.bundleDetails=n,X(),qK(n),t.managedId||Bf().catch(()=>{}))}function ZK(e=F.bundleDetails){if(e?.sourceError)return Promise.resolve(null);if(!e?.metadataOnly)return Promise.resolve(e);let t=e.managedId?Q_():void 0,n=LK.get(e);if(n&&n.signal===t)return n.job;let r=(F.bundles??[]).find(t=>t.integrity===e.integrity);if(!r)return Promise.resolve(null);let i=UK(e.integrity,r).then(n=>(t?.throwIfAborted(),F.bundleDetails===e?n.error&&e.managedId?(e.sourceError=n.error,X(),null):(n.error||(n.fileHashes=e.fileHashes,n.fileSizes=e.fileSizes,n.lineCounts=e.lineCounts,n.codeStats=e.codeStats,e.edges&&(n.edges=e.edges)),F.bundleDetails=n,X(),n):n)).catch(e=>{if(e.name===`AbortError`)return null;throw e});return LK.set(e,{job:i,signal:t}),i.finally(()=>{LK.get(e)?.job===i&&LK.delete(e)}).catch(()=>{}),i}async function QK({bundleId:e,teamId:t,bundleTab:n,file:r,line:i,endLine:a,compareId:o,compareMode:s},c,l,u){let d=c.find(t=>t.managedId===e);if(!d||!l()||!I())return!1;let f=HK(d.integrity,t=>t.managedId===e),p=F.bundleDetails?.managedId===e&&F.bundleDetails.integrity===d.integrity&&!F.bundleDetails.error?F.bundleDetails:null;try{F.bundles=c,ar(),WK(d.integrity,n),n===`code`&&r!=null&&(F.bundleCodeFileRequest={bundle:d.integrity,file:r,...i==null?{}:{line:i},...a==null?{}:{endLine:a}});let e=n===`compare`&&o!=null?Fx(c,d.integrity).find(e=>e.managedId===o):null;e&&(F.bundleCompare={bundle:d.integrity,target:e.integrity,mode:ni(s)}),F.bundleDetails=f??p,F.currentManagedTeam=t,F.currentManagedReport=null,F.reports=[],document.body.classList.remove(`report-fullscreen`),X({animate:!1}),u(),document.querySelector(`#main-content`)?.scrollTo({top:0})}catch(e){return l()&&e.name!==`AbortError`&&Nx(`Couldn't open bundle: ${e.message}`,{kind:`error`}),!1}let m=F.bundleDetails,h=()=>I()&&F.currentView===`bundles`&&F.selectedBundle===d.integrity&&F.bundles.some(t=>t.managedId===e&&t.integrity===d.integrity)&&F.bundleDetails===m,g=(t,n)=>(t?.name===`AbortError`||(l()?n&&Nx(`Couldn't open bundle: ${t.message}`,{kind:`error`}):h()&&(F.bundleDetails={integrity:d.integrity,kind:d.kind,size:d.size,managedId:e,error:t.message},X())),!1),_=W(),v;for(;;){let t=Q_();try{v=await vx(e,{signal:t});break}catch(e){if(e?.name===`AbortError`&&t.aborted&&h())continue;return g(e,!1)}}try{if(v.integrity!==d.integrity)throw Error(`the metadata is for another version of this bundle`);if(h()){let t=Qt(v,v.integrity),n=f?.integrity===t.integrity?Object.assign(f,{fileHashes:t.fileHashes,fileSizes:t.fileSizes,lineCounts:t.lineCounts,codeStats:t.codeStats},t.edges?{edges:t.edges}:{}):t;n.managedId=e,F.bundleDetails=n,X({animate:!1})}return l()&&_===W()&&F.bundleDetails?.managedId===e&&F.selectedBundle===d.integrity}catch(e){return g(e,!0)}}function $K(e){let t=1/0,n=Date.now()+5e3;for(let r of e)for(let e of r.bundles??[])[`stasis`,`sourcemap`].includes(e.kind)&&e.summary==null&&(t=Math.min(t,Math.max(n,e.summaryRetryAt??0)));return t}function eq(e){let t=null,n=null,r=null;return async({generation:i,session:a,signal:o,reuse:s=!1,revision:c=null})=>{if(o.aborted)return null;let l=JSON.stringify([i,a?.id,a?.role,a?.csrfToken]);if(r!==l&&(t?.controller.abort(),t=null,n=null,r=l),n&&Date.now()<n.expiresAt&&(s||c!==null&&c===n.revision))return n.teams;if(!t||t.signal.aborted||c!==null&&t.revision!==c){t?.controller.abort(),n=null;let i=new AbortController,a=AbortSignal.any([o,i.signal]),s={controller:i,signal:a,promise:null,revision:c};t=s;let u=null;s.promise=e({fallback:null,signal:a,onRevision:e=>{u=e}}).then(e=>a.aborted||r!==l?null:(e!==null&&(n={teams:e,revision:u,expiresAt:$K(e)}),e)).finally(()=>{t===s&&(t=null)})}let u=t,d=()=>u.controller.abort();o.addEventListener(`abort`,d,{once:!0});try{let e=await u.promise;return o.aborted||u.signal.aborted?null:e}finally{o.removeEventListener(`abort`,d)}}}function tq(e){let t=String(e??``).split(/[\s\-_/.]+/u).filter(Boolean);if(t.length<2)return Array.from(t[0]??``).slice(0,2).join(``);let n=t.slice(0,2).map(e=>Array.from(e)[0]).join(``);return/^\p{Ll}/u.test(n)?n:n.toUpperCase()}var nq=`deepview-managed-session`,rq=null,iq=null,aq=null,oq=0,sq=0,cq=new Set;function lq(){return!rq&&typeof BroadcastChannel==`function`&&(rq=new BroadcastChannel(nq),rq.addEventListener(`message`,e=>{let t=e.data?.mark;if(typeof t==`string`&&(aq=t,oq++,iq!==null&&t!==iq))for(let e of cq)e()}),rq.unref?.()),rq}async function uq(e){if(!e)return`signed-out`;let t=globalThis.crypto?.subtle;if(!t)return null;let n=JSON.stringify([e.id,e.role,e.viewer?.id??null,e.csrfToken??null]);return[...new Uint8Array(await t.digest(`SHA-256`,new TextEncoder().encode(n)))].map(e=>e.toString(16).padStart(2,`0`)).join(``)}async function dq(e,t){if(e?.publicShare)return;let n=++sq,r=await uq(e);if(n!==sq||r===null||!lq())return;let i=iq===null,a=t===oq&&aq!==null&&aq!==r;if((r!==iq||a)&&(iq=r,rq.postMessage({mark:r})),a)aq=r;else if(i&&aq!==null&&aq!==r)for(let e of cq)e()}function fq(){return oq}async function pq(e){return aq===null||e?.publicShare?!1:aq!==await uq(e)}function mq(e){return lq(),cq.add(e),()=>{cq.delete(e)}}var hq=`*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:host{width:260px;flex-shrink:0;height:100%;background:var(--surface);backdrop-filter:var(--glass-blur);border-right:1px solid var(--border);display:flex;flex-direction:column;transition:width .15s ease-out;overflow:hidden}:host(.collapsed){width:32px}:host([inert]) .brand-tag,:host([inert]) .sidebar-search,:host([inert]) .sidebar-actions,:host([inert]) #file-list,:host([inert]) #sidebar-toggle,:host([inert]) #sidebar-home,:host([inert]) #sidebar-rail,:host([inert]) #encryption-toggle,:host([inert]) #storage-status{visibility:hidden}:host(.collapsed) .brand,:host(.collapsed) .sidebar-search,:host(.collapsed) #encryption-toggle,:host(.collapsed) #file-list{display:none}:host(.collapsed) .sidebar-header{padding:.5rem 0;justify-content:center}:host(.collapsed) .sidebar-actions{padding:.35rem 0;flex-direction:column;justify-content:center}:host(.collapsed) sidebar-delete-current,:host(.collapsed) #storage-status,:host(.collapsed) #sync-status .sync-label{display:none}:host(.collapsed) #sync-status{padding:.25rem;border:0}:host(.collapsed) #view-as-status,:host(.collapsed) #public-status,:host(.collapsed) .auth-login{display:none}:host(.collapsed) #auth-status[data-authed="1"]{padding:.2rem}:host(.collapsed[data-view-as]) #auth-status .user-avatar{box-shadow:0 0 0 1.5px var(--surface),0 0 0 3px var(--accent)}#sidebar-home,#sidebar-rail{display:none}:host(.collapsed) #sidebar-home{display:grid;margin:0 auto;padding:.3rem 0}:host(.collapsed) #sidebar-rail{flex:1;min-height:0;display:flex;flex-direction:column;align-items:center;gap:.2rem;padding:.35rem 0;list-style:none;overflow-y:auto;overscroll-behavior:none;scrollbar-width:none}.rail-item{width:26px;padding:.25rem 0 .2rem;display:grid;justify-items:center;gap:.15rem;background:transparent;color:var(--muted);border:0;border-radius:var(--ui-radius, 4px);font:inherit;font-size:.58rem;font-weight:600;line-height:1;white-space:nowrap;&:hover{color:var(--text);background:rgb(from var(--text) r g b / .08)}&.current{color:var(--accent);background:rgb(from var(--text) r g b / .1)}&:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}}:host([data-mode="managed"]:not([data-workspace-access])) .sidebar-search,:host([data-mode="managed"]:not([data-authenticated])) .sidebar-actions{display:none}.sidebar-header{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem .4rem;.brand{flex:1;min-width:0;display:flex;align-items:center;gap:.4rem;font-size:.95rem;font-weight:700;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;user-select:none}.brand-button{display:inline-flex;align-items:center;gap:.5rem;background:transparent;border:0;padding:0;margin:0;font:inherit;color:inherit;border-radius:var(--ui-radius, 4px);&:focus-visible{outline:2px solid var(--accent);outline-offset:2px}}.brand-tag{padding:.08rem .25rem;border:0;border-radius:var(--ui-radius, 4px);background:transparent;font:inherit;font-size:.65rem;font-weight:500;color:var(--muted);text-transform:lowercase;letter-spacing:.02em;&[role=button]{cursor:default}&[role=button]:hover{color:var(--text);background:rgb(from var(--text) r g b / .06)}&:focus-visible{outline:2px solid var(--accent);outline-offset:2px}}}@media(display-mode:window-controls-overlay){.sidebar-header{min-height:env(titlebar-area-height,0px);padding-left:max(.75rem,env(titlebar-area-x,0px));-webkit-app-region:drag;app-region:drag;.brand-button,.brand-tag,#encryption-toggle{-webkit-app-region:no-drag;app-region:no-drag}#sidebar-toggle{display:none}}}:host-context(body.theme-w95) .sidebar-header{position:fixed;z-index:1;top:calc(var(--w95-gap) + var(--w95-frame));right:calc(var(--w95-gap) + var(--w95-frame) + var(--wco-right-toolbar, 0px));left:calc(var(--w95-gap) + var(--w95-frame));height:var(--w95-title-height);min-height:0;justify-content:normal;gap:0;padding:0 20px 0 max(2px,env(titlebar-area-x,0px) - var(--w95-gap) - var(--w95-frame));background:var(--w95-title);color:#fff;.brand{display:flex;gap:4px;margin-right:4px;font-size:11px;letter-spacing:0;&:before{content:"";flex:none;width:16px;height:16px;background:url(./icon.svg) center / contain no-repeat}}.brand-button:focus-visible{outline:1px dotted #fff;outline-offset:1px}.brand-tag{padding:0;color:inherit;font-size:inherit;font-weight:inherit;letter-spacing:0;&:before{content:"- " / ""}&[role=button]:hover{color:inherit;background:none}&:focus-visible{outline:1px dotted #fff;outline-offset:1px}}:is(#encryption-toggle,#sidebar-toggle){display:grid;width:16px;height:14px;background:var(--w95-face);box-shadow:var(--w95-raised);-webkit-app-region:no-drag;app-region:no-drag;& svg{display:none}&:active{box-shadow:var(--w95-pressed)}&:focus-visible{outline:1px dotted #000;outline-offset:-4px}}#sidebar-toggle{background:var(--w95-glyph-maximize),var(--w95-face)}#encryption-toggle{background:var(--w95-glyph-unlock),var(--w95-face)}#encryption-toggle:is(.encrypted,.locked-pending){background:var(--w95-glyph-lock),var(--w95-face)}}:host-context(body.theme-w95):host(.collapsed) .sidebar-header #sidebar-toggle{background:var(--w95-glyph-restore),var(--w95-face)}:host-context(body.theme-w95) .sidebar-actions{position:fixed;z-index:1;right:calc(var(--w95-gap) + var(--w95-frame));bottom:calc(var(--w95-gap) + var(--w95-frame));left:calc(var(--w95-gap) + var(--w95-frame));height:var(--w95-status-height);flex-direction:row;justify-content:normal;gap:2px;padding:0;border-top:0;& sidebar-delete-current{display:contents}:is(button,#sync-status,#auth-status,#manage-status,#public-status){display:inline-flex;align-items:center;gap:4px;width:auto;height:100%;max-width:none;padding:0 6px;border:0;background:none;color:var(--text);box-shadow:var(--w95-status);font-size:11px;&:hover{background:none;color:var(--text)}&:active{box-shadow:inset 1px 1px #000,inset -1px -1px #fff;opacity:1}&[hidden]{display:none}}:is(#sync-status,#auth-status){order:-1}#manage-status{order:2}&:after{content:"";flex:1;order:1;align-self:stretch;box-shadow:var(--w95-status)}#sync-status .sync-label{display:inline}}#sidebar-toggle{flex-shrink:0;width:22px;height:22px;display:grid;place-items:center;background:transparent;color:var(--muted);border:0;border-radius:var(--ui-radius, 4px);padding:0;&:hover{color:var(--text);background:rgb(from var(--text) r g b / .06)}}#encryption-toggle{flex-shrink:0;width:22px;height:22px;display:grid;place-items:center;background:transparent;color:var(--muted);border:0;border-radius:var(--ui-radius, 4px);padding:0;&:hover{color:var(--text);background:rgb(from var(--text) r g b / .06)}&.encrypted{color:var(--accent)}&.locked-pending{color:light-dark(#b25b00,#f0a060);outline:1px dashed currentcolor;outline-offset:-2px}}#encryption-toggle[hidden]{display:none!important}.sidebar-search{display:flex;align-items:center;margin:0 .55rem .25rem;padding:0 .25rem 0 .55rem;background:rgb(from var(--bg) r g b / .45);border:1px solid var(--border);border-radius:var(--ui-radius, 7px);transition:background .12s,border-color .12s;-webkit-app-region:no-drag;app-region:no-drag;&:has(input:focus){border-color:var(--accent);background:rgb(from var(--text) r g b / .06)}.sidebar-search-icon{flex-shrink:0;color:var(--muted);pointer-events:none;margin-right:.4rem}& input{flex:1;min-width:0;padding:.3rem 0;background:transparent;color:var(--text);border:0;outline:none;font:inherit;font-size:.78rem;&::placeholder{color:var(--muted)}&:focus::placeholder{color:transparent}&::-webkit-search-cancel-button{display:none}}}sidebar-view-button{display:contents}sidebar-view-button[hidden]{display:none!important}.sidebar-view-btn{position:relative;flex-shrink:0;width:20px;height:20px;display:grid;place-items:center;background:transparent;color:var(--muted);border:0;border-radius:var(--ui-radius, 3px);padding:0;margin-left:2px;transition:background .12s,color .12s;sidebar-view-button+sidebar-view-button>&{margin-left:.4rem}sidebar-view-button:last-of-type>&{margin-right:.1rem}& svg{width:14px;height:14px}&:hover{color:var(--text);background:rgb(from var(--text) r g b / .08)}&.active{color:var(--accent);background:rgb(from var(--text) r g b / .1)}.view-btn-count{position:absolute;top:-4px;right:-4px;background:var(--bg);color:color-mix(in srgb,var(--muted),var(--text) 15%);font-size:8.5px;font-weight:600;border-radius:999px;padding:0 3px;min-width:11px;text-align:center;line-height:11px;font-variant-numeric:tabular-nums;pointer-events:none}&.active .view-btn-count{color:var(--accent)}}#file-list{list-style:none;flex:1;overflow-y:auto;overscroll-behavior:none;scrollbar-gutter:stable;-webkit-app-region:no-drag;app-region:no-drag;padding:0 .35rem .25rem 0;margin:0;scrollbar-width:thin;scrollbar-color:var(--border) transparent;&::-webkit-scrollbar{width:5px}&::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}}.file-group-header{display:flex;align-items:center;justify-content:space-between;padding:.45rem .35rem .2rem .55rem;font-size:.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);user-select:none;&:first-child{padding-top:.25rem}}.file-group-header.workspace-header .workspace-header-actions{display:flex;align-items:center;gap:.35rem}.workspace-add{width:18px;height:18px;display:grid;place-items:center;background:transparent;color:var(--muted);border:1px solid transparent;border-radius:var(--ui-radius, 4px);padding:0;&:hover{color:var(--text);border-color:var(--accent)}}.file-item:is(.workspace-item,.team-item){display:block;border-radius:var(--ui-radius, 0 5px 5px 0)}.workspace-heading{display:flex;align-items:stretch;gap:.15rem}.workspace-meta{display:flex;align-items:center;justify-content:space-between;gap:.35rem;padding:0 .3rem .2rem calc(2rem - 3px);color:var(--muted);font-size:.68rem;line-height:1.3;white-space:nowrap;user-select:none}.workspace-findings{min-width:0;overflow:hidden;text-overflow:ellipsis}.workspace-sections{display:inline-flex;flex-shrink:0;margin-left:auto;border:1px solid var(--border);border-radius:var(--ui-radius, 4px);overflow:hidden}.workspace-sections button{padding:.06rem .25rem;border:0;background:transparent;color:var(--muted);font:inherit;font-size:.64rem;line-height:1.4;font-variant-numeric:tabular-nums;+button{border-left:1px solid var(--border)}&:hover:not(:disabled){background:var(--surface-active);color:var(--text)}&[aria-expanded=true]{background:rgb(from var(--accent) r g b / .1);color:var(--accent)}&:disabled{background:var(--surface-active);color:var(--muted)}}.workspace-share,.workspace-export,.workspace-leave{flex-shrink:0;width:22px;align-self:center;height:22px;display:none;place-items:center;background:transparent;color:var(--muted);border:1px solid transparent;border-radius:var(--ui-radius, 4px);padding:0;&:hover:not(:disabled){color:var(--text);background:rgb(from var(--text) r g b / .06);border-color:var(--accent)}}.file-item.team-item:focus-within .workspace-share{display:grid}@media(hover:none){.file-item.team-item .workspace-share{display:grid}}.workspace-leave:hover:not(:disabled){color:var(--critical, #f87171);border-color:var(--critical, #f87171)}@media(hover:hover){.file-item.team-item:hover .workspace-share,.file-item.workspace-item:hover .workspace-share,.file-item.workspace-item:hover .workspace-export,.file-item.workspace-item:hover .workspace-leave{display:grid}}.workspace-rename-input{width:100%;box-sizing:border-box;background:var(--surface);color:var(--text);border:1px solid var(--accent);border-radius:var(--ui-radius, 3px);padding:0 .25rem;margin:-1px 0;font:inherit;font-size:.76rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;outline:none}.file-item.team-item .team-icon{flex-shrink:0;color:var(--muted)}.file-item.team-bundle-item>.file-name{display:flex;align-items:center;gap:.5rem;width:100%;box-sizing:border-box;background:none;border:0;padding:.2rem .3rem .2rem 1.3rem;font-family:inherit;font-size:.78rem;text-align:left}.file-item.team-bundle-item .file-icon{flex-shrink:0;color:var(--muted)}.file-item.team-bundle-item .file-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.76rem;line-height:14.5px}.file-item{list-style:none;position:relative}.file-item.current:after{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:3px;height:18px;background:var(--accent);border-radius:var(--ui-radius, 0 2px 2px 0);pointer-events:none}.file-item button.file-name{display:flex;align-items:center;gap:.5rem;width:100%;box-sizing:border-box;padding:.2rem .3rem .2rem .55rem;background:transparent;color:var(--text);border:1px solid transparent;border-radius:var(--ui-radius, 0 5px 5px 0);font-family:inherit;font-size:.78rem;text-align:left;&:hover{background:rgb(from var(--text) r g b / .04)}.file-icon{flex-shrink:0;color:var(--muted)}.file-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.76rem;line-height:14.5px}}.file-item:is(.workspace-item,.team-item) button.file-name{flex:1;min-width:0;padding-left:calc(.55rem - 3px)}.file-item .file-count{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;color:var(--muted);opacity:.65;font-size:.68rem;font-weight:500;font-variant-numeric:tabular-nums}.file-item.current button.file-name{background:rgb(from var(--accent) r g b / .09);border-color:rgb(from var(--accent) r g b / .16);.file-icon,.file-count{color:var(--text)}}.file-item.content-hidden button.file-name .file-label{color:var(--muted)}.file-item:is(.workspace-item,.team-item):hover{background:rgb(from var(--text) r g b / .04)}.file-item:is(.workspace-item,.team-item) button.file-name:hover{background:transparent}.file-item:is(.workspace-item,.team-item).current{background:rgb(from var(--accent) r g b / .09);border-radius:var(--ui-radius, 0 5px 5px 0);box-shadow:inset 0 0 0 1px rgb(from var(--accent) r g b / .16)}.file-item:is(.workspace-item,.team-item).current button.file-name{background:transparent;border-color:transparent}:host-context(body.theme-paper) .file-item.current{background:transparent;box-shadow:none;& button.file-name{background:transparent;border-color:transparent}.file-name:after{content:"";position:absolute;inset:0;border:1px dashed var(--border);border-left:0;pointer-events:none}}:host-context(body.theme-w95){.sidebar-search{margin:2px 2px 4px;border:0;background:#fff;box-shadow:var(--w95-sunken);&:has(input:focus){background:#fff}& input{font-size:11px}}.file-group-header{padding-top:.35rem;font-size:11px;color:#000;text-transform:none;letter-spacing:0}.file-item button.file-name{font-size:11px}.file-item.indented:before{background:none;border-left:1px dotted var(--w95-shadow)}#storage-status{border-color:#000;background:var(--w95-tooltip);color:#000;&:hover{border-color:#000;background:var(--w95-tooltip)}}#file-list{padding-right:0;scrollbar-width:auto;scrollbar-color:auto}::-webkit-scrollbar,#file-list::-webkit-scrollbar{width:16px;height:16px;background:var(--w95-dither)}::-webkit-scrollbar-thumb,#file-list::-webkit-scrollbar-thumb{background:var(--w95-face);border-radius:0;box-shadow:var(--w95-raised)}}:host-context(body.theme-w95) ::-webkit-scrollbar-button:single-button{display:block;width:16px;height:16px;background:var(--w95-arrow-down),var(--w95-face);box-shadow:var(--w95-raised)}:host-context(body.theme-w95) ::-webkit-scrollbar-button:single-button:vertical:decrement{background:var(--w95-arrow-up),var(--w95-face)}:host-context(body.theme-w95) .file-item.current{--text: #fff;--muted: var(--w95-light);&:after{display:none}&:is(.workspace-item,.team-item),&:not(.workspace-item,.team-item) button.file-name{background:var(--w95-title);border-color:transparent;box-shadow:none}}button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}@media(prefers-reduced-motion:reduce){:host,*,*:before,*:after{transition:none!important}}.file-item.indented button.file-name{padding-left:1.3rem}.file-item.indented:before{content:"";position:absolute;left:.85rem;top:0;bottom:0;width:1px;background:var(--border)}.file-item.bundle-missing>.file-name,.file-item.report-missing>.file-name{display:flex;align-items:center;gap:.5rem;padding:.2rem .3rem .2rem 1.4rem;color:var(--muted);font-size:.78rem;font-style:italic;cursor:default;.file-icon{flex-shrink:0;color:var(--muted);font-style:normal}.file-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.76rem;line-height:14.5px}}:host-context(body.theme-pink) .workspace-rename-input,:host-context(body.theme-pink) .file-item button.file-name .file-label,:host-context(body.theme-pink) .file-item.bundle-missing .file-label,:host-context(body.theme-pink) .file-item.report-missing .file-label,:host-context(body.theme-w95) .workspace-rename-input,:host-context(body.theme-w95) .file-item button.file-name .file-label,:host-context(body.theme-w95) .file-item.bundle-missing .file-label,:host-context(body.theme-w95) .file-item.report-missing .file-label{font-family:inherit}.file-item.dragging button.file-name{opacity:.4}.file-item.workspace-item.drag-over button.file-name,.file-item.indented.drag-over button.file-name{background:rgb(from var(--accent) r g b / .12);border-color:var(--accent)}.file-group-header.drag-over{background:rgb(from var(--accent) r g b / .12);border-radius:var(--ui-radius, 4px)}.sidebar-actions{padding:.35rem .55rem .45rem;border-top:1px solid var(--border);display:flex;gap:.35rem;align-items:center;justify-content:space-between;& button{background:transparent;border:1px solid var(--border);color:var(--muted);border-radius:var(--ui-radius, 4px);padding:.2rem .5rem;font-size:.72rem;font-family:inherit;-webkit-app-region:no-drag;app-region:no-drag;&:hover{color:var(--text);border-color:var(--accent)}&.danger:hover{color:var(--critical);border-color:var(--critical)}&[disabled]{opacity:.4;border-color:var(--border)!important;color:var(--muted)!important}}}sidebar-delete-current{display:contents}sidebar-delete-current[hidden]{display:none!important}sidebar-delete-current button{display:inline-flex;align-items:center;gap:.35rem;.trash-icon{flex-shrink:0}}#sync-status{display:inline-flex;align-items:center;gap:.35rem;border-color:transparent;&:hover{border-color:var(--accent)}.sync-dot{width:8px;height:8px;border-radius:50%;background:var(--muted);flex-shrink:0;box-shadow:0 0 0 1px rgb(from var(--text) r g b / .15)}&[data-status=online] .sync-dot{background:var(--green)}&[data-status=connecting] .sync-dot{background:var(--medium)}&[data-status=offline] .sync-dot{background:var(--critical)}}#sync-status[data-proxy-auth] .sync-dot{box-shadow:0 0 0 2px var(--accent)}#sync-status[data-degraded] .sync-dot{box-shadow:0 0 0 2px var(--medium)}#sync-status[hidden]{display:none}#storage-status{display:flex;align-items:center;gap:.4rem;margin:.3rem .55rem .45rem;padding:.3rem .55rem;background:rgb(from var(--medium) r g b / .12);border:1px solid rgb(from var(--medium) r g b / .3);border-radius:var(--ui-radius, 5px);color:light-dark(#b25b00,#f0a060);font-size:.72rem;font-family:inherit;cursor:default;text-align:left;-webkit-app-region:no-drag;app-region:no-drag;&:hover{background:rgb(from var(--medium) r g b / .18);border-color:rgb(from var(--medium) r g b / .5)}.storage-dot{width:7px;height:7px;border-radius:50%;background:var(--medium);flex-shrink:0}}#storage-status[hidden]{display:none}#view-as-status{display:flex;align-items:center;gap:.4rem;margin:.3rem .55rem .45rem;padding:.3rem .3rem .3rem .55rem;background:rgb(from var(--accent) r g b / .12);border:1px solid rgb(from var(--accent) r g b / .35);border-radius:var(--ui-radius, 5px);color:var(--text);font-size:.72rem;user-select:none;-webkit-app-region:no-drag;app-region:no-drag;.view-as-label{flex:1;display:grid;gap:.05rem;min-width:0}.view-as-label>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.view-as-note{color:var(--muted);font-size:.66rem}.view-as-stop{flex-shrink:0;padding:.15rem .5rem;font:inherit;font-weight:500}}#view-as-status[hidden]{display:none}#auth-status[hidden],#manage-status[hidden]{display:none!important}#auth-status{display:inline-flex;align-items:center}#auth-status[data-authed="1"]{display:inline-flex;align-items:center;gap:.4rem;max-width:12rem;padding:.2rem .35rem;border-color:transparent;border-radius:var(--ui-radius, 5px)}#auth-status[data-authed="1"]:hover{border-color:transparent;background:rgb(from var(--text) r g b / .07)}#manage-status[hidden]{display:none}#manage-status{display:inline-grid;place-items:center;width:1.8rem;height:1.8rem;padding:.25rem;border-color:transparent;color:var(--muted)}#manage-status:hover{border-color:transparent;background:rgb(from var(--text) r g b / .07)}#public-status{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:.2rem 0;color:var(--muted);font-size:.72rem;user-select:none}#public-status[hidden]{display:none}.auth-login{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text);font:inherit;font-size:.72rem;font-weight:400}.user-avatar{position:relative;flex-shrink:0;width:22px;height:22px;border-radius:50%;overflow:hidden;background:var(--accent);display:inline-grid;place-items:center;user-select:none}.user-avatar-lg{width:38px;height:38px}.user-avatar-fallback{font-size:.72rem;font-weight:600;line-height:1;color:var(--bg);text-transform:uppercase}.user-avatar-lg .user-avatar-fallback{font-size:1.05rem}.user-avatar img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.user-avatar img.broken{display:none}.user-menu[popover]{position:fixed;inset:auto;margin:0;min-width:11rem;flex-direction:column;gap:.1rem;background:var(--surface, var(--bg));border:1px solid var(--border);border-radius:var(--ui-radius, 6px);padding:.3rem;box-shadow:0 4px 14px #00000047}.user-menu[popover]:not(:popover-open){display:none}.user-menu[popover]:popover-open{display:flex}.user-card{display:flex;align-items:center;gap:.5rem;padding:.3rem .35rem .45rem;border-bottom:1px solid var(--border);margin-bottom:.2rem}.user-id{display:flex;flex-direction:column;min-width:0}.user-login{font-weight:600;font-size:.82rem;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-name{font-size:.74rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-menu-row{display:block;width:100%;text-align:left;background:transparent;border:0;border-radius:var(--ui-radius, 4px);padding:.4rem .5rem;font:inherit;font-size:.82rem;color:var(--text)}.user-menu-row.logout-row{display:inline-flex;align-items:center;gap:.4rem;font-size:.76rem}.logout-row svg{flex:0 0 auto}.user-menu-row:hover{background:rgb(from var(--text) r g b / .08)}:host-context(body.theme-w95) *{overscroll-behavior:none}
189
+ `,gq=`:is(.file-icon,.report-logo){&.brand-deepview{--brand-bg: #2563eb;--brand-fg: #fff}&.brand-claude{--brand-bg: #d97757;--brand-fg: #fff}&.brand-codex{--brand-bg: #fff;--brand-fg: #000}&.brand-vercel{--brand-bg: #000;--brand-fg: #fff}&.brand-markdown{--brand-bg: #374151;--brand-fg: #fff}&.brand-piolium{--brand-bg: #fbb829;--brand-fg: #1c1b19}.bg{fill:var(--brand-bg)}.fg{fill:var(--brand-fg)}}.file-icon:is(.brand-codex,.brand-vercel) .bg{stroke:var(--brand-fg);stroke-width:.5}.report-logo{display:grid;place-items:center;align-self:stretch;flex:0 0 20px;background:var(--brand-bg);border-right:1px solid var(--border)}
190
+ `,_q=null,vq=null,yq=!1,bq=!1,xq=0;function Sq(){let e=navigator.userAgent;return/AppleWebKit/u.test(e)&&!/Chrome\/|Chromium|Edg\/|OPR\/|Android/u.test(e)?`webkit`:/Firefox\//u.test(e)?`firefox`:`chromium`}function Cq(){return Sq()===`webkit`}function wq(e){return e>=1e9?`${(e/1e9).toFixed(1)} GB`:e>=1e6?`${(e/1e6).toFixed(1)} MB`:e>=1e3?`${(e/1e3).toFixed(1)} kB`:`${e} B`}function Tq(){if(!_q)return;if(I()||!vq||vq.persisted!==!1||!yq){_q.hidden=!0;return}_q.hidden=!1;let e=vq.usage===null||vq.quota===null?``:` Using ${wq(vq.usage)} of ${wq(vq.quota)}.`;_q.querySelector(`.storage-label`).textContent=`Storage at risk`,_q.dataset.tooltip=`Reports, bundles and triage are in best-effort storage — the browser may delete them all under disk pressure or after long inactivity. `+(Cq()?`Click for how to protect them (on Safari and iOS browsers this needs the app installed to the Home Screen or Dock).`:`Click to request persistent storage — if the browser declines, instructions for enabling it follow.`)+e}function Eq(e,t){let n=t?` (user gesture)`:``;if(e){console.info(`storage: persistent-storage request granted${n}`);return}let r=!Cq()&&location.hostname===`localhost`?` Note: plain localhost can NEVER pass — Chromium keys site importance by registerable domain (IP literals excepted) and localhost has none; for local testing use 127.0.0.1 instead.`:``;console.info(`storage: persistent-storage request not granted${n} \u2014 `+(Cq()?`Safari ties persistence to install state; add the app to the Home Screen / Dock.`:`Chromium-based browsers never prompt and silently deny origins they don't consider important; installing the app, bookmarking it, allowing notifications, or regular use flips the heuristic (re-evaluated on every request). Firefox shows a prompt instead.`)+r)}async function Dq(){if(await _X(),!_q||I()){Tq();return}let[e,t]=await Promise.all([_p(),(async()=>{try{return(await Vc()).length>0||await sl()}catch{return!1}})()]);vq=e,yq=t,Tq()}function Oq(){!_q||xq||(xq=setTimeout(()=>{xq=0,Dq()},1e3))}async function kq(){bq||(await Dq(),I()||vq?.persisted!==!1||!yq||bq)||(bq=!0,Eq(await gp(),!1),await Dq())}async function Aq(){if(vq&&vq.persisted===!1){bq=!0;let e=await gp();Eq(e,!0),e||await Oe()}await Dq()}function jq(e){_q=e,_q&&(_q.addEventListener(`click`,()=>{Aq()}),zc((e,t)=>{Oq(),t===`save`&&kq()}),kq())}function Mq(e){let t=document.querySelector(`#landing-workspaces`);if(!t)return;let n=e.filter(e=>e.reports.length>0||e.bundles?.length>0).toSorted((e,t)=>t.reports.length-e.reports.length||e.name.localeCompare(t.name)).slice(0,5);N(n.length>0?A`<nav class="landing-workspaces" aria-label="Workspaces"><div class="landing-workspace-row">${D(n,e=>e.id,e=>{let t=Dm(e),n=e.reports.filter(e=>Ru(e)!==d).length;return A`<button type="button" class="landing-workspace" data-landing-workspace="${e.id}">${k(Zi)} <span class="landing-workspace-text"><span class="landing-workspace-name">${e.name}</span> <span class="landing-workspace-count">${t?.appMode?`${t.appFindings.toLocaleString()} finding${t.appFindings===1?``:`s`} \xB7 `:``}${n.toLocaleString()} report${n===1?``:`s`}</span></span></button>`})}</div></nav>`:M,t)}var Nq=null;function Pq(e){return{reports:e.reports.filter(e=>e?.analyzer!==`links`).length,bundles:e.bundles?.length??0,repositories:new Set((e.repos??[]).map(e=>e.repoId)).size}}function Fq(e){let t=(e,t,n=`${t}s`)=>`${e.toLocaleString()} ${e===1?t:n}`,n=DH(e.app),{reports:r,bundles:i,repositories:a}=Pq(e);return[n==null?null:t(n,`finding`),r?t(r,`report`):null,i?t(i,`bundle`):null,a?t(a,`repository`,`repositories`):null].filter(Boolean).join(` · `)}function Iq(e){let{serverMode:t,session:n,sessionPending:r=!1,teamsPending:i=!1,teams:a=[],alternateMode:o=`local`,onSwitchMode:s}=e,c=document.querySelector(`#drop-zone`),l=c?.querySelector(`.managed-landing`);if(!l)return;let u=t===`managed`,d=t===`local`,f=u&&(n?n.role!==`none`&&i:r);f?Nq?Nq.options=e:Nq={options:e,elapsed:!1,timer:setTimeout(()=>{Nq.elapsed=!0,Iq(Nq.options)},1e3)}:(clearTimeout(Nq?.timer),Nq=null);let p=f&&!Nq.elapsed;c.dataset.serverMode=u?`managed`:`local`,c.setAttribute(`aria-label`,u?p?n?`Loading teams`:`Loading session`:n?.role===`none`?`No workspace access`:n?`Team findings`:`Log in`:`Drop reports here`);let m=c.querySelector(`.drop-local-copy`);if(m&&(m.textContent=d?`Review locally in your browser.`:`Review locally in your browser. Sync across devices when you need it.`),!u||p){N(M,l);return}let h=n?.role===`admin`||n?.role===`manage`,g=a.filter(e=>Object.values(Pq(e)).some(Boolean));if(Ke()&&!n){N(A`<section class="managed-login"><h1>Public link unavailable</h1><p>This link is invalid, has been revoked, or public sharing is disabled.</p></section>`,l);return}N(n==null?A`<section class="managed-login"><button type="button" class="managed-login-button" data-managed-login><svg viewBox="0 0 16 16" width="20" height="20" fill="currentColor" aria-hidden="true"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"/></svg> <span>Continue with GitHub</span></button><div class="managed-login-alternative"><span>or continue to</span> <button type="button" @click="${s}">${o} mode</button></div></section>`:n.role===`none`?A`<section class="managed-login" aria-labelledby="managed-no-access-title"><h1 id="managed-no-access-title">No workspace access</h1><p>Ask an administrator to grant access to this workspace.</p></section>`:A`<div class="managed-landing-hero"><p class="drop-eyebrow">Your security workspace</p><h1>Your team's findings, in focus.</h1><p class="drop-prompt-intro">${g.length>0?`Review the security findings shared with your account and turn them into clear next steps.`:`Reports shared with your teams will appear here.`}</p></div>${g.length>0?A`<nav class="managed-team-list" aria-label="Teams">${D(g,e=>e.id,e=>A`<button type="button" class="managed-team-button" data-managed-team="${e.id}"><span class="managed-team-icon" aria-hidden="true">${k(Zi)}</span> <span class="managed-team-copy"><strong>${e.name}</strong> <span>${Fq(e)}</span> </span><svg class="managed-team-arrow" width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><path d="m6 4 4 4-4 4"/></svg></button>`)}</nav>`:A`<p class="managed-landing-empty">No team reports are available yet.</p>`}<nav class="managed-content-links" aria-label="Content and activity">${[...h?[[`manage-bundles`,`Bundles`,Yi],[`manage-scans`,`Scans`,ta],[`manage-reports`,`Reports`,na]]:[],[`npm`,`npm packages`,Xi]].map(([e,t,n])=>A`<button type="button" class="managed-content-card" data-managed-page="${e}"><span class="managed-content-icon" aria-hidden="true">${k(n)}</span> <span>${t}</span></button>`)}</nav>${h?A`<div class="managed-landing-actions"><button type="button" class="managed-manage-button" data-managed-page="manage"><span aria-hidden="true">${k($i)}</span><span>Manage</span></button></div>`:M}`,l)}var Lq=!1,Rq=null;function zq(){if(!Lq){Rq=lc();return}Bf().catch(()=>{}),dd().catch(()=>{})}function Bq(){if(Lq)return;Lq=!0;let e=Rq;Rq=null,e!==null&&e===lc()&&zq()}async function Vq(e){await ze({workspace:e})}var Hq=class extends kv{focusInitial(){this.renderRoot.querySelector(`button.primary`)?.focus()}_onReload=()=>this._finish(`reload`);render(){return A`<dialog @close="${this._onClose}"><header><h3>Sign in to keep syncing</h3></header><p class="nwd-intro ui-hint">Triage can't reach the sync server — the connection is being redirected to an <strong>authentication proxy</strong> (for example Cloudflare Access). This usually means your access session has expired.</p><p class="nwd-note ui-hint">Reload the page to sign in again. Your triage is saved on this device, so reloading won't lose anything — or keep working offline and reload later.</p><footer class="nwd-actions"><span class="nwd-spacer"></span> <button type="button" @click="${this._onClose}">Not now</button> <button type="button" class="primary" @click="${this._onReload}">Reload page</button></footer></dialog>`}};customElements.define(`proxy-auth-dialog`,Hq);function Uq(){return new Promise(e=>{let t=document.createElement(`proxy-auth-dialog`);t.exclusive=!0;let n=(n,r)=>{t.remove(),e({shown:n,reload:r})};t.addEventListener(`resolve`,e=>n(!0,e.detail===`reload`)),t.addEventListener(`modal-conflict`,()=>n(!1,!1)),document.body.append(t)})}async function Wq(e,{openManagedReport:t,readTeam:n=bx,isCurrent:r=()=>!0}){let i=F.managedSession,a=()=>r()&&I()&&F.managedSession?.id===i?.id&&F.managedSession?.role===i?.role,o=F.managedTeams;if(!a())return null;async function s(n,r){return!a()||(F.currentManagedTeam!==n.id||F.currentManagedReport!==r)&&!await t(n,r)||!a()||F.currentManagedTeam!==n.id||F.currentManagedReport!==r?null:GC(e.id)}if(e.teamId){let t=o.find(t=>t.id===e.teamId);return!t||e.reportId&&!t.reports.some(t=>t.id===e.reportId)?null:s(t,e.reportId??null)}let c=o.flatMap(e=>e.reports.map(t=>({team:e,report:t}))),l=new Set,u=new Map;async function d(t){for(let{team:r,report:i}of t){if(!a())return null;if(l.has(`${r.id}:${i.id}`))continue;l.add(`${r.id}:${i.id}`),u.has(r.id)||u.set(r.id,await n(r.id));let t=u.get(r.id)?.find(e=>e.id===i.id);if(!a())return null;if(t==null)continue;let o=await re(JSON.stringify(t.data),i.filename);if(!a())return null;if(o?.findings.some(t=>t.id===e.id))return s(r,i.id)}return null}if(e.report){let t=await Promise.all(c.map(({report:e})=>zr(`report`,e.filename))),n=await d(c.filter((n,r)=>t[r]===e.report));if(n||!a())return n}if(e.workspace){let t=o[(await Promise.all(o.map(e=>zr(`workspace`,`managed-team:${e.id}`)))).indexOf(e.workspace)];if(t){let e=await s(t,null);if(e||!a())return e}}if(!a())return null;let f=o.find(e=>e.id===F.currentManagedTeam);if(f&&(F.currentManagedReport==null||f.reports.some(e=>e.id===F.currentManagedReport))){let t=GC(e.id);if(t)return t}return d(c)}async function Gq(e,t,n,{openReport:r,openManagedReport:i}){if(I()){let e=F.managedTeams.find(e=>e.id===F.currentManagedTeam);if(!n||!e?.reports.some(e=>e.id===n)||(F.currentManagedReport!==n||F.currentWorkspace)&&!await i(e,n)||!I()||F.currentManagedTeam!==e.id||F.currentManagedReport!==n||F.currentWorkspace)return null}else if(n||((F.currentFile!==t||F.currentWorkspace)&&await r(t),I()||F.currentFile!==t||F.currentWorkspace))return null;return GC(e)}async function Kq(e,t){if(I())return Wq(e,t);let{openReport:n,openWorkspace:r}=t,[i,a]=await Promise.all([np(e.report),tp(e.workspace)]);async function o(t){let r=WC(t,a?.id);return(F.currentFile!==t||F.currentWorkspace||F.currentReportWorkspace!==r)&&await n(t,void 0,{workspaceId:r}),GC(e.id)}if(i){let e=await o(i);if(e)return e}if(a){F.currentWorkspace!==a.id&&await r(a.id);let t=GC(e.id);if(t)return t}let s=GC(e.id);if(s)return s;let c=F.reports.map(e=>e.fileName).filter(Boolean),l=await ip(e.id,{skip:c});return l?await o(l):null}var qq=1600,Jq=`link-target`,Yq=`Couldn't find that finding in any of your reports. Import the report it came from, then open the link again.`,Xq=null,Zq=3,Qq=150,$q=5;function eJ(e){Xq!==null&&clearTimeout(Xq);for(let e of document.querySelectorAll(`.${Jq}`))e.classList.remove(Jq);e.classList.add(Jq),Xq=setTimeout(()=>{e.classList.remove(Jq),Xq=null},qq)}function tJ(e){return new Promise(t=>{let n=null,r=0,i=0,a=()=>{let o=Math.round(e.getBoundingClientRect().top);r=o===n?r+1:0,n=o,r>=Zq||++i>=Qq?t():requestAnimationFrame(a)};requestAnimationFrame(a)})}function nJ(e){let t=0,n=window.innerHeight,r=nW(e);if(r){let e=r.getBoundingClientRect();t=Math.max(t,e.top),n=Math.min(n,e.bottom)}return{top:t,bottom:n}}function rJ(e){let t=e.getBoundingClientRect();if(t.height===0)return!1;let{top:n,bottom:r}=nJ(e);if(r<=n)return!1;let i=(n+r)/2;return t.top>=n&&t.bottom<=r||t.top<=i&&t.bottom>=i}async function iJ(e){e.scrollIntoView({block:`center`,behavior:`smooth`});for(let t=0;t<$q;t++){if(await tJ(e),!e.isConnected||rJ(e))return;e.scrollIntoView({block:`center`,behavior:`instant`})}}async function aJ(e){let t=CSS.escape(e);if(F.viewMode===`table`){let t=z.querySelector(`finding-table`);if(t){try{await t.updateComplete}catch{}for(let n of t.shadowRoot?.querySelectorAll(`finding-row`)??[])if(n.group&&H(n.group)===e)return n}}if(F.viewMode===`kanban`){let e=z.querySelector(`.kanban-card[data-gid="${t}"]`);if(e)return e}return z.querySelector(`finding-card[data-gid="${t}"]`)??z.querySelector(`[data-gid="${t}"]`)}async function oJ(e,t,n=()=>!0){let r=KC(e.group,t),i=r_(r);if(i&&qg(i)&&queueMicrotask(Dd),X(),await Q({revealSelection:!0}),!n())return{ok:!1};let a=await aJ(r);return n()?a?(typeof a.ensureRendered==`function`&&await a.ensureRendered(),await iJ(a),n()?(eJ(a),{ok:!0}):{ok:!1}):{ok:!0}:{ok:!1}}async function sJ(e,{openManagedReport:t=LL,isCurrent:n=()=>!0}={}){if(!e?.id)return{ok:!1,reason:`This link is missing a finding id.`};let r=await Kq(e,{openReport:PL,openWorkspace:zL,openManagedReport:t,isCurrent:n});return n()?r?await oJ(r,e.id,n):{ok:!1,reason:I()?`Couldn't find that finding in the team reports you can access.`:Yq}:{ok:!1}}async function cJ(e,t,n=null){if(!e||!t)return{ok:!1,reason:`Missing finding id or report name.`};let r=await Gq(e,t,n,{openReport:PL,openManagedReport:LL});return r?await oJ(r,e):{ok:!1,reason:n?`Could not open that finding in "${t}". Open the team and try again.`:`Couldn't find that finding in "${t}". It may have been re-imported since this links file was written.`}}var lJ=null,Z=null,uJ=null;function dJ(e){let t=document.querySelector(`#drop-zone`);t&&(e?t.dataset.serverModePending=`true`:delete t.dataset.serverModePending)}lr();function fJ(){return Of().size}function pJ(){return kf().size}var mJ=typeof location>`u`||location.hostname.endsWith(`.github.io`)?``:`${location.protocol===`https:`?`wss:`:`ws:`}//${location.host}/api/sync`,hJ=`application/x-deepview-report`,gJ=`application/x-deepview-source-ws`,_J=`application/x-deepview-bundle`,vJ=!1,yJ=!1,bJ={default:`Reports`,"claude-security":`Claude Security`,"codex-security":`Codex Security`,deepsec:`DeepSec`,piolium:`Piolium`,"markdown-generic":`Markdown (generic)`,[d]:`Links`},xJ=[`default`,`claude-security`,`codex-security`,`deepsec`,`piolium`,`markdown-generic`,d],SJ=``,CJ=!1,wJ=new Map,TJ=``,EJ=new OH;function DJ(e,t){let n=F.currentView===`bundles`?F.selectedBundle:null,r=[`findings`,`files`,`links`].includes(F.currentView)?F.currentFile:null,i=n?`bundles`:`reports`,a=r?WC(r):null,o=e.filter(e=>n?e.bundles.includes(n):e.id===a),s=JSON.stringify([i,n||r,o.map(e=>e.id)]);if(t||s!==TJ){TJ=s;for(let e of o){let t=wJ.get(e.id)??new Set;t.add(i),wJ.set(e.id,t)}}}function OJ(e,t={}){let n=`file-item${kJ(e,t.workspaceId??null)?` current`:``}${t.indented?` indented`:``}`,r=x(e),i=Lu(e),a=Kx[Xx(e)]??Kx.default;return A`<li class="${n}" data-file="${e}" data-workspace-id="${t.workspaceId??M}" draggable="true"><button type="button" class="file-name" data-tooltip="${r}">${k(a)}<span class="file-label">${r}</span>${i===void 0?M:A`<span class="file-count">${i}</span>`}</button></li>`}function kJ(e,t){return e===F.currentFile&&t===WC(e)&&(F.currentView===`findings`||F.currentView===`files`||F.currentView===`links`)}function AJ(e,t={}){let n=`file-group-header${t.dropTarget?` default-reports`:``}`;return A`<li class="${n}" data-default-reports="${t.dropTarget?`true`:M}"><span class="group-label">${e}</span></li>`}var jJ=A`<svg viewBox="0 0 16 16" width="11" height="11" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" aria-hidden="true"><path d="M8 3.5v9M3.5 8h9"/></svg>`,MJ=A`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.35" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M8 2.5H3.5v11H8M10 5l3 3-3 3M13 8H6"/></svg>`;function NJ(){return A`<li class="file-group-header workspace-header"><span class="group-label">Workspaces</span><span class="workspace-header-actions"><button type="button" class="workspace-add" data-action="new-workspace" aria-label="Create a new workspace">${jJ}</button></span></li>`}function PJ(){let e=TH(F.managedTeams,SJ);return e.length===0?M:A`${AJ(`Teams`)} ${D(e,({team:e})=>e.id,({team:e,reports:t,bundles:n})=>{let r=e.app,i=EH(r,(e.reports??[]).filter(e=>e.analyzer!==d).length),a=EJ.shown(e.id,`reports`,i,CJ),o=EJ.shown(e.id,`bundles`,i,CJ),s=t.filter(e=>e.analyzer!==d).length,c=DH(r);return A`<li class="${`file-item team-item${RJ(e)?` current`:``}`}" data-team-id="${e.id}"><div class="workspace-heading"><button type="button" class="file-name" @click="${()=>{LL(e)}}">${ZJ}<span class="file-label">${e.name}</span></button> ${F.managed?.allowShare&&[`admin`,`manage`].includes(F.managedSession?.role)?A`<button type="button" class="workspace-share" aria-label="${`Share ${e.name} publicly`}" @click="${()=>{nx(e)}}">${eY}</button>`:M}</div>${i?A`<div class="workspace-meta">${c===null?M:A`<span class="workspace-findings">${c.toLocaleString()} finding${c===1?``:`s`}</span>`} <span class="workspace-sections" role="group" aria-label="Team files"><button type="button" data-team-section="reports" aria-expanded="${String(a)}" ?disabled="${CJ}">${s.toLocaleString()} report${s===1?``:`s`}</button> ${n.length>0?A`<button type="button" data-team-section="bundles" aria-expanded="${String(o)}" ?disabled="${CJ}">${n.length.toLocaleString()} bundle${n.length===1?``:`s`}</button>`:M}</span></div>`:M}</li>${a?D(t,e=>e.id,t=>VJ(e,t)):M} ${o?D(n,e=>e.id,t=>UJ(e,t)):M}`})}`}function FJ(e,t,n,r){return A`<li><button type="button" class="${n?`rail-item current`:`rail-item`}" aria-label="${e}" aria-current="${n?`true`:M}" data-tooltip="${e}" @click="${r}">${t}<span aria-hidden="true">${tq(e)}</span></button></li>`}function IJ(){return D(F.managedTeams??[],e=>e.id,e=>FJ(e.name,ZJ,RJ(e)||(e.reports??[]).some(t=>zJ(e,t))||(e.bundles??[]).some(t=>BJ(e,t)),()=>{LL(e)}))}function LJ(e){return D(e,e=>e.id,e=>FJ(e.name,XJ,tY(e)||e.reports.some(t=>kJ(t,e.id))||e.bundles.some(t=>KJ(t,e.id)),()=>cY(e.id)))}function RJ(e){return F.currentManagedTeam===e.id&&!!F.currentWorkspace&&[`findings`,`files`,`workspace-reports`,`workspace-bundles`,`workspace-repositories`,`workspace-dependencies`].includes(F.currentView)}function zJ(e,t){return F.currentManagedTeam===e.id&&F.currentManagedReport===t.id&&[`findings`,`links`].includes(F.currentView)}function BJ(e,t){return F.currentManagedTeam===e.id&&Lx(F)===t.id}function VJ(e,t){let n=x(t.filename),r=zJ(e,t);return A`<li class="${`file-item indented team-report-item${t.visible===!1?` content-hidden`:``}${r?` current`:``}`}"><button type="button" class="file-name" aria-label="${t.visible===!1?`${n} (hidden from teams)`:M}" data-tooltip="${n}" data-tooltip-repo="${CH(t)||M}" data-tooltip-placement="right-start" @click="${()=>{HJ(e,t)}}">${k(Kx[Zx(t.filename,t.analyzer)])}<span class="file-label">${n}</span></button></li>`}function HJ(e,t){return LL(e,t.id)}function UJ(e,t){let n=BJ(e,t);return A`<li class="${`file-item indented team-bundle-item${t.visible===!1?` content-hidden`:``}${n?` current`:``}`}"><button type="button" class="file-name" aria-label="${t.visible===!1?`${t.filename} (hidden from teams)`:M}" data-managed-bundle="${t.id}" data-managed-team="${e.id}" data-tooltip="${t.filename}" data-tooltip-repo="${CH(t)||M}" data-tooltip-bundle="${t.kind||M}" data-tooltip-built="${t.provenance===`build`?`true`:M}" data-tooltip-stats="${wH(t)||M}" data-tooltip-commit="${t.summary?.commit||M}" data-tooltip-commit-info="${it(t.commitInfo,t.summary?.commit,t.repoFullName)??M}" data-tooltip-placement="right-start">${GJ}<span class="file-label">${t.filename}</span></button></li>`}function WJ(){return A`<li class="file-group-header bundles-header" data-default-bundles="true"><span class="group-label">Bundles</span></li>`}var GJ=A`${k(Yi)}`;function KJ(e,t){return F.selectedBundle===e&&F.currentView===`bundles`&&t===F.selectedBundleWorkspace}function qJ(e,t={}){let{integrity:n,name:r}=e,i=KJ(n,t.workspaceId??null),a=`file-item bundle-item${t.workspaceId==null?``:` indented`}${i?` current`:``}`;return A`<li class="${a}" data-bundle-integrity="${n}" data-workspace-id="${t.workspaceId??M}" draggable="true"><button type="button" class="file-name" data-tooltip="${`${r}
191
+ ${n}`}">${GJ}<span class="file-label">${r}</span></button></li>`}function JJ(e,t){let n=e.slice(0,15);return A`<li class="file-item indented bundle-item bundle-missing" data-bundle-integrity="${e}" data-workspace-id="${t}" data-tooltip="Bundle bytes not on this device — drop the matching bundle to attach."><span class="file-name"><span class="file-icon" aria-hidden="true">?</span><span class="file-label"><em>missing · ${n}…</em></span></span></li>`}function YJ(e,t){return A`<li class="file-item indented report-missing" data-workspace-id="${t}" data-tooltip="Report not on this device — it re-downloads automatically if a workspace member has uploaded it."><span class="file-name"><span class="file-icon" aria-hidden="true">?</span><span class="file-label"><em>missing · ${x(e)}</em></span></span></li>`}var XJ=A`${k(Zi)}`,ZJ=A`<svg class="team-icon" viewBox="0 0 16 16" width="13" height="13" fill="currentColor" aria-hidden="true"><path d="M5.5 8a2.25 2.25 0 1 0 0-4.5 2.25 2.25 0 0 0 0 4.5Zm0 1C3.2 9 1.75 10.2 1.75 11.6V13h7.5v-1.4C9.25 10.2 7.8 9 5.5 9Zm5.25-1a2 2 0 1 0 0-4 2 2 0 0 0 0 4Zm.25 1c-.43 0-.83.05-1.2.15.86.62 1.45 1.5 1.45 2.45V13h3.25v-1.3C14.5 10.1 13.15 9 11 9Z"/></svg>`,QJ=A`<svg viewBox="0 0 16 16" width="11" height="11" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M8 2v8M5 7l3 3 3-3M3 13h10"/></svg>`,$J=A`<svg viewBox="0 0 16 16" width="11" height="11" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M9 3H4v10h5"/><path d="M7 8h7M11 5l3 3-3 3"/></svg>`,eY=A`<svg viewBox="0 0 16 16" width="11" height="11" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 9.5L9 7.5"/><path d="M9.5 5.5L10.5 4.5a2.1 2.1 0 1 1 3 3l-1 1"/><path d="M6.5 11.5L5.5 12.5a2.1 2.1 0 1 1-3-3l1-1"/></svg>`;function tY(e){return F.currentWorkspace===e.id&&[`findings`,`files`,`workspace-reports`,`workspace-bundles`].includes(F.currentView)}function nY(e,{app:t,compact:n,reports:r,bundles:i,showReports:a,showBundles:o}){let s=`file-item workspace-item${tY(e)?` current`:``}`;return A`<li class="${s}" data-workspace-id="${e.id}"><div class="workspace-heading"><button type="button" class="file-name">${XJ}<span class="file-label" .textContent="${e.name}"></span></button> <button type="button" class="workspace-share" data-action="share-workspace" aria-label="Share workspace by link">${eY}</button> <button type="button" class="workspace-export" data-action="export-workspace" aria-label="Export workspace">${QJ}</button> <button type="button" class="workspace-leave" data-action="leave-workspace" aria-label="Leave workspace">${$J}</button></div>${n?A`<div class="workspace-meta">${t?.appMode?A`<span class="workspace-findings">${t.appFindings.toLocaleString()} finding${t.appFindings===1?``:`s`}</span>`:M} <span class="workspace-sections" role="group" aria-label="Workspace files"><button type="button" data-workspace-section="reports" aria-expanded="${String(a)}" ?disabled="${CJ}">${r.toLocaleString()} report${r===1?``:`s`}</button> ${i>0?A`<button type="button" data-workspace-section="bundles" aria-expanded="${String(o)}" ?disabled="${CJ}">${i.toLocaleString()} bundle${i===1?``:`s`}</button>`:M}</span></div>`:M}</li>`}function rY(e){return!SJ||x(e).toLowerCase().includes(SJ)}var iY=(e,t)=>x(e).localeCompare(x(t));async function Q({revealSelection:e=!1}={}){await _X();let t=lc();if(Iq({serverMode:t,session:F.managedSession,teams:F.managedTeams,sessionPending:BY,teamsPending:VY,alternateMode:an(F.serverModeConfig)?`e2e`:`local`,onSwitchMode:sY}),$L(),I()){if(EJ.sync(F,e),!BY&&!VY&&!zY&&!HY&&oL({catalogOnly:!0}),F.bundles=(F.bundles??[]).filter(e=>e.managedId||e.npm||e.repository),F.storedFiles=[],Mq([]),!Z)return;N(A`${PJ()}`,uJ);let t=Z.querySelector(`#sidebar-rail`);t?.setAttribute(`aria-label`,`Teams`),t&&N(IJ(),t),Z.querySelector(`sidebar-view-button[kind="packages"]`)?.setAttribute(`hidden`,``),Z.querySelector(`sidebar-view-button[kind="repositories"]`)?.setAttribute(`hidden`,``),Z.querySelector(`#storage-status`)?.setAttribute(`hidden`,``),xY();return}if(EJ.sync({managedTeams:[]}),Z?.querySelector(`sidebar-view-button[kind="packages"]`)?.removeAttribute(`hidden`),Z?.querySelector(`sidebar-view-button[kind="repositories"]`)?.removeAttribute(`hidden`),await up(),t!==lc()){await Q();return}zq();let n=await Vc();if(t!==lc()){await Q();return}let r=R();DJ(r,e),Mq(r);let[i]=await Promise.all([ol(),...r.map(e=>zr(`workspace`,e.id))]);if(t!==lc()){await Q();return}if(F.bundles=i,F.storedFiles=n,Oq(),!Z)return;let a=new Set(n),o=new Set;for(let e of r)for(let t of e.reports)a.has(t)&&o.add(t);let s=new Map(i.map(e=>[e.integrity,e])),c=new Set;for(let e of r)for(let t of e.bundles)s.has(t)&&c.add(t);let l=new Map;for(let e of xJ)l.set(e,[]);for(let e of n){if(o.has(e)||!rY(e))continue;let t=Xx(e);l.has(t)||l.set(t,[]),l.get(t).push(e)}let u=r.filter(e=>!SJ||e.name.toLowerCase().includes(SJ)||e.reports.some(e=>rY(e))?!0:e.bundles.some(e=>{let t=s.get(e);return t&&rY(t.name)})),f=i.filter(e=>!c.has(e.integrity)&&rY(e.name));N(A`${NJ()} ${D(u,e=>e.id,e=>{let t=[],n=[];for(let r of e.reports)rY(r)&&(a.has(r)?t.push(r):n.push(r));t.sort(iY),n.sort(iY);let r=[],i=[];for(let t of e.bundles){let e=s.get(t);e?(!SJ||rY(e.name))&&r.push(e):SJ||i.push(t)}let o=vL(e)??Dm(e),c=o?.appMode??Em(e)===!0,l=wJ.get(e.id),u=!c||CJ||l?.has(`reports`)===!0,f=!c||CJ||l?.has(`bundles`)===!0,p=[...t,...n].filter(e=>Ru(e)!==d).length,m=r.length+i.length;return A`${nY(e,{app:o,compact:c,reports:p,bundles:m,showReports:u,showBundles:f})} ${u?A`${t.map(t=>OJ(t,{indented:!0,workspaceId:e.id}))}${n.map(t=>YJ(t,e.id))}`:M} ${f?A`${r.map(t=>qJ(t,{workspaceId:e.id}))}${i.map(t=>JJ(t,e.id))}`:M}`})} ${xJ.map(e=>{let t=(l.get(e)??[]).toSorted(iY),n=e==="default";return t.length===0&&!(n&&vJ)?null:A`${AJ(bJ[e]??e,{dropTarget:n})} ${t.map(e=>OJ(e))}`})} ${f.length>0||yJ?WJ():null} ${D(f,e=>e.integrity,e=>qJ(e))}`,uJ);let p=Z.querySelector(`#sidebar-rail`);p?.setAttribute(`aria-label`,`Workspaces`),p&&N(LJ(r),p);let m=Z.querySelector(`sidebar-view-button[kind="packages"]`);m&&(m.count=fJ());let h=Z.querySelector(`sidebar-view-button[kind="repositories"]`);h&&(h.count=pJ()),xY(),Ku(n,oY)}var aY=!1;function oY(){aY||(aY=!0,requestAnimationFrame(()=>{aY=!1,Q().catch(e=>console.warn(`counts repaint:`,e))}))}ko(()=>{Q()}),jm(oY);async function sY(){Z?.querySelector(`#user-menu`)?.hidePopover?.(),IY?await YY():cc()&&await qY()}function cY(e){let t=F.currentView===`findings`||F.currentView===`files`;(e!==F.currentWorkspace||!t)&&zL(e)}async function lY(e){let t=e.target.closest(`[data-team-section]`);if(t){if(CJ||t.disabled)return;let e=t.closest(`[data-team-id]`)?.dataset.teamId;e&&EJ.toggle(e,t.dataset.teamSection),await Q();return}let n=e.target.closest(`.file-item.team-item[data-team-id]`);if(n){let t=e.target.closest(`button`)?null:F.managedTeams.find(e=>e.id===n.dataset.teamId);t&&LL(t);return}let r=e.target.closest(`[data-workspace-section]`);if(r){if(CJ||r.disabled)return;let e=r.closest(`[data-workspace-id]`)?.dataset.workspaceId;if(!e)return;let t=r.dataset.workspaceSection,n=wJ.get(e)??new Set;n.has(t)?n.delete(t):n.add(t),wJ.set(e,n),await Q();return}if(e.target.closest(`[data-action="toggle-client-mode"]`)){await sY();return}if(e.target.closest(`[data-action="go-home"]`)){await UL();return}let i=e.target.closest(`[data-managed-bundle]`);if(i){G.navigate(fi({view:`bundles`,teamId:i.dataset.managedTeam,bundleId:i.dataset.managedBundle,bundleTab:F.currentView===`bundles`?F.bundleDetailsTab:`overview`},F.managedTeams));return}let a=e.target.closest(`.file-item[data-bundle-integrity]`);if(a){if(a.classList.contains(`bundle-missing`))return;let e=a.dataset.bundleIntegrity,t=a.dataset.workspaceId??null;if(F.selectedBundle===e&&F.currentView===`bundles`&&F.selectedBundleWorkspace===t)return;WK(e,void 0,{workspaceId:t}),xL(e,F.bundleDetailsTab),X(),Q(),XK(e);return}let o=e.target.closest(`sidebar-view-button`);if(o){let e=o.getAttribute(`kind`);(e===`packages`||e===`repositories`)&&(F.currentView=e,X(),Q());return}if(e.target.closest(`[data-action="new-workspace"]`)){if(I())return;let e=await me();e&&(await JI(),await iu(e),Q());return}let s=e.target.closest(`[data-action="share-workspace"]`);if(s){let e=s.closest(`[data-workspace-id]`),t=e?R().find(t=>t.id===e.dataset.workspaceId):null;t&&Be({id:t.id,name:t.name,privateKeyBase64:t.privateKey}).catch(e=>alert(`Failed to open share dialog: ${e.message}`));return}let c=e.target.closest(`[data-action="export-workspace"]`);if(c){let e=c.closest(`[data-workspace-id]`),t=e?R().find(t=>t.id===e.dataset.workspaceId):null;t&&Vq(t).catch(e=>alert(`Failed to open export dialog: ${e.message}`));return}let l=e.target.closest(`[data-action="leave-workspace"]`);if(l){let e=l.closest(`[data-workspace-id]`),t=e?R().find(t=>t.id===e.dataset.workspaceId):null;if(!t)return;let n=Array.isArray(t.reports)?t.reports:[],r;try{r=await Fp(n)}catch(e){alert(`Couldn't read reports to analyze triage impact: ${e.message}`);return}let{confirmed:i,mode:a,triage:o}=await ae({name:t.name,reportCount:n.length,bundleCount:t.bundles.length,triageImpact:r});if(!i)return;if(!R().some(e=>e.id===t.id)){alert(`Workspace "${t.name}" was removed elsewhere; nothing to leave.`);return}try{await GL(t.id,a,{triage:o})}catch(e){alert(`Failed to leave workspace: ${e.message}`)}return}let u=e.target.closest(`.file-item.workspace-item[data-workspace-id]`);if(u){let e=u.dataset.workspaceId;e&&cY(e);return}let d=e.target.closest(`.file-item[data-file]`);if(d){let e=d.dataset.file,t=F.currentView===`findings`||F.currentView===`links`,n=d.dataset.workspaceId??null;e&&(e!==F.currentFile||n!==F.currentReportWorkspace||!t)&&PL(e,void 0,{workspaceId:n});return}if(e.target.closest(`sidebar-delete-current`)){if(F.currentView===`bundles`&&F.selectedBundle){let e=F.selectedBundle,t=(F.bundles??[]).find(t=>t.integrity===e)?.name??e,n=R().filter(t=>Array.isArray(t.bundles)&&t.bundles.includes(e)).filter(t=>vh(t.id,e)).map(e=>e.id),{confirmed:r}=await ht({name:t,inRemote:n.length>0});if(!r)return;if(F.selectedBundle!==e){alert(`Active bundle changed during confirmation; aborting delete of "${t}".`);return}try{await WL({deleteFromRemoteWorkspaceIds:n})}catch(e){alert(`Failed to delete bundle: ${e.message}`)}return}if(!F.currentFile)return;let e=F.currentFile,t;try{t=await Fp([e])}catch(e){alert(`Couldn't read reports to analyze triage impact: ${e.message}`);return}let n=R().filter(t=>Array.isArray(t.reports)&&t.reports.includes(e)).filter(t=>_h(t.id,e)).map(e=>e.id),r=n.length>0,i=Qx(e)?`links file`:`report`,{confirmed:a,triage:o}=await _t({name:e,kindLabel:i,triageImpact:t,inRemote:r});if(!a)return;if(F.currentFile!==e){alert(`Active file changed during confirmation; aborting delete of "${e}".`);return}try{await BL({triage:o,deleteFromRemoteWorkspaceIds:n})}catch(e){alert(`Failed to delete ${i}: ${e.message}`)}return}if(e.target.closest(`#sync-status`)){V.status===`error`?V.dismissError():V.status===`off`?(!V.getServerUrl()&&mJ&&V.setServerUrl(mJ),V.setEnabled(!0)):V.setEnabled(!1);return}if(e.target.closest(`[data-action="manage"]`)){Z?.querySelector(`#user-menu`)?.hidePopover?.(),hX(`manage`);return}if(e.target.closest(`[data-action="view-as-stop"]`)){Z?.querySelector(`#user-menu`)?.hidePopover?.(),mx(F.managedSession?.csrfToken);return}if(e.target.closest(`[data-action="my-reviews"]`)){Z?.querySelector(`#user-menu`)?.hidePopover?.(),G.navigate({view:`reviews`});return}if(e.target.closest(`[data-action="my-profile"]`)){Z?.querySelector(`#user-menu`)?.hidePopover?.(),G.navigate({view:`profile`});return}if(e.target.closest(`[data-action="managed-logout"]`)){px(F.managedSession?.csrfToken);return}if(e.target.closest(`#sidebar-toggle`)){lJ.classList.toggle(`collapsed`);try{localStorage.setItem(`deepview.sidebarCollapsed`,lJ.classList.contains(`collapsed`)?`1`:`0`)}catch{}}}var uY={placement:`right`,gate:e=>{if(e.dataset.tooltipRepo||e.dataset.tooltipBundle)return!0;let t=e.querySelector(`.file-label`);return!t||(e.dataset.tooltip??``)!==t.textContent||t.scrollWidth>t.clientWidth}};function dY(e){CJ=e.target.value.length>0,SJ=e.target.value.trim().toLowerCase(),Q()}var fY={off:`Sync off`,online:`Online`,offline:`Offline`,connecting:`Connecting…`,error:`Sync error`};function pY(){return V.getServerUrl()||mJ?R().length>0:!1}function mY(){let e=Z?.querySelector(`#auth-status`);if(!e)return;let t=Z?.querySelector(`#manage-status`),n=Z?.querySelector(`#user-menu`),r=F.managedSession;lJ?.toggleAttribute(`data-authenticated`,r!=null),lJ?.toggleAttribute(`data-workspace-access`,r!=null&&r.role!==`none`),hY(r);let i=Z?.querySelector(`#public-status`);if(i&&(i.hidden=!r?.publicShare),e.hidden=r==null||r.publicShare===!0,r==null){t&&(t.hidden=!0),e.dataset.authed=`0`,e.removeAttribute(`popovertarget`),e.removeAttribute(`aria-label`),N(M,e),n&&N(M,n);return}if(r.publicShare){t&&(t.hidden=!0),e.removeAttribute(`popovertarget`),n&&N(M,n);return}let a=(r.login[0]??`?`).toUpperCase(),o=typeof r.name==`string`&&/\s/u.test(r.name.trim())?r.name.trim():`@${r.login}`;e.dataset.authed=`1`,e.setAttribute(`popovertarget`,`user-menu`),e.setAttribute(`aria-label`,`Account: ${r.login}`),N(A`${_Y(a,r.id)}<span class="auth-login">${o}</span>`,e),t&&(t.hidden=!I()||r.role!==`admin`&&r.role!==`manage`),n&&N(A`<div class="user-card">${_Y(a,r.id,!0)} <span class="user-id"><span class="user-login">${r.login}</span> ${r.name?A`<span class="user-name">${r.name}</span>`:M}</span></div>${r.viewer?A`<button type="button" class="user-menu-row" data-action="view-as-stop">Return to @${r.viewer.login}</button>`:M} ${r.role===`none`?M:A`<button type="button" class="user-menu-row" data-action="my-profile">Profile</button> <button type="button" class="user-menu-row" data-action="my-reviews">My reviews</button>`} <button type="button" class="user-menu-row" data-action="toggle-client-mode">${an(F.serverModeConfig)?`e2e mode`:`Local mode`}</button> <button type="button" class="user-menu-row logout-row" data-action="managed-logout">${MJ}<span>Log out</span></button>`,n)}function hY(e){let t=Z?.querySelector(`#view-as-status`);t&&(t.hidden=!e?.viewer,lJ?.toggleAttribute(`data-view-as`,e?.viewer!=null),N(e?.viewer?A`<span class="view-as-label"><span>Viewing as <strong>@${e.login}</strong></span> <span class="view-as-note">Read only · changes are not saved</span></span> <button type="button" class="view-as-stop" data-action="view-as-stop" aria-label="${`Stop viewing as ${e.login}`}">Stop</button>`:M,t))}document.addEventListener(`managed-view-only`,()=>{let e=F.managedSession;e?.viewer&&Nx(`Viewing as @${e.login} is read only: changes are not saved.`,{kind:`error`})});var gY=0;document.addEventListener(`managed-profile-change`,e=>{let t=F.managedSession;!t||t.id!==e.detail.userId||(e.detail.avatarChanged&&gY++,F.managedSession={...t,name:e.detail.name},db(F.managedSession),mY())});function _Y(e,t,n=!1){let r=`/api/avatar/${encodeURIComponent(t)}${gY?`?v=${gY}`:``}`;return A`<span class="${n?`user-avatar user-avatar-lg`:`user-avatar`}"><span class="user-avatar-fallback">${e}</span> ${sb()||F.managedSession?.role===`none`?M:A`<img alt="" src="${r}" @error="${vY}">`}</span>`}function vY(e){e.currentTarget.classList.add(`broken`)}function yY(){let e=Z?.querySelector(`.brand-tag`);if(e){let t=F.serverMode===`managed`||an(F.serverModeConfig);e.textContent=lc(),t?(e.setAttribute(`role`,`button`),e.setAttribute(`tabindex`,`0`),e.setAttribute(`aria-label`,`Switch from ${lc()} mode`)):(e.removeAttribute(`role`),e.removeAttribute(`tabindex`),e.removeAttribute(`aria-label`))}}function bY(){lJ&&(lJ.dataset.mode=lc()),I()?(Z?.querySelector(`sidebar-delete-current`)?.setAttribute(`hidden`,``),Z?.querySelector(`#encryption-toggle`)?.setAttribute(`hidden`,``),Z?.querySelector(`#auth-status`)?.removeAttribute(`hidden`)):(Z?.querySelector(`sidebar-delete-current`)?.removeAttribute(`hidden`),Z?.querySelector(`#encryption-toggle`)?.removeAttribute(`hidden`),Z?.querySelector(`#manage-status`)?.setAttribute(`hidden`,``),Z?.querySelector(`#auth-status`)?.setAttribute(`hidden`,``),Z?.querySelector(`#public-status`)?.setAttribute(`hidden`,``),Z?.querySelector(`#view-as-status`)?.setAttribute(`hidden`,``)),OX()}function xY(e){let t=Z?.querySelector(`#sync-status`);if(!t)return;if(yY(),bY(),F.serverMode===`managed`&&F.localMode){t.hidden=!0,V.setForcedOff(!0);let e=Z?.querySelector(`#auth-status`);e&&(e.hidden=!0),Z?.querySelector(`#public-status`)?.setAttribute(`hidden`,``);return}if(I()){t.hidden=!0,V.setForcedOff(!0),mY();return}if(F.serverMode===`standalone`){t.hidden=!0;let e=Z?.querySelector(`#auth-status`);e&&(e.hidden=!0);return}let n=Z?.querySelector(`#auth-status`);n&&(n.hidden=!0);let r=pY(),i=dn()!=null;if(r&&i&&V.isEnabled()&&ch().catch(e=>{console.warn(`sync: load failed`,e)}),r&&i&&!V.getServerUrl()&&mJ&&V.isEnabled()&&V.setServerUrl(mJ),V.setForcedOff(!r),!r){t.hidden=!0;return}t.hidden=!1;let a=e??V.status;t.dataset.status=a;let o=V.persistenceDegraded;t.toggleAttribute(`data-degraded`,o);let s=V.proxyAuthRequired;t.toggleAttribute(`data-proxy-auth`,s);let c=o?`Not saving to this browser right now (storage may be full, or another tab is on a newer version). Changes that haven’t synced could be lost on reload.`:s?`Can’t reach the sync server — the connection is being redirected to a sign-in proxy (e.g. Cloudflare Access). Reload the page to sign in again.`:``;c?t.dataset.tooltip=c:delete t.dataset.tooltip;let l=t.querySelector(`.sync-label`);l&&(l.textContent=fY[a]??``)}V.onStatusChange(xY);var SY=!1,CY=!1;async function wY(){if(!V.persistenceDegraded||CY||SY)return;SY=!0;let{shown:e,unloaded:t}=await Se().catch(()=>({shown:!1,unloaded:!0}));if(SY=!1,e){CY=!0;return}V.persistenceDegraded&&setTimeout(wY,t?3e4:1500)}V.onPersistenceDegraded(e=>{xY(),e?wY():CY=!1});var TY=!1,EY=!1;async function DY(){if(!V.proxyAuthRequired||EY||TY)return;TY=!0;let{shown:e,reload:t}=await Uq();if(TY=!1,!e){V.proxyAuthRequired&&setTimeout(DY,1500);return}EY=!0,t&&location.reload()}V.onProxyAuthRequired(e=>{xY(),e?DY():EY=!1});function OY(e){if(e.target.closest(`[data-workspace-section], [data-action]`))return;let t=e.target.closest(`.file-item.workspace-item`);if(!t)return;let n=t.querySelector(`.file-label`);if(!n||n.querySelector(`input`))return;let r=t.dataset.workspaceId,i=R().find(e=>e.id===r);if(!i)return;e.preventDefault();let a=document.createElement(`input`);a.type=`text`,a.value=i.name,a.className=`workspace-rename-input`,n.textContent=``,n.append(a),a.focus(),a.select();let o=!1,s=async e=>{if(!o){o=!0;try{e&&await ou(r,a.value)}catch(e){alert(`Failed to rename workspace: ${e.message}`)}finally{n.contains(a)&&(n.textContent=R().find(e=>e.id===r)?.name??i.name),Q()}}};a.addEventListener(`keydown`,e=>{e.key===`Enter`?(e.preventDefault(),s(!0)):e.key===`Escape`&&(e.preventDefault(),s(!1))}),a.addEventListener(`blur`,()=>s(!0)),a.addEventListener(`click`,e=>e.stopPropagation()),a.addEventListener(`dblclick`,e=>e.stopPropagation())}function kY(){for(let e of Z.querySelectorAll(`.drag-over`))e.classList.remove(`drag-over`)}function AY(e){return e.dataTransfer.types.includes(hJ)||e.dataTransfer.types.includes(_J)}function jY(e){let t=e.target.closest(`.file-item[data-bundle-integrity]`);if(t){if(t.classList.contains(`bundle-missing`)){e.preventDefault();return}let n=t.dataset.bundleIntegrity;e.dataTransfer.effectAllowed=`move`,e.dataTransfer.setData(_J,n),e.dataTransfer.setData(gJ,t.dataset.workspaceId??``),e.dataTransfer.setData(`text/plain`,n),t.classList.add(`dragging`),yJ=!0,Q();return}let n=e.target.closest(`.file-item[data-file]`);n&&(e.dataTransfer.effectAllowed=`move`,e.dataTransfer.setData(hJ,n.dataset.file),e.dataTransfer.setData(gJ,n.dataset.workspaceId??``),e.dataTransfer.setData(`text/plain`,n.dataset.file),n.classList.add(`dragging`),vJ=!0,Q())}function MY(){for(let e of Z.querySelectorAll(`.dragging`))e.classList.remove(`dragging`);kY(),(vJ||yJ)&&(vJ=!1,yJ=!1,Q())}function NY(e){if(!AY(e))return;e.preventDefault();let t=e.target.closest(`[data-workspace-id]`),n=Z.querySelector(`.dragging`)?.closest(`[data-workspace-id]`)?.dataset.workspaceId??null,r=t&&n&&t.dataset.workspaceId===n||!t&&!n;if(e.dataTransfer.dropEffect=r?`none`:`move`,kY(),!r){if(t){let e=t.dataset.workspaceId;for(let t of Z.querySelectorAll(`[data-workspace-id="${CSS.escape(e)}"]`))t.classList.contains(`dragging`)||t.classList.add(`drag-over`)}else{let t=e.dataTransfer.types.includes(_J)?`[data-default-bundles]`:`[data-default-reports]`,n=Z.querySelector(t);n&&n.classList.add(`drag-over`)}}}function PY(e){Z.contains(e.relatedTarget)||kY()}async function FY(e){if(!AY(e))return;e.preventDefault(),e.stopPropagation(),kY();let t=e.target.closest(`[data-workspace-id]`),n=t?t.dataset.workspaceId:null,r=e.dataTransfer.getData(gJ)||null;if(e.dataTransfer.types.includes(_J)){let t=e.dataTransfer.getData(_J);if(!t)return;if(r&&r!==n&&vh(r,t)){let e=(F.bundles??[]).find(e=>e.integrity===t)?.name??t,n=R().find(e=>e.id===r),{confirmed:i}=await yt({name:e,workspaceName:n?.name??``});if(!i)return;try{await Rh(r,t)}catch(t){console.warn(`Failed to remove '${e}' from source workspace ${r} remote:`,t)}}n&&await vu(t,n),r&&r!==n&&await yu(t,r),Q();return}let i=e.dataTransfer.getData(hJ);if(i){if(r&&r!==n&&_h(r,i)){let e=R().find(e=>e.id===r),{confirmed:t}=await xt({name:i,workspaceName:e?.name??``});if(!t)return;try{await Lh(r,i)}catch(e){console.warn(`Failed to remove '${i}' from source workspace ${r} remote:`,e)}}n&&await hu(i,n),r&&r!==n&&await gu(i,r),F.currentWorkspace&&(F.currentWorkspace===n||F.currentWorkspace===r)?await zL(F.currentWorkspace):Q()}}var IY=null,LY=null,$=0,RY=0,zY=null,BY=!0,VY=!0,HY=!1,UY=null,WY=null,GY;function KY(){let e=GY;return GY=void 0,e}async function qY({forgetLastView:e=!0,resetNavigation:t=!0}={}){G.reset({force:t}),UY?.remove(),UY=null;let n=++$;if(VY=!0,HY=!1,lb(),Kv(),QI(),zI(),oh(F.serverMode!==`e2e`),V.setForcedOff(!0),V.setProtocolLocked(F.serverMode!==`e2e`||!!IY),HL({forgetLastView:e}),F.triage.clear(),I()){let e=ZY();if(sb()&&(await e,n!==$))return}else{if(F.managedSession=null,F.managedTeams=[],await Ga(),n!==$||(await Md(),n!==$))return;Ql()}document.dispatchEvent(new CustomEvent(`managed-client-mode-change`)),$L(),yY(),xY(V.status),X(),await Q()}async function JY(e){if(e!==void 0&&!$e(e))throw TypeError(`Unknown managed preview role: ${e}. Expected ${Ze.join(`, `)}.`);if(await _X(),e===void 0&&(IY||I()))return;let t=$,n=e===void 0?null:await K();t===$&&(IY??={serverMode:F.serverMode,serverModeConfig:F.serverModeConfig,serverModeSelection:F.serverModeSelection,localMode:F.localMode,managed:F.managed},n&&n.setPreviewRole(e),F.serverMode=`managed`,oc(!1),F.managedSession=null,F.managedTeams=[],await qY({forgetLastView:!1}))}async function YY(){let e=IY,t=LY;IY=null,LY=null,cb(),Object.assign(F,e),await qY({forgetLastView:!1}),t&&XY(t)}function XY(e,{runtime:t=!0}={}){if(IY){LY=e;return}dJ(!1);let n=dn()!=null,r=I(),i=F.serverMode;Ke()&&e.managed&&(F.serverModeSelection=`managed`),sc(e.mode),Ke()&&e.managed&&oc(!1),I()||(GY=void 0);let a=i!==F.serverMode;F.managed=e.managed;let o=t&&F.githubNewIssueLabels!==(e.githubNewIssueLabels??``);if(t&&(F.githubNewIssueLabels=e.githubNewIssueLabels??``),t&&(F.deepviewScanServer=e.mode===`managed`?null:e.deepviewScanServer??null),$L(),oh(F.serverMode!==`e2e`),V.setProtocolLocked(F.serverMode!==`e2e`),fn(e),r!==I()){qY({forgetLastView:!1,resetNavigation:n&&!Ke()&&!on(e.mode,location.pathname)}).catch(e=>console.warn(`client mode transition:`,e));return}xY(V.status),a&&F.serverMode===`e2e`&&pY()&&V.isEnabled()&&ch().then(e=>{if(e&&F.serverMode===`e2e`)for(let t of e.triageSync.openSessions)e.openWorkspace(t.workspaceId)}).catch(e=>console.warn(`sync: resume failed`,e)),a&&Q(),o&&X({animate:!1}),I()&&ZY()}function ZY({keepTeams:e=!1,again:t=!1}={}){if(!t&&zY?.generation===$)return zY.promise;BY=!0;let n={generation:$,promise:null};return zY=n,n.promise=QY({keepTeams:e}).finally(()=>{zY===n&&(zY=null,Q())}),n.promise}async function QY({keepTeams:e=!1}={}){let t=$,n=++RY,r=()=>t===$&&n===RY&&I();try{let t=F.managedSession,n={},i=KY(),a=i===void 0?fq():void 0,o=await gb({fallback:n,sent:i});if(!r())return;if(o===n&&await pq(t)){r()&&dX===null&&mX(0);return}let s=o===n?t:o;if(o!==n&&!sb()&&await dq(s,a),!r())return;F.managedSession=s,BY=!1,(!t||t.id!==s?.id||t.role!==s?.role)&&(VY=!0),Q(),db(s),t&&(t.id!==s?.id||t.role!==s?.role)?(F.managedTeams=[],F.bundles=[],QI(),zI(),G.reset(),UL({history:!1})):Object.hasOwn(ii,F.currentView)&&aX(F.currentView)&&X({animate:!1}),mY(),RI(),document.querySelector(`base`)||(UY=document.createElement(`base`),UY.href=`/`,document.head.prepend(UY));let c=e&&t?.id===s?.id&&t?.role===s?.role&&$I()?null:WY=nX(r,{signal:new AbortController().signal}).finally(()=>{WY===c&&(WY=null)}),l=G.active&&Object.hasOwn(ii,F.currentView)&&!aX(F.currentView)?G.navigate({view:aX(`manage`)?`manage`:`home`},{replace:!0}):s?G.start(cX,{onCancel:sX}):null;await Promise.all([c,l])}catch(e){console.warn(`managed: session probe failed:`,e)}finally{r()&&(BY||VY)&&(BY=!1,VY=!1,Q())}}ZI((e,t,n)=>nX(e,{strict:!0,signal:t,revision:n}));var $Y=eq(_b);function eX(e){return WY??nX(e,{reuse:!0})}var tX=0;async function nX(e,{strict:t=!1,signal:n=Q_(),reuse:r=!1,revision:i=null}={}){let a=$,o=F.managedSession,s=await $Y({generation:a,session:o,signal:n,reuse:r,revision:i}),c=s??(t?null:F.managedTeams);if(n.aborted||c===null||!e()||a!==$||!I())return!1;let l=F.managedTeams.find(e=>e.id===F.currentManagedTeam)?.name,u=fb(c);F.managedTeams=c;let d=s===null?tX:++tX;VY=!1;let f=Lx(F);if(s!==null&&f&&!HY){let t=W(),r=()=>e()&&!n.aborted&&!HY&&d===tX&&t===W()&&a===$&&F.managedSession?.id===o?.id&&F.managedSession?.role===o?.role&&I()&&Lx(F)===f,i;try{i=await Gx(F,c,{fetchCatalog:()=>vb({signal:AbortSignal.any([n,Q_()])}),isCurrent:r,render:()=>X({animate:!1}),replaceRoute:e=>G.replaceRoute(e)})}catch(t){return r()?(t.name!==`AbortError`&&Nx(`Couldn't refresh bundle access: ${t.message}`,{kind:`error`}),Q(),!1):e()}if(!r())return e();if(!i){iX=null;let t=UL({history:!1}),n=W();return await t,n===W()&&a===$&&e()&&F.managedSession?.id===o?.id&&F.managedSession?.role===o?.role&&G.replaceRoute({view:`home`}),e()}}if(Wx(F,c,u)){let n=c.find(e=>e.id===F.currentManagedTeam),r=n&&(F.currentManagedReport===null||n.reports.some(e=>e.id===F.currentManagedReport))?fi({view:F.currentView===`links`?`findings`:F.currentView,teamId:n.id,reportId:F.currentManagedReport},c):null;iX=null;let i=UL({history:!1}),s=W();if(await i,t)return s===W()&&a===$&&F.managedSession?.id===o?.id&&F.managedSession?.role===o?.role&&I()&&await G.navigate(r??{view:`home`},{replace:!0}),e();if(!e())return!1}if(!HY&&[`workspace-reports`,`workspace-bundles`,`workspace-repositories`,`workspace-dependencies`].includes(F.currentView)&&!c.some(e=>e.id===F.currentManagedTeam)){let t=UL({history:!1}),n=W();return await t,n===W()&&a===$&&e()&&F.managedSession?.id===o?.id&&F.managedSession?.role===o?.role&&G.replaceRoute({view:`home`}),e()}return!HY&&(F.currentWorkspace||F.bundleDetails?.npm||l!==c.find(e=>e.id===F.currentManagedTeam)?.name)&&X({animate:!1}),Q(),!0}var rX=new Set([`admin-users`,`manage-repos`,`manage-repo-risk`,`manage-teams`,`manage-import`,`manage-deduplication`]),iX=null;function aX(e){let t=F.managedSession?.role;return e===`manage-links`&&!F.managed?.allowShare?!1:[`admin`,`manage`].includes(t)&&(!rX.has(e)||t===`admin`)}var oX=0;function sX(){++oX,HY=!1,$_();let e=$;eX(()=>e===$&&I())}async function cX(e,t){let n=++oX;HY=!0;try{return await lX(e,t)}finally{n===oX&&(HY=!1,Q())}}async function lX(e,t){let n=iX===W()?iX:null;if($_(),([`findings`,`files`,`bundles`,`workspace-reports`,`workspace-bundles`,`workspace-repositories`,`workspace-dependencies`].includes(e?.view)||e?.finding)&&(!await eX(t)||!t()))return!1;let r=[];if(e?.view===`bundles`&&e.teamSlug==null&&(!aX(`manage-bundles`)||(r=await vb(),!t()||!I()))||(e=di(e,F.managedTeams,r),!e))return!1;let i=n!==null&&iX===n&&F.currentManagedTeam===e.teamId&&F.currentManagedReport===e.reportId;if(!t()||!I()||e.view!==`home`&&(!F.managedSession||F.managedSession.role===`none`))return!1;if(e.finding){let n=await sJ({...e.finding,teamId:e.teamId,reportId:e.reportId},{openManagedReport:(e,t)=>LL(e,t,{history:!1}),isCurrent:t});return t()?n.ok?(iX=W(),oL(),fi({view:`findings`,teamId:F.currentManagedTeam,reportId:F.currentManagedReport,finding:{id:e.finding.id}},F.managedTeams)):(n.reason&&Nx(n.reason),!1):!1}if([`workspace-reports`,`workspace-bundles`,`workspace-repositories`,`workspace-dependencies`].includes(e.view))return IL(e.teamId,e.view.slice(10),{history:!1,tab:e.dependencyTab??`pulls`});if(e.view===`bundles`){let n=e.teamId==null?r.map(Ix):Ux(F.managedTeams);if(!await QK(e,n,t,Q))return!1;let{compareId:i,compareMode:a,...o}=e;return fi({...o,bundleTab:F.bundleDetailsTab,...Bx(F)},F.managedTeams,r)}if(e.view===`home`)return UL({history:!1});if(e.view===`npm`)return Kj(e,t,Q);if(e.view===`repository-code`)return rt(F.managedSession)&&iN(e,t,Q);if(e.view===`reviews`||e.view===`profile`)return!F.managedSession.publicShare&&(ar(),F.currentView=e.view,F.profileLinkError=e.linkError??null,F.currentManagedTeam=null,F.currentManagedReport=null,document.body.classList.remove(`report-fullscreen`),X({animate:!1}),Q(),e);if(e.view===`manage-deduplication`&&e.linkId)return aX(e.view)&&await FL(e.linkId);if(Object.hasOwn(ii,e.view))return hX(e.view,{...e,history:!1});let a=F.managedTeams.find(t=>t.id===e.teamId);return!a||!i&&!await LL(a,e.reportId,{history:!1})||!t()?!1:(F.currentView!==e.view&&ar(),F.currentView=F.currentLinks?`links`:e.view,document.body.classList.remove(`report-fullscreen`),X({animate:!1}),iX=W(),oL(),Q(),document.querySelector(`#main-content`)?.scrollTo({top:0}),fi({...e,view:F.currentView===`links`?`findings`:F.currentView},F.managedTeams))}document.addEventListener(`managed-bundle-open`,e=>{if(I()&&typeof e.detail?.id==`string`){let t=Ix(e.detail),n=F.managedTeams,r=n.find(e=>e.id===F.currentManagedTeam&&e.bundles?.some(e=>e.id===t.managedId))??n.find(e=>e.bundles?.some(e=>e.id===t.managedId));G.navigate(Rx(n,t,r?.id,F.currentView===`bundles`?F.bundleDetailsTab:`overview`))}}),document.addEventListener(`managed-import-complete`,()=>{ZY()});var uX=[5e3,15e3,45e3,6e4],dX=null,fX=0;async function pX(e=0){clearTimeout(dX),dX=null;let t=++fX;!I()||sb()||(await ZY({again:!0}),t===fX&&await pq(F.managedSession)&&t===fX&&mX(e))}function mX(e){clearTimeout(dX),dX=setTimeout(()=>{pX(e+1)},uX[Math.min(e,uX.length-1)])}mq(()=>{pX()}),document.addEventListener(`managed-feed-closed`,()=>{BY=!0,QI(),zI(),UL({history:!1}).then(()=>ZY()),Nx(`Workspace access changed. Refreshing your session.`)});async function hX(e,t={}){if(t.history!==!1&&I()&&(G.active||await ZY(),G.active))return G.navigate({view:e,...t.actor?{actor:t.actor}:{},...t.bundleId?{bundleId:t.bundleId}:{},...[`link`,`dependencies`].includes(t.scanMode)?{scanMode:t.scanMode}:{},...t.linkId?{linkId:t.linkId}:{}});if(!Object.hasOwn(ii,e)||!I()||!aX(e))return!1;let n=$_(),r=$;try{let t=await K();e===`manage-import`&&aX(e)&&await t.loadWorkspaceImportPage()}catch(t){return console.warn(`${e}: managed bundle load failed:`,t),!1}return r!==$||n!==W()||!I()||!aX(e)?!1:(F.currentView=e,F.scanSelection=e===`manage-scans`?t.scanMode===`link`?{mode:`report`,reportMode:`link`}:t.bundleId?{bundleId:t.bundleId,...t.scanMode===`dependencies`?{mode:`dependencies`}:{}}:null:null,F.bundleCreationRepoId=e===`manage-bundles`?t.createRepoId??null:null,X({animate:!1}),Q(),ZY({keepTeams:!0}),document.querySelector(`#main-content`)?.scrollTo({top:0}),e===`manage-history`&&document.dispatchEvent(new CustomEvent(`managed-history-filter`,{detail:{actor:t.actor??``},bubbles:!0,composed:!0})),!0)}document.addEventListener(`managed-notice`,e=>Nx(e.detail.message,{kind:`error`})),document.addEventListener(`managed-admin-navigate`,e=>{let t=e.detail?.view,n=e.detail?.actor;typeof t==`string`&&hX(t,{actor:n,scanMode:e.detail?.scanMode,linkId:e.detail?.linkId})}),document.addEventListener(`managed-repository-code-open`,e=>{let{repoId:t,repo:n=null,path:r=``}=e.detail??{};I()&&Number.isSafeInteger(t)&&t>0&&qM({repoId:t,repo:typeof n==`string`&&n?n:null,path:typeof r==`string`?r:``})});var gX;function _X(){return gX??=yX().then(()=>document.querySelector(`app-sidebar`)?.removeAttribute(`inert`))}function vX(){let e=ln();return GY=un(e).then(e=>e?.session),e}async function yX(){let e=dn();if(e){sc(e.mode),F.managed=e.managed,vX().then(e=>{if(e&&e!==`standalone`)return XY(e)}).catch(e=>console.warn(`server mode revalidation:`,e));return}dJ(!nn());let t=vX(),n=await un(t,nn()?0:3e3),r=dn();if(r)return n&&n!==`standalone`?XY(n):XY(r,{runtime:!1});if(n&&n!==`standalone`)return XY(n);n===`standalone`&&rn(),F.serverMode=`standalone`,F.serverModeConfig=null,F.serverModeSelection=null,oc(n===null),oh(!0),dJ(!1),xY(V.status),Q(),n===null&&t.then(e=>{let t=dn(),n=e&&e!==`standalone`?e:t??e;if(n===`standalone`){if(rn(),IY){IY.serverMode=`standalone`,IY.serverModeConfig=null,IY.serverModeSelection=null,IY.localMode=!1;return}return oc(!1),xY(V.status),Q()}if(n)return XY(n,{runtime:n!==t})}).catch(e=>console.warn(`server mode probe:`,e))}function bX(){let e=Z?.querySelector(`#user-menu`),t=Z?.querySelector(`#auth-status`);!e||!t||e.addEventListener(`beforetoggle`,n=>{if(n.newState!==`open`)return;let r=t.getBoundingClientRect();e.style.left=`${Math.round(r.left)}px`,e.style.bottom=`${Math.round(window.innerHeight-r.top+6)}px`,e.style.top=`auto`,e.style.right=`auto`})}function xX(e){lJ=e,Z=e.renderRoot,uJ=Z.querySelector(`#file-list`),kX(Z.querySelector(`#encryption-toggle`)),jq(Z.querySelector(`#storage-status`)),Z.addEventListener(`click`,lY),Z.addEventListener(`keydown`,e=>{(e.key===`Enter`||e.key===` `)&&e.target.closest?.(`[data-action="toggle-client-mode"]`)&&(e.preventDefault(),lY(e))}),Z.addEventListener(`dblclick`,OY),Z.addEventListener(`dragstart`,jY),Z.addEventListener(`dragend`,MY),Z.addEventListener(`dragover`,NY),Z.addEventListener(`dragleave`,PY),Z.addEventListener(`drop`,FY),cr(Z,uY),Z.querySelector(`#sidebar-search-input`)?.addEventListener(`input`,dY),bX(),xY(V.status),dn()||dJ(!nn()),Q(),V.onServerInfo(e=>{if(F.serverMode!==`e2e`)return;let t=dn(),n=t&&{...t,...F.deepviewScanServer?{deepviewScanServer:F.deepviewScanServer}:{}};return XY(cn(n,e))}),_X(),F.serverMode===`managed`&&ZY()}var SX=class extends pa{static styles=[ua(gq),ua(hq)];render(){return A`<div class="sidebar-header"><h2 class="brand"><button class="brand-button" type="button" data-action="go-home"><span class="brand-name">Triage</span></button> <span class="brand-tag" data-action="toggle-client-mode">${lc()}</span></h2><button id="encryption-toggle" type="button" hidden></button> <button id="sidebar-toggle" type="button" aria-label="toggle sidebar"><svg viewBox="0 0 16 16" width="14" height="14" fill="currentColor" aria-hidden="true"><path d="M2 4h12v1.5H2zM2 7.25h12v1.5H2zM2 10.5h12V12H2z"/></svg></button></div><button id="sidebar-home" class="rail-item" type="button" data-action="go-home" aria-label="Home" data-tooltip="Home"><svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M2.5 7.5 8 3l5.5 4.5M4 6.5V13h3V9.5h2V13h3V6.5"/></svg></button><div class="sidebar-search"><svg class="sidebar-search-icon" viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><circle cx="6.5" cy="6.5" r="4.5"/><path d="M9.7 9.7L13 13" stroke-linecap="round"/></svg> <input id="sidebar-search-input" type="search" placeholder="Search reports…" aria-label="Search reports" autocomplete="off"><sidebar-view-button kind="packages"></sidebar-view-button><sidebar-view-button kind="repositories"></sidebar-view-button></div><ul id="file-list"></ul><ul id="sidebar-rail"></ul><button id="storage-status" type="button" hidden><span class="storage-dot" aria-hidden="true"></span> <span class="storage-label"></span></button><div id="view-as-status" role="status" hidden></div><div class="sidebar-actions"><sidebar-delete-current></sidebar-delete-current><button id="sync-status" type="button" data-status="off"><span class="sync-dot" aria-hidden="true"></span> <span class="sync-label">Sync off</span></button> <button id="auth-status" type="button" hidden></button> <span id="public-status" hidden>Public access link · Read only</span> <button id="manage-status" type="button" hidden data-action="manage" aria-label="Manage">${k($i)}</button></div><div id="user-menu" popover class="user-menu"></div>`}firstUpdated(){xX(this)}};customElements.define(`app-sidebar`,SX);var CX=A`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="8" width="10" height="6" rx="1"/><path d="M5 8V5.5a3 3 0 0 1 6 0V8"/></svg>`,wX=A`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="8" width="10" height="6" rx="1"/><path d="M5 8V5a3 3 0 0 1 6 -0.5"/></svg>`,TX=null;async function EX(){if(!TX)return;if(await _X(),I()){TX.hidden=!0;return}if(!xo()){TX.hidden=!0;return}let e=yo();TX.hidden=!1;let t=bo();TX.classList.toggle(`encrypted`,e&&t),TX.classList.toggle(`locked-pending`,e&&!t),e&&t?(TX.dataset.tooltip=`Encryption on — click to disable`,TX.setAttribute(`aria-label`,`Disable encryption`),N(CX,TX)):e?(TX.dataset.tooltip=`Encryption on, locked — click to unlock`,TX.setAttribute(`aria-label`,`Unlock encrypted data`),N(CX,TX)):(TX.dataset.tooltip=`Encryption off — click to enable`,TX.setAttribute(`aria-label`,`Enable encryption`),N(wX,TX))}async function DX(){if(confirm(`Disable encryption?
193
192
 
194
193
  Your local triage and report data will be rewritten as plaintext.
195
194
 
@@ -199,7 +198,7 @@ To complete cleanup, remove the DeepView passkey from your password manager / OS
199
198
  • macOS / iOS: Settings → Passwords
200
199
  • Windows: Settings → Accounts → Sign-in options → Passkeys
201
200
  • Chrome: chrome://settings/passkeys
202
- • Hardware security key: use the vendor's management tool`)}catch(e){alert(`Could not disable encryption: ${e?.message??e}`)}}function xX(){yX()}function SX(e){if(!e||e===vX)return;vX=e;let t=!1;vX.addEventListener(`click`,async()=>{if(await uX(),!I()&&!t){t=!0;try{if(!yo()){await be();return}if(!bo()){await Nv();return}await bX()}finally{t=!1}}}),ko(yX),yX()}export{js as a,Ms as b,uo as c,yo as d,bo as e,xo as f,Co as g,ko as h,jo as i,No as j,Ro as k,Va as l,Ga as m,Ya as n,Ps as o,Is as p,Ls as q,Rs as r,Bs as s,Ks as t,Xs as u,ec as v,F as w,I as x,Vc as y,Wc as z,Gc as A,ol as B,sl as C,fl as D,vl as E,wl as F,wf as G,Vf as H,Kf as I,Ru as J,Ql as K,R as L,ru as M,cu as N,vu as O,sp as P,rd as Q,ud as R,_d as S,Dd as T,Fd as U,Rd as V,gp as W,xp as X,Sp as Y,Cp as Z,wp as _,Tp as $,kp as aa,Ap as ba,jp as ca,Kp as da,Jp as ea,zd as fa,Bd as ga,Hd as ha,Ud as ia,G as ja,zv as ka,Jh as la,Yh as ma,Uv as na,Wv as oa,Jv as pa,wy as qa,Ly as ra,zy as sa,Wy as ta,Gy as ua,Ky as va,qy as wa,Jy as xa,Yy as ya,Xy as za,nb as Aa,ab as Ba,db as Ca,pb as Da,Sb as Ea,Cb as Fa,wb as Ga,Tb as Ha,Eb as Ia,Db as Ja,Mb as Ka,Nb as La,Kb as Ma,qb as Na,Jb as Oa,Yb as Pa,Xb as Qa,Zb as Ra,Qb as Sa,$b as Ta,tx as Ua,nx as Va,px as Wa,mx as Xa,hx as Ya,Sx as Za,Cx as _a,wx as $a,Tx as ab,Ex as bb,tW as cb,rW as db,Wx as eb,Jx as fb,Zm as gb,z as hb,Qm as ib,$m as jb,eh as kb,Ov as lb,kv as mb,Av as nb,Zx as ob,$x as pb,eS as qb,nS as rb,iS as sb,aS as tb,oS as ub,vS as vb,xh as wb,Sh as xb,Ch as yb,Oh as zb,kh as Ab,Ah as Bb,Mh as Cb,Nh as Db,Ph as Eb,Ih as Fb,Vh as Gb,Hh as Hb,V as Ib,i_ as Jb,a_ as Kb,o_ as Lb,d_ as Mb,p_ as Nb,h_ as Ob,g_ as Pb,__ as Qb,b_ as Rb,x_ as Sb,w_ as Tb,z_ as Ub,W_ as Vb,rg as Wb,mg as Xb,hg as Yb,gg as Zb,H as _b,yg as $b,wg as ac,Tg as bc,Eg as cc,U as dc,Dg as ec,jg as fc,Fg as gc,Lg as hc,Rg as ic,Bg as jc,Vg as kc,Hg as lc,Ug as mc,Wg as nc,Kg as oc,$g as pc,e_ as qc,t_ as rc,n_ as sc,Wh as tc,IS as uc,LS as vc,gC as wc,bC as xc,xC as yc,SC as zc,AC as Ac,LC as Bc,zC as Cc,VC as Dc,JC as Ec,XC as Fc,ZC as Gc,QC as Hc,$C as Ic,ew as Jc,nw as Kc,rw as Lc,iw as Mc,ow as Nc,sw as Oc,cw as Pc,lw as Qc,uw as Rc,fw as Sc,mw as Tc,hw as Uc,Tw as Vc,uT as Wc,dT as Xc,fT as Yc,pT as Zc,Nx as _c,Ix as $c,Lx as ad,Bx as bd,KT as cd,JT as dd,yD as ed,bD as fd,CD as gd,wD as hd,TD as id,ED as jd,DD as kd,kD as ld,AD as md,BD as nd,HD as od,UD as pd,KO as qd,JO as rd,QO as sd,$O as td,ek as ud,rk as vd,ik as wd,ak as xd,bk as yd,Ek as zd,Kk as Ad,qk as Bd,Jk as Cd,Yk as Dd,Xk as Ed,tA as Fd,vA as Gd,BA as Hd,HA as Id,UA as Jd,aj as Kd,W as Ld,uj as Md,hj as Nd,wj as Od,wM as Pd,DN as Qd,PN as Rd,FN as Sd,zN as Td,HN as Ud,UN as Vd,WN as Wd,GN as Xd,JN as Yd,YN as Zd,iI as _d,aI as $d,jv as ae,jx as be,Mx as ce,lq as de,hq as ee,Nq as fe,eJ as ge,tJ as he,Q as ie,VY as je,uX as ke,vL as le,yL as me,ML as ne,PL as oe,FL as pe,LL as qe,VL as re,JL as se,tR as te,oR as ue,cR as ve,uR as we,yR as xe,wR as ye,TR as ze,ER as Ae,VR as Be,HR as Ce,UR as De,$R as Ee,hz as Fe,Fz as Ge,Iz as He,Qz as Ie,YH as Je,$H as Ke,cU as Le,mU as Me,vU as Ne,yU as Oe,xU as Pe,Y as Qe,TU as Re,EU as Se,DU as Te,OU as Ue,kU as Ve,AU as We,jU as Xe,MU as Ye,NU as Ze,LU as _e,RU as $e,zU as af,BU as bf,VU as cf,HU as df,UU as ef,WU as ff,mG as gf,SG as hf,CG as if,X as jf,NK as kf,PK as lf,FK as mf,IK as nf,LK as of,RK as pf,VK as qf,UK as rf,WK as sf,GM as tf,rN as uf};
201
+ • Hardware security key: use the vendor's management tool`)}catch(e){alert(`Could not disable encryption: ${e?.message??e}`)}}function OX(){EX()}function kX(e){if(!e||e===TX)return;TX=e;let t=!1;TX.addEventListener(`click`,async()=>{if(await _X(),!I()&&!t){t=!0;try{if(!yo()){await be();return}if(!bo()){await Pv();return}await DX()}finally{t=!1}}}),ko(EX),EX()}export{js as a,Ms as b,uo as c,yo as d,bo as e,xo as f,Co as g,ko as h,jo as i,No as j,Ro as k,Va as l,Ga as m,Ya as n,Ps as o,Is as p,Ls as q,Rs as r,Bs as s,Ks as t,Xs as u,ec as v,F as w,I as x,Vc as y,Wc as z,Gc as A,ol as B,sl as C,fl as D,vl as E,wl as F,wf as G,Vf as H,Kf as I,Ru as J,Ql as K,R as L,ru as M,cu as N,vu as O,sp as P,rd as Q,ud as R,_d as S,Dd as T,Fd as U,Rd as V,gp as W,xp as X,Sp as Y,Cp as Z,wp as _,Tp as $,kp as aa,Ap as ba,jp as ca,Kp as da,Jp as ea,zd as fa,Bd as ga,Hd as ha,Ud as ia,G as ja,Bv as ka,Jh as la,Yh as ma,Wv as na,Gv as oa,Yv as pa,Ty as qa,zy as ra,Vy as sa,Ky as ta,qy as ua,Jy as va,Yy as wa,Xy as xa,Zy as ya,Qy as za,ib as Aa,sb as Ba,pb as Ca,hb as Da,wb as Ea,Tb as Fa,Eb as Ga,Db as Ha,Ob as Ia,kb as Ja,Pb as Ka,Fb as La,Jb as Ma,Yb as Na,Xb as Oa,Zb as Pa,Qb as Qa,$b as Ra,ex as Sa,tx as Ta,rx as Ua,ix as Va,hx as Wa,gx as Xa,_x as Ya,wx as Za,Tx as _a,Ex as $a,Dx as ab,Ox as bb,aW as cb,sW as db,Kx as eb,Xx as fb,Zm as gb,z as hb,Qm as ib,$m as jb,eh as kb,kv as lb,Av as mb,jv as nb,$x as ob,tS as pb,nS as qb,iS as rb,oS as sb,sS as tb,cS as ub,bS as vb,xh as wb,Sh as xb,Ch as yb,Oh as zb,kh as Ab,Ah as Bb,Mh as Cb,Nh as Db,Ph as Eb,Ih as Fb,Vh as Gb,Hh as Hb,V as Ib,a_ as Jb,o_ as Kb,s_ as Lb,f_ as Mb,m_ as Nb,g_ as Ob,__ as Pb,v_ as Qb,x_ as Rb,S_ as Sb,T_ as Tb,B_ as Ub,G_ as Vb,ig as Wb,hg as Xb,gg as Yb,_g as Zb,H as _b,bg as $b,Tg as ac,Eg as bc,Dg as cc,U as dc,Og as ec,Mg as fc,Ig as gc,Rg as hc,zg as ic,Vg as jc,Hg as kc,Ug as lc,Wg as mc,Gg as nc,qg as oc,e_ as pc,t_ as qc,n_ as rc,r_ as sc,Wh as tc,RS as uc,zS as vc,vC as wc,SC as xc,CC as yc,wC as zc,MC as Ac,zC as Bc,VC as Cc,UC as Dc,XC as Ec,QC as Fc,$C as Gc,ew as Hc,tw as Ic,nw as Jc,iw as Kc,aw as Lc,ow as Mc,cw as Nc,lw as Oc,uw as Pc,dw as Qc,fw as Rc,mw as Sc,gw as Tc,_w as Uc,Dw as Vc,fT as Wc,pT as Xc,mT as Yc,hT as Zc,Fx as _c,Rx as $c,zx as ad,Hx as bd,JT as cd,XT as dd,xD as ed,SD as fd,TD as gd,ED as hd,DD as id,OD as jd,kD as kd,jD as ld,MD as md,HD as nd,WD as od,GD as pd,JO as qd,XO as rd,ek as sd,tk as td,nk as ud,ak as vd,ok as wd,sk as xd,Sk as yd,Ok as zd,Jk as Ad,Yk as Bd,Xk as Cd,Zk as Dd,Qk as Ed,rA as Fd,bA as Gd,HA as Hd,WA as Id,GA as Jd,sj as Kd,W as Ld,fj as Md,_j as Nd,Ej as Od,EM as Pd,kN as Qd,IN as Rd,LN as Sd,VN as Td,WN as Ud,GN as Vd,KN as Wd,qN as Xd,XN as Yd,ZN as Zd,oI as _d,sI as $d,Mv as ae,Nx as be,Px as ce,gq as de,Sq as ee,Bq as fe,sJ as ge,cJ as he,Q as ie,JY as je,_X as ke,bL as le,xL as me,PL as ne,IL as oe,LL as pe,zL as qe,UL as re,XL as se,rR as te,cR as ue,uR as ve,fR as we,xR as xe,ER as ye,DR as ze,OR as Ae,UR as Be,WR as Ce,GR as De,tz as Ee,_z as Fe,Lz as Ge,Rz as He,eB as Ie,ZH as Je,tU as Ke,fU as Le,vU as Me,SU as Ne,CU as Oe,TU as Pe,Y as Qe,kU as Re,AU as Se,jU as Te,MU as Ue,NU as Ve,PU as We,FU as Xe,IU as Ye,LU as Ze,VU as _e,HU as $e,UU as af,WU as bf,GU as cf,KU as df,qU as ef,JU as ff,xG as gf,kG as hf,AG as if,X as jf,BK as kf,VK as lf,HK as mf,UK as nf,WK as of,GK as pf,JK as qf,XK as rf,ZK as sf,qM as tf,aN as uf};
203
202
  /*! Bundled license information:
204
203
 
205
204
  lit-html/directives/map.js: