@gmod/bbi 1.0.33 → 2.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.
Files changed (60) hide show
  1. package/CHANGELOG.md +20 -3
  2. package/dist/bbi.d.ts +2 -2
  3. package/dist/bbi.js +56 -59
  4. package/dist/bbi.js.map +1 -0
  5. package/dist/bigbed.d.ts +1 -2
  6. package/dist/bigbed.js +23 -20
  7. package/dist/bigbed.js.map +1 -0
  8. package/dist/bigwig.d.ts +1 -3
  9. package/dist/bigwig.js +5 -8
  10. package/dist/bigwig.js.map +1 -0
  11. package/dist/blockView.d.ts +8 -9
  12. package/dist/blockView.js +153 -92
  13. package/dist/blockView.js.map +1 -0
  14. package/dist/index.js +1 -0
  15. package/dist/index.js.map +1 -0
  16. package/dist/range.js +2 -0
  17. package/dist/range.js.map +1 -0
  18. package/dist/unzip-pako.d.ts +1 -1
  19. package/dist/unzip-pako.js +2 -1
  20. package/dist/unzip-pako.js.map +1 -0
  21. package/dist/unzip.js +1 -0
  22. package/dist/unzip.js.map +1 -0
  23. package/dist/util.d.ts +11 -1
  24. package/dist/util.js +10 -4
  25. package/dist/util.js.map +1 -0
  26. package/esm/bbi.d.ts +2 -2
  27. package/esm/bbi.js +62 -67
  28. package/esm/bbi.js.map +1 -0
  29. package/esm/bigbed.d.ts +1 -2
  30. package/esm/bigbed.js +42 -46
  31. package/esm/bigbed.js.map +1 -0
  32. package/esm/bigwig.d.ts +1 -3
  33. package/esm/bigwig.js +7 -14
  34. package/esm/bigwig.js.map +1 -0
  35. package/esm/blockView.d.ts +8 -9
  36. package/esm/blockView.js +166 -116
  37. package/esm/blockView.js.map +1 -0
  38. package/esm/index.js +3 -7
  39. package/esm/index.js.map +1 -0
  40. package/esm/range.js +3 -4
  41. package/esm/range.js.map +1 -0
  42. package/esm/unzip-pako.d.ts +1 -1
  43. package/esm/unzip-pako.js +4 -7
  44. package/esm/unzip-pako.js.map +1 -0
  45. package/esm/unzip.js +3 -5
  46. package/esm/unzip.js.map +1 -0
  47. package/esm/util.d.ts +11 -1
  48. package/esm/util.js +14 -15
  49. package/esm/util.js.map +1 -0
  50. package/package.json +13 -13
  51. package/src/bbi.ts +375 -0
  52. package/src/bigbed.ts +244 -0
  53. package/src/bigwig.ts +38 -0
  54. package/src/blockView.ts +496 -0
  55. package/src/declare.d.ts +2 -0
  56. package/src/index.ts +3 -0
  57. package/src/range.ts +142 -0
  58. package/src/unzip-pako.ts +5 -0
  59. package/src/unzip.ts +2 -0
  60. package/src/util.ts +83 -0
package/esm/blockView.js CHANGED
@@ -1,31 +1,30 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.BlockView = void 0;
7
- const binary_parser_1 = require("@gmod/binary-parser");
8
- const abortable_promise_cache_1 = __importDefault(require("abortable-promise-cache"));
9
- const unzip_1 = require("./unzip");
10
- const quick_lru_1 = __importDefault(require("quick-lru"));
11
- const range_1 = __importDefault(require("./range"));
12
- const util_1 = require("./util");
1
+ import { Parser } from 'binary-parser';
2
+ import AbortablePromiseCache from 'abortable-promise-cache';
3
+ import QuickLRU from 'quick-lru';
4
+ // locals
5
+ import Range from './range';
6
+ import { unzip } from './unzip';
7
+ import { groupBlocks, checkAbortSignal } from './util';
13
8
  const BIG_WIG_TYPE_GRAPH = 1;
14
9
  const BIG_WIG_TYPE_VSTEP = 2;
15
10
  const BIG_WIG_TYPE_FSTEP = 3;
