defuddle 0.8.0 → 0.10.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 (68) hide show
  1. package/README.md +56 -49
  2. package/dist/constants.js +37 -15
  3. package/dist/constants.js.map +1 -1
  4. package/dist/defuddle.d.ts +34 -0
  5. package/dist/defuddle.js +371 -29
  6. package/dist/defuddle.js.map +1 -1
  7. package/dist/elements/code.js +28 -4
  8. package/dist/elements/code.js.map +1 -1
  9. package/dist/elements/footnotes.js +315 -17
  10. package/dist/elements/footnotes.js.map +1 -1
  11. package/dist/elements/images.js +6 -6
  12. package/dist/elements/images.js.map +1 -1
  13. package/dist/elements/math.base.js +11 -5
  14. package/dist/elements/math.base.js.map +1 -1
  15. package/dist/elements/math.core.js +9 -16
  16. package/dist/elements/math.core.js.map +1 -1
  17. package/dist/elements/math.js +0 -2
  18. package/dist/elements/math.js.map +1 -1
  19. package/dist/extractor-registry.d.ts +2 -0
  20. package/dist/extractor-registry.js +16 -4
  21. package/dist/extractor-registry.js.map +1 -1
  22. package/dist/extractors/_base.d.ts +2 -0
  23. package/dist/extractors/_base.js +6 -0
  24. package/dist/extractors/_base.js.map +1 -1
  25. package/dist/extractors/_conversation.js +2 -1
  26. package/dist/extractors/_conversation.js.map +1 -1
  27. package/dist/extractors/chatgpt.js +4 -3
  28. package/dist/extractors/chatgpt.js.map +1 -1
  29. package/dist/extractors/claude.js +3 -2
  30. package/dist/extractors/claude.js.map +1 -1
  31. package/dist/extractors/gemini.js +5 -4
  32. package/dist/extractors/gemini.js.map +1 -1
  33. package/dist/extractors/github.js +7 -6
  34. package/dist/extractors/github.js.map +1 -1
  35. package/dist/extractors/grok.js +2 -1
  36. package/dist/extractors/grok.js.map +1 -1
  37. package/dist/extractors/hackernews.js +5 -3
  38. package/dist/extractors/hackernews.js.map +1 -1
  39. package/dist/extractors/reddit.d.ts +7 -0
  40. package/dist/extractors/reddit.js +108 -4
  41. package/dist/extractors/reddit.js.map +1 -1
  42. package/dist/extractors/twitter.js +5 -3
  43. package/dist/extractors/twitter.js.map +1 -1
  44. package/dist/extractors/x-article.js +2 -1
  45. package/dist/extractors/x-article.js.map +1 -1
  46. package/dist/extractors/x-oembed.d.ts +21 -0
  47. package/dist/extractors/x-oembed.js +357 -0
  48. package/dist/extractors/x-oembed.js.map +1 -0
  49. package/dist/index.full.d.ts +3 -0
  50. package/dist/index.full.js +1 -1
  51. package/dist/index.js +1 -1
  52. package/dist/markdown.d.ts +2 -4
  53. package/dist/markdown.js +76 -20
  54. package/dist/markdown.js.map +1 -1
  55. package/dist/metadata.d.ts +1 -0
  56. package/dist/metadata.js +46 -21
  57. package/dist/metadata.js.map +1 -1
  58. package/dist/node.js +1 -1
  59. package/dist/node.js.map +1 -1
  60. package/dist/scoring.js +94 -22
  61. package/dist/scoring.js.map +1 -1
  62. package/dist/standardize.js +206 -38
  63. package/dist/standardize.js.map +1 -1
  64. package/dist/types.d.ts +6 -0
  65. package/dist/utils/dom.d.ts +23 -0
  66. package/dist/utils/dom.js +62 -0
  67. package/dist/utils/dom.js.map +1 -0
  68. package/package.json +9 -9
@@ -2,8 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.standardizeFootnotes = standardizeFootnotes;
4
4
  const constants_1 = require("../constants");
