@researchdatabox/sails-ng-common 5.0.3 → 5.0.4
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.
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +2 -1
- package/dist/src/translation-html.d.ts +23 -0
- package/dist/src/translation-html.js +170 -0
- package/package.json +1 -1
package/dist/src/index.d.ts
CHANGED
package/dist/src/index.js
CHANGED
|
@@ -142,4 +142,5 @@ __exportStar(require("./validation/helpers"), exports);
|
|
|
142
142
|
__exportStar(require("./validation/form.model"), exports);
|
|
143
143
|
__exportStar(require("./validation/validators"), exports);
|
|
144
144
|
__exportStar(require("./validation/validators-support"), exports);
|
|
145
|
-
|
|
145
|
+
__exportStar(require("./translation-html"), exports);
|
|
146
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE1BQU07QUFDTixpREFBK0I7QUFDL0IsaURBQStCO0FBQy9CLGlEQUErQjtBQUMvQixxREFBbUM7QUFDbkMsd0RBQXNDO0FBQ3RDLHVEQUFxQztBQUNyQyxvREFBa0M7QUFDbEMsaURBQStCO0FBQy9CLHdEQUFzQztBQUN0QyxTQUFTO0FBQ1QsbURBQWlDO0FBQ2pDLDhEQUE0QztBQUM1Qyw0REFBMEM7QUFDMUMsMERBQXdDO0FBQ3hDLCtEQUE2QztBQUM3Qyw2REFBMkM7QUFDM0MsbUVBQWlEO0FBQ2pELCtFQUErRTtBQUMvRSxnRUFBZ0U7QUFDaEUsa0VBQWdEO0FBQ2hELGtFQUFnRDtBQUNoRCxnRUFBOEM7QUFDOUMsd0VBQXNEO0FBQ3RELHNFQUFvRDtBQUNwRCwrREFBNkM7QUFDN0MsNkRBQTJDO0FBQzNDLGdFQUE4QztBQUM5Qyw4REFBNEM7QUFDNUMsbUVBQWlEO0FBQ2pELGlFQUErQztBQUMvQyx5REFBdUM7QUFDdkMsdURBQXFDO0FBQ3JDLCtEQUE2QztBQUM3QyxpRUFBK0M7QUFDL0MsNERBQTBDO0FBQzFDLDhEQUE0QztBQUM1QyxRQUFRO0FBQ1IsK0RBQTZDO0FBQzdDLGdFQUE4QztBQUM5QyxpQkFBaUI7QUFDakIsZ0VBQThDO0FBQzlDLDhEQUE0QztBQUM1QyxnRUFBOEM7QUFDOUMscURBQW1DO0FBQ25DLG1CQUFtQjtBQUNuQiwwRUFBd0Q7QUFDeEQsNEVBQTBEO0FBQzFELDBFQUF3RDtBQUN4RCw0RUFBMEQ7QUFDMUQsNkVBQTJEO0FBQzNELCtFQUE2RDtBQUM3RCx5RUFBdUQ7QUFDdkQsMkVBQXlEO0FBQ3pELDBFQUF3RDtBQUN4RCw0RUFBMEQ7QUFDMUQsaUVBQStDO0FBQy9DLG1FQUFpRDtBQUNqRCx1RUFBcUQ7QUFDckQseUVBQXVEO0FBQ3ZELHNFQUFvRDtBQUNwRCx3RUFBc0Q7QUFDdEQsdUVBQXFEO0FBQ3JELHlFQUF1RDtBQUN2RCx1RUFBcUQ7QUFDckQseUVBQXVEO0FBQ3ZELDhFQUE0RDtBQUM1RCxnRkFBOEQ7QUFDOUQseUVBQXVEO0FBQ3ZELDJFQUF5RDtBQUN6RCx5RUFBdUQ7QUFDdkQsMkVBQXlEO0FBQ3pELDBFQUF3RDtBQUN4RCw0RUFBMEQ7QUFDMUQsd0VBQXNEO0FBQ3RELDBFQUF3RDtBQUN4RCwrREFBNkM7QUFDN0MsaUVBQStDO0FBQy9DLHFFQUFtRDtBQUNuRCx1RUFBcUQ7QUFDckQsdUVBQXFEO0FBQ3JELHlFQUF1RDtBQUN2RCxxRUFBbUQ7QUFDbkQsdUVBQXFEO0FBQ3JELG1FQUFpRDtBQUNqRCxxRUFBbUQ7QUFDbkQsOEVBQTREO0FBQzVELGdGQUE4RDtBQUM5RCx3RkFBc0U7QUFDdEUsMEZBQXdFO0FBQ3hFLHNFQUFvRDtBQUNwRCx3RUFBc0Q7QUFDdEQseUVBQXVEO0FBQ3ZELDJFQUF5RDtBQUN6RCwwRUFBd0Q7QUFDeEQseUVBQXVEO0FBQ3ZELDJFQUF5RDtBQUN6RCwyRUFBeUQ7QUFDekQsNkVBQTJEO0FBQzNELDJFQUF5RDtBQUN6RCw2RUFBMkQ7QUFDM0QsNEVBQTBEO0FBQzFELDhFQUE0RDtBQUM1RCwrREFBNkM7QUFDN0MsaUVBQStDO0FBQy9DLHVFQUFxRDtBQUNyRCx5RUFBdUQ7QUFDdkQsb0VBQWtEO0FBQ2xELHNFQUFvRDtBQUNwRCxxRkFBbUU7QUFDbkUsdUZBQXFFO0FBQ3JFLDhFQUE4RTtBQUM5RSxpQ0FBaUM7QUFDakMseUZBQXVFO0FBQ3ZFLDJGQUF5RTtBQUN6RSx5RUFBdUQ7QUFDdkQsMkVBQXlEO0FBQ3pELDBGQUF3RTtBQUN4RSw0RkFBMEU7QUFDMUUsb0VBQWtEO0FBQ2xELHNFQUFvRDtBQUNwRCx5RUFBdUQ7QUFDdkQsMkVBQXlEO0FBQ3pELGFBQWE7QUFDYix1REFBcUM7QUFDckMsMERBQXdDO0FBQ3hDLDBEQUF3QztBQUN4QyxrRUFBZ0Q7QUFDaEQscURBQW1DIn0=
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/** Developer-owned presentation policy for HTML translations; never supplied by an entry. */
|
|
2
|
+
export type TranslationHtmlClasses = Record<string, string[]>;
|
|
3
|
+
export declare const translationHtmlTags: string[];
|
|
4
|
+
export declare const translationHtmlAttributes: string[];
|
|
5
|
+
/** Shared DOMPurify policy; the temporary colwidth input is removed during width normalization. */
|
|
6
|
+
export declare const translationHtmlSanitizerConfig: {
|
|
7
|
+
ALLOWED_TAGS: string[];
|
|
8
|
+
ALLOWED_ATTR: string[];
|
|
9
|
+
ALLOW_DATA_ATTR: boolean;
|
|
10
|
+
ALLOW_ARIA_ATTR: boolean;
|
|
11
|
+
FORBID_ATTR: string[];
|
|
12
|
+
FORBID_TAGS: string[];
|
|
13
|
+
};
|
|
14
|
+
/** Only pixel counts on table columns are supported; percentages and CSS are not width metadata. */
|
|
15
|
+
export declare function filterTranslationColumnWidth(value: string | null, tag?: string): string | null;
|
|
16
|
+
/** Convert editor-only colwidth arrays to numeric HTML widths in an already sanitized DOM. */
|
|
17
|
+
export declare function normalizeTranslationTableWidths(root: Document | HTMLElement): void;
|
|
18
|
+
/** Rebuild the logical column slice for a cell, including colspan and preceding rowspans. */
|
|
19
|
+
export declare function readTranslationCellWidths(element: HTMLElement): number[] | null;
|
|
20
|
+
export declare const defaultTranslationHtmlClasses: TranslationHtmlClasses;
|
|
21
|
+
/** Merge exact, element-specific hook additions with core's supported classes. No wildcards. */
|
|
22
|
+
export declare function getTranslationHtmlClasses(additions?: unknown): TranslationHtmlClasses;
|
|
23
|
+
export declare function filterTranslationHtmlClasses(value: string | null | undefined, tag: string, policy: TranslationHtmlClasses): string;
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defaultTranslationHtmlClasses = exports.translationHtmlSanitizerConfig = exports.translationHtmlAttributes = exports.translationHtmlTags = void 0;
|
|
4
|
+
exports.filterTranslationColumnWidth = filterTranslationColumnWidth;
|
|
5
|
+
exports.normalizeTranslationTableWidths = normalizeTranslationTableWidths;
|
|
6
|
+
exports.readTranslationCellWidths = readTranslationCellWidths;
|
|
7
|
+
exports.getTranslationHtmlClasses = getTranslationHtmlClasses;
|
|
8
|
+
exports.filterTranslationHtmlClasses = filterTranslationHtmlClasses;
|
|
9
|
+
exports.translationHtmlTags = [
|
|
10
|
+
'a', 'p', 'br', 'strong', 'em', 'u', 'i', 'b', 's', 'span', 'div',
|
|
11
|
+
'ul', 'ol', 'li', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6',
|
|
12
|
+
'blockquote', 'code', 'pre', 'hr',
|
|
13
|
+
'table', 'thead', 'tbody', 'tfoot', 'tr', 'th', 'td', 'colgroup', 'col'
|
|
14
|
+
];
|
|
15
|
+
exports.translationHtmlAttributes = [
|
|
16
|
+
'class', 'href', 'target', 'rel', 'title', 'scope', 'colspan', 'rowspan', 'width', 'role'
|
|
17
|
+
];
|
|
18
|
+
/** Shared DOMPurify policy; the temporary colwidth input is removed during width normalization. */
|
|
19
|
+
exports.translationHtmlSanitizerConfig = {
|
|
20
|
+
ALLOWED_TAGS: exports.translationHtmlTags,
|
|
21
|
+
ALLOWED_ATTR: exports.translationHtmlAttributes,
|
|
22
|
+
ALLOW_DATA_ATTR: false,
|
|
23
|
+
ALLOW_ARIA_ATTR: false,
|
|
24
|
+
FORBID_ATTR: ['style'],
|
|
25
|
+
FORBID_TAGS: ['style', 'script', 'link', 'iframe', 'object', 'embed', 'svg', 'math']
|
|
26
|
+
};
|
|
27
|
+
/** Only pixel counts on table columns are supported; percentages and CSS are not width metadata. */
|
|
28
|
+
function filterTranslationColumnWidth(value, tag = 'col') {
|
|
29
|
+
if (tag.toLowerCase() !== 'col' || !value || !/^[1-9]\d*$/.test(value))
|
|
30
|
+
return null;
|
|
31
|
+
const width = Number(value);
|
|
32
|
+
return Number.isSafeInteger(width) ? String(width) : null;
|
|
33
|
+
}
|
|
34
|
+
function tableColumns(table) {
|
|
35
|
+
// Restrict the lookup to this table so nested tables cannot supply the outer cell's widths.
|
|
36
|
+
return Array.from(table.children).filter(child => child.tagName === 'COLGROUP')
|
|
37
|
+
.flatMap(group => Array.from(group.querySelectorAll('col')));
|
|
38
|
+
}
|
|
39
|
+
function parseCellWidths(cell) {
|
|
40
|
+
const raw = cell.getAttribute('colwidth');
|
|
41
|
+
if (!raw)
|
|
42
|
+
return null;
|
|
43
|
+
const tokens = raw.split(',');
|
|
44
|
+
if (tokens.length !== cell.colSpan || tokens.some(token => !/^\d+$/.test(token)))
|
|
45
|
+
return null;
|
|
46
|
+
const widths = tokens.map(Number);
|
|
47
|
+
// Tiptap uses zero for an unmeasured column within a merged cell.
|
|
48
|
+
return widths.every(width => Number.isSafeInteger(width) && width >= 0) ? widths : null;
|
|
49
|
+
}
|
|
50
|
+
/** Pair each cell with its logical column, accounting for colspans and rowspans within each row group. */
|
|
51
|
+
function tableCellColumns(table) {
|
|
52
|
+
const rows = Array.from(table.rows);
|
|
53
|
+
const occupiedUntil = [];
|
|
54
|
+
const cells = [];
|
|
55
|
+
rows.forEach((row, rowIndex) => {
|
|
56
|
+
let column = 0;
|
|
57
|
+
for (const cell of Array.from(row.cells)) {
|
|
58
|
+
while ((occupiedUntil[column] ?? 0) > rowIndex)
|
|
59
|
+
column++;
|
|
60
|
+
cells.push({ cell, column });
|
|
61
|
+
let groupEnd = rowIndex + 1;
|
|
62
|
+
while (groupEnd < rows.length && rows[groupEnd].parentElement === row.parentElement)
|
|
63
|
+
groupEnd++;
|
|
64
|
+
const spanEnd = cell.rowSpan === 0 ? groupEnd : Math.min(groupEnd, rowIndex + cell.rowSpan);
|
|
65
|
+
for (let offset = 0; offset < cell.colSpan; offset++)
|
|
66
|
+
occupiedUntil[column + offset] = spanEnd;
|
|
67
|
+
column += cell.colSpan;
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
return cells;
|
|
71
|
+
}
|
|
72
|
+
/** Convert editor-only colwidth arrays to numeric HTML widths in an already sanitized DOM. */
|
|
73
|
+
function normalizeTranslationTableWidths(root) {
|
|
74
|
+
const document = 'createElement' in root ? root : root.ownerDocument;
|
|
75
|
+
root.querySelectorAll('table').forEach(table => {
|
|
76
|
+
const columns = tableColumns(table);
|
|
77
|
+
const widths = columns.map(col => filterTranslationColumnWidth(col.getAttribute('width')));
|
|
78
|
+
const cells = tableCellColumns(table);
|
|
79
|
+
const columnCount = Math.max(0, ...cells.map(({ cell, column }) => column + cell.colSpan));
|
|
80
|
+
while (widths.length < columnCount)
|
|
81
|
+
widths.push(null);
|
|
82
|
+
// The first measured width in each logical column wins. Zero marks a column the editor left
|
|
83
|
+
// unmeasured, so it never clears a saved column width.
|
|
84
|
+
const cellWidths = [];
|
|
85
|
+
for (const { cell, column } of cells) {
|
|
86
|
+
parseCellWidths(cell)?.forEach((width, offset) => {
|
|
87
|
+
if (width > 0 && !cellWidths[column + offset])
|
|
88
|
+
cellWidths[column + offset] = width;
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
cellWidths.forEach((width, index) => {
|
|
92
|
+
widths[index] = String(width);
|
|
93
|
+
});
|
|
94
|
+
if (!widths.some(width => width !== null))
|
|
95
|
+
return;
|
|
96
|
+
let group = Array.from(table.children).filter(child => child.tagName === 'COLGROUP').at(-1);
|
|
97
|
+
if (!group) {
|
|
98
|
+
group = document.createElement('colgroup');
|
|
99
|
+
table.insertBefore(group, table.firstChild);
|
|
100
|
+
}
|
|
101
|
+
widths.forEach((width, columnIndex) => {
|
|
102
|
+
let col = columns[columnIndex];
|
|
103
|
+
if (!col) {
|
|
104
|
+
col = document.createElement('col');
|
|
105
|
+
group.appendChild(col);
|
|
106
|
+
}
|
|
107
|
+
if (width)
|
|
108
|
+
col.setAttribute('width', width);
|
|
109
|
+
else
|
|
110
|
+
col.removeAttribute('width');
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
root.querySelectorAll('*').forEach(element => {
|
|
114
|
+
// Angular strips colwidth and inline styles. Persist only validated standard column widths,
|
|
115
|
+
// which survive sanitization and can reconstruct the editor's sizing without trusting HTML.
|
|
116
|
+
element.removeAttribute('colwidth');
|
|
117
|
+
const width = filterTranslationColumnWidth(element.getAttribute('width'), element.tagName);
|
|
118
|
+
if (width)
|
|
119
|
+
element.setAttribute('width', width);
|
|
120
|
+
else
|
|
121
|
+
element.removeAttribute('width');
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
/** Rebuild the logical column slice for a cell, including colspan and preceding rowspans. */
|
|
125
|
+
function readTranslationCellWidths(element) {
|
|
126
|
+
const table = element.closest('table');
|
|
127
|
+
if (!table)
|
|
128
|
+
return null;
|
|
129
|
+
const match = tableCellColumns(table).find(({ cell }) => cell === element);
|
|
130
|
+
if (!match)
|
|
131
|
+
return null;
|
|
132
|
+
const widths = tableColumns(table).map(col => Number(filterTranslationColumnWidth(col.getAttribute('width'))) || 0);
|
|
133
|
+
const slice = Array.from({ length: match.cell.colSpan }, (_, offset) => widths[match.column + offset] ?? 0);
|
|
134
|
+
return slice.some(width => width > 0) ? slice : null;
|
|
135
|
+
}
|
|
136
|
+
const alertClasses = ['alert', 'alert-primary', 'alert-secondary', 'alert-success',
|
|
137
|
+
'alert-danger', 'alert-warning', 'alert-info', 'alert-light', 'alert-dark'];
|
|
138
|
+
const tableColors = ['table-primary', 'table-secondary', 'table-success', 'table-danger',
|
|
139
|
+
'table-warning', 'table-info', 'table-light', 'table-dark', 'table-active'];
|
|
140
|
+
exports.defaultTranslationHtmlClasses = {
|
|
141
|
+
div: alertClasses,
|
|
142
|
+
p: alertClasses,
|
|
143
|
+
table: ['table', 'table-bordered', 'table-borderless', 'table-sm', 'table-striped',
|
|
144
|
+
'table-hover', ...tableColors],
|
|
145
|
+
thead: tableColors,
|
|
146
|
+
tbody: ['table-group-divider', ...tableColors],
|
|
147
|
+
tfoot: tableColors,
|
|
148
|
+
tr: tableColors,
|
|
149
|
+
th: tableColors,
|
|
150
|
+
td: tableColors
|
|
151
|
+
};
|
|
152
|
+
/** Merge exact, element-specific hook additions with core's supported classes. No wildcards. */
|
|
153
|
+
function getTranslationHtmlClasses(additions) {
|
|
154
|
+
const policy = {};
|
|
155
|
+
for (const tag of exports.translationHtmlTags) {
|
|
156
|
+
const extra = additions && typeof additions === 'object'
|
|
157
|
+
&& Object.prototype.hasOwnProperty.call(additions, tag)
|
|
158
|
+
? additions[tag] : undefined;
|
|
159
|
+
policy[tag] = [...new Set([
|
|
160
|
+
...(exports.defaultTranslationHtmlClasses[tag] ?? []),
|
|
161
|
+
...(Array.isArray(extra) ? extra.filter((value) => typeof value === 'string' && /^[a-zA-Z_][a-zA-Z0-9_-]*$/.test(value)) : [])
|
|
162
|
+
])];
|
|
163
|
+
}
|
|
164
|
+
return policy;
|
|
165
|
+
}
|
|
166
|
+
function filterTranslationHtmlClasses(value, tag, policy) {
|
|
167
|
+
const allowed = new Set(policy[tag.toLowerCase()] ?? []);
|
|
168
|
+
return [...new Set((value ?? '').split(/\s+/).filter(token => allowed.has(token)))].join(' ');
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24taHRtbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cmFuc2xhdGlvbi1odG1sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXlCQSxvRUFJQztBQXVDRCwwRUEyQ0M7QUFHRCw4REFRQztBQXFCRCw4REFhQztBQUVELG9FQUtDO0FBaEtZLFFBQUEsbUJBQW1CLEdBQUc7SUFDakMsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUs7SUFDakUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQ3BELFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUk7SUFDakMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLO0NBQ3hFLENBQUM7QUFFVyxRQUFBLHlCQUF5QixHQUFHO0lBQ3ZDLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU07Q0FDMUYsQ0FBQztBQUVGLG1HQUFtRztBQUN0RixRQUFBLDhCQUE4QixHQUFHO0lBQzVDLFlBQVksRUFBRSwyQkFBbUI7SUFDakMsWUFBWSxFQUFFLGlDQUF5QjtJQUN2QyxlQUFlLEVBQUUsS0FBSztJQUN0QixlQUFlLEVBQUUsS0FBSztJQUN0QixXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUM7SUFDdEIsV0FBVyxFQUFFLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQztDQUNyRixDQUFDO0FBRUYsb0dBQW9HO0FBQ3BHLFNBQWdCLDRCQUE0QixDQUFDLEtBQW9CLEVBQUUsR0FBRyxHQUFHLEtBQUs7SUFDNUUsSUFBSSxHQUFHLENBQUMsV0FBVyxFQUFFLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFBRSxPQUFPLElBQUksQ0FBQztJQUNwRixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUIsT0FBTyxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUM1RCxDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsS0FBdUI7SUFDM0MsNEZBQTRGO0lBQzVGLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sS0FBSyxVQUFVLENBQUM7U0FDNUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQXNCLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0RixDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUMsSUFBMEI7SUFDakQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMxQyxJQUFJLENBQUMsR0FBRztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ3RCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUIsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQzlGLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsa0VBQWtFO0lBQ2xFLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUMxRixDQUFDO0FBRUQsMEdBQTBHO0FBQzFHLFNBQVMsZ0JBQWdCLENBQUMsS0FBdUI7SUFDL0MsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsTUFBTSxhQUFhLEdBQWEsRUFBRSxDQUFDO0lBQ25DLE1BQU0sS0FBSyxHQUEwRCxFQUFFLENBQUM7SUFDeEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsRUFBRTtRQUM3QixJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDZixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDekMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxRQUFRO2dCQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ3pELEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUM3QixJQUFJLFFBQVEsR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1lBQzVCLE9BQU8sUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLGFBQWEsS0FBSyxHQUFHLENBQUMsYUFBYTtnQkFBRSxRQUFRLEVBQUUsQ0FBQztZQUNoRyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzVGLEtBQUssSUFBSSxNQUFNLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRTtnQkFBRSxhQUFhLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQztZQUMvRixNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUN6QixDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCw4RkFBOEY7QUFDOUYsU0FBZ0IsK0JBQStCLENBQUMsSUFBNEI7SUFDMUUsTUFBTSxRQUFRLEdBQUcsZUFBZSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQ3JFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDN0MsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sTUFBTSxHQUF5QixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsNEJBQTRCLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakgsTUFBTSxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUMzRixPQUFPLE1BQU0sQ0FBQyxNQUFNLEdBQUcsV0FBVztZQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEQsNEZBQTRGO1FBQzVGLHVEQUF1RDtRQUN2RCxNQUFNLFVBQVUsR0FBYSxFQUFFLENBQUM7UUFDaEMsS0FBSyxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3JDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUU7Z0JBQy9DLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO29CQUFFLFVBQVUsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ3JGLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDbEMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQztZQUFFLE9BQU87UUFDbEQsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sS0FBSyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1RixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxLQUFLLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMzQyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUNELE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLEVBQUU7WUFDcEMsSUFBSSxHQUFHLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDVCxHQUFHLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDcEMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN6QixDQUFDO1lBQ0QsSUFBSSxLQUFLO2dCQUFFLEdBQUcsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDOztnQkFDdkMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUMzQyw0RkFBNEY7UUFDNUYsNEZBQTRGO1FBQzVGLE9BQU8sQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEMsTUFBTSxLQUFLLEdBQUcsNEJBQTRCLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0YsSUFBSSxLQUFLO1lBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7O1lBQzNDLE9BQU8sQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsNkZBQTZGO0FBQzdGLFNBQWdCLHlCQUF5QixDQUFDLE9BQW9CO0lBQzVELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkMsSUFBSSxDQUFDLEtBQUs7UUFBRSxPQUFPLElBQUksQ0FBQztJQUN4QixNQUFNLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDLENBQUM7SUFDM0UsSUFBSSxDQUFDLEtBQUs7UUFBRSxPQUFPLElBQUksQ0FBQztJQUN4QixNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLDRCQUE0QixDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3BILE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzVHLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDdkQsQ0FBQztBQUVELE1BQU0sWUFBWSxHQUFHLENBQUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxlQUFlO0lBQ2hGLGNBQWMsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxZQUFZLENBQUMsQ0FBQztBQUM5RSxNQUFNLFdBQVcsR0FBRyxDQUFDLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsY0FBYztJQUN0RixlQUFlLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFFakUsUUFBQSw2QkFBNkIsR0FBMkI7SUFDbkUsR0FBRyxFQUFFLFlBQVk7SUFDakIsQ0FBQyxFQUFFLFlBQVk7SUFDZixLQUFLLEVBQUUsQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLGVBQWU7UUFDaEYsYUFBYSxFQUFFLEdBQUcsV0FBVyxDQUFDO0lBQ2hDLEtBQUssRUFBRSxXQUFXO0lBQ2xCLEtBQUssRUFBRSxDQUFDLHFCQUFxQixFQUFFLEdBQUcsV0FBVyxDQUFDO0lBQzlDLEtBQUssRUFBRSxXQUFXO0lBQ2xCLEVBQUUsRUFBRSxXQUFXO0lBQ2YsRUFBRSxFQUFFLFdBQVc7SUFDZixFQUFFLEVBQUUsV0FBVztDQUNoQixDQUFDO0FBRUYsZ0dBQWdHO0FBQ2hHLFNBQWdCLHlCQUF5QixDQUFDLFNBQW1CO0lBQzNELE1BQU0sTUFBTSxHQUEyQixFQUFFLENBQUM7SUFDMUMsS0FBSyxNQUFNLEdBQUcsSUFBSSwyQkFBbUIsRUFBRSxDQUFDO1FBQ3RDLE1BQU0sS0FBSyxHQUFHLFNBQVMsSUFBSSxPQUFPLFNBQVMsS0FBSyxRQUFRO2VBQ25ELE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDO1lBQ3ZELENBQUMsQ0FBRSxTQUFxQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDNUQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQztnQkFDeEIsR0FBRyxDQUFDLHFDQUE2QixDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDN0MsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQW1CLEVBQUUsQ0FDakUsT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLDJCQUEyQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7YUFDOUUsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVELFNBQWdCLDRCQUE0QixDQUMxQyxLQUFnQyxFQUFFLEdBQVcsRUFBRSxNQUE4QjtJQUU3RSxNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDekQsT0FBTyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2hHLENBQUMifQ==
|
package/package.json
CHANGED