jbrowse-plugin-graphgenomeviewer 8.0.2 → 8.2.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.
Files changed (111) hide show
  1. package/dist/chunks/{AddTrackWorkflow-RJSOQZYQ.js → AddTrackWorkflow-7CXTSSMR.js} +2 -2
  2. package/dist/chunks/GbzBaseSyntenyAdapter-EJIR3HZM.js +2 -0
  3. package/dist/chunks/GbzBaseSyntenyAdapter-EJIR3HZM.js.map +7 -0
  4. package/dist/chunks/{GraphGenomeView-667ZUNDI.js → GraphGenomeView-2AKRM74B.js} +2 -2
  5. package/dist/chunks/{GraphTrackSettingsDialog-7M3Q635V.js → GraphTrackSettingsDialog-7XRZQW6T.js} +2 -2
  6. package/dist/chunks/{HighlightColorDialog-4F34Q4PY.js → HighlightColorDialog-LCBGD2ZA.js} +2 -2
  7. package/dist/chunks/LinearGraphDisplay-WWQ73BO5.js +2 -0
  8. package/dist/chunks/{MinigraphBubbleAdapter-G25V6MZL.js → MinigraphBubbleAdapter-4OOBJ44C.js} +2 -2
  9. package/dist/chunks/RgfaTabixAdapter-CEGFN2QY.js +2 -0
  10. package/dist/chunks/RgfaTabixAdapter-CEGFN2QY.js.map +7 -0
  11. package/dist/chunks/{WalkFormsAdapter-PBN7BJZW.js → WalkFormsAdapter-LTAKACZD.js} +2 -2
  12. package/dist/chunks/{WalkTabixSyntenyAdapter-27WDE5JF.js → WalkTabixSyntenyAdapter-B6V3YNW7.js} +2 -2
  13. package/dist/chunks/chunk-5FNGR33G.js +2 -0
  14. package/dist/chunks/chunk-5FNGR33G.js.map +7 -0
  15. package/dist/chunks/chunk-6VNDP3UB.js +2 -0
  16. package/dist/chunks/chunk-6VNDP3UB.js.map +7 -0
  17. package/dist/chunks/{chunk-CJAV55QB.js → chunk-BJHWGRMP.js} +1 -1
  18. package/dist/chunks/{chunk-CJAV55QB.js.map → chunk-BJHWGRMP.js.map} +1 -1
  19. package/dist/chunks/{chunk-IAXUZMOX.js → chunk-CNCYMJ5E.js} +2 -2
  20. package/dist/chunks/{chunk-IAXUZMOX.js.map → chunk-CNCYMJ5E.js.map} +2 -2
  21. package/dist/chunks/{chunk-2V75YPTT.js → chunk-CVHKXFVS.js} +2 -2
  22. package/dist/chunks/{chunk-2V75YPTT.js.map → chunk-CVHKXFVS.js.map} +2 -2
  23. package/dist/chunks/chunk-CZI7IP5S.js +2 -0
  24. package/dist/chunks/chunk-CZI7IP5S.js.map +7 -0
  25. package/dist/chunks/chunk-CZXJXNZN.js +3 -0
  26. package/dist/chunks/chunk-CZXJXNZN.js.map +7 -0
  27. package/dist/chunks/chunk-HAAABGE7.js +2 -0
  28. package/dist/chunks/{chunk-JMRW3IGK.js → chunk-IK3MQ4ZJ.js} +2 -2
  29. package/dist/chunks/chunk-IK3MQ4ZJ.js.map +7 -0
  30. package/dist/chunks/{chunk-JOYKGTDE.js → chunk-MCBYBZZJ.js} +2 -2
  31. package/dist/chunks/chunk-NOXHIOIM.js +2 -0
  32. package/dist/chunks/chunk-NOXHIOIM.js.map +7 -0
  33. package/dist/chunks/{chunk-FY7X6253.js → chunk-OGXVDZPS.js} +2 -2
  34. package/dist/chunks/{chunk-FY7X6253.js.map → chunk-OGXVDZPS.js.map} +2 -2
  35. package/dist/chunks/{chunk-3EQNVA3F.js → chunk-OLZZDBQJ.js} +2 -2
  36. package/dist/chunks/{chunk-3EQNVA3F.js.map → chunk-OLZZDBQJ.js.map} +2 -2
  37. package/dist/chunks/{chunk-I6F25EXY.js → chunk-PTOKTIQG.js} +2 -2
  38. package/dist/chunks/{chunk-O5FDMVL3.js → chunk-QWG7NASD.js} +2 -2
  39. package/dist/chunks/chunk-SL4JJJQJ.js +3 -0
  40. package/dist/chunks/chunk-SL4JJJQJ.js.map +7 -0
  41. package/dist/chunks/{chunk-XB5KC2EZ.js → chunk-T2VC3EEL.js} +1 -1
  42. package/dist/chunks/{chunk-XB5KC2EZ.js.map → chunk-T2VC3EEL.js.map} +1 -1
  43. package/dist/chunks/{chunk-2PNGGCQJ.js → chunk-UECOGSWM.js} +2 -2
  44. package/dist/chunks/{chunk-2PNGGCQJ.js.map → chunk-UECOGSWM.js.map} +1 -1
  45. package/dist/chunks/chunk-UHV6XIDG.js +2 -0
  46. package/dist/chunks/chunk-UHV6XIDG.js.map +7 -0
  47. package/dist/chunks/{chunk-5RHNR3TH.js → chunk-VKZALU57.js} +1 -1
  48. package/dist/chunks/{chunk-5RHNR3TH.js.map → chunk-VKZALU57.js.map} +1 -1
  49. package/dist/chunks/chunk-W7IHIVSE.js +2 -0
  50. package/dist/chunks/{chunk-XWCLYB5C.js.map → chunk-W7IHIVSE.js.map} +4 -4
  51. package/dist/chunks/{chunk-NLS74JSZ.js → chunk-WUOXZAGN.js} +2 -2
  52. package/dist/chunks/{chunk-NLS74JSZ.js.map → chunk-WUOXZAGN.js.map} +1 -1
  53. package/dist/chunks/{renderSvg-YNA5VK6A.js → renderSvg-E5Q7MLCH.js} +2 -2
  54. package/dist/jbrowse-plugin-graphgenomeviewer.esm.js +5 -5
  55. package/dist/jbrowse-plugin-graphgenomeviewer.esm.js.map +4 -4
  56. package/package.json +4 -4
  57. package/src/GraphAddTrackWorkflow/buildTrackConfig.ts +12 -2
  58. package/src/GraphAddTrackWorkflow/graphManifest.ts +16 -9
  59. package/src/GraphGenomeView/components/HoverTooltip.tsx +8 -0
  60. package/src/GraphGenomeView/pane/paneBase.ts +14 -9
  61. package/src/RgfaTabixAdapter/RgfaTabixAdapter.ts +94 -41
  62. package/src/RgfaTabixAdapter/configSchema.ts +35 -4
  63. package/src/RgfaTabixAdapter/format2.test.ts +128 -0
  64. package/src/RgfaTabixAdapter/test_data/pggb_ecoli_f1.links.bed.gz +0 -0
  65. package/src/RgfaTabixAdapter/test_data/pggb_ecoli_f1.links.bed.gz.tbi +0 -0
  66. package/src/RgfaTabixAdapter/test_data/pggb_ecoli_f1.segs.bed.gz +0 -0
  67. package/src/RgfaTabixAdapter/test_data/pggb_ecoli_f1.segs.bed.gz.tbi +0 -0
  68. package/src/RgfaTabixAdapter/test_data/pggb_ecoli_f2.graph.bed.gz +0 -0
  69. package/src/RgfaTabixAdapter/test_data/pggb_ecoli_f2.graph.bed.gz.tbi +0 -0
  70. package/src/RgfaTabixAdapter/test_data/walks5_skip.GRCh38.walks.bed.gz +0 -0
  71. package/src/RgfaTabixAdapter/test_data/walks5_skip.GRCh38.walks.bed.gz.tbi +0 -0
  72. package/src/RgfaTabixAdapter/walkFiles.test.ts +21 -0
  73. package/src/RgfaTabixAdapter/walkReader.ts +20 -15
  74. package/src/graphTrackDefaults/index.ts +2 -2
  75. package/src/locationName.ts +2 -0
  76. package/src/version.ts +1 -1
  77. package/dist/chunks/GbzBaseSyntenyAdapter-EGNUOKB2.js +0 -2
  78. package/dist/chunks/GbzBaseSyntenyAdapter-EGNUOKB2.js.map +0 -7
  79. package/dist/chunks/LinearGraphDisplay-BAEMS5WG.js +0 -2
  80. package/dist/chunks/RgfaTabixAdapter-JPTUWO2Z.js +0 -2
  81. package/dist/chunks/RgfaTabixAdapter-JPTUWO2Z.js.map +0 -7
  82. package/dist/chunks/chunk-AH5UWTAV.js +0 -2
  83. package/dist/chunks/chunk-AH5UWTAV.js.map +0 -7
  84. package/dist/chunks/chunk-DG3E6BSX.js +0 -3
  85. package/dist/chunks/chunk-DG3E6BSX.js.map +0 -7
  86. package/dist/chunks/chunk-HLAQQI6G.js +0 -2
  87. package/dist/chunks/chunk-HLAQQI6G.js.map +0 -7
  88. package/dist/chunks/chunk-IKJZPPOA.js +0 -2
  89. package/dist/chunks/chunk-IKJZPPOA.js.map +0 -7
  90. package/dist/chunks/chunk-JMRW3IGK.js.map +0 -7
  91. package/dist/chunks/chunk-Q7QC2EQU.js +0 -2
  92. package/dist/chunks/chunk-RHYBJCA4.js +0 -2
  93. package/dist/chunks/chunk-RHYBJCA4.js.map +0 -7
  94. package/dist/chunks/chunk-X7YIGIYW.js +0 -2
  95. package/dist/chunks/chunk-X7YIGIYW.js.map +0 -7
  96. package/dist/chunks/chunk-XWCLYB5C.js +0 -2
  97. package/dist/chunks/chunk-ZGTG74GE.js +0 -3
  98. package/dist/chunks/chunk-ZGTG74GE.js.map +0 -7
  99. /package/dist/chunks/{AddTrackWorkflow-RJSOQZYQ.js.map → AddTrackWorkflow-7CXTSSMR.js.map} +0 -0
  100. /package/dist/chunks/{GraphGenomeView-667ZUNDI.js.map → GraphGenomeView-2AKRM74B.js.map} +0 -0
  101. /package/dist/chunks/{GraphTrackSettingsDialog-7M3Q635V.js.map → GraphTrackSettingsDialog-7XRZQW6T.js.map} +0 -0
  102. /package/dist/chunks/{HighlightColorDialog-4F34Q4PY.js.map → HighlightColorDialog-LCBGD2ZA.js.map} +0 -0
  103. /package/dist/chunks/{LinearGraphDisplay-BAEMS5WG.js.map → LinearGraphDisplay-WWQ73BO5.js.map} +0 -0
  104. /package/dist/chunks/{MinigraphBubbleAdapter-G25V6MZL.js.map → MinigraphBubbleAdapter-4OOBJ44C.js.map} +0 -0
  105. /package/dist/chunks/{WalkFormsAdapter-PBN7BJZW.js.map → WalkFormsAdapter-LTAKACZD.js.map} +0 -0
  106. /package/dist/chunks/{WalkTabixSyntenyAdapter-27WDE5JF.js.map → WalkTabixSyntenyAdapter-B6V3YNW7.js.map} +0 -0
  107. /package/dist/chunks/{chunk-Q7QC2EQU.js.map → chunk-HAAABGE7.js.map} +0 -0
  108. /package/dist/chunks/{chunk-JOYKGTDE.js.map → chunk-MCBYBZZJ.js.map} +0 -0
  109. /package/dist/chunks/{chunk-I6F25EXY.js.map → chunk-PTOKTIQG.js.map} +0 -0
  110. /package/dist/chunks/{chunk-O5FDMVL3.js.map → chunk-QWG7NASD.js.map} +0 -0
  111. /package/dist/chunks/{renderSvg-YNA5VK6A.js.map → renderSvg-E5Q7MLCH.js.map} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@12.1.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-VA5U4F23.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@12.1.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-4FPEQQFT.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@12.1.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-BIYQIWDO.js"],
