jbrowse-plugin-graphgenomeviewer 6.26.1 → 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/{AddTrackWorkflow-ELAP73WV.js → AddTrackWorkflow-Q6RY23LF.js} +2 -2
- package/dist/chunks/GbzBaseSyntenyAdapter-4EMCRZFD.js +2 -0
- package/dist/chunks/GbzBaseSyntenyAdapter-4EMCRZFD.js.map +7 -0
- package/dist/chunks/{GraphGenomeView-3ZJSM36D.js → GraphGenomeView-Q3ZQDV5H.js} +2 -2
- package/dist/chunks/{GraphGenomeView-3ZJSM36D.js.map → GraphGenomeView-Q3ZQDV5H.js.map} +1 -1
- package/dist/chunks/GraphTrackSettingsDialog-EQ5W5KTL.js +6 -0
- package/dist/chunks/GraphTrackSettingsDialog-EQ5W5KTL.js.map +7 -0
- package/dist/chunks/{HighlightColorDialog-H6AGVINB.js → HighlightColorDialog-3BONNNBR.js} +2 -2
- package/dist/chunks/LinearGraphDisplay-M6ITGK2E.js +2 -0
- package/dist/chunks/{LinearGraphDisplay-RTMEWTK4.js.map → LinearGraphDisplay-M6ITGK2E.js.map} +3 -3
- package/dist/chunks/MinigraphBubbleAdapter-DZJIN4J2.js +2 -0
- package/dist/chunks/MinigraphBubbleAdapter-DZJIN4J2.js.map +7 -0
- package/dist/chunks/RgfaTabixAdapter-IZMJCSYQ.js +3 -0
- package/dist/chunks/RgfaTabixAdapter-IZMJCSYQ.js.map +7 -0
- package/dist/chunks/WalkTabixSyntenyAdapter-H5NDC7U5.js +2 -0
- package/dist/chunks/WalkTabixSyntenyAdapter-H5NDC7U5.js.map +7 -0
- package/dist/chunks/{bandage-layout-3AR6BCUD-SOXMX65M.js → bandage-layout-3AR6BCUD-OCBA5MS7.js} +1 -1
- package/dist/chunks/{bandage-layout-3AR6BCUD-SOXMX65M.js.map → bandage-layout-3AR6BCUD-OCBA5MS7.js.map} +1 -1
- package/dist/chunks/chunk-2APZWSYD.js +3 -0
- package/dist/chunks/chunk-2APZWSYD.js.map +7 -0
- package/dist/chunks/chunk-4O7LDKI5.js +3 -0
- package/dist/chunks/chunk-4O7LDKI5.js.map +7 -0
- package/dist/chunks/{chunk-C4ORW22P.js → chunk-56V22DVI.js} +1 -1
- package/dist/chunks/{chunk-C4ORW22P.js.map → chunk-56V22DVI.js.map} +1 -1
- package/dist/chunks/chunk-5OI6LO4I.js +2 -0
- package/dist/chunks/chunk-5OI6LO4I.js.map +7 -0
- package/dist/chunks/chunk-5Q2F5SF4.js +4 -0
- package/dist/chunks/chunk-5Q2F5SF4.js.map +7 -0
- package/dist/chunks/chunk-CH2E7TRS.js +2 -0
- package/dist/chunks/chunk-CH2E7TRS.js.map +7 -0
- package/dist/chunks/chunk-CRL7N4KQ.js +2 -0
- package/dist/chunks/chunk-CRL7N4KQ.js.map +7 -0
- package/dist/chunks/chunk-E2QPSDQL.js +2 -0
- package/dist/chunks/chunk-E2QPSDQL.js.map +7 -0
- package/dist/chunks/chunk-ECZOKJYP.js +2 -0
- package/dist/chunks/chunk-ECZOKJYP.js.map +7 -0
- package/dist/chunks/chunk-EHCF6AXH.js +2 -0
- package/dist/chunks/chunk-EHCF6AXH.js.map +7 -0
- package/dist/chunks/{chunk-5JKSYSN5.js → chunk-G73A6PEI.js} +2 -2
- package/dist/chunks/{chunk-5JKSYSN5.js.map → chunk-G73A6PEI.js.map} +1 -1
- package/dist/chunks/chunk-GHL7VXRC.js +2 -0
- package/dist/chunks/chunk-GHL7VXRC.js.map +7 -0
- package/dist/chunks/{chunk-VAATBXRG.js → chunk-HW4LIGPA.js} +1 -1
- package/dist/chunks/{chunk-VAATBXRG.js.map → chunk-HW4LIGPA.js.map} +1 -1
- package/dist/chunks/chunk-IXQK7JAW.js +2 -0
- package/dist/chunks/chunk-IXQK7JAW.js.map +7 -0
- package/dist/chunks/chunk-KOB7YIMR.js +2 -0
- package/dist/chunks/chunk-KOB7YIMR.js.map +7 -0
- package/dist/chunks/chunk-LUTMKRXY.js +2 -0
- package/dist/chunks/chunk-LUTMKRXY.js.map +7 -0
- package/dist/chunks/chunk-MVVXRZXV.js +2 -0
- package/dist/chunks/chunk-MVVXRZXV.js.map +7 -0
- package/dist/chunks/{chunk-KFP5PZRE.js → chunk-OUN4BNWJ.js} +1 -1
- package/dist/chunks/{chunk-KFP5PZRE.js.map → chunk-OUN4BNWJ.js.map} +1 -1
- package/dist/chunks/chunk-RKOQVSZG.js +4 -0
- package/dist/chunks/{chunk-LCODIX3W.js.map → chunk-RKOQVSZG.js.map} +3 -3
- package/dist/chunks/{chunk-EHGTBGBO.js → chunk-TOT4S3TG.js} +1 -1
- package/dist/chunks/{chunk-EHGTBGBO.js.map → chunk-TOT4S3TG.js.map} +1 -1
- package/dist/chunks/chunk-TXI43PEN.js +2 -0
- package/dist/chunks/chunk-TXI43PEN.js.map +7 -0
- package/dist/chunks/chunk-WO5OWZPP.js +9 -0
- package/dist/chunks/chunk-WO5OWZPP.js.map +7 -0
- package/dist/chunks/chunk-WRH2EJKX.js +2 -0
- package/dist/chunks/chunk-WRH2EJKX.js.map +7 -0
- package/dist/chunks/{chunk-GTESIJZQ.js → chunk-XJDTSPBL.js} +2 -2
- package/dist/chunks/{chunk-GTESIJZQ.js.map → chunk-XJDTSPBL.js.map} +1 -1
- package/dist/chunks/chunk-Z4B6RZGP.js +2 -0
- package/dist/chunks/{chunk-BQQTY3GZ.js.map → chunk-Z4B6RZGP.js.map} +3 -3
- package/dist/chunks/chunk-ZWMYT35X.js +2 -0
- package/dist/chunks/chunk-ZWMYT35X.js.map +7 -0
- package/dist/chunks/renderSvg-QLUKGVIN.js +2 -0
- package/dist/chunks/renderSvg-QLUKGVIN.js.map +7 -0
- package/dist/jbrowse-plugin-graphgenomeviewer.esm.js +4 -4
- package/dist/jbrowse-plugin-graphgenomeviewer.esm.js.map +4 -4
- package/package.json +7 -9
- package/src/GbzBaseSyntenyAdapter/GbzBaseSyntenyAdapter.test.ts +35 -35
- package/src/GbzBaseSyntenyAdapter/GbzBaseSyntenyAdapter.ts +24 -36
- package/src/GbzBaseSyntenyAdapter/companion.test.ts +8 -4
- package/src/GbzBaseSyntenyAdapter/configSchema.ts +2 -17
- package/src/GetGraphReads.ts +3 -11
- package/src/GetSubgraph.test.ts +30 -48
- package/src/GraphAddTrackWorkflow/buildTrackConfig.ts +6 -3
- package/src/GraphAddTrackWorkflow/graphManifest.ts +9 -5
- package/src/GraphGenomeView/components/FacetPanels.tsx +24 -1
- package/src/GraphGenomeView/components/GraphCanvas.tsx +18 -12
- package/src/GraphGenomeView/components/GraphSettingsDialog.test.tsx +36 -0
- package/src/GraphGenomeView/components/GraphSettingsDialog.tsx +12 -10
- package/src/GraphGenomeView/components/LabelChip.tsx +28 -6
- package/src/GraphGenomeView/components/LabelLayer.tsx +28 -4
- package/src/GraphGenomeView/components/PaneSvg.tsx +11 -0
- package/src/GraphGenomeView/components/ReferenceStripOverlay.tsx +1 -1
- package/src/GraphGenomeView/components/WalkRowsOverlay.tsx +68 -77
- package/src/GraphGenomeView/components/WalkStrip.test.tsx +44 -0
- package/src/GraphGenomeView/components/WalkStrip.tsx +47 -40
- package/src/GraphGenomeView/components/usePaneGestures.test.tsx +78 -0
- package/src/GraphGenomeView/components/usePaneGestures.ts +16 -2
- package/src/GraphGenomeView/genes/geneFeatures.ts +12 -5
- package/src/GraphGenomeView/genes/genes.test.ts +14 -0
- package/src/GraphGenomeView/index.ts +2 -19
- package/src/GraphGenomeView/legendSections.ts +17 -6
- package/src/GraphGenomeView/model.test.ts +132 -25
- package/src/GraphGenomeView/pane/fitViews.ts +16 -13
- package/src/GraphGenomeView/pane/graphViews.ts +7 -12
- package/src/GraphGenomeView/pane/hostViews.ts +14 -15
- package/src/GraphGenomeView/pane/launchActions.ts +2 -3
- package/src/GraphGenomeView/pane/launchViews.ts +23 -22
- package/src/GraphGenomeView/pane/loadActions.ts +93 -76
- package/src/GraphGenomeView/pane/paneBase.ts +3 -2
- package/src/GraphGenomeView/pane/renderingActions.ts +9 -5
- package/src/GraphGenomeView/pane/settingActions.ts +22 -15
- package/src/GraphGenomeView/renderPipeline.test.ts +5 -1
- package/src/GraphGenomeView/repeats/repeatFeatures.ts +1 -1
- package/src/GraphGenomeView/subgraphLoad.test.ts +34 -5
- package/src/LaunchGraphGenomeView.ts +2 -18
- package/src/LinearGraphDisplay/LinearGraphDisplay.test.ts +90 -14
- package/src/LinearGraphDisplay/components/GraphStatusChrome.test.tsx +5 -0
- package/src/LinearGraphDisplay/components/GraphStatusChrome.tsx +9 -11
- package/src/LinearGraphDisplay/components/SubgraphContextSelect.test.tsx +27 -0
- package/src/LinearGraphDisplay/components/SubgraphContextSelect.tsx +6 -2
- package/src/LinearGraphDisplay/components/SubgraphHaplotypesField.test.tsx +1 -1
- package/src/LinearGraphDisplay/components/SubgraphHaplotypesField.tsx +5 -5
- package/src/LinearGraphDisplay/model.ts +17 -11
- package/src/MinigraphBubbleAdapter/MinigraphBubbleAdapter.test.ts +18 -0
- package/src/MinigraphBubbleAdapter/MinigraphBubbleAdapter.ts +2 -1
- package/src/MinigraphBubbleAdapter/configSchema.ts +7 -25
- package/src/RgfaTabixAdapter/RgfaTabixAdapter.test.ts +37 -18
- package/src/RgfaTabixAdapter/RgfaTabixAdapter.ts +72 -48
- package/src/RgfaTabixAdapter/bubbleTier.test.ts +19 -4
- package/src/RgfaTabixAdapter/configSchema.ts +24 -65
- package/src/RgfaTabixAdapter/test_data/walks1_header.GRCh38.walks.bed.gz +0 -0
- package/src/RgfaTabixAdapter/test_data/walks1_header.GRCh38.walks.bed.gz.tbi +0 -0
- package/src/RgfaTabixAdapter/test_data/walks2_follow.GRCh38.walks.bed.gz +0 -0
- package/src/RgfaTabixAdapter/test_data/walks2_follow.GRCh38.walks.bed.gz.tbi +0 -0
- package/src/RgfaTabixAdapter/test_data/walks2_header.GRCh38.walks.bed.gz +0 -0
- package/src/RgfaTabixAdapter/test_data/walks2_header.GRCh38.walks.bed.gz.tbi +0 -0
- package/src/RgfaTabixAdapter/test_data/walks2_maxnode.GRCh38.walks.bed.gz +0 -0
- package/src/RgfaTabixAdapter/test_data/walks2_maxnode.GRCh38.walks.bed.gz.tbi +0 -0
- package/src/RgfaTabixAdapter/test_data/walks2_rejoin.GRCh38.walks.bed.gz +0 -0
- package/src/RgfaTabixAdapter/test_data/walks2_rejoin.GRCh38.walks.bed.gz.tbi +0 -0
- package/src/RgfaTabixAdapter/walkFiles.test.ts +96 -242
- package/src/RgfaTabixAdapter/walkReader.ts +31 -213
- package/src/WalkTabixSyntenyAdapter/WalkTabixSyntenyAdapter.test.ts +4 -8
- package/src/WalkTabixSyntenyAdapter/WalkTabixSyntenyAdapter.ts +18 -40
- package/src/WalkTabixSyntenyAdapter/configSchema.ts +16 -76
- package/src/WalkTabixSyntenyAdapter/gbzParity.test.ts +4 -7
- package/src/WalkTabixSyntenyAdapter/walkLanes.ts +1 -1
- package/src/graphTrackConfig.ts +3 -3
- package/src/launchFromGraph/contributors.test.ts +9 -3
- package/src/launchFromGraph/launchFromGraph.test.ts +2 -0
- package/src/launchFromGraph/launchFromGraph.ts +21 -16
- package/src/launchFromGraph/launchTracks.ts +4 -11
- package/src/launchFromGraph/syntenyTracks.ts +4 -11
- package/src/locationName.ts +21 -0
- package/src/panSNAliases/panSNAliases.test.ts +93 -88
- package/src/panSNAliases/trackAdapterConfig.ts +8 -2
- package/src/panSNTabix.ts +32 -0
- package/src/synteny/ComparativeAdapterBase.ts +4 -3
- package/src/synteny/lanePairs.ts +15 -0
- package/src/{RgfaTabixAdapter/tabixRange.ts → tabixRange.ts} +4 -1
- package/src/version.ts +1 -1
- package/dist/chunks/GbzBaseSyntenyAdapter-KTZMVVMW.js +0 -2
- package/dist/chunks/GbzBaseSyntenyAdapter-KTZMVVMW.js.map +0 -7
- package/dist/chunks/GraphTrackSettingsDialog-JHKKV2S4.js +0 -6
- package/dist/chunks/GraphTrackSettingsDialog-JHKKV2S4.js.map +0 -7
- package/dist/chunks/LinearGraphDisplay-RTMEWTK4.js +0 -2
- package/dist/chunks/MinigraphBubbleAdapter-FKDOLLD3.js +0 -2
- package/dist/chunks/MinigraphBubbleAdapter-FKDOLLD3.js.map +0 -7
- package/dist/chunks/RgfaTabixAdapter-SMDO5VX7.js +0 -3
- package/dist/chunks/RgfaTabixAdapter-SMDO5VX7.js.map +0 -7
- package/dist/chunks/WalkTabixSyntenyAdapter-L2E7QSX2.js +0 -2
- package/dist/chunks/WalkTabixSyntenyAdapter-L2E7QSX2.js.map +0 -7
- package/dist/chunks/chunk-2I4VPDLZ.js +0 -2
- package/dist/chunks/chunk-2I4VPDLZ.js.map +0 -7
- package/dist/chunks/chunk-3GI2K2L7.js +0 -9
- package/dist/chunks/chunk-3GI2K2L7.js.map +0 -7
- package/dist/chunks/chunk-4II37RC7.js +0 -2
- package/dist/chunks/chunk-4II37RC7.js.map +0 -7
- package/dist/chunks/chunk-6NKKRJ2C.js +0 -3
- package/dist/chunks/chunk-6NKKRJ2C.js.map +0 -7
- package/dist/chunks/chunk-AHEG3FOH.js +0 -2
- package/dist/chunks/chunk-AHEG3FOH.js.map +0 -7
- package/dist/chunks/chunk-BQQTY3GZ.js +0 -2
- package/dist/chunks/chunk-EAZJJZAY.js +0 -2
- package/dist/chunks/chunk-EAZJJZAY.js.map +0 -7
- package/dist/chunks/chunk-HHADQLAY.js +0 -2
- package/dist/chunks/chunk-HHADQLAY.js.map +0 -7
- package/dist/chunks/chunk-LCODIX3W.js +0 -4
- package/dist/chunks/chunk-N6PJ3YND.js +0 -3
- package/dist/chunks/chunk-N6PJ3YND.js.map +0 -7
- package/dist/chunks/chunk-OTU3GXFO.js +0 -2
- package/dist/chunks/chunk-OTU3GXFO.js.map +0 -7
- package/dist/chunks/chunk-R3TRNF7N.js +0 -2
- package/dist/chunks/chunk-R3TRNF7N.js.map +0 -7
- package/dist/chunks/chunk-TH3R5SGF.js +0 -2
- package/dist/chunks/chunk-TH3R5SGF.js.map +0 -7
- package/dist/chunks/chunk-Z35N4ZAV.js +0 -4
- package/dist/chunks/chunk-Z35N4ZAV.js.map +0 -7
- package/dist/chunks/renderSvg-MS35CDL4.js +0 -2
- package/dist/chunks/renderSvg-MS35CDL4.js.map +0 -7
- package/src/RgfaTabixAdapter/test_data/walks_follow.links.bed.gz +0 -0
- package/src/RgfaTabixAdapter/test_data/walks_follow.links.bed.gz.tbi +0 -0
- package/src/RgfaTabixAdapter/test_data/walks_follow.nodes.bed.gz +0 -0
- package/src/RgfaTabixAdapter/test_data/walks_follow.nodes.bed.gz.tbi +0 -0
- package/src/RgfaTabixAdapter/test_data/walks_follow.walks.bed.gz +0 -0
- package/src/RgfaTabixAdapter/test_data/walks_follow.walks.bed.gz.tbi +0 -0
- package/src/RgfaTabixAdapter/test_data/walks_header.links.bed.gz +0 -0
- package/src/RgfaTabixAdapter/test_data/walks_header.links.bed.gz.tbi +0 -0
- package/src/RgfaTabixAdapter/test_data/walks_header.nodes.bed.gz +0 -0
- package/src/RgfaTabixAdapter/test_data/walks_header.nodes.bed.gz.tbi +0 -0
- package/src/RgfaTabixAdapter/test_data/walks_header.walks.bed.gz +0 -0
- package/src/RgfaTabixAdapter/test_data/walks_header.walks.bed.gz.tbi +0 -0
- package/src/RgfaTabixAdapter/test_data/walks_maxnode.links.bed.gz +0 -0
- package/src/RgfaTabixAdapter/test_data/walks_maxnode.links.bed.gz.tbi +0 -0
- package/src/RgfaTabixAdapter/test_data/walks_maxnode.nodes.bed.gz +0 -0
- package/src/RgfaTabixAdapter/test_data/walks_maxnode.nodes.bed.gz.tbi +0 -0
- package/src/RgfaTabixAdapter/test_data/walks_maxnode.walks.bed.gz +0 -0
- package/src/RgfaTabixAdapter/test_data/walks_maxnode.walks.bed.gz.tbi +0 -0
- package/src/RgfaTabixAdapter/test_data/walks_rejoin.links.bed.gz +0 -0
- package/src/RgfaTabixAdapter/test_data/walks_rejoin.links.bed.gz.tbi +0 -0
- package/src/RgfaTabixAdapter/test_data/walks_rejoin.nodes.bed.gz +0 -0
- package/src/RgfaTabixAdapter/test_data/walks_rejoin.nodes.bed.gz.tbi +0 -0
- package/src/RgfaTabixAdapter/test_data/walks_rejoin.walks.bed.gz +0 -0
- package/src/RgfaTabixAdapter/test_data/walks_rejoin.walks.bed.gz.tbi +0 -0
- package/src/RgfaTabixAdapter/walkRows.test.ts +0 -446
- package/src/RgfaTabixAdapter/walkRows.ts +0 -699
- /package/dist/chunks/{AddTrackWorkflow-ELAP73WV.js.map → AddTrackWorkflow-Q6RY23LF.js.map} +0 -0
- /package/dist/chunks/{HighlightColorDialog-H6AGVINB.js.map → HighlightColorDialog-3BONNNBR.js.map} +0 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/WalkTabixSyntenyAdapter/walkLanes.ts", "../../src/WalkTabixSyntenyAdapter/WalkTabixSyntenyAdapter.ts"],
|
|
4
|
+
"sourcesContent": ["import { weightedLcs } from '@gmod/gbz-base/lcs'\nimport { pairAlignments } from '@gmod/gbz-base/pairAlignment'\nimport { panSNContig } from '@jbrowse/bandage-core/pansn'\n\nimport SyntenyFeature from '../synteny/SyntenyFeature.ts'\n\nimport type { PairChain, PairEdit } from '@gmod/gbz-base/pairAlignment'\nimport type { WalkFragment, WalkNode } from '@jbrowse/graph-walks'\n\n// The longest bubble with equal bases on both sides that is written as\n// mismatches; a longer one stays an insertion and a deletion\nconst BALANCED_BUBBLE_MAX_BP = 50\n\n/**\n * A chain's edits with each short balanced bubble as `X`. The walks carry no\n * bases, so two walks differ wherever they leave a shared node, and a SNP is\n * one base inserted and one deleted until it is read as the mismatch it is.\n */\nexport function bubblesAsMismatches(edits: PairEdit[]) {\n const out: PairEdit[] = []\n for (let i = 0; i < edits.length; i++) {\n const [op, len] = edits[i]!\n const [nextOp, nextLen] = edits[i + 1] ?? []\n if (\n len === nextLen &&\n len <= BALANCED_BUBBLE_MAX_BP &&\n ((op === 'I' && nextOp === 'D') || (op === 'D' && nextOp === 'I'))\n ) {\n out.push(['X', len])\n i++\n } else {\n out.push([op, len])\n }\n }\n return out\n}\n\nfunction cigarOf(edits: PairEdit[]) {\n return edits.map(([op, len]) => `${len}${op}`).join('')\n}\n\n/**\n * Aligns one walk fragment to another on the nodes both visit, from node\n * lengths alone: the fragments' steps as the handles gbz-base's chainer reads,\n * and a stand-in sequence of each node's length.\n */\nexport function walkAligner(nodes: Map<number, WalkNode>) {\n const standIn = new Map<number, string>()\n const sequenceOf = (id: number) => {\n const node = nodes.get(id)\n const length = node === undefined ? 0 : node.end - node.start\n let sequence = standIn.get(length)\n if (sequence === undefined) {\n sequence = 'N'.repeat(length)\n standIn.set(length, sequence)\n }\n return sequence\n }\n const handles = new Map<WalkFragment, number[]>()\n const handlesOf = (fragment: WalkFragment) => {\n let steps = handles.get(fragment)\n if (steps === undefined) {\n steps = Array.from(fragment.ids, (id, i) => 2 * id + fragment.rev[i]!)\n handles.set(fragment, steps)\n }\n return steps\n }\n return (query: WalkFragment, target: WalkFragment) =>\n pairAlignments({\n query: handlesOf(query),\n target: handlesOf(target),\n sequenceOf,\n bases: false,\n })\n}\n\n// The fewest bases on shared nodes a record against the reference keeps,\n// gbz-base's floor for a pair record\nconst MIN_MATCH_BP = 100\n\nfunction appendEdit(edits: PairEdit[], op: PairEdit[0], len: number) {\n const last = edits.at(-1)\n if (len > 0) {\n if (last?.[0] === op) {\n last[1] += len\n } else {\n edits.push([op, len])\n }\n }\n}\n\n/**\n * Aligns a haplotype's walk fragment to the reference's as gbz-base aligns a\n * walk to its reference path: the heaviest common subsequence of their steps,\n * each node weighing its length, read in whichever direction shares more. A\n * pair chain leaves out every node either walk passes twice, which is the\n * whole of a collapsed copy-number array (amylase, KIV-2); the subsequence\n * matches one pass over it, and the other copies are insertions.\n */\nexport function referenceAligner(nodes: Map<number, WalkNode>) {\n const lengthOf = (handle: number) => {\n const node = nodes.get(handle >> 1)\n return node === undefined ? 0 : node.end - node.start\n }\n const offsets = (handles: number[]) => {\n const out = new Float64Array(handles.length + 1)\n handles.forEach((handle, i) => {\n out[i + 1] = out[i]! + lengthOf(handle)\n })\n return out\n }\n const handlesOf = (fragment: WalkFragment) =>\n Array.from(fragment.ids, (id, i) => 2 * id + fragment.rev[i]!)\n\n return (query: WalkFragment, target: WalkFragment): PairChain[] => {\n const ref = handlesOf(target)\n const hap = handlesOf(query)\n const [same, sameWeight] = weightedLcs(hap, ref, lengthOf)\n const [turned, turnedWeight] = weightedLcs(\n hap.map(handle => handle ^ 1).reverse(),\n ref,\n lengthOf,\n )\n const reverse = turnedWeight > sameWeight\n const pairs = reverse ? turned : same\n const sharedBases = Math.max(sameWeight, turnedWeight)\n if (sharedBases < MIN_MATCH_BP) {\n return []\n }\n const refAt = offsets(ref)\n const hapAt = offsets(hap)\n // a pair's haplotype step, counted along the haplotype\n const stepOf = (k: number) =>\n reverse ? hap.length - 1 - pairs[k]![0] : pairs[k]![0]\n const edits: PairEdit[] = []\n pairs.forEach(([, r], k) => {\n if (k > 0) {\n const [lo, hi] = [stepOf(k - 1), stepOf(k)].sort((x, y) => x - y)\n appendEdit(edits, 'I', hapAt[hi!]! - hapAt[lo! + 1]!)\n appendEdit(edits, 'D', refAt[r]! - refAt[pairs[k - 1]![1] + 1]!)\n }\n appendEdit(edits, '=', lengthOf(ref[r]!))\n })\n const [lo, hi] = [stepOf(0), stepOf(pairs.length - 1)].sort((x, y) => x - y)\n return [\n {\n queryStart: hapAt[lo!]!,\n queryEnd: hapAt[hi! + 1]!,\n targetStart: refAt[pairs[0]![1]]!,\n targetEnd: refAt[pairs.at(-1)![1] + 1]!,\n strand: reverse ? '-' : '+',\n edits,\n sharedBases,\n },\n ]\n }\n}\n\n/**\n * One record of a walk aligned to another: on the target walk's contig, with\n * the query walk as its mate and the CIGAR read along the target, a `D` being\n * target bases the query lacks.\n */\nexport function chainFeature({\n chain,\n target,\n query,\n assemblyName,\n refName,\n mateAssemblyName,\n}: {\n chain: PairChain\n target: WalkFragment\n query: WalkFragment\n assemblyName: string\n refName: string\n mateAssemblyName: string\n}) {\n const start = target.hapStart + chain.targetStart\n const end = target.hapStart + chain.targetEnd\n const mateStart = query.hapStart + chain.queryStart\n const mateEnd = query.hapStart + chain.queryEnd\n const edits = bubblesAsMismatches(chain.edits)\n const matches = edits.reduce((sum, [op, n]) => sum + (op === '=' ? n : 0), 0)\n const columns = edits.reduce((sum, [, n]) => sum + n, 0)\n const id = `${target.name}:${start}-${end}|${query.name}:${mateStart}-${mateEnd}`\n return new SyntenyFeature({\n uniqueId: id,\n assemblyName,\n refName,\n start,\n end,\n type: 'match',\n strand: chain.strand === '-' ? -1 : 1,\n CIGAR: cigarOf(edits),\n syntenyId: id,\n identity: matches / Math.max(columns, 1),\n numMatches: matches,\n blockLen: columns,\n mate: {\n refName: panSNContig(query.name),\n start: mateStart,\n end: mateEnd,\n assemblyName: mateAssemblyName,\n },\n })\n}\n", "import {\n assemblyByPanSNPrefix,\n panSNContig,\n panSNHaplotype,\n panSNMatchesPrefix,\n panSNSample,\n resolvePanSNPrefix,\n} from '@jbrowse/bandage-core/pansn'\nimport { updateStatus } from '@jbrowse/core/util'\nimport { ObservableCreate } from '@jbrowse/core/util/rxjs'\nimport { WalkReader, walkNameFilter } from '@jbrowse/graph-walks'\n\nimport { chainFeature, referenceAligner, walkAligner } from './walkLanes.ts'\nimport { isNodeLimitError } from '../LinearGraphDisplay/denseWindow.ts'\nimport { BUDGET_SLOTS, walkSubgraph } from '../RgfaTabixAdapter/walkReader.ts'\nimport { PanSNRefNames, openTabixSlot } from '../panSNTabix.ts'\nimport { ComparativeAdapterBase } from '../synteny/ComparativeAdapterBase.ts'\nimport { laneAssemblyName, requestedPairs } from '../synteny/lanePairs.ts'\n\nimport type { WalkTabixSyntenyAdapterConfig } from './configSchema.ts'\nimport type { SubgraphAdapterOptions } from '../GetSubgraph.ts'\nimport type { LaneFeatureOptions, LanePair } from '../synteny/lanePairs.ts'\nimport type PluginManager from '@jbrowse/core/PluginManager'\nimport type { BaseOptions } from '@jbrowse/core/data_adapters/BaseAdapter'\nimport type { getSubAdapterType } from '@jbrowse/core/data_adapters/dataAdapterCache'\nimport type { Feature } from '@jbrowse/core/util'\nimport type { Region } from '@jbrowse/core/util/types'\nimport type { WalkFragment } from '@jbrowse/graph-walks'\n\nconst haplotypeOf = (fragment: WalkFragment) =>\n panSNHaplotype(fragment.name) ?? fragment.name\n\nexport default class WalkTabixSyntenyAdapter extends ComparativeAdapterBase<WalkTabixSyntenyAdapterConfig> {\n private readonly reader\n private readonly refNames\n\n public constructor(\n config: WalkTabixSyntenyAdapterConfig,\n getSubAdapter?: getSubAdapterType,\n pluginManager?: PluginManager,\n ) {\n super(config, getSubAdapter, pluginManager)\n const walks = openTabixSlot(this, ['walksLocation'], ['walksIndex'])\n this.reader = new WalkReader(walks)\n this.refNames = new PanSNRefNames(walks, this)\n }\n\n private get anchor() {\n const anchor = this.getConf('assemblyNames')[0]\n if (anchor === undefined) {\n throw new Error(\n 'WalkTabixSyntenyAdapter needs assemblyNames: its first entry is the assembly the reference sample is loaded as',\n )\n }\n return anchor\n }\n\n /**\n * The haplotypes the walk file's header names, `sample#haplotype` in byte\n * order, or undefined when it names none\n */\n async getHaplotypeNames(opts: BaseOptions = {}) {\n const { haplotypes } = await this.reader.header(opts)\n return haplotypes.length > 0 ? haplotypes : undefined\n }\n\n /**\n * `lanes` is every haplotype the header names but the anchor's own,\n * declared up front so the display can offer the whole graph's haplotypes\n * before a fetch has placed any of them\n */\n async getHeader(opts: BaseOptions = {}) {\n const { haplotypes, references } = await this.reader.header(opts)\n const { anchor } = this\n const anchorPrefix = resolvePanSNPrefix(this, anchor)\n const asmByPrefix = assemblyByPanSNPrefix(this)\n return {\n hasCoarseTier: false,\n anchorAssemblyName: anchor,\n referenceSamples: references,\n lanes: haplotypes\n .filter(\n prefix =>\n prefix !== anchorPrefix && panSNSample(prefix) !== anchorPrefix,\n )\n .map(prefix => ({\n name: laneAssemblyName(asmByPrefix, prefix),\n label: prefix,\n group: panSNSample(prefix),\n })),\n }\n }\n\n // A lane's contigs are named only in its walk rows, so only the anchor's\n // are listed\n async getRefNames(opts: BaseOptions = {}) {\n const { assemblyName } = opts\n return assemblyName === undefined || assemblyName === this.anchor\n ? this.refNames.assemblyRefNames({ ...opts, assemblyName: this.anchor })\n : []\n }\n\n private budgets() {\n return {\n stepBudget: this.getConf('walkStepBudget'),\n byteBudget: this.getConf('walkByteBudget'),\n budgetNames: BUDGET_SLOTS,\n }\n }\n\n /**\n * The graph display's cut of the window, as RgfaTabixAdapter cuts a\n * walk-indexed graph: the reference walk first, then the walks `haplotypes`\n * asks for, and the nodes and links they visit\n */\n async getSubgraph(region: Region, opts: SubgraphAdapterOptions = {}) {\n const { signal, haplotypes, walkRows } = opts\n const refName = await this.refNames.resolve(region, { signal })\n if (refName === undefined) {\n throw new Error(\n `${region.assemblyName} ${region.refName} is not in this graph's index; the graph is cut on ${this.anchor}, mapped to its PanSN prefix in assemblyNameToPanSN`,\n )\n }\n return walkSubgraph(this.reader, refName, region, {\n ...this.budgets(),\n signal,\n prefixes: haplotypes?.map(lane => resolvePanSNPrefix(this, lane)),\n walkRows,\n })\n }\n\n // The window's walks for the haplotypes named and the reference, with no\n // link read; a window past a budget fails as a zoom-in notice for lanes\n private async laneWalks(\n refName: string,\n region: Region,\n prefixes: string[] | undefined,\n opts: LaneFeatureOptions,\n status: string,\n ) {\n return updateStatus(status, opts.statusCallback, () =>\n this.reader\n .cut(refName, region, {\n ...this.budgets(),\n signal: opts.signal,\n keep: walkNameFilter(prefixes, panSNHaplotype(refName)),\n links: false,\n })\n .catch((error: unknown) => {\n if (isNodeLimitError(error) && error instanceof Error) {\n error.message = error.message.replace(\n 'to see the graph',\n 'to see lanes',\n )\n }\n throw error\n }),\n )\n }\n\n /**\n * One record per stretch a haplotype's walk shares with the reference's,\n * on the reference with the haplotype as its mate\n */\n private async anchorFeatures(\n refName: string,\n region: Region,\n opts: LaneFeatureOptions,\n ) {\n const wanted = opts.haplotypes?.length\n ? opts.haplotypes.map(lane => resolvePanSNPrefix(this, lane))\n : undefined\n const target = resolvePanSNPrefix(this, opts.targetAssemblyName)\n const prefixes =\n target === undefined\n ? wanted\n : wanted === undefined ||\n wanted.some(\n prefix =>\n panSNMatchesPrefix(target, prefix) ||\n panSNMatchesPrefix(prefix, target),\n )\n ? [target]\n : []\n if (prefixes?.length === 0) {\n return []\n }\n const { start, end } = region\n const { graph, fragments } = await this.laneWalks(\n refName,\n region,\n prefixes,\n opts,\n `Reading walks ${region.refName}:${start.toLocaleString()}-${end.toLocaleString()}`,\n )\n const align = referenceAligner(graph.nodes)\n const asmByPrefix = assemblyByPanSNPrefix(this)\n const references = fragments.filter(f => f.name === refName)\n // lanes come back in the order the fetch names them, which is the order\n // the display stacks lanes of equal weight in\n const rank = (fragment: WalkFragment) =>\n prefixes === undefined\n ? 0\n : prefixes.findIndex(prefix =>\n panSNMatchesPrefix(fragment.name, prefix),\n )\n const shown = fragments\n .filter(fragment => fragment.name !== refName && rank(fragment) >= 0)\n .sort((a, b) => rank(a) - rank(b))\n return shown.flatMap(query =>\n references.flatMap(reference =>\n align(query, reference).map(chain =>\n chainFeature({\n chain,\n target: reference,\n query,\n assemblyName: region.assemblyName,\n refName: region.refName,\n mateAssemblyName: laneAssemblyName(asmByPrefix, haplotypeOf(query)),\n }),\n ),\n ),\n )\n }\n\n /**\n * Each pair's two lanes read out of the anchor window, all pairs in one\n * read, and each walk of a pair's query lane aligned to each walk of its\n * target lane. A pair's records sit on its query lane's contigs, the lane\n * the display draws on top.\n */\n private async pairFeatures(\n refName: string,\n region: Region,\n pairs: LanePair[],\n opts: LaneFeatureOptions,\n ) {\n const [first] = pairs\n const sides = pairs.map(pair => ({\n pair,\n featurePrefix: resolvePanSNPrefix(this, pair.queryAssemblyName),\n matePrefix: resolvePanSNPrefix(this, pair.targetAssemblyName),\n }))\n const { graph, fragments } = await this.laneWalks(\n refName,\n region,\n sides.flatMap(side => [side.featurePrefix, side.matePrefix]),\n opts,\n pairs.length === 1 && first\n ? `Reading ${first.queryAssemblyName} against ${first.targetAssemblyName}`\n : `Reading ${pairs.length} lane pairs`,\n )\n const align = walkAligner(graph.nodes)\n const walksOf = (prefix: string) =>\n fragments.filter(f => panSNMatchesPrefix(f.name, prefix))\n return sides.flatMap(({ pair, featurePrefix, matePrefix }) =>\n walksOf(featurePrefix).flatMap(target =>\n walksOf(matePrefix).flatMap(query =>\n align(query, target).map(chain =>\n chainFeature({\n chain,\n target,\n query,\n assemblyName: pair.queryAssemblyName,\n refName: panSNContig(target.name),\n mateAssemblyName: pair.targetAssemblyName,\n }),\n ),\n ),\n ),\n )\n }\n\n // The files are filed under the reference alone, so a window on a\n // haplotype lane has no answer: a lane pair is read inside the anchor's\n getFeatures(region: Region, opts: LaneFeatureOptions = {}) {\n return ObservableCreate<Feature>(async observer => {\n const refName =\n region.assemblyName === this.anchor\n ? await this.refNames.resolve(region, opts)\n : undefined\n if (refName !== undefined) {\n const pairs = requestedPairs(opts)\n const features =\n pairs.length > 0\n ? await this.pairFeatures(refName, region, pairs, opts)\n : await this.anchorFeatures(refName, region, opts)\n for (const feature of features) {\n observer.next(feature)\n }\n }\n observer.complete()\n }, opts.signal)\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["BALANCED_BUBBLE_MAX_BP", "bubblesAsMismatches", "edits", "out", "i", "op", "len", "nextOp", "nextLen", "cigarOf", "walkAligner", "nodes", "standIn", "sequenceOf", "id", "node", "length", "sequence", "handles", "handlesOf", "fragment", "steps", "query", "target", "pairAlignments", "MIN_MATCH_BP", "appendEdit", "last", "referenceAligner", "lengthOf", "handle", "offsets", "ref", "hap", "same", "sameWeight", "weightedLcs", "turned", "turnedWeight", "reverse", "pairs", "sharedBases", "refAt", "hapAt", "stepOf", "k", "r", "lo", "hi", "x", "y", "chainFeature", "chain", "assemblyName", "refName", "mateAssemblyName", "start", "end", "mateStart", "mateEnd", "matches", "sum", "n", "columns", "SyntenyFeature", "panSNContig", "haplotypeOf", "fragment", "panSNHaplotype", "WalkTabixSyntenyAdapter", "ComparativeAdapterBase", "config", "getSubAdapter", "pluginManager", "walks", "openTabixSlot", "WalkReader", "PanSNRefNames", "anchor", "opts", "haplotypes", "references", "anchorPrefix", "resolvePanSNPrefix", "asmByPrefix", "assemblyByPanSNPrefix", "prefix", "panSNSample", "laneAssemblyName", "assemblyName", "BUDGET_SLOTS", "region", "signal", "walkRows", "refName", "walkSubgraph", "lane", "prefixes", "status", "updateStatus", "walkNameFilter", "error", "isNodeLimitError", "wanted", "target", "panSNMatchesPrefix", "start", "end", "graph", "fragments", "align", "referenceAligner", "f", "rank", "a", "b", "query", "reference", "chain", "chainFeature", "pairs", "first", "sides", "pair", "side", "walkAligner", "walksOf", "featurePrefix", "matePrefix", "panSNContig", "ObservableCreate", "observer", "requestedPairs", "features", "feature"]
|
|
7
|
+
}
|
package/dist/chunks/{bandage-layout-3AR6BCUD-SOXMX65M.js → bandage-layout-3AR6BCUD-OCBA5MS7.js}
RENAMED
|
@@ -1657,4 +1657,4 @@ return ret;
|
|
|
1657
1657
|
${t}
|
|
1658
1658
|
}`;var k=new Function(Object.keys(b),t)(...Object.values(b)),D=`methodCaller<(${E.map(e=>e.name)}) => ${f.name}>`;return zx(m0(D,k))},FA=x=>x?(x=B0(x),l.toHandle(globalThis[x])):l.toHandle(globalThis),vA=(x,A)=>(x=l.toValue(x),A=l.toValue(A),l.toHandle(x[A])),rA=x=>{x>9&&(y[x+1]+=1)},fA=(x,A,F,v,f)=>E0[x](A,F,v,f),EA=x=>(x=l.toValue(x),typeof x=="number"),BA=x=>(x=l.toValue(x),typeof x=="string"),jA=()=>l.toHandle([]),bA=x=>l.toHandle(B0(x)),CA=()=>l.toHandle({}),eA=x=>{var A=l.toValue(x);p0(A),v0(x)},tA=(x,A,F)=>{x=l.toValue(x),A=l.toValue(A),F=l.toValue(F),x[A]=F},DA=(x,A,F,v)=>{var f=new Date().getFullYear(),E=new Date(f,0,1),B=new Date(f,6,1),j=E.getTimezoneOffset(),b=B.getTimezoneOffset(),C=Math.max(j,b);n[x>>2]=C*60,L[A>>2]=+(j!=b);var t=e=>{var s=e>=0?"-":"+",d=Math.abs(e),c=String(Math.floor(d/60)).padStart(2,"0"),m=String(d%60).padStart(2,"0");return`UTC${s}${c}${m}`},k=t(j),D=t(b);b<j?(O(k,F,17),O(D,v,17)):(O(k,v,17),O(D,F,17))},nA=()=>Date.now(),L0=()=>2147483648,oA=()=>L0(),aA=(x,A)=>Math.ceil(x/A)*A,kA=x=>{var A=A0.buffer.byteLength,F=(x-A+65535)/65536|0;try{return A0.grow(F),k0(),1}catch{}},iA=x=>{var A=G.length;x>>>=0;var F=L0();if(x>F)return!1;for(var v=1;v<=4;v*=2){var f=A*(1+.2/v);f=Math.min(f,x+100663296);var E=Math.min(F,aA(Math.max(x,f),65536)),B=kA(E);if(B)return!0}return!1},j0={},sA=()=>D0,V=()=>{if(!V.strings){var x=(globalThis.navigator?.language??"C").replace("-","_")+".UTF-8",A={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:x,_:sA()};for(var F in j0)j0[F]===void 0?delete A[F]:A[F]=j0[F];var v=[];for(var F in A)v.push(`${F}=${A[F]}`);V.strings=v}return V.strings},lA=(x,A)=>{var F=0,v=0;for(var f of V()){var E=A+F;n[x+v>>2]=E,F+=O(f,E,1/0)+1,v+=4}return 0},dA=(x,A)=>{var F=V();n[x>>2]=F.length;var v=0;for(var f of F)v+=f0(f)+1;return n[A>>2]=v,0},i={isAbs:x=>x.charAt(0)==="/",splitPath:x=>{var A=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return A.exec(x).slice(1)},normalizeArray:(x,A)=>{for(var F=0,v=x.length-1;v>=0;v--){var f=x[v];f==="."?x.splice(v,1):f===".."?(x.splice(v,1),F++):F&&(x.splice(v,1),F--)}if(A)for(;F;F--)x.unshift("..");return x},normalize:x=>{var A=i.isAbs(x),F=x.slice(-1)==="/";return x=i.normalizeArray(x.split("/").filter(v=>!!v),!A).join("/"),!x&&!A&&(x="."),x&&F&&(x+="/"),(A?"/":"")+x},dirname:x=>{var A=i.splitPath(x),F=A[0],v=A[1];return!F&&!v?".":(v&&(v=v.slice(0,-1)),F+v)},basename:x=>x&&x.match(/([^\/]+|\/)\/*$/)[1],join:(...x)=>i.normalize(x.join("/")),join2:(x,A)=>i.normalize(x+"/"+A)},$A=()=>x=>(crypto.getRandomValues(x),0),M0=x=>(M0=$A())(x),K={resolve:(...x)=>{for(var A="",F=!1,v=x.length-1;v>=-1&&!F;v--){var f=v>=0?x[v]:r.cwd();if(typeof f!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!f)return"";A=f+"/"+A,F=i.isAbs(f)}return A=i.normalizeArray(A.split("/").filter(E=>!!E),!F).join("/"),(F?"/":"")+A||"."},relative:(x,A)=>{x=K.resolve(x).slice(1),A=K.resolve(A).slice(1);function F(C){for(var t=0;t<C.length&&C[t]==="";t++);for(var k=C.length-1;k>=0&&C[k]==="";k--);return t>k?[]:C.slice(t,k-t+1)}for(var v=F(x.split("/")),f=F(A.split("/")),E=Math.min(v.length,f.length),B=E,j=0;j<E;j++)if(v[j]!==f[j]){B=j;break}for(var b=[],j=B;j<v.length;j++)b.push("..");return b=b.concat(f.slice(B)),b.join("/")}},b0=[],C0=(x,A,F)=>{var v=F>0?F:f0(x)+1,f=new Array(v),E=g0(x,f,0,f.length);return A&&(f.length=E),f},cA=()=>{if(!b0.length){var x=null;if(globalThis.window?.prompt&&(x=window.prompt("Input: "),x!==null&&(x+=`
|
|
1659
1659
|
`)),!x)return null;b0=C0(x,!0)}return b0.shift()},S={ttys:[],init(){},shutdown(){},register(x,A){S.ttys[x]={input:[],output:[],ops:A},r.registerDevice(x,S.stream_ops)},stream_ops:{open(x){var A=S.ttys[x.node.rdev];if(!A)throw new r.ErrnoError(43);x.tty=A,x.seekable=!1},close(x){x.tty.ops.fsync(x.tty)},fsync(x){x.tty.ops.fsync(x.tty)},read(x,A,F,v,f){if(!x.tty||!x.tty.ops.get_char)throw new r.ErrnoError(60);for(var E=0,B=0;B<v;B++){var j;try{j=x.tty.ops.get_char(x.tty)}catch{throw new r.ErrnoError(29)}if(j===void 0&&!E)throw new r.ErrnoError(6);if(j==null)break;E++,A[F+B]=j}return E&&(x.node.atime=Date.now()),E},write(x,A,F,v,f){if(!x.tty||!x.tty.ops.put_char)throw new r.ErrnoError(60);try{for(var E=0;E<v;E++)x.tty.ops.put_char(x.tty,A[F+E])}catch{throw new r.ErrnoError(29)}return v&&(x.node.mtime=x.node.ctime=Date.now()),E}},default_tty_ops:{get_char(x){return cA()},put_char(x,A){A===null||A===10?(Q(J(x.output)),x.output=[]):A!=0&&x.output.push(A)},fsync(x){x.output?.length>0&&(Q(J(x.output)),x.output=[])},ioctl_tcgets(x){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(x,A,F){return 0},ioctl_tiocgwinsz(x){return[24,80]}},default_tty1_ops:{put_char(x,A){A===null||A===10?(P(J(x.output)),x.output=[]):A!=0&&x.output.push(A)},fsync(x){x.output?.length>0&&(P(J(x.output)),x.output=[])}}},P0=x=>{p()},o={ops_table:null,mount(x){return o.createNode(null,"/",16895,0)},createNode(x,A,F,v){if(r.isBlkdev(F)||r.isFIFO(F))throw new r.ErrnoError(63);o.ops_table||={dir:{node:{getattr:o.node_ops.getattr,setattr:o.node_ops.setattr,lookup:o.node_ops.lookup,mknod:o.node_ops.mknod,rename:o.node_ops.rename,unlink:o.node_ops.unlink,rmdir:o.node_ops.rmdir,readdir:o.node_ops.readdir,symlink:o.node_ops.symlink},stream:{llseek:o.stream_ops.llseek}},file:{node:{getattr:o.node_ops.getattr,setattr:o.node_ops.setattr},stream:{llseek:o.stream_ops.llseek,read:o.stream_ops.read,write:o.stream_ops.write,mmap:o.stream_ops.mmap,msync:o.stream_ops.msync}},link:{node:{getattr:o.node_ops.getattr,setattr:o.node_ops.setattr,readlink:o.node_ops.readlink},stream:{}},chrdev:{node:{getattr:o.node_ops.getattr,setattr:o.node_ops.setattr},stream:r.chrdev_stream_ops}};var f=r.createNode(x,A,F,v);return r.isDir(f.mode)?(f.node_ops=o.ops_table.dir.node,f.stream_ops=o.ops_table.dir.stream,f.contents={}):r.isFile(f.mode)?(f.node_ops=o.ops_table.file.node,f.stream_ops=o.ops_table.file.stream,f.usedBytes=0,f.contents=o.emptyFileContents??=new Uint8Array(0)):r.isLink(f.mode)?(f.node_ops=o.ops_table.link.node,f.stream_ops=o.ops_table.link.stream):r.isChrdev(f.mode)&&(f.node_ops=o.ops_table.chrdev.node,f.stream_ops=o.ops_table.chrdev.stream),f.atime=f.mtime=f.ctime=Date.now(),x&&(x.contents[A]=f,x.atime=x.mtime=x.ctime=f.atime),f},getFileDataAsTypedArray(x){return x.contents.subarray(0,x.usedBytes)},expandFileStorage(x,A){var F=x.contents.length;if(!(F>=A)){var v=1024*1024;A=Math.max(A,F*(F<v?2:1.125)>>>0),F&&(A=Math.max(A,256));var f=o.getFileDataAsTypedArray(x);x.contents=new Uint8Array(A),x.contents.set(f)}},resizeFileStorage(x,A){if(x.usedBytes!=A){var F=x.contents;x.contents=new Uint8Array(A),x.contents.set(F.subarray(0,Math.min(A,x.usedBytes))),x.usedBytes=A}},node_ops:{getattr(x){var A={};return A.dev=r.isChrdev(x.mode)?x.id:1,A.ino=x.id,A.mode=x.mode,A.nlink=1,A.uid=0,A.gid=0,A.rdev=x.rdev,r.isDir(x.mode)?A.size=4096:r.isFile(x.mode)?A.size=x.usedBytes:r.isLink(x.mode)?A.size=x.link.length:A.size=0,A.atime=new Date(x.atime),A.mtime=new Date(x.mtime),A.ctime=new Date(x.ctime),A.blksize=4096,A.blocks=Math.ceil(A.size/A.blksize),A},setattr(x,A){for(let F of["mode","atime","mtime","ctime"])A[F]!=null&&(x[F]=A[F]);A.size!==void 0&&o.resizeFileStorage(x,A.size)},lookup(x,A){throw o.doesNotExistError||(o.doesNotExistError=new r.ErrnoError(44),o.doesNotExistError.stack="<generic error, no stack>"),o.doesNotExistError},mknod(x,A,F,v){return o.createNode(x,A,F,v)},rename(x,A,F){var v;try{v=r.lookupNode(A,F)}catch{}if(v){if(r.isDir(x.mode))for(var f in v.contents)throw new r.ErrnoError(55);r.hashRemoveNode(v)}delete x.parent.contents[x.name],A.contents[F]=x,x.name=F,A.ctime=A.mtime=x.parent.ctime=x.parent.mtime=Date.now()},unlink(x,A){delete x.contents[A],x.ctime=x.mtime=Date.now()},rmdir(x,A){var F=r.lookupNode(x,A);for(var v in F.contents)throw new r.ErrnoError(55);delete x.contents[A],x.ctime=x.mtime=Date.now()},readdir(x){return[".","..",...Object.keys(x.contents)]},symlink(x,A,F){var v=o.createNode(x,A,41471,0);return v.link=F,v},readlink(x){if(!r.isLink(x.mode))throw new r.ErrnoError(28);return x.link}},stream_ops:{read(x,A,F,v,f){var E=x.node.contents;if(f>=x.node.usedBytes)return 0;var B=Math.min(x.node.usedBytes-f,v);return A.set(E.subarray(f,f+B),F),B},write(x,A,F,v,f,E){if(A.buffer===_.buffer&&(E=!1),!v)return 0;var B=x.node;return B.mtime=B.ctime=Date.now(),E?(B.contents=A.subarray(F,F+v),B.usedBytes=v):!B.usedBytes&&!f?(B.contents=A.slice(F,F+v),B.usedBytes=v):(o.expandFileStorage(B,f+v),B.contents.set(A.subarray(F,F+v),f),B.usedBytes=Math.max(B.usedBytes,f+v)),v},llseek(x,A,F){var v=A;if(F===1?v+=x.position:F===2&&r.isFile(x.node.mode)&&(v+=x.node.usedBytes),v<0)throw new r.ErrnoError(28);return v},mmap(x,A,F,v,f){if(!r.isFile(x.node.mode))throw new r.ErrnoError(43);var E,B,j=x.node.contents;if(!(f&2)&&j.buffer===_.buffer)B=!1,E=j.byteOffset;else{if(B=!0,E=P0(A),!E)throw new r.ErrnoError(48);j&&((F>0||F+A<j.length)&&(j.subarray?j=j.subarray(F,F+A):j=Array.prototype.slice.call(j,F,F+A)),_.set(j,E))}return{ptr:E,allocated:B}},msync(x,A,F,v,f){return o.stream_ops.write(x,A,0,v,F,!1),0}}},_A=x=>{if(typeof x!="string")return x;var A={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},F=A[x];if(typeof F>"u")throw new Error(`Unknown file open mode: ${x}`);return F},T0=x=>(typeof x=="string"&&(x=C0(x,!0)),x.subarray||(x=new Uint8Array(x)),x),e0=(x,A)=>{var F=0;return x&&(F|=365),A&&(F|=146),F},uA=async x=>{var A=await n0(x);return new Uint8Array(A)},qA=(...x)=>r.createDataFile(...x),mA=x=>x,O0=null,pA=async()=>O0,M=0,J0=null,GA=x=>{M--,a.monitorRunDependencies?.(M),M||J0()},IA=x=>{M||(O0=new Promise(A=>J0=A)),M++,a.monitorRunDependencies?.(M)},NA=[],hA=async(x,A)=>{typeof Browser<"u"&&Browser.init();for(var F of NA)if(F.canHandle(A))return F.handle(x,A);return x},K0=async(x,A,F,v,f,E,B,j)=>{var b=A?K.resolve(i.join2(x,A)):x,C=mA(`cp ${b}`);IA(C);try{var t=F;typeof F=="string"&&(t=await uA(F)),t=await hA(t,b),j?.(),E||qA(x,A,t,v,f,B)}finally{GA(C)}},gA=(x,A,F,v,f,E,B,j,b,C)=>{K0(x,A,F,v,f,j,b,C).then(E).catch(B)},r={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,filesystems:null,syncFSRequests:0,ErrnoError:class{name="ErrnoError";constructor(x){this.errno=x}},FSStream:class{shared={};get object(){return this.node}set object(x){this.node=x}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(x){this.shared.flags=x}get position(){return this.shared.position}set position(x){this.shared.position=x}},FSNode:class{node_ops={};stream_ops={};readMode=365;writeMode=146;mounted=null;constructor(x,A,F,v){x||(x=this),this.parent=x,this.mount=x.mount,this.id=r.nextInode++,this.name=A,this.mode=F,this.rdev=v,this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(x){x?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(x){x?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return r.isDir(this.mode)}get isDevice(){return r.isChrdev(this.mode)}addListener(x,A=!1){var F={cb:x,exclusive:A},v=this.listeners??=new Set;return v.add(F),{listeners:v,entry:F}}notifyListeners(x){if(this.listeners){var A;for(var F of this.listeners)F.exclusive?(A||=[]).push(F):F.cb(x);if(A){var v=(this.exclTurn||0)%A.length;this.exclTurn=v+1,A[v].cb(x)}}}},lookupPath(x,A={}){if(!x)throw new r.ErrnoError(44);A.follow_mount??=!0,i.isAbs(x)||(x=r.cwd()+"/"+x);x:for(var F=0;F<40;F++){for(var v=x.split("/").filter(C=>!!C),f=r.root,E="/",B=0;B<v.length;B++){var j=B===v.length-1;if(j&&A.parent)break;if(v[B]!=="."){if(v[B]===".."){if(E=i.dirname(E),r.isRoot(f)){x=E+"/"+v.slice(B+1).join("/"),F--;continue x}else f=f.parent;continue}E=i.join2(E,v[B]);try{f=r.lookupNode(f,v[B])}catch(C){if(C?.errno===44&&j&&A.noent_okay)return{path:E};throw C}if(r.isMountpoint(f)&&(!j||A.follow_mount)&&(f=f.mounted.root),r.isLink(f.mode)&&(!j||A.follow)){if(!f.node_ops.readlink)throw new r.ErrnoError(52);var b=f.node_ops.readlink(f);i.isAbs(b)||(b=i.dirname(E)+"/"+b),x=b+"/"+v.slice(B+1).join("/");continue x}}}return{path:E,node:f}}throw new r.ErrnoError(32)},getPath(x){for(var A;;){if(r.isRoot(x)){var F=x.mount.mountpoint;return A?F[F.length-1]!=="/"?`${F}/${A}`:F+A:F}A=A?`${x.name}/${A}`:x.name,x=x.parent}},hashName(x,A){for(var F=0,v=0;v<A.length;v++)F=(F<<5)-F+A.charCodeAt(v)|0;return(x+F>>>0)%r.nameTable.length},hashAddNode(x){var A=r.hashName(x.parent.id,x.name);x.name_next=r.nameTable[A],r.nameTable[A]=x},hashRemoveNode(x){var A=r.hashName(x.parent.id,x.name);if(r.nameTable[A]===x)r.nameTable[A]=x.name_next;else for(var F=r.nameTable[A];F;){if(F.name_next===x){F.name_next=x.name_next;break}F=F.name_next}},lookupNode(x,A){var F=r.mayLookup(x);if(F)throw new r.ErrnoError(F);for(var v=r.hashName(x.id,A),f=r.nameTable[v];f;f=f.name_next){var E=f.name;if(f.parent.id===x.id&&E===A)return f}return r.lookup(x,A)},createNode(x,A,F,v){var f=new r.FSNode(x,A,F,v);return r.hashAddNode(f),f},destroyNode(x){r.hashRemoveNode(x)},isRoot(x){return x===x.parent},isMountpoint(x){return!!x.mounted},isFile(x){return(x&61440)===32768},isDir(x){return(x&61440)===16384},isLink(x){return(x&61440)===40960},isChrdev(x){return(x&61440)===8192},isBlkdev(x){return(x&61440)===24576},isFIFO(x){return(x&61440)===4096},isSocket(x){return(x&49152)===49152},flagsToPermissionString(x){var A=["r","w","rw"][x&3];return x&512&&(A+="w"),A},nodePermissions(x,A){return r.ignorePermissions?0:A.includes("r")&&!(x.mode&292)||A.includes("w")&&!(x.mode&146)||A.includes("x")&&!(x.mode&73)?2:0},mayLookup(x){if(!r.isDir(x.mode))return 54;var A=r.nodePermissions(x,"x");return A||(x.node_ops.lookup?0:2)},mayCreate(x,A){if(!r.isDir(x.mode))return 54;try{var F=r.lookupNode(x,A);return 20}catch{}return r.nodePermissions(x,"wx")},mayDelete(x,A,F){var v;try{v=r.lookupNode(x,A)}catch(E){return E.errno}var f=r.nodePermissions(x,"wx");if(f)return f;if(F){if(!r.isDir(v.mode))return 54;if(r.isRoot(v)||r.getPath(v)===r.cwd())return 10}else if(r.isDir(v.mode))return 31;return 0},mayOpen(x,A){if(!x)return 44;if(r.isLink(x.mode))return 32;var F=r.flagsToPermissionString(A);return r.isDir(x.mode)&&(F!=="r"||A&576)?31:r.nodePermissions(x,F)},checkOpExists(x,A){if(!x)throw new r.ErrnoError(A);return x},MAX_OPEN_FDS:4096,nextfd(){for(var x=0;x<=r.MAX_OPEN_FDS;x++)if(!r.streams[x])return x;throw new r.ErrnoError(33)},getStreamChecked(x){var A=r.getStream(x);if(!A)throw new r.ErrnoError(8);return A},getStream:x=>r.streams[x],createStream(x,A=-1){return x=Object.assign(new r.FSStream,x),A==-1&&(A=r.nextfd()),x.fd=A,r.streams[A]=x,x},closeStream(x){r.streams[x]=null},dupStream(x,A=-1){var F=r.createStream(x,A);return F.stream_ops?.dup?.(F),F},doSetAttr(x,A,F){var v=x?.stream_ops.setattr,f=v?x:A;v??=A.node_ops.setattr,r.checkOpExists(v,63);try{v(f,F)}catch(E){throw E instanceof RangeError?new r.ErrnoError(22):E}},chrdev_stream_ops:{open(x){var A=r.getDevice(x.node.rdev);x.stream_ops=A.stream_ops,x.stream_ops.open?.(x)},llseek(){throw new r.ErrnoError(70)}},major:x=>x>>8,minor:x=>x&255,makedev:(x,A)=>x<<8|A,registerDevice(x,A){r.devices[x]={stream_ops:A}},getDevice:x=>r.devices[x],getMounts(x){for(var A=[],F=[x];F.length;){var v=F.pop();A.push(v),F.push(...v.mounts)}return A},syncfs(x,A){typeof x=="function"&&(A=x,x=!1),r.syncFSRequests++,r.syncFSRequests>1&&P(`warning: ${r.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var F=r.getMounts(r.root.mount),v=0;function f(j){return r.syncFSRequests--,A(j)}function E(j){if(j)return E.errored?void 0:(E.errored=!0,f(j));++v>=F.length&&f(null)}for(var B of F)B.type.syncfs?B.type.syncfs(B,x,E):E(null)},mount(x,A,F){var v=F==="/",f=!F,E;if(v&&r.root)throw new r.ErrnoError(10);if(!v&&!f){var B=r.lookupPath(F,{follow_mount:!1});if(F=B.path,E=B.node,r.isMountpoint(E))throw new r.ErrnoError(10);if(!r.isDir(E.mode))throw new r.ErrnoError(54)}var j={type:x,opts:A,mountpoint:F,mounts:[]},b=x.mount(j);return b.mount=j,j.root=b,v?r.root=b:E&&(E.mounted=j,E.mount&&E.mount.mounts.push(j)),b},unmount(x){var A=r.lookupPath(x,{follow_mount:!1});if(!r.isMountpoint(A.node))throw new r.ErrnoError(28);var F=A.node,v=F.mounted,f=r.getMounts(v);for(var[E,B]of Object.entries(r.nameTable))for(;B;){var j=B.name_next;f.includes(B.mount)&&r.destroyNode(B),B=j}F.mounted=null;var b=F.mount.mounts.indexOf(v);F.mount.mounts.splice(b,1)},lookup(x,A){return x.node_ops.lookup(x,A)},mknod(x,A,F){var v=r.lookupPath(x,{parent:!0}),f=v.node,E=i.basename(x);if(!E)throw new r.ErrnoError(28);if(E==="."||E==="..")throw new r.ErrnoError(20);var B=r.mayCreate(f,E);if(B)throw new r.ErrnoError(B);if(!f.node_ops.mknod)throw new r.ErrnoError(63);return f.node_ops.mknod(f,E,A,F)},statfs(x){return r.statfsNode(r.lookupPath(x,{follow:!0}).node)},statfsStream(x){return r.statfsNode(x.node)},statfsNode(x){var A={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:r.nextInode,ffree:r.nextInode-1,fsid:42,flags:2,namelen:255};return x.node_ops.statfs&&Object.assign(A,x.node_ops.statfs(x.mount.opts.root)),A},create(x,A=438){return A&=4095,A|=32768,r.mknod(x,A,0)},mkdir(x,A=511){return A&=1023,A|=16384,r.mknod(x,A,0)},mkdirTree(x,A){var F=x.split("/"),v="";for(var f of F)if(f){(v||i.isAbs(x))&&(v+="/"),v+=f;try{r.mkdir(v,A)}catch(E){if(E.errno!=20)throw E}}},mkdev(x,A,F){return typeof F>"u"&&(F=A,A=438),A|=8192,r.mknod(x,A,F)},symlink(x,A){if(!K.resolve(x))throw new r.ErrnoError(44);var F=r.lookupPath(A,{parent:!0}),v=F.node;if(!v)throw new r.ErrnoError(44);var f=i.basename(A),E=r.mayCreate(v,f);if(E)throw new r.ErrnoError(E);if(!v.node_ops.symlink)throw new r.ErrnoError(63);return v.node_ops.symlink(v,f,x)},link(x,A,F){var v=r.lookupPath(A,{parent:!0}),f=v.node;if(!f)throw new r.ErrnoError(44);var E=i.basename(A),B=r.mayCreate(f,E);if(B)throw new r.ErrnoError(B);if(!f.node_ops.link)throw new r.ErrnoError(34);return f.node_ops.link(f,E,x,F)},rename(x,A){var F=i.dirname(x),v=i.dirname(A),f=i.basename(x),E=i.basename(A),B,j,b;if(B=r.lookupPath(x,{parent:!0}),j=B.node,B=r.lookupPath(A,{parent:!0}),b=B.node,!j||!b)throw new r.ErrnoError(44);if(j.mount!==b.mount)throw new r.ErrnoError(75);var C=r.lookupNode(j,f),t=K.relative(x,v);if(t.charAt(0)!==".")throw new r.ErrnoError(28);if(t=K.relative(A,F),t.charAt(0)!==".")throw new r.ErrnoError(55);var k;try{k=r.lookupNode(b,E)}catch{}if(C!==k){var D=r.isDir(C.mode),e=r.mayDelete(j,f,D);if(e)throw new r.ErrnoError(e);if(e=k?r.mayDelete(b,E,D):r.mayCreate(b,E),e)throw new r.ErrnoError(e);if(!j.node_ops.rename)throw new r.ErrnoError(63);if(r.isMountpoint(C)||k&&r.isMountpoint(k))throw new r.ErrnoError(10);if(b!==j&&(e=r.nodePermissions(j,"w"),e))throw new r.ErrnoError(e);r.hashRemoveNode(C);try{j.node_ops.rename(C,b,E),C.parent=b}catch(s){throw s}finally{r.hashAddNode(C)}}},rmdir(x){var A=r.lookupPath(x,{parent:!0}),F=A.node,v=i.basename(x),f=r.lookupNode(F,v),E=r.mayDelete(F,v,!0);if(E)throw new r.ErrnoError(E);if(!F.node_ops.rmdir)throw new r.ErrnoError(63);if(r.isMountpoint(f))throw new r.ErrnoError(10);F.node_ops.rmdir(F,v),r.destroyNode(f)},readdir(x){var A=r.lookupPath(x,{follow:!0}),F=A.node,v=r.checkOpExists(F.node_ops.readdir,54);return v(F)},unlink(x){var A=r.lookupPath(x,{parent:!0}),F=A.node;if(!F)throw new r.ErrnoError(44);var v=i.basename(x),f=r.lookupNode(F,v),E=r.mayDelete(F,v,!1);if(E)throw new r.ErrnoError(E);if(!F.node_ops.unlink)throw new r.ErrnoError(63);if(r.isMountpoint(f))throw new r.ErrnoError(10);F.node_ops.unlink(F,v),r.destroyNode(f)},readlink(x){var A=r.lookupPath(x),F=A.node;if(!F)throw new r.ErrnoError(44);if(!F.node_ops.readlink)throw new r.ErrnoError(28);return F.node_ops.readlink(F)},stat(x,A){var F=r.lookupPath(x,{follow:!A}),v=F.node,f=r.checkOpExists(v.node_ops.getattr,63);return f(v)},fstat(x){var A=r.getStreamChecked(x),F=A.node,v=A.stream_ops.getattr,f=v?A:F;return v??=F.node_ops.getattr,r.checkOpExists(v,63),v(f)},lstat(x){return r.stat(x,!0)},doChmod(x,A,F,v){r.doSetAttr(x,A,{mode:F&4095|A.mode&-4096,ctime:Date.now(),dontFollow:v})},chmod(x,A,F){var v;if(typeof x=="string"){var f=r.lookupPath(x,{follow:!F});v=f.node}else v=x;r.doChmod(null,v,A,F)},lchmod(x,A){r.chmod(x,A,!0)},fchmod(x,A){var F=r.getStreamChecked(x);r.doChmod(F,F.node,A,!1)},doChown(x,A,F){r.doSetAttr(x,A,{timestamp:Date.now(),dontFollow:F})},chown(x,A,F,v){var f;if(typeof x=="string"){var E=r.lookupPath(x,{follow:!v});f=E.node}else f=x;r.doChown(null,f,v)},lchown(x,A,F){r.chown(x,A,F,!0)},fchown(x,A,F){var v=r.getStreamChecked(x);r.doChown(v,v.node,!1)},doTruncate(x,A,F){if(r.isDir(A.mode))throw new r.ErrnoError(31);if(!r.isFile(A.mode))throw new r.ErrnoError(28);var v=r.nodePermissions(A,"w");if(v)throw new r.ErrnoError(v);r.doSetAttr(x,A,{size:F,timestamp:Date.now()})},truncate(x,A){if(A<0)throw new r.ErrnoError(28);var F;if(typeof x=="string"){var v=r.lookupPath(x,{follow:!0});F=v.node}else F=x;r.doTruncate(null,F,A)},ftruncate(x,A){var F=r.getStreamChecked(x);if(A<0||(F.flags&2097155)===0)throw new r.ErrnoError(28);r.doTruncate(F,F.node,A)},utime(x,A,F,v){var f=r.lookupPath(x,{follow:!v});r.doSetAttr(null,f.node,{atime:A,mtime:F,dontFollow:v})},open(x,A,F=438){if(x==="")throw new r.ErrnoError(44);A=_A(A),A&64?F=F&4095|32768:F=0;var v,f;if(typeof x=="object")v=x;else{f=x.endsWith("/");var E=r.lookupPath(x,{follow:!(A&131072),noent_okay:!0});v=E.node,x=E.path}var B=!1;if(A&64)if(v){if(A&128)throw new r.ErrnoError(20)}else{if(f)throw new r.ErrnoError(31);v=r.mknod(x,F|511,0),B=!0}if(!v)throw new r.ErrnoError(44);if(r.isChrdev(v.mode)&&(A&=-513),A&65536&&!r.isDir(v.mode))throw new r.ErrnoError(54);if(!B){var j=r.mayOpen(v,A);if(j)throw new r.ErrnoError(j)}A&512&&!B&&r.truncate(v,0),A&=-131713;var b=r.createStream({node:v,path:r.getPath(v),flags:A,seekable:!0,position:0,stream_ops:v.stream_ops,ungotten:[],error:!1});return b.stream_ops.open&&b.stream_ops.open(b),B&&r.chmod(v,F&511),b},close(x){if(r.isClosed(x))throw new r.ErrnoError(8);x.getdents&&(x.getdents=null),x.node?.notifyListeners(32);try{x.stream_ops.close&&x.stream_ops.close(x)}catch(A){throw A}finally{r.closeStream(x.fd)}x.fd=null},isClosed(x){return x.fd===null},llseek(x,A,F){if(r.isClosed(x))throw new r.ErrnoError(8);if(!x.seekable||!x.stream_ops.llseek)throw new r.ErrnoError(70);if(F!=0&&F!=1&&F!=2)throw new r.ErrnoError(28);return x.position=x.stream_ops.llseek(x,A,F),x.ungotten=[],x.position},read(x,A,F,v,f){if(v<0||f<0)throw new r.ErrnoError(28);if(r.isClosed(x))throw new r.ErrnoError(8);if((x.flags&2097155)===1)throw new r.ErrnoError(8);if(r.isDir(x.node.mode))throw new r.ErrnoError(31);if(!x.stream_ops.read)throw new r.ErrnoError(28);var E=typeof f<"u";if(!E)f=x.position;else if(!x.seekable)throw new r.ErrnoError(70);var B=x.stream_ops.read(x,A,F,v,f);return E||(x.position+=B),B},write(x,A,F,v,f,E){if(v<0||f<0)throw new r.ErrnoError(28);if(r.isClosed(x))throw new r.ErrnoError(8);if((x.flags&2097155)===0)throw new r.ErrnoError(8);if(r.isDir(x.node.mode))throw new r.ErrnoError(31);if(!x.stream_ops.write)throw new r.ErrnoError(28);x.seekable&&x.flags&1024&&r.llseek(x,0,2);var B=typeof f<"u";if(!B)f=x.position;else if(!x.seekable)throw new r.ErrnoError(70);var j=x.stream_ops.write(x,A,F,v,f,E);return B||(x.position+=j),j},mmap(x,A,F,v,f){if(v&2&&!(f&2)&&(x.flags&2097155)!==2)throw new r.ErrnoError(2);if((x.flags&2097155)===1)throw new r.ErrnoError(2);if(!x.stream_ops.mmap)throw new r.ErrnoError(43);if(!A)throw new r.ErrnoError(28);return x.stream_ops.mmap(x,A,F,v,f)},msync(x,A,F,v,f){return x.stream_ops.msync?x.stream_ops.msync(x,A,F,v,f):0},ioctl(x,A,F){if(!x.stream_ops.ioctl)throw new r.ErrnoError(59);return x.stream_ops.ioctl(x,A,F)},readFile(x,A={}){A.flags=A.flags??0,A.encoding=A.encoding??"binary",A.encoding!=="utf8"&&A.encoding!=="binary"&&p(`Invalid encoding type "${A.encoding}"`);var F=r.open(x,A.flags),v=r.stat(x),f=v.size,E=new Uint8Array(f);return r.read(F,E,0,f,0),A.encoding==="utf8"&&(E=J(E)),r.close(F),E},writeFile(x,A,F={}){F.flags=F.flags??577;var v=r.open(x,F.flags,F.mode);A=T0(A),r.write(v,A,0,A.byteLength,void 0,F.canOwn),r.close(v)},cwd:()=>r.currentPath,chdir(x){var A=r.lookupPath(x,{follow:!0});if(A.node===null)throw new r.ErrnoError(44);if(!r.isDir(A.node.mode))throw new r.ErrnoError(54);var F=r.nodePermissions(A.node,"x");if(F)throw new r.ErrnoError(F);r.currentPath=A.path},createDefaultDirectories(){r.mkdir("/tmp"),r.mkdir("/home"),r.mkdir("/home/web_user")},createDefaultDevices(){r.mkdir("/dev"),r.registerDevice(r.makedev(1,3),{read:()=>0,write:(v,f,E,B,j)=>B,llseek:()=>0}),r.mkdev("/dev/null",r.makedev(1,3)),S.register(r.makedev(5,0),S.default_tty_ops),S.register(r.makedev(6,0),S.default_tty1_ops),r.mkdev("/dev/tty",r.makedev(5,0)),r.mkdev("/dev/tty1",r.makedev(6,0));var x=new Uint8Array(1024),A=0,F=()=>(A||(M0(x),A=x.byteLength),x[--A]);r.createDevice("/dev","random",F),r.createDevice("/dev","urandom",F),r.mkdir("/dev/shm"),r.mkdir("/dev/shm/tmp")},createSpecialDirectories(){r.mkdir("/proc");var x=r.mkdir("/proc/self");r.mkdir("/proc/self/fd"),r.mount({mount(){var A=r.createNode(x,"fd",16895,73);return A.stream_ops={llseek:o.stream_ops.llseek},A.node_ops={lookup(F,v){var f=+v,E=r.getStreamChecked(f),B={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>E.path},id:f+1};return B.parent=B,B},readdir(){return Array.from(r.streams.entries()).filter(([F,v])=>v).map(([F,v])=>F.toString())}},A}},{},"/proc/self/fd")},createStandardStreams(x,A,F){x?r.createDevice("/dev","stdin",x):r.symlink("/dev/tty","/dev/stdin"),A?r.createDevice("/dev","stdout",null,A):r.symlink("/dev/tty","/dev/stdout"),F?r.createDevice("/dev","stderr",null,F):r.symlink("/dev/tty1","/dev/stderr");var v=r.open("/dev/stdin",0),f=r.open("/dev/stdout",1),E=r.open("/dev/stderr",1)},staticInit(){r.nameTable=new Array(4096),r.mount(o,{},"/"),r.createDefaultDirectories(),r.createDefaultDevices(),r.createSpecialDirectories(),r.filesystems={MEMFS:o}},init(x,A,F){r.initialized=!0,x??=a.stdin,A??=a.stdout,F??=a.stderr,r.createStandardStreams(x,A,F)},quit(){r.initialized=!1;for(var x of r.streams)x&&r.close(x)},findObject(x,A){var F=r.analyzePath(x,A);return F.exists?F.object:null},analyzePath(x,A){try{var F=r.lookupPath(x,{follow:!A});x=F.path}catch{}var v={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var F=r.lookupPath(x,{parent:!0});v.parentExists=!0,v.parentPath=F.path,v.parentObject=F.node,v.name=i.basename(x),F=r.lookupPath(x,{follow:!A}),v.exists=!0,v.path=F.path,v.object=F.node,v.name=F.node.name,v.isRoot=F.path==="/"}catch(f){v.error=f.errno}return v},createPath(x,A,F,v){x=typeof x=="string"?x:r.getPath(x);for(var f=A.split("/").reverse();f.length;){var E=f.pop();if(E){var B=i.join2(x,E);try{r.mkdir(B)}catch(j){if(j.errno!=20)throw j}x=B}}return B},createFile(x,A,F,v,f){var E=i.join2(typeof x=="string"?x:r.getPath(x),A),B=e0(v,f);return r.create(E,B)},createDataFile(x,A,F,v,f,E){var B=A;x&&(x=typeof x=="string"?x:r.getPath(x),B=A?i.join2(x,A):x);var j=e0(v,f),b=r.create(B,j);if(F){F=T0(F),r.chmod(b,j|146);var C=r.open(b,577);r.write(C,F,0,F.length,0,E),r.close(C),r.chmod(b,j)}},createDevice(x,A,F,v){var f=i.join2(typeof x=="string"?x:r.getPath(x),A),E=e0(!!F,!!v);r.createDevice.major??=64;var B=r.makedev(r.createDevice.major++,0);return r.registerDevice(B,{open(j){j.seekable=!1},close(j){v?.buffer?.length&&v(10)},read(j,b,C,t,k){for(var D=0,e=0;e<t;e++){var s;try{s=F()}catch{throw new r.ErrnoError(29)}if(s===void 0&&!D)throw new r.ErrnoError(6);if(s==null)break;D++,b[C+e]=s}return D&&(j.node.atime=Date.now()),D},write(j,b,C,t,k){for(var D=0;D<t;D++)try{v(b[C+D])}catch{throw new r.ErrnoError(29)}return t&&(j.node.mtime=j.node.ctime=Date.now()),D}}),r.mkdev(f,E,B)},forceLoadFile(x){if(x.isDevice||x.isFolder||x.link||x.contents)return!0;if(globalThis.XMLHttpRequest)p("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");else try{x.contents=o0(x.url)}catch{throw new r.ErrnoError(29)}},createLazyFile(x,A,F,v,f){class E{lengthKnown=!1;chunks=[];get(D){if(!(D>this.length-1||D<0)){var e=D%this.chunkSize,s=D/this.chunkSize|0;return this.getter(s)[e]}}setDataGetter(D){this.getter=D}cacheLength(){var D=new XMLHttpRequest;D.open("HEAD",F,!1),D.send(null),D.status>=200&&D.status<300||D.status===304||p(`Couldn't load ${F}. Status: ${D.status}`);var e=Number(D.getResponseHeader("Content-length")),s,d=(s=D.getResponseHeader("Accept-Ranges"))&&s==="bytes",c=(s=D.getResponseHeader("Content-Encoding"))&&s==="gzip",m=1024*1024;d||(m=e);var N=(g,X)=>{g>X&&p(`invalid range (${g}, ${X}) or no bytes requested!`),X>e-1&&p(`only ${e} bytes available! programmer error!`);var $=new XMLHttpRequest;return $.open("GET",F,!1),e!==m&&$.setRequestHeader("Range",`bytes=${g}-${X}`),$.responseType="arraybuffer",$.overrideMimeType&&$.overrideMimeType("text/plain; charset=x-user-defined"),$.send(null),$.status>=200&&$.status<300||$.status===304||p(`Couldn't load ${F}. Status: ${$.status}`),$.response!==void 0?new Uint8Array($.response||[]):C0($.responseText??"",!0)},Y=this;Y.setDataGetter(g=>{var X=g*m,$=(g+1)*m-1;return $=Math.min($,e-1),typeof Y.chunks[g]>"u"&&(Y.chunks[g]=N(X,$)),typeof Y.chunks[g]>"u"&&p("doXHR failed!"),Y.chunks[g]}),(c||!e)&&(m=e=1,e=this.getter(0).length,m=e,Q("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=e,this._chunkSize=m,this.lengthKnown=!0}get length(){return this.lengthKnown||this.cacheLength(),this._length}get chunkSize(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}if(globalThis.XMLHttpRequest){F0||p("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var B=new E,j={isDevice:!1,contents:B}}else var j={isDevice:!1,url:F};var b=r.createFile(x,A,j,v,f);j.contents?b.contents=j.contents:j.url&&(b.contents=null,b.url=j.url),Object.defineProperties(b,{usedBytes:{get:function(){return this.contents.length}}});var C={};for(let[k,D]of Object.entries(b.stream_ops))C[k]=(...e)=>(r.forceLoadFile(b),D(...e));function t(k,D,e,s,d){var c=k.node.contents;if(d>=c.length)return 0;var m=Math.min(c.length-d,s);if(c.slice)for(var N=0;N<m;N++)D[e+N]=c[d+N];else for(var N=0;N<m;N++)D[e+N]=c.get(d+N);return m}return C.read=(k,D,e,s,d)=>(r.forceLoadFile(b),t(k,D,e,s,d)),C.mmap=(k,D,e,s,d)=>{r.forceLoadFile(b);var c=P0(D);if(!c)throw new r.ErrnoError(48);return t(k,_,c,D,e),{ptr:c,allocated:!0}},b.stream_ops=C,b}},W={currentUmask:18,calculateAt(x,A,F){if(i.isAbs(A))return A;var v;if(x===-100)v=r.cwd();else{var f=W.getStreamFromFD(x);v=f.path}if(A.length==0){if(!F)throw new r.ErrnoError(44);return v}return v+"/"+A},writeStat(x,A){n[x>>2]=A.dev,n[x+4>>2]=A.mode,n[x+8>>2]=A.nlink,n[x+12>>2]=A.uid,n[x+16>>2]=A.gid,n[x+20>>2]=A.rdev,q[x+24>>3]=BigInt(A.size),L[x+32>>2]=4096,L[x+36>>2]=A.blocks;var F=A.atime.getTime(),v=A.mtime.getTime(),f=A.ctime.getTime();return q[x+40>>3]=BigInt(Math.floor(F/1e3)),n[x+48>>2]=F%1e3*1e3*1e3,q[x+56>>3]=BigInt(Math.floor(v/1e3)),n[x+64>>2]=v%1e3*1e3*1e3,q[x+72>>3]=BigInt(Math.floor(f/1e3)),n[x+80>>2]=f%1e3*1e3*1e3,q[x+88>>3]=BigInt(A.ino),0},writeStatFs(x,A){n[x+4>>2]=A.bsize,n[x+60>>2]=A.bsize,q[x+8>>3]=BigInt(A.blocks),q[x+16>>3]=BigInt(A.bfree),q[x+24>>3]=BigInt(A.bavail),q[x+32>>3]=BigInt(A.files),q[x+40>>3]=BigInt(A.ffree),n[x+48>>2]=A.fsid,n[x+64>>2]=A.flags,n[x+56>>2]=A.namelen},doMsync(x,A,F,v,f){if(!r.isFile(A.node.mode))throw new r.ErrnoError(43);if(v&2)return 0;var E=G.subarray(x,x+F);r.msync(A,E,f,F,v)},getStreamFromFD(x){var A=r.getStreamChecked(x);return A},varargs:void 0,getStr(x){var A=S0(x);return A}};function HA(x){try{var A=W.getStreamFromFD(x);return r.close(A),0}catch(F){if(typeof r>"u"||F.name!=="ErrnoError")throw F;return F.errno}}var yA=(x,A,F,v)=>{for(var f=0,E=0;E<F;E++){var B=n[A>>2],j=n[A+4>>2];A+=8;try{var b=r.read(x,_,B,j,v)}catch(C){if(f>0&&C instanceof r.ErrnoError&&(C.errno==6||C.errno==6))break;throw C}if(b<0)return-1;if(f+=b,b<j)break;typeof v<"u"&&(v+=b)}return f};function SA(x,A,F,v){try{var f=W.getStreamFromFD(x),E=yA(f,A,F);return n[v>>2]=E,0}catch(B){if(typeof r>"u"||B.name!=="ErrnoError")throw B;return B.errno}}var wA=9007199254740992,LA=-9007199254740992,MA=x=>x<LA||x>wA?NaN:Number(x);function PA(x,A,F,v){A=MA(A);try{if(isNaN(A))return 22;var f=W.getStreamFromFD(x);return r.llseek(f,A,F),q[v>>3]=BigInt(f.position),f.getdents&&!A&&F===0&&(f.getdents=null),0}catch(E){if(typeof r>"u"||E.name!=="ErrnoError")throw E;return E.errno}}var TA=(x,A,F,v)=>{if(F==1)return r.write(x,_,n[A>>2],n[A+4>>2],v);for(var f=0,E=0,B=A;E<F;E++,B+=8)f+=n[B+4>>2];for(var j=new Uint8Array(f),b=0,E=0;E<F;E++,A+=8){var C=n[A>>2],t=n[A+4>>2];j.set(G.subarray(C,C+t),b),b+=t}return r.write(x,j,0,f,v)};function OA(x,A,F,v){try{var f=W.getStreamFromFD(x),E=TA(f,A,F);return n[v>>2]=E,0}catch(B){if(typeof r>"u"||B.name!=="ErrnoError")throw B;return B.errno}}r.createPreloadedFile=gA,r.preloadFile=K0,r.staticInit();{a.noExitRuntime&&(tx=a.noExitRuntime),a.print&&(Q=a.print),a.printErr&&(P=a.printErr),a.arguments&&(W0=a.arguments),a.thisProgram&&(D0=a.thisProgram);var R=a.preInit;if(R)for(typeof R=="function"&&(a.preInit=R=[R]);R.length>0;)R.shift()()}var R0,H,t0,JA,KA,A0,X0;function RA(x){R0=x.L,H=x.M,t0=x.O,JA=A0=x.J,KA=X0=x.N}var XA={b:ox,B:ax,q:sx,F:lx,D:$x,p:_x,r:Lx,j:Mx,i:Px,E:Tx,l:Vx,G:Wx,g:AA,a:v0,s:FA,d:vA,h:rA,f:fA,n:EA,I:BA,H:jA,c:bA,m:CA,e:eA,k:tA,v:DA,C:nA,A:oA,z:iA,t:lA,u:dA,w:HA,x:SA,y:PA,o:OA};async function UA(){vx(),M&&await pA();var x=a.setStatus;x&&(x("Running..."),await new Promise(A=>setTimeout(A,1)),setTimeout(x,1,"")),!a0&&(rx(),a.onRuntimeInitialized?.(),fx())}var z;return z=await ex(),await UA(),a}var ZA=VA;export{ZA as default};
|
|
1660
|
-
//# sourceMappingURL=bandage-layout-3AR6BCUD-
|
|
1660
|
+
//# sourceMappingURL=bandage-layout-3AR6BCUD-OCBA5MS7.js.map
|