@worktile/theia 15.3.0 → 15.3.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.
- package/constants/default.d.ts +1 -1
- package/esm2020/constants/default.mjs +2 -2
- package/esm2020/interfaces/image.mjs +1 -1
- package/esm2020/plugins/image/image.editor.mjs +5 -2
- package/esm2020/plugins/link/edit/link-edit.component.mjs +3 -5
- package/esm2020/plugins/table/components/td/td.component.mjs +3 -9
- package/esm2020/plugins/table/table.service.mjs +5 -4
- package/esm2020/plugins/table/table.store.mjs +13 -35
- package/esm2020/plugins/table/utils/get-min-max-cell-index.mjs +8 -1
- package/fesm2015/worktile-theia.mjs +26 -52
- package/fesm2015/worktile-theia.mjs.map +1 -1
- package/fesm2020/worktile-theia.mjs +29 -51
- package/fesm2020/worktile-theia.mjs.map +1 -1
- package/interfaces/image.d.ts +1 -0
- package/package.json +1 -1
- package/plugins/link/edit/link-edit.component.d.ts +0 -1
- package/plugins/table/table.store.d.ts +0 -7
|
@@ -68,7 +68,8 @@ export class TableService {
|
|
|
68
68
|
this.openToolbar(origin, element);
|
|
69
69
|
}
|
|
70
70
|
getOrigin(origin) {
|
|
71
|
-
|
|
71
|
+
const focusCellElement = this.tableStore.focusCellElement;
|
|
72
|
+
if ((origin instanceof HTMLTableCellElement || focusCellElement) && origin.tagName !== 'TH') {
|
|
72
73
|
const { selectedRowsIndex, selectedColumnsIndex, focusCellPath, isSelectedTable, focusCellElement } = this.tableStore;
|
|
73
74
|
const [row, col] = focusCellPath.slice(-2);
|
|
74
75
|
const tableElement = focusCellElement.closest('.the-table-container');
|
|
@@ -98,7 +99,7 @@ export class TableService {
|
|
|
98
99
|
* @param tbody tbody元素
|
|
99
100
|
*/
|
|
100
101
|
handleKeydownForPointerSelection(e, tbody) {
|
|
101
|
-
const cell = tbody?.querySelector('.focused-cell');
|
|
102
|
+
const cell = tbody?.querySelector('.focused-cell') || this.tableStore.focusCellElement;
|
|
102
103
|
if (cell) {
|
|
103
104
|
this.tableStore.pointerSelection = true;
|
|
104
105
|
this.tableStore.selectCellStart(cell, this.tableStore.editor);
|
|
@@ -111,7 +112,7 @@ export class TableService {
|
|
|
111
112
|
*/
|
|
112
113
|
handleKeydownForAreaSelection(e, tbody) {
|
|
113
114
|
const isTable = TableEditor.isActive(this.tableStore.editor);
|
|
114
|
-
const cell = tbody?.querySelector('.focused-cell');
|
|
115
|
+
const cell = tbody?.querySelector('.focused-cell') || this.tableStore.focusCellElement;
|
|
115
116
|
if (isTable && cell) {
|
|
116
117
|
this.tableStore.areaSelectionStart(cell, this.tableStore.editor);
|
|
117
118
|
this.tableStore.areaSelection = true;
|
|
@@ -146,4 +147,4 @@ TableService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version
|
|
|
146
147
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: TableService, decorators: [{
|
|
147
148
|
type: Injectable
|
|
148
149
|
}], ctorParameters: function () { return [{ type: i1.ThyPopover }, { type: i2.Overlay }, { type: i3.TableStore }, { type: i0.NgZone }, { type: i4.TheContextService }]; } });
|
|
149
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9wbHVnaW5zL3RhYmxlL3RhYmxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUduRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR3hELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBRXhGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFHN0MsTUFBTSxPQUFPLFlBQVk7SUFhckIsSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUM7SUFDaEUsQ0FBQztJQUVELFlBQ1ksVUFBc0IsRUFDdEIsT0FBZ0IsRUFDaEIsVUFBc0IsRUFDdEIsTUFBYyxFQUNkLGlCQUFvQztRQUpwQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFDaEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQXJCaEQscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBRXpCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBRXBCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBRXZCLGNBQVMsR0FBaUIsU0FBUyxDQUFDO1FBRXBDLFdBQU0sR0FBRyxDQUFDLENBQUM7SUFjUixDQUFDO0lBRUksV0FBVyxDQUFDLE1BQW1CLEVBQUUsWUFBMEI7UUFD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Q0FBQztZQUNqRSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7U0FDeEM7SUFDTCxDQUFDO0lBRU0sc0JBQXNCO1FBQ3pCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRTtZQUNsQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztTQUM1QztJQUNMLENBQUM7SUFFTSxtQkFBbUI7UUFDdEIsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRTtZQUMvQixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7WUFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN6RDtJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0kseUJBQXlCLENBQUMsQ0FBZ0I7UUFDN0MsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUN6RCxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2xFLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUN0QjtJQUNMLENBQUM7O3lHQW5KUSxZQUFZOzZHQUFaLFlBQVk7MkZBQVosWUFBWTtrQkFEeEIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE92ZXJsYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRoeVBsYWNlbWVudCB9IGZyb20gJ25neC10ZXRoeXMvY29yZSc7XG5pbXBvcnQgeyBUaHlQb3BvdmVyLCBUaHlQb3BvdmVyUmVmIH0gZnJvbSAnbmd4LXRldGh5cy9wb3BvdmVyJztcbmltcG9ydCB7IHNraXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBpc0NvbG9yUGFuZWwgfSBmcm9tICcuLi8uLi91dGlscy9jb2xvci1waWNrZXInO1xuaW1wb3J0IHsgVGFibGVFbGVtZW50IH0gZnJvbSAnLi4vLi4vY3VzdG9tLXR5cGVzJztcbmltcG9ydCB7IFRoZUNvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vL3NlcnZpY2VzL2NvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBUaGVUYWJsZVRvb2xiYXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdG9vbGJhci90YWJsZS10b29sYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWJsZVN0b3JlIH0gZnJvbSAnLi90YWJsZS5zdG9yZSc7XG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yIH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBpc0tleUhvdGtleSB9IGZyb20gJ2lzLWhvdGtleSc7XG5pbXBvcnQgeyBUYWJsZUVkaXRvciB9IGZyb20gJy4vdGFibGUuZWRpdG9yJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRhYmxlU2VydmljZSB7XG4gICAgYmFja2Ryb3BDbG9zYWJsZSA9IGZhbHNlO1xuXG4gICAgaGFzQmFja2Ryb3AgPSBmYWxzZTtcblxuICAgIGluc2lkZUNsb3NhYmxlID0gZmFsc2U7XG5cbiAgICBwbGFjZW1lbnQ6IFRoeVBsYWNlbWVudCA9ICd0b3BMZWZ0JztcblxuICAgIG9mZnNldCA9IDg7XG5cbiAgICB0b29sYmFyUmVmOiBUaHlQb3BvdmVyUmVmPGFueT47XG5cbiAgICBnZXQgaXNPcGVuZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvb2xiYXJSZWYgJiYgdGhpcy50b29sYmFyUmVmLmNvbXBvbmVudEluc3RhbmNlO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHRoeVBvcG92ZXI6IFRoeVBvcG92ZXIsXG4gICAgICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcbiAgICAgICAgcHJpdmF0ZSB0YWJsZVN0b3JlOiBUYWJsZVN0b3JlLFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIHRoZUNvbnRleHRTZXJ2aWNlOiBUaGVDb250ZXh0U2VydmljZVxuICAgICkge31cblxuICAgIHByaXZhdGUgb3BlblRvb2xiYXIob3JpZ2luOiBIVE1MRWxlbWVudCwgdGFibGVFbGVtZW50OiBUYWJsZUVsZW1lbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuZWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRvb2xiYXJSZWYuY29udGFpbmVySW5zdGFuY2UuY29uZmlnLm9yaWdpbiA9PT0gb3JpZ2luKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy50b29sYmFyUmVmLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50b29sYmFyUmVmID0gdGhpcy50aHlQb3BvdmVyLm9wZW4oVGhlVGFibGVUb29sYmFyQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBpbml0aWFsU3RhdGU6IHtcbiAgICAgICAgICAgICAgICB0YWJsZVN0b3JlOiB0aGlzLnRhYmxlU3RvcmUsXG4gICAgICAgICAgICAgICAgdGFibGVFbGVtZW50XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdmlld0NvbnRhaW5lclJlZjogdGhpcy50aGVDb250ZXh0U2VydmljZS5nZXRPcHRpb25zKCkudmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgICAgIG9yaWdpbjogdGhpcy5nZXRPcmlnaW4ob3JpZ2luKSxcbiAgICAgICAgICAgIGJhY2tkcm9wQ2xvc2FibGU6IHRoaXMuYmFja2Ryb3BDbG9zYWJsZSxcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6ICd0aGUtcGx1Z2luLXRvb2xiYXItcG9wb3ZlcicsXG4gICAgICAgICAgICBwbGFjZW1lbnQ6IHRoaXMucGxhY2VtZW50LFxuICAgICAgICAgICAgb2Zmc2V0OiB0aGlzLm9mZnNldCxcbiAgICAgICAgICAgIGhhc0JhY2tkcm9wOiB0aGlzLmhhc0JhY2tkcm9wLFxuICAgICAgICAgICAgaW5zaWRlQ2xvc2FibGU6IHRoaXMuaW5zaWRlQ2xvc2FibGUsXG4gICAgICAgICAgICBtaW5XaWR0aDogMCxcbiAgICAgICAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCksXG4gICAgICAgICAgICBtYW51YWxDbG9zdXJlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodGhpcy50b29sYmFyUmVmKSB7XG4gICAgICAgICAgICB0aGlzLnRvb2xiYXJSZWZcbiAgICAgICAgICAgICAgICAuZ2V0T3ZlcmxheVJlZigpXG4gICAgICAgICAgICAgICAgLm91dHNpZGVQb2ludGVyRXZlbnRzKClcbiAgICAgICAgICAgICAgICAucGlwZShza2lwKDEpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNDb2xvclBhbmVsKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMudG9vbGJhclJlZi5nZXRPdmVybGF5UmVmKCkuaG9zdEVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZVRvb2xiYXIoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYWZ0ZXJTZWxlY3RlZENlbGxzKG9yaWdpbjogSFRNTEVsZW1lbnQsIGVsZW1lbnQ6IFRhYmxlRWxlbWVudCkge1xuICAgICAgICB0aGlzLm9wZW5Ub29sYmFyKG9yaWdpbiwgZWxlbWVudCk7XG4gICAgfVxuXG4gICAgZ2V0T3JpZ2luKG9yaWdpbjogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIGlmIChvcmlnaW4gaW5zdGFuY2VvZiBIVE1MVGFibGVDZWxsRWxlbWVudCAmJiBvcmlnaW4udGFnTmFtZSAhPT0gJ1RIJykge1xuICAgICAgICAgICAgY29uc3QgeyBzZWxlY3RlZFJvd3NJbmRleCwgc2VsZWN0ZWRDb2x1bW5zSW5kZXgsIGZvY3VzQ2VsbFBhdGgsIGlzU2VsZWN0ZWRUYWJsZSwgZm9jdXNDZWxsRWxlbWVudCB9ID0gdGhpcy50YWJsZVN0b3JlO1xuICAgICAgICAgICAgY29uc3QgW3JvdywgY29sXSA9IGZvY3VzQ2VsbFBhdGguc2xpY2UoLTIpO1xuICAgICAgICAgICAgY29uc3QgdGFibGVFbGVtZW50ID0gZm9jdXNDZWxsRWxlbWVudC5jbG9zZXN0KCcudGhlLXRhYmxlLWNvbnRhaW5lcicpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgaWYgKGlzU2VsZWN0ZWRUYWJsZSAmJiBjb2wgPT09IDAgJiYgcm93ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhYmxlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcudGhlLXRhYmxlLWNvcm5lci1jb250cm9scycpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkQ29sdW1uc0luZGV4Lmxlbmd0aCA+IDAgJiYgcm93ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhYmxlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudGhlLXRhYmxlLWNvbC1jb250cm9scycpW2NvbF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRSb3dzSW5kZXgubGVuZ3RoID4gMCAmJiBjb2wgPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGFibGVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50aGUtdGFibGUtcm93LWNvbnRyb2xzLWJ1dHRvbi13cmFwJylbcm93XSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3JpZ2luO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbG9zZVRvb2xiYXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzT3BlbmVkKSB7XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudG9vbGJhclJlZi5jbG9zZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50b29sYmFyUmVmLmFmdGVyQ2xvc2VkKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDliKTmlq3mmK/lkKbop6blj5HkuobngrnpgInvvIzlubblpITnkIbngrnpgInnirbmgIFcbiAgICAgKiBAcGFyYW0gZSDkuovku7blr7nosaFcbiAgICAgKiBAcGFyYW0gdGJvZHkgdGJvZHnlhYPntKBcbiAgICAgKi9cbiAgICBwdWJsaWMgaGFuZGxlS2V5ZG93bkZvclBvaW50ZXJTZWxlY3Rpb24oZTogS2V5Ym9hcmRFdmVudCwgdGJvZHk6IEhUTUxFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IGNlbGwgPSB0Ym9keT8ucXVlcnlTZWxlY3RvcignLmZvY3VzZWQtY2VsbCcpIGFzIEhUTUxUYWJsZUNlbGxFbGVtZW50O1xuICAgICAgICBpZiAoY2VsbCkge1xuICAgICAgICAgICAgdGhpcy50YWJsZVN0b3JlLnBvaW50ZXJTZWxlY3Rpb24gPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy50YWJsZVN0b3JlLnNlbGVjdENlbGxTdGFydChjZWxsLCB0aGlzLnRhYmxlU3RvcmUuZWRpdG9yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOWIpOaWreaYr+WQpuinpuWPkeS6huWMuuWfn+mAieaLqe+8jOW5tuWkhOeQhuWMuuWfn+mAieaLqeeKtuaAgVxuICAgICAqIEBwYXJhbSBlIOS6i+S7tuWvueixoVxuICAgICAqIEBwYXJhbSB0Ym9keSB0Ym9keeWFg+e0oFxuICAgICAqL1xuICAgIHB1YmxpYyBoYW5kbGVLZXlkb3duRm9yQXJlYVNlbGVjdGlvbihlOiBLZXlib2FyZEV2ZW50LCB0Ym9keTogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgaXNUYWJsZSA9IFRhYmxlRWRpdG9yLmlzQWN0aXZlKHRoaXMudGFibGVTdG9yZS5lZGl0b3IpO1xuICAgICAgICBjb25zdCBjZWxsID0gdGJvZHk/LnF1ZXJ5U2VsZWN0b3IoJy5mb2N1c2VkLWNlbGwnKSBhcyBIVE1MVGFibGVDZWxsRWxlbWVudDtcbiAgICAgICAgaWYgKGlzVGFibGUgJiYgY2VsbCkge1xuICAgICAgICAgICAgdGhpcy50YWJsZVN0b3JlLmFyZWFTZWxlY3Rpb25TdGFydChjZWxsLCB0aGlzLnRhYmxlU3RvcmUuZWRpdG9yKTtcbiAgICAgICAgICAgIHRoaXMudGFibGVTdG9yZS5hcmVhU2VsZWN0aW9uID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBjYW5jZWxQb2ludGVyU2VsZWN0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy50YWJsZVN0b3JlLnBvaW50ZXJTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIHRoaXMudGFibGVTdG9yZS5wb2ludGVyU2VsZWN0aW9uID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY2FuY2VsQXJlYVNlbGVjdGlvbigpIHtcbiAgICAgICAgaWYgKHRoaXMudGFibGVTdG9yZS5hcmVhU2VsZWN0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuYXJlYVNlbGVjdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy50YWJsZVN0b3JlLnNlbGVjdENlbGxFbmQodGhpcy50YWJsZVN0b3JlLmVkaXRvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDov5vooYzljLrln5/pgInmi6nml7bvvIzpmLvmraLpu5jorqTnmoTpgInljLrkuovku7ZcbiAgICAgKiBAcGFyYW0gZSDkuovku7blr7nosaFcbiAgICAgKiBAcGFyYW0gZWRpdG9yIOe8lui+keWZqOWvueixoVxuICAgICAqL1xuICAgIHB1YmxpYyBzZWxlY3RTdGFydFByZXZlbnREZWZhdWx0KGU6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgY29uc3QgaXNSZWFkb25seSA9IEFuZ3VsYXJFZGl0b3IuaXNSZWFkb25seSh0aGlzLnRhYmxlU3RvcmUuZWRpdG9yKTtcbiAgICAgICAgY29uc3QgY2VsbHMgPSB0aGlzLnRhYmxlU3RvcmUuZ2V0U2VsZWN0ZWRDZWxsUG9zaXRpb25zKCk7XG4gICAgICAgIGlmICghaXNSZWFkb25seSAmJiB0aGlzLnRhYmxlU3RvcmUuYXJlYVNlbGVjdGlvbiAmJiBjZWxscy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
150
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9wbHVnaW5zL3RhYmxlL3RhYmxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUduRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR3hELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBRXhGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFHN0MsTUFBTSxPQUFPLFlBQVk7SUFhckIsSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUM7SUFDaEUsQ0FBQztJQUVELFlBQ1ksVUFBc0IsRUFDdEIsT0FBZ0IsRUFDaEIsVUFBc0IsRUFDdEIsTUFBYyxFQUNkLGlCQUFvQztRQUpwQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFDaEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQXJCaEQscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBRXpCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBRXBCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBRXZCLGNBQVMsR0FBaUIsU0FBUyxDQUFDO1FBRXBDLFdBQU0sR0FBRyxDQUFDLENBQUM7SUFjUixDQUFDO0lBRUksV0FBVyxDQUFDLE1BQW1CLEVBQUUsWUFBMEI7UUFD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fSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRoeVBsYWNlbWVudCB9IGZyb20gJ25neC10ZXRoeXMvY29yZSc7XG5pbXBvcnQgeyBUaHlQb3BvdmVyLCBUaHlQb3BvdmVyUmVmIH0gZnJvbSAnbmd4LXRldGh5cy9wb3BvdmVyJztcbmltcG9ydCB7IHNraXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBpc0NvbG9yUGFuZWwgfSBmcm9tICcuLi8uLi91dGlscy9jb2xvci1waWNrZXInO1xuaW1wb3J0IHsgVGFibGVFbGVtZW50IH0gZnJvbSAnLi4vLi4vY3VzdG9tLXR5cGVzJztcbmltcG9ydCB7IFRoZUNvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vL3NlcnZpY2VzL2NvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBUaGVUYWJsZVRvb2xiYXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdG9vbGJhci90YWJsZS10b29sYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWJsZVN0b3JlIH0gZnJvbSAnLi90YWJsZS5zdG9yZSc7XG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yIH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBUYWJsZUVkaXRvciB9IGZyb20gJy4vdGFibGUuZWRpdG9yJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRhYmxlU2VydmljZSB7XG4gICAgYmFja2Ryb3BDbG9zYWJsZSA9IGZhbHNlO1xuXG4gICAgaGFzQmFja2Ryb3AgPSBmYWxzZTtcblxuICAgIGluc2lkZUNsb3NhYmxlID0gZmFsc2U7XG5cbiAgICBwbGFjZW1lbnQ6IFRoeVBsYWNlbWVudCA9ICd0b3BMZWZ0JztcblxuICAgIG9mZnNldCA9IDg7XG5cbiAgICB0b29sYmFyUmVmOiBUaHlQb3BvdmVyUmVmPGFueT47XG5cbiAgICBnZXQgaXNPcGVuZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvb2xiYXJSZWYgJiYgdGhpcy50b29sYmFyUmVmLmNvbXBvbmVudEluc3RhbmNlO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHRoeVBvcG92ZXI6IFRoeVBvcG92ZXIsXG4gICAgICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcbiAgICAgICAgcHJpdmF0ZSB0YWJsZVN0b3JlOiBUYWJsZVN0b3JlLFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIHRoZUNvbnRleHRTZXJ2aWNlOiBUaGVDb250ZXh0U2VydmljZVxuICAgICkge31cblxuICAgIHByaXZhdGUgb3BlblRvb2xiYXIob3JpZ2luOiBIVE1MRWxlbWVudCwgdGFibGVFbGVtZW50OiBUYWJsZUVsZW1lbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuZWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRvb2xiYXJSZWYuY29udGFpbmVySW5zdGFuY2UuY29uZmlnLm9yaWdpbiA9PT0gb3JpZ2luKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy50b29sYmFyUmVmLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50b29sYmFyUmVmID0gdGhpcy50aHlQb3BvdmVyLm9wZW4oVGhlVGFibGVUb29sYmFyQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBpbml0aWFsU3RhdGU6IHtcbiAgICAgICAgICAgICAgICB0YWJsZVN0b3JlOiB0aGlzLnRhYmxlU3RvcmUsXG4gICAgICAgICAgICAgICAgdGFibGVFbGVtZW50XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdmlld0NvbnRhaW5lclJlZjogdGhpcy50aGVDb250ZXh0U2VydmljZS5nZXRPcHRpb25zKCkudmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgICAgIG9yaWdpbjogdGhpcy5nZXRPcmlnaW4ob3JpZ2luKSxcbiAgICAgICAgICAgIGJhY2tkcm9wQ2xvc2FibGU6IHRoaXMuYmFja2Ryb3BDbG9zYWJsZSxcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6ICd0aGUtcGx1Z2luLXRvb2xiYXItcG9wb3ZlcicsXG4gICAgICAgICAgICBwbGFjZW1lbnQ6IHRoaXMucGxhY2VtZW50LFxuICAgICAgICAgICAgb2Zmc2V0OiB0aGlzLm9mZnNldCxcbiAgICAgICAgICAgIGhhc0JhY2tkcm9wOiB0aGlzLmhhc0JhY2tkcm9wLFxuICAgICAgICAgICAgaW5zaWRlQ2xvc2FibGU6IHRoaXMuaW5zaWRlQ2xvc2FibGUsXG4gICAgICAgICAgICBtaW5XaWR0aDogMCxcbiAgICAgICAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCksXG4gICAgICAgICAgICBtYW51YWxDbG9zdXJlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodGhpcy50b29sYmFyUmVmKSB7XG4gICAgICAgICAgICB0aGlzLnRvb2xiYXJSZWZcbiAgICAgICAgICAgICAgICAuZ2V0T3ZlcmxheVJlZigpXG4gICAgICAgICAgICAgICAgLm91dHNpZGVQb2ludGVyRXZlbnRzKClcbiAgICAgICAgICAgICAgICAucGlwZShza2lwKDEpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNDb2xvclBhbmVsKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMudG9vbGJhclJlZi5nZXRPdmVybGF5UmVmKCkuaG9zdEVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZVRvb2xiYXIoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYWZ0ZXJTZWxlY3RlZENlbGxzKG9yaWdpbjogSFRNTEVsZW1lbnQsIGVsZW1lbnQ6IFRhYmxlRWxlbWVudCkge1xuICAgICAgICB0aGlzLm9wZW5Ub29sYmFyKG9yaWdpbiwgZWxlbWVudCk7XG4gICAgfVxuXG4gICAgZ2V0T3JpZ2luKG9yaWdpbjogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIGNvbnN0IGZvY3VzQ2VsbEVsZW1lbnQgPSB0aGlzLnRhYmxlU3RvcmUuZm9jdXNDZWxsRWxlbWVudDtcbiAgICAgICAgaWYgKChvcmlnaW4gaW5zdGFuY2VvZiBIVE1MVGFibGVDZWxsRWxlbWVudCB8fCBmb2N1c0NlbGxFbGVtZW50KSAmJiBvcmlnaW4udGFnTmFtZSAhPT0gJ1RIJykge1xuICAgICAgICAgICAgY29uc3QgeyBzZWxlY3RlZFJvd3NJbmRleCwgc2VsZWN0ZWRDb2x1bW5zSW5kZXgsIGZvY3VzQ2VsbFBhdGgsIGlzU2VsZWN0ZWRUYWJsZSwgZm9jdXNDZWxsRWxlbWVudCB9ID0gdGhpcy50YWJsZVN0b3JlO1xuICAgICAgICAgICAgY29uc3QgW3JvdywgY29sXSA9IGZvY3VzQ2VsbFBhdGguc2xpY2UoLTIpO1xuICAgICAgICAgICAgY29uc3QgdGFibGVFbGVtZW50ID0gZm9jdXNDZWxsRWxlbWVudC5jbG9zZXN0KCcudGhlLXRhYmxlLWNvbnRhaW5lcicpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgaWYgKGlzU2VsZWN0ZWRUYWJsZSAmJiBjb2wgPT09IDAgJiYgcm93ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhYmxlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcudGhlLXRhYmxlLWNvcm5lci1jb250cm9scycpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkQ29sdW1uc0luZGV4Lmxlbmd0aCA+IDAgJiYgcm93ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhYmxlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudGhlLXRhYmxlLWNvbC1jb250cm9scycpW2NvbF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRSb3dzSW5kZXgubGVuZ3RoID4gMCAmJiBjb2wgPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGFibGVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50aGUtdGFibGUtcm93LWNvbnRyb2xzLWJ1dHRvbi13cmFwJylbcm93XSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3JpZ2luO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbG9zZVRvb2xiYXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzT3BlbmVkKSB7XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudG9vbGJhclJlZi5jbG9zZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50b29sYmFyUmVmLmFmdGVyQ2xvc2VkKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDliKTmlq3mmK/lkKbop6blj5HkuobngrnpgInvvIzlubblpITnkIbngrnpgInnirbmgIFcbiAgICAgKiBAcGFyYW0gZSDkuovku7blr7nosaFcbiAgICAgKiBAcGFyYW0gdGJvZHkgdGJvZHnlhYPntKBcbiAgICAgKi9cbiAgICBwdWJsaWMgaGFuZGxlS2V5ZG93bkZvclBvaW50ZXJTZWxlY3Rpb24oZTogS2V5Ym9hcmRFdmVudCwgdGJvZHk6IEhUTUxFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IGNlbGwgPSAodGJvZHk/LnF1ZXJ5U2VsZWN0b3IoJy5mb2N1c2VkLWNlbGwnKSBhcyBIVE1MVGFibGVDZWxsRWxlbWVudCkgfHwgdGhpcy50YWJsZVN0b3JlLmZvY3VzQ2VsbEVsZW1lbnQ7XG4gICAgICAgIGlmIChjZWxsKSB7XG4gICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUucG9pbnRlclNlbGVjdGlvbiA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuc2VsZWN0Q2VsbFN0YXJ0KGNlbGwsIHRoaXMudGFibGVTdG9yZS5lZGl0b3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5Yik5pat5piv5ZCm6Kem5Y+R5LqG5Yy65Z+f6YCJ5oup77yM5bm25aSE55CG5Yy65Z+f6YCJ5oup54q25oCBXG4gICAgICogQHBhcmFtIGUg5LqL5Lu25a+56LGhXG4gICAgICogQHBhcmFtIHRib2R5IHRib2R55YWD57SgXG4gICAgICovXG4gICAgcHVibGljIGhhbmRsZUtleWRvd25Gb3JBcmVhU2VsZWN0aW9uKGU6IEtleWJvYXJkRXZlbnQsIHRib2R5OiBIVE1MRWxlbWVudCkge1xuICAgICAgICBjb25zdCBpc1RhYmxlID0gVGFibGVFZGl0b3IuaXNBY3RpdmUodGhpcy50YWJsZVN0b3JlLmVkaXRvcik7XG4gICAgICAgIGNvbnN0IGNlbGwgPSAodGJvZHk/LnF1ZXJ5U2VsZWN0b3IoJy5mb2N1c2VkLWNlbGwnKSBhcyBIVE1MVGFibGVDZWxsRWxlbWVudCkgfHwgdGhpcy50YWJsZVN0b3JlLmZvY3VzQ2VsbEVsZW1lbnQ7XG4gICAgICAgIGlmIChpc1RhYmxlICYmIGNlbGwpIHtcbiAgICAgICAgICAgIHRoaXMudGFibGVTdG9yZS5hcmVhU2VsZWN0aW9uU3RhcnQoY2VsbCwgdGhpcy50YWJsZVN0b3JlLmVkaXRvcik7XG4gICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuYXJlYVNlbGVjdGlvbiA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY2FuY2VsUG9pbnRlclNlbGVjdGlvbigpIHtcbiAgICAgICAgaWYgKHRoaXMudGFibGVTdG9yZS5wb2ludGVyU2VsZWN0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUucG9pbnRlclNlbGVjdGlvbiA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNhbmNlbEFyZWFTZWxlY3Rpb24oKSB7XG4gICAgICAgIGlmICh0aGlzLnRhYmxlU3RvcmUuYXJlYVNlbGVjdGlvbikge1xuICAgICAgICAgICAgdGhpcy50YWJsZVN0b3JlLmFyZWFTZWxlY3Rpb24gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMudGFibGVTdG9yZS5zZWxlY3RDZWxsRW5kKHRoaXMudGFibGVTdG9yZS5lZGl0b3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6L+b6KGM5Yy65Z+f6YCJ5oup5pe277yM6Zi75q2i6buY6K6k55qE6YCJ5Yy65LqL5Lu2XG4gICAgICogQHBhcmFtIGUg5LqL5Lu25a+56LGhXG4gICAgICogQHBhcmFtIGVkaXRvciDnvJbovpHlmajlr7nosaFcbiAgICAgKi9cbiAgICBwdWJsaWMgc2VsZWN0U3RhcnRQcmV2ZW50RGVmYXVsdChlOiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGlzUmVhZG9ubHkgPSBBbmd1bGFyRWRpdG9yLmlzUmVhZG9ubHkodGhpcy50YWJsZVN0b3JlLmVkaXRvcik7XG4gICAgICAgIGNvbnN0IGNlbGxzID0gdGhpcy50YWJsZVN0b3JlLmdldFNlbGVjdGVkQ2VsbFBvc2l0aW9ucygpO1xuICAgICAgICBpZiAoIWlzUmVhZG9ubHkgJiYgdGhpcy50YWJsZVN0b3JlLmFyZWFTZWxlY3Rpb24gJiYgY2VsbHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
@@ -91,7 +91,7 @@ export class TableStore {
|
|
|
91
91
|
const pos = createTablePosition(editor);
|
|
92
92
|
const rangeCells = getCellPositionsFromRange(index, 0, index + 1, pos.getWidth());
|
|
93
93
|
this.clearLastFocusPath();
|
|
94
|
-
if (this.
|
|
94
|
+
if (this.areaSelection) {
|
|
95
95
|
this.areaSelectRowAndColumn(rangeCells);
|
|
96
96
|
}
|
|
97
97
|
else {
|
|
@@ -103,7 +103,7 @@ export class TableStore {
|
|
|
103
103
|
const pos = createTablePosition(editor);
|
|
104
104
|
const rangeCells = getCellPositionsFromRange(0, index, pos.getHeight(), index + 1);
|
|
105
105
|
this.clearLastFocusPath();
|
|
106
|
-
if (this.
|
|
106
|
+
if (this.areaSelection) {
|
|
107
107
|
this.areaSelectRowAndColumn(rangeCells);
|
|
108
108
|
}
|
|
109
109
|
else {
|
|
@@ -186,7 +186,8 @@ export class TableStore {
|
|
|
186
186
|
this.setSelectedCells(cells, pos);
|
|
187
187
|
}
|
|
188
188
|
selectCellOngoing(cell, editor) {
|
|
189
|
-
|
|
189
|
+
const pos = createTablePosition(editor);
|
|
190
|
+
if (AngularEditor.isReadonly(editor) || !editor.selection || !pos?.table) {
|
|
190
191
|
return;
|
|
191
192
|
}
|
|
192
193
|
let isChanged;
|
|
@@ -210,7 +211,6 @@ export class TableStore {
|
|
|
210
211
|
}
|
|
211
212
|
}
|
|
212
213
|
clearSelectedCells() {
|
|
213
|
-
console.log('clearSelectedCells');
|
|
214
214
|
this.selectedColumnsIndex = [];
|
|
215
215
|
this.selectedRowsIndex = [];
|
|
216
216
|
this.isSelectedTable = false;
|
|
@@ -359,6 +359,12 @@ export class TableStore {
|
|
|
359
359
|
const path = AngularEditor.findPath(editor, node);
|
|
360
360
|
this.isPrepareSelecting = true;
|
|
361
361
|
this.lastFocusCellPath = path;
|
|
362
|
+
if (!this?.anchorCellPath) {
|
|
363
|
+
this.anchorCellPath = path;
|
|
364
|
+
}
|
|
365
|
+
if (!this?.focusCellPath) {
|
|
366
|
+
this.focusCellPath = path;
|
|
367
|
+
}
|
|
362
368
|
if (!this.preFocusCellPath) {
|
|
363
369
|
this.preFocusCellPath = this.anchorCellPath;
|
|
364
370
|
}
|
|
@@ -382,42 +388,14 @@ export class TableStore {
|
|
|
382
388
|
this.focusCell(currentCellPath);
|
|
383
389
|
this.selectCells(this.editor);
|
|
384
390
|
}
|
|
385
|
-
/**
|
|
386
|
-
* 判断选择整列/整行时是否符合区域选择规则
|
|
387
|
-
* @param type 选择类型
|
|
388
|
-
* @param cells 本次选择的单元格
|
|
389
|
-
* @returns 是否符合区域选择规则
|
|
390
|
-
*/
|
|
391
|
-
isAreaSelectionByType(type, cells) {
|
|
392
|
-
if (!this.focusCellPath) {
|
|
393
|
-
return false;
|
|
394
|
-
}
|
|
395
|
-
const selectedCells = this.getSelectedCellPositions();
|
|
396
|
-
const sortRows = cells.map(item => item.row).sort((m, n) => m - n);
|
|
397
|
-
const sortCols = cells.map(item => item.col).sort((m, n) => m - n);
|
|
398
|
-
const startRow = sortRows[0];
|
|
399
|
-
const startCol = sortCols[0];
|
|
400
|
-
const [row, col] = this.focusCellPath.slice(-2);
|
|
401
|
-
if (type === 'row') {
|
|
402
|
-
return this.areaSelection && selectedCells.length === 0 && row !== startRow;
|
|
403
|
-
}
|
|
404
|
-
if (type === 'col') {
|
|
405
|
-
return this.areaSelection && selectedCells.length === 0 && col !== startCol;
|
|
406
|
-
}
|
|
407
|
-
}
|
|
408
391
|
/**
|
|
409
392
|
* 处理区域选择启用时选择整行/整列
|
|
410
393
|
* @param cells 选择的单元格
|
|
411
394
|
*/
|
|
412
395
|
areaSelectRowAndColumn(cells) {
|
|
413
396
|
const pos = createTablePosition(this.editor);
|
|
414
|
-
const
|
|
415
|
-
|
|
416
|
-
// 处理仅聚焦单元格但当前没有已选中的单元格时
|
|
417
|
-
if (selectedCells.length === 0) {
|
|
418
|
-
const [row, col] = this.focusCellPath.slice(-2);
|
|
419
|
-
selectCells = [{ row, col }, ...cells];
|
|
420
|
-
}
|
|
397
|
+
const [row, col] = this.focusCellPath.slice(-2);
|
|
398
|
+
const selectCells = [{ row, col }, ...cells];
|
|
421
399
|
const sortRows = selectCells.map(item => item.row).sort((m, n) => m - n);
|
|
422
400
|
const sortCols = selectCells.map(item => item.col).sort((m, n) => m - n);
|
|
423
401
|
const startRow = sortRows[0];
|
|
@@ -445,4 +423,4 @@ TableStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version:
|
|
|
445
423
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: TableStore, decorators: [{
|
|
446
424
|
type: Injectable
|
|
447
425
|
}], ctorParameters: function () { return []; } });
|
|
448
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy90YWJsZS90YWJsZS5zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQWMsZUFBZSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSXhELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsd0JBQXdCLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuSSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDOztBQUd6RCxNQUFNLE9BQU8sVUFBVTtJQStDbkIsSUFBSSxjQUFjO1FBQ2QsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzND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QztRQUM3QyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM3QyxNQUFNLGNBQWMsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sYUFBYSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFFckUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILHFCQUFxQixDQUFDLElBQWM7UUFDaEMsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksRUFBRTtZQUM1QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztTQUM5QjtJQUNMLENBQUM7O3VHQTFnQlEsVUFBVTsyR0FBVixVQUFVOzJGQUFWLFVBQVU7a0JBRHRCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlLCBCZWhhdmlvclN1YmplY3QsIG1lcmdlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBza2lwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVHJhbnNmb3JtcywgTm9kZSwgRWRpdG9yLCBQYXRoIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgQW5ndWxhckVkaXRvciB9IGZyb20gJ3NsYXRlLWFuZ3VsYXInO1xuaW1wb3J0IHsgVGFibGVQb3NpdGlvbiB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgZ3JvdXBCeSwgdW5pcSwgbWFwIH0gZnJvbSAnLi4vLi4vdXRpbHMvbG9kYXNoJztcbmltcG9ydCB7IENvbG9yVHlwZSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9jb2xvci1zZWxlY3QnO1xuaW1wb3J0IHsgQ2VsbFBvc2l0aW9uIH0gZnJvbSAnLi90YWJsZS50eXBlcyc7XG5pbXBvcnQgeyBUYWJsZUNlbGxFbGVtZW50IH0gZnJvbSAnLi4vLi4vY3VzdG9tLXR5cGVzJztcbmltcG9ydCB7IFRhYmxlRWRpdG9yIH0gZnJvbSAnLi90YWJsZS5lZGl0b3InO1xuaW1wb3J0IHsgY3JlYXRlVGFibGVQb3NpdGlvbiB9IGZyb20gJy4vdXRpbHMvY3JlYXRlLXRhYmxlLXBvc2l0aW9uJztcbmltcG9ydCB7IGdldENlbGxQb3NpdGlvbnNGcm9tUmFuZ2UsIGdldFNlbGVjdGVkQ2VsbFBvc2l0aW9ucywgaXNTZWxlY3RlZEFsbENlbGwsIHVuaXF1ZUNlbGxQb3NpdGlvbiB9IGZyb20gJy4vdXRpbHMvY2VsbC1wb3NpdGlvbic7XG5pbXBvcnQgeyBnZXRUYWJsZVBhdGggfSBmcm9tICcuL3V0aWxzL3RhYmxlLWVudHJ5JztcbmltcG9ydCB7IGdldE1pbkFuZE1heENlbGxJbmRleCB9IGZyb20gJy4vdXRpbHMvZ2V0LW1pbi1tYXgtY2VsbC1pbmRleCc7XG5pbXBvcnQgeyBnZXRDZWxsUG9zaXRpb25zQmVmb3JlTWVyZ2UgfSBmcm9tICcuL3V0aWxzL21lcmdlLWNlbGwnO1xuaW1wb3J0IHsgZm9jdXNDZWxsIH0gZnJvbSAnLi91dGlscy9nZXQtc2VsZWN0LWNlbGwtbm9kZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUYWJsZVN0b3JlIHtcbiAgICBwcml2YXRlIHNlbGVjdGVkQ2VsbHMkOiBCZWhhdmlvclN1YmplY3Q8VGFibGVDZWxsRWxlbWVudFtdPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGFibGVDZWxsRWxlbWVudFtdPihbXSk7XG5cbiAgICBwcml2YXRlIGRhbmdlcm91c0NlbGxzJDogQmVoYXZpb3JTdWJqZWN0PENlbGxQb3NpdGlvbltdPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoW10pO1xuXG4gICAgcHJpdmF0ZSBjZWxsc0NoYW5nZU9iamVjdCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgcHJpdmF0ZSB0YWJsZUNoYW5nZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgc2VsZWN0ZWRDb2x1bW5zSW5kZXg6IG51bWJlcltdID0gW107XG5cbiAgICBzZWxlY3RlZFJvd3NJbmRleDogbnVtYmVyW10gPSBbXTtcblxuICAgIGRhbmdlcm91c0NvbHVtbnNJbmRleDogbnVtYmVyW10gPSBbXTtcblxuICAgIGRhbmdlcm91c1Jvd3NJbmRleDogbnVtYmVyW10gPSBbXTtcblxuICAgIGlzU2VsZWN0ZWRUYWJsZTogYm9vbGVhbjtcblxuICAgIGVkaXRvcjogRWRpdG9yO1xuXG4gICAgcHVibGljIGlzRnVsbHNjcmVlbjogYm9vbGVhbjtcblxuICAgIHB1YmxpYyBhbmNob3JDZWxsUGF0aDogbnVtYmVyW107XG5cbiAgICBwdWJsaWMgZm9jdXNDZWxsUGF0aDogbnVtYmVyW107XG5cbiAgICBwdWJsaWMgcHJlRm9jdXNDZWxsUGF0aDogbnVtYmVyW107XG5cbiAgICBwdWJsaWMgbGFzdEZvY3VzQ2VsbFBhdGg6IG51bWJlcltdO1xuXG4gICAgcHVibGljIGZvY3VzQ2VsbEVsZW1lbnQ6IEhUTUxUYWJsZUNlbGxFbGVtZW50O1xuXG4gICAgcHVibGljIGlzUHJlcGFyZVNlbGVjdGluZyA9IGZhbHNlO1xuXG4gICAgcHVibGljIGlzQ2VsbFNlbGVjdGluZyA9IGZhbHNlO1xuXG4gICAgcHVibGljIGlzUmlnaHRDbGlja2luZyA9IGZhbHNlO1xuXG4gICAgcHVibGljIGlzRm9jdXNlZElucHV0ID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgcG9pbnRlclNlbGVjdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgcHVibGljIGFyZWFTZWxlY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHB1YmxpYyBtYXhDb2w6IG51bWJlcjtcblxuICAgIGdldCBkYW5nZXJvdXNDZWxscygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGFuZ2Vyb3VzQ2VsbHMkLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoKSB7fVxuXG4gICAgaW5pdEVkaXRvcihlZGl0b3I6IEVkaXRvcikge1xuICAgICAgICB0aGlzLmVkaXRvciA9IGVkaXRvcjtcbiAgICB9XG5cbiAgICBnZXRTZWxlY3RlZENlbGxQb3NpdGlvbnMoKTogQ2VsbFBvc2l0aW9uW10ge1xuICAgICAgICByZXR1cm4gZ2V0U2VsZWN0ZWRDZWxsUG9zaXRpb25zKHRoaXMuZWRpdG9yLCB0aGlzLnNlbGVjdGVkQ2VsbHMkLmdldFZhbHVlKCkpO1xuICAgIH1cblxuICAgIHB1Ymxpc2hEYW5nZXJvdXNDZWxscyh2YWx1ZTogQ2VsbFBvc2l0aW9uW10pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGFuZ2Vyb3VzQ2VsbHMkLm5leHQodmFsdWUpO1xuICAgIH1cblxuICAgIHNldFNlbGVjdGVkQ29sdW1uc0FuZFJvd0luZGV4KCkge1xuICAgICAgICBpZiAoIXRoaXMuZWRpdG9yPy5zZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBvcyA9IGNyZWF0ZVRhYmxlUG9zaXRpb24odGhpcy5lZGl0b3IpO1xuICAgICAgICBpZiAoIXBvcz8udGFibGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1lcmdlQmVmb3JlQ2VsbHMgPSBbXTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRDZWxsUG9zaXRpb25zID0gdGhpcy5nZXRTZWxlY3RlZENlbGxQb3NpdGlvbnMoKTtcbiAgICAgICAgc2VsZWN0ZWRDZWxsUG9zaXRpb25zLmZvckVhY2goKHsgcm93LCBjb2wgfSkgPT4ge1xuICAgICAgICAgICAgLy8g6K6h566X5ZCI5bm25Y2V5YWD5qC85pWw5o2u5pe277yM6KaB5oyJ5ZCI5bm25YmN55qE5pWw5o2u5aSE55CGXG4gICAgICAgICAgICBtZXJnZUJlZm9yZUNlbGxzLnB1c2goLi4uZ2V0Q2VsbFBvc2l0aW9uc0JlZm9yZU1lcmdlKHRoaXMuZWRpdG9yLCB7IHJvdywgY29sIH0pKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGNlbGxzID0gdW5pcXVlQ2VsbFBvc2l0aW9uKG1lcmdlQmVmb3JlQ2VsbHMsIHNlbGVjdGVkQ2VsbFBvc2l0aW9ucyk7XG4gICAgICAgIGNvbnN0IHJvd0dyb3VwID0gZ3JvdXBCeShjZWxscywgKHsgcm93IH0pID0+IHJvdyk7XG4gICAgICAgIGNvbnN0IGNvbEdyb3VwID0gZ3JvdXBCeShjZWxscywgKHsgY29sIH0pID0+IGNvbCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzSW5kZXggPSBbXTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnNJbmRleCA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHJvdyBpbiByb3dHcm91cCkge1xuICAgICAgICAgICAgaWYgKHJvd0dyb3VwW3Jvd10ubGVuZ3RoID09PSBwb3MuZ2V0V2lkdGgoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzSW5kZXgucHVzaChwYXJzZUludChyb3csIDEwKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBjb2wgaW4gY29sR3JvdXApIHtcbiAgICAgICAgICAgIGlmIChjb2xHcm91cFtjb2xdLmxlbmd0aCA9PT0gcG9zLmdldEhlaWdodCgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnNJbmRleC5wdXNoKHBhcnNlSW50KGNvbCwgMTApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbGVjdGVkUm93c0luZGV4ID0gdW5pcSh0aGlzLnNlbGVjdGVkUm93c0luZGV4KTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnNJbmRleCA9IHVuaXEodGhpcy5zZWxlY3RlZENvbHVtbnNJbmRleCk7XG4gICAgICAgIGlmIChpc1NlbGVjdGVkQWxsQ2VsbCh0aGlzLmVkaXRvciwgc2VsZWN0ZWRDZWxsUG9zaXRpb25zKSkge1xuICAgICAgICAgICAgdGhpcy5pc1NlbGVjdGVkVGFibGUgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pc1NlbGVjdGVkVGFibGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldFNlbGVjdGVkQ2VsbHMoY2VsbHM6IENlbGxQb3NpdGlvbltdLCBwb3M6IFRhYmxlUG9zaXRpb24pIHtcbiAgICAgICAgY29uc3QgdW5pcXVlQ2VsbHMgPSB0aGlzLnBvaW50ZXJTZWxlY3Rpb24gPyB1bmlxdWVDZWxsUG9zaXRpb24oY2VsbHMsIHRoaXMuZ2V0U2VsZWN0ZWRDZWxsUG9zaXRpb25zKCkpIDogY2VsbHM7XG4gICAgICAgIGNvbnN0IGNlbGxFbGVtZW50cyA9IHVuaXF1ZUNlbGxzLm1hcChjZWxsID0+IHtcbiAgICAgICAgICAgIHJldHVybiBwb3MuZmluZENlbGxCeVBhdGgoY2VsbCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ2VsbHMkLm5leHQoY2VsbEVsZW1lbnRzKTtcbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZENvbHVtbnNBbmRSb3dJbmRleCgpO1xuICAgIH1cblxuICAgIHNlbGVjdFJvdyhlZGl0b3I6IEVkaXRvciwgaW5kZXg6IG51bWJlcikge1xuICAgICAgICBjb25zdCBwb3MgPSBjcmVhdGVUYWJsZVBvc2l0aW9uKGVkaXRvcik7XG4gICAgICAgIGNvbnN0IHJhbmdlQ2VsbHMgPSBnZXRDZWxsUG9zaXRpb25zRnJvbVJhbmdlKGluZGV4LCAwLCBpbmRleCArIDEsIHBvcy5nZXRXaWR0aCgpKTtcblxuICAgICAgICB0aGlzLmNsZWFyTGFzdEZvY3VzUGF0aCgpO1xuICAgICAgICBpZiAodGhpcy5pc0FyZWFTZWxlY3Rpb25CeVR5cGUoJ3JvdycsIHJhbmdlQ2VsbHMpKSB7XG4gICAgICAgICAgICB0aGlzLmFyZWFTZWxlY3RSb3dBbmRDb2x1bW4ocmFuZ2VDZWxscyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkQ2VsbHMocmFuZ2VDZWxscywgcG9zKTtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNDZWxsKHBvcy50YWJsZUVudHJ5WzFdLmNvbmNhdChbaW5kZXgsIDBdKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZWxlY3RDb2x1bW4oZWRpdG9yOiBFZGl0b3IsIGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgcG9zID0gY3JlYXRlVGFibGVQb3NpdGlvbihlZGl0b3IpO1xuICAgICAgICBjb25zdCByYW5nZUNlbGxzID0gZ2V0Q2VsbFBvc2l0aW9uc0Zyb21SYW5nZSgwLCBpbmRleCwgcG9zLmdldEhlaWdodCgpLCBpbmRleCArIDEpO1xuXG4gICAgICAgIHRoaXMuY2xlYXJMYXN0Rm9jdXNQYXRoKCk7XG4gICAgICAgIGlmICh0aGlzLmlzQXJlYVNlbGVjdGlvbkJ5VHlwZSgnY29sJywgcmFuZ2VDZWxscykpIHtcbiAgICAgICAgICAgIHRoaXMuYXJlYVNlbGVjdFJvd0FuZENvbHVtbihyYW5nZUNlbGxzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRDZWxscyhyYW5nZUNlbGxzLCBwb3MpO1xuICAgICAgICAgICAgdGhpcy5mb2N1c0NlbGwocG9zLnRhYmxlRW50cnlbMV0uY29uY2F0KFswLCBpbmRleF0pKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNlbGVjdFRhYmxlKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIGNvbnN0IHBvcyA9IGNyZWF0ZVRhYmxlUG9zaXRpb24oZWRpdG9yKTtcbiAgICAgICAgY29uc3QgY2VsbHMgPSBnZXRDZWxsUG9zaXRpb25zRnJvbVJhbmdlKDAsIDAsIHBvcy5nZXRIZWlnaHQoKSwgcG9zLmdldFdpZHRoKCkpO1xuICAgICAgICBjb25zdCBsYXN0Q2VsbCA9IGNlbGxzW2NlbGxzLmxlbmd0aCAtIDFdO1xuICAgICAgICBjb25zdCBhbmNob3JDZWxsUGF0aCA9IHBvcy50YWJsZUVudHJ5WzFdLmNvbmNhdChbbGFzdENlbGwucm93LCBsYXN0Q2VsbC5jb2xdKTtcblxuICAgICAgICB0aGlzLmlzU2VsZWN0ZWRUYWJsZSA9IHRydWU7XG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRDZWxscyhjZWxscywgcG9zKTtcbiAgICAgICAgdGhpcy5zZXRBcmVhQW5jaG9yQ2VsbFBhdGgoYW5jaG9yQ2VsbFBhdGgpO1xuICAgICAgICB0aGlzLmZvY3VzQ2VsbChwb3MudGFibGVFbnRyeVsxXS5jb25jYXQoWzAsIDBdKSk7XG4gICAgfVxuXG4gICAgLy8g5ouW6YCJ5byA5aeLIHx8IOiusOW9leiBmueEpueCuVxuICAgIHNlbGVjdENlbGxTdGFydChjZWxsOiBIVE1MVGFibGVDZWxsRWxlbWVudCwgZWRpdG9yOiBFZGl0b3IpIHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IEFuZ3VsYXJFZGl0b3IudG9TbGF0ZU5vZGUoZWRpdG9yLCBjZWxsKTtcbiAgICAgICAgY29uc3QgcGF0aCA9IEFuZ3VsYXJFZGl0b3IuZmluZFBhdGgoZWRpdG9yLCBub2RlKTtcbiAgICAgICAgdGhpcy5pc1ByZXBhcmVTZWxlY3RpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmFuY2hvckNlbGxQYXRoID0gcGF0aDtcbiAgICAgICAgdGhpcy5mb2N1c0NlbGxQYXRoID0gcGF0aDtcbiAgICAgICAgdGhpcy5mb2N1c0NlbGxFbGVtZW50ID0gY2VsbDtcbiAgICAgICAgdGhpcy5sYXN0Rm9jdXNDZWxsUGF0aCA9IHBhdGg7XG4gICAgICAgIGlmICghdGhpcy5wcmVGb2N1c0NlbGxQYXRoKSB7XG4gICAgICAgICAgICB0aGlzLnByZUZvY3VzQ2VsbFBhdGggPSB0aGlzLmFuY2hvckNlbGxQYXRoO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8g5ouW6YCJXG4gICAgc2VsZWN0Q2VsbHMoZWRpdG9yOiBFZGl0b3IpIHtcbiAgICAgICAgY29uc3QgcG9zID0gY3JlYXRlVGFibGVQb3NpdGlvbihlZGl0b3IpO1xuICAgICAgICBjb25zdCBhbmNob3JQYXRoID0gdGhpcy5hbmNob3JDZWxsUGF0aC5zbGljZSgtMik7XG4gICAgICAgIGNvbnN0IGZvY3VzUGF0aCA9IHRoaXMuZm9jdXNDZWxsUGF0aC5zbGljZSgtMik7XG5cbiAgICAgICAgY29uc3Qgcm93cyA9IFthbmNob3JQYXRoWzBdLCBmb2N1c1BhdGhbMF1dLnNvcnQoKG0sIG4pID0+IG0gLSBuKTtcbiAgICAgICAgY29uc3QgY29sdW1ucyA9IFthbmNob3JQYXRoWzFdLCBmb2N1c1BhdGhbMV1dLnNvcnQoKG0sIG4pID0+IG0gLSBuKTtcblxuICAgICAgICBjb25zdCB7IGNvbHNwYW46IGFuY2hvckNvbHNwYW5Db3VudCwgcm93c3BhbjogYW5jaG9yUm93c3BhbkNvdW50IH0gPSBFZGl0b3Iubm9kZShcbiAgICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICAgIHRoaXMuYW5jaG9yQ2VsbFBhdGhcbiAgICAgICAgKVswXSBhcyBUYWJsZUNlbGxFbGVtZW50O1xuICAgICAgICBjb25zdCB7IGNvbHNwYW46IGZvY3VzQ29sc3BhbkNvdW50LCByb3dzcGFuOiBmb2N1c1Jvd3NwYW5Db3VudCB9ID0gRWRpdG9yLm5vZGUoZWRpdG9yLCB0aGlzLmZvY3VzQ2VsbFBhdGgpWzBdIGFzIFRhYmxlQ2VsbEVsZW1lbnQ7XG5cbiAgICAgICAgY29uc3QgYW5jaG9yUm93ID0gYW5jaG9yUGF0aFswXSArIChhbmNob3JSb3dzcGFuQ291bnQgfHwgMSkgLSAxO1xuICAgICAgICBjb25zdCBmb2N1c1JvdyA9IGZvY3VzUGF0aFswXSArIChmb2N1c1Jvd3NwYW5Db3VudCB8fCAxKSAtIDE7XG4gICAgICAgIGNvbnN0IGFuY2hvckNvbCA9IGFuY2hvclBhdGhbMV0gKyAoYW5jaG9yQ29sc3BhbkNvdW50IHx8IDEpIC0gMTtcbiAgICAgICAgY29uc3QgZm9jdXNDb2wgPSBmb2N1c1BhdGhbMV0gKyAoZm9jdXNDb2xzcGFuQ291bnQgfHwgMSkgLSAxO1xuXG4gICAgICAgIGxldCBpbml0TWF4Q29sID0gTWF0aC5tYXgoYW5jaG9yQ29sLCBmb2N1c0NvbCk7XG4gICAgICAgIGxldCBpbml0TWF4Um93ID0gTWF0aC5tYXgoYW5jaG9yUm93LCBmb2N1c1Jvdyk7XG4gICAgICAgIGNvbnN0IHsgbWluUm93LCBtYXhSb3csIG1pbkNvbCwgbWF4Q29sIH0gPSBnZXRNaW5BbmRNYXhDZWxsSW5kZXgoXG4gICAgICAgICAgICB0aGlzLmVkaXRvcixcbiAgICAgICAgICAgIHRoaXMuZ2V0U2VsZWN0ZWRDZWxsUG9zaXRpb25zKCksXG4gICAgICAgICAgICBpbml0TWF4Um93LFxuICAgICAgICAgICAgaW5pdE1heENvbCxcbiAgICAgICAgICAgIHJvd3NbMF0sXG4gICAgICAgICAgICBjb2x1bW5zWzBdLFxuICAgICAgICAgICAgcG9zLnRhYmxlXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGNlbGxzID0gZ2V0Q2VsbFBvc2l0aW9uc0Zyb21SYW5nZShtaW5Sb3csIG1pbkNvbCwgbWF4Um93ICsgMSwgbWF4Q29sICsgMSk7XG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRDZWxscyhjZWxscywgcG9zKTtcbiAgICB9XG5cbiAgICBzZWxlY3RGaXJzdENlbGwoKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkQ2VsbFBvc2l0aW9ucyA9IHRoaXMuZ2V0U2VsZWN0ZWRDZWxsUG9zaXRpb25zKCk7XG4gICAgICAgIGNvbnN0IHsgcm93LCBjb2wgfSA9IHNlbGVjdGVkQ2VsbFBvc2l0aW9uc1swXTtcbiAgICAgICAgY29uc3QgdGFibGVQYXRoID0gZ2V0VGFibGVQYXRoKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgY29uc3QgcGF0aCA9IEVkaXRvci5zdGFydCh0aGlzLmVkaXRvciwgWy4uLnRhYmxlUGF0aCwgcm93LCBjb2xdKTtcbiAgICAgICAgVHJhbnNmb3Jtcy5zZWxlY3QodGhpcy5lZGl0b3IsIHBhdGgpO1xuICAgIH1cblxuICAgIC8vIOmAieaLqeWNleWFg+agvFxuICAgIHNlbGVjdENlbGwoY2VsbDogSFRNTFRhYmxlQ2VsbEVsZW1lbnQsIGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSBBbmd1bGFyRWRpdG9yLnRvU2xhdGVOb2RlKGVkaXRvciwgY2VsbCkgYXMgVGFibGVDZWxsRWxlbWVudDtcbiAgICAgICAgY29uc3QgcGF0aCA9IEFuZ3VsYXJFZGl0b3IuZmluZFBhdGgoZWRpdG9yLCBub2RlKTtcbiAgICAgICAgdGhpcy5hbmNob3JDZWxsUGF0aCA9IHBhdGg7XG4gICAgICAgIHRoaXMuZm9jdXNDZWxsUGF0aCA9IHBhdGg7XG4gICAgICAgIHRoaXMuZm9jdXNDZWxsRWxlbWVudCA9IGNlbGw7XG4gICAgICAgIGNvbnN0IFtyb3csIGNvbF0gPSBwYXRoLnNsaWNlKC0yKTtcbiAgICAgICAgY29uc3QgcG9zID0gY3JlYXRlVGFibGVQb3NpdGlvbihlZGl0b3IpO1xuICAgICAgICBjb25zdCBjZWxsczogQ2VsbFBvc2l0aW9uW10gPSBbeyByb3csIGNvbCB9XTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRDZWxsUG9zaXRpb25zID0gdGhpcy5nZXRTZWxlY3RlZENlbGxQb3NpdGlvbnMoKTtcbiAgICAgICAgaWYgKHRoaXMucG9pbnRlclNlbGVjdGlvbikge1xuICAgICAgICAgICAgY2VsbHMucHVzaCguLi5zZWxlY3RlZENlbGxQb3NpdGlvbnMpO1xuICAgICAgICAgICAgLy8g5aSE55CG5Y2V5YWD5qC86YCJ5Lit5pe277yM5aSE55CG5Li66YCJ5Lit5aSa5Y2V5YWD5qC8XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZENlbGxzID0gZ2V0Q2VsbFBvc2l0aW9uc0JlZm9yZU1lcmdlKHRoaXMuZWRpdG9yLCB7IHJvdywgY29sIH0pO1xuICAgICAgICAgICAgY2VsbHMucHVzaCguLi5zZWxlY3RlZENlbGxzKTtcbiAgICAgICAgICAgIC8vIOW3suiBmueEpueahOWNleWFg+agvOWcqOWkmumAieaooeW8j+S4i+mAieS4re+8iOaaguWtmOS4iuasoeiBmueEpueahOWNleWFg+agvOaVsOaNru+8iVxuICAgICAgICAgICAgY29uc3QgZm9jdXNDZWxsID0gdGhpcy5sYXN0Rm9jdXNDZWxsUGF0aD8uc2xpY2UoLTIpO1xuICAgICAgICAgICAgaWYgKGZvY3VzQ2VsbCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZvY3VzQ2VsbHMgPSBnZXRDZWxsUG9zaXRpb25zQmVmb3JlTWVyZ2UodGhpcy5lZGl0b3IsIHsgcm93OiBmb2N1c0NlbGxbMF0sIGNvbDogZm9jdXNDZWxsWzFdIH0pO1xuICAgICAgICAgICAgICAgIGNlbGxzLnB1c2goLi4uZm9jdXNDZWxscyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZENlbGxzKGNlbGxzLCBwb3MpO1xuICAgIH1cblxuICAgIHNlbGVjdENlbGxPbmdvaW5nKGNlbGw6IEhUTUxUYWJsZUNlbGxFbGVtZW50LCBlZGl0b3I6IEVkaXRvcikge1xuICAgICAgICBpZiAoQW5ndWxhckVkaXRvci5pc1JlYWRvbmx5KGVkaXRvcikgfHwgIWVkaXRvci5zZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgaXNDaGFuZ2VkOiBib29sZWFuO1xuICAgICAgICBpZiAoY2VsbCkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IEFuZ3VsYXJFZGl0b3IudG9TbGF0ZU5vZGUoZWRpdG9yLCBjZWxsKTtcbiAgICAgICAgICAgIGNvbnN0IHBhdGggPSBBbmd1bGFyRWRpdG9yLmZpbmRQYXRoKGVkaXRvciwgbm9kZSk7XG4gICAgICAgICAgICBpc0NoYW5nZWQgPSAhdGhpcy5mb2N1c0NlbGxQYXRoIHx8ICFQYXRoLmVxdWFscyh0aGlzLmZvY3VzQ2VsbFBhdGgsIHBhdGgpO1xuICAgICAgICAgICAgdGhpcy5mb2N1c0NlbGxQYXRoID0gcGF0aDtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNDZWxsRWxlbWVudCA9IGNlbGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZENlbGxQb3NpdGlvbnMgPSB0aGlzLmdldFNlbGVjdGVkQ2VsbFBvc2l0aW9ucygpO1xuICAgICAgICAgICAgaXNDaGFuZ2VkID0gIXRoaXMuZm9jdXNDZWxsUGF0aCB8fCAoUGF0aC5lcXVhbHModGhpcy5mb2N1c0NlbGxQYXRoLCB0aGlzLmFuY2hvckNlbGxQYXRoKSAmJiBzZWxlY3RlZENlbGxQb3NpdGlvbnMubGVuZ3RoID09PSAwKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc1ByZXBhcmVTZWxlY3RpbmcgJiYgaXNDaGFuZ2VkKSB7XG4gICAgICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkodGhpcy5wcmVGb2N1c0NlbGxQYXRoKSAhPT0gSlNPTi5zdHJpbmdpZnkodGhpcy5mb2N1c0NlbGxQYXRoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNDZWxsU2VsZWN0aW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdENlbGxzKGVkaXRvcik7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmVGb2N1c0NlbGxQYXRoID0gdGhpcy5mb2N1c0NlbGxQYXRoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xlYXJTZWxlY3RlZENlbGxzKCkge1xuICAgICAgICBjb25zb2xlLmxvZygnY2xlYXJTZWxlY3RlZENlbGxzJyk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zSW5kZXggPSBbXTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3NJbmRleCA9IFtdO1xuICAgICAgICB0aGlzLmlzU2VsZWN0ZWRUYWJsZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzQ2VsbFNlbGVjdGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzUmlnaHRDbGlja2luZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzRm9jdXNlZElucHV0ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDZWxscyQubmV4dChbXSk7XG4gICAgfVxuXG4gICAgY2xlYXJMYXN0Rm9jdXNQYXRoKCkge1xuICAgICAgICB0aGlzLmxhc3RGb2N1c0NlbGxQYXRoID0gbnVsbDtcbiAgICB9XG5cbiAgICBzZWxlY3RlZENlbGxzQ2hhbmdlKCk6IE9ic2VydmFibGU8VGFibGVDZWxsRWxlbWVudFtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkQ2VsbHMkLmFzT2JzZXJ2YWJsZSgpLnBpcGUoc2tpcCgxKSk7XG4gICAgfVxuXG4gICAgY2VsbHNQb3NpdGlvbkNoYW5nZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2VsbHNDaGFuZ2VPYmplY3QkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIGNoYW5nZUNlbGxzKCkge1xuICAgICAgICB0aGlzLmNlbGxzQ2hhbmdlT2JqZWN0JC5uZXh0KCk7XG4gICAgfVxuXG4gICAgZW1pdFRhYmxlQ2hhbmdlKCkge1xuICAgICAgICB0aGlzLnRhYmxlQ2hhbmdlJC5uZXh0KCk7XG4gICAgfVxuXG4gICAgdGFibGVDaGFuZ2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhYmxlQ2hhbmdlJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBzZWxlY3RDZWxsRW5kKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIGlmICh0aGlzLmlzQ2VsbFNlbGVjdGluZykge1xuICAgICAgICAgICAgdGhpcy5mb2N1c0NlbGwodGhpcy5mb2N1c0NlbGxQYXRoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlzUHJlcGFyZVNlbGVjdGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnByZUZvY3VzQ2VsbFBhdGggPSBudWxsO1xuICAgIH1cblxuICAgIGRhbmdlcm91c0NlbGxzQ2hhbmdlKCk6IE9ic2VydmFibGU8Q2VsbFBvc2l0aW9uW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGFuZ2Vyb3VzQ2VsbHMkLmFzT2JzZXJ2YWJsZSgpLnBpcGUoc2tpcCgxKSk7XG4gICAgfVxuXG4gICAgc2V0RGFuZ2Vyb3VzQ2VsbHMoKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkQ2VsbFBvc2l0aW9ucyA9IHRoaXMuZ2V0U2VsZWN0ZWRDZWxsUG9zaXRpb25zKCk7XG4gICAgICAgIHRoaXMuZGFuZ2Vyb3VzUm93c0luZGV4ID0gdGhpcy5zZWxlY3RlZFJvd3NJbmRleDtcbiAgICAgICAgdGhpcy5kYW5nZXJvdXNDb2x1bW5zSW5kZXggPSB0aGlzLnNlbGVjdGVkQ29sdW1uc0luZGV4O1xuICAgICAgICB0aGlzLmRhbmdlcm91c0NlbGxzJC5uZXh0KHNlbGVjdGVkQ2VsbFBvc2l0aW9ucyk7XG4gICAgfVxuXG4gICAgY2xlYXJEYW5nZXJvdXNDZWxscygpIHtcbiAgICAgICAgdGhpcy5kYW5nZXJvdXNSb3dzSW5kZXggPSBbXTtcbiAgICAgICAgdGhpcy5kYW5nZXJvdXNDb2x1bW5zSW5kZXggPSBbXTtcbiAgICAgICAgdGhpcy5kYW5nZXJvdXNDZWxscyQubmV4dChbXSk7XG4gICAgICAgIGNvbnN0IHBvcyA9IGNyZWF0ZVRhYmxlUG9zaXRpb24odGhpcy5lZGl0b3IpO1xuICAgICAgICBpZiAocG9zLnRhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLmlzU2VsZWN0ZWRUYWJsZSA9IHRoaXMuc2VsZWN0ZWRSb3dzSW5kZXgubGVuZ3RoID09PSBwb3MuZ2V0SGVpZ2h0KCkgJiYgdGhpcy5zZWxlY3RlZENvbHVtbnNJbmRleC5sZW5ndGggPT09IHBvcy5nZXRXaWR0aCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGFuZ2Vyb3VzT3JTZWxlY3RlZENlbGxzQ2hhbmdlKCkge1xuICAgICAgICByZXR1cm4gbWVyZ2UodGhpcy5kYW5nZXJvdXNDZWxscyQuYXNPYnNlcnZhYmxlKCkucGlwZShza2lwKDEpKSwgdGhpcy5zZWxlY3RlZENlbGxzJC5hc09ic2VydmFibGUoKS5waXBlKHNraXAoMSkpKTtcbiAgICB9XG5cbiAgICBzZXREYW5nZXJvdXNSb3dzKCkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZENlbGxQb3NpdGlvbnMgPSB0aGlzLmdldFNlbGVjdGVkQ2VsbFBvc2l0aW9ucygpO1xuICAgICAgICBjb25zdCBjZWxscyA9IHNlbGVjdGVkQ2VsbFBvc2l0aW9ucztcbiAgICAgICAgY29uc3Qgcm93cyA9IHVuaXEobWFwKGNlbGxzLCAncm93JykpLnZhbHVlT2YoKSBhcyBudW1iZXJbXTtcbiAgICAgICAgY29uc3QgcG9zID0gY3JlYXRlVGFibGVQb3NpdGlvbih0aGlzLmVkaXRvcik7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuXG4gICAgICAgIHRoaXMuZGFuZ2Vyb3VzUm93c0luZGV4ID0gcm93cztcbiAgICAgICAgdGhpcy5pc1NlbGVjdGVkVGFibGUgPSByb3dzLmxlbmd0aCA9PT0gcG9zLmdldEhlaWdodCgpO1xuICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGVkVGFibGUpIHtcbiAgICAgICAgICAgIHRoaXMuZGFuZ2Vyb3VzQ29sdW1uc0luZGV4ID0gWy4uLkFycmF5KHBvcy5nZXRXaWR0aCgpKV0ubWFwKCh2LCBpKSA9PiBpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3Qgcm93SW5kZXggb2Ygcm93cykge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3MuZ2V0V2lkdGgoKTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICAgICAgICAgICAgICByb3c6IHJvd0luZGV4LFxuICAgICAgICAgICAgICAgICAgICBjb2w6IGlcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRhbmdlcm91c0NlbGxzJC5uZXh0KHJlc3VsdCk7XG4gICAgfVxuXG4gICAgc2V0RGFuZ2Vyb3VzQ29sdW1ucygpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRDZWxsUG9zaXRpb25zID0gdGhpcy5nZXRTZWxlY3RlZENlbGxQb3NpdGlvbnMoKTtcbiAgICAgICAgY29uc3QgY2VsbHMgPSBzZWxlY3RlZENlbGxQb3NpdGlvbnM7XG4gICAgICAgIGNvbnN0IGNvbHMgPSB1bmlxKG1hcChjZWxscywgJ2NvbCcpKS52YWx1ZU9mKCkgYXMgbnVtYmVyW107XG4gICAgICAgIGNvbnN0IHBvcyA9IGNyZWF0ZVRhYmxlUG9zaXRpb24odGhpcy5lZGl0b3IpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBbXTtcblxuICAgICAgICB0aGlzLmRhbmdlcm91c0NvbHVtbnNJbmRleCA9IGNvbHM7XG4gICAgICAgIHRoaXMuaXNTZWxlY3RlZFRhYmxlID0gY29scy5sZW5ndGggPT09IHBvcy5nZXRXaWR0aCgpO1xuICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGVkVGFibGUpIHtcbiAgICAgICAgICAgIHRoaXMuZGFuZ2Vyb3VzUm93c0luZGV4ID0gWy4uLkFycmF5KHBvcy5nZXRIZWlnaHQoKSldLm1hcCgoXywgaSkgPT4gaSk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGNvbEluZGV4IG9mIGNvbHMpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zLmdldEhlaWdodCgpOyBpKyspIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIHJvdzogaSxcbiAgICAgICAgICAgICAgICAgICAgY29sOiBjb2xJbmRleFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGFuZ2Vyb3VzQ2VsbHMkLm5leHQocmVzdWx0KTtcbiAgICB9XG5cbiAgICBzZXREYW5nZXJvdXNUYWJsZSgpIHtcbiAgICAgICAgdGhpcy5pc1NlbGVjdGVkVGFibGUgPSB0cnVlO1xuICAgICAgICBjb25zdCBwb3MgPSBjcmVhdGVUYWJsZVBvc2l0aW9uKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgY29uc3QgY2VsbHMgPSBnZXRDZWxsUG9zaXRpb25zRnJvbVJhbmdlKDAsIDAsIHBvcy5nZXRIZWlnaHQoKSwgcG9zLmdldFdpZHRoKCkpO1xuICAgICAgICB0aGlzLmRhbmdlcm91c1Jvd3NJbmRleCA9IFsuLi5BcnJheShwb3MuZ2V0SGVpZ2h0KCkpXS5tYXAoKF8sIGkpID0+IGkpO1xuICAgICAgICB0aGlzLmRhbmdlcm91c0NvbHVtbnNJbmRleCA9IFsuLi5BcnJheShwb3MuZ2V0V2lkdGgoKSldLm1hcCgoXywgaSkgPT4gaSk7XG4gICAgICAgIHRoaXMuZGFuZ2Vyb3VzQ2VsbHMkLm5leHQoY2VsbHMpO1xuICAgIH1cblxuICAgIHNldFNlbGVjdGVkQ2VsbHNCYWNrZ3JvdW5kQ29sb3IoYmFja2dyb3VuZENvbG9yOiBDb2xvclR5cGUpIHtcbiAgICAgICAgY29uc3QgY2VsbHMgPSB0aGlzLnNlbGVjdGVkQ2VsbHMkLmdldFZhbHVlKCk7XG4gICAgICAgIEVkaXRvci53aXRob3V0Tm9ybWFsaXppbmcodGhpcy5lZGl0b3IsICgpID0+IHtcbiAgICAgICAgICAgIGNlbGxzLm1hcChjZWxsID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjZWxsUGF0aCA9IEFuZ3VsYXJFZGl0b3IuZmluZFBhdGgodGhpcy5lZGl0b3IsIGNlbGwpO1xuICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZXModGhpcy5lZGl0b3IsIHsgYmFja2dyb3VuZENvbG9yIH0sIHsgYXQ6IGNlbGxQYXRoIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNsZWFyU2VsZWN0ZWRDZWxsc0NvbnRlbnQoKSB7XG4gICAgICAgIGNvbnN0IGNlbGxzID0gdGhpcy5nZXRTZWxlY3RlZENlbGxQb3NpdGlvbnMoKTtcbiAgICAgICAgY29uc3QgdGFibGVQb3NpdGlvbiA9IGNyZWF0ZVRhYmxlUG9zaXRpb24odGhpcy5lZGl0b3IpO1xuXG4gICAgICAgIGlmICh0YWJsZVBvc2l0aW9uLmlzSW5UYWJsZSgpKSB7XG4gICAgICAgICAgICBFZGl0b3Iud2l0aG91dE5vcm1hbGl6aW5nKHRoaXMuZWRpdG9yLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCB7IHJvdywgY29sIH0gb2YgY2VsbHMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2VsbFBhdGggPSBbLi4udGFibGVQb3NpdGlvbi50YWJsZUVudHJ5WzFdLCByb3csIGNvbF07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBOb2RlLmdldCh0aGlzLmVkaXRvciwgY2VsbFBhdGgpIGFzIFRhYmxlQ2VsbEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIFRhYmxlRWRpdG9yLmNsZWFyQ2VsbCh0aGlzLmVkaXRvciwgW25vZGUsIGNlbGxQYXRoXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdCh0aGlzLmVkaXRvciwgRWRpdG9yLnN0YXJ0KHRoaXMuZWRpdG9yLCB0YWJsZVBvc2l0aW9uLmNlbGxFbnRyeVsxXSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6IGa54Sm5Y2V5YWD5qC85bm26K6+572u6IGa54Sm55u45YWz6Lev5b6E5Y+K5YWD57SgXG4gICAgICovXG4gICAgZm9jdXNDZWxsKHBhdGg6IG51bWJlcltdKSB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSBOb2RlLmdldCh0aGlzLmVkaXRvciwgcGF0aCkgYXMgVGFibGVDZWxsRWxlbWVudDtcbiAgICAgICAgY29uc3QgY2VsbEhUTUxFbGVtZW50ID0gQW5ndWxhckVkaXRvci50b0RPTU5vZGUodGhpcy5lZGl0b3IsIG5vZGUpIGFzIEhUTUxUYWJsZUNlbGxFbGVtZW50O1xuICAgICAgICB0aGlzLnByZUZvY3VzQ2VsbFBhdGggPSB0aGlzLmZvY3VzQ2VsbFBhdGg7XG4gICAgICAgIHRoaXMuZm9jdXNDZWxsUGF0aCA9IHBhdGg7XG4gICAgICAgIHRoaXMuZm9jdXNDZWxsRWxlbWVudCA9IGNlbGxIVE1MRWxlbWVudDtcbiAgICAgICAgZm9jdXNDZWxsKHRoaXMuZWRpdG9yLCBwYXRoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDljLrln5/pgInmi6nlvIDlp4tcbiAgICAgKiBAcGFyYW0gZWRpdG9yIOe8lui+keWZqOWvueixoVxuICAgICAqIEBwYXJhbSBjZWxsIOWNleWFg+agvOWFg+e0oFxuICAgICAqL1xuICAgIGFyZWFTZWxlY3Rpb25TdGFydChjZWxsOiBIVE1MVGFibGVDZWxsRWxlbWVudCwgZWRpdG9yOiBFZGl0b3IpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IEFuZ3VsYXJFZGl0b3IudG9TbGF0ZU5vZGUoZWRpdG9yLCBjZWxsKTtcbiAgICAgICAgY29uc3QgcGF0aCA9IEFuZ3VsYXJFZGl0b3IuZmluZFBhdGgoZWRpdG9yLCBub2RlKTtcbiAgICAgICAgdGhpcy5pc1ByZXBhcmVTZWxlY3RpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmxhc3RGb2N1c0NlbGxQYXRoID0gcGF0aDtcbiAgICAgICAgaWYgKCF0aGlzLnByZUZvY3VzQ2VsbFBhdGgpIHtcbiAgICAgICAgICAgIHRoaXMucHJlRm9jdXNDZWxsUGF0aCA9IHRoaXMuYW5jaG9yQ2VsbFBhdGg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7ljLrln5/pgInmi6nnmoTljZXlhYPmoLxcbiAgICAgKiBAcGFyYW0gY2VsbEVsZW1lbnQg5Y2V5YWD5qC85YWD57SgXG4gICAgICovXG4gICAgc2V0QXJlYVNlbGVjdGlvbkNlbGxzKGNlbGxFbGVtZW50OiBUYWJsZUNlbGxFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChBbmd1bGFyRWRpdG9yLmlzUmVhZG9ubHkodGhpcy5lZGl0b3IpIHx8ICF0aGlzLmVkaXRvci5zZWxlY3Rpb24gfHwgIXRoaXMuaXNQcmVwYXJlU2VsZWN0aW5nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjdXJyZW50Q2VsbFBhdGggPSBBbmd1bGFyRWRpdG9yLmZpbmRQYXRoKHRoaXMuZWRpdG9yLCBjZWxsRWxlbWVudCk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkQ2VsbFBvc2l0aW9ucyA9IHRoaXMuZ2V0U2VsZWN0ZWRDZWxsUG9zaXRpb25zKCk7XG4gICAgICAgIGNvbnN0IHNlbGVjdEVxdWFsID0gUGF0aC5lcXVhbHMoY3VycmVudENlbGxQYXRoLCB0aGlzLmFuY2hvckNlbGxQYXRoKTtcblxuICAgICAgICAvLyDkuI3lj6/ku6XljLrln5/pgInmi6nljZXkuIDljZXlhYPmoLxcbiAgICAgICAgaWYgKHNlbGVjdGVkQ2VsbFBvc2l0aW9ucy5sZW5ndGggPD0gMSAmJiBzZWxlY3RFcXVhbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNDZWxsU2VsZWN0aW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5mb2N1c0NlbGwoY3VycmVudENlbGxQYXRoKTtcbiAgICAgICAgdGhpcy5zZWxlY3RDZWxscyh0aGlzLmVkaXRvcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5Yik5pat6YCJ5oup5pW05YiXL+aVtOihjOaXtuaYr+WQpuespuWQiOWMuuWfn+mAieaLqeinhOWImVxuICAgICAqIEBwYXJhbSB0eXBlIOmAieaLqeexu+Wei1xuICAgICAqIEBwYXJhbSBjZWxscyDmnKzmrKHpgInmi6nnmoTljZXlhYPmoLxcbiAgICAgKiBAcmV0dXJucyDmmK/lkKbnrKblkIjljLrln5/pgInmi6nop4TliJlcbiAgICAgKi9cbiAgICBpc0FyZWFTZWxlY3Rpb25CeVR5cGUodHlwZTogJ3JvdycgfCAnY29sJywgY2VsbHM6IENlbGxQb3NpdGlvbltdKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5mb2N1c0NlbGxQYXRoKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzZWxlY3RlZENlbGxzID0gdGhpcy5nZXRTZWxlY3RlZENlbGxQb3NpdGlvbnMoKTtcbiAgICAgICAgY29uc3Qgc29ydFJvd3MgPSBjZWxscy5tYXAoaXRlbSA9PiBpdGVtLnJvdykuc29ydCgobSwgbikgPT4gbSAtIG4pO1xuICAgICAgICBjb25zdCBzb3J0Q29scyA9IGNlbGxzLm1hcChpdGVtID0+IGl0ZW0uY29sKS5zb3J0KChtLCBuKSA9PiBtIC0gbik7XG4gICAgICAgIGNvbnN0IHN0YXJ0Um93ID0gc29ydFJvd3NbMF07XG4gICAgICAgIGNvbnN0IHN0YXJ0Q29sID0gc29ydENvbHNbMF07XG4gICAgICAgIGNvbnN0IFtyb3csIGNvbF0gPSB0aGlzLmZvY3VzQ2VsbFBhdGguc2xpY2UoLTIpO1xuXG4gICAgICAgIGlmICh0eXBlID09PSAncm93Jykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXJlYVNlbGVjdGlvbiAmJiBzZWxlY3RlZENlbGxzLmxlbmd0aCA9PT0gMCAmJiByb3cgIT09IHN0YXJ0Um93O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlID09PSAnY29sJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXJlYVNlbGVjdGlvbiAmJiBzZWxlY3RlZENlbGxzLmxlbmd0aCA9PT0gMCAmJiBjb2wgIT09IHN0YXJ0Q29sO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5aSE55CG5Yy65Z+f6YCJ5oup5ZCv55So5pe26YCJ5oup5pW06KGML+aVtOWIl1xuICAgICAqIEBwYXJhbSBjZWxscyDpgInmi6nnmoTljZXlhYPmoLxcbiAgICAgKi9cbiAgICBhcmVhU2VsZWN0Um93QW5kQ29sdW1uKGNlbGxzOiBDZWxsUG9zaXRpb25bXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBwb3MgPSBjcmVhdGVUYWJsZVBvc2l0aW9uKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRDZWxscyA9IHRoaXMuZ2V0U2VsZWN0ZWRDZWxsUG9zaXRpb25zKCk7XG4gICAgICAgIGxldCBzZWxlY3RDZWxscyA9IFsuLi5zZWxlY3RlZENlbGxzLCAuLi5jZWxsc107XG5cbiAgICAgICAgLy8g5aSE55CG5LuF6IGa54Sm5Y2V5YWD5qC85L2G5b2T5YmN5rKh5pyJ5bey6YCJ5Lit55qE5Y2V5YWD5qC85pe2XG4gICAgICAgIGlmIChzZWxlY3RlZENlbGxzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3QgW3JvdywgY29sXSA9IHRoaXMuZm9jdXNDZWxsUGF0aC5zbGljZSgtMik7XG4gICAgICAgICAgICBzZWxlY3RDZWxscyA9IFt7IHJvdywgY29sIH0sIC4uLmNlbGxzXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNvcnRSb3dzID0gc2VsZWN0Q2VsbHMubWFwKGl0ZW0gPT4gaXRlbS5yb3cpLnNvcnQoKG0sIG4pID0+IG0gLSBuKTtcbiAgICAgICAgY29uc3Qgc29ydENvbHMgPSBzZWxlY3RDZWxscy5tYXAoaXRlbSA9PiBpdGVtLmNvbCkuc29ydCgobSwgbikgPT4gbSAtIG4pO1xuICAgICAgICBjb25zdCBzdGFydFJvdyA9IHNvcnRSb3dzWzBdO1xuICAgICAgICBjb25zdCBzdGFydENvbCA9IHNvcnRDb2xzWzBdO1xuICAgICAgICBjb25zdCBlbmRSb3cgPSBzb3J0Q29sc1tzb3J0Q29scy5sZW5ndGggLSAxXTtcbiAgICAgICAgY29uc3QgZW5kQ29sID0gc29ydFJvd3Nbc29ydFJvd3MubGVuZ3RoIC0gMV07XG4gICAgICAgIGNvbnN0IGFuY2hvckNlbGxQYXRoID0gcG9zLnRhYmxlRW50cnlbMV0uY29uY2F0KFtlbmRDb2wsIGVuZFJvd10pO1xuICAgICAgICBjb25zdCBmb2N1c0NlbGxQYXRoID0gcG9zLnRhYmxlRW50cnlbMV0uY29uY2F0KFtzdGFydFJvdywgc3RhcnRDb2xdKTtcblxuICAgICAgICB0aGlzLnNldEFyZWFBbmNob3JDZWxsUGF0aChhbmNob3JDZWxsUGF0aCk7XG4gICAgICAgIHRoaXMuZm9jdXNDZWxsKGZvY3VzQ2VsbFBhdGgpO1xuICAgICAgICB0aGlzLnNlbGVjdENlbGxzKHRoaXMuZWRpdG9yKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7ljLrln5/pgInmi6nop6blj5Hml7bnmoTmjIflrpogYW5jaG9yQ2VsbFBhdGhcbiAgICAgKiBAcGFyYW0gcGF0aCDot6/lvoRcbiAgICAgKi9cbiAgICBzZXRBcmVhQW5jaG9yQ2VsbFBhdGgocGF0aDogbnVtYmVyW10pIHtcbiAgICAgICAgaWYgKHRoaXMuYXJlYVNlbGVjdGlvbiAmJiBwYXRoKSB7XG4gICAgICAgICAgICB0aGlzLmFuY2hvckNlbGxQYXRoID0gcGF0aDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
426
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy90YWJsZS90YWJsZS5zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQWMsZUFBZSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSXhELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsd0JBQXdCLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuSSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDOztBQUd6RCxNQUFNLE9BQU8sVUFBVTtJQStDbkIsSUFBSSxjQUFjO1FBQ2QsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRDtRQWxEUSxtQkFBYyxHQUF3QyxJQUFJLGVBQWUsQ0FBcUIsRUFBRSxDQUFDLENBQUM7UUFFbEcsb0JBQWUsR0FBb0MsSUFBSSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFM0UsdUJBQWtCLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUV6QyxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFM0MseUJBQW9CLEdBQWEsRUFBRSxDQUFDO1FBRXBDLHNCQUFpQixHQUFhLEVBQUUsQ0FBQztRQUVqQywwQkFBcUIsR0FBYSxFQUFFLENBQUM7UUFFckMsdUJBQWtCLEdBQWEsRUFBRSxDQUFDO1FBa0IzQix1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFFM0Isb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFFeEIsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFFeEIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFFdkIscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBRWxDLGtCQUFhLEdBQVksS0FBSyxDQUFDO0lBUXZCLENBQUM7SUFFaEIsVUFBVSxDQUFDLE1BQWM7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDekIsQ0FBQztJQUVELHdCQUF3QjtRQUNwQixPQUFPLHdCQUF3QixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxLQUFxQjtRQUN2QyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCw2QkFBNkI7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFO1lBQ3pCLE9BQU87U0FDVjtRQUVELE1BQU0sR0FBRyxHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRTtZQUNiLE9BQU87U0FDVjtRQUVELE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQzVCLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDOUQscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRTtZQUMzQyx3QkFBd0I7WUFDeEIsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsMkJBQTJCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDckYsQ0FBQyxDQUFDLENBQUM7UUFDSCxNQUFNLEtBQUssR0FBRyxrQkFBa0IsQ0FBQyxnQkFBZ0IsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO1FBQzFFLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsRCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsRUFBRSxDQUFDO1FBQy9CLEtBQUssTUFBTSxHQUFHLElBQUksUUFBUSxFQUFFO1lBQ3hCLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ2xEO1NBQ0o7UUFDRCxLQUFLLE1BQU0sR0FBRyxJQUFJLFFBQVEsRUFBRTtZQUN4QixJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUFFO2dCQUMxQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUNyRDtTQUNKO1FBQ0QsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzVELElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxxQkFBcUIsQ0FBQyxFQUFFO1lBQ3ZELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1NBQy9CO2FBQU07WUFDSCxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztTQUNoQztJQUNMLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFxQixFQUFFLEdBQWtCO1FBQ3RELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUMvRyxNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3hDLE9BQU8sR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBYyxFQUFFLEtBQWE7UUFDbkMsTUFBTSxHQUFHLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEMsTUFBTSxVQUFVLEdBQUcseUJBQXlCLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBRWxGLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNwQixJQUFJLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDM0M7YUFBTTtZQUNILElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDdkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDeEQ7SUFDTCxDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQWMsRUFBRSxLQUFhO1FBQ3RDLE1BQU0sR0FBRyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sVUFBVSxHQUFHLHlCQUF5QixDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztRQUVuRixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDcEIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQzNDO2FBQU07WUFDSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3hEO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFjO1FBQ3RCLE1BQU0sR0FBRyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sS0FBSyxHQUFHLHlCQUF5QixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQy9FLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUU5RSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsZ0JBQWdCO0lBQ2hCLGVBQWUsQ0FBQyxJQUEwQixFQUFFLE1BQWM7UUFDdEQsTUFBTSxJQUFJLEdBQUcsYUFBYSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDckQsTUFBTSxJQUFJLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztRQUMvQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUMzQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQzdCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN4QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztTQUMvQztJQUNMLENBQUM7SUFFRCxLQUFLO0lBQ0wsV0FBVyxDQUFDLE1BQWM7UUFDdEIsTUFBTSxHQUFHLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRS9DLE1BQU0sSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNqRSxNQUFNLE9BQU8sR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFcEUsTUFBTSxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUM1RSxNQUFNLEVBQ04sSUFBSSxDQUFDLGNBQWMsQ0FDdEIsQ0FBQyxDQUFDLENBQXFCLENBQUM7UUFDekIsTUFBTSxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFxQixDQUFDO1FBRWxJLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLGtCQUFrQixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoRSxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0QsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLGlCQUFpQixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUU3RCxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvQyxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcscUJBQXFCLENBQzVELElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxDQUFDLHdCQUF3QixFQUFFLEVBQy9CLFVBQVUsRUFDVixVQUFVLEVBQ1YsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFDVixHQUFHLENBQUMsS0FBSyxDQUNaLENBQUM7UUFDRixNQUFNLEtBQUssR0FBRyx5QkFBeUIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2hGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELGVBQWU7UUFDWCxNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQzlELE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUMsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLFNBQVMsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNqRSxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELFFBQVE7SUFDUixVQUFVLENBQUMsSUFBMEIsRUFBRSxNQUFjO1FBQ2pELE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBcUIsQ0FBQztRQUN6RSxNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUMzQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQzdCLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sR0FBRyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sS0FBSyxHQUFtQixDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDN0MsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUM5RCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN2QixLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcscUJBQXFCLENBQUMsQ0FBQztZQUNyQyxxQkFBcUI7WUFDckIsTUFBTSxhQUFhLEdBQUcsMkJBQTJCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQzdFLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQztZQUM3QixnQ0FBZ0M7WUFDaEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BELElBQUksU0FBUyxFQUFFO2dCQUNYLE1BQU0sVUFBVSxHQUFHLDJCQUEyQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUN0RyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUM7YUFDN0I7U0FDSjtRQUNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELGlCQUFpQixDQUFDLElBQTBCLEVBQUUsTUFBYztRQUN4RCxNQUFNLEdBQUcsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QyxJQUFJLGFBQWEsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRTtZQUN0RSxPQUFPO1NBQ1Y7UUFDRCxJQUFJLFNBQWtCLENBQUM7UUFDdkIsSUFBSSxJQUFJLEVBQUU7WUFDTixNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNyRCxNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNsRCxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzFFLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1lBQzFCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7U0FDaEM7YUFBTTtZQUNILE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFDOUQsU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUkscUJBQXFCLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQ25JO1FBQ0QsSUFBSSxJQUFJLENBQUMsa0JBQWtCLElBQUksU0FBUyxFQUFFO1lBQ3RDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRTtnQkFDOUUsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO2FBQzlDO1NBQ0o7SUFDTCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2QsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzdCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzdCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzdCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxrQkFBa0I7UUFDZCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxtQkFBbUI7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxtQkFBbUI7UUFDZixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNsRCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELFdBQVc7UUFDUCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUFjO1FBQ3hCLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUN0QztRQUNELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUNqQyxDQUFDO0lBRUQsb0JBQW9CO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELGlCQUFpQjtRQUNiLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDOUQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUNqRCxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1FBQ3ZELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELG1CQUFtQjtRQUNmLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM5QixNQUFNLEdBQUcsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0MsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFO1lBQ1gsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxTQUFTLEVBQUUsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUNuSTtJQUNMLENBQUM7SUFFRCw4QkFBOEI7UUFDMUIsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0SCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUM5RCxNQUFNLEtBQUssR0FBRyxxQkFBcUIsQ0FBQztRQUNwQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBYyxDQUFDO1FBQzNELE1BQU0sR0FBRyxHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFFbEIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztRQUMvQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3ZELElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN0QixJQUFJLENBQUMscUJBQXFCLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzVFO1FBRUQsS0FBSyxNQUFNLFFBQVEsSUFBSSxJQUFJLEVBQUU7WUFDekIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDckMsTUFBTSxDQUFDLElBQUksQ0FBQztvQkFDUixHQUFHLEVBQUUsUUFBUTtvQkFDYixHQUFHLEVBQUUsQ0FBQztpQkFDVCxDQUFDLENBQUM7YUFDTjtTQUNKO1FBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELG1CQUFtQjtRQUNmLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDOUQsTUFBTSxLQUFLLEdBQUcscUJBQXFCLENBQUM7UUFDcEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQWMsQ0FBQztRQUMzRCxNQUFNLEdBQUcsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0MsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBRWxCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7UUFDbEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN0RCxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDdEIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMxRTtRQUVELEtBQUssTUFBTSxRQUFRLElBQUksSUFBSSxFQUFFO1lBQ3pCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3RDLE1BQU0sQ0FBQyxJQUFJLENBQUM7b0JBQ1IsR0FBRyxFQUFFLENBQUM7b0JBQ04sR0FBRyxFQUFFLFFBQVE7aUJBQ2hCLENBQUMsQ0FBQzthQUNOO1NBQ0o7UUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsaUJBQWlCO1FBQ2IsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDNUIsTUFBTSxHQUFHLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdDLE1BQU0sS0FBSyxHQUFHLHlCQUF5QixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQy9FLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLHFCQUFxQixHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsK0JBQStCLENBQUMsZUFBMEI7UUFDdEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM3QyxNQUFNLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUU7WUFDeEMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDYixNQUFNLFFBQVEsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQzNELFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLGVBQWUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDNUUsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCx5QkFBeUI7UUFDckIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDOUMsTUFBTSxhQUFhLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXZELElBQUksYUFBYSxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQzNCLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTtnQkFDeEMsS0FBSyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEtBQUssRUFBRTtvQkFDOUIsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO29CQUM1RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFxQixDQUFDO29CQUNqRSxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztpQkFDeEQ7WUFDTCxDQUFDLENBQUMsQ0FBQztZQUNILFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDekY7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxTQUFTLENBQUMsSUFBYztRQUNwQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFxQixDQUFDO1FBQzdELE1BQU0sZUFBZSxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQXlCLENBQUM7UUFDM0YsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDM0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGVBQWUsQ0FBQztRQUN4QyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGtCQUFrQixDQUFDLElBQTBCLEVBQUUsTUFBYztRQUN6RCxNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNyRCxNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQy9CLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFDOUIsSUFBSSxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7U0FDOUI7UUFDRCxJQUFJLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRTtZQUN0QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztTQUM3QjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDeEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7U0FDL0M7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gscUJBQXFCLENBQUMsV0FBNkI7UUFDL0MsSUFBSSxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQzdGLE9BQU87U0FDVjtRQUVELE1BQU0sZUFBZSxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUN6RSxNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQzlELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUV0RSxlQUFlO1FBQ2YsSUFBSSxxQkFBcUIsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLFdBQVcsRUFBRTtZQUNsRCxPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxzQkFBc0IsQ0FBQyxLQUFxQjtRQUN4QyxNQUFNLEdBQUcsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0MsTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sV0FBVyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQztRQUM3QyxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN6RSxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN6RSxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0IsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdCLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzdDLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzdDLE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDbEUsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUVyRSxJQUFJLENBQUMscUJBQXFCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gscUJBQXFCLENBQUMsSUFBYztRQUNoQyxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxFQUFFO1lBQzVCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1NBQzlCO0lBQ0wsQ0FBQzs7dUdBL2VRLFVBQVU7MkdBQVYsVUFBVTsyRkFBVixVQUFVO2tCQUR0QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgT2JzZXJ2YWJsZSwgQmVoYXZpb3JTdWJqZWN0LCBtZXJnZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc2tpcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRyYW5zZm9ybXMsIE5vZGUsIEVkaXRvciwgUGF0aCB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IEFuZ3VsYXJFZGl0b3IgfSBmcm9tICdzbGF0ZS1hbmd1bGFyJztcbmltcG9ydCB7IFRhYmxlUG9zaXRpb24gfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IGdyb3VwQnksIHVuaXEsIG1hcCB9IGZyb20gJy4uLy4uL3V0aWxzL2xvZGFzaCc7XG5pbXBvcnQgeyBDb2xvclR5cGUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvY29sb3Itc2VsZWN0JztcbmltcG9ydCB7IENlbGxQb3NpdGlvbiB9IGZyb20gJy4vdGFibGUudHlwZXMnO1xuaW1wb3J0IHsgVGFibGVDZWxsRWxlbWVudCB9IGZyb20gJy4uLy4uL2N1c3RvbS10eXBlcyc7XG5pbXBvcnQgeyBUYWJsZUVkaXRvciB9IGZyb20gJy4vdGFibGUuZWRpdG9yJztcbmltcG9ydCB7IGNyZWF0ZVRhYmxlUG9zaXRpb24gfSBmcm9tICcuL3V0aWxzL2NyZWF0ZS10YWJsZS1wb3NpdGlvbic7XG5pbXBvcnQgeyBnZXRDZWxsUG9zaXRpb25zRnJvbVJhbmdlLCBnZXRTZWxlY3RlZENlbGxQb3NpdGlvbnMsIGlzU2VsZWN0ZWRBbGxDZWxsLCB1bmlxdWVDZWxsUG9zaXRpb24gfSBmcm9tICcuL3V0aWxzL2NlbGwtcG9zaXRpb24nO1xuaW1wb3J0IHsgZ2V0VGFibGVQYXRoIH0gZnJvbSAnLi91dGlscy90YWJsZS1lbnRyeSc7XG5pbXBvcnQgeyBnZXRNaW5BbmRNYXhDZWxsSW5kZXggfSBmcm9tICcuL3V0aWxzL2dldC1taW4tbWF4LWNlbGwtaW5kZXgnO1xuaW1wb3J0IHsgZ2V0Q2VsbFBvc2l0aW9uc0JlZm9yZU1lcmdlIH0gZnJvbSAnLi91dGlscy9tZXJnZS1jZWxsJztcbmltcG9ydCB7IGZvY3VzQ2VsbCB9IGZyb20gJy4vdXRpbHMvZ2V0LXNlbGVjdC1jZWxsLW5vZGUnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVGFibGVTdG9yZSB7XG4gICAgcHJpdmF0ZSBzZWxlY3RlZENlbGxzJDogQmVoYXZpb3JTdWJqZWN0PFRhYmxlQ2VsbEVsZW1lbnRbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRhYmxlQ2VsbEVsZW1lbnRbXT4oW10pO1xuXG4gICAgcHJpdmF0ZSBkYW5nZXJvdXNDZWxscyQ6IEJlaGF2aW9yU3ViamVjdDxDZWxsUG9zaXRpb25bXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdKTtcblxuICAgIHByaXZhdGUgY2VsbHNDaGFuZ2VPYmplY3QkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIHByaXZhdGUgdGFibGVDaGFuZ2UkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIHNlbGVjdGVkQ29sdW1uc0luZGV4OiBudW1iZXJbXSA9IFtdO1xuXG4gICAgc2VsZWN0ZWRSb3dzSW5kZXg6IG51bWJlcltdID0gW107XG5cbiAgICBkYW5nZXJvdXNDb2x1bW5zSW5kZXg6IG51bWJlcltdID0gW107XG5cbiAgICBkYW5nZXJvdXNSb3dzSW5kZXg6IG51bWJlcltdID0gW107XG5cbiAgICBpc1NlbGVjdGVkVGFibGU6IGJvb2xlYW47XG5cbiAgICBlZGl0b3I6IEVkaXRvcjtcblxuICAgIHB1YmxpYyBpc0Z1bGxzY3JlZW46IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgYW5jaG9yQ2VsbFBhdGg6IG51bWJlcltdO1xuXG4gICAgcHVibGljIGZvY3VzQ2VsbFBhdGg6IG51bWJlcltdO1xuXG4gICAgcHVibGljIHByZUZvY3VzQ2VsbFBhdGg6IG51bWJlcltdO1xuXG4gICAgcHVibGljIGxhc3RGb2N1c0NlbGxQYXRoOiBudW1iZXJbXTtcblxuICAgIHB1YmxpYyBmb2N1c0NlbGxFbGVtZW50OiBIVE1MVGFibGVDZWxsRWxlbWVudDtcblxuICAgIHB1YmxpYyBpc1ByZXBhcmVTZWxlY3RpbmcgPSBmYWxzZTtcblxuICAgIHB1YmxpYyBpc0NlbGxTZWxlY3RpbmcgPSBmYWxzZTtcblxuICAgIHB1YmxpYyBpc1JpZ2h0Q2xpY2tpbmcgPSBmYWxzZTtcblxuICAgIHB1YmxpYyBpc0ZvY3VzZWRJbnB1dCA9IGZhbHNlO1xuXG4gICAgcHVibGljIHBvaW50ZXJTZWxlY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHB1YmxpYyBhcmVhU2VsZWN0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgbWF4Q29sOiBudW1iZXI7XG5cbiAgICBnZXQgZGFuZ2Vyb3VzQ2VsbHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhbmdlcm91c0NlbGxzJC5nZXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKCkge31cblxuICAgIGluaXRFZGl0b3IoZWRpdG9yOiBFZGl0b3IpIHtcbiAgICAgICAgdGhpcy5lZGl0b3IgPSBlZGl0b3I7XG4gICAgfVxuXG4gICAgZ2V0U2VsZWN0ZWRDZWxsUG9zaXRpb25zKCk6IENlbGxQb3NpdGlvbltdIHtcbiAgICAgICAgcmV0dXJuIGdldFNlbGVjdGVkQ2VsbFBvc2l0aW9ucyh0aGlzLmVkaXRvciwgdGhpcy5zZWxlY3RlZENlbGxzJC5nZXRWYWx1ZSgpKTtcbiAgICB9XG5cbiAgICBwdWJsaXNoRGFuZ2Vyb3VzQ2VsbHModmFsdWU6IENlbGxQb3NpdGlvbltdKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhbmdlcm91c0NlbGxzJC5uZXh0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBzZXRTZWxlY3RlZENvbHVtbnNBbmRSb3dJbmRleCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmVkaXRvcj8uc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwb3MgPSBjcmVhdGVUYWJsZVBvc2l0aW9uKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgaWYgKCFwb3M/LnRhYmxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtZXJnZUJlZm9yZUNlbGxzID0gW107XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkQ2VsbFBvc2l0aW9ucyA9IHRoaXMuZ2V0U2VsZWN0ZWRDZWxsUG9zaXRpb25zKCk7XG4gICAgICAgIHNlbGVjdGVkQ2VsbFBvc2l0aW9ucy5mb3JFYWNoKCh7IHJvdywgY29sIH0pID0+IHtcbiAgICAgICAgICAgIC8vIOiuoeeul+WQiOW5tuWNleWFg+agvOaVsOaNruaXtu+8jOimgeaMieWQiOW5tuWJjeeahOaVsOaNruWkhOeQhlxuICAgICAgICAgICAgbWVyZ2VCZWZvcmVDZWxscy5wdXNoKC4uLmdldENlbGxQb3NpdGlvbnNCZWZvcmVNZXJnZSh0aGlzLmVkaXRvciwgeyByb3csIGNvbCB9KSk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBjZWxscyA9IHVuaXF1ZUNlbGxQb3NpdGlvbihtZXJnZUJlZm9yZUNlbGxzLCBzZWxlY3RlZENlbGxQb3NpdGlvbnMpO1xuICAgICAgICBjb25zdCByb3dHcm91cCA9IGdyb3VwQnkoY2VsbHMsICh7IHJvdyB9KSA9PiByb3cpO1xuICAgICAgICBjb25zdCBjb2xHcm91cCA9IGdyb3VwQnkoY2VsbHMsICh7IGNvbCB9KSA9PiBjb2wpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkUm93c0luZGV4ID0gW107XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zSW5kZXggPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCByb3cgaW4gcm93R3JvdXApIHtcbiAgICAgICAgICAgIGlmIChyb3dHcm91cFtyb3ddLmxlbmd0aCA9PT0gcG9zLmdldFdpZHRoKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkUm93c0luZGV4LnB1c2gocGFyc2VJbnQocm93LCAxMCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgY29sIGluIGNvbEdyb3VwKSB7XG4gICAgICAgICAgICBpZiAoY29sR3JvdXBbY29sXS5sZW5ndGggPT09IHBvcy5nZXRIZWlnaHQoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zSW5kZXgucHVzaChwYXJzZUludChjb2wsIDEwKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3NJbmRleCA9IHVuaXEodGhpcy5zZWxlY3RlZFJvd3NJbmRleCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zSW5kZXggPSB1bmlxKHRoaXMuc2VsZWN0ZWRDb2x1bW5zSW5kZXgpO1xuICAgICAgICBpZiAoaXNTZWxlY3RlZEFsbENlbGwodGhpcy5lZGl0b3IsIHNlbGVjdGVkQ2VsbFBvc2l0aW9ucykpIHtcbiAgICAgICAgICAgIHRoaXMuaXNTZWxlY3RlZFRhYmxlID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaXNTZWxlY3RlZFRhYmxlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRTZWxlY3RlZENlbGxzKGNlbGxzOiBDZWxsUG9zaXRpb25bXSwgcG9zOiBUYWJsZVBvc2l0aW9uKSB7XG4gICAgICAgIGNvbnN0IHVuaXF1ZUNlbGxzID0gdGhpcy5wb2ludGVyU2VsZWN0aW9uID8gdW5pcXVlQ2VsbFBvc2l0aW9uKGNlbGxzLCB0aGlzLmdldFNlbGVjdGVkQ2VsbFBvc2l0aW9ucygpKSA6IGNlbGxzO1xuICAgICAgICBjb25zdCBjZWxsRWxlbWVudHMgPSB1bmlxdWVDZWxscy5tYXAoY2VsbCA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcG9zLmZpbmRDZWxsQnlQYXRoKGNlbGwpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENlbGxzJC5uZXh0KGNlbGxFbGVtZW50cyk7XG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRDb2x1bW5zQW5kUm93SW5kZXgoKTtcbiAgICB9XG5cbiAgICBzZWxlY3RSb3coZWRpdG9yOiBFZGl0b3IsIGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgcG9zID0gY3JlYXRlVGFibGVQb3NpdGlvbihlZGl0b3IpO1xuICAgICAgICBjb25zdCByYW5nZUNlbGxzID0gZ2V0Q2VsbFBvc2l0aW9uc0Zyb21SYW5nZShpbmRleCwgMCwgaW5kZXggKyAxLCBwb3MuZ2V0V2lkdGgoKSk7XG5cbiAgICAgICAgdGhpcy5jbGVhckxhc3RGb2N1c1BhdGgoKTtcbiAgICAgICAgaWYgKHRoaXMuYXJlYVNlbGVjdGlvbikge1xuICAgICAgICAgICAgdGhpcy5hcmVhU2VsZWN0Um93QW5kQ29sdW1uKHJhbmdlQ2VsbHMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZENlbGxzKHJhbmdlQ2VsbHMsIHBvcyk7XG4gICAgICAgICAgICB0aGlzLmZvY3VzQ2VsbChwb3MudGFibGVFbnRyeVsxXS5jb25jYXQoW2luZGV4LCAwXSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2VsZWN0Q29sdW1uKGVkaXRvcjogRWRpdG9yLCBpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IHBvcyA9IGNyZWF0ZVRhYmxlUG9zaXRpb24oZWRpdG9yKTtcbiAgICAgICAgY29uc3QgcmFuZ2VDZWxscyA9IGdldENlbGxQb3NpdGlvbnNGcm9tUmFuZ2UoMCwgaW5kZXgsIHBvcy5nZXRIZWlnaHQoKSwgaW5kZXggKyAxKTtcblxuICAgICAgICB0aGlzLmNsZWFyTGFzdEZvY3VzUGF0aCgpO1xuICAgICAgICBpZiAodGhpcy5hcmVhU2VsZWN0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmFyZWFTZWxlY3RSb3dBbmRDb2x1bW4ocmFuZ2VDZWxscyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkQ2VsbHMocmFuZ2VDZWxscywgcG9zKTtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNDZWxsKHBvcy50YWJsZUVudHJ5WzFdLmNvbmNhdChbMCwgaW5kZXhdKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZWxlY3RUYWJsZShlZGl0b3I6IEVkaXRvcikge1xuICAgICAgICBjb25zdCBwb3MgPSBjcmVhdGVUYWJsZVBvc2l0aW9uKGVkaXRvcik7XG4gICAgICAgIGNvbnN0IGNlbGxzID0gZ2V0Q2VsbFBvc2l0aW9uc0Zyb21SYW5nZSgwLCAwLCBwb3MuZ2V0SGVpZ2h0KCksIHBvcy5nZXRXaWR0aCgpKTtcbiAgICAgICAgY29uc3QgbGFzdENlbGwgPSBjZWxsc1tjZWxscy5sZW5ndGggLSAxXTtcbiAgICAgICAgY29uc3QgYW5jaG9yQ2VsbFBhdGggPSBwb3MudGFibGVFbnRyeVsxXS5jb25jYXQoW2xhc3RDZWxsLnJvdywgbGFzdENlbGwuY29sXSk7XG5cbiAgICAgICAgdGhpcy5pc1NlbGVjdGVkVGFibGUgPSB0cnVlO1xuICAgICAgICB0aGlzLnNldFNlbGVjdGVkQ2VsbHMoY2VsbHMsIHBvcyk7XG4gICAgICAgIHRoaXMuc2V0QXJlYUFuY2hvckNlbGxQYXRoKGFuY2hvckNlbGxQYXRoKTtcbiAgICAgICAgdGhpcy5mb2N1c0NlbGwocG9zLnRhYmxlRW50cnlbMV0uY29uY2F0KFswLCAwXSkpO1xuICAgIH1cblxuICAgIC8vIOaLlumAieW8gOWniyB8fCDorrDlvZXogZrnhKbngrlcbiAgICBzZWxlY3RDZWxsU3RhcnQoY2VsbDogSFRNTFRhYmxlQ2VsbEVsZW1lbnQsIGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSBBbmd1bGFyRWRpdG9yLnRvU2xhdGVOb2RlKGVkaXRvciwgY2VsbCk7XG4gICAgICAgIGNvbnN0IHBhdGggPSBBbmd1bGFyRWRpdG9yLmZpbmRQYXRoKGVkaXRvciwgbm9kZSk7XG4gICAgICAgIHRoaXMuaXNQcmVwYXJlU2VsZWN0aW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5hbmNob3JDZWxsUGF0aCA9IHBhdGg7XG4gICAgICAgIHRoaXMuZm9jdXNDZWxsUGF0aCA9IHBhdGg7XG4gICAgICAgIHRoaXMuZm9jdXNDZWxsRWxlbWVudCA9IGNlbGw7XG4gICAgICAgIHRoaXMubGFzdEZvY3VzQ2VsbFBhdGggPSBwYXRoO1xuICAgICAgICBpZiAoIXRoaXMucHJlRm9jdXNDZWxsUGF0aCkge1xuICAgICAgICAgICAgdGhpcy5wcmVGb2N1c0NlbGxQYXRoID0gdGhpcy5hbmNob3JDZWxsUGF0aDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIOaLlumAiVxuICAgIHNlbGVjdENlbGxzKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIGNvbnN0IHBvcyA9IGNyZWF0ZVRhYmxlUG9zaXRpb24oZWRpdG9yKTtcbiAgICAgICAgY29uc3QgYW5jaG9yUGF0aCA9IHRoaXMuYW5jaG9yQ2VsbFBhdGguc2xpY2UoLTIpO1xuICAgICAgICBjb25zdCBmb2N1c1BhdGggPSB0aGlzLmZvY3VzQ2VsbFBhdGguc2xpY2UoLTIpO1xuXG4gICAgICAgIGNvbnN0IHJvd3MgPSBbYW5jaG9yUGF0aFswXSwgZm9jdXNQYXRoWzBdXS5zb3J0KChtLCBuKSA9PiBtIC0gbik7XG4gICAgICAgIGNvbnN0IGNvbHVtbnMgPSBbYW5jaG9yUGF0aFsxXSwgZm9jdXNQYXRoWzFdXS5zb3J0KChtLCBuKSA9PiBtIC0gbik7XG5cbiAgICAgICAgY29uc3QgeyBjb2xzcGFuOiBhbmNob3JDb2xzcGFuQ291bnQsIHJvd3NwYW46IGFuY2hvclJvd3NwYW5Db3VudCB9ID0gRWRpdG9yLm5vZGUoXG4gICAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICAgICB0aGlzLmFuY2hvckNlbGxQYXRoXG4gICAgICAgIClbMF0gYXMgVGFibGVDZWxsRWxlbWVudDtcbiAgICAgICAgY29uc3QgeyBjb2xzcGFuOiBmb2N1c0NvbHNwYW5Db3VudCwgcm93c3BhbjogZm9jdXNSb3dzcGFuQ291bnQgfSA9IEVkaXRvci5ub2RlKGVkaXRvciwgdGhpcy5mb2N1c0NlbGxQYXRoKVswXSBhcyBUYWJsZUNlbGxFbGVtZW50O1xuXG4gICAgICAgIGNvbnN0IGFuY2hvclJvdyA9IGFuY2hvclBhdGhbMF0gKyAoYW5jaG9yUm93c3BhbkNvdW50IHx8IDEpIC0gMTtcbiAgICAgICAgY29uc3QgZm9jdXNSb3cgPSBmb2N1c1BhdGhbMF0gKyAoZm9jdXNSb3dzcGFuQ291bnQgfHwgMSkgLSAxO1xuICAgICAgICBjb25zdCBhbmNob3JDb2wgPSBhbmNob3JQYXRoWzFdICsgKGFuY2hvckNvbHNwYW5Db3VudCB8fCAxKSAtIDE7XG4gICAgICAgIGNvbnN0IGZvY3VzQ29sID0gZm9jdXNQYXRoWzFdICsgKGZvY3VzQ29sc3BhbkNvdW50IHx8IDEpIC0gMTtcblxuICAgICAgICBsZXQgaW5pdE1heENvbCA9IE1hdGgubWF4KGFuY2hvckNvbCwgZm9jdXNDb2wpO1xuICAgICAgICBsZXQgaW5pdE1heFJvdyA9IE1hdGgubWF4KGFuY2hvclJvdywgZm9jdXNSb3cpO1xuICAgICAgICBjb25zdCB7IG1pblJvdywgbWF4Um93LCBtaW5Db2wsIG1heENvbCB9ID0gZ2V0TWluQW5kTWF4Q2VsbEluZGV4KFxuICAgICAgICAgICAgdGhpcy5lZGl0b3IsXG4gICAgICAgICAgICB0aGlzLmdldFNlbGVjdGVkQ2VsbFBvc2l0aW9ucygpLFxuICAgICAgICAgICAgaW5pdE1heFJvdyxcbiAgICAgICAgICAgIGluaXRNYXhDb2wsXG4gICAgICAgICAgICByb3dzWzBdLFxuICAgICAgICAgICAgY29sdW1uc1swXSxcbiAgICAgICAgICAgIHBvcy50YWJsZVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBjZWxscyA9IGdldENlbGxQb3NpdGlvbnNGcm9tUmFuZ2UobWluUm93LCBtaW5Db2wsIG1heFJvdyArIDEsIG1heENvbCArIDEpO1xuICAgICAgICB0aGlzLnNldFNlbGVjdGVkQ2VsbHMoY2VsbHMsIHBvcyk7XG4gICAgfVxuXG4gICAgc2VsZWN0Rmlyc3RDZWxsKCkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZENlbGxQb3NpdGlvbnMgPSB0aGlzLmdldFNlbGVjdGVkQ2VsbFBvc2l0aW9ucygpO1xuICAgICAgICBjb25zdCB7IHJvdywgY29sIH0gPSBzZWxlY3RlZENlbGxQb3NpdGlvbnNbMF07XG4gICAgICAgIGNvbnN0IHRhYmxlUGF0aCA9IGdldFRhYmxlUGF0aCh0aGlzLmVkaXRvcik7XG4gICAgICAgIGNvbnN0IHBhdGggPSBFZGl0b3Iuc3RhcnQodGhpcy5lZGl0b3IsIFsuLi50YWJsZVBhdGgsIHJvdywgY29sXSk7XG4gICAgICAgIFRyYW5zZm9ybXMuc2VsZWN0KHRoaXMuZWRpdG9yLCBwYXRoKTtcbiAgICB9XG5cbiAgICAvLyDpgInmi6nljZXlhYPmoLxcbiAgICBzZWxlY3RDZWxsKGNlbGw6IEhUTUxUYWJsZUNlbGxFbGVtZW50LCBlZGl0b3I6IEVkaXRvcikge1xuICAgICAgICBjb25zdCBub2RlID0gQW5ndWxhckVkaXRvci50b1NsYXRlTm9kZShlZGl0b3IsIGNlbGwpIGFzIFRhYmxlQ2VsbEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHBhdGggPSBBbmd1bGFyRWRpdG9yLmZpbmRQYXRoKGVkaXRvciwgbm9kZSk7XG4gICAgICAgIHRoaXMuYW5jaG9yQ2VsbFBhdGggPSBwYXRoO1xuICAgICAgICB0aGlzLmZvY3VzQ2VsbFBhdGggPSBwYXRoO1xuICAgICAgICB0aGlzLmZvY3VzQ2VsbEVsZW1lbnQgPSBjZWxsO1xuICAgICAgICBjb25zdCBbcm93LCBjb2xdID0gcGF0aC5zbGljZSgtMik7XG4gICAgICAgIGNvbnN0IHBvcyA9IGNyZWF0ZVRhYmxlUG9zaXRpb24oZWRpdG9yKTtcbiAgICAgICAgY29uc3QgY2VsbHM6IENlbGxQb3NpdGlvbltdID0gW3sgcm93LCBjb2wgfV07XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkQ2VsbFBvc2l0aW9ucyA9IHRoaXMuZ2V0U2VsZWN0ZWRDZWxsUG9zaXRpb25zKCk7XG4gICAgICAgIGlmICh0aGlzLnBvaW50ZXJTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIGNlbGxzLnB1c2goLi4uc2VsZWN0ZWRDZWxsUG9zaXRpb25zKTtcbiAgICAgICAgICAgIC8vIOWkhOeQhuWNleWFg+agvOmAieS4reaXtu+8jOWkhOeQhuS4uumAieS4reWkmuWNleWFg+agvFxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRDZWxscyA9IGdldENlbGxQb3NpdGlvbnNCZWZvcmVNZXJnZSh0aGlzLmVkaXRvciwgeyByb3csIGNvbCB9KTtcbiAgICAgICAgICAgIGNlbGxzLnB1c2goLi4uc2VsZWN0ZWRDZWxscyk7XG4gICAgICAgICAgICAvLyDlt7LogZrnhKbnmoTljZXlhYPmoLzlnKjlpJrpgInmqKHlvI/kuIvpgInkuK3vvIjmmoLlrZjkuIrmrKHogZrnhKbnmoTljZXlhYPmoLzmlbDmja7vvIlcbiAgICAgICAgICAgIGNvbnN0IGZvY3VzQ2VsbCA9IHRoaXMubGFzdEZvY3VzQ2VsbFBhdGg/LnNsaWNlKC0yKTtcbiAgICAgICAgICAgIGlmIChmb2N1c0NlbGwpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb2N1c0NlbGxzID0gZ2V0Q2VsbFBvc2l0aW9uc0JlZm9yZU1lcmdlKHRoaXMuZWRpdG9yLCB7IHJvdzogZm9jdXNDZWxsWzBdLCBjb2w6IGZvY3VzQ2VsbFsxXSB9KTtcbiAgICAgICAgICAgICAgICBjZWxscy5wdXNoKC4uLmZvY3VzQ2VsbHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRDZWxscyhjZWxscywgcG9zKTtcbiAgICB9XG5cbiAgICBzZWxlY3RDZWxsT25nb2luZyhjZWxsOiBIVE1MVGFibGVDZWxsRWxlbWVudCwgZWRpdG9yOiBFZGl0b3IpIHtcbiAgICAgICAgY29uc3QgcG9zID0gY3JlYXRlVGFibGVQb3NpdGlvbihlZGl0b3IpO1xuICAgICAgICBpZiAoQW5ndWxhckVkaXRvci5pc1JlYWRvbmx5KGVkaXRvcikgfHwgIWVkaXRvci5zZWxlY3Rpb24gfHwgIXBvcz8udGFibGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgaXNDaGFuZ2VkOiBib29sZWFuO1xuICAgICAgICBpZiAoY2VsbCkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IEFuZ3VsYXJFZGl0b3IudG9TbGF0ZU5vZGUoZWRpdG9yLCBjZWxsKTtcbiAgICAgICAgICAgIGNvbnN0IHBhdGggPSBBbmd1bGFyRWRpdG9yLmZpbmRQYXRoKGVkaXRvciwgbm9kZSk7XG4gICAgICAgICAgICBpc0NoYW5nZWQgPSAhdGhpcy5mb2N1c0NlbGxQYXRoIHx8ICFQYXRoLmVxdWFscyh0aGlzLmZvY3VzQ2VsbFBhdGgsIHBhdGgpO1xuICAgICAgICAgICAgdGhpcy5mb2N1c0NlbGxQYXRoID0gcGF0aDtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNDZWxsRWxlbWVudCA9IGNlbGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZENlbGxQb3NpdGlvbnMgPSB0aGlzLmdldFNlbGVjdGVkQ2VsbFBvc2l0aW9ucygpO1xuICAgICAgICAgICAgaXNDaGFuZ2VkID0gIXRoaXMuZm9jdXNDZWxsUGF0aCB8fCAoUGF0aC5lcXVhbHModGhpcy5mb2N1c0NlbGxQYXRoLCB0aGlzLmFuY2hvckNlbGxQYXRoKSAmJiBzZWxlY3RlZENlbGxQb3NpdGlvbnMubGVuZ3RoID09PSAwKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc1ByZXBhcmVTZWxlY3RpbmcgJiYgaXNDaGFuZ2VkKSB7XG4gICAgICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkodGhpcy5wcmVGb2N1c0NlbGxQYXRoKSAhPT0gSlNPTi5zdHJpbmdpZnkodGhpcy5mb2N1c0NlbGxQYXRoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNDZWxsU2VsZWN0aW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdENlbGxzKGVkaXRvcik7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmVGb2N1c0NlbGxQYXRoID0gdGhpcy5mb2N1c0NlbGxQYXRoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xlYXJTZWxlY3RlZENlbGxzKCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ29sdW1uc0luZGV4ID0gW107XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzSW5kZXggPSBbXTtcbiAgICAgICAgdGhpcy5pc1NlbGVjdGVkVGFibGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc0NlbGxTZWxlY3RpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc1JpZ2h0Q2xpY2tpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc0ZvY3VzZWRJbnB1dCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ2VsbHMkLm5leHQoW10pO1xuICAgIH1cblxuICAgIGNsZWFyTGFzdEZvY3VzUGF0aCgpIHtcbiAgICAgICAgdGhpcy5sYXN0Rm9jdXNDZWxsUGF0aCA9IG51bGw7XG4gICAgfVxuXG4gICAgc2VsZWN0ZWRDZWxsc0NoYW5nZSgpOiBPYnNlcnZhYmxlPFRhYmxlQ2VsbEVsZW1lbnRbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZENlbGxzJC5hc09ic2VydmFibGUoKS5waXBlKHNraXAoMSkpO1xuICAgIH1cblxuICAgIGNlbGxzUG9zaXRpb25DaGFuZ2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNlbGxzQ2hhbmdlT2JqZWN0JC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBjaGFuZ2VDZWxscygpIHtcbiAgICAgICAgdGhpcy5jZWxsc0NoYW5nZU9iamVjdCQubmV4dCgpO1xuICAgIH1cblxuICAgIGVtaXRUYWJsZUNoYW5nZSgpIHtcbiAgICAgICAgdGhpcy50YWJsZUNoYW5nZSQubmV4dCgpO1xuICAgIH1cblxuICAgIHRhYmxlQ2hhbmdlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50YWJsZUNoYW5nZSQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgc2VsZWN0Q2VsbEVuZChlZGl0b3I6IEVkaXRvcikge1xuICAgICAgICBpZiAodGhpcy5pc0NlbGxTZWxlY3RpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNDZWxsKHRoaXMuZm9jdXNDZWxsUGF0aCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc1ByZXBhcmVTZWxlY3RpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5wcmVGb2N1c0NlbGxQYXRoID0gbnVsbDtcbiAgICB9XG5cbiAgICBkYW5nZXJvdXNDZWxsc0NoYW5nZSgpOiBPYnNlcnZhYmxlPENlbGxQb3NpdGlvbltdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhbmdlcm91c0NlbGxzJC5hc09ic2VydmFibGUoKS5waXBlKHNraXAoMSkpO1xuICAgIH1cblxuICAgIHNldERhbmdlcm91c0NlbGxzKCkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZENlbGxQb3NpdGlvbnMgPSB0aGlzLmdldFNlbGVjdGVkQ2VsbFBvc2l0aW9ucygpO1xuICAgICAgICB0aGlzLmRhbmdlcm91c1Jvd3NJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dzSW5kZXg7XG4gICAgICAgIHRoaXMuZGFuZ2Vyb3VzQ29sdW1uc0luZGV4ID0gdGhpcy5zZWxlY3RlZENvbHVtbnNJbmRleDtcbiAgICAgICAgdGhpcy5kYW5nZXJvdXNDZWxscyQubmV4dChzZWxlY3RlZENlbGxQb3NpdGlvbnMpO1xuICAgIH1cblxuICAgIGNsZWFyRGFuZ2Vyb3VzQ2VsbHMoKSB7XG4gICAgICAgIHRoaXMuZGFuZ2Vyb3VzUm93c0luZGV4ID0gW107XG4gICAgICAgIHRoaXMuZGFuZ2Vyb3VzQ29sdW1uc0luZGV4ID0gW107XG4gICAgICAgIHRoaXMuZGFuZ2Vyb3VzQ2VsbHMkLm5leHQoW10pO1xuICAgICAgICBjb25zdCBwb3MgPSBjcmVhdGVUYWJsZVBvc2l0aW9uKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgaWYgKHBvcy50YWJsZSkge1xuICAgICAgICAgICAgdGhpcy5pc1NlbGVjdGVkVGFibGUgPSB0aGlzLnNlbGVjdGVkUm93c0luZGV4Lmxlbmd0aCA9PT0gcG9zLmdldEhlaWdodCgpICYmIHRoaXMuc2VsZWN0ZWRDb2x1bW5zSW5kZXgubGVuZ3RoID09PSBwb3MuZ2V0V2lkdGgoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRhbmdlcm91c09yU2VsZWN0ZWRDZWxsc0NoYW5nZSgpIHtcbiAgICAgICAgcmV0dXJuIG1lcmdlKHRoaXMuZGFuZ2Vyb3VzQ2VsbHMkLmFzT2JzZXJ2YWJsZSgpLnBpcGUoc2tpcCgxKSksIHRoaXMuc2VsZWN0ZWRDZWxscyQuYXNPYnNlcnZhYmxlKCkucGlwZShza2lwKDEpKSk7XG4gICAgfVxuXG4gICAgc2V0RGFuZ2Vyb3VzUm93cygpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRDZWxsUG9zaXRpb25zID0gdGhpcy5nZXRTZWxlY3RlZENlbGxQb3NpdGlvbnMoKTtcbiAgICAgICAgY29uc3QgY2VsbHMgPSBzZWxlY3RlZENlbGxQb3NpdGlvbnM7XG4gICAgICAgIGNvbnN0IHJvd3MgPSB1bmlxKG1hcChjZWxscywgJ3JvdycpKS52YWx1ZU9mKCkgYXMgbnVtYmVyW107XG4gICAgICAgIGNvbnN0IHBvcyA9IGNyZWF0ZVRhYmxlUG9zaXRpb24odGhpcy5lZGl0b3IpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBbXTtcblxuICAgICAgICB0aGlzLmRhbmdlcm91c1Jvd3NJbmRleCA9IHJvd3M7XG4gICAgICAgIHRoaXMuaXNTZWxlY3RlZFRhYmxlID0gcm93cy5sZW5ndGggPT09IHBvcy5nZXRIZWlnaHQoKTtcbiAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RlZFRhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLmRhbmdlcm91c0NvbHVtbnNJbmRleCA9IFsuLi5BcnJheShwb3MuZ2V0V2lkdGgoKSldLm1hcCgodiwgaSkgPT4gaSk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IHJvd0luZGV4IG9mIHJvd3MpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zLmdldFdpZHRoKCk7IGkrKykge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgcm93OiByb3dJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgY29sOiBpXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kYW5nZXJvdXNDZWxscyQubmV4dChyZXN1bHQpO1xuICAgIH1cblxuICAgIHNldERhbmdlcm91c0NvbHVtbnMoKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkQ2VsbFBvc2l0aW9ucyA9IHRoaXMuZ2V0U2VsZWN0ZWRDZWxsUG9zaXRpb25zKCk7XG4gICAgICAgIGNvbnN0IGNlbGxzID0gc2VsZWN0ZWRDZWxsUG9zaXRpb25zO1xuICAgICAgICBjb25zdCBjb2xzID0gdW5pcShtYXAoY2VsbHMsICdjb2wnKSkudmFsdWVPZigpIGFzIG51bWJlcltdO1xuICAgICAgICBjb25zdCBwb3MgPSBjcmVhdGVUYWJsZVBvc2l0aW9uKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gW107XG5cbiAgICAgICAgdGhpcy5kYW5nZXJvdXNDb2x1bW5zSW5kZXggPSBjb2xzO1xuICAgICAgICB0aGlzLmlzU2VsZWN0ZWRUYWJsZSA9IGNvbHMubGVuZ3RoID09PSBwb3MuZ2V0V2lkdGgoKTtcbiAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RlZFRhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLmRhbmdlcm91c1Jvd3NJbmRleCA9IFsuLi5BcnJheShwb3MuZ2V0SGVpZ2h0KCkpXS5tYXAoKF8sIGkpID0+IGkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBjb2xJbmRleCBvZiBjb2xzKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvcy5nZXRIZWlnaHQoKTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICAgICAgICAgICAgICByb3c6IGksXG4gICAgICAgICAgICAgICAgICAgIGNvbDogY29sSW5kZXhcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRhbmdlcm91c0NlbGxzJC5uZXh0KHJlc3VsdCk7XG4gICAgfVxuXG4gICAgc2V0RGFuZ2Vyb3VzVGFibGUoKSB7XG4gICAgICAgIHRoaXMuaXNTZWxlY3RlZFRhYmxlID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgcG9zID0gY3JlYXRlVGFibGVQb3NpdGlvbih0aGlzLmVkaXRvcik7XG4gICAgICAgIGNvbnN0IGNlbGxzID0gZ2V0Q2VsbFBvc2l0aW9uc0Zyb21SYW5nZSgwLCAwLCBwb3MuZ2V0SGVpZ2h0KCksIHBvcy5nZXRXaWR0aCgpKTtcbiAgICAgICAgdGhpcy5kYW5nZXJvdXNSb3dzSW5kZXggPSBbLi4uQXJyYXkocG9zLmdldEhlaWdodCgpKV0ubWFwKChfLCBpKSA9PiBpKTtcbiAgICAgICAgdGhpcy5kYW5nZXJvdXNDb2x1bW5zSW5kZXggPSBbLi4uQXJyYXkocG9zLmdldFdpZHRoKCkpXS5tYXAoKF8sIGkpID0+IGkpO1xuICAgICAgICB0aGlzLmRhbmdlcm91c0NlbGxzJC5uZXh0KGNlbGxzKTtcbiAgICB9XG5cbiAgICBzZXRTZWxlY3RlZENlbGxzQmFja2dyb3VuZENvbG9yKGJhY2tncm91bmRDb2xvcjogQ29sb3JUeXBlKSB7XG4gICAgICAgIGNvbnN0IGNlbGxzID0gdGhpcy5zZWxlY3RlZENlbGxzJC5nZXRWYWx1ZSgpO1xuICAgICAgICBFZGl0b3Iud2l0aG91dE5vcm1hbGl6aW5nKHRoaXMuZWRpdG9yLCAoKSA9PiB7XG4gICAgICAgICAgICBjZWxscy5tYXAoY2VsbCA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2VsbFBhdGggPSBBbmd1bGFyRWRpdG9yLmZpbmRQYXRoKHRoaXMuZWRpdG9yLCBjZWxsKTtcbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGVzKHRoaXMuZWRpdG9yLCB7IGJhY2tncm91bmRDb2xvciB9LCB7IGF0OiBjZWxsUGF0aCB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjbGVhclNlbGVjdGVkQ2VsbHNDb250ZW50KCkge1xuICAgICAgICBjb25zdCBjZWxscyA9IHRoaXMuZ2V0U2VsZWN0ZWRDZWxsUG9zaXRpb25zKCk7XG4gICAgICAgIGNvbnN0IHRhYmxlUG9zaXRpb24gPSBjcmVhdGVUYWJsZVBvc2l0aW9uKHRoaXMuZWRpdG9yKTtcblxuICAgICAgICBpZiAodGFibGVQb3NpdGlvbi5pc0luVGFibGUoKSkge1xuICAgICAgICAgICAgRWRpdG9yLndpdGhvdXROb3JtYWxpemluZyh0aGlzLmVkaXRvciwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgeyByb3csIGNvbCB9IG9mIGNlbGxzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNlbGxQYXRoID0gWy4uLnRhYmxlUG9zaXRpb24udGFibGVFbnRyeVsxXSwgcm93LCBjb2xdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBub2RlID0gTm9kZS5nZXQodGhpcy5lZGl0b3IsIGNlbGxQYXRoKSBhcyBUYWJsZUNlbGxFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICBUYWJsZUVkaXRvci5jbGVhckNlbGwodGhpcy5lZGl0b3IsIFtub2RlLCBjZWxsUGF0aF0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZWxlY3QodGhpcy5lZGl0b3IsIEVkaXRvci5zdGFydCh0aGlzLmVkaXRvciwgdGFibGVQb3NpdGlvbi5jZWxsRW50cnlbMV0pKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiBmueEpuWNleWFg+agvOW5tuiuvue9ruiBmueEpuebuOWFs+i3r+W+hOWPiuWFg+e0oFxuICAgICAqL1xuICAgIGZvY3VzQ2VsbChwYXRoOiBudW1iZXJbXSkge1xuICAgICAgICBjb25zdCBub2RlID0gTm9kZS5nZXQodGhpcy5lZGl0b3IsIHBhdGgpIGFzIFRhYmxlQ2VsbEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGNlbGxIVE1MRWxlbWVudCA9IEFuZ3VsYXJFZGl0b3IudG9ET01Ob2RlKHRoaXMuZWRpdG9yLCBub2RlKSBhcyBIVE1MVGFibGVDZWxsRWxlbWVudDtcbiAgICAgICAgdGhpcy5wcmVGb2N1c0NlbGxQYXRoID0gdGhpcy5mb2N1c0NlbGxQYXRoO1xuICAgICAgICB0aGlzLmZvY3VzQ2VsbFBhdGggPSBwYXRoO1xuICAgICAgICB0aGlzLmZvY3VzQ2VsbEVsZW1lbnQgPSBjZWxsSFRNTEVsZW1lbnQ7XG4gICAgICAgIGZvY3VzQ2VsbCh0aGlzLmVkaXRvciwgcGF0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5Yy65Z+f6YCJ5oup5byA5aeLXG4gICAgICogQHBhcmFtIGVkaXRvciDnvJbovpHlmajlr7nosaFcbiAgICAgKiBAcGFyYW0gY2VsbCDljZXlhYPmoLzlhYPntKBcbiAgICAgKi9cbiAgICBhcmVhU2VsZWN0aW9uU3RhcnQoY2VsbDogSFRNTFRhYmxlQ2VsbEVsZW1lbnQsIGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSBBbmd1bGFyRWRpdG9yLnRvU2xhdGVOb2RlKGVkaXRvciwgY2VsbCk7XG4gICAgICAgIGNvbnN0IHBhdGggPSBBbmd1bGFyRWRpdG9yLmZpbmRQYXRoKGVkaXRvciwgbm9kZSk7XG4gICAgICAgIHRoaXMuaXNQcmVwYXJlU2VsZWN0aW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5sYXN0Rm9jdXNDZWxsUGF0aCA9IHBhdGg7XG4gICAgICAgIGlmICghdGhpcz8uYW5jaG9yQ2VsbFBhdGgpIHtcbiAgICAgICAgICAgIHRoaXMuYW5jaG9yQ2VsbFBhdGggPSBwYXRoO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcz8uZm9jdXNDZWxsUGF0aCkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c0NlbGxQYXRoID0gcGF0aDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMucHJlRm9jdXNDZWxsUGF0aCkge1xuICAgICAgICAgICAgdGhpcy5wcmVGb2N1c0NlbGxQYXRoID0gdGhpcy5hbmNob3JDZWxsUGF0aDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiuvue9ruWMuuWfn+mAieaLqeeahOWNleWFg+agvFxuICAgICAqIEBwYXJhbSBjZWxsRWxlbWVudCDljZXlhYPmoLzlhYPntKBcbiAgICAgKi9cbiAgICBzZXRBcmVhU2VsZWN0aW9uQ2VsbHMoY2VsbEVsZW1lbnQ6IFRhYmxlQ2VsbEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKEFuZ3VsYXJFZGl0b3IuaXNSZWFkb25seSh0aGlzLmVkaXRvcikgfHwgIXRoaXMuZWRpdG9yLnNlbGVjdGlvbiB8fCAhdGhpcy5pc1ByZXBhcmVTZWxlY3RpbmcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRDZWxsUGF0aCA9IEFuZ3VsYXJFZGl0b3IuZmluZFBhdGgodGhpcy5lZGl0b3IsIGNlbGxFbGVtZW50KTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRDZWxsUG9zaXRpb25zID0gdGhpcy5nZXRTZWxlY3RlZENlbGxQb3NpdGlvbnMoKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0RXF1YWwgPSBQYXRoLmVxdWFscyhjdXJyZW50Q2VsbFBhdGgsIHRoaXMuYW5jaG9yQ2VsbFBhdGgpO1xuXG4gICAgICAgIC8vIOS4jeWPr+S7peWMuuWfn+mAieaLqeWNleS4gOWNleWFg+agvFxuICAgICAgICBpZiAoc2VsZWN0ZWRDZWxsUG9zaXRpb25zLmxlbmd0aCA8PSAxICYmIHNlbGVjdEVxdWFsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc0NlbGxTZWxlY3RpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmZvY3VzQ2VsbChjdXJyZW50Q2VsbFBhdGgpO1xuICAgICAgICB0aGlzLnNlbGVjdENlbGxzKHRoaXMuZWRpdG9yKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDlpITnkIbljLrln5/pgInmi6nlkK/nlKjml7bpgInmi6nmlbTooYwv5pW05YiXXG4gICAgICogQHBhcmFtIGNlbGxzIOmAieaLqeeahOWNleWFg+agvFxuICAgICAqL1xuICAgIGFyZWFTZWxlY3RSb3dBbmRDb2x1bW4oY2VsbHM6IENlbGxQb3NpdGlvbltdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBvcyA9IGNyZWF0ZVRhYmxlUG9zaXRpb24odGhpcy5lZGl0b3IpO1xuICAgICAgICBjb25zdCBbcm93LCBjb2xdID0gdGhpcy5mb2N1c0NlbGxQYXRoLnNsaWNlKC0yKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0Q2VsbHMgPSBbeyByb3csIGNvbCB9LCAuLi5jZWxsc107XG4gICAgICAgIGNvbnN0IHNvcnRSb3dzID0gc2VsZWN0Q2VsbHMubWFwKGl0ZW0gPT4gaXRlbS5yb3cpLnNvcnQoKG0sIG4pID0+IG0gLSBuKTtcbiAgICAgICAgY29uc3Qgc29ydENvbHMgPSBzZWxlY3RDZWxscy5tYXAoaXRlbSA9PiBpdGVtLmNvbCkuc29ydCgobSwgbikgPT4gbSAtIG4pO1xuICAgICAgICBjb25zdCBzdGFydFJvdyA9IHNvcnRSb3dzWzBdO1xuICAgICAgICBjb25zdCBzdGFydENvbCA9IHNvcnRDb2xzWzBdO1xuICAgICAgICBjb25zdCBlbmRSb3cgPSBzb3J0Q29sc1tzb3J0Q29scy5sZW5ndGggLSAxXTtcbiAgICAgICAgY29uc3QgZW5kQ29sID0gc29ydFJvd3Nbc29ydFJvd3MubGVuZ3RoIC0gMV07XG4gICAgICAgIGNvbnN0IGFuY2hvckNlbGxQYXRoID0gcG9zLnRhYmxlRW50cnlbMV0uY29uY2F0KFtlbmRDb2wsIGVuZFJvd10pO1xuICAgICAgICBjb25zdCBmb2N1c0NlbGxQYXRoID0gcG9zLnRhYmxlRW50cnlbMV0uY29uY2F0KFtzdGFydFJvdywgc3RhcnRDb2xdKTtcblxuICAgICAgICB0aGlzLnNldEFyZWFBbmNob3JDZWxsUGF0aChhbmNob3JDZWxsUGF0aCk7XG4gICAgICAgIHRoaXMuZm9jdXNDZWxsKGZvY3VzQ2VsbFBhdGgpO1xuICAgICAgICB0aGlzLnNlbGVjdENlbGxzKHRoaXMuZWRpdG9yKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7ljLrln5/pgInmi6nop6blj5Hml7bnmoTmjIflrpogYW5jaG9yQ2VsbFBhdGhcbiAgICAgKiBAcGFyYW0gcGF0aCDot6/lvoRcbiAgICAgKi9cbiAgICBzZXRBcmVhQW5jaG9yQ2VsbFBhdGgocGF0aDogbnVtYmVyW10pIHtcbiAgICAgICAgaWYgKHRoaXMuYXJlYVNlbGVjdGlvbiAmJiBwYXRoKSB7XG4gICAgICAgICAgICB0aGlzLmFuY2hvckNlbGxQYXRoID0gcGF0aDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -13,6 +13,13 @@ export const getMinAndMaxCellIndex = (editor, selectedCellPositions, maxRow, max
|
|
|
13
13
|
rowspan: node.rowspan || 1
|
|
14
14
|
};
|
|
15
15
|
}
|
|
16
|
+
else {
|
|
17
|
+
return {
|
|
18
|
+
...item,
|
|
19
|
+
colspan: 1,
|
|
20
|
+
rowspan: 1
|
|
21
|
+
};
|
|
22
|
+
}
|
|
16
23
|
});
|
|
17
24
|
}
|
|
18
25
|
table.children.forEach((row, rowIndex) => {
|
|
@@ -59,4 +66,4 @@ export const getMinAndMaxCellIndex = (editor, selectedCellPositions, maxRow, max
|
|
|
59
66
|
maxCol
|
|
60
67
|
};
|
|
61
68
|
};
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LW1pbi1tYXgtY2VsbC1pbmRleC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9wbHVnaW5zL3RhYmxlL3V0aWxzL2dldC1taW4tbWF4LWNlbGwtaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FDakMsTUFBYyxFQUNkLHFCQUFxQyxFQUNyQyxNQUFjLEVBQ2QsTUFBYyxFQUNkLE1BQWMsRUFDZCxNQUFjLEVBQ2QsS0FBbUIsRUFDK0MsRUFBRTtJQUNwRSxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFDdEIsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLElBQUksaUJBQWlCLEdBQUcsRUFBRSxDQUFDO0lBQzNCLElBQUkscUJBQXFCLENBQUMsTUFBTSxFQUFFO1FBQzlCLGlCQUFpQixHQUFHLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNqRCxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztZQUMxQixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQXFCLENBQUM7WUFDbkUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ2QsT0FBTztvQkFDSCxHQUFHLElBQUk7b0JBQ1AsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQztvQkFDMUIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQztpQkFDN0IsQ0FBQzthQUNMO2lCQUFNO2dCQUNILE9BQU87b0JBQ0gsR0FBRyxJQUFJO29CQUNQLE9BQU8sRUFBRSxDQUFDO29CQUNWLE9BQU8sRUFBRSxDQUFDO2lCQUNiLENBQUM7YUFDTDtRQUNMLENBQUMsQ0FBQyxDQUFDO0tBQ047SUFFRCxLQUFL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QVksS0FBSyxNQUFNLENBQ3hILENBQUM7SUFDRixJQUFJLE9BQU8sQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtRQUNsQyxPQUFPLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDdEc7SUFDRCxPQUFPO1FBQ0gsTUFBTTtRQUNOLE1BQU07UUFDTixNQUFNO1FBQ04sTUFBTTtLQUNULENBQUM7QUFDTixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFZGl0b3IgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBUYWJsZUVsZW1lbnQsIFRhYmxlQ2VsbEVsZW1lbnQgfSBmcm9tICcuLi8uLi8uLi9jdXN0b20tdHlwZXMnO1xuaW1wb3J0IHsgQ2VsbFBvc2l0aW9uIH0gZnJvbSAnLi4vdGFibGUudHlwZXMnO1xuXG5leHBvcnQgY29uc3QgZ2V0TWluQW5kTWF4Q2VsbEluZGV4ID0gKFxuICAgIGVkaXRvcjogRWRpdG9yLFxuICAgIHNlbGVjdGVkQ2VsbFBvc2l0aW9uczogQ2VsbFBvc2l0aW9uW10sXG4gICAgbWF4Um93OiBudW1iZXIsXG4gICAgbWF4Q29sOiBudW1iZXIsXG4gICAgbWluUm93OiBudW1iZXIsXG4gICAgbWluQ29sOiBudW1iZXIsXG4gICAgdGFibGU6IFRhYmxlRWxlbWVudFxuKTogeyBtaW5Sb3c6IG51bWJlcjsgbWF4Um93OiBudW1iZXI7IG1pbkNvbDogbnVtYmVyOyBtYXhDb2w6IG51bWJlciB9ID0+IHtcbiAgICBjb25zdCBiZWZvcmVDb2xzID0gW107XG4gICAgY29uc3QgYmVmb3JlUm93cyA9IFtdO1xuICAgIGxldCBzcGFuU2VsZWN0ZWRDZWxscyA9IFtdO1xuICAgIGlmIChzZWxlY3RlZENlbGxQb3NpdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgIHNwYW5TZWxlY3RlZENlbGxzID0gc2VsZWN0ZWRDZWxsUG9zaXRpb25zLm1hcChpdGVtID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgcm93LCBjb2wgfSA9IGl0ZW07XG4gICAgICAgICAgICBjb25zdCBub2RlID0gdGFibGUuY2hpbGRyZW5bcm93XS5jaGlsZHJlbltjb2xdIGFzIFRhYmxlQ2VsbEVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAoIW5vZGUuaGlkZGVuKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgY29sc3Bhbjogbm9kZS5jb2xzcGFuIHx8IDEsXG4gICAgICAgICAgICAgICAgICAgIHJvd3NwYW46IG5vZGUucm93c3BhbiB8fCAxXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgY29sc3BhbjogMSxcbiAgICAgICAgICAgICAgICAgICAgcm93c3BhbjogMVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHRhYmxlLmNoaWxkcmVuLmZvckVhY2goKHJvdywgcm93SW5kZXgpID0+IHtcbiAgICAgICAgaWYgKHJvd0luZGV4IDw9IG1heFJvdykge1xuICAgICAgICAgICAgcm93LmNoaWxkcmVuLmZvckVhY2goKGNlbGw6IFRhYmxlQ2VsbEVsZW1lbnQsIGNvbEluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNvbEluZGV4IDw9IG1heENvbCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjZWxsUm93SW5kZXggPSByb3dJbmRleCArIChjZWxsLnJvd3NwYW4gfHwgMSkgLSAxO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjZWxsQ29sSW5kZXggPSBjb2xJbmRleCArIChjZWxsLmNvbHNwYW4gfHwgMSkgLSAxO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChzcGFuU2VsZWN0ZWRDZWxscy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgcm93OiBzZWxlY3RSb3csIGNvbDogc2VsZWN0Q29sLCByb3dzcGFuOiBzZWxlY3RSb3dTcGFuLCBjb2xzcGFuOiBzZWxlY3RDb2xTcGFuIH0gPSBzcGFuU2VsZWN0ZWRDZWxsc1swXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RSb3cgKyBzZWxlY3RSb3dTcGFuIC0gMSA+PSBtaW5Sb3cgJiYgc2VsZWN0Q29sICsgc2VsZWN0Q29sU3BhbiAtIDEgPj0gbWluQ29sKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluUm93ID0gTWF0aC5taW4oc2VsZWN0Um93LCBtaW5Sb3cpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbkNvbCA9IE1hdGgubWluKHNlbGVjdENvbCwgbWluQ29sKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChjZWxsLmNvbHNwYW4gJiYgY2VsbC5jb2xzcGFuID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlQ29scy5wdXNoKHsgcm93SW5kZXgsIGNvbEluZGV4LCBjZWxsQ29sSW5kZXggfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2VsbENvbEluZGV4ID49IG1pbkNvbCAmJiBjZWxsUm93SW5kZXggPj0gbWluUm93KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Q29sID0gTWF0aC5tYXgobWF4Q29sLCBjZWxsQ29sSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbkNvbCA9IE1hdGgubWluKG1pbkNvbCwgY29sSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGwucm93c3BhbiAmJiBjZWxsLnJvd3NwYW4gPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmVSb3dzLnB1c2goeyByb3dJbmRleCwgY29sSW5kZXgsIGNlbGxSb3dJbmRleCB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjZWxsQ29sSW5kZXggPj0gbWluQ29sICYmIGNlbGxSb3dJbmRleCA+PSBtaW5Sb3cpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5Sb3cgPSBNYXRoLm1pbihtaW5Sb3csIHJvd0luZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhSb3cgPSBNYXRoLm1heChtYXhSb3csIGNlbGxSb3dJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8g5Yik5pat6YCJ5Yy66IyD5Zu05YaF5LmL5YmN55qE5Y2V5YWD5qC8IOWmguaenOWtmOWcqGNlbGxDb2xJbmRleCA9PT0gbWluQ29s77yM6KGo56S65b2T5YmN6I635Y+W55qEbWluQ29s5bm25LiN5piv5pyA5bCP55qE77yM6YeN5paw6I635Y+WbWluQ29sXG4gICAgY29uc3QgY29sTm9kZSA9IGJlZm9yZUNvbHMuZmlsdGVyKFxuICAgICAgICBpdGVtID0+IGl0ZW0ucm93SW5kZXggPD0gbWF4Um93ICYmIGl0ZW0uY29sSW5kZXggPD0gbWF4Q29sICYmIGl0ZW0ucm93SW5kZXggPj0gbWluUm93ICYmIGl0ZW0uY2VsbENvbEluZGV4ID09PSBtaW5Db2xcbiAgICApO1xuICAgIGNvbnN0IHJvd05vZGUgPSBiZWZvcmVSb3dzLmZpbHRlcihcbiAgICAgICAgaXRlbSA9PiBpdGVtLnJvd0luZGV4IDw9IG1heFJvdyAmJiBpdGVtLmNvbEluZGV4IDw9IG1heENvbCAmJiBpdGVtLmNvbEluZGV4ID49IG1pbkNvbCAmJiBpdGVtLmNlbGxSb3dJbmRleCA9PT0gbWluUm93XG4gICAgKTtcbiAgICBpZiAoY29sTm9kZS5sZW5ndGggfHwgcm93Tm9kZS5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIGdldE1pbkFuZE1heENlbGxJbmRleChlZGl0b3IsIHNlbGVjdGVkQ2VsbFBvc2l0aW9ucywgbWF4Um93LCBtYXhDb2wsIG1pblJvdywgbWluQ29sLCB0YWJsZSk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIG1pblJvdyxcbiAgICAgICAgbWF4Um93LFxuICAgICAgICBtaW5Db2wsXG4gICAgICAgIG1heENvbFxuICAgIH07XG59O1xuIl19
|