@digabi/exam-engine-core 22.1.6-alpha.1 → 22.1.6-alpha.2

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 (34) hide show
  1. package/dist/__tests__/editor/Table.test.d.ts +2 -0
  2. package/dist/__tests__/editor/Table.test.d.ts.map +1 -0
  3. package/dist/__tests__/editor/Table.test.js +172 -0
  4. package/dist/__tests__/editor/Table.test.js.map +1 -0
  5. package/dist/__tests__/tsconfig.tsbuildinfo +1 -1
  6. package/dist/components/grading-instructions/EditableGradingInstruction.d.ts.map +1 -1
  7. package/dist/components/grading-instructions/EditableGradingInstruction.js +8 -6
  8. package/dist/components/grading-instructions/EditableGradingInstruction.js.map +1 -1
  9. package/dist/components/grading-instructions/editor/Formula.d.ts +0 -3
  10. package/dist/components/grading-instructions/editor/Formula.d.ts.map +1 -1
  11. package/dist/components/grading-instructions/editor/Formula.js +0 -54
  12. package/dist/components/grading-instructions/editor/Formula.js.map +1 -1
  13. package/dist/components/grading-instructions/editor/Table.d.ts +0 -2
  14. package/dist/components/grading-instructions/editor/Table.d.ts.map +1 -1
  15. package/dist/components/grading-instructions/editor/Table.js +1 -42
  16. package/dist/components/grading-instructions/editor/Table.js.map +1 -1
  17. package/dist/components/grading-instructions/editor/schemas/formulaSchema.d.ts +4 -0
  18. package/dist/components/grading-instructions/editor/schemas/formulaSchema.d.ts.map +1 -0
  19. package/dist/components/grading-instructions/editor/schemas/formulaSchema.js +55 -0
  20. package/dist/components/grading-instructions/editor/schemas/formulaSchema.js.map +1 -0
  21. package/dist/components/grading-instructions/editor/schemas/imageSchema.d.ts +4 -0
  22. package/dist/components/grading-instructions/editor/schemas/imageSchema.d.ts.map +1 -0
  23. package/dist/components/grading-instructions/editor/schemas/imageSchema.js +47 -0
  24. package/dist/components/grading-instructions/editor/schemas/imageSchema.js.map +1 -0
  25. package/dist/components/grading-instructions/editor/schemas/spanWithNowrapSchema.d.ts +3 -0
  26. package/dist/components/grading-instructions/editor/schemas/spanWithNowrapSchema.d.ts.map +1 -0
  27. package/dist/components/grading-instructions/editor/schemas/spanWithNowrapSchema.js +19 -0
  28. package/dist/components/grading-instructions/editor/schemas/spanWithNowrapSchema.js.map +1 -0
  29. package/dist/components/grading-instructions/editor/schemas/tableSchema.d.ts +3 -0
  30. package/dist/components/grading-instructions/editor/schemas/tableSchema.d.ts.map +1 -0
  31. package/dist/components/grading-instructions/editor/schemas/tableSchema.js +43 -0
  32. package/dist/components/grading-instructions/editor/schemas/tableSchema.js.map +1 -0
  33. package/dist/main-bundle.js +1 -1
  34. package/package.json +2 -2
