@libs-ui/components-drag-drop 0.2.189 → 0.2.191
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/README.md +444 -2
- package/demo/demo.component.d.ts +56 -0
- package/drag-item.directive.d.ts +1 -2
- package/esm2022/demo/demo.component.mjs +804 -0
- package/esm2022/drag-drop.directive.mjs +10 -8
- package/esm2022/drag-item.directive.mjs +2 -4
- package/esm2022/index.mjs +2 -1
- package/fesm2022/libs-ui-components-drag-drop.mjs +812 -12
- package/fesm2022/libs-ui-components-drag-drop.mjs.map +1 -1
- package/index.d.ts +1 -0
- package/package.json +3 -3
|
@@ -103,8 +103,8 @@ export class LibsUiComponentsDragContainerDirective extends LibsUiComponentsDrag
|
|
|
103
103
|
items.splice(indexDragOver, 0, item);
|
|
104
104
|
return [...items];
|
|
105
105
|
});
|
|
106
|
-
indexSpliceListTo = indexDragOver;
|
|
107
106
|
this.setAttributeElementAndItemDrag(elementContainer, false, indexSpliceListTo);
|
|
107
|
+
indexSpliceListTo = indexDragOver;
|
|
108
108
|
}
|
|
109
109
|
return;
|
|
110
110
|
}
|
|
@@ -136,8 +136,8 @@ export class LibsUiComponentsDragContainerDirective extends LibsUiComponentsDrag
|
|
|
136
136
|
items.splice(childElementIndex, 1);
|
|
137
137
|
return [...items];
|
|
138
138
|
});
|
|
139
|
+
indexSpliceListTo = -1;
|
|
139
140
|
}
|
|
140
|
-
indexSpliceListTo = -1;
|
|
141
141
|
this.removeAttributes(elementContainer, isDragging);
|
|
142
142
|
this.setIndexElement(elementContainer);
|
|
143
143
|
return;
|
|
@@ -147,8 +147,8 @@ export class LibsUiComponentsDragContainerDirective extends LibsUiComponentsDrag
|
|
|
147
147
|
items.splice(indexSpliceListTo, 1);
|
|
148
148
|
return [...items];
|
|
149
149
|
});
|
|
150
|
+
indexSpliceListTo = -1;
|
|
150
151
|
}
|
|
151
|
-
indexSpliceListTo = -1;
|
|
152
152
|
};
|
|
153
153
|
const handlerDragging = (eventDragging) => {
|
|
154
154
|
this.setAttributeElementAndItemDrag(elementContainer);
|
|
@@ -279,7 +279,7 @@ export class LibsUiComponentsDragContainerDirective extends LibsUiComponentsDrag
|
|
|
279
279
|
if (this.groupID() !== elementDrop.getAttribute('groupID') || elementDrag.getAttribute('groupID') === elementDrop.getAttribute('groupID')) {
|
|
280
280
|
return;
|
|
281
281
|
}
|
|
282
|
-
const indexDragOver = Number(elementDrop.getAttribute('index')).valueOf() - (elementDrop.getAttribute('dropContainer') ? 0 : 1);
|
|
282
|
+
const indexDragOver = this.groupID() !== elementDrag.getAttribute('groupID') ? Number(elementDrop.getAttribute('index')).valueOf() : Number(elementDrop.getAttribute('index')).valueOf() - (elementDrop.getAttribute('dropContainer') ? 0 : 1);
|
|
283
283
|
const item = this.mode() === 'deepCopy' ? cloneDeep(itemDragInfo?.item) : itemDragInfo?.item;
|
|
284
284
|
if (itemDragInfo) {
|
|
285
285
|
itemDragInfo.indexDrop = indexDragOver;
|
|
@@ -295,7 +295,7 @@ export class LibsUiComponentsDragContainerDirective extends LibsUiComponentsDrag
|
|
|
295
295
|
});
|
|
296
296
|
if (itemDragInfo && itemDragInfo.itemsMove && itemDragInfo.itemsMove()) {
|
|
297
297
|
itemDragInfo.itemsDrag.set([...itemDragInfo.itemsMove()]);
|
|
298
|
-
this.setAttributeElementAndItemDrag(elementContainer);
|
|
298
|
+
setTimeout(() => this.setAttributeElementAndItemDrag(elementContainer));
|
|
299
299
|
}
|
|
300
300
|
this.outDroppedContainer.emit(eventDrop);
|
|
301
301
|
this.removeAttributes(elementContainer);
|
|
@@ -308,7 +308,8 @@ export class LibsUiComponentsDragContainerDirective extends LibsUiComponentsDrag
|
|
|
308
308
|
}, {
|
|
309
309
|
name: 'OnDragOver',
|
|
310
310
|
event: this.dragDropService.OnDragOver,
|
|
311
|
-
functionCall: handlerDragOver
|
|
311
|
+
functionCall: handlerDragOver,
|
|
312
|
+
debounceTime: 5
|
|
312
313
|
}, {
|
|
313
314
|
name: 'OnDragging',
|
|
314
315
|
event: this.dragDropService.OnDragging,
|
|
@@ -321,7 +322,8 @@ export class LibsUiComponentsDragContainerDirective extends LibsUiComponentsDrag
|
|
|
321
322
|
name: 'OnDrop',
|
|
322
323
|
event: this.dragDropService.OnDrop,
|
|
323
324
|
functionCall: handlerDrop
|
|
324
|
-
}
|
|
325
|
+
}
|
|
326
|
+
].forEach((item) => (item.event.pipe(debounceTime(item.debounceTime || 0), takeUntil(this.onDestroy)).subscribe(item.functionCall)));
|
|
325
327
|
}
|
|
326
328
|
/* */
|
|
327
329
|
async setAttributeElementAndItemDrag(elementContainer, setItemDrag, indexInsert) {
|
|
@@ -461,4 +463,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
461
463
|
standalone: true,
|
|
462
464
|
}]
|
|
463
465
|
}], ctorParameters: () => [] });
|
|
464
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1kcm9wLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9kcmFnLWRyb3Avc3JjL2RyYWctZHJvcC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWEsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckgsT0FBTyxFQUFFLHlCQUF5QixFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBYyxZQUFZLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBTzlFLE1BQU0sT0FBTyxzQ0FBdUMsU0FBUSxtQ0FBbUM7SUFDN0YsbUJBQW1CO0lBQ1gsT0FBTyxHQUFHLE1BQU0sQ0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLFVBQVUsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7SUFFNUMsZ0JBQWdCO0lBQ1Asb0JBQW9CLEdBQUcsS0FBSyxFQUFXLENBQUM7SUFDeEMsSUFBSSxHQUFHLEtBQUssQ0FBdUMsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDcEcsYUFBYSxHQUFHLEtBQUssRUFBNkIsQ0FBQztJQUNuRCxpQkFBaUIsR0FBRyxLQUFLLENBQXVELFVBQVUsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssSUFB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LFNBQVMsQ0FBQyxNQUFNLENBQUMseUNBQXlDLENBQUMsQ0FBQztZQUMzRSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFTCxDQUFDO3dHQXhnQlUsc0NBQXNDOzRGQUF0QyxzQ0FBc0M7OzRGQUF0QyxzQ0FBc0M7a0JBTGxELFNBQVM7bUJBQUM7b0JBQ1QsOERBQThEO29CQUM5RCxRQUFRLEVBQUUsMENBQTBDO29CQUNwRCxVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIE9uRGVzdHJveSwgZWZmZWN0LCBpbnB1dCwgbW9kZWwsIG91dHB1dCwgc2lnbmFsLCB1bnRyYWNrZWQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgY2hlY2tNb3VzZU92ZXJJbkNvbnRhaW5lciwgY2xvbmVEZWVwLCBnZXQsIHNldCwgdXVpZCB9IGZyb20gXCJAbGlicy11aS91dGlsc1wiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBzdHlsZUNvbnRhaW5lciB9IGZyb20gXCIuL2RlZmluZXMvY3NzLmRlZmluZVwiO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c0RyYWdTY3JvbGxEaXJlY3RpdmUgfSBmcm9tIFwiLi9kcmFnLXNjcm9sbC5kaXJlY3RpdmVcIjtcbmltcG9ydCB7IElEcmFnRHJvcEZ1bmN0aW9uQ29udHJvbEV2ZW50LCBJRHJhZ0VuZCwgSURyYWdMZWF2ZSwgSURyYWdPdmVyLCBJRHJhZ1N0YXJ0LCBJRHJhZ2dpbmcsIElEcm9wIH0gZnJvbSBcIi4vaW50ZXJmYWNlcy9ldmVudC5pbnRlcmZhY2VcIjtcbkBEaXJlY3RpdmUoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICBzZWxlY3RvcjogXCJbTGlic1VpQ29tcG9uZW50c0RyYWdDb250YWluZXJEaXJlY3RpdmVdXCIsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNEcmFnQ29udGFpbmVyRGlyZWN0aXZlIGV4dGVuZHMgTGlic1VpQ29tcG9uZW50c0RyYWdTY3JvbGxEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAvLyAjcmVnaW9uIFBST1BFUlRZXG4gIHByaXZhdGUgZ3JvdXBJRCA9IHNpZ25hbDxzdHJpbmc+KHV1aWQoKSk7XG4gIHByaXZhdGUgaXNEcmFnT3ZlciA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgLy8gI3JlZ2lvbiBJTlBVVFxuICByZWFkb25seSBkaXNhYmxlRHJhZ0NvbnRhaW5lciA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IG1vZGUgPSBpbnB1dDxzdHJpbmcsICdtb3ZlJyB8ICdjb3B5JyB8ICdkZWVwQ29weSc+KCdtb3ZlJywgeyB0cmFuc2Zvcm06IHZhbHVlID0+IHZhbHVlID8/ICdtb3ZlJyB9KTtcbiAgcmVhZG9ubHkgZGlyZWN0aW9uRHJhZyA9IGlucHV0PCdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCc+KCk7XG4gIHJlYWRvbmx5IHZpZXdFbmNhcHN1bGF0aW9uID0gaW5wdXQ8J2VtdWxhdGVkJyB8ICdub25lJywgJ2VtdWxhdGVkJyB8ICdub25lJyB8IHVuZGVmaW5lZD4oJ2VtdWxhdGVkJywgeyB0cmFuc2Zvcm06IHZhbHVlID0+IHZhbHVlID8/ICdlbXVsYXRlZCcgfSk7XG4gIHJlYWRvbmx5IGFjY2VwdERyYWdTYW1lR3JvdXAgPSBpbnB1dDxib29sZWFuLCBib29sZWFuIHwgdW5kZWZpbmVkPihmYWxzZSwgeyB0cmFuc2Zvcm06IHZhbHVlID0+IHZhbHVlID8/IGZhbHNlIH0pO1xuICByZWFkb25seSBwbGFjZWhvbGRlciA9IGlucHV0PGJvb2xlYW4sIGJvb2xlYW4gfCB1bmRlZmluZWQ+KHRydWUsIHsgdHJhbnNmb3JtOiB2YWx1ZSA9PiB2YWx1ZSA/PyB0cnVlIH0pO1xuICByZWFkb25seSBncm91cE5hbWUgPSBpbnB1dDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4oJ2dyb3VwRHJhZ0FuZERyb3BEZWZhdWx0JywgeyB0cmFuc2Zvcm06IHZhbHVlID0+IHZhbHVlID8/ICdncm91cERyYWdBbmREcm9wRGVmYXVsdCcgfSk7IC8vIG7hur91IGPDoWMgZ3JvdXAgY8OzIHTDqm4gdHLDuW5nIG5oYXUgc+G6vSDEkcaw4bujYyBkcm9wXG4gIHJlYWRvbmx5IGRyb3BUb0dyb3VwTmFtZSA9IGlucHV0PEFycmF5PHN0cmluZz4gfCBudWxsPihudWxsKTsgLy8gbuG6v3UgaXRlbSB0cm9uZyBjw6FjIGdyb3VwIEEgxJHGsOG7o2MgZHJvcCB2w6BvIGdyb3VwIEIgbmjGsG5nIGdyb3VwIEIga2jDtG5nIMSRxrDhu6NjIGRyb3AgdsOgbyBncm91cCBBXG4gIHJlYWRvbmx5IGl0ZW1zID0gbW9kZWwucmVxdWlyZWQ8QXJyYXk8dW5rbm93bj4+KCk7XG4gIHJlYWRvbmx5IHN0eWxlc092ZXJyaWRlID0gaW5wdXQ8QXJyYXk8eyBjbGFzc05hbWU6IHN0cmluZywgc3R5bGVzOiBzdHJpbmcgfT4+KCk7XG5cbiAgLy8gI3JlZ2lvbiBPVVRQVVRcbiAgcmVhZG9ubHkgb3V0RHJhZ1N0YXJ0Q29udGFpbmVyID0gb3V0cHV0PElEcmFnU3RhcnQ+KCk7XG4gIHJlYWRvbmx5IG91dERyYWdPdmVyQ29udGFpbmVyID0gb3V0cHV0PElEcmFnT3Zlcj4oKTtcbiAgcmVhZG9ubHkgb3V0RHJhZ0xlYXZlQ29udGFpbmVyID0gb3V0cHV0PElEcmFnTGVhdmU+KCk7XG4gIHJlYWRvbmx5IG91dERyYWdFbmRDb250YWluZXIgPSBvdXRwdXQ8SURyYWdFbmQ+KCk7XG4gIHJlYWRvbmx5IG91dERyb3BwZWRDb250YWluZXIgPSBvdXRwdXQ8SURyb3A+KCk7XG4gIHJlYWRvbmx5IG91dERyb3BwZWRDb250YWluZXJFbXB0eSA9IG91dHB1dDxJRHJvcD4oKTtcbiAgcmVhZG9ubHkgb3V0RnVuY3Rpb25Db250cm9sID0gb3V0cHV0PElEcmFnRHJvcEZ1bmN0aW9uQ29udHJvbEV2ZW50PigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgY29uc3QgY29udGFpbmVyID0geyBlbGVtZW50IH07XG5cbiAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5Db250YWluZXIudXBkYXRlKGRhdGEgPT4ge1xuICAgICAgZGF0YS5zZXQodGhpcy5ncm91cElEKCksIGNvbnRhaW5lcik7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9KTtcblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMucm9vdEVsZW1lbnRTY3JvbGwoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgICBzZXQoY29udGFpbmVyLCAnZWxlbWVudFNjcm9sbCcsIHRoaXMucm9vdEVsZW1lbnRTY3JvbGwoKSk7XG4gICAgICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkNvbnRhaW5lci51cGRhdGUoY29udGFpbmVyTWFwID0+IG5ldyBNYXAoY29udGFpbmVyTWFwKSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5kaXJlY3Rpb25EcmFnKCkgJiYgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGVFbGVtZW50QW5kSXRlbURyYWcodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5kaXNhYmxlRHJhZ0NvbnRhaW5lcigpICYmIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgIHRoaXMuc2V0QXR0cmlidXRlRWxlbWVudEFuZEl0ZW1EcmFnKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm91dEZ1bmN0aW9uQ29udHJvbC5lbWl0KHsgc2V0QXR0cmlidXRlRWxlbWVudEFuZEl0ZW1EcmFnOiAoKSA9PiB0aGlzLnNldEF0dHJpYnV0ZUVsZW1lbnRBbmRJdGVtRHJhZyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkgfSk7XG5cbiAgICB0aGlzLm91dERyb3BwZWRDb250YWluZXIuc3Vic2NyaWJlKGV2ZW50RHJvcHBlZCA9PiB7XG4gICAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5PbkRyb3BDb250YWluZXIubmV4dChldmVudERyb3BwZWQpO1xuICAgIH0pO1xuICAgIHRoaXMub25EZXN0cm95LnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAoaW5kZXhTcGxpY2VMaXN0VG8gPiAtMSkge1xuICAgICAgICB0aGlzLml0ZW1zLnVwZGF0ZShpdGVtcyA9PiB7XG4gICAgICAgICAgaXRlbXMuc3BsaWNlKGluZGV4U3BsaWNlTGlzdFRvLCAxKTtcbiAgICAgICAgICByZXR1cm4gWy4uLml0ZW1zXTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkNvbnRhaW5lcigpLmRlbGV0ZSh0aGlzLmdyb3VwSUQoKSk7XG4gICAgfSk7XG4gICAgY29uc3QgZWxlbWVudENvbnRhaW5lciA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgdGhpcy5pbml0U3R5bGVBbmRBdHRyaWJ1dGUoZWxlbWVudENvbnRhaW5lciwgdHJ1ZSk7XG4gICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuT25JdGVtSW5pdC5waXBlKGRlYm91bmNlVGltZSgyNTApLCBmaWx0ZXIoZ3JvdXBOYW1lID0+IGdyb3VwTmFtZSA9PT0gdGhpcy5ncm91cE5hbWUoKSksIHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmluaXRTdHlsZUFuZEF0dHJpYnV0ZShlbGVtZW50Q29udGFpbmVyKSk7XG4gICAgY29uc3Qgc3R5bGVUYWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG5cbiAgICBzdHlsZVRhZy50ZXh0Q29udGVudCA9IHN0eWxlQ29udGFpbmVyKCh0aGlzLnN0eWxlc092ZXJyaWRlKCkgfHwgW10pLCB0aGlzLnZpZXdFbmNhcHN1bGF0aW9uKCksIHRoaXMuZ3JvdXBJRCgpKTtcbiAgICBlbGVtZW50Q29udGFpbmVyLmFwcGVuZENoaWxkKHN0eWxlVGFnKTtcbiAgICBlbGVtZW50Q29udGFpbmVyLmNsYXNzTGlzdC5hZGQodGhpcy5kcmFnRHJvcFNlcnZpY2UuQ2xhc3NDb250YWluZXJEZWZpbmUpO1xuXG4gICAgY29uc3QgaGFuZGxlckRyYWdTdGFydCA9IChldmVudERyYWdTdGFydDogSURyYWdTdGFydCkgPT4ge1xuXG4gICAgICB0aGlzLnNldEF0dHJpYnV0ZUVsZW1lbnRBbmRJdGVtRHJhZyhlbGVtZW50Q29udGFpbmVyLCB0cnVlKTtcbiAgICAgIGlmICh0aGlzLmdyb3VwSUQoKSA9PT0gZXZlbnREcmFnU3RhcnQuZWxlbWVudERyYWcuZ2V0QXR0cmlidXRlKCdncm91cElEJykpIHtcbiAgICAgICAgdGhpcy5vdXREcmFnU3RhcnRDb250YWluZXIuZW1pdCh7IC4uLmV2ZW50RHJhZ1N0YXJ0LCBpdGVtRHJhZ0luZm86IHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkl0ZW1EcmFnSW5mbyB9KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgc3RvcmVJbmRleCA9IHsgaW5kZXhEcmFnOiAtMSwgaW5kZXhEcmFnT3ZlcjogLTEgfTtcbiAgICBsZXQgaW5kZXhTcGxpY2VMaXN0VG8gPSAtMTtcbiAgICBjb25zdCBoYW5kbGVyRHJhZ092ZXIgPSAoZXZlbnREcmFnT3ZlcjogSURyYWdPdmVyKSA9PiB7XG4gICAgICBjb25zdCB7IGVsZW1lbnREcmFnLCBlbGVtZW50RHJhZ092ZXIgfSA9IGV2ZW50RHJhZ092ZXI7XG5cbiAgICAgIGlmICh0aGlzLmRpc2FibGVEcmFnQ29udGFpbmVyKCkgfHwgIXRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLmNoZWNrRWxlbWVudE92ZXJBY2NlcHRFbGVtZW50RHJhZyh0aGlzLmdyb3VwTmFtZSgpLCBlbGVtZW50RHJhZy5nZXRBdHRyaWJ1dGUoJ2dyb3VwTmFtZScpLCBlbGVtZW50RHJhZy5nZXRBdHRyaWJ1dGUoJ2Ryb3BUb0dyb3VwTmFtZScpKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBpbmRleERyYWcgPSBOdW1iZXIoZWxlbWVudERyYWcuZ2V0QXR0cmlidXRlKCdpbmRleCcpKS52YWx1ZU9mKCk7XG4gICAgICBjb25zdCBpbmRleERyYWdPdmVyID0gTnVtYmVyKGVsZW1lbnREcmFnT3Zlci5nZXRBdHRyaWJ1dGUoJ2luZGV4JykpLnZhbHVlT2YoKTtcbiAgICAgIGNvbnN0IGlkR3JvdXBFbGVtZW50RHJhZyA9IGVsZW1lbnREcmFnLmdldEF0dHJpYnV0ZSgnZ3JvdXBJRCcpO1xuICAgICAgY29uc3QgaWRHcm91cEVsZW1lbnREcmFnT3ZlciA9IGVsZW1lbnREcmFnT3Zlci5nZXRBdHRyaWJ1dGUoJ2dyb3VwSUQnKTtcblxuICAgICAgaWYgKCh0aGlzLmdyb3VwSUQoKSAhPT0gaWRHcm91cEVsZW1lbnREcmFnKSB8fCAoaWRHcm91cEVsZW1lbnREcmFnICE9PSBpZEdyb3VwRWxlbWVudERyYWdPdmVyKSkgeyAvLyB44butIGzDvSBjaG8gaXRlbSBkcmFnIG92ZXIgcXVhIDEgaXRlbSBraMOhYyBjb250YWluZXJcbiAgICAgICAgaWYgKGlkR3JvdXBFbGVtZW50RHJhZ092ZXIgPT09IHRoaXMuZ3JvdXBJRCgpICYmIHRoaXMucGxhY2Vob2xkZXIoKSkge1xuICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLm1vZGUoKSA9PT0gJ2RlZXBDb3B5JyA/IGNsb25lRGVlcCh0aGlzLmRyYWdEcm9wU2VydmljZS5JdGVtRHJhZ0luZm8/Lml0ZW0pIDogdGhpcy5kcmFnRHJvcFNlcnZpY2UuSXRlbURyYWdJbmZvPy5pdGVtO1xuXG4gICAgICAgICAgdGhpcy5pdGVtcy51cGRhdGUoaXRlbXMgPT4ge1xuICAgICAgICAgICAgaWYgKGluZGV4U3BsaWNlTGlzdFRvID49IDApIHtcbiAgICAgICAgICAgICAgaXRlbXMuc3BsaWNlKGluZGV4U3BsaWNlTGlzdFRvLCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGl0ZW1zLnNwbGljZShpbmRleERyYWdPdmVyLCAwLCBpdGVtKTtcbiAgICAgICAgICAgIHJldHVybiBbLi4uaXRlbXNdO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGluZGV4U3BsaWNlTGlzdFRvID0gaW5kZXhEcmFnT3ZlcjtcbiAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZUVsZW1lbnRBbmRJdGVtRHJhZyhlbGVtZW50Q29udGFpbmVyLCBmYWxzZSwgaW5kZXhTcGxpY2VMaXN0VG8pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMuYWNjZXB0RHJhZ1NhbWVHcm91cCgpIHx8IGluZGV4RHJhZyA8IDAgfHwgaW5kZXhEcmFnT3ZlciA8IDAgfHwgIXRoaXMuaXRlbXMoKS5sZW5ndGggfHwgaW5kZXhEcmFnID4gdGhpcy5pdGVtcygpLmxlbmd0aCB8fCBpbmRleERyYWdPdmVyID4gdGhpcy5pdGVtcygpLmxlbmd0aCB8fCAoc3RvcmVJbmRleC5pbmRleERyYWcgPT09IGluZGV4RHJhZyAmJiBzdG9yZUluZGV4LmluZGV4RHJhZ092ZXIgPT09IGluZGV4RHJhZ092ZXIpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIC8vIHjhu60gbMO9IGNobyBpdGVtIGRyYWcgb3ZlciBxdWEgMSBpdGVtIGPDuW5nIGNvbnRhaW5lclxuICAgICAgY29uc3QgaXRlbURyYWcgPSB0aGlzLml0ZW1zKClbaW5kZXhEcmFnXTtcblxuICAgICAgdGhpcy5zZXRBbmltYXRpb25FbGVtZW50RHJhZ092ZXIoaW5kZXhEcmFnLCBpbmRleERyYWdPdmVyLCBlbGVtZW50RHJhZ092ZXIpO1xuICAgICAgc3RvcmVJbmRleC5pbmRleERyYWcgPSBpbmRleERyYWc7XG4gICAgICBzdG9yZUluZGV4LmluZGV4RHJhZ092ZXIgPSBpbmRleERyYWdPdmVyO1xuICAgICAgdGhpcy5pdGVtcy51cGRhdGUoaXRlbXMgPT4ge1xuICAgICAgICBpdGVtcy5zcGxpY2UoaW5kZXhEcmFnLCAxKTtcbiAgICAgICAgaXRlbXMuc3BsaWNlKGluZGV4RHJhZ092ZXIsIDAsIGl0ZW1EcmFnKTtcbiAgICAgICAgcmV0dXJuIFsuLi5pdGVtc107XG4gICAgICB9KTtcblxuICAgICAgZWxlbWVudERyYWcuc2V0QXR0cmlidXRlKCdpbmRleCcsIGluZGV4RHJhZ092ZXIudG9TdHJpbmcoKSk7XG4gICAgICB0aGlzLnNldEF0dHJpYnV0ZUVsZW1lbnRBbmRJdGVtRHJhZyhlbGVtZW50Q29udGFpbmVyKTtcbiAgICB9O1xuXG4gICAgY29uc3QgcmVtb3ZlUGxhY2Vob2xkZXJEcmFnID0gKGV2ZW50RHJhZzogSURyYWdFbmQsIGlzRHJhZ2dpbmc/OiBib29sZWFuKSA9PiB7XG4gICAgICBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWxTY3JvbGxUb0VsZW1lbnQoKSk7XG4gICAgICBzdG9yZUluZGV4LmluZGV4RHJhZyA9IC0xO1xuICAgICAgc3RvcmVJbmRleC5pbmRleERyYWdPdmVyID0gLTE7XG4gICAgICBjb25zdCBjaGlsZHJlbkVsZW1lbnQgPSBlbGVtZW50Q29udGFpbmVyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUodGhpcy5kcmFnRHJvcFNlcnZpY2UuQ2xhc3NJdGVtRGVmaW5lKSBhcyB1bmtub3duIGFzIEFycmF5PEhUTUxFbGVtZW50PjtcblxuICAgICAgaWYgKCFjaGVja01vdXNlT3ZlckluQ29udGFpbmVyKGV2ZW50RHJhZy5tb3VzZVBvc2l0aW9uLCAodGhpcy5yb290RWxlbWVudFNjcm9sbCgpIHx8IGVsZW1lbnRDb250YWluZXIpKSkge1xuICAgICAgICBjb25zdCBjaGlsZEVsZW1lbnRJbmRleCA9IEFycmF5LmZyb208SFRNTEVsZW1lbnQ+KGNoaWxkcmVuRWxlbWVudCkuZmluZEluZGV4KChjaGlsZCkgPT4gY2hpbGQuY2xhc3NMaXN0LmNvbnRhaW5zKCdsaWJzLXVpLWRyYWctZHJvcC1pdGVtLWRyb3AtcGxhY2Vob2xkZXInKSk7XG5cbiAgICAgICAgaWYgKGNoaWxkRWxlbWVudEluZGV4ID49IDAgJiYgdGhpcy5ncm91cElEKCkgIT09IGV2ZW50RHJhZy5lbGVtZW50RHJhZy5nZXRBdHRyaWJ1dGUoJ2dyb3VwSUQnKSkge1xuICAgICAgICAgIHRoaXMuaXRlbXMudXBkYXRlKGl0ZW1zID0+IHtcbiAgICAgICAgICAgIGl0ZW1zLnNwbGljZShjaGlsZEVsZW1lbnRJbmRleCwgMSk7XG4gICAgICAgICAgICByZXR1cm4gWy4uLml0ZW1zXTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpbmRleFNwbGljZUxpc3RUbyA9IC0xO1xuXG4gICAgICAgIHRoaXMucmVtb3ZlQXR0cmlidXRlcyhlbGVtZW50Q29udGFpbmVyLCBpc0RyYWdnaW5nKTtcbiAgICAgICAgdGhpcy5zZXRJbmRleEVsZW1lbnQoZWxlbWVudENvbnRhaW5lcik7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGluZGV4U3BsaWNlTGlzdFRvID49IDApIHtcbiAgICAgICAgdGhpcy5pdGVtcy51cGRhdGUoaXRlbXMgPT4ge1xuICAgICAgICAgIGl0ZW1zLnNwbGljZShpbmRleFNwbGljZUxpc3RUbywgMSk7XG4gICAgICAgICAgcmV0dXJuIFsuLi5pdGVtc107XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaW5kZXhTcGxpY2VMaXN0VG8gPSAtMTtcbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlckRyYWdnaW5nID0gKGV2ZW50RHJhZ2dpbmc6IElEcmFnZ2luZykgPT4ge1xuICAgICAgdGhpcy5zZXRBdHRyaWJ1dGVFbGVtZW50QW5kSXRlbURyYWcoZWxlbWVudENvbnRhaW5lcik7XG4gICAgICBjb25zdCB7IGVsZW1lbnREcmFnIH0gPSBldmVudERyYWdnaW5nO1xuICAgICAgY29uc3QgZmllbGRJZEl0ZW0gPSBlbGVtZW50RHJhZy5nZXRBdHRyaWJ1dGUoJ2ZpZWxkX2lkJyk7XG4gICAgICBjb25zdCBpZEl0ZW1EcmFnID0gZWxlbWVudERyYWcuZ2V0QXR0cmlidXRlKCdpdGVtX2lkJyk7XG5cbiAgICAgIGlmIChmaWVsZElkSXRlbSAmJiBpZEl0ZW1EcmFnICYmIHRoaXMuaXRlbXMoKS5maW5kKGl0ZW0gPT4gZ2V0KGl0ZW0sIGZpZWxkSWRJdGVtKSA9PT0gaWRJdGVtRHJhZykpIHtcbiAgICAgICAgY29uc3QgY2hpbGRyZW5FbGVtZW50ID0gZWxlbWVudENvbnRhaW5lci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkNsYXNzSXRlbURlZmluZSkgYXMgdW5rbm93biBhcyBBcnJheTxIVE1MRWxlbWVudD47XG4gICAgICAgIGNvbnN0IGNoaWxkRWxlbWVudCA9IEFycmF5LmZyb208SFRNTEVsZW1lbnQ+KGNoaWxkcmVuRWxlbWVudCkuZmluZCgoY2hpbGQpID0+IGNoaWxkLmdldEF0dHJpYnV0ZSgnaXRlbV9pZCcpID09PSBpZEl0ZW1EcmFnKTtcblxuICAgICAgICBpZiAodGhpcy5pdGVtcygpID09PSBldmVudERyYWdnaW5nLml0ZW1EcmFnSW5mbz8uaXRlbXNEcmFnKCkgJiYgY2hpbGRFbGVtZW50ICYmICFjaGlsZEVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdsaWJzLXVpLWRyYWctZHJvcC1pdGVtLWRyb3AtcGxhY2Vob2xkZXInKSAmJiAhY2hpbGRFbGVtZW50LmdldEF0dHJpYnV0ZSh0aGlzLmRyYWdEcm9wU2VydmljZS5UYXJnZXRJdGVtRHJhZ0ZsYWcpKSB7XG4gICAgICAgICAgY2hpbGRFbGVtZW50LnNldEF0dHJpYnV0ZSh0aGlzLmRyYWdEcm9wU2VydmljZS5UYXJnZXRJdGVtRHJhZ0ZsYWcsICd0cnVlJyk7XG4gICAgICAgICAgdGhpcy5ncm91cElELnNldChlbGVtZW50RHJhZy5nZXRBdHRyaWJ1dGUoJ2dyb3VwSUQnKSB8fCAnJyk7XG4gICAgICAgICAgc3R5bGVUYWcucmVtb3ZlKCk7XG4gICAgICAgICAgc3R5bGVUYWcudGV4dENvbnRlbnQgPSBzdHlsZUNvbnRhaW5lcigodGhpcy5zdHlsZXNPdmVycmlkZSgpIHx8IFtdKSwgdGhpcy52aWV3RW5jYXBzdWxhdGlvbigpLCB0aGlzLmdyb3VwSUQoKSk7XG4gICAgICAgICAgZWxlbWVudENvbnRhaW5lci5hcHBlbmRDaGlsZChzdHlsZVRhZyk7XG4gICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGVFbGVtZW50QW5kSXRlbURyYWcoZWxlbWVudENvbnRhaW5lciwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuZGlzYWJsZURyYWdDb250YWluZXIoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmdyb3VwSUQoKSA9PT0gZWxlbWVudERyYWcuZ2V0QXR0cmlidXRlKCdncm91cElEJykgJiYgIXRoaXMuYWNjZXB0RHJhZ1NhbWVHcm91cCgpKSB7XG4gICAgICAgIHRoaXMuY2hlY2tBbmRTY3JvbGxFbGVtZW50VG9Qb3NpdGlvbihldmVudERyYWdnaW5nLCB0aGlzLmlnbm9yZUF1dG9TY3JvbGwoKSB8fCAhdGhpcy5hY2NlcHREcmFnU2FtZUdyb3VwKCkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghY2hlY2tNb3VzZU92ZXJJbkNvbnRhaW5lcihldmVudERyYWdnaW5nLm1vdXNlUG9zaXRpb24sICh0aGlzLnJvb3RFbGVtZW50U2Nyb2xsKCkgfHwgZWxlbWVudENvbnRhaW5lcikpKSB7XG4gICAgICAgIGlmICh0aGlzLmlzRHJhZ092ZXIoKSkge1xuICAgICAgICAgIHRoaXMuaXNEcmFnT3Zlci5zZXQoZmFsc2UpO1xuICAgICAgICAgIHRoaXMub3V0RHJhZ0xlYXZlQ29udGFpbmVyLmVtaXQoeyAuLi5ldmVudERyYWdnaW5nLCBlbGVtZW50RHJhZ0xlYXZlOiBlbGVtZW50Q29udGFpbmVyIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlbW92ZVBsYWNlaG9sZGVyRHJhZyhldmVudERyYWdnaW5nLCB0cnVlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2hlY2tBbmRTY3JvbGxFbGVtZW50VG9Qb3NpdGlvbihldmVudERyYWdnaW5nLCB0aGlzLmlnbm9yZUF1dG9TY3JvbGwoKSk7XG5cbiAgICAgIC8vIMSQb+G6oW4gY29kZSB44butIGzDvSBjaG8gdmnhu4djIGvDqW8gbeG7mXQgZWxlbWVudCB2w6BvIDEgY29udGFpbmVyIG5oxrBuZyBjb250YWluZXIga2jDtG5nIGPDsyBpdGVtIGhv4bq3YyBpdGVtIGRyYWcga2jDtG5nIG92ZXIgcXVhIGl0ZW0gdHJvbmcgY29udGFpbmVyXG4gICAgICBpZiAoIXRoaXMuaXNEcmFnT3ZlcigpKSB7XG4gICAgICAgIGVsZW1lbnRDb250YWluZXIuY2xhc3NMaXN0LmFkZCgnbGlicy11aS1kcmFnLWRyb3AtY29udGFpbmVyLWRyYWdvdmVyJyk7XG4gICAgICAgIHRoaXMuaXNEcmFnT3Zlci5zZXQodHJ1ZSk7XG4gICAgICAgIHRoaXMub3V0RHJhZ092ZXJDb250YWluZXIuZW1pdCh7IC4uLmV2ZW50RHJhZ2dpbmcsIGVsZW1lbnREcmFnT3ZlcjogZWxlbWVudENvbnRhaW5lciB9KTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGV2ZW50RHJhZ092ZXIgPSB7IC4uLmV2ZW50RHJhZ2dpbmcsIGVsZW1lbnREcmFnT3ZlcjogZWxlbWVudENvbnRhaW5lciB9O1xuXG4gICAgICBpZiAoIXRoaXMuaXRlbXMoKS5sZW5ndGgpIHtcbiAgICAgICAgZXZlbnREcmFnT3Zlci5lbGVtZW50RHJhZ092ZXIgPSB7XG4gICAgICAgICAgZ2V0QXR0cmlidXRlOiAobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBpZiAobmFtZSA9PT0gJ2dyb3VwSUQnKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmdyb3VwSUQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChuYW1lICE9PSAnaW5kZXgnKSB7XG4gICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gYXMgdW5rbm93biBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuT25EcmFnT3Zlci5uZXh0KGV2ZW50RHJhZ092ZXIpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY2hpbGRyZW5FbGVtZW50ID0gZWxlbWVudENvbnRhaW5lci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkNsYXNzSXRlbURlZmluZSkgYXMgdW5rbm93biBhcyBBcnJheTxIVE1MRWxlbWVudD47XG4gICAgICBsZXQgY2hpbGRFbGVtZW50ID0gQXJyYXkuZnJvbTxIVE1MRWxlbWVudD4oY2hpbGRyZW5FbGVtZW50KS5maW5kKChjaGlsZCkgPT4gY2hlY2tNb3VzZU92ZXJJbkNvbnRhaW5lcihldmVudERyYWdnaW5nLm1vdXNlUG9zaXRpb24sIGNoaWxkKSk7XG5cbiAgICAgIGlmIChjaGlsZEVsZW1lbnQpIHsgLy8gbuG6v3UgdMOsbSB0aOG6pXkgdGjDrCBz4bq9IG5o4bqtbiBxdWEgc+G7sSBraeG7h24gY+G7p2EgZHJhZy1pdGVtLmRpcmVjdGl2ZSBlbWl0XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNoaWxkRWxlbWVudCA9IEFycmF5LmZyb208SFRNTEVsZW1lbnQ+KGNoaWxkcmVuRWxlbWVudCkucG9wKCk7XG5cbiAgICAgIGlmIChjaGlsZEVsZW1lbnQpIHtcbiAgICAgICAgZXZlbnREcmFnT3Zlci5lbGVtZW50RHJhZ092ZXIgPSBjaGlsZEVsZW1lbnQ7XG4gICAgICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLk9uRHJhZ092ZXIubmV4dChldmVudERyYWdPdmVyKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlckRyYWdFbmQgPSAoZXZlbnREcmFnRW5kOiBJRHJhZ0VuZCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZGlzYWJsZURyYWdDb250YWluZXIoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBsZXQgcmVjdCA9IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKHRoaXMucm9vdEVsZW1lbnRTY3JvbGwoKSB8fCBlbGVtZW50Q29udGFpbmVyKSB7XG4gICAgICAgIHJlY3QgPSAodGhpcy5yb290RWxlbWVudFNjcm9sbCgpIHx8IGVsZW1lbnRDb250YWluZXIpPy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIH1cbiAgICAgIHJlbW92ZVBsYWNlaG9sZGVyRHJhZyhldmVudERyYWdFbmQpO1xuICAgICAgY29uc3QgeyBlbGVtZW50RHJhZywgbW91c2VQb3NpdGlvbiwgaXRlbURyYWdJbmZvIH0gPSBldmVudERyYWdFbmQ7XG5cbiAgICAgIGlmICh0aGlzLmdyb3VwSUQoKSA9PT0gZWxlbWVudERyYWcuZ2V0QXR0cmlidXRlKCdncm91cElEJykpIHtcbiAgICAgICAgdGhpcy5vdXREcmFnRW5kQ29udGFpbmVyLmVtaXQoeyAuLi5ldmVudERyYWdFbmQgfSk7XG4gICAgICB9XG4gICAgICBpZiAoIWNoZWNrTW91c2VPdmVySW5Db250YWluZXIobW91c2VQb3NpdGlvbiwgdGhpcy5yb290RWxlbWVudFNjcm9sbCgpIHx8IGVsZW1lbnRDb250YWluZXIsIHJlY3QpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGV2ZW50RHJvcCA9IHsgZWxlbWVudERyYWc6IGVsZW1lbnREcmFnLCBlbGVtZW50RHJvcDogZWxlbWVudENvbnRhaW5lciwgaXRlbURyYWdJbmZvOiBpdGVtRHJhZ0luZm8gfTtcblxuICAgICAgaWYgKHRoaXMuZGlzYWJsZURyYWdDb250YWluZXIoKSB8fCAhdGhpcy5kcmFnRHJvcFNlcnZpY2UuY2hlY2tFbGVtZW50T3ZlckFjY2VwdEVsZW1lbnREcmFnKHRoaXMuZ3JvdXBOYW1lKCksIGVsZW1lbnREcmFnLmdldEF0dHJpYnV0ZSgnZ3JvdXBOYW1lJyksIGVsZW1lbnREcmFnLmdldEF0dHJpYnV0ZSgnZHJvcFRvR3JvdXBOYW1lJykpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY2hpbGRyZW5FbGVtZW50ID0gZWxlbWVudENvbnRhaW5lci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkNsYXNzSXRlbURlZmluZSkgYXMgdW5rbm93biBhcyBBcnJheTxIVE1MRWxlbWVudD47XG4gICAgICBjb25zdCBjaGlsZEVsZW1lbnQgPSBBcnJheS5mcm9tPEhUTUxFbGVtZW50PihjaGlsZHJlbkVsZW1lbnQpLmZpbmQoKGNoaWxkKSA9PiBjaGVja01vdXNlT3ZlckluQ29udGFpbmVyKG1vdXNlUG9zaXRpb24sIGNoaWxkKSk7XG5cbiAgICAgIGlmIChjaGlsZEVsZW1lbnQpIHtcbiAgICAgICAgZXZlbnREcm9wLmVsZW1lbnREcm9wID0gY2hpbGRFbGVtZW50O1xuICAgICAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5PbkRyb3AubmV4dChldmVudERyb3ApO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGV2ZW50RHJvcC5lbGVtZW50RHJvcCA9IHtcbiAgICAgICAgZ2V0QXR0cmlidXRlOiAobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgaWYgKG5hbWUgPT09ICdkcm9wQ29udGFpbmVyJykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChuYW1lID09PSAnZ3JvdXBJRCcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdyb3VwSUQoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG5hbWUgIT09ICdpbmRleCcpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBjaGlsZHJlbkVsZW1lbnQubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICB9IGFzIHVua25vd24gYXMgSFRNTEVsZW1lbnQ7XG4gICAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5PbkRyb3AubmV4dChldmVudERyb3ApO1xuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVyRHJvcCA9IChldmVudERyb3A6IElEcm9wKSA9PiB7XG4gICAgICBpZiAodGhpcy5kaXNhYmxlRHJhZ0NvbnRhaW5lcigpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgZWxlbWVudERyYWcsIGVsZW1lbnREcm9wLCBpdGVtRHJhZ0luZm8gfSA9IGV2ZW50RHJvcDtcblxuICAgICAgaWYgKHRoaXMuZ3JvdXBJRCgpID09PSBlbGVtZW50RHJhZy5nZXRBdHRyaWJ1dGUoJ2dyb3VwSUQnKSAmJiB0aGlzLmdyb3VwSUQoKSA9PT0gZWxlbWVudERyb3AuZ2V0QXR0cmlidXRlKCdncm91cElEJykpIHtcbiAgICAgICAgaWYgKGl0ZW1EcmFnSW5mbykge1xuICAgICAgICAgIGl0ZW1EcmFnSW5mby5pbmRleERyb3AgPSBOdW1iZXIoZWxlbWVudERyb3AuZ2V0QXR0cmlidXRlKCdpbmRleCcpKS52YWx1ZU9mKCk7XG4gICAgICAgICAgaXRlbURyYWdJbmZvLml0ZW1zRHJvcCA9IHRoaXMuaXRlbXM7XG4gICAgICAgICAgaXRlbURyYWdJbmZvLmNvbnRhaW5lckRyb3AgPSBlbGVtZW50Q29udGFpbmVyO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmFjY2VwdERyYWdTYW1lR3JvdXAoKSkge1xuICAgICAgICAgIHRoaXMub3V0RHJvcHBlZENvbnRhaW5lci5lbWl0KGV2ZW50RHJvcCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZW1vdmVBdHRyaWJ1dGVzKGVsZW1lbnRDb250YWluZXIpO1xuICAgICAgICB0aGlzLnNldEluZGV4RWxlbWVudChlbGVtZW50Q29udGFpbmVyKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5ncm91cElEKCkgIT09IGVsZW1lbnREcm9wLmdldEF0dHJpYnV0ZSgnZ3JvdXBJRCcpIHx8IGVsZW1lbnREcmFnLmdldEF0dHJpYnV0ZSgnZ3JvdXBJRCcpID09PSBlbGVtZW50RHJvcC5nZXRBdHRyaWJ1dGUoJ2dyb3VwSUQnKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBpbmRleERyYWdPdmVyID0gTnVtYmVyKGVsZW1lbnREcm9wLmdldEF0dHJpYnV0ZSgnaW5kZXgnKSkudmFsdWVPZigpIC0gKGVsZW1lbnREcm9wLmdldEF0dHJpYnV0ZSgnZHJvcENvbnRhaW5lcicpID8gMCA6IDEpO1xuICAgICAgY29uc3QgaXRlbSA9IHRoaXMubW9kZSgpID09PSAnZGVlcENvcHknID8gY2xvbmVEZWVwKGl0ZW1EcmFnSW5mbz8uaXRlbSkgOiBpdGVtRHJhZ0luZm8/Lml0ZW07XG5cbiAgICAgIGlmIChpdGVtRHJhZ0luZm8pIHtcbiAgICAgICAgaXRlbURyYWdJbmZvLmluZGV4RHJvcCA9IGluZGV4RHJhZ092ZXI7XG4gICAgICAgIGl0ZW1EcmFnSW5mby5pdGVtc0Ryb3AgPSB0aGlzLml0ZW1zO1xuICAgICAgICBpdGVtRHJhZ0luZm8uY29udGFpbmVyRHJvcCA9IGVsZW1lbnRDb250YWluZXI7XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5pdGVtcygpLmxlbmd0aCkge1xuICAgICAgICB0aGlzLm91dERyb3BwZWRDb250YWluZXJFbXB0eS5lbWl0KGV2ZW50RHJvcCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaXRlbXMudXBkYXRlKGl0ZW1zID0+IHtcbiAgICAgICAgaXRlbXMuc3BsaWNlKGluZGV4RHJhZ092ZXIsIDAsIGl0ZW0pO1xuICAgICAgICByZXR1cm4gWy4uLml0ZW1zXTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoaXRlbURyYWdJbmZvICYmIGl0ZW1EcmFnSW5mby5pdGVtc01vdmUgJiYgaXRlbURyYWdJbmZvLml0ZW1zTW92ZSgpKSB7XG4gICAgICAgIGl0ZW1EcmFnSW5mby5pdGVtc0RyYWcuc2V0KFsuLi5pdGVtRHJhZ0luZm8uaXRlbXNNb3ZlKCldKTtcbiAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGVFbGVtZW50QW5kSXRlbURyYWcoZWxlbWVudENvbnRhaW5lcik7XG4gICAgICB9XG5cbiAgICAgIHRoaXMub3V0RHJvcHBlZENvbnRhaW5lci5lbWl0KGV2ZW50RHJvcCk7XG4gICAgICB0aGlzLnJlbW92ZUF0dHJpYnV0ZXMoZWxlbWVudENvbnRhaW5lcik7XG4gICAgICB0aGlzLnNldEluZGV4RWxlbWVudChlbGVtZW50Q29udGFpbmVyKTtcbiAgICB9O1xuXG4gICAgW3tcbiAgICAgIG5hbWU6ICdPbkRyYWdTdGFydCcsXG4gICAgICBldmVudDogdGhpcy5kcmFnRHJvcFNlcnZpY2UuT25EcmFnU3RhcnQsXG4gICAgICBmdW5jdGlvbkNhbGw6IGhhbmRsZXJEcmFnU3RhcnRcbiAgICB9LCB7XG4gICAgICBuYW1lOiAnT25EcmFnT3ZlcicsXG4gICAgICBldmVudDogdGhpcy5kcmFnRHJvcFNlcnZpY2UuT25EcmFnT3ZlcixcbiAgICAgIGZ1bmN0aW9uQ2FsbDogaGFuZGxlckRyYWdPdmVyXG4gICAgfSwge1xuICAgICAgbmFtZTogJ09uRHJhZ2dpbmcnLFxuICAgICAgZXZlbnQ6IHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLk9uRHJhZ2dpbmcsXG4gICAgICBmdW5jdGlvbkNhbGw6IGhhbmRsZXJEcmFnZ2luZ1xuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdPbkRyYWdFbmQnLFxuICAgICAgZXZlbnQ6IHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLk9uRHJhZ0VuZCxcbiAgICAgIGZ1bmN0aW9uQ2FsbDogaGFuZGxlckRyYWdFbmRcbiAgICB9LCB7XG4gICAgICBuYW1lOiAnT25Ecm9wJyxcbiAgICAgIGV2ZW50OiB0aGlzLmRyYWdEcm9wU2VydmljZS5PbkRyb3AsXG4gICAgICBmdW5jdGlvbkNhbGw6IGhhbmRsZXJEcm9wXG4gICAgfV0uZm9yRWFjaCgoaXRlbTogeyBuYW1lOiBzdHJpbmc7IGV2ZW50OiBPYnNlcnZhYmxlPHVua25vd24+OyBmdW5jdGlvbkNhbGw6IG9iamVjdCB9KSA9PiAoaXRlbS5ldmVudC5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSkpLnN1YnNjcmliZShpdGVtLmZ1bmN0aW9uQ2FsbCkpKTtcblxuICB9XG5cbiAgLyogKi9cbiAgcHJpdmF0ZSBhc3luYyBzZXRBdHRyaWJ1dGVFbGVtZW50QW5kSXRlbURyYWcoZWxlbWVudENvbnRhaW5lcjogSFRNTEVsZW1lbnQsIHNldEl0ZW1EcmFnPzogYm9vbGVhbiwgaW5kZXhJbnNlcnQ/OiBudW1iZXIpIHtcbiAgICBjb25zdCBjaGlsZHJlbkVsZW1lbnQgPSBlbGVtZW50Q29udGFpbmVyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUodGhpcy5kcmFnRHJvcFNlcnZpY2UuQ2xhc3NJdGVtRGVmaW5lKSBhcyB1bmtub3duIGFzIEFycmF5PEhUTUxFbGVtZW50PjtcbiAgICBsZXQgaW5kZXggPSAtMTtcblxuICAgIGVsZW1lbnRDb250YWluZXIuc2V0QXR0cmlidXRlKCdncm91cElEJywgdGhpcy5ncm91cElEKCkpO1xuICAgIGVsZW1lbnRDb250YWluZXIucmVtb3ZlQXR0cmlidXRlKCdkaXNhYmxlRHJhZ0NvbnRhaW5lcicpO1xuXG4gICAgaWYgKHRoaXMuZGlzYWJsZURyYWdDb250YWluZXIoKSkge1xuICAgICAgZWxlbWVudENvbnRhaW5lci5zZXRBdHRyaWJ1dGUoJ2Rpc2FibGVEcmFnQ29udGFpbmVyJywgYCR7dGhpcy5kaXNhYmxlRHJhZ0NvbnRhaW5lcigpfWApO1xuICAgIH1cbiAgICBpZiAodGhpcy5ncm91cE5hbWUoKSkge1xuICAgICAgZWxlbWVudENvbnRhaW5lci5zZXRBdHRyaWJ1dGUoJ2dyb3VwTmFtZScsIHRoaXMuZ3JvdXBOYW1lKCkgfHwgJycpO1xuICAgIH1cbiAgICBBcnJheS5mcm9tPEhUTUxFbGVtZW50PihjaGlsZHJlbkVsZW1lbnQpLmZvckVhY2goKGNoaWxkRWxlbWVudCkgPT4ge1xuICAgICAgaWYgKCFjaGlsZEVsZW1lbnQuaGFzQXR0cmlidXRlKCdncm91cE5hbWUnKSB8fCBjaGlsZEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdncm91cE5hbWUnKSA9PT0gdGhpcy5ncm91cE5hbWUoKSkge1xuICAgICAgICBjaGlsZEVsZW1lbnQuc2V0QXR0cmlidXRlKCdncm91cElEJywgdGhpcy5ncm91cElEKCkpO1xuICAgICAgfVxuICAgICAgaWYgKGNoaWxkRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2dyb3VwSUQnKSAhPT0gdGhpcy5ncm91cElEKCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaW5kZXggKz0gMTtcbiAgICAgIGNoaWxkRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2luZGV4JywgYCR7aW5kZXh9YCk7XG4gICAgICBjaGlsZEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdkaXNhYmxlRHJhZ0NvbnRhaW5lcicpO1xuICAgICAgaWYgKHRoaXMuZGlzYWJsZURyYWdDb250YWluZXIoKSkge1xuICAgICAgICBjaGlsZEVsZW1lbnQuc2V0QXR0cmlidXRlKCdkaXNhYmxlRHJhZ0NvbnRhaW5lcicsIGAke3RoaXMuZGlzYWJsZURyYWdDb250YWluZXIoKX1gKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmdyb3VwTmFtZSgpICYmICFjaGlsZEVsZW1lbnQuaGFzQXR0cmlidXRlKCdncm91cE5hbWUnKSkge1xuICAgICAgICBjaGlsZEVsZW1lbnQuc2V0QXR0cmlidXRlKCdncm91cE5hbWUnLCB0aGlzLmdyb3VwTmFtZSgpIHx8ICcnKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnBsYWNlaG9sZGVyKCkpIHtcbiAgICAgICAgY2hpbGRFbGVtZW50LnNldEF0dHJpYnV0ZSgncGxhY2Vob2xkZXInLCBgJHt0aGlzLnBsYWNlaG9sZGVyKCl9YCk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5kcm9wVG9Hcm91cE5hbWUoKSkge1xuICAgICAgICBjaGlsZEVsZW1lbnQuc2V0QXR0cmlidXRlKCdkcm9wVG9Hcm91cE5hbWUnLCBgJHt0aGlzLmRyb3BUb0dyb3VwTmFtZSgpPy5qb2luKCc7Jyl9YCk7XG4gICAgICB9XG4gICAgICBpZiAoaW5kZXhJbnNlcnQgPT09IGluZGV4ICYmIHRoaXMucGxhY2Vob2xkZXIoKSkge1xuICAgICAgICBpZiAoIWNoaWxkRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ2xpYnMtdWktZHJhZy1kcm9wLWl0ZW0tcGxhY2Vob2xkZXInKSkge1xuICAgICAgICAgIGNoaWxkRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdsaWJzLXVpLWRyYWctZHJvcC1pdGVtLXBsYWNlaG9sZGVyJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjaGlsZEVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdsaWJzLXVpLWRyYWctZHJvcC1pdGVtLWRyb3AtcGxhY2Vob2xkZXInKSkge1xuICAgICAgICAgIGNoaWxkRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdsaWJzLXVpLWRyYWctZHJvcC1pdGVtLWRyb3AtcGxhY2Vob2xkZXInKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoc2V0SXRlbURyYWcgJiYgY2hpbGRFbGVtZW50LmdldEF0dHJpYnV0ZSh0aGlzLmRyYWdEcm9wU2VydmljZS5UYXJnZXRJdGVtRHJhZ0ZsYWcpICYmIHRoaXMuaXRlbXMoKS5sZW5ndGggPj0gaW5kZXgpIHtcbiAgICAgICAgaWYgKHRoaXMucGxhY2Vob2xkZXIoKSkge1xuICAgICAgICAgIGlmICghY2hpbGRFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnbGlicy11aS1kcmFnLWRyb3AtaXRlbS1wbGFjZWhvbGRlcicpKSB7XG4gICAgICAgICAgICBjaGlsZEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnbGlicy11aS1kcmFnLWRyb3AtaXRlbS1wbGFjZWhvbGRlcicpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIWNoaWxkRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ2xpYnMtdWktZHJhZy1kcm9wLWl0ZW0tb3JpZ2luLXBsYWNlaG9sZGVyJykpIHtcbiAgICAgICAgICAgIGNoaWxkRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdsaWJzLXVpLWRyYWctZHJvcC1pdGVtLW9yaWdpbi1wbGFjZWhvbGRlcicpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkl0ZW1EcmFnSW5mbyA9IHsgaXRlbTogdGhpcy5pdGVtcygpW2luZGV4XSBhcyBvYmplY3QsIGluZGV4RHJhZzogaW5kZXgsIGl0ZW1zRHJhZzogdGhpcy5pdGVtcywgY29udGFpbmVyRHJhZzogZWxlbWVudENvbnRhaW5lciwgaXRlbXNNb3ZlOiBzaWduYWwoWy4uLnRoaXMuaXRlbXMoKV0pIH07XG4gICAgICAgIGlmICh0aGlzLm1vZGUoKSA9PT0gJ21vdmUnKSB7XG4gICAgICAgICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuSXRlbURyYWdJbmZvLml0ZW1zTW92ZT8udXBkYXRlKGl0ZW1zID0+IHtcbiAgICAgICAgICAgIGl0ZW1zLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICByZXR1cm4gWy4uLml0ZW1zXVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRTdHlsZUFuZEF0dHJpYnV0ZShlbGVtZW50Q29udGFpbmVyOiBIVE1MRWxlbWVudCwgaGFzUmVtb3ZlQXR0cmlidXRlID0gZmFsc2UsKSB7XG4gICAgdGhpcy5zZXRBdHRyaWJ1dGVFbGVtZW50QW5kSXRlbURyYWcoZWxlbWVudENvbnRhaW5lcik7XG4gICAgaWYgKGhhc1JlbW92ZUF0dHJpYnV0ZSkge1xuICAgICAgdGhpcy5yZW1vdmVBdHRyaWJ1dGVzKGVsZW1lbnRDb250YWluZXIpO1xuICAgIH1cbiAgICB0aGlzLnNldEluZGV4RWxlbWVudChlbGVtZW50Q29udGFpbmVyKTtcbiAgfTtcblxuICBwcml2YXRlIHNldEFuaW1hdGlvbkVsZW1lbnREcmFnT3ZlcihpbmRleERyYWc6IG51bWJlciwgaW5kZXhEcmFnT3ZlcjogbnVtYmVyLCBlbGVtZW50RHJhZ092ZXI6IEhUTUxFbGVtZW50KSB7XG4gICAgaWYgKCF0aGlzLmRpcmVjdGlvbkRyYWcoKSB8fCAhZWxlbWVudERyYWdPdmVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmRpcmVjdGlvbkRyYWcoKSA9PT0gJ3ZlcnRpY2FsJykge1xuICAgICAgZWxlbWVudERyYWdPdmVyLmNsYXNzTGlzdC5yZW1vdmUoJ2xpYnMtdWktZHJhZy1kcm9wLWl0ZW0tdHJhbnNsYXRlLWJvdHRvbScpO1xuICAgICAgZWxlbWVudERyYWdPdmVyLmNsYXNzTGlzdC5yZW1vdmUoJ2xpYnMtdWktZHJhZy1kcm9wLWl0ZW0tdHJhbnNsYXRlLXRvcCcpO1xuICAgICAgaWYgKGluZGV4RHJhZyA+IGluZGV4RHJhZ092ZXIpIHtcbiAgICAgICAgZWxlbWVudERyYWdPdmVyLmNsYXNzTGlzdC5hZGQoJ2xpYnMtdWktZHJhZy1kcm9wLWl0ZW0tdHJhbnNsYXRlLWJvdHRvbScpO1xuICAgICAgfVxuICAgICAgaWYgKGluZGV4RHJhZyA8IGluZGV4RHJhZ092ZXIpIHtcbiAgICAgICAgZWxlbWVudERyYWdPdmVyLmNsYXNzTGlzdC5hZGQoJ2xpYnMtdWktZHJhZy1kcm9wLWl0ZW0tdHJhbnNsYXRlLXRvcCcpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZWxlbWVudERyYWdPdmVyLmNsYXNzTGlzdC5yZW1vdmUoJ2xpYnMtdWktZHJhZy1kcm9wLWl0ZW0tdHJhbnNsYXRlLWxlZnQnKTtcbiAgICBlbGVtZW50RHJhZ092ZXIuY2xhc3NMaXN0LnJlbW92ZSgnbGlicy11aS1kcmFnLWRyb3AtaXRlbS10cmFuc2xhdGUtcmlnaHQnKTtcbiAgICBpZiAoaW5kZXhEcmFnID4gaW5kZXhEcmFnT3Zlcikge1xuICAgICAgZWxlbWVudERyYWdPdmVyLmNsYXNzTGlzdC5hZGQoJ2xpYnMtdWktZHJhZy1kcm9wLWl0ZW0tdHJhbnNsYXRlLXJpZ2h0Jyk7XG4gICAgfVxuICAgIGlmIChpbmRleERyYWcgPCBpbmRleERyYWdPdmVyKSB7XG4gICAgICBlbGVtZW50RHJhZ092ZXIuY2xhc3NMaXN0LmFkZCgnbGlicy11aS1kcmFnLWRyb3AtaXRlbS10cmFuc2xhdGUtbGVmdCcpO1xuICAgIH1cblxuICB9XG5cbiAgcHJpdmF0ZSBzZXRJbmRleEVsZW1lbnQoZWxlbWVudENvbnRhaW5lcjogSFRNTEVsZW1lbnQpIHtcbiAgICBjb25zdCBjaGlsZHJlbkVsZW1lbnQgPSBlbGVtZW50Q29udGFpbmVyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUodGhpcy5kcmFnRHJvcFNlcnZpY2UuQ2xhc3NJdGVtRGVmaW5lKSBhcyB1bmtub3duIGFzIEFycmF5PEhUTUxFbGVtZW50PjtcbiAgICBsZXQgaW5kZXggPSAtMTtcblxuICAgIEFycmF5LmZyb208SFRNTEVsZW1lbnQ+KGNoaWxkcmVuRWxlbWVudCkuZm9yRWFjaCgoY2hpbGRFbGVtZW50KSA9PiB7XG4gICAgICBpZiAoY2hpbGRFbGVtZW50LmdldEF0dHJpYnV0ZSgnZ3JvdXBJRCcpICE9PSB0aGlzLmdyb3VwSUQoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpbmRleCArPSAxO1xuICAgICAgY2hpbGRFbGVtZW50LnNldEF0dHJpYnV0ZSgnaW5kZXgnLCBgJHtpbmRleH1gKTtcbiAgICB9KTtcblxuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVBdHRyaWJ1dGVzKGVsZW1lbnRDb250YWluZXI6IEhUTUxFbGVtZW50LCBpZ25vcmVSZW1vdmVDbGFzc0l0ZW1PcmlnaW5QbGFjZWhvbGRlcj86IGJvb2xlYW4pIHtcbiAgICBjb25zdCBjaGlsZHJlbkVsZW1lbnQgPSBlbGVtZW50Q29udGFpbmVyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUodGhpcy5kcmFnRHJvcFNlcnZpY2UuQ2xhc3NJdGVtRGVmaW5lKSBhcyB1bmtub3duIGFzIEFycmF5PEhUTUxFbGVtZW50PjtcblxuICAgIGVsZW1lbnRDb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSgnbGlicy11aS1kcmFnLWRyb3AtY29udGFpbmVyLWRyYWdvdmVyJyk7XG4gICAgQXJyYXkuZnJvbTxIVE1MRWxlbWVudD4oY2hpbGRyZW5FbGVtZW50KS5mb3JFYWNoKChjaGlsZEVsZW1lbnQpID0+IHtcbiAgICAgIGlmIChjaGlsZEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdncm91cElEJykgIT09IHRoaXMuZ3JvdXBJRCgpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNoaWxkRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2luZGV4Jyk7XG4gICAgICBpZiAoIXRoaXMuZHJvcFRvR3JvdXBOYW1lKCkgfHwgIXRoaXMuZHJvcFRvR3JvdXBOYW1lKCk/Lmxlbmd0aCkge1xuICAgICAgICBjaGlsZEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdkcm9wVG9Hcm91cE5hbWUnKTtcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5wbGFjZWhvbGRlcigpKSB7XG4gICAgICAgIGNoaWxkRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyJyk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5wbGFjZWhvbGRlcigpKSB7XG4gICAgICAgIGNoaWxkRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdsaWJzLXVpLWRyYWctZHJvcC1pdGVtLXBsYWNlaG9sZGVyJyk7XG4gICAgICAgIGlmICghaWdub3JlUmVtb3ZlQ2xhc3NJdGVtT3JpZ2luUGxhY2Vob2xkZXIpIHtcblxuICAgICAgICAgIGNoaWxkRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdsaWJzLXVpLWRyYWctZHJvcC1pdGVtLW9yaWdpbi1wbGFjZWhvbGRlcicpO1xuICAgICAgICB9XG4gICAgICAgIGNoaWxkRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdsaWJzLXVpLWRyYWctZHJvcC1pdGVtLWRyb3AtcGxhY2Vob2xkZXInKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICB9XG59XG4iXX0=
|
|
466
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1kcm9wLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9kcmFnLWRyb3Avc3JjL2RyYWctZHJvcC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWEsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckgsT0FBTyxFQUFFLHlCQUF5QixFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBYyxZQUFZLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBTzlFLE1BQU0sT0FBTyxzQ0FBdUMsU0FBUSxtQ0FBbUM7SUFDN0YsbUJBQW1CO0lBQ1gsT0FBTyxHQUFHLE1BQU0sQ0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLFVBQVUsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7SUFFNUMsZ0JBQWdCO0lBQ1Asb0JBQW9CLEdBQUcsS0FBSyxFQUFXLENBQUM7SUFDeEMsSUFBSSxHQUFHLEtBQUssQ0FBdUMsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDcEcsYUFBYSxHQUFHLEtBQUssRUFBNkIsQ0FBQztJQUNuRCxpQkFBaUIsR0FBRyxLQUFLLENBQXVELFVBQVUsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssSUFBSSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ3pJLG1CQUFtQixHQUFHLEtBQUssQ0FBK0IsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDekcsV0FBVyxHQUFHLEtBQUssQ0FBK0IsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7SUFDL0YsU0FBUyxHQUFHLEtBQUssQ0FBNkIseUJBQXlCLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLElBQUkseUJBQXlCLEVBQUUsQ0FBQyxDQUFDLENBQUMsK0NBQStDO0lBQ3JMLGVBQWUsR0FBRyxLQUFLLENBQXVCLElBQUksQ0FBQyxDQUFDLENBQUMsNkZBQTZGO0lBQ2xKLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFrQixDQUFDO0lBQ3pDLGNBQWMsR0FBRyxLQUFLLEVBQWdELENBQUM7SUFFaEYsaUJBQWlCO0lBQ1IscUJBQXFCLEdBQUcsTUFBTSxFQUFjLENBQUM7SUFDN0Msb0JBQW9CLEdBQUcsTUFBTSxFQUFhLENBQUM7SUFDM0MscUJBQXFCLEdBQUcsTUFBTSxFQUFjLENBQUM7SUFDN0MsbUJBQW1CLEdBQUcsTUFBTSxFQUFZLENBQUM7SUFDekMsbUJBQW1CLEdBQUcsTUFBTSxFQUFTLENBQUM7SUFDdEMsd0JBQXdCLEdBQUcsTUFBTSxFQUFTLENBQUM7SUFDM0Msa0JBQWtCLEdBQUcsTUFBTSxFQUFpQyxDQUFDO0lBRXRFO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFDUixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQTRCLENBQUM7UUFFN0QsTUFBTSxTQUFTLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUU5QixJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDM0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDcEMsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQztnQkFDOUIsT0FBTztZQUNULENBQUM7WUFDRCxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNiLEdBQUcsQ0FBQyxTQUFTLEVBQUUsZUFBZSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUM7Z0JBQzFELElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFDL0UsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUMxRCxJQUFJLENBQUMsOEJBQThCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNyRSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNqRSxJQUFJLENBQUMsOEJBQThCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNyRSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRVEsZUFBZTtRQUN0QixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsOEJBQThCLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRTNJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDaEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzFELENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzVCLElBQUksaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQ3hCLEtBQUssQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ25DLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO2dCQUNwQixDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7WUFFRCxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUMxRCxDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUE0QixDQUFDO1FBRXRFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7UUFDdE0sTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVqRCxRQUFRLENBQUMsV0FBVyxHQUFHLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUMvRyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFMUUsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLGNBQTBCLEVBQUUsRUFBRTtZQUV0RCxJQUFJLENBQUMsOEJBQThCLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDNUQsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssY0FBYyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDMUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsY0FBYyxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7WUFDMUcsQ0FBQztRQUNILENBQUMsQ0FBQztRQUVGLE1BQU0sVUFBVSxHQUFHLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3hELElBQUksaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDM0IsTUFBTSxlQUFlLEdBQUcsQ0FBQyxhQUF3QixFQUFFLEVBQUU7WUFDbkQsTUFBTSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsR0FBRyxhQUFhLENBQUM7WUFFdkQsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsaUNBQWlDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLFdBQVcsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLEVBQUUsV0FBVyxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDak0sT0FBTztZQUNULENBQUM7WUFDRCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3RFLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDOUUsTUFBTSxrQkFBa0IsR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQy9ELE1BQU0sc0JBQXNCLEdBQUcsZUFBZSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUV2RSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLGtCQUFrQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxzQkFBc0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxxREFBcUQ7Z0JBQ3JKLElBQUksc0JBQXNCLEtBQUssSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO29CQUNwRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQztvQkFFdkksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7d0JBQ3hCLElBQUksaUJBQWlCLElBQUksQ0FBQyxFQUFFLENBQUM7NEJBQzNCLEtBQUssQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0JBQ3JDLENBQUM7d0JBQ0QsS0FBSyxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO3dCQUNyQyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztvQkFDcEIsQ0FBQyxDQUFDLENBQUM7b0JBQ0gsSUFBSSxDQUFDLDhCQUE4QixDQUFDLGdCQUFnQixFQUFFLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO29CQUNoRixpQkFBaUIsR0FBRyxhQUFhLENBQUM7Z0JBQ3BDLENBQUM7Z0JBRUQsT0FBTztZQUNULENBQUM7WUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLElBQUksU0FBUyxHQUFHLENBQUMsSUFBSSxhQUFhLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEtBQUssU0FBUyxJQUFJLFVBQVUsQ0FBQyxhQUFhLEtBQUssYUFBYSxDQUFDLEVBQUUsQ0FBQztnQkFDOVAsT0FBTztZQUNULENBQUM7WUFDRCxxREFBcUQ7WUFDckQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRXpDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxTQUFTLEVBQUUsYUFBYSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1lBQzVFLFVBQVUsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1lBQ2pDLFVBQVUsQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUN4QixLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDM0IsS0FBSyxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUN6QyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztZQUNwQixDQUFDLENBQUMsQ0FBQztZQUNILFdBQVcsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQzVELElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3hELENBQUMsQ0FBQztRQUVGLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxTQUFtQixFQUFFLFVBQW9CLEVBQUUsRUFBRTtZQUMxRSxhQUFhLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUMsQ0FBQztZQUM5QyxVQUFVLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzFCLFVBQVUsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDOUIsTUFBTSxlQUFlLEdBQUcsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQWtDLENBQUM7WUFFdkksSUFBSSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDeEcsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFjLGVBQWUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMseUNBQXlDLENBQUMsQ0FBQyxDQUFDO2dCQUU3SixJQUFJLGlCQUFpQixJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssU0FBUyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztvQkFDL0YsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7d0JBQ3hCLEtBQUssQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0JBQ25DLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO29CQUNwQixDQUFDLENBQUMsQ0FBQztvQkFDSCxpQkFBaUIsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDekIsQ0FBQztnQkFFRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLEVBQUUsVUFBVSxDQUFDLENBQUM7Z0JBQ3BELElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztnQkFFdkMsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLGlCQUFpQixJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRTtvQkFDeEIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDbkMsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7Z0JBQ3BCLENBQUMsQ0FBQyxDQUFDO2dCQUNILGlCQUFpQixHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3pCLENBQUM7UUFDSCxDQUFDLENBQUM7UUFFRixNQUFNLGVBQWUsR0FBRyxDQUFDLGFBQXdCLEVBQUUsRUFBRTtZQUNuRCxJQUFJLENBQUMsOEJBQThCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUN0RCxNQUFNLEVBQUUsV0FBVyxFQUFFLEdBQUcsYUFBYSxDQUFDO1lBQ3RDLE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDekQsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUV2RCxJQUFJLFdBQVcsSUFBSSxVQUFVLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLEtBQUssVUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDbEcsTUFBTSxlQUFlLEdBQUcsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQWtDLENBQUM7Z0JBQ3ZJLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQWMsZUFBZSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxLQUFLLFVBQVUsQ0FBQyxDQUFDO2dCQUU1SCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxhQUFhLENBQUMsWUFBWSxFQUFFLFNBQVMsRUFBRSxJQUFJLFlBQVksSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLHlDQUF5QyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDO29CQUNuTyxZQUFZLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCLEVBQUUsTUFBTSxDQUFDLENBQUM7b0JBQzNFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7b0JBQzVELFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDbEIsUUFBUSxDQUFDLFdBQVcsR0FBRyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7b0JBQy9HLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDdkMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUM5RCxDQUFDO1lBQ0gsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsQ0FBQztnQkFDaEMsT0FBTztZQUNULENBQUM7WUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxXQUFXLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsQ0FBQztnQkFDMUYsSUFBSSxDQUFDLCtCQUErQixDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUM7Z0JBQzVHLE9BQU87WUFDVCxDQUFDO1lBRUQsSUFBSSxDQUFDLHlCQUF5QixDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDNUcsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztvQkFDdEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQzNCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7Z0JBQzVGLENBQUM7Z0JBRUQsT0FBTyxxQkFBcUIsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDcEQsQ0FBQztZQUNELElBQUksQ0FBQywrQkFBK0IsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztZQUU3RSw0SUFBNEk7WUFDNUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO2dCQUN2QixnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7Z0JBQ3ZFLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMxQixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxhQUFhLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztZQUMxRixDQUFDO1lBQ0QsTUFBTSxhQUFhLEdBQUcsRUFBRSxHQUFHLGFBQWEsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQztZQUU5RSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUN6QixhQUFhLENBQUMsZUFBZSxHQUFHO29CQUM5QixZQUFZLEVBQUUsQ0FBQyxJQUFZLEVBQUUsRUFBRTt3QkFDN0IsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7NEJBQ3ZCLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO3dCQUN4QixDQUFDO3dCQUNELElBQUksSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDOzRCQUNyQixPQUFPLElBQUksQ0FBQzt3QkFDZCxDQUFDO3dCQUVELE9BQU8sQ0FBQyxDQUFDO29CQUNYLENBQUM7aUJBQ3dCLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFFcEQsT0FBTztZQUNULENBQUM7WUFFRCxNQUFNLGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBa0MsQ0FBQztZQUN2SSxJQUFJLFlBQVksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFjLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMseUJBQXlCLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBRTNJLElBQUksWUFBWSxFQUFFLENBQUMsQ0FBQyxvRUFBb0U7Z0JBQ3RGLE9BQU87WUFDVCxDQUFDO1lBQ0QsWUFBWSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQWMsZUFBZSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7WUFFOUQsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDakIsYUFBYSxDQUFDLGVBQWUsR0FBRyxZQUFZLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUN0RCxDQUFDO1FBQ0gsQ0FBQyxDQUFDO1FBRUYsTUFBTSxjQUFjLEdBQUcsQ0FBQyxZQUFzQixFQUFFLEVBQUU7WUFDaEQsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxDQUFDO2dCQUNoQyxPQUFPO1lBQ1QsQ0FBQztZQUNELElBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQztZQUVyQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLGdCQUFnQixFQUFFLENBQUM7Z0JBQ2pELElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLGdCQUFnQixDQUFDLEVBQUUscUJBQXFCLEVBQUUsQ0FBQztZQUNqRixDQUFDO1lBQ0QscUJBQXFCLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDcEMsTUFBTSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLEdBQUcsWUFBWSxDQUFDO1lBRWxFLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLFdBQVcsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDM0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsWUFBWSxFQUFFLENBQUMsQ0FBQztZQUNyRCxDQUFDO1lBQ0QsSUFBSSxDQUFDLHlCQUF5QixDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNsRyxPQUFPO1lBQ1QsQ0FBQztZQUNELE1BQU0sU0FBUyxHQUFHLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxDQUFDO1lBRTFHLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGlDQUFpQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxXQUFXLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pNLE9BQU87WUFDVCxDQUFDO1lBRUQsTUFBTSxlQUFlLEdBQUcsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQWtDLENBQUM7WUFDdkksTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBYyxlQUFlLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLHlCQUF5QixDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBRS9ILElBQUksWUFBWSxFQUFFLENBQUM7Z0JBQ2pCLFNBQVMsQ0FBQyxXQUFXLEdBQUcsWUFBWSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBRTVDLE9BQU87WUFDVCxDQUFDO1lBQ0QsU0FBUyxDQUFDLFdBQVcsR0FBRztnQkFDdEIsWUFBWSxFQUFFLENBQUMsSUFBWSxFQUFFLEVBQUU7b0JBQzdCLElBQUksSUFBSSxLQUFLLGVBQWUsRUFBRSxDQUFDO3dCQUM3QixPQUFPLElBQUksQ0FBQztvQkFDZCxDQUFDO29CQUNELElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO3dCQUN2QixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDeEIsQ0FBQztvQkFDRCxJQUFJLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQzt3QkFDckIsT0FBTyxJQUFJLENBQUM7b0JBQ2QsQ0FBQztvQkFFRCxPQUFPLGVBQWUsQ0FBQyxNQUFNLENBQUM7Z0JBQ2hDLENBQUM7YUFDd0IsQ0FBQztZQUM1QixJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUMsQ0FBQyxDQUFDO1FBRUYsTUFBTSxXQUFXLEdBQUcsQ0FBQyxTQUFnQixFQUFFLEVBQUU7WUFDdkMsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxDQUFDO2dCQUNoQyxPQUFPO1lBQ1QsQ0FBQztZQUNELE1BQU0sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxHQUFHLFNBQVMsQ0FBQztZQUU3RCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxXQUFXLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxXQUFXLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JILElBQUksWUFBWSxFQUFFLENBQUM7b0JBQ2pCLFlBQVksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDN0UsWUFBWSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO29CQUNwQyxZQUFZLENBQUMsYUFBYSxHQUFHLGdCQUFnQixDQUFDO2dCQUNoRCxDQUFDO2dCQUNELElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsQ0FBQztvQkFDL0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDM0MsQ0FBQztnQkFDRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUN2QyxPQUFPO1lBQ1QsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLFdBQVcsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksV0FBVyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSyxXQUFXLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7Z0JBQzFJLE9BQU87WUFDVCxDQUFDO1lBQ0QsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLFdBQVcsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9PLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUM7WUFFN0YsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDakIsWUFBWSxDQUFDLFNBQVMsR0FBRyxhQUFhLENBQUM7Z0JBQ3ZDLFlBQVksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFDcEMsWUFBWSxDQUFDLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQztZQUNoRCxDQUFDO1lBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDekIsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNoRCxDQUFDO1lBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3hCLEtBQUssQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDckMsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7WUFDcEIsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLFlBQVksSUFBSSxZQUFZLENBQUMsU0FBUyxJQUFJLFlBQVksQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO2dCQUN2RSxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDMUQsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7WUFDMUUsQ0FBQztZQUNELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDeEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3pDLENBQUMsQ0FBQztRQUVGLENBQUM7Z0JBQ0MsSUFBSSxFQUFFLGFBQWE7Z0JBQ25CLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVc7Z0JBQ3ZDLFlBQVksRUFBRSxnQkFBZ0I7YUFDL0IsRUFBRTtnQkFDRCxJQUFJLEVBQUUsWUFBWTtnQkFDbEIsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVTtnQkFDdEMsWUFBWSxFQUFFLGVBQWU7Z0JBQzdCLFlBQVksRUFBRSxDQUFDO2FBQ2hCLEVBQUU7Z0JBQ0QsSUFBSSxFQUFFLFlBQVk7Z0JBQ2xCLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVU7Z0JBQ3RDLFlBQVksRUFBRSxlQUFlO2FBQzlCLEVBQUU7Z0JBQ0QsSUFBSSxFQUFFLFdBQVc7Z0JBQ2pCLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVM7Z0JBQ3JDLFlBQVksRUFBRSxjQUFjO2FBQzdCLEVBQUU7Z0JBQ0QsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTTtnQkFDbEMsWUFBWSxFQUFFLFdBQVc7YUFDMUI7U0FDQSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQStGLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xPLENBQUM7SUFFRCxLQUFLO0lBQ0csS0FBSyxDQUFDLDhCQUE4QixDQUFDLGdCQUE2QixFQUFFLFdBQXFCLEVBQUUsV0FBb0I7UUFDckgsTUFBTSxlQUFlLEdBQUcsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQWtDLENBQUM7UUFDdkksSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFZixnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBRXpELElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsQ0FBQztZQUNoQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDMUYsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDckIsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDckUsQ0FBQztRQUNELEtBQUssQ0FBQyxJQUFJLENBQWMsZUFBZSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUU7WUFDaEUsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLElBQUksWUFBWSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztnQkFDM0csWUFBWSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDdkQsQ0FBQztZQUNELElBQUksWUFBWSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztnQkFDNUQsT0FBTztZQUNULENBQUM7WUFDRCxLQUFLLElBQUksQ0FBQyxDQUFDO1lBQ1gsWUFBWSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQy9DLFlBQVksQ0FBQyxlQUFlLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUNyRCxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLENBQUM7Z0JBQ2hDLFlBQVksQ0FBQyxZQUFZLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdEYsQ0FBQztZQUNELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO2dCQUNoRSxZQUFZLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDakUsQ0FBQztZQUNELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7Z0JBQ3ZCLFlBQVksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNwRSxDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQztnQkFDM0IsWUFBWSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZGLENBQUM7WUFDRCxJQUFJLFdBQVcsS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7Z0JBQ2hELElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxvQ0FBb0MsQ0FBQyxFQUFFLENBQUM7b0JBQzNFLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7Z0JBQ25FLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLHlDQUF5QyxDQUFDLEVBQUUsQ0FBQztvQkFDaEYsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMseUNBQXlDLENBQUMsQ0FBQztnQkFDeEUsQ0FBQztZQUNILENBQUM7WUFFRCxJQUFJLFdBQVcsSUFBSSxZQUFZLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUN0SCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO29CQUN2QixJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsb0NBQW9DLENBQUMsRUFBRSxDQUFDO3dCQUMzRSxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO29CQUNuRSxDQUFDO29CQUNELElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQywyQ0FBMkMsQ0FBQyxFQUFFLENBQUM7d0JBQ2xGLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7b0JBQzFFLENBQUM7Z0JBQ0gsQ0FBQztnQkFFRCxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFXLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUM1TCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxNQUFNLEVBQUUsQ0FBQztvQkFDM0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRTt3QkFDMUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0JBQ3ZCLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFBO29CQUNuQixDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLHFCQUFxQixDQUFDLGdCQUE2QixFQUFFLGtCQUFrQixHQUFHLEtBQUs7UUFDckYsSUFBSSxDQUFDLDhCQUE4QixDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDdEQsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDekMsQ0FBQztJQUFBLENBQUM7SUFFTSwyQkFBMkIsQ0FBQyxTQUFpQixFQUFFLGFBQXFCLEVBQUUsZUFBNEI7UUFDeEcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzlDLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDeEMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMseUNBQXlDLENBQUMsQ0FBQztZQUM1RSxlQUFlLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1lBQ3pFLElBQUksU0FBUyxHQUFHLGFBQWEsRUFBRSxDQUFDO2dCQUM5QixlQUFlLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO1lBQzNFLENBQUM7WUFDRCxJQUFJLFNBQVMsR0FBRyxhQUFhLEVBQUUsQ0FBQztnQkFDOUIsZUFBZSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsc0NBQXNDLENBQUMsQ0FBQztZQUN4RSxDQUFDO1lBRUQsT0FBTztRQUNULENBQUM7UUFFRCxlQUFlLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1FBQzFFLGVBQWUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLHdDQUF3QyxDQUFDLENBQUM7UUFDM0UsSUFBSSxTQUFTLEdBQUcsYUFBYSxFQUFFLENBQUM7WUFDOUIsZUFBZSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsd0NBQXdDLENBQUMsQ0FBQztRQUMxRSxDQUFDO1FBQ0QsSUFBSSxTQUFTLEdBQUcsYUFBYSxFQUFFLENBQUM7WUFDOUIsZUFBZSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsdUNBQXVDLENBQUMsQ0FBQztRQUN6RSxDQUFDO0lBRUgsQ0FBQztJQUVPLGVBQWUsQ0FBQyxnQkFBNkI7UUFDbkQsTUFBTSxlQUFlLEdBQUcsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQWtDLENBQUM7UUFDdkksSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFZixLQUFLLENBQUMsSUFBSSxDQUFjLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO1lBQ2hFLElBQUksWUFBWSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztnQkFDNUQsT0FBTztZQUNULENBQUM7WUFDRCxLQUFLLElBQUksQ0FBQyxDQUFDO1lBQ1gsWUFBWSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUFDO0lBRUwsQ0FBQztJQUVPLGdCQUFnQixDQUFDLGdCQUE2QixFQUFFLHNDQUFnRDtRQUN0RyxNQUFNLGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBa0MsQ0FBQztRQUV2SSxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLHNDQUFzQyxDQUFDLENBQUM7UUFDMUUsS0FBSyxDQUFDLElBQUksQ0FBYyxlQUFlLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRTtZQUNoRSxJQUFJLFlBQVksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEtBQUssSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7Z0JBQzVELE9BQU87WUFDVCxDQUFDO1lBQ0QsWUFBWSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDO2dCQUMvRCxZQUFZLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDbEQsQ0FBQztZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztnQkFDeEIsWUFBWSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUM5QyxDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztnQkFDdkIsWUFBWSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsb0NBQW9DLENBQUMsQ0FBQztnQkFDcEUsSUFBSSxDQUFDLHNDQUFzQyxFQUFFLENBQUM7b0JBRTVDLFlBQVksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLDJDQUEyQyxDQUFDLENBQUM7Z0JBQzdFLENBQUM7Z0JBQ0QsWUFBWSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMseUNBQXlDLENBQUMsQ0FBQztZQUMzRSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFTCxDQUFDO3dHQXRnQlUsc0NBQXNDOzRGQUF0QyxzQ0FBc0M7OzRGQUF0QyxzQ0FBc0M7a0JBTGxELFNBQVM7bUJBQUM7b0JBQ1QsOERBQThEO29CQUM5RCxRQUFRLEVBQUUsMENBQTBDO29CQUNwRCxVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIE9uRGVzdHJveSwgZWZmZWN0LCBpbnB1dCwgbW9kZWwsIG91dHB1dCwgc2lnbmFsLCB1bnRyYWNrZWQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgY2hlY2tNb3VzZU92ZXJJbkNvbnRhaW5lciwgY2xvbmVEZWVwLCBnZXQsIHNldCwgdXVpZCB9IGZyb20gXCJAbGlicy11aS91dGlsc1wiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBzdHlsZUNvbnRhaW5lciB9IGZyb20gXCIuL2RlZmluZXMvY3NzLmRlZmluZVwiO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c0RyYWdTY3JvbGxEaXJlY3RpdmUgfSBmcm9tIFwiLi9kcmFnLXNjcm9sbC5kaXJlY3RpdmVcIjtcbmltcG9ydCB7IElEcmFnRHJvcEZ1bmN0aW9uQ29udHJvbEV2ZW50LCBJRHJhZ0VuZCwgSURyYWdMZWF2ZSwgSURyYWdPdmVyLCBJRHJhZ1N0YXJ0LCBJRHJhZ2dpbmcsIElEcm9wIH0gZnJvbSBcIi4vaW50ZXJmYWNlcy9ldmVudC5pbnRlcmZhY2VcIjtcbkBEaXJlY3RpdmUoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICBzZWxlY3RvcjogXCJbTGlic1VpQ29tcG9uZW50c0RyYWdDb250YWluZXJEaXJlY3RpdmVdXCIsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNEcmFnQ29udGFpbmVyRGlyZWN0aXZlIGV4dGVuZHMgTGlic1VpQ29tcG9uZW50c0RyYWdTY3JvbGxEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAvLyAjcmVnaW9uIFBST1BFUlRZXG4gIHByaXZhdGUgZ3JvdXBJRCA9IHNpZ25hbDxzdHJpbmc+KHV1aWQoKSk7XG4gIHByaXZhdGUgaXNEcmFnT3ZlciA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgLy8gI3JlZ2lvbiBJTlBVVFxuICByZWFkb25seSBkaXNhYmxlRHJhZ0NvbnRhaW5lciA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IG1vZGUgPSBpbnB1dDxzdHJpbmcsICdtb3ZlJyB8ICdjb3B5JyB8ICdkZWVwQ29weSc+KCdtb3ZlJywgeyB0cmFuc2Zvcm06IHZhbHVlID0+IHZhbHVlID8/ICdtb3ZlJyB9KTtcbiAgcmVhZG9ubHkgZGlyZWN0aW9uRHJhZyA9IGlucHV0PCdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCc+KCk7XG4gIHJlYWRvbmx5IHZpZXdFbmNhcHN1bGF0aW9uID0gaW5wdXQ8J2VtdWxhdGVkJyB8ICdub25lJywgJ2VtdWxhdGVkJyB8ICdub25lJyB8IHVuZGVmaW5lZD4oJ2VtdWxhdGVkJywgeyB0cmFuc2Zvcm06IHZhbHVlID0+IHZhbHVlID8/ICdlbXVsYXRlZCcgfSk7XG4gIHJlYWRvbmx5IGFjY2VwdERyYWdTYW1lR3JvdXAgPSBpbnB1dDxib29sZWFuLCBib29sZWFuIHwgdW5kZWZpbmVkPihmYWxzZSwgeyB0cmFuc2Zvcm06IHZhbHVlID0+IHZhbHVlID8/IGZhbHNlIH0pO1xuICByZWFkb25seSBwbGFjZWhvbGRlciA9IGlucHV0PGJvb2xlYW4sIGJvb2xlYW4gfCB1bmRlZmluZWQ+KHRydWUsIHsgdHJhbnNmb3JtOiB2YWx1ZSA9PiB2YWx1ZSA/PyB0cnVlIH0pO1xuICByZWFkb25seSBncm91cE5hbWUgPSBpbnB1dDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4oJ2dyb3VwRHJhZ0FuZERyb3BEZWZhdWx0JywgeyB0cmFuc2Zvcm06IHZhbHVlID0+IHZhbHVlID8/ICdncm91cERyYWdBbmREcm9wRGVmYXVsdCcgfSk7IC8vIG7hur91IGPDoWMgZ3JvdXAgY8OzIHTDqm4gdHLDuW5nIG5oYXUgc+G6vSDEkcaw4bujYyBkcm9wXG4gIHJlYWRvbmx5IGRyb3BUb0dyb3VwTmFtZSA9IGlucHV0PEFycmF5PHN0cmluZz4gfCBudWxsPihudWxsKTsgLy8gbuG6v3UgaXRlbSB0cm9uZyBjw6FjIGdyb3VwIEEgxJHGsOG7o2MgZHJvcCB2w6BvIGdyb3VwIEIgbmjGsG5nIGdyb3VwIEIga2jDtG5nIMSRxrDhu6NjIGRyb3AgdsOgbyBncm91cCBBXG4gIHJlYWRvbmx5IGl0ZW1zID0gbW9kZWwucmVxdWlyZWQ8QXJyYXk8dW5rbm93bj4+KCk7XG4gIHJlYWRvbmx5IHN0eWxlc092ZXJyaWRlID0gaW5wdXQ8QXJyYXk8eyBjbGFzc05hbWU6IHN0cmluZywgc3R5bGVzOiBzdHJpbmcgfT4+KCk7XG5cbiAgLy8gI3JlZ2lvbiBPVVRQVVRcbiAgcmVhZG9ubHkgb3V0RHJhZ1N0YXJ0Q29udGFpbmVyID0gb3V0cHV0PElEcmFnU3RhcnQ+KCk7XG4gIHJlYWRvbmx5IG91dERyYWdPdmVyQ29udGFpbmVyID0gb3V0cHV0PElEcmFnT3Zlcj4oKTtcbiAgcmVhZG9ubHkgb3V0RHJhZ0xlYXZlQ29udGFpbmVyID0gb3V0cHV0PElEcmFnTGVhdmU+KCk7XG4gIHJlYWRvbmx5IG91dERyYWdFbmRDb250YWluZXIgPSBvdXRwdXQ8SURyYWdFbmQ+KCk7XG4gIHJlYWRvbmx5IG91dERyb3BwZWRDb250YWluZXIgPSBvdXRwdXQ8SURyb3A+KCk7XG4gIHJlYWRvbmx5IG91dERyb3BwZWRDb250YWluZXJFbXB0eSA9IG91dHB1dDxJRHJvcD4oKTtcbiAgcmVhZG9ubHkgb3V0RnVuY3Rpb25Db250cm9sID0gb3V0cHV0PElEcmFnRHJvcEZ1bmN0aW9uQ29udHJvbEV2ZW50PigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgY29uc3QgY29udGFpbmVyID0geyBlbGVtZW50IH07XG5cbiAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5Db250YWluZXIudXBkYXRlKGRhdGEgPT4ge1xuICAgICAgZGF0YS5zZXQodGhpcy5ncm91cElEKCksIGNvbnRhaW5lcik7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9KTtcblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMucm9vdEVsZW1lbnRTY3JvbGwoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgICBzZXQoY29udGFpbmVyLCAnZWxlbWVudFNjcm9sbCcsIHRoaXMucm9vdEVsZW1lbnRTY3JvbGwoKSk7XG4gICAgICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkNvbnRhaW5lci51cGRhdGUoY29udGFpbmVyTWFwID0+IG5ldyBNYXAoY29udGFpbmVyTWFwKSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5kaXJlY3Rpb25EcmFnKCkgJiYgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGVFbGVtZW50QW5kSXRlbURyYWcodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5kaXNhYmxlRHJhZ0NvbnRhaW5lcigpICYmIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgIHRoaXMuc2V0QXR0cmlidXRlRWxlbWVudEFuZEl0ZW1EcmFnKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm91dEZ1bmN0aW9uQ29udHJvbC5lbWl0KHsgc2V0QXR0cmlidXRlRWxlbWVudEFuZEl0ZW1EcmFnOiAoKSA9PiB0aGlzLnNldEF0dHJpYnV0ZUVsZW1lbnRBbmRJdGVtRHJhZyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkgfSk7XG5cbiAgICB0aGlzLm91dERyb3BwZWRDb250YWluZXIuc3Vic2NyaWJlKGV2ZW50RHJvcHBlZCA9PiB7XG4gICAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5PbkRyb3BDb250YWluZXIubmV4dChldmVudERyb3BwZWQpO1xuICAgIH0pO1xuICAgIHRoaXMub25EZXN0cm95LnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAoaW5kZXhTcGxpY2VMaXN0VG8gPiAtMSkge1xuICAgICAgICB0aGlzLml0ZW1zLnVwZGF0ZShpdGVtcyA9PiB7XG4gICAgICAgICAgaXRlbXMuc3BsaWNlKGluZGV4U3BsaWNlTGlzdFRvLCAxKTtcbiAgICAgICAgICByZXR1cm4gWy4uLml0ZW1zXTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkNvbnRhaW5lcigpLmRlbGV0ZSh0aGlzLmdyb3VwSUQoKSk7XG4gICAgfSk7XG4gICAgY29uc3QgZWxlbWVudENvbnRhaW5lciA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgdGhpcy5pbml0U3R5bGVBbmRBdHRyaWJ1dGUoZWxlbWVudENvbnRhaW5lciwgdHJ1ZSk7XG4gICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuT25JdGVtSW5pdC5waXBlKGRlYm91bmNlVGltZSgyNTApLCBmaWx0ZXIoZ3JvdXBOYW1lID0+IGdyb3VwTmFtZSA9PT0gdGhpcy5ncm91cE5hbWUoKSksIHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmluaXRTdHlsZUFuZEF0dHJpYnV0ZShlbGVtZW50Q29udGFpbmVyKSk7XG4gICAgY29uc3Qgc3R5bGVUYWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG5cbiAgICBzdHlsZVRhZy50ZXh0Q29udGVudCA9IHN0eWxlQ29udGFpbmVyKCh0aGlzLnN0eWxlc092ZXJyaWRlKCkgfHwgW10pLCB0aGlzLnZpZXdFbmNhcHN1bGF0aW9uKCksIHRoaXMuZ3JvdXBJRCgpKTtcbiAgICBlbGVtZW50Q29udGFpbmVyLmFwcGVuZENoaWxkKHN0eWxlVGFnKTtcbiAgICBlbGVtZW50Q29udGFpbmVyLmNsYXNzTGlzdC5hZGQodGhpcy5kcmFnRHJvcFNlcnZpY2UuQ2xhc3NDb250YWluZXJEZWZpbmUpO1xuXG4gICAgY29uc3QgaGFuZGxlckRyYWdTdGFydCA9IChldmVudERyYWdTdGFydDogSURyYWdTdGFydCkgPT4ge1xuXG4gICAgICB0aGlzLnNldEF0dHJpYnV0ZUVsZW1lbnRBbmRJdGVtRHJhZyhlbGVtZW50Q29udGFpbmVyLCB0cnVlKTtcbiAgICAgIGlmICh0aGlzLmdyb3VwSUQoKSA9PT0gZXZlbnREcmFnU3RhcnQuZWxlbWVudERyYWcuZ2V0QXR0cmlidXRlKCdncm91cElEJykpIHtcbiAgICAgICAgdGhpcy5vdXREcmFnU3RhcnRDb250YWluZXIuZW1pdCh7IC4uLmV2ZW50RHJhZ1N0YXJ0LCBpdGVtRHJhZ0luZm86IHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkl0ZW1EcmFnSW5mbyB9KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgc3RvcmVJbmRleCA9IHsgaW5kZXhEcmFnOiAtMSwgaW5kZXhEcmFnT3ZlcjogLTEgfTtcbiAgICBsZXQgaW5kZXhTcGxpY2VMaXN0VG8gPSAtMTtcbiAgICBjb25zdCBoYW5kbGVyRHJhZ092ZXIgPSAoZXZlbnREcmFnT3ZlcjogSURyYWdPdmVyKSA9PiB7XG4gICAgICBjb25zdCB7IGVsZW1lbnREcmFnLCBlbGVtZW50RHJhZ092ZXIgfSA9IGV2ZW50RHJhZ092ZXI7XG5cbiAgICAgIGlmICh0aGlzLmRpc2FibGVEcmFnQ29udGFpbmVyKCkgfHwgIXRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLmNoZWNrRWxlbWVudE92ZXJBY2NlcHRFbGVtZW50RHJhZyh0aGlzLmdyb3VwTmFtZSgpLCBlbGVtZW50RHJhZy5nZXRBdHRyaWJ1dGUoJ2dyb3VwTmFtZScpLCBlbGVtZW50RHJhZy5nZXRBdHRyaWJ1dGUoJ2Ryb3BUb0dyb3VwTmFtZScpKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBpbmRleERyYWcgPSBOdW1iZXIoZWxlbWVudERyYWcuZ2V0QXR0cmlidXRlKCdpbmRleCcpKS52YWx1ZU9mKCk7XG4gICAgICBjb25zdCBpbmRleERyYWdPdmVyID0gTnVtYmVyKGVsZW1lbnREcmFnT3Zlci5nZXRBdHRyaWJ1dGUoJ2luZGV4JykpLnZhbHVlT2YoKTtcbiAgICAgIGNvbnN0IGlkR3JvdXBFbGVtZW50RHJhZyA9IGVsZW1lbnREcmFnLmdldEF0dHJpYnV0ZSgnZ3JvdXBJRCcpO1xuICAgICAgY29uc3QgaWRHcm91cEVsZW1lbnREcmFnT3ZlciA9IGVsZW1lbnREcmFnT3Zlci5nZXRBdHRyaWJ1dGUoJ2dyb3VwSUQnKTtcblxuICAgICAgaWYgKCh0aGlzLmdyb3VwSUQoKSAhPT0gaWRHcm91cEVsZW1lbnREcmFnKSB8fCAoaWRHcm91cEVsZW1lbnREcmFnICE9PSBpZEdyb3VwRWxlbWVudERyYWdPdmVyKSkgeyAvLyB44butIGzDvSBjaG8gaXRlbSBkcmFnIG92ZXIgcXVhIDEgaXRlbSBraMOhYyBjb250YWluZXJcbiAgICAgICAgaWYgKGlkR3JvdXBFbGVtZW50RHJhZ092ZXIgPT09IHRoaXMuZ3JvdXBJRCgpICYmIHRoaXMucGxhY2Vob2xkZXIoKSkge1xuICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLm1vZGUoKSA9PT0gJ2RlZXBDb3B5JyA/IGNsb25lRGVlcCh0aGlzLmRyYWdEcm9wU2VydmljZS5JdGVtRHJhZ0luZm8/Lml0ZW0pIDogdGhpcy5kcmFnRHJvcFNlcnZpY2UuSXRlbURyYWdJbmZvPy5pdGVtO1xuXG4gICAgICAgICAgdGhpcy5pdGVtcy51cGRhdGUoaXRlbXMgPT4ge1xuICAgICAgICAgICAgaWYgKGluZGV4U3BsaWNlTGlzdFRvID49IDApIHtcbiAgICAgICAgICAgICAgaXRlbXMuc3BsaWNlKGluZGV4U3BsaWNlTGlzdFRvLCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGl0ZW1zLnNwbGljZShpbmRleERyYWdPdmVyLCAwLCBpdGVtKTtcbiAgICAgICAgICAgIHJldHVybiBbLi4uaXRlbXNdO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlRWxlbWVudEFuZEl0ZW1EcmFnKGVsZW1lbnRDb250YWluZXIsIGZhbHNlLCBpbmRleFNwbGljZUxpc3RUbyk7XG4gICAgICAgICAgaW5kZXhTcGxpY2VMaXN0VG8gPSBpbmRleERyYWdPdmVyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMuYWNjZXB0RHJhZ1NhbWVHcm91cCgpIHx8IGluZGV4RHJhZyA8IDAgfHwgaW5kZXhEcmFnT3ZlciA8IDAgfHwgIXRoaXMuaXRlbXMoKS5sZW5ndGggfHwgaW5kZXhEcmFnID4gdGhpcy5pdGVtcygpLmxlbmd0aCB8fCBpbmRleERyYWdPdmVyID4gdGhpcy5pdGVtcygpLmxlbmd0aCB8fCAoc3RvcmVJbmRleC5pbmRleERyYWcgPT09IGluZGV4RHJhZyAmJiBzdG9yZUluZGV4LmluZGV4RHJhZ092ZXIgPT09IGluZGV4RHJhZ092ZXIpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIC8vIHjhu60gbMO9IGNobyBpdGVtIGRyYWcgb3ZlciBxdWEgMSBpdGVtIGPDuW5nIGNvbnRhaW5lclxuICAgICAgY29uc3QgaXRlbURyYWcgPSB0aGlzLml0ZW1zKClbaW5kZXhEcmFnXTtcblxuICAgICAgdGhpcy5zZXRBbmltYXRpb25FbGVtZW50RHJhZ092ZXIoaW5kZXhEcmFnLCBpbmRleERyYWdPdmVyLCBlbGVtZW50RHJhZ092ZXIpO1xuICAgICAgc3RvcmVJbmRleC5pbmRleERyYWcgPSBpbmRleERyYWc7XG4gICAgICBzdG9yZUluZGV4LmluZGV4RHJhZ092ZXIgPSBpbmRleERyYWdPdmVyO1xuICAgICAgdGhpcy5pdGVtcy51cGRhdGUoaXRlbXMgPT4ge1xuICAgICAgICBpdGVtcy5zcGxpY2UoaW5kZXhEcmFnLCAxKTtcbiAgICAgICAgaXRlbXMuc3BsaWNlKGluZGV4RHJhZ092ZXIsIDAsIGl0ZW1EcmFnKTtcbiAgICAgICAgcmV0dXJuIFsuLi5pdGVtc107XG4gICAgICB9KTtcbiAgICAgIGVsZW1lbnREcmFnLnNldEF0dHJpYnV0ZSgnaW5kZXgnLCBpbmRleERyYWdPdmVyLnRvU3RyaW5nKCkpO1xuICAgICAgdGhpcy5zZXRBdHRyaWJ1dGVFbGVtZW50QW5kSXRlbURyYWcoZWxlbWVudENvbnRhaW5lcik7XG4gICAgfTtcblxuICAgIGNvbnN0IHJlbW92ZVBsYWNlaG9sZGVyRHJhZyA9IChldmVudERyYWc6IElEcmFnRW5kLCBpc0RyYWdnaW5nPzogYm9vbGVhbikgPT4ge1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsU2Nyb2xsVG9FbGVtZW50KCkpO1xuICAgICAgc3RvcmVJbmRleC5pbmRleERyYWcgPSAtMTtcbiAgICAgIHN0b3JlSW5kZXguaW5kZXhEcmFnT3ZlciA9IC0xO1xuICAgICAgY29uc3QgY2hpbGRyZW5FbGVtZW50ID0gZWxlbWVudENvbnRhaW5lci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkNsYXNzSXRlbURlZmluZSkgYXMgdW5rbm93biBhcyBBcnJheTxIVE1MRWxlbWVudD47XG5cbiAgICAgIGlmICghY2hlY2tNb3VzZU92ZXJJbkNvbnRhaW5lcihldmVudERyYWcubW91c2VQb3NpdGlvbiwgKHRoaXMucm9vdEVsZW1lbnRTY3JvbGwoKSB8fCBlbGVtZW50Q29udGFpbmVyKSkpIHtcbiAgICAgICAgY29uc3QgY2hpbGRFbGVtZW50SW5kZXggPSBBcnJheS5mcm9tPEhUTUxFbGVtZW50PihjaGlsZHJlbkVsZW1lbnQpLmZpbmRJbmRleCgoY2hpbGQpID0+IGNoaWxkLmNsYXNzTGlzdC5jb250YWlucygnbGlicy11aS1kcmFnLWRyb3AtaXRlbS1kcm9wLXBsYWNlaG9sZGVyJykpO1xuXG4gICAgICAgIGlmIChjaGlsZEVsZW1lbnRJbmRleCA+PSAwICYmIHRoaXMuZ3JvdXBJRCgpICE9PSBldmVudERyYWcuZWxlbWVudERyYWcuZ2V0QXR0cmlidXRlKCdncm91cElEJykpIHtcbiAgICAgICAgICB0aGlzLml0ZW1zLnVwZGF0ZShpdGVtcyA9PiB7XG4gICAgICAgICAgICBpdGVtcy5zcGxpY2UoY2hpbGRFbGVtZW50SW5kZXgsIDEpO1xuICAgICAgICAgICAgcmV0dXJuIFsuLi5pdGVtc107XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaW5kZXhTcGxpY2VMaXN0VG8gPSAtMTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVtb3ZlQXR0cmlidXRlcyhlbGVtZW50Q29udGFpbmVyLCBpc0RyYWdnaW5nKTtcbiAgICAgICAgdGhpcy5zZXRJbmRleEVsZW1lbnQoZWxlbWVudENvbnRhaW5lcik7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGluZGV4U3BsaWNlTGlzdFRvID49IDApIHtcbiAgICAgICAgdGhpcy5pdGVtcy51cGRhdGUoaXRlbXMgPT4ge1xuICAgICAgICAgIGl0ZW1zLnNwbGljZShpbmRleFNwbGljZUxpc3RUbywgMSk7XG4gICAgICAgICAgcmV0dXJuIFsuLi5pdGVtc107XG4gICAgICAgIH0pO1xuICAgICAgICBpbmRleFNwbGljZUxpc3RUbyA9IC0xO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVyRHJhZ2dpbmcgPSAoZXZlbnREcmFnZ2luZzogSURyYWdnaW5nKSA9PiB7XG4gICAgICB0aGlzLnNldEF0dHJpYnV0ZUVsZW1lbnRBbmRJdGVtRHJhZyhlbGVtZW50Q29udGFpbmVyKTtcbiAgICAgIGNvbnN0IHsgZWxlbWVudERyYWcgfSA9IGV2ZW50RHJhZ2dpbmc7XG4gICAgICBjb25zdCBmaWVsZElkSXRlbSA9IGVsZW1lbnREcmFnLmdldEF0dHJpYnV0ZSgnZmllbGRfaWQnKTtcbiAgICAgIGNvbnN0IGlkSXRlbURyYWcgPSBlbGVtZW50RHJhZy5nZXRBdHRyaWJ1dGUoJ2l0ZW1faWQnKTtcblxuICAgICAgaWYgKGZpZWxkSWRJdGVtICYmIGlkSXRlbURyYWcgJiYgdGhpcy5pdGVtcygpLmZpbmQoaXRlbSA9PiBnZXQoaXRlbSwgZmllbGRJZEl0ZW0pID09PSBpZEl0ZW1EcmFnKSkge1xuICAgICAgICBjb25zdCBjaGlsZHJlbkVsZW1lbnQgPSBlbGVtZW50Q29udGFpbmVyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUodGhpcy5kcmFnRHJvcFNlcnZpY2UuQ2xhc3NJdGVtRGVmaW5lKSBhcyB1bmtub3duIGFzIEFycmF5PEhUTUxFbGVtZW50PjtcbiAgICAgICAgY29uc3QgY2hpbGRFbGVtZW50ID0gQXJyYXkuZnJvbTxIVE1MRWxlbWVudD4oY2hpbGRyZW5FbGVtZW50KS5maW5kKChjaGlsZCkgPT4gY2hpbGQuZ2V0QXR0cmlidXRlKCdpdGVtX2lkJykgPT09IGlkSXRlbURyYWcpO1xuXG4gICAgICAgIGlmICh0aGlzLml0ZW1zKCkgPT09IGV2ZW50RHJhZ2dpbmcuaXRlbURyYWdJbmZvPy5pdGVtc0RyYWcoKSAmJiBjaGlsZEVsZW1lbnQgJiYgIWNoaWxkRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ2xpYnMtdWktZHJhZy1kcm9wLWl0ZW0tZHJvcC1wbGFjZWhvbGRlcicpICYmICFjaGlsZEVsZW1lbnQuZ2V0QXR0cmlidXRlKHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLlRhcmdldEl0ZW1EcmFnRmxhZykpIHtcbiAgICAgICAgICBjaGlsZEVsZW1lbnQuc2V0QXR0cmlidXRlKHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLlRhcmdldEl0ZW1EcmFnRmxhZywgJ3RydWUnKTtcbiAgICAgICAgICB0aGlzLmdyb3VwSUQuc2V0KGVsZW1lbnREcmFnLmdldEF0dHJpYnV0ZSgnZ3JvdXBJRCcpIHx8ICcnKTtcbiAgICAgICAgICBzdHlsZVRhZy5yZW1vdmUoKTtcbiAgICAgICAgICBzdHlsZVRhZy50ZXh0Q29udGVudCA9IHN0eWxlQ29udGFpbmVyKCh0aGlzLnN0eWxlc092ZXJyaWRlKCkgfHwgW10pLCB0aGlzLnZpZXdFbmNhcHN1bGF0aW9uKCksIHRoaXMuZ3JvdXBJRCgpKTtcbiAgICAgICAgICBlbGVtZW50Q29udGFpbmVyLmFwcGVuZENoaWxkKHN0eWxlVGFnKTtcbiAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZUVsZW1lbnRBbmRJdGVtRHJhZyhlbGVtZW50Q29udGFpbmVyLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5kaXNhYmxlRHJhZ0NvbnRhaW5lcigpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuZ3JvdXBJRCgpID09PSBlbGVtZW50RHJhZy5nZXRBdHRyaWJ1dGUoJ2dyb3VwSUQnKSAmJiAhdGhpcy5hY2NlcHREcmFnU2FtZUdyb3VwKCkpIHtcbiAgICAgICAgdGhpcy5jaGVja0FuZFNjcm9sbEVsZW1lbnRUb1Bvc2l0aW9uKGV2ZW50RHJhZ2dpbmcsIHRoaXMuaWdub3JlQXV0b1Njcm9sbCgpIHx8ICF0aGlzLmFjY2VwdERyYWdTYW1lR3JvdXAoKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFjaGVja01vdXNlT3ZlckluQ29udGFpbmVyKGV2ZW50RHJhZ2dpbmcubW91c2VQb3NpdGlvbiwgKHRoaXMucm9vdEVsZW1lbnRTY3JvbGwoKSB8fCBlbGVtZW50Q29udGFpbmVyKSkpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNEcmFnT3ZlcigpKSB7XG4gICAgICAgICAgdGhpcy5pc0RyYWdPdmVyLnNldChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5vdXREcmFnTGVhdmVDb250YWluZXIuZW1pdCh7IC4uLmV2ZW50RHJhZ2dpbmcsIGVsZW1lbnREcmFnTGVhdmU6IGVsZW1lbnRDb250YWluZXIgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVtb3ZlUGxhY2Vob2xkZXJEcmFnKGV2ZW50RHJhZ2dpbmcsIHRydWUpO1xuICAgICAgfVxuICAgICAgdGhpcy5jaGVja0FuZFNjcm9sbEVsZW1lbnRUb1Bvc2l0aW9uKGV2ZW50RHJhZ2dpbmcsIHRoaXMuaWdub3JlQXV0b1Njcm9sbCgpKTtcblxuICAgICAgLy8gxJBv4bqhbiBjb2RlIHjhu60gbMO9IGNobyB2aeG7h2Mga8OpbyBt4buZdCBlbGVtZW50IHbDoG8gMSBjb250YWluZXIgbmjGsG5nIGNvbnRhaW5lciBraMO0bmcgY8OzIGl0ZW0gaG/hurdjIGl0ZW0gZHJhZyBraMO0bmcgb3ZlciBxdWEgaXRlbSB0cm9uZyBjb250YWluZXJcbiAgICAgIGlmICghdGhpcy5pc0RyYWdPdmVyKCkpIHtcbiAgICAgICAgZWxlbWVudENvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCdsaWJzLXVpLWRyYWctZHJvcC1jb250YWluZXItZHJhZ292ZXInKTtcbiAgICAgICAgdGhpcy5pc0RyYWdPdmVyLnNldCh0cnVlKTtcbiAgICAgICAgdGhpcy5vdXREcmFnT3ZlckNvbnRhaW5lci5lbWl0KHsgLi4uZXZlbnREcmFnZ2luZywgZWxlbWVudERyYWdPdmVyOiBlbGVtZW50Q29udGFpbmVyIH0pO1xuICAgICAgfVxuICAgICAgY29uc3QgZXZlbnREcmFnT3ZlciA9IHsgLi4uZXZlbnREcmFnZ2luZywgZWxlbWVudERyYWdPdmVyOiBlbGVtZW50Q29udGFpbmVyIH07XG5cbiAgICAgIGlmICghdGhpcy5pdGVtcygpLmxlbmd0aCkge1xuICAgICAgICBldmVudERyYWdPdmVyLmVsZW1lbnREcmFnT3ZlciA9IHtcbiAgICAgICAgICBnZXRBdHRyaWJ1dGU6IChuYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGlmIChuYW1lID09PSAnZ3JvdXBJRCcpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ3JvdXBJRCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG5hbWUgIT09ICdpbmRleCcpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBhcyB1bmtub3duIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5PbkRyYWdPdmVyLm5leHQoZXZlbnREcmFnT3Zlcik7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjaGlsZHJlbkVsZW1lbnQgPSBlbGVtZW50Q29udGFpbmVyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUodGhpcy5kcmFnRHJvcFNlcnZpY2UuQ2xhc3NJdGVtRGVmaW5lKSBhcyB1bmtub3duIGFzIEFycmF5PEhUTUxFbGVtZW50PjtcbiAgICAgIGxldCBjaGlsZEVsZW1lbnQgPSBBcnJheS5mcm9tPEhUTUxFbGVtZW50PihjaGlsZHJlbkVsZW1lbnQpLmZpbmQoKGNoaWxkKSA9PiBjaGVja01vdXNlT3ZlckluQ29udGFpbmVyKGV2ZW50RHJhZ2dpbmcubW91c2VQb3NpdGlvbiwgY2hpbGQpKTtcblxuICAgICAgaWYgKGNoaWxkRWxlbWVudCkgeyAvLyBu4bq/dSB0w6xtIHRo4bqleSB0aMOsIHPhur0gbmjhuq1uIHF1YSBz4buxIGtp4buHbiBj4bunYSBkcmFnLWl0ZW0uZGlyZWN0aXZlIGVtaXRcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY2hpbGRFbGVtZW50ID0gQXJyYXkuZnJvbTxIVE1MRWxlbWVudD4oY2hpbGRyZW5FbGVtZW50KS5wb3AoKTtcblxuICAgICAgaWYgKGNoaWxkRWxlbWVudCkge1xuICAgICAgICBldmVudERyYWdPdmVyLmVsZW1lbnREcmFnT3ZlciA9IGNoaWxkRWxlbWVudDtcbiAgICAgICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuT25EcmFnT3Zlci5uZXh0KGV2ZW50RHJhZ092ZXIpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVyRHJhZ0VuZCA9IChldmVudERyYWdFbmQ6IElEcmFnRW5kKSA9PiB7XG4gICAgICBpZiAodGhpcy5kaXNhYmxlRHJhZ0NvbnRhaW5lcigpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGxldCByZWN0ID0gdW5kZWZpbmVkO1xuXG4gICAgICBpZiAodGhpcy5yb290RWxlbWVudFNjcm9sbCgpIHx8IGVsZW1lbnRDb250YWluZXIpIHtcbiAgICAgICAgcmVjdCA9ICh0aGlzLnJvb3RFbGVtZW50U2Nyb2xsKCkgfHwgZWxlbWVudENvbnRhaW5lcik/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgfVxuICAgICAgcmVtb3ZlUGxhY2Vob2xkZXJEcmFnKGV2ZW50RHJhZ0VuZCk7XG4gICAgICBjb25zdCB7IGVsZW1lbnREcmFnLCBtb3VzZVBvc2l0aW9uLCBpdGVtRHJhZ0luZm8gfSA9IGV2ZW50RHJhZ0VuZDtcblxuICAgICAgaWYgKHRoaXMuZ3JvdXBJRCgpID09PSBlbGVtZW50RHJhZy5nZXRBdHRyaWJ1dGUoJ2dyb3VwSUQnKSkge1xuICAgICAgICB0aGlzLm91dERyYWdFbmRDb250YWluZXIuZW1pdCh7IC4uLmV2ZW50RHJhZ0VuZCB9KTtcbiAgICAgIH1cbiAgICAgIGlmICghY2hlY2tNb3VzZU92ZXJJbkNvbnRhaW5lcihtb3VzZVBvc2l0aW9uLCB0aGlzLnJvb3RFbGVtZW50U2Nyb2xsKCkgfHwgZWxlbWVudENvbnRhaW5lciwgcmVjdCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgZXZlbnREcm9wID0geyBlbGVtZW50RHJhZzogZWxlbWVudERyYWcsIGVsZW1lbnREcm9wOiBlbGVtZW50Q29udGFpbmVyLCBpdGVtRHJhZ0luZm86IGl0ZW1EcmFnSW5mbyB9O1xuXG4gICAgICBpZiAodGhpcy5kaXNhYmxlRHJhZ0NvbnRhaW5lcigpIHx8ICF0aGlzLmRyYWdEcm9wU2VydmljZS5jaGVja0VsZW1lbnRPdmVyQWNjZXB0RWxlbWVudERyYWcodGhpcy5ncm91cE5hbWUoKSwgZWxlbWVudERyYWcuZ2V0QXR0cmlidXRlKCdncm91cE5hbWUnKSwgZWxlbWVudERyYWcuZ2V0QXR0cmlidXRlKCdkcm9wVG9Hcm91cE5hbWUnKSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjaGlsZHJlbkVsZW1lbnQgPSBlbGVtZW50Q29udGFpbmVyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUodGhpcy5kcmFnRHJvcFNlcnZpY2UuQ2xhc3NJdGVtRGVmaW5lKSBhcyB1bmtub3duIGFzIEFycmF5PEhUTUxFbGVtZW50PjtcbiAgICAgIGNvbnN0IGNoaWxkRWxlbWVudCA9IEFycmF5LmZyb208SFRNTEVsZW1lbnQ+KGNoaWxkcmVuRWxlbWVudCkuZmluZCgoY2hpbGQpID0+IGNoZWNrTW91c2VPdmVySW5Db250YWluZXIobW91c2VQb3NpdGlvbiwgY2hpbGQpKTtcblxuICAgICAgaWYgKGNoaWxkRWxlbWVudCkge1xuICAgICAgICBldmVudERyb3AuZWxlbWVudERyb3AgPSBjaGlsZEVsZW1lbnQ7XG4gICAgICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLk9uRHJvcC5uZXh0KGV2ZW50RHJvcCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZXZlbnREcm9wLmVsZW1lbnREcm9wID0ge1xuICAgICAgICBnZXRBdHRyaWJ1dGU6IChuYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBpZiAobmFtZSA9PT0gJ2Ryb3BDb250YWluZXInKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG5hbWUgPT09ICdncm91cElEJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ3JvdXBJRCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobmFtZSAhPT0gJ2luZGV4Jykge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNoaWxkcmVuRWxlbWVudC5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgIH0gYXMgdW5rbm93biBhcyBIVE1MRWxlbWVudDtcbiAgICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLk9uRHJvcC5uZXh0KGV2ZW50RHJvcCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZXJEcm9wID0gKGV2ZW50RHJvcDogSURyb3ApID0+IHtcbiAgICAgIGlmICh0aGlzLmRpc2FibGVEcmFnQ29udGFpbmVyKCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgeyBlbGVtZW50RHJhZywgZWxlbWVudERyb3AsIGl0ZW1EcmFnSW5mbyB9ID0gZXZlbnREcm9wO1xuXG4gICAgICBpZiAodGhpcy5ncm91cElEKCkgPT09IGVsZW1lbnREcmFnLmdldEF0dHJpYnV0ZSgnZ3JvdXBJRCcpICYmIHRoaXMuZ3JvdXBJRCgpID09PSBlbGVtZW50RHJvcC5nZXRBdHRyaWJ1dGUoJ2dyb3VwSUQnKSkge1xuICAgICAgICBpZiAoaXRlbURyYWdJbmZvKSB7XG4gICAgICAgICAgaXRlbURyYWdJbmZvLmluZGV4RHJvcCA9IE51bWJlcihlbGVtZW50RHJvcC5nZXRBdHRyaWJ1dGUoJ2luZGV4JykpLnZhbHVlT2YoKTtcbiAgICAgICAgICBpdGVtRHJhZ0luZm8uaXRlbXNEcm9wID0gdGhpcy5pdGVtcztcbiAgICAgICAgICBpdGVtRHJhZ0luZm8uY29udGFpbmVyRHJvcCA9IGVsZW1lbnRDb250YWluZXI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuYWNjZXB0RHJhZ1NhbWVHcm91cCgpKSB7XG4gICAgICAgICAgdGhpcy5vdXREcm9wcGVkQ29udGFpbmVyLmVtaXQoZXZlbnREcm9wKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlbW92ZUF0dHJpYnV0ZXMoZWxlbWVudENvbnRhaW5lcik7XG4gICAgICAgIHRoaXMuc2V0SW5kZXhFbGVtZW50KGVsZW1lbnRDb250YWluZXIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmdyb3VwSUQoKSAhPT0gZWxlbWVudERyb3AuZ2V0QXR0cmlidXRlKCdncm91cElEJykgfHwgZWxlbWVudERyYWcuZ2V0QXR0cmlidXRlKCdncm91cElEJykgPT09IGVsZW1lbnREcm9wLmdldEF0dHJpYnV0ZSgnZ3JvdXBJRCcpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGluZGV4RHJhZ092ZXIgPSB0aGlzLmdyb3VwSUQoKSAhPT0gZWxlbWVudERyYWcuZ2V0QXR0cmlidXRlKCdncm91cElEJykgPyBOdW1iZXIoZWxlbWVudERyb3AuZ2V0QXR0cmlidXRlKCdpbmRleCcpKS52YWx1ZU9mKCkgOiBOdW1iZXIoZWxlbWVudERyb3AuZ2V0QXR0cmlidXRlKCdpbmRleCcpKS52YWx1ZU9mKCkgLSAoZWxlbWVudERyb3AuZ2V0QXR0cmlidXRlKCdkcm9wQ29udGFpbmVyJykgPyAwIDogMSk7XG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5tb2RlKCkgPT09ICdkZWVwQ29weScgPyBjbG9uZURlZXAoaXRlbURyYWdJbmZvPy5pdGVtKSA6IGl0ZW1EcmFnSW5mbz8uaXRlbTtcblxuICAgICAgaWYgKGl0ZW1EcmFnSW5mbykge1xuICAgICAgICBpdGVtRHJhZ0luZm8uaW5kZXhEcm9wID0gaW5kZXhEcmFnT3ZlcjtcbiAgICAgICAgaXRlbURyYWdJbmZvLml0ZW1zRHJvcCA9IHRoaXMuaXRlbXM7XG4gICAgICAgIGl0ZW1EcmFnSW5mby5jb250YWluZXJEcm9wID0gZWxlbWVudENvbnRhaW5lcjtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzLml0ZW1zKCkubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMub3V0RHJvcHBlZENvbnRhaW5lckVtcHR5LmVtaXQoZXZlbnREcm9wKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5pdGVtcy51cGRhdGUoaXRlbXMgPT4ge1xuICAgICAgICBpdGVtcy5zcGxpY2UoaW5kZXhEcmFnT3ZlciwgMCwgaXRlbSk7XG4gICAgICAgIHJldHVybiBbLi4uaXRlbXNdO1xuICAgICAgfSk7XG4gICAgICBpZiAoaXRlbURyYWdJbmZvICYmIGl0ZW1EcmFnSW5mby5pdGVtc01vdmUgJiYgaXRlbURyYWdJbmZvLml0ZW1zTW92ZSgpKSB7XG4gICAgICAgIGl0ZW1EcmFnSW5mby5pdGVtc0RyYWcuc2V0KFsuLi5pdGVtRHJhZ0luZm8uaXRlbXNNb3ZlKCldKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNldEF0dHJpYnV0ZUVsZW1lbnRBbmRJdGVtRHJhZyhlbGVtZW50Q29udGFpbmVyKSk7XG4gICAgICB9XG4gICAgICB0aGlzLm91dERyb3BwZWRDb250YWluZXIuZW1pdChldmVudERyb3ApO1xuICAgICAgdGhpcy5yZW1vdmVBdHRyaWJ1dGVzKGVsZW1lbnRDb250YWluZXIpO1xuICAgICAgdGhpcy5zZXRJbmRleEVsZW1lbnQoZWxlbWVudENvbnRhaW5lcik7XG4gICAgfTtcblxuICAgIFt7XG4gICAgICBuYW1lOiAnT25EcmFnU3RhcnQnLFxuICAgICAgZXZlbnQ6IHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLk9uRHJhZ1N0YXJ0LFxuICAgICAgZnVuY3Rpb25DYWxsOiBoYW5kbGVyRHJhZ1N0YXJ0XG4gICAgfSwge1xuICAgICAgbmFtZTogJ09uRHJhZ092ZXInLFxuICAgICAgZXZlbnQ6IHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLk9uRHJhZ092ZXIsXG4gICAgICBmdW5jdGlvbkNhbGw6IGhhbmRsZXJEcmFnT3ZlcixcbiAgICAgIGRlYm91bmNlVGltZTogNVxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdPbkRyYWdnaW5nJyxcbiAgICAgIGV2ZW50OiB0aGlzLmRyYWdEcm9wU2VydmljZS5PbkRyYWdnaW5nLFxuICAgICAgZnVuY3Rpb25DYWxsOiBoYW5kbGVyRHJhZ2dpbmdcbiAgICB9LCB7XG4gICAgICBuYW1lOiAnT25EcmFnRW5kJyxcbiAgICAgIGV2ZW50OiB0aGlzLmRyYWdEcm9wU2VydmljZS5PbkRyYWdFbmQsXG4gICAgICBmdW5jdGlvbkNhbGw6IGhhbmRsZXJEcmFnRW5kXG4gICAgfSwge1xuICAgICAgbmFtZTogJ09uRHJvcCcsXG4gICAgICBldmVudDogdGhpcy5kcmFnRHJvcFNlcnZpY2UuT25Ecm9wLFxuICAgICAgZnVuY3Rpb25DYWxsOiBoYW5kbGVyRHJvcFxuICAgIH1cbiAgICBdLmZvckVhY2goKGl0ZW06IHsgbmFtZTogc3RyaW5nOyBkZWJvdW5jZVRpbWU/OiBudW1iZXI7IGV2ZW50OiBPYnNlcnZhYmxlPHVua25vd24+OyBmdW5jdGlvbkNhbGw6IG9iamVjdCB9KSA9PiAoaXRlbS5ldmVudC5waXBlKGRlYm91bmNlVGltZShpdGVtLmRlYm91bmNlVGltZSB8fCAwKSwgdGFrZVVudGlsKHRoaXMub25EZXN0cm95KSkuc3Vic2NyaWJlKGl0ZW0uZnVuY3Rpb25DYWxsKSkpO1xuICB9XG5cbiAgLyogKi9cbiAgcHJpdmF0ZSBhc3luYyBzZXRBdHRyaWJ1dGVFbGVtZW50QW5kSXRlbURyYWcoZWxlbWVudENvbnRhaW5lcjogSFRNTEVsZW1lbnQsIHNldEl0ZW1EcmFnPzogYm9vbGVhbiwgaW5kZXhJbnNlcnQ/OiBudW1iZXIpIHtcbiAgICBjb25zdCBjaGlsZHJlbkVsZW1lbnQgPSBlbGVtZW50Q29udGFpbmVyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUodGhpcy5kcmFnRHJvcFNlcnZpY2UuQ2xhc3NJdGVtRGVmaW5lKSBhcyB1bmtub3duIGFzIEFycmF5PEhUTUxFbGVtZW50PjtcbiAgICBsZXQgaW5kZXggPSAtMTtcblxuICAgIGVsZW1lbnRDb250YWluZXIuc2V0QXR0cmlidXRlKCdncm91cElEJywgdGhpcy5ncm91cElEKCkpO1xuICAgIGVsZW1lbnRDb250YWluZXIucmVtb3ZlQXR0cmlidXRlKCdkaXNhYmxlRHJhZ0NvbnRhaW5lcicpO1xuXG4gICAgaWYgKHRoaXMuZGlzYWJsZURyYWdDb250YWluZXIoKSkge1xuICAgICAgZWxlbWVudENvbnRhaW5lci5zZXRBdHRyaWJ1dGUoJ2Rpc2FibGVEcmFnQ29udGFpbmVyJywgYCR7dGhpcy5kaXNhYmxlRHJhZ0NvbnRhaW5lcigpfWApO1xuICAgIH1cbiAgICBpZiAodGhpcy5ncm91cE5hbWUoKSkge1xuICAgICAgZWxlbWVudENvbnRhaW5lci5zZXRBdHRyaWJ1dGUoJ2dyb3VwTmFtZScsIHRoaXMuZ3JvdXBOYW1lKCkgfHwgJycpO1xuICAgIH1cbiAgICBBcnJheS5mcm9tPEhUTUxFbGVtZW50PihjaGlsZHJlbkVsZW1lbnQpLmZvckVhY2goKGNoaWxkRWxlbWVudCkgPT4ge1xuICAgICAgaWYgKCFjaGlsZEVsZW1lbnQuaGFzQXR0cmlidXRlKCdncm91cE5hbWUnKSB8fCBjaGlsZEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdncm91cE5hbWUnKSA9PT0gdGhpcy5ncm91cE5hbWUoKSkge1xuICAgICAgICBjaGlsZEVsZW1lbnQuc2V0QXR0cmlidXRlKCdncm91cElEJywgdGhpcy5ncm91cElEKCkpO1xuICAgICAgfVxuICAgICAgaWYgKGNoaWxkRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2dyb3VwSUQnKSAhPT0gdGhpcy5ncm91cElEKCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaW5kZXggKz0gMTtcbiAgICAgIGNoaWxkRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2luZGV4JywgYCR7aW5kZXh9YCk7XG4gICAgICBjaGlsZEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdkaXNhYmxlRHJhZ0NvbnRhaW5lcicpO1xuICAgICAgaWYgKHRoaXMuZGlzYWJsZURyYWdDb250YWluZXIoKSkge1xuICAgICAgICBjaGlsZEVsZW1lbnQuc2V0QXR0cmlidXRlKCdkaXNhYmxlRHJhZ0NvbnRhaW5lcicsIGAke3RoaXMuZGlzYWJsZURyYWdDb250YWluZXIoKX1gKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmdyb3VwTmFtZSgpICYmICFjaGlsZEVsZW1lbnQuaGFzQXR0cmlidXRlKCdncm91cE5hbWUnKSkge1xuICAgICAgICBjaGlsZEVsZW1lbnQuc2V0QXR0cmlidXRlKCdncm91cE5hbWUnLCB0aGlzLmdyb3VwTmFtZSgpIHx8ICcnKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnBsYWNlaG9sZGVyKCkpIHtcbiAgICAgICAgY2hpbGRFbGVtZW50LnNldEF0dHJpYnV0ZSgncGxhY2Vob2xkZXInLCBgJHt0aGlzLnBsYWNlaG9sZGVyKCl9YCk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5kcm9wVG9Hcm91cE5hbWUoKSkge1xuICAgICAgICBjaGlsZEVsZW1lbnQuc2V0QXR0cmlidXRlKCdkcm9wVG9Hcm91cE5hbWUnLCBgJHt0aGlzLmRyb3BUb0dyb3VwTmFtZSgpPy5qb2luKCc7Jyl9YCk7XG4gICAgICB9XG4gICAgICBpZiAoaW5kZXhJbnNlcnQgPT09IGluZGV4ICYmIHRoaXMucGxhY2Vob2xkZXIoKSkge1xuICAgICAgICBpZiAoIWNoaWxkRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ2xpYnMtdWktZHJhZy1kcm9wLWl0ZW0tcGxhY2Vob2xkZXInKSkge1xuICAgICAgICAgIGNoaWxkRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdsaWJzLXVpLWRyYWctZHJvcC1pdGVtLXBsYWNlaG9sZGVyJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjaGlsZEVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdsaWJzLXVpLWRyYWctZHJvcC1pdGVtLWRyb3AtcGxhY2Vob2xkZXInKSkge1xuICAgICAgICAgIGNoaWxkRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdsaWJzLXVpLWRyYWctZHJvcC1pdGVtLWRyb3AtcGxhY2Vob2xkZXInKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoc2V0SXRlbURyYWcgJiYgY2hpbGRFbGVtZW50LmdldEF0dHJpYnV0ZSh0aGlzLmRyYWdEcm9wU2VydmljZS5UYXJnZXRJdGVtRHJhZ0ZsYWcpICYmIHRoaXMuaXRlbXMoKS5sZW5ndGggPj0gaW5kZXgpIHtcbiAgICAgICAgaWYgKHRoaXMucGxhY2Vob2xkZXIoKSkge1xuICAgICAgICAgIGlmICghY2hpbGRFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnbGlicy11aS1kcmFnLWRyb3AtaXRlbS1wbGFjZWhvbGRlcicpKSB7XG4gICAgICAgICAgICBjaGlsZEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnbGlicy11aS1kcmFnLWRyb3AtaXRlbS1wbGFjZWhvbGRlcicpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIWNoaWxkRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ2xpYnMtdWktZHJhZy1kcm9wLWl0ZW0tb3JpZ2luLXBsYWNlaG9sZGVyJykpIHtcbiAgICAgICAgICAgIGNoaWxkRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdsaWJzLXVpLWRyYWctZHJvcC1pdGVtLW9yaWdpbi1wbGFjZWhvbGRlcicpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkl0ZW1EcmFnSW5mbyA9IHsgaXRlbTogdGhpcy5pdGVtcygpW2luZGV4XSBhcyBvYmplY3QsIGluZGV4RHJhZzogaW5kZXgsIGl0ZW1zRHJhZzogdGhpcy5pdGVtcywgY29udGFpbmVyRHJhZzogZWxlbWVudENvbnRhaW5lciwgaXRlbXNNb3ZlOiBzaWduYWwoWy4uLnRoaXMuaXRlbXMoKV0pIH07XG4gICAgICAgIGlmICh0aGlzLm1vZGUoKSA9PT0gJ21vdmUnKSB7XG4gICAgICAgICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuSXRlbURyYWdJbmZvLml0ZW1zTW92ZT8udXBkYXRlKGl0ZW1zID0+IHtcbiAgICAgICAgICAgIGl0ZW1zLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICByZXR1cm4gWy4uLml0ZW1zXVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRTdHlsZUFuZEF0dHJpYnV0ZShlbGVtZW50Q29udGFpbmVyOiBIVE1MRWxlbWVudCwgaGFzUmVtb3ZlQXR0cmlidXRlID0gZmFsc2UsKSB7XG4gICAgdGhpcy5zZXRBdHRyaWJ1dGVFbGVtZW50QW5kSXRlbURyYWcoZWxlbWVudENvbnRhaW5lcik7XG4gICAgaWYgKGhhc1JlbW92ZUF0dHJpYnV0ZSkge1xuICAgICAgdGhpcy5yZW1vdmVBdHRyaWJ1dGVzKGVsZW1lbnRDb250YWluZXIpO1xuICAgIH1cbiAgICB0aGlzLnNldEluZGV4RWxlbWVudChlbGVtZW50Q29udGFpbmVyKTtcbiAgfTtcblxuICBwcml2YXRlIHNldEFuaW1hdGlvbkVsZW1lbnREcmFnT3ZlcihpbmRleERyYWc6IG51bWJlciwgaW5kZXhEcmFnT3ZlcjogbnVtYmVyLCBlbGVtZW50RHJhZ092ZXI6IEhUTUxFbGVtZW50KSB7XG4gICAgaWYgKCF0aGlzLmRpcmVjdGlvbkRyYWcoKSB8fCAhZWxlbWVudERyYWdPdmVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmRpcmVjdGlvbkRyYWcoKSA9PT0gJ3ZlcnRpY2FsJykge1xuICAgICAgZWxlbWVudERyYWdPdmVyLmNsYXNzTGlzdC5yZW1vdmUoJ2xpYnMtdWktZHJhZy1kcm9wLWl0ZW0tdHJhbnNsYXRlLWJvdHRvbScpO1xuICAgICAgZWxlbWVudERyYWdPdmVyLmNsYXNzTGlzdC5yZW1vdmUoJ2xpYnMtdWktZHJhZy1kcm9wLWl0ZW0tdHJhbnNsYXRlLXRvcCcpO1xuICAgICAgaWYgKGluZGV4RHJhZyA+IGluZGV4RHJhZ092ZXIpIHtcbiAgICAgICAgZWxlbWVudERyYWdPdmVyLmNsYXNzTGlzdC5hZGQoJ2xpYnMtdWktZHJhZy1kcm9wLWl0ZW0tdHJhbnNsYXRlLWJvdHRvbScpO1xuICAgICAgfVxuICAgICAgaWYgKGluZGV4RHJhZyA8IGluZGV4RHJhZ092ZXIpIHtcbiAgICAgICAgZWxlbWVudERyYWdPdmVyLmNsYXNzTGlzdC5hZGQoJ2xpYnMtdWktZHJhZy1kcm9wLWl0ZW0tdHJhbnNsYXRlLXRvcCcpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZWxlbWVudERyYWdPdmVyLmNsYXNzTGlzdC5yZW1vdmUoJ2xpYnMtdWktZHJhZy1kcm9wLWl0ZW0tdHJhbnNsYXRlLWxlZnQnKTtcbiAgICBlbGVtZW50RHJhZ092ZXIuY2xhc3NMaXN0LnJlbW92ZSgnbGlicy11aS1kcmFnLWRyb3AtaXRlbS10cmFuc2xhdGUtcmlnaHQnKTtcbiAgICBpZiAoaW5kZXhEcmFnID4gaW5kZXhEcmFnT3Zlcikge1xuICAgICAgZWxlbWVudERyYWdPdmVyLmNsYXNzTGlzdC5hZGQoJ2xpYnMtdWktZHJhZy1kcm9wLWl0ZW0tdHJhbnNsYXRlLXJpZ2h0Jyk7XG4gICAgfVxuICAgIGlmIChpbmRleERyYWcgPCBpbmRleERyYWdPdmVyKSB7XG4gICAgICBlbGVtZW50RHJhZ092ZXIuY2xhc3NMaXN0LmFkZCgnbGlicy11aS1kcmFnLWRyb3AtaXRlbS10cmFuc2xhdGUtbGVmdCcpO1xuICAgIH1cblxuICB9XG5cbiAgcHJpdmF0ZSBzZXRJbmRleEVsZW1lbnQoZWxlbWVudENvbnRhaW5lcjogSFRNTEVsZW1lbnQpIHtcbiAgICBjb25zdCBjaGlsZHJlbkVsZW1lbnQgPSBlbGVtZW50Q29udGFpbmVyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUodGhpcy5kcmFnRHJvcFNlcnZpY2UuQ2xhc3NJdGVtRGVmaW5lKSBhcyB1bmtub3duIGFzIEFycmF5PEhUTUxFbGVtZW50PjtcbiAgICBsZXQgaW5kZXggPSAtMTtcblxuICAgIEFycmF5LmZyb208SFRNTEVsZW1lbnQ+KGNoaWxkcmVuRWxlbWVudCkuZm9yRWFjaCgoY2hpbGRFbGVtZW50KSA9PiB7XG4gICAgICBpZiAoY2hpbGRFbGVtZW50LmdldEF0dHJpYnV0ZSgnZ3JvdXBJRCcpICE9PSB0aGlzLmdyb3VwSUQoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpbmRleCArPSAxO1xuICAgICAgY2hpbGRFbGVtZW50LnNldEF0dHJpYnV0ZSgnaW5kZXgnLCBgJHtpbmRleH1gKTtcbiAgICB9KTtcblxuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVBdHRyaWJ1dGVzKGVsZW1lbnRDb250YWluZXI6IEhUTUxFbGVtZW50LCBpZ25vcmVSZW1vdmVDbGFzc0l0ZW1PcmlnaW5QbGFjZWhvbGRlcj86IGJvb2xlYW4pIHtcbiAgICBjb25zdCBjaGlsZHJlbkVsZW1lbnQgPSBlbGVtZW50Q29udGFpbmVyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUodGhpcy5kcmFnRHJvcFNlcnZpY2UuQ2xhc3NJdGVtRGVmaW5lKSBhcyB1bmtub3duIGFzIEFycmF5PEhUTUxFbGVtZW50PjtcblxuICAgIGVsZW1lbnRDb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSgnbGlicy11aS1kcmFnLWRyb3AtY29udGFpbmVyLWRyYWdvdmVyJyk7XG4gICAgQXJyYXkuZnJvbTxIVE1MRWxlbWVudD4oY2hpbGRyZW5FbGVtZW50KS5mb3JFYWNoKChjaGlsZEVsZW1lbnQpID0+IHtcbiAgICAgIGlmIChjaGlsZEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdncm91cElEJykgIT09IHRoaXMuZ3JvdXBJRCgpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNoaWxkRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2luZGV4Jyk7XG4gICAgICBpZiAoIXRoaXMuZHJvcFRvR3JvdXBOYW1lKCkgfHwgIXRoaXMuZHJvcFRvR3JvdXBOYW1lKCk/Lmxlbmd0aCkge1xuICAgICAgICBjaGlsZEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdkcm9wVG9Hcm91cE5hbWUnKTtcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5wbGFjZWhvbGRlcigpKSB7XG4gICAgICAgIGNoaWxkRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyJyk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5wbGFjZWhvbGRlcigpKSB7XG4gICAgICAgIGNoaWxkRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdsaWJzLXVpLWRyYWctZHJvcC1pdGVtLXBsYWNlaG9sZGVyJyk7XG4gICAgICAgIGlmICghaWdub3JlUmVtb3ZlQ2xhc3NJdGVtT3JpZ2luUGxhY2Vob2xkZXIpIHtcblxuICAgICAgICAgIGNoaWxkRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdsaWJzLXVpLWRyYWctZHJvcC1pdGVtLW9yaWdpbi1wbGFjZWhvbGRlcicpO1xuICAgICAgICB9XG4gICAgICAgIGNoaWxkRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdsaWJzLXVpLWRyYWctZHJvcC1pdGVtLWRyb3AtcGxhY2Vob2xkZXInKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICB9XG59XG4iXX0=
|
|
@@ -18,7 +18,6 @@ export class LibsUiDragItemDirective extends LibsUiDragItemInContainerVirtualScr
|
|
|
18
18
|
ignoreStopEvent = input();
|
|
19
19
|
onlyMouseDownStopEvent = input();
|
|
20
20
|
dragRootElement = input();
|
|
21
|
-
groupName = input('groupDragAndDropDefault', { transform: value => value ?? 'groupDragAndDropDefault' });
|
|
22
21
|
dragBoundary = input();
|
|
23
22
|
dragBoundaryAcceptMouseLeaveContainer = input();
|
|
24
23
|
elementContainer = input();
|
|
@@ -53,7 +52,6 @@ export class LibsUiDragItemDirective extends LibsUiDragItemInContainerVirtualScr
|
|
|
53
52
|
element.setAttribute('item_id', get(this.item(), this.fieldId()));
|
|
54
53
|
}
|
|
55
54
|
}
|
|
56
|
-
element.setAttribute('groupName', this.groupName());
|
|
57
55
|
element.classList.add(this.dragDropService.ClassItemDefine);
|
|
58
56
|
this.dragDropService.OnDragging.pipe(throttleTime(this.throttleTimeHandlerDraggingEvent()), takeUntil(this.onDestroy)).subscribe((eventDragging) => {
|
|
59
57
|
if (this.disable() || element.getAttribute('disableDragContainer') || (this.fieldId() && this.item() && eventDragging.elementDrag.getAttribute('item_id') === get(this.item(), this.fieldId()))) {
|
|
@@ -251,7 +249,7 @@ export class LibsUiDragItemDirective extends LibsUiDragItemInContainerVirtualScr
|
|
|
251
249
|
});
|
|
252
250
|
}
|
|
253
251
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiDragItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
254
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: LibsUiDragItemDirective, isStandalone: true, selector: "[LibsUiDragItemDirective]", inputs: { fieldId: { classPropertyName: "fieldId", publicName: "fieldId", isSignal: true, isRequired: false, transformFunction: null }, item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: false, transformFunction: null }, itemInContainerVirtualScroll: { classPropertyName: "itemInContainerVirtualScroll", publicName: "itemInContainerVirtualScroll", isSignal: true, isRequired: false, transformFunction: null }, throttleTimeHandlerDraggingEvent: { classPropertyName: "throttleTimeHandlerDraggingEvent", publicName: "throttleTimeHandlerDraggingEvent", isSignal: true, isRequired: false, transformFunction: null }, ignoreStopEvent: { classPropertyName: "ignoreStopEvent", publicName: "ignoreStopEvent", isSignal: true, isRequired: false, transformFunction: null }, onlyMouseDownStopEvent: { classPropertyName: "onlyMouseDownStopEvent", publicName: "onlyMouseDownStopEvent", isSignal: true, isRequired: false, transformFunction: null }, dragRootElement: { classPropertyName: "dragRootElement", publicName: "dragRootElement", isSignal: true, isRequired: false, transformFunction: null },
|
|
252
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: LibsUiDragItemDirective, isStandalone: true, selector: "[LibsUiDragItemDirective]", inputs: { fieldId: { classPropertyName: "fieldId", publicName: "fieldId", isSignal: true, isRequired: false, transformFunction: null }, item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: false, transformFunction: null }, itemInContainerVirtualScroll: { classPropertyName: "itemInContainerVirtualScroll", publicName: "itemInContainerVirtualScroll", isSignal: true, isRequired: false, transformFunction: null }, throttleTimeHandlerDraggingEvent: { classPropertyName: "throttleTimeHandlerDraggingEvent", publicName: "throttleTimeHandlerDraggingEvent", isSignal: true, isRequired: false, transformFunction: null }, ignoreStopEvent: { classPropertyName: "ignoreStopEvent", publicName: "ignoreStopEvent", isSignal: true, isRequired: false, transformFunction: null }, onlyMouseDownStopEvent: { classPropertyName: "onlyMouseDownStopEvent", publicName: "onlyMouseDownStopEvent", isSignal: true, isRequired: false, transformFunction: null }, dragRootElement: { classPropertyName: "dragRootElement", publicName: "dragRootElement", isSignal: true, isRequired: false, transformFunction: null }, dragBoundary: { classPropertyName: "dragBoundary", publicName: "dragBoundary", isSignal: true, isRequired: false, transformFunction: null }, dragBoundaryAcceptMouseLeaveContainer: { classPropertyName: "dragBoundaryAcceptMouseLeaveContainer", publicName: "dragBoundaryAcceptMouseLeaveContainer", isSignal: true, isRequired: false, transformFunction: null }, elementContainer: { classPropertyName: "elementContainer", publicName: "elementContainer", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, disable: { classPropertyName: "disable", publicName: "disable", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { outDragStart: "outDragStart", outDragOver: "outDragOver", outDragLeave: "outDragLeave", outDragEnd: "outDragEnd", outDropped: "outDropped" }, usesInheritance: true, ngImport: i0 });
|
|
255
253
|
}
|
|
256
254
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiDragItemDirective, decorators: [{
|
|
257
255
|
type: Directive,
|
|
@@ -261,4 +259,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
261
259
|
standalone: true
|
|
262
260
|
}]
|
|
263
261
|
}], ctorParameters: () => [] });
|
|
264
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1pdGVtLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9kcmFnLWRyb3Avc3JjL2RyYWctaXRlbS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBaUIsU0FBUyxFQUFFLFVBQVUsRUFBYSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZILE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxpQkFBaUIsRUFBRSxHQUFHLEVBQUUscUJBQXFCLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkgsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRCxPQUFPLEVBQUUsK0NBQStDLEVBQUUsTUFBTSxtREFBbUQsQ0FBQzs7QUFRcEgsTUFBTSxPQUFPLHVCQUF3QixTQUFRLCtDQUErQztJQUMxRixtQkFBbUI7SUFDWCxVQUFVLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLFVBQVUsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7SUFFNUMsZ0JBQWdCO0lBQ2hCLHFFQUFxRTtJQUM1RCxPQUFPLEdBQUcsS0FBSyxDQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzVCLElBQUksR0FBRyxLQUFLLENBQU0sU0FBUyxDQUFDLENBQUM7SUFDN0IsNEJBQTRCLEdBQUcsS0FBSyxFQUFXLENBQUM7SUFDekQsb0NBQW9DO0lBQzNCLGdDQUFnQyxHQUFHLEtBQUssQ0FBNkIsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUcsZUFBZSxHQUFHLEtBQUssRUFB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Q0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ3JDLGFBQWEsQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7Z0JBQ2pELENBQUM7WUFDSCxDQUFDO1lBQ0QsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBQztZQUNuQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDO1lBRWpDLE1BQU0sYUFBYSxHQUFHLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsb0JBQW9CLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7WUFFdkksSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt3R0E5UlUsdUJBQXVCOzRGQUF2Qix1QkFBdUI7OzRGQUF2Qix1QkFBdUI7a0JBTG5DLFNBQVM7bUJBQUM7b0JBQ1QsOERBQThEO29CQUM5RCxRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyxVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgZWZmZWN0LCBpbmplY3QsIGlucHV0LCBvdXRwdXQsIHNpZ25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBJQm91bmRpbmdDbGllbnRSZWN0IH0gZnJvbSBcIkBsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXNcIjtcbmltcG9ydCB7IGNoZWNrTW91c2VPdmVySW5Db250YWluZXIsIGNoZWNrVmlld0luU2NyZWVuLCBnZXQsIGdldERyYWdFdmVudEJ5RWxlbWVudCwgZ2V0Vmlld3BvcnQgfSBmcm9tIFwiQGxpYnMtdWkvdXRpbHNcIjtcbmltcG9ydCB7IGZyb21FdmVudCwgdGFrZVVudGlsLCB0YXAsIHRocm90dGxlVGltZSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBMaWJzVWlEcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbERpcmVjdGl2ZSB9IGZyb20gXCIuL2RyYWctaXRlbS1pbi1jb250YWluZXItdmlydHVhbC1zY3JvbGwuZGlyZWN0aXZlXCI7XG5pbXBvcnQgeyBJRHJhZ0VuZCwgSURyYWdMZWF2ZSwgSURyYWdPdmVyLCBJRHJhZ1N0YXJ0LCBJRHJvcCB9IGZyb20gXCIuL2ludGVyZmFjZXMvZXZlbnQuaW50ZXJmYWNlXCI7XG5cbkBEaXJlY3RpdmUoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICBzZWxlY3RvcjogXCJbTGlic1VpRHJhZ0l0ZW1EaXJlY3RpdmVdXCIsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpRHJhZ0l0ZW1EaXJlY3RpdmUgZXh0ZW5kcyBMaWJzVWlEcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbERpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIC8vICNyZWdpb24gUFJPUEVSVFlcbiAgcHJpdmF0ZSBpc0RyYWdPdmVyID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSBpc0RyYWdnaW5nID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICAvLyAjcmVnaW9uIElOUFVUXG4gIC8vc2V0dXAgMyBmaWVsZCBwaMOtYSBkxrDhu5tpIG7hur91IMSRYW5nIHPhu60gZOG7pW5nIGl0ZW0gdHJvbmcgdmlydHVhbC1zY3JvbGwgXG4gIHJlYWRvbmx5IGZpZWxkSWQgPSBpbnB1dDxzdHJpbmc+KCcnKTtcbiAgcmVhZG9ubHkgaXRlbSA9IGlucHV0PGFueT4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgaXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbCA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICByZWFkb25seSB0aHJvdHRsZVRpbWVIYW5kbGVyRHJhZ2dpbmdFdmVudCA9IGlucHV0PG51bWJlciwgbnVtYmVyIHwgdW5kZWZpbmVkPigwLCB7IHRyYW5zZm9ybTogdmFsdWUgPT4gdmFsdWUgfHwgMCB9KTtcbiAgcmVhZG9ubHkgaWdub3JlU3RvcEV2ZW50ID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgb25seU1vdXNlRG93blN0b3BFdmVudCA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IGRyYWdSb290RWxlbWVudCA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IGdyb3VwTmFtZSA9IGlucHV0PHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPignZ3JvdXBEcmFnQW5kRHJvcERlZmF1bHQnLCB7IHRyYW5zZm9ybTogdmFsdWUgPT4gdmFsdWUgPz8gJ2dyb3VwRHJhZ0FuZERyb3BEZWZhdWx0JyB9KTtcbiAgcmVhZG9ubHkgZHJhZ0JvdW5kYXJ5ID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgZHJhZ0JvdW5kYXJ5QWNjZXB0TW91c2VMZWF2ZUNvbnRhaW5lciA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IGVsZW1lbnRDb250YWluZXIgPSBpbnB1dDxIVE1MRWxlbWVudD4oKTtcbiAgcmVhZG9ubHkgekluZGV4ID0gaW5wdXQ8bnVtYmVyLCBudW1iZXIgfCB1bmRlZmluZWQ+KDEzMDAsIHsgdHJhbnNmb3JtOiB2YWx1ZSA9PiB2YWx1ZSA/PyAxMzAwIH0pO1xuICByZWFkb25seSBkaXNhYmxlID0gaW5wdXQ8Ym9vbGVhbj4oKTtcblxuICAvLyAjcmVnaW9uIE9VVFBVVFxuICByZWFkb25seSBvdXREcmFnU3RhcnQgPSBvdXRwdXQ8SURyYWdTdGFydD4oKTtcbiAgcmVhZG9ubHkgb3V0RHJhZ092ZXIgPSBvdXRwdXQ8SURyYWdPdmVyPigpO1xuICByZWFkb25seSBvdXREcmFnTGVhdmUgPSBvdXRwdXQ8SURyYWdMZWF2ZT4oKTtcbiAgcmVhZG9ubHkgb3V0RHJhZ0VuZCA9IG91dHB1dDxJRHJhZ0VuZD4oKTtcbiAgcmVhZG9ubHkgb3V0RHJvcHBlZCA9IG91dHB1dDxJRHJvcD4oKTtcblxuICAvLyAjcmVnaW9uIElOSkVDVFxuICBwcml2YXRlIGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmVsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoYCR7dGhpcy5kcmFnRHJvcFNlcnZpY2UuQ2xhc3NJdGVtRGVmaW5lfS1kaXNhYmxlYCk7XG4gICAgICBpZiAodGhpcy5kaXNhYmxlKCkgJiYgIWVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKGAke3RoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkNsYXNzSXRlbURlZmluZX0tZGlzYWJsZWApKSB7XG4gICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZChgJHt0aGlzLmRyYWdEcm9wU2VydmljZS5DbGFzc0l0ZW1EZWZpbmV9LWRpc2FibGVgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgaWYgKHRoaXMuZmllbGRJZCgpKSB7XG4gICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnZmllbGRfaWQnLCB0aGlzLmZpZWxkSWQoKSk7XG4gICAgICBpZiAodGhpcy5pdGVtKCkpIHtcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2l0ZW1faWQnLCBnZXQodGhpcy5pdGVtKCksIHRoaXMuZmllbGRJZCgpKSk7XG4gICAgICB9XG4gICAgfVxuICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdncm91cE5hbWUnLCB0aGlzLmdyb3VwTmFtZSgpKTtcbiAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQodGhpcy5kcmFnRHJvcFNlcnZpY2UuQ2xhc3NJdGVtRGVmaW5lKTtcbiAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5PbkRyYWdnaW5nLnBpcGUodGhyb3R0bGVUaW1lKHRoaXMudGhyb3R0bGVUaW1lSGFuZGxlckRyYWdnaW5nRXZlbnQoKSksIHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSkpLnN1YnNjcmliZSgoZXZlbnREcmFnZ2luZykgPT4ge1xuICAgICAgaWYgKHRoaXMuZGlzYWJsZSgpIHx8IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkaXNhYmxlRHJhZ0NvbnRhaW5lcicpIHx8ICh0aGlzLmZpZWxkSWQoKSAmJiB0aGlzLml0ZW0oKSAmJiBldmVudERyYWdnaW5nLmVsZW1lbnREcmFnLmdldEF0dHJpYnV0ZSgnaXRlbV9pZCcpID09PSBnZXQodGhpcy5pdGVtKCksIHRoaXMuZmllbGRJZCgpKSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgY29udGFpbmVyQnlJZCA9IHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkNvbnRhaW5lcigpLmdldChlbGVtZW50LmdldEF0dHJpYnV0ZSgnZ3JvdXBJRCcpIHx8ICcnKTtcblxuICAgICAgaWYgKGNvbnRhaW5lckJ5SWQpIHtcbiAgICAgICAgaWYgKGV2ZW50RHJhZ2dpbmcuZWxlbWVudEtlZXBDb250YWluZXIgfHwgIXRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLmNoZWNrRWxlbWVudE92ZXJBY2NlcHRFbGVtZW50RHJhZyhjb250YWluZXJCeUlkLmVsZW1lbnQuZ2V0QXR0cmlidXRlKCdncm91cE5hbWUnKSwgZXZlbnREcmFnZ2luZy5lbGVtZW50RHJhZy5nZXRBdHRyaWJ1dGUoJ2dyb3VwTmFtZScpLCBldmVudERyYWdnaW5nLmVsZW1lbnREcmFnLmdldEF0dHJpYnV0ZSgnZHJvcFRvR3JvdXBOYW1lJykpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY2hlY2tNb3VzZU92ZXJJbkNvbnRhaW5lcihldmVudERyYWdnaW5nLm1vdXNlUG9zaXRpb24sIGVsZW1lbnQpICYmIGVsZW1lbnQgIT09IGV2ZW50RHJhZ2dpbmcuZWxlbWVudERyYWcgJiYgY29udGFpbmVyQnlJZCAmJiBjaGVja1ZpZXdJblNjcmVlbihjb250YWluZXJCeUlkLmVsZW1lbnQsIGVsZW1lbnQsIGNvbnRhaW5lckJ5SWQuZWxlbWVudFNjcm9sbCkpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNEcmFnT3ZlcigpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGV2ZW50RHJhZ092ZXIgPSB7IC4uLmV2ZW50RHJhZ2dpbmcsIGVsZW1lbnREcmFnT3ZlcjogZWxlbWVudCB9O1xuXG4gICAgICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLk9uRHJhZ092ZXIubmV4dChldmVudERyYWdPdmVyKTtcbiAgICAgICAgdGhpcy5vdXREcmFnT3Zlci5lbWl0KGV2ZW50RHJhZ092ZXIpO1xuICAgICAgICB0aGlzLmlzRHJhZ092ZXIuc2V0KHRydWUpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuaXNEcmFnT3ZlcigpKSB7XG4gICAgICAgIGNvbnN0IGV2ZW50RHJhZ0xlYXZlID0geyAuLi5ldmVudERyYWdnaW5nLCBlbGVtZW50RHJhZ0xlYXZlOiBlbGVtZW50IH07XG4gICAgICAgIHRoaXMuaXNEcmFnT3Zlci5zZXQoZmFsc2UpO1xuICAgICAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5PbkRyYWdMZWF2ZS5uZXh0KGV2ZW50RHJhZ0xlYXZlKTtcbiAgICAgICAgdGhpcy5vdXREcmFnTGVhdmUuZW1pdChldmVudERyYWdMZWF2ZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5PbkRyb3BDb250YWluZXIucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kpKS5zdWJzY3JpYmUoKGV2ZW50RHJvcCkgPT4ge1xuICAgICAgaWYgKGV2ZW50RHJvcC5lbGVtZW50RHJvcCAhPT0gZWxlbWVudCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBkcm9wRXZlbnQgPSB7IGVsZW1lbnREcmFnOiBldmVudERyb3AuZWxlbWVudERyYWcsIGVsZW1lbnREcm9wOiBlbGVtZW50LCBpdGVtRHJhZ0luZm86IGV2ZW50RHJvcC5pdGVtRHJhZ0luZm8gfTtcblxuICAgICAgdGhpcy5vdXREcm9wcGVkLmVtaXQoZHJvcEV2ZW50KTtcbiAgICB9KTtcbiAgICBjb25zdCBzdHlsZVRhZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcblxuICAgIHN0eWxlVGFnLnRleHRDb250ZW50ID0gYC5saWJzLXVpLWRyYWctZHJvcC1pdGVtLWRyYWdnaW5ne2N1cnNvcjptb3ZlfWA7XG4gICAgbGV0IG5vZGVDbG9uZSA9IGVsZW1lbnQ7XG4gICAgbGV0IGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VMZWZ0ID0gLTE7XG4gICAgbGV0IGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VUb3AgPSAtMTtcbiAgICBsZXQgY29udGV4dE1lbnUgPSBmYWxzZTtcbiAgICBjb25zdCBzdG9wRXZlbnRNb3VzZSA9IChtb3VzZUV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBpZiAoIXRoaXMuaWdub3JlU3RvcEV2ZW50KCkpIHtcbiAgICAgICAgbW91c2VFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBtb3VzZUV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgfVxuICAgIH07XG4gICAgY29uc3QgdXBkYXRlUG9zaXRpb25FbGVtZW50Um9vdEFuZFJlbW92ZU5vZGVDbG9uZSA9ICgpID0+IHtcbiAgICAgIGlmICh0aGlzLmRyYWdSb290RWxlbWVudCgpKSB7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lckJ5SWQgPSB0aGlzLmRyYWdEcm9wU2VydmljZS5Db250YWluZXIoKS5nZXQoZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2dyb3VwSUQnKSB8fCAnJyk7XG5cbiAgICAgICAgY29uc3QgY29udGFpbmVySXRlbSA9IHRoaXMuZWxlbWVudENvbnRhaW5lcigpIHx8IGNvbnRhaW5lckJ5SWQ/LmVsZW1lbnRTY3JvbGwgfHwgY29udGFpbmVyQnlJZD8uZWxlbWVudCB8fCBkb2N1bWVudC5ib2R5O1xuICAgICAgICBjb25zdCByZWN0Q29udGFpbmVyID0gY29udGFpbmVySXRlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgcmVjdE5vZGVDbG9uZSA9IG5vZGVDbG9uZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgbnVtYmVyU3ViID0gTnVtYmVyKChnZXRDb21wdXRlZFN0eWxlKGNvbnRhaW5lckl0ZW0pLmJvcmRlci5tYXRjaCgvXFxkK3B4L2dpKSB8fCBbJzAnXSlbMF0ucmVwbGFjZSgvXFxEKy9pZywgJycpKS52YWx1ZU9mKCk7XG5cbiAgICAgICAgZWxlbWVudC5zdHlsZS5sZWZ0ID0gKHJlY3ROb2RlQ2xvbmUubGVmdCAtIHJlY3RDb250YWluZXIubGVmdCAtIG51bWJlclN1YikgKyAncHgnO1xuICAgICAgICBlbGVtZW50LnN0eWxlLnRvcCA9IChyZWN0Tm9kZUNsb25lLnRvcCAtIHJlY3RDb250YWluZXIudG9wIC0gbnVtYmVyU3ViKSArICdweCc7XG4gICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnb3BhY2l0eS0wJyk7XG4gICAgICB9XG4gICAgICBkaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlTGVmdCA9IC0xO1xuICAgICAgZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZVRvcCA9IC0xO1xuICAgICAgbm9kZUNsb25lLnJlbW92ZSgpO1xuICAgIH07XG5cbiAgICBmcm9tRXZlbnQoZG9jdW1lbnQsICdjb250ZXh0bWVudScpLnBpcGUoXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5pc0RyYWdnaW5nKCkpIHtcbiAgICAgICAgICB1cGRhdGVQb3NpdGlvbkVsZW1lbnRSb290QW5kUmVtb3ZlTm9kZUNsb25lKCk7XG4gICAgICAgIH1cbiAgICAgICAgY29udGV4dE1lbnUgPSB0cnVlO1xuXG4gICAgICB9KSxcbiAgICAgIHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSlcbiAgICApLnN1YnNjcmliZSgpO1xuXG4gICAgbGV0IGlnbm9yZU1vdXNlZG93biA9IGZhbHNlO1xuXG4gICAgZ2V0RHJhZ0V2ZW50QnlFbGVtZW50KHtcbiAgICAgIGVsZW1lbnRNb3VzZURvd246IGVsZW1lbnQsXG4gICAgICBmdW5jdGlvbk1vdXNlRG93bjogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkl0ZW1DbGljayA9IGVsZW1lbnQ7XG4gICAgICAgIGNvbnRleHRNZW51ID0gZmFsc2U7XG4gICAgICAgIHRoaXMudXBkYXRlTW91c2VFdmVudHNXaGVuTW92ZU92ZXJJZnJhbWUoJ25vbmUnKTtcbiAgICAgICAgaWYgKCh0aGlzLmRpc2FibGUoKSB8fCBlbGVtZW50LmdldEF0dHJpYnV0ZSgnZGlzYWJsZURyYWdDb250YWluZXInKSB8fCAhdGhpcy5pc0RyYWdnaW5nKCkgfHwgdGhpcy5pdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsKCkpICYmICF0aGlzLm9ubHlNb3VzZURvd25TdG9wRXZlbnQoKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzdG9wRXZlbnRNb3VzZShldmVudCk7XG4gICAgICB9LFxuICAgICAgZnVuY3Rpb25Nb3VzZU1vdmU6KGV2ZW50OiBNb3VzZUV2ZW50KSA9PntcbiAgICAgICAgc3RvcEV2ZW50TW91c2UoZXZlbnQpO1xuICAgICAgfSxcbiAgICAgIGZ1bmN0aW9uTW91c2VVcDooZXZlbnQ6IE1vdXNlRXZlbnQpID0+e1xuICAgICAgICB0aGlzLnVwZGF0ZU1vdXNlRXZlbnRzV2hlbk1vdmVPdmVySWZyYW1lKCdhdXRvJyk7XG4gICAgICAgICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UucmVzZXRJdGVtQ2xpY2soKTtcbiAgICAgICAgICBzdG9wRXZlbnRNb3VzZShldmVudCk7XG4gICAgICAgICAgaWYgKHRoaXMuZGlzYWJsZSgpIHx8IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkaXNhYmxlRHJhZ0NvbnRhaW5lcicpIHx8IGNvbnRleHRNZW51IHx8ICF0aGlzLmlzRHJhZ2dpbmcoKSkge1xuICAgICAgICAgICAgY29udGV4dE1lbnUgPSBmYWxzZTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb250ZXh0TWVudSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuaXNEcmFnZ2luZy5zZXQoZmFsc2UpO1xuICAgICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLlRhcmdldEl0ZW1EcmFnRmxhZyk7XG4gICAgICAgICAgaWYgKHRoaXMuaXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbCgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IG1vdXNlUG9zaXRpb24gPSB7IGNsaWVudFg6IGV2ZW50LmNsaWVudFgsIGNsaWVudFk6IGV2ZW50LmNsaWVudFkgfTtcblxuICAgICAgICAgIGlmICh0aGlzLmRyYWdCb3VuZGFyeSgpICYmIHRoaXMuZHJhZ0JvdW5kYXJ5QWNjZXB0TW91c2VMZWF2ZUNvbnRhaW5lcigpKSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmdldENsaWVudFBvc2l0aW9uKGVsZW1lbnQsIG1vdXNlUG9zaXRpb24sIGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VMZWZ0LCBkaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlVG9wLCB0aGlzLmRyYWdCb3VuZGFyeSgpLCB0aGlzLmVsZW1lbnRDb250YWluZXIoKSk7XG5cbiAgICAgICAgICAgIG1vdXNlUG9zaXRpb24uY2xpZW50WCA9IHJlc3VsdC5jbGllbnRYO1xuICAgICAgICAgICAgbW91c2VQb3NpdGlvbi5jbGllbnRZID0gcmVzdWx0LmNsaWVudFk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGRyYWdFbmRFdmVudCA9IHsgbW91c2VQb3NpdGlvbiwgZWxlbWVudERyYWc6IGVsZW1lbnQsIGl0ZW1EcmFnSW5mbzogdGhpcy5kcmFnRHJvcFNlcnZpY2UuSXRlbURyYWdJbmZvIH07XG5cbiAgICAgICAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5JdGVtRHJhZ0luZm8gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuT25EcmFnRW5kLm5leHQoZHJhZ0VuZEV2ZW50KTtcbiAgICAgICAgICB0aGlzLm91dERyYWdFbmQuZW1pdChkcmFnRW5kRXZlbnQpO1xuXG4gICAgICAgICAgbm9kZUNsb25lLmNsYXNzTGlzdC5yZW1vdmUoJ2xpYnMtdWktZHJhZy1kcm9wLWl0ZW0tZHJhZ2dpbmcnKTtcbiAgICAgICAgICBzdHlsZVRhZy5yZW1vdmUoKTtcblxuICAgICAgICAgIHVwZGF0ZVBvc2l0aW9uRWxlbWVudFJvb3RBbmRSZW1vdmVOb2RlQ2xvbmUoKTtcbiAgICAgIH0sXG4gICAgICBvbkRlc3Ryb3k6IHRoaXMub25EZXN0cm95XG4gICAgfSkucGlwZSh0YXAoKGRyYWdNb3VzZUV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBjb25zdCByZWN0RWxlbWVudCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCB2aWV3cG9ydCA9IGdldFZpZXdwb3J0KCkgYXMgSUJvdW5kaW5nQ2xpZW50UmVjdDtcblxuICAgICAgaWYgKHRoaXMuZGlzYWJsZSgpIHx8IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkaXNhYmxlRHJhZ0NvbnRhaW5lcicpIHx8ICFkcmFnTW91c2VFdmVudC5jbGllbnRYIHx8ICghaWdub3JlTW91c2Vkb3duICYmIGRyYWdNb3VzZUV2ZW50LnR5cGUgPT09ICdtb3VzZWRvd24nICYmIHJlY3RFbGVtZW50LmhlaWdodCArIHJlY3RFbGVtZW50LnRvcCA+PSB2aWV3cG9ydC5oZWlnaHQpKSB7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgeyBjbGllbnRYLCBjbGllbnRZIH0gPSBkcmFnTW91c2VFdmVudDtcblxuICAgICAgaWYgKGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VMZWZ0ID09PSAtMSkge1xuICAgICAgICBkaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlTGVmdCA9IGNsaWVudFggLSByZWN0RWxlbWVudC5sZWZ0O1xuICAgICAgfVxuXG4gICAgICBpZiAoZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZVRvcCA9PT0gLTEpIHtcbiAgICAgICAgZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZVRvcCA9IGNsaWVudFkgLSByZWN0RWxlbWVudC50b3A7XG4gICAgICB9XG4gICAgfSkpLnN1YnNjcmliZShkcmFnTW91c2VFdmVudCA9PiB7XG4gICAgICBpZiAodGhpcy5kcmFnRHJvcFNlcnZpY2UuSXRlbUNsaWNrLmZpbHRlcihpdGVtID0+IGl0ZW0gIT09IGVsZW1lbnQpLnNvbWUoaXRlbSA9PiBlbGVtZW50LmNvbnRhaW5zKGl0ZW0pKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5kaXNhYmxlKCkgfHwgZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2Rpc2FibGVEcmFnQ29udGFpbmVyJykgfHwgIWRyYWdNb3VzZUV2ZW50LmNsaWVudFggfHwgZHJhZ01vdXNlRXZlbnQudHlwZSA9PT0gJ21vdXNlZG93bicgfHwgY29udGV4dE1lbnUgfHwgKHRoaXMuaXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbCgpICYmIHRoaXMuaXNEcmFnZ2luZygpKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZ25vcmVNb3VzZWRvd24gPSB0cnVlO1xuICAgICAgY29uc3QgeyBjbGllbnRYLCBjbGllbnRZIH0gPSBkcmFnTW91c2VFdmVudDtcbiAgICAgIGNvbnN0IG1vdXNlUG9zaXRpb24gPSB7IGNsaWVudFgsIGNsaWVudFkgfTtcbiAgICAgIGNvbnN0IHJlY3RFbGVtZW50ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgaWYgKCF0aGlzLmlzRHJhZ2dpbmcoKSkge1xuICAgICAgICB0aGlzLmlzRHJhZ2dpbmcuc2V0KHRydWUpO1xuICAgICAgICBjb25zdCBldmVudERyYWdTdGFydCA9IHsgbW91c2VQb3NpdGlvbiwgZWxlbWVudERyYWc6IGVsZW1lbnQsIGl0ZW1EcmFnSW5mbzogdGhpcy5kcmFnRHJvcFNlcnZpY2UuSXRlbURyYWdJbmZvIH07XG5cbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUodGhpcy5kcmFnRHJvcFNlcnZpY2UuVGFyZ2V0SXRlbURyYWdGbGFnLCAndHJ1ZScpO1xuICAgICAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5PbkRyYWdTdGFydC5uZXh0KGV2ZW50RHJhZ1N0YXJ0KTtcbiAgICAgICAgZXZlbnREcmFnU3RhcnQuaXRlbURyYWdJbmZvID0gdGhpcy5kcmFnRHJvcFNlcnZpY2UuSXRlbURyYWdJbmZvO1xuICAgICAgICB0aGlzLm91dERyYWdTdGFydC5lbWl0KGV2ZW50RHJhZ1N0YXJ0KTtcblxuICAgICAgICBub2RlQ2xvbmUgPSBlbGVtZW50LmNsb25lTm9kZSh0cnVlKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgbm9kZUNsb25lLnN0eWxlLnpJbmRleCA9IGAke3RoaXMuekluZGV4KCl9YDtcbiAgICAgICAgbm9kZUNsb25lLmNsYXNzTGlzdC5hZGQoJyFmaXhlZCcpO1xuICAgICAgICBub2RlQ2xvbmUuY2xhc3NMaXN0LnJlbW92ZSgnbGlicy11aS1kcmFnLWRyb3AtaXRlbS1vcmlnaW4tcGxhY2Vob2xkZXInKTtcbiAgICAgICAgbm9kZUNsb25lLmNsYXNzTGlzdC5yZW1vdmUoJ2xpYnMtdWktZHJhZy1kcm9wLWl0ZW0tcGxhY2Vob2xkZXInKTtcbiAgICAgICAgbm9kZUNsb25lLmFwcGVuZENoaWxkKHN0eWxlVGFnKTtcbiAgICAgICAgbm9kZUNsb25lLmNsYXNzTGlzdC5hZGQoJ2xpYnMtdWktZHJhZy1kcm9wLWl0ZW0tZHJhZ2dpbmcnKTtcbiAgICAgICAgbm9kZUNsb25lLnN0eWxlLndpZHRoID0gYCR7cmVjdEVsZW1lbnQud2lkdGh9cHhgO1xuICAgICAgICBub2RlQ2xvbmUuc3R5bGUuaGVpZ2h0ID0gYCR7cmVjdEVsZW1lbnQuaGVpZ2h0fXB4YDtcbiAgICAgICAgbm9kZUNsb25lLnN0eWxlLmxlZnQgPSBgJHstOTk5fXB4YDtcbiAgICAgICAgbm9kZUNsb25lLnN0eWxlLnRvcCA9IGAkey05OTl9cHhgO1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZChub2RlQ2xvbmUpO1xuICAgICAgICBpZiAodGhpcy5kcmFnUm9vdEVsZW1lbnQoKSkge1xuICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnb3BhY2l0eS0wJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsKCkpIHtcbiAgICAgICAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5PbkRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsLm5leHQoe1xuICAgICAgICAgICAgaXRlbURyYWdJbmZvOiB0aGlzLmRyYWdEcm9wU2VydmljZS5JdGVtRHJhZ0luZm8sXG4gICAgICAgICAgICBlbGVtZW50RHJhZzogbm9kZUNsb25lLFxuICAgICAgICAgICAgZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZVRvcCxcbiAgICAgICAgICAgIGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VMZWZ0LFxuICAgICAgICAgICAgZWxlbWVudENvbnRhaW5lcjogdGhpcy5lbGVtZW50Q29udGFpbmVyKCksXG4gICAgICAgICAgICBkcmFnQm91bmRhcnk6IHRoaXMuZHJhZ0JvdW5kYXJ5KCksXG4gICAgICAgICAgICBkcmFnQm91bmRhcnlBY2NlcHRNb3VzZUxlYXZlQ29udGFpbmVyOiB0aGlzLmRyYWdCb3VuZGFyeUFjY2VwdE1vdXNlTGVhdmVDb250YWluZXIoKSxcbiAgICAgICAgICAgIGlnbm9yZVN0b3BFdmVudDogdGhpcy5pZ25vcmVTdG9wRXZlbnQoKVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmdldENsaWVudFBvc2l0aW9uKG5vZGVDbG9uZSwgbW91c2VQb3NpdGlvbiwgZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZUxlZnQsIGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VUb3AsIHRoaXMuZHJhZ0JvdW5kYXJ5KCksIHRoaXMuZWxlbWVudENvbnRhaW5lcigpKTtcblxuICAgICAgY29uc3QgZWxlbWVudEtlZXBDb250YWluZXIgPSByZXN1bHQuZWxlbWVudEtlZXBDb250YWluZXI7XG4gICAgICBjb25zdCBsZWZ0ID0gcmVzdWx0LmNsaWVudFggLSBkaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlTGVmdDtcbiAgICAgIGNvbnN0IHRvcCA9IHJlc3VsdC5jbGllbnRZIC0gZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZVRvcDtcblxuICAgICAgaWYgKHRoaXMuZHJhZ0JvdW5kYXJ5KCkgJiYgdGhpcy5kcmFnQm91bmRhcnlBY2NlcHRNb3VzZUxlYXZlQ29udGFpbmVyKCkpIHtcbiAgICAgICAgaWYgKGNsaWVudFggPCByZXN1bHQudmlld3BvcnQubGVmdCkge1xuICAgICAgICAgIG1vdXNlUG9zaXRpb24uY2xpZW50WCA9IHJlc3VsdC52aWV3cG9ydC5sZWZ0O1xuICAgICAgICB9XG4gICAgICAgIGlmIChjbGllbnRYID4gcmVzdWx0LnZpZXdwb3J0LndpZHRoKSB7XG4gICAgICAgICAgbW91c2VQb3NpdGlvbi5jbGllbnRYID0gcmVzdWx0LnZpZXdwb3J0LndpZHRoO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjbGllbnRZIDwgcmVzdWx0LnZpZXdwb3J0LnRvcCkge1xuICAgICAgICAgIG1vdXNlUG9zaXRpb24uY2xpZW50WSA9IHJlc3VsdC52aWV3cG9ydC50b3A7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNsaWVudFkgPiByZXN1bHQudmlld3BvcnQuaGVpZ2h0KSB7XG4gICAgICAgICAgbW91c2VQb3NpdGlvbi5jbGllbnRZID0gcmVzdWx0LnZpZXdwb3J0LmhlaWdodDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbm9kZUNsb25lLnN0eWxlLmxlZnQgPSBgJHtsZWZ0fXB4YDtcbiAgICAgIG5vZGVDbG9uZS5zdHlsZS50b3AgPSBgJHt0b3B9cHhgO1xuXG4gICAgICBjb25zdCBldmVudERyYWdnaW5nID0geyBtb3VzZVBvc2l0aW9uLCBlbGVtZW50RHJhZzogbm9kZUNsb25lLCBlbGVtZW50S2VlcENvbnRhaW5lciwgaXRlbURyYWdJbmZvOiB0aGlzLmRyYWdEcm9wU2VydmljZS5JdGVtRHJhZ0luZm8gfTtcblxuICAgICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuT25EcmFnZ2luZy5uZXh0KGV2ZW50RHJhZ2dpbmcpO1xuICAgIH0pO1xuICB9XG59Il19
|
|
262
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1pdGVtLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9kcmFnLWRyb3Avc3JjL2RyYWctaXRlbS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBaUIsU0FBUyxFQUFFLFVBQVUsRUFBYSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZILE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxpQkFBaUIsRUFBRSxHQUFHLEVBQUUscUJBQXFCLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkgsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRCxPQUFPLEVBQUUsK0NBQStDLEVBQUUsTUFBTSxtREFBbUQsQ0FBQzs7QUFRcEgsTUFBTSxPQUFPLHVCQUF3QixTQUFRLCtDQUErQztJQUMxRixtQkFBbUI7SUFDWCxVQUFVLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLFVBQVUsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7SUFFNUMsZ0JBQWdCO0lBQ2hCLHFFQUFxRTtJQUM1RCxPQUFPLEdBQUcsS0FBSyxDQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzVCLElBQUksR0FBRyxLQUFLLENBQU0sU0FBUyxDQUFDLENBQUM7SUFDN0IsNEJBQTRCLEdBQUcsS0FBSyxFQUFXLENBQUM7SUFDekQsb0NBQW9DO0lBQzNCLGdDQUFnQyxHQUFHLEtBQUssQ0FBNkIsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUcsZUFBZSxHQUFHLEtBQUssRUFBVyxDQUFDO0lBQ25DLHNCQUFzQixHQUFHLEtBQUssRUFBVyxDQUFDO0lBQzFDLGVBQWUsR0FBRyxLQUFLLEVBQVcsQ0FBQztJQUNuQyxZQUFZLEdBQUcsS0FBSyxFQUFXLENBQUM7SUFDaEMscUNBQXFDLEdBQUcsS0FBSyxFQUFXLENBQUM7SUFDekQsZ0JBQWdCLEdBQUcsS0FBSyxFQUFlLENBQUM7SUFDeEMsTUFBTSxHQUFHLEtBQUssQ0FBNkIsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7SUFDeEYsT0FBTyxHQUFHLEtBQUssRUFBVyxDQUFDO0lBRXBDLGlCQUFpQjtJQUNSLFlBQVksR0FBRyxNQUFNLEVBQWMsQ0FBQztJQUNwQyxXQUFXLEdBQUcsTUFBTSxFQUFhLENBQUM7SUFDbEMsWUFBWSxHQUFHLE1BQU0sRUFBYyxDQUFDO0lBQ3BDLFVBQVUsR0FBRyxNQUFNLEVBQVksQ0FBQztJQUNoQyxVQUFVLEdBQUcsTUFBTSxFQUFTLENBQUM7SUFFdEMsaUJBQWlCO0lBQ1QsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUV4QztRQUNFLEtBQUssRUFBRSxDQUFDO1FBQ1IsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLGFBQWEsRUFBRSxDQUFDO2dCQUNwQyxPQUFPO1lBQ1QsQ0FBQztZQUNELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBNEIsQ0FBQztZQUU3RCxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxVQUFVLENBQUMsQ0FBQztZQUM1RSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JHLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLFVBQVUsQ0FBQyxDQUFDO1lBQzNFLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFUSxlQUFlO1FBQ3RCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBNEIsQ0FBQztRQUM3RCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ25CLE9BQU8sQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQ2pELElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7Z0JBQ2hCLE9BQU8sQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNwRSxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsZ0NBQWdDLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRTtZQUNqSixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLGFBQWEsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNoTSxPQUFPO1lBQ1QsQ0FBQztZQUNELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFFbEcsSUFBSSxhQUFhLEVBQUUsQ0FBQztnQkFDbEIsSUFBSSxhQUFhLENBQUMsb0JBQW9CLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGlDQUFpQyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNuUSxPQUFPO2dCQUNULENBQUM7WUFDSCxDQUFDO1lBQ0QsSUFBSSx5QkFBeUIsQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxJQUFJLE9BQU8sS0FBSyxhQUFhLENBQUMsV0FBVyxJQUFJLGFBQWEsSUFBSSxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxhQUFhLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztnQkFDaE4sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztvQkFDdEIsT0FBTztnQkFDVCxDQUFDO2dCQUNELE1BQU0sYUFBYSxHQUFHLEVBQUUsR0FBRyxhQUFhLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxDQUFDO2dCQUVyRSxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQ3BELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUNyQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFFMUIsT0FBTztZQUNULENBQUM7WUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO2dCQUN0QixNQUFNLGNBQWMsR0FBRyxFQUFFLEdBQUcsYUFBYSxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxDQUFDO2dCQUN2RSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUN0RCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUN6QyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQzNGLElBQUksU0FBUyxDQUFDLFdBQVcsS0FBSyxPQUFPLEVBQUUsQ0FBQztnQkFDdEMsT0FBTztZQUNULENBQUM7WUFDRCxNQUFNLFNBQVMsR0FBRyxFQUFFLFdBQVcsRUFBRSxTQUFTLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUVySCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFakQsUUFBUSxDQUFDLFdBQVcsR0FBRywrQ0FBK0MsQ0FBQztRQUN2RSxJQUFJLFNBQVMsR0FBRyxPQUFPLENBQUM7UUFDeEIsSUFBSSxnQ0FBZ0MsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMxQyxJQUFJLCtCQUErQixHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN4QixNQUFNLGNBQWMsR0FBRyxDQUFDLFVBQXNCLEVBQUUsRUFBRTtZQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUM7Z0JBQzVCLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDNUIsVUFBVSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQy9CLENBQUM7UUFDSCxDQUFDLENBQUM7UUFDRixNQUFNLDJDQUEyQyxHQUFHLEdBQUcsRUFBRTtZQUN2RCxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO2dCQUMzQixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUVsRyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxhQUFhLEVBQUUsYUFBYSxJQUFJLGFBQWEsRUFBRSxPQUFPLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQztnQkFDekgsTUFBTSxhQUFhLEdBQUcsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQUM7Z0JBQzVELE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO2dCQUN4RCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBRS9ILE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksR0FBRyxhQUFhLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQztnQkFDbEYsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxhQUFhLENBQUMsR0FBRyxHQUFHLGFBQWEsQ0FBQyxHQUFHLEdBQUcsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDO2dCQUMvRSxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN4QyxDQUFDO1lBQ0QsZ0NBQWdDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDdEMsK0JBQStCLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDckMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3JCLENBQUMsQ0FBQztRQUVGLFNBQVMsQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUNyQyxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1AsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztnQkFDdEIsMkNBQTJDLEVBQUUsQ0FBQztZQUNoRCxDQUFDO1lBQ0QsV0FBVyxHQUFHLElBQUksQ0FBQztRQUVyQixDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUMxQixDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRWQsSUFBSSxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBRTVCLHFCQUFxQixDQUFDO1lBQ3BCLGdCQUFnQixFQUFFLE9BQU87WUFDekIsaUJBQWlCLEVBQUUsQ0FBQyxLQUFpQixFQUFFLEVBQUU7Z0JBQ3ZDLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQztnQkFDekMsV0FBVyxHQUFHLEtBQUssQ0FBQztnQkFDcEIsSUFBSSxDQUFDLG1DQUFtQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNqRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLEVBQUUsQ0FBQztvQkFDcEssT0FBTztnQkFDVCxDQUFDO2dCQUNELGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QixDQUFDO1lBQ0QsaUJBQWlCLEVBQUUsQ0FBQyxLQUFpQixFQUFFLEVBQUU7Z0JBQ3ZDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QixDQUFDO1lBQ0QsZUFBZSxFQUFFLENBQUMsS0FBaUIsRUFBRSxFQUFFO2dCQUNyQyxJQUFJLENBQUMsbUNBQW1DLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3RDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDdEIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO29CQUN4RyxXQUFXLEdBQUcsS0FBSyxDQUFDO29CQUVwQixPQUFPO2dCQUNULENBQUM7Z0JBQ0QsV0FBVyxHQUFHLEtBQUssQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNCLE9BQU8sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2dCQUNqRSxJQUFJLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxFQUFFLENBQUM7b0JBQ3hDLE9BQU87Z0JBQ1QsQ0FBQztnQkFDRCxNQUFNLGFBQWEsR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBRXpFLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLElBQUksQ0FBQyxxQ0FBcUMsRUFBRSxFQUFFLENBQUM7b0JBQ3hFLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLGdDQUFnQyxFQUFFLCtCQUErQixFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO29CQUUvSyxhQUFhLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7b0JBQ3ZDLGFBQWEsQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztnQkFDekMsQ0FBQztnQkFDRCxNQUFNLFlBQVksR0FBRyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUU5RyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7Z0JBQzlDLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDbEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBRW5DLFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGlDQUFpQyxDQUFDLENBQUM7Z0JBQzlELFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFFbEIsMkNBQTJDLEVBQUUsQ0FBQztZQUNoRCxDQUFDO1lBQ0QsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1NBQzFCLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBMEIsRUFBRSxFQUFFO1lBQ3pDLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQ3BELE1BQU0sUUFBUSxHQUFHLFdBQVcsRUFBeUIsQ0FBQztZQUV0RCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxlQUFlLElBQUksY0FBYyxDQUFDLElBQUksS0FBSyxXQUFXLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsR0FBRyxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUV0TixPQUFPO1lBQ1QsQ0FBQztZQUNELE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsY0FBYyxDQUFDO1lBRTVDLElBQUksZ0NBQWdDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDNUMsZ0NBQWdDLEdBQUcsT0FBTyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUM7WUFDaEUsQ0FBQztZQUVELElBQUksK0JBQStCLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDM0MsK0JBQStCLEdBQUcsT0FBTyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUM7WUFDOUQsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxFQUFFO1lBQzdCLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUN6RyxPQUFPO1lBQ1QsQ0FBQztZQUNELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLElBQUksY0FBYyxDQUFDLElBQUksS0FBSyxXQUFXLElBQUksV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLDRCQUE0QixFQUFFLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFDbE4sT0FBTztZQUNULENBQUM7WUFDRCxlQUFlLEdBQUcsSUFBSSxDQUFDO1lBQ3ZCLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsY0FBYyxDQUFDO1lBQzVDLE1BQU0sYUFBYSxHQUFHLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQzNDLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBRXBELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzFCLE1BQU0sY0FBYyxHQUFHLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBRWhILE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDdEUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUN0RCxjQUFjLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDO2dCQUNoRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFFdkMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFnQixDQUFDO2dCQUNuRCxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO2dCQUM1QyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDbEMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsMkNBQTJDLENBQUMsQ0FBQztnQkFDeEUsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsb0NBQW9DLENBQUMsQ0FBQztnQkFDakUsU0FBUyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDaEMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsaUNBQWlDLENBQUMsQ0FBQztnQkFDM0QsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsR0FBRyxXQUFXLENBQUMsS0FBSyxJQUFJLENBQUM7Z0JBQ2pELFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLE1BQU0sSUFBSSxDQUFDO2dCQUNuRCxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7Z0JBQ25DLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztnQkFDbEMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ2hDLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUM7b0JBQzNCLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUNyQyxDQUFDO2dCQUVELElBQUksSUFBSSxDQUFDLDRCQUE0QixFQUFFLEVBQUUsQ0FBQztvQkFDeEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxrQ0FBa0MsQ0FBQyxJQUFJLENBQUM7d0JBQzNELFlBQVksRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVk7d0JBQy9DLFdBQVcsRUFBRSxTQUFTO3dCQUN0QiwrQkFBK0I7d0JBQy9CLGdDQUFnQzt3QkFDaEMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFO3dCQUN6QyxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRTt3QkFDakMscUNBQXFDLEVBQUUsSUFBSSxDQUFDLHFDQUFxQyxFQUFFO3dCQUNuRixlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRTtxQkFDeEMsQ0FBQyxDQUFDO29CQUVILE9BQU87Z0JBQ1QsQ0FBQztZQUNILENBQUM7WUFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLGFBQWEsRUFBRSxnQ0FBZ0MsRUFBRSwrQkFBK0IsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztZQUVqTCxNQUFNLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQztZQUN6RCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsT0FBTyxHQUFHLGdDQUFnQyxDQUFDO1lBQy9ELE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxPQUFPLEdBQUcsK0JBQStCLENBQUM7WUFFN0QsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksSUFBSSxDQUFDLHFDQUFxQyxFQUFFLEVBQUUsQ0FBQztnQkFDeEUsSUFBSSxPQUFPLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDbkMsYUFBYSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztnQkFDL0MsQ0FBQztnQkFDRCxJQUFJLE9BQU8sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNwQyxhQUFhLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO2dCQUNoRCxDQUFDO2dCQUNELElBQUksT0FBTyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUM7b0JBQ2xDLGFBQWEsQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7Z0JBQzlDLENBQUM7Z0JBQ0QsSUFBSSxPQUFPLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDckMsYUFBYSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztnQkFDakQsQ0FBQztZQUNILENBQUM7WUFDRCxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDO1lBQ25DLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUM7WUFFakMsTUFBTSxhQUFhLEdBQUcsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUV2SSxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO3dHQTVSVSx1QkFBdUI7NEZBQXZCLHVCQUF1Qjs7NEZBQXZCLHVCQUF1QjtrQkFMbkMsU0FBUzttQkFBQztvQkFDVCw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgT25EZXN0cm95LCBlZmZlY3QsIGluamVjdCwgaW5wdXQsIG91dHB1dCwgc2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IElCb3VuZGluZ0NsaWVudFJlY3QgfSBmcm9tIFwiQGxpYnMtdWkvaW50ZXJmYWNlcy10eXBlc1wiO1xuaW1wb3J0IHsgY2hlY2tNb3VzZU92ZXJJbkNvbnRhaW5lciwgY2hlY2tWaWV3SW5TY3JlZW4sIGdldCwgZ2V0RHJhZ0V2ZW50QnlFbGVtZW50LCBnZXRWaWV3cG9ydCB9IGZyb20gXCJAbGlicy11aS91dGlsc1wiO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCB0YWtlVW50aWwsIHRhcCwgdGhyb3R0bGVUaW1lIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IExpYnNVaURyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRGlyZWN0aXZlIH0gZnJvbSBcIi4vZHJhZy1pdGVtLWluLWNvbnRhaW5lci12aXJ0dWFsLXNjcm9sbC5kaXJlY3RpdmVcIjtcbmltcG9ydCB7IElEcmFnRW5kLCBJRHJhZ0xlYXZlLCBJRHJhZ092ZXIsIElEcmFnU3RhcnQsIElEcm9wIH0gZnJvbSBcIi4vaW50ZXJmYWNlcy9ldmVudC5pbnRlcmZhY2VcIjtcblxuQERpcmVjdGl2ZSh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yXG4gIHNlbGVjdG9yOiBcIltMaWJzVWlEcmFnSXRlbURpcmVjdGl2ZV1cIixcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBMaWJzVWlEcmFnSXRlbURpcmVjdGl2ZSBleHRlbmRzIExpYnNVaURyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgLy8gI3JlZ2lvbiBQUk9QRVJUWVxuICBwcml2YXRlIGlzRHJhZ092ZXIgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIGlzRHJhZ2dpbmcgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIC8vICNyZWdpb24gSU5QVVRcbiAgLy9zZXR1cCAzIGZpZWxkIHBow61hIGTGsOG7m2kgbuG6v3UgxJFhbmcgc+G7rSBk4bulbmcgaXRlbSB0cm9uZyB2aXJ0dWFsLXNjcm9sbCBcbiAgcmVhZG9ubHkgZmllbGRJZCA9IGlucHV0PHN0cmluZz4oJycpO1xuICByZWFkb25seSBpdGVtID0gaW5wdXQ8YW55Pih1bmRlZmluZWQpO1xuICByZWFkb25seSBpdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIHJlYWRvbmx5IHRocm90dGxlVGltZUhhbmRsZXJEcmFnZ2luZ0V2ZW50ID0gaW5wdXQ8bnVtYmVyLCBudW1iZXIgfCB1bmRlZmluZWQ+KDAsIHsgdHJhbnNmb3JtOiB2YWx1ZSA9PiB2YWx1ZSB8fCAwIH0pO1xuICByZWFkb25seSBpZ25vcmVTdG9wRXZlbnQgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBvbmx5TW91c2VEb3duU3RvcEV2ZW50ID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgZHJhZ1Jvb3RFbGVtZW50ID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgZHJhZ0JvdW5kYXJ5ID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgZHJhZ0JvdW5kYXJ5QWNjZXB0TW91c2VMZWF2ZUNvbnRhaW5lciA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IGVsZW1lbnRDb250YWluZXIgPSBpbnB1dDxIVE1MRWxlbWVudD4oKTtcbiAgcmVhZG9ubHkgekluZGV4ID0gaW5wdXQ8bnVtYmVyLCBudW1iZXIgfCB1bmRlZmluZWQ+KDEzMDAsIHsgdHJhbnNmb3JtOiB2YWx1ZSA9PiB2YWx1ZSA/PyAxMzAwIH0pO1xuICByZWFkb25seSBkaXNhYmxlID0gaW5wdXQ8Ym9vbGVhbj4oKTtcblxuICAvLyAjcmVnaW9uIE9VVFBVVFxuICByZWFkb25seSBvdXREcmFnU3RhcnQgPSBvdXRwdXQ8SURyYWdTdGFydD4oKTtcbiAgcmVhZG9ubHkgb3V0RHJhZ092ZXIgPSBvdXRwdXQ8SURyYWdPdmVyPigpO1xuICByZWFkb25seSBvdXREcmFnTGVhdmUgPSBvdXRwdXQ8SURyYWdMZWF2ZT4oKTtcbiAgcmVhZG9ubHkgb3V0RHJhZ0VuZCA9IG91dHB1dDxJRHJhZ0VuZD4oKTtcbiAgcmVhZG9ubHkgb3V0RHJvcHBlZCA9IG91dHB1dDxJRHJvcD4oKTtcblxuICAvLyAjcmVnaW9uIElOSkVDVFxuICBwcml2YXRlIGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmVsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoYCR7dGhpcy5kcmFnRHJvcFNlcnZpY2UuQ2xhc3NJdGVtRGVmaW5lfS1kaXNhYmxlYCk7XG4gICAgICBpZiAodGhpcy5kaXNhYmxlKCkgJiYgIWVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKGAke3RoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkNsYXNzSXRlbURlZmluZX0tZGlzYWJsZWApKSB7XG4gICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZChgJHt0aGlzLmRyYWdEcm9wU2VydmljZS5DbGFzc0l0ZW1EZWZpbmV9LWRpc2FibGVgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgaWYgKHRoaXMuZmllbGRJZCgpKSB7XG4gICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnZmllbGRfaWQnLCB0aGlzLmZpZWxkSWQoKSk7XG4gICAgICBpZiAodGhpcy5pdGVtKCkpIHtcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2l0ZW1faWQnLCBnZXQodGhpcy5pdGVtKCksIHRoaXMuZmllbGRJZCgpKSk7XG4gICAgICB9XG4gICAgfVxuICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCh0aGlzLmRyYWdEcm9wU2VydmljZS5DbGFzc0l0ZW1EZWZpbmUpO1xuICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLk9uRHJhZ2dpbmcucGlwZSh0aHJvdHRsZVRpbWUodGhpcy50aHJvdHRsZVRpbWVIYW5kbGVyRHJhZ2dpbmdFdmVudCgpKSwgdGFrZVVudGlsKHRoaXMub25EZXN0cm95KSkuc3Vic2NyaWJlKChldmVudERyYWdnaW5nKSA9PiB7XG4gICAgICBpZiAodGhpcy5kaXNhYmxlKCkgfHwgZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2Rpc2FibGVEcmFnQ29udGFpbmVyJykgfHwgKHRoaXMuZmllbGRJZCgpICYmIHRoaXMuaXRlbSgpICYmIGV2ZW50RHJhZ2dpbmcuZWxlbWVudERyYWcuZ2V0QXR0cmlidXRlKCdpdGVtX2lkJykgPT09IGdldCh0aGlzLml0ZW0oKSwgdGhpcy5maWVsZElkKCkpKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBjb250YWluZXJCeUlkID0gdGhpcy5kcmFnRHJvcFNlcnZpY2UuQ29udGFpbmVyKCkuZ2V0KGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdncm91cElEJykgfHwgJycpO1xuXG4gICAgICBpZiAoY29udGFpbmVyQnlJZCkge1xuICAgICAgICBpZiAoZXZlbnREcmFnZ2luZy5lbGVtZW50S2VlcENvbnRhaW5lciB8fCAhdGhpcy5kcmFnRHJvcFNlcnZpY2UuY2hlY2tFbGVtZW50T3ZlckFjY2VwdEVsZW1lbnREcmFnKGNvbnRhaW5lckJ5SWQuZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2dyb3VwTmFtZScpLCBldmVudERyYWdnaW5nLmVsZW1lbnREcmFnLmdldEF0dHJpYnV0ZSgnZ3JvdXBOYW1lJyksIGV2ZW50RHJhZ2dpbmcuZWxlbWVudERyYWcuZ2V0QXR0cmlidXRlKCdkcm9wVG9Hcm91cE5hbWUnKSkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChjaGVja01vdXNlT3ZlckluQ29udGFpbmVyKGV2ZW50RHJhZ2dpbmcubW91c2VQb3NpdGlvbiwgZWxlbWVudCkgJiYgZWxlbWVudCAhPT0gZXZlbnREcmFnZ2luZy5lbGVtZW50RHJhZyAmJiBjb250YWluZXJCeUlkICYmIGNoZWNrVmlld0luU2NyZWVuKGNvbnRhaW5lckJ5SWQuZWxlbWVudCwgZWxlbWVudCwgY29udGFpbmVyQnlJZC5lbGVtZW50U2Nyb2xsKSkge1xuICAgICAgICBpZiAodGhpcy5pc0RyYWdPdmVyKCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZXZlbnREcmFnT3ZlciA9IHsgLi4uZXZlbnREcmFnZ2luZywgZWxlbWVudERyYWdPdmVyOiBlbGVtZW50IH07XG5cbiAgICAgICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuT25EcmFnT3Zlci5uZXh0KGV2ZW50RHJhZ092ZXIpO1xuICAgICAgICB0aGlzLm91dERyYWdPdmVyLmVtaXQoZXZlbnREcmFnT3Zlcik7XG4gICAgICAgIHRoaXMuaXNEcmFnT3Zlci5zZXQodHJ1ZSk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5pc0RyYWdPdmVyKCkpIHtcbiAgICAgICAgY29uc3QgZXZlbnREcmFnTGVhdmUgPSB7IC4uLmV2ZW50RHJhZ2dpbmcsIGVsZW1lbnREcmFnTGVhdmU6IGVsZW1lbnQgfTtcbiAgICAgICAgdGhpcy5pc0RyYWdPdmVyLnNldChmYWxzZSk7XG4gICAgICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLk9uRHJhZ0xlYXZlLm5leHQoZXZlbnREcmFnTGVhdmUpO1xuICAgICAgICB0aGlzLm91dERyYWdMZWF2ZS5lbWl0KGV2ZW50RHJhZ0xlYXZlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLk9uRHJvcENvbnRhaW5lci5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSkpLnN1YnNjcmliZSgoZXZlbnREcm9wKSA9PiB7XG4gICAgICBpZiAoZXZlbnREcm9wLmVsZW1lbnREcm9wICE9PSBlbGVtZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRyb3BFdmVudCA9IHsgZWxlbWVudERyYWc6IGV2ZW50RHJvcC5lbGVtZW50RHJhZywgZWxlbWVudERyb3A6IGVsZW1lbnQsIGl0ZW1EcmFnSW5mbzogZXZlbnREcm9wLml0ZW1EcmFnSW5mbyB9O1xuXG4gICAgICB0aGlzLm91dERyb3BwZWQuZW1pdChkcm9wRXZlbnQpO1xuICAgIH0pO1xuICAgIGNvbnN0IHN0eWxlVGFnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xuXG4gICAgc3R5bGVUYWcudGV4dENvbnRlbnQgPSBgLmxpYnMtdWktZHJhZy1kcm9wLWl0ZW0tZHJhZ2dpbmd7Y3Vyc29yOm1vdmV9YDtcbiAgICBsZXQgbm9kZUNsb25lID0gZWxlbWVudDtcbiAgICBsZXQgZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZUxlZnQgPSAtMTtcbiAgICBsZXQgZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZVRvcCA9IC0xO1xuICAgIGxldCBjb250ZXh0TWVudSA9IGZhbHNlO1xuICAgIGNvbnN0IHN0b3BFdmVudE1vdXNlID0gKG1vdXNlRXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGlmICghdGhpcy5pZ25vcmVTdG9wRXZlbnQoKSkge1xuICAgICAgICBtb3VzZUV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIG1vdXNlRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICB9XG4gICAgfTtcbiAgICBjb25zdCB1cGRhdGVQb3NpdGlvbkVsZW1lbnRSb290QW5kUmVtb3ZlTm9kZUNsb25lID0gKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZHJhZ1Jvb3RFbGVtZW50KCkpIHtcbiAgICAgICAgY29uc3QgY29udGFpbmVyQnlJZCA9IHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkNvbnRhaW5lcigpLmdldChlbGVtZW50LmdldEF0dHJpYnV0ZSgnZ3JvdXBJRCcpIHx8ICcnKTtcblxuICAgICAgICBjb25zdCBjb250YWluZXJJdGVtID0gdGhpcy5lbGVtZW50Q29udGFpbmVyKCkgfHwgY29udGFpbmVyQnlJZD8uZWxlbWVudFNjcm9sbCB8fCBjb250YWluZXJCeUlkPy5lbGVtZW50IHx8IGRvY3VtZW50LmJvZHk7XG4gICAgICAgIGNvbnN0IHJlY3RDb250YWluZXIgPSBjb250YWluZXJJdGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCByZWN0Tm9kZUNsb25lID0gbm9kZUNsb25lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCBudW1iZXJTdWIgPSBOdW1iZXIoKGdldENvbXB1dGVkU3R5bGUoY29udGFpbmVySXRlbSkuYm9yZGVyLm1hdGNoKC9cXGQrcHgvZ2kpIHx8IFsnMCddKVswXS5yZXBsYWNlKC9cXEQrL2lnLCAnJykpLnZhbHVlT2YoKTtcblxuICAgICAgICBlbGVtZW50LnN0eWxlLmxlZnQgPSAocmVjdE5vZGVDbG9uZS5sZWZ0IC0gcmVjdENvbnRhaW5lci5sZWZ0IC0gbnVtYmVyU3ViKSArICdweCc7XG4gICAgICAgIGVsZW1lbnQuc3R5bGUudG9wID0gKHJlY3ROb2RlQ2xvbmUudG9wIC0gcmVjdENvbnRhaW5lci50b3AgLSBudW1iZXJTdWIpICsgJ3B4JztcbiAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdvcGFjaXR5LTAnKTtcbiAgICAgIH1cbiAgICAgIGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VMZWZ0ID0gLTE7XG4gICAgICBkaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlVG9wID0gLTE7XG4gICAgICBub2RlQ2xvbmUucmVtb3ZlKCk7XG4gICAgfTtcblxuICAgIGZyb21FdmVudChkb2N1bWVudCwgJ2NvbnRleHRtZW51JykucGlwZShcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmlzRHJhZ2dpbmcoKSkge1xuICAgICAgICAgIHVwZGF0ZVBvc2l0aW9uRWxlbWVudFJvb3RBbmRSZW1vdmVOb2RlQ2xvbmUoKTtcbiAgICAgICAgfVxuICAgICAgICBjb250ZXh0TWVudSA9IHRydWU7XG5cbiAgICAgIH0pLFxuICAgICAgdGFrZVVudGlsKHRoaXMub25EZXN0cm95KVxuICAgICkuc3Vic2NyaWJlKCk7XG5cbiAgICBsZXQgaWdub3JlTW91c2Vkb3duID0gZmFsc2U7XG5cbiAgICBnZXREcmFnRXZlbnRCeUVsZW1lbnQoe1xuICAgICAgZWxlbWVudE1vdXNlRG93bjogZWxlbWVudCxcbiAgICAgIGZ1bmN0aW9uTW91c2VEb3duOiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuSXRlbUNsaWNrID0gZWxlbWVudDtcbiAgICAgICAgY29udGV4dE1lbnUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy51cGRhdGVNb3VzZUV2ZW50c1doZW5Nb3ZlT3ZlcklmcmFtZSgnbm9uZScpO1xuICAgICAgICBpZiAoKHRoaXMuZGlzYWJsZSgpIHx8IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkaXNhYmxlRHJhZ0NvbnRhaW5lcicpIHx8ICF0aGlzLmlzRHJhZ2dpbmcoKSB8fCB0aGlzLml0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGwoKSkgJiYgIXRoaXMub25seU1vdXNlRG93blN0b3BFdmVudCgpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHN0b3BFdmVudE1vdXNlKGV2ZW50KTtcbiAgICAgIH0sXG4gICAgICBmdW5jdGlvbk1vdXNlTW92ZTogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIHN0b3BFdmVudE1vdXNlKGV2ZW50KTtcbiAgICAgIH0sXG4gICAgICBmdW5jdGlvbk1vdXNlVXA6IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZU1vdXNlRXZlbnRzV2hlbk1vdmVPdmVySWZyYW1lKCdhdXRvJyk7XG4gICAgICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLnJlc2V0SXRlbUNsaWNrKCk7XG4gICAgICAgIHN0b3BFdmVudE1vdXNlKGV2ZW50KTtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZSgpIHx8IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkaXNhYmxlRHJhZ0NvbnRhaW5lcicpIHx8IGNvbnRleHRNZW51IHx8ICF0aGlzLmlzRHJhZ2dpbmcoKSkge1xuICAgICAgICAgIGNvbnRleHRNZW51ID0gZmFsc2U7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29udGV4dE1lbnUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc0RyYWdnaW5nLnNldChmYWxzZSk7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLlRhcmdldEl0ZW1EcmFnRmxhZyk7XG4gICAgICAgIGlmICh0aGlzLml0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGwoKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtb3VzZVBvc2l0aW9uID0geyBjbGllbnRYOiBldmVudC5jbGllbnRYLCBjbGllbnRZOiBldmVudC5jbGllbnRZIH07XG5cbiAgICAgICAgaWYgKHRoaXMuZHJhZ0JvdW5kYXJ5KCkgJiYgdGhpcy5kcmFnQm91bmRhcnlBY2NlcHRNb3VzZUxlYXZlQ29udGFpbmVyKCkpIHtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmdldENsaWVudFBvc2l0aW9uKGVsZW1lbnQsIG1vdXNlUG9zaXRpb24sIGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VMZWZ0LCBkaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlVG9wLCB0aGlzLmRyYWdCb3VuZGFyeSgpLCB0aGlzLmVsZW1lbnRDb250YWluZXIoKSk7XG5cbiAgICAgICAgICBtb3VzZVBvc2l0aW9uLmNsaWVudFggPSByZXN1bHQuY2xpZW50WDtcbiAgICAgICAgICBtb3VzZVBvc2l0aW9uLmNsaWVudFkgPSByZXN1bHQuY2xpZW50WTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkcmFnRW5kRXZlbnQgPSB7IG1vdXNlUG9zaXRpb24sIGVsZW1lbnREcmFnOiBlbGVtZW50LCBpdGVtRHJhZ0luZm86IHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkl0ZW1EcmFnSW5mbyB9O1xuXG4gICAgICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkl0ZW1EcmFnSW5mbyA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuT25EcmFnRW5kLm5leHQoZHJhZ0VuZEV2ZW50KTtcbiAgICAgICAgdGhpcy5vdXREcmFnRW5kLmVtaXQoZHJhZ0VuZEV2ZW50KTtcblxuICAgICAgICBub2RlQ2xvbmUuY2xhc3NMaXN0LnJlbW92ZSgnbGlicy11aS1kcmFnLWRyb3AtaXRlbS1kcmFnZ2luZycpO1xuICAgICAgICBzdHlsZVRhZy5yZW1vdmUoKTtcblxuICAgICAgICB1cGRhdGVQb3NpdGlvbkVsZW1lbnRSb290QW5kUmVtb3ZlTm9kZUNsb25lKCk7XG4gICAgICB9LFxuICAgICAgb25EZXN0cm95OiB0aGlzLm9uRGVzdHJveVxuICAgIH0pLnBpcGUodGFwKChkcmFnTW91c2VFdmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgY29uc3QgcmVjdEVsZW1lbnQgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3Qgdmlld3BvcnQgPSBnZXRWaWV3cG9ydCgpIGFzIElCb3VuZGluZ0NsaWVudFJlY3Q7XG5cbiAgICAgIGlmICh0aGlzLmRpc2FibGUoKSB8fCBlbGVtZW50LmdldEF0dHJpYnV0ZSgnZGlzYWJsZURyYWdDb250YWluZXInKSB8fCAhZHJhZ01vdXNlRXZlbnQuY2xpZW50WCB8fCAoIWlnbm9yZU1vdXNlZG93biAmJiBkcmFnTW91c2VFdmVudC50eXBlID09PSAnbW91c2Vkb3duJyAmJiByZWN0RWxlbWVudC5oZWlnaHQgKyByZWN0RWxlbWVudC50b3AgPj0gdmlld3BvcnQuaGVpZ2h0KSkge1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgY2xpZW50WCwgY2xpZW50WSB9ID0gZHJhZ01vdXNlRXZlbnQ7XG5cbiAgICAgIGlmIChkaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlTGVmdCA9PT0gLTEpIHtcbiAgICAgICAgZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZUxlZnQgPSBjbGllbnRYIC0gcmVjdEVsZW1lbnQubGVmdDtcbiAgICAgIH1cblxuICAgICAgaWYgKGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VUb3AgPT09IC0xKSB7XG4gICAgICAgIGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VUb3AgPSBjbGllbnRZIC0gcmVjdEVsZW1lbnQudG9wO1xuICAgICAgfVxuICAgIH0pKS5zdWJzY3JpYmUoZHJhZ01vdXNlRXZlbnQgPT4ge1xuICAgICAgaWYgKHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkl0ZW1DbGljay5maWx0ZXIoaXRlbSA9PiBpdGVtICE9PSBlbGVtZW50KS5zb21lKGl0ZW0gPT4gZWxlbWVudC5jb250YWlucyhpdGVtKSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZGlzYWJsZSgpIHx8IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkaXNhYmxlRHJhZ0NvbnRhaW5lcicpIHx8ICFkcmFnTW91c2VFdmVudC5jbGllbnRYIHx8IGRyYWdNb3VzZUV2ZW50LnR5cGUgPT09ICdtb3VzZWRvd24nIHx8IGNvbnRleHRNZW51IHx8ICh0aGlzLml0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGwoKSAmJiB0aGlzLmlzRHJhZ2dpbmcoKSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWdub3JlTW91c2Vkb3duID0gdHJ1ZTtcbiAgICAgIGNvbnN0IHsgY2xpZW50WCwgY2xpZW50WSB9ID0gZHJhZ01vdXNlRXZlbnQ7XG4gICAgICBjb25zdCBtb3VzZVBvc2l0aW9uID0geyBjbGllbnRYLCBjbGllbnRZIH07XG4gICAgICBjb25zdCByZWN0RWxlbWVudCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgIGlmICghdGhpcy5pc0RyYWdnaW5nKCkpIHtcbiAgICAgICAgdGhpcy5pc0RyYWdnaW5nLnNldCh0cnVlKTtcbiAgICAgICAgY29uc3QgZXZlbnREcmFnU3RhcnQgPSB7IG1vdXNlUG9zaXRpb24sIGVsZW1lbnREcmFnOiBlbGVtZW50LCBpdGVtRHJhZ0luZm86IHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkl0ZW1EcmFnSW5mbyB9O1xuXG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLlRhcmdldEl0ZW1EcmFnRmxhZywgJ3RydWUnKTtcbiAgICAgICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuT25EcmFnU3RhcnQubmV4dChldmVudERyYWdTdGFydCk7XG4gICAgICAgIGV2ZW50RHJhZ1N0YXJ0Lml0ZW1EcmFnSW5mbyA9IHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkl0ZW1EcmFnSW5mbztcbiAgICAgICAgdGhpcy5vdXREcmFnU3RhcnQuZW1pdChldmVudERyYWdTdGFydCk7XG5cbiAgICAgICAgbm9kZUNsb25lID0gZWxlbWVudC5jbG9uZU5vZGUodHJ1ZSkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIG5vZGVDbG9uZS5zdHlsZS56SW5kZXggPSBgJHt0aGlzLnpJbmRleCgpfWA7XG4gICAgICAgIG5vZGVDbG9uZS5jbGFzc0xpc3QuYWRkKCchZml4ZWQnKTtcbiAgICAgICAgbm9kZUNsb25lLmNsYXNzTGlzdC5yZW1vdmUoJ2xpYnMtdWktZHJhZy1kcm9wLWl0ZW0tb3JpZ2luLXBsYWNlaG9sZGVyJyk7XG4gICAgICAgIG5vZGVDbG9uZS5jbGFzc0xpc3QucmVtb3ZlKCdsaWJzLXVpLWRyYWctZHJvcC1pdGVtLXBsYWNlaG9sZGVyJyk7XG4gICAgICAgIG5vZGVDbG9uZS5hcHBlbmRDaGlsZChzdHlsZVRhZyk7XG4gICAgICAgIG5vZGVDbG9uZS5jbGFzc0xpc3QuYWRkKCdsaWJzLXVpLWRyYWctZHJvcC1pdGVtLWRyYWdnaW5nJyk7XG4gICAgICAgIG5vZGVDbG9uZS5zdHlsZS53aWR0aCA9IGAke3JlY3RFbGVtZW50LndpZHRofXB4YDtcbiAgICAgICAgbm9kZUNsb25lLnN0eWxlLmhlaWdodCA9IGAke3JlY3RFbGVtZW50LmhlaWdodH1weGA7XG4gICAgICAgIG5vZGVDbG9uZS5zdHlsZS5sZWZ0ID0gYCR7LTk5OX1weGA7XG4gICAgICAgIG5vZGVDbG9uZS5zdHlsZS50b3AgPSBgJHstOTk5fXB4YDtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmQobm9kZUNsb25lKTtcbiAgICAgICAgaWYgKHRoaXMuZHJhZ1Jvb3RFbGVtZW50KCkpIHtcbiAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoJ29wYWNpdHktMCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbCgpKSB7XG4gICAgICAgICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuT25EcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbC5uZXh0KHtcbiAgICAgICAgICAgIGl0ZW1EcmFnSW5mbzogdGhpcy5kcmFnRHJvcFNlcnZpY2UuSXRlbURyYWdJbmZvLFxuICAgICAgICAgICAgZWxlbWVudERyYWc6IG5vZGVDbG9uZSxcbiAgICAgICAgICAgIGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VUb3AsXG4gICAgICAgICAgICBkaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlTGVmdCxcbiAgICAgICAgICAgIGVsZW1lbnRDb250YWluZXI6IHRoaXMuZWxlbWVudENvbnRhaW5lcigpLFxuICAgICAgICAgICAgZHJhZ0JvdW5kYXJ5OiB0aGlzLmRyYWdCb3VuZGFyeSgpLFxuICAgICAgICAgICAgZHJhZ0JvdW5kYXJ5QWNjZXB0TW91c2VMZWF2ZUNvbnRhaW5lcjogdGhpcy5kcmFnQm91bmRhcnlBY2NlcHRNb3VzZUxlYXZlQ29udGFpbmVyKCksXG4gICAgICAgICAgICBpZ25vcmVTdG9wRXZlbnQ6IHRoaXMuaWdub3JlU3RvcEV2ZW50KClcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5nZXRDbGllbnRQb3NpdGlvbihub2RlQ2xvbmUsIG1vdXNlUG9zaXRpb24sIGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VMZWZ0LCBkaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlVG9wLCB0aGlzLmRyYWdCb3VuZGFyeSgpLCB0aGlzLmVsZW1lbnRDb250YWluZXIoKSk7XG5cbiAgICAgIGNvbnN0IGVsZW1lbnRLZWVwQ29udGFpbmVyID0gcmVzdWx0LmVsZW1lbnRLZWVwQ29udGFpbmVyO1xuICAgICAgY29uc3QgbGVmdCA9IHJlc3VsdC5jbGllbnRYIC0gZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZUxlZnQ7XG4gICAgICBjb25zdCB0b3AgPSByZXN1bHQuY2xpZW50WSAtIGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VUb3A7XG5cbiAgICAgIGlmICh0aGlzLmRyYWdCb3VuZGFyeSgpICYmIHRoaXMuZHJhZ0JvdW5kYXJ5QWNjZXB0TW91c2VMZWF2ZUNvbnRhaW5lcigpKSB7XG4gICAgICAgIGlmIChjbGllbnRYIDwgcmVzdWx0LnZpZXdwb3J0LmxlZnQpIHtcbiAgICAgICAgICBtb3VzZVBvc2l0aW9uLmNsaWVudFggPSByZXN1bHQudmlld3BvcnQubGVmdDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2xpZW50WCA+IHJlc3VsdC52aWV3cG9ydC53aWR0aCkge1xuICAgICAgICAgIG1vdXNlUG9zaXRpb24uY2xpZW50WCA9IHJlc3VsdC52aWV3cG9ydC53aWR0aDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2xpZW50WSA8IHJlc3VsdC52aWV3cG9ydC50b3ApIHtcbiAgICAgICAgICBtb3VzZVBvc2l0aW9uLmNsaWVudFkgPSByZXN1bHQudmlld3BvcnQudG9wO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjbGllbnRZID4gcmVzdWx0LnZpZXdwb3J0LmhlaWdodCkge1xuICAgICAgICAgIG1vdXNlUG9zaXRpb24uY2xpZW50WSA9IHJlc3VsdC52aWV3cG9ydC5oZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG5vZGVDbG9uZS5zdHlsZS5sZWZ0ID0gYCR7bGVmdH1weGA7XG4gICAgICBub2RlQ2xvbmUuc3R5bGUudG9wID0gYCR7dG9wfXB4YDtcblxuICAgICAgY29uc3QgZXZlbnREcmFnZ2luZyA9IHsgbW91c2VQb3NpdGlvbiwgZWxlbWVudERyYWc6IG5vZGVDbG9uZSwgZWxlbWVudEtlZXBDb250YWluZXIsIGl0ZW1EcmFnSW5mbzogdGhpcy5kcmFnRHJvcFNlcnZpY2UuSXRlbURyYWdJbmZvIH07XG5cbiAgICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLk9uRHJhZ2dpbmcubmV4dChldmVudERyYWdnaW5nKTtcbiAgICB9KTtcbiAgfVxufSJdfQ==
|
package/esm2022/index.mjs
CHANGED
|
@@ -3,4 +3,5 @@ export * from './drag-item.directive';
|
|
|
3
3
|
export * from './drag-scroll.directive';
|
|
4
4
|
export * from './interfaces/event.interface';
|
|
5
5
|
export * from './drag-item-in-container-virtual-scroll.directive';
|
|
6
|
-
|
|
6
|
+
export * from './demo/demo.component';
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvZHJhZy1kcm9wL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZHJhZy1kcm9wLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2RyYWctaXRlbS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9kcmFnLXNjcm9sbC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzL2V2ZW50LmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2RyYWctaXRlbS1pbi1jb250YWluZXItdmlydHVhbC1zY3JvbGwuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZGVtby9kZW1vLmNvbXBvbmVudCc7Il19
|