jbrowse-plugin-msaview 4.0.0 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AddHighlightModel/index.js +2 -11
- package/dist/LaunchMsaView/codingFeature.d.ts +0 -12
- package/dist/LaunchMsaView/codingFeature.js +0 -30
- package/dist/LaunchMsaView/codingFeature.test.js +1 -48
- package/dist/LaunchMsaView/components/fetchSeq.d.ts +1 -1
- package/dist/LaunchMsaView/components/fetchSeq.js +3 -10
- package/dist/LaunchMsaView/components/useFeatureSequence.d.ts +1 -1
- package/dist/LaunchMsaView/index.js +2 -12
- package/dist/LaunchMsaView/launchTarget.d.ts +7 -30
- package/dist/LaunchMsaView/launchTarget.js +10 -49
- package/dist/LaunchMsaView/launchTarget.test.js +17 -109
- package/dist/MsaViewPanel/model.d.ts +8 -8
- package/dist/MsaViewPanel/model.js +3 -10
- package/dist/MsaViewPanel/resolveConnectedTranscript.js +1 -7
- package/dist/chunks/{LaunchMsaViewDialog-54LBEZHK.js → LaunchMsaViewDialog-LMZOJ7T6.js} +2 -2
- package/dist/chunks/chunk-MHBTV7BZ.js +3 -0
- package/dist/chunks/chunk-MHBTV7BZ.js.map +7 -0
- package/dist/chunks/chunk-VOBS7IVV.js +2 -0
- package/dist/chunks/chunk-VOBS7IVV.js.map +7 -0
- package/dist/chunks/{model-KEZXRCK6.js → model-7VBTOIJX.js} +4 -4
- package/dist/chunks/model-7VBTOIJX.js.map +7 -0
- package/dist/index.js +1 -1
- package/dist/jbrowse-plugin-msaview.esm.js +2 -2
- package/dist/jbrowse-plugin-msaview.esm.js.map +3 -3
- package/dist/utils/workspaces.js +6 -25
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -2
- package/src/AddHighlightModel/index.tsx +5 -15
- package/src/LaunchMsaView/codingFeature.test.ts +1 -64
- package/src/LaunchMsaView/codingFeature.ts +0 -38
- package/src/LaunchMsaView/components/fetchSeq.ts +3 -20
- package/src/LaunchMsaView/index.ts +2 -12
- package/src/LaunchMsaView/launchTarget.test.ts +20 -133
- package/src/LaunchMsaView/launchTarget.ts +18 -70
- package/src/MsaViewPanel/model.ts +3 -10
- package/src/MsaViewPanel/resolveConnectedTranscript.ts +1 -7
- package/src/index.ts +1 -1
- package/src/utils/workspaces.ts +6 -25
- package/src/version.ts +1 -1
- package/dist/chunks/chunk-EO7URJUB.js +0 -2
- package/dist/chunks/chunk-EO7URJUB.js.map +0 -7
- package/dist/chunks/chunk-RKVHQK52.js +0 -3
- package/dist/chunks/chunk-RKVHQK52.js.map +0 -7
- package/dist/chunks/model-KEZXRCK6.js.map +0 -7
- /package/dist/chunks/{LaunchMsaViewDialog-54LBEZHK.js.map → LaunchMsaViewDialog-LMZOJ7T6.js.map} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as et,c as tt,f as nt}from"./chunk-MBI4TMKR.js";import{f as At}from"./chunk-QMLPITS4.js";import"./chunk-O7JNDIKD.js";import"./chunk-RTKNCGDF.js";import{a as SA,b as Le,c as bA,d as qe,e as MA,f as Ye,g as _e,h as Fo}from"./chunk-TITP6LCV.js";import{a as Ue}from"./chunk-FCWXYIFC.js";import{A as oA,B as ze,C as $e,D as rA,b as Te,j as FA,l as xo,m as Oe,n as tA,o as nA,p as Ze,t as Xe,u as Ve,w as je,x as uA,y as xA,z as We}from"./chunk-
|
|
1
|
+
import{a as et,c as tt,f as nt}from"./chunk-MBI4TMKR.js";import{f as At}from"./chunk-QMLPITS4.js";import"./chunk-O7JNDIKD.js";import"./chunk-RTKNCGDF.js";import{a as SA,b as Le,c as bA,d as qe,e as MA,f as Ye,g as _e,h as Fo}from"./chunk-TITP6LCV.js";import{a as Ue}from"./chunk-FCWXYIFC.js";import{A as oA,B as ze,C as $e,D as rA,b as Te,j as FA,l as xo,m as Oe,n as tA,o as nA,p as Ze,t as Xe,u as Ve,w as je,x as uA,y as xA,z as We}from"./chunk-MHBTV7BZ.js";import{a as He,c as K,d as Pe,e as V,i as Ke}from"./chunk-PJZ3XTMG.js";import{c as Ro}from"./chunk-YUKJI2AH.js";import"./chunk-QAC6JSDZ.js";import{a as fA}from"./chunk-IBBQUV2I.js";import{a as Mo}from"./chunk-2IWD4OO4.js";import{a as RA}from"./chunk-FCNT6B47.js";import"./chunk-73KAPCJ2.js";import"./chunk-5ORPTTMR.js";import"./chunk-CVLB4VFP.js";import"./chunk-DNFD5II2.js";import"./chunk-BX4Z274Q.js";import"./chunk-J6KYLXRD.js";import{b as x}from"./chunk-FY3BTKY4.js";var So=x(Fo()),bo=x(fA()),S=x(Ue()),$A=x(RA());var go=x(fA()),kA=x(RA());var te="ARNDCQEGHILKMFPSTWYVBZX*",Jo=[[4,-1,-2,-2,0,-1,-1,0,-2,-1,-1,-1,-1,-2,-1,1,0,-3,-2,0,-2,-1,0,-4],[-1,5,0,-2,-3,1,0,-2,0,-3,-2,2,-1,-3,-2,-1,-1,-3,-2,-3,-1,0,-1,-4],[-2,0,6,1,-3,0,0,0,1,-3,-3,0,-2,-3,-2,1,0,-4,-2,-3,3,0,-1,-4],[-2,-2,1,6,-3,0,2,-1,-1,-3,-4,-1,-3,-3,-1,0,-1,-4,-3,-3,4,1,-1,-4],[0,-3,-3,-3,9,-3,-4,-3,-3,-1,-1,-3,-1,-2,-3,-1,-1,-2,-2,-1,-3,-3,-2,-4],[-1,1,0,0,-3,5,2,-2,0,-3,-2,1,0,-3,-1,0,-1,-2,-1,-2,0,3,-1,-4],[-1,0,0,2,-4,2,5,-2,0,-3,-3,1,-2,-3,-1,0,-1,-3,-2,-2,1,4,-1,-4],[0,-2,0,-1,-3,-2,-2,6,-2,-4,-4,-2,-3,-3,-2,0,-2,-2,-3,-3,-1,-2,-1,-4],[-2,0,1,-1,-3,0,0,-2,8,-3,-3,-1,-2,-1,-2,-1,-2,-2,2,-3,0,0,-1,-4],[-1,-3,-3,-3,-1,-3,-3,-4,-3,4,2,-3,1,0,-3,-2,-1,-3,-1,3,-3,-3,-1,-4],[-1,-2,-3,-4,-1,-2,-3,-4,-3,2,4,-2,2,0,-3,-2,-1,-2,-1,1,-4,-3,-1,-4],[-1,2,0,-1,-3,1,1,-2,-1,-3,-2,5,-1,-3,-1,0,-1,-3,-2,-2,0,1,-1,-4],[-1,-1,-2,-3,-1,0,-2,-3,-2,1,2,-1,5,0,-2,-1,-1,-1,-1,1,-3,-1,-1,-4],[-2,-3,-3,-3,-2,-3,-3,-3,-1,0,0,-3,0,6,-4,-2,-2,1,3,-1,-3,-3,-1,-4],[-1,-2,-2,-1,-3,-1,-1,-2,-2,-3,-3,-1,-2,-4,7,-1,-1,-4,-3,-2,-2,-1,-2,-4],[1,-1,1,0,-1,0,0,0,-1,-2,-2,0,-1,-2,-1,4,1,-3,-2,-2,0,0,0,-4],[0,-1,0,-1,-1,-1,-1,-2,-2,-1,-1,-1,-1,-2,-1,1,5,-2,-2,0,-1,-1,0,-4],[-3,-3,-4,-4,-2,-2,-3,-2,-2,-3,-2,-3,-1,1,-4,-3,-2,11,2,-3,-4,-3,-2,-4],[-2,-2,-2,-3,-2,-1,-2,-3,2,-1,-1,-2,-1,3,-3,-2,-2,2,7,-1,-3,-2,-1,-4],[0,-3,-3,-3,-1,-2,-2,-3,-3,3,1,-2,1,-1,-2,-2,0,-3,-1,4,-3,-2,-1,-4],[-2,-1,3,4,-3,0,1,-1,0,-3,-4,0,-3,-3,-2,0,-1,-4,-3,-3,4,1,-1,-4],[-1,0,0,1,-3,3,4,-2,0,-3,-3,1,-1,-3,-1,0,-1,-3,-2,-2,1,4,-1,-4],[0,-1,-1,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,0,0,-2,-1,-1,-1,-1,-1,-4],[-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,1]],it=te.length,Go=Int8Array.from(Jo.flat()),at=te.indexOf("X"),ee=new Uint8Array(128).fill(at);for(let A=0;A<it;A++){let t=te[A];ee[t.charCodeAt(0)]=A,ee[t.toLowerCase().charCodeAt(0)]=A}function ot(A){let t=new Uint8Array(A.length);for(let e=0;e<A.length;e++){let n=A.charCodeAt(e);t[e]=n<128?ee[n]:at}return t}var iA=11,JA=1,j=-1e6,W=0,aA=1,lA=2;function vo(A,t){let e=ot(A),n=ot(t),r=e.length,o=n.length,i=o+1,g=new Uint8Array((r+1)*i),I=new Int32Array(i),a=new Int32Array(i),s=new Int32Array(i),d=new Int32Array(i),Q=new Int32Array(i),c=new Int32Array(i);I[0]=0,a[0]=j,s[0]=j;for(let w=1;w<=o;w++)I[w]=j,a[w]=j,s[w]=0;let C=j,h=0,m=0,l=W;for(let w=1;w<=r;w++){d[0]=j,Q[0]=0,c[0]=j;let y=e[w-1]*it,F=w*i;for(let N=1;N<=o;N++){let v=Go[y+n[N-1]],U=I[N-1],eA=W;a[N-1]>U&&(U=a[N-1],eA=aA),s[N-1]>U&&(U=s[N-1],eA=lA),d[N]=U+v;let L=I[N]-iA,P=W;a[N]-JA>L&&(L=a[N]-JA,P=aA),s[N]-iA>L&&(L=s[N]-iA,P=lA),Q[N]=L;let dA=d[N-1]-iA,Ae=W;c[N-1]-JA>dA&&(dA=c[N-1]-JA,Ae=lA),Q[N-1]-iA>dA&&(dA=Q[N-1]-iA,Ae=aA),c[N]=dA,g[F+N]=eA|P<<2|Ae<<4}for(let[N,v]of[[W,d],[aA,Q],[lA,c]])v[o]>C&&(C=v[o],h=w,m=o,l=N);if(w===r)for(let N=0;N<o;N++)for(let[v,U]of[[W,d],[aA,Q],[lA,c]])U[N]>C&&(C=U[N],h=r,m=N,l=v);[I,d]=[d,I],[a,Q]=[Q,a],[s,c]=[c,s]}let D=Array.from({length:r}).fill("-"),u=Array.from({length:r+1}).fill("");u[r]=t.slice(m);let B=h,E=m,p=l,f=[],k=w=>{f.length&&(u[w]=f.reverse().join("")+u[w],f=[])};for(;B>0&&E>0;){let w=B*i+E;p===W?(k(B),D[B-1]=t[E-1],p=g[w]&3,B--,E--):p===aA?(k(B),p=g[w]>>2&3,B--):(f.push(t[E-1]),p=g[w]>>4,E--)}return k(B),u[0]=t.slice(0,E)+u[0],{matched:D,inserts:u}}function Uo(A,t){let e=A.sequence.length,n=new Array(e+1).fill(0);for(let{alignment:o}of t)for(let i=0;i<=e;i++)n[i]=Math.max(n[i],o.inserts[i].length);let r=(o,i)=>{let g=[];for(let I=0;I<=e;I++)g.push(i[I].padEnd(n[I],"-")),I<e&&g.push(o[I]);return g.join("")};return[{name:A.name,sequence:r(A.sequence.split(""),Array.from({length:e+1}).fill(""))},...t.map(({name:o,alignment:i})=>({name:o,sequence:r(i.matched,i.inserts)}))]}var rt=5e7,Lo=5e6;function ne(A,t,e){if(t*e>rt)throw new Error(`${A} (${t} residues) against the ${e}-residue query is too large to align in the browser, which stops at ${rt/1e6}M residue pairs per sequence. Choose an EBI aligner such as Clustal Omega instead.`)}async function gt({query:A,targets:t,onProgress:e,signal:n}){for(let i of t)ne(i.name,i.sequence.length,A.sequence.length);let r=[],o=1/0;for(let i of t)o>=Lo&&(e?.(`Aligning ${r.length+1} of ${t.length} sequences in the browser...`),await Pe(0,n),o=0),r.push({name:i.name,alignment:vo(A.sequence,i.sequence)}),o+=A.sequence.length*i.sequence.length;return Uo(A,r).map(i=>`>${i.name}
|
|
2
2
|
${i.sequence}`).join(`
|
|
3
3
|
`)}function st(A){let t=[];for(let e of A.split(">")){let[n,...r]=e.split(`
|
|
4
4
|
`),o=n?.trim().split(/\s+/)[0];o&&t.push({name:o,sequence:r.join("").replaceAll(/[\s*-]/g,"")})}return t}var It={blastp:tt,phmmer:nt};var qo={clustalo:{params:{},msaResult:"aln-clustal_num",treeResult:"phylotree"},muscle:{params:{format:"clw",tree:"tree1"},msaResult:"fa",treeResult:"phylotree"},kalign:{params:{stype:"protein"},msaResult:"fa",treeResult:"phylotree"},mafft:{params:{stype:"protein"},msaResult:"fa",treeResult:"phylotree"}};async function GA({algorithm:A,sequence:t,onProgress:e,signal:n}){if(A==="browser"){let[I,...a]=st(t);if(!I)throw new Error("Nothing to align");return{msa:await gt({query:I,targets:a,onProgress:e,signal:n}),tree:""}}let r=qo[A],o=await Ke({tool:A,label:`${A} MSA`,params:{...r.params,sequence:t},onProgress:e,signal:n}),[i,g]=await Promise.all([o.result(r.msaResult),o.result(r.treeResult)]);return{msa:i,tree:g}}function Yo(A,t){let e={},n=A.taxid?t.get(A.taxid):void 0;return n?.sciname&&(e["Scientific name"]=n.sciname),n?.commonName&&(e["Common name"]=n.commonName),A.accession&&(e.Accession=A.accession),A.id&&(e.ID=A.id),A.title&&(e.Description=A.title),e}function _o(A,t){let e=A.map(o=>et(o,t)),n=new Map;for(let o of e)n.set(o,(n.get(o)??0)+1);let r=new Set;return e.map((o,i)=>{let g=n.get(o)>1?`${o}_${A[i].range??i+1}`:o;for(;r.has(g);)g=`${g}_${i+1}`;return r.add(g),g})}function ct({hits:A,query:t,queryRow:e,taxonomyInfo:n,querySeqName:r="QUERY"}){let o={},i=_o(A,n),g=A.map((I,a)=>{let s=i[a];return o[s]=Yo(I,n),`>${s}
|
|
@@ -7,6 +7,6 @@ ${e??t}`,...g].join(`
|
|
|
7
7
|
`),treeMetadata:o}}var Ho="jbrowse-msaview-search-cache",gA="searches",Qt=20,Po=10080*60*1e3,Bt=tA(Ho,1,A=>{A.createObjectStore(gA,{keyPath:"id"})});function Ct({searchProgram:A,database:t,maxHits:e,querySeqName:n,query:r}){return[A,t,e??"",n,r].join(":")}function Et(A){return nA("search cache read",async()=>{let t=await(await Bt()).get(gA,A);return t&&Date.now()-t.timestamp<Po?t:void 0},void 0)}function dt(A){return nA("search cache write",async()=>{let t=await Bt();if(await t.put(gA,{...A,timestamp:Date.now()}),await t.count(gA)>Qt){let e=await t.getAll(gA),n=e.toSorted((o,i)=>o.timestamp-i.timestamp).slice(0,e.length-Qt),r=t.transaction(gA,"readwrite");await Promise.all([...n.map(o=>r.store.delete(o.id)),r.done])}},void 0)}var vA="https://rest.uniprot.org";var Ko="keyword:KW-1185",To=/^(?:[OPQ][0-9][A-Z0-9]{3}[0-9]|[A-NR-Z][0-9](?:[A-Z][A-Z0-9]{2}[0-9]){1,2})(?:-\d+)?$/,oe="accession,id,reviewed,organism_name,organism_id,protein_name,sequence";function ft(A){let{primaryAccession:t,uniProtkbId:e,organism:n,sequence:r}=A;if(!(!t||!n?.taxonId||!r?.value))return{accession:t,id:e??t,reviewed:/\breviewed\b/i.test(A.entryType??""),taxId:n.taxonId,scientificName:n.scientificName??String(n.taxonId),commonName:n.commonName,title:A.proteinDescription?.recommendedName?.fullName?.value??A.proteinDescription?.submissionNames?.[0]?.fullName?.value,sequence:r.value}}function ut(A){return(A.results??[]).flatMap(t=>{let e=ft(t);return e?[e]:[]})}function re(A,t){return Number(t.reviewed)-Number(A.reviewed)||t.sequence.length-A.sequence.length}async function ie(A,t,e){for(let n of A){let r=xA(n);if(!r)continue;if(To.test(r)){let I=await K(`${vA}/uniprotkb/${r}?fields=${oe}`,{signal:e}),a=ft(I);if(a)return a;continue}let o=`gene_exact:"${r.replaceAll('"',"")}" AND organism_id:${t}`,i=await K(`${vA}/uniprotkb/search?query=${encodeURIComponent(o)}&fields=${oe}&size=25`,{signal:e}),[g]=ut(i).sort(re);if(g)return g}}async function Oo(A,t,e){let n=`(uniprot_id:${A}) AND (identity:${t/100})`,o=(await K(`${vA}/uniref/search?query=${encodeURIComponent(n)}&fields=id,count&size=1`,{signal:e})).results?.[0];return o?.id?{id:o.id,memberCount:o.memberCount}:void 0}var Zo=500,Xo=5e3;function Vo(A){let t=A.headers.get("link")??"";return/<([^>]+)>;\s*rel="next"/.exec(t)?.[1]}async function jo({clusterId:A,identity:t,referenceProteomesOnly:e=!0,taxa:n,exclude:r,limit:o=uA,onProgress:i,signal:g}){let I=[`uniref_cluster_${t}:${A}`,...e?[Ko]:[]].join(" AND "),a=`${vA}/uniprotkb/search?query=${encodeURIComponent(I)}&fields=${oe}&size=${Zo}&format=json`,s=new Map,d=0,Q;for(;a&&d<Xo;){let c=await He(a,{signal:g});Q??=Number(c.headers.get("x-total-results"))||void 0;let C=ut(await c.json());d+=C.length;for(let h of C){if(h.taxId===r||n&&!n.has(h.taxId))continue;let m=s.get(h.taxId);(!m||re(h,m)<0)&&s.set(h.taxId,h)}if(i?.(`Read ${d}${Q?` of ${Q}`:""} cluster members, ${s.size} species...`),n&&[...n].every(h=>s.has(h)||h===r))break;a=C.length?Vo(c):void 0}return{total:Q,rows:[...s.values()].sort(re).slice(0,o)}}async function lt({candidates:A,taxId:t,identity:e=50,referenceProteomesOnly:n=!0,taxa:r,exclude:o,limit:i=uA,onProgress:g,signal:I}){g("Resolving the query at UniProt...");let a=await ie(A,t,I);if(!a)throw new Error(`UniProt has no entry for ${A.join(", ")} in taxon ${t}. Try the BLAST tab, which needs no gene identifier.`);g(`Finding the UniRef${e} cluster of ${a.id}...`);let s=await Oo(a.accession,e,I);if(!s)throw new Error(`${a.accession} is in no UniRef${e} cluster`);let{total:d,rows:Q}=await jo({clusterId:s.id,identity:e,referenceProteomesOnly:n,taxa:r,exclude:o,limit:i,onProgress:g,signal:I});if(Q.length<1)throw new Error(`${s.id} has no other ${n?"reference-proteome ":""}member to align ${a.id} against`);let c=oA(Q.map(C=>C.commonName??C.scientificName));return{query:a,clusterId:s.id,total:d,rows:Q.map((C,h)=>({taxId:C.taxId,label:c[h],scientificName:C.scientificName,commonName:C.commonName,geneId:C.id,protein:C.accession,sequence:C.sequence}))}}function UA(A){return typeof A=="string"?A:void 0}async function Wo(A,t){let e=A.blastParams;if(e.proteinSequence)return{sequence:FA(e.proteinSequence),name:A.querySeqName};if(e.accession){t.onProgress(`Fetching ${e.accession} from UniProt...`);let n=await ie([e.accession],0,t.signal);if(!n)throw new Error(`UniProt has no entry ${e.accession}`);let r=`${n.id}_query`;return t.act(()=>{A.setQuerySeqName(r)}),{sequence:n.sequence,name:r}}throw new Error("No query: a search needs a proteinSequence, a UniProt accession, or a connectedTranscript to translate")}async function zo({self:A,scope:t,query:e,querySeqName:n,key:r}){let o=A.blastParams,{onProgress:i,onRid:g,signal:I}=t,{hits:a,queryRow:s,rid:d}=await It[o.searchProgram??"blastp"]({query:e,database:o.blastDatabase,maxHits:o.maxHits,onProgress:i,onRid:g,signal:I});if(a.length===0)throw new Error("No hits found");i("Fetching species taxonomy info...");let Q=await rA(a.map(h=>h.taxid).filter(h=>h!==void 0),I),{msa:c,treeMetadata:C}=ct({hits:a,query:e,queryRow:s,taxonomyInfo:Q,querySeqName:n});return s||await dt({id:r,fasta:c,treeMetadata:C,rid:d}),{fasta:c,treeMetadata:C,rid:d,queryRow:s}}async function ht({self:A,scope:t}){let e=A.blastParams,{selectedTranscript:n,maxHits:r,searchProgram:o="blastp"}=e,i=e.msaAlgorithm??"browser",{sequence:g,name:I}=await Wo(A,t);o==="blastp"&&i==="browser"&&ne(I,g.length,g.length);let{onProgress:a,signal:s}=t,d=Ct({searchProgram:o,database:e.blastDatabase,maxHits:r,querySeqName:I,query:g}),Q=await Et(d);Q&&a(`Reusing the ${o} search from ${new Date(Q.timestamp).toLocaleString()}...`);let{fasta:c,treeMetadata:C,rid:h,queryRow:m}=Q??await zo({self:A,scope:t,query:g,querySeqName:I,key:d}),{msa:l,tree:D}=m?{msa:c,tree:""}:await GA({algorithm:i,sequence:c,onProgress:a,signal:s}),u=Le(n),B=JSON.stringify(C);return await Ze({proteinSequence:g,blastDatabase:e.blastDatabase,msaAlgorithm:m?void 0:i,searchProgram:e.searchProgram,maxHits:r,msa:l,tree:D,treeMetadata:B,rid:h??"",geneId:UA(u.parentId),transcriptId:UA(u.uniqueId),transcriptName:bA(n),geneName:UA(u.gene_name)??UA(u.parentId)}),{msa:l,tree:D,treeMetadata:B}}var pt="https://pantherdb.org/services/oai/pantherdb",$o="https://rest.uniprot.org/uniprotkb";function Ar(A){return(A.search?.output?.genomes?.genome??[]).flatMap(e=>e.short_name&&e.taxon_id?[{code:e.short_name,taxId:e.taxon_id,name:e.name??e.short_name,longName:e.long_name??e.short_name}]:[])}function mt(A){let[t,...e]=(A??"").split("|"),n=e.find(o=>o.startsWith("UniProtKB="))?.slice(10),r=e.find(o=>!o.startsWith("UniProtKB="))??n;return t&&n&&r?{code:t,accession:n,geneRef:r}:void 0}function er(A){let t=A.search?.mapping,e=t?.mapped,n=Array.isArray(e)?e:e?[e]:[],r=[],o;for(let i of n){o??=mt(i.gene);let g=mt(i.target_gene);g&&(i.ortholog==="LDO"||i.ortholog==="O")&&r.push({...g,symbol:i.target_gene_symbol===void 0?void 0:String(i.target_gene_symbol),type:i.ortholog})}return{unmapped:!!t?.unmapped_ids,query:o,hits:r}}function tr(A){let t=new Map;for(let e of A){let n=t.get(e.code);(!n||n.type==="O"&&e.type==="LDO")&&t.set(e.code,e)}return[...t.values()]}function nr(A){let t=new Map;for(let e of A.results??[])e.primaryAccession&&e.sequence?.value&&t.set(e.primaryAccession,e.sequence.value);return t}var ae;function or(){return ae??=K(`${pt}/supportedgenomes`).then(Ar).catch(A=>{throw ae=void 0,A}),ae}var wt=100;async function rr(A,t){let e=new Map;for(let n=0;n<A.length;n+=wt){let r=A.slice(n,n+wt),o=await K(`${$o}/accessions?accessions=${r.join(",")}&fields=accession,sequence&format=json`,{signal:t});for(let[i,g]of nr(o))e.set(i,g)}return e}async function ir(A,t,e,n){let r;for(let o of A){let i=xA(o);if(!i)continue;let g=new URLSearchParams({geneInputList:i,organism:String(t),orthologType:"all"});e&&g.set("targetOrganism",e.map(a=>a.taxId).join(","));let I=er(await K(`${pt}/ortholog/matchortho?${g.toString()}`,{signal:n}));if(!I.unmapped&&(r??=i,I.query))return{...I,matched:i}}return r===void 0?void 0:{matched:r,hits:[],query:void 0}}async function Dt({candidates:A,taxId:t,taxa:e,exclude:n,limit:r=uA,onProgress:o,signal:i}){let g=await or();i?.throwIfAborted();let I=new Map(g.map(E=>[E.taxId,E])),a=new Map(g.map(E=>[E.code,E])),s=I.get(t);if(!s)throw new Error(`PANTHER has no reference proteome for taxon ${t}. NCBI orthologs cover vertebrates and insects; try that source.`);let d=e?[...e].flatMap(E=>{let p=I.get(E);return p&&E!==n?[p]:[]}):void 0;o("Matching orthologs at PANTHER...");let Q=await ir(A,t,d,i);if(!Q)throw new Error(`PANTHER has no entry for ${A.join(", ")} in ${s.longName}. Try the NCBI BLAST tab, which needs no gene identifier.`);let c=new Map(d?.map((E,p)=>[E.taxId,p])),C=tr(Q.hits).map(E=>({hit:E,genome:a.get(E.code)})).filter(E=>!!E.genome&&E.genome.taxId!==n&&(d?c.has(E.genome.taxId):!0)).sort((E,p)=>d?c.get(E.genome.taxId)-c.get(p.genome.taxId):0).slice(0,r);if(C.length<2)throw new Error(`Only ${C.length} PANTHER ortholog(s) found for ${Q.matched} \u2014 not enough to align`);o(`Fetching ${C.length} protein sequences from UniProt...`);let[h,m]=await Promise.all([ar(C.map(E=>E.genome.taxId),i),rr([...Q.query?[Q.query.accession]:[],...C.map(E=>E.hit.accession)],i)]),l=C.map(({hit:E,genome:p})=>{let f=h.get(p.taxId);return{hit:E,genome:p,name:f?f.commonName??f.sciname:p.name,scientificName:f?.sciname||p.longName,commonName:f?.commonName}}),D=oA(l.map(E=>E.name)),u=l.map(({hit:E,genome:p,scientificName:f,commonName:k},w)=>({taxId:p.taxId,label:D[w],scientificName:f,commonName:k,geneId:E.geneRef,protein:E.accession,sequence:m.get(E.accession)??""})).filter(E=>E.sequence);if(u.length<2)throw new Error("Could not fetch protein sequences for the orthologs");let B=Q.query&&m.get(Q.query.accession);return{matched:Q.matched,query:Q.query&&B?{...Q.query,sequence:B}:void 0,rows:u}}async function ar(A,t){try{return await rA(A,t)}catch(e){if(V(e))throw e;return console.warn("[msaview-orthologs] taxonomy name lookup failed:",e),new Map}}async function yt({self:A,scope:t}){let{taxId:e,taxa:n,maxSpecies:r,geneCandidates:o,msaAlgorithm:i,proteinSequence:g,source:I="ncbi",identity:a,referenceProteomesOnly:s}=A.orthologParams,{onProgress:d,act:Q,signal:c}=t,C={taxId:e,geneCandidates:o,taxa:n?new Set(n):void 0,exclude:e,limit:r,onProgress:d,signal:c},{geneId:h,representative:m,rows:l}=I==="panther"?await cr(C):I==="uniref"?await Ir({...C,identity:a,referenceProteomesOnly:s}):await gr(C),D=g?FA(g):m?.sequence;if(!D)throw new Error(`No query protein: none was supplied and ${sr[I]} returned no representative protein for gene ${h}.`);let u=await Qr(e,l,c);Q(()=>{A.setQuerySeqName(u)});let B={[u]:Cr(A,h,D,m)};for(let p of l)B[p.label]=Er(p);return{...await GA({algorithm:i,sequence:[`>${u}
|
|
8
8
|
${D}`,...l.map(p=>`>${p.label}
|
|
9
9
|
${p.sequence}`)].join(`
|
|
10
|
-
`),onProgress:d,signal:c}),treeMetadata:JSON.stringify(B)}}async function gr({taxId:A,geneCandidates:t,onProgress:e,signal:n,...r}){e("Resolving gene at NCBI...");let o=await We(t,A,n);if(!o)throw new Error(`Could not resolve any of ${t.join(", ")} to an NCBI gene in taxon ${A}. Try the NCBI BLAST tab, which needs no gene identifier.`);let i=await Br(o.geneId,n),g=await $e({geneId:o.geneId,onProgress:e,signal:n,...r});return{geneId:o.geneId,representative:i,rows:g}}var sr={ncbi:"NCBI",panther:"PANTHER",uniref:"UniProt"};async function Ir({geneCandidates:A,identity:t,referenceProteomesOnly:e,...n}){let r=await lt({candidates:A,identity:t,referenceProteomesOnly:e,...n});return{geneId:r.query.id,representative:{accession:r.query.accession,sequence:r.query.sequence},rows:r.rows}}async function cr({geneCandidates:A,...t}){let e=await Dt({candidates:A,...t});return{geneId:e.query?.geneRef??e.matched,representative:e.query,rows:e.rows}}async function Qr(A,t,e){let n;try{let r=(await rA([A],e)).get(A);n=r?.commonName??r?.sciname}catch(r){if(V(r))throw r;console.warn("[msaview-orthologs] taxonomy name lookup failed:",r)}return oA([...t.map(r=>r.label),`${n??"query"}_query`]).at(-1)}async function Br(A,t){try{return await ze(A,t)}catch(e){if(V(e))throw e;console.warn("[msaview-orthologs] query protein lookup failed:",e);return}}function Cr(A,t,e,n){let r={"Gene ID":t},o=bA(A.orthologParams?.selectedTranscript);return o&&(r.Transcript=o),n?.sequence===e&&(r.Accession=n.accession),r}function Er(A){let t={"Scientific name":A.scientificName,Accession:A.protein,"Gene ID":A.geneId};return A.commonName&&(t["Common name"]=A.commonName),t}function LA(A,t=0){let e=A.getUint32(t,!0);return A.getUint32(t+4,!0)*4294967296+e}var ge=16,dr={compressed:new Float64Array(0),uncompressed:new Float64Array(0)};function Nt(A,t){let e=new Float64Array(t+1),n=new Float64Array(t+1),r=new DataView(A.buffer,A.byteOffset,A.byteLength);for(let o=0;o<t;o+=1){let i=o*ge;e[o+1]=LA(r,i),n[o+1]=LA(r,i+8)}return{compressed:e,uncompressed:n}}function kt(A,t){let e=0,n=A.length;for(;e<n;){let r=e+n>>>1;A[r]<=t?e=r+1:n=r}return e}var hA=class{filehandle;index;constructor({filehandle:t}){this.filehandle=t}_getIndex(){return this.index||(this.index=this._readIndex().catch(t=>{throw this.index=void 0,t})),this.index}async _readIndex(){let t=await this.filehandle.read(8,0),e=LA(new DataView(t.buffer,t.byteOffset,t.byteLength));if(e===0)return Nt(new Uint8Array(0),0);if(e>Number.MAX_SAFE_INTEGER/ge)throw new TypeError("integer overflow");let n=await this.filehandle.read(ge*e,8);return Nt(n,e)}async getRelevantBlocksForRead(t,e){if(t===0)return{...dr,nextCompressedPosition:void 0};let{compressed:n,uncompressed:r}=await this._getIndex(),o=kt(r,e)-1,i=kt(r,e+t-1);return{compressed:n.subarray(o,i),uncompressed:r.subarray(o,i),nextCompressedPosition:i<n.length?n[i]:void 0}}};var se=0;var Ie=2;var mA=4;var T=0,wA=1,St=2;var bt=-5;function fr(A,t){return Object.prototype.hasOwnProperty.call(A,t)}function Mt(A){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var e=t.shift();if(e){if(typeof e!="object")throw new TypeError(e+"must be non-object");for(var n in e)fr(e,n)&&(A[n]=e[n])}}return A}function YA(A,t){return A.length===t?A:A.subarray?A.subarray(0,t):(A.length=t,A)}var pA={arraySet:function(A,t,e,n,r){if(t.subarray&&A.subarray){A.set(t.subarray(e,e+n),r);return}for(var o=0;o<n;o++)A[r+o]=t[e+o]},flattenChunks:function(A){var t,e,n,r,o,i;for(n=0,t=0,e=A.length;t<e;t++)n+=A[t].length;for(i=new Uint8Array(n),r=0,t=0,e=A.length;t<e;t++)o=A[t],i.set(o,r),r+=o.length;return i},Buf8:function(A){return new Uint8Array(A)},Buf16:function(A){return new Uint16Array(A)},Buf32:function(A){return new Int32Array(A)}},DA={arraySet:function(A,t,e,n,r){for(var o=0;o<n;o++)A[r+o]=t[e+o]},flattenChunks:function(A){return[].concat.apply([],A)},Buf8:function(A){return new Array(A)},Buf16:function(A){return new Array(A)},Buf32:function(A){return new Array(A)}},sA=()=>{let A=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";return sA=()=>A,A},q=(A,t,e,n,r)=>(q=sA()?pA.arraySet:DA.arraySet,q(A,t,e,n,r)),qA=A=>(qA=sA()?pA.flattenChunks:DA.flattenChunks,qA(A)),Y=A=>(Y=sA()?pA.Buf8:DA.Buf8,Y(A)),O=A=>(O=sA()?pA.Buf16:DA.Buf16,O(A)),z=A=>(z=sA()?pA.Buf32:DA.Buf32,z(A));var Ft=function(){let A=!0;try{String.fromCharCode.apply(null,[0])}catch{A=!1}return Ft=()=>A,A},xt=function(){let A=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{A=!1}return xt=()=>A,A},ce=function(A){for(var t=Y(256),e=0;e<256;e++)t[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;return t[254]=t[254]=1,ce=n=>t[n],t[A]};function Qe(A){var t,e,n,r,o,i=A.length,g=0;for(r=0;r<i;r++)e=A.charCodeAt(r),(e&64512)===55296&&r+1<i&&(n=A.charCodeAt(r+1),(n&64512)===56320&&(e=65536+(e-55296<<10)+(n-56320),r++)),g+=e<128?1:e<2048?2:e<65536?3:4;for(t=new Uint8Array(g),o=0,r=0;o<g;r++)e=A.charCodeAt(r),(e&64512)===55296&&r+1<i&&(n=A.charCodeAt(r+1),(n&64512)===56320&&(e=65536+(e-55296<<10)+(n-56320),r++)),e<128?t[o++]=e:e<2048?(t[o++]=192|e>>>6,t[o++]=128|e&63):e<65536?(t[o++]=224|e>>>12,t[o++]=128|e>>>6&63,t[o++]=128|e&63):(t[o++]=240|e>>>18,t[o++]=128|e>>>12&63,t[o++]=128|e>>>6&63,t[o++]=128|e&63);return t}function ur(A,t){if(t<65534&&(A.subarray&&xt()||!A.subarray&&Ft()))return String.fromCharCode.apply(null,YA(A,t));for(var e="",n=0;n<t;n++)e+=String.fromCharCode(A[n]);return e}function Rt(A){for(var t=new Uint8Array(A.length),e=0,n=t.length;e<n;e++)t[e]=A.charCodeAt(e);return t}function Jt(A,t){var e,n,r,o,i=t||A.length,g=new Array(i*2);for(n=0,e=0;e<i;){if(r=A[e++],r<128){g[n++]=r;continue}if(o=ce(r),o>4){g[n++]=65533,e+=o-1;continue}for(r&=o===2?31:o===3?15:7;o>1&&e<i;)r=r<<6|A[e++]&63,o--;if(o>1){g[n++]=65533;continue}r<65536?g[n++]=r:(r-=65536,g[n++]=55296|r>>10&1023,g[n++]=56320|r&1023)}return ur(g,n)}function Gt(A,t){var e;for(t=t||A.length,t>A.length&&(t=A.length),e=t-1;e>=0&&(A[e]&192)===128;)e--;return e<0||e===0?t:e+ce(A[e])>t?e:t}function Be(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}function yA(A,t,e,n){for(var r=A&65535|0,o=A>>>16&65535|0,i=0;e!==0;){i=e>2e3?2e3:e,e-=i;do r=r+t[n++]|0,o=o+r|0;while(--i);r%=65521,o%=65521}return r|o<<16|0}function lr(){for(var A,t=[],e=0;e<256;e++){A=e;for(var n=0;n<8;n++)A=A&1?3988292384^A>>>1:A>>>1;t[e]=A}return t}var vt=function(){let A=lr();return vt=()=>A,A};function J(A,t,e,n){var r=vt(),o=n+e;A^=-1;for(var i=n;i<o;i++)A=A>>>8^r[(A^t[i])&255];return A^-1}var _A=30,hr=12;function Ce(A,t){var e,n,r,o,i,g,I,a,s,d,Q,c,C,h,m,l,D,u,B,E,p,f,k,w,y;e=A.state,n=A.next_in,w=A.input,r=n+(A.avail_in-5),o=A.next_out,y=A.output,i=o-(t-A.avail_out),g=o+(A.avail_out-257),I=e.dmax,a=e.wsize,s=e.whave,d=e.wnext,Q=e.window,c=e.hold,C=e.bits,h=e.lencode,m=e.distcode,l=(1<<e.lenbits)-1,D=(1<<e.distbits)-1;A:do{C<15&&(c+=w[n++]<<C,C+=8,c+=w[n++]<<C,C+=8),u=h[c&l];e:for(;;){if(B=u>>>24,c>>>=B,C-=B,B=u>>>16&255,B===0)y[o++]=u&65535;else if(B&16){E=u&65535,B&=15,B&&(C<B&&(c+=w[n++]<<C,C+=8),E+=c&(1<<B)-1,c>>>=B,C-=B),C<15&&(c+=w[n++]<<C,C+=8,c+=w[n++]<<C,C+=8),u=m[c&D];t:for(;;){if(B=u>>>24,c>>>=B,C-=B,B=u>>>16&255,B&16){if(p=u&65535,B&=15,C<B&&(c+=w[n++]<<C,C+=8,C<B&&(c+=w[n++]<<C,C+=8)),p+=c&(1<<B)-1,p>I){A.msg="invalid distance too far back",e.mode=_A;break A}if(c>>>=B,C-=B,B=o-i,p>B){if(B=p-B,B>s&&e.sane){A.msg="invalid distance too far back",e.mode=_A;break A}if(f=0,k=Q,d===0){if(f+=a-B,B<E){E-=B;do y[o++]=Q[f++];while(--B);f=o-p,k=y}}else if(d<B){if(f+=a+d-B,B-=d,B<E){E-=B;do y[o++]=Q[f++];while(--B);if(f=0,d<E){B=d,E-=B;do y[o++]=Q[f++];while(--B);f=o-p,k=y}}}else if(f+=d-B,B<E){E-=B;do y[o++]=Q[f++];while(--B);f=o-p,k=y}for(;E>2;)y[o++]=k[f++],y[o++]=k[f++],y[o++]=k[f++],E-=3;E&&(y[o++]=k[f++],E>1&&(y[o++]=k[f++]))}else{f=o-p;do y[o++]=y[f++],y[o++]=y[f++],y[o++]=y[f++],E-=3;while(E>2);E&&(y[o++]=y[f++],E>1&&(y[o++]=y[f++]))}}else if((B&64)===0){u=m[(u&65535)+(c&(1<<B)-1)];continue t}else{A.msg="invalid distance code",e.mode=_A;break A}break}}else if((B&64)===0){u=h[(u&65535)+(c&(1<<B)-1)];continue e}else if(B&32){e.mode=hr;break A}else{A.msg="invalid literal/length code",e.mode=_A;break A}break}}while(n<r&&o<g);E=C>>3,n-=E,C-=E<<3,c&=(1<<C)-1,A.next_in=n,A.next_out=o,A.avail_in=n<r?5+(r-n):5-(n-r),A.avail_out=o<g?257+(g-o):257-(o-g),e.hold=c,e.bits=C}var IA=15,Ut=852,Lt=592,qt=0,Ee=1,Yt=2,mr=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],wr=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],pr=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],Dr=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];function $(A,t,e,n,r,o,i,g){var I=g.bits,a=0,s=0,d=0,Q=0,c=0,C=0,h=0,m=0,l=0,D=0,u,B,E,p,f,k=null,w=0,y,F=O(IA+1),N=O(IA+1),v=null,U=0,eA,L,P;for(a=0;a<=IA;a++)F[a]=0;for(s=0;s<n;s++)F[t[e+s]]++;for(c=I,Q=IA;Q>=1&&F[Q]===0;Q--);if(c>Q&&(c=Q),Q===0)return r[o++]=1<<24|64<<16|0,r[o++]=1<<24|64<<16|0,g.bits=1,0;for(d=1;d<Q&&F[d]===0;d++);for(c<d&&(c=d),m=1,a=1;a<=IA;a++)if(m<<=1,m-=F[a],m<0)return-1;if(m>0&&(A===qt||Q!==1))return-1;for(N[1]=0,a=1;a<IA;a++)N[a+1]=N[a]+F[a];for(s=0;s<n;s++)t[e+s]!==0&&(i[N[t[e+s]]++]=s);if(A===qt?(k=v=i,y=19):A===Ee?(k=mr,w-=257,v=wr,U-=257,y=256):(k=pr,v=Dr,y=-1),D=0,s=0,a=d,f=o,C=c,h=0,E=-1,l=1<<c,p=l-1,A===Ee&&l>Ut||A===Yt&&l>Lt)return 1;for(;;){eA=a-h,i[s]<y?(L=0,P=i[s]):i[s]>y?(L=v[U+i[s]],P=k[w+i[s]]):(L=96,P=0),u=1<<a-h,B=1<<C,d=B;do B-=u,r[f+(D>>h)+B]=eA<<24|L<<16|P|0;while(B!==0);for(u=1<<a-1;D&u;)u>>=1;if(u!==0?(D&=u-1,D+=u):D=0,s++,--F[a]===0){if(a===Q)break;a=t[e+i[s]]}if(a>c&&(D&p)!==E){for(h===0&&(h=c),f+=d,C=a-h,m=1<<C;C+h<Q&&(m-=F[C+h],!(m<=0));)C++,m<<=1;if(l+=1<<C,A===Ee&&l>Ut||A===Yt&&l>Lt)return 1;E=D&p,r[E]=c<<24|C<<16|f-o|0}}return D!==0&&(r[f+D]=a-h<<24|64<<16|0),g.bits=c,0}var yr=0,Bn=1,Cn=2,_t=4,Nr=5,HA=6,AA=0,kr=1,Sr=2,G=-2,En=-3,me=-4,br=-5,Ht=8,dn=1,Pt=2,Kt=3,Tt=4,Ot=5,Zt=6,Xt=7,Vt=8,jt=9,Wt=10,TA=11,_=12,de=13,zt=14,fe=15,$t=16,An=17,en=18,tn=19,PA=20,KA=21,nn=22,on=23,rn=24,an=25,gn=26,ue=27,sn=28,In=29,b=30,we=31,Mr=32,Fr=852,xr=592;function cn(A){return(A>>>24&255)+(A>>>8&65280)+((A&65280)<<8)+((A&255)<<24)}function Rr(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=O(320),this.work=O(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function Jr(A){var t;return!A||!A.state?G:(t=A.state,A.total_in=A.total_out=t.total=0,A.msg="",t.wrap&&(A.adler=t.wrap&1),t.mode=dn,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=z(Fr),t.distcode=t.distdyn=z(xr),t.sane=1,t.back=-1,AA)}function Gr(A){var t;return!A||!A.state?G:(t=A.state,t.wsize=0,t.whave=0,t.wnext=0,Jr(A))}function vr(A,t){var e,n;return!A||!A.state||(n=A.state,t<0?(e=0,t=-t):(e=(t>>4)+1,t<48&&(t&=15)),t&&(t<8||t>15))?G:(n.window!==null&&n.wbits!==t&&(n.window=null),n.wrap=e,n.wbits=t,Gr(A))}function fn(A,t){var e,n;return A?(n=new Rr,A.state=n,n.window=null,e=vr(A,t),e!==AA&&(A.state=null),e):G}var Qn=!0,le,he;function Ur(A){if(Qn){var t;for(le=z(512),he=z(32),t=0;t<144;)A.lens[t++]=8;for(;t<256;)A.lens[t++]=9;for(;t<280;)A.lens[t++]=7;for(;t<288;)A.lens[t++]=8;for($(Bn,A.lens,0,288,le,0,A.work,{bits:9}),t=0;t<32;)A.lens[t++]=5;$(Cn,A.lens,0,32,he,0,A.work,{bits:5}),Qn=!1}A.lencode=le,A.lenbits=9,A.distcode=he,A.distbits=5}function un(A,t,e,n){var r,o=A.state;return o.window===null&&(o.wsize=1<<o.wbits,o.wnext=0,o.whave=0,o.window=Y(o.wsize)),n>=o.wsize?(q(o.window,t,e-o.wsize,o.wsize,0),o.wnext=0,o.whave=o.wsize):(r=o.wsize-o.wnext,r>n&&(r=n),q(o.window,t,e-n,r,o.wnext),n-=r,n?(q(o.window,t,e-n,n,0),o.wnext=n,o.whave=o.wsize):(o.wnext+=r,o.wnext===o.wsize&&(o.wnext=0),o.whave<o.wsize&&(o.whave+=r))),0}function ln(A,t){var e,n,r,o,i,g,I,a,s,d,Q,c,C,h,m=0,l,D,u,B,E,p,f,k,w=Y(4),y,F,N=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!A||!A.state||!A.output||!A.input&&A.avail_in!==0)return G;e=A.state,e.mode===_&&(e.mode=de),i=A.next_out,r=A.output,I=A.avail_out,o=A.next_in,n=A.input,g=A.avail_in,a=e.hold,s=e.bits,d=g,Q=I,k=AA;A:for(;;)switch(e.mode){case dn:if(e.wrap===0){e.mode=de;break}for(;s<16;){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}if(e.wrap&2&&a===35615){e.check=0,w[0]=a&255,w[1]=a>>>8&255,e.check=J(e.check,w,2,0),a=0,s=0,e.mode=Pt;break}if(e.flags=0,e.head&&(e.head.done=!1),!(e.wrap&1)||(((a&255)<<8)+(a>>8))%31){A.msg="incorrect header check",e.mode=b;break}if((a&15)!==Ht){A.msg="unknown compression method",e.mode=b;break}if(a>>>=4,s-=4,f=(a&15)+8,e.wbits===0)e.wbits=f;else if(f>e.wbits){A.msg="invalid window size",e.mode=b;break}e.dmax=1<<f,A.adler=e.check=1,e.mode=a&512?Wt:_,a=0,s=0;break;case Pt:for(;s<16;){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}if(e.flags=a,(e.flags&255)!==Ht){A.msg="unknown compression method",e.mode=b;break}if(e.flags&57344){A.msg="unknown header flags set",e.mode=b;break}e.head&&(e.head.text=a>>8&1),e.flags&512&&(w[0]=a&255,w[1]=a>>>8&255,e.check=J(e.check,w,2,0)),a=0,s=0,e.mode=Kt;case Kt:for(;s<32;){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}e.head&&(e.head.time=a),e.flags&512&&(w[0]=a&255,w[1]=a>>>8&255,w[2]=a>>>16&255,w[3]=a>>>24&255,e.check=J(e.check,w,4,0)),a=0,s=0,e.mode=Tt;case Tt:for(;s<16;){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}e.head&&(e.head.xflags=a&255,e.head.os=a>>8),e.flags&512&&(w[0]=a&255,w[1]=a>>>8&255,e.check=J(e.check,w,2,0)),a=0,s=0,e.mode=Ot;case Ot:if(e.flags&1024){for(;s<16;){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}e.length=a,e.head&&(e.head.extra_len=a),e.flags&512&&(w[0]=a&255,w[1]=a>>>8&255,e.check=J(e.check,w,2,0)),a=0,s=0}else e.head&&(e.head.extra=null);e.mode=Zt;case Zt:if(e.flags&1024&&(c=e.length,c>g&&(c=g),c&&(e.head&&(f=e.head.extra_len-e.length,e.head.extra||(e.head.extra=new Array(e.head.extra_len)),q(e.head.extra,n,o,c,f)),e.flags&512&&(e.check=J(e.check,n,c,o)),g-=c,o+=c,e.length-=c),e.length))break A;e.length=0,e.mode=Xt;case Xt:if(e.flags&2048){if(g===0)break A;c=0;do f=n[o+c++],e.head&&f&&e.length<65536&&(e.head.name+=String.fromCharCode(f));while(f&&c<g);if(e.flags&512&&(e.check=J(e.check,n,c,o)),g-=c,o+=c,f)break A}else e.head&&(e.head.name=null);e.length=0,e.mode=Vt;case Vt:if(e.flags&4096){if(g===0)break A;c=0;do f=n[o+c++],e.head&&f&&e.length<65536&&(e.head.comment+=String.fromCharCode(f));while(f&&c<g);if(e.flags&512&&(e.check=J(e.check,n,c,o)),g-=c,o+=c,f)break A}else e.head&&(e.head.comment=null);e.mode=jt;case jt:if(e.flags&512){for(;s<16;){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}if(a!==(e.check&65535)){A.msg="header crc mismatch",e.mode=b;break}a=0,s=0}e.head&&(e.head.hcrc=e.flags>>9&1,e.head.done=!0),A.adler=e.check=0,e.mode=_;break;case Wt:for(;s<32;){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}A.adler=e.check=cn(a),a=0,s=0,e.mode=TA;case TA:if(e.havedict===0)return A.next_out=i,A.avail_out=I,A.next_in=o,A.avail_in=g,e.hold=a,e.bits=s,Sr;A.adler=e.check=1,e.mode=_;case _:if(t===Nr||t===HA)break A;case de:if(e.last){a>>>=s&7,s-=s&7,e.mode=ue;break}for(;s<3;){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}switch(e.last=a&1,a>>>=1,s-=1,a&3){case 0:e.mode=zt;break;case 1:if(Ur(e),e.mode=PA,t===HA){a>>>=2,s-=2;break A}break;case 2:e.mode=An;break;case 3:A.msg="invalid block type",e.mode=b}a>>>=2,s-=2;break;case zt:for(a>>>=s&7,s-=s&7;s<32;){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}if((a&65535)!==(a>>>16^65535)){A.msg="invalid stored block lengths",e.mode=b;break}if(e.length=a&65535,a=0,s=0,e.mode=fe,t===HA)break A;case fe:e.mode=$t;case $t:if(c=e.length,c){if(c>g&&(c=g),c>I&&(c=I),c===0)break A;q(r,n,o,c,i),g-=c,o+=c,I-=c,i+=c,e.length-=c;break}e.mode=_;break;case An:for(;s<14;){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}if(e.nlen=(a&31)+257,a>>>=5,s-=5,e.ndist=(a&31)+1,a>>>=5,s-=5,e.ncode=(a&15)+4,a>>>=4,s-=4,e.nlen>286||e.ndist>30){A.msg="too many length or distance symbols",e.mode=b;break}e.have=0,e.mode=en;case en:for(;e.have<e.ncode;){for(;s<3;){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}e.lens[N[e.have++]]=a&7,a>>>=3,s-=3}for(;e.have<19;)e.lens[N[e.have++]]=0;if(e.lencode=e.lendyn,e.lenbits=7,y={bits:e.lenbits},k=$(yr,e.lens,0,19,e.lencode,0,e.work,y),e.lenbits=y.bits,k){A.msg="invalid code lengths set",e.mode=b;break}e.have=0,e.mode=tn;case tn:for(;e.have<e.nlen+e.ndist;){for(;m=e.lencode[a&(1<<e.lenbits)-1],l=m>>>24,D=m>>>16&255,u=m&65535,!(l<=s);){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}if(u<16)a>>>=l,s-=l,e.lens[e.have++]=u;else{if(u===16){for(F=l+2;s<F;){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}if(a>>>=l,s-=l,e.have===0){A.msg="invalid bit length repeat",e.mode=b;break}f=e.lens[e.have-1],c=3+(a&3),a>>>=2,s-=2}else if(u===17){for(F=l+3;s<F;){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}a>>>=l,s-=l,f=0,c=3+(a&7),a>>>=3,s-=3}else{for(F=l+7;s<F;){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}a>>>=l,s-=l,f=0,c=11+(a&127),a>>>=7,s-=7}if(e.have+c>e.nlen+e.ndist){A.msg="invalid bit length repeat",e.mode=b;break}for(;c--;)e.lens[e.have++]=f}}if(e.mode===b)break;if(e.lens[256]===0){A.msg="invalid code -- missing end-of-block",e.mode=b;break}if(e.lenbits=9,y={bits:e.lenbits},k=$(Bn,e.lens,0,e.nlen,e.lencode,0,e.work,y),e.lenbits=y.bits,k){A.msg="invalid literal/lengths set",e.mode=b;break}if(e.distbits=6,e.distcode=e.distdyn,y={bits:e.distbits},k=$(Cn,e.lens,e.nlen,e.ndist,e.distcode,0,e.work,y),e.distbits=y.bits,k){A.msg="invalid distances set",e.mode=b;break}if(e.mode=PA,t===HA)break A;case PA:e.mode=KA;case KA:if(g>=6&&I>=258){A.next_out=i,A.avail_out=I,A.next_in=o,A.avail_in=g,e.hold=a,e.bits=s,Ce(A,Q),i=A.next_out,r=A.output,I=A.avail_out,o=A.next_in,n=A.input,g=A.avail_in,a=e.hold,s=e.bits,e.mode===_&&(e.back=-1);break}for(e.back=0;m=e.lencode[a&(1<<e.lenbits)-1],l=m>>>24,D=m>>>16&255,u=m&65535,!(l<=s);){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}if(D&&(D&240)===0){for(B=l,E=D,p=u;m=e.lencode[p+((a&(1<<B+E)-1)>>B)],l=m>>>24,D=m>>>16&255,u=m&65535,!(B+l<=s);){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}a>>>=B,s-=B,e.back+=B}if(a>>>=l,s-=l,e.back+=l,e.length=u,D===0){e.mode=gn;break}if(D&32){e.back=-1,e.mode=_;break}if(D&64){A.msg="invalid literal/length code",e.mode=b;break}e.extra=D&15,e.mode=nn;case nn:if(e.extra){for(F=e.extra;s<F;){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}e.length+=a&(1<<e.extra)-1,a>>>=e.extra,s-=e.extra,e.back+=e.extra}e.was=e.length,e.mode=on;case on:for(;m=e.distcode[a&(1<<e.distbits)-1],l=m>>>24,D=m>>>16&255,u=m&65535,!(l<=s);){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}if((D&240)===0){for(B=l,E=D,p=u;m=e.distcode[p+((a&(1<<B+E)-1)>>B)],l=m>>>24,D=m>>>16&255,u=m&65535,!(B+l<=s);){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}a>>>=B,s-=B,e.back+=B}if(a>>>=l,s-=l,e.back+=l,D&64){A.msg="invalid distance code",e.mode=b;break}e.offset=u,e.extra=D&15,e.mode=rn;case rn:if(e.extra){for(F=e.extra;s<F;){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}e.offset+=a&(1<<e.extra)-1,a>>>=e.extra,s-=e.extra,e.back+=e.extra}if(e.offset>e.dmax){A.msg="invalid distance too far back",e.mode=b;break}e.mode=an;case an:if(I===0)break A;if(c=Q-I,e.offset>c){if(c=e.offset-c,c>e.whave&&e.sane){A.msg="invalid distance too far back",e.mode=b;break}c>e.wnext?(c-=e.wnext,C=e.wsize-c):C=e.wnext-c,c>e.length&&(c=e.length),h=e.window}else h=r,C=i-e.offset,c=e.length;c>I&&(c=I),I-=c,e.length-=c;do r[i++]=h[C++];while(--c);e.length===0&&(e.mode=KA);break;case gn:if(I===0)break A;r[i++]=e.length,I--,e.mode=KA;break;case ue:if(e.wrap){for(;s<32;){if(g===0)break A;g--,a|=n[o++]<<s,s+=8}if(Q-=I,A.total_out+=Q,e.total+=Q,Q&&(A.adler=e.check=e.flags?J(e.check,r,Q,i-Q):yA(e.check,r,Q,i-Q)),Q=I,(e.flags?a:cn(a))!==e.check){A.msg="incorrect data check",e.mode=b;break}a=0,s=0}e.mode=sn;case sn:if(e.wrap&&e.flags){for(;s<32;){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}if(a!==(e.total&4294967295)){A.msg="incorrect length check",e.mode=b;break}a=0,s=0}e.mode=In;case In:k=kr;break A;case b:k=En;break A;case we:return me;case Mr:default:return G}return A.next_out=i,A.avail_out=I,A.next_in=o,A.avail_in=g,e.hold=a,e.bits=s,(e.wsize||Q!==A.avail_out&&e.mode<b&&(e.mode<ue||t!==_t))&&un(A,A.output,A.next_out,Q-A.avail_out)?(e.mode=we,me):(d-=A.avail_in,Q-=A.avail_out,A.total_in+=d,A.total_out+=Q,e.total+=Q,e.wrap&&Q&&(A.adler=e.check=e.flags?J(e.check,r,Q,A.next_out-Q):yA(e.check,r,Q,A.next_out-Q)),A.data_type=e.bits+(e.last?64:0)+(e.mode===_?128:0)+(e.mode===PA||e.mode===fe?256:0),(d===0&&Q===0||t===_t)&&k===AA&&(k=br),k)}function hn(A){if(!A||!A.state)return G;var t=A.state;return t.window&&(t.window=null),A.state=null,AA}function mn(A,t){var e;return!A||!A.state||(e=A.state,(e.wrap&2)===0)?G:(e.head=t,t.done=!1,AA)}function pe(A,t){var e=t.length,n,r,o;return!A||!A.state||(n=A.state,n.wrap!==0&&n.mode!==TA)?G:n.mode===TA&&(r=1,r=yA(r,t,e,0),r!==n.check)?En:(o=un(A,t,e,e),o?(n.mode=we,me):(n.havedict=1,AA))}var OA={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"};function De(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var ye=Object.prototype.toString,Ne=class A{constructor(t){if(!(this instanceof A))return new A(t);this.options=Mt({chunkSize:16384,windowBits:0,to:""},t||{});var e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,e.windowBits===0&&(e.windowBits=-15)),e.windowBits>=0&&e.windowBits<16&&!(t&&t.windowBits)&&(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&(e.windowBits&15)===0&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new De,this.strm.avail_out=0;var n=fn(this.strm,e.windowBits);if(n!==T)throw new Error(OA[n]);if(this.header=new Be,mn(this.strm,this.header),e.dictionary&&(typeof e.dictionary=="string"?e.dictionary=Qe(e.dictionary):ye.call(e.dictionary)==="[object ArrayBuffer]"&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(n=pe(this.strm,e.dictionary),n!==T)))throw new Error(OA[n])}push(t,e){var n=this.strm,r=this.options.chunkSize,o=this.options.dictionary,i,g,I,a,s,d,Q=!1;if(this.ended)return!1;g=e===~~e?e:e===!0?mA:se,typeof t=="string"?n.input=Rt(t):ye.call(t)==="[object ArrayBuffer]"?n.input=new Uint8Array(t):n.input=t,n.next_in=0,n.avail_in=n.input.length;do{if(n.avail_out===0&&(n.output=Y(r),n.next_out=0,n.avail_out=r),i=ln(n,se),i===St&&o&&(typeof o=="string"?d=Qe(o):ye.call(o)==="[object ArrayBuffer]"?d=new Uint8Array(o):d=o,i=pe(this.strm,d)),i===bt&&Q===!0&&(i=T,Q=!1),i!==wA&&i!==T)return this.onEnd(i),this.ended=!0,!1;n.next_out&&(n.avail_out===0||i===wA||n.avail_in===0&&(g===mA||g===Ie))&&(this.options.to==="string"?(I=Gt(n.output,n.next_out),a=n.next_out-I,s=Jt(n.output,I),n.next_out=a,n.avail_out=r-a,a&&q(n.output,n.output,I,a,0),this.onData(s)):this.onData(YA(n.output,n.next_out))),n.avail_in===0&&n.avail_out===0&&(Q=!0)}while((n.avail_in>0||n.avail_out===0)&&i!==wA);return i===wA&&(g=mA),g===mA?(i=hn(this.strm),this.onEnd(i),this.ended=!0,i===T):(g===Ie&&(this.onEnd(T),n.avail_out=0),!0)}onData(t){this.chunks.push(t)}onEnd(t){t===T&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=qA(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg}};function Lr(A,t){var e=new Ne(t);if(e.push(A,!0),e.err)throw e.msg||OA[e.err];return e.result}var wn=Lr;function pn(A){let t=0;for(let r of A)t+=r.length;let e=new Uint8Array(t),n=0;for(let r of A)e.set(r,n),n+=r.length;return e}var Z={};Z.d=(A,t)=>{if(Array.isArray(t))for(var e=0;e<t.length;){var n=t[e++],r=t[e++];Z.o(A,n)?r===0&&e++:r===0?Object.defineProperty(A,n,{enumerable:!0,value:t[e++]}):Object.defineProperty(A,n,{enumerable:!0,get:r})}else for(var n in t)Z.o(t,n)&&!Z.o(A,n)&&Object.defineProperty(A,n,{enumerable:!0,get:t[n]})};Z.o=(A,t)=>Object.prototype.hasOwnProperty.call(A,t);Z.r=A=>{Symbol.toStringTag&&Object.defineProperty(A,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(A,"__esModule",{value:!0})};var be={};Z.r(be);Z.d(be,{ChunkSliceResult:()=>BA,__wbg_Error_92b29b0548f8b746:()=>_r,__wbg___wbindgen_throw_344f42d3211c4765:()=>Hr,__wbg_set_wasm:()=>Fn,decompress_all:()=>Nn,decompress_chunk_slice:()=>Yr});var qr="data:application/wasm;base64,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AghBAUEAEBUACywCAX8BfiMAQRBrIgEkACAAKQIAIQIgASAANgIMIAEgAjcCBCABQQRqEGYACyMBAX8jAEEQayICJAAgAiABNgIMIAIgADYCCCACQQhqEGUACyAAAkAgASgCAEUNACAAQbiXwAA2AgQgACABNgIADwsACx4BAX8CQCAAKAIAIgJFDQAgASACIAAoAgQQTQ8LAAsbAQF/EGogAEEEakEEEFgiASAANgIAIAFBBGoLHgEBfwJAIAAoAgAiAUEBSA0AIAAoAgQgAUEBEFMLCx4AIAAoAgAgACgCBEEAKALomkAiAEEEIAAbEQQAAAsjAQF/AkBBhIrAABAtIgANAEG4icAAQTpB9InAABA4AAsgAAsXAAJAIABBf2pBfk8NACABIABBARBTCwscAQF/AkAgACgCACIBRQ0AIAAoAgQgAUEBEFMLCxcAAkAgAUEJSQ0AIAEgABAODwsgABACCxUAIABBfGoiACAAKAIAQQRqQQQQUwsUAAJAIABFDQAgACABEF8ACxBWAAsRACAAIAFBAXRBAXIgAhAxAAsSAAJAIAFFDQAgACABIAIQUwsLEgAgACABIAIgAyAEQQAgBRADCxUAAkAgAEUNACAAIAAoAqhaEQIACwsaACAAQQApAoSWQDcCCCAAQQApAvyVQDcCAAsaACAAQQApAvSVQDcCCCAAQQApAuyVQDcCAAsWACAAKAIAIAEgAiAAKAIEKAIMEQcACw0AIAAgASACIAMQBw8LFABBACAANgK8mkBBAEEBNgK4mkALEwAgAEG4l8AANgIEIAAgATYCAAsQACABIAAoAgAgACgCBBBNCxAAIAEgACgCACAAKAIEEAoLCwAgACABIAIQKg8LCgAgACABEGkaAAsPACAAQZyVwAAgASACEAwLEQBBkJjAAEEjQaSYwAAQMQALCwAgACMAaiQAIwALCQAgACABEEQPCwkAIAAgARAuDwsJACAAIAEQYQALDABBr4fAAEEbEFoACw0AQcqHwABBzwAQWgALCQAgASAAEDsACwwAIAAgASkCADcDAAsJACABIAAQXQALDQAgAUH8mcAAQRgQCgsIACAAIAEQAAsIACAAIAEQAQsJACAAKAIAEEoLBwAgABA5AAsHACAAEEAACwcAIAAQJgALCwBBAEEBOgDAnkALCQAgAEEANgIACwUAEGsACwMADwsDAAALAgALC74aAgBBgIDAAAuUGkF0dGVtcHRlZCB0byBpbml0aWFsaXplIHRocmVhZC1sb2NhbCB3aGlsZSBpdCBpcyBiZWluZyBkcm9wcGVkFnNsaWNlIGluZGV4IHN0YXJ0cyBhdCDADSBidXQgZW5kcyBhdCDAABJyYW5nZSBzdGFydCBpbmRleCDAIiBvdXQgb2YgcmFuZ2UgZm9yIHNsaWNlIG9mIGxlbmd0aCDAABByYW5nZSBlbmQgaW5kZXggwCIgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggwAAvcnVzdGMvNDhhMjI5Y2VhZWZkNDk4NWM1MDk5MGIxNDExNmI2ZDg1NmFmMDk4NS9saWJyYXJ5L3N0ZC9zcmMvc3lzL3RocmVhZF9sb2NhbC9ub190aHJlYWRzLnJzAC9ydXN0Yy80OGEyMjljZWFlZmQ0OTg1YzUwOTkwYjE0MTE2YjZkODU2YWYwOTg1L2xpYnJhcnkvc3RkL3NyYy9zeXMvc3luYy9yd2xvY2svbm9fdGhyZWFkcy5ycwAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi93YXNtLWJpbmRnZW4tMC4yLjEyNi9zcmMvZXh0ZXJucmVmLnJzAC9ydXN0Yy80OGEyMjljZWFlZmQ0OTg1YzUwOTkwYjE0MTE2YjZkODU2YWYwOTg1L2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMvbW9kLnJzAC9ydXN0L2RlcHMvZGxtYWxsb2MtMC4yLjEzL3NyYy9kbG1hbGxvYy5ycwAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9saWJkZWZsYXRlci0xLjI1LjIvc3JjL2xpYi5ycwAA1gAQAF4AAABrAAAADQAAAMwCEAAKAAAAHAAAACQAAADMAhAACgAAAMIAAAApAAAAzAIQAAoAAAC2AAAAJwAAAMwCEAAKAAAAcQAAABwAAADMAhAACgAAAG0AAABBAAAAZGVjb21wcmVzc2lvbiBmYWlsZWRpbnZhbGlkIGJnemYgaGVhZGVyAMwCEAAKAAAATAAAAD0A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",BA=class A{static __wrap(t){let e=Object.create(A.prototype);return e.__wbg_ptr=t,Dn.register(e,e.__wbg_ptr,e),e}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,Dn.unregister(this),t}free(){let t=this.__destroy_into_raw();S.__wbg_chunksliceresult_free(t,0)}take_buffer(){try{let r=S.__wbindgen_add_to_stack_pointer(-16);S.chunksliceresult_take_buffer(r,this.__wbg_ptr);var t=R().getInt32(r+0,!0),e=R().getInt32(r+4,!0),n=kn(t,e).slice();return S.__wbindgen_export(t,e*1,1),n}finally{S.__wbindgen_add_to_stack_pointer(16)}}take_cpositions(){try{let r=S.__wbindgen_add_to_stack_pointer(-16);S.chunksliceresult_take_cpositions(r,this.__wbg_ptr);var t=R().getInt32(r+0,!0),e=R().getInt32(r+4,!0),n=yn(t,e).slice();return S.__wbindgen_export(t,e*8,8),n}finally{S.__wbindgen_add_to_stack_pointer(16)}}take_dpositions(){try{let r=S.__wbindgen_add_to_stack_pointer(-16);S.chunksliceresult_take_dpositions(r,this.__wbg_ptr);var t=R().getInt32(r+0,!0),e=R().getInt32(r+4,!0),n=yn(t,e).slice();return S.__wbindgen_export(t,e*8,8),n}finally{S.__wbindgen_add_to_stack_pointer(16)}}};Symbol.dispose&&(BA.prototype[Symbol.dispose]=BA.prototype.free);function Nn(A){try{let i=S.__wbindgen_add_to_stack_pointer(-16),g=bn(A,S.__wbindgen_export2),I=Fe;S.decompress_all(i,g,I);var t=R().getInt32(i+0,!0),e=R().getInt32(i+4,!0),n=R().getInt32(i+8,!0),r=R().getInt32(i+12,!0);if(r)throw Mn(n);var o=kn(t,e).slice();return S.__wbindgen_export(t,e*1,1),o}finally{S.__wbindgen_add_to_stack_pointer(16)}}function Yr(A,t,e,n,r){try{let I=S.__wbindgen_add_to_stack_pointer(-16),a=bn(A,S.__wbindgen_export2),s=Fe;S.decompress_chunk_slice(I,a,s,t,e,n,r);var o=R().getInt32(I+0,!0),i=R().getInt32(I+4,!0),g=R().getInt32(I+8,!0);if(g)throw Mn(i);return BA.__wrap(o)}finally{S.__wbindgen_add_to_stack_pointer(16)}}function _r(A,t){let e=Error(Sn(A,t));return Pr(e)}function Hr(A,t){throw new Error(Sn(A,t))}var Dn=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(A=>S.__wbg_chunksliceresult_free(A,1));function Pr(A){NA===H.length&&H.push(H.length+1);let t=NA;return NA=H[t],H[t]=A,t}function Kr(A){A<1028||(H[A]=NA,NA=A)}function yn(A,t){return A=A>>>0,Tr().subarray(A/8,A/8+t)}function kn(A,t){return A=A>>>0,Me().subarray(A/1,A/1+t)}var cA=null;function R(){return(cA===null||cA.buffer.detached===!0||cA.buffer.detached===void 0&&cA.buffer!==S.memory.buffer)&&(cA=new DataView(S.memory.buffer)),cA}var ZA=null;function Tr(){return(ZA===null||ZA.byteLength===0)&&(ZA=new Float64Array(S.memory.buffer)),ZA}function Sn(A,t){return Xr(A>>>0,t)}var XA=null;function Me(){return(XA===null||XA.byteLength===0)&&(XA=new Uint8Array(S.memory.buffer)),XA}function Or(A){return H[A]}var H=new Array(1024).fill(void 0);H.push(void 0,null,!0,!1);var NA=H.length;function bn(A,t){let e=t(A.length*1,1)>>>0;return Me().set(A,e/1),Fe=A.length,e}function Mn(A){let t=Or(A);return Kr(A),t}var VA=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});VA.decode();var Zr=2146435072,ke=0;function Xr(A,t){return ke+=t,ke>=Zr&&(VA=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),VA.decode(),ke=t),VA.decode(Me().subarray(A,A+t).slice())}var Fe=0,S;function Fn(A){S=A}var QA=null,Se=null;async function Vr(){return QA||(Se||(Se=(async()=>{let t=await(await fetch(qr)).arrayBuffer(),{instance:e}=await WebAssembly.instantiate(t,{"./bgzf_wasm_bg.js":be});return QA=e.exports,Fn(QA),QA})()),Se)}async function xn(A){return QA||await Vr(),Nn(A)}var jr=26;function Jn(A){return A[0]===31&&A[1]===139}function Wr(A){return A.length>=jr&&Jn(A)&&A[2]===8&&A[3]===4&&A[10]===6&&A[12]===66&&A[13]===67}function Gn(A){return A instanceof Error?A.message:`${A}`}async function Rn(A){if(typeof DecompressionStream<"u"){let t=new Blob([A]).stream().pipeThrough(new DecompressionStream("gzip"));return new Uint8Array(await new Response(t).arrayBuffer())}else return wn(A,void 0)}function zr(A){return Gn(A).includes("invalid gzip header")?new Error("problem decompressing block: incorrect gzip header check",{cause:A}):A}async function vn(A){if(A.length===0)return new Uint8Array(0);if(!Wr(A)){if(Jn(A))return Rn(A);throw new Error("problem decompressing block: not a valid bgzf or gzip block")}try{return await xn(A)}catch(t){if(Gn(t).includes("invalid bgzf header"))return Rn(A);throw zr(t)}}var $r=10,Ai=32*1024*1024;function ei(A){let t=0,e=[],n=()=>{t--,e.shift()?.()};return async r=>{t>=A&&await new Promise(o=>{e.push(o)}),t++;try{return await r()}finally{n()}}}function ti(A,t,e){let n=[],r=A.length,o=0;for(;o<r;){let i=o+1;for(;i<r&&t[i]-t[o]<Ai;)i+=1;n.push({compressedStart:A[o],compressedEnd:i<r?A[i]:e??A[r-1]+65536,uncompressedStart:t[o]}),o=i}return n}function ni(A,t,e,n){let r=Math.max(0,e-t),o=Math.min(n,t+A.length)-t;return r<A.length?A.subarray(r,o):new Uint8Array(0)}var CA=class{filehandle;gzi;limit;constructor({filehandle:t,gziFilehandle:e,blockConcurrency:n=$r}){this.filehandle=t,this.gzi=new hA({filehandle:e}),this.limit=ei(n)}async read(t,e){let{compressed:n,uncompressed:r,nextCompressedPosition:o}=await this.gzi.getRelevantBlocksForRead(t,e);if(n.length===0)return new Uint8Array(0);let i=e+t,g=ti(n,r,o),I=await Promise.all(g.map(a=>this.limit(async()=>{let s=await this.filehandle.read(a.compressedEnd-a.compressedStart,a.compressedStart);return ni(await vn(s),a.uncompressedStart,e,i)})));return pn(I)}};var Ln=x(Ro());async function qn({location:A,name:t}){let e=o=>(0,Ln.openLocation)({uri:o,locationType:"UriLocation"}),n=await e(`${A.uri}.idx`).readFile("utf8"),r=oi(n,t);if(r){let i=await new CA({filehandle:e(A.uri),gziFilehandle:e(`${A.uri}.gzi`)}).read(r.length,r.offset);return new TextDecoder().decode(i).trim()}}var Un=A=>A.replace(/\.\d+$/,"");function oi(A,t){let e=Un(t);for(let n of A.split(`
|
|
11
|
-
`)){let[r,o,i]=n.split(" ");if(r&&Un(r)===e)return{offset:Number(o),length:Number(i)}}}var Yn=x(fA());function _n({model:A}){let{assemblyManager:t,hovered:e}=(0,Yn.getSession)(A),{transcriptToMsaMap:n,connectedView:r,mafRegion:o}=A;if(!r?.initialized||!Ye(e)||!SA(A))return;let{coord:i,refName:g}=e.hoverPosition,I=i-1,a=t.get(o?.assemblyName??r.assemblyNames[0]??""),s=Q=>(a?.initialized?a.getCanonicalRefName(Q):void 0)??Q,d=s(g);if(o)return d!==s(o.refName)||!r.assemblyNames.includes(o.assemblyName)||I<o.start||I>=o.end?void 0:qe(A,I-o.start);if(n&&d===s(n.refName)){let Q=n.g2p[I];if(Q!==void 0)return MA(A,Q)}}var ri="jbrowse-msaview-domain-cache",jA="domains",ii=1,Hn=tA(ri,ii,A=>{A.objectStoreNames.contains(jA)||A.createObjectStore(jA,{keyPath:"accession"})});function Pn(A){return nA("domain cache read",async()=>{let e=(await Hn()).transaction(jA,"readonly"),n=await Promise.all(A.map(r=>e.store.get(r)));return await e.done,n},[])}function Kn(A){return nA("domain cache write",async()=>{let e=(await Hn()).transaction(jA,"readwrite");for(let n of A)await e.store.put(n);await e.done},void 0)}function X(A,t){let e=new RegExp(`<${t}>(.*?)</${t}>`,"s").exec(A)?.[1];return e===void 0?void 0:je(e)}function ai(A){let t={},e=/<GBQualifier>([\s\S]*?)<\/GBQualifier>/g,n;for(;(n=e.exec(A))!==null;){let r=X(n[1],"GBQualifier_name"),o=X(n[1],"GBQualifier_value");r&&o!==void 0&&t[r]===void 0&&(t[r]=o)}return t}function gi(A){let t=[],e=[],n=/<GBInterval>([\s\S]*?)<\/GBInterval>/g,r;for(;(r=n.exec(A))!==null;){let o=r[1],i=X(o,"GBInterval_from"),g=X(o,"GBInterval_to"),I=X(o,"GBInterval_point");i&&g?(t.push(Number(i)),e.push(Number(g))):I&&(t.push(Number(I)),e.push(Number(I)))}return t.length>0?{start:Math.min(...t),end:Math.max(...e)}:void 0}var si=2;function Ii(A){let t=X(A,"GBFeature_key"),e=ai(A),n=e.db_xref,r=gi(A);if((t==="Region"||t==="Site")&&n?.startsWith("CDD:")&&r&&r.end-r.start+1>=si){let o=n.replace("CDD:",""),i=t==="Region",g=e.note?.split(/[[(]/)[0]?.trim(),I=i?e.region_name??o:g||e.site_type||"site",a=i?o:`${o}:${I}`;return{signature:{entry:{name:I,description:e.note??I,accession:a}},locations:[r]}}}function ci(A){let t=new Map,e=/<GBSeq>([\s\S]*?)<\/GBSeq>/g,n;for(;(n=e.exec(A))!==null;){let r=n[1],o=[],i=/<GBFeature>([\s\S]*?)<\/GBFeature>/g,g;for(;(g=i.exec(r))!==null;){let I=Ii(g[1]);I&&o.push(I)}for(let I of[X(r,"GBSeq_accession-version"),X(r,"GBSeq_primary-accession")])I&&t.set(I,o)}return t}async function Tn(A){let t=[...new Set(A)].filter(Boolean),e=new Map,n=await Pn(t),r=[];t.forEach((g,I)=>{let a=n[I];a?e.set(g,a.matches):r.push(g)});let o=[],i=100;for(let g=0;g<r.length;g+=i){let I=r.slice(g,g+i),a=await Ve(Xe({db:"protein",id:I.join(","),rettype:"gp",retmode:"xml"})),s=ci(a);for(let d of I){let Q=s.get(d);Q!==void 0&&(e.set(d,Q),o.push({accession:d,matches:Q}))}}return o.length>0&&await Kn(o),e}async function On(A){let t=A.data.treeMetadata;if(!t)throw new Error("No sequence metadata available to look up domains");let e=JSON.parse(t),n=Object.entries(e).map(([i,g])=>({rowName:i,accession:g.Accession})).filter(i=>!!i.accession);if(n.length===0)throw new Error("No NCBI accessions found in alignment rows");A.setProgress(`Fetching protein domains from NCBI for ${n.length} sequences...`);let r=await Tn(n.map(i=>i.accession)),o=n.flatMap(({rowName:i,accession:g})=>(r.get(g)??[]).flatMap(({signature:I,locations:a})=>I.entry?a.map(({start:s,end:d})=>({id:i,accession:I.entry.accession,name:I.entry.name,description:I.entry.description,start:s,end:d})):[]));if(o.length===0)throw new Error("No CDD domain annotations found for these proteins");A.setAnnotations(o)}var Qi="jbrowse-msaview-data",Bi=1,EA="msa-data",xe=tA(Qi,Bi,A=>{A.objectStoreNames.contains(EA)||A.createObjectStore(EA,{keyPath:"id"}).createIndex("timestamp","timestamp",{unique:!1})});function Zn(){return`msa-${Date.now()}-${Math.random().toString(36).slice(2,11)}`}async function Xn(A,t){try{let e=await xe(),n={...t,id:A,timestamp:Date.now()};return await e.put(EA,n),!0}catch(e){return console.warn("Failed to store MSA data:",e),!1}}async function Vn(A){let t=await xe(),e=await t.get(EA,A);if(!e)return;try{await t.put(EA,{...e,timestamp:Date.now()})}catch(i){console.warn("Failed to refresh MSA data timestamp:",i)}let{id:n,timestamp:r,...o}=e;return o}async function jn(A=10080*60*1e3){try{let t=await xe(),e=Date.now()-A,o=await t.transaction(EA,"readwrite").store.index("timestamp").openCursor(IDBKeyRange.upperBound(e)),i=0;for(;o;)await o.delete(),i++,o=await o.continue();return i}catch(t){return console.warn("Failed to cleanup old MSA data:",t),0}}var Wn=x(fA()),zn=x(RA());function Ci(A){if(!(A.rows.length<2))try{A.calculateNeighborJoiningTreeFromMSA()}catch(t){console.error(t);try{(0,Wn.getSession)(A).notify(`The alignment loaded, but no tree was built. ${t instanceof Error?t.message:String(t)}`,"warning")}catch(e){console.error(e)}}}function Re(A){(0,zn.untracked)(()=>{Ei(A)})}function Ei({self:A,message:t,launch:e,onLaunched:n}){A.launchController?.abort();let r=new AbortController,{signal:o}=r;A.setLaunchController(r);let i=I=>{o.aborted||I()},g={signal:o,act:i,onProgress:I=>{i(()=>{A.setProgress(I)})},onRid:I=>{i(()=>{A.setRid(I)})}};(async()=>{try{i(()=>{A.setProgress(t),A.setError(void 0)});let I=await e(g);i(()=>{A.setData(I),n()}),I.tree||i(()=>{Ci(A)})}catch(I){V(I)||(i(()=>{A.setError(I)}),console.error(I))}finally{i(()=>{A.setProgress(""),A.launchController===r&&A.setLaunchController(void 0)})}})()}function di(A){let t=A;return t.type==="ProteinView"&&Array.isArray(t.structures)}function $n(A){return A.filter(di)}function Ao(A){let t=A.strand,e=A.refName;if(t!==-1&&t!==1)throw new Error(`Invalid strand value: ${t}. Expected 1 or -1.`);if(!e)throw new Error("refName is required");let n=new Map;for(let I of A.subfeatures??[])if(I.type==="CDS"&&I.start<I.end){let a=`${I.start}-${I.end}`;n.has(a)||n.set(a,I)}let r=[...n.values()].sort((I,a)=>t*(I.start-a.start)),o={},i={},g={};if(r.length!==0){let a=(3-(r[0]?.phase??0))%3,s=-1;for(let d of r){let Q=d.end-d.start;for(let c=0;c<Q;c++){let C=t===1?d.start+c:d.end-1-c,h=Math.floor(a++/3);o[C]=h,h!==s?(i[h]=C,g[h]=[C],s=h):g[h].push(C)}}}return{g2p:o,p2g:i,p2gCodon:g,refName:e,strand:t}}function eo(A,t){let e=A[t];if(e===void 0)return;let n=[...e].sort((o,i)=>o-i),r=[];for(let o of n){let i=r.at(-1);i?.[1]===o?i[1]=o+1:r.push([o,o+1])}return r}var fi=1e6;function Je(A){return typeof A=="object"&&A!==null}function to(A){return Number.isSafeInteger(A)}function no(A){return Je(A)&&typeof A.type=="string"&&A.type.toLowerCase()==="cds"&&to(A.start)&&to(A.end)&&A.start<A.end}function ui(A){let t=Number(A);return t===1||t===2?t:0}function li(A){let{subfeatures:t}=A,e=(Array.isArray(t)?t:[]).filter(no);return e.length>0?e:no(A)?[A]:[]}function hi(A){if(!Je(A))return{reason:"it is not a feature"};let{refName:t,strand:e}=A;if(typeof t!="string"||!t)return{reason:"it has no refName"};if(e!==1&&e!==-1)return{reason:`its strand is ${JSON.stringify(e)}, not 1 or -1`};let n=li(A).map(o=>({refName:t,type:"CDS",start:o.start,end:o.end,phase:ui(o.phase)}));if(n.length===0)return{reason:"it has no CDS with numeric start < end"};let r=n.reduce((o,i)=>o+i.end-i.start,0);return r>fi?{reason:`its CDS covers ${r} bases, more than any real transcript`}:{transcript:{refName:t,strand:e,start:Math.min(...n.map(o=>o.start)),end:Math.max(...n.map(o=>o.end)),subfeatures:n}}}var oo=new WeakSet;function ro(A){let t=hi(A);if("reason"in t){Je(A)&&!oo.has(A)&&(oo.add(A),console.warn(`[msaview] the linked transcript is not mapped to the genome: ${t.reason}`));return}let e=Ao(t.transcript);return{...e,codingPositions:Object.keys(e.g2p).map(Number).sort((n,r)=>n-r)}}function mi(A,t){let e=0,n=A.length;for(;e<n;){let r=e+n>>>1;A[r]<t?e=r+1:n=r}return e}function io(A,t,e){let n=new Set,{codingPositions:r,g2p:o}=A;for(let i=mi(r,t);i<r.length&&r[i]<e;i++)n.add(o[r[i]]);return n}var wi="This view's alignment is no longer in browser storage. Stored alignments are kept for 7 days after they were last used, and are lost when site data is cleared.",pi=" Retry runs the original search again and rebuilds it.",Di=" Relaunch it from the gene to rebuild it.",yi="Part of this view is no longer in browser storage: annotations, a tree or row metadata too large for the session. Stored documents are kept for 7 days after they were last used, and are lost when site data is cleared.";function so(A){let{dataStoreId:t}=A;t&&(async()=>{try{A.setLoadingStoredData(!0);let e=await Vn(t);if(A.dataStoreId!==t)return;(0,kA.transaction)(()=>{if(e){let{data:n}=A;e.msa&&!n.msa&&A.setMSA(e.msa),e.tree&&!n.tree&&A.setTree(e.tree),e.treeMetadata&&!n.treeMetadata&&A.setTreeMetadata(e.treeMetadata),e.gff&&!n.gff&&A.setGFF(e.gff),A.setLastStoredData(e)}else A.setDataStoreId(void 0),Ni(A)?A.addWarning(yi):A.setError(new Error(wi+(A.blastParams??A.orthologParams?pi:Di)))})}catch(e){console.error("Failed to load MSA data from IndexedDB:",e)}finally{A.setLoadingStoredData(!1)}})()}function Ni(A){return!!(A.data.msa||A.msaFilehandle||A.init?.msaIndexedLocation)}function ki(A){return!(A.msa||A.tree||A.treeMetadata||A.gff)}function Si(A,t){return!!A&&A.msa===t.msa&&A.tree===t.tree&&A.treeMetadata===t.treeMetadata&&A.gff===t.gff}function Io(A){let{dataStoreId:t,ownsDataStoreRow:e,isStoringData:n,loadingStoredData:r,lastStoredData:o}=A,i=A.unsavedDocuments;if(!(n||r||Si(o,i))){if(ki(i)){o&&(0,kA.transaction)(()=>{A.setDataStoreId(void 0),A.setOwnsDataStoreRow(!1),A.setLastStoredData(i)});return}A.setIsStoringData(!0),(async()=>{try{let g=t&&e?t:Zn();await Xn(g,i)&&(0,kA.transaction)(()=>{A.setDataStoreId(g),A.setOwnsDataStoreRow(!0)})}catch(g){console.error("Failed to store MSA data to IndexedDB:",g)}finally{(0,kA.transaction)(()=>{A.setLastStoredData(i),A.setIsStoringData(!1)})}})()}}function co(A){A.orthologParams&&!A.launchCompleted&&!Qo(A)&&Re({self:A,message:"Resolving orthologs",launch:t=>yt({self:A,scope:t}),onLaunched:()=>{A.setLaunchCompleted(!0)}})}function Qo(A){return!!A.connectedTranscript&&!A.connectedFeature}function Bo(A){A.blastParams&&!A.launchCompleted&&!Qo(A)&&Re({self:A,message:"Submitting query",launch:t=>ht({self:A,scope:t}),onLaunched:()=>{A.setLaunchCompleted(!0)}})}function Co(A){let{rows:t,domainsRequested:e,annotations:n}=A,r=A.data.treeMetadata?.includes('"Accession"')??!1;t.length>0&&r&&n.length===0&&!e&&(A.setDomainsRequested(!0),(async()=>{try{await On(A)}catch(o){console.error("[msaview-domains] auto-load failed:",o)}finally{A.setProgress("")}})())}function Eo(A){let{init:t}=A;if(t){let{msaUrl:e,msaIndexedLocation:n,msaName:r,querySeqName:o}=t,i=!!(n&&r);if(i&&A.data.msa)return;(async()=>{try{if(A.setError(void 0),e){let g=_e(e);g&&(A.setUniprotId(g),A.setQuerySeqName("query"))}if(o&&A.setQuerySeqName(o),e)A.setMSAFilehandle({uri:e,locationType:"UriLocation"});else if(n&&r){let g=await qn({location:n,name:r});if(g)A.setMSA(g);else throw new Error(`No alignment named ${r} in ${n.uri}`)}i||A.setInit(void 0)}catch(g){A.setError(g),console.error(g)}})()}}function fo(A){let t=!1;return()=>{let e=_n({model:A});e!==void 0?(A.setMousePos(e),t=!0):t&&(A.setMousePos(void 0),t=!1)}}function ao(A,t){let{connectedViewId:e,transcriptToMsaMap:n}=A;if(!n||!SA(A))return[];let r=new Set;for(let o of $n((0,go.getSession)(A).views))for(let i of o.structures)if(i.connectedViewId===e)for(let{start:g,end:I}of i[t]??[])for(let a of io(n,g,I)){let s=MA(A,a);s!==void 0&&r.add(s)}return[...r]}function bi(A,t){return!A||!t?A===t:A.length===t.length&&A.every((e,n)=>e===t[n])}function uo(A){let t;return()=>{let{connectedViewId:e,transcriptToMsaMap:n}=A;if(!e||!n)return;let r=ao(A,"hoverGenomeHighlights"),o=r.length?[]:ao(A,"clickGenomeHighlights"),i=A.highlightColumns??[],g=r.length?r:o.length?o:i,I=g.length>0?g:void 0;bi(t,I)||(t=I,A.setHighlightedColumns(I))}}function lo(){jn().catch(A=>{console.error("Failed to cleanup old MSA data:",A)})}function WA({model:A,coord:t}){let{querySeqName:e,transcriptToMsaMap:n,mafRegion:r}=A,o=A.visibleColToSeqPos(e,t);if(o===void 0)return[];if(r){let i=r.start+o;return i<r.end?[{refName:r.refName,start:i,end:i+1}]:[]}if(n){let{refName:i,p2gCodon:g}=n,I=o+(A.querySeqOffset??0);return eo(g,I)?.map(([a,s])=>({refName:i,start:a,end:s}))??[]}return[]}function ho(A){let t=WA(A),e=t[0],n=t.at(-1);return e&&n?{refName:e.refName,start:e.start,end:n.end}:void 0}var po=x(Mo()),ve=x(fA()),Do=x(xo()),yo=x(Ue()),zA=x(RA());function mo(A){return A.replace(/\.\d+$/,"")}function Mi(A,t){let e=mo(t);return[A.get("name"),A.get("id"),A.get("transcript_id"),A.id()].some(n=>typeof n=="string"&&(n===t||mo(n)===e))}function wo(A){return A.map(t=>({assemblyName:t.assemblyName,refName:t.refName,start:Math.floor(t.start),end:Math.ceil(t.end)}))}function Fi(A){let t=wo(A.dynamicBlocks?.contentBlocks??[]),e=wo(A.displayedRegions);return t.length>0?[t,e]:[e]}function No(A){return A.filter(t=>t.type==="FeatureTrack")}async function xi(A,t){let e=A.connectedView,n=(0,ve.getSession)(A),r="msaview-connectedTranscript",o=No(e.tracks);for(let i of Fi(e))for(let g of o){let I={adapterConfig:(0,po.getConf)(g,"adapter"),sessionId:r,regions:i},a=await n.rpcManager.call(r,"CoreGetFeatures",I);for(let s of a){let d=Te(s).find(Q=>Mi(Q,t));if(d)return d}}}async function Ri(A,t){let e=await Oe({start:t.get("start"),end:t.get("end"),refName:t.get("refName"),assemblyName:A.connectedView.assemblyNames[0],session:(0,ve.getSession)(A)});return(0,Do.translateTranscript)({transcript:t,...e})?.protein}var Ge=new WeakMap;async function Ji({self:A,transcriptId:t,blastParams:e,orthologParams:n,isCurrent:r}){let o=No(A.connectedView.tracks).length;try{A.setProgress(`Looking up ${t} in the genome view...`);let i=await xi(A,t);if(!i)throw new Error(`Transcript "${t}" was not found in the ${o} feature track(s) open in the connected genome view. Open the gene track that carries it, and make sure the view is on its locus.`);let g=await Ri(A,i);if(!g)throw new Error(`Transcript "${t}" has no CDS to translate`);if(!r())return;let I=i.toJSON();(0,zA.transaction)(()=>{A.setProgress(""),e&&!e.proteinSequence&&A.setBlastParams({...e,selectedTranscript:I,proteinSequence:g}),n&&!n.proteinSequence&&A.setOrthologParams({...n,selectedTranscript:I,proteinSequence:g}),A.setConnectedFeature(I)})}catch(i){console.error(i),r()&&(A.setProgress(""),A.setError(i))}}function ko(A){let{connectedTranscript:t,connectedFeature:e,connectedView:n,blastParams:r,orthologParams:o}=A;if(!t||e||!n?.initialized||n.tracks.length===0)return;let i=(Ge.get(A)??0)+1;Ge.set(A,i),(0,zA.untracked)(()=>{Ji({self:A,transcriptId:t,blastParams:r,orthologParams:o,isCurrent:()=>(0,yo.isAlive)(A)&&Ge.get(A)===i})})}var Vg=["ncbi","panther","uniref"];function Gi(){return M.types.compose(So.BaseViewModel,At(),M.types.model("MsaView",{connectedViewId:M.types.maybe(M.types.string),connectedFeature:M.types.frozen(),connectedTranscript:M.types.maybe(M.types.string),blastParams:M.types.frozen(),orthologParams:M.types.frozen(),querySeqName:"QUERY",querySeqOffset:0,uniprotId:M.types.maybe(M.types.string),zoomToBaseLevel:!1,init:M.types.frozen(),dataStoreId:M.types.maybe(M.types.string),launchCompleted:!1,mafRegion:M.types.frozen()})).volatile(()=>({rid:void 0,progress:"",loadingStoredData:!1,isStoringData:!1,lastStoredData:void 0,ownsDataStoreRow:!1,launchController:void 0,domainsRequested:!1})).views(A=>({get transcriptToMsaMap(){return A.connectedFeature?ro(A.connectedFeature):void 0},get connectedView(){let{views:t}=(0,bo.getSession)(A);return t.find(e=>e.id===A.connectedViewId)}})).views(A=>({get connectedHoverHighlights(){let{mouseCol:t}=A;return t===void 0?[]:WA({model:A,coord:t})},get connectedClickHighlights(){let{mouseClickCol:t}=A;return t===void 0?[]:WA({model:A,coord:t})},get connectedHighlights(){return[...this.connectedHoverHighlights,...this.connectedClickHighlights]}})).views(A=>({get hostRestoresData(){let{msaIndexedLocation:t,msaName:e}=A.init??{};return A.hostCarriesData||!!(t&&e)},get unsavedDocuments(){let{data:t,init:e}=A,n=(0,M.getSnapshot)(t),r=(o,i)=>{let g=t[o];return g&&!i&&!n[o]?g:void 0};return{msa:r("msa",A.msaFilehandle??e?.msaIndexedLocation),tree:r("tree",A.treeFilehandle),treeMetadata:r("treeMetadata",A.treeMetadataFilehandle),gff:r("gff",A.gffFilehandle)}}})).actions(A=>({setZoomToBaseLevel(t){A.zoomToBaseLevel=t},setProgress(t){A.progress=t},setRid(t){A.rid=t},setBlastParams(t){A.blastParams=t},setConnectedFeature(t){A.connectedFeature=t},setOrthologParams(t){A.orthologParams=t},setInit(t){A.init=t},setQuerySeqName(t){A.querySeqName=t},setUniprotId(t){A.uniprotId=t},setDataStoreId(t){A.dataStoreId=t},setLaunchCompleted(t){A.launchCompleted=t},setLoadingStoredData(t){A.loadingStoredData=t},setIsStoringData(t){A.isStoringData=t},setLastStoredData(t){A.lastStoredData=t},setOwnsDataStoreRow(t){A.ownsDataStoreRow=t},setLaunchController(t){A.launchController=t},cancelLaunch(){A.launchController?.abort(),A.launchController=void 0,A.blastParams=void 0,A.orthologParams=void 0,A.init=void 0,A.launchCompleted=!1,A.progress="",A.rid=void 0,A.error=void 0},retryLaunch(){A.launchController?.abort(),A.launchController=void 0,A.progress="",A.rid=void 0,A.error=void 0,A.launchCompleted=!1,A.blastParams&&(A.blastParams={...A.blastParams}),A.orthologParams&&(A.orthologParams={...A.orthologParams}),A.init&&(A.init={...A.init})},setDomainsRequested(t){A.domainsRequested=t},handleMsaClick(t){let{connectedView:e,zoomToBaseLevel:n}=A,r=ho({model:A,coord:t});!r||!e||(n?e.navTo(r):e.centerAt(r.start,r.refName))}})).actions(A=>{let t=A.setMouseClickPos.bind(A);return{setMouseClickPos(e,n){t(e,n),e!==void 0&&A.handleMsaClick(e)}}}).actions(A=>{let t=A.reset.bind(A);return{reset(){let{displayName:e,minimized:n,zoomToBaseLevel:r}=A;t(),e!==void 0&&A.setDisplayName(e),A.setMinimized(n),A.setZoomToBaseLevel(r),A.setDomainsRequested(!1),A.setLastStoredData(void 0),A.setOwnsDataStoreRow(!1)}}}).views(A=>{let t=A.menuItems.bind(A);return{menuItems(){return[...t(),{label:"Zoom to base level on click?",type:"checkbox",checked:A.zoomToBaseLevel,onClick:()=>{A.setZoomToBaseLevel(!A.zoomToBaseLevel)}}]}}}).actions(A=>({afterCreate(){lo(),(0,M.addDisposer)(A,()=>{A.launchController?.abort()}),so(A);for(let t of[Io,ko,Bo,co,Eo,Co])(0,M.addDisposer)(A,(0,$A.autorun)(()=>{t(A)}));(0,M.addDisposer)(A,(0,$A.autorun)(fo(A))),(0,M.addDisposer)(A,(0,$A.autorun)(uo(A)))}}))}export{Gi as default,Vg as orthologSources};
|
|
12
|
-
//# sourceMappingURL=model-
|
|
10
|
+
`),onProgress:d,signal:c}),treeMetadata:JSON.stringify(B)}}async function gr({taxId:A,geneCandidates:t,onProgress:e,signal:n,...r}){e("Resolving gene at NCBI...");let o=await We(t,A,n);if(!o)throw new Error(`Could not resolve any of ${t.join(", ")} to an NCBI gene in taxon ${A}. Try the NCBI BLAST tab, which needs no gene identifier.`);let i=await Br(o.geneId,n),g=await $e({geneId:o.geneId,onProgress:e,signal:n,...r});return{geneId:o.geneId,representative:i,rows:g}}var sr={ncbi:"NCBI",panther:"PANTHER",uniref:"UniProt"};async function Ir({geneCandidates:A,identity:t,referenceProteomesOnly:e,...n}){let r=await lt({candidates:A,identity:t,referenceProteomesOnly:e,...n});return{geneId:r.query.id,representative:{accession:r.query.accession,sequence:r.query.sequence},rows:r.rows}}async function cr({geneCandidates:A,...t}){let e=await Dt({candidates:A,...t});return{geneId:e.query?.geneRef??e.matched,representative:e.query,rows:e.rows}}async function Qr(A,t,e){let n;try{let r=(await rA([A],e)).get(A);n=r?.commonName??r?.sciname}catch(r){if(V(r))throw r;console.warn("[msaview-orthologs] taxonomy name lookup failed:",r)}return oA([...t.map(r=>r.label),`${n??"query"}_query`]).at(-1)}async function Br(A,t){try{return await ze(A,t)}catch(e){if(V(e))throw e;console.warn("[msaview-orthologs] query protein lookup failed:",e);return}}function Cr(A,t,e,n){let r={"Gene ID":t},o=bA(A.orthologParams?.selectedTranscript);return o&&(r.Transcript=o),n?.sequence===e&&(r.Accession=n.accession),r}function Er(A){let t={"Scientific name":A.scientificName,Accession:A.protein,"Gene ID":A.geneId};return A.commonName&&(t["Common name"]=A.commonName),t}function LA(A,t=0){let e=A.getUint32(t,!0);return A.getUint32(t+4,!0)*4294967296+e}var ge=16,dr={compressed:new Float64Array(0),uncompressed:new Float64Array(0)};function Nt(A,t){let e=new Float64Array(t+1),n=new Float64Array(t+1),r=new DataView(A.buffer,A.byteOffset,A.byteLength);for(let o=0;o<t;o+=1){let i=o*ge;e[o+1]=LA(r,i),n[o+1]=LA(r,i+8)}return{compressed:e,uncompressed:n}}function kt(A,t){let e=0,n=A.length;for(;e<n;){let r=e+n>>>1;A[r]<=t?e=r+1:n=r}return e}var hA=class{filehandle;index;constructor({filehandle:t}){this.filehandle=t}_getIndex(){return this.index||(this.index=this._readIndex().catch(t=>{throw this.index=void 0,t})),this.index}async _readIndex(){let t=await this.filehandle.read(8,0),e=LA(new DataView(t.buffer,t.byteOffset,t.byteLength));if(e===0)return Nt(new Uint8Array(0),0);if(e>Number.MAX_SAFE_INTEGER/ge)throw new TypeError("integer overflow");let n=await this.filehandle.read(ge*e,8);return Nt(n,e)}async getRelevantBlocksForRead(t,e){if(t===0)return{...dr,nextCompressedPosition:void 0};let{compressed:n,uncompressed:r}=await this._getIndex(),o=kt(r,e)-1,i=kt(r,e+t-1);return{compressed:n.subarray(o,i),uncompressed:r.subarray(o,i),nextCompressedPosition:i<n.length?n[i]:void 0}}};var se=0;var Ie=2;var mA=4;var T=0,wA=1,St=2;var bt=-5;function fr(A,t){return Object.prototype.hasOwnProperty.call(A,t)}function Mt(A){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var e=t.shift();if(e){if(typeof e!="object")throw new TypeError(e+"must be non-object");for(var n in e)fr(e,n)&&(A[n]=e[n])}}return A}function YA(A,t){return A.length===t?A:A.subarray?A.subarray(0,t):(A.length=t,A)}var pA={arraySet:function(A,t,e,n,r){if(t.subarray&&A.subarray){A.set(t.subarray(e,e+n),r);return}for(var o=0;o<n;o++)A[r+o]=t[e+o]},flattenChunks:function(A){var t,e,n,r,o,i;for(n=0,t=0,e=A.length;t<e;t++)n+=A[t].length;for(i=new Uint8Array(n),r=0,t=0,e=A.length;t<e;t++)o=A[t],i.set(o,r),r+=o.length;return i},Buf8:function(A){return new Uint8Array(A)},Buf16:function(A){return new Uint16Array(A)},Buf32:function(A){return new Int32Array(A)}},DA={arraySet:function(A,t,e,n,r){for(var o=0;o<n;o++)A[r+o]=t[e+o]},flattenChunks:function(A){return[].concat.apply([],A)},Buf8:function(A){return new Array(A)},Buf16:function(A){return new Array(A)},Buf32:function(A){return new Array(A)}},sA=()=>{let A=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";return sA=()=>A,A},q=(A,t,e,n,r)=>(q=sA()?pA.arraySet:DA.arraySet,q(A,t,e,n,r)),qA=A=>(qA=sA()?pA.flattenChunks:DA.flattenChunks,qA(A)),Y=A=>(Y=sA()?pA.Buf8:DA.Buf8,Y(A)),O=A=>(O=sA()?pA.Buf16:DA.Buf16,O(A)),z=A=>(z=sA()?pA.Buf32:DA.Buf32,z(A));var Ft=function(){let A=!0;try{String.fromCharCode.apply(null,[0])}catch{A=!1}return Ft=()=>A,A},xt=function(){let A=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{A=!1}return xt=()=>A,A},ce=function(A){for(var t=Y(256),e=0;e<256;e++)t[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;return t[254]=t[254]=1,ce=n=>t[n],t[A]};function Qe(A){var t,e,n,r,o,i=A.length,g=0;for(r=0;r<i;r++)e=A.charCodeAt(r),(e&64512)===55296&&r+1<i&&(n=A.charCodeAt(r+1),(n&64512)===56320&&(e=65536+(e-55296<<10)+(n-56320),r++)),g+=e<128?1:e<2048?2:e<65536?3:4;for(t=new Uint8Array(g),o=0,r=0;o<g;r++)e=A.charCodeAt(r),(e&64512)===55296&&r+1<i&&(n=A.charCodeAt(r+1),(n&64512)===56320&&(e=65536+(e-55296<<10)+(n-56320),r++)),e<128?t[o++]=e:e<2048?(t[o++]=192|e>>>6,t[o++]=128|e&63):e<65536?(t[o++]=224|e>>>12,t[o++]=128|e>>>6&63,t[o++]=128|e&63):(t[o++]=240|e>>>18,t[o++]=128|e>>>12&63,t[o++]=128|e>>>6&63,t[o++]=128|e&63);return t}function ur(A,t){if(t<65534&&(A.subarray&&xt()||!A.subarray&&Ft()))return String.fromCharCode.apply(null,YA(A,t));for(var e="",n=0;n<t;n++)e+=String.fromCharCode(A[n]);return e}function Rt(A){for(var t=new Uint8Array(A.length),e=0,n=t.length;e<n;e++)t[e]=A.charCodeAt(e);return t}function Jt(A,t){var e,n,r,o,i=t||A.length,g=new Array(i*2);for(n=0,e=0;e<i;){if(r=A[e++],r<128){g[n++]=r;continue}if(o=ce(r),o>4){g[n++]=65533,e+=o-1;continue}for(r&=o===2?31:o===3?15:7;o>1&&e<i;)r=r<<6|A[e++]&63,o--;if(o>1){g[n++]=65533;continue}r<65536?g[n++]=r:(r-=65536,g[n++]=55296|r>>10&1023,g[n++]=56320|r&1023)}return ur(g,n)}function Gt(A,t){var e;for(t=t||A.length,t>A.length&&(t=A.length),e=t-1;e>=0&&(A[e]&192)===128;)e--;return e<0||e===0?t:e+ce(A[e])>t?e:t}function Be(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}function yA(A,t,e,n){for(var r=A&65535|0,o=A>>>16&65535|0,i=0;e!==0;){i=e>2e3?2e3:e,e-=i;do r=r+t[n++]|0,o=o+r|0;while(--i);r%=65521,o%=65521}return r|o<<16|0}function lr(){for(var A,t=[],e=0;e<256;e++){A=e;for(var n=0;n<8;n++)A=A&1?3988292384^A>>>1:A>>>1;t[e]=A}return t}var vt=function(){let A=lr();return vt=()=>A,A};function J(A,t,e,n){var r=vt(),o=n+e;A^=-1;for(var i=n;i<o;i++)A=A>>>8^r[(A^t[i])&255];return A^-1}var _A=30,hr=12;function Ce(A,t){var e,n,r,o,i,g,I,a,s,d,Q,c,C,h,m,l,D,u,B,E,p,f,k,w,y;e=A.state,n=A.next_in,w=A.input,r=n+(A.avail_in-5),o=A.next_out,y=A.output,i=o-(t-A.avail_out),g=o+(A.avail_out-257),I=e.dmax,a=e.wsize,s=e.whave,d=e.wnext,Q=e.window,c=e.hold,C=e.bits,h=e.lencode,m=e.distcode,l=(1<<e.lenbits)-1,D=(1<<e.distbits)-1;A:do{C<15&&(c+=w[n++]<<C,C+=8,c+=w[n++]<<C,C+=8),u=h[c&l];e:for(;;){if(B=u>>>24,c>>>=B,C-=B,B=u>>>16&255,B===0)y[o++]=u&65535;else if(B&16){E=u&65535,B&=15,B&&(C<B&&(c+=w[n++]<<C,C+=8),E+=c&(1<<B)-1,c>>>=B,C-=B),C<15&&(c+=w[n++]<<C,C+=8,c+=w[n++]<<C,C+=8),u=m[c&D];t:for(;;){if(B=u>>>24,c>>>=B,C-=B,B=u>>>16&255,B&16){if(p=u&65535,B&=15,C<B&&(c+=w[n++]<<C,C+=8,C<B&&(c+=w[n++]<<C,C+=8)),p+=c&(1<<B)-1,p>I){A.msg="invalid distance too far back",e.mode=_A;break A}if(c>>>=B,C-=B,B=o-i,p>B){if(B=p-B,B>s&&e.sane){A.msg="invalid distance too far back",e.mode=_A;break A}if(f=0,k=Q,d===0){if(f+=a-B,B<E){E-=B;do y[o++]=Q[f++];while(--B);f=o-p,k=y}}else if(d<B){if(f+=a+d-B,B-=d,B<E){E-=B;do y[o++]=Q[f++];while(--B);if(f=0,d<E){B=d,E-=B;do y[o++]=Q[f++];while(--B);f=o-p,k=y}}}else if(f+=d-B,B<E){E-=B;do y[o++]=Q[f++];while(--B);f=o-p,k=y}for(;E>2;)y[o++]=k[f++],y[o++]=k[f++],y[o++]=k[f++],E-=3;E&&(y[o++]=k[f++],E>1&&(y[o++]=k[f++]))}else{f=o-p;do y[o++]=y[f++],y[o++]=y[f++],y[o++]=y[f++],E-=3;while(E>2);E&&(y[o++]=y[f++],E>1&&(y[o++]=y[f++]))}}else if((B&64)===0){u=m[(u&65535)+(c&(1<<B)-1)];continue t}else{A.msg="invalid distance code",e.mode=_A;break A}break}}else if((B&64)===0){u=h[(u&65535)+(c&(1<<B)-1)];continue e}else if(B&32){e.mode=hr;break A}else{A.msg="invalid literal/length code",e.mode=_A;break A}break}}while(n<r&&o<g);E=C>>3,n-=E,C-=E<<3,c&=(1<<C)-1,A.next_in=n,A.next_out=o,A.avail_in=n<r?5+(r-n):5-(n-r),A.avail_out=o<g?257+(g-o):257-(o-g),e.hold=c,e.bits=C}var IA=15,Ut=852,Lt=592,qt=0,Ee=1,Yt=2,mr=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],wr=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],pr=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],Dr=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];function $(A,t,e,n,r,o,i,g){var I=g.bits,a=0,s=0,d=0,Q=0,c=0,C=0,h=0,m=0,l=0,D=0,u,B,E,p,f,k=null,w=0,y,F=O(IA+1),N=O(IA+1),v=null,U=0,eA,L,P;for(a=0;a<=IA;a++)F[a]=0;for(s=0;s<n;s++)F[t[e+s]]++;for(c=I,Q=IA;Q>=1&&F[Q]===0;Q--);if(c>Q&&(c=Q),Q===0)return r[o++]=1<<24|64<<16|0,r[o++]=1<<24|64<<16|0,g.bits=1,0;for(d=1;d<Q&&F[d]===0;d++);for(c<d&&(c=d),m=1,a=1;a<=IA;a++)if(m<<=1,m-=F[a],m<0)return-1;if(m>0&&(A===qt||Q!==1))return-1;for(N[1]=0,a=1;a<IA;a++)N[a+1]=N[a]+F[a];for(s=0;s<n;s++)t[e+s]!==0&&(i[N[t[e+s]]++]=s);if(A===qt?(k=v=i,y=19):A===Ee?(k=mr,w-=257,v=wr,U-=257,y=256):(k=pr,v=Dr,y=-1),D=0,s=0,a=d,f=o,C=c,h=0,E=-1,l=1<<c,p=l-1,A===Ee&&l>Ut||A===Yt&&l>Lt)return 1;for(;;){eA=a-h,i[s]<y?(L=0,P=i[s]):i[s]>y?(L=v[U+i[s]],P=k[w+i[s]]):(L=96,P=0),u=1<<a-h,B=1<<C,d=B;do B-=u,r[f+(D>>h)+B]=eA<<24|L<<16|P|0;while(B!==0);for(u=1<<a-1;D&u;)u>>=1;if(u!==0?(D&=u-1,D+=u):D=0,s++,--F[a]===0){if(a===Q)break;a=t[e+i[s]]}if(a>c&&(D&p)!==E){for(h===0&&(h=c),f+=d,C=a-h,m=1<<C;C+h<Q&&(m-=F[C+h],!(m<=0));)C++,m<<=1;if(l+=1<<C,A===Ee&&l>Ut||A===Yt&&l>Lt)return 1;E=D&p,r[E]=c<<24|C<<16|f-o|0}}return D!==0&&(r[f+D]=a-h<<24|64<<16|0),g.bits=c,0}var yr=0,Bn=1,Cn=2,_t=4,Nr=5,HA=6,AA=0,kr=1,Sr=2,G=-2,En=-3,me=-4,br=-5,Ht=8,dn=1,Pt=2,Kt=3,Tt=4,Ot=5,Zt=6,Xt=7,Vt=8,jt=9,Wt=10,TA=11,_=12,de=13,zt=14,fe=15,$t=16,An=17,en=18,tn=19,PA=20,KA=21,nn=22,on=23,rn=24,an=25,gn=26,ue=27,sn=28,In=29,M=30,we=31,Mr=32,Fr=852,xr=592;function cn(A){return(A>>>24&255)+(A>>>8&65280)+((A&65280)<<8)+((A&255)<<24)}function Rr(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=O(320),this.work=O(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function Jr(A){var t;return!A||!A.state?G:(t=A.state,A.total_in=A.total_out=t.total=0,A.msg="",t.wrap&&(A.adler=t.wrap&1),t.mode=dn,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=z(Fr),t.distcode=t.distdyn=z(xr),t.sane=1,t.back=-1,AA)}function Gr(A){var t;return!A||!A.state?G:(t=A.state,t.wsize=0,t.whave=0,t.wnext=0,Jr(A))}function vr(A,t){var e,n;return!A||!A.state||(n=A.state,t<0?(e=0,t=-t):(e=(t>>4)+1,t<48&&(t&=15)),t&&(t<8||t>15))?G:(n.window!==null&&n.wbits!==t&&(n.window=null),n.wrap=e,n.wbits=t,Gr(A))}function fn(A,t){var e,n;return A?(n=new Rr,A.state=n,n.window=null,e=vr(A,t),e!==AA&&(A.state=null),e):G}var Qn=!0,le,he;function Ur(A){if(Qn){var t;for(le=z(512),he=z(32),t=0;t<144;)A.lens[t++]=8;for(;t<256;)A.lens[t++]=9;for(;t<280;)A.lens[t++]=7;for(;t<288;)A.lens[t++]=8;for($(Bn,A.lens,0,288,le,0,A.work,{bits:9}),t=0;t<32;)A.lens[t++]=5;$(Cn,A.lens,0,32,he,0,A.work,{bits:5}),Qn=!1}A.lencode=le,A.lenbits=9,A.distcode=he,A.distbits=5}function un(A,t,e,n){var r,o=A.state;return o.window===null&&(o.wsize=1<<o.wbits,o.wnext=0,o.whave=0,o.window=Y(o.wsize)),n>=o.wsize?(q(o.window,t,e-o.wsize,o.wsize,0),o.wnext=0,o.whave=o.wsize):(r=o.wsize-o.wnext,r>n&&(r=n),q(o.window,t,e-n,r,o.wnext),n-=r,n?(q(o.window,t,e-n,n,0),o.wnext=n,o.whave=o.wsize):(o.wnext+=r,o.wnext===o.wsize&&(o.wnext=0),o.whave<o.wsize&&(o.whave+=r))),0}function ln(A,t){var e,n,r,o,i,g,I,a,s,d,Q,c,C,h,m=0,l,D,u,B,E,p,f,k,w=Y(4),y,F,N=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!A||!A.state||!A.output||!A.input&&A.avail_in!==0)return G;e=A.state,e.mode===_&&(e.mode=de),i=A.next_out,r=A.output,I=A.avail_out,o=A.next_in,n=A.input,g=A.avail_in,a=e.hold,s=e.bits,d=g,Q=I,k=AA;A:for(;;)switch(e.mode){case dn:if(e.wrap===0){e.mode=de;break}for(;s<16;){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}if(e.wrap&2&&a===35615){e.check=0,w[0]=a&255,w[1]=a>>>8&255,e.check=J(e.check,w,2,0),a=0,s=0,e.mode=Pt;break}if(e.flags=0,e.head&&(e.head.done=!1),!(e.wrap&1)||(((a&255)<<8)+(a>>8))%31){A.msg="incorrect header check",e.mode=M;break}if((a&15)!==Ht){A.msg="unknown compression method",e.mode=M;break}if(a>>>=4,s-=4,f=(a&15)+8,e.wbits===0)e.wbits=f;else if(f>e.wbits){A.msg="invalid window size",e.mode=M;break}e.dmax=1<<f,A.adler=e.check=1,e.mode=a&512?Wt:_,a=0,s=0;break;case Pt:for(;s<16;){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}if(e.flags=a,(e.flags&255)!==Ht){A.msg="unknown compression method",e.mode=M;break}if(e.flags&57344){A.msg="unknown header flags set",e.mode=M;break}e.head&&(e.head.text=a>>8&1),e.flags&512&&(w[0]=a&255,w[1]=a>>>8&255,e.check=J(e.check,w,2,0)),a=0,s=0,e.mode=Kt;case Kt:for(;s<32;){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}e.head&&(e.head.time=a),e.flags&512&&(w[0]=a&255,w[1]=a>>>8&255,w[2]=a>>>16&255,w[3]=a>>>24&255,e.check=J(e.check,w,4,0)),a=0,s=0,e.mode=Tt;case Tt:for(;s<16;){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}e.head&&(e.head.xflags=a&255,e.head.os=a>>8),e.flags&512&&(w[0]=a&255,w[1]=a>>>8&255,e.check=J(e.check,w,2,0)),a=0,s=0,e.mode=Ot;case Ot:if(e.flags&1024){for(;s<16;){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}e.length=a,e.head&&(e.head.extra_len=a),e.flags&512&&(w[0]=a&255,w[1]=a>>>8&255,e.check=J(e.check,w,2,0)),a=0,s=0}else e.head&&(e.head.extra=null);e.mode=Zt;case Zt:if(e.flags&1024&&(c=e.length,c>g&&(c=g),c&&(e.head&&(f=e.head.extra_len-e.length,e.head.extra||(e.head.extra=new Array(e.head.extra_len)),q(e.head.extra,n,o,c,f)),e.flags&512&&(e.check=J(e.check,n,c,o)),g-=c,o+=c,e.length-=c),e.length))break A;e.length=0,e.mode=Xt;case Xt:if(e.flags&2048){if(g===0)break A;c=0;do f=n[o+c++],e.head&&f&&e.length<65536&&(e.head.name+=String.fromCharCode(f));while(f&&c<g);if(e.flags&512&&(e.check=J(e.check,n,c,o)),g-=c,o+=c,f)break A}else e.head&&(e.head.name=null);e.length=0,e.mode=Vt;case Vt:if(e.flags&4096){if(g===0)break A;c=0;do f=n[o+c++],e.head&&f&&e.length<65536&&(e.head.comment+=String.fromCharCode(f));while(f&&c<g);if(e.flags&512&&(e.check=J(e.check,n,c,o)),g-=c,o+=c,f)break A}else e.head&&(e.head.comment=null);e.mode=jt;case jt:if(e.flags&512){for(;s<16;){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}if(a!==(e.check&65535)){A.msg="header crc mismatch",e.mode=M;break}a=0,s=0}e.head&&(e.head.hcrc=e.flags>>9&1,e.head.done=!0),A.adler=e.check=0,e.mode=_;break;case Wt:for(;s<32;){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}A.adler=e.check=cn(a),a=0,s=0,e.mode=TA;case TA:if(e.havedict===0)return A.next_out=i,A.avail_out=I,A.next_in=o,A.avail_in=g,e.hold=a,e.bits=s,Sr;A.adler=e.check=1,e.mode=_;case _:if(t===Nr||t===HA)break A;case de:if(e.last){a>>>=s&7,s-=s&7,e.mode=ue;break}for(;s<3;){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}switch(e.last=a&1,a>>>=1,s-=1,a&3){case 0:e.mode=zt;break;case 1:if(Ur(e),e.mode=PA,t===HA){a>>>=2,s-=2;break A}break;case 2:e.mode=An;break;case 3:A.msg="invalid block type",e.mode=M}a>>>=2,s-=2;break;case zt:for(a>>>=s&7,s-=s&7;s<32;){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}if((a&65535)!==(a>>>16^65535)){A.msg="invalid stored block lengths",e.mode=M;break}if(e.length=a&65535,a=0,s=0,e.mode=fe,t===HA)break A;case fe:e.mode=$t;case $t:if(c=e.length,c){if(c>g&&(c=g),c>I&&(c=I),c===0)break A;q(r,n,o,c,i),g-=c,o+=c,I-=c,i+=c,e.length-=c;break}e.mode=_;break;case An:for(;s<14;){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}if(e.nlen=(a&31)+257,a>>>=5,s-=5,e.ndist=(a&31)+1,a>>>=5,s-=5,e.ncode=(a&15)+4,a>>>=4,s-=4,e.nlen>286||e.ndist>30){A.msg="too many length or distance symbols",e.mode=M;break}e.have=0,e.mode=en;case en:for(;e.have<e.ncode;){for(;s<3;){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}e.lens[N[e.have++]]=a&7,a>>>=3,s-=3}for(;e.have<19;)e.lens[N[e.have++]]=0;if(e.lencode=e.lendyn,e.lenbits=7,y={bits:e.lenbits},k=$(yr,e.lens,0,19,e.lencode,0,e.work,y),e.lenbits=y.bits,k){A.msg="invalid code lengths set",e.mode=M;break}e.have=0,e.mode=tn;case tn:for(;e.have<e.nlen+e.ndist;){for(;m=e.lencode[a&(1<<e.lenbits)-1],l=m>>>24,D=m>>>16&255,u=m&65535,!(l<=s);){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}if(u<16)a>>>=l,s-=l,e.lens[e.have++]=u;else{if(u===16){for(F=l+2;s<F;){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}if(a>>>=l,s-=l,e.have===0){A.msg="invalid bit length repeat",e.mode=M;break}f=e.lens[e.have-1],c=3+(a&3),a>>>=2,s-=2}else if(u===17){for(F=l+3;s<F;){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}a>>>=l,s-=l,f=0,c=3+(a&7),a>>>=3,s-=3}else{for(F=l+7;s<F;){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}a>>>=l,s-=l,f=0,c=11+(a&127),a>>>=7,s-=7}if(e.have+c>e.nlen+e.ndist){A.msg="invalid bit length repeat",e.mode=M;break}for(;c--;)e.lens[e.have++]=f}}if(e.mode===M)break;if(e.lens[256]===0){A.msg="invalid code -- missing end-of-block",e.mode=M;break}if(e.lenbits=9,y={bits:e.lenbits},k=$(Bn,e.lens,0,e.nlen,e.lencode,0,e.work,y),e.lenbits=y.bits,k){A.msg="invalid literal/lengths set",e.mode=M;break}if(e.distbits=6,e.distcode=e.distdyn,y={bits:e.distbits},k=$(Cn,e.lens,e.nlen,e.ndist,e.distcode,0,e.work,y),e.distbits=y.bits,k){A.msg="invalid distances set",e.mode=M;break}if(e.mode=PA,t===HA)break A;case PA:e.mode=KA;case KA:if(g>=6&&I>=258){A.next_out=i,A.avail_out=I,A.next_in=o,A.avail_in=g,e.hold=a,e.bits=s,Ce(A,Q),i=A.next_out,r=A.output,I=A.avail_out,o=A.next_in,n=A.input,g=A.avail_in,a=e.hold,s=e.bits,e.mode===_&&(e.back=-1);break}for(e.back=0;m=e.lencode[a&(1<<e.lenbits)-1],l=m>>>24,D=m>>>16&255,u=m&65535,!(l<=s);){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}if(D&&(D&240)===0){for(B=l,E=D,p=u;m=e.lencode[p+((a&(1<<B+E)-1)>>B)],l=m>>>24,D=m>>>16&255,u=m&65535,!(B+l<=s);){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}a>>>=B,s-=B,e.back+=B}if(a>>>=l,s-=l,e.back+=l,e.length=u,D===0){e.mode=gn;break}if(D&32){e.back=-1,e.mode=_;break}if(D&64){A.msg="invalid literal/length code",e.mode=M;break}e.extra=D&15,e.mode=nn;case nn:if(e.extra){for(F=e.extra;s<F;){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}e.length+=a&(1<<e.extra)-1,a>>>=e.extra,s-=e.extra,e.back+=e.extra}e.was=e.length,e.mode=on;case on:for(;m=e.distcode[a&(1<<e.distbits)-1],l=m>>>24,D=m>>>16&255,u=m&65535,!(l<=s);){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}if((D&240)===0){for(B=l,E=D,p=u;m=e.distcode[p+((a&(1<<B+E)-1)>>B)],l=m>>>24,D=m>>>16&255,u=m&65535,!(B+l<=s);){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}a>>>=B,s-=B,e.back+=B}if(a>>>=l,s-=l,e.back+=l,D&64){A.msg="invalid distance code",e.mode=M;break}e.offset=u,e.extra=D&15,e.mode=rn;case rn:if(e.extra){for(F=e.extra;s<F;){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}e.offset+=a&(1<<e.extra)-1,a>>>=e.extra,s-=e.extra,e.back+=e.extra}if(e.offset>e.dmax){A.msg="invalid distance too far back",e.mode=M;break}e.mode=an;case an:if(I===0)break A;if(c=Q-I,e.offset>c){if(c=e.offset-c,c>e.whave&&e.sane){A.msg="invalid distance too far back",e.mode=M;break}c>e.wnext?(c-=e.wnext,C=e.wsize-c):C=e.wnext-c,c>e.length&&(c=e.length),h=e.window}else h=r,C=i-e.offset,c=e.length;c>I&&(c=I),I-=c,e.length-=c;do r[i++]=h[C++];while(--c);e.length===0&&(e.mode=KA);break;case gn:if(I===0)break A;r[i++]=e.length,I--,e.mode=KA;break;case ue:if(e.wrap){for(;s<32;){if(g===0)break A;g--,a|=n[o++]<<s,s+=8}if(Q-=I,A.total_out+=Q,e.total+=Q,Q&&(A.adler=e.check=e.flags?J(e.check,r,Q,i-Q):yA(e.check,r,Q,i-Q)),Q=I,(e.flags?a:cn(a))!==e.check){A.msg="incorrect data check",e.mode=M;break}a=0,s=0}e.mode=sn;case sn:if(e.wrap&&e.flags){for(;s<32;){if(g===0)break A;g--,a+=n[o++]<<s,s+=8}if(a!==(e.total&4294967295)){A.msg="incorrect length check",e.mode=M;break}a=0,s=0}e.mode=In;case In:k=kr;break A;case M:k=En;break A;case we:return me;case Mr:default:return G}return A.next_out=i,A.avail_out=I,A.next_in=o,A.avail_in=g,e.hold=a,e.bits=s,(e.wsize||Q!==A.avail_out&&e.mode<M&&(e.mode<ue||t!==_t))&&un(A,A.output,A.next_out,Q-A.avail_out)?(e.mode=we,me):(d-=A.avail_in,Q-=A.avail_out,A.total_in+=d,A.total_out+=Q,e.total+=Q,e.wrap&&Q&&(A.adler=e.check=e.flags?J(e.check,r,Q,A.next_out-Q):yA(e.check,r,Q,A.next_out-Q)),A.data_type=e.bits+(e.last?64:0)+(e.mode===_?128:0)+(e.mode===PA||e.mode===fe?256:0),(d===0&&Q===0||t===_t)&&k===AA&&(k=br),k)}function hn(A){if(!A||!A.state)return G;var t=A.state;return t.window&&(t.window=null),A.state=null,AA}function mn(A,t){var e;return!A||!A.state||(e=A.state,(e.wrap&2)===0)?G:(e.head=t,t.done=!1,AA)}function pe(A,t){var e=t.length,n,r,o;return!A||!A.state||(n=A.state,n.wrap!==0&&n.mode!==TA)?G:n.mode===TA&&(r=1,r=yA(r,t,e,0),r!==n.check)?En:(o=un(A,t,e,e),o?(n.mode=we,me):(n.havedict=1,AA))}var OA={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"};function De(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var ye=Object.prototype.toString,Ne=class A{constructor(t){if(!(this instanceof A))return new A(t);this.options=Mt({chunkSize:16384,windowBits:0,to:""},t||{});var e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,e.windowBits===0&&(e.windowBits=-15)),e.windowBits>=0&&e.windowBits<16&&!(t&&t.windowBits)&&(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&(e.windowBits&15)===0&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new De,this.strm.avail_out=0;var n=fn(this.strm,e.windowBits);if(n!==T)throw new Error(OA[n]);if(this.header=new Be,mn(this.strm,this.header),e.dictionary&&(typeof e.dictionary=="string"?e.dictionary=Qe(e.dictionary):ye.call(e.dictionary)==="[object ArrayBuffer]"&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(n=pe(this.strm,e.dictionary),n!==T)))throw new Error(OA[n])}push(t,e){var n=this.strm,r=this.options.chunkSize,o=this.options.dictionary,i,g,I,a,s,d,Q=!1;if(this.ended)return!1;g=e===~~e?e:e===!0?mA:se,typeof t=="string"?n.input=Rt(t):ye.call(t)==="[object ArrayBuffer]"?n.input=new Uint8Array(t):n.input=t,n.next_in=0,n.avail_in=n.input.length;do{if(n.avail_out===0&&(n.output=Y(r),n.next_out=0,n.avail_out=r),i=ln(n,se),i===St&&o&&(typeof o=="string"?d=Qe(o):ye.call(o)==="[object ArrayBuffer]"?d=new Uint8Array(o):d=o,i=pe(this.strm,d)),i===bt&&Q===!0&&(i=T,Q=!1),i!==wA&&i!==T)return this.onEnd(i),this.ended=!0,!1;n.next_out&&(n.avail_out===0||i===wA||n.avail_in===0&&(g===mA||g===Ie))&&(this.options.to==="string"?(I=Gt(n.output,n.next_out),a=n.next_out-I,s=Jt(n.output,I),n.next_out=a,n.avail_out=r-a,a&&q(n.output,n.output,I,a,0),this.onData(s)):this.onData(YA(n.output,n.next_out))),n.avail_in===0&&n.avail_out===0&&(Q=!0)}while((n.avail_in>0||n.avail_out===0)&&i!==wA);return i===wA&&(g=mA),g===mA?(i=hn(this.strm),this.onEnd(i),this.ended=!0,i===T):(g===Ie&&(this.onEnd(T),n.avail_out=0),!0)}onData(t){this.chunks.push(t)}onEnd(t){t===T&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=qA(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg}};function Lr(A,t){var e=new Ne(t);if(e.push(A,!0),e.err)throw e.msg||OA[e.err];return e.result}var wn=Lr;function pn(A){let t=0;for(let r of A)t+=r.length;let e=new Uint8Array(t),n=0;for(let r of A)e.set(r,n),n+=r.length;return e}var Z={};Z.d=(A,t)=>{if(Array.isArray(t))for(var e=0;e<t.length;){var n=t[e++],r=t[e++];Z.o(A,n)?r===0&&e++:r===0?Object.defineProperty(A,n,{enumerable:!0,value:t[e++]}):Object.defineProperty(A,n,{enumerable:!0,get:r})}else for(var n in t)Z.o(t,n)&&!Z.o(A,n)&&Object.defineProperty(A,n,{enumerable:!0,get:t[n]})};Z.o=(A,t)=>Object.prototype.hasOwnProperty.call(A,t);Z.r=A=>{Symbol.toStringTag&&Object.defineProperty(A,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(A,"__esModule",{value:!0})};var be={};Z.r(be);Z.d(be,{ChunkSliceResult:()=>BA,__wbg_Error_92b29b0548f8b746:()=>_r,__wbg___wbindgen_throw_344f42d3211c4765:()=>Hr,__wbg_set_wasm:()=>Fn,decompress_all:()=>Nn,decompress_chunk_slice:()=>Yr});var qr="data:application/wasm;base64,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AghBAUEAEBUACywCAX8BfiMAQRBrIgEkACAAKQIAIQIgASAANgIMIAEgAjcCBCABQQRqEGYACyMBAX8jAEEQayICJAAgAiABNgIMIAIgADYCCCACQQhqEGUACyAAAkAgASgCAEUNACAAQbiXwAA2AgQgACABNgIADwsACx4BAX8CQCAAKAIAIgJFDQAgASACIAAoAgQQTQ8LAAsbAQF/EGogAEEEakEEEFgiASAANgIAIAFBBGoLHgEBfwJAIAAoAgAiAUEBSA0AIAAoAgQgAUEBEFMLCx4AIAAoAgAgACgCBEEAKALomkAiAEEEIAAbEQQAAAsjAQF/AkBBhIrAABAtIgANAEG4icAAQTpB9InAABA4AAsgAAsXAAJAIABBf2pBfk8NACABIABBARBTCwscAQF/AkAgACgCACIBRQ0AIAAoAgQgAUEBEFMLCxcAAkAgAUEJSQ0AIAEgABAODwsgABACCxUAIABBfGoiACAAKAIAQQRqQQQQUwsUAAJAIABFDQAgACABEF8ACxBWAAsRACAAIAFBAXRBAXIgAhAxAAsSAAJAIAFFDQAgACABIAIQUwsLEgAgACABIAIgAyAEQQAgBRADCxUAAkAgAEUNACAAIAAoAqhaEQIACwsaACAAQQApAoSWQDcCCCAAQQApAvyVQDcCAAsaACAAQQApAvSVQDcCCCAAQQApAuyVQDcCAAsWACAAKAIAIAEgAiAAKAIEKAIMEQcACw0AIAAgASACIAMQBw8LFABBACAANgK8mkBBAEEBNgK4mkALEwAgAEG4l8AANgIEIAAgATYCAAsQACABIAAoAgAgACgCBBBNCxAAIAEgACgCACAAKAIEEAoLCwAgACABIAIQKg8LCgAgACABEGkaAAsPACAAQZyVwAAgASACEAwLEQBBkJjAAEEjQaSYwAAQMQALCwAgACMAaiQAIwALCQAgACABEEQPCwkAIAAgARAuDwsJACAAIAEQYQALDABBr4fAAEEbEFoACw0AQcqHwABBzwAQWgALCQAgASAAEDsACwwAIAAgASkCADcDAAsJACABIAAQXQALDQAgAUH8mcAAQRgQCgsIACAAIAEQAAsIACAAIAEQAQsJACAAKAIAEEoLBwAgABA5AAsHACAAEEAACwcAIAAQJgALCwBBAEEBOgDAnkALCQAgAEEANgIACwUAEGsACwMADwsDAAALAgALC74aAgBBgIDAAAuUGkF0dGVtcHRlZCB0byBpbml0aWFsaXplIHRocmVhZC1sb2NhbCB3aGlsZSBpdCBpcyBiZWluZyBkcm9wcGVkFnNsaWNlIGluZGV4IHN0YXJ0cyBhdCDADSBidXQgZW5kcyBhdCDAABJyYW5nZSBzdGFydCBpbmRleCDAIiBvdXQgb2YgcmFuZ2UgZm9yIHNsaWNlIG9mIGxlbmd0aCDAABByYW5nZSBlbmQgaW5kZXggwCIgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggwAAvcnVzdGMvNDhhMjI5Y2VhZWZkNDk4NWM1MDk5MGIxNDExNmI2ZDg1NmFmMDk4NS9saWJyYXJ5L3N0ZC9zcmMvc3lzL3RocmVhZF9sb2NhbC9ub190aHJlYWRzLnJzAC9ydXN0Yy80OGEyMjljZWFlZmQ0OTg1YzUwOTkwYjE0MTE2YjZkODU2YWYwOTg1L2xpYnJhcnkvc3RkL3NyYy9zeXMvc3luYy9yd2xvY2svbm9fdGhyZWFkcy5ycwAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi93YXNtLWJpbmRnZW4tMC4yLjEyNi9zcmMvZXh0ZXJucmVmLnJzAC9ydXN0Yy80OGEyMjljZWFlZmQ0OTg1YzUwOTkwYjE0MTE2YjZkODU2YWYwOTg1L2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMvbW9kLnJzAC9ydXN0L2RlcHMvZGxtYWxsb2MtMC4yLjEzL3NyYy9kbG1hbGxvYy5ycwAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9saWJkZWZsYXRlci0xLjI1LjIvc3JjL2xpYi5ycwAA1gAQAF4AAABrAAAADQAAAMwCEAAKAAAAHAAAACQAAADMAhAACgAAAMIAAAApAAAAzAIQAAoAAAC2AAAAJwAAAMwCEAAKAAAAcQAAABwAAADMAhAACgAAAG0AAABBAAAAZGVjb21wcmVzc2lvbiBmYWlsZWRpbnZhbGlkIGJnemYgaGVhZGVyAMwCEAAKAAAATAAAAD0A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",BA=class A{static __wrap(t){let e=Object.create(A.prototype);return e.__wbg_ptr=t,Dn.register(e,e.__wbg_ptr,e),e}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,Dn.unregister(this),t}free(){let t=this.__destroy_into_raw();b.__wbg_chunksliceresult_free(t,0)}take_buffer(){try{let r=b.__wbindgen_add_to_stack_pointer(-16);b.chunksliceresult_take_buffer(r,this.__wbg_ptr);var t=R().getInt32(r+0,!0),e=R().getInt32(r+4,!0),n=kn(t,e).slice();return b.__wbindgen_export(t,e*1,1),n}finally{b.__wbindgen_add_to_stack_pointer(16)}}take_cpositions(){try{let r=b.__wbindgen_add_to_stack_pointer(-16);b.chunksliceresult_take_cpositions(r,this.__wbg_ptr);var t=R().getInt32(r+0,!0),e=R().getInt32(r+4,!0),n=yn(t,e).slice();return b.__wbindgen_export(t,e*8,8),n}finally{b.__wbindgen_add_to_stack_pointer(16)}}take_dpositions(){try{let r=b.__wbindgen_add_to_stack_pointer(-16);b.chunksliceresult_take_dpositions(r,this.__wbg_ptr);var t=R().getInt32(r+0,!0),e=R().getInt32(r+4,!0),n=yn(t,e).slice();return b.__wbindgen_export(t,e*8,8),n}finally{b.__wbindgen_add_to_stack_pointer(16)}}};Symbol.dispose&&(BA.prototype[Symbol.dispose]=BA.prototype.free);function Nn(A){try{let i=b.__wbindgen_add_to_stack_pointer(-16),g=bn(A,b.__wbindgen_export2),I=Fe;b.decompress_all(i,g,I);var t=R().getInt32(i+0,!0),e=R().getInt32(i+4,!0),n=R().getInt32(i+8,!0),r=R().getInt32(i+12,!0);if(r)throw Mn(n);var o=kn(t,e).slice();return b.__wbindgen_export(t,e*1,1),o}finally{b.__wbindgen_add_to_stack_pointer(16)}}function Yr(A,t,e,n,r){try{let I=b.__wbindgen_add_to_stack_pointer(-16),a=bn(A,b.__wbindgen_export2),s=Fe;b.decompress_chunk_slice(I,a,s,t,e,n,r);var o=R().getInt32(I+0,!0),i=R().getInt32(I+4,!0),g=R().getInt32(I+8,!0);if(g)throw Mn(i);return BA.__wrap(o)}finally{b.__wbindgen_add_to_stack_pointer(16)}}function _r(A,t){let e=Error(Sn(A,t));return Pr(e)}function Hr(A,t){throw new Error(Sn(A,t))}var Dn=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(A=>b.__wbg_chunksliceresult_free(A,1));function Pr(A){NA===H.length&&H.push(H.length+1);let t=NA;return NA=H[t],H[t]=A,t}function Kr(A){A<1028||(H[A]=NA,NA=A)}function yn(A,t){return A=A>>>0,Tr().subarray(A/8,A/8+t)}function kn(A,t){return A=A>>>0,Me().subarray(A/1,A/1+t)}var cA=null;function R(){return(cA===null||cA.buffer.detached===!0||cA.buffer.detached===void 0&&cA.buffer!==b.memory.buffer)&&(cA=new DataView(b.memory.buffer)),cA}var ZA=null;function Tr(){return(ZA===null||ZA.byteLength===0)&&(ZA=new Float64Array(b.memory.buffer)),ZA}function Sn(A,t){return Xr(A>>>0,t)}var XA=null;function Me(){return(XA===null||XA.byteLength===0)&&(XA=new Uint8Array(b.memory.buffer)),XA}function Or(A){return H[A]}var H=new Array(1024).fill(void 0);H.push(void 0,null,!0,!1);var NA=H.length;function bn(A,t){let e=t(A.length*1,1)>>>0;return Me().set(A,e/1),Fe=A.length,e}function Mn(A){let t=Or(A);return Kr(A),t}var VA=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});VA.decode();var Zr=2146435072,ke=0;function Xr(A,t){return ke+=t,ke>=Zr&&(VA=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),VA.decode(),ke=t),VA.decode(Me().subarray(A,A+t).slice())}var Fe=0,b;function Fn(A){b=A}var QA=null,Se=null;async function Vr(){return QA||(Se||(Se=(async()=>{let t=await(await fetch(qr)).arrayBuffer(),{instance:e}=await WebAssembly.instantiate(t,{"./bgzf_wasm_bg.js":be});return QA=e.exports,Fn(QA),QA})()),Se)}async function xn(A){return QA||await Vr(),Nn(A)}var jr=26;function Jn(A){return A[0]===31&&A[1]===139}function Wr(A){return A.length>=jr&&Jn(A)&&A[2]===8&&A[3]===4&&A[10]===6&&A[12]===66&&A[13]===67}function Gn(A){return A instanceof Error?A.message:`${A}`}async function Rn(A){if(typeof DecompressionStream<"u"){let t=new Blob([A]).stream().pipeThrough(new DecompressionStream("gzip"));return new Uint8Array(await new Response(t).arrayBuffer())}else return wn(A,void 0)}function zr(A){return Gn(A).includes("invalid gzip header")?new Error("problem decompressing block: incorrect gzip header check",{cause:A}):A}async function vn(A){if(A.length===0)return new Uint8Array(0);if(!Wr(A)){if(Jn(A))return Rn(A);throw new Error("problem decompressing block: not a valid bgzf or gzip block")}try{return await xn(A)}catch(t){if(Gn(t).includes("invalid bgzf header"))return Rn(A);throw zr(t)}}var $r=10,Ai=32*1024*1024;function ei(A){let t=0,e=[],n=()=>{t--,e.shift()?.()};return async r=>{t>=A&&await new Promise(o=>{e.push(o)}),t++;try{return await r()}finally{n()}}}function ti(A,t,e){let n=[],r=A.length,o=0;for(;o<r;){let i=o+1;for(;i<r&&t[i]-t[o]<Ai;)i+=1;n.push({compressedStart:A[o],compressedEnd:i<r?A[i]:e??A[r-1]+65536,uncompressedStart:t[o]}),o=i}return n}function ni(A,t,e,n){let r=Math.max(0,e-t),o=Math.min(n,t+A.length)-t;return r<A.length?A.subarray(r,o):new Uint8Array(0)}var CA=class{filehandle;gzi;limit;constructor({filehandle:t,gziFilehandle:e,blockConcurrency:n=$r}){this.filehandle=t,this.gzi=new hA({filehandle:e}),this.limit=ei(n)}async read(t,e){let{compressed:n,uncompressed:r,nextCompressedPosition:o}=await this.gzi.getRelevantBlocksForRead(t,e);if(n.length===0)return new Uint8Array(0);let i=e+t,g=ti(n,r,o),I=await Promise.all(g.map(a=>this.limit(async()=>{let s=await this.filehandle.read(a.compressedEnd-a.compressedStart,a.compressedStart);return ni(await vn(s),a.uncompressedStart,e,i)})));return pn(I)}};var Ln=x(Ro());async function qn({location:A,name:t}){let e=o=>(0,Ln.openLocation)({uri:o,locationType:"UriLocation"}),n=await e(`${A.uri}.idx`).readFile("utf8"),r=oi(n,t);if(r){let i=await new CA({filehandle:e(A.uri),gziFilehandle:e(`${A.uri}.gzi`)}).read(r.length,r.offset);return new TextDecoder().decode(i).trim()}}var Un=A=>A.replace(/\.\d+$/,"");function oi(A,t){let e=Un(t);for(let n of A.split(`
|
|
11
|
+
`)){let[r,o,i]=n.split(" ");if(r&&Un(r)===e)return{offset:Number(o),length:Number(i)}}}var Yn=x(fA());function _n({model:A}){let{assemblyManager:t,hovered:e}=(0,Yn.getSession)(A),{transcriptToMsaMap:n,connectedView:r,mafRegion:o}=A;if(!r?.initialized||!Ye(e)||!SA(A))return;let{coord:i,refName:g}=e.hoverPosition,I=i-1,a=t.get(o?.assemblyName??r.assemblyNames[0]??""),s=Q=>(a?.initialized?a.getCanonicalRefName(Q):void 0)??Q,d=s(g);if(o)return d!==s(o.refName)||!r.assemblyNames.includes(o.assemblyName)||I<o.start||I>=o.end?void 0:qe(A,I-o.start);if(n&&d===s(n.refName)){let Q=n.g2p[I];if(Q!==void 0)return MA(A,Q)}}var ri="jbrowse-msaview-domain-cache",jA="domains",ii=1,Hn=tA(ri,ii,A=>{A.objectStoreNames.contains(jA)||A.createObjectStore(jA,{keyPath:"accession"})});function Pn(A){return nA("domain cache read",async()=>{let e=(await Hn()).transaction(jA,"readonly"),n=await Promise.all(A.map(r=>e.store.get(r)));return await e.done,n},[])}function Kn(A){return nA("domain cache write",async()=>{let e=(await Hn()).transaction(jA,"readwrite");for(let n of A)await e.store.put(n);await e.done},void 0)}function X(A,t){let e=new RegExp(`<${t}>(.*?)</${t}>`,"s").exec(A)?.[1];return e===void 0?void 0:je(e)}function ai(A){let t={},e=/<GBQualifier>([\s\S]*?)<\/GBQualifier>/g,n;for(;(n=e.exec(A))!==null;){let r=X(n[1],"GBQualifier_name"),o=X(n[1],"GBQualifier_value");r&&o!==void 0&&t[r]===void 0&&(t[r]=o)}return t}function gi(A){let t=[],e=[],n=/<GBInterval>([\s\S]*?)<\/GBInterval>/g,r;for(;(r=n.exec(A))!==null;){let o=r[1],i=X(o,"GBInterval_from"),g=X(o,"GBInterval_to"),I=X(o,"GBInterval_point");i&&g?(t.push(Number(i)),e.push(Number(g))):I&&(t.push(Number(I)),e.push(Number(I)))}return t.length>0?{start:Math.min(...t),end:Math.max(...e)}:void 0}var si=2;function Ii(A){let t=X(A,"GBFeature_key"),e=ai(A),n=e.db_xref,r=gi(A);if((t==="Region"||t==="Site")&&n?.startsWith("CDD:")&&r&&r.end-r.start+1>=si){let o=n.replace("CDD:",""),i=t==="Region",g=e.note?.split(/[[(]/)[0]?.trim(),I=i?e.region_name??o:g||e.site_type||"site",a=i?o:`${o}:${I}`;return{signature:{entry:{name:I,description:e.note??I,accession:a}},locations:[r]}}}function ci(A){let t=new Map,e=/<GBSeq>([\s\S]*?)<\/GBSeq>/g,n;for(;(n=e.exec(A))!==null;){let r=n[1],o=[],i=/<GBFeature>([\s\S]*?)<\/GBFeature>/g,g;for(;(g=i.exec(r))!==null;){let I=Ii(g[1]);I&&o.push(I)}for(let I of[X(r,"GBSeq_accession-version"),X(r,"GBSeq_primary-accession")])I&&t.set(I,o)}return t}async function Tn(A){let t=[...new Set(A)].filter(Boolean),e=new Map,n=await Pn(t),r=[];t.forEach((g,I)=>{let a=n[I];a?e.set(g,a.matches):r.push(g)});let o=[],i=100;for(let g=0;g<r.length;g+=i){let I=r.slice(g,g+i),a=await Ve(Xe({db:"protein",id:I.join(","),rettype:"gp",retmode:"xml"})),s=ci(a);for(let d of I){let Q=s.get(d);Q!==void 0&&(e.set(d,Q),o.push({accession:d,matches:Q}))}}return o.length>0&&await Kn(o),e}async function On(A){let t=A.data.treeMetadata;if(!t)throw new Error("No sequence metadata available to look up domains");let e=JSON.parse(t),n=Object.entries(e).map(([i,g])=>({rowName:i,accession:g.Accession})).filter(i=>!!i.accession);if(n.length===0)throw new Error("No NCBI accessions found in alignment rows");A.setProgress(`Fetching protein domains from NCBI for ${n.length} sequences...`);let r=await Tn(n.map(i=>i.accession)),o=n.flatMap(({rowName:i,accession:g})=>(r.get(g)??[]).flatMap(({signature:I,locations:a})=>I.entry?a.map(({start:s,end:d})=>({id:i,accession:I.entry.accession,name:I.entry.name,description:I.entry.description,start:s,end:d})):[]));if(o.length===0)throw new Error("No CDD domain annotations found for these proteins");A.setAnnotations(o)}var Qi="jbrowse-msaview-data",Bi=1,EA="msa-data",xe=tA(Qi,Bi,A=>{A.objectStoreNames.contains(EA)||A.createObjectStore(EA,{keyPath:"id"}).createIndex("timestamp","timestamp",{unique:!1})});function Zn(){return`msa-${Date.now()}-${Math.random().toString(36).slice(2,11)}`}async function Xn(A,t){try{let e=await xe(),n={...t,id:A,timestamp:Date.now()};return await e.put(EA,n),!0}catch(e){return console.warn("Failed to store MSA data:",e),!1}}async function Vn(A){let t=await xe(),e=await t.get(EA,A);if(!e)return;try{await t.put(EA,{...e,timestamp:Date.now()})}catch(i){console.warn("Failed to refresh MSA data timestamp:",i)}let{id:n,timestamp:r,...o}=e;return o}async function jn(A=10080*60*1e3){try{let t=await xe(),e=Date.now()-A,o=await t.transaction(EA,"readwrite").store.index("timestamp").openCursor(IDBKeyRange.upperBound(e)),i=0;for(;o;)await o.delete(),i++,o=await o.continue();return i}catch(t){return console.warn("Failed to cleanup old MSA data:",t),0}}var Wn=x(fA()),zn=x(RA());function Ci(A){if(!(A.rows.length<2))try{A.calculateNeighborJoiningTreeFromMSA()}catch(t){console.error(t);try{(0,Wn.getSession)(A).notify(`The alignment loaded, but no tree was built. ${t instanceof Error?t.message:String(t)}`,"warning")}catch(e){console.error(e)}}}function Re(A){(0,zn.untracked)(()=>{Ei(A)})}function Ei({self:A,message:t,launch:e,onLaunched:n}){A.launchController?.abort();let r=new AbortController,{signal:o}=r;A.setLaunchController(r);let i=I=>{o.aborted||I()},g={signal:o,act:i,onProgress:I=>{i(()=>{A.setProgress(I)})},onRid:I=>{i(()=>{A.setRid(I)})}};(async()=>{try{i(()=>{A.setProgress(t),A.setError(void 0)});let I=await e(g);i(()=>{A.setData(I),n()}),I.tree||i(()=>{Ci(A)})}catch(I){V(I)||(i(()=>{A.setError(I)}),console.error(I))}finally{i(()=>{A.setProgress(""),A.launchController===r&&A.setLaunchController(void 0)})}})()}function di(A){let t=A;return t.type==="ProteinView"&&Array.isArray(t.structures)}function $n(A){return A.filter(di)}function Ao(A){let t=A.strand,e=A.refName;if(t!==-1&&t!==1)throw new Error(`Invalid strand value: ${t}. Expected 1 or -1.`);if(!e)throw new Error("refName is required");let n=new Map;for(let I of A.subfeatures??[])if(I.type==="CDS"&&I.start<I.end){let a=`${I.start}-${I.end}`;n.has(a)||n.set(a,I)}let r=[...n.values()].sort((I,a)=>t*(I.start-a.start)),o={},i={},g={};if(r.length!==0){let a=(3-(r[0]?.phase??0))%3,s=-1;for(let d of r){let Q=d.end-d.start;for(let c=0;c<Q;c++){let C=t===1?d.start+c:d.end-1-c,h=Math.floor(a++/3);o[C]=h,h!==s?(i[h]=C,g[h]=[C],s=h):g[h].push(C)}}}return{g2p:o,p2g:i,p2gCodon:g,refName:e,strand:t}}function eo(A,t){let e=A[t];if(e===void 0)return;let n=[...e].sort((o,i)=>o-i),r=[];for(let o of n){let i=r.at(-1);i?.[1]===o?i[1]=o+1:r.push([o,o+1])}return r}var fi=1e6;function Je(A){return typeof A=="object"&&A!==null}function to(A){return Number.isSafeInteger(A)}function no(A){return Je(A)&&typeof A.type=="string"&&A.type.toLowerCase()==="cds"&&to(A.start)&&to(A.end)&&A.start<A.end}function ui(A){let t=Number(A);return t===1||t===2?t:0}function li(A){let{subfeatures:t}=A,e=(Array.isArray(t)?t:[]).filter(no);return e.length>0?e:no(A)?[A]:[]}function hi(A){if(!Je(A))return{reason:"it is not a feature"};let{refName:t,strand:e}=A;if(typeof t!="string"||!t)return{reason:"it has no refName"};if(e!==1&&e!==-1)return{reason:`its strand is ${JSON.stringify(e)}, not 1 or -1`};let n=li(A).map(o=>({refName:t,type:"CDS",start:o.start,end:o.end,phase:ui(o.phase)}));if(n.length===0)return{reason:"it has no CDS with numeric start < end"};let r=n.reduce((o,i)=>o+i.end-i.start,0);return r>fi?{reason:`its CDS covers ${r} bases, more than any real transcript`}:{transcript:{refName:t,strand:e,start:Math.min(...n.map(o=>o.start)),end:Math.max(...n.map(o=>o.end)),subfeatures:n}}}var oo=new WeakSet;function ro(A){let t=hi(A);if("reason"in t){Je(A)&&!oo.has(A)&&(oo.add(A),console.warn(`[msaview] the linked transcript is not mapped to the genome: ${t.reason}`));return}let e=Ao(t.transcript);return{...e,codingPositions:Object.keys(e.g2p).map(Number).sort((n,r)=>n-r)}}function mi(A,t){let e=0,n=A.length;for(;e<n;){let r=e+n>>>1;A[r]<t?e=r+1:n=r}return e}function io(A,t,e){let n=new Set,{codingPositions:r,g2p:o}=A;for(let i=mi(r,t);i<r.length&&r[i]<e;i++)n.add(o[r[i]]);return n}var wi="This view's alignment is no longer in browser storage. Stored alignments are kept for 7 days after they were last used, and are lost when site data is cleared.",pi=" Retry runs the original search again and rebuilds it.",Di=" Relaunch it from the gene to rebuild it.",yi="Part of this view is no longer in browser storage: annotations, a tree or row metadata too large for the session. Stored documents are kept for 7 days after they were last used, and are lost when site data is cleared.";function so(A){let{dataStoreId:t}=A;t&&(async()=>{try{A.setLoadingStoredData(!0);let e=await Vn(t);if(A.dataStoreId!==t)return;(0,kA.transaction)(()=>{if(e){let{data:n}=A;e.msa&&!n.msa&&A.setMSA(e.msa),e.tree&&!n.tree&&A.setTree(e.tree),e.treeMetadata&&!n.treeMetadata&&A.setTreeMetadata(e.treeMetadata),e.gff&&!n.gff&&A.setGFF(e.gff),A.setLastStoredData(e)}else A.setDataStoreId(void 0),Ni(A)?A.addWarning(yi):A.setError(new Error(wi+(A.blastParams??A.orthologParams?pi:Di)))})}catch(e){console.error("Failed to load MSA data from IndexedDB:",e)}finally{A.setLoadingStoredData(!1)}})()}function Ni(A){return!!(A.data.msa||A.msaFilehandle||A.init?.msaIndexedLocation)}function ki(A){return!(A.msa||A.tree||A.treeMetadata||A.gff)}function Si(A,t){return!!A&&A.msa===t.msa&&A.tree===t.tree&&A.treeMetadata===t.treeMetadata&&A.gff===t.gff}function Io(A){let{dataStoreId:t,ownsDataStoreRow:e,isStoringData:n,loadingStoredData:r,lastStoredData:o}=A,i=A.unsavedDocuments;if(!(n||r||Si(o,i))){if(ki(i)){o&&(0,kA.transaction)(()=>{A.setDataStoreId(void 0),A.setOwnsDataStoreRow(!1),A.setLastStoredData(i)});return}A.setIsStoringData(!0),(async()=>{try{let g=t&&e?t:Zn();await Xn(g,i)&&(0,kA.transaction)(()=>{A.setDataStoreId(g),A.setOwnsDataStoreRow(!0)})}catch(g){console.error("Failed to store MSA data to IndexedDB:",g)}finally{(0,kA.transaction)(()=>{A.setLastStoredData(i),A.setIsStoringData(!1)})}})()}}function co(A){A.orthologParams&&!A.launchCompleted&&!Qo(A)&&Re({self:A,message:"Resolving orthologs",launch:t=>yt({self:A,scope:t}),onLaunched:()=>{A.setLaunchCompleted(!0)}})}function Qo(A){return!!A.connectedTranscript&&!A.connectedFeature}function Bo(A){A.blastParams&&!A.launchCompleted&&!Qo(A)&&Re({self:A,message:"Submitting query",launch:t=>ht({self:A,scope:t}),onLaunched:()=>{A.setLaunchCompleted(!0)}})}function Co(A){let{rows:t,domainsRequested:e,annotations:n}=A,r=A.data.treeMetadata?.includes('"Accession"')??!1;t.length>0&&r&&n.length===0&&!e&&(A.setDomainsRequested(!0),(async()=>{try{await On(A)}catch(o){console.error("[msaview-domains] auto-load failed:",o)}finally{A.setProgress("")}})())}function Eo(A){let{init:t}=A;if(t){let{msaUrl:e,msaIndexedLocation:n,msaName:r,querySeqName:o}=t,i=!!(n&&r);if(i&&A.data.msa)return;(async()=>{try{if(A.setError(void 0),e){let g=_e(e);g&&(A.setUniprotId(g),A.setQuerySeqName("query"))}if(o&&A.setQuerySeqName(o),e)A.setMSAFilehandle({uri:e,locationType:"UriLocation"});else if(n&&r){let g=await qn({location:n,name:r});if(g)A.setMSA(g);else throw new Error(`No alignment named ${r} in ${n.uri}`)}i||A.setInit(void 0)}catch(g){A.setError(g),console.error(g)}})()}}function fo(A){let t=!1;return()=>{let e=_n({model:A});e!==void 0?(A.setMousePos(e),t=!0):t&&(A.setMousePos(void 0),t=!1)}}function ao(A,t){let{connectedViewId:e,transcriptToMsaMap:n}=A;if(!n||!SA(A))return[];let r=new Set;for(let o of $n((0,go.getSession)(A).views))for(let i of o.structures)if(i.connectedViewId===e)for(let{start:g,end:I}of i[t]??[])for(let a of io(n,g,I)){let s=MA(A,a);s!==void 0&&r.add(s)}return[...r]}function bi(A,t){return!A||!t?A===t:A.length===t.length&&A.every((e,n)=>e===t[n])}function uo(A){let t;return()=>{let{connectedViewId:e,transcriptToMsaMap:n}=A;if(!e||!n)return;let r=ao(A,"hoverGenomeHighlights"),o=r.length?[]:ao(A,"clickGenomeHighlights"),i=A.highlightColumns??[],g=r.length?r:o.length?o:i,I=g.length>0?g:void 0;bi(t,I)||(t=I,A.setHighlightedColumns(I))}}function lo(){jn().catch(A=>{console.error("Failed to cleanup old MSA data:",A)})}function WA({model:A,coord:t}){let{querySeqName:e,transcriptToMsaMap:n,mafRegion:r}=A,o=A.visibleColToSeqPos(e,t);if(o===void 0)return[];if(r){let i=r.start+o;return i<r.end?[{refName:r.refName,start:i,end:i+1}]:[]}if(n){let{refName:i,p2gCodon:g}=n,I=o+(A.querySeqOffset??0);return eo(g,I)?.map(([a,s])=>({refName:i,start:a,end:s}))??[]}return[]}function ho(A){let t=WA(A),e=t[0],n=t.at(-1);return e&&n?{refName:e.refName,start:e.start,end:n.end}:void 0}var po=x(Mo()),ve=x(fA()),Do=x(xo()),yo=x(Ue()),zA=x(RA());function mo(A){return A.replace(/\.\d+$/,"")}function Mi(A,t){let e=mo(t);return[A.get("name"),A.get("id"),A.get("transcript_id"),A.id()].some(n=>typeof n=="string"&&(n===t||mo(n)===e))}function wo(A){return A.map(t=>({assemblyName:t.assemblyName,refName:t.refName,start:Math.floor(t.start),end:Math.ceil(t.end)}))}function Fi(A){let t=wo(A.dynamicBlocks?.contentBlocks??[]),e=wo(A.displayedRegions);return t.length>0?[t,e]:[e]}function No(A){return A.filter(t=>t.type==="FeatureTrack")}async function xi(A,t){let e=A.connectedView,n=(0,ve.getSession)(A),r="msaview-connectedTranscript",o=No(e.tracks);for(let i of Fi(e))for(let g of o){let I=await n.rpcManager.call(r,"CoreGetFeatures",{adapterConfig:(0,po.getConf)(g,"adapter"),regions:i});for(let a of I){let s=Te(a).find(d=>Mi(d,t));if(s)return s}}}async function Ri(A,t){let e=await Oe({start:t.get("start"),end:t.get("end"),refName:t.get("refName"),assemblyName:A.connectedView.assemblyNames[0],session:(0,ve.getSession)(A)});return(0,Do.translateTranscript)({transcript:t,...e})?.protein}var Ge=new WeakMap;async function Ji({self:A,transcriptId:t,blastParams:e,orthologParams:n,isCurrent:r}){let o=No(A.connectedView.tracks).length;try{A.setProgress(`Looking up ${t} in the genome view...`);let i=await xi(A,t);if(!i)throw new Error(`Transcript "${t}" was not found in the ${o} feature track(s) open in the connected genome view. Open the gene track that carries it, and make sure the view is on its locus.`);let g=await Ri(A,i);if(!g)throw new Error(`Transcript "${t}" has no CDS to translate`);if(!r())return;let I=i.toJSON();(0,zA.transaction)(()=>{A.setProgress(""),e&&!e.proteinSequence&&A.setBlastParams({...e,selectedTranscript:I,proteinSequence:g}),n&&!n.proteinSequence&&A.setOrthologParams({...n,selectedTranscript:I,proteinSequence:g}),A.setConnectedFeature(I)})}catch(i){console.error(i),r()&&(A.setProgress(""),A.setError(i))}}function ko(A){let{connectedTranscript:t,connectedFeature:e,connectedView:n,blastParams:r,orthologParams:o}=A;if(!t||e||!n?.initialized||n.tracks.length===0)return;let i=(Ge.get(A)??0)+1;Ge.set(A,i),(0,zA.untracked)(()=>{Ji({self:A,transcriptId:t,blastParams:r,orthologParams:o,isCurrent:()=>(0,yo.isAlive)(A)&&Ge.get(A)===i})})}var Vg=["ncbi","panther","uniref"];function Gi(){return S.types.compose(So.BaseViewModel,At(),S.types.model("MsaView",{connectedViewId:S.types.maybe(S.types.string),connectedFeature:S.types.frozen(),connectedTranscript:S.types.maybe(S.types.string),blastParams:S.types.frozen(),orthologParams:S.types.frozen(),querySeqName:S.types.stripDefault(S.types.string,"QUERY"),querySeqOffset:S.types.stripDefault(S.types.number,0),uniprotId:S.types.maybe(S.types.string),zoomToBaseLevel:S.types.stripDefault(S.types.boolean,!1),init:S.types.frozen(),dataStoreId:S.types.maybe(S.types.string),launchCompleted:!1,mafRegion:S.types.frozen()})).volatile(()=>({rid:void 0,progress:"",loadingStoredData:!1,isStoringData:!1,lastStoredData:void 0,ownsDataStoreRow:!1,launchController:void 0,domainsRequested:!1})).views(A=>({get transcriptToMsaMap(){return A.connectedFeature?ro(A.connectedFeature):void 0},get connectedView(){let{views:t}=(0,bo.getSession)(A);return t.find(e=>e.id===A.connectedViewId)}})).views(A=>({get connectedHoverHighlights(){let{mouseCol:t}=A;return t===void 0?[]:WA({model:A,coord:t})},get connectedClickHighlights(){let{mouseClickCol:t}=A;return t===void 0?[]:WA({model:A,coord:t})},get connectedHighlights(){return[...this.connectedHoverHighlights,...this.connectedClickHighlights]}})).views(A=>({get hostRestoresData(){let{msaIndexedLocation:t,msaName:e}=A.init??{};return A.hostCarriesData||!!(t&&e)},get unsavedDocuments(){let{data:t,init:e}=A,n=(0,S.getSnapshot)(t),r=(o,i)=>{let g=t[o];return g&&!i&&!n[o]?g:void 0};return{msa:r("msa",A.msaFilehandle??e?.msaIndexedLocation),tree:r("tree",A.treeFilehandle),treeMetadata:r("treeMetadata",A.treeMetadataFilehandle),gff:r("gff",A.gffFilehandle)}}})).actions(A=>({setZoomToBaseLevel(t){A.zoomToBaseLevel=t},setProgress(t){A.progress=t},setRid(t){A.rid=t},setBlastParams(t){A.blastParams=t},setConnectedFeature(t){A.connectedFeature=t},setOrthologParams(t){A.orthologParams=t},setInit(t){A.init=t},setQuerySeqName(t){A.querySeqName=t},setUniprotId(t){A.uniprotId=t},setDataStoreId(t){A.dataStoreId=t},setLaunchCompleted(t){A.launchCompleted=t},setLoadingStoredData(t){A.loadingStoredData=t},setIsStoringData(t){A.isStoringData=t},setLastStoredData(t){A.lastStoredData=t},setOwnsDataStoreRow(t){A.ownsDataStoreRow=t},setLaunchController(t){A.launchController=t},cancelLaunch(){A.launchController?.abort(),A.launchController=void 0,A.blastParams=void 0,A.orthologParams=void 0,A.init=void 0,A.launchCompleted=!1,A.progress="",A.rid=void 0,A.error=void 0},retryLaunch(){A.launchController?.abort(),A.launchController=void 0,A.progress="",A.rid=void 0,A.error=void 0,A.launchCompleted=!1,A.blastParams&&(A.blastParams={...A.blastParams}),A.orthologParams&&(A.orthologParams={...A.orthologParams}),A.init&&(A.init={...A.init})},setDomainsRequested(t){A.domainsRequested=t},handleMsaClick(t){let{connectedView:e,zoomToBaseLevel:n}=A,r=ho({model:A,coord:t});!r||!e||(n?e.navTo(r):e.centerAt(r.start,r.refName))}})).actions(A=>{let t=A.setMouseClickPos.bind(A);return{setMouseClickPos(e,n){t(e,n),e!==void 0&&A.handleMsaClick(e)}}}).actions(A=>{let t=A.reset.bind(A);return{reset(){let{displayName:e,minimized:n,zoomToBaseLevel:r}=A;t(),e!==void 0&&A.setDisplayName(e),A.setMinimized(n),A.setZoomToBaseLevel(r),A.setDomainsRequested(!1),A.setLastStoredData(void 0),A.setOwnsDataStoreRow(!1)}}}).views(A=>{let t=A.menuItems.bind(A);return{menuItems(){return[...t(),{label:"Zoom to base level on click?",type:"checkbox",checked:A.zoomToBaseLevel,onClick:()=>{A.setZoomToBaseLevel(!A.zoomToBaseLevel)}}]}}}).actions(A=>({afterCreate(){lo(),(0,S.addDisposer)(A,()=>{A.launchController?.abort()}),so(A);for(let t of[Io,ko,Bo,co,Eo,Co])(0,S.addDisposer)(A,(0,$A.autorun)(()=>{t(A)}));(0,S.addDisposer)(A,(0,$A.autorun)(fo(A))),(0,S.addDisposer)(A,(0,$A.autorun)(uo(A)))}}))}export{Gi as default,Vg as orthologSources};
|
|
12
|
+
//# sourceMappingURL=model-7VBTOIJX.js.map
|