@@ -0,0 +1,2 @@
1
+ import '@testing-library/jest-dom';
2
+ //# sourceMappingURL=Table.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Table.test.d.ts","sourceRoot":"","sources":["../../../__tests__/editor/Table.test.tsx"],"names":[],"mappings":"AAIA,OAAO,2BAA2B,CAAA"}
@@ -0,0 +1,172 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = require("@testing-library/react");
7
+ const user_event_1 = __importDefault(require("@testing-library/user-event"));
8
+ const renderEditableGradingInstruction_1 = require("../utils/renderEditableGradingInstruction");
9
+ const util_1 = require("../utils/util");
10
+ require("@testing-library/jest-dom");
11
+ const act = react_1.act;
12
+ describe('Table', () => {
13
+ let cleanup;
14
+ let onContentChangeMock;
15
+ beforeEach(() => {
16
+ onContentChangeMock = jest.fn();
17
+ });
18
+ afterEach(() => {
19
+ if (cleanup) {
20
+ cleanup();
21
+ }
22
+ cleanup = null;
23
+ });
24
+ it('Table is rendered as expected', () => {
25
+ const inputData = '<table class="e-table"><tbody><tr><td>foo</td></tr></tbody></table>';
26
+ const expectedOutput = '<table class="e-table"><tbody><tr><td>foo</td></tr></tbody></table>';
27
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData);
28
+ const table = result.container.querySelector('.ProseMirror');
29
+ expect(table.innerHTML).toBe(expectedOutput);
30
+ });
31
+ it('Change in table is returned as expected', async () => {
32
+ cleanup = mockCreateRange();
33
+ const inputData = '<table class="e-table"><tbody><tr><td>foo</td></tr></tbody></table>';
34
+ const expectedOutput = '<table class="e-table"><tbody><tr><td>bar</td></tr></tbody></table>';
35
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData, onContentChangeMock);
36
+ await act(async () => {
37
+ (0, util_1.insertText)(await result.findByText('foo'), 'bar');
38
+ });
39
+ expect(onContentChangeMock).toHaveBeenCalledTimes(1);
40
+ expect(onContentChangeMock).toHaveBeenCalledWith(expectedOutput, '');
41
+ });
42
+ it('Insert table adds expected table', async () => {
43
+ const inputData = '';
44
+ const expectedOutput = '<table class="e-table e-width-half"><tbody><tr><td></td><td></td></tr><tr><td></td><td></td></tr></tbody></table>';
45
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData, onContentChangeMock);
46
+ await act(async () => {
47
+ await user_event_1.default.click(await result.findByTestId('editor-menu-add-table'));
48
+ });
49
+ expect(onContentChangeMock).toHaveBeenCalledWith(expectedOutput, '');
50
+ });
51
+ it('Remove table removes table', async () => {
52
+ const inputData = '<table><tbody><tr><td>foo</td></tr></tbody></table>';
53
+ const expectedOutput = '<p></p>';
54
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData, onContentChangeMock);
55
+ await clickTableMenuButtonWithFocusOnCell(result, 'foo', 'Poista taulukko');
56
+ expect(onContentChangeMock).toHaveBeenCalledWith(expectedOutput, '');
57
+ });
58
+ it('Insert column adds column', async () => {
59
+ const inputData = '<table><tbody><tr><td>foo</td></tr></tbody></table>';
60
+ const expectedOutput = '<table><tbody><tr><td>foo</td><td></td></tr></tbody></table>';
61
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData, onContentChangeMock);
62
+ await clickTableMenuButtonWithFocusOnCell(result, 'foo', 'Lisää sarake');
63
+ expect(onContentChangeMock).toHaveBeenCalledWith(expectedOutput, '');
64
+ });
65
+ it('Remove column removes column', async () => {
66
+ const inputData = '<table><tbody><tr><td>foo</td><td>bar</td></tr></tbody></table>';
67
+ const expectedOutput = '<table><tbody><tr><td>bar</td></tr></tbody></table>';
68
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData, onContentChangeMock);
69
+ await clickTableMenuButtonWithFocusOnCell(result, 'foo', 'Poista sarake');
70
+ expect(onContentChangeMock).toHaveBeenCalledWith(expectedOutput, '');
71
+ });
72
+ it('Insert row adds row', async () => {
73
+ const inputData = '<table><tbody><tr><td>foo</td></tr></tbody></table>';
74
+ const expectedOutput = '<table><tbody><tr><td>foo</td></tr><tr><td></td></tr></tbody></table>';
75
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData, onContentChangeMock);
76
+ await clickTableMenuButtonWithFocusOnCell(result, 'foo', 'Lisää rivi');
77
+ expect(onContentChangeMock).toHaveBeenCalledWith(expectedOutput, '');
78
+ });
79
+ it('Remove row removes row', async () => {
80
+ const inputData = '<table><tbody><tr><td>foo</td></tr><tr><td>bar</td></tr></tbody></table>';
81
+ const expectedOutput = '<table><tbody><tr><td>bar</td></tr></tbody></table>';
82
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData, onContentChangeMock);
83
+ await clickTableMenuButtonWithFocusOnCell(result, 'foo', 'Poista rivi');
84
+ expect(onContentChangeMock).toHaveBeenCalledWith(expectedOutput, '');
85
+ });
86
+ it('Full width changes full width class to table', async () => {
87
+ const inputData = '<table class="e-width-half"><tbody><tr><td>foo</td></tr></tbody></table>';
88
+ const expectedOutput = '<table class="e-width-full"><tbody><tr><td>foo</td></tr></tbody></table>';
89
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData, onContentChangeMock);
90
+ expect(result.queryByText('Puolikas leveys')).not.toBeInTheDocument();
91
+ await clickTableMenuButtonWithFocusOnCell(result, 'foo', 'Täysi leveys');
92
+ expect(onContentChangeMock).toHaveBeenCalledWith(expectedOutput, '');
93
+ });
94
+ it('Half width changes half width class to table', async () => {
95
+ const inputData = '<table class="e-width-full"><tbody><tr><td>foo</td></tr></tbody></table>';
96
+ const expectedOutput = '<table class="e-width-half"><tbody><tr><td>foo</td></tr></tbody></table>';
97
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData, onContentChangeMock);
98
+ expect(result.queryByText('Täysi leveys')).not.toBeInTheDocument();
99
+ await clickTableMenuButtonWithFocusOnCell(result, 'foo', 'Puolikas leveys');
100
+ expect(onContentChangeMock).toHaveBeenCalledWith(expectedOutput, '');
101
+ });
102
+ it('Remove borders adds e-table--borderless class to table', async () => {
103
+ const inputData = '<table><tbody><tr><td>foo</td></tr></tbody></table>';
104
+ const expectedOutput = '<table class="e-table--borderless"><tbody><tr><td>foo</td></tr></tbody></table>';
105
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData, onContentChangeMock);
106
+ expect(result.queryByText('Lisää reunat')).not.toBeInTheDocument();
107
+ await clickTableMenuButtonWithFocusOnCell(result, 'foo', 'Poista reunat');
108
+ expect(onContentChangeMock).toHaveBeenCalledWith(expectedOutput, '');
109
+ });
110
+ it('Add borders removes e-table--borderless class from table', async () => {
111
+ const inputData = '<table class="e-table--borderless"><tbody><tr><td>foo</td></tr></tbody></table>';
112
+ const expectedOutput = '<table><tbody><tr><td>foo</td></tr></tbody></table>';
113
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData, onContentChangeMock);
114
+ expect(result.queryByText('Poista reunat')).not.toBeInTheDocument();
115
+ await clickTableMenuButtonWithFocusOnCell(result, 'foo', 'Lisää reunat');
116
+ expect(onContentChangeMock).toHaveBeenCalledWith(expectedOutput, '');
117
+ });
118
+ it('Remove zebra removes class from table', async () => {
119
+ const inputData = '<table class="e-table--zebra"><tbody><tr><td>foo</td></tr></tbody></table>';
120
+ const expectedOutput = '<table><tbody><tr><td>foo</td></tr></tbody></table>';
121
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData, onContentChangeMock);
122
+ expect(result.queryByText('Lisää raidat')).not.toBeInTheDocument();
123
+ await clickTableMenuButtonWithFocusOnCell(result, 'foo', 'Poista raidat');
124
+ expect(onContentChangeMock).toHaveBeenCalledWith(expectedOutput, '');
125
+ });
126
+ it('Add zebra adds e-table--zebra class to table', async () => {
127
+ const inputData = '<table><tbody><tr><td>foo</td></tr></tbody></table>';
128
+ const expectedOutput = '<table class="e-table--zebra"><tbody><tr><td>foo</td></tr></tbody></table>';
129
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData, onContentChangeMock);
130
+ expect(result.queryByText('Poista raidat')).not.toBeInTheDocument();
131
+ await clickTableMenuButtonWithFocusOnCell(result, 'foo', 'Lisää raidat');
132
+ expect(onContentChangeMock).toHaveBeenCalledWith(expectedOutput, '');
133
+ });
134
+ });
135
+ async function clickTableMenuButtonWithFocusOnCell(result, cellText, buttonText) {
136
+ await act(async () => {
137
+ await focusOnTablesCell(result, cellText);
138
+ await user_event_1.default.click(await result.findByText(buttonText));
139
+ });
140
+ }
141
+ async function focusOnTablesCell(result, text) {
142
+ // Replace cell's text with same text
143
+ // Hack to get focus on cell without need to mock createRange
144
+ (0, util_1.insertText)(await result.findByText(text), text);
145
+ }
146
+ function mockCreateRange() {
147
+ const originalCreateRange = global.window.document.createRange;
148
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
149
+ // @ts-expect-error
150
+ global.Range = function Range() { };
151
+ const createContextualFragment = (html) => {
152
+ const div = document.createElement('div');
153
+ div.innerHTML = html;
154
+ return div.children[0];
155
+ };
156
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
157
+ // @ts-expect-error
158
+ Range.prototype.createContextualFragment = (html) => createContextualFragment(html);
159
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
160
+ // @ts-expect-error
161
+ global.window.document.createRange = function createRange() {
162
+ return {
163
+ setEnd: () => { },
164
+ setStart: () => { },
165
+ getBoundingClientRect: () => ({ right: 0 }),
166
+ getClientRects: () => [],
167
+ createContextualFragment
168
+ };
169
+ };
170
+ return () => (global.window.document.createRange = originalCreateRange);
171
+ }
172
+ //# sourceMappingURL=Table.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Table.test.js","sourceRoot":"","sources":["../../../__tests__/editor/Table.test.tsx"],"names":[],"mappings":";;;;;AAAA,kDAAqE;AACrE,6EAAmD;AACnD,gGAAoF;AACpF,wCAA0C;AAC1C,qCAAkC;AAElC,MAAM,GAAG,GAAG,WAAuD,CAAA;AAEnE,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;IACrB,IAAI,OAA4B,CAAA;IAChC,IAAI,mBAA8B,CAAA;IAElC,UAAU,CAAC,GAAG,EAAE;QACd,mBAAmB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;IACjC,CAAC,CAAC,CAAA;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,EAAE,CAAA;QACX,CAAC;QACD,OAAO,GAAG,IAAI,CAAA;IAChB,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,SAAS,GAAG,qEAAqE,CAAA;QACvF,MAAM,cAAc,GAAG,qEAAqE,CAAA;QAC5F,MAAM,MAAM,GAAG,IAAA,2DAAwB,EAAC,SAAS,CAAC,CAAA;QAClD,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,cAAc,CAAC,CAAA;QAC5D,MAAM,CAAC,KAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IAC/C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QACvD,OAAO,GAAG,eAAe,EAAE,CAAA;QAC3B,MAAM,SAAS,GAAG,qEAAqE,CAAA;QACvF,MAAM,cAAc,GAAG,qEAAqE,CAAA;QAC5F,MAAM,MAAM,GAAG,IAAA,2DAAwB,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAA;QACvE,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE;YACnB,IAAA,iBAAU,EAAC,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAA;QACnD,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,mBAAmB,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAA;QACpD,MAAM,CAAC,mBAAmB,CAAC,CAAC,oBAAoB,CAAC,cAAc,EAAE,EAAE,CAAC,CAAA;IACtE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,SAAS,GAAG,EAAE,CAAA;QACpB,MAAM,cAAc,GAClB,mHAAmH,CAAA;QACrH,MAAM,MAAM,GAAG,IAAA,2DAAwB,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAA;QACvE,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE;YACnB,MAAM,oBAAS,CAAC,KAAK,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,uBAAuB,CAAC,CAAC,CAAA;QAC3E,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,mBAAmB,CAAC,CAAC,oBAAoB,CAAC,cAAc,EAAE,EAAE,CAAC,CAAA;IACtE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;QAC1C,MAAM,SAAS,GAAG,qDAAqD,CAAA;QACvE,MAAM,cAAc,GAAG,SAAS,CAAA;QAChC,MAAM,MAAM,GAAG,IAAA,2DAAwB,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAA;QACvE,MAAM,mCAAmC,CAAC,MAAM,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAA;QAC3E,MAAM,CAAC,mBAAmB,CAAC,CAAC,oBAAoB,CAAC,cAAc,EAAE,EAAE,CAAC,CAAA;IACtE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QACzC,MAAM,SAAS,GAAG,qDAAqD,CAAA;QACvE,MAAM,cAAc,GAAG,8DAA8D,CAAA;QACrF,MAAM,MAAM,GAAG,IAAA,2DAAwB,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAA;QACvE,MAAM,mCAAmC,CAAC,MAAM,EAAE,KAAK,EAAE,cAAc,CAAC,CAAA;QACxE,MAAM,CAAC,mBAAmB,CAAC,CAAC,oBAAoB,CAAC,cAAc,EAAE,EAAE,CAAC,CAAA;IACtE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,SAAS,GAAG,iEAAiE,CAAA;QACnF,MAAM,cAAc,GAAG,qDAAqD,CAAA;QAC5E,MAAM,MAAM,GAAG,IAAA,2DAAwB,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAA;QACvE,MAAM,mCAAmC,CAAC,MAAM,EAAE,KAAK,EAAE,eAAe,CAAC,CAAA;QACzE,MAAM,CAAC,mBAAmB,CAAC,CAAC,oBAAoB,CAAC,cAAc,EAAE,EAAE,CAAC,CAAA;IACtE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QACnC,MAAM,SAAS,GAAG,qDAAqD,CAAA;QACvE,MAAM,cAAc,GAAG,uEAAuE,CAAA;QAC9F,MAAM,MAAM,GAAG,IAAA,2DAAwB,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAA;QACvE,MAAM,mCAAmC,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC,CAAA;QACtE,MAAM,CAAC,mBAAmB,CAAC,CAAC,oBAAoB,CAAC,cAAc,EAAE,EAAE,CAAC,CAAA;IACtE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,SAAS,GAAG,0EAA0E,CAAA;QAC5F,MAAM,cAAc,GAAG,qDAAqD,CAAA;QAC5E,MAAM,MAAM,GAAG,IAAA,2DAAwB,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAA;QACvE,MAAM,mCAAmC,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,CAAA;QACvE,MAAM,CAAC,mBAAmB,CAAC,CAAC,oBAAoB,CAAC,cAAc,EAAE,EAAE,CAAC,CAAA;IACtE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,SAAS,GAAG,0EAA0E,CAAA;QAC5F,MAAM,cAAc,GAAG,0EAA0E,CAAA;QACjG,MAAM,MAAM,GAAG,IAAA,2DAAwB,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAA;QACvE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAA;QACrE,MAAM,mCAAmC,CAAC,MAAM,EAAE,KAAK,EAAE,cAAc,CAAC,CAAA;QACxE,MAAM,CAAC,mBAAmB,CAAC,CAAC,oBAAoB,CAAC,cAAc,EAAE,EAAE,CAAC,CAAA;IACtE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,SAAS,GAAG,0EAA0E,CAAA;QAC5F,MAAM,cAAc,GAAG,0EAA0E,CAAA;QACjG,MAAM,MAAM,GAAG,IAAA,2DAAwB,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAA;QACvE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAA;QAClE,MAAM,mCAAmC,CAAC,MAAM,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAA;QAC3E,MAAM,CAAC,mBAAmB,CAAC,CAAC,oBAAoB,CAAC,cAAc,EAAE,EAAE,CAAC,CAAA;IACtE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACtE,MAAM,SAAS,GAAG,qDAAqD,CAAA;QACvE,MAAM,cAAc,GAAG,iFAAiF,CAAA;QACxG,MAAM,MAAM,GAAG,IAAA,2DAAwB,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAA;QACvE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAA;QAClE,MAAM,mCAAmC,CAAC,MAAM,EAAE,KAAK,EAAE,eAAe,CAAC,CAAA;QACzE,MAAM,CAAC,mBAAmB,CAAC,CAAC,oBAAoB,CAAC,cAAc,EAAE,EAAE,CAAC,CAAA;IACtE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACxE,MAAM,SAAS,GAAG,iFAAiF,CAAA;QACnG,MAAM,cAAc,GAAG,qDAAqD,CAAA;QAC5E,MAAM,MAAM,GAAG,IAAA,2DAAwB,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAA;QACvE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAA;QACnE,MAAM,mCAAmC,CAAC,MAAM,EAAE,KAAK,EAAE,cAAc,CAAC,CAAA;QACxE,MAAM,CAAC,mBAAmB,CAAC,CAAC,oBAAoB,CAAC,cAAc,EAAE,EAAE,CAAC,CAAA;IACtE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,SAAS,GAAG,4EAA4E,CAAA;QAC9F,MAAM,cAAc,GAAG,qDAAqD,CAAA;QAC5E,MAAM,MAAM,GAAG,IAAA,2DAAwB,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAA;QACvE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAA;QAClE,MAAM,mCAAmC,CAAC,MAAM,EAAE,KAAK,EAAE,eAAe,CAAC,CAAA;QACzE,MAAM,CAAC,mBAAmB,CAAC,CAAC,oBAAoB,CAAC,cAAc,EAAE,EAAE,CAAC,CAAA;IACtE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,SAAS,GAAG,qDAAqD,CAAA;QACvE,MAAM,cAAc,GAAG,4EAA4E,CAAA;QACnG,MAAM,MAAM,GAAG,IAAA,2DAAwB,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAA;QACvE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAA;QACnE,MAAM,mCAAmC,CAAC,MAAM,EAAE,KAAK,EAAE,cAAc,CAAC,CAAA;QACxE,MAAM,CAAC,mBAAmB,CAAC,CAAC,oBAAoB,CAAC,cAAc,EAAE,EAAE,CAAC,CAAA;IACtE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,KAAK,UAAU,mCAAmC,CAAC,MAAoB,EAAE,QAAgB,EAAE,UAAkB;IAC3G,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QACzC,MAAM,oBAAS,CAAC,KAAK,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAA;IAC5D,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,MAAoB,EAAE,IAAY;IACjE,qCAAqC;IACrC,6DAA6D;IAC7D,IAAA,iBAAU,EAAC,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAA;AACjD,CAAC;AAED,SAAS,eAAe;IACtB,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAA;IAC9D,6DAA6D;IAC7D,mBAAmB;IACnB,MAAM,CAAC,KAAK,GAAG,SAAS,KAAK,KAAI,CAAC,CAAA;IAElC,MAAM,wBAAwB,GAAG,CAAC,IAAY,EAAE,EAAE;QAChD,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QACzC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAA;QACpB,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;IACxB,CAAC,CAAA;IACD,6DAA6D;IAC7D,mBAAmB;IACnB,KAAK,CAAC,SAAS,CAAC,wBAAwB,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAA;IAE3F,6DAA6D;IAC7D,mBAAmB;IACnB,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,GAAG,SAAS,WAAW;QACvD,OAAO;YACL,MAAM,EAAE,GAAG,EAAE,GAAE,CAAC;YAChB,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;YAClB,qBAAqB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YAC3C,cAAc,EAAE,GAAG,EAAE,CAAC,EAAE;YACxB,wBAAwB;SACzB,CAAA;IACH,CAAC,CAAA;IACD,OAAO,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,GAAG,mBAAmB,CAAC,CAAA;AACzE,CAAC"}