docxmlater 5.7.4 → 6.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/README.md +29 -2
  2. package/dist/core/Document.d.ts +22 -2
  3. package/dist/core/Document.d.ts.map +1 -1
  4. package/dist/core/Document.js +213 -7
  5. package/dist/core/Document.js.map +1 -1
  6. package/dist/core/DocumentGenerator.d.ts +4 -1
  7. package/dist/core/DocumentGenerator.d.ts.map +1 -1
  8. package/dist/core/DocumentGenerator.js +46 -42
  9. package/dist/core/DocumentGenerator.js.map +1 -1
  10. package/dist/core/DocumentParser.d.ts.map +1 -1
  11. package/dist/core/DocumentParser.js +33 -16
  12. package/dist/core/DocumentParser.js.map +1 -1
  13. package/dist/elements/Hyperlink.d.ts +10 -1
  14. package/dist/elements/Hyperlink.d.ts.map +1 -1
  15. package/dist/elements/Hyperlink.js +73 -0
  16. package/dist/elements/Hyperlink.js.map +1 -1
  17. package/dist/elements/Image.d.ts +1 -1
  18. package/dist/elements/Image.d.ts.map +1 -1
  19. package/dist/elements/Image.js +51 -11
  20. package/dist/elements/Image.js.map +1 -1
  21. package/dist/elements/Paragraph.d.ts +3 -0
  22. package/dist/elements/Paragraph.d.ts.map +1 -1
  23. package/dist/elements/Paragraph.js +148 -3
  24. package/dist/elements/Paragraph.js.map +1 -1
  25. package/dist/elements/RevisionManager.d.ts +33 -0
  26. package/dist/elements/RevisionManager.d.ts.map +1 -1
  27. package/dist/elements/RevisionManager.js +149 -0
  28. package/dist/elements/RevisionManager.js.map +1 -1
  29. package/dist/elements/Run.d.ts +2 -0
  30. package/dist/elements/Run.d.ts.map +1 -1
  31. package/dist/elements/Run.js +152 -1
  32. package/dist/elements/Run.js.map +1 -1
  33. package/dist/formatting/NumberingManager.d.ts +3 -0
  34. package/dist/formatting/NumberingManager.d.ts.map +1 -1
  35. package/dist/formatting/NumberingManager.js +9 -0
  36. package/dist/formatting/NumberingManager.js.map +1 -1
  37. package/dist/formatting/StylesManager.d.ts +3 -0
  38. package/dist/formatting/StylesManager.d.ts.map +1 -1
  39. package/dist/formatting/StylesManager.js +8 -0
  40. package/dist/formatting/StylesManager.js.map +1 -1
  41. package/dist/index.d.ts +5 -2
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +7 -1
  44. package/dist/index.js.map +1 -1
  45. package/dist/tracking/DocumentTrackingContext.d.ts +39 -0
  46. package/dist/tracking/DocumentTrackingContext.d.ts.map +1 -0
  47. package/dist/tracking/DocumentTrackingContext.js +237 -0
  48. package/dist/tracking/DocumentTrackingContext.js.map +1 -0
  49. package/dist/tracking/TrackingContext.d.ts +26 -0
  50. package/dist/tracking/TrackingContext.d.ts.map +1 -0
  51. package/dist/tracking/TrackingContext.js +3 -0
  52. package/dist/tracking/TrackingContext.js.map +1 -0
  53. package/dist/tracking/index.d.ts +3 -0
  54. package/dist/tracking/index.d.ts.map +1 -0
  55. package/dist/tracking/index.js +6 -0
  56. package/dist/tracking/index.js.map +1 -0
  57. package/dist/utils/ChangelogGenerator.d.ts +82 -0
  58. package/dist/utils/ChangelogGenerator.d.ts.map +1 -0
  59. package/dist/utils/ChangelogGenerator.js +422 -0
  60. package/dist/utils/ChangelogGenerator.js.map +1 -0
  61. package/dist/utils/RevisionAwareProcessor.d.ts +60 -0
  62. package/dist/utils/RevisionAwareProcessor.d.ts.map +1 -0
  63. package/dist/utils/RevisionAwareProcessor.js +237 -0
  64. package/dist/utils/RevisionAwareProcessor.js.map +1 -0
  65. package/dist/utils/SelectiveRevisionAcceptor.d.ts +34 -0
  66. package/dist/utils/SelectiveRevisionAcceptor.d.ts.map +1 -0
  67. package/dist/utils/SelectiveRevisionAcceptor.js +175 -0
  68. package/dist/utils/SelectiveRevisionAcceptor.js.map +1 -0
  69. package/dist/utils/acceptRevisions.d.ts +22 -0
  70. package/dist/utils/acceptRevisions.d.ts.map +1 -0
  71. package/dist/utils/acceptRevisions.js +211 -0
  72. package/dist/utils/acceptRevisions.js.map +1 -0
  73. package/dist/utils/corruptionDetection.js +1 -1
  74. package/dist/utils/corruptionDetection.js.map +1 -1
  75. package/dist/utils/stripTrackedChanges.d.ts +22 -0
  76. package/dist/utils/stripTrackedChanges.d.ts.map +1 -0
  77. package/dist/utils/stripTrackedChanges.js +196 -0
  78. package/dist/utils/stripTrackedChanges.js.map +1 -0
  79. package/dist/xml/XMLParser.d.ts.map +1 -1
  80. package/dist/xml/XMLParser.js +7 -0
  81. package/dist/xml/XMLParser.js.map +1 -1
  82. package/package.json +1 -1