5
+ const dom_1 = require("../utils/dom");
5
6
  class FootnoteHandler {
6
7
  constructor(doc) {
8
+ this.genericContainer = null;
7
9
  this.doc = doc;
8
10
  }
9
11
  createFootnoteItem(footnoteNumber, content, refs) {
@@ -14,7 +16,7 @@ class FootnoteHandler {
14
16
  // Handle content
15
17
  if (typeof content === 'string') {
16
18
  const paragraph = doc.createElement('p');
17
- paragraph.innerHTML = content;
19
+ paragraph.appendChild((0, dom_1.parseHTML)(doc, content));
18
20
  newItem.appendChild(paragraph);
19
21
  }
20
22
  else {
@@ -23,14 +25,16 @@ class FootnoteHandler {
23
25
  if (paragraphs.length === 0) {
24
26
  // If no paragraphs, wrap content in a paragraph
25
27
  const paragraph = doc.createElement('p');
26
- paragraph.innerHTML = content.innerHTML;
28
+ (0, dom_1.transferContent)(content, paragraph);
29
+ this.removeBackrefs(paragraph);
27
30
  newItem.appendChild(paragraph);
28
31
  }
29
32
  else {
30
33
  // Copy existing paragraphs
31
34
  paragraphs.forEach((p) => {
32
35
  const newP = doc.createElement('p');
33
- newP.innerHTML = p.innerHTML;
36
+ (0, dom_1.transferContent)(p, newP);
37
+ this.removeBackrefs(newP);
34
38
  newItem.appendChild(newP);
35
39
  });
36
40
  }
@@ -42,9 +46,9 @@ class FootnoteHandler {
42
46
  backlink.href = `#${refId}`;
43
47
  backlink.title = 'return to article';
44
48
  backlink.className = 'footnote-backref';
45
- backlink.innerHTML = '↩';
49
+ backlink.textContent = '↩';
46
50
  if (index < refs.length - 1) {
47
- backlink.innerHTML += ' ';
51
+ backlink.textContent += ' ';
48
52
  }
49
53
  lastParagraph.appendChild(backlink);
50
54
  });
@@ -57,6 +61,38 @@ class FootnoteHandler {
57
61
  // Collect all footnotes and their IDs from footnote lists
58
62
  const footnoteLists = element.querySelectorAll(constants_1.FOOTNOTE_LIST_SELECTORS);
59
63
  footnoteLists.forEach((list) => {
64
+ // Wikidot uses div.footnotes-footer containing div.footnote-footer children
65
+ if (list.matches('div.footnotes-footer')) {
66
+ const footnoteDivs = list.querySelectorAll('div.footnote-footer');
67
+ footnoteDivs.forEach((div) => {
68
+ const divId = div.id || '';
69
+ const match = divId.match(/^footnote-(\d+)$/);
70
+ if (match) {
71
+ const id = match[1];
72
+ if (!processedIds.has(id)) {
73
+ // Clone the div to avoid modifying the original DOM
74
+ const clone = div.cloneNode(true);
75
+ // Remove the back-link anchor
76
+ const backLink = clone.querySelector('a');
77
+ if (backLink)
78
+ backLink.remove();
79
+ // Get remaining text and strip leading ". "
80
+ let text = (0, dom_1.serializeHTML)(clone);
81
+ text = text.replace(/^\s*\.\s*/, '');
82
+ const contentDiv = element.ownerDocument.createElement('div');
83
+ contentDiv.appendChild((0, dom_1.parseHTML)(element.ownerDocument, text.trim()));
84
+ footnotes[footnoteCount] = {
85
+ content: contentDiv,
86
+ originalId: id,
87
+ refs: []
88
+ };
89
+ processedIds.add(id);
90
+ footnoteCount++;
91
+ }
92
+ }
93
+ });
94
+ return;
95
+ }
60
96
  // Substack has individual footnote divs with no parent
61
97
  if (list.matches('div.footnote[data-component-name="FootnoteToDOM"]')) {
62
98
  const anchor = list.querySelector('a.footnote-number');
@@ -122,8 +158,116 @@ class FootnoteHandler {
122
158
  }
123
159
  });
124
160
  });
161
+ // Generic fallback: if no footnotes found via selectors, try ID-based detection
162
+ if (footnoteCount === 1) {
163
+ // Step 1: Find all in-text anchors linking to fragment IDs with short numeric text
164
+ const candidateRefs = new Map(); // fragment -> [anchor elements]
165
+ const allAnchors = element.querySelectorAll('a[href*="#"]');
166
+ allAnchors.forEach((a) => {
167
+ const href = a.getAttribute('href') || '';
168
+ const fragment = href.split('#').pop()?.toLowerCase();
169
+ if (!fragment)
170
+ return;
171
+ const text = a.textContent?.trim() || '';
172
+ if (!/^\[?\(?\d{1,4}\)?\]?$/.test(text))
173
+ return;
174
+ // Must be inside a sup or span to look like a footnote ref
175
+ const parent = a.parentElement;
176
+ if (!parent)
177
+ return;
178
+ const parentTag = parent.tagName.toLowerCase();
179
+ if (parentTag !== 'sup' && parentTag !== 'span' && a.tagName.toLowerCase() !== 'a')
180
+ return;
181
+ if (!candidateRefs.has(fragment)) {
182
+ candidateRefs.set(fragment, []);
183
+ }
184
+ candidateRefs.get(fragment).push(a);
185
+ });
186
+ if (candidateRefs.size >= 2) {
187
+ // Step 2: Find a container where multiple children have IDs matching our fragments
188
+ const fragmentSet = new Set(candidateRefs.keys());
189
+ const containers = element.querySelectorAll('div, section, aside, footer');
190
+ let bestContainer = null;
191
+ let bestMatchCount = 0;
192
+ containers.forEach((container) => {
193
+ // Skip containers that are the main content element itself
194
+ if (container === element)
195
+ return;
196
+ const children = container.querySelectorAll('p[id], li[id], div[id]');
197
+ let matchCount = 0;
198
+ children.forEach((child) => {
199
+ if (fragmentSet.has(child.id.toLowerCase())) {
200
+ matchCount++;
201
+ }
202
+ });
203
+ if (matchCount >= 2 && matchCount >= bestMatchCount) {
204
+ bestMatchCount = matchCount;
205
+ bestContainer = container;
206
+ }
207
+ });
208
+ if (bestContainer) {
209
+ // Step 3: Extract footnotes from the container
210
+ const idElements = bestContainer.querySelectorAll('p[id], li[id], div[id]');
211
+ const orderedElements = [];
212
+ idElements.forEach((el) => {
213
+ if (fragmentSet.has(el.id.toLowerCase())) {
214
+ orderedElements.push(el);
215
+ }
216
+ });
217
+ // Step 4: Handle multi-paragraph footnotes (group consecutive non-ID elements)
218
+ orderedElements.forEach((el) => {
219
+ const id = el.id.toLowerCase();
220
+ if (processedIds.has(id))
221
+ return;
222
+ const contentDiv = element.ownerDocument.createElement('div');
223
+ // Clone the element content
224
+ const clone = el.cloneNode(true);
225
+ // Strip leading footnote number (e.g. "1. " or "1 ")
226
+ const firstText = clone.childNodes[0];
227
+ if (firstText && firstText.nodeType === 3) {
228
+ firstText.textContent = firstText.textContent.replace(/^\d+\.\s*/, '');
229
+ }
230
+ contentDiv.appendChild(clone);
231
+ // Check for consecutive siblings without IDs (multi-paragraph footnotes)
232
+ let sibling = el.nextElementSibling;
233
+ while (sibling && !sibling.id) {
234
+ const sibClone = sibling.cloneNode(true);
235
+ contentDiv.appendChild(sibClone);
236
+ sibling = sibling.nextElementSibling;
237
+ }
238
+ footnotes[footnoteCount] = {
239
+ content: contentDiv,
240
+ originalId: id,
241
+ refs: []
242
+ };
243
+ processedIds.add(id);
244
+ footnoteCount++;
245
+ });
246
+ // Step 5: Store container for later removal
247
+ this.genericContainer = bestContainer;
248
+ }
249
+ }
250
+ }
125
251
  return footnotes;
126
252
  }
253
+ removeBackrefs(el) {
254
+ el.querySelectorAll('a').forEach((a) => {
255
+ if (a.textContent?.trim() === '↩' || a.classList?.contains('footnote-backref')) {
256
+ a.remove();
257
+ }
258
+ });
259
+ // Clean up trailing text nodes that are only whitespace/punctuation
260
+ // (remnants from around removed backref links, e.g. " ." or " , .")
261
+ while (el.lastChild && el.lastChild.nodeType === 3) {
262
+ const text = el.lastChild.textContent;
263
+ if (/^[\s,.;]*$/.test(text)) {
264
+ el.lastChild.remove();
265
+ }
266
+ else {
267
+ break;
268
+ }
269
+ }
270
+ }
127
271
  findOuterFootnoteContainer(el) {
128
272
  let current = el;
129
273
  let parent = el.parentElement;
@@ -146,20 +290,65 @@ class FootnoteHandler {
146
290
  sup.appendChild(link);
147
291
  return sup;
148
292
  }
293
+ /**
294
+ * Handle CSS sidenote footnotes where content is embedded inline in the text.
295
+ * Pattern: <span class="footnote-container">
296
+ * <label class="footnote-number"></label>
297
+ * <input class="margin-toggle">
298
+ * <span class="footnote">Content...</span>
299
+ * </span>
300
+ */
301
+ collectInlineSidenotes(element) {
302
+ const footnotes = {};
303
+ const containers = element.querySelectorAll('span.footnote-container, span.sidenote-container');
304
+ if (containers.length === 0)
305
+ return footnotes;
306
+ let footnoteCount = 1;
307
+ containers.forEach((container) => {
308
+ const content = container.querySelector('span.footnote, span.sidenote');
309
+ if (!content)
310
+ return;
311
+ // Clone content so we can manipulate it without affecting the DOM
312
+ const contentClone = content.cloneNode(true);
313
+ footnotes[footnoteCount] = {
314
+ content: contentClone,
315
+ originalId: String(footnoteCount),
316
+ refs: [`fnref:${footnoteCount}`]
317
+ };
318
+ // Replace the container with a standard footnote reference
319
+ const ref = this.createFootnoteReference(String(footnoteCount), `fnref:${footnoteCount}`);
320
+ container.replaceWith(ref);
321
+ footnoteCount++;
322
+ });
323
+ return footnotes;
324
+ }
149
325
  standardizeFootnotes(element) {
326
+ // Handle CSS sidenote footnotes first
327
+ const sidenotes = this.collectInlineSidenotes(element);
150
328
  const footnotes = this.collectFootnotes(element);
151
329
  // Standardize inline footnotes using the collected IDs
152
330
  const footnoteInlineReferences = element.querySelectorAll(constants_1.FOOTNOTE_INLINE_REFERENCES);
153
331
  // Group references by their parent sup element
154
332
  const supGroups = new Map();
155
333
  footnoteInlineReferences.forEach((el) => {
156
- if (!el || !el.isConnected)
334
+ if (!el || !el.parentNode)
157
335
  return;
158
336
  let footnoteId = '';
159
337
  let footnoteContent = '';
160
338
  // Extract footnote ID based on element type
161
- // Nature.com
162
- if (el.matches('a[id^="ref-link"]')) {
339
+ // Wikidot: <sup class="footnoteref"><a id="footnoteref-N" href="javascript:;">N</a></sup>
340
+ if (el.matches('sup.footnoteref')) {
341
+ const link = el.querySelector('a[id^="footnoteref-"]');
342
+ if (link) {
343
+ const linkId = link.id || '';
344
+ const match = linkId.match(/^footnoteref-(\d+)$/);
345
+ if (match) {
346
+ footnoteId = match[1];
347
+ }
348
+ }
349
+ // Nature.com
350
+ }
351
+ else if (el.matches('a[id^="ref-link"]')) {
163
352
  footnoteId = el.textContent?.trim() || '';
164
353
  // Science.org
165
354
  }
@@ -181,17 +370,43 @@ class FootnoteHandler {
181
370
  if (id) {
182
371
  footnoteId = id.toLowerCase();
183
372
  }
184
- // Arxiv
373
+ // Arxiv — handle multi-citation groups (e.g. [35, 2, 5])
185
374
  }
186
375
  else if (el.matches('cite.ltx_cite')) {
187
- const link = el.querySelector('a');
188
- if (link) {
189
- const href = link.getAttribute('href');
190
- if (href) {
376
+ const links = Array.from(el.querySelectorAll('a'));
377
+ if (links.length > 0) {
378
+ // Process all links in the citation group
379
+ const refs = [];
380
+ links.forEach((link) => {
381
+ const href = link.getAttribute('href');
382
+ if (!href)
383
+ return;
191
384
  const match = href.split('/').pop()?.match(/bib\.bib(\d+)/);
192
- if (match) {
193
- footnoteId = match[1].toLowerCase();
194
- }
385
+ if (!match)
386
+ return;
387
+ const citationId = match[1].toLowerCase();
388
+ const entry = Object.entries(footnotes).find(([_, data]) => data.originalId === citationId);
389
+ if (!entry)
390
+ return;
391
+ const [fnNum, fnData] = entry;
392
+ const refId = fnData.refs.length > 0
393
+ ? `fnref:${fnNum}-${fnData.refs.length + 1}`
394
+ : `fnref:${fnNum}`;
395
+ fnData.refs.push(refId);
396
+ refs.push(this.createFootnoteReference(fnNum, refId));
397
+ });
398
+ if (refs.length > 0) {
399
+ const container = this.findOuterFootnoteContainer(el);
400
+ const fragment = el.ownerDocument.createDocumentFragment();
401
+ refs.forEach((ref, i) => {
402
+ if (i > 0) {
403
+ fragment.appendChild(el.ownerDocument.createTextNode(' '));
404
+ }
405
+ fragment.appendChild(ref);
406
+ });
407
+ container.replaceWith(fragment);
408
+ // Skip the default single-footnote handling below
409
+ return;
195
410
  }
196
411
  }
197
412
  }
@@ -266,6 +481,83 @@ class FootnoteHandler {
266
481
  }
267
482
  }
268
483
  });
484
+ // Fallback: match remaining unmatched footnotes
485
+ const unmatchedFootnotes = Object.entries(footnotes).filter(([_, data]) => data.refs.length === 0);
486
+ if (unmatchedFootnotes.length > 0) {
487
+ // Build lookup maps
488
+ const footnoteIdMap = new Map();
489
+ const footnoteNumMap = new Map();
490
+ unmatchedFootnotes.forEach(([num, data]) => {
491
+ footnoteIdMap.set(data.originalId, [num, data]);
492
+ footnoteNumMap.set(num, [num, data]);
493
+ });
494
+ // Pass 1: Match by fragment link (e.g. <a href="#mn37note01">1</a>)
495
+ const allLinks = element.querySelectorAll('a[href*="#"]');
496
+ allLinks.forEach((link) => {
497
+ if (!link.parentNode)
498
+ return;
499
+ // Skip if already inside a standardized footnote ref
500
+ const closestFnref = link.closest('[id^="fnref:"]');
501
+ if (closestFnref)
502
+ return;
503
+ // Skip if inside the footnotes section itself
504
+ const closestFootnotes = link.closest('#footnotes');
505
+ if (closestFootnotes)
506
+ return;
507
+ // Skip if inside the generic container (footnote definitions)
508
+ if (this.genericContainer && this.genericContainer.contains(link))
509
+ return;
510
+ const href = link.getAttribute('href') || '';
511
+ const fragment = href.split('#').pop()?.toLowerCase();
512
+ if (!fragment)
513
+ return;
514
+ const entry = footnoteIdMap.get(fragment);
515
+ if (!entry)
516
+ return;
517
+ // Validate it looks like a footnote marker
518
+ const text = link.textContent?.trim() || '';
519
+ if (!/^[\[\(]?\d{1,4}[\]\)]?$/.test(text))
520
+ return;
521
+ const [footnoteNumber, footnoteData] = entry;
522
+ const refId = footnoteData.refs.length > 0
523
+ ? `fnref:${footnoteNumber}-${footnoteData.refs.length + 1}`
524
+ : `fnref:${footnoteNumber}`;
525
+ footnoteData.refs.push(refId);
526
+ const container = this.findOuterFootnoteContainer(link);
527
+ container.replaceWith(this.createFootnoteReference(footnoteNumber, refId));
528
+ });
529
+ // Pass 2: Match sup/span elements with numeric text (e.g. <sup class="footnote-ref">1</sup>)
530
+ const stillUnmatched = Object.entries(footnotes).filter(([_, data]) => data.refs.length === 0);
531
+ if (stillUnmatched.length > 0) {
532
+ const supElements = element.querySelectorAll('sup, span.footnote-ref');
533
+ supElements.forEach((el) => {
534
+ if (!el.parentNode)
535
+ return;
536
+ // Skip if already standardized
537
+ if (el.id?.startsWith('fnref:'))
538
+ return;
539
+ // Skip if inside the footnotes section
540
+ if (el.closest('#footnotes'))
541
+ return;
542
+ const text = el.textContent?.trim() || '';
543
+ const match = text.match(/^[\[\(]?(\d{1,4})[\]\)]?$/);
544
+ if (!match)
545
+ return;
546
+ const num = match[1];
547
+ // Match against footnote number or originalId
548
+ const entry = footnoteNumMap.get(num) || footnoteIdMap.get(num);
549
+ if (!entry)
550
+ return;
551
+ const [footnoteNumber, footnoteData] = entry;
552
+ if (footnoteData.refs.length > 0)
553
+ return; // Already matched
554
+ const refId = `fnref:${footnoteNumber}`;
555
+ footnoteData.refs.push(refId);
556
+ const container = this.findOuterFootnoteContainer(el);
557
+ container.replaceWith(this.createFootnoteReference(footnoteNumber, refId));
558
+ });
559
+ }
560
+ }
269
561
  // Handle grouped references
270
562
  supGroups.forEach((references, container) => {
271
563
  if (references.length > 0) {
@@ -288,14 +580,20 @@ class FootnoteHandler {
288
580
  const newList = this.doc.createElement('div');
289
581
  newList.id = 'footnotes';
290
582
  const orderedList = this.doc.createElement('ol');
583
+ // Merge sidenotes and regular footnotes
584
+ const allFootnotes = { ...sidenotes, ...footnotes };
291
585
  // Create footnote items in order
292
- Object.entries(footnotes).forEach(([number, data]) => {
586
+ Object.entries(allFootnotes).forEach(([number, data]) => {
293
587
  const newItem = this.createFootnoteItem(parseInt(number), data.content, data.refs);
294
588
  orderedList.appendChild(newItem);
295
589
  });
296
590
  // Remove original footnote lists
297
591
  const footnoteLists = element.querySelectorAll(constants_1.FOOTNOTE_LIST_SELECTORS);
298
592
  footnoteLists.forEach((list) => list.remove());
593
+ // Remove generically-detected footnote container
594
+ if (this.genericContainer && this.genericContainer.parentNode) {
595
+ this.genericContainer.remove();
596
+ }
299
597
  // If we have any footnotes, add the new list to the document
300
598
  if (orderedList.children.length > 0) {
301
599
  newList.appendChild(orderedList);
@@ -1 +1 @@
1
- {"version":3,"file":"footnotes.js","sourceRoot":"","sources":["../../src/elements/footnotes.ts"],"names":[],"mappings":";;AAyVA,oDAUC;AAnWD,4CAAmF;AAanF,MAAM,eAAe;IAGpB,YAAY,GAAQ;QACnB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IAChB,CAAC;IAED,kBAAkB,CACjB,cAAsB,EACtB,OAAqB,EACrB,IAAc;QAEd,MAAM,GAAG,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;QAC3E,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO,CAAC,SAAS,GAAG,UAAU,CAAC;QAC/B,OAAO,CAAC,EAAE,GAAG,MAAM,cAAc,EAAE,CAAC;QAEpC,iBAAiB;QACjB,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YACjC,MAAM,SAAS,GAAG,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YACzC,SAAS,CAAC,SAAS,GAAG,OAAO,CAAC;YAC9B,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACP,sCAAsC;YACtC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7B,gDAAgD;gBAChD,MAAM,SAAS,GAAG,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBACzC,SAAS,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;gBACxC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACP,2BAA2B;gBAC3B,UAAU,CAAC,OAAO,CAAC,CAAC,CAAM,EAAE,EAAE;oBAC7B,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;oBACpC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;oBAC7B,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAC3B,CAAC,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;QAED,wCAAwC;QACxC,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,OAAO,CAAC;QACzE,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC7B,MAAM,QAAQ,GAAG,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YACxC,QAAQ,CAAC,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;YAC5B,QAAQ,CAAC,KAAK,GAAG,mBAAmB,CAAC;YACrC,QAAQ,CAAC,SAAS,GAAG,kBAAkB,CAAC;YACxC,QAAQ,CAAC,SAAS,GAAG,GAAG,CAAC;YACzB,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,QAAQ,CAAC,SAAS,IAAI,GAAG,CAAC;YAC3B,CAAC;YACD,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,gBAAgB,CAAC,OAAY;QAC5B,MAAM,SAAS,GAAuB,EAAE,CAAC;QACzC,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC,CAAC,sBAAsB;QAE9D,0DAA0D;QAC1D,MAAM,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC,mCAAuB,CAAC,CAAC;QACxE,aAAa,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;YACnC,uDAAuD;YACvD,IAAI,IAAI,CAAC,OAAO,CAAC,mDAAmD,CAAC,EAAE,CAAC;gBACvE,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;gBACvD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;gBACxD,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;oBACvB,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;oBAC5D,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;wBACjC,SAAS,CAAC,aAAa,CAAC,GAAG;4BAC1B,OAAO,EAAE,OAAO;4BAChB,UAAU,EAAE,EAAE;4BACd,IAAI,EAAE,EAAE;yBACR,CAAC;wBACF,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;wBACrB,aAAa,EAAE,CAAC;oBACjB,CAAC;gBACF,CAAC;gBACD,OAAO;YACR,CAAC;YAED,4CAA4C;YAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,0BAA0B,CAAC,CAAC;YAChE,KAAK,CAAC,OAAO,CAAC,CAAC,EAAO,EAAE,EAAE;gBACzB,IAAI,EAAE,GAAG,EAAE,CAAC;gBACZ,IAAI,OAAO,GAAQ,IAAI,CAAC;gBAExB,yCAAyC;gBACzC,MAAM,YAAY,GAAG,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;gBACpD,IAAI,YAAY,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBACrD,EAAE,GAAG,YAAY,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;oBACnC,qDAAqD;oBACrD,MAAM,eAAe,GAAG,YAAY,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;oBACxE,IAAI,eAAe,EAAE,CAAC;wBACrB,OAAO,GAAG,eAAe,CAAC;oBAC3B,CAAC;gBACF,CAAC;qBAAM,CAAC;oBACP,kCAAkC;oBAClC,IAAI,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;wBAC/C,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;oBACjD,CAAC;yBAAM,IAAI,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;wBAClD,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;oBAC7C,CAAC;yBAAM,IAAI,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;wBACjD,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;wBAC5C,aAAa;oBACb,CAAC;yBAAM,IAAI,EAAE,CAAC,YAAY,CAAC,cAAc,CAAC,EAAE,CAAC;wBAC5C,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;oBAC/E,CAAC;yBAAM,CAAC;wBACP,MAAM,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC;wBAC9D,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;oBAC3D,CAAC;oBACD,OAAO,GAAG,EAAE,CAAC;gBACd,CAAC;gBAED,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;oBACjC,SAAS,CAAC,aAAa,CAAC,GAAG;wBAC1B,OAAO,EAAE,OAAO,IAAI,EAAE;wBACtB,UAAU,EAAE,EAAE;wBACd,IAAI,EAAE,EAAE;qBACR,CAAC;oBACF,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBACrB,aAAa,EAAE,CAAC;gBACjB,CAAC;YACF,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,0BAA0B,CAAC,EAAO;QACjC,IAAI,OAAO,GAAQ,EAAE,CAAC;QACtB,IAAI,MAAM,GAAQ,EAAE,CAAC,aAAa,CAAC;QAEnC,kEAAkE;QAClE,OAAO,MAAM,IAAI,CAChB,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,MAAM;YACvC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,KAAK,CACtC,EAAE,CAAC;YACH,OAAO,GAAG,MAAM,CAAC;YACjB,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;QAC/B,CAAC;QAED,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,yEAAyE;IACzE,qDAAqD;IACrD,uBAAuB,CAAC,cAAsB,EAAE,KAAa;QAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1C,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC;QACf,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,OAAO,cAAc,EAAE,CAAC;QACpC,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC;QAClC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACtB,OAAO,GAAG,CAAC;IACZ,CAAC;IAED,oBAAoB,CAAC,OAAY;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAEjD,uDAAuD;QACvD,MAAM,wBAAwB,GAAG,OAAO,CAAC,gBAAgB,CAAC,sCAA0B,CAAC,CAAC;QAEtF,+CAA+C;QAC/C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;QAE5B,wBAAwB,CAAC,OAAO,CAAC,CAAC,EAAO,EAAE,EAAE;YAC5C,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,WAAW;gBAAE,OAAO;YAEnC,IAAI,UAAU,GAAG,EAAE,CAAC;YACpB,IAAI,eAAe,GAAG,EAAE,CAAC;YAEzB,4CAA4C;YAC5C,aAAa;YACb,IAAI,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC;gBACrC,UAAU,GAAG,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBAC3C,cAAc;YACd,CAAC;iBAAM,IAAI,EAAE,CAAC,OAAO,CAAC,yBAAyB,CAAC,EAAE,CAAC;gBAClD,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;gBAC/C,IAAI,MAAM,EAAE,CAAC;oBACZ,UAAU,GAAG,MAAM,CAAC;gBACrB,CAAC;qBAAM,CAAC;oBACP,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;oBACrC,IAAI,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;wBACjC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;oBACzC,CAAC;gBACF,CAAC;gBACF,WAAW;YACX,CAAC;iBAAM,IAAI,EAAE,CAAC,OAAO,CAAC,qDAAqD,CAAC,EAAE,CAAC;gBAC9E,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;gBACxD,IAAI,EAAE,EAAE,CAAC;oBACR,UAAU,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;gBAC/B,CAAC;gBACF,QAAQ;YACR,CAAC;iBAAM,IAAI,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;gBACxC,MAAM,IAAI,GAAG,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBACnC,IAAI,IAAI,EAAE,CAAC;oBACV,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;oBACvC,IAAI,IAAI,EAAE,CAAC;wBACV,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;wBAC5D,IAAI,KAAK,EAAE,CAAC;4BACX,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;wBACrC,CAAC;oBACF,CAAC;gBACF,CAAC;YACF,CAAC;iBAAM,IAAI,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;gBACxC,MAAM,KAAK,GAAG,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;gBACvC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;oBACvC,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;oBACvC,IAAI,IAAI,EAAE,CAAC;wBACV,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,6BAA6B,CAAC,CAAC;wBAC1E,IAAI,KAAK,EAAE,CAAC;4BACX,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;wBACrC,CAAC;oBACF,CAAC;gBACF,CAAC,CAAC,CAAC;YACJ,CAAC;iBAAM,IAAI,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC;gBAC5C,UAAU,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YACxD,CAAC;iBAAM,IAAI,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACzC,UAAU,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YACrD,CAAC;iBAAM,IAAI,EAAE,CAAC,OAAO,CAAC,yBAAyB,CAAC,EAAE,CAAC;gBAClD,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;gBACvD,2CAA2C;gBAC3C,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC/C,UAAU,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;gBACvD,CAAC;YACF,CAAC;iBAAM,IAAI,EAAE,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,CAAC;gBAC7C,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;gBACvD,eAAe,GAAG,EAAE,CAAC,YAAY,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;YAClE,CAAC;iBAAM,IAAI,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;gBACrC,UAAU,GAAG,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBAC1C,eAAe,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACjD,CAAC;iBAAM,IAAI,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACzC,UAAU,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YACvD,CAAC;iBAAM,CAAC;gBACP,uBAAuB;gBACvB,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBACrC,IAAI,IAAI,EAAE,CAAC;oBACV,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;oBACpC,UAAU,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;gBAC/B,CAAC;YACF,CAAC;YAED,IAAI,UAAU,EAAE,CAAC;gBAChB,uDAAuD;gBACvD,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CACnD,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC,WAAW,EAAE,CAC3D,CAAC;gBAEF,IAAI,aAAa,EAAE,CAAC;oBACnB,MAAM,CAAC,cAAc,EAAE,YAAY,CAAC,GAAG,aAAa,CAAC;oBAErD,+BAA+B;oBAC/B,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;wBAC3C,SAAS,cAAc,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC;wBAC3D,SAAS,cAAc,EAAE,CAAC;oBAE3B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAE9B,6CAA6C;oBAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC;oBAEtD,0CAA0C;oBAC1C,IAAI,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE,CAAC;wBAC/C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;4BAC/B,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;wBAC9B,CAAC;wBACD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;wBACvC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;oBACjE,CAAC;yBAAM,CAAC;wBACP,iCAAiC;wBACjC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,uBAAuB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;oBAC5E,CAAC;gBACF,CAAC;YACF,CAAC;QACF,CAAC,CAAC,CAAC;QAEH,4BAA4B;QAC5B,SAAS,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE;YAC3C,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,wDAAwD;gBACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC;gBAEnD,4CAA4C;gBAC5C,UAAU,CAAC,OAAO,CAAC,CAAC,GAAQ,EAAE,EAAE;oBAC/B,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;oBACpC,IAAI,IAAI,EAAE,CAAC;wBACV,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;wBAC1C,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;wBAChB,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;wBACtC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;oBAC3B,CAAC;gBACF,CAAC,CAAC,CAAC;gBAEH,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YACjC,CAAC;QACF,CAAC,CAAC,CAAC;QAEH,wCAAwC;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9C,OAAO,CAAC,EAAE,GAAG,WAAW,CAAC;QACzB,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAEjD,iCAAiC;QACjC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE;YACpD,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CACtC,QAAQ,CAAC,MAAM,CAAC,EAChB,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,IAAI,CACT,CAAC;YACF,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,iCAAiC;QACjC,MAAM,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC,mCAAuB,CAAC,CAAC;QACxE,aAAa,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAEpD,6DAA6D;QAC7D,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;YACjC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;IACF,CAAC;CACD;AAED;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,OAAY;IAChD,oDAAoD;IACpD,MAAM,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC;IAClC,IAAI,CAAC,GAAG,EAAE,CAAC;QACV,OAAO,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;QAC5D,OAAO;IACR,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,CAAC;IACzC,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"footnotes.js","sourceRoot":"","sources":["../../src/elements/footnotes.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.imageRules = void 0;
7
7
  const utils_1 = require("../utils");
8
+ const dom_1 = require("../utils/dom");
8
9
  // Pre-compile regular expressions
9
10
  const b64DataUrlRegex = /^data:image\/([^;]+);base64,/;
10
11
  const srcsetPattern = /\.(jpg|jpeg|png|webp)\s+\d/;
@@ -31,8 +32,7 @@ exports.imageRules = [
31
32
  if (srcset) {
32
33
  const newImg = doc.createElement('img');
33
34
  applySrcsetToImage(srcset, newImg);
34
- el.innerHTML = '';
35
- el.appendChild(newImg);
35
+ el.replaceChildren(newImg);
36
36
  return el;
37
37
  }
38
38
  }
@@ -120,7 +120,7 @@ exports.imageRules = [
120
120
  // Try to get cleaner text from specific inner element if possible
121
121
  const richTextP = figcaptionEl.querySelector('.rich-text p');
122
122
  if (richTextP) {
123
- figcaption.innerHTML = richTextP.innerHTML; // Use innerHTML to preserve formatting if needed
123
+ (0, dom_1.transferContent)(richTextP, figcaption);
124
124
  }
125
125
  else {
126
126
  figcaption.textContent = captionText;
@@ -279,7 +279,7 @@ function createFigureWithCaption(imageElement, captionElement, doc) {
279
279
  // Add caption
280
280
  const figcaption = doc.createElement('figcaption');
281
281
  const uniqueCaptionContent = extractUniqueCaptionContent(captionElement);
282
- figcaption.innerHTML = uniqueCaptionContent;
282
+ figcaption.appendChild((0, dom_1.parseHTML)(doc, uniqueCaptionContent));
283
283
  figure.appendChild(figcaption);
284
284
  return figure;
285
285
  }
@@ -604,8 +604,8 @@ function extractUniqueCaptionContent(caption) {
604
604
  if (textNodes.length > 0) {
605
605
  return textNodes.join(' ');
606
606
  }
607
- // Otherwise, just use the innerHTML but try to clean it up
608
- const html = caption.innerHTML;
607
+ // Otherwise, just use the inner HTML but try to clean it up
608
+ const html = (0, dom_1.serializeHTML)(caption);
609
609
  return html;
610
610
  }
611
611
  /**