11
+ function coordFilter(s1, e1, s2, e2) {
12
+ return s1 < e2 && e1 >= s2;
13
+ }
16
14
  function getParsers(isBigEndian) {
17
15
  const le = isBigEndian ? 'big' : 'little';
18
- const summaryParser = new binary_parser_1.Parser()
16
+ const summaryParser = new Parser()
19
17
  .endianess(le)
20
18
  .uint32('chromId')
21
19
  .uint32('start')
22
20
  .uint32('end')
23
21
  .uint32('validCnt')
24
- .float('minScore')
25
- .float('maxScore')
26
- .float('sumData')
27
- .float('sumSqData');
28
- const leafParser = new binary_parser_1.Parser()
22
+ .floatle('minScore')
23
+ .floatle('maxScore')
24
+ .floatle('sumData')
25
+ .floatle('sumSqData')
26
+ .saveOffset('offset');
27
+ const leafParser = new Parser()
29
28
  .endianess(le)
30
29
  .uint8('isLeaf')
31
30
  .skip(1)
@@ -33,36 +32,41 @@ function getParsers(isBigEndian) {
33
32
  .choice({
34
33
  tag: 'isLeaf',
35
34
  choices: {
36
- 1: new binary_parser_1.Parser().array('blocksToFetch', {
35
+ 1: new Parser().endianess(le).array('blocksToFetch', {
37
36
  length: 'cnt',
38
- type: new binary_parser_1.Parser()
37
+ type: new Parser()
38
+ .endianess(le)
39
39
  .uint32('startChrom')
40
40
  .uint32('startBase')
41
41
  .uint32('endChrom')
42
42
  .uint32('endBase')
43
43
  .uint64('blockOffset')
44
- .uint64('blockSize'),
44
+ .uint64('blockSize')
45
+ .saveOffset('offset'),
45
46
  }),
46
- 0: new binary_parser_1.Parser().array('recurOffsets', {
47
+ 0: new Parser().array('recurOffsets', {
47
48
  length: 'cnt',
48
- type: new binary_parser_1.Parser()
49
+ type: new Parser()
50
+ .endianess(le)
49
51
  .uint32('startChrom')
50
52
  .uint32('startBase')
51
53
  .uint32('endChrom')
52
54
  .uint32('endBase')
53
- .uint64('blockOffset'),
55
+ .uint64('blockOffset')
56
+ .saveOffset('offset'),
54
57
  }),
55
58
  },
56
59
  });
57
- const bigBedParser = new binary_parser_1.Parser()
60
+ const bigBedParser = new Parser()
58
61
  .endianess(le)
59
62
  .uint32('chromId')
60
63
  .int32('start')
61
64
  .int32('end')
62
65
  .string('rest', {
63
66
  zeroTerminated: true,
64
- });
65
- const bigWigParser = new binary_parser_1.Parser()
67
+ })
68
+ .saveOffset('offset');
69
+ const bigWigParser = new Parser()
66
70
  .endianess(le)
67
71
  .skip(4)
68
72
  .int32('blockStart')
@@ -75,17 +79,21 @@ function getParsers(isBigEndian) {
75
79
  .choice({
76
80
  tag: 'blockType',
77
81
  choices: {
78
- [BIG_WIG_TYPE_FSTEP]: new binary_parser_1.Parser().array('items', {
82
+ [BIG_WIG_TYPE_FSTEP]: new Parser().array('items', {
79
83
  length: 'itemCount',
80
- type: new binary_parser_1.Parser().float('score'),
84
+ type: new Parser().floatle('score'),
81
85
  }),
82
- [BIG_WIG_TYPE_VSTEP]: new binary_parser_1.Parser().array('items', {
86
+ [BIG_WIG_TYPE_VSTEP]: new Parser().array('items', {
83
87
  length: 'itemCount',
84
- type: new binary_parser_1.Parser().int32('start').float('score'),
88
+ type: new Parser().endianess(le).int32('start').floatle('score'),
85
89
  }),
86
- [BIG_WIG_TYPE_GRAPH]: new binary_parser_1.Parser().array('items', {
90
+ [BIG_WIG_TYPE_GRAPH]: new Parser().array('items', {
87
91
  length: 'itemCount',
88
- type: new binary_parser_1.Parser().int32('start').int32('end').float('score'),
92
+ type: new Parser()
93
+ .endianess(le)
94
+ .int32('start')
95
+ .int32('end')
96
+ .floatle('score'),
89
97
  }),
90
98
  },
91
99
  });
@@ -103,44 +111,43 @@ function getParsers(isBigEndian) {
103
111
  * Explorer by Thomas Down.
104
112
  * @constructs
105
113
  */
106
- class BlockView {
107
- constructor(bbi, refsByName, cirTreeOffset, cirTreeLength, isBigEndian, isCompressed, blockType) {
108
- this.featureCache = new abortable_promise_cache_1.default({
109
- cache: new quick_lru_1.default({ maxSize: 1000 }),
114
+ export class BlockView {
115
+ constructor(bbi, refsByName, cirTreeOffset, isBigEndian, isCompressed, blockType) {
116
+ this.bbi = bbi;
117
+ this.refsByName = refsByName;
118
+ this.cirTreeOffset = cirTreeOffset;
119
+ this.isBigEndian = isBigEndian;
120
+ this.isCompressed = isCompressed;
121
+ this.blockType = blockType;
122
+ this.featureCache = new AbortablePromiseCache({
123
+ cache: new QuickLRU({ maxSize: 1000 }),
110
124
  fill: async (requestData, signal) => {
111
- const { length, offset } = requestData;
112
- const { buffer } = await this.bbi.read(Buffer.alloc(length), 0, length, offset, { signal });
125
+ const len = Number(requestData.length);
126
+ const off = Number(requestData.offset);
127
+ const { buffer } = await this.bbi.read(Buffer.alloc(len), 0, len, off, {
128
+ signal,
129
+ });
113
130
  return buffer;
114
131
  },
115
132
  });
116
133
  if (!(cirTreeOffset >= 0)) {
117
134
  throw new Error('invalid cirTreeOffset!');
118
135
  }
119
- if (!(cirTreeLength > 0)) {
120
- throw new Error('invalid cirTreeLength!');
121
- }
122
- this.cirTreeOffset = cirTreeOffset;
123
- this.cirTreeLength = cirTreeLength;
124
- this.isCompressed = isCompressed;
125
- this.refsByName = refsByName;
126
- this.isBigEndian = isBigEndian;
127
- this.bbi = bbi;
128
- this.blockType = blockType;
129
- Object.assign(this, getParsers(isBigEndian));
136
+ const parsers = getParsers(isBigEndian);
137
+ this.leafParser = parsers.leafParser;
138
+ this.bigBedParser = parsers.bigBedParser;
130
139
  }
131
140
  async readWigData(chrName, start, end, observer, opts) {
132
141
  try {
133
142
  const { refsByName, bbi, cirTreeOffset, isBigEndian } = this;
134
- const { signal } = opts;
135
143
  const chrId = refsByName[chrName];
136
144
  if (chrId === undefined) {
137
145
  observer.complete();
138
146
  }
139
147
  const request = { chrId, start, end };
140
148
  if (!this.cirTreePromise) {
141
- this.cirTreePromise = bbi.read(Buffer.alloc(48), 0, 48, cirTreeOffset, {
142
- signal,
143
- });
149
+ const off = Number(cirTreeOffset);
150
+ this.cirTreePromise = bbi.read(Buffer.alloc(48), 0, 48, off, opts);
144
151
  }
145
152
  const { buffer } = await this.cirTreePromise;
146
153
  const cirBlockSize = isBigEndian
@@ -151,9 +158,11 @@ class BlockView {
151
158
  const cirFobRecur2 = (cirBlockData, offset, level) => {
152
159
  try {
153
160
  const data = cirBlockData.subarray(offset);
154
- const p = this.leafParser.parse(data).result;
161
+ const p = this.leafParser.parse(data);
155
162
  if (p.blocksToFetch) {
156
- blocksToFetch = blocksToFetch.concat(p.blocksToFetch.filter(filterFeats).map((l) => ({
163
+ blocksToFetch = blocksToFetch.concat(p.blocksToFetch
164
+ .filter(filterFeats)
165
+ .map((l) => ({
157
166
  offset: l.blockOffset,
158
167
  length: l.blockSize,
159
168
  })));
@@ -161,7 +170,7 @@ class BlockView {
161
170
  if (p.recurOffsets) {
162
171
  const recurOffsets = p.recurOffsets
163
172
  .filter(filterFeats)
164
- .map((l) => l.blockOffset);
173
+ .map((l) => Number(l.blockOffset));
165
174
  if (recurOffsets.length > 0) {
166
175
  cirFobRecur(recurOffsets, level + 1);
167
176
  }
@@ -180,7 +189,7 @@ class BlockView {
180
189
  try {
181
190
  const length = fr.max() - fr.min();
182
191
  const offset = fr.min();
183
- const resultBuffer = await this.featureCache.get(`${length}_${offset}`, { length, offset }, signal);
192
+ const resultBuffer = await this.featureCache.get(`${length}_${offset}`, { length, offset }, opts.signal);
184
193
  for (let i = 0; i < off.length; i += 1) {
185
194
  if (fr.contains(off[i])) {
186
195
  cirFobRecur2(resultBuffer, off[i] - offset, level);
@@ -198,10 +207,10 @@ class BlockView {
198
207
  const cirFobRecur = (offset, level) => {
199
208
  try {
200
209
  outstanding += offset.length;
201
- const maxCirBlockSpan = 4 + cirBlockSize * 32; // Upper bound on size, based on a completely full leaf node.
202
- let spans = new range_1.default(offset[0], offset[0] + maxCirBlockSpan);
210
+ const maxCirBlockSpan = 4 + Number(cirBlockSize) * 32; // Upper bound on size, based on a completely full leaf node.
211
+ let spans = new Range(offset[0], offset[0] + maxCirBlockSpan);
203
212
  for (let i = 1; i < offset.length; i += 1) {
204
- const blockSpan = new range_1.default(offset[i], offset[i] + maxCirBlockSpan);
213
+ const blockSpan = new Range(offset[i], offset[i] + maxCirBlockSpan);
205
214
  spans = spans.union(blockSpan);
206
215
  }
207
216
  spans.getRanges().map(fr => cirFobStartFetch(offset, fr, level));
@@ -210,90 +219,133 @@ class BlockView {
210
219
  observer.error(e);
211
220
  }
212
221
  };
213
- return cirFobRecur([cirTreeOffset + 48], 1);
222
+ return cirFobRecur([Number(cirTreeOffset) + 48], 1);
214
223
  }
215
224
  catch (e) {
216
225
  observer.error(e);
217
226
  }
218
227
  }
219
- parseSummaryBlock(data, startOffset, request) {
228
+ parseSummaryBlock(buffer, startOffset, request) {
220
229
  const features = [];
221
- let currOffset = startOffset;
222
- while (currOffset < data.byteLength) {
223
- const res = this.summaryParser.parse(data.subarray(currOffset));
224
- features.push(res.result);
225
- currOffset += res.offset;
226
- }
227
- let items = features;
228
- if (request) {
229
- items = items.filter(elt => elt.chromId === request.chrId);
230
+ let offset = startOffset;
231
+ const dataView = new DataView(buffer.buffer, buffer.byteOffset, buffer.length);
232
+ while (offset < buffer.byteLength) {
233
+ // this was extracted from looking at the runtime code generated by
234
+ // binary-parser
235
+ const chromId = dataView.getUint32(offset, true);
236
+ offset += 4;
237
+ const start = dataView.getUint32(offset, true);
238
+ offset += 4;
239
+ const end = dataView.getUint32(offset, true);
240
+ offset += 4;
241
+ const validCnt = dataView.getUint32(offset, true);
242
+ offset += 4;
243
+ const minScore = dataView.getFloat32(offset, true);
244
+ offset += 4;
245
+ const maxScore = dataView.getFloat32(offset, true);
246
+ offset += 4;
247
+ const sumData = dataView.getFloat32(offset, true);
248
+ offset += 4;
249
+ // unused
250
+ // const sumSqData = dataView.getFloat32(offset, true)
251
+ offset += 4;
252
+ if (request
253
+ ? chromId === request.chrId &&
254
+ coordFilter(start, end, request.start, request.end)
255
+ : true) {
256
+ features.push({
257
+ start,
258
+ end,
259
+ maxScore,
260
+ minScore,
261
+ summary: true,
262
+ score: sumData / (validCnt || 1),
263
+ });
264
+ }
230
265
  }
231
- const feats = items.map((elt) => ({
232
- start: elt.start,
233
- end: elt.end,
234
- maxScore: elt.maxScore,
235
- minScore: elt.minScore,
236
- score: elt.sumData / (elt.validCnt || 1),
237
- summary: true,
238
- }));
239
- return request
240
- ? feats.filter(f => BlockView.coordFilter(f, request))
241
- : feats;
266
+ return features;
242
267
  }
243
268
  parseBigBedBlock(data, startOffset, offset, request) {
244
269
  const items = [];
245
270
  let currOffset = startOffset;
246
271
  while (currOffset < data.byteLength) {
247
272
  const res = this.bigBedParser.parse(data.subarray(currOffset));
248
- res.result.uniqueId = `bb-${offset + currOffset}`;
249
- items.push(res.result);
273
+ items.push({ ...res, uniqueId: `bb-${offset + currOffset}` });
250
274
  currOffset += res.offset;
251
275
  }
252
276
  return request
253
- ? items.filter((f) => BlockView.coordFilter(f, request))
277
+ ? items.filter((f) => coordFilter(f.start, f.end, request.start, request.end))
254
278
  : items;
255
279
  }
256
- parseBigWigBlock(bytes, startOffset, request) {
257
- const data = bytes.subarray(startOffset);
258
- const results = this.bigWigParser.parse(data).result;
259
- const { items, itemSpan, itemStep, blockStart, blockType } = results;
260
- if (blockType === BIG_WIG_TYPE_FSTEP) {
261
- for (let i = 0; i < items.length; i++) {
262
- items[i].start = blockStart + i * itemStep;
263
- items[i].end = blockStart + i * itemStep + itemSpan;
264
- }
265
- }
266
- else if (blockType === BIG_WIG_TYPE_VSTEP) {
267
- for (let i = 0; i < items.length; i++) {
268
- items[i].end = items[i].start + itemSpan;
269
- }
280
+ parseBigWigBlock(buffer, startOffset, request) {
281
+ const b = buffer.subarray(startOffset);
282
+ const dataView = new DataView(b.buffer, b.byteOffset, b.length);
283
+ let offset = 0;
284
+ offset += 4;
285
+ const blockStart = dataView.getInt32(offset, true);
286
+ offset += 8;
287
+ const itemStep = dataView.getUint32(offset, true);
288
+ offset += 4;
289
+ const itemSpan = dataView.getUint32(offset, true);
290
+ offset += 4;
291
+ const blockType = dataView.getUint8(offset);
292
+ offset += 2;
293
+ const itemCount = dataView.getUint16(offset, true);
294
+ offset += 2;
295
+ const items = new Array(itemCount);
296
+ switch (blockType) {
297
+ case 1:
298
+ for (let i = 0; i < itemCount; i++) {
299
+ const start = dataView.getInt32(offset, true);
300
+ offset += 4;
301
+ const end = dataView.getInt32(offset, true);
302
+ offset += 4;
303
+ const score = dataView.getFloat32(offset, true);
304
+ offset += 4;
305
+ items[i] = { start, end, score };
306
+ }
307
+ break;
308
+ case 2:
309
+ for (let i = 0; i < itemCount; i++) {
310
+ const start = dataView.getInt32(offset, true);
311
+ offset += 4;
312
+ const score = dataView.getFloat32(offset, true);
313
+ offset += 4;
314
+ items[i] = { score, start, end: start + itemSpan };
315
+ }
316
+ break;
317
+ case 3:
318
+ for (let i = 0; i < itemCount; i++) {
319
+ const score = dataView.getFloat32(offset, true);
320
+ offset += 4;
321
+ const start = blockStart + i * itemStep;
322
+ items[i] = { score, start, end: start + itemSpan };
323
+ }
324
+ break;
270
325
  }
271
326
  return request
272
- ? items.filter((f) => BlockView.coordFilter(f, request))
327
+ ? items.filter((f) => coordFilter(f.start, f.end, request.start, request.end))
273
328
  : items;
274
329
  }
275
- static coordFilter(f, range) {
276
- return f.start < range.end && f.end >= range.start;
277
- }
278
330
  async readFeatures(observer, blocks, opts = {}) {
279
331
  try {
280
332
  const { blockType, isCompressed } = this;
281
333
  const { signal, request } = opts;
282
- const blockGroupsToFetch = (0, util_1.groupBlocks)(blocks);
283
- (0, util_1.checkAbortSignal)(signal);
334
+ const blockGroupsToFetch = groupBlocks(blocks);
335
+ checkAbortSignal(signal);
284
336
  await Promise.all(blockGroupsToFetch.map(async (blockGroup) => {
285
- (0, util_1.checkAbortSignal)(signal);
337
+ checkAbortSignal(signal);
286
338
  const { length, offset } = blockGroup;
287
339
  const data = await this.featureCache.get(`${length}_${offset}`, blockGroup, signal);
288
- blockGroup.blocks.forEach((block) => {
289
- (0, util_1.checkAbortSignal)(signal);
290
- let blockOffset = block.offset - blockGroup.offset;
340
+ blockGroup.blocks.forEach(block => {
341
+ checkAbortSignal(signal);
342
+ let blockOffset = Number(block.offset) - Number(blockGroup.offset);
291
343
  let resultData = data;
292
344
  if (isCompressed) {
293
- resultData = (0, unzip_1.unzip)(data.subarray(blockOffset));
345
+ resultData = unzip(data.subarray(blockOffset));
294
346
  blockOffset = 0;
295
347
  }
296
- (0, util_1.checkAbortSignal)(signal);
348
+ checkAbortSignal(signal);
297
349
  switch (blockType) {
298
350
  case 'summary':
299
351
  observer.next(this.parseSummaryBlock(resultData, blockOffset, request));
@@ -302,9 +354,7 @@ class BlockView {
302
354
  observer.next(this.parseBigWigBlock(resultData, blockOffset, request));
303
355
  break;
304
356
  case 'bigbed':
305
- observer.next(this.parseBigBedBlock(resultData, blockOffset,
306
- // eslint-disable-next-line no-bitwise
307
- block.offset * (1 << 8), request));
357
+ observer.next(this.parseBigBedBlock(resultData, blockOffset, Number(block.offset) * (1 << 8), request));
308
358
  break;
309
359
  default:
310
360
  console.warn(`Don't know what to do with ${blockType}`);
@@ -318,4 +368,4 @@ class BlockView {
318
368
  }
319
369
  }
320
370
  }
321
- exports.BlockView = BlockView;
371
+ //# sourceMappingURL=blockView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blockView.js","sourceRoot":"","sources":["../src/blockView.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AACtC,OAAO,qBAAqB,MAAM,yBAAyB,CAAA;AAE3D,OAAO,QAAQ,MAAM,WAAW,CAAA;AAEhC,SAAS;AACT,OAAO,KAAK,MAAM,SAAS,CAAA;AAC3B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAE/B,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAA;AA4BtD,MAAM,kBAAkB,GAAG,CAAC,CAAA;AAC5B,MAAM,kBAAkB,GAAG,CAAC,CAAA;AAC5B,MAAM,kBAAkB,GAAG,CAAC,CAAA;AAE5B,SAAS,WAAW,CAAC,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU;IACjE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;AAC5B,CAAC;AAED,SAAS,UAAU,CAAC,WAAoB;IACtC,MAAM,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAA;IACzC,MAAM,aAAa,GAAG,IAAI,MAAM,EAAE;SAC/B,SAAS,CAAC,EAAE,CAAC;SACb,MAAM,CAAC,SAAS,CAAC;SACjB,MAAM,CAAC,OAAO,CAAC;SACf,MAAM,CAAC,KAAK,CAAC;SACb,MAAM,CAAC,UAAU,CAAC;SAClB,OAAO,CAAC,UAAU,CAAC;SACnB,OAAO,CAAC,UAAU,CAAC;SACnB,OAAO,CAAC,SAAS,CAAC;SAClB,OAAO,CAAC,WAAW,CAAC;SACpB,UAAU,CAAC,QAAQ,CAAC,CAAA;IAEvB,MAAM,UAAU,GAAG,IAAI,MAAM,EAAE;SAC5B,SAAS,CAAC,EAAE,CAAC;SACb,KAAK,CAAC,QAAQ,CAAC;SACf,IAAI,CAAC,CAAC,CAAC;SACP,MAAM,CAAC,KAAK,CAAC;SACb,MAAM,CAAC;QACN,GAAG,EAAE,QAAQ;QACb,OAAO,EAAE;YACP,CAAC,EAAE,IAAI,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,EAAE;gBACnD,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,IAAI,MAAM,EAAE;qBACf,SAAS,CAAC,EAAE,CAAC;qBACb,MAAM,CAAC,YAAY,CAAC;qBACpB,MAAM,CAAC,WAAW,CAAC;qBACnB,MAAM,CAAC,UAAU,CAAC;qBAClB,MAAM,CAAC,SAAS,CAAC;qBACjB,MAAM,CAAC,aAAa,CAAC;qBACrB,MAAM,CAAC,WAAW,CAAC;qBACnB,UAAU,CAAC,QAAQ,CAAC;aACxB,CAAC;YACF,CAAC,EAAE,IAAI,MAAM,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE;gBACpC,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,IAAI,MAAM,EAAE;qBACf,SAAS,CAAC,EAAE,CAAC;qBACb,MAAM,CAAC,YAAY,CAAC;qBACpB,MAAM,CAAC,WAAW,CAAC;qBACnB,MAAM,CAAC,UAAU,CAAC;qBAClB,MAAM,CAAC,SAAS,CAAC;qBACjB,MAAM,CAAC,aAAa,CAAC;qBACrB,UAAU,CAAC,QAAQ,CAAC;aACxB,CAAC;SACH;KACF,CAAC,CAAA;IACJ,MAAM,YAAY,GAAG,IAAI,MAAM,EAAE;SAC9B,SAAS,CAAC,EAAE,CAAC;SACb,MAAM,CAAC,SAAS,CAAC;SACjB,KAAK,CAAC,OAAO,CAAC;SACd,KAAK,CAAC,KAAK,CAAC;SACZ,MAAM,CAAC,MAAM,EAAE;QACd,cAAc,EAAE,IAAI;KACrB,CAAC;SACD,UAAU,CAAC,QAAQ,CAAC,CAAA;IAEvB,MAAM,YAAY,GAAG,IAAI,MAAM,EAAE;SAC9B,SAAS,CAAC,EAAE,CAAC;SACb,IAAI,CAAC,CAAC,CAAC;SACP,KAAK,CAAC,YAAY,CAAC;SACnB,IAAI,CAAC,CAAC,CAAC;SACP,MAAM,CAAC,UAAU,CAAC;SAClB,MAAM,CAAC,UAAU,CAAC;SAClB,KAAK,CAAC,WAAW,CAAC;SAClB,IAAI,CAAC,CAAC,CAAC;SACP,MAAM,CAAC,WAAW,CAAC;SACnB,MAAM,CAAC;QACN,GAAG,EAAE,WAAW;QAChB,OAAO,EAAE;YACP,CAAC,kBAAkB,CAAC,EAAE,IAAI,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE;gBAChD,MAAM,EAAE,WAAW;gBACnB,IAAI,EAAE,IAAI,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;aACpC,CAAC;YACF,CAAC,kBAAkB,CAAC,EAAE,IAAI,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE;gBAChD,MAAM,EAAE,WAAW;gBACnB,IAAI,EAAE,IAAI,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;aACjE,CAAC;YACF,CAAC,kBAAkB,CAAC,EAAE,IAAI,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE;gBAChD,MAAM,EAAE,WAAW;gBACnB,IAAI,EAAE,IAAI,MAAM,EAAE;qBACf,SAAS,CAAC,EAAE,CAAC;qBACb,KAAK,CAAC,OAAO,CAAC;qBACd,KAAK,CAAC,KAAK,CAAC;qBACZ,OAAO,CAAC,OAAO,CAAC;aACpB,CAAC;SACH;KACF,CAAC,CAAA;IACJ,OAAO;QACL,YAAY;QACZ,YAAY;QACZ,aAAa;QACb,UAAU;KACX,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AAEH,MAAM,OAAO,SAAS;IAoBpB,YACU,GAAsB,EACtB,UAAe,EACf,aAAqB,EACrB,WAAoB,EACpB,YAAqB,EACrB,SAAiB;QALjB,QAAG,GAAH,GAAG,CAAmB;QACtB,eAAU,GAAV,UAAU,CAAK;QACf,kBAAa,GAAb,aAAa,CAAQ;QACrB,gBAAW,GAAX,WAAW,CAAS;QACpB,iBAAY,GAAZ,YAAY,CAAS;QACrB,cAAS,GAAT,SAAS,CAAQ;QAvBnB,iBAAY,GAAG,IAAI,qBAAqB,CAAC;YAC/C,KAAK,EAAE,IAAI,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAEtC,IAAI,EAAE,KAAK,EAAE,WAAqB,EAAE,MAAmB,EAAE,EAAE;gBACzD,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;gBACtC,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;gBACtC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE;oBACrE,MAAM;iBACP,CAAC,CAAA;gBACF,OAAO,MAAM,CAAA;YACf,CAAC;SACF,CAAC,CAAA;QAcA,IAAI,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,EAAE;YACzB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;SAC1C;QAED,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC,CAAA;QACvC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAA;QACpC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAA;IAC1C,CAAC;IAEM,KAAK,CAAC,WAAW,CACtB,OAAe,EACf,KAAa,EACb,GAAW,EACX,QAA6B,EAC7B,IAAa;QAEb,IAAI;YACF,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,IAAI,CAAA;YAC5D,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;YACjC,IAAI,KAAK,KAAK,SAAS,EAAE;gBACvB,QAAQ,CAAC,QAAQ,EAAE,CAAA;aACpB;YACD,MAAM,OAAO,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAA;YACrC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;gBACxB,MAAM,GAAG,GAAG,MAAM,CAAC,aAAa,CAAC,CAAA;gBACjC,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;aACnE;YACD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,cAAc,CAAA;YAC5C,MAAM,YAAY,GAAG,WAAW;gBAC9B,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBACxB,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;YAC1B,IAAI,aAAa,GAAU,EAAE,CAAA;YAC7B,IAAI,WAAW,GAAG,CAAC,CAAA;YAEnB,MAAM,YAAY,GAAG,CACnB,YAAoB,EACpB,MAAc,EACd,KAAa,EACb,EAAE;gBACF,IAAI;oBACF,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;oBAE1C,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;oBACrC,IAAI,CAAC,CAAC,aAAa,EAAE;wBACnB,aAAa,GAAG,aAAa,CAAC,MAAM,CAClC,CAAC,CAAC,aAAa;6BACZ,MAAM,CAAC,WAAW,CAAC;6BACnB,GAAG,CAAC,CAAC,CAA6C,EAAE,EAAE,CAAC,CAAC;4BACvD,MAAM,EAAE,CAAC,CAAC,WAAW;4BACrB,MAAM,EAAE,CAAC,CAAC,SAAS;yBACpB,CAAC,CAAC,CACN,CAAA;qBACF;oBACD,IAAI,CAAC,CAAC,YAAY,EAAE;wBAClB,MAAM,YAAY,GAAG,CAAC,CAAC,YAAY;6BAChC,MAAM,CAAC,WAAW,CAAC;6BACnB,GAAG,CAAC,CAAC,CAA0B,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAA;wBAC7D,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;4BAC3B,WAAW,CAAC,YAAY,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;yBACrC;qBACF;iBACF;gBAAC,OAAO,CAAC,EAAE;oBACV,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;iBAClB;YACH,CAAC,CAAA;YAED,MAAM,WAAW,GAAG,CAAC,CAAY,EAAE,EAAE;gBACnC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,CAAA;gBACtD,OAAO,CACL,CAAC,UAAU,GAAG,KAAK,IAAI,CAAC,UAAU,KAAK,KAAK,IAAI,SAAS,IAAI,GAAG,CAAC,CAAC;oBAClE,CAAC,QAAQ,GAAG,KAAK,IAAI,CAAC,QAAQ,KAAK,KAAK,IAAI,OAAO,IAAI,KAAK,CAAC,CAAC,CAC/D,CAAA;YACH,CAAC,CAAA;YAED,MAAM,gBAAgB,GAAG,KAAK,EAC5B,GAAa,EACb,EAAS,EACT,KAAa,EACb,EAAE;gBACF,IAAI;oBACF,MAAM,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAA;oBAClC,MAAM,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,CAAA;oBACvB,MAAM,YAAY,GAAW,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CACtD,GAAG,MAAM,IAAI,MAAM,EAAE,EACrB,EAAE,MAAM,EAAE,MAAM,EAAE,EAClB,IAAI,CAAC,MAAM,CACZ,CAAA;oBACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;wBACtC,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;4BACvB,YAAY,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,CAAA;4BAClD,WAAW,IAAI,CAAC,CAAA;4BAChB,IAAI,WAAW,KAAK,CAAC,EAAE;gCACrB,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;6BACjE;yBACF;qBACF;iBACF;gBAAC,OAAO,CAAC,EAAE;oBACV,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;iBAClB;YACH,CAAC,CAAA;YACD,MAAM,WAAW,GAAG,CAAC,MAAgB,EAAE,KAAa,EAAE,EAAE;gBACtD,IAAI;oBACF,WAAW,IAAI,MAAM,CAAC,MAAM,CAAA;oBAE5B,MAAM,eAAe,GAAG,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAA,CAAC,6DAA6D;oBACnH,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAA;oBAC7D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;wBACzC,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAA;wBACnE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;qBAC/B;oBACD,KAAK,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAA;iBACjE;gBAAC,OAAO,CAAC,EAAE;oBACV,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;iBAClB;YACH,CAAC,CAAA;YAED,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;SACpD;QAAC,OAAO,CAAC,EAAE;YACV,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;SAClB;IACH,CAAC;IAEO,iBAAiB,CACvB,MAAc,EACd,WAAmB,EACnB,OAAsB;QAEtB,MAAM,QAAQ,GAAG,EAAW,CAAA;QAC5B,IAAI,MAAM,GAAG,WAAW,CAAA;QAExB,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAC3B,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,MAAM,CACd,CAAA;QACD,OAAO,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE;YACjC,mEAAmE;YACnE,gBAAgB;YAChB,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAChD,MAAM,IAAI,CAAC,CAAA;YACX,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAC9C,MAAM,IAAI,CAAC,CAAA;YACX,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAC5C,MAAM,IAAI,CAAC,CAAA;YACX,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YACjD,MAAM,IAAI,CAAC,CAAA;YACX,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAClD,MAAM,IAAI,CAAC,CAAA;YACX,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAClD,MAAM,IAAI,CAAC,CAAA;YACX,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YACjD,MAAM,IAAI,CAAC,CAAA;YACX,SAAS;YACT,sDAAsD;YACtD,MAAM,IAAI,CAAC,CAAA;YAEX,IACE,OAAO;gBACL,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,KAAK;oBACzB,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC;gBACrD,CAAC,CAAC,IAAI,EACR;gBACA,QAAQ,CAAC,IAAI,CAAC;oBACZ,KAAK;oBACL,GAAG;oBACH,QAAQ;oBACR,QAAQ;oBACR,OAAO,EAAE,IAAI;oBACb,KAAK,EAAE,OAAO,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC;iBACjC,CAAC,CAAA;aACH;SACF;QAED,OAAO,QAAQ,CAAA;IACjB,CAAC;IAEO,gBAAgB,CACtB,IAAY,EACZ,WAAmB,EACnB,MAAc,EACd,OAAsB;QAEtB,MAAM,KAAK,GAAG,EAAe,CAAA;QAC7B,IAAI,UAAU,GAAG,WAAW,CAAA;QAC5B,OAAO,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;YACnC,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAA;YAC9D,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,QAAQ,EAAE,MAAM,MAAM,GAAG,UAAU,EAAE,EAAE,CAAC,CAAA;YAC7D,UAAU,IAAI,GAAG,CAAC,MAAM,CAAA;SACzB;QAED,OAAO,OAAO;YACZ,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CACtB,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CACxD;YACH,CAAC,CAAC,KAAK,CAAA;IACX,CAAC;IAEO,gBAAgB,CACtB,MAAc,EACd,WAAmB,EACnB,OAAsB;QAEtB,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;QAEtC,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAA;QAC/D,IAAI,MAAM,GAAG,CAAC,CAAA;QACd,MAAM,IAAI,CAAC,CAAA;QACX,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAClD,MAAM,IAAI,CAAC,CAAA;QACX,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QACjD,MAAM,IAAI,CAAC,CAAA;QACX,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QACjD,MAAM,IAAI,CAAC,CAAA;QACX,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QAC3C,MAAM,IAAI,CAAC,CAAA;QACX,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAClD,MAAM,IAAI,CAAC,CAAA;QACX,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,CAAA;QAClC,QAAQ,SAAS,EAAE;YACjB,KAAK,CAAC;gBACJ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;oBAClC,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;oBAC7C,MAAM,IAAI,CAAC,CAAA;oBACX,MAAM,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;oBAC3C,MAAM,IAAI,CAAC,CAAA;oBACX,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;oBAC/C,MAAM,IAAI,CAAC,CAAA;oBACX,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAA;iBACjC;gBACD,MAAK;YACP,KAAK,CAAC;gBACJ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;oBAClC,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;oBAC7C,MAAM,IAAI,CAAC,CAAA;oBACX,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;oBAC/C,MAAM,IAAI,CAAC,CAAA;oBACX,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,GAAG,QAAQ,EAAE,CAAA;iBACnD;gBACD,MAAK;YACP,KAAK,CAAC;gBACJ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;oBAClC,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;oBAC/C,MAAM,IAAI,CAAC,CAAA;oBACX,MAAM,KAAK,GAAG,UAAU,GAAG,CAAC,GAAG,QAAQ,CAAA;oBACvC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,GAAG,QAAQ,EAAE,CAAA;iBACnD;gBACD,MAAK;SACR;QAED,OAAO,OAAO;YACZ,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CACtB,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CACxD;YACH,CAAC,CAAC,KAAK,CAAA;IACX,CAAC;IAEM,KAAK,CAAC,YAAY,CACvB,QAA6B,EAC7B,MAA4C,EAC5C,OAAgB,EAAE;QAElB,IAAI;YACF,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,IAAI,CAAA;YACxC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;YAChC,MAAM,kBAAkB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAA;YAC9C,gBAAgB,CAAC,MAAM,CAAC,CAAA;YACxB,MAAM,OAAO,CAAC,GAAG,CACf,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAC,UAAU,EAAC,EAAE;gBACxC,gBAAgB,CAAC,MAAM,CAAC,CAAA;gBACxB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAA;gBACrC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CACtC,GAAG,MAAM,IAAI,MAAM,EAAE,EACrB,UAAU,EACV,MAAM,CACP,CAAA;gBACD,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBAChC,gBAAgB,CAAC,MAAM,CAAC,CAAA;oBACxB,IAAI,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;oBAClE,IAAI,UAAU,GAAG,IAAI,CAAA;oBACrB,IAAI,YAAY,EAAE;wBAChB,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAA;wBAC9C,WAAW,GAAG,CAAC,CAAA;qBAChB;oBACD,gBAAgB,CAAC,MAAM,CAAC,CAAA;oBAExB,QAAQ,SAAS,EAAE;wBACjB,KAAK,SAAS;4BACZ,QAAQ,CAAC,IAAI,CACX,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,CACzD,CAAA;4BACD,MAAK;wBACP,KAAK,QAAQ;4BACX,QAAQ,CAAC,IAAI,CACX,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,CACxD,CAAA;4BACD,MAAK;wBACP,KAAK,QAAQ;4BACX,QAAQ,CAAC,IAAI,CACX,IAAI,CAAC,gBAAgB,CACnB,UAAU,EACV,WAAW,EACX,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAC/B,OAAO,CACR,CACF,CAAA;4BACD,MAAK;wBACP;4BACE,OAAO,CAAC,IAAI,CAAC,8BAA8B,SAAS,EAAE,CAAC,CAAA;qBAC1D;gBACH,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CACH,CAAA;YACD,QAAQ,CAAC,QAAQ,EAAE,CAAA;SACpB;QAAC,OAAO,CAAC,EAAE;YACV,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;SAClB;IACH,CAAC;CACF"}
package/esm/index.js CHANGED
@@ -1,7 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BigBed = exports.BigWig = void 0;
4
- var bigwig_1 = require("./bigwig");
5
- Object.defineProperty(exports, "BigWig", { enumerable: true, get: function () { return bigwig_1.BigWig; } });
6
- var bigbed_1 = require("./bigbed");
7
- Object.defineProperty(exports, "BigBed", { enumerable: true, get: function () { return bigbed_1.BigBed; } });
1
+ export { BigWig } from './bigwig';
2
+ export { BigBed } from './bigbed';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA"}
package/esm/range.js CHANGED
@@ -1,11 +1,9 @@
1
- "use strict";
2
1
  /* eslint prefer-rest-params:0, no-nested-ternary:0 */
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
2
  /**
5
3
  * Adapted from a combination of Range and _Compound in the
6
4
  * Dalliance Genome Explorer, (c) Thomas Down 2006-2010.
7
5
  */
8
- class Range {
6
+ export default class Range {
9
7
  constructor(arg1, arg2) {
10
8
  this.ranges =
11
9
  arguments.length === 2
@@ -106,6 +104,7 @@ class Range {
106
104
  let b = tmpb;
107
105
  if (arguments.length < 2) {
108
106
  b = a;
107
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
109
108
  a = this;
110
109
  }
111
110
  if (a.min() < b.min()) {
@@ -123,4 +122,4 @@ class Range {
123
122
  return 0;
124
123
  }
125
124
  }
126
- exports.default = Range;
125
+ //# sourceMappingURL=range.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"range.js","sourceRoot":"","sources":["../src/range.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
1
  /// <reference types="node" />
2
- export declare function unzip(input: Buffer): Buffer;
2
+ export declare function unzip(input: Buffer): Uint8Array;
package/esm/unzip-pako.js CHANGED
@@ -1,8 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.unzip = void 0;
4
- const pako_1 = require("pako");
5
- function unzip(input) {
6
- return Buffer.from((0, pako_1.inflate)(input));
1
+ import { inflateRaw } from 'pako';
2
+ export function unzip(input) {
3
+ return inflateRaw(input.subarray(2));
7
4
  }
8
- exports.unzip = unzip;
5
+ //# sourceMappingURL=unzip-pako.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unzip-pako.js","sourceRoot":"","sources":["../src/unzip-pako.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AAEjC,MAAM,UAAU,KAAK,CAAC,KAAa;IACjC,OAAO,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;AACtC,CAAC"}
package/esm/unzip.js CHANGED
@@ -1,5 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.unzip = void 0;
4
- const zlib_1 = require("zlib");
5
- Object.defineProperty(exports, "unzip", { enumerable: true, get: function () { return zlib_1.inflateSync; } });
1
+ import { inflateSync } from 'zlib';
2
+ export { inflateSync as unzip };
3
+ //# sourceMappingURL=unzip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unzip.js","sourceRoot":"","sources":["../src/unzip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAA;AAClC,OAAO,EAAE,WAAW,IAAI,KAAK,EAAE,CAAA"}
package/esm/util.d.ts CHANGED
@@ -2,7 +2,17 @@ export declare class AbortError extends Error {
2
2
  code: string;
3
3
  constructor(message: string);
4
4
  }
5
- export declare function groupBlocks(blocks: any[]): any[];
5
+ export declare function groupBlocks(blocks: {
6
+ offset: bigint;
7
+ length: bigint;
8
+ }[]): {
9
+ blocks: {
10
+ offset: bigint;
11
+ length: bigint;
12
+ }[];
13
+ length: bigint;
14
+ offset: bigint;
15
+ }[];
6
16
  /**
7
17
  * Properly check if the given AbortSignal is aborted.
8
18
  * Per the standard, if the signal reads as aborted,