@@ -0,0 +1,237 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DocumentTrackingContext = void 0;
4
+ const Revision_1 = require("../elements/Revision");
5
+ const Run_1 = require("../elements/Run");
6
+ class DocumentTrackingContext {
7
+ enabled = false;
8
+ trackFormatting = true;
9
+ author = 'DocHub';
10
+ revisionManager;
11
+ pendingChanges = new Map();
12
+ static FORMATTING_PROPERTIES = new Set([
13
+ 'bold',
14
+ 'italic',
15
+ 'underline',
16
+ 'strike',
17
+ 'dstrike',
18
+ 'subscript',
19
+ 'superscript',
20
+ 'font',
21
+ 'size',
22
+ 'color',
23
+ 'highlight',
24
+ 'smallCaps',
25
+ 'allCaps',
26
+ 'characterSpacing',
27
+ 'scaling',
28
+ 'position',
29
+ 'emphasis',
30
+ 'shadow',
31
+ 'emboss',
32
+ 'imprint',
33
+ 'outline',
34
+ 'vanish',
35
+ ]);
36
+ constructor(revisionManager) {
37
+ this.revisionManager = revisionManager;
38
+ }
39
+ enable(options) {
40
+ this.enabled = true;
41
+ if (options?.author) {
42
+ this.author = options.author;
43
+ }
44
+ if (options?.trackFormatting !== undefined) {
45
+ this.trackFormatting = options.trackFormatting;
46
+ }
47
+ }
48
+ disable() {
49
+ this.flushPendingChanges();
50
+ this.enabled = false;
51
+ }
52
+ setAuthor(author) {
53
+ this.author = author;
54
+ }
55
+ isEnabled() {
56
+ return this.enabled;
57
+ }
58
+ getAuthor() {
59
+ return this.author;
60
+ }
61
+ getRevisionManager() {
62
+ return this.revisionManager;
63
+ }
64
+ isTrackFormattingEnabled() {
65
+ return this.trackFormatting;
66
+ }
67
+ trackRunPropertyChange(run, property, oldValue, newValue) {
68
+ if (!this.enabled)
69
+ return;
70
+ if (oldValue === newValue)
71
+ return;
72
+ if (!this.trackFormatting &&
73
+ DocumentTrackingContext.FORMATTING_PROPERTIES.has(property)) {
74
+ return;
75
+ }
76
+ const key = `runProp:${property}:${this.stringifyValue(newValue)}`;
77
+ this.addPendingChange(key, {
78
+ type: 'runPropertiesChange',
79
+ property,
80
+ previousValue: oldValue,
81
+ newValue,
82
+ element: run,
83
+ timestamp: Date.now(),
84
+ });
85
+ }
86
+ trackParagraphPropertyChange(paragraph, property, oldValue, newValue) {
87
+ if (!this.enabled)
88
+ return;
89
+ if (oldValue === newValue)
90
+ return;
91
+ const key = `paraProp:${property}:${this.stringifyValue(newValue)}`;
92
+ this.addPendingChange(key, {
93
+ type: 'paragraphPropertiesChange',
94
+ property,
95
+ previousValue: oldValue,
96
+ newValue,
97
+ element: paragraph,
98
+ timestamp: Date.now(),
99
+ });
100
+ }
101
+ trackHyperlinkChange(hyperlink, changeType, oldValue, newValue) {
102
+ if (!this.enabled)
103
+ return;
104
+ if (oldValue === newValue)
105
+ return;
106
+ const key = `hyperlink:${changeType}:${this.stringifyValue(newValue)}`;
107
+ this.addPendingChange(key, {
108
+ type: 'runPropertiesChange',
109
+ property: changeType,
110
+ previousValue: oldValue,
111
+ newValue,
112
+ element: hyperlink,
113
+ timestamp: Date.now(),
114
+ });
115
+ }
116
+ trackTableChange(element, property, oldValue, newValue) {
117
+ if (!this.enabled)
118
+ return;
119
+ if (oldValue === newValue)
120
+ return;
121
+ let type = 'tablePropertiesChange';
122
+ const elementType = element?.constructor?.name || 'unknown';
123
+ if (elementType === 'TableRow') {
124
+ type = 'tableRowPropertiesChange';
125
+ }
126
+ else if (elementType === 'TableCell') {
127
+ type = 'tableCellPropertiesChange';
128
+ }
129
+ const key = `table:${elementType}:${property}:${this.stringifyValue(newValue)}`;
130
+ this.addPendingChange(key, {
131
+ type,
132
+ property,
133
+ previousValue: oldValue,
134
+ newValue,
135
+ element,
136
+ timestamp: Date.now(),
137
+ });
138
+ }
139
+ trackInsertion(element, text) {
140
+ if (!this.enabled)
141
+ return;
142
+ if (!text)
143
+ return;
144
+ const key = `insert:${Date.now()}:${text.substring(0, 20)}`;
145
+ this.addPendingChange(key, {
146
+ type: 'insert',
147
+ property: 'text',
148
+ previousValue: undefined,
149
+ newValue: text,
150
+ element,
151
+ timestamp: Date.now(),
152
+ });
153
+ }
154
+ trackDeletion(element, text) {
155
+ if (!this.enabled)
156
+ return;
157
+ if (!text)
158
+ return;
159
+ const key = `delete:${Date.now()}:${text.substring(0, 20)}`;
160
+ this.addPendingChange(key, {
161
+ type: 'delete',
162
+ property: 'text',
163
+ previousValue: text,
164
+ newValue: undefined,
165
+ element,
166
+ timestamp: Date.now(),
167
+ });
168
+ }
169
+ flushPendingChanges() {
170
+ const revisions = [];
171
+ for (const [, pending] of this.pendingChanges) {
172
+ const revision = this.createRevision(pending);
173
+ this.revisionManager.register(revision);
174
+ revisions.push(revision);
175
+ }
176
+ this.pendingChanges.clear();
177
+ return revisions;
178
+ }
179
+ addPendingChange(key, change) {
180
+ const existing = this.pendingChanges.get(key);
181
+ if (existing) {
182
+ existing.count = (existing.count || 1) + 1;
183
+ }
184
+ else {
185
+ this.pendingChanges.set(key, { ...change, count: 1 });
186
+ }
187
+ }
188
+ createRevision(pending) {
189
+ const previousProps = {};
190
+ const newProps = {};
191
+ if (pending.previousValue !== undefined) {
192
+ previousProps[pending.property] = pending.previousValue;
193
+ }
194
+ if (pending.newValue !== undefined) {
195
+ newProps[pending.property] = pending.newValue;
196
+ }
197
+ const run = this.getRunFromElement(pending.element);
198
+ return new Revision_1.Revision({
199
+ author: this.author,
200
+ type: pending.type,
201
+ content: run,
202
+ previousProperties: Object.keys(previousProps).length > 0 ? previousProps : undefined,
203
+ newProperties: Object.keys(newProps).length > 0 ? newProps : undefined,
204
+ date: new Date(pending.timestamp),
205
+ });
206
+ }
207
+ getRunFromElement(element) {
208
+ if (element instanceof Run_1.Run) {
209
+ return element;
210
+ }
211
+ const text = element?.getText?.() ||
212
+ element?.constructor?.name ||
213
+ 'Unknown element';
214
+ return new Run_1.Run(typeof text === 'string' ? text : String(text));
215
+ }
216
+ stringifyValue(value) {
217
+ if (value === undefined)
218
+ return 'undefined';
219
+ if (value === null)
220
+ return 'null';
221
+ if (typeof value === 'object') {
222
+ return JSON.stringify(value);
223
+ }
224
+ return String(value);
225
+ }
226
+ getPendingCount() {
227
+ return this.pendingChanges.size;
228
+ }
229
+ hasPendingChanges() {
230
+ return this.pendingChanges.size > 0;
231
+ }
232
+ clearPendingChanges() {
233
+ this.pendingChanges.clear();
234
+ }
235
+ }
236
+ exports.DocumentTrackingContext = DocumentTrackingContext;
237
+ //# sourceMappingURL=DocumentTrackingContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocumentTrackingContext.js","sourceRoot":"","sources":["../../src/tracking/DocumentTrackingContext.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { Revision, RevisionType } from '../elements/Revision';
2
+ import type { RevisionManager } from '../elements/RevisionManager';
3
+ import type { Run } from '../elements/Run';
4
+ export interface PendingChange {
5
+ type: RevisionType;
6
+ property: string;
7
+ previousValue: any;
8
+ newValue: any;
9
+ element: any;
10
+ timestamp: number;
11
+ count?: number;
12
+ }
13
+ export interface TrackingContext {
14
+ isEnabled(): boolean;
15
+ getAuthor(): string;
16
+ getRevisionManager(): RevisionManager;
17
+ isTrackFormattingEnabled(): boolean;
18
+ trackRunPropertyChange(run: Run, property: string, oldValue: any, newValue: any): void;
19
+ trackParagraphPropertyChange(paragraph: any, property: string, oldValue: any, newValue: any): void;
20
+ trackHyperlinkChange(hyperlink: any, changeType: string, oldValue: any, newValue: any): void;
21
+ trackTableChange(element: any, property: string, oldValue: any, newValue: any): void;
22
+ trackInsertion(element: any, text: string): void;
23
+ trackDeletion(element: any, text: string): void;
24
+ flushPendingChanges(): Revision[];
25
+ }
26
+ //# sourceMappingURL=TrackingContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TrackingContext.d.ts","sourceRoot":"","sources":["../../src/tracking/TrackingContext.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAK3C,MAAM,WAAW,aAAa;IAE5B,IAAI,EAAE,YAAY,CAAC;IAEnB,QAAQ,EAAE,MAAM,CAAC;IAEjB,aAAa,EAAE,GAAG,CAAC;IAEnB,QAAQ,EAAE,GAAG,CAAC;IAEd,OAAO,EAAE,GAAG,CAAC;IAEb,SAAS,EAAE,MAAM,CAAC;IAElB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAQD,MAAM,WAAW,eAAe;IAI9B,SAAS,IAAI,OAAO,CAAC;IAKrB,SAAS,IAAI,MAAM,CAAC;IAKpB,kBAAkB,IAAI,eAAe,CAAC;IAKtC,wBAAwB,IAAI,OAAO,CAAC;IASpC,sBAAsB,CACpB,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,GAAG,EACb,QAAQ,EAAE,GAAG,GACZ,IAAI,CAAC;IASR,4BAA4B,CAC1B,SAAS,EAAE,GAAG,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,GAAG,EACb,QAAQ,EAAE,GAAG,GACZ,IAAI,CAAC;IASR,oBAAoB,CAClB,SAAS,EAAE,GAAG,EACd,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,GAAG,EACb,QAAQ,EAAE,GAAG,GACZ,IAAI,CAAC;IASR,gBAAgB,CACd,OAAO,EAAE,GAAG,EACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,GAAG,EACb,QAAQ,EAAE,GAAG,GACZ,IAAI,CAAC;IAOR,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAOjD,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAOhD,mBAAmB,IAAI,QAAQ,EAAE,CAAC;CACnC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=TrackingContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TrackingContext.js","sourceRoot":"","sources":["../../src/tracking/TrackingContext.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export { TrackingContext, PendingChange } from './TrackingContext';
2
+ export { DocumentTrackingContext, TrackingEnableOptions, } from './DocumentTrackingContext';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tracking/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EACL,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DocumentTrackingContext = void 0;
4
+ var DocumentTrackingContext_1 = require("./DocumentTrackingContext");
5
+ Object.defineProperty(exports, "DocumentTrackingContext", { enumerable: true, get: function () { return DocumentTrackingContext_1.DocumentTrackingContext; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tracking/index.ts"],"names":[],"mappings":";;;AASA,qEAGmC;AAFjC,kIAAA,uBAAuB,OAAA"}
@@ -0,0 +1,82 @@
1
+ import type { Document } from '../core/Document';
2
+ import { Revision, RevisionType } from '../elements/Revision';
3
+ export type ChangeCategory = 'content' | 'formatting' | 'structural' | 'table';
4
+ export interface ChangeLocation {
5
+ sectionIndex?: number;
6
+ paragraphIndex: number;
7
+ runIndex?: number;
8
+ nearestHeading?: string;
9
+ characterOffset?: number;
10
+ }
11
+ export interface ChangeEntry {
12
+ id: string;
13
+ revisionType: RevisionType;
14
+ category: ChangeCategory;
15
+ description: string;
16
+ author: string;
17
+ date: Date;
18
+ location: ChangeLocation;
19
+ content: {
20
+ before?: string;
21
+ after?: string;
22
+ affectedText?: string;
23
+ };
24
+ propertyChange?: {
25
+ property: string;
26
+ oldValue?: string;
27
+ newValue?: string;
28
+ };
29
+ }
30
+ export interface ChangelogOptions {
31
+ includeFormattingChanges?: boolean;
32
+ consolidate?: boolean;
33
+ maxContextLength?: number;
34
+ filterAuthors?: string[];
35
+ filterDateRange?: {
36
+ start: Date;
37
+ end: Date;
38
+ };
39
+ filterCategories?: ChangeCategory[];
40
+ }
41
+ export interface ConsolidatedChange {
42
+ description: string;
43
+ count: number;
44
+ category: ChangeCategory;
45
+ commonAttributes: {
46
+ author?: string;
47
+ revisionType?: RevisionType;
48
+ propertyChanged?: string;
49
+ newValue?: string;
50
+ };
51
+ changeIds: string[];
52
+ }
53
+ export interface ChangelogSummary {
54
+ total: number;
55
+ byCategory: Record<ChangeCategory, number>;
56
+ byType: Record<string, number>;
57
+ byAuthor: Record<string, number>;
58
+ dateRange: {
59
+ earliest: Date;
60
+ latest: Date;
61
+ } | null;
62
+ }
63
+ export declare class ChangelogGenerator {
64
+ static fromDocument(doc: Document, options?: ChangelogOptions): ChangeEntry[];
65
+ static fromRevisions(revisions: Revision[], options?: ChangelogOptions, doc?: Document): ChangeEntry[];
66
+ private static revisionToEntry;
67
+ static getSummary(entries: ChangeEntry[]): ChangelogSummary;
68
+ static consolidate(entries: ChangeEntry[]): ConsolidatedChange[];
69
+ private static generateConsolidatedDescription;
70
+ private static allSame;
71
+ static categorize(revision: Revision): ChangeCategory;
72
+ private static isPropertyChangeType;
73
+ static describeRevision(revision: Revision, maxLength?: number): string;
74
+ private static describePropertyChange;
75
+ private static friendlyPropertyName;
76
+ static toMarkdown(entries: ChangeEntry[], options?: {
77
+ includeMetadata?: boolean;
78
+ }): string;
79
+ static toPlainText(entries: ChangeEntry[]): string;
80
+ static toJSON(entries: ChangeEntry[]): string;
81
+ }
82
+ //# sourceMappingURL=ChangelogGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChangelogGenerator.d.ts","sourceRoot":"","sources":["../../src/utils/ChangelogGenerator.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAK9D,MAAM,MAAM,cAAc,GACtB,SAAS,GACT,YAAY,GACZ,YAAY,GACZ,OAAO,CAAC;AAKZ,MAAM,WAAW,cAAc;IAE7B,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,cAAc,EAAE,MAAM,CAAC;IAEvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAMD,MAAM,WAAW,WAAW;IAE1B,EAAE,EAAE,MAAM,CAAC;IAGX,YAAY,EAAE,YAAY,CAAC;IAG3B,QAAQ,EAAE,cAAc,CAAC;IAGzB,WAAW,EAAE,MAAM,CAAC;IAGpB,MAAM,EAAE,MAAM,CAAC;IAGf,IAAI,EAAE,IAAI,CAAC;IAGX,QAAQ,EAAE,cAAc,CAAC;IAGzB,OAAO,EAAE;QAEP,MAAM,CAAC,EAAE,MAAM,CAAC;QAEhB,KAAK,CAAC,EAAE,MAAM,CAAC;QAEf,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IAGF,cAAc,CAAC,EAAE;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAKD,MAAM,WAAW,gBAAgB;IAE/B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAEnC,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IAEzB,eAAe,CAAC,EAAE;QAAE,KAAK,EAAE,IAAI,CAAC;QAAC,GAAG,EAAE,IAAI,CAAA;KAAE,CAAC;IAE7C,gBAAgB,CAAC,EAAE,cAAc,EAAE,CAAC;CACrC;AAKD,MAAM,WAAW,kBAAkB;IAEjC,WAAW,EAAE,MAAM,CAAC;IAEpB,KAAK,EAAE,MAAM,CAAC;IAEd,QAAQ,EAAE,cAAc,CAAC;IAEzB,gBAAgB,EAAE;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,YAAY,CAAC,EAAE,YAAY,CAAC;QAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IAEF,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAKD,MAAM,WAAW,gBAAgB;IAE/B,KAAK,EAAE,MAAM,CAAC;IAEd,UAAU,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAE3C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE/B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC,SAAS,EAAE;QAAE,QAAQ,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;CACpD;AAMD,qBAAa,kBAAkB;IAS7B,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,WAAW,EAAE;IAkB7E,MAAM,CAAC,aAAa,CAClB,SAAS,EAAE,QAAQ,EAAE,EACrB,OAAO,CAAC,EAAE,gBAAgB,EAC1B,GAAG,CAAC,EAAE,QAAQ,GACb,WAAW,EAAE;IAsDhB,OAAO,CAAC,MAAM,CAAC,eAAe;IAkE9B,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,gBAAgB;IA+C3D,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,kBAAkB,EAAE;IA2DhE,OAAO,CAAC,MAAM,CAAC,+BAA+B;IAgD9C,OAAO,CAAC,MAAM,CAAC,OAAO;IAYtB,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,cAAc;IAuCrD,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAoBnC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,GAAE,MAAW,GAAG,MAAM;IAgD3E,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAyCrC,OAAO,CAAC,MAAM,CAAC,oBAAoB;IA4BnC,MAAM,CAAC,UAAU,CACf,OAAO,EAAE,WAAW,EAAE,EACtB,OAAO,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,GACtC,MAAM;IAyET,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM;IA4BlD,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM;CAO9C"}