exceljs-lts 4.5.4 → 4.5.5

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 (36) hide show
  1. package/README.md +28 -11
  2. package/README_zh.md +18 -10
  3. package/dist/es5/doc/cell.js +37 -12
  4. package/dist/es5/doc/cell.js.map +1 -1
  5. package/dist/es5/doc/data-validations.js +94 -1
  6. package/dist/es5/doc/data-validations.js.map +1 -1
  7. package/dist/es5/stream/xlsx/workbook-reader.js +2 -1
  8. package/dist/es5/stream/xlsx/workbook-reader.js.map +1 -1
  9. package/dist/es5/stream/xlsx/workbook-writer.js +21 -1
  10. package/dist/es5/stream/xlsx/workbook-writer.js.map +1 -1
  11. package/dist/es5/stream/xlsx/worksheet-reader.js +1 -1
  12. package/dist/es5/stream/xlsx/worksheet-reader.js.map +1 -1
  13. package/dist/es5/stream/xlsx/worksheet-writer.js +87 -1
  14. package/dist/es5/stream/xlsx/worksheet-writer.js.map +1 -1
  15. package/dist/es5/xlsx/rel-type.js +1 -0
  16. package/dist/es5/xlsx/rel-type.js.map +1 -1
  17. package/dist/es5/xlsx/xform/sheet/data-validations-xform.js +14 -3
  18. package/dist/es5/xlsx/xform/sheet/data-validations-xform.js.map +1 -1
  19. package/dist/exceljs.bare.js +148 -18
  20. package/dist/exceljs.bare.js.map +5 -5
  21. package/dist/exceljs.bare.min.js +1 -1
  22. package/dist/exceljs.bare.min.js.map +1 -1
  23. package/dist/exceljs.js +148 -18
  24. package/dist/exceljs.js.map +5 -5
  25. package/dist/exceljs.min.js +4 -4
  26. package/dist/exceljs.min.js.map +1 -1
  27. package/index.d.ts +36 -3
  28. package/lib/doc/cell.js +37 -12
  29. package/lib/doc/data-validations.js +83 -1
  30. package/lib/stream/xlsx/workbook-reader.js +6 -1
  31. package/lib/stream/xlsx/workbook-writer.js +19 -0
  32. package/lib/stream/xlsx/worksheet-reader.js +1 -1
  33. package/lib/stream/xlsx/worksheet-writer.js +71 -1
  34. package/lib/xlsx/rel-type.js +1 -0
  35. package/lib/xlsx/xform/sheet/data-validations-xform.js +14 -3
  36. package/package.json +1 -1