4
+ "sourcesContent": ["// src/gfa/walkStops.ts\nvar START_STOP_TAG = \"ws\";\nvar END_STOP_TAG = \"we\";\nvar STOP_KINDS = [\"elsewhere\", \"break\", \"end\"];\nvar GAP_CAUSE_TEXT = {\n missing: \"not in the graph\",\n elsewhere: \"on nodes filed elsewhere\",\n unknown: \"gap, cause unknown\",\n abridged: \"abridged: steps not loaded\",\n // a walk file's skip row: the haplotype jumps over the window\n deleted: \"deleted in this haplotype\"\n};\nvar OUTSIDE_TEXT = \"outside the extracted subgraph\";\nfunction gapParts(bp, after, before) {\n if (!after && !before) {\n return [{ bp }];\n }\n const left = Math.min(after?.trimmed ?? 0, bp);\n const right = Math.min(before?.trimmed ?? 0, bp - left);\n let rest = bp - left - right;\n const lead = after?.kind === \"break\" ? Math.min(after.bp, rest) : 0;\n rest -= lead;\n const trail = before?.kind === \"break\" ? Math.min(before.bp, rest) : 0;\n rest -= trail;\n const elsewhere = [after, before].find((s) => s?.kind === \"elsewhere\");\n const parts = [\n { bp: left },\n { bp: lead, cause: \"missing\" },\n elsewhere?.kind === \"elsewhere\" ? { bp: rest, cause: \"elsewhere\", chunk: elsewhere.chunk } : { bp: rest, cause: \"unknown\" },\n { bp: trail, cause: \"missing\" },\n { bp: right }\n ];\n return parts.filter((part) => part.bp > 0);\n}\nfunction stopAt(table, i) {\n const bp = table.bp[i];\n const ref = table.chunkRefs[i];\n return stopOf(\n table.kindNames[table.kinds[i]],\n Number.isNaN(bp) ? void 0 : bp,\n table.trimmed[i],\n ref < 0 ? void 0 : { refName: table.chunkRefNames[ref], start: table.chunkStarts[i] }\n );\n}\nfunction stopOf(kind, bp, trimmed, chunk) {\n const cut = trimmed > 0 ? { trimmed } : {};\n if (kind === \"elsewhere\" && chunk) {\n return { kind, chunk, ...bp === void 0 ? {} : { bp }, ...cut };\n }\n if (kind === \"break\" && bp !== void 0) {\n return { kind, bp, ...chunk ? { chunk } : {}, ...cut };\n }\n return kind === \"end\" ? { kind, ...cut } : void 0;\n}\nfunction stopTag(stop) {\n const parts = [stop.kind];\n if (\"bp\" in stop && stop.bp !== void 0) {\n parts.push(`bp=${stop.bp}`);\n }\n if (stop.trimmed) {\n parts.push(`trimmed=${stop.trimmed}`);\n }\n if (\"chunk\" in stop && stop.chunk) {\n parts.push(`chunk=${stop.chunk.refName}:${stop.chunk.start}`);\n }\n return parts.join(\",\");\n}\nfunction parseStopTag(value) {\n const [kind, ...fields] = value.split(\",\");\n let bp;\n let trimmed = 0;\n let chunk;\n for (const field of fields) {\n if (field.startsWith(\"bp=\")) {\n bp = +field.slice(3);\n } else if (field.startsWith(\"trimmed=\")) {\n trimmed = +field.slice(8);\n } else if (field.startsWith(\"chunk=\")) {\n const at = field.lastIndexOf(\":\");\n chunk = { refName: field.slice(6, at), start: +field.slice(at + 1) };\n }\n }\n return stopOf(kind, bp, trimmed, chunk);\n}\nfunction stopFields(before, after) {\n return {\n ...before ? { before } : {},\n ...after ? { after } : {}\n };\n}\nfunction walkStopFields(tags) {\n const before = tags[START_STOP_TAG];\n const after = tags[END_STOP_TAG];\n return stopFields(\n typeof before === \"string\" ? parseStopTag(before) : void 0,\n typeof after === \"string\" ? parseStopTag(after) : void 0\n );\n}\nfunction walkStopTags(walks, p) {\n const tags = [];\n for (const [tag, table] of [\n [START_STOP_TAG, walks.before],\n [END_STOP_TAG, walks.after]\n ]) {\n const stop = table && stopAt(table, p);\n if (stop) {\n tags.push(`\t${tag}:Z:${stopTag(stop)}`);\n }\n }\n return tags.join(\"\");\n}\nvar StopColumns = class {\n constructor() {\n this.kinds = [];\n this.bp = [];\n this.trimmed = [];\n this.chunkRefs = [];\n this.chunkStarts = [];\n this.chunkRefNames = [];\n this.refIndex = /* @__PURE__ */ new Map();\n }\n push(stop) {\n this.kinds.push(STOP_KINDS.indexOf(stop.kind));\n this.bp.push(\"bp\" in stop && stop.bp !== void 0 ? stop.bp : NaN);\n this.trimmed.push(stop.trimmed ?? 0);\n const chunk = \"chunk\" in stop ? stop.chunk : void 0;\n if (chunk) {\n let ref = this.refIndex.get(chunk.refName);\n if (ref === void 0) {\n ref = this.chunkRefNames.length;\n this.refIndex.set(chunk.refName, ref);\n this.chunkRefNames.push(chunk.refName);\n }\n this.chunkRefs.push(ref);\n this.chunkStarts.push(chunk.start);\n } else {\n this.chunkRefs.push(-1);\n this.chunkStarts.push(NaN);\n }\n }\n table() {\n return {\n kinds: Uint8Array.from(this.kinds),\n kindNames: [...STOP_KINDS],\n bp: Float64Array.from(this.bp),\n trimmed: Float64Array.from(this.trimmed),\n chunkRefs: Int32Array.from(this.chunkRefs),\n chunkStarts: Float64Array.from(this.chunkStarts),\n chunkRefNames: this.chunkRefNames\n };\n }\n};\n\nexport {\n START_STOP_TAG,\n END_STOP_TAG,\n GAP_CAUSE_TEXT,\n OUTSIDE_TEXT,\n gapParts,\n stopAt,\n stopTag,\n parseStopTag,\n stopFields,\n walkStopFields,\n walkStopTags,\n StopColumns\n};\n", "import {\n stopAt,\n stopFields,\n walkStopTags\n} from \"./chunk-VA5U4F23.js\";\nimport {\n PathVisits\n} from \"./chunk-BEUTROKU.js\";\nimport {\n panSNFields,\n panSNSample\n} from \"./chunk-2JL2JVZ2.js\";\n\n// src/gfa/graphTables.ts\nfunction pLineName(name, start, end) {\n return start === 0 ? name : `${name}:${start}-${end}`;\n}\nfunction tablePath(w, p) {\n const walkName = w.names[p];\n const fields = panSNFields(walkName);\n const start = w.starts[p];\n const steps = w.abridgedSteps?.[p] ?? Number.NaN;\n const abridged = Number.isNaN(steps) ? {} : { abridged: { steps, bp: w.abridgedBp?.[p] ?? 0 } };\n return fields ? {\n name: `${fields.sample}#${fields.haplotype}#${fields.contig}`,\n start,\n ...fields,\n ...stopFields(\n w.before && stopAt(w.before, p),\n w.after && stopAt(w.after, p)\n ),\n ...abridged\n } : { name: pLineName(walkName, start, w.ends[p]), start };\n}\nfunction namesByList(lists, names, listCount, pathNames) {\n const starts = new Int32Array(listCount + 1);\n for (const list of lists) {\n starts[list + 1]++;\n }\n for (let i = 0; i < listCount; i++) {\n starts[i + 1] += starts[i];\n }\n const fill = starts.slice(0, listCount);\n const grouped = new Int32Array(lists.length);\n lists.forEach((list, i) => {\n grouped[fill[list]++] = names[i];\n });\n const listed = new Int32Array(pathNames.length).fill(-1);\n return Array.from({ length: listCount }, (_, list) => {\n const out = [];\n for (let i = starts[list]; i < starts[list + 1]; i++) {\n const k = grouped[i];\n if (listed[k] !== list) {\n listed[k] = list;\n out.push(pathNames[k]);\n }\n }\n return out;\n });\n}\nfunction tableNodeIds({ nodes: n, links: l, walks: w }, traversals) {\n const canonical = new Uint8Array(n.names.length);\n const claim = (node, reversed) => {\n if (canonical[node] === 0) {\n canonical[node] = reversed ? 2 : 1;\n }\n };\n for (let i = 0; i < l.from.length; i++) {\n claim(l.from[i], l.strands[i] & 1);\n claim(l.to[i], l.strands[i] & 2);\n }\n const stepCount = w.offsets[w.names.length] ?? 0;\n for (let s = 0; s < stepCount; s++) {\n const node = w.steps[s];\n claim(node, w.reversed[s]);\n if (traversals) {\n traversals[node]++;\n }\n }\n return n.names.map(\n (segment, i) => `${segment}${canonical[i] === 2 ? \"-\" : \"+\"}`\n );\n}\nfunction graphFromTables({ nodes: n, links: l, walks: w }, name = \"Imported GFA\") {\n const count = n.names.length;\n const declared = n.lengths.length;\n const drawnWalks = [];\n for (let p = 0; p < w.names.length; p++) {\n if (w.offsets[p + 1] > w.offsets[p]) {\n drawnWalks.push(p);\n }\n }\n const traversals = new Int32Array(count);\n const ids = tableNodeIds({ nodes: n, links: l, walks: w }, traversals);\n const nodes = [];\n for (let i = 0; i < declared; i++) {\n const ref = n.refs[i];\n nodes.push({\n id: ids[i],\n name: n.names[i],\n length: n.lengths[i],\n depth: Math.max(traversals[i], 1),\n stable: ref < 0 ? void 0 : {\n refName: n.refNames[ref],\n start: n.starts[i],\n rank: n.ranks[i]\n },\n samples: void 0\n });\n }\n const edges = [];\n const neighbours = new Array(count);\n const pairList = (a, b) => {\n const near = neighbours[a];\n if (near) {\n for (let j = 0; j < near.length; j += 2) {\n if (near[j] === b) {\n return near[j + 1];\n }\n }\n }\n return void 0;\n };\n const addPair = (a, b, list) => {\n const near = neighbours[a];\n if (near) {\n near.push(b, list);\n } else {\n neighbours[a] = [b, list];\n }\n };\n const edgeLists = [];\n let lists = 0;\n for (let i = 0; i < l.from.length; i++) {\n const a = l.from[i];\n const b = l.to[i];\n edges.push({\n from: ids[a],\n to: ids[b],\n fromStrand: l.strands[i] & 1 ? \"-\" : \"+\",\n toStrand: l.strands[i] & 2 ? \"-\" : \"+\"\n });\n let list = pairList(a, b);\n if (list === void 0) {\n list = lists++;\n addPair(a, b, list);\n addPair(b, a, list);\n }\n edgeLists.push(list);\n }\n const adjacency = new Int32Array(count + 1);\n for (let a = 0; a < count; a++) {\n adjacency[a + 1] = adjacency[a] + (neighbours[a]?.length ?? 0) / 2;\n }\n const adjacentNode = new Int32Array(adjacency[count]);\n const adjacentList = new Int32Array(adjacency[count]);\n neighbours.forEach((near, a) => {\n for (let j = 0; j < near.length; j += 2) {\n adjacentNode[adjacency[a] + j / 2] = near[j];\n adjacentList[adjacency[a] + j / 2] = near[j + 1];\n }\n });\n const listOf = (a, b) => {\n for (let j = adjacency[a]; j < adjacency[a + 1]; j++) {\n if (adjacentNode[j] === b) {\n return adjacentList[j];\n }\n }\n return -1;\n };\n const nameIndex = /* @__PURE__ */ new Map();\n const pathNames = [];\n const crossedList = new Int32Array(w.offsets[w.names.length] ?? 0);\n const crossedName = new Int32Array(crossedList.length);\n let crossings = 0;\n const lastWalk = new Int32Array(lists).fill(-1);\n const paths = [];\n const anchorPaths = [];\n const totalSteps = w.offsets[w.names.length] ?? 0;\n const visitPath = new Int32Array(totalSteps);\n const visitStart = new Float64Array(totalSteps);\n const visitReversed = new Uint8Array(totalSteps);\n const fill = new Int32Array(count).fill(-1);\n const visitOrder = [];\n const blocks = [0];\n const pathSamples = [];\n const edgeNameIndex = /* @__PURE__ */ new Map();\n const edgeNames = [];\n for (const p of drawnWalks) {\n const head = tablePath(w, p);\n const { start, name: pathName } = head;\n const visitName = head.sample === void 0 ? w.names[p] : pathName;\n let named = nameIndex.get(visitName);\n if (named === void 0) {\n named = pathNames.length;\n nameIndex.set(visitName, named);\n pathNames.push(visitName);\n pathSamples.push(panSNSample(visitName));\n }\n let edgeNamed = edgeNameIndex.get(pathName);\n if (edgeNamed === void 0) {\n edgeNamed = edgeNames.length;\n edgeNameIndex.set(pathName, edgeNamed);\n edgeNames.push(pathName);\n }\n const visitSample = pathSamples[named];\n const first = w.offsets[p];\n const nodeIds = new Array(w.offsets[p + 1] - first);\n let pos = start;\n let prev = -1;\n for (let s = first; s < w.offsets[p + 1]; s++) {\n const node = w.steps[s];\n nodeIds[s - first] = ids[node];\n if (fill[node] === -1) {\n fill[node] = blocks.at(-1);\n blocks.push(fill[node] + traversals[node]);\n visitOrder.push(node);\n }\n const at = fill[node]++;\n visitPath[at] = named;\n visitStart[at] = pos;\n visitReversed[at] = w.reversed[s];\n pos += node < declared ? n.lengths[node] : 0;\n if (prev >= 0) {\n const list = listOf(prev, node);\n if (list >= 0 && lastWalk[list] !== p) {\n lastWalk[list] = p;\n crossedList[crossings] = list;\n crossedName[crossings++] = edgeNamed;\n }\n }\n prev = node;\n }\n paths.push({ ...head, nodeIds });\n anchorPaths.push({\n name: visitName,\n sample: visitSample,\n start,\n length: pos - start\n });\n }\n const listNames = namesByList(\n crossedList.subarray(0, crossings),\n crossedName,\n lists,\n edgeNames\n );\n edges.forEach((edge, i) => {\n const names = listNames[edgeLists[i]];\n if (names.length > 0) {\n edge.pathIds = names;\n }\n });\n const walked = drawnWalks.length > 0;\n return {\n name,\n nodes,\n edges,\n paths: walked ? paths : void 0,\n anchorPaths: walked ? anchorPaths : void 0,\n pathVisits: walked ? new PathVisits({\n segments: visitOrder.map((node) => n.names[node]),\n offsets: Int32Array.from(blocks),\n path: visitPath.subarray(0, blocks.at(-1)),\n start: visitStart.subarray(0, blocks.at(-1)),\n reversed: visitReversed.subarray(0, blocks.at(-1)),\n paths: pathNames,\n samples: pathSamples\n }) : void 0,\n anchoredBy: nodes.some((node) => node.stable) ? \"tags\" : void 0\n };\n}\nfunction graphTablesGFA({ nodes, links, walks }) {\n const { names } = nodes;\n const lines = [\"H\tVN:Z:1.1\"];\n for (let i = 0; i < nodes.lengths.length; i++) {\n const ref = nodes.refs[i];\n const stable = ref < 0 ? \"\" : `\tSN:Z:${nodes.refNames[ref]}\tSO:i:${nodes.starts[i]}\tSR:i:${nodes.ranks[i]}`;\n lines.push(`S\t${names[i]}\t*\tLN:i:${nodes.lengths[i]}${stable}`);\n }\n for (let i = 0; i < links.from.length; i++) {\n const strands = links.strands[i];\n lines.push(\n `L\t${names[links.from[i]]}\t${strands & 1 ? \"-\" : \"+\"}\t${names[links.to[i]]}\t${strands & 2 ? \"-\" : \"+\"}\t0M`\n );\n }\n for (let p = 0; p < walks.names.length; p++) {\n const name = walks.names[p];\n const fields = panSNFields(name);\n const start = walks.starts[p];\n const end = walks.ends[p];\n const steps = [];\n for (let s = walks.offsets[p]; s < walks.offsets[p + 1]; s++) {\n steps.push([names[walks.steps[s]], walks.reversed[s]]);\n }\n lines.push(\n fields ? `W\t${fields.sample}\t${fields.haplotype}\t${fields.contig}\t${start}\t${end}\t${steps.map(([id, rev]) => (rev ? \"<\" : \">\") + id).join(\"\")}${walkStopTags(walks, p)}` : `P\t${pLineName(name, start, end)}\t${steps.map(([id, rev]) => id + (rev ? \"-\" : \"+\")).join(\",\")}\t*`\n );\n }\n return lines.join(\"\\n\");\n}\n\nexport {\n tablePath,\n tableNodeIds,\n graphFromTables,\n graphTablesGFA\n};\n", "import {\n tableNodeIds,\n tablePath\n} from \"./chunk-4FPEQQFT.js\";\nimport {\n gapParts\n} from \"./chunk-VA5U4F23.js\";\nimport {\n pathOrigin\n} from \"./chunk-BRH73RCH.js\";\nimport {\n groupBy\n} from \"./chunk-BSOZW3FC.js\";\nimport {\n panSNContig,\n panSNFields,\n panSNHaplotype,\n panSNSample\n} from \"./chunk-2JL2JVZ2.js\";\n\n// src/layout/walkRowRuns.ts\nvar RUN_ON_REFERENCE = 1;\nvar RUN_REVERSED = 2;\nvar RUN_GAP = 4;\nvar GAP_CAUSES = [\n void 0,\n \"missing\",\n \"elsewhere\",\n \"unknown\",\n \"abridged\",\n \"deleted\"\n];\nvar CAUSE_SHIFT = 3;\nvar causeFlags = (cause) => GAP_CAUSES.indexOf(cause) << CAUSE_SHIFT;\nfunction referenceOf(names, referencePath, rankZero) {\n return referencePath !== void 0 && names.includes(referencePath) ? referencePath : names.find((n) => rankZero.has(n)) ?? names[0];\n}\nfunction referenceWalkName(graph) {\n return referenceOf(\n (graph.paths ?? []).map((p) => pathOrigin(p.name).name),\n graph.referencePath,\n new Set(\n graph.nodes.flatMap(\n (n) => n.stable?.rank === 0 ? [n.stable.refName] : []\n )\n )\n );\n}\nfunction graphPieces(graph) {\n const index = /* @__PURE__ */ new Map();\n const names = [];\n const lengths = [];\n const indexOf = (id) => {\n let i = index.get(id);\n if (i === void 0) {\n i = names.length;\n index.set(id, i);\n names.push(id);\n lengths.push(0);\n }\n return i;\n };\n for (const node of graph.nodes) {\n lengths[indexOf(node.id)] = node.length;\n }\n const heads = graph.paths ?? [];\n const from = new Int32Array(heads.length);\n const to = new Int32Array(heads.length);\n const steps = [];\n heads.forEach((path, p) => {\n from[p] = steps.length;\n for (const id of path.nodeIds) {\n steps.push(indexOf(id));\n }\n to[p] = steps.length;\n });\n return {\n heads,\n from,\n to,\n steps: Int32Array.from(steps),\n lengths: Int32Array.from(lengths),\n names,\n reference: referenceWalkName(graph)\n };\n}\nfunction tablePieces(tables, referencePath, visits) {\n const { nodes: n, walks: w } = tables;\n const kept = [];\n for (let p = 0; p < w.names.length; p++) {\n if (w.offsets[p + 1] > w.offsets[p]) {\n kept.push(p);\n }\n }\n const heads = kept.map((p) => tablePath(w, p));\n const rankZero = /* @__PURE__ */ new Set();\n for (let i = 0; i < n.lengths.length; i++) {\n if (n.refs[i] >= 0 && n.ranks[i] === 0) {\n rankZero.add(n.refNames[n.refs[i]]);\n }\n }\n return {\n heads,\n from: Int32Array.from(kept, (p) => w.offsets[p]),\n to: Int32Array.from(kept, (p) => w.offsets[p + 1]),\n steps: w.steps,\n lengths: n.lengths,\n // a visit names its node as the Graph does, which costs a pass over the\n // steps\n names: visits ? tableNodeIds(tables) : n.names,\n reference: referenceOf(\n heads.map((h) => pathOrigin(h.name).name),\n referencePath,\n rankZero\n )\n };\n}\nfunction sampleOf(path) {\n return path.sample ?? panSNSample(path.name);\n}\nfunction labelOf(path) {\n return path.haplotype !== void 0 && path.sample !== void 0 ? `${path.sample}#${path.haplotype}` : sampleOf(path);\n}\nvar Columns = class {\n constructor(width) {\n this.offsets = [0];\n this.values = Array.from({ length: width }, () => []);\n }\n get length() {\n return this.values[0].length;\n }\n push(a, b, c, d, e) {\n const v = this.values;\n v[0].push(a);\n v[1].push(b);\n v[2].push(c);\n v[3].push(d);\n if (e !== void 0) {\n v[4].push(e);\n }\n }\n endRow() {\n this.offsets.push(this.length);\n }\n // the rows in `order`, column i in the array `make[i]` makes\n reorder(order, make) {\n const offsets = new Uint32Array(order.length + 1);\n order.forEach((row, i) => {\n offsets[i + 1] = offsets[i] + this.offsets[row + 1] - this.offsets[row];\n });\n const columns = make.map((m, c) => {\n const from = this.values[c];\n const out = m(this.length);\n let at = 0;\n for (const row of order) {\n for (let k = this.offsets[row]; k < this.offsets[row + 1]; k++) {\n out[at++] = from[k];\n }\n }\n return out;\n });\n return { offsets, columns };\n }\n};\nvar float64 = (n) => new Float64Array(n);\nfunction walkRowRuns(source, region, o = {}) {\n const {\n heads,\n from,\n to,\n steps: all,\n lengths,\n names,\n reference\n } = \"walks\" in source ? tablePieces(source, o.referencePath, o.visits) : graphPieces(source);\n const declared = lengths.length;\n const lengthOf = (node) => node < declared ? lengths[node] : 0;\n const nameOf = (p) => pathOrigin(heads[p].name).name;\n const startOf = (p) => heads[p].start;\n const byStart = (a, b) => (startOf(a) ?? 0) - (startOf(b) ?? 0);\n const pieceIds = heads.map((_, p) => p);\n const referencePieces = pieceIds.filter((p) => nameOf(p) === reference).sort(byStart);\n const first = referencePieces[0];\n const others = pieceIds.filter((p) => nameOf(p) !== reference);\n const skips = \"walks\" in source ? source.skips : void 0;\n if (first === void 0 || others.length === 0 && !skips?.names.length) {\n return void 0;\n }\n const walks = groupBy(others, nameOf);\n const spanStart = new Float64Array(names.length).fill(Number.NaN);\n const spanEnd = new Float64Array(names.length);\n const revisits = /* @__PURE__ */ new Map();\n let flankEnd = -Infinity;\n let flankStart = Infinity;\n const cut = region && region.end > region.start ? region : void 0;\n for (const piece of referencePieces) {\n let pos = startOf(piece) ?? 0;\n for (let s = from[piece], stop = to[piece]; s < stop; s++) {\n const node = all[s];\n const len = lengthOf(node);\n if (!Number.isNaN(spanStart[node])) {\n const starts = revisits.get(node);\n if (starts) {\n starts.push(pos);\n } else {\n revisits.set(node, [spanStart[node], pos]);\n }\n } else {\n spanStart[node] = pos;\n spanEnd[node] = pos + len;\n if (cut) {\n if (pos + len <= cut.start) {\n flankEnd = Math.max(flankEnd, pos + len);\n }\n if (pos >= cut.end) {\n flankStart = Math.min(flankStart, pos);\n }\n }\n }\n pos += len;\n }\n }\n const flanked = cut === void 0 || flankEnd > -Infinity && flankStart < Infinity;\n const runs = new Columns(5);\n const chunks = [];\n const chunkIndex = /* @__PURE__ */ new Map();\n const chunkOf = (chunk2) => {\n if (!chunk2) {\n return -1;\n }\n const key = `${chunk2.refName}:${chunk2.start}`;\n let i = chunkIndex.get(key);\n if (i === void 0) {\n i = chunks.length;\n chunkIndex.set(key, i);\n chunks.push(chunk2);\n }\n return i;\n };\n const visits = o.visits ? new Columns(4) : void 0;\n let steps = new Int32Array(0);\n let stepStart = new Float64Array(0);\n const rowOf = (pieces) => {\n const head = heads[pieces[0]];\n const ordered = [...pieces].sort(byStart);\n let count = ordered.length - 1;\n let abridgedSteps = 0;\n for (const piece of ordered) {\n count += to[piece] - from[piece] + (heads[piece].abridged ? 1 : 0);\n abridgedSteps += heads[piece].abridged?.steps ?? 0;\n }\n if (count > steps.length) {\n steps = new Int32Array(count * 2);\n stepStart = new Float64Array(count * 2);\n }\n let length = 0;\n let unplaced = false;\n let end;\n let previous;\n const partsAt = /* @__PURE__ */ new Map();\n let owed = 0;\n for (const piece of ordered) {\n const start2 = startOf(piece);\n const jump = start2 === void 0 || end === void 0 ? 0 : start2 - end;\n if (start2 === void 0 || jump < 0) {\n unplaced = true;\n }\n if (jump < 0 && heads[previous].abridged) {\n owed -= jump;\n }\n const covered = Math.min(owed, Math.max(jump, 0));\n owed -= covered;\n const gap = jump - covered;\n if (gap > 0) {\n partsAt.set(\n length,\n gapParts(\n gap,\n previous === void 0 ? void 0 : heads[previous].after,\n heads[piece].before\n )\n );\n steps[length] = -gap;\n stepStart[length++] = end;\n }\n let pos = start2 ?? 0;\n const abridged = heads[piece].abridged;\n for (let s = from[piece], stop2 = to[piece]; s < stop2; s++) {\n const node = all[s];\n const bp3 = abridged ? abridged.bp - (pos - (start2 ?? 0)) - lengthOf(node) : 0;\n if (bp3 > 0 && s === stop2 - 1 && s > from[piece]) {\n partsAt.set(length, [{ bp: bp3, cause: \"abridged\" }]);\n steps[length] = -bp3;\n stepStart[length++] = pos;\n pos += bp3;\n }\n steps[length] = node;\n stepStart[length++] = pos;\n pos += lengthOf(node);\n }\n end = start2 === void 0 ? void 0 : pos;\n previous = piece;\n }\n const onReference = (i) => i >= 0 && i < length && steps[i] >= 0 && !Number.isNaN(spanStart[steps[i]]);\n const stepEnd = (i) => {\n const id = steps[i];\n return stepStart[i] + (id < 0 ? -id : lengthOf(id));\n };\n const partialSide = (i0, i1) => {\n const flank = i0 >= 0 ? i0 : i1;\n let near = -1;\n for (let d = 1; near < 0 && d < length; d++) {\n near = [flank - d, flank + d].find(onReference) ?? -1;\n }\n if (near < 0) {\n return void 0;\n }\n const forward = near > flank === spanStart[steps[near]] > spanStart[steps[flank]];\n const after = forward === (flank === i0);\n const last2 = after ? length - 1 : 0;\n const contigEnds = onReference(last2);\n const stop2 = {\n contigEnds,\n shortBp: contigEnds ? Math.max(\n 0,\n cut.start - spanEnd[steps[last2]],\n spanStart[steps[last2]] - cut.end\n ) : 0\n };\n return {\n stop: stop2,\n lo: after ? flank + 1 : 0,\n hi: after ? length : flank,\n backward: !forward,\n axisStart: forward ? after ? stepEnd(flank) : stepStart[0] : after ? stepEnd(length - 1) : stepStart[flank]\n };\n };\n let lo = 0;\n let hi = length;\n let backward = false;\n let complete = true;\n let flankFrom = -1;\n let flankTo = -1;\n let axisStart;\n let stop;\n const trimAbridged = (inner, bp3) => {\n const parts = partsAt.get(inner);\n const gap = parts?.[0];\n if (bp3 <= 0 || gap?.cause !== \"abridged\") {\n return 0;\n }\n const trimmed = Math.min(bp3, gap.bp);\n partsAt.set(\n inner,\n gap.bp > trimmed ? [{ ...gap, bp: gap.bp - trimmed }] : []\n );\n steps[inner] += trimmed;\n return trimmed;\n };\n let leftTrim = 0;\n let rightTrim = 0;\n if (cut && flanked) {\n let i0 = -1;\n let i1 = -1;\n let bestEnd = -Infinity;\n let bestStart = Infinity;\n for (let i = 0; i < length; i++) {\n const id = steps[i];\n if (id >= 0 && !Number.isNaN(spanStart[id])) {\n if (spanEnd[id] <= cut.start && spanEnd[id] > bestEnd) {\n bestEnd = spanEnd[id];\n i0 = i;\n }\n if (spanStart[id] >= cut.end && spanStart[id] < bestStart) {\n bestStart = spanStart[id];\n i1 = i;\n }\n }\n }\n if (i0 < 0 || i1 < 0) {\n complete = false;\n const inside = i0 >= 0 || i1 >= 0 ? partialSide(i0, i1) : void 0;\n if (inside) {\n ;\n ({ lo, hi, backward, axisStart, stop } = inside);\n }\n } else {\n lo = Math.min(i0, i1) + 1;\n hi = Math.max(i0, i1);\n backward = i0 > i1;\n flankFrom = i0;\n flankTo = i1;\n const inward = backward ? -1 : 1;\n leftTrim = trimAbridged(i0 + inward, flankEnd - spanEnd[steps[i0]]);\n rightTrim = trimAbridged(\n i1 - inward,\n spanStart[steps[i1]] - flankStart\n );\n }\n }\n const contig = head.contig ?? panSNContig(pathOrigin(head.name).name);\n const axis = unplaced || length === 0 ? void 0 : axisStart !== void 0 ? { contig, start: axisStart, reversed: backward } : flankFrom < 0 ? { contig, start: stepStart[0], reversed: false } : flankFrom < flankTo ? {\n contig,\n start: stepEnd(flankFrom) + leftTrim,\n reversed: false\n } : {\n contig,\n start: stepStart[flankFrom] - leftTrim,\n reversed: true\n };\n let bp2 = 0;\n let offReferenceBp = 0;\n let gapBp = 0;\n let step = 0;\n let last = -1;\n let lastFlags = 0;\n let lastRef = Number.NaN;\n let cursor = Number.NaN;\n const placeOf = (id) => {\n const starts = revisits.get(id);\n if (!starts || Number.isNaN(cursor)) {\n return spanStart[id];\n }\n const len = lengthOf(id);\n let best = starts[0];\n let bestGap = Infinity;\n for (const start2 of starts) {\n const gap = Math.min(\n Math.abs(start2 - cursor),\n Math.abs(start2 + len - cursor)\n );\n if (gap < bestGap) {\n best = start2;\n bestGap = gap;\n }\n }\n return best;\n };\n const [, runBp, runRef, runFlags] = runs.values;\n for (let k = lo; k < hi; k++) {\n const index = backward ? hi - 1 - (k - lo) : k;\n const id = steps[index];\n const parts = partsAt.get(index);\n if (parts) {\n for (const part of backward ? [...parts].reverse() : parts) {\n runs.push(\n bp2,\n part.bp,\n Number.NaN,\n RUN_GAP | causeFlags(part.cause),\n chunkOf(part.chunk)\n );\n bp2 += part.bp;\n }\n last = runs.length - 1;\n lastFlags = RUN_GAP;\n lastRef = Number.NaN;\n gapBp += -id;\n step = 0;\n continue;\n }\n const len = lengthOf(id);\n const at = placeOf(id);\n const on = !Number.isNaN(at);\n visits?.push(id, bp2, len, on ? 1 : 0);\n const placed = last >= 0 && !Number.isNaN(lastRef);\n const forward = on && placed && step >= 0 && lastRef + (runBp[last] ?? 0) === at;\n const back = on && placed && step <= 0 && at + len === lastRef;\n if (!on && last >= 0 && !(lastFlags & (RUN_ON_REFERENCE | RUN_GAP))) {\n runBp[last] += len;\n } else if (forward || back) {\n runBp[last] += len;\n if (!forward) {\n lastRef = at;\n runRef[last] = at;\n lastFlags |= RUN_REVERSED;\n runFlags[last] = lastFlags;\n }\n step = forward ? 1 : -1;\n } else {\n lastFlags = on ? RUN_ON_REFERENCE : 0;\n lastRef = on ? at : Number.NaN;\n runs.push(bp2, len, lastRef, lastFlags, -1);\n last = runs.length - 1;\n step = 0;\n }\n bp2 += len;\n if (on) {\n cursor = step < 0 ? at : at + len;\n } else {\n offReferenceBp += len;\n }\n }\n runs.endRow();\n visits?.endRow();\n return {\n name: head.name,\n label: labelOf(head),\n sample: sampleOf(head),\n haplotype: head.haplotype,\n bp: bp2,\n offReferenceBp,\n gapBp,\n complete,\n stop,\n axis,\n ...abridgedSteps > 0 ? { abridgedSteps } : {},\n ...leftTrim + rightTrim > 0 ? { estimated: true } : {}\n };\n };\n const skipRowOf = (name, start2, end) => {\n const from2 = cut ? Math.max(start2, cut.start) : start2;\n const bp2 = (cut ? Math.min(end, cut.end) : end) - from2;\n runs.push(\n from2 - (cut ? cut.start : start2),\n bp2,\n Number.NaN,\n RUN_GAP | causeFlags(\"deleted\"),\n -1\n );\n runs.endRow();\n visits?.endRow();\n const head = { name, ...panSNFields(name) };\n return {\n name,\n label: labelOf(head),\n sample: sampleOf(head),\n haplotype: head.haplotype,\n bp: 0,\n offReferenceBp: 0,\n gapBp: bp2,\n complete: true,\n stop: void 0,\n axis: void 0\n };\n };\n const referenceRow = rowOf(referencePieces);\n const rows = [...walks.values()].map((pieces, i) => ({\n meta: rowOf(pieces),\n row: i + 1\n }));\n const drawn = new Set(walks.keys());\n skips?.names.forEach((name, k) => {\n const contig = pathOrigin(name).name;\n if (!drawn.has(contig)) {\n drawn.add(contig);\n rows.push({\n meta: skipRowOf(contig, skips.starts[k], skips.ends[k]),\n row: rows.length + 1\n });\n }\n });\n const metas = [referenceRow, ...rows.map((r) => r.meta)];\n if (new Set(metas.map((m) => m.label)).size < metas.length) {\n for (const meta of metas) {\n meta.label = panSNHaplotype(meta.name) ?? meta.label;\n }\n }\n rows.sort(\n (a, b) => Number(b.meta.complete) - Number(a.meta.complete) || b.meta.bp - a.meta.bp || a.meta.label.localeCompare(b.meta.label)\n );\n const order = [0, ...rows.map((r) => r.row)];\n const { offsets, columns } = runs.reorder(order, [\n float64,\n float64,\n float64,\n (n) => new Uint8Array(n),\n (n) => new Int32Array(n)\n ]);\n const [start, bp, referenceStart, flags, chunk] = columns;\n return {\n origin: cut ? cut.start : startOf(first) ?? 0,\n rows: [referenceRow, ...rows.map((r) => r.meta)],\n offsets,\n start,\n bp,\n referenceStart,\n flags,\n chunk,\n chunks,\n visits: visits && visitColumns(visits, order, names)\n };\n}\nfunction visitColumns(visits, order, names) {\n const { offsets, columns } = visits.reorder(order, [\n (n) => new Int32Array(n),\n float64,\n float64,\n (n) => new Uint8Array(n)\n ]);\n const [node, start, bp, onReference] = columns;\n return { offsets, node, start, bp, onReference, names };\n}\nfunction runAt(t, k) {\n const f = t.flags[k];\n const run = {\n start: t.start[k],\n bp: t.bp[k],\n onReference: (f & RUN_ON_REFERENCE) !== 0\n };\n if (f & RUN_GAP) {\n run.gap = true;\n const cause = GAP_CAUSES[f >> CAUSE_SHIFT & 7];\n if (cause) {\n run.cause = cause;\n }\n const chunk = t.chunks[t.chunk[k]];\n if (chunk) {\n run.chunk = chunk;\n }\n } else {\n run.referenceStart = Number.isNaN(t.referenceStart[k]) ? void 0 : t.referenceStart[k];\n }\n if (f & RUN_REVERSED) {\n run.reversed = true;\n }\n return run;\n}\nfunction visitsOf(v, row) {\n const out = [];\n for (let k = v.offsets[row]; k < v.offsets[row + 1]; k++) {\n out.push({\n node: v.names[v.node[k]],\n start: v.start[k],\n bp: v.bp[k],\n onReference: v.onReference[k] === 1\n });\n }\n return out;\n}\nfunction walkRowsOf(t, unit) {\n const rows = t.rows.map((meta, i) => {\n const runs = [];\n for (let k = t.offsets[i]; k < t.offsets[i + 1]; k++) {\n runs.push(runAt(t, k));\n }\n return {\n ...meta,\n runs,\n visits: t.visits && visitsOf(t.visits, i)\n };\n });\n return { origin: t.origin, unit, reference: rows[0], rows: rows.slice(1) };\n}\n\nexport {\n referenceWalkName,\n walkRowRuns,\n runAt,\n walkRowsOf\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["START_STOP_TAG", "END_STOP_TAG", "STOP_KINDS", "GAP_CAUSE_TEXT", "OUTSIDE_TEXT", "gapParts", "bp", "after", "before", "left", "right", "rest", "lead", "trail", "elsewhere", "s", "part", "stopAt", "table", "i", "ref", "stopOf", "kind", "trimmed", "chunk", "cut", "parseStopTag", "value", "kind", "fields", "bp", "trimmed", "chunk", "field", "at", "stopOf", "stopFields", "before", "after", "walkStopFields", "tags", "START_STOP_TAG", "END_STOP_TAG", "StopColumns", "stop", "STOP_KINDS", "chunk", "ref", "pLineName", "name", "start", "end", "tablePath", "w", "p", "walkName", "fields", "panSNFields", "steps", "abridged", "stopFields", "stopAt", "namesByList", "lists", "names", "listCount", "pathNames", "starts", "list", "i", "fill", "grouped", "listed", "_", "out", "k", "tableNodeIds", "n", "l", "traversals", "canonical", "claim", "node", "reversed", "stepCount", "s", "segment", "graphFromTables", "count", "declared", "drawnWalks", "ids", "nodes", "ref", "edges", "neighbours", "pairList", "a", "b", "near", "j", "addPair", "edgeLists", "adjacency", "adjacentNode", "adjacentList", "listOf", "nameIndex", "crossedList", "crossedName", "crossings", "lastWalk", "paths", "anchorPaths", "totalSteps", "visitPath", "visitStart", "visitReversed", "visitOrder", "blocks", "pathSamples", "edgeNameIndex", "edgeNames", "head", "pathName", "visitName", "named", "panSNSample", "edgeNamed", "visitSample", "first", "nodeIds", "pos", "prev", "at", "listNames", "edge", "walked", "PathVisits", "RUN_ON_REFERENCE", "RUN_REVERSED", "RUN_GAP", "GAP_CAUSES", "CAUSE_SHIFT", "causeFlags", "cause", "referenceOf", "names", "referencePath", "rankZero", "referenceWalkName", "graph", "p", "pathOrigin", "n", "graphPieces", "index", "lengths", "indexOf", "id", "i", "node", "heads", "from", "to", "steps", "path", "tablePieces", "tables", "visits", "w", "kept", "tablePath", "tableNodeIds", "h", "sampleOf", "panSNSample", "labelOf", "Columns", "width", "a", "b", "c", "d", "e", "v", "order", "make", "offsets", "row", "columns", "m", "out", "at", "k", "float64", "walkRowRuns", "source", "region", "o", "all", "reference", "declared", "lengthOf", "nameOf", "startOf", "byStart", "pieceIds", "_", "referencePieces", "first", "others", "skips", "walks", "groupBy", "spanStart", "spanEnd", "revisits", "flankEnd", "flankStart", "cut", "piece", "pos", "s", "stop", "len", "starts", "flanked", "runs", "chunks", "chunkIndex", "chunkOf", "chunk2", "key", "stepStart", "rowOf", "pieces", "head", "ordered", "count", "abridgedSteps", "length", "unplaced", "end", "previous", "partsAt", "owed", "start2", "jump", "covered", "gap", "gapParts", "abridged", "stop2", "bp3", "onReference", "stepEnd", "partialSide", "i0", "i1", "flank", "near", "forward", "after", "last2", "contigEnds", "lo", "hi", "backward", "complete", "flankFrom", "flankTo", "axisStart", "trimAbridged", "inner", "trimmed", "leftTrim", "rightTrim", "bestEnd", "bestStart", "inside", "inward", "contig", "panSNContig", "axis", "bp2", "offReferenceBp", "gapBp", "step", "last", "lastFlags", "lastRef", "cursor", "placeOf", "best", "bestGap", "runBp", "runRef", "runFlags", "parts", "part", "on", "placed", "back", "skipRowOf", "name", "from2", "panSNFields", "referenceRow", "rows", "drawn", "metas", "r", "meta", "panSNHaplotype", "start", "bp", "referenceStart", "flags", "chunk", "visitColumns", "runAt", "f", "run", "visitsOf", "walkRowsOf", "unit"]
7
+ }
@@ -0,0 +1,3 @@
1
+ import{b as rn}from"./chunk-ROZPEXN4.js";import{d as nn,g as Ze,h as ge}from"./chunk-VKZALU57.js";import{a as sn,b as an}from"./chunk-OGQ6OQDN.js";import{f as on}from"./chunk-3WG3GF2A.js";var yA=JBrowseExports["@jbrowse/core/data_adapters/BaseAdapter"],gn=t=>yA!=null&&t in Object(yA)?yA[t]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+t+"' from '@jbrowse/core/data_adapters/BaseAdapter' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:t});var Ps=gn("BaseFeatureDataAdapter");var cn=gn("cachedSetup");var zs=yA&&yA.__esModule?yA.default:yA;var aA=class extends Error{constructor(e,A,n,r,i){super(e),this.regionTooLarge=!0,this.name="NodeLimitError",this.limit=A,this.windowBp=n,this.fitsBp=r,this.zoomHelps=i===void 0||i.zoomHelps===!0,i&&(this.bytes=i.bytes)}},GA="#";function XA(t){return t.split(GA)[0]}function Pe(t){let e=t.split(GA);return e.length>=3?e.slice(2).join(GA):e.length===2?e[1]:t}function hA(t){let e=t.split(GA);return e.length>=3?`${e[0]}${GA}${e[1]}`:void 0}function UA(t,e){return e!==void 0&&(t===e||t.startsWith(e+GA))}var In=t=>Number.parseFloat(t.toPrecision(3));function NA(t){let e=In(t/1e6);return e>=1?`${e.toLocaleString("en-US")}Mbp`:t>=1e3?`${In(t/1e3).toLocaleString("en-US")}Kbp`:`${Math.floor(t)}bp`}var P=t=>(t-(t&1))/2,IA=t=>t&1?t-1:t+1;function YA(t,e,A){if(t===".")return A;let n=0,r=!1;for(let i=0;i<=t.length;i++){let o=i<t.length?t.charCodeAt(i):44;if(o===44){let s=r?-n:n,c=s&1;e.id+=(s-c)/2,A.push(e.id*2+c),n=0,r=!1}else o===45?r=!0:n=n*10+(o-48)}return A}function HA(t){return t==="."?[]:t.split(",").map(Number)}function Cn(t,e){return t>IA(e)?[IA(e),IA(t)]:[t,e]}function ze(t,e){let A=t.lastIndexOf(":");return{refName:t[3]==="Z"?t.slice(5,A):e,start:+t.slice(A+1)}}function Xe(t,e,A){let n={};for(let r=e;r<t.length;r++){let i=t[r],o=i.slice(0,2);if(o==="pv")n.prev=ze(i,A);else if(o==="nx")n.next=ze(i,A);else if(o==="pg"||o==="ng"){let s=o==="pg"?"prevRecord":"nextRecord";n[s]={...n[s],bp:+i.slice(5)}}else if(o==="pr"||o==="nr"){let s=o==="pr"?"prevRecord":"nextRecord";n[s]={bp:0,...n[s],chunk:ze(i,A)}}}return n}var ce=class{constructor(){this.handles=[],this.before=[0],this.occurrences=new Map}add(e,A){for(let n=0;n<e.length;n++){let r=e[n],i=this.handles.length;this.handles.push(r),this.before.push(this.before[i]+A[n]);let o=P(r),s=this.occurrences.get(o);s?s.push(i):this.occurrences.set(o,[i])}}bp(e){return this.before[e]}first(e){var A;return(A=this.occurrences.get(P(e)))===null||A===void 0?void 0:A[0]}nearest(e,A){let n=this.occurrences.get(P(e));if(!n)return;let r=0,i=n.length;for(;r<i;){let c=r+i>>1;n[c]<=A?r=c+1:i=c}let o=n[r-1],s=n[r];return o===void 0||s===void 0?o??s:s-A<=A-o?s:o}reach(e,A,n){var r;let i=this.handles[e]===A,o;for(let s of(r=this.occurrences.get(P(n)))!==null&&r!==void 0?r:[])i&&s>=e&&this.handles[s]===n?(o===void 0||s<o)&&(o=s):!i&&s<=e&&IA(this.handles[s])===n&&(o===void 0||s>o)&&(o=s);return o}handleAt(e,A){return A?this.handles[e]:IA(this.handles[e])}},oA=class extends Error{},je=(t,e)=>e?t.exit===-1?-1:IA(t.exit):t.entry,Qn=(t,e)=>e?t.entry===-1?-1:IA(t.entry):t.exit,Ie=(t,e,A)=>e?IA(t.interior[t.interior.length-1-A]):t.interior[A];function Li(t){let e=[];if(t!=="."){let A=0,n=0,r=!1,i=0,o=!1;for(let s=0;s<=t.length;s++){let c=s<t.length?t.charCodeAt(s):44;if(c===44){let a=r?-n:n,g=o?i:a,l=g&1;A+=(g-l)/2,e.push(A,l,o?a:0),n=0,r=!1,o=!1}else c===58?(i=r?-n:n,n=0,r=!1,o=!0):c===45?r=!0:n=n*10+(c-48)}}return e}function ln(t,e,A,n,r,i){let o=n.indexOf(":"),s=A+ +(o<0?n:n.slice(0,o)),c=o>=0,a=c?+n.slice(o+1):0,g=E=>{let d=e[E];if(!d)throw new oA(`route ${E} is not in the chunk`);return d},l=0;if(r.length>0&&je(g(r[0]),r[1]===1)===-1){if(!i.route(r[0],r[1]===1))return;l=3}let Q=A,I=t.first(Q);if(I===void 0)throw new oA("a walk row starts off its chunk");i.step(Q);let B=(E,d)=>{let p=t.handles[I]===Q,u=c?I+(p?d:-d):t.reach(I,Q,E);if(u===void 0||u<0||u>=t.handles.length)throw new oA("a walk row runs off its chunk");u!==I&&i.stretch(I,u,p),I=u,Q=t.handleAt(u,p)};for(;l<r.length;l+=3){let E=r[l],d=r[l+1]===1,p=g(E),u=je(p,d);if(u===-1)throw new oA("an open route after the first choice");if(B(u,r[l+2]),!i.route(E,d))return;let m=Qn(p,d);if(m===-1)return;if(Q=m,I=t.nearest(Q,I),I===void 0)throw new oA("a route lands off its chunk");i.step(Q)}if(B(s,a),Q!==s)throw new oA("a walk row misses its last handle")}function Ji(t,e,A,n,r){let i=new Int32Array(r),o=new Uint8Array(r),s=0,c=a=>{if(s>=r)throw new oA("a walk row decodes to more steps than it states");i[s]=P(a),o[s++]=a&1};if(ln(t,e,+A[9],A[10],n,{step:c,stretch(a,g,l){if(l)for(let Q=a+1;Q<=g;Q++)c(t.handles[Q]);else for(let Q=a-1;Q>=g;Q--)c(IA(t.handles[Q]))},route(a,g){let l=e[a];for(let Q=0;Q<l.interior.length;Q++)c(Ie(l,g,Q));return!0}}),s!==r)throw new oA(`a walk row decodes to ${s} steps, not ${r}`);return{ids:i,rev:o}}function Bn(t,e,A){let n=new Set(e.map(o=>o.name)),r=new Set,i=[];for(let o of t){let s=`${o.name} ${o.fragStart} ${o.piece}`;!n.has(o.name)&&!r.has(s)&&o.refStart<A.end&&o.refEnd>A.start&&(r.add(s),i.push(o))}return i.sort((o,s)=>o.name<s.name?-1:o.name>s.name?1:o.fragStart-s.fragStart||o.piece-s.piece)}function fn(t,e,A,n,r){let i=t.slice(e).find(s=>s.startsWith("SQ:Z:"));if(i===void 0)return;let o=5;for(let s=0;s<A.length;s++){let c=n[s];r.set(A[s],i.slice(o,o+c)),o+=c}}var Gi=16384;function Ui(t){let e=t[0],A=[+t[10],+t[11]],n=HA(t[7]);for(let r=1;r<n.length;r++)n[r]+=n[r-1];return{chunkStart:+t[1],name:t[4],fragStart:+t[5],hapOffset:+t[6],piece:n[0],n:A.length,steps:{ids:Int32Array.from(A,P),rev:Uint8Array.from(A,r=>r&1)},...Xe(t,13,e),abridged:{pieces:n,steps:+t[8],bp:+t[9],detail:{refName:`${e}~${t[1]}`,start:+t[12]*Gi}}}}var En=t=>t.filter(e=>e[3]==="ref").sort((e,A)=>+e[6]-+A[6]);function dn(t){let e=new ce,A=new Map;for(let n of En(t)){let r=YA(n[9],{id:0},[]),i=HA(n[10]);e.add(r,i);for(let o=0;o<r.length;o++)A.set(P(r[o]),i[o])}return{path:e,lengths:A}}function We(t,e,A=!1,n){var r,i,o,s;let c=(r=n?.path)!==null&&r!==void 0?r:new ce,a=new Map,g=[],l={sequences:new Map,rows:[],nodes:new Map,ends:[],chunk:{path:c,routes:g,walks:[],lengths:a,refLengths:n?.lengths},skips:[]},Q=E=>l.nodes.has(E)||n?.lengths.has(E)===!0,I={id:0};for(let E of n?[]:En(t)){let d=E[0],p=YA(E[9],{id:0},[]),u=HA(E[10]),m=+E[6];c.add(p,u),A&&fn(E,11,p.map(P),u,l.sequences);let C=m;for(let D=0;D<p.length;D++){let x=P(p[D]),f=u[D];a.set(x,f),l.nodes.has(x)||l.nodes.set(x,{refName:E[4],start:C,end:C+f,rank:0}),C+=f}l.ends.push({name:E[4],fragStart:+E[5],piece:+E[7],first:p[0],last:p.at(-1)}),(e===void 0||e(E[4]))&&l.rows.push({chunkStart:+E[1],name:E[4],fragStart:+E[5],hapOffset:m,piece:+E[7],n:p.length,steps:{ids:Int32Array.from(p,P),rev:Uint8Array.from(p,D=>D&1)},...Xe(E,11,d)})}for(let E of t)if(E[3]==="nodes"){let d=HA(E[4]),p=HA(E[5]),u=0;for(let m=0;m<d.length;m++)u+=d[m],d[m]=u,a.set(u,p[m]);A&&fn(E,6,d,p,l.sequences)}else if(E[3]==="route"){let d=YA(E[4],I,[]),p=YA(E[5],I,[]),u=YA(E[6],I,[]);g.push({entry:(i=d[0])!==null&&i!==void 0?i:-1,interior:p,exit:(o=u[0])!==null&&o!==void 0?o:-1})}let B=E=>{let d=g[E];if(!d)throw new oA(`route ${E} is not in the chunk`);return d};for(let E of t){if(E[3]==="skip"){(e===void 0||e(E[4]))&&l.skips.push({name:E[4],fragStart:+E[5],piece:+E[6],refStart:+E[9],refEnd:+E[10]});continue}if(E[3]==="abridged"){let f=E[4];(e===void 0||e(f))&&l.rows.push(Ui(E));continue}if(E[3]!=="walk")continue;let d=Li(E[11]);l.chunk.walks.push({cols:E,choices:d});let p=E[4],u=+E[9],m=E[10],C=m.indexOf(":"),D=u,x=u+ +(C<0?m:m.slice(0,C));if(d.length>0){let f=B(d[0]),w=d[1]===1;je(f,w)===-1&&(D=Ie(f,w,0));let b=d.length-3,y=B(d[b]),R=d[b+1]===1;Qn(y,R)===-1&&(x=Ie(y,R,y.interior.length-1))}if(l.ends.push({name:p,fragStart:+E[5],piece:+E[7],first:D,last:x}),e===void 0||e(p)){let f=+E[8],w=0;for(let b=0;b<d.length;b+=3){w+=B(d[b]).interior.length;for(let y of B(d[b]).interior){let R=P(y);if(!Q(R)){let U=(s=a.get(R))!==null&&s!==void 0?s:0;l.nodes.set(R,{refName:p,start:0,end:U,rank:1})}}}l.rows.push({chunkStart:+E[1],name:p,fragStart:+E[5],hapOffset:+E[6],piece:+E[7],n:f,interior:w,steps:Ji(c,g,E,d,f),...Xe(E,12,E[0])})}}return l}function hn(t,e,A,n){let r=new Set;for(let s of e)t.some(({path:c})=>c.occurrences.has(s))||r.add(s);let i=(s,c)=>{let[a,g]=Cn(s,c);n(a,g)},o=new Map;for(let{path:s,routes:c,walks:a,lengths:g,refLengths:l}of t){let Q=s.handles;for(let u=1;u<Q.length;u++)e.has(P(Q[u-1]))&&e.has(P(Q[u]))&&i(Q[u-1],Q[u]);let I=new Uint8Array(c.length);for(let u=0;u<c.length;u++){let{entry:m,interior:C,exit:D}=c[u],x=!1,f=m;for(let w of C){let b=e.has(P(w));x||(x=r.has(P(w))),b&&f!==-1&&e.has(P(f))&&i(f,w),f=w}f!==-1&&D!==-1&&e.has(P(f))&&e.has(P(D))&&i(f,D),I[u]=x?1:0}let B=u=>{var m,C;return(C=(m=g.get(P(u)))!==null&&m!==void 0?m:l?.get(P(u)))!==null&&C!==void 0?C:0},E=new Float64Array(c.length).fill(-1),d=u=>(E[u]<0&&(E[u]=c[u].interior.reduce((m,C)=>m+B(C),0)),E[u]),p=new Uint8Array(c.length);for(let{cols:u,choices:m}of a){let C=0;for(let f=0;f<m.length;f+=3){let w=m[f];I[w]&&!p[w]&&C++}if(C===0)continue;let D=u[4],x=+u[6];ln(s,c,+u[9],u[10],m,{step(f){x+=B(f)},stretch(f,w,b){x+=b?s.bp(w+1)-s.bp(f+1):s.bp(f)-s.bp(w)},route(f,w){if(!I[f]||p[f])return x+=d(f),!0;p[f]=1;let b=c[f];for(let y=0;y<b.interior.length;y++){let R=Ie(b,w,y),U=P(R),h=B(R);if(r.has(U)){let k=o.get(U);(!k||D<k.refName||D===k.refName&&x<k.start)&&o.set(U,{refName:D,start:x,end:x+h,rank:1})}x+=h}return C--,C>0}})}}for(let[s,c]of o)A(s,c)}function Yi(t){let e=[];for(let A of t){if(A[3]!=="ref")continue;let n=YA(A[9],{id:0},[]),r=HA(A[10]),i=+A[6];for(let o=0;o<n.length;o++){let s=r[o];e.push({id:P(n[o]),refName:A[4],start:i,end:i+s,rank:0}),i+=s}}return e}function un(t){let e=new Map;for(let n of t){let r=`${n.name} ${n.fragStart}`,i=e.get(r);i||(i=new Map,e.set(r,i)),i.set(n.piece,n)}let A=[];for(let n of e.values())for(let[r,i]of n){let o=n.get(r+1);o&&A.push(Cn(i.last,o.first))}return A}var pn=["elsewhere","break","end"];function Ve(t,e){let A=new RegExp(`(?:^|\\t)${e}:i:(\\d+)`).exec(t);return A?+A[1]:void 0}function $e(t){var e,A,n;let r={references:[],haplotypes:[],long:[]};for(let i of t){let[o,s="",c="",a=""]=i.split(" ");o==="#reference"?r.references.push(s):o==="#haplotype"?r.haplotypes.push(s):o==="#long"?r.long.push({refName:s,start:+c,end:+a}):((e=r.format)!==null&&e!==void 0||(r.format=Ve(i,"format")),(A=r.chunk)!==null&&A!==void 0||(r.chunk=Ve(i,"chunk")),(n=r.maxNode)!==null&&n!==void 0||(r.maxNode=Ve(i,"maxnode")))}return r}function yn(t,e){return t===void 0?1:Math.max(1,Math.ceil(t/e))}function fe(t,e,A=1){return Math.max(0,(Math.floor(t/e)-A)*e)}function Ce(t,e,A,n){let{chunk:r,long:i}=t;if(i.length===0)return fe(A,r,yn(t.maxNode,r));let o=fe(A,r);for(let s of i)s.refName===e&&s.start<n&&s.end>A&&(o=Math.min(o,fe(s.start,r)));return o}function Nn(t,e){return t===void 0||t.length===0?void 0:A=>UA(A,e)||t.some(n=>UA(A,n))}function At(t,e){var A;return Nn(t,(A=hA(e))!==null&&A!==void 0?A:e)}function et(t){let e=new Map,A=[];for(let n of t){if(n.abridged){A.push(wn([n]));continue}let r=`${n.name} ${n.fragStart}`,i=e.get(r);i?i.push(n):e.set(r,[n])}for(let n of e.values()){n.sort((i,o)=>i.piece-o.piece);let r=0;for(let i=1;i<=n.length;i++)(i===n.length||n[i].piece!==n[i-1].piece+1)&&(A.push(wn(n.slice(r,i))),r=i)}return A}function wn(t){let e=t.reduce((s,c)=>s+c.n,0),A=new Int32Array(e),n=new Uint8Array(e),r=0;for(let s of t)A.set(s.steps.ids,r),n.set(s.steps.rev,r),r+=s.n;let i=t[0],o=t.at(-1);return{name:i.name,fragStart:i.fragStart,hapOffset:i.hapOffset,firstPiece:i.piece,ids:A,rev:n,prev:i.prev,next:o.next,prevRecord:i.prevRecord,nextRecord:o.nextRecord,...i.abridged?{abridged:i.abridged}:{}}}function tt(t,e,A,{contained:n=!1,context:r=0}={}){let i=h=>{var k;return((k=e.get(h))===null||k===void 0?void 0:k.onWindow)===!0},o=h=>{let k=e.get(h);return k?.rank===0?k:void 0},s=new Map,c=h=>{h&&s.set(`${h.refName}:${h.start}`,h)},a=(h,k,F)=>{let{ids:L}=h,N=k+F;for(;N>=0&&N<L.length&&o(L[N])===void 0;)N+=F;if(N<0||N>=L.length)return c(F<0?h.prev:h.next),N-F;let v=o(L[k]),_=o(L[N]);return _.refName!==A?N-F:N===k+F&&(_.start===v.end||_.end===v.start)?k:N},g=1/0,l=-1/0,Q=[],I=h=>{let k=e.get(h);return k===void 0?0:k.end-k.start},B=h=>{let{ids:k}=h,F=0,L=-1,N=-1;for(let v=0;v<=k.length;v++){let _=v<k.length?e.get(k[v]):void 0;if(v===k.length||_?.rank===0&&!_.onWindow){if(L>=0){for(let G=0;L>F&&G<r;)G+=I(k[--L]);for(let G=0;N<v-1&&G<r;)G+=I(k[++N]);L===0&&c(h.prev),N===k.length-1&&c(h.next),Q.push({run:h,first:L,last:N})}F=v+1,L=-1}else _?.onWindow&&(L<0&&(L=v),N=v)}},E=h=>{let{ids:k}=h,F=-1,L=-1;for(let N=0;N<k.length;N++)i(k[N])&&(F<0&&(F=N),L=N);if(F>=0){if(h.name!==A){F=a(h,F,-1),L=a(h,L,1);for(let N of[F,L]){let v=o(k[N]);v&&(g=Math.min(g,v.start),l=Math.max(l,v.end))}}Q.push({run:h,first:F,last:L})}},d=1/0,p=-1/0;for(let h of e.values())h.onWindow&&(d=Math.min(d,h.start),p=Math.max(p,h.end));let u=h=>{let k=o(h.ids[0]),F=o(h.ids.at(-1));k?.refName!==A||F?.refName!==A||Math.max(k.end,F.end)>d&&Math.min(k.start,F.start)<p&&Q.push({run:h,first:0,last:h.ids.length-1})};for(let h of t)h.abridged?u(h):n?B(h):E(h);let m=h=>{let k=o(h);return i(h)||k?.refName===A&&k.end>g&&k.start<l},C=new Set;for(let[h,k]of e)k.onWindow&&C.add(h);for(let h of Q){let{ids:k}=h.run;if(h.run.name===A){for(;h.first>0&&m(k[h.first-1]);)h.first--;for(;h.last<k.length-1&&m(k[h.last+1]);)h.last++}for(let F=h.first;F<=h.last;F++)C.add(k[F])}let D=new Set(Q.filter(h=>h.run.abridged).map(h=>h.run)),x=(h,k,F)=>{let L=0;for(let N=k;N<F;N++)L+=I(h[N]);return L},f=new Map;for(let h of t){let k=`${h.name} ${h.fragStart}`,F=f.get(k);F?F.push(h):f.set(k,[h])}let w=new Map;for(let h of f.values())h.sort((k,F)=>k.firstPiece-F.firstPiece),h.forEach((k,F)=>{w.set(k,[h[F-1],h[F+1]])});let b=new Map,y=h=>{var k,F;let L=b.get(h);return L===void 0&&(L=h.hapOffset+((F=(k=h.abridged)===null||k===void 0?void 0:k.bp)!==null&&F!==void 0?F:x(h.ids,0,h.ids.length)),b.set(h,L)),L},R=(h,k,F)=>{var L;let N=F>0?{trimmed:F}:{},v=k?h.next:h.prev;if(v){let G=(L=w.get(h))===null||L===void 0?void 0:L[k?1:0];return G?{kind:"elsewhere",chunk:v,bp:k?G.hapOffset-y(h):h.hapOffset-y(G),...N}:{kind:"elsewhere",chunk:v,...N}}let _=k?h.nextRecord:h.prevRecord;return _?{kind:"break",..._,...N}:{kind:"end",...N}},U=[];for(let{run:h,first:k,last:F}of Q){let{ids:L,rev:N}=h;if(D.has(h)){U.push({name:h.name,fragStart:h.fragStart,hapStart:h.hapOffset,hapEnd:y(h),ids:L,rev:N,before:R(h,!1,0),after:R(h,!0,0),abridged:h.abridged});continue}let v=k,_=F;for(;v>0&&C.has(L[v-1]);)v--;for(;_<L.length-1&&C.has(L[_+1]);)_++;let G=h.hapOffset+x(L,0,v),H=G+x(L,v,_+1);U.push({name:h.name,fragStart:h.fragStart,hapStart:G,hapEnd:H,ids:L.subarray(v,_+1),rev:N.subarray(v,_+1),before:R(h,!1,G-h.hapOffset),after:R(h,!0,y(h)-H)})}return{kept:C,fragments:U,open:[...s.values()]}}function nt(t,e,A,n){var r;for(let i of t.nodes.keys())!((r=e.get(i))===null||r===void 0)&&r.onWindow&&n.add(i);for(let{steps:i}of t.rows){let{ids:o}=i,s=-1;for(let c=0;c<o.length;c++){let a=e.get(o[c]);if(a?.onWindow){for(let g=s+1;s>=0&&g<c;g++)n.add(o[g]);s=c}else A&&a?.rank===0&&(s=-1)}}}function mn(t){let e=[],A=new Map,n={kinds:new Uint8Array(t.length),kindNames:[...pn],bp:new Float64Array(t.length).fill(Number.NaN),trimmed:new Float64Array(t.length),chunkRefs:new Int32Array(t.length).fill(-1),chunkStarts:new Float64Array(t.length).fill(Number.NaN),chunkRefNames:e};return t.forEach((r,i)=>{var o;if(n.kinds[i]=pn.indexOf(r.kind),n.trimmed[i]=(o=r.trimmed)!==null&&o!==void 0?o:0,"bp"in r&&r.bp!==void 0&&(n.bp[i]=r.bp),"chunk"in r&&r.chunk){let{refName:s,start:c}=r.chunk,a=A.get(s);a===void 0&&(a=e.length,A.set(s,a),e.push(s)),n.chunkRefs[i]=a,n.chunkStarts[i]=c}}),n}var Hi=(t,e)=>t.rank===0&&(e.rank!==0||t.refName<e.refName||t.refName===e.refName&&t.start<e.start),jA=class{constructor(e){this.nodes=new Map,this.sequences=new Map,this.links=[],this.chunks=[],this.window=e}placeNode(e,A){let n=this.nodes.get(e);if(n&&!Hi(A,n))return;let{window:r}=this;this.nodes.set(e,{...A,onWindow:A.rank===0&&A.refName===r.refName&&A.end>r.start-r.context&&A.start<r.end+r.context})}addLinkEnds(e,A){this.links.push(e,A)}addChunk(e){this.chunks.push(e)}addSequences(e){if(this.window.sequences)for(let[A,n]of e)this.sequences.set(A,n)}tables(e,A,n=[]){this.chunks.length>0&&hn(this.chunks,e,(f,w)=>{let b=this.nodes.get(f);b&&this.nodes.set(f,{...b,...w})},(f,w)=>{this.links.push(f,w)});let r=[];for(let f of e){let w=this.nodes.get(f);w&&r.push({...w,id:f})}r.sort((f,w)=>f.refName<w.refName?-1:f.refName>w.refName?1:f.start-w.start||f.id-w.id);let i=new Map,o=[],s=[],c=new Map,a=new Int32Array(r.length),g=new Int32Array(r.length),l=new Float64Array(r.length),Q=new Int32Array(r.length);r.forEach(({id:f,refName:w,start:b,end:y,rank:R},U)=>{i.set(f,U),o.push(String(f));let h=c.get(w);h===void 0&&(h=s.length,c.set(w,h),s.push(w)),a[U]=y-b,g[U]=h,l[U]=b,Q[U]=R});let I=f=>{let w=i.get(f);return w===void 0&&(w=o.length,i.set(f,w),o.push(String(f))),w},B=new Map;for(let f=0;f<this.links.length;f+=2){let w=this.links[f],b=this.links[f+1],y=Math.floor(w/2),R=Math.floor(b/2);e.has(y)&&e.has(R)&&B.set(`${y} ${w%2?"-":"+"} ${R} ${b%2?"-":"+"}`,f)}let E=[...B.keys()].sort(),d=new Int32Array(E.length),p=new Int32Array(E.length),u=new Uint8Array(E.length);E.forEach((f,w)=>{let b=B.get(f),y=this.links[b],R=this.links[b+1];d[w]=I(Math.floor(y/2)),p[w]=I(Math.floor(R/2)),u[w]=y%2|R%2<<1});let m=this.referenceFirst(A),C=new Int32Array(m.length+1);m.forEach(({ids:f},w)=>{C[w+1]=C[w]+f.length});let D=new Int32Array(C[m.length]),x=new Uint8Array(D.length);return m.forEach(({ids:f,rev:w},b)=>{let y=C[b];for(let R=0;R<f.length;R++)D[y+R]=I(f[R]);x.set(w,y)}),{nodes:{names:o,lengths:a,refs:g,starts:l,ranks:Q,refNames:s},links:{from:d,to:p,strands:u},walks:{names:m.map(f=>f.name),starts:Float64Array.from(m,f=>f.hapStart),ends:Float64Array.from(m,f=>f.hapEnd),offsets:C,steps:D,reversed:x,before:mn(m.map(f=>f.before)),after:mn(m.map(f=>f.after)),abridgedSteps:Float64Array.from(m,f=>{var w,b;return(b=(w=f.abridged)===null||w===void 0?void 0:w.steps)!==null&&b!==void 0?b:NaN}),abridgedBp:Float64Array.from(m,f=>{var w,b;return(b=(w=f.abridged)===null||w===void 0?void 0:w.bp)!==null&&b!==void 0?b:NaN})},skips:{names:n.map(f=>f.name),starts:Float64Array.from(n,f=>f.refStart),ends:Float64Array.from(n,f=>f.refEnd)}}}referenceFirst(e){let{refName:A}=this.window;return[...e].sort((n,r)=>+(r.name===A)-+(n.name===A)||(n.name<r.name?-1:n.name>r.name?1:n.hapStart-r.hapStart))}},rt={steps:"the step budget",bytes:"a byte budget of"},Ki=4,Ti=t=>{var e;let A=(e=t.interior)!==null&&e!==void 0?e:0;return A+(t.n-A)/Ki};function it(t,e,A,n,r,i,o=rt){var s;let c=0,a=new Map,g=new Set;for(let d of t){let p=Ti(d);c+=p,a.set(d.chunkStart,((s=a.get(d.chunkStart))!==null&&s!==void 0?s:0)+p),g.add(d.name)}let l=e*A;if(c<=l)return;let Q=n.end-n.start,I=0,B=0;for(let d of[...a.keys()].sort((p,u)=>p-u)){if(I+=a.get(d),I>l)break;B=Math.max(B,d+r-n.start)}let E=!i&&g.size>2&&2*c/g.size<=l;return new aA(B>0?`Zoom in to about ${NA(B)}${E?", or choose fewer haplotypes,":""} to see the graph`:`Too many haplotype steps here to draw ${i?"these haplotypes":"every haplotype"} (${Math.round(I).toLocaleString()} steps read, a step along the reference counting a quarter, over ${A} \xD7 ${o.steps} of ${e.toLocaleString()}); choose fewer haplotypes`,l,Q,Math.max(B,1))}function ot(t,e,A,n){let r=t.reduce((i,o)=>i+o.ids.length,0);return bn(r,e,A,n)}function Qe(t,e,A,n,r=A.end){return bn(t,e,A,n,r)}function bn(t,e,A,n,r=A.end){if(t<=e)return;let i=A.end-A.start,o=Math.min(r,A.end)-A.start,s=Math.max(1,Math.floor(o*e/t));return new aA(`Zoom in to about ${NA(s)}${n?"":", or choose fewer haplotypes,"} to see the graph`,e,i,s)}async function st(t,e,A,n,r=rt){let i=await t(A.end);if(i<=e)return;let o=0,s;for(let a=Math.floor(A.start/n)*n;a<A.end;a+=n){let g=await t(a+1);if(s??(s=g),g>e)break;o=a+n-A.start}let c=A.end-A.start;return o>0?new aA(`Zoom in to about ${NA(o)} to see the graph`,e,c,o,{bytes:i,zoomHelps:!0}):new aA(`Too much graph here to fetch, even zoomed in (${kn(s??i)} against ${r.bytes} ${kn(e)}). A satellite or rDNA array usually causes this: the graph folds the repeat into a few nodes that each haplotype loops through many times`,e,c,1,{bytes:i})}var kn=t=>`${(t/1e6).toFixed(1)} MB`;function at(t,e){return`${t} ${e}`}function WA(t){let e=new Map;for(let A of t){e.set(A,A);let n=XA(A);if(n!==A){let r=Pe(A);e.set(at(n,r),A);let i=hA(A);i!==void 0&&e.set(at(i,r),A)}}return e}function VA(t,e,A){var n;return(n=t.get(at(e,A)))!==null&&n!==void 0?n:t.get(A)}var Oi=8,qi=3,Zi=4,Pi=1e3,zi=16,Xi={stepBudget:4e6,byteBudget:8e6},le=class extends Error{constructor(){super(...arguments),this.name="WalkFormatError"}};function fA(t,e,A){if(!Number.isFinite(e)||!Number.isFinite(A))throw new Error(`${t}:${e}-${A} is not a finite range to query the graph's index for`)}function xn(t){return t.filter(e=>!e.includes("~"))}async function ji(t,e,A,n,r){let i=[],o=()=>{if(i.length<t.length&&!A.aborted){let s=n(t[i.length]);i.push(s),s.then(o,()=>{})}};for(let s=0;s<e;s++)o();for(let s=0;s<t.length;s++)A.throwIfAborted(),r(t[s],await i[s])}function Dn(t,e){return e?(e.throwIfAborted(),new Promise((A,n)=>{let r=()=>{n(e.reason instanceof Error?e.reason:new Error(String(e.reason)))};e.addEventListener("abort",r,{once:!0}),t.then(A,n).finally(()=>{e.removeEventListener("abort",r)})})):t}var gt=class{constructor(e){this.walks=e}header(e={}){if(!this.headerRead){let A=this.walks.getHeaderLines().then(n=>{var r,i;let o=$e(n);if(o.format!==5)throw new le(`This walk file is format ${(r=o.format)!==null&&r!==void 0?r:1}; @jbrowse/graph-walks reads format 5, so rebuild it with gfa-to-tabix 1.4 or later`);return{...o,chunk:(i=o.chunk)!==null&&i!==void 0?i:65536}});A.catch(()=>{this.headerRead===A&&(this.headerRead=void 0)}),this.headerRead=A}return Dn(this.headerRead,e.signal)}async referenceSequences(e={}){return xn(await this.walks.getReferenceSequenceNames(e))}async sequenceFor(e,A,n={}){if(!this.lookupRead){let i=this.walks.getReferenceSequenceNames().then(o=>WA(xn(o)));i.catch(()=>{this.lookupRead===i&&(this.lookupRead=void 0)}),this.lookupRead=i}let r=await Dn(this.lookupRead,n.signal);return VA(r,e,A)}async queryStart(e,A={}){let{refName:n="",end:r=e+1}=A;return Ce(await this.header(A),n,e,r)}async cut(e,A,n={}){var r,i;let{signal:o,keep:s,context:c=Pi,stepBudget:a=1/0,byteBudget:g=1/0,links:l=!0,contained:Q=!1,nodeLimit:I=1/0,expand:B}=n,E=await this.header({signal:o}),{chunk:d}=E,p=Ce(E,e,A.start,A.end),u=(r=this.walks.bytesForRegions)===null||r===void 0?void 0:r.bind(this.walks),m=Number.isFinite(g)&&u!==void 0,C=async S=>m?u(S.map(J=>({refName:e,...J})),{signal:o}):0,D=m?await st(async S=>(fA(e,p,S),C([{start:p,end:S}])),g,A,d,n.budgetNames):void 0;if(D)throw D;let x=new AbortController,f=()=>{x.abort(o?.reason)};o?.throwIfAborted(),o?.addEventListener("abort",f,{once:!0});let w=[],b,y=new jA({refName:e,start:A.start,end:A.end,context:c,sequences:n.sequences}),R=new Set,U=[],h=[],k=new Set,F=s!==void 0,L=[],N=(S,J)=>{if(R.has(S))return;R.add(S);let M=We(J,s,n.sequences);for(let K of M.skips)h.push(K);let Y;for(let K of M.rows)K.abridged&&B?.(K.name)?(Y??(Y=dn(J)),L.push({ref:Y,row:K})):w.push(K);G(M,S)},v=async({row:S})=>{let{refName:J,start:M}=S.abridged.detail;fA(J,M,M+1);let Y=[];return await this.walks.getLines(J,M,M+1,{signal:x.signal,lineCallback:K=>{let j=K.split(" ");j[0]=e,j[1]=String(S.chunkStart),Y.push(j)}}),Y},_=({ref:S,row:J},M)=>{let Y=We(M,K=>K===J.name,n.sequences,S);for(let K of Y.rows)K.name===J.name&&w.push(K);G(Y,J.chunkStart)},G=(S,J)=>{for(let[M,Y]of S.nodes)y.placeNode(M,Y);y.addSequences(S.sequences),y.addChunk(S.chunk);for(let M of S.ends)U.push(M);if(Number.isFinite(I)){nt(S,y.nodes,Q,k),k.size>I&&(k.clear(),nt({nodes:y.nodes,rows:w},y.nodes,Q,k));let M=Qe(k.size,I,A,F,J+d);if(M)throw M}},H=async(S,J)=>{fA(e,S,J);let M,Y=[];await this.walks.getLines(e,S,J,{signal:x.signal,lineCallback:j=>{let W=j.split(" "),eA=+W[1];eA!==M&&(M!==void 0&&N(M,Y),M=eA,Y=[]),Y.push(W)}}),M!==void 0&&N(M,Y);let K=L;if(L=[],await ji(K,zi,x.signal,v,_),l)for(let[j,W]of un(U))y.addLinkEnds(j,W)};try{await H(p,A.end);let S=it(w,a,Oi,A,d,F,n.budgetNames);if(S)throw S;let J=p,M=Math.floor((A.end-1)/d)*d,Y=Zi*d,[K,j]=Q?[Math.floor((A.start-c)/d)*d,Math.floor((A.end+c-1)/d)*d]:[J-Y,M+Y],W=()=>tt(et(w),y.nodes,e,{contained:Q,context:c});b=W();let eA=await C([{start:p,end:A.end}]);for(let tA=0;tA<qi;tA++){let V=J,X=M;for(let O of b.open)O.refName===e&&O.start>=K&&O.start<=j&&(V=Math.min(V,O.start),X=Math.max(X,O.start));let T=[{start:V,end:J},{start:M+d,end:X+1}].filter(O=>O.end>O.start);if(T.length===0||(eA+=await C(T),eA>g))break;J=V,M=X,await Promise.all(T.map(({start:O,end:dA})=>H(O,dA))),b=W()}}catch(S){throw x.abort(),S}finally{o?.removeEventListener("abort",f)}let z=(i=ot(b.fragments,a,A,F))!==null&&i!==void 0?i:Qe(b.kept.size,I,A,F);if(z)throw z;return{graph:y,...b,skips:Bn(h,b.fragments,A)}}async cutRegion(e,A={}){var n;let{haplotypes:r,referenceSample:i,...o}=A,{signal:s}=A,c=await this.header({signal:s}),a=(n=i??c.references[0])!==null&&n!==void 0?n:"",g=await this.sequenceFor(a,e.refName,{signal:s});if(g===void 0){let E=await this.referenceSequences({signal:s});throw new Error(`The walk file has no sequence ${e.refName} on ${a}; it holds ${E.slice(0,5).join(", ")}${E.length>5?", \u2026":""}`)}let{graph:l,kept:Q,fragments:I,skips:B}=await this.cut(g,e,{...o,keep:At(r,g)});return{tables:l.tables(Q,I,B),refName:g,sample:a}}};var bA=50,Ln=[50,1e3,1e4],It=.05,Wi=1e3,Vi=.1,Be="0",sA=".",Ee="~";function Jn(t){let e=t/100,[A,n,r]=Ln;return e<250?A:e<3e3?n:r}var Gn=t=>Math.max(1,Math.round(t/100));function ft(t,e){return e>t&&t<bA?"insertion":e<t&&e<bA?"deletion":"replacement"}function Ct(t,e){return e<It*t?"deletion":t<It*e?"insertion":void 0}var Un=(t,e,A)=>{let n=t==="replacement"?Ct(e,A):void 0;return n?{lopsided:n}:{}},Yn=t=>10**(Math.floor(Math.log10(t))-1),KA=t=>{let e=Yn(t);return Math.round(Math.round(t/e)*e)},Hn=(t,e=0)=>Math.abs(t.delta)>=Math.max(e,Yn(t.shiftedBp));function Kn(t,e=bA){let A=t.delta>0?"+":"-";switch(t.kind){case"inversion":return`v${KA(Math.max(Math.abs(t.delta),t.refEnd-t.refStart,1))}`;case"shift":return Hn(t,e)?`s${KA(t.shiftedBp)}${A}${KA(Math.abs(t.delta))}`:`s${KA(t.shiftedBp)}`;case"net":return`n${A}${KA(Math.abs(t.delta))}`;default:return`${A}${KA(Math.abs(t.delta))}`}}var Sn=t=>t.altLength-(t.refEnd-t.refStart);function $i(t,e){let A=[];for(let n of t){let r=A.at(-1);r&&!r.abridged&&!n.abridged&&n.refStart-r.refEnd<e?(r.refEnd=Math.max(r.refEnd,n.refEnd),r.delta+=Sn(n),r.invertedBp+=n.invertedBp,r.repeatedBp+=n.repeatedBp,n.copied&&(r.copied=r.copied?[Math.min(r.copied[0],n.copied[0]),Math.max(r.copied[1],n.copied[1])]:n.copied)):A.push({refStart:n.refStart,refEnd:n.refEnd,delta:Sn(n),invertedBp:n.invertedBp,repeatedBp:n.repeatedBp,...n.copied?{copied:n.copied}:{},...n.abridged?{abridged:!0}:{}})}return A}function Ao(t,e){let A=t.refEnd-t.refStart,n=Math.max(0,A+t.delta),r=Math.abs(t.delta),i=t.abridged?r>=e?"net":void 0:r<e?t.invertedBp>=e?"inversion":void 0:t.repeatedBp>=bA&&t.delta>0?"duplication":ft(A,n);return i&&{kind:i,refStart:t.refStart,refEnd:t.refEnd,altLength:n,delta:t.delta,...i==="duplication"?{repeatedBp:t.repeatedBp}:{},...i==="duplication"&&t.copied?{copied:t.copied}:{},...Un(i,A,n)}}function Tn(t){let e=new Set,A=[],n=t.filter(r=>r.kind==="deletion"&&-r.delta>=Wi).sort((r,i)=>r.delta-i.delta);for(let r of n){let i=-r.delta,o=t.find(s=>!e.has(s)&&(s.kind==="insertion"||s.kind==="duplication")&&Math.abs(s.delta-i)<=Vi*Math.max(s.delta,i)&&Math.max(s.refStart-r.refEnd,r.refStart-s.refEnd)<=2*i);if(o){e.add(o),e.add(r);let s=Math.min(r.refStart,o.refStart),c=Math.max(r.refEnd,o.refEnd),a=r.delta+o.delta;A.push({kind:"shift",refStart:s,refEnd:c,altLength:c-s+a,delta:a,shiftedBp:i})}}return[...t.filter(r=>!e.has(r)),...A].sort((r,i)=>r.refStart-i.refStart)}var On=new Set(["insertion","deletion","replacement"]),eo=1e3;function to(t,e,A,n){let r=$i(t,A).filter(a=>!n||a.refEnd>=n.start&&a.refStart<=n.end),i=new Map;for(let a of r){let g=Ao(a,e);g&&i.set(g,a)}let o=Tn([...i.keys()]),s=new Set(o),c=new Set([...i].flatMap(([a,g])=>s.has(a)&&On.has(a.kind)?[]:[g]));return{marks:o,plain:r.filter(a=>!a.abridged&&!c.has(a))}}function no(t,e){let A=t.reduce((g,l)=>g+l.delta,0);if(Math.abs(A)<e)return;let n=t.filter(g=>Math.abs(g.delta)>=e),r=n.length>0?n:t.filter(g=>g.delta!==0),i=1/0,o=-1/0;for(let g of r)i=Math.min(i,g.refStart),o=Math.max(o,g.refEnd);let s=o-i,c=Math.max(0,s+A),a=ft(s,c);return{kind:a,refStart:i,refEnd:o,altLength:c,delta:A,...Un(a,s,c)}}var ct=t=>t.reduce((e,A)=>e+A.delta,0),ro=(t,e,A)=>t.covered.some(([n,r])=>n<=e&&r>=A),io=(t,e,A)=>t.covered.some(([n,r])=>n<=A&&r>=e);function oo(t){let e=t.flat().map(n=>[n.refStart,n.refEnd]).sort((n,r)=>n[0]-r[0]),A=[];for(let[n,r]of e){let i=A.at(-1);i&&n<=i[1]?i[1]=Math.max(i[1],r):A.push([n,r])}return A}function vn(t,e){let A=0,n=t.length-1;for(;A<n;){let r=A+n+1>>1;t[r][0]<=e.refStart?A=r:n=r-1}return A}function so(t,e={}){var A,n,r,i;let o=(A=e.exclude)!==null&&A!==void 0?A:[],s=t.filter(N=>!o.some(v=>UA(N.haplotype,v))),c=(n=e.minCarriers)!==null&&n!==void 0?n:Gn(s.length),a=(r=e.window)!==null&&r!==void 0?r:ao(s),g=e.floorBp===void 0||e.floorBp==="auto"?Jn(a.end-a.start):Math.max(bA,e.floorBp),l=(i=e.joinBp)!==null&&i!==void 0?i:bA,Q=e.foldRareForms===!1,I=s.map(N=>to(N.departures,g,l,e.window)),B=oo(I.map(N=>N.marks)),E=B.map(([N,v])=>v-N<=eo),d=I.map(({marks:N,plain:v})=>{var _;let G=new Map,H=(S,J)=>{var M;G.set(S,[...(M=G.get(S))!==null&&M!==void 0?M:[],J])};for(let S of N){let J=vn(B,S);(!On.has(S.kind)||!E[J])&&H(J,S)}let z=new Map;for(let S of v){let J=vn(B,{refStart:S.refEnd});E[J]&&B[J][0]<=S.refEnd&&B[J][1]>=S.refStart&&z.set(J,[...(_=z.get(J))!==null&&_!==void 0?_:[],S])}for(let[S,J]of z){let M=no(J,g);M&&H(S,M)}return new Map([...G].map(([S,J])=>{J.sort((Y,K)=>Y.refStart-K.refStart||Y.refEnd-K.refEnd);let M=J.map(Y=>Kn(Y,g)).join(";");return[S,J.map(Y=>({...Y,site:S,state:M}))]}))});for(let N of d)for(let[v,_]of N){let G=B[v];for(let H of _)G[0]=Math.min(G[0],H.refStart),G[1]=Math.max(G[1],H.refEnd)}let p=B.map(([N,v],_)=>s.map((G,H)=>{var z,S;return ro(G,Math.max(N,a.start),Math.min(v,a.end))?(S=(z=d[H].get(_))===null||z===void 0?void 0:z[0].state)!==null&&S!==void 0?S:Be:sA})),u=s.map(N=>io(N,a.start,a.end)),m=u.filter(Boolean).length,C=p.map(N=>2*N.filter((v,_)=>u[_]&&v!==sA).length<m),D=s.map((N,v)=>u[v]&&(C.every(Boolean)||p.some((_,G)=>!C[G]&&_[v]!==sA))),x=s.flatMap((N,v)=>D[v]?[v]:[]),f=new Set,w=[],b=[],y=[],R=[];B.forEach(([N,v],_)=>{var G,H,z,S,J,M;let Y=p[_],K=new Map;for(let T of x){let O=K.get(Y[T]);O?O.push(T):K.set(Y[T],[T])}let j=[...K].sort((T,O)=>O[1].length-T[1].length||(T[0]<O[0]?-1:1)),W=j.flatMap(([T,O])=>{if(T===sA)return[];let dA=O.map($=>{var JA;return{j:$,marks:(JA=d[$].get(_))!==null&&JA!==void 0?JA:[]}}).map($=>({...$,delta:ct($.marks)})).sort(($,JA)=>$.delta-JA.delta),LA=dA[Math.floor(dA.length/2)];return[{key:T,delta:LA.delta,marks:LA.marks,carriers:O.map($=>s[$].haplotype)}]}),eA=!C[_]&&j.length>1&&j[1][1].length>=c;if(w.push({refStart:N,refEnd:v,edge:C[_],shared:!C[_]&&!eA,covered:x.length-((H=(G=K.get(sA))===null||G===void 0?void 0:G.length)!==null&&H!==void 0?H:0),states:W}),C[_])return;let tA=(S=(z=j[0])===null||z===void 0?void 0:z[0])!==null&&S!==void 0?S:Be,V=W.filter(T=>T.carriers.length>=c),X=Y.map((T,O)=>{var dA,LA,$;if(((LA=(dA=K.get(T))===null||dA===void 0?void 0:dA.length)!==null&&LA!==void 0?LA:0)>=c||!D[O]||Q&&eA)return T;if(T!==tA&&f.add(s[O].haplotype),T!==sA&&tA===sA)return Ee;if(T!==sA&&V.length>0){let _i=ct(($=d[O].get(_))!==null&&$!==void 0?$:[]);return Fn(V,Mi=>Mi.delta,_i).key}return tA});if(eA)b.push(_),y.push(X);else for(let T of(M=(J=W.find(O=>O.key===tA))===null||J===void 0?void 0:J.marks)!==null&&M!==void 0?M:[])R.push(T)});let U=(N,v)=>w[b[N]].states.find(_=>_.key===v),h=new Map;for(let N of x){let v=y.map(H=>H[N]),_=v.join("|"),G=h.get(_);G?G.members.push(s[N].haplotype):h.set(_,{states:v,members:[s[N].haplotype]})}let k=[...h].map(([N,{states:v,members:_}])=>{let G=v.flatMap((S,J)=>{var M,Y;return(Y=(M=U(J,S))===null||M===void 0?void 0:M.marks)!==null&&Y!==void 0?Y:[]}).concat(R).sort((S,J)=>S.refStart-J.refStart),H=G.filter(S=>!w[S.site].shared),z=H.length>0&&H.every(S=>S.kind==="shift")&&!v.some(S=>S===sA||S===Ee);return{members:_,key:N,states:v,marks:G,net:ct(G),onlyShifts:z}}),F=Q?k:k.filter(N=>N.members.length>=c),L=F.length>0?F:k;if(F.length>0&&F!==k){for(let N of Rn(k))if(N.members.length<c){let v=Fn(F,_=>_.net,N.net);for(let _ of N.members)v.members.push(_),f.add(_)}}return{sites:w,informative:b,forms:Rn(L),placed:x.length,unplaced:s.flatMap((N,v)=>D[v]?[]:[N.haplotype]),rareCarriers:s.filter(N=>f.has(N.haplotype)).map(N=>N.haplotype),abridged:s.filter((N,v)=>I[v].marks.some(_=>_.kind==="net")).map(N=>N.haplotype),minCarriers:c,floorBp:g}}function ao(t){let e=1/0,A=-1/0;for(let n of t)for(let[r,i]of n.covered)e=Math.min(e,r),A=Math.max(A,i);return e<=A?{start:e,end:A}:{start:0,end:0}}function Fn(t,e,A){let n=t[0];for(let r of t)Math.abs(e(r)-A)<Math.abs(e(n)-A)&&(n=r);return n}var Rn=t=>t.toSorted((e,A)=>A.members.length-e.members.length||Math.abs(e.net)-Math.abs(A.net)||(e.key<A.key?-1:1));function gA(t){let e=Number(t.toPrecision(3));return e>=1e6?`${Number((e/1e6).toPrecision(3))}Mb`:e>=1e3?`${Number((e/1e3).toPrecision(3))}kb`:`${e}bp`}var _n=t=>`${t<0?"-":"+"}${gA(Math.abs(t))}`,go={deletion:"del",insertion:"ins",none:"repl"};function qn(t){var e;let A=t.refEnd-t.refStart;switch(t.kind){case"insertion":return`ins ${gA(t.delta)}`;case"deletion":return`del ${gA(-t.delta)}`;case"duplication":return`dup ${gA(t.delta)}`;case"inversion":return`inv ${gA(A)}`;case"net":return`net ${_n(t.delta)}`;case"shift":return Hn(t)?`shift ${gA(t.shiftedBp)} net ${_n(t.delta)}`:`shift ${gA(t.shiftedBp)}`;case"replacement":return`${go[(e=Ct(A,t.altLength))!==null&&e!==void 0?e:"none"]} ${gA(A)}->${gA(t.altLength)}`}}var Mn=t=>{var e;return t.kind==="inversion"?t.refEnd-t.refStart:(e=t.shiftedBp)!==null&&e!==void 0?e:Math.abs(t.delta)};function co(t,e,A){var n,r,i;let o=t.informative.indexOf(A);return o>=0?e.states[o]:!((n=t.sites[A])===null||n===void 0)&&n.shared?(i=(r=e.marks.find(s=>s.site===A))===null||r===void 0?void 0:r.state)!==null&&i!==void 0?i:Be:void 0}function Io(t,e){let A=a=>{var g;return"site"in a&&((g=e?.sites[a.site])===null||g===void 0?void 0:g.shared)===!0},n=t.marks.filter(a=>!A(a)),[r]=n.toSorted((a,g)=>Mn(g)-Mn(a)),i=t.states.filter(a=>a===Ee).length,o=t.states.filter(a=>a===sA).length,s=r?qn(r):i>0?"rarer":o>0?"no call":n.length<t.marks.length?"shared":"ref",c=n.length+i+o-1;return c>0?`${s} +${c}`:s}function fo(t,e,A){return{walks:t.map(n=>{var r,i,o;return{name:n.name,hapStart:n.hapStart,hapEnd:n.hapEnd,steps:n.ids.length,id:s=>n.ids[s],rev:s=>n.rev[s]===1,abridgedBp:(r=n.abridged)===null||r===void 0?void 0:r.bp,trimmed:[(i=n.before.trimmed)!==null&&i!==void 0?i:0,(o=n.after.trimmed)!==null&&o!==void 0?o:0]}}),refStart:n=>{let r=e.get(n);return r?.rank===0&&r.refName===A?r.start:NaN},length:n=>{let r=e.get(n);return r?r.end-r.start:0}}}function Co({nodes:t,walks:e},A){let n=t.refNames.indexOf(A);return{walks:e.names.map((r,i)=>{var o;let s=e.offsets[i],c=(o=e.abridgedBp)===null||o===void 0?void 0:o[i];return{name:r,hapStart:e.starts[i],hapEnd:e.ends[i],steps:e.offsets[i+1]-s,id:a=>e.steps[s+a],rev:a=>e.reversed[s+a]===1,abridgedBp:c===void 0||Number.isNaN(c)?void 0:c,trimmed:[0,0]}}),refStart:r=>t.ranks[r]===0&&t.refs[r]===n?t.starts[r]:NaN,length:r=>{var i;return(i=t.lengths[r])!==null&&i!==void 0?i:0}}}var $A=t=>!Number.isNaN(t);function Qo(t){let e=t.toSorted((i,o)=>i.name<o.name?-1:i.name>o.name?1:i.hapStart-o.hapStart),A=[],n=NaN,r=-1/0;for(let i of e){let o=A.at(-1),s=o?.at(-1);if(o&&s?.name===i.name){if(s.abridgedBp!==void 0&&i.hapStart<n){let c=i.hapStart-i.trimmed[0],a=i.hapEnd+i.trimmed[1],g=Math.max(0,a-Math.max(c,r));r=Math.max(r,a),n+=g,o[o.length-1]={...s,abridgedBp:s.abridgedBp+g};continue}if(i.hapStart===n){o.push(i),n=i.hapEnd,r=-1/0;continue}}A.push([i]),n=i.hapEnd,r=-1/0}return A}function Zn(t,e){var A,n;let{walks:r,refStart:i,length:o}="fragments"in t?fo(t.fragments,t.nodes,e):Co(t,e),s=(A=hA(e))!==null&&A!==void 0?A:e,c=new Map;for(let g of Qo(r)){let{name:l}=g[0],Q=(n=hA(l))!==null&&n!==void 0?n:XA(l);if(Q===s||l===e)continue;let I=c.get(Q);I||(I={haplotype:Q,covered:[],departures:[],open:!1},c.set(Q,I)),lo(g,i,o,I)}let a=[...c.values()];for(let g of a)g.departures.sort((l,Q)=>l.refStart-Q.refStart||l.refEnd-Q.refEnd),g.covered=Bo(g.covered);return a}function lo(t,e,A,n){let r=0,i=0;for(let B of t)for(let E=0;B.abridgedBp===void 0&&E<B.steps;E++){let d=B.id(E);$A(e(d))&&(B.rev(E)?i+=A(d):r+=A(d))}let o=i>r,s=NaN,c=NaN,a=-1/0,g=0,l=0,Q=NaN,I=0;for(let B of o?t.toReversed():t){let E=B.steps;if(B.abridgedBp!==void 0){let d=B.id(0),p=B.id(E-1),u=e(d),m=e(p);if(!$A(u)||!$A(m)){n.open=!0;continue}Number.isNaN(c)&&(s=Math.min(u,m),c=s,g=0),g+=B.abridgedBp,Q=Math.max(u+A(d),m+A(p)),I=g;continue}for(let d=0;d<E;d++){let p=o?E-1-d:d,u=B.id(p),m=B.rev(p)!==o,C=e(u),D=A(u);if($A(C)&&!m){if(Number.isNaN(c))s=C;else if(!Number.isNaN(Q))n.departures.push({refStart:c,refEnd:Math.max(C,c),altLength:g+Math.max(0,c-C),invertedBp:0,repeatedBp:0,abridged:!0}),Q=NaN;else if(C!==c||g>0){let x=C<c?c-C:0;n.departures.push({refStart:c,refEnd:x>0?c:C,altLength:g+x,invertedBp:l,repeatedBp:x,...x>0?{copied:[C,c]}:{}})}c=C+D,a=Math.max(a,c),g=0,l=0}else Number.isNaN(c)?n.open=!0:(g+=D,$A(C)&&(l+=D))}}Number.isNaN(Q)||(n.departures.push({refStart:c,refEnd:Math.max(Q,c),altLength:I,invertedBp:0,repeatedBp:0,abridged:!0}),a=Math.max(a,Q),g-=I),Number.isNaN(s)?n.open=!0:n.covered.push([s,a]),g>0&&(n.open=!0)}function Bo(t){let e=[...new Set(t.flat())].sort((r,i)=>r-i),A=[],n=-1;for(let r=0;r+1<e.length;r++){let i=e[r],o=e[r+1],s=t.flatMap(([a,g],l)=>a<=i&&g>=o?[l]:[]),c=A.at(-1);s.length!==1?n=-1:c&&s[0]===n&&c[1]===i?c[1]=o:(A.push([i,o]),n=s[0])}return A}var Pn=16e6,de=class extends aA{constructor(e,A,n){let r=Math.max(1,Math.floor(n*A/e));super(`Zoom in to about ${NA(r)} to read every walk in full`,A,n,r),this.steps=e}};async function Eo(t,e,A={}){var n,r;let{expand:i=!0,partial:o=!0,stepBudget:s=Pn,byteBudget:c,signal:a}=A,g=await t.header({signal:a}),l=(n=g.references[0])!==null&&n!==void 0?n:"",Q=(r=await t.sequenceFor(l,e.refName,{signal:a}))!==null&&r!==void 0?r:e.refName,I={links:!1,byteBudget:c,signal:a},B=await t.cut(Q,e,I);if(i){let p=ho(B.fragments,s,o,e);p.size>0&&(B=await t.cut(Q,e,{...I,expand:u=>p.has(u)}))}let E=Zn({fragments:B.fragments,nodes:B.graph.nodes},Q),d=new Set(E.map(p=>p.haplotype));for(let p of g.haplotypes)d.has(p)||E.push({haplotype:p,covered:[],departures:[],open:!1});return E}function ho(t,e,A,n){var r;let i=0,o=new Map;for(let c of t)c.abridged?o.set(c.name,((r=o.get(c.name))!==null&&r!==void 0?r:0)+c.abridged.steps):i+=c.ids.length;if(!A){let c=[...o.values()].reduce((a,g)=>a+g,i);if(o.size>0&&c>e)throw new de(c,e,n.end-n.start);return new Set(o.keys())}let s=new Set;for(let[c,a]of[...o].sort((g,l)=>g[1]-l[1])){if(i+a>e)break;i+=a,s.add(c)}return s}function lt(t){let e=t.split(" ");return jn(e,e.length>=8)}function jn(t,e){var A;let n=e?5:0;return{anchored:e,segment:{refName:t[n],start:+t[n+1],end:+t[n+2],id:t[3],rank:+t[4],tags:(A=t[e?8:5])!==null&&A!==void 0?A:""}}}function uo(t){let e=t.tags.split(" ").find(n=>n.startsWith("SM:Z:"));if(e===void 0)return;let A=e.slice(5).split(",").map(n=>n.trim()).filter(Boolean);return A.length>0?A:void 0}function zn(t){return{id:t.slice(0,-1),strand:t.slice(-1)}}function Bt(t){return Wn(t.split(" "))}function Wn(t){var e,A;let n=zn(t[3]),r=zn(t[4]);return{source:n.id,sourceStrand:n.strand,target:r.id,targetStrand:r.strand,sourceSegment:{id:n.id,refName:t[5],start:+t[6],end:+t[7],rank:+t[8],tags:(e=t[13])!==null&&e!==void 0?e:""},targetSegment:{id:r.id,refName:t[9],start:+t[10],end:+t[11],rank:+t[12],tags:(A=t[14])!==null&&A!==void 0?A:""}}}function Et(t){let e=t.find(i=>i.startsWith("#gfa-to-tabix "));if(e===void 0)throw new Error("not a gfa-to-tabix graph file: no #gfa-to-tabix header");let A=new Map(e.split(" ").slice(1).map(i=>[i.slice(0,i.indexOf(":")),i.slice(i.indexOf(":")+3)])),n=A.get("format");if(n!=="2")throw new Error(`gfa-to-tabix format ${n}: this graph-walks reads format 2`);let r=t.find(i=>i.startsWith("#samples "));return{anchored:A.get("layout")==="anchored",samples:r?r.slice(9).split(","):[]}}function Vn(t,e){let A=[];for(let n=0;n<t.length;n++){let r=Number.parseInt(t[n],16);for(let i=0;i<4;i++)r&1<<i&&A.push(e[n*4+i])}return A}function dt(t,e){let A=t.split(" "),[n]=A.splice(3,1),r=i=>{var o;!((o=A[i])===null||o===void 0)&&o.startsWith("SB:H:")&&(A[i]=`SM:Z:${Vn(A[i].slice(5),e.samples).join(",")}`)};if(n==="N")return r(e.anchored?8:5),{kind:"N",segment:jn(A,e.anchored).segment};if(n==="L")return r(13),r(14),{kind:"L",link:Wn(A)}}function ht(t){return`${t.source}${t.sourceStrand}${t.target}${t.targetStrand}`}function Ae(t,e,A){e.set(ht(A),A);let n=[];for(let r of[A.sourceSegment,A.targetSegment])t.has(r.id)||(t.set(r.id,r),n.push(r));return n}function $n(t,e,A){let n=o=>o.rank!==0||o.refName!==A.refName?0:o.end<=A.start?-1:o.start>=A.end?1:0,r=new Map(t),i=new Map;for(let o of e)(t.has(o.source)||t.has(o.target)||n(o.sourceSegment)*n(o.targetSegment)===-1)&&Ae(r,i,o);for(let o of e)r.has(o.source)&&r.has(o.target)&&i.set(ht(o),o);for(let[o,s]of r)!t.has(o)&&s.rank>0&&r.set(o,{...s,tags:s.tags?`${s.tags} ${Qt}`:Qt});return{segments:r,links:i}}var Qt="mv:i:1";function Ar(t,e,A){let n=r=>r.refName!==A.refName||r.end<=A.start||r.start>=A.end;return[...Xn(t.filter(r=>r.rank>0),r=>e.has(r.id),A.end-A.start),...Xn(t.filter(r=>r.rank===0&&n(r)),()=>!0,0)]}function Xn(t,e,A){let n=[...t].sort((i,o)=>he(i.refName,o.refName)||i.start-o.start),r=[];for(let i of n){let o=r.at(-1);o?.refName===i.refName&&i.start-o.end<=A?(o.needed||(o.needed=i.start>o.end||e(i)),o.end=Math.max(o.end,i.end)):r.push({refName:i.refName,start:i.start,end:i.end,needed:e(i)})}return r.filter(i=>i.needed).map(({refName:i,start:o,end:s})=>({refName:i,start:o,end:s}))}function er(t,e,A){let n=r=>e.has(r.id)||A.some(i=>i.refName===r.refName&&r.start>=i.start&&r.end<=i.end);return t.filter(r=>n(r.sourceSegment)&&n(r.targetSegment))}var po=/^[A-Za-z][A-Za-z0-9]:[AifZJHB]:/;function wo(t){let{id:e,refName:A,start:n,end:r,rank:i,tags:o}=t,s=o.split(" ").filter(a=>po.test(a)),c=s.length===0?"":` ${s.join(" ")}`;return`S ${e} * LN:i:${r-n} SN:Z:${A} SO:i:${n} SR:i:${i}${c}`}function mo(t){let{source:e,sourceStrand:A,target:n,targetStrand:r}=t;return`L ${e} ${A} ${n} ${r} 0M`}function he(t,e){return t<e?-1:t>e?1:0}function ue(t,e){let A=[...t.values()].sort((r,i)=>he(r.refName,i.refName)||r.start-i.start||he(r.id,i.id)),n=[...e.keys()].sort((r,i)=>he(r,i));return["H VN:Z:1.0",...A.map(r=>wo(r)),...n.map(r=>mo(e.get(r)))].join(`
2
+ `)}function tr(t){return t.filter(e=>e.rank>0)}var ut=new WeakMap;function ko(t,e){let A=ut.get(t);return A||(A=t.getHeaderLines({signal:e}).then(Et),A.catch(()=>ut.delete(t)),ut.set(t,A)),A}function yo(t,e,A,n,r){return fA(e,A,n),t.getLines(e,A,n,r)}async function nr(t,e,A,n){var r,i,o,s;let c=[],a=[],g=(Q,I)=>yo(Q,e.refName,e.start,e.end,{signal:n,lineCallback:I});if("graph"in t){let Q=await ko(t.graph,n);await g(t.graph,B=>{let E=dt(B,Q);E?.kind==="N"?c.push(E.segment):E?.kind==="L"&&a.push(E.link)});let I=new Map(c.map(B=>[B.id,B.tags]));for(let B of a)(o=B.sourceSegment).tags||(o.tags=(r=I.get(B.source))!==null&&r!==void 0?r:""),(s=B.targetSegment).tags||(s.tags=(i=I.get(B.target))!==null&&i!==void 0?i:"");return{segments:A?c:[],links:a,anchored:Q.anchored}}let l=!1;return await Promise.all([A&&g(t.segments,Q=>{let I=lt(Q);l||(l=I.anchored),c.push(I.segment)}),g(t.links,Q=>{a.push(Bt(Q))})]),{segments:c,links:a,anchored:l}}async function No(t,e,{hops:A=0,signal:n}={}){let r=new Map,i=new Map,o=await nr(t,e,!0,n);for(let l of o.segments)r.set(l.id,l);let s=o.links;if(o.anchored){let l=$n(r,s,e);return ue(l.segments,l.links)}let c=async l=>(await nr(t,l,!1,n)).links,a=async l=>(await c(l)).flatMap(Q=>Ae(r,i,Q)),g=tr(s.flatMap(l=>Ae(r,i,l)));for(let l=0;l<A;l++){let Q=await Promise.all(g.map(a));g=tr(Q.flat())}if(A>0){let l=Ar([...r.values()],new Set(g.map(I=>I.id)),e),Q=await Promise.all(l.map(I=>c(I)));for(let I of er(Q.flat(),r,l))Ae(r,i,I)}return ue(r,i)}async function Sa(t,e,A,n,r){return fA(e,A,n),t.getLines(e,A,n,r)}async function rr(t,e,A){for(let{refName:n,start:r,end:i}of e)fA(n,r,i);return t.bytesForRegions(e,A)}var pt=0;var wt=2;var ee=4;var uA=0,te=1,ir=2;var or=-5;function bo(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function sr(t){for(var e=Array.prototype.slice.call(arguments,1);e.length;){var A=e.shift();if(A){if(typeof A!="object")throw new TypeError(A+"must be non-object");for(var n in A)bo(A,n)&&(t[n]=A[n])}}return t}function we(t,e){return t.length===e?t:t.subarray?t.subarray(0,e):(t.length=e,t)}var ne={arraySet:function(t,e,A,n,r){if(e.subarray&&t.subarray){t.set(e.subarray(A,A+n),r);return}for(var i=0;i<n;i++)t[r+i]=e[A+i]},flattenChunks:function(t){var e,A,n,r,i,o;for(n=0,e=0,A=t.length;e<A;e++)n+=t[e].length;for(o=new Uint8Array(n),r=0,e=0,A=t.length;e<A;e++)i=t[e],o.set(i,r),r+=i.length;return o},Buf8:function(t){return new Uint8Array(t)},Buf16:function(t){return new Uint16Array(t)},Buf32:function(t){return new Int32Array(t)}},re={arraySet:function(t,e,A,n,r){for(var i=0;i<n;i++)t[r+i]=e[A+i]},flattenChunks:function(t){return[].concat.apply([],t)},Buf8:function(t){return new Array(t)},Buf16:function(t){return new Array(t)},Buf32:function(t){return new Array(t)}},TA=()=>{let t=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";return TA=()=>t,t},cA=(t,e,A,n,r)=>(cA=TA()?ne.arraySet:re.arraySet,cA(t,e,A,n,r)),pe=t=>(pe=TA()?ne.flattenChunks:re.flattenChunks,pe(t)),CA=t=>(CA=TA()?ne.Buf8:re.Buf8,CA(t)),pA=t=>(pA=TA()?ne.Buf16:re.Buf16,pA(t)),xA=t=>(xA=TA()?ne.Buf32:re.Buf32,xA(t));var ar=function(){let t=!0;try{String.fromCharCode.apply(null,[0])}catch{t=!1}return ar=()=>t,t},gr=function(){let t=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{t=!1}return gr=()=>t,t},mt=function(t){for(var e=CA(256),A=0;A<256;A++)e[A]=A>=252?6:A>=248?5:A>=240?4:A>=224?3:A>=192?2:1;return e[254]=e[254]=1,mt=n=>e[n],e[t]};function kt(t){var e,A,n,r,i,o=t.length,s=0;for(r=0;r<o;r++)A=t.charCodeAt(r),(A&64512)===55296&&r+1<o&&(n=t.charCodeAt(r+1),(n&64512)===56320&&(A=65536+(A-55296<<10)+(n-56320),r++)),s+=A<128?1:A<2048?2:A<65536?3:4;for(e=new Uint8Array(s),i=0,r=0;i<s;r++)A=t.charCodeAt(r),(A&64512)===55296&&r+1<o&&(n=t.charCodeAt(r+1),(n&64512)===56320&&(A=65536+(A-55296<<10)+(n-56320),r++)),A<128?e[i++]=A:A<2048?(e[i++]=192|A>>>6,e[i++]=128|A&63):A<65536?(e[i++]=224|A>>>12,e[i++]=128|A>>>6&63,e[i++]=128|A&63):(e[i++]=240|A>>>18,e[i++]=128|A>>>12&63,e[i++]=128|A>>>6&63,e[i++]=128|A&63);return e}function xo(t,e){if(e<65534&&(t.subarray&&gr()||!t.subarray&&ar()))return String.fromCharCode.apply(null,we(t,e));for(var A="",n=0;n<e;n++)A+=String.fromCharCode(t[n]);return A}function cr(t){for(var e=new Uint8Array(t.length),A=0,n=e.length;A<n;A++)e[A]=t.charCodeAt(A);return e}function Ir(t,e){var A,n,r,i,o=e||t.length,s=new Array(o*2);for(n=0,A=0;A<o;){if(r=t[A++],r<128){s[n++]=r;continue}if(i=mt(r),i>4){s[n++]=65533,A+=i-1;continue}for(r&=i===2?31:i===3?15:7;i>1&&A<o;)r=r<<6|t[A++]&63,i--;if(i>1){s[n++]=65533;continue}r<65536?s[n++]=r:(r-=65536,s[n++]=55296|r>>10&1023,s[n++]=56320|r&1023)}return xo(s,n)}function fr(t,e){var A;for(e=e||t.length,e>t.length&&(e=t.length),A=e-1;A>=0&&(t[A]&192)===128;)A--;return A<0||A===0?e:A+mt(t[A])>e?A:e}function yt(){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 ie(t,e,A,n){for(var r=t&65535|0,i=t>>>16&65535|0,o=0;A!==0;){o=A>2e3?2e3:A,A-=o;do r=r+e[n++]|0,i=i+r|0;while(--o);r%=65521,i%=65521}return r|i<<16|0}function Do(){for(var t,e=[],A=0;A<256;A++){t=A;for(var n=0;n<8;n++)t=t&1?3988292384^t>>>1:t>>>1;e[A]=t}return e}var Cr=function(){let t=Do();return Cr=()=>t,t};function nA(t,e,A,n){var r=Cr(),i=n+A;t^=-1;for(var o=n;o<i;o++)t=t>>>8^r[(t^e[o])&255];return t^-1}var me=30,So=12;function Nt(t,e){var A,n,r,i,o,s,c,a,g,l,Q,I,B,E,d,p,u,m,C,D,x,f,w,b,y;A=t.state,n=t.next_in,b=t.input,r=n+(t.avail_in-5),i=t.next_out,y=t.output,o=i-(e-t.avail_out),s=i+(t.avail_out-257),c=A.dmax,a=A.wsize,g=A.whave,l=A.wnext,Q=A.window,I=A.hold,B=A.bits,E=A.lencode,d=A.distcode,p=(1<<A.lenbits)-1,u=(1<<A.distbits)-1;A:do{B<15&&(I+=b[n++]<<B,B+=8,I+=b[n++]<<B,B+=8),m=E[I&p];e:for(;;){if(C=m>>>24,I>>>=C,B-=C,C=m>>>16&255,C===0)y[i++]=m&65535;else if(C&16){D=m&65535,C&=15,C&&(B<C&&(I+=b[n++]<<B,B+=8),D+=I&(1<<C)-1,I>>>=C,B-=C),B<15&&(I+=b[n++]<<B,B+=8,I+=b[n++]<<B,B+=8),m=d[I&u];t:for(;;){if(C=m>>>24,I>>>=C,B-=C,C=m>>>16&255,C&16){if(x=m&65535,C&=15,B<C&&(I+=b[n++]<<B,B+=8,B<C&&(I+=b[n++]<<B,B+=8)),x+=I&(1<<C)-1,x>c){t.msg="invalid distance too far back",A.mode=me;break A}if(I>>>=C,B-=C,C=i-o,x>C){if(C=x-C,C>g&&A.sane){t.msg="invalid distance too far back",A.mode=me;break A}if(f=0,w=Q,l===0){if(f+=a-C,C<D){D-=C;do y[i++]=Q[f++];while(--C);f=i-x,w=y}}else if(l<C){if(f+=a+l-C,C-=l,C<D){D-=C;do y[i++]=Q[f++];while(--C);if(f=0,l<D){C=l,D-=C;do y[i++]=Q[f++];while(--C);f=i-x,w=y}}}else if(f+=l-C,C<D){D-=C;do y[i++]=Q[f++];while(--C);f=i-x,w=y}for(;D>2;)y[i++]=w[f++],y[i++]=w[f++],y[i++]=w[f++],D-=3;D&&(y[i++]=w[f++],D>1&&(y[i++]=w[f++]))}else{f=i-x;do y[i++]=y[f++],y[i++]=y[f++],y[i++]=y[f++],D-=3;while(D>2);D&&(y[i++]=y[f++],D>1&&(y[i++]=y[f++]))}}else if((C&64)===0){m=d[(m&65535)+(I&(1<<C)-1)];continue t}else{t.msg="invalid distance code",A.mode=me;break A}break}}else if((C&64)===0){m=E[(m&65535)+(I&(1<<C)-1)];continue e}else if(C&32){A.mode=So;break A}else{t.msg="invalid literal/length code",A.mode=me;break A}break}}while(n<r&&i<s);D=B>>3,n-=D,B-=D<<3,I&=(1<<B)-1,t.next_in=n,t.next_out=i,t.avail_in=n<r?5+(r-n):5-(n-r),t.avail_out=i<s?257+(s-i):257-(i-s),A.hold=I,A.bits=B}var OA=15,Qr=852,lr=592,Br=0,bt=1,Er=2,vo=[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],Fo=[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],Ro=[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],_o=[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 DA(t,e,A,n,r,i,o,s){var c=s.bits,a=0,g=0,l=0,Q=0,I=0,B=0,E=0,d=0,p=0,u=0,m,C,D,x,f,w=null,b=0,y,R=pA(OA+1),U=pA(OA+1),h=null,k=0,F,L,N;for(a=0;a<=OA;a++)R[a]=0;for(g=0;g<n;g++)R[e[A+g]]++;for(I=c,Q=OA;Q>=1&&R[Q]===0;Q--);if(I>Q&&(I=Q),Q===0)return r[i++]=1<<24|64<<16|0,r[i++]=1<<24|64<<16|0,s.bits=1,0;for(l=1;l<Q&&R[l]===0;l++);for(I<l&&(I=l),d=1,a=1;a<=OA;a++)if(d<<=1,d-=R[a],d<0)return-1;if(d>0&&(t===Br||Q!==1))return-1;for(U[1]=0,a=1;a<OA;a++)U[a+1]=U[a]+R[a];for(g=0;g<n;g++)e[A+g]!==0&&(o[U[e[A+g]]++]=g);if(t===Br?(w=h=o,y=19):t===bt?(w=vo,b-=257,h=Fo,k-=257,y=256):(w=Ro,h=_o,y=-1),u=0,g=0,a=l,f=i,B=I,E=0,D=-1,p=1<<I,x=p-1,t===bt&&p>Qr||t===Er&&p>lr)return 1;for(;;){F=a-E,o[g]<y?(L=0,N=o[g]):o[g]>y?(L=h[k+o[g]],N=w[b+o[g]]):(L=96,N=0),m=1<<a-E,C=1<<B,l=C;do C-=m,r[f+(u>>E)+C]=F<<24|L<<16|N|0;while(C!==0);for(m=1<<a-1;u&m;)m>>=1;if(m!==0?(u&=m-1,u+=m):u=0,g++,--R[a]===0){if(a===Q)break;a=e[A+o[g]]}if(a>I&&(u&x)!==D){for(E===0&&(E=I),f+=l,B=a-E,d=1<<B;B+E<Q&&(d-=R[B+E],!(d<=0));)B++,d<<=1;if(p+=1<<B,t===bt&&p>Qr||t===Er&&p>lr)return 1;D=u&x,r[D]=I<<24|B<<16|f-i|0}}return u!==0&&(r[f+u]=a-E<<24|64<<16|0),s.bits=I,0}var Mo=0,Tr=1,Or=2,dr=4,Lo=5,ke=6,SA=0,Jo=1,Go=2,rA=-2,qr=-3,Rt=-4,Uo=-5,hr=8,Zr=1,ur=2,pr=3,wr=4,mr=5,kr=6,yr=7,Nr=8,br=9,xr=10,be=11,QA=12,xt=13,Dr=14,Dt=15,Sr=16,vr=17,Fr=18,Rr=19,ye=20,Ne=21,_r=22,Mr=23,Lr=24,Jr=25,Gr=26,St=27,Ur=28,Yr=29,Z=30,_t=31,Yo=32,Ho=852,Ko=592;function Hr(t){return(t>>>24&255)+(t>>>8&65280)+((t&65280)<<8)+((t&255)<<24)}function To(){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=pA(320),this.work=pA(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function Oo(t){var e;return!t||!t.state?rA:(e=t.state,t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=e.wrap&1),e.mode=Zr,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=xA(Ho),e.distcode=e.distdyn=xA(Ko),e.sane=1,e.back=-1,SA)}function qo(t){var e;return!t||!t.state?rA:(e=t.state,e.wsize=0,e.whave=0,e.wnext=0,Oo(t))}function Zo(t,e){var A,n;return!t||!t.state||(n=t.state,e<0?(A=0,e=-e):(A=(e>>4)+1,e<48&&(e&=15)),e&&(e<8||e>15))?rA:(n.window!==null&&n.wbits!==e&&(n.window=null),n.wrap=A,n.wbits=e,qo(t))}function Pr(t,e){var A,n;return t?(n=new To,t.state=n,n.window=null,A=Zo(t,e),A!==SA&&(t.state=null),A):rA}var Kr=!0,vt,Ft;function Po(t){if(Kr){var e;for(vt=xA(512),Ft=xA(32),e=0;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(DA(Tr,t.lens,0,288,vt,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;DA(Or,t.lens,0,32,Ft,0,t.work,{bits:5}),Kr=!1}t.lencode=vt,t.lenbits=9,t.distcode=Ft,t.distbits=5}function zr(t,e,A,n){var r,i=t.state;return i.window===null&&(i.wsize=1<<i.wbits,i.wnext=0,i.whave=0,i.window=CA(i.wsize)),n>=i.wsize?(cA(i.window,e,A-i.wsize,i.wsize,0),i.wnext=0,i.whave=i.wsize):(r=i.wsize-i.wnext,r>n&&(r=n),cA(i.window,e,A-n,r,i.wnext),n-=r,n?(cA(i.window,e,A-n,n,0),i.wnext=n,i.whave=i.wsize):(i.wnext+=r,i.wnext===i.wsize&&(i.wnext=0),i.whave<i.wsize&&(i.whave+=r))),0}function Xr(t,e){var A,n,r,i,o,s,c,a,g,l,Q,I,B,E,d=0,p,u,m,C,D,x,f,w,b=CA(4),y,R,U=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!t||!t.state||!t.output||!t.input&&t.avail_in!==0)return rA;A=t.state,A.mode===QA&&(A.mode=xt),o=t.next_out,r=t.output,c=t.avail_out,i=t.next_in,n=t.input,s=t.avail_in,a=A.hold,g=A.bits,l=s,Q=c,w=SA;A:for(;;)switch(A.mode){case Zr:if(A.wrap===0){A.mode=xt;break}for(;g<16;){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}if(A.wrap&2&&a===35615){A.check=0,b[0]=a&255,b[1]=a>>>8&255,A.check=nA(A.check,b,2,0),a=0,g=0,A.mode=ur;break}if(A.flags=0,A.head&&(A.head.done=!1),!(A.wrap&1)||(((a&255)<<8)+(a>>8))%31){t.msg="incorrect header check",A.mode=Z;break}if((a&15)!==hr){t.msg="unknown compression method",A.mode=Z;break}if(a>>>=4,g-=4,f=(a&15)+8,A.wbits===0)A.wbits=f;else if(f>A.wbits){t.msg="invalid window size",A.mode=Z;break}A.dmax=1<<f,t.adler=A.check=1,A.mode=a&512?xr:QA,a=0,g=0;break;case ur:for(;g<16;){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}if(A.flags=a,(A.flags&255)!==hr){t.msg="unknown compression method",A.mode=Z;break}if(A.flags&57344){t.msg="unknown header flags set",A.mode=Z;break}A.head&&(A.head.text=a>>8&1),A.flags&512&&(b[0]=a&255,b[1]=a>>>8&255,A.check=nA(A.check,b,2,0)),a=0,g=0,A.mode=pr;case pr:for(;g<32;){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}A.head&&(A.head.time=a),A.flags&512&&(b[0]=a&255,b[1]=a>>>8&255,b[2]=a>>>16&255,b[3]=a>>>24&255,A.check=nA(A.check,b,4,0)),a=0,g=0,A.mode=wr;case wr:for(;g<16;){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}A.head&&(A.head.xflags=a&255,A.head.os=a>>8),A.flags&512&&(b[0]=a&255,b[1]=a>>>8&255,A.check=nA(A.check,b,2,0)),a=0,g=0,A.mode=mr;case mr:if(A.flags&1024){for(;g<16;){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}A.length=a,A.head&&(A.head.extra_len=a),A.flags&512&&(b[0]=a&255,b[1]=a>>>8&255,A.check=nA(A.check,b,2,0)),a=0,g=0}else A.head&&(A.head.extra=null);A.mode=kr;case kr:if(A.flags&1024&&(I=A.length,I>s&&(I=s),I&&(A.head&&(f=A.head.extra_len-A.length,A.head.extra||(A.head.extra=new Array(A.head.extra_len)),cA(A.head.extra,n,i,I,f)),A.flags&512&&(A.check=nA(A.check,n,I,i)),s-=I,i+=I,A.length-=I),A.length))break A;A.length=0,A.mode=yr;case yr:if(A.flags&2048){if(s===0)break A;I=0;do f=n[i+I++],A.head&&f&&A.length<65536&&(A.head.name+=String.fromCharCode(f));while(f&&I<s);if(A.flags&512&&(A.check=nA(A.check,n,I,i)),s-=I,i+=I,f)break A}else A.head&&(A.head.name=null);A.length=0,A.mode=Nr;case Nr:if(A.flags&4096){if(s===0)break A;I=0;do f=n[i+I++],A.head&&f&&A.length<65536&&(A.head.comment+=String.fromCharCode(f));while(f&&I<s);if(A.flags&512&&(A.check=nA(A.check,n,I,i)),s-=I,i+=I,f)break A}else A.head&&(A.head.comment=null);A.mode=br;case br:if(A.flags&512){for(;g<16;){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}if(a!==(A.check&65535)){t.msg="header crc mismatch",A.mode=Z;break}a=0,g=0}A.head&&(A.head.hcrc=A.flags>>9&1,A.head.done=!0),t.adler=A.check=0,A.mode=QA;break;case xr:for(;g<32;){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}t.adler=A.check=Hr(a),a=0,g=0,A.mode=be;case be:if(A.havedict===0)return t.next_out=o,t.avail_out=c,t.next_in=i,t.avail_in=s,A.hold=a,A.bits=g,Go;t.adler=A.check=1,A.mode=QA;case QA:if(e===Lo||e===ke)break A;case xt:if(A.last){a>>>=g&7,g-=g&7,A.mode=St;break}for(;g<3;){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}switch(A.last=a&1,a>>>=1,g-=1,a&3){case 0:A.mode=Dr;break;case 1:if(Po(A),A.mode=ye,e===ke){a>>>=2,g-=2;break A}break;case 2:A.mode=vr;break;case 3:t.msg="invalid block type",A.mode=Z}a>>>=2,g-=2;break;case Dr:for(a>>>=g&7,g-=g&7;g<32;){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}if((a&65535)!==(a>>>16^65535)){t.msg="invalid stored block lengths",A.mode=Z;break}if(A.length=a&65535,a=0,g=0,A.mode=Dt,e===ke)break A;case Dt:A.mode=Sr;case Sr:if(I=A.length,I){if(I>s&&(I=s),I>c&&(I=c),I===0)break A;cA(r,n,i,I,o),s-=I,i+=I,c-=I,o+=I,A.length-=I;break}A.mode=QA;break;case vr:for(;g<14;){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}if(A.nlen=(a&31)+257,a>>>=5,g-=5,A.ndist=(a&31)+1,a>>>=5,g-=5,A.ncode=(a&15)+4,a>>>=4,g-=4,A.nlen>286||A.ndist>30){t.msg="too many length or distance symbols",A.mode=Z;break}A.have=0,A.mode=Fr;case Fr:for(;A.have<A.ncode;){for(;g<3;){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}A.lens[U[A.have++]]=a&7,a>>>=3,g-=3}for(;A.have<19;)A.lens[U[A.have++]]=0;if(A.lencode=A.lendyn,A.lenbits=7,y={bits:A.lenbits},w=DA(Mo,A.lens,0,19,A.lencode,0,A.work,y),A.lenbits=y.bits,w){t.msg="invalid code lengths set",A.mode=Z;break}A.have=0,A.mode=Rr;case Rr:for(;A.have<A.nlen+A.ndist;){for(;d=A.lencode[a&(1<<A.lenbits)-1],p=d>>>24,u=d>>>16&255,m=d&65535,!(p<=g);){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}if(m<16)a>>>=p,g-=p,A.lens[A.have++]=m;else{if(m===16){for(R=p+2;g<R;){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}if(a>>>=p,g-=p,A.have===0){t.msg="invalid bit length repeat",A.mode=Z;break}f=A.lens[A.have-1],I=3+(a&3),a>>>=2,g-=2}else if(m===17){for(R=p+3;g<R;){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}a>>>=p,g-=p,f=0,I=3+(a&7),a>>>=3,g-=3}else{for(R=p+7;g<R;){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}a>>>=p,g-=p,f=0,I=11+(a&127),a>>>=7,g-=7}if(A.have+I>A.nlen+A.ndist){t.msg="invalid bit length repeat",A.mode=Z;break}for(;I--;)A.lens[A.have++]=f}}if(A.mode===Z)break;if(A.lens[256]===0){t.msg="invalid code -- missing end-of-block",A.mode=Z;break}if(A.lenbits=9,y={bits:A.lenbits},w=DA(Tr,A.lens,0,A.nlen,A.lencode,0,A.work,y),A.lenbits=y.bits,w){t.msg="invalid literal/lengths set",A.mode=Z;break}if(A.distbits=6,A.distcode=A.distdyn,y={bits:A.distbits},w=DA(Or,A.lens,A.nlen,A.ndist,A.distcode,0,A.work,y),A.distbits=y.bits,w){t.msg="invalid distances set",A.mode=Z;break}if(A.mode=ye,e===ke)break A;case ye:A.mode=Ne;case Ne:if(s>=6&&c>=258){t.next_out=o,t.avail_out=c,t.next_in=i,t.avail_in=s,A.hold=a,A.bits=g,Nt(t,Q),o=t.next_out,r=t.output,c=t.avail_out,i=t.next_in,n=t.input,s=t.avail_in,a=A.hold,g=A.bits,A.mode===QA&&(A.back=-1);break}for(A.back=0;d=A.lencode[a&(1<<A.lenbits)-1],p=d>>>24,u=d>>>16&255,m=d&65535,!(p<=g);){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}if(u&&(u&240)===0){for(C=p,D=u,x=m;d=A.lencode[x+((a&(1<<C+D)-1)>>C)],p=d>>>24,u=d>>>16&255,m=d&65535,!(C+p<=g);){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}a>>>=C,g-=C,A.back+=C}if(a>>>=p,g-=p,A.back+=p,A.length=m,u===0){A.mode=Gr;break}if(u&32){A.back=-1,A.mode=QA;break}if(u&64){t.msg="invalid literal/length code",A.mode=Z;break}A.extra=u&15,A.mode=_r;case _r:if(A.extra){for(R=A.extra;g<R;){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}A.length+=a&(1<<A.extra)-1,a>>>=A.extra,g-=A.extra,A.back+=A.extra}A.was=A.length,A.mode=Mr;case Mr:for(;d=A.distcode[a&(1<<A.distbits)-1],p=d>>>24,u=d>>>16&255,m=d&65535,!(p<=g);){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}if((u&240)===0){for(C=p,D=u,x=m;d=A.distcode[x+((a&(1<<C+D)-1)>>C)],p=d>>>24,u=d>>>16&255,m=d&65535,!(C+p<=g);){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}a>>>=C,g-=C,A.back+=C}if(a>>>=p,g-=p,A.back+=p,u&64){t.msg="invalid distance code",A.mode=Z;break}A.offset=m,A.extra=u&15,A.mode=Lr;case Lr:if(A.extra){for(R=A.extra;g<R;){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}A.offset+=a&(1<<A.extra)-1,a>>>=A.extra,g-=A.extra,A.back+=A.extra}if(A.offset>A.dmax){t.msg="invalid distance too far back",A.mode=Z;break}A.mode=Jr;case Jr:if(c===0)break A;if(I=Q-c,A.offset>I){if(I=A.offset-I,I>A.whave&&A.sane){t.msg="invalid distance too far back",A.mode=Z;break}I>A.wnext?(I-=A.wnext,B=A.wsize-I):B=A.wnext-I,I>A.length&&(I=A.length),E=A.window}else E=r,B=o-A.offset,I=A.length;I>c&&(I=c),c-=I,A.length-=I;do r[o++]=E[B++];while(--I);A.length===0&&(A.mode=Ne);break;case Gr:if(c===0)break A;r[o++]=A.length,c--,A.mode=Ne;break;case St:if(A.wrap){for(;g<32;){if(s===0)break A;s--,a|=n[i++]<<g,g+=8}if(Q-=c,t.total_out+=Q,A.total+=Q,Q&&(t.adler=A.check=A.flags?nA(A.check,r,Q,o-Q):ie(A.check,r,Q,o-Q)),Q=c,(A.flags?a:Hr(a))!==A.check){t.msg="incorrect data check",A.mode=Z;break}a=0,g=0}A.mode=Ur;case Ur:if(A.wrap&&A.flags){for(;g<32;){if(s===0)break A;s--,a+=n[i++]<<g,g+=8}if(a!==(A.total&4294967295)){t.msg="incorrect length check",A.mode=Z;break}a=0,g=0}A.mode=Yr;case Yr:w=Jo;break A;case Z:w=qr;break A;case _t:return Rt;case Yo:default:return rA}return t.next_out=o,t.avail_out=c,t.next_in=i,t.avail_in=s,A.hold=a,A.bits=g,(A.wsize||Q!==t.avail_out&&A.mode<Z&&(A.mode<St||e!==dr))&&zr(t,t.output,t.next_out,Q-t.avail_out)?(A.mode=_t,Rt):(l-=t.avail_in,Q-=t.avail_out,t.total_in+=l,t.total_out+=Q,A.total+=Q,A.wrap&&Q&&(t.adler=A.check=A.flags?nA(A.check,r,Q,t.next_out-Q):ie(A.check,r,Q,t.next_out-Q)),t.data_type=A.bits+(A.last?64:0)+(A.mode===QA?128:0)+(A.mode===ye||A.mode===Dt?256:0),(l===0&&Q===0||e===dr)&&w===SA&&(w=Uo),w)}function jr(t){if(!t||!t.state)return rA;var e=t.state;return e.window&&(e.window=null),t.state=null,SA}function Wr(t,e){var A;return!t||!t.state||(A=t.state,(A.wrap&2)===0)?rA:(A.head=e,e.done=!1,SA)}function Mt(t,e){var A=e.length,n,r,i;return!t||!t.state||(n=t.state,n.wrap!==0&&n.mode!==be)?rA:n.mode===be&&(r=1,r=ie(r,e,A,0),r!==n.check)?qr:(i=zr(t,e,A,A),i?(n.mode=_t,Rt):(n.havedict=1,SA))}var xe={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 Lt(){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 Jt=Object.prototype.toString,Gt=class t{constructor(e){if(!(this instanceof t))return new t(e);this.options=sr({chunkSize:16384,windowBits:0,to:""},e||{});var A=this.options;A.raw&&A.windowBits>=0&&A.windowBits<16&&(A.windowBits=-A.windowBits,A.windowBits===0&&(A.windowBits=-15)),A.windowBits>=0&&A.windowBits<16&&!(e&&e.windowBits)&&(A.windowBits+=32),A.windowBits>15&&A.windowBits<48&&(A.windowBits&15)===0&&(A.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Lt,this.strm.avail_out=0;var n=Pr(this.strm,A.windowBits);if(n!==uA)throw new Error(xe[n]);if(this.header=new yt,Wr(this.strm,this.header),A.dictionary&&(typeof A.dictionary=="string"?A.dictionary=kt(A.dictionary):Jt.call(A.dictionary)==="[object ArrayBuffer]"&&(A.dictionary=new Uint8Array(A.dictionary)),A.raw&&(n=Mt(this.strm,A.dictionary),n!==uA)))throw new Error(xe[n])}push(e,A){var n=this.strm,r=this.options.chunkSize,i=this.options.dictionary,o,s,c,a,g,l,Q=!1;if(this.ended)return!1;s=A===~~A?A:A===!0?ee:pt,typeof e=="string"?n.input=cr(e):Jt.call(e)==="[object ArrayBuffer]"?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;do{if(n.avail_out===0&&(n.output=CA(r),n.next_out=0,n.avail_out=r),o=Xr(n,pt),o===ir&&i&&(typeof i=="string"?l=kt(i):Jt.call(i)==="[object ArrayBuffer]"?l=new Uint8Array(i):l=i,o=Mt(this.strm,l)),o===or&&Q===!0&&(o=uA,Q=!1),o!==te&&o!==uA)return this.onEnd(o),this.ended=!0,!1;n.next_out&&(n.avail_out===0||o===te||n.avail_in===0&&(s===ee||s===wt))&&(this.options.to==="string"?(c=fr(n.output,n.next_out),a=n.next_out-c,g=Ir(n.output,c),n.next_out=a,n.avail_out=r-a,a&&cA(n.output,n.output,c,a,0),this.onData(g)):this.onData(we(n.output,n.next_out))),n.avail_in===0&&n.avail_out===0&&(Q=!0)}while((n.avail_in>0||n.avail_out===0)&&o!==te);return o===te&&(s=ee),s===ee?(o=jr(this.strm),this.onEnd(o),this.ended=!0,o===uA):(s===wt&&(this.onEnd(uA),n.avail_out=0),!0)}onData(e){this.chunks.push(e)}onEnd(e){e===uA&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=pe(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg}};function zo(t,e){var A=new Gt(e);if(A.push(t,!0),A.err)throw A.msg||xe[A.err];return A.result}var Vr=zo;var jo=18,Ai=8,$r=jo+Ai;function Ut(t,e,A){let n=[],r=0,i=e;for(;r+$r<=t.length&&!(t[r]!==31||t[r+1]!==139||t[r+2]!==8||t[r+3]!==4||t[r+10]!==6||t[r+12]!==66||t[r+13]!==67);){let o=(t[r+16]|t[r+17]<<8)+1;if(o<$r||r+o>t.length)break;let s=r+o-Ai,c=(t[s+4]|t[s+5]<<8|t[s+6]<<16|t[s+7]<<24)>>>0;if(c>65536||(n.push({inputOffset:r,compressedSize:o,decompressedSize:c,filePosition:i}),i>=A))break;r+=o,i+=o}return n}var wA={};wA.d=(t,e)=>{if(Array.isArray(e))for(var A=0;A<e.length;){var n=e[A++],r=e[A++];wA.o(t,n)?r===0&&A++:r===0?Object.defineProperty(t,n,{enumerable:!0,value:e[A++]}):Object.defineProperty(t,n,{enumerable:!0,get:r})}else for(var n in e)wA.o(e,n)&&!wA.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})};wA.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);wA.r=t=>{Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var Ht={};wA.r(Ht);wA.d(Ht,{ChunkSliceResult:()=>ZA,__wbg_Error_92b29b0548f8b746:()=>Vo,__wbg___wbindgen_throw_344f42d3211c4765:()=>$o,__wbg_set_wasm:()=>gi,decompress_all:()=>ni,decompress_chunk_slice:()=>ri});var Wo="data:application/wasm;base64,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AyABNgIEIAMgADYCACADQRmtQiCGIAOthDcDCEGWgcAAIANBCGogAhAwAAs8AAJAIAAoAgBBf0YNACABIAAoAgQgACgCCBBLDwsgASgCACABKAIEIAAoAgwoAgAiACgCACAAKAIEEAwLNgACQCACQX9GDQAgACACIAEoAhARBQBFDQBBAQ8LAkAgAw0AQQAPCyAAIAMgBCABKAIMEQcACzIAAkACQCABaUEBRw0AIABBgICAgHggAWtLDQAgAEUNARBpIAAgARBXIgENAQsACyABCzUBAX8CQCAARQ0AAkAgASgCACICRQ0AIAAgAhECAAsgASgCBCICRQ0AIAAgAiABKAIIEFELCysBAX8jAEEQayIBJAAgAUEYrUIghiABQQ9qrYQ3AwBBloHAACABIAAQMAALKgEBfyMAQRBrIgMkACADIAI2AgwgAyABNgIIIAMgADYCBCADQQRqEGMACy0BAX8jAEEQayIBJAAgASAAKQIANwIIIAFBCGpBwJPAACAAKAIIQQFBABAVAAssAgF/AX4jAEEQayIBJAAgACkCACECIAEgADYCDCABIAI3AgQgAUEEahBlAAsjAQF/IwBBEGsiAiQAIAIgATYCDCACIAA2AgggAkEIahBkAAslAQF/AkBBvIjAABAsIgBFDQAgAA8LQfCHwABBOkGsiMAAEDcACyAAAkAgASgCAEUNACAAQYiWwAA2AgQgACABNgIADwsACx4BAX8CQCAAKAIAIgJFDQAgASACIAAoAgQQSw8LAAsbAQF/EGkgAEEEakEEEFciASAANgIAIAFBBGoLHgEBfwJAIAAoAgAiAUEBSA0AIAAoAgQgAUEBEFELCx4AIAAoAgAgACgCBEEAKAKgnUAiAEEEIAAbEQQAAAscAQF/AkAgACgCACIBRQ0AIAAoAgQgAUEBEFELCxcAAkAgAUEJSQ0AIAEgABAODwsgABACCxUAIABBfGoiACAAKAIAQQRqQQQQUQsUAAJAIABFDQAgACABEF4ACxBUAAsRACAAIAFBAXRBAXIgAhAwAAsSAAJAIAFFDQAgACABIAIQUQsLEgAgACABIAIgAyAEQQAgBRADCxUAAkAgAEUNACAAIAAoAqhaEQIACwsaACAAQQApAsSUQDcCCCAAQQApAryUQDcCAAsaACAAQQApArSUQDcCCCAAQQApAqyUQDcCAAsW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AA2AAAAOgAAAD4AAABCAAAARgAAAEoAAABOAAAAUgAAAFYAAABaAAAAXgAAAGIAAABmAAAAagAAAG4AAAByAAAAdgAAAHoAAAB+AAAAggAAAIYAAACKAAAAjgAAAJIAAACWAAAAmgAAAJ4AAACiAAAApgAAAKoAAACuAAAAsgAAALYAAAC6AAAAvgAAAMIAAADGAAAAygAAAM4AAADSAAAA1gAAANoAAADeAAAA4gAAAOYAAADqAAAA7gAAAPIAAAD2AAAA+gAAAP4AAAECAAABBgAAAQoAAAEOAAABEgAAARYAAAEaAAABHgAAASIAAAEmAAABKgAAAS4AAAEyAAABNgAAAToAAAE+AAABQgAAAUYAAAFKAAABTgAAAVIAAAFWAAABWgAAAV4AAAFiAAABZgAAAWoAAAFuAAABcgAAAXYAAAF6AAABfgAAAYIAAAGGAAABigAAAY4AAAGSAAABlgAAAZoAAAGeAAABogAAAaYAAAGqAAABrgAAAbIAAAG2AAABugAAAb4AAAHCAAABxgAAAcoAAAHOAAAB0gAAAdYAAAHaAAAB3gAAAeIAAAHmAAAB6gAAAe4AAAHyAAAB9gAAAfoAAAH+AAACAgAAAgYAAAIKAAACDgAAAhIAAAIWAAACGgAAAh4AAAIiAAACJgAAAioAAAIuAAACMgAAAjYAAAI6AAACPgAAAkIAAAJGAAACSgAAAk4AAAJSAAACVgAAAloAAAJeAAACYgAAAmYAAAJqAAACbgAAAnIAAAJ2AAACegAAAn4AAAKCAAAChgAAAooAAAKOAAACkgAAApYAAAKaAAACngAAAqIAAAKmAAACqgAAAq4AAAKyAAACtgAAAroAAAK+AAACwgAAAsYAAALKAAACzgAAAtIAAALWAAAC2gAAAt4AAALiAAAC5gAAAuoAAALuAAAC8gAAAvYAAAL6AAAC/gAAAwIAAAMGAAADCgAAAw4AAAMSAAADFgAAAxoAAAMeAAADIgAAAyYAAAMqAAADLgAAAzIAAAM2AAADOgAAAz4AAANCAAADRgAAA0oAAANOAAADUgAAA1YAAANaAAADXgAAA2IAAANmAAADagAAA24AAANyAAADdgAAA3oAAAN+AAADggAAA4YAAAOKAAADjgAAA5IAAAOWAAADmgAAA54AAAOiAAADpgAAA6oAAAOuAAADsgAAA7YAA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",ZA=class t{static __wrap(e){let A=Object.create(t.prototype);return A.__wbg_ptr=e,ei.register(A,A.__wbg_ptr,A),A}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,ei.unregister(this),e}free(){let e=this.__destroy_into_raw();q.__wbg_chunksliceresult_free(e,0)}take_buffer(){try{let r=q.__wbindgen_add_to_stack_pointer(-16);q.chunksliceresult_take_buffer(r,this.__wbg_ptr);var e=AA().getInt32(r+0,!0),A=AA().getInt32(r+4,!0),n=ii(e,A).slice();return q.__wbindgen_export(e,A*1,1),n}finally{q.__wbindgen_add_to_stack_pointer(16)}}take_cpositions(){try{let r=q.__wbindgen_add_to_stack_pointer(-16);q.chunksliceresult_take_cpositions(r,this.__wbg_ptr);var e=AA().getInt32(r+0,!0),A=AA().getInt32(r+4,!0),n=ti(e,A).slice();return q.__wbindgen_export(e,A*8,8),n}finally{q.__wbindgen_add_to_stack_pointer(16)}}take_dpositions(){try{let r=q.__wbindgen_add_to_stack_pointer(-16);q.chunksliceresult_take_dpositions(r,this.__wbg_ptr);var e=AA().getInt32(r+0,!0),A=AA().getInt32(r+4,!0),n=ti(e,A).slice();return q.__wbindgen_export(e,A*8,8),n}finally{q.__wbindgen_add_to_stack_pointer(16)}}};Symbol.dispose&&(ZA.prototype[Symbol.dispose]=ZA.prototype.free);function ni(t){try{let o=q.__wbindgen_add_to_stack_pointer(-16),s=si(t,q.__wbindgen_export2),c=Tt;q.decompress_all(o,s,c);var e=AA().getInt32(o+0,!0),A=AA().getInt32(o+4,!0),n=AA().getInt32(o+8,!0),r=AA().getInt32(o+12,!0);if(r)throw ai(n);var i=ii(e,A).slice();return q.__wbindgen_export(e,A*1,1),i}finally{q.__wbindgen_add_to_stack_pointer(16)}}function ri(t,e,A,n,r){try{let c=q.__wbindgen_add_to_stack_pointer(-16),a=si(t,q.__wbindgen_export2),g=Tt;q.decompress_chunk_slice(c,a,g,e,A,n,r);var i=AA().getInt32(c+0,!0),o=AA().getInt32(c+4,!0),s=AA().getInt32(c+8,!0);if(s)throw ai(o);return ZA.__wrap(i)}finally{q.__wbindgen_add_to_stack_pointer(16)}}function Vo(t,e){let A=Error(oi(t,e));return As(A)}function $o(t,e){throw new Error(oi(t,e))}var ei=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(t=>q.__wbg_chunksliceresult_free(t,1));function As(t){oe===lA.length&&lA.push(lA.length+1);let e=oe;return oe=lA[e],lA[e]=t,e}function es(t){t<1028||(lA[t]=oe,oe=t)}function ti(t,e){return t=t>>>0,ts().subarray(t/8,t/8+e)}function ii(t,e){return t=t>>>0,Kt().subarray(t/1,t/1+e)}var qA=null;function AA(){return(qA===null||qA.buffer.detached===!0||qA.buffer.detached===void 0&&qA.buffer!==q.memory.buffer)&&(qA=new DataView(q.memory.buffer)),qA}var De=null;function ts(){return(De===null||De.byteLength===0)&&(De=new Float64Array(q.memory.buffer)),De}function oi(t,e){return is(t>>>0,e)}var Se=null;function Kt(){return(Se===null||Se.byteLength===0)&&(Se=new Uint8Array(q.memory.buffer)),Se}function ns(t){return lA[t]}var lA=new Array(1024).fill(void 0);lA.push(void 0,null,!0,!1);var oe=lA.length;function si(t,e){let A=e(t.length*1,1)>>>0;return Kt().set(t,A/1),Tt=t.length,A}function ai(t){let e=ns(t);return es(t),e}var Fe=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});Fe.decode();var rs=2146435072,Yt=0;function is(t,e){return Yt+=e,Yt>=rs&&(Fe=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),Fe.decode(),Yt=e),Fe.decode(Kt().subarray(t,t+e).slice())}var Tt=0,q;function gi(t){q=t}var vA=null,ve=null;async function Re(){return vA||(ve||(ve=(async()=>{let e=await(await fetch(Wo)).arrayBuffer(),{instance:A}=await WebAssembly.instantiate(e,{"./bgzf_wasm_bg.js":Ht});return vA=A.exports,gi(vA),vA})().catch(t=>{throw ve=null,t})),ve)}async function _e(t){return vA||await Re(),ni(t)}async function ci(t,e,A,n,r){vA||await Re();let i=ri(t,e,A,n,r),o=i.take_buffer(),s=i.take_cpositions(),c=i.take_dpositions();return i.free(),{buffer:o,cpositions:s,dpositions:c}}var Me=8*1024*1024;function Ot(t){let e=0;for(let A of t)e+=A.compressedSize+A.decompressedSize;return e}function os(t,e=0,A=t.length){let n=[],r=e,i=0;for(let o=e;o<A;o++){let s=t[o],c=s.compressedSize+s.decompressedSize;o>r&&i+c>Me&&(n.push([r,o]),r=o,i=0),i+=c}return r<A&&n.push([r,A]),n}function ss(t,e,A){let n=t[e],r=t[A-1];return{inputOffset:n.inputOffset,inputLength:r.inputOffset+r.compressedSize-n.inputOffset}}function qt(t,e){let A=e.at(-1);return t.subarray(0,A?A.inputOffset+A.compressedSize:65536)}var as={decompress_all:3,__wbindgen_add_to_stack_pointer:1,__wbindgen_export:3,__wbindgen_export2:2};function gs(t){return Object.entries(as).every(([A,n])=>{let r=t[A];return typeof r=="function"&&r.length===n})&&t.memory instanceof WebAssembly.Memory?t:void 0}async function cs(t,e,A){let n=gs(await Re());if(n){let i=n.__wbindgen_add_to_stack_pointer(-16);try{let o=n.__wbindgen_export2(t.length,1)>>>0;new Uint8Array(n.memory.buffer).set(t,o),n.decompress_all(i,o,t.length);let s=new DataView(n.memory.buffer);if(s.getInt32(i+12,!0)===0){let c=s.getUint32(i,!0),a=s.getUint32(i+4,!0);return e.set(new Uint8Array(n.memory.buffer,c,a),A),n.__wbindgen_export(c,a,1),a}}finally{n.__wbindgen_add_to_stack_pointer(16)}}let r=await _e(t);return e.set(r,A),r.length}function Is(t,e,A,n,r){let i=0;for(let o=A;o<n;o++){let s=e[o].decompressedSize;r[o]=t.subarray(i,i+s),i+=s}}async function Zt(t,e){let A=0;for(let i of e)A+=i.decompressedSize;let n=new Uint8Array(A),r=0;for(let[i,o]of os(e)){let{inputOffset:s,inputLength:c}=ss(e,i,o);r+=await cs(t.subarray(s,s+c),n,r)}return n}async function Ii(t,e){let A=new Array(e.length);return Is(await Zt(t,e),e,0,e.length,A),{blocks:A}}var fs=26;function Ci(t){return t[0]===31&&t[1]===139}function Cs(t){return t.length>=fs&&Ci(t)&&t[2]===8&&t[3]===4&&t[10]===6&&t[12]===66&&t[13]===67}function Qi(t){return t instanceof Error?t.message:`${t}`}async function fi(t){if(typeof DecompressionStream<"u"){let e=new Blob([t]).stream().pipeThrough(new DecompressionStream("gzip"));return new Uint8Array(await new Response(e).arrayBuffer())}else return Vr(t,void 0)}function li(t){return Qi(t).includes("invalid gzip header")?new Error("problem decompressing block: incorrect gzip header check",{cause:t}):t}async function se(t){if(t.length===0)return new Uint8Array(0);if(!Cs(t)){if(Ci(t))return fi(t);throw new Error("problem decompressing block: not a valid bgzf or gzip block")}let e=Ut(t,0,1/0);try{return Ot(e)>Me?await Zt(t,e):await _e(qt(t,e))}catch(A){if(Qi(A).includes("invalid bgzf header"))return fi(t);throw li(A)}}function Qs(t,e,A,n){let r=[],i=[],o=[],s=A.dataPosition;for(let c=0;c<t.length;c++){let a=t[c],g=e[c],l=g.filePosition>=n.blockPosition;r.push(g.filePosition),i.push(s);let Q=c===0?A.dataPosition:0,I=l?Math.min(n.dataPosition+1,a.length):a.length;if(Q<I&&o.push(a.subarray(Q,I)),s+=Math.max(0,a.length-Q),l){r.push(g.filePosition+g.compressedSize),i.push(s);break}}return{slices:o,cpositions:Float64Array.from(r),dpositions:Float64Array.from(i)}}function ls(t){let e=[],A;for(let n of t)A?.buffer===n.buffer&&A.byteOffset+A.length===n.byteOffset?A=new Uint8Array(A.buffer,A.byteOffset,A.length+n.length):(A&&e.push(A),A=n);return A&&e.push(A),e}async function Pt(t,e,A){let{minv:n,maxv:r}=e,i=Ut(t,n.blockPosition,r.blockPosition),o=await Es(t,i,A);if(o){let{slices:g,cpositions:l,dpositions:Q}=Qs(o,i,n,r);return{segments:ls(g),cpositions:l,dpositions:Q}}let{buffer:s,cpositions:c,dpositions:a}=await ds(t,i,e);return{segments:[s],cpositions:c,dpositions:a}}var Bi=4e5;function Bs(t){let e=0;for(let A of t)e+=A.decompressedSize;return e}async function Es(t,e,A){if(A&&Bs(e)>=Bi)return(await A.decompressBlocks(t,e)).blocks;if(Ot(e)>Me)return(await Ii(t,e)).blocks}async function ds(t,e,{minv:A,maxv:n}){try{let r=await ci(qt(t,e),A.blockPosition,A.dataPosition,n.blockPosition,n.dataPosition);return{buffer:r.buffer,cpositions:r.cpositions,dpositions:r.dpositions}}catch(r){throw li(r)}}function FA(t){if(t?.aborted)throw zt(t)}function zt(t){let e=t.reason;return e===void 0?new DOMException("This operation was aborted","AbortError"):e}function Ei(t){return typeof t?.addEventListener=="function"}var mA=class{entries=new Map;total=0;settledCount=0;limit;shared;fill;sizeOf;toCacheKey;idleTimeoutMs;sweepTimer;constructor({fill:e,maxSize:A=1/0,sizeOf:n=()=>1,cacheKey:r=s=>String(s),idleTimeoutMs:i=0,budget:o}={}){this.fill=e,this.limit=A,this.shared=o&&{budget:o,membership:o.register(this)},this.sizeOf=n,this.toCacheKey=r,this.idleTimeoutMs=i>0&&Number.isFinite(i)?i:void 0}get size(){return this.entries.size}get totalSize(){return this.total}get maxSize(){return this.limit}set maxSize(e){this.limit=e,this.evict()}waiterCount(e){return this.entries.get(this.toCacheKey(e))?.pending?.signals.size??0}async get(e,A,n){FA(A);let r=this.toCacheKey(e),i=this.entries.get(r);i&&this.isDoomed(i)&&(this.release(r),i=void 0),i?this.touch(r,i):i=this.start(r,e,n),i.pending&&this.join(i.pending,A);try{return await this.settleFor(i,A)}finally{FA(A)}}settleFor(e,A){if(!e.pending||!Ei(A))return e.promise;let n,r=new Promise((o,s)=>{n=s}),i=()=>{n(zt(A))};return A.addEventListener("abort",i,{once:!0}),Promise.race([e.promise,r]).finally(()=>{A.removeEventListener("abort",i)})}getIfCached(e){let A=this.toCacheKey(e),n=this.entries.get(A);if(n){if(this.isDoomed(n)){this.release(A);return}return this.touch(A,n),n.promise}}has(e){let A=this.entries.get(this.toCacheKey(e));return A!==void 0&&!this.isDoomed(A)}delete(e){this.release(this.toCacheKey(e))}clear(){this.entries.clear(),this.shared?.budget.charge(this.shared.membership,-this.total),this.total=0,this.settledCount=0,this.stopSweep()}touch(e,A){this.entries.delete(e),this.entries.set(e,A),A.lastTouched=Date.now(),A.seq=this.stamp()}stamp(){return this.shared?.budget.nextSeq()??0}isDoomed(e){return e.pending?.controller.signal.aborted===!0}sweepIdle(){let e=this.idleTimeoutMs;if(e===void 0)return;let A=Date.now()-e;for(let[n,r]of this.entries)!r.pending&&r.lastTouched<=A&&this.release(n);this.settledCount===0&&this.stopSweep()}startSweep(){let e=this.idleTimeoutMs;if(e===void 0||this.sweepTimer!==void 0)return;let A=Math.min(2**31-1,Math.max(1e3,Math.floor(e/4))),n=new WeakRef(this),r=setInterval(()=>{let i=n.deref();i?i.sweepIdle():clearInterval(r)},A);this.sweepTimer=r,r.unref?.()}stopSweep(){this.sweepTimer!==void 0&&(clearInterval(this.sweepTimer),this.sweepTimer=void 0)}start(e,A,n){let r=n??(this.fill&&(a=>this.fill(A,a)));if(!r)throw new Error("SharedReadCache needs a fill, either on the cache or on the get() call");let i={signals:new Map,pinned:!1,controller:new AbortController},o={promise:Promise.resolve(r(i.controller.signal)),pending:i,size:0,lastTouched:Date.now(),seq:this.stamp()};this.entries.set(e,o);let s=()=>this.entries.get(e)===o,c=()=>{for(let[a,g]of i.signals)a.removeEventListener("abort",g);o.pending=void 0};return o.promise.then(a=>{let g=s()?this.weigh(a):void 0,l=s();c(),l&&(g===void 0?this.entries.delete(e):(o.lastTouched=Date.now(),o.size=g,this.settledCount++,this.total+=g,this.shared?.budget.charge(this.shared.membership,g),this.startSweep())),this.evict(),this.shared?.budget.evict()},()=>{s()&&this.release(e),c()}),o}weigh(e){try{let A=this.sizeOf(e);return Number.isFinite(A)&&A>=0?A:void 0}catch{return}}join(e,A){if(!Ei(A))e.pinned=!0;else if(!A.aborted&&!e.signals.has(A)){let n=()=>{e.signals.delete(A),!e.pinned&&e.signals.size===0&&e.controller.abort(A.reason)};e.signals.set(A,n),A.addEventListener("abort",n,{once:!0})}}release(e){let A=this.entries.get(e);A&&(this.entries.delete(e),A.pending||this.settledCount--,this.total-=A.size,this.shared?.budget.charge(this.shared.membership,-A.size))}lruSpare(e=!1){if(!(this.settledCount<=(e?0:1))){for(let[A,n]of this.entries)if(!n.pending)return{cacheKey:A,seq:n.seq,last:this.settledCount===1}}}evict(){if(!(this.total<=this.limit))for(let[e,A]of this.entries){if(this.total<=this.limit||this.settledCount<=1)break;A.pending||this.release(e)}}};async function Le(t){return t.bytes?t.bytes():new Uint8Array(await t.arrayBuffer())}async function di(t,e,A){if(e==="utf8"||e==="utf-8")return t.text();if(e)throw new Error(`unsupported encoding: ${e}`);return A&&"body"in t?Xt(t,A):Le(t)}function hi(t){return typeof t=="string"?{encoding:t,opts:{}}:{encoding:t?.encoding,opts:t??{}}}function ui(t){let e=/\/(\d+)$/.exec(t??"")?.[1];return e===void 0?void 0:parseInt(e,10)}function hs(t){let e=t.headers.get("content-length"),A=e===null?Number.NaN:Number(e);return Number.isSafeInteger(A)&&A>=0?A:void 0}var us=50;async function Xt(t,e){let A=hs(t),n=t.body;if(!n||A===void 0){let c=await Le(t);return e(c.byteLength,A??c.byteLength),c}let r=n.getReader(),i=new Uint8Array(A),o=0,s=Date.now();e(0,A);for(let c=await r.read();!c.done;c=await r.read()){if(o+c.value.byteLength>i.length){let g=new Uint8Array(Math.max(o+c.value.byteLength,i.length*2));g.set(i.subarray(0,o)),i=g}i.set(c.value,o),o+=c.value.byteLength;let a=Date.now();a-s>=us&&(s=a,e(o,A))}return e(o,A),o===i.length?i:i.slice(0,o)}function ps(...t){let e=new Map;for(let A of t)for(let[n,r]of Object.entries(A??{}))e.set(n.toLowerCase(),[n,r]);return Object.fromEntries(e.values())}function jt(t){let e=t.body;typeof e?.cancel=="function"&&e.cancel().catch(()=>{})}function pi(t){return Number.isSafeInteger(t)&&t>=0}function ws(t){return typeof t=="object"&&t!==null&&"name"in t&&t.name==="TypeError"}function ms(t){return(typeof t=="object"&&t!==null&&"message"in t&&typeof t.message=="string"?t.message:`${t}`).replace(/\.$/,"")}var BA=class{url;get source(){return this.url}_stat;statProbe;fetchImplementation;baseHeaders;baseOverrides;baseSignal;constructor(e,A={}){this.url=e,this.baseHeaders=A.headers??{},this.baseOverrides=A.overrides??{},this.baseSignal=A.signal,this.fetchImplementation=A.fetch??globalThis.fetch.bind(globalThis)}buildRequest(e,A){let n=e.signal??this.baseSignal;return{method:"GET",redirect:"follow",mode:"cors",...this.baseOverrides,...e.overrides,headers:ps(this.baseHeaders,e.headers,A),...n?{signal:n}:{}}}async fetch(e,A){let n=i=>ws(i)&&!A?.signal?.aborted?new Error(`${ms(i)} fetching ${e}`,{cause:i}):i,r;try{r=await this.fetchImplementation(e,A)}catch(i){if(`${i}`.includes("Failed to fetch")){console.warn(`generic-filehandle: refetching ${e} to attempt to work around chrome CORS header caching bug`);try{r=await this.fetchImplementation(e,{...A,cache:"reload"})}catch(o){throw n(o)}}else throw n(i)}return r}async read(e,A,n={}){if(!pi(e)||!pi(A))throw new TypeError(`read() called with an invalid length or position (length=${e}, position=${A}). The index file may be corrupt.`);return e===0?new Uint8Array(0):this.fetchBytes(e,A,n)}async fetchBytes(e,A,n){let r=await this.fetch(this.url,this.buildRequest(n,{range:`bytes=${A}-${A+e-1}`}));if(r.status===416)return jt(r),new Uint8Array(0);if(this.checkOk(r),r.status===200&&A===0||r.status===206){let i=ui(r.headers.get("content-range"));i!==void 0&&(this._stat={size:i});let o=n.onProgress?await Xt(r,n.onProgress):await Le(r);return!this._stat&&r.status===200&&(this._stat={size:o.byteLength}),o.byteLength<=e?o:o.slice(0,e)}throw jt(r),new Error(r.status===200?`${this.url} fetch returned status 200, expected 206`:`HTTP ${r.status} fetching ${this.url}`)}checkOk(e){if(!e.ok)throw jt(e),new Error(`HTTP ${e.status} fetching ${this.url}`)}async readFile(e){let{encoding:A,opts:n}=hi(e),r=await this.fetch(this.url,this.buildRequest(n));this.checkOk(r);let i=await this.readFileBody(r,A,n.onProgress);return r.status===200&&typeof i!="string"&&(this._stat={size:i.byteLength}),i}readFileBody(e,A,n){return di(e,A,n)}async stat(){return this._stat||(this.statProbe??=this.read(10,0).finally(()=>{this.statProbe=void 0}),await this.statProbe),this._stat??{size:0}}close(){return Promise.resolve()}};var RA=class{source;constructor(e,A={}){this.source=e}unimplemented(){return Promise.reject(new Error(`LocalFile is unimplemented in the browser (${this.source})`))}readFile(e){return this.unimplemented()}read(e,A,n){return this.unimplemented()}stat(){return this.unimplemented()}close(){return this.unimplemented()}};var iA=class{minv;maxv;bin;endPosition;constructor(e,A,n,r=A.blockPosition+65536){this.minv=e,this.maxv=A,this.bin=n,this.endPosition=r}toString(){return`${this.minv.toString()}..${this.maxv.toString()} (bin ${this.bin}, fetchedSize ${this.fetchedSize()})`}fetchedSize(){return this.endPosition-this.minv.blockPosition}};function Wt(t,e){if(!(e>0))throw new TypeError(`\`${t}\` must be a number greater than 0`)}var ae=class{#A=new Map;#e=new Map;#t;#r;#i;constructor(e){let A=e.maxAge??Number.POSITIVE_INFINITY;Wt("maxSize",e.maxSize),Wt("maxAge",A),this.#t=e.maxSize,this.#r=A,this.#i=e.onEviction}#o(e){let A=this.#i;if(A)for(let[n,r]of e)A(n,r.value)}#n(e,A){return A.expiry!==void 0&&A.expiry<=Date.now()?(this.#i?.(e,A.value),this.delete(e),!0):!1}#a(e,A){return this.#n(e,A)?void 0:A.value}#g(e,A){if(this.#e.delete(e),this.#A.set(e,A),this.#A.size>=this.#t){let n=this.#e;this.#e=this.#A,this.#A=new Map,this.#o(n)}}#c(e){this.#e=new Map(e),this.#A=new Map}*#s(){for(let e of[this.#e,this.#A])for(let A of e)this.#n(...A)||(yield A)}get(e){let A=this.#A.get(e);if(A)return this.#a(e,A);let n=this.#e.get(e);if(n&&!this.#n(e,n))return this.#g(e,n),n.value}set(e,A,{maxAge:n=this.#r}={}){let r={value:A,expiry:n===Number.POSITIVE_INFINITY?void 0:Date.now()+n};return this.#A.has(e)?this.#A.set(e,r):this.#g(e,r),this}has(e){let A=this.#A.get(e)??this.#e.get(e);return A!==void 0&&!this.#n(e,A)}peek(e){let A=this.#A.get(e)??this.#e.get(e);return A?this.#a(e,A):void 0}expiresIn(e){let A=this.#A.get(e)??this.#e.get(e);if(A)return A.expiry===void 0?Number.POSITIVE_INFINITY:A.expiry-Date.now()}delete(e){return this.#A.delete(e)||this.#e.delete(e)}clear(){this.#A.clear(),this.#e.clear()}resize(e){Wt("maxSize",e);let A=[...this.#s()],n=A.length-e;n<0?(this.#A=new Map(A),this.#e=new Map):(this.#o(A.slice(0,n)),this.#c(A.slice(n))),this.#t=e}evict(e=1){if(!(e>0))return;let A=[...this.#s()],n=Math.trunc(Math.min(e,A.length-1));n>0&&(this.#o(A.slice(0,n)),this.#c(A.slice(n)))}get size(){return Math.min(this.#A.size+this.#e.size,this.#t)}get maxSize(){return this.#t}get maxAge(){return this.#r}*entriesAscending(){for(let[e,A]of this.#s())yield[e,A.value]}*entriesDescending(){for(let e of[this.#A,this.#e])for(let[A,n]of[...e].reverse())this.#n(A,n)||(yield[A,n.value])}entries(){return this.entriesAscending()}[Symbol.iterator](){return this.entriesAscending()}*keys(){for(let[e]of this)yield e}*values(){for(let[,e]of this)yield e}forEach(e,A=this){for(let[n,r]of this)e.call(A,r,n,this)}get[Symbol.toStringTag](){return"QuickLRU"}toString(){return`QuickLRU(${this.size}/${this.maxSize})`}[Symbol.for("nodejs.util.inspect.custom")](){return this.toString()}};function wi(t,e=0){let A=t[e]|t[e+1]<<8|t[e+2]<<16|t[e+3]<<24;return((t[e+4]|t[e+5]<<8|t[e+6]<<16|t[e+7]<<24)>>>0)*4294967296+(A>>>0)}var PA=class{blockPosition;dataPosition;constructor(e,A){this.blockPosition=e,this.dataPosition=A}toString(){return`${this.blockPosition}:${this.dataPosition}`}compareTo(e){return this.blockPosition-e.blockPosition||this.dataPosition-e.dataPosition}};function kA(t,e=0){return new PA(t[e+7]*1099511627776+t[e+6]*4294967296+t[e+5]*16777216+t[e+4]*65536+t[e+3]*256+t[e+2],t[e+1]<<8|t[e])}function Je(t,e){let A=t.length;if(A===0)return t;let n;if(e){let s=e.blockPosition,c=e.dataPosition;n=[];for(let a=0;a<A;a++){let g=t[a];(g.maxv.blockPosition-s||g.maxv.dataPosition-c)>0&&n.push(g)}if(n.length===0)return n}else n=t;n.sort((s,c)=>{let a=s.minv.blockPosition-c.minv.blockPosition;return a===0?s.minv.dataPosition-c.minv.dataPosition:a});let r=[n[0]],i=n[0].minv.blockPosition,o=n[0].maxv.blockPosition;for(let s=1;s<n.length;s++){let c=n[s],a=c.minv.blockPosition,g=c.maxv.blockPosition;if(a-o<65e3&&g-i<5e6){let l=r.at(-1);(g-o||c.maxv.dataPosition-l.maxv.dataPosition)>0&&(r[r.length-1]=new iA(l.minv,c.maxv,l.bin,c.endPosition),o=g)}else r.push(c),i=a,o=g}return ks(r)}function ks(t){let e=[t[0]];for(let A=1;A<t.length;A++){let n=t[A],r=e.at(-1).maxv;if((n.minv.blockPosition-r.blockPosition||n.minv.dataPosition-r.dataPosition)>=0){e.push(n);continue}(n.maxv.blockPosition-r.blockPosition||n.maxv.dataPosition-r.dataPosition)>0&&e.push(new iA(r,n.maxv,n.bin,n.endPosition))}return e}function Ge(t,e=[]){let A=[...e];for(let n of t)A.push(n.minv.blockPosition,n.maxv.blockPosition);A.sort((n,r)=>n-r);for(let n of t){let r=n.maxv.blockPosition,i=0,o=A.length;for(;i<o;){let s=i+o>>>1;A[s]>r?o=s:i=s+1}i<A.length&&(n.endPosition=Math.min(n.endPosition,A[i]))}}function Ue(t,e,A,n){let r=n?n.blockPosition:1/0,i=n?n.dataPosition:0,o=!1;for(let s=0;s<A;s++){let c=e+s*8,a=t[c+7]*1099511627776+t[c+6]*4294967296+t[c+5]*16777216+t[c+4]*65536+t[c+3]*256+t[c+2],g=t[c+1]<<8|t[c];(a<r||a===r&&g<i)&&(r=a,i=g,o=!0)}return o?new PA(r,i):n}function ys(t){let e=new TextDecoder("utf-8"),A=[],n={},r=0,i=0;for(;i<t.length;){let o=t.indexOf(0,i);if(o===-1)break;if(o>i){let s=e.decode(t.subarray(i,o));A[r]=s,n[s]=r}i=o+1,r++}return{refNameToId:n,refIdToName:A}}var Ns={0:"generic",1:"SAM",2:"VCF",3:"GAF"};function Ye(t,e){let A=new DataView(t.buffer,t.byteOffset,t.byteLength),n=A.getInt32(e,!0),r=n&65536?"zero-based-half-open":"1-based-closed",i=Ns[n&15];if(!i)throw new Error(`invalid Tabix preset format flags ${n}`);let o={ref:A.getInt32(e+4,!0),start:A.getInt32(e+8,!0),end:A.getInt32(e+12,!0)},s=A.getInt32(e+16,!0),c=s?String.fromCharCode(s):void 0,a=A.getInt32(e+20,!0),g=A.getInt32(e+24,!0),{refIdToName:l,refNameToId:Q}=ys(t.subarray(e+28,e+28+g));return{refIdToName:l,refNameToId:Q,skipLines:a,metaChar:c,columnNumbers:o,format:i,coordinateType:r}}function He(t,e){return{lineCount:wi(t,e)}}function Ke(t,e=5){let A=new ae({maxSize:e});return n=>{let r=A.get(n);if(r!==void 0)return r;let i=t(n);return i!==void 0&&A.set(n,i),i}}function mi(t){let e=0;for(let r of t)e+=r.length;let A=new Uint8Array(e),n=0;for(let r of t)A.set(r,n),n+=r.length;return A}var ki=10;function Vt(t,e){let A=0,n,r=0;for(let i of t){let o=0;if(n){let a=i.indexOf(ki);if(a===-1){n=mi([n,i]),A+=i.length;continue}if(e(mi([n,i.subarray(0,a+1)]),r))return!0;o=a+1,n=void 0}let s=i.lastIndexOf(ki);if(s>=o&&e(i.subarray(o,s+1),A+o))return!0;let c=Math.max(o,s+1);c<i.length&&(n=i.slice(c),r=A+c),A+=i.length}return!1}function bs(t,e,A,n){if(e>2**(A+n*3))return;let r=(8**(n+1)-1)/7,i=(8**n-1)/7+Math.floor((e-1)/2**A)+1;for(i>=r&&(i=0);;){for(;i%8===1;)i=(i-1)/8;if(i===0)return;let o=t[i];if(o?.length){let s=o[0].minv;for(let c=1;c<o.length;c++){let a=o[c].minv;a.compareTo(s)<0&&(s=a)}return s}i++}}function yi(t,e){return t.format==="GAF"?0:t.refNameToId[e]}var _A=class{filehandle;parseCache=new mA({});constructor({filehandle:e}){this.filehandle=e}async readIndexBytes(e){let A=await this.filehandle.readFile({signal:e.signal,onProgress:e.onProgress}),n=await se(A);return{bytes:n,dataView:new DataView(n.buffer,n.byteOffset,n.byteLength)}}async lineCount(e,A={}){let n=await this.parse(A),r=yi(n,e);return r===void 0?-1:n.indices(r)?.stats?.lineCount??-1}async getMetadata(e={}){let{indices:A,...n}=await this.parse(e);return n}async blocksForRange(e,A,n,r={}){let i=await this.parse(r),o=yi(i,e);if(o===void 0)return[];let s=i.indices(o);if(!s)return[];i.format==="GAF"&&(A=Math.max(A-1,0));let c=[];for(let[B,E]of this.reg2bins(A,n,i))for(let d=B;d<=E;d++){let p=s.binIndex[d];if(p)for(let u of p)c.push(u)}let a=this.lowestOffset(s,A,i),g=Je(c,a),l=bs(s.binIndex,n,i.minShift,i.depth);if(l){let B=g.length;for(;B>0&&g[B-1].minv.compareTo(l)>=0;)B--;g.length=B}let Q=2**(i.minShift+3),I=a&&this.lowestOffset(s,Math.floor(A/Q)*Q,i);I&&a&&I.compareTo(a)>0&&(I=a);for(let B=0;I&&B<g.length&&g[B].minv.compareTo(I)<0;B++){let E=g[B];g[B]=new iA(I,E.maxv,E.bin,E.endPosition)}return g}parse(e={}){return this.parseCache.get("index",e.signal,A=>this._parse({...e,signal:A}))}async hasRefSeq(e,A={}){return!!(await this.parse(A)).indices(e)?.binIndex}};var xs=21582659,Ds=38359875;function Ni(t,e){return t*2**e}function $t(t,e){return Math.floor(t/2**e)}var MA=class extends _A{async _parse(e={}){let{bytes:A,dataView:n}=await this.readIndexBytes(e),r=n.getUint32(0,!0),i;if(r===xs)i=1;else if(r===Ds)i=2;else throw new Error(`Not a CSI file (magic=${r})`);let o=n.getInt32(4,!0),s=n.getInt32(8,!0),c=(8**(s+1)-1)/7,a=2**(o+s*3),g=n.getInt32(12,!0),l=g>=28&&(n.getInt32(16,!0)&15)===3;if(g<30&&!l)throw new Error("CSI index has no tabix header, so it names no references; it may be a BAM or BCF index");let Q=Ye(A,16),I=n.getInt32(16+g,!0),B=16+g+4,E,d=[];for(let u=0;u<I;u++){d.push(B);let m=n.getInt32(B,!0);B+=4;for(let C=0;C<m;C++){let D=n.getUint32(B,!0);if(B+=4,D>c)B+=44;else{E=Ue(A,B,1,E),B+=8;let x=n.getInt32(B,!0);B+=4+16*x}}}function p(u){let m=d[u];if(m===void 0)return;let C=m,D=n.getInt32(C,!0);C+=4;let x={},f={},w;for(let b=0;b<D;b++){let y=n.getUint32(C,!0);if(C+=4,y>c)w=He(A,C+28),C+=44;else{f[y]=kA(A,C),C+=8;let R=n.getInt32(C,!0);C+=4;let U=Array.from({length:R});for(let h=0;h<R;h++)U[h]=new iA(kA(A,C),kA(A,C+8),y),C+=16;x[y]=U}}return Ge(Object.values(x).flat()),{binIndex:x,loffsets:f,stats:w}}return{...Q,csi:!0,refCount:I,maxBlockSize:65536,firstDataLine:E,csiVersion:i,indices:Ke(p),minShift:o,depth:s,maxBinNumber:c,maxRefLength:a}}lowestOffset(e,A,{minShift:n,depth:r}){let{loffsets:i}=e,o;if(i){let s=(Ni(1,3*r)-1)/7+$t(Math.max(A,0),n);for(;o===void 0&&s>0;)if(o=i[s],o===void 0){let c=Math.floor((s-1)/8),a=c*8+1;s=s>a?s-1:c}o??=i[0]}return o}reg2bins(e,A,{minShift:n,depth:r,maxBinNumber:i}){e=Math.max(e,0);let o=2**(n+r*3);A>o&&(A=o),A-=1;let s=0,c=0,a=n+r*3,g=[];for(;s<=r;a-=3,c+=Ni(1,s*3),s+=1){let l=c+$t(e,a),Q=c+$t(A,a);if(Q-l+g.length>i)throw new Error(`query ${e}-${A} is too large for current binning scheme (shift ${n}, depth ${r}), try a smaller query or a coarser index binning scheme`);g.push([l,Q])}return g}};var Ss=21578324,An=5,en=14,Te=2**(en+An*3);function bi(t){return Math.min(Math.max(t,0),Te)}var EA=class extends _A{reg2bins(e,A){e>Te&&console.warn("querying outside of possible tabix range");let n=bi(e),r=Math.min(A,Te)-1,i=[];return n<=r&&i.push([0,0],[1+(n>>26),1+(r>>26)],[9+(n>>23),9+(r>>23)],[73+(n>>20),73+(r>>20)],[585+(n>>17),585+(r>>17)],[4681+(n>>14),4681+(r>>14)]),i}lowestOffset(e,A){let n=e.linearIndex;return n?.[Math.min(bi(A)>>en,n.length-1)]}async _parse(e={}){let{bytes:A,dataView:n}=await this.readIndexBytes(e);if(n.getUint32(0,!0)!==Ss)throw new Error("Not a TBI file");let r=n.getUint32(4,!0),i=((1<<(An+1)*3)-1)/7,{refNameToId:o,refIdToName:s,coordinateType:c,format:a,columnNumbers:g,metaChar:l,skipLines:Q}=Ye(A,8),B=36+n.getInt32(32,!0),E,d=[];for(let u=0;u<r;u++){d.push(B);let m=n.getInt32(B,!0);B+=4;for(let D=0;D<m;D++){let x=n.getUint32(B,!0);B+=4;let f=n.getInt32(B,!0);if(B+=4,x>i+1)throw new Error("tabix index contains too many bins, please use a CSI index");if(x<=i)for(let w=0;w<f;w++)E=Ue(A,B+16*w,1,E);B+=16*f}let C=n.getInt32(B,!0);B+=4+8*C}function p(u){let m=d[u];if(m===void 0)return;let C=m,D=n.getInt32(C,!0);C+=4;let x={},f;for(let y=0;y<D;y++){let R=n.getUint32(C,!0);if(C+=4,R>i+1)throw new Error("tabix index contains too many bins, please use a CSI index");if(R===i+1){let U=n.getInt32(C,!0);C+=4,U===2&&(f=He(A,C+16)),C+=16*U}else{let U=n.getInt32(C,!0);C+=4;let h=Array.from({length:U});for(let k=0;k<U;k++)h[k]=new iA(kA(A,C),kA(A,C+8),R),C+=16;x[R]=h}}let w=n.getInt32(C,!0);C+=4;let b=Array.from({length:w});for(let y=0;y<w;y++)b[y]=kA(A,C),C+=8;return Ge(Object.values(x).flat(),b.map(y=>y.blockPosition)),{binIndex:x,linearIndex:b,stats:f}}return{indices:Ke(p),metaChar:l,minShift:en,depth:An,maxBinNumber:i,maxRefLength:Te,skipLines:Q,firstDataLine:E,columnNumbers:g,coordinateType:c,format:a,refIdToName:s,refNameToId:o,maxBlockSize:65536}}};var tn=9,qe=10,Si=13,vs=59,Fs=60,Rs=62,_s=6,Ms=1024*2**20,Ls=180*1e3;function Js(t,e,A){if(t)return t;if(e)return new RA(e);if(A)return new BA(A);throw new TypeError("must provide either filehandle, path, or url")}function Gs({tbiFilehandle:t,csiFilehandle:e,tbiPath:A,csiPath:n,tbiUrl:r,csiUrl:i,path:o,url:s}){if(t)return new EA({filehandle:t});if(e)return new MA({filehandle:e});if(A)return new EA({filehandle:new RA(A)});if(n)return new MA({filehandle:new RA(n)});if(i)return new MA({filehandle:new BA(i)});if(r)return new EA({filehandle:new BA(r)});if(o)return new EA({filehandle:new RA(`${o}.tbi`)});if(s)return new EA({filehandle:new BA(`${s}.tbi`)});throw new TypeError("must provide one of tbiFilehandle, tbiPath, csiFilehandle, csiPath, tbiUrl, csiUrl")}function vi(t,e,A,n,r){return t[A]*256+(n-e[A])+r+1}function Us(t,e,A,n,r,i,o){let s=n-A,c=e+s,a=0;if(t[r]===46)return c;let g=r;for(let l=r;l<=i;l++)if(l===i||t[l]===vs){let Q=l-g;if(Q>=10&&t[g]===83&&t[g+1]===86&&t[g+2]===84&&t[g+3]===89&&t[g+4]===80&&t[g+5]===69&&t[g+6]===61&&t[g+7]===84&&t[g+8]===82&&t[g+9]===65)return e+1;if(Q>=4&&t[g]===69&&t[g+1]===78&&t[g+2]===68&&t[g+3]===61){let I=Oe(t,g+4,l);I>e&&(c=I)}else Q>=6&&t[g]===83&&t[g+1]===86&&t[g+2]===76&&t[g+3]===69&&t[g+4]===78&&t[g+5]===61&&(a=Hs(t,g+6,l,n+1,o));g=l+1}return Math.max(c,e+a)}var xi=44;function Ys(t,e,A){if(A-e<5||t[e]!==60||t[A-1]!==62)return!1;let n=t[e+4];if(n!==62&&n!==58)return!1;let r=t[e+1],i=t[e+2],o=t[e+3];return r===67&&i===78&&o===86||r===68&&i===69&&o===76||r===68&&i===85&&o===80||r===73&&i===78&&o===86}function Hs(t,e,A,n,r){let i=0,o=e,s=n;for(;o<A&&s<r;){let c=t.indexOf(xi,o);(c===-1||c>A)&&(c=A);let a=t.indexOf(xi,s);if((a===-1||a>r)&&(a=r),Ys(t,s,a)){let g=Oe(t,t[o]===45?o+1:o,c);g>i&&(i=g)}o=c+1,s=a+1}return i}var Fi=new TextDecoder;function Di(t,e){let A=-1,n=e.charCodeAt(0);for(let r=0,i=t.length;r<i;r++){let o=t[r];if(r===A+1&&o!==n)break;o===qe&&(A=r)}return t.subarray(0,A+1)}function Ks(t,e){let A=0;for(let n=0;n<e;n++){let r=t.indexOf(qe,A);if(r===-1){A=t.length;break}A=r+1}return Fi.decode(t.subarray(0,A)).split(/\r?\n/).slice(0,e)}function Oe(t,e,A){let n=0;for(let r=e;r<A;r++){let i=t[r];if(i>=48&&i<=57)n=n*10+(i-48);else break}return n}function Ts(t,e,A,n,r,{start:i,end:o,pathCol:s,metaCharCode:c,decoder:a,callback:g}){let l=0,Q=0;for(;l<t.length;){let I=t.indexOf(qe,l);if(I===-1)break;let B=l;l=I+1;let E=B+e+r;for(;Q<n.length&&E>=n[Q];)Q++;if(t[B]===c)continue;let d=B;for(let x=1;x<s;x++){let f=t.indexOf(tn,d);if(f===-1||f>=I){d=I;break}d=f+1}let p=t[d];if(p!==Rs&&p!==Fs)continue;let u=t.indexOf(tn,d);(u===-1||u>I)&&(u=I);let m=1/0,C=-1,D=d;for(;D<u;){let x=0,f=D+1;for(;f<u;f++){let w=t[f]-48;if(w<0||w>9)break;x=x*10+w}x<m&&(m=x),x>C&&(C=x),D=f}if(m>=o)return!0;if(C>=i){let x=t[I-1]===Si?I-1:I;g(a.decode(t.subarray(B,x)),vi(A,n,Q,B+e,r),m,C+1)}}return!1}var zA=class{filehandle;index;chunkCache;requested=new Map;headerCache=new mA({});bgzfWorkerPool;constructor({path:e,filehandle:A,url:n,tbiPath:r,tbiUrl:i,tbiFilehandle:o,csiPath:s,csiUrl:c,csiFilehandle:a,chunkCacheSize:g=Ms,chunkCacheIdleTimeoutMs:l=Ls,chunkCacheBudget:Q,bgzfWorkerPool:I}){this.bgzfWorkerPool=I,this.filehandle=Js(A,e,n),this.index=Gs({tbiFilehandle:o,csiFilehandle:a,tbiPath:r,csiPath:s,tbiUrl:i,csiUrl:c,path:e,url:n}),this.chunkCache=new mA({maxSize:g,sizeOf:B=>{let E=0;for(let d of B.segments)E+=d.byteLength;return E},cacheKey:B=>B.toString(),idleTimeoutMs:l,budget:Q,fill:(B,E)=>this.readChunk(B,{signal:E})})}clearChunkCache(){this.chunkCache.clear(),this.requested.clear()}withCachedContainers(e){let A=[];for(let n=0;n<e.length;n++){let r=e[n],i=A[A.length-1],o=e[n+1],s;if(!this.chunkCache.has(r))for(let[c,a]of this.requested)this.chunkCache.has(a)?a.minv.compareTo(r.minv)<=0&&a.maxv.compareTo(r.maxv)>=0&&(!i||a.minv.compareTo(i.maxv)>=0)&&(!o||a.maxv.compareTo(o.minv)<=0)&&(!s||a.fetchedSize()<s.fetchedSize())&&(s=a):this.requested.delete(c);A.push(s??r)}return A}async bytesForRegions(e,A={}){let n=[];for(let{refName:i,start:o,end:s}of e){let c=await this.index.blocksForRange(i,o,s,A);for(let a of c)n.push(a)}let r=0;for(let i of Je(n))r+=i.fetchedSize();return r}async getLines(e,A,n,r){let i,o={},s,c;typeof r=="function"?s=r:(o=r,s=r.lineCallback,i=r.signal,c=r.onProgress);let a=await this.index.getMetadata(o),g=A??0,l=n??a.maxRefLength;if(g>l)throw new TypeError("invalid start and end coordinates. start must be less than or equal to end");if(g===l)return;let Q=this.withCachedContainers(await this.index.blocksForRange(e,g,l,o)),I=a.format==="VCF",B=a.columnNumbers.ref||0,E=a.columnNumbers.start||0,d=I?8:a.columnNumbers.end||0,p=Math.max(B,E,d),u=a.metaChar?.charCodeAt(0),m=a.coordinateType==="1-based-closed"?-1:0,C=new TextEncoder,D=new TextDecoder,x=C.encode(e),f=new Int32Array(p+1),w=a.format==="GAF"?{start:g,end:l,pathCol:E,metaCharCode:u,decoder:D,callback:s}:void 0,b=0;for(let k of Q)b+=k.fetchedSize();let y=0;c?.(0,b);let R=1,U=[],h=k=>{for(;U.length<Math.min(k,Q.length);){let F=Q[U.length];this.requested.set(F.toString(),F);let L=this.chunkCache.get(F,i);L.catch(()=>{}),U.push(L)}};h(1);for(let k=0,F=Q.length;k<F;k++){let L=Q[k],{segments:N,cpositions:v,dpositions:_}=await U[k];y+=L.fetchedSize(),c?.(y,b);let G=L.minv.dataPosition;if(w){if(Vt(N,(H,z)=>Ts(H,z,v,_,G,w)))return}else if(Vt(N,(H,z)=>{let S=0,J=0;for(;S<H.length;){let M=H.indexOf(qe,S);if(M===-1)break;let Y=S+z+G;for(;J<_.length&&Y>=_[J];)J++;if(u!==void 0&&H[S]===u){S=M+1;continue}f[0]=S-1;for(let X=0;X<p;X++){let T=f[X],O=T<M?H.indexOf(tn,T+1):-1;f[X+1]=O===-1||O>=M?M:O}let K=f[B-1]+1,W=f[B]-K;if(W!==x.length){S=M+1;continue}let eA=!0;for(let X=0;X<W;X++)if(H[K+X]!==x[X]){eA=!1;break}if(!eA){S=M+1;continue}let tA=Oe(H,f[E-1]+1,f[E])+m;if(tA>=l)return!0;let V;if(d===0||d===E?V=tA+1:I?V=Us(H,tA,f[3]+1,f[4],f[d-1]+1,f[d],f[5]):V=Oe(H,f[d-1]+1,f[d]),V>g){let X=H[M-1]===Si?M-1:M,T=D.decode(H.subarray(S,X));s(T,vi(v,_,J,S+z,G),tA,V)}S=M+1}return!1}))return;R=Math.min(R*2,_s),h(k+1+R)}}async getMetadata(e={}){return this.index.getMetadata(e)}async readHeaderBytes(e){let{firstDataLine:A,maxBlockSize:n}=await this.getMetadata(e);if(A?.blockPosition===0&&A.dataPosition===0)return new Uint8Array(0);let r=(A?.blockPosition??0)+n,i=await this.filehandle.read(r,0,e);return se(i)}async parseHeader(e){let{metaChar:A,skipLines:n=0}=await this.getMetadata(e),r=await this.readHeaderBytes(e);return{header:Fi.decode(A?Di(r,A):r),skippedLines:n>0?Ks(r,n):[]}}getParsedHeader(e={}){return this.headerCache.get("header",e.signal,A=>this.parseHeader({...e,signal:A}))}async getHeaderBuffer(e={}){let{metaChar:A}=await this.getMetadata(e),n=await this.readHeaderBytes(e);return A?Di(n,A):n}async getSkippedLines(e={}){let{skipLines:A=0}=await this.getMetadata(e);return A<=0?[]:(await this.getParsedHeader(e)).skippedLines}async getHeader(e={}){return(await this.getParsedHeader(e)).header}async getHeaderLines(e={}){let{header:A,skippedLines:n}=await this.getParsedHeader(e);return(A?A.split(/\r?\n/):n).filter(Boolean)}async getReferenceSequenceNames(e={}){return(await this.getMetadata(e)).refIdToName}async lineCount(e,A={}){return this.index.lineCount(e,A)}async readChunk(e,A={}){let n=await this.filehandle.read(e.fetchedSize(),e.minv.blockPosition,A);FA(A.signal);let r=await this.bgzfWorkerPool;return Pt(n,e,r)}};var Os=t=>({type:"fileLocation",defaultValue:{uri:t,locationType:"UriLocation"}}),Bc=(t,e="")=>rn(t,{indexType:{model:on.enumeration("IndexType",["TBI","CSI"]),type:"stringEnum",defaultValue:"TBI"},location:Os(e)});function qs(t,e,A){return{indexType:A?"CSI":"TBI",location:{uri:`${t}.${A?"csi":"tbi"}`,baseUri:e}}}function Ec(t){let{walksUri:e,baseUri:A,csi:n}=t;if(typeof e!="string")return t;let r=`${e}.walks.bed.gz`;return{...t,walksLocation:{uri:r,baseUri:A},walksIndex:qs(r,A,n)}}function dc(t,e,A){let n=t.pluginManager;return new zA({filehandle:sn(t.getConf(e),n),...an(t.getConf([...A,"location"]),t.getConf([...A,"indexType"]),n)})}function Zs(t){return`${t.assemblyName} ${t.refName} is not in this graph's index; a graph with PanSN names (GRCh38#0#chr1) needs ${t.assemblyName} mapped to its prefix in assemblyNameToPanSN`}var Ri=class{constructor(e,A){this.file=e;this.adapter=A;this.lookup=cn({setup:async e=>WA(await this.names(e))})}async names(e){return(await this.file.getReferenceSequenceNames(e)).filter(n=>!n.includes("~"))}async assemblyRefNames(e={}){let A=await this.names(e),n=ge(this.adapter,e.assemblyName),r=A.filter(i=>Ze(i,n)).map(i=>nn(i));return r.length>0?[...new Set(r)]:A}async resolve(e,A){let n=await this.lookup(A);return VA(n,ge(this.adapter,e.assemblyName),e.refName)}async resolveMapped(e,A){let n=await this.resolve(e,A);if(n===void 0&&e.assemblyName){let r=await this.names(A),i=ge(this.adapter,e.assemblyName);if(r.every(o=>o.includes("#"))&&!r.some(o=>Ze(o,i)))throw new Error(Zs(e))}return n}async resolveForCut(e,A){let n=await this.resolveMapped(e,A);if(n===void 0)throw new Error(`This graph has nothing on ${e.assemblyName} ${e.refName}`);return n}async regionBytes(e,A={},n=async(r,i)=>i.start){let r=[];for(let i of e){let o=await this.resolve(i,A);o!==void 0&&r.push({refName:o,start:await n(o,i),end:i.end})}return rr(this.file,r,A)}};export{Vr as a,Ps as b,cn as c,aA as d,Pe as e,UA as f,NA as g,Yi as h,At as i,Xi as j,gt as k,Be as l,sA as m,Ee as n,so as o,qn as p,co as q,Io as r,de as s,Eo as t,lt as u,uo as v,Et as w,dt as x,No as y,Sa as z,Os as A,Bc as B,qs as C,Ec as D,dc as E,Ri as F};
3
+ //# sourceMappingURL=chunk-CZXJXNZN.js.map