package/README.md CHANGED
@@ -326,7 +326,7 @@ const sheet = workbook.addWorksheet('My Sheet', {views:[{state: 'frozen', xSplit
326
326
 
327
327
  // Create worksheets with headers and footers
328
328
  const sheet = workbook.addWorksheet('My Sheet', {
329
- headerFooter:{firstHeader: "Hello Exceljs", firstFooter: "Hello World"}
329
+ headerFooter:{differentFirst: true, firstHeader: "Hello Exceljs", firstFooter: "Hello World"}
330
330
  });
331
331
 
332
332
  // create new sheet with pageSetup settings for A4 - landscape
@@ -518,11 +518,11 @@ Note: Images are not currently supported.
518
518
 
519
519
  // Create worksheets with headers and footers
520
520
  var sheet = workbook.addWorksheet('sheet', {
521
- headerFooter:{firstHeader: "Hello Exceljs", firstFooter: "Hello World"}
521
+ headerFooter:{differentFirst: true, firstHeader: "Hello Exceljs", firstFooter: "Hello World"}
522
522
  });
523
523
  // Create worksheets with headers and footers
524
524
  var worksheetWriter = workbookWriter.addWorksheet('sheet', {
525
- headerFooter:{firstHeader: "Hello Exceljs", firstFooter: "Hello World"}
525
+ headerFooter:{differentFirst: true, firstHeader: "Hello Exceljs", firstFooter: "Hello World"}
526
526
  });
527
527
  // Set footer (default centered), result: "Page 2 of 16"
528
528
  worksheet.headerFooter.oddFooter = "Page &P of &N";
@@ -543,8 +543,17 @@ worksheet.headerFooter.oddFooter = "&Lexceljs&C&F&RPage &P";
543
543
  worksheet.headerFooter.differentFirst = true;
544
544
  worksheet.headerFooter.firstHeader = "Hello Exceljs";
545
545
  worksheet.headerFooter.firstFooter = "Hello World"
546
+
547
+ // Add different header & footer for even pages (odd pages use oddHeader/oddFooter)
548
+ worksheet.headerFooter.differentOddEven = true;
549
+ worksheet.headerFooter.evenHeader = "Even page header";
550
+ worksheet.headerFooter.evenFooter = "Page &P (even)";
546
551
  ```
547
552
 
553
+ Note: `firstHeader`/`firstFooter` only take effect when `differentFirst` is `true`, and
554
+ `evenHeader`/`evenFooter` only take effect when `differentOddEven` is `true`. Without these flags
555
+ Excel ignores them and uses `oddHeader`/`oddFooter` on every page.
556
+
548
557
  **Supported headerFooter settings**
549
558
 
550
559
  | Name | Default | Description |
@@ -553,10 +562,10 @@ worksheet.headerFooter.firstFooter = "Hello World"
553
562
  | differentOddEven | false | Set the value of differentOddEven as true, which indicates that headers/footers for odd and even pages are different |
554
563
  | oddHeader | null | Set header string for odd(default) pages, could format the string |
555
564
  | oddFooter | null | Set footer string for odd(default) pages, could format the string |
556
- | evenHeader | null | Set header string for even pages, could format the string |
557
- | evenFooter | null | Set footer string for even pages, could format the string |
558
- | firstHeader | null | Set header string for the first page, could format the string |
559
- | firstFooter | null | Set footer string for the first page, could format the string |
565
+ | evenHeader | null | Set header string for even pages, could format the string. Requires `differentOddEven: true` |
566
+ | evenFooter | null | Set footer string for even pages, could format the string. Requires `differentOddEven: true` |
567
+ | firstHeader | null | Set header string for the first page, could format the string. Requires `differentFirst: true` |
568
+ | firstFooter | null | Set footer string for the first page, could format the string. Requires `differentFirst: true` |
560
569
 
561
570
  **Script Commands**
562
571
 
@@ -1065,6 +1074,12 @@ expect(worksheet.getCell('A1').names).to.have.members(['thing2']);
1065
1074
 
1066
1075
  Cells can define what values are valid or not and provide prompting to the user to help guide them.
1067
1076
 
1077
+ When a file is loaded, a validation that applies to a large range (more than 1000 cells, for example
1078
+ a whole column such as `A2:A1048576`) is kept as one range-keyed entry in
1079
+ `worksheet.dataValidations.model` instead of one entry per cell. `cell.dataValidation` still returns it
1080
+ for every cell in the range, and setting `cell.dataValidation` on one of those cells overrides just
1081
+ that cell.
1082
+
1068
1083
  Validation types can be one of the following:
1069
1084
 
1070
1085
  | Type | Description |
@@ -2036,7 +2051,8 @@ Adding images to a worksheet is a two-step process.
2036
2051
  First, the image is added to the workbook via the addImage() function which will also return an imageId value.
2037
2052
  Then, using the imageId, the image can be added to the worksheet either as a tiled background or covering a cell range.
2038
2053
 
2039
- Note: As of this version, adjusting or transforming the image is not supported and images are not supported in streaming mode.
2054
+ Note: As of this version, adjusting or transforming the image is not supported.
2055
+ The streaming WorkbookWriter supports `addImage()` and `addBackgroundImage()` too; add images to a streamed worksheet before you commit it.
2040
2056
 
2041
2057
  ### Add Image to Workbook[⬆](#contents)<!-- Link generated with jump2header -->
2042
2058
 
@@ -2409,6 +2425,7 @@ The interface to the streaming workbook and worksheet is almost the same as the
2409
2425
  * Once a worksheet is added to a workbook, it cannot be removed.
2410
2426
  * Once a row is committed, it is no longer accessible since it will have been dropped from the worksheet.
2411
2427
  * unMergeCells() is not supported.
2428
+ * Images (`worksheet.addImage()`, `worksheet.addBackgroundImage()`) must be added before the worksheet is committed.
2412
2429
 
2413
2430
  Note that it is possible to build the entire workbook without committing any rows.
2414
2431
  When the workbook is committed, all added worksheets (including all uncommitted rows) will be automatically committed.
@@ -2503,10 +2520,10 @@ The constructor takes a required input argument and an optional options argument
2503
2520
  | --------------------- | ----------- |
2504
2521
  | input (required) | Specifies the name of the file or the readable stream from which to read the XLSX workbook. |
2505
2522
  | options (optional) | Specifies how to handle the event types occuring during the read parsing. |
2506
- | options.entries | Specifies whether to emit entries (`'emit'`) or not (`'ignore'`). Default is `'emit'`. |
2523
+ | options.entries | Specifies whether to emit entries (`'emit'`) or not (`'ignore'`). Default is `'ignore'`. |
2507
2524
  | options.sharedStrings | Specifies whether to cache shared strings (`'cache'`), which inserts them into the respective cell values, or whether to emit them (`'emit'`) or ignore them (`'ignore'`), in both of which case the cell value will be a reference to the shared string's index. Default is `'cache'`. |
2508
- | options.hyperlinks | Specifies whether to cache hyperlinks (`'cache'`), which inserts them into their respective cells, whether to emit them (`'emit'`) or whether to ignore them (`'ignore'`). Default is `'cache'`. |
2509
- | options.styles | Specifies whether to cache styles (`'cache'`), which inserts them into their respective rows and cells, or whether to ignore them (`'ignore'`). Default is `'cache'`. |
2525
+ | options.hyperlinks | Specifies whether to cache hyperlinks (`'cache'`), which inserts them into their respective cells, whether to emit them (`'emit'`) or whether to ignore them (`'ignore'`). Default is `'ignore'`. |
2526
+ | options.styles | Specifies whether to cache styles (`'cache'`), which inserts them into their respective rows and cells, or whether to ignore them (`'ignore'`). Default is `'ignore'`. Use `'cache'` to get number formats and `Date` cell values; with `'ignore'`, dates are read as plain numbers. |
2510
2527
  | options.worksheets | Specifies whether to emit worksheets (`'emit'`) or not (`'ignore'`). Default is `'emit'`. |
2511
2528
 
2512
2529
  ```js
package/README_zh.md CHANGED
@@ -307,7 +307,7 @@ const worksheet = workbook.addWorksheet('My Sheet', {
307
307
 
308
308
  // 创建一个具有页眉页脚的工作表
309
309
  const sheet = workbook.addWorksheet('My Sheet', {
310
- headerFooter:{firstHeader: "Hello Exceljs", firstFooter: "Hello World"}
310
+ headerFooter:{differentFirst: true, firstHeader: "Hello Exceljs", firstFooter: "Hello World"}
311
311
  });
312
312
 
313
313
  // 创建一个冻结了第一行和第一列的工作表
@@ -485,12 +485,12 @@ worksheet.pageSetup.printTitlesColumn = 'A:C';
485
485
  ```javascript
486
486
  // 创建一个带有页眉和页脚的工作表
487
487
  var sheet = workbook.addWorksheet('My Sheet', {
488
- headerFooter:{firstHeader: "Hello Exceljs", firstFooter: "Hello World"}
488
+ headerFooter:{differentFirst: true, firstHeader: "Hello Exceljs", firstFooter: "Hello World"}
489
489
  });
490
490
 
491
491
  // 创建一个带有页眉和页脚可写的工作表
492
492
  var worksheetWriter = workbookWriter.addWorksheet('sheet', {
493
- headerFooter:{firstHeader: "Hello Exceljs", firstFooter: "Hello World"}
493
+ headerFooter:{differentFirst: true, firstHeader: "Hello Exceljs", firstFooter: "Hello World"}
494
494
  });
495
495
  // 代码中出现的&开头字符对应变量,相关信息可查阅下文的变量表
496
496
  // 设置页脚(默认居中),结果:“第 2 页,共 16 页”
@@ -512,8 +512,15 @@ worksheet.headerFooter.oddFooter = "&Lexceljs&C&F&RPage &P";
512
512
  worksheet.headerFooter.differentFirst = true;
513
513
  worksheet.headerFooter.firstHeader = "Hello Exceljs";
514
514
  worksheet.headerFooter.firstFooter = "Hello World"
515
+
516
+ // 为偶数页添加不同的页眉和页脚(奇数页使用 oddHeader/oddFooter)
517
+ worksheet.headerFooter.differentOddEven = true;
518
+ worksheet.headerFooter.evenHeader = "Even page header";
519
+ worksheet.headerFooter.evenFooter = "Page &P (even)";
515
520
  ```
516
521
 
522
+ 注意:只有当 `differentFirst` 为 `true` 时,`firstHeader`/`firstFooter` 才会生效;只有当 `differentOddEven` 为 `true` 时,`evenHeader`/`evenFooter` 才会生效。否则 Excel 会忽略它们,并在所有页面上使用 `oddHeader`/`oddFooter`。
523
+
517
524
  **支持的 headerFooter 设置**
518
525
 
519
526
  | 属性名 | 默认值 | 描述 |
@@ -522,10 +529,10 @@ worksheet.headerFooter.firstFooter = "Hello World"
522
529
  | differentOddEven | `false` | 将 `differentOddEven` 的值设置为 `true`,表示奇数页和偶数页的页眉/页脚不同 |
523
530
  | oddHeader | `null` | 设置奇数(默认)页面的标题字符串,可以设置格式化字符串 |
524
531
  | oddFooter | `null` | 设置奇数(默认)页面的页脚字符串,可以设置格式化字符串 |
525
- | evenHeader | `null` | 设置偶数页的标题字符串,可以设置格式化字符串 |
526
- | evenFooter | `null` | 为偶数页设置页脚字符串,可以设置格式化字符串 |
527
- | firstHeader | `null` | 设置首页的标题字符串,可以设置格式化字符串 |
528
- | firstFooter | `null` | 设置首页的页脚字符串,可以设置格式化字符串 |
532
+ | evenHeader | `null` | 设置偶数页的标题字符串,可以设置格式化字符串。需要 `differentOddEven: true` |
533
+ | evenFooter | `null` | 为偶数页设置页脚字符串,可以设置格式化字符串。需要 `differentOddEven: true` |
534
+ | firstHeader | `null` | 设置首页的标题字符串,可以设置格式化字符串。需要 `differentFirst: true` |
535
+ | firstFooter | `null` | 设置首页的页脚字符串,可以设置格式化字符串。需要 `differentFirst: true` |
529
536
 
530
537
  **脚本命令**
531
538
 
@@ -2271,6 +2278,7 @@ CSV 解析器使用 [fast-csv](https://www.npmjs.com/package/fast-csv) 编写 CS
2271
2278
  * 将工作表添加到工作簿后,将无法将其删除。
2272
2279
  * 提交行后,将无法再访问该行,因为该行将从工作表中删除。
2273
2280
  * 不支持 `unMergeCells()`。
2281
+ * 图片(`worksheet.addImage()`、`worksheet.addBackgroundImage()`)必须在提交工作表之前添加。
2274
2282
 
2275
2283
  请注意,可以在不提交任何行的情况下构建整个工作簿。提交工作簿后,所有添加的工作表(包括所有未提交的行)将自动提交。但是,在这种情况下,与文档版本相比收效甚微。
2276
2284
 
@@ -2356,10 +2364,10 @@ await workbook.commit();
2356
2364
  | --------------------- | ----------- |
2357
2365
  | input (必需的) | 指定从中读取XLSX工作簿的文件或可读流的名称|
2358
2366
  | options (可选的) | 指定如何处理读取解析期间发生的事件类型 |
2359
- | options.entries | 指定是否去触发事件(`'emit'`)或者不发出事件(`'ignore'`),默认值是`'emit'` |
2367
+ | options.entries | 指定是否去触发事件(`'emit'`)或者不发出事件(`'ignore'`),默认值是`'ignore'` |
2360
2368
  | options.sharedStrings | 指定是否去缓存(`'cache'`)共享字符串,将其插入到相应的单元格值中,或者是否去触发(`'emit'`)或忽略(`'ignore'`)它们,在这两种情况下,单元格值都将是对共享字符串索引的引用。默认值是`'cache'` |
2361
- | options.hyperlinks | 指定是否去缓存超链接(`'cache'`),将其插入到相应的单元格值中,是否去触发(`'emit'`)或忽略(`'ignore'`)它们。默认值是`'cache'` |
2362
- | options.styles | 指定是否去缓存样式(`'cache'`),将其插入到相应的行或单元格值中,或是否忽略(`'忽略'`)它们。默认值是`'cache'` |
2369
+ | options.hyperlinks | 指定是否去缓存超链接(`'cache'`),将其插入到相应的单元格值中,是否去触发(`'emit'`)或忽略(`'ignore'`)它们。默认值是`'ignore'` |
2370
+ | options.styles | 指定是否去缓存样式(`'cache'`),将其插入到相应的行或单元格值中,或是否忽略(`'ignore'`)它们。默认值是`'ignore'`。需要设置为`'cache'`才能得到数字格式和`Date`类型的单元格值;设置为`'ignore'`时,日期会被读取为普通数字。 |
2363
2371
  | options.worksheets |指定是否去触发(`'emit'`)或忽略(`'ignore'`)工作表。默认值是`'emit'` |
2364
2372
 
2365
2373
  ```js
@@ -8,6 +8,9 @@ const {
8
8
  slideFormula
9
9
  } = require('../utils/shared-formula');
10
10
  const Note = require('./note');
11
+ const {
12
+ copyStyle
13
+ } = require('../utils/copy-style');
11
14
  // Cell requirements
12
15
  // Operate inside a worksheet
13
16
  // Store and retrieve a value with a range of types: text, number, date, hyperlink, reference, formula, etc.
@@ -37,7 +40,8 @@ class Cell {
37
40
 
38
41
  // help GC by removing cyclic (and other) references
39
42
  destroy() {
40
- delete this.style;
43
+ delete this._style;
44
+ delete this._styleShared;
41
45
  delete this._value;
42
46
  delete this._row;
43
47
  delete this._column;
@@ -46,38 +50,59 @@ class Cell {
46
50
 
47
51
  // =========================================================================
48
52
  // Styles stuff
53
+
54
+ // Cells loaded from a file share one style object per xf. The object is only
55
+ // copied when the style is handed out (cell.style), so code that mutates it
56
+ // in place (cell.style.fill = ...) changes this cell alone.
57
+ get style() {
58
+ if (this._styleShared) {
59
+ this._style = copyStyle(this._style);
60
+ this._styleShared = false;
61
+ }
62
+ return this._style;
63
+ }
64
+ set style(value) {
65
+ this._style = value;
66
+ this._styleShared = false;
67
+ }
68
+
69
+ // use a style object that other cells may share (e.g. a cached xf style)
70
+ _setSharedStyle(style) {
71
+ this._style = style;
72
+ this._styleShared = true;
73
+ }
49
74
  get numFmt() {
50
- return this.style.numFmt;
75
+ return this._style.numFmt;
51
76
  }
52
77
  set numFmt(value) {
53
78
  this._setStyle('numFmt', value);
54
79
  }
55
80
  get font() {
56
- return this.style.font;
81
+ return this._style.font;
57
82
  }
58
83
  set font(value) {
59
84
  this._setStyle('font', value);
60
85
  }
61
86
  get alignment() {
62
- return this.style.alignment;
87
+ return this._style.alignment;
63
88
  }
64
89
  set alignment(value) {
65
90
  this._setStyle('alignment', value);
66
91
  }
67
92
  get border() {
68
- return this.style.border;
93
+ return this._style.border;
69
94
  }
70
95
  set border(value) {
71
96
  this._setStyle('border', value);
72
97
  }
73
98
  get fill() {
74
- return this.style.fill;
99
+ return this._style.fill;
75
100
  }
76
101
  set fill(value) {
77
102
  this._setStyle('fill', value);
78
103
  }
79
104
  get protection() {
80
- return this.style.protection;
105
+ return this._style.protection;
81
106
  }
82
107
  set protection(value) {
83
108
  this._setStyle('protection', value);
@@ -85,7 +110,7 @@ class Cell {
85
110
  _setStyle(name, value) {
86
111
  // style objects can be shared (e.g. by every cell loaded with the same xf),
87
112
  // so never mutate one in place; give this cell a new object instead
88
- const oldStyle = this.style;
113
+ const oldStyle = this._style;
89
114
  const style = {
90
115
  ...oldStyle,
91
116
  [name]: value
@@ -97,12 +122,12 @@ class Cell {
97
122
  const merges = master._mergeCount > 0 && this.worksheet._merges;
98
123
  // the streaming WorksheetWriter keeps its merges in an array
99
124
  const range = merges && (Array.isArray(merges) ? merges.find(merge => merge.top === master.row && merge.left === master.col) : merges[master.address]);
100
- if (range && (master === this || master.style === oldStyle)) {
125
+ if (range && (master === this || master._style === oldStyle)) {
101
126
  for (let r = range.top; r <= range.bottom; r++) {
102
127
  const row = this.worksheet.findRow(r);
103
128
  for (let c = range.left; row && c <= range.right; c++) {
104
129
  const cell = row.findCell(c);
105
- if (cell && cell.style === oldStyle) {
130
+ if (cell && cell._style === oldStyle) {
106
131
  cell.style = style;
107
132
  }
108
133
  }
@@ -310,7 +335,7 @@ class Cell {
310
335
  const {
311
336
  model
312
337
  } = this._value;
313
- model.style = this.style;
338
+ model.style = this._style;
314
339
  if (this._comment) {
315
340
  model.comment = this._comment.model;
316
341
  }
@@ -328,7 +353,7 @@ class Cell {
328
353
  }
329
354
  }
330
355
  if (value.style) {
331
- this.style = value.style;
356
+ this._setSharedStyle(value.style);
332
357
  } else {
333
358
  this.style = {};
334
359
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cell.js","names":["colCache","require","_","Enums","slideFormula","Note","Cell","constructor","row","column","address","Error","_row","_column","validateAddress","_address","_value","Value","create","Types","Null","style","_mergeStyle","_mergeCount","worksheet","workbook","destroy","numFmt","value","_setStyle","font","alignment","border","fill","protection","name","oldStyle","master","type","Merge","merges","_merges","range","Array","isArray","find","merge","top","left","col","r","bottom","findRow","c","right","cell","findCell","rowStyle","colStyle","number","$col$row","letter","effectiveType","toCsvString","addMergeRef","releaseMergeRef","isMerged","ignoreStyle","release","unmerge","isMergedTo","isHyperlink","Hyperlink","hyperlink","v","getType","note","_comment","text","toString","html","escapeHtml","_upgradeToHyperlink","String","formula","result","formulaType","fullAddress","sheetName","names","definedNames","getNamesEx","removeAllNames","forEach","addEx","addName","removeName","removeEx","_dataValidations","dataValidations","dataValidation","add","model","comment","fromModel","ValueType","NullValue","NumberValue","Number","StringValue","replace","RichTextValue","richText","map","t","join","RichText","DateValue","Date","toISOString","HyperlinkValue","undefined","tooltip","MergeValue","_master","FormulaValue","Formula","shareType","ref","sharedFormula","_copyModel","copy","cp","validate","dependencies","ranges","match","cells","_getTranslatedFormula","FormulaType","Master","Shared","None","_translatedFormula","SharedStringValue","SharedString","BooleanValue","Boolean","ErrorValue","error","JSONValue","JSON","stringify","rawValue","sharedString","types","f","reduce","p","T","module","exports"],"sources":["../../../lib/doc/cell.js"],"sourcesContent":["/* eslint-disable max-classes-per-file */\nconst colCache = require('../utils/col-cache');\nconst _ = require('../utils/under-dash');\nconst Enums = require('./enums');\nconst {slideFormula} = require('../utils/shared-formula');\nconst Note = require('./note');\n// Cell requirements\n// Operate inside a worksheet\n// Store and retrieve a value with a range of types: text, number, date, hyperlink, reference, formula, etc.\n// Manage/use and manipulate cell format either as local to cell or inherited from column or row.\n\nclass Cell {\n constructor(row, column, address) {\n if (!row || !column) {\n throw new Error('A Cell needs a Row');\n }\n\n this._row = row;\n this._column = column;\n\n colCache.validateAddress(address);\n this._address = address;\n\n // TODO: lazy evaluation of this._value\n this._value = Value.create(Cell.Types.Null, this);\n\n this.style = this._mergeStyle(row.style, column.style, {});\n\n this._mergeCount = 0;\n }\n\n get worksheet() {\n return this._row.worksheet;\n }\n\n get workbook() {\n return this._row.worksheet.workbook;\n }\n\n // help GC by removing cyclic (and other) references\n destroy() {\n delete this.style;\n delete this._value;\n delete this._row;\n delete this._column;\n delete this._address;\n }\n\n // =========================================================================\n // Styles stuff\n get numFmt() {\n return this.style.numFmt;\n }\n\n set numFmt(value) {\n this._setStyle('numFmt', value);\n }\n\n get font() {\n return this.style.font;\n }\n\n set font(value) {\n this._setStyle('font', value);\n }\n\n get alignment() {\n return this.style.alignment;\n }\n\n set alignment(value) {\n this._setStyle('alignment', value);\n }\n\n get border() {\n return this.style.border;\n }\n\n set border(value) {\n this._setStyle('border', value);\n }\n\n get fill() {\n return this.style.fill;\n }\n\n set fill(value) {\n this._setStyle('fill', value);\n }\n\n get protection() {\n return this.style.protection;\n }\n\n set protection(value) {\n this._setStyle('protection', value);\n }\n\n _setStyle(name, value) {\n // style objects can be shared (e.g. by every cell loaded with the same xf),\n // so never mutate one in place; give this cell a new object instead\n const oldStyle = this.style;\n const style = {...oldStyle, [name]: value};\n this.style = style;\n\n // merged cells share their master's style object, keep it that way\n const master = this.type === Cell.Types.Merge ? this.master : this;\n const merges = master._mergeCount > 0 && this.worksheet._merges;\n // the streaming WorksheetWriter keeps its merges in an array\n const range =\n merges &&\n (Array.isArray(merges)\n ? merges.find(merge => merge.top === master.row && merge.left === master.col)\n : merges[master.address]);\n if (range && (master === this || master.style === oldStyle)) {\n for (let r = range.top; r <= range.bottom; r++) {\n const row = this.worksheet.findRow(r);\n for (let c = range.left; row && c <= range.right; c++) {\n const cell = row.findCell(c);\n if (cell && cell.style === oldStyle) {\n cell.style = style;\n }\n }\n }\n }\n }\n\n _mergeStyle(rowStyle, colStyle, style) {\n const numFmt = (rowStyle && rowStyle.numFmt) || (colStyle && colStyle.numFmt);\n if (numFmt) style.numFmt = numFmt;\n\n const font = (rowStyle && rowStyle.font) || (colStyle && colStyle.font);\n if (font) style.font = font;\n\n const alignment = (rowStyle && rowStyle.alignment) || (colStyle && colStyle.alignment);\n if (alignment) style.alignment = alignment;\n\n const border = (rowStyle && rowStyle.border) || (colStyle && colStyle.border);\n if (border) style.border = border;\n\n const fill = (rowStyle && rowStyle.fill) || (colStyle && colStyle.fill);\n if (fill) style.fill = fill;\n\n const protection = (rowStyle && rowStyle.protection) || (colStyle && colStyle.protection);\n if (protection) style.protection = protection;\n\n return style;\n }\n\n // =========================================================================\n // return the address for this cell\n get address() {\n return this._address;\n }\n\n get row() {\n return this._row.number;\n }\n\n get col() {\n return this._column.number;\n }\n\n get $col$row() {\n return `$${this._column.letter}$${this.row}`;\n }\n\n // =========================================================================\n // Value stuff\n\n get type() {\n return this._value.type;\n }\n\n get effectiveType() {\n return this._value.effectiveType;\n }\n\n toCsvString() {\n return this._value.toCsvString();\n }\n\n // =========================================================================\n // Merge stuff\n\n addMergeRef() {\n this._mergeCount++;\n }\n\n releaseMergeRef() {\n this._mergeCount--;\n }\n\n get isMerged() {\n return this._mergeCount > 0 || this.type === Cell.Types.Merge;\n }\n\n merge(master, ignoreStyle) {\n this._value.release();\n this._value = Value.create(Cell.Types.Merge, this, master);\n if (!ignoreStyle) {\n this.style = master.style;\n }\n }\n\n unmerge() {\n if (this.type === Cell.Types.Merge) {\n this._value.release();\n this._value = Value.create(Cell.Types.Null, this);\n this.style = this._mergeStyle(this._row.style, this._column.style, {});\n }\n }\n\n isMergedTo(master) {\n if (this._value.type !== Cell.Types.Merge) return false;\n return this._value.isMergedTo(master);\n }\n\n get master() {\n if (this.type === Cell.Types.Merge) {\n return this._value.master;\n }\n return this; // an unmerged cell is its own master\n }\n\n get isHyperlink() {\n return this._value.type === Cell.Types.Hyperlink;\n }\n\n get hyperlink() {\n return this._value.hyperlink;\n }\n\n // return the value\n get value() {\n return this._value.value;\n }\n\n // set the value - can be number, string or raw\n set value(v) {\n // special case - merge cells set their master's value\n if (this.type === Cell.Types.Merge) {\n this._value.master.value = v;\n return;\n }\n\n this._value.release();\n\n // assign value\n this._value = Value.create(Value.getType(v), this, v);\n }\n\n get note() {\n return this._comment && this._comment.note;\n }\n\n set note(note) {\n this._comment = new Note(note);\n }\n\n get text() {\n return this._value.toString();\n }\n\n get html() {\n return _.escapeHtml(this.text);\n }\n\n toString() {\n return this.text;\n }\n\n _upgradeToHyperlink(hyperlink) {\n // if this cell is a string, turn it into a Hyperlink\n if (this.type === Cell.Types.String) {\n this._value = Value.create(Cell.Types.Hyperlink, this, {\n text: this._value.value,\n hyperlink,\n });\n }\n }\n\n // =========================================================================\n // Formula stuff\n get formula() {\n return this._value.formula;\n }\n\n get result() {\n return this._value.result;\n }\n\n get formulaType() {\n return this._value.formulaType;\n }\n\n // =========================================================================\n // Name stuff\n get fullAddress() {\n const {worksheet} = this._row;\n return {\n sheetName: worksheet.name,\n address: this.address,\n row: this.row,\n col: this.col,\n };\n }\n\n get name() {\n return this.names[0];\n }\n\n set name(value) {\n this.names = [value];\n }\n\n get names() {\n return this.workbook.definedNames.getNamesEx(this.fullAddress);\n }\n\n set names(value) {\n const {definedNames} = this.workbook;\n definedNames.removeAllNames(this.fullAddress);\n value.forEach(name => {\n definedNames.addEx(this.fullAddress, name);\n });\n }\n\n addName(name) {\n this.workbook.definedNames.addEx(this.fullAddress, name);\n }\n\n removeName(name) {\n this.workbook.definedNames.removeEx(this.fullAddress, name);\n }\n\n removeAllNames() {\n this.workbook.definedNames.removeAllNames(this.fullAddress);\n }\n\n // =========================================================================\n // Data Validation stuff\n get _dataValidations() {\n return this.worksheet.dataValidations;\n }\n\n get dataValidation() {\n return this._dataValidations.find(this.address);\n }\n\n set dataValidation(value) {\n this._dataValidations.add(this.address, value);\n }\n\n // =========================================================================\n // Model stuff\n\n get model() {\n const {model} = this._value;\n model.style = this.style;\n if (this._comment) {\n model.comment = this._comment.model;\n }\n return model;\n }\n\n set model(value) {\n this._value.release();\n this._value = Value.create(value.type, this);\n this._value.model = value;\n\n if (value.comment) {\n switch (value.comment.type) {\n case 'note':\n this._comment = Note.fromModel(value.comment);\n break;\n }\n }\n\n if (value.style) {\n this.style = value.style;\n } else {\n this.style = {};\n }\n }\n}\nCell.Types = Enums.ValueType;\n\n// =============================================================================\n// Internal Value Types\n\nclass NullValue {\n constructor(cell) {\n this.model = {\n address: cell.address,\n type: Cell.Types.Null,\n };\n }\n\n get value() {\n return null;\n }\n\n set value(value) {\n // nothing to do\n }\n\n get type() {\n return Cell.Types.Null;\n }\n\n get effectiveType() {\n return Cell.Types.Null;\n }\n\n get address() {\n return this.model.address;\n }\n\n set address(value) {\n this.model.address = value;\n }\n\n toCsvString() {\n return '';\n }\n\n release() {}\n\n toString() {\n return '';\n }\n}\n\nclass NumberValue {\n constructor(cell, value) {\n this.model = {\n address: cell.address,\n type: Cell.Types.Number,\n value,\n };\n }\n\n get value() {\n return this.model.value;\n }\n\n set value(value) {\n this.model.value = value;\n }\n\n get type() {\n return Cell.Types.Number;\n }\n\n get effectiveType() {\n return Cell.Types.Number;\n }\n\n get address() {\n return this.model.address;\n }\n\n set address(value) {\n this.model.address = value;\n }\n\n toCsvString() {\n return this.model.value.toString();\n }\n\n release() {}\n\n toString() {\n return this.model.value.toString();\n }\n}\n\nclass StringValue {\n constructor(cell, value) {\n this.model = {\n address: cell.address,\n type: Cell.Types.String,\n value,\n };\n }\n\n get value() {\n return this.model.value;\n }\n\n set value(value) {\n this.model.value = value;\n }\n\n get type() {\n return Cell.Types.String;\n }\n\n get effectiveType() {\n return Cell.Types.String;\n }\n\n get address() {\n return this.model.address;\n }\n\n set address(value) {\n this.model.address = value;\n }\n\n toCsvString() {\n return `\"${this.model.value.replace(/\"/g, '\"\"')}\"`;\n }\n\n release() {}\n\n toString() {\n return this.model.value;\n }\n}\n\nclass RichTextValue {\n constructor(cell, value) {\n this.model = {\n address: cell.address,\n type: Cell.Types.String,\n value,\n };\n }\n\n get value() {\n return this.model.value;\n }\n\n set value(value) {\n this.model.value = value;\n }\n\n toString() {\n return this.model.value.richText.map(t => t.text).join('');\n }\n\n get type() {\n return Cell.Types.RichText;\n }\n\n get effectiveType() {\n return Cell.Types.RichText;\n }\n\n get address() {\n return this.model.address;\n }\n\n set address(value) {\n this.model.address = value;\n }\n\n toCsvString() {\n return `\"${this.text.replace(/\"/g, '\"\"')}\"`;\n }\n\n release() {}\n}\n\nclass DateValue {\n constructor(cell, value) {\n this.model = {\n address: cell.address,\n type: Cell.Types.Date,\n value,\n };\n }\n\n get value() {\n return this.model.value;\n }\n\n set value(value) {\n this.model.value = value;\n }\n\n get type() {\n return Cell.Types.Date;\n }\n\n get effectiveType() {\n return Cell.Types.Date;\n }\n\n get address() {\n return this.model.address;\n }\n\n set address(value) {\n this.model.address = value;\n }\n\n toCsvString() {\n return this.model.value.toISOString();\n }\n\n release() {}\n\n toString() {\n return this.model.value.toString();\n }\n}\n\nclass HyperlinkValue {\n constructor(cell, value) {\n this.model = {\n address: cell.address,\n type: Cell.Types.Hyperlink,\n text: value ? value.text : undefined,\n hyperlink: value ? value.hyperlink : undefined,\n };\n if (value && value.tooltip) {\n this.model.tooltip = value.tooltip;\n }\n }\n\n get value() {\n const v = {\n text: this.model.text,\n hyperlink: this.model.hyperlink,\n };\n if (this.model.tooltip) {\n v.tooltip = this.model.tooltip;\n }\n return v;\n }\n\n set value(value) {\n this.model = {\n text: value.text,\n hyperlink: value.hyperlink,\n };\n if (value.tooltip) {\n this.model.tooltip = value.tooltip;\n }\n }\n\n get text() {\n return this.model.text;\n }\n\n set text(value) {\n this.model.text = value;\n }\n\n /*\n get tooltip() {\n return this.model.tooltip;\n }\n\n set tooltip(value) {\n this.model.tooltip = value;\n } */\n\n get hyperlink() {\n return this.model.hyperlink;\n }\n\n set hyperlink(value) {\n this.model.hyperlink = value;\n }\n\n get type() {\n return Cell.Types.Hyperlink;\n }\n\n get effectiveType() {\n return Cell.Types.Hyperlink;\n }\n\n get address() {\n return this.model.address;\n }\n\n set address(value) {\n this.model.address = value;\n }\n\n toCsvString() {\n return this.model.hyperlink;\n }\n\n release() {}\n\n toString() {\n return this.model.text;\n }\n}\n\nclass MergeValue {\n constructor(cell, master) {\n this.model = {\n address: cell.address,\n type: Cell.Types.Merge,\n master: master ? master.address : undefined,\n };\n this._master = master;\n if (master) {\n master.addMergeRef();\n }\n }\n\n get value() {\n return this._master.value;\n }\n\n set value(value) {\n if (value instanceof Cell) {\n if (this._master) {\n this._master.releaseMergeRef();\n }\n value.addMergeRef();\n this._master = value;\n } else {\n this._master.value = value;\n }\n }\n\n isMergedTo(master) {\n return master === this._master;\n }\n\n get master() {\n return this._master;\n }\n\n get type() {\n return Cell.Types.Merge;\n }\n\n get effectiveType() {\n return this._master.effectiveType;\n }\n\n get address() {\n return this.model.address;\n }\n\n set address(value) {\n this.model.address = value;\n }\n\n toCsvString() {\n return '';\n }\n\n release() {\n this._master.releaseMergeRef();\n }\n\n toString() {\n return this.value.toString();\n }\n}\n\nclass FormulaValue {\n constructor(cell, value) {\n this.cell = cell;\n\n this.model = {\n address: cell.address,\n type: Cell.Types.Formula,\n shareType: value ? value.shareType : undefined,\n ref: value ? value.ref : undefined,\n formula: value ? value.formula : undefined,\n sharedFormula: value ? value.sharedFormula : undefined,\n result: value ? value.result : undefined,\n };\n }\n\n _copyModel(model) {\n const copy = {};\n const cp = name => {\n const value = model[name];\n if (value !== undefined && value !== null) {\n copy[name] = value;\n }\n };\n cp('formula');\n cp('result');\n cp('ref');\n cp('shareType');\n cp('sharedFormula');\n return copy;\n }\n\n get value() {\n return this._copyModel(this.model);\n }\n\n set value(value) {\n this.model = this._copyModel(value);\n }\n\n validate(value) {\n switch (Value.getType(value)) {\n case Cell.Types.Null:\n case Cell.Types.String:\n case Cell.Types.Number:\n case Cell.Types.Date:\n break;\n case Cell.Types.Hyperlink:\n case Cell.Types.Formula:\n default:\n throw new Error('Cannot process that type of result value');\n }\n }\n\n get dependencies() {\n // find all the ranges and cells mentioned in the formula\n const ranges = this.formula.match(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\\d{1,4}:[A-Z]{1,3}\\d{1,4}/g);\n const cells = this.formula\n .replace(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\\d{1,4}:[A-Z]{1,3}\\d{1,4}/g, '')\n .match(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\\d{1,4}/g);\n return {\n ranges,\n cells,\n };\n }\n\n get formula() {\n return this.model.formula || this._getTranslatedFormula();\n }\n\n set formula(value) {\n this.model.formula = value;\n }\n\n get formulaType() {\n if (this.model.formula) {\n return Enums.FormulaType.Master;\n }\n if (this.model.sharedFormula) {\n return Enums.FormulaType.Shared;\n }\n return Enums.FormulaType.None;\n }\n\n get result() {\n return this.model.result;\n }\n\n set result(value) {\n this.model.result = value;\n }\n\n get type() {\n return Cell.Types.Formula;\n }\n\n get effectiveType() {\n const v = this.model.result;\n if (v === null || v === undefined) {\n return Enums.ValueType.Null;\n }\n if (v instanceof String || typeof v === 'string') {\n return Enums.ValueType.String;\n }\n if (typeof v === 'number') {\n return Enums.ValueType.Number;\n }\n if (v instanceof Date) {\n return Enums.ValueType.Date;\n }\n if (v.text && v.hyperlink) {\n return Enums.ValueType.Hyperlink;\n }\n if (v.formula) {\n return Enums.ValueType.Formula;\n }\n\n return Enums.ValueType.Null;\n }\n\n get address() {\n return this.model.address;\n }\n\n set address(value) {\n this.model.address = value;\n }\n\n _getTranslatedFormula() {\n if (!this._translatedFormula && this.model.sharedFormula) {\n const {worksheet} = this.cell;\n const master = worksheet.findCell(this.model.sharedFormula);\n this._translatedFormula =\n master && slideFormula(master.formula, master.address, this.model.address);\n }\n return this._translatedFormula;\n }\n\n toCsvString() {\n return `${this.model.result || ''}`;\n }\n\n release() {}\n\n toString() {\n return this.model.result ? this.model.result.toString() : '';\n }\n}\n\nclass SharedStringValue {\n constructor(cell, value) {\n this.model = {\n address: cell.address,\n type: Cell.Types.SharedString,\n value,\n };\n }\n\n get value() {\n return this.model.value;\n }\n\n set value(value) {\n this.model.value = value;\n }\n\n get type() {\n return Cell.Types.SharedString;\n }\n\n get effectiveType() {\n return Cell.Types.SharedString;\n }\n\n get address() {\n return this.model.address;\n }\n\n set address(value) {\n this.model.address = value;\n }\n\n toCsvString() {\n return this.model.value.toString();\n }\n\n release() {}\n\n toString() {\n return this.model.value.toString();\n }\n}\n\nclass BooleanValue {\n constructor(cell, value) {\n this.model = {\n address: cell.address,\n type: Cell.Types.Boolean,\n value,\n };\n }\n\n get value() {\n return this.model.value;\n }\n\n set value(value) {\n this.model.value = value;\n }\n\n get type() {\n return Cell.Types.Boolean;\n }\n\n get effectiveType() {\n return Cell.Types.Boolean;\n }\n\n get address() {\n return this.model.address;\n }\n\n set address(value) {\n this.model.address = value;\n }\n\n toCsvString() {\n return this.model.value ? 1 : 0;\n }\n\n release() {}\n\n toString() {\n return this.model.value.toString();\n }\n}\n\nclass ErrorValue {\n constructor(cell, value) {\n this.model = {\n address: cell.address,\n type: Cell.Types.Error,\n value,\n };\n }\n\n get value() {\n return this.model.value;\n }\n\n set value(value) {\n this.model.value = value;\n }\n\n get type() {\n return Cell.Types.Error;\n }\n\n get effectiveType() {\n return Cell.Types.Error;\n }\n\n get address() {\n return this.model.address;\n }\n\n set address(value) {\n this.model.address = value;\n }\n\n toCsvString() {\n return this.toString();\n }\n\n release() {}\n\n toString() {\n return this.model.value.error.toString();\n }\n}\n\nclass JSONValue {\n constructor(cell, value) {\n this.model = {\n address: cell.address,\n type: Cell.Types.String,\n value: JSON.stringify(value),\n rawValue: value,\n };\n }\n\n get value() {\n return this.model.rawValue;\n }\n\n set value(value) {\n this.model.rawValue = value;\n this.model.value = JSON.stringify(value);\n }\n\n get type() {\n return Cell.Types.String;\n }\n\n get effectiveType() {\n return Cell.Types.String;\n }\n\n get address() {\n return this.model.address;\n }\n\n set address(value) {\n this.model.address = value;\n }\n\n toCsvString() {\n return this.model.value;\n }\n\n release() {}\n\n toString() {\n return this.model.value;\n }\n}\n\n// Value is a place to hold common static Value type functions\nconst Value = {\n getType(value) {\n if (value === null || value === undefined) {\n return Cell.Types.Null;\n }\n if (value instanceof String || typeof value === 'string') {\n return Cell.Types.String;\n }\n if (typeof value === 'number') {\n return Cell.Types.Number;\n }\n if (typeof value === 'boolean') {\n return Cell.Types.Boolean;\n }\n if (value instanceof Date) {\n return Cell.Types.Date;\n }\n if (value.text && value.hyperlink) {\n return Cell.Types.Hyperlink;\n }\n if (value.formula || value.sharedFormula) {\n return Cell.Types.Formula;\n }\n if (value.richText) {\n return Cell.Types.RichText;\n }\n if (value.sharedString) {\n return Cell.Types.SharedString;\n }\n if (value.error) {\n return Cell.Types.Error;\n }\n return Cell.Types.JSON;\n },\n\n // map valueType to constructor\n types: [\n {t: Cell.Types.Null, f: NullValue},\n {t: Cell.Types.Number, f: NumberValue},\n {t: Cell.Types.String, f: StringValue},\n {t: Cell.Types.Date, f: DateValue},\n {t: Cell.Types.Hyperlink, f: HyperlinkValue},\n {t: Cell.Types.Formula, f: FormulaValue},\n {t: Cell.Types.Merge, f: MergeValue},\n {t: Cell.Types.JSON, f: JSONValue},\n {t: Cell.Types.SharedString, f: SharedStringValue},\n {t: Cell.Types.RichText, f: RichTextValue},\n {t: Cell.Types.Boolean, f: BooleanValue},\n {t: Cell.Types.Error, f: ErrorValue},\n ].reduce((p, t) => {\n p[t.t] = t.f;\n return p;\n }, []),\n\n create(type, cell, value) {\n const T = this.types[type];\n if (!T) {\n throw new Error(`Could not create Value of type ${type}`);\n }\n return new T(cell, value);\n },\n};\n\nmodule.exports = Cell;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"cell.js","names":["colCache","require","_","Enums","slideFormula","Note","copyStyle","Cell","constructor","row","column","address","Error","_row","_column","validateAddress","_address","_value","Value","create","Types","Null","style","_mergeStyle","_mergeCount","worksheet","workbook","destroy","_style","_styleShared","value","_setSharedStyle","numFmt","_setStyle","font","alignment","border","fill","protection","name","oldStyle","master","type","Merge","merges","_merges","range","Array","isArray","find","merge","top","left","col","r","bottom","findRow","c","right","cell","findCell","rowStyle","colStyle","number","$col$row","letter","effectiveType","toCsvString","addMergeRef","releaseMergeRef","isMerged","ignoreStyle","release","unmerge","isMergedTo","isHyperlink","Hyperlink","hyperlink","v","getType","note","_comment","text","toString","html","escapeHtml","_upgradeToHyperlink","String","formula","result","formulaType","fullAddress","sheetName","names","definedNames","getNamesEx","removeAllNames","forEach","addEx","addName","removeName","removeEx","_dataValidations","dataValidations","dataValidation","add","model","comment","fromModel","ValueType","NullValue","NumberValue","Number","StringValue","replace","RichTextValue","richText","map","t","join","RichText","DateValue","Date","toISOString","HyperlinkValue","undefined","tooltip","MergeValue","_master","FormulaValue","Formula","shareType","ref","sharedFormula","_copyModel","copy","cp","validate","dependencies","ranges","match","cells","_getTranslatedFormula","FormulaType","Master","Shared","None","_translatedFormula","SharedStringValue","SharedString","BooleanValue","Boolean","ErrorValue","error","JSONValue","JSON","stringify","rawValue","sharedString","types","f","reduce","p","T","module","exports"],"sources":["../../../lib/doc/cell.js"],"sourcesContent":["/* eslint-disable max-classes-per-file */\nconst colCache = require('../utils/col-cache');\nconst _ = require('../utils/under-dash');\nconst Enums = require('./enums');\nconst {slideFormula} = require('../utils/shared-formula');\nconst Note = require('./note');\nconst {copyStyle} = require('../utils/copy-style');\n// Cell requirements\n// Operate inside a worksheet\n// Store and retrieve a value with a range of types: text, number, date, hyperlink, reference, formula, etc.\n// Manage/use and manipulate cell format either as local to cell or inherited from column or row.\n\nclass Cell {\n constructor(row, column, address) {\n if (!row || !column) {\n throw new Error('A Cell needs a Row');\n }\n\n this._row = row;\n this._column = column;\n\n colCache.validateAddress(address);\n this._address = address;\n\n // TODO: lazy evaluation of this._value\n this._value = Value.create(Cell.Types.Null, this);\n\n this.style = this._mergeStyle(row.style, column.style, {});\n\n this._mergeCount = 0;\n }\n\n get worksheet() {\n return this._row.worksheet;\n }\n\n get workbook() {\n return this._row.worksheet.workbook;\n }\n\n // help GC by removing cyclic (and other) references\n destroy() {\n delete this._style;\n delete this._styleShared;\n delete this._value;\n delete this._row;\n delete this._column;\n delete this._address;\n }\n\n // =========================================================================\n // Styles stuff\n\n // Cells loaded from a file share one style object per xf. The object is only\n // copied when the style is handed out (cell.style), so code that mutates it\n // in place (cell.style.fill = ...) changes this cell alone.\n get style() {\n if (this._styleShared) {\n this._style = copyStyle(this._style);\n this._styleShared = false;\n }\n return this._style;\n }\n\n set style(value) {\n this._style = value;\n this._styleShared = false;\n }\n\n // use a style object that other cells may share (e.g. a cached xf style)\n _setSharedStyle(style) {\n this._style = style;\n this._styleShared = true;\n }\n\n get numFmt() {\n return this._style.numFmt;\n }\n\n set numFmt(value) {\n this._setStyle('numFmt', value);\n }\n\n get font() {\n return this._style.font;\n }\n\n set font(value) {\n this._setStyle('font', value);\n }\n\n get alignment() {\n return this._style.alignment;\n }\n\n set alignment(value) {\n this._setStyle('alignment', value);\n }\n\n get border() {\n return this._style.border;\n }\n\n set border(value) {\n this._setStyle('border', value);\n }\n\n get fill() {\n return this._style.fill;\n }\n\n set fill(value) {\n this._setStyle('fill', value);\n }\n\n get protection() {\n return this._style.protection;\n }\n\n set protection(value) {\n this._setStyle('protection', value);\n }\n\n _setStyle(name, value) {\n // style objects can be shared (e.g. by every cell loaded with the same xf),\n // so never mutate one in place; give this cell a new object instead\n const oldStyle = this._style;\n const style = {...oldStyle, [name]: value};\n this.style = style;\n\n // merged cells share their master's style object, keep it that way\n const master = this.type === Cell.Types.Merge ? this.master : this;\n const merges = master._mergeCount > 0 && this.worksheet._merges;\n // the streaming WorksheetWriter keeps its merges in an array\n const range =\n merges &&\n (Array.isArray(merges)\n ? merges.find(merge => merge.top === master.row && merge.left === master.col)\n : merges[master.address]);\n if (range && (master === this || master._style === oldStyle)) {\n for (let r = range.top; r <= range.bottom; r++) {\n const row = this.worksheet.findRow(r);\n for (let c = range.left; row && c <= range.right; c++) {\n const cell = row.findCell(c);\n if (cell && cell._style === oldStyle) {\n cell.style = style;\n }\n }\n }\n }\n }\n\n _mergeStyle(rowStyle, colStyle, style) {\n const numFmt = (rowStyle && rowStyle.numFmt) || (colStyle && colStyle.numFmt);\n if (numFmt) style.numFmt = numFmt;\n\n const font = (rowStyle && rowStyle.font) || (colStyle && colStyle.font);\n if (font) style.font = font;\n\n const alignment = (rowStyle && rowStyle.alignment) || (colStyle && colStyle.alignment);\n if (alignment) style.alignment = alignment;\n\n const border = (rowStyle && rowStyle.border) || (colStyle && colStyle.border);\n if (border) style.border = border;\n\n const fill = (rowStyle && rowStyle.fill) || (colStyle && colStyle.fill);\n if (fill) style.fill = fill;\n\n const protection = (rowStyle && rowStyle.protection) || (colStyle && colStyle.protection);\n if (protection) style.protection = protection;\n\n return style;\n }\n\n // =========================================================================\n // return the address for this cell\n get address() {\n return this._address;\n }\n\n get row() {\n return this._row.number;\n }\n\n get col() {\n return this._column.number;\n }\n\n get $col$row() {\n return `$${this._column.letter}$${this.row}`;\n }\n\n // =========================================================================\n // Value stuff\n\n get type() {\n return this._value.type;\n }\n\n get effectiveType() {\n return this._value.effectiveType;\n }\n\n toCsvString() {\n return this._value.toCsvString();\n }\n\n // =========================================================================\n // Merge stuff\n\n addMergeRef() {\n this._mergeCount++;\n }\n\n releaseMergeRef() {\n this._mergeCount--;\n }\n\n get isMerged() {\n return this._mergeCount > 0 || this.type === Cell.Types.Merge;\n }\n\n merge(master, ignoreStyle) {\n this._value.release();\n this._value = Value.create(Cell.Types.Merge, this, master);\n if (!ignoreStyle) {\n this.style = master.style;\n }\n }\n\n unmerge() {\n if (this.type === Cell.Types.Merge) {\n this._value.release();\n this._value = Value.create(Cell.Types.Null, this);\n this.style = this._mergeStyle(this._row.style, this._column.style, {});\n }\n }\n\n isMergedTo(master) {\n if (this._value.type !== Cell.Types.Merge) return false;\n return this._value.isMergedTo(master);\n }\n\n get master() {\n if (this.type === Cell.Types.Merge) {\n return this._value.master;\n }\n return this; // an unmerged cell is its own master\n }\n\n get isHyperlink() {\n return this._value.type === Cell.Types.Hyperlink;\n }\n\n get hyperlink() {\n return this._value.hyperlink;\n }\n\n // return the value\n get value() {\n return this._value.value;\n }\n\n // set the value - can be number, string or raw\n set value(v) {\n // special case - merge cells set their master's value\n if (this.type === Cell.Types.Merge) {\n this._value.master.value = v;\n return;\n }\n\n this._value.release();\n\n // assign value\n this._value = Value.create(Value.getType(v), this, v);\n }\n\n get note() {\n return this._comment && this._comment.note;\n }\n\n set note(note) {\n this._comment = new Note(note);\n }\n\n get text() {\n return this._value.toString();\n }\n\n get html() {\n return _.escapeHtml(this.text);\n }\n\n toString() {\n return this.text;\n }\n\n _upgradeToHyperlink(hyperlink) {\n // if this cell is a string, turn it into a Hyperlink\n if (this.type === Cell.Types.String) {\n this._value = Value.create(Cell.Types.Hyperlink, this, {\n text: this._value.value,\n hyperlink,\n });\n }\n }\n\n // =========================================================================\n // Formula stuff\n get formula() {\n return this._value.formula;\n }\n\n get result() {\n return this._value.result;\n }\n\n get formulaType() {\n return this._value.formulaType;\n }\n\n // =========================================================================\n // Name stuff\n get fullAddress() {\n const {worksheet} = this._row;\n return {\n sheetName: worksheet.name,\n address: this.address,\n row: this.row,\n col: this.col,\n };\n }\n\n get name() {\n return this.names[0];\n }\n\n set name(value) {\n this.names = [value];\n }\n\n get names() {\n return this.workbook.definedNames.getNamesEx(this.fullAddress);\n }\n\n set names(value) {\n const {definedNames} = this.workbook;\n definedNames.removeAllNames(this.fullAddress);\n value.forEach(name => {\n definedNames.addEx(this.fullAddress, name);\n });\n }\n\n addName(name) {\n this.workbook.definedNames.addEx(this.fullAddress, name);\n }\n\n removeName(name) {\n this.workbook.definedNames.removeEx(this.fullAddress, name);\n }\n\n removeAllNames() {\n this.workbook.definedNames.removeAllNames(this.fullAddress);\n }\n\n // =========================================================================\n // Data Validation stuff\n get _dataValidations() {\n return this.worksheet.dataValidations;\n }\n\n get dataValidation() {\n return this._dataValidations.find(this.address);\n }\n\n set dataValidation(value) {\n this._dataValidations.add(this.address, value);\n }\n\n // =========================================================================\n // Model stuff\n\n get model() {\n const {model} = this._value;\n model.style = this._style;\n if (this._comment) {\n model.comment = this._comment.model;\n }\n return model;\n }\n\n set model(value) {\n this._value.release();\n this._value = Value.create(value.type, this);\n this._value.model = value;\n\n if (value.comment) {\n switch (value.comment.type) {\n case 'note':\n this._comment = Note.fromModel(value.comment);\n break;\n }\n }\n\n if (value.style) {\n this._setSharedStyle(value.style);\n } else {\n this.style = {};\n }\n }\n}\nCell.Types = Enums.ValueType;\n\n// =============================================================================\n// Internal Value Types\n\nclass NullValue {\n constructor(cell) {\n this.model = {\n address: cell.address,\n type: Cell.Types.Null,\n };\n }\n\n get value() {\n return null;\n }\n\n set value(value) {\n // nothing to do\n }\n\n get type() {\n return Cell.Types.Null;\n }\n\n get effectiveType() {\n return Cell.Types.Null;\n }\n\n get address() {\n return this.model.address;\n }\n\n set address(value) {\n this.model.address = value;\n }\n\n toCsvString() {\n return '';\n }\n\n release() {}\n\n toString() {\n return '';\n }\n}\n\nclass NumberValue {\n constructor(cell, value) {\n this.model = {\n address: cell.address,\n type: Cell.Types.Number,\n value,\n };\n }\n\n get value() {\n return this.model.value;\n }\n\n set value(value) {\n this.model.value = value;\n }\n\n get type() {\n return Cell.Types.Number;\n }\n\n get effectiveType() {\n return Cell.Types.Number;\n }\n\n get address() {\n return this.model.address;\n }\n\n set address(value) {\n this.model.address = value;\n }\n\n toCsvString() {\n return this.model.value.toString();\n }\n\n release() {}\n\n toString() {\n return this.model.value.toString();\n }\n}\n\nclass StringValue {\n constructor(cell, value) {\n this.model = {\n address: cell.address,\n type: Cell.Types.String,\n value,\n };\n }\n\n get value() {\n return this.model.value;\n }\n\n set value(value) {\n this.model.value = value;\n }\n\n get type() {\n return Cell.Types.String;\n }\n\n get effectiveType() {\n return Cell.Types.String;\n }\n\n get address() {\n return this.model.address;\n }\n\n set address(value) {\n this.model.address = value;\n }\n\n toCsvString() {\n return `\"${this.model.value.replace(/\"/g, '\"\"')}\"`;\n }\n\n release() {}\n\n toString() {\n return this.model.value;\n }\n}\n\nclass RichTextValue {\n constructor(cell, value) {\n this.model = {\n address: cell.address,\n type: Cell.Types.String,\n value,\n };\n }\n\n get value() {\n return this.model.value;\n }\n\n set value(value) {\n this.model.value = value;\n }\n\n toString() {\n return this.model.value.richText.map(t => t.text).join('');\n }\n\n get type() {\n return Cell.Types.RichText;\n }\n\n get effectiveType() {\n return Cell.Types.RichText;\n }\n\n get address() {\n return this.model.address;\n }\n\n set address(value) {\n this.model.address = value;\n }\n\n toCsvString() {\n return `\"${this.text.replace(/\"/g, '\"\"')}\"`;\n }\n\n release() {}\n}\n\nclass DateValue {\n constructor(cell, value) {\n this.model = {\n address: cell.address,\n type: Cell.Types.Date,\n value,\n };\n }\n\n get value() {\n return this.model.value;\n }\n\n set value(value) {\n this.model.value = value;\n }\n\n get type() {\n return Cell.Types.Date;\n }\n\n get effectiveType() {\n return Cell.Types.Date;\n }\n\n get address() {\n return this.model.address;\n }\n\n set address(value) {\n this.model.address = value;\n }\n\n toCsvString() {\n return this.model.value.toISOString();\n }\n\n release() {}\n\n toString() {\n return this.model.value.toString();\n }\n}\n\nclass HyperlinkValue {\n constructor(cell, value) {\n this.model = {\n address: cell.address,\n type: Cell.Types.Hyperlink,\n text: value ? value.text : undefined,\n hyperlink: value ? value.hyperlink : undefined,\n };\n if (value && value.tooltip) {\n this.model.tooltip = value.tooltip;\n }\n }\n\n get value() {\n const v = {\n text: this.model.text,\n hyperlink: this.model.hyperlink,\n };\n if (this.model.tooltip) {\n v.tooltip = this.model.tooltip;\n }\n return v;\n }\n\n set value(value) {\n this.model = {\n text: value.text,\n hyperlink: value.hyperlink,\n };\n if (value.tooltip) {\n this.model.tooltip = value.tooltip;\n }\n }\n\n get text() {\n return this.model.text;\n }\n\n set text(value) {\n this.model.text = value;\n }\n\n /*\n get tooltip() {\n return this.model.tooltip;\n }\n\n set tooltip(value) {\n this.model.tooltip = value;\n } */\n\n get hyperlink() {\n return this.model.hyperlink;\n }\n\n set hyperlink(value) {\n this.model.hyperlink = value;\n }\n\n get type() {\n return Cell.Types.Hyperlink;\n }\n\n get effectiveType() {\n return Cell.Types.Hyperlink;\n }\n\n get address() {\n return this.model.address;\n }\n\n set address(value) {\n this.model.address = value;\n }\n\n toCsvString() {\n return this.model.hyperlink;\n }\n\n release() {}\n\n toString() {\n return this.model.text;\n }\n}\n\nclass MergeValue {\n constructor(cell, master) {\n this.model = {\n address: cell.address,\n type: Cell.Types.Merge,\n master: master ? master.address : undefined,\n };\n this._master = master;\n if (master) {\n master.addMergeRef();\n }\n }\n\n get value() {\n return this._master.value;\n }\n\n set value(value) {\n if (value instanceof Cell) {\n if (this._master) {\n this._master.releaseMergeRef();\n }\n value.addMergeRef();\n this._master = value;\n } else {\n this._master.value = value;\n }\n }\n\n isMergedTo(master) {\n return master === this._master;\n }\n\n get master() {\n return this._master;\n }\n\n get type() {\n return Cell.Types.Merge;\n }\n\n get effectiveType() {\n return this._master.effectiveType;\n }\n\n get address() {\n return this.model.address;\n }\n\n set address(value) {\n this.model.address = value;\n }\n\n toCsvString() {\n return '';\n }\n\n release() {\n this._master.releaseMergeRef();\n }\n\n toString() {\n return this.value.toString();\n }\n}\n\nclass FormulaValue {\n constructor(cell, value) {\n this.cell = cell;\n\n this.model = {\n address: cell.address,\n type: Cell.Types.Formula,\n shareType: value ? value.shareType : undefined,\n ref: value ? value.ref : undefined,\n formula: value ? value.formula : undefined,\n sharedFormula: value ? value.sharedFormula : undefined,\n result: value ? value.result : undefined,\n };\n }\n\n _copyModel(model) {\n const copy = {};\n const cp = name => {\n const value = model[name];\n if (value !== undefined && value !== null) {\n copy[name] = value;\n }\n };\n cp('formula');\n cp('result');\n cp('ref');\n cp('shareType');\n cp('sharedFormula');\n return copy;\n }\n\n get value() {\n return this._copyModel(this.model);\n }\n\n set value(value) {\n this.model = this._copyModel(value);\n }\n\n validate(value) {\n switch (Value.getType(value)) {\n case Cell.Types.Null:\n case Cell.Types.String:\n case Cell.Types.Number:\n case Cell.Types.Date:\n break;\n case Cell.Types.Hyperlink:\n case Cell.Types.Formula:\n default:\n throw new Error('Cannot process that type of result value');\n }\n }\n\n get dependencies() {\n // find all the ranges and cells mentioned in the formula\n const ranges = this.formula.match(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\\d{1,4}:[A-Z]{1,3}\\d{1,4}/g);\n const cells = this.formula\n .replace(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\\d{1,4}:[A-Z]{1,3}\\d{1,4}/g, '')\n .match(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\\d{1,4}/g);\n return {\n ranges,\n cells,\n };\n }\n\n get formula() {\n return this.model.formula || this._getTranslatedFormula();\n }\n\n set formula(value) {\n this.model.formula = value;\n }\n\n get formulaType() {\n if (this.model.formula) {\n return Enums.FormulaType.Master;\n }\n if (this.model.sharedFormula) {\n return Enums.FormulaType.Shared;\n }\n return Enums.FormulaType.None;\n }\n\n get result() {\n return this.model.result;\n }\n\n set result(value) {\n this.model.result = value;\n }\n\n get type() {\n return Cell.Types.Formula;\n }\n\n get effectiveType() {\n const v = this.model.result;\n if (v === null || v === undefined) {\n return Enums.ValueType.Null;\n }\n if (v instanceof String || typeof v === 'string') {\n return Enums.ValueType.String;\n }\n if (typeof v === 'number') {\n return Enums.ValueType.Number;\n }\n if (v instanceof Date) {\n return Enums.ValueType.Date;\n }\n if (v.text && v.hyperlink) {\n return Enums.ValueType.Hyperlink;\n }\n if (v.formula) {\n return Enums.ValueType.Formula;\n }\n\n return Enums.ValueType.Null;\n }\n\n get address() {\n return this.model.address;\n }\n\n set address(value) {\n this.model.address = value;\n }\n\n _getTranslatedFormula() {\n if (!this._translatedFormula && this.model.sharedFormula) {\n const {worksheet} = this.cell;\n const master = worksheet.findCell(this.model.sharedFormula);\n this._translatedFormula =\n master && slideFormula(master.formula, master.address, this.model.address);\n }\n return this._translatedFormula;\n }\n\n toCsvString() {\n return `${this.model.result || ''}`;\n }\n\n release() {}\n\n toString() {\n return this.model.result ? this.model.result.toString() : '';\n }\n}\n\nclass SharedStringValue {\n constructor(cell, value) {\n this.model = {\n address: cell.address,\n type: Cell.Types.SharedString,\n value,\n };\n }\n\n get value() {\n return this.model.value;\n }\n\n set value(value) {\n this.model.value = value;\n }\n\n get type() {\n return Cell.Types.SharedString;\n }\n\n get effectiveType() {\n return Cell.Types.SharedString;\n }\n\n get address() {\n return this.model.address;\n }\n\n set address(value) {\n this.model.address = value;\n }\n\n toCsvString() {\n return this.model.value.toString();\n }\n\n release() {}\n\n toString() {\n return this.model.value.toString();\n }\n}\n\nclass BooleanValue {\n constructor(cell, value) {\n this.model = {\n address: cell.address,\n type: Cell.Types.Boolean,\n value,\n };\n }\n\n get value() {\n return this.model.value;\n }\n\n set value(value) {\n this.model.value = value;\n }\n\n get type() {\n return Cell.Types.Boolean;\n }\n\n get effectiveType() {\n return Cell.Types.Boolean;\n }\n\n get address() {\n return this.model.address;\n }\n\n set address(value) {\n this.model.address = value;\n }\n\n toCsvString() {\n return this.model.value ? 1 : 0;\n }\n\n release() {}\n\n toString() {\n return this.model.value.toString();\n }\n}\n\nclass ErrorValue {\n constructor(cell, value) {\n this.model = {\n address: cell.address,\n type: Cell.Types.Error,\n value,\n };\n }\n\n get value() {\n return this.model.value;\n }\n\n set value(value) {\n this.model.value = value;\n }\n\n get type() {\n return Cell.Types.Error;\n }\n\n get effectiveType() {\n return Cell.Types.Error;\n }\n\n get address() {\n return this.model.address;\n }\n\n set address(value) {\n this.model.address = value;\n }\n\n toCsvString() {\n return this.toString();\n }\n\n release() {}\n\n toString() {\n return this.model.value.error.toString();\n }\n}\n\nclass JSONValue {\n constructor(cell, value) {\n this.model = {\n address: cell.address,\n type: Cell.Types.String,\n value: JSON.stringify(value),\n rawValue: value,\n };\n }\n\n get value() {\n return this.model.rawValue;\n }\n\n set value(value) {\n this.model.rawValue = value;\n this.model.value = JSON.stringify(value);\n }\n\n get type() {\n return Cell.Types.String;\n }\n\n get effectiveType() {\n return Cell.Types.String;\n }\n\n get address() {\n return this.model.address;\n }\n\n set address(value) {\n this.model.address = value;\n }\n\n toCsvString() {\n return this.model.value;\n }\n\n release() {}\n\n toString() {\n return this.model.value;\n }\n}\n\n// Value is a place to hold common static Value type functions\nconst Value = {\n getType(value) {\n if (value === null || value === undefined) {\n return Cell.Types.Null;\n }\n if (value instanceof String || typeof value === 'string') {\n return Cell.Types.String;\n }\n if (typeof value === 'number') {\n return Cell.Types.Number;\n }\n if (typeof value === 'boolean') {\n return Cell.Types.Boolean;\n }\n if (value instanceof Date) {\n return Cell.Types.Date;\n }\n if (value.text && value.hyperlink) {\n return Cell.Types.Hyperlink;\n }\n if (value.formula || value.sharedFormula) {\n return Cell.Types.Formula;\n }\n if (value.richText) {\n return Cell.Types.RichText;\n }\n if (value.sharedString) {\n return Cell.Types.SharedString;\n }\n if (value.error) {\n return Cell.Types.Error;\n }\n return Cell.Types.JSON;\n },\n\n // map valueType to constructor\n types: [\n {t: Cell.Types.Null, f: NullValue},\n {t: Cell.Types.Number, f: NumberValue},\n {t: Cell.Types.String, f: StringValue},\n {t: Cell.Types.Date, f: DateValue},\n {t: Cell.Types.Hyperlink, f: HyperlinkValue},\n {t: Cell.Types.Formula, f: FormulaValue},\n {t: Cell.Types.Merge, f: MergeValue},\n {t: Cell.Types.JSON, f: JSONValue},\n {t: Cell.Types.SharedString, f: SharedStringValue},\n {t: Cell.Types.RichText, f: RichTextValue},\n {t: Cell.Types.Boolean, f: BooleanValue},\n {t: Cell.Types.Error, f: ErrorValue},\n ].reduce((p, t) => {\n p[t.t] = t.f;\n return p;\n }, []),\n\n create(type, cell, value) {\n const T = this.types[type];\n if (!T) {\n throw new Error(`Could not create Value of type ${type}`);\n }\n return new T(cell, value);\n },\n};\n\nmodule.exports = Cell;\n"],"mappings":";;AAAA;AACA,MAAMA,QAAQ,GAAGC,OAAO,CAAC,oBAAoB,CAAC;AAC9C,MAAMC,CAAC,GAAGD,OAAO,CAAC,qBAAqB,CAAC;AACxC,MAAME,KAAK,GAAGF,OAAO,CAAC,SAAS,CAAC;AAChC,MAAM;EAACG;AAAY,CAAC,GAAGH,OAAO,CAAC,yBAAyB,CAAC;AACzD,MAAMI,IAAI,GAAGJ,OAAO,CAAC,QAAQ,CAAC;AAC9B,MAAM;EAACK;AAAS,CAAC,GAAGL,OAAO,CAAC,qBAAqB,CAAC;AAClD;AACA;AACA;AACA;;AAEA,MAAMM,IAAI,CAAC;EACTC,WAAWA,CAACC,GAAG,EAAEC,MAAM,EAAEC,OAAO,EAAE;IAChC,IAAI,CAACF,GAAG,IAAI,CAACC,MAAM,EAAE;MACnB,MAAM,IAAIE,KAAK,CAAC,oBAAoB,CAAC;IACvC;IAEA,IAAI,CAACC,IAAI,GAAGJ,GAAG;IACf,IAAI,CAACK,OAAO,GAAGJ,MAAM;IAErBV,QAAQ,CAACe,eAAe,CAACJ,OAAO,CAAC;IACjC,IAAI,CAACK,QAAQ,GAAGL,OAAO;;IAEvB;IACA,IAAI,CAACM,MAAM,GAAGC,KAAK,CAACC,MAAM,CAACZ,IAAI,CAACa,KAAK,CAACC,IAAI,EAAE,IAAI,CAAC;IAEjD,IAAI,CAACC,KAAK,GAAG,IAAI,CAACC,WAAW,CAACd,GAAG,CAACa,KAAK,EAAEZ,MAAM,CAACY,KAAK,EAAE,CAAC,CAAC,CAAC;IAE1D,IAAI,CAACE,WAAW,GAAG,CAAC;EACtB;EAEA,IAAIC,SAASA,CAAA,EAAG;IACd,OAAO,IAAI,CAACZ,IAAI,CAACY,SAAS;EAC5B;EAEA,IAAIC,QAAQA,CAAA,EAAG;IACb,OAAO,IAAI,CAACb,IAAI,CAACY,SAAS,CAACC,QAAQ;EACrC;;EAEA;EACAC,OAAOA,CAAA,EAAG;IACR,OAAO,IAAI,CAACC,MAAM;IAClB,OAAO,IAAI,CAACC,YAAY;IACxB,OAAO,IAAI,CAACZ,MAAM;IAClB,OAAO,IAAI,CAACJ,IAAI;IAChB,OAAO,IAAI,CAACC,OAAO;IACnB,OAAO,IAAI,CAACE,QAAQ;EACtB;;EAEA;EACA;;EAEA;EACA;EACA;EACA,IAAIM,KAAKA,CAAA,EAAG;IACV,IAAI,IAAI,CAACO,YAAY,EAAE;MACrB,IAAI,CAACD,MAAM,GAAGtB,SAAS,CAAC,IAAI,CAACsB,MAAM,CAAC;MACpC,IAAI,CAACC,YAAY,GAAG,KAAK;IAC3B;IACA,OAAO,IAAI,CAACD,MAAM;EACpB;EAEA,IAAIN,KAAKA,CAACQ,KAAK,EAAE;IACf,IAAI,CAACF,MAAM,GAAGE,KAAK;IACnB,IAAI,CAACD,YAAY,GAAG,KAAK;EAC3B;;EAEA;EACAE,eAAeA,CAACT,KAAK,EAAE;IACrB,IAAI,CAACM,MAAM,GAAGN,KAAK;IACnB,IAAI,CAACO,YAAY,GAAG,IAAI;EAC1B;EAEA,IAAIG,MAAMA,CAAA,EAAG;IACX,OAAO,IAAI,CAACJ,MAAM,CAACI,MAAM;EAC3B;EAEA,IAAIA,MAAMA,CAACF,KAAK,EAAE;IAChB,IAAI,CAACG,SAAS,CAAC,QAAQ,EAAEH,KAAK,CAAC;EACjC;EAEA,IAAII,IAAIA,CAAA,EAAG;IACT,OAAO,IAAI,CAACN,MAAM,CAACM,IAAI;EACzB;EAEA,IAAIA,IAAIA,CAACJ,KAAK,EAAE;IACd,IAAI,CAACG,SAAS,CAAC,MAAM,EAAEH,KAAK,CAAC;EAC/B;EAEA,IAAIK,SAASA,CAAA,EAAG;IACd,OAAO,IAAI,CAACP,MAAM,CAACO,SAAS;EAC9B;EAEA,IAAIA,SAASA,CAACL,KAAK,EAAE;IACnB,IAAI,CAACG,SAAS,CAAC,WAAW,EAAEH,KAAK,CAAC;EACpC;EAEA,IAAIM,MAAMA,CAAA,EAAG;IACX,OAAO,IAAI,CAACR,MAAM,CAACQ,MAAM;EAC3B;EAEA,IAAIA,MAAMA,CAACN,KAAK,EAAE;IAChB,IAAI,CAACG,SAAS,CAAC,QAAQ,EAAEH,KAAK,CAAC;EACjC;EAEA,IAAIO,IAAIA,CAAA,EAAG;IACT,OAAO,IAAI,CAACT,MAAM,CAACS,IAAI;EACzB;EAEA,IAAIA,IAAIA,CAACP,KAAK,EAAE;IACd,IAAI,CAACG,SAAS,CAAC,MAAM,EAAEH,KAAK,CAAC;EAC/B;EAEA,IAAIQ,UAAUA,CAAA,EAAG;IACf,OAAO,IAAI,CAACV,MAAM,CAACU,UAAU;EAC/B;EAEA,IAAIA,UAAUA,CAACR,KAAK,EAAE;IACpB,IAAI,CAACG,SAAS,CAAC,YAAY,EAAEH,KAAK,CAAC;EACrC;EAEAG,SAASA,CAACM,IAAI,EAAET,KAAK,EAAE;IACrB;IACA;IACA,MAAMU,QAAQ,GAAG,IAAI,CAACZ,MAAM;IAC5B,MAAMN,KAAK,GAAG;MAAC,GAAGkB,QAAQ;MAAE,CAACD,IAAI,GAAGT;IAAK,CAAC;IAC1C,IAAI,CAACR,KAAK,GAAGA,KAAK;;IAElB;IACA,MAAMmB,MAAM,GAAG,IAAI,CAACC,IAAI,KAAKnC,IAAI,CAACa,KAAK,CAACuB,KAAK,GAAG,IAAI,CAACF,MAAM,GAAG,IAAI;IAClE,MAAMG,MAAM,GAAGH,MAAM,CAACjB,WAAW,GAAG,CAAC,IAAI,IAAI,CAACC,SAAS,CAACoB,OAAO;IAC/D;IACA,MAAMC,KAAK,GACTF,MAAM,KACLG,KAAK,CAACC,OAAO,CAACJ,MAAM,CAAC,GAClBA,MAAM,CAACK,IAAI,CAACC,KAAK,IAAIA,KAAK,CAACC,GAAG,KAAKV,MAAM,CAAChC,GAAG,IAAIyC,KAAK,CAACE,IAAI,KAAKX,MAAM,CAACY,GAAG,CAAC,GAC3ET,MAAM,CAACH,MAAM,CAAC9B,OAAO,CAAC,CAAC;IAC7B,IAAImC,KAAK,KAAKL,MAAM,KAAK,IAAI,IAAIA,MAAM,CAACb,MAAM,KAAKY,QAAQ,CAAC,EAAE;MAC5D,KAAK,IAAIc,CAAC,GAAGR,KAAK,CAACK,GAAG,EAAEG,CAAC,IAAIR,KAAK,CAACS,MAAM,EAAED,CAAC,EAAE,EAAE;QAC9C,MAAM7C,GAAG,GAAG,IAAI,CAACgB,SAAS,CAAC+B,OAAO,CAACF,CAAC,CAAC;QACrC,KAAK,IAAIG,CAAC,GAAGX,KAAK,CAACM,IAAI,EAAE3C,GAAG,IAAIgD,CAAC,IAAIX,KAAK,CAACY,KAAK,EAAED,CAAC,EAAE,EAAE;UACrD,MAAME,IAAI,GAAGlD,GAAG,CAACmD,QAAQ,CAACH,CAAC,CAAC;UAC5B,IAAIE,IAAI,IAAIA,IAAI,CAAC/B,MAAM,KAAKY,QAAQ,EAAE;YACpCmB,IAAI,CAACrC,KAAK,GAAGA,KAAK;UACpB;QACF;MACF;IACF;EACF;EAEAC,WAAWA,CAACsC,QAAQ,EAAEC,QAAQ,EAAExC,KAAK,EAAE;IACrC,MAAMU,MAAM,GAAI6B,QAAQ,IAAIA,QAAQ,CAAC7B,MAAM,IAAM8B,QAAQ,IAAIA,QAAQ,CAAC9B,MAAO;IAC7E,IAAIA,MAAM,EAAEV,KAAK,CAACU,MAAM,GAAGA,MAAM;IAEjC,MAAME,IAAI,GAAI2B,QAAQ,IAAIA,QAAQ,CAAC3B,IAAI,IAAM4B,QAAQ,IAAIA,QAAQ,CAAC5B,IAAK;IACvE,IAAIA,IAAI,EAAEZ,KAAK,CAACY,IAAI,GAAGA,IAAI;IAE3B,MAAMC,SAAS,GAAI0B,QAAQ,IAAIA,QAAQ,CAAC1B,SAAS,IAAM2B,QAAQ,IAAIA,QAAQ,CAAC3B,SAAU;IACtF,IAAIA,SAAS,EAAEb,KAAK,CAACa,SAAS,GAAGA,SAAS;IAE1C,MAAMC,MAAM,GAAIyB,QAAQ,IAAIA,QAAQ,CAACzB,MAAM,IAAM0B,QAAQ,IAAIA,QAAQ,CAAC1B,MAAO;IAC7E,IAAIA,MAAM,EAAEd,KAAK,CAACc,MAAM,GAAGA,MAAM;IAEjC,MAAMC,IAAI,GAAIwB,QAAQ,IAAIA,QAAQ,CAACxB,IAAI,IAAMyB,QAAQ,IAAIA,QAAQ,CAACzB,IAAK;IACvE,IAAIA,IAAI,EAAEf,KAAK,CAACe,IAAI,GAAGA,IAAI;IAE3B,MAAMC,UAAU,GAAIuB,QAAQ,IAAIA,QAAQ,CAACvB,UAAU,IAAMwB,QAAQ,IAAIA,QAAQ,CAACxB,UAAW;IACzF,IAAIA,UAAU,EAAEhB,KAAK,CAACgB,UAAU,GAAGA,UAAU;IAE7C,OAAOhB,KAAK;EACd;;EAEA;EACA;EACA,IAAIX,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAACK,QAAQ;EACtB;EAEA,IAAIP,GAAGA,CAAA,EAAG;IACR,OAAO,IAAI,CAACI,IAAI,CAACkD,MAAM;EACzB;EAEA,IAAIV,GAAGA,CAAA,EAAG;IACR,OAAO,IAAI,CAACvC,OAAO,CAACiD,MAAM;EAC5B;EAEA,IAAIC,QAAQA,CAAA,EAAG;IACb,OAAO,IAAI,IAAI,CAAClD,OAAO,CAACmD,MAAM,IAAI,IAAI,CAACxD,GAAG,EAAE;EAC9C;;EAEA;EACA;;EAEA,IAAIiC,IAAIA,CAAA,EAAG;IACT,OAAO,IAAI,CAACzB,MAAM,CAACyB,IAAI;EACzB;EAEA,IAAIwB,aAAaA,CAAA,EAAG;IAClB,OAAO,IAAI,CAACjD,MAAM,CAACiD,aAAa;EAClC;EAEAC,WAAWA,CAAA,EAAG;IACZ,OAAO,IAAI,CAAClD,MAAM,CAACkD,WAAW,CAAC,CAAC;EAClC;;EAEA;EACA;;EAEAC,WAAWA,CAAA,EAAG;IACZ,IAAI,CAAC5C,WAAW,EAAE;EACpB;EAEA6C,eAAeA,CAAA,EAAG;IAChB,IAAI,CAAC7C,WAAW,EAAE;EACpB;EAEA,IAAI8C,QAAQA,CAAA,EAAG;IACb,OAAO,IAAI,CAAC9C,WAAW,GAAG,CAAC,IAAI,IAAI,CAACkB,IAAI,KAAKnC,IAAI,CAACa,KAAK,CAACuB,KAAK;EAC/D;EAEAO,KAAKA,CAACT,MAAM,EAAE8B,WAAW,EAAE;IACzB,IAAI,CAACtD,MAAM,CAACuD,OAAO,CAAC,CAAC;IACrB,IAAI,CAACvD,MAAM,GAAGC,KAAK,CAACC,MAAM,CAACZ,IAAI,CAACa,KAAK,CAACuB,KAAK,EAAE,IAAI,EAAEF,MAAM,CAAC;IAC1D,IAAI,CAAC8B,WAAW,EAAE;MAChB,IAAI,CAACjD,KAAK,GAAGmB,MAAM,CAACnB,KAAK;IAC3B;EACF;EAEAmD,OAAOA,CAAA,EAAG;IACR,IAAI,IAAI,CAAC/B,IAAI,KAAKnC,IAAI,CAACa,KAAK,CAACuB,KAAK,EAAE;MAClC,IAAI,CAAC1B,MAAM,CAACuD,OAAO,CAAC,CAAC;MACrB,IAAI,CAACvD,MAAM,GAAGC,KAAK,CAACC,MAAM,CAACZ,IAAI,CAACa,KAAK,CAACC,IAAI,EAAE,IAAI,CAAC;MACjD,IAAI,CAACC,KAAK,GAAG,IAAI,CAACC,WAAW,CAAC,IAAI,CAACV,IAAI,CAACS,KAAK,EAAE,IAAI,CAACR,OAAO,CAACQ,KAAK,EAAE,CAAC,CAAC,CAAC;IACxE;EACF;EAEAoD,UAAUA,CAACjC,MAAM,EAAE;IACjB,IAAI,IAAI,CAACxB,MAAM,CAACyB,IAAI,KAAKnC,IAAI,CAACa,KAAK,CAACuB,KAAK,EAAE,OAAO,KAAK;IACvD,OAAO,IAAI,CAAC1B,MAAM,CAACyD,UAAU,CAACjC,MAAM,CAAC;EACvC;EAEA,IAAIA,MAAMA,CAAA,EAAG;IACX,IAAI,IAAI,CAACC,IAAI,KAAKnC,IAAI,CAACa,KAAK,CAACuB,KAAK,EAAE;MAClC,OAAO,IAAI,CAAC1B,MAAM,CAACwB,MAAM;IAC3B;IACA,OAAO,IAAI,CAAC,CAAC;EACf;EAEA,IAAIkC,WAAWA,CAAA,EAAG;IAChB,OAAO,IAAI,CAAC1D,MAAM,CAACyB,IAAI,KAAKnC,IAAI,CAACa,KAAK,CAACwD,SAAS;EAClD;EAEA,IAAIC,SAASA,CAAA,EAAG;IACd,OAAO,IAAI,CAAC5D,MAAM,CAAC4D,SAAS;EAC9B;;EAEA;EACA,IAAI/C,KAAKA,CAAA,EAAG;IACV,OAAO,IAAI,CAACb,MAAM,CAACa,KAAK;EAC1B;;EAEA;EACA,IAAIA,KAAKA,CAACgD,CAAC,EAAE;IACX;IACA,IAAI,IAAI,CAACpC,IAAI,KAAKnC,IAAI,CAACa,KAAK,CAACuB,KAAK,EAAE;MAClC,IAAI,CAAC1B,MAAM,CAACwB,MAAM,CAACX,KAAK,GAAGgD,CAAC;MAC5B;IACF;IAEA,IAAI,CAAC7D,MAAM,CAACuD,OAAO,CAAC,CAAC;;IAErB;IACA,IAAI,CAACvD,MAAM,GAAGC,KAAK,CAACC,MAAM,CAACD,KAAK,CAAC6D,OAAO,CAACD,CAAC,CAAC,EAAE,IAAI,EAAEA,CAAC,CAAC;EACvD;EAEA,IAAIE,IAAIA,CAAA,EAAG;IACT,OAAO,IAAI,CAACC,QAAQ,IAAI,IAAI,CAACA,QAAQ,CAACD,IAAI;EAC5C;EAEA,IAAIA,IAAIA,CAACA,IAAI,EAAE;IACb,IAAI,CAACC,QAAQ,GAAG,IAAI5E,IAAI,CAAC2E,IAAI,CAAC;EAChC;EAEA,IAAIE,IAAIA,CAAA,EAAG;IACT,OAAO,IAAI,CAACjE,MAAM,CAACkE,QAAQ,CAAC,CAAC;EAC/B;EAEA,IAAIC,IAAIA,CAAA,EAAG;IACT,OAAOlF,CAAC,CAACmF,UAAU,CAAC,IAAI,CAACH,IAAI,CAAC;EAChC;EAEAC,QAAQA,CAAA,EAAG;IACT,OAAO,IAAI,CAACD,IAAI;EAClB;EAEAI,mBAAmBA,CAACT,SAAS,EAAE;IAC7B;IACA,IAAI,IAAI,CAACnC,IAAI,KAAKnC,IAAI,CAACa,KAAK,CAACmE,MAAM,EAAE;MACnC,IAAI,CAACtE,MAAM,GAAGC,KAAK,CAACC,MAAM,CAACZ,IAAI,CAACa,KAAK,CAACwD,SAAS,EAAE,IAAI,EAAE;QACrDM,IAAI,EAAE,IAAI,CAACjE,MAAM,CAACa,KAAK;QACvB+C;MACF,CAAC,CAAC;IACJ;EACF;;EAEA;EACA;EACA,IAAIW,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAACvE,MAAM,CAACuE,OAAO;EAC5B;EAEA,IAAIC,MAAMA,CAAA,EAAG;IACX,OAAO,IAAI,CAACxE,MAAM,CAACwE,MAAM;EAC3B;EAEA,IAAIC,WAAWA,CAAA,EAAG;IAChB,OAAO,IAAI,CAACzE,MAAM,CAACyE,WAAW;EAChC;;EAEA;EACA;EACA,IAAIC,WAAWA,CAAA,EAAG;IAChB,MAAM;MAAClE;IAAS,CAAC,GAAG,IAAI,CAACZ,IAAI;IAC7B,OAAO;MACL+E,SAAS,EAAEnE,SAAS,CAACc,IAAI;MACzB5B,OAAO,EAAE,IAAI,CAACA,OAAO;MACrBF,GAAG,EAAE,IAAI,CAACA,GAAG;MACb4C,GAAG,EAAE,IAAI,CAACA;IACZ,CAAC;EACH;EAEA,IAAId,IAAIA,CAAA,EAAG;IACT,OAAO,IAAI,CAACsD,KAAK,CAAC,CAAC,CAAC;EACtB;EAEA,IAAItD,IAAIA,CAACT,KAAK,EAAE;IACd,IAAI,CAAC+D,KAAK,GAAG,CAAC/D,KAAK,CAAC;EACtB;EAEA,IAAI+D,KAAKA,CAAA,EAAG;IACV,OAAO,IAAI,CAACnE,QAAQ,CAACoE,YAAY,CAACC,UAAU,CAAC,IAAI,CAACJ,WAAW,CAAC;EAChE;EAEA,IAAIE,KAAKA,CAAC/D,KAAK,EAAE;IACf,MAAM;MAACgE;IAAY,CAAC,GAAG,IAAI,CAACpE,QAAQ;IACpCoE,YAAY,CAACE,cAAc,CAAC,IAAI,CAACL,WAAW,CAAC;IAC7C7D,KAAK,CAACmE,OAAO,CAAC1D,IAAI,IAAI;MACpBuD,YAAY,CAACI,KAAK,CAAC,IAAI,CAACP,WAAW,EAAEpD,IAAI,CAAC;IAC5C,CAAC,CAAC;EACJ;EAEA4D,OAAOA,CAAC5D,IAAI,EAAE;IACZ,IAAI,CAACb,QAAQ,CAACoE,YAAY,CAACI,KAAK,CAAC,IAAI,CAACP,WAAW,EAAEpD,IAAI,CAAC;EAC1D;EAEA6D,UAAUA,CAAC7D,IAAI,EAAE;IACf,IAAI,CAACb,QAAQ,CAACoE,YAAY,CAACO,QAAQ,CAAC,IAAI,CAACV,WAAW,EAAEpD,IAAI,CAAC;EAC7D;EAEAyD,cAAcA,CAAA,EAAG;IACf,IAAI,CAACtE,QAAQ,CAACoE,YAAY,CAACE,cAAc,CAAC,IAAI,CAACL,WAAW,CAAC;EAC7D;;EAEA;EACA;EACA,IAAIW,gBAAgBA,CAAA,EAAG;IACrB,OAAO,IAAI,CAAC7E,SAAS,CAAC8E,eAAe;EACvC;EAEA,IAAIC,cAAcA,CAAA,EAAG;IACnB,OAAO,IAAI,CAACF,gBAAgB,CAACrD,IAAI,CAAC,IAAI,CAACtC,OAAO,CAAC;EACjD;EAEA,IAAI6F,cAAcA,CAAC1E,KAAK,EAAE;IACxB,IAAI,CAACwE,gBAAgB,CAACG,GAAG,CAAC,IAAI,CAAC9F,OAAO,EAAEmB,KAAK,CAAC;EAChD;;EAEA;EACA;;EAEA,IAAI4E,KAAKA,CAAA,EAAG;IACV,MAAM;MAACA;IAAK,CAAC,GAAG,IAAI,CAACzF,MAAM;IAC3ByF,KAAK,CAACpF,KAAK,GAAG,IAAI,CAACM,MAAM;IACzB,IAAI,IAAI,CAACqD,QAAQ,EAAE;MACjByB,KAAK,CAACC,OAAO,GAAG,IAAI,CAAC1B,QAAQ,CAACyB,KAAK;IACrC;IACA,OAAOA,KAAK;EACd;EAEA,IAAIA,KAAKA,CAAC5E,KAAK,EAAE;IACf,IAAI,CAACb,MAAM,CAACuD,OAAO,CAAC,CAAC;IACrB,IAAI,CAACvD,MAAM,GAAGC,KAAK,CAACC,MAAM,CAACW,KAAK,CAACY,IAAI,EAAE,IAAI,CAAC;IAC5C,IAAI,CAACzB,MAAM,CAACyF,KAAK,GAAG5E,KAAK;IAEzB,IAAIA,KAAK,CAAC6E,OAAO,EAAE;MACjB,QAAQ7E,KAAK,CAAC6E,OAAO,CAACjE,IAAI;QACxB,KAAK,MAAM;UACT,IAAI,CAACuC,QAAQ,GAAG5E,IAAI,CAACuG,SAAS,CAAC9E,KAAK,CAAC6E,OAAO,CAAC;UAC7C;MACJ;IACF;IAEA,IAAI7E,KAAK,CAACR,KAAK,EAAE;MACf,IAAI,CAACS,eAAe,CAACD,KAAK,CAACR,KAAK,CAAC;IACnC,CAAC,MAAM;MACL,IAAI,CAACA,KAAK,GAAG,CAAC,CAAC;IACjB;EACF;AACF;AACAf,IAAI,CAACa,KAAK,GAAGjB,KAAK,CAAC0G,SAAS;;AAE5B;AACA;;AAEA,MAAMC,SAAS,CAAC;EACdtG,WAAWA,CAACmD,IAAI,EAAE;IAChB,IAAI,CAAC+C,KAAK,GAAG;MACX/F,OAAO,EAAEgD,IAAI,CAAChD,OAAO;MACrB+B,IAAI,EAAEnC,IAAI,CAACa,KAAK,CAACC;IACnB,CAAC;EACH;EAEA,IAAIS,KAAKA,CAAA,EAAG;IACV,OAAO,IAAI;EACb;EAEA,IAAIA,KAAKA,CAACA,KAAK,EAAE;IACf;EAAA;EAGF,IAAIY,IAAIA,CAAA,EAAG;IACT,OAAOnC,IAAI,CAACa,KAAK,CAACC,IAAI;EACxB;EAEA,IAAI6C,aAAaA,CAAA,EAAG;IAClB,OAAO3D,IAAI,CAACa,KAAK,CAACC,IAAI;EACxB;EAEA,IAAIV,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAAC+F,KAAK,CAAC/F,OAAO;EAC3B;EAEA,IAAIA,OAAOA,CAACmB,KAAK,EAAE;IACjB,IAAI,CAAC4E,KAAK,CAAC/F,OAAO,GAAGmB,KAAK;EAC5B;EAEAqC,WAAWA,CAAA,EAAG;IACZ,OAAO,EAAE;EACX;EAEAK,OAAOA,CAAA,EAAG,CAAC;EAEXW,QAAQA,CAAA,EAAG;IACT,OAAO,EAAE;EACX;AACF;AAEA,MAAM4B,WAAW,CAAC;EAChBvG,WAAWA,CAACmD,IAAI,EAAE7B,KAAK,EAAE;IACvB,IAAI,CAAC4E,KAAK,GAAG;MACX/F,OAAO,EAAEgD,IAAI,CAAChD,OAAO;MACrB+B,IAAI,EAAEnC,IAAI,CAACa,KAAK,CAAC4F,MAAM;MACvBlF;IACF,CAAC;EACH;EAEA,IAAIA,KAAKA,CAAA,EAAG;IACV,OAAO,IAAI,CAAC4E,KAAK,CAAC5E,KAAK;EACzB;EAEA,IAAIA,KAAKA,CAACA,KAAK,EAAE;IACf,IAAI,CAAC4E,KAAK,CAAC5E,KAAK,GAAGA,KAAK;EAC1B;EAEA,IAAIY,IAAIA,CAAA,EAAG;IACT,OAAOnC,IAAI,CAACa,KAAK,CAAC4F,MAAM;EAC1B;EAEA,IAAI9C,aAAaA,CAAA,EAAG;IAClB,OAAO3D,IAAI,CAACa,KAAK,CAAC4F,MAAM;EAC1B;EAEA,IAAIrG,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAAC+F,KAAK,CAAC/F,OAAO;EAC3B;EAEA,IAAIA,OAAOA,CAACmB,KAAK,EAAE;IACjB,IAAI,CAAC4E,KAAK,CAAC/F,OAAO,GAAGmB,KAAK;EAC5B;EAEAqC,WAAWA,CAAA,EAAG;IACZ,OAAO,IAAI,CAACuC,KAAK,CAAC5E,KAAK,CAACqD,QAAQ,CAAC,CAAC;EACpC;EAEAX,OAAOA,CAAA,EAAG,CAAC;EAEXW,QAAQA,CAAA,EAAG;IACT,OAAO,IAAI,CAACuB,KAAK,CAAC5E,KAAK,CAACqD,QAAQ,CAAC,CAAC;EACpC;AACF;AAEA,MAAM8B,WAAW,CAAC;EAChBzG,WAAWA,CAACmD,IAAI,EAAE7B,KAAK,EAAE;IACvB,IAAI,CAAC4E,KAAK,GAAG;MACX/F,OAAO,EAAEgD,IAAI,CAAChD,OAAO;MACrB+B,IAAI,EAAEnC,IAAI,CAACa,KAAK,CAACmE,MAAM;MACvBzD;IACF,CAAC;EACH;EAEA,IAAIA,KAAKA,CAAA,EAAG;IACV,OAAO,IAAI,CAAC4E,KAAK,CAAC5E,KAAK;EACzB;EAEA,IAAIA,KAAKA,CAACA,KAAK,EAAE;IACf,IAAI,CAAC4E,KAAK,CAAC5E,KAAK,GAAGA,KAAK;EAC1B;EAEA,IAAIY,IAAIA,CAAA,EAAG;IACT,OAAOnC,IAAI,CAACa,KAAK,CAACmE,MAAM;EAC1B;EAEA,IAAIrB,aAAaA,CAAA,EAAG;IAClB,OAAO3D,IAAI,CAACa,KAAK,CAACmE,MAAM;EAC1B;EAEA,IAAI5E,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAAC+F,KAAK,CAAC/F,OAAO;EAC3B;EAEA,IAAIA,OAAOA,CAACmB,KAAK,EAAE;IACjB,IAAI,CAAC4E,KAAK,CAAC/F,OAAO,GAAGmB,KAAK;EAC5B;EAEAqC,WAAWA,CAAA,EAAG;IACZ,OAAO,IAAI,IAAI,CAACuC,KAAK,CAAC5E,KAAK,CAACoF,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG;EACpD;EAEA1C,OAAOA,CAAA,EAAG,CAAC;EAEXW,QAAQA,CAAA,EAAG;IACT,OAAO,IAAI,CAACuB,KAAK,CAAC5E,KAAK;EACzB;AACF;AAEA,MAAMqF,aAAa,CAAC;EAClB3G,WAAWA,CAACmD,IAAI,EAAE7B,KAAK,EAAE;IACvB,IAAI,CAAC4E,KAAK,GAAG;MACX/F,OAAO,EAAEgD,IAAI,CAAChD,OAAO;MACrB+B,IAAI,EAAEnC,IAAI,CAACa,KAAK,CAACmE,MAAM;MACvBzD;IACF,CAAC;EACH;EAEA,IAAIA,KAAKA,CAAA,EAAG;IACV,OAAO,IAAI,CAAC4E,KAAK,CAAC5E,KAAK;EACzB;EAEA,IAAIA,KAAKA,CAACA,KAAK,EAAE;IACf,IAAI,CAAC4E,KAAK,CAAC5E,KAAK,GAAGA,KAAK;EAC1B;EAEAqD,QAAQA,CAAA,EAAG;IACT,OAAO,IAAI,CAACuB,KAAK,CAAC5E,KAAK,CAACsF,QAAQ,CAACC,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACpC,IAAI,CAAC,CAACqC,IAAI,CAAC,EAAE,CAAC;EAC5D;EAEA,IAAI7E,IAAIA,CAAA,EAAG;IACT,OAAOnC,IAAI,CAACa,KAAK,CAACoG,QAAQ;EAC5B;EAEA,IAAItD,aAAaA,CAAA,EAAG;IAClB,OAAO3D,IAAI,CAACa,KAAK,CAACoG,QAAQ;EAC5B;EAEA,IAAI7G,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAAC+F,KAAK,CAAC/F,OAAO;EAC3B;EAEA,IAAIA,OAAOA,CAACmB,KAAK,EAAE;IACjB,IAAI,CAAC4E,KAAK,CAAC/F,OAAO,GAAGmB,KAAK;EAC5B;EAEAqC,WAAWA,CAAA,EAAG;IACZ,OAAO,IAAI,IAAI,CAACe,IAAI,CAACgC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG;EAC7C;EAEA1C,OAAOA,CAAA,EAAG,CAAC;AACb;AAEA,MAAMiD,SAAS,CAAC;EACdjH,WAAWA,CAACmD,IAAI,EAAE7B,KAAK,EAAE;IACvB,IAAI,CAAC4E,KAAK,GAAG;MACX/F,OAAO,EAAEgD,IAAI,CAAChD,OAAO;MACrB+B,IAAI,EAAEnC,IAAI,CAACa,KAAK,CAACsG,IAAI;MACrB5F;IACF,CAAC;EACH;EAEA,IAAIA,KAAKA,CAAA,EAAG;IACV,OAAO,IAAI,CAAC4E,KAAK,CAAC5E,KAAK;EACzB;EAEA,IAAIA,KAAKA,CAACA,KAAK,EAAE;IACf,IAAI,CAAC4E,KAAK,CAAC5E,KAAK,GAAGA,KAAK;EAC1B;EAEA,IAAIY,IAAIA,CAAA,EAAG;IACT,OAAOnC,IAAI,CAACa,KAAK,CAACsG,IAAI;EACxB;EAEA,IAAIxD,aAAaA,CAAA,EAAG;IAClB,OAAO3D,IAAI,CAACa,KAAK,CAACsG,IAAI;EACxB;EAEA,IAAI/G,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAAC+F,KAAK,CAAC/F,OAAO;EAC3B;EAEA,IAAIA,OAAOA,CAACmB,KAAK,EAAE;IACjB,IAAI,CAAC4E,KAAK,CAAC/F,OAAO,GAAGmB,KAAK;EAC5B;EAEAqC,WAAWA,CAAA,EAAG;IACZ,OAAO,IAAI,CAACuC,KAAK,CAAC5E,KAAK,CAAC6F,WAAW,CAAC,CAAC;EACvC;EAEAnD,OAAOA,CAAA,EAAG,CAAC;EAEXW,QAAQA,CAAA,EAAG;IACT,OAAO,IAAI,CAACuB,KAAK,CAAC5E,KAAK,CAACqD,QAAQ,CAAC,CAAC;EACpC;AACF;AAEA,MAAMyC,cAAc,CAAC;EACnBpH,WAAWA,CAACmD,IAAI,EAAE7B,KAAK,EAAE;IACvB,IAAI,CAAC4E,KAAK,GAAG;MACX/F,OAAO,EAAEgD,IAAI,CAAChD,OAAO;MACrB+B,IAAI,EAAEnC,IAAI,CAACa,KAAK,CAACwD,SAAS;MAC1BM,IAAI,EAAEpD,KAAK,GAAGA,KAAK,CAACoD,IAAI,GAAG2C,SAAS;MACpChD,SAAS,EAAE/C,KAAK,GAAGA,KAAK,CAAC+C,SAAS,GAAGgD;IACvC,CAAC;IACD,IAAI/F,KAAK,IAAIA,KAAK,CAACgG,OAAO,EAAE;MAC1B,IAAI,CAACpB,KAAK,CAACoB,OAAO,GAAGhG,KAAK,CAACgG,OAAO;IACpC;EACF;EAEA,IAAIhG,KAAKA,CAAA,EAAG;IACV,MAAMgD,CAAC,GAAG;MACRI,IAAI,EAAE,IAAI,CAACwB,KAAK,CAACxB,IAAI;MACrBL,SAAS,EAAE,IAAI,CAAC6B,KAAK,CAAC7B;IACxB,CAAC;IACD,IAAI,IAAI,CAAC6B,KAAK,CAACoB,OAAO,EAAE;MACtBhD,CAAC,CAACgD,OAAO,GAAG,IAAI,CAACpB,KAAK,CAACoB,OAAO;IAChC;IACA,OAAOhD,CAAC;EACV;EAEA,IAAIhD,KAAKA,CAACA,KAAK,EAAE;IACf,IAAI,CAAC4E,KAAK,GAAG;MACXxB,IAAI,EAAEpD,KAAK,CAACoD,IAAI;MAChBL,SAAS,EAAE/C,KAAK,CAAC+C;IACnB,CAAC;IACD,IAAI/C,KAAK,CAACgG,OAAO,EAAE;MACjB,IAAI,CAACpB,KAAK,CAACoB,OAAO,GAAGhG,KAAK,CAACgG,OAAO;IACpC;EACF;EAEA,IAAI5C,IAAIA,CAAA,EAAG;IACT,OAAO,IAAI,CAACwB,KAAK,CAACxB,IAAI;EACxB;EAEA,IAAIA,IAAIA,CAACpD,KAAK,EAAE;IACd,IAAI,CAAC4E,KAAK,CAACxB,IAAI,GAAGpD,KAAK;EACzB;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;;EAGE,IAAI+C,SAASA,CAAA,EAAG;IACd,OAAO,IAAI,CAAC6B,KAAK,CAAC7B,SAAS;EAC7B;EAEA,IAAIA,SAASA,CAAC/C,KAAK,EAAE;IACnB,IAAI,CAAC4E,KAAK,CAAC7B,SAAS,GAAG/C,KAAK;EAC9B;EAEA,IAAIY,IAAIA,CAAA,EAAG;IACT,OAAOnC,IAAI,CAACa,KAAK,CAACwD,SAAS;EAC7B;EAEA,IAAIV,aAAaA,CAAA,EAAG;IAClB,OAAO3D,IAAI,CAACa,KAAK,CAACwD,SAAS;EAC7B;EAEA,IAAIjE,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAAC+F,KAAK,CAAC/F,OAAO;EAC3B;EAEA,IAAIA,OAAOA,CAACmB,KAAK,EAAE;IACjB,IAAI,CAAC4E,KAAK,CAAC/F,OAAO,GAAGmB,KAAK;EAC5B;EAEAqC,WAAWA,CAAA,EAAG;IACZ,OAAO,IAAI,CAACuC,KAAK,CAAC7B,SAAS;EAC7B;EAEAL,OAAOA,CAAA,EAAG,CAAC;EAEXW,QAAQA,CAAA,EAAG;IACT,OAAO,IAAI,CAACuB,KAAK,CAACxB,IAAI;EACxB;AACF;AAEA,MAAM6C,UAAU,CAAC;EACfvH,WAAWA,CAACmD,IAAI,EAAElB,MAAM,EAAE;IACxB,IAAI,CAACiE,KAAK,GAAG;MACX/F,OAAO,EAAEgD,IAAI,CAAChD,OAAO;MACrB+B,IAAI,EAAEnC,IAAI,CAACa,KAAK,CAACuB,KAAK;MACtBF,MAAM,EAAEA,MAAM,GAAGA,MAAM,CAAC9B,OAAO,GAAGkH;IACpC,CAAC;IACD,IAAI,CAACG,OAAO,GAAGvF,MAAM;IACrB,IAAIA,MAAM,EAAE;MACVA,MAAM,CAAC2B,WAAW,CAAC,CAAC;IACtB;EACF;EAEA,IAAItC,KAAKA,CAAA,EAAG;IACV,OAAO,IAAI,CAACkG,OAAO,CAAClG,KAAK;EAC3B;EAEA,IAAIA,KAAKA,CAACA,KAAK,EAAE;IACf,IAAIA,KAAK,YAAYvB,IAAI,EAAE;MACzB,IAAI,IAAI,CAACyH,OAAO,EAAE;QAChB,IAAI,CAACA,OAAO,CAAC3D,eAAe,CAAC,CAAC;MAChC;MACAvC,KAAK,CAACsC,WAAW,CAAC,CAAC;MACnB,IAAI,CAAC4D,OAAO,GAAGlG,KAAK;IACtB,CAAC,MAAM;MACL,IAAI,CAACkG,OAAO,CAAClG,KAAK,GAAGA,KAAK;IAC5B;EACF;EAEA4C,UAAUA,CAACjC,MAAM,EAAE;IACjB,OAAOA,MAAM,KAAK,IAAI,CAACuF,OAAO;EAChC;EAEA,IAAIvF,MAAMA,CAAA,EAAG;IACX,OAAO,IAAI,CAACuF,OAAO;EACrB;EAEA,IAAItF,IAAIA,CAAA,EAAG;IACT,OAAOnC,IAAI,CAACa,KAAK,CAACuB,KAAK;EACzB;EAEA,IAAIuB,aAAaA,CAAA,EAAG;IAClB,OAAO,IAAI,CAAC8D,OAAO,CAAC9D,aAAa;EACnC;EAEA,IAAIvD,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAAC+F,KAAK,CAAC/F,OAAO;EAC3B;EAEA,IAAIA,OAAOA,CAACmB,KAAK,EAAE;IACjB,IAAI,CAAC4E,KAAK,CAAC/F,OAAO,GAAGmB,KAAK;EAC5B;EAEAqC,WAAWA,CAAA,EAAG;IACZ,OAAO,EAAE;EACX;EAEAK,OAAOA,CAAA,EAAG;IACR,IAAI,CAACwD,OAAO,CAAC3D,eAAe,CAAC,CAAC;EAChC;EAEAc,QAAQA,CAAA,EAAG;IACT,OAAO,IAAI,CAACrD,KAAK,CAACqD,QAAQ,CAAC,CAAC;EAC9B;AACF;AAEA,MAAM8C,YAAY,CAAC;EACjBzH,WAAWA,CAACmD,IAAI,EAAE7B,KAAK,EAAE;IACvB,IAAI,CAAC6B,IAAI,GAAGA,IAAI;IAEhB,IAAI,CAAC+C,KAAK,GAAG;MACX/F,OAAO,EAAEgD,IAAI,CAAChD,OAAO;MACrB+B,IAAI,EAAEnC,IAAI,CAACa,KAAK,CAAC8G,OAAO;MACxBC,SAAS,EAAErG,KAAK,GAAGA,KAAK,CAACqG,SAAS,GAAGN,SAAS;MAC9CO,GAAG,EAAEtG,KAAK,GAAGA,KAAK,CAACsG,GAAG,GAAGP,SAAS;MAClCrC,OAAO,EAAE1D,KAAK,GAAGA,KAAK,CAAC0D,OAAO,GAAGqC,SAAS;MAC1CQ,aAAa,EAAEvG,KAAK,GAAGA,KAAK,CAACuG,aAAa,GAAGR,SAAS;MACtDpC,MAAM,EAAE3D,KAAK,GAAGA,KAAK,CAAC2D,MAAM,GAAGoC;IACjC,CAAC;EACH;EAEAS,UAAUA,CAAC5B,KAAK,EAAE;IAChB,MAAM6B,IAAI,GAAG,CAAC,CAAC;IACf,MAAMC,EAAE,GAAGjG,IAAI,IAAI;MACjB,MAAMT,KAAK,GAAG4E,KAAK,CAACnE,IAAI,CAAC;MACzB,IAAIT,KAAK,KAAK+F,SAAS,IAAI/F,KAAK,KAAK,IAAI,EAAE;QACzCyG,IAAI,CAAChG,IAAI,CAAC,GAAGT,KAAK;MACpB;IACF,CAAC;IACD0G,EAAE,CAAC,SAAS,CAAC;IACbA,EAAE,CAAC,QAAQ,CAAC;IACZA,EAAE,CAAC,KAAK,CAAC;IACTA,EAAE,CAAC,WAAW,CAAC;IACfA,EAAE,CAAC,eAAe,CAAC;IACnB,OAAOD,IAAI;EACb;EAEA,IAAIzG,KAAKA,CAAA,EAAG;IACV,OAAO,IAAI,CAACwG,UAAU,CAAC,IAAI,CAAC5B,KAAK,CAAC;EACpC;EAEA,IAAI5E,KAAKA,CAACA,KAAK,EAAE;IACf,IAAI,CAAC4E,KAAK,GAAG,IAAI,CAAC4B,UAAU,CAACxG,KAAK,CAAC;EACrC;EAEA2G,QAAQA,CAAC3G,KAAK,EAAE;IACd,QAAQZ,KAAK,CAAC6D,OAAO,CAACjD,KAAK,CAAC;MAC1B,KAAKvB,IAAI,CAACa,KAAK,CAACC,IAAI;MACpB,KAAKd,IAAI,CAACa,KAAK,CAACmE,MAAM;MACtB,KAAKhF,IAAI,CAACa,KAAK,CAAC4F,MAAM;MACtB,KAAKzG,IAAI,CAACa,KAAK,CAACsG,IAAI;QAClB;MACF,KAAKnH,IAAI,CAACa,KAAK,CAACwD,SAAS;MACzB,KAAKrE,IAAI,CAACa,KAAK,CAAC8G,OAAO;MACvB;QACE,MAAM,IAAItH,KAAK,CAAC,0CAA0C,CAAC;IAC/D;EACF;EAEA,IAAI8H,YAAYA,CAAA,EAAG;IACjB;IACA,MAAMC,MAAM,GAAG,IAAI,CAACnD,OAAO,CAACoD,KAAK,CAAC,sDAAsD,CAAC;IACzF,MAAMC,KAAK,GAAG,IAAI,CAACrD,OAAO,CACvB0B,OAAO,CAAC,sDAAsD,EAAE,EAAE,CAAC,CACnE0B,KAAK,CAAC,oCAAoC,CAAC;IAC9C,OAAO;MACLD,MAAM;MACNE;IACF,CAAC;EACH;EAEA,IAAIrD,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAACkB,KAAK,CAAClB,OAAO,IAAI,IAAI,CAACsD,qBAAqB,CAAC,CAAC;EAC3D;EAEA,IAAItD,OAAOA,CAAC1D,KAAK,EAAE;IACjB,IAAI,CAAC4E,KAAK,CAAClB,OAAO,GAAG1D,KAAK;EAC5B;EAEA,IAAI4D,WAAWA,CAAA,EAAG;IAChB,IAAI,IAAI,CAACgB,KAAK,CAAClB,OAAO,EAAE;MACtB,OAAOrF,KAAK,CAAC4I,WAAW,CAACC,MAAM;IACjC;IACA,IAAI,IAAI,CAACtC,KAAK,CAAC2B,aAAa,EAAE;MAC5B,OAAOlI,KAAK,CAAC4I,WAAW,CAACE,MAAM;IACjC;IACA,OAAO9I,KAAK,CAAC4I,WAAW,CAACG,IAAI;EAC/B;EAEA,IAAIzD,MAAMA,CAAA,EAAG;IACX,OAAO,IAAI,CAACiB,KAAK,CAACjB,MAAM;EAC1B;EAEA,IAAIA,MAAMA,CAAC3D,KAAK,EAAE;IAChB,IAAI,CAAC4E,KAAK,CAACjB,MAAM,GAAG3D,KAAK;EAC3B;EAEA,IAAIY,IAAIA,CAAA,EAAG;IACT,OAAOnC,IAAI,CAACa,KAAK,CAAC8G,OAAO;EAC3B;EAEA,IAAIhE,aAAaA,CAAA,EAAG;IAClB,MAAMY,CAAC,GAAG,IAAI,CAAC4B,KAAK,CAACjB,MAAM;IAC3B,IAAIX,CAAC,KAAK,IAAI,IAAIA,CAAC,KAAK+C,SAAS,EAAE;MACjC,OAAO1H,KAAK,CAAC0G,SAAS,CAACxF,IAAI;IAC7B;IACA,IAAIyD,CAAC,YAAYS,MAAM,IAAI,OAAOT,CAAC,KAAK,QAAQ,EAAE;MAChD,OAAO3E,KAAK,CAAC0G,SAAS,CAACtB,MAAM;IAC/B;IACA,IAAI,OAAOT,CAAC,KAAK,QAAQ,EAAE;MACzB,OAAO3E,KAAK,CAAC0G,SAAS,CAACG,MAAM;IAC/B;IACA,IAAIlC,CAAC,YAAY4C,IAAI,EAAE;MACrB,OAAOvH,KAAK,CAAC0G,SAAS,CAACa,IAAI;IAC7B;IACA,IAAI5C,CAAC,CAACI,IAAI,IAAIJ,CAAC,CAACD,SAAS,EAAE;MACzB,OAAO1E,KAAK,CAAC0G,SAAS,CAACjC,SAAS;IAClC;IACA,IAAIE,CAAC,CAACU,OAAO,EAAE;MACb,OAAOrF,KAAK,CAAC0G,SAAS,CAACqB,OAAO;IAChC;IAEA,OAAO/H,KAAK,CAAC0G,SAAS,CAACxF,IAAI;EAC7B;EAEA,IAAIV,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAAC+F,KAAK,CAAC/F,OAAO;EAC3B;EAEA,IAAIA,OAAOA,CAACmB,KAAK,EAAE;IACjB,IAAI,CAAC4E,KAAK,CAAC/F,OAAO,GAAGmB,KAAK;EAC5B;EAEAgH,qBAAqBA,CAAA,EAAG;IACtB,IAAI,CAAC,IAAI,CAACK,kBAAkB,IAAI,IAAI,CAACzC,KAAK,CAAC2B,aAAa,EAAE;MACxD,MAAM;QAAC5G;MAAS,CAAC,GAAG,IAAI,CAACkC,IAAI;MAC7B,MAAMlB,MAAM,GAAGhB,SAAS,CAACmC,QAAQ,CAAC,IAAI,CAAC8C,KAAK,CAAC2B,aAAa,CAAC;MAC3D,IAAI,CAACc,kBAAkB,GACrB1G,MAAM,IAAIrC,YAAY,CAACqC,MAAM,CAAC+C,OAAO,EAAE/C,MAAM,CAAC9B,OAAO,EAAE,IAAI,CAAC+F,KAAK,CAAC/F,OAAO,CAAC;IAC9E;IACA,OAAO,IAAI,CAACwI,kBAAkB;EAChC;EAEAhF,WAAWA,CAAA,EAAG;IACZ,OAAO,GAAG,IAAI,CAACuC,KAAK,CAACjB,MAAM,IAAI,EAAE,EAAE;EACrC;EAEAjB,OAAOA,CAAA,EAAG,CAAC;EAEXW,QAAQA,CAAA,EAAG;IACT,OAAO,IAAI,CAACuB,KAAK,CAACjB,MAAM,GAAG,IAAI,CAACiB,KAAK,CAACjB,MAAM,CAACN,QAAQ,CAAC,CAAC,GAAG,EAAE;EAC9D;AACF;AAEA,MAAMiE,iBAAiB,CAAC;EACtB5I,WAAWA,CAACmD,IAAI,EAAE7B,KAAK,EAAE;IACvB,IAAI,CAAC4E,KAAK,GAAG;MACX/F,OAAO,EAAEgD,IAAI,CAAChD,OAAO;MACrB+B,IAAI,EAAEnC,IAAI,CAACa,KAAK,CAACiI,YAAY;MAC7BvH;IACF,CAAC;EACH;EAEA,IAAIA,KAAKA,CAAA,EAAG;IACV,OAAO,IAAI,CAAC4E,KAAK,CAAC5E,KAAK;EACzB;EAEA,IAAIA,KAAKA,CAACA,KAAK,EAAE;IACf,IAAI,CAAC4E,KAAK,CAAC5E,KAAK,GAAGA,KAAK;EAC1B;EAEA,IAAIY,IAAIA,CAAA,EAAG;IACT,OAAOnC,IAAI,CAACa,KAAK,CAACiI,YAAY;EAChC;EAEA,IAAInF,aAAaA,CAAA,EAAG;IAClB,OAAO3D,IAAI,CAACa,KAAK,CAACiI,YAAY;EAChC;EAEA,IAAI1I,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAAC+F,KAAK,CAAC/F,OAAO;EAC3B;EAEA,IAAIA,OAAOA,CAACmB,KAAK,EAAE;IACjB,IAAI,CAAC4E,KAAK,CAAC/F,OAAO,GAAGmB,KAAK;EAC5B;EAEAqC,WAAWA,CAAA,EAAG;IACZ,OAAO,IAAI,CAACuC,KAAK,CAAC5E,KAAK,CAACqD,QAAQ,CAAC,CAAC;EACpC;EAEAX,OAAOA,CAAA,EAAG,CAAC;EAEXW,QAAQA,CAAA,EAAG;IACT,OAAO,IAAI,CAACuB,KAAK,CAAC5E,KAAK,CAACqD,QAAQ,CAAC,CAAC;EACpC;AACF;AAEA,MAAMmE,YAAY,CAAC;EACjB9I,WAAWA,CAACmD,IAAI,EAAE7B,KAAK,EAAE;IACvB,IAAI,CAAC4E,KAAK,GAAG;MACX/F,OAAO,EAAEgD,IAAI,CAAChD,OAAO;MACrB+B,IAAI,EAAEnC,IAAI,CAACa,KAAK,CAACmI,OAAO;MACxBzH;IACF,CAAC;EACH;EAEA,IAAIA,KAAKA,CAAA,EAAG;IACV,OAAO,IAAI,CAAC4E,KAAK,CAAC5E,KAAK;EACzB;EAEA,IAAIA,KAAKA,CAACA,KAAK,EAAE;IACf,IAAI,CAAC4E,KAAK,CAAC5E,KAAK,GAAGA,KAAK;EAC1B;EAEA,IAAIY,IAAIA,CAAA,EAAG;IACT,OAAOnC,IAAI,CAACa,KAAK,CAACmI,OAAO;EAC3B;EAEA,IAAIrF,aAAaA,CAAA,EAAG;IAClB,OAAO3D,IAAI,CAACa,KAAK,CAACmI,OAAO;EAC3B;EAEA,IAAI5I,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAAC+F,KAAK,CAAC/F,OAAO;EAC3B;EAEA,IAAIA,OAAOA,CAACmB,KAAK,EAAE;IACjB,IAAI,CAAC4E,KAAK,CAAC/F,OAAO,GAAGmB,KAAK;EAC5B;EAEAqC,WAAWA,CAAA,EAAG;IACZ,OAAO,IAAI,CAACuC,KAAK,CAAC5E,KAAK,GAAG,CAAC,GAAG,CAAC;EACjC;EAEA0C,OAAOA,CAAA,EAAG,CAAC;EAEXW,QAAQA,CAAA,EAAG;IACT,OAAO,IAAI,CAACuB,KAAK,CAAC5E,KAAK,CAACqD,QAAQ,CAAC,CAAC;EACpC;AACF;AAEA,MAAMqE,UAAU,CAAC;EACfhJ,WAAWA,CAACmD,IAAI,EAAE7B,KAAK,EAAE;IACvB,IAAI,CAAC4E,KAAK,GAAG;MACX/F,OAAO,EAAEgD,IAAI,CAAChD,OAAO;MACrB+B,IAAI,EAAEnC,IAAI,CAACa,KAAK,CAACR,KAAK;MACtBkB;IACF,CAAC;EACH;EAEA,IAAIA,KAAKA,CAAA,EAAG;IACV,OAAO,IAAI,CAAC4E,KAAK,CAAC5E,KAAK;EACzB;EAEA,IAAIA,KAAKA,CAACA,KAAK,EAAE;IACf,IAAI,CAAC4E,KAAK,CAAC5E,KAAK,GAAGA,KAAK;EAC1B;EAEA,IAAIY,IAAIA,CAAA,EAAG;IACT,OAAOnC,IAAI,CAACa,KAAK,CAACR,KAAK;EACzB;EAEA,IAAIsD,aAAaA,CAAA,EAAG;IAClB,OAAO3D,IAAI,CAACa,KAAK,CAACR,KAAK;EACzB;EAEA,IAAID,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAAC+F,KAAK,CAAC/F,OAAO;EAC3B;EAEA,IAAIA,OAAOA,CAACmB,KAAK,EAAE;IACjB,IAAI,CAAC4E,KAAK,CAAC/F,OAAO,GAAGmB,KAAK;EAC5B;EAEAqC,WAAWA,CAAA,EAAG;IACZ,OAAO,IAAI,CAACgB,QAAQ,CAAC,CAAC;EACxB;EAEAX,OAAOA,CAAA,EAAG,CAAC;EAEXW,QAAQA,CAAA,EAAG;IACT,OAAO,IAAI,CAACuB,KAAK,CAAC5E,KAAK,CAAC2H,KAAK,CAACtE,QAAQ,CAAC,CAAC;EAC1C;AACF;AAEA,MAAMuE,SAAS,CAAC;EACdlJ,WAAWA,CAACmD,IAAI,EAAE7B,KAAK,EAAE;IACvB,IAAI,CAAC4E,KAAK,GAAG;MACX/F,OAAO,EAAEgD,IAAI,CAAChD,OAAO;MACrB+B,IAAI,EAAEnC,IAAI,CAACa,KAAK,CAACmE,MAAM;MACvBzD,KAAK,EAAE6H,IAAI,CAACC,SAAS,CAAC9H,KAAK,CAAC;MAC5B+H,QAAQ,EAAE/H;IACZ,CAAC;EACH;EAEA,IAAIA,KAAKA,CAAA,EAAG;IACV,OAAO,IAAI,CAAC4E,KAAK,CAACmD,QAAQ;EAC5B;EAEA,IAAI/H,KAAKA,CAACA,KAAK,EAAE;IACf,IAAI,CAAC4E,KAAK,CAACmD,QAAQ,GAAG/H,KAAK;IAC3B,IAAI,CAAC4E,KAAK,CAAC5E,KAAK,GAAG6H,IAAI,CAACC,SAAS,CAAC9H,KAAK,CAAC;EAC1C;EAEA,IAAIY,IAAIA,CAAA,EAAG;IACT,OAAOnC,IAAI,CAACa,KAAK,CAACmE,MAAM;EAC1B;EAEA,IAAIrB,aAAaA,CAAA,EAAG;IAClB,OAAO3D,IAAI,CAACa,KAAK,CAACmE,MAAM;EAC1B;EAEA,IAAI5E,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAAC+F,KAAK,CAAC/F,OAAO;EAC3B;EAEA,IAAIA,OAAOA,CAACmB,KAAK,EAAE;IACjB,IAAI,CAAC4E,KAAK,CAAC/F,OAAO,GAAGmB,KAAK;EAC5B;EAEAqC,WAAWA,CAAA,EAAG;IACZ,OAAO,IAAI,CAACuC,KAAK,CAAC5E,KAAK;EACzB;EAEA0C,OAAOA,CAAA,EAAG,CAAC;EAEXW,QAAQA,CAAA,EAAG;IACT,OAAO,IAAI,CAACuB,KAAK,CAAC5E,KAAK;EACzB;AACF;;AAEA;AACA,MAAMZ,KAAK,GAAG;EACZ6D,OAAOA,CAACjD,KAAK,EAAE;IACb,IAAIA,KAAK,KAAK,IAAI,IAAIA,KAAK,KAAK+F,SAAS,EAAE;MACzC,OAAOtH,IAAI,CAACa,KAAK,CAACC,IAAI;IACxB;IACA,IAAIS,KAAK,YAAYyD,MAAM,IAAI,OAAOzD,KAAK,KAAK,QAAQ,EAAE;MACxD,OAAOvB,IAAI,CAACa,KAAK,CAACmE,MAAM;IAC1B;IACA,IAAI,OAAOzD,KAAK,KAAK,QAAQ,EAAE;MAC7B,OAAOvB,IAAI,CAACa,KAAK,CAAC4F,MAAM;IAC1B;IACA,IAAI,OAAOlF,KAAK,KAAK,SAAS,EAAE;MAC9B,OAAOvB,IAAI,CAACa,KAAK,CAACmI,OAAO;IAC3B;IACA,IAAIzH,KAAK,YAAY4F,IAAI,EAAE;MACzB,OAAOnH,IAAI,CAACa,KAAK,CAACsG,IAAI;IACxB;IACA,IAAI5F,KAAK,CAACoD,IAAI,IAAIpD,KAAK,CAAC+C,SAAS,EAAE;MACjC,OAAOtE,IAAI,CAACa,KAAK,CAACwD,SAAS;IAC7B;IACA,IAAI9C,KAAK,CAAC0D,OAAO,IAAI1D,KAAK,CAACuG,aAAa,EAAE;MACxC,OAAO9H,IAAI,CAACa,KAAK,CAAC8G,OAAO;IAC3B;IACA,IAAIpG,KAAK,CAACsF,QAAQ,EAAE;MAClB,OAAO7G,IAAI,CAACa,KAAK,CAACoG,QAAQ;IAC5B;IACA,IAAI1F,KAAK,CAACgI,YAAY,EAAE;MACtB,OAAOvJ,IAAI,CAACa,KAAK,CAACiI,YAAY;IAChC;IACA,IAAIvH,KAAK,CAAC2H,KAAK,EAAE;MACf,OAAOlJ,IAAI,CAACa,KAAK,CAACR,KAAK;IACzB;IACA,OAAOL,IAAI,CAACa,KAAK,CAACuI,IAAI;EACxB,CAAC;EAED;EACAI,KAAK,EAAE,CACL;IAACzC,CAAC,EAAE/G,IAAI,CAACa,KAAK,CAACC,IAAI;IAAE2I,CAAC,EAAElD;EAAS,CAAC,EAClC;IAACQ,CAAC,EAAE/G,IAAI,CAACa,KAAK,CAAC4F,MAAM;IAAEgD,CAAC,EAAEjD;EAAW,CAAC,EACtC;IAACO,CAAC,EAAE/G,IAAI,CAACa,KAAK,CAACmE,MAAM;IAAEyE,CAAC,EAAE/C;EAAW,CAAC,EACtC;IAACK,CAAC,EAAE/G,IAAI,CAACa,KAAK,CAACsG,IAAI;IAAEsC,CAAC,EAAEvC;EAAS,CAAC,EAClC;IAACH,CAAC,EAAE/G,IAAI,CAACa,KAAK,CAACwD,SAAS;IAAEoF,CAAC,EAAEpC;EAAc,CAAC,EAC5C;IAACN,CAAC,EAAE/G,IAAI,CAACa,KAAK,CAAC8G,OAAO;IAAE8B,CAAC,EAAE/B;EAAY,CAAC,EACxC;IAACX,CAAC,EAAE/G,IAAI,CAACa,KAAK,CAACuB,KAAK;IAAEqH,CAAC,EAAEjC;EAAU,CAAC,EACpC;IAACT,CAAC,EAAE/G,IAAI,CAACa,KAAK,CAACuI,IAAI;IAAEK,CAAC,EAAEN;EAAS,CAAC,EAClC;IAACpC,CAAC,EAAE/G,IAAI,CAACa,KAAK,CAACiI,YAAY;IAAEW,CAAC,EAAEZ;EAAiB,CAAC,EAClD;IAAC9B,CAAC,EAAE/G,IAAI,CAACa,KAAK,CAACoG,QAAQ;IAAEwC,CAAC,EAAE7C;EAAa,CAAC,EAC1C;IAACG,CAAC,EAAE/G,IAAI,CAACa,KAAK,CAACmI,OAAO;IAAES,CAAC,EAAEV;EAAY,CAAC,EACxC;IAAChC,CAAC,EAAE/G,IAAI,CAACa,KAAK,CAACR,KAAK;IAAEoJ,CAAC,EAAER;EAAU,CAAC,CACrC,CAACS,MAAM,CAAC,CAACC,CAAC,EAAE5C,CAAC,KAAK;IACjB4C,CAAC,CAAC5C,CAAC,CAACA,CAAC,CAAC,GAAGA,CAAC,CAAC0C,CAAC;IACZ,OAAOE,CAAC;EACV,CAAC,EAAE,EAAE,CAAC;EAEN/I,MAAMA,CAACuB,IAAI,EAAEiB,IAAI,EAAE7B,KAAK,EAAE;IACxB,MAAMqI,CAAC,GAAG,IAAI,CAACJ,KAAK,CAACrH,IAAI,CAAC;IAC1B,IAAI,CAACyH,CAAC,EAAE;MACN,MAAM,IAAIvJ,KAAK,CAAC,kCAAkC8B,IAAI,EAAE,CAAC;IAC3D;IACA,OAAO,IAAIyH,CAAC,CAACxG,IAAI,EAAE7B,KAAK,CAAC;EAC3B;AACF,CAAC;AAEDsI,MAAM,CAACC,OAAO,GAAG9J,IAAI","ignoreList":[]}